diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000000..ab2cebb1fb --- /dev/null +++ b/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + "@babel/preset-env", + "@babel/preset-react" + ], + "plugins": [ + "react-hot-loader/babel", + "@babel/plugin-proposal-object-rest-spread", + "@babel/plugin-proposal-class-properties" + ] +} diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000000..ec22a3df81 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,76 @@ +version: 2 +jobs: + build: + branches: + ignore: gh-pages + + docker: + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + - image: circleci/openjdk:11-jdk-node-browsers + + working_directory: ~/repo + + environment: + NO_GPU: true + + steps: + - checkout + + - restore_cache: + keys: + - v1-dependencies-{{ checksum "build.gradle.kts" }} + - v1-dependencies- + + - run: + name: Prefetch Dependencies + command: | + ./gradlew model + + - save_cache: + paths: + - ~/.gradle + key: v1-dependencies-{{ checksum "build.gradle.kts" }} + + - run: + name: Build + command: | + ./gradlew build dokka -x jsBrowserTest --stacktrace + + - add_ssh_keys: + fingerprints: + - "e6:55:46:24:0b:66:40:62:f9:72:10:00:de:41:37:e6" + + - store_test_results: + path: build/reports/tests + + - store_artifacts: + path: build/processedResources/js/main + + - store_artifacts: + path: build/reports + + - run: + name: Deploy to gh-pages + command: | + if [ "${CIRCLE_BRANCH}" == "main" ]; then + mkdir -p build/gh-pages/.circleci + cp .circleci/gh-pages-config.yml build/gh-pages/.circleci/config.yml + + cp -r build/distributions/* build/gh-pages + + mkdir -p build/gh-pages/doc + cp -r build/javadoc/* build/gh-pages/doc/. + + # don't ignore files starting with _ + touch build/gh-pages/.nojekyll + + date > build/gh-pages/BUILT.txt + + git config --global user.email "ci-build@baaahs.org" + git config --global user.name "CI Builder" + + mkdir -p deploy/node_modules + npm install --prefix deploy --silent gh-pages@3.0 + `npm bin --prefix deploy`/gh-pages --dotfiles --message "Auto deploy" --dist build/gh-pages + fi diff --git a/.circleci/gh-pages-config.yml b/.circleci/gh-pages-config.yml new file mode 100644 index 0000000000..953610ce93 --- /dev/null +++ b/.circleci/gh-pages-config.yml @@ -0,0 +1,5 @@ +version: 2 +jobs: + build: + branches: + ignore: gh-pages # prevent gh-pages from triggering circleci diff --git a/.gitignore b/.gitignore index 84610780c0..68ed9317f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ build .idea +.gradle +node_modules +.DS_Store diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..fbb225d5b0 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,17 @@ +{ + "arrowParens": "always", + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "parser": "babel", + "printWidth": 80, + "proseWrap": "preserve", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false, +} diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..e5b6768baf --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,306 @@ +cmake_minimum_required(VERSION 3.14) +project(sparklemotion) + +set(CMAKE_CXX_STANDARD 14) + +include_directories(brain/sw/components/brain-ui) +include_directories(brain/sw/components/brain-ui/include) +include_directories(brain/sw/components/led-renderer/include) +include_directories(brain/sw/components/led-renderer/neopixel) +include_directories(brain/sw/components/led-renderer/neopixel/internal) +include_directories(brain/sw/components/net/include) +include_directories(brain/sw/components/shaders) +include_directories(brain/sw/components/shaders/include) +include_directories(brain/sw/components/sysmon/include) +include_directories(brain/sw/playa/build/bootloader/config) +include_directories(brain/sw/playa/build/config) +include_directories(brain/sw/playa/build/esp-idf) +include_directories(brain/sw/playa/build/esp-idf/mbedtls) +include_directories(brain/sw/playa/build/esp-idf/mbedtls/mbedtls) +include_directories(brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include) +include_directories(brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls) +include_directories(brain/sw/playa/cmake-build-debug/config) +include_directories(brain/sw/playa/cmake-build-debug/esp-idf) +include_directories(brain/sw/playa/cmake-build-debug/esp-idf/mbedtls) +include_directories(brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls) +include_directories(brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include) +include_directories(brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls) +include_directories(brain/sw/playa/main) +include_directories(brain/sw/playa/main/httpd) + +add_executable(sparklemotion + brain/sw/components/brain-ui/include/brain-button.h + brain/sw/components/brain-ui/include/brain-led.h + brain/sw/components/brain-ui/include/brain-ui.h + brain/sw/components/brain-ui/brain-button.cpp + brain/sw/components/brain-ui/brain-led.cpp + brain/sw/components/brain-ui/brain-ui-priv.h + brain/sw/components/brain-ui/brain-ui.cpp + brain/sw/components/led-renderer/include/Arduino.h + brain/sw/components/led-renderer/include/esp32-hal-gpio.h + brain/sw/components/led-renderer/include/esp32-hal.h + brain/sw/components/led-renderer/include/led-renderer.h + brain/sw/components/led-renderer/include/led-renderer_private.h + brain/sw/components/led-renderer/include/led-shader.h + brain/sw/components/led-renderer/include/pgmspace.h + brain/sw/components/led-renderer/include/SPI.h + brain/sw/components/led-renderer/include/time-base.h + brain/sw/components/led-renderer/neopixel/internal/DotStarAvrMethod.h + brain/sw/components/led-renderer/neopixel/internal/DotStarColorFeatures.h + brain/sw/components/led-renderer/neopixel/internal/DotStarGenericMethod.h + brain/sw/components/led-renderer/neopixel/internal/DotStarSpiMethod.h + brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.c + brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.h + brain/sw/components/led-renderer/neopixel/internal/HsbColor.cpp + brain/sw/components/led-renderer/neopixel/internal/HsbColor.h + brain/sw/components/led-renderer/neopixel/internal/HslColor.cpp + brain/sw/components/led-renderer/neopixel/internal/HslColor.h + brain/sw/components/led-renderer/neopixel/internal/HtmlColor.cpp + brain/sw/components/led-renderer/neopixel/internal/HtmlColor.h + brain/sw/components/led-renderer/neopixel/internal/HtmlColorNames.cpp + brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.cpp + brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.h + brain/sw/components/led-renderer/neopixel/internal/HtmlColorShortNames.cpp + brain/sw/components/led-renderer/neopixel/internal/Layouts.h + brain/sw/components/led-renderer/neopixel/internal/NeoArmMethod.h + brain/sw/components/led-renderer/neopixel/internal/NeoAvrMethod.h + brain/sw/components/led-renderer/neopixel/internal/NeoBitmapFile.h + brain/sw/components/led-renderer/neopixel/internal/NeoBuffer.h + brain/sw/components/led-renderer/neopixel/internal/NeoBufferContext.h + brain/sw/components/led-renderer/neopixel/internal/NeoBufferMethods.h + brain/sw/components/led-renderer/neopixel/internal/NeoColorFeatures.h + brain/sw/components/led-renderer/neopixel/internal/NeoDib.h + brain/sw/components/led-renderer/neopixel/internal/NeoEase.h + brain/sw/components/led-renderer/neopixel/internal/NeoEsp32I2sMethod.h + brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266DmaMethod.h + brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.cpp + brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.h + brain/sw/components/led-renderer/neopixel/internal/NeoEspBitBangMethod.h + brain/sw/components/led-renderer/neopixel/internal/NeoGamma.cpp + brain/sw/components/led-renderer/neopixel/internal/NeoGamma.h + brain/sw/components/led-renderer/neopixel/internal/NeoHueBlend.h + brain/sw/components/led-renderer/neopixel/internal/NeoMosaic.h + brain/sw/components/led-renderer/neopixel/internal/NeoPixelAnimator.cpp + brain/sw/components/led-renderer/neopixel/internal/NeoPixelAvr.c + brain/sw/components/led-renderer/neopixel/internal/NeoPixelEsp.c + brain/sw/components/led-renderer/neopixel/internal/NeoRingTopology.h + brain/sw/components/led-renderer/neopixel/internal/NeoSpriteSheet.h + brain/sw/components/led-renderer/neopixel/internal/NeoTiles.h + brain/sw/components/led-renderer/neopixel/internal/NeoTopology.h + brain/sw/components/led-renderer/neopixel/internal/RgbColor.cpp + brain/sw/components/led-renderer/neopixel/internal/RgbColor.h + brain/sw/components/led-renderer/neopixel/internal/RgbwColor.cpp + brain/sw/components/led-renderer/neopixel/internal/RgbwColor.h + brain/sw/components/led-renderer/neopixel/NeoPixelAnimator.h + brain/sw/components/led-renderer/neopixel/NeoPixelBrightnessBus.h + brain/sw/components/led-renderer/neopixel/NeoPixelBus.h + brain/sw/components/led-renderer/esp32-hal-gpio.c + brain/sw/components/led-renderer/esp32-hal.c + brain/sw/components/led-renderer/led-renderer.cpp + brain/sw/components/net/include/ethernet.h + brain/sw/components/net/include/ip_port.h + brain/sw/components/net/include/msg.h + brain/sw/components/net/include/msg_handler.h + brain/sw/components/net/include/msg_slinger.h + brain/sw/components/net/include/net_priv.h + brain/sw/components/net/include/task_net.h + brain/sw/components/net/include/wifi.h + brain/sw/components/net/ethernet.cpp + brain/sw/components/net/ip_port.cpp + brain/sw/components/net/msg.cpp + brain/sw/components/net/msg_handler.cpp + brain/sw/components/net/msg_slinger.cpp + brain/sw/components/net/task_net.cpp + brain/sw/components/net/wifi.cpp + brain/sw/components/shaders/include/shade-tree.h + brain/sw/components/shaders/include/shader-desc.h + brain/sw/components/shaders/include/shader.h + brain/sw/components/shaders/compositor-shader.cpp + brain/sw/components/shaders/compositor-shader.h + brain/sw/components/shaders/default-shader.cpp + brain/sw/components/shaders/default-shader.h + brain/sw/components/shaders/pixel-shader.cpp + brain/sw/components/shaders/pixel-shader.h + brain/sw/components/shaders/rainbow-shader.cpp + brain/sw/components/shaders/rainbow-shader.h + brain/sw/components/shaders/shade-tree.cpp + brain/sw/components/shaders/shader.cpp + brain/sw/components/shaders/sine-wave-shader.cpp + brain/sw/components/shaders/sine-wave-shader.h + brain/sw/components/shaders/solid-shader.cpp + brain/sw/components/shaders/solid-shader.h + brain/sw/components/shaders/sparkle-shader.cpp + brain/sw/components/shaders/sparkle-shader.h + brain/sw/components/sysmon/include/sysmon.h + brain/sw/components/sysmon/sysmon.cpp + brain/sw/playa/build/bootloader/config/sdkconfig.h + brain/sw/playa/build/bootloader/project_elf_src.c + brain/sw/playa/build/config/sdkconfig.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/aes.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/aesni.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/arc4.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/aria.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/asn1.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/asn1write.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/base64.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/bignum.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/blowfish.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/bn_mul.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/camellia.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ccm.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/certs.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/chacha20.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/chachapoly.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/check_config.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/cipher.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/cipher_internal.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/cmac.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/compat-1.3.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/config.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ctr_drbg.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/debug.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/des.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/dhm.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ecdh.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ecdsa.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ecjpake.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ecp.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ecp_internal.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/entropy.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/entropy_poll.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/error.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/gcm.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/havege.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/hkdf.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/hmac_drbg.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/md.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/md2.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/md4.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/md5.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/md_internal.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/memory_buffer_alloc.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/net.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/net_sockets.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/nist_kw.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/oid.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/padlock.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/pem.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/pk.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/pk_internal.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/pkcs11.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/pkcs12.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/pkcs5.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/platform.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/platform_time.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/platform_util.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/poly1305.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ripemd160.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/rsa.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/rsa_internal.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/sha1.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/sha256.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/sha512.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_cache.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_ciphersuites.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_cookie.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_internal.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_ticket.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/threading.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/timing.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/version.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/x509.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/x509_crl.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/x509_crt.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/x509_csr.h + brain/sw/playa/build/esp-idf/mbedtls/mbedtls/include/mbedtls/xtea.h + brain/sw/playa/build/project_elf_src.c + brain/sw/playa/cmake-build-debug/config/sdkconfig.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/aes.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/aesni.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/arc4.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/aria.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/asn1.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/asn1write.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/base64.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/bignum.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/blowfish.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/bn_mul.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/camellia.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ccm.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/certs.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/chacha20.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/chachapoly.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/check_config.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/cipher.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/cipher_internal.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/cmac.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/compat-1.3.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/config.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ctr_drbg.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/debug.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/des.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/dhm.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ecdh.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ecdsa.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ecjpake.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ecp.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ecp_internal.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/entropy.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/entropy_poll.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/error.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/gcm.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/havege.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/hkdf.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/hmac_drbg.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/md.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/md2.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/md4.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/md5.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/md_internal.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/memory_buffer_alloc.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/net.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/net_sockets.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/nist_kw.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/oid.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/padlock.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/pem.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/pk.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/pk_internal.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/pkcs11.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/pkcs12.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/pkcs5.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/platform.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/platform_time.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/platform_util.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/poly1305.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ripemd160.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/rsa.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/rsa_internal.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/sha1.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/sha256.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/sha512.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_cache.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_ciphersuites.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_cookie.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_internal.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/ssl_ticket.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/threading.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/timing.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/version.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/x509.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/x509_crl.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/x509_crt.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/x509_csr.h + brain/sw/playa/cmake-build-debug/esp-idf/mbedtls/mbedtls/include/mbedtls/xtea.h + brain/sw/playa/cmake-build-debug/project_elf_src.c + brain/sw/playa/main/httpd/http_server.cpp + brain/sw/playa/main/httpd/http_server.h + brain/sw/playa/main/httpd/spiffs_handler.cpp + brain/sw/playa/main/httpd/spiffs_handler.h + brain/sw/playa/main/httpd/task_httpd.cpp + brain/sw/playa/main/httpd/task_httpd.h + brain/sw/playa/main/brain.cpp + brain/sw/playa/main/brain.h + brain/sw/playa/main/main.cpp) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..b96ebe57be --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,91 @@ +# BAAAHS Code of Conduct + +## 1. Purpose + +A primary goal of BAAAHS (Big-Ass Amazingly Awesome Homosexual Sheep) is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of age, gender, sexual orientation, sexual position (top, bottom, versatile), ability, ethnicity, socioeconomic status, technical ability, fashion-sense, and religion (or lack thereof). + +This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. + +We invite all those who participate in BAAAHS to help us create safe and positive experiences for everyone. + +## 2. Open Culture Citizenship + +A supplemental goal of this Code of Conduct is to increase open culture citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. + +Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. + +If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. + +## 3. Expected Behavior + +The following behaviors are expected and requested of all community members: + + * Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. + * Exercise consideration and respect in your speech and actions. + * Attempt collaboration before conflict. + * Refrain from demeaning, discriminatory, or harassing behavior and speech. + * Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. + * Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. + +## 4. Unacceptable Behavior + +The following behaviors are considered harassment and are unacceptable within our community: + + * Violence, threats of violence or violent language directed against another person. + * Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. + * Posting or displaying violent material. + * Posting or threatening to post other people's personally identifying information ("doxing"). + * Personal insults, particularly those related to gender, sexual orientation, sexual position, race, religion, or disability. + * Inappropriate photography or recording. + * Inappropriate physical contact. You should have someone's consent before touching them. + * Unwelcome sexual attention. This includes, inappropriate touching, groping, and unwelcomed sexual advances without consent. + * Deliberate intimidation, stalking or following (online or in person). + * Advocating for, or encouraging, any of the above behavior. + * Sustained disruption of community events, including talks, presentations, and parties. + +## 5. Weapons Policy + +No weapons will be allowed at BAAAHS events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives, and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter. + +## 6. Consequences of Unacceptable Behavior + +Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. + +Anyone asked to stop unacceptable behavior is expected to comply immediately. + +If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). + +## 7. Reporting Guidelines + +If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. Use our email: info@baaahs.org + +Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. + +## 8. Addressing Grievances + +If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify info@baaahs.org with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. + + +## 9. Scope + +We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business. + +This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. + +## 10. Contact info + +info@baaahs.org + +## 11. License and attribution + +The BAAAHS Code of Conduct is a fork of the Citizen Code of Conduct. The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). + +Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). + +_Revision 2.3. Posted 6 March 2017._ + +_Revision 2.2. Posted 4 February 2016._ + +_Revision 2.1. Posted 23 June 2014._ + +_Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..330b2633ee --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2013-2019 BAAAHS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 3a0a245c1d..e4cc806095 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,111 @@ -# BAAAHS Simulator 2 +# Sparkle Motion + +[![CircleCI:main](https://circleci.com/gh/baaahs/sparklemotion.svg?style=svg)](https://circleci.com/gh/baaahs/sparklemotion) + +Sparkle Motion is the system used to control the lights on [BAAAHS](http://baaahs.org), but it's +designed so it could be applied to pretty much any lighting project. It includes a browser-based +light show designer and performance interface, 3D light mapping, IP-based control protocol, and +custom LED control hardware and firmware. We designed it all pretty much from scratch, because +we're nerds. We hope you'll have some fun with it and maybe find it useful. + +| | | +| --- | --- | +| Simulator image
The Sparkle Motion [Simulator](https://baaahs.github.io/sparklemotion) | BAAAHS at BRC 2019
BAAAHS at Black Rock City, 2019| + + +> **tl;dr:** +> +> Shows are built out of small scripts called shaders, which are written in +> [GLSL](https://www.khronos.org/opengl/wiki/Core_Language_(GLSL)). Lots of [awesome](http://glslsandbox.com/) +> [free](https://www.shadertoy.com/) shaders and [dev](https://github.com/radixzz/awesome-glsl) +> [tools](https://shaderfrog.com/) already exist on the internet. In the show designer, you can create or +> import shaders, and attach them to buttons or sliders in a customizable performance UI. Shaders can be +> combined in interesting ways to create new effects. You can make shows reactive to the environment by +> connecting external sensor data—like a beat detector, midi controller, sound spectral analysis, or a +> webcam—to shader variables. +> +> Sparkle Motion can currently control LED strips using a custom IP protocol, and Sharpy-style moving heads +> over DMX, but it could be extended to control pretty much any kind of device. Lights can be mapped to a +> 3D model using computer vision. Individual lighting fixtures, or groups of fixtures, can be controlled +> separately. All types of lights are controlled using the same language and idioms. +> +> On the hardware side, Sparkle Motion includes specs for an ESP32-based controller which you could build +> (or [buy from us](mailto:info@baaahs.org)!) managing WS2812-family LEDs, which is controlled over +> Ethernet or WiFi. + +---- + +## Show Designer + +A _show_ is a collection of shaders, attached to UI elements, which can be arbitrarily combined and made reactive to the +environment using sensors, + +(more TK) + +## Mapper + +Sparkle Morton's mapper lets you detect arbitrarily-placed lights on a 2D or 3D model using just a camera +connected to a laptop. + +(more TK) + +## Hardware + +(more TK) + +[More here](brain/sw/README.md). + +## Simulator + +The entire system can be run within a web browser in simulation mode. Every component is modeled in software +so you can see how it will behave in the real world. + + +--> + +## Old Documentation +* [Show API](show_api.md) (outdated) +* [API docs](https://baaahs.github.io/sparklemotion/doc/sparklemotion/) (outdated) + +## Prerequisites + +1. Install [Java](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) +1. Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/) ## Running from source -* Open as a gradle project with [IntelliJ](https://www.jetbrains.com/idea/download/) -* Open `src/jsMain/resources/index.html` using "Open in Browser -> Chrome" from IntelliJ context menu \ No newline at end of file +### Simulator Mode + +In simulator mode, most of Sparkle Motion runs within a web browser. + +Run this in a shell window; a browser window will open with the simulator: + + ./gradlew --continuous jsRun + +### Production Mode + +In production mode, Sparkle Motion runs in a JVM process and talks to real hardware. + +To start it, run: + + ./gradlew runPinkyJvm + +If you don't have a Brain running locally, do this too: + + ./gradlew runBrainJvm + +When running in this mode you should be able to access the UI at http://localhost:8004 + +### Builds the production (minified) js package + +To build the production minified js package run: + +``` +./gradlew jsBrowserWebpack +``` + +## CI & Deployment + +Continuous build here: https://circleci.com/gh/baaahs/sparklemotion + +Passing builds are automatically deployed here: https://baaahs.github.io/sparklemotion diff --git a/brain/hw/BAAAHS-BRN01-A/Brain1port.brd b/brain/hw/BAAAHS-BRN01-A/Brain1port.brd new file mode 100644 index 0000000000..4ff8af067f --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-A/Brain1port.brd @@ -0,0 +1,4036 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Resistors, Capacitors, Inductors</b><p> +Based on the previous libraries: +<ul> +<li>r.lbr +<li>cap.lbr +<li>cap-fe.lbr +<li>captant.lbr +<li>polcap.lbr +<li>ipc-smd.lbr +</ul> +All SMD packages are defined according to the IPC specifications and CECC<p> +<author>Created by librarian@cadsoft.de</author><p> +<p> +for Electrolyt Capacitors see also :<p> +www.bccomponents.com <p> +www.panasonic.com<p> +www.kemet.com<p> +http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b> +<p> +for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> + +<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0> +<tr valign="top"> + +<! <td width="10">&nbsp;</td> +<td width="90%"> + +<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> +<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> + <TR> + <TD COLSPAN=8> + <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> + </B> + </TD><TD>&nbsp;</TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > + 3005P<BR> + 3006P<BR> + 3006W<BR> + 3006Y<BR> + 3009P<BR> + 3009W<BR> + 3009Y<BR> + 3057J<BR> + 3057L<BR> + 3057P<BR> + 3057Y<BR> + 3059J<BR> + 3059L<BR> + 3059P<BR> + 3059Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 89P<BR> + 89W<BR> + 89X<BR> + 89PH<BR> + 76P<BR> + 89XH<BR> + 78SLT<BR> + 78L&nbsp;ALT<BR> + 56P&nbsp;ALT<BR> + 78P&nbsp;ALT<BR> + T8S<BR> + 78L<BR> + 56P<BR> + 78P<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + T18/784<BR> + 783<BR> + 781<BR> + -<BR> + -<BR> + -<BR> + 2199<BR> + 1697/1897<BR> + 1680/1880<BR> + 2187<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 8035EKP/CT20/RJ-20P<BR> + -<BR> + RJ-20X<BR> + -<BR> + -<BR> + -<BR> + 1211L<BR> + 8012EKQ&nbsp;ALT<BR> + 8012EKR&nbsp;ALT<BR> + 1211P<BR> + 8012EKJ<BR> + 8012EKL<BR> + 8012EKQ<BR> + 8012EKR<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 2101P<BR> + 2101W<BR> + 2101Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 2102L<BR> + 2102S<BR> + 2102Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVMCOG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 43P<BR> + 43W<BR> + 43Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 40L<BR> + 40P<BR> + 40Y<BR> + 70Y-T602<BR> + 70L<BR> + 70P<BR> + 70Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + RT/RTR12<BR> + RT/RTR12<BR> + RT/RTR12<BR> + -<BR> + RJ/RJR12<BR> + RJ/RJR12<BR> + RJ/RJR12<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3250L<BR> + 3250P<BR> + 3250W<BR> + 3250X<BR> + 3252P<BR> + 3252W<BR> + 3252X<BR> + 3260P<BR> + 3260W<BR> + 3260X<BR> + 3262P<BR> + 3262W<BR> + 3262X<BR> + 3266P<BR> + 3266W<BR> + 3266X<BR> + 3290H<BR> + 3290P<BR> + 3290W<BR> + 3292P<BR> + 3292W<BR> + 3292X<BR> + 3296P<BR> + 3296W<BR> + 3296X<BR> + 3296Y<BR> + 3296Z<BR> + 3299P<BR> + 3299W<BR> + 3299X<BR> + 3299Y<BR> + 3299Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + -<BR> + 64W&nbsp;ALT<BR> + -<BR> + 64P&nbsp;ALT<BR> + 64W&nbsp;ALT<BR> + 64X&nbsp;ALT<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66P<BR> + 66W<BR> + 66X<BR> + 67P<BR> + 67W<BR> + 67X<BR> + 67Y<BR> + 67Z<BR> + 68P<BR> + 68W<BR> + 68X<BR> + 67Y&nbsp;ALT<BR> + 67Z&nbsp;ALT<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 5050<BR> + 5091<BR> + 5080<BR> + 5087<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + T63YB<BR> + T63XB<BR> + -<BR> + -<BR> + -<BR> + 5887<BR> + 5891<BR> + 5880<BR> + -<BR> + -<BR> + -<BR> + T93Z<BR> + T93YA<BR> + T93XA<BR> + T93YB<BR> + T93XB<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 8026EKP<BR> + 8026EKW<BR> + 8026EKM<BR> + 8026EKP<BR> + 8026EKB<BR> + 8026EKM<BR> + 1309X<BR> + 1309P<BR> + 1309W<BR> + 8024EKP<BR> + 8024EKW<BR> + 8024EKN<BR> + RJ-9P/CT9P<BR> + RJ-9W<BR> + RJ-9X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3105P/3106P<BR> + 3105W/3106W<BR> + 3105X/3106X<BR> + 3105Y/3106Y<BR> + 3105Z/3105Z<BR> + 3102P<BR> + 3102W<BR> + 3102X<BR> + 3102Y<BR> + 3102Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMCBG<BR> + EVMCCG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 55-1-X<BR> + 55-4-X<BR> + 55-3-X<BR> + 55-2-X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 50-2-X<BR> + 50-4-X<BR> + 50-3-X<BR> + -<BR> + -<BR> + -<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 64Y<BR> + 64Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3323P<BR> + 3323S<BR> + 3323W<BR> + 3329H<BR> + 3329P<BR> + 3329W<BR> + 3339H<BR> + 3339P<BR> + 3339W<BR> + 3352E<BR> + 3352H<BR> + 3352K<BR> + 3352P<BR> + 3352T<BR> + 3352V<BR> + 3352W<BR> + 3362H<BR> + 3362M<BR> + 3362P<BR> + 3362R<BR> + 3362S<BR> + 3362U<BR> + 3362W<BR> + 3362X<BR> + 3386B<BR> + 3386C<BR> + 3386F<BR> + 3386H<BR> + 3386K<BR> + 3386M<BR> + 3386P<BR> + 3386S<BR> + 3386W<BR> + 3386X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 25P<BR> + 25S<BR> + 25RX<BR> + 82P<BR> + 82M<BR> + 82PA<BR> + -<BR> + -<BR> + -<BR> + 91E<BR> + 91X<BR> + 91T<BR> + 91B<BR> + 91A<BR> + 91V<BR> + 91W<BR> + 25W<BR> + 25V<BR> + 25P<BR> + -<BR> + 25S<BR> + 25U<BR> + 25RX<BR> + 25X<BR> + 72XW<BR> + 72XL<BR> + 72PM<BR> + 72RX<BR> + -<BR> + 72PX<BR> + 72P<BR> + 72RXW<BR> + 72RXL<BR> + 72X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + T7YB<BR> + T7YA<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + TXD<BR> + TYA<BR> + TYP<BR> + -<BR> + TYD<BR> + TX<BR> + -<BR> + 150SX<BR> + 100SX<BR> + 102T<BR> + 101S<BR> + 190T<BR> + 150TX<BR> + 101<BR> + -<BR> + -<BR> + 101SX<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ET6P<BR> + ET6S<BR> + ET6X<BR> + RJ-6W/8014EMW<BR> + RJ-6P/8014EMP<BR> + RJ-6X/8014EMX<BR> + TM7W<BR> + TM7P<BR> + TM7X<BR> + -<BR> + 8017SMS<BR> + -<BR> + 8017SMB<BR> + 8017SMA<BR> + -<BR> + -<BR> + CT-6W<BR> + CT-6H<BR> + CT-6P<BR> + CT-6R<BR> + -<BR> + CT-6V<BR> + CT-6X<BR> + -<BR> + -<BR> + 8038EKV<BR> + -<BR> + 8038EKX<BR> + -<BR> + -<BR> + 8038EKP<BR> + 8038EKZ<BR> + 8038EKW<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 3321H<BR> + 3321P<BR> + 3321N<BR> + 1102H<BR> + 1102P<BR> + 1102T<BR> + RVA0911V304A<BR> + -<BR> + RVA0911H413A<BR> + RVG0707V100A<BR> + RVA0607V(H)306A<BR> + RVA1214H213A<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3104B<BR> + 3104C<BR> + 3104F<BR> + 3104H<BR> + -<BR> + 3104M<BR> + 3104P<BR> + 3104S<BR> + 3104W<BR> + 3104X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + EVMQ0G<BR> + EVMQIG<BR> + EVMQ3G<BR> + EVMS0G<BR> + EVMQ0G<BR> + EVMG0G<BR> + -<BR> + -<BR> + -<BR> + EVMK4GA00B<BR> + EVM30GA00B<BR> + EVMK0GA00B<BR> + EVM38GA00B<BR> + EVMB6<BR> + EVLQ0<BR> + -<BR> + EVMMSG<BR> + EVMMBG<BR> + EVMMAG<BR> + -<BR> + -<BR> + EVMMCS<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMM1<BR> + -<BR> + -<BR> + EVMM0<BR> + -<BR> + -<BR> + EVMM3<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 62-3-1<BR> + 62-1-2<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67R<BR> + -<BR> + 67P<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67X<BR> + 63V<BR> + 63S<BR> + 63M<BR> + -<BR> + -<BR> + 63H<BR> + 63P<BR> + -<BR> + -<BR> + 63X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P>&nbsp;<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> + <TR> + <TD COLSPAN=7> + <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> + <P> + <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3224G<BR> + 3224J<BR> + 3224W<BR> + 3269P<BR> + 3269W<BR> + 3269X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 44G<BR> + 44J<BR> + 44W<BR> + 84P<BR> + 84W<BR> + 84X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST63Z<BR> + ST63Y<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST5P<BR> + ST5W<BR> + ST5X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=7>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=7> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3314G<BR> + 3314J<BR> + 3364A/B<BR> + 3364C/D<BR> + 3364W/X<BR> + 3313G<BR> + 3313J<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 23B<BR> + 23A<BR> + 21X<BR> + 21W<BR> + -<BR> + 22B<BR> + 22A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST5YL/ST53YL<BR> + ST5YJ/5T53YJ<BR> + ST-23A<BR> + ST-22B<BR> + ST-22<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST-4B<BR> + ST-4A<BR> + -<BR> + -<BR> + -<BR> + ST-3B<BR> + ST-3A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVM-6YS<BR> + EVM-1E<BR> + EVM-1G<BR> + EVM-1D<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + G4B<BR> + G4A<BR> + TR04-3S1<BR> + TRG04-2S1<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + DVR-43A<BR> + CVR-42C<BR> + CVR-42A/C<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P> +<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> +<P> + +&nbsp; +<P> +</td> +</tr> +</table> + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>Zetex Power MOS FETs, Bridges, Diodes</b><p> +http://www.zetex.com<p> +<author>Created by librarian@cadsoft.de</author> + + +<b>Small Outline Diode</b> + + + + + + +>NAME +>VALUE + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +V+ +GND +DATA +>NAME + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + +>NAME + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PCB END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +<b>Transistors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +TO-236 ITT Intermetall + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + + diff --git a/brain/hw/BAAAHS-BRN01-A/Brain1port.sch b/brain/hw/BAAAHS-BRN01-A/Brain1port.sch new file mode 100644 index 0000000000..88fc910f8c --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-A/Brain1port.sch @@ -0,0 +1,11059 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Frames for Sheet and Layout</b> + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +Document Number: +>DRAWING_NAME + + + + + + + + + + +<b>FRAME</b><p> +401 x 266 mm, landscape + + + + + + + + + + + + + + + +<b>Supply Symbols</b><p> + GND, VCC, 0V, +5V, -5V, etc.<p> + Please keep in mind, that these devices are necessary for the + automatic wiring of the supply signals.<p> + The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> + In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> + <author>Created by librarian@cadsoft.de</author> + + + + + + +>VALUE + + + + +>VALUE + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + +<b>Resistors, Capacitors, Inductors</b><p> +Based on the previous libraries: +<ul> +<li>r.lbr +<li>cap.lbr +<li>cap-fe.lbr +<li>captant.lbr +<li>polcap.lbr +<li>ipc-smd.lbr +</ul> +All SMD packages are defined according to the IPC specifications and CECC<p> +<author>Created by librarian@cadsoft.de</author><p> +<p> +for Electrolyt Capacitors see also :<p> +www.bccomponents.com <p> +www.panasonic.com<p> +www.kemet.com<p> +http://www.secc.co.jp/pdf/os_e/2004/e_os_all.pdf <b>(SANYO)</b> +<p> +for trimmer refence see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> + +<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0> +<tr valign="top"> + +<! <td width="10">&nbsp;</td> +<td width="90%"> + +<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> +<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> + <TR> + <TD COLSPAN=8> + <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> + </B> + </TD><TD>&nbsp;</TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > + 3005P<BR> + 3006P<BR> + 3006W<BR> + 3006Y<BR> + 3009P<BR> + 3009W<BR> + 3009Y<BR> + 3057J<BR> + 3057L<BR> + 3057P<BR> + 3057Y<BR> + 3059J<BR> + 3059L<BR> + 3059P<BR> + 3059Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 89P<BR> + 89W<BR> + 89X<BR> + 89PH<BR> + 76P<BR> + 89XH<BR> + 78SLT<BR> + 78L&nbsp;ALT<BR> + 56P&nbsp;ALT<BR> + 78P&nbsp;ALT<BR> + T8S<BR> + 78L<BR> + 56P<BR> + 78P<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + T18/784<BR> + 783<BR> + 781<BR> + -<BR> + -<BR> + -<BR> + 2199<BR> + 1697/1897<BR> + 1680/1880<BR> + 2187<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 8035EKP/CT20/RJ-20P<BR> + -<BR> + RJ-20X<BR> + -<BR> + -<BR> + -<BR> + 1211L<BR> + 8012EKQ&nbsp;ALT<BR> + 8012EKR&nbsp;ALT<BR> + 1211P<BR> + 8012EKJ<BR> + 8012EKL<BR> + 8012EKQ<BR> + 8012EKR<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 2101P<BR> + 2101W<BR> + 2101Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 2102L<BR> + 2102S<BR> + 2102Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVMCOG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 43P<BR> + 43W<BR> + 43Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 40L<BR> + 40P<BR> + 40Y<BR> + 70Y-T602<BR> + 70L<BR> + 70P<BR> + 70Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + RT/RTR12<BR> + RT/RTR12<BR> + RT/RTR12<BR> + -<BR> + RJ/RJR12<BR> + RJ/RJR12<BR> + RJ/RJR12<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3250L<BR> + 3250P<BR> + 3250W<BR> + 3250X<BR> + 3252P<BR> + 3252W<BR> + 3252X<BR> + 3260P<BR> + 3260W<BR> + 3260X<BR> + 3262P<BR> + 3262W<BR> + 3262X<BR> + 3266P<BR> + 3266W<BR> + 3266X<BR> + 3290H<BR> + 3290P<BR> + 3290W<BR> + 3292P<BR> + 3292W<BR> + 3292X<BR> + 3296P<BR> + 3296W<BR> + 3296X<BR> + 3296Y<BR> + 3296Z<BR> + 3299P<BR> + 3299W<BR> + 3299X<BR> + 3299Y<BR> + 3299Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + -<BR> + 64W&nbsp;ALT<BR> + -<BR> + 64P&nbsp;ALT<BR> + 64W&nbsp;ALT<BR> + 64X&nbsp;ALT<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66P<BR> + 66W<BR> + 66X<BR> + 67P<BR> + 67W<BR> + 67X<BR> + 67Y<BR> + 67Z<BR> + 68P<BR> + 68W<BR> + 68X<BR> + 67Y&nbsp;ALT<BR> + 67Z&nbsp;ALT<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 5050<BR> + 5091<BR> + 5080<BR> + 5087<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + T63YB<BR> + T63XB<BR> + -<BR> + -<BR> + -<BR> + 5887<BR> + 5891<BR> + 5880<BR> + -<BR> + -<BR> + -<BR> + T93Z<BR> + T93YA<BR> + T93XA<BR> + T93YB<BR> + T93XB<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 8026EKP<BR> + 8026EKW<BR> + 8026EKM<BR> + 8026EKP<BR> + 8026EKB<BR> + 8026EKM<BR> + 1309X<BR> + 1309P<BR> + 1309W<BR> + 8024EKP<BR> + 8024EKW<BR> + 8024EKN<BR> + RJ-9P/CT9P<BR> + RJ-9W<BR> + RJ-9X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3105P/3106P<BR> + 3105W/3106W<BR> + 3105X/3106X<BR> + 3105Y/3106Y<BR> + 3105Z/3105Z<BR> + 3102P<BR> + 3102W<BR> + 3102X<BR> + 3102Y<BR> + 3102Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMCBG<BR> + EVMCCG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 55-1-X<BR> + 55-4-X<BR> + 55-3-X<BR> + 55-2-X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 50-2-X<BR> + 50-4-X<BR> + 50-3-X<BR> + -<BR> + -<BR> + -<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 64Y<BR> + 64Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3323P<BR> + 3323S<BR> + 3323W<BR> + 3329H<BR> + 3329P<BR> + 3329W<BR> + 3339H<BR> + 3339P<BR> + 3339W<BR> + 3352E<BR> + 3352H<BR> + 3352K<BR> + 3352P<BR> + 3352T<BR> + 3352V<BR> + 3352W<BR> + 3362H<BR> + 3362M<BR> + 3362P<BR> + 3362R<BR> + 3362S<BR> + 3362U<BR> + 3362W<BR> + 3362X<BR> + 3386B<BR> + 3386C<BR> + 3386F<BR> + 3386H<BR> + 3386K<BR> + 3386M<BR> + 3386P<BR> + 3386S<BR> + 3386W<BR> + 3386X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 25P<BR> + 25S<BR> + 25RX<BR> + 82P<BR> + 82M<BR> + 82PA<BR> + -<BR> + -<BR> + -<BR> + 91E<BR> + 91X<BR> + 91T<BR> + 91B<BR> + 91A<BR> + 91V<BR> + 91W<BR> + 25W<BR> + 25V<BR> + 25P<BR> + -<BR> + 25S<BR> + 25U<BR> + 25RX<BR> + 25X<BR> + 72XW<BR> + 72XL<BR> + 72PM<BR> + 72RX<BR> + -<BR> + 72PX<BR> + 72P<BR> + 72RXW<BR> + 72RXL<BR> + 72X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + T7YB<BR> + T7YA<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + TXD<BR> + TYA<BR> + TYP<BR> + -<BR> + TYD<BR> + TX<BR> + -<BR> + 150SX<BR> + 100SX<BR> + 102T<BR> + 101S<BR> + 190T<BR> + 150TX<BR> + 101<BR> + -<BR> + -<BR> + 101SX<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ET6P<BR> + ET6S<BR> + ET6X<BR> + RJ-6W/8014EMW<BR> + RJ-6P/8014EMP<BR> + RJ-6X/8014EMX<BR> + TM7W<BR> + TM7P<BR> + TM7X<BR> + -<BR> + 8017SMS<BR> + -<BR> + 8017SMB<BR> + 8017SMA<BR> + -<BR> + -<BR> + CT-6W<BR> + CT-6H<BR> + CT-6P<BR> + CT-6R<BR> + -<BR> + CT-6V<BR> + CT-6X<BR> + -<BR> + -<BR> + 8038EKV<BR> + -<BR> + 8038EKX<BR> + -<BR> + -<BR> + 8038EKP<BR> + 8038EKZ<BR> + 8038EKW<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 3321H<BR> + 3321P<BR> + 3321N<BR> + 1102H<BR> + 1102P<BR> + 1102T<BR> + RVA0911V304A<BR> + -<BR> + RVA0911H413A<BR> + RVG0707V100A<BR> + RVA0607V(H)306A<BR> + RVA1214H213A<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3104B<BR> + 3104C<BR> + 3104F<BR> + 3104H<BR> + -<BR> + 3104M<BR> + 3104P<BR> + 3104S<BR> + 3104W<BR> + 3104X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + EVMQ0G<BR> + EVMQIG<BR> + EVMQ3G<BR> + EVMS0G<BR> + EVMQ0G<BR> + EVMG0G<BR> + -<BR> + -<BR> + -<BR> + EVMK4GA00B<BR> + EVM30GA00B<BR> + EVMK0GA00B<BR> + EVM38GA00B<BR> + EVMB6<BR> + EVLQ0<BR> + -<BR> + EVMMSG<BR> + EVMMBG<BR> + EVMMAG<BR> + -<BR> + -<BR> + EVMMCS<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMM1<BR> + -<BR> + -<BR> + EVMM0<BR> + -<BR> + -<BR> + EVMM3<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 62-3-1<BR> + 62-1-2<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67R<BR> + -<BR> + 67P<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67X<BR> + 63V<BR> + 63S<BR> + 63M<BR> + -<BR> + -<BR> + 63H<BR> + 63P<BR> + -<BR> + -<BR> + 63X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P>&nbsp;<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> + <TR> + <TD COLSPAN=7> + <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> + <P> + <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3224G<BR> + 3224J<BR> + 3224W<BR> + 3269P<BR> + 3269W<BR> + 3269X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 44G<BR> + 44J<BR> + 44W<BR> + 84P<BR> + 84W<BR> + 84X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST63Z<BR> + ST63Y<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST5P<BR> + ST5W<BR> + ST5X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=7>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=7> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3314G<BR> + 3314J<BR> + 3364A/B<BR> + 3364C/D<BR> + 3364W/X<BR> + 3313G<BR> + 3313J<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 23B<BR> + 23A<BR> + 21X<BR> + 21W<BR> + -<BR> + 22B<BR> + 22A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST5YL/ST53YL<BR> + ST5YJ/5T53YJ<BR> + ST-23A<BR> + ST-22B<BR> + ST-22<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST-4B<BR> + ST-4A<BR> + -<BR> + -<BR> + -<BR> + ST-3B<BR> + ST-3A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVM-6YS<BR> + EVM-1E<BR> + EVM-1G<BR> + EVM-1D<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + G4B<BR> + G4A<BR> + TR04-3S1<BR> + TRG04-2S1<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + DVR-43A<BR> + CVR-42C<BR> + CVR-42A/C<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P> +<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> +<P> + +&nbsp; +<P> +</td> +</tr> +</table> + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> wave soldering<p> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +wave soldering + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b> wave soldering<p> +Source: http://download.siliconexpert.com/pdfs/2005/02/24/Semi_Ap/2/VSH/Resistor/dcrcwfre.pdf + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.10 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.12 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.10 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.12 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +MELF 0.25 W + + + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +type 0204, grid 5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0204, grid 7.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0204, grid 2.5 mm + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0207, grid 10 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0207, grid 12 mm + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>RESISTOR</b><p> +type 0207, grid 15mm + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>RESISTOR</b><p> +type 0207, grid 2.5 mm + + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0207, grid 5 mm + + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0207, grid 7.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0309, grid 10mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0309, grid 12.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0309, grid 2.5 mm + + + + + + +>NAME +>VALUE + + + + + +<b>RESISTOR</b><p> +type 0411, grid 12.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0411, grid 15 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0411, grid 3.81 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0414, grid 15 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0414, grid 5 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0617, grid 17.5 mm + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0617, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0617, grid 5 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0922, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>RESISTOR</b><p> +type 0613, grid 5 mm + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +type 0613, grid 15 mm + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type 0817, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +0817 + + + + +<b>RESISTOR</b><p> +type 0817, grid 6.35 mm + + + + + + +>NAME +>VALUE +0817 + + + +<b>RESISTOR</b><p> +type V234, grid 12.5 mm + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type V235, grid 17.78 mm + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>RESISTOR</b><p> +type V526-0, grid 2.5 mm + + + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC2211</b> Reflow Soldering<p> +source Beyschlag + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC2211</b> Wave Soldering<p> +source Beyschlag + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC3715</b> Reflow Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC3715</b> Wave Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC6123</b> Reflow Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>CECC Size RC6123</b> Wave Soldering<p> +source Beyschlag + + + + + + + + +>NAME +>VALUE + + +<b>RESISTOR</b><p> +type 0922, grid 7.5 mm + + + + + + +>NAME +>VALUE +0922 + + + +<b>RESISTOR</b><p> +type RDH, grid 15 mm + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +RDH + + + + +<b>Mini MELF 0102 Axial</b> + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b> chip<p> +Source: http://www.vishay.com/docs/20008/dcrcw.pdf + + +>NAME +>VALUE + + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR52<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR53<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR54<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR55<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RBR56<br> +Source: VISHAY .. vta56.pdf + + + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RNC55<br> +Source: VISHAY .. vta56.pdf + + + + + + + + +>NAME +>VALUE + + + + +<b>Bulk Metal® Foil Technology</b>, Tubular Axial Lead Resistors, Meets or Exceeds MIL-R-39005 Requirements<p> +MIL SIZE RNC60<br> +Source: VISHAY .. vta56.pdf + + + + + + + + +>NAME +>VALUE + + + + +<b>Package 4527</b><p> +Source: http://www.vishay.com/docs/31059/wsrhigh.pdf + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + +>NAME +>VALUE + + +<b>Wirewound Resistors, Precision Power</b><p> +Source: VISHAY wscwsn.pdf + + + + + + +>NAME +>VALUE + + +<b>CRCW1218 Thick Film, Rectangular Chip Resistors</b><p> +Source: http://www.vishay.com .. dcrcw.pdf + + + + +>NAME +>VALUE + + + + +<b>Chip Monolithic Ceramic Capacitors</b> Medium Voltage High Capacitance for General Use<p> +Source: http://www.murata.com .. GRM43DR72E224KW01.pdf + + + + + + +>NAME +>VALUE + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b><p> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b> + + + + + + + + +>NAME +>VALUE + + + + + +<b>CAPACITOR</b><p> +grid 2.5 mm, outline 2.4 x 4.4 mm + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 mm, outline 2.5 x 5 mm + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 mm, outline 3 x 5 mm + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 mm, outline 4 x 5 mm + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 mm, outline 5 x 5 mm + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 mm, outline 6 x 5 mm + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 mm + 5 mm, outline 2.4 x 7 mm + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 + 5 mm, outline 2.5 x 7.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 + 5 mm, outline 3.5 x 7.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 + 5 mm, outline 4.5 x 7.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 2.5 + 5 mm, outline 5.5 x 7.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 2.4 x 4.4 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 2.5 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 4.5 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 3 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 5 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 5.5 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 7.5 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +Horizontal, grid 5 mm, outline 7.5 x 7.5 mm + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +<b>CAPACITOR</b><p> +grid 7.5 mm, outline 3.2 x 10.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 7.5 mm, outline 4.2 x 10.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 7.5 mm, outline 5.2 x 10.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 10.2 mm, outline 4.3 x 13.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 10.2 mm, outline 5.4 x 13.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 10.2 mm, outline 6.4 x 13.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 15 mm, outline 5.4 x 18.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 15 mm, outline 6.4 x 18.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 15 mm, outline 7.2 x 18.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 15 mm, outline 8.4 x 18.3 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 15 mm, outline 9.1 x 18.2 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 22.5 mm, outline 6.2 x 26.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 22.5 mm, outline 7.4 x 26.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 22.5 mm, outline 8.7 x 26.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 22.5 mm, outline 10.8 x 26.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 22.5 mm, outline 11.3 x 26.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 27.5 mm, outline 9.3 x 31.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 27.5 mm, outline 11.3 x 31.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 27.5 mm, outline 13.4 x 31.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 27.5 mm, outline 20.5 x 31.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 32.5 mm, outline 13.7 x 37.4 mm + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 32.5 mm, outline 16.2 x 37.4 mm + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 32.5 mm, outline 18.2 x 37.4 mm + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 37.5 mm, outline 19.2 x 41.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 37.5 mm, outline 20.3 x 41.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 5 mm, outline 3.5 x 7.5 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 37.5 mm, outline 15.5 x 41.8 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 7.5 mm, outline 6.3 x 10.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 27.5 mm, outline 15.4 x 31.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CAPACITOR</b><p> +grid 27.5 mm, outline 17.3 x 31.6 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>Ceramic Chip Capacitor KEMET 0204 reflow solder</b><p> +Metric Code Size 1005 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 0603 reflow solder</b><p> +Metric Code Size 1608 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 0805 reflow solder</b><p> +Metric Code Size 2012 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 1206 reflow solder</b><p> +Metric Code Size 3216 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 1210 reflow solder</b><p> +Metric Code Size 3225 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 1812 reflow solder</b><p> +Metric Code Size 4532 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 1825 reflow solder</b><p> +Metric Code Size 4564 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 2220 reflow solder</b><p>Metric Code Size 5650 + + + + +>NAME +>VALUE + + + + +<b>Ceramic Chip Capacitor KEMET 2225 reflow solder</b><p>Metric Code Size 5664 + + + + +>NAME +>VALUE + + + + +<b> </b><p> +Source: http://www.vishay.com/docs/10129/hpc0201a.pdf + + +>NAME +>VALUE + + + +Source: http://www.avxcorp.com/docs/catalogs/cx5r.pdf + + +>NAME +>VALUE + + + + + + +<b>CAPACITOR</b><p> +Source: AVX .. aphvc.pdf + + + + +>NAME +>VALUE + + + + +<b>CAPACITOR</b><p> +Source: AVX .. aphvc.pdf + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME +>VALUE + + + + + + + + +<B>RESISTOR</B>, European symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<B>CAPACITOR</B>, European symbol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Transistors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>TO-3</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +C +E +B + + +<b>TO 18</b> + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + +<b>TO-18</b> + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + +<b>TO 202 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + + + +<b>TO 202 vertical</b> + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + +SOT-93<p> +grid 5.45 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A20,3mm + + + + + + + + + + + + +SOT-93<p> +grid 5.45 mm + + + + + + + + + + + + + + +>VALUE +>NAME + + + +<b>TO 126 horizontal</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + +<b>TO 126 vertical</b> + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + +<b>TO 218 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + + + +<b>TO 218 vertical</b> + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + +<b>TO 220 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A17,5mm +1 +2 +3 + + + + + + + + + + + + +<b>TO 220 vertical</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>TO-225</b><p> +grid 2.54 mm, vertical + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +>NAME +>VALUE + + + + + + +<b>TO-39</b> + + + + + + + + +>NAME +>VALUE + + +<b>TO 5</b> + + + + + + + + +>NAME +>VALUE + + +<b>TO-66</b> + + + + + + + + + + + + + + + + +3 +>NAME +>VALUE +2 +1 + + +<b>TO 92</b> + + + + + + + + + + + + + +>NAME +>VALUE +2 +3 +1 + + +<b>TO-92</b> Pads In Line E B C from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads Triangle Reverse + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b><p> +grid 5.08 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TOP 3 horizontal</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A20,3mm +1 +2 +3 + + + + + + + + + + + + +<b>TOP 3 vertical</b> + + + + + + + + + + + + + + +>NAME +>VALUE +B +C +E + + + + + + + + + + +TO-236 ITT Intermetall + + + + + + + +>NAME +>VALUE + + + + + +<b>SOT-23 (EBC)</b> + + + + + + + +>NAME +>VALUE + + + + + +<b>TO-92</b> Pads In Line B C E from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line C B E from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line B E C from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line C E B from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +SC59 (SOT23) Motorola + + + + + + + +>NAME +>VALUE + + + + + +SOT89 Basis Collector Emitter + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-37</b><p> +Motorola CASE 317A-01 ISSUE B<br> +http://www.ee.siue.edu/~alozows/library/datasheets/BFR96.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +E +B +C +5,1 + + + + + + + + + + + + + + + +<b>TO-92</b> Pads In Line E C B from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +NPN Transistror<p> +BF959 corrected 2008.03.06<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LAN8720A Series 3.3 V RMII 10/100 Ethernet Transceiver Surface Mount - QFN-24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PCB END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +Micro Usb, 2.0 Type b, Rcpt, Smt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Zetex Power MOS FETs, Bridges, Diodes</b><p> +http://www.zetex.com<p> +<author>Created by librarian@cadsoft.de</author> + + +<b>Small Outline Diode</b> + + + + + + +>NAME +>VALUE + + + + + +<b>Small Outline Transistor</b> + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +<b>DIODE</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Supply Symbols</b><p> +GND, VCC, 0V, +5V, -5V, etc.<p> +Please keep in mind, that these devices are necessary for the +automatic wiring of the supply signals.<p> +The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> +In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> +<author>Created by librarian@cadsoft.de</author> + + + + + + + +>VALUE + + + + + + +>VALUE + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ic Bridge Usb To Uart 28qfn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + + + + + + + + + +>NAME +>VALUE + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + +>NAME + + + + + + + + + + + + + + + +V+ +GND +DATA +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + +>NAME + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 TX+ +2 TX- +3 RX+ +6 RX- +4 +5 +7 +8 +>NAME +>VALUE +75R +75R +75R +75R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shield +Yellow Speed +Green Link + + + + + + + + + + + + + + + + + + + + + + + +Ferrite +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wiznet RB1-125BAG1A RJ45 1x1 Tab Down Through Hole + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +HELI Colour; 1.6X1.6MM LOW CURRENT RGB SMD LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +4-BIT BIDIRECTIONAL VOLTAGE-LEVEL TRANSLATOR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +<b>Pin header 1x10 0.1" spacing</b> +<p> +With round pins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schottky Diode to prevent +backflow power into usb +Normal booting & resetting requires +IO0 pulled up +IO2 pulled down +MTDI IO12 down +MTDO IO15 up +IO5 up +These pins are connected +to the on-module flash +These 3 pullup +configure autonegotiation +1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.0, EAGLE supports the align property for labels. +Labels in schematic will not be understood with this version. Update EAGLE to the latest version +for full support of labels. + + + diff --git a/brain/hw/BAAAHS-BRN01-A/Brain1portA.brd b/brain/hw/BAAAHS-BRN01-A/Brain1portA.brd new file mode 100644 index 0000000000..2e482fb8f7 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-A/Brain1portA.brd @@ -0,0 +1,3375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +V+ +GND +DATA +>NAME + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + +>NAME + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PCB END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +<b>Transistors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +TO-236 ITT Intermetall + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>0805<b><p> + + + + + + +>NAME +>VALUE + + + +<b>0402<b><p> + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +<b>0603<b><p> + + + + + + +>NAME +>VALUE +>name + + + + + +<b>0805<b><p> + + + + + +<b>0402<b><p> + + + + + +<b>0603<b><p> + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>Diode</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>Diode</b> + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + + diff --git a/brain/hw/BAAAHS-BRN01-A/Brain1portA.sch b/brain/hw/BAAAHS-BRN01-A/Brain1portA.sch new file mode 100644 index 0000000000..a438da4b00 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-A/Brain1portA.sch @@ -0,0 +1,5962 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Frames for Sheet and Layout</b> + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +Document Number: +>DRAWING_NAME + + + + + + + + + + +<b>FRAME</b><p> +401 x 266 mm, landscape + + + + + + + + + + + + + + + +<b>Supply Symbols</b><p> + GND, VCC, 0V, +5V, -5V, etc.<p> + Please keep in mind, that these devices are necessary for the + automatic wiring of the supply signals.<p> + The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> + In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> + <author>Created by librarian@cadsoft.de</author> + + + + + + +>VALUE + + + + +>VALUE + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + +<b>Transistors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>TO-3</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +C +E +B + + +<b>TO 18</b> + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + +<b>TO-18</b> + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + +<b>TO 202 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + + + +<b>TO 202 vertical</b> + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + +SOT-93<p> +grid 5.45 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A20,3mm + + + + + + + + + + + + +SOT-93<p> +grid 5.45 mm + + + + + + + + + + + + + + +>VALUE +>NAME + + + +<b>TO 126 horizontal</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + +<b>TO 126 vertical</b> + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + +<b>TO 218 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + + + +<b>TO 218 vertical</b> + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + +<b>TO 220 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A17,5mm +1 +2 +3 + + + + + + + + + + + + +<b>TO 220 vertical</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>TO-225</b><p> +grid 2.54 mm, vertical + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +>NAME +>VALUE + + + + + + +<b>TO-39</b> + + + + + + + + +>NAME +>VALUE + + +<b>TO 5</b> + + + + + + + + +>NAME +>VALUE + + +<b>TO-66</b> + + + + + + + + + + + + + + + + +3 +>NAME +>VALUE +2 +1 + + +<b>TO 92</b> + + + + + + + + + + + + + +>NAME +>VALUE +2 +3 +1 + + +<b>TO-92</b> Pads In Line E B C from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads Triangle Reverse + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b><p> +grid 5.08 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TOP 3 horizontal</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A20,3mm +1 +2 +3 + + + + + + + + + + + + +<b>TOP 3 vertical</b> + + + + + + + + + + + + + + +>NAME +>VALUE +B +C +E + + + + + + + + + + +TO-236 ITT Intermetall + + + + + + + +>NAME +>VALUE + + + + + +<b>SOT-23 (EBC)</b> + + + + + + + +>NAME +>VALUE + + + + + +<b>TO-92</b> Pads In Line B C E from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line C B E from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line B E C from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line C E B from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +SC59 (SOT23) Motorola + + + + + + + +>NAME +>VALUE + + + + + +SOT89 Basis Collector Emitter + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-37</b><p> +Motorola CASE 317A-01 ISSUE B<br> +http://www.ee.siue.edu/~alozows/library/datasheets/BFR96.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +E +B +C +5,1 + + + + + + + + + + + + + + + +<b>TO-92</b> Pads In Line E C B from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +NPN Transistror<p> +BF959 corrected 2008.03.06<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LAN8720A Series 3.3 V RMII 10/100 Ethernet Transceiver Surface Mount - QFN-24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PCB END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +Micro Usb, 2.0 Type b, Rcpt, Smt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Supply Symbols</b><p> +GND, VCC, 0V, +5V, -5V, etc.<p> +Please keep in mind, that these devices are necessary for the +automatic wiring of the supply signals.<p> +The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> +In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> +<author>Created by librarian@cadsoft.de</author> + + + + + + + +>VALUE + + + + + + +>VALUE + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ic Bridge Usb To Uart 28qfn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + + + + + + + + + +>NAME +>VALUE + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + +>NAME + + + + + + + + + + + + + + + + +V+ +GND +DATA +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + +>NAME + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 TX+ +2 TX- +3 RX+ +6 RX- +4 +5 +7 +8 +>NAME +>VALUE +75R +75R +75R +75R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shield +Yellow Speed +Green Link + + + + + + + + + + + + + + + + + + + + + + + +Ferrite +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wiznet RB1-125BAG1A RJ45 1x1 Tab Down Through Hole + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +HELI Colour; 1.6X1.6MM LOW CURRENT RGB SMD LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +4-BIT BIDIRECTIONAL VOLTAGE-LEVEL TRANSLATOR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +<b>Pin header 1x10 0.1" spacing</b> +<p> +With round pins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>0805<b><p> + + + + + + +>NAME +>VALUE + + + +<b>0402<b><p> + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +<b>0603<b><p> + + + + + + +>NAME +>VALUE +>name + + + + + +<b>0805<b><p> + + + + + +<b>0402<b><p> + + + + + +<b>0603<b><p> + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +302010171 + + + + + + + + + + + + + + + + + + + + + + +302010018 + + + + + + + + + + + + + + + + + + + + + + +302010012 + + + + + + + + + + + + + + + + + + + + + + +302010054 + + + + + + + + + + + + + + + + + + + + + + +302010053 + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +301012124 + + + + + + + + + + + + + + + + + + + + + + +301010004 + + + + + + + + + + + + + + + + + + + + + + +301010075 + + + + + + + + + + + + + + + + + + + + + + +301010005 + + + + + + + + + + + + + + + + + + + + + + +301012019 + + + + + + + + + + + + + + + + + + + + + + +301012002 + + + + + + + + + + + + + + + + + + + + + + +301011992 + + + + + + + + + + + + + + + + + + + + + + +301012015 + + + + + + + + + + + + + + + + + + + + + + +301011982 + + + + + + + + + + + + + + + + + + + + + + +301012026 + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>Diode</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>Diode</b> + + + + + + + + + + + +>NAME +>VALUE + + + + + + +304020034 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schottky Diode to prevent +backflow power into usb +Normal booting & resetting requires +IO0 pulled up +IO2 pulled down +MTDI IO12 down +MTDO IO15 up +IO5 up +These pins are connected +to the on-module flash +These 3 pullup +configure autonegotiation +1 +8720 datasheet calls for +470pf and 1uF low ESR +on PHY_VDDCR but +sub'ing available OPL parts +R31 pullup configs +external clock + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.0, EAGLE supports the align property for labels. +Labels in schematic will not be understood with this version. Update EAGLE to the latest version +for full support of labels. + + + diff --git a/brain/hw/BAAAHS-BRN01-A/Brain3port.brd b/brain/hw/BAAAHS-BRN01-A/Brain3port.brd new file mode 100644 index 0000000000..ee63a16fd3 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-A/Brain3port.brd @@ -0,0 +1,740 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brain/hw/BAAAHS-BRN01-A/Brain3port.sch b/brain/hw/BAAAHS-BRN01-A/Brain3port.sch new file mode 100644 index 0000000000..9a7153c9d6 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-A/Brain3port.sch @@ -0,0 +1,820 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Frames for Sheet and Layout</b> + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +Document Number: +>DRAWING_NAME + + + + + + + + + + +<b>FRAME</b><p> +401 x 266 mm, landscape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +4-Port 10/100 Switch with RGMII/GMII, 64 VQFN 8x8x0.9mm TRAY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/brain/hw/BAAAHS-BRN01-B/Brain1portB.brd b/brain/hw/BAAAHS-BRN01-B/Brain1portB.brd new file mode 100644 index 0000000000..e02f6cc7d4 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-B/Brain1portB.brd @@ -0,0 +1,3401 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +V+ +GND +DATA +>NAME + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + +>NAME + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PCB END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + +<b>Transistors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +TO-236 ITT Intermetall + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>0805<b><p> + + + + + + +>NAME +>VALUE + + + +<b>0402<b><p> + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +<b>0603<b><p> + + + + + + +>NAME +>VALUE +>name + + + + + +<b>0805<b><p> + + + + + +<b>0402<b><p> + + + + + +<b>0603<b><p> + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>Diode</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>Diode</b> + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + + diff --git a/brain/hw/BAAAHS-BRN01-B/Brain1portB.sch b/brain/hw/BAAAHS-BRN01-B/Brain1portB.sch new file mode 100644 index 0000000000..fdda08da8a --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-B/Brain1portB.sch @@ -0,0 +1,6102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +ANTENNA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Frames for Sheet and Layout</b> + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +Document Number: +>DRAWING_NAME + + + + + + + + + + +<b>FRAME</b><p> +401 x 266 mm, landscape + + + + + + + + + + + + + + + +<b>Supply Symbols</b><p> + GND, VCC, 0V, +5V, -5V, etc.<p> + Please keep in mind, that these devices are necessary for the + automatic wiring of the supply signals.<p> + The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> + In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> + <author>Created by librarian@cadsoft.de</author> + + + + + + +>VALUE + + + + +>VALUE + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + +<b>Transistors</b><p> +<author>Created by librarian@cadsoft.de</author> + + +<b>TO-3</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +C +E +B + + +<b>TO 18</b> + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + +<b>TO-18</b> + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + +<b>TO 202 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + + + +<b>TO 202 vertical</b> + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + +SOT-93<p> +grid 5.45 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A20,3mm + + + + + + + + + + + + +SOT-93<p> +grid 5.45 mm + + + + + + + + + + + + + + +>VALUE +>NAME + + + +<b>TO 126 horizontal</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + +<b>TO 126 vertical</b> + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + +<b>TO 218 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + + + +<b>TO 218 vertical</b> + + + + + + + + +>NAME +>VALUE +1 +2 +3 + + + + + + + + + + +<b>TO 220 horizontal</b> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A17,5mm +1 +2 +3 + + + + + + + + + + + + +<b>TO 220 vertical</b> + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +<b>TO-225</b><p> +grid 2.54 mm, vertical + + + + + + + + + + + + + + + + + + + + + + + + + + +1 +2 +3 +>NAME +>VALUE + + + + + + +<b>TO-39</b> + + + + + + + + +>NAME +>VALUE + + +<b>TO 5</b> + + + + + + + + +>NAME +>VALUE + + +<b>TO-66</b> + + + + + + + + + + + + + + + + +3 +>NAME +>VALUE +2 +1 + + +<b>TO 92</b> + + + + + + + + + + + + + +>NAME +>VALUE +2 +3 +1 + + +<b>TO-92</b> Pads In Line E B C from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads Triangle Reverse + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b><p> +grid 5.08 mm + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TOP 3 horizontal</b> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +A20,3mm +1 +2 +3 + + + + + + + + + + + + +<b>TOP 3 vertical</b> + + + + + + + + + + + + + + +>NAME +>VALUE +B +C +E + + + + + + + + + + +TO-236 ITT Intermetall + + + + + + + +>NAME +>VALUE + + + + + +<b>SOT-23 (EBC)</b> + + + + + + + +>NAME +>VALUE + + + + + +<b>TO-92</b> Pads In Line B C E from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line C B E from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line B E C from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>TO-92</b> Pads In Line C E B from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +SC59 (SOT23) Motorola + + + + + + + +>NAME +>VALUE + + + + + +SOT89 Basis Collector Emitter + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-37</b><p> +Motorola CASE 317A-01 ISSUE B<br> +http://www.ee.siue.edu/~alozows/library/datasheets/BFR96.pdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +E +B +C +5,1 + + + + + + + + + + + + + + + +<b>TO-92</b> Pads In Line E C B from top<p> + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +NPN Transistror<p> +BF959 corrected 2008.03.06<br> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LAN8720A Series 3.3 V RMII 10/100 Ethernet Transceiver Surface Mount - QFN-24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +PCB END + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + +Micro Usb, 2.0 Type b, Rcpt, Smt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Supply Symbols</b><p> +GND, VCC, 0V, +5V, -5V, etc.<p> +Please keep in mind, that these devices are necessary for the +automatic wiring of the supply signals.<p> +The pin name defined in the symbol is identical to the net which is to be wired automatically.<p> +In this library the device names are the same as the pin names of the symbols, therefore the correct signal names appear next to the supply symbols in the schematic.<p> +<author>Created by librarian@cadsoft.de</author> + + + + + + + +>VALUE + + + + + + +>VALUE + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + +<b>SUPPLY SYMBOL</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ic Bridge Usb To Uart 28qfn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + + + + + + + + + +>NAME +>VALUE + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + + + + +>NAME + + + + + + + + + + + + + + + + +V+ +GND +DATA +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE + + + + +3-TO, DPAK, 2.29 mm pitch, 9.90 mm span, 6.54 X 6.09 X 2.38 mm body +<p>3-pin TO, DPAK package with 2.29 mm pitch, 9.90 mm span with body size 6.54 X 6.09 X 2.38 mm</p> + + + + + +DFN4, 12.00 X 6.20 X 3.60 mm body +<p>DFN4 package with body size 12.00 X 6.20 X 3.60 mm</p> + + + + + +<b>INDUCTOR</b><p> +chip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + +>NAME + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 TX+ +2 TX- +3 RX+ +6 RX- +4 +5 +7 +8 +>NAME +>VALUE +75R +75R +75R +75R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shield +Yellow Speed +Green Link + + + + + + + + + + + + + + + + + + + + + + + +Ferrite +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wiznet RB1-125BAG1A RJ45 1x1 Tab Down Through Hole + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +HELI Colour; 1.6X1.6MM LOW CURRENT RGB SMD LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +4-BIT BIDIRECTIONAL VOLTAGE-LEVEL TRANSLATOR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + +<b>Pin header 1x10 0.1" spacing</b> +<p> +With round pins + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>0805<b><p> + + + + + + +>NAME +>VALUE + + + +<b>0402<b><p> + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +<b>0603<b><p> + + + + + + +>NAME +>VALUE +>name + + + + + +<b>0805<b><p> + + + + + +<b>0402<b><p> + + + + + +<b>0603<b><p> + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +302010171 + + + + + + + + + + + + + + + + + + + + + + +302010018 + + + + + + + + + + + + + + + + + + + + + + +302010012 + + + + + + + + + + + + + + + + + + + + + + +302010054 + + + + + + + + + + + + + + + + + + + + + + +302010053 + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + + + + + + + +>NAME +>VALUE + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +301012124 + + + + + + + + + + + + + + + + + + + + + + +301010004 + + + + + + + + + + + + + + + + + + + + + + +301010075 + + + + + + + + + + + + + + + + + + + + + + +301010005 + + + + + + + + + + + + + + + + + + + + + + +301012019 + + + + + + + + + + + + + + + + + + + + + + +301012002 + + + + + + + + + + + + + + + + + + + + + + +301011992 + + + + + + + + + + + + + + + + + + + + + + +301012015 + + + + + + + + + + + + + + + + + + + + + + +301011982 + + + + + + + + + + + + + + + + + + + + + + +301012026 + + + + + + + + + + + + + + + + + + + + + + + + +<b>Seeed Open Parts Library (OPL) for the Seeed Fusion PCB Assembly Service +<br><br> +<a href="https://www.seeedstudio.com/opl.html" title="https://www.seeedstudio.com/opl.html">Seeed Fusion PCBA OPL</a><br> +<a href="https://www.seeedstudio.com/fusion_pcb.html">Order PCB/PCBA</a><br><br> +<a href="https://www.seeedstudio.com">www.seeedstudio.com</a> +<br></b> + + +<b>Diode</b> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>Diode</b> + + + + + + + + + + + +>NAME +>VALUE + + + + + + +304020034 + + + + + + + + + + + + + + + + + + + + + + + + +<b>Frames for Sheet and Layout</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Date: +>LAST_DATE_TIME +Sheet: +>SHEET +REV: +TITLE: +Document Number: +>DRAWING_NAME + + + + +<b>FRAME</b><p> +401 x 266 mm, landscape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schottky Diode to prevent +backflow power into usb +Normal booting & resetting requires +IO0 pulled up +IO2 pulled down +MTDI IO12 down +MTDO IO15 up +IO5 up +These pins are connected +to the on-module flash +1 +8720 datasheet calls for +470pf and 1uF low ESR +on PHY_VDDCR but +sub'ing available OPL parts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +These 3 pullup +configure autonegotiation +R31 pullup configs +external clock +VDD Bypass +Caps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.0, EAGLE supports the align property for labels. +Labels in schematic will not be understood with this version. Update EAGLE to the latest version +for full support of labels. + + + diff --git a/brain/hw/BAAAHS-BRN01-C/BAAAHS-BRN01-C.brd b/brain/hw/BAAAHS-BRN01-C/BAAAHS-BRN01-C.brd new file mode 100644 index 0000000000..55d8c7c694 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/BAAAHS-BRN01-C.brd @@ -0,0 +1,7903 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CH2 +GND +PWR +CH1 +GND + + + + +PWR + + +RESET + + + + +BAAAHS BRAIN +BAAAHS-BRN01-C + + + + + + + + + + + + + + +PLATED +SLOTS (x2) + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + +>NAME +>VALUE + + + + + + + + +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(unless otherwise specified) +Inches (in) are the controlling dimensions for the drawings and +1. +Fabricate PCB in accordance with IPC-6012A, Class 2; per IPC-6011 +2. +Materials: +Laminate and Prepreg (B-stage) to be in accordance with IPC-4101/23 +3. +All holes shall be located within 0.008" (0.2mm) Diameter of True +4. +5. +6. +All exposed conductive pattern areas not covered with solder mask +Finish: +Apply liquid photo imageable solder mask (color black) per +Silkscreen shall be white, permanent, organic, non-conductive ink. +Test requirements: +Marking: +Board part number and revision letter is rendered in etch on the +UL logo, manufacturer's identification and date code letter shall +7. +100% netlist electrical verification using customer supplied +HiPot test all prepreg/core material less than 0.004" (0.1mm) +Tolerances: +Warp or twist of board shall not exceed 1%. +Conductor widths and spacing shall be within ± 0.001" (0.03mm) +Remove all burrs and break sharp edges 0.015" (0.4mm) maximum. +Surface Mount Pad plating must be flat to a maximum of 0.003" (0.08mm) +The following guidelines must be adhered to in order to maintain +Thieving: +Supplier may add thieving to compensate for low copper density +0.06" (1.5mm) maximum radius on any inside corner. +Thieving to card edge spacing 0.100" (2.5mm) minimum. +Thieving to Fiducial spacing 0.200" (5mm) minimum. +Thieving to non-plated through holes 0.200" (5mm) minimum. +Thieving to all other features 0.100" (2.5mm) minimum. +There shall be no exposed thieving in any areas free of +8. +9. +Only solder mask images that are the same size as the component +supplied data. Millimeters (mm) dimensions are for reference only. +using customer supplied data files. +Copper foil to be in accordance with IPC-MF-150. Unless otherwise +or IPC-4101/24. Material must meet UL 94V-0 flammability rating. +specified, all copper weight for inner layers to be 18um (0.5 oz) +considered "finished". +Position. Layer to layer registration shall be within 0.005" (0.125mm). +or other plating shall be Hot Air Solder Leveled using SN100C +pads may be enlarged and shall not be enlarged beyond 0.003" (0.08mm) +per side or 0.006" (0.15mm) overall. All other solder mask +There shall be no silkscreen on any solderable component pad. +bottom side of the board. Revision letter shall be identical to +be rendered in etch on the bottom side of the board approximately +IPC-D-356 netlist for opens and shorts. All nets shall be accessed +thick at 500 Vdc for 30 seconds minimum. Test should be done at +electrical and mechanical integrity of the design: +solder mask or internal copper plane. +NOTES: +and for outer layers 35um (1 oz). Copper weight shall be +A) +B) +Tin-Copper-Nickel Solder, per ANSI/J-STD-006 (HASL) +A) +B) +IPC-SM-840, class H, to both sides of the board over bare copper. +Via holes covered with solder mask do not need to be plugged. +images shall not be enlarged. +C) +A) +B) +this drawing. +where shown. +A) +B) +simultaneously or as otherwise mutually agreed upon. +the layer stage and again prior to packaging. +A) +B) +C) +D) +E) +of Gerber data. +above board surface. +A) +B) +areas on this design. +a. +b. +c. +e. +f. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Solder Mask - Top +Silkscreen - Top +Copper Foil - Component Layer +Prepreg [0.12mm] +Copper Foil - Component Layer +Solder Mask - Bottom +1.6mm +Silkscreen - Bottom + + + + +Core [1.2mm] +Prepreg [0.12mm] +Internal Power Plane +Internal Ground Plane + + + + + + + + + + + + + + + + + + + + +0.12mm +0.12mm +1.2mm + + + + + + + + + + + + +Standard titleblock for Electrical Alchemy layout drawings. Should be placed on any layout drawing before release. + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Revision: +Title: +Date: +>PART_NUMBER +>ENGINEER +>DATE +>REV +PCB FABRICATION DETAILS +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Revision: +Title: +Date: +>PART_NUMBER +>ENGINEER +>DATE +>REV +TOP PCB ASSEMBLY +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + + diff --git a/brain/hw/BAAAHS-BRN01-C/BAAAHS-BRN01-C.sch b/brain/hw/BAAAHS-BRN01-C/BAAAHS-BRN01-C.sch new file mode 100644 index 0000000000..413d831af1 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/BAAAHS-BRN01-C.sch @@ -0,0 +1,55867 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Rev: +Title: +Date: +Sheet: +>SHEET +>ENGINEER +>PART_NUMBER +>REV +>DATE +ELECTRICAL CIRCUIT SCHEMATIC +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++3V3 + + + + + + + + + + + + ++5V0 + + + + + + +VBUS + + + + + + +VLED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>CAPACITOR</b><p> + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +type 0617, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SMA</b> CASE 403D-02<p> +Source: http://www.onsemi.com/pub_link/Collateral/MBRA340T3-D.PDF + + + + + + + + + +>NAME +>VALUE + +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + +>NAME +>VALUE + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + +>NAME +>VALUE + + + + + + + +>NAME + + + + + + + +>NAME +>VALUE + + + + + + +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b> + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + +>NAME +>VALUE +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + +Vishay Dale - Low Profile, High Current IHLP Inductor + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +>NAME +>VALUE +>NAME + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VAL +>NAME + + + + +>NAME + + + + + +>NAME + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME + + + +>NAME + + + + + + + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +General purpose ferrite bead filter elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +General purpose power inductors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + +Momentary Pushbutton Tact Switch - 4 Terminal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +General Purpose Bipolar NPN Transistors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + +>NAME + + + +>NAME + + + + + + + + + + + + + +>NAME + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + +2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring. + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + + + + + + + + + + + + + + + + + + +MICRO USB +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 TX+ +2 TX- +3 RX+ +6 RX- +4 +5 +7 +8 +>NAME +>VALUE +75R +75R +75R +75R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shield +Yellow Speed +Green Link + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wiznet RB1-125BAG1A RJ45 1x1 Tab Down Through Hole + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ic Bridge Usb To Uart 28qfn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +LAN8720A Series 3.3 V RMII 10/100 Ethernet Transceiver Surface Mount - QFN-24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>CHIPLED</b><p> +Source: http://www.osram.convergy.de/ ... LG_LY N971.pdf + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + +<B>LED</B><p> +3 mm, round + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + +<B>LED</B><p> +5 mm, round + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + +>NAME +>VALUE + + + + + + + +>NAME + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +HELI Colour; 1.6X1.6MM LOW CURRENT RGB SMD LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +4-BIT BIDIRECTIONAL VOLTAGE-LEVEL TRANSLATOR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schottky Diode to prevent +backflow power into usb +Normal booting & resetting requires +IO0 pulled up +IO2 pulled down +MTDI IO12 down +MTDO IO15 up +IO5 up +These pins are connected +to the on-module flash + + + + + + + + + + + + + + + + + + + +CONTROLLER +LEVEL SHIFTER +USB UART +5V SUPPLY +3.3V POWER SUPPLY +EXPANSION HEADER +LED INTERFACE +USER INTERFACE +VOLTAGE MONITOR +LED OUT +LED IN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +These 3 pullup +configure autonegotiation +ETHERNET PYH AND JACK + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.0, EAGLE supports the align property for labels. +Labels in schematic will not be understood with this version. Update EAGLE to the latest version +for full support of labels. + + + diff --git a/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_BOM.xlsx b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_BOM.xlsx new file mode 100644 index 0000000000..1c3d25381f Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_BOM.xlsx differ diff --git a/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Fabrication.pdf b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Fabrication.pdf new file mode 100644 index 0000000000..b3e5104880 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Fabrication.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Placement.csv b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Placement.csv new file mode 100644 index 0000000000..fd80fe9e0d --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Placement.csv @@ -0,0 +1,96 @@ +designator,x (mm),y (mm),rotation (deg),side,package +C1,86.87, 5.59, 0,top,C0402 +C2,99.31,27.94, 90,top,C0402 +C3,18.03,34.80, 90,top,C0402 +C4,102.11,29.46, 90,top,C0603 +C5,103.38,29.72, 90,top,C0402 +C6,26.42,30.23,270,top,C0402 +C7,27.69,30.23,270,top,C0402 +C8,105.16, 9.14,270,top,C0402 +C9,29.72,30.23,270,top,C0402 +C10,30.99,30.23,270,top,C0402 +C11,57.66, 7.11, 90,top,C0603 +C12,55.12, 6.35, 0,top,C0603 +C13,86.36,16.00, 90,top,C0402 +C14,55.37,11.68, 0,top,C0402 +C15,62.99,10.41,270,top,C0402 +C16,69.09, 8.38,270,top,C0603 +C17,69.34,16.00,270,top,C0402 +C18,35.56, 5.84,270,top,C0603 +C19,101.60, 5.84,270,top,C0603 +C20,49.78,25.40, 90,top,C0402 +C21,54.10,18.03, 0,top,C0402 +C22,52.07,13.46,180,top,C0603 +C23,44.45,25.91,180,top,C0603 +C24,51.31,15.24,270,top,C0402 +C25,52.58,15.24,270,top,C0402 +C26,44.45,22.86, 0,top,C0603 +C27,46.23,21.34, 90,top,C0402 +C28,47.24,15.24,270,top,C0402 +C29,34.80,18.80,270,top,C0402 +D1,51.05, 6.10,270,top,SOT23 +D2,65.28, 5.84, 0,top,SOD123 +D3,73.15,13.97,180,top,LEDSC160X160X070-4N +D4,125.98,16.76,270,top,LEDSC160X160X070-4N +D5,69.74,29.95,295,top,D0603 +D6,76.57,29.92,245,top,D0603 +J1,15.05,32.51,270,top,USB_MICRO_A_RA +L1,65.79, 9.40, 0,top,NRG4026 +L2,44.45,24.38,180,top,L0603 +Q1,45.21,33.02,270,top,SOT23 +Q2,49.28,29.97,270,top,SOT23 +R1,100.58,27.94, 90,top,R0402 +R2,76.20, 8.89, 0,top,R0402 +R3,40.64,30.23,270,top,R0402 +R4,50.29,10.41,180,top,R0603 +R5,103.38,17.02, 90,top,R0402 +R6,39.37,30.23, 90,top,R0402 +R7,46.23,30.23, 90,top,R0402 +R8,44.20,30.23,270,top,R0402 +R9,121.16,10.41, 90,top,R0402 +R10,119.89,10.41, 90,top,R0402 +R11,97.03,12.70,270,top,R0402 +R12,97.28,25.40,180,top,R0402 +R13,103.12, 9.14,270,top,R0402 +R14,104.14, 9.14, 90,top,R0402 +R15,59.94, 6.35,180,top,R0402 +R16,87.63,16.00,270,top,R0402 +R17,74.42,16.00,180,top,R0402 +R18,71.88,16.00, 0,top,R0402 +R19,70.61,13.97,270,top,R0402 +R20,61.72,11.68, 0,top,R0402 +R21,59.18,11.68, 0,top,R0402 +R22,67.82,16.00,270,top,R0402 +R23,125.98,19.30, 0,top,R0402 +R24,125.98,14.22, 0,top,R0402 +R25,125.98,12.95, 0,top,R0402 +R26,51.05,25.40,270,top,R0402 +R27,48.51,25.40, 90,top,R0402 +R28,45.97,17.27, 90,top,R0402 +R29,56.13,17.02,180,top,R0402 +R30,54.36,14.99,270,top,R0402 +R31,53.34,21.59, 0,top,R0402 +R32,54.61,19.05,180,top,R0402 +R33,53.34,22.86, 0,top,R0402 +R34,56.64,18.54, 90,top,R0402 +R35,56.13,15.49, 0,top,R0402 +R36,53.34,20.32, 0,top,R0402 +R37,42.67,18.54,180,top,R0402 +R38,43.43,17.53,180,top,R0402 +R39,43.43,21.08,180,top,R0402 +R40,43.43,13.97,180,top,R0402 +R41,43.43,12.70,180,top,R0402 +R42,42.67,20.07,180,top,R0402 +R43,59.69, 4.83, 0,top,R0603 +R44,72.39, 5.59, 0,top,R0603 +R45,85.60,24.89, 0,top,R0402 +R46,85.60,26.16, 0,top,R0402 +S1,82.04,16.00, 0,top,SM6MM +S2,63.50,16.00, 0,top,SM6MM +S3,91.44,25.15, 90,top,SM6MM +U1,81.53, 7.62,180,top,SOP65P640X120-14N +U2,113.79,21.65, 0,top,MODULE_ESP32WROOM32D +U3,35.56,32.51, 0,top,QFN50P500X500X80_29N +U4,55.37, 9.14,270,top,SOT23 +U5,60.45, 8.89,180,top,SOT23_6 +U6,49.53,19.30, 90,top,QFN50P400X400X100-25N diff --git a/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Schematic.pdf b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Schematic.pdf new file mode 100644 index 0000000000..dedc6c52ea Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_Schematic.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_TopAssembly.pdf b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_TopAssembly.pdf new file mode 100644 index 0000000000..10c3912ff5 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-C/files/BAAAHS-BRN01-C_TopAssembly.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_bottom_l4.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_bottom_l4.gbr new file mode 100644 index 0000000000..eaa7ebec44 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_bottom_l4.gbr @@ -0,0 +1,6573 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INBottom Copper*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,1.016000*% +%ADD11C,1.778000*% +%ADD12C,1.700000*% +%ADD13C,2.540000*% +%ADD14R,3.810000X3.810000*% +%ADD15R,1.778000X1.778000*% +%ADD16C,0.756400*% +%ADD17C,0.711200*% +%ADD18C,0.203200*% +%ADD19C,0.228600*% +%ADD20C,0.812800*% +%ADD21C,0.956400*% +%ADD22C,2.540000*% +%ADD23C,0.406400*% + +G36* +X379561Y3767D02* +X379561Y3767D01* +X379590Y3764D01* +X379701Y3787D01* +X379813Y3803D01* +X379840Y3815D01* +X379869Y3820D01* +X379969Y3873D01* +X380072Y3919D01* +X380095Y3938D01* +X380121Y3951D01* +X380203Y4029D01* +X380289Y4102D01* +X380306Y4127D01* +X380327Y4147D01* +X380384Y4245D01* +X380447Y4339D01* +X380456Y4367D01* +X380471Y4392D01* +X380499Y4502D01* +X380533Y4610D01* +X380534Y4640D01* +X380541Y4668D01* +X380537Y4781D01* +X380540Y4894D01* +X380533Y4923D01* +X380532Y4952D01* +X380497Y5060D01* +X380468Y5169D01* +X380453Y5195D01* +X380444Y5223D01* +X380399Y5287D01* +X380323Y5414D01* +X380277Y5457D01* +X380249Y5496D01* +X378967Y6778D01* +X378967Y46562D01* +X380158Y47753D01* +X419942Y47753D01* +X421133Y46562D01* +X421133Y6778D01* +X419851Y5496D01* +X419833Y5472D01* +X419811Y5453D01* +X419748Y5359D01* +X419680Y5269D01* +X419669Y5241D01* +X419653Y5217D01* +X419619Y5109D01* +X419578Y5003D01* +X419576Y4974D01* +X419567Y4946D01* +X419564Y4832D01* +X419555Y4720D01* +X419561Y4691D01* +X419560Y4662D01* +X419589Y4552D01* +X419611Y4441D01* +X419624Y4415D01* +X419632Y4387D01* +X419689Y4289D01* +X419742Y4189D01* +X419762Y4167D01* +X419777Y4142D01* +X419859Y4065D01* +X419938Y3983D01* +X419963Y3968D01* +X419984Y3948D01* +X420085Y3896D01* +X420183Y3839D01* +X420211Y3832D01* +X420237Y3818D01* +X420315Y3805D01* +X420458Y3769D01* +X420521Y3771D01* +X420568Y3763D01* +X951032Y3763D01* +X951061Y3767D01* +X951090Y3764D01* +X951201Y3787D01* +X951313Y3803D01* +X951340Y3815D01* +X951369Y3820D01* +X951469Y3873D01* +X951572Y3919D01* +X951595Y3938D01* +X951621Y3951D01* +X951703Y4029D01* +X951789Y4102D01* +X951806Y4127D01* +X951827Y4147D01* +X951884Y4245D01* +X951947Y4339D01* +X951956Y4367D01* +X951971Y4392D01* +X951999Y4502D01* +X952033Y4610D01* +X952034Y4640D01* +X952041Y4668D01* +X952037Y4781D01* +X952040Y4894D01* +X952033Y4923D01* +X952032Y4952D01* +X951997Y5060D01* +X951968Y5169D01* +X951953Y5195D01* +X951944Y5223D01* +X951899Y5287D01* +X951823Y5414D01* +X951777Y5457D01* +X951749Y5496D01* +X950467Y6778D01* +X950467Y46562D01* +X951658Y47753D01* +X991442Y47753D01* +X992633Y46562D01* +X992633Y6778D01* +X991351Y5496D01* +X991333Y5472D01* +X991311Y5453D01* +X991248Y5359D01* +X991180Y5269D01* +X991169Y5241D01* +X991153Y5217D01* +X991119Y5109D01* +X991078Y5003D01* +X991076Y4974D01* +X991067Y4946D01* +X991064Y4832D01* +X991055Y4720D01* +X991061Y4691D01* +X991060Y4662D01* +X991089Y4552D01* +X991111Y4441D01* +X991124Y4415D01* +X991132Y4387D01* +X991189Y4289D01* +X991242Y4189D01* +X991262Y4167D01* +X991277Y4142D01* +X991359Y4065D01* +X991438Y3983D01* +X991463Y3968D01* +X991484Y3948D01* +X991585Y3896D01* +X991683Y3839D01* +X991711Y3832D01* +X991737Y3818D01* +X991815Y3805D01* +X991958Y3769D01* +X992021Y3771D01* +X992068Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X1212841Y308355D01* +X1212727Y308339D01* +X1212613Y308329D01* +X1212587Y308319D01* +X1212559Y308315D01* +X1212454Y308268D01* +X1212347Y308227D01* +X1212325Y308211D01* +X1212300Y308199D01* +X1212212Y308125D01* +X1212120Y308056D01* +X1212104Y308033D01* +X1212083Y308016D01* +X1212019Y307920D01* +X1211950Y307828D01* +X1211941Y307802D01* +X1211925Y307779D01* +X1211890Y307669D01* +X1211850Y307562D01* +X1211848Y307534D01* +X1211839Y307508D01* +X1211836Y307393D01* +X1211827Y307279D01* +X1211833Y307254D01* +X1211832Y307224D01* +X1211899Y306967D01* +X1211903Y306951D01* +X1212315Y305957D01* +X1212315Y303643D01* +X1211429Y301506D01* +X1209794Y299871D01* +X1207657Y298985D01* +X1205343Y298985D01* +X1203206Y299871D01* +X1201571Y301506D01* +X1200685Y303643D01* +X1200685Y305957D01* +X1201097Y306951D01* +X1201126Y307063D01* +X1201161Y307172D01* +X1201161Y307200D01* +X1201168Y307227D01* +X1201165Y307341D01* +X1201168Y307456D01* +X1201161Y307483D01* +X1201160Y307511D01* +X1201125Y307620D01* +X1201096Y307731D01* +X1201082Y307755D01* +X1201074Y307782D01* +X1201009Y307877D01* +X1200951Y307976D01* +X1200931Y307995D01* +X1200915Y308018D01* +X1200827Y308092D01* +X1200744Y308170D01* +X1200719Y308183D01* +X1200698Y308201D01* +X1200593Y308247D01* +X1200490Y308300D01* +X1200466Y308304D01* +X1200438Y308316D01* +X1200174Y308353D01* +X1200159Y308355D01* +X1076459Y308355D01* +X1076430Y308351D01* +X1076401Y308354D01* +X1076290Y308331D01* +X1076178Y308315D01* +X1076151Y308303D01* +X1076122Y308298D01* +X1076022Y308246D01* +X1075918Y308199D01* +X1075896Y308180D01* +X1075870Y308167D01* +X1075788Y308089D01* +X1075701Y308016D01* +X1075685Y307991D01* +X1075664Y307971D01* +X1075606Y307873D01* +X1075544Y307779D01* +X1075535Y307751D01* +X1075520Y307726D01* +X1075492Y307616D01* +X1075458Y307508D01* +X1075457Y307478D01* +X1075450Y307450D01* +X1075453Y307337D01* +X1075450Y307224D01* +X1075458Y307195D01* +X1075459Y307166D01* +X1075494Y307058D01* +X1075522Y306949D01* +X1075537Y306923D01* +X1075546Y306895D01* +X1075592Y306832D01* +X1075668Y306704D01* +X1075684Y306689D01* +X1075685Y306687D01* +X1075716Y306658D01* +X1075741Y306622D01* +X1076809Y305554D01* +X1077695Y303417D01* +X1077695Y301103D01* +X1076809Y298966D01* +X1075174Y297331D01* +X1073037Y296445D01* +X1070723Y296445D01* +X1068586Y297331D01* +X1066951Y298966D01* +X1066065Y301103D01* +X1066065Y303417D01* +X1066951Y305554D01* +X1068019Y306622D01* +X1068031Y306638D01* +X1068041Y306647D01* +X1068045Y306653D01* +X1068059Y306665D01* +X1068122Y306759D01* +X1068190Y306849D01* +X1068200Y306877D01* +X1068216Y306901D01* +X1068251Y307009D01* +X1068291Y307115D01* +X1068293Y307144D01* +X1068302Y307172D01* +X1068305Y307286D01* +X1068315Y307398D01* +X1068309Y307427D01* +X1068310Y307456D01* +X1068281Y307566D01* +X1068259Y307677D01* +X1068245Y307703D01* +X1068238Y307731D01* +X1068180Y307829D01* +X1068128Y307929D01* +X1068107Y307951D01* +X1068092Y307976D01* +X1068010Y308053D01* +X1067932Y308135D01* +X1067907Y308150D01* +X1067885Y308170D01* +X1067784Y308222D01* +X1067687Y308279D01* +X1067658Y308286D01* +X1067632Y308300D01* +X1067555Y308313D01* +X1067411Y308349D01* +X1067349Y308347D01* +X1067301Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X347177Y377237D01* +X347148Y377233D01* +X347119Y377236D01* +X347008Y377213D01* +X346896Y377197D01* +X346869Y377185D01* +X346840Y377180D01* +X346739Y377127D01* +X346636Y377081D01* +X346614Y377062D01* +X346588Y377049D01* +X346506Y376971D01* +X346419Y376898D01* +X346403Y376873D01* +X346382Y376853D01* +X346324Y376755D01* +X346262Y376661D01* +X346253Y376633D01* +X346238Y376608D01* +X346210Y376498D01* +X346176Y376390D01* +X346175Y376360D01* +X346168Y376332D01* +X346171Y376219D01* +X346168Y376106D01* +X346176Y376077D01* +X346177Y376048D01* +X346212Y375940D01* +X346240Y375831D01* +X346255Y375805D01* +X346264Y375777D01* +X346310Y375713D01* +X346386Y375586D01* +X346431Y375543D01* +X346459Y375504D01* +X347829Y374134D01* +X348715Y371997D01* +X348715Y369683D01* +X347829Y367546D01* +X346194Y365911D01* +X344057Y365025D01* +X341743Y365025D01* +X339606Y365911D01* +X337971Y367546D01* +X337085Y369683D01* +X337085Y371997D01* +X337971Y374134D01* +X339341Y375504D01* +X339359Y375528D01* +X339381Y375547D01* +X339444Y375641D01* +X339512Y375731D01* +X339522Y375759D01* +X339538Y375783D01* +X339573Y375891D01* +X339613Y375997D01* +X339615Y376026D01* +X339624Y376054D01* +X339627Y376168D01* +X339637Y376280D01* +X339631Y376309D01* +X339632Y376338D01* +X339603Y376448D01* +X339581Y376559D01* +X339567Y376585D01* +X339560Y376613D01* +X339502Y376711D01* +X339450Y376811D01* +X339429Y376833D01* +X339414Y376858D01* +X339332Y376935D01* +X339254Y377017D01* +X339229Y377032D01* +X339207Y377052D01* +X339106Y377104D01* +X339009Y377161D01* +X338980Y377168D01* +X338954Y377182D01* +X338877Y377195D01* +X338733Y377231D01* +X338671Y377229D01* +X338623Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X379532Y3763D01* +X379561Y3767D01* +G37* +%LPC*% +G36* +X1220991Y116105D02* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218802Y126797D01* +X1218854Y126867D01* +X1218914Y126931D01* +X1218940Y126980D01* +X1218973Y127024D01* +X1219004Y127106D01* +X1219044Y127184D01* +X1219052Y127232D01* +X1219074Y127290D01* +X1219086Y127438D01* +X1219099Y127515D01* +X1219099Y150309D01* +X1219087Y150395D01* +X1219084Y150483D01* +X1219067Y150535D01* +X1219059Y150590D01* +X1219024Y150670D01* +X1218997Y150753D01* +X1218969Y150792D01* +X1218943Y150850D01* +X1218847Y150963D01* +X1218802Y151027D01* +X1197915Y171914D01* +X1197845Y171966D01* +X1197781Y172026D01* +X1197731Y172052D01* +X1197687Y172085D01* +X1197606Y172116D01* +X1197528Y172156D01* +X1197480Y172164D01* +X1197422Y172186D01* +X1197274Y172198D01* +X1197197Y172211D01* +X1166700Y172211D01* +X1166586Y172195D01* +X1166472Y172185D01* +X1166446Y172175D01* +X1166418Y172171D01* +X1166313Y172124D01* +X1166206Y172083D01* +X1166184Y172067D01* +X1166159Y172055D01* +X1166071Y171981D01* +X1165980Y171912D01* +X1165963Y171889D01* +X1165942Y171872D01* +X1165878Y171776D01* +X1165809Y171684D01* +X1165800Y171658D01* +X1165784Y171635D01* +X1165750Y171525D01* +X1165709Y171418D01* +X1165707Y171390D01* +X1165698Y171364D01* +X1165696Y171249D01* +X1165686Y171135D01* +X1165692Y171110D01* +X1165691Y171080D01* +X1165758Y170823D01* +X1165762Y170807D01* +X1166595Y168797D01* +X1166595Y166483D01* +X1165709Y164346D01* +X1164126Y162763D01* +X1164074Y162693D01* +X1164014Y162629D01* +X1163988Y162580D01* +X1163955Y162536D01* +X1163924Y162454D01* +X1163884Y162376D01* +X1163876Y162329D01* +X1163854Y162270D01* +X1163842Y162122D01* +X1163829Y162045D01* +X1163829Y161798D01* +X1136475Y134445D01* +X1136475Y134444D01* +X1134392Y132361D01* +X912848Y132361D01* +X910765Y134444D01* +X910765Y134445D01* +X909016Y136194D01* +X909014Y136195D01* +X909013Y136196D01* +X908902Y136279D01* +X908788Y136365D01* +X908787Y136365D01* +X908785Y136366D01* +X908659Y136414D01* +X908523Y136466D01* +X908521Y136466D01* +X908520Y136467D01* +X908379Y136478D01* +X908239Y136489D01* +X908238Y136489D01* +X908236Y136489D01* +X908221Y136486D01* +X907961Y136434D01* +X907945Y136425D01* +X905623Y136425D01* +X903486Y137311D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144907D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145382D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X921821Y150104D01* +X921905Y150083D01* +X921985Y150052D01* +X922042Y150047D01* +X922097Y150033D01* +X922182Y150036D01* +X922268Y150028D01* +X922324Y150040D01* +X922381Y150041D01* +X922463Y150067D01* +X922547Y150084D01* +X922597Y150111D01* +X922652Y150128D01* +X922723Y150176D01* +X922799Y150215D01* +X922840Y150255D01* +X922888Y150286D01* +X922943Y150352D01* +X923005Y150411D01* +X923034Y150460D01* +X923071Y150504D01* +X923106Y150582D01* +X923149Y150656D01* +X923163Y150711D01* +X923186Y150764D01* +X923198Y150849D01* +X923219Y150932D01* +X923217Y150989D01* +X923225Y151045D01* +X923213Y151130D01* +X923210Y151216D01* +X923193Y151270D01* +X923184Y151326D01* +X923149Y151405D01* +X923123Y151487D01* +X923094Y151527D01* +X923067Y151586D01* +X922973Y151696D01* +X922928Y151760D01* +X921344Y153344D01* +X921274Y153396D01* +X921210Y153456D01* +X921161Y153482D01* +X921116Y153515D01* +X921035Y153546D01* +X920957Y153586D01* +X920909Y153594D01* +X920851Y153616D01* +X920703Y153628D01* +X920626Y153641D01* +X896147Y153641D01* +X890801Y158988D01* +X890731Y159040D01* +X890667Y159100D01* +X890617Y159126D01* +X890573Y159159D01* +X890492Y159190D01* +X890414Y159230D01* +X890366Y159238D01* +X890308Y159260D01* +X890160Y159272D01* +X890083Y159285D01* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883185Y163943D01* +X883185Y166257D01* +X884071Y168394D01* +X885706Y170029D01* +X886258Y170258D01* +X886332Y170302D01* +X886410Y170337D01* +X886454Y170374D01* +X886503Y170403D01* +X886562Y170465D01* +X886627Y170521D01* +X886659Y170568D01* +X886698Y170609D01* +X886737Y170686D01* +X886785Y170757D01* +X886802Y170811D01* +X886828Y170862D01* +X886845Y170946D01* +X886871Y171028D01* +X886872Y171085D01* +X886883Y171141D01* +X886876Y171226D01* +X886878Y171312D01* +X886864Y171367D01* +X886859Y171424D01* +X886828Y171505D01* +X886806Y171587D01* +X886777Y171636D01* +X886757Y171689D01* +X886705Y171758D01* +X886661Y171832D01* +X886620Y171871D01* +X886585Y171916D01* +X886516Y171968D01* +X886454Y172026D01* +X886403Y172052D01* +X886357Y172086D01* +X886277Y172117D01* +X886201Y172156D01* +X886152Y172164D01* +X886092Y172187D01* +X885947Y172198D01* +X885870Y172211D01* +X789083Y172211D01* +X788997Y172199D01* +X788909Y172196D01* +X788857Y172179D01* +X788802Y172171D01* +X788722Y172136D01* +X788639Y172109D01* +X788600Y172081D01* +X788542Y172055D01* +X788429Y171959D01* +X788365Y171914D01* +X765803Y149351D01* +X708495Y149351D01* +X705929Y151917D01* +X705860Y151969D01* +X705796Y152029D01* +X705746Y152054D01* +X705702Y152088D01* +X705621Y152119D01* +X705543Y152159D01* +X705495Y152167D01* +X705437Y152189D01* +X705289Y152201D01* +X705212Y152214D01* +X702972Y152214D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X699199Y161323D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707423Y162958D01* +X709058Y161323D01* +X709944Y159185D01* +X709944Y156946D01* +X709956Y156860D01* +X709959Y156772D01* +X709976Y156720D01* +X709983Y156665D01* +X710019Y156585D01* +X710046Y156502D01* +X710074Y156462D01* +X710100Y156405D01* +X710196Y156292D01* +X710241Y156228D01* +X710723Y155746D01* +X710793Y155694D01* +X710857Y155634D01* +X710906Y155608D01* +X710950Y155575D01* +X711032Y155544D01* +X711110Y155504D01* +X711158Y155496D01* +X711216Y155474D01* +X711364Y155462D01* +X711441Y155449D01* +X753540Y155449D01* +X753654Y155465D01* +X753768Y155475D01* +X753794Y155485D01* +X753822Y155489D01* +X753927Y155536D01* +X754034Y155577D01* +X754056Y155593D01* +X754081Y155605D01* +X754169Y155679D01* +X754260Y155748D01* +X754277Y155771D01* +X754298Y155788D01* +X754362Y155884D01* +X754431Y155976D01* +X754440Y156002D01* +X754456Y156025D01* +X754490Y156135D01* +X754531Y156242D01* +X754533Y156270D01* +X754542Y156296D01* +X754544Y156411D01* +X754554Y156525D01* +X754548Y156550D01* +X754549Y156580D01* +X754482Y156837D01* +X754478Y156853D01* +X753645Y158863D01* +X753645Y161177D01* +X754531Y163314D01* +X756166Y164949D01* +X756718Y165178D01* +X756792Y165222D01* +X756870Y165257D01* +X756914Y165294D01* +X756963Y165323D01* +X757022Y165385D01* +X757087Y165441D01* +X757119Y165488D01* +X757158Y165529D01* +X757197Y165606D01* +X757245Y165677D01* +X757262Y165731D01* +X757288Y165782D01* +X757305Y165866D01* +X757331Y165948D01* +X757332Y166005D01* +X757343Y166061D01* +X757336Y166146D01* +X757338Y166232D01* +X757324Y166287D01* +X757319Y166344D01* +X757288Y166424D01* +X757266Y166507D01* +X757237Y166556D01* +X757217Y166609D01* +X757165Y166678D01* +X757121Y166752D01* +X757080Y166791D01* +X757045Y166836D01* +X756976Y166888D01* +X756914Y166946D01* +X756863Y166972D01* +X756818Y167006D01* +X756737Y167037D01* +X756661Y167076D01* +X756612Y167084D01* +X756552Y167107D01* +X756407Y167118D01* +X756330Y167131D01* +X716795Y167131D01* +X716708Y167119D01* +X716621Y167116D01* +X716568Y167099D01* +X716514Y167091D01* +X716434Y167056D01* +X716351Y167029D01* +X716311Y167001D01* +X716254Y166975D01* +X716141Y166879D01* +X716077Y166834D01* +X714494Y165251D01* +X712357Y164365D01* +X710043Y164365D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716077Y173526D01* +X716147Y173474D01* +X716211Y173414D01* +X716260Y173388D01* +X716304Y173355D01* +X716386Y173324D01* +X716464Y173284D01* +X716512Y173276D01* +X716570Y173254D01* +X716718Y173242D01* +X716795Y173229D01* +X757777Y173229D01* +X757863Y173241D01* +X757951Y173244D01* +X758003Y173261D01* +X758058Y173269D01* +X758138Y173304D01* +X758221Y173331D01* +X758260Y173359D01* +X758318Y173385D01* +X758431Y173481D01* +X758495Y173526D01* +X775977Y191009D01* +X991863Y191009D01* +X993879Y188992D01* +X993949Y188940D01* +X994013Y188880D01* +X994063Y188854D01* +X994107Y188821D01* +X994188Y188790D01* +X994266Y188750D01* +X994314Y188742D01* +X994372Y188720D01* +X994520Y188708D01* +X994597Y188695D01* +X996837Y188695D01* +X998974Y187809D01* +X1000609Y186174D01* +X1001495Y184037D01* +X1001495Y181723D01* +X1000609Y179586D01* +X998974Y177951D01* +X996837Y177065D01* +X994523Y177065D01* +X992386Y177951D01* +X990751Y179586D01* +X989865Y181723D01* +X989865Y183896D01* +X989857Y183954D01* +X989859Y184012D01* +X989837Y184094D01* +X989825Y184178D01* +X989802Y184231D01* +X989787Y184287D01* +X989744Y184360D01* +X989709Y184437D01* +X989671Y184482D01* +X989642Y184532D01* +X989580Y184590D01* +X989526Y184654D01* +X989477Y184686D01* +X989434Y184726D01* +X989359Y184765D01* +X989289Y184812D01* +X989233Y184829D01* +X989181Y184856D01* +X989113Y184867D01* +X989018Y184897D01* +X988918Y184900D01* +X988850Y184911D01* +X977551Y184911D01* +X977522Y184907D01* +X977493Y184910D01* +X977382Y184887D01* +X977270Y184871D01* +X977243Y184859D01* +X977214Y184854D01* +X977114Y184802D01* +X977010Y184755D01* +X976988Y184736D01* +X976962Y184723D01* +X976880Y184645D01* +X976793Y184572D01* +X976777Y184547D01* +X976756Y184527D01* +X976699Y184429D01* +X976636Y184335D01* +X976627Y184307D01* +X976612Y184282D01* +X976584Y184172D01* +X976550Y184064D01* +X976549Y184034D01* +X976542Y184006D01* +X976546Y183893D01* +X976543Y183780D01* +X976550Y183751D01* +X976551Y183722D01* +X976586Y183614D01* +X976615Y183505D01* +X976630Y183479D01* +X976639Y183451D01* +X976684Y183388D01* +X976760Y183260D01* +X976805Y183217D01* +X976833Y183178D01* +X981179Y178832D01* +X981249Y178780D01* +X981313Y178720D01* +X981363Y178694D01* +X981407Y178661D01* +X981488Y178630D01* +X981566Y178590D01* +X981614Y178582D01* +X981672Y178560D01* +X981820Y178548D01* +X981897Y178535D01* +X984137Y178535D01* +X986274Y177649D01* +X987909Y176014D01* +X988795Y173877D01* +X988795Y171563D01* +X987909Y169426D01* +X986274Y167791D01* +X984137Y166905D01* +X981823Y166905D01* +X979914Y167696D01* +X979886Y167703D01* +X979860Y167717D01* +X979749Y167739D01* +X979639Y167767D01* +X979610Y167766D01* +X979581Y167772D01* +X979468Y167762D01* +X979355Y167759D01* +X979327Y167750D01* +X979298Y167747D01* +X979192Y167707D01* +X979084Y167672D01* +X979060Y167656D01* +X979032Y167645D01* +X978942Y167577D01* +X978848Y167514D01* +X978829Y167491D01* +X978806Y167474D01* +X978738Y167383D01* +X978665Y167296D01* +X978653Y167269D01* +X978636Y167246D01* +X978596Y167140D01* +X978550Y167036D01* +X978546Y167007D01* +X978535Y166980D01* +X978526Y166867D01* +X978511Y166755D01* +X978515Y166726D01* +X978513Y166697D01* +X978530Y166620D01* +X978551Y166474D01* +X978577Y166416D01* +X978588Y166369D01* +X978635Y166257D01* +X978635Y163943D01* +X977749Y161806D01* +X976455Y160512D01* +X976437Y160488D01* +X976415Y160469D01* +X976352Y160375D01* +X976284Y160285D01* +X976274Y160257D01* +X976258Y160233D01* +X976223Y160125D01* +X976183Y160019D01* +X976181Y159990D01* +X976172Y159962D01* +X976169Y159848D01* +X976159Y159736D01* +X976165Y159707D01* +X976164Y159678D01* +X976193Y159568D01* +X976215Y159457D01* +X976229Y159431D01* +X976236Y159403D01* +X976294Y159305D01* +X976346Y159205D01* +X976367Y159183D01* +X976382Y159158D01* +X976464Y159081D01* +X976542Y158999D01* +X976567Y158984D01* +X976589Y158964D01* +X976690Y158912D01* +X976787Y158855D01* +X976816Y158848D01* +X976842Y158834D01* +X976919Y158821D01* +X977063Y158785D01* +X977125Y158787D01* +X977173Y158779D01* +X1019267Y158779D01* +X1019296Y158783D01* +X1019325Y158780D01* +X1019436Y158803D01* +X1019548Y158819D01* +X1019575Y158831D01* +X1019604Y158836D01* +X1019705Y158889D01* +X1019808Y158935D01* +X1019830Y158954D01* +X1019856Y158967D01* +X1019938Y159045D01* +X1020025Y159118D01* +X1020041Y159143D01* +X1020062Y159163D01* +X1020120Y159261D01* +X1020182Y159355D01* +X1020191Y159383D01* +X1020206Y159408D01* +X1020234Y159518D01* +X1020268Y159626D01* +X1020269Y159656D01* +X1020276Y159684D01* +X1020273Y159797D01* +X1020276Y159910D01* +X1020268Y159939D01* +X1020267Y159968D01* +X1020232Y160076D01* +X1020204Y160185D01* +X1020189Y160211D01* +X1020180Y160239D01* +X1020134Y160303D01* +X1020058Y160430D01* +X1020013Y160473D01* +X1019985Y160512D01* +X1018691Y161806D01* +X1017805Y163943D01* +X1017805Y166257D01* +X1018691Y168394D01* +X1019759Y169462D01* +X1019794Y169509D01* +X1019836Y169549D01* +X1019879Y169622D01* +X1019930Y169689D01* +X1019951Y169744D01* +X1019980Y169794D01* +X1020001Y169876D01* +X1020031Y169955D01* +X1020036Y170013D01* +X1020050Y170070D01* +X1020048Y170154D01* +X1020055Y170238D01* +X1020043Y170296D01* +X1020041Y170354D01* +X1020015Y170434D01* +X1019999Y170517D01* +X1019972Y170569D01* +X1019954Y170625D01* +X1019914Y170681D01* +X1019868Y170769D01* +X1019799Y170842D01* +X1019759Y170898D01* +X1018691Y171966D01* +X1017805Y174103D01* +X1017805Y176343D01* +X1017793Y176429D01* +X1017790Y176517D01* +X1017773Y176569D01* +X1017765Y176624D01* +X1017730Y176704D01* +X1017703Y176787D01* +X1017675Y176826D01* +X1017649Y176884D01* +X1017594Y176948D01* +X1017569Y176991D01* +X1017534Y177024D01* +X1017508Y177061D01* +X1001827Y192742D01* +X1001757Y192794D01* +X1001693Y192854D01* +X1001643Y192880D01* +X1001599Y192913D01* +X1001518Y192944D01* +X1001440Y192984D01* +X1001392Y192992D01* +X1001334Y193014D01* +X1001186Y193026D01* +X1001109Y193039D01* +X610267Y193039D01* +X610181Y193027D01* +X610093Y193024D01* +X610041Y193007D01* +X609986Y192999D01* +X609906Y192964D01* +X609823Y192937D01* +X609784Y192909D01* +X609726Y192883D01* +X609613Y192787D01* +X609549Y192742D01* +X576668Y159860D01* +X508395Y159860D01* +X508308Y159848D01* +X508221Y159845D01* +X508168Y159828D01* +X508114Y159820D01* +X508034Y159784D01* +X507951Y159758D01* +X507911Y159730D01* +X507854Y159704D01* +X507741Y159608D01* +X507677Y159563D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X496985Y161752D01* +X496985Y164065D01* +X497871Y166203D01* +X499506Y167838D01* +X501643Y168724D01* +X503957Y168724D01* +X506094Y167838D01* +X507677Y166255D01* +X507747Y166202D01* +X507811Y166142D01* +X507860Y166117D01* +X507904Y166084D01* +X507986Y166053D01* +X508064Y166013D01* +X508112Y166005D01* +X508170Y165983D01* +X508318Y165971D01* +X508395Y165958D01* +X573721Y165958D01* +X573808Y165970D01* +X573895Y165973D01* +X573948Y165990D01* +X574003Y165997D01* +X574083Y166033D01* +X574166Y166060D01* +X574205Y166088D01* +X574262Y166114D01* +X574376Y166210D01* +X574439Y166255D01* +X607321Y199137D01* +X1004055Y199137D01* +X1006138Y197054D01* +X1006138Y197053D01* +X1021819Y181372D01* +X1021889Y181320D01* +X1021953Y181260D01* +X1022003Y181234D01* +X1022047Y181201D01* +X1022128Y181170D01* +X1022206Y181130D01* +X1022254Y181122D01* +X1022312Y181100D01* +X1022460Y181088D01* +X1022537Y181075D01* +X1024777Y181075D01* +X1026914Y180189D01* +X1028549Y178554D01* +X1029435Y176417D01* +X1029435Y174103D01* +X1028549Y171966D01* +X1027481Y170898D01* +X1027446Y170851D01* +X1027404Y170811D01* +X1027361Y170738D01* +X1027310Y170671D01* +X1027289Y170616D01* +X1027260Y170566D01* +X1027239Y170484D01* +X1027209Y170405D01* +X1027204Y170347D01* +X1027190Y170290D01* +X1027192Y170206D01* +X1027185Y170122D01* +X1027197Y170064D01* +X1027199Y170006D01* +X1027225Y169926D01* +X1027241Y169843D01* +X1027268Y169791D01* +X1027286Y169735D01* +X1027326Y169679D01* +X1027372Y169591D01* +X1027441Y169518D01* +X1027481Y169462D01* +X1028549Y168394D01* +X1029435Y166257D01* +X1029435Y164017D01* +X1029447Y163931D01* +X1029450Y163843D01* +X1029467Y163791D01* +X1029475Y163736D01* +X1029510Y163656D01* +X1029537Y163573D01* +X1029565Y163534D01* +X1029591Y163476D01* +X1029687Y163363D01* +X1029732Y163299D01* +X1029891Y163140D01* +X1029961Y163088D01* +X1030025Y163028D01* +X1030075Y163002D01* +X1030119Y162969D01* +X1030200Y162938D01* +X1030278Y162898D01* +X1030326Y162890D01* +X1030384Y162868D01* +X1030532Y162856D01* +X1030609Y162843D01* +X1070423Y162843D01* +X1070452Y162847D01* +X1070481Y162844D01* +X1070592Y162867D01* +X1070704Y162883D01* +X1070731Y162895D01* +X1070760Y162900D01* +X1070860Y162952D01* +X1070964Y162999D01* +X1070986Y163018D01* +X1071012Y163031D01* +X1071094Y163109D01* +X1071181Y163182D01* +X1071197Y163207D01* +X1071218Y163227D01* +X1071275Y163325D01* +X1071338Y163419D01* +X1071347Y163447D01* +X1071362Y163472D01* +X1071390Y163582D01* +X1071424Y163690D01* +X1071425Y163720D01* +X1071432Y163748D01* +X1071428Y163861D01* +X1071431Y163974D01* +X1071424Y164003D01* +X1071423Y164032D01* +X1071388Y164140D01* +X1071359Y164249D01* +X1071344Y164275D01* +X1071335Y164303D01* +X1071290Y164366D01* +X1071214Y164494D01* +X1071169Y164537D01* +X1071141Y164576D01* +X1033831Y201886D01* +X1033761Y201938D01* +X1033697Y201998D01* +X1033647Y202024D01* +X1033603Y202057D01* +X1033522Y202088D01* +X1033444Y202128D01* +X1033396Y202136D01* +X1033338Y202158D01* +X1033190Y202170D01* +X1033113Y202183D01* +X598075Y202183D01* +X597989Y202171D01* +X597901Y202168D01* +X597849Y202151D01* +X597794Y202143D01* +X597714Y202108D01* +X597631Y202081D01* +X597592Y202053D01* +X597534Y202027D01* +X597421Y201931D01* +X597357Y201886D01* +X587495Y192023D01* +X560585Y192023D01* +X555521Y197088D01* +X555451Y197140D01* +X555387Y197200D01* +X555337Y197226D01* +X555293Y197259D01* +X555212Y197290D01* +X555134Y197330D01* +X555086Y197338D01* +X555028Y197360D01* +X554880Y197372D01* +X554803Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548791Y199906D01* +X547905Y202043D01* +X547905Y204357D01* +X548791Y206494D01* +X550426Y208129D01* +X552563Y209015D01* +X554877Y209015D01* +X557181Y208060D01* +X557209Y208053D01* +X557235Y208040D01* +X557346Y208018D01* +X557456Y207989D01* +X557485Y207990D01* +X557514Y207985D01* +X557627Y207994D01* +X557740Y207998D01* +X557768Y208007D01* +X557797Y208009D01* +X557903Y208050D01* +X558011Y208084D01* +X558035Y208101D01* +X558062Y208111D01* +X558153Y208180D01* +X558247Y208243D01* +X558266Y208265D01* +X558289Y208283D01* +X558357Y208373D01* +X558430Y208460D01* +X558442Y208487D01* +X558459Y208510D01* +X558499Y208617D01* +X558545Y208720D01* +X558549Y208749D01* +X558560Y208776D01* +X558569Y208889D01* +X558584Y209001D01* +X558580Y209030D01* +X558582Y209060D01* +X558565Y209136D01* +X558544Y209283D01* +X558518Y209340D01* +X558507Y209387D01* +X558065Y210453D01* +X558065Y212767D01* +X558951Y214904D01* +X560586Y216539D01* +X562723Y217425D01* +X564737Y217425D01* +X564766Y217429D01* +X564795Y217426D01* +X564906Y217449D01* +X565018Y217465D01* +X565045Y217477D01* +X565074Y217482D01* +X565174Y217535D01* +X565278Y217581D01* +X565300Y217600D01* +X565326Y217613D01* +X565408Y217691D01* +X565495Y217764D01* +X565511Y217789D01* +X565532Y217809D01* +X565589Y217907D01* +X565652Y218001D01* +X565661Y218029D01* +X565676Y218054D01* +X565704Y218164D01* +X565738Y218272D01* +X565739Y218302D01* +X565746Y218330D01* +X565742Y218443D01* +X565745Y218556D01* +X565738Y218585D01* +X565737Y218614D01* +X565702Y218722D01* +X565673Y218831D01* +X565659Y218857D01* +X565649Y218885D01* +X565604Y218949D01* +X565528Y219076D01* +X565483Y219119D01* +X565455Y219158D01* +X564090Y220523D01* +X557581Y227032D01* +X557511Y227084D01* +X557447Y227144D01* +X557397Y227170D01* +X557353Y227203D01* +X557272Y227234D01* +X557194Y227274D01* +X557146Y227282D01* +X557088Y227304D01* +X556940Y227316D01* +X556863Y227329D01* +X535845Y227329D01* +X535759Y227317D01* +X535671Y227314D01* +X535619Y227297D01* +X535564Y227289D01* +X535484Y227254D01* +X535401Y227227D01* +X535362Y227199D01* +X535304Y227173D01* +X535191Y227077D01* +X535127Y227032D01* +X523487Y215391D01* +X501149Y215391D01* +X491481Y225059D01* +X491411Y225112D01* +X491347Y225172D01* +X491298Y225197D01* +X491254Y225230D01* +X491172Y225261D01* +X491094Y225301D01* +X491047Y225309D01* +X490988Y225332D01* +X490840Y225344D01* +X490763Y225357D01* +X489032Y225357D01* +X486895Y226242D01* +X485259Y227878D01* +X484374Y230015D01* +X484374Y231930D01* +X484366Y231988D01* +X484367Y232046D01* +X484346Y232128D01* +X484334Y232212D01* +X484310Y232265D01* +X484295Y232321D01* +X484252Y232394D01* +X484218Y232471D01* +X484180Y232516D01* +X484150Y232566D01* +X484088Y232624D01* +X484034Y232688D01* +X483985Y232720D01* +X483943Y232760D01* +X483868Y232799D01* +X483797Y232846D01* +X483742Y232863D01* +X483690Y232890D01* +X483621Y232901D01* +X483526Y232931D01* +X483427Y232934D01* +X483358Y232945D01* +X481443Y232945D01* +X479306Y233831D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X481443Y244575D01* +X483757Y244575D01* +X485894Y243689D01* +X487477Y242106D01* +X487547Y242054D01* +X487611Y241994D01* +X487660Y241968D01* +X487704Y241935D01* +X487786Y241904D01* +X487864Y241864D01* +X487912Y241856D01* +X487970Y241834D01* +X488118Y241822D01* +X488195Y241809D01* +X503167Y241809D01* +X514045Y230930D01* +X514115Y230878D01* +X514179Y230818D01* +X514229Y230792D01* +X514273Y230759D01* +X514354Y230728D01* +X514432Y230688D01* +X514480Y230680D01* +X514538Y230658D01* +X514686Y230646D01* +X514763Y230633D01* +X516477Y230633D01* +X516563Y230645D01* +X516651Y230648D01* +X516703Y230665D01* +X516758Y230673D01* +X516838Y230708D01* +X516921Y230735D01* +X516960Y230763D01* +X517018Y230789D01* +X517131Y230885D01* +X517195Y230930D01* +X518211Y231946D01* +X518228Y231970D01* +X518251Y231989D01* +X518313Y232083D01* +X518381Y232173D01* +X518392Y232201D01* +X518408Y232225D01* +X518442Y232333D01* +X518483Y232439D01* +X518485Y232468D01* +X518494Y232496D01* +X518497Y232610D01* +X518506Y232722D01* +X518501Y232751D01* +X518501Y232780D01* +X518473Y232890D01* +X518450Y233001D01* +X518437Y233027D01* +X518429Y233055D01* +X518372Y233153D01* +X518319Y233253D01* +X518299Y233275D01* +X518284Y233300D01* +X518202Y233377D01* +X518124Y233459D01* +X518098Y233474D01* +X518077Y233494D01* +X517976Y233546D01* +X517878Y233603D01* +X517850Y233610D01* +X517824Y233624D01* +X517746Y233637D01* +X517603Y233673D01* +X517540Y233671D01* +X517493Y233679D01* +X517003Y233679D01* +X514866Y234565D01* +X513231Y236200D01* +X512345Y238337D01* +X512345Y240651D01* +X513231Y242788D01* +X514866Y244423D01* +X517003Y245309D01* +X519243Y245309D01* +X519329Y245321D01* +X519417Y245324D01* +X519469Y245341D01* +X519524Y245349D01* +X519604Y245384D01* +X519687Y245411D01* +X519726Y245439D01* +X519784Y245465D01* +X519897Y245561D01* +X519961Y245606D01* +X521977Y247623D01* +X563901Y247623D01* +X574497Y237026D01* +X574567Y236974D01* +X574631Y236914D01* +X574681Y236888D01* +X574725Y236855D01* +X574806Y236824D01* +X574884Y236784D01* +X574932Y236776D01* +X574990Y236754D01* +X575138Y236742D01* +X575215Y236729D01* +X862841Y236729D01* +X862955Y236745D01* +X863069Y236755D01* +X863095Y236765D01* +X863123Y236769D01* +X863227Y236816D01* +X863335Y236857D01* +X863357Y236873D01* +X863382Y236885D01* +X863470Y236959D01* +X863561Y237028D01* +X863578Y237051D01* +X863599Y237068D01* +X863663Y237164D01* +X863731Y237256D01* +X863741Y237282D01* +X863757Y237305D01* +X863791Y237415D01* +X863832Y237522D01* +X863834Y237550D01* +X863842Y237576D01* +X863845Y237691D01* +X863854Y237805D01* +X863849Y237830D01* +X863850Y237860D01* +X863783Y238117D01* +X863779Y238133D01* +X862975Y240073D01* +X862975Y242296D01* +X863826Y244350D01* +X865398Y245922D01* +X867453Y246773D01* +X869676Y246773D01* +X871730Y245922D01* +X873302Y244350D01* +X874153Y242296D01* +X874153Y240073D01* +X873349Y238133D01* +X873321Y238021D01* +X873286Y237912D01* +X873285Y237884D01* +X873278Y237857D01* +X873282Y237743D01* +X873279Y237628D01* +X873286Y237601D01* +X873287Y237573D01* +X873322Y237464D01* +X873351Y237353D01* +X873365Y237329D01* +X873373Y237302D01* +X873437Y237207D01* +X873496Y237108D01* +X873516Y237089D01* +X873531Y237066D01* +X873619Y236992D01* +X873703Y236914D01* +X873728Y236901D01* +X873749Y236883D01* +X873854Y236837D01* +X873956Y236784D01* +X873981Y236780D01* +X874009Y236768D01* +X874273Y236731D01* +X874287Y236729D01* +X933880Y236729D01* +X933994Y236745D01* +X934108Y236755D01* +X934134Y236765D01* +X934162Y236769D01* +X934267Y236816D01* +X934374Y236857D01* +X934396Y236873D01* +X934421Y236885D01* +X934509Y236959D01* +X934600Y237028D01* +X934617Y237051D01* +X934638Y237068D01* +X934702Y237164D01* +X934771Y237256D01* +X934780Y237282D01* +X934796Y237305D01* +X934830Y237415D01* +X934871Y237522D01* +X934873Y237550D01* +X934882Y237576D01* +X934884Y237691D01* +X934894Y237805D01* +X934888Y237830D01* +X934889Y237860D01* +X934822Y238117D01* +X934818Y238133D01* +X933985Y240143D01* +X933985Y242457D01* +X934871Y244594D01* +X936506Y246229D01* +X938643Y247115D01* +X940957Y247115D01* +X943094Y246229D01* +X944729Y244594D01* +X945615Y242457D01* +X945615Y240143D01* +X944782Y238133D01* +X944753Y238021D01* +X944718Y237912D01* +X944718Y237884D01* +X944711Y237857D01* +X944714Y237743D01* +X944711Y237628D01* +X944718Y237601D01* +X944719Y237573D01* +X944754Y237464D01* +X944783Y237353D01* +X944797Y237329D01* +X944806Y237302D01* +X944870Y237207D01* +X944928Y237108D01* +X944949Y237089D01* +X944964Y237066D01* +X945052Y236992D01* +X945136Y236914D01* +X945160Y236901D01* +X945182Y236883D01* +X945286Y236837D01* +X945389Y236784D01* +X945413Y236780D01* +X945441Y236768D01* +X945705Y236731D01* +X945720Y236729D01* +X954200Y236729D01* +X954314Y236745D01* +X954428Y236755D01* +X954454Y236765D01* +X954482Y236769D01* +X954587Y236816D01* +X954694Y236857D01* +X954716Y236873D01* +X954741Y236885D01* +X954829Y236959D01* +X954920Y237028D01* +X954937Y237051D01* +X954958Y237068D01* +X955022Y237164D01* +X955091Y237256D01* +X955100Y237282D01* +X955116Y237305D01* +X955150Y237415D01* +X955191Y237522D01* +X955193Y237550D01* +X955202Y237576D01* +X955204Y237691D01* +X955214Y237805D01* +X955208Y237830D01* +X955209Y237860D01* +X955142Y238117D01* +X955138Y238133D01* +X954305Y240143D01* +X954305Y242457D01* +X955191Y244594D01* +X956826Y246229D01* +X958963Y247115D01* +X961277Y247115D01* +X963414Y246229D01* +X965049Y244594D01* +X965935Y242457D01* +X965935Y240143D01* +X965102Y238133D01* +X965073Y238021D01* +X965038Y237912D01* +X965038Y237884D01* +X965031Y237857D01* +X965034Y237743D01* +X965031Y237628D01* +X965038Y237601D01* +X965039Y237573D01* +X965074Y237464D01* +X965103Y237353D01* +X965117Y237329D01* +X965126Y237302D01* +X965190Y237207D01* +X965248Y237108D01* +X965268Y237089D01* +X965284Y237066D01* +X965372Y236992D01* +X965456Y236914D01* +X965480Y236901D01* +X965501Y236883D01* +X965606Y236837D01* +X965709Y236784D01* +X965733Y236780D01* +X965761Y236768D01* +X966025Y236731D01* +X966040Y236729D01* +X1146397Y236729D01* +X1146483Y236741D01* +X1146571Y236744D01* +X1146623Y236761D01* +X1146678Y236769D01* +X1146758Y236804D01* +X1146841Y236831D01* +X1146880Y236859D01* +X1146938Y236885D01* +X1147051Y236981D01* +X1147115Y237026D01* +X1187688Y277599D01* +X1187740Y277669D01* +X1187800Y277733D01* +X1187826Y277783D01* +X1187859Y277827D01* +X1187890Y277908D01* +X1187930Y277986D01* +X1187938Y278034D01* +X1187960Y278092D01* +X1187972Y278240D01* +X1187985Y278317D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194957Y285215D01* +X1197094Y284329D01* +X1198729Y282694D01* +X1199212Y281529D01* +X1199227Y281504D01* +X1199236Y281476D01* +X1199299Y281381D01* +X1199357Y281284D01* +X1199378Y281264D01* +X1199394Y281239D01* +X1199481Y281167D01* +X1199563Y281089D01* +X1199589Y281075D01* +X1199612Y281057D01* +X1199715Y281011D01* +X1199816Y280959D01* +X1199845Y280953D01* +X1199872Y280941D01* +X1199984Y280925D01* +X1200095Y280904D01* +X1200124Y280906D01* +X1200153Y280902D01* +X1200265Y280918D01* +X1200378Y280928D01* +X1200406Y280939D01* +X1200434Y280943D01* +X1200537Y280989D01* +X1200643Y281030D01* +X1200667Y281048D01* +X1200694Y281060D01* +X1200780Y281133D01* +X1200870Y281202D01* +X1200888Y281225D01* +X1200910Y281244D01* +X1200952Y281311D01* +X1201040Y281429D01* +X1201058Y281476D01* +X1201075Y281502D01* +X1201079Y281515D01* +X1201088Y281529D01* +X1201571Y282694D01* +X1203206Y284329D01* +X1205343Y285215D01* +X1207657Y285215D01* +X1209794Y284329D01* +X1211429Y282694D01* +X1212315Y280557D01* +X1212315Y278243D01* +X1211429Y276106D01* +X1209794Y274471D01* +X1207657Y273585D01* +X1205417Y273585D01* +X1205331Y273573D01* +X1205243Y273570D01* +X1205191Y273553D01* +X1205136Y273545D01* +X1205056Y273510D01* +X1204973Y273483D01* +X1204934Y273455D01* +X1204876Y273429D01* +X1204763Y273333D01* +X1204699Y273288D01* +X1161745Y230334D01* +X1161728Y230310D01* +X1161705Y230291D01* +X1161643Y230197D01* +X1161575Y230107D01* +X1161564Y230079D01* +X1161548Y230055D01* +X1161514Y229947D01* +X1161473Y229841D01* +X1161471Y229812D01* +X1161462Y229784D01* +X1161459Y229670D01* +X1161450Y229558D01* +X1161455Y229529D01* +X1161455Y229500D01* +X1161483Y229390D01* +X1161506Y229279D01* +X1161519Y229253D01* +X1161527Y229225D01* +X1161584Y229127D01* +X1161637Y229027D01* +X1161657Y229005D01* +X1161672Y228980D01* +X1161754Y228903D01* +X1161832Y228821D01* +X1161858Y228806D01* +X1161879Y228786D01* +X1161980Y228734D01* +X1162078Y228677D01* +X1162106Y228670D01* +X1162132Y228656D01* +X1162210Y228643D01* +X1162353Y228607D01* +X1162416Y228609D01* +X1162463Y228601D01* +X1189069Y228601D01* +X1189155Y228613D01* +X1189243Y228616D01* +X1189295Y228633D01* +X1189350Y228641D01* +X1189430Y228676D01* +X1189513Y228703D01* +X1189552Y228731D01* +X1189610Y228757D01* +X1189723Y228853D01* +X1189787Y228898D01* +X1200388Y239499D01* +X1200440Y239569D01* +X1200500Y239633D01* +X1200526Y239683D01* +X1200559Y239727D01* +X1200590Y239808D01* +X1200630Y239886D01* +X1200638Y239934D01* +X1200660Y239992D01* +X1200672Y240140D01* +X1200685Y240217D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1211429Y244594D01* +X1212315Y242457D01* +X1212315Y240143D01* +X1211429Y238006D01* +X1209794Y236371D01* +X1207657Y235485D01* +X1205417Y235485D01* +X1205331Y235473D01* +X1205243Y235470D01* +X1205191Y235453D01* +X1205136Y235445D01* +X1205056Y235410D01* +X1204973Y235383D01* +X1204934Y235355D01* +X1204876Y235329D01* +X1204763Y235233D01* +X1204699Y235188D01* +X1194098Y224587D01* +X1192813Y223302D01* +X1192778Y223255D01* +X1192736Y223215D01* +X1192693Y223142D01* +X1192642Y223074D01* +X1192621Y223020D01* +X1192592Y222969D01* +X1192571Y222888D01* +X1192541Y222809D01* +X1192536Y222750D01* +X1192522Y222694D01* +X1192524Y222610D01* +X1192517Y222525D01* +X1192529Y222468D01* +X1192531Y222410D01* +X1192557Y222329D01* +X1192573Y222247D01* +X1192600Y222195D01* +X1192618Y222139D01* +X1192658Y222083D01* +X1192704Y221994D01* +X1192773Y221922D01* +X1192813Y221866D01* +X1192893Y221786D01* +X1192963Y221734D01* +X1193027Y221674D01* +X1193076Y221648D01* +X1193120Y221615D01* +X1193202Y221584D01* +X1193280Y221544D01* +X1193327Y221536D01* +X1193386Y221514D01* +X1193533Y221502D01* +X1193611Y221489D01* +X1200905Y221489D01* +X1200992Y221501D01* +X1201079Y221504D01* +X1201132Y221521D01* +X1201186Y221529D01* +X1201266Y221564D01* +X1201350Y221591D01* +X1201389Y221619D01* +X1201446Y221645D01* +X1201559Y221741D01* +X1201623Y221786D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209794Y223369D01* +X1211429Y221734D01* +X1212315Y219597D01* +X1212315Y217283D01* +X1211429Y215146D01* +X1209794Y213511D01* +X1207657Y212625D01* +X1205343Y212625D01* +X1203206Y213511D01* +X1201623Y215094D01* +X1201553Y215146D01* +X1201489Y215206D01* +X1201440Y215232D01* +X1201396Y215265D01* +X1201314Y215296D01* +X1201236Y215336D01* +X1201189Y215344D01* +X1201130Y215366D01* +X1200982Y215378D01* +X1200905Y215391D01* +X1195991Y215391D01* +X1195962Y215387D01* +X1195933Y215390D01* +X1195822Y215367D01* +X1195710Y215351D01* +X1195683Y215339D01* +X1195654Y215334D01* +X1195554Y215282D01* +X1195450Y215235D01* +X1195428Y215216D01* +X1195402Y215203D01* +X1195320Y215125D01* +X1195233Y215052D01* +X1195217Y215027D01* +X1195196Y215007D01* +X1195139Y214909D01* +X1195076Y214815D01* +X1195067Y214787D01* +X1195052Y214762D01* +X1195024Y214652D01* +X1194990Y214544D01* +X1194989Y214514D01* +X1194982Y214486D01* +X1194986Y214373D01* +X1194983Y214260D01* +X1194990Y214231D01* +X1194991Y214202D01* +X1195026Y214094D01* +X1195055Y213985D01* +X1195070Y213959D01* +X1195079Y213931D01* +X1195124Y213868D01* +X1195200Y213740D01* +X1195245Y213697D01* +X1195273Y213658D01* +X1201286Y207645D01* +X1201333Y207610D01* +X1201373Y207568D01* +X1201446Y207525D01* +X1201513Y207474D01* +X1201568Y207454D01* +X1201619Y207424D01* +X1201700Y207403D01* +X1201779Y207373D01* +X1201837Y207368D01* +X1201894Y207354D01* +X1201978Y207357D01* +X1202062Y207350D01* +X1202120Y207361D01* +X1202178Y207363D01* +X1202258Y207389D01* +X1202341Y207405D01* +X1202393Y207432D01* +X1202449Y207450D01* +X1202505Y207491D01* +X1202593Y207536D01* +X1202666Y207605D01* +X1202722Y207645D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1211429Y206494D01* +X1212315Y204357D01* +X1212315Y202043D01* +X1211429Y199906D01* +X1209794Y198271D01* +X1207657Y197385D01* +X1205343Y197385D01* +X1203206Y198271D01* +X1201623Y199854D01* +X1201553Y199906D01* +X1201489Y199966D01* +X1201440Y199992D01* +X1201396Y200025D01* +X1201314Y200056D01* +X1201236Y200096D01* +X1201188Y200104D01* +X1201130Y200126D01* +X1200982Y200138D01* +X1200905Y200151D01* +X1200157Y200151D01* +X1186231Y214078D01* +X1186161Y214130D01* +X1186097Y214190D01* +X1186047Y214216D01* +X1186003Y214249D01* +X1185922Y214280D01* +X1185844Y214320D01* +X1185796Y214328D01* +X1185738Y214350D01* +X1185590Y214362D01* +X1185513Y214375D01* +X1044607Y214375D01* +X1044578Y214371D01* +X1044549Y214374D01* +X1044438Y214351D01* +X1044326Y214335D01* +X1044299Y214323D01* +X1044270Y214318D01* +X1044170Y214266D01* +X1044066Y214219D01* +X1044044Y214200D01* +X1044018Y214187D01* +X1043936Y214109D01* +X1043849Y214036D01* +X1043833Y214011D01* +X1043812Y213991D01* +X1043755Y213893D01* +X1043692Y213799D01* +X1043683Y213771D01* +X1043668Y213746D01* +X1043640Y213636D01* +X1043606Y213528D01* +X1043605Y213498D01* +X1043598Y213470D01* +X1043602Y213357D01* +X1043599Y213244D01* +X1043606Y213215D01* +X1043607Y213186D01* +X1043642Y213078D01* +X1043671Y212969D01* +X1043686Y212943D01* +X1043695Y212915D01* +X1043740Y212852D01* +X1043816Y212724D01* +X1043861Y212681D01* +X1043889Y212642D01* +X1062685Y193846D01* +X1062755Y193794D01* +X1062819Y193734D01* +X1062869Y193708D01* +X1062913Y193675D01* +X1062994Y193644D01* +X1063072Y193604D01* +X1063120Y193596D01* +X1063178Y193574D01* +X1063326Y193562D01* +X1063403Y193549D01* +X1068825Y193549D01* +X1068912Y193561D01* +X1068999Y193564D01* +X1069052Y193581D01* +X1069106Y193589D01* +X1069186Y193624D01* +X1069269Y193651D01* +X1069309Y193679D01* +X1069366Y193705D01* +X1069479Y193801D01* +X1069543Y193846D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076076Y184688D01* +X1076030Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183895D01* +X1075963Y183865D01* +X1076009Y183762D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173852D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080724Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085334Y172569D01* +X1086969Y170934D01* +X1087855Y168797D01* +X1087855Y166483D01* +X1086928Y164247D01* +X1086900Y164135D01* +X1086865Y164026D01* +X1086864Y163998D01* +X1086857Y163971D01* +X1086861Y163857D01* +X1086858Y163742D01* +X1086865Y163715D01* +X1086865Y163687D01* +X1086900Y163578D01* +X1086929Y163467D01* +X1086944Y163443D01* +X1086952Y163416D01* +X1087016Y163321D01* +X1087075Y163222D01* +X1087095Y163203D01* +X1087110Y163180D01* +X1087198Y163106D01* +X1087282Y163028D01* +X1087307Y163015D01* +X1087328Y162997D01* +X1087433Y162951D01* +X1087535Y162898D01* +X1087560Y162894D01* +X1087588Y162882D01* +X1087851Y162845D01* +X1087866Y162843D01* +X1109793Y162843D01* +X1109879Y162855D01* +X1109967Y162858D01* +X1110019Y162875D01* +X1110074Y162883D01* +X1110154Y162918D01* +X1110237Y162945D01* +X1110276Y162973D01* +X1110334Y162999D01* +X1110447Y163095D01* +X1110511Y163140D01* +X1130759Y183389D01* +X1200905Y183389D01* +X1200992Y183401D01* +X1201079Y183404D01* +X1201132Y183421D01* +X1201186Y183429D01* +X1201266Y183464D01* +X1201349Y183491D01* +X1201389Y183519D01* +X1201446Y183545D01* +X1201559Y183641D01* +X1201623Y183686D01* +X1203206Y185269D01* +X1205343Y186155D01* +X1207657Y186155D01* +X1209794Y185269D01* +X1211429Y183634D01* +X1212315Y181497D01* +X1212315Y179183D01* +X1211429Y177046D01* +X1209794Y175411D01* +X1207657Y174525D01* +X1206377Y174525D01* +X1206348Y174521D01* +X1206319Y174524D01* +X1206208Y174501D01* +X1206096Y174485D01* +X1206069Y174473D01* +X1206040Y174468D01* +X1205940Y174416D01* +X1205836Y174369D01* +X1205814Y174350D01* +X1205788Y174337D01* +X1205706Y174259D01* +X1205619Y174186D01* +X1205603Y174161D01* +X1205582Y174141D01* +X1205525Y174043D01* +X1205462Y173949D01* +X1205453Y173921D01* +X1205438Y173896D01* +X1205410Y173786D01* +X1205376Y173678D01* +X1205375Y173648D01* +X1205368Y173620D01* +X1205372Y173507D01* +X1205369Y173394D01* +X1205376Y173365D01* +X1205377Y173336D01* +X1205412Y173228D01* +X1205441Y173119D01* +X1205456Y173093D01* +X1205465Y173065D01* +X1205510Y173002D01* +X1205586Y172874D01* +X1205631Y172831D01* +X1205659Y172792D01* +X1225197Y153255D01* +X1225197Y127515D01* +X1225209Y127428D01* +X1225212Y127341D01* +X1225229Y127288D01* +X1225237Y127234D01* +X1225272Y127154D01* +X1225299Y127071D01* +X1225327Y127031D01* +X1225353Y126974D01* +X1225449Y126861D01* +X1225494Y126797D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +G37* +%LPD*% +%LPC*% +G36* +X709027Y65277D02* +X709027Y65277D01* +X705013Y66940D01* +X701940Y70013D01* +X700277Y74027D01* +X700277Y78373D01* +X701940Y82387D01* +X705013Y85460D01* +X705535Y85676D01* +X705609Y85720D01* +X705687Y85755D01* +X705731Y85792D01* +X705780Y85821D01* +X705839Y85883D01* +X705904Y85939D01* +X705936Y85986D01* +X705975Y86027D01* +X706014Y86104D01* +X706062Y86175D01* +X706079Y86229D01* +X706105Y86280D01* +X706122Y86364D01* +X706148Y86446D01* +X706149Y86503D01* +X706160Y86559D01* +X706153Y86644D01* +X706155Y86730D01* +X706140Y86785D01* +X706136Y86842D01* +X706105Y86922D01* +X706083Y87005D01* +X706054Y87054D01* +X706034Y87107D01* +X705982Y87176D01* +X705938Y87250D01* +X705896Y87289D01* +X705862Y87334D01* +X705793Y87386D01* +X705730Y87444D01* +X705680Y87470D01* +X705634Y87504D01* +X705554Y87535D01* +X705477Y87574D01* +X705429Y87582D01* +X705368Y87605D01* +X705224Y87616D01* +X705146Y87629D01* +X533400Y87629D01* +X533342Y87621D01* +X533284Y87623D01* +X533202Y87601D01* +X533118Y87589D01* +X533065Y87566D01* +X533009Y87551D01* +X532936Y87508D01* +X532859Y87473D01* +X532814Y87435D01* +X532764Y87406D01* +X532706Y87344D01* +X532642Y87290D01* +X532610Y87241D01* +X532570Y87198D01* +X532531Y87123D01* +X532484Y87053D01* +X532467Y86997D01* +X532440Y86945D01* +X532429Y86877D01* +X532399Y86782D01* +X532396Y86682D01* +X532385Y86614D01* +X532385Y85859D01* +X532397Y85772D01* +X532400Y85685D01* +X532417Y85632D01* +X532425Y85578D01* +X532460Y85498D01* +X532487Y85415D01* +X532515Y85375D01* +X532541Y85318D01* +X532637Y85205D01* +X532682Y85141D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X523958Y85141D01* +X524010Y85211D01* +X524070Y85275D01* +X524096Y85324D01* +X524129Y85368D01* +X524160Y85450D01* +X524200Y85528D01* +X524208Y85576D01* +X524230Y85634D01* +X524242Y85782D01* +X524255Y85859D01* +X524255Y86614D01* +X524247Y86672D01* +X524249Y86730D01* +X524227Y86812D01* +X524215Y86896D01* +X524192Y86949D01* +X524177Y87005D01* +X524134Y87078D01* +X524099Y87155D01* +X524061Y87200D01* +X524032Y87250D01* +X523970Y87308D01* +X523916Y87372D01* +X523867Y87404D01* +X523824Y87444D01* +X523749Y87483D01* +X523679Y87530D01* +X523623Y87547D01* +X523571Y87574D01* +X523503Y87585D01* +X523408Y87615D01* +X523308Y87618D01* +X523240Y87629D01* +X422148Y87629D01* +X422090Y87621D01* +X422032Y87623D01* +X421950Y87601D01* +X421866Y87589D01* +X421813Y87566D01* +X421757Y87551D01* +X421684Y87508D01* +X421607Y87473D01* +X421562Y87435D01* +X421512Y87406D01* +X421454Y87344D01* +X421390Y87290D01* +X421358Y87241D01* +X421318Y87198D01* +X421279Y87123D01* +X421232Y87053D01* +X421215Y86997D01* +X421188Y86945D01* +X421177Y86877D01* +X421147Y86782D01* +X421144Y86682D01* +X421133Y86614D01* +X421133Y70278D01* +X419942Y69087D01* +X380158Y69087D01* +X378967Y70278D01* +X378967Y110062D01* +X380158Y111253D01* +X399877Y111253D01* +X399964Y111265D01* +X400051Y111268D01* +X400104Y111285D01* +X400158Y111293D01* +X400238Y111328D01* +X400322Y111355D01* +X400361Y111383D01* +X400418Y111409D01* +X400531Y111505D01* +X400595Y111550D01* +X402750Y113706D01* +X402768Y113729D01* +X402790Y113748D01* +X402853Y113842D01* +X402921Y113933D01* +X402932Y113960D01* +X402948Y113985D01* +X402982Y114093D01* +X403022Y114198D01* +X403025Y114228D01* +X403034Y114256D01* +X403037Y114369D01* +X403046Y114482D01* +X403040Y114510D01* +X403041Y114540D01* +X403012Y114649D01* +X402990Y114760D01* +X402977Y114787D01* +X402969Y114815D01* +X402911Y114912D01* +X402859Y115013D01* +X402839Y115034D01* +X402824Y115059D01* +X402741Y115137D01* +X402663Y115219D01* +X402638Y115234D01* +X402617Y115254D01* +X402516Y115305D01* +X402418Y115363D01* +X402390Y115370D01* +X402364Y115383D01* +X402286Y115396D01* +X402143Y115433D01* +X402080Y115431D01* +X402032Y115439D01* +X308130Y115439D01* +X308044Y115426D01* +X307956Y115424D01* +X307904Y115407D01* +X307849Y115399D01* +X307769Y115363D01* +X307686Y115336D01* +X307647Y115308D01* +X307590Y115283D01* +X307476Y115187D01* +X307413Y115141D01* +X275618Y83347D01* +X273377Y82419D01* +X181667Y82419D01* +X179426Y83347D01* +X154851Y107922D01* +X153923Y110163D01* +X153923Y330011D01* +X154851Y332252D01* +X170668Y348069D01* +X172909Y348997D01* +X283153Y348997D01* +X285394Y348069D01* +X330289Y303174D01* +X331217Y300933D01* +X331217Y298507D01* +X330289Y296266D01* +X328574Y294551D01* +X326333Y293623D01* +X323907Y293623D01* +X321666Y294551D01* +X279712Y336506D01* +X279642Y336558D01* +X279578Y336618D01* +X279529Y336644D01* +X279485Y336677D01* +X279403Y336708D01* +X279325Y336748D01* +X279278Y336756D01* +X279219Y336778D01* +X279071Y336790D01* +X278994Y336803D01* +X177068Y336803D01* +X176981Y336791D01* +X176893Y336788D01* +X176841Y336771D01* +X176786Y336763D01* +X176706Y336728D01* +X176623Y336701D01* +X176584Y336673D01* +X176527Y336647D01* +X176413Y336551D01* +X176350Y336506D01* +X166414Y326570D01* +X166362Y326501D01* +X166302Y326437D01* +X166276Y326387D01* +X166243Y326343D01* +X166212Y326261D01* +X166172Y326184D01* +X166164Y326136D01* +X166142Y326078D01* +X166130Y325930D01* +X166117Y325852D01* +X166117Y114321D01* +X166129Y114235D01* +X166132Y114147D01* +X166149Y114095D01* +X166157Y114040D01* +X166192Y113960D01* +X166219Y113877D01* +X166247Y113838D01* +X166273Y113780D01* +X166369Y113667D01* +X166414Y113603D01* +X185108Y94910D01* +X185178Y94857D01* +X185242Y94797D01* +X185291Y94772D01* +X185335Y94739D01* +X185417Y94708D01* +X185495Y94668D01* +X185542Y94660D01* +X185601Y94637D01* +X185749Y94625D01* +X185826Y94612D01* +X269219Y94612D01* +X269305Y94624D01* +X269393Y94627D01* +X269445Y94644D01* +X269500Y94652D01* +X269580Y94688D01* +X269663Y94715D01* +X269702Y94743D01* +X269760Y94768D01* +X269873Y94864D01* +X269937Y94910D01* +X301731Y126704D01* +X303972Y127632D01* +X486491Y127632D01* +X486522Y127636D01* +X486553Y127634D01* +X486630Y127652D01* +X486773Y127672D01* +X486832Y127698D01* +X486880Y127709D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496582Y118499D01* +X496553Y118387D01* +X496518Y118278D01* +X496518Y118250D01* +X496511Y118223D01* +X496514Y118109D01* +X496511Y117994D01* +X496518Y117967D01* +X496519Y117939D01* +X496554Y117830D01* +X496583Y117719D01* +X496597Y117695D01* +X496606Y117668D01* +X496670Y117573D01* +X496728Y117474D01* +X496748Y117455D01* +X496764Y117432D01* +X496852Y117358D01* +X496936Y117280D01* +X496960Y117267D01* +X496981Y117249D01* +X497086Y117203D01* +X497189Y117150D01* +X497213Y117146D01* +X497241Y117134D01* +X497505Y117097D01* +X497520Y117095D01* +X954305Y117095D01* +X954419Y117111D01* +X954534Y117121D01* +X954559Y117131D01* +X954587Y117135D01* +X954692Y117182D01* +X954799Y117223D01* +X954821Y117239D01* +X954846Y117251D01* +X954934Y117325D01* +X955026Y117394D01* +X955042Y117417D01* +X955063Y117434D01* +X955127Y117530D01* +X955196Y117622D01* +X955206Y117648D01* +X955221Y117671D01* +X955256Y117781D01* +X955296Y117888D01* +X955298Y117916D01* +X955307Y117942D01* +X955310Y118057D01* +X955319Y118171D01* +X955313Y118196D01* +X955314Y118226D01* +X955247Y118483D01* +X955243Y118499D01* +X954305Y120763D01* +X954305Y123077D01* +X955191Y125214D01* +X956826Y126849D01* +X958963Y127735D01* +X961277Y127735D01* +X963414Y126849D01* +X965049Y125214D01* +X965935Y123077D01* +X965935Y120763D01* +X965049Y118626D01* +X964232Y117809D01* +X964163Y117717D01* +X964089Y117629D01* +X964078Y117604D01* +X964061Y117582D01* +X964020Y117474D01* +X963974Y117370D01* +X963970Y117342D01* +X963960Y117316D01* +X963951Y117202D01* +X963935Y117088D01* +X963939Y117060D01* +X963937Y117033D01* +X963959Y116920D01* +X963976Y116807D01* +X963987Y116781D01* +X963992Y116754D01* +X964046Y116652D01* +X964093Y116548D01* +X964111Y116527D01* +X964123Y116502D01* +X964203Y116419D01* +X964277Y116331D01* +X964298Y116318D01* +X964319Y116296D01* +X964548Y116161D01* +X964562Y116153D01* +X967703Y114852D01* +X971005Y111550D01* +X971075Y111498D01* +X971139Y111438D01* +X971188Y111412D01* +X971232Y111379D01* +X971314Y111348D01* +X971392Y111308D01* +X971440Y111300D01* +X971498Y111278D01* +X971646Y111266D01* +X971723Y111253D01* +X991442Y111253D01* +X992633Y110062D01* +X992633Y70278D01* +X991442Y69087D01* +X951658Y69087D01* +X950467Y70278D01* +X950467Y86614D01* +X950459Y86672D01* +X950461Y86730D01* +X950439Y86812D01* +X950427Y86896D01* +X950404Y86949D01* +X950389Y87005D01* +X950346Y87078D01* +X950311Y87155D01* +X950273Y87200D01* +X950244Y87250D01* +X950182Y87308D01* +X950128Y87372D01* +X950079Y87404D01* +X950036Y87444D01* +X949961Y87483D01* +X949891Y87530D01* +X949835Y87547D01* +X949783Y87574D01* +X949715Y87585D01* +X949620Y87615D01* +X949520Y87618D01* +X949452Y87629D01* +X836815Y87629D01* +X836702Y87613D01* +X836587Y87603D01* +X836561Y87593D01* +X836534Y87589D01* +X836429Y87542D01* +X836322Y87501D01* +X836300Y87485D01* +X836274Y87473D01* +X836187Y87399D01* +X836095Y87330D01* +X836079Y87307D01* +X836057Y87290D01* +X835994Y87194D01* +X835925Y87102D01* +X835915Y87076D01* +X835900Y87053D01* +X835865Y86943D01* +X835825Y86836D01* +X835822Y86808D01* +X835814Y86782D01* +X835811Y86667D01* +X835802Y86553D01* +X835808Y86528D01* +X835807Y86498D01* +X835874Y86241D01* +X835877Y86225D01* +X836395Y84977D01* +X836395Y82663D01* +X835509Y80526D01* +X833874Y78891D01* +X831737Y78005D01* +X829423Y78005D01* +X827286Y78891D01* +X825651Y80526D01* +X824765Y82663D01* +X824765Y84977D01* +X825283Y86225D01* +X825311Y86337D01* +X825346Y86446D01* +X825347Y86474D01* +X825354Y86501D01* +X825350Y86615D01* +X825353Y86730D01* +X825346Y86757D01* +X825345Y86785D01* +X825310Y86894D01* +X825281Y87005D01* +X825267Y87029D01* +X825259Y87056D01* +X825195Y87151D01* +X825136Y87250D01* +X825116Y87269D01* +X825100Y87292D01* +X825013Y87366D01* +X824929Y87444D01* +X824904Y87457D01* +X824883Y87475D01* +X824778Y87521D01* +X824676Y87574D01* +X824651Y87578D01* +X824623Y87590D01* +X824359Y87627D01* +X824345Y87629D01* +X748716Y87629D01* +X748677Y87624D01* +X748638Y87626D01* +X748537Y87604D01* +X748435Y87589D01* +X748399Y87573D01* +X748361Y87565D01* +X748270Y87516D01* +X748175Y87473D01* +X748145Y87448D01* +X748111Y87429D01* +X748037Y87356D01* +X747958Y87290D01* +X747937Y87257D01* +X747909Y87229D01* +X747858Y87139D01* +X747801Y87053D01* +X747789Y87016D01* +X747770Y86981D01* +X747746Y86881D01* +X747715Y86782D01* +X747714Y86743D01* +X747705Y86705D01* +X747710Y86601D01* +X747708Y86498D01* +X747717Y86460D01* +X747719Y86421D01* +X747747Y86348D01* +X747779Y86223D01* +X747817Y86159D01* +X747837Y86106D01* +X747858Y86071D01* +X748031Y85424D01* +X748031Y78231D01* +X737616Y78231D01* +X737558Y78223D01* +X737500Y78225D01* +X737418Y78203D01* +X737335Y78191D01* +X737281Y78167D01* +X737225Y78153D01* +X737152Y78110D01* +X737075Y78075D01* +X737031Y78037D01* +X736980Y78007D01* +X736923Y77946D01* +X736858Y77891D01* +X736826Y77843D01* +X736786Y77800D01* +X736747Y77725D01* +X736701Y77655D01* +X736683Y77599D01* +X736656Y77547D01* +X736645Y77479D01* +X736615Y77384D01* +X736612Y77284D01* +X736601Y77216D01* +X736601Y76199D01* +X736599Y76199D01* +X736599Y77216D01* +X736591Y77274D01* +X736592Y77332D01* +X736571Y77414D01* +X736559Y77497D01* +X736535Y77551D01* +X736521Y77607D01* +X736478Y77680D01* +X736443Y77757D01* +X736405Y77802D01* +X736375Y77852D01* +X736314Y77910D01* +X736259Y77974D01* +X736211Y78006D01* +X736168Y78046D01* +X736093Y78085D01* +X736023Y78131D01* +X735967Y78149D01* +X735915Y78176D01* +X735847Y78187D01* +X735752Y78217D01* +X735652Y78220D01* +X735584Y78231D01* +X725169Y78231D01* +X725169Y85424D01* +X725342Y86071D01* +X725363Y86106D01* +X725378Y86143D01* +X725399Y86175D01* +X725431Y86274D01* +X725469Y86370D01* +X725473Y86409D01* +X725485Y86446D01* +X725488Y86550D01* +X725498Y86653D01* +X725491Y86691D01* +X725492Y86730D01* +X725466Y86830D01* +X725448Y86932D01* +X725430Y86968D01* +X725421Y87005D01* +X725368Y87094D01* +X725322Y87187D01* +X725295Y87216D01* +X725275Y87250D01* +X725200Y87321D01* +X725130Y87397D01* +X725097Y87418D01* +X725068Y87444D01* +X724976Y87492D01* +X724888Y87546D01* +X724850Y87556D01* +X724815Y87574D01* +X724738Y87587D01* +X724613Y87621D01* +X724539Y87620D01* +X724484Y87629D01* +X717254Y87629D01* +X717169Y87617D01* +X717083Y87615D01* +X717029Y87597D01* +X716972Y87589D01* +X716894Y87554D01* +X716812Y87528D01* +X716765Y87496D01* +X716713Y87473D01* +X716647Y87418D01* +X716576Y87370D01* +X716539Y87326D01* +X716496Y87290D01* +X716448Y87218D01* +X716393Y87152D01* +X716370Y87100D01* +X716338Y87053D01* +X716312Y86971D01* +X716277Y86892D01* +X716270Y86836D01* +X716252Y86782D01* +X716250Y86696D01* +X716239Y86611D01* +X716247Y86555D01* +X716245Y86498D01* +X716267Y86415D01* +X716279Y86329D01* +X716303Y86278D01* +X716317Y86223D01* +X716361Y86149D01* +X716396Y86070D01* +X716433Y86027D01* +X716462Y85978D01* +X716525Y85919D01* +X716581Y85854D01* +X716623Y85828D01* +X716670Y85784D01* +X716799Y85718D01* +X716865Y85676D01* +X717387Y85460D01* +X720460Y82387D01* +X722123Y78373D01* +X722123Y74027D01* +X720460Y70013D01* +X717387Y66940D01* +X713373Y65277D01* +X709027Y65277D01* +G37* +%LPD*% +%LPC*% +G36* +X598177Y258571D02* +X598177Y258571D01* +X517195Y339554D01* +X517125Y339606D01* +X517061Y339666D01* +X517011Y339692D01* +X516967Y339725D01* +X516886Y339756D01* +X516808Y339796D01* +X516760Y339804D01* +X516702Y339826D01* +X516554Y339838D01* +X516477Y339851D01* +X419615Y339851D01* +X419528Y339839D01* +X419441Y339836D01* +X419388Y339819D01* +X419334Y339811D01* +X419254Y339776D01* +X419171Y339749D01* +X419131Y339721D01* +X419074Y339695D01* +X418961Y339599D01* +X418897Y339554D01* +X417314Y337971D01* +X415177Y337085D01* +X413897Y337085D01* +X413868Y337081D01* +X413839Y337084D01* +X413728Y337061D01* +X413616Y337045D01* +X413589Y337033D01* +X413560Y337028D01* +X413460Y336976D01* +X413356Y336929D01* +X413334Y336910D01* +X413308Y336897D01* +X413226Y336819D01* +X413139Y336746D01* +X413123Y336721D01* +X413102Y336701D01* +X413045Y336603D01* +X412982Y336509D01* +X412973Y336481D01* +X412958Y336456D01* +X412930Y336346D01* +X412896Y336238D01* +X412895Y336208D01* +X412888Y336180D01* +X412892Y336067D01* +X412889Y335954D01* +X412896Y335925D01* +X412897Y335896D01* +X412932Y335788D01* +X412961Y335679D01* +X412976Y335653D01* +X412985Y335625D01* +X413030Y335562D01* +X413106Y335434D01* +X413151Y335391D01* +X413179Y335352D01* +X450485Y298047D01* +X450555Y297994D01* +X450619Y297934D01* +X450668Y297909D01* +X450712Y297876D01* +X450794Y297845D01* +X450872Y297805D01* +X450919Y297797D01* +X450978Y297775D01* +X451125Y297762D01* +X451203Y297749D01* +X453111Y297749D01* +X455248Y296864D01* +X456884Y295228D01* +X457769Y293091D01* +X457769Y290778D01* +X456884Y288641D01* +X455248Y287005D01* +X453111Y286120D01* +X450798Y286120D01* +X448661Y287005D01* +X447025Y288641D01* +X446140Y290778D01* +X446140Y293180D01* +X446150Y293218D01* +X446149Y293220D01* +X446150Y293222D01* +X446146Y293357D01* +X446142Y293502D01* +X446141Y293504D01* +X446141Y293506D01* +X446099Y293637D01* +X446055Y293773D01* +X446054Y293775D01* +X446053Y293777D01* +X446043Y293791D01* +X445897Y294009D01* +X445873Y294029D01* +X445859Y294050D01* +X408092Y331816D01* +X408046Y331851D01* +X408005Y331894D01* +X407932Y331937D01* +X407865Y331987D01* +X407810Y332008D01* +X407760Y332038D01* +X407678Y332058D01* +X407599Y332088D01* +X407541Y332093D01* +X407484Y332108D01* +X407400Y332105D01* +X407316Y332112D01* +X407259Y332100D01* +X407200Y332099D01* +X407120Y332073D01* +X407037Y332056D01* +X406985Y332029D01* +X406930Y332011D01* +X406873Y331971D01* +X406785Y331925D01* +X406713Y331856D01* +X406656Y331816D01* +X405191Y330351D01* +X403053Y329465D01* +X400740Y329465D01* +X398603Y330351D01* +X396967Y331986D01* +X396082Y334123D01* +X396082Y336437D01* +X396967Y338574D01* +X398603Y340209D01* +X400740Y341095D01* +X403053Y341095D01* +X405191Y340209D01* +X406774Y338626D01* +X406844Y338574D01* +X406908Y338514D01* +X406957Y338488D01* +X407001Y338455D01* +X407083Y338424D01* +X407161Y338384D01* +X407208Y338376D01* +X407267Y338354D01* +X407415Y338342D01* +X407492Y338329D01* +X408100Y338329D01* +X408214Y338345D01* +X408328Y338355D01* +X408354Y338365D01* +X408382Y338369D01* +X408487Y338416D01* +X408594Y338457D01* +X408616Y338473D01* +X408641Y338485D01* +X408729Y338559D01* +X408820Y338628D01* +X408837Y338651D01* +X408858Y338668D01* +X408922Y338764D01* +X408991Y338856D01* +X409000Y338882D01* +X409016Y338905D01* +X409050Y339015D01* +X409091Y339122D01* +X409093Y339150D01* +X409102Y339176D01* +X409104Y339291D01* +X409114Y339405D01* +X409108Y339430D01* +X409109Y339460D01* +X409042Y339717D01* +X409038Y339733D01* +X408205Y341743D01* +X408205Y344057D01* +X409070Y346143D01* +X409098Y346255D01* +X409133Y346364D01* +X409134Y346392D01* +X409141Y346419D01* +X409137Y346533D01* +X409140Y346648D01* +X409133Y346675D01* +X409132Y346703D01* +X409097Y346812D01* +X409068Y346923D01* +X409054Y346947D01* +X409046Y346974D01* +X408982Y347069D01* +X408923Y347168D01* +X408903Y347187D01* +X408888Y347210D01* +X408800Y347284D01* +X408716Y347362D01* +X408691Y347375D01* +X408670Y347393D01* +X408565Y347439D01* +X408463Y347492D01* +X408438Y347496D01* +X408410Y347508D01* +X408146Y347545D01* +X408132Y347547D01* +X401835Y347547D01* +X401748Y347535D01* +X401661Y347532D01* +X401608Y347515D01* +X401554Y347507D01* +X401474Y347472D01* +X401391Y347445D01* +X401351Y347417D01* +X401294Y347391D01* +X401181Y347295D01* +X401117Y347250D01* +X399534Y345667D01* +X397397Y344781D01* +X395083Y344781D01* +X392946Y345667D01* +X391311Y347302D01* +X390425Y349439D01* +X390425Y351753D01* +X391311Y353890D01* +X392946Y355525D01* +X395083Y356411D01* +X397397Y356411D01* +X399534Y355525D01* +X401117Y353942D01* +X401187Y353890D01* +X401251Y353830D01* +X401300Y353804D01* +X401344Y353771D01* +X401426Y353740D01* +X401504Y353700D01* +X401552Y353692D01* +X401610Y353670D01* +X401758Y353658D01* +X401835Y353645D01* +X519423Y353645D01* +X603811Y269256D01* +X603881Y269204D01* +X603945Y269144D01* +X603995Y269118D01* +X604039Y269085D01* +X604120Y269054D01* +X604198Y269014D01* +X604246Y269006D01* +X604304Y268984D01* +X604452Y268972D01* +X604529Y268959D01* +X855747Y268959D01* +X855776Y268963D01* +X855805Y268960D01* +X855916Y268983D01* +X856028Y268999D01* +X856055Y269011D01* +X856084Y269016D01* +X856185Y269069D01* +X856288Y269115D01* +X856310Y269134D01* +X856336Y269147D01* +X856418Y269225D01* +X856505Y269298D01* +X856521Y269323D01* +X856542Y269343D01* +X856600Y269441D01* +X856662Y269535D01* +X856671Y269563D01* +X856686Y269588D01* +X856714Y269698D01* +X856748Y269806D01* +X856749Y269836D01* +X856756Y269864D01* +X856753Y269977D01* +X856756Y270090D01* +X856748Y270119D01* +X856747Y270148D01* +X856712Y270256D01* +X856684Y270365D01* +X856669Y270391D01* +X856660Y270419D01* +X856614Y270483D01* +X856538Y270610D01* +X856493Y270653D01* +X856465Y270692D01* +X856131Y271026D01* +X855245Y273163D01* +X855245Y275477D01* +X856131Y277614D01* +X857766Y279249D01* +X859903Y280135D01* +X862217Y280135D01* +X864354Y279249D01* +X865989Y277614D01* +X866875Y275477D01* +X866875Y273163D01* +X865989Y271026D01* +X865655Y270692D01* +X865637Y270668D01* +X865615Y270649D01* +X865552Y270555D01* +X865484Y270465D01* +X865474Y270437D01* +X865458Y270413D01* +X865423Y270305D01* +X865383Y270199D01* +X865381Y270170D01* +X865372Y270142D01* +X865369Y270029D01* +X865359Y269916D01* +X865365Y269887D01* +X865364Y269858D01* +X865393Y269748D01* +X865415Y269637D01* +X865429Y269611D01* +X865436Y269583D01* +X865494Y269485D01* +X865546Y269385D01* +X865567Y269363D01* +X865582Y269338D01* +X865664Y269261D01* +X865742Y269179D01* +X865767Y269164D01* +X865789Y269144D01* +X865890Y269092D01* +X865987Y269035D01* +X866016Y269028D01* +X866042Y269014D01* +X866119Y269001D01* +X866263Y268965D01* +X866325Y268967D01* +X866373Y268959D01* +X1140527Y268959D01* +X1140613Y268971D01* +X1140701Y268974D01* +X1140753Y268991D01* +X1140808Y268999D01* +X1140888Y269034D01* +X1140971Y269061D01* +X1141010Y269089D01* +X1141068Y269115D01* +X1141181Y269211D01* +X1141245Y269256D01* +X1151897Y279909D01* +X1160265Y279909D01* +X1160352Y279921D01* +X1160439Y279924D01* +X1160492Y279941D01* +X1160546Y279949D01* +X1160626Y279984D01* +X1160709Y280011D01* +X1160749Y280039D01* +X1160806Y280065D01* +X1160919Y280161D01* +X1160983Y280206D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275703D01* +X1170789Y273566D01* +X1169154Y271931D01* +X1167017Y271045D01* +X1164703Y271045D01* +X1162566Y271931D01* +X1160983Y273514D01* +X1160913Y273566D01* +X1160849Y273626D01* +X1160800Y273652D01* +X1160756Y273685D01* +X1160674Y273716D01* +X1160596Y273756D01* +X1160548Y273764D01* +X1160490Y273786D01* +X1160342Y273798D01* +X1160265Y273811D01* +X1158830Y273811D01* +X1158745Y273799D01* +X1158660Y273797D01* +X1158605Y273779D01* +X1158549Y273771D01* +X1158471Y273736D01* +X1158389Y273710D01* +X1158341Y273678D01* +X1158290Y273655D01* +X1158224Y273600D01* +X1158153Y273552D01* +X1158116Y273508D01* +X1158073Y273472D01* +X1158025Y273400D01* +X1157970Y273334D01* +X1157947Y273282D01* +X1157915Y273235D01* +X1157889Y273153D01* +X1157854Y273074D01* +X1157846Y273018D01* +X1157829Y272964D01* +X1157827Y272878D01* +X1157815Y272793D01* +X1157823Y272737D01* +X1157822Y272680D01* +X1157844Y272597D01* +X1157856Y272511D01* +X1157879Y272460D01* +X1157894Y272405D01* +X1157938Y272331D01* +X1157973Y272252D01* +X1158010Y272209D01* +X1158039Y272160D01* +X1158102Y272101D01* +X1158157Y272036D01* +X1158199Y272010D01* +X1158246Y271966D01* +X1158375Y271900D01* +X1158442Y271858D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265543D01* +X1160629Y263406D01* +X1158994Y261771D01* +X1156857Y260885D01* +X1154617Y260885D01* +X1154531Y260873D01* +X1154443Y260870D01* +X1154391Y260853D01* +X1154336Y260845D01* +X1154256Y260810D01* +X1154173Y260783D01* +X1154134Y260755D01* +X1154076Y260729D01* +X1153963Y260633D01* +X1153899Y260588D01* +X1151883Y258571D01* +X598177Y258571D01* +G37* +%LPD*% +%LPC*% +G36* +X314396Y129666D02* +X314396Y129666D01* +X293984Y150078D01* +X293915Y150130D01* +X293851Y150190D01* +X293801Y150216D01* +X293757Y150249D01* +X293675Y150280D01* +X293597Y150320D01* +X293550Y150328D01* +X293491Y150350D01* +X293344Y150362D01* +X293266Y150375D01* +X289917Y150375D01* +X285902Y152038D01* +X282830Y155111D01* +X281167Y159125D01* +X281167Y163471D01* +X282830Y167485D01* +X285902Y170558D01* +X289917Y172221D01* +X294262Y172221D01* +X298277Y170558D01* +X301349Y167485D01* +X303012Y163471D01* +X303012Y159125D01* +X301349Y155111D01* +X300360Y154121D01* +X300324Y154074D01* +X300282Y154034D01* +X300239Y153961D01* +X300189Y153894D01* +X300168Y153839D01* +X300138Y153788D01* +X300117Y153707D01* +X300087Y153628D01* +X300083Y153570D01* +X300068Y153513D01* +X300071Y153429D01* +X300064Y153345D01* +X300075Y153287D01* +X300077Y153229D01* +X300103Y153149D01* +X300120Y153066D01* +X300147Y153014D01* +X300165Y152958D01* +X300205Y152902D01* +X300251Y152814D01* +X300319Y152741D01* +X300359Y152685D01* +X304834Y148211D01* +X304857Y148193D01* +X304876Y148171D01* +X304928Y148136D01* +X304953Y148113D01* +X304987Y148096D01* +X305061Y148040D01* +X305088Y148029D01* +X305113Y148013D01* +X305221Y147979D01* +X305327Y147939D01* +X305356Y147936D01* +X305384Y147927D01* +X305497Y147924D01* +X305610Y147915D01* +X305639Y147921D01* +X305668Y147920D01* +X305778Y147949D01* +X305889Y147971D01* +X305915Y147984D01* +X305943Y147992D01* +X306040Y148050D01* +X306141Y148102D01* +X306162Y148122D01* +X306187Y148137D01* +X306265Y148220D01* +X306347Y148298D01* +X306362Y148323D01* +X306382Y148344D01* +X306434Y148445D01* +X306491Y148543D01* +X306498Y148571D01* +X306511Y148598D01* +X306524Y148675D01* +X306538Y148728D01* +X306553Y148776D01* +X306553Y148788D01* +X306561Y148819D01* +X306559Y148881D01* +X306567Y148929D01* +X306567Y150771D01* +X308230Y154785D01* +X311302Y157858D01* +X315317Y159521D01* +X319662Y159521D01* +X323677Y157858D01* +X326749Y154785D01* +X328412Y150771D01* +X328412Y146425D01* +X327425Y144040D01* +X327424Y144039D01* +X327423Y144038D01* +X327389Y143905D01* +X327354Y143765D01* +X327354Y143764D01* +X327353Y143762D01* +X327358Y143621D01* +X327362Y143481D01* +X327362Y143480D01* +X327362Y143478D01* +X327406Y143344D01* +X327448Y143210D01* +X327449Y143209D01* +X327450Y143207D01* +X327458Y143195D01* +X327607Y142974D01* +X327630Y142954D01* +X327645Y142934D01* +X329946Y140633D01* +X330015Y140581D01* +X330079Y140521D01* +X330129Y140495D01* +X330173Y140462D01* +X330254Y140431D01* +X330332Y140391D01* +X330380Y140383D01* +X330438Y140361D01* +X330586Y140349D01* +X330663Y140336D01* +X391732Y140336D01* +X391819Y140348D01* +X391906Y140351D01* +X391959Y140368D01* +X392014Y140376D01* +X392094Y140411D01* +X392177Y140438D01* +X392216Y140466D01* +X392273Y140492D01* +X392387Y140588D01* +X392450Y140633D01* +X437228Y185411D01* +X437281Y185481D01* +X437341Y185545D01* +X437366Y185594D01* +X437399Y185638D01* +X437430Y185720D01* +X437470Y185798D01* +X437478Y185845D01* +X437500Y185904D01* +X437512Y186051D01* +X437525Y186129D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y199951D01* +X437513Y200038D01* +X437510Y200125D01* +X437493Y200178D01* +X437486Y200233D01* +X437450Y200313D01* +X437423Y200396D01* +X437395Y200435D01* +X437369Y200492D01* +X437273Y200605D01* +X437228Y200669D01* +X428010Y209887D01* +X427941Y209939D01* +X427877Y209999D01* +X427827Y210025D01* +X427783Y210058D01* +X427701Y210089D01* +X427623Y210129D01* +X427576Y210137D01* +X427517Y210159D01* +X427370Y210171D01* +X427292Y210184D01* +X324601Y210184D01* +X324572Y210180D01* +X324543Y210183D01* +X324432Y210160D01* +X324320Y210144D01* +X324293Y210132D01* +X324264Y210127D01* +X324164Y210074D01* +X324060Y210028D01* +X324038Y210009D01* +X324012Y209996D01* +X323930Y209918D01* +X323843Y209845D01* +X323827Y209820D01* +X323806Y209800D01* +X323749Y209702D01* +X323686Y209608D01* +X323677Y209580D01* +X323662Y209555D01* +X323634Y209445D01* +X323600Y209337D01* +X323599Y209307D01* +X323592Y209279D01* +X323596Y209166D01* +X323593Y209053D01* +X323600Y209024D01* +X323601Y208995D01* +X323636Y208887D01* +X323665Y208778D01* +X323680Y208752D01* +X323689Y208724D01* +X323734Y208661D01* +X323810Y208533D01* +X323855Y208490D01* +X323883Y208451D01* +X326749Y205585D01* +X328412Y201571D01* +X328412Y197225D01* +X326749Y193211D01* +X323677Y190138D01* +X319662Y188475D01* +X315317Y188475D01* +X311302Y190138D01* +X308230Y193211D01* +X306567Y197225D01* +X306567Y201571D01* +X308230Y205585D01* +X310971Y208327D01* +X311006Y208373D01* +X311049Y208414D01* +X311092Y208486D01* +X311142Y208554D01* +X311163Y208608D01* +X311193Y208659D01* +X311213Y208741D01* +X311243Y208820D01* +X311248Y208878D01* +X311263Y208934D01* +X311260Y209019D01* +X311267Y209103D01* +X311255Y209160D01* +X311254Y209219D01* +X311228Y209299D01* +X311211Y209382D01* +X311184Y209433D01* +X311166Y209489D01* +X311126Y209545D01* +X311080Y209634D01* +X311011Y209706D01* +X310971Y209762D01* +X304181Y216552D01* +X304113Y216604D01* +X304050Y216663D01* +X303999Y216689D01* +X303954Y216723D01* +X303874Y216754D01* +X303797Y216793D01* +X303742Y216804D01* +X303688Y216825D01* +X303603Y216832D01* +X303519Y216848D01* +X303462Y216843D01* +X303405Y216848D01* +X303321Y216831D01* +X303235Y216824D01* +X303182Y216803D01* +X303126Y216792D01* +X303050Y216753D01* +X302970Y216722D01* +X302925Y216687D01* +X302874Y216661D01* +X302812Y216602D01* +X302743Y216550D01* +X302709Y216505D01* +X302668Y216465D01* +X302624Y216391D01* +X302573Y216322D01* +X302553Y216269D01* +X302524Y216220D01* +X302503Y216137D01* +X302473Y216057D01* +X302468Y216000D01* +X302454Y215945D01* +X302457Y215859D01* +X302450Y215773D01* +X302461Y215725D01* +X302463Y215661D01* +X302508Y215523D01* +X302525Y215446D01* +X303012Y214271D01* +X303012Y209925D01* +X301349Y205911D01* +X298277Y202838D01* +X294262Y201175D01* +X289917Y201175D01* +X285902Y202838D01* +X282830Y205911D01* +X281167Y209925D01* +X281167Y214271D01* +X282830Y218285D01* +X285902Y221358D01* +X289917Y223021D01* +X294262Y223021D01* +X295438Y222534D01* +X295521Y222512D01* +X295601Y222482D01* +X295658Y222477D01* +X295713Y222463D01* +X295799Y222465D01* +X295885Y222458D01* +X295940Y222469D01* +X295997Y222471D01* +X296079Y222497D01* +X296163Y222514D01* +X296214Y222540D01* +X296268Y222558D01* +X296339Y222605D01* +X296416Y222645D01* +X296457Y222684D01* +X296504Y222716D01* +X296559Y222782D01* +X296622Y222841D01* +X296650Y222890D01* +X296687Y222933D01* +X296722Y223012D01* +X296765Y223086D01* +X296779Y223141D01* +X296803Y223193D01* +X296814Y223278D01* +X296835Y223362D01* +X296834Y223418D01* +X296841Y223475D01* +X296829Y223560D01* +X296826Y223646D01* +X296809Y223700D01* +X296801Y223756D01* +X296765Y223834D01* +X296739Y223916D01* +X296710Y223956D01* +X296684Y224015D01* +X296590Y224126D01* +X296544Y224190D01* +X294066Y226668D01* +X293996Y226720D01* +X293932Y226780D01* +X293883Y226806D01* +X293839Y226839D01* +X293757Y226870D01* +X293679Y226910D01* +X293632Y226918D01* +X293573Y226940D01* +X293425Y226952D01* +X293348Y226965D01* +X289995Y226965D01* +X286123Y228569D01* +X283160Y231532D01* +X281557Y235403D01* +X281557Y239593D01* +X283160Y243464D01* +X286123Y246427D01* +X289995Y248031D01* +X294185Y248031D01* +X298056Y246427D01* +X301019Y243464D01* +X302622Y239593D01* +X302622Y235403D01* +X301019Y231532D01* +X300320Y230832D01* +X300284Y230786D01* +X300242Y230745D01* +X300199Y230672D01* +X300149Y230605D01* +X300128Y230550D01* +X300098Y230500D01* +X300078Y230418D01* +X300047Y230339D01* +X300043Y230281D01* +X300028Y230225D01* +X300031Y230140D01* +X300024Y230056D01* +X300035Y229999D01* +X300037Y229940D01* +X300063Y229860D01* +X300080Y229777D01* +X300107Y229725D01* +X300125Y229670D01* +X300165Y229614D01* +X300211Y229525D01* +X300280Y229453D01* +X300320Y229397D01* +X304834Y224882D01* +X304857Y224865D01* +X304876Y224842D01* +X304971Y224779D01* +X305061Y224711D01* +X305088Y224701D01* +X305113Y224685D01* +X305221Y224651D01* +X305327Y224610D01* +X305356Y224608D01* +X305384Y224599D01* +X305497Y224596D01* +X305610Y224587D01* +X305639Y224592D01* +X305668Y224592D01* +X305778Y224620D01* +X305889Y224643D01* +X305915Y224656D01* +X305943Y224663D01* +X306040Y224721D01* +X306141Y224774D01* +X306162Y224794D01* +X306187Y224809D01* +X306265Y224891D01* +X306347Y224969D01* +X306362Y224995D01* +X306382Y225016D01* +X306433Y225117D01* +X306491Y225215D01* +X306498Y225243D01* +X306511Y225269D01* +X306524Y225347D01* +X306561Y225490D01* +X306559Y225553D01* +X306567Y225600D01* +X306567Y226971D01* +X308230Y230985D01* +X311302Y234058D01* +X315317Y235721D01* +X319662Y235721D01* +X323677Y234058D01* +X326749Y230985D01* +X328412Y226971D01* +X328412Y222625D01* +X328260Y222258D01* +X328231Y222147D01* +X328197Y222037D01* +X328196Y222009D01* +X328189Y221982D01* +X328192Y221868D01* +X328189Y221753D01* +X328196Y221726D01* +X328197Y221698D01* +X328232Y221589D01* +X328261Y221478D01* +X328275Y221454D01* +X328284Y221427D01* +X328348Y221332D01* +X328406Y221233D01* +X328427Y221214D01* +X328442Y221191D01* +X328530Y221117D01* +X328614Y221039D01* +X328638Y221026D01* +X328660Y221008D01* +X328765Y220961D01* +X328867Y220909D01* +X328891Y220905D01* +X328919Y220893D01* +X329183Y220856D01* +X329198Y220854D01* +X432607Y220854D01* +X443740Y209721D01* +X443810Y209669D01* +X443874Y209609D01* +X443923Y209583D01* +X443967Y209550D01* +X444049Y209519D01* +X444127Y209479D01* +X444174Y209471D01* +X444233Y209449D01* +X444381Y209437D01* +X444458Y209424D01* +X444940Y209424D01* +X445026Y209436D01* +X445114Y209439D01* +X445166Y209456D01* +X445221Y209464D01* +X445301Y209499D01* +X445384Y209526D01* +X445423Y209554D01* +X445480Y209580D01* +X445594Y209676D01* +X445657Y209721D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +X446414Y175602D01* +X445657Y176359D01* +X445588Y176411D01* +X445524Y176471D01* +X445474Y176497D01* +X445430Y176530D01* +X445349Y176561D01* +X445271Y176601D01* +X445223Y176609D01* +X445165Y176631D01* +X445017Y176643D01* +X444940Y176656D01* +X444458Y176656D01* +X444371Y176644D01* +X444284Y176641D01* +X444231Y176624D01* +X444176Y176616D01* +X444097Y176581D01* +X444013Y176554D01* +X443974Y176526D01* +X443917Y176500D01* +X443804Y176404D01* +X443740Y176359D01* +X397047Y129666D01* +X314396Y129666D01* +G37* +%LPD*% +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X888158Y37337D02* +X888158Y37337D01* +X886967Y38528D01* +X886967Y78312D01* +X888158Y79503D01* +X927942Y79503D01* +X929133Y78312D01* +X929133Y38528D01* +X927942Y37337D01* +X888158Y37337D01* +G37* +%LPD*% +%LPC*% +G36* +X443658Y37337D02* +X443658Y37337D01* +X442467Y38528D01* +X442467Y78312D01* +X443658Y79503D01* +X483442Y79503D01* +X484633Y78312D01* +X484633Y38528D01* +X483442Y37337D01* +X443658Y37337D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X256159Y257065D02* +X256159Y257065D01* +X250744Y259308D01* +X246600Y263452D01* +X244357Y268867D01* +X244357Y274728D01* +X246600Y280143D01* +X250744Y284288D01* +X256159Y286531D01* +X262020Y286531D01* +X267435Y284288D01* +X271579Y280143D01* +X273822Y274728D01* +X273822Y268867D01* +X271579Y263452D01* +X267435Y259308D01* +X262020Y257065D01* +X256159Y257065D01* +G37* +%LPD*% +%LPC*% +G36* +X256159Y99565D02* +X256159Y99565D01* +X250744Y101808D01* +X246600Y105952D01* +X244357Y111367D01* +X244357Y117228D01* +X246600Y122643D01* +X250744Y126788D01* +X256159Y129031D01* +X262020Y129031D01* +X267435Y126788D01* +X271579Y122643D01* +X273822Y117228D01* +X273822Y111367D01* +X271579Y105952D01* +X267435Y101808D01* +X262020Y99565D01* +X256159Y99565D01* +G37* +%LPD*% +%LPC*% +G36* +X486568Y179831D02* +X486568Y179831D01* +X484514Y180682D01* +X482942Y182254D01* +X482091Y184308D01* +X482091Y186532D01* +X482942Y188586D01* +X484514Y190158D01* +X486568Y191009D01* +X488696Y191009D01* +X488754Y191017D01* +X488812Y191015D01* +X488894Y191037D01* +X488978Y191049D01* +X489031Y191072D01* +X489087Y191087D01* +X489160Y191130D01* +X489237Y191165D01* +X489282Y191203D01* +X489332Y191232D01* +X489390Y191294D01* +X489454Y191348D01* +X489486Y191397D01* +X489526Y191440D01* +X489565Y191515D01* +X489612Y191585D01* +X489629Y191641D01* +X489656Y191693D01* +X489667Y191761D01* +X489697Y191856D01* +X489700Y191956D01* +X489711Y192024D01* +X489711Y194056D01* +X489703Y194114D01* +X489705Y194172D01* +X489683Y194254D01* +X489671Y194338D01* +X489648Y194391D01* +X489633Y194447D01* +X489590Y194520D01* +X489555Y194597D01* +X489517Y194642D01* +X489488Y194692D01* +X489426Y194750D01* +X489372Y194814D01* +X489323Y194846D01* +X489280Y194886D01* +X489205Y194925D01* +X489135Y194972D01* +X489079Y194989D01* +X489027Y195016D01* +X488959Y195027D01* +X488864Y195057D01* +X488764Y195060D01* +X488696Y195071D01* +X486568Y195071D01* +X484514Y195922D01* +X482942Y197494D01* +X482091Y199548D01* +X482091Y201772D01* +X482942Y203826D01* +X484514Y205398D01* +X486568Y206249D01* +X488792Y206249D01* +X490846Y205398D01* +X492418Y203826D01* +X493269Y201772D01* +X493269Y199644D01* +X493276Y199596D01* +X493275Y199590D01* +X493277Y199584D01* +X493275Y199528D01* +X493297Y199446D01* +X493309Y199362D01* +X493332Y199309D01* +X493347Y199253D01* +X493390Y199180D01* +X493425Y199103D01* +X493463Y199058D01* +X493492Y199008D01* +X493554Y198950D01* +X493608Y198886D01* +X493657Y198854D01* +X493700Y198814D01* +X493775Y198775D01* +X493845Y198728D01* +X493901Y198711D01* +X493953Y198684D01* +X494021Y198673D01* +X494116Y198643D01* +X494216Y198640D01* +X494284Y198629D01* +X496316Y198629D01* +X496374Y198637D01* +X496432Y198635D01* +X496514Y198657D01* +X496598Y198669D01* +X496651Y198692D01* +X496707Y198707D01* +X496780Y198750D01* +X496857Y198785D01* +X496902Y198823D01* +X496952Y198852D01* +X497010Y198914D01* +X497074Y198968D01* +X497106Y199017D01* +X497146Y199060D01* +X497185Y199135D01* +X497232Y199205D01* +X497249Y199261D01* +X497276Y199313D01* +X497287Y199381D01* +X497317Y199476D01* +X497320Y199576D01* +X497331Y199644D01* +X497331Y201772D01* +X498182Y203826D01* +X499754Y205398D01* +X501808Y206249D01* +X504032Y206249D01* +X506086Y205398D01* +X507658Y203826D01* +X508509Y201772D01* +X508509Y199548D01* +X507658Y197494D01* +X506086Y195922D01* +X504032Y195071D01* +X501904Y195071D01* +X501846Y195063D01* +X501788Y195065D01* +X501706Y195043D01* +X501622Y195031D01* +X501569Y195008D01* +X501513Y194993D01* +X501440Y194950D01* +X501363Y194915D01* +X501318Y194877D01* +X501268Y194848D01* +X501210Y194786D01* +X501146Y194732D01* +X501114Y194683D01* +X501074Y194640D01* +X501035Y194565D01* +X500988Y194495D01* +X500971Y194439D01* +X500944Y194387D01* +X500933Y194319D01* +X500903Y194224D01* +X500900Y194124D01* +X500889Y194056D01* +X500889Y192024D01* +X500897Y191966D01* +X500895Y191908D01* +X500917Y191826D01* +X500929Y191742D01* +X500952Y191689D01* +X500967Y191633D01* +X501010Y191560D01* +X501045Y191483D01* +X501083Y191438D01* +X501112Y191388D01* +X501174Y191330D01* +X501228Y191266D01* +X501277Y191234D01* +X501320Y191194D01* +X501395Y191155D01* +X501465Y191108D01* +X501521Y191091D01* +X501573Y191064D01* +X501641Y191053D01* +X501736Y191023D01* +X501836Y191020D01* +X501904Y191009D01* +X504032Y191009D01* +X506086Y190158D01* +X507658Y188586D01* +X508509Y186532D01* +X508509Y184308D01* +X507658Y182254D01* +X506086Y180682D01* +X504032Y179831D01* +X501808Y179831D01* +X499754Y180682D01* +X498182Y182254D01* +X497331Y184308D01* +X497331Y186436D01* +X497323Y186494D01* +X497325Y186552D01* +X497303Y186634D01* +X497291Y186718D01* +X497268Y186771D01* +X497253Y186827D01* +X497210Y186900D01* +X497175Y186977D01* +X497137Y187022D01* +X497108Y187072D01* +X497046Y187130D01* +X496992Y187194D01* +X496943Y187226D01* +X496900Y187266D01* +X496825Y187305D01* +X496755Y187352D01* +X496699Y187369D01* +X496647Y187396D01* +X496579Y187407D01* +X496484Y187437D01* +X496384Y187440D01* +X496316Y187451D01* +X494284Y187451D01* +X494226Y187443D01* +X494168Y187445D01* +X494086Y187423D01* +X494002Y187411D01* +X493949Y187388D01* +X493893Y187373D01* +X493820Y187330D01* +X493743Y187295D01* +X493698Y187257D01* +X493648Y187228D01* +X493590Y187166D01* +X493526Y187112D01* +X493494Y187063D01* +X493454Y187020D01* +X493415Y186945D01* +X493368Y186875D01* +X493351Y186819D01* +X493324Y186767D01* +X493313Y186699D01* +X493283Y186604D01* +X493280Y186504D01* +X493269Y186436D01* +X493269Y184308D01* +X492418Y182254D01* +X490846Y180682D01* +X488792Y179831D01* +X486568Y179831D01* +G37* +%LPD*% +%LPC*% +G36* +X689723Y47525D02* +X689723Y47525D01* +X687586Y48411D01* +X685951Y50046D01* +X685065Y52183D01* +X685065Y52407D01* +X685049Y52520D01* +X685039Y52635D01* +X685029Y52661D01* +X685025Y52688D01* +X684978Y52793D01* +X684937Y52900D01* +X684921Y52922D01* +X684909Y52948D01* +X684835Y53035D01* +X684766Y53127D01* +X684743Y53143D01* +X684726Y53165D01* +X684630Y53228D01* +X684538Y53297D01* +X684512Y53307D01* +X684489Y53322D01* +X684379Y53357D01* +X684272Y53397D01* +X684244Y53400D01* +X684218Y53408D01* +X684103Y53411D01* +X683989Y53420D01* +X683964Y53414D01* +X683934Y53415D01* +X683677Y53348D01* +X683661Y53345D01* +X681877Y52605D01* +X679563Y52605D01* +X677426Y53491D01* +X675791Y55126D01* +X674905Y57263D01* +X674905Y59577D01* +X675791Y61714D01* +X677426Y63349D01* +X679563Y64235D01* +X681877Y64235D01* +X683661Y63495D01* +X683773Y63467D01* +X683882Y63432D01* +X683910Y63431D01* +X683937Y63424D01* +X684051Y63428D01* +X684166Y63425D01* +X684193Y63432D01* +X684221Y63433D01* +X684330Y63468D01* +X684441Y63497D01* +X684465Y63511D01* +X684492Y63519D01* +X684587Y63583D01* +X684686Y63642D01* +X684705Y63662D01* +X684728Y63678D01* +X684802Y63765D01* +X684880Y63849D01* +X684893Y63874D01* +X684911Y63895D01* +X684957Y64000D01* +X685010Y64102D01* +X685014Y64127D01* +X685026Y64155D01* +X685063Y64419D01* +X685065Y64433D01* +X685065Y64657D01* +X685951Y66794D01* +X687586Y68429D01* +X689723Y69315D01* +X692037Y69315D01* +X694174Y68429D01* +X695809Y66794D01* +X696695Y64657D01* +X696695Y64433D01* +X696711Y64320D01* +X696721Y64205D01* +X696731Y64179D01* +X696735Y64152D01* +X696782Y64047D01* +X696823Y63940D01* +X696839Y63918D01* +X696851Y63892D01* +X696925Y63805D01* +X696994Y63713D01* +X697017Y63697D01* +X697034Y63675D01* +X697130Y63612D01* +X697222Y63543D01* +X697248Y63533D01* +X697271Y63518D01* +X697381Y63483D01* +X697488Y63443D01* +X697516Y63440D01* +X697542Y63432D01* +X697657Y63429D01* +X697771Y63420D01* +X697796Y63426D01* +X697826Y63425D01* +X698083Y63492D01* +X698099Y63495D01* +X699883Y64235D01* +X702197Y64235D01* +X704334Y63349D01* +X705969Y61714D01* +X706855Y59577D01* +X706855Y57263D01* +X705969Y55126D01* +X704334Y53491D01* +X702197Y52605D01* +X699883Y52605D01* +X698099Y53345D01* +X697987Y53373D01* +X697878Y53408D01* +X697850Y53409D01* +X697823Y53416D01* +X697709Y53412D01* +X697594Y53415D01* +X697567Y53408D01* +X697539Y53407D01* +X697430Y53372D01* +X697319Y53343D01* +X697295Y53329D01* +X697268Y53321D01* +X697173Y53257D01* +X697074Y53198D01* +X697055Y53178D01* +X697032Y53162D01* +X696958Y53075D01* +X696880Y52991D01* +X696867Y52966D01* +X696849Y52945D01* +X696803Y52840D01* +X696750Y52738D01* +X696746Y52713D01* +X696734Y52685D01* +X696697Y52421D01* +X696695Y52407D01* +X696695Y52183D01* +X695809Y50046D01* +X694174Y48411D01* +X692037Y47525D01* +X689723Y47525D01* +G37* +%LPD*% +%LPC*% +G36* +X514463Y273585D02* +X514463Y273585D01* +X512326Y274471D01* +X510691Y276106D01* +X509805Y278243D01* +X509805Y280557D01* +X510691Y282694D01* +X512326Y284329D01* +X514463Y285215D01* +X516777Y285215D01* +X518914Y284329D01* +X520497Y282746D01* +X520567Y282694D01* +X520631Y282634D01* +X520680Y282608D01* +X520724Y282575D01* +X520806Y282544D01* +X520884Y282504D01* +X520932Y282496D01* +X520990Y282474D01* +X521138Y282462D01* +X521215Y282449D01* +X550665Y282449D01* +X550752Y282461D01* +X550839Y282464D01* +X550892Y282481D01* +X550946Y282489D01* +X551026Y282524D01* +X551109Y282551D01* +X551149Y282579D01* +X551206Y282605D01* +X551319Y282701D01* +X551383Y282746D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278243D01* +X561189Y276106D01* +X559554Y274471D01* +X557417Y273585D01* +X555103Y273585D01* +X552966Y274471D01* +X551383Y276054D01* +X551313Y276106D01* +X551249Y276166D01* +X551200Y276192D01* +X551156Y276225D01* +X551074Y276256D01* +X550996Y276296D01* +X550948Y276304D01* +X550890Y276326D01* +X550742Y276338D01* +X550665Y276351D01* +X521215Y276351D01* +X521128Y276339D01* +X521041Y276336D01* +X520988Y276319D01* +X520934Y276311D01* +X520854Y276276D01* +X520771Y276249D01* +X520731Y276221D01* +X520674Y276195D01* +X520561Y276099D01* +X520497Y276054D01* +X518914Y274471D01* +X516777Y273585D01* +X514463Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X177431Y245363D02* +X177431Y245363D01* +X173416Y247025D01* +X170344Y250098D01* +X168681Y254113D01* +X168681Y258458D01* +X170344Y262473D01* +X173416Y265545D01* +X177431Y267208D01* +X181776Y267208D01* +X185791Y265545D01* +X188864Y262473D01* +X190526Y258458D01* +X190526Y254113D01* +X188864Y250098D01* +X185791Y247025D01* +X181776Y245363D01* +X177431Y245363D01* +G37* +%LPD*% +%LPC*% +G36* +X620127Y9397D02* +X620127Y9397D01* +X616113Y11060D01* +X613040Y14133D01* +X611377Y18147D01* +X611377Y22493D01* +X613040Y26507D01* +X616113Y29580D01* +X620127Y31243D01* +X624473Y31243D01* +X628487Y29580D01* +X631560Y26507D01* +X633223Y22493D01* +X633223Y18147D01* +X631560Y14133D01* +X628487Y11060D01* +X624473Y9397D01* +X620127Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X670927Y9397D02* +X670927Y9397D01* +X666913Y11060D01* +X663840Y14133D01* +X662177Y18147D01* +X662177Y22493D01* +X663840Y26507D01* +X666913Y29580D01* +X670927Y31243D01* +X675273Y31243D01* +X679287Y29580D01* +X682360Y26507D01* +X684023Y22493D01* +X684023Y18147D01* +X682360Y14133D01* +X679287Y11060D01* +X675273Y9397D01* +X670927Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X192636Y219981D02* +X192636Y219981D01* +X188621Y221644D01* +X185549Y224717D01* +X183886Y228731D01* +X183886Y233076D01* +X185549Y237091D01* +X188621Y240164D01* +X192636Y241827D01* +X196981Y241827D01* +X200996Y240164D01* +X204069Y237091D01* +X205731Y233076D01* +X205731Y228731D01* +X204069Y224717D01* +X200996Y221644D01* +X196981Y219981D01* +X192636Y219981D01* +G37* +%LPD*% +%LPC*% +G36* +X645527Y9397D02* +X645527Y9397D01* +X641513Y11060D01* +X638440Y14133D01* +X636777Y18147D01* +X636777Y22493D01* +X638440Y26507D01* +X641513Y29580D01* +X645527Y31243D01* +X649873Y31243D01* +X653887Y29580D01* +X656960Y26507D01* +X658623Y22493D01* +X658623Y18147D01* +X656960Y14133D01* +X653887Y11060D01* +X649873Y9397D01* +X645527Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X772527Y9397D02* +X772527Y9397D01* +X768513Y11060D01* +X765440Y14133D01* +X763777Y18147D01* +X763777Y22493D01* +X765440Y26507D01* +X768513Y29580D01* +X772527Y31243D01* +X776873Y31243D01* +X780887Y29580D01* +X783960Y26507D01* +X785623Y22493D01* +X785623Y18147D01* +X783960Y14133D01* +X780887Y11060D01* +X776873Y9397D01* +X772527Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X569327Y9397D02* +X569327Y9397D01* +X565313Y11060D01* +X562240Y14133D01* +X560577Y18147D01* +X560577Y22493D01* +X562240Y26507D01* +X565313Y29580D01* +X569327Y31243D01* +X573673Y31243D01* +X577687Y29580D01* +X580760Y26507D01* +X582423Y22493D01* +X582423Y18147D01* +X580760Y14133D01* +X577687Y11060D01* +X573673Y9397D01* +X569327Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X289917Y175775D02* +X289917Y175775D01* +X285902Y177438D01* +X282830Y180511D01* +X281167Y184525D01* +X281167Y188871D01* +X282830Y192885D01* +X285902Y195958D01* +X289917Y197621D01* +X294262Y197621D01* +X298277Y195958D01* +X301349Y192885D01* +X303012Y188871D01* +X303012Y184525D01* +X301349Y180511D01* +X298277Y177438D01* +X294262Y175775D01* +X289917Y175775D01* +G37* +%LPD*% +%LPC*% +G36* +X747127Y9397D02* +X747127Y9397D01* +X743113Y11060D01* +X740040Y14133D01* +X738377Y18147D01* +X738377Y22493D01* +X740040Y26507D01* +X743113Y29580D01* +X747127Y31243D01* +X751473Y31243D01* +X755487Y29580D01* +X758560Y26507D01* +X760223Y22493D01* +X760223Y18147D01* +X758560Y14133D01* +X755487Y11060D01* +X751473Y9397D01* +X747127Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y163075D02* +X315317Y163075D01* +X311302Y164738D01* +X308230Y167811D01* +X306567Y171825D01* +X306567Y176171D01* +X308230Y180185D01* +X311302Y183258D01* +X315317Y184921D01* +X319662Y184921D01* +X323677Y183258D01* +X326749Y180185D01* +X328412Y176171D01* +X328412Y171825D01* +X326749Y167811D01* +X323677Y164738D01* +X319662Y163075D01* +X315317Y163075D01* +G37* +%LPD*% +%LPC*% +G36* +X721727Y9397D02* +X721727Y9397D01* +X717713Y11060D01* +X714640Y14133D01* +X712977Y18147D01* +X712977Y22493D01* +X714640Y26507D01* +X717713Y29580D01* +X721727Y31243D01* +X726073Y31243D01* +X730087Y29580D01* +X733160Y26507D01* +X734823Y22493D01* +X734823Y18147D01* +X733160Y14133D01* +X730087Y11060D01* +X726073Y9397D01* +X721727Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X696327Y9397D02* +X696327Y9397D01* +X692313Y11060D01* +X689240Y14133D01* +X687577Y18147D01* +X687577Y22493D01* +X689240Y26507D01* +X692313Y29580D01* +X696327Y31243D01* +X700673Y31243D01* +X704687Y29580D01* +X707760Y26507D01* +X709423Y22493D01* +X709423Y18147D01* +X707760Y14133D01* +X704687Y11060D01* +X700673Y9397D01* +X696327Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X594727Y9397D02* +X594727Y9397D01* +X590713Y11060D01* +X587640Y14133D01* +X585977Y18147D01* +X585977Y22493D01* +X587640Y26507D01* +X590713Y29580D01* +X594727Y31243D01* +X599073Y31243D01* +X603087Y29580D01* +X606160Y26507D01* +X607823Y22493D01* +X607823Y18147D01* +X606160Y14133D01* +X603087Y11060D01* +X599073Y9397D01* +X594727Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X192631Y118863D02* +X192631Y118863D01* +X188616Y120525D01* +X185544Y123598D01* +X183881Y127613D01* +X183881Y131958D01* +X185544Y135973D01* +X188616Y139045D01* +X192631Y140708D01* +X196976Y140708D01* +X200991Y139045D01* +X204064Y135973D01* +X205726Y131958D01* +X205726Y127613D01* +X204064Y123598D01* +X200991Y120525D01* +X196976Y118863D01* +X192631Y118863D01* +G37* +%LPD*% +%LPC*% +G36* +X177436Y144281D02* +X177436Y144281D01* +X173421Y145944D01* +X170349Y149017D01* +X168686Y153031D01* +X168686Y157376D01* +X170349Y161391D01* +X173421Y164464D01* +X177436Y166127D01* +X181781Y166127D01* +X185796Y164464D01* +X188869Y161391D01* +X190531Y157376D01* +X190531Y153031D01* +X188869Y149017D01* +X185796Y145944D01* +X181781Y144281D01* +X177436Y144281D01* +G37* +%LPD*% +%LPC*% +G36* +X131855Y285007D02* +X131855Y285007D01* +X129241Y286090D01* +X127240Y288091D01* +X126157Y290705D01* +X126157Y293535D01* +X127240Y296149D01* +X129241Y298150D01* +X131855Y299233D01* +X144845Y299233D01* +X147459Y298150D01* +X149460Y296149D01* +X150543Y293535D01* +X150543Y290705D01* +X149460Y288091D01* +X147459Y286090D01* +X144845Y285007D01* +X131855Y285007D01* +G37* +%LPD*% +%LPC*% +G36* +X131855Y351007D02* +X131855Y351007D01* +X129241Y352090D01* +X127240Y354091D01* +X126157Y356705D01* +X126157Y359535D01* +X127240Y362149D01* +X129241Y364150D01* +X131855Y365233D01* +X144845Y365233D01* +X147459Y364150D01* +X149460Y362149D01* +X150543Y359535D01* +X150543Y356705D01* +X149460Y354091D01* +X147459Y352090D01* +X144845Y351007D01* +X131855Y351007D01* +G37* +%LPD*% +%LPC*% +G36* +X392543Y311685D02* +X392543Y311685D01* +X390406Y312571D01* +X388771Y314206D01* +X387885Y316343D01* +X387885Y318657D01* +X388771Y320794D01* +X390406Y322429D01* +X392543Y323315D01* +X394857Y323315D01* +X396994Y322429D01* +X398629Y320794D01* +X399515Y318657D01* +X399515Y316343D01* +X398629Y314206D01* +X396994Y312571D01* +X394857Y311685D01* +X392543Y311685D01* +G37* +%LPD*% +%LPC*% +G36* +X656703Y136425D02* +X656703Y136425D01* +X654566Y137311D01* +X652931Y138946D01* +X652045Y141083D01* +X652045Y143397D01* +X652931Y145534D01* +X654566Y147169D01* +X656703Y148055D01* +X659017Y148055D01* +X661154Y147169D01* +X662789Y145534D01* +X663675Y143397D01* +X663675Y141083D01* +X662789Y138946D01* +X661154Y137311D01* +X659017Y136425D01* +X656703Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X461123Y141505D02* +X461123Y141505D01* +X458986Y142391D01* +X457351Y144026D01* +X456465Y146163D01* +X456465Y148477D01* +X457351Y150614D01* +X458986Y152249D01* +X461123Y153135D01* +X463437Y153135D01* +X465574Y152249D01* +X467209Y150614D01* +X468095Y148477D01* +X468095Y146163D01* +X467209Y144026D01* +X465574Y142391D01* +X463437Y141505D01* +X461123Y141505D01* +G37* +%LPD*% +%LPC*% +G36* +X499223Y128805D02* +X499223Y128805D01* +X497086Y129691D01* +X495451Y131326D01* +X494565Y133463D01* +X494565Y135777D01* +X495451Y137914D01* +X497086Y139549D01* +X499223Y140435D01* +X501537Y140435D01* +X503674Y139549D01* +X505309Y137914D01* +X506195Y135777D01* +X506195Y133463D01* +X505309Y131326D01* +X503674Y129691D01* +X501537Y128805D01* +X499223Y128805D01* +G37* +%LPD*% +%LPC*% +G36* +X423023Y253265D02* +X423023Y253265D01* +X420886Y254151D01* +X419251Y255786D01* +X418365Y257923D01* +X418365Y260237D01* +X419251Y262374D01* +X420886Y264009D01* +X423023Y264895D01* +X425337Y264895D01* +X427474Y264009D01* +X429109Y262374D01* +X429995Y260237D01* +X429995Y257923D01* +X429109Y255786D01* +X427474Y254151D01* +X425337Y253265D01* +X423023Y253265D01* +G37* +%LPD*% +%LPC*% +G36* +X1080883Y100865D02* +X1080883Y100865D01* +X1078746Y101751D01* +X1077111Y103386D01* +X1076225Y105523D01* +X1076225Y107837D01* +X1077111Y109974D01* +X1078746Y111609D01* +X1080883Y112495D01* +X1083197Y112495D01* +X1085334Y111609D01* +X1086969Y109974D01* +X1087855Y107837D01* +X1087855Y105523D01* +X1086969Y103386D01* +X1085334Y101751D01* +X1083197Y100865D01* +X1080883Y100865D01* +G37* +%LPD*% +%LPC*% +G36* +X951343Y291365D02* +X951343Y291365D01* +X949206Y292251D01* +X947571Y293886D01* +X946685Y296023D01* +X946685Y298337D01* +X947571Y300474D01* +X949206Y302109D01* +X951343Y302995D01* +X953657Y302995D01* +X955794Y302109D01* +X957429Y300474D01* +X958315Y298337D01* +X958315Y296023D01* +X957429Y293886D01* +X955794Y292251D01* +X953657Y291365D01* +X951343Y291365D01* +G37* +%LPD*% +%LPC*% +G36* +X176643Y304065D02* +X176643Y304065D01* +X174506Y304951D01* +X172871Y306586D01* +X171985Y308723D01* +X171985Y311037D01* +X172871Y313174D01* +X174506Y314809D01* +X176643Y315695D01* +X178957Y315695D01* +X181094Y314809D01* +X182729Y313174D01* +X183615Y311037D01* +X183615Y308723D01* +X182729Y306586D01* +X181094Y304951D01* +X178957Y304065D01* +X176643Y304065D01* +G37* +%LPD*% +%LPC*% +G36* +X560183Y70385D02* +X560183Y70385D01* +X558046Y71271D01* +X556411Y72906D01* +X555525Y75043D01* +X555525Y77357D01* +X556411Y79494D01* +X558046Y81129D01* +X560183Y82015D01* +X562497Y82015D01* +X564634Y81129D01* +X566269Y79494D01* +X567155Y77357D01* +X567155Y75043D01* +X566269Y72906D01* +X564634Y71271D01* +X562497Y70385D01* +X560183Y70385D01* +G37* +%LPD*% +%LPC*% +G36* +X1050403Y70385D02* +X1050403Y70385D01* +X1048266Y71271D01* +X1046631Y72906D01* +X1045745Y75043D01* +X1045745Y77357D01* +X1046631Y79494D01* +X1048266Y81129D01* +X1050403Y82015D01* +X1052717Y82015D01* +X1054854Y81129D01* +X1056489Y79494D01* +X1057375Y77357D01* +X1057375Y75043D01* +X1056489Y72906D01* +X1054854Y71271D01* +X1052717Y70385D01* +X1050403Y70385D01* +G37* +%LPD*% +%LPC*% +G36* +X885303Y144045D02* +X885303Y144045D01* +X883166Y144931D01* +X881531Y146566D01* +X880645Y148703D01* +X880645Y151017D01* +X881531Y153154D01* +X883166Y154789D01* +X885303Y155675D01* +X887617Y155675D01* +X889754Y154789D01* +X891389Y153154D01* +X892275Y151017D01* +X892275Y148703D01* +X891389Y146566D01* +X889754Y144931D01* +X887617Y144045D01* +X885303Y144045D01* +G37* +%LPD*% +%LPC*% +G36* +X316343Y329465D02* +X316343Y329465D01* +X314206Y330351D01* +X312571Y331986D01* +X311685Y334123D01* +X311685Y336437D01* +X312571Y338574D01* +X314206Y340209D01* +X316343Y341095D01* +X318657Y341095D01* +X320794Y340209D01* +X322429Y338574D01* +X323315Y336437D01* +X323315Y334123D01* +X322429Y331986D01* +X320794Y330351D01* +X318657Y329465D01* +X316343Y329465D01* +G37* +%LPD*% +%LPC*% +G36* +X496683Y263425D02* +X496683Y263425D01* +X494546Y264311D01* +X492911Y265946D01* +X492025Y268083D01* +X492025Y270397D01* +X492911Y272534D01* +X494546Y274169D01* +X496683Y275055D01* +X498997Y275055D01* +X501134Y274169D01* +X502769Y272534D01* +X503655Y270397D01* +X503655Y268083D01* +X502769Y265946D01* +X501134Y264311D01* +X498997Y263425D01* +X496683Y263425D01* +G37* +%LPD*% +%LPC*% +G36* +X463663Y222785D02* +X463663Y222785D01* +X461526Y223671D01* +X459891Y225306D01* +X459005Y227443D01* +X459005Y229757D01* +X459891Y231894D01* +X461526Y233529D01* +X463663Y234415D01* +X465977Y234415D01* +X468114Y233529D01* +X469749Y231894D01* +X470635Y229757D01* +X470635Y227443D01* +X469749Y225306D01* +X468114Y223671D01* +X465977Y222785D01* +X463663Y222785D01* +G37* +%LPD*% +%LPC*% +G36* +X872603Y60225D02* +X872603Y60225D01* +X870466Y61111D01* +X868831Y62746D01* +X867945Y64883D01* +X867945Y67197D01* +X868831Y69334D01* +X870466Y70969D01* +X872603Y71855D01* +X874917Y71855D01* +X877054Y70969D01* +X878689Y69334D01* +X879575Y67197D01* +X879575Y64883D01* +X878689Y62746D01* +X877054Y61111D01* +X874917Y60225D01* +X872603Y60225D01* +G37* +%LPD*% +%LPC*% +G36* +X326503Y347245D02* +X326503Y347245D01* +X324366Y348131D01* +X322731Y349766D01* +X321845Y351903D01* +X321845Y354217D01* +X322731Y356354D01* +X324366Y357989D01* +X326503Y358875D01* +X328817Y358875D01* +X330954Y357989D01* +X332589Y356354D01* +X333475Y354217D01* +X333475Y351903D01* +X332589Y349766D01* +X330954Y348131D01* +X328817Y347245D01* +X326503Y347245D01* +G37* +%LPD*% +%LPC*% +G36* +X468743Y161825D02* +X468743Y161825D01* +X466606Y162711D01* +X464971Y164346D01* +X464085Y166483D01* +X464085Y168797D01* +X464971Y170934D01* +X466606Y172569D01* +X468743Y173455D01* +X471057Y173455D01* +X473194Y172569D01* +X474829Y170934D01* +X475715Y168797D01* +X475715Y166483D01* +X474829Y164346D01* +X473194Y162711D01* +X471057Y161825D01* +X468743Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X179183Y360001D02* +X179183Y360001D01* +X177046Y360887D01* +X175411Y362522D01* +X174525Y364659D01* +X174525Y366973D01* +X175411Y369110D01* +X177046Y370745D01* +X179183Y371631D01* +X181497Y371631D01* +X183634Y370745D01* +X185269Y369110D01* +X186155Y366973D01* +X186155Y364659D01* +X185269Y362522D01* +X183634Y360887D01* +X181497Y360001D01* +X179183Y360001D01* +G37* +%LPD*% +%LPC*% +G36* +X951343Y276125D02* +X951343Y276125D01* +X949206Y277011D01* +X947571Y278646D01* +X946685Y280783D01* +X946685Y283097D01* +X947571Y285234D01* +X949206Y286869D01* +X951343Y287755D01* +X953657Y287755D01* +X955794Y286869D01* +X957429Y285234D01* +X958315Y283097D01* +X958315Y280783D01* +X957429Y278646D01* +X955794Y277011D01* +X953657Y276125D01* +X951343Y276125D01* +G37* +%LPD*% +%LPC*% +G36* +X1126603Y192305D02* +X1126603Y192305D01* +X1124466Y193191D01* +X1122831Y194826D01* +X1121945Y196963D01* +X1121945Y199277D01* +X1122831Y201414D01* +X1124466Y203049D01* +X1126603Y203935D01* +X1128917Y203935D01* +X1131054Y203049D01* +X1132689Y201414D01* +X1133575Y199277D01* +X1133575Y196963D01* +X1132689Y194826D01* +X1131054Y193191D01* +X1128917Y192305D01* +X1126603Y192305D01* +G37* +%LPD*% +%LPC*% +G36* +X346823Y166905D02* +X346823Y166905D01* +X344686Y167791D01* +X343051Y169426D01* +X342165Y171563D01* +X342165Y173877D01* +X343051Y176014D01* +X344686Y177649D01* +X346823Y178535D01* +X349137Y178535D01* +X351274Y177649D01* +X352909Y176014D01* +X353795Y173877D01* +X353795Y171563D01* +X352909Y169426D01* +X351274Y167791D01* +X349137Y166905D01* +X346823Y166905D01* +G37* +%LPD*% +%LPC*% +G36* +X296023Y281205D02* +X296023Y281205D01* +X293886Y282091D01* +X292251Y283726D01* +X291365Y285863D01* +X291365Y288177D01* +X292251Y290314D01* +X293886Y291949D01* +X296023Y292835D01* +X298337Y292835D01* +X300474Y291949D01* +X302109Y290314D01* +X302995Y288177D01* +X302995Y285863D01* +X302109Y283726D01* +X300474Y282091D01* +X298337Y281205D01* +X296023Y281205D01* +G37* +%LPD*% +%LPC*% +G36* +X275703Y281205D02* +X275703Y281205D01* +X273566Y282091D01* +X271931Y283726D01* +X271045Y285863D01* +X271045Y288177D01* +X271931Y290314D01* +X273566Y291949D01* +X275703Y292835D01* +X278017Y292835D01* +X280154Y291949D01* +X281789Y290314D01* +X282675Y288177D01* +X282675Y285863D01* +X281789Y283726D01* +X280154Y282091D01* +X278017Y281205D01* +X275703Y281205D01* +G37* +%LPD*% +%LPC*% +G36* +X555103Y174525D02* +X555103Y174525D01* +X552966Y175411D01* +X551331Y177046D01* +X550445Y179183D01* +X550445Y181497D01* +X551331Y183634D01* +X552966Y185269D01* +X555103Y186155D01* +X557417Y186155D01* +X559554Y185269D01* +X561189Y183634D01* +X562075Y181497D01* +X562075Y179183D01* +X561189Y177046D01* +X559554Y175411D01* +X557417Y174525D01* +X555103Y174525D01* +G37* +%LPD*% +%LPC*% +G36* +X992028Y289051D02* +X992028Y289051D01* +X989974Y289902D01* +X988402Y291474D01* +X987551Y293528D01* +X987551Y295752D01* +X988402Y297806D01* +X989974Y299378D01* +X992028Y300229D01* +X994252Y300229D01* +X996306Y299378D01* +X997878Y297806D01* +X998729Y295752D01* +X998729Y293528D01* +X997878Y291474D01* +X996306Y289902D01* +X994252Y289051D01* +X992028Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y22351D02* +X802131Y22351D01* +X802131Y31751D01* +X809324Y31751D01* +X809971Y31578D01* +X810550Y31243D01* +X811023Y30770D01* +X811358Y30191D01* +X811531Y29544D01* +X811531Y22351D01* +X802131Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X788669Y22351D02* +X788669Y22351D01* +X788669Y29544D01* +X788842Y30191D01* +X789177Y30770D01* +X789650Y31243D01* +X790229Y31578D01* +X790876Y31751D01* +X798069Y31751D01* +X798069Y22351D01* +X788669Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X738631Y64769D02* +X738631Y64769D01* +X738631Y74169D01* +X748031Y74169D01* +X748031Y66976D01* +X747858Y66329D01* +X747523Y65750D01* +X747050Y65277D01* +X746471Y64942D01* +X745824Y64769D01* +X738631Y64769D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y8889D02* +X802131Y8889D01* +X802131Y18289D01* +X811531Y18289D01* +X811531Y11096D01* +X811358Y10449D01* +X811023Y9870D01* +X810550Y9397D01* +X809971Y9062D01* +X809324Y8889D01* +X802131Y8889D01* +G37* +%LPD*% +%LPC*% +G36* +X727376Y64769D02* +X727376Y64769D01* +X726729Y64942D01* +X726150Y65277D01* +X725677Y65750D01* +X725342Y66329D01* +X725169Y66976D01* +X725169Y74169D01* +X734569Y74169D01* +X734569Y64769D01* +X727376Y64769D01* +G37* +%LPD*% +%LPC*% +G36* +X790876Y8889D02* +X790876Y8889D01* +X790229Y9062D01* +X789650Y9397D01* +X789177Y9870D01* +X788842Y10449D01* +X788669Y11096D01* +X788669Y18289D01* +X798069Y18289D01* +X798069Y8889D01* +X790876Y8889D01* +G37* +%LPD*% +%LPC*% +G36* +X800099Y20319D02* +X800099Y20319D01* +X800099Y20321D01* +X800101Y20321D01* +X800101Y20319D01* +X800099Y20319D01* +G37* +%LPD*% +D10* +X133270Y358120D02* +X143430Y358120D01* +X143430Y292120D02* +X133270Y292120D01* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D12* +X292090Y237498D03* +D13* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D14* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D15* +X800100Y20320D03* +D11* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D15* +X736600Y76200D03* +D11* +X711200Y76200D03* +D16* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +X317500Y335280D03* +X180340Y365816D03* +X393700Y317500D03* +X561340Y76200D03* +X464820Y228600D03* +X424180Y259080D03* +X462280Y147320D03* +X469900Y167640D03* +X500380Y134620D03* +X556260Y180340D03* +X1206500Y304800D03* +X1051560Y76200D03* +X873760Y66040D03* +X830580Y83820D03* +X886460Y149860D03* +X939800Y241300D03* +X960120Y121920D03* +X1082040Y106680D03* +X1127760Y198120D03* +X657860Y142240D03* +X861060Y274320D03* +X952500Y297180D03* +X952500Y281940D03* +X960120Y241300D03* +X1071880Y302260D03* +X177800Y309880D03* +X347980Y172720D03* +X497840Y269240D03* +D17* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +X993140Y294640D03* +X868564Y241184D03* +D16* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X327660Y353060D03* +X342900Y370840D03* +X1193800Y279400D03* +D18* +X1148080Y233680D01* +D16* +X518160Y239494D03* +D18* +X573532Y233680D02* +X1148080Y233680D01* +X573532Y233680D02* +X562638Y244574D01* +X523240Y244574D01* +X518160Y239494D01* +D16* +X1206500Y203200D03* +X563880Y211610D03* +D18* +X564162Y211610D02* +X569976Y217424D01* +X564162Y211610D02* +X563880Y211610D01* +X1187196Y217424D02* +X1201420Y203200D01* +X1206500Y203200D01* +X1187196Y217424D02* +X569976Y217424D01* +D16* +X502800Y162909D03* +X1023620Y175260D03* +D18* +X1002792Y196088D01* +X608584Y196088D01* +X575405Y162909D02* +X502800Y162909D01* +X575405Y162909D02* +X608584Y196088D01* +D16* +X1206500Y241300D03* +D18* +X1190752Y225552D01* +D16* +X499816Y231140D03* +D18* +X569468Y225552D02* +X1190752Y225552D01* +X569468Y225552D02* +X558800Y236220D01* +X532892Y236220D01* +X520192Y223520D01* +X507436Y223520D01* +X499816Y231140D01* +D16* +X1206500Y218440D03* +X490188Y231172D03* +D18* +X502412Y218440D02* +X522224Y218440D01* +X502412Y218440D02* +X490188Y230664D01* +X490188Y231172D01* +X522224Y218440D02* +X534162Y230378D01* +X558546Y230378D01* +X567436Y221488D01* +X1188879Y221488D02* +X1191927Y218440D01* +X1188879Y221488D02* +X567436Y221488D01* +X1191927Y218440D02* +X1206500Y218440D01* +D16* +X1206500Y279400D03* +D18* +X1156716Y229616D01* +D16* +X482600Y238760D03* +D18* +X501904Y238760D02* +X513080Y227584D01* +X501904Y238760D02* +X482600Y238760D01* +X571500Y229616D02* +X1156716Y229616D01* +X571500Y229616D02* +X560832Y240284D01* +X530860Y240284D01* +X518160Y227584D01* +X513080Y227584D01* +D16* +X1074420Y190500D03* +X566332Y202014D03* +D18* +X576580Y213360D02* +X1038860Y213360D01* +X1061720Y190500D02* +X1074420Y190500D01* +X1061720Y190500D02* +X1038860Y213360D01* +X576580Y213360D02* +X566332Y203112D01* +X566332Y202014D01* +D16* +X1074420Y177800D03* +D18* +X1068324Y177800D01* +X1036828Y209296D01* +X587756Y209296D01* +X581660Y203200D01* +D16* +X581660Y203200D03* +X1082040Y167640D03* +D18* +X1072388Y167640D01* +X1034796Y205232D01* +D16* +X553720Y203200D03* +D18* +X596392Y205232D02* +X1034796Y205232D01* +X596392Y205232D02* +X586232Y195072D01* +X561848Y195072D01* +X553720Y203200D01* +D16* +X1165860Y276860D03* +X396240Y350596D03* +D18* +X1153160Y276860D02* +X1165860Y276860D01* +X1153160Y276860D02* +X1142210Y265910D01* +X602846Y265910D01* +X518160Y350596D01* +X396240Y350596D01* +D16* +X1155700Y266700D03* +D18* +X1150620Y261620D01* +X599440Y261620D01* +X518160Y342900D01* +X414020Y342900D01* +D16* +X414020Y342900D03* +X1222148Y121920D03* +D18* +X1222148Y151992D01* +X1198880Y175260D01* +X1132840Y175260D01* +D16* +X905760Y163580D03* +D18* +X923540Y163580D01* +X931390Y155730D02* +X1113310Y155730D01* +X931390Y155730D02* +X923540Y163580D01* +X1113310Y155730D02* +X1132840Y175260D01* +D16* +X982980Y172720D03* +D18* +X972820Y182880D01* +D16* +X759460Y160020D03* +D18* +X782320Y182880D01* +X972820Y182880D01* +D16* +X919480Y144780D03* +X1143000Y154940D03* +D18* +X1127760Y139700D02* +X924560Y139700D01* +X919480Y144780D01* +X1127760Y139700D02* +X1143000Y154940D01* +D16* +X972820Y165100D03* +D18* +X962660Y175260D01* +X924560Y175260D01* +D16* +X924560Y175260D03* +X995680Y182880D03* +X711200Y170180D03* +D18* +X759460Y170180D01* +X777240Y187960D01* +X990600Y187960D02* +X995680Y182880D01* +X990600Y187960D02* +X777240Y187960D01* +D16* +X909320Y175260D03* +X704129Y158029D03* +D18* +X787400Y175260D02* +X909320Y175260D01* +X787400Y175260D02* +X764540Y152400D01* +X709758Y152400D01* +X704129Y158029D01* +D16* +X1122680Y147320D03* +X889000Y165100D03* +D18* +X897410Y156690D01* +X922309Y156690D01* +X929139Y149860D01* +X1120140Y149860D02* +X1122680Y147320D01* +X1120140Y149860D02* +X929139Y149860D01* +D16* +X1160780Y167640D03* +X906780Y142240D03* +D18* +X1160780Y163061D02* +X1160780Y167640D01* +X1160780Y163061D02* +X1133129Y135410D01* +X907281Y142240D02* +X906780Y142240D01* +X907281Y142240D02* +X914111Y135410D01* +X1133129Y135410D01* +D17* +X443114Y186806D03* +D19* +X393468Y137160D01* +X328928Y137160D01* +X317490Y148598D01* +D17* +X449580Y180340D03* +D19* +X449072Y179832D01* +X442722Y179832D01* +X395732Y132842D01* +X292090Y156464D02* +X292090Y161298D01* +X292090Y156464D02* +X315711Y132842D01* +X395732Y132842D01* +D17* +X449580Y205740D03* +D19* +X449072Y206248D01* +X442722Y206248D01* +X431292Y217678D01* +X324610Y217678D02* +X317490Y224798D01* +X324610Y217678D02* +X431292Y217678D01* +D17* +X443114Y199274D03* +D19* +X429028Y213360D01* +X322580Y213360D01* +X292090Y233135D02* +X292090Y237498D01* +X292090Y233135D02* +X312492Y212733D01* +X321953Y212733D01* +X322580Y213360D01* +D16* +X1206500Y180340D03* +X1023620Y165100D03* +D18* +X1028926Y159794D02* +X1111476Y159794D01* +X1132022Y180340D02* +X1206500Y180340D01* +X1132022Y180340D02* +X1111476Y159794D01* +X1028926Y159794D02* +X1023620Y165100D01* +D16* +X287020Y304800D03* +X251460Y304800D03* +X406400Y317500D03* +X855980Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +D17* +X1221740Y99060D03* +X1246124Y160020D03* +X876300Y251460D03* +D18* +X1160113Y251460D01* +X1178560Y269907D01* +X1178560Y289560D01* +D17* +X1178560Y289560D03* +X1005840Y294640D03* +D18* +X1173480Y294640D02* +X1178560Y289560D01* +X1173480Y294640D02* +X1005840Y294640D01* +X541020Y206611D02* +X541020Y170180D01* +X541020Y206611D02* +X548205Y213795D01* +X548205Y221415D01* +X543560Y134620D02* +X513080Y134620D01* +X492760Y154940D01* +X492760Y165100D01* +X497840Y170180D01* +X541020Y170180D01* +X563854Y154914D02* +X668020Y154914D01* +X563854Y154914D02* +X543560Y134620D01* +X467360Y256540D02* +X406400Y317500D01* +X467360Y256540D02* +X469900Y256540D01* +X469900Y238760D01* +X495300Y213360D01* +X532529Y213360D01* +X540585Y221415D01* +X548205Y221415D01* +X287020Y304800D02* +X251460Y304800D01* +X287020Y304800D02* +X304800Y304800D01* +X320040Y289560D01* +X378460Y289560D01* +X406400Y317500D01* +X1221740Y99060D02* +X1246124Y123444D01* +X1246124Y160020D01* +X1229360Y176784D01* +X1229360Y279400D01* +X1219489Y289271D01* +X1178849Y289271D02* +X1178560Y289560D01* +X1178849Y289271D02* +X1219489Y289271D01* +X1221740Y99060D02* +X1107440Y99060D01* +X1075154Y131346D01* +X869414Y131346D02* +X848360Y152400D01* +X869414Y131346D02* +X1075154Y131346D01* +D17* +X754380Y127000D03* +D18* +X695934Y127000D01* +X668020Y154914D01* +X754380Y127000D02* +X822960Y127000D01* +X848360Y152400D01* +X800100Y48260D02* +X800100Y20320D01* +X800100Y48260D02* +X855980Y48260D01* +X795020Y48260D02* +X767080Y76200D01* +X736600Y76200D01* +X795020Y48260D02* +X800100Y48260D01* +D16* +X401897Y335280D03* +D18* +X408940Y335280D02* +X451955Y292265D01* +X408940Y335280D02* +X401897Y335280D01* +X451955Y292265D02* +X451955Y291935D01* +D16* +X451955Y291935D03* +X190500Y342900D03* +D20* +X174122Y342900D01* +X160020Y328798D01* +X182880Y88515D02* +X272165Y88515D01* +X182880Y88515D02* +X160020Y111375D01* +X160020Y328798D01* +X305185Y121535D02* +X490605Y121535D01* +X305185Y121535D02* +X272165Y88515D01* +D16* +X325120Y299720D03* +D20* +X281940Y342900D02* +X190500Y342900D01* +X281940Y342900D02* +X325120Y299720D01* +X490605Y121876D02* +X490605Y121535D01* +D21* +X490605Y121876D03* +D16* +X556260Y279400D03* +D18* +X515620Y279400D01* +D16* +X515620Y279400D03* +X528320Y81280D03* +D22* +X959358Y102362D02* +X971550Y90170D01* +X412242Y102362D02* +X400050Y90170D01* +X528320Y102362D02* +X959358Y102362D01* +X528320Y102362D02* +X412242Y102362D01* +D23* +X528320Y102362D02* +X528320Y81280D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_inner_l2.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_inner_l2.gbr new file mode 100644 index 0000000000..940b12e22e --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_inner_l2.gbr @@ -0,0 +1,3900 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INCopper Layer 1*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.812800*% +%ADD11C,1.204800*% +%ADD12C,1.920000*% +%ADD13C,1.704341*% +%ADD14C,1.320800*% +%ADD15C,0.756400*% +%ADD16C,0.711200*% +%ADD17C,0.203200*% +%ADD18C,0.956400*% + +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X448468Y174751D02* +X448468Y174751D01* +X446414Y175602D01* +X444842Y177174D01* +X443991Y179228D01* +X443991Y180202D01* +X443983Y180260D01* +X443985Y180318D01* +X443963Y180400D01* +X443951Y180483D01* +X443928Y180537D01* +X443913Y180593D01* +X443870Y180666D01* +X443835Y180743D01* +X443797Y180787D01* +X443768Y180838D01* +X443706Y180895D01* +X443652Y180960D01* +X443603Y180992D01* +X443560Y181032D01* +X443485Y181071D01* +X443415Y181117D01* +X443359Y181135D01* +X443307Y181162D01* +X443239Y181173D01* +X443144Y181203D01* +X443044Y181206D01* +X442976Y181217D01* +X442003Y181217D01* +X439948Y182068D01* +X438376Y183640D01* +X437525Y185694D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y200386D01* +X438376Y202440D01* +X439948Y204012D01* +X442003Y204863D01* +X442976Y204863D01* +X443034Y204871D01* +X443092Y204870D01* +X443174Y204891D01* +X443258Y204903D01* +X443311Y204927D01* +X443367Y204941D01* +X443440Y204984D01* +X443517Y205019D01* +X443562Y205057D01* +X443612Y205087D01* +X443670Y205148D01* +X443734Y205203D01* +X443766Y205251D01* +X443806Y205294D01* +X443845Y205369D01* +X443892Y205439D01* +X443909Y205495D01* +X443936Y205547D01* +X443947Y205615D01* +X443977Y205710D01* +X443980Y205810D01* +X443991Y205878D01* +X443991Y206852D01* +X444842Y208906D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X397951Y79616D02* +X397951Y79616D01* +X394071Y81222D01* +X391102Y84191D01* +X389496Y88071D01* +X389496Y92269D01* +X391102Y96149D01* +X394071Y99118D01* +X397951Y100724D01* +X402149Y100724D01* +X406029Y99118D01* +X408998Y96149D01* +X410604Y92269D01* +X410604Y88071D01* +X408998Y84191D01* +X406029Y81222D01* +X402149Y79616D01* +X397951Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X461451Y47866D02* +X461451Y47866D01* +X457571Y49472D01* +X454602Y52441D01* +X452996Y56321D01* +X452996Y60519D01* +X454602Y64399D01* +X457571Y67368D01* +X461451Y68974D01* +X465649Y68974D01* +X469529Y67368D01* +X472498Y64399D01* +X474104Y60519D01* +X474104Y56321D01* +X472498Y52441D01* +X469529Y49472D01* +X465649Y47866D01* +X461451Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X905951Y47866D02* +X905951Y47866D01* +X902071Y49472D01* +X899102Y52441D01* +X897496Y56321D01* +X897496Y60519D01* +X899102Y64399D01* +X902071Y67368D01* +X905951Y68974D01* +X910149Y68974D01* +X914029Y67368D01* +X916998Y64399D01* +X918604Y60519D01* +X918604Y56321D01* +X916998Y52441D01* +X914029Y49472D01* +X910149Y47866D01* +X905951Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X969451Y79616D02* +X969451Y79616D01* +X965571Y81222D01* +X962602Y84191D01* +X960996Y88071D01* +X960996Y92269D01* +X962602Y96149D01* +X965571Y99118D01* +X969451Y100724D01* +X973649Y100724D01* +X977529Y99118D01* +X980498Y96149D01* +X982104Y92269D01* +X982104Y88071D01* +X980498Y84191D01* +X977529Y81222D01* +X973649Y79616D01* +X969451Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X1080883Y161825D02* +X1080883Y161825D01* +X1078746Y162711D01* +X1077111Y164346D01* +X1076225Y166483D01* +X1076225Y168797D01* +X1077016Y170706D01* +X1077023Y170734D01* +X1077037Y170760D01* +X1077059Y170871D01* +X1077087Y170981D01* +X1077086Y171010D01* +X1077092Y171039D01* +X1077082Y171152D01* +X1077079Y171265D01* +X1077070Y171293D01* +X1077067Y171322D01* +X1077027Y171428D01* +X1076992Y171536D01* +X1076976Y171560D01* +X1076965Y171587D01* +X1076897Y171678D01* +X1076834Y171772D01* +X1076811Y171791D01* +X1076794Y171814D01* +X1076703Y171882D01* +X1076616Y171955D01* +X1076589Y171967D01* +X1076566Y171984D01* +X1076460Y172024D01* +X1076356Y172070D01* +X1076327Y172074D01* +X1076300Y172085D01* +X1076187Y172094D01* +X1076075Y172109D01* +X1076046Y172105D01* +X1076017Y172107D01* +X1075940Y172090D01* +X1075794Y172069D01* +X1075737Y172043D01* +X1075689Y172032D01* +X1075577Y171985D01* +X1073263Y171985D01* +X1071126Y172871D01* +X1069491Y174506D01* +X1068605Y176643D01* +X1068605Y178957D01* +X1069491Y181094D01* +X1071126Y182729D01* +X1072291Y183212D01* +X1072316Y183227D01* +X1072344Y183236D01* +X1072439Y183299D01* +X1072536Y183357D01* +X1072556Y183378D01* +X1072581Y183394D01* +X1072653Y183481D01* +X1072731Y183563D01* +X1072745Y183589D01* +X1072764Y183612D01* +X1072810Y183715D01* +X1072861Y183816D01* +X1072867Y183845D01* +X1072879Y183872D01* +X1072895Y183984D01* +X1072916Y184095D01* +X1072914Y184124D01* +X1072918Y184153D01* +X1072902Y184265D01* +X1072892Y184378D01* +X1072881Y184405D01* +X1072877Y184435D01* +X1072831Y184538D01* +X1072790Y184643D01* +X1072772Y184667D01* +X1072760Y184694D01* +X1072687Y184780D01* +X1072618Y184870D01* +X1072595Y184888D01* +X1072576Y184910D01* +X1072509Y184952D01* +X1072391Y185040D01* +X1072332Y185062D01* +X1072291Y185088D01* +X1071126Y185571D01* +X1069491Y187206D01* +X1068605Y189343D01* +X1068605Y191657D01* +X1069491Y193794D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076077Y184688D01* +X1076031Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183894D01* +X1075963Y183866D01* +X1076009Y183763D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173853D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080723Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085334Y172569D01* +X1086969Y170934D01* +X1087855Y168797D01* +X1087855Y166483D01* +X1086969Y164346D01* +X1085334Y162711D01* +X1083197Y161825D01* +X1080883Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X565175Y196199D02* +X565175Y196199D01* +X563038Y197085D01* +X561402Y198720D01* +X560718Y200372D01* +X560703Y200397D01* +X560694Y200425D01* +X560631Y200519D01* +X560574Y200616D01* +X560552Y200637D01* +X560536Y200661D01* +X560449Y200734D01* +X560367Y200812D01* +X560341Y200825D01* +X560318Y200844D01* +X560215Y200890D01* +X560114Y200942D01* +X560085Y200948D01* +X560059Y200959D01* +X559946Y200975D01* +X559835Y200997D01* +X559806Y200994D01* +X559777Y200998D01* +X559665Y200982D01* +X559552Y200972D01* +X559525Y200962D01* +X559496Y200958D01* +X559392Y200911D01* +X559287Y200870D01* +X559263Y200853D01* +X559237Y200841D01* +X559150Y200767D01* +X559060Y200699D01* +X559042Y200675D01* +X559020Y200656D01* +X558979Y200590D01* +X558890Y200471D01* +X558868Y200413D01* +X558842Y200372D01* +X558649Y199906D01* +X557014Y198271D01* +X554877Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548791Y199906D01* +X547905Y202043D01* +X547905Y204357D01* +X548791Y206494D01* +X550426Y208129D01* +X552563Y209015D01* +X554877Y209015D01* +X557181Y208060D01* +X557209Y208053D01* +X557235Y208040D01* +X557346Y208018D01* +X557456Y207989D01* +X557485Y207990D01* +X557514Y207985D01* +X557627Y207994D01* +X557740Y207998D01* +X557768Y208007D01* +X557797Y208009D01* +X557903Y208050D01* +X558011Y208084D01* +X558035Y208101D01* +X558063Y208111D01* +X558153Y208179D01* +X558247Y208243D01* +X558266Y208265D01* +X558289Y208283D01* +X558357Y208374D01* +X558430Y208460D01* +X558442Y208487D01* +X558459Y208510D01* +X558499Y208617D01* +X558545Y208720D01* +X558549Y208749D01* +X558560Y208776D01* +X558569Y208889D01* +X558584Y209001D01* +X558580Y209031D01* +X558582Y209060D01* +X558565Y209136D01* +X558544Y209283D01* +X558518Y209340D01* +X558507Y209387D01* +X558065Y210453D01* +X558065Y212767D01* +X558951Y214904D01* +X560586Y216539D01* +X562723Y217425D01* +X565037Y217425D01* +X567174Y216539D01* +X568809Y214904D01* +X569695Y212767D01* +X569695Y210453D01* +X568832Y208371D01* +X568818Y208314D01* +X568794Y208261D01* +X568782Y208177D01* +X568761Y208096D01* +X568763Y208037D01* +X568755Y207979D01* +X568767Y207896D01* +X568769Y207812D01* +X568787Y207756D01* +X568796Y207698D01* +X568830Y207621D01* +X568856Y207541D01* +X568889Y207492D01* +X568913Y207439D01* +X568967Y207375D01* +X569014Y207305D01* +X569059Y207267D01* +X569097Y207222D01* +X569156Y207186D01* +X569232Y207122D01* +X569323Y207081D01* +X569382Y207045D01* +X569626Y206943D01* +X571261Y205308D01* +X572146Y203171D01* +X572146Y200857D01* +X571261Y198720D01* +X569626Y197085D01* +X567488Y196199D01* +X565175Y196199D01* +G37* +%LPD*% +%LPC*% +G36* +X498659Y225325D02* +X498659Y225325D01* +X496522Y226211D01* +X495704Y227028D01* +X495658Y227064D01* +X495617Y227106D01* +X495545Y227149D01* +X495477Y227199D01* +X495423Y227220D01* +X495372Y227250D01* +X495290Y227270D01* +X495212Y227301D01* +X495153Y227305D01* +X495097Y227320D01* +X495012Y227317D01* +X494928Y227324D01* +X494871Y227313D01* +X494812Y227311D01* +X494732Y227285D01* +X494649Y227268D01* +X494598Y227241D01* +X494542Y227223D01* +X494486Y227183D01* +X494397Y227137D01* +X494325Y227068D01* +X494269Y227028D01* +X493482Y226242D01* +X491345Y225357D01* +X489032Y225357D01* +X486895Y226242D01* +X485259Y227878D01* +X484374Y230015D01* +X484374Y231930D01* +X484366Y231988D01* +X484367Y232046D01* +X484346Y232128D01* +X484334Y232212D01* +X484310Y232265D01* +X484295Y232321D01* +X484252Y232394D01* +X484218Y232471D01* +X484180Y232516D01* +X484150Y232566D01* +X484088Y232624D01* +X484034Y232688D01* +X483985Y232720D01* +X483943Y232760D01* +X483868Y232799D01* +X483797Y232846D01* +X483742Y232863D01* +X483690Y232890D01* +X483621Y232901D01* +X483526Y232931D01* +X483427Y232934D01* +X483358Y232945D01* +X481443Y232945D01* +X479306Y233831D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X481443Y244575D01* +X483757Y244575D01* +X485894Y243689D01* +X487529Y242054D01* +X488415Y239917D01* +X488415Y238002D01* +X488423Y237944D01* +X488421Y237885D01* +X488443Y237804D01* +X488455Y237720D01* +X488478Y237667D01* +X488493Y237610D01* +X488536Y237538D01* +X488571Y237461D01* +X488609Y237416D01* +X488638Y237366D01* +X488700Y237308D01* +X488754Y237244D01* +X488803Y237211D01* +X488846Y237171D01* +X488921Y237133D01* +X488991Y237086D01* +X489047Y237068D01* +X489099Y237042D01* +X489167Y237030D01* +X489262Y237000D01* +X489362Y236998D01* +X489430Y236986D01* +X491345Y236986D01* +X493482Y236101D01* +X494300Y235283D01* +X494347Y235248D01* +X494387Y235206D01* +X494460Y235163D01* +X494527Y235112D01* +X494582Y235091D01* +X494632Y235062D01* +X494714Y235041D01* +X494793Y235011D01* +X494851Y235006D01* +X494908Y234992D01* +X494992Y234994D01* +X495076Y234987D01* +X495134Y234999D01* +X495192Y235001D01* +X495272Y235027D01* +X495355Y235043D01* +X495407Y235070D01* +X495463Y235088D01* +X495519Y235128D01* +X495607Y235174D01* +X495680Y235243D01* +X495736Y235283D01* +X496522Y236069D01* +X498659Y236955D01* +X500973Y236955D01* +X503110Y236069D01* +X504745Y234434D01* +X505631Y232297D01* +X505631Y229983D01* +X504745Y227846D01* +X503110Y226211D01* +X500973Y225325D01* +X498659Y225325D01* +G37* +%LPD*% +%LPC*% +G36* +X569782Y11683D02* +X569782Y11683D01* +X566608Y12998D01* +X564178Y15428D01* +X562863Y18602D01* +X562863Y22038D01* +X564178Y25212D01* +X566608Y27642D01* +X569782Y28957D01* +X573218Y28957D01* +X576392Y27642D01* +X578822Y25212D01* +X580137Y22038D01* +X580137Y18602D01* +X578822Y15428D01* +X576392Y12998D01* +X573218Y11683D01* +X569782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X772982Y11683D02* +X772982Y11683D01* +X769808Y12998D01* +X767378Y15428D01* +X766063Y18602D01* +X766063Y22038D01* +X767378Y25212D01* +X769808Y27642D01* +X772982Y28957D01* +X776418Y28957D01* +X779592Y27642D01* +X782022Y25212D01* +X783337Y22038D01* +X783337Y18602D01* +X782022Y15428D01* +X779592Y12998D01* +X776418Y11683D01* +X772982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y11683D02* +X747582Y11683D01* +X744408Y12998D01* +X741978Y15428D01* +X740663Y18602D01* +X740663Y22038D01* +X741978Y25212D01* +X744408Y27642D01* +X747582Y28957D01* +X751018Y28957D01* +X754192Y27642D01* +X756622Y25212D01* +X757937Y22038D01* +X757937Y18602D01* +X756622Y15428D01* +X754192Y12998D01* +X751018Y11683D01* +X747582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X595182Y11683D02* +X595182Y11683D01* +X592008Y12998D01* +X589578Y15428D01* +X588263Y18602D01* +X588263Y22038D01* +X589578Y25212D01* +X592008Y27642D01* +X595182Y28957D01* +X598618Y28957D01* +X601792Y27642D01* +X604222Y25212D01* +X605537Y22038D01* +X605537Y18602D01* +X604222Y15428D01* +X601792Y12998D01* +X598618Y11683D01* +X595182Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X798382Y11683D02* +X798382Y11683D01* +X795208Y12998D01* +X792778Y15428D01* +X791463Y18602D01* +X791463Y22038D01* +X792778Y25212D01* +X795208Y27642D01* +X798382Y28957D01* +X801818Y28957D01* +X804992Y27642D01* +X807422Y25212D01* +X808737Y22038D01* +X808737Y18602D01* +X807422Y15428D01* +X804992Y12998D01* +X801818Y11683D01* +X798382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X671382Y11683D02* +X671382Y11683D01* +X668208Y12998D01* +X665778Y15428D01* +X664463Y18602D01* +X664463Y22038D01* +X665778Y25212D01* +X668208Y27642D01* +X671382Y28957D01* +X674818Y28957D01* +X677992Y27642D01* +X680422Y25212D01* +X681737Y22038D01* +X681737Y18602D01* +X680422Y15428D01* +X677992Y12998D01* +X674818Y11683D01* +X671382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X709482Y67563D02* +X709482Y67563D01* +X706308Y68878D01* +X703878Y71308D01* +X702563Y74482D01* +X702563Y77918D01* +X703878Y81092D01* +X706308Y83522D01* +X709482Y84837D01* +X712918Y84837D01* +X716092Y83522D01* +X718522Y81092D01* +X719837Y77918D01* +X719837Y74482D01* +X718522Y71308D01* +X716092Y68878D01* +X712918Y67563D01* +X709482Y67563D01* +G37* +%LPD*% +%LPC*% +G36* +X645982Y11683D02* +X645982Y11683D01* +X642808Y12998D01* +X640378Y15428D01* +X639063Y18602D01* +X639063Y22038D01* +X640378Y25212D01* +X642808Y27642D01* +X645982Y28957D01* +X649418Y28957D01* +X652592Y27642D01* +X655022Y25212D01* +X656337Y22038D01* +X656337Y18602D01* +X655022Y15428D01* +X652592Y12998D01* +X649418Y11683D01* +X645982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X734882Y67563D02* +X734882Y67563D01* +X731708Y68878D01* +X729278Y71308D01* +X727963Y74482D01* +X727963Y77918D01* +X729278Y81092D01* +X731708Y83522D01* +X734882Y84837D01* +X738318Y84837D01* +X741492Y83522D01* +X743922Y81092D01* +X745237Y77918D01* +X745237Y74482D01* +X743922Y71308D01* +X741492Y68878D01* +X738318Y67563D01* +X734882Y67563D01* +G37* +%LPD*% +%LPC*% +G36* +X620582Y11683D02* +X620582Y11683D01* +X617408Y12998D01* +X614978Y15428D01* +X613663Y18602D01* +X613663Y22038D01* +X614978Y25212D01* +X617408Y27642D01* +X620582Y28957D01* +X624018Y28957D01* +X627192Y27642D01* +X629622Y25212D01* +X630937Y22038D01* +X630937Y18602D01* +X629622Y15428D01* +X627192Y12998D01* +X624018Y11683D01* +X620582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X905623Y136425D02* +X905623Y136425D01* +X903486Y137311D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X922774Y149709D01* +X924409Y148074D01* +X925295Y145937D01* +X925295Y143623D01* +X924409Y141486D01* +X922774Y139851D01* +X920637Y138965D01* +X918323Y138965D01* +X916186Y139851D01* +X914551Y141486D01* +X914548Y141492D01* +X914504Y141566D01* +X914469Y141645D01* +X914432Y141688D01* +X914404Y141737D01* +X914341Y141796D01* +X914285Y141862D01* +X914238Y141893D01* +X914197Y141932D01* +X914120Y141972D01* +X914049Y142019D01* +X913995Y142037D01* +X913944Y142063D01* +X913860Y142079D01* +X913778Y142105D01* +X913721Y142107D01* +X913665Y142118D01* +X913580Y142110D01* +X913494Y142112D01* +X913439Y142098D01* +X913382Y142093D01* +X913302Y142062D01* +X913219Y142041D01* +X913170Y142012D01* +X913117Y141991D01* +X913048Y141939D01* +X912974Y141895D01* +X912935Y141854D01* +X912890Y141820D01* +X912838Y141751D01* +X912780Y141688D01* +X912754Y141637D01* +X912720Y141592D01* +X912689Y141512D01* +X912650Y141435D01* +X912642Y141386D01* +X912619Y141326D01* +X912608Y141181D01* +X912595Y141104D01* +X912595Y141083D01* +X911709Y138946D01* +X910074Y137311D01* +X907937Y136425D01* +X905623Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X971663Y159285D02* +X971663Y159285D01* +X969526Y160171D01* +X967891Y161806D01* +X967005Y163943D01* +X967005Y166257D01* +X967891Y168394D01* +X969526Y170029D01* +X971663Y170915D01* +X973977Y170915D01* +X975886Y170124D01* +X975914Y170117D01* +X975940Y170103D01* +X976051Y170081D01* +X976161Y170053D01* +X976190Y170054D01* +X976219Y170048D01* +X976332Y170058D01* +X976445Y170061D01* +X976473Y170070D01* +X976502Y170073D01* +X976608Y170113D01* +X976716Y170148D01* +X976740Y170164D01* +X976767Y170175D01* +X976858Y170243D01* +X976952Y170306D01* +X976971Y170329D01* +X976994Y170346D01* +X977062Y170437D01* +X977135Y170524D01* +X977147Y170551D01* +X977164Y170574D01* +X977204Y170680D01* +X977250Y170784D01* +X977254Y170813D01* +X977265Y170840D01* +X977274Y170953D01* +X977289Y171065D01* +X977285Y171094D01* +X977287Y171123D01* +X977270Y171200D01* +X977249Y171346D01* +X977223Y171403D01* +X977212Y171451D01* +X977165Y171563D01* +X977165Y173877D01* +X978051Y176014D01* +X979686Y177649D01* +X981823Y178535D01* +X984137Y178535D01* +X986274Y177649D01* +X987909Y176014D01* +X988795Y173877D01* +X988795Y171563D01* +X987909Y169426D01* +X986274Y167791D01* +X984137Y166905D01* +X981823Y166905D01* +X979914Y167696D01* +X979886Y167703D01* +X979860Y167717D01* +X979749Y167739D01* +X979639Y167767D01* +X979610Y167766D01* +X979581Y167772D01* +X979468Y167762D01* +X979355Y167759D01* +X979327Y167750D01* +X979298Y167747D01* +X979192Y167707D01* +X979084Y167672D01* +X979060Y167656D01* +X979033Y167645D01* +X978942Y167577D01* +X978848Y167514D01* +X978829Y167491D01* +X978806Y167474D01* +X978738Y167383D01* +X978665Y167296D01* +X978653Y167269D01* +X978636Y167246D01* +X978596Y167140D01* +X978550Y167036D01* +X978546Y167007D01* +X978535Y166980D01* +X978526Y166867D01* +X978511Y166755D01* +X978515Y166726D01* +X978513Y166697D01* +X978530Y166620D01* +X978551Y166474D01* +X978577Y166417D01* +X978588Y166369D01* +X978635Y166257D01* +X978635Y163943D01* +X977749Y161806D01* +X976114Y160171D01* +X973977Y159285D01* +X971663Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X904604Y157765D02* +X904604Y157765D01* +X902467Y158650D01* +X900831Y160286D01* +X899946Y162423D01* +X899946Y164736D01* +X900831Y166873D01* +X902467Y168509D01* +X904644Y169411D01* +X904681Y169418D01* +X904793Y169434D01* +X904820Y169446D01* +X904848Y169452D01* +X904949Y169504D01* +X905052Y169550D01* +X905075Y169569D01* +X905101Y169583D01* +X905183Y169661D01* +X905269Y169734D01* +X905286Y169758D01* +X905307Y169779D01* +X905364Y169876D01* +X905427Y169971D01* +X905436Y169999D01* +X905451Y170024D01* +X905479Y170134D01* +X905513Y170242D01* +X905513Y170271D01* +X905521Y170299D01* +X905517Y170412D01* +X905520Y170526D01* +X905513Y170554D01* +X905512Y170584D01* +X905477Y170692D01* +X905448Y170801D01* +X905433Y170826D01* +X905424Y170854D01* +X905379Y170918D01* +X905303Y171045D01* +X905257Y171088D01* +X905229Y171127D01* +X904391Y171966D01* +X903505Y174103D01* +X903505Y176417D01* +X904391Y178554D01* +X906026Y180189D01* +X908163Y181075D01* +X910477Y181075D01* +X912614Y180189D01* +X914249Y178554D01* +X915135Y176417D01* +X915135Y174103D01* +X914249Y171966D01* +X912614Y170331D01* +X910437Y169429D01* +X910400Y169421D01* +X910288Y169405D01* +X910261Y169393D01* +X910232Y169388D01* +X910131Y169335D01* +X910028Y169289D01* +X910006Y169270D01* +X909980Y169257D01* +X909898Y169179D01* +X909811Y169106D01* +X909795Y169081D01* +X909774Y169061D01* +X909716Y168963D01* +X909654Y168869D01* +X909645Y168841D01* +X909630Y168816D01* +X909602Y168706D01* +X909568Y168598D01* +X909567Y168568D01* +X909560Y168540D01* +X909563Y168427D01* +X909560Y168314D01* +X909568Y168285D01* +X909569Y168256D01* +X909604Y168148D01* +X909632Y168039D01* +X909647Y168013D01* +X909656Y167985D01* +X909702Y167921D01* +X909778Y167794D01* +X909823Y167751D01* +X909851Y167712D01* +X910690Y166873D01* +X911575Y164736D01* +X911575Y162423D01* +X910690Y160286D01* +X909054Y158650D01* +X906917Y157765D01* +X904604Y157765D01* +G37* +%LPD*% +%LPC*% +G36* +X1192643Y273585D02* +X1192643Y273585D01* +X1190506Y274471D01* +X1188871Y276106D01* +X1187985Y278243D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194957Y285215D01* +X1197094Y284329D01* +X1198729Y282694D01* +X1199212Y281529D01* +X1199227Y281504D01* +X1199236Y281476D01* +X1199299Y281382D01* +X1199356Y281284D01* +X1199378Y281264D01* +X1199394Y281239D01* +X1199481Y281167D01* +X1199563Y281089D01* +X1199589Y281075D01* +X1199612Y281056D01* +X1199715Y281010D01* +X1199816Y280959D01* +X1199845Y280953D01* +X1199872Y280941D01* +X1199984Y280925D01* +X1200095Y280904D01* +X1200124Y280906D01* +X1200153Y280902D01* +X1200265Y280918D01* +X1200378Y280928D01* +X1200406Y280939D01* +X1200434Y280943D01* +X1200537Y280989D01* +X1200643Y281030D01* +X1200667Y281048D01* +X1200694Y281060D01* +X1200780Y281133D01* +X1200870Y281202D01* +X1200888Y281225D01* +X1200910Y281244D01* +X1200952Y281311D01* +X1201040Y281429D01* +X1201058Y281476D01* +X1201075Y281502D01* +X1201079Y281515D01* +X1201088Y281529D01* +X1201571Y282694D01* +X1203206Y284329D01* +X1205343Y285215D01* +X1207657Y285215D01* +X1209794Y284329D01* +X1211429Y282694D01* +X1212315Y280557D01* +X1212315Y278243D01* +X1211429Y276106D01* +X1209794Y274471D01* +X1207657Y273585D01* +X1205343Y273585D01* +X1203206Y274471D01* +X1201571Y276106D01* +X1201088Y277271D01* +X1201073Y277296D01* +X1201064Y277324D01* +X1201001Y277419D01* +X1200943Y277516D01* +X1200922Y277536D01* +X1200906Y277561D01* +X1200819Y277634D01* +X1200737Y277711D01* +X1200711Y277725D01* +X1200688Y277744D01* +X1200585Y277790D01* +X1200484Y277841D01* +X1200455Y277847D01* +X1200428Y277859D01* +X1200316Y277875D01* +X1200205Y277896D01* +X1200176Y277894D01* +X1200147Y277898D01* +X1200035Y277882D01* +X1199922Y277872D01* +X1199895Y277861D01* +X1199865Y277857D01* +X1199762Y277811D01* +X1199657Y277770D01* +X1199633Y277752D01* +X1199606Y277740D01* +X1199520Y277667D01* +X1199430Y277598D01* +X1199412Y277575D01* +X1199390Y277556D01* +X1199349Y277490D01* +X1199260Y277371D01* +X1199244Y277329D01* +X1199227Y277304D01* +X1199222Y277287D01* +X1199212Y277271D01* +X1198729Y276106D01* +X1197094Y274471D01* +X1194957Y273585D01* +X1192643Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X1022463Y159285D02* +X1022463Y159285D01* +X1020326Y160171D01* +X1018691Y161806D01* +X1017805Y163943D01* +X1017805Y166257D01* +X1018691Y168394D01* +X1019759Y169462D01* +X1019794Y169509D01* +X1019836Y169549D01* +X1019879Y169622D01* +X1019930Y169689D01* +X1019951Y169744D01* +X1019980Y169794D01* +X1020001Y169876D01* +X1020031Y169955D01* +X1020036Y170013D01* +X1020050Y170070D01* +X1020048Y170154D01* +X1020055Y170238D01* +X1020043Y170296D01* +X1020041Y170354D01* +X1020015Y170434D01* +X1019999Y170517D01* +X1019972Y170569D01* +X1019954Y170625D01* +X1019914Y170681D01* +X1019868Y170769D01* +X1019799Y170842D01* +X1019759Y170898D01* +X1018691Y171966D01* +X1017805Y174103D01* +X1017805Y176417D01* +X1018691Y178554D01* +X1020326Y180189D01* +X1022463Y181075D01* +X1024777Y181075D01* +X1026914Y180189D01* +X1028549Y178554D01* +X1029435Y176417D01* +X1029435Y174103D01* +X1028549Y171966D01* +X1027481Y170898D01* +X1027446Y170851D01* +X1027404Y170811D01* +X1027361Y170738D01* +X1027310Y170671D01* +X1027289Y170616D01* +X1027260Y170566D01* +X1027239Y170484D01* +X1027209Y170405D01* +X1027204Y170347D01* +X1027190Y170290D01* +X1027192Y170206D01* +X1027185Y170122D01* +X1027197Y170064D01* +X1027199Y170006D01* +X1027225Y169926D01* +X1027241Y169843D01* +X1027268Y169791D01* +X1027286Y169735D01* +X1027326Y169679D01* +X1027372Y169591D01* +X1027441Y169518D01* +X1027481Y169462D01* +X1028549Y168394D01* +X1029435Y166257D01* +X1029435Y163943D01* +X1028549Y161806D01* +X1026914Y160171D01* +X1024777Y159285D01* +X1022463Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y153241D02* +X290487Y153241D01* +X287526Y154468D01* +X285259Y156734D01* +X284033Y159695D01* +X284033Y162900D01* +X285259Y165862D01* +X287526Y168128D01* +X290487Y169355D01* +X293692Y169355D01* +X296653Y168128D01* +X298920Y165862D01* +X300146Y162900D01* +X300146Y159695D01* +X298920Y156734D01* +X296653Y154468D01* +X293692Y153241D01* +X290487Y153241D01* +G37* +%LPD*% +%LPC*% +G36* +X178006Y147147D02* +X178006Y147147D01* +X175045Y148374D01* +X172779Y150640D01* +X171552Y153601D01* +X171552Y156806D01* +X172779Y159768D01* +X175045Y162034D01* +X178006Y163261D01* +X181211Y163261D01* +X184173Y162034D01* +X186439Y159768D01* +X187665Y156806D01* +X187665Y153601D01* +X186439Y150640D01* +X184173Y148374D01* +X181211Y147147D01* +X178006Y147147D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y165941D02* +X315887Y165941D01* +X312926Y167168D01* +X310659Y169434D01* +X309433Y172395D01* +X309433Y175600D01* +X310659Y178562D01* +X312926Y180828D01* +X315887Y182055D01* +X319092Y182055D01* +X322053Y180828D01* +X324320Y178562D01* +X325546Y175600D01* +X325546Y172395D01* +X324320Y169434D01* +X322053Y167168D01* +X319092Y165941D01* +X315887Y165941D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y178641D02* +X290487Y178641D01* +X287526Y179868D01* +X285259Y182134D01* +X284033Y185095D01* +X284033Y188300D01* +X285259Y191262D01* +X287526Y193528D01* +X290487Y194755D01* +X293692Y194755D01* +X296653Y193528D01* +X298920Y191262D01* +X300146Y188300D01* +X300146Y185095D01* +X298920Y182134D01* +X296653Y179868D01* +X293692Y178641D01* +X290487Y178641D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y140541D02* +X315887Y140541D01* +X312926Y141768D01* +X310659Y144034D01* +X309433Y146995D01* +X309433Y150200D01* +X310659Y153162D01* +X312926Y155428D01* +X315887Y156655D01* +X319092Y156655D01* +X322053Y155428D01* +X324320Y153162D01* +X325546Y150200D01* +X325546Y146995D01* +X324320Y144034D01* +X322053Y141768D01* +X319092Y140541D01* +X315887Y140541D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y191341D02* +X315887Y191341D01* +X312926Y192568D01* +X310659Y194834D01* +X309433Y197795D01* +X309433Y201000D01* +X310659Y203962D01* +X312926Y206228D01* +X315887Y207455D01* +X319092Y207455D01* +X322053Y206228D01* +X324320Y203962D01* +X325546Y201000D01* +X325546Y197795D01* +X324320Y194834D01* +X322053Y192568D01* +X319092Y191341D01* +X315887Y191341D01* +G37* +%LPD*% +%LPC*% +G36* +X193201Y121729D02* +X193201Y121729D01* +X190240Y122955D01* +X187974Y125221D01* +X186747Y128183D01* +X186747Y131388D01* +X187974Y134349D01* +X190240Y136615D01* +X193201Y137842D01* +X196406Y137842D01* +X199368Y136615D01* +X201634Y134349D01* +X202860Y131388D01* +X202860Y128183D01* +X201634Y125221D01* +X199368Y122955D01* +X196406Y121729D01* +X193201Y121729D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y229441D02* +X290487Y229441D01* +X287526Y230668D01* +X285259Y232934D01* +X284033Y235895D01* +X284033Y239100D01* +X285259Y242062D01* +X287526Y244328D01* +X290487Y245555D01* +X293692Y245555D01* +X296653Y244328D01* +X298920Y242062D01* +X300146Y239100D01* +X300146Y235895D01* +X298920Y232934D01* +X296653Y230668D01* +X293692Y229441D01* +X290487Y229441D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y204041D02* +X290487Y204041D01* +X287526Y205268D01* +X285259Y207534D01* +X284033Y210495D01* +X284033Y213700D01* +X285259Y216662D01* +X287526Y218928D01* +X290487Y220155D01* +X293692Y220155D01* +X296653Y218928D01* +X298920Y216662D01* +X300146Y213700D01* +X300146Y210495D01* +X298920Y207534D01* +X296653Y205268D01* +X293692Y204041D01* +X290487Y204041D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y216741D02* +X315887Y216741D01* +X312926Y217968D01* +X310659Y220234D01* +X309433Y223195D01* +X309433Y226400D01* +X310659Y229362D01* +X312926Y231628D01* +X315887Y232855D01* +X319092Y232855D01* +X322053Y231628D01* +X324320Y229362D01* +X325546Y226400D01* +X325546Y223195D01* +X324320Y220234D01* +X322053Y217968D01* +X319092Y216741D01* +X315887Y216741D01* +G37* +%LPD*% +%LPC*% +G36* +X193206Y222847D02* +X193206Y222847D01* +X190245Y224074D01* +X187979Y226340D01* +X186752Y229301D01* +X186752Y232506D01* +X187979Y235468D01* +X190245Y237734D01* +X193206Y238961D01* +X196411Y238961D01* +X199373Y237734D01* +X201639Y235468D01* +X202865Y232506D01* +X202865Y229301D01* +X201639Y226340D01* +X199373Y224074D01* +X196411Y222847D01* +X193206Y222847D01* +G37* +%LPD*% +%LPC*% +G36* +X489249Y115061D02* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496382Y118016D01* +X494465Y116099D01* +X491960Y115061D01* +X489249Y115061D01* +G37* +%LPD*% +%LPC*% +G36* +X405243Y311685D02* +X405243Y311685D01* +X403106Y312571D01* +X401471Y314206D01* +X400585Y316343D01* +X400585Y318657D01* +X401471Y320794D01* +X403106Y322429D01* +X405243Y323315D01* +X407557Y323315D01* +X409694Y322429D01* +X411329Y320794D01* +X412215Y318657D01* +X412215Y316343D01* +X411329Y314206D01* +X409694Y312571D01* +X407557Y311685D01* +X405243Y311685D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y212625D02* +X1205343Y212625D01* +X1203206Y213511D01* +X1201571Y215146D01* +X1200685Y217283D01* +X1200685Y219597D01* +X1201571Y221734D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209794Y223369D01* +X1211429Y221734D01* +X1212315Y219597D01* +X1212315Y217283D01* +X1211429Y215146D01* +X1209794Y213511D01* +X1207657Y212625D01* +X1205343Y212625D01* +G37* +%LPD*% +%LPC*% +G36* +X547048Y215601D02* +X547048Y215601D01* +X544911Y216486D01* +X543275Y218122D01* +X542390Y220259D01* +X542390Y222572D01* +X543275Y224709D01* +X544911Y226345D01* +X547048Y227230D01* +X549361Y227230D01* +X551498Y226345D01* +X553134Y224709D01* +X554019Y222572D01* +X554019Y220259D01* +X553134Y218122D01* +X551498Y216486D01* +X549361Y215601D01* +X547048Y215601D01* +G37* +%LPD*% +%LPC*% +G36* +X517003Y233679D02* +X517003Y233679D01* +X514866Y234565D01* +X513231Y236200D01* +X512345Y238337D01* +X512345Y240651D01* +X513231Y242788D01* +X514866Y244423D01* +X517003Y245309D01* +X519317Y245309D01* +X521454Y244423D01* +X523089Y242788D01* +X523975Y240651D01* +X523975Y238337D01* +X523089Y236200D01* +X521454Y234565D01* +X519317Y233679D01* +X517003Y233679D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y235485D02* +X1205343Y235485D01* +X1203206Y236371D01* +X1201571Y238006D01* +X1200685Y240143D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1211429Y244594D01* +X1212315Y242457D01* +X1212315Y240143D01* +X1211429Y238006D01* +X1209794Y236371D01* +X1207657Y235485D01* +X1205343Y235485D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y197385D02* +X1205343Y197385D01* +X1203206Y198271D01* +X1201571Y199906D01* +X1200685Y202043D01* +X1200685Y204357D01* +X1201571Y206494D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1211429Y206494D01* +X1212315Y204357D01* +X1212315Y202043D01* +X1211429Y199906D01* +X1209794Y198271D01* +X1207657Y197385D01* +X1205343Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X580503Y197385D02* +X580503Y197385D01* +X578366Y198271D01* +X576731Y199906D01* +X575845Y202043D01* +X575845Y204357D01* +X576731Y206494D01* +X578366Y208129D01* +X580503Y209015D01* +X582817Y209015D01* +X584954Y208129D01* +X586589Y206494D01* +X587475Y204357D01* +X587475Y202043D01* +X586589Y199906D01* +X584954Y198271D01* +X582817Y197385D01* +X580503Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X395083Y344781D02* +X395083Y344781D01* +X392946Y345667D01* +X391311Y347302D01* +X390425Y349439D01* +X390425Y351753D01* +X391311Y353890D01* +X392946Y355525D01* +X395083Y356411D01* +X397397Y356411D01* +X399534Y355525D01* +X401169Y353890D01* +X402055Y351753D01* +X402055Y349439D01* +X401169Y347302D01* +X399534Y345667D01* +X397397Y344781D01* +X395083Y344781D01* +G37* +%LPD*% +%LPC*% +G36* +X412863Y337085D02* +X412863Y337085D01* +X410726Y337971D01* +X409091Y339606D01* +X408205Y341743D01* +X408205Y344057D01* +X409091Y346194D01* +X410726Y347829D01* +X412863Y348715D01* +X415177Y348715D01* +X417314Y347829D01* +X418949Y346194D01* +X419835Y344057D01* +X419835Y341743D01* +X418949Y339606D01* +X417314Y337971D01* +X415177Y337085D01* +X412863Y337085D01* +G37* +%LPD*% +%LPC*% +G36* +X189343Y337085D02* +X189343Y337085D01* +X187206Y337971D01* +X185571Y339606D01* +X184685Y341743D01* +X184685Y344057D01* +X185571Y346194D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195429Y339606D01* +X193794Y337971D01* +X191657Y337085D01* +X189343Y337085D01* +G37* +%LPD*% +%LPC*% +G36* +X994523Y177065D02* +X994523Y177065D01* +X992386Y177951D01* +X990751Y179586D01* +X989865Y181723D01* +X989865Y184037D01* +X990751Y186174D01* +X992386Y187809D01* +X994523Y188695D01* +X996837Y188695D01* +X998974Y187809D01* +X1000609Y186174D01* +X1001495Y184037D01* +X1001495Y181723D01* +X1000609Y179586D01* +X998974Y177951D01* +X996837Y177065D01* +X994523Y177065D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y174525D02* +X1205343Y174525D01* +X1203206Y175411D01* +X1201571Y177046D01* +X1200685Y179183D01* +X1200685Y181497D01* +X1201571Y183634D01* +X1203206Y185269D01* +X1205343Y186155D01* +X1207657Y186155D01* +X1209794Y185269D01* +X1211429Y183634D01* +X1212315Y181497D01* +X1212315Y179183D01* +X1211429Y177046D01* +X1209794Y175411D01* +X1207657Y174525D01* +X1205343Y174525D01* +G37* +%LPD*% +%LPC*% +G36* +X450798Y286120D02* +X450798Y286120D01* +X448661Y287005D01* +X447025Y288641D01* +X446140Y290778D01* +X446140Y293091D01* +X447025Y295228D01* +X448661Y296864D01* +X450798Y297749D01* +X453111Y297749D01* +X455248Y296864D01* +X456884Y295228D01* +X457769Y293091D01* +X457769Y290778D01* +X456884Y288641D01* +X455248Y287005D01* +X453111Y286120D01* +X450798Y286120D01* +G37* +%LPD*% +%LPC*% +G36* +X468743Y250725D02* +X468743Y250725D01* +X466606Y251611D01* +X464971Y253246D01* +X464085Y255383D01* +X464085Y257697D01* +X464971Y259834D01* +X466606Y261469D01* +X468743Y262355D01* +X471057Y262355D01* +X473194Y261469D01* +X474829Y259834D01* +X475715Y257697D01* +X475715Y255383D01* +X474829Y253246D01* +X473194Y251611D01* +X471057Y250725D01* +X468743Y250725D01* +G37* +%LPD*% +%LPC*% +G36* +X923403Y169445D02* +X923403Y169445D01* +X921266Y170331D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919631Y178554D01* +X921266Y180189D01* +X923403Y181075D01* +X925717Y181075D01* +X927854Y180189D01* +X929489Y178554D01* +X930375Y176417D01* +X930375Y174103D01* +X929489Y171966D01* +X927854Y170331D01* +X925717Y169445D01* +X923403Y169445D01* +G37* +%LPD*% +%LPC*% +G36* +X400740Y329465D02* +X400740Y329465D01* +X398603Y330351D01* +X396967Y331986D01* +X396082Y334123D01* +X396082Y336437D01* +X396967Y338574D01* +X398603Y340209D01* +X400740Y341095D01* +X403053Y341095D01* +X405191Y340209D01* +X406826Y338574D01* +X407712Y336437D01* +X407712Y334123D01* +X406826Y331986D01* +X405191Y330351D01* +X403053Y329465D01* +X400740Y329465D01* +G37* +%LPD*% +%LPC*% +G36* +X285863Y298985D02* +X285863Y298985D01* +X283726Y299871D01* +X282091Y301506D01* +X281205Y303643D01* +X281205Y305957D01* +X282091Y308094D01* +X283726Y309729D01* +X285863Y310615D01* +X288177Y310615D01* +X290314Y309729D01* +X291949Y308094D01* +X292835Y305957D01* +X292835Y303643D01* +X291949Y301506D01* +X290314Y299871D01* +X288177Y298985D01* +X285863Y298985D01* +G37* +%LPD*% +%LPC*% +G36* +X250303Y298985D02* +X250303Y298985D01* +X248166Y299871D01* +X246531Y301506D01* +X245645Y303643D01* +X245645Y305957D01* +X246531Y308094D01* +X248166Y309729D01* +X250303Y310615D01* +X252617Y310615D01* +X254754Y309729D01* +X256389Y308094D01* +X257275Y305957D01* +X257275Y303643D01* +X256389Y301506D01* +X254754Y299871D01* +X252617Y298985D01* +X250303Y298985D01* +G37* +%LPD*% +%LPC*% +G36* +X854823Y42445D02* +X854823Y42445D01* +X852686Y43331D01* +X851051Y44966D01* +X850165Y47103D01* +X850165Y49417D01* +X851051Y51554D01* +X852686Y53189D01* +X854823Y54075D01* +X857137Y54075D01* +X859274Y53189D01* +X860909Y51554D01* +X861795Y49417D01* +X861795Y47103D01* +X860909Y44966D01* +X859274Y43331D01* +X857137Y42445D01* +X854823Y42445D01* +G37* +%LPD*% +%LPC*% +G36* +X710043Y164365D02* +X710043Y164365D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716129Y173474D01* +X717015Y171337D01* +X717015Y169023D01* +X716129Y166886D01* +X714494Y165251D01* +X712357Y164365D01* +X710043Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X539863Y164365D02* +X539863Y164365D01* +X537726Y165251D01* +X536091Y166886D01* +X535205Y169023D01* +X535205Y171337D01* +X536091Y173474D01* +X537726Y175109D01* +X539863Y175995D01* +X542177Y175995D01* +X544314Y175109D01* +X545949Y173474D01* +X546835Y171337D01* +X546835Y169023D01* +X545949Y166886D01* +X544314Y165251D01* +X542177Y164365D01* +X539863Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X1159623Y161825D02* +X1159623Y161825D01* +X1157486Y162711D01* +X1155851Y164346D01* +X1154965Y166483D01* +X1154965Y168797D01* +X1155851Y170934D01* +X1157486Y172569D01* +X1159623Y173455D01* +X1161937Y173455D01* +X1164074Y172569D01* +X1165709Y170934D01* +X1166595Y168797D01* +X1166595Y166483D01* +X1165709Y164346D01* +X1164074Y162711D01* +X1161937Y161825D01* +X1159623Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X887843Y159285D02* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883185Y163943D01* +X883185Y166257D01* +X884071Y168394D01* +X885706Y170029D01* +X887843Y170915D01* +X890157Y170915D01* +X892294Y170029D01* +X893929Y168394D01* +X894815Y166257D01* +X894815Y163943D01* +X893929Y161806D01* +X892294Y160171D01* +X890157Y159285D01* +X887843Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X323963Y293905D02* +X323963Y293905D01* +X321826Y294791D01* +X320191Y296426D01* +X319305Y298563D01* +X319305Y300877D01* +X320191Y303014D01* +X321826Y304649D01* +X323963Y305535D01* +X326277Y305535D01* +X328414Y304649D01* +X330049Y303014D01* +X330935Y300877D01* +X330935Y298563D01* +X330049Y296426D01* +X328414Y294791D01* +X326277Y293905D01* +X323963Y293905D01* +G37* +%LPD*% +%LPC*% +G36* +X501643Y157094D02* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X496985Y161752D01* +X496985Y164065D01* +X497871Y166203D01* +X499506Y167838D01* +X501643Y168724D01* +X503957Y168724D01* +X506094Y167838D01* +X507729Y166203D01* +X508615Y164065D01* +X508615Y161752D01* +X507729Y159615D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +G37* +%LPD*% +%LPC*% +G36* +X758303Y154205D02* +X758303Y154205D01* +X756166Y155091D01* +X754531Y156726D01* +X753645Y158863D01* +X753645Y161177D01* +X754531Y163314D01* +X756166Y164949D01* +X758303Y165835D01* +X760617Y165835D01* +X762754Y164949D01* +X764389Y163314D01* +X765275Y161177D01* +X765275Y158863D01* +X764389Y156726D01* +X762754Y155091D01* +X760617Y154205D01* +X758303Y154205D01* +G37* +%LPD*% +%LPC*% +G36* +X527163Y75465D02* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +G37* +%LPD*% +%LPC*% +G36* +X702972Y152214D02* +X702972Y152214D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X699199Y161323D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707423Y162958D01* +X709058Y161323D01* +X709944Y159185D01* +X709944Y156872D01* +X709058Y154735D01* +X707423Y153099D01* +X705285Y152214D01* +X702972Y152214D01* +G37* +%LPD*% +%LPC*% +G36* +X1154543Y260885D02* +X1154543Y260885D01* +X1152406Y261771D01* +X1150771Y263406D01* +X1149885Y265543D01* +X1149885Y267857D01* +X1150771Y269994D01* +X1152406Y271629D01* +X1154543Y272515D01* +X1156857Y272515D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265543D01* +X1160629Y263406D01* +X1158994Y261771D01* +X1156857Y260885D01* +X1154543Y260885D01* +G37* +%LPD*% +%LPC*% +G36* +X1141843Y149125D02* +X1141843Y149125D01* +X1139706Y150011D01* +X1138071Y151646D01* +X1137185Y153783D01* +X1137185Y156097D01* +X1138071Y158234D01* +X1139706Y159869D01* +X1141843Y160755D01* +X1144157Y160755D01* +X1146294Y159869D01* +X1147929Y158234D01* +X1148815Y156097D01* +X1148815Y153783D01* +X1147929Y151646D01* +X1146294Y150011D01* +X1144157Y149125D01* +X1141843Y149125D01* +G37* +%LPD*% +%LPC*% +G36* +X666863Y149099D02* +X666863Y149099D01* +X664726Y149985D01* +X663091Y151620D01* +X662205Y153757D01* +X662205Y156071D01* +X663091Y158208D01* +X664726Y159843D01* +X666863Y160729D01* +X669177Y160729D01* +X671314Y159843D01* +X672949Y158208D01* +X673835Y156071D01* +X673835Y153757D01* +X672949Y151620D01* +X671314Y149985D01* +X669177Y149099D01* +X666863Y149099D01* +G37* +%LPD*% +%LPC*% +G36* +X847203Y146585D02* +X847203Y146585D01* +X845066Y147471D01* +X843431Y149106D01* +X842545Y151243D01* +X842545Y153557D01* +X843431Y155694D01* +X845066Y157329D01* +X847203Y158215D01* +X849517Y158215D01* +X851654Y157329D01* +X853289Y155694D01* +X854175Y153557D01* +X854175Y151243D01* +X853289Y149106D01* +X851654Y147471D01* +X849517Y146585D01* +X847203Y146585D01* +G37* +%LPD*% +%LPC*% +G36* +X1164703Y271045D02* +X1164703Y271045D01* +X1162566Y271931D01* +X1160931Y273566D01* +X1160045Y275703D01* +X1160045Y278017D01* +X1160931Y280154D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275703D01* +X1170789Y273566D01* +X1169154Y271931D01* +X1167017Y271045D01* +X1164703Y271045D01* +G37* +%LPD*% +%LPC*% +G36* +X1220991Y116105D02* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218854Y126849D01* +X1220991Y127735D01* +X1223305Y127735D01* +X1225442Y126849D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +G37* +%LPD*% +%LPC*% +G36* +X1121523Y141505D02* +X1121523Y141505D01* +X1119386Y142391D01* +X1117751Y144026D01* +X1116865Y146163D01* +X1116865Y148477D01* +X1117751Y150614D01* +X1119386Y152249D01* +X1121523Y153135D01* +X1123837Y153135D01* +X1125974Y152249D01* +X1127609Y150614D01* +X1128495Y148477D01* +X1128495Y146163D01* +X1127609Y144026D01* +X1125974Y142391D01* +X1123837Y141505D01* +X1121523Y141505D01* +G37* +%LPD*% +%LPC*% +G36* +X555103Y273585D02* +X555103Y273585D01* +X552966Y274471D01* +X551331Y276106D01* +X550445Y278243D01* +X550445Y280557D01* +X551331Y282694D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278243D01* +X561189Y276106D01* +X559554Y274471D01* +X557417Y273585D01* +X555103Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X542403Y128805D02* +X542403Y128805D01* +X540266Y129691D01* +X538631Y131326D01* +X537745Y133463D01* +X537745Y135777D01* +X538631Y137914D01* +X540266Y139549D01* +X542403Y140435D01* +X544717Y140435D01* +X546854Y139549D01* +X548489Y137914D01* +X549375Y135777D01* +X549375Y133463D01* +X548489Y131326D01* +X546854Y129691D01* +X544717Y128805D01* +X542403Y128805D01* +G37* +%LPD*% +%LPC*% +G36* +X514463Y273585D02* +X514463Y273585D01* +X512326Y274471D01* +X510691Y276106D01* +X509805Y278243D01* +X509805Y280557D01* +X510691Y282694D01* +X512326Y284329D01* +X514463Y285215D01* +X516777Y285215D01* +X518914Y284329D01* +X520549Y282694D01* +X521435Y280557D01* +X521435Y278243D01* +X520549Y276106D01* +X518914Y274471D01* +X516777Y273585D01* +X514463Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751214Y131738D01* +X753268Y132589D01* +X755492Y132589D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X1004728Y289051D02* +X1004728Y289051D01* +X1002674Y289902D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009006Y289902D01* +X1006952Y289051D01* +X1004728Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X1245012Y154431D02* +X1245012Y154431D01* +X1242958Y155282D01* +X1241386Y156854D01* +X1240535Y158908D01* +X1240535Y161132D01* +X1241386Y163186D01* +X1242958Y164758D01* +X1245012Y165609D01* +X1247236Y165609D01* +X1249290Y164758D01* +X1250862Y163186D01* +X1251713Y161132D01* +X1251713Y158908D01* +X1250862Y156854D01* +X1249290Y155282D01* +X1247236Y154431D01* +X1245012Y154431D01* +G37* +%LPD*% +%LPC*% +G36* +X1220628Y93471D02* +X1220628Y93471D01* +X1218574Y94322D01* +X1217002Y95894D01* +X1216151Y97948D01* +X1216151Y100172D01* +X1217002Y102226D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X875188Y245871D02* +X875188Y245871D01* +X873134Y246722D01* +X871562Y248294D01* +X870711Y250348D01* +X870711Y252572D01* +X871562Y254626D01* +X873134Y256198D01* +X875188Y257049D01* +X877412Y257049D01* +X879466Y256198D01* +X881038Y254626D01* +X881889Y252572D01* +X881889Y250348D01* +X881038Y248294D01* +X879466Y246722D01* +X877412Y245871D01* +X875188Y245871D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y283768D01* +X261933Y283640D01* +X263750Y283049D01* +X265453Y282182D01* +X266999Y281058D01* +X268350Y279707D01* +X269473Y278161D01* +X270341Y276458D01* +X270931Y274641D01* +X271060Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y126268D01* +X261933Y126140D01* +X263750Y125549D01* +X265453Y124682D01* +X266999Y123558D01* +X268350Y122207D01* +X269473Y120661D01* +X270341Y118958D01* +X270931Y117141D01* +X271060Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y112267D02* +X261121Y112267D01* +X271060Y112267D01* +X270931Y111455D01* +X270341Y109637D01* +X269473Y107935D01* +X268350Y106389D01* +X266999Y105038D01* +X265453Y103914D01* +X263750Y103047D01* +X261933Y102456D01* +X261121Y102328D01* +X261121Y112267D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y273829D02* +X247119Y273829D01* +X247248Y274641D01* +X247838Y276458D01* +X248706Y278161D01* +X249829Y279707D01* +X251180Y281058D01* +X252726Y282182D01* +X254429Y283049D01* +X256247Y283640D01* +X257058Y283768D01* +X257058Y273829D01* +X247119Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X271060Y269767D01* +X270931Y268955D01* +X270341Y267137D01* +X269473Y265435D01* +X268350Y263889D01* +X266999Y262538D01* +X265453Y261414D01* +X263750Y260547D01* +X261933Y259956D01* +X261121Y259828D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y116329D02* +X247119Y116329D01* +X247248Y117141D01* +X247838Y118958D01* +X248706Y120661D01* +X249829Y122207D01* +X251180Y123558D01* +X252726Y124682D01* +X254429Y125549D01* +X256247Y126140D01* +X257058Y126268D01* +X257058Y116329D01* +X247119Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y259956D02* +X256247Y259956D01* +X254429Y260547D01* +X252726Y261414D01* +X251180Y262538D01* +X249829Y263889D01* +X248706Y265435D01* +X247838Y267137D01* +X247248Y268955D01* +X247119Y269767D01* +X257058Y269767D01* +X257058Y259828D01* +X256247Y259956D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y102456D02* +X256247Y102456D01* +X254429Y103047D01* +X252726Y103914D01* +X251180Y105038D01* +X249829Y106389D01* +X248706Y107935D01* +X247838Y109637D01* +X247248Y111455D01* +X247119Y112267D01* +X257058Y112267D01* +X257058Y102328D01* +X256247Y102456D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y37549D01* +X402640Y37460D01* +X404297Y36922D01* +X405848Y36131D01* +X407257Y35108D01* +X408488Y33877D01* +X409511Y32468D01* +X410302Y30917D01* +X410840Y29260D01* +X410929Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y37549D01* +X974140Y37460D01* +X975797Y36922D01* +X977348Y36131D01* +X978757Y35108D01* +X979988Y33877D01* +X981011Y32468D01* +X981802Y30917D01* +X982340Y29260D01* +X982429Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y24639D02* +X402081Y24639D01* +X410929Y24639D01* +X410840Y24080D01* +X410302Y22423D01* +X409511Y20872D01* +X408488Y19463D01* +X407257Y18232D01* +X405848Y17209D01* +X404297Y16418D01* +X402640Y15880D01* +X402081Y15791D01* +X402081Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y24639D02* +X973581Y24639D01* +X982429Y24639D01* +X982340Y24080D01* +X981802Y22423D01* +X981011Y20872D01* +X979988Y19463D01* +X978757Y18232D01* +X977348Y17209D01* +X975797Y16418D01* +X974140Y15880D01* +X973581Y15791D01* +X973581Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X960671Y28701D02* +X960671Y28701D01* +X960760Y29260D01* +X961298Y30917D01* +X962089Y32468D01* +X963112Y33877D01* +X964343Y35108D01* +X965752Y36131D01* +X967303Y36922D01* +X968960Y37460D01* +X969519Y37549D01* +X969519Y28701D01* +X960671Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X389171Y28701D02* +X389171Y28701D01* +X389260Y29260D01* +X389798Y30917D01* +X390589Y32468D01* +X391612Y33877D01* +X392843Y35108D01* +X394252Y36131D01* +X395803Y36922D01* +X397460Y37460D01* +X398019Y37549D01* +X398019Y28701D01* +X389171Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X397460Y15880D02* +X397460Y15880D01* +X395803Y16418D01* +X394252Y17209D01* +X392843Y18232D01* +X391612Y19463D01* +X390589Y20872D01* +X389798Y22423D01* +X389260Y24080D01* +X389171Y24639D01* +X398019Y24639D01* +X398019Y15791D01* +X397460Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X968960Y15880D02* +X968960Y15880D01* +X967303Y16418D01* +X965752Y17209D01* +X964343Y18232D01* +X963112Y19463D01* +X962089Y20872D01* +X961298Y22423D01* +X960760Y24080D01* +X960671Y24639D01* +X969519Y24639D01* +X969519Y15791D01* +X968960Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y22351D02* +X700531Y22351D01* +X700531Y29240D01* +X701167Y29113D01* +X702832Y28424D01* +X704330Y27423D01* +X705603Y26150D01* +X706604Y24652D01* +X707293Y22987D01* +X707420Y22351D01* +X700531Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y22351D02* +X725931Y22351D01* +X725931Y29240D01* +X726567Y29113D01* +X728232Y28424D01* +X729730Y27423D01* +X731003Y26150D01* +X732004Y24652D01* +X732693Y22987D01* +X732820Y22351D01* +X725931Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y18289D02* +X700531Y18289D01* +X707420Y18289D01* +X707293Y17653D01* +X706604Y15988D01* +X705603Y14490D01* +X704330Y13217D01* +X702832Y12216D01* +X701167Y11527D01* +X700531Y11400D01* +X700531Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X714980Y22351D02* +X714980Y22351D01* +X715107Y22987D01* +X715796Y24652D01* +X716797Y26150D01* +X718070Y27423D01* +X719568Y28424D01* +X721233Y29113D01* +X721869Y29240D01* +X721869Y22351D01* +X714980Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X689580Y22351D02* +X689580Y22351D01* +X689707Y22987D01* +X690396Y24652D01* +X691397Y26150D01* +X692670Y27423D01* +X694168Y28424D01* +X695833Y29113D01* +X696469Y29240D01* +X696469Y22351D01* +X689580Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y18289D02* +X725931Y18289D01* +X732820Y18289D01* +X732693Y17653D01* +X732004Y15988D01* +X731003Y14490D01* +X729730Y13217D01* +X728232Y12216D01* +X726567Y11527D01* +X725931Y11400D01* +X725931Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X695833Y11527D02* +X695833Y11527D01* +X694168Y12216D01* +X692670Y13217D01* +X691397Y14490D01* +X690396Y15988D01* +X689707Y17653D01* +X689580Y18289D01* +X696469Y18289D01* +X696469Y11400D01* +X695833Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X721233Y11527D02* +X721233Y11527D01* +X719568Y12216D01* +X718070Y13217D01* +X716797Y14490D01* +X715796Y15988D01* +X715107Y17653D01* +X714980Y18289D01* +X721869Y18289D01* +X721869Y11400D01* +X721233Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y264614D01* +X182102Y264521D01* +X183661Y263875D01* +X185063Y262938D01* +X186256Y261745D01* +X187194Y260342D01* +X187839Y258784D01* +X187932Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X187932Y254254D01* +X187839Y253787D01* +X187194Y252228D01* +X186256Y250826D01* +X185063Y249633D01* +X183661Y248695D01* +X182102Y248050D01* +X181635Y247957D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X171275Y258317D02* +X171275Y258317D01* +X171368Y258784D01* +X172014Y260342D01* +X172951Y261745D01* +X174144Y262938D01* +X175547Y263875D01* +X177105Y264521D01* +X177572Y264614D01* +X177572Y258317D01* +X171275Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X177105Y248050D02* +X177105Y248050D01* +X175547Y248695D01* +X174144Y249633D01* +X172951Y250826D01* +X172014Y252228D01* +X171368Y253787D01* +X171275Y254254D01* +X177572Y254254D01* +X177572Y247957D01* +X177105Y248050D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y293389D02* +X139619Y293389D01* +X139619Y298602D01* +X140277Y298471D01* +X141479Y297973D01* +X142560Y297250D01* +X143480Y296330D01* +X144203Y295249D01* +X144701Y294047D01* +X144832Y293389D01* +X139619Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y359389D02* +X139619Y359389D01* +X139619Y364602D01* +X140277Y364471D01* +X141479Y363973D01* +X142560Y363250D01* +X143480Y362330D01* +X144203Y361249D01* +X144701Y360047D01* +X144832Y359389D01* +X139619Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y290851D02* +X139619Y290851D01* +X144832Y290851D01* +X144701Y290193D01* +X144203Y288991D01* +X143480Y287910D01* +X142560Y286990D01* +X141479Y286267D01* +X140277Y285769D01* +X139619Y285638D01* +X139619Y290851D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y356851D02* +X139619Y356851D01* +X144832Y356851D01* +X144701Y356193D01* +X144203Y354991D01* +X143480Y353910D01* +X142560Y352990D01* +X141479Y352267D01* +X140277Y351769D01* +X139619Y351638D01* +X139619Y356851D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y293389D02* +X131868Y293389D01* +X131999Y294047D01* +X132497Y295249D01* +X133220Y296330D01* +X134140Y297250D01* +X135221Y297973D01* +X136423Y298471D01* +X137081Y298602D01* +X137081Y293389D01* +X131868Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y359389D02* +X131868Y359389D01* +X131999Y360047D01* +X132497Y361249D01* +X133220Y362330D01* +X134140Y363250D01* +X135221Y363973D01* +X136423Y364471D01* +X137081Y364602D01* +X137081Y359389D01* +X131868Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y351769D02* +X136423Y351769D01* +X135221Y352267D01* +X134140Y352990D01* +X133220Y353910D01* +X132497Y354991D01* +X131999Y356193D01* +X131868Y356851D01* +X137081Y356851D01* +X137081Y351638D01* +X136423Y351769D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y285769D02* +X136423Y285769D01* +X135221Y286267D01* +X134140Y286990D01* +X133220Y287910D01* +X132497Y288991D01* +X131999Y290193D01* +X131868Y290851D01* +X137081Y290851D01* +X137081Y285638D01* +X136423Y285769D01* +G37* +%LPD*% +%LPC*% +G36* +X400049Y26669D02* +X400049Y26669D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y26669D01* +X400049Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X723899Y20319D02* +X723899Y20319D01* +X723899Y20321D01* +X723901Y20321D01* +X723901Y20319D01* +X723899Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X698499Y20319D02* +X698499Y20319D01* +X698499Y20321D01* +X698501Y20321D01* +X698501Y20319D01* +X698499Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X971549Y26669D02* +X971549Y26669D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y26669D01* +X971549Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y114297D02* +X259089Y114297D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y114297D01* +X259089Y114297D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +D10* +X138350Y358120D03* +X138350Y292120D03* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +X292090Y237498D03* +D12* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D13* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D14* +X800100Y20320D03* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +X736600Y76200D03* +X711200Y76200D03* +D15* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +X317500Y335280D03* +X180340Y365816D03* +X393700Y317500D03* +X561340Y76200D03* +X464820Y228600D03* +X424180Y259080D03* +X462280Y147320D03* +X469900Y167640D03* +X500380Y134620D03* +X556260Y180340D03* +X1206500Y304800D03* +X1051560Y76200D03* +X873760Y66040D03* +X830580Y83820D03* +X886460Y149860D03* +X939800Y241300D03* +X960120Y121920D03* +X1082040Y106680D03* +X1127760Y198120D03* +X657860Y142240D03* +X861060Y274320D03* +X952500Y297180D03* +X952500Y281940D03* +X960120Y241300D03* +X1071880Y302260D03* +X177800Y309880D03* +X347980Y172720D03* +X497840Y269240D03* +D16* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +X993140Y294640D03* +X868564Y241184D03* +D15* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X327660Y353060D03* +X342900Y370840D03* +X1193800Y279400D03* +X518160Y239494D03* +X1206500Y203200D03* +X563880Y211610D03* +X502800Y162909D03* +X1023620Y175260D03* +X1206500Y241300D03* +X499816Y231140D03* +X1206500Y218440D03* +X490188Y231172D03* +X1206500Y279400D03* +X482600Y238760D03* +X1074420Y190500D03* +X566332Y202014D03* +X1074420Y177800D03* +X581660Y203200D03* +X1082040Y167640D03* +X553720Y203200D03* +X1165860Y276860D03* +X396240Y350596D03* +X1155700Y266700D03* +X414020Y342900D03* +X1222148Y121920D03* +X905760Y163580D03* +X982980Y172720D03* +X759460Y160020D03* +X919480Y144780D03* +X1143000Y154940D03* +X972820Y165100D03* +X924560Y175260D03* +X995680Y182880D03* +X711200Y170180D03* +X909320Y175260D03* +X704129Y158029D03* +X1122680Y147320D03* +X889000Y165100D03* +X1160780Y167640D03* +X906780Y142240D03* +D16* +X443114Y186806D03* +X449580Y180340D03* +X449580Y205740D03* +X443114Y199274D03* +D15* +X1206500Y180340D03* +X1023620Y165100D03* +X287020Y304800D03* +X251460Y304800D03* +X406400Y317500D03* +D17* +X406400Y315765D01* +D15* +X855980Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +D16* +X1221740Y99060D03* +X1246124Y160020D03* +X876300Y251460D03* +X1178560Y289560D03* +X1005840Y294640D03* +X754380Y127000D03* +D15* +X401897Y335280D03* +X451955Y291935D03* +X190500Y342900D03* +X325120Y299720D03* +D18* +X490605Y121876D03* +D15* +X556260Y279400D03* +X515620Y279400D03* +X528320Y81280D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_inner_l3.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_inner_l3.gbr new file mode 100644 index 0000000000..ad37cc4c30 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_inner_l3.gbr @@ -0,0 +1,4075 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INCopper Layer 2*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.812800*% +%ADD11C,1.204800*% +%ADD12C,1.920000*% +%ADD13C,1.704341*% +%ADD14C,1.320800*% +%ADD15C,0.756400*% +%ADD16C,0.203200*% +%ADD17C,0.711200*% +%ADD18C,0.956400*% + +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X448468Y174751D02* +X448468Y174751D01* +X446414Y175602D01* +X444842Y177174D01* +X443991Y179228D01* +X443991Y180202D01* +X443983Y180260D01* +X443985Y180318D01* +X443963Y180400D01* +X443951Y180483D01* +X443928Y180537D01* +X443913Y180593D01* +X443870Y180666D01* +X443835Y180743D01* +X443797Y180787D01* +X443768Y180838D01* +X443706Y180895D01* +X443652Y180960D01* +X443603Y180992D01* +X443560Y181032D01* +X443485Y181071D01* +X443415Y181117D01* +X443359Y181135D01* +X443307Y181162D01* +X443239Y181173D01* +X443144Y181203D01* +X443044Y181206D01* +X442976Y181217D01* +X442003Y181217D01* +X439948Y182068D01* +X438376Y183640D01* +X437525Y185694D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y200386D01* +X438376Y202440D01* +X439948Y204012D01* +X442003Y204863D01* +X442976Y204863D01* +X443034Y204871D01* +X443092Y204870D01* +X443174Y204891D01* +X443258Y204903D01* +X443311Y204927D01* +X443367Y204941D01* +X443440Y204984D01* +X443517Y205019D01* +X443562Y205057D01* +X443612Y205087D01* +X443670Y205148D01* +X443734Y205203D01* +X443766Y205251D01* +X443806Y205294D01* +X443845Y205369D01* +X443892Y205439D01* +X443909Y205495D01* +X443936Y205547D01* +X443947Y205615D01* +X443977Y205710D01* +X443980Y205810D01* +X443991Y205878D01* +X443991Y206852D01* +X444842Y208906D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X397951Y79616D02* +X397951Y79616D01* +X394071Y81222D01* +X391102Y84191D01* +X389496Y88071D01* +X389496Y92269D01* +X391102Y96149D01* +X394071Y99118D01* +X397951Y100724D01* +X402149Y100724D01* +X406029Y99118D01* +X408998Y96149D01* +X410604Y92269D01* +X410604Y88071D01* +X408998Y84191D01* +X406029Y81222D01* +X402149Y79616D01* +X397951Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X461451Y47866D02* +X461451Y47866D01* +X457571Y49472D01* +X454602Y52441D01* +X452996Y56321D01* +X452996Y60519D01* +X454602Y64399D01* +X457571Y67368D01* +X461451Y68974D01* +X465649Y68974D01* +X469529Y67368D01* +X472498Y64399D01* +X474104Y60519D01* +X474104Y56321D01* +X472498Y52441D01* +X469529Y49472D01* +X465649Y47866D01* +X461451Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X905951Y47866D02* +X905951Y47866D01* +X902071Y49472D01* +X899102Y52441D01* +X897496Y56321D01* +X897496Y60519D01* +X899102Y64399D01* +X902071Y67368D01* +X905951Y68974D01* +X910149Y68974D01* +X914029Y67368D01* +X916998Y64399D01* +X918604Y60519D01* +X918604Y56321D01* +X916998Y52441D01* +X914029Y49472D01* +X910149Y47866D01* +X905951Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X969451Y79616D02* +X969451Y79616D01* +X965571Y81222D01* +X962602Y84191D01* +X960996Y88071D01* +X960996Y92269D01* +X962602Y96149D01* +X965571Y99118D01* +X969451Y100724D01* +X973649Y100724D01* +X977529Y99118D01* +X980498Y96149D01* +X982104Y92269D01* +X982104Y88071D01* +X980498Y84191D01* +X977529Y81222D01* +X973649Y79616D01* +X969451Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X1080883Y161825D02* +X1080883Y161825D01* +X1078746Y162711D01* +X1077111Y164346D01* +X1076225Y166483D01* +X1076225Y168797D01* +X1077016Y170706D01* +X1077023Y170734D01* +X1077037Y170760D01* +X1077059Y170871D01* +X1077087Y170981D01* +X1077086Y171010D01* +X1077092Y171039D01* +X1077082Y171152D01* +X1077079Y171265D01* +X1077070Y171293D01* +X1077067Y171322D01* +X1077027Y171428D01* +X1076992Y171536D01* +X1076976Y171560D01* +X1076965Y171587D01* +X1076897Y171678D01* +X1076834Y171772D01* +X1076811Y171791D01* +X1076794Y171814D01* +X1076703Y171882D01* +X1076616Y171955D01* +X1076589Y171967D01* +X1076566Y171984D01* +X1076460Y172024D01* +X1076356Y172070D01* +X1076327Y172074D01* +X1076300Y172085D01* +X1076187Y172094D01* +X1076075Y172109D01* +X1076046Y172105D01* +X1076017Y172107D01* +X1075940Y172090D01* +X1075794Y172069D01* +X1075737Y172043D01* +X1075689Y172032D01* +X1075577Y171985D01* +X1073263Y171985D01* +X1071126Y172871D01* +X1069491Y174506D01* +X1068605Y176643D01* +X1068605Y178957D01* +X1069491Y181094D01* +X1071126Y182729D01* +X1072291Y183212D01* +X1072316Y183227D01* +X1072344Y183236D01* +X1072439Y183299D01* +X1072536Y183357D01* +X1072556Y183378D01* +X1072581Y183394D01* +X1072653Y183481D01* +X1072731Y183563D01* +X1072745Y183589D01* +X1072764Y183612D01* +X1072810Y183715D01* +X1072861Y183816D01* +X1072867Y183845D01* +X1072879Y183872D01* +X1072895Y183984D01* +X1072916Y184095D01* +X1072914Y184124D01* +X1072918Y184153D01* +X1072902Y184265D01* +X1072892Y184378D01* +X1072881Y184405D01* +X1072877Y184435D01* +X1072831Y184538D01* +X1072790Y184643D01* +X1072772Y184667D01* +X1072760Y184694D01* +X1072687Y184780D01* +X1072618Y184870D01* +X1072595Y184888D01* +X1072576Y184910D01* +X1072509Y184952D01* +X1072391Y185040D01* +X1072332Y185062D01* +X1072291Y185088D01* +X1071126Y185571D01* +X1069491Y187206D01* +X1068605Y189343D01* +X1068605Y191657D01* +X1069491Y193794D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076077Y184688D01* +X1076031Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183894D01* +X1075963Y183866D01* +X1076009Y183763D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173853D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080723Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085334Y172569D01* +X1086969Y170934D01* +X1087855Y168797D01* +X1087855Y166483D01* +X1086969Y164346D01* +X1085334Y162711D01* +X1083197Y161825D01* +X1080883Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X565175Y196199D02* +X565175Y196199D01* +X563038Y197085D01* +X561402Y198720D01* +X560718Y200372D01* +X560703Y200397D01* +X560694Y200425D01* +X560631Y200519D01* +X560574Y200616D01* +X560552Y200637D01* +X560536Y200661D01* +X560449Y200734D01* +X560367Y200812D01* +X560341Y200825D01* +X560318Y200844D01* +X560215Y200890D01* +X560114Y200942D01* +X560085Y200948D01* +X560059Y200959D01* +X559946Y200975D01* +X559835Y200997D01* +X559806Y200994D01* +X559777Y200998D01* +X559665Y200982D01* +X559552Y200972D01* +X559525Y200962D01* +X559496Y200958D01* +X559392Y200911D01* +X559287Y200870D01* +X559263Y200853D01* +X559237Y200841D01* +X559150Y200767D01* +X559060Y200699D01* +X559042Y200675D01* +X559020Y200656D01* +X558979Y200590D01* +X558890Y200471D01* +X558868Y200413D01* +X558842Y200372D01* +X558649Y199906D01* +X557014Y198271D01* +X554877Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548791Y199906D01* +X547905Y202043D01* +X547905Y204357D01* +X548791Y206494D01* +X550426Y208129D01* +X552563Y209015D01* +X554877Y209015D01* +X557181Y208060D01* +X557209Y208053D01* +X557235Y208040D01* +X557346Y208018D01* +X557456Y207989D01* +X557485Y207990D01* +X557514Y207985D01* +X557627Y207994D01* +X557740Y207998D01* +X557768Y208007D01* +X557797Y208009D01* +X557903Y208050D01* +X558011Y208084D01* +X558035Y208101D01* +X558063Y208111D01* +X558153Y208179D01* +X558247Y208243D01* +X558266Y208265D01* +X558289Y208283D01* +X558357Y208374D01* +X558430Y208460D01* +X558442Y208487D01* +X558459Y208510D01* +X558499Y208617D01* +X558545Y208720D01* +X558549Y208749D01* +X558560Y208776D01* +X558569Y208889D01* +X558584Y209001D01* +X558580Y209031D01* +X558582Y209060D01* +X558565Y209136D01* +X558544Y209283D01* +X558518Y209340D01* +X558507Y209387D01* +X558065Y210453D01* +X558065Y212767D01* +X558951Y214904D01* +X560586Y216539D01* +X562723Y217425D01* +X565037Y217425D01* +X567174Y216539D01* +X568809Y214904D01* +X569695Y212767D01* +X569695Y210453D01* +X568832Y208371D01* +X568818Y208314D01* +X568794Y208261D01* +X568782Y208177D01* +X568761Y208096D01* +X568763Y208037D01* +X568755Y207979D01* +X568767Y207896D01* +X568769Y207812D01* +X568787Y207756D01* +X568796Y207698D01* +X568830Y207621D01* +X568856Y207541D01* +X568889Y207492D01* +X568913Y207439D01* +X568967Y207375D01* +X569014Y207305D01* +X569059Y207267D01* +X569097Y207222D01* +X569156Y207186D01* +X569232Y207122D01* +X569323Y207081D01* +X569382Y207045D01* +X569626Y206943D01* +X571261Y205308D01* +X572146Y203171D01* +X572146Y200857D01* +X571261Y198720D01* +X569626Y197085D01* +X567488Y196199D01* +X565175Y196199D01* +G37* +%LPD*% +%LPC*% +G36* +X498659Y225325D02* +X498659Y225325D01* +X496522Y226211D01* +X495704Y227028D01* +X495658Y227064D01* +X495617Y227106D01* +X495545Y227149D01* +X495477Y227199D01* +X495423Y227220D01* +X495372Y227250D01* +X495290Y227270D01* +X495212Y227301D01* +X495153Y227305D01* +X495097Y227320D01* +X495012Y227317D01* +X494928Y227324D01* +X494871Y227313D01* +X494812Y227311D01* +X494732Y227285D01* +X494649Y227268D01* +X494598Y227241D01* +X494542Y227223D01* +X494486Y227183D01* +X494397Y227137D01* +X494325Y227068D01* +X494269Y227028D01* +X493482Y226242D01* +X491345Y225357D01* +X489032Y225357D01* +X486895Y226242D01* +X485259Y227878D01* +X484374Y230015D01* +X484374Y231930D01* +X484366Y231988D01* +X484367Y232046D01* +X484346Y232128D01* +X484334Y232212D01* +X484310Y232265D01* +X484295Y232321D01* +X484252Y232394D01* +X484218Y232471D01* +X484180Y232516D01* +X484150Y232566D01* +X484088Y232624D01* +X484034Y232688D01* +X483985Y232720D01* +X483943Y232760D01* +X483868Y232799D01* +X483797Y232846D01* +X483742Y232863D01* +X483690Y232890D01* +X483621Y232901D01* +X483526Y232931D01* +X483427Y232934D01* +X483358Y232945D01* +X481443Y232945D01* +X479306Y233831D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X481443Y244575D01* +X483757Y244575D01* +X485894Y243689D01* +X487529Y242054D01* +X488415Y239917D01* +X488415Y238002D01* +X488423Y237944D01* +X488421Y237885D01* +X488443Y237804D01* +X488455Y237720D01* +X488478Y237667D01* +X488493Y237610D01* +X488536Y237538D01* +X488571Y237461D01* +X488609Y237416D01* +X488638Y237366D01* +X488700Y237308D01* +X488754Y237244D01* +X488803Y237211D01* +X488846Y237171D01* +X488921Y237133D01* +X488991Y237086D01* +X489047Y237068D01* +X489099Y237042D01* +X489167Y237030D01* +X489262Y237000D01* +X489362Y236998D01* +X489430Y236986D01* +X491345Y236986D01* +X493482Y236101D01* +X494300Y235283D01* +X494347Y235248D01* +X494387Y235206D01* +X494460Y235163D01* +X494527Y235112D01* +X494582Y235091D01* +X494632Y235062D01* +X494714Y235041D01* +X494793Y235011D01* +X494851Y235006D01* +X494908Y234992D01* +X494992Y234994D01* +X495076Y234987D01* +X495134Y234999D01* +X495192Y235001D01* +X495272Y235027D01* +X495355Y235043D01* +X495407Y235070D01* +X495463Y235088D01* +X495519Y235128D01* +X495607Y235174D01* +X495680Y235243D01* +X495736Y235283D01* +X496522Y236069D01* +X498659Y236955D01* +X500973Y236955D01* +X503110Y236069D01* +X504745Y234434D01* +X505631Y232297D01* +X505631Y229983D01* +X504745Y227846D01* +X503110Y226211D01* +X500973Y225325D01* +X498659Y225325D01* +G37* +%LPD*% +%LPC*% +G36* +X569782Y11683D02* +X569782Y11683D01* +X566608Y12998D01* +X564178Y15428D01* +X562863Y18602D01* +X562863Y22038D01* +X564178Y25212D01* +X566608Y27642D01* +X569782Y28957D01* +X573218Y28957D01* +X576392Y27642D01* +X578822Y25212D01* +X580137Y22038D01* +X580137Y18602D01* +X578822Y15428D01* +X576392Y12998D01* +X573218Y11683D01* +X569782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X772982Y11683D02* +X772982Y11683D01* +X769808Y12998D01* +X767378Y15428D01* +X766063Y18602D01* +X766063Y22038D01* +X767378Y25212D01* +X769808Y27642D01* +X772982Y28957D01* +X776418Y28957D01* +X779592Y27642D01* +X782022Y25212D01* +X783337Y22038D01* +X783337Y18602D01* +X782022Y15428D01* +X779592Y12998D01* +X776418Y11683D01* +X772982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y11683D02* +X747582Y11683D01* +X744408Y12998D01* +X741978Y15428D01* +X740663Y18602D01* +X740663Y22038D01* +X741978Y25212D01* +X744408Y27642D01* +X747582Y28957D01* +X751018Y28957D01* +X754192Y27642D01* +X756622Y25212D01* +X757937Y22038D01* +X757937Y18602D01* +X756622Y15428D01* +X754192Y12998D01* +X751018Y11683D01* +X747582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X595182Y11683D02* +X595182Y11683D01* +X592008Y12998D01* +X589578Y15428D01* +X588263Y18602D01* +X588263Y22038D01* +X589578Y25212D01* +X592008Y27642D01* +X595182Y28957D01* +X598618Y28957D01* +X601792Y27642D01* +X604222Y25212D01* +X605537Y22038D01* +X605537Y18602D01* +X604222Y15428D01* +X601792Y12998D01* +X598618Y11683D01* +X595182Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X798382Y11683D02* +X798382Y11683D01* +X795208Y12998D01* +X792778Y15428D01* +X791463Y18602D01* +X791463Y22038D01* +X792778Y25212D01* +X795208Y27642D01* +X798382Y28957D01* +X801818Y28957D01* +X804992Y27642D01* +X807422Y25212D01* +X808737Y22038D01* +X808737Y18602D01* +X807422Y15428D01* +X804992Y12998D01* +X801818Y11683D01* +X798382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X671382Y11683D02* +X671382Y11683D01* +X668208Y12998D01* +X665778Y15428D01* +X664463Y18602D01* +X664463Y22038D01* +X665778Y25212D01* +X668208Y27642D01* +X671382Y28957D01* +X674818Y28957D01* +X677992Y27642D01* +X680422Y25212D01* +X681737Y22038D01* +X681737Y18602D01* +X680422Y15428D01* +X677992Y12998D01* +X674818Y11683D01* +X671382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X709482Y67563D02* +X709482Y67563D01* +X706308Y68878D01* +X703878Y71308D01* +X702563Y74482D01* +X702563Y77918D01* +X703878Y81092D01* +X706308Y83522D01* +X709482Y84837D01* +X712918Y84837D01* +X716092Y83522D01* +X718522Y81092D01* +X719837Y77918D01* +X719837Y74482D01* +X718522Y71308D01* +X716092Y68878D01* +X712918Y67563D01* +X709482Y67563D01* +G37* +%LPD*% +%LPC*% +G36* +X645982Y11683D02* +X645982Y11683D01* +X642808Y12998D01* +X640378Y15428D01* +X639063Y18602D01* +X639063Y22038D01* +X640378Y25212D01* +X642808Y27642D01* +X645982Y28957D01* +X649418Y28957D01* +X652592Y27642D01* +X655022Y25212D01* +X656337Y22038D01* +X656337Y18602D01* +X655022Y15428D01* +X652592Y12998D01* +X649418Y11683D01* +X645982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X734882Y67563D02* +X734882Y67563D01* +X731708Y68878D01* +X729278Y71308D01* +X727963Y74482D01* +X727963Y77918D01* +X729278Y81092D01* +X731708Y83522D01* +X734882Y84837D01* +X738318Y84837D01* +X741492Y83522D01* +X743922Y81092D01* +X745237Y77918D01* +X745237Y74482D01* +X743922Y71308D01* +X741492Y68878D01* +X738318Y67563D01* +X734882Y67563D01* +G37* +%LPD*% +%LPC*% +G36* +X620582Y11683D02* +X620582Y11683D01* +X617408Y12998D01* +X614978Y15428D01* +X613663Y18602D01* +X613663Y22038D01* +X614978Y25212D01* +X617408Y27642D01* +X620582Y28957D01* +X624018Y28957D01* +X627192Y27642D01* +X629622Y25212D01* +X630937Y22038D01* +X630937Y18602D01* +X629622Y15428D01* +X627192Y12998D01* +X624018Y11683D01* +X620582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X905623Y136425D02* +X905623Y136425D01* +X903486Y137311D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X922774Y149709D01* +X924409Y148074D01* +X925295Y145937D01* +X925295Y143623D01* +X924409Y141486D01* +X922774Y139851D01* +X920637Y138965D01* +X918323Y138965D01* +X916186Y139851D01* +X914551Y141486D01* +X914548Y141492D01* +X914504Y141566D01* +X914469Y141645D01* +X914432Y141688D01* +X914404Y141737D01* +X914341Y141796D01* +X914285Y141862D01* +X914238Y141893D01* +X914197Y141932D01* +X914120Y141972D01* +X914049Y142019D01* +X913995Y142037D01* +X913944Y142063D01* +X913860Y142079D01* +X913778Y142105D01* +X913721Y142107D01* +X913665Y142118D01* +X913580Y142110D01* +X913494Y142112D01* +X913439Y142098D01* +X913382Y142093D01* +X913302Y142062D01* +X913219Y142041D01* +X913170Y142012D01* +X913117Y141991D01* +X913048Y141939D01* +X912974Y141895D01* +X912935Y141854D01* +X912890Y141820D01* +X912838Y141751D01* +X912780Y141688D01* +X912754Y141637D01* +X912720Y141592D01* +X912689Y141512D01* +X912650Y141435D01* +X912642Y141386D01* +X912619Y141326D01* +X912608Y141181D01* +X912595Y141104D01* +X912595Y141083D01* +X911709Y138946D01* +X910074Y137311D01* +X907937Y136425D01* +X905623Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X971663Y159285D02* +X971663Y159285D01* +X969526Y160171D01* +X967891Y161806D01* +X967005Y163943D01* +X967005Y166257D01* +X967891Y168394D01* +X969526Y170029D01* +X971663Y170915D01* +X973977Y170915D01* +X975886Y170124D01* +X975914Y170117D01* +X975940Y170103D01* +X976051Y170081D01* +X976161Y170053D01* +X976190Y170054D01* +X976219Y170048D01* +X976332Y170058D01* +X976445Y170061D01* +X976473Y170070D01* +X976502Y170073D01* +X976608Y170113D01* +X976716Y170148D01* +X976740Y170164D01* +X976767Y170175D01* +X976858Y170243D01* +X976952Y170306D01* +X976971Y170329D01* +X976994Y170346D01* +X977062Y170437D01* +X977135Y170524D01* +X977147Y170551D01* +X977164Y170574D01* +X977204Y170680D01* +X977250Y170784D01* +X977254Y170813D01* +X977265Y170840D01* +X977274Y170953D01* +X977289Y171065D01* +X977285Y171094D01* +X977287Y171123D01* +X977270Y171200D01* +X977249Y171346D01* +X977223Y171403D01* +X977212Y171451D01* +X977165Y171563D01* +X977165Y173877D01* +X978051Y176014D01* +X979686Y177649D01* +X981823Y178535D01* +X984137Y178535D01* +X986274Y177649D01* +X987909Y176014D01* +X988795Y173877D01* +X988795Y171563D01* +X987909Y169426D01* +X986274Y167791D01* +X984137Y166905D01* +X981823Y166905D01* +X979914Y167696D01* +X979886Y167703D01* +X979860Y167717D01* +X979749Y167739D01* +X979639Y167767D01* +X979610Y167766D01* +X979581Y167772D01* +X979468Y167762D01* +X979355Y167759D01* +X979327Y167750D01* +X979298Y167747D01* +X979192Y167707D01* +X979084Y167672D01* +X979060Y167656D01* +X979033Y167645D01* +X978942Y167577D01* +X978848Y167514D01* +X978829Y167491D01* +X978806Y167474D01* +X978738Y167383D01* +X978665Y167296D01* +X978653Y167269D01* +X978636Y167246D01* +X978596Y167140D01* +X978550Y167036D01* +X978546Y167007D01* +X978535Y166980D01* +X978526Y166867D01* +X978511Y166755D01* +X978515Y166726D01* +X978513Y166697D01* +X978530Y166620D01* +X978551Y166474D01* +X978577Y166417D01* +X978588Y166369D01* +X978635Y166257D01* +X978635Y163943D01* +X977749Y161806D01* +X976114Y160171D01* +X973977Y159285D01* +X971663Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X904604Y157765D02* +X904604Y157765D01* +X902467Y158650D01* +X900831Y160286D01* +X899946Y162423D01* +X899946Y164736D01* +X900831Y166873D01* +X902467Y168509D01* +X904644Y169411D01* +X904681Y169418D01* +X904793Y169434D01* +X904820Y169446D01* +X904848Y169452D01* +X904949Y169504D01* +X905052Y169550D01* +X905075Y169569D01* +X905101Y169583D01* +X905183Y169661D01* +X905269Y169734D01* +X905286Y169758D01* +X905307Y169779D01* +X905364Y169876D01* +X905427Y169971D01* +X905436Y169999D01* +X905451Y170024D01* +X905479Y170134D01* +X905513Y170242D01* +X905513Y170271D01* +X905521Y170299D01* +X905517Y170412D01* +X905520Y170526D01* +X905513Y170554D01* +X905512Y170584D01* +X905477Y170692D01* +X905448Y170801D01* +X905433Y170826D01* +X905424Y170854D01* +X905379Y170918D01* +X905303Y171045D01* +X905257Y171088D01* +X905229Y171127D01* +X904391Y171966D01* +X903505Y174103D01* +X903505Y176417D01* +X904391Y178554D01* +X906026Y180189D01* +X908163Y181075D01* +X910477Y181075D01* +X912614Y180189D01* +X914249Y178554D01* +X915135Y176417D01* +X915135Y174103D01* +X914249Y171966D01* +X912614Y170331D01* +X910437Y169429D01* +X910400Y169421D01* +X910288Y169405D01* +X910261Y169393D01* +X910232Y169388D01* +X910131Y169335D01* +X910028Y169289D01* +X910006Y169270D01* +X909980Y169257D01* +X909898Y169179D01* +X909811Y169106D01* +X909795Y169081D01* +X909774Y169061D01* +X909716Y168963D01* +X909654Y168869D01* +X909645Y168841D01* +X909630Y168816D01* +X909602Y168706D01* +X909568Y168598D01* +X909567Y168568D01* +X909560Y168540D01* +X909563Y168427D01* +X909560Y168314D01* +X909568Y168285D01* +X909569Y168256D01* +X909604Y168148D01* +X909632Y168039D01* +X909647Y168013D01* +X909656Y167985D01* +X909702Y167921D01* +X909778Y167794D01* +X909823Y167751D01* +X909851Y167712D01* +X910690Y166873D01* +X911575Y164736D01* +X911575Y162423D01* +X910690Y160286D01* +X909054Y158650D01* +X906917Y157765D01* +X904604Y157765D01* +G37* +%LPD*% +%LPC*% +G36* +X1192643Y273585D02* +X1192643Y273585D01* +X1190506Y274471D01* +X1188871Y276106D01* +X1187985Y278243D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194957Y285215D01* +X1197094Y284329D01* +X1198729Y282694D01* +X1199212Y281529D01* +X1199227Y281504D01* +X1199236Y281476D01* +X1199299Y281382D01* +X1199356Y281284D01* +X1199378Y281264D01* +X1199394Y281239D01* +X1199481Y281167D01* +X1199563Y281089D01* +X1199589Y281075D01* +X1199612Y281056D01* +X1199715Y281010D01* +X1199816Y280959D01* +X1199845Y280953D01* +X1199872Y280941D01* +X1199984Y280925D01* +X1200095Y280904D01* +X1200124Y280906D01* +X1200153Y280902D01* +X1200265Y280918D01* +X1200378Y280928D01* +X1200406Y280939D01* +X1200434Y280943D01* +X1200537Y280989D01* +X1200643Y281030D01* +X1200667Y281048D01* +X1200694Y281060D01* +X1200780Y281133D01* +X1200870Y281202D01* +X1200888Y281225D01* +X1200910Y281244D01* +X1200952Y281311D01* +X1201040Y281429D01* +X1201058Y281476D01* +X1201075Y281502D01* +X1201079Y281515D01* +X1201088Y281529D01* +X1201571Y282694D01* +X1203206Y284329D01* +X1205343Y285215D01* +X1207657Y285215D01* +X1209794Y284329D01* +X1211429Y282694D01* +X1212315Y280557D01* +X1212315Y278243D01* +X1211429Y276106D01* +X1209794Y274471D01* +X1207657Y273585D01* +X1205343Y273585D01* +X1203206Y274471D01* +X1201571Y276106D01* +X1201088Y277271D01* +X1201073Y277296D01* +X1201064Y277324D01* +X1201001Y277419D01* +X1200943Y277516D01* +X1200922Y277536D01* +X1200906Y277561D01* +X1200819Y277634D01* +X1200737Y277711D01* +X1200711Y277725D01* +X1200688Y277744D01* +X1200585Y277790D01* +X1200484Y277841D01* +X1200455Y277847D01* +X1200428Y277859D01* +X1200316Y277875D01* +X1200205Y277896D01* +X1200176Y277894D01* +X1200147Y277898D01* +X1200035Y277882D01* +X1199922Y277872D01* +X1199895Y277861D01* +X1199865Y277857D01* +X1199762Y277811D01* +X1199657Y277770D01* +X1199633Y277752D01* +X1199606Y277740D01* +X1199520Y277667D01* +X1199430Y277598D01* +X1199412Y277575D01* +X1199390Y277556D01* +X1199349Y277490D01* +X1199260Y277371D01* +X1199244Y277329D01* +X1199227Y277304D01* +X1199222Y277287D01* +X1199212Y277271D01* +X1198729Y276106D01* +X1197094Y274471D01* +X1194957Y273585D01* +X1192643Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X1022463Y159285D02* +X1022463Y159285D01* +X1020326Y160171D01* +X1018691Y161806D01* +X1017805Y163943D01* +X1017805Y166257D01* +X1018691Y168394D01* +X1019759Y169462D01* +X1019794Y169509D01* +X1019836Y169549D01* +X1019879Y169622D01* +X1019930Y169689D01* +X1019951Y169744D01* +X1019980Y169794D01* +X1020001Y169876D01* +X1020031Y169955D01* +X1020036Y170013D01* +X1020050Y170070D01* +X1020048Y170154D01* +X1020055Y170238D01* +X1020043Y170296D01* +X1020041Y170354D01* +X1020015Y170434D01* +X1019999Y170517D01* +X1019972Y170569D01* +X1019954Y170625D01* +X1019914Y170681D01* +X1019868Y170769D01* +X1019799Y170842D01* +X1019759Y170898D01* +X1018691Y171966D01* +X1017805Y174103D01* +X1017805Y176417D01* +X1018691Y178554D01* +X1020326Y180189D01* +X1022463Y181075D01* +X1024777Y181075D01* +X1026914Y180189D01* +X1028549Y178554D01* +X1029435Y176417D01* +X1029435Y174103D01* +X1028549Y171966D01* +X1027481Y170898D01* +X1027446Y170851D01* +X1027404Y170811D01* +X1027361Y170738D01* +X1027310Y170671D01* +X1027289Y170616D01* +X1027260Y170566D01* +X1027239Y170484D01* +X1027209Y170405D01* +X1027204Y170347D01* +X1027190Y170290D01* +X1027192Y170206D01* +X1027185Y170122D01* +X1027197Y170064D01* +X1027199Y170006D01* +X1027225Y169926D01* +X1027241Y169843D01* +X1027268Y169791D01* +X1027286Y169735D01* +X1027326Y169679D01* +X1027372Y169591D01* +X1027441Y169518D01* +X1027481Y169462D01* +X1028549Y168394D01* +X1029435Y166257D01* +X1029435Y163943D01* +X1028549Y161806D01* +X1026914Y160171D01* +X1024777Y159285D01* +X1022463Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y153241D02* +X290487Y153241D01* +X287526Y154468D01* +X285259Y156734D01* +X284033Y159695D01* +X284033Y162900D01* +X285259Y165862D01* +X287526Y168128D01* +X290487Y169355D01* +X293692Y169355D01* +X296653Y168128D01* +X298920Y165862D01* +X300146Y162900D01* +X300146Y159695D01* +X298920Y156734D01* +X296653Y154468D01* +X293692Y153241D01* +X290487Y153241D01* +G37* +%LPD*% +%LPC*% +G36* +X178006Y147147D02* +X178006Y147147D01* +X175045Y148374D01* +X172779Y150640D01* +X171552Y153601D01* +X171552Y156806D01* +X172779Y159768D01* +X175045Y162034D01* +X178006Y163261D01* +X181211Y163261D01* +X184173Y162034D01* +X186439Y159768D01* +X187665Y156806D01* +X187665Y153601D01* +X186439Y150640D01* +X184173Y148374D01* +X181211Y147147D01* +X178006Y147147D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y165941D02* +X315887Y165941D01* +X312926Y167168D01* +X310659Y169434D01* +X309433Y172395D01* +X309433Y175600D01* +X310659Y178562D01* +X312926Y180828D01* +X315887Y182055D01* +X319092Y182055D01* +X322053Y180828D01* +X324320Y178562D01* +X325546Y175600D01* +X325546Y172395D01* +X324320Y169434D01* +X322053Y167168D01* +X319092Y165941D01* +X315887Y165941D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y178641D02* +X290487Y178641D01* +X287526Y179868D01* +X285259Y182134D01* +X284033Y185095D01* +X284033Y188300D01* +X285259Y191262D01* +X287526Y193528D01* +X290487Y194755D01* +X293692Y194755D01* +X296653Y193528D01* +X298920Y191262D01* +X300146Y188300D01* +X300146Y185095D01* +X298920Y182134D01* +X296653Y179868D01* +X293692Y178641D01* +X290487Y178641D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y140541D02* +X315887Y140541D01* +X312926Y141768D01* +X310659Y144034D01* +X309433Y146995D01* +X309433Y150200D01* +X310659Y153162D01* +X312926Y155428D01* +X315887Y156655D01* +X319092Y156655D01* +X322053Y155428D01* +X324320Y153162D01* +X325546Y150200D01* +X325546Y146995D01* +X324320Y144034D01* +X322053Y141768D01* +X319092Y140541D01* +X315887Y140541D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y191341D02* +X315887Y191341D01* +X312926Y192568D01* +X310659Y194834D01* +X309433Y197795D01* +X309433Y201000D01* +X310659Y203962D01* +X312926Y206228D01* +X315887Y207455D01* +X319092Y207455D01* +X322053Y206228D01* +X324320Y203962D01* +X325546Y201000D01* +X325546Y197795D01* +X324320Y194834D01* +X322053Y192568D01* +X319092Y191341D01* +X315887Y191341D01* +G37* +%LPD*% +%LPC*% +G36* +X193201Y121729D02* +X193201Y121729D01* +X190240Y122955D01* +X187974Y125221D01* +X186747Y128183D01* +X186747Y131388D01* +X187974Y134349D01* +X190240Y136615D01* +X193201Y137842D01* +X196406Y137842D01* +X199368Y136615D01* +X201634Y134349D01* +X202860Y131388D01* +X202860Y128183D01* +X201634Y125221D01* +X199368Y122955D01* +X196406Y121729D01* +X193201Y121729D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y229441D02* +X290487Y229441D01* +X287526Y230668D01* +X285259Y232934D01* +X284033Y235895D01* +X284033Y239100D01* +X285259Y242062D01* +X287526Y244328D01* +X290487Y245555D01* +X293692Y245555D01* +X296653Y244328D01* +X298920Y242062D01* +X300146Y239100D01* +X300146Y235895D01* +X298920Y232934D01* +X296653Y230668D01* +X293692Y229441D01* +X290487Y229441D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y204041D02* +X290487Y204041D01* +X287526Y205268D01* +X285259Y207534D01* +X284033Y210495D01* +X284033Y213700D01* +X285259Y216662D01* +X287526Y218928D01* +X290487Y220155D01* +X293692Y220155D01* +X296653Y218928D01* +X298920Y216662D01* +X300146Y213700D01* +X300146Y210495D01* +X298920Y207534D01* +X296653Y205268D01* +X293692Y204041D01* +X290487Y204041D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y216741D02* +X315887Y216741D01* +X312926Y217968D01* +X310659Y220234D01* +X309433Y223195D01* +X309433Y226400D01* +X310659Y229362D01* +X312926Y231628D01* +X315887Y232855D01* +X319092Y232855D01* +X322053Y231628D01* +X324320Y229362D01* +X325546Y226400D01* +X325546Y223195D01* +X324320Y220234D01* +X322053Y217968D01* +X319092Y216741D01* +X315887Y216741D01* +G37* +%LPD*% +%LPC*% +G36* +X193206Y222847D02* +X193206Y222847D01* +X190245Y224074D01* +X187979Y226340D01* +X186752Y229301D01* +X186752Y232506D01* +X187979Y235468D01* +X190245Y237734D01* +X193206Y238961D01* +X196411Y238961D01* +X199373Y237734D01* +X201639Y235468D01* +X202865Y232506D01* +X202865Y229301D01* +X201639Y226340D01* +X199373Y224074D01* +X196411Y222847D01* +X193206Y222847D01* +G37* +%LPD*% +%LPC*% +G36* +X489249Y115061D02* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496382Y118016D01* +X494465Y116099D01* +X491960Y115061D01* +X489249Y115061D01* +G37* +%LPD*% +%LPC*% +G36* +X405243Y311685D02* +X405243Y311685D01* +X403106Y312571D01* +X401471Y314206D01* +X400585Y316343D01* +X400585Y318657D01* +X401471Y320794D01* +X403106Y322429D01* +X405243Y323315D01* +X407557Y323315D01* +X409694Y322429D01* +X411329Y320794D01* +X412215Y318657D01* +X412215Y316343D01* +X411329Y314206D01* +X409694Y312571D01* +X407557Y311685D01* +X405243Y311685D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y212625D02* +X1205343Y212625D01* +X1203206Y213511D01* +X1201571Y215146D01* +X1200685Y217283D01* +X1200685Y219597D01* +X1201571Y221734D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209794Y223369D01* +X1211429Y221734D01* +X1212315Y219597D01* +X1212315Y217283D01* +X1211429Y215146D01* +X1209794Y213511D01* +X1207657Y212625D01* +X1205343Y212625D01* +G37* +%LPD*% +%LPC*% +G36* +X547048Y215601D02* +X547048Y215601D01* +X544911Y216486D01* +X543275Y218122D01* +X542390Y220259D01* +X542390Y222572D01* +X543275Y224709D01* +X544911Y226345D01* +X547048Y227230D01* +X549361Y227230D01* +X551498Y226345D01* +X553134Y224709D01* +X554019Y222572D01* +X554019Y220259D01* +X553134Y218122D01* +X551498Y216486D01* +X549361Y215601D01* +X547048Y215601D01* +G37* +%LPD*% +%LPC*% +G36* +X517003Y233679D02* +X517003Y233679D01* +X514866Y234565D01* +X513231Y236200D01* +X512345Y238337D01* +X512345Y240651D01* +X513231Y242788D01* +X514866Y244423D01* +X517003Y245309D01* +X519317Y245309D01* +X521454Y244423D01* +X523089Y242788D01* +X523975Y240651D01* +X523975Y238337D01* +X523089Y236200D01* +X521454Y234565D01* +X519317Y233679D01* +X517003Y233679D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y235485D02* +X1205343Y235485D01* +X1203206Y236371D01* +X1201571Y238006D01* +X1200685Y240143D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1211429Y244594D01* +X1212315Y242457D01* +X1212315Y240143D01* +X1211429Y238006D01* +X1209794Y236371D01* +X1207657Y235485D01* +X1205343Y235485D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y197385D02* +X1205343Y197385D01* +X1203206Y198271D01* +X1201571Y199906D01* +X1200685Y202043D01* +X1200685Y204357D01* +X1201571Y206494D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1211429Y206494D01* +X1212315Y204357D01* +X1212315Y202043D01* +X1211429Y199906D01* +X1209794Y198271D01* +X1207657Y197385D01* +X1205343Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X580503Y197385D02* +X580503Y197385D01* +X578366Y198271D01* +X576731Y199906D01* +X575845Y202043D01* +X575845Y204357D01* +X576731Y206494D01* +X578366Y208129D01* +X580503Y209015D01* +X582817Y209015D01* +X584954Y208129D01* +X586589Y206494D01* +X587475Y204357D01* +X587475Y202043D01* +X586589Y199906D01* +X584954Y198271D01* +X582817Y197385D01* +X580503Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X395083Y344781D02* +X395083Y344781D01* +X392946Y345667D01* +X391311Y347302D01* +X390425Y349439D01* +X390425Y351753D01* +X391311Y353890D01* +X392946Y355525D01* +X395083Y356411D01* +X397397Y356411D01* +X399534Y355525D01* +X401169Y353890D01* +X402055Y351753D01* +X402055Y349439D01* +X401169Y347302D01* +X399534Y345667D01* +X397397Y344781D01* +X395083Y344781D01* +G37* +%LPD*% +%LPC*% +G36* +X412863Y337085D02* +X412863Y337085D01* +X410726Y337971D01* +X409091Y339606D01* +X408205Y341743D01* +X408205Y344057D01* +X409091Y346194D01* +X410726Y347829D01* +X412863Y348715D01* +X415177Y348715D01* +X417314Y347829D01* +X418949Y346194D01* +X419835Y344057D01* +X419835Y341743D01* +X418949Y339606D01* +X417314Y337971D01* +X415177Y337085D01* +X412863Y337085D01* +G37* +%LPD*% +%LPC*% +G36* +X189343Y337085D02* +X189343Y337085D01* +X187206Y337971D01* +X185571Y339606D01* +X184685Y341743D01* +X184685Y344057D01* +X185571Y346194D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195429Y339606D01* +X193794Y337971D01* +X191657Y337085D01* +X189343Y337085D01* +G37* +%LPD*% +%LPC*% +G36* +X994523Y177065D02* +X994523Y177065D01* +X992386Y177951D01* +X990751Y179586D01* +X989865Y181723D01* +X989865Y184037D01* +X990751Y186174D01* +X992386Y187809D01* +X994523Y188695D01* +X996837Y188695D01* +X998974Y187809D01* +X1000609Y186174D01* +X1001495Y184037D01* +X1001495Y181723D01* +X1000609Y179586D01* +X998974Y177951D01* +X996837Y177065D01* +X994523Y177065D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y174525D02* +X1205343Y174525D01* +X1203206Y175411D01* +X1201571Y177046D01* +X1200685Y179183D01* +X1200685Y181497D01* +X1201571Y183634D01* +X1203206Y185269D01* +X1205343Y186155D01* +X1207657Y186155D01* +X1209794Y185269D01* +X1211429Y183634D01* +X1212315Y181497D01* +X1212315Y179183D01* +X1211429Y177046D01* +X1209794Y175411D01* +X1207657Y174525D01* +X1205343Y174525D01* +G37* +%LPD*% +%LPC*% +G36* +X450798Y286120D02* +X450798Y286120D01* +X448661Y287005D01* +X447025Y288641D01* +X446140Y290778D01* +X446140Y293091D01* +X447025Y295228D01* +X448661Y296864D01* +X450798Y297749D01* +X453111Y297749D01* +X455248Y296864D01* +X456884Y295228D01* +X457769Y293091D01* +X457769Y290778D01* +X456884Y288641D01* +X455248Y287005D01* +X453111Y286120D01* +X450798Y286120D01* +G37* +%LPD*% +%LPC*% +G36* +X468743Y250725D02* +X468743Y250725D01* +X466606Y251611D01* +X464971Y253246D01* +X464085Y255383D01* +X464085Y257697D01* +X464971Y259834D01* +X466606Y261469D01* +X468743Y262355D01* +X471057Y262355D01* +X473194Y261469D01* +X474829Y259834D01* +X475715Y257697D01* +X475715Y255383D01* +X474829Y253246D01* +X473194Y251611D01* +X471057Y250725D01* +X468743Y250725D01* +G37* +%LPD*% +%LPC*% +G36* +X923403Y169445D02* +X923403Y169445D01* +X921266Y170331D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919631Y178554D01* +X921266Y180189D01* +X923403Y181075D01* +X925717Y181075D01* +X927854Y180189D01* +X929489Y178554D01* +X930375Y176417D01* +X930375Y174103D01* +X929489Y171966D01* +X927854Y170331D01* +X925717Y169445D01* +X923403Y169445D01* +G37* +%LPD*% +%LPC*% +G36* +X400740Y329465D02* +X400740Y329465D01* +X398603Y330351D01* +X396967Y331986D01* +X396082Y334123D01* +X396082Y336437D01* +X396967Y338574D01* +X398603Y340209D01* +X400740Y341095D01* +X403053Y341095D01* +X405191Y340209D01* +X406826Y338574D01* +X407712Y336437D01* +X407712Y334123D01* +X406826Y331986D01* +X405191Y330351D01* +X403053Y329465D01* +X400740Y329465D01* +G37* +%LPD*% +%LPC*% +G36* +X285863Y298985D02* +X285863Y298985D01* +X283726Y299871D01* +X282091Y301506D01* +X281205Y303643D01* +X281205Y305957D01* +X282091Y308094D01* +X283726Y309729D01* +X285863Y310615D01* +X288177Y310615D01* +X290314Y309729D01* +X291949Y308094D01* +X292835Y305957D01* +X292835Y303643D01* +X291949Y301506D01* +X290314Y299871D01* +X288177Y298985D01* +X285863Y298985D01* +G37* +%LPD*% +%LPC*% +G36* +X250303Y298985D02* +X250303Y298985D01* +X248166Y299871D01* +X246531Y301506D01* +X245645Y303643D01* +X245645Y305957D01* +X246531Y308094D01* +X248166Y309729D01* +X250303Y310615D01* +X252617Y310615D01* +X254754Y309729D01* +X256389Y308094D01* +X257275Y305957D01* +X257275Y303643D01* +X256389Y301506D01* +X254754Y299871D01* +X252617Y298985D01* +X250303Y298985D01* +G37* +%LPD*% +%LPC*% +G36* +X854823Y42445D02* +X854823Y42445D01* +X852686Y43331D01* +X851051Y44966D01* +X850165Y47103D01* +X850165Y49417D01* +X851051Y51554D01* +X852686Y53189D01* +X854823Y54075D01* +X857137Y54075D01* +X859274Y53189D01* +X860909Y51554D01* +X861795Y49417D01* +X861795Y47103D01* +X860909Y44966D01* +X859274Y43331D01* +X857137Y42445D01* +X854823Y42445D01* +G37* +%LPD*% +%LPC*% +G36* +X710043Y164365D02* +X710043Y164365D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716129Y173474D01* +X717015Y171337D01* +X717015Y169023D01* +X716129Y166886D01* +X714494Y165251D01* +X712357Y164365D01* +X710043Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X539863Y164365D02* +X539863Y164365D01* +X537726Y165251D01* +X536091Y166886D01* +X535205Y169023D01* +X535205Y171337D01* +X536091Y173474D01* +X537726Y175109D01* +X539863Y175995D01* +X542177Y175995D01* +X544314Y175109D01* +X545949Y173474D01* +X546835Y171337D01* +X546835Y169023D01* +X545949Y166886D01* +X544314Y165251D01* +X542177Y164365D01* +X539863Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X1159623Y161825D02* +X1159623Y161825D01* +X1157486Y162711D01* +X1155851Y164346D01* +X1154965Y166483D01* +X1154965Y168797D01* +X1155851Y170934D01* +X1157486Y172569D01* +X1159623Y173455D01* +X1161937Y173455D01* +X1164074Y172569D01* +X1165709Y170934D01* +X1166595Y168797D01* +X1166595Y166483D01* +X1165709Y164346D01* +X1164074Y162711D01* +X1161937Y161825D01* +X1159623Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X887843Y159285D02* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883185Y163943D01* +X883185Y166257D01* +X884071Y168394D01* +X885706Y170029D01* +X887843Y170915D01* +X890157Y170915D01* +X892294Y170029D01* +X893929Y168394D01* +X894815Y166257D01* +X894815Y163943D01* +X893929Y161806D01* +X892294Y160171D01* +X890157Y159285D01* +X887843Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X323963Y293905D02* +X323963Y293905D01* +X321826Y294791D01* +X320191Y296426D01* +X319305Y298563D01* +X319305Y300877D01* +X320191Y303014D01* +X321826Y304649D01* +X323963Y305535D01* +X326277Y305535D01* +X328414Y304649D01* +X330049Y303014D01* +X330935Y300877D01* +X330935Y298563D01* +X330049Y296426D01* +X328414Y294791D01* +X326277Y293905D01* +X323963Y293905D01* +G37* +%LPD*% +%LPC*% +G36* +X501643Y157094D02* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X496985Y161752D01* +X496985Y164065D01* +X497871Y166203D01* +X499506Y167838D01* +X501643Y168724D01* +X503957Y168724D01* +X506094Y167838D01* +X507729Y166203D01* +X508615Y164065D01* +X508615Y161752D01* +X507729Y159615D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +G37* +%LPD*% +%LPC*% +G36* +X758303Y154205D02* +X758303Y154205D01* +X756166Y155091D01* +X754531Y156726D01* +X753645Y158863D01* +X753645Y161177D01* +X754531Y163314D01* +X756166Y164949D01* +X758303Y165835D01* +X760617Y165835D01* +X762754Y164949D01* +X764389Y163314D01* +X765275Y161177D01* +X765275Y158863D01* +X764389Y156726D01* +X762754Y155091D01* +X760617Y154205D01* +X758303Y154205D01* +G37* +%LPD*% +%LPC*% +G36* +X527163Y75465D02* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +G37* +%LPD*% +%LPC*% +G36* +X702972Y152214D02* +X702972Y152214D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X699199Y161323D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707423Y162958D01* +X709058Y161323D01* +X709944Y159185D01* +X709944Y156872D01* +X709058Y154735D01* +X707423Y153099D01* +X705285Y152214D01* +X702972Y152214D01* +G37* +%LPD*% +%LPC*% +G36* +X1154543Y260885D02* +X1154543Y260885D01* +X1152406Y261771D01* +X1150771Y263406D01* +X1149885Y265543D01* +X1149885Y267857D01* +X1150771Y269994D01* +X1152406Y271629D01* +X1154543Y272515D01* +X1156857Y272515D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265543D01* +X1160629Y263406D01* +X1158994Y261771D01* +X1156857Y260885D01* +X1154543Y260885D01* +G37* +%LPD*% +%LPC*% +G36* +X1141843Y149125D02* +X1141843Y149125D01* +X1139706Y150011D01* +X1138071Y151646D01* +X1137185Y153783D01* +X1137185Y156097D01* +X1138071Y158234D01* +X1139706Y159869D01* +X1141843Y160755D01* +X1144157Y160755D01* +X1146294Y159869D01* +X1147929Y158234D01* +X1148815Y156097D01* +X1148815Y153783D01* +X1147929Y151646D01* +X1146294Y150011D01* +X1144157Y149125D01* +X1141843Y149125D01* +G37* +%LPD*% +%LPC*% +G36* +X666863Y149099D02* +X666863Y149099D01* +X664726Y149985D01* +X663091Y151620D01* +X662205Y153757D01* +X662205Y156071D01* +X663091Y158208D01* +X664726Y159843D01* +X666863Y160729D01* +X669177Y160729D01* +X671314Y159843D01* +X672949Y158208D01* +X673835Y156071D01* +X673835Y153757D01* +X672949Y151620D01* +X671314Y149985D01* +X669177Y149099D01* +X666863Y149099D01* +G37* +%LPD*% +%LPC*% +G36* +X847203Y146585D02* +X847203Y146585D01* +X845066Y147471D01* +X843431Y149106D01* +X842545Y151243D01* +X842545Y153557D01* +X843431Y155694D01* +X845066Y157329D01* +X847203Y158215D01* +X849517Y158215D01* +X851654Y157329D01* +X853289Y155694D01* +X854175Y153557D01* +X854175Y151243D01* +X853289Y149106D01* +X851654Y147471D01* +X849517Y146585D01* +X847203Y146585D01* +G37* +%LPD*% +%LPC*% +G36* +X1164703Y271045D02* +X1164703Y271045D01* +X1162566Y271931D01* +X1160931Y273566D01* +X1160045Y275703D01* +X1160045Y278017D01* +X1160931Y280154D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275703D01* +X1170789Y273566D01* +X1169154Y271931D01* +X1167017Y271045D01* +X1164703Y271045D01* +G37* +%LPD*% +%LPC*% +G36* +X1220991Y116105D02* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218854Y126849D01* +X1220991Y127735D01* +X1223305Y127735D01* +X1225442Y126849D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +G37* +%LPD*% +%LPC*% +G36* +X1121523Y141505D02* +X1121523Y141505D01* +X1119386Y142391D01* +X1117751Y144026D01* +X1116865Y146163D01* +X1116865Y148477D01* +X1117751Y150614D01* +X1119386Y152249D01* +X1121523Y153135D01* +X1123837Y153135D01* +X1125974Y152249D01* +X1127609Y150614D01* +X1128495Y148477D01* +X1128495Y146163D01* +X1127609Y144026D01* +X1125974Y142391D01* +X1123837Y141505D01* +X1121523Y141505D01* +G37* +%LPD*% +%LPC*% +G36* +X555103Y273585D02* +X555103Y273585D01* +X552966Y274471D01* +X551331Y276106D01* +X550445Y278243D01* +X550445Y280557D01* +X551331Y282694D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278243D01* +X561189Y276106D01* +X559554Y274471D01* +X557417Y273585D01* +X555103Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X542403Y128805D02* +X542403Y128805D01* +X540266Y129691D01* +X538631Y131326D01* +X537745Y133463D01* +X537745Y135777D01* +X538631Y137914D01* +X540266Y139549D01* +X542403Y140435D01* +X544717Y140435D01* +X546854Y139549D01* +X548489Y137914D01* +X549375Y135777D01* +X549375Y133463D01* +X548489Y131326D01* +X546854Y129691D01* +X544717Y128805D01* +X542403Y128805D01* +G37* +%LPD*% +%LPC*% +G36* +X514463Y273585D02* +X514463Y273585D01* +X512326Y274471D01* +X510691Y276106D01* +X509805Y278243D01* +X509805Y280557D01* +X510691Y282694D01* +X512326Y284329D01* +X514463Y285215D01* +X516777Y285215D01* +X518914Y284329D01* +X520549Y282694D01* +X521435Y280557D01* +X521435Y278243D01* +X520549Y276106D01* +X518914Y274471D01* +X516777Y273585D01* +X514463Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751214Y131738D01* +X753268Y132589D01* +X755492Y132589D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X1004728Y289051D02* +X1004728Y289051D01* +X1002674Y289902D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009006Y289902D01* +X1006952Y289051D01* +X1004728Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X1245012Y154431D02* +X1245012Y154431D01* +X1242958Y155282D01* +X1241386Y156854D01* +X1240535Y158908D01* +X1240535Y161132D01* +X1241386Y163186D01* +X1242958Y164758D01* +X1245012Y165609D01* +X1247236Y165609D01* +X1249290Y164758D01* +X1250862Y163186D01* +X1251713Y161132D01* +X1251713Y158908D01* +X1250862Y156854D01* +X1249290Y155282D01* +X1247236Y154431D01* +X1245012Y154431D01* +G37* +%LPD*% +%LPC*% +G36* +X1220628Y93471D02* +X1220628Y93471D01* +X1218574Y94322D01* +X1217002Y95894D01* +X1216151Y97948D01* +X1216151Y100172D01* +X1217002Y102226D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X875188Y245871D02* +X875188Y245871D01* +X873134Y246722D01* +X871562Y248294D01* +X870711Y250348D01* +X870711Y252572D01* +X871562Y254626D01* +X873134Y256198D01* +X875188Y257049D01* +X877412Y257049D01* +X879466Y256198D01* +X881038Y254626D01* +X881889Y252572D01* +X881889Y250348D01* +X881038Y248294D01* +X879466Y246722D01* +X877412Y245871D01* +X875188Y245871D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y283768D01* +X261933Y283640D01* +X263750Y283049D01* +X265453Y282182D01* +X266999Y281058D01* +X268350Y279707D01* +X269473Y278161D01* +X270341Y276458D01* +X270931Y274641D01* +X271060Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y126268D01* +X261933Y126140D01* +X263750Y125549D01* +X265453Y124682D01* +X266999Y123558D01* +X268350Y122207D01* +X269473Y120661D01* +X270341Y118958D01* +X270931Y117141D01* +X271060Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y112267D02* +X261121Y112267D01* +X271060Y112267D01* +X270931Y111455D01* +X270341Y109637D01* +X269473Y107935D01* +X268350Y106389D01* +X266999Y105038D01* +X265453Y103914D01* +X263750Y103047D01* +X261933Y102456D01* +X261121Y102328D01* +X261121Y112267D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y273829D02* +X247119Y273829D01* +X247248Y274641D01* +X247838Y276458D01* +X248706Y278161D01* +X249829Y279707D01* +X251180Y281058D01* +X252726Y282182D01* +X254429Y283049D01* +X256247Y283640D01* +X257058Y283768D01* +X257058Y273829D01* +X247119Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X271060Y269767D01* +X270931Y268955D01* +X270341Y267137D01* +X269473Y265435D01* +X268350Y263889D01* +X266999Y262538D01* +X265453Y261414D01* +X263750Y260547D01* +X261933Y259956D01* +X261121Y259828D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y116329D02* +X247119Y116329D01* +X247248Y117141D01* +X247838Y118958D01* +X248706Y120661D01* +X249829Y122207D01* +X251180Y123558D01* +X252726Y124682D01* +X254429Y125549D01* +X256247Y126140D01* +X257058Y126268D01* +X257058Y116329D01* +X247119Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y259956D02* +X256247Y259956D01* +X254429Y260547D01* +X252726Y261414D01* +X251180Y262538D01* +X249829Y263889D01* +X248706Y265435D01* +X247838Y267137D01* +X247248Y268955D01* +X247119Y269767D01* +X257058Y269767D01* +X257058Y259828D01* +X256247Y259956D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y102456D02* +X256247Y102456D01* +X254429Y103047D01* +X252726Y103914D01* +X251180Y105038D01* +X249829Y106389D01* +X248706Y107935D01* +X247838Y109637D01* +X247248Y111455D01* +X247119Y112267D01* +X257058Y112267D01* +X257058Y102328D01* +X256247Y102456D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y37549D01* +X402640Y37460D01* +X404297Y36922D01* +X405848Y36131D01* +X407257Y35108D01* +X408488Y33877D01* +X409511Y32468D01* +X410302Y30917D01* +X410840Y29260D01* +X410929Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y37549D01* +X974140Y37460D01* +X975797Y36922D01* +X977348Y36131D01* +X978757Y35108D01* +X979988Y33877D01* +X981011Y32468D01* +X981802Y30917D01* +X982340Y29260D01* +X982429Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y24639D02* +X402081Y24639D01* +X410929Y24639D01* +X410840Y24080D01* +X410302Y22423D01* +X409511Y20872D01* +X408488Y19463D01* +X407257Y18232D01* +X405848Y17209D01* +X404297Y16418D01* +X402640Y15880D01* +X402081Y15791D01* +X402081Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y24639D02* +X973581Y24639D01* +X982429Y24639D01* +X982340Y24080D01* +X981802Y22423D01* +X981011Y20872D01* +X979988Y19463D01* +X978757Y18232D01* +X977348Y17209D01* +X975797Y16418D01* +X974140Y15880D01* +X973581Y15791D01* +X973581Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X960671Y28701D02* +X960671Y28701D01* +X960760Y29260D01* +X961298Y30917D01* +X962089Y32468D01* +X963112Y33877D01* +X964343Y35108D01* +X965752Y36131D01* +X967303Y36922D01* +X968960Y37460D01* +X969519Y37549D01* +X969519Y28701D01* +X960671Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X389171Y28701D02* +X389171Y28701D01* +X389260Y29260D01* +X389798Y30917D01* +X390589Y32468D01* +X391612Y33877D01* +X392843Y35108D01* +X394252Y36131D01* +X395803Y36922D01* +X397460Y37460D01* +X398019Y37549D01* +X398019Y28701D01* +X389171Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X397460Y15880D02* +X397460Y15880D01* +X395803Y16418D01* +X394252Y17209D01* +X392843Y18232D01* +X391612Y19463D01* +X390589Y20872D01* +X389798Y22423D01* +X389260Y24080D01* +X389171Y24639D01* +X398019Y24639D01* +X398019Y15791D01* +X397460Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X968960Y15880D02* +X968960Y15880D01* +X967303Y16418D01* +X965752Y17209D01* +X964343Y18232D01* +X963112Y19463D01* +X962089Y20872D01* +X961298Y22423D01* +X960760Y24080D01* +X960671Y24639D01* +X969519Y24639D01* +X969519Y15791D01* +X968960Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y22351D02* +X700531Y22351D01* +X700531Y29240D01* +X701167Y29113D01* +X702832Y28424D01* +X704330Y27423D01* +X705603Y26150D01* +X706604Y24652D01* +X707293Y22987D01* +X707420Y22351D01* +X700531Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y22351D02* +X725931Y22351D01* +X725931Y29240D01* +X726567Y29113D01* +X728232Y28424D01* +X729730Y27423D01* +X731003Y26150D01* +X732004Y24652D01* +X732693Y22987D01* +X732820Y22351D01* +X725931Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y18289D02* +X700531Y18289D01* +X707420Y18289D01* +X707293Y17653D01* +X706604Y15988D01* +X705603Y14490D01* +X704330Y13217D01* +X702832Y12216D01* +X701167Y11527D01* +X700531Y11400D01* +X700531Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X714980Y22351D02* +X714980Y22351D01* +X715107Y22987D01* +X715796Y24652D01* +X716797Y26150D01* +X718070Y27423D01* +X719568Y28424D01* +X721233Y29113D01* +X721869Y29240D01* +X721869Y22351D01* +X714980Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X689580Y22351D02* +X689580Y22351D01* +X689707Y22987D01* +X690396Y24652D01* +X691397Y26150D01* +X692670Y27423D01* +X694168Y28424D01* +X695833Y29113D01* +X696469Y29240D01* +X696469Y22351D01* +X689580Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y18289D02* +X725931Y18289D01* +X732820Y18289D01* +X732693Y17653D01* +X732004Y15988D01* +X731003Y14490D01* +X729730Y13217D01* +X728232Y12216D01* +X726567Y11527D01* +X725931Y11400D01* +X725931Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X695833Y11527D02* +X695833Y11527D01* +X694168Y12216D01* +X692670Y13217D01* +X691397Y14490D01* +X690396Y15988D01* +X689707Y17653D01* +X689580Y18289D01* +X696469Y18289D01* +X696469Y11400D01* +X695833Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X721233Y11527D02* +X721233Y11527D01* +X719568Y12216D01* +X718070Y13217D01* +X716797Y14490D01* +X715796Y15988D01* +X715107Y17653D01* +X714980Y18289D01* +X721869Y18289D01* +X721869Y11400D01* +X721233Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y264614D01* +X182102Y264521D01* +X183661Y263875D01* +X185063Y262938D01* +X186256Y261745D01* +X187194Y260342D01* +X187839Y258784D01* +X187932Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X187932Y254254D01* +X187839Y253787D01* +X187194Y252228D01* +X186256Y250826D01* +X185063Y249633D01* +X183661Y248695D01* +X182102Y248050D01* +X181635Y247957D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X171275Y258317D02* +X171275Y258317D01* +X171368Y258784D01* +X172014Y260342D01* +X172951Y261745D01* +X174144Y262938D01* +X175547Y263875D01* +X177105Y264521D01* +X177572Y264614D01* +X177572Y258317D01* +X171275Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X177105Y248050D02* +X177105Y248050D01* +X175547Y248695D01* +X174144Y249633D01* +X172951Y250826D01* +X172014Y252228D01* +X171368Y253787D01* +X171275Y254254D01* +X177572Y254254D01* +X177572Y247957D01* +X177105Y248050D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y293389D02* +X139619Y293389D01* +X139619Y298602D01* +X140277Y298471D01* +X141479Y297973D01* +X142560Y297250D01* +X143480Y296330D01* +X144203Y295249D01* +X144701Y294047D01* +X144832Y293389D01* +X139619Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y359389D02* +X139619Y359389D01* +X139619Y364602D01* +X140277Y364471D01* +X141479Y363973D01* +X142560Y363250D01* +X143480Y362330D01* +X144203Y361249D01* +X144701Y360047D01* +X144832Y359389D01* +X139619Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y290851D02* +X139619Y290851D01* +X144832Y290851D01* +X144701Y290193D01* +X144203Y288991D01* +X143480Y287910D01* +X142560Y286990D01* +X141479Y286267D01* +X140277Y285769D01* +X139619Y285638D01* +X139619Y290851D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y356851D02* +X139619Y356851D01* +X144832Y356851D01* +X144701Y356193D01* +X144203Y354991D01* +X143480Y353910D01* +X142560Y352990D01* +X141479Y352267D01* +X140277Y351769D01* +X139619Y351638D01* +X139619Y356851D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y293389D02* +X131868Y293389D01* +X131999Y294047D01* +X132497Y295249D01* +X133220Y296330D01* +X134140Y297250D01* +X135221Y297973D01* +X136423Y298471D01* +X137081Y298602D01* +X137081Y293389D01* +X131868Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y359389D02* +X131868Y359389D01* +X131999Y360047D01* +X132497Y361249D01* +X133220Y362330D01* +X134140Y363250D01* +X135221Y363973D01* +X136423Y364471D01* +X137081Y364602D01* +X137081Y359389D01* +X131868Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y351769D02* +X136423Y351769D01* +X135221Y352267D01* +X134140Y352990D01* +X133220Y353910D01* +X132497Y354991D01* +X131999Y356193D01* +X131868Y356851D01* +X137081Y356851D01* +X137081Y351638D01* +X136423Y351769D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y285769D02* +X136423Y285769D01* +X135221Y286267D01* +X134140Y286990D01* +X133220Y287910D01* +X132497Y288991D01* +X131999Y290193D01* +X131868Y290851D01* +X137081Y290851D01* +X137081Y285638D01* +X136423Y285769D01* +G37* +%LPD*% +%LPC*% +G36* +X400049Y26669D02* +X400049Y26669D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y26669D01* +X400049Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X723899Y20319D02* +X723899Y20319D01* +X723899Y20321D01* +X723901Y20321D01* +X723901Y20319D01* +X723899Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X698499Y20319D02* +X698499Y20319D01* +X698499Y20321D01* +X698501Y20321D01* +X698501Y20319D01* +X698499Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X971549Y26669D02* +X971549Y26669D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y26669D01* +X971549Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y114297D02* +X259089Y114297D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y114297D01* +X259089Y114297D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +D10* +X138350Y358120D03* +X138350Y292120D03* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +X292090Y237498D03* +D12* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D13* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D14* +X800100Y20320D03* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +X736600Y76200D03* +X711200Y76200D03* +D15* +X680720Y58420D03* +D16* +X698500Y58420D01* +X698500Y20320D01* +X723900Y20320D01* +D15* +X276860Y287020D03* +D16* +X259090Y271798D02* +X179604Y271798D01* +X177800Y271798D01* +D15* +X297180Y287020D03* +X317500Y335280D03* +D16* +X317500Y271798D01* +X297180Y271798D01* +D15* +X180340Y365816D03* +D16* +X172644Y358120D01* +X138350Y358120D01* +D15* +X393700Y317500D03* +D16* +X393700Y271798D01* +X317500Y271798D01* +X297180Y271798D02* +X276860Y271798D01* +X259090Y271798D01* +D15* +X561340Y76200D03* +D16* +X594360Y76200D02* +X612140Y58420D01* +X594360Y76200D02* +X561340Y76200D01* +X657860Y58420D02* +X680720Y58420D01* +D15* +X464820Y228600D03* +D16* +X393700Y228600D01* +X347980Y228600D01* +D15* +X424180Y259080D03* +X462280Y147320D03* +D16* +X347980Y147320D01* +X347980Y172720D01* +X347980Y228600D01* +X424180Y259080D02* +X424180Y269240D01* +D15* +X469900Y167640D03* +D16* +X462280Y160020D01* +X462280Y147320D01* +D15* +X500380Y134620D03* +D16* +X487680Y147320D01* +X462280Y147320D01* +D15* +X556260Y180340D03* +D16* +X487680Y180340D01* +X482600Y180340D01* +X469900Y167640D01* +D15* +X1206500Y304800D03* +D16* +X1257300Y7620D02* +X1051560Y7620D01* +X1051560Y76200D01* +X1206500Y304800D02* +X1247027Y304800D01* +X1247140Y304687D01* +D15* +X1051560Y76200D03* +D16* +X1247140Y190500D02* +X1257300Y190500D01* +X1247140Y190500D02* +X1135380Y190500D01* +X1127760Y198120D01* +X1257300Y190500D02* +X1257300Y7620D01* +X971550Y7620D02* +X971550Y26670D01* +X971550Y7620D02* +X1051560Y7620D01* +D15* +X873760Y66040D03* +D16* +X873760Y7620D01* +X971550Y7620D01* +X830580Y7620D02* +X723900Y7620D01* +D15* +X830580Y83820D03* +D16* +X830580Y7620D01* +X873760Y7620D01* +D15* +X886460Y149860D03* +D16* +X886460Y78740D01* +X873760Y66040D01* +D15* +X939800Y241300D03* +D16* +X939800Y142240D01* +X960120Y121920D01* +D15* +X960120Y121920D03* +X1082040Y106680D03* +D16* +X1066800Y121920D01* +X960120Y121920D01* +X1051560Y76200D02* +X1082040Y106680D01* +D15* +X1127760Y198120D03* +D16* +X723900Y20320D02* +X723900Y7620D01* +D15* +X657860Y142240D03* +D16* +X657860Y58420D01* +X723900Y7620D02* +X400050Y7620D01* +X259090Y7620D01* +X139700Y7620D01* +X139700Y271798D01* +X177800Y271798D01* +X179604Y271798D02* +X179604Y256285D01* +X400050Y26670D02* +X400050Y7620D01* +X259090Y7620D02* +X259090Y114298D01* +X139700Y356770D02* +X138350Y358120D01* +X139700Y356770D02* +X139700Y271798D01* +D15* +X861060Y274320D03* +D16* +X952500Y274320D02* +X960120Y274320D01* +X960120Y241300D01* +D15* +X952500Y297180D03* +D16* +X952500Y281940D01* +X952500Y274320D01* +X883920Y274320D02* +X861060Y274320D01* +X883920Y274320D02* +X952500Y274320D01* +D15* +X952500Y281940D03* +X960120Y241300D03* +D16* +X939800Y241300D01* +D15* +X1071880Y302260D03* +D16* +X957580Y302260D01* +X952500Y297180D01* +D15* +X177800Y309880D03* +X347980Y172720D03* +X497840Y269240D03* +D16* +X424180Y269240D01* +X1247140Y304687D02* +X1247140Y190500D01* +X657860Y58420D02* +X612140Y58420D01* +X177800Y271798D02* +X177800Y309880D01* +X297180Y287020D02* +X297180Y271798D01* +X393700Y271798D02* +X393700Y269240D01* +X424180Y269240D01* +X393700Y269240D02* +X393700Y228600D01* +D17* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +D16* +X487680Y185420D02* +X487680Y180340D01* +X487680Y185420D02* +X495300Y185420D01* +X502920Y185420D01* +X502920Y200660D01* +X487680Y200660D01* +X495300Y193040D02* +X495300Y185420D01* +X276860Y271798D02* +X276860Y287020D01* +D17* +X993140Y294640D03* +X868564Y241184D03* +D16* +X869696Y242316D01* +X881576Y242316D01* +X883920Y244661D01* +X883920Y274320D01* +D15* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X327660Y353060D03* +X342900Y370840D03* +X1193800Y279400D03* +X518160Y239494D03* +X1206500Y203200D03* +X563880Y211610D03* +X502800Y162909D03* +X1023620Y175260D03* +X1206500Y241300D03* +X499816Y231140D03* +X1206500Y218440D03* +X490188Y231172D03* +X1206500Y279400D03* +X482600Y238760D03* +X1074420Y190500D03* +X566332Y202014D03* +X1074420Y177800D03* +X581660Y203200D03* +X1082040Y167640D03* +X553720Y203200D03* +X1165860Y276860D03* +X396240Y350596D03* +X1155700Y266700D03* +X414020Y342900D03* +X1222148Y121920D03* +X905760Y163580D03* +X982980Y172720D03* +X759460Y160020D03* +X919480Y144780D03* +X1143000Y154940D03* +X972820Y165100D03* +X924560Y175260D03* +X995680Y182880D03* +X711200Y170180D03* +X909320Y175260D03* +X704129Y158029D03* +X1122680Y147320D03* +X889000Y165100D03* +X1160780Y167640D03* +X906780Y142240D03* +D17* +X443114Y186806D03* +X449580Y180340D03* +X449580Y205740D03* +X443114Y199274D03* +D15* +X1206500Y180340D03* +X1023620Y165100D03* +X287020Y304800D03* +X251460Y304800D03* +X406400Y317500D03* +X855980Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +D17* +X1221740Y99060D03* +X1246124Y160020D03* +X876300Y251460D03* +X1178560Y289560D03* +X1005840Y294640D03* +X754380Y127000D03* +D15* +X401897Y335280D03* +X451955Y291935D03* +X190500Y342900D03* +X325120Y299720D03* +D18* +X490605Y121876D03* +D15* +X556260Y279400D03* +X515620Y279400D03* +X528320Y81280D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_top_l1.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_top_l1.gbr new file mode 100644 index 0000000000..3cb6833905 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_copper_top_l1.gbr @@ -0,0 +1,19663 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INTop Copper*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.192500*% +%ADD11C,0.350000*% +%ADD12C,0.241500*% +%ADD13C,0.420000*% +%ADD14C,0.320038*% +%ADD15C,0.490000*% +%ADD16C,0.500000*% +%ADD17C,0.315000*% +%ADD18C,1.016000*% +%ADD19C,0.200000*% +%ADD20C,0.700000*% +%ADD21C,0.950000*% +%ADD22C,0.135000*% +%ADD23C,0.520000*% +%ADD24C,0.091000*% +%ADD25C,1.778000*% +%ADD26C,1.700000*% +%ADD27C,2.540000*% +%ADD28R,3.810000X3.810000*% +%ADD29C,0.224000*% +%ADD30R,1.778000X1.778000*% +%ADD31C,0.124459*% +%ADD32C,0.406400*% +%ADD33C,0.756400*% +%ADD34C,0.203200*% +%ADD35C,0.711200*% +%ADD36C,0.279400*% +%ADD37C,0.228600*% +%ADD38C,0.956400*% +%ADD39C,0.812800*% + +G36* +X461581Y97549D02* +X461581Y97549D01* +X461668Y97552D01* +X461721Y97569D01* +X461776Y97577D01* +X461855Y97612D01* +X461939Y97639D01* +X461978Y97667D01* +X462035Y97693D01* +X462148Y97789D01* +X462212Y97834D01* +X473686Y109309D01* +X475927Y110237D01* +X488247Y110237D01* +X488333Y110249D01* +X488421Y110252D01* +X488473Y110269D01* +X488528Y110277D01* +X488608Y110312D01* +X488691Y110339D01* +X488730Y110367D01* +X488788Y110393D01* +X488901Y110489D01* +X488964Y110534D01* +X489603Y111173D01* +X497894Y111173D01* +X497923Y111177D01* +X497952Y111174D01* +X498063Y111197D01* +X498176Y111213D01* +X498202Y111225D01* +X498231Y111230D01* +X498332Y111283D01* +X498435Y111329D01* +X498457Y111348D01* +X498484Y111361D01* +X498566Y111439D01* +X498652Y111512D01* +X498668Y111537D01* +X498690Y111557D01* +X498747Y111655D01* +X498810Y111749D01* +X498819Y111777D01* +X498833Y111802D01* +X498861Y111912D01* +X498895Y112020D01* +X498896Y112050D01* +X498903Y112078D01* +X498900Y112191D01* +X498903Y112304D01* +X498895Y112333D01* +X498894Y112362D01* +X498860Y112470D01* +X498831Y112579D01* +X498816Y112605D01* +X498807Y112633D01* +X498761Y112696D01* +X498686Y112824D01* +X498640Y112867D01* +X498612Y112906D01* +X496036Y115482D01* +X495966Y115534D01* +X495902Y115594D01* +X495853Y115620D01* +X495809Y115653D01* +X495727Y115684D01* +X495649Y115724D01* +X495602Y115732D01* +X495543Y115754D01* +X495395Y115766D01* +X495318Y115779D01* +X493895Y115779D01* +X493865Y115775D01* +X493834Y115777D01* +X493757Y115760D01* +X493614Y115739D01* +X493555Y115713D01* +X493507Y115702D01* +X491960Y115061D01* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X493507Y128050D01* +X493537Y128042D01* +X493564Y128028D01* +X493642Y128015D01* +X493782Y127979D01* +X493847Y127981D01* +X493895Y127973D01* +X499477Y127973D01* +X501718Y127045D01* +X516089Y112674D01* +X516968Y110551D01* +X516983Y110525D01* +X516993Y110495D01* +X517039Y110431D01* +X517112Y110306D01* +X517159Y110262D01* +X517188Y110222D01* +X518453Y108957D01* +X518453Y99932D01* +X518457Y99903D01* +X518454Y99874D01* +X518477Y99763D01* +X518493Y99651D01* +X518505Y99624D01* +X518510Y99595D01* +X518562Y99495D01* +X518609Y99391D01* +X518628Y99369D01* +X518641Y99343D01* +X518719Y99261D01* +X518792Y99174D01* +X518817Y99158D01* +X518837Y99137D01* +X518935Y99079D01* +X519029Y99017D01* +X519057Y99008D01* +X519082Y98993D01* +X519192Y98965D01* +X519300Y98931D01* +X519330Y98930D01* +X519358Y98923D01* +X519471Y98926D01* +X519584Y98924D01* +X519613Y98931D01* +X519642Y98932D01* +X519750Y98967D01* +X519859Y98995D01* +X519885Y99010D01* +X519913Y99019D01* +X519976Y99065D01* +X520104Y99141D01* +X520147Y99186D01* +X520186Y99214D01* +X523958Y102986D01* +X526636Y105665D01* +X533175Y105665D01* +X533261Y105677D01* +X533349Y105680D01* +X533401Y105697D01* +X533456Y105705D01* +X533536Y105740D01* +X533619Y105767D01* +X533658Y105795D01* +X533716Y105821D01* +X533829Y105917D01* +X533892Y105962D01* +X535903Y107973D01* +X537640Y107973D01* +X537698Y107981D01* +X537756Y107979D01* +X537838Y108001D01* +X537922Y108013D01* +X537975Y108036D01* +X538031Y108051D01* +X538104Y108094D01* +X538181Y108129D01* +X538226Y108167D01* +X538276Y108196D01* +X538334Y108258D01* +X538398Y108312D01* +X538430Y108361D01* +X538470Y108404D01* +X538509Y108479D01* +X538556Y108549D01* +X538573Y108605D01* +X538600Y108657D01* +X538611Y108725D01* +X538641Y108820D01* +X538644Y108920D01* +X538655Y108988D01* +X538655Y112774D01* +X543390Y117508D01* +X543442Y117578D01* +X543502Y117642D01* +X543528Y117691D01* +X543561Y117736D01* +X543592Y117817D01* +X543632Y117895D01* +X543640Y117943D01* +X543662Y118001D01* +X543674Y118149D01* +X543687Y118226D01* +X543687Y120118D01* +X544108Y120539D01* +X544160Y120609D01* +X544220Y120673D01* +X544246Y120722D01* +X544279Y120766D01* +X544310Y120848D01* +X544350Y120926D01* +X544358Y120973D01* +X544380Y121032D01* +X544381Y121039D01* +X551310Y127969D01* +X682960Y127969D01* +X702426Y108502D01* +X702496Y108450D01* +X702560Y108390D01* +X702609Y108364D01* +X702654Y108331D01* +X702735Y108300D01* +X702813Y108260D01* +X702861Y108252D01* +X702919Y108230D01* +X703067Y108218D01* +X703144Y108205D01* +X794323Y108205D01* +X801625Y100903D01* +X801625Y58101D01* +X796101Y52577D01* +X784432Y52577D01* +X784420Y52586D01* +X784356Y52646D01* +X784307Y52672D01* +X784262Y52705D01* +X784181Y52736D01* +X784103Y52776D01* +X784055Y52784D01* +X783997Y52806D01* +X783849Y52818D01* +X783772Y52831D01* +X778286Y52831D01* +X776731Y54386D01* +X776731Y58044D01* +X776727Y58073D01* +X776730Y58102D01* +X776707Y58213D01* +X776691Y58326D01* +X776679Y58352D01* +X776674Y58381D01* +X776622Y58482D01* +X776575Y58585D01* +X776556Y58607D01* +X776543Y58633D01* +X776465Y58716D01* +X776392Y58802D01* +X776367Y58818D01* +X776347Y58840D01* +X776249Y58897D01* +X776155Y58960D01* +X776127Y58968D01* +X776102Y58983D01* +X775992Y59011D01* +X775884Y59045D01* +X775854Y59046D01* +X775826Y59053D01* +X775713Y59050D01* +X775600Y59053D01* +X775571Y59045D01* +X775542Y59044D01* +X775434Y59009D01* +X775325Y58981D01* +X775299Y58966D01* +X775271Y58957D01* +X775208Y58911D01* +X775080Y58836D01* +X775037Y58790D01* +X774998Y58762D01* +X761658Y45422D01* +X761640Y45398D01* +X761618Y45379D01* +X761555Y45285D01* +X761487Y45195D01* +X761477Y45167D01* +X761460Y45143D01* +X761426Y45035D01* +X761386Y44929D01* +X761383Y44900D01* +X761375Y44872D01* +X761372Y44758D01* +X761362Y44646D01* +X761368Y44617D01* +X761367Y44588D01* +X761396Y44478D01* +X761418Y44367D01* +X761432Y44341D01* +X761439Y44313D01* +X761497Y44215D01* +X761549Y44115D01* +X761569Y44093D01* +X761584Y44068D01* +X761667Y43991D01* +X761745Y43909D01* +X761770Y43894D01* +X761792Y43874D01* +X761893Y43822D01* +X761990Y43765D01* +X762019Y43758D01* +X762045Y43744D01* +X762122Y43731D01* +X762266Y43695D01* +X762328Y43697D01* +X762376Y43689D01* +X850060Y43689D01* +X850174Y43705D01* +X850288Y43715D01* +X850314Y43725D01* +X850342Y43729D01* +X850447Y43776D01* +X850554Y43817D01* +X850576Y43833D01* +X850601Y43845D01* +X850689Y43919D01* +X850780Y43988D01* +X850797Y44011D01* +X850818Y44028D01* +X850882Y44124D01* +X850951Y44216D01* +X850960Y44242D01* +X850976Y44265D01* +X851010Y44375D01* +X851051Y44482D01* +X851053Y44510D01* +X851062Y44536D01* +X851064Y44651D01* +X851074Y44765D01* +X851068Y44790D01* +X851069Y44820D01* +X851002Y45077D01* +X850998Y45093D01* +X850165Y47103D01* +X850165Y49417D01* +X850998Y51427D01* +X851027Y51539D01* +X851062Y51648D01* +X851062Y51676D01* +X851069Y51703D01* +X851066Y51817D01* +X851069Y51932D01* +X851062Y51959D01* +X851061Y51987D01* +X851026Y52096D01* +X850997Y52207D01* +X850983Y52231D01* +X850974Y52258D01* +X850910Y52353D01* +X850852Y52452D01* +X850832Y52471D01* +X850816Y52494D01* +X850728Y52568D01* +X850644Y52646D01* +X850620Y52659D01* +X850599Y52677D01* +X850494Y52723D01* +X850391Y52776D01* +X850367Y52780D01* +X850339Y52792D01* +X850075Y52829D01* +X850060Y52831D01* +X836706Y52831D01* +X835151Y54386D01* +X835151Y58897D01* +X835480Y59226D01* +X835515Y59273D01* +X835557Y59313D01* +X835600Y59386D01* +X835651Y59453D01* +X835672Y59508D01* +X835701Y59558D01* +X835722Y59640D01* +X835752Y59719D01* +X835757Y59777D01* +X835771Y59834D01* +X835769Y59918D01* +X835776Y60002D01* +X835764Y60060D01* +X835762Y60118D01* +X835736Y60198D01* +X835720Y60281D01* +X835693Y60333D01* +X835675Y60389D01* +X835635Y60445D01* +X835589Y60533D01* +X835520Y60606D01* +X835480Y60662D01* +X835151Y60990D01* +X835151Y65501D01* +X835353Y65703D01* +X835388Y65750D01* +X835430Y65790D01* +X835473Y65863D01* +X835524Y65930D01* +X835545Y65985D01* +X835574Y66035D01* +X835595Y66117D01* +X835625Y66196D01* +X835630Y66254D01* +X835644Y66311D01* +X835642Y66395D01* +X835649Y66479D01* +X835637Y66537D01* +X835635Y66595D01* +X835609Y66675D01* +X835593Y66758D01* +X835566Y66810D01* +X835548Y66866D01* +X835508Y66922D01* +X835462Y67010D01* +X835393Y67083D01* +X835353Y67139D01* +X835151Y67340D01* +X835151Y71851D01* +X835480Y72180D01* +X835515Y72227D01* +X835557Y72267D01* +X835600Y72340D01* +X835651Y72407D01* +X835672Y72462D01* +X835701Y72512D01* +X835722Y72594D01* +X835752Y72673D01* +X835757Y72731D01* +X835771Y72788D01* +X835769Y72872D01* +X835776Y72956D01* +X835764Y73014D01* +X835762Y73072D01* +X835736Y73152D01* +X835720Y73235D01* +X835693Y73287D01* +X835675Y73343D01* +X835635Y73399D01* +X835589Y73487D01* +X835520Y73560D01* +X835480Y73616D01* +X835151Y73944D01* +X835151Y78455D01* +X835480Y78784D01* +X835515Y78831D01* +X835557Y78871D01* +X835600Y78944D01* +X835651Y79011D01* +X835672Y79066D01* +X835701Y79116D01* +X835722Y79198D01* +X835752Y79277D01* +X835757Y79335D01* +X835771Y79392D01* +X835769Y79476D01* +X835776Y79560D01* +X835764Y79618D01* +X835762Y79676D01* +X835736Y79756D01* +X835720Y79839D01* +X835693Y79891D01* +X835675Y79947D01* +X835635Y80003D01* +X835589Y80091D01* +X835520Y80164D01* +X835480Y80220D01* +X835151Y80548D01* +X835151Y85059D01* +X835353Y85261D01* +X835388Y85308D01* +X835430Y85348D01* +X835473Y85421D01* +X835524Y85488D01* +X835545Y85543D01* +X835574Y85593D01* +X835595Y85675D01* +X835625Y85754D01* +X835630Y85812D01* +X835644Y85869D01* +X835642Y85953D01* +X835649Y86037D01* +X835637Y86095D01* +X835635Y86153D01* +X835609Y86233D01* +X835593Y86316D01* +X835566Y86368D01* +X835548Y86424D01* +X835508Y86480D01* +X835462Y86568D01* +X835421Y86611D01* +X835408Y86634D01* +X835378Y86661D01* +X835353Y86697D01* +X835151Y86898D01* +X835151Y91410D01* +X836706Y92965D01* +X852394Y92965D01* +X853949Y91410D01* +X853949Y86868D01* +X853957Y86810D01* +X853955Y86752D01* +X853977Y86670D01* +X853989Y86586D01* +X854012Y86533D01* +X854027Y86477D01* +X854070Y86404D01* +X854105Y86327D01* +X854143Y86282D01* +X854172Y86232D01* +X854234Y86174D01* +X854288Y86110D01* +X854337Y86078D01* +X854380Y86038D01* +X854455Y85999D01* +X854525Y85952D01* +X854581Y85935D01* +X854633Y85908D01* +X854701Y85897D01* +X854796Y85867D01* +X854896Y85864D01* +X854964Y85853D01* +X858361Y85853D01* +X858447Y85865D01* +X858535Y85868D01* +X858587Y85885D01* +X858642Y85893D01* +X858722Y85928D01* +X858805Y85955D01* +X858844Y85983D01* +X858902Y86009D01* +X859015Y86105D01* +X859079Y86150D01* +X903434Y130505D01* +X903486Y130575D01* +X903546Y130639D01* +X903572Y130689D01* +X903605Y130733D01* +X903636Y130814D01* +X903676Y130892D01* +X903684Y130940D01* +X903706Y130998D01* +X903718Y131146D01* +X903731Y131223D01* +X903731Y136645D01* +X903719Y136732D01* +X903716Y136819D01* +X903699Y136872D01* +X903691Y136926D01* +X903656Y137006D01* +X903629Y137089D01* +X903601Y137129D01* +X903575Y137186D01* +X903479Y137299D01* +X903434Y137363D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X922774Y149709D01* +X924409Y148074D01* +X925295Y145937D01* +X925295Y143623D01* +X924450Y141584D01* +X924428Y141500D01* +X924398Y141420D01* +X924393Y141363D01* +X924379Y141308D01* +X924381Y141222D01* +X924374Y141137D01* +X924385Y141081D01* +X924387Y141024D01* +X924413Y140942D01* +X924430Y140858D01* +X924456Y140808D01* +X924474Y140753D01* +X924522Y140682D01* +X924561Y140606D01* +X924600Y140565D01* +X924632Y140517D01* +X924698Y140462D01* +X924757Y140400D01* +X924806Y140371D01* +X924850Y140334D01* +X924928Y140299D01* +X925002Y140256D01* +X925057Y140242D01* +X925109Y140219D01* +X925195Y140207D01* +X925278Y140186D01* +X925334Y140188D01* +X925391Y140180D01* +X925476Y140192D01* +X925562Y140195D01* +X925616Y140212D01* +X925672Y140221D01* +X925751Y140256D01* +X925832Y140282D01* +X925873Y140311D01* +X925931Y140338D01* +X926042Y140432D01* +X926106Y140477D01* +X1016465Y230837D01* +X1023225Y230837D01* +X1023311Y230849D01* +X1023399Y230852D01* +X1023451Y230869D01* +X1023506Y230877D01* +X1023578Y230909D01* +X1039872Y230909D01* +X1039930Y230917D01* +X1039988Y230915D01* +X1040070Y230937D01* +X1040154Y230949D01* +X1040207Y230972D01* +X1040263Y230987D01* +X1040336Y231030D01* +X1040413Y231065D01* +X1040458Y231103D01* +X1040508Y231132D01* +X1040566Y231194D01* +X1040630Y231248D01* +X1040662Y231297D01* +X1040702Y231340D01* +X1040741Y231415D01* +X1040788Y231485D01* +X1040805Y231541D01* +X1040832Y231593D01* +X1040843Y231661D01* +X1040873Y231756D01* +X1040876Y231856D01* +X1040887Y231924D01* +X1040887Y232279D01* +X1042100Y233492D01* +X1042135Y233539D01* +X1042178Y233579D01* +X1042220Y233652D01* +X1042271Y233719D01* +X1042292Y233774D01* +X1042321Y233824D01* +X1042342Y233906D01* +X1042372Y233985D01* +X1042377Y234043D01* +X1042391Y234100D01* +X1042389Y234184D01* +X1042396Y234268D01* +X1042384Y234326D01* +X1042382Y234384D01* +X1042356Y234464D01* +X1042340Y234547D01* +X1042313Y234599D01* +X1042295Y234655D01* +X1042255Y234711D01* +X1042209Y234799D01* +X1042173Y234837D01* +X1042159Y234860D01* +X1042126Y234891D01* +X1042100Y234928D01* +X1040887Y236141D01* +X1040887Y236496D01* +X1040879Y236554D01* +X1040881Y236612D01* +X1040859Y236694D01* +X1040847Y236778D01* +X1040824Y236831D01* +X1040809Y236887D01* +X1040766Y236960D01* +X1040731Y237037D01* +X1040693Y237082D01* +X1040664Y237132D01* +X1040602Y237190D01* +X1040548Y237254D01* +X1040499Y237286D01* +X1040456Y237326D01* +X1040381Y237365D01* +X1040311Y237412D01* +X1040255Y237429D01* +X1040203Y237456D01* +X1040135Y237467D01* +X1040040Y237497D01* +X1039940Y237500D01* +X1039872Y237511D01* +X1003576Y237511D01* +X1003489Y237499D01* +X1003402Y237496D01* +X1003349Y237479D01* +X1003294Y237471D01* +X1003215Y237436D01* +X1003131Y237409D01* +X1003092Y237381D01* +X1003035Y237355D01* +X1002922Y237259D01* +X1002858Y237214D01* +X929445Y163801D01* +X915388Y163801D01* +X913149Y166040D01* +X913081Y166092D01* +X913018Y166151D01* +X912967Y166177D01* +X912922Y166211D01* +X912842Y166242D01* +X912765Y166281D01* +X912710Y166292D01* +X912656Y166312D01* +X912571Y166319D01* +X912486Y166336D01* +X912430Y166331D01* +X912373Y166336D01* +X912289Y166319D01* +X912203Y166312D01* +X912150Y166291D01* +X912094Y166280D01* +X912018Y166240D01* +X911938Y166210D01* +X911892Y166175D01* +X911842Y166149D01* +X911780Y166090D01* +X911711Y166038D01* +X911677Y165992D01* +X911636Y165953D01* +X911592Y165879D01* +X911541Y165810D01* +X911521Y165757D01* +X911492Y165708D01* +X911471Y165625D01* +X911441Y165544D01* +X911436Y165488D01* +X911422Y165432D01* +X911425Y165346D01* +X911418Y165261D01* +X911429Y165213D01* +X911431Y165148D01* +X911476Y165010D01* +X911493Y164934D01* +X911575Y164736D01* +X911575Y162423D01* +X910690Y160286D01* +X909054Y158650D01* +X906917Y157765D01* +X904604Y157765D01* +X902467Y158650D01* +X900831Y160286D01* +X899946Y162423D01* +X899946Y164938D01* +X899938Y164994D01* +X899935Y165114D01* +X899934Y165117D01* +X899934Y165120D01* +X899909Y165195D01* +X899906Y165220D01* +X899890Y165256D01* +X899849Y165385D01* +X899847Y165387D01* +X899846Y165390D01* +X899832Y165410D01* +X899797Y165462D01* +X899790Y165479D01* +X899772Y165499D01* +X899691Y165622D01* +X899666Y165642D01* +X899651Y165663D01* +X880186Y185129D01* +X880162Y185146D01* +X880143Y185169D01* +X880049Y185232D01* +X879959Y185300D01* +X879931Y185310D01* +X879907Y185327D01* +X879799Y185361D01* +X879693Y185401D01* +X879664Y185403D01* +X879636Y185412D01* +X879522Y185415D01* +X879410Y185425D01* +X879381Y185419D01* +X879352Y185420D01* +X879242Y185391D01* +X879131Y185369D01* +X879105Y185355D01* +X879077Y185348D01* +X878979Y185290D01* +X878879Y185238D01* +X878857Y185218D01* +X878832Y185203D01* +X878755Y185120D01* +X878673Y185042D01* +X878658Y185017D01* +X878638Y184995D01* +X878586Y184894D01* +X878529Y184797D01* +X878522Y184768D01* +X878508Y184742D01* +X878495Y184665D01* +X878459Y184521D01* +X878461Y184459D01* +X878453Y184411D01* +X878453Y180379D01* +X878460Y180327D01* +X878459Y180300D01* +X878465Y180277D01* +X878468Y180205D01* +X878485Y180153D01* +X878493Y180098D01* +X878528Y180018D01* +X878555Y179935D01* +X878583Y179896D01* +X878609Y179838D01* +X878705Y179725D01* +X878750Y179661D01* +X887199Y171212D01* +X887269Y171160D01* +X887333Y171100D01* +X887383Y171074D01* +X887427Y171041D01* +X887508Y171010D01* +X887586Y170970D01* +X887634Y170962D01* +X887692Y170940D01* +X887840Y170928D01* +X887917Y170915D01* +X890157Y170915D01* +X892294Y170029D01* +X893929Y168394D01* +X894815Y166257D01* +X894815Y163943D01* +X893929Y161806D01* +X892294Y160171D01* +X890157Y159285D01* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883286Y163700D01* +X883242Y163774D01* +X883207Y163853D01* +X883170Y163896D01* +X883141Y163945D01* +X883079Y164004D01* +X883023Y164070D01* +X882976Y164101D01* +X882935Y164140D01* +X882858Y164180D01* +X882787Y164227D01* +X882733Y164245D01* +X882682Y164271D01* +X882598Y164287D01* +X882516Y164313D01* +X882459Y164315D01* +X882403Y164326D01* +X882318Y164318D01* +X882232Y164320D01* +X882177Y164306D01* +X882120Y164301D01* +X882040Y164270D01* +X881957Y164249D01* +X881908Y164220D01* +X881855Y164199D01* +X881786Y164147D01* +X881712Y164103D01* +X881673Y164062D01* +X881628Y164027D01* +X881576Y163959D01* +X881518Y163896D01* +X881492Y163845D01* +X881458Y163800D01* +X881427Y163719D01* +X881388Y163643D01* +X881380Y163594D01* +X881357Y163534D01* +X881346Y163389D01* +X881333Y163312D01* +X881333Y162242D01* +X879578Y160487D01* +X873022Y160487D01* +X871585Y161924D01* +X871515Y161976D01* +X871451Y162036D01* +X871402Y162062D01* +X871358Y162095D01* +X871276Y162126D01* +X871198Y162166D01* +X871151Y162174D01* +X871092Y162196D01* +X870945Y162208D01* +X870867Y162221D01* +X869033Y162221D01* +X868946Y162209D01* +X868859Y162206D01* +X868806Y162189D01* +X868751Y162181D01* +X868671Y162146D01* +X868588Y162119D01* +X868549Y162091D01* +X868492Y162065D01* +X868379Y161969D01* +X868315Y161924D01* +X867129Y160738D01* +X867094Y160691D01* +X867051Y160651D01* +X867009Y160578D01* +X866958Y160511D01* +X866937Y160456D01* +X866908Y160406D01* +X866887Y160324D01* +X866857Y160245D01* +X866852Y160187D01* +X866837Y160130D01* +X866840Y160046D01* +X866833Y159962D01* +X866845Y159904D01* +X866846Y159846D01* +X866872Y159766D01* +X866889Y159683D01* +X866916Y159631D01* +X866934Y159575D01* +X866974Y159519D01* +X867020Y159431D01* +X867089Y159358D01* +X867129Y159302D01* +X868633Y157798D01* +X868633Y151742D01* +X866878Y149987D01* +X860322Y149987D01* +X858885Y151424D01* +X858815Y151476D01* +X858752Y151536D01* +X858702Y151562D01* +X858658Y151595D01* +X858576Y151626D01* +X858498Y151666D01* +X858451Y151674D01* +X858392Y151696D01* +X858245Y151708D01* +X858167Y151721D01* +X855801Y151721D01* +X855772Y151717D01* +X855743Y151720D01* +X855632Y151697D01* +X855520Y151681D01* +X855493Y151669D01* +X855464Y151664D01* +X855364Y151612D01* +X855260Y151565D01* +X855238Y151546D01* +X855212Y151533D01* +X855130Y151455D01* +X855043Y151382D01* +X855027Y151357D01* +X855006Y151337D01* +X854949Y151239D01* +X854886Y151145D01* +X854877Y151117D01* +X854862Y151092D01* +X854834Y150982D01* +X854800Y150874D01* +X854799Y150844D01* +X854792Y150816D01* +X854796Y150703D01* +X854793Y150590D01* +X854800Y150561D01* +X854801Y150532D01* +X854836Y150424D01* +X854865Y150315D01* +X854880Y150289D01* +X854889Y150261D01* +X854934Y150198D01* +X855010Y150070D01* +X855055Y150027D01* +X855083Y149988D01* +X858721Y146350D01* +X858791Y146298D01* +X858855Y146238D01* +X858905Y146212D01* +X858949Y146179D01* +X859030Y146148D01* +X859108Y146108D01* +X859156Y146100D01* +X859214Y146078D01* +X859362Y146066D01* +X859439Y146053D01* +X875827Y146053D01* +X878453Y143427D01* +X878453Y130613D01* +X875827Y127987D01* +X856013Y127987D01* +X853387Y130613D01* +X853387Y142641D01* +X853375Y142727D01* +X853372Y142815D01* +X853355Y142867D01* +X853347Y142922D01* +X853312Y143002D01* +X853285Y143085D01* +X853257Y143124D01* +X853231Y143182D01* +X853135Y143295D01* +X853090Y143359D01* +X850161Y146288D01* +X850091Y146340D01* +X850027Y146400D01* +X849977Y146426D01* +X849933Y146459D01* +X849852Y146490D01* +X849774Y146530D01* +X849726Y146538D01* +X849668Y146560D01* +X849520Y146572D01* +X849443Y146585D01* +X847203Y146585D01* +X845066Y147471D01* +X843431Y149106D01* +X842545Y151243D01* +X842545Y153557D01* +X843431Y155694D01* +X845066Y157329D01* +X847203Y158215D01* +X849517Y158215D01* +X850286Y157896D01* +X850316Y157888D01* +X850344Y157874D01* +X850421Y157861D01* +X850561Y157825D01* +X850626Y157827D01* +X850675Y157819D01* +X858167Y157819D01* +X858254Y157831D01* +X858341Y157834D01* +X858394Y157851D01* +X858449Y157859D01* +X858529Y157894D01* +X858612Y157921D01* +X858651Y157949D01* +X858708Y157975D01* +X858822Y158071D01* +X858885Y158116D01* +X860071Y159302D01* +X860106Y159349D01* +X860149Y159389D01* +X860192Y159462D01* +X860242Y159529D01* +X860263Y159584D01* +X860292Y159634D01* +X860313Y159716D01* +X860343Y159795D01* +X860348Y159853D01* +X860363Y159910D01* +X860360Y159994D01* +X860367Y160078D01* +X860355Y160136D01* +X860354Y160194D01* +X860328Y160274D01* +X860311Y160357D01* +X860284Y160409D01* +X860266Y160465D01* +X860226Y160521D01* +X860180Y160609D01* +X860111Y160682D01* +X860071Y160738D01* +X858567Y162242D01* +X858567Y168298D01* +X860254Y169985D01* +X860306Y170055D01* +X860366Y170118D01* +X860392Y170168D01* +X860425Y170212D01* +X860456Y170294D01* +X860496Y170372D01* +X860504Y170419D01* +X860526Y170478D01* +X860538Y170625D01* +X860551Y170703D01* +X860551Y172972D01* +X860543Y173030D01* +X860545Y173088D01* +X860523Y173170D01* +X860511Y173254D01* +X860488Y173307D01* +X860473Y173363D01* +X860430Y173436D01* +X860395Y173513D01* +X860357Y173558D01* +X860328Y173608D01* +X860266Y173666D01* +X860212Y173730D01* +X860163Y173762D01* +X860120Y173802D01* +X860045Y173841D01* +X859975Y173888D01* +X859919Y173905D01* +X859867Y173932D01* +X859799Y173943D01* +X859704Y173973D01* +X859604Y173976D01* +X859536Y173987D01* +X856013Y173987D01* +X853387Y176613D01* +X853387Y178956D01* +X853379Y179014D01* +X853381Y179072D01* +X853359Y179154D01* +X853347Y179238D01* +X853324Y179291D01* +X853309Y179347D01* +X853266Y179420D01* +X853231Y179497D01* +X853193Y179542D01* +X853164Y179592D01* +X853102Y179650D01* +X853048Y179714D01* +X852999Y179746D01* +X852956Y179786D01* +X852881Y179825D01* +X852811Y179872D01* +X852755Y179889D01* +X852703Y179916D01* +X852635Y179927D01* +X852540Y179957D01* +X852440Y179960D01* +X852372Y179971D01* +X788468Y179971D01* +X788410Y179963D01* +X788352Y179965D01* +X788270Y179943D01* +X788186Y179931D01* +X788133Y179908D01* +X788077Y179893D01* +X788004Y179850D01* +X787927Y179815D01* +X787882Y179777D01* +X787832Y179748D01* +X787774Y179686D01* +X787710Y179632D01* +X787678Y179583D01* +X787638Y179540D01* +X787599Y179465D01* +X787552Y179395D01* +X787535Y179339D01* +X787508Y179287D01* +X787497Y179219D01* +X787467Y179124D01* +X787464Y179024D01* +X787453Y178956D01* +X787453Y176613D01* +X784827Y173987D01* +X765013Y173987D01* +X762387Y176613D01* +X762387Y189427D01* +X765013Y192053D01* +X784827Y192053D01* +X787453Y189427D01* +X787453Y187084D01* +X787461Y187026D01* +X787459Y186968D01* +X787481Y186886D01* +X787493Y186802D01* +X787516Y186749D01* +X787531Y186693D01* +X787574Y186620D01* +X787609Y186543D01* +X787647Y186498D01* +X787676Y186448D01* +X787738Y186390D01* +X787792Y186326D01* +X787841Y186294D01* +X787884Y186254D01* +X787959Y186215D01* +X788029Y186168D01* +X788085Y186151D01* +X788137Y186124D01* +X788205Y186113D01* +X788300Y186083D01* +X788400Y186080D01* +X788468Y186069D01* +X852372Y186069D01* +X852430Y186077D01* +X852488Y186075D01* +X852570Y186097D01* +X852654Y186109D01* +X852707Y186132D01* +X852763Y186147D01* +X852836Y186190D01* +X852913Y186225D01* +X852958Y186263D01* +X853008Y186292D01* +X853066Y186354D01* +X853130Y186408D01* +X853162Y186457D01* +X853202Y186500D01* +X853241Y186575D01* +X853288Y186645D01* +X853305Y186701D01* +X853332Y186753D01* +X853343Y186821D01* +X853373Y186916D01* +X853376Y187016D01* +X853387Y187084D01* +X853387Y189427D01* +X856013Y192053D01* +X870811Y192053D01* +X870840Y192057D01* +X870869Y192054D01* +X870980Y192077D01* +X871093Y192093D01* +X871119Y192105D01* +X871148Y192110D01* +X871249Y192162D01* +X871352Y192209D01* +X871374Y192228D01* +X871400Y192241D01* +X871482Y192319D01* +X871569Y192392D01* +X871585Y192417D01* +X871606Y192437D01* +X871664Y192535D01* +X871727Y192629D01* +X871735Y192657D01* +X871750Y192682D01* +X871778Y192792D01* +X871812Y192900D01* +X871813Y192930D01* +X871820Y192958D01* +X871817Y193071D01* +X871820Y193184D01* +X871812Y193213D01* +X871811Y193242D01* +X871776Y193350D01* +X871748Y193459D01* +X871733Y193485D01* +X871724Y193513D01* +X871678Y193576D01* +X871603Y193704D01* +X871557Y193747D01* +X871529Y193786D01* +X867973Y197342D01* +X867903Y197394D01* +X867839Y197454D01* +X867790Y197480D01* +X867746Y197513D01* +X867664Y197544D01* +X867586Y197584D01* +X867538Y197592D01* +X867480Y197614D01* +X867332Y197626D01* +X867255Y197639D01* +X698801Y197639D01* +X698714Y197627D01* +X698627Y197624D01* +X698574Y197607D01* +X698519Y197599D01* +X698440Y197564D01* +X698356Y197537D01* +X698317Y197509D01* +X698260Y197483D01* +X698147Y197387D01* +X698083Y197342D01* +X692318Y191577D01* +X692283Y191530D01* +X692241Y191490D01* +X692198Y191417D01* +X692147Y191350D01* +X692127Y191295D01* +X692097Y191245D01* +X692076Y191163D01* +X692046Y191084D01* +X692041Y191026D01* +X692027Y190969D01* +X692030Y190885D01* +X692023Y190801D01* +X692034Y190744D01* +X692036Y190685D01* +X692062Y190605D01* +X692078Y190522D01* +X692105Y190470D01* +X692123Y190415D01* +X692163Y190358D01* +X692209Y190270D01* +X692278Y190198D01* +X692318Y190141D01* +X693033Y189427D01* +X693033Y176613D01* +X690407Y173987D01* +X682244Y173987D01* +X682186Y173979D01* +X682128Y173981D01* +X682046Y173959D01* +X681962Y173947D01* +X681909Y173924D01* +X681853Y173909D01* +X681780Y173866D01* +X681703Y173831D01* +X681658Y173793D01* +X681608Y173764D01* +X681550Y173702D01* +X681486Y173648D01* +X681454Y173599D01* +X681414Y173556D01* +X681375Y173481D01* +X681328Y173411D01* +X681311Y173355D01* +X681284Y173303D01* +X681273Y173235D01* +X681243Y173140D01* +X681240Y173040D01* +X681229Y172972D01* +X681229Y170703D01* +X681241Y170616D01* +X681244Y170529D01* +X681261Y170476D01* +X681269Y170421D01* +X681304Y170341D01* +X681331Y170258D01* +X681359Y170219D01* +X681385Y170162D01* +X681481Y170049D01* +X681526Y169985D01* +X682895Y168616D01* +X682965Y168564D01* +X683029Y168504D01* +X683078Y168478D01* +X683122Y168445D01* +X683204Y168414D01* +X683282Y168374D01* +X683329Y168366D01* +X683388Y168344D01* +X683535Y168332D01* +X683613Y168319D01* +X687987Y168319D01* +X688074Y168331D01* +X688161Y168334D01* +X688214Y168351D01* +X688269Y168359D01* +X688349Y168394D01* +X688432Y168421D01* +X688471Y168449D01* +X688528Y168475D01* +X688641Y168571D01* +X688705Y168616D01* +X690142Y170053D01* +X696698Y170053D01* +X698453Y168298D01* +X698453Y163027D01* +X698457Y162998D01* +X698454Y162969D01* +X698477Y162858D01* +X698493Y162746D01* +X698505Y162719D01* +X698510Y162690D01* +X698563Y162589D01* +X698609Y162486D01* +X698628Y162464D01* +X698641Y162438D01* +X698719Y162356D01* +X698792Y162269D01* +X698817Y162253D01* +X698837Y162232D01* +X698935Y162174D01* +X699029Y162112D01* +X699057Y162103D01* +X699082Y162088D01* +X699192Y162060D01* +X699300Y162026D01* +X699330Y162025D01* +X699358Y162018D01* +X699471Y162021D01* +X699584Y162018D01* +X699613Y162026D01* +X699642Y162027D01* +X699750Y162062D01* +X699859Y162090D01* +X699885Y162105D01* +X699913Y162114D01* +X699977Y162160D01* +X700104Y162236D01* +X700147Y162281D01* +X700186Y162309D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707521Y162918D01* +X707522Y162917D01* +X707523Y162917D01* +X707658Y162882D01* +X707796Y162847D01* +X707797Y162847D01* +X707799Y162847D01* +X707940Y162851D01* +X708080Y162855D01* +X708082Y162855D01* +X708083Y162856D01* +X708216Y162898D01* +X708351Y162942D01* +X708352Y162943D01* +X708354Y162943D01* +X708366Y162952D01* +X708587Y163100D01* +X708607Y163123D01* +X708627Y163138D01* +X708835Y163346D01* +X708904Y163438D01* +X708978Y163526D01* +X708990Y163551D01* +X709006Y163573D01* +X709047Y163681D01* +X709094Y163786D01* +X709098Y163813D01* +X709107Y163839D01* +X709117Y163953D01* +X709133Y164067D01* +X709129Y164095D01* +X709131Y164122D01* +X709108Y164235D01* +X709092Y164349D01* +X709081Y164374D01* +X709075Y164401D01* +X709022Y164503D01* +X708975Y164608D01* +X708957Y164629D01* +X708944Y164653D01* +X708865Y164737D01* +X708791Y164824D01* +X708769Y164837D01* +X708748Y164860D01* +X708519Y164994D01* +X708506Y165002D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716129Y173474D01* +X717015Y171337D01* +X717015Y169023D01* +X716696Y168254D01* +X716688Y168224D01* +X716674Y168196D01* +X716661Y168119D01* +X716625Y167979D01* +X716627Y167914D01* +X716619Y167865D01* +X716619Y165453D01* +X716631Y165366D01* +X716634Y165279D01* +X716651Y165226D01* +X716659Y165171D01* +X716694Y165091D01* +X716721Y165008D01* +X716749Y164969D01* +X716775Y164912D01* +X716871Y164799D01* +X716916Y164735D01* +X718102Y163549D01* +X718149Y163514D01* +X718189Y163471D01* +X718262Y163429D01* +X718329Y163378D01* +X718384Y163357D01* +X718434Y163328D01* +X718516Y163307D01* +X718595Y163277D01* +X718653Y163272D01* +X718710Y163257D01* +X718794Y163260D01* +X718878Y163253D01* +X718936Y163265D01* +X718994Y163266D01* +X719074Y163292D01* +X719157Y163309D01* +X719209Y163336D01* +X719265Y163354D01* +X719321Y163394D01* +X719409Y163440D01* +X719482Y163509D01* +X719538Y163549D01* +X721042Y165053D01* +X727098Y165053D01* +X728853Y163298D01* +X728853Y156742D01* +X727098Y154987D01* +X726884Y154987D01* +X726826Y154979D01* +X726768Y154981D01* +X726686Y154959D01* +X726602Y154947D01* +X726549Y154924D01* +X726493Y154909D01* +X726420Y154866D01* +X726343Y154831D01* +X726298Y154793D01* +X726248Y154764D01* +X726190Y154702D01* +X726126Y154648D01* +X726094Y154599D01* +X726054Y154556D01* +X726015Y154481D01* +X725968Y154411D01* +X725951Y154355D01* +X725924Y154303D01* +X725913Y154235D01* +X725883Y154140D01* +X725880Y154040D01* +X725869Y153972D01* +X725869Y150198D01* +X725877Y150140D01* +X725875Y150082D01* +X725897Y150000D01* +X725909Y149916D01* +X725932Y149863D01* +X725947Y149807D01* +X725990Y149734D01* +X726025Y149657D01* +X726063Y149612D01* +X726092Y149562D01* +X726154Y149504D01* +X726208Y149440D01* +X726257Y149408D01* +X726300Y149368D01* +X726375Y149329D01* +X726445Y149282D01* +X726501Y149265D01* +X726553Y149238D01* +X726621Y149227D01* +X726716Y149197D01* +X726816Y149194D01* +X726884Y149183D01* +X727456Y149183D01* +X729303Y147336D01* +X729303Y140564D01* +X729157Y140418D01* +X729121Y140371D01* +X729079Y140331D01* +X729036Y140258D01* +X728986Y140191D01* +X728965Y140136D01* +X728935Y140086D01* +X728914Y140004D01* +X728884Y139925D01* +X728880Y139867D01* +X728865Y139810D01* +X728868Y139726D01* +X728861Y139642D01* +X728872Y139584D01* +X728874Y139526D01* +X728900Y139446D01* +X728917Y139363D01* +X728944Y139311D01* +X728962Y139255D01* +X729002Y139199D01* +X729048Y139111D01* +X729116Y139038D01* +X729157Y138982D01* +X729303Y138836D01* +X729303Y132064D01* +X727456Y130217D01* +X718184Y130217D01* +X717297Y131104D01* +X717228Y131156D01* +X717164Y131216D01* +X717114Y131242D01* +X717070Y131275D01* +X716988Y131306D01* +X716911Y131346D01* +X716863Y131354D01* +X716805Y131376D01* +X716657Y131388D01* +X716580Y131401D01* +X711553Y131401D01* +X711466Y131389D01* +X711379Y131386D01* +X711326Y131369D01* +X711271Y131361D01* +X711191Y131326D01* +X711108Y131299D01* +X711069Y131271D01* +X711012Y131245D01* +X710899Y131149D01* +X710835Y131104D01* +X709398Y129667D01* +X702842Y129667D01* +X701087Y131422D01* +X701087Y137478D01* +X702591Y138982D01* +X702626Y139029D01* +X702669Y139069D01* +X702711Y139142D01* +X702762Y139209D01* +X702783Y139264D01* +X702812Y139314D01* +X702833Y139396D01* +X702863Y139475D01* +X702868Y139533D01* +X702883Y139590D01* +X702880Y139674D01* +X702887Y139758D01* +X702875Y139816D01* +X702874Y139874D01* +X702848Y139954D01* +X702831Y140037D01* +X702804Y140089D01* +X702786Y140145D01* +X702746Y140201D01* +X702700Y140289D01* +X702631Y140362D01* +X702591Y140418D01* +X701087Y141922D01* +X701087Y147978D01* +X702774Y149665D01* +X702826Y149735D01* +X702886Y149799D01* +X702912Y149848D01* +X702945Y149892D01* +X702976Y149974D01* +X703016Y150052D01* +X703024Y150099D01* +X703046Y150158D01* +X703058Y150305D01* +X703071Y150383D01* +X703071Y151495D01* +X703071Y151496D01* +X703071Y151498D01* +X703052Y151632D01* +X703031Y151776D01* +X703031Y151778D01* +X703031Y151779D01* +X702974Y151905D01* +X702915Y152036D01* +X702914Y152037D01* +X702913Y152038D01* +X702822Y152145D01* +X702732Y152253D01* +X702730Y152254D01* +X702729Y152255D01* +X702716Y152263D01* +X702495Y152410D01* +X702466Y152420D01* +X702445Y152433D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X698424Y159451D01* +X698446Y159534D01* +X698476Y159614D01* +X698481Y159671D01* +X698495Y159726D01* +X698493Y159812D01* +X698500Y159898D01* +X698489Y159954D01* +X698487Y160010D01* +X698461Y160092D01* +X698444Y160177D01* +X698418Y160227D01* +X698400Y160281D01* +X698353Y160352D01* +X698313Y160429D01* +X698274Y160470D01* +X698242Y160517D01* +X698176Y160573D01* +X698117Y160635D01* +X698068Y160664D01* +X698024Y160700D01* +X697946Y160735D01* +X697872Y160779D01* +X697817Y160793D01* +X697765Y160816D01* +X697680Y160828D01* +X697596Y160849D01* +X697539Y160847D01* +X697483Y160855D01* +X697398Y160842D01* +X697312Y160840D01* +X697258Y160822D01* +X697202Y160814D01* +X697123Y160779D01* +X697042Y160752D01* +X697001Y160724D01* +X696943Y160697D01* +X696832Y160603D01* +X696768Y160557D01* +X696698Y160487D01* +X690142Y160487D01* +X688705Y161924D01* +X688635Y161976D01* +X688572Y162036D01* +X688522Y162062D01* +X688478Y162095D01* +X688396Y162126D01* +X688318Y162166D01* +X688271Y162174D01* +X688212Y162196D01* +X688065Y162208D01* +X687987Y162221D01* +X683613Y162221D01* +X683526Y162209D01* +X683439Y162206D01* +X683386Y162189D01* +X683331Y162181D01* +X683251Y162146D01* +X683168Y162119D01* +X683129Y162091D01* +X683072Y162065D01* +X682959Y161969D01* +X682895Y161924D01* +X681709Y160738D01* +X681674Y160691D01* +X681631Y160651D01* +X681589Y160578D01* +X681538Y160511D01* +X681517Y160456D01* +X681488Y160406D01* +X681467Y160324D01* +X681437Y160245D01* +X681432Y160187D01* +X681417Y160130D01* +X681420Y160046D01* +X681413Y159962D01* +X681425Y159904D01* +X681426Y159846D01* +X681452Y159766D01* +X681469Y159683D01* +X681496Y159631D01* +X681514Y159575D01* +X681554Y159519D01* +X681600Y159431D01* +X681669Y159358D01* +X681709Y159302D01* +X683213Y157798D01* +X683213Y151742D01* +X681458Y149987D01* +X674902Y149987D01* +X673827Y151062D01* +X673780Y151097D01* +X673740Y151140D01* +X673667Y151182D01* +X673600Y151233D01* +X673545Y151254D01* +X673495Y151283D01* +X673413Y151304D01* +X673334Y151334D01* +X673276Y151339D01* +X673219Y151353D01* +X673135Y151351D01* +X673051Y151358D01* +X672994Y151346D01* +X672935Y151344D01* +X672855Y151318D01* +X672772Y151302D01* +X672720Y151275D01* +X672665Y151257D01* +X672609Y151217D01* +X672520Y151171D01* +X672447Y151102D01* +X672391Y151062D01* +X671314Y149985D01* +X669177Y149099D01* +X666863Y149099D01* +X664726Y149985D01* +X663091Y151620D01* +X662205Y153757D01* +X662205Y156071D01* +X663091Y158208D01* +X664726Y159843D01* +X666863Y160729D01* +X669177Y160729D01* +X671314Y159843D01* +X672535Y158622D01* +X672582Y158587D01* +X672622Y158544D01* +X672695Y158502D01* +X672763Y158451D01* +X672817Y158430D01* +X672868Y158401D01* +X672949Y158380D01* +X673028Y158350D01* +X673086Y158345D01* +X673143Y158331D01* +X673227Y158333D01* +X673311Y158326D01* +X673369Y158338D01* +X673427Y158340D01* +X673508Y158366D01* +X673590Y158382D01* +X673642Y158409D01* +X673698Y158427D01* +X673754Y158467D01* +X673843Y158513D01* +X673915Y158582D01* +X673971Y158622D01* +X674651Y159302D01* +X674686Y159349D01* +X674729Y159389D01* +X674771Y159462D01* +X674822Y159529D01* +X674843Y159584D01* +X674872Y159634D01* +X674893Y159716D01* +X674923Y159795D01* +X674928Y159853D01* +X674943Y159910D01* +X674940Y159994D01* +X674947Y160078D01* +X674935Y160136D01* +X674934Y160194D01* +X674908Y160274D01* +X674891Y160357D01* +X674864Y160409D01* +X674846Y160465D01* +X674806Y160521D01* +X674760Y160609D01* +X674691Y160682D01* +X674651Y160738D01* +X673147Y162242D01* +X673147Y168298D01* +X674834Y169985D01* +X674886Y170055D01* +X674946Y170119D01* +X674972Y170168D01* +X675005Y170212D01* +X675036Y170294D01* +X675076Y170372D01* +X675084Y170419D01* +X675106Y170478D01* +X675118Y170625D01* +X675131Y170703D01* +X675131Y172972D01* +X675123Y173030D01* +X675125Y173088D01* +X675103Y173170D01* +X675091Y173254D01* +X675068Y173307D01* +X675053Y173363D01* +X675010Y173436D01* +X674975Y173513D01* +X674937Y173558D01* +X674908Y173608D01* +X674846Y173666D01* +X674792Y173730D01* +X674743Y173762D01* +X674700Y173802D01* +X674625Y173841D01* +X674555Y173888D01* +X674499Y173905D01* +X674447Y173932D01* +X674379Y173943D01* +X674284Y173973D01* +X674184Y173976D01* +X674116Y173987D01* +X670593Y173987D01* +X667967Y176613D01* +X667967Y178956D01* +X667959Y179014D01* +X667961Y179072D01* +X667939Y179154D01* +X667927Y179238D01* +X667904Y179291D01* +X667889Y179347D01* +X667846Y179420D01* +X667811Y179497D01* +X667773Y179542D01* +X667744Y179592D01* +X667682Y179650D01* +X667628Y179714D01* +X667579Y179746D01* +X667536Y179786D01* +X667461Y179825D01* +X667391Y179872D01* +X667335Y179889D01* +X667283Y179916D01* +X667215Y179927D01* +X667120Y179957D01* +X667020Y179960D01* +X666952Y179971D01* +X603048Y179971D01* +X602990Y179963D01* +X602932Y179965D01* +X602850Y179943D01* +X602766Y179931D01* +X602713Y179908D01* +X602657Y179893D01* +X602584Y179850D01* +X602507Y179815D01* +X602462Y179777D01* +X602412Y179748D01* +X602354Y179686D01* +X602290Y179632D01* +X602258Y179583D01* +X602218Y179540D01* +X602179Y179465D01* +X602132Y179395D01* +X602115Y179339D01* +X602088Y179287D01* +X602077Y179219D01* +X602047Y179124D01* +X602044Y179024D01* +X602033Y178956D01* +X602033Y176613D01* +X599407Y173987D01* +X579593Y173987D01* +X578822Y174759D01* +X578798Y174776D01* +X578779Y174799D01* +X578685Y174861D01* +X578595Y174929D01* +X578567Y174940D01* +X578543Y174956D01* +X578435Y174990D01* +X578329Y175031D01* +X578300Y175033D01* +X578272Y175042D01* +X578158Y175045D01* +X578046Y175054D01* +X578017Y175049D01* +X577988Y175049D01* +X577878Y175021D01* +X577767Y174998D01* +X577741Y174985D01* +X577713Y174977D01* +X577615Y174920D01* +X577515Y174867D01* +X577493Y174847D01* +X577468Y174832D01* +X577391Y174750D01* +X577309Y174672D01* +X577294Y174646D01* +X577274Y174625D01* +X577222Y174524D01* +X577165Y174426D01* +X577158Y174398D01* +X577144Y174372D01* +X577131Y174294D01* +X577095Y174151D01* +X577097Y174088D01* +X577089Y174041D01* +X577089Y161127D01* +X575006Y159044D01* +X575005Y159044D01* +X571670Y155709D01* +X571618Y155639D01* +X571558Y155575D01* +X571532Y155525D01* +X571499Y155481D01* +X571468Y155400D01* +X571428Y155322D01* +X571420Y155274D01* +X571398Y155216D01* +X571386Y155068D01* +X571373Y154991D01* +X571373Y151662D01* +X569618Y149907D01* +X563562Y149907D01* +X562058Y151411D01* +X562011Y151446D01* +X561971Y151489D01* +X561898Y151531D01* +X561831Y151582D01* +X561776Y151603D01* +X561726Y151632D01* +X561644Y151653D01* +X561565Y151683D01* +X561507Y151688D01* +X561450Y151703D01* +X561366Y151700D01* +X561282Y151707D01* +X561224Y151695D01* +X561166Y151694D01* +X561086Y151668D01* +X561003Y151651D01* +X560951Y151624D01* +X560895Y151606D01* +X560839Y151566D01* +X560751Y151520D01* +X560678Y151451D01* +X560622Y151411D01* +X559118Y149907D01* +X553062Y149907D01* +X551205Y151764D01* +X551135Y151816D01* +X551071Y151876D01* +X551022Y151902D01* +X550978Y151935D01* +X550896Y151966D01* +X550818Y152006D01* +X550771Y152014D01* +X550712Y152036D01* +X550565Y152048D01* +X550487Y152061D01* +X548993Y152061D01* +X548906Y152049D01* +X548819Y152046D01* +X548766Y152029D01* +X548711Y152021D01* +X548631Y151986D01* +X548548Y151959D01* +X548509Y151931D01* +X548452Y151905D01* +X548339Y151809D01* +X548275Y151764D01* +X547089Y150578D01* +X547054Y150531D01* +X547011Y150491D01* +X546969Y150418D01* +X546918Y150351D01* +X546897Y150296D01* +X546868Y150246D01* +X546847Y150164D01* +X546817Y150085D01* +X546812Y150027D01* +X546797Y149970D01* +X546800Y149886D01* +X546793Y149802D01* +X546805Y149744D01* +X546806Y149686D01* +X546832Y149606D01* +X546849Y149523D01* +X546876Y149471D01* +X546894Y149415D01* +X546934Y149359D01* +X546980Y149271D01* +X547049Y149198D01* +X547089Y149142D01* +X548593Y147638D01* +X548593Y141582D01* +X547425Y140414D01* +X547390Y140367D01* +X547347Y140327D01* +X547305Y140254D01* +X547254Y140187D01* +X547233Y140132D01* +X547204Y140082D01* +X547183Y140000D01* +X547153Y139921D01* +X547148Y139863D01* +X547134Y139806D01* +X547136Y139722D01* +X547129Y139638D01* +X547141Y139581D01* +X547143Y139522D01* +X547169Y139442D01* +X547185Y139359D01* +X547212Y139307D01* +X547230Y139252D01* +X547270Y139195D01* +X547316Y139107D01* +X547385Y139035D01* +X547425Y138978D01* +X548489Y137914D01* +X549375Y135777D01* +X549375Y133463D01* +X548489Y131326D01* +X546854Y129691D01* +X544717Y128805D01* +X542403Y128805D01* +X540266Y129691D01* +X538631Y131326D01* +X538186Y132400D01* +X538142Y132474D01* +X538107Y132552D01* +X538070Y132595D01* +X538041Y132644D01* +X537979Y132703D01* +X537923Y132769D01* +X537876Y132800D01* +X537835Y132840D01* +X537758Y132879D01* +X537687Y132927D01* +X537633Y132944D01* +X537582Y132970D01* +X537498Y132986D01* +X537416Y133012D01* +X537359Y133014D01* +X537303Y133025D01* +X537218Y133017D01* +X537132Y133020D01* +X537077Y133005D01* +X537020Y133000D01* +X536939Y132969D01* +X536857Y132948D01* +X536808Y132919D01* +X536755Y132898D01* +X536686Y132846D01* +X536612Y132803D01* +X536573Y132761D01* +X536528Y132727D01* +X536476Y132658D01* +X536418Y132595D01* +X536392Y132544D01* +X536358Y132499D01* +X536327Y132419D01* +X536288Y132342D01* +X536280Y132293D01* +X536257Y132233D01* +X536246Y132088D01* +X536233Y132011D01* +X536233Y129803D01* +X534017Y127587D01* +X523383Y127587D01* +X521167Y129803D01* +X521167Y139437D01* +X523383Y141653D01* +X529716Y141653D01* +X529774Y141661D01* +X529832Y141659D01* +X529914Y141681D01* +X529998Y141693D01* +X530051Y141716D01* +X530107Y141731D01* +X530180Y141774D01* +X530257Y141809D01* +X530302Y141847D01* +X530352Y141876D01* +X530410Y141938D01* +X530474Y141992D01* +X530506Y142041D01* +X530546Y142084D01* +X530585Y142159D01* +X530632Y142229D01* +X530649Y142285D01* +X530676Y142337D01* +X530687Y142405D01* +X530717Y142500D01* +X530720Y142600D01* +X530731Y142668D01* +X530731Y152089D01* +X530727Y152118D01* +X530730Y152148D01* +X530707Y152259D01* +X530691Y152371D01* +X530679Y152398D01* +X530674Y152426D01* +X530622Y152527D01* +X530575Y152630D01* +X530556Y152653D01* +X530543Y152679D01* +X530465Y152761D01* +X530392Y152847D01* +X530367Y152864D01* +X530347Y152885D01* +X530249Y152942D01* +X530155Y153005D01* +X530127Y153014D01* +X530102Y153029D01* +X529992Y153056D01* +X529884Y153091D01* +X529855Y153091D01* +X529826Y153099D01* +X529713Y153095D01* +X529600Y153098D01* +X529571Y153091D01* +X529542Y153090D01* +X529434Y153055D01* +X529325Y153026D01* +X529299Y153011D01* +X529271Y153002D01* +X529208Y152957D01* +X529080Y152881D01* +X529067Y152867D01* +X522502Y152867D01* +X521065Y154304D01* +X520995Y154356D01* +X520931Y154416D01* +X520882Y154442D01* +X520838Y154475D01* +X520756Y154506D01* +X520678Y154546D01* +X520631Y154554D01* +X520572Y154576D01* +X520425Y154588D01* +X520347Y154601D01* +X518513Y154601D01* +X518426Y154589D01* +X518339Y154586D01* +X518286Y154569D01* +X518231Y154561D01* +X518151Y154526D01* +X518068Y154499D01* +X518029Y154471D01* +X517972Y154445D01* +X517859Y154349D01* +X517795Y154304D01* +X516358Y152867D01* +X509802Y152867D01* +X508047Y154622D01* +X508047Y157482D01* +X508043Y157511D01* +X508046Y157540D01* +X508023Y157651D01* +X508007Y157763D01* +X507995Y157790D01* +X507990Y157819D01* +X507937Y157919D01* +X507891Y158023D01* +X507872Y158045D01* +X507859Y158071D01* +X507781Y158153D01* +X507708Y158240D01* +X507683Y158256D01* +X507663Y158277D01* +X507565Y158334D01* +X507471Y158397D01* +X507443Y158406D01* +X507418Y158421D01* +X507308Y158449D01* +X507200Y158483D01* +X507171Y158484D01* +X507142Y158491D01* +X507029Y158487D01* +X506916Y158490D01* +X506887Y158483D01* +X506858Y158482D01* +X506750Y158447D01* +X506641Y158419D01* +X506615Y158404D01* +X506587Y158395D01* +X506524Y158349D01* +X506396Y158273D01* +X506353Y158228D01* +X506314Y158200D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X497802Y159781D01* +X497758Y159855D01* +X497723Y159933D01* +X497686Y159976D01* +X497657Y160025D01* +X497595Y160084D01* +X497539Y160150D01* +X497492Y160182D01* +X497451Y160221D01* +X497375Y160260D01* +X497303Y160308D01* +X497249Y160325D01* +X497198Y160351D01* +X497114Y160367D01* +X497032Y160393D01* +X496975Y160395D01* +X496919Y160406D01* +X496834Y160398D01* +X496748Y160401D01* +X496693Y160386D01* +X496636Y160381D01* +X496556Y160351D01* +X496473Y160329D01* +X496424Y160300D01* +X496371Y160279D01* +X496302Y160227D01* +X496228Y160184D01* +X496189Y160142D01* +X496144Y160108D01* +X496092Y160039D01* +X496034Y159976D01* +X496008Y159926D01* +X495974Y159880D01* +X495943Y159800D01* +X495904Y159723D01* +X495896Y159674D01* +X495873Y159614D01* +X495862Y159469D01* +X495849Y159392D01* +X495849Y148597D01* +X471203Y123951D01* +X445023Y123951D01* +X444936Y123939D01* +X444849Y123936D01* +X444796Y123919D01* +X444741Y123911D01* +X444661Y123876D01* +X444578Y123849D01* +X444539Y123821D01* +X444482Y123795D01* +X444369Y123699D01* +X444305Y123654D01* +X442618Y121967D01* +X436562Y121967D01* +X435058Y123471D01* +X435011Y123506D01* +X434971Y123549D01* +X434898Y123591D01* +X434831Y123642D01* +X434776Y123663D01* +X434726Y123692D01* +X434644Y123713D01* +X434565Y123743D01* +X434507Y123748D01* +X434450Y123763D01* +X434366Y123760D01* +X434282Y123767D01* +X434224Y123755D01* +X434166Y123754D01* +X434086Y123728D01* +X434003Y123711D01* +X433951Y123684D01* +X433895Y123666D01* +X433839Y123626D01* +X433751Y123580D01* +X433678Y123511D01* +X433622Y123471D01* +X432118Y121967D01* +X426062Y121967D01* +X424375Y123654D01* +X424305Y123706D01* +X424241Y123766D01* +X424192Y123792D01* +X424148Y123825D01* +X424066Y123856D01* +X423988Y123896D01* +X423941Y123904D01* +X423882Y123926D01* +X423735Y123938D01* +X423657Y123951D01* +X380313Y123951D01* +X380227Y123939D01* +X380139Y123936D01* +X380087Y123919D01* +X380032Y123911D01* +X379952Y123876D01* +X379869Y123849D01* +X379830Y123821D01* +X379772Y123795D01* +X379659Y123699D01* +X379595Y123654D01* +X376039Y120098D01* +X367193Y111251D01* +X298863Y111251D01* +X298777Y111239D01* +X298689Y111236D01* +X298637Y111219D01* +X298582Y111211D01* +X298502Y111176D01* +X298419Y111149D01* +X298380Y111121D01* +X298322Y111095D01* +X298209Y110999D01* +X298145Y110954D01* +X278123Y90931D01* +X199397Y90931D01* +X162051Y128277D01* +X162051Y168903D01* +X164134Y170986D01* +X164135Y170986D01* +X191463Y198314D01* +X191515Y198384D01* +X191575Y198448D01* +X191600Y198497D01* +X191633Y198541D01* +X191665Y198623D01* +X191704Y198701D01* +X191712Y198749D01* +X191735Y198807D01* +X191747Y198955D01* +X191760Y199032D01* +X191760Y219666D01* +X191760Y219667D01* +X191760Y219669D01* +X191740Y219809D01* +X191720Y219947D01* +X191719Y219949D01* +X191719Y219950D01* +X191662Y220076D01* +X191604Y220206D01* +X191603Y220208D01* +X191602Y220209D01* +X191511Y220316D01* +X191420Y220423D01* +X191419Y220424D01* +X191418Y220426D01* +X191405Y220434D01* +X191184Y220581D01* +X191154Y220590D01* +X191133Y220604D01* +X188621Y221644D01* +X185549Y224717D01* +X183886Y228731D01* +X183886Y233076D01* +X185549Y237091D01* +X188621Y240164D01* +X192636Y241827D01* +X196981Y241827D01* +X200996Y240164D01* +X204069Y237091D01* +X205731Y233076D01* +X205731Y228731D01* +X204069Y224717D01* +X200996Y221644D01* +X198484Y220604D01* +X198483Y220603D01* +X198481Y220602D01* +X198363Y220532D01* +X198239Y220459D01* +X198238Y220458D01* +X198237Y220457D01* +X198139Y220353D01* +X198044Y220252D01* +X198043Y220251D01* +X198042Y220250D01* +X197978Y220124D01* +X197914Y220000D01* +X197914Y219998D01* +X197913Y219997D01* +X197910Y219982D01* +X197859Y219721D01* +X197862Y219690D01* +X197857Y219666D01* +X197857Y196086D01* +X195774Y194003D01* +X168446Y166675D01* +X168394Y166605D01* +X168334Y166541D01* +X168308Y166491D01* +X168275Y166447D01* +X168244Y166366D01* +X168204Y166288D01* +X168196Y166240D01* +X168174Y166182D01* +X168162Y166034D01* +X168149Y165957D01* +X168149Y161183D01* +X168161Y161098D01* +X168163Y161013D01* +X168181Y160958D01* +X168189Y160902D01* +X168224Y160824D01* +X168250Y160742D01* +X168282Y160695D01* +X168305Y160643D01* +X168360Y160577D01* +X168408Y160506D01* +X168452Y160469D01* +X168488Y160426D01* +X168560Y160378D01* +X168626Y160323D01* +X168678Y160300D01* +X168725Y160268D01* +X168807Y160242D01* +X168886Y160207D01* +X168942Y160199D01* +X168996Y160182D01* +X169082Y160180D01* +X169167Y160168D01* +X169223Y160176D01* +X169280Y160175D01* +X169363Y160197D01* +X169449Y160209D01* +X169500Y160232D01* +X169555Y160247D01* +X169629Y160291D01* +X169708Y160326D01* +X169751Y160363D01* +X169800Y160392D01* +X169859Y160455D01* +X169924Y160510D01* +X169950Y160552D01* +X169994Y160599D01* +X170060Y160728D01* +X170102Y160795D01* +X170349Y161391D01* +X173421Y164464D01* +X177436Y166127D01* +X181781Y166127D01* +X185796Y164464D01* +X188869Y161391D01* +X190531Y157376D01* +X190531Y153031D01* +X188869Y149017D01* +X185796Y145944D01* +X183284Y144904D01* +X183283Y144903D01* +X183281Y144902D01* +X183163Y144832D01* +X183039Y144759D01* +X183038Y144758D01* +X183037Y144757D01* +X182939Y144653D01* +X182844Y144552D01* +X182843Y144551D01* +X182842Y144550D01* +X182778Y144424D01* +X182714Y144300D01* +X182714Y144298D01* +X182713Y144297D01* +X182710Y144282D01* +X182659Y144021D01* +X182662Y143990D01* +X182657Y143966D01* +X182657Y134108D01* +X182669Y134023D01* +X182672Y133937D01* +X182689Y133883D01* +X182697Y133827D01* +X182732Y133748D01* +X182759Y133666D01* +X182790Y133619D01* +X182814Y133567D01* +X182869Y133502D01* +X182917Y133430D01* +X182960Y133394D01* +X182997Y133350D01* +X183069Y133303D01* +X183134Y133247D01* +X183186Y133224D01* +X183234Y133193D01* +X183316Y133167D01* +X183394Y133132D01* +X183451Y133124D01* +X183505Y133107D01* +X183591Y133105D01* +X183676Y133093D01* +X183732Y133101D01* +X183789Y133100D01* +X183872Y133121D01* +X183957Y133134D01* +X184009Y133157D01* +X184064Y133171D01* +X184138Y133215D01* +X184216Y133251D01* +X184260Y133287D01* +X184308Y133317D01* +X184367Y133379D01* +X184433Y133435D01* +X184459Y133477D01* +X184503Y133524D01* +X184569Y133653D01* +X184611Y133720D01* +X185544Y135973D01* +X188616Y139045D01* +X192631Y140708D01* +X196976Y140708D01* +X198541Y140060D01* +X198652Y140031D01* +X198762Y139997D01* +X198790Y139996D01* +X198816Y139989D01* +X198931Y139992D01* +X199046Y139989D01* +X199073Y139996D01* +X199101Y139997D01* +X199210Y140032D01* +X199321Y140061D01* +X199345Y140075D01* +X199371Y140084D01* +X199467Y140148D01* +X199565Y140206D01* +X199584Y140227D01* +X199607Y140242D01* +X199681Y140330D01* +X199760Y140414D01* +X199773Y140438D01* +X199790Y140460D01* +X199837Y140564D01* +X199889Y140667D01* +X199893Y140691D01* +X199906Y140719D01* +X199942Y140983D01* +X199945Y140998D01* +X199945Y171059D01* +X244033Y215147D01* +X280851Y215147D01* +X280853Y215147D01* +X280855Y215147D01* +X280995Y215167D01* +X281133Y215186D01* +X281134Y215187D01* +X281136Y215187D01* +X281262Y215244D01* +X281392Y215303D01* +X281394Y215304D01* +X281395Y215304D01* +X281502Y215396D01* +X281609Y215486D01* +X281610Y215488D01* +X281611Y215489D01* +X281620Y215502D01* +X281767Y215723D01* +X281776Y215752D01* +X281789Y215773D01* +X282830Y218285D01* +X285902Y221358D01* +X289917Y223021D01* +X294262Y223021D01* +X298277Y221358D01* +X301349Y218285D01* +X303012Y214271D01* +X303012Y209925D01* +X301349Y205911D01* +X299325Y203887D01* +X299290Y203840D01* +X299248Y203800D01* +X299205Y203727D01* +X299154Y203659D01* +X299134Y203605D01* +X299104Y203554D01* +X299083Y203473D01* +X299053Y203394D01* +X299048Y203335D01* +X299034Y203279D01* +X299037Y203194D01* +X299030Y203110D01* +X299041Y203053D01* +X299043Y202995D01* +X299069Y202914D01* +X299086Y202832D01* +X299112Y202780D01* +X299130Y202724D01* +X299171Y202668D01* +X299217Y202579D01* +X299285Y202507D01* +X299325Y202451D01* +X304834Y196942D01* +X304857Y196925D01* +X304876Y196902D01* +X304928Y196868D01* +X304952Y196845D01* +X304986Y196828D01* +X305061Y196771D01* +X305088Y196761D01* +X305113Y196745D01* +X305221Y196711D01* +X305327Y196670D01* +X305356Y196668D01* +X305384Y196659D01* +X305497Y196656D01* +X305610Y196647D01* +X305639Y196652D01* +X305668Y196652D01* +X305778Y196680D01* +X305889Y196703D01* +X305915Y196716D01* +X305943Y196724D01* +X306040Y196781D01* +X306141Y196834D01* +X306162Y196854D01* +X306187Y196869D01* +X306265Y196951D01* +X306347Y197029D01* +X306362Y197055D01* +X306382Y197076D01* +X306434Y197177D01* +X306491Y197275D01* +X306498Y197303D01* +X306511Y197329D01* +X306524Y197407D01* +X306538Y197462D01* +X306553Y197508D01* +X306553Y197520D01* +X306561Y197550D01* +X306559Y197613D01* +X306567Y197660D01* +X306567Y201571D01* +X308230Y205585D01* +X311302Y208658D01* +X315317Y210321D01* +X319662Y210321D01* +X323677Y208658D01* +X326749Y205585D01* +X328412Y201571D01* +X328412Y197274D01* +X328421Y197216D01* +X328419Y197158D01* +X328440Y197076D01* +X328452Y196992D01* +X328476Y196939D01* +X328491Y196883D01* +X328534Y196810D01* +X328568Y196733D01* +X328606Y196688D01* +X328636Y196638D01* +X328698Y196580D01* +X328752Y196516D01* +X328801Y196484D01* +X328843Y196444D01* +X328918Y196405D01* +X328989Y196358D01* +X329045Y196341D01* +X329097Y196314D01* +X329165Y196303D01* +X329260Y196273D01* +X329360Y196270D01* +X329428Y196259D01* +X342547Y196259D01* +X342634Y196271D01* +X342721Y196274D01* +X342774Y196291D01* +X342829Y196299D01* +X342909Y196334D01* +X342992Y196361D01* +X343031Y196389D01* +X343088Y196415D01* +X343201Y196511D01* +X343265Y196556D01* +X344702Y197993D01* +X351258Y197993D01* +X352865Y196386D01* +X352935Y196334D01* +X352998Y196274D01* +X353048Y196248D01* +X353092Y196215D01* +X353174Y196184D01* +X353252Y196144D01* +X353299Y196136D01* +X353358Y196114D01* +X353505Y196102D01* +X353583Y196089D01* +X415672Y196089D01* +X415730Y196097D01* +X415788Y196095D01* +X415870Y196117D01* +X415954Y196129D01* +X416007Y196152D01* +X416063Y196167D01* +X416136Y196210D01* +X416213Y196245D01* +X416258Y196283D01* +X416308Y196312D01* +X416366Y196374D01* +X416430Y196428D01* +X416462Y196477D01* +X416502Y196520D01* +X416541Y196595D01* +X416588Y196665D01* +X416605Y196721D01* +X416632Y196773D01* +X416643Y196841D01* +X416673Y196936D01* +X416676Y197036D01* +X416687Y197104D01* +X416687Y203938D01* +X418442Y205693D01* +X419051Y205693D01* +X419138Y205705D01* +X419225Y205708D01* +X419278Y205725D01* +X419333Y205733D01* +X419412Y205768D01* +X419496Y205795D01* +X419535Y205823D01* +X419592Y205849D01* +X419705Y205945D01* +X419769Y205990D01* +X420452Y206673D01* +X424010Y210231D01* +X424062Y210301D01* +X424122Y210365D01* +X424148Y210414D01* +X424181Y210458D01* +X424212Y210540D01* +X424252Y210618D01* +X424260Y210665D01* +X424282Y210724D01* +X424294Y210872D01* +X424307Y210949D01* +X424307Y214098D01* +X425744Y215535D01* +X425796Y215605D01* +X425856Y215668D01* +X425882Y215718D01* +X425915Y215762D01* +X425946Y215844D01* +X425986Y215922D01* +X425994Y215969D01* +X426016Y216028D01* +X426028Y216175D01* +X426041Y216253D01* +X426041Y219087D01* +X426029Y219173D01* +X426026Y219261D01* +X426009Y219313D01* +X426001Y219368D01* +X425966Y219448D01* +X425939Y219531D01* +X425911Y219571D01* +X425885Y219628D01* +X425831Y219691D01* +X425831Y222243D01* +X428670Y225081D01* +X428722Y225151D01* +X428782Y225215D01* +X428808Y225265D01* +X428841Y225309D01* +X428872Y225390D01* +X428912Y225468D01* +X428920Y225516D01* +X428942Y225574D01* +X428954Y225722D01* +X428967Y225799D01* +X428967Y233417D01* +X431053Y235502D01* +X431088Y235549D01* +X431130Y235589D01* +X431173Y235662D01* +X431223Y235729D01* +X431244Y235784D01* +X431274Y235834D01* +X431295Y235916D01* +X431325Y235995D01* +X431329Y236053D01* +X431344Y236110D01* +X431341Y236194D01* +X431348Y236278D01* +X431337Y236336D01* +X431335Y236394D01* +X431309Y236474D01* +X431292Y236557D01* +X431265Y236609D01* +X431247Y236665D01* +X431207Y236721D01* +X431161Y236809D01* +X431103Y236871D01* +X431091Y236891D01* +X431076Y236905D01* +X431053Y236938D01* +X428967Y239023D01* +X428967Y248657D01* +X430823Y250512D01* +X430823Y250513D01* +X431183Y250873D01* +X441817Y250873D01* +X443782Y248907D01* +X443829Y248872D01* +X443869Y248830D01* +X443942Y248787D01* +X444009Y248737D01* +X444064Y248716D01* +X444114Y248686D01* +X444196Y248665D01* +X444275Y248635D01* +X444333Y248631D01* +X444390Y248616D01* +X444474Y248619D01* +X444558Y248612D01* +X444616Y248623D01* +X444674Y248625D01* +X444754Y248651D01* +X444837Y248668D01* +X444889Y248695D01* +X444945Y248713D01* +X445001Y248753D01* +X445089Y248799D01* +X445162Y248867D01* +X445218Y248907D01* +X447053Y250742D01* +X447088Y250789D01* +X447130Y250829D01* +X447173Y250902D01* +X447223Y250969D01* +X447244Y251024D01* +X447274Y251074D01* +X447295Y251156D01* +X447325Y251235D01* +X447329Y251293D01* +X447344Y251350D01* +X447341Y251434D01* +X447348Y251518D01* +X447337Y251576D01* +X447335Y251634D01* +X447309Y251714D01* +X447292Y251797D01* +X447265Y251849D01* +X447247Y251905D01* +X447207Y251961D01* +X447161Y252049D01* +X447115Y252098D01* +X447102Y252120D01* +X447077Y252143D01* +X447053Y252178D01* +X444967Y254263D01* +X444967Y263897D01* +X447183Y266113D01* +X457817Y266113D01* +X460090Y263840D01* +X460096Y263825D01* +X460111Y263769D01* +X460154Y263696D01* +X460189Y263619D01* +X460227Y263574D01* +X460256Y263524D01* +X460318Y263466D01* +X460372Y263402D01* +X460421Y263370D01* +X460464Y263330D01* +X460539Y263291D01* +X460609Y263244D01* +X460665Y263227D01* +X460717Y263200D01* +X460785Y263189D01* +X460880Y263159D01* +X460980Y263156D01* +X461048Y263145D01* +X469044Y263145D01* +X469536Y262652D01* +X469606Y262600D01* +X469670Y262540D01* +X469719Y262514D01* +X469763Y262481D01* +X469845Y262450D01* +X469923Y262410D01* +X469971Y262402D01* +X470029Y262380D01* +X470177Y262368D01* +X470254Y262355D01* +X471057Y262355D01* +X473194Y261469D01* +X474777Y259886D01* +X474847Y259834D01* +X474911Y259774D01* +X474960Y259748D01* +X475004Y259715D01* +X475086Y259684D01* +X475164Y259644D01* +X475212Y259636D01* +X475270Y259614D01* +X475418Y259602D01* +X475495Y259589D01* +X479092Y259589D01* +X479150Y259597D01* +X479208Y259595D01* +X479290Y259617D01* +X479374Y259629D01* +X479427Y259652D01* +X479483Y259667D01* +X479556Y259710D01* +X479633Y259745D01* +X479678Y259783D01* +X479728Y259812D01* +X479786Y259874D01* +X479850Y259928D01* +X479882Y259977D01* +X479922Y260020D01* +X479961Y260095D01* +X480008Y260165D01* +X480025Y260221D01* +X480052Y260273D01* +X480063Y260341D01* +X480093Y260436D01* +X480096Y260536D01* +X480107Y260604D01* +X480107Y262278D01* +X481862Y264033D01* +X488418Y264033D01* +X490173Y262278D01* +X490173Y256222D01* +X488669Y254718D01* +X488634Y254671D01* +X488591Y254631D01* +X488549Y254558D01* +X488498Y254491D01* +X488477Y254436D01* +X488448Y254386D01* +X488427Y254304D01* +X488397Y254225D01* +X488392Y254167D01* +X488377Y254110D01* +X488380Y254026D01* +X488373Y253942D01* +X488385Y253884D01* +X488386Y253826D01* +X488412Y253746D01* +X488429Y253663D01* +X488456Y253611D01* +X488474Y253555D01* +X488514Y253499D01* +X488560Y253411D01* +X488629Y253338D01* +X488669Y253282D01* +X489855Y252096D01* +X489925Y252044D01* +X489989Y251984D01* +X490038Y251958D01* +X490082Y251925D01* +X490164Y251894D01* +X490242Y251854D01* +X490289Y251846D01* +X490348Y251824D01* +X490495Y251812D01* +X490573Y251799D01* +X492407Y251799D01* +X492494Y251811D01* +X492581Y251814D01* +X492634Y251831D01* +X492689Y251839D01* +X492769Y251874D01* +X492852Y251901D01* +X492891Y251929D01* +X492948Y251955D01* +X493061Y252051D01* +X493125Y252096D01* +X494562Y253533D01* +X501118Y253533D01* +X502555Y252096D01* +X502625Y252044D01* +X502688Y251984D01* +X502738Y251958D01* +X502782Y251925D01* +X502864Y251894D01* +X502942Y251854D01* +X502989Y251846D01* +X503048Y251824D01* +X503195Y251812D01* +X503273Y251799D01* +X505107Y251799D01* +X505194Y251811D01* +X505281Y251814D01* +X505334Y251831D01* +X505389Y251839D01* +X505469Y251874D01* +X505552Y251901D01* +X505591Y251929D01* +X505648Y251955D01* +X505761Y252051D01* +X505825Y252096D01* +X507011Y253282D01* +X507046Y253329D01* +X507089Y253369D01* +X507131Y253442D01* +X507182Y253509D01* +X507203Y253564D01* +X507232Y253614D01* +X507253Y253696D01* +X507283Y253775D01* +X507288Y253833D01* +X507303Y253890D01* +X507300Y253974D01* +X507307Y254058D01* +X507295Y254116D01* +X507294Y254174D01* +X507268Y254254D01* +X507251Y254337D01* +X507224Y254389D01* +X507206Y254445D01* +X507166Y254501D01* +X507120Y254589D01* +X507051Y254662D01* +X507011Y254718D01* +X505507Y256222D01* +X505507Y262278D01* +X507194Y263965D01* +X507211Y263988D01* +X507233Y264006D01* +X507265Y264055D01* +X507306Y264099D01* +X507332Y264148D01* +X507365Y264192D01* +X507376Y264220D01* +X507391Y264243D01* +X507408Y264297D01* +X507436Y264352D01* +X507444Y264399D01* +X507466Y264458D01* +X507469Y264489D01* +X507477Y264514D01* +X507479Y264609D01* +X507491Y264683D01* +X507491Y267963D01* +X511607Y272078D01* +X511624Y272102D01* +X511647Y272121D01* +X511709Y272215D01* +X511777Y272305D01* +X511788Y272333D01* +X511804Y272357D01* +X511838Y272465D01* +X511879Y272571D01* +X511881Y272600D01* +X511890Y272628D01* +X511893Y272742D01* +X511902Y272854D01* +X511897Y272883D01* +X511897Y272912D01* +X511869Y273022D01* +X511846Y273133D01* +X511833Y273159D01* +X511825Y273187D01* +X511768Y273285D01* +X511715Y273385D01* +X511695Y273407D01* +X511680Y273432D01* +X511598Y273509D01* +X511520Y273591D01* +X511494Y273606D01* +X511473Y273626D01* +X511372Y273678D01* +X511274Y273735D01* +X511246Y273742D01* +X511220Y273756D01* +X511142Y273769D01* +X510999Y273805D01* +X510936Y273803D01* +X510889Y273811D01* +X443407Y273811D01* +X437598Y279620D01* +X437598Y279621D01* +X426941Y290278D01* +X426940Y290278D01* +X426211Y291007D01* +X426211Y303287D01* +X426204Y303341D01* +X426205Y303378D01* +X426198Y303403D01* +X426196Y303461D01* +X426179Y303513D01* +X426171Y303568D01* +X426136Y303648D01* +X426109Y303731D01* +X426081Y303770D01* +X426055Y303828D01* +X425959Y303941D01* +X425914Y304005D01* +X423671Y306247D01* +X423671Y308773D01* +X425457Y310559D01* +X427983Y310559D01* +X432309Y306233D01* +X432309Y293953D01* +X432321Y293867D01* +X432324Y293779D01* +X432341Y293727D01* +X432349Y293672D01* +X432384Y293592D01* +X432411Y293509D01* +X432439Y293470D01* +X432465Y293412D01* +X432561Y293299D01* +X432606Y293235D01* +X445635Y280206D01* +X445705Y280154D01* +X445769Y280094D01* +X445819Y280068D01* +X445863Y280035D01* +X445944Y280004D01* +X446022Y279964D01* +X446070Y279956D01* +X446128Y279934D01* +X446276Y279922D01* +X446353Y279909D01* +X447559Y279909D01* +X447588Y279913D01* +X447617Y279910D01* +X447728Y279933D01* +X447840Y279949D01* +X447867Y279961D01* +X447896Y279966D01* +X447996Y280018D01* +X448100Y280065D01* +X448122Y280084D01* +X448148Y280097D01* +X448230Y280175D01* +X448317Y280248D01* +X448333Y280273D01* +X448354Y280293D01* +X448411Y280391D01* +X448474Y280485D01* +X448483Y280513D01* +X448498Y280538D01* +X448526Y280648D01* +X448560Y280756D01* +X448561Y280786D01* +X448568Y280814D01* +X448564Y280927D01* +X448567Y281040D01* +X448560Y281069D01* +X448559Y281098D01* +X448524Y281206D01* +X448495Y281315D01* +X448480Y281341D01* +X448471Y281369D01* +X448426Y281432D01* +X448350Y281560D01* +X448348Y281562D01* +X448304Y281603D01* +X448277Y281642D01* +X438911Y291007D01* +X438911Y291577D01* +X438899Y291664D01* +X438896Y291751D01* +X438879Y291804D01* +X438871Y291859D01* +X438836Y291939D01* +X438809Y292022D01* +X438781Y292061D01* +X438755Y292118D01* +X438659Y292231D01* +X438614Y292295D01* +X436927Y293982D01* +X436927Y300038D01* +X438431Y301542D01* +X438444Y301560D01* +X438457Y301571D01* +X438475Y301597D01* +X438509Y301629D01* +X438551Y301702D01* +X438602Y301769D01* +X438623Y301824D01* +X438652Y301874D01* +X438673Y301956D01* +X438703Y302035D01* +X438708Y302093D01* +X438723Y302150D01* +X438720Y302234D01* +X438727Y302318D01* +X438715Y302376D01* +X438714Y302434D01* +X438688Y302514D01* +X438671Y302597D01* +X438644Y302649D01* +X438626Y302705D01* +X438586Y302761D01* +X438540Y302849D01* +X438471Y302922D01* +X438431Y302978D01* +X436927Y304482D01* +X436927Y310538D01* +X437774Y311385D01* +X437826Y311455D01* +X437886Y311519D01* +X437912Y311568D01* +X437945Y311612D01* +X437976Y311694D01* +X438016Y311772D01* +X438024Y311819D01* +X438046Y311878D01* +X438058Y312025D01* +X438071Y312103D01* +X438071Y312652D01* +X438063Y312710D01* +X438065Y312768D01* +X438043Y312850D01* +X438031Y312934D01* +X438008Y312987D01* +X437993Y313043D01* +X437950Y313116D01* +X437915Y313193D01* +X437877Y313238D01* +X437848Y313288D01* +X437786Y313346D01* +X437732Y313410D01* +X437683Y313442D01* +X437640Y313482D01* +X437565Y313521D01* +X437495Y313568D01* +X437439Y313585D01* +X437387Y313612D01* +X437319Y313623D01* +X437224Y313653D01* +X437124Y313656D01* +X437056Y313667D01* +X434303Y313667D01* +X432087Y315883D01* +X432087Y316636D01* +X432079Y316694D01* +X432081Y316752D01* +X432059Y316834D01* +X432047Y316918D01* +X432024Y316971D01* +X432009Y317027D01* +X431966Y317100D01* +X431931Y317177D01* +X431893Y317222D01* +X431864Y317272D01* +X431802Y317330D01* +X431748Y317394D01* +X431699Y317426D01* +X431656Y317466D01* +X431581Y317505D01* +X431511Y317552D01* +X431455Y317569D01* +X431403Y317596D01* +X431335Y317607D01* +X431240Y317637D01* +X431140Y317640D01* +X431072Y317651D01* +X429877Y317651D01* +X419861Y327667D01* +X419861Y338067D01* +X419857Y338096D01* +X419860Y338125D01* +X419837Y338236D01* +X419821Y338348D01* +X419809Y338375D01* +X419804Y338404D01* +X419751Y338505D01* +X419705Y338608D01* +X419686Y338630D01* +X419673Y338656D01* +X419595Y338738D01* +X419522Y338825D01* +X419497Y338841D01* +X419477Y338862D01* +X419379Y338920D01* +X419285Y338982D01* +X419257Y338991D01* +X419232Y339006D01* +X419122Y339034D01* +X419014Y339068D01* +X418984Y339069D01* +X418956Y339076D01* +X418843Y339073D01* +X418730Y339076D01* +X418701Y339068D01* +X418672Y339067D01* +X418564Y339032D01* +X418455Y339004D01* +X418429Y338989D01* +X418401Y338980D01* +X418337Y338934D01* +X418210Y338858D01* +X418167Y338813D01* +X418128Y338785D01* +X417314Y337971D01* +X415177Y337085D01* +X412863Y337085D01* +X410726Y337971D01* +X409091Y339606D01* +X408205Y341743D01* +X408205Y343983D01* +X408193Y344069D01* +X408190Y344157D01* +X408173Y344209D01* +X408165Y344264D01* +X408130Y344344D01* +X408103Y344427D01* +X408075Y344466D01* +X408049Y344524D01* +X407953Y344637D01* +X407908Y344701D01* +X403456Y349153D01* +X403364Y349222D01* +X403276Y349296D01* +X403250Y349307D01* +X403228Y349324D01* +X403121Y349365D01* +X403016Y349411D01* +X402989Y349415D01* +X402963Y349425D01* +X402848Y349435D01* +X402734Y349450D01* +X402707Y349446D01* +X402679Y349449D01* +X402567Y349426D01* +X402453Y349410D01* +X402428Y349398D01* +X402401Y349393D01* +X402299Y349340D01* +X402194Y349293D01* +X402173Y349275D01* +X402148Y349262D01* +X402065Y349183D01* +X401978Y349108D01* +X401964Y349087D01* +X401942Y349066D01* +X401808Y348836D01* +X401800Y348824D01* +X401169Y347302D01* +X399534Y345667D01* +X398313Y345161D01* +X398214Y345102D01* +X398112Y345050D01* +X398092Y345030D01* +X398068Y345016D01* +X397989Y344933D01* +X397906Y344854D01* +X397892Y344830D01* +X397873Y344810D01* +X397820Y344708D01* +X397762Y344608D01* +X397755Y344582D01* +X397743Y344557D01* +X397720Y344444D01* +X397692Y344333D01* +X397693Y344305D01* +X397688Y344278D01* +X397697Y344164D01* +X397701Y344049D01* +X397710Y344022D01* +X397712Y343995D01* +X397753Y343888D01* +X397789Y343778D01* +X397803Y343758D01* +X397814Y343729D01* +X397975Y343516D01* +X397983Y343505D01* +X397986Y343503D01* +X400096Y341392D01* +X400166Y341340D01* +X400230Y341280D01* +X400279Y341254D01* +X400324Y341221D01* +X400405Y341190D01* +X400483Y341150D01* +X400531Y341142D01* +X400589Y341120D01* +X400737Y341108D01* +X400814Y341095D01* +X403053Y341095D01* +X405191Y340209D01* +X406826Y338574D01* +X407712Y336437D01* +X407712Y334123D01* +X406826Y331986D01* +X405191Y330351D01* +X403053Y329465D01* +X400740Y329465D01* +X398603Y330351D01* +X396967Y331986D01* +X396082Y334123D01* +X396082Y336363D01* +X396070Y336449D01* +X396067Y336537D01* +X396050Y336589D01* +X396042Y336644D01* +X396007Y336724D01* +X395980Y336807D01* +X395952Y336846D01* +X395926Y336904D01* +X395830Y337017D01* +X395785Y337081D01* +X378071Y354794D01* +X378002Y354846D01* +X377938Y354906D01* +X377888Y354932D01* +X377844Y354965D01* +X377763Y354996D01* +X377685Y355036D01* +X377637Y355044D01* +X377579Y355066D01* +X377431Y355078D01* +X377354Y355091D01* +X374998Y355091D01* +X374940Y355083D01* +X374882Y355085D01* +X374800Y355063D01* +X374716Y355051D01* +X374663Y355028D01* +X374607Y355013D01* +X374534Y354970D01* +X374457Y354935D01* +X374412Y354897D01* +X374362Y354868D01* +X374304Y354806D01* +X374240Y354752D01* +X374208Y354703D01* +X374168Y354660D01* +X374129Y354585D01* +X374082Y354515D01* +X374065Y354459D01* +X374038Y354407D01* +X374027Y354339D01* +X373997Y354244D01* +X373994Y354144D01* +X373983Y354076D01* +X373983Y344518D01* +X373991Y344460D01* +X373989Y344402D01* +X374011Y344320D01* +X374023Y344236D01* +X374046Y344183D01* +X374061Y344127D01* +X374104Y344054D01* +X374139Y343977D01* +X374177Y343932D01* +X374206Y343882D01* +X374268Y343824D01* +X374322Y343760D01* +X374371Y343728D01* +X374414Y343688D01* +X374489Y343649D01* +X374559Y343602D01* +X374615Y343585D01* +X374667Y343558D01* +X374735Y343547D01* +X374830Y343517D01* +X374930Y343514D01* +X374998Y343503D01* +X384697Y343503D01* +X386283Y341917D01* +X386283Y338319D01* +X386262Y338291D01* +X386220Y338251D01* +X386177Y338178D01* +X386126Y338111D01* +X386105Y338056D01* +X386076Y338006D01* +X386055Y337924D01* +X386025Y337845D01* +X386020Y337787D01* +X386006Y337730D01* +X386008Y337646D01* +X386002Y337562D01* +X386013Y337504D01* +X386015Y337446D01* +X386041Y337366D01* +X386057Y337283D01* +X386084Y337231D01* +X386102Y337175D01* +X386142Y337119D01* +X386188Y337031D01* +X386257Y336958D01* +X386283Y336922D01* +X386283Y333319D01* +X386262Y333291D01* +X386220Y333251D01* +X386177Y333178D01* +X386126Y333111D01* +X386105Y333056D01* +X386076Y333006D01* +X386055Y332924D01* +X386025Y332845D01* +X386020Y332787D01* +X386006Y332730D01* +X386008Y332646D01* +X386002Y332562D01* +X386013Y332504D01* +X386015Y332446D01* +X386041Y332366D01* +X386057Y332283D01* +X386084Y332231D01* +X386102Y332175D01* +X386142Y332119D01* +X386188Y332031D01* +X386257Y331958D01* +X386283Y331922D01* +X386283Y328319D01* +X386282Y328318D01* +X386265Y328303D01* +X386248Y328278D01* +X386220Y328251D01* +X386177Y328178D01* +X386126Y328111D01* +X386113Y328075D01* +X386107Y328066D01* +X386102Y328050D01* +X386076Y328006D01* +X386055Y327924D01* +X386025Y327845D01* +X386020Y327787D01* +X386006Y327730D01* +X386008Y327646D01* +X386002Y327562D01* +X386013Y327504D01* +X386015Y327446D01* +X386041Y327366D01* +X386057Y327283D01* +X386084Y327231D01* +X386102Y327175D01* +X386142Y327119D01* +X386188Y327031D01* +X386257Y326958D01* +X386283Y326922D01* +X386283Y323319D01* +X386262Y323291D01* +X386220Y323251D01* +X386177Y323178D01* +X386126Y323111D01* +X386105Y323056D01* +X386076Y323006D01* +X386055Y322924D01* +X386025Y322845D01* +X386020Y322787D01* +X386006Y322730D01* +X386008Y322646D01* +X386002Y322562D01* +X386013Y322504D01* +X386015Y322446D01* +X386041Y322366D01* +X386057Y322283D01* +X386084Y322231D01* +X386102Y322175D01* +X386142Y322119D01* +X386188Y322031D01* +X386257Y321958D01* +X386283Y321922D01* +X386283Y318319D01* +X386262Y318291D01* +X386220Y318251D01* +X386177Y318178D01* +X386126Y318111D01* +X386105Y318056D01* +X386076Y318006D01* +X386055Y317924D01* +X386025Y317845D01* +X386020Y317787D01* +X386006Y317730D01* +X386008Y317646D01* +X386002Y317562D01* +X386013Y317504D01* +X386015Y317446D01* +X386041Y317366D01* +X386057Y317283D01* +X386084Y317231D01* +X386102Y317175D01* +X386142Y317119D01* +X386188Y317031D01* +X386257Y316958D01* +X386283Y316922D01* +X386283Y313319D01* +X386262Y313291D01* +X386220Y313251D01* +X386177Y313178D01* +X386126Y313111D01* +X386105Y313056D01* +X386076Y313006D01* +X386055Y312924D01* +X386025Y312845D01* +X386020Y312787D01* +X386006Y312730D01* +X386008Y312646D01* +X386002Y312562D01* +X386013Y312504D01* +X386015Y312446D01* +X386041Y312366D01* +X386057Y312283D01* +X386084Y312231D01* +X386102Y312175D01* +X386142Y312119D01* +X386188Y312031D01* +X386257Y311958D01* +X386283Y311922D01* +X386283Y308323D01* +X384697Y306737D01* +X374998Y306737D01* +X374940Y306729D01* +X374882Y306731D01* +X374800Y306709D01* +X374716Y306697D01* +X374663Y306674D01* +X374607Y306659D01* +X374534Y306616D01* +X374457Y306581D01* +X374412Y306543D01* +X374362Y306514D01* +X374304Y306452D01* +X374240Y306398D01* +X374208Y306349D01* +X374168Y306306D01* +X374129Y306231D01* +X374082Y306161D01* +X374065Y306105D01* +X374038Y306053D01* +X374027Y305985D01* +X373997Y305890D01* +X373994Y305790D01* +X373983Y305722D01* +X373983Y295994D01* +X373991Y295936D01* +X373989Y295878D01* +X374011Y295796D01* +X374023Y295712D01* +X374046Y295659D01* +X374061Y295603D01* +X374104Y295530D01* +X374139Y295453D01* +X374177Y295408D01* +X374206Y295358D01* +X374268Y295300D01* +X374322Y295236D01* +X374371Y295204D01* +X374414Y295164D01* +X374489Y295125D01* +X374559Y295078D01* +X374615Y295061D01* +X374667Y295034D01* +X374735Y295023D01* +X374830Y294993D01* +X374930Y294990D01* +X374998Y294979D01* +X387652Y294979D01* +X387710Y294987D01* +X387768Y294985D01* +X387850Y295007D01* +X387934Y295019D01* +X387987Y295042D01* +X388043Y295057D01* +X388116Y295100D01* +X388193Y295135D01* +X388238Y295173D01* +X388288Y295202D01* +X388346Y295264D01* +X388410Y295318D01* +X388442Y295367D01* +X388482Y295410D01* +X388521Y295485D01* +X388568Y295555D01* +X388585Y295611D01* +X388612Y295663D01* +X388623Y295731D01* +X388653Y295826D01* +X388656Y295926D01* +X388667Y295994D01* +X388667Y300038D01* +X390422Y301793D01* +X396978Y301793D01* +X398733Y300038D01* +X398733Y293735D01* +X398737Y293706D01* +X398734Y293677D01* +X398757Y293566D01* +X398773Y293454D01* +X398785Y293427D01* +X398790Y293398D01* +X398843Y293298D01* +X398889Y293194D01* +X398908Y293172D01* +X398921Y293146D01* +X398999Y293064D01* +X399072Y292977D01* +X399097Y292961D01* +X399117Y292940D01* +X399215Y292883D01* +X399309Y292820D01* +X399337Y292811D01* +X399362Y292796D01* +X399472Y292768D01* +X399580Y292734D01* +X399610Y292733D01* +X399638Y292726D01* +X399751Y292730D01* +X399864Y292727D01* +X399893Y292734D01* +X399922Y292735D01* +X400030Y292770D01* +X400139Y292799D01* +X400165Y292813D01* +X400193Y292823D01* +X400257Y292868D01* +X400384Y292944D01* +X400427Y292989D01* +X400466Y293017D01* +X401070Y293621D01* +X401123Y293691D01* +X401182Y293755D01* +X401208Y293804D01* +X401241Y293849D01* +X401272Y293930D01* +X401312Y294008D01* +X401320Y294056D01* +X401342Y294114D01* +X401354Y294262D01* +X401367Y294339D01* +X401367Y300038D01* +X402871Y301542D01* +X402884Y301560D01* +X402897Y301571D01* +X402915Y301597D01* +X402949Y301629D01* +X402991Y301702D01* +X403042Y301769D01* +X403063Y301824D01* +X403092Y301874D01* +X403113Y301956D01* +X403143Y302035D01* +X403148Y302093D01* +X403163Y302150D01* +X403160Y302234D01* +X403167Y302318D01* +X403155Y302376D01* +X403154Y302434D01* +X403128Y302514D01* +X403111Y302597D01* +X403084Y302649D01* +X403066Y302705D01* +X403026Y302761D01* +X402980Y302849D01* +X402911Y302922D01* +X402871Y302978D01* +X401367Y304482D01* +X401367Y310538D01* +X402535Y311706D01* +X402545Y311719D01* +X402550Y311723D01* +X402565Y311745D01* +X402570Y311753D01* +X402613Y311793D01* +X402655Y311866D01* +X402706Y311933D01* +X402727Y311988D01* +X402756Y312038D01* +X402777Y312120D01* +X402807Y312199D01* +X402812Y312257D01* +X402826Y312314D01* +X402824Y312398D01* +X402831Y312482D01* +X402819Y312539D01* +X402817Y312598D01* +X402791Y312678D01* +X402775Y312761D01* +X402748Y312813D01* +X402730Y312868D01* +X402690Y312924D01* +X402644Y313013D01* +X402575Y313086D01* +X402535Y313142D01* +X401471Y314206D01* +X400585Y316343D01* +X400585Y318657D01* +X401471Y320794D01* +X403106Y322429D01* +X405243Y323315D01* +X407557Y323315D01* +X409694Y322429D01* +X411329Y320794D01* +X412215Y318657D01* +X412215Y316343D01* +X411329Y314206D01* +X410265Y313142D01* +X410230Y313095D01* +X410187Y313055D01* +X410145Y312982D01* +X410094Y312914D01* +X410073Y312860D01* +X410044Y312809D01* +X410023Y312728D01* +X409993Y312649D01* +X409988Y312590D01* +X409974Y312534D01* +X409976Y312450D01* +X409969Y312366D01* +X409981Y312308D01* +X409983Y312250D01* +X410009Y312169D01* +X410025Y312087D01* +X410052Y312035D01* +X410070Y311979D01* +X410110Y311923D01* +X410156Y311834D01* +X410204Y311785D01* +X410216Y311763D01* +X410240Y311741D01* +X410265Y311706D01* +X411433Y310538D01* +X411433Y304482D01* +X409929Y302978D01* +X409894Y302931D01* +X409851Y302891D01* +X409809Y302818D01* +X409758Y302751D01* +X409737Y302696D01* +X409708Y302646D01* +X409687Y302564D01* +X409657Y302485D01* +X409652Y302427D01* +X409637Y302370D01* +X409640Y302286D01* +X409633Y302202D01* +X409645Y302144D01* +X409646Y302086D01* +X409672Y302006D01* +X409689Y301923D01* +X409716Y301871D01* +X409734Y301815D01* +X409774Y301759D01* +X409820Y301671D01* +X409855Y301634D01* +X409869Y301610D01* +X409903Y301579D01* +X409929Y301542D01* +X411433Y300038D01* +X411433Y293982D01* +X409678Y292227D01* +X408719Y292227D01* +X408633Y292215D01* +X408545Y292212D01* +X408493Y292195D01* +X408438Y292187D01* +X408358Y292152D01* +X408275Y292125D01* +X408236Y292097D01* +X408178Y292071D01* +X408065Y291975D01* +X408001Y291930D01* +X406350Y290278D01* +X406349Y290278D01* +X400043Y283971D01* +X349257Y283971D01* +X347174Y286054D01* +X347174Y286055D01* +X342951Y290278D01* +X342950Y290278D01* +X342551Y290677D01* +X342551Y293422D01* +X342543Y293480D01* +X342545Y293538D01* +X342523Y293620D01* +X342511Y293704D01* +X342488Y293757D01* +X342473Y293813D01* +X342430Y293886D01* +X342395Y293963D01* +X342357Y294008D01* +X342328Y294058D01* +X342266Y294116D01* +X342212Y294180D01* +X342163Y294212D01* +X342120Y294252D01* +X342045Y294291D01* +X341975Y294338D01* +X341919Y294355D01* +X341867Y294382D01* +X341799Y294393D01* +X341704Y294423D01* +X341604Y294426D01* +X341536Y294437D01* +X338803Y294437D01* +X337217Y296023D01* +X337217Y297456D01* +X337209Y297514D01* +X337211Y297572D01* +X337189Y297654D01* +X337177Y297738D01* +X337154Y297791D01* +X337139Y297847D01* +X337096Y297920D01* +X337061Y297997D01* +X337023Y298042D01* +X336994Y298092D01* +X336932Y298150D01* +X336878Y298214D01* +X336829Y298246D01* +X336786Y298286D01* +X336711Y298325D01* +X336641Y298372D01* +X336585Y298389D01* +X336533Y298416D01* +X336465Y298427D01* +X336370Y298457D01* +X336270Y298460D01* +X336202Y298471D01* +X331575Y298471D01* +X331573Y298471D01* +X331572Y298471D01* +X331433Y298451D01* +X331293Y298431D01* +X331292Y298431D01* +X331290Y298431D01* +X331165Y298374D01* +X331034Y298315D01* +X331033Y298314D01* +X331031Y298313D01* +X330924Y298222D01* +X330817Y298132D01* +X330816Y298130D01* +X330815Y298129D01* +X330807Y298116D01* +X330659Y297895D01* +X330650Y297866D01* +X330637Y297845D01* +X330049Y296426D01* +X328414Y294791D01* +X326277Y293905D01* +X323963Y293905D01* +X321826Y294791D01* +X320191Y296426D01* +X319305Y298563D01* +X319305Y300877D01* +X320209Y303057D01* +X320237Y303169D01* +X320272Y303278D01* +X320273Y303306D01* +X320280Y303333D01* +X320276Y303447D01* +X320279Y303562D01* +X320272Y303589D01* +X320271Y303617D01* +X320236Y303726D01* +X320207Y303837D01* +X320193Y303861D01* +X320185Y303888D01* +X320121Y303983D01* +X320062Y304082D01* +X320042Y304101D01* +X320026Y304124D01* +X319939Y304198D01* +X319855Y304276D01* +X319830Y304289D01* +X319809Y304307D01* +X319704Y304353D01* +X319602Y304406D01* +X319577Y304410D01* +X319549Y304422D01* +X319285Y304459D01* +X319271Y304461D01* +X315313Y304461D01* +X315226Y304449D01* +X315139Y304446D01* +X315086Y304429D01* +X315031Y304421D01* +X314951Y304386D01* +X314868Y304359D01* +X314829Y304331D01* +X314772Y304305D01* +X314659Y304209D01* +X314595Y304164D01* +X313158Y302727D01* +X306602Y302727D01* +X305165Y304164D01* +X305095Y304216D01* +X305031Y304276D01* +X304982Y304302D01* +X304938Y304335D01* +X304856Y304366D01* +X304778Y304406D01* +X304731Y304414D01* +X304672Y304436D01* +X304525Y304448D01* +X304447Y304461D01* +X302613Y304461D01* +X302526Y304449D01* +X302439Y304446D01* +X302386Y304429D01* +X302331Y304421D01* +X302251Y304386D01* +X302168Y304359D01* +X302129Y304331D01* +X302072Y304305D01* +X301959Y304209D01* +X301895Y304164D01* +X300458Y302727D01* +X293885Y302727D01* +X293862Y302745D01* +X293774Y302819D01* +X293748Y302830D01* +X293726Y302847D01* +X293619Y302888D01* +X293514Y302934D01* +X293486Y302938D01* +X293461Y302948D01* +X293346Y302957D01* +X293232Y302973D01* +X293205Y302969D01* +X293177Y302971D01* +X293064Y302949D01* +X292951Y302932D01* +X292926Y302921D01* +X292899Y302916D01* +X292796Y302863D01* +X292692Y302815D01* +X292671Y302797D01* +X292646Y302785D01* +X292563Y302705D01* +X292475Y302631D01* +X292462Y302610D01* +X292440Y302589D01* +X292305Y302358D01* +X292297Y302346D01* +X292296Y302344D01* +X292296Y302343D01* +X291949Y301506D01* +X290314Y299871D01* +X288177Y298985D01* +X285863Y298985D01* +X283726Y299871D01* +X282091Y301506D01* +X281743Y302346D01* +X281684Y302445D01* +X281631Y302547D01* +X281612Y302567D01* +X281598Y302591D01* +X281514Y302670D01* +X281435Y302753D01* +X281411Y302767D01* +X281391Y302786D01* +X281289Y302839D01* +X281190Y302897D01* +X281163Y302904D01* +X281139Y302917D01* +X281026Y302939D01* +X280915Y302967D01* +X280887Y302966D01* +X280860Y302972D01* +X280745Y302962D01* +X280630Y302958D01* +X280604Y302950D01* +X280576Y302947D01* +X280469Y302906D01* +X280360Y302871D01* +X280340Y302856D01* +X280311Y302845D01* +X280155Y302727D01* +X273582Y302727D01* +X272145Y304164D01* +X272075Y304216D01* +X272011Y304276D01* +X271962Y304302D01* +X271918Y304335D01* +X271836Y304366D01* +X271758Y304406D01* +X271711Y304414D01* +X271652Y304436D01* +X271505Y304448D01* +X271427Y304461D01* +X269593Y304461D01* +X269506Y304449D01* +X269419Y304446D01* +X269366Y304429D01* +X269311Y304421D01* +X269231Y304386D01* +X269148Y304359D01* +X269109Y304331D01* +X269052Y304305D01* +X268939Y304209D01* +X268875Y304164D01* +X267438Y302727D01* +X260882Y302727D01* +X259445Y304164D01* +X259375Y304216D01* +X259311Y304276D01* +X259262Y304302D01* +X259218Y304335D01* +X259136Y304366D01* +X259058Y304406D01* +X259011Y304414D01* +X258952Y304436D01* +X258805Y304448D01* +X258727Y304461D01* +X258290Y304461D01* +X258232Y304453D01* +X258174Y304455D01* +X258092Y304433D01* +X258008Y304421D01* +X257955Y304398D01* +X257899Y304383D01* +X257826Y304340D01* +X257749Y304305D01* +X257704Y304267D01* +X257654Y304238D01* +X257596Y304176D01* +X257532Y304122D01* +X257500Y304073D01* +X257460Y304030D01* +X257421Y303955D01* +X257374Y303885D01* +X257362Y303846D01* +X257352Y303830D01* +X256389Y301506D01* +X254754Y299871D01* +X252617Y298985D01* +X250303Y298985D01* +X248166Y299871D01* +X246531Y301506D01* +X245645Y303643D01* +X245645Y305957D01* +X246531Y308094D01* +X248166Y309729D01* +X250303Y310615D01* +X252622Y310615D01* +X252623Y310614D01* +X252700Y310601D01* +X252841Y310565D01* +X252905Y310567D01* +X252954Y310559D01* +X258727Y310559D01* +X258814Y310571D01* +X258901Y310574D01* +X258954Y310591D01* +X259009Y310599D01* +X259089Y310634D01* +X259172Y310661D01* +X259211Y310689D01* +X259268Y310715D01* +X259381Y310811D01* +X259445Y310856D01* +X260882Y312293D01* +X267438Y312293D01* +X268875Y310856D01* +X268945Y310804D01* +X269009Y310744D01* +X269058Y310718D01* +X269102Y310685D01* +X269184Y310654D01* +X269262Y310614D01* +X269309Y310606D01* +X269368Y310584D01* +X269515Y310572D01* +X269593Y310559D01* +X271427Y310559D01* +X271514Y310571D01* +X271601Y310574D01* +X271654Y310591D01* +X271709Y310599D01* +X271789Y310634D01* +X271872Y310661D01* +X271911Y310689D01* +X271968Y310715D01* +X272081Y310811D01* +X272145Y310856D01* +X273582Y312293D01* +X276911Y312293D01* +X276997Y312305D01* +X277085Y312308D01* +X277137Y312325D01* +X277192Y312333D01* +X277272Y312368D01* +X277355Y312395D01* +X277394Y312423D01* +X277452Y312449D01* +X277565Y312545D01* +X277629Y312590D01* +X279996Y314957D01* +X280013Y314981D01* +X280036Y315000D01* +X280099Y315094D01* +X280166Y315184D01* +X280177Y315212D01* +X280193Y315236D01* +X280227Y315344D01* +X280268Y315450D01* +X280270Y315479D01* +X280279Y315507D01* +X280282Y315621D01* +X280291Y315733D01* +X280285Y315762D01* +X280286Y315791D01* +X280258Y315901D01* +X280235Y316012D01* +X280222Y316038D01* +X280214Y316066D01* +X280157Y316164D01* +X280104Y316264D01* +X280084Y316286D01* +X280069Y316311D01* +X279987Y316388D01* +X279909Y316470D01* +X279883Y316485D01* +X279862Y316505D01* +X279761Y316557D01* +X279663Y316614D01* +X279635Y316621D01* +X279609Y316635D01* +X279531Y316648D01* +X279388Y316684D01* +X279325Y316682D01* +X279278Y316690D01* +X186499Y316690D01* +X181797Y321393D01* +X181727Y321445D01* +X181663Y321505D01* +X181614Y321531D01* +X181570Y321564D01* +X181488Y321595D01* +X181410Y321635D01* +X181362Y321643D01* +X181304Y321665D01* +X181156Y321677D01* +X181079Y321690D01* +X173148Y321690D01* +X173090Y321682D01* +X173032Y321684D01* +X172950Y321662D01* +X172866Y321650D01* +X172813Y321627D01* +X172757Y321612D01* +X172684Y321569D01* +X172607Y321534D01* +X172562Y321496D01* +X172512Y321467D01* +X172454Y321405D01* +X172390Y321351D01* +X172358Y321302D01* +X172318Y321259D01* +X172279Y321184D01* +X172232Y321114D01* +X172215Y321058D01* +X172188Y321006D01* +X172177Y320938D01* +X172147Y320843D01* +X172144Y320743D01* +X172133Y320675D01* +X172133Y316364D01* +X170356Y314587D01* +X154844Y314587D01* +X154834Y314597D01* +X154810Y314615D01* +X154791Y314637D01* +X154697Y314700D01* +X154607Y314768D01* +X154579Y314779D01* +X154555Y314795D01* +X154447Y314829D01* +X154341Y314869D01* +X154312Y314872D01* +X154284Y314881D01* +X154171Y314884D01* +X154058Y314893D01* +X154029Y314887D01* +X154000Y314888D01* +X153890Y314859D01* +X153779Y314837D01* +X153753Y314823D01* +X153725Y314816D01* +X153627Y314758D01* +X153527Y314706D01* +X153505Y314686D01* +X153480Y314671D01* +X153403Y314588D01* +X153321Y314510D01* +X153306Y314485D01* +X153286Y314464D01* +X153234Y314363D01* +X153177Y314265D01* +X153170Y314236D01* +X153156Y314210D01* +X153143Y314133D01* +X153107Y313989D01* +X153109Y313927D01* +X153101Y313879D01* +X153101Y310120D01* +X153100Y310119D01* +X149100Y310119D01* +X149099Y310120D01* +X149099Y340120D01* +X149100Y340121D01* +X152391Y340121D01* +X152478Y340133D01* +X152565Y340136D01* +X152618Y340153D01* +X152673Y340161D01* +X152753Y340196D01* +X152836Y340223D01* +X152875Y340251D01* +X152932Y340277D01* +X153045Y340373D01* +X153109Y340418D01* +X154844Y342153D01* +X160464Y342153D01* +X160551Y342165D01* +X160638Y342168D01* +X160690Y342185D01* +X173626Y342185D01* +X173712Y342197D01* +X173800Y342200D01* +X173852Y342217D01* +X173907Y342225D01* +X173987Y342260D01* +X174070Y342287D01* +X174110Y342315D01* +X174167Y342341D01* +X174280Y342437D01* +X174344Y342482D01* +X175010Y343148D01* +X175038Y343186D01* +X175050Y343196D01* +X175070Y343226D01* +X175122Y343282D01* +X175148Y343331D01* +X175181Y343376D01* +X175196Y343415D01* +X175208Y343433D01* +X175221Y343475D01* +X175252Y343535D01* +X175260Y343583D01* +X175282Y343641D01* +X175285Y343678D01* +X175293Y343704D01* +X175296Y343797D01* +X175307Y343866D01* +X175307Y345758D01* +X177062Y347513D01* +X183618Y347513D01* +X183869Y347262D01* +X183939Y347210D01* +X184003Y347150D01* +X184052Y347124D01* +X184096Y347091D01* +X184178Y347060D01* +X184256Y347020D01* +X184303Y347012D01* +X184362Y346990D01* +X184509Y346978D01* +X184587Y346965D01* +X185921Y346965D01* +X186008Y346977D01* +X186095Y346980D01* +X186148Y346997D01* +X186202Y347005D01* +X186282Y347040D01* +X186365Y347067D01* +X186405Y347095D01* +X186462Y347121D01* +X186575Y347217D01* +X186639Y347262D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195429Y339606D01* +X193794Y337971D01* +X191657Y337085D01* +X189343Y337085D01* +X187206Y337971D01* +X186639Y338538D01* +X186569Y338590D01* +X186505Y338650D01* +X186456Y338676D01* +X186412Y338709D01* +X186330Y338740D01* +X186252Y338780D01* +X186204Y338788D01* +X186146Y338810D01* +X185998Y338822D01* +X185921Y338835D01* +X184927Y338835D01* +X184840Y338823D01* +X184753Y338820D01* +X184700Y338803D01* +X184645Y338795D01* +X184565Y338760D01* +X184482Y338733D01* +X184443Y338705D01* +X184386Y338679D01* +X184273Y338583D01* +X184209Y338538D01* +X183618Y337947D01* +X181726Y337947D01* +X181640Y337935D01* +X181552Y337932D01* +X181500Y337915D01* +X181445Y337907D01* +X181365Y337872D01* +X181282Y337845D01* +X181242Y337817D01* +X181185Y337791D01* +X181072Y337695D01* +X181008Y337650D01* +X180141Y336783D01* +X180124Y336759D01* +X180101Y336740D01* +X180038Y336646D01* +X179970Y336556D01* +X179960Y336528D01* +X179944Y336504D01* +X179909Y336396D01* +X179869Y336290D01* +X179867Y336261D01* +X179858Y336233D01* +X179855Y336119D01* +X179846Y336007D01* +X179851Y335978D01* +X179851Y335949D01* +X179879Y335839D01* +X179901Y335728D01* +X179915Y335702D01* +X179922Y335674D01* +X179980Y335576D01* +X180032Y335476D01* +X180053Y335454D01* +X180068Y335429D01* +X180150Y335352D01* +X180228Y335270D01* +X180254Y335255D01* +X180275Y335235D01* +X180376Y335183D01* +X180474Y335126D01* +X180502Y335119D01* +X180528Y335105D01* +X180605Y335092D01* +X180749Y335056D01* +X180812Y335058D01* +X180859Y335050D01* +X185421Y335050D01* +X191623Y328847D01* +X191693Y328795D01* +X191757Y328735D01* +X191806Y328709D01* +X191850Y328676D01* +X191932Y328645D01* +X192010Y328605D01* +X192058Y328597D01* +X192116Y328575D01* +X192264Y328563D01* +X192341Y328550D01* +X333606Y328550D01* +X333663Y328528D01* +X333811Y328516D01* +X333888Y328503D01* +X337497Y328503D01* +X339083Y326917D01* +X339083Y323319D01* +X339062Y323291D01* +X339020Y323251D01* +X338977Y323178D01* +X338926Y323111D01* +X338906Y323056D01* +X338876Y323006D01* +X338855Y322924D01* +X338825Y322845D01* +X338820Y322787D01* +X338806Y322730D01* +X338809Y322646D01* +X338801Y322562D01* +X338813Y322504D01* +X338815Y322446D01* +X338841Y322366D01* +X338857Y322283D01* +X338884Y322231D01* +X338902Y322175D01* +X338942Y322119D01* +X338988Y322031D01* +X339057Y321958D01* +X339083Y321922D01* +X339083Y318319D01* +X339062Y318291D01* +X339020Y318251D01* +X338977Y318178D01* +X338926Y318111D01* +X338906Y318056D01* +X338876Y318006D01* +X338855Y317924D01* +X338825Y317845D01* +X338820Y317787D01* +X338806Y317730D01* +X338809Y317646D01* +X338801Y317562D01* +X338813Y317504D01* +X338815Y317446D01* +X338841Y317366D01* +X338857Y317283D01* +X338884Y317231D01* +X338902Y317175D01* +X338942Y317119D01* +X338988Y317031D01* +X339057Y316958D01* +X339083Y316922D01* +X339083Y313319D01* +X339062Y313291D01* +X339020Y313251D01* +X338977Y313178D01* +X338926Y313111D01* +X338906Y313056D01* +X338876Y313006D01* +X338855Y312924D01* +X338825Y312845D01* +X338820Y312787D01* +X338806Y312730D01* +X338809Y312646D01* +X338801Y312562D01* +X338813Y312504D01* +X338815Y312446D01* +X338841Y312366D01* +X338857Y312283D01* +X338884Y312231D01* +X338902Y312175D01* +X338942Y312119D01* +X338988Y312031D01* +X339057Y311958D01* +X339083Y311922D01* +X339083Y309618D01* +X339091Y309560D01* +X339089Y309502D01* +X339111Y309420D01* +X339123Y309336D01* +X339146Y309283D01* +X339161Y309227D01* +X339204Y309154D01* +X339239Y309077D01* +X339277Y309032D01* +X339306Y308982D01* +X339368Y308924D01* +X339422Y308860D01* +X339471Y308828D01* +X339514Y308788D01* +X339589Y308749D01* +X339659Y308702D01* +X339715Y308685D01* +X339767Y308658D01* +X339835Y308647D01* +X339930Y308617D01* +X340030Y308614D01* +X340098Y308603D01* +X342401Y308603D01* +X342429Y308582D01* +X342469Y308540D01* +X342498Y308523D01* +X342499Y308522D01* +X342542Y308497D01* +X342609Y308446D01* +X342664Y308426D01* +X342714Y308396D01* +X342796Y308375D01* +X342875Y308345D01* +X342933Y308340D01* +X342990Y308326D01* +X343074Y308329D01* +X343158Y308321D01* +X343216Y308333D01* +X343274Y308335D01* +X343354Y308361D01* +X343437Y308377D01* +X343489Y308404D01* +X343545Y308422D01* +X343601Y308462D01* +X343689Y308508D01* +X343762Y308577D01* +X343798Y308603D01* +X347401Y308603D01* +X347429Y308582D01* +X347469Y308540D01* +X347498Y308523D01* +X347499Y308522D01* +X347542Y308497D01* +X347609Y308446D01* +X347664Y308426D01* +X347714Y308396D01* +X347796Y308375D01* +X347875Y308345D01* +X347933Y308340D01* +X347990Y308326D01* +X348074Y308329D01* +X348158Y308321D01* +X348216Y308333D01* +X348274Y308335D01* +X348354Y308361D01* +X348437Y308377D01* +X348489Y308404D01* +X348545Y308422D01* +X348601Y308462D01* +X348689Y308508D01* +X348762Y308577D01* +X348798Y308603D01* +X352401Y308603D01* +X352429Y308582D01* +X352469Y308540D01* +X352498Y308523D01* +X352499Y308522D01* +X352542Y308497D01* +X352609Y308446D01* +X352664Y308426D01* +X352714Y308396D01* +X352796Y308375D01* +X352875Y308345D01* +X352933Y308340D01* +X352990Y308326D01* +X353074Y308329D01* +X353158Y308321D01* +X353216Y308333D01* +X353274Y308335D01* +X353354Y308361D01* +X353437Y308377D01* +X353489Y308404D01* +X353545Y308422D01* +X353601Y308462D01* +X353689Y308508D01* +X353762Y308577D01* +X353798Y308603D01* +X357401Y308603D01* +X357429Y308582D01* +X357469Y308540D01* +X357498Y308523D01* +X357499Y308522D01* +X357542Y308497D01* +X357609Y308446D01* +X357664Y308426D01* +X357714Y308396D01* +X357796Y308375D01* +X357875Y308345D01* +X357933Y308340D01* +X357990Y308326D01* +X358074Y308329D01* +X358158Y308321D01* +X358216Y308333D01* +X358274Y308335D01* +X358354Y308361D01* +X358437Y308377D01* +X358489Y308404D01* +X358545Y308422D01* +X358601Y308462D01* +X358689Y308508D01* +X358762Y308577D01* +X358798Y308603D01* +X362401Y308603D01* +X362429Y308582D01* +X362469Y308540D01* +X362498Y308523D01* +X362499Y308522D01* +X362542Y308497D01* +X362609Y308446D01* +X362664Y308426D01* +X362714Y308396D01* +X362796Y308375D01* +X362875Y308345D01* +X362933Y308340D01* +X362990Y308326D01* +X363074Y308329D01* +X363158Y308321D01* +X363216Y308333D01* +X363274Y308335D01* +X363354Y308361D01* +X363437Y308377D01* +X363489Y308404D01* +X363545Y308422D01* +X363601Y308462D01* +X363689Y308508D01* +X363762Y308577D01* +X363798Y308603D01* +X367401Y308603D01* +X367429Y308582D01* +X367469Y308540D01* +X367498Y308523D01* +X367499Y308522D01* +X367542Y308497D01* +X367609Y308446D01* +X367664Y308426D01* +X367714Y308396D01* +X367796Y308375D01* +X367875Y308345D01* +X367933Y308340D01* +X367990Y308326D01* +X368074Y308329D01* +X368158Y308321D01* +X368216Y308333D01* +X368274Y308335D01* +X368354Y308361D01* +X368437Y308377D01* +X368489Y308404D01* +X368545Y308422D01* +X368601Y308462D01* +X368689Y308508D01* +X368762Y308577D01* +X368798Y308603D01* +X371102Y308603D01* +X371160Y308611D01* +X371218Y308609D01* +X371300Y308631D01* +X371384Y308643D01* +X371437Y308666D01* +X371493Y308681D01* +X371566Y308724D01* +X371643Y308759D01* +X371688Y308797D01* +X371738Y308826D01* +X371796Y308888D01* +X371860Y308942D01* +X371892Y308991D01* +X371932Y309034D01* +X371971Y309109D01* +X372018Y309179D01* +X372035Y309235D01* +X372062Y309287D01* +X372073Y309355D01* +X372103Y309450D01* +X372106Y309550D01* +X372117Y309618D01* +X372117Y311921D01* +X372138Y311949D01* +X372180Y311989D01* +X372223Y312062D01* +X372274Y312129D01* +X372294Y312184D01* +X372324Y312234D01* +X372345Y312316D01* +X372375Y312395D01* +X372380Y312453D01* +X372394Y312510D01* +X372391Y312594D01* +X372399Y312678D01* +X372387Y312736D01* +X372385Y312794D01* +X372359Y312874D01* +X372343Y312957D01* +X372316Y313009D01* +X372298Y313065D01* +X372258Y313121D01* +X372212Y313209D01* +X372143Y313282D01* +X372117Y313318D01* +X372117Y316921D01* +X372138Y316949D01* +X372180Y316989D01* +X372223Y317062D01* +X372274Y317129D01* +X372294Y317184D01* +X372324Y317234D01* +X372345Y317316D01* +X372375Y317395D01* +X372380Y317453D01* +X372394Y317510D01* +X372391Y317594D01* +X372399Y317678D01* +X372387Y317736D01* +X372385Y317794D01* +X372359Y317874D01* +X372343Y317957D01* +X372316Y318009D01* +X372298Y318065D01* +X372258Y318121D01* +X372212Y318209D01* +X372143Y318282D01* +X372117Y318318D01* +X372117Y321921D01* +X372138Y321949D01* +X372180Y321989D01* +X372223Y322062D01* +X372274Y322129D01* +X372294Y322184D01* +X372324Y322234D01* +X372345Y322316D01* +X372375Y322395D01* +X372380Y322453D01* +X372394Y322510D01* +X372391Y322594D01* +X372399Y322678D01* +X372387Y322736D01* +X372385Y322794D01* +X372359Y322874D01* +X372343Y322957D01* +X372316Y323009D01* +X372298Y323065D01* +X372258Y323121D01* +X372212Y323209D01* +X372143Y323282D01* +X372117Y323318D01* +X372117Y326921D01* +X372138Y326949D01* +X372180Y326989D01* +X372223Y327062D01* +X372274Y327129D01* +X372294Y327184D01* +X372324Y327234D01* +X372345Y327316D01* +X372375Y327395D01* +X372380Y327453D01* +X372394Y327510D01* +X372391Y327594D01* +X372399Y327678D01* +X372387Y327736D01* +X372385Y327794D01* +X372359Y327874D01* +X372343Y327957D01* +X372318Y328004D01* +X372314Y328019D01* +X372310Y328025D01* +X372298Y328065D01* +X372258Y328121D01* +X372212Y328209D01* +X372183Y328239D01* +X372169Y328263D01* +X372130Y328300D01* +X372117Y328318D01* +X372117Y331921D01* +X372138Y331949D01* +X372180Y331989D01* +X372223Y332062D01* +X372274Y332129D01* +X372294Y332184D01* +X372324Y332234D01* +X372345Y332316D01* +X372375Y332395D01* +X372380Y332453D01* +X372394Y332510D01* +X372391Y332594D01* +X372399Y332678D01* +X372387Y332736D01* +X372385Y332794D01* +X372359Y332874D01* +X372343Y332957D01* +X372316Y333009D01* +X372298Y333065D01* +X372258Y333121D01* +X372212Y333209D01* +X372143Y333282D01* +X372117Y333318D01* +X372117Y336921D01* +X372138Y336949D01* +X372180Y336989D01* +X372223Y337062D01* +X372274Y337129D01* +X372294Y337184D01* +X372324Y337234D01* +X372345Y337316D01* +X372375Y337395D01* +X372380Y337453D01* +X372394Y337510D01* +X372391Y337594D01* +X372399Y337678D01* +X372387Y337736D01* +X372385Y337794D01* +X372359Y337874D01* +X372343Y337957D01* +X372316Y338009D01* +X372298Y338065D01* +X372258Y338121D01* +X372212Y338209D01* +X372143Y338282D01* +X372117Y338318D01* +X372117Y340622D01* +X372109Y340680D01* +X372111Y340738D01* +X372089Y340820D01* +X372077Y340904D01* +X372054Y340957D01* +X372039Y341013D01* +X371996Y341086D01* +X371961Y341163D01* +X371923Y341208D01* +X371894Y341258D01* +X371832Y341316D01* +X371778Y341380D01* +X371729Y341412D01* +X371686Y341452D01* +X371611Y341491D01* +X371541Y341538D01* +X371485Y341555D01* +X371433Y341582D01* +X371365Y341593D01* +X371270Y341623D01* +X371170Y341626D01* +X371102Y341637D01* +X368799Y341637D01* +X368771Y341658D01* +X368731Y341700D01* +X368658Y341743D01* +X368591Y341794D01* +X368536Y341814D01* +X368486Y341844D01* +X368404Y341865D01* +X368325Y341895D01* +X368267Y341900D01* +X368210Y341914D01* +X368126Y341911D01* +X368042Y341919D01* +X367984Y341907D01* +X367926Y341905D01* +X367846Y341879D01* +X367763Y341863D01* +X367711Y341836D01* +X367655Y341818D01* +X367599Y341778D01* +X367511Y341732D01* +X367438Y341663D01* +X367402Y341637D01* +X363799Y341637D01* +X363771Y341658D01* +X363731Y341700D01* +X363658Y341743D01* +X363591Y341794D01* +X363536Y341814D01* +X363486Y341844D01* +X363404Y341865D01* +X363325Y341895D01* +X363267Y341900D01* +X363210Y341914D01* +X363126Y341911D01* +X363042Y341919D01* +X362984Y341907D01* +X362926Y341905D01* +X362846Y341879D01* +X362763Y341863D01* +X362711Y341836D01* +X362655Y341818D01* +X362599Y341778D01* +X362511Y341732D01* +X362438Y341663D01* +X362402Y341637D01* +X358799Y341637D01* +X358771Y341658D01* +X358731Y341700D01* +X358658Y341743D01* +X358591Y341794D01* +X358536Y341814D01* +X358486Y341844D01* +X358404Y341865D01* +X358325Y341895D01* +X358267Y341900D01* +X358210Y341914D01* +X358126Y341911D01* +X358042Y341919D01* +X357984Y341907D01* +X357926Y341905D01* +X357846Y341879D01* +X357763Y341863D01* +X357711Y341836D01* +X357655Y341818D01* +X357599Y341778D01* +X357511Y341732D01* +X357438Y341663D01* +X357402Y341637D01* +X353799Y341637D01* +X353771Y341658D01* +X353731Y341700D01* +X353658Y341743D01* +X353591Y341794D01* +X353536Y341814D01* +X353486Y341844D01* +X353404Y341865D01* +X353325Y341895D01* +X353267Y341900D01* +X353210Y341914D01* +X353126Y341911D01* +X353042Y341919D01* +X352984Y341907D01* +X352926Y341905D01* +X352846Y341879D01* +X352763Y341863D01* +X352711Y341836D01* +X352655Y341818D01* +X352599Y341778D01* +X352511Y341732D01* +X352438Y341663D01* +X352402Y341637D01* +X348799Y341637D01* +X348771Y341658D01* +X348731Y341700D01* +X348658Y341743D01* +X348591Y341794D01* +X348536Y341814D01* +X348486Y341844D01* +X348404Y341865D01* +X348325Y341895D01* +X348267Y341900D01* +X348210Y341914D01* +X348126Y341911D01* +X348042Y341919D01* +X347984Y341907D01* +X347926Y341905D01* +X347846Y341879D01* +X347763Y341863D01* +X347711Y341836D01* +X347655Y341818D01* +X347599Y341778D01* +X347511Y341732D01* +X347438Y341663D01* +X347402Y341637D01* +X343799Y341637D01* +X343771Y341658D01* +X343731Y341700D01* +X343658Y341743D01* +X343591Y341794D01* +X343536Y341814D01* +X343486Y341844D01* +X343404Y341865D01* +X343325Y341895D01* +X343267Y341900D01* +X343210Y341914D01* +X343126Y341911D01* +X343042Y341919D01* +X342984Y341907D01* +X342926Y341905D01* +X342846Y341879D01* +X342763Y341863D01* +X342711Y341836D01* +X342655Y341818D01* +X342599Y341778D01* +X342511Y341732D01* +X342438Y341663D01* +X342402Y341637D01* +X340098Y341637D01* +X340040Y341629D01* +X339982Y341631D01* +X339900Y341609D01* +X339816Y341597D01* +X339763Y341574D01* +X339707Y341559D01* +X339634Y341516D01* +X339557Y341481D01* +X339512Y341443D01* +X339462Y341414D01* +X339404Y341352D01* +X339340Y341298D01* +X339308Y341249D01* +X339268Y341206D01* +X339229Y341131D01* +X339182Y341061D01* +X339165Y341005D01* +X339138Y340953D01* +X339127Y340885D01* +X339097Y340790D01* +X339094Y340690D01* +X339083Y340622D01* +X339083Y338319D01* +X339062Y338291D01* +X339020Y338251D01* +X338977Y338178D01* +X338926Y338111D01* +X338905Y338056D01* +X338876Y338006D01* +X338855Y337924D01* +X338825Y337845D01* +X338820Y337787D01* +X338806Y337730D01* +X338808Y337646D01* +X338802Y337562D01* +X338813Y337504D01* +X338815Y337446D01* +X338841Y337366D01* +X338857Y337283D01* +X338884Y337231D01* +X338902Y337175D01* +X338942Y337119D01* +X338988Y337031D01* +X339057Y336958D01* +X339083Y336922D01* +X339083Y333323D01* +X337497Y331737D01* +X326503Y331737D01* +X324917Y333323D01* +X324917Y336921D01* +X324938Y336949D01* +X324980Y336989D01* +X325023Y337062D01* +X325074Y337129D01* +X325094Y337184D01* +X325124Y337234D01* +X325145Y337316D01* +X325175Y337395D01* +X325180Y337453D01* +X325194Y337510D01* +X325191Y337594D01* +X325199Y337678D01* +X325187Y337736D01* +X325185Y337794D01* +X325159Y337874D01* +X325143Y337957D01* +X325116Y338009D01* +X325098Y338065D01* +X325058Y338121D01* +X325012Y338209D01* +X324943Y338282D01* +X324917Y338318D01* +X324917Y341917D01* +X326503Y343503D01* +X336202Y343503D01* +X336260Y343511D01* +X336318Y343509D01* +X336400Y343531D01* +X336484Y343543D01* +X336537Y343566D01* +X336593Y343581D01* +X336666Y343624D01* +X336743Y343659D01* +X336788Y343697D01* +X336838Y343726D01* +X336896Y343788D01* +X336960Y343842D01* +X336992Y343891D01* +X337032Y343934D01* +X337071Y344009D01* +X337118Y344079D01* +X337135Y344135D01* +X337162Y344187D01* +X337173Y344255D01* +X337203Y344350D01* +X337206Y344450D01* +X337217Y344518D01* +X337217Y354217D01* +X337254Y354253D01* +X337306Y354323D01* +X337366Y354387D01* +X337392Y354436D01* +X337425Y354480D01* +X337456Y354562D01* +X337496Y354640D01* +X337504Y354688D01* +X337526Y354746D01* +X337536Y354868D01* +X337537Y354871D01* +X337538Y354886D01* +X337538Y354894D01* +X337551Y354971D01* +X337551Y357103D01* +X354794Y374345D01* +X355953Y375504D01* +X355970Y375528D01* +X355993Y375547D01* +X356055Y375641D01* +X356123Y375731D01* +X356134Y375759D01* +X356150Y375783D01* +X356184Y375891D01* +X356225Y375997D01* +X356227Y376026D01* +X356236Y376054D01* +X356239Y376168D01* +X356248Y376280D01* +X356243Y376309D01* +X356243Y376338D01* +X356215Y376448D01* +X356192Y376559D01* +X356179Y376585D01* +X356171Y376613D01* +X356114Y376711D01* +X356061Y376811D01* +X356041Y376833D01* +X356026Y376858D01* +X355944Y376935D01* +X355866Y377017D01* +X355840Y377032D01* +X355819Y377052D01* +X355718Y377104D01* +X355620Y377161D01* +X355592Y377168D01* +X355566Y377182D01* +X355488Y377195D01* +X355345Y377231D01* +X355282Y377229D01* +X355235Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X378813Y3763D01* +X378842Y3767D01* +X378871Y3764D01* +X378982Y3787D01* +X379095Y3803D01* +X379121Y3815D01* +X379150Y3820D01* +X379251Y3873D01* +X379354Y3919D01* +X379376Y3938D01* +X379402Y3951D01* +X379485Y4029D01* +X379571Y4102D01* +X379587Y4127D01* +X379609Y4147D01* +X379666Y4245D01* +X379729Y4339D01* +X379737Y4367D01* +X379752Y4392D01* +X379780Y4502D01* +X379814Y4610D01* +X379815Y4640D01* +X379822Y4668D01* +X379819Y4781D01* +X379822Y4894D01* +X379814Y4923D01* +X379813Y4952D01* +X379778Y5060D01* +X379750Y5169D01* +X379735Y5195D01* +X379726Y5223D01* +X379680Y5287D01* +X379605Y5414D01* +X379559Y5457D01* +X379531Y5496D01* +X378967Y6060D01* +X378632Y6639D01* +X378459Y7286D01* +X378459Y24639D01* +X399034Y24639D01* +X399092Y24647D01* +X399150Y24645D01* +X399232Y24667D01* +X399315Y24679D01* +X399369Y24703D01* +X399425Y24717D01* +X399498Y24760D01* +X399575Y24795D01* +X399619Y24833D01* +X399670Y24863D01* +X399727Y24924D01* +X399792Y24979D01* +X399824Y25027D01* +X399864Y25070D01* +X399903Y25145D01* +X399949Y25215D01* +X399967Y25271D01* +X399994Y25323D01* +X400005Y25391D01* +X400035Y25486D01* +X400038Y25586D01* +X400049Y25654D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y25654D01* +X400059Y25596D01* +X400058Y25538D01* +X400079Y25456D01* +X400091Y25373D01* +X400115Y25319D01* +X400129Y25263D01* +X400172Y25190D01* +X400207Y25113D01* +X400245Y25068D01* +X400275Y25018D01* +X400336Y24960D01* +X400391Y24896D01* +X400439Y24864D01* +X400482Y24824D01* +X400557Y24785D01* +X400627Y24739D01* +X400683Y24721D01* +X400735Y24694D01* +X400803Y24683D01* +X400898Y24653D01* +X400998Y24650D01* +X401066Y24639D01* +X421641Y24639D01* +X421641Y7286D01* +X421468Y6639D01* +X421133Y6060D01* +X420569Y5496D01* +X420551Y5472D01* +X420529Y5453D01* +X420466Y5359D01* +X420398Y5269D01* +X420388Y5241D01* +X420371Y5217D01* +X420337Y5109D01* +X420297Y5003D01* +X420294Y4974D01* +X420286Y4946D01* +X420283Y4832D01* +X420273Y4720D01* +X420279Y4691D01* +X420278Y4662D01* +X420307Y4552D01* +X420329Y4441D01* +X420343Y4415D01* +X420350Y4387D01* +X420408Y4289D01* +X420460Y4189D01* +X420480Y4167D01* +X420495Y4142D01* +X420578Y4065D01* +X420656Y3983D01* +X420681Y3968D01* +X420703Y3948D01* +X420804Y3896D01* +X420901Y3839D01* +X420930Y3832D01* +X420956Y3818D01* +X421033Y3805D01* +X421177Y3769D01* +X421239Y3771D01* +X421287Y3763D01* +X436880Y3763D01* +X436938Y3771D01* +X436996Y3769D01* +X437078Y3791D01* +X437162Y3803D01* +X437215Y3826D01* +X437271Y3841D01* +X437344Y3884D01* +X437421Y3919D01* +X437466Y3957D01* +X437516Y3986D01* +X437574Y4048D01* +X437638Y4102D01* +X437670Y4151D01* +X437710Y4194D01* +X437749Y4269D01* +X437796Y4339D01* +X437813Y4395D01* +X437840Y4447D01* +X437851Y4515D01* +X437881Y4610D01* +X437884Y4710D01* +X437895Y4778D01* +X437895Y84328D01* +X437887Y84386D01* +X437889Y84444D01* +X437867Y84526D01* +X437855Y84610D01* +X437832Y84663D01* +X437817Y84719D01* +X437774Y84792D01* +X437739Y84869D01* +X437701Y84914D01* +X437672Y84964D01* +X437610Y85022D01* +X437556Y85086D01* +X437507Y85118D01* +X437464Y85158D01* +X437389Y85197D01* +X437319Y85244D01* +X437263Y85261D01* +X437211Y85288D01* +X437143Y85299D01* +X437048Y85329D01* +X436948Y85332D01* +X436880Y85343D01* +X422148Y85343D01* +X422090Y85335D01* +X422032Y85337D01* +X421950Y85315D01* +X421866Y85303D01* +X421813Y85280D01* +X421757Y85265D01* +X421684Y85222D01* +X421607Y85187D01* +X421562Y85149D01* +X421512Y85120D01* +X421454Y85058D01* +X421390Y85004D01* +X421358Y84955D01* +X421318Y84912D01* +X421279Y84837D01* +X421232Y84767D01* +X421215Y84711D01* +X421188Y84659D01* +X421177Y84591D01* +X421147Y84496D01* +X421144Y84396D01* +X421133Y84328D01* +X421133Y70278D01* +X419942Y69087D01* +X380158Y69087D01* +X378967Y70278D01* +X378967Y85090D01* +X378959Y85148D01* +X378961Y85206D01* +X378939Y85288D01* +X378927Y85372D01* +X378904Y85425D01* +X378889Y85481D01* +X378846Y85554D01* +X378811Y85631D01* +X378773Y85676D01* +X378744Y85726D01* +X378682Y85784D01* +X378628Y85848D01* +X378579Y85880D01* +X378536Y85920D01* +X378461Y85959D01* +X378391Y86006D01* +X378335Y86023D01* +X378283Y86050D01* +X378215Y86061D01* +X378120Y86091D01* +X378020Y86094D01* +X377952Y86105D01* +X369134Y86105D01* +X369048Y86093D01* +X368960Y86090D01* +X368908Y86073D01* +X368853Y86065D01* +X368773Y86030D01* +X368690Y86003D01* +X368650Y85975D01* +X368593Y85949D01* +X368480Y85853D01* +X368416Y85808D01* +X359962Y77354D01* +X359910Y77284D01* +X359850Y77220D01* +X359824Y77171D01* +X359791Y77126D01* +X359760Y77045D01* +X359720Y76967D01* +X359712Y76919D01* +X359690Y76861D01* +X359678Y76713D01* +X359665Y76636D01* +X359665Y74968D01* +X359673Y74910D01* +X359671Y74852D01* +X359693Y74770D01* +X359705Y74686D01* +X359728Y74633D01* +X359743Y74577D01* +X359786Y74504D01* +X359821Y74427D01* +X359859Y74382D01* +X359888Y74332D01* +X359950Y74274D01* +X360004Y74210D01* +X360053Y74178D01* +X360096Y74138D01* +X360171Y74099D01* +X360241Y74052D01* +X360297Y74035D01* +X360349Y74008D01* +X360364Y74006D01* +X362633Y71737D01* +X362633Y61103D01* +X360929Y59400D01* +X360900Y59361D01* +X360864Y59328D01* +X360815Y59248D01* +X360758Y59173D01* +X360741Y59127D01* +X360716Y59085D01* +X360691Y58995D01* +X360657Y58907D01* +X360653Y58858D01* +X360640Y58811D01* +X360641Y58717D01* +X360634Y58624D01* +X360643Y58576D01* +X360644Y58527D01* +X360671Y58437D01* +X360690Y58345D01* +X360712Y58302D01* +X360726Y58255D01* +X360777Y58176D01* +X360821Y58093D01* +X360854Y58057D01* +X360881Y58016D01* +X360938Y57969D01* +X361016Y57886D01* +X361091Y57843D01* +X361140Y57803D01* +X361485Y57603D01* +X362283Y56805D01* +X362848Y55826D01* +X363141Y54735D01* +X363141Y52451D01* +X356616Y52451D01* +X356558Y52443D01* +X356500Y52444D01* +X356418Y52423D01* +X356335Y52411D01* +X356281Y52387D01* +X356225Y52373D01* +X356152Y52330D01* +X356075Y52295D01* +X356031Y52257D01* +X355980Y52227D01* +X355923Y52166D01* +X355858Y52111D01* +X355826Y52063D01* +X355786Y52020D01* +X355747Y51945D01* +X355701Y51875D01* +X355683Y51819D01* +X355656Y51767D01* +X355645Y51699D01* +X355615Y51604D01* +X355612Y51504D01* +X355601Y51436D01* +X355601Y50419D01* +X355599Y50419D01* +X355599Y51436D01* +X355591Y51494D01* +X355592Y51552D01* +X355571Y51634D01* +X355559Y51717D01* +X355535Y51771D01* +X355521Y51827D01* +X355478Y51900D01* +X355443Y51977D01* +X355405Y52021D01* +X355375Y52072D01* +X355314Y52129D01* +X355259Y52194D01* +X355211Y52226D01* +X355168Y52266D01* +X355093Y52305D01* +X355023Y52351D01* +X354967Y52369D01* +X354915Y52396D01* +X354847Y52407D01* +X354752Y52437D01* +X354652Y52440D01* +X354584Y52451D01* +X348059Y52451D01* +X348059Y54735D01* +X348352Y55826D01* +X348917Y56805D01* +X349715Y57603D01* +X350060Y57803D01* +X350099Y57833D01* +X350142Y57855D01* +X350210Y57920D01* +X350284Y57978D01* +X350313Y58017D01* +X350348Y58051D01* +X350396Y58132D01* +X350451Y58208D01* +X350467Y58254D01* +X350492Y58296D01* +X350515Y58387D01* +X350547Y58476D01* +X350550Y58525D01* +X350562Y58572D01* +X350559Y58666D01* +X350565Y58759D01* +X350555Y58807D01* +X350553Y58856D01* +X350524Y58945D01* +X350504Y59037D01* +X350481Y59080D01* +X350466Y59126D01* +X350422Y59187D01* +X350368Y59287D01* +X350307Y59349D01* +X350271Y59400D01* +X348567Y61103D01* +X348567Y71737D01* +X350840Y74010D01* +X350855Y74016D01* +X350911Y74031D01* +X350984Y74074D01* +X351061Y74109D01* +X351106Y74147D01* +X351156Y74176D01* +X351214Y74238D01* +X351278Y74292D01* +X351310Y74341D01* +X351350Y74384D01* +X351389Y74459D01* +X351436Y74529D01* +X351453Y74585D01* +X351480Y74637D01* +X351491Y74705D01* +X351521Y74800D01* +X351524Y74900D01* +X351535Y74968D01* +X351535Y80424D01* +X365346Y94235D01* +X377952Y94235D01* +X378010Y94243D01* +X378068Y94241D01* +X378150Y94263D01* +X378234Y94275D01* +X378287Y94298D01* +X378343Y94313D01* +X378416Y94356D01* +X378493Y94391D01* +X378538Y94429D01* +X378588Y94458D01* +X378646Y94520D01* +X378710Y94574D01* +X378742Y94623D01* +X378782Y94666D01* +X378821Y94741D01* +X378868Y94811D01* +X378885Y94867D01* +X378912Y94919D01* +X378923Y94987D01* +X378953Y95082D01* +X378956Y95182D01* +X378967Y95250D01* +X378967Y110062D01* +X380158Y111253D01* +X419942Y111253D01* +X421133Y110062D01* +X421133Y98552D01* +X421141Y98494D01* +X421139Y98436D01* +X421161Y98354D01* +X421173Y98270D01* +X421196Y98217D01* +X421211Y98161D01* +X421254Y98088D01* +X421289Y98011D01* +X421327Y97966D01* +X421356Y97916D01* +X421418Y97858D01* +X421472Y97794D01* +X421521Y97762D01* +X421564Y97722D01* +X421639Y97683D01* +X421709Y97636D01* +X421765Y97619D01* +X421817Y97592D01* +X421885Y97581D01* +X421980Y97551D01* +X422080Y97548D01* +X422148Y97537D01* +X461494Y97537D01* +X461581Y97549D01* +G37* +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X901395Y308355D01* +X901366Y308351D01* +X901337Y308354D01* +X901226Y308331D01* +X901114Y308315D01* +X901087Y308303D01* +X901058Y308298D01* +X900958Y308246D01* +X900854Y308199D01* +X900832Y308180D01* +X900806Y308167D01* +X900724Y308089D01* +X900637Y308016D01* +X900621Y307991D01* +X900600Y307971D01* +X900543Y307873D01* +X900480Y307779D01* +X900471Y307751D01* +X900456Y307726D01* +X900428Y307616D01* +X900394Y307508D01* +X900393Y307478D01* +X900386Y307450D01* +X900390Y307337D01* +X900387Y307224D01* +X900394Y307195D01* +X900395Y307166D01* +X900430Y307058D01* +X900433Y307048D01* +X900433Y287053D01* +X897807Y284427D01* +X895464Y284427D01* +X895406Y284419D01* +X895348Y284421D01* +X895266Y284399D01* +X895182Y284387D01* +X895129Y284364D01* +X895073Y284349D01* +X895000Y284306D01* +X894923Y284271D01* +X894878Y284233D01* +X894828Y284204D01* +X894770Y284142D01* +X894706Y284088D01* +X894674Y284039D01* +X894634Y283996D01* +X894595Y283921D01* +X894548Y283851D01* +X894531Y283795D01* +X894504Y283743D01* +X894493Y283675D01* +X894463Y283580D01* +X894460Y283480D01* +X894449Y283412D01* +X894449Y278214D01* +X894457Y278156D01* +X894455Y278098D01* +X894477Y278016D01* +X894489Y277932D01* +X894512Y277879D01* +X894527Y277823D01* +X894570Y277750D01* +X894605Y277673D01* +X894643Y277628D01* +X894672Y277578D01* +X894734Y277520D01* +X894788Y277456D01* +X894837Y277424D01* +X894880Y277384D01* +X894955Y277345D01* +X895025Y277298D01* +X895081Y277281D01* +X895133Y277254D01* +X895201Y277243D01* +X895296Y277213D01* +X895396Y277210D01* +X895464Y277199D01* +X987707Y277199D01* +X987794Y277211D01* +X987881Y277214D01* +X987934Y277231D01* +X987989Y277239D01* +X988069Y277274D01* +X988152Y277301D01* +X988191Y277329D01* +X988248Y277355D01* +X988361Y277451D01* +X988425Y277496D01* +X989862Y278933D01* +X996418Y278933D01* +X997855Y277496D01* +X997925Y277444D01* +X997988Y277384D01* +X998038Y277358D01* +X998082Y277325D01* +X998164Y277294D01* +X998242Y277254D01* +X998289Y277246D01* +X998348Y277224D01* +X998495Y277212D01* +X998573Y277199D01* +X1000407Y277199D01* +X1000494Y277211D01* +X1000581Y277214D01* +X1000634Y277231D01* +X1000689Y277239D01* +X1000769Y277274D01* +X1000852Y277301D01* +X1000891Y277329D01* +X1000948Y277355D01* +X1001061Y277451D01* +X1001125Y277496D01* +X1002311Y278682D01* +X1002346Y278729D01* +X1002389Y278769D01* +X1002431Y278842D01* +X1002482Y278909D01* +X1002503Y278964D01* +X1002532Y279014D01* +X1002553Y279096D01* +X1002583Y279175D01* +X1002588Y279233D01* +X1002603Y279290D01* +X1002600Y279374D01* +X1002607Y279458D01* +X1002595Y279516D01* +X1002594Y279574D01* +X1002568Y279654D01* +X1002551Y279737D01* +X1002524Y279789D01* +X1002506Y279845D01* +X1002466Y279901D01* +X1002420Y279989D01* +X1002351Y280062D01* +X1002311Y280118D01* +X1000807Y281622D01* +X1000807Y287678D01* +X1002135Y289006D01* +X1002170Y289052D01* +X1002212Y289093D01* +X1002255Y289166D01* +X1002306Y289233D01* +X1002327Y289288D01* +X1002356Y289338D01* +X1002377Y289420D01* +X1002407Y289499D01* +X1002412Y289557D01* +X1002426Y289614D01* +X1002424Y289698D01* +X1002431Y289782D01* +X1002419Y289839D01* +X1002417Y289898D01* +X1002391Y289978D01* +X1002375Y290061D01* +X1002348Y290113D01* +X1002330Y290168D01* +X1002290Y290225D01* +X1002244Y290313D01* +X1002175Y290385D01* +X1002135Y290442D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009545Y290442D01* +X1009510Y290395D01* +X1009468Y290355D01* +X1009425Y290282D01* +X1009374Y290214D01* +X1009353Y290160D01* +X1009324Y290109D01* +X1009303Y290028D01* +X1009273Y289949D01* +X1009268Y289890D01* +X1009254Y289834D01* +X1009256Y289749D01* +X1009249Y289665D01* +X1009261Y289608D01* +X1009263Y289550D01* +X1009289Y289469D01* +X1009305Y289387D01* +X1009332Y289335D01* +X1009350Y289279D01* +X1009390Y289223D01* +X1009436Y289134D01* +X1009505Y289062D01* +X1009545Y289006D01* +X1010555Y287996D01* +X1010625Y287944D01* +X1010689Y287884D01* +X1010738Y287858D01* +X1010782Y287825D01* +X1010864Y287794D01* +X1010942Y287754D01* +X1010989Y287746D01* +X1011048Y287724D01* +X1011195Y287712D01* +X1011273Y287699D01* +X1013032Y287699D01* +X1013090Y287707D01* +X1013148Y287705D01* +X1013230Y287727D01* +X1013314Y287739D01* +X1013367Y287762D01* +X1013423Y287777D01* +X1013496Y287820D01* +X1013573Y287855D01* +X1013618Y287893D01* +X1013668Y287922D01* +X1013726Y287984D01* +X1013790Y288038D01* +X1013822Y288087D01* +X1013862Y288130D01* +X1013901Y288205D01* +X1013948Y288275D01* +X1013965Y288331D01* +X1013992Y288383D01* +X1014003Y288451D01* +X1014033Y288546D01* +X1014036Y288646D01* +X1014047Y288714D01* +X1014047Y291957D01* +X1016263Y294173D01* +X1025897Y294173D01* +X1027014Y293055D01* +X1027038Y293038D01* +X1027057Y293015D01* +X1027151Y292953D01* +X1027241Y292885D01* +X1027269Y292874D01* +X1027293Y292858D01* +X1027401Y292824D01* +X1027507Y292783D01* +X1027536Y292781D01* +X1027564Y292772D01* +X1027678Y292769D01* +X1027790Y292760D01* +X1027819Y292766D01* +X1027848Y292765D01* +X1027958Y292793D01* +X1028069Y292816D01* +X1028095Y292829D01* +X1028123Y292837D01* +X1028221Y292894D01* +X1028321Y292947D01* +X1028343Y292967D01* +X1028368Y292982D01* +X1028445Y293064D01* +X1028527Y293142D01* +X1028542Y293168D01* +X1028562Y293189D01* +X1028614Y293290D01* +X1028671Y293388D01* +X1028678Y293416D01* +X1028692Y293442D01* +X1028705Y293520D01* +X1028741Y293663D01* +X1028739Y293726D01* +X1028747Y293773D01* +X1028747Y294958D01* +X1030502Y296713D01* +X1037058Y296713D01* +X1039065Y294706D01* +X1039135Y294654D01* +X1039198Y294594D01* +X1039248Y294568D01* +X1039292Y294535D01* +X1039374Y294504D01* +X1039452Y294464D01* +X1039499Y294456D01* +X1039558Y294434D01* +X1039705Y294422D01* +X1039783Y294409D01* +X1039872Y294409D01* +X1039930Y294417D01* +X1039988Y294415D01* +X1040070Y294437D01* +X1040154Y294449D01* +X1040207Y294472D01* +X1040263Y294487D01* +X1040336Y294530D01* +X1040413Y294565D01* +X1040458Y294603D01* +X1040508Y294632D01* +X1040566Y294694D01* +X1040630Y294748D01* +X1040662Y294797D01* +X1040702Y294840D01* +X1040741Y294915D01* +X1040788Y294985D01* +X1040805Y295041D01* +X1040832Y295093D01* +X1040843Y295161D01* +X1040873Y295256D01* +X1040876Y295356D01* +X1040887Y295424D01* +X1040887Y295779D01* +X1043001Y297893D01* +X1062839Y297893D01* +X1064953Y295779D01* +X1064953Y286941D01* +X1063740Y285728D01* +X1063705Y285681D01* +X1063662Y285641D01* +X1063620Y285568D01* +X1063569Y285501D01* +X1063548Y285446D01* +X1063519Y285396D01* +X1063498Y285314D01* +X1063468Y285235D01* +X1063463Y285177D01* +X1063449Y285120D01* +X1063451Y285036D01* +X1063444Y284952D01* +X1063456Y284894D01* +X1063458Y284836D01* +X1063484Y284756D01* +X1063500Y284673D01* +X1063527Y284621D01* +X1063545Y284565D01* +X1063585Y284509D01* +X1063631Y284421D01* +X1063676Y284373D01* +X1063689Y284351D01* +X1063715Y284327D01* +X1063740Y284292D01* +X1064953Y283079D01* +X1064953Y274241D01* +X1063740Y273028D01* +X1063705Y272981D01* +X1063662Y272941D01* +X1063620Y272868D01* +X1063569Y272801D01* +X1063548Y272746D01* +X1063519Y272696D01* +X1063498Y272614D01* +X1063468Y272535D01* +X1063463Y272477D01* +X1063449Y272420D01* +X1063451Y272336D01* +X1063444Y272252D01* +X1063456Y272194D01* +X1063458Y272136D01* +X1063484Y272056D01* +X1063500Y271973D01* +X1063527Y271921D01* +X1063545Y271865D01* +X1063585Y271809D01* +X1063631Y271721D01* +X1063700Y271648D01* +X1063740Y271592D01* +X1064953Y270379D01* +X1064953Y269952D01* +X1064961Y269894D01* +X1064959Y269836D01* +X1064981Y269754D01* +X1064993Y269670D01* +X1065016Y269617D01* +X1065031Y269561D01* +X1065074Y269488D01* +X1065109Y269411D01* +X1065147Y269366D01* +X1065176Y269316D01* +X1065238Y269258D01* +X1065292Y269194D01* +X1065341Y269162D01* +X1065384Y269122D01* +X1065459Y269083D01* +X1065529Y269036D01* +X1065585Y269019D01* +X1065637Y268992D01* +X1065705Y268981D01* +X1065800Y268951D01* +X1065900Y268948D01* +X1065968Y268937D01* +X1067985Y268937D01* +X1092709Y244213D01* +X1092709Y157938D01* +X1074028Y139257D01* +X1073976Y139187D01* +X1073916Y139123D01* +X1073890Y139074D01* +X1073857Y139030D01* +X1073826Y138948D01* +X1073786Y138870D01* +X1073778Y138823D01* +X1073756Y138764D01* +X1073744Y138616D01* +X1073731Y138539D01* +X1073731Y106785D01* +X1060587Y93641D01* +X1056993Y93641D01* +X1056906Y93629D01* +X1056819Y93626D01* +X1056766Y93609D01* +X1056711Y93601D01* +X1056631Y93566D01* +X1056548Y93539D01* +X1056509Y93511D01* +X1056452Y93485D01* +X1056339Y93389D01* +X1056275Y93344D01* +X1054838Y91907D01* +X1048282Y91907D01* +X1047198Y92991D01* +X1047151Y93026D01* +X1047111Y93069D01* +X1047038Y93111D01* +X1046971Y93162D01* +X1046916Y93183D01* +X1046866Y93212D01* +X1046784Y93233D01* +X1046705Y93263D01* +X1046647Y93268D01* +X1046590Y93283D01* +X1046506Y93280D01* +X1046422Y93287D01* +X1046364Y93275D01* +X1046306Y93274D01* +X1046226Y93248D01* +X1046143Y93231D01* +X1046091Y93204D01* +X1046035Y93186D01* +X1045979Y93146D01* +X1045891Y93100D01* +X1045818Y93031D01* +X1045762Y92991D01* +X1044678Y91907D01* +X1038122Y91907D01* +X1037038Y92991D01* +X1036991Y93026D01* +X1036951Y93069D01* +X1036878Y93111D01* +X1036811Y93162D01* +X1036756Y93183D01* +X1036706Y93212D01* +X1036624Y93233D01* +X1036545Y93263D01* +X1036487Y93268D01* +X1036430Y93283D01* +X1036346Y93280D01* +X1036262Y93287D01* +X1036204Y93275D01* +X1036146Y93274D01* +X1036066Y93248D01* +X1035983Y93231D01* +X1035931Y93204D01* +X1035875Y93186D01* +X1035819Y93146D01* +X1035731Y93100D01* +X1035658Y93031D01* +X1035602Y92991D01* +X1034769Y92158D01* +X1034734Y92111D01* +X1034691Y92071D01* +X1034649Y91998D01* +X1034598Y91931D01* +X1034577Y91876D01* +X1034548Y91826D01* +X1034527Y91744D01* +X1034497Y91665D01* +X1034492Y91607D01* +X1034477Y91550D01* +X1034480Y91466D01* +X1034473Y91382D01* +X1034485Y91324D01* +X1034486Y91266D01* +X1034512Y91186D01* +X1034529Y91103D01* +X1034556Y91051D01* +X1034574Y90995D01* +X1034614Y90939D01* +X1034660Y90851D01* +X1034729Y90778D01* +X1034769Y90722D01* +X1036273Y89218D01* +X1036273Y83162D01* +X1035602Y82491D01* +X1035550Y82421D01* +X1035490Y82358D01* +X1035464Y82308D01* +X1035431Y82264D01* +X1035400Y82182D01* +X1035360Y82104D01* +X1035352Y82057D01* +X1035330Y81998D01* +X1035318Y81851D01* +X1035305Y81773D01* +X1035305Y69436D01* +X1027844Y61975D01* +X1024048Y61975D01* +X1023990Y61967D01* +X1023932Y61969D01* +X1023850Y61947D01* +X1023766Y61935D01* +X1023713Y61912D01* +X1023657Y61897D01* +X1023584Y61854D01* +X1023507Y61819D01* +X1023462Y61781D01* +X1023412Y61752D01* +X1023354Y61690D01* +X1023290Y61636D01* +X1023258Y61587D01* +X1023218Y61544D01* +X1023179Y61469D01* +X1023132Y61399D01* +X1023115Y61343D01* +X1023088Y61291D01* +X1023077Y61223D01* +X1023047Y61128D01* +X1023046Y61117D01* +X1020817Y58887D01* +X1011183Y58887D01* +X1008967Y61103D01* +X1008967Y71737D01* +X1011123Y73893D01* +X1011158Y73939D01* +X1011201Y73980D01* +X1011243Y74052D01* +X1011294Y74120D01* +X1011315Y74175D01* +X1011344Y74225D01* +X1011365Y74307D01* +X1011395Y74386D01* +X1011400Y74444D01* +X1011414Y74500D01* +X1011412Y74585D01* +X1011419Y74669D01* +X1011407Y74726D01* +X1011405Y74785D01* +X1011380Y74865D01* +X1011363Y74948D01* +X1011336Y74999D01* +X1011318Y75055D01* +X1011278Y75111D01* +X1011232Y75200D01* +X1011163Y75272D01* +X1011123Y75328D01* +X1000644Y85808D01* +X1000574Y85860D01* +X1000510Y85920D01* +X1000461Y85946D01* +X1000416Y85979D01* +X1000335Y86010D01* +X1000257Y86050D01* +X1000209Y86058D01* +X1000151Y86080D01* +X1000003Y86092D01* +X999926Y86105D01* +X993648Y86105D01* +X993590Y86097D01* +X993532Y86099D01* +X993450Y86077D01* +X993366Y86065D01* +X993313Y86042D01* +X993257Y86027D01* +X993184Y85984D01* +X993107Y85949D01* +X993062Y85911D01* +X993012Y85882D01* +X992954Y85820D01* +X992890Y85766D01* +X992858Y85717D01* +X992818Y85674D01* +X992779Y85599D01* +X992732Y85529D01* +X992715Y85473D01* +X992688Y85421D01* +X992677Y85353D01* +X992647Y85258D01* +X992644Y85158D01* +X992633Y85090D01* +X992633Y70278D01* +X991442Y69087D01* +X951658Y69087D01* +X950467Y70278D01* +X950467Y110062D01* +X951658Y111253D01* +X991442Y111253D01* +X992633Y110062D01* +X992633Y95250D01* +X992641Y95192D01* +X992639Y95134D01* +X992661Y95052D01* +X992673Y94968D01* +X992696Y94915D01* +X992711Y94859D01* +X992754Y94786D01* +X992789Y94709D01* +X992827Y94664D01* +X992856Y94614D01* +X992918Y94556D01* +X992972Y94492D01* +X993021Y94460D01* +X993064Y94420D01* +X993139Y94381D01* +X993209Y94334D01* +X993265Y94317D01* +X993317Y94290D01* +X993385Y94279D01* +X993480Y94249D01* +X993580Y94246D01* +X993648Y94235D01* +X1003714Y94235D01* +X1020065Y77884D01* +X1020065Y74968D01* +X1020073Y74910D01* +X1020071Y74852D01* +X1020093Y74770D01* +X1020105Y74686D01* +X1020128Y74633D01* +X1020143Y74577D01* +X1020186Y74504D01* +X1020221Y74427D01* +X1020259Y74382D01* +X1020288Y74332D01* +X1020350Y74274D01* +X1020404Y74210D01* +X1020453Y74178D01* +X1020496Y74138D01* +X1020571Y74099D01* +X1020641Y74052D01* +X1020697Y74035D01* +X1020749Y74008D01* +X1020764Y74006D01* +X1023033Y71737D01* +X1023033Y71120D01* +X1023041Y71062D01* +X1023039Y71004D01* +X1023061Y70922D01* +X1023073Y70838D01* +X1023096Y70785D01* +X1023111Y70729D01* +X1023154Y70656D01* +X1023189Y70579D01* +X1023227Y70534D01* +X1023256Y70484D01* +X1023318Y70426D01* +X1023372Y70362D01* +X1023418Y70332D01* +X1023425Y70325D01* +X1023429Y70322D01* +X1023464Y70290D01* +X1023539Y70251D01* +X1023609Y70204D01* +X1023654Y70190D01* +X1023670Y70181D01* +X1023683Y70178D01* +X1023717Y70160D01* +X1023785Y70149D01* +X1023880Y70119D01* +X1023918Y70118D01* +X1023946Y70111D01* +X1024002Y70113D01* +X1024048Y70105D01* +X1024056Y70105D01* +X1024112Y70113D01* +X1024164Y70111D01* +X1024192Y70119D01* +X1024230Y70120D01* +X1024282Y70137D01* +X1024337Y70145D01* +X1024402Y70173D01* +X1024439Y70183D01* +X1024455Y70193D01* +X1024500Y70207D01* +X1024540Y70235D01* +X1024597Y70261D01* +X1024660Y70314D01* +X1024684Y70328D01* +X1024711Y70357D01* +X1024774Y70402D01* +X1026878Y72506D01* +X1026930Y72576D01* +X1026990Y72640D01* +X1027016Y72689D01* +X1027049Y72734D01* +X1027080Y72815D01* +X1027120Y72893D01* +X1027128Y72941D01* +X1027150Y72999D01* +X1027162Y73147D01* +X1027175Y73224D01* +X1027175Y81773D01* +X1027163Y81860D01* +X1027160Y81947D01* +X1027143Y82000D01* +X1027135Y82055D01* +X1027100Y82135D01* +X1027073Y82218D01* +X1027045Y82257D01* +X1027019Y82314D01* +X1026923Y82427D01* +X1026878Y82491D01* +X1026207Y83162D01* +X1026207Y89218D01* +X1027711Y90722D01* +X1027746Y90769D01* +X1027789Y90809D01* +X1027831Y90882D01* +X1027882Y90949D01* +X1027903Y91004D01* +X1027932Y91054D01* +X1027953Y91136D01* +X1027983Y91215D01* +X1027988Y91273D01* +X1028003Y91330D01* +X1028000Y91414D01* +X1028007Y91498D01* +X1027995Y91555D01* +X1027994Y91614D01* +X1027968Y91694D01* +X1027951Y91777D01* +X1027924Y91829D01* +X1027906Y91885D01* +X1027866Y91941D01* +X1027820Y92029D01* +X1027751Y92102D01* +X1027711Y92158D01* +X1026207Y93662D01* +X1026207Y99718D01* +X1027962Y101473D01* +X1034518Y101473D01* +X1035602Y100389D01* +X1035649Y100354D01* +X1035689Y100311D01* +X1035762Y100269D01* +X1035829Y100218D01* +X1035884Y100197D01* +X1035934Y100168D01* +X1036016Y100147D01* +X1036095Y100117D01* +X1036153Y100112D01* +X1036210Y100097D01* +X1036294Y100100D01* +X1036378Y100093D01* +X1036436Y100105D01* +X1036494Y100106D01* +X1036574Y100132D01* +X1036657Y100149D01* +X1036709Y100176D01* +X1036765Y100194D01* +X1036821Y100234D01* +X1036909Y100280D01* +X1036982Y100349D01* +X1037038Y100389D01* +X1038122Y101473D01* +X1044678Y101473D01* +X1045762Y100389D01* +X1045809Y100354D01* +X1045849Y100311D01* +X1045922Y100269D01* +X1045989Y100218D01* +X1046044Y100197D01* +X1046094Y100168D01* +X1046176Y100147D01* +X1046255Y100117D01* +X1046313Y100112D01* +X1046370Y100097D01* +X1046454Y100100D01* +X1046538Y100093D01* +X1046596Y100105D01* +X1046654Y100106D01* +X1046734Y100132D01* +X1046817Y100149D01* +X1046869Y100176D01* +X1046925Y100194D01* +X1046981Y100234D01* +X1047069Y100280D01* +X1047142Y100349D01* +X1047198Y100389D01* +X1048282Y101473D01* +X1054838Y101473D01* +X1056275Y100036D01* +X1056345Y99984D01* +X1056409Y99924D01* +X1056458Y99898D01* +X1056502Y99865D01* +X1056584Y99834D01* +X1056662Y99794D01* +X1056709Y99786D01* +X1056768Y99764D01* +X1056915Y99752D01* +X1056993Y99739D01* +X1057641Y99739D01* +X1057727Y99751D01* +X1057815Y99754D01* +X1057867Y99771D01* +X1057922Y99779D01* +X1058002Y99814D01* +X1058085Y99841D01* +X1058124Y99869D01* +X1058182Y99895D01* +X1058295Y99991D01* +X1058359Y100036D01* +X1067336Y109013D01* +X1067388Y109083D01* +X1067448Y109147D01* +X1067474Y109197D01* +X1067507Y109241D01* +X1067538Y109322D01* +X1067578Y109400D01* +X1067586Y109448D01* +X1067608Y109506D01* +X1067620Y109654D01* +X1067633Y109731D01* +X1067633Y141485D01* +X1086314Y160166D01* +X1086366Y160236D01* +X1086426Y160300D01* +X1086452Y160349D01* +X1086485Y160393D01* +X1086516Y160475D01* +X1086556Y160553D01* +X1086564Y160600D01* +X1086586Y160659D01* +X1086598Y160807D01* +X1086611Y160884D01* +X1086611Y161720D01* +X1086595Y161834D01* +X1086585Y161948D01* +X1086575Y161974D01* +X1086571Y162002D01* +X1086524Y162107D01* +X1086483Y162214D01* +X1086467Y162236D01* +X1086455Y162261D01* +X1086381Y162349D01* +X1086312Y162440D01* +X1086289Y162457D01* +X1086272Y162478D01* +X1086176Y162542D01* +X1086084Y162611D01* +X1086058Y162620D01* +X1086035Y162636D01* +X1085925Y162670D01* +X1085818Y162711D01* +X1085790Y162713D01* +X1085764Y162722D01* +X1085649Y162724D01* +X1085535Y162734D01* +X1085510Y162728D01* +X1085480Y162729D01* +X1085223Y162662D01* +X1085207Y162658D01* +X1083197Y161825D01* +X1080957Y161825D01* +X1080871Y161813D01* +X1080783Y161810D01* +X1080731Y161793D01* +X1080676Y161785D01* +X1080596Y161750D01* +X1080513Y161723D01* +X1080474Y161695D01* +X1080416Y161669D01* +X1080303Y161573D01* +X1080239Y161528D01* +X1080023Y161311D01* +X1065968Y161311D01* +X1065910Y161303D01* +X1065852Y161305D01* +X1065770Y161283D01* +X1065686Y161271D01* +X1065633Y161248D01* +X1065577Y161233D01* +X1065504Y161190D01* +X1065427Y161155D01* +X1065382Y161117D01* +X1065332Y161088D01* +X1065274Y161026D01* +X1065210Y160972D01* +X1065178Y160923D01* +X1065138Y160880D01* +X1065099Y160805D01* +X1065052Y160735D01* +X1065035Y160679D01* +X1065008Y160627D01* +X1064997Y160559D01* +X1064967Y160464D01* +X1064964Y160364D01* +X1064953Y160296D01* +X1064953Y159941D01* +X1063740Y158728D01* +X1063705Y158681D01* +X1063662Y158641D01* +X1063620Y158568D01* +X1063569Y158501D01* +X1063548Y158446D01* +X1063519Y158396D01* +X1063498Y158314D01* +X1063468Y158235D01* +X1063463Y158177D01* +X1063449Y158120D01* +X1063451Y158036D01* +X1063444Y157952D01* +X1063456Y157894D01* +X1063458Y157836D01* +X1063484Y157756D01* +X1063500Y157673D01* +X1063527Y157621D01* +X1063545Y157565D01* +X1063585Y157509D01* +X1063631Y157421D01* +X1063700Y157348D01* +X1063740Y157292D01* +X1064953Y156079D01* +X1064953Y147241D01* +X1063740Y146028D01* +X1063705Y145981D01* +X1063662Y145941D01* +X1063620Y145868D01* +X1063569Y145801D01* +X1063548Y145746D01* +X1063519Y145696D01* +X1063498Y145614D01* +X1063468Y145535D01* +X1063463Y145477D01* +X1063449Y145420D01* +X1063451Y145336D01* +X1063444Y145252D01* +X1063456Y145194D01* +X1063458Y145136D01* +X1063484Y145056D01* +X1063500Y144973D01* +X1063527Y144921D01* +X1063545Y144865D01* +X1063585Y144809D01* +X1063631Y144721D01* +X1063700Y144648D01* +X1063740Y144592D01* +X1064953Y143379D01* +X1064953Y134541D01* +X1062839Y132427D01* +X1043001Y132427D01* +X1040887Y134541D01* +X1040887Y134896D01* +X1040879Y134954D01* +X1040881Y135012D01* +X1040859Y135094D01* +X1040847Y135178D01* +X1040824Y135231D01* +X1040809Y135287D01* +X1040766Y135360D01* +X1040731Y135437D01* +X1040693Y135482D01* +X1040664Y135532D01* +X1040602Y135590D01* +X1040548Y135654D01* +X1040499Y135686D01* +X1040456Y135726D01* +X1040381Y135765D01* +X1040311Y135812D01* +X1040255Y135829D01* +X1040203Y135856D01* +X1040135Y135867D01* +X1040040Y135897D01* +X1039940Y135900D01* +X1039872Y135911D01* +X978673Y135911D01* +X978587Y135899D01* +X978499Y135896D01* +X978447Y135879D01* +X978392Y135871D01* +X978312Y135836D01* +X978229Y135809D01* +X978190Y135781D01* +X978132Y135755D01* +X978019Y135659D01* +X977955Y135614D01* +X975610Y133269D01* +X975558Y133199D01* +X975498Y133135D01* +X975472Y133085D01* +X975439Y133041D01* +X975408Y132960D01* +X975368Y132882D01* +X975360Y132834D01* +X975338Y132776D01* +X975326Y132628D01* +X975313Y132551D01* +X975313Y129222D01* +X973558Y127467D01* +X967002Y127467D01* +X965565Y128904D01* +X965495Y128956D01* +X965432Y129016D01* +X965382Y129042D01* +X965338Y129075D01* +X965256Y129106D01* +X965178Y129146D01* +X965131Y129154D01* +X965072Y129176D01* +X964925Y129188D01* +X964847Y129201D01* +X956893Y129201D01* +X956807Y129189D01* +X956719Y129186D01* +X956667Y129169D01* +X956612Y129161D01* +X956532Y129126D01* +X956449Y129099D01* +X956410Y129071D01* +X956352Y129045D01* +X956239Y128949D01* +X956175Y128904D01* +X943438Y116167D01* +X943403Y116120D01* +X943398Y116116D01* +X943385Y116096D01* +X943326Y116033D01* +X943300Y115983D01* +X943267Y115939D01* +X943249Y115892D01* +X943240Y115879D01* +X943230Y115845D01* +X943196Y115780D01* +X943188Y115732D01* +X943166Y115674D01* +X943163Y115633D01* +X943155Y115608D01* +X943152Y115518D01* +X943141Y115449D01* +X943141Y41041D01* +X931309Y29209D01* +X812038Y29209D01* +X811980Y29201D01* +X811922Y29203D01* +X811840Y29181D01* +X811756Y29169D01* +X811703Y29146D01* +X811647Y29131D01* +X811574Y29088D01* +X811497Y29053D01* +X811452Y29015D01* +X811402Y28986D01* +X811344Y28924D01* +X811280Y28870D01* +X811248Y28821D01* +X811208Y28778D01* +X811169Y28703D01* +X811122Y28633D01* +X811105Y28577D01* +X811078Y28525D01* +X811067Y28457D01* +X811037Y28362D01* +X811034Y28262D01* +X811023Y28194D01* +X811023Y10588D01* +X809832Y9397D01* +X790368Y9397D01* +X789177Y10588D01* +X789177Y28035D01* +X789173Y28064D01* +X789176Y28093D01* +X789153Y28204D01* +X789137Y28316D01* +X789125Y28343D01* +X789120Y28372D01* +X789067Y28472D01* +X789021Y28576D01* +X789002Y28598D01* +X788989Y28624D01* +X788911Y28706D01* +X788838Y28793D01* +X788813Y28809D01* +X788793Y28830D01* +X788695Y28887D01* +X788601Y28950D01* +X788573Y28959D01* +X788548Y28974D01* +X788438Y29002D01* +X788330Y29036D01* +X788300Y29037D01* +X788272Y29044D01* +X788159Y29040D01* +X788046Y29043D01* +X788017Y29036D01* +X787988Y29035D01* +X787880Y29000D01* +X787771Y28971D01* +X787745Y28956D01* +X787717Y28947D01* +X787654Y28902D01* +X787526Y28826D01* +X787483Y28781D01* +X787444Y28753D01* +X784802Y26111D01* +X784801Y26110D01* +X784800Y26109D01* +X784714Y25993D01* +X784632Y25884D01* +X784631Y25882D01* +X784630Y25881D01* +X784580Y25747D01* +X784530Y25618D01* +X784530Y25616D01* +X784530Y25615D01* +X784518Y25470D01* +X784507Y25335D01* +X784507Y25333D01* +X784507Y25332D01* +X784510Y25316D01* +X784563Y25056D01* +X784577Y25029D01* +X784582Y25004D01* +X785623Y22493D01* +X785623Y18147D01* +X783960Y14133D01* +X780887Y11060D01* +X776873Y9397D01* +X772527Y9397D01* +X768513Y11060D01* +X765440Y14133D01* +X763777Y18147D01* +X763777Y22493D01* +X765440Y26507D01* +X768513Y29580D01* +X772527Y31243D01* +X776873Y31243D01* +X779384Y30202D01* +X779386Y30202D01* +X779387Y30201D01* +X779523Y30167D01* +X779660Y30131D01* +X779661Y30131D01* +X779663Y30131D01* +X779803Y30136D01* +X779944Y30140D01* +X779945Y30140D01* +X779947Y30140D01* +X780080Y30183D01* +X780215Y30226D01* +X780216Y30227D01* +X780217Y30228D01* +X780230Y30236D01* +X780347Y30315D01* +X780348Y30315D01* +X780350Y30317D01* +X780451Y30384D01* +X780470Y30408D01* +X780491Y30422D01* +X781609Y31540D01* +X781626Y31564D01* +X781649Y31583D01* +X781711Y31677D01* +X781779Y31767D01* +X781790Y31795D01* +X781806Y31819D01* +X781840Y31927D01* +X781881Y32033D01* +X781883Y32062D01* +X781892Y32090D01* +X781895Y32204D01* +X781904Y32316D01* +X781899Y32345D01* +X781899Y32374D01* +X781871Y32484D01* +X781848Y32595D01* +X781835Y32621D01* +X781827Y32649D01* +X781770Y32747D01* +X781717Y32847D01* +X781697Y32869D01* +X781682Y32894D01* +X781600Y32971D01* +X781522Y33053D01* +X781496Y33068D01* +X781475Y33088D01* +X781374Y33140D01* +X781276Y33197D01* +X781248Y33204D01* +X781222Y33218D01* +X781144Y33231D01* +X781001Y33267D01* +X780938Y33265D01* +X780891Y33273D01* +X766985Y33273D01* +X766899Y33261D01* +X766811Y33258D01* +X766759Y33241D01* +X766704Y33233D01* +X766624Y33198D01* +X766541Y33171D01* +X766502Y33143D01* +X766444Y33117D01* +X766331Y33021D01* +X766267Y32976D01* +X759402Y26111D01* +X759402Y26110D01* +X759400Y26109D01* +X759312Y25990D01* +X759232Y25884D01* +X759231Y25882D01* +X759230Y25881D01* +X759180Y25747D01* +X759130Y25618D01* +X759130Y25616D01* +X759130Y25615D01* +X759118Y25470D01* +X759107Y25335D01* +X759107Y25333D01* +X759107Y25332D01* +X759110Y25316D01* +X759163Y25056D01* +X759177Y25029D01* +X759182Y25004D01* +X760223Y22493D01* +X760223Y18147D01* +X758560Y14133D01* +X755487Y11060D01* +X751473Y9397D01* +X747127Y9397D01* +X743113Y11060D01* +X740040Y14133D01* +X738377Y18147D01* +X738377Y22493D01* +X740040Y26507D01* +X742279Y28746D01* +X742297Y28770D01* +X742319Y28789D01* +X742382Y28883D01* +X742450Y28973D01* +X742460Y29001D01* +X742477Y29025D01* +X742511Y29133D01* +X742551Y29239D01* +X742554Y29268D01* +X742562Y29296D01* +X742565Y29410D01* +X742575Y29522D01* +X742569Y29551D01* +X742570Y29580D01* +X742541Y29690D01* +X742519Y29801D01* +X742505Y29827D01* +X742498Y29855D01* +X742440Y29953D01* +X742388Y30053D01* +X742368Y30075D01* +X742353Y30100D01* +X742270Y30177D01* +X742192Y30259D01* +X742167Y30274D01* +X742145Y30294D01* +X742045Y30346D01* +X741947Y30403D01* +X741918Y30410D01* +X741892Y30424D01* +X741815Y30437D01* +X741671Y30473D01* +X741609Y30471D01* +X741561Y30479D01* +X687991Y30479D01* +X687905Y30467D01* +X687817Y30464D01* +X687765Y30447D01* +X687710Y30439D01* +X687630Y30404D01* +X687547Y30377D01* +X687508Y30349D01* +X687450Y30323D01* +X687337Y30227D01* +X687273Y30182D01* +X683202Y26111D01* +X683202Y26110D01* +X683200Y26109D01* +X683112Y25990D01* +X683032Y25884D01* +X683031Y25882D01* +X683030Y25881D01* +X682980Y25747D01* +X682930Y25618D01* +X682930Y25616D01* +X682930Y25615D01* +X682918Y25470D01* +X682907Y25335D01* +X682907Y25333D01* +X682907Y25332D01* +X682910Y25316D01* +X682963Y25056D01* +X682977Y25029D01* +X682982Y25004D01* +X684023Y22493D01* +X684023Y18147D01* +X682360Y14133D01* +X679287Y11060D01* +X675273Y9397D01* +X670927Y9397D01* +X666913Y11060D01* +X663840Y14133D01* +X662177Y18147D01* +X662177Y22493D01* +X663840Y26507D01* +X666913Y29580D01* +X670927Y31243D01* +X675273Y31243D01* +X677784Y30202D01* +X677786Y30202D01* +X677787Y30201D01* +X677923Y30167D01* +X678060Y30131D01* +X678061Y30131D01* +X678063Y30131D01* +X678203Y30136D01* +X678344Y30140D01* +X678345Y30140D01* +X678347Y30140D01* +X678480Y30183D01* +X678615Y30226D01* +X678616Y30227D01* +X678617Y30228D01* +X678630Y30236D01* +X678747Y30315D01* +X678748Y30315D01* +X678750Y30317D01* +X678851Y30384D01* +X678870Y30408D01* +X678891Y30422D01* +X681279Y32810D01* +X681296Y32834D01* +X681319Y32853D01* +X681381Y32947D01* +X681449Y33037D01* +X681460Y33065D01* +X681476Y33089D01* +X681510Y33197D01* +X681551Y33303D01* +X681553Y33332D01* +X681562Y33360D01* +X681565Y33474D01* +X681574Y33586D01* +X681569Y33615D01* +X681569Y33644D01* +X681541Y33754D01* +X681518Y33865D01* +X681505Y33891D01* +X681497Y33919D01* +X681440Y34017D01* +X681387Y34117D01* +X681367Y34139D01* +X681352Y34164D01* +X681270Y34241D01* +X681192Y34323D01* +X681166Y34338D01* +X681145Y34358D01* +X681044Y34410D01* +X680946Y34467D01* +X680918Y34474D01* +X680892Y34488D01* +X680814Y34501D01* +X680671Y34537D01* +X680608Y34535D01* +X680561Y34543D01* +X666655Y34543D01* +X666569Y34531D01* +X666481Y34528D01* +X666429Y34511D01* +X666374Y34503D01* +X666294Y34468D01* +X666211Y34441D01* +X666172Y34413D01* +X666114Y34387D01* +X666001Y34291D01* +X665937Y34246D01* +X657802Y26111D01* +X657802Y26110D01* +X657800Y26109D01* +X657712Y25990D01* +X657632Y25884D01* +X657631Y25882D01* +X657630Y25881D01* +X657580Y25747D01* +X657530Y25618D01* +X657530Y25616D01* +X657530Y25615D01* +X657518Y25470D01* +X657507Y25335D01* +X657507Y25333D01* +X657507Y25332D01* +X657510Y25316D01* +X657563Y25056D01* +X657577Y25029D01* +X657582Y25004D01* +X658623Y22493D01* +X658623Y18147D01* +X656960Y14133D01* +X653887Y11060D01* +X649873Y9397D01* +X645527Y9397D01* +X643016Y10438D01* +X643014Y10438D01* +X643013Y10439D01* +X642878Y10473D01* +X642740Y10509D01* +X642739Y10509D01* +X642737Y10509D01* +X642597Y10504D01* +X642456Y10500D01* +X642455Y10500D01* +X642453Y10500D01* +X642320Y10457D01* +X642185Y10414D01* +X642184Y10413D01* +X642183Y10412D01* +X642170Y10404D01* +X641949Y10256D01* +X641929Y10232D01* +X641909Y10218D01* +X638346Y6655D01* +X637187Y5496D01* +X637170Y5472D01* +X637147Y5453D01* +X637085Y5359D01* +X637017Y5269D01* +X637006Y5241D01* +X636990Y5217D01* +X636956Y5109D01* +X636915Y5003D01* +X636913Y4974D01* +X636904Y4946D01* +X636901Y4832D01* +X636892Y4720D01* +X636897Y4691D01* +X636897Y4662D01* +X636925Y4552D01* +X636948Y4441D01* +X636961Y4415D01* +X636969Y4387D01* +X637026Y4289D01* +X637079Y4189D01* +X637099Y4167D01* +X637114Y4142D01* +X637196Y4065D01* +X637274Y3983D01* +X637300Y3968D01* +X637321Y3948D01* +X637422Y3896D01* +X637520Y3839D01* +X637548Y3832D01* +X637574Y3818D01* +X637652Y3805D01* +X637795Y3769D01* +X637858Y3771D01* +X637905Y3763D01* +X950313Y3763D01* +X950342Y3767D01* +X950371Y3764D01* +X950482Y3787D01* +X950595Y3803D01* +X950621Y3815D01* +X950650Y3820D01* +X950751Y3873D01* +X950854Y3919D01* +X950876Y3938D01* +X950902Y3951D01* +X950985Y4029D01* +X951071Y4102D01* +X951087Y4127D01* +X951109Y4147D01* +X951166Y4245D01* +X951229Y4339D01* +X951237Y4367D01* +X951252Y4392D01* +X951280Y4502D01* +X951314Y4610D01* +X951315Y4640D01* +X951322Y4668D01* +X951319Y4781D01* +X951322Y4894D01* +X951314Y4923D01* +X951313Y4952D01* +X951278Y5060D01* +X951250Y5169D01* +X951235Y5195D01* +X951226Y5223D01* +X951180Y5287D01* +X951105Y5414D01* +X951059Y5457D01* +X951031Y5496D01* +X950467Y6060D01* +X950132Y6639D01* +X949959Y7286D01* +X949959Y24639D01* +X970534Y24639D01* +X970592Y24647D01* +X970650Y24645D01* +X970732Y24667D01* +X970815Y24679D01* +X970869Y24703D01* +X970925Y24717D01* +X970998Y24760D01* +X971075Y24795D01* +X971119Y24833D01* +X971170Y24863D01* +X971227Y24924D01* +X971292Y24979D01* +X971324Y25027D01* +X971364Y25070D01* +X971403Y25145D01* +X971449Y25215D01* +X971467Y25271D01* +X971494Y25323D01* +X971505Y25391D01* +X971535Y25486D01* +X971538Y25586D01* +X971549Y25654D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y25654D01* +X971559Y25596D01* +X971558Y25538D01* +X971579Y25456D01* +X971591Y25373D01* +X971615Y25319D01* +X971629Y25263D01* +X971672Y25190D01* +X971707Y25113D01* +X971745Y25068D01* +X971775Y25018D01* +X971836Y24960D01* +X971891Y24896D01* +X971939Y24864D01* +X971982Y24824D01* +X972057Y24785D01* +X972127Y24739D01* +X972183Y24721D01* +X972235Y24694D01* +X972303Y24683D01* +X972398Y24653D01* +X972498Y24650D01* +X972566Y24639D01* +X993141Y24639D01* +X993141Y7286D01* +X992968Y6639D01* +X992633Y6060D01* +X992069Y5496D01* +X992051Y5472D01* +X992029Y5453D01* +X991966Y5359D01* +X991898Y5269D01* +X991888Y5241D01* +X991871Y5217D01* +X991837Y5109D01* +X991797Y5003D01* +X991794Y4974D01* +X991786Y4946D01* +X991783Y4832D01* +X991773Y4720D01* +X991779Y4691D01* +X991778Y4662D01* +X991807Y4552D01* +X991829Y4441D01* +X991843Y4415D01* +X991850Y4387D01* +X991908Y4289D01* +X991960Y4189D01* +X991980Y4167D01* +X991995Y4142D01* +X992078Y4065D01* +X992156Y3983D01* +X992181Y3968D01* +X992203Y3948D01* +X992304Y3896D01* +X992401Y3839D01* +X992430Y3832D01* +X992456Y3818D01* +X992533Y3805D01* +X992677Y3769D01* +X992739Y3771D01* +X992787Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +G36* +X881410Y209017D02* +X881410Y209017D01* +X881468Y209015D01* +X881550Y209037D01* +X881634Y209049D01* +X881687Y209072D01* +X881743Y209087D01* +X881816Y209130D01* +X881893Y209165D01* +X881938Y209203D01* +X881988Y209232D01* +X882046Y209294D01* +X882110Y209348D01* +X882142Y209397D01* +X882182Y209440D01* +X882221Y209515D01* +X882268Y209585D01* +X882285Y209641D01* +X882312Y209693D01* +X882323Y209761D01* +X882353Y209856D01* +X882356Y209956D01* +X882367Y210024D01* +X882367Y215867D01* +X884993Y218493D01* +X887336Y218493D01* +X887394Y218501D01* +X887452Y218499D01* +X887534Y218521D01* +X887618Y218533D01* +X887671Y218556D01* +X887727Y218571D01* +X887800Y218614D01* +X887877Y218649D01* +X887922Y218687D01* +X887972Y218716D01* +X888030Y218778D01* +X888094Y218832D01* +X888126Y218881D01* +X888166Y218924D01* +X888205Y218999D01* +X888252Y219069D01* +X888269Y219125D01* +X888296Y219177D01* +X888307Y219245D01* +X888337Y219340D01* +X888340Y219440D01* +X888351Y219508D01* +X888351Y283412D01* +X888343Y283470D01* +X888345Y283528D01* +X888323Y283610D01* +X888311Y283694D01* +X888288Y283747D01* +X888273Y283803D01* +X888230Y283876D01* +X888195Y283953D01* +X888157Y283998D01* +X888128Y284048D01* +X888066Y284106D01* +X888012Y284170D01* +X887963Y284202D01* +X887920Y284242D01* +X887845Y284281D01* +X887775Y284328D01* +X887719Y284345D01* +X887667Y284372D01* +X887599Y284383D01* +X887504Y284413D01* +X887404Y284416D01* +X887336Y284427D01* +X884993Y284427D01* +X882367Y287053D01* +X882367Y307043D01* +X882395Y307115D01* +X882397Y307144D01* +X882406Y307172D01* +X882409Y307286D01* +X882418Y307398D01* +X882412Y307427D01* +X882413Y307456D01* +X882385Y307566D01* +X882362Y307677D01* +X882349Y307703D01* +X882341Y307731D01* +X882284Y307829D01* +X882231Y307929D01* +X882211Y307951D01* +X882196Y307976D01* +X882114Y308053D01* +X882036Y308135D01* +X882010Y308150D01* +X881989Y308170D01* +X881888Y308222D01* +X881790Y308279D01* +X881762Y308286D01* +X881736Y308300D01* +X881658Y308313D01* +X881515Y308349D01* +X881452Y308347D01* +X881405Y308355D01* +X795687Y308355D01* +X795658Y308351D01* +X795629Y308354D01* +X795518Y308331D01* +X795406Y308315D01* +X795379Y308303D01* +X795350Y308298D01* +X795250Y308246D01* +X795146Y308199D01* +X795124Y308180D01* +X795098Y308167D01* +X795016Y308089D01* +X794929Y308016D01* +X794913Y307991D01* +X794892Y307971D01* +X794835Y307873D01* +X794772Y307779D01* +X794763Y307751D01* +X794748Y307726D01* +X794720Y307616D01* +X794686Y307508D01* +X794685Y307478D01* +X794678Y307450D01* +X794682Y307337D01* +X794679Y307224D01* +X794686Y307195D01* +X794687Y307166D01* +X794722Y307058D01* +X794751Y306949D01* +X794766Y306923D01* +X794775Y306895D01* +X794820Y306832D01* +X794896Y306704D01* +X794912Y306689D01* +X794913Y306687D01* +X794944Y306658D01* +X794969Y306622D01* +X836625Y264966D01* +X836695Y264914D01* +X836759Y264854D01* +X836809Y264828D01* +X836853Y264795D01* +X836934Y264764D01* +X837012Y264724D01* +X837060Y264716D01* +X837118Y264694D01* +X837266Y264682D01* +X837343Y264669D01* +X845297Y264669D01* +X845384Y264681D01* +X845471Y264684D01* +X845524Y264701D01* +X845579Y264709D01* +X845659Y264744D01* +X845742Y264771D01* +X845781Y264799D01* +X845838Y264825D01* +X845951Y264921D01* +X846015Y264966D01* +X847702Y266653D01* +X853758Y266653D01* +X855513Y264898D01* +X855513Y259636D01* +X855521Y259578D01* +X855519Y259520D01* +X855541Y259438D01* +X855553Y259354D01* +X855576Y259301D01* +X855591Y259245D01* +X855634Y259172D01* +X855669Y259095D01* +X855707Y259050D01* +X855736Y259000D01* +X855798Y258942D01* +X855852Y258878D01* +X855901Y258846D01* +X855944Y258806D01* +X856019Y258767D01* +X856089Y258720D01* +X856145Y258703D01* +X856197Y258676D01* +X856265Y258665D01* +X856360Y258635D01* +X856460Y258632D01* +X856528Y258621D01* +X873451Y258621D01* +X874725Y257346D01* +X874795Y257294D01* +X874859Y257234D01* +X874909Y257208D01* +X874953Y257175D01* +X875034Y257144D01* +X875112Y257104D01* +X875160Y257096D01* +X875218Y257074D01* +X875366Y257062D01* +X875443Y257049D01* +X877412Y257049D01* +X879466Y256198D01* +X881038Y254626D01* +X881889Y252572D01* +X881889Y250348D01* +X881038Y248294D01* +X879466Y246722D01* +X877412Y245871D01* +X875188Y245871D01* +X873134Y246722D01* +X871562Y248294D01* +X870711Y250348D01* +X870711Y251508D01* +X870704Y251562D01* +X870705Y251600D01* +X870704Y251602D01* +X870705Y251624D01* +X870683Y251706D01* +X870671Y251790D01* +X870648Y251843D01* +X870633Y251899D01* +X870590Y251972D01* +X870555Y252049D01* +X870517Y252094D01* +X870488Y252144D01* +X870426Y252202D01* +X870372Y252266D01* +X870323Y252298D01* +X870280Y252338D01* +X870205Y252377D01* +X870135Y252424D01* +X870079Y252441D01* +X870027Y252468D01* +X869959Y252479D01* +X869864Y252509D01* +X869764Y252512D01* +X869696Y252523D01* +X856528Y252523D01* +X856470Y252515D01* +X856412Y252517D01* +X856330Y252495D01* +X856246Y252483D01* +X856193Y252460D01* +X856137Y252445D01* +X856064Y252402D01* +X855987Y252367D01* +X855942Y252329D01* +X855892Y252300D01* +X855834Y252238D01* +X855770Y252184D01* +X855738Y252135D01* +X855698Y252092D01* +X855659Y252017D01* +X855612Y251947D01* +X855595Y251891D01* +X855568Y251839D01* +X855557Y251771D01* +X855527Y251676D01* +X855524Y251576D01* +X855513Y251508D01* +X855513Y245642D01* +X853758Y243887D01* +X847702Y243887D01* +X846015Y245574D01* +X845945Y245626D01* +X845881Y245686D01* +X845832Y245712D01* +X845788Y245745D01* +X845706Y245776D01* +X845628Y245816D01* +X845581Y245824D01* +X845522Y245846D01* +X845375Y245858D01* +X845297Y245871D01* +X727717Y245871D01* +X685291Y288297D01* +X685291Y303523D01* +X686488Y304719D01* +X686502Y304738D01* +X686520Y304753D01* +X686587Y304852D01* +X686658Y304946D01* +X686667Y304969D01* +X686680Y304988D01* +X686718Y305101D01* +X686760Y305212D01* +X686762Y305236D01* +X686769Y305258D01* +X686773Y305377D01* +X686783Y305495D01* +X686779Y305519D01* +X686779Y305543D01* +X686759Y305616D01* +X686727Y305774D01* +X686702Y305824D01* +X686690Y305866D01* +X685802Y307769D01* +X685736Y307871D01* +X685674Y307976D01* +X685659Y307990D01* +X685647Y308007D01* +X685556Y308087D01* +X685466Y308170D01* +X685448Y308180D01* +X685432Y308193D01* +X685322Y308244D01* +X685213Y308300D01* +X685195Y308303D01* +X685174Y308312D01* +X684893Y308355D01* +X684887Y308354D01* +X684882Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X399145Y377237D01* +X399116Y377233D01* +X399087Y377236D01* +X398976Y377213D01* +X398864Y377197D01* +X398837Y377185D01* +X398808Y377180D01* +X398708Y377128D01* +X398604Y377081D01* +X398582Y377062D01* +X398556Y377049D01* +X398474Y376971D01* +X398387Y376898D01* +X398371Y376873D01* +X398350Y376853D01* +X398293Y376755D01* +X398230Y376661D01* +X398221Y376633D01* +X398206Y376608D01* +X398178Y376498D01* +X398144Y376390D01* +X398143Y376360D01* +X398136Y376332D01* +X398140Y376219D01* +X398137Y376106D01* +X398144Y376077D01* +X398145Y376048D01* +X398180Y375940D01* +X398209Y375831D01* +X398224Y375805D01* +X398233Y375777D01* +X398278Y375714D01* +X398354Y375586D01* +X398399Y375543D01* +X398427Y375504D01* +X423875Y350056D01* +X425959Y347973D01* +X425959Y330613D01* +X425966Y330565D01* +X425965Y330557D01* +X425968Y330546D01* +X425971Y330527D01* +X425974Y330439D01* +X425991Y330387D01* +X425999Y330332D01* +X426034Y330252D01* +X426061Y330169D01* +X426089Y330130D01* +X426115Y330072D01* +X426211Y329959D01* +X426256Y329895D01* +X430643Y325508D01* +X430690Y325473D01* +X430730Y325431D01* +X430803Y325388D01* +X430870Y325338D01* +X430925Y325317D01* +X430975Y325287D01* +X431057Y325266D01* +X431136Y325236D01* +X431194Y325231D01* +X431251Y325217D01* +X431335Y325220D01* +X431419Y325213D01* +X431477Y325224D01* +X431535Y325226D01* +X431615Y325252D01* +X431698Y325269D01* +X431750Y325296D01* +X431806Y325314D01* +X431862Y325354D01* +X431950Y325400D01* +X432023Y325468D01* +X432079Y325508D01* +X434303Y327733D01* +X447937Y327733D01* +X448290Y327379D01* +X448314Y327362D01* +X448333Y327339D01* +X448427Y327277D01* +X448517Y327209D01* +X448545Y327198D01* +X448569Y327182D01* +X448677Y327148D01* +X448783Y327107D01* +X448812Y327105D01* +X448840Y327096D01* +X448954Y327093D01* +X449066Y327084D01* +X449095Y327090D01* +X449124Y327089D01* +X449234Y327117D01* +X449345Y327140D01* +X449371Y327153D01* +X449399Y327161D01* +X449497Y327218D01* +X449597Y327271D01* +X449619Y327291D01* +X449644Y327306D01* +X449721Y327388D01* +X449803Y327466D01* +X449818Y327492D01* +X449838Y327513D01* +X449890Y327614D01* +X449947Y327712D01* +X449954Y327740D01* +X449968Y327766D01* +X449981Y327844D01* +X450017Y327987D01* +X450015Y328050D01* +X450023Y328097D01* +X450023Y332303D01* +X450019Y332332D01* +X450022Y332361D01* +X449999Y332472D01* +X449983Y332584D01* +X449971Y332611D01* +X449966Y332640D01* +X449913Y332740D01* +X449867Y332844D01* +X449848Y332866D01* +X449835Y332892D01* +X449757Y332974D01* +X449684Y333061D01* +X449659Y333077D01* +X449639Y333098D01* +X449541Y333155D01* +X449447Y333218D01* +X449419Y333227D01* +X449394Y333242D01* +X449284Y333270D01* +X449176Y333304D01* +X449146Y333305D01* +X449118Y333312D01* +X449005Y333308D01* +X448892Y333311D01* +X448863Y333304D01* +X448834Y333303D01* +X448726Y333268D01* +X448617Y333239D01* +X448591Y333224D01* +X448563Y333215D01* +X448499Y333170D01* +X448372Y333094D01* +X448329Y333049D01* +X448290Y333021D01* +X447937Y332667D01* +X434303Y332667D01* +X432087Y334883D01* +X432087Y344517D01* +X434303Y346733D01* +X447937Y346733D01* +X450153Y344517D01* +X450153Y343019D01* +X450165Y342933D01* +X450168Y342845D01* +X450185Y342793D01* +X450193Y342738D01* +X450228Y342658D01* +X450255Y342575D01* +X450283Y342535D01* +X450309Y342478D01* +X450405Y342365D01* +X450450Y342301D01* +X452086Y340665D01* +X455221Y337530D01* +X455291Y337478D01* +X455355Y337418D01* +X455405Y337392D01* +X455449Y337359D01* +X455530Y337328D01* +X455608Y337288D01* +X455656Y337280D01* +X455714Y337258D01* +X455862Y337246D01* +X455939Y337233D01* +X469937Y337233D01* +X472153Y335017D01* +X472153Y334264D01* +X472161Y334206D01* +X472159Y334148D01* +X472181Y334066D01* +X472193Y333982D01* +X472216Y333929D01* +X472231Y333873D01* +X472274Y333800D01* +X472309Y333723D01* +X472347Y333678D01* +X472376Y333628D01* +X472438Y333570D01* +X472492Y333506D01* +X472541Y333474D01* +X472584Y333434D01* +X472659Y333395D01* +X472729Y333348D01* +X472785Y333331D01* +X472837Y333304D01* +X472905Y333293D01* +X473000Y333263D01* +X473100Y333260D01* +X473168Y333249D01* +X494023Y333249D01* +X548712Y278559D01* +X548736Y278542D01* +X548755Y278519D01* +X548849Y278456D01* +X548939Y278389D01* +X548967Y278378D01* +X548991Y278362D01* +X549099Y278328D01* +X549205Y278287D01* +X549234Y278285D01* +X549262Y278276D01* +X549376Y278273D01* +X549488Y278264D01* +X549517Y278269D01* +X549546Y278269D01* +X549656Y278297D01* +X549767Y278320D01* +X549793Y278333D01* +X549821Y278341D01* +X549919Y278398D01* +X550019Y278451D01* +X550041Y278471D01* +X550066Y278486D01* +X550143Y278568D01* +X550225Y278646D01* +X550240Y278672D01* +X550260Y278693D01* +X550312Y278794D01* +X550369Y278892D01* +X550376Y278920D01* +X550390Y278946D01* +X550403Y279024D01* +X550439Y279167D01* +X550437Y279230D01* +X550445Y279277D01* +X550445Y280557D01* +X551331Y282694D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278317D01* +X562087Y278231D01* +X562090Y278143D01* +X562107Y278091D01* +X562115Y278036D01* +X562150Y277956D01* +X562177Y277873D01* +X562205Y277834D01* +X562231Y277776D01* +X562327Y277663D01* +X562372Y277599D01* +X630665Y209306D01* +X630735Y209254D01* +X630799Y209194D01* +X630849Y209168D01* +X630893Y209135D01* +X630974Y209104D01* +X631052Y209064D01* +X631100Y209056D01* +X631158Y209034D01* +X631306Y209022D01* +X631383Y209009D01* +X881352Y209009D01* +X881410Y209017D01* +G37* +%LPC*% +G36* +X1101097Y85851D02* +X1101097Y85851D01* +X1090421Y96527D01* +X1090421Y115912D01* +X1090413Y115970D01* +X1090415Y116028D01* +X1090393Y116110D01* +X1090381Y116194D01* +X1090358Y116247D01* +X1090343Y116303D01* +X1090300Y116376D01* +X1090265Y116453D01* +X1090227Y116498D01* +X1090198Y116548D01* +X1090136Y116606D01* +X1090082Y116670D01* +X1090033Y116702D01* +X1089990Y116742D01* +X1089915Y116781D01* +X1089845Y116828D01* +X1089789Y116845D01* +X1089737Y116872D01* +X1089669Y116883D01* +X1089574Y116913D01* +X1089474Y116916D01* +X1089406Y116927D01* +X1089051Y116927D01* +X1086937Y119041D01* +X1086937Y138879D01* +X1089051Y140993D01* +X1097889Y140993D01* +X1099102Y139780D01* +X1099149Y139745D01* +X1099189Y139702D01* +X1099262Y139660D01* +X1099329Y139609D01* +X1099384Y139588D01* +X1099434Y139559D01* +X1099516Y139538D01* +X1099595Y139508D01* +X1099653Y139503D01* +X1099710Y139489D01* +X1099794Y139491D01* +X1099878Y139484D01* +X1099936Y139496D01* +X1099994Y139498D01* +X1100074Y139524D01* +X1100157Y139540D01* +X1100209Y139567D01* +X1100265Y139585D01* +X1100321Y139625D01* +X1100409Y139671D01* +X1100482Y139740D01* +X1100538Y139780D01* +X1101751Y140993D01* +X1110589Y140993D01* +X1111802Y139780D01* +X1111849Y139745D01* +X1111889Y139702D01* +X1111962Y139660D01* +X1112029Y139609D01* +X1112084Y139588D01* +X1112134Y139559D01* +X1112216Y139538D01* +X1112295Y139508D01* +X1112353Y139503D01* +X1112410Y139489D01* +X1112494Y139491D01* +X1112578Y139484D01* +X1112636Y139496D01* +X1112694Y139498D01* +X1112774Y139524D01* +X1112857Y139540D01* +X1112909Y139567D01* +X1112965Y139585D01* +X1113021Y139625D01* +X1113109Y139671D01* +X1113182Y139740D01* +X1113238Y139780D01* +X1114451Y140993D01* +X1118333Y140993D01* +X1118362Y140997D01* +X1118391Y140994D01* +X1118502Y141017D01* +X1118614Y141033D01* +X1118641Y141045D01* +X1118670Y141050D01* +X1118771Y141103D01* +X1118874Y141149D01* +X1118896Y141168D01* +X1118922Y141181D01* +X1119004Y141259D01* +X1119091Y141332D01* +X1119107Y141357D01* +X1119128Y141377D01* +X1119186Y141475D01* +X1119248Y141569D01* +X1119257Y141597D01* +X1119272Y141622D01* +X1119300Y141732D01* +X1119334Y141840D01* +X1119335Y141870D01* +X1119342Y141898D01* +X1119339Y142011D01* +X1119342Y142124D01* +X1119334Y142153D01* +X1119333Y142182D01* +X1119298Y142290D01* +X1119270Y142399D01* +X1119255Y142425D01* +X1119246Y142453D01* +X1119200Y142517D01* +X1119124Y142644D01* +X1119079Y142687D01* +X1119051Y142726D01* +X1117751Y144026D01* +X1116865Y146163D01* +X1116865Y148477D01* +X1117751Y150614D01* +X1119386Y152249D01* +X1121523Y153135D01* +X1123837Y153135D01* +X1125974Y152249D01* +X1127557Y150666D01* +X1127627Y150614D01* +X1127691Y150554D01* +X1127740Y150528D01* +X1127784Y150495D01* +X1127866Y150464D01* +X1127944Y150424D01* +X1127992Y150416D01* +X1128050Y150394D01* +X1128198Y150382D01* +X1128275Y150369D01* +X1137080Y150369D01* +X1137194Y150385D01* +X1137308Y150395D01* +X1137334Y150405D01* +X1137362Y150409D01* +X1137467Y150456D01* +X1137574Y150497D01* +X1137596Y150513D01* +X1137621Y150525D01* +X1137709Y150599D01* +X1137800Y150668D01* +X1137817Y150691D01* +X1137838Y150708D01* +X1137902Y150804D01* +X1137971Y150896D01* +X1137980Y150922D01* +X1137996Y150945D01* +X1138030Y151055D01* +X1138071Y151162D01* +X1138073Y151190D01* +X1138082Y151216D01* +X1138084Y151331D01* +X1138094Y151445D01* +X1138088Y151470D01* +X1138089Y151500D01* +X1138022Y151757D01* +X1138018Y151773D01* +X1137185Y153783D01* +X1137185Y156097D01* +X1138071Y158234D01* +X1139706Y159869D01* +X1141843Y160755D01* +X1144157Y160755D01* +X1146294Y159869D01* +X1147877Y158286D01* +X1147947Y158234D01* +X1148011Y158174D01* +X1148060Y158148D01* +X1148104Y158115D01* +X1148186Y158084D01* +X1148264Y158044D01* +X1148312Y158036D01* +X1148370Y158014D01* +X1148518Y158002D01* +X1148595Y157989D01* +X1163839Y157989D01* +X1163868Y157993D01* +X1163897Y157990D01* +X1164008Y158013D01* +X1164120Y158029D01* +X1164147Y158041D01* +X1164176Y158046D01* +X1164276Y158099D01* +X1164380Y158145D01* +X1164402Y158164D01* +X1164428Y158177D01* +X1164510Y158255D01* +X1164597Y158328D01* +X1164613Y158353D01* +X1164634Y158373D01* +X1164691Y158471D01* +X1164754Y158565D01* +X1164763Y158593D01* +X1164778Y158618D01* +X1164806Y158728D01* +X1164840Y158836D01* +X1164841Y158866D01* +X1164848Y158894D01* +X1164844Y159007D01* +X1164847Y159120D01* +X1164840Y159149D01* +X1164839Y159178D01* +X1164804Y159286D01* +X1164775Y159395D01* +X1164760Y159421D01* +X1164751Y159449D01* +X1164706Y159512D01* +X1164630Y159640D01* +X1164585Y159683D01* +X1164557Y159722D01* +X1162751Y161528D01* +X1162681Y161580D01* +X1162617Y161640D01* +X1162567Y161666D01* +X1162523Y161699D01* +X1162442Y161730D01* +X1162364Y161770D01* +X1162316Y161778D01* +X1162258Y161800D01* +X1162110Y161812D01* +X1162033Y161825D01* +X1159623Y161825D01* +X1157486Y162711D01* +X1155851Y164346D01* +X1154965Y166483D01* +X1154965Y168797D01* +X1155851Y170934D01* +X1157434Y172517D01* +X1157486Y172587D01* +X1157546Y172651D01* +X1157572Y172700D01* +X1157605Y172744D01* +X1157636Y172826D01* +X1157676Y172904D01* +X1157684Y172952D01* +X1157706Y173010D01* +X1157717Y173140D01* +X1157717Y173142D01* +X1157717Y173147D01* +X1157718Y173158D01* +X1157731Y173235D01* +X1157731Y174603D01* +X1175937Y192809D01* +X1209872Y192809D01* +X1209930Y192817D01* +X1209988Y192815D01* +X1210070Y192837D01* +X1210154Y192849D01* +X1210207Y192872D01* +X1210263Y192887D01* +X1210336Y192930D01* +X1210413Y192965D01* +X1210458Y193003D01* +X1210508Y193032D01* +X1210566Y193094D01* +X1210630Y193148D01* +X1210662Y193197D01* +X1210702Y193240D01* +X1210741Y193315D01* +X1210788Y193385D01* +X1210805Y193441D01* +X1210832Y193493D01* +X1210843Y193561D01* +X1210873Y193656D01* +X1210876Y193756D01* +X1210887Y193824D01* +X1210887Y194179D01* +X1212100Y195392D01* +X1212135Y195439D01* +X1212178Y195479D01* +X1212220Y195552D01* +X1212271Y195619D01* +X1212292Y195674D01* +X1212321Y195724D01* +X1212342Y195806D01* +X1212372Y195885D01* +X1212377Y195943D01* +X1212391Y196000D01* +X1212389Y196084D01* +X1212396Y196168D01* +X1212384Y196226D01* +X1212382Y196284D01* +X1212356Y196364D01* +X1212340Y196447D01* +X1212313Y196499D01* +X1212295Y196555D01* +X1212255Y196611D01* +X1212209Y196699D01* +X1212140Y196772D01* +X1212100Y196828D01* +X1210884Y198044D01* +X1210883Y198045D01* +X1210882Y198046D01* +X1210770Y198130D01* +X1210657Y198215D01* +X1210655Y198215D01* +X1210654Y198216D01* +X1210524Y198265D01* +X1210391Y198316D01* +X1210390Y198316D01* +X1210388Y198317D01* +X1210245Y198328D01* +X1210108Y198339D01* +X1210107Y198339D01* +X1210105Y198339D01* +X1210089Y198336D01* +X1209829Y198284D01* +X1209802Y198269D01* +X1209778Y198264D01* +X1207657Y197385D01* +X1205343Y197385D01* +X1203206Y198271D01* +X1201571Y199906D01* +X1200685Y202043D01* +X1200685Y204357D01* +X1201571Y206494D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1210248Y207676D01* +X1210294Y207640D01* +X1210335Y207598D01* +X1210408Y207555D01* +X1210475Y207505D01* +X1210530Y207484D01* +X1210580Y207454D01* +X1210662Y207434D01* +X1210741Y207403D01* +X1210799Y207399D01* +X1210855Y207384D01* +X1210940Y207387D01* +X1211024Y207380D01* +X1211081Y207391D01* +X1211140Y207393D01* +X1211220Y207419D01* +X1211303Y207436D01* +X1211354Y207463D01* +X1211410Y207481D01* +X1211466Y207521D01* +X1211555Y207567D01* +X1211627Y207636D01* +X1211683Y207676D01* +X1212100Y208092D01* +X1212135Y208139D01* +X1212178Y208179D01* +X1212220Y208252D01* +X1212271Y208319D01* +X1212292Y208374D01* +X1212321Y208424D01* +X1212342Y208506D01* +X1212372Y208585D01* +X1212377Y208643D01* +X1212391Y208700D01* +X1212389Y208784D01* +X1212396Y208868D01* +X1212384Y208926D01* +X1212382Y208984D01* +X1212356Y209064D01* +X1212340Y209147D01* +X1212313Y209199D01* +X1212295Y209255D01* +X1212255Y209311D01* +X1212209Y209399D01* +X1212153Y209458D01* +X1212140Y209479D01* +X1212124Y209495D01* +X1212100Y209528D01* +X1210887Y210741D01* +X1210887Y211096D01* +X1210879Y211154D01* +X1210881Y211212D01* +X1210859Y211294D01* +X1210847Y211378D01* +X1210824Y211431D01* +X1210809Y211487D01* +X1210766Y211560D01* +X1210731Y211637D01* +X1210693Y211682D01* +X1210664Y211732D01* +X1210602Y211790D01* +X1210548Y211854D01* +X1210499Y211886D01* +X1210456Y211926D01* +X1210381Y211965D01* +X1210311Y212012D01* +X1210255Y212029D01* +X1210203Y212056D01* +X1210135Y212067D01* +X1210040Y212097D01* +X1209940Y212100D01* +X1209872Y212111D01* +X1208517Y212111D01* +X1208301Y212328D01* +X1208231Y212380D01* +X1208167Y212440D01* +X1208117Y212466D01* +X1208073Y212499D01* +X1207992Y212530D01* +X1207914Y212570D01* +X1207866Y212578D01* +X1207808Y212600D01* +X1207660Y212612D01* +X1207583Y212625D01* +X1205343Y212625D01* +X1203206Y213511D01* +X1201571Y215146D01* +X1200685Y217283D01* +X1200685Y219597D01* +X1201571Y221734D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209483Y223498D01* +X1209595Y223469D01* +X1209704Y223435D01* +X1209732Y223434D01* +X1209759Y223427D01* +X1209873Y223430D01* +X1209988Y223427D01* +X1210015Y223434D01* +X1210043Y223435D01* +X1210152Y223470D01* +X1210263Y223499D01* +X1210287Y223513D01* +X1210314Y223522D01* +X1210409Y223586D01* +X1210508Y223644D01* +X1210527Y223665D01* +X1210550Y223680D01* +X1210624Y223768D01* +X1210702Y223852D01* +X1210715Y223877D01* +X1210733Y223898D01* +X1210779Y224003D01* +X1210832Y224105D01* +X1210836Y224129D01* +X1210848Y224157D01* +X1210885Y224421D01* +X1210887Y224436D01* +X1210887Y232279D01* +X1212100Y233492D01* +X1212135Y233539D01* +X1212178Y233579D01* +X1212220Y233652D01* +X1212271Y233719D01* +X1212292Y233774D01* +X1212321Y233824D01* +X1212342Y233906D01* +X1212372Y233985D01* +X1212377Y234043D01* +X1212391Y234100D01* +X1212389Y234184D01* +X1212396Y234268D01* +X1212384Y234326D01* +X1212382Y234384D01* +X1212356Y234464D01* +X1212340Y234547D01* +X1212313Y234599D01* +X1212295Y234655D01* +X1212255Y234711D01* +X1212209Y234799D01* +X1212173Y234837D01* +X1212159Y234860D01* +X1212126Y234891D01* +X1212100Y234928D01* +X1210884Y236144D01* +X1210883Y236145D01* +X1210882Y236146D01* +X1210764Y236234D01* +X1210657Y236315D01* +X1210655Y236315D01* +X1210654Y236316D01* +X1210521Y236367D01* +X1210391Y236416D01* +X1210390Y236416D01* +X1210388Y236417D01* +X1210244Y236428D01* +X1210108Y236439D01* +X1210106Y236439D01* +X1210105Y236439D01* +X1210089Y236436D01* +X1209829Y236384D01* +X1209802Y236369D01* +X1209778Y236364D01* +X1207657Y235485D01* +X1205343Y235485D01* +X1203206Y236371D01* +X1201571Y238006D01* +X1200685Y240143D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1210248Y245776D01* +X1210294Y245740D01* +X1210335Y245698D01* +X1210408Y245655D01* +X1210475Y245605D01* +X1210530Y245584D01* +X1210580Y245554D01* +X1210662Y245534D01* +X1210741Y245503D01* +X1210799Y245499D01* +X1210855Y245484D01* +X1210940Y245487D01* +X1211024Y245480D01* +X1211081Y245491D01* +X1211140Y245493D01* +X1211220Y245519D01* +X1211303Y245536D01* +X1211354Y245563D01* +X1211410Y245581D01* +X1211466Y245621D01* +X1211555Y245667D01* +X1211627Y245736D01* +X1211683Y245776D01* +X1212100Y246192D01* +X1212135Y246239D01* +X1212178Y246279D01* +X1212220Y246352D01* +X1212271Y246419D01* +X1212292Y246474D01* +X1212321Y246524D01* +X1212342Y246606D01* +X1212372Y246685D01* +X1212377Y246743D01* +X1212391Y246800D01* +X1212389Y246884D01* +X1212396Y246968D01* +X1212384Y247026D01* +X1212382Y247084D01* +X1212356Y247164D01* +X1212340Y247247D01* +X1212313Y247299D01* +X1212295Y247355D01* +X1212255Y247411D01* +X1212209Y247499D01* +X1212140Y247572D01* +X1212100Y247628D01* +X1210887Y248841D01* +X1210887Y249196D01* +X1210879Y249254D01* +X1210881Y249312D01* +X1210859Y249394D01* +X1210847Y249478D01* +X1210824Y249531D01* +X1210809Y249587D01* +X1210766Y249660D01* +X1210731Y249737D01* +X1210693Y249782D01* +X1210664Y249832D01* +X1210602Y249890D01* +X1210548Y249954D01* +X1210499Y249986D01* +X1210456Y250026D01* +X1210381Y250065D01* +X1210311Y250112D01* +X1210255Y250129D01* +X1210203Y250156D01* +X1210135Y250167D01* +X1210040Y250197D01* +X1209940Y250200D01* +X1209872Y250211D01* +X1167877Y250211D01* +X1157501Y260588D01* +X1157431Y260640D01* +X1157367Y260700D01* +X1157317Y260726D01* +X1157273Y260759D01* +X1157192Y260790D01* +X1157114Y260830D01* +X1157066Y260838D01* +X1157008Y260860D01* +X1156860Y260872D01* +X1156783Y260885D01* +X1154543Y260885D01* +X1152406Y261771D01* +X1150771Y263406D01* +X1149885Y265543D01* +X1149885Y267857D01* +X1150771Y269994D01* +X1152406Y271629D01* +X1154543Y272515D01* +X1156857Y272515D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265617D01* +X1161527Y265531D01* +X1161530Y265443D01* +X1161547Y265391D01* +X1161555Y265336D01* +X1161590Y265256D01* +X1161617Y265173D01* +X1161645Y265134D01* +X1161671Y265076D01* +X1161767Y264963D01* +X1161812Y264899D01* +X1170105Y256606D01* +X1170175Y256554D01* +X1170239Y256494D01* +X1170289Y256468D01* +X1170333Y256435D01* +X1170414Y256404D01* +X1170492Y256364D01* +X1170540Y256356D01* +X1170598Y256334D01* +X1170746Y256322D01* +X1170823Y256309D01* +X1209872Y256309D01* +X1209930Y256317D01* +X1209988Y256315D01* +X1210070Y256337D01* +X1210154Y256349D01* +X1210207Y256372D01* +X1210263Y256387D01* +X1210336Y256430D01* +X1210413Y256465D01* +X1210458Y256503D01* +X1210508Y256532D01* +X1210566Y256594D01* +X1210630Y256648D01* +X1210662Y256697D01* +X1210702Y256740D01* +X1210741Y256815D01* +X1210788Y256885D01* +X1210805Y256941D01* +X1210832Y256993D01* +X1210843Y257061D01* +X1210873Y257156D01* +X1210876Y257256D01* +X1210887Y257324D01* +X1210887Y257679D01* +X1212100Y258892D01* +X1212116Y258914D01* +X1212136Y258930D01* +X1212152Y258955D01* +X1212178Y258979D01* +X1212220Y259052D01* +X1212271Y259119D01* +X1212283Y259152D01* +X1212293Y259167D01* +X1212300Y259188D01* +X1212321Y259224D01* +X1212342Y259306D01* +X1212372Y259385D01* +X1212376Y259427D01* +X1212379Y259438D01* +X1212380Y259453D01* +X1212391Y259500D01* +X1212389Y259584D01* +X1212396Y259668D01* +X1212386Y259715D01* +X1212386Y259722D01* +X1212384Y259731D01* +X1212382Y259784D01* +X1212356Y259864D01* +X1212340Y259947D01* +X1212315Y259994D01* +X1212315Y259997D01* +X1212312Y260001D01* +X1212295Y260055D01* +X1212255Y260111D01* +X1212209Y260199D01* +X1212170Y260240D01* +X1212169Y260242D01* +X1212164Y260247D01* +X1212140Y260272D01* +X1212100Y260328D01* +X1210887Y261541D01* +X1210887Y261896D01* +X1210879Y261954D01* +X1210881Y262012D01* +X1210859Y262094D01* +X1210847Y262178D01* +X1210824Y262231D01* +X1210809Y262287D01* +X1210766Y262360D01* +X1210731Y262437D01* +X1210693Y262482D01* +X1210664Y262532D01* +X1210602Y262590D01* +X1210548Y262654D01* +X1210499Y262686D01* +X1210456Y262726D01* +X1210381Y262765D01* +X1210311Y262812D01* +X1210255Y262829D01* +X1210203Y262856D01* +X1210135Y262867D01* +X1210040Y262897D01* +X1209940Y262900D01* +X1209872Y262911D01* +X1175497Y262911D01* +X1167661Y270748D01* +X1167591Y270800D01* +X1167527Y270860D01* +X1167477Y270886D01* +X1167433Y270919D01* +X1167352Y270950D01* +X1167274Y270990D01* +X1167226Y270998D01* +X1167168Y271020D01* +X1167020Y271032D01* +X1166943Y271045D01* +X1164703Y271045D01* +X1162566Y271931D01* +X1160931Y273566D01* +X1160045Y275703D01* +X1160045Y278017D01* +X1160931Y280154D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275777D01* +X1171687Y275691D01* +X1171690Y275603D01* +X1171707Y275551D01* +X1171715Y275496D01* +X1171750Y275416D01* +X1171777Y275333D01* +X1171805Y275294D01* +X1171831Y275236D01* +X1171927Y275123D01* +X1171972Y275059D01* +X1177725Y269306D01* +X1177795Y269254D01* +X1177859Y269194D01* +X1177909Y269168D01* +X1177953Y269135D01* +X1178034Y269104D01* +X1178112Y269064D01* +X1178160Y269056D01* +X1178218Y269034D01* +X1178366Y269022D01* +X1178443Y269009D01* +X1209872Y269009D01* +X1209930Y269017D01* +X1209988Y269015D01* +X1210070Y269037D01* +X1210154Y269049D01* +X1210207Y269072D01* +X1210263Y269087D01* +X1210336Y269130D01* +X1210413Y269165D01* +X1210458Y269203D01* +X1210508Y269232D01* +X1210566Y269294D01* +X1210630Y269348D01* +X1210662Y269397D01* +X1210702Y269440D01* +X1210741Y269515D01* +X1210788Y269585D01* +X1210805Y269641D01* +X1210832Y269693D01* +X1210843Y269761D01* +X1210873Y269856D01* +X1210876Y269956D01* +X1210887Y270024D01* +X1210887Y270379D01* +X1212100Y271592D01* +X1212135Y271639D01* +X1212178Y271679D01* +X1212220Y271752D01* +X1212271Y271819D01* +X1212292Y271874D01* +X1212321Y271924D01* +X1212342Y272006D01* +X1212372Y272085D01* +X1212377Y272143D01* +X1212391Y272200D01* +X1212389Y272284D01* +X1212396Y272368D01* +X1212384Y272426D01* +X1212382Y272484D01* +X1212356Y272564D01* +X1212340Y272647D01* +X1212313Y272699D01* +X1212295Y272755D01* +X1212255Y272811D01* +X1212209Y272899D01* +X1212140Y272972D01* +X1212100Y273028D01* +X1210884Y274244D01* +X1210883Y274245D01* +X1210882Y274246D01* +X1210770Y274330D01* +X1210657Y274415D01* +X1210655Y274415D01* +X1210654Y274416D01* +X1210524Y274465D01* +X1210391Y274516D01* +X1210390Y274516D01* +X1210388Y274517D01* +X1210245Y274528D01* +X1210108Y274539D01* +X1210107Y274539D01* +X1210105Y274539D01* +X1210089Y274536D01* +X1209829Y274484D01* +X1209802Y274469D01* +X1209778Y274464D01* +X1207657Y273585D01* +X1205343Y273585D01* +X1203206Y274471D01* +X1201571Y276106D01* +X1201088Y277271D01* +X1201073Y277296D01* +X1201064Y277324D01* +X1201001Y277419D01* +X1200943Y277516D01* +X1200922Y277536D01* +X1200906Y277561D01* +X1200819Y277633D01* +X1200737Y277711D01* +X1200711Y277725D01* +X1200688Y277744D01* +X1200585Y277790D01* +X1200484Y277841D01* +X1200455Y277847D01* +X1200428Y277859D01* +X1200316Y277875D01* +X1200205Y277896D01* +X1200176Y277894D01* +X1200147Y277898D01* +X1200035Y277882D01* +X1199922Y277872D01* +X1199895Y277861D01* +X1199865Y277857D01* +X1199762Y277811D01* +X1199657Y277770D01* +X1199633Y277752D01* +X1199606Y277740D01* +X1199520Y277667D01* +X1199430Y277598D01* +X1199412Y277575D01* +X1199390Y277556D01* +X1199348Y277489D01* +X1199260Y277371D01* +X1199244Y277329D01* +X1199227Y277304D01* +X1199222Y277287D01* +X1199212Y277271D01* +X1198729Y276106D01* +X1197094Y274471D01* +X1194957Y273585D01* +X1192643Y273585D01* +X1190506Y274471D01* +X1188871Y276106D01* +X1187985Y278243D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194883Y285215D01* +X1194969Y285227D01* +X1195057Y285230D01* +X1195109Y285247D01* +X1195164Y285255D01* +X1195244Y285290D01* +X1195327Y285317D01* +X1195366Y285345D01* +X1195424Y285371D01* +X1195537Y285467D01* +X1195601Y285512D01* +X1204497Y294409D01* +X1209872Y294409D01* +X1209930Y294417D01* +X1209988Y294415D01* +X1210070Y294437D01* +X1210154Y294449D01* +X1210207Y294472D01* +X1210263Y294487D01* +X1210336Y294530D01* +X1210413Y294565D01* +X1210458Y294603D01* +X1210508Y294632D01* +X1210566Y294694D01* +X1210630Y294748D01* +X1210662Y294797D01* +X1210702Y294840D01* +X1210741Y294915D01* +X1210788Y294985D01* +X1210805Y295041D01* +X1210832Y295093D01* +X1210843Y295161D01* +X1210873Y295256D01* +X1210876Y295356D01* +X1210887Y295424D01* +X1210887Y295779D01* +X1213001Y297893D01* +X1232839Y297893D01* +X1234953Y295779D01* +X1234953Y286941D01* +X1233740Y285728D01* +X1233705Y285681D01* +X1233662Y285641D01* +X1233620Y285568D01* +X1233569Y285501D01* +X1233548Y285446D01* +X1233519Y285396D01* +X1233498Y285314D01* +X1233468Y285235D01* +X1233463Y285177D01* +X1233449Y285120D01* +X1233451Y285036D01* +X1233444Y284952D01* +X1233456Y284894D01* +X1233458Y284836D01* +X1233484Y284756D01* +X1233500Y284673D01* +X1233527Y284621D01* +X1233545Y284565D01* +X1233585Y284509D01* +X1233631Y284421D01* +X1233676Y284373D01* +X1233689Y284351D01* +X1233715Y284327D01* +X1233740Y284292D01* +X1234953Y283079D01* +X1234953Y274241D01* +X1233740Y273028D01* +X1233705Y272981D01* +X1233662Y272941D01* +X1233620Y272868D01* +X1233569Y272801D01* +X1233548Y272746D01* +X1233519Y272696D01* +X1233498Y272614D01* +X1233468Y272535D01* +X1233463Y272477D01* +X1233449Y272420D01* +X1233451Y272336D01* +X1233444Y272252D01* +X1233456Y272194D01* +X1233458Y272136D01* +X1233484Y272056D01* +X1233500Y271973D01* +X1233527Y271921D01* +X1233545Y271865D01* +X1233585Y271809D01* +X1233631Y271721D01* +X1233700Y271648D01* +X1233740Y271592D01* +X1234953Y270379D01* +X1234953Y261541D01* +X1233740Y260328D01* +X1233706Y260283D01* +X1233704Y260281D01* +X1233703Y260280D01* +X1233662Y260241D01* +X1233620Y260168D01* +X1233569Y260101D01* +X1233549Y260048D01* +X1233547Y260045D01* +X1233546Y260042D01* +X1233519Y259996D01* +X1233498Y259914D01* +X1233468Y259835D01* +X1233463Y259782D01* +X1233461Y259774D01* +X1233461Y259768D01* +X1233449Y259720D01* +X1233451Y259636D01* +X1233444Y259552D01* +X1233454Y259503D01* +X1233454Y259489D01* +X1233456Y259479D01* +X1233458Y259436D01* +X1233484Y259356D01* +X1233500Y259273D01* +X1233520Y259235D01* +X1233525Y259214D01* +X1233534Y259200D01* +X1233545Y259165D01* +X1233585Y259109D01* +X1233631Y259021D01* +X1233656Y258994D01* +X1233671Y258970D01* +X1233713Y258931D01* +X1233740Y258892D01* +X1234953Y257679D01* +X1234953Y248841D01* +X1233740Y247628D01* +X1233705Y247581D01* +X1233662Y247541D01* +X1233620Y247468D01* +X1233569Y247401D01* +X1233548Y247346D01* +X1233519Y247296D01* +X1233498Y247214D01* +X1233468Y247135D01* +X1233463Y247077D01* +X1233449Y247020D01* +X1233451Y246936D01* +X1233444Y246852D01* +X1233456Y246794D01* +X1233458Y246736D01* +X1233484Y246656D01* +X1233500Y246573D01* +X1233527Y246521D01* +X1233545Y246465D01* +X1233585Y246409D01* +X1233631Y246321D01* +X1233700Y246248D01* +X1233740Y246192D01* +X1234953Y244979D01* +X1234953Y236141D01* +X1233740Y234928D01* +X1233727Y234911D01* +X1233714Y234900D01* +X1233697Y234874D01* +X1233662Y234841D01* +X1233620Y234768D01* +X1233569Y234701D01* +X1233548Y234646D01* +X1233519Y234596D01* +X1233498Y234514D01* +X1233468Y234435D01* +X1233463Y234377D01* +X1233449Y234320D01* +X1233451Y234236D01* +X1233444Y234152D01* +X1233456Y234094D01* +X1233458Y234036D01* +X1233484Y233956D01* +X1233500Y233873D01* +X1233527Y233821D01* +X1233545Y233765D01* +X1233585Y233709D01* +X1233631Y233621D01* +X1233700Y233548D01* +X1233740Y233492D01* +X1234953Y232279D01* +X1234953Y223441D01* +X1233740Y222228D01* +X1233705Y222181D01* +X1233662Y222141D01* +X1233620Y222068D01* +X1233569Y222001D01* +X1233548Y221946D01* +X1233519Y221896D01* +X1233498Y221814D01* +X1233468Y221735D01* +X1233463Y221677D01* +X1233449Y221620D01* +X1233451Y221536D01* +X1233444Y221452D01* +X1233456Y221394D01* +X1233458Y221336D01* +X1233484Y221256D01* +X1233500Y221173D01* +X1233527Y221121D01* +X1233545Y221065D01* +X1233585Y221009D01* +X1233631Y220921D01* +X1233700Y220848D01* +X1233740Y220792D01* +X1234953Y219579D01* +X1234953Y210741D01* +X1233740Y209528D01* +X1233705Y209481D01* +X1233662Y209441D01* +X1233620Y209368D01* +X1233569Y209301D01* +X1233548Y209246D01* +X1233519Y209196D01* +X1233498Y209114D01* +X1233468Y209035D01* +X1233463Y208977D01* +X1233449Y208920D01* +X1233451Y208836D01* +X1233444Y208752D01* +X1233456Y208694D01* +X1233458Y208636D01* +X1233484Y208556D01* +X1233500Y208473D01* +X1233527Y208421D01* +X1233545Y208365D01* +X1233585Y208309D01* +X1233631Y208221D01* +X1233700Y208148D01* +X1233740Y208092D01* +X1234953Y206879D01* +X1234953Y198041D01* +X1233740Y196828D01* +X1233705Y196781D01* +X1233662Y196741D01* +X1233620Y196668D01* +X1233569Y196601D01* +X1233548Y196546D01* +X1233519Y196496D01* +X1233498Y196414D01* +X1233468Y196335D01* +X1233463Y196277D01* +X1233449Y196220D01* +X1233451Y196136D01* +X1233444Y196052D01* +X1233456Y195994D01* +X1233458Y195936D01* +X1233484Y195856D01* +X1233500Y195773D01* +X1233527Y195721D01* +X1233545Y195665D01* +X1233585Y195609D01* +X1233631Y195521D01* +X1233700Y195448D01* +X1233740Y195392D01* +X1234953Y194179D01* +X1234953Y185341D01* +X1233740Y184128D01* +X1233705Y184081D01* +X1233662Y184041D01* +X1233620Y183968D01* +X1233569Y183901D01* +X1233548Y183846D01* +X1233519Y183796D01* +X1233498Y183714D01* +X1233468Y183635D01* +X1233463Y183577D01* +X1233449Y183520D01* +X1233451Y183436D01* +X1233444Y183352D01* +X1233456Y183294D01* +X1233458Y183236D01* +X1233484Y183156D01* +X1233500Y183073D01* +X1233527Y183021D01* +X1233545Y182965D01* +X1233585Y182909D01* +X1233631Y182821D01* +X1233700Y182748D01* +X1233740Y182692D01* +X1234953Y181479D01* +X1234953Y172641D01* +X1233740Y171428D01* +X1233705Y171381D01* +X1233662Y171341D01* +X1233620Y171268D01* +X1233569Y171201D01* +X1233548Y171146D01* +X1233519Y171096D01* +X1233498Y171014D01* +X1233468Y170935D01* +X1233463Y170877D01* +X1233449Y170820D01* +X1233451Y170736D01* +X1233444Y170652D01* +X1233456Y170594D01* +X1233458Y170536D01* +X1233484Y170456D01* +X1233500Y170373D01* +X1233527Y170321D01* +X1233545Y170265D01* +X1233585Y170209D01* +X1233631Y170121D01* +X1233700Y170048D01* +X1233740Y169992D01* +X1234953Y168779D01* +X1234953Y168424D01* +X1234961Y168366D01* +X1234959Y168308D01* +X1234981Y168226D01* +X1234993Y168142D01* +X1235016Y168089D01* +X1235031Y168033D01* +X1235074Y167960D01* +X1235109Y167883D01* +X1235147Y167838D01* +X1235176Y167788D01* +X1235238Y167730D01* +X1235292Y167666D01* +X1235341Y167634D01* +X1235384Y167594D01* +X1235459Y167555D01* +X1235529Y167508D01* +X1235585Y167491D01* +X1235637Y167464D01* +X1235705Y167453D01* +X1235800Y167423D01* +X1235900Y167420D01* +X1235968Y167409D01* +X1237097Y167409D01* +X1237183Y167421D01* +X1237271Y167424D01* +X1237323Y167441D01* +X1237378Y167449D01* +X1237458Y167484D01* +X1237541Y167511D01* +X1237580Y167539D01* +X1237638Y167565D01* +X1237751Y167661D01* +X1237815Y167706D01* +X1241254Y171145D01* +X1241306Y171215D01* +X1241366Y171279D01* +X1241392Y171328D01* +X1241425Y171373D01* +X1241456Y171454D01* +X1241496Y171532D01* +X1241504Y171580D01* +X1241526Y171638D01* +X1241538Y171786D01* +X1241551Y171863D01* +X1241551Y189223D01* +X1248417Y196089D01* +X1249157Y196089D01* +X1249244Y196101D01* +X1249331Y196104D01* +X1249384Y196121D01* +X1249439Y196129D01* +X1249519Y196164D01* +X1249602Y196191D01* +X1249641Y196219D01* +X1249698Y196245D01* +X1249811Y196341D01* +X1249875Y196386D01* +X1251562Y198073D01* +X1257618Y198073D01* +X1259122Y196569D01* +X1259169Y196534D01* +X1259209Y196491D01* +X1259282Y196449D01* +X1259349Y196398D01* +X1259404Y196377D01* +X1259454Y196348D01* +X1259536Y196327D01* +X1259615Y196297D01* +X1259673Y196292D01* +X1259730Y196277D01* +X1259814Y196280D01* +X1259898Y196273D01* +X1259956Y196285D01* +X1260014Y196286D01* +X1260094Y196312D01* +X1260177Y196329D01* +X1260229Y196356D01* +X1260285Y196374D01* +X1260341Y196414D01* +X1260429Y196460D01* +X1260502Y196529D01* +X1260558Y196569D01* +X1262062Y198073D01* +X1268118Y198073D01* +X1269873Y196318D01* +X1269873Y189762D01* +X1268118Y188007D01* +X1264789Y188007D01* +X1264703Y187995D01* +X1264615Y187992D01* +X1264563Y187975D01* +X1264508Y187967D01* +X1264428Y187932D01* +X1264345Y187905D01* +X1264306Y187877D01* +X1264248Y187851D01* +X1264135Y187755D01* +X1264071Y187710D01* +X1260917Y184556D01* +X1260900Y184532D01* +X1260877Y184513D01* +X1260815Y184419D01* +X1260747Y184329D01* +X1260736Y184301D01* +X1260720Y184277D01* +X1260686Y184169D01* +X1260645Y184063D01* +X1260643Y184034D01* +X1260634Y184006D01* +X1260631Y183892D01* +X1260622Y183780D01* +X1260627Y183751D01* +X1260627Y183722D01* +X1260655Y183612D01* +X1260678Y183501D01* +X1260691Y183475D01* +X1260699Y183447D01* +X1260756Y183349D01* +X1260809Y183249D01* +X1260829Y183227D01* +X1260844Y183202D01* +X1260926Y183125D01* +X1261004Y183043D01* +X1261030Y183028D01* +X1261051Y183008D01* +X1261152Y182956D01* +X1261250Y182899D01* +X1261278Y182892D01* +X1261304Y182878D01* +X1261382Y182865D01* +X1261525Y182829D01* +X1261588Y182831D01* +X1261635Y182823D01* +X1267476Y182823D01* +X1269323Y180976D01* +X1269323Y171704D01* +X1267476Y169857D01* +X1267161Y169857D01* +X1267075Y169845D01* +X1266987Y169842D01* +X1266935Y169825D01* +X1266880Y169817D01* +X1266800Y169782D01* +X1266717Y169755D01* +X1266678Y169727D01* +X1266620Y169701D01* +X1266507Y169605D01* +X1266443Y169560D01* +X1264039Y167156D01* +X1264022Y167132D01* +X1263999Y167113D01* +X1263936Y167019D01* +X1263869Y166929D01* +X1263858Y166901D01* +X1263842Y166877D01* +X1263808Y166769D01* +X1263767Y166663D01* +X1263765Y166634D01* +X1263756Y166606D01* +X1263753Y166492D01* +X1263744Y166380D01* +X1263749Y166351D01* +X1263749Y166322D01* +X1263777Y166212D01* +X1263800Y166101D01* +X1263813Y166075D01* +X1263821Y166047D01* +X1263878Y165949D01* +X1263931Y165849D01* +X1263951Y165827D01* +X1263966Y165802D01* +X1264048Y165725D01* +X1264126Y165643D01* +X1264152Y165628D01* +X1264173Y165608D01* +X1264274Y165556D01* +X1264372Y165499D01* +X1264400Y165492D01* +X1264426Y165478D01* +X1264504Y165465D01* +X1264647Y165429D01* +X1264710Y165431D01* +X1264757Y165423D01* +X1267476Y165423D01* +X1269323Y163576D01* +X1269323Y158439D01* +X1269335Y158353D01* +X1269338Y158265D01* +X1269355Y158213D01* +X1269363Y158158D01* +X1269398Y158078D01* +X1269425Y157995D01* +X1269453Y157956D01* +X1269479Y157898D01* +X1269575Y157785D01* +X1269620Y157721D01* +X1273937Y153405D01* +X1273937Y134175D01* +X1271854Y132091D01* +X1271853Y132091D01* +X1270170Y130408D01* +X1270118Y130338D01* +X1270058Y130274D01* +X1270032Y130225D01* +X1269999Y130181D01* +X1269968Y130099D01* +X1269928Y130021D01* +X1269920Y129974D01* +X1269898Y129915D01* +X1269891Y129837D01* +X1269887Y129822D01* +X1269885Y129765D01* +X1269873Y129690D01* +X1269873Y126262D01* +X1268118Y124507D01* +X1262062Y124507D01* +X1260558Y126011D01* +X1260511Y126046D01* +X1260471Y126089D01* +X1260398Y126131D01* +X1260331Y126182D01* +X1260276Y126203D01* +X1260226Y126233D01* +X1260144Y126253D01* +X1260065Y126283D01* +X1260007Y126288D01* +X1259950Y126303D01* +X1259866Y126300D01* +X1259782Y126307D01* +X1259724Y126295D01* +X1259666Y126294D01* +X1259586Y126268D01* +X1259503Y126251D01* +X1259451Y126224D01* +X1259395Y126206D01* +X1259339Y126166D01* +X1259251Y126120D01* +X1259178Y126051D01* +X1259122Y126011D01* +X1258106Y124995D01* +X1258054Y124925D01* +X1257994Y124861D01* +X1257968Y124812D01* +X1257935Y124768D01* +X1257904Y124686D01* +X1257864Y124608D01* +X1257856Y124561D01* +X1257834Y124502D01* +X1257822Y124355D01* +X1257809Y124277D01* +X1257809Y118117D01* +X1225543Y85851D01* +X1101097Y85851D01* +G37* +%LPD*% +G36* +X247813Y101603D02* +X247813Y101603D01* +X247842Y101600D01* +X247954Y101623D01* +X248066Y101638D01* +X248092Y101650D01* +X248121Y101656D01* +X248222Y101708D01* +X248325Y101755D01* +X248347Y101774D01* +X248374Y101787D01* +X248456Y101865D01* +X248542Y101938D01* +X248558Y101963D01* +X248580Y101983D01* +X248637Y102081D01* +X248700Y102175D01* +X248709Y102203D01* +X248723Y102228D01* +X248751Y102338D01* +X248785Y102446D01* +X248786Y102475D01* +X248793Y102504D01* +X248790Y102617D01* +X248793Y102730D01* +X248785Y102759D01* +X248784Y102788D01* +X248750Y102896D01* +X248721Y103005D01* +X248706Y103030D01* +X248697Y103058D01* +X248651Y103122D01* +X248576Y103250D01* +X248530Y103293D01* +X248502Y103332D01* +X247606Y104227D01* +X246390Y105812D01* +X245391Y107543D01* +X244627Y109388D01* +X244110Y111318D01* +X243985Y112267D01* +X258073Y112267D01* +X258131Y112275D01* +X258190Y112273D01* +X258271Y112295D01* +X258355Y112306D01* +X258408Y112330D01* +X258465Y112345D01* +X258537Y112388D01* +X258614Y112423D01* +X258659Y112461D01* +X258709Y112490D01* +X258767Y112552D01* +X258831Y112606D01* +X258864Y112655D01* +X258904Y112698D01* +X258942Y112773D01* +X258989Y112843D01* +X259007Y112899D01* +X259033Y112951D01* +X259045Y113019D01* +X259075Y113114D01* +X259077Y113214D01* +X259089Y113282D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y113282D01* +X259099Y113224D01* +X259097Y113166D01* +X259118Y113084D01* +X259130Y113000D01* +X259154Y112947D01* +X259169Y112891D01* +X259212Y112818D01* +X259247Y112741D01* +X259284Y112696D01* +X259314Y112646D01* +X259376Y112588D01* +X259430Y112524D01* +X259479Y112492D01* +X259522Y112452D01* +X259597Y112413D01* +X259667Y112366D01* +X259723Y112349D01* +X259775Y112322D01* +X259843Y112311D01* +X259938Y112281D01* +X260038Y112278D01* +X260106Y112267D01* +X274194Y112267D01* +X274070Y111318D01* +X273552Y109388D01* +X272788Y107543D01* +X271789Y105812D01* +X270573Y104227D01* +X269677Y103332D01* +X269659Y103308D01* +X269637Y103289D01* +X269574Y103195D01* +X269506Y103105D01* +X269496Y103077D01* +X269479Y103053D01* +X269445Y102945D01* +X269405Y102839D01* +X269403Y102810D01* +X269394Y102782D01* +X269391Y102668D01* +X269381Y102556D01* +X269387Y102527D01* +X269386Y102498D01* +X269415Y102388D01* +X269437Y102277D01* +X269451Y102251D01* +X269458Y102222D01* +X269516Y102125D01* +X269568Y102025D01* +X269589Y102003D01* +X269603Y101978D01* +X269686Y101901D01* +X269764Y101818D01* +X269789Y101804D01* +X269811Y101784D01* +X269912Y101732D01* +X270009Y101675D01* +X270038Y101668D01* +X270064Y101654D01* +X270141Y101641D01* +X270285Y101605D01* +X270347Y101607D01* +X270395Y101599D01* +X272127Y101599D01* +X272213Y101611D01* +X272301Y101614D01* +X272353Y101631D01* +X272408Y101638D01* +X272488Y101674D01* +X272571Y101701D01* +X272610Y101729D01* +X272667Y101755D01* +X272781Y101850D01* +X272844Y101896D01* +X291294Y120345D01* +X291294Y120346D01* +X293377Y122429D01* +X361707Y122429D01* +X361793Y122441D01* +X361881Y122444D01* +X361933Y122461D01* +X361988Y122469D01* +X362068Y122504D01* +X362151Y122531D01* +X362190Y122559D01* +X362248Y122585D01* +X362361Y122681D01* +X362425Y122726D01* +X382447Y142749D01* +X423657Y142749D01* +X423744Y142761D01* +X423831Y142764D01* +X423884Y142781D01* +X423939Y142789D01* +X424019Y142824D01* +X424102Y142851D01* +X424141Y142879D01* +X424198Y142905D01* +X424311Y143001D01* +X424375Y143046D01* +X426062Y144733D01* +X432118Y144733D01* +X433622Y143229D01* +X433669Y143194D01* +X433709Y143151D01* +X433782Y143109D01* +X433849Y143058D01* +X433904Y143037D01* +X433954Y143008D01* +X434036Y142987D01* +X434115Y142957D01* +X434173Y142952D01* +X434230Y142937D01* +X434314Y142940D01* +X434398Y142933D01* +X434456Y142945D01* +X434514Y142946D01* +X434594Y142972D01* +X434677Y142989D01* +X434729Y143016D01* +X434785Y143034D01* +X434841Y143074D01* +X434929Y143120D01* +X435002Y143189D01* +X435058Y143229D01* +X436562Y144733D01* +X442618Y144733D01* +X444305Y143046D01* +X444375Y142994D01* +X444438Y142934D01* +X444488Y142908D01* +X444532Y142875D01* +X444614Y142844D01* +X444692Y142804D01* +X444739Y142796D01* +X444798Y142774D01* +X444945Y142762D01* +X445023Y142749D01* +X474687Y142749D01* +X474773Y142761D01* +X474861Y142764D01* +X474913Y142781D01* +X474968Y142789D01* +X475048Y142824D01* +X475131Y142851D01* +X475170Y142879D01* +X475228Y142905D01* +X475341Y143001D01* +X475405Y143046D01* +X484454Y152095D01* +X484506Y152165D01* +X484566Y152229D01* +X484592Y152279D01* +X484625Y152323D01* +X484656Y152404D01* +X484696Y152482D01* +X484704Y152530D01* +X484726Y152588D01* +X484738Y152736D01* +X484751Y152813D01* +X484751Y163199D01* +X484747Y163228D01* +X484750Y163257D01* +X484727Y163368D01* +X484711Y163480D01* +X484699Y163507D01* +X484694Y163536D01* +X484642Y163636D01* +X484595Y163740D01* +X484576Y163762D01* +X484563Y163788D01* +X484485Y163870D01* +X484412Y163957D01* +X484387Y163973D01* +X484367Y163994D01* +X484269Y164051D01* +X484175Y164114D01* +X484147Y164123D01* +X484122Y164138D01* +X484012Y164166D01* +X483904Y164200D01* +X483874Y164201D01* +X483846Y164208D01* +X483733Y164204D01* +X483620Y164207D01* +X483591Y164200D01* +X483562Y164199D01* +X483454Y164164D01* +X483345Y164135D01* +X483319Y164120D01* +X483291Y164111D01* +X483228Y164066D01* +X483100Y163990D01* +X483057Y163945D01* +X483018Y163917D01* +X477770Y158669D01* +X477718Y158599D01* +X477658Y158535D01* +X477632Y158485D01* +X477599Y158441D01* +X477568Y158360D01* +X477528Y158282D01* +X477520Y158234D01* +X477498Y158176D01* +X477486Y158028D01* +X477473Y157951D01* +X477473Y154622D01* +X475718Y152867D01* +X469162Y152867D01* +X467725Y154304D01* +X467655Y154356D01* +X467592Y154416D01* +X467542Y154442D01* +X467498Y154475D01* +X467416Y154506D01* +X467338Y154546D01* +X467291Y154554D01* +X467232Y154576D01* +X467085Y154588D01* +X467007Y154601D01* +X446183Y154601D01* +X446097Y154589D01* +X446009Y154586D01* +X445957Y154569D01* +X445902Y154561D01* +X445822Y154526D01* +X445739Y154499D01* +X445700Y154471D01* +X445642Y154445D01* +X445626Y154431D01* +X443067Y154431D01* +X437598Y159900D01* +X437598Y159901D01* +X427569Y169930D01* +X427499Y169982D01* +X427435Y170042D01* +X427385Y170068D01* +X427341Y170101D01* +X427260Y170132D01* +X427182Y170172D01* +X427134Y170180D01* +X427076Y170202D01* +X426928Y170214D01* +X426851Y170227D01* +X426062Y170227D01* +X424502Y171787D01* +X424432Y171839D01* +X424368Y171899D01* +X424319Y171925D01* +X424275Y171958D01* +X424193Y171989D01* +X424115Y172029D01* +X424068Y172037D01* +X424009Y172059D01* +X423862Y172071D01* +X423784Y172084D01* +X422865Y172084D01* +X418294Y176655D01* +X418294Y180114D01* +X418282Y180201D01* +X418279Y180288D01* +X418262Y180341D01* +X418254Y180396D01* +X418219Y180476D01* +X418192Y180559D01* +X418164Y180598D01* +X418138Y180655D01* +X418042Y180768D01* +X417997Y180832D01* +X416687Y182142D01* +X416687Y188976D01* +X416679Y189034D01* +X416681Y189092D01* +X416659Y189174D01* +X416647Y189258D01* +X416624Y189311D01* +X416609Y189367D01* +X416566Y189440D01* +X416531Y189517D01* +X416493Y189562D01* +X416464Y189612D01* +X416402Y189670D01* +X416348Y189734D01* +X416299Y189766D01* +X416256Y189806D01* +X416181Y189845D01* +X416111Y189892D01* +X416055Y189909D01* +X416003Y189936D01* +X415935Y189947D01* +X415840Y189977D01* +X415740Y189980D01* +X415672Y189991D01* +X353243Y189991D01* +X353156Y189979D01* +X353069Y189976D01* +X353016Y189959D01* +X352961Y189951D01* +X352881Y189916D01* +X352798Y189889D01* +X352759Y189861D01* +X352702Y189835D01* +X352589Y189739D01* +X352525Y189694D01* +X351258Y188427D01* +X344702Y188427D01* +X343265Y189864D01* +X343195Y189916D01* +X343132Y189976D01* +X343082Y190002D01* +X343038Y190035D01* +X342979Y190057D01* +X342956Y190066D01* +X342878Y190106D01* +X342831Y190114D01* +X342772Y190136D01* +X342708Y190141D01* +X342625Y190148D01* +X342547Y190161D01* +X331883Y190161D01* +X331797Y190149D01* +X331709Y190146D01* +X331657Y190129D01* +X331602Y190121D01* +X331522Y190086D01* +X331439Y190059D01* +X331400Y190031D01* +X331342Y190005D01* +X331229Y189909D01* +X331165Y189864D01* +X325713Y184411D01* +X324974Y184411D01* +X324945Y184407D01* +X324916Y184409D01* +X324805Y184387D01* +X324693Y184371D01* +X324666Y184359D01* +X324637Y184354D01* +X324537Y184301D01* +X324434Y184255D01* +X324411Y184236D01* +X324385Y184223D01* +X324303Y184145D01* +X324217Y184071D01* +X324200Y184047D01* +X324179Y184027D01* +X324122Y183929D01* +X324059Y183835D01* +X324050Y183807D01* +X324035Y183782D01* +X324007Y183672D01* +X323973Y183564D01* +X323972Y183534D01* +X323965Y183506D01* +X323969Y183393D01* +X323966Y183280D01* +X323973Y183251D01* +X323974Y183222D01* +X324009Y183114D01* +X324038Y183005D01* +X324053Y182979D01* +X324062Y182951D01* +X324107Y182888D01* +X324183Y182760D01* +X324229Y182717D01* +X324257Y182678D01* +X326749Y180185D01* +X328412Y176171D01* +X328412Y171825D01* +X326749Y167811D01* +X323677Y164738D01* +X319662Y163075D01* +X315317Y163075D01* +X311302Y164738D01* +X308230Y167811D01* +X306567Y171825D01* +X306567Y176171D01* +X308230Y180185D01* +X310723Y182678D01* +X310740Y182701D01* +X310763Y182720D01* +X310825Y182815D01* +X310894Y182905D01* +X310904Y182933D01* +X310920Y182957D01* +X310954Y183065D01* +X310995Y183171D01* +X310997Y183200D01* +X311006Y183228D01* +X311009Y183341D01* +X311018Y183454D01* +X311013Y183483D01* +X311013Y183512D01* +X310985Y183622D01* +X310962Y183733D01* +X310949Y183759D01* +X310942Y183787D01* +X310884Y183885D01* +X310831Y183985D01* +X310811Y184006D01* +X310796Y184032D01* +X310714Y184109D01* +X310636Y184191D01* +X310610Y184206D01* +X310589Y184226D01* +X310488Y184278D01* +X310390Y184335D01* +X310362Y184342D01* +X310336Y184356D01* +X310258Y184369D01* +X310115Y184405D01* +X310052Y184403D01* +X310005Y184411D01* +X308742Y184411D01* +X304745Y188408D01* +X304722Y188425D01* +X304703Y188448D01* +X304609Y188510D01* +X304518Y188578D01* +X304491Y188589D01* +X304466Y188605D01* +X304358Y188639D01* +X304253Y188680D01* +X304223Y188682D01* +X304195Y188691D01* +X304082Y188694D01* +X303969Y188703D01* +X303941Y188697D01* +X303911Y188698D01* +X303802Y188670D01* +X303691Y188647D01* +X303664Y188634D01* +X303636Y188626D01* +X303539Y188569D01* +X303438Y188516D01* +X303417Y188496D01* +X303392Y188481D01* +X303314Y188399D01* +X303232Y188321D01* +X303217Y188295D01* +X303197Y188274D01* +X303146Y188173D01* +X303088Y188075D01* +X303081Y188047D01* +X303068Y188021D01* +X303055Y187943D01* +X303018Y187800D01* +X303020Y187737D01* +X303012Y187690D01* +X303012Y184525D01* +X301349Y180511D01* +X298277Y177438D01* +X294262Y175775D01* +X289917Y175775D01* +X285902Y177438D01* +X282830Y180511D01* +X281167Y184525D01* +X281167Y188871D01* +X282830Y192885D01* +X285902Y195958D01* +X289917Y197621D01* +X293081Y197621D01* +X293110Y197625D01* +X293140Y197622D01* +X293251Y197645D01* +X293363Y197660D01* +X293390Y197672D01* +X293418Y197678D01* +X293519Y197730D01* +X293622Y197777D01* +X293645Y197796D01* +X293671Y197809D01* +X293753Y197887D01* +X293839Y197960D01* +X293856Y197985D01* +X293877Y198005D01* +X293934Y198103D01* +X293997Y198197D01* +X294006Y198225D01* +X294021Y198250D01* +X294048Y198360D01* +X294083Y198468D01* +X294083Y198497D01* +X294091Y198526D01* +X294087Y198639D01* +X294090Y198752D01* +X294083Y198781D01* +X294082Y198810D01* +X294047Y198918D01* +X294018Y199027D01* +X294003Y199052D01* +X293994Y199080D01* +X293948Y199144D01* +X293873Y199272D01* +X293827Y199315D01* +X293799Y199354D01* +X292275Y200878D01* +X292205Y200930D01* +X292141Y200990D01* +X292092Y201015D01* +X292048Y201049D01* +X291966Y201080D01* +X291888Y201120D01* +X291841Y201128D01* +X291782Y201150D01* +X291635Y201162D01* +X291557Y201175D01* +X289917Y201175D01* +X285902Y202838D01* +X282830Y205911D01* +X281789Y208422D01* +X281788Y208424D01* +X281788Y208425D01* +X281718Y208543D01* +X281645Y208667D01* +X281644Y208668D01* +X281643Y208670D01* +X281539Y208767D01* +X281438Y208862D01* +X281437Y208863D01* +X281436Y208864D01* +X281310Y208929D01* +X281185Y208993D01* +X281184Y208993D01* +X281182Y208994D01* +X281167Y208996D01* +X280906Y209048D01* +X280876Y209045D01* +X280851Y209049D01* +X246979Y209049D01* +X246892Y209037D01* +X246805Y209034D01* +X246752Y209017D01* +X246697Y209009D01* +X246618Y208974D01* +X246534Y208947D01* +X246495Y208919D01* +X246438Y208893D01* +X246325Y208797D01* +X246261Y208752D01* +X206340Y168830D01* +X206287Y168761D01* +X206227Y168697D01* +X206202Y168647D01* +X206169Y168603D01* +X206138Y168522D01* +X206098Y168444D01* +X206090Y168396D01* +X206068Y168338D01* +X206055Y168190D01* +X206042Y168113D01* +X206042Y136712D01* +X204906Y135576D01* +X204905Y135575D01* +X204904Y135574D01* +X204815Y135456D01* +X204735Y135349D01* +X204735Y135348D01* +X204734Y135346D01* +X204683Y135213D01* +X204634Y135083D01* +X204634Y135082D01* +X204633Y135080D01* +X204622Y134936D01* +X204610Y134800D01* +X204611Y134799D01* +X204611Y134797D01* +X204614Y134781D01* +X204666Y134521D01* +X204680Y134494D01* +X204686Y134470D01* +X205726Y131958D01* +X205726Y127613D01* +X204064Y123598D01* +X200991Y120525D01* +X196976Y118863D01* +X192631Y118863D01* +X188944Y120390D01* +X188861Y120411D01* +X188781Y120442D01* +X188724Y120447D01* +X188669Y120461D01* +X188583Y120458D01* +X188497Y120465D01* +X188441Y120454D01* +X188385Y120453D01* +X188303Y120426D01* +X188219Y120409D01* +X188168Y120383D01* +X188114Y120366D01* +X188042Y120318D01* +X187966Y120278D01* +X187925Y120239D01* +X187878Y120208D01* +X187822Y120142D01* +X187760Y120083D01* +X187731Y120034D01* +X187695Y119990D01* +X187660Y119911D01* +X187616Y119837D01* +X187602Y119782D01* +X187579Y119730D01* +X187567Y119645D01* +X187546Y119562D01* +X187548Y119505D01* +X187540Y119449D01* +X187553Y119364D01* +X187555Y119278D01* +X187573Y119224D01* +X187581Y119167D01* +X187616Y119089D01* +X187643Y119007D01* +X187672Y118967D01* +X187698Y118908D01* +X187792Y118798D01* +X187838Y118734D01* +X204676Y101896D01* +X204745Y101843D01* +X204809Y101784D01* +X204859Y101758D01* +X204903Y101725D01* +X204984Y101694D01* +X205062Y101654D01* +X205110Y101646D01* +X205168Y101624D01* +X205316Y101612D01* +X205393Y101599D01* +X247784Y101599D01* +X247813Y101603D01* +G37* +G36* +X919276Y169903D02* +X919276Y169903D01* +X919305Y169900D01* +X919416Y169923D01* +X919528Y169939D01* +X919555Y169951D01* +X919584Y169956D01* +X919685Y170009D01* +X919788Y170055D01* +X919810Y170074D01* +X919836Y170087D01* +X919918Y170165D01* +X920005Y170238D01* +X920021Y170263D01* +X920042Y170283D01* +X920100Y170381D01* +X920162Y170475D01* +X920171Y170503D01* +X920186Y170528D01* +X920214Y170638D01* +X920248Y170746D01* +X920249Y170776D01* +X920256Y170804D01* +X920253Y170917D01* +X920256Y171030D01* +X920248Y171059D01* +X920247Y171088D01* +X920212Y171196D01* +X920184Y171305D01* +X920169Y171331D01* +X920160Y171359D01* +X920114Y171423D01* +X920038Y171550D01* +X919993Y171593D01* +X919965Y171632D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919631Y178554D01* +X921266Y180189D01* +X923403Y181075D01* +X925717Y181075D01* +X927854Y180189D01* +X928338Y179705D01* +X928385Y179670D01* +X928425Y179628D01* +X928498Y179585D01* +X928565Y179534D01* +X928620Y179514D01* +X928670Y179484D01* +X928752Y179463D01* +X928831Y179433D01* +X928889Y179428D01* +X928946Y179414D01* +X929030Y179417D01* +X929114Y179410D01* +X929171Y179421D01* +X929230Y179423D01* +X929310Y179449D01* +X929393Y179466D01* +X929445Y179492D01* +X929500Y179510D01* +X929557Y179551D01* +X929645Y179597D01* +X929718Y179665D01* +X929774Y179705D01* +X974724Y224655D01* +X974776Y224725D01* +X974836Y224789D01* +X974862Y224839D01* +X974895Y224883D01* +X974926Y224964D01* +X974966Y225042D01* +X974974Y225090D01* +X974996Y225148D01* +X975008Y225296D01* +X975021Y225373D01* +X975021Y248567D01* +X975009Y248654D01* +X975006Y248741D01* +X974989Y248794D01* +X974981Y248849D01* +X974946Y248929D01* +X974919Y249012D01* +X974891Y249051D01* +X974865Y249108D01* +X974769Y249221D01* +X974724Y249285D01* +X973287Y250722D01* +X973287Y257278D01* +X975042Y259033D01* +X981098Y259033D01* +X982853Y257278D01* +X982853Y257252D01* +X982861Y257194D01* +X982859Y257136D01* +X982881Y257054D01* +X982893Y256970D01* +X982916Y256917D01* +X982931Y256861D01* +X982974Y256788D01* +X983009Y256711D01* +X983047Y256666D01* +X983076Y256616D01* +X983138Y256558D01* +X983192Y256494D01* +X983241Y256462D01* +X983284Y256422D01* +X983359Y256383D01* +X983429Y256336D01* +X983485Y256319D01* +X983537Y256292D01* +X983605Y256281D01* +X983700Y256251D01* +X983800Y256248D01* +X983868Y256237D01* +X1039872Y256237D01* +X1039930Y256245D01* +X1039988Y256243D01* +X1040070Y256265D01* +X1040154Y256277D01* +X1040207Y256300D01* +X1040263Y256315D01* +X1040336Y256358D01* +X1040413Y256393D01* +X1040458Y256431D01* +X1040508Y256460D01* +X1040566Y256522D01* +X1040630Y256576D01* +X1040662Y256625D01* +X1040702Y256668D01* +X1040741Y256743D01* +X1040788Y256813D01* +X1040805Y256869D01* +X1040832Y256921D01* +X1040843Y256989D01* +X1040873Y257084D01* +X1040876Y257184D01* +X1040887Y257252D01* +X1040887Y257679D01* +X1042100Y258892D01* +X1042116Y258914D01* +X1042136Y258930D01* +X1042152Y258955D01* +X1042178Y258979D01* +X1042220Y259052D01* +X1042271Y259119D01* +X1042283Y259152D01* +X1042293Y259167D01* +X1042300Y259188D01* +X1042321Y259224D01* +X1042342Y259306D01* +X1042372Y259385D01* +X1042376Y259427D01* +X1042379Y259438D01* +X1042379Y259453D01* +X1042391Y259500D01* +X1042389Y259584D01* +X1042396Y259668D01* +X1042386Y259716D01* +X1042386Y259722D01* +X1042384Y259731D01* +X1042382Y259784D01* +X1042356Y259864D01* +X1042340Y259947D01* +X1042315Y259994D01* +X1042315Y259997D01* +X1042312Y260001D01* +X1042295Y260055D01* +X1042255Y260111D01* +X1042209Y260199D01* +X1042170Y260240D01* +X1042169Y260242D01* +X1042164Y260246D01* +X1042140Y260272D01* +X1042100Y260328D01* +X1040887Y261541D01* +X1040887Y270379D01* +X1042100Y271592D01* +X1042135Y271639D01* +X1042178Y271679D01* +X1042220Y271752D01* +X1042271Y271819D01* +X1042292Y271874D01* +X1042321Y271924D01* +X1042342Y272006D01* +X1042372Y272085D01* +X1042377Y272143D01* +X1042391Y272200D01* +X1042389Y272284D01* +X1042396Y272368D01* +X1042384Y272426D01* +X1042382Y272484D01* +X1042356Y272564D01* +X1042340Y272647D01* +X1042313Y272699D01* +X1042295Y272755D01* +X1042255Y272811D01* +X1042209Y272899D01* +X1042140Y272972D01* +X1042100Y273028D01* +X1040887Y274241D01* +X1040887Y274524D01* +X1040879Y274582D01* +X1040881Y274640D01* +X1040859Y274722D01* +X1040847Y274806D01* +X1040824Y274859D01* +X1040809Y274915D01* +X1040766Y274988D01* +X1040731Y275065D01* +X1040693Y275110D01* +X1040664Y275160D01* +X1040602Y275218D01* +X1040548Y275282D01* +X1040499Y275314D01* +X1040456Y275354D01* +X1040381Y275393D01* +X1040311Y275440D01* +X1040255Y275457D01* +X1040203Y275484D01* +X1040135Y275495D01* +X1040040Y275525D01* +X1039940Y275528D01* +X1039872Y275539D01* +X1036354Y275539D01* +X1036267Y275527D01* +X1036180Y275524D01* +X1036127Y275507D01* +X1036072Y275499D01* +X1035993Y275464D01* +X1035909Y275437D01* +X1035870Y275409D01* +X1035813Y275383D01* +X1035700Y275287D01* +X1035636Y275242D01* +X1031495Y271101D01* +X1011273Y271101D01* +X1011186Y271089D01* +X1011099Y271086D01* +X1011046Y271069D01* +X1010991Y271061D01* +X1010911Y271026D01* +X1010828Y270999D01* +X1010789Y270971D01* +X1010732Y270945D01* +X1010619Y270849D01* +X1010555Y270804D01* +X1009118Y269367D01* +X1002562Y269367D01* +X1001125Y270804D01* +X1001055Y270856D01* +X1000991Y270916D01* +X1000942Y270942D01* +X1000898Y270975D01* +X1000816Y271006D01* +X1000738Y271046D01* +X1000691Y271054D01* +X1000632Y271076D01* +X1000485Y271088D01* +X1000407Y271101D01* +X998573Y271101D01* +X998486Y271089D01* +X998399Y271086D01* +X998346Y271069D01* +X998291Y271061D01* +X998211Y271026D01* +X998128Y270999D01* +X998089Y270971D01* +X998032Y270945D01* +X997919Y270849D01* +X997855Y270804D01* +X996418Y269367D01* +X989862Y269367D01* +X988425Y270804D01* +X988355Y270856D01* +X988292Y270916D01* +X988242Y270942D01* +X988198Y270975D01* +X988116Y271006D01* +X988038Y271046D01* +X987991Y271054D01* +X987932Y271076D01* +X987785Y271088D01* +X987707Y271101D01* +X895464Y271101D01* +X895406Y271093D01* +X895348Y271095D01* +X895266Y271073D01* +X895182Y271061D01* +X895129Y271038D01* +X895073Y271023D01* +X895000Y270980D01* +X894923Y270945D01* +X894878Y270907D01* +X894828Y270878D01* +X894770Y270816D01* +X894706Y270762D01* +X894674Y270713D01* +X894634Y270670D01* +X894595Y270595D01* +X894548Y270525D01* +X894531Y270469D01* +X894504Y270417D01* +X894493Y270349D01* +X894463Y270254D01* +X894460Y270154D01* +X894449Y270086D01* +X894449Y219508D01* +X894457Y219450D01* +X894455Y219392D01* +X894477Y219310D01* +X894489Y219226D01* +X894512Y219173D01* +X894527Y219117D01* +X894570Y219044D01* +X894605Y218967D01* +X894643Y218922D01* +X894672Y218872D01* +X894734Y218814D01* +X894788Y218750D01* +X894837Y218718D01* +X894880Y218678D01* +X894955Y218639D01* +X895025Y218592D01* +X895081Y218575D01* +X895133Y218548D01* +X895201Y218537D01* +X895296Y218507D01* +X895396Y218504D01* +X895464Y218493D01* +X897807Y218493D01* +X900433Y215867D01* +X900433Y196053D01* +X897807Y193427D01* +X884993Y193427D01* +X882367Y196053D01* +X882367Y201896D01* +X882359Y201954D01* +X882361Y202012D01* +X882339Y202094D01* +X882327Y202178D01* +X882304Y202231D01* +X882289Y202287D01* +X882246Y202360D01* +X882211Y202437D01* +X882173Y202482D01* +X882144Y202532D01* +X882082Y202590D01* +X882028Y202654D01* +X881979Y202686D01* +X881936Y202726D01* +X881861Y202765D01* +X881791Y202812D01* +X881735Y202829D01* +X881683Y202856D01* +X881615Y202867D01* +X881520Y202897D01* +X881420Y202900D01* +X881352Y202911D01* +X873478Y202911D01* +X873449Y202907D01* +X873419Y202910D01* +X873308Y202887D01* +X873196Y202871D01* +X873169Y202859D01* +X873141Y202854D01* +X873040Y202802D01* +X872937Y202755D01* +X872914Y202736D01* +X872888Y202723D01* +X872806Y202645D01* +X872720Y202572D01* +X872703Y202547D01* +X872682Y202527D01* +X872625Y202429D01* +X872562Y202335D01* +X872553Y202307D01* +X872538Y202282D01* +X872511Y202172D01* +X872476Y202064D01* +X872476Y202034D01* +X872468Y202006D01* +X872472Y201893D01* +X872469Y201780D01* +X872476Y201751D01* +X872477Y201722D01* +X872512Y201614D01* +X872541Y201505D01* +X872556Y201479D01* +X872565Y201451D01* +X872610Y201388D01* +X872686Y201260D01* +X872732Y201217D01* +X872760Y201178D01* +X902492Y171446D01* +X902560Y171394D01* +X902623Y171335D01* +X902674Y171309D01* +X902719Y171275D01* +X902799Y171245D01* +X902876Y171205D01* +X902931Y171194D01* +X902985Y171174D01* +X903070Y171167D01* +X903155Y171150D01* +X903211Y171155D01* +X903268Y171150D01* +X903352Y171167D01* +X903438Y171175D01* +X903491Y171195D01* +X903547Y171206D01* +X903623Y171246D01* +X903703Y171277D01* +X903749Y171311D01* +X903799Y171337D01* +X903861Y171396D01* +X903930Y171448D01* +X903964Y171494D01* +X904005Y171533D01* +X904049Y171607D01* +X904100Y171676D01* +X904120Y171729D01* +X904149Y171778D01* +X904170Y171861D01* +X904200Y171942D01* +X904205Y171999D01* +X904219Y172054D01* +X904216Y172139D01* +X904223Y172225D01* +X904212Y172274D01* +X904210Y172338D01* +X904165Y172476D01* +X904148Y172552D01* +X903505Y174103D01* +X903505Y176417D01* +X904391Y178554D01* +X906026Y180189D01* +X908163Y181075D01* +X910477Y181075D01* +X912614Y180189D01* +X914249Y178554D01* +X915135Y176417D01* +X915135Y174103D01* +X914977Y173722D01* +X914976Y173721D01* +X914976Y173719D01* +X914941Y173584D01* +X914906Y173447D01* +X914906Y173445D01* +X914905Y173444D01* +X914910Y173302D01* +X914914Y173163D01* +X914914Y173161D01* +X914914Y173159D01* +X914958Y173025D01* +X915001Y172892D01* +X915001Y172890D01* +X915002Y172889D01* +X915011Y172877D01* +X915159Y172656D01* +X915182Y172636D01* +X915197Y172616D01* +X917616Y170196D01* +X917686Y170144D01* +X917750Y170084D01* +X917799Y170058D01* +X917844Y170025D01* +X917925Y169994D01* +X918003Y169954D01* +X918051Y169946D01* +X918109Y169924D01* +X918257Y169912D01* +X918334Y169899D01* +X919247Y169899D01* +X919276Y169903D01* +G37* +G36* +X571558Y52333D02* +X571558Y52333D01* +X571616Y52331D01* +X571698Y52353D01* +X571782Y52365D01* +X571835Y52388D01* +X571891Y52403D01* +X571964Y52446D01* +X572041Y52481D01* +X572086Y52519D01* +X572136Y52548D01* +X572194Y52610D01* +X572258Y52664D01* +X572290Y52713D01* +X572330Y52756D01* +X572369Y52831D01* +X572416Y52901D01* +X572433Y52957D01* +X572460Y53009D01* +X572471Y53077D01* +X572501Y53172D01* +X572504Y53272D01* +X572515Y53340D01* +X572515Y54572D01* +X572508Y54623D01* +X572509Y54642D01* +X572507Y54646D01* +X572509Y54688D01* +X572487Y54770D01* +X572475Y54854D01* +X572452Y54907D01* +X572437Y54963D01* +X572394Y55036D01* +X572359Y55113D01* +X572321Y55158D01* +X572292Y55208D01* +X572230Y55266D01* +X572176Y55330D01* +X572127Y55362D01* +X572084Y55402D01* +X572009Y55441D01* +X571939Y55488D01* +X571883Y55505D01* +X571831Y55532D01* +X571816Y55534D01* +X569547Y57803D01* +X569547Y68437D01* +X571763Y70653D01* +X581397Y70653D01* +X583613Y68437D01* +X583613Y57803D01* +X582835Y57026D01* +X582818Y57002D01* +X582795Y56983D01* +X582733Y56889D01* +X582665Y56799D01* +X582654Y56771D01* +X582638Y56747D01* +X582604Y56639D01* +X582563Y56533D01* +X582561Y56504D01* +X582552Y56476D01* +X582549Y56362D01* +X582540Y56250D01* +X582546Y56221D01* +X582545Y56192D01* +X582573Y56082D01* +X582596Y55971D01* +X582609Y55945D01* +X582617Y55917D01* +X582674Y55819D01* +X582727Y55719D01* +X582747Y55697D01* +X582762Y55672D01* +X582844Y55595D01* +X582922Y55513D01* +X582948Y55498D01* +X582969Y55478D01* +X583070Y55426D01* +X583168Y55369D01* +X583196Y55362D01* +X583222Y55348D01* +X583300Y55335D01* +X583443Y55299D01* +X583506Y55301D01* +X583553Y55293D01* +X594217Y55293D01* +X596182Y53327D01* +X596229Y53292D01* +X596269Y53250D01* +X596342Y53207D01* +X596409Y53157D01* +X596464Y53136D01* +X596514Y53106D01* +X596596Y53085D01* +X596675Y53055D01* +X596733Y53051D01* +X596790Y53036D01* +X596874Y53039D01* +X596958Y53032D01* +X597016Y53043D01* +X597074Y53045D01* +X597154Y53071D01* +X597237Y53088D01* +X597289Y53115D01* +X597345Y53133D01* +X597401Y53173D01* +X597489Y53219D01* +X597562Y53287D01* +X597618Y53327D01* +X599583Y55293D01* +X599820Y55293D01* +X599878Y55301D01* +X599936Y55299D01* +X600018Y55321D01* +X600102Y55333D01* +X600155Y55356D01* +X600211Y55371D01* +X600284Y55414D01* +X600361Y55449D01* +X600406Y55487D01* +X600456Y55516D01* +X600514Y55578D01* +X600578Y55632D01* +X600610Y55681D01* +X600650Y55724D01* +X600689Y55799D01* +X600736Y55869D01* +X600753Y55925D01* +X600780Y55977D01* +X600791Y56045D01* +X600821Y56140D01* +X600824Y56240D01* +X600835Y56308D01* +X600835Y58873D01* +X600823Y58960D01* +X600820Y59047D01* +X600803Y59100D01* +X600795Y59155D01* +X600760Y59235D01* +X600733Y59318D01* +X600705Y59357D01* +X600679Y59414D01* +X600583Y59527D01* +X600538Y59591D01* +X600158Y59971D01* +X600111Y60006D01* +X600071Y60049D01* +X599998Y60091D01* +X599931Y60142D01* +X599876Y60163D01* +X599826Y60192D01* +X599744Y60213D01* +X599665Y60243D01* +X599607Y60248D01* +X599550Y60263D01* +X599466Y60260D01* +X599382Y60267D01* +X599324Y60255D01* +X599266Y60254D01* +X599186Y60228D01* +X599103Y60211D01* +X599051Y60184D01* +X598995Y60166D01* +X598939Y60126D01* +X598851Y60080D01* +X598778Y60011D01* +X598722Y59971D01* +X597218Y58467D01* +X591162Y58467D01* +X589407Y60222D01* +X589407Y66778D01* +X590748Y68119D01* +X590783Y68166D01* +X590826Y68206D01* +X590868Y68279D01* +X590919Y68346D01* +X590940Y68401D01* +X590969Y68451D01* +X590990Y68533D01* +X591020Y68612D01* +X591025Y68670D01* +X591039Y68727D01* +X591037Y68811D01* +X591044Y68895D01* +X591032Y68952D01* +X591030Y69011D01* +X591004Y69091D01* +X590988Y69174D01* +X590961Y69226D01* +X590943Y69281D01* +X590903Y69338D01* +X590857Y69426D01* +X590788Y69498D01* +X590748Y69555D01* +X589537Y70765D01* +X589537Y81035D01* +X591435Y82933D01* +X598605Y82933D01* +X599052Y82485D01* +X599099Y82450D01* +X599139Y82408D01* +X599212Y82365D01* +X599279Y82314D01* +X599334Y82294D01* +X599384Y82264D01* +X599466Y82243D01* +X599545Y82213D01* +X599603Y82208D01* +X599660Y82194D01* +X599744Y82197D01* +X599828Y82190D01* +X599886Y82201D01* +X599944Y82203D01* +X600024Y82229D01* +X600107Y82245D01* +X600159Y82272D01* +X600215Y82290D01* +X600271Y82330D01* +X600359Y82376D01* +X600432Y82445D01* +X600488Y82485D01* +X600935Y82933D01* +X606521Y82933D01* +X606607Y82945D01* +X606695Y82948D01* +X606747Y82965D01* +X606802Y82973D01* +X606882Y83008D01* +X606965Y83035D01* +X607004Y83063D01* +X607062Y83089D01* +X607175Y83185D01* +X607239Y83230D01* +X608337Y84329D01* +X618236Y84329D01* +X618294Y84337D01* +X618352Y84335D01* +X618434Y84357D01* +X618518Y84369D01* +X618571Y84392D01* +X618627Y84407D01* +X618700Y84450D01* +X618777Y84485D01* +X618822Y84523D01* +X618872Y84552D01* +X618930Y84614D01* +X618994Y84668D01* +X619026Y84717D01* +X619066Y84760D01* +X619105Y84835D01* +X619152Y84905D01* +X619169Y84961D01* +X619196Y85013D01* +X619207Y85081D01* +X619237Y85176D01* +X619240Y85276D01* +X619251Y85344D01* +X619251Y94063D01* +X619247Y94092D01* +X619250Y94121D01* +X619227Y94232D01* +X619211Y94344D01* +X619199Y94371D01* +X619194Y94400D01* +X619141Y94501D01* +X619095Y94604D01* +X619076Y94626D01* +X619063Y94652D01* +X618985Y94734D01* +X618912Y94821D01* +X618887Y94837D01* +X618867Y94858D01* +X618769Y94915D01* +X618675Y94978D01* +X618647Y94987D01* +X618622Y95002D01* +X618512Y95030D01* +X618404Y95064D01* +X618375Y95065D01* +X618346Y95072D01* +X618233Y95069D01* +X618120Y95071D01* +X618091Y95064D01* +X618062Y95063D01* +X617954Y95028D01* +X617845Y95000D01* +X617819Y94985D01* +X617791Y94976D01* +X617728Y94930D01* +X617622Y94867D01* +X610435Y94867D01* +X608537Y96765D01* +X608537Y107035D01* +X610435Y108933D01* +X617605Y108933D01* +X618995Y107542D01* +X619042Y107507D01* +X619082Y107465D01* +X619155Y107422D01* +X619222Y107371D01* +X619277Y107351D01* +X619327Y107321D01* +X619409Y107300D01* +X619488Y107270D01* +X619546Y107265D01* +X619603Y107251D01* +X619687Y107254D01* +X619771Y107247D01* +X619828Y107258D01* +X619887Y107260D01* +X619967Y107286D01* +X620050Y107303D01* +X620102Y107330D01* +X620157Y107347D01* +X620214Y107387D01* +X620302Y107434D01* +X620375Y107502D01* +X620431Y107542D01* +X622963Y110074D01* +X622980Y110098D01* +X623003Y110117D01* +X623066Y110211D01* +X623133Y110301D01* +X623144Y110329D01* +X623160Y110353D01* +X623194Y110461D01* +X623235Y110567D01* +X623237Y110596D01* +X623246Y110624D01* +X623249Y110738D01* +X623258Y110850D01* +X623253Y110879D01* +X623253Y110908D01* +X623225Y111018D01* +X623202Y111129D01* +X623189Y111155D01* +X623181Y111183D01* +X623124Y111281D01* +X623071Y111381D01* +X623051Y111403D01* +X623036Y111428D01* +X622954Y111505D01* +X622876Y111587D01* +X622850Y111602D01* +X622829Y111622D01* +X622728Y111674D01* +X622630Y111731D01* +X622602Y111738D01* +X622576Y111752D01* +X622498Y111765D01* +X622355Y111801D01* +X622292Y111799D01* +X622245Y111807D01* +X619442Y111807D01* +X617938Y113311D01* +X617891Y113346D01* +X617851Y113389D01* +X617778Y113431D01* +X617711Y113482D01* +X617656Y113503D01* +X617606Y113532D01* +X617524Y113553D01* +X617445Y113583D01* +X617387Y113588D01* +X617330Y113603D01* +X617246Y113600D01* +X617162Y113607D01* +X617104Y113595D01* +X617046Y113594D01* +X616966Y113568D01* +X616883Y113551D01* +X616831Y113524D01* +X616775Y113506D01* +X616719Y113466D01* +X616631Y113420D01* +X616558Y113351D01* +X616502Y113311D01* +X614998Y111807D01* +X608942Y111807D01* +X607255Y113494D01* +X607185Y113546D01* +X607122Y113606D01* +X607072Y113632D01* +X607028Y113665D01* +X606946Y113696D01* +X606868Y113736D01* +X606821Y113744D01* +X606762Y113766D01* +X606615Y113778D01* +X606537Y113791D01* +X602503Y113791D01* +X602416Y113779D01* +X602329Y113776D01* +X602276Y113759D01* +X602221Y113751D01* +X602141Y113716D01* +X602058Y113689D01* +X602019Y113661D01* +X601962Y113635D01* +X601848Y113539D01* +X601785Y113494D01* +X600416Y112125D01* +X600364Y112055D01* +X600304Y111992D01* +X600278Y111942D01* +X600245Y111898D01* +X600214Y111816D01* +X600174Y111738D01* +X600166Y111691D01* +X600144Y111632D01* +X600138Y111565D01* +X600133Y111547D01* +X600131Y111480D01* +X600119Y111407D01* +X600119Y107839D01* +X600131Y107753D01* +X600134Y107665D01* +X600151Y107612D01* +X600159Y107558D01* +X600194Y107478D01* +X600221Y107395D01* +X600249Y107355D01* +X600275Y107298D01* +X600371Y107185D01* +X600416Y107121D01* +X600503Y107035D01* +X600503Y96765D01* +X598605Y94867D01* +X591435Y94867D01* +X589537Y96765D01* +X589537Y107035D01* +X591435Y108933D01* +X593006Y108933D01* +X593064Y108941D01* +X593122Y108939D01* +X593204Y108961D01* +X593288Y108973D01* +X593341Y108996D01* +X593397Y109011D01* +X593470Y109054D01* +X593547Y109089D01* +X593592Y109127D01* +X593642Y109156D01* +X593700Y109218D01* +X593764Y109272D01* +X593796Y109321D01* +X593836Y109364D01* +X593875Y109439D01* +X593922Y109509D01* +X593939Y109565D01* +X593966Y109617D01* +X593977Y109685D01* +X594007Y109780D01* +X594010Y109880D01* +X594021Y109948D01* +X594021Y111407D01* +X594014Y111461D01* +X594015Y111496D01* +X594008Y111520D01* +X594006Y111581D01* +X593989Y111634D01* +X593981Y111689D01* +X593946Y111769D01* +X593919Y111852D01* +X593891Y111891D01* +X593865Y111948D01* +X593769Y112061D01* +X593724Y112125D01* +X592287Y113562D01* +X592287Y118824D01* +X592279Y118882D01* +X592281Y118940D01* +X592259Y119022D01* +X592247Y119106D01* +X592224Y119159D01* +X592209Y119215D01* +X592166Y119288D01* +X592131Y119365D01* +X592093Y119410D01* +X592064Y119460D01* +X592002Y119518D01* +X591948Y119582D01* +X591899Y119614D01* +X591856Y119654D01* +X591781Y119693D01* +X591711Y119740D01* +X591655Y119757D01* +X591603Y119784D01* +X591535Y119795D01* +X591440Y119825D01* +X591340Y119828D01* +X591272Y119839D01* +X555098Y119839D01* +X555012Y119827D01* +X554924Y119824D01* +X554872Y119807D01* +X554817Y119799D01* +X554737Y119764D01* +X554654Y119737D01* +X554614Y119709D01* +X554557Y119683D01* +X554444Y119587D01* +X554380Y119542D01* +X553550Y118712D01* +X553498Y118642D01* +X553438Y118578D01* +X553412Y118529D01* +X553379Y118484D01* +X553348Y118403D01* +X553308Y118325D01* +X553300Y118277D01* +X553278Y118219D01* +X553266Y118071D01* +X553253Y117994D01* +X553253Y113562D01* +X551498Y111807D01* +X549606Y111807D01* +X549520Y111795D01* +X549432Y111792D01* +X549380Y111775D01* +X549325Y111767D01* +X549245Y111732D01* +X549162Y111705D01* +X549122Y111677D01* +X549065Y111651D01* +X548952Y111555D01* +X548888Y111510D01* +X547084Y109706D01* +X547067Y109682D01* +X547044Y109663D01* +X546981Y109569D01* +X546913Y109479D01* +X546903Y109451D01* +X546887Y109427D01* +X546852Y109319D01* +X546812Y109213D01* +X546810Y109184D01* +X546801Y109156D01* +X546798Y109042D01* +X546789Y108930D01* +X546794Y108901D01* +X546794Y108872D01* +X546822Y108762D01* +X546844Y108651D01* +X546858Y108625D01* +X546865Y108597D01* +X546923Y108499D01* +X546975Y108399D01* +X546996Y108377D01* +X547011Y108352D01* +X547093Y108275D01* +X547171Y108193D01* +X547197Y108178D01* +X547218Y108158D01* +X547319Y108106D01* +X547417Y108049D01* +X547445Y108042D01* +X547471Y108028D01* +X547548Y108015D01* +X547692Y107979D01* +X547755Y107981D01* +X547802Y107973D01* +X549537Y107973D01* +X551753Y105757D01* +X551753Y96123D01* +X549537Y93907D01* +X535903Y93907D01* +X533687Y96123D01* +X533687Y96520D01* +X533679Y96578D01* +X533681Y96636D01* +X533659Y96718D01* +X533647Y96802D01* +X533624Y96855D01* +X533609Y96911D01* +X533566Y96984D01* +X533531Y97061D01* +X533493Y97106D01* +X533464Y97156D01* +X533402Y97214D01* +X533348Y97278D01* +X533299Y97310D01* +X533256Y97350D01* +X533181Y97389D01* +X533111Y97436D01* +X533055Y97453D01* +X533003Y97480D01* +X532935Y97491D01* +X532840Y97521D01* +X532740Y97524D01* +X532672Y97535D01* +X530424Y97535D01* +X530338Y97523D01* +X530250Y97520D01* +X530198Y97503D01* +X530143Y97495D01* +X530063Y97460D01* +X529980Y97433D01* +X529940Y97405D01* +X529883Y97379D01* +X529770Y97283D01* +X529706Y97238D01* +X520822Y88354D01* +X520770Y88284D01* +X520710Y88220D01* +X520684Y88171D01* +X520651Y88126D01* +X520620Y88045D01* +X520580Y87967D01* +X520572Y87919D01* +X520550Y87861D01* +X520538Y87713D01* +X520525Y87636D01* +X520525Y82759D01* +X520537Y82674D01* +X520539Y82588D01* +X520557Y82534D01* +X520565Y82478D01* +X520600Y82399D01* +X520626Y82317D01* +X520658Y82270D01* +X520681Y82218D01* +X520736Y82153D01* +X520784Y82081D01* +X520828Y82045D01* +X520864Y82001D01* +X520936Y81954D01* +X521002Y81898D01* +X521054Y81875D01* +X521101Y81844D01* +X521183Y81818D01* +X521262Y81783D01* +X521318Y81775D01* +X521372Y81758D01* +X521458Y81756D01* +X521543Y81744D01* +X521599Y81752D01* +X521656Y81751D01* +X521739Y81772D01* +X521824Y81785D01* +X521876Y81808D01* +X521931Y81822D01* +X522005Y81866D01* +X522084Y81902D01* +X522127Y81939D01* +X522176Y81968D01* +X522235Y82030D01* +X522300Y82086D01* +X522326Y82128D01* +X522370Y82175D01* +X522436Y82304D01* +X522478Y82371D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X531954Y85869D01* +X531978Y85851D01* +X531997Y85829D01* +X532091Y85766D01* +X532181Y85698D01* +X532209Y85688D01* +X532233Y85672D01* +X532341Y85637D01* +X532447Y85597D01* +X532476Y85595D01* +X532504Y85586D01* +X532617Y85583D01* +X532730Y85573D01* +X532759Y85579D01* +X532788Y85578D01* +X532898Y85607D01* +X533009Y85629D01* +X533035Y85643D01* +X533063Y85650D01* +X533161Y85708D01* +X533261Y85760D01* +X533283Y85781D01* +X533308Y85796D01* +X533385Y85878D01* +X533467Y85956D01* +X533482Y85981D01* +X533502Y86003D01* +X533554Y86104D01* +X533611Y86201D01* +X533618Y86230D01* +X533632Y86256D01* +X533645Y86333D01* +X533681Y86477D01* +X533679Y86539D01* +X533687Y86587D01* +X533687Y86757D01* +X535903Y88973D01* +X549537Y88973D01* +X551753Y86757D01* +X551753Y77123D01* +X549537Y74907D01* +X548260Y74907D01* +X548202Y74899D01* +X548144Y74901D01* +X548062Y74879D01* +X547978Y74867D01* +X547925Y74844D01* +X547869Y74829D01* +X547796Y74786D01* +X547719Y74751D01* +X547674Y74713D01* +X547624Y74684D01* +X547566Y74622D01* +X547502Y74568D01* +X547470Y74519D01* +X547430Y74476D01* +X547391Y74401D01* +X547344Y74331D01* +X547327Y74275D01* +X547300Y74223D01* +X547289Y74155D01* +X547259Y74060D01* +X547256Y73960D01* +X547245Y73892D01* +X547245Y71548D01* +X547253Y71490D01* +X547251Y71432D01* +X547273Y71350D01* +X547285Y71266D01* +X547308Y71213D01* +X547323Y71157D01* +X547366Y71084D01* +X547401Y71007D01* +X547439Y70962D01* +X547468Y70912D01* +X547530Y70854D01* +X547584Y70790D01* +X547633Y70758D01* +X547676Y70718D01* +X547751Y70679D01* +X547821Y70632D01* +X547877Y70615D01* +X547929Y70588D01* +X547997Y70577D01* +X548092Y70547D01* +X548192Y70544D01* +X548260Y70533D01* +X548497Y70533D01* +X550713Y68317D01* +X550713Y58683D01* +X548497Y56467D01* +X548260Y56467D01* +X548202Y56459D01* +X548144Y56461D01* +X548062Y56439D01* +X547978Y56427D01* +X547925Y56404D01* +X547869Y56389D01* +X547796Y56346D01* +X547719Y56311D01* +X547674Y56273D01* +X547624Y56244D01* +X547566Y56182D01* +X547502Y56128D01* +X547472Y56082D01* +X547465Y56075D01* +X547462Y56071D01* +X547430Y56036D01* +X547391Y55961D01* +X547344Y55891D01* +X547330Y55846D01* +X547321Y55830D01* +X547318Y55817D01* +X547300Y55783D01* +X547289Y55715D01* +X547259Y55620D01* +X547258Y55582D01* +X547251Y55554D01* +X547253Y55498D01* +X547245Y55452D01* +X547245Y55444D01* +X547253Y55388D01* +X547251Y55336D01* +X547259Y55308D01* +X547260Y55270D01* +X547277Y55218D01* +X547285Y55163D01* +X547313Y55098D01* +X547323Y55061D01* +X547333Y55045D01* +X547347Y55000D01* +X547375Y54960D01* +X547401Y54903D01* +X547454Y54840D01* +X547468Y54816D01* +X547497Y54789D01* +X547542Y54726D01* +X549646Y52622D01* +X549716Y52570D01* +X549780Y52510D01* +X549829Y52484D01* +X549874Y52451D01* +X549955Y52420D01* +X550033Y52380D01* +X550081Y52372D01* +X550139Y52350D01* +X550287Y52338D01* +X550364Y52325D01* +X571500Y52325D01* +X571558Y52333D01* +G37* +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +G36* +X655378Y49793D02* +X655378Y49793D01* +X655436Y49791D01* +X655518Y49813D01* +X655602Y49825D01* +X655655Y49849D01* +X655711Y49863D01* +X655784Y49906D01* +X655861Y49941D01* +X655906Y49979D01* +X655956Y50009D01* +X656014Y50070D01* +X656078Y50125D01* +X656110Y50173D01* +X656150Y50216D01* +X656189Y50291D01* +X656236Y50361D01* +X656253Y50417D01* +X656280Y50469D01* +X656291Y50537D01* +X656321Y50632D01* +X656324Y50732D01* +X656335Y50800D01* +X656335Y112776D01* +X656328Y112827D01* +X656329Y112847D01* +X656328Y112851D01* +X656329Y112892D01* +X656307Y112974D01* +X656295Y113058D01* +X656272Y113111D01* +X656257Y113167D01* +X656214Y113240D01* +X656179Y113317D01* +X656141Y113362D01* +X656112Y113412D01* +X656050Y113470D01* +X655996Y113534D01* +X655947Y113566D01* +X655904Y113606D01* +X655829Y113645D01* +X655759Y113692D01* +X655703Y113709D01* +X655651Y113736D01* +X655583Y113747D01* +X655488Y113777D01* +X655388Y113780D01* +X655320Y113791D01* +X635968Y113791D01* +X635910Y113783D01* +X635852Y113785D01* +X635770Y113763D01* +X635686Y113751D01* +X635633Y113728D01* +X635577Y113713D01* +X635504Y113670D01* +X635427Y113635D01* +X635382Y113597D01* +X635332Y113568D01* +X635274Y113506D01* +X635210Y113452D01* +X635178Y113403D01* +X635138Y113360D01* +X635099Y113285D01* +X635052Y113215D01* +X635035Y113159D01* +X635008Y113107D01* +X634997Y113039D01* +X634967Y112944D01* +X634964Y112844D01* +X634953Y112776D01* +X634953Y106362D01* +X634282Y105691D01* +X634230Y105621D01* +X634170Y105558D01* +X634144Y105508D01* +X634111Y105464D01* +X634080Y105382D01* +X634040Y105304D01* +X634032Y105257D01* +X634010Y105198D01* +X634005Y105141D01* +X633993Y105140D01* +X633940Y105123D01* +X633885Y105115D01* +X633805Y105080D01* +X633722Y105053D01* +X633683Y105025D01* +X633626Y104999D01* +X633513Y104903D01* +X633449Y104858D01* +X633198Y104607D01* +X626539Y104607D01* +X626453Y104595D01* +X626365Y104592D01* +X626313Y104575D01* +X626258Y104567D01* +X626178Y104532D01* +X626095Y104505D01* +X626056Y104477D01* +X625998Y104451D01* +X625885Y104355D01* +X625821Y104310D01* +X621582Y100071D01* +X621530Y100001D01* +X621470Y99937D01* +X621444Y99887D01* +X621411Y99843D01* +X621380Y99762D01* +X621340Y99684D01* +X621332Y99636D01* +X621310Y99578D01* +X621298Y99430D01* +X621285Y99353D01* +X621285Y82295D01* +X611018Y82295D01* +X610960Y82287D01* +X610902Y82289D01* +X610820Y82267D01* +X610736Y82255D01* +X610683Y82232D01* +X610627Y82217D01* +X610554Y82174D01* +X610477Y82139D01* +X610432Y82101D01* +X610382Y82072D01* +X610324Y82010D01* +X610260Y81956D01* +X610228Y81907D01* +X610188Y81864D01* +X610149Y81789D01* +X610102Y81719D01* +X610085Y81663D01* +X610058Y81611D01* +X610047Y81543D01* +X610017Y81448D01* +X610014Y81348D01* +X610003Y81280D01* +X610003Y70765D01* +X609052Y69815D01* +X609000Y69745D01* +X608940Y69681D01* +X608914Y69632D01* +X608881Y69587D01* +X608850Y69506D01* +X608810Y69428D01* +X608802Y69380D01* +X608780Y69322D01* +X608775Y69262D01* +X608769Y69242D01* +X608767Y69169D01* +X608755Y69097D01* +X608755Y67917D01* +X608767Y67830D01* +X608770Y67743D01* +X608787Y67690D01* +X608795Y67635D01* +X608830Y67555D01* +X608857Y67472D01* +X608885Y67433D01* +X608911Y67376D01* +X609007Y67263D01* +X609052Y67199D01* +X609473Y66778D01* +X609473Y60222D01* +X609262Y60011D01* +X609210Y59941D01* +X609150Y59878D01* +X609124Y59828D01* +X609091Y59784D01* +X609060Y59702D01* +X609020Y59624D01* +X609012Y59577D01* +X608990Y59518D01* +X608978Y59370D01* +X608965Y59293D01* +X608965Y56308D01* +X608973Y56250D01* +X608971Y56192D01* +X608993Y56110D01* +X609005Y56026D01* +X609028Y55973D01* +X609043Y55917D01* +X609086Y55844D01* +X609121Y55767D01* +X609159Y55722D01* +X609188Y55672D01* +X609250Y55614D01* +X609304Y55550D01* +X609353Y55518D01* +X609396Y55478D01* +X609471Y55439D01* +X609541Y55392D01* +X609597Y55375D01* +X609649Y55348D01* +X609717Y55337D01* +X609812Y55307D01* +X609912Y55304D01* +X609980Y55293D01* +X610217Y55293D01* +X612433Y53077D01* +X612433Y50800D01* +X612441Y50742D01* +X612439Y50684D01* +X612461Y50602D01* +X612473Y50519D01* +X612496Y50465D01* +X612511Y50409D01* +X612554Y50336D01* +X612589Y50259D01* +X612627Y50214D01* +X612656Y50164D01* +X612718Y50106D01* +X612772Y50042D01* +X612821Y50010D01* +X612864Y49970D01* +X612939Y49931D01* +X613009Y49885D01* +X613065Y49867D01* +X613117Y49840D01* +X613185Y49829D01* +X613280Y49799D01* +X613380Y49796D01* +X613448Y49785D01* +X655320Y49785D01* +X655378Y49793D01* +G37* +G36* +X886010Y43697D02* +X886010Y43697D01* +X886068Y43695D01* +X886150Y43717D01* +X886234Y43729D01* +X886287Y43752D01* +X886343Y43767D01* +X886416Y43810D01* +X886493Y43845D01* +X886538Y43883D01* +X886588Y43912D01* +X886646Y43974D01* +X886710Y44028D01* +X886742Y44077D01* +X886782Y44120D01* +X886821Y44195D01* +X886868Y44265D01* +X886885Y44321D01* +X886912Y44373D01* +X886923Y44441D01* +X886953Y44536D01* +X886956Y44636D01* +X886967Y44704D01* +X886967Y78312D01* +X888158Y79503D01* +X927942Y79503D01* +X929133Y78312D01* +X929133Y66040D01* +X929141Y65982D01* +X929139Y65924D01* +X929161Y65842D01* +X929173Y65759D01* +X929196Y65705D01* +X929211Y65649D01* +X929254Y65576D01* +X929289Y65499D01* +X929327Y65454D01* +X929356Y65404D01* +X929418Y65346D01* +X929472Y65282D01* +X929521Y65250D01* +X929564Y65210D01* +X929639Y65171D01* +X929709Y65125D01* +X929765Y65107D01* +X929817Y65080D01* +X929885Y65069D01* +X929980Y65039D01* +X930080Y65036D01* +X930148Y65025D01* +X931964Y65025D01* +X932022Y65033D01* +X932080Y65031D01* +X932162Y65053D01* +X932246Y65065D01* +X932299Y65089D01* +X932355Y65103D01* +X932428Y65146D01* +X932505Y65181D01* +X932550Y65219D01* +X932600Y65249D01* +X932658Y65310D01* +X932722Y65365D01* +X932754Y65413D01* +X932794Y65456D01* +X932833Y65531D01* +X932880Y65601D01* +X932897Y65657D01* +X932924Y65709D01* +X932935Y65777D01* +X932965Y65872D01* +X932968Y65972D01* +X932979Y66040D01* +X932979Y129571D01* +X935062Y131654D01* +X935063Y131654D01* +X966708Y163299D01* +X966760Y163369D01* +X966820Y163433D01* +X966846Y163483D01* +X966879Y163527D01* +X966910Y163608D01* +X966950Y163686D01* +X966958Y163734D01* +X966980Y163792D01* +X966992Y163940D01* +X967005Y164017D01* +X967005Y164555D01* +X967001Y164584D01* +X967004Y164614D01* +X966981Y164725D01* +X966965Y164837D01* +X966953Y164864D01* +X966948Y164892D01* +X966896Y164993D01* +X966849Y165096D01* +X966830Y165119D01* +X966817Y165145D01* +X966739Y165227D01* +X966666Y165313D01* +X966641Y165329D01* +X966621Y165351D01* +X966523Y165408D01* +X966429Y165471D01* +X966401Y165480D01* +X966376Y165494D01* +X966266Y165522D01* +X966158Y165557D01* +X966128Y165557D01* +X966100Y165565D01* +X965987Y165561D01* +X965874Y165564D01* +X965845Y165556D01* +X965816Y165556D01* +X965708Y165521D01* +X965599Y165492D01* +X965573Y165477D01* +X965545Y165468D01* +X965482Y165423D01* +X965354Y165347D01* +X965311Y165301D01* +X965272Y165273D01* +X862645Y62646D01* +X862627Y62622D01* +X862605Y62603D01* +X862542Y62509D01* +X862474Y62419D01* +X862463Y62391D01* +X862447Y62367D01* +X862413Y62259D01* +X862373Y62153D01* +X862370Y62124D01* +X862361Y62096D01* +X862358Y61982D01* +X862349Y61870D01* +X862355Y61841D01* +X862354Y61812D01* +X862383Y61702D01* +X862405Y61591D01* +X862419Y61565D01* +X862426Y61537D01* +X862484Y61439D01* +X862536Y61339D01* +X862556Y61317D01* +X862571Y61292D01* +X862654Y61215D01* +X862732Y61133D01* +X862757Y61118D01* +X862778Y61098D01* +X862879Y61046D01* +X862977Y60989D01* +X863005Y60982D01* +X863032Y60968D01* +X863109Y60955D01* +X863253Y60919D01* +X863315Y60921D01* +X863363Y60913D01* +X866458Y60913D01* +X868213Y59158D01* +X868213Y52602D01* +X866776Y51165D01* +X866764Y51149D01* +X866753Y51140D01* +X866723Y51095D01* +X866664Y51031D01* +X866638Y50982D01* +X866605Y50938D01* +X866574Y50856D01* +X866534Y50778D01* +X866526Y50731D01* +X866504Y50672D01* +X866492Y50525D01* +X866479Y50447D01* +X866479Y49367D01* +X864396Y47284D01* +X864395Y47284D01* +X862533Y45422D01* +X862516Y45398D01* +X862493Y45379D01* +X862431Y45285D01* +X862363Y45195D01* +X862352Y45167D01* +X862336Y45143D01* +X862302Y45035D01* +X862261Y44929D01* +X862259Y44900D01* +X862250Y44872D01* +X862247Y44758D01* +X862238Y44646D01* +X862243Y44617D01* +X862243Y44588D01* +X862271Y44478D01* +X862294Y44367D01* +X862307Y44341D01* +X862315Y44313D01* +X862372Y44215D01* +X862425Y44115D01* +X862445Y44093D01* +X862460Y44068D01* +X862542Y43991D01* +X862620Y43909D01* +X862646Y43894D01* +X862667Y43874D01* +X862768Y43822D01* +X862866Y43765D01* +X862894Y43758D01* +X862920Y43744D01* +X862998Y43731D01* +X863141Y43695D01* +X863204Y43697D01* +X863251Y43689D01* +X885952Y43689D01* +X886010Y43697D01* +G37* +G36* +X708240Y48773D02* +X708240Y48773D01* +X708269Y48770D01* +X708380Y48793D01* +X708492Y48809D01* +X708519Y48821D01* +X708548Y48826D01* +X708648Y48879D01* +X708752Y48925D01* +X708774Y48944D01* +X708800Y48957D01* +X708882Y49035D01* +X708969Y49108D01* +X708985Y49133D01* +X709006Y49153D01* +X709063Y49251D01* +X709126Y49345D01* +X709135Y49373D01* +X709150Y49398D01* +X709178Y49508D01* +X709212Y49616D01* +X709213Y49646D01* +X709220Y49674D01* +X709216Y49787D01* +X709219Y49900D01* +X709212Y49929D01* +X709211Y49958D01* +X709176Y50066D01* +X709147Y50175D01* +X709132Y50201D01* +X709123Y50229D01* +X709078Y50293D01* +X709002Y50420D01* +X708957Y50463D01* +X708929Y50502D01* +X708367Y51063D01* +X708367Y60697D01* +X710583Y62913D01* +X710820Y62913D01* +X710878Y62921D01* +X710936Y62919D01* +X711018Y62941D01* +X711102Y62953D01* +X711155Y62976D01* +X711211Y62991D01* +X711284Y63034D01* +X711361Y63069D01* +X711406Y63107D01* +X711456Y63136D01* +X711514Y63198D01* +X711578Y63252D01* +X711610Y63301D01* +X711650Y63344D01* +X711689Y63419D01* +X711736Y63489D01* +X711753Y63545D01* +X711780Y63597D01* +X711791Y63665D01* +X711821Y63760D01* +X711824Y63860D01* +X711835Y63928D01* +X711835Y64262D01* +X711827Y64320D01* +X711829Y64378D01* +X711807Y64460D01* +X711795Y64544D01* +X711772Y64597D01* +X711757Y64653D01* +X711714Y64726D01* +X711679Y64803D01* +X711641Y64848D01* +X711612Y64898D01* +X711550Y64956D01* +X711496Y65020D01* +X711447Y65052D01* +X711404Y65092D01* +X711329Y65131D01* +X711259Y65178D01* +X711203Y65195D01* +X711151Y65222D01* +X711083Y65233D01* +X710988Y65263D01* +X710888Y65266D01* +X710820Y65277D01* +X709027Y65277D01* +X705013Y66940D01* +X701940Y70013D01* +X700277Y74027D01* +X700277Y78373D01* +X701940Y82387D01* +X703884Y84331D01* +X703919Y84378D01* +X703962Y84418D01* +X704005Y84491D01* +X704055Y84559D01* +X704076Y84613D01* +X704106Y84664D01* +X704126Y84745D01* +X704156Y84824D01* +X704161Y84883D01* +X704176Y84939D01* +X704173Y85024D01* +X704180Y85108D01* +X704169Y85165D01* +X704167Y85223D01* +X704141Y85304D01* +X704124Y85386D01* +X704097Y85438D01* +X704079Y85494D01* +X704039Y85550D01* +X703993Y85639D01* +X703924Y85711D01* +X703884Y85767D01* +X702194Y87458D01* +X702124Y87510D01* +X702060Y87570D01* +X702011Y87596D01* +X701966Y87629D01* +X701885Y87660D01* +X701807Y87700D01* +X701759Y87708D01* +X701701Y87730D01* +X701553Y87742D01* +X701476Y87755D01* +X698928Y87755D01* +X698870Y87747D01* +X698812Y87749D01* +X698730Y87727D01* +X698646Y87715D01* +X698593Y87692D01* +X698537Y87677D01* +X698464Y87634D01* +X698387Y87599D01* +X698342Y87561D01* +X698292Y87532D01* +X698234Y87470D01* +X698170Y87416D01* +X698138Y87367D01* +X698098Y87324D01* +X698059Y87249D01* +X698012Y87179D01* +X697995Y87123D01* +X697968Y87071D01* +X697957Y87003D01* +X697927Y86908D01* +X697924Y86808D01* +X697913Y86740D01* +X697913Y86503D01* +X695697Y84287D01* +X686063Y84287D01* +X683847Y86503D01* +X683847Y86740D01* +X683839Y86798D01* +X683841Y86856D01* +X683819Y86938D01* +X683807Y87022D01* +X683784Y87075D01* +X683769Y87131D01* +X683726Y87204D01* +X683691Y87281D01* +X683653Y87326D01* +X683624Y87376D01* +X683562Y87434D01* +X683508Y87498D01* +X683459Y87530D01* +X683416Y87570D01* +X683341Y87609D01* +X683271Y87656D01* +X683215Y87673D01* +X683163Y87700D01* +X683095Y87711D01* +X683000Y87741D01* +X682900Y87744D01* +X682832Y87755D01* +X680908Y87755D01* +X680850Y87747D01* +X680792Y87749D01* +X680710Y87727D01* +X680626Y87715D01* +X680573Y87692D01* +X680517Y87677D01* +X680444Y87634D01* +X680367Y87599D01* +X680322Y87561D01* +X680272Y87532D01* +X680214Y87470D01* +X680150Y87416D01* +X680118Y87367D01* +X680078Y87324D01* +X680039Y87249D01* +X679992Y87179D01* +X679975Y87123D01* +X679948Y87071D01* +X679937Y87003D01* +X679907Y86908D01* +X679904Y86808D01* +X679893Y86740D01* +X679893Y75868D01* +X677472Y73447D01* +X666248Y73447D01* +X663827Y75868D01* +X663827Y112095D01* +X663834Y112101D01* +X663896Y112195D01* +X663964Y112285D01* +X663975Y112313D01* +X663991Y112337D01* +X664025Y112445D01* +X664066Y112551D01* +X664068Y112580D01* +X664077Y112608D01* +X664080Y112721D01* +X664089Y112834D01* +X664084Y112863D01* +X664084Y112892D01* +X664056Y113002D01* +X664033Y113113D01* +X664020Y113139D01* +X664012Y113167D01* +X663955Y113265D01* +X663902Y113365D01* +X663882Y113387D01* +X663867Y113412D01* +X663785Y113489D01* +X663707Y113571D01* +X663681Y113586D01* +X663660Y113606D01* +X663559Y113658D01* +X663461Y113715D01* +X663433Y113722D01* +X663407Y113736D01* +X663330Y113749D01* +X663186Y113785D01* +X663123Y113783D01* +X663076Y113791D01* +X659384Y113791D01* +X659326Y113783D01* +X659268Y113785D01* +X659186Y113763D01* +X659102Y113751D01* +X659049Y113728D01* +X658993Y113713D01* +X658920Y113670D01* +X658843Y113635D01* +X658798Y113597D01* +X658748Y113568D01* +X658690Y113506D01* +X658626Y113452D01* +X658594Y113403D01* +X658554Y113360D01* +X658515Y113285D01* +X658468Y113215D01* +X658451Y113159D01* +X658424Y113107D01* +X658413Y113039D01* +X658383Y112944D01* +X658380Y112844D01* +X658369Y112776D01* +X658369Y49784D01* +X658377Y49726D01* +X658375Y49668D01* +X658397Y49586D01* +X658409Y49502D01* +X658432Y49449D01* +X658447Y49393D01* +X658490Y49320D01* +X658525Y49243D01* +X658563Y49198D01* +X658592Y49148D01* +X658654Y49090D01* +X658708Y49026D01* +X658757Y48994D01* +X658800Y48954D01* +X658875Y48915D01* +X658945Y48868D01* +X659001Y48851D01* +X659053Y48824D01* +X659121Y48813D01* +X659216Y48783D01* +X659316Y48780D01* +X659384Y48769D01* +X708211Y48769D01* +X708240Y48773D01* +G37* +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X749764Y130288D01* +X749816Y130357D01* +X749876Y130421D01* +X749902Y130471D01* +X749935Y130515D01* +X749966Y130596D01* +X750006Y130674D01* +X750014Y130722D01* +X750036Y130780D01* +X750048Y130928D01* +X750061Y131005D01* +X750061Y131386D01* +X750053Y131444D01* +X750055Y131502D01* +X750033Y131584D01* +X750021Y131668D01* +X749998Y131721D01* +X749983Y131777D01* +X749940Y131850D01* +X749905Y131927D01* +X749867Y131972D01* +X749838Y132022D01* +X749776Y132080D01* +X749722Y132144D01* +X749673Y132176D01* +X749630Y132216D01* +X749555Y132255D01* +X749485Y132302D01* +X749429Y132319D01* +X749377Y132346D01* +X749309Y132357D01* +X749214Y132387D01* +X749114Y132390D01* +X749046Y132401D01* +X747460Y132401D01* +X747374Y132389D01* +X747286Y132386D01* +X747234Y132369D01* +X747179Y132361D01* +X747099Y132326D01* +X747016Y132299D01* +X746977Y132271D01* +X746920Y132245D01* +X746806Y132149D01* +X746743Y132104D01* +X744856Y130217D01* +X735584Y130217D01* +X733737Y132064D01* +X733737Y138836D01* +X733883Y138982D01* +X733919Y139029D01* +X733961Y139069D01* +X734004Y139142D01* +X734054Y139209D01* +X734075Y139264D01* +X734105Y139314D01* +X734126Y139396D01* +X734156Y139475D01* +X734160Y139533D01* +X734175Y139590D01* +X734172Y139674D01* +X734179Y139758D01* +X734168Y139816D01* +X734166Y139874D01* +X734140Y139954D01* +X734123Y140037D01* +X734096Y140089D01* +X734078Y140145D01* +X734038Y140201D01* +X733992Y140289D01* +X733924Y140362D01* +X733883Y140418D01* +X733737Y140564D01* +X733737Y147336D01* +X735584Y149183D01* +X736156Y149183D01* +X736214Y149191D01* +X736272Y149189D01* +X736354Y149211D01* +X736438Y149223D01* +X736491Y149246D01* +X736547Y149261D01* +X736620Y149304D01* +X736697Y149339D01* +X736742Y149377D01* +X736792Y149406D01* +X736850Y149468D01* +X736914Y149522D01* +X736946Y149571D01* +X736986Y149614D01* +X737025Y149689D01* +X737072Y149759D01* +X737089Y149815D01* +X737116Y149867D01* +X737127Y149935D01* +X737157Y150030D01* +X737160Y150130D01* +X737171Y150198D01* +X737171Y153972D01* +X737163Y154030D01* +X737165Y154088D01* +X737143Y154170D01* +X737131Y154254D01* +X737108Y154307D01* +X737093Y154363D01* +X737050Y154436D01* +X737015Y154513D01* +X736977Y154558D01* +X736948Y154608D01* +X736886Y154666D01* +X736832Y154730D01* +X736783Y154762D01* +X736740Y154802D01* +X736665Y154841D01* +X736595Y154888D01* +X736539Y154905D01* +X736487Y154932D01* +X736419Y154943D01* +X736324Y154973D01* +X736224Y154976D01* +X736156Y154987D01* +X735942Y154987D01* +X734187Y156742D01* +X734187Y163298D01* +X735942Y165053D01* +X741998Y165053D01* +X743502Y163549D01* +X743549Y163514D01* +X743589Y163471D01* +X743662Y163429D01* +X743729Y163378D01* +X743784Y163357D01* +X743834Y163328D01* +X743916Y163307D01* +X743995Y163277D01* +X744053Y163272D01* +X744110Y163257D01* +X744194Y163260D01* +X744278Y163253D01* +X744336Y163265D01* +X744394Y163266D01* +X744474Y163292D01* +X744557Y163309D01* +X744609Y163336D01* +X744665Y163354D01* +X744721Y163394D01* +X744809Y163440D01* +X744882Y163509D01* +X744938Y163549D01* +X746442Y165053D01* +X752498Y165053D01* +X753666Y163885D01* +X753713Y163850D01* +X753753Y163807D01* +X753826Y163765D01* +X753893Y163714D01* +X753948Y163693D01* +X753998Y163664D01* +X754080Y163643D01* +X754159Y163613D01* +X754217Y163608D01* +X754274Y163594D01* +X754358Y163596D01* +X754442Y163589D01* +X754499Y163601D01* +X754558Y163603D01* +X754638Y163629D01* +X754721Y163645D01* +X754773Y163672D01* +X754828Y163690D01* +X754884Y163730D01* +X754973Y163776D01* +X755046Y163845D01* +X755102Y163885D01* +X756166Y164949D01* +X758303Y165835D01* +X760617Y165835D01* +X762754Y164949D01* +X764389Y163314D01* +X765275Y161177D01* +X765275Y158863D01* +X764389Y156726D01* +X762754Y155091D01* +X760617Y154205D01* +X758303Y154205D01* +X756166Y155091D01* +X755102Y156155D01* +X755055Y156190D01* +X755015Y156233D01* +X754942Y156275D01* +X754874Y156326D01* +X754820Y156347D01* +X754769Y156376D01* +X754688Y156397D01* +X754609Y156427D01* +X754550Y156432D01* +X754494Y156446D01* +X754410Y156444D01* +X754326Y156451D01* +X754268Y156439D01* +X754210Y156437D01* +X754129Y156411D01* +X754047Y156395D01* +X753995Y156368D01* +X753939Y156350D01* +X753883Y156310D01* +X753794Y156264D01* +X753722Y156195D01* +X753666Y156155D01* +X752498Y154987D01* +X746442Y154987D01* +X745002Y156427D01* +X744978Y156445D01* +X744959Y156467D01* +X744865Y156530D01* +X744775Y156598D01* +X744747Y156609D01* +X744723Y156625D01* +X744615Y156659D01* +X744509Y156699D01* +X744480Y156702D01* +X744452Y156711D01* +X744338Y156714D01* +X744226Y156723D01* +X744197Y156717D01* +X744168Y156718D01* +X744058Y156689D01* +X743947Y156667D01* +X743921Y156653D01* +X743893Y156646D01* +X743795Y156588D01* +X743695Y156536D01* +X743673Y156516D01* +X743648Y156501D01* +X743571Y156418D01* +X743489Y156340D01* +X743474Y156315D01* +X743454Y156294D01* +X743402Y156193D01* +X743345Y156095D01* +X743338Y156067D01* +X743324Y156040D01* +X743311Y155963D01* +X743275Y155819D01* +X743277Y155757D01* +X743269Y155709D01* +X743269Y150198D01* +X743277Y150140D01* +X743275Y150082D01* +X743297Y150000D01* +X743309Y149916D01* +X743332Y149863D01* +X743347Y149807D01* +X743390Y149734D01* +X743425Y149657D01* +X743463Y149612D01* +X743492Y149562D01* +X743554Y149504D01* +X743608Y149440D01* +X743657Y149408D01* +X743700Y149368D01* +X743775Y149329D01* +X743845Y149282D01* +X743901Y149265D01* +X743953Y149238D01* +X744021Y149227D01* +X744116Y149197D01* +X744216Y149194D01* +X744284Y149183D01* +X744856Y149183D01* +X746703Y147336D01* +X746703Y140564D01* +X746557Y140418D01* +X746521Y140371D01* +X746479Y140331D01* +X746436Y140258D01* +X746386Y140191D01* +X746365Y140136D01* +X746335Y140086D01* +X746315Y140004D01* +X746284Y139925D01* +X746280Y139867D01* +X746265Y139810D01* +X746268Y139726D01* +X746261Y139642D01* +X746272Y139584D01* +X746274Y139526D01* +X746300Y139446D01* +X746317Y139363D01* +X746344Y139311D01* +X746362Y139255D01* +X746402Y139199D01* +X746448Y139111D01* +X746516Y139038D01* +X746557Y138982D01* +X746743Y138796D01* +X746812Y138744D01* +X746876Y138684D01* +X746926Y138658D01* +X746970Y138625D01* +X747051Y138594D01* +X747129Y138554D01* +X747177Y138546D01* +X747235Y138524D01* +X747383Y138512D01* +X747460Y138499D01* +X750987Y138499D01* +X751073Y138511D01* +X751161Y138514D01* +X751213Y138531D01* +X751268Y138539D01* +X751348Y138574D01* +X751431Y138601D01* +X751470Y138629D01* +X751528Y138655D01* +X751641Y138751D01* +X751705Y138796D01* +X752977Y140069D01* +X761372Y140069D01* +X761430Y140077D01* +X761488Y140075D01* +X761570Y140097D01* +X761654Y140109D01* +X761707Y140132D01* +X761763Y140147D01* +X761836Y140190D01* +X761913Y140225D01* +X761958Y140263D01* +X762008Y140292D01* +X762066Y140354D01* +X762130Y140408D01* +X762162Y140457D01* +X762202Y140500D01* +X762241Y140575D01* +X762288Y140645D01* +X762305Y140701D01* +X762332Y140753D01* +X762343Y140821D01* +X762373Y140916D01* +X762376Y141016D01* +X762387Y141084D01* +X762387Y143427D01* +X765013Y146053D01* +X784827Y146053D01* +X787453Y143427D01* +X787453Y130613D01* +X784827Y127987D01* +X765013Y127987D01* +X762387Y130613D01* +X762387Y132956D01* +X762379Y133014D01* +X762381Y133072D01* +X762359Y133154D01* +X762347Y133238D01* +X762324Y133291D01* +X762309Y133347D01* +X762266Y133420D01* +X762231Y133497D01* +X762193Y133542D01* +X762164Y133592D01* +X762102Y133650D01* +X762048Y133714D01* +X761999Y133746D01* +X761956Y133786D01* +X761881Y133825D01* +X761811Y133872D01* +X761755Y133889D01* +X761703Y133916D01* +X761635Y133927D01* +X761540Y133957D01* +X761440Y133960D01* +X761372Y133971D01* +X757258Y133971D01* +X757173Y133959D01* +X757087Y133957D01* +X757033Y133939D01* +X756976Y133931D01* +X756898Y133896D01* +X756816Y133870D01* +X756769Y133838D01* +X756717Y133815D01* +X756651Y133760D01* +X756580Y133712D01* +X756543Y133668D01* +X756500Y133632D01* +X756452Y133560D01* +X756397Y133494D01* +X756374Y133442D01* +X756342Y133395D01* +X756316Y133313D01* +X756282Y133234D01* +X756274Y133178D01* +X756257Y133124D01* +X756254Y133038D01* +X756243Y132953D01* +X756251Y132897D01* +X756249Y132840D01* +X756271Y132757D01* +X756283Y132671D01* +X756307Y132620D01* +X756321Y132565D01* +X756365Y132491D01* +X756400Y132412D01* +X756437Y132369D01* +X756466Y132320D01* +X756529Y132261D01* +X756585Y132196D01* +X756627Y132170D01* +X756674Y132126D01* +X756803Y132060D01* +X756869Y132018D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +G36* +X478510Y208881D02* +X478510Y208881D01* +X478568Y208879D01* +X478650Y208901D01* +X478734Y208913D01* +X478787Y208936D01* +X478843Y208951D01* +X478916Y208994D01* +X478993Y209029D01* +X479038Y209067D01* +X479088Y209096D01* +X479146Y209158D01* +X479210Y209212D01* +X479242Y209261D01* +X479282Y209304D01* +X479321Y209379D01* +X479368Y209449D01* +X479385Y209505D01* +X479412Y209557D01* +X479423Y209625D01* +X479453Y209720D01* +X479456Y209820D01* +X479467Y209888D01* +X479467Y217383D01* +X479496Y217439D01* +X479504Y217486D01* +X479526Y217545D01* +X479538Y217693D01* +X479551Y217770D01* +X479551Y233165D01* +X479539Y233252D01* +X479536Y233339D01* +X479519Y233392D01* +X479511Y233446D01* +X479476Y233526D01* +X479449Y233609D01* +X479421Y233649D01* +X479395Y233706D01* +X479299Y233819D01* +X479295Y233825D01* +X479283Y233845D01* +X479276Y233852D01* +X479254Y233883D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X479906Y243938D01* +X480005Y243996D01* +X480107Y244049D01* +X480127Y244068D01* +X480151Y244082D01* +X480229Y244166D01* +X480313Y244245D01* +X480327Y244269D01* +X480346Y244289D01* +X480398Y244391D01* +X480457Y244490D01* +X480464Y244517D01* +X480476Y244542D01* +X480498Y244654D01* +X480527Y244766D01* +X480526Y244794D01* +X480531Y244821D01* +X480521Y244935D01* +X480518Y245050D01* +X480509Y245076D01* +X480507Y245104D01* +X480466Y245211D01* +X480430Y245320D01* +X480416Y245341D01* +X480405Y245369D01* +X480244Y245582D01* +X480235Y245594D01* +X480107Y245722D01* +X480107Y251784D01* +X480127Y251801D01* +X480190Y251895D01* +X480258Y251985D01* +X480269Y252013D01* +X480285Y252037D01* +X480319Y252145D01* +X480359Y252251D01* +X480362Y252280D01* +X480371Y252308D01* +X480374Y252421D01* +X480383Y252534D01* +X480377Y252563D01* +X480378Y252592D01* +X480349Y252702D01* +X480327Y252813D01* +X480314Y252839D01* +X480306Y252867D01* +X480248Y252965D01* +X480196Y253065D01* +X480176Y253087D01* +X480161Y253112D01* +X480078Y253189D01* +X480000Y253271D01* +X479975Y253286D01* +X479954Y253306D01* +X479853Y253358D01* +X479755Y253415D01* +X479727Y253422D01* +X479700Y253436D01* +X479623Y253449D01* +X479480Y253485D01* +X479417Y253483D01* +X479369Y253491D01* +X475495Y253491D01* +X475408Y253479D01* +X475321Y253476D01* +X475268Y253459D01* +X475214Y253451D01* +X475134Y253416D01* +X475051Y253389D01* +X475011Y253361D01* +X474954Y253335D01* +X474841Y253239D01* +X474777Y253194D01* +X473194Y251611D01* +X471057Y250725D01* +X468743Y250725D01* +X466606Y251611D01* +X464971Y253246D01* +X464497Y254389D01* +X464497Y254390D01* +X464496Y254391D01* +X464425Y254512D01* +X464353Y254633D01* +X464352Y254634D01* +X464351Y254636D01* +X464249Y254731D01* +X464146Y254829D01* +X464145Y254829D01* +X464144Y254830D01* +X464018Y254895D01* +X463893Y254959D01* +X463892Y254959D01* +X463890Y254960D01* +X463876Y254962D01* +X463615Y255014D01* +X463584Y255011D01* +X463559Y255015D01* +X461048Y255015D01* +X460990Y255007D01* +X460932Y255009D01* +X460850Y254987D01* +X460766Y254975D01* +X460713Y254952D01* +X460657Y254937D01* +X460584Y254894D01* +X460507Y254859D01* +X460462Y254821D01* +X460412Y254792D01* +X460354Y254730D01* +X460290Y254676D01* +X460258Y254627D01* +X460218Y254584D01* +X460179Y254509D01* +X460132Y254439D01* +X460115Y254383D01* +X460088Y254331D01* +X460086Y254316D01* +X457947Y252178D01* +X457937Y252164D01* +X457931Y252159D01* +X457914Y252133D01* +X457912Y252131D01* +X457870Y252091D01* +X457827Y252018D01* +X457777Y251951D01* +X457756Y251896D01* +X457726Y251846D01* +X457705Y251764D01* +X457675Y251685D01* +X457671Y251627D01* +X457656Y251570D01* +X457659Y251486D01* +X457652Y251402D01* +X457663Y251344D01* +X457665Y251286D01* +X457691Y251206D01* +X457708Y251123D01* +X457735Y251071D01* +X457753Y251015D01* +X457793Y250959D01* +X457839Y250871D01* +X457907Y250798D01* +X457947Y250742D01* +X460033Y248657D01* +X460033Y239023D01* +X457817Y236807D01* +X447183Y236807D01* +X445218Y238773D01* +X445171Y238808D01* +X445131Y238850D01* +X445058Y238893D01* +X444991Y238943D01* +X444936Y238964D01* +X444886Y238994D01* +X444804Y239015D01* +X444725Y239045D01* +X444667Y239049D01* +X444610Y239064D01* +X444526Y239061D01* +X444442Y239068D01* +X444384Y239057D01* +X444326Y239055D01* +X444246Y239029D01* +X444163Y239012D01* +X444111Y238985D01* +X444055Y238967D01* +X443999Y238927D01* +X443911Y238881D01* +X443838Y238813D01* +X443782Y238773D01* +X441947Y236938D01* +X441912Y236891D01* +X441870Y236851D01* +X441827Y236778D01* +X441777Y236711D01* +X441756Y236656D01* +X441726Y236606D01* +X441705Y236524D01* +X441675Y236445D01* +X441671Y236387D01* +X441656Y236330D01* +X441659Y236246D01* +X441652Y236162D01* +X441663Y236104D01* +X441665Y236046D01* +X441691Y235966D01* +X441708Y235883D01* +X441735Y235831D01* +X441753Y235775D01* +X441793Y235719D01* +X441839Y235631D01* +X441907Y235558D01* +X441947Y235502D01* +X444033Y233417D01* +X444033Y226677D01* +X444045Y226590D01* +X444048Y226503D01* +X444065Y226450D01* +X444073Y226395D01* +X444108Y226315D01* +X444135Y226232D01* +X444163Y226193D01* +X444189Y226136D01* +X444285Y226023D01* +X444330Y225959D01* +X457481Y212808D01* +X457528Y212773D01* +X457568Y212730D01* +X457641Y212688D01* +X457708Y212637D01* +X457763Y212616D01* +X457813Y212586D01* +X457895Y212566D01* +X457974Y212536D01* +X458032Y212531D01* +X458089Y212516D01* +X458173Y212519D01* +X458257Y212512D01* +X458315Y212524D01* +X458373Y212525D01* +X458453Y212551D01* +X458536Y212568D01* +X458588Y212595D01* +X458644Y212613D01* +X458700Y212653D01* +X458788Y212699D01* +X458861Y212768D01* +X458917Y212808D01* +X459002Y212893D01* +X465558Y212893D01* +X466995Y211456D01* +X467065Y211404D01* +X467129Y211344D01* +X467178Y211318D01* +X467222Y211285D01* +X467304Y211254D01* +X467382Y211214D01* +X467429Y211206D01* +X467488Y211184D01* +X467635Y211172D01* +X467713Y211159D01* +X468623Y211159D01* +X470611Y209170D01* +X470681Y209118D01* +X470745Y209058D01* +X470794Y209032D01* +X470839Y208999D01* +X470920Y208968D01* +X470998Y208928D01* +X471046Y208920D01* +X471104Y208898D01* +X471252Y208886D01* +X471329Y208873D01* +X478452Y208873D01* +X478510Y208881D01* +G37* +G36* +X505416Y179832D02* +X505416Y179832D01* +X505474Y179834D01* +X505554Y179860D01* +X505637Y179876D01* +X505689Y179903D01* +X505745Y179921D01* +X505801Y179961D01* +X505889Y180007D01* +X505906Y180023D01* +X507302Y180023D01* +X507360Y180031D01* +X507418Y180029D01* +X507500Y180051D01* +X507584Y180063D01* +X507637Y180086D01* +X507693Y180101D01* +X507766Y180144D01* +X507843Y180179D01* +X507888Y180217D01* +X507938Y180246D01* +X507996Y180308D01* +X508060Y180362D01* +X508092Y180411D01* +X508132Y180454D01* +X508171Y180529D01* +X508218Y180599D01* +X508235Y180655D01* +X508262Y180707D01* +X508273Y180775D01* +X508303Y180870D01* +X508306Y180970D01* +X508317Y181038D01* +X508317Y182436D01* +X508344Y182482D01* +X508395Y182549D01* +X508416Y182604D01* +X508445Y182654D01* +X508466Y182736D01* +X508496Y182815D01* +X508501Y182873D01* +X508515Y182930D01* +X508513Y183014D01* +X508520Y183098D01* +X508508Y183156D01* +X508506Y183214D01* +X508480Y183294D01* +X508464Y183377D01* +X508437Y183429D01* +X508419Y183485D01* +X508379Y183541D01* +X508333Y183629D01* +X508317Y183646D01* +X508317Y187436D01* +X508344Y187482D01* +X508395Y187549D01* +X508416Y187604D01* +X508445Y187654D01* +X508466Y187736D01* +X508496Y187815D01* +X508501Y187873D01* +X508515Y187930D01* +X508513Y188014D01* +X508520Y188098D01* +X508508Y188156D01* +X508506Y188214D01* +X508480Y188294D01* +X508464Y188377D01* +X508437Y188429D01* +X508419Y188485D01* +X508379Y188541D01* +X508333Y188629D01* +X508317Y188646D01* +X508317Y192436D01* +X508344Y192482D01* +X508395Y192549D01* +X508416Y192604D01* +X508445Y192654D01* +X508466Y192736D01* +X508496Y192815D01* +X508501Y192873D01* +X508515Y192930D01* +X508513Y193014D01* +X508520Y193098D01* +X508508Y193156D01* +X508506Y193214D01* +X508480Y193294D01* +X508464Y193377D01* +X508437Y193429D01* +X508419Y193485D01* +X508379Y193541D01* +X508333Y193629D01* +X508317Y193646D01* +X508317Y197436D01* +X508344Y197482D01* +X508395Y197549D01* +X508416Y197604D01* +X508445Y197654D01* +X508466Y197736D01* +X508496Y197815D01* +X508501Y197873D01* +X508515Y197930D01* +X508513Y198014D01* +X508520Y198098D01* +X508508Y198156D01* +X508506Y198214D01* +X508480Y198294D01* +X508464Y198377D01* +X508437Y198429D01* +X508419Y198485D01* +X508379Y198541D01* +X508333Y198629D01* +X508317Y198646D01* +X508317Y202436D01* +X508344Y202482D01* +X508395Y202549D01* +X508416Y202604D01* +X508445Y202654D01* +X508466Y202736D01* +X508496Y202815D01* +X508501Y202873D01* +X508515Y202930D01* +X508513Y203014D01* +X508520Y203098D01* +X508508Y203156D01* +X508506Y203214D01* +X508480Y203294D01* +X508464Y203377D01* +X508437Y203429D01* +X508419Y203485D01* +X508379Y203541D01* +X508333Y203629D01* +X508317Y203646D01* +X508317Y205042D01* +X508309Y205100D01* +X508311Y205158D01* +X508289Y205240D01* +X508277Y205324D01* +X508254Y205377D01* +X508239Y205433D01* +X508196Y205506D01* +X508161Y205583D01* +X508123Y205628D01* +X508094Y205678D01* +X508032Y205736D01* +X507978Y205800D01* +X507929Y205832D01* +X507886Y205872D01* +X507811Y205911D01* +X507741Y205958D01* +X507685Y205975D01* +X507633Y206002D01* +X507565Y206013D01* +X507470Y206043D01* +X507370Y206046D01* +X507302Y206057D01* +X505904Y206057D01* +X505858Y206084D01* +X505791Y206135D01* +X505736Y206156D01* +X505686Y206185D01* +X505604Y206206D01* +X505525Y206236D01* +X505467Y206241D01* +X505410Y206255D01* +X505326Y206253D01* +X505242Y206260D01* +X505184Y206248D01* +X505126Y206246D01* +X505046Y206220D01* +X504963Y206204D01* +X504911Y206177D01* +X504855Y206159D01* +X504799Y206119D01* +X504711Y206073D01* +X504694Y206057D01* +X500904Y206057D01* +X500858Y206084D01* +X500791Y206135D01* +X500736Y206156D01* +X500686Y206185D01* +X500604Y206206D01* +X500525Y206236D01* +X500467Y206241D01* +X500410Y206255D01* +X500326Y206253D01* +X500242Y206260D01* +X500184Y206248D01* +X500126Y206246D01* +X500046Y206220D01* +X499963Y206204D01* +X499911Y206177D01* +X499855Y206159D01* +X499799Y206119D01* +X499711Y206073D01* +X499694Y206057D01* +X495904Y206057D01* +X495858Y206084D01* +X495791Y206135D01* +X495736Y206156D01* +X495686Y206185D01* +X495604Y206206D01* +X495525Y206236D01* +X495467Y206241D01* +X495410Y206255D01* +X495326Y206253D01* +X495242Y206260D01* +X495184Y206248D01* +X495126Y206246D01* +X495046Y206220D01* +X494963Y206204D01* +X494911Y206177D01* +X494855Y206159D01* +X494799Y206119D01* +X494711Y206073D01* +X494694Y206057D01* +X490904Y206057D01* +X490858Y206084D01* +X490791Y206135D01* +X490736Y206156D01* +X490686Y206185D01* +X490604Y206206D01* +X490525Y206236D01* +X490467Y206241D01* +X490410Y206255D01* +X490326Y206253D01* +X490242Y206260D01* +X490184Y206248D01* +X490126Y206246D01* +X490046Y206220D01* +X489963Y206204D01* +X489911Y206177D01* +X489855Y206159D01* +X489799Y206119D01* +X489711Y206073D01* +X489694Y206057D01* +X485904Y206057D01* +X485858Y206084D01* +X485791Y206135D01* +X485736Y206156D01* +X485686Y206185D01* +X485604Y206206D01* +X485525Y206236D01* +X485467Y206241D01* +X485410Y206255D01* +X485326Y206253D01* +X485242Y206260D01* +X485184Y206248D01* +X485126Y206246D01* +X485046Y206220D01* +X484963Y206204D01* +X484911Y206177D01* +X484855Y206159D01* +X484799Y206119D01* +X484711Y206073D01* +X484694Y206057D01* +X483298Y206057D01* +X483240Y206049D01* +X483182Y206051D01* +X483100Y206029D01* +X483016Y206017D01* +X482963Y205994D01* +X482907Y205979D01* +X482834Y205936D01* +X482757Y205901D01* +X482712Y205863D01* +X482662Y205834D01* +X482604Y205772D01* +X482540Y205718D01* +X482508Y205669D01* +X482468Y205626D01* +X482429Y205551D01* +X482382Y205481D01* +X482365Y205425D01* +X482338Y205373D01* +X482327Y205305D01* +X482297Y205210D01* +X482294Y205110D01* +X482283Y205042D01* +X482283Y203644D01* +X482256Y203598D01* +X482205Y203531D01* +X482184Y203476D01* +X482155Y203426D01* +X482134Y203344D01* +X482104Y203265D01* +X482099Y203207D01* +X482085Y203150D01* +X482087Y203066D01* +X482080Y202982D01* +X482092Y202924D01* +X482094Y202866D01* +X482120Y202786D01* +X482136Y202703D01* +X482163Y202651D01* +X482181Y202595D01* +X482221Y202539D01* +X482267Y202451D01* +X482283Y202434D01* +X482283Y198644D01* +X482256Y198598D01* +X482205Y198531D01* +X482184Y198476D01* +X482155Y198426D01* +X482134Y198344D01* +X482104Y198265D01* +X482099Y198207D01* +X482085Y198150D01* +X482087Y198066D01* +X482080Y197982D01* +X482092Y197924D01* +X482094Y197866D01* +X482120Y197786D01* +X482136Y197703D01* +X482163Y197651D01* +X482181Y197595D01* +X482221Y197539D01* +X482267Y197451D01* +X482283Y197434D01* +X482283Y193644D01* +X482256Y193598D01* +X482205Y193531D01* +X482184Y193476D01* +X482155Y193426D01* +X482134Y193344D01* +X482104Y193265D01* +X482099Y193207D01* +X482085Y193150D01* +X482087Y193066D01* +X482080Y192982D01* +X482092Y192924D01* +X482094Y192866D01* +X482120Y192786D01* +X482136Y192703D01* +X482163Y192651D01* +X482181Y192595D01* +X482221Y192539D01* +X482267Y192451D01* +X482283Y192434D01* +X482283Y188644D01* +X482256Y188598D01* +X482205Y188531D01* +X482184Y188476D01* +X482155Y188426D01* +X482134Y188344D01* +X482104Y188265D01* +X482099Y188207D01* +X482085Y188150D01* +X482087Y188066D01* +X482080Y187982D01* +X482092Y187924D01* +X482094Y187866D01* +X482120Y187786D01* +X482136Y187703D01* +X482163Y187651D01* +X482181Y187595D01* +X482221Y187539D01* +X482267Y187451D01* +X482283Y187434D01* +X482283Y183644D01* +X482256Y183598D01* +X482205Y183531D01* +X482184Y183476D01* +X482155Y183426D01* +X482134Y183344D01* +X482104Y183265D01* +X482099Y183207D01* +X482085Y183150D01* +X482087Y183066D01* +X482080Y182982D01* +X482092Y182924D01* +X482094Y182866D01* +X482120Y182786D01* +X482136Y182703D01* +X482163Y182651D01* +X482181Y182595D01* +X482221Y182539D01* +X482267Y182451D01* +X482283Y182434D01* +X482283Y181038D01* +X482291Y180980D01* +X482289Y180922D01* +X482311Y180840D01* +X482323Y180756D01* +X482346Y180703D01* +X482361Y180647D01* +X482404Y180574D01* +X482439Y180497D01* +X482477Y180452D01* +X482506Y180402D01* +X482568Y180344D01* +X482622Y180280D01* +X482671Y180248D01* +X482714Y180208D01* +X482789Y180169D01* +X482859Y180122D01* +X482915Y180105D01* +X482967Y180078D01* +X483035Y180067D01* +X483130Y180037D01* +X483230Y180034D01* +X483298Y180023D01* +X484696Y180023D01* +X484742Y179996D01* +X484809Y179945D01* +X484864Y179924D01* +X484914Y179895D01* +X484996Y179874D01* +X485075Y179844D01* +X485133Y179839D01* +X485190Y179825D01* +X485274Y179827D01* +X485358Y179820D01* +X485416Y179832D01* +X485474Y179834D01* +X485554Y179860D01* +X485637Y179876D01* +X485689Y179903D01* +X485745Y179921D01* +X485801Y179961D01* +X485889Y180007D01* +X485906Y180023D01* +X489696Y180023D01* +X489742Y179996D01* +X489809Y179945D01* +X489864Y179924D01* +X489914Y179895D01* +X489996Y179874D01* +X490075Y179844D01* +X490133Y179839D01* +X490190Y179825D01* +X490274Y179827D01* +X490358Y179820D01* +X490416Y179832D01* +X490474Y179834D01* +X490554Y179860D01* +X490637Y179876D01* +X490689Y179903D01* +X490745Y179921D01* +X490801Y179961D01* +X490889Y180007D01* +X490906Y180023D01* +X494696Y180023D01* +X494742Y179996D01* +X494809Y179945D01* +X494864Y179924D01* +X494914Y179895D01* +X494996Y179874D01* +X495075Y179844D01* +X495133Y179839D01* +X495190Y179825D01* +X495274Y179827D01* +X495358Y179820D01* +X495416Y179832D01* +X495474Y179834D01* +X495554Y179860D01* +X495637Y179876D01* +X495689Y179903D01* +X495745Y179921D01* +X495801Y179961D01* +X495889Y180007D01* +X495906Y180023D01* +X499696Y180023D01* +X499742Y179996D01* +X499809Y179945D01* +X499864Y179924D01* +X499914Y179895D01* +X499996Y179874D01* +X500075Y179844D01* +X500133Y179839D01* +X500190Y179825D01* +X500274Y179827D01* +X500358Y179820D01* +X500416Y179832D01* +X500474Y179834D01* +X500554Y179860D01* +X500637Y179876D01* +X500689Y179903D01* +X500745Y179921D01* +X500801Y179961D01* +X500889Y180007D01* +X500906Y180023D01* +X504696Y180023D01* +X504742Y179996D01* +X504809Y179945D01* +X504864Y179924D01* +X504914Y179895D01* +X504996Y179874D01* +X505075Y179844D01* +X505133Y179839D01* +X505190Y179825D01* +X505274Y179827D01* +X505358Y179820D01* +X505416Y179832D01* +G37* +G36* +X550744Y173241D02* +X550744Y173241D01* +X550831Y173244D01* +X550884Y173261D01* +X550939Y173269D01* +X551019Y173304D01* +X551102Y173331D01* +X551141Y173359D01* +X551198Y173385D01* +X551311Y173481D01* +X551375Y173526D01* +X553062Y175213D01* +X559118Y175213D01* +X560622Y173709D01* +X560669Y173674D01* +X560709Y173631D01* +X560782Y173589D01* +X560849Y173538D01* +X560904Y173517D01* +X560954Y173487D01* +X561036Y173467D01* +X561115Y173437D01* +X561173Y173432D01* +X561230Y173417D01* +X561314Y173420D01* +X561398Y173413D01* +X561456Y173425D01* +X561514Y173426D01* +X561594Y173452D01* +X561677Y173469D01* +X561729Y173496D01* +X561785Y173514D01* +X561841Y173554D01* +X561929Y173600D01* +X562002Y173669D01* +X562058Y173709D01* +X562721Y174372D01* +X562756Y174419D01* +X562799Y174459D01* +X562841Y174532D01* +X562892Y174599D01* +X562913Y174654D01* +X562942Y174704D01* +X562963Y174786D01* +X562993Y174865D01* +X562998Y174923D01* +X563013Y174980D01* +X563010Y175064D01* +X563017Y175148D01* +X563005Y175206D01* +X563004Y175264D01* +X562978Y175344D01* +X562961Y175427D01* +X562934Y175479D01* +X562916Y175535D01* +X562876Y175591D01* +X562830Y175679D01* +X562761Y175752D01* +X562721Y175808D01* +X561387Y177142D01* +X561387Y183198D01* +X562891Y184702D01* +X562926Y184749D01* +X562969Y184789D01* +X563011Y184862D01* +X563062Y184929D01* +X563083Y184984D01* +X563112Y185034D01* +X563133Y185116D01* +X563163Y185195D01* +X563168Y185253D01* +X563183Y185310D01* +X563180Y185394D01* +X563187Y185478D01* +X563175Y185536D01* +X563174Y185594D01* +X563148Y185674D01* +X563131Y185757D01* +X563104Y185809D01* +X563086Y185865D01* +X563046Y185921D01* +X563000Y186009D01* +X562931Y186082D01* +X562891Y186138D01* +X561387Y187642D01* +X561387Y193698D01* +X563074Y195385D01* +X563126Y195455D01* +X563186Y195518D01* +X563212Y195568D01* +X563245Y195612D01* +X563276Y195694D01* +X563316Y195772D01* +X563324Y195819D01* +X563346Y195878D01* +X563358Y196025D01* +X563371Y196103D01* +X563371Y196331D01* +X563359Y196417D01* +X563356Y196505D01* +X563339Y196557D01* +X563331Y196612D01* +X563296Y196692D01* +X563269Y196775D01* +X563241Y196814D01* +X563215Y196872D01* +X563119Y196985D01* +X563074Y197049D01* +X561402Y198720D01* +X560718Y200372D01* +X560703Y200397D01* +X560694Y200425D01* +X560631Y200519D01* +X560574Y200617D01* +X560552Y200637D01* +X560536Y200661D01* +X560449Y200734D01* +X560367Y200812D01* +X560341Y200825D01* +X560318Y200844D01* +X560215Y200890D01* +X560114Y200942D01* +X560085Y200948D01* +X560059Y200959D01* +X559947Y200975D01* +X559835Y200997D01* +X559806Y200994D01* +X559777Y200998D01* +X559665Y200982D01* +X559552Y200972D01* +X559525Y200962D01* +X559496Y200958D01* +X559392Y200911D01* +X559287Y200870D01* +X559263Y200853D01* +X559237Y200841D01* +X559150Y200767D01* +X559060Y200699D01* +X559043Y200675D01* +X559020Y200656D01* +X558979Y200590D01* +X558890Y200471D01* +X558868Y200412D01* +X558842Y200372D01* +X558649Y199906D01* +X557014Y198271D01* +X554877Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548843Y199854D01* +X548773Y199906D01* +X548709Y199966D01* +X548660Y199992D01* +X548616Y200025D01* +X548534Y200056D01* +X548456Y200096D01* +X548408Y200104D01* +X548350Y200126D01* +X548202Y200138D01* +X548125Y200151D01* +X544083Y200151D01* +X543996Y200139D01* +X543909Y200136D01* +X543856Y200119D01* +X543801Y200111D01* +X543721Y200076D01* +X543638Y200049D01* +X543599Y200021D01* +X543542Y199995D01* +X543429Y199899D01* +X543365Y199854D01* +X541678Y198167D01* +X535622Y198167D01* +X534118Y199671D01* +X534071Y199706D01* +X534031Y199749D01* +X533958Y199792D01* +X533891Y199842D01* +X533836Y199863D01* +X533786Y199892D01* +X533704Y199913D01* +X533625Y199943D01* +X533567Y199948D01* +X533510Y199963D01* +X533426Y199960D01* +X533342Y199967D01* +X533284Y199955D01* +X533226Y199954D01* +X533146Y199928D01* +X533063Y199911D01* +X533011Y199884D01* +X532955Y199866D01* +X532899Y199826D01* +X532811Y199780D01* +X532738Y199711D01* +X532682Y199671D01* +X531244Y198233D01* +X531209Y198187D01* +X531167Y198146D01* +X531124Y198073D01* +X531073Y198006D01* +X531052Y197951D01* +X531023Y197901D01* +X531002Y197819D01* +X530972Y197740D01* +X530967Y197682D01* +X530953Y197625D01* +X530955Y197541D01* +X530948Y197457D01* +X530960Y197400D01* +X530962Y197341D01* +X530988Y197261D01* +X531004Y197178D01* +X531031Y197126D01* +X531049Y197071D01* +X531089Y197015D01* +X531135Y196926D01* +X531204Y196854D01* +X531244Y196797D01* +X534195Y193846D01* +X534265Y193794D01* +X534329Y193734D01* +X534379Y193708D01* +X534423Y193675D01* +X534504Y193644D01* +X534582Y193604D01* +X534630Y193596D01* +X534688Y193574D01* +X534836Y193562D01* +X534913Y193549D01* +X535417Y193549D01* +X535504Y193561D01* +X535591Y193564D01* +X535644Y193581D01* +X535699Y193589D01* +X535779Y193624D01* +X535862Y193651D01* +X535901Y193679D01* +X535958Y193705D01* +X536071Y193801D01* +X536135Y193846D01* +X537822Y195533D01* +X543878Y195533D01* +X545633Y193778D01* +X545633Y187222D01* +X543878Y185467D01* +X541155Y185467D01* +X541126Y185463D01* +X541096Y185466D01* +X540985Y185443D01* +X540873Y185427D01* +X540846Y185415D01* +X540818Y185410D01* +X540717Y185358D01* +X540614Y185311D01* +X540591Y185292D01* +X540565Y185279D01* +X540483Y185201D01* +X540397Y185128D01* +X540381Y185103D01* +X540359Y185083D01* +X540302Y184985D01* +X540239Y184891D01* +X540230Y184863D01* +X540215Y184838D01* +X540188Y184728D01* +X540153Y184620D01* +X540153Y184591D01* +X540145Y184562D01* +X540149Y184449D01* +X540146Y184336D01* +X540153Y184307D01* +X540154Y184278D01* +X540189Y184170D01* +X540218Y184061D01* +X540233Y184035D01* +X540242Y184007D01* +X540288Y183943D01* +X540363Y183816D01* +X540409Y183773D01* +X540437Y183734D01* +X540553Y183618D01* +X540553Y180289D01* +X540565Y180203D01* +X540568Y180115D01* +X540585Y180063D01* +X540593Y180008D01* +X540628Y179928D01* +X540655Y179845D01* +X540683Y179806D01* +X540709Y179748D01* +X540805Y179635D01* +X540850Y179571D01* +X544069Y176353D01* +X544069Y175775D01* +X544081Y175688D01* +X544084Y175601D01* +X544101Y175548D01* +X544109Y175494D01* +X544144Y175414D01* +X544171Y175331D01* +X544199Y175291D01* +X544225Y175234D01* +X544321Y175121D01* +X544366Y175057D01* +X545897Y173526D01* +X545967Y173474D01* +X546031Y173414D01* +X546080Y173388D01* +X546124Y173355D01* +X546206Y173324D01* +X546284Y173284D01* +X546332Y173276D01* +X546390Y173254D01* +X546538Y173242D01* +X546615Y173229D01* +X550657Y173229D01* +X550744Y173241D01* +G37* +G36* +X467094Y160711D02* +X467094Y160711D01* +X467181Y160714D01* +X467234Y160731D01* +X467289Y160739D01* +X467369Y160774D01* +X467452Y160801D01* +X467491Y160829D01* +X467548Y160855D01* +X467661Y160951D01* +X467725Y160996D01* +X469162Y162433D01* +X472491Y162433D01* +X472577Y162445D01* +X472665Y162448D01* +X472717Y162465D01* +X472772Y162473D01* +X472852Y162508D01* +X472935Y162535D01* +X472974Y162563D01* +X473032Y162589D01* +X473145Y162685D01* +X473209Y162730D01* +X479170Y168691D01* +X479222Y168761D01* +X479282Y168825D01* +X479308Y168875D01* +X479341Y168919D01* +X479372Y169000D01* +X479412Y169078D01* +X479420Y169126D01* +X479442Y169184D01* +X479454Y169332D01* +X479467Y169409D01* +X479467Y176192D01* +X479459Y176250D01* +X479461Y176308D01* +X479439Y176390D01* +X479427Y176474D01* +X479404Y176527D01* +X479389Y176583D01* +X479346Y176656D01* +X479311Y176733D01* +X479273Y176778D01* +X479244Y176828D01* +X479182Y176886D01* +X479128Y176950D01* +X479079Y176982D01* +X479036Y177022D01* +X478961Y177061D01* +X478891Y177108D01* +X478835Y177125D01* +X478783Y177152D01* +X478715Y177163D01* +X478620Y177193D01* +X478520Y177196D01* +X478452Y177207D01* +X471070Y177207D01* +X471018Y177246D01* +X470954Y177306D01* +X470905Y177332D01* +X470861Y177365D01* +X470779Y177396D01* +X470701Y177436D01* +X470654Y177444D01* +X470595Y177466D01* +X470447Y177478D01* +X470370Y177491D01* +X470013Y177491D01* +X469927Y177479D01* +X469839Y177476D01* +X469787Y177459D01* +X469732Y177451D01* +X469652Y177416D01* +X469569Y177389D01* +X469530Y177361D01* +X469472Y177335D01* +X469359Y177239D01* +X469295Y177194D01* +X467579Y175477D01* +X465729Y175477D01* +X465642Y175465D01* +X465555Y175462D01* +X465502Y175445D01* +X465447Y175437D01* +X465367Y175402D01* +X465284Y175375D01* +X465245Y175347D01* +X465188Y175321D01* +X465075Y175225D01* +X465011Y175180D01* +X463018Y173187D01* +X456462Y173187D01* +X454707Y174942D01* +X454707Y175113D01* +X454703Y175142D01* +X454706Y175171D01* +X454683Y175282D01* +X454667Y175394D01* +X454655Y175421D01* +X454650Y175450D01* +X454597Y175550D01* +X454551Y175654D01* +X454532Y175676D01* +X454519Y175702D01* +X454441Y175784D01* +X454368Y175871D01* +X454343Y175887D01* +X454323Y175908D01* +X454225Y175965D01* +X454131Y176028D01* +X454103Y176037D01* +X454078Y176052D01* +X453968Y176080D01* +X453860Y176114D01* +X453831Y176115D01* +X453802Y176122D01* +X453689Y176118D01* +X453576Y176121D01* +X453547Y176114D01* +X453518Y176113D01* +X453410Y176078D01* +X453301Y176049D01* +X453275Y176034D01* +X453247Y176025D01* +X453184Y175980D01* +X453056Y175904D01* +X453013Y175858D01* +X452974Y175830D01* +X452746Y175602D01* +X450692Y174751D01* +X448903Y174751D01* +X448816Y174739D01* +X448729Y174736D01* +X448676Y174719D01* +X448621Y174711D01* +X448542Y174676D01* +X448458Y174649D01* +X448419Y174621D01* +X448362Y174595D01* +X448249Y174499D01* +X448185Y174454D01* +X445815Y172084D01* +X444896Y172084D01* +X444809Y172072D01* +X444722Y172069D01* +X444669Y172052D01* +X444614Y172044D01* +X444534Y172009D01* +X444451Y171982D01* +X444412Y171954D01* +X444355Y171928D01* +X444242Y171832D01* +X444178Y171787D01* +X442618Y170227D01* +X438345Y170227D01* +X438316Y170223D01* +X438287Y170226D01* +X438176Y170203D01* +X438064Y170187D01* +X438037Y170175D01* +X438008Y170170D01* +X437908Y170118D01* +X437804Y170071D01* +X437782Y170052D01* +X437756Y170039D01* +X437674Y169961D01* +X437587Y169888D01* +X437571Y169863D01* +X437550Y169843D01* +X437493Y169745D01* +X437430Y169651D01* +X437421Y169623D01* +X437406Y169598D01* +X437378Y169488D01* +X437344Y169380D01* +X437343Y169350D01* +X437336Y169322D01* +X437340Y169209D01* +X437337Y169096D01* +X437344Y169067D01* +X437345Y169038D01* +X437380Y168930D01* +X437409Y168821D01* +X437424Y168795D01* +X437433Y168767D01* +X437478Y168704D01* +X437554Y168576D01* +X437599Y168533D01* +X437627Y168494D01* +X445125Y160996D01* +X445195Y160944D01* +X445259Y160884D01* +X445309Y160858D01* +X445353Y160825D01* +X445434Y160794D01* +X445512Y160754D01* +X445560Y160746D01* +X445618Y160724D01* +X445766Y160712D01* +X445843Y160699D01* +X467007Y160699D01* +X467094Y160711D01* +G37* +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y48261D01* +X990934Y48261D01* +X991581Y48088D01* +X992160Y47753D01* +X992633Y47280D01* +X992968Y46701D01* +X993141Y46054D01* +X993141Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y48261D01* +X419434Y48261D01* +X420081Y48088D01* +X420660Y47753D01* +X421133Y47280D01* +X421468Y46701D01* +X421641Y46054D01* +X421641Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X949959Y28701D02* +X949959Y28701D01* +X949959Y46054D01* +X950132Y46701D01* +X950467Y47280D01* +X950940Y47753D01* +X951519Y48088D01* +X952166Y48261D01* +X969519Y48261D01* +X969519Y28701D01* +X949959Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X378459Y28701D02* +X378459Y28701D01* +X378459Y46054D01* +X378632Y46701D01* +X378967Y47280D01* +X379440Y47753D01* +X380019Y48088D01* +X380666Y48261D01* +X398019Y48261D01* +X398019Y28701D01* +X378459Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X289917Y150375D02* +X289917Y150375D01* +X285902Y152038D01* +X282830Y155111D01* +X281167Y159125D01* +X281167Y163471D01* +X282830Y167485D01* +X285902Y170558D01* +X289917Y172221D01* +X294262Y172221D01* +X298277Y170558D01* +X301349Y167485D01* +X303012Y163471D01* +X303012Y159125D01* +X301349Y155111D01* +X298277Y152038D01* +X294262Y150375D01* +X289917Y150375D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y213875D02* +X315317Y213875D01* +X311302Y215538D01* +X308230Y218611D01* +X306567Y222625D01* +X306567Y226971D01* +X308230Y230985D01* +X311302Y234058D01* +X315317Y235721D01* +X319662Y235721D01* +X323677Y234058D01* +X326749Y230985D01* +X328412Y226971D01* +X328412Y222625D01* +X326749Y218611D01* +X323677Y215538D01* +X319662Y213875D01* +X315317Y213875D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y137675D02* +X315317Y137675D01* +X311302Y139338D01* +X308230Y142411D01* +X306567Y146425D01* +X306567Y150771D01* +X308230Y154785D01* +X311302Y157858D01* +X315317Y159521D01* +X319662Y159521D01* +X323677Y157858D01* +X326749Y154785D01* +X328412Y150771D01* +X328412Y146425D01* +X326749Y142411D01* +X323677Y139338D01* +X319662Y137675D01* +X315317Y137675D01* +G37* +%LPD*% +%LPC*% +G36* +X289995Y226965D02* +X289995Y226965D01* +X286123Y228569D01* +X283160Y231532D01* +X282878Y232213D01* +X281557Y235403D01* +X281557Y239593D01* +X282878Y242782D01* +X282968Y243000D01* +X283160Y243464D01* +X286123Y246427D01* +X289995Y248031D01* +X294185Y248031D01* +X298056Y246427D01* +X301019Y243464D01* +X302622Y239593D01* +X302622Y235403D01* +X301019Y231532D01* +X298056Y228569D01* +X294185Y226965D01* +X289995Y226965D01* +G37* +%LPD*% +%LPC*% +G36* +X133023Y8722D02* +X133023Y8722D01* +X128783Y12396D01* +X127202Y17780D01* +X128783Y23164D01* +X133023Y26838D01* +X138577Y27637D01* +X143681Y25306D01* +X146715Y20585D01* +X146715Y14975D01* +X143681Y10254D01* +X138577Y7923D01* +X133023Y8722D01* +G37* +%LPD*% +%LPC*% +G36* +X1253163Y87462D02* +X1253163Y87462D01* +X1248923Y91136D01* +X1247342Y96520D01* +X1248923Y101904D01* +X1253163Y105578D01* +X1258717Y106377D01* +X1263821Y104046D01* +X1266855Y99325D01* +X1266855Y93715D01* +X1263821Y88994D01* +X1258717Y86663D01* +X1253163Y87462D01* +G37* +%LPD*% +%LPC*% +G36* +X435283Y354162D02* +X435283Y354162D01* +X431043Y357836D01* +X429462Y363220D01* +X431043Y368604D01* +X435283Y372278D01* +X440837Y373077D01* +X445941Y370746D01* +X448975Y366025D01* +X448975Y360415D01* +X445941Y355694D01* +X440837Y353363D01* +X435283Y354162D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y129403D01* +X262069Y129278D01* +X263999Y128761D01* +X265845Y127996D01* +X267575Y126997D01* +X269160Y125781D01* +X270573Y124369D01* +X271789Y122783D01* +X272788Y121053D01* +X273552Y119207D01* +X274070Y117278D01* +X274194Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y286903D01* +X262069Y286778D01* +X263999Y286261D01* +X265845Y285496D01* +X267575Y284497D01* +X269160Y283281D01* +X270573Y281869D01* +X271789Y280283D01* +X272788Y278553D01* +X273552Y276707D01* +X274070Y274778D01* +X274194Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X243985Y273829D02* +X243985Y273829D01* +X244110Y274778D01* +X244627Y276707D01* +X245391Y278553D01* +X246390Y280283D01* +X247607Y281869D01* +X249019Y283281D01* +X250604Y284497D01* +X252334Y285496D01* +X254180Y286261D01* +X256110Y286778D01* +X257058Y286903D01* +X257058Y273829D01* +X243985Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X274194Y269767D01* +X274070Y268818D01* +X273552Y266888D01* +X272788Y265043D01* +X271789Y263312D01* +X270573Y261727D01* +X269160Y260315D01* +X267575Y259099D01* +X265845Y258100D01* +X263999Y257335D01* +X262069Y256818D01* +X261121Y256693D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X243985Y116329D02* +X243985Y116329D01* +X244110Y117278D01* +X244627Y119207D01* +X245391Y121053D01* +X246390Y122783D01* +X247607Y124369D01* +X249019Y125781D01* +X250604Y126997D01* +X252334Y127996D01* +X254180Y128761D01* +X256110Y129278D01* +X257058Y129403D01* +X257058Y116329D01* +X243985Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X256110Y256818D02* +X256110Y256818D01* +X254180Y257335D01* +X252334Y258100D01* +X250604Y259099D01* +X249019Y260315D01* +X247607Y261727D01* +X246390Y263312D01* +X245391Y265043D01* +X244627Y266888D01* +X244110Y268818D01* +X243985Y269767D01* +X257058Y269767D01* +X257058Y256693D01* +X256110Y256818D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y267537D01* +X182280Y267435D01* +X183992Y266879D01* +X185595Y266062D01* +X187050Y265004D01* +X188323Y263732D01* +X189380Y262276D01* +X190197Y260673D01* +X190753Y258962D01* +X190855Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X190855Y254254D01* +X190753Y253609D01* +X190197Y251897D01* +X189380Y250294D01* +X188323Y248839D01* +X187050Y247566D01* +X185595Y246509D01* +X183992Y245692D01* +X182280Y245136D01* +X181635Y245034D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X168352Y258317D02* +X168352Y258317D01* +X168454Y258962D01* +X169010Y260673D01* +X169827Y262276D01* +X170885Y263732D01* +X172157Y265004D01* +X173613Y266062D01* +X175216Y266879D01* +X176927Y267435D01* +X177572Y267537D01* +X177572Y258317D01* +X168352Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X176927Y245136D02* +X176927Y245136D01* +X175216Y245692D01* +X173613Y246509D01* +X172157Y247566D01* +X170885Y248839D01* +X169827Y250294D01* +X169010Y251897D01* +X168454Y253609D01* +X168352Y254254D01* +X177572Y254254D01* +X177572Y245034D01* +X176927Y245136D01* +G37* +%LPD*% +%LPC*% +G36* +X357631Y42379D02* +X357631Y42379D01* +X357631Y48389D01* +X363141Y48389D01* +X363141Y46105D01* +X362848Y45014D01* +X362283Y44035D01* +X361485Y43237D01* +X360506Y42672D01* +X359415Y42379D01* +X357631Y42379D01* +G37* +%LPD*% +%LPC*% +G36* +X351785Y42379D02* +X351785Y42379D01* +X350694Y42672D01* +X349715Y43237D01* +X348917Y44035D01* +X348352Y45014D01* +X348059Y46105D01* +X348059Y48389D01* +X353569Y48389D01* +X353569Y42379D01* +X351785Y42379D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +D10* +X295142Y305722D02* +X295142Y309298D01* +X299218Y309298D01* +X299218Y305722D01* +X295142Y305722D01* +X295142Y307551D02* +X299218Y307551D01* +X295142Y298798D02* +X295142Y295222D01* +X295142Y298798D02* +X299218Y298798D01* +X299218Y295222D01* +X295142Y295222D01* +X295142Y297051D02* +X299218Y297051D01* +X345942Y194998D02* +X345942Y191422D01* +X345942Y194998D02* +X350018Y194998D01* +X350018Y191422D01* +X345942Y191422D01* +X345942Y193251D02* +X350018Y193251D01* +X345942Y184498D02* +X345942Y180922D01* +X345942Y184498D02* +X350018Y184498D01* +X350018Y180922D01* +X345942Y180922D01* +X345942Y182751D02* +X350018Y182751D01* +X499878Y246962D02* +X499878Y250538D01* +X499878Y246962D02* +X495802Y246962D01* +X495802Y250538D01* +X499878Y250538D01* +X499878Y248791D02* +X495802Y248791D01* +X499878Y257462D02* +X499878Y261038D01* +X499878Y257462D02* +X495802Y257462D01* +X495802Y261038D01* +X499878Y261038D01* +X499878Y259291D02* +X495802Y259291D01* +D11* +X579830Y66870D02* +X579830Y59370D01* +X573330Y59370D01* +X573330Y66870D01* +X579830Y66870D01* +X579830Y62695D02* +X573330Y62695D01* +X573330Y66020D02* +X579830Y66020D01* +X579830Y75370D02* +X579830Y82870D01* +X579830Y75370D02* +X573330Y75370D01* +X573330Y82870D01* +X579830Y82870D01* +X579830Y78695D02* +X573330Y78695D01* +X573330Y82020D02* +X579830Y82020D01* +X352350Y70170D02* +X352350Y62670D01* +X352350Y70170D02* +X358850Y70170D01* +X358850Y62670D01* +X352350Y62670D01* +X352350Y65995D02* +X358850Y65995D01* +X358850Y69320D02* +X352350Y69320D01* +X352350Y54170D02* +X352350Y46670D01* +X352350Y54170D02* +X358850Y54170D01* +X358850Y46670D01* +X352350Y46670D01* +X352350Y49995D02* +X358850Y49995D01* +X358850Y53320D02* +X352350Y53320D01* +D10* +X691382Y163482D02* +X691382Y167058D01* +X695458Y167058D01* +X695458Y163482D01* +X691382Y163482D01* +X691382Y165311D02* +X695458Y165311D01* +X691382Y156558D02* +X691382Y152982D01* +X691382Y156558D02* +X695458Y156558D01* +X695458Y152982D01* +X691382Y152982D01* +X691382Y154811D02* +X695458Y154811D01* +X995178Y272362D02* +X995178Y275938D01* +X995178Y272362D02* +X991102Y272362D01* +X991102Y275938D01* +X995178Y275938D01* +X995178Y274191D02* +X991102Y274191D01* +X995178Y282862D02* +X995178Y286438D01* +X995178Y282862D02* +X991102Y282862D01* +X991102Y286438D01* +X995178Y286438D01* +X995178Y284691D02* +X991102Y284691D01* +X865638Y156558D02* +X865638Y152982D01* +X861562Y152982D01* +X861562Y156558D01* +X865638Y156558D01* +X865638Y154811D02* +X861562Y154811D01* +X865638Y163482D02* +X865638Y167058D01* +X865638Y163482D02* +X861562Y163482D01* +X861562Y167058D01* +X865638Y167058D01* +X865638Y165311D02* +X861562Y165311D01* +D11* +X498510Y296470D02* +X498510Y302970D01* +X509010Y302970D01* +X509010Y296470D01* +X498510Y296470D01* +X498510Y299795D02* +X509010Y299795D01* +X476510Y293470D02* +X476510Y286970D01* +X476510Y293470D02* +X487010Y293470D01* +X487010Y286970D01* +X476510Y286970D01* +X476510Y290295D02* +X487010Y290295D01* +X476510Y305970D02* +X476510Y312470D01* +X487010Y312470D01* +X487010Y305970D01* +X476510Y305970D01* +X476510Y309295D02* +X487010Y309295D01* +X457870Y326950D02* +X457870Y333450D01* +X468370Y333450D01* +X468370Y326950D01* +X457870Y326950D01* +X457870Y330275D02* +X468370Y330275D01* +X435870Y323950D02* +X435870Y317450D01* +X435870Y323950D02* +X446370Y323950D01* +X446370Y317450D01* +X435870Y317450D01* +X435870Y320775D02* +X446370Y320775D01* +X435870Y336450D02* +X435870Y342950D01* +X446370Y342950D01* +X446370Y336450D01* +X435870Y336450D01* +X435870Y339775D02* +X446370Y339775D01* +D10* +X1029202Y98478D02* +X1029202Y94902D01* +X1029202Y98478D02* +X1033278Y98478D01* +X1033278Y94902D01* +X1029202Y94902D01* +X1029202Y96731D02* +X1033278Y96731D01* +X1029202Y87978D02* +X1029202Y84402D01* +X1029202Y87978D02* +X1033278Y87978D01* +X1033278Y84402D01* +X1029202Y84402D01* +X1029202Y86231D02* +X1033278Y86231D01* +X704082Y143162D02* +X704082Y146738D01* +X708158Y146738D01* +X708158Y143162D01* +X704082Y143162D01* +X704082Y144991D02* +X708158Y144991D01* +X704082Y136238D02* +X704082Y132662D01* +X704082Y136238D02* +X708158Y136238D01* +X708158Y132662D01* +X704082Y132662D01* +X704082Y134491D02* +X708158Y134491D01* +X1252802Y191002D02* +X1256378Y191002D01* +X1252802Y191002D02* +X1252802Y195078D01* +X1256378Y195078D01* +X1256378Y191002D01* +X1256378Y192831D02* +X1252802Y192831D01* +X1252802Y194660D02* +X1256378Y194660D01* +X1263302Y191002D02* +X1266878Y191002D01* +X1263302Y191002D02* +X1263302Y195078D01* +X1266878Y195078D01* +X1266878Y191002D01* +X1266878Y192831D02* +X1263302Y192831D01* +X1263302Y194660D02* +X1266878Y194660D01* +X1256378Y140202D02* +X1252802Y140202D01* +X1252802Y144278D01* +X1256378Y144278D01* +X1256378Y140202D01* +X1256378Y142031D02* +X1252802Y142031D01* +X1252802Y143860D02* +X1256378Y143860D01* +X1263302Y140202D02* +X1266878Y140202D01* +X1263302Y140202D02* +X1263302Y144278D01* +X1266878Y144278D01* +X1266878Y140202D01* +X1266878Y142031D02* +X1263302Y142031D01* +X1263302Y143860D02* +X1266878Y143860D01* +X1256378Y127502D02* +X1252802Y127502D01* +X1252802Y131578D01* +X1256378Y131578D01* +X1256378Y127502D01* +X1256378Y129331D02* +X1252802Y129331D01* +X1252802Y131160D02* +X1256378Y131160D01* +X1263302Y127502D02* +X1266878Y127502D01* +X1263302Y127502D02* +X1263302Y131578D01* +X1266878Y131578D01* +X1266878Y127502D01* +X1266878Y129331D02* +X1263302Y129331D01* +X1263302Y131160D02* +X1266878Y131160D01* +X676142Y163482D02* +X676142Y167058D01* +X680218Y167058D01* +X680218Y163482D01* +X676142Y163482D01* +X676142Y165311D02* +X680218Y165311D01* +X676142Y156558D02* +X676142Y152982D01* +X676142Y156558D02* +X680218Y156558D01* +X680218Y152982D01* +X676142Y152982D01* +X676142Y154811D02* +X680218Y154811D01* +X1007878Y272362D02* +X1007878Y275938D01* +X1007878Y272362D02* +X1003802Y272362D01* +X1003802Y275938D01* +X1007878Y275938D01* +X1007878Y274191D02* +X1003802Y274191D01* +X1007878Y282862D02* +X1007878Y286438D01* +X1007878Y282862D02* +X1003802Y282862D01* +X1003802Y286438D01* +X1007878Y286438D01* +X1007878Y284691D02* +X1003802Y284691D01* +X874262Y167058D02* +X874262Y163482D01* +X874262Y167058D02* +X878338Y167058D01* +X878338Y163482D01* +X874262Y163482D01* +X874262Y165311D02* +X878338Y165311D01* +X874262Y156558D02* +X874262Y152982D01* +X874262Y156558D02* +X878338Y156558D01* +X878338Y152982D01* +X874262Y152982D01* +X874262Y154811D02* +X878338Y154811D01* +X1200918Y100678D02* +X1200918Y97102D01* +X1196842Y97102D01* +X1196842Y100678D01* +X1200918Y100678D01* +X1200918Y98931D02* +X1196842Y98931D01* +X1200918Y107602D02* +X1200918Y111178D01* +X1200918Y107602D02* +X1196842Y107602D01* +X1196842Y111178D01* +X1200918Y111178D01* +X1200918Y109431D02* +X1196842Y109431D01* +X968242Y130462D02* +X968242Y134038D01* +X972318Y134038D01* +X972318Y130462D01* +X968242Y130462D01* +X968242Y132291D02* +X972318Y132291D01* +X968242Y123538D02* +X968242Y119962D01* +X968242Y123538D02* +X972318Y123538D01* +X972318Y119962D01* +X968242Y119962D01* +X968242Y121791D02* +X972318Y121791D01* +X976282Y256038D02* +X979858Y256038D01* +X979858Y251962D01* +X976282Y251962D01* +X976282Y256038D01* +X976282Y253791D02* +X979858Y253791D01* +X979858Y255620D02* +X976282Y255620D01* +X969358Y256038D02* +X965782Y256038D01* +X969358Y256038D02* +X969358Y251962D01* +X965782Y251962D01* +X965782Y256038D01* +X965782Y253791D02* +X969358Y253791D01* +X969358Y255620D02* +X965782Y255620D01* +X1043438Y87978D02* +X1043438Y84402D01* +X1039362Y84402D01* +X1039362Y87978D01* +X1043438Y87978D01* +X1043438Y86231D02* +X1039362Y86231D01* +X1043438Y94902D02* +X1043438Y98478D01* +X1043438Y94902D02* +X1039362Y94902D01* +X1039362Y98478D01* +X1043438Y98478D01* +X1043438Y96731D02* +X1039362Y96731D01* +X441378Y212858D02* +X437802Y212858D01* +X441378Y212858D02* +X441378Y208782D01* +X437802Y208782D01* +X437802Y212858D01* +X437802Y210611D02* +X441378Y210611D01* +X441378Y212440D02* +X437802Y212440D01* +X430878Y212858D02* +X427302Y212858D01* +X430878Y212858D02* +X430878Y208782D01* +X427302Y208782D01* +X427302Y212858D01* +X427302Y210611D02* +X430878Y210611D01* +X430878Y212440D02* +X427302Y212440D01* +X437802Y177298D02* +X441378Y177298D01* +X441378Y173222D01* +X437802Y173222D01* +X437802Y177298D01* +X437802Y175051D02* +X441378Y175051D01* +X441378Y176880D02* +X437802Y176880D01* +X430878Y177298D02* +X427302Y177298D01* +X430878Y177298D02* +X430878Y173222D01* +X427302Y173222D01* +X427302Y177298D01* +X427302Y175051D02* +X430878Y175051D01* +X430878Y176880D02* +X427302Y176880D01* +X430182Y187458D02* +X433758Y187458D01* +X433758Y183382D01* +X430182Y183382D01* +X430182Y187458D01* +X430182Y185211D02* +X433758Y185211D01* +X433758Y187040D02* +X430182Y187040D01* +X423258Y187458D02* +X419682Y187458D01* +X423258Y187458D02* +X423258Y183382D01* +X419682Y183382D01* +X419682Y187458D01* +X419682Y185211D02* +X423258Y185211D01* +X423258Y187040D02* +X419682Y187040D01* +X430182Y202698D02* +X433758Y202698D01* +X433758Y198622D01* +X430182Y198622D01* +X430182Y202698D01* +X430182Y200451D02* +X433758Y200451D01* +X433758Y202280D02* +X430182Y202280D01* +X423258Y202698D02* +X419682Y202698D01* +X423258Y202698D02* +X423258Y198622D01* +X419682Y198622D01* +X419682Y202698D01* +X419682Y200451D02* +X423258Y200451D01* +X423258Y202280D02* +X419682Y202280D01* +X526362Y201162D02* +X529938Y201162D01* +X526362Y201162D02* +X526362Y205238D01* +X529938Y205238D01* +X529938Y201162D01* +X529938Y202991D02* +X526362Y202991D01* +X526362Y204820D02* +X529938Y204820D01* +X536862Y201162D02* +X540438Y201162D01* +X536862Y201162D02* +X536862Y205238D01* +X540438Y205238D01* +X540438Y201162D01* +X540438Y202991D02* +X536862Y202991D01* +X536862Y204820D02* +X540438Y204820D01* +X554302Y152902D02* +X557878Y152902D01* +X554302Y152902D02* +X554302Y156978D01* +X557878Y156978D01* +X557878Y152902D01* +X557878Y154731D02* +X554302Y154731D01* +X554302Y156560D02* +X557878Y156560D01* +X564802Y152902D02* +X568378Y152902D01* +X564802Y152902D02* +X564802Y156978D01* +X568378Y156978D01* +X568378Y152902D01* +X568378Y154731D02* +X564802Y154731D01* +X564802Y156560D02* +X568378Y156560D01* +X568458Y178382D02* +X568458Y181958D01* +X568458Y178382D02* +X564382Y178382D01* +X564382Y181958D01* +X568458Y181958D01* +X568458Y180211D02* +X564382Y180211D01* +X568458Y188882D02* +X568458Y192458D01* +X568458Y188882D02* +X564382Y188882D01* +X564382Y192458D01* +X568458Y192458D01* +X568458Y190711D02* +X564382Y190711D01* +X529938Y226562D02* +X526362Y226562D01* +X526362Y230638D01* +X529938Y230638D01* +X529938Y226562D01* +X529938Y228391D02* +X526362Y228391D01* +X526362Y230220D02* +X529938Y230220D01* +X536862Y226562D02* +X540438Y226562D01* +X536862Y226562D02* +X536862Y230638D01* +X540438Y230638D01* +X540438Y226562D01* +X540438Y228391D02* +X536862Y228391D01* +X536862Y230220D02* +X540438Y230220D01* +X461778Y169258D02* +X461778Y165682D01* +X457702Y165682D01* +X457702Y169258D01* +X461778Y169258D01* +X461778Y167511D02* +X457702Y167511D01* +X461778Y176182D02* +X461778Y179758D01* +X461778Y176182D02* +X457702Y176182D01* +X457702Y179758D01* +X461778Y179758D01* +X461778Y178011D02* +X457702Y178011D01* +X441378Y141738D02* +X437802Y141738D01* +X441378Y141738D02* +X441378Y137662D01* +X437802Y137662D01* +X437802Y141738D01* +X437802Y139491D02* +X441378Y139491D01* +X441378Y141320D02* +X437802Y141320D01* +X430878Y141738D02* +X427302Y141738D01* +X430878Y141738D02* +X430878Y137662D01* +X427302Y137662D01* +X427302Y141738D01* +X427302Y139491D02* +X430878Y139491D01* +X430878Y141320D02* +X427302Y141320D01* +X439922Y305722D02* +X439922Y309298D01* +X443998Y309298D01* +X443998Y305722D01* +X439922Y305722D01* +X439922Y307551D02* +X443998Y307551D01* +X439922Y298798D02* +X439922Y295222D01* +X439922Y298798D02* +X443998Y298798D01* +X443998Y295222D01* +X439922Y295222D01* +X439922Y297051D02* +X443998Y297051D01* +X441378Y129038D02* +X437802Y129038D01* +X441378Y129038D02* +X441378Y124962D01* +X437802Y124962D01* +X437802Y129038D01* +X437802Y126791D02* +X441378Y126791D01* +X441378Y128620D02* +X437802Y128620D01* +X430878Y129038D02* +X427302Y129038D01* +X430878Y129038D02* +X430878Y124962D01* +X427302Y124962D01* +X427302Y129038D01* +X427302Y126791D02* +X430878Y126791D01* +X430878Y128620D02* +X427302Y128620D01* +X549562Y192538D02* +X553138Y192538D01* +X553138Y188462D01* +X549562Y188462D01* +X549562Y192538D01* +X549562Y190291D02* +X553138Y190291D01* +X553138Y192120D02* +X549562Y192120D01* +X542638Y192538D02* +X539062Y192538D01* +X542638Y192538D02* +X542638Y188462D01* +X539062Y188462D01* +X539062Y192538D01* +X539062Y190291D02* +X542638Y190291D01* +X542638Y192120D02* +X539062Y192120D01* +X529938Y213862D02* +X526362Y213862D01* +X526362Y217938D01* +X529938Y217938D01* +X529938Y213862D01* +X529938Y215691D02* +X526362Y215691D01* +X526362Y217520D02* +X529938Y217520D01* +X536862Y213862D02* +X540438Y213862D01* +X536862Y213862D02* +X536862Y217938D01* +X540438Y217938D01* +X540438Y213862D01* +X540438Y215691D02* +X536862Y215691D01* +X536862Y217520D02* +X540438Y217520D01* +X541522Y156898D02* +X541522Y153322D01* +X541522Y156898D02* +X545598Y156898D01* +X545598Y153322D01* +X541522Y153322D01* +X541522Y155151D02* +X545598Y155151D01* +X541522Y146398D02* +X541522Y142822D01* +X541522Y146398D02* +X545598Y146398D01* +X545598Y142822D01* +X541522Y142822D01* +X541522Y144651D02* +X545598Y144651D01* +X564802Y172218D02* +X568378Y172218D01* +X568378Y168142D01* +X564802Y168142D01* +X564802Y172218D01* +X564802Y169971D02* +X568378Y169971D01* +X568378Y171800D02* +X564802Y171800D01* +X557878Y172218D02* +X554302Y172218D01* +X557878Y172218D02* +X557878Y168142D01* +X554302Y168142D01* +X554302Y172218D01* +X554302Y169971D02* +X557878Y169971D01* +X557878Y171800D02* +X554302Y171800D01* +X487178Y246962D02* +X487178Y250538D01* +X487178Y246962D02* +X483102Y246962D01* +X483102Y250538D01* +X487178Y250538D01* +X487178Y248791D02* +X483102Y248791D01* +X487178Y257462D02* +X487178Y261038D01* +X487178Y257462D02* +X483102Y257462D01* +X483102Y261038D01* +X487178Y261038D01* +X487178Y259291D02* +X483102Y259291D01* +X754962Y86862D02* +X758538Y86862D01* +X754962Y86862D02* +X754962Y90938D01* +X758538Y90938D01* +X758538Y86862D01* +X758538Y88691D02* +X754962Y88691D01* +X754962Y90520D02* +X758538Y90520D01* +X765462Y86862D02* +X769038Y86862D01* +X765462Y86862D02* +X765462Y90938D01* +X769038Y90938D01* +X769038Y86862D01* +X769038Y88691D02* +X765462Y88691D01* +X765462Y90520D02* +X769038Y90520D01* +X464318Y295222D02* +X464318Y298798D01* +X464318Y295222D02* +X460242Y295222D01* +X460242Y298798D01* +X464318Y298798D01* +X464318Y297051D02* +X460242Y297051D01* +X464318Y305722D02* +X464318Y309298D01* +X464318Y305722D02* +X460242Y305722D01* +X460242Y309298D01* +X464318Y309298D01* +X464318Y307551D02* +X460242Y307551D01* +X404362Y309298D02* +X404362Y305722D01* +X404362Y309298D02* +X408438Y309298D01* +X408438Y305722D01* +X404362Y305722D01* +X404362Y307551D02* +X408438Y307551D01* +X404362Y298798D02* +X404362Y295222D01* +X404362Y298798D02* +X408438Y298798D01* +X408438Y295222D01* +X404362Y295222D01* +X404362Y297051D02* +X408438Y297051D01* +X395738Y298798D02* +X395738Y295222D01* +X391662Y295222D01* +X391662Y298798D01* +X395738Y298798D01* +X395738Y297051D02* +X391662Y297051D01* +X395738Y305722D02* +X395738Y309298D01* +X395738Y305722D02* +X391662Y305722D01* +X391662Y309298D01* +X395738Y309298D01* +X395738Y307551D02* +X391662Y307551D01* +X1213618Y100678D02* +X1213618Y97102D01* +X1209542Y97102D01* +X1209542Y100678D01* +X1213618Y100678D01* +X1213618Y98931D02* +X1209542Y98931D01* +X1213618Y107602D02* +X1213618Y111178D01* +X1213618Y107602D02* +X1209542Y107602D01* +X1209542Y111178D01* +X1213618Y111178D01* +X1213618Y109431D02* +X1209542Y109431D01* +X751258Y162058D02* +X747682Y162058D01* +X751258Y162058D02* +X751258Y157982D01* +X747682Y157982D01* +X747682Y162058D01* +X747682Y159811D02* +X751258Y159811D01* +X751258Y161640D02* +X747682Y161640D01* +X740758Y162058D02* +X737182Y162058D01* +X740758Y162058D02* +X740758Y157982D01* +X737182Y157982D01* +X737182Y162058D01* +X737182Y159811D02* +X740758Y159811D01* +X740758Y161640D02* +X737182Y161640D01* +X715358Y157982D02* +X711782Y157982D01* +X711782Y162058D01* +X715358Y162058D01* +X715358Y157982D01* +X715358Y159811D02* +X711782Y159811D01* +X711782Y161640D02* +X715358Y161640D01* +X722282Y157982D02* +X725858Y157982D01* +X722282Y157982D02* +X722282Y162058D01* +X725858Y162058D01* +X725858Y157982D01* +X725858Y159811D02* +X722282Y159811D01* +X722282Y161640D02* +X725858Y161640D01* +D11* +X456250Y262330D02* +X448750Y262330D01* +X456250Y262330D02* +X456250Y255830D01* +X448750Y255830D01* +X448750Y262330D01* +X448750Y259155D02* +X456250Y259155D01* +X440250Y262330D02* +X432750Y262330D01* +X440250Y262330D02* +X440250Y255830D01* +X432750Y255830D01* +X432750Y262330D01* +X432750Y259155D02* +X440250Y259155D01* +X440250Y225350D02* +X432750Y225350D01* +X432750Y231850D01* +X440250Y231850D01* +X440250Y225350D01* +X440250Y228675D02* +X432750Y228675D01* +X448750Y225350D02* +X456250Y225350D01* +X448750Y225350D02* +X448750Y231850D01* +X456250Y231850D01* +X456250Y225350D01* +X456250Y228675D02* +X448750Y228675D01* +D10* +X1035818Y166718D02* +X1035818Y163142D01* +X1031742Y163142D01* +X1031742Y166718D01* +X1035818Y166718D01* +X1035818Y164971D02* +X1031742Y164971D01* +X1035818Y173642D02* +X1035818Y177218D01* +X1035818Y173642D02* +X1031742Y173642D01* +X1031742Y177218D01* +X1035818Y177218D01* +X1035818Y175471D02* +X1031742Y175471D01* +X464318Y206322D02* +X464318Y209898D01* +X464318Y206322D02* +X460242Y206322D01* +X460242Y209898D01* +X464318Y209898D01* +X464318Y208151D02* +X460242Y208151D01* +X464318Y216822D02* +X464318Y220398D01* +X464318Y216822D02* +X460242Y216822D01* +X460242Y220398D01* +X464318Y220398D01* +X464318Y218651D02* +X460242Y218651D01* +X470402Y159438D02* +X470402Y155862D01* +X470402Y159438D02* +X474478Y159438D01* +X474478Y155862D01* +X470402Y155862D01* +X470402Y157691D02* +X474478Y157691D01* +X470402Y148938D02* +X470402Y145362D01* +X470402Y148938D02* +X474478Y148938D01* +X474478Y145362D01* +X470402Y145362D01* +X470402Y147191D02* +X474478Y147191D01* +D11* +X524950Y137870D02* +X532450Y137870D01* +X532450Y131370D01* +X524950Y131370D01* +X524950Y137870D01* +X524950Y134695D02* +X532450Y134695D01* +X516450Y137870D02* +X508950Y137870D01* +X516450Y137870D02* +X516450Y131370D01* +X508950Y131370D01* +X508950Y137870D01* +X508950Y134695D02* +X516450Y134695D01* +X1024330Y282890D02* +X1024330Y290390D01* +X1024330Y282890D02* +X1017830Y282890D01* +X1017830Y290390D01* +X1024330Y290390D01* +X1024330Y286215D02* +X1017830Y286215D01* +X1017830Y289540D02* +X1024330Y289540D01* +X1024330Y298890D02* +X1024330Y306390D01* +X1024330Y298890D02* +X1017830Y298890D01* +X1017830Y306390D01* +X1024330Y306390D01* +X1024330Y302215D02* +X1017830Y302215D01* +X1017830Y305540D02* +X1024330Y305540D01* +D10* +X1035818Y293718D02* +X1035818Y290142D01* +X1031742Y290142D01* +X1031742Y293718D01* +X1035818Y293718D01* +X1035818Y291971D02* +X1031742Y291971D01* +X1035818Y300642D02* +X1035818Y304218D01* +X1035818Y300642D02* +X1031742Y300642D01* +X1031742Y304218D01* +X1035818Y304218D01* +X1035818Y302471D02* +X1031742Y302471D01* +D11* +X1012750Y70170D02* +X1012750Y62670D01* +X1012750Y70170D02* +X1019250Y70170D01* +X1019250Y62670D01* +X1012750Y62670D01* +X1012750Y65995D02* +X1019250Y65995D01* +X1019250Y69320D02* +X1012750Y69320D01* +X1012750Y54170D02* +X1012750Y46670D01* +X1012750Y54170D02* +X1019250Y54170D01* +X1019250Y46670D01* +X1012750Y46670D01* +X1012750Y49995D02* +X1019250Y49995D01* +X1019250Y53320D02* +X1012750Y53320D01* +X687630Y88070D02* +X687630Y95570D01* +X694130Y95570D01* +X694130Y88070D01* +X687630Y88070D01* +X687630Y91395D02* +X694130Y91395D01* +X694130Y94720D02* +X687630Y94720D01* +X687630Y79570D02* +X687630Y72070D01* +X687630Y79570D02* +X694130Y79570D01* +X694130Y72070D01* +X687630Y72070D01* +X687630Y75395D02* +X694130Y75395D01* +X694130Y78720D02* +X687630Y78720D01* +D10* +X1049522Y94902D02* +X1049522Y98478D01* +X1053598Y98478D01* +X1053598Y94902D01* +X1049522Y94902D01* +X1049522Y96731D02* +X1053598Y96731D01* +X1049522Y87978D02* +X1049522Y84402D01* +X1049522Y87978D02* +X1053598Y87978D01* +X1053598Y84402D01* +X1049522Y84402D01* +X1049522Y86231D02* +X1053598Y86231D01* +X511042Y155862D02* +X511042Y159438D01* +X515118Y159438D01* +X515118Y155862D01* +X511042Y155862D01* +X511042Y157691D02* +X515118Y157691D01* +X511042Y148938D02* +X511042Y145362D01* +X511042Y148938D02* +X515118Y148938D01* +X515118Y145362D01* +X511042Y145362D01* +X511042Y147191D02* +X515118Y147191D01* +X523742Y155862D02* +X523742Y159438D01* +X527818Y159438D01* +X527818Y155862D01* +X523742Y155862D01* +X523742Y157691D02* +X527818Y157691D01* +X523742Y148938D02* +X523742Y145362D01* +X523742Y148938D02* +X527818Y148938D01* +X527818Y145362D01* +X523742Y145362D01* +X523742Y147191D02* +X527818Y147191D01* +X262122Y305722D02* +X262122Y309298D01* +X266198Y309298D01* +X266198Y305722D01* +X262122Y305722D01* +X262122Y307551D02* +X266198Y307551D01* +X262122Y298798D02* +X262122Y295222D01* +X262122Y298798D02* +X266198Y298798D01* +X266198Y295222D01* +X262122Y295222D01* +X262122Y297051D02* +X266198Y297051D01* +X274822Y305722D02* +X274822Y309298D01* +X278898Y309298D01* +X278898Y305722D01* +X274822Y305722D01* +X274822Y307551D02* +X278898Y307551D01* +X274822Y298798D02* +X274822Y295222D01* +X274822Y298798D02* +X278898Y298798D01* +X278898Y295222D01* +X274822Y295222D01* +X274822Y297051D02* +X278898Y297051D01* +X307842Y305722D02* +X307842Y309298D01* +X311918Y309298D01* +X311918Y305722D01* +X307842Y305722D01* +X307842Y307551D02* +X311918Y307551D01* +X307842Y298798D02* +X307842Y295222D01* +X307842Y298798D02* +X311918Y298798D01* +X311918Y295222D01* +X307842Y295222D01* +X307842Y297051D02* +X311918Y297051D01* +D11* +X516290Y64210D02* +X516290Y57710D01* +X516290Y64210D02* +X526790Y64210D01* +X526790Y57710D01* +X516290Y57710D01* +X516290Y61035D02* +X526790Y61035D01* +X494290Y54710D02* +X494290Y48210D01* +X494290Y54710D02* +X504790Y54710D01* +X504790Y48210D01* +X494290Y48210D01* +X494290Y51535D02* +X504790Y51535D01* +X494290Y67210D02* +X494290Y73710D01* +X504790Y73710D01* +X504790Y67210D01* +X494290Y67210D01* +X494290Y70535D02* +X504790Y70535D01* +D10* +X182378Y340942D02* +X182378Y344518D01* +X182378Y340942D02* +X178302Y340942D01* +X178302Y344518D01* +X182378Y344518D01* +X182378Y342771D02* +X178302Y342771D01* +X182378Y351442D02* +X182378Y355018D01* +X182378Y351442D02* +X178302Y351442D01* +X178302Y355018D01* +X182378Y355018D01* +X182378Y353271D02* +X178302Y353271D01* +D11* +X448750Y247090D02* +X456250Y247090D01* +X456250Y240590D01* +X448750Y240590D01* +X448750Y247090D01* +X448750Y243915D02* +X456250Y243915D01* +X440250Y247090D02* +X432750Y247090D01* +X440250Y247090D02* +X440250Y240590D01* +X432750Y240590D01* +X432750Y247090D01* +X432750Y243915D02* +X440250Y243915D01* +D12* +X611777Y105693D02* +X611777Y98107D01* +X611777Y105693D02* +X616263Y105693D01* +X616263Y98107D01* +X611777Y98107D01* +X611777Y100401D02* +X616263Y100401D01* +X616263Y102695D02* +X611777Y102695D01* +X611777Y104989D02* +X616263Y104989D01* +X602277Y105693D02* +X602277Y98107D01* +X602277Y105693D02* +X606763Y105693D01* +X606763Y98107D01* +X602277Y98107D01* +X602277Y100401D02* +X606763Y100401D01* +X606763Y102695D02* +X602277Y102695D01* +X602277Y104989D02* +X606763Y104989D01* +X592777Y105693D02* +X592777Y98107D01* +X592777Y105693D02* +X597263Y105693D01* +X597263Y98107D01* +X592777Y98107D01* +X592777Y100401D02* +X597263Y100401D01* +X597263Y102695D02* +X592777Y102695D01* +X592777Y104989D02* +X597263Y104989D01* +X592777Y79693D02* +X592777Y72107D01* +X592777Y79693D02* +X597263Y79693D01* +X597263Y72107D01* +X592777Y72107D01* +X592777Y74401D02* +X597263Y74401D01* +X597263Y76695D02* +X592777Y76695D01* +X592777Y78989D02* +X597263Y78989D01* +X602277Y79693D02* +X602277Y72107D01* +X602277Y79693D02* +X606763Y79693D01* +X606763Y72107D01* +X602277Y72107D01* +X602277Y74401D02* +X606763Y74401D01* +X606763Y76695D02* +X602277Y76695D01* +X602277Y78989D02* +X606763Y78989D01* +X611777Y79693D02* +X611777Y72107D01* +X611777Y79693D02* +X616263Y79693D01* +X616263Y72107D01* +X611777Y72107D01* +X611777Y74401D02* +X616263Y74401D01* +X616263Y76695D02* +X611777Y76695D01* +X611777Y78989D02* +X616263Y78989D01* +D13* +X639960Y77580D02* +X647760Y77580D01* +X639960Y77580D02* +X639960Y110380D01* +X647760Y110380D01* +X647760Y77580D01* +X647760Y81570D02* +X639960Y81570D01* +X639960Y85560D02* +X647760Y85560D01* +X647760Y89550D02* +X639960Y89550D01* +X639960Y93540D02* +X647760Y93540D01* +X647760Y97530D02* +X639960Y97530D01* +X639960Y101520D02* +X647760Y101520D01* +X647760Y105510D02* +X639960Y105510D01* +X639960Y109500D02* +X647760Y109500D01* +X667960Y77580D02* +X675760Y77580D01* +X667960Y77580D02* +X667960Y110380D01* +X675760Y110380D01* +X675760Y77580D01* +X675760Y81570D02* +X667960Y81570D01* +X667960Y85560D02* +X675760Y85560D01* +X675760Y89550D02* +X667960Y89550D01* +X667960Y93540D02* +X675760Y93540D01* +X675760Y97530D02* +X667960Y97530D01* +X667960Y101520D02* +X675760Y101520D01* +X675760Y105510D02* +X667960Y105510D01* +X667960Y109500D02* +X675760Y109500D01* +D10* +X606478Y65538D02* +X602902Y65538D01* +X606478Y65538D02* +X606478Y61462D01* +X602902Y61462D01* +X602902Y65538D01* +X602902Y63291D02* +X606478Y63291D01* +X606478Y65120D02* +X602902Y65120D01* +X595978Y65538D02* +X592402Y65538D01* +X595978Y65538D02* +X595978Y61462D01* +X592402Y61462D01* +X592402Y65538D01* +X592402Y63291D02* +X595978Y63291D01* +X595978Y65120D02* +X592402Y65120D01* +X627882Y107602D02* +X627882Y111178D01* +X631958Y111178D01* +X631958Y107602D01* +X627882Y107602D01* +X627882Y109431D02* +X631958Y109431D01* +X627882Y100678D02* +X627882Y97102D01* +X627882Y100678D02* +X631958Y100678D01* +X631958Y97102D01* +X627882Y97102D01* +X627882Y98931D02* +X631958Y98931D01* +X613758Y114802D02* +X610182Y114802D01* +X610182Y118878D01* +X613758Y118878D01* +X613758Y114802D01* +X613758Y116631D02* +X610182Y116631D01* +X610182Y118460D02* +X613758Y118460D01* +X620682Y114802D02* +X624258Y114802D01* +X620682Y114802D02* +X620682Y118878D01* +X624258Y118878D01* +X624258Y114802D01* +X624258Y116631D02* +X620682Y116631D01* +X620682Y118460D02* +X624258Y118460D01* +X588358Y114802D02* +X584782Y114802D01* +X584782Y118878D01* +X588358Y118878D01* +X588358Y114802D01* +X588358Y116631D02* +X584782Y116631D01* +X584782Y118460D02* +X588358Y118460D01* +X595282Y114802D02* +X598858Y114802D01* +X595282Y114802D02* +X595282Y118878D01* +X598858Y118878D01* +X598858Y114802D01* +X598858Y116631D02* +X595282Y116631D01* +X595282Y118460D02* +X598858Y118460D01* +D14* +X639369Y62916D02* +X639369Y53924D01* +X633425Y53924D01* +X633425Y62916D01* +X639369Y62916D01* +X639369Y56964D02* +X633425Y56964D01* +X633425Y60004D02* +X639369Y60004D01* +X672135Y62916D02* +X672135Y53924D01* +X666191Y53924D01* +X666191Y62916D01* +X672135Y62916D01* +X672135Y56964D02* +X666191Y56964D01* +X666191Y60004D02* +X672135Y60004D01* +D10* +X550258Y114802D02* +X546682Y114802D01* +X546682Y118878D01* +X550258Y118878D01* +X550258Y114802D01* +X550258Y116631D02* +X546682Y116631D01* +X546682Y118460D02* +X550258Y118460D01* +X557182Y114802D02* +X560758Y114802D01* +X557182Y114802D02* +X557182Y118878D01* +X560758Y118878D01* +X560758Y114802D01* +X560758Y116631D02* +X557182Y116631D01* +X557182Y118460D02* +X560758Y118460D01* +D11* +X559470Y94690D02* +X559470Y88190D01* +X559470Y94690D02* +X569970Y94690D01* +X569970Y88190D01* +X559470Y88190D01* +X559470Y91515D02* +X569970Y91515D01* +X537470Y85190D02* +X537470Y78690D01* +X537470Y85190D02* +X547970Y85190D01* +X547970Y78690D01* +X537470Y78690D01* +X537470Y82015D02* +X547970Y82015D01* +X537470Y97690D02* +X537470Y104190D01* +X547970Y104190D01* +X547970Y97690D01* +X537470Y97690D01* +X537470Y101015D02* +X547970Y101015D01* +X546930Y60250D02* +X539430Y60250D01* +X539430Y66750D01* +X546930Y66750D01* +X546930Y60250D01* +X546930Y63575D02* +X539430Y63575D01* +X555430Y60250D02* +X562930Y60250D01* +X555430Y60250D02* +X555430Y66750D01* +X562930Y66750D01* +X562930Y60250D01* +X562930Y63575D02* +X555430Y63575D01* +D15* +X581450Y132470D02* +X597550Y132470D01* +X581450Y132470D02* +X581450Y141570D01* +X597550Y141570D01* +X597550Y132470D01* +X597550Y137125D02* +X581450Y137125D01* +X581450Y178470D02* +X597550Y178470D01* +X581450Y178470D02* +X581450Y187570D01* +X597550Y187570D01* +X597550Y178470D01* +X597550Y183125D02* +X581450Y183125D01* +X672450Y178470D02* +X688550Y178470D01* +X672450Y178470D02* +X672450Y187570D01* +X688550Y187570D01* +X688550Y178470D01* +X688550Y183125D02* +X672450Y183125D01* +X672450Y132470D02* +X688550Y132470D01* +X672450Y132470D02* +X672450Y141570D01* +X688550Y141570D01* +X688550Y132470D01* +X688550Y137125D02* +X672450Y137125D01* +X941950Y197910D02* +X941950Y214010D01* +X941950Y197910D02* +X932850Y197910D01* +X932850Y214010D01* +X941950Y214010D01* +X941950Y202565D02* +X932850Y202565D01* +X932850Y207220D02* +X941950Y207220D01* +X941950Y211875D02* +X932850Y211875D01* +X895950Y214010D02* +X895950Y197910D01* +X886850Y197910D01* +X886850Y214010D01* +X895950Y214010D01* +X895950Y202565D02* +X886850Y202565D01* +X886850Y207220D02* +X895950Y207220D01* +X895950Y211875D02* +X886850Y211875D01* +X895950Y288910D02* +X895950Y305010D01* +X895950Y288910D02* +X886850Y288910D01* +X886850Y305010D01* +X895950Y305010D01* +X895950Y293565D02* +X886850Y293565D01* +X886850Y298220D02* +X895950Y298220D01* +X895950Y302875D02* +X886850Y302875D01* +X941950Y305010D02* +X941950Y288910D01* +X932850Y288910D01* +X932850Y305010D01* +X941950Y305010D01* +X941950Y293565D02* +X932850Y293565D01* +X932850Y298220D02* +X941950Y298220D01* +X941950Y302875D02* +X932850Y302875D01* +X782970Y132470D02* +X766870Y132470D01* +X766870Y141570D01* +X782970Y141570D01* +X782970Y132470D01* +X782970Y137125D02* +X766870Y137125D01* +X766870Y178470D02* +X782970Y178470D01* +X766870Y178470D02* +X766870Y187570D01* +X782970Y187570D01* +X782970Y178470D01* +X782970Y183125D02* +X766870Y183125D01* +X857870Y178470D02* +X873970Y178470D01* +X857870Y178470D02* +X857870Y187570D01* +X873970Y187570D01* +X873970Y178470D01* +X873970Y183125D02* +X857870Y183125D01* +X857870Y132470D02* +X873970Y132470D01* +X857870Y132470D02* +X857870Y141570D01* +X873970Y141570D01* +X873970Y132470D01* +X873970Y137125D02* +X857870Y137125D01* +D10* +X537558Y178302D02* +X533982Y178302D01* +X533982Y182378D01* +X537558Y182378D01* +X537558Y178302D01* +X537558Y180131D02* +X533982Y180131D01* +X533982Y181960D02* +X537558Y181960D01* +X544482Y178302D02* +X548058Y178302D01* +X544482Y178302D02* +X544482Y182378D01* +X548058Y182378D01* +X548058Y178302D01* +X548058Y180131D02* +X544482Y180131D01* +X544482Y181960D02* +X548058Y181960D01* +X508502Y257462D02* +X508502Y261038D01* +X512578Y261038D01* +X512578Y257462D01* +X508502Y257462D01* +X508502Y259291D02* +X512578Y259291D01* +X508502Y250538D02* +X508502Y246962D01* +X508502Y250538D02* +X512578Y250538D01* +X512578Y246962D01* +X508502Y246962D01* +X508502Y248791D02* +X512578Y248791D01* +X861642Y53842D02* +X865218Y53842D01* +X861642Y53842D02* +X861642Y57918D01* +X865218Y57918D01* +X865218Y53842D01* +X865218Y55671D02* +X861642Y55671D01* +X861642Y57500D02* +X865218Y57500D01* +X872142Y53842D02* +X875718Y53842D01* +X872142Y53842D02* +X872142Y57918D01* +X875718Y57918D01* +X875718Y53842D01* +X875718Y55671D02* +X872142Y55671D01* +X872142Y57500D02* +X875718Y57500D01* +D16* +X1105420Y206560D02* +X1150420Y206560D01* +X1105420Y206560D02* +X1105420Y251560D01* +X1150420Y251560D01* +X1150420Y206560D01* +X1150420Y211310D02* +X1105420Y211310D01* +X1105420Y216060D02* +X1150420Y216060D01* +X1150420Y220810D02* +X1105420Y220810D01* +X1105420Y225560D02* +X1150420Y225560D01* +X1150420Y230310D02* +X1105420Y230310D01* +X1105420Y235060D02* +X1150420Y235060D01* +X1150420Y239810D02* +X1105420Y239810D01* +X1105420Y244560D02* +X1150420Y244560D01* +X1150420Y249310D02* +X1105420Y249310D01* +D17* +X1061345Y301135D02* +X1044495Y301135D01* +X1044495Y306985D01* +X1061345Y306985D01* +X1061345Y301135D01* +X1061345Y304127D02* +X1044495Y304127D01* +X1044495Y288435D02* +X1061345Y288435D01* +X1044495Y288435D02* +X1044495Y294285D01* +X1061345Y294285D01* +X1061345Y288435D01* +X1061345Y291427D02* +X1044495Y291427D01* +X1044495Y275735D02* +X1061345Y275735D01* +X1044495Y275735D02* +X1044495Y281585D01* +X1061345Y281585D01* +X1061345Y275735D01* +X1061345Y278727D02* +X1044495Y278727D01* +X1044495Y263035D02* +X1061345Y263035D01* +X1044495Y263035D02* +X1044495Y268885D01* +X1061345Y268885D01* +X1061345Y263035D01* +X1061345Y266027D02* +X1044495Y266027D01* +X1044495Y250335D02* +X1061345Y250335D01* +X1044495Y250335D02* +X1044495Y256185D01* +X1061345Y256185D01* +X1061345Y250335D01* +X1061345Y253327D02* +X1044495Y253327D01* +X1044495Y237635D02* +X1061345Y237635D01* +X1044495Y237635D02* +X1044495Y243485D01* +X1061345Y243485D01* +X1061345Y237635D01* +X1061345Y240627D02* +X1044495Y240627D01* +X1044495Y224935D02* +X1061345Y224935D01* +X1044495Y224935D02* +X1044495Y230785D01* +X1061345Y230785D01* +X1061345Y224935D01* +X1061345Y227927D02* +X1044495Y227927D01* +X1044495Y212235D02* +X1061345Y212235D01* +X1044495Y212235D02* +X1044495Y218085D01* +X1061345Y218085D01* +X1061345Y212235D01* +X1061345Y215227D02* +X1044495Y215227D01* +X1044495Y199535D02* +X1061345Y199535D01* +X1044495Y199535D02* +X1044495Y205385D01* +X1061345Y205385D01* +X1061345Y199535D01* +X1061345Y202527D02* +X1044495Y202527D01* +X1044495Y186835D02* +X1061345Y186835D01* +X1044495Y186835D02* +X1044495Y192685D01* +X1061345Y192685D01* +X1061345Y186835D01* +X1061345Y189827D02* +X1044495Y189827D01* +X1044495Y174135D02* +X1061345Y174135D01* +X1044495Y174135D02* +X1044495Y179985D01* +X1061345Y179985D01* +X1061345Y174135D01* +X1061345Y177127D02* +X1044495Y177127D01* +X1044495Y161435D02* +X1061345Y161435D01* +X1044495Y161435D02* +X1044495Y167285D01* +X1061345Y167285D01* +X1061345Y161435D01* +X1061345Y164427D02* +X1044495Y164427D01* +X1044495Y148735D02* +X1061345Y148735D01* +X1044495Y148735D02* +X1044495Y154585D01* +X1061345Y154585D01* +X1061345Y148735D01* +X1061345Y151727D02* +X1044495Y151727D01* +X1044495Y136035D02* +X1061345Y136035D01* +X1044495Y136035D02* +X1044495Y141885D01* +X1061345Y141885D01* +X1061345Y136035D01* +X1061345Y139027D02* +X1044495Y139027D01* +X1083695Y137385D02* +X1083695Y120535D01* +X1077845Y120535D01* +X1077845Y137385D01* +X1083695Y137385D01* +X1083695Y123527D02* +X1077845Y123527D01* +X1077845Y126519D02* +X1083695Y126519D01* +X1083695Y129511D02* +X1077845Y129511D01* +X1077845Y132503D02* +X1083695Y132503D01* +X1083695Y135495D02* +X1077845Y135495D01* +X1096395Y137385D02* +X1096395Y120535D01* +X1090545Y120535D01* +X1090545Y137385D01* +X1096395Y137385D01* +X1096395Y123527D02* +X1090545Y123527D01* +X1090545Y126519D02* +X1096395Y126519D01* +X1096395Y129511D02* +X1090545Y129511D01* +X1090545Y132503D02* +X1096395Y132503D01* +X1096395Y135495D02* +X1090545Y135495D01* +X1109095Y137385D02* +X1109095Y120535D01* +X1103245Y120535D01* +X1103245Y137385D01* +X1109095Y137385D01* +X1109095Y123527D02* +X1103245Y123527D01* +X1103245Y126519D02* +X1109095Y126519D01* +X1109095Y129511D02* +X1103245Y129511D01* +X1103245Y132503D02* +X1109095Y132503D01* +X1109095Y135495D02* +X1103245Y135495D01* +X1121795Y137385D02* +X1121795Y120535D01* +X1115945Y120535D01* +X1115945Y137385D01* +X1121795Y137385D01* +X1121795Y123527D02* +X1115945Y123527D01* +X1115945Y126519D02* +X1121795Y126519D01* +X1121795Y129511D02* +X1115945Y129511D01* +X1115945Y132503D02* +X1121795Y132503D01* +X1121795Y135495D02* +X1115945Y135495D01* +X1134495Y137385D02* +X1134495Y120535D01* +X1128645Y120535D01* +X1128645Y137385D01* +X1134495Y137385D01* +X1134495Y123527D02* +X1128645Y123527D01* +X1128645Y126519D02* +X1134495Y126519D01* +X1134495Y129511D02* +X1128645Y129511D01* +X1128645Y132503D02* +X1134495Y132503D01* +X1134495Y135495D02* +X1128645Y135495D01* +X1147195Y137385D02* +X1147195Y120535D01* +X1141345Y120535D01* +X1141345Y137385D01* +X1147195Y137385D01* +X1147195Y123527D02* +X1141345Y123527D01* +X1141345Y126519D02* +X1147195Y126519D01* +X1147195Y129511D02* +X1141345Y129511D01* +X1141345Y132503D02* +X1147195Y132503D01* +X1147195Y135495D02* +X1141345Y135495D01* +X1159895Y137385D02* +X1159895Y120535D01* +X1154045Y120535D01* +X1154045Y137385D01* +X1159895Y137385D01* +X1159895Y123527D02* +X1154045Y123527D01* +X1154045Y126519D02* +X1159895Y126519D01* +X1159895Y129511D02* +X1154045Y129511D01* +X1154045Y132503D02* +X1159895Y132503D01* +X1159895Y135495D02* +X1154045Y135495D01* +X1172595Y137385D02* +X1172595Y120535D01* +X1166745Y120535D01* +X1166745Y137385D01* +X1172595Y137385D01* +X1172595Y123527D02* +X1166745Y123527D01* +X1166745Y126519D02* +X1172595Y126519D01* +X1172595Y129511D02* +X1166745Y129511D01* +X1166745Y132503D02* +X1172595Y132503D01* +X1172595Y135495D02* +X1166745Y135495D01* +X1185295Y137385D02* +X1185295Y120535D01* +X1179445Y120535D01* +X1179445Y137385D01* +X1185295Y137385D01* +X1185295Y123527D02* +X1179445Y123527D01* +X1179445Y126519D02* +X1185295Y126519D01* +X1185295Y129511D02* +X1179445Y129511D01* +X1179445Y132503D02* +X1185295Y132503D01* +X1185295Y135495D02* +X1179445Y135495D01* +X1197995Y137385D02* +X1197995Y120535D01* +X1192145Y120535D01* +X1192145Y137385D01* +X1197995Y137385D01* +X1197995Y123527D02* +X1192145Y123527D01* +X1192145Y126519D02* +X1197995Y126519D01* +X1197995Y129511D02* +X1192145Y129511D01* +X1192145Y132503D02* +X1197995Y132503D01* +X1197995Y135495D02* +X1192145Y135495D01* +X1214495Y141885D02* +X1231345Y141885D01* +X1231345Y136035D01* +X1214495Y136035D01* +X1214495Y141885D01* +X1214495Y139027D02* +X1231345Y139027D01* +X1231345Y154585D02* +X1214495Y154585D01* +X1231345Y154585D02* +X1231345Y148735D01* +X1214495Y148735D01* +X1214495Y154585D01* +X1214495Y151727D02* +X1231345Y151727D01* +X1231345Y167285D02* +X1214495Y167285D01* +X1231345Y167285D02* +X1231345Y161435D01* +X1214495Y161435D01* +X1214495Y167285D01* +X1214495Y164427D02* +X1231345Y164427D01* +X1231345Y179985D02* +X1214495Y179985D01* +X1231345Y179985D02* +X1231345Y174135D01* +X1214495Y174135D01* +X1214495Y179985D01* +X1214495Y177127D02* +X1231345Y177127D01* +X1231345Y192685D02* +X1214495Y192685D01* +X1231345Y192685D02* +X1231345Y186835D01* +X1214495Y186835D01* +X1214495Y192685D01* +X1214495Y189827D02* +X1231345Y189827D01* +X1231345Y205385D02* +X1214495Y205385D01* +X1231345Y205385D02* +X1231345Y199535D01* +X1214495Y199535D01* +X1214495Y205385D01* +X1214495Y202527D02* +X1231345Y202527D01* +X1231345Y218085D02* +X1214495Y218085D01* +X1231345Y218085D02* +X1231345Y212235D01* +X1214495Y212235D01* +X1214495Y218085D01* +X1214495Y215227D02* +X1231345Y215227D01* +X1231345Y230785D02* +X1214495Y230785D01* +X1231345Y230785D02* +X1231345Y224935D01* +X1214495Y224935D01* +X1214495Y230785D01* +X1214495Y227927D02* +X1231345Y227927D01* +X1231345Y243485D02* +X1214495Y243485D01* +X1231345Y243485D02* +X1231345Y237635D01* +X1214495Y237635D01* +X1214495Y243485D01* +X1214495Y240627D02* +X1231345Y240627D01* +X1231345Y256185D02* +X1214495Y256185D01* +X1231345Y256185D02* +X1231345Y250335D01* +X1214495Y250335D01* +X1214495Y256185D01* +X1214495Y253327D02* +X1231345Y253327D01* +X1231345Y268885D02* +X1214495Y268885D01* +X1231345Y268885D02* +X1231345Y263035D01* +X1214495Y263035D01* +X1214495Y268885D01* +X1214495Y266027D02* +X1231345Y266027D01* +X1231345Y281585D02* +X1214495Y281585D01* +X1231345Y281585D02* +X1231345Y275735D01* +X1214495Y275735D01* +X1214495Y281585D01* +X1214495Y278727D02* +X1231345Y278727D01* +X1231345Y294285D02* +X1214495Y294285D01* +X1231345Y294285D02* +X1231345Y288435D01* +X1214495Y288435D01* +X1214495Y294285D01* +X1214495Y291427D02* +X1231345Y291427D01* +X1231345Y306985D02* +X1214495Y306985D01* +X1231345Y306985D02* +X1231345Y301135D01* +X1214495Y301135D01* +X1214495Y306985D01* +X1214495Y304127D02* +X1231345Y304127D01* +D18* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D19* +X169100Y324120D02* +X169100Y326120D01* +X169100Y324120D02* +X156100Y324120D01* +X156100Y326120D01* +X169100Y326120D01* +X169100Y326020D02* +X156100Y326020D01* +X169100Y330620D02* +X169100Y332620D01* +X169100Y330620D02* +X156100Y330620D01* +X156100Y332620D01* +X169100Y332620D01* +X169100Y332520D02* +X156100Y332520D01* +X169100Y319620D02* +X169100Y317620D01* +X156100Y317620D01* +X156100Y319620D01* +X169100Y319620D01* +X169100Y319520D02* +X156100Y319520D01* +X169100Y313120D02* +X169100Y311120D01* +X156100Y311120D01* +X156100Y313120D01* +X169100Y313120D01* +X169100Y313020D02* +X156100Y313020D01* +X169100Y337120D02* +X169100Y339120D01* +X169100Y337120D02* +X156100Y337120D01* +X156100Y339120D01* +X169100Y339120D01* +X169100Y339020D02* +X156100Y339020D01* +D20* +X157330Y354620D02* +X164330Y354620D01* +X157330Y354620D02* +X157330Y363620D01* +X164330Y363620D01* +X164330Y354620D01* +X164330Y361270D02* +X157330Y361270D01* +X157330Y286620D02* +X164330Y286620D01* +X157330Y286620D02* +X157330Y295620D01* +X164330Y295620D01* +X164330Y286620D01* +X164330Y293270D02* +X157330Y293270D01* +D21* +X133600Y332370D02* +X133600Y341870D01* +X143100Y341870D01* +X143100Y332370D01* +X133600Y332370D01* +X133600Y341395D02* +X143100Y341395D01* +X133600Y317870D02* +X133600Y308370D01* +X133600Y317870D02* +X143100Y317870D01* +X143100Y308370D01* +X133600Y308370D01* +X133600Y317395D02* +X143100Y317395D01* +D22* +X327625Y339445D02* +X336375Y339445D01* +X327625Y339445D02* +X327625Y340795D01* +X336375Y340795D01* +X336375Y339445D01* +X336375Y340727D02* +X327625Y340727D01* +X327625Y334445D02* +X336375Y334445D01* +X327625Y334445D02* +X327625Y335795D01* +X336375Y335795D01* +X336375Y334445D01* +X336375Y335727D02* +X327625Y335727D01* +X327625Y329445D02* +X336375Y329445D01* +X327625Y329445D02* +X327625Y330795D01* +X336375Y330795D01* +X336375Y329445D01* +X336375Y330727D02* +X327625Y330727D01* +X327625Y324445D02* +X336375Y324445D01* +X327625Y324445D02* +X327625Y325795D01* +X336375Y325795D01* +X336375Y324445D01* +X336375Y325727D02* +X327625Y325727D01* +X327625Y319445D02* +X336375Y319445D01* +X327625Y319445D02* +X327625Y320795D01* +X336375Y320795D01* +X336375Y319445D01* +X336375Y320727D02* +X327625Y320727D01* +X327625Y314445D02* +X336375Y314445D01* +X327625Y314445D02* +X327625Y315795D01* +X336375Y315795D01* +X336375Y314445D01* +X336375Y315727D02* +X327625Y315727D01* +X327625Y309445D02* +X336375Y309445D01* +X327625Y309445D02* +X327625Y310795D01* +X336375Y310795D01* +X336375Y309445D01* +X336375Y310727D02* +X327625Y310727D01* +X341275Y305895D02* +X341275Y297145D01* +X339925Y297145D01* +X339925Y305895D01* +X341275Y305895D01* +X341275Y298427D02* +X339925Y298427D01* +X339925Y299709D02* +X341275Y299709D01* +X341275Y300991D02* +X339925Y300991D01* +X339925Y302273D02* +X341275Y302273D01* +X341275Y303555D02* +X339925Y303555D01* +X339925Y304837D02* +X341275Y304837D01* +X346275Y305895D02* +X346275Y297145D01* +X344925Y297145D01* +X344925Y305895D01* +X346275Y305895D01* +X346275Y298427D02* +X344925Y298427D01* +X344925Y299709D02* +X346275Y299709D01* +X346275Y300991D02* +X344925Y300991D01* +X344925Y302273D02* +X346275Y302273D01* +X346275Y303555D02* +X344925Y303555D01* +X344925Y304837D02* +X346275Y304837D01* +X351275Y305895D02* +X351275Y297145D01* +X349925Y297145D01* +X349925Y305895D01* +X351275Y305895D01* +X351275Y298427D02* +X349925Y298427D01* +X349925Y299709D02* +X351275Y299709D01* +X351275Y300991D02* +X349925Y300991D01* +X349925Y302273D02* +X351275Y302273D01* +X351275Y303555D02* +X349925Y303555D01* +X349925Y304837D02* +X351275Y304837D01* +X356275Y305895D02* +X356275Y297145D01* +X354925Y297145D01* +X354925Y305895D01* +X356275Y305895D01* +X356275Y298427D02* +X354925Y298427D01* +X354925Y299709D02* +X356275Y299709D01* +X356275Y300991D02* +X354925Y300991D01* +X354925Y302273D02* +X356275Y302273D01* +X356275Y303555D02* +X354925Y303555D01* +X354925Y304837D02* +X356275Y304837D01* +X361275Y305895D02* +X361275Y297145D01* +X359925Y297145D01* +X359925Y305895D01* +X361275Y305895D01* +X361275Y298427D02* +X359925Y298427D01* +X359925Y299709D02* +X361275Y299709D01* +X361275Y300991D02* +X359925Y300991D01* +X359925Y302273D02* +X361275Y302273D01* +X361275Y303555D02* +X359925Y303555D01* +X359925Y304837D02* +X361275Y304837D01* +X366275Y305895D02* +X366275Y297145D01* +X364925Y297145D01* +X364925Y305895D01* +X366275Y305895D01* +X366275Y298427D02* +X364925Y298427D01* +X364925Y299709D02* +X366275Y299709D01* +X366275Y300991D02* +X364925Y300991D01* +X364925Y302273D02* +X366275Y302273D01* +X366275Y303555D02* +X364925Y303555D01* +X364925Y304837D02* +X366275Y304837D01* +X371275Y305895D02* +X371275Y297145D01* +X369925Y297145D01* +X369925Y305895D01* +X371275Y305895D01* +X371275Y298427D02* +X369925Y298427D01* +X369925Y299709D02* +X371275Y299709D01* +X371275Y300991D02* +X369925Y300991D01* +X369925Y302273D02* +X371275Y302273D01* +X371275Y303555D02* +X369925Y303555D01* +X369925Y304837D02* +X371275Y304837D01* +X374825Y310795D02* +X383575Y310795D01* +X383575Y309445D01* +X374825Y309445D01* +X374825Y310795D01* +X374825Y310727D02* +X383575Y310727D01* +X383575Y315795D02* +X374825Y315795D01* +X383575Y315795D02* +X383575Y314445D01* +X374825Y314445D01* +X374825Y315795D01* +X374825Y315727D02* +X383575Y315727D01* +X383575Y320795D02* +X374825Y320795D01* +X383575Y320795D02* +X383575Y319445D01* +X374825Y319445D01* +X374825Y320795D01* +X374825Y320727D02* +X383575Y320727D01* +X383575Y325795D02* +X374825Y325795D01* +X383575Y325795D02* +X383575Y324445D01* +X374825Y324445D01* +X374825Y325795D01* +X374825Y325727D02* +X383575Y325727D01* +X383575Y330795D02* +X374825Y330795D01* +X383575Y330795D02* +X383575Y329445D01* +X374825Y329445D01* +X374825Y330795D01* +X374825Y330727D02* +X383575Y330727D01* +X383575Y335795D02* +X374825Y335795D01* +X383575Y335795D02* +X383575Y334445D01* +X374825Y334445D01* +X374825Y335795D01* +X374825Y335727D02* +X383575Y335727D01* +X383575Y340795D02* +X374825Y340795D01* +X383575Y340795D02* +X383575Y339445D01* +X374825Y339445D01* +X374825Y340795D01* +X374825Y340727D02* +X383575Y340727D01* +X369925Y344345D02* +X369925Y353095D01* +X371275Y353095D01* +X371275Y344345D01* +X369925Y344345D01* +X369925Y345627D02* +X371275Y345627D01* +X371275Y346909D02* +X369925Y346909D01* +X369925Y348191D02* +X371275Y348191D01* +X371275Y349473D02* +X369925Y349473D01* +X369925Y350755D02* +X371275Y350755D01* +X371275Y352037D02* +X369925Y352037D01* +X364925Y353095D02* +X364925Y344345D01* +X364925Y353095D02* +X366275Y353095D01* +X366275Y344345D01* +X364925Y344345D01* +X364925Y345627D02* +X366275Y345627D01* +X366275Y346909D02* +X364925Y346909D01* +X364925Y348191D02* +X366275Y348191D01* +X366275Y349473D02* +X364925Y349473D01* +X364925Y350755D02* +X366275Y350755D01* +X366275Y352037D02* +X364925Y352037D01* +X359925Y353095D02* +X359925Y344345D01* +X359925Y353095D02* +X361275Y353095D01* +X361275Y344345D01* +X359925Y344345D01* +X359925Y345627D02* +X361275Y345627D01* +X361275Y346909D02* +X359925Y346909D01* +X359925Y348191D02* +X361275Y348191D01* +X361275Y349473D02* +X359925Y349473D01* +X359925Y350755D02* +X361275Y350755D01* +X361275Y352037D02* +X359925Y352037D01* +X354925Y353095D02* +X354925Y344345D01* +X354925Y353095D02* +X356275Y353095D01* +X356275Y344345D01* +X354925Y344345D01* +X354925Y345627D02* +X356275Y345627D01* +X356275Y346909D02* +X354925Y346909D01* +X354925Y348191D02* +X356275Y348191D01* +X356275Y349473D02* +X354925Y349473D01* +X354925Y350755D02* +X356275Y350755D01* +X356275Y352037D02* +X354925Y352037D01* +X349925Y353095D02* +X349925Y344345D01* +X349925Y353095D02* +X351275Y353095D01* +X351275Y344345D01* +X349925Y344345D01* +X349925Y345627D02* +X351275Y345627D01* +X351275Y346909D02* +X349925Y346909D01* +X349925Y348191D02* +X351275Y348191D01* +X351275Y349473D02* +X349925Y349473D01* +X349925Y350755D02* +X351275Y350755D01* +X351275Y352037D02* +X349925Y352037D01* +X344925Y353095D02* +X344925Y344345D01* +X344925Y353095D02* +X346275Y353095D01* +X346275Y344345D01* +X344925Y344345D01* +X344925Y345627D02* +X346275Y345627D01* +X346275Y346909D02* +X344925Y346909D01* +X344925Y348191D02* +X346275Y348191D01* +X346275Y349473D02* +X344925Y349473D01* +X344925Y350755D02* +X346275Y350755D01* +X346275Y352037D02* +X344925Y352037D01* +X339925Y353095D02* +X339925Y344345D01* +X339925Y353095D02* +X341275Y353095D01* +X341275Y344345D01* +X339925Y344345D01* +X339925Y345627D02* +X341275Y345627D01* +X341275Y346909D02* +X339925Y346909D01* +X339925Y348191D02* +X341275Y348191D01* +X341275Y349473D02* +X339925Y349473D01* +X339925Y350755D02* +X341275Y350755D01* +X341275Y352037D02* +X339925Y352037D01* +D23* +X341950Y311470D02* +X369250Y311470D01* +X341950Y311470D02* +X341950Y338770D01* +X369250Y338770D01* +X369250Y311470D01* +X369250Y316410D02* +X341950Y316410D01* +X341950Y321350D02* +X369250Y321350D01* +X369250Y326290D02* +X341950Y326290D01* +X341950Y331230D02* +X369250Y331230D01* +X369250Y336170D02* +X341950Y336170D01* +D24* +X510805Y181385D02* +X518495Y181385D01* +X518495Y179695D01* +X510805Y179695D01* +X510805Y181385D01* +X510805Y180559D02* +X518495Y180559D01* +X518495Y186385D02* +X510805Y186385D01* +X518495Y186385D02* +X518495Y184695D01* +X510805Y184695D01* +X510805Y186385D01* +X510805Y185559D02* +X518495Y185559D01* +X518495Y191385D02* +X510805Y191385D01* +X518495Y191385D02* +X518495Y189695D01* +X510805Y189695D01* +X510805Y191385D01* +X510805Y190559D02* +X518495Y190559D01* +X518495Y196385D02* +X510805Y196385D01* +X518495Y196385D02* +X518495Y194695D01* +X510805Y194695D01* +X510805Y196385D01* +X510805Y195559D02* +X518495Y195559D01* +X518495Y201385D02* +X510805Y201385D01* +X518495Y201385D02* +X518495Y199695D01* +X510805Y199695D01* +X510805Y201385D01* +X510805Y200559D02* +X518495Y200559D01* +X518495Y206385D02* +X510805Y206385D01* +X518495Y206385D02* +X518495Y204695D01* +X510805Y204695D01* +X510805Y206385D01* +X510805Y205559D02* +X518495Y205559D01* +X479795Y206385D02* +X472105Y206385D01* +X479795Y206385D02* +X479795Y204695D01* +X472105Y204695D01* +X472105Y206385D01* +X472105Y205559D02* +X479795Y205559D01* +X479795Y201385D02* +X472105Y201385D01* +X479795Y201385D02* +X479795Y199695D01* +X472105Y199695D01* +X472105Y201385D01* +X472105Y200559D02* +X479795Y200559D01* +X479795Y196385D02* +X472105Y196385D01* +X479795Y196385D02* +X479795Y194695D01* +X472105Y194695D01* +X472105Y196385D01* +X472105Y195559D02* +X479795Y195559D01* +X479795Y191385D02* +X472105Y191385D01* +X479795Y191385D02* +X479795Y189695D01* +X472105Y189695D01* +X472105Y191385D01* +X472105Y190559D02* +X479795Y190559D01* +X479795Y186385D02* +X472105Y186385D01* +X479795Y186385D02* +X479795Y184695D01* +X472105Y184695D01* +X472105Y186385D01* +X472105Y185559D02* +X479795Y185559D01* +X479795Y181385D02* +X472105Y181385D01* +X479795Y181385D02* +X479795Y179695D01* +X472105Y179695D01* +X472105Y181385D01* +X472105Y180559D02* +X479795Y180559D01* +X483645Y177535D02* +X483645Y169845D01* +X481955Y169845D01* +X481955Y177535D01* +X483645Y177535D01* +X483645Y170709D02* +X481955Y170709D01* +X481955Y171573D02* +X483645Y171573D01* +X483645Y172437D02* +X481955Y172437D01* +X481955Y173301D02* +X483645Y173301D01* +X483645Y174165D02* +X481955Y174165D01* +X481955Y175029D02* +X483645Y175029D01* +X483645Y175893D02* +X481955Y175893D01* +X481955Y176757D02* +X483645Y176757D01* +X488645Y177535D02* +X488645Y169845D01* +X486955Y169845D01* +X486955Y177535D01* +X488645Y177535D01* +X488645Y170709D02* +X486955Y170709D01* +X486955Y171573D02* +X488645Y171573D01* +X488645Y172437D02* +X486955Y172437D01* +X486955Y173301D02* +X488645Y173301D01* +X488645Y174165D02* +X486955Y174165D01* +X486955Y175029D02* +X488645Y175029D01* +X488645Y175893D02* +X486955Y175893D01* +X486955Y176757D02* +X488645Y176757D01* +X493645Y177535D02* +X493645Y169845D01* +X491955Y169845D01* +X491955Y177535D01* +X493645Y177535D01* +X493645Y170709D02* +X491955Y170709D01* +X491955Y171573D02* +X493645Y171573D01* +X493645Y172437D02* +X491955Y172437D01* +X491955Y173301D02* +X493645Y173301D01* +X493645Y174165D02* +X491955Y174165D01* +X491955Y175029D02* +X493645Y175029D01* +X493645Y175893D02* +X491955Y175893D01* +X491955Y176757D02* +X493645Y176757D01* +X498645Y177535D02* +X498645Y169845D01* +X496955Y169845D01* +X496955Y177535D01* +X498645Y177535D01* +X498645Y170709D02* +X496955Y170709D01* +X496955Y171573D02* +X498645Y171573D01* +X498645Y172437D02* +X496955Y172437D01* +X496955Y173301D02* +X498645Y173301D01* +X498645Y174165D02* +X496955Y174165D01* +X496955Y175029D02* +X498645Y175029D01* +X498645Y175893D02* +X496955Y175893D01* +X496955Y176757D02* +X498645Y176757D01* +X503645Y177535D02* +X503645Y169845D01* +X501955Y169845D01* +X501955Y177535D01* +X503645Y177535D01* +X503645Y170709D02* +X501955Y170709D01* +X501955Y171573D02* +X503645Y171573D01* +X503645Y172437D02* +X501955Y172437D01* +X501955Y173301D02* +X503645Y173301D01* +X503645Y174165D02* +X501955Y174165D01* +X501955Y175029D02* +X503645Y175029D01* +X503645Y175893D02* +X501955Y175893D01* +X501955Y176757D02* +X503645Y176757D01* +X508645Y177535D02* +X508645Y169845D01* +X506955Y169845D01* +X506955Y177535D01* +X508645Y177535D01* +X508645Y170709D02* +X506955Y170709D01* +X506955Y171573D02* +X508645Y171573D01* +X508645Y172437D02* +X506955Y172437D01* +X506955Y173301D02* +X508645Y173301D01* +X508645Y174165D02* +X506955Y174165D01* +X506955Y175029D02* +X508645Y175029D01* +X508645Y175893D02* +X506955Y175893D01* +X506955Y176757D02* +X508645Y176757D01* +X508645Y208545D02* +X508645Y216235D01* +X508645Y208545D02* +X506955Y208545D01* +X506955Y216235D01* +X508645Y216235D01* +X508645Y209409D02* +X506955Y209409D01* +X506955Y210273D02* +X508645Y210273D01* +X508645Y211137D02* +X506955Y211137D01* +X506955Y212001D02* +X508645Y212001D01* +X508645Y212865D02* +X506955Y212865D01* +X506955Y213729D02* +X508645Y213729D01* +X508645Y214593D02* +X506955Y214593D01* +X506955Y215457D02* +X508645Y215457D01* +X503645Y216235D02* +X503645Y208545D01* +X501955Y208545D01* +X501955Y216235D01* +X503645Y216235D01* +X503645Y209409D02* +X501955Y209409D01* +X501955Y210273D02* +X503645Y210273D01* +X503645Y211137D02* +X501955Y211137D01* +X501955Y212001D02* +X503645Y212001D01* +X503645Y212865D02* +X501955Y212865D01* +X501955Y213729D02* +X503645Y213729D01* +X503645Y214593D02* +X501955Y214593D01* +X501955Y215457D02* +X503645Y215457D01* +X498645Y216235D02* +X498645Y208545D01* +X496955Y208545D01* +X496955Y216235D01* +X498645Y216235D01* +X498645Y209409D02* +X496955Y209409D01* +X496955Y210273D02* +X498645Y210273D01* +X498645Y211137D02* +X496955Y211137D01* +X496955Y212001D02* +X498645Y212001D01* +X498645Y212865D02* +X496955Y212865D01* +X496955Y213729D02* +X498645Y213729D01* +X498645Y214593D02* +X496955Y214593D01* +X496955Y215457D02* +X498645Y215457D01* +X493645Y216235D02* +X493645Y208545D01* +X491955Y208545D01* +X491955Y216235D01* +X493645Y216235D01* +X493645Y209409D02* +X491955Y209409D01* +X491955Y210273D02* +X493645Y210273D01* +X493645Y211137D02* +X491955Y211137D01* +X491955Y212001D02* +X493645Y212001D01* +X493645Y212865D02* +X491955Y212865D01* +X491955Y213729D02* +X493645Y213729D01* +X493645Y214593D02* +X491955Y214593D01* +X491955Y215457D02* +X493645Y215457D01* +X488645Y216235D02* +X488645Y208545D01* +X486955Y208545D01* +X486955Y216235D01* +X488645Y216235D01* +X488645Y209409D02* +X486955Y209409D01* +X486955Y210273D02* +X488645Y210273D01* +X488645Y211137D02* +X486955Y211137D01* +X486955Y212001D02* +X488645Y212001D01* +X488645Y212865D02* +X486955Y212865D01* +X486955Y213729D02* +X488645Y213729D01* +X488645Y214593D02* +X486955Y214593D01* +X486955Y215457D02* +X488645Y215457D01* +X483645Y216235D02* +X483645Y208545D01* +X481955Y208545D01* +X481955Y216235D01* +X483645Y216235D01* +X483645Y209409D02* +X481955Y209409D01* +X481955Y210273D02* +X483645Y210273D01* +X483645Y211137D02* +X481955Y211137D01* +X481955Y212001D02* +X483645Y212001D01* +X483645Y212865D02* +X481955Y212865D01* +X481955Y213729D02* +X483645Y213729D01* +X483645Y214593D02* +X481955Y214593D01* +X481955Y215457D02* +X483645Y215457D01* +D16* +X505300Y203040D02* +X505300Y183040D01* +X485300Y183040D01* +X485300Y203040D01* +X505300Y203040D01* +X505300Y187790D02* +X485300Y187790D01* +X485300Y192540D02* +X505300Y192540D01* +X505300Y197290D02* +X485300Y197290D01* +X485300Y202040D02* +X505300Y202040D01* +D25* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D26* +X292090Y237498D03* +D27* +X259090Y271798D03* +X259090Y114298D03* +D25* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D28* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D29* +X1262010Y173010D02* +X1262010Y179670D01* +X1266170Y179670D01* +X1266170Y173010D01* +X1262010Y173010D01* +X1262010Y175138D02* +X1266170Y175138D01* +X1266170Y177266D02* +X1262010Y177266D01* +X1262010Y179394D02* +X1266170Y179394D01* +X1262010Y162270D02* +X1262010Y155610D01* +X1262010Y162270D02* +X1266170Y162270D01* +X1266170Y155610D01* +X1262010Y155610D01* +X1262010Y157738D02* +X1266170Y157738D01* +X1266170Y159866D02* +X1262010Y159866D01* +X1262010Y161994D02* +X1266170Y161994D01* +X1253510Y162270D02* +X1253510Y155610D01* +X1253510Y162270D02* +X1257670Y162270D01* +X1257670Y155610D01* +X1253510Y155610D01* +X1253510Y157738D02* +X1257670Y157738D01* +X1257670Y159866D02* +X1253510Y159866D01* +X1253510Y161994D02* +X1257670Y161994D01* +X1253510Y173010D02* +X1253510Y179670D01* +X1257670Y179670D01* +X1257670Y173010D01* +X1253510Y173010D01* +X1253510Y175138D02* +X1257670Y175138D01* +X1257670Y177266D02* +X1253510Y177266D01* +X1253510Y179394D02* +X1257670Y179394D01* +X743550Y137530D02* +X736890Y137530D01* +X743550Y137530D02* +X743550Y133370D01* +X736890Y133370D01* +X736890Y137530D01* +X736890Y135498D02* +X743550Y135498D01* +X726150Y137530D02* +X719490Y137530D01* +X726150Y137530D02* +X726150Y133370D01* +X719490Y133370D01* +X719490Y137530D01* +X719490Y135498D02* +X726150Y135498D01* +X726150Y146030D02* +X719490Y146030D01* +X726150Y146030D02* +X726150Y141870D01* +X719490Y141870D01* +X719490Y146030D01* +X719490Y143998D02* +X726150Y143998D01* +X736890Y146030D02* +X743550Y146030D01* +X743550Y141870D01* +X736890Y141870D01* +X736890Y146030D01* +X736890Y143998D02* +X743550Y143998D01* +D30* +X800100Y20320D03* +D25* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D31* +X837806Y57798D02* +X851294Y57798D01* +X851294Y55486D01* +X837806Y55486D01* +X837806Y57798D01* +X837806Y56669D02* +X851294Y56669D01* +X851294Y64402D02* +X837806Y64402D01* +X851294Y64402D02* +X851294Y62090D01* +X837806Y62090D01* +X837806Y64402D01* +X837806Y63273D02* +X851294Y63273D01* +X851294Y70752D02* +X837806Y70752D01* +X851294Y70752D02* +X851294Y68440D01* +X837806Y68440D01* +X837806Y70752D01* +X837806Y69623D02* +X851294Y69623D01* +X851294Y77356D02* +X837806Y77356D01* +X851294Y77356D02* +X851294Y75044D01* +X837806Y75044D01* +X837806Y77356D01* +X837806Y76227D02* +X851294Y76227D01* +X851294Y83960D02* +X837806Y83960D01* +X851294Y83960D02* +X851294Y81648D01* +X837806Y81648D01* +X837806Y83960D01* +X837806Y82831D02* +X851294Y82831D01* +X851294Y90310D02* +X837806Y90310D01* +X851294Y90310D02* +X851294Y87998D01* +X837806Y87998D01* +X837806Y90310D01* +X837806Y89181D02* +X851294Y89181D01* +X851294Y96914D02* +X837806Y96914D01* +X851294Y96914D02* +X851294Y94602D01* +X837806Y94602D01* +X837806Y96914D01* +X837806Y95785D02* +X851294Y95785D01* +X792874Y96914D02* +X779386Y96914D01* +X792874Y96914D02* +X792874Y94602D01* +X779386Y94602D01* +X779386Y96914D01* +X779386Y95785D02* +X792874Y95785D01* +X792874Y90310D02* +X779386Y90310D01* +X792874Y90310D02* +X792874Y87998D01* +X779386Y87998D01* +X779386Y90310D01* +X779386Y89181D02* +X792874Y89181D01* +X792874Y83960D02* +X779386Y83960D01* +X792874Y83960D02* +X792874Y81648D01* +X779386Y81648D01* +X779386Y83960D01* +X779386Y82831D02* +X792874Y82831D01* +X792874Y77356D02* +X779386Y77356D01* +X792874Y77356D02* +X792874Y75044D01* +X779386Y75044D01* +X779386Y77356D01* +X779386Y76227D02* +X792874Y76227D01* +X792874Y70752D02* +X779386Y70752D01* +X792874Y70752D02* +X792874Y68440D01* +X779386Y68440D01* +X779386Y70752D01* +X779386Y69623D02* +X792874Y69623D01* +X792874Y64402D02* +X779386Y64402D01* +X792874Y64402D02* +X792874Y62090D01* +X779386Y62090D01* +X779386Y64402D01* +X779386Y63273D02* +X792874Y63273D01* +X792874Y57798D02* +X779386Y57798D01* +X792874Y57798D02* +X792874Y55486D01* +X779386Y55486D01* +X779386Y57798D01* +X779386Y56669D02* +X792874Y56669D01* +D11* +X592650Y45010D02* +X585150Y45010D01* +X585150Y51510D01* +X592650Y51510D01* +X592650Y45010D01* +X592650Y48335D02* +X585150Y48335D01* +X601150Y45010D02* +X608650Y45010D01* +X601150Y45010D02* +X601150Y51510D01* +X608650Y51510D01* +X608650Y45010D01* +X608650Y48335D02* +X601150Y48335D01* +X712150Y52630D02* +X719650Y52630D01* +X712150Y52630D02* +X712150Y59130D01* +X719650Y59130D01* +X719650Y52630D01* +X719650Y55955D02* +X712150Y55955D01* +X728150Y52630D02* +X735650Y52630D01* +X728150Y52630D02* +X728150Y59130D01* +X735650Y59130D01* +X735650Y52630D01* +X735650Y55955D02* +X728150Y55955D01* +D30* +X736600Y76200D03* +D25* +X711200Y76200D03* +D11* +X692686Y301960D02* +X689516Y308757D01* +X695406Y311504D01* +X698576Y304707D01* +X692686Y301960D01* +X691135Y305285D02* +X698306Y305285D01* +X696756Y308610D02* +X689585Y308610D01* +X696277Y294257D02* +X699447Y287460D01* +X696277Y294257D02* +X702167Y297004D01* +X705337Y290207D01* +X699447Y287460D01* +X697896Y290785D02* +X705067Y290785D01* +X703517Y294110D02* +X696346Y294110D01* +X764542Y304409D02* +X767712Y311206D01* +X773602Y308459D01* +X770432Y301662D01* +X764542Y304409D01* +X764812Y304987D02* +X771983Y304987D01* +X773533Y308312D02* +X766362Y308312D01* +X760950Y296705D02* +X757780Y289908D01* +X760950Y296705D02* +X766840Y293958D01* +X763670Y287161D01* +X757780Y289908D01* +X758050Y290486D02* +X765221Y290486D01* +X766771Y293811D02* +X759600Y293811D01* +D10* +X848942Y246882D02* +X852518Y246882D01* +X848942Y246882D02* +X848942Y250958D01* +X852518Y250958D01* +X852518Y246882D01* +X852518Y248711D02* +X848942Y248711D01* +X848942Y250540D02* +X852518Y250540D01* +X859442Y246882D02* +X863018Y246882D01* +X859442Y246882D02* +X859442Y250958D01* +X863018Y250958D01* +X863018Y246882D01* +X863018Y248711D02* +X859442Y248711D01* +X859442Y250540D02* +X863018Y250540D01* +X852518Y259582D02* +X848942Y259582D01* +X848942Y263658D01* +X852518Y263658D01* +X852518Y259582D01* +X852518Y261411D02* +X848942Y261411D01* +X848942Y263240D02* +X852518Y263240D01* +X859442Y259582D02* +X863018Y259582D01* +X859442Y259582D02* +X859442Y263658D01* +X863018Y263658D01* +X863018Y259582D01* +X863018Y261411D02* +X859442Y261411D01* +X859442Y263240D02* +X863018Y263240D01* +D16* +X436920Y363220D02* +X436922Y363319D01* +X436928Y363419D01* +X436938Y363518D01* +X436952Y363616D01* +X436969Y363714D01* +X436991Y363811D01* +X437016Y363907D01* +X437045Y364002D01* +X437078Y364096D01* +X437115Y364188D01* +X437155Y364279D01* +X437199Y364368D01* +X437247Y364456D01* +X437298Y364541D01* +X437352Y364624D01* +X437409Y364706D01* +X437470Y364784D01* +X437534Y364861D01* +X437600Y364934D01* +X437670Y365005D01* +X437742Y365073D01* +X437817Y365139D01* +X437895Y365201D01* +X437975Y365260D01* +X438057Y365316D01* +X438141Y365368D01* +X438228Y365417D01* +X438316Y365463D01* +X438406Y365505D01* +X438498Y365544D01* +X438591Y365579D01* +X438685Y365610D01* +X438781Y365637D01* +X438878Y365660D01* +X438975Y365680D01* +X439073Y365696D01* +X439172Y365708D01* +X439271Y365716D01* +X439370Y365720D01* +X439470Y365720D01* +X439569Y365716D01* +X439668Y365708D01* +X439767Y365696D01* +X439865Y365680D01* +X439962Y365660D01* +X440059Y365637D01* +X440155Y365610D01* +X440249Y365579D01* +X440342Y365544D01* +X440434Y365505D01* +X440524Y365463D01* +X440612Y365417D01* +X440699Y365368D01* +X440783Y365316D01* +X440865Y365260D01* +X440945Y365201D01* +X441023Y365139D01* +X441098Y365073D01* +X441170Y365005D01* +X441240Y364934D01* +X441306Y364861D01* +X441370Y364784D01* +X441431Y364706D01* +X441488Y364624D01* +X441542Y364541D01* +X441593Y364456D01* +X441641Y364368D01* +X441685Y364279D01* +X441725Y364188D01* +X441762Y364096D01* +X441795Y364002D01* +X441824Y363907D01* +X441849Y363811D01* +X441871Y363714D01* +X441888Y363616D01* +X441902Y363518D01* +X441912Y363419D01* +X441918Y363319D01* +X441920Y363220D01* +X441918Y363121D01* +X441912Y363021D01* +X441902Y362922D01* +X441888Y362824D01* +X441871Y362726D01* +X441849Y362629D01* +X441824Y362533D01* +X441795Y362438D01* +X441762Y362344D01* +X441725Y362252D01* +X441685Y362161D01* +X441641Y362072D01* +X441593Y361984D01* +X441542Y361899D01* +X441488Y361816D01* +X441431Y361734D01* +X441370Y361656D01* +X441306Y361579D01* +X441240Y361506D01* +X441170Y361435D01* +X441098Y361367D01* +X441023Y361301D01* +X440945Y361239D01* +X440865Y361180D01* +X440783Y361124D01* +X440699Y361072D01* +X440612Y361023D01* +X440524Y360977D01* +X440434Y360935D01* +X440342Y360896D01* +X440249Y360861D01* +X440155Y360830D01* +X440059Y360803D01* +X439962Y360780D01* +X439865Y360760D01* +X439767Y360744D01* +X439668Y360732D01* +X439569Y360724D01* +X439470Y360720D01* +X439370Y360720D01* +X439271Y360724D01* +X439172Y360732D01* +X439073Y360744D01* +X438975Y360760D01* +X438878Y360780D01* +X438781Y360803D01* +X438685Y360830D01* +X438591Y360861D01* +X438498Y360896D01* +X438406Y360935D01* +X438316Y360977D01* +X438228Y361023D01* +X438141Y361072D01* +X438057Y361124D01* +X437975Y361180D01* +X437895Y361239D01* +X437817Y361301D01* +X437742Y361367D01* +X437670Y361435D01* +X437600Y361506D01* +X437534Y361579D01* +X437470Y361656D01* +X437409Y361734D01* +X437352Y361816D01* +X437298Y361899D01* +X437247Y361984D01* +X437199Y362072D01* +X437155Y362161D01* +X437115Y362252D01* +X437078Y362344D01* +X437045Y362438D01* +X437016Y362533D01* +X436991Y362629D01* +X436969Y362726D01* +X436952Y362824D01* +X436938Y362922D01* +X436928Y363021D01* +X436922Y363121D01* +X436920Y363220D01* +X1254800Y96520D02* +X1254802Y96619D01* +X1254808Y96719D01* +X1254818Y96818D01* +X1254832Y96916D01* +X1254849Y97014D01* +X1254871Y97111D01* +X1254896Y97207D01* +X1254925Y97302D01* +X1254958Y97396D01* +X1254995Y97488D01* +X1255035Y97579D01* +X1255079Y97668D01* +X1255127Y97756D01* +X1255178Y97841D01* +X1255232Y97924D01* +X1255289Y98006D01* +X1255350Y98084D01* +X1255414Y98161D01* +X1255480Y98234D01* +X1255550Y98305D01* +X1255622Y98373D01* +X1255697Y98439D01* +X1255775Y98501D01* +X1255855Y98560D01* +X1255937Y98616D01* +X1256021Y98668D01* +X1256108Y98717D01* +X1256196Y98763D01* +X1256286Y98805D01* +X1256378Y98844D01* +X1256471Y98879D01* +X1256565Y98910D01* +X1256661Y98937D01* +X1256758Y98960D01* +X1256855Y98980D01* +X1256953Y98996D01* +X1257052Y99008D01* +X1257151Y99016D01* +X1257250Y99020D01* +X1257350Y99020D01* +X1257449Y99016D01* +X1257548Y99008D01* +X1257647Y98996D01* +X1257745Y98980D01* +X1257842Y98960D01* +X1257939Y98937D01* +X1258035Y98910D01* +X1258129Y98879D01* +X1258222Y98844D01* +X1258314Y98805D01* +X1258404Y98763D01* +X1258492Y98717D01* +X1258579Y98668D01* +X1258663Y98616D01* +X1258745Y98560D01* +X1258825Y98501D01* +X1258903Y98439D01* +X1258978Y98373D01* +X1259050Y98305D01* +X1259120Y98234D01* +X1259186Y98161D01* +X1259250Y98084D01* +X1259311Y98006D01* +X1259368Y97924D01* +X1259422Y97841D01* +X1259473Y97756D01* +X1259521Y97668D01* +X1259565Y97579D01* +X1259605Y97488D01* +X1259642Y97396D01* +X1259675Y97302D01* +X1259704Y97207D01* +X1259729Y97111D01* +X1259751Y97014D01* +X1259768Y96916D01* +X1259782Y96818D01* +X1259792Y96719D01* +X1259798Y96619D01* +X1259800Y96520D01* +X1259798Y96421D01* +X1259792Y96321D01* +X1259782Y96222D01* +X1259768Y96124D01* +X1259751Y96026D01* +X1259729Y95929D01* +X1259704Y95833D01* +X1259675Y95738D01* +X1259642Y95644D01* +X1259605Y95552D01* +X1259565Y95461D01* +X1259521Y95372D01* +X1259473Y95284D01* +X1259422Y95199D01* +X1259368Y95116D01* +X1259311Y95034D01* +X1259250Y94956D01* +X1259186Y94879D01* +X1259120Y94806D01* +X1259050Y94735D01* +X1258978Y94667D01* +X1258903Y94601D01* +X1258825Y94539D01* +X1258745Y94480D01* +X1258663Y94424D01* +X1258579Y94372D01* +X1258492Y94323D01* +X1258404Y94277D01* +X1258314Y94235D01* +X1258222Y94196D01* +X1258129Y94161D01* +X1258035Y94130D01* +X1257939Y94103D01* +X1257842Y94080D01* +X1257745Y94060D01* +X1257647Y94044D01* +X1257548Y94032D01* +X1257449Y94024D01* +X1257350Y94020D01* +X1257250Y94020D01* +X1257151Y94024D01* +X1257052Y94032D01* +X1256953Y94044D01* +X1256855Y94060D01* +X1256758Y94080D01* +X1256661Y94103D01* +X1256565Y94130D01* +X1256471Y94161D01* +X1256378Y94196D01* +X1256286Y94235D01* +X1256196Y94277D01* +X1256108Y94323D01* +X1256021Y94372D01* +X1255937Y94424D01* +X1255855Y94480D01* +X1255775Y94539D01* +X1255697Y94601D01* +X1255622Y94667D01* +X1255550Y94735D01* +X1255480Y94806D01* +X1255414Y94879D01* +X1255350Y94956D01* +X1255289Y95034D01* +X1255232Y95116D01* +X1255178Y95199D01* +X1255127Y95284D01* +X1255079Y95372D01* +X1255035Y95461D01* +X1254995Y95552D01* +X1254958Y95644D01* +X1254925Y95738D01* +X1254896Y95833D01* +X1254871Y95929D01* +X1254849Y96026D01* +X1254832Y96124D01* +X1254818Y96222D01* +X1254808Y96321D01* +X1254802Y96421D01* +X1254800Y96520D01* +X134660Y17780D02* +X134662Y17879D01* +X134668Y17979D01* +X134678Y18078D01* +X134692Y18176D01* +X134709Y18274D01* +X134731Y18371D01* +X134756Y18467D01* +X134785Y18562D01* +X134818Y18656D01* +X134855Y18748D01* +X134895Y18839D01* +X134939Y18928D01* +X134987Y19016D01* +X135038Y19101D01* +X135092Y19184D01* +X135149Y19266D01* +X135210Y19344D01* +X135274Y19421D01* +X135340Y19494D01* +X135410Y19565D01* +X135482Y19633D01* +X135557Y19699D01* +X135635Y19761D01* +X135715Y19820D01* +X135797Y19876D01* +X135881Y19928D01* +X135968Y19977D01* +X136056Y20023D01* +X136146Y20065D01* +X136238Y20104D01* +X136331Y20139D01* +X136425Y20170D01* +X136521Y20197D01* +X136618Y20220D01* +X136715Y20240D01* +X136813Y20256D01* +X136912Y20268D01* +X137011Y20276D01* +X137110Y20280D01* +X137210Y20280D01* +X137309Y20276D01* +X137408Y20268D01* +X137507Y20256D01* +X137605Y20240D01* +X137702Y20220D01* +X137799Y20197D01* +X137895Y20170D01* +X137989Y20139D01* +X138082Y20104D01* +X138174Y20065D01* +X138264Y20023D01* +X138352Y19977D01* +X138439Y19928D01* +X138523Y19876D01* +X138605Y19820D01* +X138685Y19761D01* +X138763Y19699D01* +X138838Y19633D01* +X138910Y19565D01* +X138980Y19494D01* +X139046Y19421D01* +X139110Y19344D01* +X139171Y19266D01* +X139228Y19184D01* +X139282Y19101D01* +X139333Y19016D01* +X139381Y18928D01* +X139425Y18839D01* +X139465Y18748D01* +X139502Y18656D01* +X139535Y18562D01* +X139564Y18467D01* +X139589Y18371D01* +X139611Y18274D01* +X139628Y18176D01* +X139642Y18078D01* +X139652Y17979D01* +X139658Y17879D01* +X139660Y17780D01* +X139658Y17681D01* +X139652Y17581D01* +X139642Y17482D01* +X139628Y17384D01* +X139611Y17286D01* +X139589Y17189D01* +X139564Y17093D01* +X139535Y16998D01* +X139502Y16904D01* +X139465Y16812D01* +X139425Y16721D01* +X139381Y16632D01* +X139333Y16544D01* +X139282Y16459D01* +X139228Y16376D01* +X139171Y16294D01* +X139110Y16216D01* +X139046Y16139D01* +X138980Y16066D01* +X138910Y15995D01* +X138838Y15927D01* +X138763Y15861D01* +X138685Y15799D01* +X138605Y15740D01* +X138523Y15684D01* +X138439Y15632D01* +X138352Y15583D01* +X138264Y15537D01* +X138174Y15495D01* +X138082Y15456D01* +X137989Y15421D01* +X137895Y15390D01* +X137799Y15363D01* +X137702Y15340D01* +X137605Y15320D01* +X137507Y15304D01* +X137408Y15292D01* +X137309Y15284D01* +X137210Y15280D01* +X137110Y15280D01* +X137011Y15284D01* +X136912Y15292D01* +X136813Y15304D01* +X136715Y15320D01* +X136618Y15340D01* +X136521Y15363D01* +X136425Y15390D01* +X136331Y15421D01* +X136238Y15456D01* +X136146Y15495D01* +X136056Y15537D01* +X135968Y15583D01* +X135881Y15632D01* +X135797Y15684D01* +X135715Y15740D01* +X135635Y15799D01* +X135557Y15861D01* +X135482Y15927D01* +X135410Y15995D01* +X135340Y16066D01* +X135274Y16139D01* +X135210Y16216D01* +X135149Y16294D01* +X135092Y16376D01* +X135038Y16459D01* +X134987Y16544D01* +X134939Y16632D01* +X134895Y16721D01* +X134855Y16812D01* +X134818Y16904D01* +X134785Y16998D01* +X134756Y17093D01* +X134731Y17189D01* +X134709Y17286D01* +X134692Y17384D01* +X134678Y17482D01* +X134668Y17581D01* +X134662Y17681D01* +X134660Y17780D01* +D11* +X507170Y107390D02* +X514670Y107390D01* +X514670Y100890D01* +X507170Y100890D01* +X507170Y107390D01* +X507170Y104215D02* +X514670Y104215D01* +X498670Y107390D02* +X491170Y107390D01* +X498670Y107390D02* +X498670Y100890D01* +X491170Y100890D01* +X491170Y107390D01* +X491170Y104215D02* +X498670Y104215D01* +D32* +X669163Y58420D02* +X680720Y58420D01* +D33* +X680720Y58420D03* +D32* +X276860Y287020D02* +X269070Y287020D01* +X264160Y291930D02* +X264160Y297010D01* +X264160Y291930D02* +X269070Y287020D01* +D33* +X276860Y287020D03* +D32* +X297180Y287020D02* +X297180Y297010D01* +D33* +X297180Y287020D03* +D32* +X276860Y287020D02* +X276860Y297010D01* +X309880Y297010D02* +X309880Y291930D01* +X304970Y287020D01* +X297180Y287020D01* +D34* +X322660Y330120D02* +X332000Y330120D01* +X322660Y330120D02* +X317500Y335280D01* +D33* +X317500Y335280D03* +D34* +X160830Y291120D02* +X139350Y291120D01* +X138350Y292120D02* +X138350Y313120D01* +X138350Y292120D02* +X139350Y291120D01* +X138350Y337120D02* +X138350Y358120D01* +X159830Y358120D02* +X160830Y359120D01* +X159830Y358120D02* +X138350Y358120D01* +X180340Y353230D02* +X180340Y365816D01* +D33* +X180340Y365816D03* +D34* +X393700Y317500D02* +X393700Y307510D01* +D33* +X393700Y317500D03* +D34* +X559180Y74040D02* +X559180Y63500D01* +X559180Y74040D02* +X561340Y76200D01* +D33* +X561340Y76200D03* +D34* +X564720Y79580D02* +X564720Y91440D01* +X564720Y79580D02* +X561340Y76200D01* +X564260Y79120D02* +X576580Y79120D01* +X564260Y79120D02* +X561340Y76200D01* +X558970Y116840D02* +X586570Y116840D01* +X564720Y103470D02* +X564720Y91440D01* +X564720Y103470D02* +X558970Y109220D01* +X558970Y116840D01* +X604520Y101900D02* +X604520Y98990D01* +X604485Y99025D01* +D32* +X464820Y228600D02* +X452500Y228600D01* +D33* +X464820Y228600D03* +D32* +X464820Y221150D02* +X462280Y218610D01* +X464820Y221150D02* +X464820Y228600D01* +X436500Y259080D02* +X424180Y259080D01* +D33* +X424180Y259080D03* +D34* +X462450Y147150D02* +X472440Y147150D01* +X462450Y147150D02* +X462280Y147320D01* +D33* +X462280Y147320D03* +D34* +X459740Y167470D02* +X459910Y167640D01* +X469900Y167640D01* +D33* +X469900Y167640D03* +D34* +X500380Y134620D02* +X512700Y134620D01* +D33* +X500380Y134620D03* +D34* +X513080Y147150D02* +X525780Y147150D01* +X513080Y147150D02* +X502750Y147150D01* +X500380Y144780D01* +X500380Y134620D01* +X546270Y180340D02* +X556260Y180340D01* +D33* +X556260Y180340D03* +D34* +X556260Y190500D02* +X551350Y190500D01* +X556260Y190500D02* +X556260Y180340D01* +X1207240Y304060D02* +X1222920Y304060D01* +X1207240Y304060D02* +X1206500Y304800D01* +D33* +X1206500Y304800D03* +X1051560Y76200D03* +D34* +X1051560Y86190D01* +X1041400Y86190D01* +X873930Y55880D02* +X873760Y56050D01* +X873760Y66040D01* +D33* +X873760Y66040D03* +D34* +X830580Y83820D02* +X830580Y91948D01* +X834390Y95758D02* +X844550Y95758D01* +X834390Y95758D02* +X830580Y91948D01* +D33* +X830580Y83820D03* +D34* +X881210Y149860D02* +X876300Y154770D01* +X881210Y149860D02* +X886460Y149860D01* +D33* +X886460Y149860D03* +D34* +X937400Y205960D02* +X937400Y238900D01* +X939800Y241300D01* +D33* +X939800Y241300D03* +X960120Y121920D03* +D34* +X970110Y121920D01* +X970280Y121750D01* +X1080770Y128960D02* +X1080770Y107950D01* +X1082040Y106680D01* +D33* +X1082040Y106680D03* +D34* +X1127920Y198280D02* +X1127920Y229060D01* +X1127920Y198280D02* +X1127760Y198120D01* +D33* +X1127760Y198120D03* +D34* +X680500Y137020D02* +X663080Y137020D01* +X657860Y142240D01* +D33* +X657860Y142240D03* +D34* +X680720Y139700D02* +X683260Y142240D01* +X690880Y68580D02* +X680720Y58420D01* +X690880Y68580D02* +X690880Y75820D01* +X652640Y137020D02* +X589500Y137020D01* +X652640Y137020D02* +X657860Y142240D01* +X604520Y101900D02* +X604520Y90541D01* +X600720Y86740D01* +X591820Y86740D01* +X584200Y79120D01* +X576580Y79120D01* +D33* +X861060Y274320D03* +X952500Y297180D03* +D34* +X937620Y297180D02* +X937400Y296960D01* +X937620Y297180D02* +X952500Y297180D01* +D33* +X952500Y281940D03* +D34* +X967570Y254000D02* +X960120Y246550D01* +X960120Y241300D01* +D33* +X960120Y241300D03* +D34* +X1052920Y304060D02* +X1070080Y304060D01* +X1071880Y302260D01* +D33* +X1071880Y302260D03* +D34* +X400050Y26670D02* +X364490Y26670D01* +X355600Y35560D01* +X355600Y50420D01* +D32* +X1016000Y50420D02* +X1016000Y37720D01* +X1004950Y26670D01* +X971550Y26670D01* +X138350Y313120D02* +X138350Y337120D01* +X162600Y312120D02* +X175560Y312120D01* +X177800Y309880D01* +D33* +X177800Y309880D03* +D34* +X332000Y330120D02* +X350600Y330120D01* +X355600Y325120D01* +X347980Y182710D02* +X347980Y172720D01* +D33* +X347980Y172720D03* +D34* +X497840Y259250D02* +X497840Y269240D01* +D33* +X497840Y269240D03* +D35* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +D34* +X993140Y284650D02* +X993140Y294640D01* +D35* +X993140Y294640D03* +D34* +X1052920Y302430D02* +X1052920Y304060D01* +X1052920Y302430D02* +X1033780Y302430D01* +X1021080Y302430D02* +X1021080Y302640D01* +X1021080Y302430D02* +X1033780Y302430D01* +X693420Y154770D02* +X693420Y146384D01* +X684056Y137020D01* +X680500Y137020D01* +X1001140Y302640D02* +X1021080Y302640D01* +X1001140Y302640D02* +X993140Y294640D01* +X861230Y274150D02* +X861060Y274320D01* +X861230Y274150D02* +X861230Y261620D01* +X861230Y248920D02* +X861230Y243840D01* +X863886Y241184D01* +X868564Y241184D01* +D35* +X868564Y241184D03* +D33* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X327660Y353060D03* +X342900Y370840D03* +D34* +X1041400Y96690D02* +X1051560Y96690D01* +X1041400Y96690D02* +X1031240Y96690D01* +X1052992Y265888D02* +X1052920Y265960D01* +X1052992Y265888D02* +X1066723Y265888D01* +X1089660Y242951D01* +X1089660Y159201D01* +X1070682Y140223D01* +X1070682Y108048D02* +X1059324Y96690D01* +X1031240Y96690D01* +X1070682Y108048D02* +X1070682Y140223D01* +X1205760Y291360D02* +X1222920Y291360D01* +X1205760Y291360D02* +X1193800Y279400D01* +D33* +X1193800Y279400D03* +D34* +X507800Y220780D02* +X507800Y212390D01* +X507800Y220780D02* +X518160Y231140D01* +X518160Y239494D01* +D33* +X518160Y239494D03* +D34* +X1207240Y202460D02* +X1222920Y202460D01* +X1207240Y202460D02* +X1206500Y203200D01* +D33* +X1206500Y203200D03* +D34* +X514650Y205540D02* +X514650Y217541D01* +D33* +X563880Y211610D03* +D34* +X563880Y215971D01* +X531658Y234648D02* +X528150Y231140D01* +X528150Y228600D01* +X531658Y234648D02* +X545203Y234648D01* +X563880Y215971D01* +X528150Y228600D02* +X525710Y228600D01* +X514650Y217541D01* +D33* +X502800Y162909D03* +X1023620Y175260D03* +D34* +X502800Y173690D02* +X502800Y162909D01* +X1023620Y175260D02* +X1023790Y175430D01* +X1033780Y175430D01* +X1207240Y240560D02* +X1222920Y240560D01* +X1207240Y240560D02* +X1206500Y241300D01* +D33* +X1206500Y241300D03* +D34* +X492800Y224124D02* +X492800Y212390D01* +X492800Y224124D02* +X499816Y231140D01* +D33* +X499816Y231140D03* +D34* +X1209780Y215160D02* +X1222920Y215160D01* +X1209780Y215160D02* +X1206500Y218440D01* +D33* +X1206500Y218440D03* +D34* +X487800Y212390D02* +X487800Y228720D01* +X490220Y231140D01* +X490188Y231172D01* +D33* +X490188Y231172D03* +D34* +X1207240Y278660D02* +X1222920Y278660D01* +X1207240Y278660D02* +X1206500Y279400D01* +D33* +X1206500Y279400D03* +D34* +X482800Y212390D02* +X482600Y212590D01* +X482600Y238760D01* +D33* +X482600Y238760D03* +D34* +X1052920Y189760D02* +X1073680Y189760D01* +X1074420Y190500D01* +D33* +X1074420Y190500D03* +X566332Y202014D03* +D34* +X566420Y201926D01* +X566420Y190670D01* +X1052920Y177060D02* +X1073680Y177060D01* +X1074420Y177800D01* +D33* +X1074420Y177800D03* +X581660Y203200D03* +D34* +X574040Y195580D01* +X574040Y162390D02* +X566590Y154940D01* +X574040Y162390D02* +X574040Y195580D01* +X1052920Y164360D02* +X1078760Y164360D01* +X1082040Y167640D01* +D33* +X1082040Y167640D03* +X553720Y203200D03* +D34* +X538650Y203200D01* +X1176760Y265960D02* +X1222920Y265960D01* +X1176760Y265960D02* +X1165860Y276860D01* +D33* +X1165860Y276860D03* +X396240Y350596D03* +D34* +X383616Y363220D02* +X362480Y363220D01* +X355600Y356340D02* +X355600Y348720D01* +X355600Y356340D02* +X362480Y363220D01* +X383616Y363220D02* +X396240Y350596D01* +X1169140Y253260D02* +X1222920Y253260D01* +D33* +X1155700Y266700D03* +X414020Y342900D03* +D34* +X388620Y368300D01* +X350600Y358880D02* +X350600Y348720D01* +X350600Y358880D02* +X360020Y368300D01* +X388620Y368300D01* +X1155700Y266700D02* +X1169140Y253260D01* +X680500Y184071D02* +X680500Y183020D01* +X680500Y184071D02* +X697118Y200688D01* +X680500Y183020D02* +X589500Y183020D01* +X678180Y180700D02* +X680500Y183020D01* +X678180Y180700D02* +X678180Y165270D01* +X693420Y165270D01* +X1222148Y121920D02* +X1222920Y122692D01* +X1222920Y138960D01* +D33* +X1222148Y121920D03* +D34* +X492760Y330200D02* +X463120Y330200D01* +X589500Y233460D02* +X589500Y183020D01* +X589500Y233460D02* +X492760Y330200D01* +X905760Y163866D02* +X905760Y163580D01* +X905760Y163866D02* +X868938Y200688D01* +D33* +X905760Y163580D03* +D34* +X868938Y200688D02* +X697118Y200688D01* +X491808Y283958D02* +X491808Y301563D01* +X491808Y283958D02* +X490023Y282172D01* +X452058Y282172D01* +X441960Y292270D02* +X441960Y297010D01* +X441960Y292270D02* +X452058Y282172D01* +X484151Y309220D02* +X491808Y301563D01* +X484151Y309220D02* +X481760Y309220D01* +X462280Y307510D02* +X462280Y312190D01* +X453072Y335368D02* +X448740Y339700D01* +X441120Y339700D01* +X453072Y335368D02* +X453072Y321398D01* +X462280Y312190D01* +D36* +X182920Y325120D02* +X162600Y325120D01* +X182920Y325120D02* +X187920Y320120D01* +X332000Y320120D01* +X332000Y325120D02* +X190500Y325120D01* +X184000Y331620D02* +X162600Y331620D01* +X184000Y331620D02* +X190500Y325120D01* +D34* +X355600Y301520D02* +X355600Y293665D01* +X393700Y294470D02* +X393700Y297010D01* +X393700Y294470D02* +X391160Y291930D01* +X357335Y291930D01* +X355600Y293665D01* +X740220Y158770D02* +X740220Y143950D01* +X740220Y158770D02* +X738970Y160020D01* +X722820Y158770D02* +X722820Y143950D01* +X722820Y158770D02* +X724070Y160020D01* +X722820Y135450D02* +X721820Y134450D01* +X706120Y134450D01* +X1255590Y176340D02* +X1255590Y183540D01* +X1265090Y193040D01* +X1265090Y146900D02* +X1265090Y142240D01* +X1265090Y146900D02* +X1263088Y148902D01* +X1257687Y148902D01* +X1255302Y151287D01* +X1255302Y158652D02* +X1255590Y158940D01* +X1255302Y158652D02* +X1255302Y151287D01* +X1265090Y129640D02* +X1265090Y129540D01* +X1265090Y129640D02* +X1270888Y135438D01* +X1270888Y152142D01* +X1264090Y158940D01* +X1052920Y151660D02* +X1004040Y151660D01* +X982980Y172720D01* +D33* +X982980Y172720D03* +X759460Y160020D03* +D34* +X749470Y160020D01* +X844550Y76200D02* +X859187Y76200D01* +X919480Y136493D02* +X919480Y144780D01* +D33* +X919480Y144780D03* +X1143000Y154940D03* +D34* +X1191260Y154940D01* +X919480Y136493D02* +X859187Y76200D01* +X1191260Y154940D02* +X1203922Y142278D01* +X1199050Y109390D02* +X1198880Y109390D01* +X1199050Y109390D02* +X1203922Y114262D01* +X1203922Y142278D01* +X1182370Y128960D02* +X1182370Y113200D01* +X1186180Y109390D01* +X1198880Y109390D01* +X1052920Y253260D02* +X1052848Y253188D01* +X978882Y253188D02* +X978070Y254000D01* +X978882Y253188D02* +X1052848Y253188D01* +X765302Y36322D02* +X749300Y20320D01* +X928363Y36322D02* +X936028Y43988D01* +X936028Y128308D01* +X928363Y36322D02* +X765302Y36322D01* +D33* +X972820Y165100D03* +X924560Y175260D03* +D34* +X929640Y175260D02* +X978070Y223690D01* +X929640Y175260D02* +X924560Y175260D01* +X978070Y223690D02* +X978070Y254000D01* +X972820Y165100D02* +X936028Y128308D01* +X858933Y63246D02* +X844550Y63246D01* +X858933Y63246D02* +X1010775Y215088D01* +X1024578Y215160D02* +X1052920Y215160D01* +X1024578Y215160D02* +X1024506Y215088D01* +X1010775Y215088D01* +X1052848Y202388D02* +X1052920Y202460D01* +X1052848Y202388D02* +X1040588Y202388D01* +X1021080Y182880D01* +X995680Y182880D01* +D33* +X995680Y182880D03* +X711200Y170180D03* +D34* +X713570Y167810D01* +X713570Y160020D01* +X1001893Y240560D02* +X1052920Y240560D01* +X1001893Y240560D02* +X928183Y166850D01* +X916651Y166850D01* +X909320Y174181D01* +X909320Y175260D01* +D33* +X909320Y175260D03* +X704129Y158029D03* +D34* +X706120Y156038D01* +X706120Y144950D01* +X844550Y69596D02* +X859536Y69596D01* +X1024980Y227860D02* +X1052920Y227860D01* +X1024980Y227860D02* +X1024908Y227788D01* +X1017728Y227788D01* +X859536Y69596D01* +X863600Y183020D02* +X774920Y183020D01* +X863600Y183020D02* +X865920Y183020D01* +X871080Y183020D01* +X863600Y183020D02* +X863600Y165270D01* +X876300Y165270D01* +X1195070Y142691D02* +X1195070Y128960D01* +X1195070Y142691D02* +X1190441Y147320D01* +X1122680Y147320D01* +D33* +X1122680Y147320D03* +X889000Y165100D03* +D34* +X871080Y183020D01* +X940092Y42304D02* +X930046Y32258D01* +X786638Y32258D02* +X774700Y20320D01* +X786638Y32258D02* +X930046Y32258D01* +X940092Y117132D02* +X955210Y132250D01* +X940092Y117132D02* +X940092Y42304D01* +X976990Y138960D02* +X1052920Y138960D01* +X976990Y138960D02* +X970280Y132250D01* +X955210Y132250D01* +X860044Y82804D02* +X844550Y82804D01* +X860044Y82804D02* +X906780Y129540D01* +X1160780Y173340D02* +X1177200Y189760D01* +X1160780Y173340D02* +X1160780Y167640D01* +X1177200Y189760D02* +X1222920Y189760D01* +D33* +X1160780Y167640D03* +D34* +X906780Y142240D02* +X906780Y129540D01* +D33* +X906780Y142240D03* +D34* +X1211410Y109390D02* +X1211580Y109390D01* +X1211410Y109390D02* +X1207986Y112814D01* +X1207986Y143962D01* +X1160950Y167640D02* +X1160780Y167640D01* +X1160950Y167640D02* +X1169586Y159004D01* +X1192943Y159004D02* +X1207986Y143962D01* +X1192943Y159004D02* +X1169586Y159004D01* +X1093470Y128960D02* +X1093470Y97790D01* +X1102360Y88900D01* +X1224280Y88900D01* +X1254760Y119380D01* +X1254760Y129370D01* +X1254590Y129540D01* +X1245170Y151660D02* +X1222920Y151660D01* +X1245170Y151660D02* +X1254590Y142240D01* +X1238780Y164360D02* +X1222920Y164360D01* +X1238780Y164360D02* +X1244600Y170180D01* +X1244600Y187960D01* +X1249680Y193040D02* +X1254590Y193040D01* +X1249680Y193040D02* +X1244600Y187960D01* +X463550Y58420D02* +X463550Y31750D01* +X635000Y7620D02* +X647700Y20320D01* +X487680Y7620D02* +X463550Y31750D01* +X487680Y7620D02* +X635000Y7620D01* +X647700Y20320D02* +X664972Y37592D01* +X743712Y37592D01* +X775716Y69596D02* +X786130Y69596D01* +X775716Y69596D02* +X743712Y37592D01* +X643636Y41656D02* +X622300Y20320D01* +X643636Y41656D02* +X741172Y41656D01* +X775716Y76200D02* +X786130Y76200D01* +X775716Y76200D02* +X741172Y41656D01* +X890270Y40640D02* +X908050Y58420D01* +X890270Y40640D02* +X752565Y40640D01* +X686308Y33528D02* +X673100Y20320D01* +X686308Y33528D02* +X745453Y33528D01* +X775171Y63246D02* +X786130Y63246D01* +X775171Y63246D02* +X752565Y40640D01* +X745453Y33528D01* +D37* +X446848Y190540D02* +X443114Y186806D01* +D35* +X443114Y186806D03* +D37* +X446848Y190540D02* +X475950Y190540D01* +X441728Y185420D02* +X431970Y185420D01* +X441728Y185420D02* +X443114Y186806D01* +X449580Y180340D02* +X454780Y185540D01* +D35* +X449580Y180340D03* +D37* +X454780Y185540D02* +X475950Y185540D01* +X444500Y175260D02* +X439590Y175260D01* +X444500Y175260D02* +X449580Y180340D01* +X454780Y200540D02* +X449580Y205740D01* +D35* +X449580Y205740D03* +D37* +X454780Y200540D02* +X475950Y200540D01* +X444500Y210820D02* +X439590Y210820D01* +X444500Y210820D02* +X449580Y205740D01* +X443114Y199274D02* +X446848Y195540D01* +D35* +X443114Y199274D03* +D37* +X446848Y195540D02* +X475950Y195540D01* +X441728Y200660D02* +X431970Y200660D01* +X441728Y200660D02* +X443114Y199274D01* +D34* +X469930Y205540D02* +X475950Y205540D01* +X469930Y205540D02* +X467360Y208110D01* +X462280Y208110D01* +X429090Y220980D02* +X428880Y220980D01* +X436500Y228600D01* +X347980Y193210D02* +X330200Y193210D01* +X324450Y187460D01* +X310005Y187460D01* +X347980Y193210D02* +X348150Y193040D01* +X482800Y173690D02* +X482800Y168010D01* +X472440Y157650D01* +X202994Y137975D02* +X194804Y129785D01* +X202994Y137975D02* +X202994Y169796D01* +X245296Y212098D01* +X292090Y212098D01* +X292090Y205375D01* +X310005Y187460D01* +D32* +X436500Y228600D02* +X436500Y243840D01* +D34* +X457867Y208110D02* +X462280Y208110D01* +X421470Y200660D02* +X421470Y193040D01* +X421470Y185420D01* +X421470Y193040D02* +X348150Y193040D01* +X429090Y210820D02* +X429090Y220980D01* +X436500Y228600D02* +X437377Y228600D01* +X457867Y208110D01* +X444330Y157650D02* +X472440Y157650D01* +X429090Y172720D02* +X429090Y175260D01* +X429090Y172720D02* +X444330Y157480D01* +X444330Y157650D01* +D37* +X429090Y175260D02* +X424180Y175260D01* +X421470Y177970D02* +X421470Y185420D01* +X421470Y177970D02* +X424180Y175260D01* +X421470Y203200D02* +X429090Y210820D01* +X421470Y203200D02* +X421470Y200660D01* +D34* +X514650Y200540D02* +X525490Y200540D01* +X528150Y203200D01* +X528150Y215900D01* +X517890Y180540D02* +X514650Y180540D01* +X517890Y180540D02* +X522506Y175924D01* +X522506Y173288D01* +X540684Y155110D02* +X543560Y155110D01* +X540684Y155110D02* +X522506Y173288D01* +X543560Y155110D02* +X555920Y155110D01* +X556090Y154940D01* +X521177Y185540D02* +X514650Y185540D01* +X521177Y185540D02* +X526570Y180147D01* +X526570Y174971D01* +X538647Y162894D01* +X566590Y165270D02* +X566590Y170180D01* +X564214Y162894D02* +X538647Y162894D01* +X564214Y162894D02* +X566590Y165270D01* +X566590Y170180D02* +X566420Y170350D01* +X566420Y180170D01* +X475950Y180540D02* +X468330Y180540D01* +X466316Y178526D01* +X460296Y178526D01* +X459740Y177970D01* +X492800Y173690D02* +X492800Y149860D01* +X469940Y127000D01* +X439590Y127000D01* +X487800Y151130D02* +X487800Y173690D01* +X487800Y151130D02* +X476370Y139700D01* +X439590Y139700D01* +X179609Y155204D02* +X179609Y122651D01* +X203710Y98550D02* +X273810Y98550D01* +X294640Y119380D01* +X203710Y98550D02* +X179609Y122651D01* +X383710Y139700D02* +X429090Y139700D01* +X383710Y139700D02* +X363390Y119380D01* +X294640Y119380D01* +X514650Y195540D02* +X528190Y195540D01* +X533230Y190500D01* +X540850Y190500D01* +X497800Y212390D02* +X497800Y219040D01* +X497840Y248750D02* +X510540Y248750D01* +X485140Y248750D01* +X510540Y231780D02* +X497800Y219040D01* +X510540Y231780D02* +X510540Y248750D01* +X507800Y173690D02* +X507800Y168610D01* +X513080Y163330D01* +X513080Y157650D01* +X525780Y157650D01* +X530860Y157650D02* +X533780Y154730D01* +X530860Y157650D02* +X525780Y157650D01* +X533780Y154730D02* +X533780Y139700D01* +X528700Y134620D01* +X774108Y95758D02* +X786130Y95758D01* +X774108Y95758D02* +X767250Y88900D01* +X1209780Y177060D02* +X1222920Y177060D01* +X1209780Y177060D02* +X1206500Y180340D01* +D33* +X1206500Y180340D03* +X1023620Y165100D03* +D34* +X1033610Y165100D02* +X1033780Y164930D01* +X1033610Y165100D02* +X1023620Y165100D01* +X332000Y315120D02* +X284470Y315120D01* +X276860Y307510D02* +X264160Y307510D01* +X276860Y307510D02* +X284470Y315120D01* +X320280Y310120D02* +X332000Y310120D01* +X317670Y307510D02* +X309880Y307510D01* +X317670Y307510D02* +X320280Y310120D01* +D32* +X731900Y71500D02* +X736600Y76200D01* +X731900Y71500D02* +X731900Y55880D01* +D34* +X309880Y307510D02* +X297180Y307510D01* +X289730Y307510D01* +X287020Y304800D01* +D33* +X287020Y304800D03* +X251460Y304800D03* +D34* +X254170Y307510D01* +X264160Y307510D01* +X406400Y307510D02* +X406400Y317500D01* +D33* +X406400Y317500D03* +X855980Y48260D03* +D34* +X863430Y55880D02* +X862668Y56642D01* +X844550Y56642D01* +X855980Y48260D02* +X861060Y48260D01* +X863430Y50630D01* +X863430Y55880D01* +X535770Y180340D02* +X525570Y190540D01* +X541020Y175090D02* +X541020Y170180D01* +X541020Y175090D02* +X535770Y180340D01* +D33* +X541020Y170180D03* +X469900Y256540D03* +D34* +X482430Y256540D02* +X485140Y259250D01* +X482430Y256540D02* +X469900Y256540D01* +X538650Y228600D02* +X538650Y220980D01* +X538650Y215900D01* +X538650Y220980D02* +X548640Y220980D01* +X548205Y221415D01* +D33* +X548205Y221415D03* +D34* +X541020Y170180D02* +X556090Y170180D01* +D33* +X668020Y154914D03* +D34* +X850730Y154770D02* +X863600Y154770D01* +X850730Y154770D02* +X848360Y152400D01* +D33* +X848360Y152400D03* +D34* +X863740Y137020D02* +X865920Y137020D01* +X863740Y137020D02* +X848360Y152400D01* +X762310Y291933D02* +X701106Y291933D01* +X700807Y292232D01* +X754240Y137020D02* +X774920Y137020D01* +X752670Y135450D02* +X740220Y135450D01* +X752670Y135450D02* +X753110Y135890D01* +X754240Y137020D01* +X756750Y88900D02* +X749300Y88900D01* +X736600Y76200D01* +X678180Y154770D02* +X678036Y154914D01* +X668020Y154914D01* +X543560Y144610D02* +X543560Y134620D01* +D33* +X543560Y134620D03* +D32* +X452500Y243840D02* +X452500Y259080D01* +X467360Y259080D02* +X469900Y256540D01* +X467360Y259080D02* +X452500Y259080D01* +D34* +X514650Y190540D02* +X525570Y190540D01* +X1198880Y98890D02* +X1211580Y98890D01* +X1211750Y99060D01* +X1221740Y99060D01* +D35* +X1221740Y99060D03* +X1246124Y160020D03* +D34* +X876300Y251460D02* +X872188Y255572D01* +X831596Y255572D01* +X795235Y291933D02* +X762310Y291933D01* +X795235Y291933D02* +X831596Y255572D01* +D35* +X876300Y251460D03* +X1178560Y289560D03* +X1005840Y294640D03* +D34* +X1005840Y284650D01* +X1028700Y286850D02* +X1033780Y291930D01* +X1028700Y286850D02* +X1028700Y286640D01* +X1021080Y286640D01* +X1021080Y284650D01* +X1005840Y284650D01* +X1033780Y291360D02* +X1052920Y291360D01* +X1033780Y291360D02* +X1033780Y291930D01* +X1246294Y163545D02* +X1250711Y167962D01* +X1246294Y163545D02* +X1246294Y160190D01* +X1246124Y160020D01* +X1264090Y171518D02* +X1264090Y176340D01* +X1264090Y171518D02* +X1260534Y167962D01* +X1250711Y167962D01* +X753110Y135890D02* +X753110Y128270D01* +X754380Y127000D01* +D35* +X754380Y127000D03* +D32* +X516460Y89740D02* +X516460Y76200D01* +X521540Y71120D02* +X521540Y60960D01* +X521540Y71120D02* +X516460Y76200D01* +X516460Y89740D02* +X528320Y101600D01* +X542060Y101600D02* +X542720Y100940D01* +X542060Y101600D02* +X528320Y101600D01* +X542720Y100940D02* +X542720Y111090D01* +X548470Y116840D01* +X521540Y60960D02* +X521540Y42340D01* +X543560Y20320D01* +X571500Y20320D01* +X548470Y116840D02* +X548470Y119380D01* +X552994Y123904D01* +X797560Y99219D02* +X797560Y59785D01* +X792639Y104140D02* +X701040Y104140D01* +X792639Y104140D02* +X797560Y99219D01* +X681276Y123904D02* +X552994Y123904D01* +X681276Y123904D02* +X701040Y104140D01* +X786130Y56642D02* +X794417Y56642D01* +X797560Y59785D01* +D34* +X194809Y197349D02* +X194809Y230904D01* +X194809Y197349D02* +X165100Y167640D01* +X165100Y129540D01* +X200660Y93980D01* +X276860Y93980D01* +X297180Y114300D01* +X378630Y127000D02* +X429090Y127000D01* +X378630Y127000D02* +X365930Y114300D01* +X297180Y114300D01* +X360680Y355600D02* +X363220Y358140D01* +X379037Y358140D01* +X401897Y335280D01* +X462280Y290220D02* +X481760Y290220D01* +X462280Y290220D02* +X462280Y297010D01* +D33* +X401897Y335280D03* +X451955Y291935D03* +D34* +X453669Y290220D01* +X481760Y290220D01* +X360600Y348720D02* +X360600Y355520D01* +X360680Y355600D01* +X340600Y355840D02* +X340600Y348720D01* +X340600Y355840D02* +X358140Y373380D01* +X396240Y373380D01* +X422910Y346710D01* +X431140Y320700D02* +X441120Y320700D01* +X422910Y328930D02* +X422910Y346710D01* +X422910Y328930D02* +X431140Y320700D01* +X441960Y309880D02* +X441960Y307510D01* +X441120Y310720D02* +X441120Y320700D01* +X441120Y310720D02* +X441960Y309880D01* +D32* +X175730Y338120D02* +X162600Y338120D01* +X175730Y338120D02* +X180340Y342730D01* +X180510Y342900D01* +X190500Y342900D01* +D33* +X190500Y342900D03* +D34* +X326920Y301520D02* +X340600Y301520D01* +X326920Y301520D02* +X325120Y299720D01* +D33* +X325120Y299720D03* +D38* +X490605Y121876D03* +D39* +X510920Y109220D02* +X510920Y104140D01* +X510920Y109220D02* +X498264Y121876D01* +X490605Y121876D01* +D32* +X510920Y104140D02* +X499540Y92760D01* +X499540Y70460D01* +D34* +X594190Y75070D02* +X595020Y75900D01* +X594190Y75070D02* +X594190Y63500D01* +X626237Y68580D02* +X626237Y75900D01* +X626237Y68580D02* +X636397Y58420D01* +X626237Y75900D02* +X614020Y75900D01* +X626237Y75900D02* +X629920Y75900D01* +X629920Y93980D02* +X629920Y98890D01* +X629920Y93980D02* +X643860Y93980D01* +X629920Y93980D02* +X629920Y75900D01* +X629920Y109390D02* +X626590Y109390D01* +X619100Y101900D01* +X614020Y101900D01* +X597070Y103950D02* +X595020Y101900D01* +X597070Y103950D02* +X597070Y116840D01* +X611970Y116840D01* +X1052848Y278588D02* +X1052920Y278660D01* +X1030233Y274150D02* +X993140Y274150D01* +X1034671Y278588D02* +X1052848Y278588D01* +X1034671Y278588D02* +X1030233Y274150D01* +X1005840Y274150D02* +X993140Y274150D01* +X513080Y299720D02* +X503760Y299720D01* +X513080Y299720D02* +X515620Y297180D01* +X429260Y304970D02* +X426720Y307510D01* +X429260Y304970D02* +X429260Y292270D01* +X444670Y276860D01* +X513080Y276860D01* +X891400Y274150D02* +X993140Y274150D01* +X891400Y274150D02* +X891400Y296960D01* +X891400Y205960D01* +X629700Y205960D01* +X556260Y279400D01* +D33* +X556260Y279400D03* +X515620Y279400D03* +D34* +X515620Y297180D01* +X510540Y266700D02* +X510540Y259250D01* +X510540Y266700D02* +X515620Y271780D01* +X515620Y279400D01* +X513080Y276860D01* +X345600Y291940D02* +X345600Y301520D01* +X345600Y291940D02* +X350520Y287020D01* +X398780Y287020D01* +X406400Y294640D02* +X406400Y297010D01* +X406400Y294640D02* +X398780Y287020D01* +D32* +X542720Y81940D02* +X543180Y81480D01* +X543180Y63500D01* +X576580Y48260D02* +X588900Y48260D01* +X576580Y48260D02* +X548260Y48260D01* +X543180Y53340D02* +X543180Y63500D01* +X543180Y53340D02* +X548260Y48260D01* +X542060Y81280D02* +X542720Y81940D01* +X542060Y81280D02* +X528320Y81280D01* +D33* +X528320Y81280D03* +D32* +X400050Y90170D02* +X367030Y90170D01* +X355600Y78740D01* +X355600Y66420D01* +X971550Y90170D02* +X1002030Y90170D01* +X1016000Y76200D01* +X1016000Y66420D01* +X1031240Y71120D02* +X1031240Y86190D01* +X1031240Y71120D02* +X1026160Y66040D01* +X1016380Y66040D01* +X1016000Y66420D01* +X576580Y63120D02* +X576580Y48260D01* +D39* +X494920Y104140D02* +X477140Y104140D01* +X464440Y91440D01* +X400050Y91440D01* +X400050Y90170D01* +D34* +X776224Y82804D02* +X786130Y82804D01* +X622300Y45720D02* +X596900Y20320D01* +X622300Y45720D02* +X739140Y45720D01* +X776224Y82804D01* +D32* +X604690Y75730D02* +X604520Y75900D01* +X604690Y75730D02* +X604690Y63500D01* +X604900Y63500D02* +X604900Y48260D01* +X604900Y63500D02* +X604690Y63500D01* +D34* +X622470Y116840D02* +X678560Y116840D01* +X690880Y104520D01* +X690880Y91820D01* +D32* +X703580Y91820D01* +X711200Y76200D02* +X715900Y71500D01* +X715900Y55880D01* +X690880Y91820D02* +X674020Y91820D01* +X671860Y93980D01* +X711200Y84200D02* +X711200Y76200D01* +X711200Y84200D02* +X703580Y91820D01* +D34* +X769072Y306434D02* +X790846Y306434D01* +X835660Y261620D02* +X850730Y261620D01* +X835660Y261620D02* +X790846Y306434D01* +X850730Y248920D02* +X728980Y248920D01* +X688340Y289560D02* +X688340Y302260D01* +X692812Y306732D01* +X694046Y306732D01* +X688340Y289560D02* +X728980Y248920D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_drills.xln b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_drills.xln new file mode 100644 index 0000000000..43cf8bdd50 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_drills.xln @@ -0,0 +1,185 @@ +M48 +;GenerationSoftware,Autodesk,EAGLE,9.4.1*% +;CreationDate,2019-06-03T02:11:10Z*% +FMAT,2 +ICI,OFF +METRIC,TZ,000.000 +T11C0.305 +T10C0.350 +T9C0.508 +T8C0.550 +T7C0.900 +T6C1.016 +T5C1.400 +T4C1.600 +T3C3.300 +T2C3.302 +T1C5.080 +% +G90 +M71 +T1 +X5080Y15240 +X132080Y15240 +T2 +X7620Y8890 +X7620Y3175 +X129540Y3175 +X129540Y8890 +T3 +X22859Y13590 +X22859Y25020 +T4 +X25909Y11430 +X25909Y27180 +T5 +X90805Y5842 +X97155Y9017 +X97155Y2667 +X46355Y5842 +X40005Y9017 +X40005Y2667 +T6 +X71120Y7620 +X73660Y7620 +X57150Y2032 +X59690Y2032 +X62230Y2032 +X64770Y2032 +X67310Y2032 +X69850Y2032 +X72390Y2032 +X74930Y2032 +X77470Y2032 +X80010Y2032 +T7 +X29209Y18670 +X31749Y17400 +X29209Y16130 +X31749Y14860 +X31749Y19940 +X29209Y21210 +X31749Y22480 +X29209Y23750 +X19480Y12979 +X17960Y25629 +X19481Y23090 +X17961Y15520 +T8 +X49060Y12188 +T9 +X13835Y29212 +X13835Y35812 +T10 +X119380Y27940 +X51816Y23949 +X120650Y20320 +X56388Y21161 +X50280Y16291 +X102362Y17526 +X120650Y24130 +X49982Y23114 +X120650Y21844 +X49019Y23117 +X120650Y27940 +X48260Y23876 +X107442Y19050 +X56633Y20201 +X107442Y17780 +X58166Y20320 +X108204Y16764 +X55372Y20320 +X116586Y27686 +X39624Y35060 +X115570Y26670 +X41402Y34290 +X122215Y12192 +X90576Y16358 +X98298Y17272 +X75946Y16002 +X91948Y14478 +X114300Y15494 +X97282Y16510 +X92456Y17526 +X99568Y18288 +X71120Y17018 +X90932Y17526 +X68072Y5842 +X112268Y14732 +X88900Y16510 +X116078Y16764 +X90678Y14224 +X27686Y28702 +X29718Y28702 +X31750Y33528 +X18034Y36582 +X120650Y18034 +X102362Y16510 +X28702Y30480 +X25146Y30480 +X40640Y31750 +X85598Y4826 +X54102Y17018 +X46990Y25654 +X54820Y22142 +X66802Y15491 +X84836Y15240 +X54356Y13462 +X39370Y31750 +X70413Y15803 +X56134Y7620 +X46482Y22860 +X42418Y25908 +X46228Y14732 +X40190Y33528 +X45195Y29193 +X19050Y34290 +X32512Y29972 +X34290Y37084 +X55626Y27940 +X51562Y27940 +X52832Y8128 +X32766Y35306 +X69088Y5334 +X70104Y5842 +X69088Y6350 +X46990Y16764 +X50038Y13462 +X55626Y18034 +X120650Y30480 +X105156Y7620 +X87376Y6604 +X83058Y8382 +X49784Y26924 +X34798Y17272 +X17780Y30988 +X107188Y30226 +X96012Y24130 +X95250Y28194 +X95250Y29718 +X86106Y27432 +X65786Y14224 +X112776Y19812 +X108204Y10668 +X96012Y12192 +X93980Y24130 +X88646Y14986 +T11 +X49530Y19304 +X48768Y18542 +X50292Y18542 +X50292Y20066 +X48768Y20066 +X99314Y29464 +X86856Y24118 +X75438Y12700 +X100584Y29464 +X117856Y28956 +X87630Y25146 +X122174Y9906 +X44311Y19927 +X44958Y20574 +X44958Y18034 +X44311Y18681 +X124612Y16002 +M30 \ No newline at end of file diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_profile.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_profile.gbr new file mode 100644 index 0000000000..013e9cad9c --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_profile.gbr @@ -0,0 +1,982 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%IN*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.508000*% +%ADD11C,0.254000*% + + +D10* +X140970Y358120D02* +X133350Y358120D01* +X133350Y292120D02* +X140970Y292120D01* +D11* +X0Y25400D02* +X97Y23186D01* +X386Y20989D01* +X865Y18826D01* +X1532Y16713D01* +X2380Y14666D01* +X3403Y12700D01* +X4594Y10831D01* +X5942Y9073D01* +X7440Y7440D01* +X9073Y5942D01* +X10831Y4594D01* +X12700Y3403D01* +X14666Y2380D01* +X16713Y1532D01* +X18826Y865D01* +X20989Y386D01* +X23186Y97D01* +X25400Y0D01* +X1346200Y0D01* +X1348414Y97D01* +X1350611Y386D01* +X1352774Y865D01* +X1354887Y1532D01* +X1356935Y2380D01* +X1358900Y3403D01* +X1360769Y4594D01* +X1362527Y5942D01* +X1364161Y7440D01* +X1365658Y9073D01* +X1367006Y10831D01* +X1368197Y12700D01* +X1369220Y14666D01* +X1370068Y16713D01* +X1370735Y18826D01* +X1371214Y20989D01* +X1371503Y23186D01* +X1371600Y25400D01* +X1371600Y177800D01* +X1371503Y180014D01* +X1371214Y182211D01* +X1370735Y184374D01* +X1370068Y186487D01* +X1369220Y188535D01* +X1368197Y190500D01* +X1367006Y192369D01* +X1365658Y194127D01* +X1364161Y195761D01* +X1362527Y197258D01* +X1360769Y198606D01* +X1358900Y199797D01* +X1356935Y200820D01* +X1354887Y201668D01* +X1352774Y202335D01* +X1350611Y202814D01* +X1348414Y203103D01* +X1346200Y203200D01* +X1282700Y203200D01* +X1280486Y203297D01* +X1278289Y203586D01* +X1276126Y204065D01* +X1274013Y204732D01* +X1271966Y205580D01* +X1270000Y206603D01* +X1268131Y207794D01* +X1266373Y209142D01* +X1264740Y210640D01* +X1263242Y212273D01* +X1261894Y214031D01* +X1260703Y215900D01* +X1259680Y217866D01* +X1258832Y219913D01* +X1258165Y222026D01* +X1257686Y224189D01* +X1257397Y226386D01* +X1257300Y228600D01* +X1257300Y355600D01* +X1257203Y357814D01* +X1256914Y360011D01* +X1256435Y362174D01* +X1255768Y364287D01* +X1254920Y366335D01* +X1253897Y368300D01* +X1252706Y370169D01* +X1251358Y371927D01* +X1249861Y373561D01* +X1248227Y375058D01* +X1246469Y376406D01* +X1244600Y377597D01* +X1242635Y378620D01* +X1240587Y379468D01* +X1238474Y380135D01* +X1236311Y380614D01* +X1234114Y380903D01* +X1231900Y381000D01* +X139700Y381000D01* +X137486Y380903D01* +X135289Y380614D01* +X133126Y380135D01* +X131013Y379468D01* +X128966Y378620D01* +X127000Y377597D01* +X125131Y376406D01* +X123373Y375058D01* +X121740Y373561D01* +X120242Y371927D01* +X118894Y370169D01* +X117703Y368300D01* +X116680Y366335D01* +X115832Y364287D01* +X115165Y362174D01* +X114686Y360011D01* +X114397Y357814D01* +X114300Y355600D01* +X114300Y228600D01* +X114203Y226386D01* +X113914Y224189D01* +X113435Y222026D01* +X112768Y219913D01* +X111920Y217866D01* +X110897Y215900D01* +X109706Y214031D01* +X108358Y212273D01* +X106861Y210640D01* +X105227Y209142D01* +X103469Y207794D01* +X101600Y206603D01* +X99635Y205580D01* +X97587Y204732D01* +X95474Y204065D01* +X93311Y203586D01* +X91114Y203297D01* +X88900Y203200D01* +X25400Y203200D01* +X23186Y203103D01* +X20989Y202814D01* +X18826Y202335D01* +X16713Y201668D01* +X14666Y200820D01* +X12700Y199797D01* +X10831Y198606D01* +X9073Y197258D01* +X7440Y195761D01* +X5942Y194127D01* +X4594Y192369D01* +X3403Y190500D01* +X2380Y188535D01* +X1532Y186487D01* +X865Y184374D01* +X386Y182211D01* +X97Y180014D01* +X0Y177800D01* +X0Y25400D01* +X76200Y151687D02* +X76120Y150264D01* +X75961Y148848D01* +X75722Y147443D01* +X75405Y146053D01* +X75010Y144684D01* +X74539Y143338D01* +X73994Y142021D01* +X73375Y140737D01* +X72686Y139490D01* +X71928Y138283D01* +X71103Y137121D01* +X70214Y136006D01* +X69264Y134943D01* +X68257Y133936D01* +X67194Y132986D01* +X66079Y132097D01* +X64917Y131272D01* +X63710Y130514D01* +X62463Y129825D01* +X61179Y129206D01* +X59862Y128661D01* +X58516Y128190D01* +X57147Y127795D01* +X55757Y127478D01* +X54352Y127240D01* +X52936Y127080D01* +X51513Y127000D01* +X50087Y127000D01* +X48664Y127080D01* +X47248Y127240D01* +X45843Y127478D01* +X44453Y127795D01* +X43084Y128190D01* +X41738Y128661D01* +X40421Y129206D01* +X39137Y129825D01* +X37890Y130514D01* +X36683Y131272D01* +X35521Y132097D01* +X34406Y132986D01* +X33343Y133936D01* +X32336Y134943D01* +X31386Y136006D01* +X30497Y137121D01* +X29672Y138283D01* +X28914Y139490D01* +X28225Y140737D01* +X27606Y142021D01* +X27061Y143338D01* +X26590Y144684D01* +X26195Y146053D01* +X25878Y147443D01* +X25640Y148848D01* +X25480Y150264D01* +X25400Y151687D01* +X25400Y153113D01* +X25480Y154536D01* +X25640Y155952D01* +X25878Y157357D01* +X26195Y158747D01* +X26590Y160116D01* +X27061Y161462D01* +X27606Y162779D01* +X28225Y164063D01* +X28914Y165310D01* +X29672Y166517D01* +X30497Y167679D01* +X31386Y168794D01* +X32336Y169857D01* +X33343Y170864D01* +X34406Y171814D01* +X35521Y172703D01* +X36683Y173528D01* +X37890Y174286D01* +X39137Y174975D01* +X40421Y175594D01* +X41738Y176139D01* +X43084Y176610D01* +X44453Y177005D01* +X45843Y177322D01* +X47248Y177561D01* +X48664Y177720D01* +X50087Y177800D01* +X51513Y177800D01* +X52936Y177720D01* +X54352Y177561D01* +X55757Y177322D01* +X57147Y177005D01* +X58516Y176610D01* +X59862Y176139D01* +X61179Y175594D01* +X62463Y174975D01* +X63710Y174286D01* +X64917Y173528D01* +X66079Y172703D01* +X67194Y171814D01* +X68257Y170864D01* +X69264Y169857D01* +X70214Y168794D01* +X71103Y167679D01* +X71928Y166517D01* +X72686Y165310D01* +X73375Y164063D01* +X73994Y162779D01* +X74539Y161462D01* +X75010Y160116D01* +X75405Y158747D01* +X75722Y157357D01* +X75961Y155952D01* +X76120Y154536D01* +X76200Y153113D01* +X76200Y151687D01* +X1346200Y151687D02* +X1346120Y150264D01* +X1345961Y148848D01* +X1345722Y147443D01* +X1345405Y146053D01* +X1345010Y144684D01* +X1344539Y143338D01* +X1343994Y142021D01* +X1343375Y140737D01* +X1342686Y139490D01* +X1341928Y138283D01* +X1341103Y137121D01* +X1340214Y136006D01* +X1339264Y134943D01* +X1338257Y133936D01* +X1337194Y132986D01* +X1336079Y132097D01* +X1334917Y131272D01* +X1333710Y130514D01* +X1332463Y129825D01* +X1331179Y129206D01* +X1329862Y128661D01* +X1328516Y128190D01* +X1327147Y127795D01* +X1325757Y127478D01* +X1324352Y127240D01* +X1322936Y127080D01* +X1321513Y127000D01* +X1320087Y127000D01* +X1318664Y127080D01* +X1317248Y127240D01* +X1315843Y127478D01* +X1314453Y127795D01* +X1313084Y128190D01* +X1311738Y128661D01* +X1310421Y129206D01* +X1309137Y129825D01* +X1307890Y130514D01* +X1306683Y131272D01* +X1305521Y132097D01* +X1304406Y132986D01* +X1303343Y133936D01* +X1302336Y134943D01* +X1301386Y136006D01* +X1300497Y137121D01* +X1299672Y138283D01* +X1298914Y139490D01* +X1298225Y140737D01* +X1297606Y142021D01* +X1297061Y143338D01* +X1296590Y144684D01* +X1296195Y146053D01* +X1295878Y147443D01* +X1295640Y148848D01* +X1295480Y150264D01* +X1295400Y151687D01* +X1295400Y153113D01* +X1295480Y154536D01* +X1295640Y155952D01* +X1295878Y157357D01* +X1296195Y158747D01* +X1296590Y160116D01* +X1297061Y161462D01* +X1297606Y162779D01* +X1298225Y164063D01* +X1298914Y165310D01* +X1299672Y166517D01* +X1300497Y167679D01* +X1301386Y168794D01* +X1302336Y169857D01* +X1303343Y170864D01* +X1304406Y171814D01* +X1305521Y172703D01* +X1306683Y173528D01* +X1307890Y174286D01* +X1309137Y174975D01* +X1310421Y175594D01* +X1311738Y176139D01* +X1313084Y176610D01* +X1314453Y177005D01* +X1315843Y177322D01* +X1317248Y177561D01* +X1318664Y177720D01* +X1320087Y177800D01* +X1321513Y177800D01* +X1322936Y177720D01* +X1324352Y177561D01* +X1325757Y177322D01* +X1327147Y177005D01* +X1328516Y176610D01* +X1329862Y176139D01* +X1331179Y175594D01* +X1332463Y174975D01* +X1333710Y174286D01* +X1334917Y173528D01* +X1336079Y172703D01* +X1337194Y171814D01* +X1338257Y170864D01* +X1339264Y169857D01* +X1340214Y168794D01* +X1341103Y167679D01* +X1341928Y166517D01* +X1342686Y165310D01* +X1343375Y164063D01* +X1343994Y162779D01* +X1344539Y161462D01* +X1345010Y160116D01* +X1345405Y158747D01* +X1345722Y157357D01* +X1345961Y155952D01* +X1346120Y154536D01* +X1346200Y153113D01* +X1346200Y151687D01* +X92710Y88360D02* +X92639Y87281D01* +X92498Y86209D01* +X92287Y85149D01* +X92008Y84105D01* +X91660Y83081D01* +X91246Y82083D01* +X90768Y81113D01* +X90228Y80177D01* +X89627Y79278D01* +X88969Y78421D01* +X88257Y77608D01* +X87492Y76844D01* +X86679Y76131D01* +X85822Y75473D01* +X84923Y74872D01* +X83987Y74332D01* +X83017Y73854D01* +X82019Y73440D01* +X80995Y73092D01* +X79951Y72813D01* +X78891Y72602D01* +X77819Y72461D01* +X76740Y72390D01* +X75660Y72390D01* +X74581Y72461D01* +X73509Y72602D01* +X72449Y72813D01* +X71405Y73092D01* +X70381Y73440D01* +X69383Y73854D01* +X68413Y74332D01* +X67477Y74872D01* +X66578Y75473D01* +X65721Y76131D01* +X64908Y76844D01* +X64144Y77608D01* +X63431Y78421D01* +X62773Y79278D01* +X62172Y80177D01* +X61632Y81113D01* +X61154Y82083D01* +X60740Y83081D01* +X60392Y84105D01* +X60113Y85149D01* +X59902Y86209D01* +X59761Y87281D01* +X59690Y88360D01* +X59690Y89440D01* +X59761Y90519D01* +X59902Y91591D01* +X60113Y92651D01* +X60392Y93695D01* +X60740Y94719D01* +X61154Y95717D01* +X61632Y96687D01* +X62172Y97623D01* +X62773Y98522D01* +X63431Y99379D01* +X64144Y100192D01* +X64908Y100957D01* +X65721Y101669D01* +X66578Y102327D01* +X67477Y102928D01* +X68413Y103468D01* +X69383Y103946D01* +X70381Y104360D01* +X71405Y104708D01* +X72449Y104987D01* +X73509Y105198D01* +X74581Y105339D01* +X75660Y105410D01* +X76740Y105410D01* +X77819Y105339D01* +X78891Y105198D01* +X79951Y104987D01* +X80995Y104708D01* +X82019Y104360D01* +X83017Y103946D01* +X83987Y103468D01* +X84923Y102928D01* +X85822Y102327D01* +X86679Y101669D01* +X87492Y100957D01* +X88257Y100192D01* +X88969Y99379D01* +X89627Y98522D01* +X90228Y97623D01* +X90768Y96687D01* +X91246Y95717D01* +X91660Y94719D01* +X92008Y93695D01* +X92287Y92651D01* +X92498Y91591D01* +X92639Y90519D01* +X92710Y89440D01* +X92710Y88360D01* +X92710Y31210D02* +X92639Y30131D01* +X92498Y29059D01* +X92287Y27999D01* +X92008Y26955D01* +X91660Y25931D01* +X91246Y24933D01* +X90768Y23963D01* +X90228Y23027D01* +X89627Y22128D01* +X88969Y21271D01* +X88257Y20458D01* +X87492Y19694D01* +X86679Y18981D01* +X85822Y18323D01* +X84923Y17722D01* +X83987Y17182D01* +X83017Y16704D01* +X82019Y16290D01* +X80995Y15942D01* +X79951Y15663D01* +X78891Y15452D01* +X77819Y15311D01* +X76740Y15240D01* +X75660Y15240D01* +X74581Y15311D01* +X73509Y15452D01* +X72449Y15663D01* +X71405Y15942D01* +X70381Y16290D01* +X69383Y16704D01* +X68413Y17182D01* +X67477Y17722D01* +X66578Y18323D01* +X65721Y18981D01* +X64908Y19694D01* +X64144Y20458D01* +X63431Y21271D01* +X62773Y22128D01* +X62172Y23027D01* +X61632Y23963D01* +X61154Y24933D01* +X60740Y25931D01* +X60392Y26955D01* +X60113Y27999D01* +X59902Y29059D01* +X59761Y30131D01* +X59690Y31210D01* +X59690Y32290D01* +X59761Y33369D01* +X59902Y34441D01* +X60113Y35501D01* +X60392Y36545D01* +X60740Y37569D01* +X61154Y38567D01* +X61632Y39537D01* +X62172Y40473D01* +X62773Y41372D01* +X63431Y42229D01* +X64144Y43042D01* +X64908Y43807D01* +X65721Y44519D01* +X66578Y45177D01* +X67477Y45778D01* +X68413Y46318D01* +X69383Y46796D01* +X70381Y47210D01* +X71405Y47558D01* +X72449Y47837D01* +X73509Y48048D01* +X74581Y48189D01* +X75660Y48260D01* +X76740Y48260D01* +X77819Y48189D01* +X78891Y48048D01* +X79951Y47837D01* +X80995Y47558D01* +X82019Y47210D01* +X83017Y46796D01* +X83987Y46318D01* +X84923Y45778D01* +X85822Y45177D01* +X86679Y44519D01* +X87492Y43807D01* +X88257Y43042D01* +X88969Y42229D01* +X89627Y41372D01* +X90228Y40473D01* +X90768Y39537D01* +X91246Y38567D01* +X91660Y37569D01* +X92008Y36545D01* +X92287Y35501D01* +X92498Y34441D01* +X92639Y33369D01* +X92710Y32290D01* +X92710Y31210D01* +X1311910Y31210D02* +X1311839Y30131D01* +X1311698Y29059D01* +X1311487Y27999D01* +X1311208Y26955D01* +X1310860Y25931D01* +X1310446Y24933D01* +X1309968Y23963D01* +X1309428Y23027D01* +X1308827Y22128D01* +X1308169Y21271D01* +X1307457Y20458D01* +X1306692Y19694D01* +X1305879Y18981D01* +X1305022Y18323D01* +X1304123Y17722D01* +X1303187Y17182D01* +X1302217Y16704D01* +X1301219Y16290D01* +X1300195Y15942D01* +X1299151Y15663D01* +X1298091Y15452D01* +X1297019Y15311D01* +X1295940Y15240D01* +X1294860Y15240D01* +X1293781Y15311D01* +X1292709Y15452D01* +X1291649Y15663D01* +X1290605Y15942D01* +X1289581Y16290D01* +X1288583Y16704D01* +X1287613Y17182D01* +X1286677Y17722D01* +X1285778Y18323D01* +X1284921Y18981D01* +X1284108Y19694D01* +X1283344Y20458D01* +X1282631Y21271D01* +X1281973Y22128D01* +X1281372Y23027D01* +X1280832Y23963D01* +X1280354Y24933D01* +X1279940Y25931D01* +X1279592Y26955D01* +X1279313Y27999D01* +X1279102Y29059D01* +X1278961Y30131D01* +X1278890Y31210D01* +X1278890Y32290D01* +X1278961Y33369D01* +X1279102Y34441D01* +X1279313Y35501D01* +X1279592Y36545D01* +X1279940Y37569D01* +X1280354Y38567D01* +X1280832Y39537D01* +X1281372Y40473D01* +X1281973Y41372D01* +X1282631Y42229D01* +X1283344Y43042D01* +X1284108Y43807D01* +X1284921Y44519D01* +X1285778Y45177D01* +X1286677Y45778D01* +X1287613Y46318D01* +X1288583Y46796D01* +X1289581Y47210D01* +X1290605Y47558D01* +X1291649Y47837D01* +X1292709Y48048D01* +X1293781Y48189D01* +X1294860Y48260D01* +X1295940Y48260D01* +X1297019Y48189D01* +X1298091Y48048D01* +X1299151Y47837D01* +X1300195Y47558D01* +X1301219Y47210D01* +X1302217Y46796D01* +X1303187Y46318D01* +X1304123Y45778D01* +X1305022Y45177D01* +X1305879Y44519D01* +X1306692Y43807D01* +X1307457Y43042D01* +X1308169Y42229D01* +X1308827Y41372D01* +X1309428Y40473D01* +X1309968Y39537D01* +X1310446Y38567D01* +X1310860Y37569D01* +X1311208Y36545D01* +X1311487Y35501D01* +X1311698Y34441D01* +X1311839Y33369D01* +X1311910Y32290D01* +X1311910Y31210D01* +X1311910Y88360D02* +X1311839Y87281D01* +X1311698Y86209D01* +X1311487Y85149D01* +X1311208Y84105D01* +X1310860Y83081D01* +X1310446Y82083D01* +X1309968Y81113D01* +X1309428Y80177D01* +X1308827Y79278D01* +X1308169Y78421D01* +X1307457Y77608D01* +X1306692Y76844D01* +X1305879Y76131D01* +X1305022Y75473D01* +X1304123Y74872D01* +X1303187Y74332D01* +X1302217Y73854D01* +X1301219Y73440D01* +X1300195Y73092D01* +X1299151Y72813D01* +X1298091Y72602D01* +X1297019Y72461D01* +X1295940Y72390D01* +X1294860Y72390D01* +X1293781Y72461D01* +X1292709Y72602D01* +X1291649Y72813D01* +X1290605Y73092D01* +X1289581Y73440D01* +X1288583Y73854D01* +X1287613Y74332D01* +X1286677Y74872D01* +X1285778Y75473D01* +X1284921Y76131D01* +X1284108Y76844D01* +X1283344Y77608D01* +X1282631Y78421D01* +X1281973Y79278D01* +X1281372Y80177D01* +X1280832Y81113D01* +X1280354Y82083D01* +X1279940Y83081D01* +X1279592Y84105D01* +X1279313Y85149D01* +X1279102Y86209D01* +X1278961Y87281D01* +X1278890Y88360D01* +X1278890Y89440D01* +X1278961Y90519D01* +X1279102Y91591D01* +X1279313Y92651D01* +X1279592Y93695D01* +X1279940Y94719D01* +X1280354Y95717D01* +X1280832Y96687D01* +X1281372Y97623D01* +X1281973Y98522D01* +X1282631Y99379D01* +X1283344Y100192D01* +X1284108Y100957D01* +X1284921Y101669D01* +X1285778Y102327D01* +X1286677Y102928D01* +X1287613Y103468D01* +X1288583Y103946D01* +X1289581Y104360D01* +X1290605Y104708D01* +X1291649Y104987D01* +X1292709Y105198D01* +X1293781Y105339D01* +X1294860Y105410D01* +X1295940Y105410D01* +X1297019Y105339D01* +X1298091Y105198D01* +X1299151Y104987D01* +X1300195Y104708D01* +X1301219Y104360D01* +X1302217Y103946D01* +X1303187Y103468D01* +X1304123Y102928D01* +X1305022Y102327D01* +X1305879Y101669D01* +X1306692Y100957D01* +X1307457Y100192D01* +X1308169Y99379D01* +X1308827Y98522D01* +X1309428Y97623D01* +X1309968Y96687D01* +X1310446Y95717D01* +X1310860Y94719D01* +X1311208Y93695D01* +X1311487Y92651D01* +X1311698Y91591D01* +X1311839Y90519D01* +X1311910Y89440D01* +X1311910Y88360D01* +X228049Y119398D02* +X226971Y119469D01* +X225900Y119610D01* +X224841Y119820D01* +X223797Y120100D01* +X222774Y120447D01* +X221776Y120861D01* +X220807Y121338D01* +X219872Y121879D01* +X218974Y122479D01* +X218117Y123136D01* +X217304Y123849D01* +X216540Y124613D01* +X215828Y125425D01* +X215170Y126282D01* +X214570Y127180D01* +X214030Y128116D01* +X213552Y129085D01* +X213139Y130083D01* +X212792Y131106D01* +X212512Y132149D01* +X212301Y133209D01* +X212160Y134280D01* +X212090Y135358D01* +X212090Y136438D01* +X212160Y137516D01* +X212301Y138587D01* +X212512Y139647D01* +X212792Y140690D01* +X213139Y141713D01* +X213552Y142711D01* +X214030Y143680D01* +X214570Y144616D01* +X215170Y145514D01* +X215828Y146371D01* +X216540Y147183D01* +X217304Y147947D01* +X218117Y148659D01* +X218974Y149317D01* +X219872Y149917D01* +X220807Y150457D01* +X221776Y150935D01* +X222774Y151349D01* +X223797Y151696D01* +X224841Y151976D01* +X225900Y152186D01* +X226971Y152327D01* +X228049Y152398D01* +X229130Y152398D01* +X230208Y152327D01* +X231279Y152186D01* +X232338Y151976D01* +X233382Y151696D01* +X234405Y151349D01* +X235403Y150935D01* +X236372Y150457D01* +X237307Y149917D01* +X238206Y149317D01* +X239063Y148659D01* +X239875Y147947D01* +X240639Y147183D01* +X241351Y146371D01* +X242009Y145514D01* +X242609Y144616D01* +X243149Y143680D01* +X243627Y142711D01* +X244040Y141713D01* +X244388Y140690D01* +X244667Y139647D01* +X244878Y138587D01* +X245019Y137516D01* +X245090Y136438D01* +X245090Y135358D01* +X245019Y134280D01* +X244878Y133209D01* +X244667Y132149D01* +X244388Y131106D01* +X244040Y130083D01* +X243627Y129085D01* +X243149Y128116D01* +X242609Y127180D01* +X242009Y126282D01* +X241351Y125425D01* +X240639Y124613D01* +X239875Y123849D01* +X239063Y123136D01* +X238206Y122479D01* +X237307Y121879D01* +X236372Y121338D01* +X235403Y120861D01* +X234405Y120447D01* +X233382Y120100D01* +X232338Y119820D01* +X231279Y119610D01* +X230208Y119469D01* +X229130Y119398D01* +X228049Y119398D01* +X228049Y233698D02* +X226971Y233769D01* +X225900Y233910D01* +X224841Y234120D01* +X223797Y234400D01* +X222774Y234747D01* +X221776Y235161D01* +X220807Y235638D01* +X219872Y236179D01* +X218974Y236779D01* +X218117Y237436D01* +X217304Y238149D01* +X216540Y238913D01* +X215828Y239725D01* +X215170Y240582D01* +X214570Y241480D01* +X214030Y242416D01* +X213552Y243385D01* +X213139Y244383D01* +X212792Y245406D01* +X212512Y246449D01* +X212301Y247509D01* +X212160Y248580D01* +X212090Y249658D01* +X212090Y250738D01* +X212160Y251816D01* +X212301Y252887D01* +X212512Y253947D01* +X212792Y254990D01* +X213139Y256013D01* +X213552Y257011D01* +X214030Y257980D01* +X214570Y258916D01* +X215170Y259814D01* +X215828Y260671D01* +X216540Y261483D01* +X217304Y262247D01* +X218117Y262959D01* +X218974Y263617D01* +X219872Y264217D01* +X220807Y264757D01* +X221776Y265235D01* +X222774Y265649D01* +X223797Y265996D01* +X224841Y266276D01* +X225900Y266486D01* +X226971Y266627D01* +X228049Y266698D01* +X229130Y266698D01* +X230208Y266627D01* +X231279Y266486D01* +X232338Y266276D01* +X233382Y265996D01* +X234405Y265649D01* +X235403Y265235D01* +X236372Y264757D01* +X237307Y264217D01* +X238206Y263617D01* +X239063Y262959D01* +X239875Y262247D01* +X240639Y261483D01* +X241351Y260671D01* +X242009Y259814D01* +X242609Y258916D01* +X243149Y257980D01* +X243627Y257011D01* +X244040Y256013D01* +X244388Y254990D01* +X244667Y253947D01* +X244878Y252887D01* +X245019Y251816D01* +X245090Y250738D01* +X245090Y249658D01* +X245019Y248580D01* +X244878Y247509D01* +X244667Y246449D01* +X244388Y245406D01* +X244040Y244383D01* +X243627Y243385D01* +X243149Y242416D01* +X242609Y241480D01* +X242009Y240582D01* +X241351Y239725D01* +X240639Y238913D01* +X239875Y238149D01* +X239063Y237436D01* +X238206Y236779D01* +X237307Y236179D01* +X236372Y235638D01* +X235403Y235161D01* +X234405Y234747D01* +X233382Y234400D01* +X232338Y234120D01* +X231279Y233910D01* +X230208Y233769D01* +X229130Y233698D01* +X228049Y233698D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_silkscreen_bottom.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_silkscreen_bottom.gbr new file mode 100644 index 0000000000..86d5169e21 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_silkscreen_bottom.gbr @@ -0,0 +1,274 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSilkscreen Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.177800*% +%ADD11C,0.203200*% + + +D10* +X888936Y19431D02* +X888936Y10936D01* +X888938Y10838D01* +X888944Y10741D01* +X888954Y10643D01* +X888967Y10547D01* +X888985Y10451D01* +X889007Y10355D01* +X889032Y10261D01* +X889061Y10167D01* +X889094Y10075D01* +X889130Y9985D01* +X889170Y9896D01* +X889214Y9808D01* +X889261Y9723D01* +X889312Y9639D01* +X889366Y9557D01* +X889423Y9478D01* +X889483Y9401D01* +X889546Y9327D01* +X889613Y9255D01* +X889682Y9186D01* +X889754Y9119D01* +X889828Y9056D01* +X889905Y8996D01* +X889984Y8939D01* +X890066Y8885D01* +X890150Y8834D01* +X890235Y8787D01* +X890323Y8743D01* +X890412Y8703D01* +X890502Y8667D01* +X890594Y8634D01* +X890688Y8605D01* +X890782Y8580D01* +X890878Y8558D01* +X890974Y8540D01* +X891070Y8527D01* +X891168Y8517D01* +X891265Y8511D01* +X891363Y8509D01* +X892577Y8509D01* +X879920Y19432D02* +X879818Y19430D01* +X879716Y19424D01* +X879614Y19415D01* +X879513Y19401D01* +X879412Y19384D01* +X879312Y19364D01* +X879213Y19339D01* +X879115Y19311D01* +X879018Y19279D01* +X878922Y19243D01* +X878828Y19204D01* +X878735Y19162D01* +X878644Y19116D01* +X878555Y19066D01* +X878467Y19013D01* +X878382Y18957D01* +X878298Y18898D01* +X878217Y18836D01* +X878139Y18771D01* +X878062Y18703D01* +X877989Y18632D01* +X877918Y18559D01* +X877850Y18482D01* +X877785Y18404D01* +X877723Y18323D01* +X877664Y18239D01* +X877608Y18154D01* +X877555Y18066D01* +X877505Y17977D01* +X877459Y17886D01* +X877417Y17793D01* +X877378Y17699D01* +X877342Y17603D01* +X877310Y17506D01* +X877282Y17408D01* +X877257Y17309D01* +X877237Y17209D01* +X877220Y17108D01* +X877206Y17007D01* +X877197Y16905D01* +X877191Y16803D01* +X877189Y16701D01* +X879920Y19431D02* +X880036Y19429D01* +X880152Y19423D01* +X880268Y19414D01* +X880383Y19400D01* +X880498Y19383D01* +X880612Y19362D01* +X880725Y19337D01* +X880838Y19309D01* +X880949Y19277D01* +X881060Y19241D01* +X881169Y19201D01* +X881277Y19158D01* +X881383Y19111D01* +X881488Y19061D01* +X881591Y19008D01* +X881692Y18951D01* +X881791Y18890D01* +X881888Y18827D01* +X881983Y18760D01* +X882076Y18690D01* +X882166Y18617D01* +X882254Y18542D01* +X882340Y18463D01* +X882422Y18381D01* +X882502Y18297D01* +X882580Y18211D01* +X882654Y18121D01* +X882725Y18030D01* +X882793Y17936D01* +X882858Y17839D01* +X882920Y17741D01* +X882979Y17641D01* +X883034Y17539D01* +X883086Y17435D01* +X883134Y17329D01* +X883179Y17222D01* +X883220Y17114D01* +X883257Y17004D01* +X878099Y14577D02* +X878026Y14650D01* +X877955Y14725D01* +X877887Y14802D01* +X877821Y14882D01* +X877759Y14964D01* +X877699Y15048D01* +X877642Y15135D01* +X877589Y15223D01* +X877538Y15313D01* +X877491Y15405D01* +X877447Y15498D01* +X877406Y15593D01* +X877369Y15690D01* +X877335Y15787D01* +X877305Y15886D01* +X877278Y15985D01* +X877254Y16086D01* +X877234Y16187D01* +X877218Y16289D01* +X877205Y16392D01* +X877196Y16495D01* +X877191Y16598D01* +X877189Y16701D01* +X878099Y14577D02* +X883257Y8509D01* +X877189Y8509D01* +D11* +X717042Y69596D02* +X717042Y80264D01* +X714079Y80264D01* +X713972Y80262D01* +X713865Y80256D01* +X713759Y80247D01* +X713653Y80233D01* +X713547Y80216D01* +X713442Y80195D01* +X713338Y80170D01* +X713235Y80141D01* +X713133Y80109D01* +X713032Y80073D01* +X712933Y80033D01* +X712835Y79990D01* +X712739Y79943D01* +X712644Y79893D01* +X712551Y79840D01* +X712461Y79783D01* +X712372Y79723D01* +X712286Y79660D01* +X712202Y79594D01* +X712120Y79524D01* +X712041Y79452D01* +X711965Y79377D01* +X711891Y79299D01* +X711821Y79219D01* +X711753Y79136D01* +X711688Y79051D01* +X711627Y78964D01* +X711568Y78874D01* +X711513Y78783D01* +X711461Y78689D01* +X711413Y78593D01* +X711368Y78496D01* +X711326Y78398D01* +X711289Y78298D01* +X711254Y78196D01* +X711224Y78094D01* +X711197Y77990D01* +X711174Y77886D01* +X711155Y77780D01* +X711140Y77674D01* +X711128Y77568D01* +X711120Y77461D01* +X711116Y77354D01* +X711116Y77248D01* +X711120Y77141D01* +X711128Y77034D01* +X711140Y76928D01* +X711155Y76822D01* +X711174Y76716D01* +X711197Y76612D01* +X711224Y76508D01* +X711254Y76406D01* +X711289Y76304D01* +X711326Y76204D01* +X711368Y76106D01* +X711413Y76009D01* +X711461Y75913D01* +X711513Y75820D01* +X711568Y75728D01* +X711627Y75638D01* +X711688Y75551D01* +X711753Y75466D01* +X711821Y75383D01* +X711891Y75303D01* +X711965Y75225D01* +X712041Y75150D01* +X712120Y75078D01* +X712202Y75008D01* +X712286Y74942D01* +X712372Y74879D01* +X712461Y74819D01* +X712551Y74762D01* +X712644Y74709D01* +X712739Y74659D01* +X712835Y74612D01* +X712933Y74569D01* +X713032Y74529D01* +X713133Y74493D01* +X713235Y74461D01* +X713338Y74432D01* +X713442Y74407D01* +X713547Y74386D01* +X713653Y74369D01* +X713759Y74355D01* +X713865Y74346D01* +X713972Y74340D01* +X714079Y74338D01* +X714079Y74337D02* +X717042Y74337D01* +X713486Y74337D02* +X711115Y69596D01* +X705722Y71967D02* +X703352Y80264D01* +X705722Y71967D02* +X699796Y71967D01* +X701574Y74337D02* +X701574Y69596D01* +X694293Y71967D02* +X691922Y80264D01* +X694293Y71967D02* +X688366Y71967D01* +X690144Y74337D02* +X690144Y69596D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_silkscreen_top.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_silkscreen_top.gbr new file mode 100644 index 0000000000..1c052b5994 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_silkscreen_top.gbr @@ -0,0 +1,28080 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSilkscreen Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.279400*% +%ADD11C,0.203200*% +%ADD12C,0.355600*% +%ADD13R,0.508000X0.254000*% +%ADD14C,0.152400*% +%ADD15R,0.762000X0.254000*% +%ADD16R,0.508000X1.270000*% +%ADD17R,0.254000X0.508000*% +%ADD18R,0.254000X0.762000*% +%ADD19R,0.508000X1.016000*% +%ADD20C,0.127000*% +%ADD21C,0.508000*% +%ADD22R,0.600000X1.000000*% +%ADD23C,0.200000*% +%ADD24R,0.762000X0.762000*% +%ADD25R,0.400000X1.000000*% +%ADD26R,1.016000X1.016000*% +%ADD27C,0.300000*% +%ADD28C,0.100000*% +%ADD29C,0.000000*% +%ADD30R,0.213359X0.071119*% +%ADD31R,0.711200X0.071122*% +%ADD32R,0.853441X0.071119*% +%ADD33R,1.066800X0.071119*% +%ADD34R,1.137922X0.071122*% +%ADD35R,1.280159X0.071119*% +%ADD36R,1.280159X0.071122*% +%ADD37R,1.422400X0.071119*% +%ADD38R,1.422400X0.071122*% +%ADD39R,0.426722X0.071122*% +%ADD40R,0.711200X0.071119*% +%ADD41R,0.497838X0.071119*% +%ADD42R,2.346959X0.071119*% +%ADD43R,0.782319X0.071119*% +%ADD44R,2.346959X0.071122*% +%ADD45R,0.924563X0.071122*% +%ADD46R,3.484881X0.071119*% +%ADD47R,3.627119X0.071122*% +%ADD48R,3.698241X0.071119*% +%ADD49R,3.769359X0.071122*% +%ADD50R,3.769359X0.071119*% +%ADD51R,3.840478X0.071122*% +%ADD52R,0.284481X0.071119*% +%ADD53R,3.840478X0.071119*% +%ADD54R,0.426722X0.071119*% +%ADD55R,0.853441X0.071122*% +%ADD56R,3.698241X0.071122*% +%ADD57R,5.618481X0.071119*% +%ADD58R,5.760719X0.071122*% +%ADD59R,5.902959X0.071119*% +%ADD60R,5.974078X0.071119*% +%ADD61R,6.045200X0.071122*% +%ADD62R,6.045200X0.071119*% +%ADD63R,6.116322X0.071122*% +%ADD64R,6.116322X0.071119*% +%ADD65R,0.568959X0.071122*% +%ADD66R,0.284481X0.071122*% +%ADD67R,0.782322X0.071119*% +%ADD68R,2.773678X0.071122*% +%ADD69R,0.853438X0.071122*% +%ADD70R,3.484878X0.071119*% +%ADD71R,3.413759X0.071119*% +%ADD72R,3.342641X0.071119*% +%ADD73R,3.271519X0.071119*% +%ADD74R,3.129281X0.071122*% +%ADD75R,3.058159X0.071119*% +%ADD76R,2.987041X0.071119*% +%ADD77R,2.987041X0.071122*% +%ADD78R,2.844800X0.071119*% +%ADD79R,2.773678X0.071119*% +%ADD80R,2.773681X0.071119*% +%ADD81R,2.631441X0.071122*% +%ADD82R,0.497841X0.071119*% +%ADD83R,2.560319X0.071119*% +%ADD84R,0.782319X0.071122*% +%ADD85R,2.489200X0.071122*% +%ADD86R,3.342638X0.071119*% +%ADD87R,1.137922X0.071119*% +%ADD88R,2.346963X0.071119*% +%ADD89R,3.413759X0.071122*% +%ADD90R,1.635759X0.071122*% +%ADD91R,3.342641X0.071122*% +%ADD92R,3.413763X0.071119*% +%ADD93R,1.849122X0.071119*% +%ADD94R,0.355600X0.071122*% +%ADD95R,3.271519X0.071122*% +%ADD96R,0.568963X0.071119*% +%ADD97R,0.355600X0.071119*% +%ADD98R,0.568959X0.071119*% +%ADD99R,3.271522X0.071119*% +%ADD100R,0.426719X0.071119*% +%ADD101R,3.200400X0.071122*% +%ADD102R,3.200400X0.071119*% +%ADD103R,0.284478X0.071122*% +%ADD104R,3.129278X0.071122*% +%ADD105R,3.129281X0.071119*% +%ADD106R,0.142241X0.071119*% +%ADD107R,0.142238X0.071119*% +%ADD108R,3.129278X0.071119*% +%ADD109R,3.058163X0.071119*% +%ADD110R,3.911600X0.071119*% +%ADD111R,3.911600X0.071122*% +%ADD112R,0.497841X0.071122*% +%ADD113R,3.982719X0.071119*% +%ADD114R,0.640078X0.071119*% +%ADD115R,4.053841X0.071119*% +%ADD116R,4.053841X0.071122*% +%ADD117R,3.982719X0.071122*% +%ADD118R,3.982722X0.071119*% +%ADD119R,0.924559X0.071119*% +%ADD120R,0.995678X0.071122*% +%ADD121R,0.640081X0.071119*% +%ADD122R,3.982722X0.071122*% +%ADD123R,0.284478X0.071119*% +%ADD124R,3.840481X0.071119*% +%ADD125R,4.693919X0.071119*% +%ADD126R,4.765038X0.071122*% +%ADD127R,4.693922X0.071122*% +%ADD128R,4.836159X0.071119*% +%ADD129R,4.765041X0.071119*% +%ADD130R,4.836159X0.071122*% +%ADD131R,4.765041X0.071122*% +%ADD132R,4.907281X0.071119*% +%ADD133R,4.836163X0.071122*% +%ADD134R,4.836163X0.071119*% +%ADD135R,4.765038X0.071119*% +%ADD136R,0.213363X0.071119*% +%ADD137R,4.693919X0.071122*% +%ADD138R,4.622800X0.071119*% +%ADD139R,0.782322X0.071122*% +%ADD140R,4.551681X0.071122*% +%ADD141R,4.622800X0.071122*% +%ADD142R,0.568963X0.071122*% +%ADD143R,5.547359X0.071119*% +%ADD144R,5.405119X0.071119*% +%ADD145R,5.405122X0.071119*% +%ADD146R,5.547359X0.071122*% +%ADD147R,5.476241X0.071122*% +%ADD148R,5.618478X0.071119*% +%ADD149R,5.547363X0.071119*% +%ADD150R,5.618478X0.071122*% +%ADD151R,5.547363X0.071122*% +%ADD152R,5.618481X0.071122*% +%ADD153R,5.476241X0.071119*% +%ADD154R,5.334000X0.071122*% +%ADD155R,5.334000X0.071119*% +%ADD156R,6.116319X0.071122*% +%ADD157R,5.191759X0.071122*% +%ADD158R,0.640078X0.071122*% +%ADD159R,5.974081X0.071119*% +%ADD160R,6.187441X0.071119*% +%ADD161R,6.258559X0.071122*% +%ADD162R,6.187438X0.071119*% +%ADD163R,6.187438X0.071122*% +%ADD164R,6.258559X0.071119*% +%ADD165R,6.116319X0.071119*% +%ADD166R,6.187441X0.071122*% +%ADD167R,5.974081X0.071122*% +%ADD168R,5.902959X0.071122*% +%ADD169R,6.471919X0.071122*% +%ADD170R,5.831838X0.071122*% +%ADD171R,0.071119X0.071122*% +%ADD172R,6.614159X0.071119*% +%ADD173R,6.329681X0.071119*% +%ADD174R,6.471919X0.071119*% +%ADD175R,6.614159X0.071122*% +%ADD176R,6.543041X0.071122*% +%ADD177R,6.685281X0.071119*% +%ADD178R,6.685278X0.071122*% +%ADD179R,6.685278X0.071119*% +%ADD180R,6.614162X0.071119*% +%ADD181R,6.543041X0.071119*% +%ADD182R,6.471922X0.071119*% +%ADD183R,6.471922X0.071122*% +%ADD184R,6.400800X0.071119*% +%ADD185R,0.213359X0.071122*% +%ADD186R,6.329678X0.071122*% +%ADD187R,6.969759X0.071119*% +%ADD188R,6.329678X0.071119*% +%ADD189R,7.040878X0.071119*% +%ADD190R,6.756400X0.071119*% +%ADD191R,7.040881X0.071122*% +%ADD192R,6.898641X0.071122*% +%ADD193R,7.112000X0.071119*% +%ADD194R,7.183122X0.071122*% +%ADD195R,6.969763X0.071119*% +%ADD196R,7.183119X0.071119*% +%ADD197R,7.040881X0.071119*% +%ADD198R,7.183119X0.071122*% +%ADD199R,7.112000X0.071122*% +%ADD200R,7.040878X0.071122*% +%ADD201R,6.969763X0.071122*% +%ADD202R,6.969759X0.071122*% +%ADD203R,6.898641X0.071119*% +%ADD204R,6.827519X0.071122*% +%ADD205R,6.827519X0.071119*% +%ADD206R,6.756400X0.071122*% +%ADD207R,7.254238X0.071119*% +%ADD208R,7.254238X0.071122*% +%ADD209R,7.254241X0.071119*% +%ADD210R,7.254241X0.071122*% +%ADD211R,7.183122X0.071119*% +%ADD212R,6.898638X0.071119*% +%ADD213R,7.325359X0.071122*% +%ADD214R,7.396478X0.071119*% +%ADD215R,7.325359X0.071119*% +%ADD216R,7.396481X0.071122*% +%ADD217R,7.396481X0.071119*% +%ADD218R,7.467600X0.071122*% +%ADD219R,7.467600X0.071119*% +%ADD220R,0.142241X0.071122*% +%ADD221R,0.142238X0.071122*% +%ADD222R,0.853438X0.071119*% +%ADD223R,0.924559X0.071122*% +%ADD224R,6.827522X0.071119*% +%ADD225R,3.484878X0.071122*% +%ADD226R,4.196081X0.071119*% +%ADD227R,4.338319X0.071122*% +%ADD228R,0.497838X0.071122*% +%ADD229R,4.551681X0.071119*% +%ADD230R,7.396478X0.071122*% +%ADD231R,4.907281X0.071122*% +%ADD232R,5.120637X0.071119*% +%ADD233R,5.262881X0.071122*% +%ADD234R,7.609838X0.071122*% +%ADD235R,15.433041X0.071119*% +%ADD236R,9.743438X0.071119*% +%ADD237R,1.564641X0.071119*% +%ADD238R,4.480559X0.071119*% +%ADD239R,11.734800X0.071122*% +%ADD240R,4.409441X0.071122*% +%ADD241R,11.734800X0.071119*% +%ADD242R,4.267200X0.071119*% +%ADD243R,4.480563X0.071122*% +%ADD244R,4.124959X0.071122*% +%ADD245R,4.338322X0.071119*% +%ADD246R,3.769363X0.071122*% +%ADD247R,3.556000X0.071119*% +%ADD248R,11.805919X0.071119*% +%ADD249R,11.805919X0.071122*% +%ADD250R,2.915922X0.071122*% +%ADD251R,2.915919X0.071119*% +%ADD252R,2.702559X0.071119*% +%ADD253R,2.062481X0.071119*% +%ADD254R,2.204719X0.071119*% +%ADD255R,1.991359X0.071119*% +%ADD256R,1.564638X0.071119*% +%ADD257R,1.920241X0.071122*% +%ADD258R,1.493522X0.071122*% +%ADD259R,1.778000X0.071119*% +%ADD260R,1.706881X0.071122*% +%ADD261R,1.351278X0.071122*% +%ADD262R,1.635759X0.071119*% +%ADD263R,1.351281X0.071119*% +%ADD264R,1.706878X0.071119*% +%ADD265R,11.877041X0.071122*% +%ADD266R,11.877041X0.071119*% +%ADD267R,1.706881X0.071119*% +%ADD268R,21.904962X0.071122*% +%ADD269R,21.904962X0.071119*% +%ADD270R,21.762719X0.071122*% +%ADD271R,21.620481X0.071119*% +%ADD272R,21.478238X0.071119*% +%ADD273R,20.695919X0.071122*% +%ADD274R,20.055841X0.071119*% +%ADD275R,20.126959X0.071122*% +%ADD276R,20.126959X0.071119*% +%ADD277R,20.198078X0.071119*% +%ADD278R,20.269200X0.071122*% +%ADD279R,20.269200X0.071119*% +%ADD280R,20.198081X0.071119*% +%ADD281R,19.984719X0.071122*% +%ADD282R,19.913600X0.071119*% +%ADD283R,8.890000X0.071119*% +%ADD284R,9.032241X0.071119*% +%ADD285R,7.965438X0.071122*% +%ADD286R,8.036559X0.071122*% +%ADD287R,8.107681X0.071119*% +%ADD288R,8.036559X0.071119*% +%ADD289R,8.107681X0.071122*% +%ADD290R,8.107678X0.071122*% +%ADD291R,8.107678X0.071119*% +%ADD292R,7.965438X0.071119*% +%ADD293R,7.965441X0.071119*% +%ADD294R,7.965441X0.071122*% +%ADD295R,7.894319X0.071119*% +%ADD296R,0.995681X0.071119*% +%ADD297R,0.995681X0.071122*% +%ADD298R,0.426719X0.071122*% +%ADD299R,0.640081X0.071122*% +%ADD300R,5.405119X0.071122*% +%ADD301R,1.209041X0.071122*% +%ADD302R,1.209041X0.071119*% +%ADD303R,4.124959X0.071119*% +%ADD304R,2.773681X0.071122*% +%ADD305R,1.066800X0.071122*% +%ADD306R,1.137919X0.071122*% +%ADD307R,0.995678X0.071119*% +%ADD308R,1.351278X0.071119*% +%ADD309R,1.280163X0.071119*% +%ADD310R,1.280163X0.071122*% +%ADD311R,1.137919X0.071119*% + + +D10* +X396677Y50927D02* +X393347Y50927D01* +X393233Y50929D01* +X393120Y50935D01* +X393006Y50944D01* +X392894Y50958D01* +X392781Y50975D01* +X392669Y50997D01* +X392559Y51022D01* +X392449Y51050D01* +X392340Y51083D01* +X392232Y51119D01* +X392125Y51159D01* +X392020Y51203D01* +X391917Y51250D01* +X391815Y51300D01* +X391715Y51354D01* +X391617Y51412D01* +X391521Y51473D01* +X391427Y51536D01* +X391335Y51604D01* +X391245Y51674D01* +X391159Y51747D01* +X391074Y51823D01* +X390992Y51902D01* +X390913Y51984D01* +X390837Y52069D01* +X390764Y52155D01* +X390694Y52245D01* +X390626Y52337D01* +X390563Y52431D01* +X390502Y52527D01* +X390444Y52625D01* +X390390Y52725D01* +X390340Y52827D01* +X390293Y52930D01* +X390249Y53035D01* +X390209Y53142D01* +X390173Y53250D01* +X390140Y53359D01* +X390112Y53469D01* +X390087Y53579D01* +X390065Y53691D01* +X390048Y53804D01* +X390034Y53916D01* +X390025Y54030D01* +X390019Y54143D01* +X390017Y54257D01* +X390017Y62583D01* +X390019Y62697D01* +X390025Y62810D01* +X390034Y62924D01* +X390048Y63036D01* +X390065Y63149D01* +X390087Y63261D01* +X390112Y63371D01* +X390140Y63481D01* +X390173Y63590D01* +X390209Y63698D01* +X390249Y63805D01* +X390293Y63910D01* +X390340Y64013D01* +X390390Y64115D01* +X390444Y64215D01* +X390502Y64313D01* +X390563Y64409D01* +X390626Y64503D01* +X390694Y64595D01* +X390764Y64685D01* +X390837Y64771D01* +X390913Y64856D01* +X390992Y64938D01* +X391074Y65017D01* +X391158Y65093D01* +X391245Y65166D01* +X391335Y65236D01* +X391427Y65303D01* +X391521Y65367D01* +X391617Y65428D01* +X391715Y65486D01* +X391815Y65540D01* +X391917Y65590D01* +X392020Y65637D01* +X392125Y65681D01* +X392232Y65721D01* +X392340Y65757D01* +X392449Y65790D01* +X392559Y65818D01* +X392669Y65843D01* +X392781Y65865D01* +X392894Y65882D01* +X393006Y65896D01* +X393120Y65905D01* +X393233Y65911D01* +X393347Y65913D01* +X396677Y65913D01* +X403624Y65913D02* +X403624Y50927D01* +X403624Y59253D02* +X411949Y59253D01* +X411949Y65913D02* +X411949Y50927D01* +X424355Y65914D02* +X424475Y65912D01* +X424595Y65906D01* +X424715Y65897D01* +X424834Y65883D01* +X424953Y65866D01* +X425071Y65845D01* +X425189Y65820D01* +X425305Y65791D01* +X425421Y65759D01* +X425536Y65723D01* +X425649Y65683D01* +X425761Y65640D01* +X425872Y65593D01* +X425981Y65543D01* +X426088Y65489D01* +X426194Y65432D01* +X426297Y65371D01* +X426399Y65307D01* +X426499Y65240D01* +X426596Y65170D01* +X426691Y65097D01* +X426784Y65020D01* +X426874Y64941D01* +X426962Y64859D01* +X427047Y64774D01* +X427129Y64686D01* +X427208Y64596D01* +X427285Y64503D01* +X427358Y64408D01* +X427428Y64311D01* +X427495Y64211D01* +X427559Y64109D01* +X427620Y64006D01* +X427677Y63900D01* +X427731Y63793D01* +X427781Y63684D01* +X427828Y63573D01* +X427871Y63461D01* +X427911Y63348D01* +X427947Y63233D01* +X427979Y63117D01* +X428008Y63001D01* +X428033Y62883D01* +X428054Y62765D01* +X428071Y62646D01* +X428085Y62527D01* +X428094Y62407D01* +X428100Y62287D01* +X428102Y62167D01* +X424355Y65913D02* +X424217Y65911D01* +X424080Y65905D01* +X423943Y65895D01* +X423806Y65882D01* +X423670Y65864D01* +X423534Y65842D01* +X423398Y65817D01* +X423264Y65788D01* +X423131Y65755D01* +X422998Y65718D01* +X422867Y65677D01* +X422736Y65633D01* +X422608Y65585D01* +X422480Y65533D01* +X422354Y65477D01* +X422230Y65418D01* +X422107Y65356D01* +X421987Y65290D01* +X421868Y65221D01* +X421751Y65148D01* +X421637Y65072D01* +X421524Y64992D01* +X421414Y64910D01* +X421306Y64824D01* +X421201Y64736D01* +X421099Y64644D01* +X420999Y64550D01* +X420901Y64452D01* +X420807Y64352D01* +X420716Y64249D01* +X420627Y64144D01* +X420542Y64036D01* +X420459Y63926D01* +X420380Y63814D01* +X420304Y63699D01* +X420231Y63582D01* +X420162Y63463D01* +X420096Y63343D01* +X420034Y63220D01* +X419975Y63096D01* +X419920Y62970D01* +X419868Y62842D01* +X419820Y62713D01* +X419776Y62583D01* +X426852Y59253D02* +X426942Y59341D01* +X427028Y59432D01* +X427112Y59525D01* +X427193Y59621D01* +X427271Y59719D01* +X427345Y59819D01* +X427417Y59922D01* +X427485Y60027D01* +X427550Y60135D01* +X427612Y60244D01* +X427670Y60355D01* +X427725Y60468D01* +X427776Y60582D01* +X427823Y60698D01* +X427867Y60815D01* +X427907Y60934D01* +X427944Y61054D01* +X427977Y61175D01* +X428006Y61297D01* +X428031Y61419D01* +X428052Y61543D01* +X428070Y61667D01* +X428083Y61792D01* +X428093Y61917D01* +X428099Y62042D01* +X428101Y62167D01* +X426853Y59253D02* +X419776Y50927D01* +X428101Y50927D01* +X443597Y25725D02* +X446095Y25725D01* +X446095Y17399D01* +X441099Y17399D01* +X440985Y17401D01* +X440872Y17407D01* +X440758Y17416D01* +X440646Y17430D01* +X440533Y17447D01* +X440421Y17469D01* +X440311Y17494D01* +X440201Y17522D01* +X440092Y17555D01* +X439984Y17591D01* +X439877Y17631D01* +X439772Y17675D01* +X439669Y17722D01* +X439567Y17772D01* +X439467Y17826D01* +X439369Y17884D01* +X439273Y17945D01* +X439179Y18008D01* +X439087Y18076D01* +X438997Y18146D01* +X438911Y18219D01* +X438826Y18295D01* +X438744Y18374D01* +X438665Y18456D01* +X438589Y18541D01* +X438516Y18627D01* +X438446Y18717D01* +X438378Y18809D01* +X438315Y18903D01* +X438254Y18999D01* +X438196Y19097D01* +X438142Y19197D01* +X438092Y19299D01* +X438045Y19402D01* +X438001Y19507D01* +X437961Y19614D01* +X437925Y19722D01* +X437892Y19831D01* +X437864Y19941D01* +X437839Y20051D01* +X437817Y20163D01* +X437800Y20276D01* +X437786Y20388D01* +X437777Y20502D01* +X437771Y20615D01* +X437769Y20729D01* +X437769Y29055D01* +X437771Y29169D01* +X437777Y29282D01* +X437786Y29396D01* +X437800Y29508D01* +X437817Y29621D01* +X437839Y29733D01* +X437864Y29843D01* +X437892Y29953D01* +X437925Y30062D01* +X437961Y30170D01* +X438001Y30277D01* +X438045Y30382D01* +X438092Y30485D01* +X438142Y30587D01* +X438196Y30687D01* +X438254Y30785D01* +X438315Y30881D01* +X438378Y30975D01* +X438446Y31067D01* +X438516Y31157D01* +X438589Y31243D01* +X438665Y31328D01* +X438744Y31410D01* +X438826Y31489D01* +X438910Y31565D01* +X438997Y31638D01* +X439087Y31708D01* +X439179Y31775D01* +X439273Y31839D01* +X439369Y31900D01* +X439467Y31958D01* +X439567Y32012D01* +X439669Y32062D01* +X439772Y32109D01* +X439877Y32153D01* +X439984Y32193D01* +X440092Y32229D01* +X440201Y32262D01* +X440311Y32290D01* +X440421Y32315D01* +X440533Y32337D01* +X440646Y32354D01* +X440758Y32368D01* +X440872Y32377D01* +X440985Y32383D01* +X441099Y32385D01* +X446095Y32385D01* +X454442Y32385D02* +X454442Y17399D01* +X462768Y17399D02* +X454442Y32385D01* +X462768Y32385D02* +X462768Y17399D01* +X471116Y17399D02* +X471116Y32385D01* +X475278Y32385D01* +X475406Y32383D01* +X475534Y32377D01* +X475662Y32367D01* +X475790Y32353D01* +X475917Y32336D01* +X476043Y32314D01* +X476169Y32289D01* +X476293Y32259D01* +X476417Y32226D01* +X476540Y32189D01* +X476662Y32148D01* +X476782Y32104D01* +X476901Y32056D01* +X477018Y32004D01* +X477134Y31949D01* +X477247Y31890D01* +X477360Y31827D01* +X477470Y31761D01* +X477577Y31692D01* +X477683Y31620D01* +X477787Y31544D01* +X477888Y31465D01* +X477987Y31383D01* +X478083Y31298D01* +X478176Y31211D01* +X478267Y31120D01* +X478354Y31027D01* +X478439Y30931D01* +X478521Y30832D01* +X478600Y30731D01* +X478676Y30627D01* +X478748Y30521D01* +X478817Y30414D01* +X478883Y30304D01* +X478946Y30191D01* +X479005Y30078D01* +X479060Y29962D01* +X479112Y29845D01* +X479160Y29726D01* +X479204Y29606D01* +X479245Y29484D01* +X479282Y29361D01* +X479315Y29237D01* +X479345Y29113D01* +X479370Y28987D01* +X479392Y28861D01* +X479409Y28734D01* +X479423Y28606D01* +X479433Y28478D01* +X479439Y28350D01* +X479441Y28222D01* +X479441Y21562D01* +X479439Y21434D01* +X479433Y21306D01* +X479423Y21178D01* +X479409Y21050D01* +X479392Y20923D01* +X479370Y20797D01* +X479345Y20671D01* +X479315Y20547D01* +X479282Y20423D01* +X479245Y20300D01* +X479204Y20178D01* +X479160Y20058D01* +X479112Y19939D01* +X479060Y19822D01* +X479005Y19706D01* +X478946Y19593D01* +X478883Y19480D01* +X478817Y19370D01* +X478748Y19263D01* +X478676Y19157D01* +X478600Y19053D01* +X478521Y18952D01* +X478439Y18853D01* +X478354Y18757D01* +X478267Y18664D01* +X478176Y18573D01* +X478083Y18486D01* +X477987Y18401D01* +X477888Y18319D01* +X477787Y18240D01* +X477683Y18164D01* +X477577Y18092D01* +X477470Y18023D01* +X477360Y17957D01* +X477247Y17894D01* +X477134Y17835D01* +X477018Y17780D01* +X476901Y17728D01* +X476782Y17680D01* +X476662Y17636D01* +X476540Y17595D01* +X476417Y17558D01* +X476293Y17525D01* +X476169Y17495D01* +X476043Y17470D01* +X475917Y17448D01* +X475790Y17431D01* +X475662Y17417D01* +X475534Y17407D01* +X475406Y17401D01* +X475278Y17399D01* +X471116Y17399D01* +X888365Y83693D02* +X888365Y98679D01* +X892528Y98679D01* +X892656Y98677D01* +X892784Y98671D01* +X892912Y98661D01* +X893040Y98647D01* +X893167Y98630D01* +X893293Y98608D01* +X893419Y98583D01* +X893543Y98553D01* +X893667Y98520D01* +X893790Y98483D01* +X893912Y98442D01* +X894032Y98398D01* +X894151Y98350D01* +X894268Y98298D01* +X894384Y98243D01* +X894497Y98184D01* +X894610Y98121D01* +X894720Y98055D01* +X894827Y97986D01* +X894933Y97914D01* +X895037Y97838D01* +X895138Y97759D01* +X895237Y97677D01* +X895333Y97592D01* +X895426Y97505D01* +X895517Y97414D01* +X895604Y97321D01* +X895689Y97225D01* +X895771Y97126D01* +X895850Y97025D01* +X895926Y96921D01* +X895998Y96815D01* +X896067Y96708D01* +X896133Y96597D01* +X896196Y96485D01* +X896255Y96372D01* +X896310Y96256D01* +X896362Y96139D01* +X896410Y96020D01* +X896454Y95900D01* +X896495Y95778D01* +X896532Y95655D01* +X896565Y95531D01* +X896595Y95407D01* +X896620Y95281D01* +X896642Y95155D01* +X896659Y95028D01* +X896673Y94900D01* +X896683Y94772D01* +X896689Y94644D01* +X896691Y94516D01* +X896689Y94388D01* +X896683Y94260D01* +X896673Y94132D01* +X896659Y94004D01* +X896642Y93877D01* +X896620Y93751D01* +X896595Y93625D01* +X896565Y93501D01* +X896532Y93377D01* +X896495Y93254D01* +X896454Y93132D01* +X896410Y93012D01* +X896362Y92893D01* +X896310Y92776D01* +X896255Y92660D01* +X896196Y92547D01* +X896133Y92434D01* +X896067Y92324D01* +X895998Y92217D01* +X895926Y92111D01* +X895850Y92007D01* +X895771Y91906D01* +X895689Y91807D01* +X895604Y91711D01* +X895517Y91618D01* +X895426Y91527D01* +X895333Y91440D01* +X895237Y91355D01* +X895138Y91273D01* +X895037Y91194D01* +X894933Y91118D01* +X894827Y91046D01* +X894720Y90977D01* +X894610Y90911D01* +X894497Y90848D01* +X894384Y90789D01* +X894268Y90734D01* +X894151Y90682D01* +X894032Y90634D01* +X893912Y90590D01* +X893790Y90549D01* +X893667Y90512D01* +X893543Y90479D01* +X893419Y90449D01* +X893293Y90424D01* +X893167Y90402D01* +X893040Y90385D01* +X892912Y90371D01* +X892784Y90361D01* +X892656Y90355D01* +X892528Y90353D01* +X888365Y90353D01* +X902744Y98679D02* +X906074Y83693D01* +X909404Y93684D01* +X912734Y83693D01* +X916065Y98679D01* +X923616Y98679D02* +X923616Y83693D01* +X923616Y98679D02* +X927779Y98679D01* +X927907Y98677D01* +X928035Y98671D01* +X928163Y98661D01* +X928291Y98647D01* +X928418Y98630D01* +X928544Y98608D01* +X928670Y98583D01* +X928794Y98553D01* +X928918Y98520D01* +X929041Y98483D01* +X929163Y98442D01* +X929283Y98398D01* +X929402Y98350D01* +X929519Y98298D01* +X929635Y98243D01* +X929748Y98184D01* +X929861Y98121D01* +X929971Y98055D01* +X930078Y97986D01* +X930184Y97914D01* +X930288Y97838D01* +X930389Y97759D01* +X930488Y97677D01* +X930584Y97592D01* +X930677Y97505D01* +X930768Y97414D01* +X930855Y97321D01* +X930940Y97225D01* +X931022Y97126D01* +X931101Y97025D01* +X931177Y96921D01* +X931249Y96815D01* +X931318Y96708D01* +X931384Y96597D01* +X931447Y96485D01* +X931506Y96372D01* +X931561Y96256D01* +X931613Y96139D01* +X931661Y96020D01* +X931705Y95900D01* +X931746Y95778D01* +X931783Y95655D01* +X931816Y95531D01* +X931846Y95407D01* +X931871Y95281D01* +X931893Y95155D01* +X931910Y95028D01* +X931924Y94900D01* +X931934Y94772D01* +X931940Y94644D01* +X931942Y94516D01* +X931940Y94388D01* +X931934Y94260D01* +X931924Y94132D01* +X931910Y94004D01* +X931893Y93877D01* +X931871Y93751D01* +X931846Y93625D01* +X931816Y93501D01* +X931783Y93377D01* +X931746Y93254D01* +X931705Y93132D01* +X931661Y93012D01* +X931613Y92893D01* +X931561Y92776D01* +X931506Y92660D01* +X931447Y92547D01* +X931384Y92434D01* +X931318Y92324D01* +X931249Y92217D01* +X931177Y92111D01* +X931101Y92007D01* +X931022Y91906D01* +X930940Y91807D01* +X930855Y91711D01* +X930768Y91618D01* +X930677Y91527D01* +X930584Y91440D01* +X930488Y91355D01* +X930389Y91273D01* +X930288Y91194D01* +X930184Y91118D01* +X930078Y91046D01* +X929971Y90977D01* +X929861Y90911D01* +X929748Y90848D01* +X929635Y90789D01* +X929519Y90734D01* +X929402Y90682D01* +X929283Y90634D01* +X929163Y90590D01* +X929041Y90549D01* +X928918Y90512D01* +X928794Y90479D01* +X928670Y90449D01* +X928544Y90424D01* +X928418Y90402D01* +X928291Y90385D01* +X928163Y90371D01* +X928035Y90361D01* +X927907Y90355D01* +X927779Y90353D01* +X923616Y90353D01* +X928611Y90353D02* +X931941Y83693D01* +X952655Y51181D02* +X955985Y51181D01* +X952655Y51181D02* +X952541Y51183D01* +X952428Y51189D01* +X952314Y51198D01* +X952202Y51212D01* +X952089Y51229D01* +X951977Y51251D01* +X951867Y51276D01* +X951757Y51304D01* +X951648Y51337D01* +X951540Y51373D01* +X951433Y51413D01* +X951328Y51457D01* +X951225Y51504D01* +X951123Y51554D01* +X951023Y51608D01* +X950925Y51666D01* +X950829Y51727D01* +X950735Y51790D01* +X950643Y51858D01* +X950553Y51928D01* +X950467Y52001D01* +X950382Y52077D01* +X950300Y52156D01* +X950221Y52238D01* +X950145Y52323D01* +X950072Y52409D01* +X950002Y52499D01* +X949934Y52591D01* +X949871Y52685D01* +X949810Y52781D01* +X949752Y52879D01* +X949698Y52979D01* +X949648Y53081D01* +X949601Y53184D01* +X949557Y53289D01* +X949517Y53396D01* +X949481Y53504D01* +X949448Y53613D01* +X949420Y53723D01* +X949395Y53833D01* +X949373Y53945D01* +X949356Y54058D01* +X949342Y54170D01* +X949333Y54284D01* +X949327Y54397D01* +X949325Y54511D01* +X949325Y62837D01* +X949327Y62951D01* +X949333Y63064D01* +X949342Y63178D01* +X949356Y63290D01* +X949373Y63403D01* +X949395Y63515D01* +X949420Y63625D01* +X949448Y63735D01* +X949481Y63844D01* +X949517Y63952D01* +X949557Y64059D01* +X949601Y64164D01* +X949648Y64267D01* +X949698Y64369D01* +X949752Y64469D01* +X949810Y64567D01* +X949871Y64663D01* +X949934Y64757D01* +X950002Y64849D01* +X950072Y64939D01* +X950145Y65025D01* +X950221Y65110D01* +X950300Y65192D01* +X950382Y65271D01* +X950466Y65347D01* +X950553Y65420D01* +X950643Y65490D01* +X950735Y65557D01* +X950829Y65621D01* +X950925Y65682D01* +X951023Y65740D01* +X951123Y65794D01* +X951225Y65844D01* +X951328Y65891D01* +X951433Y65935D01* +X951540Y65975D01* +X951648Y66011D01* +X951757Y66044D01* +X951867Y66072D01* +X951977Y66097D01* +X952089Y66119D01* +X952202Y66136D01* +X952314Y66150D01* +X952428Y66159D01* +X952541Y66165D01* +X952655Y66167D01* +X955985Y66167D01* +X962932Y66167D02* +X962932Y51181D01* +X962932Y59507D02* +X971257Y59507D01* +X971257Y66167D02* +X971257Y51181D01* +X979084Y62837D02* +X983247Y66167D01* +X983247Y51181D01* +X987409Y51181D02* +X979084Y51181D01* +X898723Y26487D02* +X896225Y26487D01* +X898723Y26487D02* +X898723Y18161D01* +X893727Y18161D01* +X893613Y18163D01* +X893500Y18169D01* +X893386Y18178D01* +X893274Y18192D01* +X893161Y18209D01* +X893049Y18231D01* +X892939Y18256D01* +X892829Y18284D01* +X892720Y18317D01* +X892612Y18353D01* +X892505Y18393D01* +X892400Y18437D01* +X892297Y18484D01* +X892195Y18534D01* +X892095Y18588D01* +X891997Y18646D01* +X891901Y18707D01* +X891807Y18770D01* +X891715Y18838D01* +X891625Y18908D01* +X891539Y18981D01* +X891454Y19057D01* +X891372Y19136D01* +X891293Y19218D01* +X891217Y19303D01* +X891144Y19389D01* +X891074Y19479D01* +X891006Y19571D01* +X890943Y19665D01* +X890882Y19761D01* +X890824Y19859D01* +X890770Y19959D01* +X890720Y20061D01* +X890673Y20164D01* +X890629Y20269D01* +X890589Y20376D01* +X890553Y20484D01* +X890520Y20593D01* +X890492Y20703D01* +X890467Y20813D01* +X890445Y20925D01* +X890428Y21038D01* +X890414Y21150D01* +X890405Y21264D01* +X890399Y21377D01* +X890397Y21491D01* +X890397Y29817D01* +X890399Y29931D01* +X890405Y30044D01* +X890414Y30158D01* +X890428Y30270D01* +X890445Y30383D01* +X890467Y30495D01* +X890492Y30605D01* +X890520Y30715D01* +X890553Y30824D01* +X890589Y30932D01* +X890629Y31039D01* +X890673Y31144D01* +X890720Y31247D01* +X890770Y31349D01* +X890824Y31449D01* +X890882Y31547D01* +X890943Y31643D01* +X891006Y31737D01* +X891074Y31829D01* +X891144Y31919D01* +X891217Y32005D01* +X891293Y32090D01* +X891372Y32172D01* +X891454Y32251D01* +X891538Y32327D01* +X891625Y32400D01* +X891715Y32470D01* +X891807Y32537D01* +X891901Y32601D01* +X891997Y32662D01* +X892095Y32720D01* +X892195Y32774D01* +X892297Y32824D01* +X892400Y32871D01* +X892505Y32915D01* +X892612Y32955D01* +X892720Y32991D01* +X892829Y33024D01* +X892939Y33052D01* +X893049Y33077D01* +X893161Y33099D01* +X893274Y33116D01* +X893386Y33130D01* +X893500Y33139D01* +X893613Y33145D01* +X893727Y33147D01* +X898723Y33147D01* +X907070Y33147D02* +X907070Y18161D01* +X915396Y18161D02* +X907070Y33147D01* +X915396Y33147D02* +X915396Y18161D01* +X923744Y18161D02* +X923744Y33147D01* +X927906Y33147D01* +X928034Y33145D01* +X928162Y33139D01* +X928290Y33129D01* +X928418Y33115D01* +X928545Y33098D01* +X928671Y33076D01* +X928797Y33051D01* +X928921Y33021D01* +X929045Y32988D01* +X929168Y32951D01* +X929290Y32910D01* +X929410Y32866D01* +X929529Y32818D01* +X929646Y32766D01* +X929762Y32711D01* +X929875Y32652D01* +X929988Y32589D01* +X930098Y32523D01* +X930205Y32454D01* +X930311Y32382D01* +X930415Y32306D01* +X930516Y32227D01* +X930615Y32145D01* +X930711Y32060D01* +X930804Y31973D01* +X930895Y31882D01* +X930982Y31789D01* +X931067Y31693D01* +X931149Y31594D01* +X931228Y31493D01* +X931304Y31389D01* +X931376Y31283D01* +X931445Y31176D01* +X931511Y31066D01* +X931574Y30953D01* +X931633Y30840D01* +X931688Y30724D01* +X931740Y30607D01* +X931788Y30488D01* +X931832Y30368D01* +X931873Y30246D01* +X931910Y30123D01* +X931943Y29999D01* +X931973Y29875D01* +X931998Y29749D01* +X932020Y29623D01* +X932037Y29496D01* +X932051Y29368D01* +X932061Y29240D01* +X932067Y29112D01* +X932069Y28984D01* +X932069Y22324D01* +X932067Y22196D01* +X932061Y22068D01* +X932051Y21940D01* +X932037Y21812D01* +X932020Y21685D01* +X931998Y21559D01* +X931973Y21433D01* +X931943Y21309D01* +X931910Y21185D01* +X931873Y21062D01* +X931832Y20940D01* +X931788Y20820D01* +X931740Y20701D01* +X931688Y20584D01* +X931633Y20468D01* +X931574Y20355D01* +X931511Y20242D01* +X931445Y20132D01* +X931376Y20025D01* +X931304Y19919D01* +X931228Y19815D01* +X931149Y19714D01* +X931067Y19615D01* +X930982Y19519D01* +X930895Y19426D01* +X930804Y19335D01* +X930711Y19248D01* +X930615Y19163D01* +X930516Y19081D01* +X930415Y19002D01* +X930311Y18926D01* +X930205Y18854D01* +X930098Y18785D01* +X929988Y18719D01* +X929875Y18656D01* +X929762Y18597D01* +X929646Y18542D01* +X929529Y18490D01* +X929410Y18442D01* +X929290Y18398D01* +X929168Y18357D01* +X929045Y18320D01* +X928921Y18287D01* +X928797Y18257D01* +X928671Y18232D01* +X928545Y18210D01* +X928418Y18193D01* +X928290Y18179D01* +X928162Y18169D01* +X928034Y18163D01* +X927906Y18161D01* +X923744Y18161D01* +D11* +X939292Y90424D02* +X948436Y90424D01* +X942086Y59182D02* +X932942Y59182D01* +X937260Y26924D02* +X946404Y26924D01* +X433578Y90678D02* +X424434Y90678D01* +D10* +X437769Y84455D02* +X437769Y99441D01* +X441932Y99441D01* +X442060Y99439D01* +X442188Y99433D01* +X442316Y99423D01* +X442444Y99409D01* +X442571Y99392D01* +X442697Y99370D01* +X442823Y99345D01* +X442947Y99315D01* +X443071Y99282D01* +X443194Y99245D01* +X443316Y99204D01* +X443436Y99160D01* +X443555Y99112D01* +X443672Y99060D01* +X443788Y99005D01* +X443901Y98946D01* +X444014Y98883D01* +X444124Y98817D01* +X444231Y98748D01* +X444337Y98676D01* +X444441Y98600D01* +X444542Y98521D01* +X444641Y98439D01* +X444737Y98354D01* +X444830Y98267D01* +X444921Y98176D01* +X445008Y98083D01* +X445093Y97987D01* +X445175Y97888D01* +X445254Y97787D01* +X445330Y97683D01* +X445402Y97577D01* +X445471Y97470D01* +X445537Y97359D01* +X445600Y97247D01* +X445659Y97134D01* +X445714Y97018D01* +X445766Y96901D01* +X445814Y96782D01* +X445858Y96662D01* +X445899Y96540D01* +X445936Y96417D01* +X445969Y96293D01* +X445999Y96169D01* +X446024Y96043D01* +X446046Y95917D01* +X446063Y95790D01* +X446077Y95662D01* +X446087Y95534D01* +X446093Y95406D01* +X446095Y95278D01* +X446093Y95150D01* +X446087Y95022D01* +X446077Y94894D01* +X446063Y94766D01* +X446046Y94639D01* +X446024Y94513D01* +X445999Y94387D01* +X445969Y94263D01* +X445936Y94139D01* +X445899Y94016D01* +X445858Y93894D01* +X445814Y93774D01* +X445766Y93655D01* +X445714Y93538D01* +X445659Y93422D01* +X445600Y93309D01* +X445537Y93196D01* +X445471Y93086D01* +X445402Y92979D01* +X445330Y92873D01* +X445254Y92769D01* +X445175Y92668D01* +X445093Y92569D01* +X445008Y92473D01* +X444921Y92380D01* +X444830Y92289D01* +X444737Y92202D01* +X444641Y92117D01* +X444542Y92035D01* +X444441Y91956D01* +X444337Y91880D01* +X444231Y91808D01* +X444124Y91739D01* +X444014Y91673D01* +X443901Y91610D01* +X443788Y91551D01* +X443672Y91496D01* +X443555Y91444D01* +X443436Y91396D01* +X443316Y91352D01* +X443194Y91311D01* +X443071Y91274D01* +X442947Y91241D01* +X442823Y91211D01* +X442697Y91186D01* +X442571Y91164D01* +X442444Y91147D01* +X442316Y91133D01* +X442188Y91123D01* +X442060Y91117D01* +X441932Y91115D01* +X437769Y91115D01* +X452148Y99441D02* +X455478Y84455D01* +X458808Y94446D01* +X462138Y84455D01* +X465469Y99441D01* +X473020Y99441D02* +X473020Y84455D01* +X473020Y99441D02* +X477183Y99441D01* +X477311Y99439D01* +X477439Y99433D01* +X477567Y99423D01* +X477695Y99409D01* +X477822Y99392D01* +X477948Y99370D01* +X478074Y99345D01* +X478198Y99315D01* +X478322Y99282D01* +X478445Y99245D01* +X478567Y99204D01* +X478687Y99160D01* +X478806Y99112D01* +X478923Y99060D01* +X479039Y99005D01* +X479152Y98946D01* +X479265Y98883D01* +X479375Y98817D01* +X479482Y98748D01* +X479588Y98676D01* +X479692Y98600D01* +X479793Y98521D01* +X479892Y98439D01* +X479988Y98354D01* +X480081Y98267D01* +X480172Y98176D01* +X480259Y98083D01* +X480344Y97987D01* +X480426Y97888D01* +X480505Y97787D01* +X480581Y97683D01* +X480653Y97577D01* +X480722Y97470D01* +X480788Y97359D01* +X480851Y97247D01* +X480910Y97134D01* +X480965Y97018D01* +X481017Y96901D01* +X481065Y96782D01* +X481109Y96662D01* +X481150Y96540D01* +X481187Y96417D01* +X481220Y96293D01* +X481250Y96169D01* +X481275Y96043D01* +X481297Y95917D01* +X481314Y95790D01* +X481328Y95662D01* +X481338Y95534D01* +X481344Y95406D01* +X481346Y95278D01* +X481344Y95150D01* +X481338Y95022D01* +X481328Y94894D01* +X481314Y94766D01* +X481297Y94639D01* +X481275Y94513D01* +X481250Y94387D01* +X481220Y94263D01* +X481187Y94139D01* +X481150Y94016D01* +X481109Y93894D01* +X481065Y93774D01* +X481017Y93655D01* +X480965Y93538D01* +X480910Y93422D01* +X480851Y93309D01* +X480788Y93196D01* +X480722Y93086D01* +X480653Y92979D01* +X480581Y92873D01* +X480505Y92769D01* +X480426Y92668D01* +X480344Y92569D01* +X480259Y92473D01* +X480172Y92380D01* +X480081Y92289D01* +X479988Y92202D01* +X479892Y92117D01* +X479793Y92035D01* +X479692Y91956D01* +X479588Y91880D01* +X479482Y91808D01* +X479375Y91739D01* +X479265Y91673D01* +X479152Y91610D01* +X479039Y91551D01* +X478923Y91496D01* +X478806Y91444D01* +X478687Y91396D01* +X478567Y91352D01* +X478445Y91311D01* +X478322Y91274D01* +X478198Y91241D01* +X478074Y91211D01* +X477948Y91186D01* +X477822Y91164D01* +X477695Y91147D01* +X477567Y91133D01* +X477439Y91123D01* +X477311Y91117D01* +X477183Y91115D01* +X473020Y91115D01* +X478015Y91115D02* +X481345Y84455D01* +D11* +X440944Y58420D02* +X431800Y58420D01* +X432816Y24638D02* +X423672Y24638D01* +D10* +X884047Y315087D02* +X884047Y330073D01* +X888210Y330073D01* +X888338Y330071D01* +X888466Y330065D01* +X888594Y330055D01* +X888722Y330041D01* +X888849Y330024D01* +X888975Y330002D01* +X889101Y329977D01* +X889225Y329947D01* +X889349Y329914D01* +X889472Y329877D01* +X889594Y329836D01* +X889714Y329792D01* +X889833Y329744D01* +X889950Y329692D01* +X890066Y329637D01* +X890179Y329578D01* +X890292Y329515D01* +X890402Y329449D01* +X890509Y329380D01* +X890615Y329308D01* +X890719Y329232D01* +X890820Y329153D01* +X890919Y329071D01* +X891015Y328986D01* +X891108Y328899D01* +X891199Y328808D01* +X891286Y328715D01* +X891371Y328619D01* +X891453Y328520D01* +X891532Y328419D01* +X891608Y328315D01* +X891680Y328209D01* +X891749Y328102D01* +X891815Y327992D01* +X891878Y327879D01* +X891937Y327766D01* +X891992Y327650D01* +X892044Y327533D01* +X892092Y327414D01* +X892136Y327294D01* +X892177Y327172D01* +X892214Y327049D01* +X892247Y326925D01* +X892277Y326801D01* +X892302Y326675D01* +X892324Y326549D01* +X892341Y326422D01* +X892355Y326294D01* +X892365Y326166D01* +X892371Y326038D01* +X892373Y325910D01* +X892371Y325782D01* +X892365Y325654D01* +X892355Y325526D01* +X892341Y325398D01* +X892324Y325271D01* +X892302Y325145D01* +X892277Y325019D01* +X892247Y324895D01* +X892214Y324771D01* +X892177Y324648D01* +X892136Y324526D01* +X892092Y324406D01* +X892044Y324287D01* +X891992Y324170D01* +X891937Y324054D01* +X891878Y323941D01* +X891815Y323829D01* +X891749Y323718D01* +X891680Y323611D01* +X891608Y323505D01* +X891532Y323401D01* +X891453Y323300D01* +X891371Y323201D01* +X891286Y323105D01* +X891199Y323012D01* +X891108Y322921D01* +X891015Y322834D01* +X890919Y322749D01* +X890820Y322667D01* +X890719Y322588D01* +X890615Y322512D01* +X890509Y322440D01* +X890402Y322371D01* +X890292Y322305D01* +X890179Y322242D01* +X890066Y322183D01* +X889950Y322128D01* +X889833Y322076D01* +X889714Y322028D01* +X889594Y321984D01* +X889472Y321943D01* +X889349Y321906D01* +X889225Y321873D01* +X889101Y321843D01* +X888975Y321818D01* +X888849Y321796D01* +X888722Y321779D01* +X888594Y321765D01* +X888466Y321755D01* +X888338Y321749D01* +X888210Y321747D01* +X884047Y321747D01* +X889042Y321747D02* +X892373Y315087D01* +X900106Y315087D02* +X906767Y315087D01* +X900106Y315087D02* +X900106Y330073D01* +X906767Y330073D01* +X905101Y323413D02* +X900106Y323413D01* +X917561Y315087D02* +X917675Y315089D01* +X917788Y315095D01* +X917902Y315104D01* +X918014Y315118D01* +X918127Y315135D01* +X918239Y315157D01* +X918349Y315182D01* +X918459Y315210D01* +X918568Y315243D01* +X918676Y315279D01* +X918783Y315319D01* +X918888Y315363D01* +X918991Y315410D01* +X919093Y315460D01* +X919193Y315514D01* +X919291Y315572D01* +X919387Y315633D01* +X919481Y315697D01* +X919573Y315764D01* +X919663Y315834D01* +X919750Y315907D01* +X919834Y315983D01* +X919916Y316062D01* +X919995Y316144D01* +X920071Y316229D01* +X920144Y316315D01* +X920214Y316405D01* +X920282Y316497D01* +X920345Y316591D01* +X920406Y316687D01* +X920464Y316785D01* +X920518Y316885D01* +X920568Y316987D01* +X920615Y317090D01* +X920659Y317195D01* +X920699Y317302D01* +X920735Y317410D01* +X920768Y317519D01* +X920796Y317629D01* +X920821Y317739D01* +X920843Y317851D01* +X920860Y317964D01* +X920874Y318076D01* +X920883Y318190D01* +X920889Y318303D01* +X920891Y318417D01* +X917561Y315087D02* +X917393Y315089D01* +X917225Y315095D01* +X917057Y315105D01* +X916889Y315119D01* +X916721Y315137D01* +X916555Y315159D01* +X916388Y315185D01* +X916223Y315215D01* +X916058Y315249D01* +X915894Y315287D01* +X915731Y315329D01* +X915569Y315375D01* +X915408Y315425D01* +X915248Y315478D01* +X915090Y315535D01* +X914933Y315596D01* +X914778Y315661D01* +X914624Y315729D01* +X914472Y315802D01* +X914322Y315877D01* +X914173Y315957D01* +X914026Y316039D01* +X913882Y316126D01* +X913740Y316215D01* +X913599Y316309D01* +X913461Y316405D01* +X913326Y316505D01* +X913193Y316608D01* +X913062Y316714D01* +X912934Y316823D01* +X912808Y316935D01* +X912686Y317050D01* +X912566Y317168D01* +X912983Y326743D02* +X912985Y326857D01* +X912991Y326970D01* +X913000Y327084D01* +X913014Y327196D01* +X913031Y327309D01* +X913053Y327421D01* +X913078Y327531D01* +X913106Y327641D01* +X913139Y327750D01* +X913175Y327858D01* +X913215Y327965D01* +X913259Y328070D01* +X913306Y328173D01* +X913356Y328275D01* +X913410Y328375D01* +X913468Y328473D01* +X913529Y328569D01* +X913592Y328663D01* +X913660Y328755D01* +X913730Y328845D01* +X913803Y328931D01* +X913879Y329016D01* +X913958Y329098D01* +X914040Y329177D01* +X914125Y329253D01* +X914211Y329326D01* +X914301Y329396D01* +X914393Y329464D01* +X914487Y329527D01* +X914583Y329588D01* +X914681Y329646D01* +X914781Y329700D01* +X914883Y329750D01* +X914986Y329797D01* +X915091Y329841D01* +X915198Y329881D01* +X915306Y329917D01* +X915415Y329950D01* +X915525Y329978D01* +X915635Y330003D01* +X915747Y330025D01* +X915860Y330042D01* +X915972Y330056D01* +X916086Y330065D01* +X916199Y330071D01* +X916313Y330073D01* +X916468Y330071D01* +X916622Y330065D01* +X916776Y330056D01* +X916930Y330042D01* +X917084Y330025D01* +X917237Y330004D01* +X917389Y329980D01* +X917541Y329951D01* +X917692Y329919D01* +X917843Y329883D01* +X917992Y329843D01* +X918140Y329800D01* +X918288Y329753D01* +X918434Y329702D01* +X918578Y329648D01* +X918722Y329590D01* +X918863Y329528D01* +X919004Y329464D01* +X919142Y329395D01* +X919279Y329324D01* +X919414Y329248D01* +X919547Y329170D01* +X919679Y329088D01* +X919808Y329003D01* +X919935Y328915D01* +X920059Y328824D01* +X914648Y323829D02* +X914551Y323888D01* +X914457Y323951D01* +X914364Y324016D01* +X914274Y324085D01* +X914186Y324156D01* +X914101Y324231D01* +X914018Y324308D01* +X913938Y324388D01* +X913860Y324470D01* +X913786Y324556D01* +X913714Y324643D01* +X913645Y324733D01* +X913579Y324825D01* +X913517Y324920D01* +X913457Y325016D01* +X913401Y325114D01* +X913348Y325215D01* +X913299Y325317D01* +X913253Y325420D01* +X913210Y325525D01* +X913171Y325631D01* +X913135Y325739D01* +X913104Y325848D01* +X913076Y325957D01* +X913051Y326068D01* +X913030Y326179D01* +X913013Y326291D01* +X913000Y326404D01* +X912991Y326517D01* +X912985Y326630D01* +X912983Y326743D01* +X919226Y321331D02* +X919323Y321272D01* +X919417Y321209D01* +X919510Y321144D01* +X919600Y321075D01* +X919688Y321004D01* +X919773Y320929D01* +X919856Y320852D01* +X919936Y320772D01* +X920014Y320690D01* +X920088Y320604D01* +X920160Y320517D01* +X920229Y320427D01* +X920295Y320335D01* +X920357Y320240D01* +X920417Y320144D01* +X920473Y320046D01* +X920526Y319945D01* +X920575Y319843D01* +X920622Y319740D01* +X920664Y319635D01* +X920703Y319529D01* +X920739Y319421D01* +X920770Y319312D01* +X920798Y319203D01* +X920823Y319092D01* +X920844Y318981D01* +X920861Y318869D01* +X920874Y318756D01* +X920883Y318643D01* +X920889Y318530D01* +X920891Y318417D01* +X919227Y321331D02* +X914648Y323829D01* +X928242Y315087D02* +X934903Y315087D01* +X928242Y315087D02* +X928242Y330073D01* +X934903Y330073D01* +X933238Y323413D02* +X928242Y323413D01* +X944344Y330073D02* +X944344Y315087D01* +X940181Y330073D02* +X948507Y330073D01* +D11* +X879856Y311658D02* +X879856Y192024D01* +X948944Y191770D01* +X948944Y311404D01* +X879856Y311658D01* +D12* +X1050798Y41966D02* +X1056160Y41966D01* +X1056305Y41964D01* +X1056450Y41958D01* +X1056595Y41948D01* +X1056740Y41935D01* +X1056884Y41917D01* +X1057027Y41895D01* +X1057170Y41870D01* +X1057313Y41841D01* +X1057454Y41808D01* +X1057594Y41771D01* +X1057734Y41730D01* +X1057872Y41685D01* +X1058009Y41637D01* +X1058145Y41585D01* +X1058279Y41530D01* +X1058411Y41470D01* +X1058542Y41408D01* +X1058672Y41341D01* +X1058799Y41272D01* +X1058924Y41198D01* +X1059048Y41122D01* +X1059169Y41042D01* +X1059288Y40959D01* +X1059405Y40873D01* +X1059519Y40783D01* +X1059631Y40691D01* +X1059741Y40595D01* +X1059847Y40497D01* +X1059952Y40396D01* +X1060053Y40291D01* +X1060151Y40185D01* +X1060247Y40075D01* +X1060339Y39963D01* +X1060429Y39849D01* +X1060515Y39732D01* +X1060598Y39613D01* +X1060678Y39492D01* +X1060754Y39368D01* +X1060828Y39243D01* +X1060897Y39116D01* +X1060964Y38986D01* +X1061026Y38855D01* +X1061086Y38723D01* +X1061141Y38589D01* +X1061193Y38453D01* +X1061241Y38316D01* +X1061286Y38178D01* +X1061327Y38038D01* +X1061364Y37898D01* +X1061397Y37757D01* +X1061426Y37614D01* +X1061451Y37471D01* +X1061473Y37328D01* +X1061491Y37184D01* +X1061504Y37039D01* +X1061514Y36894D01* +X1061520Y36749D01* +X1061522Y36604D01* +X1061520Y36459D01* +X1061514Y36314D01* +X1061504Y36169D01* +X1061491Y36024D01* +X1061473Y35880D01* +X1061451Y35737D01* +X1061426Y35594D01* +X1061397Y35451D01* +X1061364Y35310D01* +X1061327Y35170D01* +X1061286Y35030D01* +X1061241Y34892D01* +X1061193Y34755D01* +X1061141Y34619D01* +X1061086Y34485D01* +X1061026Y34353D01* +X1060964Y34222D01* +X1060897Y34092D01* +X1060828Y33965D01* +X1060754Y33840D01* +X1060678Y33716D01* +X1060598Y33595D01* +X1060515Y33476D01* +X1060429Y33359D01* +X1060339Y33245D01* +X1060247Y33133D01* +X1060151Y33023D01* +X1060053Y32917D01* +X1059952Y32812D01* +X1059847Y32711D01* +X1059741Y32613D01* +X1059631Y32517D01* +X1059519Y32425D01* +X1059405Y32335D01* +X1059288Y32249D01* +X1059169Y32166D01* +X1059048Y32086D01* +X1058924Y32010D01* +X1058799Y31936D01* +X1058672Y31867D01* +X1058542Y31800D01* +X1058411Y31738D01* +X1058279Y31678D01* +X1058145Y31623D01* +X1058009Y31571D01* +X1057872Y31523D01* +X1057734Y31478D01* +X1057594Y31437D01* +X1057454Y31400D01* +X1057313Y31367D01* +X1057170Y31338D01* +X1057027Y31313D01* +X1056884Y31291D01* +X1056740Y31273D01* +X1056595Y31260D01* +X1056450Y31250D01* +X1056305Y31244D01* +X1056160Y31242D01* +X1050798Y31242D01* +X1050798Y50546D01* +X1056160Y50546D01* +X1056290Y50544D01* +X1056419Y50538D01* +X1056548Y50528D01* +X1056677Y50515D01* +X1056805Y50497D01* +X1056933Y50476D01* +X1057060Y50450D01* +X1057187Y50421D01* +X1057312Y50388D01* +X1057436Y50352D01* +X1057559Y50311D01* +X1057681Y50267D01* +X1057802Y50219D01* +X1057921Y50168D01* +X1058038Y50113D01* +X1058154Y50055D01* +X1058267Y49993D01* +X1058379Y49927D01* +X1058489Y49859D01* +X1058597Y49787D01* +X1058703Y49711D01* +X1058806Y49633D01* +X1058907Y49552D01* +X1059005Y49467D01* +X1059100Y49380D01* +X1059193Y49289D01* +X1059284Y49196D01* +X1059371Y49101D01* +X1059456Y49003D01* +X1059537Y48902D01* +X1059615Y48799D01* +X1059691Y48693D01* +X1059763Y48585D01* +X1059831Y48475D01* +X1059897Y48363D01* +X1059959Y48250D01* +X1060017Y48134D01* +X1060072Y48017D01* +X1060123Y47898D01* +X1060171Y47777D01* +X1060215Y47655D01* +X1060256Y47532D01* +X1060292Y47408D01* +X1060325Y47283D01* +X1060354Y47156D01* +X1060380Y47029D01* +X1060401Y46901D01* +X1060419Y46773D01* +X1060432Y46644D01* +X1060442Y46515D01* +X1060448Y46386D01* +X1060450Y46256D01* +X1060448Y46126D01* +X1060442Y45997D01* +X1060432Y45868D01* +X1060419Y45739D01* +X1060401Y45611D01* +X1060380Y45483D01* +X1060354Y45356D01* +X1060325Y45229D01* +X1060292Y45104D01* +X1060256Y44980D01* +X1060215Y44857D01* +X1060171Y44735D01* +X1060123Y44614D01* +X1060072Y44495D01* +X1060017Y44378D01* +X1059959Y44262D01* +X1059897Y44149D01* +X1059831Y44037D01* +X1059763Y43927D01* +X1059691Y43819D01* +X1059615Y43713D01* +X1059537Y43610D01* +X1059456Y43509D01* +X1059371Y43411D01* +X1059284Y43316D01* +X1059193Y43223D01* +X1059100Y43132D01* +X1059005Y43045D01* +X1058907Y42960D01* +X1058806Y42879D01* +X1058703Y42801D01* +X1058597Y42725D01* +X1058489Y42653D01* +X1058379Y42585D01* +X1058267Y42519D01* +X1058154Y42457D01* +X1058038Y42399D01* +X1057921Y42344D01* +X1057802Y42293D01* +X1057681Y42245D01* +X1057559Y42201D01* +X1057436Y42160D01* +X1057312Y42124D01* +X1057187Y42091D01* +X1057060Y42062D01* +X1056933Y42036D01* +X1056805Y42015D01* +X1056677Y41997D01* +X1056548Y41984D01* +X1056419Y41974D01* +X1056290Y41968D01* +X1056160Y41966D01* +X1067986Y31242D02* +X1074420Y50546D01* +X1080855Y31242D01* +X1079246Y36068D02* +X1069594Y36068D01* +X1087212Y31242D02* +X1093647Y50546D01* +X1100081Y31242D01* +X1098473Y36068D02* +X1088821Y36068D01* +X1106438Y31242D02* +X1112873Y50546D01* +X1119308Y31242D01* +X1117699Y36068D02* +X1108047Y36068D01* +X1127378Y31242D02* +X1127378Y50546D01* +X1127378Y41966D02* +X1138102Y41966D01* +X1138102Y50546D02* +X1138102Y31242D01* +X1153039Y31242D02* +X1153169Y31244D01* +X1153298Y31250D01* +X1153427Y31260D01* +X1153556Y31273D01* +X1153684Y31291D01* +X1153812Y31312D01* +X1153939Y31338D01* +X1154066Y31367D01* +X1154191Y31400D01* +X1154315Y31436D01* +X1154438Y31477D01* +X1154560Y31521D01* +X1154681Y31569D01* +X1154800Y31620D01* +X1154917Y31675D01* +X1155033Y31733D01* +X1155146Y31795D01* +X1155258Y31861D01* +X1155368Y31929D01* +X1155476Y32001D01* +X1155582Y32077D01* +X1155685Y32155D01* +X1155786Y32236D01* +X1155884Y32321D01* +X1155979Y32408D01* +X1156072Y32499D01* +X1156163Y32592D01* +X1156250Y32687D01* +X1156335Y32785D01* +X1156416Y32886D01* +X1156494Y32989D01* +X1156570Y33095D01* +X1156642Y33203D01* +X1156710Y33313D01* +X1156776Y33425D01* +X1156838Y33538D01* +X1156896Y33654D01* +X1156951Y33771D01* +X1157002Y33890D01* +X1157050Y34011D01* +X1157094Y34133D01* +X1157135Y34256D01* +X1157171Y34380D01* +X1157204Y34505D01* +X1157233Y34632D01* +X1157259Y34759D01* +X1157280Y34887D01* +X1157298Y35015D01* +X1157311Y35144D01* +X1157321Y35273D01* +X1157327Y35402D01* +X1157329Y35532D01* +X1153039Y31242D02* +X1152822Y31245D01* +X1152606Y31252D01* +X1152389Y31265D01* +X1152173Y31283D01* +X1151957Y31307D01* +X1151743Y31335D01* +X1151528Y31369D01* +X1151315Y31408D01* +X1151103Y31451D01* +X1150891Y31500D01* +X1150681Y31554D01* +X1150473Y31613D01* +X1150266Y31677D01* +X1150060Y31746D01* +X1149856Y31819D01* +X1149654Y31898D01* +X1149454Y31981D01* +X1149256Y32070D01* +X1149060Y32162D01* +X1148866Y32260D01* +X1148675Y32362D01* +X1148486Y32469D01* +X1148300Y32580D01* +X1148117Y32695D01* +X1147936Y32815D01* +X1147758Y32940D01* +X1147584Y33068D01* +X1147412Y33201D01* +X1147244Y33337D01* +X1147079Y33478D01* +X1146917Y33623D01* +X1146759Y33771D01* +X1146604Y33923D01* +X1147140Y46256D02* +X1147142Y46386D01* +X1147148Y46515D01* +X1147158Y46644D01* +X1147171Y46773D01* +X1147189Y46901D01* +X1147210Y47029D01* +X1147236Y47156D01* +X1147265Y47283D01* +X1147298Y47408D01* +X1147334Y47532D01* +X1147375Y47655D01* +X1147419Y47777D01* +X1147467Y47898D01* +X1147518Y48017D01* +X1147573Y48134D01* +X1147631Y48250D01* +X1147693Y48363D01* +X1147759Y48475D01* +X1147827Y48585D01* +X1147899Y48693D01* +X1147975Y48799D01* +X1148053Y48902D01* +X1148134Y49003D01* +X1148219Y49101D01* +X1148306Y49196D01* +X1148397Y49289D01* +X1148490Y49380D01* +X1148585Y49467D01* +X1148684Y49552D01* +X1148784Y49633D01* +X1148887Y49711D01* +X1148993Y49787D01* +X1149101Y49859D01* +X1149211Y49927D01* +X1149323Y49993D01* +X1149436Y50055D01* +X1149552Y50113D01* +X1149669Y50168D01* +X1149788Y50219D01* +X1149909Y50267D01* +X1150031Y50311D01* +X1150154Y50352D01* +X1150278Y50388D01* +X1150403Y50421D01* +X1150530Y50450D01* +X1150657Y50476D01* +X1150785Y50497D01* +X1150913Y50515D01* +X1151042Y50528D01* +X1151171Y50538D01* +X1151300Y50544D01* +X1151430Y50546D01* +X1151622Y50544D01* +X1151813Y50537D01* +X1152005Y50525D01* +X1152196Y50509D01* +X1152386Y50489D01* +X1152576Y50464D01* +X1152766Y50434D01* +X1152954Y50400D01* +X1153142Y50362D01* +X1153329Y50319D01* +X1153515Y50271D01* +X1153699Y50219D01* +X1153882Y50163D01* +X1154064Y50102D01* +X1154245Y50037D01* +X1154423Y49968D01* +X1154600Y49895D01* +X1154776Y49817D01* +X1154949Y49735D01* +X1155120Y49649D01* +X1155290Y49559D01* +X1155457Y49465D01* +X1155621Y49368D01* +X1155784Y49266D01* +X1155944Y49160D01* +X1156101Y49051D01* +X1156256Y48937D01* +X1149285Y42502D02* +X1149175Y42570D01* +X1149066Y42640D01* +X1148960Y42714D01* +X1148856Y42791D01* +X1148755Y42870D01* +X1148655Y42953D01* +X1148559Y43039D01* +X1148464Y43128D01* +X1148373Y43219D01* +X1148284Y43313D01* +X1148198Y43409D01* +X1148115Y43509D01* +X1148035Y43610D01* +X1147958Y43714D01* +X1147885Y43820D01* +X1147814Y43928D01* +X1147747Y44038D01* +X1147682Y44151D01* +X1147622Y44265D01* +X1147564Y44381D01* +X1147510Y44498D01* +X1147460Y44617D01* +X1147413Y44738D01* +X1147370Y44859D01* +X1147330Y44982D01* +X1147294Y45107D01* +X1147262Y45232D01* +X1147234Y45358D01* +X1147209Y45485D01* +X1147188Y45612D01* +X1147171Y45740D01* +X1147157Y45869D01* +X1147148Y45998D01* +X1147142Y46127D01* +X1147140Y46256D01* +X1155184Y39286D02* +X1155294Y39218D01* +X1155403Y39148D01* +X1155509Y39074D01* +X1155613Y38997D01* +X1155714Y38918D01* +X1155814Y38835D01* +X1155910Y38749D01* +X1156005Y38660D01* +X1156096Y38569D01* +X1156185Y38475D01* +X1156271Y38379D01* +X1156354Y38279D01* +X1156434Y38178D01* +X1156511Y38074D01* +X1156584Y37968D01* +X1156655Y37860D01* +X1156722Y37750D01* +X1156787Y37637D01* +X1156847Y37523D01* +X1156905Y37407D01* +X1156959Y37290D01* +X1157009Y37171D01* +X1157056Y37050D01* +X1157099Y36929D01* +X1157139Y36806D01* +X1157175Y36682D01* +X1157207Y36556D01* +X1157235Y36430D01* +X1157260Y36303D01* +X1157281Y36176D01* +X1157298Y36048D01* +X1157312Y35919D01* +X1157321Y35790D01* +X1157327Y35661D01* +X1157329Y35532D01* +X1155184Y39285D02* +X1149285Y42503D01* +X1176410Y41966D02* +X1181772Y41966D01* +X1181917Y41964D01* +X1182062Y41958D01* +X1182207Y41948D01* +X1182352Y41935D01* +X1182496Y41917D01* +X1182639Y41895D01* +X1182782Y41870D01* +X1182925Y41841D01* +X1183066Y41808D01* +X1183206Y41771D01* +X1183346Y41730D01* +X1183484Y41685D01* +X1183621Y41637D01* +X1183757Y41585D01* +X1183891Y41530D01* +X1184023Y41470D01* +X1184154Y41408D01* +X1184284Y41341D01* +X1184411Y41272D01* +X1184536Y41198D01* +X1184660Y41122D01* +X1184781Y41042D01* +X1184900Y40959D01* +X1185017Y40873D01* +X1185131Y40783D01* +X1185243Y40691D01* +X1185353Y40595D01* +X1185459Y40497D01* +X1185564Y40396D01* +X1185665Y40291D01* +X1185763Y40185D01* +X1185859Y40075D01* +X1185951Y39963D01* +X1186041Y39849D01* +X1186127Y39732D01* +X1186210Y39613D01* +X1186290Y39492D01* +X1186366Y39368D01* +X1186440Y39243D01* +X1186509Y39116D01* +X1186576Y38986D01* +X1186638Y38855D01* +X1186698Y38723D01* +X1186753Y38589D01* +X1186805Y38453D01* +X1186853Y38316D01* +X1186898Y38178D01* +X1186939Y38038D01* +X1186976Y37898D01* +X1187009Y37757D01* +X1187038Y37614D01* +X1187063Y37471D01* +X1187085Y37328D01* +X1187103Y37184D01* +X1187116Y37039D01* +X1187126Y36894D01* +X1187132Y36749D01* +X1187134Y36604D01* +X1187132Y36459D01* +X1187126Y36314D01* +X1187116Y36169D01* +X1187103Y36024D01* +X1187085Y35880D01* +X1187063Y35737D01* +X1187038Y35594D01* +X1187009Y35451D01* +X1186976Y35310D01* +X1186939Y35170D01* +X1186898Y35030D01* +X1186853Y34892D01* +X1186805Y34755D01* +X1186753Y34619D01* +X1186698Y34485D01* +X1186638Y34353D01* +X1186576Y34222D01* +X1186509Y34092D01* +X1186440Y33965D01* +X1186366Y33840D01* +X1186290Y33716D01* +X1186210Y33595D01* +X1186127Y33476D01* +X1186041Y33359D01* +X1185951Y33245D01* +X1185859Y33133D01* +X1185763Y33023D01* +X1185665Y32917D01* +X1185564Y32812D01* +X1185459Y32711D01* +X1185353Y32613D01* +X1185243Y32517D01* +X1185131Y32425D01* +X1185017Y32335D01* +X1184900Y32249D01* +X1184781Y32166D01* +X1184660Y32086D01* +X1184536Y32010D01* +X1184411Y31936D01* +X1184284Y31867D01* +X1184154Y31800D01* +X1184023Y31738D01* +X1183891Y31678D01* +X1183757Y31623D01* +X1183621Y31571D01* +X1183484Y31523D01* +X1183346Y31478D01* +X1183206Y31437D01* +X1183066Y31400D01* +X1182925Y31367D01* +X1182782Y31338D01* +X1182639Y31313D01* +X1182496Y31291D01* +X1182352Y31273D01* +X1182207Y31260D01* +X1182062Y31250D01* +X1181917Y31244D01* +X1181772Y31242D01* +X1176410Y31242D01* +X1176410Y50546D01* +X1181772Y50546D01* +X1181902Y50544D01* +X1182031Y50538D01* +X1182160Y50528D01* +X1182289Y50515D01* +X1182417Y50497D01* +X1182545Y50476D01* +X1182672Y50450D01* +X1182799Y50421D01* +X1182924Y50388D01* +X1183048Y50352D01* +X1183171Y50311D01* +X1183293Y50267D01* +X1183414Y50219D01* +X1183533Y50168D01* +X1183650Y50113D01* +X1183766Y50055D01* +X1183879Y49993D01* +X1183991Y49927D01* +X1184101Y49859D01* +X1184209Y49787D01* +X1184315Y49711D01* +X1184418Y49633D01* +X1184519Y49552D01* +X1184617Y49467D01* +X1184712Y49380D01* +X1184805Y49289D01* +X1184896Y49196D01* +X1184983Y49101D01* +X1185068Y49003D01* +X1185149Y48902D01* +X1185227Y48799D01* +X1185303Y48693D01* +X1185375Y48585D01* +X1185443Y48475D01* +X1185509Y48363D01* +X1185571Y48250D01* +X1185629Y48134D01* +X1185684Y48017D01* +X1185735Y47898D01* +X1185783Y47777D01* +X1185827Y47655D01* +X1185868Y47532D01* +X1185904Y47408D01* +X1185937Y47283D01* +X1185966Y47156D01* +X1185992Y47029D01* +X1186013Y46901D01* +X1186031Y46773D01* +X1186044Y46644D01* +X1186054Y46515D01* +X1186060Y46386D01* +X1186062Y46256D01* +X1186060Y46126D01* +X1186054Y45997D01* +X1186044Y45868D01* +X1186031Y45739D01* +X1186013Y45611D01* +X1185992Y45483D01* +X1185966Y45356D01* +X1185937Y45229D01* +X1185904Y45104D01* +X1185868Y44980D01* +X1185827Y44857D01* +X1185783Y44735D01* +X1185735Y44614D01* +X1185684Y44495D01* +X1185629Y44378D01* +X1185571Y44262D01* +X1185509Y44149D01* +X1185443Y44037D01* +X1185375Y43927D01* +X1185303Y43819D01* +X1185227Y43713D01* +X1185149Y43610D01* +X1185068Y43509D01* +X1184983Y43411D01* +X1184896Y43316D01* +X1184805Y43223D01* +X1184712Y43132D01* +X1184617Y43045D01* +X1184519Y42960D01* +X1184418Y42879D01* +X1184315Y42801D01* +X1184209Y42725D01* +X1184101Y42653D01* +X1183991Y42585D01* +X1183879Y42519D01* +X1183766Y42457D01* +X1183650Y42399D01* +X1183533Y42344D01* +X1183414Y42293D01* +X1183293Y42245D01* +X1183171Y42201D01* +X1183048Y42160D01* +X1182924Y42124D01* +X1182799Y42091D01* +X1182672Y42062D01* +X1182545Y42036D01* +X1182417Y42015D01* +X1182289Y41997D01* +X1182160Y41984D01* +X1182031Y41974D01* +X1181902Y41968D01* +X1181772Y41966D01* +X1195452Y50546D02* +X1195452Y31242D01* +X1195452Y50546D02* +X1200814Y50546D01* +X1200959Y50544D01* +X1201104Y50538D01* +X1201249Y50528D01* +X1201394Y50515D01* +X1201538Y50497D01* +X1201681Y50475D01* +X1201824Y50450D01* +X1201967Y50421D01* +X1202108Y50388D01* +X1202248Y50351D01* +X1202388Y50310D01* +X1202526Y50265D01* +X1202663Y50217D01* +X1202799Y50165D01* +X1202933Y50110D01* +X1203065Y50050D01* +X1203196Y49988D01* +X1203326Y49921D01* +X1203453Y49852D01* +X1203578Y49778D01* +X1203702Y49702D01* +X1203823Y49622D01* +X1203942Y49539D01* +X1204059Y49453D01* +X1204173Y49363D01* +X1204285Y49271D01* +X1204395Y49175D01* +X1204501Y49077D01* +X1204606Y48976D01* +X1204707Y48871D01* +X1204805Y48765D01* +X1204901Y48655D01* +X1204993Y48543D01* +X1205083Y48429D01* +X1205169Y48312D01* +X1205252Y48193D01* +X1205332Y48072D01* +X1205408Y47948D01* +X1205482Y47823D01* +X1205551Y47696D01* +X1205618Y47566D01* +X1205680Y47435D01* +X1205740Y47303D01* +X1205795Y47169D01* +X1205847Y47033D01* +X1205895Y46896D01* +X1205940Y46758D01* +X1205981Y46618D01* +X1206018Y46478D01* +X1206051Y46337D01* +X1206080Y46194D01* +X1206105Y46051D01* +X1206127Y45908D01* +X1206145Y45764D01* +X1206158Y45619D01* +X1206168Y45474D01* +X1206174Y45329D01* +X1206176Y45184D01* +X1206174Y45039D01* +X1206168Y44894D01* +X1206158Y44749D01* +X1206145Y44604D01* +X1206127Y44460D01* +X1206105Y44317D01* +X1206080Y44174D01* +X1206051Y44031D01* +X1206018Y43890D01* +X1205981Y43750D01* +X1205940Y43610D01* +X1205895Y43472D01* +X1205847Y43335D01* +X1205795Y43199D01* +X1205740Y43065D01* +X1205680Y42933D01* +X1205618Y42802D01* +X1205551Y42672D01* +X1205482Y42545D01* +X1205408Y42420D01* +X1205332Y42296D01* +X1205252Y42175D01* +X1205169Y42056D01* +X1205083Y41939D01* +X1204993Y41825D01* +X1204901Y41713D01* +X1204805Y41603D01* +X1204707Y41497D01* +X1204606Y41392D01* +X1204501Y41291D01* +X1204395Y41193D01* +X1204285Y41097D01* +X1204173Y41005D01* +X1204059Y40915D01* +X1203942Y40829D01* +X1203823Y40746D01* +X1203702Y40666D01* +X1203578Y40590D01* +X1203453Y40516D01* +X1203326Y40447D01* +X1203196Y40380D01* +X1203065Y40318D01* +X1202933Y40258D01* +X1202799Y40203D01* +X1202663Y40151D01* +X1202526Y40103D01* +X1202388Y40058D01* +X1202248Y40017D01* +X1202108Y39980D01* +X1201967Y39947D01* +X1201824Y39918D01* +X1201681Y39893D01* +X1201538Y39871D01* +X1201394Y39853D01* +X1201249Y39840D01* +X1201104Y39830D01* +X1200959Y39824D01* +X1200814Y39822D01* +X1195452Y39822D01* +X1201887Y39822D02* +X1206176Y31242D01* +X1213465Y31242D02* +X1219900Y50546D01* +X1226334Y31242D01* +X1224726Y36068D02* +X1215074Y36068D01* +X1235281Y31242D02* +X1235281Y50546D01* +X1233136Y31242D02* +X1237426Y31242D01* +X1237426Y50546D02* +X1233136Y50546D01* +X1245940Y50546D02* +X1245940Y31242D01* +X1256665Y31242D02* +X1245940Y50546D01* +X1256665Y50546D02* +X1256665Y31242D01* +D10* +X1054580Y13787D02* +X1050417Y13787D01* +X1054580Y13787D02* +X1054708Y13785D01* +X1054836Y13779D01* +X1054964Y13769D01* +X1055092Y13755D01* +X1055219Y13738D01* +X1055345Y13716D01* +X1055471Y13691D01* +X1055595Y13661D01* +X1055719Y13628D01* +X1055842Y13591D01* +X1055964Y13550D01* +X1056084Y13506D01* +X1056203Y13458D01* +X1056320Y13406D01* +X1056436Y13351D01* +X1056549Y13292D01* +X1056662Y13229D01* +X1056772Y13163D01* +X1056879Y13094D01* +X1056985Y13022D01* +X1057089Y12946D01* +X1057190Y12867D01* +X1057289Y12785D01* +X1057385Y12700D01* +X1057478Y12613D01* +X1057569Y12522D01* +X1057656Y12429D01* +X1057741Y12333D01* +X1057823Y12234D01* +X1057902Y12133D01* +X1057978Y12029D01* +X1058050Y11923D01* +X1058119Y11816D01* +X1058185Y11705D01* +X1058248Y11593D01* +X1058307Y11480D01* +X1058362Y11364D01* +X1058414Y11247D01* +X1058462Y11128D01* +X1058506Y11008D01* +X1058547Y10886D01* +X1058584Y10763D01* +X1058617Y10639D01* +X1058647Y10515D01* +X1058672Y10389D01* +X1058694Y10263D01* +X1058711Y10136D01* +X1058725Y10008D01* +X1058735Y9880D01* +X1058741Y9752D01* +X1058743Y9624D01* +X1058741Y9496D01* +X1058735Y9368D01* +X1058725Y9240D01* +X1058711Y9112D01* +X1058694Y8985D01* +X1058672Y8859D01* +X1058647Y8733D01* +X1058617Y8609D01* +X1058584Y8485D01* +X1058547Y8362D01* +X1058506Y8240D01* +X1058462Y8120D01* +X1058414Y8001D01* +X1058362Y7884D01* +X1058307Y7768D01* +X1058248Y7655D01* +X1058185Y7542D01* +X1058119Y7432D01* +X1058050Y7325D01* +X1057978Y7219D01* +X1057902Y7115D01* +X1057823Y7014D01* +X1057741Y6915D01* +X1057656Y6819D01* +X1057569Y6726D01* +X1057478Y6635D01* +X1057385Y6548D01* +X1057289Y6463D01* +X1057190Y6381D01* +X1057089Y6302D01* +X1056985Y6226D01* +X1056879Y6154D01* +X1056772Y6085D01* +X1056662Y6019D01* +X1056549Y5956D01* +X1056436Y5897D01* +X1056320Y5842D01* +X1056203Y5790D01* +X1056084Y5742D01* +X1055964Y5698D01* +X1055842Y5657D01* +X1055719Y5620D01* +X1055595Y5587D01* +X1055471Y5557D01* +X1055345Y5532D01* +X1055219Y5510D01* +X1055092Y5493D01* +X1054964Y5479D01* +X1054836Y5469D01* +X1054708Y5463D01* +X1054580Y5461D01* +X1050417Y5461D01* +X1050417Y20447D01* +X1054580Y20447D01* +X1054694Y20445D01* +X1054807Y20439D01* +X1054921Y20430D01* +X1055033Y20416D01* +X1055146Y20399D01* +X1055258Y20377D01* +X1055368Y20352D01* +X1055478Y20324D01* +X1055587Y20291D01* +X1055695Y20255D01* +X1055802Y20215D01* +X1055907Y20171D01* +X1056010Y20124D01* +X1056112Y20074D01* +X1056212Y20020D01* +X1056310Y19962D01* +X1056406Y19901D01* +X1056500Y19838D01* +X1056592Y19770D01* +X1056682Y19700D01* +X1056768Y19627D01* +X1056853Y19551D01* +X1056935Y19472D01* +X1057014Y19390D01* +X1057090Y19305D01* +X1057163Y19219D01* +X1057233Y19129D01* +X1057301Y19037D01* +X1057364Y18943D01* +X1057425Y18847D01* +X1057483Y18749D01* +X1057537Y18649D01* +X1057587Y18547D01* +X1057634Y18444D01* +X1057678Y18339D01* +X1057718Y18232D01* +X1057754Y18124D01* +X1057787Y18015D01* +X1057815Y17905D01* +X1057840Y17795D01* +X1057862Y17683D01* +X1057879Y17570D01* +X1057893Y17458D01* +X1057902Y17344D01* +X1057908Y17231D01* +X1057910Y17117D01* +X1057908Y17003D01* +X1057902Y16890D01* +X1057893Y16776D01* +X1057879Y16664D01* +X1057862Y16551D01* +X1057840Y16439D01* +X1057815Y16329D01* +X1057787Y16219D01* +X1057754Y16110D01* +X1057718Y16002D01* +X1057678Y15895D01* +X1057634Y15790D01* +X1057587Y15687D01* +X1057537Y15585D01* +X1057483Y15485D01* +X1057425Y15387D01* +X1057364Y15291D01* +X1057301Y15197D01* +X1057233Y15105D01* +X1057163Y15015D01* +X1057090Y14929D01* +X1057014Y14844D01* +X1056935Y14762D01* +X1056853Y14683D01* +X1056768Y14607D01* +X1056682Y14534D01* +X1056592Y14464D01* +X1056500Y14396D01* +X1056406Y14333D01* +X1056310Y14272D01* +X1056212Y14214D01* +X1056112Y14160D01* +X1056010Y14110D01* +X1055907Y14063D01* +X1055802Y14019D01* +X1055695Y13979D01* +X1055587Y13943D01* +X1055478Y13910D01* +X1055368Y13882D01* +X1055258Y13857D01* +X1055146Y13835D01* +X1055033Y13818D01* +X1054921Y13804D01* +X1054807Y13795D01* +X1054694Y13789D01* +X1054580Y13787D01* +X1064377Y5461D02* +X1069372Y20447D01* +X1074367Y5461D01* +X1073118Y9208D02* +X1065625Y9208D01* +X1080008Y5461D02* +X1085003Y20447D01* +X1089998Y5461D01* +X1088750Y9208D02* +X1081257Y9208D01* +X1095639Y5461D02* +X1100634Y20447D01* +X1105630Y5461D01* +X1104381Y9208D02* +X1096888Y9208D01* +X1112624Y5461D02* +X1112624Y20447D01* +X1112624Y13787D02* +X1120949Y13787D01* +X1120949Y20447D02* +X1120949Y5461D01* +X1133250Y5461D02* +X1133364Y5463D01* +X1133477Y5469D01* +X1133591Y5478D01* +X1133703Y5492D01* +X1133816Y5509D01* +X1133928Y5531D01* +X1134038Y5556D01* +X1134148Y5584D01* +X1134257Y5617D01* +X1134365Y5653D01* +X1134472Y5693D01* +X1134577Y5737D01* +X1134680Y5784D01* +X1134782Y5834D01* +X1134882Y5888D01* +X1134980Y5946D01* +X1135076Y6007D01* +X1135170Y6071D01* +X1135262Y6138D01* +X1135352Y6208D01* +X1135439Y6281D01* +X1135523Y6357D01* +X1135605Y6436D01* +X1135684Y6518D01* +X1135760Y6603D01* +X1135833Y6689D01* +X1135903Y6779D01* +X1135971Y6871D01* +X1136034Y6965D01* +X1136095Y7061D01* +X1136153Y7159D01* +X1136207Y7259D01* +X1136257Y7361D01* +X1136304Y7464D01* +X1136348Y7569D01* +X1136388Y7676D01* +X1136424Y7784D01* +X1136457Y7893D01* +X1136485Y8003D01* +X1136510Y8113D01* +X1136532Y8225D01* +X1136549Y8338D01* +X1136563Y8450D01* +X1136572Y8564D01* +X1136578Y8677D01* +X1136580Y8791D01* +X1133250Y5461D02* +X1133082Y5463D01* +X1132914Y5469D01* +X1132746Y5479D01* +X1132578Y5493D01* +X1132410Y5511D01* +X1132244Y5533D01* +X1132077Y5559D01* +X1131912Y5589D01* +X1131747Y5623D01* +X1131583Y5661D01* +X1131420Y5703D01* +X1131258Y5749D01* +X1131097Y5799D01* +X1130937Y5852D01* +X1130779Y5909D01* +X1130622Y5970D01* +X1130467Y6035D01* +X1130313Y6103D01* +X1130161Y6176D01* +X1130011Y6251D01* +X1129862Y6331D01* +X1129715Y6413D01* +X1129571Y6500D01* +X1129429Y6589D01* +X1129288Y6683D01* +X1129150Y6779D01* +X1129015Y6879D01* +X1128882Y6982D01* +X1128751Y7088D01* +X1128623Y7197D01* +X1128497Y7309D01* +X1128375Y7424D01* +X1128255Y7542D01* +X1128672Y17117D02* +X1128674Y17231D01* +X1128680Y17344D01* +X1128689Y17458D01* +X1128703Y17570D01* +X1128720Y17683D01* +X1128742Y17795D01* +X1128767Y17905D01* +X1128795Y18015D01* +X1128828Y18124D01* +X1128864Y18232D01* +X1128904Y18339D01* +X1128948Y18444D01* +X1128995Y18547D01* +X1129045Y18649D01* +X1129099Y18749D01* +X1129157Y18847D01* +X1129218Y18943D01* +X1129281Y19037D01* +X1129349Y19129D01* +X1129419Y19219D01* +X1129492Y19305D01* +X1129568Y19390D01* +X1129647Y19472D01* +X1129729Y19551D01* +X1129814Y19627D01* +X1129900Y19700D01* +X1129990Y19770D01* +X1130082Y19838D01* +X1130176Y19901D01* +X1130272Y19962D01* +X1130370Y20020D01* +X1130470Y20074D01* +X1130572Y20124D01* +X1130675Y20171D01* +X1130780Y20215D01* +X1130887Y20255D01* +X1130995Y20291D01* +X1131104Y20324D01* +X1131214Y20352D01* +X1131324Y20377D01* +X1131436Y20399D01* +X1131549Y20416D01* +X1131661Y20430D01* +X1131775Y20439D01* +X1131888Y20445D01* +X1132002Y20447D01* +X1132157Y20445D01* +X1132311Y20439D01* +X1132465Y20430D01* +X1132619Y20416D01* +X1132773Y20399D01* +X1132926Y20378D01* +X1133078Y20354D01* +X1133230Y20325D01* +X1133381Y20293D01* +X1133532Y20257D01* +X1133681Y20217D01* +X1133829Y20174D01* +X1133977Y20127D01* +X1134123Y20076D01* +X1134267Y20022D01* +X1134411Y19964D01* +X1134552Y19902D01* +X1134693Y19838D01* +X1134831Y19769D01* +X1134968Y19698D01* +X1135103Y19622D01* +X1135236Y19544D01* +X1135368Y19462D01* +X1135497Y19377D01* +X1135624Y19289D01* +X1135748Y19198D01* +X1130337Y14203D02* +X1130240Y14262D01* +X1130146Y14325D01* +X1130053Y14390D01* +X1129963Y14459D01* +X1129875Y14530D01* +X1129790Y14605D01* +X1129707Y14682D01* +X1129627Y14762D01* +X1129549Y14844D01* +X1129475Y14930D01* +X1129403Y15017D01* +X1129334Y15107D01* +X1129268Y15199D01* +X1129206Y15294D01* +X1129146Y15390D01* +X1129090Y15488D01* +X1129037Y15589D01* +X1128988Y15691D01* +X1128942Y15794D01* +X1128899Y15899D01* +X1128860Y16005D01* +X1128824Y16113D01* +X1128793Y16222D01* +X1128765Y16331D01* +X1128740Y16442D01* +X1128719Y16553D01* +X1128702Y16665D01* +X1128689Y16778D01* +X1128680Y16891D01* +X1128674Y17004D01* +X1128672Y17117D01* +X1134915Y11705D02* +X1135012Y11646D01* +X1135106Y11583D01* +X1135199Y11518D01* +X1135289Y11449D01* +X1135377Y11378D01* +X1135462Y11303D01* +X1135545Y11226D01* +X1135625Y11146D01* +X1135703Y11064D01* +X1135777Y10978D01* +X1135849Y10891D01* +X1135918Y10801D01* +X1135984Y10709D01* +X1136046Y10614D01* +X1136106Y10518D01* +X1136162Y10420D01* +X1136215Y10319D01* +X1136264Y10217D01* +X1136311Y10114D01* +X1136353Y10009D01* +X1136392Y9903D01* +X1136428Y9795D01* +X1136459Y9686D01* +X1136487Y9577D01* +X1136512Y9466D01* +X1136533Y9355D01* +X1136550Y9243D01* +X1136563Y9130D01* +X1136572Y9017D01* +X1136578Y8904D01* +X1136580Y8791D01* +X1134916Y11705D02* +X1130336Y14203D01* +X1143575Y11289D02* +X1153565Y11289D01* +X1161920Y13787D02* +X1166083Y13787D01* +X1166211Y13785D01* +X1166339Y13779D01* +X1166467Y13769D01* +X1166595Y13755D01* +X1166722Y13738D01* +X1166848Y13716D01* +X1166974Y13691D01* +X1167098Y13661D01* +X1167222Y13628D01* +X1167345Y13591D01* +X1167467Y13550D01* +X1167587Y13506D01* +X1167706Y13458D01* +X1167823Y13406D01* +X1167939Y13351D01* +X1168052Y13292D01* +X1168165Y13229D01* +X1168275Y13163D01* +X1168382Y13094D01* +X1168488Y13022D01* +X1168592Y12946D01* +X1168693Y12867D01* +X1168792Y12785D01* +X1168888Y12700D01* +X1168981Y12613D01* +X1169072Y12522D01* +X1169159Y12429D01* +X1169244Y12333D01* +X1169326Y12234D01* +X1169405Y12133D01* +X1169481Y12029D01* +X1169553Y11923D01* +X1169622Y11816D01* +X1169688Y11705D01* +X1169751Y11593D01* +X1169810Y11480D01* +X1169865Y11364D01* +X1169917Y11247D01* +X1169965Y11128D01* +X1170009Y11008D01* +X1170050Y10886D01* +X1170087Y10763D01* +X1170120Y10639D01* +X1170150Y10515D01* +X1170175Y10389D01* +X1170197Y10263D01* +X1170214Y10136D01* +X1170228Y10008D01* +X1170238Y9880D01* +X1170244Y9752D01* +X1170246Y9624D01* +X1170244Y9496D01* +X1170238Y9368D01* +X1170228Y9240D01* +X1170214Y9112D01* +X1170197Y8985D01* +X1170175Y8859D01* +X1170150Y8733D01* +X1170120Y8609D01* +X1170087Y8485D01* +X1170050Y8362D01* +X1170009Y8240D01* +X1169965Y8120D01* +X1169917Y8001D01* +X1169865Y7884D01* +X1169810Y7768D01* +X1169751Y7655D01* +X1169688Y7542D01* +X1169622Y7432D01* +X1169553Y7325D01* +X1169481Y7219D01* +X1169405Y7115D01* +X1169326Y7014D01* +X1169244Y6915D01* +X1169159Y6819D01* +X1169072Y6726D01* +X1168981Y6635D01* +X1168888Y6548D01* +X1168792Y6463D01* +X1168693Y6381D01* +X1168592Y6302D01* +X1168488Y6226D01* +X1168382Y6154D01* +X1168275Y6085D01* +X1168165Y6019D01* +X1168052Y5956D01* +X1167939Y5897D01* +X1167823Y5842D01* +X1167706Y5790D01* +X1167587Y5742D01* +X1167467Y5698D01* +X1167345Y5657D01* +X1167222Y5620D01* +X1167098Y5587D01* +X1166974Y5557D01* +X1166848Y5532D01* +X1166722Y5510D01* +X1166595Y5493D01* +X1166467Y5479D01* +X1166339Y5469D01* +X1166211Y5463D01* +X1166083Y5461D01* +X1161920Y5461D01* +X1161920Y20447D01* +X1166083Y20447D01* +X1166197Y20445D01* +X1166310Y20439D01* +X1166424Y20430D01* +X1166536Y20416D01* +X1166649Y20399D01* +X1166761Y20377D01* +X1166871Y20352D01* +X1166981Y20324D01* +X1167090Y20291D01* +X1167198Y20255D01* +X1167305Y20215D01* +X1167410Y20171D01* +X1167513Y20124D01* +X1167615Y20074D01* +X1167715Y20020D01* +X1167813Y19962D01* +X1167909Y19901D01* +X1168003Y19838D01* +X1168095Y19770D01* +X1168185Y19700D01* +X1168271Y19627D01* +X1168356Y19551D01* +X1168438Y19472D01* +X1168517Y19390D01* +X1168593Y19305D01* +X1168666Y19219D01* +X1168736Y19129D01* +X1168804Y19037D01* +X1168867Y18943D01* +X1168928Y18847D01* +X1168986Y18749D01* +X1169040Y18649D01* +X1169090Y18547D01* +X1169137Y18444D01* +X1169181Y18339D01* +X1169221Y18232D01* +X1169257Y18124D01* +X1169290Y18015D01* +X1169318Y17905D01* +X1169343Y17795D01* +X1169365Y17683D01* +X1169382Y17570D01* +X1169396Y17458D01* +X1169405Y17344D01* +X1169411Y17231D01* +X1169413Y17117D01* +X1169411Y17003D01* +X1169405Y16890D01* +X1169396Y16776D01* +X1169382Y16664D01* +X1169365Y16551D01* +X1169343Y16439D01* +X1169318Y16329D01* +X1169290Y16219D01* +X1169257Y16110D01* +X1169221Y16002D01* +X1169181Y15895D01* +X1169137Y15790D01* +X1169090Y15687D01* +X1169040Y15585D01* +X1168986Y15485D01* +X1168928Y15387D01* +X1168867Y15291D01* +X1168804Y15197D01* +X1168736Y15105D01* +X1168666Y15015D01* +X1168593Y14929D01* +X1168517Y14844D01* +X1168438Y14762D01* +X1168356Y14683D01* +X1168271Y14607D01* +X1168185Y14534D01* +X1168095Y14464D01* +X1168003Y14396D01* +X1167909Y14333D01* +X1167813Y14272D01* +X1167715Y14214D01* +X1167615Y14160D01* +X1167513Y14110D01* +X1167410Y14063D01* +X1167305Y14019D01* +X1167198Y13979D01* +X1167090Y13943D01* +X1166981Y13910D01* +X1166871Y13882D01* +X1166761Y13857D01* +X1166649Y13835D01* +X1166536Y13818D01* +X1166424Y13804D01* +X1166310Y13795D01* +X1166197Y13789D01* +X1166083Y13787D01* +X1177371Y20447D02* +X1177371Y5461D01* +X1177371Y20447D02* +X1181534Y20447D01* +X1181662Y20445D01* +X1181790Y20439D01* +X1181918Y20429D01* +X1182046Y20415D01* +X1182173Y20398D01* +X1182299Y20376D01* +X1182425Y20351D01* +X1182549Y20321D01* +X1182673Y20288D01* +X1182796Y20251D01* +X1182918Y20210D01* +X1183038Y20166D01* +X1183157Y20118D01* +X1183274Y20066D01* +X1183390Y20011D01* +X1183503Y19952D01* +X1183616Y19889D01* +X1183726Y19823D01* +X1183833Y19754D01* +X1183939Y19682D01* +X1184043Y19606D01* +X1184144Y19527D01* +X1184243Y19445D01* +X1184339Y19360D01* +X1184432Y19273D01* +X1184523Y19182D01* +X1184610Y19089D01* +X1184695Y18993D01* +X1184777Y18894D01* +X1184856Y18793D01* +X1184932Y18689D01* +X1185004Y18583D01* +X1185073Y18476D01* +X1185139Y18365D01* +X1185202Y18253D01* +X1185261Y18140D01* +X1185316Y18024D01* +X1185368Y17907D01* +X1185416Y17788D01* +X1185460Y17668D01* +X1185501Y17546D01* +X1185538Y17423D01* +X1185571Y17299D01* +X1185601Y17175D01* +X1185626Y17049D01* +X1185648Y16923D01* +X1185665Y16796D01* +X1185679Y16668D01* +X1185689Y16540D01* +X1185695Y16412D01* +X1185697Y16284D01* +X1185695Y16156D01* +X1185689Y16028D01* +X1185679Y15900D01* +X1185665Y15772D01* +X1185648Y15645D01* +X1185626Y15519D01* +X1185601Y15393D01* +X1185571Y15269D01* +X1185538Y15145D01* +X1185501Y15022D01* +X1185460Y14900D01* +X1185416Y14780D01* +X1185368Y14661D01* +X1185316Y14544D01* +X1185261Y14428D01* +X1185202Y14315D01* +X1185139Y14202D01* +X1185073Y14092D01* +X1185004Y13985D01* +X1184932Y13879D01* +X1184856Y13775D01* +X1184777Y13674D01* +X1184695Y13575D01* +X1184610Y13479D01* +X1184523Y13386D01* +X1184432Y13295D01* +X1184339Y13208D01* +X1184243Y13123D01* +X1184144Y13041D01* +X1184043Y12962D01* +X1183939Y12886D01* +X1183833Y12814D01* +X1183726Y12745D01* +X1183616Y12679D01* +X1183503Y12616D01* +X1183390Y12557D01* +X1183274Y12502D01* +X1183157Y12450D01* +X1183038Y12402D01* +X1182918Y12358D01* +X1182796Y12317D01* +X1182673Y12280D01* +X1182549Y12247D01* +X1182425Y12217D01* +X1182299Y12192D01* +X1182173Y12170D01* +X1182046Y12153D01* +X1181918Y12139D01* +X1181790Y12129D01* +X1181662Y12123D01* +X1181534Y12121D01* +X1177371Y12121D01* +X1182366Y12121D02* +X1185697Y5461D01* +X1193385Y5461D02* +X1193385Y20447D01* +X1201711Y5461D01* +X1201711Y20447D01* +X1210786Y18366D02* +X1210660Y18099D01* +X1210540Y17830D01* +X1210427Y17557D01* +X1210320Y17283D01* +X1210220Y17005D01* +X1210127Y16726D01* +X1210040Y16444D01* +X1209960Y16160D01* +X1209887Y15874D01* +X1209821Y15587D01* +X1209762Y15298D01* +X1209709Y15008D01* +X1209663Y14717D01* +X1209625Y14425D01* +X1209593Y14132D01* +X1209569Y13838D01* +X1209551Y13543D01* +X1209541Y13249D01* +X1209537Y12954D01* +X1210786Y18366D02* +X1210824Y18469D01* +X1210865Y18570D01* +X1210909Y18669D01* +X1210957Y18768D01* +X1211008Y18864D01* +X1211063Y18958D01* +X1211121Y19051D01* +X1211182Y19141D01* +X1211247Y19229D01* +X1211314Y19315D01* +X1211385Y19398D01* +X1211458Y19479D01* +X1211534Y19557D01* +X1211613Y19633D01* +X1211695Y19705D01* +X1211779Y19775D01* +X1211866Y19841D01* +X1211954Y19905D01* +X1212045Y19965D01* +X1212139Y20022D01* +X1212234Y20076D01* +X1212331Y20126D01* +X1212429Y20173D01* +X1212529Y20216D01* +X1212631Y20256D01* +X1212734Y20292D01* +X1212838Y20324D01* +X1212944Y20353D01* +X1213050Y20378D01* +X1213157Y20399D01* +X1213265Y20416D01* +X1213373Y20430D01* +X1213482Y20439D01* +X1213591Y20445D01* +X1213700Y20447D01* +X1213809Y20445D01* +X1213918Y20439D01* +X1214027Y20430D01* +X1214135Y20416D01* +X1214243Y20399D01* +X1214350Y20378D01* +X1214456Y20353D01* +X1214562Y20324D01* +X1214666Y20292D01* +X1214769Y20256D01* +X1214871Y20216D01* +X1214971Y20173D01* +X1215069Y20126D01* +X1215166Y20076D01* +X1215261Y20022D01* +X1215355Y19965D01* +X1215446Y19905D01* +X1215534Y19841D01* +X1215621Y19775D01* +X1215705Y19705D01* +X1215787Y19633D01* +X1215866Y19557D01* +X1215942Y19479D01* +X1216015Y19398D01* +X1216086Y19315D01* +X1216153Y19229D01* +X1216218Y19141D01* +X1216279Y19051D01* +X1216337Y18958D01* +X1216392Y18864D01* +X1216443Y18768D01* +X1216491Y18669D01* +X1216535Y18570D01* +X1216576Y18469D01* +X1216614Y18366D01* +X1216740Y18099D01* +X1216860Y17830D01* +X1216973Y17557D01* +X1217080Y17283D01* +X1217180Y17005D01* +X1217273Y16726D01* +X1217360Y16444D01* +X1217440Y16160D01* +X1217513Y15874D01* +X1217579Y15587D01* +X1217638Y15298D01* +X1217691Y15008D01* +X1217737Y14717D01* +X1217775Y14425D01* +X1217807Y14132D01* +X1217831Y13838D01* +X1217849Y13543D01* +X1217859Y13249D01* +X1217863Y12954D01* +X1209537Y12954D02* +X1209541Y12659D01* +X1209551Y12365D01* +X1209569Y12070D01* +X1209593Y11776D01* +X1209625Y11483D01* +X1209663Y11191D01* +X1209709Y10900D01* +X1209762Y10610D01* +X1209821Y10321D01* +X1209887Y10034D01* +X1209960Y9748D01* +X1210040Y9464D01* +X1210127Y9182D01* +X1210220Y8903D01* +X1210320Y8625D01* +X1210427Y8351D01* +X1210540Y8078D01* +X1210660Y7809D01* +X1210786Y7542D01* +X1210824Y7439D01* +X1210865Y7338D01* +X1210909Y7239D01* +X1210957Y7140D01* +X1211008Y7044D01* +X1211063Y6950D01* +X1211121Y6857D01* +X1211182Y6767D01* +X1211247Y6679D01* +X1211314Y6593D01* +X1211385Y6510D01* +X1211458Y6429D01* +X1211534Y6351D01* +X1211613Y6275D01* +X1211695Y6203D01* +X1211779Y6133D01* +X1211866Y6067D01* +X1211954Y6003D01* +X1212045Y5943D01* +X1212139Y5886D01* +X1212234Y5832D01* +X1212331Y5782D01* +X1212429Y5735D01* +X1212529Y5692D01* +X1212631Y5652D01* +X1212734Y5616D01* +X1212838Y5584D01* +X1212944Y5555D01* +X1213050Y5530D01* +X1213157Y5509D01* +X1213265Y5492D01* +X1213373Y5478D01* +X1213482Y5469D01* +X1213591Y5463D01* +X1213700Y5461D01* +X1216614Y7542D02* +X1216740Y7809D01* +X1216860Y8078D01* +X1216973Y8351D01* +X1217080Y8625D01* +X1217180Y8903D01* +X1217273Y9182D01* +X1217360Y9464D01* +X1217440Y9748D01* +X1217513Y10034D01* +X1217579Y10321D01* +X1217638Y10610D01* +X1217691Y10900D01* +X1217737Y11191D01* +X1217775Y11483D01* +X1217807Y11776D01* +X1217831Y12070D01* +X1217849Y12365D01* +X1217859Y12659D01* +X1217863Y12954D01* +X1216614Y7542D02* +X1216576Y7439D01* +X1216535Y7338D01* +X1216491Y7239D01* +X1216443Y7140D01* +X1216392Y7044D01* +X1216337Y6950D01* +X1216279Y6857D01* +X1216218Y6767D01* +X1216153Y6679D01* +X1216086Y6593D01* +X1216015Y6510D01* +X1215942Y6429D01* +X1215866Y6351D01* +X1215787Y6275D01* +X1215705Y6203D01* +X1215621Y6133D01* +X1215534Y6067D01* +X1215446Y6003D01* +X1215354Y5943D01* +X1215261Y5886D01* +X1215166Y5832D01* +X1215069Y5782D01* +X1214971Y5735D01* +X1214871Y5692D01* +X1214769Y5652D01* +X1214666Y5616D01* +X1214562Y5584D01* +X1214456Y5555D01* +X1214350Y5530D01* +X1214243Y5509D01* +X1214135Y5492D01* +X1214027Y5478D01* +X1213918Y5469D01* +X1213809Y5463D01* +X1213700Y5461D01* +X1210370Y8791D02* +X1217031Y17117D01* +X1225169Y17117D02* +X1229332Y20447D01* +X1229332Y5461D01* +X1233494Y5461D02* +X1225169Y5461D01* +X1241010Y11289D02* +X1251000Y11289D01* +X1261786Y5461D02* +X1265116Y5461D01* +X1261786Y5461D02* +X1261672Y5463D01* +X1261559Y5469D01* +X1261445Y5478D01* +X1261333Y5492D01* +X1261220Y5509D01* +X1261108Y5531D01* +X1260998Y5556D01* +X1260888Y5584D01* +X1260779Y5617D01* +X1260671Y5653D01* +X1260564Y5693D01* +X1260459Y5737D01* +X1260356Y5784D01* +X1260254Y5834D01* +X1260154Y5888D01* +X1260056Y5946D01* +X1259960Y6007D01* +X1259866Y6070D01* +X1259774Y6138D01* +X1259684Y6208D01* +X1259598Y6281D01* +X1259513Y6357D01* +X1259431Y6436D01* +X1259352Y6518D01* +X1259276Y6603D01* +X1259203Y6689D01* +X1259133Y6779D01* +X1259065Y6871D01* +X1259002Y6965D01* +X1258941Y7061D01* +X1258883Y7159D01* +X1258829Y7259D01* +X1258779Y7361D01* +X1258732Y7464D01* +X1258688Y7569D01* +X1258648Y7676D01* +X1258612Y7784D01* +X1258579Y7893D01* +X1258551Y8003D01* +X1258526Y8113D01* +X1258504Y8225D01* +X1258487Y8338D01* +X1258473Y8450D01* +X1258464Y8564D01* +X1258458Y8677D01* +X1258456Y8791D01* +X1258456Y17117D01* +X1258458Y17231D01* +X1258464Y17344D01* +X1258473Y17458D01* +X1258487Y17570D01* +X1258504Y17683D01* +X1258526Y17795D01* +X1258551Y17905D01* +X1258579Y18015D01* +X1258612Y18124D01* +X1258648Y18232D01* +X1258688Y18339D01* +X1258732Y18444D01* +X1258779Y18547D01* +X1258829Y18649D01* +X1258883Y18749D01* +X1258941Y18847D01* +X1259002Y18943D01* +X1259065Y19037D01* +X1259133Y19129D01* +X1259203Y19219D01* +X1259276Y19305D01* +X1259352Y19390D01* +X1259431Y19472D01* +X1259513Y19551D01* +X1259597Y19627D01* +X1259684Y19700D01* +X1259774Y19770D01* +X1259866Y19837D01* +X1259960Y19901D01* +X1260056Y19962D01* +X1260154Y20020D01* +X1260254Y20074D01* +X1260356Y20124D01* +X1260459Y20171D01* +X1260564Y20215D01* +X1260671Y20255D01* +X1260779Y20291D01* +X1260888Y20324D01* +X1260998Y20352D01* +X1261108Y20377D01* +X1261220Y20399D01* +X1261333Y20416D01* +X1261445Y20430D01* +X1261559Y20439D01* +X1261672Y20445D01* +X1261786Y20447D01* +X1265116Y20447D01* +D11* +X557022Y197104D02* +X554736Y194818D01* +X557022Y197104D02* +X573786Y197104D01* +X573786Y220980D01* +X578866Y226060D01* +X579628Y193802D02* +X577596Y191770D01* +X572008Y191770D01* +X714502Y154178D02* +X714502Y122682D01* +X725932Y111252D01* +X629158Y194818D02* +X629158Y197612D01* +X629158Y194818D02* +X659384Y194818D01* +X659384Y197358D01* +X643890Y194564D02* +X643890Y184150D01* +X668274Y159766D01* +X671576Y159766D01* +D13* +X297180Y302260D03* +D14* +X297688Y316625D02* +X297688Y318544D01* +X297688Y316625D02* +X297686Y316539D01* +X297680Y316453D01* +X297671Y316367D01* +X297657Y316282D01* +X297640Y316198D01* +X297619Y316114D01* +X297594Y316032D01* +X297566Y315951D01* +X297534Y315871D01* +X297498Y315792D01* +X297459Y315716D01* +X297416Y315641D01* +X297371Y315568D01* +X297322Y315497D01* +X297269Y315429D01* +X297214Y315362D01* +X297156Y315299D01* +X297095Y315238D01* +X297032Y315180D01* +X296965Y315125D01* +X296897Y315073D01* +X296826Y315023D01* +X296753Y314978D01* +X296678Y314935D01* +X296602Y314896D01* +X296523Y314860D01* +X296443Y314828D01* +X296362Y314800D01* +X296280Y314775D01* +X296196Y314754D01* +X296112Y314737D01* +X296027Y314723D01* +X295941Y314714D01* +X295855Y314708D01* +X295769Y314706D01* +X290971Y314706D01* +X290885Y314708D01* +X290799Y314714D01* +X290713Y314723D01* +X290628Y314737D01* +X290544Y314754D01* +X290460Y314775D01* +X290378Y314800D01* +X290297Y314828D01* +X290217Y314860D01* +X290138Y314896D01* +X290062Y314935D01* +X289987Y314978D01* +X289914Y315023D01* +X289843Y315072D01* +X289775Y315125D01* +X289708Y315180D01* +X289645Y315238D01* +X289584Y315299D01* +X289526Y315362D01* +X289471Y315429D01* +X289419Y315497D01* +X289369Y315568D01* +X289324Y315641D01* +X289281Y315716D01* +X289242Y315792D01* +X289206Y315871D01* +X289174Y315951D01* +X289146Y316032D01* +X289121Y316114D01* +X289100Y316198D01* +X289083Y316282D01* +X289069Y316367D01* +X289060Y316453D01* +X289054Y316539D01* +X289052Y316625D01* +X289052Y318544D01* +X293850Y324283D02* +X293850Y327162D01* +X293850Y324283D02* +X293848Y324197D01* +X293842Y324111D01* +X293833Y324025D01* +X293819Y323940D01* +X293802Y323856D01* +X293781Y323772D01* +X293756Y323690D01* +X293728Y323609D01* +X293696Y323529D01* +X293660Y323450D01* +X293621Y323374D01* +X293578Y323299D01* +X293533Y323226D01* +X293484Y323155D01* +X293431Y323087D01* +X293376Y323020D01* +X293318Y322957D01* +X293257Y322896D01* +X293194Y322838D01* +X293127Y322783D01* +X293059Y322731D01* +X292988Y322681D01* +X292915Y322636D01* +X292840Y322593D01* +X292764Y322554D01* +X292685Y322518D01* +X292605Y322486D01* +X292524Y322458D01* +X292442Y322433D01* +X292358Y322412D01* +X292274Y322395D01* +X292189Y322381D01* +X292103Y322372D01* +X292017Y322366D01* +X291931Y322364D01* +X291451Y322364D01* +X291354Y322366D01* +X291258Y322372D01* +X291162Y322381D01* +X291066Y322395D01* +X290971Y322412D01* +X290877Y322434D01* +X290784Y322459D01* +X290691Y322487D01* +X290600Y322520D01* +X290511Y322556D01* +X290423Y322596D01* +X290336Y322639D01* +X290252Y322685D01* +X290169Y322735D01* +X290088Y322789D01* +X290010Y322845D01* +X289934Y322905D01* +X289860Y322967D01* +X289789Y323033D01* +X289721Y323101D01* +X289655Y323172D01* +X289593Y323246D01* +X289533Y323322D01* +X289477Y323400D01* +X289423Y323481D01* +X289373Y323564D01* +X289327Y323648D01* +X289284Y323735D01* +X289244Y323823D01* +X289208Y323912D01* +X289175Y324003D01* +X289147Y324096D01* +X289122Y324189D01* +X289100Y324283D01* +X289083Y324378D01* +X289069Y324474D01* +X289060Y324570D01* +X289054Y324666D01* +X289052Y324763D01* +X289054Y324860D01* +X289060Y324956D01* +X289069Y325052D01* +X289083Y325148D01* +X289100Y325243D01* +X289122Y325337D01* +X289147Y325430D01* +X289175Y325523D01* +X289208Y325614D01* +X289244Y325703D01* +X289284Y325791D01* +X289327Y325878D01* +X289373Y325963D01* +X289423Y326045D01* +X289477Y326126D01* +X289533Y326204D01* +X289593Y326280D01* +X289655Y326354D01* +X289721Y326425D01* +X289789Y326493D01* +X289860Y326559D01* +X289934Y326621D01* +X290010Y326681D01* +X290088Y326737D01* +X290169Y326791D01* +X290252Y326841D01* +X290336Y326887D01* +X290423Y326930D01* +X290511Y326970D01* +X290600Y327006D01* +X290691Y327039D01* +X290784Y327067D01* +X290877Y327092D01* +X290971Y327114D01* +X291066Y327131D01* +X291162Y327145D01* +X291258Y327154D01* +X291354Y327160D01* +X291451Y327162D01* +X293850Y327162D01* +X293973Y327160D01* +X294096Y327154D01* +X294219Y327144D01* +X294341Y327130D01* +X294463Y327113D01* +X294584Y327091D01* +X294704Y327066D01* +X294824Y327036D01* +X294942Y327003D01* +X295059Y326966D01* +X295176Y326926D01* +X295290Y326882D01* +X295404Y326834D01* +X295515Y326782D01* +X295625Y326727D01* +X295733Y326668D01* +X295840Y326606D01* +X295944Y326541D01* +X296046Y326472D01* +X296146Y326400D01* +X296243Y326325D01* +X296338Y326246D01* +X296430Y326165D01* +X296520Y326081D01* +X296607Y325994D01* +X296691Y325904D01* +X296772Y325812D01* +X296851Y325717D01* +X296926Y325620D01* +X296998Y325520D01* +X297067Y325418D01* +X297132Y325314D01* +X297194Y325207D01* +X297253Y325099D01* +X297308Y324989D01* +X297360Y324878D01* +X297408Y324764D01* +X297452Y324650D01* +X297492Y324533D01* +X297529Y324416D01* +X297562Y324298D01* +X297592Y324178D01* +X297617Y324058D01* +X297639Y323937D01* +X297656Y323815D01* +X297670Y323693D01* +X297680Y323570D01* +X297686Y323447D01* +X297688Y323324D01* +D13* +X347980Y187960D03* +D14* +X363728Y183660D02* +X363728Y181741D01* +X363726Y181655D01* +X363720Y181569D01* +X363711Y181483D01* +X363697Y181398D01* +X363680Y181314D01* +X363659Y181230D01* +X363634Y181148D01* +X363606Y181067D01* +X363574Y180987D01* +X363538Y180908D01* +X363499Y180832D01* +X363456Y180757D01* +X363411Y180684D01* +X363362Y180613D01* +X363309Y180545D01* +X363254Y180478D01* +X363196Y180415D01* +X363135Y180354D01* +X363072Y180296D01* +X363005Y180241D01* +X362937Y180189D01* +X362866Y180139D01* +X362793Y180094D01* +X362718Y180051D01* +X362642Y180012D01* +X362563Y179976D01* +X362483Y179944D01* +X362402Y179916D01* +X362320Y179891D01* +X362236Y179870D01* +X362152Y179853D01* +X362067Y179839D01* +X361981Y179830D01* +X361895Y179824D01* +X361809Y179822D01* +X357011Y179822D01* +X356925Y179824D01* +X356839Y179830D01* +X356753Y179839D01* +X356668Y179853D01* +X356584Y179870D01* +X356500Y179891D01* +X356418Y179916D01* +X356337Y179944D01* +X356257Y179976D01* +X356178Y180012D01* +X356102Y180051D01* +X356027Y180094D01* +X355954Y180139D01* +X355883Y180188D01* +X355815Y180241D01* +X355748Y180296D01* +X355685Y180354D01* +X355624Y180415D01* +X355566Y180478D01* +X355511Y180545D01* +X355459Y180613D01* +X355409Y180684D01* +X355364Y180757D01* +X355321Y180832D01* +X355282Y180908D01* +X355246Y180987D01* +X355214Y181067D01* +X355186Y181148D01* +X355161Y181230D01* +X355140Y181314D01* +X355123Y181398D01* +X355109Y181483D01* +X355100Y181569D01* +X355094Y181655D01* +X355092Y181741D01* +X355092Y183660D01* +X355092Y190119D02* +X355094Y190211D01* +X355100Y190302D01* +X355109Y190393D01* +X355123Y190484D01* +X355140Y190574D01* +X355162Y190663D01* +X355187Y190751D01* +X355215Y190838D01* +X355248Y190924D01* +X355284Y191008D01* +X355323Y191091D01* +X355366Y191172D01* +X355413Y191251D01* +X355462Y191328D01* +X355515Y191403D01* +X355571Y191475D01* +X355630Y191545D01* +X355692Y191613D01* +X355757Y191678D01* +X355825Y191740D01* +X355895Y191799D01* +X355967Y191855D01* +X356042Y191908D01* +X356119Y191957D01* +X356198Y192004D01* +X356279Y192047D01* +X356362Y192086D01* +X356446Y192122D01* +X356532Y192155D01* +X356619Y192183D01* +X356707Y192208D01* +X356796Y192230D01* +X356886Y192247D01* +X356977Y192261D01* +X357068Y192270D01* +X357159Y192276D01* +X357251Y192278D01* +X355092Y190119D02* +X355094Y190016D01* +X355100Y189914D01* +X355109Y189812D01* +X355122Y189710D01* +X355139Y189609D01* +X355160Y189508D01* +X355184Y189409D01* +X355213Y189310D01* +X355244Y189213D01* +X355280Y189116D01* +X355318Y189021D01* +X355361Y188928D01* +X355407Y188836D01* +X355456Y188746D01* +X355508Y188658D01* +X355564Y188571D01* +X355623Y188487D01* +X355684Y188406D01* +X355749Y188326D01* +X355817Y188249D01* +X355888Y188174D01* +X355961Y188103D01* +X356037Y188034D01* +X356115Y187967D01* +X356196Y187904D01* +X356279Y187844D01* +X356364Y187787D01* +X356451Y187733D01* +X356541Y187682D01* +X356632Y187635D01* +X356724Y187591D01* +X356819Y187550D01* +X356914Y187513D01* +X357011Y187480D01* +X358930Y191558D02* +X358864Y191625D01* +X358795Y191689D01* +X358724Y191750D01* +X358650Y191808D01* +X358574Y191863D01* +X358496Y191915D01* +X358416Y191964D01* +X358334Y192010D01* +X358250Y192052D01* +X358164Y192091D01* +X358077Y192126D01* +X357989Y192157D01* +X357899Y192185D01* +X357809Y192210D01* +X357717Y192231D01* +X357625Y192248D01* +X357532Y192261D01* +X357439Y192270D01* +X357345Y192276D01* +X357251Y192278D01* +X358930Y191558D02* +X363728Y187480D01* +X363728Y192278D01* +X359890Y198543D02* +X359890Y201422D01* +X359890Y198543D02* +X359888Y198457D01* +X359882Y198371D01* +X359873Y198285D01* +X359859Y198200D01* +X359842Y198116D01* +X359821Y198032D01* +X359796Y197950D01* +X359768Y197869D01* +X359736Y197789D01* +X359700Y197710D01* +X359661Y197634D01* +X359618Y197559D01* +X359573Y197486D01* +X359524Y197415D01* +X359471Y197347D01* +X359416Y197280D01* +X359358Y197217D01* +X359297Y197156D01* +X359234Y197098D01* +X359167Y197043D01* +X359099Y196991D01* +X359028Y196941D01* +X358955Y196896D01* +X358880Y196853D01* +X358804Y196814D01* +X358725Y196778D01* +X358645Y196746D01* +X358564Y196718D01* +X358482Y196693D01* +X358398Y196672D01* +X358314Y196655D01* +X358229Y196641D01* +X358143Y196632D01* +X358057Y196626D01* +X357971Y196624D01* +X357491Y196624D01* +X357394Y196626D01* +X357298Y196632D01* +X357202Y196641D01* +X357106Y196655D01* +X357011Y196672D01* +X356917Y196694D01* +X356824Y196719D01* +X356731Y196747D01* +X356640Y196780D01* +X356551Y196816D01* +X356463Y196856D01* +X356376Y196899D01* +X356292Y196945D01* +X356209Y196995D01* +X356128Y197049D01* +X356050Y197105D01* +X355974Y197165D01* +X355900Y197227D01* +X355829Y197293D01* +X355761Y197361D01* +X355695Y197432D01* +X355633Y197506D01* +X355573Y197582D01* +X355517Y197660D01* +X355463Y197741D01* +X355413Y197824D01* +X355367Y197908D01* +X355324Y197995D01* +X355284Y198083D01* +X355248Y198172D01* +X355215Y198263D01* +X355187Y198356D01* +X355162Y198449D01* +X355140Y198543D01* +X355123Y198638D01* +X355109Y198734D01* +X355100Y198830D01* +X355094Y198926D01* +X355092Y199023D01* +X355094Y199120D01* +X355100Y199216D01* +X355109Y199312D01* +X355123Y199408D01* +X355140Y199503D01* +X355162Y199597D01* +X355187Y199690D01* +X355215Y199783D01* +X355248Y199874D01* +X355284Y199963D01* +X355324Y200051D01* +X355367Y200138D01* +X355413Y200223D01* +X355463Y200305D01* +X355517Y200386D01* +X355573Y200464D01* +X355633Y200540D01* +X355695Y200614D01* +X355761Y200685D01* +X355829Y200753D01* +X355900Y200819D01* +X355974Y200881D01* +X356050Y200941D01* +X356128Y200997D01* +X356209Y201051D01* +X356292Y201101D01* +X356376Y201147D01* +X356463Y201190D01* +X356551Y201230D01* +X356640Y201266D01* +X356731Y201299D01* +X356824Y201327D01* +X356917Y201352D01* +X357011Y201374D01* +X357106Y201391D01* +X357202Y201405D01* +X357298Y201414D01* +X357394Y201420D01* +X357491Y201422D01* +X359890Y201422D01* +X360013Y201420D01* +X360136Y201414D01* +X360259Y201404D01* +X360381Y201390D01* +X360503Y201373D01* +X360624Y201351D01* +X360744Y201326D01* +X360864Y201296D01* +X360982Y201263D01* +X361099Y201226D01* +X361216Y201186D01* +X361330Y201142D01* +X361444Y201094D01* +X361555Y201042D01* +X361665Y200987D01* +X361773Y200928D01* +X361880Y200866D01* +X361984Y200801D01* +X362086Y200732D01* +X362186Y200660D01* +X362283Y200585D01* +X362378Y200506D01* +X362470Y200425D01* +X362560Y200341D01* +X362647Y200254D01* +X362731Y200164D01* +X362812Y200072D01* +X362891Y199977D01* +X362966Y199880D01* +X363038Y199780D01* +X363107Y199678D01* +X363172Y199574D01* +X363234Y199467D01* +X363293Y199359D01* +X363348Y199249D01* +X363400Y199138D01* +X363448Y199024D01* +X363492Y198910D01* +X363532Y198793D01* +X363569Y198676D01* +X363602Y198558D01* +X363632Y198438D01* +X363657Y198318D01* +X363679Y198197D01* +X363696Y198075D01* +X363710Y197953D01* +X363720Y197830D01* +X363726Y197707D01* +X363728Y197584D01* +D13* +X497840Y254000D03* +D14* +X502158Y225316D02* +X502158Y223397D01* +X502156Y223311D01* +X502150Y223225D01* +X502141Y223139D01* +X502127Y223054D01* +X502110Y222970D01* +X502089Y222886D01* +X502064Y222804D01* +X502036Y222723D01* +X502004Y222643D01* +X501968Y222564D01* +X501929Y222488D01* +X501886Y222413D01* +X501841Y222340D01* +X501792Y222269D01* +X501739Y222201D01* +X501684Y222134D01* +X501626Y222071D01* +X501565Y222010D01* +X501502Y221952D01* +X501435Y221897D01* +X501367Y221845D01* +X501296Y221795D01* +X501223Y221750D01* +X501148Y221707D01* +X501072Y221668D01* +X500993Y221632D01* +X500913Y221600D01* +X500832Y221572D01* +X500750Y221547D01* +X500666Y221526D01* +X500582Y221509D01* +X500497Y221495D01* +X500411Y221486D01* +X500325Y221480D01* +X500239Y221478D01* +X495441Y221478D01* +X495355Y221480D01* +X495269Y221486D01* +X495183Y221495D01* +X495098Y221509D01* +X495014Y221526D01* +X494930Y221547D01* +X494848Y221572D01* +X494767Y221600D01* +X494687Y221632D01* +X494608Y221668D01* +X494532Y221707D01* +X494457Y221750D01* +X494384Y221795D01* +X494313Y221844D01* +X494245Y221897D01* +X494178Y221952D01* +X494115Y222010D01* +X494054Y222071D01* +X493996Y222134D01* +X493941Y222201D01* +X493889Y222269D01* +X493839Y222340D01* +X493794Y222413D01* +X493751Y222488D01* +X493712Y222564D01* +X493676Y222643D01* +X493644Y222723D01* +X493616Y222804D01* +X493591Y222886D01* +X493570Y222970D01* +X493553Y223054D01* +X493539Y223139D01* +X493530Y223225D01* +X493524Y223311D01* +X493522Y223397D01* +X493522Y225316D01* +X493522Y231775D02* +X493524Y231867D01* +X493530Y231958D01* +X493539Y232049D01* +X493553Y232140D01* +X493570Y232230D01* +X493592Y232319D01* +X493617Y232407D01* +X493645Y232494D01* +X493678Y232580D01* +X493714Y232664D01* +X493753Y232747D01* +X493796Y232828D01* +X493843Y232907D01* +X493892Y232984D01* +X493945Y233059D01* +X494001Y233131D01* +X494060Y233201D01* +X494122Y233269D01* +X494187Y233334D01* +X494255Y233396D01* +X494325Y233455D01* +X494397Y233511D01* +X494472Y233564D01* +X494549Y233613D01* +X494628Y233660D01* +X494709Y233703D01* +X494792Y233742D01* +X494876Y233778D01* +X494962Y233811D01* +X495049Y233839D01* +X495137Y233864D01* +X495226Y233886D01* +X495316Y233903D01* +X495407Y233917D01* +X495498Y233926D01* +X495589Y233932D01* +X495681Y233934D01* +X493522Y231775D02* +X493524Y231672D01* +X493530Y231570D01* +X493539Y231468D01* +X493552Y231366D01* +X493569Y231265D01* +X493590Y231164D01* +X493614Y231065D01* +X493643Y230966D01* +X493674Y230869D01* +X493710Y230772D01* +X493748Y230677D01* +X493791Y230584D01* +X493837Y230492D01* +X493886Y230402D01* +X493938Y230314D01* +X493994Y230227D01* +X494053Y230143D01* +X494114Y230062D01* +X494179Y229982D01* +X494247Y229905D01* +X494318Y229830D01* +X494391Y229759D01* +X494467Y229690D01* +X494545Y229623D01* +X494626Y229560D01* +X494709Y229500D01* +X494794Y229443D01* +X494881Y229389D01* +X494971Y229338D01* +X495062Y229291D01* +X495154Y229247D01* +X495249Y229206D01* +X495344Y229169D01* +X495441Y229136D01* +X497360Y233214D02* +X497294Y233281D01* +X497225Y233345D01* +X497154Y233406D01* +X497080Y233464D01* +X497004Y233519D01* +X496926Y233571D01* +X496846Y233620D01* +X496764Y233666D01* +X496680Y233708D01* +X496594Y233747D01* +X496507Y233782D01* +X496419Y233813D01* +X496329Y233841D01* +X496239Y233866D01* +X496147Y233887D01* +X496055Y233904D01* +X495962Y233917D01* +X495869Y233926D01* +X495775Y233932D01* +X495681Y233934D01* +X497360Y233214D02* +X502158Y229136D01* +X502158Y233934D01* +X497840Y238280D02* +X497670Y238282D01* +X497500Y238288D01* +X497331Y238298D01* +X497161Y238312D01* +X496992Y238331D01* +X496824Y238353D01* +X496656Y238379D01* +X496489Y238409D01* +X496323Y238444D01* +X496157Y238482D01* +X495992Y238524D01* +X495829Y238570D01* +X495667Y238620D01* +X495505Y238674D01* +X495346Y238731D01* +X495187Y238793D01* +X495030Y238858D01* +X494875Y238927D01* +X494721Y239000D01* +X494645Y239028D01* +X494570Y239060D01* +X494496Y239095D01* +X494424Y239133D01* +X494354Y239175D01* +X494286Y239220D01* +X494220Y239268D01* +X494156Y239319D01* +X494095Y239373D01* +X494036Y239429D01* +X493980Y239489D01* +X493927Y239550D01* +X493877Y239614D01* +X493829Y239681D01* +X493785Y239749D01* +X493744Y239820D01* +X493706Y239892D01* +X493672Y239966D01* +X493641Y240041D01* +X493613Y240118D01* +X493589Y240196D01* +X493569Y240275D01* +X493552Y240355D01* +X493539Y240435D01* +X493529Y240516D01* +X493524Y240597D01* +X493522Y240679D01* +X493524Y240761D01* +X493529Y240842D01* +X493539Y240923D01* +X493552Y241003D01* +X493569Y241083D01* +X493589Y241162D01* +X493613Y241240D01* +X493641Y241317D01* +X493672Y241392D01* +X493706Y241466D01* +X493744Y241538D01* +X493785Y241609D01* +X493829Y241677D01* +X493877Y241744D01* +X493927Y241808D01* +X493980Y241869D01* +X494036Y241929D01* +X494095Y241985D01* +X494156Y242039D01* +X494220Y242090D01* +X494286Y242138D01* +X494354Y242183D01* +X494424Y242225D01* +X494496Y242263D01* +X494570Y242298D01* +X494645Y242330D01* +X494721Y242358D01* +X494875Y242431D01* +X495030Y242500D01* +X495187Y242565D01* +X495346Y242627D01* +X495505Y242684D01* +X495667Y242738D01* +X495829Y242788D01* +X495992Y242834D01* +X496157Y242876D01* +X496323Y242914D01* +X496489Y242949D01* +X496656Y242979D01* +X496824Y243005D01* +X496992Y243027D01* +X497161Y243046D01* +X497331Y243060D01* +X497500Y243070D01* +X497670Y243076D01* +X497840Y243078D01* +X497840Y238280D02* +X498010Y238282D01* +X498180Y238288D01* +X498349Y238298D01* +X498519Y238312D01* +X498688Y238331D01* +X498856Y238353D01* +X499024Y238379D01* +X499191Y238409D01* +X499357Y238444D01* +X499523Y238482D01* +X499688Y238524D01* +X499851Y238570D01* +X500013Y238620D01* +X500175Y238674D01* +X500334Y238731D01* +X500493Y238793D01* +X500650Y238858D01* +X500805Y238927D01* +X500959Y239000D01* +X501035Y239028D01* +X501110Y239060D01* +X501184Y239095D01* +X501256Y239133D01* +X501326Y239175D01* +X501394Y239220D01* +X501460Y239268D01* +X501524Y239319D01* +X501585Y239373D01* +X501644Y239429D01* +X501700Y239489D01* +X501753Y239550D01* +X501803Y239614D01* +X501851Y239681D01* +X501895Y239749D01* +X501936Y239820D01* +X501974Y239892D01* +X502008Y239966D01* +X502039Y240041D01* +X502067Y240118D01* +X502091Y240196D01* +X502111Y240275D01* +X502128Y240355D01* +X502141Y240435D01* +X502151Y240516D01* +X502156Y240597D01* +X502158Y240679D01* +X500959Y242358D02* +X500805Y242431D01* +X500650Y242500D01* +X500493Y242565D01* +X500334Y242627D01* +X500175Y242684D01* +X500013Y242738D01* +X499851Y242788D01* +X499688Y242834D01* +X499523Y242876D01* +X499357Y242914D01* +X499191Y242949D01* +X499024Y242979D01* +X498856Y243005D01* +X498688Y243027D01* +X498519Y243046D01* +X498349Y243060D01* +X498180Y243070D01* +X498010Y243076D01* +X497840Y243078D01* +X500959Y242358D02* +X501035Y242330D01* +X501110Y242298D01* +X501184Y242263D01* +X501256Y242225D01* +X501326Y242183D01* +X501394Y242138D01* +X501460Y242090D01* +X501524Y242039D01* +X501585Y241985D01* +X501644Y241929D01* +X501700Y241869D01* +X501753Y241808D01* +X501803Y241744D01* +X501851Y241677D01* +X501895Y241609D01* +X501936Y241538D01* +X501974Y241466D01* +X502008Y241392D01* +X502039Y241317D01* +X502067Y241240D01* +X502091Y241162D01* +X502111Y241083D01* +X502128Y241003D01* +X502141Y240923D01* +X502151Y240842D01* +X502156Y240761D01* +X502158Y240679D01* +X500239Y238760D02* +X495441Y242598D01* +D15* +X576580Y71120D03* +D14* +X580644Y38118D02* +X580644Y36199D01* +X580642Y36113D01* +X580636Y36027D01* +X580627Y35941D01* +X580613Y35856D01* +X580596Y35772D01* +X580575Y35688D01* +X580550Y35606D01* +X580522Y35525D01* +X580490Y35445D01* +X580454Y35366D01* +X580415Y35290D01* +X580372Y35215D01* +X580327Y35142D01* +X580278Y35071D01* +X580225Y35003D01* +X580170Y34936D01* +X580112Y34873D01* +X580051Y34812D01* +X579988Y34754D01* +X579921Y34699D01* +X579853Y34647D01* +X579782Y34597D01* +X579709Y34552D01* +X579634Y34509D01* +X579558Y34470D01* +X579479Y34434D01* +X579399Y34402D01* +X579318Y34374D01* +X579236Y34349D01* +X579152Y34328D01* +X579068Y34311D01* +X578983Y34297D01* +X578897Y34288D01* +X578811Y34282D01* +X578725Y34280D01* +X573927Y34280D01* +X573841Y34282D01* +X573755Y34288D01* +X573669Y34297D01* +X573584Y34311D01* +X573500Y34328D01* +X573416Y34349D01* +X573334Y34374D01* +X573253Y34402D01* +X573173Y34434D01* +X573094Y34470D01* +X573018Y34509D01* +X572943Y34552D01* +X572870Y34597D01* +X572799Y34646D01* +X572731Y34699D01* +X572664Y34754D01* +X572601Y34812D01* +X572540Y34873D01* +X572482Y34936D01* +X572427Y35003D01* +X572375Y35071D01* +X572325Y35142D01* +X572280Y35215D01* +X572237Y35290D01* +X572198Y35366D01* +X572162Y35445D01* +X572130Y35525D01* +X572102Y35606D01* +X572077Y35688D01* +X572056Y35772D01* +X572039Y35856D01* +X572025Y35941D01* +X572016Y36027D01* +X572010Y36113D01* +X572008Y36199D01* +X572008Y38118D01* +X573927Y41938D02* +X572008Y44337D01* +X580644Y44337D01* +X580644Y41938D02* +X580644Y46736D01* +X573927Y51082D02* +X572008Y53481D01* +X580644Y53481D01* +X580644Y51082D02* +X580644Y55880D01* +D15* +X355600Y58420D03* +D14* +X345948Y49050D02* +X345948Y47131D01* +X345946Y47045D01* +X345940Y46959D01* +X345931Y46873D01* +X345917Y46788D01* +X345900Y46704D01* +X345879Y46620D01* +X345854Y46538D01* +X345826Y46457D01* +X345794Y46377D01* +X345758Y46298D01* +X345719Y46222D01* +X345676Y46147D01* +X345631Y46074D01* +X345582Y46003D01* +X345529Y45935D01* +X345474Y45868D01* +X345416Y45805D01* +X345355Y45744D01* +X345292Y45686D01* +X345225Y45631D01* +X345157Y45579D01* +X345086Y45529D01* +X345013Y45484D01* +X344938Y45441D01* +X344862Y45402D01* +X344783Y45366D01* +X344703Y45334D01* +X344622Y45306D01* +X344540Y45281D01* +X344456Y45260D01* +X344372Y45243D01* +X344287Y45229D01* +X344201Y45220D01* +X344115Y45214D01* +X344029Y45212D01* +X339231Y45212D01* +X339145Y45214D01* +X339059Y45220D01* +X338973Y45229D01* +X338888Y45243D01* +X338804Y45260D01* +X338720Y45281D01* +X338638Y45306D01* +X338557Y45334D01* +X338477Y45366D01* +X338398Y45402D01* +X338322Y45441D01* +X338247Y45484D01* +X338174Y45529D01* +X338103Y45578D01* +X338035Y45631D01* +X337968Y45686D01* +X337905Y45744D01* +X337844Y45805D01* +X337786Y45868D01* +X337731Y45935D01* +X337679Y46003D01* +X337629Y46074D01* +X337584Y46147D01* +X337541Y46222D01* +X337502Y46298D01* +X337466Y46377D01* +X337434Y46457D01* +X337406Y46538D01* +X337381Y46620D01* +X337360Y46704D01* +X337343Y46788D01* +X337329Y46873D01* +X337320Y46959D01* +X337314Y47045D01* +X337312Y47131D01* +X337312Y49050D01* +X339231Y52870D02* +X337312Y55269D01* +X345948Y55269D01* +X345948Y52870D02* +X345948Y57668D01* +X343549Y62014D02* +X343452Y62016D01* +X343356Y62022D01* +X343260Y62031D01* +X343164Y62045D01* +X343069Y62062D01* +X342975Y62084D01* +X342882Y62109D01* +X342789Y62137D01* +X342698Y62170D01* +X342609Y62206D01* +X342521Y62246D01* +X342434Y62289D01* +X342350Y62335D01* +X342267Y62385D01* +X342186Y62439D01* +X342108Y62495D01* +X342032Y62555D01* +X341958Y62617D01* +X341887Y62683D01* +X341819Y62751D01* +X341753Y62822D01* +X341691Y62896D01* +X341631Y62972D01* +X341575Y63050D01* +X341521Y63131D01* +X341471Y63214D01* +X341425Y63298D01* +X341382Y63385D01* +X341342Y63473D01* +X341306Y63562D01* +X341273Y63653D01* +X341245Y63746D01* +X341220Y63839D01* +X341198Y63933D01* +X341181Y64028D01* +X341167Y64124D01* +X341158Y64220D01* +X341152Y64316D01* +X341150Y64413D01* +X341152Y64510D01* +X341158Y64606D01* +X341167Y64702D01* +X341181Y64798D01* +X341198Y64893D01* +X341220Y64987D01* +X341245Y65080D01* +X341273Y65173D01* +X341306Y65264D01* +X341342Y65353D01* +X341382Y65441D01* +X341425Y65528D01* +X341471Y65613D01* +X341521Y65695D01* +X341575Y65776D01* +X341631Y65854D01* +X341691Y65930D01* +X341753Y66004D01* +X341819Y66075D01* +X341887Y66143D01* +X341958Y66209D01* +X342032Y66271D01* +X342108Y66331D01* +X342186Y66387D01* +X342267Y66441D01* +X342350Y66491D01* +X342434Y66537D01* +X342521Y66580D01* +X342609Y66620D01* +X342698Y66656D01* +X342789Y66689D01* +X342882Y66717D01* +X342975Y66742D01* +X343069Y66764D01* +X343164Y66781D01* +X343260Y66795D01* +X343356Y66804D01* +X343452Y66810D01* +X343549Y66812D01* +X343646Y66810D01* +X343742Y66804D01* +X343838Y66795D01* +X343934Y66781D01* +X344029Y66764D01* +X344123Y66742D01* +X344216Y66717D01* +X344309Y66689D01* +X344400Y66656D01* +X344489Y66620D01* +X344577Y66580D01* +X344664Y66537D01* +X344749Y66491D01* +X344831Y66441D01* +X344912Y66387D01* +X344990Y66331D01* +X345066Y66271D01* +X345140Y66209D01* +X345211Y66143D01* +X345279Y66075D01* +X345345Y66004D01* +X345407Y65930D01* +X345467Y65854D01* +X345523Y65776D01* +X345577Y65695D01* +X345627Y65612D01* +X345673Y65528D01* +X345716Y65441D01* +X345756Y65353D01* +X345792Y65264D01* +X345825Y65173D01* +X345853Y65080D01* +X345878Y64987D01* +X345900Y64893D01* +X345917Y64798D01* +X345931Y64702D01* +X345940Y64606D01* +X345946Y64510D01* +X345948Y64413D01* +X345946Y64316D01* +X345940Y64220D01* +X345931Y64124D01* +X345917Y64028D01* +X345900Y63933D01* +X345878Y63839D01* +X345853Y63746D01* +X345825Y63653D01* +X345792Y63562D01* +X345756Y63473D01* +X345716Y63385D01* +X345673Y63298D01* +X345627Y63213D01* +X345577Y63131D01* +X345523Y63050D01* +X345467Y62972D01* +X345407Y62896D01* +X345345Y62822D01* +X345279Y62751D01* +X345211Y62683D01* +X345140Y62617D01* +X345066Y62555D01* +X344990Y62495D01* +X344912Y62439D01* +X344831Y62385D01* +X344749Y62335D01* +X344664Y62289D01* +X344577Y62246D01* +X344489Y62206D01* +X344400Y62170D01* +X344309Y62137D01* +X344216Y62109D01* +X344123Y62084D01* +X344029Y62062D01* +X343934Y62045D01* +X343838Y62031D01* +X343742Y62022D01* +X343646Y62016D01* +X343549Y62014D01* +X339231Y62494D02* +X339145Y62496D01* +X339059Y62502D01* +X338973Y62511D01* +X338888Y62525D01* +X338804Y62542D01* +X338720Y62563D01* +X338638Y62588D01* +X338557Y62616D01* +X338477Y62648D01* +X338398Y62684D01* +X338322Y62723D01* +X338247Y62766D01* +X338174Y62811D01* +X338103Y62860D01* +X338035Y62913D01* +X337968Y62968D01* +X337905Y63026D01* +X337844Y63087D01* +X337786Y63150D01* +X337731Y63217D01* +X337678Y63285D01* +X337629Y63356D01* +X337584Y63429D01* +X337541Y63504D01* +X337502Y63580D01* +X337466Y63659D01* +X337434Y63739D01* +X337406Y63820D01* +X337381Y63902D01* +X337360Y63986D01* +X337343Y64070D01* +X337329Y64155D01* +X337320Y64241D01* +X337314Y64327D01* +X337312Y64413D01* +X337314Y64499D01* +X337320Y64585D01* +X337329Y64671D01* +X337343Y64756D01* +X337360Y64840D01* +X337381Y64924D01* +X337406Y65006D01* +X337434Y65087D01* +X337466Y65167D01* +X337502Y65246D01* +X337541Y65322D01* +X337584Y65397D01* +X337629Y65470D01* +X337678Y65541D01* +X337731Y65609D01* +X337786Y65676D01* +X337844Y65739D01* +X337905Y65800D01* +X337968Y65858D01* +X338035Y65913D01* +X338103Y65966D01* +X338174Y66015D01* +X338247Y66060D01* +X338322Y66103D01* +X338398Y66142D01* +X338477Y66178D01* +X338557Y66210D01* +X338638Y66238D01* +X338720Y66263D01* +X338804Y66284D01* +X338888Y66301D01* +X338973Y66315D01* +X339059Y66324D01* +X339145Y66330D01* +X339231Y66332D01* +X339317Y66330D01* +X339403Y66324D01* +X339489Y66315D01* +X339574Y66301D01* +X339658Y66284D01* +X339742Y66263D01* +X339824Y66238D01* +X339905Y66210D01* +X339985Y66178D01* +X340064Y66142D01* +X340140Y66103D01* +X340215Y66060D01* +X340288Y66015D01* +X340359Y65966D01* +X340427Y65913D01* +X340494Y65858D01* +X340557Y65800D01* +X340618Y65739D01* +X340676Y65676D01* +X340731Y65609D01* +X340784Y65541D01* +X340833Y65470D01* +X340878Y65397D01* +X340921Y65322D01* +X340960Y65246D01* +X340996Y65167D01* +X341028Y65087D01* +X341056Y65006D01* +X341081Y64924D01* +X341102Y64840D01* +X341119Y64756D01* +X341133Y64671D01* +X341142Y64585D01* +X341148Y64499D01* +X341150Y64413D01* +X341148Y64327D01* +X341142Y64241D01* +X341133Y64155D01* +X341119Y64070D01* +X341102Y63986D01* +X341081Y63902D01* +X341056Y63820D01* +X341028Y63739D01* +X340996Y63659D01* +X340960Y63580D01* +X340921Y63504D01* +X340878Y63429D01* +X340833Y63356D01* +X340784Y63285D01* +X340731Y63217D01* +X340676Y63150D01* +X340618Y63087D01* +X340557Y63026D01* +X340494Y62968D01* +X340427Y62913D01* +X340359Y62860D01* +X340288Y62811D01* +X340215Y62766D01* +X340140Y62723D01* +X340064Y62684D01* +X339985Y62648D01* +X339905Y62616D01* +X339824Y62588D01* +X339742Y62563D01* +X339658Y62542D01* +X339574Y62525D01* +X339489Y62511D01* +X339403Y62502D01* +X339317Y62496D01* +X339231Y62494D01* +D13* +X693420Y160020D03* +D14* +X656336Y201299D02* +X656336Y203218D01* +X656336Y201299D02* +X656334Y201213D01* +X656328Y201127D01* +X656319Y201041D01* +X656305Y200956D01* +X656288Y200872D01* +X656267Y200788D01* +X656242Y200706D01* +X656214Y200625D01* +X656182Y200545D01* +X656146Y200466D01* +X656107Y200390D01* +X656064Y200315D01* +X656019Y200242D01* +X655970Y200171D01* +X655917Y200103D01* +X655862Y200036D01* +X655804Y199973D01* +X655743Y199912D01* +X655680Y199854D01* +X655613Y199799D01* +X655545Y199747D01* +X655474Y199697D01* +X655401Y199652D01* +X655326Y199609D01* +X655250Y199570D01* +X655171Y199534D01* +X655091Y199502D01* +X655010Y199474D01* +X654928Y199449D01* +X654844Y199428D01* +X654760Y199411D01* +X654675Y199397D01* +X654589Y199388D01* +X654503Y199382D01* +X654417Y199380D01* +X649619Y199380D01* +X649533Y199382D01* +X649447Y199388D01* +X649361Y199397D01* +X649276Y199411D01* +X649192Y199428D01* +X649108Y199449D01* +X649026Y199474D01* +X648945Y199502D01* +X648865Y199534D01* +X648786Y199570D01* +X648710Y199609D01* +X648635Y199652D01* +X648562Y199697D01* +X648491Y199746D01* +X648423Y199799D01* +X648356Y199854D01* +X648293Y199912D01* +X648232Y199973D01* +X648174Y200036D01* +X648119Y200103D01* +X648067Y200171D01* +X648017Y200242D01* +X647972Y200315D01* +X647929Y200390D01* +X647890Y200466D01* +X647854Y200545D01* +X647822Y200625D01* +X647794Y200706D01* +X647769Y200788D01* +X647748Y200872D01* +X647731Y200956D01* +X647717Y201041D01* +X647708Y201127D01* +X647702Y201213D01* +X647700Y201299D01* +X647700Y203218D01* +X649619Y207038D02* +X647700Y209437D01* +X656336Y209437D01* +X656336Y207038D02* +X656336Y211836D01* +X648660Y216182D02* +X647700Y216182D01* +X647700Y220980D01* +X656336Y218581D01* +D13* +X993140Y279400D03* +D14* +X992632Y292749D02* +X992632Y294668D01* +X992632Y292749D02* +X992630Y292663D01* +X992624Y292577D01* +X992615Y292491D01* +X992601Y292406D01* +X992584Y292322D01* +X992563Y292238D01* +X992538Y292156D01* +X992510Y292075D01* +X992478Y291995D01* +X992442Y291916D01* +X992403Y291840D01* +X992360Y291765D01* +X992315Y291692D01* +X992266Y291621D01* +X992213Y291553D01* +X992158Y291486D01* +X992100Y291423D01* +X992039Y291362D01* +X991976Y291304D01* +X991909Y291249D01* +X991841Y291197D01* +X991770Y291147D01* +X991697Y291102D01* +X991622Y291059D01* +X991546Y291020D01* +X991467Y290984D01* +X991387Y290952D01* +X991306Y290924D01* +X991224Y290899D01* +X991140Y290878D01* +X991056Y290861D01* +X990971Y290847D01* +X990885Y290838D01* +X990799Y290832D01* +X990713Y290830D01* +X985915Y290830D01* +X985829Y290832D01* +X985743Y290838D01* +X985657Y290847D01* +X985572Y290861D01* +X985488Y290878D01* +X985404Y290899D01* +X985322Y290924D01* +X985241Y290952D01* +X985161Y290984D01* +X985082Y291020D01* +X985006Y291059D01* +X984931Y291102D01* +X984858Y291147D01* +X984787Y291196D01* +X984719Y291249D01* +X984652Y291304D01* +X984589Y291362D01* +X984528Y291423D01* +X984470Y291486D01* +X984415Y291553D01* +X984363Y291621D01* +X984313Y291692D01* +X984268Y291765D01* +X984225Y291840D01* +X984186Y291916D01* +X984150Y291995D01* +X984118Y292075D01* +X984090Y292156D01* +X984065Y292238D01* +X984044Y292322D01* +X984027Y292406D01* +X984013Y292491D01* +X984004Y292577D01* +X983998Y292663D01* +X983996Y292749D01* +X983996Y294668D01* +X983996Y301127D02* +X983998Y301219D01* +X984004Y301310D01* +X984013Y301401D01* +X984027Y301492D01* +X984044Y301582D01* +X984066Y301671D01* +X984091Y301759D01* +X984119Y301846D01* +X984152Y301932D01* +X984188Y302016D01* +X984227Y302099D01* +X984270Y302180D01* +X984317Y302259D01* +X984366Y302336D01* +X984419Y302411D01* +X984475Y302483D01* +X984534Y302553D01* +X984596Y302621D01* +X984661Y302686D01* +X984729Y302748D01* +X984799Y302807D01* +X984871Y302863D01* +X984946Y302916D01* +X985023Y302965D01* +X985102Y303012D01* +X985183Y303055D01* +X985266Y303094D01* +X985350Y303130D01* +X985436Y303163D01* +X985523Y303191D01* +X985611Y303216D01* +X985700Y303238D01* +X985790Y303255D01* +X985881Y303269D01* +X985972Y303278D01* +X986063Y303284D01* +X986155Y303286D01* +X983996Y301127D02* +X983998Y301024D01* +X984004Y300922D01* +X984013Y300820D01* +X984026Y300718D01* +X984043Y300617D01* +X984064Y300516D01* +X984088Y300417D01* +X984117Y300318D01* +X984148Y300221D01* +X984184Y300124D01* +X984222Y300029D01* +X984265Y299936D01* +X984311Y299844D01* +X984360Y299754D01* +X984412Y299666D01* +X984468Y299579D01* +X984527Y299495D01* +X984588Y299414D01* +X984653Y299334D01* +X984721Y299257D01* +X984792Y299182D01* +X984865Y299111D01* +X984941Y299042D01* +X985019Y298975D01* +X985100Y298912D01* +X985183Y298852D01* +X985268Y298795D01* +X985355Y298741D01* +X985445Y298690D01* +X985536Y298643D01* +X985628Y298599D01* +X985723Y298558D01* +X985818Y298521D01* +X985915Y298488D01* +X987834Y302566D02* +X987768Y302633D01* +X987699Y302697D01* +X987628Y302758D01* +X987554Y302816D01* +X987478Y302871D01* +X987400Y302923D01* +X987320Y302972D01* +X987238Y303018D01* +X987154Y303060D01* +X987068Y303099D01* +X986981Y303134D01* +X986893Y303165D01* +X986803Y303193D01* +X986713Y303218D01* +X986621Y303239D01* +X986529Y303256D01* +X986436Y303269D01* +X986343Y303278D01* +X986249Y303284D01* +X986155Y303286D01* +X987834Y302566D02* +X992632Y298488D01* +X992632Y303286D01* +D13* +X863600Y160020D03* +D14* +X894334Y152164D02* +X894334Y150245D01* +X894332Y150159D01* +X894326Y150073D01* +X894317Y149987D01* +X894303Y149902D01* +X894286Y149818D01* +X894265Y149734D01* +X894240Y149652D01* +X894212Y149571D01* +X894180Y149491D01* +X894144Y149412D01* +X894105Y149336D01* +X894062Y149261D01* +X894017Y149188D01* +X893968Y149117D01* +X893915Y149049D01* +X893860Y148982D01* +X893802Y148919D01* +X893741Y148858D01* +X893678Y148800D01* +X893611Y148745D01* +X893543Y148693D01* +X893472Y148643D01* +X893399Y148598D01* +X893324Y148555D01* +X893248Y148516D01* +X893169Y148480D01* +X893089Y148448D01* +X893008Y148420D01* +X892926Y148395D01* +X892842Y148374D01* +X892758Y148357D01* +X892673Y148343D01* +X892587Y148334D01* +X892501Y148328D01* +X892415Y148326D01* +X887617Y148326D01* +X887531Y148328D01* +X887445Y148334D01* +X887359Y148343D01* +X887274Y148357D01* +X887190Y148374D01* +X887106Y148395D01* +X887024Y148420D01* +X886943Y148448D01* +X886863Y148480D01* +X886784Y148516D01* +X886708Y148555D01* +X886633Y148598D01* +X886560Y148643D01* +X886489Y148692D01* +X886421Y148745D01* +X886354Y148800D01* +X886291Y148858D01* +X886230Y148919D01* +X886172Y148982D01* +X886117Y149049D01* +X886065Y149117D01* +X886015Y149188D01* +X885970Y149261D01* +X885927Y149336D01* +X885888Y149412D01* +X885852Y149491D01* +X885820Y149571D01* +X885792Y149652D01* +X885767Y149734D01* +X885746Y149818D01* +X885729Y149902D01* +X885715Y149987D01* +X885706Y150073D01* +X885700Y150159D01* +X885698Y150245D01* +X885698Y152164D01* +X887617Y155984D02* +X885698Y158383D01* +X894334Y158383D01* +X894334Y155984D02* +X894334Y160782D01* +X894334Y165128D02* +X894334Y167527D01* +X894332Y167624D01* +X894326Y167720D01* +X894317Y167816D01* +X894303Y167912D01* +X894286Y168007D01* +X894264Y168101D01* +X894239Y168194D01* +X894211Y168287D01* +X894178Y168378D01* +X894142Y168467D01* +X894102Y168555D01* +X894059Y168642D01* +X894013Y168727D01* +X893963Y168809D01* +X893909Y168890D01* +X893853Y168968D01* +X893793Y169044D01* +X893731Y169118D01* +X893665Y169189D01* +X893597Y169257D01* +X893526Y169323D01* +X893452Y169385D01* +X893376Y169445D01* +X893298Y169501D01* +X893217Y169555D01* +X893135Y169605D01* +X893050Y169651D01* +X892963Y169694D01* +X892875Y169734D01* +X892786Y169770D01* +X892695Y169803D01* +X892602Y169831D01* +X892509Y169856D01* +X892415Y169878D01* +X892320Y169895D01* +X892224Y169909D01* +X892128Y169918D01* +X892032Y169924D01* +X891935Y169926D01* +X891838Y169924D01* +X891742Y169918D01* +X891646Y169909D01* +X891550Y169895D01* +X891455Y169878D01* +X891361Y169856D01* +X891268Y169831D01* +X891175Y169803D01* +X891084Y169770D01* +X890995Y169734D01* +X890907Y169694D01* +X890820Y169651D01* +X890736Y169605D01* +X890653Y169555D01* +X890572Y169501D01* +X890494Y169445D01* +X890418Y169385D01* +X890344Y169323D01* +X890273Y169257D01* +X890205Y169189D01* +X890139Y169118D01* +X890077Y169044D01* +X890017Y168968D01* +X889961Y168890D01* +X889907Y168809D01* +X889857Y168727D01* +X889811Y168642D01* +X889768Y168555D01* +X889728Y168467D01* +X889692Y168378D01* +X889659Y168287D01* +X889631Y168194D01* +X889606Y168101D01* +X889584Y168007D01* +X889567Y167912D01* +X889553Y167816D01* +X889544Y167720D01* +X889538Y167624D01* +X889536Y167527D01* +X885698Y168007D02* +X885698Y165128D01* +X885698Y168007D02* +X885700Y168093D01* +X885706Y168179D01* +X885715Y168265D01* +X885729Y168350D01* +X885746Y168434D01* +X885767Y168518D01* +X885792Y168600D01* +X885820Y168681D01* +X885852Y168761D01* +X885888Y168840D01* +X885927Y168916D01* +X885970Y168991D01* +X886015Y169064D01* +X886064Y169135D01* +X886117Y169203D01* +X886172Y169270D01* +X886230Y169333D01* +X886291Y169394D01* +X886354Y169452D01* +X886421Y169507D01* +X886489Y169560D01* +X886560Y169609D01* +X886633Y169654D01* +X886708Y169697D01* +X886784Y169736D01* +X886863Y169772D01* +X886943Y169804D01* +X887024Y169832D01* +X887106Y169857D01* +X887190Y169878D01* +X887274Y169895D01* +X887359Y169909D01* +X887445Y169918D01* +X887531Y169924D01* +X887617Y169926D01* +X887703Y169924D01* +X887789Y169918D01* +X887875Y169909D01* +X887960Y169895D01* +X888044Y169878D01* +X888128Y169857D01* +X888210Y169832D01* +X888291Y169804D01* +X888371Y169772D01* +X888450Y169736D01* +X888526Y169697D01* +X888601Y169654D01* +X888674Y169609D01* +X888745Y169560D01* +X888813Y169507D01* +X888880Y169452D01* +X888943Y169394D01* +X889004Y169333D01* +X889062Y169270D01* +X889117Y169203D01* +X889170Y169135D01* +X889219Y169064D01* +X889264Y168991D01* +X889307Y168916D01* +X889346Y168840D01* +X889382Y168761D01* +X889414Y168681D01* +X889442Y168600D01* +X889467Y168518D01* +X889488Y168434D01* +X889505Y168350D01* +X889519Y168265D01* +X889528Y168179D01* +X889534Y168093D01* +X889536Y168007D01* +X889536Y166088D01* +D16* +X492760Y299720D03* +D14* +X506081Y312657D02* +X509919Y312657D01* +X506081Y312657D02* +X505984Y312659D01* +X505888Y312665D01* +X505792Y312674D01* +X505696Y312688D01* +X505601Y312705D01* +X505507Y312727D01* +X505414Y312752D01* +X505321Y312780D01* +X505230Y312813D01* +X505141Y312849D01* +X505053Y312889D01* +X504966Y312932D01* +X504882Y312978D01* +X504799Y313028D01* +X504718Y313082D01* +X504640Y313138D01* +X504564Y313198D01* +X504490Y313260D01* +X504419Y313326D01* +X504351Y313394D01* +X504285Y313465D01* +X504223Y313539D01* +X504163Y313615D01* +X504107Y313693D01* +X504053Y313774D01* +X504003Y313857D01* +X503957Y313941D01* +X503914Y314028D01* +X503874Y314116D01* +X503838Y314205D01* +X503805Y314296D01* +X503777Y314389D01* +X503752Y314482D01* +X503730Y314576D01* +X503713Y314671D01* +X503699Y314767D01* +X503690Y314863D01* +X503684Y314959D01* +X503682Y315056D01* +X503684Y315153D01* +X503690Y315249D01* +X503699Y315345D01* +X503713Y315441D01* +X503730Y315536D01* +X503752Y315630D01* +X503777Y315723D01* +X503805Y315816D01* +X503838Y315907D01* +X503874Y315996D01* +X503914Y316084D01* +X503957Y316171D01* +X504003Y316256D01* +X504053Y316338D01* +X504107Y316419D01* +X504163Y316497D01* +X504223Y316573D01* +X504285Y316647D01* +X504351Y316718D01* +X504419Y316786D01* +X504490Y316852D01* +X504564Y316914D01* +X504640Y316974D01* +X504718Y317030D01* +X504799Y317084D01* +X504882Y317134D01* +X504966Y317180D01* +X505053Y317223D01* +X505141Y317263D01* +X505230Y317299D01* +X505321Y317332D01* +X505414Y317360D01* +X505507Y317385D01* +X505601Y317407D01* +X505696Y317424D01* +X505792Y317438D01* +X505888Y317447D01* +X505984Y317453D01* +X506081Y317455D01* +X506081Y317454D02* +X509919Y317454D01* +X509919Y317455D02* +X510016Y317453D01* +X510112Y317447D01* +X510208Y317438D01* +X510304Y317424D01* +X510399Y317407D01* +X510493Y317385D01* +X510586Y317360D01* +X510679Y317332D01* +X510770Y317299D01* +X510859Y317263D01* +X510947Y317223D01* +X511034Y317180D01* +X511119Y317134D01* +X511201Y317084D01* +X511282Y317030D01* +X511360Y316974D01* +X511436Y316914D01* +X511510Y316852D01* +X511581Y316786D01* +X511649Y316718D01* +X511715Y316647D01* +X511777Y316573D01* +X511837Y316497D01* +X511893Y316419D01* +X511947Y316338D01* +X511997Y316256D01* +X512043Y316171D01* +X512086Y316084D01* +X512126Y315996D01* +X512162Y315907D01* +X512195Y315816D01* +X512223Y315723D01* +X512248Y315630D01* +X512270Y315536D01* +X512287Y315441D01* +X512301Y315345D01* +X512310Y315249D01* +X512316Y315153D01* +X512318Y315056D01* +X512316Y314959D01* +X512310Y314863D01* +X512301Y314767D01* +X512287Y314671D01* +X512270Y314576D01* +X512248Y314482D01* +X512223Y314389D01* +X512195Y314296D01* +X512162Y314205D01* +X512126Y314116D01* +X512086Y314028D01* +X512043Y313941D01* +X511997Y313857D01* +X511947Y313774D01* +X511893Y313693D01* +X511837Y313615D01* +X511777Y313539D01* +X511715Y313465D01* +X511649Y313394D01* +X511581Y313326D01* +X511510Y313260D01* +X511436Y313198D01* +X511360Y313138D01* +X511282Y313082D01* +X511201Y313028D01* +X511119Y312978D01* +X511034Y312932D01* +X510947Y312889D01* +X510859Y312849D01* +X510770Y312813D01* +X510679Y312780D01* +X510586Y312752D01* +X510493Y312727D01* +X510399Y312705D01* +X510304Y312688D01* +X510208Y312674D01* +X510112Y312665D01* +X510016Y312659D01* +X509919Y312657D01* +X510399Y316495D02* +X512318Y318414D01* +X505841Y326136D02* +X505749Y326134D01* +X505658Y326128D01* +X505567Y326119D01* +X505476Y326105D01* +X505386Y326088D01* +X505297Y326066D01* +X505209Y326041D01* +X505122Y326013D01* +X505036Y325980D01* +X504952Y325944D01* +X504869Y325905D01* +X504788Y325862D01* +X504709Y325815D01* +X504632Y325766D01* +X504557Y325713D01* +X504485Y325657D01* +X504415Y325598D01* +X504347Y325536D01* +X504282Y325471D01* +X504220Y325403D01* +X504161Y325333D01* +X504105Y325261D01* +X504052Y325186D01* +X504003Y325109D01* +X503956Y325030D01* +X503913Y324949D01* +X503874Y324866D01* +X503838Y324782D01* +X503805Y324696D01* +X503777Y324609D01* +X503752Y324521D01* +X503730Y324432D01* +X503713Y324342D01* +X503699Y324251D01* +X503690Y324160D01* +X503684Y324069D01* +X503682Y323977D01* +X503684Y323874D01* +X503690Y323772D01* +X503699Y323670D01* +X503712Y323568D01* +X503729Y323467D01* +X503750Y323366D01* +X503774Y323267D01* +X503803Y323168D01* +X503834Y323071D01* +X503870Y322974D01* +X503908Y322879D01* +X503951Y322786D01* +X503997Y322694D01* +X504046Y322604D01* +X504098Y322516D01* +X504154Y322429D01* +X504213Y322345D01* +X504274Y322264D01* +X504339Y322184D01* +X504407Y322107D01* +X504478Y322032D01* +X504551Y321961D01* +X504627Y321892D01* +X504705Y321825D01* +X504786Y321762D01* +X504869Y321702D01* +X504954Y321645D01* +X505041Y321591D01* +X505131Y321540D01* +X505222Y321493D01* +X505314Y321449D01* +X505409Y321408D01* +X505504Y321371D01* +X505601Y321338D01* +X507520Y325416D02* +X507454Y325483D01* +X507385Y325547D01* +X507314Y325608D01* +X507240Y325666D01* +X507164Y325721D01* +X507086Y325773D01* +X507006Y325822D01* +X506924Y325868D01* +X506840Y325910D01* +X506754Y325949D01* +X506667Y325984D01* +X506579Y326015D01* +X506489Y326043D01* +X506399Y326068D01* +X506307Y326089D01* +X506215Y326106D01* +X506122Y326119D01* +X506029Y326128D01* +X505935Y326134D01* +X505841Y326136D01* +X507520Y325416D02* +X512318Y321338D01* +X512318Y326136D01* +D16* +X452120Y330200D03* +D11* +X475149Y331497D02* +X479891Y331497D01* +X475149Y331497D02* +X475042Y331499D01* +X474935Y331505D01* +X474829Y331514D01* +X474723Y331528D01* +X474617Y331545D01* +X474512Y331566D01* +X474408Y331591D01* +X474305Y331620D01* +X474203Y331652D01* +X474102Y331688D01* +X474003Y331728D01* +X473905Y331771D01* +X473809Y331818D01* +X473714Y331868D01* +X473621Y331921D01* +X473531Y331978D01* +X473442Y332038D01* +X473356Y332101D01* +X473272Y332167D01* +X473190Y332237D01* +X473111Y332309D01* +X473035Y332384D01* +X472961Y332462D01* +X472891Y332542D01* +X472823Y332625D01* +X472758Y332710D01* +X472697Y332797D01* +X472638Y332887D01* +X472583Y332979D01* +X472531Y333072D01* +X472483Y333168D01* +X472438Y333265D01* +X472396Y333363D01* +X472359Y333463D01* +X472324Y333565D01* +X472294Y333667D01* +X472267Y333771D01* +X472244Y333875D01* +X472225Y333981D01* +X472210Y334087D01* +X472198Y334193D01* +X472190Y334300D01* +X472186Y334407D01* +X472186Y334513D01* +X472190Y334620D01* +X472198Y334727D01* +X472210Y334833D01* +X472225Y334939D01* +X472244Y335045D01* +X472267Y335149D01* +X472294Y335253D01* +X472324Y335355D01* +X472359Y335457D01* +X472396Y335557D01* +X472438Y335655D01* +X472483Y335752D01* +X472531Y335848D01* +X472583Y335942D01* +X472638Y336033D01* +X472697Y336123D01* +X472758Y336210D01* +X472823Y336295D01* +X472891Y336378D01* +X472961Y336458D01* +X473035Y336536D01* +X473111Y336611D01* +X473190Y336683D01* +X473272Y336753D01* +X473356Y336819D01* +X473442Y336882D01* +X473531Y336942D01* +X473621Y336999D01* +X473714Y337052D01* +X473809Y337102D01* +X473905Y337149D01* +X474003Y337192D01* +X474102Y337232D01* +X474203Y337268D01* +X474305Y337300D01* +X474408Y337329D01* +X474512Y337354D01* +X474617Y337375D01* +X474723Y337392D01* +X474829Y337406D01* +X474935Y337415D01* +X475042Y337421D01* +X475149Y337423D01* +X475149Y337424D02* +X479891Y337424D01* +X479891Y337423D02* +X479998Y337421D01* +X480105Y337415D01* +X480211Y337406D01* +X480317Y337392D01* +X480423Y337375D01* +X480528Y337354D01* +X480632Y337329D01* +X480735Y337300D01* +X480837Y337268D01* +X480938Y337232D01* +X481037Y337192D01* +X481135Y337149D01* +X481231Y337102D01* +X481326Y337052D01* +X481419Y336999D01* +X481509Y336942D01* +X481598Y336882D01* +X481684Y336819D01* +X481768Y336753D01* +X481850Y336683D01* +X481929Y336611D01* +X482005Y336536D01* +X482079Y336458D01* +X482149Y336378D01* +X482217Y336295D01* +X482282Y336210D01* +X482343Y336123D01* +X482402Y336033D01* +X482457Y335942D01* +X482509Y335848D01* +X482557Y335752D01* +X482602Y335655D01* +X482644Y335557D01* +X482681Y335457D01* +X482716Y335355D01* +X482746Y335253D01* +X482773Y335149D01* +X482796Y335045D01* +X482815Y334939D01* +X482830Y334833D01* +X482842Y334727D01* +X482850Y334620D01* +X482854Y334513D01* +X482854Y334407D01* +X482850Y334300D01* +X482842Y334193D01* +X482830Y334087D01* +X482815Y333981D01* +X482796Y333875D01* +X482773Y333771D01* +X482746Y333667D01* +X482716Y333565D01* +X482681Y333463D01* +X482644Y333363D01* +X482602Y333265D01* +X482557Y333168D01* +X482509Y333072D01* +X482457Y332979D01* +X482402Y332887D01* +X482343Y332797D01* +X482282Y332710D01* +X482217Y332625D01* +X482149Y332542D01* +X482079Y332462D01* +X482005Y332384D01* +X481929Y332309D01* +X481850Y332237D01* +X481768Y332167D01* +X481684Y332101D01* +X481598Y332038D01* +X481509Y331978D01* +X481419Y331921D01* +X481326Y331868D01* +X481231Y331818D01* +X481135Y331771D01* +X481037Y331728D01* +X480938Y331688D01* +X480837Y331652D01* +X480735Y331620D01* +X480632Y331591D01* +X480528Y331566D01* +X480423Y331545D01* +X480317Y331528D01* +X480211Y331514D01* +X480105Y331505D01* +X479998Y331499D01* +X479891Y331497D01* +X480483Y336238D02* +X482854Y338609D01* +X474557Y342307D02* +X472186Y345271D01* +X482854Y345271D01* +X482854Y348234D02* +X482854Y342307D01* +D13* +X1031240Y91440D03* +D14* +X1031494Y102616D02* +X1022858Y102616D01* +X1022858Y105015D01* +X1022860Y105112D01* +X1022866Y105208D01* +X1022875Y105304D01* +X1022889Y105400D01* +X1022906Y105495D01* +X1022928Y105589D01* +X1022953Y105682D01* +X1022981Y105775D01* +X1023014Y105866D01* +X1023050Y105955D01* +X1023090Y106043D01* +X1023133Y106130D01* +X1023179Y106215D01* +X1023229Y106297D01* +X1023283Y106378D01* +X1023339Y106456D01* +X1023399Y106532D01* +X1023461Y106606D01* +X1023527Y106677D01* +X1023595Y106745D01* +X1023666Y106811D01* +X1023740Y106873D01* +X1023816Y106933D01* +X1023894Y106989D01* +X1023975Y107043D01* +X1024058Y107093D01* +X1024142Y107139D01* +X1024229Y107182D01* +X1024317Y107222D01* +X1024406Y107258D01* +X1024497Y107291D01* +X1024590Y107319D01* +X1024683Y107344D01* +X1024777Y107366D01* +X1024872Y107383D01* +X1024968Y107397D01* +X1025064Y107406D01* +X1025160Y107412D01* +X1025257Y107414D01* +X1025354Y107412D01* +X1025450Y107406D01* +X1025546Y107397D01* +X1025642Y107383D01* +X1025737Y107366D01* +X1025831Y107344D01* +X1025924Y107319D01* +X1026017Y107291D01* +X1026108Y107258D01* +X1026197Y107222D01* +X1026285Y107182D01* +X1026372Y107139D01* +X1026457Y107093D01* +X1026539Y107043D01* +X1026620Y106989D01* +X1026698Y106933D01* +X1026774Y106873D01* +X1026848Y106811D01* +X1026919Y106745D01* +X1026987Y106677D01* +X1027053Y106606D01* +X1027115Y106532D01* +X1027175Y106456D01* +X1027231Y106378D01* +X1027285Y106297D01* +X1027335Y106215D01* +X1027381Y106130D01* +X1027424Y106043D01* +X1027464Y105955D01* +X1027500Y105866D01* +X1027533Y105775D01* +X1027561Y105682D01* +X1027586Y105589D01* +X1027608Y105495D01* +X1027625Y105400D01* +X1027639Y105304D01* +X1027648Y105208D01* +X1027654Y105112D01* +X1027656Y105015D01* +X1027656Y102616D01* +X1027656Y105495D02* +X1031494Y107414D01* +X1024777Y111675D02* +X1022858Y114074D01* +X1031494Y114074D01* +X1031494Y111675D02* +X1031494Y116473D01* +X1031494Y120819D02* +X1031494Y123218D01* +X1031492Y123315D01* +X1031486Y123411D01* +X1031477Y123507D01* +X1031463Y123603D01* +X1031446Y123698D01* +X1031424Y123792D01* +X1031399Y123885D01* +X1031371Y123978D01* +X1031338Y124069D01* +X1031302Y124158D01* +X1031262Y124246D01* +X1031219Y124333D01* +X1031173Y124418D01* +X1031123Y124500D01* +X1031069Y124581D01* +X1031013Y124659D01* +X1030953Y124735D01* +X1030891Y124809D01* +X1030825Y124880D01* +X1030757Y124948D01* +X1030686Y125014D01* +X1030612Y125076D01* +X1030536Y125136D01* +X1030458Y125192D01* +X1030377Y125246D01* +X1030295Y125296D01* +X1030210Y125342D01* +X1030123Y125385D01* +X1030035Y125425D01* +X1029946Y125461D01* +X1029855Y125494D01* +X1029762Y125522D01* +X1029669Y125547D01* +X1029575Y125569D01* +X1029480Y125586D01* +X1029384Y125600D01* +X1029288Y125609D01* +X1029192Y125615D01* +X1029095Y125617D01* +X1028998Y125615D01* +X1028902Y125609D01* +X1028806Y125600D01* +X1028710Y125586D01* +X1028615Y125569D01* +X1028521Y125547D01* +X1028428Y125522D01* +X1028335Y125494D01* +X1028244Y125461D01* +X1028155Y125425D01* +X1028067Y125385D01* +X1027980Y125342D01* +X1027896Y125296D01* +X1027813Y125246D01* +X1027732Y125192D01* +X1027654Y125136D01* +X1027578Y125076D01* +X1027504Y125014D01* +X1027433Y124948D01* +X1027365Y124880D01* +X1027299Y124809D01* +X1027237Y124735D01* +X1027177Y124659D01* +X1027121Y124581D01* +X1027067Y124500D01* +X1027017Y124418D01* +X1026971Y124333D01* +X1026928Y124246D01* +X1026888Y124158D01* +X1026852Y124069D01* +X1026819Y123978D01* +X1026791Y123885D01* +X1026766Y123792D01* +X1026744Y123698D01* +X1026727Y123603D01* +X1026713Y123507D01* +X1026704Y123411D01* +X1026698Y123315D01* +X1026696Y123218D01* +X1022858Y123698D02* +X1022858Y120819D01* +X1022858Y123698D02* +X1022860Y123784D01* +X1022866Y123870D01* +X1022875Y123956D01* +X1022889Y124041D01* +X1022906Y124125D01* +X1022927Y124209D01* +X1022952Y124291D01* +X1022980Y124372D01* +X1023012Y124452D01* +X1023048Y124531D01* +X1023087Y124607D01* +X1023130Y124682D01* +X1023175Y124755D01* +X1023224Y124826D01* +X1023277Y124894D01* +X1023332Y124961D01* +X1023390Y125024D01* +X1023451Y125085D01* +X1023514Y125143D01* +X1023581Y125198D01* +X1023649Y125251D01* +X1023720Y125300D01* +X1023793Y125345D01* +X1023868Y125388D01* +X1023944Y125427D01* +X1024023Y125463D01* +X1024103Y125495D01* +X1024184Y125523D01* +X1024266Y125548D01* +X1024350Y125569D01* +X1024434Y125586D01* +X1024519Y125600D01* +X1024605Y125609D01* +X1024691Y125615D01* +X1024777Y125617D01* +X1024863Y125615D01* +X1024949Y125609D01* +X1025035Y125600D01* +X1025120Y125586D01* +X1025204Y125569D01* +X1025288Y125548D01* +X1025370Y125523D01* +X1025451Y125495D01* +X1025531Y125463D01* +X1025610Y125427D01* +X1025686Y125388D01* +X1025761Y125345D01* +X1025834Y125300D01* +X1025905Y125251D01* +X1025973Y125198D01* +X1026040Y125143D01* +X1026103Y125085D01* +X1026164Y125024D01* +X1026222Y124961D01* +X1026277Y124894D01* +X1026330Y124826D01* +X1026379Y124755D01* +X1026424Y124682D01* +X1026467Y124607D01* +X1026506Y124531D01* +X1026542Y124452D01* +X1026574Y124372D01* +X1026602Y124291D01* +X1026627Y124209D01* +X1026648Y124125D01* +X1026665Y124041D01* +X1026679Y123956D01* +X1026688Y123870D01* +X1026694Y123784D01* +X1026696Y123698D01* +X1026696Y121779D01* +D13* +X706120Y139700D03* +D14* +X709930Y105269D02* +X701294Y105269D01* +X701294Y107668D01* +X701296Y107765D01* +X701302Y107861D01* +X701311Y107957D01* +X701325Y108053D01* +X701342Y108148D01* +X701364Y108242D01* +X701389Y108335D01* +X701417Y108428D01* +X701450Y108519D01* +X701486Y108608D01* +X701526Y108696D01* +X701569Y108783D01* +X701615Y108868D01* +X701665Y108950D01* +X701719Y109031D01* +X701775Y109109D01* +X701835Y109185D01* +X701897Y109259D01* +X701963Y109330D01* +X702031Y109398D01* +X702102Y109464D01* +X702176Y109526D01* +X702252Y109586D01* +X702330Y109642D01* +X702411Y109696D01* +X702494Y109746D01* +X702578Y109792D01* +X702665Y109835D01* +X702753Y109875D01* +X702842Y109911D01* +X702933Y109944D01* +X703026Y109972D01* +X703119Y109997D01* +X703213Y110019D01* +X703308Y110036D01* +X703404Y110050D01* +X703500Y110059D01* +X703596Y110065D01* +X703693Y110067D01* +X703790Y110065D01* +X703886Y110059D01* +X703982Y110050D01* +X704078Y110036D01* +X704173Y110019D01* +X704267Y109997D01* +X704360Y109972D01* +X704453Y109944D01* +X704544Y109911D01* +X704633Y109875D01* +X704721Y109835D01* +X704808Y109792D01* +X704893Y109746D01* +X704975Y109696D01* +X705056Y109642D01* +X705134Y109586D01* +X705210Y109526D01* +X705284Y109464D01* +X705355Y109398D01* +X705423Y109330D01* +X705489Y109259D01* +X705551Y109185D01* +X705611Y109109D01* +X705667Y109031D01* +X705721Y108950D01* +X705771Y108868D01* +X705817Y108783D01* +X705860Y108696D01* +X705900Y108608D01* +X705936Y108519D01* +X705969Y108428D01* +X705997Y108335D01* +X706022Y108242D01* +X706044Y108148D01* +X706061Y108053D01* +X706075Y107957D01* +X706084Y107861D01* +X706090Y107765D01* +X706092Y107668D01* +X706092Y105269D01* +X706092Y108148D02* +X709930Y110067D01* +X703213Y114328D02* +X701294Y116727D01* +X709930Y116727D01* +X709930Y114328D02* +X709930Y119126D01* +X706092Y125391D02* +X706092Y128270D01* +X706092Y125391D02* +X706090Y125305D01* +X706084Y125219D01* +X706075Y125133D01* +X706061Y125048D01* +X706044Y124964D01* +X706023Y124880D01* +X705998Y124798D01* +X705970Y124717D01* +X705938Y124637D01* +X705902Y124558D01* +X705863Y124482D01* +X705820Y124407D01* +X705775Y124334D01* +X705726Y124263D01* +X705673Y124195D01* +X705618Y124128D01* +X705560Y124065D01* +X705499Y124004D01* +X705436Y123946D01* +X705369Y123891D01* +X705301Y123839D01* +X705230Y123789D01* +X705157Y123744D01* +X705082Y123701D01* +X705006Y123662D01* +X704927Y123626D01* +X704847Y123594D01* +X704766Y123566D01* +X704684Y123541D01* +X704600Y123520D01* +X704516Y123503D01* +X704431Y123489D01* +X704345Y123480D01* +X704259Y123474D01* +X704173Y123472D01* +X703693Y123472D01* +X703596Y123474D01* +X703500Y123480D01* +X703404Y123489D01* +X703308Y123503D01* +X703213Y123520D01* +X703119Y123542D01* +X703026Y123567D01* +X702933Y123595D01* +X702842Y123628D01* +X702753Y123664D01* +X702665Y123704D01* +X702578Y123747D01* +X702494Y123793D01* +X702411Y123843D01* +X702330Y123897D01* +X702252Y123953D01* +X702176Y124013D01* +X702102Y124075D01* +X702031Y124141D01* +X701963Y124209D01* +X701897Y124280D01* +X701835Y124354D01* +X701775Y124430D01* +X701719Y124508D01* +X701665Y124589D01* +X701615Y124672D01* +X701569Y124756D01* +X701526Y124843D01* +X701486Y124931D01* +X701450Y125020D01* +X701417Y125111D01* +X701389Y125204D01* +X701364Y125297D01* +X701342Y125391D01* +X701325Y125486D01* +X701311Y125582D01* +X701302Y125678D01* +X701296Y125774D01* +X701294Y125871D01* +X701296Y125968D01* +X701302Y126064D01* +X701311Y126160D01* +X701325Y126256D01* +X701342Y126351D01* +X701364Y126445D01* +X701389Y126538D01* +X701417Y126631D01* +X701450Y126722D01* +X701486Y126811D01* +X701526Y126899D01* +X701569Y126986D01* +X701615Y127071D01* +X701665Y127153D01* +X701719Y127234D01* +X701775Y127312D01* +X701835Y127388D01* +X701897Y127462D01* +X701963Y127533D01* +X702031Y127601D01* +X702102Y127667D01* +X702176Y127729D01* +X702252Y127789D01* +X702330Y127845D01* +X702411Y127899D01* +X702494Y127949D01* +X702578Y127995D01* +X702665Y128038D01* +X702753Y128078D01* +X702842Y128114D01* +X702933Y128147D01* +X703026Y128175D01* +X703119Y128200D01* +X703213Y128222D01* +X703308Y128239D01* +X703404Y128253D01* +X703500Y128262D01* +X703596Y128268D01* +X703693Y128270D01* +X706092Y128270D01* +X706215Y128268D01* +X706338Y128262D01* +X706461Y128252D01* +X706583Y128238D01* +X706705Y128221D01* +X706826Y128199D01* +X706946Y128174D01* +X707066Y128144D01* +X707184Y128111D01* +X707301Y128074D01* +X707418Y128034D01* +X707532Y127990D01* +X707646Y127942D01* +X707757Y127890D01* +X707867Y127835D01* +X707975Y127776D01* +X708082Y127714D01* +X708186Y127649D01* +X708288Y127580D01* +X708388Y127508D01* +X708485Y127433D01* +X708580Y127354D01* +X708672Y127273D01* +X708762Y127189D01* +X708849Y127102D01* +X708933Y127012D01* +X709014Y126920D01* +X709093Y126825D01* +X709168Y126728D01* +X709240Y126628D01* +X709309Y126526D01* +X709374Y126422D01* +X709436Y126315D01* +X709495Y126207D01* +X709550Y126097D01* +X709602Y125986D01* +X709650Y125872D01* +X709694Y125758D01* +X709734Y125641D01* +X709771Y125524D01* +X709804Y125406D01* +X709834Y125286D01* +X709859Y125166D01* +X709881Y125045D01* +X709898Y124923D01* +X709912Y124801D01* +X709922Y124678D01* +X709928Y124555D01* +X709930Y124432D01* +D17* +X1259840Y193040D03* +D14* +X1271524Y197104D02* +X1271524Y188468D01* +X1271524Y197104D02* +X1273923Y197104D01* +X1274020Y197102D01* +X1274116Y197096D01* +X1274212Y197087D01* +X1274308Y197073D01* +X1274403Y197056D01* +X1274497Y197034D01* +X1274590Y197009D01* +X1274683Y196981D01* +X1274774Y196948D01* +X1274863Y196912D01* +X1274951Y196872D01* +X1275038Y196829D01* +X1275123Y196783D01* +X1275205Y196733D01* +X1275286Y196679D01* +X1275364Y196623D01* +X1275440Y196563D01* +X1275514Y196501D01* +X1275585Y196435D01* +X1275653Y196367D01* +X1275719Y196296D01* +X1275781Y196222D01* +X1275841Y196146D01* +X1275897Y196068D01* +X1275951Y195987D01* +X1276001Y195904D01* +X1276047Y195820D01* +X1276090Y195733D01* +X1276130Y195645D01* +X1276166Y195556D01* +X1276199Y195465D01* +X1276227Y195372D01* +X1276252Y195279D01* +X1276274Y195185D01* +X1276291Y195090D01* +X1276305Y194994D01* +X1276314Y194898D01* +X1276320Y194802D01* +X1276322Y194705D01* +X1276320Y194608D01* +X1276314Y194512D01* +X1276305Y194416D01* +X1276291Y194320D01* +X1276274Y194225D01* +X1276252Y194131D01* +X1276227Y194038D01* +X1276199Y193945D01* +X1276166Y193854D01* +X1276130Y193765D01* +X1276090Y193677D01* +X1276047Y193590D01* +X1276001Y193506D01* +X1275951Y193423D01* +X1275897Y193342D01* +X1275841Y193264D01* +X1275781Y193188D01* +X1275719Y193114D01* +X1275653Y193043D01* +X1275585Y192975D01* +X1275514Y192909D01* +X1275440Y192847D01* +X1275364Y192787D01* +X1275286Y192731D01* +X1275205Y192677D01* +X1275123Y192627D01* +X1275038Y192581D01* +X1274951Y192538D01* +X1274863Y192498D01* +X1274774Y192462D01* +X1274683Y192429D01* +X1274590Y192401D01* +X1274497Y192376D01* +X1274403Y192354D01* +X1274308Y192337D01* +X1274212Y192323D01* +X1274116Y192314D01* +X1274020Y192308D01* +X1273923Y192306D01* +X1271524Y192306D01* +X1274403Y192306D02* +X1276322Y188468D01* +X1283222Y197104D02* +X1283314Y197102D01* +X1283405Y197096D01* +X1283496Y197087D01* +X1283587Y197073D01* +X1283677Y197056D01* +X1283766Y197034D01* +X1283854Y197009D01* +X1283941Y196981D01* +X1284027Y196948D01* +X1284111Y196912D01* +X1284194Y196873D01* +X1284275Y196830D01* +X1284354Y196783D01* +X1284431Y196734D01* +X1284506Y196681D01* +X1284578Y196625D01* +X1284648Y196566D01* +X1284716Y196504D01* +X1284781Y196439D01* +X1284843Y196371D01* +X1284902Y196301D01* +X1284958Y196229D01* +X1285011Y196154D01* +X1285060Y196077D01* +X1285107Y195998D01* +X1285150Y195917D01* +X1285189Y195834D01* +X1285225Y195750D01* +X1285258Y195664D01* +X1285286Y195577D01* +X1285311Y195489D01* +X1285333Y195400D01* +X1285350Y195310D01* +X1285364Y195219D01* +X1285373Y195128D01* +X1285379Y195037D01* +X1285381Y194945D01* +X1283222Y197104D02* +X1283119Y197102D01* +X1283017Y197096D01* +X1282915Y197087D01* +X1282813Y197074D01* +X1282712Y197057D01* +X1282611Y197036D01* +X1282512Y197012D01* +X1282413Y196983D01* +X1282316Y196952D01* +X1282219Y196916D01* +X1282124Y196878D01* +X1282031Y196835D01* +X1281939Y196789D01* +X1281849Y196740D01* +X1281761Y196688D01* +X1281674Y196632D01* +X1281590Y196573D01* +X1281509Y196512D01* +X1281429Y196447D01* +X1281352Y196379D01* +X1281277Y196308D01* +X1281206Y196235D01* +X1281137Y196159D01* +X1281070Y196081D01* +X1281007Y196000D01* +X1280947Y195917D01* +X1280890Y195832D01* +X1280836Y195745D01* +X1280785Y195655D01* +X1280738Y195564D01* +X1280694Y195472D01* +X1280653Y195377D01* +X1280616Y195282D01* +X1280583Y195185D01* +X1284661Y193266D02* +X1284728Y193332D01* +X1284792Y193401D01* +X1284853Y193472D01* +X1284911Y193546D01* +X1284966Y193622D01* +X1285018Y193700D01* +X1285067Y193780D01* +X1285113Y193862D01* +X1285155Y193946D01* +X1285194Y194032D01* +X1285229Y194119D01* +X1285260Y194207D01* +X1285288Y194297D01* +X1285313Y194387D01* +X1285334Y194479D01* +X1285351Y194571D01* +X1285364Y194664D01* +X1285373Y194757D01* +X1285379Y194851D01* +X1285381Y194945D01* +X1284661Y193266D02* +X1280583Y188468D01* +X1285381Y188468D01* +X1289727Y188468D02* +X1292126Y188468D01* +X1292223Y188470D01* +X1292319Y188476D01* +X1292415Y188485D01* +X1292511Y188499D01* +X1292606Y188516D01* +X1292700Y188538D01* +X1292793Y188563D01* +X1292886Y188591D01* +X1292977Y188624D01* +X1293066Y188660D01* +X1293154Y188700D01* +X1293241Y188743D01* +X1293326Y188789D01* +X1293408Y188839D01* +X1293489Y188893D01* +X1293567Y188949D01* +X1293643Y189009D01* +X1293717Y189071D01* +X1293788Y189137D01* +X1293856Y189205D01* +X1293922Y189276D01* +X1293984Y189350D01* +X1294044Y189426D01* +X1294100Y189504D01* +X1294154Y189585D01* +X1294204Y189668D01* +X1294250Y189752D01* +X1294293Y189839D01* +X1294333Y189927D01* +X1294369Y190016D01* +X1294402Y190107D01* +X1294430Y190200D01* +X1294455Y190293D01* +X1294477Y190387D01* +X1294494Y190482D01* +X1294508Y190578D01* +X1294517Y190674D01* +X1294523Y190770D01* +X1294525Y190867D01* +X1294523Y190964D01* +X1294517Y191060D01* +X1294508Y191156D01* +X1294494Y191252D01* +X1294477Y191347D01* +X1294455Y191441D01* +X1294430Y191534D01* +X1294402Y191627D01* +X1294369Y191718D01* +X1294333Y191807D01* +X1294293Y191895D01* +X1294250Y191982D01* +X1294204Y192066D01* +X1294154Y192149D01* +X1294100Y192230D01* +X1294044Y192308D01* +X1293984Y192384D01* +X1293922Y192458D01* +X1293856Y192529D01* +X1293788Y192597D01* +X1293717Y192663D01* +X1293643Y192725D01* +X1293567Y192785D01* +X1293489Y192841D01* +X1293408Y192895D01* +X1293326Y192945D01* +X1293241Y192991D01* +X1293154Y193034D01* +X1293066Y193074D01* +X1292977Y193110D01* +X1292886Y193143D01* +X1292793Y193171D01* +X1292700Y193196D01* +X1292606Y193218D01* +X1292511Y193235D01* +X1292415Y193249D01* +X1292319Y193258D01* +X1292223Y193264D01* +X1292126Y193266D01* +X1292606Y197104D02* +X1289727Y197104D01* +X1292606Y197104D02* +X1292692Y197102D01* +X1292778Y197096D01* +X1292864Y197087D01* +X1292949Y197073D01* +X1293033Y197056D01* +X1293117Y197035D01* +X1293199Y197010D01* +X1293280Y196982D01* +X1293360Y196950D01* +X1293439Y196914D01* +X1293515Y196875D01* +X1293590Y196832D01* +X1293663Y196787D01* +X1293734Y196738D01* +X1293802Y196685D01* +X1293869Y196630D01* +X1293932Y196572D01* +X1293993Y196511D01* +X1294051Y196448D01* +X1294106Y196381D01* +X1294159Y196313D01* +X1294208Y196242D01* +X1294253Y196169D01* +X1294296Y196094D01* +X1294335Y196018D01* +X1294371Y195939D01* +X1294403Y195859D01* +X1294431Y195778D01* +X1294456Y195696D01* +X1294477Y195612D01* +X1294494Y195528D01* +X1294508Y195443D01* +X1294517Y195357D01* +X1294523Y195271D01* +X1294525Y195185D01* +X1294523Y195099D01* +X1294517Y195013D01* +X1294508Y194927D01* +X1294494Y194842D01* +X1294477Y194758D01* +X1294456Y194674D01* +X1294431Y194592D01* +X1294403Y194511D01* +X1294371Y194431D01* +X1294335Y194352D01* +X1294296Y194276D01* +X1294253Y194201D01* +X1294208Y194128D01* +X1294159Y194057D01* +X1294106Y193989D01* +X1294051Y193922D01* +X1293993Y193859D01* +X1293932Y193798D01* +X1293869Y193740D01* +X1293802Y193685D01* +X1293734Y193632D01* +X1293663Y193583D01* +X1293590Y193538D01* +X1293515Y193495D01* +X1293439Y193456D01* +X1293360Y193420D01* +X1293280Y193388D01* +X1293199Y193360D01* +X1293117Y193335D01* +X1293033Y193314D01* +X1292949Y193297D01* +X1292864Y193283D01* +X1292778Y193274D01* +X1292692Y193268D01* +X1292606Y193266D01* +X1290687Y193266D01* +D17* +X1259840Y142240D03* +D14* +X1271016Y146304D02* +X1271016Y137668D01* +X1271016Y146304D02* +X1273415Y146304D01* +X1273512Y146302D01* +X1273608Y146296D01* +X1273704Y146287D01* +X1273800Y146273D01* +X1273895Y146256D01* +X1273989Y146234D01* +X1274082Y146209D01* +X1274175Y146181D01* +X1274266Y146148D01* +X1274355Y146112D01* +X1274443Y146072D01* +X1274530Y146029D01* +X1274615Y145983D01* +X1274697Y145933D01* +X1274778Y145879D01* +X1274856Y145823D01* +X1274932Y145763D01* +X1275006Y145701D01* +X1275077Y145635D01* +X1275145Y145567D01* +X1275211Y145496D01* +X1275273Y145422D01* +X1275333Y145346D01* +X1275389Y145268D01* +X1275443Y145187D01* +X1275493Y145104D01* +X1275539Y145020D01* +X1275582Y144933D01* +X1275622Y144845D01* +X1275658Y144756D01* +X1275691Y144665D01* +X1275719Y144572D01* +X1275744Y144479D01* +X1275766Y144385D01* +X1275783Y144290D01* +X1275797Y144194D01* +X1275806Y144098D01* +X1275812Y144002D01* +X1275814Y143905D01* +X1275812Y143808D01* +X1275806Y143712D01* +X1275797Y143616D01* +X1275783Y143520D01* +X1275766Y143425D01* +X1275744Y143331D01* +X1275719Y143238D01* +X1275691Y143145D01* +X1275658Y143054D01* +X1275622Y142965D01* +X1275582Y142877D01* +X1275539Y142790D01* +X1275493Y142706D01* +X1275443Y142623D01* +X1275389Y142542D01* +X1275333Y142464D01* +X1275273Y142388D01* +X1275211Y142314D01* +X1275145Y142243D01* +X1275077Y142175D01* +X1275006Y142109D01* +X1274932Y142047D01* +X1274856Y141987D01* +X1274778Y141931D01* +X1274697Y141877D01* +X1274615Y141827D01* +X1274530Y141781D01* +X1274443Y141738D01* +X1274355Y141698D01* +X1274266Y141662D01* +X1274175Y141629D01* +X1274082Y141601D01* +X1273989Y141576D01* +X1273895Y141554D01* +X1273800Y141537D01* +X1273704Y141523D01* +X1273608Y141514D01* +X1273512Y141508D01* +X1273415Y141506D01* +X1271016Y141506D01* +X1273895Y141506D02* +X1275814Y137668D01* +X1282714Y146304D02* +X1282806Y146302D01* +X1282897Y146296D01* +X1282988Y146287D01* +X1283079Y146273D01* +X1283169Y146256D01* +X1283258Y146234D01* +X1283346Y146209D01* +X1283433Y146181D01* +X1283519Y146148D01* +X1283603Y146112D01* +X1283686Y146073D01* +X1283767Y146030D01* +X1283846Y145983D01* +X1283923Y145934D01* +X1283998Y145881D01* +X1284070Y145825D01* +X1284140Y145766D01* +X1284208Y145704D01* +X1284273Y145639D01* +X1284335Y145571D01* +X1284394Y145501D01* +X1284450Y145429D01* +X1284503Y145354D01* +X1284552Y145277D01* +X1284599Y145198D01* +X1284642Y145117D01* +X1284681Y145034D01* +X1284717Y144950D01* +X1284750Y144864D01* +X1284778Y144777D01* +X1284803Y144689D01* +X1284825Y144600D01* +X1284842Y144510D01* +X1284856Y144419D01* +X1284865Y144328D01* +X1284871Y144237D01* +X1284873Y144145D01* +X1282714Y146304D02* +X1282611Y146302D01* +X1282509Y146296D01* +X1282407Y146287D01* +X1282305Y146274D01* +X1282204Y146257D01* +X1282103Y146236D01* +X1282004Y146212D01* +X1281905Y146183D01* +X1281808Y146152D01* +X1281711Y146116D01* +X1281616Y146078D01* +X1281523Y146035D01* +X1281431Y145989D01* +X1281341Y145940D01* +X1281253Y145888D01* +X1281166Y145832D01* +X1281082Y145773D01* +X1281001Y145712D01* +X1280921Y145647D01* +X1280844Y145579D01* +X1280769Y145508D01* +X1280698Y145435D01* +X1280629Y145359D01* +X1280562Y145281D01* +X1280499Y145200D01* +X1280439Y145117D01* +X1280382Y145032D01* +X1280328Y144945D01* +X1280277Y144855D01* +X1280230Y144764D01* +X1280186Y144672D01* +X1280145Y144577D01* +X1280108Y144482D01* +X1280075Y144385D01* +X1284153Y142466D02* +X1284220Y142532D01* +X1284284Y142601D01* +X1284345Y142672D01* +X1284403Y142746D01* +X1284458Y142822D01* +X1284510Y142900D01* +X1284559Y142980D01* +X1284605Y143062D01* +X1284647Y143146D01* +X1284686Y143232D01* +X1284721Y143319D01* +X1284752Y143407D01* +X1284780Y143497D01* +X1284805Y143587D01* +X1284826Y143679D01* +X1284843Y143771D01* +X1284856Y143864D01* +X1284865Y143957D01* +X1284871Y144051D01* +X1284873Y144145D01* +X1284153Y142466D02* +X1280075Y137668D01* +X1284873Y137668D01* +X1289219Y139587D02* +X1291138Y146304D01* +X1289219Y139587D02* +X1294017Y139587D01* +X1292578Y141506D02* +X1292578Y137668D01* +D17* +X1259840Y129540D03* +D14* +X1271016Y133604D02* +X1271016Y124968D01* +X1271016Y133604D02* +X1273415Y133604D01* +X1273512Y133602D01* +X1273608Y133596D01* +X1273704Y133587D01* +X1273800Y133573D01* +X1273895Y133556D01* +X1273989Y133534D01* +X1274082Y133509D01* +X1274175Y133481D01* +X1274266Y133448D01* +X1274355Y133412D01* +X1274443Y133372D01* +X1274530Y133329D01* +X1274615Y133283D01* +X1274697Y133233D01* +X1274778Y133179D01* +X1274856Y133123D01* +X1274932Y133063D01* +X1275006Y133001D01* +X1275077Y132935D01* +X1275145Y132867D01* +X1275211Y132796D01* +X1275273Y132722D01* +X1275333Y132646D01* +X1275389Y132568D01* +X1275443Y132487D01* +X1275493Y132404D01* +X1275539Y132320D01* +X1275582Y132233D01* +X1275622Y132145D01* +X1275658Y132056D01* +X1275691Y131965D01* +X1275719Y131872D01* +X1275744Y131779D01* +X1275766Y131685D01* +X1275783Y131590D01* +X1275797Y131494D01* +X1275806Y131398D01* +X1275812Y131302D01* +X1275814Y131205D01* +X1275812Y131108D01* +X1275806Y131012D01* +X1275797Y130916D01* +X1275783Y130820D01* +X1275766Y130725D01* +X1275744Y130631D01* +X1275719Y130538D01* +X1275691Y130445D01* +X1275658Y130354D01* +X1275622Y130265D01* +X1275582Y130177D01* +X1275539Y130090D01* +X1275493Y130005D01* +X1275443Y129923D01* +X1275389Y129842D01* +X1275333Y129764D01* +X1275273Y129688D01* +X1275211Y129614D01* +X1275145Y129543D01* +X1275077Y129475D01* +X1275006Y129409D01* +X1274932Y129347D01* +X1274856Y129287D01* +X1274778Y129231D01* +X1274697Y129177D01* +X1274615Y129127D01* +X1274530Y129081D01* +X1274443Y129038D01* +X1274355Y128998D01* +X1274266Y128962D01* +X1274175Y128929D01* +X1274082Y128901D01* +X1273989Y128876D01* +X1273895Y128854D01* +X1273800Y128837D01* +X1273704Y128823D01* +X1273608Y128814D01* +X1273512Y128808D01* +X1273415Y128806D01* +X1271016Y128806D01* +X1273895Y128806D02* +X1275814Y124968D01* +X1282714Y133604D02* +X1282806Y133602D01* +X1282897Y133596D01* +X1282988Y133587D01* +X1283079Y133573D01* +X1283169Y133556D01* +X1283258Y133534D01* +X1283346Y133509D01* +X1283433Y133481D01* +X1283519Y133448D01* +X1283603Y133412D01* +X1283686Y133373D01* +X1283767Y133330D01* +X1283846Y133283D01* +X1283923Y133234D01* +X1283998Y133181D01* +X1284070Y133125D01* +X1284140Y133066D01* +X1284208Y133004D01* +X1284273Y132939D01* +X1284335Y132871D01* +X1284394Y132801D01* +X1284450Y132729D01* +X1284503Y132654D01* +X1284552Y132577D01* +X1284599Y132498D01* +X1284642Y132417D01* +X1284681Y132334D01* +X1284717Y132250D01* +X1284750Y132164D01* +X1284778Y132077D01* +X1284803Y131989D01* +X1284825Y131900D01* +X1284842Y131810D01* +X1284856Y131719D01* +X1284865Y131628D01* +X1284871Y131537D01* +X1284873Y131445D01* +X1282714Y133604D02* +X1282611Y133602D01* +X1282509Y133596D01* +X1282407Y133587D01* +X1282305Y133574D01* +X1282204Y133557D01* +X1282103Y133536D01* +X1282004Y133512D01* +X1281905Y133483D01* +X1281808Y133452D01* +X1281711Y133416D01* +X1281616Y133378D01* +X1281523Y133335D01* +X1281431Y133289D01* +X1281341Y133240D01* +X1281253Y133188D01* +X1281166Y133132D01* +X1281082Y133073D01* +X1281001Y133012D01* +X1280921Y132947D01* +X1280844Y132879D01* +X1280769Y132808D01* +X1280698Y132735D01* +X1280629Y132659D01* +X1280562Y132581D01* +X1280499Y132500D01* +X1280439Y132417D01* +X1280382Y132332D01* +X1280328Y132245D01* +X1280277Y132155D01* +X1280230Y132064D01* +X1280186Y131972D01* +X1280145Y131877D01* +X1280108Y131782D01* +X1280075Y131685D01* +X1284153Y129766D02* +X1284220Y129832D01* +X1284284Y129901D01* +X1284345Y129972D01* +X1284403Y130046D01* +X1284458Y130122D01* +X1284510Y130200D01* +X1284559Y130280D01* +X1284605Y130362D01* +X1284647Y130446D01* +X1284686Y130532D01* +X1284721Y130619D01* +X1284752Y130707D01* +X1284780Y130797D01* +X1284805Y130887D01* +X1284826Y130979D01* +X1284843Y131071D01* +X1284856Y131164D01* +X1284865Y131257D01* +X1284871Y131351D01* +X1284873Y131445D01* +X1284153Y129766D02* +X1280075Y124968D01* +X1284873Y124968D01* +X1289219Y124968D02* +X1292098Y124968D01* +X1292184Y124970D01* +X1292270Y124976D01* +X1292356Y124985D01* +X1292441Y124999D01* +X1292525Y125016D01* +X1292609Y125037D01* +X1292691Y125062D01* +X1292772Y125090D01* +X1292852Y125122D01* +X1292931Y125158D01* +X1293007Y125197D01* +X1293082Y125240D01* +X1293155Y125285D01* +X1293226Y125335D01* +X1293294Y125387D01* +X1293361Y125442D01* +X1293424Y125500D01* +X1293485Y125561D01* +X1293543Y125624D01* +X1293598Y125691D01* +X1293651Y125759D01* +X1293700Y125830D01* +X1293745Y125903D01* +X1293788Y125978D01* +X1293827Y126054D01* +X1293863Y126133D01* +X1293895Y126213D01* +X1293923Y126294D01* +X1293948Y126377D01* +X1293969Y126460D01* +X1293986Y126544D01* +X1294000Y126629D01* +X1294009Y126715D01* +X1294015Y126801D01* +X1294017Y126887D01* +X1294017Y127847D01* +X1294015Y127933D01* +X1294009Y128019D01* +X1294000Y128105D01* +X1293986Y128190D01* +X1293969Y128274D01* +X1293948Y128358D01* +X1293923Y128440D01* +X1293895Y128521D01* +X1293863Y128601D01* +X1293827Y128680D01* +X1293788Y128756D01* +X1293745Y128831D01* +X1293700Y128904D01* +X1293651Y128975D01* +X1293598Y129043D01* +X1293543Y129110D01* +X1293485Y129173D01* +X1293424Y129234D01* +X1293361Y129292D01* +X1293294Y129347D01* +X1293226Y129400D01* +X1293155Y129449D01* +X1293082Y129494D01* +X1293007Y129537D01* +X1292931Y129576D01* +X1292852Y129612D01* +X1292772Y129644D01* +X1292691Y129672D01* +X1292609Y129697D01* +X1292525Y129718D01* +X1292441Y129735D01* +X1292356Y129749D01* +X1292270Y129758D01* +X1292184Y129764D01* +X1292098Y129766D01* +X1289219Y129766D01* +X1289219Y133604D01* +X1294017Y133604D01* +D13* +X678180Y160020D03* +D14* +X641350Y200011D02* +X632714Y200011D01* +X632714Y202410D01* +X632716Y202507D01* +X632722Y202603D01* +X632731Y202699D01* +X632745Y202795D01* +X632762Y202890D01* +X632784Y202984D01* +X632809Y203077D01* +X632837Y203170D01* +X632870Y203261D01* +X632906Y203350D01* +X632946Y203438D01* +X632989Y203525D01* +X633035Y203610D01* +X633085Y203692D01* +X633139Y203773D01* +X633195Y203851D01* +X633255Y203927D01* +X633317Y204001D01* +X633383Y204072D01* +X633451Y204140D01* +X633522Y204206D01* +X633596Y204268D01* +X633672Y204328D01* +X633750Y204384D01* +X633831Y204438D01* +X633914Y204488D01* +X633998Y204534D01* +X634085Y204577D01* +X634173Y204617D01* +X634262Y204653D01* +X634353Y204686D01* +X634446Y204714D01* +X634539Y204739D01* +X634633Y204761D01* +X634728Y204778D01* +X634824Y204792D01* +X634920Y204801D01* +X635016Y204807D01* +X635113Y204809D01* +X635210Y204807D01* +X635306Y204801D01* +X635402Y204792D01* +X635498Y204778D01* +X635593Y204761D01* +X635687Y204739D01* +X635780Y204714D01* +X635873Y204686D01* +X635964Y204653D01* +X636053Y204617D01* +X636141Y204577D01* +X636228Y204534D01* +X636313Y204488D01* +X636395Y204438D01* +X636476Y204384D01* +X636554Y204328D01* +X636630Y204268D01* +X636704Y204206D01* +X636775Y204140D01* +X636843Y204072D01* +X636909Y204001D01* +X636971Y203927D01* +X637031Y203851D01* +X637087Y203773D01* +X637141Y203692D01* +X637191Y203610D01* +X637237Y203525D01* +X637280Y203438D01* +X637320Y203350D01* +X637356Y203261D01* +X637389Y203170D01* +X637417Y203077D01* +X637442Y202984D01* +X637464Y202890D01* +X637481Y202795D01* +X637495Y202699D01* +X637504Y202603D01* +X637510Y202507D01* +X637512Y202410D01* +X637512Y200011D01* +X637512Y202890D02* +X641350Y204809D01* +X632714Y211709D02* +X632716Y211801D01* +X632722Y211892D01* +X632731Y211983D01* +X632745Y212074D01* +X632762Y212164D01* +X632784Y212253D01* +X632809Y212341D01* +X632837Y212428D01* +X632870Y212514D01* +X632906Y212598D01* +X632945Y212681D01* +X632988Y212762D01* +X633035Y212841D01* +X633084Y212918D01* +X633137Y212993D01* +X633193Y213065D01* +X633252Y213135D01* +X633314Y213203D01* +X633379Y213268D01* +X633447Y213330D01* +X633517Y213389D01* +X633589Y213445D01* +X633664Y213498D01* +X633741Y213547D01* +X633820Y213594D01* +X633901Y213637D01* +X633984Y213676D01* +X634068Y213712D01* +X634154Y213745D01* +X634241Y213773D01* +X634329Y213798D01* +X634418Y213820D01* +X634508Y213837D01* +X634599Y213851D01* +X634690Y213860D01* +X634781Y213866D01* +X634873Y213868D01* +X632714Y211709D02* +X632716Y211606D01* +X632722Y211504D01* +X632731Y211402D01* +X632744Y211300D01* +X632761Y211199D01* +X632782Y211098D01* +X632806Y210999D01* +X632835Y210900D01* +X632866Y210803D01* +X632902Y210706D01* +X632940Y210611D01* +X632983Y210518D01* +X633029Y210426D01* +X633078Y210336D01* +X633130Y210248D01* +X633186Y210161D01* +X633245Y210077D01* +X633306Y209996D01* +X633371Y209916D01* +X633439Y209839D01* +X633510Y209764D01* +X633583Y209693D01* +X633659Y209624D01* +X633737Y209557D01* +X633818Y209494D01* +X633901Y209434D01* +X633986Y209377D01* +X634073Y209323D01* +X634163Y209272D01* +X634254Y209225D01* +X634346Y209181D01* +X634441Y209140D01* +X634536Y209103D01* +X634633Y209070D01* +X636552Y213148D02* +X636486Y213215D01* +X636417Y213279D01* +X636346Y213340D01* +X636272Y213398D01* +X636196Y213453D01* +X636118Y213505D01* +X636038Y213554D01* +X635956Y213600D01* +X635872Y213642D01* +X635786Y213681D01* +X635699Y213716D01* +X635611Y213747D01* +X635521Y213775D01* +X635431Y213800D01* +X635339Y213821D01* +X635247Y213838D01* +X635154Y213851D01* +X635061Y213860D01* +X634967Y213866D01* +X634873Y213868D01* +X636552Y213148D02* +X641350Y209070D01* +X641350Y213868D01* +X632714Y220853D02* +X632716Y220945D01* +X632722Y221036D01* +X632731Y221127D01* +X632745Y221218D01* +X632762Y221308D01* +X632784Y221397D01* +X632809Y221485D01* +X632837Y221572D01* +X632870Y221658D01* +X632906Y221742D01* +X632945Y221825D01* +X632988Y221906D01* +X633035Y221985D01* +X633084Y222062D01* +X633137Y222137D01* +X633193Y222209D01* +X633252Y222279D01* +X633314Y222347D01* +X633379Y222412D01* +X633447Y222474D01* +X633517Y222533D01* +X633589Y222589D01* +X633664Y222642D01* +X633741Y222691D01* +X633820Y222738D01* +X633901Y222781D01* +X633984Y222820D01* +X634068Y222856D01* +X634154Y222889D01* +X634241Y222917D01* +X634329Y222942D01* +X634418Y222964D01* +X634508Y222981D01* +X634599Y222995D01* +X634690Y223004D01* +X634781Y223010D01* +X634873Y223012D01* +X632714Y220853D02* +X632716Y220750D01* +X632722Y220648D01* +X632731Y220546D01* +X632744Y220444D01* +X632761Y220343D01* +X632782Y220242D01* +X632806Y220143D01* +X632835Y220044D01* +X632866Y219947D01* +X632902Y219850D01* +X632940Y219755D01* +X632983Y219662D01* +X633029Y219570D01* +X633078Y219480D01* +X633130Y219392D01* +X633186Y219305D01* +X633245Y219221D01* +X633306Y219140D01* +X633371Y219060D01* +X633439Y218983D01* +X633510Y218908D01* +X633583Y218837D01* +X633659Y218768D01* +X633737Y218701D01* +X633818Y218638D01* +X633901Y218578D01* +X633986Y218521D01* +X634073Y218467D01* +X634163Y218416D01* +X634254Y218369D01* +X634346Y218325D01* +X634441Y218284D01* +X634536Y218247D01* +X634633Y218214D01* +X636552Y222292D02* +X636486Y222359D01* +X636417Y222423D01* +X636346Y222484D01* +X636272Y222542D01* +X636196Y222597D01* +X636118Y222649D01* +X636038Y222698D01* +X635956Y222744D01* +X635872Y222786D01* +X635786Y222825D01* +X635699Y222860D01* +X635611Y222891D01* +X635521Y222919D01* +X635431Y222944D01* +X635339Y222965D01* +X635247Y222982D01* +X635154Y222995D01* +X635061Y223004D01* +X634967Y223010D01* +X634873Y223012D01* +X636552Y222292D02* +X641350Y218214D01* +X641350Y223012D01* +D13* +X1005840Y279400D03* +D14* +X1009142Y291592D02* +X1000506Y291592D01* +X1000506Y293991D01* +X1000508Y294088D01* +X1000514Y294184D01* +X1000523Y294280D01* +X1000537Y294376D01* +X1000554Y294471D01* +X1000576Y294565D01* +X1000601Y294658D01* +X1000629Y294751D01* +X1000662Y294842D01* +X1000698Y294931D01* +X1000738Y295019D01* +X1000781Y295106D01* +X1000827Y295191D01* +X1000877Y295273D01* +X1000931Y295354D01* +X1000987Y295432D01* +X1001047Y295508D01* +X1001109Y295582D01* +X1001175Y295653D01* +X1001243Y295721D01* +X1001314Y295787D01* +X1001388Y295849D01* +X1001464Y295909D01* +X1001542Y295965D01* +X1001623Y296019D01* +X1001706Y296069D01* +X1001790Y296115D01* +X1001877Y296158D01* +X1001965Y296198D01* +X1002054Y296234D01* +X1002145Y296267D01* +X1002238Y296295D01* +X1002331Y296320D01* +X1002425Y296342D01* +X1002520Y296359D01* +X1002616Y296373D01* +X1002712Y296382D01* +X1002808Y296388D01* +X1002905Y296390D01* +X1003002Y296388D01* +X1003098Y296382D01* +X1003194Y296373D01* +X1003290Y296359D01* +X1003385Y296342D01* +X1003479Y296320D01* +X1003572Y296295D01* +X1003665Y296267D01* +X1003756Y296234D01* +X1003845Y296198D01* +X1003933Y296158D01* +X1004020Y296115D01* +X1004105Y296069D01* +X1004187Y296019D01* +X1004268Y295965D01* +X1004346Y295909D01* +X1004422Y295849D01* +X1004496Y295787D01* +X1004567Y295721D01* +X1004635Y295653D01* +X1004701Y295582D01* +X1004763Y295508D01* +X1004823Y295432D01* +X1004879Y295354D01* +X1004933Y295273D01* +X1004983Y295191D01* +X1005029Y295106D01* +X1005072Y295019D01* +X1005112Y294931D01* +X1005148Y294842D01* +X1005181Y294751D01* +X1005209Y294658D01* +X1005234Y294565D01* +X1005256Y294471D01* +X1005273Y294376D01* +X1005287Y294280D01* +X1005296Y294184D01* +X1005302Y294088D01* +X1005304Y293991D01* +X1005304Y291592D01* +X1005304Y294471D02* +X1009142Y296390D01* +X1002425Y300651D02* +X1000506Y303050D01* +X1009142Y303050D01* +X1009142Y300651D02* +X1009142Y305449D01* +D13* +X876300Y160020D03* +D14* +X899160Y147687D02* +X907796Y147687D01* +X899160Y147687D02* +X899160Y150086D01* +X899162Y150183D01* +X899168Y150279D01* +X899177Y150375D01* +X899191Y150471D01* +X899208Y150566D01* +X899230Y150660D01* +X899255Y150753D01* +X899283Y150846D01* +X899316Y150937D01* +X899352Y151026D01* +X899392Y151114D01* +X899435Y151201D01* +X899481Y151286D01* +X899531Y151368D01* +X899585Y151449D01* +X899641Y151527D01* +X899701Y151603D01* +X899763Y151677D01* +X899829Y151748D01* +X899897Y151816D01* +X899968Y151882D01* +X900042Y151944D01* +X900118Y152004D01* +X900196Y152060D01* +X900277Y152114D01* +X900360Y152164D01* +X900444Y152210D01* +X900531Y152253D01* +X900619Y152293D01* +X900708Y152329D01* +X900799Y152362D01* +X900892Y152390D01* +X900985Y152415D01* +X901079Y152437D01* +X901174Y152454D01* +X901270Y152468D01* +X901366Y152477D01* +X901462Y152483D01* +X901559Y152485D01* +X901656Y152483D01* +X901752Y152477D01* +X901848Y152468D01* +X901944Y152454D01* +X902039Y152437D01* +X902133Y152415D01* +X902226Y152390D01* +X902319Y152362D01* +X902410Y152329D01* +X902499Y152293D01* +X902587Y152253D01* +X902674Y152210D01* +X902759Y152164D01* +X902841Y152114D01* +X902922Y152060D01* +X903000Y152004D01* +X903076Y151944D01* +X903150Y151882D01* +X903221Y151816D01* +X903289Y151748D01* +X903355Y151677D01* +X903417Y151603D01* +X903477Y151527D01* +X903533Y151449D01* +X903587Y151368D01* +X903637Y151286D01* +X903683Y151201D01* +X903726Y151114D01* +X903766Y151026D01* +X903802Y150937D01* +X903835Y150846D01* +X903863Y150753D01* +X903888Y150660D01* +X903910Y150566D01* +X903927Y150471D01* +X903941Y150375D01* +X903950Y150279D01* +X903956Y150183D01* +X903958Y150086D01* +X903958Y147687D01* +X903958Y150566D02* +X907796Y152485D01* +X901079Y156746D02* +X899160Y159145D01* +X907796Y159145D01* +X907796Y156746D02* +X907796Y161544D01* +X902998Y165890D02* +X902998Y168769D01* +X903000Y168855D01* +X903006Y168941D01* +X903015Y169027D01* +X903029Y169112D01* +X903046Y169196D01* +X903067Y169280D01* +X903092Y169362D01* +X903120Y169443D01* +X903152Y169523D01* +X903188Y169602D01* +X903227Y169678D01* +X903270Y169753D01* +X903315Y169826D01* +X903365Y169897D01* +X903417Y169965D01* +X903472Y170032D01* +X903530Y170095D01* +X903591Y170156D01* +X903654Y170214D01* +X903721Y170269D01* +X903789Y170322D01* +X903860Y170371D01* +X903933Y170416D01* +X904008Y170459D01* +X904084Y170498D01* +X904163Y170534D01* +X904243Y170566D01* +X904324Y170594D01* +X904407Y170619D01* +X904490Y170640D01* +X904574Y170657D01* +X904659Y170671D01* +X904745Y170680D01* +X904831Y170686D01* +X904917Y170688D01* +X905397Y170688D01* +X905494Y170686D01* +X905590Y170680D01* +X905686Y170671D01* +X905782Y170657D01* +X905877Y170640D01* +X905971Y170618D01* +X906064Y170593D01* +X906157Y170565D01* +X906248Y170532D01* +X906337Y170496D01* +X906425Y170456D01* +X906512Y170413D01* +X906597Y170367D01* +X906679Y170317D01* +X906760Y170263D01* +X906838Y170207D01* +X906914Y170147D01* +X906988Y170085D01* +X907059Y170019D01* +X907127Y169951D01* +X907193Y169880D01* +X907255Y169806D01* +X907315Y169730D01* +X907371Y169652D01* +X907425Y169571D01* +X907475Y169488D01* +X907521Y169404D01* +X907564Y169317D01* +X907604Y169229D01* +X907640Y169140D01* +X907673Y169049D01* +X907701Y168956D01* +X907726Y168863D01* +X907748Y168769D01* +X907765Y168674D01* +X907779Y168578D01* +X907788Y168482D01* +X907794Y168386D01* +X907796Y168289D01* +X907794Y168192D01* +X907788Y168096D01* +X907779Y168000D01* +X907765Y167904D01* +X907748Y167809D01* +X907726Y167715D01* +X907701Y167622D01* +X907673Y167529D01* +X907640Y167438D01* +X907604Y167349D01* +X907564Y167261D01* +X907521Y167174D01* +X907475Y167090D01* +X907425Y167007D01* +X907371Y166926D01* +X907315Y166848D01* +X907255Y166772D01* +X907193Y166698D01* +X907127Y166627D01* +X907059Y166559D01* +X906988Y166493D01* +X906914Y166431D01* +X906838Y166371D01* +X906760Y166315D01* +X906679Y166261D01* +X906597Y166211D01* +X906512Y166165D01* +X906425Y166122D01* +X906337Y166082D01* +X906248Y166046D01* +X906157Y166013D01* +X906064Y165985D01* +X905971Y165960D01* +X905877Y165938D01* +X905782Y165921D01* +X905686Y165907D01* +X905590Y165898D01* +X905494Y165892D01* +X905397Y165890D01* +X902998Y165890D01* +X902998Y165891D02* +X902875Y165893D01* +X902752Y165899D01* +X902629Y165909D01* +X902507Y165923D01* +X902385Y165940D01* +X902264Y165962D01* +X902144Y165987D01* +X902024Y166017D01* +X901906Y166050D01* +X901789Y166087D01* +X901672Y166127D01* +X901558Y166171D01* +X901444Y166219D01* +X901333Y166271D01* +X901223Y166326D01* +X901115Y166385D01* +X901008Y166447D01* +X900904Y166512D01* +X900802Y166581D01* +X900702Y166653D01* +X900605Y166728D01* +X900510Y166807D01* +X900418Y166888D01* +X900328Y166972D01* +X900241Y167059D01* +X900157Y167149D01* +X900076Y167241D01* +X899997Y167336D01* +X899922Y167433D01* +X899850Y167533D01* +X899781Y167635D01* +X899716Y167739D01* +X899654Y167846D01* +X899595Y167954D01* +X899540Y168064D01* +X899488Y168175D01* +X899441Y168289D01* +X899396Y168403D01* +X899356Y168520D01* +X899319Y168637D01* +X899286Y168755D01* +X899256Y168875D01* +X899231Y168995D01* +X899209Y169116D01* +X899192Y169238D01* +X899178Y169360D01* +X899168Y169483D01* +X899162Y169606D01* +X899160Y169729D01* +D13* +X1198880Y104140D03* +D14* +X1192784Y91045D02* +X1184148Y91045D01* +X1184148Y93444D01* +X1184150Y93541D01* +X1184156Y93637D01* +X1184165Y93733D01* +X1184179Y93829D01* +X1184196Y93924D01* +X1184218Y94018D01* +X1184243Y94111D01* +X1184271Y94204D01* +X1184304Y94295D01* +X1184340Y94384D01* +X1184380Y94472D01* +X1184423Y94559D01* +X1184469Y94644D01* +X1184519Y94726D01* +X1184573Y94807D01* +X1184629Y94885D01* +X1184689Y94961D01* +X1184751Y95035D01* +X1184817Y95106D01* +X1184885Y95174D01* +X1184956Y95240D01* +X1185030Y95302D01* +X1185106Y95362D01* +X1185184Y95418D01* +X1185265Y95472D01* +X1185348Y95522D01* +X1185432Y95568D01* +X1185519Y95611D01* +X1185607Y95651D01* +X1185696Y95687D01* +X1185787Y95720D01* +X1185880Y95748D01* +X1185973Y95773D01* +X1186067Y95795D01* +X1186162Y95812D01* +X1186258Y95826D01* +X1186354Y95835D01* +X1186450Y95841D01* +X1186547Y95843D01* +X1186644Y95841D01* +X1186740Y95835D01* +X1186836Y95826D01* +X1186932Y95812D01* +X1187027Y95795D01* +X1187121Y95773D01* +X1187214Y95748D01* +X1187307Y95720D01* +X1187398Y95687D01* +X1187487Y95651D01* +X1187575Y95611D01* +X1187662Y95568D01* +X1187747Y95522D01* +X1187829Y95472D01* +X1187910Y95418D01* +X1187988Y95362D01* +X1188064Y95302D01* +X1188138Y95240D01* +X1188209Y95174D01* +X1188277Y95106D01* +X1188343Y95035D01* +X1188405Y94961D01* +X1188465Y94885D01* +X1188521Y94807D01* +X1188575Y94726D01* +X1188625Y94644D01* +X1188671Y94559D01* +X1188714Y94472D01* +X1188754Y94384D01* +X1188790Y94295D01* +X1188823Y94204D01* +X1188851Y94111D01* +X1188876Y94018D01* +X1188898Y93924D01* +X1188915Y93829D01* +X1188929Y93733D01* +X1188938Y93637D01* +X1188944Y93541D01* +X1188946Y93444D01* +X1188946Y91045D01* +X1188946Y93924D02* +X1192784Y95843D01* +X1186067Y100104D02* +X1184148Y102503D01* +X1192784Y102503D01* +X1192784Y100104D02* +X1192784Y104902D01* +X1188466Y109248D02* +X1188296Y109250D01* +X1188126Y109256D01* +X1187957Y109266D01* +X1187787Y109280D01* +X1187618Y109299D01* +X1187450Y109321D01* +X1187282Y109347D01* +X1187115Y109377D01* +X1186949Y109412D01* +X1186783Y109450D01* +X1186618Y109492D01* +X1186455Y109538D01* +X1186293Y109588D01* +X1186131Y109642D01* +X1185972Y109699D01* +X1185813Y109761D01* +X1185656Y109826D01* +X1185501Y109895D01* +X1185347Y109968D01* +X1185271Y109996D01* +X1185196Y110028D01* +X1185122Y110063D01* +X1185050Y110101D01* +X1184980Y110143D01* +X1184912Y110188D01* +X1184846Y110236D01* +X1184782Y110287D01* +X1184721Y110341D01* +X1184662Y110397D01* +X1184606Y110457D01* +X1184553Y110518D01* +X1184503Y110582D01* +X1184455Y110649D01* +X1184411Y110717D01* +X1184370Y110788D01* +X1184332Y110860D01* +X1184298Y110934D01* +X1184267Y111009D01* +X1184239Y111086D01* +X1184215Y111164D01* +X1184195Y111243D01* +X1184178Y111323D01* +X1184165Y111403D01* +X1184155Y111484D01* +X1184150Y111565D01* +X1184148Y111647D01* +X1184150Y111729D01* +X1184155Y111810D01* +X1184165Y111891D01* +X1184178Y111971D01* +X1184195Y112051D01* +X1184215Y112130D01* +X1184239Y112208D01* +X1184267Y112285D01* +X1184298Y112360D01* +X1184332Y112434D01* +X1184370Y112506D01* +X1184411Y112577D01* +X1184455Y112645D01* +X1184503Y112712D01* +X1184553Y112776D01* +X1184606Y112837D01* +X1184662Y112897D01* +X1184721Y112953D01* +X1184782Y113007D01* +X1184846Y113058D01* +X1184912Y113106D01* +X1184980Y113151D01* +X1185050Y113193D01* +X1185122Y113231D01* +X1185196Y113266D01* +X1185271Y113298D01* +X1185347Y113326D01* +X1185501Y113399D01* +X1185656Y113468D01* +X1185813Y113533D01* +X1185972Y113595D01* +X1186131Y113652D01* +X1186293Y113706D01* +X1186455Y113756D01* +X1186618Y113802D01* +X1186783Y113844D01* +X1186949Y113882D01* +X1187115Y113917D01* +X1187282Y113947D01* +X1187450Y113973D01* +X1187618Y113995D01* +X1187787Y114014D01* +X1187957Y114028D01* +X1188126Y114038D01* +X1188296Y114044D01* +X1188466Y114046D01* +X1188466Y109248D02* +X1188636Y109250D01* +X1188806Y109256D01* +X1188975Y109266D01* +X1189145Y109280D01* +X1189314Y109299D01* +X1189482Y109321D01* +X1189650Y109347D01* +X1189817Y109377D01* +X1189983Y109412D01* +X1190149Y109450D01* +X1190314Y109492D01* +X1190477Y109538D01* +X1190639Y109588D01* +X1190801Y109642D01* +X1190960Y109699D01* +X1191119Y109761D01* +X1191276Y109826D01* +X1191431Y109895D01* +X1191585Y109968D01* +X1191661Y109996D01* +X1191736Y110028D01* +X1191810Y110063D01* +X1191882Y110101D01* +X1191952Y110143D01* +X1192020Y110188D01* +X1192086Y110236D01* +X1192150Y110287D01* +X1192211Y110341D01* +X1192270Y110397D01* +X1192326Y110457D01* +X1192379Y110518D01* +X1192429Y110582D01* +X1192477Y110649D01* +X1192521Y110717D01* +X1192562Y110788D01* +X1192600Y110860D01* +X1192634Y110934D01* +X1192665Y111009D01* +X1192693Y111086D01* +X1192717Y111164D01* +X1192737Y111243D01* +X1192754Y111323D01* +X1192767Y111403D01* +X1192777Y111484D01* +X1192782Y111565D01* +X1192784Y111647D01* +X1191585Y113326D02* +X1191431Y113399D01* +X1191276Y113468D01* +X1191119Y113533D01* +X1190960Y113595D01* +X1190801Y113652D01* +X1190639Y113706D01* +X1190477Y113756D01* +X1190314Y113802D01* +X1190149Y113844D01* +X1189983Y113882D01* +X1189817Y113917D01* +X1189650Y113947D01* +X1189482Y113973D01* +X1189314Y113995D01* +X1189145Y114014D01* +X1188975Y114028D01* +X1188806Y114038D01* +X1188636Y114044D01* +X1188466Y114046D01* +X1191585Y113326D02* +X1191661Y113298D01* +X1191736Y113266D01* +X1191810Y113231D01* +X1191882Y113193D01* +X1191952Y113151D01* +X1192020Y113106D01* +X1192086Y113058D01* +X1192150Y113007D01* +X1192211Y112953D01* +X1192270Y112897D01* +X1192326Y112837D01* +X1192379Y112776D01* +X1192429Y112712D01* +X1192477Y112645D01* +X1192521Y112577D01* +X1192562Y112506D01* +X1192600Y112434D01* +X1192634Y112360D01* +X1192665Y112285D01* +X1192693Y112208D01* +X1192717Y112130D01* +X1192737Y112051D01* +X1192754Y111971D01* +X1192767Y111891D01* +X1192777Y111810D01* +X1192782Y111729D01* +X1192784Y111647D01* +X1190865Y109728D02* +X1186067Y113566D01* +D13* +X970280Y127000D03* +D14* +X976630Y118985D02* +X985266Y118985D01* +X976630Y118985D02* +X976630Y121384D01* +X976632Y121481D01* +X976638Y121577D01* +X976647Y121673D01* +X976661Y121769D01* +X976678Y121864D01* +X976700Y121958D01* +X976725Y122051D01* +X976753Y122144D01* +X976786Y122235D01* +X976822Y122324D01* +X976862Y122412D01* +X976905Y122499D01* +X976951Y122584D01* +X977001Y122666D01* +X977055Y122747D01* +X977111Y122825D01* +X977171Y122901D01* +X977233Y122975D01* +X977299Y123046D01* +X977367Y123114D01* +X977438Y123180D01* +X977512Y123242D01* +X977588Y123302D01* +X977666Y123358D01* +X977747Y123412D01* +X977830Y123462D01* +X977914Y123508D01* +X978001Y123551D01* +X978089Y123591D01* +X978178Y123627D01* +X978269Y123660D01* +X978362Y123688D01* +X978455Y123713D01* +X978549Y123735D01* +X978644Y123752D01* +X978740Y123766D01* +X978836Y123775D01* +X978932Y123781D01* +X979029Y123783D01* +X979126Y123781D01* +X979222Y123775D01* +X979318Y123766D01* +X979414Y123752D01* +X979509Y123735D01* +X979603Y123713D01* +X979696Y123688D01* +X979789Y123660D01* +X979880Y123627D01* +X979969Y123591D01* +X980057Y123551D01* +X980144Y123508D01* +X980229Y123462D01* +X980311Y123412D01* +X980392Y123358D01* +X980470Y123302D01* +X980546Y123242D01* +X980620Y123180D01* +X980691Y123114D01* +X980759Y123046D01* +X980825Y122975D01* +X980887Y122901D01* +X980947Y122825D01* +X981003Y122747D01* +X981057Y122666D01* +X981107Y122584D01* +X981153Y122499D01* +X981196Y122412D01* +X981236Y122324D01* +X981272Y122235D01* +X981305Y122144D01* +X981333Y122051D01* +X981358Y121958D01* +X981380Y121864D01* +X981397Y121769D01* +X981411Y121673D01* +X981420Y121577D01* +X981426Y121481D01* +X981428Y121384D01* +X981428Y118985D01* +X981428Y121864D02* +X985266Y123783D01* +X978549Y128044D02* +X976630Y130443D01* +X985266Y130443D01* +X985266Y128044D02* +X985266Y132842D01* +X978549Y137188D02* +X976630Y139587D01* +X985266Y139587D01* +X985266Y137188D02* +X985266Y141986D01* +D17* +X972820Y254000D03* +D14* +X962152Y248158D02* +X962152Y239522D01* +X962152Y248158D02* +X964551Y248158D01* +X964648Y248156D01* +X964744Y248150D01* +X964840Y248141D01* +X964936Y248127D01* +X965031Y248110D01* +X965125Y248088D01* +X965218Y248063D01* +X965311Y248035D01* +X965402Y248002D01* +X965491Y247966D01* +X965579Y247926D01* +X965666Y247883D01* +X965751Y247837D01* +X965833Y247787D01* +X965914Y247733D01* +X965992Y247677D01* +X966068Y247617D01* +X966142Y247555D01* +X966213Y247489D01* +X966281Y247421D01* +X966347Y247350D01* +X966409Y247276D01* +X966469Y247200D01* +X966525Y247122D01* +X966579Y247041D01* +X966629Y246958D01* +X966675Y246874D01* +X966718Y246787D01* +X966758Y246699D01* +X966794Y246610D01* +X966827Y246519D01* +X966855Y246426D01* +X966880Y246333D01* +X966902Y246239D01* +X966919Y246144D01* +X966933Y246048D01* +X966942Y245952D01* +X966948Y245856D01* +X966950Y245759D01* +X966948Y245662D01* +X966942Y245566D01* +X966933Y245470D01* +X966919Y245374D01* +X966902Y245279D01* +X966880Y245185D01* +X966855Y245092D01* +X966827Y244999D01* +X966794Y244908D01* +X966758Y244819D01* +X966718Y244731D01* +X966675Y244644D01* +X966629Y244560D01* +X966579Y244477D01* +X966525Y244396D01* +X966469Y244318D01* +X966409Y244242D01* +X966347Y244168D01* +X966281Y244097D01* +X966213Y244029D01* +X966142Y243963D01* +X966068Y243901D01* +X965992Y243841D01* +X965914Y243785D01* +X965833Y243731D01* +X965751Y243681D01* +X965666Y243635D01* +X965579Y243592D01* +X965491Y243552D01* +X965402Y243516D01* +X965311Y243483D01* +X965218Y243455D01* +X965125Y243430D01* +X965031Y243408D01* +X964936Y243391D01* +X964840Y243377D01* +X964744Y243368D01* +X964648Y243362D01* +X964551Y243360D01* +X962152Y243360D01* +X965031Y243360D02* +X966950Y239522D01* +X971211Y246239D02* +X973610Y248158D01* +X973610Y239522D01* +X971211Y239522D02* +X976009Y239522D01* +X982994Y248158D02* +X983086Y248156D01* +X983177Y248150D01* +X983268Y248141D01* +X983359Y248127D01* +X983449Y248110D01* +X983538Y248088D01* +X983626Y248063D01* +X983713Y248035D01* +X983799Y248002D01* +X983883Y247966D01* +X983966Y247927D01* +X984047Y247884D01* +X984126Y247837D01* +X984203Y247788D01* +X984278Y247735D01* +X984350Y247679D01* +X984420Y247620D01* +X984488Y247558D01* +X984553Y247493D01* +X984615Y247425D01* +X984674Y247355D01* +X984730Y247283D01* +X984783Y247208D01* +X984832Y247131D01* +X984879Y247052D01* +X984922Y246971D01* +X984961Y246888D01* +X984997Y246804D01* +X985030Y246718D01* +X985058Y246631D01* +X985083Y246543D01* +X985105Y246454D01* +X985122Y246364D01* +X985136Y246273D01* +X985145Y246182D01* +X985151Y246091D01* +X985153Y245999D01* +X982994Y248158D02* +X982891Y248156D01* +X982789Y248150D01* +X982687Y248141D01* +X982585Y248128D01* +X982484Y248111D01* +X982383Y248090D01* +X982284Y248066D01* +X982185Y248037D01* +X982088Y248006D01* +X981991Y247970D01* +X981896Y247932D01* +X981803Y247889D01* +X981711Y247843D01* +X981621Y247794D01* +X981533Y247742D01* +X981446Y247686D01* +X981362Y247627D01* +X981281Y247566D01* +X981201Y247501D01* +X981124Y247433D01* +X981049Y247362D01* +X980978Y247289D01* +X980909Y247213D01* +X980842Y247135D01* +X980779Y247054D01* +X980719Y246971D01* +X980662Y246886D01* +X980608Y246799D01* +X980557Y246709D01* +X980510Y246618D01* +X980466Y246526D01* +X980425Y246431D01* +X980388Y246336D01* +X980355Y246239D01* +X984433Y244320D02* +X984500Y244386D01* +X984564Y244455D01* +X984625Y244526D01* +X984683Y244600D01* +X984738Y244676D01* +X984790Y244754D01* +X984839Y244834D01* +X984885Y244916D01* +X984927Y245000D01* +X984966Y245086D01* +X985001Y245173D01* +X985032Y245261D01* +X985060Y245351D01* +X985085Y245441D01* +X985106Y245533D01* +X985123Y245625D01* +X985136Y245718D01* +X985145Y245811D01* +X985151Y245905D01* +X985153Y245999D01* +X984433Y244320D02* +X980355Y239522D01* +X985153Y239522D01* +D13* +X1041400Y91440D03* +D14* +X1044702Y102362D02* +X1036066Y102362D01* +X1036066Y104761D01* +X1036068Y104858D01* +X1036074Y104954D01* +X1036083Y105050D01* +X1036097Y105146D01* +X1036114Y105241D01* +X1036136Y105335D01* +X1036161Y105428D01* +X1036189Y105521D01* +X1036222Y105612D01* +X1036258Y105701D01* +X1036298Y105789D01* +X1036341Y105876D01* +X1036387Y105961D01* +X1036437Y106043D01* +X1036491Y106124D01* +X1036547Y106202D01* +X1036607Y106278D01* +X1036669Y106352D01* +X1036735Y106423D01* +X1036803Y106491D01* +X1036874Y106557D01* +X1036948Y106619D01* +X1037024Y106679D01* +X1037102Y106735D01* +X1037183Y106789D01* +X1037266Y106839D01* +X1037350Y106885D01* +X1037437Y106928D01* +X1037525Y106968D01* +X1037614Y107004D01* +X1037705Y107037D01* +X1037798Y107065D01* +X1037891Y107090D01* +X1037985Y107112D01* +X1038080Y107129D01* +X1038176Y107143D01* +X1038272Y107152D01* +X1038368Y107158D01* +X1038465Y107160D01* +X1038562Y107158D01* +X1038658Y107152D01* +X1038754Y107143D01* +X1038850Y107129D01* +X1038945Y107112D01* +X1039039Y107090D01* +X1039132Y107065D01* +X1039225Y107037D01* +X1039316Y107004D01* +X1039405Y106968D01* +X1039493Y106928D01* +X1039580Y106885D01* +X1039665Y106839D01* +X1039747Y106789D01* +X1039828Y106735D01* +X1039906Y106679D01* +X1039982Y106619D01* +X1040056Y106557D01* +X1040127Y106491D01* +X1040195Y106423D01* +X1040261Y106352D01* +X1040323Y106278D01* +X1040383Y106202D01* +X1040439Y106124D01* +X1040493Y106043D01* +X1040543Y105961D01* +X1040589Y105876D01* +X1040632Y105789D01* +X1040672Y105701D01* +X1040708Y105612D01* +X1040741Y105521D01* +X1040769Y105428D01* +X1040794Y105335D01* +X1040816Y105241D01* +X1040833Y105146D01* +X1040847Y105050D01* +X1040856Y104954D01* +X1040862Y104858D01* +X1040864Y104761D01* +X1040864Y102362D01* +X1040864Y105241D02* +X1044702Y107160D01* +X1037985Y111421D02* +X1036066Y113820D01* +X1044702Y113820D01* +X1044702Y111421D02* +X1044702Y116219D01* +X1042783Y120565D02* +X1036066Y122484D01* +X1042783Y120565D02* +X1042783Y125363D01* +X1040864Y123924D02* +X1044702Y123924D01* +D17* +X434340Y210820D03* +D14* +X399401Y209042D02* +X399401Y217678D01* +X401800Y217678D01* +X401897Y217676D01* +X401993Y217670D01* +X402089Y217661D01* +X402185Y217647D01* +X402280Y217630D01* +X402374Y217608D01* +X402467Y217583D01* +X402560Y217555D01* +X402651Y217522D01* +X402740Y217486D01* +X402828Y217446D01* +X402915Y217403D01* +X403000Y217357D01* +X403082Y217307D01* +X403163Y217253D01* +X403241Y217197D01* +X403317Y217137D01* +X403391Y217075D01* +X403462Y217009D01* +X403530Y216941D01* +X403596Y216870D01* +X403658Y216796D01* +X403718Y216720D01* +X403774Y216642D01* +X403828Y216561D01* +X403878Y216478D01* +X403924Y216394D01* +X403967Y216307D01* +X404007Y216219D01* +X404043Y216130D01* +X404076Y216039D01* +X404104Y215946D01* +X404129Y215853D01* +X404151Y215759D01* +X404168Y215664D01* +X404182Y215568D01* +X404191Y215472D01* +X404197Y215376D01* +X404199Y215279D01* +X404197Y215182D01* +X404191Y215086D01* +X404182Y214990D01* +X404168Y214894D01* +X404151Y214799D01* +X404129Y214705D01* +X404104Y214612D01* +X404076Y214519D01* +X404043Y214428D01* +X404007Y214339D01* +X403967Y214251D01* +X403924Y214164D01* +X403878Y214080D01* +X403828Y213997D01* +X403774Y213916D01* +X403718Y213838D01* +X403658Y213762D01* +X403596Y213688D01* +X403530Y213617D01* +X403462Y213549D01* +X403391Y213483D01* +X403317Y213421D01* +X403241Y213361D01* +X403163Y213305D01* +X403082Y213251D01* +X403000Y213201D01* +X402915Y213155D01* +X402828Y213112D01* +X402740Y213072D01* +X402651Y213036D01* +X402560Y213003D01* +X402467Y212975D01* +X402374Y212950D01* +X402280Y212928D01* +X402185Y212911D01* +X402089Y212897D01* +X401993Y212888D01* +X401897Y212882D01* +X401800Y212880D01* +X399401Y212880D01* +X402280Y212880D02* +X404199Y209042D01* +X408460Y209042D02* +X410859Y209042D01* +X410956Y209044D01* +X411052Y209050D01* +X411148Y209059D01* +X411244Y209073D01* +X411339Y209090D01* +X411433Y209112D01* +X411526Y209137D01* +X411619Y209165D01* +X411710Y209198D01* +X411799Y209234D01* +X411887Y209274D01* +X411974Y209317D01* +X412059Y209363D01* +X412141Y209413D01* +X412222Y209467D01* +X412300Y209523D01* +X412376Y209583D01* +X412450Y209645D01* +X412521Y209711D01* +X412589Y209779D01* +X412655Y209850D01* +X412717Y209924D01* +X412777Y210000D01* +X412833Y210078D01* +X412887Y210159D01* +X412937Y210242D01* +X412983Y210326D01* +X413026Y210413D01* +X413066Y210501D01* +X413102Y210590D01* +X413135Y210681D01* +X413163Y210774D01* +X413188Y210867D01* +X413210Y210961D01* +X413227Y211056D01* +X413241Y211152D01* +X413250Y211248D01* +X413256Y211344D01* +X413258Y211441D01* +X413256Y211538D01* +X413250Y211634D01* +X413241Y211730D01* +X413227Y211826D01* +X413210Y211921D01* +X413188Y212015D01* +X413163Y212108D01* +X413135Y212201D01* +X413102Y212292D01* +X413066Y212381D01* +X413026Y212469D01* +X412983Y212556D01* +X412937Y212640D01* +X412887Y212723D01* +X412833Y212804D01* +X412777Y212882D01* +X412717Y212958D01* +X412655Y213032D01* +X412589Y213103D01* +X412521Y213171D01* +X412450Y213237D01* +X412376Y213299D01* +X412300Y213359D01* +X412222Y213415D01* +X412141Y213469D01* +X412059Y213519D01* +X411974Y213565D01* +X411887Y213608D01* +X411799Y213648D01* +X411710Y213684D01* +X411619Y213717D01* +X411526Y213745D01* +X411433Y213770D01* +X411339Y213792D01* +X411244Y213809D01* +X411148Y213823D01* +X411052Y213832D01* +X410956Y213838D01* +X410859Y213840D01* +X411339Y217678D02* +X408460Y217678D01* +X411339Y217678D02* +X411425Y217676D01* +X411511Y217670D01* +X411597Y217661D01* +X411682Y217647D01* +X411766Y217630D01* +X411850Y217609D01* +X411932Y217584D01* +X412013Y217556D01* +X412093Y217524D01* +X412172Y217488D01* +X412248Y217449D01* +X412323Y217406D01* +X412396Y217361D01* +X412467Y217312D01* +X412535Y217259D01* +X412602Y217204D01* +X412665Y217146D01* +X412726Y217085D01* +X412784Y217022D01* +X412839Y216955D01* +X412892Y216887D01* +X412941Y216816D01* +X412986Y216743D01* +X413029Y216668D01* +X413068Y216592D01* +X413104Y216513D01* +X413136Y216433D01* +X413164Y216352D01* +X413189Y216270D01* +X413210Y216186D01* +X413227Y216102D01* +X413241Y216017D01* +X413250Y215931D01* +X413256Y215845D01* +X413258Y215759D01* +X413256Y215673D01* +X413250Y215587D01* +X413241Y215501D01* +X413227Y215416D01* +X413210Y215332D01* +X413189Y215248D01* +X413164Y215166D01* +X413136Y215085D01* +X413104Y215005D01* +X413068Y214926D01* +X413029Y214850D01* +X412986Y214775D01* +X412941Y214702D01* +X412892Y214631D01* +X412839Y214563D01* +X412784Y214496D01* +X412726Y214433D01* +X412665Y214372D01* +X412602Y214314D01* +X412535Y214259D01* +X412467Y214206D01* +X412396Y214157D01* +X412323Y214112D01* +X412248Y214069D01* +X412172Y214030D01* +X412093Y213994D01* +X412013Y213962D01* +X411932Y213934D01* +X411850Y213909D01* +X411766Y213888D01* +X411682Y213871D01* +X411597Y213857D01* +X411511Y213848D01* +X411425Y213842D01* +X411339Y213840D01* +X409420Y213840D01* +X419523Y212880D02* +X422402Y212880D01* +X419523Y212880D02* +X419437Y212882D01* +X419351Y212888D01* +X419265Y212897D01* +X419180Y212911D01* +X419096Y212928D01* +X419012Y212949D01* +X418930Y212974D01* +X418849Y213002D01* +X418769Y213034D01* +X418690Y213070D01* +X418614Y213109D01* +X418539Y213152D01* +X418466Y213197D01* +X418395Y213246D01* +X418327Y213299D01* +X418260Y213354D01* +X418197Y213412D01* +X418136Y213473D01* +X418078Y213536D01* +X418023Y213603D01* +X417970Y213671D01* +X417921Y213742D01* +X417876Y213815D01* +X417833Y213890D01* +X417794Y213966D01* +X417758Y214045D01* +X417726Y214125D01* +X417698Y214206D01* +X417673Y214288D01* +X417652Y214372D01* +X417635Y214456D01* +X417621Y214541D01* +X417612Y214627D01* +X417606Y214713D01* +X417604Y214799D01* +X417604Y215279D01* +X417606Y215376D01* +X417612Y215472D01* +X417621Y215568D01* +X417635Y215664D01* +X417652Y215759D01* +X417674Y215853D01* +X417699Y215946D01* +X417727Y216039D01* +X417760Y216130D01* +X417796Y216219D01* +X417836Y216307D01* +X417879Y216394D01* +X417925Y216479D01* +X417975Y216561D01* +X418029Y216642D01* +X418085Y216720D01* +X418145Y216796D01* +X418207Y216870D01* +X418273Y216941D01* +X418341Y217009D01* +X418412Y217075D01* +X418486Y217137D01* +X418562Y217197D01* +X418640Y217253D01* +X418721Y217307D01* +X418804Y217357D01* +X418888Y217403D01* +X418975Y217446D01* +X419063Y217486D01* +X419152Y217522D01* +X419243Y217555D01* +X419336Y217583D01* +X419429Y217608D01* +X419523Y217630D01* +X419618Y217647D01* +X419714Y217661D01* +X419810Y217670D01* +X419906Y217676D01* +X420003Y217678D01* +X420100Y217676D01* +X420196Y217670D01* +X420292Y217661D01* +X420388Y217647D01* +X420483Y217630D01* +X420577Y217608D01* +X420670Y217583D01* +X420763Y217555D01* +X420854Y217522D01* +X420943Y217486D01* +X421031Y217446D01* +X421118Y217403D01* +X421203Y217357D01* +X421285Y217307D01* +X421366Y217253D01* +X421444Y217197D01* +X421520Y217137D01* +X421594Y217075D01* +X421665Y217009D01* +X421733Y216941D01* +X421799Y216870D01* +X421861Y216796D01* +X421921Y216720D01* +X421977Y216642D01* +X422031Y216561D01* +X422081Y216479D01* +X422127Y216394D01* +X422170Y216307D01* +X422210Y216219D01* +X422246Y216130D01* +X422279Y216039D01* +X422307Y215946D01* +X422332Y215853D01* +X422354Y215759D01* +X422371Y215664D01* +X422385Y215568D01* +X422394Y215472D01* +X422400Y215376D01* +X422402Y215279D01* +X422402Y212880D01* +X422400Y212757D01* +X422394Y212634D01* +X422384Y212511D01* +X422370Y212389D01* +X422353Y212267D01* +X422331Y212146D01* +X422306Y212026D01* +X422276Y211906D01* +X422243Y211788D01* +X422206Y211671D01* +X422166Y211554D01* +X422122Y211440D01* +X422074Y211326D01* +X422022Y211215D01* +X421967Y211105D01* +X421908Y210997D01* +X421846Y210890D01* +X421781Y210786D01* +X421712Y210684D01* +X421640Y210584D01* +X421565Y210487D01* +X421486Y210392D01* +X421405Y210300D01* +X421321Y210210D01* +X421234Y210123D01* +X421144Y210039D01* +X421052Y209958D01* +X420957Y209879D01* +X420860Y209804D01* +X420760Y209732D01* +X420658Y209663D01* +X420554Y209598D01* +X420447Y209536D01* +X420339Y209477D01* +X420229Y209422D01* +X420118Y209370D01* +X420004Y209323D01* +X419890Y209278D01* +X419773Y209238D01* +X419656Y209201D01* +X419538Y209168D01* +X419418Y209138D01* +X419298Y209113D01* +X419177Y209091D01* +X419055Y209074D01* +X418933Y209060D01* +X418810Y209050D01* +X418687Y209044D01* +X418564Y209042D01* +D17* +X434340Y175260D03* +D14* +X399147Y175006D02* +X399147Y166370D01* +X399147Y175006D02* +X401546Y175006D01* +X401643Y175004D01* +X401739Y174998D01* +X401835Y174989D01* +X401931Y174975D01* +X402026Y174958D01* +X402120Y174936D01* +X402213Y174911D01* +X402306Y174883D01* +X402397Y174850D01* +X402486Y174814D01* +X402574Y174774D01* +X402661Y174731D01* +X402746Y174685D01* +X402828Y174635D01* +X402909Y174581D01* +X402987Y174525D01* +X403063Y174465D01* +X403137Y174403D01* +X403208Y174337D01* +X403276Y174269D01* +X403342Y174198D01* +X403404Y174124D01* +X403464Y174048D01* +X403520Y173970D01* +X403574Y173889D01* +X403624Y173806D01* +X403670Y173722D01* +X403713Y173635D01* +X403753Y173547D01* +X403789Y173458D01* +X403822Y173367D01* +X403850Y173274D01* +X403875Y173181D01* +X403897Y173087D01* +X403914Y172992D01* +X403928Y172896D01* +X403937Y172800D01* +X403943Y172704D01* +X403945Y172607D01* +X403943Y172510D01* +X403937Y172414D01* +X403928Y172318D01* +X403914Y172222D01* +X403897Y172127D01* +X403875Y172033D01* +X403850Y171940D01* +X403822Y171847D01* +X403789Y171756D01* +X403753Y171667D01* +X403713Y171579D01* +X403670Y171492D01* +X403624Y171408D01* +X403574Y171325D01* +X403520Y171244D01* +X403464Y171166D01* +X403404Y171090D01* +X403342Y171016D01* +X403276Y170945D01* +X403208Y170877D01* +X403137Y170811D01* +X403063Y170749D01* +X402987Y170689D01* +X402909Y170633D01* +X402828Y170579D01* +X402746Y170529D01* +X402661Y170483D01* +X402574Y170440D01* +X402486Y170400D01* +X402397Y170364D01* +X402306Y170331D01* +X402213Y170303D01* +X402120Y170278D01* +X402026Y170256D01* +X401931Y170239D01* +X401835Y170225D01* +X401739Y170216D01* +X401643Y170210D01* +X401546Y170208D01* +X399147Y170208D01* +X402026Y170208D02* +X403945Y166370D01* +X408206Y166370D02* +X410605Y166370D01* +X410702Y166372D01* +X410798Y166378D01* +X410894Y166387D01* +X410990Y166401D01* +X411085Y166418D01* +X411179Y166440D01* +X411272Y166465D01* +X411365Y166493D01* +X411456Y166526D01* +X411545Y166562D01* +X411633Y166602D01* +X411720Y166645D01* +X411805Y166691D01* +X411887Y166741D01* +X411968Y166795D01* +X412046Y166851D01* +X412122Y166911D01* +X412196Y166973D01* +X412267Y167039D01* +X412335Y167107D01* +X412401Y167178D01* +X412463Y167252D01* +X412523Y167328D01* +X412579Y167406D01* +X412633Y167487D01* +X412683Y167570D01* +X412729Y167654D01* +X412772Y167741D01* +X412812Y167829D01* +X412848Y167918D01* +X412881Y168009D01* +X412909Y168102D01* +X412934Y168195D01* +X412956Y168289D01* +X412973Y168384D01* +X412987Y168480D01* +X412996Y168576D01* +X413002Y168672D01* +X413004Y168769D01* +X413002Y168866D01* +X412996Y168962D01* +X412987Y169058D01* +X412973Y169154D01* +X412956Y169249D01* +X412934Y169343D01* +X412909Y169436D01* +X412881Y169529D01* +X412848Y169620D01* +X412812Y169709D01* +X412772Y169797D01* +X412729Y169884D01* +X412683Y169968D01* +X412633Y170051D01* +X412579Y170132D01* +X412523Y170210D01* +X412463Y170286D01* +X412401Y170360D01* +X412335Y170431D01* +X412267Y170499D01* +X412196Y170565D01* +X412122Y170627D01* +X412046Y170687D01* +X411968Y170743D01* +X411887Y170797D01* +X411805Y170847D01* +X411720Y170893D01* +X411633Y170936D01* +X411545Y170976D01* +X411456Y171012D01* +X411365Y171045D01* +X411272Y171073D01* +X411179Y171098D01* +X411085Y171120D01* +X410990Y171137D01* +X410894Y171151D01* +X410798Y171160D01* +X410702Y171166D01* +X410605Y171168D01* +X411085Y175006D02* +X408206Y175006D01* +X411085Y175006D02* +X411171Y175004D01* +X411257Y174998D01* +X411343Y174989D01* +X411428Y174975D01* +X411512Y174958D01* +X411596Y174937D01* +X411678Y174912D01* +X411759Y174884D01* +X411839Y174852D01* +X411918Y174816D01* +X411994Y174777D01* +X412069Y174734D01* +X412142Y174689D01* +X412213Y174640D01* +X412281Y174587D01* +X412348Y174532D01* +X412411Y174474D01* +X412472Y174413D01* +X412530Y174350D01* +X412585Y174283D01* +X412638Y174215D01* +X412687Y174144D01* +X412732Y174071D01* +X412775Y173996D01* +X412814Y173920D01* +X412850Y173841D01* +X412882Y173761D01* +X412910Y173680D01* +X412935Y173598D01* +X412956Y173514D01* +X412973Y173430D01* +X412987Y173345D01* +X412996Y173259D01* +X413002Y173173D01* +X413004Y173087D01* +X413002Y173001D01* +X412996Y172915D01* +X412987Y172829D01* +X412973Y172744D01* +X412956Y172660D01* +X412935Y172576D01* +X412910Y172494D01* +X412882Y172413D01* +X412850Y172333D01* +X412814Y172254D01* +X412775Y172178D01* +X412732Y172103D01* +X412687Y172030D01* +X412638Y171959D01* +X412585Y171891D01* +X412530Y171824D01* +X412472Y171761D01* +X412411Y171700D01* +X412348Y171642D01* +X412281Y171587D01* +X412213Y171534D01* +X412142Y171485D01* +X412069Y171440D01* +X411994Y171397D01* +X411918Y171358D01* +X411839Y171322D01* +X411759Y171290D01* +X411678Y171262D01* +X411596Y171237D01* +X411512Y171216D01* +X411428Y171199D01* +X411343Y171185D01* +X411257Y171176D01* +X411171Y171170D01* +X411085Y171168D01* +X409166Y171168D01* +X417350Y168769D02* +X417352Y168866D01* +X417358Y168962D01* +X417367Y169058D01* +X417381Y169154D01* +X417398Y169249D01* +X417420Y169343D01* +X417445Y169436D01* +X417473Y169529D01* +X417506Y169620D01* +X417542Y169709D01* +X417582Y169797D01* +X417625Y169884D01* +X417671Y169969D01* +X417721Y170051D01* +X417775Y170132D01* +X417831Y170210D01* +X417891Y170286D01* +X417953Y170360D01* +X418019Y170431D01* +X418087Y170499D01* +X418158Y170565D01* +X418232Y170627D01* +X418308Y170687D01* +X418386Y170743D01* +X418467Y170797D01* +X418550Y170847D01* +X418634Y170893D01* +X418721Y170936D01* +X418809Y170976D01* +X418898Y171012D01* +X418989Y171045D01* +X419082Y171073D01* +X419175Y171098D01* +X419269Y171120D01* +X419364Y171137D01* +X419460Y171151D01* +X419556Y171160D01* +X419652Y171166D01* +X419749Y171168D01* +X419846Y171166D01* +X419942Y171160D01* +X420038Y171151D01* +X420134Y171137D01* +X420229Y171120D01* +X420323Y171098D01* +X420416Y171073D01* +X420509Y171045D01* +X420600Y171012D01* +X420689Y170976D01* +X420777Y170936D01* +X420864Y170893D01* +X420949Y170847D01* +X421031Y170797D01* +X421112Y170743D01* +X421190Y170687D01* +X421266Y170627D01* +X421340Y170565D01* +X421411Y170499D01* +X421479Y170431D01* +X421545Y170360D01* +X421607Y170286D01* +X421667Y170210D01* +X421723Y170132D01* +X421777Y170051D01* +X421827Y169969D01* +X421873Y169884D01* +X421916Y169797D01* +X421956Y169709D01* +X421992Y169620D01* +X422025Y169529D01* +X422053Y169436D01* +X422078Y169343D01* +X422100Y169249D01* +X422117Y169154D01* +X422131Y169058D01* +X422140Y168962D01* +X422146Y168866D01* +X422148Y168769D01* +X422146Y168672D01* +X422140Y168576D01* +X422131Y168480D01* +X422117Y168384D01* +X422100Y168289D01* +X422078Y168195D01* +X422053Y168102D01* +X422025Y168009D01* +X421992Y167918D01* +X421956Y167829D01* +X421916Y167741D01* +X421873Y167654D01* +X421827Y167569D01* +X421777Y167487D01* +X421723Y167406D01* +X421667Y167328D01* +X421607Y167252D01* +X421545Y167178D01* +X421479Y167107D01* +X421411Y167039D01* +X421340Y166973D01* +X421266Y166911D01* +X421190Y166851D01* +X421112Y166795D01* +X421031Y166741D01* +X420949Y166691D01* +X420864Y166645D01* +X420777Y166602D01* +X420689Y166562D01* +X420600Y166526D01* +X420509Y166493D01* +X420416Y166465D01* +X420323Y166440D01* +X420229Y166418D01* +X420134Y166401D01* +X420038Y166387D01* +X419942Y166378D01* +X419846Y166372D01* +X419749Y166370D01* +X419652Y166372D01* +X419556Y166378D01* +X419460Y166387D01* +X419364Y166401D01* +X419269Y166418D01* +X419175Y166440D01* +X419082Y166465D01* +X418989Y166493D01* +X418898Y166526D01* +X418809Y166562D01* +X418721Y166602D01* +X418634Y166645D01* +X418550Y166691D01* +X418467Y166741D01* +X418386Y166795D01* +X418308Y166851D01* +X418232Y166911D01* +X418158Y166973D01* +X418087Y167039D01* +X418019Y167107D01* +X417953Y167178D01* +X417891Y167252D01* +X417831Y167328D01* +X417775Y167406D01* +X417721Y167487D01* +X417671Y167570D01* +X417625Y167654D01* +X417582Y167741D01* +X417542Y167829D01* +X417506Y167918D01* +X417473Y168009D01* +X417445Y168102D01* +X417420Y168195D01* +X417398Y168289D01* +X417381Y168384D01* +X417367Y168480D01* +X417358Y168576D01* +X417352Y168672D01* +X417350Y168769D01* +X417830Y173087D02* +X417832Y173173D01* +X417838Y173259D01* +X417847Y173345D01* +X417861Y173430D01* +X417878Y173514D01* +X417899Y173598D01* +X417924Y173680D01* +X417952Y173761D01* +X417984Y173841D01* +X418020Y173920D01* +X418059Y173996D01* +X418102Y174071D01* +X418147Y174144D01* +X418196Y174215D01* +X418249Y174283D01* +X418304Y174350D01* +X418362Y174413D01* +X418423Y174474D01* +X418486Y174532D01* +X418553Y174587D01* +X418621Y174640D01* +X418692Y174689D01* +X418765Y174734D01* +X418840Y174777D01* +X418916Y174816D01* +X418995Y174852D01* +X419075Y174884D01* +X419156Y174912D01* +X419238Y174937D01* +X419322Y174958D01* +X419406Y174975D01* +X419491Y174989D01* +X419577Y174998D01* +X419663Y175004D01* +X419749Y175006D01* +X419835Y175004D01* +X419921Y174998D01* +X420007Y174989D01* +X420092Y174975D01* +X420176Y174958D01* +X420260Y174937D01* +X420342Y174912D01* +X420423Y174884D01* +X420503Y174852D01* +X420582Y174816D01* +X420658Y174777D01* +X420733Y174734D01* +X420806Y174689D01* +X420877Y174640D01* +X420945Y174587D01* +X421012Y174532D01* +X421075Y174474D01* +X421136Y174413D01* +X421194Y174350D01* +X421249Y174283D01* +X421302Y174215D01* +X421351Y174144D01* +X421396Y174071D01* +X421439Y173996D01* +X421478Y173920D01* +X421514Y173841D01* +X421546Y173761D01* +X421574Y173680D01* +X421599Y173598D01* +X421620Y173514D01* +X421637Y173430D01* +X421651Y173345D01* +X421660Y173259D01* +X421666Y173173D01* +X421668Y173087D01* +X421666Y173001D01* +X421660Y172915D01* +X421651Y172829D01* +X421637Y172744D01* +X421620Y172660D01* +X421599Y172576D01* +X421574Y172494D01* +X421546Y172413D01* +X421514Y172333D01* +X421478Y172254D01* +X421439Y172178D01* +X421396Y172103D01* +X421351Y172030D01* +X421302Y171959D01* +X421249Y171891D01* +X421194Y171824D01* +X421136Y171761D01* +X421075Y171700D01* +X421012Y171642D01* +X420945Y171587D01* +X420877Y171534D01* +X420806Y171485D01* +X420733Y171440D01* +X420658Y171397D01* +X420582Y171358D01* +X420503Y171322D01* +X420423Y171290D01* +X420342Y171262D01* +X420260Y171237D01* +X420176Y171216D01* +X420092Y171199D01* +X420007Y171185D01* +X419921Y171176D01* +X419835Y171170D01* +X419749Y171168D01* +X419663Y171170D01* +X419577Y171176D01* +X419491Y171185D01* +X419406Y171199D01* +X419322Y171216D01* +X419238Y171237D01* +X419156Y171262D01* +X419075Y171290D01* +X418995Y171322D01* +X418916Y171358D01* +X418840Y171397D01* +X418765Y171440D01* +X418692Y171485D01* +X418621Y171534D01* +X418553Y171587D01* +X418486Y171642D01* +X418423Y171700D01* +X418362Y171761D01* +X418304Y171824D01* +X418249Y171891D01* +X418196Y171959D01* +X418147Y172030D01* +X418102Y172103D01* +X418059Y172178D01* +X418020Y172254D01* +X417984Y172333D01* +X417952Y172413D01* +X417924Y172494D01* +X417899Y172576D01* +X417878Y172660D01* +X417861Y172744D01* +X417847Y172829D01* +X417838Y172915D01* +X417832Y173001D01* +X417830Y173087D01* +D17* +X426720Y185420D03* +D14* +X392289Y188722D02* +X392289Y180086D01* +X392289Y188722D02* +X394688Y188722D01* +X394785Y188720D01* +X394881Y188714D01* +X394977Y188705D01* +X395073Y188691D01* +X395168Y188674D01* +X395262Y188652D01* +X395355Y188627D01* +X395448Y188599D01* +X395539Y188566D01* +X395628Y188530D01* +X395716Y188490D01* +X395803Y188447D01* +X395888Y188401D01* +X395970Y188351D01* +X396051Y188297D01* +X396129Y188241D01* +X396205Y188181D01* +X396279Y188119D01* +X396350Y188053D01* +X396418Y187985D01* +X396484Y187914D01* +X396546Y187840D01* +X396606Y187764D01* +X396662Y187686D01* +X396716Y187605D01* +X396766Y187522D01* +X396812Y187438D01* +X396855Y187351D01* +X396895Y187263D01* +X396931Y187174D01* +X396964Y187083D01* +X396992Y186990D01* +X397017Y186897D01* +X397039Y186803D01* +X397056Y186708D01* +X397070Y186612D01* +X397079Y186516D01* +X397085Y186420D01* +X397087Y186323D01* +X397085Y186226D01* +X397079Y186130D01* +X397070Y186034D01* +X397056Y185938D01* +X397039Y185843D01* +X397017Y185749D01* +X396992Y185656D01* +X396964Y185563D01* +X396931Y185472D01* +X396895Y185383D01* +X396855Y185295D01* +X396812Y185208D01* +X396766Y185124D01* +X396716Y185041D01* +X396662Y184960D01* +X396606Y184882D01* +X396546Y184806D01* +X396484Y184732D01* +X396418Y184661D01* +X396350Y184593D01* +X396279Y184527D01* +X396205Y184465D01* +X396129Y184405D01* +X396051Y184349D01* +X395970Y184295D01* +X395888Y184245D01* +X395803Y184199D01* +X395716Y184156D01* +X395628Y184116D01* +X395539Y184080D01* +X395448Y184047D01* +X395355Y184019D01* +X395262Y183994D01* +X395168Y183972D01* +X395073Y183955D01* +X394977Y183941D01* +X394881Y183932D01* +X394785Y183926D01* +X394688Y183924D01* +X392289Y183924D01* +X395168Y183924D02* +X397087Y180086D01* +X401348Y180086D02* +X403747Y180086D01* +X403844Y180088D01* +X403940Y180094D01* +X404036Y180103D01* +X404132Y180117D01* +X404227Y180134D01* +X404321Y180156D01* +X404414Y180181D01* +X404507Y180209D01* +X404598Y180242D01* +X404687Y180278D01* +X404775Y180318D01* +X404862Y180361D01* +X404947Y180407D01* +X405029Y180457D01* +X405110Y180511D01* +X405188Y180567D01* +X405264Y180627D01* +X405338Y180689D01* +X405409Y180755D01* +X405477Y180823D01* +X405543Y180894D01* +X405605Y180968D01* +X405665Y181044D01* +X405721Y181122D01* +X405775Y181203D01* +X405825Y181286D01* +X405871Y181370D01* +X405914Y181457D01* +X405954Y181545D01* +X405990Y181634D01* +X406023Y181725D01* +X406051Y181818D01* +X406076Y181911D01* +X406098Y182005D01* +X406115Y182100D01* +X406129Y182196D01* +X406138Y182292D01* +X406144Y182388D01* +X406146Y182485D01* +X406144Y182582D01* +X406138Y182678D01* +X406129Y182774D01* +X406115Y182870D01* +X406098Y182965D01* +X406076Y183059D01* +X406051Y183152D01* +X406023Y183245D01* +X405990Y183336D01* +X405954Y183425D01* +X405914Y183513D01* +X405871Y183600D01* +X405825Y183684D01* +X405775Y183767D01* +X405721Y183848D01* +X405665Y183926D01* +X405605Y184002D01* +X405543Y184076D01* +X405477Y184147D01* +X405409Y184215D01* +X405338Y184281D01* +X405264Y184343D01* +X405188Y184403D01* +X405110Y184459D01* +X405029Y184513D01* +X404947Y184563D01* +X404862Y184609D01* +X404775Y184652D01* +X404687Y184692D01* +X404598Y184728D01* +X404507Y184761D01* +X404414Y184789D01* +X404321Y184814D01* +X404227Y184836D01* +X404132Y184853D01* +X404036Y184867D01* +X403940Y184876D01* +X403844Y184882D01* +X403747Y184884D01* +X404227Y188722D02* +X401348Y188722D01* +X404227Y188722D02* +X404313Y188720D01* +X404399Y188714D01* +X404485Y188705D01* +X404570Y188691D01* +X404654Y188674D01* +X404738Y188653D01* +X404820Y188628D01* +X404901Y188600D01* +X404981Y188568D01* +X405060Y188532D01* +X405136Y188493D01* +X405211Y188450D01* +X405284Y188405D01* +X405355Y188356D01* +X405423Y188303D01* +X405490Y188248D01* +X405553Y188190D01* +X405614Y188129D01* +X405672Y188066D01* +X405727Y187999D01* +X405780Y187931D01* +X405829Y187860D01* +X405874Y187787D01* +X405917Y187712D01* +X405956Y187636D01* +X405992Y187557D01* +X406024Y187477D01* +X406052Y187396D01* +X406077Y187314D01* +X406098Y187230D01* +X406115Y187146D01* +X406129Y187061D01* +X406138Y186975D01* +X406144Y186889D01* +X406146Y186803D01* +X406144Y186717D01* +X406138Y186631D01* +X406129Y186545D01* +X406115Y186460D01* +X406098Y186376D01* +X406077Y186292D01* +X406052Y186210D01* +X406024Y186129D01* +X405992Y186049D01* +X405956Y185970D01* +X405917Y185894D01* +X405874Y185819D01* +X405829Y185746D01* +X405780Y185675D01* +X405727Y185607D01* +X405672Y185540D01* +X405614Y185477D01* +X405553Y185416D01* +X405490Y185358D01* +X405423Y185303D01* +X405355Y185250D01* +X405284Y185201D01* +X405211Y185156D01* +X405136Y185113D01* +X405060Y185074D01* +X404981Y185038D01* +X404901Y185006D01* +X404820Y184978D01* +X404738Y184953D01* +X404654Y184932D01* +X404570Y184915D01* +X404485Y184901D01* +X404399Y184892D01* +X404313Y184886D01* +X404227Y184884D01* +X402308Y184884D01* +X410492Y187762D02* +X410492Y188722D01* +X415290Y188722D01* +X412891Y180086D01* +D17* +X426720Y200660D03* +D14* +X392543Y203454D02* +X392543Y194818D01* +X392543Y203454D02* +X394942Y203454D01* +X395039Y203452D01* +X395135Y203446D01* +X395231Y203437D01* +X395327Y203423D01* +X395422Y203406D01* +X395516Y203384D01* +X395609Y203359D01* +X395702Y203331D01* +X395793Y203298D01* +X395882Y203262D01* +X395970Y203222D01* +X396057Y203179D01* +X396142Y203133D01* +X396224Y203083D01* +X396305Y203029D01* +X396383Y202973D01* +X396459Y202913D01* +X396533Y202851D01* +X396604Y202785D01* +X396672Y202717D01* +X396738Y202646D01* +X396800Y202572D01* +X396860Y202496D01* +X396916Y202418D01* +X396970Y202337D01* +X397020Y202254D01* +X397066Y202170D01* +X397109Y202083D01* +X397149Y201995D01* +X397185Y201906D01* +X397218Y201815D01* +X397246Y201722D01* +X397271Y201629D01* +X397293Y201535D01* +X397310Y201440D01* +X397324Y201344D01* +X397333Y201248D01* +X397339Y201152D01* +X397341Y201055D01* +X397339Y200958D01* +X397333Y200862D01* +X397324Y200766D01* +X397310Y200670D01* +X397293Y200575D01* +X397271Y200481D01* +X397246Y200388D01* +X397218Y200295D01* +X397185Y200204D01* +X397149Y200115D01* +X397109Y200027D01* +X397066Y199940D01* +X397020Y199856D01* +X396970Y199773D01* +X396916Y199692D01* +X396860Y199614D01* +X396800Y199538D01* +X396738Y199464D01* +X396672Y199393D01* +X396604Y199325D01* +X396533Y199259D01* +X396459Y199197D01* +X396383Y199137D01* +X396305Y199081D01* +X396224Y199027D01* +X396142Y198977D01* +X396057Y198931D01* +X395970Y198888D01* +X395882Y198848D01* +X395793Y198812D01* +X395702Y198779D01* +X395609Y198751D01* +X395516Y198726D01* +X395422Y198704D01* +X395327Y198687D01* +X395231Y198673D01* +X395135Y198664D01* +X395039Y198658D01* +X394942Y198656D01* +X392543Y198656D01* +X395422Y198656D02* +X397341Y194818D01* +X401602Y196737D02* +X403521Y203454D01* +X401602Y196737D02* +X406400Y196737D01* +X404961Y198656D02* +X404961Y194818D01* +X413385Y203454D02* +X413477Y203452D01* +X413568Y203446D01* +X413659Y203437D01* +X413750Y203423D01* +X413840Y203406D01* +X413929Y203384D01* +X414017Y203359D01* +X414104Y203331D01* +X414190Y203298D01* +X414274Y203262D01* +X414357Y203223D01* +X414438Y203180D01* +X414517Y203133D01* +X414594Y203084D01* +X414669Y203031D01* +X414741Y202975D01* +X414811Y202916D01* +X414879Y202854D01* +X414944Y202789D01* +X415006Y202721D01* +X415065Y202651D01* +X415121Y202579D01* +X415174Y202504D01* +X415223Y202427D01* +X415270Y202348D01* +X415313Y202267D01* +X415352Y202184D01* +X415388Y202100D01* +X415421Y202014D01* +X415449Y201927D01* +X415474Y201839D01* +X415496Y201750D01* +X415513Y201660D01* +X415527Y201569D01* +X415536Y201478D01* +X415542Y201387D01* +X415544Y201295D01* +X413385Y203454D02* +X413282Y203452D01* +X413180Y203446D01* +X413078Y203437D01* +X412976Y203424D01* +X412875Y203407D01* +X412774Y203386D01* +X412675Y203362D01* +X412576Y203333D01* +X412479Y203302D01* +X412382Y203266D01* +X412287Y203228D01* +X412194Y203185D01* +X412102Y203139D01* +X412012Y203090D01* +X411924Y203038D01* +X411837Y202982D01* +X411753Y202923D01* +X411672Y202862D01* +X411592Y202797D01* +X411515Y202729D01* +X411440Y202658D01* +X411369Y202585D01* +X411300Y202509D01* +X411233Y202431D01* +X411170Y202350D01* +X411110Y202267D01* +X411053Y202182D01* +X410999Y202095D01* +X410948Y202005D01* +X410901Y201914D01* +X410857Y201822D01* +X410816Y201727D01* +X410779Y201632D01* +X410746Y201535D01* +X414824Y199616D02* +X414891Y199682D01* +X414955Y199751D01* +X415016Y199822D01* +X415074Y199896D01* +X415129Y199972D01* +X415181Y200050D01* +X415230Y200130D01* +X415276Y200212D01* +X415318Y200296D01* +X415357Y200382D01* +X415392Y200469D01* +X415423Y200557D01* +X415451Y200647D01* +X415476Y200737D01* +X415497Y200829D01* +X415514Y200921D01* +X415527Y201014D01* +X415536Y201107D01* +X415542Y201201D01* +X415544Y201295D01* +X414824Y199616D02* +X410746Y194818D01* +X415544Y194818D01* +D17* +X533400Y203200D03* +D14* +X546354Y200152D02* +X546354Y208788D01* +X548753Y208788D01* +X548850Y208786D01* +X548946Y208780D01* +X549042Y208771D01* +X549138Y208757D01* +X549233Y208740D01* +X549327Y208718D01* +X549420Y208693D01* +X549513Y208665D01* +X549604Y208632D01* +X549693Y208596D01* +X549781Y208556D01* +X549868Y208513D01* +X549953Y208467D01* +X550035Y208417D01* +X550116Y208363D01* +X550194Y208307D01* +X550270Y208247D01* +X550344Y208185D01* +X550415Y208119D01* +X550483Y208051D01* +X550549Y207980D01* +X550611Y207906D01* +X550671Y207830D01* +X550727Y207752D01* +X550781Y207671D01* +X550831Y207588D01* +X550877Y207504D01* +X550920Y207417D01* +X550960Y207329D01* +X550996Y207240D01* +X551029Y207149D01* +X551057Y207056D01* +X551082Y206963D01* +X551104Y206869D01* +X551121Y206774D01* +X551135Y206678D01* +X551144Y206582D01* +X551150Y206486D01* +X551152Y206389D01* +X551150Y206292D01* +X551144Y206196D01* +X551135Y206100D01* +X551121Y206004D01* +X551104Y205909D01* +X551082Y205815D01* +X551057Y205722D01* +X551029Y205629D01* +X550996Y205538D01* +X550960Y205449D01* +X550920Y205361D01* +X550877Y205274D01* +X550831Y205190D01* +X550781Y205107D01* +X550727Y205026D01* +X550671Y204948D01* +X550611Y204872D01* +X550549Y204798D01* +X550483Y204727D01* +X550415Y204659D01* +X550344Y204593D01* +X550270Y204531D01* +X550194Y204471D01* +X550116Y204415D01* +X550035Y204361D01* +X549953Y204311D01* +X549868Y204265D01* +X549781Y204222D01* +X549693Y204182D01* +X549604Y204146D01* +X549513Y204113D01* +X549420Y204085D01* +X549327Y204060D01* +X549233Y204038D01* +X549138Y204021D01* +X549042Y204007D01* +X548946Y203998D01* +X548850Y203992D01* +X548753Y203990D01* +X546354Y203990D01* +X549233Y203990D02* +X551152Y200152D01* +X555413Y200152D02* +X557812Y200152D01* +X557909Y200154D01* +X558005Y200160D01* +X558101Y200169D01* +X558197Y200183D01* +X558292Y200200D01* +X558386Y200222D01* +X558479Y200247D01* +X558572Y200275D01* +X558663Y200308D01* +X558752Y200344D01* +X558840Y200384D01* +X558927Y200427D01* +X559012Y200473D01* +X559094Y200523D01* +X559175Y200577D01* +X559253Y200633D01* +X559329Y200693D01* +X559403Y200755D01* +X559474Y200821D01* +X559542Y200889D01* +X559608Y200960D01* +X559670Y201034D01* +X559730Y201110D01* +X559786Y201188D01* +X559840Y201269D01* +X559890Y201352D01* +X559936Y201436D01* +X559979Y201523D01* +X560019Y201611D01* +X560055Y201700D01* +X560088Y201791D01* +X560116Y201884D01* +X560141Y201977D01* +X560163Y202071D01* +X560180Y202166D01* +X560194Y202262D01* +X560203Y202358D01* +X560209Y202454D01* +X560211Y202551D01* +X560209Y202648D01* +X560203Y202744D01* +X560194Y202840D01* +X560180Y202936D01* +X560163Y203031D01* +X560141Y203125D01* +X560116Y203218D01* +X560088Y203311D01* +X560055Y203402D01* +X560019Y203491D01* +X559979Y203579D01* +X559936Y203666D01* +X559890Y203750D01* +X559840Y203833D01* +X559786Y203914D01* +X559730Y203992D01* +X559670Y204068D01* +X559608Y204142D01* +X559542Y204213D01* +X559474Y204281D01* +X559403Y204347D01* +X559329Y204409D01* +X559253Y204469D01* +X559175Y204525D01* +X559094Y204579D01* +X559012Y204629D01* +X558927Y204675D01* +X558840Y204718D01* +X558752Y204758D01* +X558663Y204794D01* +X558572Y204827D01* +X558479Y204855D01* +X558386Y204880D01* +X558292Y204902D01* +X558197Y204919D01* +X558101Y204933D01* +X558005Y204942D01* +X557909Y204948D01* +X557812Y204950D01* +X558292Y208788D02* +X555413Y208788D01* +X558292Y208788D02* +X558378Y208786D01* +X558464Y208780D01* +X558550Y208771D01* +X558635Y208757D01* +X558719Y208740D01* +X558803Y208719D01* +X558885Y208694D01* +X558966Y208666D01* +X559046Y208634D01* +X559125Y208598D01* +X559201Y208559D01* +X559276Y208516D01* +X559349Y208471D01* +X559420Y208422D01* +X559488Y208369D01* +X559555Y208314D01* +X559618Y208256D01* +X559679Y208195D01* +X559737Y208132D01* +X559792Y208065D01* +X559845Y207997D01* +X559894Y207926D01* +X559939Y207853D01* +X559982Y207778D01* +X560021Y207702D01* +X560057Y207623D01* +X560089Y207543D01* +X560117Y207462D01* +X560142Y207380D01* +X560163Y207296D01* +X560180Y207212D01* +X560194Y207127D01* +X560203Y207041D01* +X560209Y206955D01* +X560211Y206869D01* +X560209Y206783D01* +X560203Y206697D01* +X560194Y206611D01* +X560180Y206526D01* +X560163Y206442D01* +X560142Y206358D01* +X560117Y206276D01* +X560089Y206195D01* +X560057Y206115D01* +X560021Y206036D01* +X559982Y205960D01* +X559939Y205885D01* +X559894Y205812D01* +X559845Y205741D01* +X559792Y205673D01* +X559737Y205606D01* +X559679Y205543D01* +X559618Y205482D01* +X559555Y205424D01* +X559488Y205369D01* +X559420Y205316D01* +X559349Y205267D01* +X559276Y205222D01* +X559201Y205179D01* +X559125Y205140D01* +X559046Y205104D01* +X558966Y205072D01* +X558885Y205044D01* +X558803Y205019D01* +X558719Y204998D01* +X558635Y204981D01* +X558550Y204967D01* +X558464Y204958D01* +X558378Y204952D01* +X558292Y204950D01* +X556373Y204950D01* +X564557Y204950D02* +X567436Y204950D01* +X567522Y204948D01* +X567608Y204942D01* +X567694Y204933D01* +X567779Y204919D01* +X567863Y204902D01* +X567947Y204881D01* +X568029Y204856D01* +X568110Y204828D01* +X568190Y204796D01* +X568269Y204760D01* +X568345Y204721D01* +X568420Y204678D01* +X568493Y204633D01* +X568564Y204584D01* +X568632Y204531D01* +X568699Y204476D01* +X568762Y204418D01* +X568823Y204357D01* +X568881Y204294D01* +X568936Y204227D01* +X568989Y204159D01* +X569038Y204088D01* +X569083Y204015D01* +X569126Y203940D01* +X569165Y203864D01* +X569201Y203785D01* +X569233Y203705D01* +X569261Y203624D01* +X569286Y203542D01* +X569307Y203458D01* +X569324Y203374D01* +X569338Y203289D01* +X569347Y203203D01* +X569353Y203117D01* +X569355Y203031D01* +X569355Y202551D01* +X569353Y202454D01* +X569347Y202358D01* +X569338Y202262D01* +X569324Y202166D01* +X569307Y202071D01* +X569285Y201977D01* +X569260Y201884D01* +X569232Y201791D01* +X569199Y201700D01* +X569163Y201611D01* +X569123Y201523D01* +X569080Y201436D01* +X569034Y201351D01* +X568984Y201269D01* +X568930Y201188D01* +X568874Y201110D01* +X568814Y201034D01* +X568752Y200960D01* +X568686Y200889D01* +X568618Y200821D01* +X568547Y200755D01* +X568473Y200693D01* +X568397Y200633D01* +X568319Y200577D01* +X568238Y200523D01* +X568156Y200473D01* +X568071Y200427D01* +X567984Y200384D01* +X567896Y200344D01* +X567807Y200308D01* +X567716Y200275D01* +X567623Y200247D01* +X567530Y200222D01* +X567436Y200200D01* +X567341Y200183D01* +X567245Y200169D01* +X567149Y200160D01* +X567053Y200154D01* +X566956Y200152D01* +X566859Y200154D01* +X566763Y200160D01* +X566667Y200169D01* +X566571Y200183D01* +X566476Y200200D01* +X566382Y200222D01* +X566289Y200247D01* +X566196Y200275D01* +X566105Y200308D01* +X566016Y200344D01* +X565928Y200384D01* +X565841Y200427D01* +X565757Y200473D01* +X565674Y200523D01* +X565593Y200577D01* +X565515Y200633D01* +X565439Y200693D01* +X565365Y200755D01* +X565294Y200821D01* +X565226Y200889D01* +X565160Y200960D01* +X565098Y201034D01* +X565038Y201110D01* +X564982Y201188D01* +X564928Y201269D01* +X564878Y201352D01* +X564832Y201436D01* +X564789Y201523D01* +X564749Y201611D01* +X564713Y201700D01* +X564680Y201791D01* +X564652Y201884D01* +X564627Y201977D01* +X564605Y202071D01* +X564588Y202166D01* +X564574Y202262D01* +X564565Y202358D01* +X564559Y202454D01* +X564557Y202551D01* +X564557Y204950D01* +X564558Y204950D02* +X564560Y205073D01* +X564566Y205196D01* +X564576Y205319D01* +X564590Y205441D01* +X564607Y205563D01* +X564629Y205684D01* +X564654Y205804D01* +X564684Y205924D01* +X564717Y206042D01* +X564754Y206159D01* +X564794Y206276D01* +X564838Y206390D01* +X564886Y206504D01* +X564938Y206615D01* +X564993Y206725D01* +X565052Y206833D01* +X565114Y206940D01* +X565179Y207044D01* +X565248Y207146D01* +X565320Y207246D01* +X565395Y207343D01* +X565474Y207438D01* +X565555Y207530D01* +X565639Y207620D01* +X565726Y207707D01* +X565816Y207791D01* +X565908Y207872D01* +X566003Y207951D01* +X566100Y208026D01* +X566200Y208098D01* +X566302Y208167D01* +X566406Y208232D01* +X566513Y208294D01* +X566621Y208353D01* +X566731Y208408D01* +X566842Y208460D01* +X566956Y208507D01* +X567070Y208552D01* +X567187Y208592D01* +X567304Y208629D01* +X567422Y208662D01* +X567542Y208692D01* +X567662Y208717D01* +X567783Y208739D01* +X567905Y208756D01* +X568027Y208770D01* +X568150Y208780D01* +X568273Y208786D01* +X568396Y208788D01* +D17* +X561340Y154940D03* +D14* +X573786Y156210D02* +X573786Y147574D01* +X573786Y156210D02* +X576185Y156210D01* +X576282Y156208D01* +X576378Y156202D01* +X576474Y156193D01* +X576570Y156179D01* +X576665Y156162D01* +X576759Y156140D01* +X576852Y156115D01* +X576945Y156087D01* +X577036Y156054D01* +X577125Y156018D01* +X577213Y155978D01* +X577300Y155935D01* +X577385Y155889D01* +X577467Y155839D01* +X577548Y155785D01* +X577626Y155729D01* +X577702Y155669D01* +X577776Y155607D01* +X577847Y155541D01* +X577915Y155473D01* +X577981Y155402D01* +X578043Y155328D01* +X578103Y155252D01* +X578159Y155174D01* +X578213Y155093D01* +X578263Y155010D01* +X578309Y154926D01* +X578352Y154839D01* +X578392Y154751D01* +X578428Y154662D01* +X578461Y154571D01* +X578489Y154478D01* +X578514Y154385D01* +X578536Y154291D01* +X578553Y154196D01* +X578567Y154100D01* +X578576Y154004D01* +X578582Y153908D01* +X578584Y153811D01* +X578582Y153714D01* +X578576Y153618D01* +X578567Y153522D01* +X578553Y153426D01* +X578536Y153331D01* +X578514Y153237D01* +X578489Y153144D01* +X578461Y153051D01* +X578428Y152960D01* +X578392Y152871D01* +X578352Y152783D01* +X578309Y152696D01* +X578263Y152612D01* +X578213Y152529D01* +X578159Y152448D01* +X578103Y152370D01* +X578043Y152294D01* +X577981Y152220D01* +X577915Y152149D01* +X577847Y152081D01* +X577776Y152015D01* +X577702Y151953D01* +X577626Y151893D01* +X577548Y151837D01* +X577467Y151783D01* +X577385Y151733D01* +X577300Y151687D01* +X577213Y151644D01* +X577125Y151604D01* +X577036Y151568D01* +X576945Y151535D01* +X576852Y151507D01* +X576759Y151482D01* +X576665Y151460D01* +X576570Y151443D01* +X576474Y151429D01* +X576378Y151420D01* +X576282Y151414D01* +X576185Y151412D01* +X573786Y151412D01* +X576665Y151412D02* +X578584Y147574D01* +X582845Y147574D02* +X585244Y147574D01* +X585341Y147576D01* +X585437Y147582D01* +X585533Y147591D01* +X585629Y147605D01* +X585724Y147622D01* +X585818Y147644D01* +X585911Y147669D01* +X586004Y147697D01* +X586095Y147730D01* +X586184Y147766D01* +X586272Y147806D01* +X586359Y147849D01* +X586444Y147895D01* +X586526Y147945D01* +X586607Y147999D01* +X586685Y148055D01* +X586761Y148115D01* +X586835Y148177D01* +X586906Y148243D01* +X586974Y148311D01* +X587040Y148382D01* +X587102Y148456D01* +X587162Y148532D01* +X587218Y148610D01* +X587272Y148691D01* +X587322Y148774D01* +X587368Y148858D01* +X587411Y148945D01* +X587451Y149033D01* +X587487Y149122D01* +X587520Y149213D01* +X587548Y149306D01* +X587573Y149399D01* +X587595Y149493D01* +X587612Y149588D01* +X587626Y149684D01* +X587635Y149780D01* +X587641Y149876D01* +X587643Y149973D01* +X587641Y150070D01* +X587635Y150166D01* +X587626Y150262D01* +X587612Y150358D01* +X587595Y150453D01* +X587573Y150547D01* +X587548Y150640D01* +X587520Y150733D01* +X587487Y150824D01* +X587451Y150913D01* +X587411Y151001D01* +X587368Y151088D01* +X587322Y151172D01* +X587272Y151255D01* +X587218Y151336D01* +X587162Y151414D01* +X587102Y151490D01* +X587040Y151564D01* +X586974Y151635D01* +X586906Y151703D01* +X586835Y151769D01* +X586761Y151831D01* +X586685Y151891D01* +X586607Y151947D01* +X586526Y152001D01* +X586444Y152051D01* +X586359Y152097D01* +X586272Y152140D01* +X586184Y152180D01* +X586095Y152216D01* +X586004Y152249D01* +X585911Y152277D01* +X585818Y152302D01* +X585724Y152324D01* +X585629Y152341D01* +X585533Y152355D01* +X585437Y152364D01* +X585341Y152370D01* +X585244Y152372D01* +X585724Y156210D02* +X582845Y156210D01* +X585724Y156210D02* +X585810Y156208D01* +X585896Y156202D01* +X585982Y156193D01* +X586067Y156179D01* +X586151Y156162D01* +X586235Y156141D01* +X586317Y156116D01* +X586398Y156088D01* +X586478Y156056D01* +X586557Y156020D01* +X586633Y155981D01* +X586708Y155938D01* +X586781Y155893D01* +X586852Y155844D01* +X586920Y155791D01* +X586987Y155736D01* +X587050Y155678D01* +X587111Y155617D01* +X587169Y155554D01* +X587224Y155487D01* +X587277Y155419D01* +X587326Y155348D01* +X587371Y155275D01* +X587414Y155200D01* +X587453Y155124D01* +X587489Y155045D01* +X587521Y154965D01* +X587549Y154884D01* +X587574Y154802D01* +X587595Y154718D01* +X587612Y154634D01* +X587626Y154549D01* +X587635Y154463D01* +X587641Y154377D01* +X587643Y154291D01* +X587641Y154205D01* +X587635Y154119D01* +X587626Y154033D01* +X587612Y153948D01* +X587595Y153864D01* +X587574Y153780D01* +X587549Y153698D01* +X587521Y153617D01* +X587489Y153537D01* +X587453Y153458D01* +X587414Y153382D01* +X587371Y153307D01* +X587326Y153234D01* +X587277Y153163D01* +X587224Y153095D01* +X587169Y153028D01* +X587111Y152965D01* +X587050Y152904D01* +X586987Y152846D01* +X586920Y152791D01* +X586852Y152738D01* +X586781Y152689D01* +X586708Y152644D01* +X586633Y152601D01* +X586557Y152562D01* +X586478Y152526D01* +X586398Y152494D01* +X586317Y152466D01* +X586235Y152441D01* +X586151Y152420D01* +X586067Y152403D01* +X585982Y152389D01* +X585896Y152380D01* +X585810Y152374D01* +X585724Y152372D01* +X583805Y152372D01* +X591989Y147574D02* +X594868Y147574D01* +X594954Y147576D01* +X595040Y147582D01* +X595126Y147591D01* +X595211Y147605D01* +X595295Y147622D01* +X595379Y147643D01* +X595461Y147668D01* +X595542Y147696D01* +X595622Y147728D01* +X595701Y147764D01* +X595777Y147803D01* +X595852Y147846D01* +X595925Y147891D01* +X595996Y147941D01* +X596064Y147993D01* +X596131Y148048D01* +X596194Y148106D01* +X596255Y148167D01* +X596313Y148230D01* +X596368Y148297D01* +X596421Y148365D01* +X596470Y148436D01* +X596515Y148509D01* +X596558Y148584D01* +X596597Y148660D01* +X596633Y148739D01* +X596665Y148819D01* +X596693Y148900D01* +X596718Y148983D01* +X596739Y149066D01* +X596756Y149150D01* +X596770Y149235D01* +X596779Y149321D01* +X596785Y149407D01* +X596787Y149493D01* +X596787Y150453D01* +X596785Y150539D01* +X596779Y150625D01* +X596770Y150711D01* +X596756Y150796D01* +X596739Y150880D01* +X596718Y150964D01* +X596693Y151046D01* +X596665Y151127D01* +X596633Y151207D01* +X596597Y151286D01* +X596558Y151362D01* +X596515Y151437D01* +X596470Y151510D01* +X596421Y151581D01* +X596368Y151649D01* +X596313Y151716D01* +X596255Y151779D01* +X596194Y151840D01* +X596131Y151898D01* +X596064Y151953D01* +X595996Y152006D01* +X595925Y152055D01* +X595852Y152100D01* +X595777Y152143D01* +X595701Y152182D01* +X595622Y152218D01* +X595542Y152250D01* +X595461Y152278D01* +X595379Y152303D01* +X595295Y152324D01* +X595211Y152341D01* +X595126Y152355D01* +X595040Y152364D01* +X594954Y152370D01* +X594868Y152372D01* +X591989Y152372D01* +X591989Y156210D01* +X596787Y156210D01* +D13* +X566420Y185420D03* +D14* +X581914Y195326D02* +X590550Y195326D01* +X581914Y195326D02* +X581914Y197725D01* +X581916Y197822D01* +X581922Y197918D01* +X581931Y198014D01* +X581945Y198110D01* +X581962Y198205D01* +X581984Y198299D01* +X582009Y198392D01* +X582037Y198485D01* +X582070Y198576D01* +X582106Y198665D01* +X582146Y198753D01* +X582189Y198840D01* +X582235Y198925D01* +X582285Y199007D01* +X582339Y199088D01* +X582395Y199166D01* +X582455Y199242D01* +X582517Y199316D01* +X582583Y199387D01* +X582651Y199455D01* +X582722Y199521D01* +X582796Y199583D01* +X582872Y199643D01* +X582950Y199699D01* +X583031Y199753D01* +X583114Y199803D01* +X583198Y199849D01* +X583285Y199892D01* +X583373Y199932D01* +X583462Y199968D01* +X583553Y200001D01* +X583646Y200029D01* +X583739Y200054D01* +X583833Y200076D01* +X583928Y200093D01* +X584024Y200107D01* +X584120Y200116D01* +X584216Y200122D01* +X584313Y200124D01* +X584410Y200122D01* +X584506Y200116D01* +X584602Y200107D01* +X584698Y200093D01* +X584793Y200076D01* +X584887Y200054D01* +X584980Y200029D01* +X585073Y200001D01* +X585164Y199968D01* +X585253Y199932D01* +X585341Y199892D01* +X585428Y199849D01* +X585513Y199803D01* +X585595Y199753D01* +X585676Y199699D01* +X585754Y199643D01* +X585830Y199583D01* +X585904Y199521D01* +X585975Y199455D01* +X586043Y199387D01* +X586109Y199316D01* +X586171Y199242D01* +X586231Y199166D01* +X586287Y199088D01* +X586341Y199007D01* +X586391Y198925D01* +X586437Y198840D01* +X586480Y198753D01* +X586520Y198665D01* +X586556Y198576D01* +X586589Y198485D01* +X586617Y198392D01* +X586642Y198299D01* +X586664Y198205D01* +X586681Y198110D01* +X586695Y198014D01* +X586704Y197918D01* +X586710Y197822D01* +X586712Y197725D01* +X586712Y195326D01* +X586712Y198205D02* +X590550Y200124D01* +X590550Y204385D02* +X590550Y206784D01* +X590548Y206881D01* +X590542Y206977D01* +X590533Y207073D01* +X590519Y207169D01* +X590502Y207264D01* +X590480Y207358D01* +X590455Y207451D01* +X590427Y207544D01* +X590394Y207635D01* +X590358Y207724D01* +X590318Y207812D01* +X590275Y207899D01* +X590229Y207984D01* +X590179Y208066D01* +X590125Y208147D01* +X590069Y208225D01* +X590009Y208301D01* +X589947Y208375D01* +X589881Y208446D01* +X589813Y208514D01* +X589742Y208580D01* +X589668Y208642D01* +X589592Y208702D01* +X589514Y208758D01* +X589433Y208812D01* +X589351Y208862D01* +X589266Y208908D01* +X589179Y208951D01* +X589091Y208991D01* +X589002Y209027D01* +X588911Y209060D01* +X588818Y209088D01* +X588725Y209113D01* +X588631Y209135D01* +X588536Y209152D01* +X588440Y209166D01* +X588344Y209175D01* +X588248Y209181D01* +X588151Y209183D01* +X588054Y209181D01* +X587958Y209175D01* +X587862Y209166D01* +X587766Y209152D01* +X587671Y209135D01* +X587577Y209113D01* +X587484Y209088D01* +X587391Y209060D01* +X587300Y209027D01* +X587211Y208991D01* +X587123Y208951D01* +X587036Y208908D01* +X586952Y208862D01* +X586869Y208812D01* +X586788Y208758D01* +X586710Y208702D01* +X586634Y208642D01* +X586560Y208580D01* +X586489Y208514D01* +X586421Y208446D01* +X586355Y208375D01* +X586293Y208301D01* +X586233Y208225D01* +X586177Y208147D01* +X586123Y208066D01* +X586073Y207984D01* +X586027Y207899D01* +X585984Y207812D01* +X585944Y207724D01* +X585908Y207635D01* +X585875Y207544D01* +X585847Y207451D01* +X585822Y207358D01* +X585800Y207264D01* +X585783Y207169D01* +X585769Y207073D01* +X585760Y206977D01* +X585754Y206881D01* +X585752Y206784D01* +X581914Y207264D02* +X581914Y204385D01* +X581914Y207264D02* +X581916Y207350D01* +X581922Y207436D01* +X581931Y207522D01* +X581945Y207607D01* +X581962Y207691D01* +X581983Y207775D01* +X582008Y207857D01* +X582036Y207938D01* +X582068Y208018D01* +X582104Y208097D01* +X582143Y208173D01* +X582186Y208248D01* +X582231Y208321D01* +X582280Y208392D01* +X582333Y208460D01* +X582388Y208527D01* +X582446Y208590D01* +X582507Y208651D01* +X582570Y208709D01* +X582637Y208764D01* +X582705Y208817D01* +X582776Y208866D01* +X582849Y208911D01* +X582924Y208954D01* +X583000Y208993D01* +X583079Y209029D01* +X583159Y209061D01* +X583240Y209089D01* +X583322Y209114D01* +X583406Y209135D01* +X583490Y209152D01* +X583575Y209166D01* +X583661Y209175D01* +X583747Y209181D01* +X583833Y209183D01* +X583919Y209181D01* +X584005Y209175D01* +X584091Y209166D01* +X584176Y209152D01* +X584260Y209135D01* +X584344Y209114D01* +X584426Y209089D01* +X584507Y209061D01* +X584587Y209029D01* +X584666Y208993D01* +X584742Y208954D01* +X584817Y208911D01* +X584890Y208866D01* +X584961Y208817D01* +X585029Y208764D01* +X585096Y208709D01* +X585159Y208651D01* +X585220Y208590D01* +X585278Y208527D01* +X585333Y208460D01* +X585386Y208392D01* +X585435Y208321D01* +X585480Y208248D01* +X585523Y208173D01* +X585562Y208097D01* +X585598Y208018D01* +X585630Y207938D01* +X585658Y207857D01* +X585683Y207775D01* +X585704Y207691D01* +X585721Y207607D01* +X585735Y207522D01* +X585744Y207436D01* +X585750Y207350D01* +X585752Y207264D01* +X585752Y205345D01* +X588631Y213529D02* +X581914Y215448D01* +X588631Y213529D02* +X588631Y218327D01* +X586712Y216888D02* +X590550Y216888D01* +D17* +X533400Y228600D03* +D14* +X545846Y226060D02* +X545846Y234696D01* +X548245Y234696D01* +X548342Y234694D01* +X548438Y234688D01* +X548534Y234679D01* +X548630Y234665D01* +X548725Y234648D01* +X548819Y234626D01* +X548912Y234601D01* +X549005Y234573D01* +X549096Y234540D01* +X549185Y234504D01* +X549273Y234464D01* +X549360Y234421D01* +X549445Y234375D01* +X549527Y234325D01* +X549608Y234271D01* +X549686Y234215D01* +X549762Y234155D01* +X549836Y234093D01* +X549907Y234027D01* +X549975Y233959D01* +X550041Y233888D01* +X550103Y233814D01* +X550163Y233738D01* +X550219Y233660D01* +X550273Y233579D01* +X550323Y233496D01* +X550369Y233412D01* +X550412Y233325D01* +X550452Y233237D01* +X550488Y233148D01* +X550521Y233057D01* +X550549Y232964D01* +X550574Y232871D01* +X550596Y232777D01* +X550613Y232682D01* +X550627Y232586D01* +X550636Y232490D01* +X550642Y232394D01* +X550644Y232297D01* +X550642Y232200D01* +X550636Y232104D01* +X550627Y232008D01* +X550613Y231912D01* +X550596Y231817D01* +X550574Y231723D01* +X550549Y231630D01* +X550521Y231537D01* +X550488Y231446D01* +X550452Y231357D01* +X550412Y231269D01* +X550369Y231182D01* +X550323Y231098D01* +X550273Y231015D01* +X550219Y230934D01* +X550163Y230856D01* +X550103Y230780D01* +X550041Y230706D01* +X549975Y230635D01* +X549907Y230567D01* +X549836Y230501D01* +X549762Y230439D01* +X549686Y230379D01* +X549608Y230323D01* +X549527Y230269D01* +X549445Y230219D01* +X549360Y230173D01* +X549273Y230130D01* +X549185Y230090D01* +X549096Y230054D01* +X549005Y230021D01* +X548912Y229993D01* +X548819Y229968D01* +X548725Y229946D01* +X548630Y229929D01* +X548534Y229915D01* +X548438Y229906D01* +X548342Y229900D01* +X548245Y229898D01* +X545846Y229898D01* +X548725Y229898D02* +X550644Y226060D01* +X554905Y226060D02* +X557304Y226060D01* +X557401Y226062D01* +X557497Y226068D01* +X557593Y226077D01* +X557689Y226091D01* +X557784Y226108D01* +X557878Y226130D01* +X557971Y226155D01* +X558064Y226183D01* +X558155Y226216D01* +X558244Y226252D01* +X558332Y226292D01* +X558419Y226335D01* +X558504Y226381D01* +X558586Y226431D01* +X558667Y226485D01* +X558745Y226541D01* +X558821Y226601D01* +X558895Y226663D01* +X558966Y226729D01* +X559034Y226797D01* +X559100Y226868D01* +X559162Y226942D01* +X559222Y227018D01* +X559278Y227096D01* +X559332Y227177D01* +X559382Y227260D01* +X559428Y227344D01* +X559471Y227431D01* +X559511Y227519D01* +X559547Y227608D01* +X559580Y227699D01* +X559608Y227792D01* +X559633Y227885D01* +X559655Y227979D01* +X559672Y228074D01* +X559686Y228170D01* +X559695Y228266D01* +X559701Y228362D01* +X559703Y228459D01* +X559701Y228556D01* +X559695Y228652D01* +X559686Y228748D01* +X559672Y228844D01* +X559655Y228939D01* +X559633Y229033D01* +X559608Y229126D01* +X559580Y229219D01* +X559547Y229310D01* +X559511Y229399D01* +X559471Y229487D01* +X559428Y229574D01* +X559382Y229658D01* +X559332Y229741D01* +X559278Y229822D01* +X559222Y229900D01* +X559162Y229976D01* +X559100Y230050D01* +X559034Y230121D01* +X558966Y230189D01* +X558895Y230255D01* +X558821Y230317D01* +X558745Y230377D01* +X558667Y230433D01* +X558586Y230487D01* +X558504Y230537D01* +X558419Y230583D01* +X558332Y230626D01* +X558244Y230666D01* +X558155Y230702D01* +X558064Y230735D01* +X557971Y230763D01* +X557878Y230788D01* +X557784Y230810D01* +X557689Y230827D01* +X557593Y230841D01* +X557497Y230850D01* +X557401Y230856D01* +X557304Y230858D01* +X557784Y234696D02* +X554905Y234696D01* +X557784Y234696D02* +X557870Y234694D01* +X557956Y234688D01* +X558042Y234679D01* +X558127Y234665D01* +X558211Y234648D01* +X558295Y234627D01* +X558377Y234602D01* +X558458Y234574D01* +X558538Y234542D01* +X558617Y234506D01* +X558693Y234467D01* +X558768Y234424D01* +X558841Y234379D01* +X558912Y234330D01* +X558980Y234277D01* +X559047Y234222D01* +X559110Y234164D01* +X559171Y234103D01* +X559229Y234040D01* +X559284Y233973D01* +X559337Y233905D01* +X559386Y233834D01* +X559431Y233761D01* +X559474Y233686D01* +X559513Y233610D01* +X559549Y233531D01* +X559581Y233451D01* +X559609Y233370D01* +X559634Y233288D01* +X559655Y233204D01* +X559672Y233120D01* +X559686Y233035D01* +X559695Y232949D01* +X559701Y232863D01* +X559703Y232777D01* +X559701Y232691D01* +X559695Y232605D01* +X559686Y232519D01* +X559672Y232434D01* +X559655Y232350D01* +X559634Y232266D01* +X559609Y232184D01* +X559581Y232103D01* +X559549Y232023D01* +X559513Y231944D01* +X559474Y231868D01* +X559431Y231793D01* +X559386Y231720D01* +X559337Y231649D01* +X559284Y231581D01* +X559229Y231514D01* +X559171Y231451D01* +X559110Y231390D01* +X559047Y231332D01* +X558980Y231277D01* +X558912Y231224D01* +X558841Y231175D01* +X558768Y231130D01* +X558693Y231087D01* +X558617Y231048D01* +X558538Y231012D01* +X558458Y230980D01* +X558377Y230952D01* +X558295Y230927D01* +X558211Y230906D01* +X558127Y230889D01* +X558042Y230875D01* +X557956Y230866D01* +X557870Y230860D01* +X557784Y230858D01* +X555865Y230858D01* +X564049Y226060D02* +X566448Y226060D01* +X566545Y226062D01* +X566641Y226068D01* +X566737Y226077D01* +X566833Y226091D01* +X566928Y226108D01* +X567022Y226130D01* +X567115Y226155D01* +X567208Y226183D01* +X567299Y226216D01* +X567388Y226252D01* +X567476Y226292D01* +X567563Y226335D01* +X567648Y226381D01* +X567730Y226431D01* +X567811Y226485D01* +X567889Y226541D01* +X567965Y226601D01* +X568039Y226663D01* +X568110Y226729D01* +X568178Y226797D01* +X568244Y226868D01* +X568306Y226942D01* +X568366Y227018D01* +X568422Y227096D01* +X568476Y227177D01* +X568526Y227260D01* +X568572Y227344D01* +X568615Y227431D01* +X568655Y227519D01* +X568691Y227608D01* +X568724Y227699D01* +X568752Y227792D01* +X568777Y227885D01* +X568799Y227979D01* +X568816Y228074D01* +X568830Y228170D01* +X568839Y228266D01* +X568845Y228362D01* +X568847Y228459D01* +X568845Y228556D01* +X568839Y228652D01* +X568830Y228748D01* +X568816Y228844D01* +X568799Y228939D01* +X568777Y229033D01* +X568752Y229126D01* +X568724Y229219D01* +X568691Y229310D01* +X568655Y229399D01* +X568615Y229487D01* +X568572Y229574D01* +X568526Y229658D01* +X568476Y229741D01* +X568422Y229822D01* +X568366Y229900D01* +X568306Y229976D01* +X568244Y230050D01* +X568178Y230121D01* +X568110Y230189D01* +X568039Y230255D01* +X567965Y230317D01* +X567889Y230377D01* +X567811Y230433D01* +X567730Y230487D01* +X567648Y230537D01* +X567563Y230583D01* +X567476Y230626D01* +X567388Y230666D01* +X567299Y230702D01* +X567208Y230735D01* +X567115Y230763D01* +X567022Y230788D01* +X566928Y230810D01* +X566833Y230827D01* +X566737Y230841D01* +X566641Y230850D01* +X566545Y230856D01* +X566448Y230858D01* +X566928Y234696D02* +X564049Y234696D01* +X566928Y234696D02* +X567014Y234694D01* +X567100Y234688D01* +X567186Y234679D01* +X567271Y234665D01* +X567355Y234648D01* +X567439Y234627D01* +X567521Y234602D01* +X567602Y234574D01* +X567682Y234542D01* +X567761Y234506D01* +X567837Y234467D01* +X567912Y234424D01* +X567985Y234379D01* +X568056Y234330D01* +X568124Y234277D01* +X568191Y234222D01* +X568254Y234164D01* +X568315Y234103D01* +X568373Y234040D01* +X568428Y233973D01* +X568481Y233905D01* +X568530Y233834D01* +X568575Y233761D01* +X568618Y233686D01* +X568657Y233610D01* +X568693Y233531D01* +X568725Y233451D01* +X568753Y233370D01* +X568778Y233288D01* +X568799Y233204D01* +X568816Y233120D01* +X568830Y233035D01* +X568839Y232949D01* +X568845Y232863D01* +X568847Y232777D01* +X568845Y232691D01* +X568839Y232605D01* +X568830Y232519D01* +X568816Y232434D01* +X568799Y232350D01* +X568778Y232266D01* +X568753Y232184D01* +X568725Y232103D01* +X568693Y232023D01* +X568657Y231944D01* +X568618Y231868D01* +X568575Y231793D01* +X568530Y231720D01* +X568481Y231649D01* +X568428Y231581D01* +X568373Y231514D01* +X568315Y231451D01* +X568254Y231390D01* +X568191Y231332D01* +X568124Y231277D01* +X568056Y231224D01* +X567985Y231175D01* +X567912Y231130D01* +X567837Y231087D01* +X567761Y231048D01* +X567682Y231012D01* +X567602Y230980D01* +X567521Y230952D01* +X567439Y230927D01* +X567355Y230906D01* +X567271Y230889D01* +X567186Y230875D01* +X567100Y230866D01* +X567014Y230860D01* +X566928Y230858D01* +X565009Y230858D01* +D13* +X459740Y172720D03* +D14* +X454406Y159258D02* +X445770Y159258D01* +X445770Y161657D01* +X445772Y161754D01* +X445778Y161850D01* +X445787Y161946D01* +X445801Y162042D01* +X445818Y162137D01* +X445840Y162231D01* +X445865Y162324D01* +X445893Y162417D01* +X445926Y162508D01* +X445962Y162597D01* +X446002Y162685D01* +X446045Y162772D01* +X446091Y162857D01* +X446141Y162939D01* +X446195Y163020D01* +X446251Y163098D01* +X446311Y163174D01* +X446373Y163248D01* +X446439Y163319D01* +X446507Y163387D01* +X446578Y163453D01* +X446652Y163515D01* +X446728Y163575D01* +X446806Y163631D01* +X446887Y163685D01* +X446970Y163735D01* +X447054Y163781D01* +X447141Y163824D01* +X447229Y163864D01* +X447318Y163900D01* +X447409Y163933D01* +X447502Y163961D01* +X447595Y163986D01* +X447689Y164008D01* +X447784Y164025D01* +X447880Y164039D01* +X447976Y164048D01* +X448072Y164054D01* +X448169Y164056D01* +X448266Y164054D01* +X448362Y164048D01* +X448458Y164039D01* +X448554Y164025D01* +X448649Y164008D01* +X448743Y163986D01* +X448836Y163961D01* +X448929Y163933D01* +X449020Y163900D01* +X449109Y163864D01* +X449197Y163824D01* +X449284Y163781D01* +X449369Y163735D01* +X449451Y163685D01* +X449532Y163631D01* +X449610Y163575D01* +X449686Y163515D01* +X449760Y163453D01* +X449831Y163387D01* +X449899Y163319D01* +X449965Y163248D01* +X450027Y163174D01* +X450087Y163098D01* +X450143Y163020D01* +X450197Y162939D01* +X450247Y162857D01* +X450293Y162772D01* +X450336Y162685D01* +X450376Y162597D01* +X450412Y162508D01* +X450445Y162417D01* +X450473Y162324D01* +X450498Y162231D01* +X450520Y162137D01* +X450537Y162042D01* +X450551Y161946D01* +X450560Y161850D01* +X450566Y161754D01* +X450568Y161657D01* +X450568Y159258D01* +X450568Y162137D02* +X454406Y164056D01* +X445770Y170956D02* +X445772Y171048D01* +X445778Y171139D01* +X445787Y171230D01* +X445801Y171321D01* +X445818Y171411D01* +X445840Y171500D01* +X445865Y171588D01* +X445893Y171675D01* +X445926Y171761D01* +X445962Y171845D01* +X446001Y171928D01* +X446044Y172009D01* +X446091Y172088D01* +X446140Y172165D01* +X446193Y172240D01* +X446249Y172312D01* +X446308Y172382D01* +X446370Y172450D01* +X446435Y172515D01* +X446503Y172577D01* +X446573Y172636D01* +X446645Y172692D01* +X446720Y172745D01* +X446797Y172794D01* +X446876Y172841D01* +X446957Y172884D01* +X447040Y172923D01* +X447124Y172959D01* +X447210Y172992D01* +X447297Y173020D01* +X447385Y173045D01* +X447474Y173067D01* +X447564Y173084D01* +X447655Y173098D01* +X447746Y173107D01* +X447837Y173113D01* +X447929Y173115D01* +X445770Y170956D02* +X445772Y170853D01* +X445778Y170751D01* +X445787Y170649D01* +X445800Y170547D01* +X445817Y170446D01* +X445838Y170345D01* +X445862Y170246D01* +X445891Y170147D01* +X445922Y170050D01* +X445958Y169953D01* +X445996Y169858D01* +X446039Y169765D01* +X446085Y169673D01* +X446134Y169583D01* +X446186Y169495D01* +X446242Y169408D01* +X446301Y169324D01* +X446362Y169243D01* +X446427Y169163D01* +X446495Y169086D01* +X446566Y169011D01* +X446639Y168940D01* +X446715Y168871D01* +X446793Y168804D01* +X446874Y168741D01* +X446957Y168681D01* +X447042Y168624D01* +X447129Y168570D01* +X447219Y168519D01* +X447310Y168472D01* +X447402Y168428D01* +X447497Y168387D01* +X447592Y168350D01* +X447689Y168317D01* +X449608Y172395D02* +X449542Y172462D01* +X449473Y172526D01* +X449402Y172587D01* +X449328Y172645D01* +X449252Y172700D01* +X449174Y172752D01* +X449094Y172801D01* +X449012Y172847D01* +X448928Y172889D01* +X448842Y172928D01* +X448755Y172963D01* +X448667Y172994D01* +X448577Y173022D01* +X448487Y173047D01* +X448395Y173068D01* +X448303Y173085D01* +X448210Y173098D01* +X448117Y173107D01* +X448023Y173113D01* +X447929Y173115D01* +X449608Y172395D02* +X454406Y168317D01* +X454406Y173115D01* +X452007Y177461D02* +X451910Y177463D01* +X451814Y177469D01* +X451718Y177478D01* +X451622Y177492D01* +X451527Y177509D01* +X451433Y177531D01* +X451340Y177556D01* +X451247Y177584D01* +X451156Y177617D01* +X451067Y177653D01* +X450979Y177693D01* +X450892Y177736D01* +X450808Y177782D01* +X450725Y177832D01* +X450644Y177886D01* +X450566Y177942D01* +X450490Y178002D01* +X450416Y178064D01* +X450345Y178130D01* +X450277Y178198D01* +X450211Y178269D01* +X450149Y178343D01* +X450089Y178419D01* +X450033Y178497D01* +X449979Y178578D01* +X449929Y178661D01* +X449883Y178745D01* +X449840Y178832D01* +X449800Y178920D01* +X449764Y179009D01* +X449731Y179100D01* +X449703Y179193D01* +X449678Y179286D01* +X449656Y179380D01* +X449639Y179475D01* +X449625Y179571D01* +X449616Y179667D01* +X449610Y179763D01* +X449608Y179860D01* +X449610Y179957D01* +X449616Y180053D01* +X449625Y180149D01* +X449639Y180245D01* +X449656Y180340D01* +X449678Y180434D01* +X449703Y180527D01* +X449731Y180620D01* +X449764Y180711D01* +X449800Y180800D01* +X449840Y180888D01* +X449883Y180975D01* +X449929Y181060D01* +X449979Y181142D01* +X450033Y181223D01* +X450089Y181301D01* +X450149Y181377D01* +X450211Y181451D01* +X450277Y181522D01* +X450345Y181590D01* +X450416Y181656D01* +X450490Y181718D01* +X450566Y181778D01* +X450644Y181834D01* +X450725Y181888D01* +X450808Y181938D01* +X450892Y181984D01* +X450979Y182027D01* +X451067Y182067D01* +X451156Y182103D01* +X451247Y182136D01* +X451340Y182164D01* +X451433Y182189D01* +X451527Y182211D01* +X451622Y182228D01* +X451718Y182242D01* +X451814Y182251D01* +X451910Y182257D01* +X452007Y182259D01* +X452104Y182257D01* +X452200Y182251D01* +X452296Y182242D01* +X452392Y182228D01* +X452487Y182211D01* +X452581Y182189D01* +X452674Y182164D01* +X452767Y182136D01* +X452858Y182103D01* +X452947Y182067D01* +X453035Y182027D01* +X453122Y181984D01* +X453207Y181938D01* +X453289Y181888D01* +X453370Y181834D01* +X453448Y181778D01* +X453524Y181718D01* +X453598Y181656D01* +X453669Y181590D01* +X453737Y181522D01* +X453803Y181451D01* +X453865Y181377D01* +X453925Y181301D01* +X453981Y181223D01* +X454035Y181142D01* +X454085Y181059D01* +X454131Y180975D01* +X454174Y180888D01* +X454214Y180800D01* +X454250Y180711D01* +X454283Y180620D01* +X454311Y180527D01* +X454336Y180434D01* +X454358Y180340D01* +X454375Y180245D01* +X454389Y180149D01* +X454398Y180053D01* +X454404Y179957D01* +X454406Y179860D01* +X454404Y179763D01* +X454398Y179667D01* +X454389Y179571D01* +X454375Y179475D01* +X454358Y179380D01* +X454336Y179286D01* +X454311Y179193D01* +X454283Y179100D01* +X454250Y179009D01* +X454214Y178920D01* +X454174Y178832D01* +X454131Y178745D01* +X454085Y178661D01* +X454035Y178578D01* +X453981Y178497D01* +X453925Y178419D01* +X453865Y178343D01* +X453803Y178269D01* +X453737Y178198D01* +X453669Y178130D01* +X453598Y178064D01* +X453524Y178002D01* +X453448Y177942D01* +X453370Y177886D01* +X453289Y177832D01* +X453207Y177782D01* +X453122Y177736D01* +X453035Y177693D01* +X452947Y177653D01* +X452858Y177617D01* +X452767Y177584D01* +X452674Y177556D01* +X452581Y177531D01* +X452487Y177509D01* +X452392Y177492D01* +X452296Y177478D01* +X452200Y177469D01* +X452104Y177463D01* +X452007Y177461D01* +X447689Y177941D02* +X447603Y177943D01* +X447517Y177949D01* +X447431Y177958D01* +X447346Y177972D01* +X447262Y177989D01* +X447178Y178010D01* +X447096Y178035D01* +X447015Y178063D01* +X446935Y178095D01* +X446856Y178131D01* +X446780Y178170D01* +X446705Y178213D01* +X446632Y178258D01* +X446561Y178307D01* +X446493Y178360D01* +X446426Y178415D01* +X446363Y178473D01* +X446302Y178534D01* +X446244Y178597D01* +X446189Y178664D01* +X446136Y178732D01* +X446087Y178803D01* +X446042Y178876D01* +X445999Y178951D01* +X445960Y179027D01* +X445924Y179106D01* +X445892Y179186D01* +X445864Y179267D01* +X445839Y179349D01* +X445818Y179433D01* +X445801Y179517D01* +X445787Y179602D01* +X445778Y179688D01* +X445772Y179774D01* +X445770Y179860D01* +X445772Y179946D01* +X445778Y180032D01* +X445787Y180118D01* +X445801Y180203D01* +X445818Y180287D01* +X445839Y180371D01* +X445864Y180453D01* +X445892Y180534D01* +X445924Y180614D01* +X445960Y180693D01* +X445999Y180769D01* +X446042Y180844D01* +X446087Y180917D01* +X446136Y180988D01* +X446189Y181056D01* +X446244Y181123D01* +X446302Y181186D01* +X446363Y181247D01* +X446426Y181305D01* +X446493Y181360D01* +X446561Y181413D01* +X446632Y181462D01* +X446705Y181507D01* +X446780Y181550D01* +X446856Y181589D01* +X446935Y181625D01* +X447015Y181657D01* +X447096Y181685D01* +X447178Y181710D01* +X447262Y181731D01* +X447346Y181748D01* +X447431Y181762D01* +X447517Y181771D01* +X447603Y181777D01* +X447689Y181779D01* +X447775Y181777D01* +X447861Y181771D01* +X447947Y181762D01* +X448032Y181748D01* +X448116Y181731D01* +X448200Y181710D01* +X448282Y181685D01* +X448363Y181657D01* +X448443Y181625D01* +X448522Y181589D01* +X448598Y181550D01* +X448673Y181507D01* +X448746Y181462D01* +X448817Y181413D01* +X448885Y181360D01* +X448952Y181305D01* +X449015Y181247D01* +X449076Y181186D01* +X449134Y181123D01* +X449189Y181056D01* +X449242Y180988D01* +X449291Y180917D01* +X449336Y180844D01* +X449379Y180769D01* +X449418Y180693D01* +X449454Y180614D01* +X449486Y180534D01* +X449514Y180453D01* +X449539Y180371D01* +X449560Y180287D01* +X449577Y180203D01* +X449591Y180118D01* +X449600Y180032D01* +X449606Y179946D01* +X449608Y179860D01* +X449606Y179774D01* +X449600Y179688D01* +X449591Y179602D01* +X449577Y179517D01* +X449560Y179433D01* +X449539Y179349D01* +X449514Y179267D01* +X449486Y179186D01* +X449454Y179106D01* +X449418Y179027D01* +X449379Y178951D01* +X449336Y178876D01* +X449291Y178803D01* +X449242Y178732D01* +X449189Y178664D01* +X449134Y178597D01* +X449076Y178534D01* +X449015Y178473D01* +X448952Y178415D01* +X448885Y178360D01* +X448817Y178307D01* +X448746Y178258D01* +X448673Y178213D01* +X448598Y178170D01* +X448522Y178131D01* +X448443Y178095D01* +X448363Y178063D01* +X448282Y178035D01* +X448200Y178010D01* +X448116Y177989D01* +X448032Y177972D01* +X447947Y177958D01* +X447861Y177949D01* +X447775Y177943D01* +X447689Y177941D01* +D17* +X434340Y139700D03* +D14* +X396607Y135382D02* +X396607Y144018D01* +X399006Y144018D01* +X399103Y144016D01* +X399199Y144010D01* +X399295Y144001D01* +X399391Y143987D01* +X399486Y143970D01* +X399580Y143948D01* +X399673Y143923D01* +X399766Y143895D01* +X399857Y143862D01* +X399946Y143826D01* +X400034Y143786D01* +X400121Y143743D01* +X400206Y143697D01* +X400288Y143647D01* +X400369Y143593D01* +X400447Y143537D01* +X400523Y143477D01* +X400597Y143415D01* +X400668Y143349D01* +X400736Y143281D01* +X400802Y143210D01* +X400864Y143136D01* +X400924Y143060D01* +X400980Y142982D01* +X401034Y142901D01* +X401084Y142818D01* +X401130Y142734D01* +X401173Y142647D01* +X401213Y142559D01* +X401249Y142470D01* +X401282Y142379D01* +X401310Y142286D01* +X401335Y142193D01* +X401357Y142099D01* +X401374Y142004D01* +X401388Y141908D01* +X401397Y141812D01* +X401403Y141716D01* +X401405Y141619D01* +X401403Y141522D01* +X401397Y141426D01* +X401388Y141330D01* +X401374Y141234D01* +X401357Y141139D01* +X401335Y141045D01* +X401310Y140952D01* +X401282Y140859D01* +X401249Y140768D01* +X401213Y140679D01* +X401173Y140591D01* +X401130Y140504D01* +X401084Y140420D01* +X401034Y140337D01* +X400980Y140256D01* +X400924Y140178D01* +X400864Y140102D01* +X400802Y140028D01* +X400736Y139957D01* +X400668Y139889D01* +X400597Y139823D01* +X400523Y139761D01* +X400447Y139701D01* +X400369Y139645D01* +X400288Y139591D01* +X400206Y139541D01* +X400121Y139495D01* +X400034Y139452D01* +X399946Y139412D01* +X399857Y139376D01* +X399766Y139343D01* +X399673Y139315D01* +X399580Y139290D01* +X399486Y139268D01* +X399391Y139251D01* +X399295Y139237D01* +X399199Y139228D01* +X399103Y139222D01* +X399006Y139220D01* +X396607Y139220D01* +X399486Y139220D02* +X401405Y135382D01* +X405666Y137301D02* +X407585Y144018D01* +X405666Y137301D02* +X410464Y137301D01* +X409025Y139220D02* +X409025Y135382D01* +X414810Y139700D02* +X414812Y139870D01* +X414818Y140040D01* +X414828Y140209D01* +X414842Y140379D01* +X414861Y140548D01* +X414883Y140716D01* +X414909Y140884D01* +X414939Y141051D01* +X414974Y141217D01* +X415012Y141383D01* +X415054Y141548D01* +X415100Y141711D01* +X415150Y141874D01* +X415204Y142035D01* +X415261Y142195D01* +X415323Y142353D01* +X415388Y142510D01* +X415457Y142665D01* +X415530Y142819D01* +X415558Y142895D01* +X415590Y142970D01* +X415625Y143044D01* +X415663Y143116D01* +X415705Y143186D01* +X415750Y143254D01* +X415798Y143320D01* +X415849Y143384D01* +X415903Y143445D01* +X415959Y143504D01* +X416019Y143560D01* +X416080Y143613D01* +X416144Y143663D01* +X416211Y143711D01* +X416279Y143755D01* +X416350Y143796D01* +X416422Y143834D01* +X416496Y143868D01* +X416571Y143899D01* +X416648Y143927D01* +X416726Y143951D01* +X416805Y143971D01* +X416885Y143988D01* +X416965Y144001D01* +X417046Y144011D01* +X417127Y144016D01* +X417209Y144018D01* +X417291Y144016D01* +X417372Y144011D01* +X417453Y144001D01* +X417533Y143988D01* +X417613Y143971D01* +X417692Y143951D01* +X417770Y143927D01* +X417847Y143899D01* +X417922Y143868D01* +X417996Y143834D01* +X418068Y143796D01* +X418139Y143755D01* +X418207Y143711D01* +X418274Y143663D01* +X418338Y143613D01* +X418399Y143560D01* +X418459Y143504D01* +X418515Y143445D01* +X418569Y143384D01* +X418620Y143320D01* +X418668Y143254D01* +X418713Y143186D01* +X418755Y143116D01* +X418793Y143044D01* +X418828Y142970D01* +X418860Y142895D01* +X418888Y142819D01* +X418961Y142665D01* +X419030Y142510D01* +X419095Y142353D01* +X419157Y142195D01* +X419214Y142035D01* +X419268Y141874D01* +X419318Y141711D01* +X419364Y141548D01* +X419406Y141383D01* +X419444Y141217D01* +X419479Y141051D01* +X419509Y140884D01* +X419535Y140716D01* +X419557Y140548D01* +X419576Y140379D01* +X419590Y140209D01* +X419600Y140040D01* +X419606Y139870D01* +X419608Y139700D01* +X414810Y139700D02* +X414812Y139530D01* +X414818Y139360D01* +X414828Y139191D01* +X414842Y139021D01* +X414861Y138852D01* +X414883Y138684D01* +X414909Y138516D01* +X414939Y138349D01* +X414974Y138183D01* +X415012Y138017D01* +X415054Y137852D01* +X415100Y137689D01* +X415150Y137527D01* +X415204Y137365D01* +X415261Y137206D01* +X415323Y137047D01* +X415388Y136890D01* +X415457Y136735D01* +X415530Y136581D01* +X415558Y136505D01* +X415590Y136430D01* +X415625Y136356D01* +X415663Y136284D01* +X415705Y136214D01* +X415750Y136146D01* +X415798Y136080D01* +X415849Y136016D01* +X415903Y135955D01* +X415959Y135896D01* +X416019Y135840D01* +X416080Y135787D01* +X416144Y135737D01* +X416211Y135689D01* +X416279Y135645D01* +X416350Y135604D01* +X416422Y135566D01* +X416496Y135532D01* +X416571Y135501D01* +X416648Y135473D01* +X416726Y135449D01* +X416805Y135429D01* +X416885Y135412D01* +X416965Y135399D01* +X417046Y135389D01* +X417127Y135384D01* +X417209Y135382D01* +X418888Y136581D02* +X418961Y136735D01* +X419030Y136890D01* +X419095Y137047D01* +X419157Y137206D01* +X419214Y137365D01* +X419268Y137527D01* +X419318Y137689D01* +X419364Y137852D01* +X419406Y138017D01* +X419444Y138183D01* +X419479Y138349D01* +X419509Y138516D01* +X419535Y138684D01* +X419557Y138852D01* +X419576Y139021D01* +X419590Y139191D01* +X419600Y139360D01* +X419606Y139530D01* +X419608Y139700D01* +X418888Y136581D02* +X418860Y136505D01* +X418828Y136430D01* +X418793Y136356D01* +X418755Y136284D01* +X418713Y136214D01* +X418668Y136146D01* +X418620Y136080D01* +X418569Y136016D01* +X418515Y135955D01* +X418459Y135896D01* +X418399Y135840D01* +X418338Y135787D01* +X418274Y135737D01* +X418207Y135689D01* +X418139Y135645D01* +X418068Y135604D01* +X417996Y135566D01* +X417922Y135532D01* +X417847Y135501D01* +X417770Y135473D01* +X417692Y135449D01* +X417613Y135429D01* +X417533Y135412D01* +X417453Y135399D01* +X417372Y135389D01* +X417291Y135384D01* +X417209Y135382D01* +X415290Y137301D02* +X419128Y142099D01* +D13* +X441960Y302260D03* +D14* +X446024Y276211D02* +X437388Y276211D01* +X437388Y278610D01* +X437390Y278707D01* +X437396Y278803D01* +X437405Y278899D01* +X437419Y278995D01* +X437436Y279090D01* +X437458Y279184D01* +X437483Y279277D01* +X437511Y279370D01* +X437544Y279461D01* +X437580Y279550D01* +X437620Y279638D01* +X437663Y279725D01* +X437709Y279810D01* +X437759Y279892D01* +X437813Y279973D01* +X437869Y280051D01* +X437929Y280127D01* +X437991Y280201D01* +X438057Y280272D01* +X438125Y280340D01* +X438196Y280406D01* +X438270Y280468D01* +X438346Y280528D01* +X438424Y280584D01* +X438505Y280638D01* +X438588Y280688D01* +X438672Y280734D01* +X438759Y280777D01* +X438847Y280817D01* +X438936Y280853D01* +X439027Y280886D01* +X439120Y280914D01* +X439213Y280939D01* +X439307Y280961D01* +X439402Y280978D01* +X439498Y280992D01* +X439594Y281001D01* +X439690Y281007D01* +X439787Y281009D01* +X439884Y281007D01* +X439980Y281001D01* +X440076Y280992D01* +X440172Y280978D01* +X440267Y280961D01* +X440361Y280939D01* +X440454Y280914D01* +X440547Y280886D01* +X440638Y280853D01* +X440727Y280817D01* +X440815Y280777D01* +X440902Y280734D01* +X440987Y280688D01* +X441069Y280638D01* +X441150Y280584D01* +X441228Y280528D01* +X441304Y280468D01* +X441378Y280406D01* +X441449Y280340D01* +X441517Y280272D01* +X441583Y280201D01* +X441645Y280127D01* +X441705Y280051D01* +X441761Y279973D01* +X441815Y279892D01* +X441865Y279810D01* +X441911Y279725D01* +X441954Y279638D01* +X441994Y279550D01* +X442030Y279461D01* +X442063Y279370D01* +X442091Y279277D01* +X442116Y279184D01* +X442138Y279090D01* +X442155Y278995D01* +X442169Y278899D01* +X442178Y278803D01* +X442184Y278707D01* +X442186Y278610D01* +X442186Y276211D01* +X442186Y279090D02* +X446024Y281009D01* +X443625Y285270D02* +X443528Y285272D01* +X443432Y285278D01* +X443336Y285287D01* +X443240Y285301D01* +X443145Y285318D01* +X443051Y285340D01* +X442958Y285365D01* +X442865Y285393D01* +X442774Y285426D01* +X442685Y285462D01* +X442597Y285502D01* +X442510Y285545D01* +X442426Y285591D01* +X442343Y285641D01* +X442262Y285695D01* +X442184Y285751D01* +X442108Y285811D01* +X442034Y285873D01* +X441963Y285939D01* +X441895Y286007D01* +X441829Y286078D01* +X441767Y286152D01* +X441707Y286228D01* +X441651Y286306D01* +X441597Y286387D01* +X441547Y286470D01* +X441501Y286554D01* +X441458Y286641D01* +X441418Y286729D01* +X441382Y286818D01* +X441349Y286909D01* +X441321Y287002D01* +X441296Y287095D01* +X441274Y287189D01* +X441257Y287284D01* +X441243Y287380D01* +X441234Y287476D01* +X441228Y287572D01* +X441226Y287669D01* +X441228Y287766D01* +X441234Y287862D01* +X441243Y287958D01* +X441257Y288054D01* +X441274Y288149D01* +X441296Y288243D01* +X441321Y288336D01* +X441349Y288429D01* +X441382Y288520D01* +X441418Y288609D01* +X441458Y288697D01* +X441501Y288784D01* +X441547Y288869D01* +X441597Y288951D01* +X441651Y289032D01* +X441707Y289110D01* +X441767Y289186D01* +X441829Y289260D01* +X441895Y289331D01* +X441963Y289399D01* +X442034Y289465D01* +X442108Y289527D01* +X442184Y289587D01* +X442262Y289643D01* +X442343Y289697D01* +X442426Y289747D01* +X442510Y289793D01* +X442597Y289836D01* +X442685Y289876D01* +X442774Y289912D01* +X442865Y289945D01* +X442958Y289973D01* +X443051Y289998D01* +X443145Y290020D01* +X443240Y290037D01* +X443336Y290051D01* +X443432Y290060D01* +X443528Y290066D01* +X443625Y290068D01* +X443722Y290066D01* +X443818Y290060D01* +X443914Y290051D01* +X444010Y290037D01* +X444105Y290020D01* +X444199Y289998D01* +X444292Y289973D01* +X444385Y289945D01* +X444476Y289912D01* +X444565Y289876D01* +X444653Y289836D01* +X444740Y289793D01* +X444825Y289747D01* +X444907Y289697D01* +X444988Y289643D01* +X445066Y289587D01* +X445142Y289527D01* +X445216Y289465D01* +X445287Y289399D01* +X445355Y289331D01* +X445421Y289260D01* +X445483Y289186D01* +X445543Y289110D01* +X445599Y289032D01* +X445653Y288951D01* +X445703Y288869D01* +X445749Y288784D01* +X445792Y288697D01* +X445832Y288609D01* +X445868Y288520D01* +X445901Y288429D01* +X445929Y288336D01* +X445954Y288243D01* +X445976Y288149D01* +X445993Y288054D01* +X446007Y287958D01* +X446016Y287862D01* +X446022Y287766D01* +X446024Y287669D01* +X446022Y287572D01* +X446016Y287476D01* +X446007Y287380D01* +X445993Y287284D01* +X445976Y287189D01* +X445954Y287095D01* +X445929Y287002D01* +X445901Y286909D01* +X445868Y286818D01* +X445832Y286729D01* +X445792Y286641D01* +X445749Y286554D01* +X445703Y286470D01* +X445653Y286387D01* +X445599Y286306D01* +X445543Y286228D01* +X445483Y286152D01* +X445421Y286078D01* +X445355Y286007D01* +X445287Y285939D01* +X445216Y285873D01* +X445142Y285811D01* +X445066Y285751D01* +X444988Y285695D01* +X444907Y285641D01* +X444825Y285591D01* +X444740Y285545D01* +X444653Y285502D01* +X444565Y285462D01* +X444476Y285426D01* +X444385Y285393D01* +X444292Y285365D01* +X444199Y285340D01* +X444105Y285318D01* +X444010Y285301D01* +X443914Y285287D01* +X443818Y285278D01* +X443722Y285272D01* +X443625Y285270D01* +X439307Y285750D02* +X439221Y285752D01* +X439135Y285758D01* +X439049Y285767D01* +X438964Y285781D01* +X438880Y285798D01* +X438796Y285819D01* +X438714Y285844D01* +X438633Y285872D01* +X438553Y285904D01* +X438474Y285940D01* +X438398Y285979D01* +X438323Y286022D01* +X438250Y286067D01* +X438179Y286116D01* +X438111Y286169D01* +X438044Y286224D01* +X437981Y286282D01* +X437920Y286343D01* +X437862Y286406D01* +X437807Y286473D01* +X437754Y286541D01* +X437705Y286612D01* +X437660Y286685D01* +X437617Y286760D01* +X437578Y286836D01* +X437542Y286915D01* +X437510Y286995D01* +X437482Y287076D01* +X437457Y287158D01* +X437436Y287242D01* +X437419Y287326D01* +X437405Y287411D01* +X437396Y287497D01* +X437390Y287583D01* +X437388Y287669D01* +X437390Y287755D01* +X437396Y287841D01* +X437405Y287927D01* +X437419Y288012D01* +X437436Y288096D01* +X437457Y288180D01* +X437482Y288262D01* +X437510Y288343D01* +X437542Y288423D01* +X437578Y288502D01* +X437617Y288578D01* +X437660Y288653D01* +X437705Y288726D01* +X437754Y288797D01* +X437807Y288865D01* +X437862Y288932D01* +X437920Y288995D01* +X437981Y289056D01* +X438044Y289114D01* +X438111Y289169D01* +X438179Y289222D01* +X438250Y289271D01* +X438323Y289316D01* +X438398Y289359D01* +X438474Y289398D01* +X438553Y289434D01* +X438633Y289466D01* +X438714Y289494D01* +X438796Y289519D01* +X438880Y289540D01* +X438964Y289557D01* +X439049Y289571D01* +X439135Y289580D01* +X439221Y289586D01* +X439307Y289588D01* +X439393Y289586D01* +X439479Y289580D01* +X439565Y289571D01* +X439650Y289557D01* +X439734Y289540D01* +X439818Y289519D01* +X439900Y289494D01* +X439981Y289466D01* +X440061Y289434D01* +X440140Y289398D01* +X440216Y289359D01* +X440291Y289316D01* +X440364Y289271D01* +X440435Y289222D01* +X440503Y289169D01* +X440570Y289114D01* +X440633Y289056D01* +X440694Y288995D01* +X440752Y288932D01* +X440807Y288865D01* +X440860Y288797D01* +X440909Y288726D01* +X440954Y288653D01* +X440997Y288578D01* +X441036Y288502D01* +X441072Y288423D01* +X441104Y288343D01* +X441132Y288262D01* +X441157Y288180D01* +X441178Y288096D01* +X441195Y288012D01* +X441209Y287927D01* +X441218Y287841D01* +X441224Y287755D01* +X441226Y287669D01* +X441224Y287583D01* +X441218Y287497D01* +X441209Y287411D01* +X441195Y287326D01* +X441178Y287242D01* +X441157Y287158D01* +X441132Y287076D01* +X441104Y286995D01* +X441072Y286915D01* +X441036Y286836D01* +X440997Y286760D01* +X440954Y286685D01* +X440909Y286612D01* +X440860Y286541D01* +X440807Y286473D01* +X440752Y286406D01* +X440694Y286343D01* +X440633Y286282D01* +X440570Y286224D01* +X440503Y286169D01* +X440435Y286116D01* +X440364Y286067D01* +X440291Y286022D01* +X440216Y285979D01* +X440140Y285940D01* +X440061Y285904D01* +X439981Y285872D01* +X439900Y285844D01* +X439818Y285819D01* +X439734Y285798D01* +X439650Y285781D01* +X439565Y285767D01* +X439479Y285758D01* +X439393Y285752D01* +X439307Y285750D01* +D17* +X434340Y127000D03* +D14* +X396607Y128778D02* +X396607Y120142D01* +X396607Y128778D02* +X399006Y128778D01* +X399103Y128776D01* +X399199Y128770D01* +X399295Y128761D01* +X399391Y128747D01* +X399486Y128730D01* +X399580Y128708D01* +X399673Y128683D01* +X399766Y128655D01* +X399857Y128622D01* +X399946Y128586D01* +X400034Y128546D01* +X400121Y128503D01* +X400206Y128457D01* +X400288Y128407D01* +X400369Y128353D01* +X400447Y128297D01* +X400523Y128237D01* +X400597Y128175D01* +X400668Y128109D01* +X400736Y128041D01* +X400802Y127970D01* +X400864Y127896D01* +X400924Y127820D01* +X400980Y127742D01* +X401034Y127661D01* +X401084Y127578D01* +X401130Y127494D01* +X401173Y127407D01* +X401213Y127319D01* +X401249Y127230D01* +X401282Y127139D01* +X401310Y127046D01* +X401335Y126953D01* +X401357Y126859D01* +X401374Y126764D01* +X401388Y126668D01* +X401397Y126572D01* +X401403Y126476D01* +X401405Y126379D01* +X401403Y126282D01* +X401397Y126186D01* +X401388Y126090D01* +X401374Y125994D01* +X401357Y125899D01* +X401335Y125805D01* +X401310Y125712D01* +X401282Y125619D01* +X401249Y125528D01* +X401213Y125439D01* +X401173Y125351D01* +X401130Y125264D01* +X401084Y125179D01* +X401034Y125097D01* +X400980Y125016D01* +X400924Y124938D01* +X400864Y124862D01* +X400802Y124788D01* +X400736Y124717D01* +X400668Y124649D01* +X400597Y124583D01* +X400523Y124521D01* +X400447Y124461D01* +X400369Y124405D01* +X400288Y124351D01* +X400206Y124301D01* +X400121Y124255D01* +X400034Y124212D01* +X399946Y124172D01* +X399857Y124136D01* +X399766Y124103D01* +X399673Y124075D01* +X399580Y124050D01* +X399486Y124028D01* +X399391Y124011D01* +X399295Y123997D01* +X399199Y123988D01* +X399103Y123982D01* +X399006Y123980D01* +X396607Y123980D01* +X399486Y123980D02* +X401405Y120142D01* +X405666Y122061D02* +X407585Y128778D01* +X405666Y122061D02* +X410464Y122061D01* +X409025Y123980D02* +X409025Y120142D01* +X414810Y126859D02* +X417209Y128778D01* +X417209Y120142D01* +X414810Y120142D02* +X419608Y120142D01* +D17* +X546100Y190500D03* +D14* +X582422Y225044D02* +X582422Y233680D01* +X584821Y233680D01* +X584918Y233678D01* +X585014Y233672D01* +X585110Y233663D01* +X585206Y233649D01* +X585301Y233632D01* +X585395Y233610D01* +X585488Y233585D01* +X585581Y233557D01* +X585672Y233524D01* +X585761Y233488D01* +X585849Y233448D01* +X585936Y233405D01* +X586021Y233359D01* +X586103Y233309D01* +X586184Y233255D01* +X586262Y233199D01* +X586338Y233139D01* +X586412Y233077D01* +X586483Y233011D01* +X586551Y232943D01* +X586617Y232872D01* +X586679Y232798D01* +X586739Y232722D01* +X586795Y232644D01* +X586849Y232563D01* +X586899Y232480D01* +X586945Y232396D01* +X586988Y232309D01* +X587028Y232221D01* +X587064Y232132D01* +X587097Y232041D01* +X587125Y231948D01* +X587150Y231855D01* +X587172Y231761D01* +X587189Y231666D01* +X587203Y231570D01* +X587212Y231474D01* +X587218Y231378D01* +X587220Y231281D01* +X587218Y231184D01* +X587212Y231088D01* +X587203Y230992D01* +X587189Y230896D01* +X587172Y230801D01* +X587150Y230707D01* +X587125Y230614D01* +X587097Y230521D01* +X587064Y230430D01* +X587028Y230341D01* +X586988Y230253D01* +X586945Y230166D01* +X586899Y230082D01* +X586849Y229999D01* +X586795Y229918D01* +X586739Y229840D01* +X586679Y229764D01* +X586617Y229690D01* +X586551Y229619D01* +X586483Y229551D01* +X586412Y229485D01* +X586338Y229423D01* +X586262Y229363D01* +X586184Y229307D01* +X586103Y229253D01* +X586021Y229203D01* +X585936Y229157D01* +X585849Y229114D01* +X585761Y229074D01* +X585672Y229038D01* +X585581Y229005D01* +X585488Y228977D01* +X585395Y228952D01* +X585301Y228930D01* +X585206Y228913D01* +X585110Y228899D01* +X585014Y228890D01* +X584918Y228884D01* +X584821Y228882D01* +X582422Y228882D01* +X585301Y228882D02* +X587220Y225044D01* +X591481Y225044D02* +X593880Y225044D01* +X593977Y225046D01* +X594073Y225052D01* +X594169Y225061D01* +X594265Y225075D01* +X594360Y225092D01* +X594454Y225114D01* +X594547Y225139D01* +X594640Y225167D01* +X594731Y225200D01* +X594820Y225236D01* +X594908Y225276D01* +X594995Y225319D01* +X595080Y225365D01* +X595162Y225415D01* +X595243Y225469D01* +X595321Y225525D01* +X595397Y225585D01* +X595471Y225647D01* +X595542Y225713D01* +X595610Y225781D01* +X595676Y225852D01* +X595738Y225926D01* +X595798Y226002D01* +X595854Y226080D01* +X595908Y226161D01* +X595958Y226244D01* +X596004Y226328D01* +X596047Y226415D01* +X596087Y226503D01* +X596123Y226592D01* +X596156Y226683D01* +X596184Y226776D01* +X596209Y226869D01* +X596231Y226963D01* +X596248Y227058D01* +X596262Y227154D01* +X596271Y227250D01* +X596277Y227346D01* +X596279Y227443D01* +X596277Y227540D01* +X596271Y227636D01* +X596262Y227732D01* +X596248Y227828D01* +X596231Y227923D01* +X596209Y228017D01* +X596184Y228110D01* +X596156Y228203D01* +X596123Y228294D01* +X596087Y228383D01* +X596047Y228471D01* +X596004Y228558D01* +X595958Y228642D01* +X595908Y228725D01* +X595854Y228806D01* +X595798Y228884D01* +X595738Y228960D01* +X595676Y229034D01* +X595610Y229105D01* +X595542Y229173D01* +X595471Y229239D01* +X595397Y229301D01* +X595321Y229361D01* +X595243Y229417D01* +X595162Y229471D01* +X595080Y229521D01* +X594995Y229567D01* +X594908Y229610D01* +X594820Y229650D01* +X594731Y229686D01* +X594640Y229719D01* +X594547Y229747D01* +X594454Y229772D01* +X594360Y229794D01* +X594265Y229811D01* +X594169Y229825D01* +X594073Y229834D01* +X593977Y229840D01* +X593880Y229842D01* +X594360Y233680D02* +X591481Y233680D01* +X594360Y233680D02* +X594446Y233678D01* +X594532Y233672D01* +X594618Y233663D01* +X594703Y233649D01* +X594787Y233632D01* +X594871Y233611D01* +X594953Y233586D01* +X595034Y233558D01* +X595114Y233526D01* +X595193Y233490D01* +X595269Y233451D01* +X595344Y233408D01* +X595417Y233363D01* +X595488Y233314D01* +X595556Y233261D01* +X595623Y233206D01* +X595686Y233148D01* +X595747Y233087D01* +X595805Y233024D01* +X595860Y232957D01* +X595913Y232889D01* +X595962Y232818D01* +X596007Y232745D01* +X596050Y232670D01* +X596089Y232594D01* +X596125Y232515D01* +X596157Y232435D01* +X596185Y232354D01* +X596210Y232272D01* +X596231Y232188D01* +X596248Y232104D01* +X596262Y232019D01* +X596271Y231933D01* +X596277Y231847D01* +X596279Y231761D01* +X596277Y231675D01* +X596271Y231589D01* +X596262Y231503D01* +X596248Y231418D01* +X596231Y231334D01* +X596210Y231250D01* +X596185Y231168D01* +X596157Y231087D01* +X596125Y231007D01* +X596089Y230928D01* +X596050Y230852D01* +X596007Y230777D01* +X595962Y230704D01* +X595913Y230633D01* +X595860Y230565D01* +X595805Y230498D01* +X595747Y230435D01* +X595686Y230374D01* +X595623Y230316D01* +X595556Y230261D01* +X595488Y230208D01* +X595417Y230159D01* +X595344Y230114D01* +X595269Y230071D01* +X595193Y230032D01* +X595114Y229996D01* +X595034Y229964D01* +X594953Y229936D01* +X594871Y229911D01* +X594787Y229890D01* +X594703Y229873D01* +X594618Y229859D01* +X594532Y229850D01* +X594446Y229844D01* +X594360Y229842D01* +X592441Y229842D01* +X603264Y233680D02* +X603356Y233678D01* +X603447Y233672D01* +X603538Y233663D01* +X603629Y233649D01* +X603719Y233632D01* +X603808Y233610D01* +X603896Y233585D01* +X603983Y233557D01* +X604069Y233524D01* +X604153Y233488D01* +X604236Y233449D01* +X604317Y233406D01* +X604396Y233359D01* +X604473Y233310D01* +X604548Y233257D01* +X604620Y233201D01* +X604690Y233142D01* +X604758Y233080D01* +X604823Y233015D01* +X604885Y232947D01* +X604944Y232877D01* +X605000Y232805D01* +X605053Y232730D01* +X605102Y232653D01* +X605149Y232574D01* +X605192Y232493D01* +X605231Y232410D01* +X605267Y232326D01* +X605300Y232240D01* +X605328Y232153D01* +X605353Y232065D01* +X605375Y231976D01* +X605392Y231886D01* +X605406Y231795D01* +X605415Y231704D01* +X605421Y231613D01* +X605423Y231521D01* +X603264Y233680D02* +X603161Y233678D01* +X603059Y233672D01* +X602957Y233663D01* +X602855Y233650D01* +X602754Y233633D01* +X602653Y233612D01* +X602554Y233588D01* +X602455Y233559D01* +X602358Y233528D01* +X602261Y233492D01* +X602166Y233454D01* +X602073Y233411D01* +X601981Y233365D01* +X601891Y233316D01* +X601803Y233264D01* +X601716Y233208D01* +X601632Y233149D01* +X601551Y233088D01* +X601471Y233023D01* +X601394Y232955D01* +X601319Y232884D01* +X601248Y232811D01* +X601179Y232735D01* +X601112Y232657D01* +X601049Y232576D01* +X600989Y232493D01* +X600932Y232408D01* +X600878Y232321D01* +X600827Y232231D01* +X600780Y232140D01* +X600736Y232048D01* +X600695Y231953D01* +X600658Y231858D01* +X600625Y231761D01* +X604703Y229842D02* +X604770Y229908D01* +X604834Y229977D01* +X604895Y230048D01* +X604953Y230122D01* +X605008Y230198D01* +X605060Y230276D01* +X605109Y230356D01* +X605155Y230438D01* +X605197Y230522D01* +X605236Y230608D01* +X605271Y230695D01* +X605302Y230783D01* +X605330Y230873D01* +X605355Y230963D01* +X605376Y231055D01* +X605393Y231147D01* +X605406Y231240D01* +X605415Y231333D01* +X605421Y231427D01* +X605423Y231521D01* +X604703Y229842D02* +X600625Y225044D01* +X605423Y225044D01* +D17* +X533400Y215900D03* +D14* +X545592Y213360D02* +X545592Y221996D01* +X547991Y221996D01* +X548088Y221994D01* +X548184Y221988D01* +X548280Y221979D01* +X548376Y221965D01* +X548471Y221948D01* +X548565Y221926D01* +X548658Y221901D01* +X548751Y221873D01* +X548842Y221840D01* +X548931Y221804D01* +X549019Y221764D01* +X549106Y221721D01* +X549191Y221675D01* +X549273Y221625D01* +X549354Y221571D01* +X549432Y221515D01* +X549508Y221455D01* +X549582Y221393D01* +X549653Y221327D01* +X549721Y221259D01* +X549787Y221188D01* +X549849Y221114D01* +X549909Y221038D01* +X549965Y220960D01* +X550019Y220879D01* +X550069Y220796D01* +X550115Y220712D01* +X550158Y220625D01* +X550198Y220537D01* +X550234Y220448D01* +X550267Y220357D01* +X550295Y220264D01* +X550320Y220171D01* +X550342Y220077D01* +X550359Y219982D01* +X550373Y219886D01* +X550382Y219790D01* +X550388Y219694D01* +X550390Y219597D01* +X550388Y219500D01* +X550382Y219404D01* +X550373Y219308D01* +X550359Y219212D01* +X550342Y219117D01* +X550320Y219023D01* +X550295Y218930D01* +X550267Y218837D01* +X550234Y218746D01* +X550198Y218657D01* +X550158Y218569D01* +X550115Y218482D01* +X550069Y218398D01* +X550019Y218315D01* +X549965Y218234D01* +X549909Y218156D01* +X549849Y218080D01* +X549787Y218006D01* +X549721Y217935D01* +X549653Y217867D01* +X549582Y217801D01* +X549508Y217739D01* +X549432Y217679D01* +X549354Y217623D01* +X549273Y217569D01* +X549191Y217519D01* +X549106Y217473D01* +X549019Y217430D01* +X548931Y217390D01* +X548842Y217354D01* +X548751Y217321D01* +X548658Y217293D01* +X548565Y217268D01* +X548471Y217246D01* +X548376Y217229D01* +X548280Y217215D01* +X548184Y217206D01* +X548088Y217200D01* +X547991Y217198D01* +X545592Y217198D01* +X548471Y217198D02* +X550390Y213360D01* +X554651Y213360D02* +X557050Y213360D01* +X557147Y213362D01* +X557243Y213368D01* +X557339Y213377D01* +X557435Y213391D01* +X557530Y213408D01* +X557624Y213430D01* +X557717Y213455D01* +X557810Y213483D01* +X557901Y213516D01* +X557990Y213552D01* +X558078Y213592D01* +X558165Y213635D01* +X558250Y213681D01* +X558332Y213731D01* +X558413Y213785D01* +X558491Y213841D01* +X558567Y213901D01* +X558641Y213963D01* +X558712Y214029D01* +X558780Y214097D01* +X558846Y214168D01* +X558908Y214242D01* +X558968Y214318D01* +X559024Y214396D01* +X559078Y214477D01* +X559128Y214560D01* +X559174Y214644D01* +X559217Y214731D01* +X559257Y214819D01* +X559293Y214908D01* +X559326Y214999D01* +X559354Y215092D01* +X559379Y215185D01* +X559401Y215279D01* +X559418Y215374D01* +X559432Y215470D01* +X559441Y215566D01* +X559447Y215662D01* +X559449Y215759D01* +X559447Y215856D01* +X559441Y215952D01* +X559432Y216048D01* +X559418Y216144D01* +X559401Y216239D01* +X559379Y216333D01* +X559354Y216426D01* +X559326Y216519D01* +X559293Y216610D01* +X559257Y216699D01* +X559217Y216787D01* +X559174Y216874D01* +X559128Y216958D01* +X559078Y217041D01* +X559024Y217122D01* +X558968Y217200D01* +X558908Y217276D01* +X558846Y217350D01* +X558780Y217421D01* +X558712Y217489D01* +X558641Y217555D01* +X558567Y217617D01* +X558491Y217677D01* +X558413Y217733D01* +X558332Y217787D01* +X558250Y217837D01* +X558165Y217883D01* +X558078Y217926D01* +X557990Y217966D01* +X557901Y218002D01* +X557810Y218035D01* +X557717Y218063D01* +X557624Y218088D01* +X557530Y218110D01* +X557435Y218127D01* +X557339Y218141D01* +X557243Y218150D01* +X557147Y218156D01* +X557050Y218158D01* +X557530Y221996D02* +X554651Y221996D01* +X557530Y221996D02* +X557616Y221994D01* +X557702Y221988D01* +X557788Y221979D01* +X557873Y221965D01* +X557957Y221948D01* +X558041Y221927D01* +X558123Y221902D01* +X558204Y221874D01* +X558284Y221842D01* +X558363Y221806D01* +X558439Y221767D01* +X558514Y221724D01* +X558587Y221679D01* +X558658Y221630D01* +X558726Y221577D01* +X558793Y221522D01* +X558856Y221464D01* +X558917Y221403D01* +X558975Y221340D01* +X559030Y221273D01* +X559083Y221205D01* +X559132Y221134D01* +X559177Y221061D01* +X559220Y220986D01* +X559259Y220910D01* +X559295Y220831D01* +X559327Y220751D01* +X559355Y220670D01* +X559380Y220588D01* +X559401Y220504D01* +X559418Y220420D01* +X559432Y220335D01* +X559441Y220249D01* +X559447Y220163D01* +X559449Y220077D01* +X559447Y219991D01* +X559441Y219905D01* +X559432Y219819D01* +X559418Y219734D01* +X559401Y219650D01* +X559380Y219566D01* +X559355Y219484D01* +X559327Y219403D01* +X559295Y219323D01* +X559259Y219244D01* +X559220Y219168D01* +X559177Y219093D01* +X559132Y219020D01* +X559083Y218949D01* +X559030Y218881D01* +X558975Y218814D01* +X558917Y218751D01* +X558856Y218690D01* +X558793Y218632D01* +X558726Y218577D01* +X558658Y218524D01* +X558587Y218475D01* +X558514Y218430D01* +X558439Y218387D01* +X558363Y218348D01* +X558284Y218312D01* +X558204Y218280D01* +X558123Y218252D01* +X558041Y218227D01* +X557957Y218206D01* +X557873Y218189D01* +X557788Y218175D01* +X557702Y218166D01* +X557616Y218160D01* +X557530Y218158D01* +X555611Y218158D01* +X563795Y220077D02* +X566194Y221996D01* +X566194Y213360D01* +X563795Y213360D02* +X568593Y213360D01* +D13* +X543560Y149860D03* +D14* +X549402Y126351D02* +X558038Y126351D01* +X549402Y126351D02* +X549402Y128750D01* +X549404Y128847D01* +X549410Y128943D01* +X549419Y129039D01* +X549433Y129135D01* +X549450Y129230D01* +X549472Y129324D01* +X549497Y129417D01* +X549525Y129510D01* +X549558Y129601D01* +X549594Y129690D01* +X549634Y129778D01* +X549677Y129865D01* +X549723Y129950D01* +X549773Y130032D01* +X549827Y130113D01* +X549883Y130191D01* +X549943Y130267D01* +X550005Y130341D01* +X550071Y130412D01* +X550139Y130480D01* +X550210Y130546D01* +X550284Y130608D01* +X550360Y130668D01* +X550438Y130724D01* +X550519Y130778D01* +X550602Y130828D01* +X550686Y130874D01* +X550773Y130917D01* +X550861Y130957D01* +X550950Y130993D01* +X551041Y131026D01* +X551134Y131054D01* +X551227Y131079D01* +X551321Y131101D01* +X551416Y131118D01* +X551512Y131132D01* +X551608Y131141D01* +X551704Y131147D01* +X551801Y131149D01* +X551898Y131147D01* +X551994Y131141D01* +X552090Y131132D01* +X552186Y131118D01* +X552281Y131101D01* +X552375Y131079D01* +X552468Y131054D01* +X552561Y131026D01* +X552652Y130993D01* +X552741Y130957D01* +X552829Y130917D01* +X552916Y130874D01* +X553001Y130828D01* +X553083Y130778D01* +X553164Y130724D01* +X553242Y130668D01* +X553318Y130608D01* +X553392Y130546D01* +X553463Y130480D01* +X553531Y130412D01* +X553597Y130341D01* +X553659Y130267D01* +X553719Y130191D01* +X553775Y130113D01* +X553829Y130032D01* +X553879Y129950D01* +X553925Y129865D01* +X553968Y129778D01* +X554008Y129690D01* +X554044Y129601D01* +X554077Y129510D01* +X554105Y129417D01* +X554130Y129324D01* +X554152Y129230D01* +X554169Y129135D01* +X554183Y129039D01* +X554192Y128943D01* +X554198Y128847D01* +X554200Y128750D01* +X554200Y126351D01* +X554200Y129230D02* +X558038Y131149D01* +X558038Y135410D02* +X558038Y137809D01* +X558036Y137906D01* +X558030Y138002D01* +X558021Y138098D01* +X558007Y138194D01* +X557990Y138289D01* +X557968Y138383D01* +X557943Y138476D01* +X557915Y138569D01* +X557882Y138660D01* +X557846Y138749D01* +X557806Y138837D01* +X557763Y138924D01* +X557717Y139009D01* +X557667Y139091D01* +X557613Y139172D01* +X557557Y139250D01* +X557497Y139326D01* +X557435Y139400D01* +X557369Y139471D01* +X557301Y139539D01* +X557230Y139605D01* +X557156Y139667D01* +X557080Y139727D01* +X557002Y139783D01* +X556921Y139837D01* +X556839Y139887D01* +X556754Y139933D01* +X556667Y139976D01* +X556579Y140016D01* +X556490Y140052D01* +X556399Y140085D01* +X556306Y140113D01* +X556213Y140138D01* +X556119Y140160D01* +X556024Y140177D01* +X555928Y140191D01* +X555832Y140200D01* +X555736Y140206D01* +X555639Y140208D01* +X555542Y140206D01* +X555446Y140200D01* +X555350Y140191D01* +X555254Y140177D01* +X555159Y140160D01* +X555065Y140138D01* +X554972Y140113D01* +X554879Y140085D01* +X554788Y140052D01* +X554699Y140016D01* +X554611Y139976D01* +X554524Y139933D01* +X554440Y139887D01* +X554357Y139837D01* +X554276Y139783D01* +X554198Y139727D01* +X554122Y139667D01* +X554048Y139605D01* +X553977Y139539D01* +X553909Y139471D01* +X553843Y139400D01* +X553781Y139326D01* +X553721Y139250D01* +X553665Y139172D01* +X553611Y139091D01* +X553561Y139009D01* +X553515Y138924D01* +X553472Y138837D01* +X553432Y138749D01* +X553396Y138660D01* +X553363Y138569D01* +X553335Y138476D01* +X553310Y138383D01* +X553288Y138289D01* +X553271Y138194D01* +X553257Y138098D01* +X553248Y138002D01* +X553242Y137906D01* +X553240Y137809D01* +X549402Y138289D02* +X549402Y135410D01* +X549402Y138289D02* +X549404Y138375D01* +X549410Y138461D01* +X549419Y138547D01* +X549433Y138632D01* +X549450Y138716D01* +X549471Y138800D01* +X549496Y138882D01* +X549524Y138963D01* +X549556Y139043D01* +X549592Y139122D01* +X549631Y139198D01* +X549674Y139273D01* +X549719Y139346D01* +X549768Y139417D01* +X549821Y139485D01* +X549876Y139552D01* +X549934Y139615D01* +X549995Y139676D01* +X550058Y139734D01* +X550125Y139789D01* +X550193Y139842D01* +X550264Y139891D01* +X550337Y139936D01* +X550412Y139979D01* +X550488Y140018D01* +X550567Y140054D01* +X550647Y140086D01* +X550728Y140114D01* +X550810Y140139D01* +X550894Y140160D01* +X550978Y140177D01* +X551063Y140191D01* +X551149Y140200D01* +X551235Y140206D01* +X551321Y140208D01* +X551407Y140206D01* +X551493Y140200D01* +X551579Y140191D01* +X551664Y140177D01* +X551748Y140160D01* +X551832Y140139D01* +X551914Y140114D01* +X551995Y140086D01* +X552075Y140054D01* +X552154Y140018D01* +X552230Y139979D01* +X552305Y139936D01* +X552378Y139891D01* +X552449Y139842D01* +X552517Y139789D01* +X552584Y139734D01* +X552647Y139676D01* +X552708Y139615D01* +X552766Y139552D01* +X552821Y139485D01* +X552874Y139417D01* +X552923Y139346D01* +X552968Y139273D01* +X553011Y139198D01* +X553050Y139122D01* +X553086Y139043D01* +X553118Y138963D01* +X553146Y138882D01* +X553171Y138800D01* +X553192Y138716D01* +X553209Y138632D01* +X553223Y138547D01* +X553232Y138461D01* +X553238Y138375D01* +X553240Y138289D01* +X553240Y136370D01* +X553720Y144554D02* +X553550Y144556D01* +X553380Y144562D01* +X553211Y144572D01* +X553041Y144586D01* +X552872Y144605D01* +X552704Y144627D01* +X552536Y144653D01* +X552369Y144683D01* +X552203Y144718D01* +X552037Y144756D01* +X551872Y144798D01* +X551709Y144844D01* +X551547Y144894D01* +X551385Y144948D01* +X551226Y145005D01* +X551067Y145067D01* +X550910Y145132D01* +X550755Y145201D01* +X550601Y145274D01* +X550525Y145302D01* +X550450Y145334D01* +X550376Y145369D01* +X550304Y145407D01* +X550234Y145449D01* +X550166Y145494D01* +X550100Y145542D01* +X550036Y145593D01* +X549975Y145647D01* +X549916Y145703D01* +X549860Y145763D01* +X549807Y145824D01* +X549757Y145888D01* +X549709Y145955D01* +X549665Y146023D01* +X549624Y146094D01* +X549586Y146166D01* +X549552Y146240D01* +X549521Y146315D01* +X549493Y146392D01* +X549469Y146470D01* +X549449Y146549D01* +X549432Y146629D01* +X549419Y146709D01* +X549409Y146790D01* +X549404Y146871D01* +X549402Y146953D01* +X549404Y147035D01* +X549409Y147116D01* +X549419Y147197D01* +X549432Y147277D01* +X549449Y147357D01* +X549469Y147436D01* +X549493Y147514D01* +X549521Y147591D01* +X549552Y147666D01* +X549586Y147740D01* +X549624Y147812D01* +X549665Y147883D01* +X549709Y147951D01* +X549757Y148018D01* +X549807Y148082D01* +X549860Y148143D01* +X549916Y148203D01* +X549975Y148259D01* +X550036Y148313D01* +X550100Y148364D01* +X550166Y148412D01* +X550234Y148457D01* +X550304Y148499D01* +X550376Y148537D01* +X550450Y148572D01* +X550525Y148604D01* +X550601Y148632D01* +X550755Y148705D01* +X550910Y148774D01* +X551067Y148839D01* +X551226Y148901D01* +X551385Y148958D01* +X551547Y149012D01* +X551709Y149062D01* +X551872Y149108D01* +X552037Y149150D01* +X552203Y149188D01* +X552369Y149223D01* +X552536Y149253D01* +X552704Y149279D01* +X552872Y149301D01* +X553041Y149320D01* +X553211Y149334D01* +X553380Y149344D01* +X553550Y149350D01* +X553720Y149352D01* +X553720Y144554D02* +X553890Y144556D01* +X554060Y144562D01* +X554229Y144572D01* +X554399Y144586D01* +X554568Y144605D01* +X554736Y144627D01* +X554904Y144653D01* +X555071Y144683D01* +X555237Y144718D01* +X555403Y144756D01* +X555568Y144798D01* +X555731Y144844D01* +X555893Y144894D01* +X556055Y144948D01* +X556214Y145005D01* +X556373Y145067D01* +X556530Y145132D01* +X556685Y145201D01* +X556839Y145274D01* +X556915Y145302D01* +X556990Y145334D01* +X557064Y145369D01* +X557136Y145407D01* +X557206Y145449D01* +X557274Y145494D01* +X557340Y145542D01* +X557404Y145593D01* +X557465Y145647D01* +X557524Y145703D01* +X557580Y145763D01* +X557633Y145824D01* +X557683Y145888D01* +X557731Y145955D01* +X557775Y146023D01* +X557816Y146094D01* +X557854Y146166D01* +X557888Y146240D01* +X557919Y146315D01* +X557947Y146392D01* +X557971Y146470D01* +X557991Y146549D01* +X558008Y146629D01* +X558021Y146709D01* +X558031Y146790D01* +X558036Y146871D01* +X558038Y146953D01* +X556839Y148632D02* +X556685Y148705D01* +X556530Y148774D01* +X556373Y148839D01* +X556214Y148901D01* +X556055Y148958D01* +X555893Y149012D01* +X555731Y149062D01* +X555568Y149108D01* +X555403Y149150D01* +X555237Y149188D01* +X555071Y149223D01* +X554904Y149253D01* +X554736Y149279D01* +X554568Y149301D01* +X554399Y149320D01* +X554229Y149334D01* +X554060Y149344D01* +X553890Y149350D01* +X553720Y149352D01* +X556839Y148632D02* +X556915Y148604D01* +X556990Y148572D01* +X557064Y148537D01* +X557136Y148499D01* +X557206Y148457D01* +X557274Y148412D01* +X557340Y148364D01* +X557404Y148313D01* +X557465Y148259D01* +X557524Y148203D01* +X557580Y148143D01* +X557633Y148082D01* +X557683Y148018D01* +X557731Y147951D01* +X557775Y147883D01* +X557816Y147812D01* +X557854Y147740D01* +X557888Y147666D01* +X557919Y147591D01* +X557947Y147514D01* +X557971Y147436D01* +X557991Y147357D01* +X558008Y147277D01* +X558021Y147197D01* +X558031Y147116D01* +X558036Y147035D01* +X558038Y146953D01* +X556119Y145034D02* +X551321Y148872D01* +D17* +X561340Y170180D03* +D14* +X573278Y169672D02* +X573278Y161036D01* +X573278Y169672D02* +X575677Y169672D01* +X575774Y169670D01* +X575870Y169664D01* +X575966Y169655D01* +X576062Y169641D01* +X576157Y169624D01* +X576251Y169602D01* +X576344Y169577D01* +X576437Y169549D01* +X576528Y169516D01* +X576617Y169480D01* +X576705Y169440D01* +X576792Y169397D01* +X576877Y169351D01* +X576959Y169301D01* +X577040Y169247D01* +X577118Y169191D01* +X577194Y169131D01* +X577268Y169069D01* +X577339Y169003D01* +X577407Y168935D01* +X577473Y168864D01* +X577535Y168790D01* +X577595Y168714D01* +X577651Y168636D01* +X577705Y168555D01* +X577755Y168472D01* +X577801Y168388D01* +X577844Y168301D01* +X577884Y168213D01* +X577920Y168124D01* +X577953Y168033D01* +X577981Y167940D01* +X578006Y167847D01* +X578028Y167753D01* +X578045Y167658D01* +X578059Y167562D01* +X578068Y167466D01* +X578074Y167370D01* +X578076Y167273D01* +X578074Y167176D01* +X578068Y167080D01* +X578059Y166984D01* +X578045Y166888D01* +X578028Y166793D01* +X578006Y166699D01* +X577981Y166606D01* +X577953Y166513D01* +X577920Y166422D01* +X577884Y166333D01* +X577844Y166245D01* +X577801Y166158D01* +X577755Y166074D01* +X577705Y165991D01* +X577651Y165910D01* +X577595Y165832D01* +X577535Y165756D01* +X577473Y165682D01* +X577407Y165611D01* +X577339Y165543D01* +X577268Y165477D01* +X577194Y165415D01* +X577118Y165355D01* +X577040Y165299D01* +X576959Y165245D01* +X576877Y165195D01* +X576792Y165149D01* +X576705Y165106D01* +X576617Y165066D01* +X576528Y165030D01* +X576437Y164997D01* +X576344Y164969D01* +X576251Y164944D01* +X576157Y164922D01* +X576062Y164905D01* +X575966Y164891D01* +X575870Y164882D01* +X575774Y164876D01* +X575677Y164874D01* +X573278Y164874D01* +X576157Y164874D02* +X578076Y161036D01* +X584976Y169672D02* +X585068Y169670D01* +X585159Y169664D01* +X585250Y169655D01* +X585341Y169641D01* +X585431Y169624D01* +X585520Y169602D01* +X585608Y169577D01* +X585695Y169549D01* +X585781Y169516D01* +X585865Y169480D01* +X585948Y169441D01* +X586029Y169398D01* +X586108Y169351D01* +X586185Y169302D01* +X586260Y169249D01* +X586332Y169193D01* +X586402Y169134D01* +X586470Y169072D01* +X586535Y169007D01* +X586597Y168939D01* +X586656Y168869D01* +X586712Y168797D01* +X586765Y168722D01* +X586814Y168645D01* +X586861Y168566D01* +X586904Y168485D01* +X586943Y168402D01* +X586979Y168318D01* +X587012Y168232D01* +X587040Y168145D01* +X587065Y168057D01* +X587087Y167968D01* +X587104Y167878D01* +X587118Y167787D01* +X587127Y167696D01* +X587133Y167605D01* +X587135Y167513D01* +X584976Y169672D02* +X584873Y169670D01* +X584771Y169664D01* +X584669Y169655D01* +X584567Y169642D01* +X584466Y169625D01* +X584365Y169604D01* +X584266Y169580D01* +X584167Y169551D01* +X584070Y169520D01* +X583973Y169484D01* +X583878Y169446D01* +X583785Y169403D01* +X583693Y169357D01* +X583603Y169308D01* +X583515Y169256D01* +X583428Y169200D01* +X583344Y169141D01* +X583263Y169080D01* +X583183Y169015D01* +X583106Y168947D01* +X583031Y168876D01* +X582960Y168803D01* +X582891Y168727D01* +X582824Y168649D01* +X582761Y168568D01* +X582701Y168485D01* +X582644Y168400D01* +X582590Y168313D01* +X582539Y168223D01* +X582492Y168132D01* +X582448Y168040D01* +X582407Y167945D01* +X582370Y167850D01* +X582337Y167753D01* +X586415Y165834D02* +X586482Y165900D01* +X586546Y165969D01* +X586607Y166040D01* +X586665Y166114D01* +X586720Y166190D01* +X586772Y166268D01* +X586821Y166348D01* +X586867Y166430D01* +X586909Y166514D01* +X586948Y166600D01* +X586983Y166687D01* +X587014Y166775D01* +X587042Y166865D01* +X587067Y166955D01* +X587088Y167047D01* +X587105Y167139D01* +X587118Y167232D01* +X587127Y167325D01* +X587133Y167419D01* +X587135Y167513D01* +X586415Y165834D02* +X582337Y161036D01* +X587135Y161036D01* +X593400Y164874D02* +X596279Y164874D01* +X593400Y164874D02* +X593314Y164876D01* +X593228Y164882D01* +X593142Y164891D01* +X593057Y164905D01* +X592973Y164922D01* +X592889Y164943D01* +X592807Y164968D01* +X592726Y164996D01* +X592646Y165028D01* +X592567Y165064D01* +X592491Y165103D01* +X592416Y165146D01* +X592343Y165191D01* +X592272Y165240D01* +X592204Y165293D01* +X592137Y165348D01* +X592074Y165406D01* +X592013Y165467D01* +X591955Y165530D01* +X591900Y165597D01* +X591847Y165665D01* +X591798Y165736D01* +X591753Y165809D01* +X591710Y165884D01* +X591671Y165960D01* +X591635Y166039D01* +X591603Y166119D01* +X591575Y166200D01* +X591550Y166282D01* +X591529Y166366D01* +X591512Y166450D01* +X591498Y166535D01* +X591489Y166621D01* +X591483Y166707D01* +X591481Y166793D01* +X591481Y167273D01* +X591483Y167370D01* +X591489Y167466D01* +X591498Y167562D01* +X591512Y167658D01* +X591529Y167753D01* +X591551Y167847D01* +X591576Y167940D01* +X591604Y168033D01* +X591637Y168124D01* +X591673Y168213D01* +X591713Y168301D01* +X591756Y168388D01* +X591802Y168473D01* +X591852Y168555D01* +X591906Y168636D01* +X591962Y168714D01* +X592022Y168790D01* +X592084Y168864D01* +X592150Y168935D01* +X592218Y169003D01* +X592289Y169069D01* +X592363Y169131D01* +X592439Y169191D01* +X592517Y169247D01* +X592598Y169301D01* +X592681Y169351D01* +X592765Y169397D01* +X592852Y169440D01* +X592940Y169480D01* +X593029Y169516D01* +X593120Y169549D01* +X593213Y169577D01* +X593306Y169602D01* +X593400Y169624D01* +X593495Y169641D01* +X593591Y169655D01* +X593687Y169664D01* +X593783Y169670D01* +X593880Y169672D01* +X593977Y169670D01* +X594073Y169664D01* +X594169Y169655D01* +X594265Y169641D01* +X594360Y169624D01* +X594454Y169602D01* +X594547Y169577D01* +X594640Y169549D01* +X594731Y169516D01* +X594820Y169480D01* +X594908Y169440D01* +X594995Y169397D01* +X595080Y169351D01* +X595162Y169301D01* +X595243Y169247D01* +X595321Y169191D01* +X595397Y169131D01* +X595471Y169069D01* +X595542Y169003D01* +X595610Y168935D01* +X595676Y168864D01* +X595738Y168790D01* +X595798Y168714D01* +X595854Y168636D01* +X595908Y168555D01* +X595958Y168473D01* +X596004Y168388D01* +X596047Y168301D01* +X596087Y168213D01* +X596123Y168124D01* +X596156Y168033D01* +X596184Y167940D01* +X596209Y167847D01* +X596231Y167753D01* +X596248Y167658D01* +X596262Y167562D01* +X596271Y167466D01* +X596277Y167370D01* +X596279Y167273D01* +X596279Y164874D01* +X596277Y164751D01* +X596271Y164628D01* +X596261Y164505D01* +X596247Y164383D01* +X596230Y164261D01* +X596208Y164140D01* +X596183Y164020D01* +X596153Y163900D01* +X596120Y163782D01* +X596083Y163665D01* +X596043Y163548D01* +X595999Y163434D01* +X595951Y163320D01* +X595899Y163209D01* +X595844Y163099D01* +X595785Y162991D01* +X595723Y162884D01* +X595658Y162780D01* +X595589Y162678D01* +X595517Y162578D01* +X595442Y162481D01* +X595363Y162386D01* +X595282Y162294D01* +X595198Y162204D01* +X595111Y162117D01* +X595021Y162033D01* +X594929Y161952D01* +X594834Y161873D01* +X594737Y161798D01* +X594637Y161726D01* +X594535Y161657D01* +X594431Y161592D01* +X594324Y161530D01* +X594216Y161471D01* +X594106Y161416D01* +X593995Y161364D01* +X593881Y161317D01* +X593767Y161272D01* +X593650Y161232D01* +X593533Y161195D01* +X593415Y161162D01* +X593295Y161132D01* +X593175Y161107D01* +X593054Y161085D01* +X592932Y161068D01* +X592810Y161054D01* +X592687Y161044D01* +X592564Y161038D01* +X592441Y161036D01* +D13* +X485140Y254000D03* +D14* +X478028Y244856D02* +X469392Y244856D01* +X469392Y247255D01* +X469394Y247352D01* +X469400Y247448D01* +X469409Y247544D01* +X469423Y247640D01* +X469440Y247735D01* +X469462Y247829D01* +X469487Y247922D01* +X469515Y248015D01* +X469548Y248106D01* +X469584Y248195D01* +X469624Y248283D01* +X469667Y248370D01* +X469713Y248455D01* +X469763Y248537D01* +X469817Y248618D01* +X469873Y248696D01* +X469933Y248772D01* +X469995Y248846D01* +X470061Y248917D01* +X470129Y248985D01* +X470200Y249051D01* +X470274Y249113D01* +X470350Y249173D01* +X470428Y249229D01* +X470509Y249283D01* +X470592Y249333D01* +X470676Y249379D01* +X470763Y249422D01* +X470851Y249462D01* +X470940Y249498D01* +X471031Y249531D01* +X471124Y249559D01* +X471217Y249584D01* +X471311Y249606D01* +X471406Y249623D01* +X471502Y249637D01* +X471598Y249646D01* +X471694Y249652D01* +X471791Y249654D01* +X471888Y249652D01* +X471984Y249646D01* +X472080Y249637D01* +X472176Y249623D01* +X472271Y249606D01* +X472365Y249584D01* +X472458Y249559D01* +X472551Y249531D01* +X472642Y249498D01* +X472731Y249462D01* +X472819Y249422D01* +X472906Y249379D01* +X472991Y249333D01* +X473073Y249283D01* +X473154Y249229D01* +X473232Y249173D01* +X473308Y249113D01* +X473382Y249051D01* +X473453Y248985D01* +X473521Y248917D01* +X473587Y248846D01* +X473649Y248772D01* +X473709Y248696D01* +X473765Y248618D01* +X473819Y248537D01* +X473869Y248455D01* +X473915Y248370D01* +X473958Y248283D01* +X473998Y248195D01* +X474034Y248106D01* +X474067Y248015D01* +X474095Y247922D01* +X474120Y247829D01* +X474142Y247735D01* +X474159Y247640D01* +X474173Y247544D01* +X474182Y247448D01* +X474188Y247352D01* +X474190Y247255D01* +X474190Y244856D01* +X474190Y247735D02* +X478028Y249654D01* +X469392Y256554D02* +X469394Y256646D01* +X469400Y256737D01* +X469409Y256828D01* +X469423Y256919D01* +X469440Y257009D01* +X469462Y257098D01* +X469487Y257186D01* +X469515Y257273D01* +X469548Y257359D01* +X469584Y257443D01* +X469623Y257526D01* +X469666Y257607D01* +X469713Y257686D01* +X469762Y257763D01* +X469815Y257838D01* +X469871Y257910D01* +X469930Y257980D01* +X469992Y258048D01* +X470057Y258113D01* +X470125Y258175D01* +X470195Y258234D01* +X470267Y258290D01* +X470342Y258343D01* +X470419Y258392D01* +X470498Y258439D01* +X470579Y258482D01* +X470662Y258521D01* +X470746Y258557D01* +X470832Y258590D01* +X470919Y258618D01* +X471007Y258643D01* +X471096Y258665D01* +X471186Y258682D01* +X471277Y258696D01* +X471368Y258705D01* +X471459Y258711D01* +X471551Y258713D01* +X469392Y256554D02* +X469394Y256451D01* +X469400Y256349D01* +X469409Y256247D01* +X469422Y256145D01* +X469439Y256044D01* +X469460Y255943D01* +X469484Y255844D01* +X469513Y255745D01* +X469544Y255648D01* +X469580Y255551D01* +X469618Y255456D01* +X469661Y255363D01* +X469707Y255271D01* +X469756Y255181D01* +X469808Y255093D01* +X469864Y255006D01* +X469923Y254922D01* +X469984Y254841D01* +X470049Y254761D01* +X470117Y254684D01* +X470188Y254609D01* +X470261Y254538D01* +X470337Y254469D01* +X470415Y254402D01* +X470496Y254339D01* +X470579Y254279D01* +X470664Y254222D01* +X470751Y254168D01* +X470841Y254117D01* +X470932Y254070D01* +X471024Y254026D01* +X471119Y253985D01* +X471214Y253948D01* +X471311Y253915D01* +X473230Y257993D02* +X473164Y258060D01* +X473095Y258124D01* +X473024Y258185D01* +X472950Y258243D01* +X472874Y258298D01* +X472796Y258350D01* +X472716Y258399D01* +X472634Y258445D01* +X472550Y258487D01* +X472464Y258526D01* +X472377Y258561D01* +X472289Y258592D01* +X472199Y258620D01* +X472109Y258645D01* +X472017Y258666D01* +X471925Y258683D01* +X471832Y258696D01* +X471739Y258705D01* +X471645Y258711D01* +X471551Y258713D01* +X473230Y257993D02* +X478028Y253915D01* +X478028Y258713D01* +X470352Y263059D02* +X469392Y263059D01* +X469392Y267857D01* +X478028Y265458D01* +D17* +X762000Y88900D03* +D14* +X755904Y96266D02* +X755904Y104902D01* +X758303Y104902D01* +X758400Y104900D01* +X758496Y104894D01* +X758592Y104885D01* +X758688Y104871D01* +X758783Y104854D01* +X758877Y104832D01* +X758970Y104807D01* +X759063Y104779D01* +X759154Y104746D01* +X759243Y104710D01* +X759331Y104670D01* +X759418Y104627D01* +X759503Y104581D01* +X759585Y104531D01* +X759666Y104477D01* +X759744Y104421D01* +X759820Y104361D01* +X759894Y104299D01* +X759965Y104233D01* +X760033Y104165D01* +X760099Y104094D01* +X760161Y104020D01* +X760221Y103944D01* +X760277Y103866D01* +X760331Y103785D01* +X760381Y103702D01* +X760427Y103618D01* +X760470Y103531D01* +X760510Y103443D01* +X760546Y103354D01* +X760579Y103263D01* +X760607Y103170D01* +X760632Y103077D01* +X760654Y102983D01* +X760671Y102888D01* +X760685Y102792D01* +X760694Y102696D01* +X760700Y102600D01* +X760702Y102503D01* +X760700Y102406D01* +X760694Y102310D01* +X760685Y102214D01* +X760671Y102118D01* +X760654Y102023D01* +X760632Y101929D01* +X760607Y101836D01* +X760579Y101743D01* +X760546Y101652D01* +X760510Y101563D01* +X760470Y101475D01* +X760427Y101388D01* +X760381Y101303D01* +X760331Y101221D01* +X760277Y101140D01* +X760221Y101062D01* +X760161Y100986D01* +X760099Y100912D01* +X760033Y100841D01* +X759965Y100773D01* +X759894Y100707D01* +X759820Y100645D01* +X759744Y100585D01* +X759666Y100529D01* +X759585Y100475D01* +X759503Y100425D01* +X759418Y100379D01* +X759331Y100336D01* +X759243Y100296D01* +X759154Y100260D01* +X759063Y100227D01* +X758970Y100199D01* +X758877Y100174D01* +X758783Y100152D01* +X758688Y100135D01* +X758592Y100121D01* +X758496Y100112D01* +X758400Y100106D01* +X758303Y100104D01* +X755904Y100104D01* +X758783Y100104D02* +X760702Y96266D01* +X767602Y104902D02* +X767694Y104900D01* +X767785Y104894D01* +X767876Y104885D01* +X767967Y104871D01* +X768057Y104854D01* +X768146Y104832D01* +X768234Y104807D01* +X768321Y104779D01* +X768407Y104746D01* +X768491Y104710D01* +X768574Y104671D01* +X768655Y104628D01* +X768734Y104581D01* +X768811Y104532D01* +X768886Y104479D01* +X768958Y104423D01* +X769028Y104364D01* +X769096Y104302D01* +X769161Y104237D01* +X769223Y104169D01* +X769282Y104099D01* +X769338Y104027D01* +X769391Y103952D01* +X769440Y103875D01* +X769487Y103796D01* +X769530Y103715D01* +X769569Y103632D01* +X769605Y103548D01* +X769638Y103462D01* +X769666Y103375D01* +X769691Y103287D01* +X769713Y103198D01* +X769730Y103108D01* +X769744Y103017D01* +X769753Y102926D01* +X769759Y102835D01* +X769761Y102743D01* +X767602Y104902D02* +X767499Y104900D01* +X767397Y104894D01* +X767295Y104885D01* +X767193Y104872D01* +X767092Y104855D01* +X766991Y104834D01* +X766892Y104810D01* +X766793Y104781D01* +X766696Y104750D01* +X766599Y104714D01* +X766504Y104676D01* +X766411Y104633D01* +X766319Y104587D01* +X766229Y104538D01* +X766141Y104486D01* +X766054Y104430D01* +X765970Y104371D01* +X765889Y104310D01* +X765809Y104245D01* +X765732Y104177D01* +X765657Y104106D01* +X765586Y104033D01* +X765517Y103957D01* +X765450Y103879D01* +X765387Y103798D01* +X765327Y103715D01* +X765270Y103630D01* +X765216Y103543D01* +X765165Y103453D01* +X765118Y103362D01* +X765074Y103270D01* +X765033Y103175D01* +X764996Y103080D01* +X764963Y102983D01* +X769041Y101064D02* +X769108Y101130D01* +X769172Y101199D01* +X769233Y101270D01* +X769291Y101344D01* +X769346Y101420D01* +X769398Y101498D01* +X769447Y101578D01* +X769493Y101660D01* +X769535Y101744D01* +X769574Y101830D01* +X769609Y101917D01* +X769640Y102005D01* +X769668Y102095D01* +X769693Y102185D01* +X769714Y102277D01* +X769731Y102369D01* +X769744Y102462D01* +X769753Y102555D01* +X769759Y102649D01* +X769761Y102743D01* +X769041Y101064D02* +X764963Y96266D01* +X769761Y96266D01* +D13* +X462280Y302260D03* +D14* +X465328Y277735D02* +X456692Y277735D01* +X456692Y280134D01* +X456694Y280231D01* +X456700Y280327D01* +X456709Y280423D01* +X456723Y280519D01* +X456740Y280614D01* +X456762Y280708D01* +X456787Y280801D01* +X456815Y280894D01* +X456848Y280985D01* +X456884Y281074D01* +X456924Y281162D01* +X456967Y281249D01* +X457013Y281334D01* +X457063Y281416D01* +X457117Y281497D01* +X457173Y281575D01* +X457233Y281651D01* +X457295Y281725D01* +X457361Y281796D01* +X457429Y281864D01* +X457500Y281930D01* +X457574Y281992D01* +X457650Y282052D01* +X457728Y282108D01* +X457809Y282162D01* +X457892Y282212D01* +X457976Y282258D01* +X458063Y282301D01* +X458151Y282341D01* +X458240Y282377D01* +X458331Y282410D01* +X458424Y282438D01* +X458517Y282463D01* +X458611Y282485D01* +X458706Y282502D01* +X458802Y282516D01* +X458898Y282525D01* +X458994Y282531D01* +X459091Y282533D01* +X459188Y282531D01* +X459284Y282525D01* +X459380Y282516D01* +X459476Y282502D01* +X459571Y282485D01* +X459665Y282463D01* +X459758Y282438D01* +X459851Y282410D01* +X459942Y282377D01* +X460031Y282341D01* +X460119Y282301D01* +X460206Y282258D01* +X460291Y282212D01* +X460373Y282162D01* +X460454Y282108D01* +X460532Y282052D01* +X460608Y281992D01* +X460682Y281930D01* +X460753Y281864D01* +X460821Y281796D01* +X460887Y281725D01* +X460949Y281651D01* +X461009Y281575D01* +X461065Y281497D01* +X461119Y281416D01* +X461169Y281334D01* +X461215Y281249D01* +X461258Y281162D01* +X461298Y281074D01* +X461334Y280985D01* +X461367Y280894D01* +X461395Y280801D01* +X461420Y280708D01* +X461442Y280614D01* +X461459Y280519D01* +X461473Y280423D01* +X461482Y280327D01* +X461488Y280231D01* +X461490Y280134D01* +X461490Y277735D01* +X461490Y280614D02* +X465328Y282533D01* +X457652Y286794D02* +X456692Y286794D01* +X456692Y291592D01* +X465328Y289193D01* +D13* +X406400Y302260D03* +D14* +X410718Y276211D02* +X402082Y276211D01* +X402082Y278610D01* +X402084Y278707D01* +X402090Y278803D01* +X402099Y278899D01* +X402113Y278995D01* +X402130Y279090D01* +X402152Y279184D01* +X402177Y279277D01* +X402205Y279370D01* +X402238Y279461D01* +X402274Y279550D01* +X402314Y279638D01* +X402357Y279725D01* +X402403Y279810D01* +X402453Y279892D01* +X402507Y279973D01* +X402563Y280051D01* +X402623Y280127D01* +X402685Y280201D01* +X402751Y280272D01* +X402819Y280340D01* +X402890Y280406D01* +X402964Y280468D01* +X403040Y280528D01* +X403118Y280584D01* +X403199Y280638D01* +X403282Y280688D01* +X403366Y280734D01* +X403453Y280777D01* +X403541Y280817D01* +X403630Y280853D01* +X403721Y280886D01* +X403814Y280914D01* +X403907Y280939D01* +X404001Y280961D01* +X404096Y280978D01* +X404192Y280992D01* +X404288Y281001D01* +X404384Y281007D01* +X404481Y281009D01* +X404578Y281007D01* +X404674Y281001D01* +X404770Y280992D01* +X404866Y280978D01* +X404961Y280961D01* +X405055Y280939D01* +X405148Y280914D01* +X405241Y280886D01* +X405332Y280853D01* +X405421Y280817D01* +X405509Y280777D01* +X405596Y280734D01* +X405681Y280688D01* +X405763Y280638D01* +X405844Y280584D01* +X405922Y280528D01* +X405998Y280468D01* +X406072Y280406D01* +X406143Y280340D01* +X406211Y280272D01* +X406277Y280201D01* +X406339Y280127D01* +X406399Y280051D01* +X406455Y279973D01* +X406509Y279892D01* +X406559Y279810D01* +X406605Y279725D01* +X406648Y279638D01* +X406688Y279550D01* +X406724Y279461D01* +X406757Y279370D01* +X406785Y279277D01* +X406810Y279184D01* +X406832Y279090D01* +X406849Y278995D01* +X406863Y278899D01* +X406872Y278803D01* +X406878Y278707D01* +X406880Y278610D01* +X406880Y276211D01* +X406880Y279090D02* +X410718Y281009D01* +X410718Y285270D02* +X410718Y287669D01* +X410716Y287766D01* +X410710Y287862D01* +X410701Y287958D01* +X410687Y288054D01* +X410670Y288149D01* +X410648Y288243D01* +X410623Y288336D01* +X410595Y288429D01* +X410562Y288520D01* +X410526Y288609D01* +X410486Y288697D01* +X410443Y288784D01* +X410397Y288869D01* +X410347Y288951D01* +X410293Y289032D01* +X410237Y289110D01* +X410177Y289186D01* +X410115Y289260D01* +X410049Y289331D01* +X409981Y289399D01* +X409910Y289465D01* +X409836Y289527D01* +X409760Y289587D01* +X409682Y289643D01* +X409601Y289697D01* +X409519Y289747D01* +X409434Y289793D01* +X409347Y289836D01* +X409259Y289876D01* +X409170Y289912D01* +X409079Y289945D01* +X408986Y289973D01* +X408893Y289998D01* +X408799Y290020D01* +X408704Y290037D01* +X408608Y290051D01* +X408512Y290060D01* +X408416Y290066D01* +X408319Y290068D01* +X408222Y290066D01* +X408126Y290060D01* +X408030Y290051D01* +X407934Y290037D01* +X407839Y290020D01* +X407745Y289998D01* +X407652Y289973D01* +X407559Y289945D01* +X407468Y289912D01* +X407379Y289876D01* +X407291Y289836D01* +X407204Y289793D01* +X407120Y289747D01* +X407037Y289697D01* +X406956Y289643D01* +X406878Y289587D01* +X406802Y289527D01* +X406728Y289465D01* +X406657Y289399D01* +X406589Y289331D01* +X406523Y289260D01* +X406461Y289186D01* +X406401Y289110D01* +X406345Y289032D01* +X406291Y288951D01* +X406241Y288869D01* +X406195Y288784D01* +X406152Y288697D01* +X406112Y288609D01* +X406076Y288520D01* +X406043Y288429D01* +X406015Y288336D01* +X405990Y288243D01* +X405968Y288149D01* +X405951Y288054D01* +X405937Y287958D01* +X405928Y287862D01* +X405922Y287766D01* +X405920Y287669D01* +X402082Y288149D02* +X402082Y285270D01* +X402082Y288149D02* +X402084Y288235D01* +X402090Y288321D01* +X402099Y288407D01* +X402113Y288492D01* +X402130Y288576D01* +X402151Y288660D01* +X402176Y288742D01* +X402204Y288823D01* +X402236Y288903D01* +X402272Y288982D01* +X402311Y289058D01* +X402354Y289133D01* +X402399Y289206D01* +X402448Y289277D01* +X402501Y289345D01* +X402556Y289412D01* +X402614Y289475D01* +X402675Y289536D01* +X402738Y289594D01* +X402805Y289649D01* +X402873Y289702D01* +X402944Y289751D01* +X403017Y289796D01* +X403092Y289839D01* +X403168Y289878D01* +X403247Y289914D01* +X403327Y289946D01* +X403408Y289974D01* +X403490Y289999D01* +X403574Y290020D01* +X403658Y290037D01* +X403743Y290051D01* +X403829Y290060D01* +X403915Y290066D01* +X404001Y290068D01* +X404087Y290066D01* +X404173Y290060D01* +X404259Y290051D01* +X404344Y290037D01* +X404428Y290020D01* +X404512Y289999D01* +X404594Y289974D01* +X404675Y289946D01* +X404755Y289914D01* +X404834Y289878D01* +X404910Y289839D01* +X404985Y289796D01* +X405058Y289751D01* +X405129Y289702D01* +X405197Y289649D01* +X405264Y289594D01* +X405327Y289536D01* +X405388Y289475D01* +X405446Y289412D01* +X405501Y289345D01* +X405554Y289277D01* +X405603Y289206D01* +X405648Y289133D01* +X405691Y289058D01* +X405730Y288982D01* +X405766Y288903D01* +X405798Y288823D01* +X405826Y288742D01* +X405851Y288660D01* +X405872Y288576D01* +X405889Y288492D01* +X405903Y288407D01* +X405912Y288321D01* +X405918Y288235D01* +X405920Y288149D01* +X405920Y286230D01* +D13* +X393700Y302260D03* +D14* +X392938Y276211D02* +X384302Y276211D01* +X384302Y278610D01* +X384304Y278707D01* +X384310Y278803D01* +X384319Y278899D01* +X384333Y278995D01* +X384350Y279090D01* +X384372Y279184D01* +X384397Y279277D01* +X384425Y279370D01* +X384458Y279461D01* +X384494Y279550D01* +X384534Y279638D01* +X384577Y279725D01* +X384623Y279810D01* +X384673Y279892D01* +X384727Y279973D01* +X384783Y280051D01* +X384843Y280127D01* +X384905Y280201D01* +X384971Y280272D01* +X385039Y280340D01* +X385110Y280406D01* +X385184Y280468D01* +X385260Y280528D01* +X385338Y280584D01* +X385419Y280638D01* +X385502Y280688D01* +X385586Y280734D01* +X385673Y280777D01* +X385761Y280817D01* +X385850Y280853D01* +X385941Y280886D01* +X386034Y280914D01* +X386127Y280939D01* +X386221Y280961D01* +X386316Y280978D01* +X386412Y280992D01* +X386508Y281001D01* +X386604Y281007D01* +X386701Y281009D01* +X386798Y281007D01* +X386894Y281001D01* +X386990Y280992D01* +X387086Y280978D01* +X387181Y280961D01* +X387275Y280939D01* +X387368Y280914D01* +X387461Y280886D01* +X387552Y280853D01* +X387641Y280817D01* +X387729Y280777D01* +X387816Y280734D01* +X387901Y280688D01* +X387983Y280638D01* +X388064Y280584D01* +X388142Y280528D01* +X388218Y280468D01* +X388292Y280406D01* +X388363Y280340D01* +X388431Y280272D01* +X388497Y280201D01* +X388559Y280127D01* +X388619Y280051D01* +X388675Y279973D01* +X388729Y279892D01* +X388779Y279810D01* +X388825Y279725D01* +X388868Y279638D01* +X388908Y279550D01* +X388944Y279461D01* +X388977Y279370D01* +X389005Y279277D01* +X389030Y279184D01* +X389052Y279090D01* +X389069Y278995D01* +X389083Y278899D01* +X389092Y278803D01* +X389098Y278707D01* +X389100Y278610D01* +X389100Y276211D01* +X389100Y279090D02* +X392938Y281009D01* +X388140Y285270D02* +X388140Y288149D01* +X388142Y288235D01* +X388148Y288321D01* +X388157Y288407D01* +X388171Y288492D01* +X388188Y288576D01* +X388209Y288660D01* +X388234Y288742D01* +X388262Y288823D01* +X388294Y288903D01* +X388330Y288982D01* +X388369Y289058D01* +X388412Y289133D01* +X388457Y289206D01* +X388507Y289277D01* +X388559Y289345D01* +X388614Y289412D01* +X388672Y289475D01* +X388733Y289536D01* +X388796Y289594D01* +X388863Y289649D01* +X388931Y289702D01* +X389002Y289751D01* +X389075Y289796D01* +X389150Y289839D01* +X389226Y289878D01* +X389305Y289914D01* +X389385Y289946D01* +X389466Y289974D01* +X389549Y289999D01* +X389632Y290020D01* +X389716Y290037D01* +X389801Y290051D01* +X389887Y290060D01* +X389973Y290066D01* +X390059Y290068D01* +X390539Y290068D01* +X390636Y290066D01* +X390732Y290060D01* +X390828Y290051D01* +X390924Y290037D01* +X391019Y290020D01* +X391113Y289998D01* +X391206Y289973D01* +X391299Y289945D01* +X391390Y289912D01* +X391479Y289876D01* +X391567Y289836D01* +X391654Y289793D01* +X391739Y289747D01* +X391821Y289697D01* +X391902Y289643D01* +X391980Y289587D01* +X392056Y289527D01* +X392130Y289465D01* +X392201Y289399D01* +X392269Y289331D01* +X392335Y289260D01* +X392397Y289186D01* +X392457Y289110D01* +X392513Y289032D01* +X392567Y288951D01* +X392617Y288869D01* +X392663Y288784D01* +X392706Y288697D01* +X392746Y288609D01* +X392782Y288520D01* +X392815Y288429D01* +X392843Y288336D01* +X392868Y288243D01* +X392890Y288149D01* +X392907Y288054D01* +X392921Y287958D01* +X392930Y287862D01* +X392936Y287766D01* +X392938Y287669D01* +X392936Y287572D01* +X392930Y287476D01* +X392921Y287380D01* +X392907Y287284D01* +X392890Y287189D01* +X392868Y287095D01* +X392843Y287002D01* +X392815Y286909D01* +X392782Y286818D01* +X392746Y286729D01* +X392706Y286641D01* +X392663Y286554D01* +X392617Y286470D01* +X392567Y286387D01* +X392513Y286306D01* +X392457Y286228D01* +X392397Y286152D01* +X392335Y286078D01* +X392269Y286007D01* +X392201Y285939D01* +X392130Y285873D01* +X392056Y285811D01* +X391980Y285751D01* +X391902Y285695D01* +X391821Y285641D01* +X391739Y285591D01* +X391654Y285545D01* +X391567Y285502D01* +X391479Y285462D01* +X391390Y285426D01* +X391299Y285393D01* +X391206Y285365D01* +X391113Y285340D01* +X391019Y285318D01* +X390924Y285301D01* +X390828Y285287D01* +X390732Y285278D01* +X390636Y285272D01* +X390539Y285270D01* +X388140Y285270D01* +X388140Y285271D02* +X388017Y285273D01* +X387894Y285279D01* +X387771Y285289D01* +X387649Y285303D01* +X387527Y285320D01* +X387406Y285342D01* +X387286Y285367D01* +X387166Y285397D01* +X387048Y285430D01* +X386931Y285467D01* +X386814Y285507D01* +X386700Y285551D01* +X386586Y285599D01* +X386475Y285651D01* +X386365Y285706D01* +X386257Y285765D01* +X386150Y285827D01* +X386046Y285892D01* +X385944Y285961D01* +X385844Y286033D01* +X385747Y286108D01* +X385652Y286187D01* +X385560Y286268D01* +X385470Y286352D01* +X385383Y286439D01* +X385299Y286529D01* +X385218Y286621D01* +X385139Y286716D01* +X385064Y286813D01* +X384992Y286913D01* +X384923Y287015D01* +X384858Y287119D01* +X384796Y287226D01* +X384737Y287334D01* +X384682Y287444D01* +X384630Y287555D01* +X384583Y287669D01* +X384538Y287783D01* +X384498Y287900D01* +X384461Y288017D01* +X384428Y288135D01* +X384398Y288255D01* +X384373Y288375D01* +X384351Y288496D01* +X384334Y288618D01* +X384320Y288740D01* +X384310Y288863D01* +X384304Y288986D01* +X384302Y289109D01* +D13* +X1211580Y104140D03* +D14* +X1218438Y97395D02* +X1227074Y97395D01* +X1218438Y97395D02* +X1218438Y99794D01* +X1218440Y99891D01* +X1218446Y99987D01* +X1218455Y100083D01* +X1218469Y100179D01* +X1218486Y100274D01* +X1218508Y100368D01* +X1218533Y100461D01* +X1218561Y100554D01* +X1218594Y100645D01* +X1218630Y100734D01* +X1218670Y100822D01* +X1218713Y100909D01* +X1218759Y100994D01* +X1218809Y101076D01* +X1218863Y101157D01* +X1218919Y101235D01* +X1218979Y101311D01* +X1219041Y101385D01* +X1219107Y101456D01* +X1219175Y101524D01* +X1219246Y101590D01* +X1219320Y101652D01* +X1219396Y101712D01* +X1219474Y101768D01* +X1219555Y101822D01* +X1219638Y101872D01* +X1219722Y101918D01* +X1219809Y101961D01* +X1219897Y102001D01* +X1219986Y102037D01* +X1220077Y102070D01* +X1220170Y102098D01* +X1220263Y102123D01* +X1220357Y102145D01* +X1220452Y102162D01* +X1220548Y102176D01* +X1220644Y102185D01* +X1220740Y102191D01* +X1220837Y102193D01* +X1220934Y102191D01* +X1221030Y102185D01* +X1221126Y102176D01* +X1221222Y102162D01* +X1221317Y102145D01* +X1221411Y102123D01* +X1221504Y102098D01* +X1221597Y102070D01* +X1221688Y102037D01* +X1221777Y102001D01* +X1221865Y101961D01* +X1221952Y101918D01* +X1222037Y101872D01* +X1222119Y101822D01* +X1222200Y101768D01* +X1222278Y101712D01* +X1222354Y101652D01* +X1222428Y101590D01* +X1222499Y101524D01* +X1222567Y101456D01* +X1222633Y101385D01* +X1222695Y101311D01* +X1222755Y101235D01* +X1222811Y101157D01* +X1222865Y101076D01* +X1222915Y100994D01* +X1222961Y100909D01* +X1223004Y100822D01* +X1223044Y100734D01* +X1223080Y100645D01* +X1223113Y100554D01* +X1223141Y100461D01* +X1223166Y100368D01* +X1223188Y100274D01* +X1223205Y100179D01* +X1223219Y100083D01* +X1223228Y99987D01* +X1223234Y99891D01* +X1223236Y99794D01* +X1223236Y97395D01* +X1223236Y100274D02* +X1227074Y102193D01* +X1223236Y108373D02* +X1223236Y111252D01* +X1223236Y108373D02* +X1223234Y108287D01* +X1223228Y108201D01* +X1223219Y108115D01* +X1223205Y108030D01* +X1223188Y107946D01* +X1223167Y107862D01* +X1223142Y107780D01* +X1223114Y107699D01* +X1223082Y107619D01* +X1223046Y107540D01* +X1223007Y107464D01* +X1222964Y107389D01* +X1222919Y107316D01* +X1222870Y107245D01* +X1222817Y107177D01* +X1222762Y107110D01* +X1222704Y107047D01* +X1222643Y106986D01* +X1222580Y106928D01* +X1222513Y106873D01* +X1222445Y106821D01* +X1222374Y106771D01* +X1222301Y106726D01* +X1222226Y106683D01* +X1222150Y106644D01* +X1222071Y106608D01* +X1221991Y106576D01* +X1221910Y106548D01* +X1221828Y106523D01* +X1221744Y106502D01* +X1221660Y106485D01* +X1221575Y106471D01* +X1221489Y106462D01* +X1221403Y106456D01* +X1221317Y106454D01* +X1220837Y106454D01* +X1220740Y106456D01* +X1220644Y106462D01* +X1220548Y106471D01* +X1220452Y106485D01* +X1220357Y106502D01* +X1220263Y106524D01* +X1220170Y106549D01* +X1220077Y106577D01* +X1219986Y106610D01* +X1219897Y106646D01* +X1219809Y106686D01* +X1219722Y106729D01* +X1219638Y106775D01* +X1219555Y106825D01* +X1219474Y106879D01* +X1219396Y106935D01* +X1219320Y106995D01* +X1219246Y107057D01* +X1219175Y107123D01* +X1219107Y107191D01* +X1219041Y107262D01* +X1218979Y107336D01* +X1218919Y107412D01* +X1218863Y107490D01* +X1218809Y107571D01* +X1218759Y107654D01* +X1218713Y107738D01* +X1218670Y107825D01* +X1218630Y107913D01* +X1218594Y108002D01* +X1218561Y108093D01* +X1218533Y108186D01* +X1218508Y108279D01* +X1218486Y108373D01* +X1218469Y108468D01* +X1218455Y108564D01* +X1218446Y108660D01* +X1218440Y108756D01* +X1218438Y108853D01* +X1218440Y108950D01* +X1218446Y109046D01* +X1218455Y109142D01* +X1218469Y109238D01* +X1218486Y109333D01* +X1218508Y109427D01* +X1218533Y109520D01* +X1218561Y109613D01* +X1218594Y109704D01* +X1218630Y109793D01* +X1218670Y109881D01* +X1218713Y109968D01* +X1218759Y110053D01* +X1218809Y110135D01* +X1218863Y110216D01* +X1218919Y110294D01* +X1218979Y110370D01* +X1219041Y110444D01* +X1219107Y110515D01* +X1219175Y110583D01* +X1219246Y110649D01* +X1219320Y110711D01* +X1219396Y110771D01* +X1219474Y110827D01* +X1219555Y110881D01* +X1219638Y110931D01* +X1219722Y110977D01* +X1219809Y111020D01* +X1219897Y111060D01* +X1219986Y111096D01* +X1220077Y111129D01* +X1220170Y111157D01* +X1220263Y111182D01* +X1220357Y111204D01* +X1220452Y111221D01* +X1220548Y111235D01* +X1220644Y111244D01* +X1220740Y111250D01* +X1220837Y111252D01* +X1223236Y111252D01* +X1223359Y111250D01* +X1223482Y111244D01* +X1223605Y111234D01* +X1223727Y111220D01* +X1223849Y111203D01* +X1223970Y111181D01* +X1224090Y111156D01* +X1224210Y111126D01* +X1224328Y111093D01* +X1224445Y111056D01* +X1224562Y111016D01* +X1224676Y110972D01* +X1224790Y110924D01* +X1224901Y110872D01* +X1225011Y110817D01* +X1225119Y110758D01* +X1225226Y110696D01* +X1225330Y110631D01* +X1225432Y110562D01* +X1225532Y110490D01* +X1225629Y110415D01* +X1225724Y110336D01* +X1225816Y110255D01* +X1225906Y110171D01* +X1225993Y110084D01* +X1226077Y109994D01* +X1226158Y109902D01* +X1226237Y109807D01* +X1226312Y109710D01* +X1226384Y109610D01* +X1226453Y109508D01* +X1226518Y109404D01* +X1226580Y109297D01* +X1226639Y109189D01* +X1226694Y109079D01* +X1226746Y108968D01* +X1226794Y108854D01* +X1226838Y108740D01* +X1226878Y108623D01* +X1226915Y108506D01* +X1226948Y108388D01* +X1226978Y108268D01* +X1227003Y108148D01* +X1227025Y108027D01* +X1227042Y107905D01* +X1227056Y107783D01* +X1227066Y107660D01* +X1227072Y107537D01* +X1227074Y107414D01* +D17* +X744220Y160020D03* +D14* +X756666Y155702D02* +X756666Y164338D01* +X759065Y164338D01* +X759162Y164336D01* +X759258Y164330D01* +X759354Y164321D01* +X759450Y164307D01* +X759545Y164290D01* +X759639Y164268D01* +X759732Y164243D01* +X759825Y164215D01* +X759916Y164182D01* +X760005Y164146D01* +X760093Y164106D01* +X760180Y164063D01* +X760265Y164017D01* +X760347Y163967D01* +X760428Y163913D01* +X760506Y163857D01* +X760582Y163797D01* +X760656Y163735D01* +X760727Y163669D01* +X760795Y163601D01* +X760861Y163530D01* +X760923Y163456D01* +X760983Y163380D01* +X761039Y163302D01* +X761093Y163221D01* +X761143Y163138D01* +X761189Y163054D01* +X761232Y162967D01* +X761272Y162879D01* +X761308Y162790D01* +X761341Y162699D01* +X761369Y162606D01* +X761394Y162513D01* +X761416Y162419D01* +X761433Y162324D01* +X761447Y162228D01* +X761456Y162132D01* +X761462Y162036D01* +X761464Y161939D01* +X761462Y161842D01* +X761456Y161746D01* +X761447Y161650D01* +X761433Y161554D01* +X761416Y161459D01* +X761394Y161365D01* +X761369Y161272D01* +X761341Y161179D01* +X761308Y161088D01* +X761272Y160999D01* +X761232Y160911D01* +X761189Y160824D01* +X761143Y160740D01* +X761093Y160657D01* +X761039Y160576D01* +X760983Y160498D01* +X760923Y160422D01* +X760861Y160348D01* +X760795Y160277D01* +X760727Y160209D01* +X760656Y160143D01* +X760582Y160081D01* +X760506Y160021D01* +X760428Y159965D01* +X760347Y159911D01* +X760265Y159861D01* +X760180Y159815D01* +X760093Y159772D01* +X760005Y159732D01* +X759916Y159696D01* +X759825Y159663D01* +X759732Y159635D01* +X759639Y159610D01* +X759545Y159588D01* +X759450Y159571D01* +X759354Y159557D01* +X759258Y159548D01* +X759162Y159542D01* +X759065Y159540D01* +X756666Y159540D01* +X759545Y159540D02* +X761464Y155702D01* +X765725Y162419D02* +X768124Y164338D01* +X768124Y155702D01* +X765725Y155702D02* +X770523Y155702D01* +X774869Y163378D02* +X774869Y164338D01* +X779667Y164338D01* +X777268Y155702D01* +D17* +X718820Y160020D03* +D14* +X729742Y115824D02* +X729742Y107188D01* +X729742Y115824D02* +X732141Y115824D01* +X732238Y115822D01* +X732334Y115816D01* +X732430Y115807D01* +X732526Y115793D01* +X732621Y115776D01* +X732715Y115754D01* +X732808Y115729D01* +X732901Y115701D01* +X732992Y115668D01* +X733081Y115632D01* +X733169Y115592D01* +X733256Y115549D01* +X733341Y115503D01* +X733423Y115453D01* +X733504Y115399D01* +X733582Y115343D01* +X733658Y115283D01* +X733732Y115221D01* +X733803Y115155D01* +X733871Y115087D01* +X733937Y115016D01* +X733999Y114942D01* +X734059Y114866D01* +X734115Y114788D01* +X734169Y114707D01* +X734219Y114624D01* +X734265Y114540D01* +X734308Y114453D01* +X734348Y114365D01* +X734384Y114276D01* +X734417Y114185D01* +X734445Y114092D01* +X734470Y113999D01* +X734492Y113905D01* +X734509Y113810D01* +X734523Y113714D01* +X734532Y113618D01* +X734538Y113522D01* +X734540Y113425D01* +X734538Y113328D01* +X734532Y113232D01* +X734523Y113136D01* +X734509Y113040D01* +X734492Y112945D01* +X734470Y112851D01* +X734445Y112758D01* +X734417Y112665D01* +X734384Y112574D01* +X734348Y112485D01* +X734308Y112397D01* +X734265Y112310D01* +X734219Y112225D01* +X734169Y112143D01* +X734115Y112062D01* +X734059Y111984D01* +X733999Y111908D01* +X733937Y111834D01* +X733871Y111763D01* +X733803Y111695D01* +X733732Y111629D01* +X733658Y111567D01* +X733582Y111507D01* +X733504Y111451D01* +X733423Y111397D01* +X733341Y111347D01* +X733256Y111301D01* +X733169Y111258D01* +X733081Y111218D01* +X732992Y111182D01* +X732901Y111149D01* +X732808Y111121D01* +X732715Y111096D01* +X732621Y111074D01* +X732526Y111057D01* +X732430Y111043D01* +X732334Y111034D01* +X732238Y111028D01* +X732141Y111026D01* +X729742Y111026D01* +X732621Y111026D02* +X734540Y107188D01* +X738801Y113905D02* +X741200Y115824D01* +X741200Y107188D01* +X738801Y107188D02* +X743599Y107188D01* +X747945Y109587D02* +X747947Y109684D01* +X747953Y109780D01* +X747962Y109876D01* +X747976Y109972D01* +X747993Y110067D01* +X748015Y110161D01* +X748040Y110254D01* +X748068Y110347D01* +X748101Y110438D01* +X748137Y110527D01* +X748177Y110615D01* +X748220Y110702D01* +X748266Y110787D01* +X748316Y110869D01* +X748370Y110950D01* +X748426Y111028D01* +X748486Y111104D01* +X748548Y111178D01* +X748614Y111249D01* +X748682Y111317D01* +X748753Y111383D01* +X748827Y111445D01* +X748903Y111505D01* +X748981Y111561D01* +X749062Y111615D01* +X749145Y111665D01* +X749229Y111711D01* +X749316Y111754D01* +X749404Y111794D01* +X749493Y111830D01* +X749584Y111863D01* +X749677Y111891D01* +X749770Y111916D01* +X749864Y111938D01* +X749959Y111955D01* +X750055Y111969D01* +X750151Y111978D01* +X750247Y111984D01* +X750344Y111986D01* +X750441Y111984D01* +X750537Y111978D01* +X750633Y111969D01* +X750729Y111955D01* +X750824Y111938D01* +X750918Y111916D01* +X751011Y111891D01* +X751104Y111863D01* +X751195Y111830D01* +X751284Y111794D01* +X751372Y111754D01* +X751459Y111711D01* +X751544Y111665D01* +X751626Y111615D01* +X751707Y111561D01* +X751785Y111505D01* +X751861Y111445D01* +X751935Y111383D01* +X752006Y111317D01* +X752074Y111249D01* +X752140Y111178D01* +X752202Y111104D01* +X752262Y111028D01* +X752318Y110950D01* +X752372Y110869D01* +X752422Y110787D01* +X752468Y110702D01* +X752511Y110615D01* +X752551Y110527D01* +X752587Y110438D01* +X752620Y110347D01* +X752648Y110254D01* +X752673Y110161D01* +X752695Y110067D01* +X752712Y109972D01* +X752726Y109876D01* +X752735Y109780D01* +X752741Y109684D01* +X752743Y109587D01* +X752741Y109490D01* +X752735Y109394D01* +X752726Y109298D01* +X752712Y109202D01* +X752695Y109107D01* +X752673Y109013D01* +X752648Y108920D01* +X752620Y108827D01* +X752587Y108736D01* +X752551Y108647D01* +X752511Y108559D01* +X752468Y108472D01* +X752422Y108387D01* +X752372Y108305D01* +X752318Y108224D01* +X752262Y108146D01* +X752202Y108070D01* +X752140Y107996D01* +X752074Y107925D01* +X752006Y107857D01* +X751935Y107791D01* +X751861Y107729D01* +X751785Y107669D01* +X751707Y107613D01* +X751626Y107559D01* +X751544Y107509D01* +X751459Y107463D01* +X751372Y107420D01* +X751284Y107380D01* +X751195Y107344D01* +X751104Y107311D01* +X751011Y107283D01* +X750918Y107258D01* +X750824Y107236D01* +X750729Y107219D01* +X750633Y107205D01* +X750537Y107196D01* +X750441Y107190D01* +X750344Y107188D01* +X750247Y107190D01* +X750151Y107196D01* +X750055Y107205D01* +X749959Y107219D01* +X749864Y107236D01* +X749770Y107258D01* +X749677Y107283D01* +X749584Y107311D01* +X749493Y107344D01* +X749404Y107380D01* +X749316Y107420D01* +X749229Y107463D01* +X749145Y107509D01* +X749062Y107559D01* +X748981Y107613D01* +X748903Y107669D01* +X748827Y107729D01* +X748753Y107791D01* +X748682Y107857D01* +X748614Y107925D01* +X748548Y107996D01* +X748486Y108070D01* +X748426Y108146D01* +X748370Y108224D01* +X748316Y108305D01* +X748266Y108388D01* +X748220Y108472D01* +X748177Y108559D01* +X748137Y108647D01* +X748101Y108736D01* +X748068Y108827D01* +X748040Y108920D01* +X748015Y109013D01* +X747993Y109107D01* +X747976Y109202D01* +X747962Y109298D01* +X747953Y109394D01* +X747947Y109490D01* +X747945Y109587D01* +X748425Y113905D02* +X748427Y113991D01* +X748433Y114077D01* +X748442Y114163D01* +X748456Y114248D01* +X748473Y114332D01* +X748494Y114416D01* +X748519Y114498D01* +X748547Y114579D01* +X748579Y114659D01* +X748615Y114738D01* +X748654Y114814D01* +X748697Y114889D01* +X748742Y114962D01* +X748791Y115033D01* +X748844Y115101D01* +X748899Y115168D01* +X748957Y115231D01* +X749018Y115292D01* +X749081Y115350D01* +X749148Y115405D01* +X749216Y115458D01* +X749287Y115507D01* +X749360Y115552D01* +X749435Y115595D01* +X749511Y115634D01* +X749590Y115670D01* +X749670Y115702D01* +X749751Y115730D01* +X749833Y115755D01* +X749917Y115776D01* +X750001Y115793D01* +X750086Y115807D01* +X750172Y115816D01* +X750258Y115822D01* +X750344Y115824D01* +X750430Y115822D01* +X750516Y115816D01* +X750602Y115807D01* +X750687Y115793D01* +X750771Y115776D01* +X750855Y115755D01* +X750937Y115730D01* +X751018Y115702D01* +X751098Y115670D01* +X751177Y115634D01* +X751253Y115595D01* +X751328Y115552D01* +X751401Y115507D01* +X751472Y115458D01* +X751540Y115405D01* +X751607Y115350D01* +X751670Y115292D01* +X751731Y115231D01* +X751789Y115168D01* +X751844Y115101D01* +X751897Y115033D01* +X751946Y114962D01* +X751991Y114889D01* +X752034Y114814D01* +X752073Y114738D01* +X752109Y114659D01* +X752141Y114579D01* +X752169Y114498D01* +X752194Y114416D01* +X752215Y114332D01* +X752232Y114248D01* +X752246Y114163D01* +X752255Y114077D01* +X752261Y113991D01* +X752263Y113905D01* +X752261Y113819D01* +X752255Y113733D01* +X752246Y113647D01* +X752232Y113562D01* +X752215Y113478D01* +X752194Y113394D01* +X752169Y113312D01* +X752141Y113231D01* +X752109Y113151D01* +X752073Y113072D01* +X752034Y112996D01* +X751991Y112921D01* +X751946Y112848D01* +X751897Y112777D01* +X751844Y112709D01* +X751789Y112642D01* +X751731Y112579D01* +X751670Y112518D01* +X751607Y112460D01* +X751540Y112405D01* +X751472Y112352D01* +X751401Y112303D01* +X751328Y112258D01* +X751253Y112215D01* +X751177Y112176D01* +X751098Y112140D01* +X751018Y112108D01* +X750937Y112080D01* +X750855Y112055D01* +X750771Y112034D01* +X750687Y112017D01* +X750602Y112003D01* +X750516Y111994D01* +X750430Y111988D01* +X750344Y111986D01* +X750258Y111988D01* +X750172Y111994D01* +X750086Y112003D01* +X750001Y112017D01* +X749917Y112034D01* +X749833Y112055D01* +X749751Y112080D01* +X749670Y112108D01* +X749590Y112140D01* +X749511Y112176D01* +X749435Y112215D01* +X749360Y112258D01* +X749287Y112303D01* +X749216Y112352D01* +X749148Y112405D01* +X749081Y112460D01* +X749018Y112518D01* +X748957Y112579D01* +X748899Y112642D01* +X748844Y112709D01* +X748791Y112777D01* +X748742Y112848D01* +X748697Y112921D01* +X748654Y112996D01* +X748615Y113072D01* +X748579Y113151D01* +X748547Y113231D01* +X748519Y113312D01* +X748494Y113394D01* +X748473Y113478D01* +X748456Y113562D01* +X748442Y113647D01* +X748433Y113733D01* +X748427Y113819D01* +X748425Y113905D01* +D18* +X444500Y259080D03* +D14* +X408196Y255778D02* +X406277Y255778D01* +X406191Y255780D01* +X406105Y255786D01* +X406019Y255795D01* +X405934Y255809D01* +X405850Y255826D01* +X405766Y255847D01* +X405684Y255872D01* +X405603Y255900D01* +X405523Y255932D01* +X405444Y255968D01* +X405368Y256007D01* +X405293Y256050D01* +X405220Y256095D01* +X405149Y256144D01* +X405081Y256197D01* +X405014Y256252D01* +X404951Y256310D01* +X404890Y256371D01* +X404832Y256434D01* +X404777Y256501D01* +X404724Y256569D01* +X404675Y256640D01* +X404630Y256713D01* +X404587Y256788D01* +X404548Y256864D01* +X404512Y256943D01* +X404480Y257023D01* +X404452Y257104D01* +X404427Y257186D01* +X404406Y257270D01* +X404389Y257354D01* +X404375Y257439D01* +X404366Y257525D01* +X404360Y257611D01* +X404358Y257697D01* +X404358Y262495D01* +X404360Y262581D01* +X404366Y262667D01* +X404375Y262753D01* +X404389Y262838D01* +X404406Y262922D01* +X404427Y263006D01* +X404452Y263088D01* +X404480Y263169D01* +X404512Y263249D01* +X404548Y263328D01* +X404587Y263404D01* +X404630Y263479D01* +X404675Y263552D01* +X404724Y263623D01* +X404777Y263691D01* +X404832Y263758D01* +X404890Y263821D01* +X404951Y263882D01* +X405014Y263940D01* +X405081Y263995D01* +X405149Y264047D01* +X405220Y264097D01* +X405293Y264142D01* +X405368Y264185D01* +X405444Y264224D01* +X405523Y264260D01* +X405603Y264292D01* +X405684Y264320D01* +X405766Y264345D01* +X405850Y264366D01* +X405934Y264383D01* +X406019Y264397D01* +X406105Y264406D01* +X406191Y264412D01* +X406277Y264414D01* +X408196Y264414D01* +X414655Y264414D02* +X414747Y264412D01* +X414838Y264406D01* +X414929Y264397D01* +X415020Y264383D01* +X415110Y264366D01* +X415199Y264344D01* +X415287Y264319D01* +X415374Y264291D01* +X415460Y264258D01* +X415544Y264222D01* +X415627Y264183D01* +X415708Y264140D01* +X415787Y264093D01* +X415864Y264044D01* +X415939Y263991D01* +X416011Y263935D01* +X416081Y263876D01* +X416149Y263814D01* +X416214Y263749D01* +X416276Y263681D01* +X416335Y263611D01* +X416391Y263539D01* +X416444Y263464D01* +X416493Y263387D01* +X416540Y263308D01* +X416583Y263227D01* +X416622Y263144D01* +X416658Y263060D01* +X416691Y262974D01* +X416719Y262887D01* +X416744Y262799D01* +X416766Y262710D01* +X416783Y262620D01* +X416797Y262529D01* +X416806Y262438D01* +X416812Y262347D01* +X416814Y262255D01* +X414655Y264414D02* +X414552Y264412D01* +X414450Y264406D01* +X414348Y264397D01* +X414246Y264384D01* +X414145Y264367D01* +X414044Y264346D01* +X413945Y264322D01* +X413846Y264293D01* +X413749Y264262D01* +X413652Y264226D01* +X413557Y264188D01* +X413464Y264145D01* +X413372Y264099D01* +X413282Y264050D01* +X413194Y263998D01* +X413107Y263942D01* +X413023Y263883D01* +X412942Y263822D01* +X412862Y263757D01* +X412785Y263689D01* +X412710Y263618D01* +X412639Y263545D01* +X412570Y263469D01* +X412503Y263391D01* +X412440Y263310D01* +X412380Y263227D01* +X412323Y263142D01* +X412269Y263055D01* +X412218Y262965D01* +X412171Y262874D01* +X412127Y262782D01* +X412086Y262687D01* +X412049Y262592D01* +X412016Y262495D01* +X416094Y260576D02* +X416161Y260642D01* +X416225Y260711D01* +X416286Y260782D01* +X416344Y260856D01* +X416399Y260932D01* +X416451Y261010D01* +X416500Y261090D01* +X416546Y261172D01* +X416588Y261256D01* +X416627Y261342D01* +X416662Y261429D01* +X416693Y261517D01* +X416721Y261607D01* +X416746Y261697D01* +X416767Y261789D01* +X416784Y261881D01* +X416797Y261974D01* +X416806Y262067D01* +X416812Y262161D01* +X416814Y262255D01* +X416094Y260576D02* +X412016Y255778D01* +X416814Y255778D01* +X421160Y255778D02* +X423559Y255778D01* +X423656Y255780D01* +X423752Y255786D01* +X423848Y255795D01* +X423944Y255809D01* +X424039Y255826D01* +X424133Y255848D01* +X424226Y255873D01* +X424319Y255901D01* +X424410Y255934D01* +X424499Y255970D01* +X424587Y256010D01* +X424674Y256053D01* +X424759Y256099D01* +X424841Y256149D01* +X424922Y256203D01* +X425000Y256259D01* +X425076Y256319D01* +X425150Y256381D01* +X425221Y256447D01* +X425289Y256515D01* +X425355Y256586D01* +X425417Y256660D01* +X425477Y256736D01* +X425533Y256814D01* +X425587Y256895D01* +X425637Y256978D01* +X425683Y257062D01* +X425726Y257149D01* +X425766Y257237D01* +X425802Y257326D01* +X425835Y257417D01* +X425863Y257510D01* +X425888Y257603D01* +X425910Y257697D01* +X425927Y257792D01* +X425941Y257888D01* +X425950Y257984D01* +X425956Y258080D01* +X425958Y258177D01* +X425956Y258274D01* +X425950Y258370D01* +X425941Y258466D01* +X425927Y258562D01* +X425910Y258657D01* +X425888Y258751D01* +X425863Y258844D01* +X425835Y258937D01* +X425802Y259028D01* +X425766Y259117D01* +X425726Y259205D01* +X425683Y259292D01* +X425637Y259376D01* +X425587Y259459D01* +X425533Y259540D01* +X425477Y259618D01* +X425417Y259694D01* +X425355Y259768D01* +X425289Y259839D01* +X425221Y259907D01* +X425150Y259973D01* +X425076Y260035D01* +X425000Y260095D01* +X424922Y260151D01* +X424841Y260205D01* +X424759Y260255D01* +X424674Y260301D01* +X424587Y260344D01* +X424499Y260384D01* +X424410Y260420D01* +X424319Y260453D01* +X424226Y260481D01* +X424133Y260506D01* +X424039Y260528D01* +X423944Y260545D01* +X423848Y260559D01* +X423752Y260568D01* +X423656Y260574D01* +X423559Y260576D01* +X424039Y264414D02* +X421160Y264414D01* +X424039Y264414D02* +X424125Y264412D01* +X424211Y264406D01* +X424297Y264397D01* +X424382Y264383D01* +X424466Y264366D01* +X424550Y264345D01* +X424632Y264320D01* +X424713Y264292D01* +X424793Y264260D01* +X424872Y264224D01* +X424948Y264185D01* +X425023Y264142D01* +X425096Y264097D01* +X425167Y264048D01* +X425235Y263995D01* +X425302Y263940D01* +X425365Y263882D01* +X425426Y263821D01* +X425484Y263758D01* +X425539Y263691D01* +X425592Y263623D01* +X425641Y263552D01* +X425686Y263479D01* +X425729Y263404D01* +X425768Y263328D01* +X425804Y263249D01* +X425836Y263169D01* +X425864Y263088D01* +X425889Y263006D01* +X425910Y262922D01* +X425927Y262838D01* +X425941Y262753D01* +X425950Y262667D01* +X425956Y262581D01* +X425958Y262495D01* +X425956Y262409D01* +X425950Y262323D01* +X425941Y262237D01* +X425927Y262152D01* +X425910Y262068D01* +X425889Y261984D01* +X425864Y261902D01* +X425836Y261821D01* +X425804Y261741D01* +X425768Y261662D01* +X425729Y261586D01* +X425686Y261511D01* +X425641Y261438D01* +X425592Y261367D01* +X425539Y261299D01* +X425484Y261232D01* +X425426Y261169D01* +X425365Y261108D01* +X425302Y261050D01* +X425235Y260995D01* +X425167Y260942D01* +X425096Y260893D01* +X425023Y260848D01* +X424948Y260805D01* +X424872Y260766D01* +X424793Y260730D01* +X424713Y260698D01* +X424632Y260670D01* +X424550Y260645D01* +X424466Y260624D01* +X424382Y260607D01* +X424297Y260593D01* +X424211Y260584D01* +X424125Y260578D01* +X424039Y260576D01* +X422120Y260576D01* +D18* +X444500Y228600D03* +D14* +X407942Y224282D02* +X406023Y224282D01* +X405937Y224284D01* +X405851Y224290D01* +X405765Y224299D01* +X405680Y224313D01* +X405596Y224330D01* +X405512Y224351D01* +X405430Y224376D01* +X405349Y224404D01* +X405269Y224436D01* +X405190Y224472D01* +X405114Y224511D01* +X405039Y224554D01* +X404966Y224599D01* +X404895Y224648D01* +X404827Y224701D01* +X404760Y224756D01* +X404697Y224814D01* +X404636Y224875D01* +X404578Y224938D01* +X404523Y225005D01* +X404470Y225073D01* +X404421Y225144D01* +X404376Y225217D01* +X404333Y225292D01* +X404294Y225368D01* +X404258Y225447D01* +X404226Y225527D01* +X404198Y225608D01* +X404173Y225690D01* +X404152Y225774D01* +X404135Y225858D01* +X404121Y225943D01* +X404112Y226029D01* +X404106Y226115D01* +X404104Y226201D01* +X404104Y230999D01* +X404106Y231085D01* +X404112Y231171D01* +X404121Y231257D01* +X404135Y231342D01* +X404152Y231426D01* +X404173Y231510D01* +X404198Y231592D01* +X404226Y231673D01* +X404258Y231753D01* +X404294Y231832D01* +X404333Y231908D01* +X404376Y231983D01* +X404421Y232056D01* +X404470Y232127D01* +X404523Y232195D01* +X404578Y232262D01* +X404636Y232325D01* +X404697Y232386D01* +X404760Y232444D01* +X404827Y232499D01* +X404895Y232551D01* +X404966Y232601D01* +X405039Y232646D01* +X405114Y232689D01* +X405190Y232728D01* +X405269Y232764D01* +X405349Y232796D01* +X405430Y232824D01* +X405512Y232849D01* +X405596Y232870D01* +X405680Y232887D01* +X405765Y232901D01* +X405851Y232910D01* +X405937Y232916D01* +X406023Y232918D01* +X407942Y232918D01* +X414401Y232918D02* +X414493Y232916D01* +X414584Y232910D01* +X414675Y232901D01* +X414766Y232887D01* +X414856Y232870D01* +X414945Y232848D01* +X415033Y232823D01* +X415120Y232795D01* +X415206Y232762D01* +X415290Y232726D01* +X415373Y232687D01* +X415454Y232644D01* +X415533Y232597D01* +X415610Y232548D01* +X415685Y232495D01* +X415757Y232439D01* +X415827Y232380D01* +X415895Y232318D01* +X415960Y232253D01* +X416022Y232185D01* +X416081Y232115D01* +X416137Y232043D01* +X416190Y231968D01* +X416239Y231891D01* +X416286Y231812D01* +X416329Y231731D01* +X416368Y231648D01* +X416404Y231564D01* +X416437Y231478D01* +X416465Y231391D01* +X416490Y231303D01* +X416512Y231214D01* +X416529Y231124D01* +X416543Y231033D01* +X416552Y230942D01* +X416558Y230851D01* +X416560Y230759D01* +X414401Y232918D02* +X414298Y232916D01* +X414196Y232910D01* +X414094Y232901D01* +X413992Y232888D01* +X413891Y232871D01* +X413790Y232850D01* +X413691Y232826D01* +X413592Y232797D01* +X413495Y232766D01* +X413398Y232730D01* +X413303Y232692D01* +X413210Y232649D01* +X413118Y232603D01* +X413028Y232554D01* +X412940Y232502D01* +X412853Y232446D01* +X412769Y232387D01* +X412688Y232326D01* +X412608Y232261D01* +X412531Y232193D01* +X412456Y232122D01* +X412385Y232049D01* +X412316Y231973D01* +X412249Y231895D01* +X412186Y231814D01* +X412126Y231731D01* +X412069Y231646D01* +X412015Y231559D01* +X411964Y231469D01* +X411917Y231378D01* +X411873Y231286D01* +X411832Y231191D01* +X411795Y231096D01* +X411762Y230999D01* +X415840Y229080D02* +X415907Y229146D01* +X415971Y229215D01* +X416032Y229286D01* +X416090Y229360D01* +X416145Y229436D01* +X416197Y229514D01* +X416246Y229594D01* +X416292Y229676D01* +X416334Y229760D01* +X416373Y229846D01* +X416408Y229933D01* +X416439Y230021D01* +X416467Y230111D01* +X416492Y230201D01* +X416513Y230293D01* +X416530Y230385D01* +X416543Y230478D01* +X416552Y230571D01* +X416558Y230665D01* +X416560Y230759D01* +X415840Y229080D02* +X411762Y224282D01* +X416560Y224282D01* +X420906Y229080D02* +X423785Y229080D01* +X423871Y229078D01* +X423957Y229072D01* +X424043Y229063D01* +X424128Y229049D01* +X424212Y229032D01* +X424296Y229011D01* +X424378Y228986D01* +X424459Y228958D01* +X424539Y228926D01* +X424618Y228890D01* +X424694Y228851D01* +X424769Y228808D01* +X424842Y228763D01* +X424913Y228714D01* +X424981Y228661D01* +X425048Y228606D01* +X425111Y228548D01* +X425172Y228487D01* +X425230Y228424D01* +X425285Y228357D01* +X425338Y228289D01* +X425387Y228218D01* +X425432Y228145D01* +X425475Y228070D01* +X425514Y227994D01* +X425550Y227915D01* +X425582Y227835D01* +X425610Y227754D01* +X425635Y227672D01* +X425656Y227588D01* +X425673Y227504D01* +X425687Y227419D01* +X425696Y227333D01* +X425702Y227247D01* +X425704Y227161D01* +X425704Y226681D01* +X425702Y226584D01* +X425696Y226488D01* +X425687Y226392D01* +X425673Y226296D01* +X425656Y226201D01* +X425634Y226107D01* +X425609Y226014D01* +X425581Y225921D01* +X425548Y225830D01* +X425512Y225741D01* +X425472Y225653D01* +X425429Y225566D01* +X425383Y225481D01* +X425333Y225399D01* +X425279Y225318D01* +X425223Y225240D01* +X425163Y225164D01* +X425101Y225090D01* +X425035Y225019D01* +X424967Y224951D01* +X424896Y224885D01* +X424822Y224823D01* +X424746Y224763D01* +X424668Y224707D01* +X424587Y224653D01* +X424505Y224603D01* +X424420Y224557D01* +X424333Y224514D01* +X424245Y224474D01* +X424156Y224438D01* +X424065Y224405D01* +X423972Y224377D01* +X423879Y224352D01* +X423785Y224330D01* +X423690Y224313D01* +X423594Y224299D01* +X423498Y224290D01* +X423402Y224284D01* +X423305Y224282D01* +X423208Y224284D01* +X423112Y224290D01* +X423016Y224299D01* +X422920Y224313D01* +X422825Y224330D01* +X422731Y224352D01* +X422638Y224377D01* +X422545Y224405D01* +X422454Y224438D01* +X422365Y224474D01* +X422277Y224514D01* +X422190Y224557D01* +X422106Y224603D01* +X422023Y224653D01* +X421942Y224707D01* +X421864Y224763D01* +X421788Y224823D01* +X421714Y224885D01* +X421643Y224951D01* +X421575Y225019D01* +X421509Y225090D01* +X421447Y225164D01* +X421387Y225240D01* +X421331Y225318D01* +X421277Y225399D01* +X421227Y225482D01* +X421181Y225566D01* +X421138Y225653D01* +X421098Y225741D01* +X421062Y225830D01* +X421029Y225921D01* +X421001Y226014D01* +X420976Y226107D01* +X420954Y226201D01* +X420937Y226296D01* +X420923Y226392D01* +X420914Y226488D01* +X420908Y226584D01* +X420906Y226681D01* +X420906Y229080D01* +X420907Y229080D02* +X420909Y229203D01* +X420915Y229326D01* +X420925Y229449D01* +X420939Y229571D01* +X420956Y229693D01* +X420978Y229814D01* +X421003Y229934D01* +X421033Y230054D01* +X421066Y230172D01* +X421103Y230289D01* +X421143Y230406D01* +X421187Y230520D01* +X421235Y230634D01* +X421287Y230745D01* +X421342Y230855D01* +X421401Y230963D01* +X421463Y231070D01* +X421528Y231174D01* +X421597Y231276D01* +X421669Y231376D01* +X421744Y231473D01* +X421823Y231568D01* +X421904Y231660D01* +X421988Y231750D01* +X422075Y231837D01* +X422165Y231921D01* +X422257Y232002D01* +X422352Y232081D01* +X422449Y232156D01* +X422549Y232228D01* +X422651Y232297D01* +X422755Y232362D01* +X422862Y232424D01* +X422970Y232483D01* +X423080Y232538D01* +X423191Y232590D01* +X423305Y232637D01* +X423419Y232682D01* +X423536Y232722D01* +X423653Y232759D01* +X423771Y232792D01* +X423891Y232822D01* +X424011Y232847D01* +X424132Y232869D01* +X424254Y232886D01* +X424376Y232900D01* +X424499Y232910D01* +X424622Y232916D01* +X424745Y232918D01* +D13* +X1033780Y170180D03* +D14* +X1025906Y160782D02* +X1017270Y160782D01* +X1017270Y163181D01* +X1017272Y163278D01* +X1017278Y163374D01* +X1017287Y163470D01* +X1017301Y163566D01* +X1017318Y163661D01* +X1017340Y163755D01* +X1017365Y163848D01* +X1017393Y163941D01* +X1017426Y164032D01* +X1017462Y164121D01* +X1017502Y164209D01* +X1017545Y164296D01* +X1017591Y164381D01* +X1017641Y164463D01* +X1017695Y164544D01* +X1017751Y164622D01* +X1017811Y164698D01* +X1017873Y164772D01* +X1017939Y164843D01* +X1018007Y164911D01* +X1018078Y164977D01* +X1018152Y165039D01* +X1018228Y165099D01* +X1018306Y165155D01* +X1018387Y165209D01* +X1018470Y165259D01* +X1018554Y165305D01* +X1018641Y165348D01* +X1018729Y165388D01* +X1018818Y165424D01* +X1018909Y165457D01* +X1019002Y165485D01* +X1019095Y165510D01* +X1019189Y165532D01* +X1019284Y165549D01* +X1019380Y165563D01* +X1019476Y165572D01* +X1019572Y165578D01* +X1019669Y165580D01* +X1019766Y165578D01* +X1019862Y165572D01* +X1019958Y165563D01* +X1020054Y165549D01* +X1020149Y165532D01* +X1020243Y165510D01* +X1020336Y165485D01* +X1020429Y165457D01* +X1020520Y165424D01* +X1020609Y165388D01* +X1020697Y165348D01* +X1020784Y165305D01* +X1020869Y165259D01* +X1020951Y165209D01* +X1021032Y165155D01* +X1021110Y165099D01* +X1021186Y165039D01* +X1021260Y164977D01* +X1021331Y164911D01* +X1021399Y164843D01* +X1021465Y164772D01* +X1021527Y164698D01* +X1021587Y164622D01* +X1021643Y164544D01* +X1021697Y164463D01* +X1021747Y164381D01* +X1021793Y164296D01* +X1021836Y164209D01* +X1021876Y164121D01* +X1021912Y164032D01* +X1021945Y163941D01* +X1021973Y163848D01* +X1021998Y163755D01* +X1022020Y163661D01* +X1022037Y163566D01* +X1022051Y163470D01* +X1022060Y163374D01* +X1022066Y163278D01* +X1022068Y163181D01* +X1022068Y160782D01* +X1022068Y163661D02* +X1025906Y165580D01* +X1025906Y169841D02* +X1025906Y172720D01* +X1025904Y172806D01* +X1025898Y172892D01* +X1025889Y172978D01* +X1025875Y173063D01* +X1025858Y173147D01* +X1025837Y173231D01* +X1025812Y173313D01* +X1025784Y173394D01* +X1025752Y173474D01* +X1025716Y173553D01* +X1025677Y173629D01* +X1025634Y173704D01* +X1025589Y173777D01* +X1025540Y173848D01* +X1025487Y173916D01* +X1025432Y173983D01* +X1025374Y174046D01* +X1025313Y174107D01* +X1025250Y174165D01* +X1025183Y174220D01* +X1025115Y174273D01* +X1025044Y174322D01* +X1024971Y174367D01* +X1024896Y174410D01* +X1024820Y174449D01* +X1024741Y174485D01* +X1024661Y174517D01* +X1024580Y174545D01* +X1024498Y174570D01* +X1024414Y174591D01* +X1024330Y174608D01* +X1024245Y174622D01* +X1024159Y174631D01* +X1024073Y174637D01* +X1023987Y174639D01* +X1023027Y174639D01* +X1022941Y174637D01* +X1022855Y174631D01* +X1022769Y174622D01* +X1022684Y174608D01* +X1022600Y174591D01* +X1022516Y174570D01* +X1022434Y174545D01* +X1022353Y174517D01* +X1022273Y174485D01* +X1022194Y174449D01* +X1022118Y174410D01* +X1022043Y174367D01* +X1021970Y174322D01* +X1021899Y174273D01* +X1021831Y174220D01* +X1021764Y174165D01* +X1021701Y174107D01* +X1021640Y174046D01* +X1021582Y173983D01* +X1021527Y173916D01* +X1021475Y173848D01* +X1021425Y173777D01* +X1021380Y173704D01* +X1021337Y173629D01* +X1021298Y173553D01* +X1021262Y173474D01* +X1021230Y173394D01* +X1021202Y173313D01* +X1021177Y173231D01* +X1021156Y173147D01* +X1021139Y173063D01* +X1021125Y172978D01* +X1021116Y172892D01* +X1021110Y172806D01* +X1021108Y172720D01* +X1021108Y169841D01* +X1017270Y169841D01* +X1017270Y174639D01* +D13* +X462280Y213360D03* +D14* +X456946Y202974D02* +X456946Y201055D01* +X456944Y200969D01* +X456938Y200883D01* +X456929Y200797D01* +X456915Y200712D01* +X456898Y200628D01* +X456877Y200544D01* +X456852Y200462D01* +X456824Y200381D01* +X456792Y200301D01* +X456756Y200222D01* +X456717Y200146D01* +X456674Y200071D01* +X456629Y199998D01* +X456580Y199927D01* +X456527Y199859D01* +X456472Y199792D01* +X456414Y199729D01* +X456353Y199668D01* +X456290Y199610D01* +X456223Y199555D01* +X456155Y199503D01* +X456084Y199453D01* +X456011Y199408D01* +X455936Y199365D01* +X455860Y199326D01* +X455781Y199290D01* +X455701Y199258D01* +X455620Y199230D01* +X455538Y199205D01* +X455454Y199184D01* +X455370Y199167D01* +X455285Y199153D01* +X455199Y199144D01* +X455113Y199138D01* +X455027Y199136D01* +X450229Y199136D01* +X450143Y199138D01* +X450057Y199144D01* +X449971Y199153D01* +X449886Y199167D01* +X449802Y199184D01* +X449718Y199205D01* +X449636Y199230D01* +X449555Y199258D01* +X449475Y199290D01* +X449396Y199326D01* +X449320Y199365D01* +X449245Y199408D01* +X449172Y199453D01* +X449101Y199502D01* +X449033Y199555D01* +X448966Y199610D01* +X448903Y199668D01* +X448842Y199729D01* +X448784Y199792D01* +X448729Y199859D01* +X448677Y199927D01* +X448627Y199998D01* +X448582Y200071D01* +X448539Y200146D01* +X448500Y200222D01* +X448464Y200301D01* +X448432Y200381D01* +X448404Y200462D01* +X448379Y200544D01* +X448358Y200628D01* +X448341Y200712D01* +X448327Y200797D01* +X448318Y200883D01* +X448312Y200969D01* +X448310Y201055D01* +X448310Y202974D01* +X448310Y209433D02* +X448312Y209525D01* +X448318Y209616D01* +X448327Y209707D01* +X448341Y209798D01* +X448358Y209888D01* +X448380Y209977D01* +X448405Y210065D01* +X448433Y210152D01* +X448466Y210238D01* +X448502Y210322D01* +X448541Y210405D01* +X448584Y210486D01* +X448631Y210565D01* +X448680Y210642D01* +X448733Y210717D01* +X448789Y210789D01* +X448848Y210859D01* +X448910Y210927D01* +X448975Y210992D01* +X449043Y211054D01* +X449113Y211113D01* +X449185Y211169D01* +X449260Y211222D01* +X449337Y211271D01* +X449416Y211318D01* +X449497Y211361D01* +X449580Y211400D01* +X449664Y211436D01* +X449750Y211469D01* +X449837Y211497D01* +X449925Y211522D01* +X450014Y211544D01* +X450104Y211561D01* +X450195Y211575D01* +X450286Y211584D01* +X450377Y211590D01* +X450469Y211592D01* +X448310Y209433D02* +X448312Y209330D01* +X448318Y209228D01* +X448327Y209126D01* +X448340Y209024D01* +X448357Y208923D01* +X448378Y208822D01* +X448402Y208723D01* +X448431Y208624D01* +X448462Y208527D01* +X448498Y208430D01* +X448536Y208335D01* +X448579Y208242D01* +X448625Y208150D01* +X448674Y208060D01* +X448726Y207972D01* +X448782Y207885D01* +X448841Y207801D01* +X448902Y207720D01* +X448967Y207640D01* +X449035Y207563D01* +X449106Y207488D01* +X449179Y207417D01* +X449255Y207348D01* +X449333Y207281D01* +X449414Y207218D01* +X449497Y207158D01* +X449582Y207101D01* +X449669Y207047D01* +X449759Y206996D01* +X449850Y206949D01* +X449942Y206905D01* +X450037Y206864D01* +X450132Y206827D01* +X450229Y206794D01* +X452148Y210872D02* +X452082Y210939D01* +X452013Y211003D01* +X451942Y211064D01* +X451868Y211122D01* +X451792Y211177D01* +X451714Y211229D01* +X451634Y211278D01* +X451552Y211324D01* +X451468Y211366D01* +X451382Y211405D01* +X451295Y211440D01* +X451207Y211471D01* +X451117Y211499D01* +X451027Y211524D01* +X450935Y211545D01* +X450843Y211562D01* +X450750Y211575D01* +X450657Y211584D01* +X450563Y211590D01* +X450469Y211592D01* +X452148Y210872D02* +X456946Y206794D01* +X456946Y211592D01* +X449270Y215938D02* +X448310Y215938D01* +X448310Y220736D01* +X456946Y218337D01* +D13* +X472440Y152400D03* +D14* +X476504Y123970D02* +X476504Y122051D01* +X476502Y121965D01* +X476496Y121879D01* +X476487Y121793D01* +X476473Y121708D01* +X476456Y121624D01* +X476435Y121540D01* +X476410Y121458D01* +X476382Y121377D01* +X476350Y121297D01* +X476314Y121218D01* +X476275Y121142D01* +X476232Y121067D01* +X476187Y120994D01* +X476138Y120923D01* +X476085Y120855D01* +X476030Y120788D01* +X475972Y120725D01* +X475911Y120664D01* +X475848Y120606D01* +X475781Y120551D01* +X475713Y120499D01* +X475642Y120449D01* +X475569Y120404D01* +X475494Y120361D01* +X475418Y120322D01* +X475339Y120286D01* +X475259Y120254D01* +X475178Y120226D01* +X475096Y120201D01* +X475012Y120180D01* +X474928Y120163D01* +X474843Y120149D01* +X474757Y120140D01* +X474671Y120134D01* +X474585Y120132D01* +X469787Y120132D01* +X469701Y120134D01* +X469615Y120140D01* +X469529Y120149D01* +X469444Y120163D01* +X469360Y120180D01* +X469276Y120201D01* +X469194Y120226D01* +X469113Y120254D01* +X469033Y120286D01* +X468954Y120322D01* +X468878Y120361D01* +X468803Y120404D01* +X468730Y120449D01* +X468659Y120498D01* +X468591Y120551D01* +X468524Y120606D01* +X468461Y120664D01* +X468400Y120725D01* +X468342Y120788D01* +X468287Y120855D01* +X468235Y120923D01* +X468185Y120994D01* +X468140Y121067D01* +X468097Y121142D01* +X468058Y121218D01* +X468022Y121297D01* +X467990Y121377D01* +X467962Y121458D01* +X467937Y121540D01* +X467916Y121624D01* +X467899Y121708D01* +X467885Y121793D01* +X467876Y121879D01* +X467870Y121965D01* +X467868Y122051D01* +X467868Y123970D01* +X467868Y130429D02* +X467870Y130521D01* +X467876Y130612D01* +X467885Y130703D01* +X467899Y130794D01* +X467916Y130884D01* +X467938Y130973D01* +X467963Y131061D01* +X467991Y131148D01* +X468024Y131234D01* +X468060Y131318D01* +X468099Y131401D01* +X468142Y131482D01* +X468189Y131561D01* +X468238Y131638D01* +X468291Y131713D01* +X468347Y131785D01* +X468406Y131855D01* +X468468Y131923D01* +X468533Y131988D01* +X468601Y132050D01* +X468671Y132109D01* +X468743Y132165D01* +X468818Y132218D01* +X468895Y132267D01* +X468974Y132314D01* +X469055Y132357D01* +X469138Y132396D01* +X469222Y132432D01* +X469308Y132465D01* +X469395Y132493D01* +X469483Y132518D01* +X469572Y132540D01* +X469662Y132557D01* +X469753Y132571D01* +X469844Y132580D01* +X469935Y132586D01* +X470027Y132588D01* +X467868Y130429D02* +X467870Y130326D01* +X467876Y130224D01* +X467885Y130122D01* +X467898Y130020D01* +X467915Y129919D01* +X467936Y129818D01* +X467960Y129719D01* +X467989Y129620D01* +X468020Y129523D01* +X468056Y129426D01* +X468094Y129331D01* +X468137Y129238D01* +X468183Y129146D01* +X468232Y129056D01* +X468284Y128968D01* +X468340Y128881D01* +X468399Y128797D01* +X468460Y128716D01* +X468525Y128636D01* +X468593Y128559D01* +X468664Y128484D01* +X468737Y128413D01* +X468813Y128344D01* +X468891Y128277D01* +X468972Y128214D01* +X469055Y128154D01* +X469140Y128097D01* +X469227Y128043D01* +X469317Y127992D01* +X469408Y127945D01* +X469500Y127901D01* +X469595Y127860D01* +X469690Y127823D01* +X469787Y127790D01* +X471706Y131868D02* +X471640Y131935D01* +X471571Y131999D01* +X471500Y132060D01* +X471426Y132118D01* +X471350Y132173D01* +X471272Y132225D01* +X471192Y132274D01* +X471110Y132320D01* +X471026Y132362D01* +X470940Y132401D01* +X470853Y132436D01* +X470765Y132467D01* +X470675Y132495D01* +X470585Y132520D01* +X470493Y132541D01* +X470401Y132558D01* +X470308Y132571D01* +X470215Y132580D01* +X470121Y132586D01* +X470027Y132588D01* +X471706Y131868D02* +X476504Y127790D01* +X476504Y132588D01* +X474105Y136934D02* +X474008Y136936D01* +X473912Y136942D01* +X473816Y136951D01* +X473720Y136965D01* +X473625Y136982D01* +X473531Y137004D01* +X473438Y137029D01* +X473345Y137057D01* +X473254Y137090D01* +X473165Y137126D01* +X473077Y137166D01* +X472990Y137209D01* +X472906Y137255D01* +X472823Y137305D01* +X472742Y137359D01* +X472664Y137415D01* +X472588Y137475D01* +X472514Y137537D01* +X472443Y137603D01* +X472375Y137671D01* +X472309Y137742D01* +X472247Y137816D01* +X472187Y137892D01* +X472131Y137970D01* +X472077Y138051D01* +X472027Y138134D01* +X471981Y138218D01* +X471938Y138305D01* +X471898Y138393D01* +X471862Y138482D01* +X471829Y138573D01* +X471801Y138666D01* +X471776Y138759D01* +X471754Y138853D01* +X471737Y138948D01* +X471723Y139044D01* +X471714Y139140D01* +X471708Y139236D01* +X471706Y139333D01* +X471708Y139430D01* +X471714Y139526D01* +X471723Y139622D01* +X471737Y139718D01* +X471754Y139813D01* +X471776Y139907D01* +X471801Y140000D01* +X471829Y140093D01* +X471862Y140184D01* +X471898Y140273D01* +X471938Y140361D01* +X471981Y140448D01* +X472027Y140533D01* +X472077Y140615D01* +X472131Y140696D01* +X472187Y140774D01* +X472247Y140850D01* +X472309Y140924D01* +X472375Y140995D01* +X472443Y141063D01* +X472514Y141129D01* +X472588Y141191D01* +X472664Y141251D01* +X472742Y141307D01* +X472823Y141361D01* +X472906Y141411D01* +X472990Y141457D01* +X473077Y141500D01* +X473165Y141540D01* +X473254Y141576D01* +X473345Y141609D01* +X473438Y141637D01* +X473531Y141662D01* +X473625Y141684D01* +X473720Y141701D01* +X473816Y141715D01* +X473912Y141724D01* +X474008Y141730D01* +X474105Y141732D01* +X474202Y141730D01* +X474298Y141724D01* +X474394Y141715D01* +X474490Y141701D01* +X474585Y141684D01* +X474679Y141662D01* +X474772Y141637D01* +X474865Y141609D01* +X474956Y141576D01* +X475045Y141540D01* +X475133Y141500D01* +X475220Y141457D01* +X475305Y141411D01* +X475387Y141361D01* +X475468Y141307D01* +X475546Y141251D01* +X475622Y141191D01* +X475696Y141129D01* +X475767Y141063D01* +X475835Y140995D01* +X475901Y140924D01* +X475963Y140850D01* +X476023Y140774D01* +X476079Y140696D01* +X476133Y140615D01* +X476183Y140532D01* +X476229Y140448D01* +X476272Y140361D01* +X476312Y140273D01* +X476348Y140184D01* +X476381Y140093D01* +X476409Y140000D01* +X476434Y139907D01* +X476456Y139813D01* +X476473Y139718D01* +X476487Y139622D01* +X476496Y139526D01* +X476502Y139430D01* +X476504Y139333D01* +X476502Y139236D01* +X476496Y139140D01* +X476487Y139044D01* +X476473Y138948D01* +X476456Y138853D01* +X476434Y138759D01* +X476409Y138666D01* +X476381Y138573D01* +X476348Y138482D01* +X476312Y138393D01* +X476272Y138305D01* +X476229Y138218D01* +X476183Y138134D01* +X476133Y138051D01* +X476079Y137970D01* +X476023Y137892D01* +X475963Y137816D01* +X475901Y137742D01* +X475835Y137671D01* +X475767Y137603D01* +X475696Y137537D01* +X475622Y137475D01* +X475546Y137415D01* +X475468Y137359D01* +X475387Y137305D01* +X475305Y137255D01* +X475220Y137209D01* +X475133Y137166D01* +X475045Y137126D01* +X474956Y137090D01* +X474865Y137057D01* +X474772Y137029D01* +X474679Y137004D01* +X474585Y136982D01* +X474490Y136965D01* +X474394Y136951D01* +X474298Y136942D01* +X474202Y136936D01* +X474105Y136934D01* +X469787Y137414D02* +X469701Y137416D01* +X469615Y137422D01* +X469529Y137431D01* +X469444Y137445D01* +X469360Y137462D01* +X469276Y137483D01* +X469194Y137508D01* +X469113Y137536D01* +X469033Y137568D01* +X468954Y137604D01* +X468878Y137643D01* +X468803Y137686D01* +X468730Y137731D01* +X468659Y137780D01* +X468591Y137833D01* +X468524Y137888D01* +X468461Y137946D01* +X468400Y138007D01* +X468342Y138070D01* +X468287Y138137D01* +X468234Y138205D01* +X468185Y138276D01* +X468140Y138349D01* +X468097Y138424D01* +X468058Y138500D01* +X468022Y138579D01* +X467990Y138659D01* +X467962Y138740D01* +X467937Y138822D01* +X467916Y138906D01* +X467899Y138990D01* +X467885Y139075D01* +X467876Y139161D01* +X467870Y139247D01* +X467868Y139333D01* +X467870Y139419D01* +X467876Y139505D01* +X467885Y139591D01* +X467899Y139676D01* +X467916Y139760D01* +X467937Y139844D01* +X467962Y139926D01* +X467990Y140007D01* +X468022Y140087D01* +X468058Y140166D01* +X468097Y140242D01* +X468140Y140317D01* +X468185Y140390D01* +X468234Y140461D01* +X468287Y140529D01* +X468342Y140596D01* +X468400Y140659D01* +X468461Y140720D01* +X468524Y140778D01* +X468591Y140833D01* +X468659Y140886D01* +X468730Y140935D01* +X468803Y140980D01* +X468878Y141023D01* +X468954Y141062D01* +X469033Y141098D01* +X469113Y141130D01* +X469194Y141158D01* +X469276Y141183D01* +X469360Y141204D01* +X469444Y141221D01* +X469529Y141235D01* +X469615Y141244D01* +X469701Y141250D01* +X469787Y141252D01* +X469873Y141250D01* +X469959Y141244D01* +X470045Y141235D01* +X470130Y141221D01* +X470214Y141204D01* +X470298Y141183D01* +X470380Y141158D01* +X470461Y141130D01* +X470541Y141098D01* +X470620Y141062D01* +X470696Y141023D01* +X470771Y140980D01* +X470844Y140935D01* +X470915Y140886D01* +X470983Y140833D01* +X471050Y140778D01* +X471113Y140720D01* +X471174Y140659D01* +X471232Y140596D01* +X471287Y140529D01* +X471340Y140461D01* +X471389Y140390D01* +X471434Y140317D01* +X471477Y140242D01* +X471516Y140166D01* +X471552Y140087D01* +X471584Y140007D01* +X471612Y139926D01* +X471637Y139844D01* +X471658Y139760D01* +X471675Y139676D01* +X471689Y139591D01* +X471698Y139505D01* +X471704Y139419D01* +X471706Y139333D01* +X471704Y139247D01* +X471698Y139161D01* +X471689Y139075D01* +X471675Y138990D01* +X471658Y138906D01* +X471637Y138822D01* +X471612Y138740D01* +X471584Y138659D01* +X471552Y138579D01* +X471516Y138500D01* +X471477Y138424D01* +X471434Y138349D01* +X471389Y138276D01* +X471340Y138205D01* +X471287Y138137D01* +X471232Y138070D01* +X471174Y138007D01* +X471113Y137946D01* +X471050Y137888D01* +X470983Y137833D01* +X470915Y137780D01* +X470844Y137731D01* +X470771Y137686D01* +X470696Y137643D01* +X470620Y137604D01* +X470541Y137568D01* +X470461Y137536D01* +X470380Y137508D01* +X470298Y137483D01* +X470214Y137462D01* +X470130Y137445D01* +X470045Y137431D01* +X469959Y137422D01* +X469873Y137416D01* +X469787Y137414D01* +D18* +X520700Y134620D03* +D14* +X511066Y116332D02* +X509147Y116332D01* +X509061Y116334D01* +X508975Y116340D01* +X508889Y116349D01* +X508804Y116363D01* +X508720Y116380D01* +X508636Y116401D01* +X508554Y116426D01* +X508473Y116454D01* +X508393Y116486D01* +X508314Y116522D01* +X508238Y116561D01* +X508163Y116604D01* +X508090Y116649D01* +X508019Y116698D01* +X507951Y116751D01* +X507884Y116806D01* +X507821Y116864D01* +X507760Y116925D01* +X507702Y116988D01* +X507647Y117055D01* +X507594Y117123D01* +X507545Y117194D01* +X507500Y117267D01* +X507457Y117342D01* +X507418Y117418D01* +X507382Y117497D01* +X507350Y117577D01* +X507322Y117658D01* +X507297Y117740D01* +X507276Y117824D01* +X507259Y117908D01* +X507245Y117993D01* +X507236Y118079D01* +X507230Y118165D01* +X507228Y118251D01* +X507228Y123049D01* +X507230Y123135D01* +X507236Y123221D01* +X507245Y123307D01* +X507259Y123392D01* +X507276Y123476D01* +X507297Y123560D01* +X507322Y123642D01* +X507350Y123723D01* +X507382Y123803D01* +X507418Y123882D01* +X507457Y123958D01* +X507500Y124033D01* +X507545Y124106D01* +X507594Y124177D01* +X507647Y124245D01* +X507702Y124312D01* +X507760Y124375D01* +X507821Y124436D01* +X507884Y124494D01* +X507951Y124549D01* +X508019Y124601D01* +X508090Y124651D01* +X508163Y124696D01* +X508238Y124739D01* +X508314Y124778D01* +X508393Y124814D01* +X508473Y124846D01* +X508554Y124874D01* +X508636Y124899D01* +X508720Y124920D01* +X508804Y124937D01* +X508889Y124951D01* +X508975Y124960D01* +X509061Y124966D01* +X509147Y124968D01* +X511066Y124968D01* +X517525Y124968D02* +X517617Y124966D01* +X517708Y124960D01* +X517799Y124951D01* +X517890Y124937D01* +X517980Y124920D01* +X518069Y124898D01* +X518157Y124873D01* +X518244Y124845D01* +X518330Y124812D01* +X518414Y124776D01* +X518497Y124737D01* +X518578Y124694D01* +X518657Y124647D01* +X518734Y124598D01* +X518809Y124545D01* +X518881Y124489D01* +X518951Y124430D01* +X519019Y124368D01* +X519084Y124303D01* +X519146Y124235D01* +X519205Y124165D01* +X519261Y124093D01* +X519314Y124018D01* +X519363Y123941D01* +X519410Y123862D01* +X519453Y123781D01* +X519492Y123698D01* +X519528Y123614D01* +X519561Y123528D01* +X519589Y123441D01* +X519614Y123353D01* +X519636Y123264D01* +X519653Y123174D01* +X519667Y123083D01* +X519676Y122992D01* +X519682Y122901D01* +X519684Y122809D01* +X517525Y124968D02* +X517422Y124966D01* +X517320Y124960D01* +X517218Y124951D01* +X517116Y124938D01* +X517015Y124921D01* +X516914Y124900D01* +X516815Y124876D01* +X516716Y124847D01* +X516619Y124816D01* +X516522Y124780D01* +X516427Y124742D01* +X516334Y124699D01* +X516242Y124653D01* +X516152Y124604D01* +X516064Y124552D01* +X515977Y124496D01* +X515893Y124437D01* +X515812Y124376D01* +X515732Y124311D01* +X515655Y124243D01* +X515580Y124172D01* +X515509Y124099D01* +X515440Y124023D01* +X515373Y123945D01* +X515310Y123864D01* +X515250Y123781D01* +X515193Y123696D01* +X515139Y123609D01* +X515088Y123519D01* +X515041Y123428D01* +X514997Y123336D01* +X514956Y123241D01* +X514919Y123146D01* +X514886Y123049D01* +X518964Y121130D02* +X519031Y121196D01* +X519095Y121265D01* +X519156Y121336D01* +X519214Y121410D01* +X519269Y121486D01* +X519321Y121564D01* +X519370Y121644D01* +X519416Y121726D01* +X519458Y121810D01* +X519497Y121896D01* +X519532Y121983D01* +X519563Y122071D01* +X519591Y122161D01* +X519616Y122251D01* +X519637Y122343D01* +X519654Y122435D01* +X519667Y122528D01* +X519676Y122621D01* +X519682Y122715D01* +X519684Y122809D01* +X518964Y121130D02* +X514886Y116332D01* +X519684Y116332D01* +X526669Y124968D02* +X526761Y124966D01* +X526852Y124960D01* +X526943Y124951D01* +X527034Y124937D01* +X527124Y124920D01* +X527213Y124898D01* +X527301Y124873D01* +X527388Y124845D01* +X527474Y124812D01* +X527558Y124776D01* +X527641Y124737D01* +X527722Y124694D01* +X527801Y124647D01* +X527878Y124598D01* +X527953Y124545D01* +X528025Y124489D01* +X528095Y124430D01* +X528163Y124368D01* +X528228Y124303D01* +X528290Y124235D01* +X528349Y124165D01* +X528405Y124093D01* +X528458Y124018D01* +X528507Y123941D01* +X528554Y123862D01* +X528597Y123781D01* +X528636Y123698D01* +X528672Y123614D01* +X528705Y123528D01* +X528733Y123441D01* +X528758Y123353D01* +X528780Y123264D01* +X528797Y123174D01* +X528811Y123083D01* +X528820Y122992D01* +X528826Y122901D01* +X528828Y122809D01* +X526669Y124968D02* +X526566Y124966D01* +X526464Y124960D01* +X526362Y124951D01* +X526260Y124938D01* +X526159Y124921D01* +X526058Y124900D01* +X525959Y124876D01* +X525860Y124847D01* +X525763Y124816D01* +X525666Y124780D01* +X525571Y124742D01* +X525478Y124699D01* +X525386Y124653D01* +X525296Y124604D01* +X525208Y124552D01* +X525121Y124496D01* +X525037Y124437D01* +X524956Y124376D01* +X524876Y124311D01* +X524799Y124243D01* +X524724Y124172D01* +X524653Y124099D01* +X524584Y124023D01* +X524517Y123945D01* +X524454Y123864D01* +X524394Y123781D01* +X524337Y123696D01* +X524283Y123609D01* +X524232Y123519D01* +X524185Y123428D01* +X524141Y123336D01* +X524100Y123241D01* +X524063Y123146D01* +X524030Y123049D01* +X528108Y121130D02* +X528175Y121196D01* +X528239Y121265D01* +X528300Y121336D01* +X528358Y121410D01* +X528413Y121486D01* +X528465Y121564D01* +X528514Y121644D01* +X528560Y121726D01* +X528602Y121810D01* +X528641Y121896D01* +X528676Y121983D01* +X528707Y122071D01* +X528735Y122161D01* +X528760Y122251D01* +X528781Y122343D01* +X528798Y122435D01* +X528811Y122528D01* +X528820Y122621D01* +X528826Y122715D01* +X528828Y122809D01* +X528108Y121130D02* +X524030Y116332D01* +X528828Y116332D01* +D15* +X1021080Y294640D03* +D14* +X1020572Y315355D02* +X1020572Y317274D01* +X1020572Y315355D02* +X1020570Y315269D01* +X1020564Y315183D01* +X1020555Y315097D01* +X1020541Y315012D01* +X1020524Y314928D01* +X1020503Y314844D01* +X1020478Y314762D01* +X1020450Y314681D01* +X1020418Y314601D01* +X1020382Y314522D01* +X1020343Y314446D01* +X1020300Y314371D01* +X1020255Y314298D01* +X1020206Y314227D01* +X1020153Y314159D01* +X1020098Y314092D01* +X1020040Y314029D01* +X1019979Y313968D01* +X1019916Y313910D01* +X1019849Y313855D01* +X1019781Y313803D01* +X1019710Y313753D01* +X1019637Y313708D01* +X1019562Y313665D01* +X1019486Y313626D01* +X1019407Y313590D01* +X1019327Y313558D01* +X1019246Y313530D01* +X1019164Y313505D01* +X1019080Y313484D01* +X1018996Y313467D01* +X1018911Y313453D01* +X1018825Y313444D01* +X1018739Y313438D01* +X1018653Y313436D01* +X1013855Y313436D01* +X1013769Y313438D01* +X1013683Y313444D01* +X1013597Y313453D01* +X1013512Y313467D01* +X1013428Y313484D01* +X1013344Y313505D01* +X1013262Y313530D01* +X1013181Y313558D01* +X1013101Y313590D01* +X1013022Y313626D01* +X1012946Y313665D01* +X1012871Y313708D01* +X1012798Y313753D01* +X1012727Y313802D01* +X1012659Y313855D01* +X1012592Y313910D01* +X1012529Y313968D01* +X1012468Y314029D01* +X1012410Y314092D01* +X1012355Y314159D01* +X1012303Y314227D01* +X1012253Y314298D01* +X1012208Y314371D01* +X1012165Y314446D01* +X1012126Y314522D01* +X1012090Y314601D01* +X1012058Y314681D01* +X1012030Y314762D01* +X1012005Y314844D01* +X1011984Y314928D01* +X1011967Y315012D01* +X1011953Y315097D01* +X1011944Y315183D01* +X1011938Y315269D01* +X1011936Y315355D01* +X1011936Y317274D01* +X1011936Y323013D02* +X1018653Y321094D01* +X1018653Y325892D01* +X1016734Y324453D02* +X1020572Y324453D01* +D13* +X1033780Y297180D03* +D14* +X1036828Y315355D02* +X1036828Y317274D01* +X1036828Y315355D02* +X1036826Y315269D01* +X1036820Y315183D01* +X1036811Y315097D01* +X1036797Y315012D01* +X1036780Y314928D01* +X1036759Y314844D01* +X1036734Y314762D01* +X1036706Y314681D01* +X1036674Y314601D01* +X1036638Y314522D01* +X1036599Y314446D01* +X1036556Y314371D01* +X1036511Y314298D01* +X1036462Y314227D01* +X1036409Y314159D01* +X1036354Y314092D01* +X1036296Y314029D01* +X1036235Y313968D01* +X1036172Y313910D01* +X1036105Y313855D01* +X1036037Y313803D01* +X1035966Y313753D01* +X1035893Y313708D01* +X1035818Y313665D01* +X1035742Y313626D01* +X1035663Y313590D01* +X1035583Y313558D01* +X1035502Y313530D01* +X1035420Y313505D01* +X1035336Y313484D01* +X1035252Y313467D01* +X1035167Y313453D01* +X1035081Y313444D01* +X1034995Y313438D01* +X1034909Y313436D01* +X1030111Y313436D01* +X1030025Y313438D01* +X1029939Y313444D01* +X1029853Y313453D01* +X1029768Y313467D01* +X1029684Y313484D01* +X1029600Y313505D01* +X1029518Y313530D01* +X1029437Y313558D01* +X1029357Y313590D01* +X1029278Y313626D01* +X1029202Y313665D01* +X1029127Y313708D01* +X1029054Y313753D01* +X1028983Y313802D01* +X1028915Y313855D01* +X1028848Y313910D01* +X1028785Y313968D01* +X1028724Y314029D01* +X1028666Y314092D01* +X1028611Y314159D01* +X1028559Y314227D01* +X1028509Y314298D01* +X1028464Y314371D01* +X1028421Y314446D01* +X1028382Y314522D01* +X1028346Y314601D01* +X1028314Y314681D01* +X1028286Y314762D01* +X1028261Y314844D01* +X1028240Y314928D01* +X1028223Y315012D01* +X1028209Y315097D01* +X1028200Y315183D01* +X1028194Y315269D01* +X1028192Y315355D01* +X1028192Y317274D01* +X1036828Y321094D02* +X1036828Y323973D01* +X1036826Y324059D01* +X1036820Y324145D01* +X1036811Y324231D01* +X1036797Y324316D01* +X1036780Y324400D01* +X1036759Y324484D01* +X1036734Y324566D01* +X1036706Y324647D01* +X1036674Y324727D01* +X1036638Y324806D01* +X1036599Y324882D01* +X1036556Y324957D01* +X1036511Y325030D01* +X1036462Y325101D01* +X1036409Y325169D01* +X1036354Y325236D01* +X1036296Y325299D01* +X1036235Y325360D01* +X1036172Y325418D01* +X1036105Y325473D01* +X1036037Y325526D01* +X1035966Y325575D01* +X1035893Y325620D01* +X1035818Y325663D01* +X1035742Y325702D01* +X1035663Y325738D01* +X1035583Y325770D01* +X1035502Y325798D01* +X1035420Y325823D01* +X1035336Y325844D01* +X1035252Y325861D01* +X1035167Y325875D01* +X1035081Y325884D01* +X1034995Y325890D01* +X1034909Y325892D01* +X1033949Y325892D01* +X1033863Y325890D01* +X1033777Y325884D01* +X1033691Y325875D01* +X1033606Y325861D01* +X1033522Y325844D01* +X1033438Y325823D01* +X1033356Y325798D01* +X1033275Y325770D01* +X1033195Y325738D01* +X1033116Y325702D01* +X1033040Y325663D01* +X1032965Y325620D01* +X1032892Y325575D01* +X1032821Y325526D01* +X1032753Y325473D01* +X1032686Y325418D01* +X1032623Y325360D01* +X1032562Y325299D01* +X1032504Y325236D01* +X1032449Y325169D01* +X1032397Y325101D01* +X1032347Y325030D01* +X1032302Y324957D01* +X1032259Y324882D01* +X1032220Y324806D01* +X1032184Y324727D01* +X1032152Y324647D01* +X1032124Y324566D01* +X1032099Y324484D01* +X1032078Y324400D01* +X1032061Y324316D01* +X1032047Y324231D01* +X1032038Y324145D01* +X1032032Y324059D01* +X1032030Y323973D01* +X1032030Y321094D01* +X1028192Y321094D01* +X1028192Y325892D01* +D15* +X1016000Y58420D03* +D14* +X1019810Y77103D02* +X1019810Y79022D01* +X1019810Y77103D02* +X1019808Y77017D01* +X1019802Y76931D01* +X1019793Y76845D01* +X1019779Y76760D01* +X1019762Y76676D01* +X1019741Y76592D01* +X1019716Y76510D01* +X1019688Y76429D01* +X1019656Y76349D01* +X1019620Y76270D01* +X1019581Y76194D01* +X1019538Y76119D01* +X1019493Y76046D01* +X1019444Y75975D01* +X1019391Y75907D01* +X1019336Y75840D01* +X1019278Y75777D01* +X1019217Y75716D01* +X1019154Y75658D01* +X1019087Y75603D01* +X1019019Y75551D01* +X1018948Y75501D01* +X1018875Y75456D01* +X1018800Y75413D01* +X1018724Y75374D01* +X1018645Y75338D01* +X1018565Y75306D01* +X1018484Y75278D01* +X1018402Y75253D01* +X1018318Y75232D01* +X1018234Y75215D01* +X1018149Y75201D01* +X1018063Y75192D01* +X1017977Y75186D01* +X1017891Y75184D01* +X1013093Y75184D01* +X1013007Y75186D01* +X1012921Y75192D01* +X1012835Y75201D01* +X1012750Y75215D01* +X1012666Y75232D01* +X1012582Y75253D01* +X1012500Y75278D01* +X1012419Y75306D01* +X1012339Y75338D01* +X1012260Y75374D01* +X1012184Y75413D01* +X1012109Y75456D01* +X1012036Y75501D01* +X1011965Y75550D01* +X1011897Y75603D01* +X1011830Y75658D01* +X1011767Y75716D01* +X1011706Y75777D01* +X1011648Y75840D01* +X1011593Y75907D01* +X1011541Y75975D01* +X1011491Y76046D01* +X1011446Y76119D01* +X1011403Y76194D01* +X1011364Y76270D01* +X1011328Y76349D01* +X1011296Y76429D01* +X1011268Y76510D01* +X1011243Y76592D01* +X1011222Y76676D01* +X1011205Y76760D01* +X1011191Y76845D01* +X1011182Y76931D01* +X1011176Y77017D01* +X1011174Y77103D01* +X1011174Y79022D01* +X1013093Y82842D02* +X1011174Y85241D01* +X1019810Y85241D01* +X1019810Y82842D02* +X1019810Y87640D01* +X1015972Y93905D02* +X1015972Y96784D01* +X1015972Y93905D02* +X1015970Y93819D01* +X1015964Y93733D01* +X1015955Y93647D01* +X1015941Y93562D01* +X1015924Y93478D01* +X1015903Y93394D01* +X1015878Y93312D01* +X1015850Y93231D01* +X1015818Y93151D01* +X1015782Y93072D01* +X1015743Y92996D01* +X1015700Y92921D01* +X1015655Y92848D01* +X1015606Y92777D01* +X1015553Y92709D01* +X1015498Y92642D01* +X1015440Y92579D01* +X1015379Y92518D01* +X1015316Y92460D01* +X1015249Y92405D01* +X1015181Y92353D01* +X1015110Y92303D01* +X1015037Y92258D01* +X1014962Y92215D01* +X1014886Y92176D01* +X1014807Y92140D01* +X1014727Y92108D01* +X1014646Y92080D01* +X1014564Y92055D01* +X1014480Y92034D01* +X1014396Y92017D01* +X1014311Y92003D01* +X1014225Y91994D01* +X1014139Y91988D01* +X1014053Y91986D01* +X1013573Y91986D01* +X1013476Y91988D01* +X1013380Y91994D01* +X1013284Y92003D01* +X1013188Y92017D01* +X1013093Y92034D01* +X1012999Y92056D01* +X1012906Y92081D01* +X1012813Y92109D01* +X1012722Y92142D01* +X1012633Y92178D01* +X1012545Y92218D01* +X1012458Y92261D01* +X1012374Y92307D01* +X1012291Y92357D01* +X1012210Y92411D01* +X1012132Y92467D01* +X1012056Y92527D01* +X1011982Y92589D01* +X1011911Y92655D01* +X1011843Y92723D01* +X1011777Y92794D01* +X1011715Y92868D01* +X1011655Y92944D01* +X1011599Y93022D01* +X1011545Y93103D01* +X1011495Y93186D01* +X1011449Y93270D01* +X1011406Y93357D01* +X1011366Y93445D01* +X1011330Y93534D01* +X1011297Y93625D01* +X1011269Y93718D01* +X1011244Y93811D01* +X1011222Y93905D01* +X1011205Y94000D01* +X1011191Y94096D01* +X1011182Y94192D01* +X1011176Y94288D01* +X1011174Y94385D01* +X1011176Y94482D01* +X1011182Y94578D01* +X1011191Y94674D01* +X1011205Y94770D01* +X1011222Y94865D01* +X1011244Y94959D01* +X1011269Y95052D01* +X1011297Y95145D01* +X1011330Y95236D01* +X1011366Y95325D01* +X1011406Y95413D01* +X1011449Y95500D01* +X1011495Y95585D01* +X1011545Y95667D01* +X1011599Y95748D01* +X1011655Y95826D01* +X1011715Y95902D01* +X1011777Y95976D01* +X1011843Y96047D01* +X1011911Y96115D01* +X1011982Y96181D01* +X1012056Y96243D01* +X1012132Y96303D01* +X1012210Y96359D01* +X1012291Y96413D01* +X1012374Y96463D01* +X1012458Y96509D01* +X1012545Y96552D01* +X1012633Y96592D01* +X1012722Y96628D01* +X1012813Y96661D01* +X1012906Y96689D01* +X1012999Y96714D01* +X1013093Y96736D01* +X1013188Y96753D01* +X1013284Y96767D01* +X1013380Y96776D01* +X1013476Y96782D01* +X1013573Y96784D01* +X1015972Y96784D01* +X1016095Y96782D01* +X1016218Y96776D01* +X1016341Y96766D01* +X1016463Y96752D01* +X1016585Y96735D01* +X1016706Y96713D01* +X1016826Y96688D01* +X1016946Y96658D01* +X1017064Y96625D01* +X1017181Y96588D01* +X1017298Y96548D01* +X1017412Y96504D01* +X1017526Y96456D01* +X1017637Y96404D01* +X1017747Y96349D01* +X1017855Y96290D01* +X1017962Y96228D01* +X1018066Y96163D01* +X1018168Y96094D01* +X1018268Y96022D01* +X1018365Y95947D01* +X1018460Y95868D01* +X1018552Y95787D01* +X1018642Y95703D01* +X1018729Y95616D01* +X1018813Y95526D01* +X1018894Y95434D01* +X1018973Y95339D01* +X1019048Y95242D01* +X1019120Y95142D01* +X1019189Y95040D01* +X1019254Y94936D01* +X1019316Y94829D01* +X1019375Y94721D01* +X1019430Y94611D01* +X1019482Y94500D01* +X1019530Y94386D01* +X1019574Y94272D01* +X1019614Y94155D01* +X1019651Y94038D01* +X1019684Y93920D01* +X1019714Y93800D01* +X1019739Y93680D01* +X1019761Y93559D01* +X1019778Y93437D01* +X1019792Y93315D01* +X1019802Y93192D01* +X1019808Y93069D01* +X1019810Y92946D01* +D15* +X690880Y83820D03* +D14* +X694436Y49040D02* +X694436Y47121D01* +X694434Y47035D01* +X694428Y46949D01* +X694419Y46863D01* +X694405Y46778D01* +X694388Y46694D01* +X694367Y46610D01* +X694342Y46528D01* +X694314Y46447D01* +X694282Y46367D01* +X694246Y46288D01* +X694207Y46212D01* +X694164Y46137D01* +X694119Y46064D01* +X694070Y45993D01* +X694017Y45925D01* +X693962Y45858D01* +X693904Y45795D01* +X693843Y45734D01* +X693780Y45676D01* +X693713Y45621D01* +X693645Y45569D01* +X693574Y45519D01* +X693501Y45474D01* +X693426Y45431D01* +X693350Y45392D01* +X693271Y45356D01* +X693191Y45324D01* +X693110Y45296D01* +X693028Y45271D01* +X692944Y45250D01* +X692860Y45233D01* +X692775Y45219D01* +X692689Y45210D01* +X692603Y45204D01* +X692517Y45202D01* +X687719Y45202D01* +X687633Y45204D01* +X687547Y45210D01* +X687461Y45219D01* +X687376Y45233D01* +X687292Y45250D01* +X687208Y45271D01* +X687126Y45296D01* +X687045Y45324D01* +X686965Y45356D01* +X686886Y45392D01* +X686810Y45431D01* +X686735Y45474D01* +X686662Y45519D01* +X686591Y45568D01* +X686523Y45621D01* +X686456Y45676D01* +X686393Y45734D01* +X686332Y45795D01* +X686274Y45858D01* +X686219Y45925D01* +X686167Y45993D01* +X686117Y46064D01* +X686072Y46137D01* +X686029Y46212D01* +X685990Y46288D01* +X685954Y46367D01* +X685922Y46447D01* +X685894Y46528D01* +X685869Y46610D01* +X685848Y46694D01* +X685831Y46778D01* +X685817Y46863D01* +X685808Y46949D01* +X685802Y47035D01* +X685800Y47121D01* +X685800Y49040D01* +X687719Y52860D02* +X685800Y55259D01* +X694436Y55259D01* +X694436Y52860D02* +X694436Y57658D01* +X689638Y62004D02* +X689638Y64883D01* +X689640Y64969D01* +X689646Y65055D01* +X689655Y65141D01* +X689669Y65226D01* +X689686Y65310D01* +X689707Y65394D01* +X689732Y65476D01* +X689760Y65557D01* +X689792Y65637D01* +X689828Y65716D01* +X689867Y65792D01* +X689910Y65867D01* +X689955Y65940D01* +X690005Y66011D01* +X690057Y66079D01* +X690112Y66146D01* +X690170Y66209D01* +X690231Y66270D01* +X690294Y66328D01* +X690361Y66383D01* +X690429Y66436D01* +X690500Y66485D01* +X690573Y66530D01* +X690648Y66573D01* +X690724Y66612D01* +X690803Y66648D01* +X690883Y66680D01* +X690964Y66708D01* +X691047Y66733D01* +X691130Y66754D01* +X691214Y66771D01* +X691299Y66785D01* +X691385Y66794D01* +X691471Y66800D01* +X691557Y66802D01* +X692037Y66802D01* +X692134Y66800D01* +X692230Y66794D01* +X692326Y66785D01* +X692422Y66771D01* +X692517Y66754D01* +X692611Y66732D01* +X692704Y66707D01* +X692797Y66679D01* +X692888Y66646D01* +X692977Y66610D01* +X693065Y66570D01* +X693152Y66527D01* +X693237Y66481D01* +X693319Y66431D01* +X693400Y66377D01* +X693478Y66321D01* +X693554Y66261D01* +X693628Y66199D01* +X693699Y66133D01* +X693767Y66065D01* +X693833Y65994D01* +X693895Y65920D01* +X693955Y65844D01* +X694011Y65766D01* +X694065Y65685D01* +X694115Y65602D01* +X694161Y65518D01* +X694204Y65431D01* +X694244Y65343D01* +X694280Y65254D01* +X694313Y65163D01* +X694341Y65070D01* +X694366Y64977D01* +X694388Y64883D01* +X694405Y64788D01* +X694419Y64692D01* +X694428Y64596D01* +X694434Y64500D01* +X694436Y64403D01* +X694434Y64306D01* +X694428Y64210D01* +X694419Y64114D01* +X694405Y64018D01* +X694388Y63923D01* +X694366Y63829D01* +X694341Y63736D01* +X694313Y63643D01* +X694280Y63552D01* +X694244Y63463D01* +X694204Y63375D01* +X694161Y63288D01* +X694115Y63203D01* +X694065Y63121D01* +X694011Y63040D01* +X693955Y62962D01* +X693895Y62886D01* +X693833Y62812D01* +X693767Y62741D01* +X693699Y62673D01* +X693628Y62607D01* +X693554Y62545D01* +X693478Y62485D01* +X693400Y62429D01* +X693319Y62375D01* +X693237Y62325D01* +X693152Y62279D01* +X693065Y62236D01* +X692977Y62196D01* +X692888Y62160D01* +X692797Y62127D01* +X692704Y62099D01* +X692611Y62074D01* +X692517Y62052D01* +X692422Y62035D01* +X692326Y62021D01* +X692230Y62012D01* +X692134Y62006D01* +X692037Y62004D01* +X689638Y62004D01* +X689638Y62005D02* +X689515Y62007D01* +X689392Y62013D01* +X689269Y62023D01* +X689147Y62037D01* +X689025Y62054D01* +X688904Y62076D01* +X688784Y62101D01* +X688664Y62131D01* +X688546Y62164D01* +X688429Y62201D01* +X688312Y62241D01* +X688198Y62285D01* +X688084Y62333D01* +X687973Y62385D01* +X687863Y62440D01* +X687755Y62499D01* +X687648Y62561D01* +X687544Y62626D01* +X687442Y62695D01* +X687342Y62767D01* +X687245Y62842D01* +X687150Y62921D01* +X687058Y63002D01* +X686968Y63086D01* +X686881Y63173D01* +X686797Y63263D01* +X686716Y63355D01* +X686637Y63450D01* +X686562Y63547D01* +X686490Y63647D01* +X686421Y63749D01* +X686356Y63853D01* +X686294Y63960D01* +X686235Y64068D01* +X686180Y64178D01* +X686128Y64289D01* +X686081Y64403D01* +X686036Y64517D01* +X685996Y64634D01* +X685959Y64751D01* +X685926Y64869D01* +X685896Y64989D01* +X685871Y65109D01* +X685849Y65230D01* +X685832Y65352D01* +X685818Y65474D01* +X685808Y65597D01* +X685802Y65720D01* +X685800Y65843D01* +D13* +X1051560Y91440D03* +D14* +X1056640Y105043D02* +X1056640Y106962D01* +X1056640Y105043D02* +X1056638Y104957D01* +X1056632Y104871D01* +X1056623Y104785D01* +X1056609Y104700D01* +X1056592Y104616D01* +X1056571Y104532D01* +X1056546Y104450D01* +X1056518Y104369D01* +X1056486Y104289D01* +X1056450Y104210D01* +X1056411Y104134D01* +X1056368Y104059D01* +X1056323Y103986D01* +X1056274Y103915D01* +X1056221Y103847D01* +X1056166Y103780D01* +X1056108Y103717D01* +X1056047Y103656D01* +X1055984Y103598D01* +X1055917Y103543D01* +X1055849Y103491D01* +X1055778Y103441D01* +X1055705Y103396D01* +X1055630Y103353D01* +X1055554Y103314D01* +X1055475Y103278D01* +X1055395Y103246D01* +X1055314Y103218D01* +X1055232Y103193D01* +X1055148Y103172D01* +X1055064Y103155D01* +X1054979Y103141D01* +X1054893Y103132D01* +X1054807Y103126D01* +X1054721Y103124D01* +X1049923Y103124D01* +X1049837Y103126D01* +X1049751Y103132D01* +X1049665Y103141D01* +X1049580Y103155D01* +X1049496Y103172D01* +X1049412Y103193D01* +X1049330Y103218D01* +X1049249Y103246D01* +X1049169Y103278D01* +X1049090Y103314D01* +X1049014Y103353D01* +X1048939Y103396D01* +X1048866Y103441D01* +X1048795Y103490D01* +X1048727Y103543D01* +X1048660Y103598D01* +X1048597Y103656D01* +X1048536Y103717D01* +X1048478Y103780D01* +X1048423Y103847D01* +X1048371Y103915D01* +X1048321Y103986D01* +X1048276Y104059D01* +X1048233Y104134D01* +X1048194Y104210D01* +X1048158Y104289D01* +X1048126Y104369D01* +X1048098Y104450D01* +X1048073Y104532D01* +X1048052Y104616D01* +X1048035Y104700D01* +X1048021Y104785D01* +X1048012Y104871D01* +X1048006Y104957D01* +X1048004Y105043D01* +X1048004Y106962D01* +X1054241Y110782D02* +X1054144Y110784D01* +X1054048Y110790D01* +X1053952Y110799D01* +X1053856Y110813D01* +X1053761Y110830D01* +X1053667Y110852D01* +X1053574Y110877D01* +X1053481Y110905D01* +X1053390Y110938D01* +X1053301Y110974D01* +X1053213Y111014D01* +X1053126Y111057D01* +X1053042Y111103D01* +X1052959Y111153D01* +X1052878Y111207D01* +X1052800Y111263D01* +X1052724Y111323D01* +X1052650Y111385D01* +X1052579Y111451D01* +X1052511Y111519D01* +X1052445Y111590D01* +X1052383Y111664D01* +X1052323Y111740D01* +X1052267Y111818D01* +X1052213Y111899D01* +X1052163Y111982D01* +X1052117Y112066D01* +X1052074Y112153D01* +X1052034Y112241D01* +X1051998Y112330D01* +X1051965Y112421D01* +X1051937Y112514D01* +X1051912Y112607D01* +X1051890Y112701D01* +X1051873Y112796D01* +X1051859Y112892D01* +X1051850Y112988D01* +X1051844Y113084D01* +X1051842Y113181D01* +X1051844Y113278D01* +X1051850Y113374D01* +X1051859Y113470D01* +X1051873Y113566D01* +X1051890Y113661D01* +X1051912Y113755D01* +X1051937Y113848D01* +X1051965Y113941D01* +X1051998Y114032D01* +X1052034Y114121D01* +X1052074Y114209D01* +X1052117Y114296D01* +X1052163Y114381D01* +X1052213Y114463D01* +X1052267Y114544D01* +X1052323Y114622D01* +X1052383Y114698D01* +X1052445Y114772D01* +X1052511Y114843D01* +X1052579Y114911D01* +X1052650Y114977D01* +X1052724Y115039D01* +X1052800Y115099D01* +X1052878Y115155D01* +X1052959Y115209D01* +X1053042Y115259D01* +X1053126Y115305D01* +X1053213Y115348D01* +X1053301Y115388D01* +X1053390Y115424D01* +X1053481Y115457D01* +X1053574Y115485D01* +X1053667Y115510D01* +X1053761Y115532D01* +X1053856Y115549D01* +X1053952Y115563D01* +X1054048Y115572D01* +X1054144Y115578D01* +X1054241Y115580D01* +X1054338Y115578D01* +X1054434Y115572D01* +X1054530Y115563D01* +X1054626Y115549D01* +X1054721Y115532D01* +X1054815Y115510D01* +X1054908Y115485D01* +X1055001Y115457D01* +X1055092Y115424D01* +X1055181Y115388D01* +X1055269Y115348D01* +X1055356Y115305D01* +X1055441Y115259D01* +X1055523Y115209D01* +X1055604Y115155D01* +X1055682Y115099D01* +X1055758Y115039D01* +X1055832Y114977D01* +X1055903Y114911D01* +X1055971Y114843D01* +X1056037Y114772D01* +X1056099Y114698D01* +X1056159Y114622D01* +X1056215Y114544D01* +X1056269Y114463D01* +X1056319Y114380D01* +X1056365Y114296D01* +X1056408Y114209D01* +X1056448Y114121D01* +X1056484Y114032D01* +X1056517Y113941D01* +X1056545Y113848D01* +X1056570Y113755D01* +X1056592Y113661D01* +X1056609Y113566D01* +X1056623Y113470D01* +X1056632Y113374D01* +X1056638Y113278D01* +X1056640Y113181D01* +X1056638Y113084D01* +X1056632Y112988D01* +X1056623Y112892D01* +X1056609Y112796D01* +X1056592Y112701D01* +X1056570Y112607D01* +X1056545Y112514D01* +X1056517Y112421D01* +X1056484Y112330D01* +X1056448Y112241D01* +X1056408Y112153D01* +X1056365Y112066D01* +X1056319Y111981D01* +X1056269Y111899D01* +X1056215Y111818D01* +X1056159Y111740D01* +X1056099Y111664D01* +X1056037Y111590D01* +X1055971Y111519D01* +X1055903Y111451D01* +X1055832Y111385D01* +X1055758Y111323D01* +X1055682Y111263D01* +X1055604Y111207D01* +X1055523Y111153D01* +X1055441Y111103D01* +X1055356Y111057D01* +X1055269Y111014D01* +X1055181Y110974D01* +X1055092Y110938D01* +X1055001Y110905D01* +X1054908Y110877D01* +X1054815Y110852D01* +X1054721Y110830D01* +X1054626Y110813D01* +X1054530Y110799D01* +X1054434Y110790D01* +X1054338Y110784D01* +X1054241Y110782D01* +X1049923Y111262D02* +X1049837Y111264D01* +X1049751Y111270D01* +X1049665Y111279D01* +X1049580Y111293D01* +X1049496Y111310D01* +X1049412Y111331D01* +X1049330Y111356D01* +X1049249Y111384D01* +X1049169Y111416D01* +X1049090Y111452D01* +X1049014Y111491D01* +X1048939Y111534D01* +X1048866Y111579D01* +X1048795Y111628D01* +X1048727Y111681D01* +X1048660Y111736D01* +X1048597Y111794D01* +X1048536Y111855D01* +X1048478Y111918D01* +X1048423Y111985D01* +X1048370Y112053D01* +X1048321Y112124D01* +X1048276Y112197D01* +X1048233Y112272D01* +X1048194Y112348D01* +X1048158Y112427D01* +X1048126Y112507D01* +X1048098Y112588D01* +X1048073Y112670D01* +X1048052Y112754D01* +X1048035Y112838D01* +X1048021Y112923D01* +X1048012Y113009D01* +X1048006Y113095D01* +X1048004Y113181D01* +X1048006Y113267D01* +X1048012Y113353D01* +X1048021Y113439D01* +X1048035Y113524D01* +X1048052Y113608D01* +X1048073Y113692D01* +X1048098Y113774D01* +X1048126Y113855D01* +X1048158Y113935D01* +X1048194Y114014D01* +X1048233Y114090D01* +X1048276Y114165D01* +X1048321Y114238D01* +X1048370Y114309D01* +X1048423Y114377D01* +X1048478Y114444D01* +X1048536Y114507D01* +X1048597Y114568D01* +X1048660Y114626D01* +X1048727Y114681D01* +X1048795Y114734D01* +X1048866Y114783D01* +X1048939Y114828D01* +X1049014Y114871D01* +X1049090Y114910D01* +X1049169Y114946D01* +X1049249Y114978D01* +X1049330Y115006D01* +X1049412Y115031D01* +X1049496Y115052D01* +X1049580Y115069D01* +X1049665Y115083D01* +X1049751Y115092D01* +X1049837Y115098D01* +X1049923Y115100D01* +X1050009Y115098D01* +X1050095Y115092D01* +X1050181Y115083D01* +X1050266Y115069D01* +X1050350Y115052D01* +X1050434Y115031D01* +X1050516Y115006D01* +X1050597Y114978D01* +X1050677Y114946D01* +X1050756Y114910D01* +X1050832Y114871D01* +X1050907Y114828D01* +X1050980Y114783D01* +X1051051Y114734D01* +X1051119Y114681D01* +X1051186Y114626D01* +X1051249Y114568D01* +X1051310Y114507D01* +X1051368Y114444D01* +X1051423Y114377D01* +X1051476Y114309D01* +X1051525Y114238D01* +X1051570Y114165D01* +X1051613Y114090D01* +X1051652Y114014D01* +X1051688Y113935D01* +X1051720Y113855D01* +X1051748Y113774D01* +X1051773Y113692D01* +X1051794Y113608D01* +X1051811Y113524D01* +X1051825Y113439D01* +X1051834Y113353D01* +X1051840Y113267D01* +X1051842Y113181D01* +X1051840Y113095D01* +X1051834Y113009D01* +X1051825Y112923D01* +X1051811Y112838D01* +X1051794Y112754D01* +X1051773Y112670D01* +X1051748Y112588D01* +X1051720Y112507D01* +X1051688Y112427D01* +X1051652Y112348D01* +X1051613Y112272D01* +X1051570Y112197D01* +X1051525Y112124D01* +X1051476Y112053D01* +X1051423Y111985D01* +X1051368Y111918D01* +X1051310Y111855D01* +X1051249Y111794D01* +X1051186Y111736D01* +X1051119Y111681D01* +X1051051Y111628D01* +X1050980Y111579D01* +X1050907Y111534D01* +X1050832Y111491D01* +X1050756Y111452D01* +X1050677Y111416D01* +X1050597Y111384D01* +X1050516Y111356D01* +X1050434Y111331D01* +X1050350Y111310D01* +X1050266Y111293D01* +X1050181Y111279D01* +X1050095Y111270D01* +X1050009Y111264D01* +X1049923Y111262D01* +D13* +X513080Y152400D03* +D14* +X506984Y147602D02* +X506984Y145683D01* +X506982Y145597D01* +X506976Y145511D01* +X506967Y145425D01* +X506953Y145340D01* +X506936Y145256D01* +X506915Y145172D01* +X506890Y145090D01* +X506862Y145009D01* +X506830Y144929D01* +X506794Y144850D01* +X506755Y144774D01* +X506712Y144699D01* +X506667Y144626D01* +X506618Y144555D01* +X506565Y144487D01* +X506510Y144420D01* +X506452Y144357D01* +X506391Y144296D01* +X506328Y144238D01* +X506261Y144183D01* +X506193Y144131D01* +X506122Y144081D01* +X506049Y144036D01* +X505974Y143993D01* +X505898Y143954D01* +X505819Y143918D01* +X505739Y143886D01* +X505658Y143858D01* +X505576Y143833D01* +X505492Y143812D01* +X505408Y143795D01* +X505323Y143781D01* +X505237Y143772D01* +X505151Y143766D01* +X505065Y143764D01* +X500267Y143764D01* +X500181Y143766D01* +X500095Y143772D01* +X500009Y143781D01* +X499924Y143795D01* +X499840Y143812D01* +X499756Y143833D01* +X499674Y143858D01* +X499593Y143886D01* +X499513Y143918D01* +X499434Y143954D01* +X499358Y143993D01* +X499283Y144036D01* +X499210Y144081D01* +X499139Y144130D01* +X499071Y144183D01* +X499004Y144238D01* +X498941Y144296D01* +X498880Y144357D01* +X498822Y144420D01* +X498767Y144487D01* +X498715Y144555D01* +X498665Y144626D01* +X498620Y144699D01* +X498577Y144774D01* +X498538Y144850D01* +X498502Y144929D01* +X498470Y145009D01* +X498442Y145090D01* +X498417Y145172D01* +X498396Y145256D01* +X498379Y145340D01* +X498365Y145425D01* +X498356Y145511D01* +X498350Y145597D01* +X498348Y145683D01* +X498348Y147602D01* +X498348Y154061D02* +X498350Y154153D01* +X498356Y154244D01* +X498365Y154335D01* +X498379Y154426D01* +X498396Y154516D01* +X498418Y154605D01* +X498443Y154693D01* +X498471Y154780D01* +X498504Y154866D01* +X498540Y154950D01* +X498579Y155033D01* +X498622Y155114D01* +X498669Y155193D01* +X498718Y155270D01* +X498771Y155345D01* +X498827Y155417D01* +X498886Y155487D01* +X498948Y155555D01* +X499013Y155620D01* +X499081Y155682D01* +X499151Y155741D01* +X499223Y155797D01* +X499298Y155850D01* +X499375Y155899D01* +X499454Y155946D01* +X499535Y155989D01* +X499618Y156028D01* +X499702Y156064D01* +X499788Y156097D01* +X499875Y156125D01* +X499963Y156150D01* +X500052Y156172D01* +X500142Y156189D01* +X500233Y156203D01* +X500324Y156212D01* +X500415Y156218D01* +X500507Y156220D01* +X498348Y154061D02* +X498350Y153958D01* +X498356Y153856D01* +X498365Y153754D01* +X498378Y153652D01* +X498395Y153551D01* +X498416Y153450D01* +X498440Y153351D01* +X498469Y153252D01* +X498500Y153155D01* +X498536Y153058D01* +X498574Y152963D01* +X498617Y152870D01* +X498663Y152778D01* +X498712Y152688D01* +X498764Y152600D01* +X498820Y152513D01* +X498879Y152429D01* +X498940Y152348D01* +X499005Y152268D01* +X499073Y152191D01* +X499144Y152116D01* +X499217Y152045D01* +X499293Y151976D01* +X499371Y151909D01* +X499452Y151846D01* +X499535Y151786D01* +X499620Y151729D01* +X499707Y151675D01* +X499797Y151624D01* +X499888Y151577D01* +X499980Y151533D01* +X500075Y151492D01* +X500170Y151455D01* +X500267Y151422D01* +X502186Y155500D02* +X502120Y155567D01* +X502051Y155631D01* +X501980Y155692D01* +X501906Y155750D01* +X501830Y155805D01* +X501752Y155857D01* +X501672Y155906D01* +X501590Y155952D01* +X501506Y155994D01* +X501420Y156033D01* +X501333Y156068D01* +X501245Y156099D01* +X501155Y156127D01* +X501065Y156152D01* +X500973Y156173D01* +X500881Y156190D01* +X500788Y156203D01* +X500695Y156212D01* +X500601Y156218D01* +X500507Y156220D01* +X502186Y155500D02* +X506984Y151422D01* +X506984Y156220D01* +X505065Y160566D02* +X498348Y162485D01* +X505065Y160566D02* +X505065Y165364D01* +X503146Y163925D02* +X506984Y163925D01* +D13* +X525780Y152400D03* +D14* +X538988Y145560D02* +X538988Y143641D01* +X538986Y143555D01* +X538980Y143469D01* +X538971Y143383D01* +X538957Y143298D01* +X538940Y143214D01* +X538919Y143130D01* +X538894Y143048D01* +X538866Y142967D01* +X538834Y142887D01* +X538798Y142808D01* +X538759Y142732D01* +X538716Y142657D01* +X538671Y142584D01* +X538622Y142513D01* +X538569Y142445D01* +X538514Y142378D01* +X538456Y142315D01* +X538395Y142254D01* +X538332Y142196D01* +X538265Y142141D01* +X538197Y142089D01* +X538126Y142039D01* +X538053Y141994D01* +X537978Y141951D01* +X537902Y141912D01* +X537823Y141876D01* +X537743Y141844D01* +X537662Y141816D01* +X537580Y141791D01* +X537496Y141770D01* +X537412Y141753D01* +X537327Y141739D01* +X537241Y141730D01* +X537155Y141724D01* +X537069Y141722D01* +X532271Y141722D01* +X532185Y141724D01* +X532099Y141730D01* +X532013Y141739D01* +X531928Y141753D01* +X531844Y141770D01* +X531760Y141791D01* +X531678Y141816D01* +X531597Y141844D01* +X531517Y141876D01* +X531438Y141912D01* +X531362Y141951D01* +X531287Y141994D01* +X531214Y142039D01* +X531143Y142088D01* +X531075Y142141D01* +X531008Y142196D01* +X530945Y142254D01* +X530884Y142315D01* +X530826Y142378D01* +X530771Y142445D01* +X530719Y142513D01* +X530669Y142584D01* +X530624Y142657D01* +X530581Y142732D01* +X530542Y142808D01* +X530506Y142887D01* +X530474Y142967D01* +X530446Y143048D01* +X530421Y143130D01* +X530400Y143214D01* +X530383Y143298D01* +X530369Y143383D01* +X530360Y143469D01* +X530354Y143555D01* +X530352Y143641D01* +X530352Y145560D01* +X530352Y152019D02* +X530354Y152111D01* +X530360Y152202D01* +X530369Y152293D01* +X530383Y152384D01* +X530400Y152474D01* +X530422Y152563D01* +X530447Y152651D01* +X530475Y152738D01* +X530508Y152824D01* +X530544Y152908D01* +X530583Y152991D01* +X530626Y153072D01* +X530673Y153151D01* +X530722Y153228D01* +X530775Y153303D01* +X530831Y153375D01* +X530890Y153445D01* +X530952Y153513D01* +X531017Y153578D01* +X531085Y153640D01* +X531155Y153699D01* +X531227Y153755D01* +X531302Y153808D01* +X531379Y153857D01* +X531458Y153904D01* +X531539Y153947D01* +X531622Y153986D01* +X531706Y154022D01* +X531792Y154055D01* +X531879Y154083D01* +X531967Y154108D01* +X532056Y154130D01* +X532146Y154147D01* +X532237Y154161D01* +X532328Y154170D01* +X532419Y154176D01* +X532511Y154178D01* +X530352Y152019D02* +X530354Y151916D01* +X530360Y151814D01* +X530369Y151712D01* +X530382Y151610D01* +X530399Y151509D01* +X530420Y151408D01* +X530444Y151309D01* +X530473Y151210D01* +X530504Y151113D01* +X530540Y151016D01* +X530578Y150921D01* +X530621Y150828D01* +X530667Y150736D01* +X530716Y150646D01* +X530768Y150558D01* +X530824Y150471D01* +X530883Y150387D01* +X530944Y150306D01* +X531009Y150226D01* +X531077Y150149D01* +X531148Y150074D01* +X531221Y150003D01* +X531297Y149934D01* +X531375Y149867D01* +X531456Y149804D01* +X531539Y149744D01* +X531624Y149687D01* +X531711Y149633D01* +X531801Y149582D01* +X531892Y149535D01* +X531984Y149491D01* +X532079Y149450D01* +X532174Y149413D01* +X532271Y149380D01* +X534190Y153458D02* +X534124Y153525D01* +X534055Y153589D01* +X533984Y153650D01* +X533910Y153708D01* +X533834Y153763D01* +X533756Y153815D01* +X533676Y153864D01* +X533594Y153910D01* +X533510Y153952D01* +X533424Y153991D01* +X533337Y154026D01* +X533249Y154057D01* +X533159Y154085D01* +X533069Y154110D01* +X532977Y154131D01* +X532885Y154148D01* +X532792Y154161D01* +X532699Y154170D01* +X532605Y154176D01* +X532511Y154178D01* +X534190Y153458D02* +X538988Y149380D01* +X538988Y154178D01* +X538988Y158524D02* +X538988Y161403D01* +X538986Y161489D01* +X538980Y161575D01* +X538971Y161661D01* +X538957Y161746D01* +X538940Y161830D01* +X538919Y161914D01* +X538894Y161996D01* +X538866Y162077D01* +X538834Y162157D01* +X538798Y162236D01* +X538759Y162312D01* +X538716Y162387D01* +X538671Y162460D01* +X538622Y162531D01* +X538569Y162599D01* +X538514Y162666D01* +X538456Y162729D01* +X538395Y162790D01* +X538332Y162848D01* +X538265Y162903D01* +X538197Y162956D01* +X538126Y163005D01* +X538053Y163050D01* +X537978Y163093D01* +X537902Y163132D01* +X537823Y163168D01* +X537743Y163200D01* +X537662Y163228D01* +X537580Y163253D01* +X537496Y163274D01* +X537412Y163291D01* +X537327Y163305D01* +X537241Y163314D01* +X537155Y163320D01* +X537069Y163322D01* +X536109Y163322D01* +X536023Y163320D01* +X535937Y163314D01* +X535851Y163305D01* +X535766Y163291D01* +X535682Y163274D01* +X535598Y163253D01* +X535516Y163228D01* +X535435Y163200D01* +X535355Y163168D01* +X535276Y163132D01* +X535200Y163093D01* +X535125Y163050D01* +X535052Y163005D01* +X534981Y162956D01* +X534913Y162903D01* +X534846Y162848D01* +X534783Y162790D01* +X534722Y162729D01* +X534664Y162666D01* +X534609Y162599D01* +X534557Y162531D01* +X534507Y162460D01* +X534462Y162387D01* +X534419Y162312D01* +X534380Y162236D01* +X534344Y162157D01* +X534312Y162077D01* +X534284Y161996D01* +X534259Y161914D01* +X534238Y161830D01* +X534221Y161746D01* +X534207Y161661D01* +X534198Y161575D01* +X534192Y161489D01* +X534190Y161403D01* +X534190Y158524D01* +X530352Y158524D01* +X530352Y163322D01* +D13* +X264160Y302260D03* +D14* +X266954Y316879D02* +X266954Y318798D01* +X266954Y316879D02* +X266952Y316793D01* +X266946Y316707D01* +X266937Y316621D01* +X266923Y316536D01* +X266906Y316452D01* +X266885Y316368D01* +X266860Y316286D01* +X266832Y316205D01* +X266800Y316125D01* +X266764Y316046D01* +X266725Y315970D01* +X266682Y315895D01* +X266637Y315822D01* +X266588Y315751D01* +X266535Y315683D01* +X266480Y315616D01* +X266422Y315553D01* +X266361Y315492D01* +X266298Y315434D01* +X266231Y315379D01* +X266163Y315327D01* +X266092Y315277D01* +X266019Y315232D01* +X265944Y315189D01* +X265868Y315150D01* +X265789Y315114D01* +X265709Y315082D01* +X265628Y315054D01* +X265546Y315029D01* +X265462Y315008D01* +X265378Y314991D01* +X265293Y314977D01* +X265207Y314968D01* +X265121Y314962D01* +X265035Y314960D01* +X260237Y314960D01* +X260151Y314962D01* +X260065Y314968D01* +X259979Y314977D01* +X259894Y314991D01* +X259810Y315008D01* +X259726Y315029D01* +X259644Y315054D01* +X259563Y315082D01* +X259483Y315114D01* +X259404Y315150D01* +X259328Y315189D01* +X259253Y315232D01* +X259180Y315277D01* +X259109Y315326D01* +X259041Y315379D01* +X258974Y315434D01* +X258911Y315492D01* +X258850Y315553D01* +X258792Y315616D01* +X258737Y315683D01* +X258685Y315751D01* +X258635Y315822D01* +X258590Y315895D01* +X258547Y315970D01* +X258508Y316046D01* +X258472Y316125D01* +X258440Y316205D01* +X258412Y316286D01* +X258387Y316368D01* +X258366Y316452D01* +X258349Y316536D01* +X258335Y316621D01* +X258326Y316707D01* +X258320Y316793D01* +X258318Y316879D01* +X258318Y318798D01* +X262156Y322618D02* +X262156Y325497D01* +X262158Y325583D01* +X262164Y325669D01* +X262173Y325755D01* +X262187Y325840D01* +X262204Y325924D01* +X262225Y326008D01* +X262250Y326090D01* +X262278Y326171D01* +X262310Y326251D01* +X262346Y326330D01* +X262385Y326406D01* +X262428Y326481D01* +X262473Y326554D01* +X262523Y326625D01* +X262575Y326693D01* +X262630Y326760D01* +X262688Y326823D01* +X262749Y326884D01* +X262812Y326942D01* +X262879Y326997D01* +X262947Y327050D01* +X263018Y327099D01* +X263091Y327144D01* +X263166Y327187D01* +X263242Y327226D01* +X263321Y327262D01* +X263401Y327294D01* +X263482Y327322D01* +X263565Y327347D01* +X263648Y327368D01* +X263732Y327385D01* +X263817Y327399D01* +X263903Y327408D01* +X263989Y327414D01* +X264075Y327416D01* +X264555Y327416D01* +X264652Y327414D01* +X264748Y327408D01* +X264844Y327399D01* +X264940Y327385D01* +X265035Y327368D01* +X265129Y327346D01* +X265222Y327321D01* +X265315Y327293D01* +X265406Y327260D01* +X265495Y327224D01* +X265583Y327184D01* +X265670Y327141D01* +X265755Y327095D01* +X265837Y327045D01* +X265918Y326991D01* +X265996Y326935D01* +X266072Y326875D01* +X266146Y326813D01* +X266217Y326747D01* +X266285Y326679D01* +X266351Y326608D01* +X266413Y326534D01* +X266473Y326458D01* +X266529Y326380D01* +X266583Y326299D01* +X266633Y326217D01* +X266679Y326132D01* +X266722Y326045D01* +X266762Y325957D01* +X266798Y325868D01* +X266831Y325777D01* +X266859Y325684D01* +X266884Y325591D01* +X266906Y325497D01* +X266923Y325402D01* +X266937Y325306D01* +X266946Y325210D01* +X266952Y325114D01* +X266954Y325017D01* +X266952Y324920D01* +X266946Y324824D01* +X266937Y324728D01* +X266923Y324632D01* +X266906Y324537D01* +X266884Y324443D01* +X266859Y324350D01* +X266831Y324257D01* +X266798Y324166D01* +X266762Y324077D01* +X266722Y323989D01* +X266679Y323902D01* +X266633Y323818D01* +X266583Y323735D01* +X266529Y323654D01* +X266473Y323576D01* +X266413Y323500D01* +X266351Y323426D01* +X266285Y323355D01* +X266217Y323287D01* +X266146Y323221D01* +X266072Y323159D01* +X265996Y323099D01* +X265918Y323043D01* +X265837Y322989D01* +X265755Y322939D01* +X265670Y322893D01* +X265583Y322850D01* +X265495Y322810D01* +X265406Y322774D01* +X265315Y322741D01* +X265222Y322713D01* +X265129Y322688D01* +X265035Y322666D01* +X264940Y322649D01* +X264844Y322635D01* +X264748Y322626D01* +X264652Y322620D01* +X264555Y322618D01* +X262156Y322618D01* +X262033Y322620D01* +X261910Y322626D01* +X261787Y322636D01* +X261665Y322650D01* +X261543Y322667D01* +X261422Y322689D01* +X261302Y322714D01* +X261182Y322744D01* +X261064Y322777D01* +X260947Y322814D01* +X260830Y322854D01* +X260716Y322898D01* +X260602Y322946D01* +X260491Y322998D01* +X260381Y323053D01* +X260273Y323112D01* +X260166Y323174D01* +X260062Y323239D01* +X259960Y323308D01* +X259860Y323380D01* +X259763Y323455D01* +X259668Y323534D01* +X259576Y323615D01* +X259486Y323699D01* +X259399Y323786D01* +X259315Y323876D01* +X259234Y323968D01* +X259155Y324063D01* +X259080Y324160D01* +X259008Y324260D01* +X258939Y324362D01* +X258874Y324466D01* +X258812Y324573D01* +X258753Y324681D01* +X258698Y324791D01* +X258646Y324902D01* +X258599Y325016D01* +X258554Y325130D01* +X258514Y325247D01* +X258477Y325364D01* +X258444Y325482D01* +X258414Y325602D01* +X258389Y325722D01* +X258367Y325843D01* +X258350Y325965D01* +X258336Y326087D01* +X258326Y326210D01* +X258320Y326333D01* +X258318Y326456D01* +D13* +X276860Y302260D03* +D14* +X282194Y316879D02* +X282194Y318798D01* +X282194Y316879D02* +X282192Y316793D01* +X282186Y316707D01* +X282177Y316621D01* +X282163Y316536D01* +X282146Y316452D01* +X282125Y316368D01* +X282100Y316286D01* +X282072Y316205D01* +X282040Y316125D01* +X282004Y316046D01* +X281965Y315970D01* +X281922Y315895D01* +X281877Y315822D01* +X281828Y315751D01* +X281775Y315683D01* +X281720Y315616D01* +X281662Y315553D01* +X281601Y315492D01* +X281538Y315434D01* +X281471Y315379D01* +X281403Y315327D01* +X281332Y315277D01* +X281259Y315232D01* +X281184Y315189D01* +X281108Y315150D01* +X281029Y315114D01* +X280949Y315082D01* +X280868Y315054D01* +X280786Y315029D01* +X280702Y315008D01* +X280618Y314991D01* +X280533Y314977D01* +X280447Y314968D01* +X280361Y314962D01* +X280275Y314960D01* +X275477Y314960D01* +X275391Y314962D01* +X275305Y314968D01* +X275219Y314977D01* +X275134Y314991D01* +X275050Y315008D01* +X274966Y315029D01* +X274884Y315054D01* +X274803Y315082D01* +X274723Y315114D01* +X274644Y315150D01* +X274568Y315189D01* +X274493Y315232D01* +X274420Y315277D01* +X274349Y315326D01* +X274281Y315379D01* +X274214Y315434D01* +X274151Y315492D01* +X274090Y315553D01* +X274032Y315616D01* +X273977Y315683D01* +X273925Y315751D01* +X273875Y315822D01* +X273830Y315895D01* +X273787Y315970D01* +X273748Y316046D01* +X273712Y316125D01* +X273680Y316205D01* +X273652Y316286D01* +X273627Y316368D01* +X273606Y316452D01* +X273589Y316536D01* +X273575Y316621D01* +X273566Y316707D01* +X273560Y316793D01* +X273558Y316879D01* +X273558Y318798D01* +X273558Y322618D02* +X274518Y322618D01* +X273558Y322618D02* +X273558Y327416D01* +X282194Y325017D01* +D13* +X309880Y302260D03* +D14* +X313690Y316625D02* +X313690Y318544D01* +X313690Y316625D02* +X313688Y316539D01* +X313682Y316453D01* +X313673Y316367D01* +X313659Y316282D01* +X313642Y316198D01* +X313621Y316114D01* +X313596Y316032D01* +X313568Y315951D01* +X313536Y315871D01* +X313500Y315792D01* +X313461Y315716D01* +X313418Y315641D01* +X313373Y315568D01* +X313324Y315497D01* +X313271Y315429D01* +X313216Y315362D01* +X313158Y315299D01* +X313097Y315238D01* +X313034Y315180D01* +X312967Y315125D01* +X312899Y315073D01* +X312828Y315023D01* +X312755Y314978D01* +X312680Y314935D01* +X312604Y314896D01* +X312525Y314860D01* +X312445Y314828D01* +X312364Y314800D01* +X312282Y314775D01* +X312198Y314754D01* +X312114Y314737D01* +X312029Y314723D01* +X311943Y314714D01* +X311857Y314708D01* +X311771Y314706D01* +X306973Y314706D01* +X306887Y314708D01* +X306801Y314714D01* +X306715Y314723D01* +X306630Y314737D01* +X306546Y314754D01* +X306462Y314775D01* +X306380Y314800D01* +X306299Y314828D01* +X306219Y314860D01* +X306140Y314896D01* +X306064Y314935D01* +X305989Y314978D01* +X305916Y315023D01* +X305845Y315072D01* +X305777Y315125D01* +X305710Y315180D01* +X305647Y315238D01* +X305586Y315299D01* +X305528Y315362D01* +X305473Y315429D01* +X305421Y315497D01* +X305371Y315568D01* +X305326Y315641D01* +X305283Y315716D01* +X305244Y315792D01* +X305208Y315871D01* +X305176Y315951D01* +X305148Y316032D01* +X305123Y316114D01* +X305102Y316198D01* +X305085Y316282D01* +X305071Y316367D01* +X305062Y316453D01* +X305056Y316539D01* +X305054Y316625D01* +X305054Y318544D01* +X306973Y322364D02* +X305054Y324763D01* +X313690Y324763D01* +X313690Y322364D02* +X313690Y327162D01* +X309372Y331508D02* +X309202Y331510D01* +X309032Y331516D01* +X308863Y331526D01* +X308693Y331540D01* +X308524Y331559D01* +X308356Y331581D01* +X308188Y331607D01* +X308021Y331637D01* +X307855Y331672D01* +X307689Y331710D01* +X307524Y331752D01* +X307361Y331798D01* +X307199Y331848D01* +X307037Y331902D01* +X306878Y331959D01* +X306719Y332021D01* +X306562Y332086D01* +X306407Y332155D01* +X306253Y332228D01* +X306177Y332256D01* +X306102Y332288D01* +X306028Y332323D01* +X305956Y332361D01* +X305886Y332403D01* +X305818Y332448D01* +X305752Y332496D01* +X305688Y332547D01* +X305627Y332601D01* +X305568Y332657D01* +X305512Y332717D01* +X305459Y332778D01* +X305409Y332842D01* +X305361Y332909D01* +X305317Y332977D01* +X305276Y333048D01* +X305238Y333120D01* +X305204Y333194D01* +X305173Y333269D01* +X305145Y333346D01* +X305121Y333424D01* +X305101Y333503D01* +X305084Y333583D01* +X305071Y333663D01* +X305061Y333744D01* +X305056Y333825D01* +X305054Y333907D01* +X305056Y333989D01* +X305061Y334070D01* +X305071Y334151D01* +X305084Y334231D01* +X305101Y334311D01* +X305121Y334390D01* +X305145Y334468D01* +X305173Y334545D01* +X305204Y334620D01* +X305238Y334694D01* +X305276Y334766D01* +X305317Y334837D01* +X305361Y334905D01* +X305409Y334972D01* +X305459Y335036D01* +X305512Y335097D01* +X305568Y335157D01* +X305627Y335213D01* +X305688Y335267D01* +X305752Y335318D01* +X305818Y335366D01* +X305886Y335411D01* +X305956Y335453D01* +X306028Y335491D01* +X306102Y335526D01* +X306177Y335558D01* +X306253Y335586D01* +X306407Y335659D01* +X306562Y335728D01* +X306719Y335793D01* +X306878Y335855D01* +X307037Y335912D01* +X307199Y335966D01* +X307361Y336016D01* +X307524Y336062D01* +X307689Y336104D01* +X307855Y336142D01* +X308021Y336177D01* +X308188Y336207D01* +X308356Y336233D01* +X308524Y336255D01* +X308693Y336274D01* +X308863Y336288D01* +X309032Y336298D01* +X309202Y336304D01* +X309372Y336306D01* +X309372Y331508D02* +X309542Y331510D01* +X309712Y331516D01* +X309881Y331526D01* +X310051Y331540D01* +X310220Y331559D01* +X310388Y331581D01* +X310556Y331607D01* +X310723Y331637D01* +X310889Y331672D01* +X311055Y331710D01* +X311220Y331752D01* +X311383Y331798D01* +X311545Y331848D01* +X311707Y331902D01* +X311866Y331959D01* +X312025Y332021D01* +X312182Y332086D01* +X312337Y332155D01* +X312491Y332228D01* +X312567Y332256D01* +X312642Y332288D01* +X312716Y332323D01* +X312788Y332361D01* +X312858Y332403D01* +X312926Y332448D01* +X312992Y332496D01* +X313056Y332547D01* +X313117Y332601D01* +X313176Y332657D01* +X313232Y332717D01* +X313285Y332778D01* +X313335Y332842D01* +X313383Y332909D01* +X313427Y332977D01* +X313468Y333048D01* +X313506Y333120D01* +X313540Y333194D01* +X313571Y333269D01* +X313599Y333346D01* +X313623Y333424D01* +X313643Y333503D01* +X313660Y333583D01* +X313673Y333663D01* +X313683Y333744D01* +X313688Y333825D01* +X313690Y333907D01* +X312491Y335586D02* +X312337Y335659D01* +X312182Y335728D01* +X312025Y335793D01* +X311866Y335855D01* +X311707Y335912D01* +X311545Y335966D01* +X311383Y336016D01* +X311220Y336062D01* +X311055Y336104D01* +X310889Y336142D01* +X310723Y336177D01* +X310556Y336207D01* +X310388Y336233D01* +X310220Y336255D01* +X310051Y336274D01* +X309881Y336288D01* +X309712Y336298D01* +X309542Y336304D01* +X309372Y336306D01* +X312491Y335586D02* +X312567Y335558D01* +X312642Y335526D01* +X312716Y335491D01* +X312788Y335453D01* +X312858Y335411D01* +X312926Y335366D01* +X312992Y335318D01* +X313056Y335267D01* +X313117Y335213D01* +X313176Y335157D01* +X313232Y335097D01* +X313285Y335036D01* +X313335Y334972D01* +X313383Y334905D01* +X313427Y334837D01* +X313468Y334766D01* +X313506Y334694D01* +X313540Y334620D01* +X313571Y334545D01* +X313599Y334468D01* +X313623Y334390D01* +X313643Y334311D01* +X313660Y334231D01* +X313673Y334151D01* +X313683Y334070D01* +X313688Y333989D01* +X313690Y333907D01* +X311771Y331988D02* +X306973Y335826D01* +D19* +X510540Y60960D03* +D14* +X522986Y36807D02* +X531622Y36807D01* +X522986Y36807D02* +X522986Y39206D01* +X522988Y39303D01* +X522994Y39399D01* +X523003Y39495D01* +X523017Y39591D01* +X523034Y39686D01* +X523056Y39780D01* +X523081Y39873D01* +X523109Y39966D01* +X523142Y40057D01* +X523178Y40146D01* +X523218Y40234D01* +X523261Y40321D01* +X523307Y40406D01* +X523357Y40488D01* +X523411Y40569D01* +X523467Y40647D01* +X523527Y40723D01* +X523589Y40797D01* +X523655Y40868D01* +X523723Y40936D01* +X523794Y41002D01* +X523868Y41064D01* +X523944Y41124D01* +X524022Y41180D01* +X524103Y41234D01* +X524186Y41284D01* +X524270Y41330D01* +X524357Y41373D01* +X524445Y41413D01* +X524534Y41449D01* +X524625Y41482D01* +X524718Y41510D01* +X524811Y41535D01* +X524905Y41557D01* +X525000Y41574D01* +X525096Y41588D01* +X525192Y41597D01* +X525288Y41603D01* +X525385Y41605D01* +X529223Y41605D01* +X529320Y41603D01* +X529416Y41597D01* +X529512Y41588D01* +X529608Y41574D01* +X529703Y41557D01* +X529797Y41535D01* +X529890Y41510D01* +X529983Y41482D01* +X530074Y41449D01* +X530163Y41413D01* +X530251Y41373D01* +X530338Y41330D01* +X530423Y41284D01* +X530505Y41234D01* +X530586Y41180D01* +X530664Y41124D01* +X530740Y41064D01* +X530814Y41002D01* +X530885Y40936D01* +X530953Y40868D01* +X531019Y40797D01* +X531081Y40723D01* +X531141Y40647D01* +X531197Y40569D01* +X531251Y40488D01* +X531301Y40406D01* +X531347Y40321D01* +X531390Y40234D01* +X531430Y40146D01* +X531466Y40057D01* +X531499Y39966D01* +X531527Y39873D01* +X531552Y39780D01* +X531574Y39686D01* +X531591Y39591D01* +X531605Y39495D01* +X531614Y39399D01* +X531620Y39303D01* +X531622Y39206D01* +X531622Y36807D01* +X524905Y46256D02* +X522986Y48655D01* +X531622Y48655D01* +X531622Y46256D02* +X531622Y51054D01* +D13* +X180340Y347980D03* +D14* +X197358Y347490D02* +X197358Y345571D01* +X197356Y345485D01* +X197350Y345399D01* +X197341Y345313D01* +X197327Y345228D01* +X197310Y345144D01* +X197289Y345060D01* +X197264Y344978D01* +X197236Y344897D01* +X197204Y344817D01* +X197168Y344738D01* +X197129Y344662D01* +X197086Y344587D01* +X197041Y344514D01* +X196992Y344443D01* +X196939Y344375D01* +X196884Y344308D01* +X196826Y344245D01* +X196765Y344184D01* +X196702Y344126D01* +X196635Y344071D01* +X196567Y344019D01* +X196496Y343969D01* +X196423Y343924D01* +X196348Y343881D01* +X196272Y343842D01* +X196193Y343806D01* +X196113Y343774D01* +X196032Y343746D01* +X195950Y343721D01* +X195866Y343700D01* +X195782Y343683D01* +X195697Y343669D01* +X195611Y343660D01* +X195525Y343654D01* +X195439Y343652D01* +X190641Y343652D01* +X190555Y343654D01* +X190469Y343660D01* +X190383Y343669D01* +X190298Y343683D01* +X190214Y343700D01* +X190130Y343721D01* +X190048Y343746D01* +X189967Y343774D01* +X189887Y343806D01* +X189808Y343842D01* +X189732Y343881D01* +X189657Y343924D01* +X189584Y343969D01* +X189513Y344018D01* +X189445Y344071D01* +X189378Y344126D01* +X189315Y344184D01* +X189254Y344245D01* +X189196Y344308D01* +X189141Y344375D01* +X189089Y344443D01* +X189039Y344514D01* +X188994Y344587D01* +X188951Y344662D01* +X188912Y344738D01* +X188876Y344817D01* +X188844Y344897D01* +X188816Y344978D01* +X188791Y345060D01* +X188770Y345144D01* +X188753Y345228D01* +X188739Y345313D01* +X188730Y345399D01* +X188724Y345485D01* +X188722Y345571D01* +X188722Y347490D01* +X197358Y351310D02* +X197358Y353709D01* +X197356Y353806D01* +X197350Y353902D01* +X197341Y353998D01* +X197327Y354094D01* +X197310Y354189D01* +X197288Y354283D01* +X197263Y354376D01* +X197235Y354469D01* +X197202Y354560D01* +X197166Y354649D01* +X197126Y354737D01* +X197083Y354824D01* +X197037Y354909D01* +X196987Y354991D01* +X196933Y355072D01* +X196877Y355150D01* +X196817Y355226D01* +X196755Y355300D01* +X196689Y355371D01* +X196621Y355439D01* +X196550Y355505D01* +X196476Y355567D01* +X196400Y355627D01* +X196322Y355683D01* +X196241Y355737D01* +X196159Y355787D01* +X196074Y355833D01* +X195987Y355876D01* +X195899Y355916D01* +X195810Y355952D01* +X195719Y355985D01* +X195626Y356013D01* +X195533Y356038D01* +X195439Y356060D01* +X195344Y356077D01* +X195248Y356091D01* +X195152Y356100D01* +X195056Y356106D01* +X194959Y356108D01* +X194862Y356106D01* +X194766Y356100D01* +X194670Y356091D01* +X194574Y356077D01* +X194479Y356060D01* +X194385Y356038D01* +X194292Y356013D01* +X194199Y355985D01* +X194108Y355952D01* +X194019Y355916D01* +X193931Y355876D01* +X193844Y355833D01* +X193760Y355787D01* +X193677Y355737D01* +X193596Y355683D01* +X193518Y355627D01* +X193442Y355567D01* +X193368Y355505D01* +X193297Y355439D01* +X193229Y355371D01* +X193163Y355300D01* +X193101Y355226D01* +X193041Y355150D01* +X192985Y355072D01* +X192931Y354991D01* +X192881Y354909D01* +X192835Y354824D01* +X192792Y354737D01* +X192752Y354649D01* +X192716Y354560D01* +X192683Y354469D01* +X192655Y354376D01* +X192630Y354283D01* +X192608Y354189D01* +X192591Y354094D01* +X192577Y353998D01* +X192568Y353902D01* +X192562Y353806D01* +X192560Y353709D01* +X188722Y354189D02* +X188722Y351310D01* +X188722Y354189D02* +X188724Y354275D01* +X188730Y354361D01* +X188739Y354447D01* +X188753Y354532D01* +X188770Y354616D01* +X188791Y354700D01* +X188816Y354782D01* +X188844Y354863D01* +X188876Y354943D01* +X188912Y355022D01* +X188951Y355098D01* +X188994Y355173D01* +X189039Y355246D01* +X189088Y355317D01* +X189141Y355385D01* +X189196Y355452D01* +X189254Y355515D01* +X189315Y355576D01* +X189378Y355634D01* +X189445Y355689D01* +X189513Y355742D01* +X189584Y355791D01* +X189657Y355836D01* +X189732Y355879D01* +X189808Y355918D01* +X189887Y355954D01* +X189967Y355986D01* +X190048Y356014D01* +X190130Y356039D01* +X190214Y356060D01* +X190298Y356077D01* +X190383Y356091D01* +X190469Y356100D01* +X190555Y356106D01* +X190641Y356108D01* +X190727Y356106D01* +X190813Y356100D01* +X190899Y356091D01* +X190984Y356077D01* +X191068Y356060D01* +X191152Y356039D01* +X191234Y356014D01* +X191315Y355986D01* +X191395Y355954D01* +X191474Y355918D01* +X191550Y355879D01* +X191625Y355836D01* +X191698Y355791D01* +X191769Y355742D01* +X191837Y355689D01* +X191904Y355634D01* +X191967Y355576D01* +X192028Y355515D01* +X192086Y355452D01* +X192141Y355385D01* +X192194Y355317D01* +X192243Y355246D01* +X192288Y355173D01* +X192331Y355098D01* +X192370Y355022D01* +X192406Y354943D01* +X192438Y354863D01* +X192466Y354782D01* +X192491Y354700D01* +X192512Y354616D01* +X192529Y354532D01* +X192543Y354447D01* +X192552Y354361D01* +X192558Y354275D01* +X192560Y354189D01* +X192560Y352270D01* +D18* +X444500Y243840D03* +D14* +X412042Y240538D02* +X412042Y249174D01* +X412042Y240538D02* +X415880Y240538D01* +X424434Y247015D02* +X424432Y247107D01* +X424426Y247198D01* +X424417Y247289D01* +X424403Y247380D01* +X424386Y247470D01* +X424364Y247559D01* +X424339Y247647D01* +X424311Y247734D01* +X424278Y247820D01* +X424242Y247904D01* +X424203Y247987D01* +X424160Y248068D01* +X424113Y248147D01* +X424064Y248224D01* +X424011Y248299D01* +X423955Y248371D01* +X423896Y248441D01* +X423834Y248509D01* +X423769Y248574D01* +X423701Y248636D01* +X423631Y248695D01* +X423559Y248751D01* +X423484Y248804D01* +X423407Y248853D01* +X423328Y248900D01* +X423247Y248943D01* +X423164Y248982D01* +X423080Y249018D01* +X422994Y249051D01* +X422907Y249079D01* +X422819Y249104D01* +X422730Y249126D01* +X422640Y249143D01* +X422549Y249157D01* +X422458Y249166D01* +X422367Y249172D01* +X422275Y249174D01* +X422172Y249172D01* +X422070Y249166D01* +X421968Y249157D01* +X421866Y249144D01* +X421765Y249127D01* +X421664Y249106D01* +X421565Y249082D01* +X421466Y249053D01* +X421369Y249022D01* +X421272Y248986D01* +X421177Y248948D01* +X421084Y248905D01* +X420992Y248859D01* +X420902Y248810D01* +X420814Y248758D01* +X420727Y248702D01* +X420643Y248643D01* +X420562Y248582D01* +X420482Y248517D01* +X420405Y248449D01* +X420330Y248378D01* +X420259Y248305D01* +X420190Y248229D01* +X420123Y248151D01* +X420060Y248070D01* +X420000Y247987D01* +X419943Y247902D01* +X419889Y247815D01* +X419838Y247725D01* +X419791Y247634D01* +X419747Y247542D01* +X419706Y247447D01* +X419669Y247352D01* +X419636Y247255D01* +X423714Y245336D02* +X423781Y245402D01* +X423845Y245471D01* +X423906Y245542D01* +X423964Y245616D01* +X424019Y245692D01* +X424071Y245770D01* +X424120Y245850D01* +X424166Y245932D01* +X424208Y246016D01* +X424247Y246102D01* +X424282Y246189D01* +X424313Y246277D01* +X424341Y246367D01* +X424366Y246457D01* +X424387Y246549D01* +X424404Y246641D01* +X424417Y246734D01* +X424426Y246827D01* +X424432Y246921D01* +X424434Y247015D01* +X423714Y245336D02* +X419636Y240538D01* +X424434Y240538D01* +D20* +X589620Y97200D02* +X589620Y80600D01* +X617118Y97200D02* +X619420Y94898D01* +X619420Y80600D01* +D21* +X623570Y95250D03* +D14* +X573763Y96774D02* +X573763Y90537D01* +X573765Y90440D01* +X573771Y90344D01* +X573780Y90248D01* +X573794Y90152D01* +X573811Y90057D01* +X573833Y89963D01* +X573858Y89870D01* +X573886Y89777D01* +X573919Y89686D01* +X573955Y89597D01* +X573995Y89509D01* +X574038Y89422D01* +X574084Y89338D01* +X574134Y89255D01* +X574188Y89174D01* +X574244Y89096D01* +X574304Y89020D01* +X574366Y88946D01* +X574432Y88875D01* +X574500Y88807D01* +X574571Y88741D01* +X574645Y88679D01* +X574721Y88619D01* +X574799Y88563D01* +X574880Y88509D01* +X574963Y88459D01* +X575047Y88413D01* +X575134Y88370D01* +X575222Y88330D01* +X575311Y88294D01* +X575402Y88261D01* +X575495Y88233D01* +X575588Y88208D01* +X575682Y88186D01* +X575777Y88169D01* +X575873Y88155D01* +X575969Y88146D01* +X576065Y88140D01* +X576162Y88138D01* +X576259Y88140D01* +X576355Y88146D01* +X576451Y88155D01* +X576547Y88169D01* +X576642Y88186D01* +X576736Y88208D01* +X576829Y88233D01* +X576922Y88261D01* +X577013Y88294D01* +X577102Y88330D01* +X577190Y88370D01* +X577277Y88413D01* +X577362Y88459D01* +X577444Y88509D01* +X577525Y88563D01* +X577603Y88619D01* +X577679Y88679D01* +X577753Y88741D01* +X577824Y88807D01* +X577892Y88875D01* +X577958Y88946D01* +X578020Y89020D01* +X578080Y89096D01* +X578136Y89174D01* +X578190Y89255D01* +X578240Y89337D01* +X578286Y89422D01* +X578329Y89509D01* +X578369Y89597D01* +X578405Y89686D01* +X578438Y89777D01* +X578466Y89870D01* +X578491Y89963D01* +X578513Y90057D01* +X578530Y90152D01* +X578544Y90248D01* +X578553Y90344D01* +X578559Y90440D01* +X578561Y90537D01* +X578561Y96774D01* +X583212Y88138D02* +X586091Y88138D01* +X586177Y88140D01* +X586263Y88146D01* +X586349Y88155D01* +X586434Y88169D01* +X586518Y88186D01* +X586602Y88207D01* +X586684Y88232D01* +X586765Y88260D01* +X586845Y88292D01* +X586924Y88328D01* +X587000Y88367D01* +X587075Y88410D01* +X587148Y88455D01* +X587219Y88505D01* +X587287Y88557D01* +X587354Y88612D01* +X587417Y88670D01* +X587478Y88731D01* +X587536Y88794D01* +X587591Y88861D01* +X587644Y88929D01* +X587693Y89000D01* +X587738Y89073D01* +X587781Y89148D01* +X587820Y89224D01* +X587856Y89303D01* +X587888Y89383D01* +X587916Y89464D01* +X587941Y89547D01* +X587962Y89630D01* +X587979Y89714D01* +X587993Y89799D01* +X588002Y89885D01* +X588008Y89971D01* +X588010Y90057D01* +X588010Y91017D01* +X588008Y91103D01* +X588002Y91189D01* +X587993Y91275D01* +X587979Y91360D01* +X587962Y91444D01* +X587941Y91528D01* +X587916Y91610D01* +X587888Y91691D01* +X587856Y91771D01* +X587820Y91850D01* +X587781Y91926D01* +X587738Y92001D01* +X587693Y92074D01* +X587644Y92145D01* +X587591Y92213D01* +X587536Y92280D01* +X587478Y92343D01* +X587417Y92404D01* +X587354Y92462D01* +X587287Y92517D01* +X587219Y92570D01* +X587148Y92619D01* +X587075Y92664D01* +X587000Y92707D01* +X586924Y92746D01* +X586845Y92782D01* +X586765Y92814D01* +X586684Y92842D01* +X586602Y92867D01* +X586518Y92888D01* +X586434Y92905D01* +X586349Y92919D01* +X586263Y92928D01* +X586177Y92934D01* +X586091Y92936D01* +X583212Y92936D01* +X583212Y96774D01* +X588010Y96774D01* +D22* +X657860Y93980D03* +D14* +X666086Y117234D02* +X666086Y125870D01* +X666086Y117234D02* +X669924Y117234D01* +X673680Y123951D02* +X676079Y125870D01* +X676079Y117234D01* +X673680Y117234D02* +X678478Y117234D01* +D17* +X599440Y63500D03* +D14* +X610108Y66802D02* +X610108Y58166D01* +X610108Y66802D02* +X612507Y66802D01* +X612604Y66800D01* +X612700Y66794D01* +X612796Y66785D01* +X612892Y66771D01* +X612987Y66754D01* +X613081Y66732D01* +X613174Y66707D01* +X613267Y66679D01* +X613358Y66646D01* +X613447Y66610D01* +X613535Y66570D01* +X613622Y66527D01* +X613707Y66481D01* +X613789Y66431D01* +X613870Y66377D01* +X613948Y66321D01* +X614024Y66261D01* +X614098Y66199D01* +X614169Y66133D01* +X614237Y66065D01* +X614303Y65994D01* +X614365Y65920D01* +X614425Y65844D01* +X614481Y65766D01* +X614535Y65685D01* +X614585Y65602D01* +X614631Y65518D01* +X614674Y65431D01* +X614714Y65343D01* +X614750Y65254D01* +X614783Y65163D01* +X614811Y65070D01* +X614836Y64977D01* +X614858Y64883D01* +X614875Y64788D01* +X614889Y64692D01* +X614898Y64596D01* +X614904Y64500D01* +X614906Y64403D01* +X614904Y64306D01* +X614898Y64210D01* +X614889Y64114D01* +X614875Y64018D01* +X614858Y63923D01* +X614836Y63829D01* +X614811Y63736D01* +X614783Y63643D01* +X614750Y63552D01* +X614714Y63463D01* +X614674Y63375D01* +X614631Y63288D01* +X614585Y63203D01* +X614535Y63121D01* +X614481Y63040D01* +X614425Y62962D01* +X614365Y62886D01* +X614303Y62812D01* +X614237Y62741D01* +X614169Y62673D01* +X614098Y62607D01* +X614024Y62545D01* +X613948Y62485D01* +X613870Y62429D01* +X613789Y62375D01* +X613707Y62325D01* +X613622Y62279D01* +X613535Y62236D01* +X613447Y62196D01* +X613358Y62160D01* +X613267Y62127D01* +X613174Y62099D01* +X613081Y62074D01* +X612987Y62052D01* +X612892Y62035D01* +X612796Y62021D01* +X612700Y62012D01* +X612604Y62006D01* +X612507Y62004D01* +X610108Y62004D01* +X612987Y62004D02* +X614906Y58166D01* +X619167Y64883D02* +X621566Y66802D01* +X621566Y58166D01* +X619167Y58166D02* +X623965Y58166D01* +X628311Y58166D02* +X631190Y58166D01* +X631276Y58168D01* +X631362Y58174D01* +X631448Y58183D01* +X631533Y58197D01* +X631617Y58214D01* +X631701Y58235D01* +X631783Y58260D01* +X631864Y58288D01* +X631944Y58320D01* +X632023Y58356D01* +X632099Y58395D01* +X632174Y58438D01* +X632247Y58483D01* +X632318Y58533D01* +X632386Y58585D01* +X632453Y58640D01* +X632516Y58698D01* +X632577Y58759D01* +X632635Y58822D01* +X632690Y58889D01* +X632743Y58957D01* +X632792Y59028D01* +X632837Y59101D01* +X632880Y59176D01* +X632919Y59252D01* +X632955Y59331D01* +X632987Y59411D01* +X633015Y59492D01* +X633040Y59575D01* +X633061Y59658D01* +X633078Y59742D01* +X633092Y59827D01* +X633101Y59913D01* +X633107Y59999D01* +X633109Y60085D01* +X633109Y61045D01* +X633107Y61131D01* +X633101Y61217D01* +X633092Y61303D01* +X633078Y61388D01* +X633061Y61472D01* +X633040Y61556D01* +X633015Y61638D01* +X632987Y61719D01* +X632955Y61799D01* +X632919Y61878D01* +X632880Y61954D01* +X632837Y62029D01* +X632792Y62102D01* +X632743Y62173D01* +X632690Y62241D01* +X632635Y62308D01* +X632577Y62371D01* +X632516Y62432D01* +X632453Y62490D01* +X632386Y62545D01* +X632318Y62598D01* +X632247Y62647D01* +X632174Y62692D01* +X632099Y62735D01* +X632023Y62774D01* +X631944Y62810D01* +X631864Y62842D01* +X631783Y62870D01* +X631701Y62895D01* +X631617Y62916D01* +X631533Y62933D01* +X631448Y62947D01* +X631362Y62956D01* +X631276Y62962D01* +X631190Y62964D01* +X628311Y62964D01* +X628311Y66802D01* +X633109Y66802D01* +D13* +X629920Y104140D03* +D14* +X634746Y75202D02* +X634746Y73283D01* +X634744Y73197D01* +X634738Y73111D01* +X634729Y73025D01* +X634715Y72940D01* +X634698Y72856D01* +X634677Y72772D01* +X634652Y72690D01* +X634624Y72609D01* +X634592Y72529D01* +X634556Y72450D01* +X634517Y72374D01* +X634474Y72299D01* +X634429Y72226D01* +X634380Y72155D01* +X634327Y72087D01* +X634272Y72020D01* +X634214Y71957D01* +X634153Y71896D01* +X634090Y71838D01* +X634023Y71783D01* +X633955Y71731D01* +X633884Y71681D01* +X633811Y71636D01* +X633736Y71593D01* +X633660Y71554D01* +X633581Y71518D01* +X633501Y71486D01* +X633420Y71458D01* +X633338Y71433D01* +X633254Y71412D01* +X633170Y71395D01* +X633085Y71381D01* +X632999Y71372D01* +X632913Y71366D01* +X632827Y71364D01* +X628029Y71364D01* +X627943Y71366D01* +X627857Y71372D01* +X627771Y71381D01* +X627686Y71395D01* +X627602Y71412D01* +X627518Y71433D01* +X627436Y71458D01* +X627355Y71486D01* +X627275Y71518D01* +X627196Y71554D01* +X627120Y71593D01* +X627045Y71636D01* +X626972Y71681D01* +X626901Y71730D01* +X626833Y71783D01* +X626766Y71838D01* +X626703Y71896D01* +X626642Y71957D01* +X626584Y72020D01* +X626529Y72087D01* +X626477Y72155D01* +X626427Y72226D01* +X626382Y72299D01* +X626339Y72374D01* +X626300Y72450D01* +X626264Y72529D01* +X626232Y72609D01* +X626204Y72690D01* +X626179Y72772D01* +X626158Y72856D01* +X626141Y72940D01* +X626127Y73025D01* +X626118Y73111D01* +X626112Y73197D01* +X626110Y73283D01* +X626110Y75202D01* +X628029Y79022D02* +X626110Y81421D01* +X634746Y81421D01* +X634746Y79022D02* +X634746Y83820D01* +X634746Y88166D02* +X634746Y91045D01* +X634744Y91131D01* +X634738Y91217D01* +X634729Y91303D01* +X634715Y91388D01* +X634698Y91472D01* +X634677Y91556D01* +X634652Y91638D01* +X634624Y91719D01* +X634592Y91799D01* +X634556Y91878D01* +X634517Y91954D01* +X634474Y92029D01* +X634429Y92102D01* +X634380Y92173D01* +X634327Y92241D01* +X634272Y92308D01* +X634214Y92371D01* +X634153Y92432D01* +X634090Y92490D01* +X634023Y92545D01* +X633955Y92598D01* +X633884Y92647D01* +X633811Y92692D01* +X633736Y92735D01* +X633660Y92774D01* +X633581Y92810D01* +X633501Y92842D01* +X633420Y92870D01* +X633338Y92895D01* +X633254Y92916D01* +X633170Y92933D01* +X633085Y92947D01* +X632999Y92956D01* +X632913Y92962D01* +X632827Y92964D01* +X631867Y92964D01* +X631781Y92962D01* +X631695Y92956D01* +X631609Y92947D01* +X631524Y92933D01* +X631440Y92916D01* +X631356Y92895D01* +X631274Y92870D01* +X631193Y92842D01* +X631113Y92810D01* +X631034Y92774D01* +X630958Y92735D01* +X630883Y92692D01* +X630810Y92647D01* +X630739Y92598D01* +X630671Y92545D01* +X630604Y92490D01* +X630541Y92432D01* +X630480Y92371D01* +X630422Y92308D01* +X630367Y92241D01* +X630315Y92173D01* +X630265Y92102D01* +X630220Y92029D01* +X630177Y91954D01* +X630138Y91878D01* +X630102Y91799D01* +X630070Y91719D01* +X630042Y91638D01* +X630017Y91556D01* +X629996Y91472D01* +X629979Y91388D01* +X629965Y91303D01* +X629956Y91217D01* +X629950Y91131D01* +X629948Y91045D01* +X629948Y88166D01* +X626110Y88166D01* +X626110Y92964D01* +D17* +X617220Y116840D03* +D14* +X630428Y118364D02* +X630428Y127000D01* +X632827Y127000D01* +X632924Y126998D01* +X633020Y126992D01* +X633116Y126983D01* +X633212Y126969D01* +X633307Y126952D01* +X633401Y126930D01* +X633494Y126905D01* +X633587Y126877D01* +X633678Y126844D01* +X633767Y126808D01* +X633855Y126768D01* +X633942Y126725D01* +X634027Y126679D01* +X634109Y126629D01* +X634190Y126575D01* +X634268Y126519D01* +X634344Y126459D01* +X634418Y126397D01* +X634489Y126331D01* +X634557Y126263D01* +X634623Y126192D01* +X634685Y126118D01* +X634745Y126042D01* +X634801Y125964D01* +X634855Y125883D01* +X634905Y125800D01* +X634951Y125716D01* +X634994Y125629D01* +X635034Y125541D01* +X635070Y125452D01* +X635103Y125361D01* +X635131Y125268D01* +X635156Y125175D01* +X635178Y125081D01* +X635195Y124986D01* +X635209Y124890D01* +X635218Y124794D01* +X635224Y124698D01* +X635226Y124601D01* +X635224Y124504D01* +X635218Y124408D01* +X635209Y124312D01* +X635195Y124216D01* +X635178Y124121D01* +X635156Y124027D01* +X635131Y123934D01* +X635103Y123841D01* +X635070Y123750D01* +X635034Y123661D01* +X634994Y123573D01* +X634951Y123486D01* +X634905Y123401D01* +X634855Y123319D01* +X634801Y123238D01* +X634745Y123160D01* +X634685Y123084D01* +X634623Y123010D01* +X634557Y122939D01* +X634489Y122871D01* +X634418Y122805D01* +X634344Y122743D01* +X634268Y122683D01* +X634190Y122627D01* +X634109Y122573D01* +X634027Y122523D01* +X633942Y122477D01* +X633855Y122434D01* +X633767Y122394D01* +X633678Y122358D01* +X633587Y122325D01* +X633494Y122297D01* +X633401Y122272D01* +X633307Y122250D01* +X633212Y122233D01* +X633116Y122219D01* +X633020Y122210D01* +X632924Y122204D01* +X632827Y122202D01* +X630428Y122202D01* +X633307Y122202D02* +X635226Y118364D01* +X642126Y127000D02* +X642218Y126998D01* +X642309Y126992D01* +X642400Y126983D01* +X642491Y126969D01* +X642581Y126952D01* +X642670Y126930D01* +X642758Y126905D01* +X642845Y126877D01* +X642931Y126844D01* +X643015Y126808D01* +X643098Y126769D01* +X643179Y126726D01* +X643258Y126679D01* +X643335Y126630D01* +X643410Y126577D01* +X643482Y126521D01* +X643552Y126462D01* +X643620Y126400D01* +X643685Y126335D01* +X643747Y126267D01* +X643806Y126197D01* +X643862Y126125D01* +X643915Y126050D01* +X643964Y125973D01* +X644011Y125894D01* +X644054Y125813D01* +X644093Y125730D01* +X644129Y125646D01* +X644162Y125560D01* +X644190Y125473D01* +X644215Y125385D01* +X644237Y125296D01* +X644254Y125206D01* +X644268Y125115D01* +X644277Y125024D01* +X644283Y124933D01* +X644285Y124841D01* +X642126Y127000D02* +X642023Y126998D01* +X641921Y126992D01* +X641819Y126983D01* +X641717Y126970D01* +X641616Y126953D01* +X641515Y126932D01* +X641416Y126908D01* +X641317Y126879D01* +X641220Y126848D01* +X641123Y126812D01* +X641028Y126774D01* +X640935Y126731D01* +X640843Y126685D01* +X640753Y126636D01* +X640665Y126584D01* +X640578Y126528D01* +X640494Y126469D01* +X640413Y126408D01* +X640333Y126343D01* +X640256Y126275D01* +X640181Y126204D01* +X640110Y126131D01* +X640041Y126055D01* +X639974Y125977D01* +X639911Y125896D01* +X639851Y125813D01* +X639794Y125728D01* +X639740Y125641D01* +X639689Y125551D01* +X639642Y125460D01* +X639598Y125368D01* +X639557Y125273D01* +X639520Y125178D01* +X639487Y125081D01* +X643565Y123162D02* +X643632Y123228D01* +X643696Y123297D01* +X643757Y123368D01* +X643815Y123442D01* +X643870Y123518D01* +X643922Y123596D01* +X643971Y123676D01* +X644017Y123758D01* +X644059Y123842D01* +X644098Y123928D01* +X644133Y124015D01* +X644164Y124103D01* +X644192Y124193D01* +X644217Y124283D01* +X644238Y124375D01* +X644255Y124467D01* +X644268Y124560D01* +X644277Y124653D01* +X644283Y124747D01* +X644285Y124841D01* +X643565Y123162D02* +X639487Y118364D01* +X644285Y118364D01* +X648631Y122682D02* +X648633Y122852D01* +X648639Y123022D01* +X648649Y123191D01* +X648663Y123361D01* +X648682Y123530D01* +X648704Y123698D01* +X648730Y123866D01* +X648760Y124033D01* +X648795Y124199D01* +X648833Y124365D01* +X648875Y124530D01* +X648921Y124693D01* +X648971Y124856D01* +X649025Y125017D01* +X649082Y125177D01* +X649144Y125335D01* +X649209Y125492D01* +X649278Y125647D01* +X649351Y125801D01* +X649379Y125877D01* +X649411Y125952D01* +X649446Y126026D01* +X649484Y126098D01* +X649526Y126168D01* +X649571Y126236D01* +X649619Y126302D01* +X649670Y126366D01* +X649724Y126427D01* +X649780Y126486D01* +X649840Y126542D01* +X649901Y126595D01* +X649965Y126645D01* +X650032Y126693D01* +X650100Y126737D01* +X650171Y126778D01* +X650243Y126816D01* +X650317Y126850D01* +X650392Y126881D01* +X650469Y126909D01* +X650547Y126933D01* +X650626Y126953D01* +X650706Y126970D01* +X650786Y126983D01* +X650867Y126993D01* +X650948Y126998D01* +X651030Y127000D01* +X651112Y126998D01* +X651193Y126993D01* +X651274Y126983D01* +X651354Y126970D01* +X651434Y126953D01* +X651513Y126933D01* +X651591Y126909D01* +X651668Y126881D01* +X651743Y126850D01* +X651817Y126816D01* +X651889Y126778D01* +X651960Y126737D01* +X652028Y126693D01* +X652095Y126645D01* +X652159Y126595D01* +X652220Y126542D01* +X652280Y126486D01* +X652336Y126427D01* +X652390Y126366D01* +X652441Y126302D01* +X652489Y126236D01* +X652534Y126168D01* +X652576Y126098D01* +X652614Y126026D01* +X652649Y125952D01* +X652681Y125877D01* +X652709Y125801D01* +X652782Y125647D01* +X652851Y125492D01* +X652916Y125335D01* +X652978Y125177D01* +X653035Y125017D01* +X653089Y124856D01* +X653139Y124693D01* +X653185Y124530D01* +X653227Y124365D01* +X653265Y124199D01* +X653300Y124033D01* +X653330Y123866D01* +X653356Y123698D01* +X653378Y123530D01* +X653397Y123361D01* +X653411Y123191D01* +X653421Y123022D01* +X653427Y122852D01* +X653429Y122682D01* +X648631Y122682D02* +X648633Y122512D01* +X648639Y122342D01* +X648649Y122173D01* +X648663Y122003D01* +X648682Y121834D01* +X648704Y121666D01* +X648730Y121498D01* +X648760Y121331D01* +X648795Y121165D01* +X648833Y120999D01* +X648875Y120834D01* +X648921Y120671D01* +X648971Y120509D01* +X649025Y120347D01* +X649082Y120188D01* +X649144Y120029D01* +X649209Y119872D01* +X649278Y119717D01* +X649351Y119563D01* +X649379Y119487D01* +X649411Y119412D01* +X649446Y119338D01* +X649484Y119266D01* +X649526Y119196D01* +X649571Y119128D01* +X649619Y119062D01* +X649670Y118998D01* +X649724Y118937D01* +X649780Y118878D01* +X649840Y118822D01* +X649901Y118769D01* +X649965Y118719D01* +X650032Y118671D01* +X650100Y118627D01* +X650171Y118586D01* +X650243Y118548D01* +X650317Y118514D01* +X650392Y118483D01* +X650469Y118455D01* +X650547Y118431D01* +X650626Y118411D01* +X650706Y118394D01* +X650786Y118381D01* +X650867Y118371D01* +X650948Y118366D01* +X651030Y118364D01* +X652709Y119563D02* +X652782Y119717D01* +X652851Y119872D01* +X652916Y120029D01* +X652978Y120188D01* +X653035Y120347D01* +X653089Y120509D01* +X653139Y120671D01* +X653185Y120834D01* +X653227Y120999D01* +X653265Y121165D01* +X653300Y121331D01* +X653330Y121498D01* +X653356Y121666D01* +X653378Y121834D01* +X653397Y122003D01* +X653411Y122173D01* +X653421Y122342D01* +X653427Y122512D01* +X653429Y122682D01* +X652709Y119563D02* +X652681Y119487D01* +X652649Y119412D01* +X652614Y119338D01* +X652576Y119266D01* +X652534Y119196D01* +X652489Y119128D01* +X652441Y119062D01* +X652390Y118998D01* +X652336Y118937D01* +X652280Y118878D01* +X652220Y118822D01* +X652159Y118769D01* +X652095Y118719D01* +X652028Y118671D01* +X651960Y118627D01* +X651889Y118586D01* +X651817Y118548D01* +X651743Y118514D01* +X651668Y118483D01* +X651591Y118455D01* +X651513Y118431D01* +X651434Y118411D01* +X651354Y118394D01* +X651274Y118381D01* +X651193Y118371D01* +X651112Y118366D01* +X651030Y118364D01* +X649111Y120283D02* +X652949Y125081D01* +D17* +X591820Y116840D03* +D14* +X563993Y111506D02* +X563993Y102870D01* +X563993Y111506D02* +X566392Y111506D01* +X566489Y111504D01* +X566585Y111498D01* +X566681Y111489D01* +X566777Y111475D01* +X566872Y111458D01* +X566966Y111436D01* +X567059Y111411D01* +X567152Y111383D01* +X567243Y111350D01* +X567332Y111314D01* +X567420Y111274D01* +X567507Y111231D01* +X567592Y111185D01* +X567674Y111135D01* +X567755Y111081D01* +X567833Y111025D01* +X567909Y110965D01* +X567983Y110903D01* +X568054Y110837D01* +X568122Y110769D01* +X568188Y110698D01* +X568250Y110624D01* +X568310Y110548D01* +X568366Y110470D01* +X568420Y110389D01* +X568470Y110306D01* +X568516Y110222D01* +X568559Y110135D01* +X568599Y110047D01* +X568635Y109958D01* +X568668Y109867D01* +X568696Y109774D01* +X568721Y109681D01* +X568743Y109587D01* +X568760Y109492D01* +X568774Y109396D01* +X568783Y109300D01* +X568789Y109204D01* +X568791Y109107D01* +X568789Y109010D01* +X568783Y108914D01* +X568774Y108818D01* +X568760Y108722D01* +X568743Y108627D01* +X568721Y108533D01* +X568696Y108440D01* +X568668Y108347D01* +X568635Y108256D01* +X568599Y108167D01* +X568559Y108079D01* +X568516Y107992D01* +X568470Y107907D01* +X568420Y107825D01* +X568366Y107744D01* +X568310Y107666D01* +X568250Y107590D01* +X568188Y107516D01* +X568122Y107445D01* +X568054Y107377D01* +X567983Y107311D01* +X567909Y107249D01* +X567833Y107189D01* +X567755Y107133D01* +X567674Y107079D01* +X567592Y107029D01* +X567507Y106983D01* +X567420Y106940D01* +X567332Y106900D01* +X567243Y106864D01* +X567152Y106831D01* +X567059Y106803D01* +X566966Y106778D01* +X566872Y106756D01* +X566777Y106739D01* +X566681Y106725D01* +X566585Y106716D01* +X566489Y106710D01* +X566392Y106708D01* +X563993Y106708D01* +X566872Y106708D02* +X568791Y102870D01* +X575691Y111506D02* +X575783Y111504D01* +X575874Y111498D01* +X575965Y111489D01* +X576056Y111475D01* +X576146Y111458D01* +X576235Y111436D01* +X576323Y111411D01* +X576410Y111383D01* +X576496Y111350D01* +X576580Y111314D01* +X576663Y111275D01* +X576744Y111232D01* +X576823Y111185D01* +X576900Y111136D01* +X576975Y111083D01* +X577047Y111027D01* +X577117Y110968D01* +X577185Y110906D01* +X577250Y110841D01* +X577312Y110773D01* +X577371Y110703D01* +X577427Y110631D01* +X577480Y110556D01* +X577529Y110479D01* +X577576Y110400D01* +X577619Y110319D01* +X577658Y110236D01* +X577694Y110152D01* +X577727Y110066D01* +X577755Y109979D01* +X577780Y109891D01* +X577802Y109802D01* +X577819Y109712D01* +X577833Y109621D01* +X577842Y109530D01* +X577848Y109439D01* +X577850Y109347D01* +X575691Y111506D02* +X575588Y111504D01* +X575486Y111498D01* +X575384Y111489D01* +X575282Y111476D01* +X575181Y111459D01* +X575080Y111438D01* +X574981Y111414D01* +X574882Y111385D01* +X574785Y111354D01* +X574688Y111318D01* +X574593Y111280D01* +X574500Y111237D01* +X574408Y111191D01* +X574318Y111142D01* +X574230Y111090D01* +X574143Y111034D01* +X574059Y110975D01* +X573978Y110914D01* +X573898Y110849D01* +X573821Y110781D01* +X573746Y110710D01* +X573675Y110637D01* +X573606Y110561D01* +X573539Y110483D01* +X573476Y110402D01* +X573416Y110319D01* +X573359Y110234D01* +X573305Y110147D01* +X573254Y110057D01* +X573207Y109966D01* +X573163Y109874D01* +X573122Y109779D01* +X573085Y109684D01* +X573052Y109587D01* +X577130Y107668D02* +X577197Y107734D01* +X577261Y107803D01* +X577322Y107874D01* +X577380Y107948D01* +X577435Y108024D01* +X577487Y108102D01* +X577536Y108182D01* +X577582Y108264D01* +X577624Y108348D01* +X577663Y108434D01* +X577698Y108521D01* +X577729Y108609D01* +X577757Y108699D01* +X577782Y108789D01* +X577803Y108881D01* +X577820Y108973D01* +X577833Y109066D01* +X577842Y109159D01* +X577848Y109253D01* +X577850Y109347D01* +X577130Y107668D02* +X573052Y102870D01* +X577850Y102870D01* +X582196Y109587D02* +X584595Y111506D01* +X584595Y102870D01* +X582196Y102870D02* +X586994Y102870D01* +D23* +X628400Y47960D02* +X632400Y47960D01* +X628400Y47960D02* +X628400Y68880D01* +X632400Y68880D01* +D24* +X652780Y58420D03* +D14* +X651244Y48400D02* +X651244Y39764D01* +X651244Y48400D02* +X653643Y48400D01* +X653740Y48398D01* +X653836Y48392D01* +X653932Y48383D01* +X654028Y48369D01* +X654123Y48352D01* +X654217Y48330D01* +X654310Y48305D01* +X654403Y48277D01* +X654494Y48244D01* +X654583Y48208D01* +X654671Y48168D01* +X654758Y48125D01* +X654843Y48079D01* +X654925Y48029D01* +X655006Y47975D01* +X655084Y47919D01* +X655160Y47859D01* +X655234Y47797D01* +X655305Y47731D01* +X655373Y47663D01* +X655439Y47592D01* +X655501Y47518D01* +X655561Y47442D01* +X655617Y47364D01* +X655671Y47283D01* +X655721Y47201D01* +X655767Y47116D01* +X655810Y47029D01* +X655850Y46941D01* +X655886Y46852D01* +X655919Y46761D01* +X655947Y46668D01* +X655972Y46575D01* +X655994Y46481D01* +X656011Y46386D01* +X656025Y46290D01* +X656034Y46194D01* +X656040Y46098D01* +X656042Y46001D01* +X656042Y42163D01* +X656040Y42066D01* +X656034Y41970D01* +X656025Y41874D01* +X656011Y41778D01* +X655994Y41683D01* +X655972Y41589D01* +X655947Y41496D01* +X655919Y41403D01* +X655886Y41312D01* +X655850Y41223D01* +X655810Y41135D01* +X655767Y41048D01* +X655721Y40963D01* +X655671Y40881D01* +X655617Y40800D01* +X655561Y40722D01* +X655501Y40646D01* +X655439Y40572D01* +X655373Y40501D01* +X655305Y40433D01* +X655234Y40367D01* +X655160Y40305D01* +X655084Y40245D01* +X655006Y40189D01* +X654925Y40135D01* +X654843Y40085D01* +X654758Y40039D01* +X654671Y39996D01* +X654583Y39956D01* +X654494Y39920D01* +X654403Y39887D01* +X654310Y39859D01* +X654217Y39834D01* +X654123Y39812D01* +X654028Y39795D01* +X653932Y39781D01* +X653836Y39772D01* +X653740Y39766D01* +X653643Y39764D01* +X651244Y39764D01* +X663332Y48400D02* +X663424Y48398D01* +X663515Y48392D01* +X663606Y48383D01* +X663697Y48369D01* +X663787Y48352D01* +X663876Y48330D01* +X663964Y48305D01* +X664051Y48277D01* +X664137Y48244D01* +X664221Y48208D01* +X664304Y48169D01* +X664385Y48126D01* +X664464Y48079D01* +X664541Y48030D01* +X664616Y47977D01* +X664688Y47921D01* +X664758Y47862D01* +X664826Y47800D01* +X664891Y47735D01* +X664953Y47667D01* +X665012Y47597D01* +X665068Y47525D01* +X665121Y47450D01* +X665170Y47373D01* +X665217Y47294D01* +X665260Y47213D01* +X665299Y47130D01* +X665335Y47046D01* +X665368Y46960D01* +X665396Y46873D01* +X665421Y46785D01* +X665443Y46696D01* +X665460Y46606D01* +X665474Y46515D01* +X665483Y46424D01* +X665489Y46333D01* +X665491Y46241D01* +X663332Y48400D02* +X663229Y48398D01* +X663127Y48392D01* +X663025Y48383D01* +X662923Y48370D01* +X662822Y48353D01* +X662721Y48332D01* +X662622Y48308D01* +X662523Y48279D01* +X662426Y48248D01* +X662329Y48212D01* +X662234Y48174D01* +X662141Y48131D01* +X662049Y48085D01* +X661959Y48036D01* +X661871Y47984D01* +X661784Y47928D01* +X661700Y47869D01* +X661619Y47808D01* +X661539Y47743D01* +X661462Y47675D01* +X661387Y47604D01* +X661316Y47531D01* +X661247Y47455D01* +X661180Y47377D01* +X661117Y47296D01* +X661057Y47213D01* +X661000Y47128D01* +X660946Y47041D01* +X660895Y46951D01* +X660848Y46860D01* +X660804Y46768D01* +X660763Y46673D01* +X660726Y46578D01* +X660693Y46481D01* +X664771Y44562D02* +X664838Y44628D01* +X664902Y44697D01* +X664963Y44768D01* +X665021Y44842D01* +X665076Y44918D01* +X665128Y44996D01* +X665177Y45076D01* +X665223Y45158D01* +X665265Y45242D01* +X665304Y45328D01* +X665339Y45415D01* +X665370Y45503D01* +X665398Y45593D01* +X665423Y45683D01* +X665444Y45775D01* +X665461Y45867D01* +X665474Y45960D01* +X665483Y46053D01* +X665489Y46147D01* +X665491Y46241D01* +X664771Y44562D02* +X660693Y39764D01* +X665491Y39764D01* +D17* +X553720Y116840D03* +D14* +X563005Y121666D02* +X564924Y121666D01* +X563005Y121666D02* +X562919Y121668D01* +X562833Y121674D01* +X562747Y121683D01* +X562662Y121697D01* +X562578Y121714D01* +X562494Y121735D01* +X562412Y121760D01* +X562331Y121788D01* +X562251Y121820D01* +X562172Y121856D01* +X562096Y121895D01* +X562021Y121938D01* +X561948Y121983D01* +X561877Y122032D01* +X561809Y122085D01* +X561742Y122140D01* +X561679Y122198D01* +X561618Y122259D01* +X561560Y122322D01* +X561505Y122389D01* +X561452Y122457D01* +X561403Y122528D01* +X561358Y122601D01* +X561315Y122676D01* +X561276Y122752D01* +X561240Y122831D01* +X561208Y122911D01* +X561180Y122992D01* +X561155Y123074D01* +X561134Y123158D01* +X561117Y123242D01* +X561103Y123327D01* +X561094Y123413D01* +X561088Y123499D01* +X561086Y123585D01* +X561086Y128383D01* +X561088Y128469D01* +X561094Y128555D01* +X561103Y128641D01* +X561117Y128726D01* +X561134Y128810D01* +X561155Y128894D01* +X561180Y128976D01* +X561208Y129057D01* +X561240Y129137D01* +X561276Y129216D01* +X561315Y129292D01* +X561358Y129367D01* +X561403Y129440D01* +X561452Y129511D01* +X561505Y129579D01* +X561560Y129646D01* +X561618Y129709D01* +X561679Y129770D01* +X561742Y129828D01* +X561809Y129883D01* +X561877Y129935D01* +X561948Y129985D01* +X562021Y130030D01* +X562096Y130073D01* +X562172Y130112D01* +X562251Y130148D01* +X562331Y130180D01* +X562412Y130208D01* +X562494Y130233D01* +X562578Y130254D01* +X562662Y130271D01* +X562747Y130285D01* +X562833Y130294D01* +X562919Y130300D01* +X563005Y130302D01* +X564924Y130302D01* +X568744Y128383D02* +X571143Y130302D01* +X571143Y121666D01* +X568744Y121666D02* +X573542Y121666D01* +X577888Y123585D02* +X579807Y130302D01* +X577888Y123585D02* +X582686Y123585D01* +X581247Y125504D02* +X581247Y121666D01* +D25* +X553720Y91440D03* +D14* +X531255Y85321D02* +X525018Y85321D01* +X531255Y85321D02* +X531352Y85323D01* +X531448Y85329D01* +X531544Y85338D01* +X531640Y85352D01* +X531735Y85369D01* +X531829Y85391D01* +X531922Y85416D01* +X532015Y85444D01* +X532106Y85477D01* +X532195Y85513D01* +X532283Y85553D01* +X532370Y85596D01* +X532455Y85642D01* +X532537Y85692D01* +X532618Y85746D01* +X532696Y85802D01* +X532772Y85862D01* +X532846Y85924D01* +X532917Y85990D01* +X532985Y86058D01* +X533051Y86129D01* +X533113Y86203D01* +X533173Y86279D01* +X533229Y86357D01* +X533283Y86438D01* +X533333Y86520D01* +X533379Y86605D01* +X533422Y86692D01* +X533462Y86780D01* +X533498Y86869D01* +X533531Y86960D01* +X533559Y87053D01* +X533584Y87146D01* +X533606Y87240D01* +X533623Y87335D01* +X533637Y87431D01* +X533646Y87527D01* +X533652Y87623D01* +X533654Y87720D01* +X533652Y87817D01* +X533646Y87913D01* +X533637Y88009D01* +X533623Y88105D01* +X533606Y88200D01* +X533584Y88294D01* +X533559Y88387D01* +X533531Y88480D01* +X533498Y88571D01* +X533462Y88660D01* +X533422Y88748D01* +X533379Y88835D01* +X533333Y88919D01* +X533283Y89002D01* +X533229Y89083D01* +X533173Y89161D01* +X533113Y89237D01* +X533051Y89311D01* +X532985Y89382D01* +X532917Y89450D01* +X532846Y89516D01* +X532772Y89578D01* +X532696Y89638D01* +X532618Y89694D01* +X532537Y89748D01* +X532455Y89798D01* +X532370Y89844D01* +X532283Y89887D01* +X532195Y89927D01* +X532106Y89963D01* +X532015Y89996D01* +X531922Y90024D01* +X531829Y90049D01* +X531735Y90071D01* +X531640Y90088D01* +X531544Y90102D01* +X531448Y90111D01* +X531352Y90117D01* +X531255Y90119D01* +X525018Y90119D01* +X525018Y96689D02* +X531735Y94770D01* +X531735Y99568D01* +X529816Y98129D02* +X533654Y98129D01* +D18* +X551180Y63500D03* +D14* +X543324Y46228D02* +X541405Y46228D01* +X541319Y46230D01* +X541233Y46236D01* +X541147Y46245D01* +X541062Y46259D01* +X540978Y46276D01* +X540894Y46297D01* +X540812Y46322D01* +X540731Y46350D01* +X540651Y46382D01* +X540572Y46418D01* +X540496Y46457D01* +X540421Y46500D01* +X540348Y46545D01* +X540277Y46594D01* +X540209Y46647D01* +X540142Y46702D01* +X540079Y46760D01* +X540018Y46821D01* +X539960Y46884D01* +X539905Y46951D01* +X539852Y47019D01* +X539803Y47090D01* +X539758Y47163D01* +X539715Y47238D01* +X539676Y47314D01* +X539640Y47393D01* +X539608Y47473D01* +X539580Y47554D01* +X539555Y47636D01* +X539534Y47720D01* +X539517Y47804D01* +X539503Y47889D01* +X539494Y47975D01* +X539488Y48061D01* +X539486Y48147D01* +X539486Y52945D01* +X539488Y53031D01* +X539494Y53117D01* +X539503Y53203D01* +X539517Y53288D01* +X539534Y53372D01* +X539555Y53456D01* +X539580Y53538D01* +X539608Y53619D01* +X539640Y53699D01* +X539676Y53778D01* +X539715Y53854D01* +X539758Y53929D01* +X539803Y54002D01* +X539852Y54073D01* +X539905Y54141D01* +X539960Y54208D01* +X540018Y54271D01* +X540079Y54332D01* +X540142Y54390D01* +X540209Y54445D01* +X540277Y54497D01* +X540348Y54547D01* +X540421Y54592D01* +X540496Y54635D01* +X540572Y54674D01* +X540651Y54710D01* +X540731Y54742D01* +X540812Y54770D01* +X540894Y54795D01* +X540978Y54816D01* +X541062Y54833D01* +X541147Y54847D01* +X541233Y54856D01* +X541319Y54862D01* +X541405Y54864D01* +X543324Y54864D01* +X547144Y52945D02* +X549543Y54864D01* +X549543Y46228D01* +X547144Y46228D02* +X551942Y46228D01* +X558927Y54864D02* +X559019Y54862D01* +X559110Y54856D01* +X559201Y54847D01* +X559292Y54833D01* +X559382Y54816D01* +X559471Y54794D01* +X559559Y54769D01* +X559646Y54741D01* +X559732Y54708D01* +X559816Y54672D01* +X559899Y54633D01* +X559980Y54590D01* +X560059Y54543D01* +X560136Y54494D01* +X560211Y54441D01* +X560283Y54385D01* +X560353Y54326D01* +X560421Y54264D01* +X560486Y54199D01* +X560548Y54131D01* +X560607Y54061D01* +X560663Y53989D01* +X560716Y53914D01* +X560765Y53837D01* +X560812Y53758D01* +X560855Y53677D01* +X560894Y53594D01* +X560930Y53510D01* +X560963Y53424D01* +X560991Y53337D01* +X561016Y53249D01* +X561038Y53160D01* +X561055Y53070D01* +X561069Y52979D01* +X561078Y52888D01* +X561084Y52797D01* +X561086Y52705D01* +X558927Y54864D02* +X558824Y54862D01* +X558722Y54856D01* +X558620Y54847D01* +X558518Y54834D01* +X558417Y54817D01* +X558316Y54796D01* +X558217Y54772D01* +X558118Y54743D01* +X558021Y54712D01* +X557924Y54676D01* +X557829Y54638D01* +X557736Y54595D01* +X557644Y54549D01* +X557554Y54500D01* +X557466Y54448D01* +X557379Y54392D01* +X557295Y54333D01* +X557214Y54272D01* +X557134Y54207D01* +X557057Y54139D01* +X556982Y54068D01* +X556911Y53995D01* +X556842Y53919D01* +X556775Y53841D01* +X556712Y53760D01* +X556652Y53677D01* +X556595Y53592D01* +X556541Y53505D01* +X556490Y53415D01* +X556443Y53324D01* +X556399Y53232D01* +X556358Y53137D01* +X556321Y53042D01* +X556288Y52945D01* +X560366Y51026D02* +X560433Y51092D01* +X560497Y51161D01* +X560558Y51232D01* +X560616Y51306D01* +X560671Y51382D01* +X560723Y51460D01* +X560772Y51540D01* +X560818Y51622D01* +X560860Y51706D01* +X560899Y51792D01* +X560934Y51879D01* +X560965Y51967D01* +X560993Y52057D01* +X561018Y52147D01* +X561039Y52239D01* +X561056Y52331D01* +X561069Y52424D01* +X561078Y52517D01* +X561084Y52611D01* +X561086Y52705D01* +X560366Y51026D02* +X556288Y46228D01* +X561086Y46228D01* +D20* +X605000Y130020D02* +X605000Y190020D01* +X665000Y190020D02* +X665000Y130020D01* +X665000Y190020D02* +X605000Y190020D01* +X605000Y130020D02* +X665000Y130020D01* +D26* +X635000Y160020D03* +D14* +X608641Y193782D02* +X608727Y193784D01* +X608813Y193790D01* +X608899Y193799D01* +X608984Y193813D01* +X609068Y193830D01* +X609152Y193851D01* +X609234Y193876D01* +X609315Y193904D01* +X609395Y193936D01* +X609474Y193972D01* +X609550Y194011D01* +X609625Y194054D01* +X609698Y194099D01* +X609769Y194149D01* +X609837Y194201D01* +X609904Y194256D01* +X609967Y194314D01* +X610028Y194375D01* +X610086Y194438D01* +X610141Y194505D01* +X610194Y194573D01* +X610243Y194644D01* +X610288Y194717D01* +X610331Y194792D01* +X610370Y194868D01* +X610406Y194947D01* +X610438Y195027D01* +X610466Y195108D01* +X610491Y195190D01* +X610512Y195274D01* +X610529Y195358D01* +X610543Y195443D01* +X610552Y195529D01* +X610558Y195615D01* +X610560Y195701D01* +X608641Y193782D02* +X608518Y193784D01* +X608395Y193789D01* +X608272Y193799D01* +X608150Y193812D01* +X608028Y193829D01* +X607906Y193849D01* +X607786Y193873D01* +X607666Y193901D01* +X607547Y193932D01* +X607429Y193967D01* +X607312Y194006D01* +X607196Y194048D01* +X607082Y194094D01* +X606969Y194143D01* +X606858Y194195D01* +X606748Y194251D01* +X606640Y194310D01* +X606534Y194373D01* +X606429Y194438D01* +X606327Y194507D01* +X606227Y194579D01* +X606130Y194654D01* +X606034Y194731D01* +X605941Y194812D01* +X605850Y194895D01* +X605762Y194981D01* +X606002Y200499D02* +X606004Y200585D01* +X606010Y200671D01* +X606019Y200757D01* +X606033Y200842D01* +X606050Y200926D01* +X606071Y201010D01* +X606096Y201092D01* +X606124Y201173D01* +X606156Y201253D01* +X606192Y201332D01* +X606231Y201408D01* +X606274Y201483D01* +X606319Y201556D01* +X606368Y201627D01* +X606421Y201695D01* +X606476Y201762D01* +X606534Y201825D01* +X606595Y201886D01* +X606658Y201944D01* +X606725Y201999D01* +X606793Y202052D01* +X606864Y202101D01* +X606937Y202146D01* +X607012Y202189D01* +X607088Y202228D01* +X607167Y202264D01* +X607247Y202296D01* +X607328Y202324D01* +X607410Y202349D01* +X607494Y202370D01* +X607578Y202387D01* +X607663Y202401D01* +X607749Y202410D01* +X607835Y202416D01* +X607921Y202418D01* +X608037Y202416D01* +X608152Y202411D01* +X608268Y202401D01* +X608383Y202388D01* +X608497Y202372D01* +X608611Y202351D01* +X608725Y202327D01* +X608837Y202299D01* +X608948Y202268D01* +X609059Y202233D01* +X609168Y202195D01* +X609276Y202153D01* +X609382Y202108D01* +X609488Y202059D01* +X609591Y202007D01* +X609693Y201952D01* +X609792Y201893D01* +X609890Y201831D01* +X609986Y201766D01* +X610080Y201698D01* +X606961Y198820D02* +X606887Y198866D01* +X606814Y198916D01* +X606744Y198969D01* +X606676Y199025D01* +X606611Y199084D01* +X606548Y199146D01* +X606489Y199211D01* +X606432Y199278D01* +X606378Y199348D01* +X606328Y199420D01* +X606281Y199494D01* +X606237Y199570D01* +X606197Y199649D01* +X606161Y199729D01* +X606128Y199810D01* +X606099Y199893D01* +X606073Y199978D01* +X606051Y200063D01* +X606034Y200149D01* +X606020Y200236D01* +X606010Y200323D01* +X606004Y200411D01* +X606002Y200499D01* +X609601Y197380D02* +X609675Y197334D01* +X609748Y197284D01* +X609818Y197231D01* +X609886Y197175D01* +X609951Y197116D01* +X610014Y197054D01* +X610073Y196989D01* +X610130Y196922D01* +X610184Y196852D01* +X610234Y196780D01* +X610281Y196706D01* +X610325Y196630D01* +X610365Y196551D01* +X610401Y196471D01* +X610434Y196390D01* +X610463Y196307D01* +X610489Y196222D01* +X610511Y196137D01* +X610528Y196051D01* +X610542Y195964D01* +X610552Y195877D01* +X610558Y195789D01* +X610560Y195701D01* +X609600Y197380D02* +X606961Y198820D01* +X617240Y202418D02* +X617332Y202416D01* +X617423Y202410D01* +X617514Y202401D01* +X617605Y202387D01* +X617695Y202370D01* +X617784Y202348D01* +X617872Y202323D01* +X617959Y202295D01* +X618045Y202262D01* +X618129Y202226D01* +X618212Y202187D01* +X618293Y202144D01* +X618372Y202097D01* +X618449Y202048D01* +X618524Y201995D01* +X618596Y201939D01* +X618666Y201880D01* +X618734Y201818D01* +X618799Y201753D01* +X618861Y201685D01* +X618920Y201615D01* +X618976Y201543D01* +X619029Y201468D01* +X619078Y201391D01* +X619125Y201312D01* +X619168Y201231D01* +X619207Y201148D01* +X619243Y201064D01* +X619276Y200978D01* +X619304Y200891D01* +X619329Y200803D01* +X619351Y200714D01* +X619368Y200624D01* +X619382Y200533D01* +X619391Y200442D01* +X619397Y200351D01* +X619399Y200259D01* +X617240Y202418D02* +X617137Y202416D01* +X617035Y202410D01* +X616933Y202401D01* +X616831Y202388D01* +X616730Y202371D01* +X616629Y202350D01* +X616530Y202326D01* +X616431Y202297D01* +X616334Y202266D01* +X616237Y202230D01* +X616142Y202192D01* +X616049Y202149D01* +X615957Y202103D01* +X615867Y202054D01* +X615779Y202002D01* +X615692Y201946D01* +X615608Y201887D01* +X615527Y201826D01* +X615447Y201761D01* +X615370Y201693D01* +X615295Y201622D01* +X615224Y201549D01* +X615155Y201473D01* +X615088Y201395D01* +X615025Y201314D01* +X614965Y201231D01* +X614908Y201146D01* +X614854Y201059D01* +X614803Y200969D01* +X614756Y200878D01* +X614712Y200786D01* +X614671Y200691D01* +X614634Y200596D01* +X614601Y200499D01* +X618679Y198580D02* +X618746Y198646D01* +X618810Y198715D01* +X618871Y198786D01* +X618929Y198860D01* +X618984Y198936D01* +X619036Y199014D01* +X619085Y199094D01* +X619131Y199176D01* +X619173Y199260D01* +X619212Y199346D01* +X619247Y199433D01* +X619278Y199521D01* +X619306Y199611D01* +X619331Y199701D01* +X619352Y199793D01* +X619369Y199885D01* +X619382Y199978D01* +X619391Y200071D01* +X619397Y200165D01* +X619399Y200259D01* +X618679Y198580D02* +X614601Y193782D01* +X619399Y193782D01* +D20* +X884400Y221460D02* +X944400Y221460D01* +X944400Y281460D02* +X884400Y281460D01* +X884400Y221460D01* +X944400Y221460D02* +X944400Y281460D01* +D26* +X914400Y251460D03* +D14* +X908361Y287762D02* +X908447Y287764D01* +X908533Y287770D01* +X908619Y287779D01* +X908704Y287793D01* +X908788Y287810D01* +X908872Y287831D01* +X908954Y287856D01* +X909035Y287884D01* +X909115Y287916D01* +X909194Y287952D01* +X909270Y287991D01* +X909345Y288034D01* +X909418Y288079D01* +X909489Y288129D01* +X909557Y288181D01* +X909624Y288236D01* +X909687Y288294D01* +X909748Y288355D01* +X909806Y288418D01* +X909861Y288485D01* +X909914Y288553D01* +X909963Y288624D01* +X910008Y288697D01* +X910051Y288772D01* +X910090Y288848D01* +X910126Y288927D01* +X910158Y289007D01* +X910186Y289088D01* +X910211Y289170D01* +X910232Y289254D01* +X910249Y289338D01* +X910263Y289423D01* +X910272Y289509D01* +X910278Y289595D01* +X910280Y289681D01* +X908361Y287762D02* +X908238Y287764D01* +X908115Y287769D01* +X907992Y287779D01* +X907870Y287792D01* +X907748Y287809D01* +X907626Y287829D01* +X907506Y287853D01* +X907386Y287881D01* +X907267Y287912D01* +X907149Y287947D01* +X907032Y287986D01* +X906916Y288028D01* +X906802Y288074D01* +X906689Y288123D01* +X906578Y288175D01* +X906468Y288231D01* +X906360Y288290D01* +X906254Y288353D01* +X906149Y288418D01* +X906047Y288487D01* +X905947Y288559D01* +X905850Y288634D01* +X905754Y288711D01* +X905661Y288792D01* +X905570Y288875D01* +X905482Y288961D01* +X905722Y294479D02* +X905724Y294565D01* +X905730Y294651D01* +X905739Y294737D01* +X905753Y294822D01* +X905770Y294906D01* +X905791Y294990D01* +X905816Y295072D01* +X905844Y295153D01* +X905876Y295233D01* +X905912Y295312D01* +X905951Y295388D01* +X905994Y295463D01* +X906039Y295536D01* +X906088Y295607D01* +X906141Y295675D01* +X906196Y295742D01* +X906254Y295805D01* +X906315Y295866D01* +X906378Y295924D01* +X906445Y295979D01* +X906513Y296032D01* +X906584Y296081D01* +X906657Y296126D01* +X906732Y296169D01* +X906808Y296208D01* +X906887Y296244D01* +X906967Y296276D01* +X907048Y296304D01* +X907130Y296329D01* +X907214Y296350D01* +X907298Y296367D01* +X907383Y296381D01* +X907469Y296390D01* +X907555Y296396D01* +X907641Y296398D01* +X907757Y296396D01* +X907872Y296391D01* +X907988Y296381D01* +X908103Y296368D01* +X908217Y296352D01* +X908331Y296331D01* +X908445Y296307D01* +X908557Y296279D01* +X908668Y296248D01* +X908779Y296213D01* +X908888Y296175D01* +X908996Y296133D01* +X909102Y296088D01* +X909208Y296039D01* +X909311Y295987D01* +X909413Y295932D01* +X909512Y295873D01* +X909610Y295811D01* +X909706Y295746D01* +X909800Y295678D01* +X906681Y292800D02* +X906607Y292846D01* +X906534Y292896D01* +X906464Y292949D01* +X906396Y293005D01* +X906331Y293064D01* +X906268Y293126D01* +X906209Y293191D01* +X906152Y293258D01* +X906098Y293328D01* +X906048Y293400D01* +X906001Y293474D01* +X905957Y293550D01* +X905917Y293629D01* +X905881Y293709D01* +X905848Y293790D01* +X905819Y293873D01* +X905793Y293958D01* +X905771Y294043D01* +X905754Y294129D01* +X905740Y294216D01* +X905730Y294303D01* +X905724Y294391D01* +X905722Y294479D01* +X909321Y291360D02* +X909395Y291314D01* +X909468Y291264D01* +X909538Y291211D01* +X909606Y291155D01* +X909671Y291096D01* +X909734Y291034D01* +X909793Y290969D01* +X909850Y290902D01* +X909904Y290832D01* +X909954Y290760D01* +X910001Y290686D01* +X910045Y290610D01* +X910085Y290531D01* +X910121Y290451D01* +X910154Y290370D01* +X910183Y290287D01* +X910209Y290202D01* +X910231Y290117D01* +X910248Y290031D01* +X910262Y289944D01* +X910272Y289857D01* +X910278Y289769D01* +X910280Y289681D01* +X909320Y291360D02* +X906681Y292800D01* +X914321Y287762D02* +X916720Y287762D01* +X916817Y287764D01* +X916913Y287770D01* +X917009Y287779D01* +X917105Y287793D01* +X917200Y287810D01* +X917294Y287832D01* +X917387Y287857D01* +X917480Y287885D01* +X917571Y287918D01* +X917660Y287954D01* +X917748Y287994D01* +X917835Y288037D01* +X917920Y288083D01* +X918002Y288133D01* +X918083Y288187D01* +X918161Y288243D01* +X918237Y288303D01* +X918311Y288365D01* +X918382Y288431D01* +X918450Y288499D01* +X918516Y288570D01* +X918578Y288644D01* +X918638Y288720D01* +X918694Y288798D01* +X918748Y288879D01* +X918798Y288962D01* +X918844Y289046D01* +X918887Y289133D01* +X918927Y289221D01* +X918963Y289310D01* +X918996Y289401D01* +X919024Y289494D01* +X919049Y289587D01* +X919071Y289681D01* +X919088Y289776D01* +X919102Y289872D01* +X919111Y289968D01* +X919117Y290064D01* +X919119Y290161D01* +X919117Y290258D01* +X919111Y290354D01* +X919102Y290450D01* +X919088Y290546D01* +X919071Y290641D01* +X919049Y290735D01* +X919024Y290828D01* +X918996Y290921D01* +X918963Y291012D01* +X918927Y291101D01* +X918887Y291189D01* +X918844Y291276D01* +X918798Y291361D01* +X918748Y291443D01* +X918694Y291524D01* +X918638Y291602D01* +X918578Y291678D01* +X918516Y291752D01* +X918450Y291823D01* +X918382Y291891D01* +X918311Y291957D01* +X918237Y292019D01* +X918161Y292079D01* +X918083Y292135D01* +X918002Y292189D01* +X917920Y292239D01* +X917835Y292285D01* +X917748Y292328D01* +X917660Y292368D01* +X917571Y292404D01* +X917480Y292437D01* +X917387Y292465D01* +X917294Y292490D01* +X917200Y292512D01* +X917105Y292529D01* +X917009Y292543D01* +X916913Y292552D01* +X916817Y292558D01* +X916720Y292560D01* +X917200Y296398D02* +X914321Y296398D01* +X917200Y296398D02* +X917286Y296396D01* +X917372Y296390D01* +X917458Y296381D01* +X917543Y296367D01* +X917627Y296350D01* +X917711Y296329D01* +X917793Y296304D01* +X917874Y296276D01* +X917954Y296244D01* +X918033Y296208D01* +X918109Y296169D01* +X918184Y296126D01* +X918257Y296081D01* +X918328Y296032D01* +X918396Y295979D01* +X918463Y295924D01* +X918526Y295866D01* +X918587Y295805D01* +X918645Y295742D01* +X918700Y295675D01* +X918753Y295607D01* +X918802Y295536D01* +X918847Y295463D01* +X918890Y295388D01* +X918929Y295312D01* +X918965Y295233D01* +X918997Y295153D01* +X919025Y295072D01* +X919050Y294990D01* +X919071Y294906D01* +X919088Y294822D01* +X919102Y294737D01* +X919111Y294651D01* +X919117Y294565D01* +X919119Y294479D01* +X919117Y294393D01* +X919111Y294307D01* +X919102Y294221D01* +X919088Y294136D01* +X919071Y294052D01* +X919050Y293968D01* +X919025Y293886D01* +X918997Y293805D01* +X918965Y293725D01* +X918929Y293646D01* +X918890Y293570D01* +X918847Y293495D01* +X918802Y293422D01* +X918753Y293351D01* +X918700Y293283D01* +X918645Y293216D01* +X918587Y293153D01* +X918526Y293092D01* +X918463Y293034D01* +X918396Y292979D01* +X918328Y292926D01* +X918257Y292877D01* +X918184Y292832D01* +X918109Y292789D01* +X918033Y292750D01* +X917954Y292714D01* +X917874Y292682D01* +X917793Y292654D01* +X917711Y292629D01* +X917627Y292608D01* +X917543Y292591D01* +X917458Y292577D01* +X917372Y292568D01* +X917286Y292562D01* +X917200Y292560D01* +X915281Y292560D01* +D20* +X790420Y190020D02* +X790420Y130020D01* +X850420Y130020D02* +X850420Y190020D01* +X790420Y190020D01* +X790420Y130020D02* +X850420Y130020D01* +D26* +X820420Y160020D03* +D14* +X794061Y193782D02* +X794147Y193784D01* +X794233Y193790D01* +X794319Y193799D01* +X794404Y193813D01* +X794488Y193830D01* +X794572Y193851D01* +X794654Y193876D01* +X794735Y193904D01* +X794815Y193936D01* +X794894Y193972D01* +X794970Y194011D01* +X795045Y194054D01* +X795118Y194099D01* +X795189Y194149D01* +X795257Y194201D01* +X795324Y194256D01* +X795387Y194314D01* +X795448Y194375D01* +X795506Y194438D01* +X795561Y194505D01* +X795614Y194573D01* +X795663Y194644D01* +X795708Y194717D01* +X795751Y194792D01* +X795790Y194868D01* +X795826Y194947D01* +X795858Y195027D01* +X795886Y195108D01* +X795911Y195190D01* +X795932Y195274D01* +X795949Y195358D01* +X795963Y195443D01* +X795972Y195529D01* +X795978Y195615D01* +X795980Y195701D01* +X794061Y193782D02* +X793938Y193784D01* +X793815Y193789D01* +X793692Y193799D01* +X793570Y193812D01* +X793448Y193829D01* +X793326Y193849D01* +X793206Y193873D01* +X793086Y193901D01* +X792967Y193932D01* +X792849Y193967D01* +X792732Y194006D01* +X792616Y194048D01* +X792502Y194094D01* +X792389Y194143D01* +X792278Y194195D01* +X792168Y194251D01* +X792060Y194310D01* +X791954Y194373D01* +X791849Y194438D01* +X791747Y194507D01* +X791647Y194579D01* +X791550Y194654D01* +X791454Y194731D01* +X791361Y194812D01* +X791270Y194895D01* +X791182Y194981D01* +X791422Y200499D02* +X791424Y200585D01* +X791430Y200671D01* +X791439Y200757D01* +X791453Y200842D01* +X791470Y200926D01* +X791491Y201010D01* +X791516Y201092D01* +X791544Y201173D01* +X791576Y201253D01* +X791612Y201332D01* +X791651Y201408D01* +X791694Y201483D01* +X791739Y201556D01* +X791788Y201627D01* +X791841Y201695D01* +X791896Y201762D01* +X791954Y201825D01* +X792015Y201886D01* +X792078Y201944D01* +X792145Y201999D01* +X792213Y202052D01* +X792284Y202101D01* +X792357Y202146D01* +X792432Y202189D01* +X792508Y202228D01* +X792587Y202264D01* +X792667Y202296D01* +X792748Y202324D01* +X792830Y202349D01* +X792914Y202370D01* +X792998Y202387D01* +X793083Y202401D01* +X793169Y202410D01* +X793255Y202416D01* +X793341Y202418D01* +X793457Y202416D01* +X793572Y202411D01* +X793688Y202401D01* +X793803Y202388D01* +X793917Y202372D01* +X794031Y202351D01* +X794145Y202327D01* +X794257Y202299D01* +X794368Y202268D01* +X794479Y202233D01* +X794588Y202195D01* +X794696Y202153D01* +X794802Y202108D01* +X794908Y202059D01* +X795011Y202007D01* +X795113Y201952D01* +X795212Y201893D01* +X795310Y201831D01* +X795406Y201766D01* +X795500Y201698D01* +X792381Y198820D02* +X792307Y198866D01* +X792234Y198916D01* +X792164Y198969D01* +X792096Y199025D01* +X792031Y199084D01* +X791968Y199146D01* +X791909Y199211D01* +X791852Y199278D01* +X791798Y199348D01* +X791748Y199420D01* +X791701Y199494D01* +X791657Y199570D01* +X791617Y199649D01* +X791581Y199729D01* +X791548Y199810D01* +X791519Y199893D01* +X791493Y199978D01* +X791471Y200063D01* +X791454Y200149D01* +X791440Y200236D01* +X791430Y200323D01* +X791424Y200411D01* +X791422Y200499D01* +X795021Y197380D02* +X795095Y197334D01* +X795168Y197284D01* +X795238Y197231D01* +X795306Y197175D01* +X795371Y197116D01* +X795434Y197054D01* +X795493Y196989D01* +X795550Y196922D01* +X795604Y196852D01* +X795654Y196780D01* +X795701Y196706D01* +X795745Y196630D01* +X795785Y196551D01* +X795821Y196471D01* +X795854Y196390D01* +X795883Y196307D01* +X795909Y196222D01* +X795931Y196137D01* +X795948Y196051D01* +X795962Y195964D01* +X795972Y195877D01* +X795978Y195789D01* +X795980Y195701D01* +X795020Y197380D02* +X792381Y198820D01* +X800021Y200499D02* +X802420Y202418D01* +X802420Y193782D01* +X800021Y193782D02* +X804819Y193782D01* +D17* +X541020Y180340D03* +D14* +X528338Y166116D02* +X526419Y166116D01* +X526333Y166118D01* +X526247Y166124D01* +X526161Y166133D01* +X526076Y166147D01* +X525992Y166164D01* +X525908Y166185D01* +X525826Y166210D01* +X525745Y166238D01* +X525665Y166270D01* +X525586Y166306D01* +X525510Y166345D01* +X525435Y166388D01* +X525362Y166433D01* +X525291Y166482D01* +X525223Y166535D01* +X525156Y166590D01* +X525093Y166648D01* +X525032Y166709D01* +X524974Y166772D01* +X524919Y166839D01* +X524866Y166907D01* +X524817Y166978D01* +X524772Y167051D01* +X524729Y167126D01* +X524690Y167202D01* +X524654Y167281D01* +X524622Y167361D01* +X524594Y167442D01* +X524569Y167524D01* +X524548Y167608D01* +X524531Y167692D01* +X524517Y167777D01* +X524508Y167863D01* +X524502Y167949D01* +X524500Y168035D01* +X524500Y172833D01* +X524502Y172919D01* +X524508Y173005D01* +X524517Y173091D01* +X524531Y173176D01* +X524548Y173260D01* +X524569Y173344D01* +X524594Y173426D01* +X524622Y173507D01* +X524654Y173587D01* +X524690Y173666D01* +X524729Y173742D01* +X524772Y173817D01* +X524817Y173890D01* +X524866Y173961D01* +X524919Y174029D01* +X524974Y174096D01* +X525032Y174159D01* +X525093Y174220D01* +X525156Y174278D01* +X525223Y174333D01* +X525291Y174385D01* +X525362Y174435D01* +X525435Y174480D01* +X525510Y174523D01* +X525586Y174562D01* +X525665Y174598D01* +X525745Y174630D01* +X525826Y174658D01* +X525908Y174683D01* +X525992Y174704D01* +X526076Y174721D01* +X526161Y174735D01* +X526247Y174744D01* +X526333Y174750D01* +X526419Y174752D01* +X528338Y174752D01* +X534797Y174752D02* +X534889Y174750D01* +X534980Y174744D01* +X535071Y174735D01* +X535162Y174721D01* +X535252Y174704D01* +X535341Y174682D01* +X535429Y174657D01* +X535516Y174629D01* +X535602Y174596D01* +X535686Y174560D01* +X535769Y174521D01* +X535850Y174478D01* +X535929Y174431D01* +X536006Y174382D01* +X536081Y174329D01* +X536153Y174273D01* +X536223Y174214D01* +X536291Y174152D01* +X536356Y174087D01* +X536418Y174019D01* +X536477Y173949D01* +X536533Y173877D01* +X536586Y173802D01* +X536635Y173725D01* +X536682Y173646D01* +X536725Y173565D01* +X536764Y173482D01* +X536800Y173398D01* +X536833Y173312D01* +X536861Y173225D01* +X536886Y173137D01* +X536908Y173048D01* +X536925Y172958D01* +X536939Y172867D01* +X536948Y172776D01* +X536954Y172685D01* +X536956Y172593D01* +X534797Y174752D02* +X534694Y174750D01* +X534592Y174744D01* +X534490Y174735D01* +X534388Y174722D01* +X534287Y174705D01* +X534186Y174684D01* +X534087Y174660D01* +X533988Y174631D01* +X533891Y174600D01* +X533794Y174564D01* +X533699Y174526D01* +X533606Y174483D01* +X533514Y174437D01* +X533424Y174388D01* +X533336Y174336D01* +X533249Y174280D01* +X533165Y174221D01* +X533084Y174160D01* +X533004Y174095D01* +X532927Y174027D01* +X532852Y173956D01* +X532781Y173883D01* +X532712Y173807D01* +X532645Y173729D01* +X532582Y173648D01* +X532522Y173565D01* +X532465Y173480D01* +X532411Y173393D01* +X532360Y173303D01* +X532313Y173212D01* +X532269Y173120D01* +X532228Y173025D01* +X532191Y172930D01* +X532158Y172833D01* +X536236Y170914D02* +X536303Y170980D01* +X536367Y171049D01* +X536428Y171120D01* +X536486Y171194D01* +X536541Y171270D01* +X536593Y171348D01* +X536642Y171428D01* +X536688Y171510D01* +X536730Y171594D01* +X536769Y171680D01* +X536804Y171767D01* +X536835Y171855D01* +X536863Y171945D01* +X536888Y172035D01* +X536909Y172127D01* +X536926Y172219D01* +X536939Y172312D01* +X536948Y172405D01* +X536954Y172499D01* +X536956Y172593D01* +X536236Y170914D02* +X532158Y166116D01* +X536956Y166116D01* +X541302Y172833D02* +X543701Y174752D01* +X543701Y166116D01* +X541302Y166116D02* +X546100Y166116D01* +D13* +X510540Y254000D03* +D14* +X517652Y244602D02* +X526288Y244602D01* +X517652Y244602D02* +X517652Y247001D01* +X517654Y247098D01* +X517660Y247194D01* +X517669Y247290D01* +X517683Y247386D01* +X517700Y247481D01* +X517722Y247575D01* +X517747Y247668D01* +X517775Y247761D01* +X517808Y247852D01* +X517844Y247941D01* +X517884Y248029D01* +X517927Y248116D01* +X517973Y248201D01* +X518023Y248283D01* +X518077Y248364D01* +X518133Y248442D01* +X518193Y248518D01* +X518255Y248592D01* +X518321Y248663D01* +X518389Y248731D01* +X518460Y248797D01* +X518534Y248859D01* +X518610Y248919D01* +X518688Y248975D01* +X518769Y249029D01* +X518852Y249079D01* +X518936Y249125D01* +X519023Y249168D01* +X519111Y249208D01* +X519200Y249244D01* +X519291Y249277D01* +X519384Y249305D01* +X519477Y249330D01* +X519571Y249352D01* +X519666Y249369D01* +X519762Y249383D01* +X519858Y249392D01* +X519954Y249398D01* +X520051Y249400D01* +X520148Y249398D01* +X520244Y249392D01* +X520340Y249383D01* +X520436Y249369D01* +X520531Y249352D01* +X520625Y249330D01* +X520718Y249305D01* +X520811Y249277D01* +X520902Y249244D01* +X520991Y249208D01* +X521079Y249168D01* +X521166Y249125D01* +X521251Y249079D01* +X521333Y249029D01* +X521414Y248975D01* +X521492Y248919D01* +X521568Y248859D01* +X521642Y248797D01* +X521713Y248731D01* +X521781Y248663D01* +X521847Y248592D01* +X521909Y248518D01* +X521969Y248442D01* +X522025Y248364D01* +X522079Y248283D01* +X522129Y248201D01* +X522175Y248116D01* +X522218Y248029D01* +X522258Y247941D01* +X522294Y247852D01* +X522327Y247761D01* +X522355Y247668D01* +X522380Y247575D01* +X522402Y247481D01* +X522419Y247386D01* +X522433Y247290D01* +X522442Y247194D01* +X522448Y247098D01* +X522450Y247001D01* +X522450Y244602D01* +X522450Y247481D02* +X526288Y249400D01* +X517652Y256300D02* +X517654Y256392D01* +X517660Y256483D01* +X517669Y256574D01* +X517683Y256665D01* +X517700Y256755D01* +X517722Y256844D01* +X517747Y256932D01* +X517775Y257019D01* +X517808Y257105D01* +X517844Y257189D01* +X517883Y257272D01* +X517926Y257353D01* +X517973Y257432D01* +X518022Y257509D01* +X518075Y257584D01* +X518131Y257656D01* +X518190Y257726D01* +X518252Y257794D01* +X518317Y257859D01* +X518385Y257921D01* +X518455Y257980D01* +X518527Y258036D01* +X518602Y258089D01* +X518679Y258138D01* +X518758Y258185D01* +X518839Y258228D01* +X518922Y258267D01* +X519006Y258303D01* +X519092Y258336D01* +X519179Y258364D01* +X519267Y258389D01* +X519356Y258411D01* +X519446Y258428D01* +X519537Y258442D01* +X519628Y258451D01* +X519719Y258457D01* +X519811Y258459D01* +X517652Y256300D02* +X517654Y256197D01* +X517660Y256095D01* +X517669Y255993D01* +X517682Y255891D01* +X517699Y255790D01* +X517720Y255689D01* +X517744Y255590D01* +X517773Y255491D01* +X517804Y255394D01* +X517840Y255297D01* +X517878Y255202D01* +X517921Y255109D01* +X517967Y255017D01* +X518016Y254927D01* +X518068Y254839D01* +X518124Y254752D01* +X518183Y254668D01* +X518244Y254587D01* +X518309Y254507D01* +X518377Y254430D01* +X518448Y254355D01* +X518521Y254284D01* +X518597Y254215D01* +X518675Y254148D01* +X518756Y254085D01* +X518839Y254025D01* +X518924Y253968D01* +X519011Y253914D01* +X519101Y253863D01* +X519192Y253816D01* +X519284Y253772D01* +X519379Y253731D01* +X519474Y253694D01* +X519571Y253661D01* +X521490Y257739D02* +X521424Y257806D01* +X521355Y257870D01* +X521284Y257931D01* +X521210Y257989D01* +X521134Y258044D01* +X521056Y258096D01* +X520976Y258145D01* +X520894Y258191D01* +X520810Y258233D01* +X520724Y258272D01* +X520637Y258307D01* +X520549Y258338D01* +X520459Y258366D01* +X520369Y258391D01* +X520277Y258412D01* +X520185Y258429D01* +X520092Y258442D01* +X519999Y258451D01* +X519905Y258457D01* +X519811Y258459D01* +X521490Y257739D02* +X526288Y253661D01* +X526288Y258459D01* +X521490Y262805D02* +X521490Y265684D01* +X521492Y265770D01* +X521498Y265856D01* +X521507Y265942D01* +X521521Y266027D01* +X521538Y266111D01* +X521559Y266195D01* +X521584Y266277D01* +X521612Y266358D01* +X521644Y266438D01* +X521680Y266517D01* +X521719Y266593D01* +X521762Y266668D01* +X521807Y266741D01* +X521857Y266812D01* +X521909Y266880D01* +X521964Y266947D01* +X522022Y267010D01* +X522083Y267071D01* +X522146Y267129D01* +X522213Y267184D01* +X522281Y267237D01* +X522352Y267286D01* +X522425Y267331D01* +X522500Y267374D01* +X522576Y267413D01* +X522655Y267449D01* +X522735Y267481D01* +X522816Y267509D01* +X522899Y267534D01* +X522982Y267555D01* +X523066Y267572D01* +X523151Y267586D01* +X523237Y267595D01* +X523323Y267601D01* +X523409Y267603D01* +X523889Y267603D01* +X523986Y267601D01* +X524082Y267595D01* +X524178Y267586D01* +X524274Y267572D01* +X524369Y267555D01* +X524463Y267533D01* +X524556Y267508D01* +X524649Y267480D01* +X524740Y267447D01* +X524829Y267411D01* +X524917Y267371D01* +X525004Y267328D01* +X525089Y267282D01* +X525171Y267232D01* +X525252Y267178D01* +X525330Y267122D01* +X525406Y267062D01* +X525480Y267000D01* +X525551Y266934D01* +X525619Y266866D01* +X525685Y266795D01* +X525747Y266721D01* +X525807Y266645D01* +X525863Y266567D01* +X525917Y266486D01* +X525967Y266404D01* +X526013Y266319D01* +X526056Y266232D01* +X526096Y266144D01* +X526132Y266055D01* +X526165Y265964D01* +X526193Y265871D01* +X526218Y265778D01* +X526240Y265684D01* +X526257Y265589D01* +X526271Y265493D01* +X526280Y265397D01* +X526286Y265301D01* +X526288Y265204D01* +X526286Y265107D01* +X526280Y265011D01* +X526271Y264915D01* +X526257Y264819D01* +X526240Y264724D01* +X526218Y264630D01* +X526193Y264537D01* +X526165Y264444D01* +X526132Y264353D01* +X526096Y264264D01* +X526056Y264176D01* +X526013Y264089D01* +X525967Y264005D01* +X525917Y263922D01* +X525863Y263841D01* +X525807Y263763D01* +X525747Y263687D01* +X525685Y263613D01* +X525619Y263542D01* +X525551Y263474D01* +X525480Y263408D01* +X525406Y263346D01* +X525330Y263286D01* +X525252Y263230D01* +X525171Y263176D01* +X525089Y263126D01* +X525004Y263080D01* +X524917Y263037D01* +X524829Y262997D01* +X524740Y262961D01* +X524649Y262928D01* +X524556Y262900D01* +X524463Y262875D01* +X524369Y262853D01* +X524274Y262836D01* +X524178Y262822D01* +X524082Y262813D01* +X523986Y262807D01* +X523889Y262805D01* +X521490Y262805D01* +X521490Y262806D02* +X521367Y262808D01* +X521244Y262814D01* +X521121Y262824D01* +X520999Y262838D01* +X520877Y262855D01* +X520756Y262877D01* +X520636Y262902D01* +X520516Y262932D01* +X520398Y262965D01* +X520281Y263002D01* +X520164Y263042D01* +X520050Y263086D01* +X519936Y263134D01* +X519825Y263186D01* +X519715Y263241D01* +X519607Y263300D01* +X519500Y263362D01* +X519396Y263427D01* +X519294Y263496D01* +X519194Y263568D01* +X519097Y263643D01* +X519002Y263722D01* +X518910Y263803D01* +X518820Y263887D01* +X518733Y263974D01* +X518649Y264064D01* +X518568Y264156D01* +X518489Y264251D01* +X518414Y264348D01* +X518342Y264448D01* +X518273Y264550D01* +X518208Y264654D01* +X518146Y264761D01* +X518087Y264869D01* +X518032Y264979D01* +X517980Y265090D01* +X517933Y265204D01* +X517888Y265318D01* +X517848Y265435D01* +X517811Y265552D01* +X517778Y265670D01* +X517748Y265790D01* +X517723Y265910D01* +X517701Y266031D01* +X517684Y266153D01* +X517670Y266275D01* +X517660Y266398D01* +X517654Y266521D01* +X517652Y266644D01* +D17* +X868680Y55880D03* +D14* +X866676Y61722D02* +X864757Y61722D01* +X864671Y61724D01* +X864585Y61730D01* +X864499Y61739D01* +X864414Y61753D01* +X864330Y61770D01* +X864246Y61791D01* +X864164Y61816D01* +X864083Y61844D01* +X864003Y61876D01* +X863924Y61912D01* +X863848Y61951D01* +X863773Y61994D01* +X863700Y62039D01* +X863629Y62088D01* +X863561Y62141D01* +X863494Y62196D01* +X863431Y62254D01* +X863370Y62315D01* +X863312Y62378D01* +X863257Y62445D01* +X863204Y62513D01* +X863155Y62584D01* +X863110Y62657D01* +X863067Y62732D01* +X863028Y62808D01* +X862992Y62887D01* +X862960Y62967D01* +X862932Y63048D01* +X862907Y63130D01* +X862886Y63214D01* +X862869Y63298D01* +X862855Y63383D01* +X862846Y63469D01* +X862840Y63555D01* +X862838Y63641D01* +X862838Y68439D01* +X862840Y68525D01* +X862846Y68611D01* +X862855Y68697D01* +X862869Y68782D01* +X862886Y68866D01* +X862907Y68950D01* +X862932Y69032D01* +X862960Y69113D01* +X862992Y69193D01* +X863028Y69272D01* +X863067Y69348D01* +X863110Y69423D01* +X863155Y69496D01* +X863204Y69567D01* +X863257Y69635D01* +X863312Y69702D01* +X863370Y69765D01* +X863431Y69826D01* +X863494Y69884D01* +X863561Y69939D01* +X863629Y69991D01* +X863700Y70041D01* +X863773Y70086D01* +X863848Y70129D01* +X863924Y70168D01* +X864003Y70204D01* +X864083Y70236D01* +X864164Y70264D01* +X864246Y70289D01* +X864330Y70310D01* +X864414Y70327D01* +X864499Y70341D01* +X864585Y70350D01* +X864671Y70356D01* +X864757Y70358D01* +X866676Y70358D01* +X870496Y68439D02* +X872895Y70358D01* +X872895Y61722D01* +X870496Y61722D02* +X875294Y61722D01* +D27* +X1029150Y303840D02* +X1029152Y303903D01* +X1029158Y303965D01* +X1029168Y304027D01* +X1029181Y304089D01* +X1029199Y304149D01* +X1029220Y304208D01* +X1029245Y304266D01* +X1029274Y304322D01* +X1029306Y304376D01* +X1029341Y304428D01* +X1029379Y304477D01* +X1029421Y304525D01* +X1029465Y304569D01* +X1029513Y304611D01* +X1029562Y304649D01* +X1029614Y304684D01* +X1029668Y304716D01* +X1029724Y304745D01* +X1029782Y304770D01* +X1029841Y304791D01* +X1029901Y304809D01* +X1029963Y304822D01* +X1030025Y304832D01* +X1030087Y304838D01* +X1030150Y304840D01* +X1030213Y304838D01* +X1030275Y304832D01* +X1030337Y304822D01* +X1030399Y304809D01* +X1030459Y304791D01* +X1030518Y304770D01* +X1030576Y304745D01* +X1030632Y304716D01* +X1030686Y304684D01* +X1030738Y304649D01* +X1030787Y304611D01* +X1030835Y304569D01* +X1030879Y304525D01* +X1030921Y304477D01* +X1030959Y304428D01* +X1030994Y304376D01* +X1031026Y304322D01* +X1031055Y304266D01* +X1031080Y304208D01* +X1031101Y304149D01* +X1031119Y304089D01* +X1031132Y304027D01* +X1031142Y303965D01* +X1031148Y303903D01* +X1031150Y303840D01* +X1031148Y303777D01* +X1031142Y303715D01* +X1031132Y303653D01* +X1031119Y303591D01* +X1031101Y303531D01* +X1031080Y303472D01* +X1031055Y303414D01* +X1031026Y303358D01* +X1030994Y303304D01* +X1030959Y303252D01* +X1030921Y303203D01* +X1030879Y303155D01* +X1030835Y303111D01* +X1030787Y303069D01* +X1030738Y303031D01* +X1030686Y302996D01* +X1030632Y302964D01* +X1030576Y302935D01* +X1030518Y302910D01* +X1030459Y302889D01* +X1030399Y302871D01* +X1030337Y302858D01* +X1030275Y302848D01* +X1030213Y302842D01* +X1030150Y302840D01* +X1030087Y302842D01* +X1030025Y302848D01* +X1029963Y302858D01* +X1029901Y302871D01* +X1029841Y302889D01* +X1029782Y302910D01* +X1029724Y302935D01* +X1029668Y302964D01* +X1029614Y302996D01* +X1029562Y303031D01* +X1029513Y303069D01* +X1029465Y303111D01* +X1029421Y303155D01* +X1029379Y303203D01* +X1029341Y303252D01* +X1029306Y303304D01* +X1029274Y303358D01* +X1029245Y303414D01* +X1029220Y303472D01* +X1029199Y303531D01* +X1029181Y303591D01* +X1029168Y303653D01* +X1029158Y303715D01* +X1029152Y303777D01* +X1029150Y303840D01* +D20* +X1047920Y311460D02* +X1047920Y378960D01* +X1227920Y378960D01* +X1227920Y311460D01* +X1047920Y131460D02* +X1047920Y123960D01* +X1072920Y123960D01* +X1202920Y123960D02* +X1227920Y123960D01* +X1227920Y131460D01* +X1227520Y315960D02* +X1048320Y315960D01* +D14* +X1028925Y339700D02* +X1028925Y345937D01* +X1028925Y339700D02* +X1028927Y339603D01* +X1028933Y339507D01* +X1028942Y339411D01* +X1028956Y339315D01* +X1028973Y339220D01* +X1028995Y339126D01* +X1029020Y339033D01* +X1029048Y338940D01* +X1029081Y338849D01* +X1029117Y338760D01* +X1029157Y338672D01* +X1029200Y338585D01* +X1029246Y338501D01* +X1029296Y338418D01* +X1029350Y338337D01* +X1029406Y338259D01* +X1029466Y338183D01* +X1029528Y338109D01* +X1029594Y338038D01* +X1029662Y337970D01* +X1029733Y337904D01* +X1029807Y337842D01* +X1029883Y337782D01* +X1029961Y337726D01* +X1030042Y337672D01* +X1030125Y337622D01* +X1030209Y337576D01* +X1030296Y337533D01* +X1030384Y337493D01* +X1030473Y337457D01* +X1030564Y337424D01* +X1030657Y337396D01* +X1030750Y337371D01* +X1030844Y337349D01* +X1030939Y337332D01* +X1031035Y337318D01* +X1031131Y337309D01* +X1031227Y337303D01* +X1031324Y337301D01* +X1031421Y337303D01* +X1031517Y337309D01* +X1031613Y337318D01* +X1031709Y337332D01* +X1031804Y337349D01* +X1031898Y337371D01* +X1031991Y337396D01* +X1032084Y337424D01* +X1032175Y337457D01* +X1032264Y337493D01* +X1032352Y337533D01* +X1032439Y337576D01* +X1032524Y337622D01* +X1032606Y337672D01* +X1032687Y337726D01* +X1032765Y337782D01* +X1032841Y337842D01* +X1032915Y337904D01* +X1032986Y337970D01* +X1033054Y338038D01* +X1033120Y338109D01* +X1033182Y338183D01* +X1033242Y338259D01* +X1033298Y338337D01* +X1033352Y338418D01* +X1033402Y338501D01* +X1033448Y338585D01* +X1033491Y338672D01* +X1033531Y338760D01* +X1033567Y338849D01* +X1033600Y338940D01* +X1033628Y339033D01* +X1033653Y339126D01* +X1033675Y339220D01* +X1033692Y339315D01* +X1033706Y339411D01* +X1033715Y339507D01* +X1033721Y339603D01* +X1033723Y339700D01* +X1033723Y345937D01* +X1041013Y345937D02* +X1041105Y345935D01* +X1041196Y345929D01* +X1041287Y345920D01* +X1041378Y345906D01* +X1041468Y345889D01* +X1041557Y345867D01* +X1041645Y345842D01* +X1041732Y345814D01* +X1041818Y345781D01* +X1041902Y345745D01* +X1041985Y345706D01* +X1042066Y345663D01* +X1042145Y345616D01* +X1042222Y345567D01* +X1042297Y345514D01* +X1042369Y345458D01* +X1042439Y345399D01* +X1042507Y345337D01* +X1042572Y345272D01* +X1042634Y345204D01* +X1042693Y345134D01* +X1042749Y345062D01* +X1042802Y344987D01* +X1042851Y344910D01* +X1042898Y344831D01* +X1042941Y344750D01* +X1042980Y344667D01* +X1043016Y344583D01* +X1043049Y344497D01* +X1043077Y344410D01* +X1043102Y344322D01* +X1043124Y344233D01* +X1043141Y344143D01* +X1043155Y344052D01* +X1043164Y343961D01* +X1043170Y343870D01* +X1043172Y343778D01* +X1041013Y345937D02* +X1040910Y345935D01* +X1040808Y345929D01* +X1040706Y345920D01* +X1040604Y345907D01* +X1040503Y345890D01* +X1040402Y345869D01* +X1040303Y345845D01* +X1040204Y345816D01* +X1040107Y345785D01* +X1040010Y345749D01* +X1039915Y345711D01* +X1039822Y345668D01* +X1039730Y345622D01* +X1039640Y345573D01* +X1039552Y345521D01* +X1039465Y345465D01* +X1039381Y345406D01* +X1039300Y345345D01* +X1039220Y345280D01* +X1039143Y345212D01* +X1039068Y345141D01* +X1038997Y345068D01* +X1038928Y344992D01* +X1038861Y344914D01* +X1038798Y344833D01* +X1038738Y344750D01* +X1038681Y344665D01* +X1038627Y344578D01* +X1038576Y344488D01* +X1038529Y344397D01* +X1038485Y344305D01* +X1038444Y344210D01* +X1038407Y344115D01* +X1038374Y344018D01* +X1042452Y342099D02* +X1042519Y342165D01* +X1042583Y342234D01* +X1042644Y342305D01* +X1042702Y342379D01* +X1042757Y342455D01* +X1042809Y342533D01* +X1042858Y342613D01* +X1042904Y342695D01* +X1042946Y342779D01* +X1042985Y342865D01* +X1043020Y342952D01* +X1043051Y343040D01* +X1043079Y343130D01* +X1043104Y343220D01* +X1043125Y343312D01* +X1043142Y343404D01* +X1043155Y343497D01* +X1043164Y343590D01* +X1043170Y343684D01* +X1043172Y343778D01* +X1042452Y342099D02* +X1038374Y337301D01* +X1043172Y337301D01* +D20* +X115100Y362120D02* +X109100Y365120D01* +X115100Y288120D02* +X109100Y285120D01* +X114100Y288120D02* +X114100Y362120D01* +X110100Y358120D02* +X110100Y293120D01* +X110100Y358120D02* +X109100Y365120D01* +X110100Y293120D02* +X109100Y285120D01* +X165100Y341120D02* +X165100Y350120D01* +X165100Y309120D02* +X165100Y301120D01* +X152100Y288120D02* +X148100Y288120D01* +X127100Y288120D02* +X115100Y288120D01* +X115100Y362120D02* +X127100Y362120D01* +X149100Y362120D02* +X152100Y362120D01* +D14* +X170942Y290833D02* +X177659Y290833D01* +X177745Y290831D01* +X177831Y290825D01* +X177917Y290816D01* +X178002Y290802D01* +X178086Y290785D01* +X178170Y290764D01* +X178252Y290739D01* +X178333Y290711D01* +X178413Y290679D01* +X178492Y290643D01* +X178568Y290604D01* +X178643Y290561D01* +X178716Y290516D01* +X178787Y290466D01* +X178855Y290414D01* +X178922Y290359D01* +X178985Y290301D01* +X179046Y290240D01* +X179104Y290177D01* +X179159Y290110D01* +X179212Y290042D01* +X179261Y289971D01* +X179306Y289898D01* +X179349Y289823D01* +X179388Y289747D01* +X179424Y289668D01* +X179456Y289588D01* +X179484Y289507D01* +X179509Y289424D01* +X179530Y289341D01* +X179547Y289257D01* +X179561Y289172D01* +X179570Y289086D01* +X179576Y289000D01* +X179578Y288914D01* +X179578Y287954D01* +X172861Y295430D02* +X170942Y297829D01* +X179578Y297829D01* +X179578Y295430D02* +X179578Y300228D01* +D23* +X320120Y340900D02* +X320122Y340952D01* +X320128Y341004D01* +X320138Y341056D01* +X320151Y341106D01* +X320168Y341156D01* +X320189Y341204D01* +X320214Y341250D01* +X320242Y341294D01* +X320273Y341336D01* +X320307Y341376D01* +X320344Y341413D01* +X320384Y341447D01* +X320426Y341478D01* +X320470Y341506D01* +X320516Y341531D01* +X320564Y341552D01* +X320614Y341569D01* +X320664Y341582D01* +X320716Y341592D01* +X320768Y341598D01* +X320820Y341600D01* +X320872Y341598D01* +X320924Y341592D01* +X320976Y341582D01* +X321026Y341569D01* +X321076Y341552D01* +X321124Y341531D01* +X321170Y341506D01* +X321214Y341478D01* +X321256Y341447D01* +X321296Y341413D01* +X321333Y341376D01* +X321367Y341336D01* +X321398Y341294D01* +X321426Y341250D01* +X321451Y341204D01* +X321472Y341156D01* +X321489Y341106D01* +X321502Y341056D01* +X321512Y341004D01* +X321518Y340952D01* +X321520Y340900D01* +X321518Y340848D01* +X321512Y340796D01* +X321502Y340744D01* +X321489Y340694D01* +X321472Y340644D01* +X321451Y340596D01* +X321426Y340550D01* +X321398Y340506D01* +X321367Y340464D01* +X321333Y340424D01* +X321296Y340387D01* +X321256Y340353D01* +X321214Y340322D01* +X321170Y340294D01* +X321124Y340269D01* +X321076Y340248D01* +X321026Y340231D01* +X320976Y340218D01* +X320924Y340208D01* +X320872Y340202D01* +X320820Y340200D01* +X320768Y340202D01* +X320716Y340208D01* +X320664Y340218D01* +X320614Y340231D01* +X320564Y340248D01* +X320516Y340269D01* +X320470Y340294D01* +X320426Y340322D01* +X320384Y340353D01* +X320344Y340387D01* +X320307Y340424D01* +X320273Y340464D01* +X320242Y340506D01* +X320214Y340550D01* +X320189Y340596D01* +X320168Y340644D01* +X320151Y340694D01* +X320138Y340744D01* +X320128Y340796D01* +X320122Y340848D01* +X320120Y340900D01* +D20* +X330100Y350620D02* +X335600Y350620D01* +X330100Y350620D02* +X330100Y344620D01* +X375600Y350620D02* +X381100Y350620D01* +X381100Y344620D01* +X381100Y304120D02* +X381100Y299620D01* +X375600Y299620D01* +X330100Y299620D02* +X330100Y305120D01* +X330100Y299620D02* +X336100Y299620D01* +D14* +X376986Y357702D02* +X376986Y363939D01* +X376986Y357702D02* +X376988Y357605D01* +X376994Y357509D01* +X377003Y357413D01* +X377017Y357317D01* +X377034Y357222D01* +X377056Y357128D01* +X377081Y357035D01* +X377109Y356942D01* +X377142Y356851D01* +X377178Y356762D01* +X377218Y356674D01* +X377261Y356587D01* +X377307Y356503D01* +X377357Y356420D01* +X377411Y356339D01* +X377467Y356261D01* +X377527Y356185D01* +X377589Y356111D01* +X377655Y356040D01* +X377723Y355972D01* +X377794Y355906D01* +X377868Y355844D01* +X377944Y355784D01* +X378022Y355728D01* +X378103Y355674D01* +X378186Y355624D01* +X378270Y355578D01* +X378357Y355535D01* +X378445Y355495D01* +X378534Y355459D01* +X378625Y355426D01* +X378718Y355398D01* +X378811Y355373D01* +X378905Y355351D01* +X379000Y355334D01* +X379096Y355320D01* +X379192Y355311D01* +X379288Y355305D01* +X379385Y355303D01* +X379482Y355305D01* +X379578Y355311D01* +X379674Y355320D01* +X379770Y355334D01* +X379865Y355351D01* +X379959Y355373D01* +X380052Y355398D01* +X380145Y355426D01* +X380236Y355459D01* +X380325Y355495D01* +X380413Y355535D01* +X380500Y355578D01* +X380585Y355624D01* +X380667Y355674D01* +X380748Y355728D01* +X380826Y355784D01* +X380902Y355844D01* +X380976Y355906D01* +X381047Y355972D01* +X381115Y356040D01* +X381181Y356111D01* +X381243Y356185D01* +X381303Y356261D01* +X381359Y356339D01* +X381413Y356420D01* +X381463Y356503D01* +X381509Y356587D01* +X381552Y356674D01* +X381592Y356762D01* +X381628Y356851D01* +X381661Y356942D01* +X381689Y357035D01* +X381714Y357128D01* +X381736Y357222D01* +X381753Y357317D01* +X381767Y357413D01* +X381776Y357509D01* +X381782Y357605D01* +X381784Y357702D01* +X381784Y363939D01* +X386435Y355303D02* +X388834Y355303D01* +X388931Y355305D01* +X389027Y355311D01* +X389123Y355320D01* +X389219Y355334D01* +X389314Y355351D01* +X389408Y355373D01* +X389501Y355398D01* +X389594Y355426D01* +X389685Y355459D01* +X389774Y355495D01* +X389862Y355535D01* +X389949Y355578D01* +X390034Y355624D01* +X390116Y355674D01* +X390197Y355728D01* +X390275Y355784D01* +X390351Y355844D01* +X390425Y355906D01* +X390496Y355972D01* +X390564Y356040D01* +X390630Y356111D01* +X390692Y356185D01* +X390752Y356261D01* +X390808Y356339D01* +X390862Y356420D01* +X390912Y356503D01* +X390958Y356587D01* +X391001Y356674D01* +X391041Y356762D01* +X391077Y356851D01* +X391110Y356942D01* +X391138Y357035D01* +X391163Y357128D01* +X391185Y357222D01* +X391202Y357317D01* +X391216Y357413D01* +X391225Y357509D01* +X391231Y357605D01* +X391233Y357702D01* +X391231Y357799D01* +X391225Y357895D01* +X391216Y357991D01* +X391202Y358087D01* +X391185Y358182D01* +X391163Y358276D01* +X391138Y358369D01* +X391110Y358462D01* +X391077Y358553D01* +X391041Y358642D01* +X391001Y358730D01* +X390958Y358817D01* +X390912Y358902D01* +X390862Y358984D01* +X390808Y359065D01* +X390752Y359143D01* +X390692Y359219D01* +X390630Y359293D01* +X390564Y359364D01* +X390496Y359432D01* +X390425Y359498D01* +X390351Y359560D01* +X390275Y359620D01* +X390197Y359676D01* +X390116Y359730D01* +X390034Y359780D01* +X389949Y359826D01* +X389862Y359869D01* +X389774Y359909D01* +X389685Y359945D01* +X389594Y359978D01* +X389501Y360006D01* +X389408Y360031D01* +X389314Y360053D01* +X389219Y360070D01* +X389123Y360084D01* +X389027Y360093D01* +X388931Y360099D01* +X388834Y360101D01* +X389313Y363939D02* +X386435Y363939D01* +X389313Y363939D02* +X389399Y363937D01* +X389485Y363931D01* +X389571Y363922D01* +X389656Y363908D01* +X389740Y363891D01* +X389824Y363870D01* +X389906Y363845D01* +X389987Y363817D01* +X390067Y363785D01* +X390146Y363749D01* +X390222Y363710D01* +X390297Y363667D01* +X390370Y363622D01* +X390441Y363573D01* +X390509Y363520D01* +X390576Y363465D01* +X390639Y363407D01* +X390700Y363346D01* +X390758Y363283D01* +X390813Y363216D01* +X390866Y363148D01* +X390915Y363077D01* +X390960Y363004D01* +X391003Y362929D01* +X391042Y362853D01* +X391078Y362774D01* +X391110Y362694D01* +X391138Y362613D01* +X391163Y362531D01* +X391184Y362447D01* +X391201Y362363D01* +X391215Y362278D01* +X391224Y362192D01* +X391230Y362106D01* +X391232Y362020D01* +X391230Y361934D01* +X391224Y361848D01* +X391215Y361762D01* +X391201Y361677D01* +X391184Y361593D01* +X391163Y361509D01* +X391138Y361427D01* +X391110Y361346D01* +X391078Y361266D01* +X391042Y361187D01* +X391003Y361111D01* +X390960Y361036D01* +X390915Y360963D01* +X390866Y360892D01* +X390813Y360824D01* +X390758Y360757D01* +X390700Y360694D01* +X390639Y360633D01* +X390576Y360575D01* +X390509Y360520D01* +X390441Y360467D01* +X390370Y360418D01* +X390297Y360373D01* +X390222Y360330D01* +X390146Y360291D01* +X390067Y360255D01* +X389987Y360223D01* +X389906Y360195D01* +X389824Y360170D01* +X389740Y360149D01* +X389656Y360132D01* +X389571Y360118D01* +X389485Y360109D01* +X389399Y360103D01* +X389313Y360101D01* +X387394Y360101D01* +D28* +X482200Y165590D02* +X482202Y165634D01* +X482208Y165678D01* +X482218Y165721D01* +X482231Y165763D01* +X482248Y165804D01* +X482269Y165843D01* +X482293Y165880D01* +X482320Y165915D01* +X482350Y165947D01* +X482383Y165977D01* +X482419Y166003D01* +X482456Y166027D01* +X482496Y166046D01* +X482537Y166063D01* +X482580Y166075D01* +X482623Y166084D01* +X482667Y166089D01* +X482711Y166090D01* +X482755Y166087D01* +X482799Y166080D01* +X482842Y166069D01* +X482884Y166055D01* +X482924Y166037D01* +X482963Y166015D01* +X482999Y165991D01* +X483033Y165963D01* +X483065Y165932D01* +X483094Y165898D01* +X483120Y165862D01* +X483142Y165824D01* +X483161Y165784D01* +X483176Y165742D01* +X483188Y165700D01* +X483196Y165656D01* +X483200Y165612D01* +X483200Y165568D01* +X483196Y165524D01* +X483188Y165480D01* +X483176Y165438D01* +X483161Y165396D01* +X483142Y165356D01* +X483120Y165318D01* +X483094Y165282D01* +X483065Y165248D01* +X483033Y165217D01* +X482999Y165189D01* +X482963Y165165D01* +X482924Y165143D01* +X482884Y165125D01* +X482842Y165111D01* +X482799Y165100D01* +X482755Y165093D01* +X482711Y165090D01* +X482667Y165091D01* +X482623Y165096D01* +X482580Y165105D01* +X482537Y165117D01* +X482496Y165134D01* +X482456Y165153D01* +X482419Y165177D01* +X482383Y165203D01* +X482350Y165233D01* +X482320Y165265D01* +X482293Y165300D01* +X482269Y165337D01* +X482248Y165376D01* +X482231Y165417D01* +X482218Y165459D01* +X482208Y165502D01* +X482202Y165546D01* +X482200Y165590D01* +D20* +X515300Y209540D02* +X515300Y213040D01* +X475300Y213040D02* +X475300Y209540D01* +X515300Y176540D02* +X515300Y173040D01* +X475300Y173040D02* +X475300Y176540D01* +X511800Y213040D02* +X515300Y213040D01* +X478800Y213040D02* +X475300Y213040D01* +X511800Y173040D02* +X515300Y173040D01* +X478800Y173040D02* +X475300Y173040D01* +D14* +X473481Y221611D02* +X473481Y227848D01* +X473481Y221611D02* +X473483Y221514D01* +X473489Y221418D01* +X473498Y221322D01* +X473512Y221226D01* +X473529Y221131D01* +X473551Y221037D01* +X473576Y220944D01* +X473604Y220851D01* +X473637Y220760D01* +X473673Y220671D01* +X473713Y220583D01* +X473756Y220496D01* +X473802Y220412D01* +X473852Y220329D01* +X473906Y220248D01* +X473962Y220170D01* +X474022Y220094D01* +X474084Y220020D01* +X474150Y219949D01* +X474218Y219881D01* +X474289Y219815D01* +X474363Y219753D01* +X474439Y219693D01* +X474517Y219637D01* +X474598Y219583D01* +X474681Y219533D01* +X474765Y219487D01* +X474852Y219444D01* +X474940Y219404D01* +X475029Y219368D01* +X475120Y219335D01* +X475213Y219307D01* +X475306Y219282D01* +X475400Y219260D01* +X475495Y219243D01* +X475591Y219229D01* +X475687Y219220D01* +X475783Y219214D01* +X475880Y219212D01* +X475977Y219214D01* +X476073Y219220D01* +X476169Y219229D01* +X476265Y219243D01* +X476360Y219260D01* +X476454Y219282D01* +X476547Y219307D01* +X476640Y219335D01* +X476731Y219368D01* +X476820Y219404D01* +X476908Y219444D01* +X476995Y219487D01* +X477080Y219533D01* +X477162Y219583D01* +X477243Y219637D01* +X477321Y219693D01* +X477397Y219753D01* +X477471Y219815D01* +X477542Y219881D01* +X477610Y219949D01* +X477676Y220020D01* +X477738Y220094D01* +X477798Y220170D01* +X477854Y220248D01* +X477908Y220329D01* +X477958Y220411D01* +X478004Y220496D01* +X478047Y220583D01* +X478087Y220671D01* +X478123Y220760D01* +X478156Y220851D01* +X478184Y220944D01* +X478209Y221037D01* +X478231Y221131D01* +X478248Y221226D01* +X478262Y221322D01* +X478271Y221418D01* +X478277Y221514D01* +X478279Y221611D01* +X478279Y227848D01* +X482930Y224010D02* +X485809Y224010D01* +X485895Y224008D01* +X485981Y224002D01* +X486067Y223993D01* +X486152Y223979D01* +X486236Y223962D01* +X486320Y223941D01* +X486402Y223916D01* +X486483Y223888D01* +X486563Y223856D01* +X486642Y223820D01* +X486718Y223781D01* +X486793Y223738D01* +X486866Y223693D01* +X486937Y223644D01* +X487005Y223591D01* +X487072Y223536D01* +X487135Y223478D01* +X487196Y223417D01* +X487254Y223354D01* +X487309Y223287D01* +X487362Y223219D01* +X487411Y223148D01* +X487456Y223075D01* +X487499Y223000D01* +X487538Y222924D01* +X487574Y222845D01* +X487606Y222765D01* +X487634Y222684D01* +X487659Y222602D01* +X487680Y222518D01* +X487697Y222434D01* +X487711Y222349D01* +X487720Y222263D01* +X487726Y222177D01* +X487728Y222091D01* +X487728Y221611D01* +X487726Y221514D01* +X487720Y221418D01* +X487711Y221322D01* +X487697Y221226D01* +X487680Y221131D01* +X487658Y221037D01* +X487633Y220944D01* +X487605Y220851D01* +X487572Y220760D01* +X487536Y220671D01* +X487496Y220583D01* +X487453Y220496D01* +X487407Y220411D01* +X487357Y220329D01* +X487303Y220248D01* +X487247Y220170D01* +X487187Y220094D01* +X487125Y220020D01* +X487059Y219949D01* +X486991Y219881D01* +X486920Y219815D01* +X486846Y219753D01* +X486770Y219693D01* +X486692Y219637D01* +X486611Y219583D01* +X486529Y219533D01* +X486444Y219487D01* +X486357Y219444D01* +X486269Y219404D01* +X486180Y219368D01* +X486089Y219335D01* +X485996Y219307D01* +X485903Y219282D01* +X485809Y219260D01* +X485714Y219243D01* +X485618Y219229D01* +X485522Y219220D01* +X485426Y219214D01* +X485329Y219212D01* +X485232Y219214D01* +X485136Y219220D01* +X485040Y219229D01* +X484944Y219243D01* +X484849Y219260D01* +X484755Y219282D01* +X484662Y219307D01* +X484569Y219335D01* +X484478Y219368D01* +X484389Y219404D01* +X484301Y219444D01* +X484214Y219487D01* +X484130Y219533D01* +X484047Y219583D01* +X483966Y219637D01* +X483888Y219693D01* +X483812Y219753D01* +X483738Y219815D01* +X483667Y219881D01* +X483599Y219949D01* +X483533Y220020D01* +X483471Y220094D01* +X483411Y220170D01* +X483355Y220248D01* +X483301Y220329D01* +X483251Y220412D01* +X483205Y220496D01* +X483162Y220583D01* +X483122Y220671D01* +X483086Y220760D01* +X483053Y220851D01* +X483025Y220944D01* +X483000Y221037D01* +X482978Y221131D01* +X482961Y221226D01* +X482947Y221322D01* +X482938Y221418D01* +X482932Y221514D01* +X482930Y221611D01* +X482930Y224010D01* +X482932Y224133D01* +X482938Y224256D01* +X482948Y224379D01* +X482962Y224501D01* +X482979Y224623D01* +X483001Y224744D01* +X483026Y224864D01* +X483056Y224984D01* +X483089Y225102D01* +X483126Y225219D01* +X483166Y225336D01* +X483210Y225450D01* +X483258Y225564D01* +X483310Y225675D01* +X483365Y225785D01* +X483424Y225893D01* +X483486Y226000D01* +X483551Y226104D01* +X483620Y226206D01* +X483692Y226306D01* +X483767Y226403D01* +X483846Y226498D01* +X483927Y226590D01* +X484011Y226680D01* +X484098Y226767D01* +X484188Y226851D01* +X484280Y226932D01* +X484375Y227011D01* +X484472Y227086D01* +X484572Y227158D01* +X484674Y227227D01* +X484778Y227292D01* +X484885Y227354D01* +X484993Y227413D01* +X485103Y227468D01* +X485214Y227520D01* +X485328Y227567D01* +X485442Y227612D01* +X485559Y227652D01* +X485676Y227689D01* +X485794Y227722D01* +X485914Y227752D01* +X486034Y227777D01* +X486155Y227799D01* +X486277Y227816D01* +X486399Y227830D01* +X486522Y227840D01* +X486645Y227846D01* +X486768Y227848D01* +D20* +X119700Y271790D02* +X119700Y114290D01* +X337500Y114290D02* +X337500Y271790D01* +X337500Y114290D02* +X119700Y114290D01* +X119600Y271790D02* +X337500Y271790D01* +D14* +X341763Y259098D02* +X348480Y259098D01* +X348566Y259096D01* +X348652Y259090D01* +X348738Y259081D01* +X348823Y259067D01* +X348907Y259050D01* +X348991Y259029D01* +X349073Y259004D01* +X349154Y258976D01* +X349234Y258944D01* +X349313Y258908D01* +X349389Y258869D01* +X349464Y258826D01* +X349537Y258781D01* +X349608Y258731D01* +X349676Y258679D01* +X349743Y258624D01* +X349806Y258566D01* +X349867Y258505D01* +X349925Y258442D01* +X349980Y258375D01* +X350033Y258307D01* +X350082Y258236D01* +X350127Y258163D01* +X350170Y258088D01* +X350209Y258012D01* +X350245Y257933D01* +X350277Y257853D01* +X350305Y257772D01* +X350330Y257689D01* +X350351Y257606D01* +X350368Y257522D01* +X350382Y257437D01* +X350391Y257351D01* +X350397Y257265D01* +X350399Y257179D01* +X350399Y256219D01* +X350399Y263695D02* +X350399Y266574D01* +X350397Y266660D01* +X350391Y266746D01* +X350382Y266832D01* +X350368Y266917D01* +X350351Y267001D01* +X350330Y267085D01* +X350305Y267167D01* +X350277Y267248D01* +X350245Y267328D01* +X350209Y267407D01* +X350170Y267483D01* +X350127Y267558D01* +X350082Y267631D01* +X350033Y267702D01* +X349980Y267770D01* +X349925Y267837D01* +X349867Y267900D01* +X349806Y267961D01* +X349743Y268019D01* +X349676Y268074D01* +X349608Y268127D01* +X349537Y268176D01* +X349464Y268221D01* +X349389Y268264D01* +X349313Y268303D01* +X349234Y268339D01* +X349154Y268371D01* +X349073Y268399D01* +X348991Y268424D01* +X348907Y268445D01* +X348823Y268462D01* +X348738Y268476D01* +X348652Y268485D01* +X348566Y268491D01* +X348480Y268493D01* +X347520Y268493D01* +X347434Y268491D01* +X347348Y268485D01* +X347262Y268476D01* +X347177Y268462D01* +X347093Y268445D01* +X347009Y268424D01* +X346927Y268399D01* +X346846Y268371D01* +X346766Y268339D01* +X346687Y268303D01* +X346611Y268264D01* +X346536Y268221D01* +X346463Y268176D01* +X346392Y268127D01* +X346324Y268074D01* +X346257Y268019D01* +X346194Y267961D01* +X346133Y267900D01* +X346075Y267837D01* +X346020Y267770D01* +X345968Y267702D01* +X345918Y267631D01* +X345873Y267558D01* +X345830Y267483D01* +X345791Y267407D01* +X345755Y267328D01* +X345723Y267248D01* +X345695Y267167D01* +X345670Y267085D01* +X345649Y267001D01* +X345632Y266917D01* +X345618Y266832D01* +X345609Y266746D01* +X345603Y266660D01* +X345601Y266574D01* +X345601Y263695D01* +X341763Y263695D01* +X341763Y268493D01* +X362461Y19050D02* +X362461Y12333D01* +X362459Y12247D01* +X362453Y12161D01* +X362444Y12075D01* +X362430Y11990D01* +X362413Y11906D01* +X362392Y11822D01* +X362367Y11740D01* +X362339Y11659D01* +X362307Y11579D01* +X362271Y11500D01* +X362232Y11424D01* +X362189Y11349D01* +X362144Y11276D01* +X362094Y11205D01* +X362042Y11137D01* +X361987Y11070D01* +X361929Y11007D01* +X361868Y10946D01* +X361805Y10888D01* +X361738Y10833D01* +X361670Y10780D01* +X361599Y10731D01* +X361526Y10686D01* +X361451Y10643D01* +X361375Y10604D01* +X361296Y10568D01* +X361216Y10536D01* +X361135Y10508D01* +X361052Y10483D01* +X360969Y10462D01* +X360885Y10445D01* +X360800Y10431D01* +X360714Y10422D01* +X360628Y10416D01* +X360542Y10414D01* +X359582Y10414D01* +X367058Y10414D02* +X369457Y10414D01* +X369554Y10416D01* +X369650Y10422D01* +X369746Y10431D01* +X369842Y10445D01* +X369937Y10462D01* +X370031Y10484D01* +X370124Y10509D01* +X370217Y10537D01* +X370308Y10570D01* +X370397Y10606D01* +X370485Y10646D01* +X370572Y10689D01* +X370657Y10735D01* +X370739Y10785D01* +X370820Y10839D01* +X370898Y10895D01* +X370974Y10955D01* +X371048Y11017D01* +X371119Y11083D01* +X371187Y11151D01* +X371253Y11222D01* +X371315Y11296D01* +X371375Y11372D01* +X371431Y11450D01* +X371485Y11531D01* +X371535Y11613D01* +X371581Y11698D01* +X371624Y11785D01* +X371664Y11873D01* +X371700Y11962D01* +X371733Y12053D01* +X371761Y12146D01* +X371786Y12239D01* +X371808Y12333D01* +X371825Y12428D01* +X371839Y12524D01* +X371848Y12620D01* +X371854Y12716D01* +X371856Y12813D01* +X371854Y12910D01* +X371848Y13006D01* +X371839Y13102D01* +X371825Y13198D01* +X371808Y13293D01* +X371786Y13387D01* +X371761Y13480D01* +X371733Y13573D01* +X371700Y13664D01* +X371664Y13753D01* +X371624Y13841D01* +X371581Y13928D01* +X371535Y14012D01* +X371485Y14095D01* +X371431Y14176D01* +X371375Y14254D01* +X371315Y14330D01* +X371253Y14404D01* +X371187Y14475D01* +X371119Y14543D01* +X371048Y14609D01* +X370974Y14671D01* +X370898Y14731D01* +X370820Y14787D01* +X370739Y14841D01* +X370657Y14891D01* +X370572Y14937D01* +X370485Y14980D01* +X370397Y15020D01* +X370308Y15056D01* +X370217Y15089D01* +X370124Y15117D01* +X370031Y15142D01* +X369937Y15164D01* +X369842Y15181D01* +X369746Y15195D01* +X369650Y15204D01* +X369554Y15210D01* +X369457Y15212D01* +X369937Y19050D02* +X367058Y19050D01* +X369937Y19050D02* +X370023Y19048D01* +X370109Y19042D01* +X370195Y19033D01* +X370280Y19019D01* +X370364Y19002D01* +X370448Y18981D01* +X370530Y18956D01* +X370611Y18928D01* +X370691Y18896D01* +X370770Y18860D01* +X370846Y18821D01* +X370921Y18778D01* +X370994Y18733D01* +X371065Y18684D01* +X371133Y18631D01* +X371200Y18576D01* +X371263Y18518D01* +X371324Y18457D01* +X371382Y18394D01* +X371437Y18327D01* +X371490Y18259D01* +X371539Y18188D01* +X371584Y18115D01* +X371627Y18040D01* +X371666Y17964D01* +X371702Y17885D01* +X371734Y17805D01* +X371762Y17724D01* +X371787Y17642D01* +X371808Y17558D01* +X371825Y17474D01* +X371839Y17389D01* +X371848Y17303D01* +X371854Y17217D01* +X371856Y17131D01* +X371854Y17045D01* +X371848Y16959D01* +X371839Y16873D01* +X371825Y16788D01* +X371808Y16704D01* +X371787Y16620D01* +X371762Y16538D01* +X371734Y16457D01* +X371702Y16377D01* +X371666Y16298D01* +X371627Y16222D01* +X371584Y16147D01* +X371539Y16074D01* +X371490Y16003D01* +X371437Y15935D01* +X371382Y15868D01* +X371324Y15805D01* +X371263Y15744D01* +X371200Y15686D01* +X371133Y15631D01* +X371065Y15578D01* +X370994Y15529D01* +X370921Y15484D01* +X370846Y15441D01* +X370770Y15402D01* +X370691Y15366D01* +X370611Y15334D01* +X370530Y15306D01* +X370448Y15281D01* +X370364Y15260D01* +X370280Y15243D01* +X370195Y15229D01* +X370109Y15220D01* +X370023Y15214D01* +X369937Y15212D01* +X368018Y15212D01* +D23* +X1263090Y184150D02* +X1263092Y184213D01* +X1263098Y184275D01* +X1263108Y184337D01* +X1263121Y184399D01* +X1263139Y184459D01* +X1263160Y184518D01* +X1263185Y184576D01* +X1263214Y184632D01* +X1263246Y184686D01* +X1263281Y184738D01* +X1263319Y184787D01* +X1263361Y184835D01* +X1263405Y184879D01* +X1263453Y184921D01* +X1263502Y184959D01* +X1263554Y184994D01* +X1263608Y185026D01* +X1263664Y185055D01* +X1263722Y185080D01* +X1263781Y185101D01* +X1263841Y185119D01* +X1263903Y185132D01* +X1263965Y185142D01* +X1264027Y185148D01* +X1264090Y185150D01* +X1264153Y185148D01* +X1264215Y185142D01* +X1264277Y185132D01* +X1264339Y185119D01* +X1264399Y185101D01* +X1264458Y185080D01* +X1264516Y185055D01* +X1264572Y185026D01* +X1264626Y184994D01* +X1264678Y184959D01* +X1264727Y184921D01* +X1264775Y184879D01* +X1264819Y184835D01* +X1264861Y184787D01* +X1264899Y184738D01* +X1264934Y184686D01* +X1264966Y184632D01* +X1264995Y184576D01* +X1265020Y184518D01* +X1265041Y184459D01* +X1265059Y184399D01* +X1265072Y184337D01* +X1265082Y184275D01* +X1265088Y184213D01* +X1265090Y184150D01* +X1265088Y184087D01* +X1265082Y184025D01* +X1265072Y183963D01* +X1265059Y183901D01* +X1265041Y183841D01* +X1265020Y183782D01* +X1264995Y183724D01* +X1264966Y183668D01* +X1264934Y183614D01* +X1264899Y183562D01* +X1264861Y183513D01* +X1264819Y183465D01* +X1264775Y183421D01* +X1264727Y183379D01* +X1264678Y183341D01* +X1264626Y183306D01* +X1264572Y183274D01* +X1264516Y183245D01* +X1264458Y183220D01* +X1264399Y183199D01* +X1264339Y183181D01* +X1264277Y183168D01* +X1264215Y183158D01* +X1264153Y183152D01* +X1264090Y183150D01* +X1264027Y183152D01* +X1263965Y183158D01* +X1263903Y183168D01* +X1263841Y183181D01* +X1263781Y183199D01* +X1263722Y183220D01* +X1263664Y183245D01* +X1263608Y183274D01* +X1263554Y183306D01* +X1263502Y183341D01* +X1263453Y183379D01* +X1263405Y183421D01* +X1263361Y183465D01* +X1263319Y183513D01* +X1263281Y183562D01* +X1263246Y183614D01* +X1263214Y183668D01* +X1263185Y183724D01* +X1263160Y183782D01* +X1263139Y183841D01* +X1263121Y183901D01* +X1263108Y183963D01* +X1263098Y184025D01* +X1263092Y184087D01* +X1263090Y184150D01* +D14* +X1273308Y159753D02* +X1281944Y159753D01* +X1273308Y159753D02* +X1273308Y162152D01* +X1273310Y162249D01* +X1273316Y162345D01* +X1273325Y162441D01* +X1273339Y162537D01* +X1273356Y162632D01* +X1273378Y162726D01* +X1273403Y162819D01* +X1273431Y162912D01* +X1273464Y163003D01* +X1273500Y163092D01* +X1273540Y163180D01* +X1273583Y163267D01* +X1273629Y163352D01* +X1273679Y163434D01* +X1273733Y163515D01* +X1273789Y163593D01* +X1273849Y163669D01* +X1273911Y163743D01* +X1273977Y163814D01* +X1274045Y163882D01* +X1274116Y163948D01* +X1274190Y164010D01* +X1274266Y164070D01* +X1274344Y164126D01* +X1274425Y164180D01* +X1274508Y164230D01* +X1274592Y164276D01* +X1274679Y164319D01* +X1274767Y164359D01* +X1274856Y164395D01* +X1274947Y164428D01* +X1275040Y164456D01* +X1275133Y164481D01* +X1275227Y164503D01* +X1275322Y164520D01* +X1275418Y164534D01* +X1275514Y164543D01* +X1275610Y164549D01* +X1275707Y164551D01* +X1279545Y164551D01* +X1279642Y164549D01* +X1279738Y164543D01* +X1279834Y164534D01* +X1279930Y164520D01* +X1280025Y164503D01* +X1280119Y164481D01* +X1280212Y164456D01* +X1280305Y164428D01* +X1280396Y164395D01* +X1280485Y164359D01* +X1280573Y164319D01* +X1280660Y164276D01* +X1280745Y164230D01* +X1280827Y164180D01* +X1280908Y164126D01* +X1280986Y164070D01* +X1281062Y164010D01* +X1281136Y163948D01* +X1281207Y163882D01* +X1281275Y163814D01* +X1281341Y163743D01* +X1281403Y163669D01* +X1281463Y163593D01* +X1281519Y163515D01* +X1281573Y163434D01* +X1281623Y163352D01* +X1281669Y163267D01* +X1281712Y163180D01* +X1281752Y163092D01* +X1281788Y163003D01* +X1281821Y162912D01* +X1281849Y162819D01* +X1281874Y162726D01* +X1281896Y162632D01* +X1281913Y162537D01* +X1281927Y162441D01* +X1281936Y162345D01* +X1281942Y162249D01* +X1281944Y162152D01* +X1281944Y159753D01* +X1280025Y169202D02* +X1273308Y171121D01* +X1280025Y169202D02* +X1280025Y174000D01* +X1278106Y172560D02* +X1281944Y172560D01* +D23* +X747030Y135450D02* +X747032Y135513D01* +X747038Y135575D01* +X747048Y135637D01* +X747061Y135699D01* +X747079Y135759D01* +X747100Y135818D01* +X747125Y135876D01* +X747154Y135932D01* +X747186Y135986D01* +X747221Y136038D01* +X747259Y136087D01* +X747301Y136135D01* +X747345Y136179D01* +X747393Y136221D01* +X747442Y136259D01* +X747494Y136294D01* +X747548Y136326D01* +X747604Y136355D01* +X747662Y136380D01* +X747721Y136401D01* +X747781Y136419D01* +X747843Y136432D01* +X747905Y136442D01* +X747967Y136448D01* +X748030Y136450D01* +X748093Y136448D01* +X748155Y136442D01* +X748217Y136432D01* +X748279Y136419D01* +X748339Y136401D01* +X748398Y136380D01* +X748456Y136355D01* +X748512Y136326D01* +X748566Y136294D01* +X748618Y136259D01* +X748667Y136221D01* +X748715Y136179D01* +X748759Y136135D01* +X748801Y136087D01* +X748839Y136038D01* +X748874Y135986D01* +X748906Y135932D01* +X748935Y135876D01* +X748960Y135818D01* +X748981Y135759D01* +X748999Y135699D01* +X749012Y135637D01* +X749022Y135575D01* +X749028Y135513D01* +X749030Y135450D01* +X749028Y135387D01* +X749022Y135325D01* +X749012Y135263D01* +X748999Y135201D01* +X748981Y135141D01* +X748960Y135082D01* +X748935Y135024D01* +X748906Y134968D01* +X748874Y134914D01* +X748839Y134862D01* +X748801Y134813D01* +X748759Y134765D01* +X748715Y134721D01* +X748667Y134679D01* +X748618Y134641D01* +X748566Y134606D01* +X748512Y134574D01* +X748456Y134545D01* +X748398Y134520D01* +X748339Y134499D01* +X748279Y134481D01* +X748217Y134468D01* +X748155Y134458D01* +X748093Y134452D01* +X748030Y134450D01* +X747967Y134452D01* +X747905Y134458D01* +X747843Y134468D01* +X747781Y134481D01* +X747721Y134499D01* +X747662Y134520D01* +X747604Y134545D01* +X747548Y134574D01* +X747494Y134606D01* +X747442Y134641D01* +X747393Y134679D01* +X747345Y134721D01* +X747301Y134765D01* +X747259Y134813D01* +X747221Y134862D01* +X747186Y134914D01* +X747154Y134968D01* +X747125Y135024D01* +X747100Y135082D01* +X747079Y135141D01* +X747061Y135201D01* +X747048Y135263D01* +X747038Y135325D01* +X747032Y135387D01* +X747030Y135450D01* +D14* +X738111Y129026D02* +X738111Y120390D01* +X738111Y129026D02* +X740510Y129026D01* +X740607Y129024D01* +X740703Y129018D01* +X740799Y129009D01* +X740895Y128995D01* +X740990Y128978D01* +X741084Y128956D01* +X741177Y128931D01* +X741270Y128903D01* +X741361Y128870D01* +X741450Y128834D01* +X741538Y128794D01* +X741625Y128751D01* +X741710Y128705D01* +X741792Y128655D01* +X741873Y128601D01* +X741951Y128545D01* +X742027Y128485D01* +X742101Y128423D01* +X742172Y128357D01* +X742240Y128289D01* +X742306Y128218D01* +X742368Y128144D01* +X742428Y128068D01* +X742484Y127990D01* +X742538Y127909D01* +X742588Y127827D01* +X742634Y127742D01* +X742677Y127655D01* +X742717Y127567D01* +X742753Y127478D01* +X742786Y127387D01* +X742814Y127294D01* +X742839Y127201D01* +X742861Y127107D01* +X742878Y127012D01* +X742892Y126916D01* +X742901Y126820D01* +X742907Y126724D01* +X742909Y126627D01* +X742909Y122789D01* +X742907Y122692D01* +X742901Y122596D01* +X742892Y122500D01* +X742878Y122404D01* +X742861Y122309D01* +X742839Y122215D01* +X742814Y122122D01* +X742786Y122029D01* +X742753Y121938D01* +X742717Y121849D01* +X742677Y121761D01* +X742634Y121674D01* +X742588Y121589D01* +X742538Y121507D01* +X742484Y121426D01* +X742428Y121348D01* +X742368Y121272D01* +X742306Y121198D01* +X742240Y121127D01* +X742172Y121059D01* +X742101Y120993D01* +X742027Y120931D01* +X741951Y120871D01* +X741873Y120815D01* +X741792Y120761D01* +X741710Y120711D01* +X741625Y120665D01* +X741538Y120622D01* +X741450Y120582D01* +X741361Y120546D01* +X741270Y120513D01* +X741177Y120485D01* +X741084Y120460D01* +X740990Y120438D01* +X740895Y120421D01* +X740799Y120407D01* +X740703Y120398D01* +X740607Y120392D01* +X740510Y120390D01* +X738111Y120390D01* +X747560Y120390D02* +X749959Y120390D01* +X750056Y120392D01* +X750152Y120398D01* +X750248Y120407D01* +X750344Y120421D01* +X750439Y120438D01* +X750533Y120460D01* +X750626Y120485D01* +X750719Y120513D01* +X750810Y120546D01* +X750899Y120582D01* +X750987Y120622D01* +X751074Y120665D01* +X751159Y120711D01* +X751241Y120761D01* +X751322Y120815D01* +X751400Y120871D01* +X751476Y120931D01* +X751550Y120993D01* +X751621Y121059D01* +X751689Y121127D01* +X751755Y121198D01* +X751817Y121272D01* +X751877Y121348D01* +X751933Y121426D01* +X751987Y121507D01* +X752037Y121589D01* +X752083Y121674D01* +X752126Y121761D01* +X752166Y121849D01* +X752202Y121938D01* +X752235Y122029D01* +X752263Y122122D01* +X752288Y122215D01* +X752310Y122309D01* +X752327Y122404D01* +X752341Y122500D01* +X752350Y122596D01* +X752356Y122692D01* +X752358Y122789D01* +X752356Y122886D01* +X752350Y122982D01* +X752341Y123078D01* +X752327Y123174D01* +X752310Y123269D01* +X752288Y123363D01* +X752263Y123456D01* +X752235Y123549D01* +X752202Y123640D01* +X752166Y123729D01* +X752126Y123817D01* +X752083Y123904D01* +X752037Y123988D01* +X751987Y124071D01* +X751933Y124152D01* +X751877Y124230D01* +X751817Y124306D01* +X751755Y124380D01* +X751689Y124451D01* +X751621Y124519D01* +X751550Y124585D01* +X751476Y124647D01* +X751400Y124707D01* +X751322Y124763D01* +X751241Y124817D01* +X751159Y124867D01* +X751074Y124913D01* +X750987Y124956D01* +X750899Y124996D01* +X750810Y125032D01* +X750719Y125065D01* +X750626Y125093D01* +X750533Y125118D01* +X750439Y125140D01* +X750344Y125157D01* +X750248Y125171D01* +X750152Y125180D01* +X750056Y125186D01* +X749959Y125188D01* +X750438Y129026D02* +X747560Y129026D01* +X750438Y129026D02* +X750524Y129024D01* +X750610Y129018D01* +X750696Y129009D01* +X750781Y128995D01* +X750865Y128978D01* +X750949Y128957D01* +X751031Y128932D01* +X751112Y128904D01* +X751192Y128872D01* +X751271Y128836D01* +X751347Y128797D01* +X751422Y128754D01* +X751495Y128709D01* +X751566Y128660D01* +X751634Y128607D01* +X751701Y128552D01* +X751764Y128494D01* +X751825Y128433D01* +X751883Y128370D01* +X751938Y128303D01* +X751991Y128235D01* +X752040Y128164D01* +X752085Y128091D01* +X752128Y128016D01* +X752167Y127940D01* +X752203Y127861D01* +X752235Y127781D01* +X752263Y127700D01* +X752288Y127618D01* +X752309Y127534D01* +X752326Y127450D01* +X752340Y127365D01* +X752349Y127279D01* +X752355Y127193D01* +X752357Y127107D01* +X752355Y127021D01* +X752349Y126935D01* +X752340Y126849D01* +X752326Y126764D01* +X752309Y126680D01* +X752288Y126596D01* +X752263Y126514D01* +X752235Y126433D01* +X752203Y126353D01* +X752167Y126274D01* +X752128Y126198D01* +X752085Y126123D01* +X752040Y126050D01* +X751991Y125979D01* +X751938Y125911D01* +X751883Y125844D01* +X751825Y125781D01* +X751764Y125720D01* +X751701Y125662D01* +X751634Y125607D01* +X751566Y125554D01* +X751495Y125505D01* +X751422Y125460D01* +X751347Y125417D01* +X751271Y125378D01* +X751192Y125342D01* +X751112Y125310D01* +X751031Y125282D01* +X750949Y125257D01* +X750865Y125236D01* +X750781Y125219D01* +X750696Y125205D01* +X750610Y125196D01* +X750524Y125190D01* +X750438Y125188D01* +X748519Y125188D01* +D20* +X815300Y30320D02* +X815300Y10320D01* +D14* +X823045Y11063D02* +X823045Y17780D01* +X823045Y11063D02* +X823043Y10977D01* +X823037Y10891D01* +X823028Y10805D01* +X823014Y10720D01* +X822997Y10636D01* +X822976Y10552D01* +X822951Y10470D01* +X822923Y10389D01* +X822891Y10309D01* +X822855Y10230D01* +X822816Y10154D01* +X822773Y10079D01* +X822728Y10006D01* +X822678Y9935D01* +X822626Y9867D01* +X822571Y9800D01* +X822513Y9737D01* +X822452Y9676D01* +X822389Y9618D01* +X822322Y9563D01* +X822254Y9510D01* +X822183Y9461D01* +X822110Y9416D01* +X822035Y9373D01* +X821959Y9334D01* +X821880Y9298D01* +X821800Y9266D01* +X821719Y9238D01* +X821636Y9213D01* +X821553Y9192D01* +X821469Y9175D01* +X821384Y9161D01* +X821298Y9152D01* +X821212Y9146D01* +X821126Y9144D01* +X820166Y9144D01* +X827642Y11063D02* +X829561Y17780D01* +X827642Y11063D02* +X832440Y11063D01* +X831001Y12982D02* +X831001Y9144D01* +X837946Y101600D02* +X792734Y101600D01* +X792734Y50800D02* +X812292Y50800D01* +X818388Y50800D01* +X837946Y50800D01* +D29* +X818388Y50800D02* +X818386Y50909D01* +X818380Y51017D01* +X818371Y51126D01* +X818357Y51234D01* +X818340Y51341D01* +X818318Y51448D01* +X818293Y51554D01* +X818265Y51659D01* +X818232Y51763D01* +X818196Y51865D01* +X818156Y51966D01* +X818113Y52066D01* +X818066Y52164D01* +X818015Y52261D01* +X817961Y52355D01* +X817904Y52448D01* +X817844Y52538D01* +X817780Y52627D01* +X817713Y52713D01* +X817644Y52796D01* +X817571Y52877D01* +X817495Y52955D01* +X817417Y53031D01* +X817336Y53104D01* +X817253Y53173D01* +X817167Y53240D01* +X817078Y53304D01* +X816988Y53364D01* +X816895Y53421D01* +X816801Y53475D01* +X816704Y53526D01* +X816606Y53573D01* +X816506Y53616D01* +X816405Y53656D01* +X816303Y53692D01* +X816199Y53725D01* +X816094Y53753D01* +X815988Y53778D01* +X815881Y53800D01* +X815774Y53817D01* +X815666Y53831D01* +X815557Y53840D01* +X815449Y53846D01* +X815340Y53848D01* +X815231Y53846D01* +X815123Y53840D01* +X815014Y53831D01* +X814906Y53817D01* +X814799Y53800D01* +X814692Y53778D01* +X814586Y53753D01* +X814481Y53725D01* +X814377Y53692D01* +X814275Y53656D01* +X814174Y53616D01* +X814074Y53573D01* +X813976Y53526D01* +X813879Y53475D01* +X813785Y53421D01* +X813692Y53364D01* +X813602Y53304D01* +X813513Y53240D01* +X813427Y53173D01* +X813344Y53104D01* +X813263Y53031D01* +X813185Y52955D01* +X813109Y52877D01* +X813036Y52796D01* +X812967Y52713D01* +X812900Y52627D01* +X812836Y52538D01* +X812776Y52448D01* +X812719Y52355D01* +X812665Y52261D01* +X812614Y52164D01* +X812567Y52066D01* +X812524Y51966D01* +X812484Y51865D01* +X812448Y51763D01* +X812415Y51659D01* +X812387Y51554D01* +X812362Y51448D01* +X812340Y51341D01* +X812323Y51234D01* +X812309Y51126D01* +X812300Y51017D01* +X812294Y50909D01* +X812292Y50800D01* +D14* +X799536Y107852D02* +X799536Y114089D01* +X799536Y107852D02* +X799538Y107755D01* +X799544Y107659D01* +X799553Y107563D01* +X799567Y107467D01* +X799584Y107372D01* +X799606Y107278D01* +X799631Y107185D01* +X799659Y107092D01* +X799692Y107001D01* +X799728Y106912D01* +X799768Y106824D01* +X799811Y106737D01* +X799857Y106653D01* +X799907Y106570D01* +X799961Y106489D01* +X800017Y106411D01* +X800077Y106335D01* +X800139Y106261D01* +X800205Y106190D01* +X800273Y106122D01* +X800344Y106056D01* +X800418Y105994D01* +X800494Y105934D01* +X800572Y105878D01* +X800653Y105824D01* +X800736Y105774D01* +X800820Y105728D01* +X800907Y105685D01* +X800995Y105645D01* +X801084Y105609D01* +X801175Y105576D01* +X801268Y105548D01* +X801361Y105523D01* +X801455Y105501D01* +X801550Y105484D01* +X801646Y105470D01* +X801742Y105461D01* +X801838Y105455D01* +X801935Y105453D01* +X802032Y105455D01* +X802128Y105461D01* +X802224Y105470D01* +X802320Y105484D01* +X802415Y105501D01* +X802509Y105523D01* +X802602Y105548D01* +X802695Y105576D01* +X802786Y105609D01* +X802875Y105645D01* +X802963Y105685D01* +X803050Y105728D01* +X803135Y105774D01* +X803217Y105824D01* +X803298Y105878D01* +X803376Y105934D01* +X803452Y105994D01* +X803526Y106056D01* +X803597Y106122D01* +X803665Y106190D01* +X803731Y106261D01* +X803793Y106335D01* +X803853Y106411D01* +X803909Y106489D01* +X803963Y106570D01* +X804013Y106652D01* +X804059Y106737D01* +X804102Y106824D01* +X804142Y106912D01* +X804178Y107001D01* +X804211Y107092D01* +X804239Y107185D01* +X804264Y107278D01* +X804286Y107372D01* +X804303Y107467D01* +X804317Y107563D01* +X804326Y107659D01* +X804332Y107755D01* +X804334Y107852D01* +X804334Y114089D01* +X808985Y112170D02* +X811384Y114089D01* +X811384Y105453D01* +X808985Y105453D02* +X813783Y105453D01* +D18* +X596900Y48260D03* +D14* +X613664Y43688D02* +X613664Y35052D01* +X613664Y43688D02* +X616063Y43688D01* +X616160Y43686D01* +X616256Y43680D01* +X616352Y43671D01* +X616448Y43657D01* +X616543Y43640D01* +X616637Y43618D01* +X616730Y43593D01* +X616823Y43565D01* +X616914Y43532D01* +X617003Y43496D01* +X617091Y43456D01* +X617178Y43413D01* +X617263Y43367D01* +X617345Y43317D01* +X617426Y43263D01* +X617504Y43207D01* +X617580Y43147D01* +X617654Y43085D01* +X617725Y43019D01* +X617793Y42951D01* +X617859Y42880D01* +X617921Y42806D01* +X617981Y42730D01* +X618037Y42652D01* +X618091Y42571D01* +X618141Y42488D01* +X618187Y42404D01* +X618230Y42317D01* +X618270Y42229D01* +X618306Y42140D01* +X618339Y42049D01* +X618367Y41956D01* +X618392Y41863D01* +X618414Y41769D01* +X618431Y41674D01* +X618445Y41578D01* +X618454Y41482D01* +X618460Y41386D01* +X618462Y41289D01* +X618460Y41192D01* +X618454Y41096D01* +X618445Y41000D01* +X618431Y40904D01* +X618414Y40809D01* +X618392Y40715D01* +X618367Y40622D01* +X618339Y40529D01* +X618306Y40438D01* +X618270Y40349D01* +X618230Y40261D01* +X618187Y40174D01* +X618141Y40089D01* +X618091Y40007D01* +X618037Y39926D01* +X617981Y39848D01* +X617921Y39772D01* +X617859Y39698D01* +X617793Y39627D01* +X617725Y39559D01* +X617654Y39493D01* +X617580Y39431D01* +X617504Y39371D01* +X617426Y39315D01* +X617345Y39261D01* +X617263Y39211D01* +X617178Y39165D01* +X617091Y39122D01* +X617003Y39082D01* +X616914Y39046D01* +X616823Y39013D01* +X616730Y38985D01* +X616637Y38960D01* +X616543Y38938D01* +X616448Y38921D01* +X616352Y38907D01* +X616256Y38898D01* +X616160Y38892D01* +X616063Y38890D01* +X613664Y38890D01* +X616543Y38890D02* +X618462Y35052D01* +X622723Y36971D02* +X624642Y43688D01* +X622723Y36971D02* +X627521Y36971D01* +X626082Y38890D02* +X626082Y35052D01* +X631867Y35052D02* +X634266Y35052D01* +X634363Y35054D01* +X634459Y35060D01* +X634555Y35069D01* +X634651Y35083D01* +X634746Y35100D01* +X634840Y35122D01* +X634933Y35147D01* +X635026Y35175D01* +X635117Y35208D01* +X635206Y35244D01* +X635294Y35284D01* +X635381Y35327D01* +X635466Y35373D01* +X635548Y35423D01* +X635629Y35477D01* +X635707Y35533D01* +X635783Y35593D01* +X635857Y35655D01* +X635928Y35721D01* +X635996Y35789D01* +X636062Y35860D01* +X636124Y35934D01* +X636184Y36010D01* +X636240Y36088D01* +X636294Y36169D01* +X636344Y36251D01* +X636390Y36336D01* +X636433Y36423D01* +X636473Y36511D01* +X636509Y36600D01* +X636542Y36691D01* +X636570Y36784D01* +X636595Y36877D01* +X636617Y36971D01* +X636634Y37066D01* +X636648Y37162D01* +X636657Y37258D01* +X636663Y37354D01* +X636665Y37451D01* +X636663Y37548D01* +X636657Y37644D01* +X636648Y37740D01* +X636634Y37836D01* +X636617Y37931D01* +X636595Y38025D01* +X636570Y38118D01* +X636542Y38211D01* +X636509Y38302D01* +X636473Y38391D01* +X636433Y38479D01* +X636390Y38566D01* +X636344Y38650D01* +X636294Y38733D01* +X636240Y38814D01* +X636184Y38892D01* +X636124Y38968D01* +X636062Y39042D01* +X635996Y39113D01* +X635928Y39181D01* +X635857Y39247D01* +X635783Y39309D01* +X635707Y39369D01* +X635629Y39425D01* +X635548Y39479D01* +X635466Y39529D01* +X635381Y39575D01* +X635294Y39618D01* +X635206Y39658D01* +X635117Y39694D01* +X635026Y39727D01* +X634933Y39755D01* +X634840Y39780D01* +X634746Y39802D01* +X634651Y39819D01* +X634555Y39833D01* +X634459Y39842D01* +X634363Y39848D01* +X634266Y39850D01* +X634746Y43688D02* +X631867Y43688D01* +X634746Y43688D02* +X634832Y43686D01* +X634918Y43680D01* +X635004Y43671D01* +X635089Y43657D01* +X635173Y43640D01* +X635257Y43619D01* +X635339Y43594D01* +X635420Y43566D01* +X635500Y43534D01* +X635579Y43498D01* +X635655Y43459D01* +X635730Y43416D01* +X635803Y43371D01* +X635874Y43322D01* +X635942Y43269D01* +X636009Y43214D01* +X636072Y43156D01* +X636133Y43095D01* +X636191Y43032D01* +X636246Y42965D01* +X636299Y42897D01* +X636348Y42826D01* +X636393Y42753D01* +X636436Y42678D01* +X636475Y42602D01* +X636511Y42523D01* +X636543Y42443D01* +X636571Y42362D01* +X636596Y42280D01* +X636617Y42196D01* +X636634Y42112D01* +X636648Y42027D01* +X636657Y41941D01* +X636663Y41855D01* +X636665Y41769D01* +X636663Y41683D01* +X636657Y41597D01* +X636648Y41511D01* +X636634Y41426D01* +X636617Y41342D01* +X636596Y41258D01* +X636571Y41176D01* +X636543Y41095D01* +X636511Y41015D01* +X636475Y40936D01* +X636436Y40860D01* +X636393Y40785D01* +X636348Y40712D01* +X636299Y40641D01* +X636246Y40573D01* +X636191Y40506D01* +X636133Y40443D01* +X636072Y40382D01* +X636009Y40324D01* +X635942Y40269D01* +X635874Y40216D01* +X635803Y40167D01* +X635730Y40122D01* +X635655Y40079D01* +X635579Y40040D01* +X635500Y40004D01* +X635420Y39972D01* +X635339Y39944D01* +X635257Y39919D01* +X635173Y39898D01* +X635089Y39881D01* +X635004Y39867D01* +X634918Y39858D01* +X634832Y39852D01* +X634746Y39850D01* +X632827Y39850D01* +D18* +X723900Y55880D03* +D20* +X751800Y66200D02* +X751800Y86200D01* +D14* +X715095Y93773D02* +X715095Y100490D01* +X715095Y93773D02* +X715093Y93687D01* +X715087Y93601D01* +X715078Y93515D01* +X715064Y93430D01* +X715047Y93346D01* +X715026Y93262D01* +X715001Y93180D01* +X714973Y93099D01* +X714941Y93019D01* +X714905Y92940D01* +X714866Y92864D01* +X714823Y92789D01* +X714778Y92716D01* +X714728Y92645D01* +X714676Y92577D01* +X714621Y92510D01* +X714563Y92447D01* +X714502Y92386D01* +X714439Y92328D01* +X714372Y92273D01* +X714304Y92220D01* +X714233Y92171D01* +X714160Y92126D01* +X714085Y92083D01* +X714009Y92044D01* +X713930Y92008D01* +X713850Y91976D01* +X713769Y91948D01* +X713686Y91923D01* +X713603Y91902D01* +X713519Y91885D01* +X713434Y91871D01* +X713348Y91862D01* +X713262Y91856D01* +X713176Y91854D01* +X712216Y91854D01* +X719692Y99530D02* +X719692Y100490D01* +X724490Y100490D01* +X722091Y91854D01* +D20* +X699183Y314645D02* +X697915Y317364D01* +X683414Y310602D01* +X684682Y307883D01* +D10* +X695125Y298409D02* +X699729Y300555D01* +D14* +X597308Y304472D02* +X589481Y300822D01* +X597308Y304472D02* +X598322Y302298D01* +X598361Y302209D01* +X598397Y302120D01* +X598429Y302028D01* +X598457Y301936D01* +X598481Y301842D01* +X598502Y301748D01* +X598518Y301653D01* +X598531Y301557D01* +X598540Y301461D01* +X598546Y301364D01* +X598547Y301268D01* +X598544Y301171D01* +X598538Y301075D01* +X598528Y300979D01* +X598513Y300883D01* +X598495Y300788D01* +X598473Y300694D01* +X598448Y300601D01* +X598418Y300509D01* +X598385Y300418D01* +X598349Y300329D01* +X598308Y300241D01* +X598265Y300155D01* +X598217Y300071D01* +X598167Y299988D01* +X598113Y299908D01* +X598056Y299830D01* +X597996Y299754D01* +X597933Y299681D01* +X597867Y299611D01* +X597798Y299543D01* +X597727Y299478D01* +X597653Y299416D01* +X597576Y299356D01* +X597497Y299301D01* +X597417Y299248D01* +X597334Y299198D01* +X597249Y299152D01* +X597162Y299110D01* +X597161Y299110D02* +X593683Y297488D01* +X593594Y297449D01* +X593505Y297413D01* +X593413Y297381D01* +X593321Y297353D01* +X593227Y297329D01* +X593133Y297308D01* +X593038Y297292D01* +X592942Y297279D01* +X592846Y297270D01* +X592750Y297264D01* +X592653Y297263D01* +X592556Y297266D01* +X592460Y297272D01* +X592364Y297282D01* +X592268Y297297D01* +X592173Y297315D01* +X592079Y297337D01* +X591986Y297362D01* +X591894Y297392D01* +X591803Y297425D01* +X591714Y297461D01* +X591626Y297502D01* +X591540Y297545D01* +X591456Y297593D01* +X591373Y297643D01* +X591293Y297697D01* +X591215Y297754D01* +X591139Y297814D01* +X591066Y297877D01* +X590996Y297943D01* +X590928Y298012D01* +X590863Y298083D01* +X590801Y298157D01* +X590742Y298234D01* +X590686Y298312D01* +X590633Y298393D01* +X590583Y298476D01* +X590537Y298561D01* +X590495Y298648D01* +X589481Y300822D01* +X593474Y292259D02* +X594691Y289650D01* +X594729Y289573D01* +X594770Y289497D01* +X594815Y289424D01* +X594864Y289352D01* +X594915Y289283D01* +X594969Y289217D01* +X595027Y289152D01* +X595087Y289091D01* +X595149Y289032D01* +X595215Y288976D01* +X595283Y288923D01* +X595353Y288873D01* +X595425Y288826D01* +X595500Y288783D01* +X595576Y288743D01* +X595654Y288706D01* +X595733Y288673D01* +X595814Y288643D01* +X595896Y288618D01* +X595980Y288596D01* +X596064Y288577D01* +X596149Y288563D01* +X596234Y288552D01* +X596320Y288545D01* +X596406Y288542D01* +X596492Y288543D01* +X596578Y288548D01* +X596664Y288556D01* +X596749Y288569D01* +X596834Y288585D01* +X596917Y288605D01* +X597000Y288629D01* +X597082Y288656D01* +X597162Y288687D01* +X597241Y288722D01* +X598111Y289127D01* +X598188Y289165D01* +X598264Y289206D01* +X598337Y289251D01* +X598409Y289300D01* +X598478Y289351D01* +X598544Y289405D01* +X598609Y289463D01* +X598670Y289523D01* +X598729Y289586D01* +X598785Y289651D01* +X598838Y289719D01* +X598888Y289789D01* +X598935Y289861D01* +X598978Y289936D01* +X599018Y290012D01* +X599055Y290090D01* +X599088Y290169D01* +X599118Y290250D01* +X599143Y290332D01* +X599165Y290416D01* +X599184Y290500D01* +X599198Y290585D01* +X599209Y290670D01* +X599216Y290756D01* +X599219Y290842D01* +X599218Y290928D01* +X599213Y291014D01* +X599205Y291100D01* +X599192Y291185D01* +X599176Y291270D01* +X599156Y291353D01* +X599132Y291436D01* +X599105Y291518D01* +X599074Y291598D01* +X599039Y291677D01* +X599039Y291678D02* +X597822Y294286D01* +X601301Y295909D01* +X603329Y291560D01* +D20* +X778435Y307584D02* +X779703Y310303D01* +X765202Y317065D01* +X763935Y314346D01* +D10* +X763389Y300257D02* +X767993Y298110D01* +D14* +X858975Y299211D02* +X866802Y295561D01* +X858975Y299211D02* +X859989Y301385D01* +X860031Y301472D01* +X860077Y301557D01* +X860127Y301640D01* +X860180Y301720D01* +X860236Y301799D01* +X860295Y301876D01* +X860357Y301950D01* +X860422Y302021D01* +X860490Y302090D01* +X860560Y302156D01* +X860633Y302219D01* +X860709Y302279D01* +X860787Y302336D01* +X860867Y302390D01* +X860950Y302441D01* +X861034Y302488D01* +X861120Y302531D01* +X861208Y302572D01* +X861297Y302608D01* +X861388Y302641D01* +X861480Y302671D01* +X861573Y302696D01* +X861667Y302718D01* +X861762Y302736D01* +X861858Y302751D01* +X861954Y302761D01* +X862050Y302767D01* +X862147Y302770D01* +X862244Y302769D01* +X862340Y302763D01* +X862436Y302754D01* +X862532Y302741D01* +X862627Y302725D01* +X862722Y302704D01* +X862815Y302680D01* +X862908Y302652D01* +X862999Y302620D01* +X863089Y302584D01* +X863177Y302545D01* +X866655Y300923D01* +X866742Y300881D01* +X866827Y300835D01* +X866910Y300785D01* +X866991Y300732D01* +X867069Y300676D01* +X867146Y300617D01* +X867220Y300555D01* +X867291Y300490D01* +X867360Y300422D01* +X867426Y300352D01* +X867489Y300279D01* +X867549Y300203D01* +X867606Y300125D01* +X867660Y300045D01* +X867710Y299962D01* +X867758Y299878D01* +X867801Y299792D01* +X867842Y299704D01* +X867878Y299615D01* +X867911Y299524D01* +X867941Y299432D01* +X867966Y299339D01* +X867988Y299245D01* +X868006Y299150D01* +X868021Y299054D01* +X868031Y298958D01* +X868037Y298862D01* +X868040Y298765D01* +X868039Y298668D01* +X868033Y298572D01* +X868024Y298476D01* +X868011Y298380D01* +X867995Y298285D01* +X867974Y298191D01* +X867950Y298097D01* +X867922Y298005D01* +X867890Y297913D01* +X867854Y297824D01* +X867815Y297735D01* +X867816Y297735D02* +X866802Y295561D01* +X866447Y306152D02* +X867663Y308761D01* +X867701Y308838D01* +X867742Y308914D01* +X867787Y308987D01* +X867836Y309059D01* +X867887Y309128D01* +X867941Y309194D01* +X867999Y309259D01* +X868059Y309320D01* +X868121Y309379D01* +X868187Y309435D01* +X868255Y309488D01* +X868325Y309538D01* +X868397Y309585D01* +X868472Y309628D01* +X868548Y309668D01* +X868626Y309705D01* +X868705Y309738D01* +X868786Y309768D01* +X868868Y309793D01* +X868952Y309815D01* +X869036Y309834D01* +X869121Y309848D01* +X869206Y309859D01* +X869292Y309866D01* +X869378Y309869D01* +X869464Y309868D01* +X869550Y309863D01* +X869636Y309855D01* +X869721Y309842D01* +X869806Y309826D01* +X869889Y309806D01* +X869972Y309782D01* +X870054Y309755D01* +X870134Y309724D01* +X870213Y309689D01* +X870214Y309689D02* +X870648Y309487D01* +X870649Y309486D02* +X870736Y309444D01* +X870821Y309398D01* +X870904Y309348D01* +X870984Y309295D01* +X871063Y309240D01* +X871140Y309180D01* +X871214Y309118D01* +X871285Y309053D01* +X871354Y308985D01* +X871420Y308915D01* +X871483Y308842D01* +X871543Y308766D01* +X871600Y308688D01* +X871654Y308608D01* +X871704Y308525D01* +X871752Y308441D01* +X871795Y308355D01* +X871836Y308267D01* +X871872Y308178D01* +X871905Y308087D01* +X871935Y307995D01* +X871960Y307902D01* +X871982Y307808D01* +X872000Y307713D01* +X872015Y307617D01* +X872025Y307521D01* +X872031Y307425D01* +X872034Y307328D01* +X872033Y307232D01* +X872027Y307135D01* +X872018Y307039D01* +X872005Y306943D01* +X871989Y306848D01* +X871968Y306754D01* +X871944Y306660D01* +X871916Y306568D01* +X871884Y306476D01* +X871848Y306387D01* +X871809Y306298D01* +X871767Y306211D01* +X871721Y306126D01* +X871671Y306043D01* +X871618Y305963D01* +X871563Y305884D01* +X871503Y305807D01* +X871441Y305733D01* +X871376Y305662D01* +X871308Y305593D01* +X871238Y305527D01* +X871165Y305464D01* +X871089Y305404D01* +X871011Y305347D01* +X870931Y305293D01* +X870848Y305243D01* +X870764Y305195D01* +X870678Y305152D01* +X870590Y305111D01* +X870501Y305075D01* +X870410Y305042D01* +X870318Y305012D01* +X870225Y304987D01* +X870131Y304965D01* +X870036Y304947D01* +X869940Y304932D01* +X869844Y304922D01* +X869748Y304916D01* +X869651Y304913D01* +X869554Y304914D01* +X869458Y304920D01* +X869362Y304929D01* +X869266Y304942D01* +X869171Y304958D01* +X869077Y304979D01* +X868983Y305003D01* +X868891Y305031D01* +X868799Y305063D01* +X868710Y305099D01* +X868621Y305138D01* +X866447Y306152D01* +X866447Y306153D02* +X866336Y306206D01* +X866227Y306264D01* +X866120Y306324D01* +X866015Y306389D01* +X865913Y306456D01* +X865812Y306527D01* +X865714Y306601D01* +X865618Y306678D01* +X865524Y306758D01* +X865434Y306841D01* +X865345Y306927D01* +X865260Y307015D01* +X865178Y307107D01* +X865098Y307201D01* +X865022Y307297D01* +X864949Y307396D01* +X864879Y307497D01* +X864812Y307601D01* +X864749Y307706D01* +X864689Y307813D01* +X864632Y307923D01* +X864579Y308034D01* +X864530Y308146D01* +X864484Y308261D01* +X864442Y308376D01* +X864404Y308493D01* +X864369Y308611D01* +X864338Y308730D01* +X864311Y308850D01* +X864288Y308971D01* +X864269Y309093D01* +X864254Y309215D01* +X864242Y309337D01* +X864235Y309460D01* +X864231Y309583D01* +X864232Y309706D01* +X864236Y309829D01* +X864244Y309952D01* +X864257Y310074D01* +X864273Y310196D01* +X864293Y310318D01* +X864317Y310438D01* +X864345Y310558D01* +X864376Y310677D01* +X864412Y310795D01* +X864451Y310911D01* +X864494Y311027D01* +X864540Y311141D01* +X864591Y311253D01* +D17* +X855980Y248920D03* +D14* +X848106Y242570D02* +X848106Y233934D01* +X848106Y242570D02* +X850505Y242570D01* +X850602Y242568D01* +X850698Y242562D01* +X850794Y242553D01* +X850890Y242539D01* +X850985Y242522D01* +X851079Y242500D01* +X851172Y242475D01* +X851265Y242447D01* +X851356Y242414D01* +X851445Y242378D01* +X851533Y242338D01* +X851620Y242295D01* +X851705Y242249D01* +X851787Y242199D01* +X851868Y242145D01* +X851946Y242089D01* +X852022Y242029D01* +X852096Y241967D01* +X852167Y241901D01* +X852235Y241833D01* +X852301Y241762D01* +X852363Y241688D01* +X852423Y241612D01* +X852479Y241534D01* +X852533Y241453D01* +X852583Y241370D01* +X852629Y241286D01* +X852672Y241199D01* +X852712Y241111D01* +X852748Y241022D01* +X852781Y240931D01* +X852809Y240838D01* +X852834Y240745D01* +X852856Y240651D01* +X852873Y240556D01* +X852887Y240460D01* +X852896Y240364D01* +X852902Y240268D01* +X852904Y240171D01* +X852902Y240074D01* +X852896Y239978D01* +X852887Y239882D01* +X852873Y239786D01* +X852856Y239691D01* +X852834Y239597D01* +X852809Y239504D01* +X852781Y239411D01* +X852748Y239320D01* +X852712Y239231D01* +X852672Y239143D01* +X852629Y239056D01* +X852583Y238972D01* +X852533Y238889D01* +X852479Y238808D01* +X852423Y238730D01* +X852363Y238654D01* +X852301Y238580D01* +X852235Y238509D01* +X852167Y238441D01* +X852096Y238375D01* +X852022Y238313D01* +X851946Y238253D01* +X851868Y238197D01* +X851787Y238143D01* +X851705Y238093D01* +X851620Y238047D01* +X851533Y238004D01* +X851445Y237964D01* +X851356Y237928D01* +X851265Y237895D01* +X851172Y237867D01* +X851079Y237842D01* +X850985Y237820D01* +X850890Y237803D01* +X850794Y237789D01* +X850698Y237780D01* +X850602Y237774D01* +X850505Y237772D01* +X848106Y237772D01* +X850985Y237772D02* +X852904Y233934D01* +X857165Y235853D02* +X859084Y242570D01* +X857165Y235853D02* +X861963Y235853D01* +X860524Y237772D02* +X860524Y233934D01* +X866309Y233934D02* +X869188Y233934D01* +X869274Y233936D01* +X869360Y233942D01* +X869446Y233951D01* +X869531Y233965D01* +X869615Y233982D01* +X869699Y234003D01* +X869781Y234028D01* +X869862Y234056D01* +X869942Y234088D01* +X870021Y234124D01* +X870097Y234163D01* +X870172Y234206D01* +X870245Y234251D01* +X870316Y234301D01* +X870384Y234353D01* +X870451Y234408D01* +X870514Y234466D01* +X870575Y234527D01* +X870633Y234590D01* +X870688Y234657D01* +X870741Y234725D01* +X870790Y234796D01* +X870835Y234869D01* +X870878Y234944D01* +X870917Y235020D01* +X870953Y235099D01* +X870985Y235179D01* +X871013Y235260D01* +X871038Y235343D01* +X871059Y235426D01* +X871076Y235510D01* +X871090Y235595D01* +X871099Y235681D01* +X871105Y235767D01* +X871107Y235853D01* +X871107Y236813D01* +X871105Y236899D01* +X871099Y236985D01* +X871090Y237071D01* +X871076Y237156D01* +X871059Y237240D01* +X871038Y237324D01* +X871013Y237406D01* +X870985Y237487D01* +X870953Y237567D01* +X870917Y237646D01* +X870878Y237722D01* +X870835Y237797D01* +X870790Y237870D01* +X870741Y237941D01* +X870688Y238009D01* +X870633Y238076D01* +X870575Y238139D01* +X870514Y238200D01* +X870451Y238258D01* +X870384Y238313D01* +X870316Y238366D01* +X870245Y238415D01* +X870172Y238460D01* +X870097Y238503D01* +X870021Y238542D01* +X869942Y238578D01* +X869862Y238610D01* +X869781Y238638D01* +X869699Y238663D01* +X869615Y238684D01* +X869531Y238701D01* +X869446Y238715D01* +X869360Y238724D01* +X869274Y238730D01* +X869188Y238732D01* +X866309Y238732D01* +X866309Y242570D01* +X871107Y242570D01* +D17* +X855980Y261620D03* +D14* +X847852Y268224D02* +X847852Y276860D01* +X850251Y276860D01* +X850348Y276858D01* +X850444Y276852D01* +X850540Y276843D01* +X850636Y276829D01* +X850731Y276812D01* +X850825Y276790D01* +X850918Y276765D01* +X851011Y276737D01* +X851102Y276704D01* +X851191Y276668D01* +X851279Y276628D01* +X851366Y276585D01* +X851451Y276539D01* +X851533Y276489D01* +X851614Y276435D01* +X851692Y276379D01* +X851768Y276319D01* +X851842Y276257D01* +X851913Y276191D01* +X851981Y276123D01* +X852047Y276052D01* +X852109Y275978D01* +X852169Y275902D01* +X852225Y275824D01* +X852279Y275743D01* +X852329Y275661D01* +X852375Y275576D01* +X852418Y275489D01* +X852458Y275401D01* +X852494Y275312D01* +X852527Y275221D01* +X852555Y275128D01* +X852580Y275035D01* +X852602Y274941D01* +X852619Y274846D01* +X852633Y274750D01* +X852642Y274654D01* +X852648Y274558D01* +X852650Y274461D01* +X852648Y274364D01* +X852642Y274268D01* +X852633Y274172D01* +X852619Y274076D01* +X852602Y273981D01* +X852580Y273887D01* +X852555Y273794D01* +X852527Y273701D01* +X852494Y273610D01* +X852458Y273521D01* +X852418Y273433D01* +X852375Y273346D01* +X852329Y273262D01* +X852279Y273179D01* +X852225Y273098D01* +X852169Y273020D01* +X852109Y272944D01* +X852047Y272870D01* +X851981Y272799D01* +X851913Y272731D01* +X851842Y272665D01* +X851768Y272603D01* +X851692Y272543D01* +X851614Y272487D01* +X851533Y272433D01* +X851451Y272383D01* +X851366Y272337D01* +X851279Y272294D01* +X851191Y272254D01* +X851102Y272218D01* +X851011Y272185D01* +X850918Y272157D01* +X850825Y272132D01* +X850731Y272110D01* +X850636Y272093D01* +X850540Y272079D01* +X850444Y272070D01* +X850348Y272064D01* +X850251Y272062D01* +X847852Y272062D01* +X850731Y272062D02* +X852650Y268224D01* +X856911Y270143D02* +X858830Y276860D01* +X856911Y270143D02* +X861709Y270143D01* +X860270Y272062D02* +X860270Y268224D01* +X866055Y273022D02* +X868934Y273022D01* +X869020Y273020D01* +X869106Y273014D01* +X869192Y273005D01* +X869277Y272991D01* +X869361Y272974D01* +X869445Y272953D01* +X869527Y272928D01* +X869608Y272900D01* +X869688Y272868D01* +X869767Y272832D01* +X869843Y272793D01* +X869918Y272750D01* +X869991Y272705D01* +X870062Y272656D01* +X870130Y272603D01* +X870197Y272548D01* +X870260Y272490D01* +X870321Y272429D01* +X870379Y272366D01* +X870434Y272299D01* +X870487Y272231D01* +X870536Y272160D01* +X870581Y272087D01* +X870624Y272012D01* +X870663Y271936D01* +X870699Y271857D01* +X870731Y271777D01* +X870759Y271696D01* +X870784Y271614D01* +X870805Y271530D01* +X870822Y271446D01* +X870836Y271361D01* +X870845Y271275D01* +X870851Y271189D01* +X870853Y271103D01* +X870853Y270623D01* +X870851Y270526D01* +X870845Y270430D01* +X870836Y270334D01* +X870822Y270238D01* +X870805Y270143D01* +X870783Y270049D01* +X870758Y269956D01* +X870730Y269863D01* +X870697Y269772D01* +X870661Y269683D01* +X870621Y269595D01* +X870578Y269508D01* +X870532Y269424D01* +X870482Y269341D01* +X870428Y269260D01* +X870372Y269182D01* +X870312Y269106D01* +X870250Y269032D01* +X870184Y268961D01* +X870116Y268893D01* +X870045Y268827D01* +X869971Y268765D01* +X869895Y268705D01* +X869817Y268649D01* +X869736Y268595D01* +X869654Y268545D01* +X869569Y268499D01* +X869482Y268456D01* +X869394Y268416D01* +X869305Y268380D01* +X869214Y268347D01* +X869121Y268319D01* +X869028Y268294D01* +X868934Y268272D01* +X868839Y268255D01* +X868743Y268241D01* +X868647Y268232D01* +X868551Y268226D01* +X868454Y268224D01* +X868357Y268226D01* +X868261Y268232D01* +X868165Y268241D01* +X868069Y268255D01* +X867974Y268272D01* +X867880Y268294D01* +X867787Y268319D01* +X867694Y268347D01* +X867603Y268380D01* +X867514Y268416D01* +X867426Y268456D01* +X867339Y268499D01* +X867255Y268545D01* +X867172Y268595D01* +X867091Y268649D01* +X867013Y268705D01* +X866937Y268765D01* +X866863Y268827D01* +X866792Y268893D01* +X866724Y268961D01* +X866658Y269032D01* +X866596Y269106D01* +X866536Y269182D01* +X866480Y269260D01* +X866426Y269341D01* +X866376Y269424D01* +X866330Y269508D01* +X866287Y269595D01* +X866247Y269683D01* +X866211Y269772D01* +X866178Y269863D01* +X866150Y269956D01* +X866125Y270049D01* +X866103Y270143D01* +X866086Y270238D01* +X866072Y270334D01* +X866063Y270430D01* +X866057Y270526D01* +X866055Y270623D01* +X866055Y273022D01* +X866056Y273022D02* +X866058Y273145D01* +X866064Y273268D01* +X866074Y273391D01* +X866088Y273513D01* +X866105Y273635D01* +X866127Y273756D01* +X866152Y273876D01* +X866182Y273996D01* +X866215Y274114D01* +X866252Y274231D01* +X866292Y274348D01* +X866336Y274462D01* +X866384Y274576D01* +X866436Y274687D01* +X866491Y274797D01* +X866550Y274905D01* +X866612Y275012D01* +X866677Y275116D01* +X866746Y275218D01* +X866818Y275318D01* +X866893Y275415D01* +X866972Y275510D01* +X867053Y275602D01* +X867137Y275692D01* +X867224Y275779D01* +X867314Y275863D01* +X867406Y275944D01* +X867501Y276023D01* +X867598Y276098D01* +X867698Y276170D01* +X867800Y276239D01* +X867904Y276304D01* +X868011Y276366D01* +X868119Y276425D01* +X868229Y276480D01* +X868340Y276532D01* +X868454Y276579D01* +X868568Y276624D01* +X868685Y276664D01* +X868802Y276701D01* +X868920Y276734D01* +X869040Y276764D01* +X869160Y276789D01* +X869281Y276811D01* +X869403Y276828D01* +X869525Y276842D01* +X869648Y276852D01* +X869771Y276858D01* +X869894Y276860D01* +D30* +X730809Y168656D03* +D31* +X730453Y169367D03* +D32* +X730453Y170078D03* +D33* +X730809Y170790D03* +D34* +X730453Y171501D03* +D35* +X730453Y172212D03* +D36* +X730453Y172923D03* +D37* +X730453Y173634D03* +X730453Y174346D03* +D38* +X730453Y175057D03* +D37* +X730453Y175768D03* +D39* +X718363Y176479D03* +D38* +X730453Y176479D03* +D40* +X718363Y177190D03* +D37* +X730453Y177190D03* +D41* +X742188Y177190D03* +D42* +X725830Y177902D03* +D43* +X742188Y177902D03* +D44* +X725119Y178613D03* +D45* +X742188Y178613D03* +D46* +X730098Y179324D03* +D47* +X730098Y180035D03* +D48* +X730453Y180746D03* +X730453Y181458D03* +D49* +X730098Y182169D03* +D50* +X730098Y182880D03* +D51* +X730453Y183591D03* +D52* +X706984Y184302D03* +D53* +X730453Y184302D03* +D40* +X706984Y185014D03* +D48* +X730453Y185014D03* +D54* +X753923Y185014D03* +D55* +X706984Y185725D03* +D56* +X730453Y185725D03* +D31* +X753923Y185725D03* +D57* +X730098Y186436D03* +D58* +X730098Y187147D03* +D59* +X730098Y187858D03* +D60* +X730453Y188570D03* +D61* +X730098Y189281D03* +D62* +X730098Y189992D03* +D63* +X730453Y190703D03* +D64* +X730453Y191414D03* +X730453Y192126D03* +D65* +X695604Y192837D03* +D63* +X730453Y192837D03* +D66* +X765302Y192837D03* +D67* +X695249Y193548D03* +D60* +X730453Y193548D03* +D40* +X765302Y193548D03* +D49* +X709473Y194259D03* +D68* +X746455Y194259D03* +D69* +X765302Y194259D03* +D70* +X707339Y194970D03* +D71* +X753212Y194970D03* +D72* +X705917Y195682D03* +D73* +X754634Y195682D03* +D74* +X704850Y196393D03* +X756056Y196393D03* +D75* +X703783Y197104D03* +D76* +X756768Y197104D03* +D77* +X703428Y197815D03* +X757479Y197815D03* +D78* +X702716Y198526D03* +X758190Y198526D03* +D79* +X702361Y199238D03* +D80* +X758546Y199238D03* +D81* +X701650Y199949D03* +X759257Y199949D03* +D82* +X683870Y200660D03* +D83* +X701294Y200660D03* +D54* +X730453Y200660D03* +D83* +X759612Y200660D03* +D84* +X683870Y201371D03* +D85* +X700938Y201371D03* +D55* +X730453Y201371D03* +D85* +X759968Y201371D03* +D65* +X776681Y201371D03* +D86* +X695960Y202082D03* +D87* +X730453Y202082D03* +D88* +X759968Y202082D03* +D67* +X777037Y202082D03* +D72* +X695249Y202794D03* +D37* +X730453Y202794D03* +D73* +X765302Y202794D03* +D89* +X694893Y203505D03* +D90* +X730809Y203505D03* +D91* +X765658Y203505D03* +D92* +X694182Y204216D03* +D93* +X730453Y204216D03* +D72* +X766369Y204216D03* +D91* +X693826Y204927D03* +D31* +X724052Y204927D03* +D94* +X730809Y204927D03* +D31* +X737565Y204927D03* +D95* +X766724Y204927D03* +D72* +X693826Y205638D03* +D96* +X722630Y205638D03* +D97* +X730809Y205638D03* +D98* +X738988Y205638D03* +D73* +X767436Y205638D03* +D99* +X693471Y206350D03* +D100* +X721208Y206350D03* +D97* +X730809Y206350D03* +D100* +X740410Y206350D03* +D73* +X767436Y206350D03* +D95* +X692760Y207061D03* +D94* +X720141Y207061D03* +X730809Y207061D03* +X741477Y207061D03* +D101* +X767791Y207061D03* +D73* +X692760Y207772D03* +D52* +X719074Y207772D03* +D97* +X730809Y207772D03* +D52* +X742544Y207772D03* +D102* +X767791Y207772D03* +D74* +X692760Y208483D03* +D103* +X718363Y208483D03* +D94* +X730809Y208483D03* +D103* +X743255Y208483D03* +D104* +X768147Y208483D03* +D105* +X692760Y209194D03* +D106* +X717652Y209194D03* +D97* +X730809Y209194D03* +D107* +X743966Y209194D03* +D108* +X768147Y209194D03* +D82* +X673202Y209906D03* +D109* +X692404Y209906D03* +D106* +X716940Y209906D03* +D97* +X730809Y209906D03* +D106* +X744677Y209906D03* +D75* +X768502Y209906D03* +D84* +X673202Y210617D03* +D77* +X692760Y210617D03* +D94* +X730809Y210617D03* +D77* +X768147Y210617D03* +D65* +X787349Y210617D03* +D110* +X688137Y211328D03* +D97* +X730809Y211328D03* +D76* +X768147Y211328D03* +D67* +X787705Y211328D03* +D111* +X687426Y212039D03* +D112* +X730809Y212039D03* +D51* +X773125Y212039D03* +D113* +X687070Y212750D03* +D114* +X730809Y212750D03* +D110* +X773481Y212750D03* +D115* +X686714Y213462D03* +D67* +X730809Y213462D03* +D113* +X773836Y213462D03* +D116* +X686714Y214173D03* +D55* +X730453Y214173D03* +D117* +X773836Y214173D03* +D118* +X686359Y214884D03* +D119* +X730809Y214884D03* +D113* +X774548Y214884D03* +D116* +X686003Y215595D03* +D120* +X730453Y215595D03* +D117* +X774548Y215595D03* +D115* +X686003Y216306D03* +D87* +X730453Y216306D03* +D113* +X774548Y216306D03* +D115* +X686003Y217018D03* +D82* +X727253Y217018D03* +D121* +X733654Y217018D03* +D113* +X774548Y217018D03* +D122* +X686359Y217729D03* +D94* +X725830Y217729D03* +X735076Y217729D03* +D117* +X774548Y217729D03* +D118* +X686359Y218440D03* +D123* +X725475Y218440D03* +X736143Y218440D03* +D113* +X774548Y218440D03* +D103* +X662889Y219151D03* +D122* +X686359Y219151D03* +D66* +X724764Y219151D03* +X736854Y219151D03* +D117* +X774548Y219151D03* +D40* +X662889Y219862D03* +D110* +X686714Y219862D03* +D52* +X724052Y219862D03* +D123* +X737565Y219862D03* +D124* +X774548Y219862D03* +D97* +X797662Y219862D03* +D125* +X682092Y220574D03* +D123* +X723341Y220574D03* +X737565Y220574D03* +D124* +X774548Y220574D03* +D40* +X798017Y220574D03* +D126* +X681736Y221285D03* +D66* +X722630Y221285D03* +X738276Y221285D03* +D127* +X778815Y221285D03* +D128* +X681380Y221996D03* +D97* +X722274Y221996D03* +D52* +X738988Y221996D03* +D129* +X779170Y221996D03* +D130* +X680669Y222707D03* +D94* +X721563Y222707D03* +X739343Y222707D03* +D131* +X779882Y222707D03* +D128* +X680669Y223418D03* +D52* +X721208Y223418D03* +D97* +X740054Y223418D03* +D128* +X780237Y223418D03* +D132* +X680314Y224130D03* +D52* +X720496Y224130D03* +D97* +X740766Y224130D03* +D128* +X780237Y224130D03* +D133* +X679958Y224841D03* +D94* +X719430Y224841D03* +X741477Y224841D03* +D131* +X780593Y224841D03* +D134* +X679958Y225552D03* +D82* +X718718Y225552D03* +X742899Y225552D03* +D128* +X780948Y225552D03* +D133* +X679958Y226263D03* +D112* +X718007Y226263D03* +D39* +X743255Y226263D03* +D130* +X780948Y226263D03* +D129* +X679602Y226974D03* +D97* +X717296Y226974D03* +X743610Y226974D03* +D135* +X781304Y226974D03* +D129* +X679602Y227686D03* +D136* +X717296Y227686D03* +D52* +X743966Y227686D03* +D135* +X781304Y227686D03* +D137* +X679958Y228397D03* +X780948Y228397D03* +D98* +X652221Y229108D03* +D125* +X679958Y229108D03* +D138* +X781304Y229108D03* +D139* +X652577Y229819D03* +D140* +X679958Y229819D03* +D141* +X781304Y229819D03* +D142* +X807974Y229819D03* +D143* +X674980Y230530D03* +D144* +X785216Y230530D03* +D143* +X674980Y231242D03* +D145* +X785927Y231242D03* +D146* +X674268Y231953D03* +D147* +X786282Y231953D03* +D148* +X673913Y232664D03* +D149* +X786638Y232664D03* +D150* +X673913Y233375D03* +D151* +X786638Y233375D03* +D143* +X673557Y234086D03* +X787349Y234086D03* +D57* +X673202Y234798D03* +D143* +X787349Y234798D03* +D152* +X673202Y235509D03* +D146* +X787349Y235509D03* +D149* +X672846Y236220D03* +D153* +X787705Y236220D03* +D147* +X673202Y236931D03* +X787705Y236931D03* +D153* +X673202Y237642D03* +X787705Y237642D03* +D144* +X672846Y238354D03* +X788060Y238354D03* +D66* +X642976Y239065D03* +D154* +X673202Y239065D03* +X787705Y239065D03* +D62* +X669646Y239776D03* +D155* +X787705Y239776D03* +D106* +X817220Y239776D03* +D156* +X669290Y240487D03* +D157* +X787705Y240487D03* +D158* +X817575Y240487D03* +D64* +X668579Y241198D03* +D159* +X791616Y241198D03* +D160* +X668223Y241910D03* +D62* +X791972Y241910D03* +D161* +X667868Y242621D03* +D156* +X792328Y242621D03* +D162* +X667512Y243332D03* +D64* +X793039Y243332D03* +D163* +X667512Y244043D03* +D63* +X793039Y244043D03* +D164* +X667156Y244754D03* +D160* +X793394Y244754D03* +X666801Y245466D03* +D165* +X793750Y245466D03* +D166* +X666801Y246177D03* +D156* +X793750Y246177D03* +D160* +X666801Y246888D03* +D165* +X793750Y246888D03* +D63* +X666445Y247599D03* +D61* +X794106Y247599D03* +D62* +X666801Y248310D03* +X794106Y248310D03* +X666801Y249022D03* +X794106Y249022D03* +D167* +X667156Y249733D03* +D168* +X794106Y249733D03* +D30* +X634797Y250444D03* +D59* +X666801Y250444D03* +X794106Y250444D03* +D169* +X663956Y251155D03* +D170* +X793750Y251155D03* +D171* +X825398Y251155D03* +D172* +X663245Y251866D03* +D173* +X796950Y251866D03* +D172* +X662534Y252578D03* +D174* +X797662Y252578D03* +D175* +X662534Y253289D03* +D176* +X798017Y253289D03* +D177* +X662178Y254000D03* +D172* +X798373Y254000D03* +D178* +X661467Y254711D03* +D176* +X798728Y254711D03* +D179* +X661467Y255422D03* +D180* +X799084Y255422D03* +D179* +X661467Y256134D03* +D180* +X799084Y256134D03* +D175* +X661111Y256845D03* +X799795Y256845D03* +D172* +X661111Y257556D03* +X799795Y257556D03* +D175* +X661111Y258267D03* +X799795Y258267D03* +D181* +X660756Y258978D03* +X800151Y258978D03* +X660756Y259690D03* +D182* +X799795Y259690D03* +D183* +X661111Y260401D03* +X799795Y260401D03* +D182* +X661111Y261112D03* +D184* +X800151Y261112D03* +D185* +X626262Y261823D03* +D186* +X661111Y261823D03* +X799795Y261823D03* +D187* +X657911Y262534D03* +D188* +X799795Y262534D03* +D189* +X657555Y263246D03* +D190* +X802640Y263246D03* +D191* +X656844Y263957D03* +D192* +X803351Y263957D03* +D193* +X656488Y264668D03* +D187* +X803707Y264668D03* +D194* +X656133Y265379D03* +D191* +X804062Y265379D03* +D193* +X655777Y266090D03* +D195* +X804418Y266090D03* +D196* +X655422Y266802D03* +D197* +X804774Y266802D03* +D198* +X655422Y267513D03* +D191* +X804774Y267513D03* +D193* +X655066Y268224D03* +D189* +X805485Y268224D03* +D199* +X655066Y268935D03* +D200* +X805485Y268935D03* +D193* +X655066Y269646D03* +D189* +X805485Y269646D03* +D193* +X655066Y270358D03* +D187* +X805840Y270358D03* +D201* +X655066Y271069D03* +D202* +X805840Y271069D03* +D195* +X655066Y271780D03* +D203* +X805485Y271780D03* +D201* +X655066Y272491D03* +D204* +X805840Y272491D03* +D205* +X655066Y273202D03* +X805840Y273202D03* +D190* +X655422Y273914D03* +X805485Y273914D03* +D178* +X655777Y274625D03* +X805129Y274625D03* +D203* +X653999Y275336D03* +D181* +X805129Y275336D03* +D191* +X653288Y276047D03* +D206* +X806196Y276047D03* +D193* +X652932Y276758D03* +D203* +X806907Y276758D03* +D193* +X652221Y277470D03* +D195* +X807974Y277470D03* +D198* +X651866Y278181D03* +D191* +X808330Y278181D03* +D207* +X651510Y278892D03* +D193* +X808685Y278892D03* +D208* +X651510Y279603D03* +D194* +X809041Y279603D03* +D209* +X650799Y280314D03* +D193* +X809396Y280314D03* +D209* +X650799Y281026D03* +D193* +X809396Y281026D03* +D210* +X650799Y281737D03* +D198* +X809752Y281737D03* +D209* +X650799Y282448D03* +D196* +X809752Y282448D03* +D210* +X650799Y283159D03* +D198* +X809752Y283159D03* +D211* +X650443Y283870D03* +D193* +X810108Y283870D03* +X650799Y284582D03* +X810108Y284582D03* +D199* +X650799Y285293D03* +D191* +X809752Y285293D03* +D197* +X651154Y286004D03* +X809752Y286004D03* +D201* +X651510Y286715D03* +D202* +X809396Y286715D03* +D205* +X651510Y287426D03* +D212* +X809752Y287426D03* +D190* +X651866Y288138D03* +D205* +X809396Y288138D03* +D199* +X650088Y288849D03* +D178* +X808685Y288849D03* +D209* +X649376Y289560D03* +D212* +X809752Y289560D03* +D213* +X649021Y290271D03* +D200* +X810463Y290271D03* +D214* +X648665Y290982D03* +D196* +X811174Y290982D03* +D215* +X648310Y291694D03* +D196* +X811886Y291694D03* +D216* +X647954Y292405D03* +D210* +X812241Y292405D03* +D217* +X647954Y293116D03* +D209* +X812241Y293116D03* +D218* +X647598Y293827D03* +D213* +X812597Y293827D03* +D219* +X647598Y294538D03* +D215* +X812597Y294538D03* +D219* +X647598Y295250D03* +D215* +X812597Y295250D03* +D218* +X647598Y295961D03* +D213* +X812597Y295961D03* +D219* +X647598Y296672D03* +D215* +X812597Y296672D03* +D213* +X647598Y297383D03* +D220* +X696316Y297383D03* +X699160Y297383D03* +D221* +X761746Y297383D03* +D185* +X764946Y297383D03* +D210* +X812952Y297383D03* +D215* +X647598Y298094D03* +D98* +X697027Y298094D03* +X763880Y298094D03* +D209* +X812952Y298094D03* +D215* +X647598Y298806D03* +D114* +X696671Y298806D03* +X764235Y298806D03* +D209* +X812952Y298806D03* +D208* +X647954Y299517D03* +D139* +X696671Y299517D03* +D31* +X764591Y299517D03* +D194* +X812597Y299517D03* +D196* +X648310Y300228D03* +D32* +X696316Y300228D03* +D43* +X764946Y300228D03* +D211* +X812597Y300228D03* +D199* +X648665Y300939D03* +D55* +X696316Y300939D03* +D84* +X764946Y300939D03* +D199* +X812241Y300939D03* +D187* +X649376Y301650D03* +D32* +X695604Y301650D03* +D222* +X765302Y301650D03* +D197* +X811886Y301650D03* +D205* +X650088Y302362D03* +D32* +X695604Y302362D03* +D222* +X765302Y302362D03* +D203* +X811174Y302362D03* +D202* +X649376Y303073D03* +D55* +X695604Y303073D03* +D223* +X765658Y303073D03* +D206* +X810463Y303073D03* +D193* +X648665Y303784D03* +D32* +X694893Y303784D03* +X766013Y303784D03* +D224* +X810819Y303784D03* +D198* +X648310Y304495D03* +D55* +X694893Y304495D03* +D225* +X730809Y304495D03* +D55* +X766013Y304495D03* +D201* +X811530Y304495D03* +D207* +X647954Y305206D03* +D32* +X694893Y305206D03* +D48* +X730453Y305206D03* +D67* +X766369Y305206D03* +D197* +X811886Y305206D03* +D215* +X647598Y305918D03* +D43* +X694538Y305918D03* +D53* +X730453Y305918D03* +D40* +X766724Y305918D03* +D193* +X812241Y305918D03* +D210* +X647243Y306629D03* +D31* +X694182Y306629D03* +D122* +X730453Y306629D03* +D31* +X766724Y306629D03* +D199* +X812952Y306629D03* +D215* +X646887Y307340D03* +D121* +X693826Y307340D03* +D226* +X730098Y307340D03* +D121* +X767080Y307340D03* +D193* +X812952Y307340D03* +D213* +X646887Y308051D03* +D112* +X693826Y308051D03* +D227* +X730098Y308051D03* +D228* +X767080Y308051D03* +D198* +X813308Y308051D03* +D215* +X646887Y308762D03* +D97* +X693826Y308762D03* +D229* +X729742Y308762D03* +D100* +X767436Y308762D03* +D196* +X813308Y308762D03* +D215* +X646887Y309474D03* +D125* +X729742Y309474D03* +D196* +X813308Y309474D03* +D230* +X647243Y310185D03* +D231* +X730098Y310185D03* +D198* +X813308Y310185D03* +D214* +X647243Y310896D03* +D232* +X729742Y310896D03* +D196* +X813308Y310896D03* +D230* +X647243Y311607D03* +D233* +X729742Y311607D03* +D210* +X812952Y311607D03* +D215* +X647598Y312318D03* +D153* +X729386Y312318D03* +D209* +X812952Y312318D03* +D215* +X647598Y313030D03* +D57* +X729386Y313030D03* +D209* +X812952Y313030D03* +D208* +X647954Y313741D03* +D168* +X729386Y313741D03* +D194* +X812597Y313741D03* +D196* +X648310Y314452D03* +D64* +X729031Y314452D03* +D211* +X812597Y314452D03* +D199* +X648665Y315163D03* +D161* +X729031Y315163D03* +D199* +X812241Y315163D03* +D197* +X649732Y315874D03* +D181* +X729031Y315874D03* +D197* +X811886Y315874D03* +D190* +X651154Y316586D03* +X728675Y316586D03* +D203* +X811174Y316586D03* +D192* +X650443Y317297D03* +D200* +X728675Y317297D03* +D206* +X809752Y317297D03* +D189* +X650443Y318008D03* +D209* +X728320Y318008D03* +D177* +X809396Y318008D03* +D194* +X650443Y318719D03* +D234* +X727964Y318719D03* +D204* +X809396Y318719D03* +D235* +X690982Y319430D03* +D212* +X809752Y319430D03* +D128* +X637997Y320142D03* +D236* +X720852Y320142D03* +D237* +X781660Y320142D03* +D238* +X822554Y320142D03* +D137* +X637286Y320853D03* +D239* +X730809Y320853D03* +D240* +X823620Y320853D03* +D138* +X636219Y321564D03* +D241* +X730809Y321564D03* +D242* +X824332Y321564D03* +D243* +X635508Y322275D03* +D239* +X730809Y322275D03* +D244* +X825043Y322275D03* +D245* +X634797Y322986D03* +D241* +X730809Y322986D03* +D115* +X826110Y322986D03* +D226* +X634086Y323698D03* +D241* +X730809Y323698D03* +D110* +X826821Y323698D03* +D116* +X633374Y324409D03* +D239* +X730809Y324409D03* +D246* +X827532Y324409D03* +D53* +X633019Y325120D03* +D241* +X730809Y325120D03* +D247* +X827888Y325120D03* +D56* +X632308Y325831D03* +D239* +X730809Y325831D03* +D89* +X828599Y325831D03* +D247* +X631596Y326542D03* +D248* +X731164Y326542D03* +D73* +X829310Y326542D03* +D72* +X631241Y327254D03* +D248* +X731164Y327254D03* +D75* +X829666Y327254D03* +D104* +X630885Y327965D03* +D249* +X731164Y327965D03* +D250* +X830377Y327965D03* +D251* +X630530Y328676D03* +D248* +X731164Y328676D03* +D252* +X830732Y328676D03* +D81* +X630530Y329387D03* +D249* +X731164Y329387D03* +D85* +X831088Y329387D03* +D253* +X631952Y330098D03* +D248* +X731164Y330098D03* +D254* +X831088Y330098D03* +D255* +X630885Y330810D03* +D248* +X731164Y330810D03* +D256* +X829310Y330810D03* +D30* +X838911Y330810D03* +D257* +X629818Y331521D03* +D249* +X731164Y331521D03* +D258* +X830377Y331521D03* +D259* +X629107Y332232D03* +D248* +X731164Y332232D03* +D37* +X831444Y332232D03* +D260* +X628040Y332943D03* +D249* +X731164Y332943D03* +D261* +X831799Y332943D03* +D262* +X627685Y333654D03* +D248* +X731164Y333654D03* +D263* +X832510Y333654D03* +D262* +X627685Y334366D03* +D248* +X731164Y334366D03* +D263* +X832510Y334366D03* +D90* +X627685Y335077D03* +D249* +X731164Y335077D03* +D38* +X832866Y335077D03* +D264* +X627329Y335788D03* +D248* +X731164Y335788D03* +D37* +X832866Y335788D03* +D90* +X627685Y336499D03* +D265* +X730809Y336499D03* +D38* +X832866Y336499D03* +D262* +X627685Y337210D03* +D266* +X730809Y337210D03* +D37* +X832866Y337210D03* +D267* +X628040Y337922D03* +D266* +X730809Y337922D03* +D37* +X832155Y337922D03* +D268* +X729742Y338633D03* +D269* +X729742Y339344D03* +D270* +X729742Y340055D03* +D271* +X729742Y340766D03* +D272* +X729742Y341478D03* +D39* +X625907Y342189D03* +D273* +X732942Y342189D03* +D274* +X729031Y342900D03* +D82* +X832510Y342900D03* +D275* +X729386Y343611D03* +D276* +X729386Y344322D03* +D277* +X729031Y345034D03* +D278* +X729386Y345745D03* +D279* +X729386Y346456D03* +D278* +X729386Y347167D03* +D279* +X729386Y347878D03* +D280* +X729742Y348590D03* +D275* +X729386Y349301D03* +D276* +X729386Y350012D03* +D281* +X729386Y350723D03* +D282* +X729742Y351434D03* +D32* +X635152Y352146D03* +D283* +X684581Y352146D03* +D98* +X734009Y352146D03* +D284* +X783438Y352146D03* +D65* +X635152Y352857D03* +D285* +X679958Y352857D03* +D31* +X724764Y352857D03* +D286* +X778459Y352857D03* +D31* +X823620Y352857D03* +D287* +X679958Y353568D03* +D100* +X724764Y353568D03* +D288* +X778459Y353568D03* +D98* +X823620Y353568D03* +D289* +X679958Y354279D03* +D290* +X778815Y354279D03* +D287* +X679958Y354990D03* +D291* +X778815Y354990D03* +D287* +X679958Y355702D03* +D291* +X778815Y355702D03* +D289* +X679958Y356413D03* +D290* +X778815Y356413D03* +D292* +X679958Y357124D03* +D293* +X778815Y357124D03* +D285* +X679958Y357835D03* +D294* +X778815Y357835D03* +D295* +X680314Y358546D03* +X779170Y358546D03* +D296* +X646532Y359258D03* +D177* +X685648Y359258D03* +D296* +X745388Y359258D03* +D177* +X784504Y359258D03* +D55* +X646532Y359969D03* +D151* +X679958Y359969D03* +D297* +X713384Y359969D03* +D139* +X745033Y359969D03* +D146* +X778815Y359969D03* +D120* +X812241Y359969D03* +D40* +X646532Y360680D03* +D149* +X679958Y360680D03* +D32* +X713384Y360680D03* +D98* +X745388Y360680D03* +D143* +X778815Y360680D03* +D32* +X812241Y360680D03* +D298* +X646532Y361391D03* +D151* +X679958Y361391D03* +D65* +X713384Y361391D03* +D146* +X778815Y361391D03* +D299* +X811886Y361391D03* +D149* +X679958Y362102D03* +D143* +X778815Y362102D03* +D106* +X812241Y362102D03* +D153* +X679602Y362814D03* +X778459Y362814D03* +D300* +X679958Y363525D03* +D301* +X757834Y363525D03* +D244* +X785216Y363525D03* +D302* +X658978Y364236D03* +D80* +X679602Y364236D03* +D35* +X700583Y364236D03* +D302* +X757834Y364236D03* +D303* +X785216Y364236D03* +D34* +X659333Y364947D03* +D304* +X679602Y364947D03* +D34* +X700583Y364947D03* +D305* +X757834Y364947D03* +D304* +X779170Y364947D03* +D306* +X799440Y364947D03* +D307* +X659333Y365658D03* +D80* +X679602Y365658D03* +D307* +X700583Y365658D03* +D119* +X757834Y365658D03* +D35* +X771703Y365658D03* +D308* +X785571Y365658D03* +D33* +X799084Y365658D03* +D32* +X659333Y366370D03* +D309* +X672846Y366370D03* +D302* +X686714Y366370D03* +D32* +X700583Y366370D03* +D40* +X758190Y366370D03* +D302* +X772058Y366370D03* +D308* +X785571Y366370D03* +D32* +X799440Y366370D03* +D65* +X659333Y367081D03* +D310* +X672846Y367081D03* +D301* +X686714Y367081D03* +D65* +X700583Y367081D03* +D94* +X757834Y367081D03* +D34* +X771703Y367081D03* +D36* +X785927Y367081D03* +D31* +X799440Y367081D03* +D311* +X672846Y367792D03* +D33* +X686714Y367792D03* +D307* +X771703Y367792D03* +D302* +X785571Y367792D03* +D100* +X799440Y367792D03* +D305* +X672490Y368503D03* +D223* +X686714Y368503D03* +D84* +X772058Y368503D03* +D305* +X785571Y368503D03* +D119* +X672490Y369214D03* +D121* +X686714Y369214D03* +D82* +X772058Y369214D03* +D119* +X785571Y369214D03* +D40* +X672846Y369926D03* +D97* +X686714Y369926D03* +D40* +X785927Y369926D03* +D298* +X672846Y370637D03* +D39* +X785927Y370637D03* +D18* +X502920Y104140D03* +D14* +X497191Y94488D02* +X497191Y85852D01* +X497191Y94488D02* +X499590Y94488D01* +X499687Y94486D01* +X499783Y94480D01* +X499879Y94471D01* +X499975Y94457D01* +X500070Y94440D01* +X500164Y94418D01* +X500257Y94393D01* +X500350Y94365D01* +X500441Y94332D01* +X500530Y94296D01* +X500618Y94256D01* +X500705Y94213D01* +X500790Y94167D01* +X500872Y94117D01* +X500953Y94063D01* +X501031Y94007D01* +X501107Y93947D01* +X501181Y93885D01* +X501252Y93819D01* +X501320Y93751D01* +X501386Y93680D01* +X501448Y93606D01* +X501508Y93530D01* +X501564Y93452D01* +X501618Y93371D01* +X501668Y93288D01* +X501714Y93204D01* +X501757Y93117D01* +X501797Y93029D01* +X501833Y92940D01* +X501866Y92849D01* +X501894Y92756D01* +X501919Y92663D01* +X501941Y92569D01* +X501958Y92474D01* +X501972Y92378D01* +X501981Y92282D01* +X501987Y92186D01* +X501989Y92089D01* +X501987Y91992D01* +X501981Y91896D01* +X501972Y91800D01* +X501958Y91704D01* +X501941Y91609D01* +X501919Y91515D01* +X501894Y91422D01* +X501866Y91329D01* +X501833Y91238D01* +X501797Y91149D01* +X501757Y91061D01* +X501714Y90974D01* +X501668Y90889D01* +X501618Y90807D01* +X501564Y90726D01* +X501508Y90648D01* +X501448Y90572D01* +X501386Y90498D01* +X501320Y90427D01* +X501252Y90359D01* +X501181Y90293D01* +X501107Y90231D01* +X501031Y90171D01* +X500953Y90115D01* +X500872Y90061D01* +X500790Y90011D01* +X500705Y89965D01* +X500618Y89922D01* +X500530Y89882D01* +X500441Y89846D01* +X500350Y89813D01* +X500257Y89785D01* +X500164Y89760D01* +X500070Y89738D01* +X499975Y89721D01* +X499879Y89707D01* +X499783Y89698D01* +X499687Y89692D01* +X499590Y89690D01* +X497191Y89690D01* +X500070Y89690D02* +X501989Y85852D01* +X506250Y87771D02* +X508169Y94488D01* +X506250Y87771D02* +X511048Y87771D01* +X509609Y89690D02* +X509609Y85852D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_soldermask_bottom.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_soldermask_bottom.gbr new file mode 100644 index 0000000000..52884f35e8 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_soldermask_bottom.gbr @@ -0,0 +1,82 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSoldermask Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,5.283200*% +%ADD11C,3.505200*% +%ADD12C,1.219200*% +%ADD13C,1.981200*% +%ADD14C,1.903200*% +%ADD15C,2.743200*% +%ADD16C,3.503200*% +%ADD17R,4.013200X4.013200*% +%ADD18R,1.981200X1.981200*% +%ADD19C,1.159600*% + + +D10* +X50800Y152400D03* +X1320800Y152400D03* +D11* +X76200Y88900D03* +X76200Y31750D03* +X1295400Y31750D03* +X1295400Y88900D03* +D12* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D13* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D14* +X292090Y237498D03* +D15* +X259090Y271798D03* +X259090Y114298D03* +D16* +X228590Y135898D03* +X228590Y250198D03* +D13* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D17* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D18* +X800100Y20320D03* +D13* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D18* +X736600Y76200D03* +D13* +X711200Y76200D03* +D19* +X490605Y121876D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_soldermask_top.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_soldermask_top.gbr new file mode 100644 index 0000000000..cc6e9767b9 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_soldermask_top.gbr @@ -0,0 +1,3082 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSoldermask Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,5.283200*% +%ADD11C,3.505200*% +%ADD12C,0.399194*% +%ADD13C,0.553472*% +%ADD14C,0.446600*% +%ADD15C,0.617406*% +%ADD16C,0.525272*% +%ADD17C,0.689375*% +%ADD18C,0.728447*% +%ADD19C,0.518503*% +%ADD20C,1.219200*% +%ADD21C,0.404144*% +%ADD22C,0.897791*% +%ADD23C,1.156759*% +%ADD24C,0.335972*% +%ADD25C,0.725172*% +%ADD26C,0.296447*% +%ADD27C,0.702831*% +%ADD28C,1.981200*% +%ADD29C,1.903200*% +%ADD30C,2.743200*% +%ADD31C,3.503200*% +%ADD32R,4.013200X4.013200*% +%ADD33C,0.430031*% +%ADD34R,1.981200X1.981200*% +%ADD35C,0.329691*% +%ADD36C,1.000000*% +%ADD37C,1.159600*% + + +D10* +X50800Y152400D03* +X1320800Y152400D03* +D11* +X76200Y88900D03* +X76200Y31750D03* +X1295400Y31750D03* +X1295400Y88900D03* +D12* +X295160Y305740D02* +X295160Y309280D01* +X299200Y309280D01* +X299200Y305740D01* +X295160Y305740D01* +X295160Y298780D02* +X295160Y295240D01* +X295160Y298780D02* +X299200Y298780D01* +X299200Y295240D01* +X295160Y295240D01* +X345960Y194980D02* +X345960Y191440D01* +X345960Y194980D02* +X350000Y194980D01* +X350000Y191440D01* +X345960Y191440D01* +X345960Y184480D02* +X345960Y180940D01* +X345960Y184480D02* +X350000Y184480D01* +X350000Y180940D01* +X345960Y180940D01* +X499860Y246980D02* +X499860Y250520D01* +X499860Y246980D02* +X495820Y246980D01* +X495820Y250520D01* +X499860Y250520D01* +X499860Y257480D02* +X499860Y261020D01* +X499860Y257480D02* +X495820Y257480D01* +X495820Y261020D01* +X499860Y261020D01* +D13* +X579829Y66869D02* +X579829Y59371D01* +X573331Y59371D01* +X573331Y66869D01* +X579829Y66869D01* +X579829Y64629D02* +X573331Y64629D01* +X579829Y75371D02* +X579829Y82869D01* +X579829Y75371D02* +X573331Y75371D01* +X573331Y82869D01* +X579829Y82869D01* +X579829Y80629D02* +X573331Y80629D01* +X352351Y70169D02* +X352351Y62671D01* +X352351Y70169D02* +X358849Y70169D01* +X358849Y62671D01* +X352351Y62671D01* +X352351Y67929D02* +X358849Y67929D01* +X352351Y54169D02* +X352351Y46671D01* +X352351Y54169D02* +X358849Y54169D01* +X358849Y46671D01* +X352351Y46671D01* +X352351Y51929D02* +X358849Y51929D01* +D12* +X691400Y163500D02* +X691400Y167040D01* +X695440Y167040D01* +X695440Y163500D01* +X691400Y163500D01* +X691400Y156540D02* +X691400Y153000D01* +X691400Y156540D02* +X695440Y156540D01* +X695440Y153000D01* +X691400Y153000D01* +X995160Y272380D02* +X995160Y275920D01* +X995160Y272380D02* +X991120Y272380D01* +X991120Y275920D01* +X995160Y275920D01* +X995160Y282880D02* +X995160Y286420D01* +X995160Y282880D02* +X991120Y282880D01* +X991120Y286420D01* +X995160Y286420D01* +X865620Y156540D02* +X865620Y153000D01* +X861580Y153000D01* +X861580Y156540D01* +X865620Y156540D01* +X865620Y163500D02* +X865620Y167040D01* +X865620Y163500D02* +X861580Y163500D01* +X861580Y167040D01* +X865620Y167040D01* +D13* +X498511Y296471D02* +X498511Y302969D01* +X509009Y302969D01* +X509009Y296471D01* +X498511Y296471D01* +X498511Y301729D02* +X509009Y301729D01* +X476511Y293469D02* +X476511Y286971D01* +X476511Y293469D02* +X487009Y293469D01* +X487009Y286971D01* +X476511Y286971D01* +X476511Y292229D02* +X487009Y292229D01* +X476511Y305971D02* +X476511Y312469D01* +X487009Y312469D01* +X487009Y305971D01* +X476511Y305971D01* +X476511Y311229D02* +X487009Y311229D01* +X457871Y326951D02* +X457871Y333449D01* +X468369Y333449D01* +X468369Y326951D01* +X457871Y326951D01* +X457871Y332209D02* +X468369Y332209D01* +X435871Y323949D02* +X435871Y317451D01* +X435871Y323949D02* +X446369Y323949D01* +X446369Y317451D01* +X435871Y317451D01* +X435871Y322709D02* +X446369Y322709D01* +X435871Y336451D02* +X435871Y342949D01* +X446369Y342949D01* +X446369Y336451D01* +X435871Y336451D01* +X435871Y341709D02* +X446369Y341709D01* +D12* +X1029220Y98460D02* +X1029220Y94920D01* +X1029220Y98460D02* +X1033260Y98460D01* +X1033260Y94920D01* +X1029220Y94920D01* +X1029220Y87960D02* +X1029220Y84420D01* +X1029220Y87960D02* +X1033260Y87960D01* +X1033260Y84420D01* +X1029220Y84420D01* +X704100Y143180D02* +X704100Y146720D01* +X708140Y146720D01* +X708140Y143180D01* +X704100Y143180D01* +X704100Y136220D02* +X704100Y132680D01* +X704100Y136220D02* +X708140Y136220D01* +X708140Y132680D01* +X704100Y132680D01* +X1252820Y191020D02* +X1256360Y191020D01* +X1252820Y191020D02* +X1252820Y195060D01* +X1256360Y195060D01* +X1256360Y191020D01* +X1256360Y194812D02* +X1252820Y194812D01* +X1263320Y191020D02* +X1266860Y191020D01* +X1263320Y191020D02* +X1263320Y195060D01* +X1266860Y195060D01* +X1266860Y191020D01* +X1266860Y194812D02* +X1263320Y194812D01* +X1256360Y140220D02* +X1252820Y140220D01* +X1252820Y144260D01* +X1256360Y144260D01* +X1256360Y140220D01* +X1256360Y144012D02* +X1252820Y144012D01* +X1263320Y140220D02* +X1266860Y140220D01* +X1263320Y140220D02* +X1263320Y144260D01* +X1266860Y144260D01* +X1266860Y140220D01* +X1266860Y144012D02* +X1263320Y144012D01* +X1256360Y127520D02* +X1252820Y127520D01* +X1252820Y131560D01* +X1256360Y131560D01* +X1256360Y127520D01* +X1256360Y131312D02* +X1252820Y131312D01* +X1263320Y127520D02* +X1266860Y127520D01* +X1263320Y127520D02* +X1263320Y131560D01* +X1266860Y131560D01* +X1266860Y127520D01* +X1266860Y131312D02* +X1263320Y131312D01* +X676160Y163500D02* +X676160Y167040D01* +X680200Y167040D01* +X680200Y163500D01* +X676160Y163500D01* +X676160Y156540D02* +X676160Y153000D01* +X676160Y156540D02* +X680200Y156540D01* +X680200Y153000D01* +X676160Y153000D01* +X1007860Y272380D02* +X1007860Y275920D01* +X1007860Y272380D02* +X1003820Y272380D01* +X1003820Y275920D01* +X1007860Y275920D01* +X1007860Y282880D02* +X1007860Y286420D01* +X1007860Y282880D02* +X1003820Y282880D01* +X1003820Y286420D01* +X1007860Y286420D01* +X874280Y167040D02* +X874280Y163500D01* +X874280Y167040D02* +X878320Y167040D01* +X878320Y163500D01* +X874280Y163500D01* +X874280Y156540D02* +X874280Y153000D01* +X874280Y156540D02* +X878320Y156540D01* +X878320Y153000D01* +X874280Y153000D01* +X1200900Y100660D02* +X1200900Y97120D01* +X1196860Y97120D01* +X1196860Y100660D01* +X1200900Y100660D01* +X1200900Y107620D02* +X1200900Y111160D01* +X1200900Y107620D02* +X1196860Y107620D01* +X1196860Y111160D01* +X1200900Y111160D01* +X968260Y130480D02* +X968260Y134020D01* +X972300Y134020D01* +X972300Y130480D01* +X968260Y130480D01* +X968260Y123520D02* +X968260Y119980D01* +X968260Y123520D02* +X972300Y123520D01* +X972300Y119980D01* +X968260Y119980D01* +X976300Y256020D02* +X979840Y256020D01* +X979840Y251980D01* +X976300Y251980D01* +X976300Y256020D01* +X976300Y255772D02* +X979840Y255772D01* +X969340Y256020D02* +X965800Y256020D01* +X969340Y256020D02* +X969340Y251980D01* +X965800Y251980D01* +X965800Y256020D01* +X965800Y255772D02* +X969340Y255772D01* +X1043420Y87960D02* +X1043420Y84420D01* +X1039380Y84420D01* +X1039380Y87960D01* +X1043420Y87960D01* +X1043420Y94920D02* +X1043420Y98460D01* +X1043420Y94920D02* +X1039380Y94920D01* +X1039380Y98460D01* +X1043420Y98460D01* +X441360Y212840D02* +X437820Y212840D01* +X441360Y212840D02* +X441360Y208800D01* +X437820Y208800D01* +X437820Y212840D01* +X437820Y212592D02* +X441360Y212592D01* +X430860Y212840D02* +X427320Y212840D01* +X430860Y212840D02* +X430860Y208800D01* +X427320Y208800D01* +X427320Y212840D01* +X427320Y212592D02* +X430860Y212592D01* +X437820Y177280D02* +X441360Y177280D01* +X441360Y173240D01* +X437820Y173240D01* +X437820Y177280D01* +X437820Y177032D02* +X441360Y177032D01* +X430860Y177280D02* +X427320Y177280D01* +X430860Y177280D02* +X430860Y173240D01* +X427320Y173240D01* +X427320Y177280D01* +X427320Y177032D02* +X430860Y177032D01* +X430200Y187440D02* +X433740Y187440D01* +X433740Y183400D01* +X430200Y183400D01* +X430200Y187440D01* +X430200Y187192D02* +X433740Y187192D01* +X423240Y187440D02* +X419700Y187440D01* +X423240Y187440D02* +X423240Y183400D01* +X419700Y183400D01* +X419700Y187440D01* +X419700Y187192D02* +X423240Y187192D01* +X430200Y202680D02* +X433740Y202680D01* +X433740Y198640D01* +X430200Y198640D01* +X430200Y202680D01* +X430200Y202432D02* +X433740Y202432D01* +X423240Y202680D02* +X419700Y202680D01* +X423240Y202680D02* +X423240Y198640D01* +X419700Y198640D01* +X419700Y202680D01* +X419700Y202432D02* +X423240Y202432D01* +X526380Y201180D02* +X529920Y201180D01* +X526380Y201180D02* +X526380Y205220D01* +X529920Y205220D01* +X529920Y201180D01* +X529920Y204972D02* +X526380Y204972D01* +X536880Y201180D02* +X540420Y201180D01* +X536880Y201180D02* +X536880Y205220D01* +X540420Y205220D01* +X540420Y201180D01* +X540420Y204972D02* +X536880Y204972D01* +X554320Y152920D02* +X557860Y152920D01* +X554320Y152920D02* +X554320Y156960D01* +X557860Y156960D01* +X557860Y152920D01* +X557860Y156712D02* +X554320Y156712D01* +X564820Y152920D02* +X568360Y152920D01* +X564820Y152920D02* +X564820Y156960D01* +X568360Y156960D01* +X568360Y152920D01* +X568360Y156712D02* +X564820Y156712D01* +X568440Y178400D02* +X568440Y181940D01* +X568440Y178400D02* +X564400Y178400D01* +X564400Y181940D01* +X568440Y181940D01* +X568440Y188900D02* +X568440Y192440D01* +X568440Y188900D02* +X564400Y188900D01* +X564400Y192440D01* +X568440Y192440D01* +X529920Y226580D02* +X526380Y226580D01* +X526380Y230620D01* +X529920Y230620D01* +X529920Y226580D01* +X529920Y230372D02* +X526380Y230372D01* +X536880Y226580D02* +X540420Y226580D01* +X536880Y226580D02* +X536880Y230620D01* +X540420Y230620D01* +X540420Y226580D01* +X540420Y230372D02* +X536880Y230372D01* +X461760Y169240D02* +X461760Y165700D01* +X457720Y165700D01* +X457720Y169240D01* +X461760Y169240D01* +X461760Y176200D02* +X461760Y179740D01* +X461760Y176200D02* +X457720Y176200D01* +X457720Y179740D01* +X461760Y179740D01* +X441360Y141720D02* +X437820Y141720D01* +X441360Y141720D02* +X441360Y137680D01* +X437820Y137680D01* +X437820Y141720D01* +X437820Y141472D02* +X441360Y141472D01* +X430860Y141720D02* +X427320Y141720D01* +X430860Y141720D02* +X430860Y137680D01* +X427320Y137680D01* +X427320Y141720D01* +X427320Y141472D02* +X430860Y141472D01* +X439940Y305740D02* +X439940Y309280D01* +X443980Y309280D01* +X443980Y305740D01* +X439940Y305740D01* +X439940Y298780D02* +X439940Y295240D01* +X439940Y298780D02* +X443980Y298780D01* +X443980Y295240D01* +X439940Y295240D01* +X441360Y129020D02* +X437820Y129020D01* +X441360Y129020D02* +X441360Y124980D01* +X437820Y124980D01* +X437820Y129020D01* +X437820Y128772D02* +X441360Y128772D01* +X430860Y129020D02* +X427320Y129020D01* +X430860Y129020D02* +X430860Y124980D01* +X427320Y124980D01* +X427320Y129020D01* +X427320Y128772D02* +X430860Y128772D01* +X549580Y192520D02* +X553120Y192520D01* +X553120Y188480D01* +X549580Y188480D01* +X549580Y192520D01* +X549580Y192272D02* +X553120Y192272D01* +X542620Y192520D02* +X539080Y192520D01* +X542620Y192520D02* +X542620Y188480D01* +X539080Y188480D01* +X539080Y192520D01* +X539080Y192272D02* +X542620Y192272D01* +X529920Y213880D02* +X526380Y213880D01* +X526380Y217920D01* +X529920Y217920D01* +X529920Y213880D01* +X529920Y217672D02* +X526380Y217672D01* +X536880Y213880D02* +X540420Y213880D01* +X536880Y213880D02* +X536880Y217920D01* +X540420Y217920D01* +X540420Y213880D01* +X540420Y217672D02* +X536880Y217672D01* +X541540Y156880D02* +X541540Y153340D01* +X541540Y156880D02* +X545580Y156880D01* +X545580Y153340D01* +X541540Y153340D01* +X541540Y146380D02* +X541540Y142840D01* +X541540Y146380D02* +X545580Y146380D01* +X545580Y142840D01* +X541540Y142840D01* +X564820Y172200D02* +X568360Y172200D01* +X568360Y168160D01* +X564820Y168160D01* +X564820Y172200D01* +X564820Y171952D02* +X568360Y171952D01* +X557860Y172200D02* +X554320Y172200D01* +X557860Y172200D02* +X557860Y168160D01* +X554320Y168160D01* +X554320Y172200D01* +X554320Y171952D02* +X557860Y171952D01* +X487160Y246980D02* +X487160Y250520D01* +X487160Y246980D02* +X483120Y246980D01* +X483120Y250520D01* +X487160Y250520D01* +X487160Y257480D02* +X487160Y261020D01* +X487160Y257480D02* +X483120Y257480D01* +X483120Y261020D01* +X487160Y261020D01* +X754980Y86880D02* +X758520Y86880D01* +X754980Y86880D02* +X754980Y90920D01* +X758520Y90920D01* +X758520Y86880D01* +X758520Y90672D02* +X754980Y90672D01* +X765480Y86880D02* +X769020Y86880D01* +X765480Y86880D02* +X765480Y90920D01* +X769020Y90920D01* +X769020Y86880D01* +X769020Y90672D02* +X765480Y90672D01* +X464300Y295240D02* +X464300Y298780D01* +X464300Y295240D02* +X460260Y295240D01* +X460260Y298780D01* +X464300Y298780D01* +X464300Y305740D02* +X464300Y309280D01* +X464300Y305740D02* +X460260Y305740D01* +X460260Y309280D01* +X464300Y309280D01* +X404380Y309280D02* +X404380Y305740D01* +X404380Y309280D02* +X408420Y309280D01* +X408420Y305740D01* +X404380Y305740D01* +X404380Y298780D02* +X404380Y295240D01* +X404380Y298780D02* +X408420Y298780D01* +X408420Y295240D01* +X404380Y295240D01* +X395720Y295240D02* +X395720Y298780D01* +X395720Y295240D02* +X391680Y295240D01* +X391680Y298780D01* +X395720Y298780D01* +X395720Y305740D02* +X395720Y309280D01* +X395720Y305740D02* +X391680Y305740D01* +X391680Y309280D01* +X395720Y309280D01* +X1213600Y100660D02* +X1213600Y97120D01* +X1209560Y97120D01* +X1209560Y100660D01* +X1213600Y100660D01* +X1213600Y107620D02* +X1213600Y111160D01* +X1213600Y107620D02* +X1209560Y107620D01* +X1209560Y111160D01* +X1213600Y111160D01* +X751240Y162040D02* +X747700Y162040D01* +X751240Y162040D02* +X751240Y158000D01* +X747700Y158000D01* +X747700Y162040D01* +X747700Y161792D02* +X751240Y161792D01* +X740740Y162040D02* +X737200Y162040D01* +X740740Y162040D02* +X740740Y158000D01* +X737200Y158000D01* +X737200Y162040D01* +X737200Y161792D02* +X740740Y161792D01* +X715340Y158000D02* +X711800Y158000D01* +X711800Y162040D01* +X715340Y162040D01* +X715340Y158000D01* +X715340Y161792D02* +X711800Y161792D01* +X722300Y158000D02* +X725840Y158000D01* +X722300Y158000D02* +X722300Y162040D01* +X725840Y162040D01* +X725840Y158000D01* +X725840Y161792D02* +X722300Y161792D01* +D13* +X456249Y262329D02* +X448751Y262329D01* +X456249Y262329D02* +X456249Y255831D01* +X448751Y255831D01* +X448751Y262329D01* +X448751Y261089D02* +X456249Y261089D01* +X440249Y262329D02* +X432751Y262329D01* +X440249Y262329D02* +X440249Y255831D01* +X432751Y255831D01* +X432751Y262329D01* +X432751Y261089D02* +X440249Y261089D01* +X440249Y225351D02* +X432751Y225351D01* +X432751Y231849D01* +X440249Y231849D01* +X440249Y225351D01* +X440249Y230609D02* +X432751Y230609D01* +X448751Y225351D02* +X456249Y225351D01* +X448751Y225351D02* +X448751Y231849D01* +X456249Y231849D01* +X456249Y225351D01* +X456249Y230609D02* +X448751Y230609D01* +D12* +X1035800Y166700D02* +X1035800Y163160D01* +X1031760Y163160D01* +X1031760Y166700D01* +X1035800Y166700D01* +X1035800Y173660D02* +X1035800Y177200D01* +X1035800Y173660D02* +X1031760Y173660D01* +X1031760Y177200D01* +X1035800Y177200D01* +X464300Y206340D02* +X464300Y209880D01* +X464300Y206340D02* +X460260Y206340D01* +X460260Y209880D01* +X464300Y209880D01* +X464300Y216840D02* +X464300Y220380D01* +X464300Y216840D02* +X460260Y216840D01* +X460260Y220380D01* +X464300Y220380D01* +X470420Y159420D02* +X470420Y155880D01* +X470420Y159420D02* +X474460Y159420D01* +X474460Y155880D01* +X470420Y155880D01* +X470420Y148920D02* +X470420Y145380D01* +X470420Y148920D02* +X474460Y148920D01* +X474460Y145380D01* +X470420Y145380D01* +D13* +X524951Y137869D02* +X532449Y137869D01* +X532449Y131371D01* +X524951Y131371D01* +X524951Y137869D01* +X524951Y136629D02* +X532449Y136629D01* +X516449Y137869D02* +X508951Y137869D01* +X516449Y137869D02* +X516449Y131371D01* +X508951Y131371D01* +X508951Y137869D01* +X508951Y136629D02* +X516449Y136629D01* +X1024329Y282891D02* +X1024329Y290389D01* +X1024329Y282891D02* +X1017831Y282891D01* +X1017831Y290389D01* +X1024329Y290389D01* +X1024329Y288149D02* +X1017831Y288149D01* +X1024329Y298891D02* +X1024329Y306389D01* +X1024329Y298891D02* +X1017831Y298891D01* +X1017831Y306389D01* +X1024329Y306389D01* +X1024329Y304149D02* +X1017831Y304149D01* +D12* +X1035800Y293700D02* +X1035800Y290160D01* +X1031760Y290160D01* +X1031760Y293700D01* +X1035800Y293700D01* +X1035800Y300660D02* +X1035800Y304200D01* +X1035800Y300660D02* +X1031760Y300660D01* +X1031760Y304200D01* +X1035800Y304200D01* +D13* +X1012751Y70169D02* +X1012751Y62671D01* +X1012751Y70169D02* +X1019249Y70169D01* +X1019249Y62671D01* +X1012751Y62671D01* +X1012751Y67929D02* +X1019249Y67929D01* +X1012751Y54169D02* +X1012751Y46671D01* +X1012751Y54169D02* +X1019249Y54169D01* +X1019249Y46671D01* +X1012751Y46671D01* +X1012751Y51929D02* +X1019249Y51929D01* +X687631Y88071D02* +X687631Y95569D01* +X694129Y95569D01* +X694129Y88071D01* +X687631Y88071D01* +X687631Y93329D02* +X694129Y93329D01* +X687631Y79569D02* +X687631Y72071D01* +X687631Y79569D02* +X694129Y79569D01* +X694129Y72071D01* +X687631Y72071D01* +X687631Y77329D02* +X694129Y77329D01* +D12* +X1049540Y94920D02* +X1049540Y98460D01* +X1053580Y98460D01* +X1053580Y94920D01* +X1049540Y94920D01* +X1049540Y87960D02* +X1049540Y84420D01* +X1049540Y87960D02* +X1053580Y87960D01* +X1053580Y84420D01* +X1049540Y84420D01* +X511060Y155880D02* +X511060Y159420D01* +X515100Y159420D01* +X515100Y155880D01* +X511060Y155880D01* +X511060Y148920D02* +X511060Y145380D01* +X511060Y148920D02* +X515100Y148920D01* +X515100Y145380D01* +X511060Y145380D01* +X523760Y155880D02* +X523760Y159420D01* +X527800Y159420D01* +X527800Y155880D01* +X523760Y155880D01* +X523760Y148920D02* +X523760Y145380D01* +X523760Y148920D02* +X527800Y148920D01* +X527800Y145380D01* +X523760Y145380D01* +X262140Y305740D02* +X262140Y309280D01* +X266180Y309280D01* +X266180Y305740D01* +X262140Y305740D01* +X262140Y298780D02* +X262140Y295240D01* +X262140Y298780D02* +X266180Y298780D01* +X266180Y295240D01* +X262140Y295240D01* +X274840Y305740D02* +X274840Y309280D01* +X278880Y309280D01* +X278880Y305740D01* +X274840Y305740D01* +X274840Y298780D02* +X274840Y295240D01* +X274840Y298780D02* +X278880Y298780D01* +X278880Y295240D01* +X274840Y295240D01* +X307860Y305740D02* +X307860Y309280D01* +X311900Y309280D01* +X311900Y305740D01* +X307860Y305740D01* +X307860Y298780D02* +X307860Y295240D01* +X307860Y298780D02* +X311900Y298780D01* +X311900Y295240D01* +X307860Y295240D01* +D13* +X516291Y64209D02* +X516291Y57711D01* +X516291Y64209D02* +X526789Y64209D01* +X526789Y57711D01* +X516291Y57711D01* +X516291Y62969D02* +X526789Y62969D01* +X494291Y54709D02* +X494291Y48211D01* +X494291Y54709D02* +X504789Y54709D01* +X504789Y48211D01* +X494291Y48211D01* +X494291Y53469D02* +X504789Y53469D01* +X494291Y67211D02* +X494291Y73709D01* +X504789Y73709D01* +X504789Y67211D01* +X494291Y67211D01* +X494291Y72469D02* +X504789Y72469D01* +D12* +X182360Y340960D02* +X182360Y344500D01* +X182360Y340960D02* +X178320Y340960D01* +X178320Y344500D01* +X182360Y344500D01* +X182360Y351460D02* +X182360Y355000D01* +X182360Y351460D02* +X178320Y351460D01* +X178320Y355000D01* +X182360Y355000D01* +D13* +X448751Y247089D02* +X456249Y247089D01* +X456249Y240591D01* +X448751Y240591D01* +X448751Y247089D01* +X448751Y245849D02* +X456249Y245849D01* +X440249Y247089D02* +X432751Y247089D01* +X440249Y247089D02* +X440249Y240591D01* +X432751Y240591D01* +X432751Y247089D01* +X432751Y245849D02* +X440249Y245849D01* +D14* +X611787Y105683D02* +X611787Y98117D01* +X611787Y105683D02* +X616253Y105683D01* +X616253Y98117D01* +X611787Y98117D01* +X611787Y102360D02* +X616253Y102360D01* +X602287Y105683D02* +X602287Y98117D01* +X602287Y105683D02* +X606753Y105683D01* +X606753Y98117D01* +X602287Y98117D01* +X602287Y102360D02* +X606753Y102360D01* +X592787Y105683D02* +X592787Y98117D01* +X592787Y105683D02* +X597253Y105683D01* +X597253Y98117D01* +X592787Y98117D01* +X592787Y102360D02* +X597253Y102360D01* +X592787Y79683D02* +X592787Y72117D01* +X592787Y79683D02* +X597253Y79683D01* +X597253Y72117D01* +X592787Y72117D01* +X592787Y76360D02* +X597253Y76360D01* +X602287Y79683D02* +X602287Y72117D01* +X602287Y79683D02* +X606753Y79683D01* +X606753Y72117D01* +X602287Y72117D01* +X602287Y76360D02* +X606753Y76360D01* +X611787Y79683D02* +X611787Y72117D01* +X611787Y79683D02* +X616253Y79683D01* +X616253Y72117D01* +X611787Y72117D01* +X611787Y76360D02* +X616253Y76360D01* +D15* +X639931Y77551D02* +X647789Y77551D01* +X639931Y77551D02* +X639931Y110409D01* +X647789Y110409D01* +X647789Y77551D01* +X647789Y83416D02* +X639931Y83416D01* +X639931Y89281D02* +X647789Y89281D01* +X647789Y95146D02* +X639931Y95146D01* +X639931Y101011D02* +X647789Y101011D01* +X647789Y106876D02* +X639931Y106876D01* +X667931Y77551D02* +X675789Y77551D01* +X667931Y77551D02* +X667931Y110409D01* +X675789Y110409D01* +X675789Y77551D01* +X675789Y83416D02* +X667931Y83416D01* +X667931Y89281D02* +X675789Y89281D01* +X675789Y95146D02* +X667931Y95146D01* +X667931Y101011D02* +X675789Y101011D01* +X675789Y106876D02* +X667931Y106876D01* +D12* +X606460Y65520D02* +X602920Y65520D01* +X606460Y65520D02* +X606460Y61480D01* +X602920Y61480D01* +X602920Y65520D01* +X602920Y65272D02* +X606460Y65272D01* +X595960Y65520D02* +X592420Y65520D01* +X595960Y65520D02* +X595960Y61480D01* +X592420Y61480D01* +X592420Y65520D01* +X592420Y65272D02* +X595960Y65272D01* +X627900Y107620D02* +X627900Y111160D01* +X631940Y111160D01* +X631940Y107620D01* +X627900Y107620D01* +X627900Y100660D02* +X627900Y97120D01* +X627900Y100660D02* +X631940Y100660D01* +X631940Y97120D01* +X627900Y97120D01* +X613740Y114820D02* +X610200Y114820D01* +X610200Y118860D01* +X613740Y118860D01* +X613740Y114820D01* +X613740Y118612D02* +X610200Y118612D01* +X620700Y114820D02* +X624240Y114820D01* +X620700Y114820D02* +X620700Y118860D01* +X624240Y118860D01* +X624240Y114820D01* +X624240Y118612D02* +X620700Y118612D01* +X588340Y114820D02* +X584800Y114820D01* +X584800Y118860D01* +X588340Y118860D01* +X588340Y114820D01* +X588340Y118612D02* +X584800Y118612D01* +X595300Y114820D02* +X598840Y114820D01* +X595300Y114820D02* +X595300Y118860D01* +X598840Y118860D01* +X598840Y114820D01* +X598840Y118612D02* +X595300Y118612D01* +D16* +X639359Y62906D02* +X639359Y53934D01* +X633435Y53934D01* +X633435Y62906D01* +X639359Y62906D01* +X639359Y58924D02* +X633435Y58924D01* +X672125Y62906D02* +X672125Y53934D01* +X666201Y53934D01* +X666201Y62906D01* +X672125Y62906D01* +X672125Y58924D02* +X666201Y58924D01* +D12* +X550240Y114820D02* +X546700Y114820D01* +X546700Y118860D01* +X550240Y118860D01* +X550240Y114820D01* +X550240Y118612D02* +X546700Y118612D01* +X557200Y114820D02* +X560740Y114820D01* +X557200Y114820D02* +X557200Y118860D01* +X560740Y118860D01* +X560740Y114820D01* +X560740Y118612D02* +X557200Y118612D01* +D13* +X559471Y94689D02* +X559471Y88191D01* +X559471Y94689D02* +X569969Y94689D01* +X569969Y88191D01* +X559471Y88191D01* +X559471Y93449D02* +X569969Y93449D01* +X537471Y85189D02* +X537471Y78691D01* +X537471Y85189D02* +X547969Y85189D01* +X547969Y78691D01* +X537471Y78691D01* +X537471Y83949D02* +X547969Y83949D01* +X537471Y97691D02* +X537471Y104189D01* +X547969Y104189D01* +X547969Y97691D01* +X537471Y97691D01* +X537471Y102949D02* +X547969Y102949D01* +X546929Y60251D02* +X539431Y60251D01* +X539431Y66749D01* +X546929Y66749D01* +X546929Y60251D01* +X546929Y65509D02* +X539431Y65509D01* +X555431Y60251D02* +X562929Y60251D01* +X555431Y60251D02* +X555431Y66749D01* +X562929Y66749D01* +X562929Y60251D01* +X562929Y65509D02* +X555431Y65509D01* +D17* +X581431Y132451D02* +X597569Y132451D01* +X581431Y132451D02* +X581431Y141589D01* +X597569Y141589D01* +X597569Y132451D01* +X597569Y139000D02* +X581431Y139000D01* +X581431Y178451D02* +X597569Y178451D01* +X581431Y178451D02* +X581431Y187589D01* +X597569Y187589D01* +X597569Y178451D01* +X597569Y185000D02* +X581431Y185000D01* +X672431Y178451D02* +X688569Y178451D01* +X672431Y178451D02* +X672431Y187589D01* +X688569Y187589D01* +X688569Y178451D01* +X688569Y185000D02* +X672431Y185000D01* +X672431Y132451D02* +X688569Y132451D01* +X672431Y132451D02* +X672431Y141589D01* +X688569Y141589D01* +X688569Y132451D01* +X688569Y139000D02* +X672431Y139000D01* +X941969Y197891D02* +X941969Y214029D01* +X941969Y197891D02* +X932831Y197891D01* +X932831Y214029D01* +X941969Y214029D01* +X941969Y204440D02* +X932831Y204440D01* +X932831Y210989D02* +X941969Y210989D01* +X895969Y214029D02* +X895969Y197891D01* +X886831Y197891D01* +X886831Y214029D01* +X895969Y214029D01* +X895969Y204440D02* +X886831Y204440D01* +X886831Y210989D02* +X895969Y210989D01* +X895969Y288891D02* +X895969Y305029D01* +X895969Y288891D02* +X886831Y288891D01* +X886831Y305029D01* +X895969Y305029D01* +X895969Y295440D02* +X886831Y295440D01* +X886831Y301989D02* +X895969Y301989D01* +X941969Y305029D02* +X941969Y288891D01* +X932831Y288891D01* +X932831Y305029D01* +X941969Y305029D01* +X941969Y295440D02* +X932831Y295440D01* +X932831Y301989D02* +X941969Y301989D01* +X782989Y132451D02* +X766851Y132451D01* +X766851Y141589D01* +X782989Y141589D01* +X782989Y132451D01* +X782989Y139000D02* +X766851Y139000D01* +X766851Y178451D02* +X782989Y178451D01* +X766851Y178451D02* +X766851Y187589D01* +X782989Y187589D01* +X782989Y178451D01* +X782989Y185000D02* +X766851Y185000D01* +X857851Y178451D02* +X873989Y178451D01* +X857851Y178451D02* +X857851Y187589D01* +X873989Y187589D01* +X873989Y178451D01* +X873989Y185000D02* +X857851Y185000D01* +X857851Y132451D02* +X873989Y132451D01* +X857851Y132451D02* +X857851Y141589D01* +X873989Y141589D01* +X873989Y132451D01* +X873989Y139000D02* +X857851Y139000D01* +D12* +X537540Y178320D02* +X534000Y178320D01* +X534000Y182360D01* +X537540Y182360D01* +X537540Y178320D01* +X537540Y182112D02* +X534000Y182112D01* +X544500Y178320D02* +X548040Y178320D01* +X544500Y178320D02* +X544500Y182360D01* +X548040Y182360D01* +X548040Y178320D01* +X548040Y182112D02* +X544500Y182112D01* +X508520Y257480D02* +X508520Y261020D01* +X512560Y261020D01* +X512560Y257480D01* +X508520Y257480D01* +X508520Y250520D02* +X508520Y246980D01* +X508520Y250520D02* +X512560Y250520D01* +X512560Y246980D01* +X508520Y246980D01* +X861660Y53860D02* +X865200Y53860D01* +X861660Y53860D02* +X861660Y57900D01* +X865200Y57900D01* +X865200Y53860D01* +X865200Y57652D02* +X861660Y57652D01* +X872160Y53860D02* +X875700Y53860D01* +X872160Y53860D02* +X872160Y57900D01* +X875700Y57900D01* +X875700Y53860D01* +X875700Y57652D02* +X872160Y57652D01* +D18* +X1105546Y206686D02* +X1150294Y206686D01* +X1105546Y206686D02* +X1105546Y251434D01* +X1150294Y251434D01* +X1150294Y206686D01* +X1150294Y213606D02* +X1105546Y213606D01* +X1105546Y220526D02* +X1150294Y220526D01* +X1150294Y227446D02* +X1105546Y227446D01* +X1105546Y234366D02* +X1150294Y234366D01* +X1150294Y241286D02* +X1105546Y241286D01* +X1105546Y248206D02* +X1150294Y248206D01* +D19* +X1061344Y301136D02* +X1044496Y301136D01* +X1044496Y306984D01* +X1061344Y306984D01* +X1061344Y301136D01* +X1061344Y306062D02* +X1044496Y306062D01* +X1044496Y288436D02* +X1061344Y288436D01* +X1044496Y288436D02* +X1044496Y294284D01* +X1061344Y294284D01* +X1061344Y288436D01* +X1061344Y293362D02* +X1044496Y293362D01* +X1044496Y275736D02* +X1061344Y275736D01* +X1044496Y275736D02* +X1044496Y281584D01* +X1061344Y281584D01* +X1061344Y275736D01* +X1061344Y280662D02* +X1044496Y280662D01* +X1044496Y263036D02* +X1061344Y263036D01* +X1044496Y263036D02* +X1044496Y268884D01* +X1061344Y268884D01* +X1061344Y263036D01* +X1061344Y267962D02* +X1044496Y267962D01* +X1044496Y250336D02* +X1061344Y250336D01* +X1044496Y250336D02* +X1044496Y256184D01* +X1061344Y256184D01* +X1061344Y250336D01* +X1061344Y255262D02* +X1044496Y255262D01* +X1044496Y237636D02* +X1061344Y237636D01* +X1044496Y237636D02* +X1044496Y243484D01* +X1061344Y243484D01* +X1061344Y237636D01* +X1061344Y242562D02* +X1044496Y242562D01* +X1044496Y224936D02* +X1061344Y224936D01* +X1044496Y224936D02* +X1044496Y230784D01* +X1061344Y230784D01* +X1061344Y224936D01* +X1061344Y229862D02* +X1044496Y229862D01* +X1044496Y212236D02* +X1061344Y212236D01* +X1044496Y212236D02* +X1044496Y218084D01* +X1061344Y218084D01* +X1061344Y212236D01* +X1061344Y217162D02* +X1044496Y217162D01* +X1044496Y199536D02* +X1061344Y199536D01* +X1044496Y199536D02* +X1044496Y205384D01* +X1061344Y205384D01* +X1061344Y199536D01* +X1061344Y204462D02* +X1044496Y204462D01* +X1044496Y186836D02* +X1061344Y186836D01* +X1044496Y186836D02* +X1044496Y192684D01* +X1061344Y192684D01* +X1061344Y186836D01* +X1061344Y191762D02* +X1044496Y191762D01* +X1044496Y174136D02* +X1061344Y174136D01* +X1044496Y174136D02* +X1044496Y179984D01* +X1061344Y179984D01* +X1061344Y174136D01* +X1061344Y179062D02* +X1044496Y179062D01* +X1044496Y161436D02* +X1061344Y161436D01* +X1044496Y161436D02* +X1044496Y167284D01* +X1061344Y167284D01* +X1061344Y161436D01* +X1061344Y166362D02* +X1044496Y166362D01* +X1044496Y148736D02* +X1061344Y148736D01* +X1044496Y148736D02* +X1044496Y154584D01* +X1061344Y154584D01* +X1061344Y148736D01* +X1061344Y153662D02* +X1044496Y153662D01* +X1044496Y136036D02* +X1061344Y136036D01* +X1044496Y136036D02* +X1044496Y141884D01* +X1061344Y141884D01* +X1061344Y136036D01* +X1061344Y140962D02* +X1044496Y140962D01* +X1083694Y137384D02* +X1083694Y120536D01* +X1077846Y120536D01* +X1077846Y137384D01* +X1083694Y137384D01* +X1083694Y125462D02* +X1077846Y125462D01* +X1077846Y130388D02* +X1083694Y130388D01* +X1083694Y135314D02* +X1077846Y135314D01* +X1096394Y137384D02* +X1096394Y120536D01* +X1090546Y120536D01* +X1090546Y137384D01* +X1096394Y137384D01* +X1096394Y125462D02* +X1090546Y125462D01* +X1090546Y130388D02* +X1096394Y130388D01* +X1096394Y135314D02* +X1090546Y135314D01* +X1109094Y137384D02* +X1109094Y120536D01* +X1103246Y120536D01* +X1103246Y137384D01* +X1109094Y137384D01* +X1109094Y125462D02* +X1103246Y125462D01* +X1103246Y130388D02* +X1109094Y130388D01* +X1109094Y135314D02* +X1103246Y135314D01* +X1121794Y137384D02* +X1121794Y120536D01* +X1115946Y120536D01* +X1115946Y137384D01* +X1121794Y137384D01* +X1121794Y125462D02* +X1115946Y125462D01* +X1115946Y130388D02* +X1121794Y130388D01* +X1121794Y135314D02* +X1115946Y135314D01* +X1134494Y137384D02* +X1134494Y120536D01* +X1128646Y120536D01* +X1128646Y137384D01* +X1134494Y137384D01* +X1134494Y125462D02* +X1128646Y125462D01* +X1128646Y130388D02* +X1134494Y130388D01* +X1134494Y135314D02* +X1128646Y135314D01* +X1147194Y137384D02* +X1147194Y120536D01* +X1141346Y120536D01* +X1141346Y137384D01* +X1147194Y137384D01* +X1147194Y125462D02* +X1141346Y125462D01* +X1141346Y130388D02* +X1147194Y130388D01* +X1147194Y135314D02* +X1141346Y135314D01* +X1159894Y137384D02* +X1159894Y120536D01* +X1154046Y120536D01* +X1154046Y137384D01* +X1159894Y137384D01* +X1159894Y125462D02* +X1154046Y125462D01* +X1154046Y130388D02* +X1159894Y130388D01* +X1159894Y135314D02* +X1154046Y135314D01* +X1172594Y137384D02* +X1172594Y120536D01* +X1166746Y120536D01* +X1166746Y137384D01* +X1172594Y137384D01* +X1172594Y125462D02* +X1166746Y125462D01* +X1166746Y130388D02* +X1172594Y130388D01* +X1172594Y135314D02* +X1166746Y135314D01* +X1185294Y137384D02* +X1185294Y120536D01* +X1179446Y120536D01* +X1179446Y137384D01* +X1185294Y137384D01* +X1185294Y125462D02* +X1179446Y125462D01* +X1179446Y130388D02* +X1185294Y130388D01* +X1185294Y135314D02* +X1179446Y135314D01* +X1197994Y137384D02* +X1197994Y120536D01* +X1192146Y120536D01* +X1192146Y137384D01* +X1197994Y137384D01* +X1197994Y125462D02* +X1192146Y125462D01* +X1192146Y130388D02* +X1197994Y130388D01* +X1197994Y135314D02* +X1192146Y135314D01* +X1214496Y141884D02* +X1231344Y141884D01* +X1231344Y136036D01* +X1214496Y136036D01* +X1214496Y141884D01* +X1214496Y140962D02* +X1231344Y140962D01* +X1231344Y154584D02* +X1214496Y154584D01* +X1231344Y154584D02* +X1231344Y148736D01* +X1214496Y148736D01* +X1214496Y154584D01* +X1214496Y153662D02* +X1231344Y153662D01* +X1231344Y167284D02* +X1214496Y167284D01* +X1231344Y167284D02* +X1231344Y161436D01* +X1214496Y161436D01* +X1214496Y167284D01* +X1214496Y166362D02* +X1231344Y166362D01* +X1231344Y179984D02* +X1214496Y179984D01* +X1231344Y179984D02* +X1231344Y174136D01* +X1214496Y174136D01* +X1214496Y179984D01* +X1214496Y179062D02* +X1231344Y179062D01* +X1231344Y192684D02* +X1214496Y192684D01* +X1231344Y192684D02* +X1231344Y186836D01* +X1214496Y186836D01* +X1214496Y192684D01* +X1214496Y191762D02* +X1231344Y191762D01* +X1231344Y205384D02* +X1214496Y205384D01* +X1231344Y205384D02* +X1231344Y199536D01* +X1214496Y199536D01* +X1214496Y205384D01* +X1214496Y204462D02* +X1231344Y204462D01* +X1231344Y218084D02* +X1214496Y218084D01* +X1231344Y218084D02* +X1231344Y212236D01* +X1214496Y212236D01* +X1214496Y218084D01* +X1214496Y217162D02* +X1231344Y217162D01* +X1231344Y230784D02* +X1214496Y230784D01* +X1231344Y230784D02* +X1231344Y224936D01* +X1214496Y224936D01* +X1214496Y230784D01* +X1214496Y229862D02* +X1231344Y229862D01* +X1231344Y243484D02* +X1214496Y243484D01* +X1231344Y243484D02* +X1231344Y237636D01* +X1214496Y237636D01* +X1214496Y243484D01* +X1214496Y242562D02* +X1231344Y242562D01* +X1231344Y256184D02* +X1214496Y256184D01* +X1231344Y256184D02* +X1231344Y250336D01* +X1214496Y250336D01* +X1214496Y256184D01* +X1214496Y255262D02* +X1231344Y255262D01* +X1231344Y268884D02* +X1214496Y268884D01* +X1231344Y268884D02* +X1231344Y263036D01* +X1214496Y263036D01* +X1214496Y268884D01* +X1214496Y267962D02* +X1231344Y267962D01* +X1231344Y281584D02* +X1214496Y281584D01* +X1231344Y281584D02* +X1231344Y275736D01* +X1214496Y275736D01* +X1214496Y281584D01* +X1214496Y280662D02* +X1231344Y280662D01* +X1231344Y294284D02* +X1214496Y294284D01* +X1231344Y294284D02* +X1231344Y288436D01* +X1214496Y288436D01* +X1214496Y294284D01* +X1214496Y293362D02* +X1231344Y293362D01* +X1231344Y306984D02* +X1214496Y306984D01* +X1231344Y306984D02* +X1231344Y301136D01* +X1214496Y301136D01* +X1214496Y306984D01* +X1214496Y306062D02* +X1231344Y306062D01* +D20* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D21* +X169096Y324124D02* +X169096Y326116D01* +X169096Y324124D02* +X156104Y324124D01* +X156104Y326116D01* +X169096Y326116D01* +X169096Y330624D02* +X169096Y332616D01* +X169096Y330624D02* +X156104Y330624D01* +X156104Y332616D01* +X169096Y332616D01* +X169096Y319616D02* +X169096Y317624D01* +X156104Y317624D01* +X156104Y319616D01* +X169096Y319616D01* +X169096Y313116D02* +X169096Y311124D01* +X156104Y311124D01* +X156104Y313116D01* +X169096Y313116D01* +X169096Y337124D02* +X169096Y339116D01* +X169096Y337124D02* +X156104Y337124D01* +X156104Y339116D01* +X169096Y339116D01* +D22* +X164357Y354593D02* +X157303Y354593D01* +X157303Y363647D01* +X164357Y363647D01* +X164357Y354593D01* +X164357Y363122D02* +X157303Y363122D01* +X157303Y286593D02* +X164357Y286593D01* +X157303Y286593D02* +X157303Y295647D01* +X164357Y295647D01* +X164357Y286593D01* +X164357Y295122D02* +X157303Y295122D01* +D23* +X133618Y332388D02* +X133618Y341852D01* +X143082Y341852D01* +X143082Y332388D01* +X133618Y332388D01* +X133618Y317852D02* +X133618Y308388D01* +X133618Y317852D02* +X143082Y317852D01* +X143082Y308388D01* +X133618Y308388D01* +D24* +X327614Y339434D02* +X336386Y339434D01* +X327614Y339434D02* +X327614Y340806D01* +X336386Y340806D01* +X336386Y339434D01* +X336386Y334434D02* +X327614Y334434D01* +X327614Y335806D01* +X336386Y335806D01* +X336386Y334434D01* +X336386Y329434D02* +X327614Y329434D01* +X327614Y330806D01* +X336386Y330806D01* +X336386Y329434D01* +X336386Y324434D02* +X327614Y324434D01* +X327614Y325806D01* +X336386Y325806D01* +X336386Y324434D01* +X336386Y319434D02* +X327614Y319434D01* +X327614Y320806D01* +X336386Y320806D01* +X336386Y319434D01* +X336386Y314434D02* +X327614Y314434D01* +X327614Y315806D01* +X336386Y315806D01* +X336386Y314434D01* +X336386Y309434D02* +X327614Y309434D01* +X327614Y310806D01* +X336386Y310806D01* +X336386Y309434D01* +X341286Y305906D02* +X341286Y297134D01* +X339914Y297134D01* +X339914Y305906D01* +X341286Y305906D01* +X341286Y300326D02* +X339914Y300326D01* +X339914Y303518D02* +X341286Y303518D01* +X346286Y305906D02* +X346286Y297134D01* +X344914Y297134D01* +X344914Y305906D01* +X346286Y305906D01* +X346286Y300326D02* +X344914Y300326D01* +X344914Y303518D02* +X346286Y303518D01* +X351286Y305906D02* +X351286Y297134D01* +X349914Y297134D01* +X349914Y305906D01* +X351286Y305906D01* +X351286Y300326D02* +X349914Y300326D01* +X349914Y303518D02* +X351286Y303518D01* +X356286Y305906D02* +X356286Y297134D01* +X354914Y297134D01* +X354914Y305906D01* +X356286Y305906D01* +X356286Y300326D02* +X354914Y300326D01* +X354914Y303518D02* +X356286Y303518D01* +X361286Y305906D02* +X361286Y297134D01* +X359914Y297134D01* +X359914Y305906D01* +X361286Y305906D01* +X361286Y300326D02* +X359914Y300326D01* +X359914Y303518D02* +X361286Y303518D01* +X366286Y305906D02* +X366286Y297134D01* +X364914Y297134D01* +X364914Y305906D01* +X366286Y305906D01* +X366286Y300326D02* +X364914Y300326D01* +X364914Y303518D02* +X366286Y303518D01* +X371286Y305906D02* +X371286Y297134D01* +X369914Y297134D01* +X369914Y305906D01* +X371286Y305906D01* +X371286Y300326D02* +X369914Y300326D01* +X369914Y303518D02* +X371286Y303518D01* +X374814Y310806D02* +X383586Y310806D01* +X383586Y309434D01* +X374814Y309434D01* +X374814Y310806D01* +X374814Y315806D02* +X383586Y315806D01* +X383586Y314434D01* +X374814Y314434D01* +X374814Y315806D01* +X374814Y320806D02* +X383586Y320806D01* +X383586Y319434D01* +X374814Y319434D01* +X374814Y320806D01* +X374814Y325806D02* +X383586Y325806D01* +X383586Y324434D01* +X374814Y324434D01* +X374814Y325806D01* +X374814Y330806D02* +X383586Y330806D01* +X383586Y329434D01* +X374814Y329434D01* +X374814Y330806D01* +X374814Y335806D02* +X383586Y335806D01* +X383586Y334434D01* +X374814Y334434D01* +X374814Y335806D01* +X374814Y340806D02* +X383586Y340806D01* +X383586Y339434D01* +X374814Y339434D01* +X374814Y340806D01* +X369914Y344334D02* +X369914Y353106D01* +X371286Y353106D01* +X371286Y344334D01* +X369914Y344334D01* +X369914Y347526D02* +X371286Y347526D01* +X371286Y350718D02* +X369914Y350718D01* +X364914Y353106D02* +X364914Y344334D01* +X364914Y353106D02* +X366286Y353106D01* +X366286Y344334D01* +X364914Y344334D01* +X364914Y347526D02* +X366286Y347526D01* +X366286Y350718D02* +X364914Y350718D01* +X359914Y353106D02* +X359914Y344334D01* +X359914Y353106D02* +X361286Y353106D01* +X361286Y344334D01* +X359914Y344334D01* +X359914Y347526D02* +X361286Y347526D01* +X361286Y350718D02* +X359914Y350718D01* +X354914Y353106D02* +X354914Y344334D01* +X354914Y353106D02* +X356286Y353106D01* +X356286Y344334D01* +X354914Y344334D01* +X354914Y347526D02* +X356286Y347526D01* +X356286Y350718D02* +X354914Y350718D01* +X349914Y353106D02* +X349914Y344334D01* +X349914Y353106D02* +X351286Y353106D01* +X351286Y344334D01* +X349914Y344334D01* +X349914Y347526D02* +X351286Y347526D01* +X351286Y350718D02* +X349914Y350718D01* +X344914Y353106D02* +X344914Y344334D01* +X344914Y353106D02* +X346286Y353106D01* +X346286Y344334D01* +X344914Y344334D01* +X344914Y347526D02* +X346286Y347526D01* +X346286Y350718D02* +X344914Y350718D01* +X339914Y353106D02* +X339914Y344334D01* +X339914Y353106D02* +X341286Y353106D01* +X341286Y344334D01* +X339914Y344334D01* +X339914Y347526D02* +X341286Y347526D01* +X341286Y350718D02* +X339914Y350718D01* +D25* +X341960Y311480D02* +X369240Y311480D01* +X341960Y311480D02* +X341960Y338760D01* +X369240Y338760D01* +X369240Y311480D01* +X369240Y318369D02* +X341960Y318369D01* +X341960Y325258D02* +X369240Y325258D01* +X369240Y332147D02* +X341960Y332147D01* +D26* +X510816Y181374D02* +X518484Y181374D01* +X518484Y179706D01* +X510816Y179706D01* +X510816Y181374D01* +X510816Y186374D02* +X518484Y186374D01* +X518484Y184706D01* +X510816Y184706D01* +X510816Y186374D01* +X510816Y191374D02* +X518484Y191374D01* +X518484Y189706D01* +X510816Y189706D01* +X510816Y191374D01* +X510816Y196374D02* +X518484Y196374D01* +X518484Y194706D01* +X510816Y194706D01* +X510816Y196374D01* +X510816Y201374D02* +X518484Y201374D01* +X518484Y199706D01* +X510816Y199706D01* +X510816Y201374D01* +X510816Y206374D02* +X518484Y206374D01* +X518484Y204706D01* +X510816Y204706D01* +X510816Y206374D01* +X479784Y206374D02* +X472116Y206374D01* +X479784Y206374D02* +X479784Y204706D01* +X472116Y204706D01* +X472116Y206374D01* +X472116Y201374D02* +X479784Y201374D01* +X479784Y199706D01* +X472116Y199706D01* +X472116Y201374D01* +X472116Y196374D02* +X479784Y196374D01* +X479784Y194706D01* +X472116Y194706D01* +X472116Y196374D01* +X472116Y191374D02* +X479784Y191374D01* +X479784Y189706D01* +X472116Y189706D01* +X472116Y191374D01* +X472116Y186374D02* +X479784Y186374D01* +X479784Y184706D01* +X472116Y184706D01* +X472116Y186374D01* +X472116Y181374D02* +X479784Y181374D01* +X479784Y179706D01* +X472116Y179706D01* +X472116Y181374D01* +X483634Y177524D02* +X483634Y169856D01* +X481966Y169856D01* +X481966Y177524D01* +X483634Y177524D01* +X483634Y172672D02* +X481966Y172672D01* +X481966Y175488D02* +X483634Y175488D01* +X488634Y177524D02* +X488634Y169856D01* +X486966Y169856D01* +X486966Y177524D01* +X488634Y177524D01* +X488634Y172672D02* +X486966Y172672D01* +X486966Y175488D02* +X488634Y175488D01* +X493634Y177524D02* +X493634Y169856D01* +X491966Y169856D01* +X491966Y177524D01* +X493634Y177524D01* +X493634Y172672D02* +X491966Y172672D01* +X491966Y175488D02* +X493634Y175488D01* +X498634Y177524D02* +X498634Y169856D01* +X496966Y169856D01* +X496966Y177524D01* +X498634Y177524D01* +X498634Y172672D02* +X496966Y172672D01* +X496966Y175488D02* +X498634Y175488D01* +X503634Y177524D02* +X503634Y169856D01* +X501966Y169856D01* +X501966Y177524D01* +X503634Y177524D01* +X503634Y172672D02* +X501966Y172672D01* +X501966Y175488D02* +X503634Y175488D01* +X508634Y177524D02* +X508634Y169856D01* +X506966Y169856D01* +X506966Y177524D01* +X508634Y177524D01* +X508634Y172672D02* +X506966Y172672D01* +X506966Y175488D02* +X508634Y175488D01* +X508634Y208556D02* +X508634Y216224D01* +X508634Y208556D02* +X506966Y208556D01* +X506966Y216224D01* +X508634Y216224D01* +X508634Y211372D02* +X506966Y211372D01* +X506966Y214188D02* +X508634Y214188D01* +X503634Y216224D02* +X503634Y208556D01* +X501966Y208556D01* +X501966Y216224D01* +X503634Y216224D01* +X503634Y211372D02* +X501966Y211372D01* +X501966Y214188D02* +X503634Y214188D01* +X498634Y216224D02* +X498634Y208556D01* +X496966Y208556D01* +X496966Y216224D01* +X498634Y216224D01* +X498634Y211372D02* +X496966Y211372D01* +X496966Y214188D02* +X498634Y214188D01* +X493634Y216224D02* +X493634Y208556D01* +X491966Y208556D01* +X491966Y216224D01* +X493634Y216224D01* +X493634Y211372D02* +X491966Y211372D01* +X491966Y214188D02* +X493634Y214188D01* +X488634Y216224D02* +X488634Y208556D01* +X486966Y208556D01* +X486966Y216224D01* +X488634Y216224D01* +X488634Y211372D02* +X486966Y211372D01* +X486966Y214188D02* +X488634Y214188D01* +X483634Y216224D02* +X483634Y208556D01* +X481966Y208556D01* +X481966Y216224D01* +X483634Y216224D01* +X483634Y211372D02* +X481966Y211372D01* +X481966Y214188D02* +X483634Y214188D01* +D27* +X505302Y203042D02* +X505302Y183038D01* +X485298Y183038D01* +X485298Y203042D01* +X505302Y203042D01* +X505302Y189715D02* +X485298Y189715D01* +X485298Y196392D02* +X505302Y196392D01* +D28* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D29* +X292090Y237498D03* +D30* +X259090Y271798D03* +X259090Y114298D03* +D31* +X228590Y135898D03* +X228590Y250198D03* +D28* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D32* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D33* +X1262024Y173024D02* +X1262024Y179656D01* +X1266156Y179656D01* +X1266156Y173024D01* +X1262024Y173024D01* +X1262024Y177109D02* +X1266156Y177109D01* +X1262024Y162256D02* +X1262024Y155624D01* +X1262024Y162256D02* +X1266156Y162256D01* +X1266156Y155624D01* +X1262024Y155624D01* +X1262024Y159709D02* +X1266156Y159709D01* +X1253524Y162256D02* +X1253524Y155624D01* +X1253524Y162256D02* +X1257656Y162256D01* +X1257656Y155624D01* +X1253524Y155624D01* +X1253524Y159709D02* +X1257656Y159709D01* +X1253524Y173024D02* +X1253524Y179656D01* +X1257656Y179656D01* +X1257656Y173024D01* +X1253524Y173024D01* +X1253524Y177109D02* +X1257656Y177109D01* +X743536Y137516D02* +X736904Y137516D01* +X743536Y137516D02* +X743536Y133384D01* +X736904Y133384D01* +X736904Y137516D01* +X736904Y137469D02* +X743536Y137469D01* +X726136Y137516D02* +X719504Y137516D01* +X726136Y137516D02* +X726136Y133384D01* +X719504Y133384D01* +X719504Y137516D01* +X719504Y137469D02* +X726136Y137469D01* +X726136Y146016D02* +X719504Y146016D01* +X726136Y146016D02* +X726136Y141884D01* +X719504Y141884D01* +X719504Y146016D01* +X719504Y145969D02* +X726136Y145969D01* +X736904Y146016D02* +X743536Y146016D01* +X743536Y141884D01* +X736904Y141884D01* +X736904Y146016D01* +X736904Y145969D02* +X743536Y145969D01* +D34* +X800100Y20320D03* +D28* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D35* +X837816Y57788D02* +X851284Y57788D01* +X851284Y55496D01* +X837816Y55496D01* +X837816Y57788D01* +X837816Y64392D02* +X851284Y64392D01* +X851284Y62100D01* +X837816Y62100D01* +X837816Y64392D01* +X837816Y70742D02* +X851284Y70742D01* +X851284Y68450D01* +X837816Y68450D01* +X837816Y70742D01* +X837816Y77346D02* +X851284Y77346D01* +X851284Y75054D01* +X837816Y75054D01* +X837816Y77346D01* +X837816Y83950D02* +X851284Y83950D01* +X851284Y81658D01* +X837816Y81658D01* +X837816Y83950D01* +X837816Y90300D02* +X851284Y90300D01* +X851284Y88008D01* +X837816Y88008D01* +X837816Y90300D01* +X837816Y96904D02* +X851284Y96904D01* +X851284Y94612D01* +X837816Y94612D01* +X837816Y96904D01* +X792864Y96904D02* +X779396Y96904D01* +X792864Y96904D02* +X792864Y94612D01* +X779396Y94612D01* +X779396Y96904D01* +X779396Y90300D02* +X792864Y90300D01* +X792864Y88008D01* +X779396Y88008D01* +X779396Y90300D01* +X779396Y83950D02* +X792864Y83950D01* +X792864Y81658D01* +X779396Y81658D01* +X779396Y83950D01* +X779396Y77346D02* +X792864Y77346D01* +X792864Y75054D01* +X779396Y75054D01* +X779396Y77346D01* +X779396Y70742D02* +X792864Y70742D01* +X792864Y68450D01* +X779396Y68450D01* +X779396Y70742D01* +X779396Y64392D02* +X792864Y64392D01* +X792864Y62100D01* +X779396Y62100D01* +X779396Y64392D01* +X779396Y57788D02* +X792864Y57788D01* +X792864Y55496D01* +X779396Y55496D01* +X779396Y57788D01* +D13* +X592649Y45011D02* +X585151Y45011D01* +X585151Y51509D01* +X592649Y51509D01* +X592649Y45011D01* +X592649Y50269D02* +X585151Y50269D01* +X601151Y45011D02* +X608649Y45011D01* +X601151Y45011D02* +X601151Y51509D01* +X608649Y51509D01* +X608649Y45011D01* +X608649Y50269D02* +X601151Y50269D01* +X712151Y52631D02* +X719649Y52631D01* +X712151Y52631D02* +X712151Y59129D01* +X719649Y59129D01* +X719649Y52631D01* +X719649Y57889D02* +X712151Y57889D01* +X728151Y52631D02* +X735649Y52631D01* +X728151Y52631D02* +X728151Y59129D01* +X735649Y59129D01* +X735649Y52631D01* +X735649Y57889D02* +X728151Y57889D01* +D34* +X736600Y76200D03* +D28* +X711200Y76200D03* +D13* +X692686Y301962D02* +X689518Y308756D01* +X695406Y311502D01* +X698574Y304708D01* +X692686Y301962D01* +X690234Y307220D02* +X697403Y307220D01* +X696279Y294256D02* +X699447Y287462D01* +X696279Y294256D02* +X702167Y297002D01* +X705335Y290208D01* +X699447Y287462D01* +X696995Y292720D02* +X704164Y292720D01* +X764544Y304410D02* +X767712Y311204D01* +X773600Y308458D01* +X770432Y301664D01* +X764544Y304410D01* +X765715Y306922D02* +X772884Y306922D01* +X760950Y296703D02* +X757782Y289909D01* +X760950Y296703D02* +X766838Y293957D01* +X763670Y287163D01* +X757782Y289909D01* +X758953Y292421D02* +X766122Y292421D01* +D12* +X848960Y246900D02* +X852500Y246900D01* +X848960Y246900D02* +X848960Y250940D01* +X852500Y250940D01* +X852500Y246900D01* +X852500Y250692D02* +X848960Y250692D01* +X859460Y246900D02* +X863000Y246900D01* +X859460Y246900D02* +X859460Y250940D01* +X863000Y250940D01* +X863000Y246900D01* +X863000Y250692D02* +X859460Y250692D01* +X852500Y259600D02* +X848960Y259600D01* +X848960Y263640D01* +X852500Y263640D01* +X852500Y259600D01* +X852500Y263392D02* +X848960Y263392D01* +X859460Y259600D02* +X863000Y259600D01* +X859460Y259600D02* +X859460Y263640D01* +X863000Y263640D01* +X863000Y259600D01* +X863000Y263392D02* +X859460Y263392D01* +D36* +X434420Y363220D02* +X434422Y363361D01* +X434428Y363502D01* +X434438Y363642D01* +X434452Y363782D01* +X434470Y363922D01* +X434491Y364061D01* +X434517Y364200D01* +X434546Y364338D01* +X434580Y364474D01* +X434617Y364610D01* +X434658Y364745D01* +X434703Y364879D01* +X434752Y365011D01* +X434804Y365142D01* +X434860Y365271D01* +X434920Y365398D01* +X434983Y365524D01* +X435049Y365648D01* +X435120Y365771D01* +X435193Y365891D01* +X435270Y366009D01* +X435350Y366125D01* +X435434Y366238D01* +X435520Y366349D01* +X435610Y366458D01* +X435703Y366564D01* +X435798Y366667D01* +X435897Y366768D01* +X435998Y366866D01* +X436102Y366961D01* +X436209Y367053D01* +X436318Y367142D01* +X436430Y367227D01* +X436544Y367310D01* +X436660Y367390D01* +X436779Y367466D01* +X436900Y367538D01* +X437022Y367608D01* +X437147Y367673D01* +X437273Y367736D01* +X437401Y367794D01* +X437531Y367849D01* +X437662Y367901D01* +X437795Y367948D01* +X437929Y367992D01* +X438064Y368033D01* +X438200Y368069D01* +X438337Y368101D01* +X438475Y368130D01* +X438613Y368155D01* +X438753Y368175D01* +X438893Y368192D01* +X439033Y368205D01* +X439174Y368214D01* +X439314Y368219D01* +X439455Y368220D01* +X439596Y368217D01* +X439737Y368210D01* +X439877Y368199D01* +X440017Y368184D01* +X440157Y368165D01* +X440296Y368143D01* +X440434Y368116D01* +X440572Y368086D01* +X440708Y368051D01* +X440844Y368013D01* +X440978Y367971D01* +X441112Y367925D01* +X441244Y367876D01* +X441374Y367822D01* +X441503Y367765D01* +X441630Y367705D01* +X441756Y367641D01* +X441879Y367573D01* +X442001Y367502D01* +X442121Y367428D01* +X442238Y367350D01* +X442353Y367269D01* +X442466Y367185D01* +X442577Y367098D01* +X442685Y367007D01* +X442790Y366914D01* +X442893Y366817D01* +X442993Y366718D01* +X443090Y366616D01* +X443184Y366511D01* +X443275Y366404D01* +X443363Y366294D01* +X443448Y366182D01* +X443530Y366067D01* +X443609Y365950D01* +X443684Y365831D01* +X443756Y365710D01* +X443824Y365587D01* +X443889Y365462D01* +X443951Y365335D01* +X444008Y365206D01* +X444063Y365076D01* +X444113Y364945D01* +X444160Y364812D01* +X444203Y364678D01* +X444242Y364542D01* +X444277Y364406D01* +X444309Y364269D01* +X444336Y364131D01* +X444360Y363992D01* +X444380Y363852D01* +X444396Y363712D01* +X444408Y363572D01* +X444416Y363431D01* +X444420Y363290D01* +X444420Y363150D01* +X444416Y363009D01* +X444408Y362868D01* +X444396Y362728D01* +X444380Y362588D01* +X444360Y362448D01* +X444336Y362309D01* +X444309Y362171D01* +X444277Y362034D01* +X444242Y361898D01* +X444203Y361762D01* +X444160Y361628D01* +X444113Y361495D01* +X444063Y361364D01* +X444008Y361234D01* +X443951Y361105D01* +X443889Y360978D01* +X443824Y360853D01* +X443756Y360730D01* +X443684Y360609D01* +X443609Y360490D01* +X443530Y360373D01* +X443448Y360258D01* +X443363Y360146D01* +X443275Y360036D01* +X443184Y359929D01* +X443090Y359824D01* +X442993Y359722D01* +X442893Y359623D01* +X442790Y359526D01* +X442685Y359433D01* +X442577Y359342D01* +X442466Y359255D01* +X442353Y359171D01* +X442238Y359090D01* +X442121Y359012D01* +X442001Y358938D01* +X441879Y358867D01* +X441756Y358799D01* +X441630Y358735D01* +X441503Y358675D01* +X441374Y358618D01* +X441244Y358564D01* +X441112Y358515D01* +X440978Y358469D01* +X440844Y358427D01* +X440708Y358389D01* +X440572Y358354D01* +X440434Y358324D01* +X440296Y358297D01* +X440157Y358275D01* +X440017Y358256D01* +X439877Y358241D01* +X439737Y358230D01* +X439596Y358223D01* +X439455Y358220D01* +X439314Y358221D01* +X439174Y358226D01* +X439033Y358235D01* +X438893Y358248D01* +X438753Y358265D01* +X438613Y358285D01* +X438475Y358310D01* +X438337Y358339D01* +X438200Y358371D01* +X438064Y358407D01* +X437929Y358448D01* +X437795Y358492D01* +X437662Y358539D01* +X437531Y358591D01* +X437401Y358646D01* +X437273Y358704D01* +X437147Y358767D01* +X437022Y358832D01* +X436900Y358902D01* +X436779Y358974D01* +X436660Y359050D01* +X436544Y359130D01* +X436430Y359213D01* +X436318Y359298D01* +X436209Y359387D01* +X436102Y359479D01* +X435998Y359574D01* +X435897Y359672D01* +X435798Y359773D01* +X435703Y359876D01* +X435610Y359982D01* +X435520Y360091D01* +X435434Y360202D01* +X435350Y360315D01* +X435270Y360431D01* +X435193Y360549D01* +X435120Y360669D01* +X435049Y360792D01* +X434983Y360916D01* +X434920Y361042D01* +X434860Y361169D01* +X434804Y361298D01* +X434752Y361429D01* +X434703Y361561D01* +X434658Y361695D01* +X434617Y361830D01* +X434580Y361966D01* +X434546Y362102D01* +X434517Y362240D01* +X434491Y362379D01* +X434470Y362518D01* +X434452Y362658D01* +X434438Y362798D01* +X434428Y362938D01* +X434422Y363079D01* +X434420Y363220D01* +X1252300Y96520D02* +X1252302Y96661D01* +X1252308Y96802D01* +X1252318Y96942D01* +X1252332Y97082D01* +X1252350Y97222D01* +X1252371Y97361D01* +X1252397Y97500D01* +X1252426Y97638D01* +X1252460Y97774D01* +X1252497Y97910D01* +X1252538Y98045D01* +X1252583Y98179D01* +X1252632Y98311D01* +X1252684Y98442D01* +X1252740Y98571D01* +X1252800Y98698D01* +X1252863Y98824D01* +X1252929Y98948D01* +X1253000Y99071D01* +X1253073Y99191D01* +X1253150Y99309D01* +X1253230Y99425D01* +X1253314Y99538D01* +X1253400Y99649D01* +X1253490Y99758D01* +X1253583Y99864D01* +X1253678Y99967D01* +X1253777Y100068D01* +X1253878Y100166D01* +X1253982Y100261D01* +X1254089Y100353D01* +X1254198Y100442D01* +X1254310Y100527D01* +X1254424Y100610D01* +X1254540Y100690D01* +X1254659Y100766D01* +X1254780Y100838D01* +X1254902Y100908D01* +X1255027Y100973D01* +X1255153Y101036D01* +X1255281Y101094D01* +X1255411Y101149D01* +X1255542Y101201D01* +X1255675Y101248D01* +X1255809Y101292D01* +X1255944Y101333D01* +X1256080Y101369D01* +X1256217Y101401D01* +X1256355Y101430D01* +X1256493Y101455D01* +X1256633Y101475D01* +X1256773Y101492D01* +X1256913Y101505D01* +X1257054Y101514D01* +X1257194Y101519D01* +X1257335Y101520D01* +X1257476Y101517D01* +X1257617Y101510D01* +X1257757Y101499D01* +X1257897Y101484D01* +X1258037Y101465D01* +X1258176Y101443D01* +X1258314Y101416D01* +X1258452Y101386D01* +X1258588Y101351D01* +X1258724Y101313D01* +X1258858Y101271D01* +X1258992Y101225D01* +X1259124Y101176D01* +X1259254Y101122D01* +X1259383Y101065D01* +X1259510Y101005D01* +X1259636Y100941D01* +X1259759Y100873D01* +X1259881Y100802D01* +X1260001Y100728D01* +X1260118Y100650D01* +X1260233Y100569D01* +X1260346Y100485D01* +X1260457Y100398D01* +X1260565Y100307D01* +X1260670Y100214D01* +X1260773Y100117D01* +X1260873Y100018D01* +X1260970Y99916D01* +X1261064Y99811D01* +X1261155Y99704D01* +X1261243Y99594D01* +X1261328Y99482D01* +X1261410Y99367D01* +X1261489Y99250D01* +X1261564Y99131D01* +X1261636Y99010D01* +X1261704Y98887D01* +X1261769Y98762D01* +X1261831Y98635D01* +X1261888Y98506D01* +X1261943Y98376D01* +X1261993Y98245D01* +X1262040Y98112D01* +X1262083Y97978D01* +X1262122Y97842D01* +X1262157Y97706D01* +X1262189Y97569D01* +X1262216Y97431D01* +X1262240Y97292D01* +X1262260Y97152D01* +X1262276Y97012D01* +X1262288Y96872D01* +X1262296Y96731D01* +X1262300Y96590D01* +X1262300Y96450D01* +X1262296Y96309D01* +X1262288Y96168D01* +X1262276Y96028D01* +X1262260Y95888D01* +X1262240Y95748D01* +X1262216Y95609D01* +X1262189Y95471D01* +X1262157Y95334D01* +X1262122Y95198D01* +X1262083Y95062D01* +X1262040Y94928D01* +X1261993Y94795D01* +X1261943Y94664D01* +X1261888Y94534D01* +X1261831Y94405D01* +X1261769Y94278D01* +X1261704Y94153D01* +X1261636Y94030D01* +X1261564Y93909D01* +X1261489Y93790D01* +X1261410Y93673D01* +X1261328Y93558D01* +X1261243Y93446D01* +X1261155Y93336D01* +X1261064Y93229D01* +X1260970Y93124D01* +X1260873Y93022D01* +X1260773Y92923D01* +X1260670Y92826D01* +X1260565Y92733D01* +X1260457Y92642D01* +X1260346Y92555D01* +X1260233Y92471D01* +X1260118Y92390D01* +X1260001Y92312D01* +X1259881Y92238D01* +X1259759Y92167D01* +X1259636Y92099D01* +X1259510Y92035D01* +X1259383Y91975D01* +X1259254Y91918D01* +X1259124Y91864D01* +X1258992Y91815D01* +X1258858Y91769D01* +X1258724Y91727D01* +X1258588Y91689D01* +X1258452Y91654D01* +X1258314Y91624D01* +X1258176Y91597D01* +X1258037Y91575D01* +X1257897Y91556D01* +X1257757Y91541D01* +X1257617Y91530D01* +X1257476Y91523D01* +X1257335Y91520D01* +X1257194Y91521D01* +X1257054Y91526D01* +X1256913Y91535D01* +X1256773Y91548D01* +X1256633Y91565D01* +X1256493Y91585D01* +X1256355Y91610D01* +X1256217Y91639D01* +X1256080Y91671D01* +X1255944Y91707D01* +X1255809Y91748D01* +X1255675Y91792D01* +X1255542Y91839D01* +X1255411Y91891D01* +X1255281Y91946D01* +X1255153Y92004D01* +X1255027Y92067D01* +X1254902Y92132D01* +X1254780Y92202D01* +X1254659Y92274D01* +X1254540Y92350D01* +X1254424Y92430D01* +X1254310Y92513D01* +X1254198Y92598D01* +X1254089Y92687D01* +X1253982Y92779D01* +X1253878Y92874D01* +X1253777Y92972D01* +X1253678Y93073D01* +X1253583Y93176D01* +X1253490Y93282D01* +X1253400Y93391D01* +X1253314Y93502D01* +X1253230Y93615D01* +X1253150Y93731D01* +X1253073Y93849D01* +X1253000Y93969D01* +X1252929Y94092D01* +X1252863Y94216D01* +X1252800Y94342D01* +X1252740Y94469D01* +X1252684Y94598D01* +X1252632Y94729D01* +X1252583Y94861D01* +X1252538Y94995D01* +X1252497Y95130D01* +X1252460Y95266D01* +X1252426Y95402D01* +X1252397Y95540D01* +X1252371Y95679D01* +X1252350Y95818D01* +X1252332Y95958D01* +X1252318Y96098D01* +X1252308Y96238D01* +X1252302Y96379D01* +X1252300Y96520D01* +X132160Y17780D02* +X132162Y17921D01* +X132168Y18062D01* +X132178Y18202D01* +X132192Y18342D01* +X132210Y18482D01* +X132231Y18621D01* +X132257Y18760D01* +X132286Y18898D01* +X132320Y19034D01* +X132357Y19170D01* +X132398Y19305D01* +X132443Y19439D01* +X132492Y19571D01* +X132544Y19702D01* +X132600Y19831D01* +X132660Y19958D01* +X132723Y20084D01* +X132789Y20208D01* +X132860Y20331D01* +X132933Y20451D01* +X133010Y20569D01* +X133090Y20685D01* +X133174Y20798D01* +X133260Y20909D01* +X133350Y21018D01* +X133443Y21124D01* +X133538Y21227D01* +X133637Y21328D01* +X133738Y21426D01* +X133842Y21521D01* +X133949Y21613D01* +X134058Y21702D01* +X134170Y21787D01* +X134284Y21870D01* +X134400Y21950D01* +X134519Y22026D01* +X134640Y22098D01* +X134762Y22168D01* +X134887Y22233D01* +X135013Y22296D01* +X135141Y22354D01* +X135271Y22409D01* +X135402Y22461D01* +X135535Y22508D01* +X135669Y22552D01* +X135804Y22593D01* +X135940Y22629D01* +X136077Y22661D01* +X136215Y22690D01* +X136353Y22715D01* +X136493Y22735D01* +X136633Y22752D01* +X136773Y22765D01* +X136914Y22774D01* +X137054Y22779D01* +X137195Y22780D01* +X137336Y22777D01* +X137477Y22770D01* +X137617Y22759D01* +X137757Y22744D01* +X137897Y22725D01* +X138036Y22703D01* +X138174Y22676D01* +X138312Y22646D01* +X138448Y22611D01* +X138584Y22573D01* +X138718Y22531D01* +X138852Y22485D01* +X138984Y22436D01* +X139114Y22382D01* +X139243Y22325D01* +X139370Y22265D01* +X139496Y22201D01* +X139619Y22133D01* +X139741Y22062D01* +X139861Y21988D01* +X139978Y21910D01* +X140093Y21829D01* +X140206Y21745D01* +X140317Y21658D01* +X140425Y21567D01* +X140530Y21474D01* +X140633Y21377D01* +X140733Y21278D01* +X140830Y21176D01* +X140924Y21071D01* +X141015Y20964D01* +X141103Y20854D01* +X141188Y20742D01* +X141270Y20627D01* +X141349Y20510D01* +X141424Y20391D01* +X141496Y20270D01* +X141564Y20147D01* +X141629Y20022D01* +X141691Y19895D01* +X141748Y19766D01* +X141803Y19636D01* +X141853Y19505D01* +X141900Y19372D01* +X141943Y19238D01* +X141982Y19102D01* +X142017Y18966D01* +X142049Y18829D01* +X142076Y18691D01* +X142100Y18552D01* +X142120Y18412D01* +X142136Y18272D01* +X142148Y18132D01* +X142156Y17991D01* +X142160Y17850D01* +X142160Y17710D01* +X142156Y17569D01* +X142148Y17428D01* +X142136Y17288D01* +X142120Y17148D01* +X142100Y17008D01* +X142076Y16869D01* +X142049Y16731D01* +X142017Y16594D01* +X141982Y16458D01* +X141943Y16322D01* +X141900Y16188D01* +X141853Y16055D01* +X141803Y15924D01* +X141748Y15794D01* +X141691Y15665D01* +X141629Y15538D01* +X141564Y15413D01* +X141496Y15290D01* +X141424Y15169D01* +X141349Y15050D01* +X141270Y14933D01* +X141188Y14818D01* +X141103Y14706D01* +X141015Y14596D01* +X140924Y14489D01* +X140830Y14384D01* +X140733Y14282D01* +X140633Y14183D01* +X140530Y14086D01* +X140425Y13993D01* +X140317Y13902D01* +X140206Y13815D01* +X140093Y13731D01* +X139978Y13650D01* +X139861Y13572D01* +X139741Y13498D01* +X139619Y13427D01* +X139496Y13359D01* +X139370Y13295D01* +X139243Y13235D01* +X139114Y13178D01* +X138984Y13124D01* +X138852Y13075D01* +X138718Y13029D01* +X138584Y12987D01* +X138448Y12949D01* +X138312Y12914D01* +X138174Y12884D01* +X138036Y12857D01* +X137897Y12835D01* +X137757Y12816D01* +X137617Y12801D01* +X137477Y12790D01* +X137336Y12783D01* +X137195Y12780D01* +X137054Y12781D01* +X136914Y12786D01* +X136773Y12795D01* +X136633Y12808D01* +X136493Y12825D01* +X136353Y12845D01* +X136215Y12870D01* +X136077Y12899D01* +X135940Y12931D01* +X135804Y12967D01* +X135669Y13008D01* +X135535Y13052D01* +X135402Y13099D01* +X135271Y13151D01* +X135141Y13206D01* +X135013Y13264D01* +X134887Y13327D01* +X134762Y13392D01* +X134640Y13462D01* +X134519Y13534D01* +X134400Y13610D01* +X134284Y13690D01* +X134170Y13773D01* +X134058Y13858D01* +X133949Y13947D01* +X133842Y14039D01* +X133738Y14134D01* +X133637Y14232D01* +X133538Y14333D01* +X133443Y14436D01* +X133350Y14542D01* +X133260Y14651D01* +X133174Y14762D01* +X133090Y14875D01* +X133010Y14991D01* +X132933Y15109D01* +X132860Y15229D01* +X132789Y15352D01* +X132723Y15476D01* +X132660Y15602D01* +X132600Y15729D01* +X132544Y15858D01* +X132492Y15989D01* +X132443Y16121D01* +X132398Y16255D01* +X132357Y16390D01* +X132320Y16526D01* +X132286Y16662D01* +X132257Y16800D01* +X132231Y16939D01* +X132210Y17078D01* +X132192Y17218D01* +X132178Y17358D01* +X132168Y17498D01* +X132162Y17639D01* +X132160Y17780D01* +D13* +X507171Y107389D02* +X514669Y107389D01* +X514669Y100891D01* +X507171Y100891D01* +X507171Y107389D01* +X507171Y106149D02* +X514669Y106149D01* +X498669Y107389D02* +X491171Y107389D01* +X498669Y107389D02* +X498669Y100891D01* +X491171Y100891D01* +X491171Y107389D01* +X491171Y106149D02* +X498669Y106149D01* +D37* +X490605Y121876D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_solderpaste_bottom.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_solderpaste_bottom.gbr new file mode 100644 index 0000000000..c4e40b89b4 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_solderpaste_bottom.gbr @@ -0,0 +1,13 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSolderpaste Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* + + +M02* diff --git a/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_solderpaste_top.gbr b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_solderpaste_top.gbr new file mode 100644 index 0000000000..cd61487ec9 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-C/files/gerber/BAAAHS-BRN01-C_solderpaste_top.gbr @@ -0,0 +1,3089 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSolderpaste Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.192500*% +%ADD11C,0.350000*% +%ADD12C,0.241500*% +%ADD13C,0.420000*% +%ADD14C,0.320038*% +%ADD15C,0.490000*% +%ADD16R,3.164769X3.166009*% +%ADD17C,0.315000*% +%ADD18C,0.200000*% +%ADD19C,0.700000*% +%ADD20C,0.950000*% +%ADD21R,1.149913X1.149913*% +%ADD22R,1.149753X1.151819*% +%ADD23R,1.151400X1.151400*% +%ADD24R,1.151981X1.149731*% +%ADD25C,0.135000*% +%ADD26R,0.919741X0.919741*% +%ADD27R,0.919894X0.920691*% +%ADD28R,0.921600X0.921600*% +%ADD29R,0.920331X0.919950*% +%ADD30C,0.091000*% +%ADD31C,0.224000*% +%ADD32C,0.124459*% + + +D10* +X295142Y305722D02* +X295142Y309298D01* +X299218Y309298D01* +X299218Y305722D01* +X295142Y305722D01* +X295142Y307551D02* +X299218Y307551D01* +X295142Y298798D02* +X295142Y295222D01* +X295142Y298798D02* +X299218Y298798D01* +X299218Y295222D01* +X295142Y295222D01* +X295142Y297051D02* +X299218Y297051D01* +X345942Y194998D02* +X345942Y191422D01* +X345942Y194998D02* +X350018Y194998D01* +X350018Y191422D01* +X345942Y191422D01* +X345942Y193251D02* +X350018Y193251D01* +X345942Y184498D02* +X345942Y180922D01* +X345942Y184498D02* +X350018Y184498D01* +X350018Y180922D01* +X345942Y180922D01* +X345942Y182751D02* +X350018Y182751D01* +X499878Y246962D02* +X499878Y250538D01* +X499878Y246962D02* +X495802Y246962D01* +X495802Y250538D01* +X499878Y250538D01* +X499878Y248791D02* +X495802Y248791D01* +X499878Y257462D02* +X499878Y261038D01* +X499878Y257462D02* +X495802Y257462D01* +X495802Y261038D01* +X499878Y261038D01* +X499878Y259291D02* +X495802Y259291D01* +D11* +X579830Y66870D02* +X579830Y59370D01* +X573330Y59370D01* +X573330Y66870D01* +X579830Y66870D01* +X579830Y62695D02* +X573330Y62695D01* +X573330Y66020D02* +X579830Y66020D01* +X579830Y75370D02* +X579830Y82870D01* +X579830Y75370D02* +X573330Y75370D01* +X573330Y82870D01* +X579830Y82870D01* +X579830Y78695D02* +X573330Y78695D01* +X573330Y82020D02* +X579830Y82020D01* +X352350Y70170D02* +X352350Y62670D01* +X352350Y70170D02* +X358850Y70170D01* +X358850Y62670D01* +X352350Y62670D01* +X352350Y65995D02* +X358850Y65995D01* +X358850Y69320D02* +X352350Y69320D01* +X352350Y54170D02* +X352350Y46670D01* +X352350Y54170D02* +X358850Y54170D01* +X358850Y46670D01* +X352350Y46670D01* +X352350Y49995D02* +X358850Y49995D01* +X358850Y53320D02* +X352350Y53320D01* +D10* +X691382Y163482D02* +X691382Y167058D01* +X695458Y167058D01* +X695458Y163482D01* +X691382Y163482D01* +X691382Y165311D02* +X695458Y165311D01* +X691382Y156558D02* +X691382Y152982D01* +X691382Y156558D02* +X695458Y156558D01* +X695458Y152982D01* +X691382Y152982D01* +X691382Y154811D02* +X695458Y154811D01* +X995178Y272362D02* +X995178Y275938D01* +X995178Y272362D02* +X991102Y272362D01* +X991102Y275938D01* +X995178Y275938D01* +X995178Y274191D02* +X991102Y274191D01* +X995178Y282862D02* +X995178Y286438D01* +X995178Y282862D02* +X991102Y282862D01* +X991102Y286438D01* +X995178Y286438D01* +X995178Y284691D02* +X991102Y284691D01* +X865638Y156558D02* +X865638Y152982D01* +X861562Y152982D01* +X861562Y156558D01* +X865638Y156558D01* +X865638Y154811D02* +X861562Y154811D01* +X865638Y163482D02* +X865638Y167058D01* +X865638Y163482D02* +X861562Y163482D01* +X861562Y167058D01* +X865638Y167058D01* +X865638Y165311D02* +X861562Y165311D01* +D11* +X498510Y296470D02* +X498510Y302970D01* +X509010Y302970D01* +X509010Y296470D01* +X498510Y296470D01* +X498510Y299795D02* +X509010Y299795D01* +X476510Y293470D02* +X476510Y286970D01* +X476510Y293470D02* +X487010Y293470D01* +X487010Y286970D01* +X476510Y286970D01* +X476510Y290295D02* +X487010Y290295D01* +X476510Y305970D02* +X476510Y312470D01* +X487010Y312470D01* +X487010Y305970D01* +X476510Y305970D01* +X476510Y309295D02* +X487010Y309295D01* +X457870Y326950D02* +X457870Y333450D01* +X468370Y333450D01* +X468370Y326950D01* +X457870Y326950D01* +X457870Y330275D02* +X468370Y330275D01* +X435870Y323950D02* +X435870Y317450D01* +X435870Y323950D02* +X446370Y323950D01* +X446370Y317450D01* +X435870Y317450D01* +X435870Y320775D02* +X446370Y320775D01* +X435870Y336450D02* +X435870Y342950D01* +X446370Y342950D01* +X446370Y336450D01* +X435870Y336450D01* +X435870Y339775D02* +X446370Y339775D01* +D10* +X1029202Y98478D02* +X1029202Y94902D01* +X1029202Y98478D02* +X1033278Y98478D01* +X1033278Y94902D01* +X1029202Y94902D01* +X1029202Y96731D02* +X1033278Y96731D01* +X1029202Y87978D02* +X1029202Y84402D01* +X1029202Y87978D02* +X1033278Y87978D01* +X1033278Y84402D01* +X1029202Y84402D01* +X1029202Y86231D02* +X1033278Y86231D01* +X704082Y143162D02* +X704082Y146738D01* +X708158Y146738D01* +X708158Y143162D01* +X704082Y143162D01* +X704082Y144991D02* +X708158Y144991D01* +X704082Y136238D02* +X704082Y132662D01* +X704082Y136238D02* +X708158Y136238D01* +X708158Y132662D01* +X704082Y132662D01* +X704082Y134491D02* +X708158Y134491D01* +X1252802Y191002D02* +X1256378Y191002D01* +X1252802Y191002D02* +X1252802Y195078D01* +X1256378Y195078D01* +X1256378Y191002D01* +X1256378Y192831D02* +X1252802Y192831D01* +X1252802Y194660D02* +X1256378Y194660D01* +X1263302Y191002D02* +X1266878Y191002D01* +X1263302Y191002D02* +X1263302Y195078D01* +X1266878Y195078D01* +X1266878Y191002D01* +X1266878Y192831D02* +X1263302Y192831D01* +X1263302Y194660D02* +X1266878Y194660D01* +X1256378Y140202D02* +X1252802Y140202D01* +X1252802Y144278D01* +X1256378Y144278D01* +X1256378Y140202D01* +X1256378Y142031D02* +X1252802Y142031D01* +X1252802Y143860D02* +X1256378Y143860D01* +X1263302Y140202D02* +X1266878Y140202D01* +X1263302Y140202D02* +X1263302Y144278D01* +X1266878Y144278D01* +X1266878Y140202D01* +X1266878Y142031D02* +X1263302Y142031D01* +X1263302Y143860D02* +X1266878Y143860D01* +X1256378Y127502D02* +X1252802Y127502D01* +X1252802Y131578D01* +X1256378Y131578D01* +X1256378Y127502D01* +X1256378Y129331D02* +X1252802Y129331D01* +X1252802Y131160D02* +X1256378Y131160D01* +X1263302Y127502D02* +X1266878Y127502D01* +X1263302Y127502D02* +X1263302Y131578D01* +X1266878Y131578D01* +X1266878Y127502D01* +X1266878Y129331D02* +X1263302Y129331D01* +X1263302Y131160D02* +X1266878Y131160D01* +X676142Y163482D02* +X676142Y167058D01* +X680218Y167058D01* +X680218Y163482D01* +X676142Y163482D01* +X676142Y165311D02* +X680218Y165311D01* +X676142Y156558D02* +X676142Y152982D01* +X676142Y156558D02* +X680218Y156558D01* +X680218Y152982D01* +X676142Y152982D01* +X676142Y154811D02* +X680218Y154811D01* +X1007878Y272362D02* +X1007878Y275938D01* +X1007878Y272362D02* +X1003802Y272362D01* +X1003802Y275938D01* +X1007878Y275938D01* +X1007878Y274191D02* +X1003802Y274191D01* +X1007878Y282862D02* +X1007878Y286438D01* +X1007878Y282862D02* +X1003802Y282862D01* +X1003802Y286438D01* +X1007878Y286438D01* +X1007878Y284691D02* +X1003802Y284691D01* +X874262Y167058D02* +X874262Y163482D01* +X874262Y167058D02* +X878338Y167058D01* +X878338Y163482D01* +X874262Y163482D01* +X874262Y165311D02* +X878338Y165311D01* +X874262Y156558D02* +X874262Y152982D01* +X874262Y156558D02* +X878338Y156558D01* +X878338Y152982D01* +X874262Y152982D01* +X874262Y154811D02* +X878338Y154811D01* +X1200918Y100678D02* +X1200918Y97102D01* +X1196842Y97102D01* +X1196842Y100678D01* +X1200918Y100678D01* +X1200918Y98931D02* +X1196842Y98931D01* +X1200918Y107602D02* +X1200918Y111178D01* +X1200918Y107602D02* +X1196842Y107602D01* +X1196842Y111178D01* +X1200918Y111178D01* +X1200918Y109431D02* +X1196842Y109431D01* +X968242Y130462D02* +X968242Y134038D01* +X972318Y134038D01* +X972318Y130462D01* +X968242Y130462D01* +X968242Y132291D02* +X972318Y132291D01* +X968242Y123538D02* +X968242Y119962D01* +X968242Y123538D02* +X972318Y123538D01* +X972318Y119962D01* +X968242Y119962D01* +X968242Y121791D02* +X972318Y121791D01* +X976282Y256038D02* +X979858Y256038D01* +X979858Y251962D01* +X976282Y251962D01* +X976282Y256038D01* +X976282Y253791D02* +X979858Y253791D01* +X979858Y255620D02* +X976282Y255620D01* +X969358Y256038D02* +X965782Y256038D01* +X969358Y256038D02* +X969358Y251962D01* +X965782Y251962D01* +X965782Y256038D01* +X965782Y253791D02* +X969358Y253791D01* +X969358Y255620D02* +X965782Y255620D01* +X1043438Y87978D02* +X1043438Y84402D01* +X1039362Y84402D01* +X1039362Y87978D01* +X1043438Y87978D01* +X1043438Y86231D02* +X1039362Y86231D01* +X1043438Y94902D02* +X1043438Y98478D01* +X1043438Y94902D02* +X1039362Y94902D01* +X1039362Y98478D01* +X1043438Y98478D01* +X1043438Y96731D02* +X1039362Y96731D01* +X441378Y212858D02* +X437802Y212858D01* +X441378Y212858D02* +X441378Y208782D01* +X437802Y208782D01* +X437802Y212858D01* +X437802Y210611D02* +X441378Y210611D01* +X441378Y212440D02* +X437802Y212440D01* +X430878Y212858D02* +X427302Y212858D01* +X430878Y212858D02* +X430878Y208782D01* +X427302Y208782D01* +X427302Y212858D01* +X427302Y210611D02* +X430878Y210611D01* +X430878Y212440D02* +X427302Y212440D01* +X437802Y177298D02* +X441378Y177298D01* +X441378Y173222D01* +X437802Y173222D01* +X437802Y177298D01* +X437802Y175051D02* +X441378Y175051D01* +X441378Y176880D02* +X437802Y176880D01* +X430878Y177298D02* +X427302Y177298D01* +X430878Y177298D02* +X430878Y173222D01* +X427302Y173222D01* +X427302Y177298D01* +X427302Y175051D02* +X430878Y175051D01* +X430878Y176880D02* +X427302Y176880D01* +X430182Y187458D02* +X433758Y187458D01* +X433758Y183382D01* +X430182Y183382D01* +X430182Y187458D01* +X430182Y185211D02* +X433758Y185211D01* +X433758Y187040D02* +X430182Y187040D01* +X423258Y187458D02* +X419682Y187458D01* +X423258Y187458D02* +X423258Y183382D01* +X419682Y183382D01* +X419682Y187458D01* +X419682Y185211D02* +X423258Y185211D01* +X423258Y187040D02* +X419682Y187040D01* +X430182Y202698D02* +X433758Y202698D01* +X433758Y198622D01* +X430182Y198622D01* +X430182Y202698D01* +X430182Y200451D02* +X433758Y200451D01* +X433758Y202280D02* +X430182Y202280D01* +X423258Y202698D02* +X419682Y202698D01* +X423258Y202698D02* +X423258Y198622D01* +X419682Y198622D01* +X419682Y202698D01* +X419682Y200451D02* +X423258Y200451D01* +X423258Y202280D02* +X419682Y202280D01* +X526362Y201162D02* +X529938Y201162D01* +X526362Y201162D02* +X526362Y205238D01* +X529938Y205238D01* +X529938Y201162D01* +X529938Y202991D02* +X526362Y202991D01* +X526362Y204820D02* +X529938Y204820D01* +X536862Y201162D02* +X540438Y201162D01* +X536862Y201162D02* +X536862Y205238D01* +X540438Y205238D01* +X540438Y201162D01* +X540438Y202991D02* +X536862Y202991D01* +X536862Y204820D02* +X540438Y204820D01* +X554302Y152902D02* +X557878Y152902D01* +X554302Y152902D02* +X554302Y156978D01* +X557878Y156978D01* +X557878Y152902D01* +X557878Y154731D02* +X554302Y154731D01* +X554302Y156560D02* +X557878Y156560D01* +X564802Y152902D02* +X568378Y152902D01* +X564802Y152902D02* +X564802Y156978D01* +X568378Y156978D01* +X568378Y152902D01* +X568378Y154731D02* +X564802Y154731D01* +X564802Y156560D02* +X568378Y156560D01* +X568458Y178382D02* +X568458Y181958D01* +X568458Y178382D02* +X564382Y178382D01* +X564382Y181958D01* +X568458Y181958D01* +X568458Y180211D02* +X564382Y180211D01* +X568458Y188882D02* +X568458Y192458D01* +X568458Y188882D02* +X564382Y188882D01* +X564382Y192458D01* +X568458Y192458D01* +X568458Y190711D02* +X564382Y190711D01* +X529938Y226562D02* +X526362Y226562D01* +X526362Y230638D01* +X529938Y230638D01* +X529938Y226562D01* +X529938Y228391D02* +X526362Y228391D01* +X526362Y230220D02* +X529938Y230220D01* +X536862Y226562D02* +X540438Y226562D01* +X536862Y226562D02* +X536862Y230638D01* +X540438Y230638D01* +X540438Y226562D01* +X540438Y228391D02* +X536862Y228391D01* +X536862Y230220D02* +X540438Y230220D01* +X461778Y169258D02* +X461778Y165682D01* +X457702Y165682D01* +X457702Y169258D01* +X461778Y169258D01* +X461778Y167511D02* +X457702Y167511D01* +X461778Y176182D02* +X461778Y179758D01* +X461778Y176182D02* +X457702Y176182D01* +X457702Y179758D01* +X461778Y179758D01* +X461778Y178011D02* +X457702Y178011D01* +X441378Y141738D02* +X437802Y141738D01* +X441378Y141738D02* +X441378Y137662D01* +X437802Y137662D01* +X437802Y141738D01* +X437802Y139491D02* +X441378Y139491D01* +X441378Y141320D02* +X437802Y141320D01* +X430878Y141738D02* +X427302Y141738D01* +X430878Y141738D02* +X430878Y137662D01* +X427302Y137662D01* +X427302Y141738D01* +X427302Y139491D02* +X430878Y139491D01* +X430878Y141320D02* +X427302Y141320D01* +X439922Y305722D02* +X439922Y309298D01* +X443998Y309298D01* +X443998Y305722D01* +X439922Y305722D01* +X439922Y307551D02* +X443998Y307551D01* +X439922Y298798D02* +X439922Y295222D01* +X439922Y298798D02* +X443998Y298798D01* +X443998Y295222D01* +X439922Y295222D01* +X439922Y297051D02* +X443998Y297051D01* +X441378Y129038D02* +X437802Y129038D01* +X441378Y129038D02* +X441378Y124962D01* +X437802Y124962D01* +X437802Y129038D01* +X437802Y126791D02* +X441378Y126791D01* +X441378Y128620D02* +X437802Y128620D01* +X430878Y129038D02* +X427302Y129038D01* +X430878Y129038D02* +X430878Y124962D01* +X427302Y124962D01* +X427302Y129038D01* +X427302Y126791D02* +X430878Y126791D01* +X430878Y128620D02* +X427302Y128620D01* +X549562Y192538D02* +X553138Y192538D01* +X553138Y188462D01* +X549562Y188462D01* +X549562Y192538D01* +X549562Y190291D02* +X553138Y190291D01* +X553138Y192120D02* +X549562Y192120D01* +X542638Y192538D02* +X539062Y192538D01* +X542638Y192538D02* +X542638Y188462D01* +X539062Y188462D01* +X539062Y192538D01* +X539062Y190291D02* +X542638Y190291D01* +X542638Y192120D02* +X539062Y192120D01* +X529938Y213862D02* +X526362Y213862D01* +X526362Y217938D01* +X529938Y217938D01* +X529938Y213862D01* +X529938Y215691D02* +X526362Y215691D01* +X526362Y217520D02* +X529938Y217520D01* +X536862Y213862D02* +X540438Y213862D01* +X536862Y213862D02* +X536862Y217938D01* +X540438Y217938D01* +X540438Y213862D01* +X540438Y215691D02* +X536862Y215691D01* +X536862Y217520D02* +X540438Y217520D01* +X541522Y156898D02* +X541522Y153322D01* +X541522Y156898D02* +X545598Y156898D01* +X545598Y153322D01* +X541522Y153322D01* +X541522Y155151D02* +X545598Y155151D01* +X541522Y146398D02* +X541522Y142822D01* +X541522Y146398D02* +X545598Y146398D01* +X545598Y142822D01* +X541522Y142822D01* +X541522Y144651D02* +X545598Y144651D01* +X564802Y172218D02* +X568378Y172218D01* +X568378Y168142D01* +X564802Y168142D01* +X564802Y172218D01* +X564802Y169971D02* +X568378Y169971D01* +X568378Y171800D02* +X564802Y171800D01* +X557878Y172218D02* +X554302Y172218D01* +X557878Y172218D02* +X557878Y168142D01* +X554302Y168142D01* +X554302Y172218D01* +X554302Y169971D02* +X557878Y169971D01* +X557878Y171800D02* +X554302Y171800D01* +X487178Y246962D02* +X487178Y250538D01* +X487178Y246962D02* +X483102Y246962D01* +X483102Y250538D01* +X487178Y250538D01* +X487178Y248791D02* +X483102Y248791D01* +X487178Y257462D02* +X487178Y261038D01* +X487178Y257462D02* +X483102Y257462D01* +X483102Y261038D01* +X487178Y261038D01* +X487178Y259291D02* +X483102Y259291D01* +X754962Y86862D02* +X758538Y86862D01* +X754962Y86862D02* +X754962Y90938D01* +X758538Y90938D01* +X758538Y86862D01* +X758538Y88691D02* +X754962Y88691D01* +X754962Y90520D02* +X758538Y90520D01* +X765462Y86862D02* +X769038Y86862D01* +X765462Y86862D02* +X765462Y90938D01* +X769038Y90938D01* +X769038Y86862D01* +X769038Y88691D02* +X765462Y88691D01* +X765462Y90520D02* +X769038Y90520D01* +X464318Y295222D02* +X464318Y298798D01* +X464318Y295222D02* +X460242Y295222D01* +X460242Y298798D01* +X464318Y298798D01* +X464318Y297051D02* +X460242Y297051D01* +X464318Y305722D02* +X464318Y309298D01* +X464318Y305722D02* +X460242Y305722D01* +X460242Y309298D01* +X464318Y309298D01* +X464318Y307551D02* +X460242Y307551D01* +X404362Y309298D02* +X404362Y305722D01* +X404362Y309298D02* +X408438Y309298D01* +X408438Y305722D01* +X404362Y305722D01* +X404362Y307551D02* +X408438Y307551D01* +X404362Y298798D02* +X404362Y295222D01* +X404362Y298798D02* +X408438Y298798D01* +X408438Y295222D01* +X404362Y295222D01* +X404362Y297051D02* +X408438Y297051D01* +X395738Y298798D02* +X395738Y295222D01* +X391662Y295222D01* +X391662Y298798D01* +X395738Y298798D01* +X395738Y297051D02* +X391662Y297051D01* +X395738Y305722D02* +X395738Y309298D01* +X395738Y305722D02* +X391662Y305722D01* +X391662Y309298D01* +X395738Y309298D01* +X395738Y307551D02* +X391662Y307551D01* +X1213618Y100678D02* +X1213618Y97102D01* +X1209542Y97102D01* +X1209542Y100678D01* +X1213618Y100678D01* +X1213618Y98931D02* +X1209542Y98931D01* +X1213618Y107602D02* +X1213618Y111178D01* +X1213618Y107602D02* +X1209542Y107602D01* +X1209542Y111178D01* +X1213618Y111178D01* +X1213618Y109431D02* +X1209542Y109431D01* +X751258Y162058D02* +X747682Y162058D01* +X751258Y162058D02* +X751258Y157982D01* +X747682Y157982D01* +X747682Y162058D01* +X747682Y159811D02* +X751258Y159811D01* +X751258Y161640D02* +X747682Y161640D01* +X740758Y162058D02* +X737182Y162058D01* +X740758Y162058D02* +X740758Y157982D01* +X737182Y157982D01* +X737182Y162058D01* +X737182Y159811D02* +X740758Y159811D01* +X740758Y161640D02* +X737182Y161640D01* +X715358Y157982D02* +X711782Y157982D01* +X711782Y162058D01* +X715358Y162058D01* +X715358Y157982D01* +X715358Y159811D02* +X711782Y159811D01* +X711782Y161640D02* +X715358Y161640D01* +X722282Y157982D02* +X725858Y157982D01* +X722282Y157982D02* +X722282Y162058D01* +X725858Y162058D01* +X725858Y157982D01* +X725858Y159811D02* +X722282Y159811D01* +X722282Y161640D02* +X725858Y161640D01* +D11* +X456250Y262330D02* +X448750Y262330D01* +X456250Y262330D02* +X456250Y255830D01* +X448750Y255830D01* +X448750Y262330D01* +X448750Y259155D02* +X456250Y259155D01* +X440250Y262330D02* +X432750Y262330D01* +X440250Y262330D02* +X440250Y255830D01* +X432750Y255830D01* +X432750Y262330D01* +X432750Y259155D02* +X440250Y259155D01* +X440250Y225350D02* +X432750Y225350D01* +X432750Y231850D01* +X440250Y231850D01* +X440250Y225350D01* +X440250Y228675D02* +X432750Y228675D01* +X448750Y225350D02* +X456250Y225350D01* +X448750Y225350D02* +X448750Y231850D01* +X456250Y231850D01* +X456250Y225350D01* +X456250Y228675D02* +X448750Y228675D01* +D10* +X1035818Y166718D02* +X1035818Y163142D01* +X1031742Y163142D01* +X1031742Y166718D01* +X1035818Y166718D01* +X1035818Y164971D02* +X1031742Y164971D01* +X1035818Y173642D02* +X1035818Y177218D01* +X1035818Y173642D02* +X1031742Y173642D01* +X1031742Y177218D01* +X1035818Y177218D01* +X1035818Y175471D02* +X1031742Y175471D01* +X464318Y206322D02* +X464318Y209898D01* +X464318Y206322D02* +X460242Y206322D01* +X460242Y209898D01* +X464318Y209898D01* +X464318Y208151D02* +X460242Y208151D01* +X464318Y216822D02* +X464318Y220398D01* +X464318Y216822D02* +X460242Y216822D01* +X460242Y220398D01* +X464318Y220398D01* +X464318Y218651D02* +X460242Y218651D01* +X470402Y159438D02* +X470402Y155862D01* +X470402Y159438D02* +X474478Y159438D01* +X474478Y155862D01* +X470402Y155862D01* +X470402Y157691D02* +X474478Y157691D01* +X470402Y148938D02* +X470402Y145362D01* +X470402Y148938D02* +X474478Y148938D01* +X474478Y145362D01* +X470402Y145362D01* +X470402Y147191D02* +X474478Y147191D01* +D11* +X524950Y137870D02* +X532450Y137870D01* +X532450Y131370D01* +X524950Y131370D01* +X524950Y137870D01* +X524950Y134695D02* +X532450Y134695D01* +X516450Y137870D02* +X508950Y137870D01* +X516450Y137870D02* +X516450Y131370D01* +X508950Y131370D01* +X508950Y137870D01* +X508950Y134695D02* +X516450Y134695D01* +X1024330Y282890D02* +X1024330Y290390D01* +X1024330Y282890D02* +X1017830Y282890D01* +X1017830Y290390D01* +X1024330Y290390D01* +X1024330Y286215D02* +X1017830Y286215D01* +X1017830Y289540D02* +X1024330Y289540D01* +X1024330Y298890D02* +X1024330Y306390D01* +X1024330Y298890D02* +X1017830Y298890D01* +X1017830Y306390D01* +X1024330Y306390D01* +X1024330Y302215D02* +X1017830Y302215D01* +X1017830Y305540D02* +X1024330Y305540D01* +D10* +X1035818Y293718D02* +X1035818Y290142D01* +X1031742Y290142D01* +X1031742Y293718D01* +X1035818Y293718D01* +X1035818Y291971D02* +X1031742Y291971D01* +X1035818Y300642D02* +X1035818Y304218D01* +X1035818Y300642D02* +X1031742Y300642D01* +X1031742Y304218D01* +X1035818Y304218D01* +X1035818Y302471D02* +X1031742Y302471D01* +D11* +X1012750Y70170D02* +X1012750Y62670D01* +X1012750Y70170D02* +X1019250Y70170D01* +X1019250Y62670D01* +X1012750Y62670D01* +X1012750Y65995D02* +X1019250Y65995D01* +X1019250Y69320D02* +X1012750Y69320D01* +X1012750Y54170D02* +X1012750Y46670D01* +X1012750Y54170D02* +X1019250Y54170D01* +X1019250Y46670D01* +X1012750Y46670D01* +X1012750Y49995D02* +X1019250Y49995D01* +X1019250Y53320D02* +X1012750Y53320D01* +X687630Y88070D02* +X687630Y95570D01* +X694130Y95570D01* +X694130Y88070D01* +X687630Y88070D01* +X687630Y91395D02* +X694130Y91395D01* +X694130Y94720D02* +X687630Y94720D01* +X687630Y79570D02* +X687630Y72070D01* +X687630Y79570D02* +X694130Y79570D01* +X694130Y72070D01* +X687630Y72070D01* +X687630Y75395D02* +X694130Y75395D01* +X694130Y78720D02* +X687630Y78720D01* +D10* +X1049522Y94902D02* +X1049522Y98478D01* +X1053598Y98478D01* +X1053598Y94902D01* +X1049522Y94902D01* +X1049522Y96731D02* +X1053598Y96731D01* +X1049522Y87978D02* +X1049522Y84402D01* +X1049522Y87978D02* +X1053598Y87978D01* +X1053598Y84402D01* +X1049522Y84402D01* +X1049522Y86231D02* +X1053598Y86231D01* +X511042Y155862D02* +X511042Y159438D01* +X515118Y159438D01* +X515118Y155862D01* +X511042Y155862D01* +X511042Y157691D02* +X515118Y157691D01* +X511042Y148938D02* +X511042Y145362D01* +X511042Y148938D02* +X515118Y148938D01* +X515118Y145362D01* +X511042Y145362D01* +X511042Y147191D02* +X515118Y147191D01* +X523742Y155862D02* +X523742Y159438D01* +X527818Y159438D01* +X527818Y155862D01* +X523742Y155862D01* +X523742Y157691D02* +X527818Y157691D01* +X523742Y148938D02* +X523742Y145362D01* +X523742Y148938D02* +X527818Y148938D01* +X527818Y145362D01* +X523742Y145362D01* +X523742Y147191D02* +X527818Y147191D01* +X262122Y305722D02* +X262122Y309298D01* +X266198Y309298D01* +X266198Y305722D01* +X262122Y305722D01* +X262122Y307551D02* +X266198Y307551D01* +X262122Y298798D02* +X262122Y295222D01* +X262122Y298798D02* +X266198Y298798D01* +X266198Y295222D01* +X262122Y295222D01* +X262122Y297051D02* +X266198Y297051D01* +X274822Y305722D02* +X274822Y309298D01* +X278898Y309298D01* +X278898Y305722D01* +X274822Y305722D01* +X274822Y307551D02* +X278898Y307551D01* +X274822Y298798D02* +X274822Y295222D01* +X274822Y298798D02* +X278898Y298798D01* +X278898Y295222D01* +X274822Y295222D01* +X274822Y297051D02* +X278898Y297051D01* +X307842Y305722D02* +X307842Y309298D01* +X311918Y309298D01* +X311918Y305722D01* +X307842Y305722D01* +X307842Y307551D02* +X311918Y307551D01* +X307842Y298798D02* +X307842Y295222D01* +X307842Y298798D02* +X311918Y298798D01* +X311918Y295222D01* +X307842Y295222D01* +X307842Y297051D02* +X311918Y297051D01* +D11* +X516290Y64210D02* +X516290Y57710D01* +X516290Y64210D02* +X526790Y64210D01* +X526790Y57710D01* +X516290Y57710D01* +X516290Y61035D02* +X526790Y61035D01* +X494290Y54710D02* +X494290Y48210D01* +X494290Y54710D02* +X504790Y54710D01* +X504790Y48210D01* +X494290Y48210D01* +X494290Y51535D02* +X504790Y51535D01* +X494290Y67210D02* +X494290Y73710D01* +X504790Y73710D01* +X504790Y67210D01* +X494290Y67210D01* +X494290Y70535D02* +X504790Y70535D01* +D10* +X182378Y340942D02* +X182378Y344518D01* +X182378Y340942D02* +X178302Y340942D01* +X178302Y344518D01* +X182378Y344518D01* +X182378Y342771D02* +X178302Y342771D01* +X182378Y351442D02* +X182378Y355018D01* +X182378Y351442D02* +X178302Y351442D01* +X178302Y355018D01* +X182378Y355018D01* +X182378Y353271D02* +X178302Y353271D01* +D11* +X448750Y247090D02* +X456250Y247090D01* +X456250Y240590D01* +X448750Y240590D01* +X448750Y247090D01* +X448750Y243915D02* +X456250Y243915D01* +X440250Y247090D02* +X432750Y247090D01* +X440250Y247090D02* +X440250Y240590D01* +X432750Y240590D01* +X432750Y247090D01* +X432750Y243915D02* +X440250Y243915D01* +D12* +X611777Y105693D02* +X611777Y98107D01* +X611777Y105693D02* +X616263Y105693D01* +X616263Y98107D01* +X611777Y98107D01* +X611777Y100401D02* +X616263Y100401D01* +X616263Y102695D02* +X611777Y102695D01* +X611777Y104989D02* +X616263Y104989D01* +X602277Y105693D02* +X602277Y98107D01* +X602277Y105693D02* +X606763Y105693D01* +X606763Y98107D01* +X602277Y98107D01* +X602277Y100401D02* +X606763Y100401D01* +X606763Y102695D02* +X602277Y102695D01* +X602277Y104989D02* +X606763Y104989D01* +X592777Y105693D02* +X592777Y98107D01* +X592777Y105693D02* +X597263Y105693D01* +X597263Y98107D01* +X592777Y98107D01* +X592777Y100401D02* +X597263Y100401D01* +X597263Y102695D02* +X592777Y102695D01* +X592777Y104989D02* +X597263Y104989D01* +X592777Y79693D02* +X592777Y72107D01* +X592777Y79693D02* +X597263Y79693D01* +X597263Y72107D01* +X592777Y72107D01* +X592777Y74401D02* +X597263Y74401D01* +X597263Y76695D02* +X592777Y76695D01* +X592777Y78989D02* +X597263Y78989D01* +X602277Y79693D02* +X602277Y72107D01* +X602277Y79693D02* +X606763Y79693D01* +X606763Y72107D01* +X602277Y72107D01* +X602277Y74401D02* +X606763Y74401D01* +X606763Y76695D02* +X602277Y76695D01* +X602277Y78989D02* +X606763Y78989D01* +X611777Y79693D02* +X611777Y72107D01* +X611777Y79693D02* +X616263Y79693D01* +X616263Y72107D01* +X611777Y72107D01* +X611777Y74401D02* +X616263Y74401D01* +X616263Y76695D02* +X611777Y76695D01* +X611777Y78989D02* +X616263Y78989D01* +D13* +X639960Y77580D02* +X647760Y77580D01* +X639960Y77580D02* +X639960Y110380D01* +X647760Y110380D01* +X647760Y77580D01* +X647760Y81570D02* +X639960Y81570D01* +X639960Y85560D02* +X647760Y85560D01* +X647760Y89550D02* +X639960Y89550D01* +X639960Y93540D02* +X647760Y93540D01* +X647760Y97530D02* +X639960Y97530D01* +X639960Y101520D02* +X647760Y101520D01* +X647760Y105510D02* +X639960Y105510D01* +X639960Y109500D02* +X647760Y109500D01* +X667960Y77580D02* +X675760Y77580D01* +X667960Y77580D02* +X667960Y110380D01* +X675760Y110380D01* +X675760Y77580D01* +X675760Y81570D02* +X667960Y81570D01* +X667960Y85560D02* +X675760Y85560D01* +X675760Y89550D02* +X667960Y89550D01* +X667960Y93540D02* +X675760Y93540D01* +X675760Y97530D02* +X667960Y97530D01* +X667960Y101520D02* +X675760Y101520D01* +X675760Y105510D02* +X667960Y105510D01* +X667960Y109500D02* +X675760Y109500D01* +D10* +X606478Y65538D02* +X602902Y65538D01* +X606478Y65538D02* +X606478Y61462D01* +X602902Y61462D01* +X602902Y65538D01* +X602902Y63291D02* +X606478Y63291D01* +X606478Y65120D02* +X602902Y65120D01* +X595978Y65538D02* +X592402Y65538D01* +X595978Y65538D02* +X595978Y61462D01* +X592402Y61462D01* +X592402Y65538D01* +X592402Y63291D02* +X595978Y63291D01* +X595978Y65120D02* +X592402Y65120D01* +X627882Y107602D02* +X627882Y111178D01* +X631958Y111178D01* +X631958Y107602D01* +X627882Y107602D01* +X627882Y109431D02* +X631958Y109431D01* +X627882Y100678D02* +X627882Y97102D01* +X627882Y100678D02* +X631958Y100678D01* +X631958Y97102D01* +X627882Y97102D01* +X627882Y98931D02* +X631958Y98931D01* +X613758Y114802D02* +X610182Y114802D01* +X610182Y118878D01* +X613758Y118878D01* +X613758Y114802D01* +X613758Y116631D02* +X610182Y116631D01* +X610182Y118460D02* +X613758Y118460D01* +X620682Y114802D02* +X624258Y114802D01* +X620682Y114802D02* +X620682Y118878D01* +X624258Y118878D01* +X624258Y114802D01* +X624258Y116631D02* +X620682Y116631D01* +X620682Y118460D02* +X624258Y118460D01* +X588358Y114802D02* +X584782Y114802D01* +X584782Y118878D01* +X588358Y118878D01* +X588358Y114802D01* +X588358Y116631D02* +X584782Y116631D01* +X584782Y118460D02* +X588358Y118460D01* +X595282Y114802D02* +X598858Y114802D01* +X595282Y114802D02* +X595282Y118878D01* +X598858Y118878D01* +X598858Y114802D01* +X598858Y116631D02* +X595282Y116631D01* +X595282Y118460D02* +X598858Y118460D01* +D14* +X639369Y62916D02* +X639369Y53924D01* +X633425Y53924D01* +X633425Y62916D01* +X639369Y62916D01* +X639369Y56964D02* +X633425Y56964D01* +X633425Y60004D02* +X639369Y60004D01* +X672135Y62916D02* +X672135Y53924D01* +X666191Y53924D01* +X666191Y62916D01* +X672135Y62916D01* +X672135Y56964D02* +X666191Y56964D01* +X666191Y60004D02* +X672135Y60004D01* +D10* +X550258Y114802D02* +X546682Y114802D01* +X546682Y118878D01* +X550258Y118878D01* +X550258Y114802D01* +X550258Y116631D02* +X546682Y116631D01* +X546682Y118460D02* +X550258Y118460D01* +X557182Y114802D02* +X560758Y114802D01* +X557182Y114802D02* +X557182Y118878D01* +X560758Y118878D01* +X560758Y114802D01* +X560758Y116631D02* +X557182Y116631D01* +X557182Y118460D02* +X560758Y118460D01* +D11* +X559470Y94690D02* +X559470Y88190D01* +X559470Y94690D02* +X569970Y94690D01* +X569970Y88190D01* +X559470Y88190D01* +X559470Y91515D02* +X569970Y91515D01* +X537470Y85190D02* +X537470Y78690D01* +X537470Y85190D02* +X547970Y85190D01* +X547970Y78690D01* +X537470Y78690D01* +X537470Y82015D02* +X547970Y82015D01* +X537470Y97690D02* +X537470Y104190D01* +X547970Y104190D01* +X547970Y97690D01* +X537470Y97690D01* +X537470Y101015D02* +X547970Y101015D01* +X546930Y60250D02* +X539430Y60250D01* +X539430Y66750D01* +X546930Y66750D01* +X546930Y60250D01* +X546930Y63575D02* +X539430Y63575D01* +X555430Y60250D02* +X562930Y60250D01* +X555430Y60250D02* +X555430Y66750D01* +X562930Y66750D01* +X562930Y60250D01* +X562930Y63575D02* +X555430Y63575D01* +D15* +X581450Y132470D02* +X597550Y132470D01* +X581450Y132470D02* +X581450Y141570D01* +X597550Y141570D01* +X597550Y132470D01* +X597550Y137125D02* +X581450Y137125D01* +X581450Y178470D02* +X597550Y178470D01* +X581450Y178470D02* +X581450Y187570D01* +X597550Y187570D01* +X597550Y178470D01* +X597550Y183125D02* +X581450Y183125D01* +X672450Y178470D02* +X688550Y178470D01* +X672450Y178470D02* +X672450Y187570D01* +X688550Y187570D01* +X688550Y178470D01* +X688550Y183125D02* +X672450Y183125D01* +X672450Y132470D02* +X688550Y132470D01* +X672450Y132470D02* +X672450Y141570D01* +X688550Y141570D01* +X688550Y132470D01* +X688550Y137125D02* +X672450Y137125D01* +X941950Y197910D02* +X941950Y214010D01* +X941950Y197910D02* +X932850Y197910D01* +X932850Y214010D01* +X941950Y214010D01* +X941950Y202565D02* +X932850Y202565D01* +X932850Y207220D02* +X941950Y207220D01* +X941950Y211875D02* +X932850Y211875D01* +X895950Y214010D02* +X895950Y197910D01* +X886850Y197910D01* +X886850Y214010D01* +X895950Y214010D01* +X895950Y202565D02* +X886850Y202565D01* +X886850Y207220D02* +X895950Y207220D01* +X895950Y211875D02* +X886850Y211875D01* +X895950Y288910D02* +X895950Y305010D01* +X895950Y288910D02* +X886850Y288910D01* +X886850Y305010D01* +X895950Y305010D01* +X895950Y293565D02* +X886850Y293565D01* +X886850Y298220D02* +X895950Y298220D01* +X895950Y302875D02* +X886850Y302875D01* +X941950Y305010D02* +X941950Y288910D01* +X932850Y288910D01* +X932850Y305010D01* +X941950Y305010D01* +X941950Y293565D02* +X932850Y293565D01* +X932850Y298220D02* +X941950Y298220D01* +X941950Y302875D02* +X932850Y302875D01* +X782970Y132470D02* +X766870Y132470D01* +X766870Y141570D01* +X782970Y141570D01* +X782970Y132470D01* +X782970Y137125D02* +X766870Y137125D01* +X766870Y178470D02* +X782970Y178470D01* +X766870Y178470D02* +X766870Y187570D01* +X782970Y187570D01* +X782970Y178470D01* +X782970Y183125D02* +X766870Y183125D01* +X857870Y178470D02* +X873970Y178470D01* +X857870Y178470D02* +X857870Y187570D01* +X873970Y187570D01* +X873970Y178470D01* +X873970Y183125D02* +X857870Y183125D01* +X857870Y132470D02* +X873970Y132470D01* +X857870Y132470D02* +X857870Y141570D01* +X873970Y141570D01* +X873970Y132470D01* +X873970Y137125D02* +X857870Y137125D01* +D10* +X537558Y178302D02* +X533982Y178302D01* +X533982Y182378D01* +X537558Y182378D01* +X537558Y178302D01* +X537558Y180131D02* +X533982Y180131D01* +X533982Y181960D02* +X537558Y181960D01* +X544482Y178302D02* +X548058Y178302D01* +X544482Y178302D02* +X544482Y182378D01* +X548058Y182378D01* +X548058Y178302D01* +X548058Y180131D02* +X544482Y180131D01* +X544482Y181960D02* +X548058Y181960D01* +X508502Y257462D02* +X508502Y261038D01* +X512578Y261038D01* +X512578Y257462D01* +X508502Y257462D01* +X508502Y259291D02* +X512578Y259291D01* +X508502Y250538D02* +X508502Y246962D01* +X508502Y250538D02* +X512578Y250538D01* +X512578Y246962D01* +X508502Y246962D01* +X508502Y248791D02* +X512578Y248791D01* +X861642Y53842D02* +X865218Y53842D01* +X861642Y53842D02* +X861642Y57918D01* +X865218Y57918D01* +X865218Y53842D01* +X865218Y55671D02* +X861642Y55671D01* +X861642Y57500D02* +X865218Y57500D01* +X872142Y53842D02* +X875718Y53842D01* +X872142Y53842D02* +X872142Y57918D01* +X875718Y57918D01* +X875718Y53842D01* +X875718Y55671D02* +X872142Y55671D01* +X872142Y57500D02* +X875718Y57500D01* +D16* +X1127907Y229041D03* +D17* +X1061345Y301135D02* +X1044495Y301135D01* +X1044495Y306985D01* +X1061345Y306985D01* +X1061345Y301135D01* +X1061345Y304127D02* +X1044495Y304127D01* +X1044495Y288435D02* +X1061345Y288435D01* +X1044495Y288435D02* +X1044495Y294285D01* +X1061345Y294285D01* +X1061345Y288435D01* +X1061345Y291427D02* +X1044495Y291427D01* +X1044495Y275735D02* +X1061345Y275735D01* +X1044495Y275735D02* +X1044495Y281585D01* +X1061345Y281585D01* +X1061345Y275735D01* +X1061345Y278727D02* +X1044495Y278727D01* +X1044495Y263035D02* +X1061345Y263035D01* +X1044495Y263035D02* +X1044495Y268885D01* +X1061345Y268885D01* +X1061345Y263035D01* +X1061345Y266027D02* +X1044495Y266027D01* +X1044495Y250335D02* +X1061345Y250335D01* +X1044495Y250335D02* +X1044495Y256185D01* +X1061345Y256185D01* +X1061345Y250335D01* +X1061345Y253327D02* +X1044495Y253327D01* +X1044495Y237635D02* +X1061345Y237635D01* +X1044495Y237635D02* +X1044495Y243485D01* +X1061345Y243485D01* +X1061345Y237635D01* +X1061345Y240627D02* +X1044495Y240627D01* +X1044495Y224935D02* +X1061345Y224935D01* +X1044495Y224935D02* +X1044495Y230785D01* +X1061345Y230785D01* +X1061345Y224935D01* +X1061345Y227927D02* +X1044495Y227927D01* +X1044495Y212235D02* +X1061345Y212235D01* +X1044495Y212235D02* +X1044495Y218085D01* +X1061345Y218085D01* +X1061345Y212235D01* +X1061345Y215227D02* +X1044495Y215227D01* +X1044495Y199535D02* +X1061345Y199535D01* +X1044495Y199535D02* +X1044495Y205385D01* +X1061345Y205385D01* +X1061345Y199535D01* +X1061345Y202527D02* +X1044495Y202527D01* +X1044495Y186835D02* +X1061345Y186835D01* +X1044495Y186835D02* +X1044495Y192685D01* +X1061345Y192685D01* +X1061345Y186835D01* +X1061345Y189827D02* +X1044495Y189827D01* +X1044495Y174135D02* +X1061345Y174135D01* +X1044495Y174135D02* +X1044495Y179985D01* +X1061345Y179985D01* +X1061345Y174135D01* +X1061345Y177127D02* +X1044495Y177127D01* +X1044495Y161435D02* +X1061345Y161435D01* +X1044495Y161435D02* +X1044495Y167285D01* +X1061345Y167285D01* +X1061345Y161435D01* +X1061345Y164427D02* +X1044495Y164427D01* +X1044495Y148735D02* +X1061345Y148735D01* +X1044495Y148735D02* +X1044495Y154585D01* +X1061345Y154585D01* +X1061345Y148735D01* +X1061345Y151727D02* +X1044495Y151727D01* +X1044495Y136035D02* +X1061345Y136035D01* +X1044495Y136035D02* +X1044495Y141885D01* +X1061345Y141885D01* +X1061345Y136035D01* +X1061345Y139027D02* +X1044495Y139027D01* +X1083695Y137385D02* +X1083695Y120535D01* +X1077845Y120535D01* +X1077845Y137385D01* +X1083695Y137385D01* +X1083695Y123527D02* +X1077845Y123527D01* +X1077845Y126519D02* +X1083695Y126519D01* +X1083695Y129511D02* +X1077845Y129511D01* +X1077845Y132503D02* +X1083695Y132503D01* +X1083695Y135495D02* +X1077845Y135495D01* +X1096395Y137385D02* +X1096395Y120535D01* +X1090545Y120535D01* +X1090545Y137385D01* +X1096395Y137385D01* +X1096395Y123527D02* +X1090545Y123527D01* +X1090545Y126519D02* +X1096395Y126519D01* +X1096395Y129511D02* +X1090545Y129511D01* +X1090545Y132503D02* +X1096395Y132503D01* +X1096395Y135495D02* +X1090545Y135495D01* +X1109095Y137385D02* +X1109095Y120535D01* +X1103245Y120535D01* +X1103245Y137385D01* +X1109095Y137385D01* +X1109095Y123527D02* +X1103245Y123527D01* +X1103245Y126519D02* +X1109095Y126519D01* +X1109095Y129511D02* +X1103245Y129511D01* +X1103245Y132503D02* +X1109095Y132503D01* +X1109095Y135495D02* +X1103245Y135495D01* +X1121795Y137385D02* +X1121795Y120535D01* +X1115945Y120535D01* +X1115945Y137385D01* +X1121795Y137385D01* +X1121795Y123527D02* +X1115945Y123527D01* +X1115945Y126519D02* +X1121795Y126519D01* +X1121795Y129511D02* +X1115945Y129511D01* +X1115945Y132503D02* +X1121795Y132503D01* +X1121795Y135495D02* +X1115945Y135495D01* +X1134495Y137385D02* +X1134495Y120535D01* +X1128645Y120535D01* +X1128645Y137385D01* +X1134495Y137385D01* +X1134495Y123527D02* +X1128645Y123527D01* +X1128645Y126519D02* +X1134495Y126519D01* +X1134495Y129511D02* +X1128645Y129511D01* +X1128645Y132503D02* +X1134495Y132503D01* +X1134495Y135495D02* +X1128645Y135495D01* +X1147195Y137385D02* +X1147195Y120535D01* +X1141345Y120535D01* +X1141345Y137385D01* +X1147195Y137385D01* +X1147195Y123527D02* +X1141345Y123527D01* +X1141345Y126519D02* +X1147195Y126519D01* +X1147195Y129511D02* +X1141345Y129511D01* +X1141345Y132503D02* +X1147195Y132503D01* +X1147195Y135495D02* +X1141345Y135495D01* +X1159895Y137385D02* +X1159895Y120535D01* +X1154045Y120535D01* +X1154045Y137385D01* +X1159895Y137385D01* +X1159895Y123527D02* +X1154045Y123527D01* +X1154045Y126519D02* +X1159895Y126519D01* +X1159895Y129511D02* +X1154045Y129511D01* +X1154045Y132503D02* +X1159895Y132503D01* +X1159895Y135495D02* +X1154045Y135495D01* +X1172595Y137385D02* +X1172595Y120535D01* +X1166745Y120535D01* +X1166745Y137385D01* +X1172595Y137385D01* +X1172595Y123527D02* +X1166745Y123527D01* +X1166745Y126519D02* +X1172595Y126519D01* +X1172595Y129511D02* +X1166745Y129511D01* +X1166745Y132503D02* +X1172595Y132503D01* +X1172595Y135495D02* +X1166745Y135495D01* +X1185295Y137385D02* +X1185295Y120535D01* +X1179445Y120535D01* +X1179445Y137385D01* +X1185295Y137385D01* +X1185295Y123527D02* +X1179445Y123527D01* +X1179445Y126519D02* +X1185295Y126519D01* +X1185295Y129511D02* +X1179445Y129511D01* +X1179445Y132503D02* +X1185295Y132503D01* +X1185295Y135495D02* +X1179445Y135495D01* +X1197995Y137385D02* +X1197995Y120535D01* +X1192145Y120535D01* +X1192145Y137385D01* +X1197995Y137385D01* +X1197995Y123527D02* +X1192145Y123527D01* +X1192145Y126519D02* +X1197995Y126519D01* +X1197995Y129511D02* +X1192145Y129511D01* +X1192145Y132503D02* +X1197995Y132503D01* +X1197995Y135495D02* +X1192145Y135495D01* +X1214495Y141885D02* +X1231345Y141885D01* +X1231345Y136035D01* +X1214495Y136035D01* +X1214495Y141885D01* +X1214495Y139027D02* +X1231345Y139027D01* +X1231345Y154585D02* +X1214495Y154585D01* +X1231345Y154585D02* +X1231345Y148735D01* +X1214495Y148735D01* +X1214495Y154585D01* +X1214495Y151727D02* +X1231345Y151727D01* +X1231345Y167285D02* +X1214495Y167285D01* +X1231345Y167285D02* +X1231345Y161435D01* +X1214495Y161435D01* +X1214495Y167285D01* +X1214495Y164427D02* +X1231345Y164427D01* +X1231345Y179985D02* +X1214495Y179985D01* +X1231345Y179985D02* +X1231345Y174135D01* +X1214495Y174135D01* +X1214495Y179985D01* +X1214495Y177127D02* +X1231345Y177127D01* +X1231345Y192685D02* +X1214495Y192685D01* +X1231345Y192685D02* +X1231345Y186835D01* +X1214495Y186835D01* +X1214495Y192685D01* +X1214495Y189827D02* +X1231345Y189827D01* +X1231345Y205385D02* +X1214495Y205385D01* +X1231345Y205385D02* +X1231345Y199535D01* +X1214495Y199535D01* +X1214495Y205385D01* +X1214495Y202527D02* +X1231345Y202527D01* +X1231345Y218085D02* +X1214495Y218085D01* +X1231345Y218085D02* +X1231345Y212235D01* +X1214495Y212235D01* +X1214495Y218085D01* +X1214495Y215227D02* +X1231345Y215227D01* +X1231345Y230785D02* +X1214495Y230785D01* +X1231345Y230785D02* +X1231345Y224935D01* +X1214495Y224935D01* +X1214495Y230785D01* +X1214495Y227927D02* +X1231345Y227927D01* +X1231345Y243485D02* +X1214495Y243485D01* +X1231345Y243485D02* +X1231345Y237635D01* +X1214495Y237635D01* +X1214495Y243485D01* +X1214495Y240627D02* +X1231345Y240627D01* +X1231345Y256185D02* +X1214495Y256185D01* +X1231345Y256185D02* +X1231345Y250335D01* +X1214495Y250335D01* +X1214495Y256185D01* +X1214495Y253327D02* +X1231345Y253327D01* +X1231345Y268885D02* +X1214495Y268885D01* +X1231345Y268885D02* +X1231345Y263035D01* +X1214495Y263035D01* +X1214495Y268885D01* +X1214495Y266027D02* +X1231345Y266027D01* +X1231345Y281585D02* +X1214495Y281585D01* +X1231345Y281585D02* +X1231345Y275735D01* +X1214495Y275735D01* +X1214495Y281585D01* +X1214495Y278727D02* +X1231345Y278727D01* +X1231345Y294285D02* +X1214495Y294285D01* +X1231345Y294285D02* +X1231345Y288435D01* +X1214495Y288435D01* +X1214495Y294285D01* +X1214495Y291427D02* +X1231345Y291427D01* +X1231345Y306985D02* +X1214495Y306985D01* +X1231345Y306985D02* +X1231345Y301135D01* +X1214495Y301135D01* +X1214495Y306985D01* +X1214495Y304127D02* +X1231345Y304127D01* +D18* +X169100Y324120D02* +X169100Y326120D01* +X169100Y324120D02* +X156100Y324120D01* +X156100Y326120D01* +X169100Y326120D01* +X169100Y326020D02* +X156100Y326020D01* +X169100Y330620D02* +X169100Y332620D01* +X169100Y330620D02* +X156100Y330620D01* +X156100Y332620D01* +X169100Y332620D01* +X169100Y332520D02* +X156100Y332520D01* +X169100Y319620D02* +X169100Y317620D01* +X156100Y317620D01* +X156100Y319620D01* +X169100Y319620D01* +X169100Y319520D02* +X156100Y319520D01* +X169100Y313120D02* +X169100Y311120D01* +X156100Y311120D01* +X156100Y313120D01* +X169100Y313120D01* +X169100Y313020D02* +X156100Y313020D01* +X169100Y337120D02* +X169100Y339120D01* +X169100Y337120D02* +X156100Y337120D01* +X156100Y339120D01* +X169100Y339120D01* +X169100Y339020D02* +X156100Y339020D01* +D19* +X157330Y354620D02* +X164330Y354620D01* +X157330Y354620D02* +X157330Y363620D01* +X164330Y363620D01* +X164330Y354620D01* +X164330Y361270D02* +X157330Y361270D01* +X157330Y286620D02* +X164330Y286620D01* +X157330Y286620D02* +X157330Y295620D01* +X164330Y295620D01* +X164330Y286620D01* +X164330Y293270D02* +X157330Y293270D01* +D20* +X133600Y332370D02* +X133600Y341870D01* +X143100Y341870D01* +X143100Y332370D01* +X133600Y332370D01* +X133600Y341395D02* +X143100Y341395D01* +X133600Y317870D02* +X133600Y308370D01* +X133600Y317870D02* +X143100Y317870D01* +X143100Y308370D01* +X133600Y308370D01* +X133600Y317395D02* +X143100Y317395D01* +D21* +X363150Y332670D03* +D22* +X348041Y332671D03* +D23* +X348043Y317563D03* +D24* +X363151Y317560D03* +D25* +X336375Y339445D02* +X327625Y339445D01* +X327625Y340795D01* +X336375Y340795D01* +X336375Y339445D01* +X336375Y340727D02* +X327625Y340727D01* +X327625Y334445D02* +X336375Y334445D01* +X327625Y334445D02* +X327625Y335795D01* +X336375Y335795D01* +X336375Y334445D01* +X336375Y335727D02* +X327625Y335727D01* +X327625Y329445D02* +X336375Y329445D01* +X327625Y329445D02* +X327625Y330795D01* +X336375Y330795D01* +X336375Y329445D01* +X336375Y330727D02* +X327625Y330727D01* +X327625Y324445D02* +X336375Y324445D01* +X327625Y324445D02* +X327625Y325795D01* +X336375Y325795D01* +X336375Y324445D01* +X336375Y325727D02* +X327625Y325727D01* +X327625Y319445D02* +X336375Y319445D01* +X327625Y319445D02* +X327625Y320795D01* +X336375Y320795D01* +X336375Y319445D01* +X336375Y320727D02* +X327625Y320727D01* +X327625Y314445D02* +X336375Y314445D01* +X327625Y314445D02* +X327625Y315795D01* +X336375Y315795D01* +X336375Y314445D01* +X336375Y315727D02* +X327625Y315727D01* +X327625Y309445D02* +X336375Y309445D01* +X327625Y309445D02* +X327625Y310795D01* +X336375Y310795D01* +X336375Y309445D01* +X336375Y310727D02* +X327625Y310727D01* +X341275Y305895D02* +X341275Y297145D01* +X339925Y297145D01* +X339925Y305895D01* +X341275Y305895D01* +X341275Y298427D02* +X339925Y298427D01* +X339925Y299709D02* +X341275Y299709D01* +X341275Y300991D02* +X339925Y300991D01* +X339925Y302273D02* +X341275Y302273D01* +X341275Y303555D02* +X339925Y303555D01* +X339925Y304837D02* +X341275Y304837D01* +X346275Y305895D02* +X346275Y297145D01* +X344925Y297145D01* +X344925Y305895D01* +X346275Y305895D01* +X346275Y298427D02* +X344925Y298427D01* +X344925Y299709D02* +X346275Y299709D01* +X346275Y300991D02* +X344925Y300991D01* +X344925Y302273D02* +X346275Y302273D01* +X346275Y303555D02* +X344925Y303555D01* +X344925Y304837D02* +X346275Y304837D01* +X351275Y305895D02* +X351275Y297145D01* +X349925Y297145D01* +X349925Y305895D01* +X351275Y305895D01* +X351275Y298427D02* +X349925Y298427D01* +X349925Y299709D02* +X351275Y299709D01* +X351275Y300991D02* +X349925Y300991D01* +X349925Y302273D02* +X351275Y302273D01* +X351275Y303555D02* +X349925Y303555D01* +X349925Y304837D02* +X351275Y304837D01* +X356275Y305895D02* +X356275Y297145D01* +X354925Y297145D01* +X354925Y305895D01* +X356275Y305895D01* +X356275Y298427D02* +X354925Y298427D01* +X354925Y299709D02* +X356275Y299709D01* +X356275Y300991D02* +X354925Y300991D01* +X354925Y302273D02* +X356275Y302273D01* +X356275Y303555D02* +X354925Y303555D01* +X354925Y304837D02* +X356275Y304837D01* +X361275Y305895D02* +X361275Y297145D01* +X359925Y297145D01* +X359925Y305895D01* +X361275Y305895D01* +X361275Y298427D02* +X359925Y298427D01* +X359925Y299709D02* +X361275Y299709D01* +X361275Y300991D02* +X359925Y300991D01* +X359925Y302273D02* +X361275Y302273D01* +X361275Y303555D02* +X359925Y303555D01* +X359925Y304837D02* +X361275Y304837D01* +X366275Y305895D02* +X366275Y297145D01* +X364925Y297145D01* +X364925Y305895D01* +X366275Y305895D01* +X366275Y298427D02* +X364925Y298427D01* +X364925Y299709D02* +X366275Y299709D01* +X366275Y300991D02* +X364925Y300991D01* +X364925Y302273D02* +X366275Y302273D01* +X366275Y303555D02* +X364925Y303555D01* +X364925Y304837D02* +X366275Y304837D01* +X371275Y305895D02* +X371275Y297145D01* +X369925Y297145D01* +X369925Y305895D01* +X371275Y305895D01* +X371275Y298427D02* +X369925Y298427D01* +X369925Y299709D02* +X371275Y299709D01* +X371275Y300991D02* +X369925Y300991D01* +X369925Y302273D02* +X371275Y302273D01* +X371275Y303555D02* +X369925Y303555D01* +X369925Y304837D02* +X371275Y304837D01* +X374825Y310795D02* +X383575Y310795D01* +X383575Y309445D01* +X374825Y309445D01* +X374825Y310795D01* +X374825Y310727D02* +X383575Y310727D01* +X383575Y315795D02* +X374825Y315795D01* +X383575Y315795D02* +X383575Y314445D01* +X374825Y314445D01* +X374825Y315795D01* +X374825Y315727D02* +X383575Y315727D01* +X383575Y320795D02* +X374825Y320795D01* +X383575Y320795D02* +X383575Y319445D01* +X374825Y319445D01* +X374825Y320795D01* +X374825Y320727D02* +X383575Y320727D01* +X383575Y325795D02* +X374825Y325795D01* +X383575Y325795D02* +X383575Y324445D01* +X374825Y324445D01* +X374825Y325795D01* +X374825Y325727D02* +X383575Y325727D01* +X383575Y330795D02* +X374825Y330795D01* +X383575Y330795D02* +X383575Y329445D01* +X374825Y329445D01* +X374825Y330795D01* +X374825Y330727D02* +X383575Y330727D01* +X383575Y335795D02* +X374825Y335795D01* +X383575Y335795D02* +X383575Y334445D01* +X374825Y334445D01* +X374825Y335795D01* +X374825Y335727D02* +X383575Y335727D01* +X383575Y340795D02* +X374825Y340795D01* +X383575Y340795D02* +X383575Y339445D01* +X374825Y339445D01* +X374825Y340795D01* +X374825Y340727D02* +X383575Y340727D01* +X369925Y344345D02* +X369925Y353095D01* +X371275Y353095D01* +X371275Y344345D01* +X369925Y344345D01* +X369925Y345627D02* +X371275Y345627D01* +X371275Y346909D02* +X369925Y346909D01* +X369925Y348191D02* +X371275Y348191D01* +X371275Y349473D02* +X369925Y349473D01* +X369925Y350755D02* +X371275Y350755D01* +X371275Y352037D02* +X369925Y352037D01* +X364925Y353095D02* +X364925Y344345D01* +X364925Y353095D02* +X366275Y353095D01* +X366275Y344345D01* +X364925Y344345D01* +X364925Y345627D02* +X366275Y345627D01* +X366275Y346909D02* +X364925Y346909D01* +X364925Y348191D02* +X366275Y348191D01* +X366275Y349473D02* +X364925Y349473D01* +X364925Y350755D02* +X366275Y350755D01* +X366275Y352037D02* +X364925Y352037D01* +X359925Y353095D02* +X359925Y344345D01* +X359925Y353095D02* +X361275Y353095D01* +X361275Y344345D01* +X359925Y344345D01* +X359925Y345627D02* +X361275Y345627D01* +X361275Y346909D02* +X359925Y346909D01* +X359925Y348191D02* +X361275Y348191D01* +X361275Y349473D02* +X359925Y349473D01* +X359925Y350755D02* +X361275Y350755D01* +X361275Y352037D02* +X359925Y352037D01* +X354925Y353095D02* +X354925Y344345D01* +X354925Y353095D02* +X356275Y353095D01* +X356275Y344345D01* +X354925Y344345D01* +X354925Y345627D02* +X356275Y345627D01* +X356275Y346909D02* +X354925Y346909D01* +X354925Y348191D02* +X356275Y348191D01* +X356275Y349473D02* +X354925Y349473D01* +X354925Y350755D02* +X356275Y350755D01* +X356275Y352037D02* +X354925Y352037D01* +X349925Y353095D02* +X349925Y344345D01* +X349925Y353095D02* +X351275Y353095D01* +X351275Y344345D01* +X349925Y344345D01* +X349925Y345627D02* +X351275Y345627D01* +X351275Y346909D02* +X349925Y346909D01* +X349925Y348191D02* +X351275Y348191D01* +X351275Y349473D02* +X349925Y349473D01* +X349925Y350755D02* +X351275Y350755D01* +X351275Y352037D02* +X349925Y352037D01* +X344925Y353095D02* +X344925Y344345D01* +X344925Y353095D02* +X346275Y353095D01* +X346275Y344345D01* +X344925Y344345D01* +X344925Y345627D02* +X346275Y345627D01* +X346275Y346909D02* +X344925Y346909D01* +X344925Y348191D02* +X346275Y348191D01* +X346275Y349473D02* +X344925Y349473D01* +X344925Y350755D02* +X346275Y350755D01* +X346275Y352037D02* +X344925Y352037D01* +X339925Y353095D02* +X339925Y344345D01* +X339925Y353095D02* +X341275Y353095D01* +X341275Y344345D01* +X339925Y344345D01* +X339925Y345627D02* +X341275Y345627D01* +X341275Y346909D02* +X339925Y346909D01* +X339925Y348191D02* +X341275Y348191D01* +X341275Y349473D02* +X339925Y349473D01* +X339925Y350755D02* +X341275Y350755D01* +X341275Y352037D02* +X339925Y352037D01* +D26* +X488999Y199341D03* +D27* +X488999Y186737D03* +D28* +X501608Y186732D03* +D29* +X501602Y199340D03* +D30* +X510805Y181385D02* +X518495Y181385D01* +X518495Y179695D01* +X510805Y179695D01* +X510805Y181385D01* +X510805Y180559D02* +X518495Y180559D01* +X518495Y186385D02* +X510805Y186385D01* +X518495Y186385D02* +X518495Y184695D01* +X510805Y184695D01* +X510805Y186385D01* +X510805Y185559D02* +X518495Y185559D01* +X518495Y191385D02* +X510805Y191385D01* +X518495Y191385D02* +X518495Y189695D01* +X510805Y189695D01* +X510805Y191385D01* +X510805Y190559D02* +X518495Y190559D01* +X518495Y196385D02* +X510805Y196385D01* +X518495Y196385D02* +X518495Y194695D01* +X510805Y194695D01* +X510805Y196385D01* +X510805Y195559D02* +X518495Y195559D01* +X518495Y201385D02* +X510805Y201385D01* +X518495Y201385D02* +X518495Y199695D01* +X510805Y199695D01* +X510805Y201385D01* +X510805Y200559D02* +X518495Y200559D01* +X518495Y206385D02* +X510805Y206385D01* +X518495Y206385D02* +X518495Y204695D01* +X510805Y204695D01* +X510805Y206385D01* +X510805Y205559D02* +X518495Y205559D01* +X479795Y206385D02* +X472105Y206385D01* +X479795Y206385D02* +X479795Y204695D01* +X472105Y204695D01* +X472105Y206385D01* +X472105Y205559D02* +X479795Y205559D01* +X479795Y201385D02* +X472105Y201385D01* +X479795Y201385D02* +X479795Y199695D01* +X472105Y199695D01* +X472105Y201385D01* +X472105Y200559D02* +X479795Y200559D01* +X479795Y196385D02* +X472105Y196385D01* +X479795Y196385D02* +X479795Y194695D01* +X472105Y194695D01* +X472105Y196385D01* +X472105Y195559D02* +X479795Y195559D01* +X479795Y191385D02* +X472105Y191385D01* +X479795Y191385D02* +X479795Y189695D01* +X472105Y189695D01* +X472105Y191385D01* +X472105Y190559D02* +X479795Y190559D01* +X479795Y186385D02* +X472105Y186385D01* +X479795Y186385D02* +X479795Y184695D01* +X472105Y184695D01* +X472105Y186385D01* +X472105Y185559D02* +X479795Y185559D01* +X479795Y181385D02* +X472105Y181385D01* +X479795Y181385D02* +X479795Y179695D01* +X472105Y179695D01* +X472105Y181385D01* +X472105Y180559D02* +X479795Y180559D01* +X483645Y177535D02* +X483645Y169845D01* +X481955Y169845D01* +X481955Y177535D01* +X483645Y177535D01* +X483645Y170709D02* +X481955Y170709D01* +X481955Y171573D02* +X483645Y171573D01* +X483645Y172437D02* +X481955Y172437D01* +X481955Y173301D02* +X483645Y173301D01* +X483645Y174165D02* +X481955Y174165D01* +X481955Y175029D02* +X483645Y175029D01* +X483645Y175893D02* +X481955Y175893D01* +X481955Y176757D02* +X483645Y176757D01* +X488645Y177535D02* +X488645Y169845D01* +X486955Y169845D01* +X486955Y177535D01* +X488645Y177535D01* +X488645Y170709D02* +X486955Y170709D01* +X486955Y171573D02* +X488645Y171573D01* +X488645Y172437D02* +X486955Y172437D01* +X486955Y173301D02* +X488645Y173301D01* +X488645Y174165D02* +X486955Y174165D01* +X486955Y175029D02* +X488645Y175029D01* +X488645Y175893D02* +X486955Y175893D01* +X486955Y176757D02* +X488645Y176757D01* +X493645Y177535D02* +X493645Y169845D01* +X491955Y169845D01* +X491955Y177535D01* +X493645Y177535D01* +X493645Y170709D02* +X491955Y170709D01* +X491955Y171573D02* +X493645Y171573D01* +X493645Y172437D02* +X491955Y172437D01* +X491955Y173301D02* +X493645Y173301D01* +X493645Y174165D02* +X491955Y174165D01* +X491955Y175029D02* +X493645Y175029D01* +X493645Y175893D02* +X491955Y175893D01* +X491955Y176757D02* +X493645Y176757D01* +X498645Y177535D02* +X498645Y169845D01* +X496955Y169845D01* +X496955Y177535D01* +X498645Y177535D01* +X498645Y170709D02* +X496955Y170709D01* +X496955Y171573D02* +X498645Y171573D01* +X498645Y172437D02* +X496955Y172437D01* +X496955Y173301D02* +X498645Y173301D01* +X498645Y174165D02* +X496955Y174165D01* +X496955Y175029D02* +X498645Y175029D01* +X498645Y175893D02* +X496955Y175893D01* +X496955Y176757D02* +X498645Y176757D01* +X503645Y177535D02* +X503645Y169845D01* +X501955Y169845D01* +X501955Y177535D01* +X503645Y177535D01* +X503645Y170709D02* +X501955Y170709D01* +X501955Y171573D02* +X503645Y171573D01* +X503645Y172437D02* +X501955Y172437D01* +X501955Y173301D02* +X503645Y173301D01* +X503645Y174165D02* +X501955Y174165D01* +X501955Y175029D02* +X503645Y175029D01* +X503645Y175893D02* +X501955Y175893D01* +X501955Y176757D02* +X503645Y176757D01* +X508645Y177535D02* +X508645Y169845D01* +X506955Y169845D01* +X506955Y177535D01* +X508645Y177535D01* +X508645Y170709D02* +X506955Y170709D01* +X506955Y171573D02* +X508645Y171573D01* +X508645Y172437D02* +X506955Y172437D01* +X506955Y173301D02* +X508645Y173301D01* +X508645Y174165D02* +X506955Y174165D01* +X506955Y175029D02* +X508645Y175029D01* +X508645Y175893D02* +X506955Y175893D01* +X506955Y176757D02* +X508645Y176757D01* +X508645Y208545D02* +X508645Y216235D01* +X508645Y208545D02* +X506955Y208545D01* +X506955Y216235D01* +X508645Y216235D01* +X508645Y209409D02* +X506955Y209409D01* +X506955Y210273D02* +X508645Y210273D01* +X508645Y211137D02* +X506955Y211137D01* +X506955Y212001D02* +X508645Y212001D01* +X508645Y212865D02* +X506955Y212865D01* +X506955Y213729D02* +X508645Y213729D01* +X508645Y214593D02* +X506955Y214593D01* +X506955Y215457D02* +X508645Y215457D01* +X503645Y216235D02* +X503645Y208545D01* +X501955Y208545D01* +X501955Y216235D01* +X503645Y216235D01* +X503645Y209409D02* +X501955Y209409D01* +X501955Y210273D02* +X503645Y210273D01* +X503645Y211137D02* +X501955Y211137D01* +X501955Y212001D02* +X503645Y212001D01* +X503645Y212865D02* +X501955Y212865D01* +X501955Y213729D02* +X503645Y213729D01* +X503645Y214593D02* +X501955Y214593D01* +X501955Y215457D02* +X503645Y215457D01* +X498645Y216235D02* +X498645Y208545D01* +X496955Y208545D01* +X496955Y216235D01* +X498645Y216235D01* +X498645Y209409D02* +X496955Y209409D01* +X496955Y210273D02* +X498645Y210273D01* +X498645Y211137D02* +X496955Y211137D01* +X496955Y212001D02* +X498645Y212001D01* +X498645Y212865D02* +X496955Y212865D01* +X496955Y213729D02* +X498645Y213729D01* +X498645Y214593D02* +X496955Y214593D01* +X496955Y215457D02* +X498645Y215457D01* +X493645Y216235D02* +X493645Y208545D01* +X491955Y208545D01* +X491955Y216235D01* +X493645Y216235D01* +X493645Y209409D02* +X491955Y209409D01* +X491955Y210273D02* +X493645Y210273D01* +X493645Y211137D02* +X491955Y211137D01* +X491955Y212001D02* +X493645Y212001D01* +X493645Y212865D02* +X491955Y212865D01* +X491955Y213729D02* +X493645Y213729D01* +X493645Y214593D02* +X491955Y214593D01* +X491955Y215457D02* +X493645Y215457D01* +X488645Y216235D02* +X488645Y208545D01* +X486955Y208545D01* +X486955Y216235D01* +X488645Y216235D01* +X488645Y209409D02* +X486955Y209409D01* +X486955Y210273D02* +X488645Y210273D01* +X488645Y211137D02* +X486955Y211137D01* +X486955Y212001D02* +X488645Y212001D01* +X488645Y212865D02* +X486955Y212865D01* +X486955Y213729D02* +X488645Y213729D01* +X488645Y214593D02* +X486955Y214593D01* +X486955Y215457D02* +X488645Y215457D01* +X483645Y216235D02* +X483645Y208545D01* +X481955Y208545D01* +X481955Y216235D01* +X483645Y216235D01* +X483645Y209409D02* +X481955Y209409D01* +X481955Y210273D02* +X483645Y210273D01* +X483645Y211137D02* +X481955Y211137D01* +X481955Y212001D02* +X483645Y212001D01* +X483645Y212865D02* +X481955Y212865D01* +X481955Y213729D02* +X483645Y213729D01* +X483645Y214593D02* +X481955Y214593D01* +X481955Y215457D02* +X483645Y215457D01* +D31* +X1262010Y179670D02* +X1262010Y173010D01* +X1262010Y179670D02* +X1266170Y179670D01* +X1266170Y173010D01* +X1262010Y173010D01* +X1262010Y175138D02* +X1266170Y175138D01* +X1266170Y177266D02* +X1262010Y177266D01* +X1262010Y179394D02* +X1266170Y179394D01* +X1262010Y162270D02* +X1262010Y155610D01* +X1262010Y162270D02* +X1266170Y162270D01* +X1266170Y155610D01* +X1262010Y155610D01* +X1262010Y157738D02* +X1266170Y157738D01* +X1266170Y159866D02* +X1262010Y159866D01* +X1262010Y161994D02* +X1266170Y161994D01* +X1253510Y162270D02* +X1253510Y155610D01* +X1253510Y162270D02* +X1257670Y162270D01* +X1257670Y155610D01* +X1253510Y155610D01* +X1253510Y157738D02* +X1257670Y157738D01* +X1257670Y159866D02* +X1253510Y159866D01* +X1253510Y161994D02* +X1257670Y161994D01* +X1253510Y173010D02* +X1253510Y179670D01* +X1257670Y179670D01* +X1257670Y173010D01* +X1253510Y173010D01* +X1253510Y175138D02* +X1257670Y175138D01* +X1257670Y177266D02* +X1253510Y177266D01* +X1253510Y179394D02* +X1257670Y179394D01* +X743550Y137530D02* +X736890Y137530D01* +X743550Y137530D02* +X743550Y133370D01* +X736890Y133370D01* +X736890Y137530D01* +X736890Y135498D02* +X743550Y135498D01* +X726150Y137530D02* +X719490Y137530D01* +X726150Y137530D02* +X726150Y133370D01* +X719490Y133370D01* +X719490Y137530D01* +X719490Y135498D02* +X726150Y135498D01* +X726150Y146030D02* +X719490Y146030D01* +X726150Y146030D02* +X726150Y141870D01* +X719490Y141870D01* +X719490Y146030D01* +X719490Y143998D02* +X726150Y143998D01* +X736890Y146030D02* +X743550Y146030D01* +X743550Y141870D01* +X736890Y141870D01* +X736890Y146030D01* +X736890Y143998D02* +X743550Y143998D01* +D32* +X837806Y57798D02* +X851294Y57798D01* +X851294Y55486D01* +X837806Y55486D01* +X837806Y57798D01* +X837806Y56669D02* +X851294Y56669D01* +X851294Y64402D02* +X837806Y64402D01* +X851294Y64402D02* +X851294Y62090D01* +X837806Y62090D01* +X837806Y64402D01* +X837806Y63273D02* +X851294Y63273D01* +X851294Y70752D02* +X837806Y70752D01* +X851294Y70752D02* +X851294Y68440D01* +X837806Y68440D01* +X837806Y70752D01* +X837806Y69623D02* +X851294Y69623D01* +X851294Y77356D02* +X837806Y77356D01* +X851294Y77356D02* +X851294Y75044D01* +X837806Y75044D01* +X837806Y77356D01* +X837806Y76227D02* +X851294Y76227D01* +X851294Y83960D02* +X837806Y83960D01* +X851294Y83960D02* +X851294Y81648D01* +X837806Y81648D01* +X837806Y83960D01* +X837806Y82831D02* +X851294Y82831D01* +X851294Y90310D02* +X837806Y90310D01* +X851294Y90310D02* +X851294Y87998D01* +X837806Y87998D01* +X837806Y90310D01* +X837806Y89181D02* +X851294Y89181D01* +X851294Y96914D02* +X837806Y96914D01* +X851294Y96914D02* +X851294Y94602D01* +X837806Y94602D01* +X837806Y96914D01* +X837806Y95785D02* +X851294Y95785D01* +X792874Y96914D02* +X779386Y96914D01* +X792874Y96914D02* +X792874Y94602D01* +X779386Y94602D01* +X779386Y96914D01* +X779386Y95785D02* +X792874Y95785D01* +X792874Y90310D02* +X779386Y90310D01* +X792874Y90310D02* +X792874Y87998D01* +X779386Y87998D01* +X779386Y90310D01* +X779386Y89181D02* +X792874Y89181D01* +X792874Y83960D02* +X779386Y83960D01* +X792874Y83960D02* +X792874Y81648D01* +X779386Y81648D01* +X779386Y83960D01* +X779386Y82831D02* +X792874Y82831D01* +X792874Y77356D02* +X779386Y77356D01* +X792874Y77356D02* +X792874Y75044D01* +X779386Y75044D01* +X779386Y77356D01* +X779386Y76227D02* +X792874Y76227D01* +X792874Y70752D02* +X779386Y70752D01* +X792874Y70752D02* +X792874Y68440D01* +X779386Y68440D01* +X779386Y70752D01* +X779386Y69623D02* +X792874Y69623D01* +X792874Y64402D02* +X779386Y64402D01* +X792874Y64402D02* +X792874Y62090D01* +X779386Y62090D01* +X779386Y64402D01* +X779386Y63273D02* +X792874Y63273D01* +X792874Y57798D02* +X779386Y57798D01* +X792874Y57798D02* +X792874Y55486D01* +X779386Y55486D01* +X779386Y57798D01* +X779386Y56669D02* +X792874Y56669D01* +D11* +X592650Y45010D02* +X585150Y45010D01* +X585150Y51510D01* +X592650Y51510D01* +X592650Y45010D01* +X592650Y48335D02* +X585150Y48335D01* +X601150Y45010D02* +X608650Y45010D01* +X601150Y45010D02* +X601150Y51510D01* +X608650Y51510D01* +X608650Y45010D01* +X608650Y48335D02* +X601150Y48335D01* +X712150Y52630D02* +X719650Y52630D01* +X712150Y52630D02* +X712150Y59130D01* +X719650Y59130D01* +X719650Y52630D01* +X719650Y55955D02* +X712150Y55955D01* +X728150Y52630D02* +X735650Y52630D01* +X728150Y52630D02* +X728150Y59130D01* +X735650Y59130D01* +X735650Y52630D01* +X735650Y55955D02* +X728150Y55955D01* +X692686Y301960D02* +X689516Y308757D01* +X695406Y311504D01* +X698576Y304707D01* +X692686Y301960D01* +X691135Y305285D02* +X698306Y305285D01* +X696756Y308610D02* +X689585Y308610D01* +X696277Y294257D02* +X699447Y287460D01* +X696277Y294257D02* +X702167Y297004D01* +X705337Y290207D01* +X699447Y287460D01* +X697896Y290785D02* +X705067Y290785D01* +X703517Y294110D02* +X696346Y294110D01* +X764542Y304409D02* +X767712Y311206D01* +X773602Y308459D01* +X770432Y301662D01* +X764542Y304409D01* +X764812Y304987D02* +X771983Y304987D01* +X773533Y308312D02* +X766362Y308312D01* +X760950Y296705D02* +X757780Y289908D01* +X760950Y296705D02* +X766840Y293958D01* +X763670Y287161D01* +X757780Y289908D01* +X758050Y290486D02* +X765221Y290486D01* +X766771Y293811D02* +X759600Y293811D01* +D10* +X848942Y246882D02* +X852518Y246882D01* +X848942Y246882D02* +X848942Y250958D01* +X852518Y250958D01* +X852518Y246882D01* +X852518Y248711D02* +X848942Y248711D01* +X848942Y250540D02* +X852518Y250540D01* +X859442Y246882D02* +X863018Y246882D01* +X859442Y246882D02* +X859442Y250958D01* +X863018Y250958D01* +X863018Y246882D01* +X863018Y248711D02* +X859442Y248711D01* +X859442Y250540D02* +X863018Y250540D01* +X852518Y259582D02* +X848942Y259582D01* +X848942Y263658D01* +X852518Y263658D01* +X852518Y259582D01* +X852518Y261411D02* +X848942Y261411D01* +X848942Y263240D02* +X852518Y263240D01* +X859442Y259582D02* +X863018Y259582D01* +X859442Y259582D02* +X859442Y263658D01* +X863018Y263658D01* +X863018Y259582D01* +X863018Y261411D02* +X859442Y261411D01* +X859442Y263240D02* +X863018Y263240D01* +D11* +X514670Y107390D02* +X507170Y107390D01* +X514670Y107390D02* +X514670Y100890D01* +X507170Y100890D01* +X507170Y107390D01* +X507170Y104215D02* +X514670Y104215D01* +X498670Y107390D02* +X491170Y107390D01* +X498670Y107390D02* +X498670Y100890D01* +X491170Y100890D01* +X491170Y107390D01* +X491170Y104215D02* +X498670Y104215D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/BAAAHS-BRN01-D.brd b/brain/hw/BAAAHS-BRN01-D/BAAAHS-BRN01-D.brd new file mode 100644 index 0000000000..f885aecbda --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/BAAAHS-BRN01-D.brd @@ -0,0 +1,8190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CH2 +GND +PWR +CH1 +GND + + + + +PWR + + +RESET + + + + +BAAAHS BRAIN +BAAAHS-BRN01-D + + + + + + + + + + + + + + +PLATED +SLOTS (x2) + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + +>NAME +>VALUE + + + + + + + + +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + +Shrink Small Outline Package +package type SS + + + + + + + + + +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(unless otherwise specified) +Inches (in) are the controlling dimensions for the drawings and +1. +Fabricate PCB in accordance with IPC-6012A, Class 2; per IPC-6011 +2. +Materials: +Laminate and Prepreg (B-stage) to be in accordance with IPC-4101/23 +3. +All holes shall be located within 0.008" (0.2mm) Diameter of True +4. +5. +6. +All exposed conductive pattern areas not covered with solder mask +Finish: +Apply liquid photo imageable solder mask (color black) per +Silkscreen shall be white, permanent, organic, non-conductive ink. +Test requirements: +Marking: +Board part number and revision letter is rendered in etch on the +UL logo, manufacturer's identification and date code letter shall +7. +100% netlist electrical verification using customer supplied +HiPot test all prepreg/core material less than 0.004" (0.1mm) +Tolerances: +Warp or twist of board shall not exceed 1%. +Conductor widths and spacing shall be within ± 0.001" (0.03mm) +Remove all burrs and break sharp edges 0.015" (0.4mm) maximum. +Surface Mount Pad plating must be flat to a maximum of 0.003" (0.08mm) +The following guidelines must be adhered to in order to maintain +Thieving: +Supplier may add thieving to compensate for low copper density +0.06" (1.5mm) maximum radius on any inside corner. +Thieving to card edge spacing 0.100" (2.5mm) minimum. +Thieving to Fiducial spacing 0.200" (5mm) minimum. +Thieving to non-plated through holes 0.200" (5mm) minimum. +Thieving to all other features 0.100" (2.5mm) minimum. +There shall be no exposed thieving in any areas free of +8. +9. +Only solder mask images that are the same size as the component +supplied data. Millimeters (mm) dimensions are for reference only. +using customer supplied data files. +Copper foil to be in accordance with IPC-MF-150. Unless otherwise +or IPC-4101/24. Material must meet UL 94V-0 flammability rating. +specified, all copper weight for inner layers to be 18um (0.5 oz) +considered "finished". +Position. Layer to layer registration shall be within 0.005" (0.125mm). +or other plating shall be Hot Air Solder Leveled using SN100C +pads may be enlarged and shall not be enlarged beyond 0.003" (0.08mm) +per side or 0.006" (0.15mm) overall. All other solder mask +There shall be no silkscreen on any solderable component pad. +bottom side of the board. Revision letter shall be identical to +be rendered in etch on the bottom side of the board approximately +IPC-D-356 netlist for opens and shorts. All nets shall be accessed +thick at 500 Vdc for 30 seconds minimum. Test should be done at +electrical and mechanical integrity of the design: +solder mask or internal copper plane. +NOTES: +and for outer layers 35um (1 oz). Copper weight shall be +A) +B) +Tin-Copper-Nickel Solder, per ANSI/J-STD-006 (HASL) +A) +B) +IPC-SM-840, class H, to both sides of the board over bare copper. +Via holes covered with solder mask do not need to be plugged. +images shall not be enlarged. +C) +A) +B) +this drawing. +where shown. +A) +B) +simultaneously or as otherwise mutually agreed upon. +the layer stage and again prior to packaging. +A) +B) +C) +D) +E) +of Gerber data. +above board surface. +A) +B) +areas on this design. +a. +b. +c. +e. +f. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Solder Mask - Top +Silkscreen - Top +Copper Foil - Component Layer +Prepreg [0.12mm] +Copper Foil - Component Layer +Solder Mask - Bottom +1.6mm +Silkscreen - Bottom + + + + +Core [1.2mm] +Prepreg [0.12mm] +Internal Power Plane +Internal Ground Plane + + + + + + + + + + + + + + + + + + + + +0.12mm +0.12mm +1.2mm + + + + + + + + + + + + +Standard titleblock for Electrical Alchemy layout drawings. Should be placed on any layout drawing before release. + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Revision: +Title: +Date: +>PART_NUMBER +>ENGINEER +>DATE +>REV +PCB FABRICATION DETAILS +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Revision: +Title: +Date: +>PART_NUMBER +>ENGINEER +>DATE +>REV +TOP PCB ASSEMBLY +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + + diff --git a/brain/hw/BAAAHS-BRN01-D/BAAAHS-BRN01-D.sch b/brain/hw/BAAAHS-BRN01-D/BAAAHS-BRN01-D.sch new file mode 100644 index 0000000000..c3b2fbc3d4 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/BAAAHS-BRN01-D.sch @@ -0,0 +1,56101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Rev: +Title: +Date: +Sheet: +>SHEET +>ENGINEER +>PART_NUMBER +>REV +>DATE +ELECTRICAL CIRCUIT SCHEMATIC +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++3V3 + + + + + + + + + + + + ++5V0 + + + + + + +VBUS + + + + + + +VLED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>CAPACITOR</b><p> + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +type 0617, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SMA</b> CASE 403D-02<p> +Source: http://www.onsemi.com/pub_link/Collateral/MBRA340T3-D.PDF + + + + + + + + + +>NAME +>VALUE + +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + +>NAME +>VALUE + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + +>NAME +>VALUE + + + + + + + +>NAME + + + + + + + +>NAME +>VALUE + + + + + + +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b> + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + +>NAME +>VALUE +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + +Vishay Dale - Low Profile, High Current IHLP Inductor + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +>NAME +>VALUE +>NAME + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VAL +>NAME + + + + +>NAME + + + + + +>NAME + + + + +>NAME +>VALUE + + + + + + + + + + +>NAME + + + +>NAME + + + + + + + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +General purpose ferrite bead filter elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +General purpose power inductors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<B>DIODE</B> + + + + + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + +Momentary Pushbutton Tact Switch - 4 Terminal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE + + + + +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +General Purpose Bipolar NPN Transistors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + +>NAME + + + +>NAME + + + + + + + + + + + + + +>NAME + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + +2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring. + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + +>NAME + + + + + + + + + + + + + + + + + + + + + + +MICRO USB +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 TX+ +2 TX- +3 RX+ +6 RX- +4 +5 +7 +8 +>NAME +>VALUE +75R +75R +75R +75R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Shield +Yellow Speed +Green Link + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wiznet RB1-125BAG1A RJ45 1x1 Tab Down Through Hole + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + +Shrink Small Outline Package +package type SS + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +LAN8720A Series 3.3 V RMII 10/100 Ethernet Transceiver Surface Mount - QFN-24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +310070026 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + + + + + + + + + + + + +>NAME +>VALUE + + +<b>CHIPLED</b><p> +Source: http://www.osram.convergy.de/ ... LG_LY N971.pdf + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + + + + +>NAME + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE + + + +>NAME + + +<B>LED</B><p> +3 mm, round + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + +<B>LED</B><p> +5 mm, round + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + +>NAME +>VALUE + + + + + + + +>NAME + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +R +G +B + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +HELI Colour; 1.6X1.6MM LOW CURRENT RGB SMD LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + +4-BIT BIDIRECTIONAL VOLTAGE-LEVEL TRANSLATOR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>Resonator</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Schottky Diode to prevent +backflow power into usb +Normal booting & resetting requires +IO0 pulled up +IO2 pulled down +MTDI IO12 down +MTDO IO15 up +IO5 up +These pins are connected +to the on-module flash + + + + + + + + + + + + + + + + + + + +CONTROLLER +LEVEL SHIFTER +USB UART +5V SUPPLY +3.3V POWER SUPPLY +EXPANSION HEADER +LED INTERFACE +USER INTERFACE +VOLTAGE MONITOR +LED OUT +LED IN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +These 3 pullup +configure autonegotiation +ETHERNET PYH AND JACK + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.0, EAGLE supports the align property for labels. +Labels in schematic will not be understood with this version. Update EAGLE to the latest version +for full support of labels. + + + diff --git a/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_BOM.xlsx b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_BOM.xlsx new file mode 100644 index 0000000000..a7ea6be19d Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_BOM.xlsx differ diff --git a/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_BottomAssembly.pdf b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_BottomAssembly.pdf new file mode 100644 index 0000000000..0cfa9b59c3 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_BottomAssembly.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Fabrication.pdf b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Fabrication.pdf new file mode 100644 index 0000000000..94fec122da Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Fabrication.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Placement.csv b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Placement.csv new file mode 100644 index 0000000000..9304bb2a34 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Placement.csv @@ -0,0 +1,102 @@ +designator,x (mm),y (mm),rotation (deg),side,package +C1,86.87, 5.59, 0,top,C0402 +C2,99.31,27.94, 90,top,C0402 +C3,18.03,34.80, 90,top,C0402 +C4,102.11,29.46, 90,top,C0603 +C5,103.38,29.72, 90,top,C0402 +C6,35.05,34.80,270,top,C0402 +C7,36.07,34.80,270,top,C0402 +C8,105.16, 9.14,270,top,C0402 +C9,24.64,35.31, 90,top,C0402 +C10,23.62,35.31, 90,top,C0402 +C11,57.66, 7.11, 90,top,C0603 +C12,55.12, 6.35, 0,top,C0603 +C13,86.36,16.00, 90,top,C0402 +C14,54.36,11.68, 0,top,C0402 +C15,62.99,10.41,270,top,C0402 +C16,68.83, 8.38,270,top,C0603 +C17,69.34,16.00,270,top,C0402 +C18,35.56, 5.84,270,top,C0603 +C19,101.60, 5.84,270,top,C0603 +C20,49.78,25.40, 90,top,C0402 +C21,54.10,18.03, 0,top,C0402 +C22,52.07,13.46,180,top,C0603 +C23,44.45,25.91,180,top,C0603 +C24,51.31,15.24,270,top,C0402 +C25,52.58,15.24,270,top,C0402 +C26,44.45,22.86, 0,top,C0603 +C27,46.23,21.34, 90,top,C0402 +C28,47.24,15.24,270,top,C0402 +C29,34.80,18.80,270,top,C0402 +C30,18.80,30.73, 90,top,C0402 +C31,23.88,30.73,270,top,C0402 +C32,70.36, 8.38,270,top,C0603 +D1,51.05, 6.10,270,top,SOT23 +D2,65.28, 5.84, 0,top,SOD123 +D3,73.15,13.97, 0,top,RGB1616 +D4,125.73,17.78,180,top,D0603 +D5,69.74,29.95,295,top,D0603 +D6,76.57,29.92,245,top,D0603 +D7,125.73,12.95,180,top,D0603 +J1,15.05,32.51,270,top,USB_MICRO_A_RA +L1,65.79, 9.40, 0,top,NRG4026 +L2,44.45,24.38,180,top,L0603 +Q1,45.21,33.02,270,top,SOT23 +Q2,49.28,29.97,270,top,SOT23 +R1,100.58,27.94, 90,top,R0402 +R2,76.45,10.16, 0,top,R0402 +R3,40.39,36.07,180,top,R0402 +R4,50.29,10.41,180,top,R0603 +R5,103.38,17.02, 90,top,R0402 +R6,35.56,36.32, 0,top,R0402 +R7,46.23,30.23, 90,top,R0402 +R8,44.20,30.23,270,top,R0402 +R9,121.16,10.41, 90,top,R0402 +R10,119.89,10.41, 90,top,R0402 +R11,97.03,12.70,270,top,R0402 +R12,97.28,25.40,180,top,R0402 +R13,103.12, 9.14,270,top,R0402 +R14,104.14, 9.14, 90,top,R0402 +R15,59.94, 6.35,180,top,R0402 +R16,87.63,16.00,270,top,R0402 +R17,74.42,16.00,180,top,R0402 +R18,71.88,16.00, 0,top,R0402 +R19,70.61,13.97,270,top,R0402 +R20,61.72,11.68, 0,top,R0402 +R21,59.18,11.68, 0,top,R0402 +R22,67.82,16.00,270,top,R0402 +R23,125.98,19.30, 0,top,R0402 +R24,125.98,14.22, 0,top,R0402 +R25,53.34,25.91,180,top,R0402 +R26,51.05,25.40,270,top,R0402 +R27,48.51,25.40, 90,top,R0402 +R28,45.97,17.27, 90,top,R0402 +R29,56.13,17.02,180,top,R0402 +R30,54.36,14.99,270,top,R0402 +R31,53.34,21.59, 0,top,R0402 +R32,54.61,19.05,180,top,R0402 +R33,53.34,22.86, 0,top,R0402 +R34,56.64,18.54, 90,top,R0402 +R35,56.13,15.49, 0,top,R0402 +R36,53.34,20.32, 0,top,R0402 +R37,42.67,18.54,180,top,R0402 +R38,43.43,17.53,180,top,R0402 +R39,43.43,21.08,180,top,R0402 +R40,43.43,13.97,180,top,R0402 +R41,43.43,12.70,180,top,R0402 +R42,42.67,20.07,180,top,R0402 +R43,59.69, 4.83, 0,top,R0603 +R44,72.64, 5.59, 0,top,R0603 +R45,84.84,24.89, 0,top,R0402 +R46,85.60,26.16, 0,top,R0402 +R47,40.39,35.05,180,top,R0402 +S1,82.04,16.00, 0,top,SM6MM +S2,63.50,16.00, 0,top,SM6MM +S3,91.44,25.15, 90,top,SM6MM +U1,81.53, 7.62,180,top,SOP65P640X120-14N +U2,113.79,21.65, 0,top,MODULE_ESP32WROOM32D +U3,29.72,33.02,270,top,SSOP20 +U4,54.36, 9.14,180,top,SOT23 +U5,60.45, 8.89,180,top,SOT23_6 +U6,49.53,19.30, 90,top,QFN50P400X400X100-25N +X2,21.34,30.73, 0,top,3.2X2.5_4P diff --git a/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Schematic.pdf b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Schematic.pdf new file mode 100644 index 0000000000..8c2eda04be Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_Schematic.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_TopAssembly.pdf b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_TopAssembly.pdf new file mode 100644 index 0000000000..dcce0b245a Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-D/files/BAAAHS-BRN01-D_TopAssembly.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_bottom_l4.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_bottom_l4.gbr new file mode 100644 index 0000000000..e88657a1b8 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_bottom_l4.gbr @@ -0,0 +1,8153 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INBottom Copper*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,1.016000*% +%ADD11C,1.778000*% +%ADD12C,1.700000*% +%ADD13C,2.540000*% +%ADD14R,3.810000X3.810000*% +%ADD15R,1.778000X1.778000*% +%ADD16C,0.756400*% +%ADD17C,0.711200*% +%ADD18C,0.203200*% +%ADD19C,0.279400*% +%ADD20C,0.228600*% +%ADD21C,0.812800*% +%ADD22C,0.956400*% +%ADD23C,2.540000*% +%ADD24C,0.406400*% + +G36* +X379561Y3767D02* +X379561Y3767D01* +X379590Y3764D01* +X379701Y3787D01* +X379813Y3803D01* +X379840Y3815D01* +X379869Y3820D01* +X379969Y3873D01* +X380072Y3919D01* +X380095Y3938D01* +X380121Y3951D01* +X380203Y4029D01* +X380289Y4102D01* +X380306Y4127D01* +X380327Y4147D01* +X380384Y4245D01* +X380447Y4339D01* +X380456Y4367D01* +X380471Y4392D01* +X380499Y4502D01* +X380533Y4610D01* +X380534Y4640D01* +X380541Y4668D01* +X380537Y4781D01* +X380540Y4894D01* +X380533Y4923D01* +X380532Y4952D01* +X380497Y5060D01* +X380468Y5169D01* +X380453Y5195D01* +X380444Y5223D01* +X380399Y5287D01* +X380323Y5414D01* +X380277Y5457D01* +X380249Y5496D01* +X378967Y6778D01* +X378967Y46562D01* +X380158Y47753D01* +X419942Y47753D01* +X421133Y46562D01* +X421133Y6778D01* +X419851Y5496D01* +X419833Y5472D01* +X419811Y5453D01* +X419748Y5359D01* +X419680Y5269D01* +X419669Y5241D01* +X419653Y5217D01* +X419619Y5109D01* +X419578Y5003D01* +X419576Y4974D01* +X419567Y4946D01* +X419564Y4832D01* +X419555Y4720D01* +X419561Y4691D01* +X419560Y4662D01* +X419589Y4552D01* +X419611Y4441D01* +X419624Y4415D01* +X419632Y4387D01* +X419689Y4289D01* +X419742Y4189D01* +X419762Y4167D01* +X419777Y4142D01* +X419859Y4065D01* +X419938Y3983D01* +X419963Y3968D01* +X419984Y3948D01* +X420085Y3896D01* +X420183Y3839D01* +X420211Y3832D01* +X420237Y3818D01* +X420315Y3805D01* +X420458Y3769D01* +X420521Y3771D01* +X420568Y3763D01* +X951032Y3763D01* +X951061Y3767D01* +X951090Y3764D01* +X951201Y3787D01* +X951313Y3803D01* +X951340Y3815D01* +X951369Y3820D01* +X951469Y3873D01* +X951572Y3919D01* +X951595Y3938D01* +X951621Y3951D01* +X951703Y4029D01* +X951789Y4102D01* +X951806Y4127D01* +X951827Y4147D01* +X951884Y4245D01* +X951947Y4339D01* +X951956Y4367D01* +X951971Y4392D01* +X951999Y4502D01* +X952033Y4610D01* +X952034Y4640D01* +X952041Y4668D01* +X952037Y4781D01* +X952040Y4894D01* +X952033Y4923D01* +X952032Y4952D01* +X951997Y5060D01* +X951968Y5169D01* +X951953Y5195D01* +X951944Y5223D01* +X951899Y5287D01* +X951823Y5414D01* +X951777Y5457D01* +X951749Y5496D01* +X950467Y6778D01* +X950467Y46562D01* +X951658Y47753D01* +X991442Y47753D01* +X992633Y46562D01* +X992633Y6778D01* +X991351Y5496D01* +X991333Y5472D01* +X991311Y5453D01* +X991248Y5359D01* +X991180Y5269D01* +X991169Y5241D01* +X991153Y5217D01* +X991119Y5109D01* +X991078Y5003D01* +X991076Y4974D01* +X991067Y4946D01* +X991064Y4832D01* +X991055Y4720D01* +X991061Y4691D01* +X991060Y4662D01* +X991089Y4552D01* +X991111Y4441D01* +X991124Y4415D01* +X991132Y4387D01* +X991189Y4289D01* +X991242Y4189D01* +X991262Y4167D01* +X991277Y4142D01* +X991359Y4065D01* +X991438Y3983D01* +X991463Y3968D01* +X991484Y3948D01* +X991585Y3896D01* +X991683Y3839D01* +X991711Y3832D01* +X991737Y3818D01* +X991815Y3805D01* +X991958Y3769D01* +X992021Y3771D01* +X992068Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X1212841Y308355D01* +X1212727Y308339D01* +X1212613Y308329D01* +X1212587Y308319D01* +X1212559Y308315D01* +X1212454Y308268D01* +X1212347Y308227D01* +X1212325Y308211D01* +X1212300Y308199D01* +X1212212Y308125D01* +X1212120Y308056D01* +X1212104Y308033D01* +X1212083Y308016D01* +X1212019Y307920D01* +X1211950Y307828D01* +X1211941Y307802D01* +X1211925Y307779D01* +X1211890Y307669D01* +X1211850Y307562D01* +X1211848Y307534D01* +X1211839Y307508D01* +X1211836Y307393D01* +X1211827Y307279D01* +X1211833Y307254D01* +X1211832Y307224D01* +X1211899Y306967D01* +X1211903Y306951D01* +X1212315Y305957D01* +X1212315Y303643D01* +X1211429Y301506D01* +X1209794Y299871D01* +X1207657Y298985D01* +X1205343Y298985D01* +X1203206Y299871D01* +X1201571Y301506D01* +X1200685Y303643D01* +X1200685Y305957D01* +X1201097Y306951D01* +X1201126Y307063D01* +X1201161Y307172D01* +X1201161Y307200D01* +X1201168Y307227D01* +X1201165Y307341D01* +X1201168Y307456D01* +X1201161Y307483D01* +X1201160Y307511D01* +X1201125Y307620D01* +X1201096Y307731D01* +X1201082Y307755D01* +X1201074Y307782D01* +X1201009Y307877D01* +X1200951Y307976D01* +X1200931Y307995D01* +X1200915Y308018D01* +X1200827Y308092D01* +X1200744Y308170D01* +X1200719Y308183D01* +X1200698Y308201D01* +X1200593Y308247D01* +X1200490Y308300D01* +X1200466Y308304D01* +X1200438Y308316D01* +X1200174Y308353D01* +X1200159Y308355D01* +X1076459Y308355D01* +X1076430Y308351D01* +X1076401Y308354D01* +X1076290Y308331D01* +X1076178Y308315D01* +X1076151Y308303D01* +X1076122Y308298D01* +X1076022Y308246D01* +X1075918Y308199D01* +X1075896Y308180D01* +X1075870Y308167D01* +X1075788Y308089D01* +X1075701Y308016D01* +X1075685Y307991D01* +X1075664Y307971D01* +X1075606Y307873D01* +X1075544Y307779D01* +X1075535Y307751D01* +X1075520Y307726D01* +X1075492Y307616D01* +X1075458Y307508D01* +X1075457Y307478D01* +X1075450Y307450D01* +X1075453Y307337D01* +X1075450Y307224D01* +X1075458Y307195D01* +X1075459Y307166D01* +X1075494Y307058D01* +X1075522Y306949D01* +X1075537Y306923D01* +X1075546Y306895D01* +X1075592Y306832D01* +X1075668Y306704D01* +X1075684Y306689D01* +X1075685Y306687D01* +X1075716Y306658D01* +X1075741Y306622D01* +X1076809Y305554D01* +X1077695Y303417D01* +X1077695Y301103D01* +X1076809Y298966D01* +X1075174Y297331D01* +X1073037Y296445D01* +X1070723Y296445D01* +X1068586Y297331D01* +X1066951Y298966D01* +X1066065Y301103D01* +X1066065Y303417D01* +X1066951Y305554D01* +X1068019Y306622D01* +X1068031Y306638D01* +X1068041Y306647D01* +X1068045Y306653D01* +X1068059Y306665D01* +X1068122Y306759D01* +X1068190Y306849D01* +X1068200Y306877D01* +X1068216Y306901D01* +X1068251Y307009D01* +X1068291Y307115D01* +X1068293Y307144D01* +X1068302Y307172D01* +X1068305Y307286D01* +X1068315Y307398D01* +X1068309Y307427D01* +X1068310Y307456D01* +X1068281Y307566D01* +X1068259Y307677D01* +X1068245Y307703D01* +X1068238Y307731D01* +X1068180Y307829D01* +X1068128Y307929D01* +X1068107Y307951D01* +X1068092Y307976D01* +X1068010Y308053D01* +X1067932Y308135D01* +X1067907Y308150D01* +X1067885Y308170D01* +X1067784Y308222D01* +X1067687Y308279D01* +X1067658Y308286D01* +X1067632Y308300D01* +X1067555Y308313D01* +X1067411Y308349D01* +X1067349Y308347D01* +X1067301Y308355D01* +X736099Y308355D01* +X736070Y308351D01* +X736041Y308354D01* +X735930Y308331D01* +X735818Y308315D01* +X735791Y308303D01* +X735762Y308298D01* +X735662Y308246D01* +X735558Y308199D01* +X735536Y308180D01* +X735510Y308167D01* +X735428Y308089D01* +X735341Y308016D01* +X735325Y307991D01* +X735304Y307971D01* +X735246Y307873D01* +X735184Y307779D01* +X735175Y307751D01* +X735160Y307726D01* +X735132Y307616D01* +X735098Y307508D01* +X735097Y307478D01* +X735090Y307450D01* +X735093Y307337D01* +X735090Y307224D01* +X735098Y307195D01* +X735099Y307166D01* +X735134Y307058D01* +X735162Y306949D01* +X735177Y306923D01* +X735186Y306895D01* +X735232Y306832D01* +X735308Y306704D01* +X735324Y306689D01* +X735325Y306687D01* +X735356Y306658D01* +X735381Y306622D01* +X736449Y305554D01* +X737335Y303417D01* +X737335Y301103D01* +X736449Y298966D01* +X734814Y297331D01* +X732677Y296445D01* +X730363Y296445D01* +X728226Y297331D01* +X726591Y298966D01* +X725705Y301103D01* +X725705Y303417D01* +X726591Y305554D01* +X727659Y306622D01* +X727671Y306638D01* +X727681Y306647D01* +X727685Y306653D01* +X727699Y306665D01* +X727762Y306759D01* +X727830Y306849D01* +X727840Y306877D01* +X727856Y306901D01* +X727891Y307009D01* +X727931Y307115D01* +X727933Y307144D01* +X727942Y307172D01* +X727945Y307286D01* +X727955Y307398D01* +X727949Y307427D01* +X727950Y307456D01* +X727921Y307566D01* +X727899Y307677D01* +X727885Y307703D01* +X727878Y307731D01* +X727820Y307829D01* +X727768Y307929D01* +X727747Y307951D01* +X727732Y307976D01* +X727650Y308053D01* +X727572Y308135D01* +X727547Y308150D01* +X727525Y308170D01* +X727424Y308222D01* +X727327Y308279D01* +X727298Y308286D01* +X727272Y308300D01* +X727195Y308313D01* +X727051Y308349D01* +X726989Y308347D01* +X726941Y308355D01* +X682759Y308355D01* +X682730Y308351D01* +X682701Y308354D01* +X682590Y308331D01* +X682478Y308315D01* +X682451Y308303D01* +X682422Y308298D01* +X682322Y308246D01* +X682218Y308199D01* +X682196Y308180D01* +X682170Y308167D01* +X682088Y308089D01* +X682001Y308016D01* +X681985Y307991D01* +X681964Y307971D01* +X681906Y307873D01* +X681844Y307779D01* +X681835Y307751D01* +X681820Y307726D01* +X681792Y307616D01* +X681758Y307508D01* +X681757Y307478D01* +X681750Y307450D01* +X681753Y307337D01* +X681750Y307224D01* +X681758Y307195D01* +X681759Y307166D01* +X681794Y307058D01* +X681822Y306949D01* +X681837Y306923D01* +X681846Y306895D01* +X681892Y306832D01* +X681968Y306704D01* +X681984Y306689D01* +X681985Y306687D01* +X682016Y306658D01* +X682041Y306622D01* +X683109Y305554D01* +X683995Y303417D01* +X683995Y301103D01* +X683109Y298966D01* +X681474Y297331D01* +X679337Y296445D01* +X677023Y296445D01* +X674886Y297331D01* +X673251Y298966D01* +X672365Y301103D01* +X672365Y303417D01* +X673251Y305554D01* +X674319Y306622D01* +X674331Y306638D01* +X674341Y306647D01* +X674345Y306653D01* +X674359Y306665D01* +X674422Y306759D01* +X674490Y306849D01* +X674500Y306877D01* +X674516Y306901D01* +X674551Y307009D01* +X674591Y307115D01* +X674593Y307144D01* +X674602Y307172D01* +X674605Y307286D01* +X674615Y307398D01* +X674609Y307427D01* +X674610Y307456D01* +X674581Y307566D01* +X674559Y307677D01* +X674545Y307703D01* +X674538Y307731D01* +X674480Y307829D01* +X674428Y307929D01* +X674407Y307951D01* +X674392Y307976D01* +X674310Y308053D01* +X674232Y308135D01* +X674207Y308150D01* +X674185Y308170D01* +X674084Y308222D01* +X673987Y308279D01* +X673958Y308286D01* +X673932Y308300D01* +X673855Y308313D01* +X673711Y308349D01* +X673649Y308347D01* +X673601Y308355D01* +X577595Y308355D01* +X577595Y318001D01* +X577591Y318030D01* +X577594Y318059D01* +X577571Y318170D01* +X577555Y318282D01* +X577543Y318309D01* +X577538Y318338D01* +X577486Y318438D01* +X577439Y318542D01* +X577420Y318564D01* +X577407Y318590D01* +X577329Y318672D01* +X577256Y318759D01* +X577231Y318775D01* +X577211Y318796D01* +X577113Y318854D01* +X577019Y318916D01* +X576991Y318925D01* +X576966Y318940D01* +X576856Y318968D01* +X576748Y319002D01* +X576718Y319003D01* +X576690Y319010D01* +X576577Y319007D01* +X576464Y319010D01* +X576435Y319002D01* +X576406Y319001D01* +X576298Y318966D01* +X576189Y318938D01* +X576163Y318923D01* +X576135Y318914D01* +X576072Y318868D01* +X575944Y318792D01* +X575901Y318747D01* +X575862Y318719D01* +X574794Y317651D01* +X572657Y316765D01* +X570343Y316765D01* +X568206Y317651D01* +X566571Y319286D01* +X565685Y321423D01* +X565685Y323737D01* +X566571Y325874D01* +X568206Y327509D01* +X570343Y328395D01* +X572657Y328395D01* +X574794Y327509D01* +X575862Y326441D01* +X575886Y326424D01* +X575905Y326401D01* +X575999Y326338D01* +X576089Y326270D01* +X576117Y326260D01* +X576141Y326244D01* +X576249Y326209D01* +X576355Y326169D01* +X576384Y326167D01* +X576412Y326158D01* +X576526Y326155D01* +X576638Y326145D01* +X576667Y326151D01* +X576696Y326150D01* +X576806Y326179D01* +X576917Y326201D01* +X576943Y326215D01* +X576971Y326222D01* +X577069Y326280D01* +X577169Y326332D01* +X577191Y326353D01* +X577216Y326368D01* +X577293Y326450D01* +X577375Y326528D01* +X577390Y326553D01* +X577410Y326575D01* +X577462Y326676D01* +X577519Y326773D01* +X577526Y326802D01* +X577540Y326828D01* +X577553Y326905D01* +X577589Y327049D01* +X577587Y327111D01* +X577595Y327159D01* +X577595Y366261D01* +X577591Y366290D01* +X577594Y366319D01* +X577571Y366430D01* +X577555Y366542D01* +X577543Y366569D01* +X577538Y366598D01* +X577486Y366698D01* +X577439Y366802D01* +X577420Y366824D01* +X577407Y366850D01* +X577329Y366932D01* +X577256Y367019D01* +X577231Y367035D01* +X577211Y367056D01* +X577113Y367114D01* +X577019Y367176D01* +X576991Y367185D01* +X576966Y367200D01* +X576856Y367228D01* +X576748Y367262D01* +X576718Y367263D01* +X576690Y367270D01* +X576577Y367267D01* +X576464Y367270D01* +X576435Y367262D01* +X576406Y367261D01* +X576298Y367226D01* +X576189Y367198D01* +X576163Y367183D01* +X576135Y367174D01* +X576072Y367128D01* +X575944Y367052D01* +X575901Y367007D01* +X575862Y366979D01* +X574794Y365911D01* +X572657Y365025D01* +X570343Y365025D01* +X568206Y365911D01* +X566571Y367546D01* +X565685Y369683D01* +X565685Y371997D01* +X566571Y374134D01* +X567941Y375504D01* +X567959Y375528D01* +X567981Y375547D01* +X568044Y375641D01* +X568112Y375731D01* +X568122Y375759D01* +X568138Y375783D01* +X568173Y375891D01* +X568213Y375997D01* +X568215Y376026D01* +X568224Y376054D01* +X568227Y376168D01* +X568237Y376280D01* +X568231Y376309D01* +X568232Y376338D01* +X568203Y376448D01* +X568181Y376559D01* +X568167Y376585D01* +X568160Y376613D01* +X568102Y376711D01* +X568050Y376811D01* +X568029Y376833D01* +X568014Y376858D01* +X567932Y376935D01* +X567854Y377017D01* +X567829Y377032D01* +X567807Y377052D01* +X567706Y377104D01* +X567609Y377161D01* +X567580Y377168D01* +X567554Y377182D01* +X567477Y377195D01* +X567333Y377231D01* +X567271Y377229D01* +X567223Y377237D01* +X509737Y377237D01* +X509708Y377233D01* +X509679Y377236D01* +X509568Y377213D01* +X509456Y377197D01* +X509429Y377185D01* +X509400Y377180D01* +X509299Y377127D01* +X509196Y377081D01* +X509174Y377062D01* +X509148Y377049D01* +X509066Y376971D01* +X508979Y376898D01* +X508963Y376873D01* +X508942Y376853D01* +X508884Y376755D01* +X508822Y376661D01* +X508813Y376633D01* +X508798Y376608D01* +X508770Y376498D01* +X508736Y376390D01* +X508735Y376360D01* +X508728Y376332D01* +X508731Y376219D01* +X508728Y376106D01* +X508736Y376077D01* +X508737Y376048D01* +X508772Y375940D01* +X508800Y375831D01* +X508815Y375805D01* +X508824Y375777D01* +X508870Y375713D01* +X508946Y375586D01* +X508991Y375543D01* +X509019Y375504D01* +X510389Y374134D01* +X511275Y371997D01* +X511275Y369683D01* +X510389Y367546D01* +X508754Y365911D01* +X506617Y365025D01* +X504303Y365025D01* +X502166Y365911D01* +X500531Y367546D01* +X499645Y369683D01* +X499645Y371997D01* +X500531Y374134D01* +X501901Y375504D01* +X501919Y375528D01* +X501941Y375547D01* +X502004Y375641D01* +X502072Y375731D01* +X502082Y375759D01* +X502098Y375783D01* +X502133Y375891D01* +X502173Y375997D01* +X502175Y376026D01* +X502184Y376054D01* +X502187Y376168D01* +X502197Y376280D01* +X502191Y376309D01* +X502192Y376338D01* +X502163Y376448D01* +X502141Y376559D01* +X502127Y376585D01* +X502120Y376613D01* +X502062Y376711D01* +X502010Y376811D01* +X501989Y376833D01* +X501974Y376858D01* +X501892Y376935D01* +X501814Y377017D01* +X501789Y377032D01* +X501767Y377052D01* +X501666Y377104D01* +X501569Y377161D01* +X501540Y377168D01* +X501514Y377182D01* +X501437Y377195D01* +X501293Y377231D01* +X501231Y377229D01* +X501183Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X379532Y3763D01* +X379561Y3767D01* +G37* +%LPC*% +G36* +X1220991Y116105D02* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218802Y126797D01* +X1218854Y126867D01* +X1218914Y126931D01* +X1218940Y126980D01* +X1218973Y127024D01* +X1219004Y127106D01* +X1219044Y127184D01* +X1219052Y127232D01* +X1219074Y127290D01* +X1219086Y127438D01* +X1219099Y127515D01* +X1219099Y150309D01* +X1219087Y150395D01* +X1219084Y150483D01* +X1219067Y150535D01* +X1219059Y150590D01* +X1219024Y150670D01* +X1218997Y150753D01* +X1218969Y150792D01* +X1218943Y150850D01* +X1218847Y150963D01* +X1218802Y151027D01* +X1201348Y168481D01* +X1201324Y168498D01* +X1201305Y168521D01* +X1201211Y168583D01* +X1201121Y168651D01* +X1201093Y168662D01* +X1201069Y168678D01* +X1200961Y168712D01* +X1200855Y168753D01* +X1200826Y168755D01* +X1200798Y168764D01* +X1200684Y168767D01* +X1200572Y168776D01* +X1200543Y168771D01* +X1200514Y168771D01* +X1200404Y168743D01* +X1200293Y168720D01* +X1200267Y168707D01* +X1200239Y168699D01* +X1200141Y168642D01* +X1200041Y168589D01* +X1200019Y168569D01* +X1199994Y168554D01* +X1199917Y168472D01* +X1199835Y168394D01* +X1199820Y168368D01* +X1199800Y168347D01* +X1199748Y168246D01* +X1199691Y168148D01* +X1199684Y168120D01* +X1199670Y168094D01* +X1199657Y168016D01* +X1199621Y167873D01* +X1199623Y167810D01* +X1199615Y167763D01* +X1199615Y166483D01* +X1198729Y164346D01* +X1197094Y162711D01* +X1194957Y161825D01* +X1192643Y161825D01* +X1190506Y162711D01* +X1188871Y164346D01* +X1187985Y166483D01* +X1187985Y168797D01* +X1188818Y170807D01* +X1188847Y170919D01* +X1188882Y171028D01* +X1188882Y171056D01* +X1188889Y171083D01* +X1188886Y171197D01* +X1188889Y171312D01* +X1188882Y171339D01* +X1188881Y171367D01* +X1188846Y171476D01* +X1188817Y171587D01* +X1188803Y171611D01* +X1188794Y171638D01* +X1188730Y171733D01* +X1188672Y171832D01* +X1188652Y171851D01* +X1188636Y171874D01* +X1188548Y171948D01* +X1188464Y172026D01* +X1188440Y172039D01* +X1188419Y172057D01* +X1188314Y172103D01* +X1188211Y172156D01* +X1188187Y172160D01* +X1188159Y172172D01* +X1187895Y172209D01* +X1187880Y172211D01* +X1166700Y172211D01* +X1166586Y172195D01* +X1166472Y172185D01* +X1166446Y172175D01* +X1166418Y172171D01* +X1166313Y172124D01* +X1166206Y172083D01* +X1166184Y172067D01* +X1166159Y172055D01* +X1166071Y171981D01* +X1165980Y171912D01* +X1165963Y171889D01* +X1165942Y171872D01* +X1165878Y171776D01* +X1165809Y171684D01* +X1165800Y171658D01* +X1165784Y171635D01* +X1165750Y171525D01* +X1165709Y171418D01* +X1165707Y171390D01* +X1165698Y171364D01* +X1165696Y171249D01* +X1165686Y171135D01* +X1165692Y171110D01* +X1165691Y171080D01* +X1165758Y170823D01* +X1165762Y170807D01* +X1166595Y168797D01* +X1166595Y166483D01* +X1165709Y164346D01* +X1164126Y162763D01* +X1164074Y162693D01* +X1164014Y162629D01* +X1163988Y162580D01* +X1163955Y162536D01* +X1163924Y162454D01* +X1163884Y162376D01* +X1163876Y162328D01* +X1163854Y162270D01* +X1163842Y162122D01* +X1163829Y162045D01* +X1163829Y161798D01* +X1134392Y132361D01* +X912848Y132361D01* +X909016Y136194D01* +X909014Y136195D01* +X909013Y136196D01* +X908902Y136279D01* +X908788Y136365D01* +X908787Y136365D01* +X908785Y136366D01* +X908655Y136416D01* +X908523Y136466D01* +X908521Y136466D01* +X908520Y136467D01* +X908378Y136478D01* +X908239Y136489D01* +X908238Y136489D01* +X908236Y136489D01* +X908221Y136486D01* +X907961Y136434D01* +X907945Y136425D01* +X905623Y136425D01* +X903486Y137311D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X921821Y150104D01* +X921905Y150083D01* +X921985Y150052D01* +X922042Y150047D01* +X922097Y150033D01* +X922182Y150036D01* +X922268Y150028D01* +X922324Y150040D01* +X922381Y150041D01* +X922462Y150067D01* +X922547Y150084D01* +X922597Y150111D01* +X922652Y150128D01* +X922723Y150176D01* +X922799Y150215D01* +X922840Y150254D01* +X922888Y150286D01* +X922943Y150352D01* +X923005Y150411D01* +X923034Y150460D01* +X923071Y150504D01* +X923106Y150582D01* +X923149Y150656D01* +X923163Y150711D01* +X923186Y150763D01* +X923198Y150849D01* +X923219Y150932D01* +X923217Y150989D01* +X923225Y151045D01* +X923213Y151130D01* +X923210Y151216D01* +X923193Y151270D01* +X923184Y151326D01* +X923149Y151405D01* +X923123Y151486D01* +X923094Y151527D01* +X923067Y151585D01* +X922973Y151696D01* +X922928Y151760D01* +X921344Y153344D01* +X921274Y153396D01* +X921210Y153456D01* +X921161Y153482D01* +X921116Y153515D01* +X921035Y153546D01* +X920957Y153586D01* +X920909Y153594D01* +X920851Y153616D01* +X920703Y153628D01* +X920626Y153641D01* +X896147Y153641D01* +X890801Y158988D01* +X890731Y159040D01* +X890667Y159100D01* +X890617Y159126D01* +X890573Y159159D01* +X890492Y159190D01* +X890414Y159230D01* +X890366Y159238D01* +X890308Y159260D01* +X890160Y159272D01* +X890083Y159285D01* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883185Y163943D01* +X883185Y166257D01* +X884071Y168394D01* +X885706Y170029D01* +X886258Y170258D01* +X886332Y170302D01* +X886410Y170337D01* +X886454Y170374D01* +X886503Y170403D01* +X886562Y170465D01* +X886627Y170521D01* +X886659Y170568D01* +X886698Y170609D01* +X886737Y170686D01* +X886785Y170757D01* +X886802Y170811D01* +X886828Y170862D01* +X886845Y170946D01* +X886871Y171028D01* +X886872Y171085D01* +X886883Y171141D01* +X886876Y171226D01* +X886878Y171312D01* +X886864Y171367D01* +X886859Y171424D01* +X886828Y171505D01* +X886806Y171587D01* +X886777Y171636D01* +X886757Y171689D01* +X886705Y171758D01* +X886661Y171832D01* +X886620Y171871D01* +X886585Y171916D01* +X886516Y171968D01* +X886454Y172026D01* +X886403Y172052D01* +X886357Y172086D01* +X886277Y172117D01* +X886201Y172156D01* +X886152Y172164D01* +X886092Y172187D01* +X885947Y172198D01* +X885870Y172211D01* +X789083Y172211D01* +X788997Y172199D01* +X788909Y172196D01* +X788857Y172179D01* +X788802Y172171D01* +X788722Y172136D01* +X788639Y172109D01* +X788600Y172081D01* +X788542Y172055D01* +X788429Y171959D01* +X788365Y171914D01* +X765803Y149351D01* +X708495Y149351D01* +X705929Y151917D01* +X705860Y151969D01* +X705796Y152029D01* +X705746Y152054D01* +X705702Y152088D01* +X705621Y152119D01* +X705543Y152159D01* +X705495Y152167D01* +X705437Y152189D01* +X705289Y152201D01* +X705212Y152214D01* +X702972Y152214D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X699199Y161323D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707423Y162958D01* +X709058Y161323D01* +X709944Y159185D01* +X709944Y156946D01* +X709956Y156860D01* +X709959Y156772D01* +X709976Y156720D01* +X709983Y156665D01* +X710019Y156585D01* +X710046Y156502D01* +X710074Y156462D01* +X710100Y156405D01* +X710196Y156292D01* +X710241Y156228D01* +X710723Y155746D01* +X710793Y155694D01* +X710857Y155634D01* +X710906Y155608D01* +X710950Y155575D01* +X711032Y155544D01* +X711110Y155504D01* +X711158Y155496D01* +X711216Y155474D01* +X711364Y155462D01* +X711441Y155449D01* +X753540Y155449D01* +X753654Y155465D01* +X753768Y155475D01* +X753794Y155485D01* +X753822Y155489D01* +X753927Y155536D01* +X754034Y155577D01* +X754056Y155593D01* +X754081Y155605D01* +X754169Y155679D01* +X754260Y155748D01* +X754277Y155771D01* +X754298Y155788D01* +X754362Y155884D01* +X754431Y155976D01* +X754440Y156002D01* +X754456Y156025D01* +X754490Y156135D01* +X754531Y156242D01* +X754533Y156270D01* +X754542Y156296D01* +X754544Y156411D01* +X754554Y156525D01* +X754548Y156550D01* +X754549Y156580D01* +X754482Y156837D01* +X754478Y156853D01* +X753645Y158863D01* +X753645Y161177D01* +X754531Y163314D01* +X756166Y164949D01* +X756718Y165178D01* +X756792Y165222D01* +X756870Y165257D01* +X756914Y165294D01* +X756963Y165323D01* +X757022Y165385D01* +X757087Y165441D01* +X757119Y165488D01* +X757158Y165529D01* +X757197Y165606D01* +X757245Y165677D01* +X757262Y165731D01* +X757288Y165782D01* +X757305Y165866D01* +X757331Y165948D01* +X757332Y166005D01* +X757343Y166061D01* +X757336Y166146D01* +X757338Y166232D01* +X757324Y166287D01* +X757319Y166344D01* +X757288Y166424D01* +X757266Y166507D01* +X757237Y166556D01* +X757217Y166609D01* +X757165Y166678D01* +X757121Y166752D01* +X757080Y166791D01* +X757045Y166836D01* +X756976Y166888D01* +X756914Y166946D01* +X756863Y166972D01* +X756818Y167006D01* +X756737Y167037D01* +X756661Y167076D01* +X756612Y167084D01* +X756552Y167107D01* +X756407Y167118D01* +X756330Y167131D01* +X716795Y167131D01* +X716708Y167119D01* +X716621Y167116D01* +X716568Y167099D01* +X716514Y167091D01* +X716434Y167056D01* +X716351Y167029D01* +X716311Y167001D01* +X716254Y166975D01* +X716141Y166879D01* +X716077Y166834D01* +X714494Y165251D01* +X712357Y164365D01* +X710043Y164365D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716077Y173526D01* +X716147Y173474D01* +X716211Y173414D01* +X716260Y173388D01* +X716304Y173355D01* +X716386Y173324D01* +X716464Y173284D01* +X716512Y173276D01* +X716570Y173254D01* +X716718Y173242D01* +X716795Y173229D01* +X757777Y173229D01* +X757863Y173241D01* +X757951Y173244D01* +X758003Y173261D01* +X758058Y173269D01* +X758138Y173304D01* +X758221Y173331D01* +X758260Y173359D01* +X758318Y173385D01* +X758431Y173481D01* +X758495Y173526D01* +X775977Y191009D01* +X991863Y191009D01* +X993879Y188992D01* +X993949Y188940D01* +X994013Y188880D01* +X994063Y188854D01* +X994107Y188821D01* +X994188Y188790D01* +X994266Y188750D01* +X994314Y188742D01* +X994372Y188720D01* +X994520Y188708D01* +X994597Y188695D01* +X996837Y188695D01* +X998974Y187809D01* +X1000609Y186174D01* +X1001495Y184037D01* +X1001495Y181723D01* +X1000609Y179586D01* +X998974Y177951D01* +X996837Y177065D01* +X994523Y177065D01* +X992386Y177951D01* +X990751Y179586D01* +X989865Y181723D01* +X989865Y183896D01* +X989857Y183954D01* +X989859Y184012D01* +X989837Y184094D01* +X989825Y184178D01* +X989802Y184231D01* +X989787Y184287D01* +X989744Y184360D01* +X989709Y184437D01* +X989671Y184482D01* +X989642Y184532D01* +X989580Y184590D01* +X989526Y184654D01* +X989477Y184686D01* +X989434Y184726D01* +X989359Y184765D01* +X989289Y184812D01* +X989233Y184829D01* +X989181Y184856D01* +X989113Y184867D01* +X989018Y184897D01* +X988918Y184900D01* +X988850Y184911D01* +X977551Y184911D01* +X977522Y184907D01* +X977493Y184910D01* +X977382Y184887D01* +X977270Y184871D01* +X977243Y184859D01* +X977214Y184854D01* +X977114Y184802D01* +X977010Y184755D01* +X976988Y184736D01* +X976962Y184723D01* +X976880Y184645D01* +X976793Y184572D01* +X976777Y184547D01* +X976756Y184527D01* +X976699Y184429D01* +X976636Y184335D01* +X976627Y184307D01* +X976612Y184282D01* +X976584Y184172D01* +X976550Y184064D01* +X976549Y184034D01* +X976542Y184006D01* +X976546Y183893D01* +X976543Y183780D01* +X976550Y183751D01* +X976551Y183722D01* +X976586Y183614D01* +X976615Y183505D01* +X976630Y183479D01* +X976639Y183451D01* +X976684Y183388D01* +X976760Y183260D01* +X976805Y183217D01* +X976833Y183178D01* +X981179Y178832D01* +X981249Y178780D01* +X981313Y178720D01* +X981363Y178694D01* +X981407Y178661D01* +X981488Y178630D01* +X981566Y178590D01* +X981614Y178582D01* +X981672Y178560D01* +X981820Y178548D01* +X981897Y178535D01* +X984137Y178535D01* +X986274Y177649D01* +X987909Y176014D01* +X988795Y173877D01* +X988795Y171563D01* +X987909Y169426D01* +X986274Y167791D01* +X984137Y166905D01* +X981823Y166905D01* +X979914Y167696D01* +X979886Y167703D01* +X979860Y167717D01* +X979749Y167739D01* +X979639Y167767D01* +X979610Y167766D01* +X979581Y167772D01* +X979468Y167762D01* +X979355Y167759D01* +X979327Y167750D01* +X979298Y167747D01* +X979192Y167707D01* +X979084Y167672D01* +X979060Y167656D01* +X979032Y167645D01* +X978942Y167577D01* +X978848Y167514D01* +X978829Y167491D01* +X978806Y167474D01* +X978738Y167383D01* +X978665Y167296D01* +X978653Y167269D01* +X978636Y167246D01* +X978596Y167140D01* +X978550Y167036D01* +X978546Y167007D01* +X978535Y166980D01* +X978526Y166867D01* +X978511Y166755D01* +X978515Y166726D01* +X978513Y166697D01* +X978530Y166620D01* +X978551Y166474D01* +X978577Y166416D01* +X978588Y166369D01* +X978635Y166257D01* +X978635Y163943D01* +X977749Y161806D01* +X976114Y160171D01* +X973977Y159285D01* +X971663Y159285D01* +X969526Y160171D01* +X967891Y161806D01* +X967005Y163943D01* +X967005Y166183D01* +X966993Y166269D01* +X966990Y166357D01* +X966973Y166409D01* +X966965Y166464D01* +X966930Y166544D01* +X966903Y166627D01* +X966875Y166666D01* +X966849Y166724D01* +X966784Y166800D01* +X966761Y166839D01* +X966733Y166865D01* +X966708Y166901D01* +X961695Y171914D01* +X961625Y171966D01* +X961561Y172026D01* +X961511Y172052D01* +X961467Y172085D01* +X961386Y172116D01* +X961308Y172156D01* +X961260Y172164D01* +X961202Y172186D01* +X961054Y172198D01* +X960977Y172211D01* +X930155Y172211D01* +X930068Y172199D01* +X929981Y172196D01* +X929928Y172179D01* +X929874Y172171D01* +X929794Y172136D01* +X929711Y172109D01* +X929671Y172081D01* +X929614Y172055D01* +X929501Y171959D01* +X929437Y171914D01* +X927854Y170331D01* +X925717Y169445D01* +X923403Y169445D01* +X921266Y170331D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919578Y178427D01* +X919607Y178539D01* +X919642Y178648D01* +X919642Y178676D01* +X919649Y178703D01* +X919646Y178817D01* +X919649Y178932D01* +X919642Y178959D01* +X919641Y178987D01* +X919606Y179096D01* +X919577Y179207D01* +X919563Y179231D01* +X919554Y179258D01* +X919490Y179353D01* +X919432Y179452D01* +X919412Y179471D01* +X919396Y179494D01* +X919308Y179568D01* +X919224Y179646D01* +X919200Y179659D01* +X919179Y179677D01* +X919074Y179723D01* +X918971Y179776D01* +X918947Y179780D01* +X918919Y179792D01* +X918655Y179829D01* +X918640Y179831D01* +X915240Y179831D01* +X915126Y179815D01* +X915012Y179805D01* +X914986Y179795D01* +X914958Y179791D01* +X914853Y179744D01* +X914746Y179703D01* +X914724Y179687D01* +X914699Y179675D01* +X914611Y179601D01* +X914520Y179532D01* +X914503Y179509D01* +X914482Y179492D01* +X914418Y179396D01* +X914349Y179304D01* +X914340Y179278D01* +X914324Y179255D01* +X914290Y179145D01* +X914249Y179038D01* +X914247Y179010D01* +X914238Y178984D01* +X914236Y178869D01* +X914226Y178755D01* +X914232Y178730D01* +X914231Y178700D01* +X914298Y178442D01* +X914302Y178427D01* +X915135Y176417D01* +X915135Y174103D01* +X914249Y171966D01* +X912614Y170331D01* +X910437Y169429D01* +X910400Y169421D01* +X910288Y169405D01* +X910261Y169393D01* +X910232Y169388D01* +X910131Y169335D01* +X910028Y169289D01* +X910006Y169270D01* +X909980Y169257D01* +X909898Y169179D01* +X909811Y169106D01* +X909795Y169081D01* +X909774Y169061D01* +X909716Y168963D01* +X909654Y168869D01* +X909645Y168841D01* +X909630Y168816D01* +X909602Y168706D01* +X909568Y168598D01* +X909567Y168568D01* +X909560Y168540D01* +X909563Y168427D01* +X909560Y168314D01* +X909568Y168285D01* +X909569Y168256D01* +X909604Y168148D01* +X909632Y168039D01* +X909647Y168013D01* +X909656Y167985D01* +X909702Y167921D01* +X909778Y167794D01* +X909823Y167751D01* +X909851Y167712D01* +X910638Y166926D01* +X910708Y166873D01* +X910771Y166813D01* +X910821Y166788D01* +X910865Y166755D01* +X910947Y166724D01* +X911024Y166684D01* +X911072Y166676D01* +X911130Y166654D01* +X911278Y166641D01* +X911356Y166628D01* +X924803Y166628D01* +X934895Y156536D01* +X934965Y156484D01* +X935029Y156424D01* +X935079Y156398D01* +X935123Y156365D01* +X935204Y156334D01* +X935282Y156294D01* +X935330Y156286D01* +X935388Y156264D01* +X935536Y156252D01* +X935613Y156239D01* +X1025719Y156239D01* +X1025748Y156243D01* +X1025777Y156240D01* +X1025888Y156263D01* +X1026000Y156279D01* +X1026027Y156291D01* +X1026056Y156296D01* +X1026156Y156349D01* +X1026260Y156395D01* +X1026282Y156414D01* +X1026308Y156427D01* +X1026390Y156505D01* +X1026477Y156578D01* +X1026493Y156603D01* +X1026514Y156623D01* +X1026571Y156721D01* +X1026634Y156815D01* +X1026643Y156843D01* +X1026658Y156868D01* +X1026686Y156978D01* +X1026720Y157086D01* +X1026721Y157116D01* +X1026728Y157144D01* +X1026724Y157257D01* +X1026727Y157370D01* +X1026720Y157399D01* +X1026719Y157428D01* +X1026684Y157536D01* +X1026655Y157645D01* +X1026641Y157671D01* +X1026631Y157699D01* +X1026586Y157763D01* +X1026510Y157890D01* +X1026465Y157933D01* +X1026437Y157972D01* +X1025580Y158829D01* +X1025421Y158988D01* +X1025351Y159040D01* +X1025287Y159100D01* +X1025237Y159126D01* +X1025193Y159159D01* +X1025112Y159190D01* +X1025034Y159230D01* +X1024986Y159238D01* +X1024928Y159260D01* +X1024780Y159272D01* +X1024703Y159285D01* +X1022463Y159285D01* +X1020326Y160171D01* +X1018691Y161806D01* +X1017805Y163943D01* +X1017805Y166257D01* +X1018691Y168394D01* +X1019759Y169462D01* +X1019794Y169509D01* +X1019836Y169549D01* +X1019879Y169622D01* +X1019930Y169689D01* +X1019951Y169744D01* +X1019980Y169794D01* +X1020001Y169876D01* +X1020031Y169955D01* +X1020036Y170013D01* +X1020050Y170070D01* +X1020048Y170154D01* +X1020055Y170238D01* +X1020043Y170296D01* +X1020041Y170354D01* +X1020015Y170434D01* +X1019999Y170517D01* +X1019972Y170569D01* +X1019954Y170625D01* +X1019914Y170681D01* +X1019868Y170769D01* +X1019799Y170842D01* +X1019759Y170898D01* +X1018691Y171966D01* +X1017805Y174103D01* +X1017805Y176343D01* +X1017793Y176429D01* +X1017790Y176517D01* +X1017773Y176569D01* +X1017765Y176624D01* +X1017730Y176704D01* +X1017703Y176787D01* +X1017675Y176826D01* +X1017649Y176884D01* +X1017594Y176948D01* +X1017569Y176991D01* +X1017534Y177024D01* +X1017508Y177061D01* +X1001827Y192742D01* +X1001757Y192794D01* +X1001693Y192854D01* +X1001643Y192880D01* +X1001599Y192913D01* +X1001518Y192944D01* +X1001440Y192984D01* +X1001392Y192992D01* +X1001334Y193014D01* +X1001186Y193026D01* +X1001109Y193039D01* +X610267Y193039D01* +X610181Y193027D01* +X610093Y193024D01* +X610041Y193007D01* +X609986Y192999D01* +X609906Y192964D01* +X609823Y192937D01* +X609784Y192909D01* +X609726Y192883D01* +X609613Y192787D01* +X609549Y192742D01* +X576668Y159860D01* +X508395Y159860D01* +X508308Y159848D01* +X508221Y159845D01* +X508168Y159828D01* +X508114Y159820D01* +X508034Y159784D01* +X507951Y159758D01* +X507911Y159730D01* +X507854Y159704D01* +X507741Y159608D01* +X507677Y159563D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X496985Y161752D01* +X496985Y164065D01* +X497871Y166203D01* +X499506Y167838D01* +X501643Y168724D01* +X503957Y168724D01* +X506094Y167838D01* +X507677Y166255D01* +X507747Y166202D01* +X507811Y166142D01* +X507860Y166117D01* +X507904Y166084D01* +X507986Y166053D01* +X508064Y166013D01* +X508112Y166005D01* +X508170Y165983D01* +X508318Y165971D01* +X508395Y165958D01* +X573721Y165958D01* +X573808Y165970D01* +X573895Y165973D01* +X573948Y165990D01* +X574003Y165997D01* +X574083Y166033D01* +X574166Y166060D01* +X574205Y166088D01* +X574262Y166114D01* +X574376Y166210D01* +X574439Y166255D01* +X607321Y199137D01* +X1004055Y199137D01* +X1021819Y181372D01* +X1021889Y181320D01* +X1021953Y181260D01* +X1022003Y181234D01* +X1022047Y181201D01* +X1022128Y181170D01* +X1022206Y181130D01* +X1022254Y181122D01* +X1022312Y181100D01* +X1022460Y181088D01* +X1022537Y181075D01* +X1024777Y181075D01* +X1026914Y180189D01* +X1028549Y178554D01* +X1029435Y176417D01* +X1029435Y174103D01* +X1028549Y171966D01* +X1027481Y170898D01* +X1027446Y170851D01* +X1027404Y170811D01* +X1027361Y170738D01* +X1027310Y170671D01* +X1027289Y170616D01* +X1027260Y170566D01* +X1027239Y170484D01* +X1027209Y170405D01* +X1027204Y170347D01* +X1027190Y170290D01* +X1027192Y170206D01* +X1027185Y170122D01* +X1027197Y170064D01* +X1027199Y170006D01* +X1027225Y169926D01* +X1027241Y169843D01* +X1027268Y169791D01* +X1027286Y169735D01* +X1027326Y169679D01* +X1027372Y169591D01* +X1027441Y169518D01* +X1027481Y169462D01* +X1028549Y168394D01* +X1029435Y166257D01* +X1029435Y164017D01* +X1029447Y163931D01* +X1029450Y163843D01* +X1029467Y163791D01* +X1029475Y163736D01* +X1029510Y163656D01* +X1029537Y163573D01* +X1029565Y163534D01* +X1029591Y163476D01* +X1029687Y163363D01* +X1029732Y163299D01* +X1029891Y163140D01* +X1029961Y163088D01* +X1030025Y163028D01* +X1030075Y163002D01* +X1030119Y162969D01* +X1030200Y162938D01* +X1030278Y162898D01* +X1030326Y162890D01* +X1030384Y162868D01* +X1030532Y162856D01* +X1030609Y162843D01* +X1070423Y162843D01* +X1070452Y162847D01* +X1070481Y162844D01* +X1070592Y162867D01* +X1070704Y162883D01* +X1070731Y162895D01* +X1070760Y162900D01* +X1070860Y162953D01* +X1070964Y162999D01* +X1070986Y163018D01* +X1071012Y163031D01* +X1071094Y163109D01* +X1071181Y163182D01* +X1071197Y163207D01* +X1071218Y163227D01* +X1071275Y163325D01* +X1071338Y163419D01* +X1071347Y163447D01* +X1071362Y163472D01* +X1071390Y163582D01* +X1071424Y163690D01* +X1071425Y163720D01* +X1071432Y163748D01* +X1071428Y163861D01* +X1071431Y163974D01* +X1071424Y164003D01* +X1071423Y164032D01* +X1071388Y164140D01* +X1071359Y164249D01* +X1071344Y164275D01* +X1071335Y164303D01* +X1071290Y164366D01* +X1071214Y164494D01* +X1071169Y164537D01* +X1071141Y164576D01* +X1069042Y166675D01* +X1033831Y201886D01* +X1033761Y201938D01* +X1033697Y201998D01* +X1033647Y202024D01* +X1033603Y202057D01* +X1033522Y202088D01* +X1033444Y202128D01* +X1033396Y202136D01* +X1033338Y202158D01* +X1033190Y202170D01* +X1033113Y202183D01* +X598075Y202183D01* +X597989Y202171D01* +X597901Y202168D01* +X597849Y202151D01* +X597794Y202143D01* +X597714Y202108D01* +X597631Y202081D01* +X597592Y202053D01* +X597534Y202027D01* +X597421Y201931D01* +X597357Y201886D01* +X587495Y192023D01* +X560585Y192023D01* +X555521Y197088D01* +X555451Y197140D01* +X555387Y197200D01* +X555337Y197226D01* +X555293Y197259D01* +X555212Y197290D01* +X555134Y197330D01* +X555086Y197338D01* +X555028Y197360D01* +X554880Y197372D01* +X554803Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548791Y199906D01* +X547905Y202043D01* +X547905Y204357D01* +X548791Y206494D01* +X550426Y208129D01* +X552563Y209015D01* +X554877Y209015D01* +X557181Y208060D01* +X557209Y208053D01* +X557235Y208040D01* +X557346Y208018D01* +X557456Y207989D01* +X557485Y207990D01* +X557514Y207985D01* +X557627Y207994D01* +X557740Y207998D01* +X557768Y208007D01* +X557797Y208009D01* +X557903Y208050D01* +X558011Y208084D01* +X558035Y208101D01* +X558063Y208111D01* +X558153Y208179D01* +X558247Y208243D01* +X558266Y208265D01* +X558289Y208283D01* +X558357Y208374D01* +X558430Y208460D01* +X558442Y208487D01* +X558459Y208510D01* +X558499Y208617D01* +X558545Y208720D01* +X558549Y208749D01* +X558560Y208776D01* +X558569Y208889D01* +X558584Y209001D01* +X558580Y209031D01* +X558582Y209060D01* +X558565Y209136D01* +X558544Y209283D01* +X558518Y209340D01* +X558507Y209387D01* +X558065Y210453D01* +X558065Y212767D01* +X558951Y214904D01* +X560586Y216539D01* +X562723Y217425D01* +X564737Y217425D01* +X564766Y217429D01* +X564795Y217426D01* +X564906Y217449D01* +X565018Y217465D01* +X565045Y217477D01* +X565074Y217482D01* +X565174Y217535D01* +X565278Y217581D01* +X565300Y217600D01* +X565326Y217613D01* +X565408Y217691D01* +X565495Y217764D01* +X565511Y217789D01* +X565532Y217809D01* +X565589Y217907D01* +X565652Y218001D01* +X565661Y218029D01* +X565676Y218054D01* +X565704Y218164D01* +X565738Y218272D01* +X565739Y218302D01* +X565746Y218330D01* +X565742Y218443D01* +X565745Y218556D01* +X565738Y218585D01* +X565737Y218614D01* +X565702Y218722D01* +X565673Y218831D01* +X565659Y218857D01* +X565649Y218885D01* +X565604Y218949D01* +X565528Y219076D01* +X565483Y219119D01* +X565455Y219158D01* +X564090Y220523D01* +X557581Y227032D01* +X557511Y227084D01* +X557447Y227144D01* +X557397Y227170D01* +X557353Y227203D01* +X557272Y227234D01* +X557194Y227274D01* +X557146Y227282D01* +X557088Y227304D01* +X556940Y227316D01* +X556863Y227329D01* +X535845Y227329D01* +X535759Y227317D01* +X535671Y227314D01* +X535619Y227297D01* +X535564Y227289D01* +X535484Y227254D01* +X535401Y227227D01* +X535362Y227199D01* +X535304Y227173D01* +X535191Y227077D01* +X535127Y227032D01* +X523487Y215391D01* +X501149Y215391D01* +X491481Y225059D01* +X491411Y225112D01* +X491347Y225172D01* +X491298Y225197D01* +X491254Y225230D01* +X491172Y225261D01* +X491094Y225301D01* +X491047Y225309D01* +X490988Y225332D01* +X490840Y225344D01* +X490763Y225357D01* +X489032Y225357D01* +X486895Y226242D01* +X485259Y227878D01* +X484374Y230015D01* +X484374Y231930D01* +X484366Y231988D01* +X484367Y232046D01* +X484346Y232128D01* +X484334Y232212D01* +X484310Y232265D01* +X484295Y232321D01* +X484252Y232394D01* +X484218Y232471D01* +X484180Y232516D01* +X484150Y232566D01* +X484088Y232624D01* +X484034Y232688D01* +X483985Y232720D01* +X483943Y232760D01* +X483868Y232799D01* +X483797Y232846D01* +X483742Y232863D01* +X483690Y232890D01* +X483621Y232901D01* +X483526Y232931D01* +X483427Y232934D01* +X483358Y232945D01* +X481443Y232945D01* +X479306Y233831D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X481443Y244575D01* +X483757Y244575D01* +X485894Y243689D01* +X487477Y242106D01* +X487547Y242054D01* +X487611Y241994D01* +X487660Y241968D01* +X487704Y241935D01* +X487786Y241904D01* +X487864Y241864D01* +X487912Y241856D01* +X487970Y241834D01* +X488118Y241822D01* +X488195Y241809D01* +X503167Y241809D01* +X514045Y230930D01* +X514115Y230878D01* +X514179Y230818D01* +X514229Y230792D01* +X514273Y230759D01* +X514354Y230728D01* +X514432Y230688D01* +X514480Y230680D01* +X514538Y230658D01* +X514686Y230646D01* +X514763Y230633D01* +X516477Y230633D01* +X516563Y230645D01* +X516651Y230648D01* +X516703Y230665D01* +X516758Y230673D01* +X516838Y230708D01* +X516921Y230735D01* +X516960Y230763D01* +X517018Y230789D01* +X517131Y230885D01* +X517195Y230930D01* +X518211Y231946D01* +X518228Y231970D01* +X518251Y231989D01* +X518313Y232083D01* +X518381Y232173D01* +X518392Y232201D01* +X518408Y232225D01* +X518442Y232333D01* +X518483Y232439D01* +X518485Y232468D01* +X518494Y232496D01* +X518497Y232610D01* +X518506Y232722D01* +X518501Y232751D01* +X518501Y232780D01* +X518473Y232890D01* +X518450Y233001D01* +X518437Y233027D01* +X518429Y233055D01* +X518372Y233153D01* +X518319Y233253D01* +X518299Y233275D01* +X518284Y233300D01* +X518202Y233377D01* +X518124Y233459D01* +X518098Y233474D01* +X518077Y233494D01* +X517976Y233546D01* +X517878Y233603D01* +X517850Y233610D01* +X517824Y233624D01* +X517746Y233637D01* +X517603Y233673D01* +X517540Y233671D01* +X517493Y233679D01* +X517003Y233679D01* +X514866Y234565D01* +X513231Y236200D01* +X512345Y238337D01* +X512345Y240651D01* +X513231Y242788D01* +X514866Y244423D01* +X517003Y245309D01* +X519243Y245309D01* +X519329Y245321D01* +X519417Y245324D01* +X519469Y245341D01* +X519524Y245349D01* +X519604Y245384D01* +X519687Y245411D01* +X519726Y245439D01* +X519784Y245465D01* +X519897Y245561D01* +X519961Y245606D01* +X521977Y247623D01* +X560955Y247623D01* +X560984Y247627D01* +X561013Y247624D01* +X561124Y247647D01* +X561236Y247663D01* +X561263Y247675D01* +X561292Y247680D01* +X561392Y247732D01* +X561496Y247779D01* +X561518Y247798D01* +X561544Y247811D01* +X561626Y247889D01* +X561713Y247962D01* +X561729Y247987D01* +X561750Y248007D01* +X561807Y248105D01* +X561870Y248199D01* +X561879Y248227D01* +X561894Y248252D01* +X561922Y248362D01* +X561956Y248470D01* +X561957Y248500D01* +X561964Y248528D01* +X561960Y248641D01* +X561963Y248754D01* +X561956Y248783D01* +X561955Y248812D01* +X561920Y248920D01* +X561891Y249029D01* +X561876Y249055D01* +X561867Y249083D01* +X561822Y249146D01* +X561746Y249274D01* +X561701Y249317D01* +X561673Y249356D01* +X555295Y255734D01* +X555225Y255786D01* +X555161Y255846D01* +X555111Y255872D01* +X555067Y255905D01* +X554986Y255936D01* +X554908Y255976D01* +X554860Y255984D01* +X554802Y256006D01* +X554654Y256018D01* +X554577Y256031D01* +X554235Y256031D01* +X554148Y256019D01* +X554061Y256016D01* +X554008Y255999D01* +X553954Y255991D01* +X553874Y255956D01* +X553791Y255929D01* +X553751Y255901D01* +X553694Y255875D01* +X553581Y255779D01* +X553517Y255734D01* +X551934Y254151D01* +X549797Y253265D01* +X547483Y253265D01* +X545346Y254151D01* +X543711Y255786D01* +X542825Y257923D01* +X542825Y260237D01* +X543711Y262374D01* +X545346Y264009D01* +X547483Y264895D01* +X549797Y264895D01* +X551934Y264009D01* +X553517Y262426D01* +X553587Y262374D01* +X553651Y262314D01* +X553700Y262288D01* +X553744Y262255D01* +X553826Y262224D01* +X553904Y262184D01* +X553952Y262176D01* +X554010Y262154D01* +X554158Y262142D01* +X554235Y262129D01* +X557523Y262129D01* +X576755Y242896D01* +X576825Y242844D01* +X576889Y242784D01* +X576939Y242758D01* +X576983Y242725D01* +X577064Y242694D01* +X577142Y242654D01* +X577190Y242646D01* +X577248Y242624D01* +X577396Y242612D01* +X577473Y242599D01* +X861875Y242599D01* +X861904Y242603D01* +X861933Y242600D01* +X862044Y242623D01* +X862156Y242639D01* +X862183Y242651D01* +X862212Y242656D01* +X862313Y242709D01* +X862416Y242755D01* +X862438Y242774D01* +X862464Y242787D01* +X862546Y242865D01* +X862633Y242938D01* +X862649Y242963D01* +X862670Y242983D01* +X862728Y243081D01* +X862790Y243175D01* +X862799Y243203D01* +X862814Y243228D01* +X862842Y243338D01* +X862876Y243446D01* +X862877Y243476D01* +X862884Y243504D01* +X862881Y243617D01* +X862884Y243730D01* +X862876Y243759D01* +X862875Y243788D01* +X862840Y243896D01* +X862812Y244005D01* +X862797Y244031D01* +X862788Y244059D01* +X862742Y244123D01* +X862666Y244250D01* +X862621Y244293D01* +X862593Y244332D01* +X861286Y245638D01* +X860435Y247693D01* +X860435Y249916D01* +X861286Y251970D01* +X862858Y253542D01* +X864913Y254393D01* +X867136Y254393D01* +X869190Y253542D01* +X870762Y251970D01* +X871613Y249916D01* +X871613Y247693D01* +X870762Y245638D01* +X869456Y244332D01* +X869438Y244308D01* +X869415Y244289D01* +X869353Y244195D01* +X869285Y244105D01* +X869274Y244077D01* +X869258Y244053D01* +X869224Y243945D01* +X869183Y243839D01* +X869181Y243810D01* +X869172Y243782D01* +X869169Y243668D01* +X869160Y243556D01* +X869166Y243527D01* +X869165Y243498D01* +X869193Y243388D01* +X869216Y243277D01* +X869229Y243251D01* +X869237Y243223D01* +X869294Y243125D01* +X869347Y243025D01* +X869367Y243003D01* +X869382Y242978D01* +X869464Y242901D01* +X869542Y242819D01* +X869568Y242804D01* +X869589Y242784D01* +X869690Y242732D01* +X869788Y242675D01* +X869816Y242668D01* +X869842Y242654D01* +X869920Y242641D01* +X870063Y242605D01* +X870126Y242607D01* +X870173Y242599D01* +X933553Y242599D01* +X933667Y242615D01* +X933781Y242625D01* +X933807Y242635D01* +X933835Y242639D01* +X933939Y242686D01* +X934046Y242727D01* +X934069Y242743D01* +X934094Y242755D01* +X934182Y242829D01* +X934273Y242898D01* +X934290Y242921D01* +X934311Y242938D01* +X934375Y243034D01* +X934443Y243126D01* +X934453Y243152D01* +X934469Y243175D01* +X934503Y243285D01* +X934544Y243392D01* +X934546Y243420D01* +X934554Y243446D01* +X934557Y243561D01* +X934566Y243675D01* +X934561Y243700D01* +X934562Y243730D01* +X934495Y243987D01* +X934491Y244003D01* +X933985Y245223D01* +X933985Y247537D01* +X934871Y249674D01* +X936506Y251309D01* +X938643Y252195D01* +X940957Y252195D01* +X943094Y251309D01* +X944729Y249674D01* +X945615Y247537D01* +X945615Y245223D01* +X945109Y244003D01* +X945080Y243891D01* +X945046Y243782D01* +X945045Y243754D01* +X945038Y243727D01* +X945041Y243613D01* +X945038Y243498D01* +X945045Y243471D01* +X945046Y243443D01* +X945081Y243334D01* +X945110Y243223D01* +X945124Y243199D01* +X945133Y243172D01* +X945197Y243077D01* +X945255Y242978D01* +X945276Y242959D01* +X945291Y242936D01* +X945379Y242862D01* +X945463Y242784D01* +X945488Y242771D01* +X945509Y242753D01* +X945614Y242707D01* +X945716Y242654D01* +X945741Y242650D01* +X945769Y242638D01* +X946032Y242601D01* +X946047Y242599D01* +X953873Y242599D01* +X953987Y242615D01* +X954101Y242625D01* +X954127Y242635D01* +X954155Y242639D01* +X954259Y242686D01* +X954366Y242727D01* +X954389Y242743D01* +X954414Y242755D01* +X954502Y242829D01* +X954593Y242898D01* +X954610Y242921D01* +X954631Y242938D01* +X954695Y243034D01* +X954763Y243126D01* +X954773Y243152D01* +X954789Y243175D01* +X954823Y243285D01* +X954864Y243392D01* +X954866Y243420D01* +X954874Y243446D01* +X954877Y243561D01* +X954886Y243675D01* +X954881Y243700D01* +X954882Y243730D01* +X954815Y243987D01* +X954811Y244003D01* +X954305Y245223D01* +X954305Y247537D01* +X955191Y249674D01* +X956826Y251309D01* +X958963Y252195D01* +X961277Y252195D01* +X963414Y251309D01* +X965049Y249674D01* +X965935Y247537D01* +X965935Y245223D01* +X965429Y244003D01* +X965400Y243891D01* +X965366Y243782D01* +X965365Y243754D01* +X965358Y243727D01* +X965361Y243613D01* +X965358Y243498D01* +X965365Y243471D01* +X965366Y243443D01* +X965401Y243334D01* +X965430Y243223D01* +X965444Y243199D01* +X965453Y243172D01* +X965517Y243077D01* +X965575Y242978D01* +X965596Y242959D01* +X965611Y242936D01* +X965699Y242862D01* +X965783Y242784D01* +X965808Y242771D01* +X965829Y242753D01* +X965934Y242707D01* +X966036Y242654D01* +X966061Y242650D01* +X966089Y242638D01* +X966352Y242601D01* +X966367Y242599D01* +X1080716Y242599D01* +X1080803Y242611D01* +X1080890Y242614D01* +X1080943Y242631D01* +X1080998Y242639D01* +X1081078Y242674D01* +X1081161Y242701D01* +X1081200Y242729D01* +X1081257Y242755D01* +X1081370Y242851D01* +X1081434Y242896D01* +X1086448Y247909D01* +X1086500Y247979D01* +X1086560Y248043D01* +X1086585Y248093D01* +X1086618Y248137D01* +X1086650Y248218D01* +X1086689Y248296D01* +X1086697Y248344D01* +X1086720Y248402D01* +X1086732Y248550D01* +X1086745Y248627D01* +X1086745Y250867D01* +X1087630Y253004D01* +X1089266Y254639D01* +X1091403Y255525D01* +X1093716Y255525D01* +X1095853Y254639D01* +X1097489Y253004D01* +X1098374Y250867D01* +X1098374Y248553D01* +X1097489Y246416D01* +X1095853Y244781D01* +X1093716Y243895D01* +X1091477Y243895D01* +X1091390Y243883D01* +X1091303Y243880D01* +X1091250Y243863D01* +X1091195Y243855D01* +X1091116Y243820D01* +X1091032Y243793D01* +X1090993Y243765D01* +X1090936Y243739D01* +X1090823Y243643D01* +X1090759Y243598D01* +X1085623Y238462D01* +X1085605Y238438D01* +X1085583Y238419D01* +X1085520Y238325D01* +X1085452Y238235D01* +X1085442Y238207D01* +X1085425Y238183D01* +X1085391Y238075D01* +X1085351Y237969D01* +X1085348Y237940D01* +X1085340Y237912D01* +X1085337Y237798D01* +X1085327Y237686D01* +X1085333Y237657D01* +X1085332Y237628D01* +X1085361Y237518D01* +X1085383Y237407D01* +X1085397Y237381D01* +X1085404Y237353D01* +X1085462Y237255D01* +X1085514Y237155D01* +X1085534Y237133D01* +X1085549Y237108D01* +X1085632Y237031D01* +X1085710Y236949D01* +X1085735Y236934D01* +X1085757Y236914D01* +X1085858Y236862D01* +X1085955Y236805D01* +X1085984Y236798D01* +X1086010Y236784D01* +X1086087Y236771D01* +X1086231Y236735D01* +X1086293Y236737D01* +X1086341Y236729D01* +X1146397Y236729D01* +X1146483Y236741D01* +X1146571Y236744D01* +X1146623Y236761D01* +X1146678Y236769D01* +X1146758Y236804D01* +X1146841Y236831D01* +X1146880Y236859D01* +X1146938Y236885D01* +X1147051Y236981D01* +X1147115Y237026D01* +X1187688Y277599D01* +X1187740Y277669D01* +X1187800Y277733D01* +X1187826Y277783D01* +X1187859Y277827D01* +X1187890Y277908D01* +X1187930Y277986D01* +X1187938Y278034D01* +X1187960Y278092D01* +X1187972Y278240D01* +X1187985Y278317D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194957Y285215D01* +X1197094Y284329D01* +X1198729Y282694D01* +X1199212Y281529D01* +X1199227Y281504D01* +X1199236Y281476D01* +X1199299Y281382D01* +X1199356Y281284D01* +X1199378Y281264D01* +X1199394Y281239D01* +X1199481Y281167D01* +X1199563Y281089D01* +X1199589Y281075D01* +X1199612Y281056D01* +X1199715Y281010D01* +X1199816Y280959D01* +X1199845Y280953D01* +X1199872Y280941D01* +X1199984Y280925D01* +X1200095Y280904D01* +X1200124Y280906D01* +X1200153Y280902D01* +X1200265Y280918D01* +X1200378Y280928D01* +X1200406Y280939D01* +X1200434Y280943D01* +X1200537Y280989D01* +X1200643Y281030D01* +X1200667Y281048D01* +X1200694Y281060D01* +X1200780Y281133D01* +X1200870Y281202D01* +X1200888Y281225D01* +X1200910Y281244D01* +X1200952Y281311D01* +X1201040Y281429D01* +X1201058Y281476D01* +X1201075Y281502D01* +X1201079Y281515D01* +X1201088Y281529D01* +X1201571Y282694D01* +X1203206Y284329D01* +X1205343Y285215D01* +X1207657Y285215D01* +X1209794Y284329D01* +X1211429Y282694D01* +X1212315Y280557D01* +X1212315Y278243D01* +X1211429Y276106D01* +X1209794Y274471D01* +X1207657Y273585D01* +X1205417Y273585D01* +X1205331Y273573D01* +X1205243Y273570D01* +X1205191Y273553D01* +X1205136Y273545D01* +X1205056Y273510D01* +X1204973Y273483D01* +X1204934Y273455D01* +X1204876Y273429D01* +X1204763Y273333D01* +X1204699Y273288D01* +X1161745Y230334D01* +X1161728Y230310D01* +X1161705Y230291D01* +X1161643Y230197D01* +X1161575Y230107D01* +X1161564Y230079D01* +X1161548Y230055D01* +X1161514Y229947D01* +X1161473Y229841D01* +X1161471Y229812D01* +X1161462Y229784D01* +X1161459Y229670D01* +X1161450Y229558D01* +X1161455Y229529D01* +X1161455Y229500D01* +X1161483Y229390D01* +X1161506Y229279D01* +X1161519Y229253D01* +X1161527Y229225D01* +X1161584Y229127D01* +X1161637Y229027D01* +X1161657Y229005D01* +X1161672Y228980D01* +X1161754Y228903D01* +X1161832Y228821D01* +X1161858Y228806D01* +X1161879Y228786D01* +X1161980Y228734D01* +X1162078Y228677D01* +X1162106Y228670D01* +X1162132Y228656D01* +X1162210Y228643D01* +X1162353Y228607D01* +X1162416Y228609D01* +X1162463Y228601D01* +X1189069Y228601D01* +X1189155Y228613D01* +X1189243Y228616D01* +X1189295Y228633D01* +X1189350Y228641D01* +X1189430Y228676D01* +X1189513Y228703D01* +X1189552Y228731D01* +X1189610Y228757D01* +X1189723Y228853D01* +X1189787Y228898D01* +X1200388Y239499D01* +X1200440Y239569D01* +X1200500Y239633D01* +X1200526Y239683D01* +X1200559Y239727D01* +X1200590Y239808D01* +X1200630Y239886D01* +X1200638Y239934D01* +X1200660Y239992D01* +X1200672Y240140D01* +X1200685Y240217D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1211429Y244594D01* +X1212315Y242457D01* +X1212315Y240143D01* +X1211429Y238006D01* +X1209794Y236371D01* +X1207657Y235485D01* +X1205417Y235485D01* +X1205331Y235473D01* +X1205243Y235470D01* +X1205191Y235453D01* +X1205136Y235445D01* +X1205056Y235410D01* +X1204973Y235383D01* +X1204934Y235355D01* +X1204876Y235329D01* +X1204763Y235233D01* +X1204699Y235188D01* +X1192813Y223302D01* +X1192778Y223255D01* +X1192735Y223214D01* +X1192693Y223141D01* +X1192642Y223074D01* +X1192621Y223020D01* +X1192592Y222969D01* +X1192571Y222887D01* +X1192541Y222809D01* +X1192536Y222750D01* +X1192522Y222694D01* +X1192524Y222609D01* +X1192517Y222525D01* +X1192529Y222468D01* +X1192531Y222409D01* +X1192557Y222329D01* +X1192573Y222247D01* +X1192600Y222195D01* +X1192618Y222139D01* +X1192658Y222083D01* +X1192704Y221994D01* +X1192773Y221922D01* +X1192813Y221866D01* +X1192893Y221786D01* +X1192963Y221733D01* +X1193027Y221674D01* +X1193076Y221648D01* +X1193120Y221615D01* +X1193202Y221584D01* +X1193280Y221544D01* +X1193327Y221536D01* +X1193386Y221514D01* +X1193533Y221502D01* +X1193611Y221489D01* +X1200905Y221489D01* +X1200992Y221501D01* +X1201079Y221504D01* +X1201132Y221521D01* +X1201186Y221529D01* +X1201266Y221564D01* +X1201350Y221591D01* +X1201389Y221619D01* +X1201446Y221645D01* +X1201559Y221741D01* +X1201623Y221786D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209794Y223369D01* +X1211429Y221734D01* +X1212315Y219597D01* +X1212315Y217283D01* +X1211429Y215146D01* +X1209794Y213511D01* +X1207657Y212625D01* +X1205343Y212625D01* +X1203206Y213511D01* +X1201623Y215094D01* +X1201553Y215146D01* +X1201489Y215206D01* +X1201440Y215232D01* +X1201396Y215265D01* +X1201314Y215296D01* +X1201236Y215336D01* +X1201189Y215344D01* +X1201130Y215366D01* +X1200982Y215378D01* +X1200905Y215391D01* +X1195991Y215391D01* +X1195962Y215387D01* +X1195933Y215390D01* +X1195822Y215367D01* +X1195710Y215351D01* +X1195683Y215339D01* +X1195654Y215334D01* +X1195554Y215282D01* +X1195450Y215235D01* +X1195428Y215216D01* +X1195402Y215203D01* +X1195320Y215125D01* +X1195233Y215052D01* +X1195217Y215027D01* +X1195196Y215007D01* +X1195139Y214909D01* +X1195076Y214815D01* +X1195067Y214787D01* +X1195052Y214762D01* +X1195024Y214652D01* +X1194990Y214544D01* +X1194989Y214514D01* +X1194982Y214486D01* +X1194986Y214373D01* +X1194983Y214260D01* +X1194990Y214231D01* +X1194991Y214202D01* +X1195026Y214094D01* +X1195055Y213985D01* +X1195070Y213959D01* +X1195079Y213931D01* +X1195124Y213868D01* +X1195200Y213740D01* +X1195245Y213697D01* +X1195273Y213658D01* +X1201286Y207645D01* +X1201333Y207610D01* +X1201373Y207568D01* +X1201446Y207525D01* +X1201513Y207474D01* +X1201568Y207454D01* +X1201619Y207424D01* +X1201700Y207403D01* +X1201779Y207373D01* +X1201837Y207368D01* +X1201894Y207354D01* +X1201978Y207357D01* +X1202062Y207350D01* +X1202120Y207361D01* +X1202178Y207363D01* +X1202258Y207389D01* +X1202341Y207405D01* +X1202393Y207432D01* +X1202449Y207450D01* +X1202505Y207491D01* +X1202593Y207536D01* +X1202666Y207605D01* +X1202722Y207645D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1211429Y206494D01* +X1212315Y204357D01* +X1212315Y202043D01* +X1211429Y199906D01* +X1209794Y198271D01* +X1207657Y197385D01* +X1205343Y197385D01* +X1203206Y198271D01* +X1201623Y199854D01* +X1201553Y199906D01* +X1201489Y199966D01* +X1201440Y199992D01* +X1201396Y200025D01* +X1201314Y200056D01* +X1201236Y200096D01* +X1201188Y200104D01* +X1201130Y200126D01* +X1200982Y200138D01* +X1200905Y200151D01* +X1200157Y200151D01* +X1190266Y210043D01* +X1190197Y210094D01* +X1190135Y210153D01* +X1190084Y210179D01* +X1190038Y210214D01* +X1189958Y210244D01* +X1189882Y210284D01* +X1189826Y210295D01* +X1189773Y210315D01* +X1189687Y210322D01* +X1189603Y210339D01* +X1189546Y210334D01* +X1189490Y210338D01* +X1189405Y210322D01* +X1189320Y210314D01* +X1189267Y210294D01* +X1189211Y210283D01* +X1189135Y210243D01* +X1189054Y210212D01* +X1189009Y210178D01* +X1188958Y210152D01* +X1188896Y210092D01* +X1188828Y210041D01* +X1188794Y209995D01* +X1188752Y209956D01* +X1188709Y209882D01* +X1188657Y209813D01* +X1188637Y209760D01* +X1188609Y209710D01* +X1188587Y209627D01* +X1188557Y209547D01* +X1188553Y209490D01* +X1188539Y209435D01* +X1188541Y209349D01* +X1188534Y209263D01* +X1188546Y209215D01* +X1188548Y209151D01* +X1188592Y209013D01* +X1188610Y208936D01* +X1189455Y206897D01* +X1189455Y204583D01* +X1188569Y202446D01* +X1186934Y200811D01* +X1184797Y199925D01* +X1182483Y199925D01* +X1180346Y200811D01* +X1178711Y202446D01* +X1177825Y204583D01* +X1177825Y206897D01* +X1178711Y209034D01* +X1180346Y210669D01* +X1182483Y211555D01* +X1184797Y211555D01* +X1186836Y210710D01* +X1186920Y210688D01* +X1187000Y210658D01* +X1187057Y210653D01* +X1187112Y210639D01* +X1187198Y210641D01* +X1187283Y210634D01* +X1187339Y210645D01* +X1187396Y210647D01* +X1187478Y210673D01* +X1187562Y210690D01* +X1187612Y210716D01* +X1187667Y210734D01* +X1187738Y210782D01* +X1187814Y210821D01* +X1187855Y210860D01* +X1187903Y210892D01* +X1187958Y210958D01* +X1188020Y211017D01* +X1188049Y211066D01* +X1188086Y211110D01* +X1188121Y211188D01* +X1188164Y211262D01* +X1188178Y211317D01* +X1188201Y211369D01* +X1188213Y211455D01* +X1188234Y211538D01* +X1188232Y211594D01* +X1188240Y211651D01* +X1188228Y211736D01* +X1188225Y211822D01* +X1188208Y211876D01* +X1188199Y211932D01* +X1188164Y212011D01* +X1188138Y212092D01* +X1188109Y212133D01* +X1188082Y212191D01* +X1187988Y212302D01* +X1187943Y212366D01* +X1186231Y214078D01* +X1186161Y214130D01* +X1186097Y214190D01* +X1186047Y214216D01* +X1186003Y214249D01* +X1185922Y214280D01* +X1185844Y214320D01* +X1185796Y214328D01* +X1185738Y214350D01* +X1185590Y214362D01* +X1185513Y214375D01* +X1078999Y214375D01* +X1078970Y214371D01* +X1078941Y214374D01* +X1078830Y214351D01* +X1078718Y214335D01* +X1078691Y214323D01* +X1078662Y214318D01* +X1078561Y214265D01* +X1078458Y214219D01* +X1078436Y214200D01* +X1078410Y214187D01* +X1078328Y214109D01* +X1078241Y214036D01* +X1078225Y214011D01* +X1078204Y213991D01* +X1078146Y213893D01* +X1078084Y213799D01* +X1078075Y213771D01* +X1078060Y213746D01* +X1078032Y213636D01* +X1077998Y213528D01* +X1077997Y213498D01* +X1077990Y213470D01* +X1077993Y213357D01* +X1077990Y213244D01* +X1077998Y213215D01* +X1077999Y213186D01* +X1078034Y213078D01* +X1078062Y212969D01* +X1078077Y212943D01* +X1078086Y212915D01* +X1078132Y212851D01* +X1078208Y212724D01* +X1078253Y212681D01* +X1078281Y212642D01* +X1079349Y211574D01* +X1080235Y209437D01* +X1080235Y207123D01* +X1079349Y204986D01* +X1077714Y203351D01* +X1075577Y202465D01* +X1073263Y202465D01* +X1071126Y203351D01* +X1069491Y204986D01* +X1068605Y207123D01* +X1068605Y209437D01* +X1069491Y211574D01* +X1070559Y212642D01* +X1070577Y212666D01* +X1070599Y212685D01* +X1070662Y212779D01* +X1070730Y212869D01* +X1070740Y212897D01* +X1070756Y212921D01* +X1070791Y213029D01* +X1070831Y213135D01* +X1070833Y213164D01* +X1070842Y213192D01* +X1070845Y213306D01* +X1070855Y213418D01* +X1070849Y213447D01* +X1070850Y213476D01* +X1070821Y213586D01* +X1070799Y213697D01* +X1070785Y213723D01* +X1070778Y213751D01* +X1070720Y213849D01* +X1070668Y213949D01* +X1070647Y213971D01* +X1070632Y213996D01* +X1070550Y214073D01* +X1070472Y214155D01* +X1070447Y214170D01* +X1070425Y214190D01* +X1070324Y214242D01* +X1070227Y214299D01* +X1070198Y214306D01* +X1070172Y214320D01* +X1070095Y214333D01* +X1069951Y214369D01* +X1069889Y214367D01* +X1069841Y214375D01* +X1044607Y214375D01* +X1044578Y214371D01* +X1044549Y214374D01* +X1044438Y214351D01* +X1044326Y214335D01* +X1044299Y214323D01* +X1044270Y214318D01* +X1044170Y214266D01* +X1044066Y214219D01* +X1044044Y214200D01* +X1044018Y214187D01* +X1043936Y214109D01* +X1043849Y214036D01* +X1043833Y214011D01* +X1043812Y213991D01* +X1043755Y213893D01* +X1043692Y213799D01* +X1043683Y213771D01* +X1043668Y213746D01* +X1043640Y213636D01* +X1043606Y213528D01* +X1043605Y213498D01* +X1043598Y213470D01* +X1043602Y213357D01* +X1043599Y213244D01* +X1043606Y213215D01* +X1043607Y213186D01* +X1043642Y213078D01* +X1043671Y212969D01* +X1043686Y212943D01* +X1043695Y212915D01* +X1043740Y212852D01* +X1043816Y212724D01* +X1043861Y212681D01* +X1043889Y212642D01* +X1062685Y193846D01* +X1062755Y193794D01* +X1062819Y193734D01* +X1062869Y193708D01* +X1062913Y193675D01* +X1062994Y193644D01* +X1063072Y193604D01* +X1063120Y193596D01* +X1063178Y193574D01* +X1063326Y193562D01* +X1063403Y193549D01* +X1068825Y193549D01* +X1068912Y193561D01* +X1068999Y193564D01* +X1069052Y193581D01* +X1069106Y193589D01* +X1069186Y193624D01* +X1069269Y193651D01* +X1069309Y193679D01* +X1069366Y193705D01* +X1069479Y193801D01* +X1069543Y193846D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076077Y184688D01* +X1076031Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183894D01* +X1075963Y183866D01* +X1076009Y183763D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173853D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080723Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085334Y172569D01* +X1086969Y170934D01* +X1087855Y168797D01* +X1087855Y166483D01* +X1086928Y164247D01* +X1086900Y164135D01* +X1086865Y164026D01* +X1086864Y163998D01* +X1086857Y163971D01* +X1086861Y163857D01* +X1086858Y163742D01* +X1086865Y163715D01* +X1086865Y163687D01* +X1086900Y163578D01* +X1086929Y163467D01* +X1086944Y163443D01* +X1086952Y163416D01* +X1087016Y163321D01* +X1087075Y163222D01* +X1087095Y163203D01* +X1087110Y163180D01* +X1087198Y163106D01* +X1087282Y163028D01* +X1087307Y163015D01* +X1087328Y162997D01* +X1087433Y162951D01* +X1087535Y162898D01* +X1087560Y162894D01* +X1087588Y162882D01* +X1087851Y162845D01* +X1087866Y162843D01* +X1109793Y162843D01* +X1109879Y162855D01* +X1109967Y162858D01* +X1110019Y162875D01* +X1110074Y162883D01* +X1110154Y162918D01* +X1110237Y162945D01* +X1110276Y162973D01* +X1110334Y162999D01* +X1110447Y163095D01* +X1110511Y163140D01* +X1130759Y183389D01* +X1200905Y183389D01* +X1200992Y183401D01* +X1201079Y183404D01* +X1201132Y183421D01* +X1201186Y183429D01* +X1201266Y183464D01* +X1201349Y183491D01* +X1201389Y183519D01* +X1201446Y183545D01* +X1201559Y183641D01* +X1201623Y183686D01* +X1203206Y185269D01* +X1205343Y186155D01* +X1207657Y186155D01* +X1209794Y185269D01* +X1211429Y183634D01* +X1212315Y181497D01* +X1212315Y179183D01* +X1211429Y177046D01* +X1209794Y175411D01* +X1207657Y174525D01* +X1206377Y174525D01* +X1206348Y174521D01* +X1206319Y174524D01* +X1206208Y174501D01* +X1206096Y174485D01* +X1206069Y174473D01* +X1206040Y174468D01* +X1205940Y174416D01* +X1205836Y174369D01* +X1205814Y174350D01* +X1205788Y174337D01* +X1205706Y174259D01* +X1205619Y174186D01* +X1205603Y174161D01* +X1205582Y174141D01* +X1205525Y174043D01* +X1205462Y173949D01* +X1205453Y173921D01* +X1205438Y173896D01* +X1205410Y173786D01* +X1205376Y173678D01* +X1205375Y173648D01* +X1205368Y173620D01* +X1205372Y173507D01* +X1205369Y173394D01* +X1205376Y173365D01* +X1205377Y173336D01* +X1205412Y173228D01* +X1205441Y173119D01* +X1205456Y173093D01* +X1205465Y173065D01* +X1205510Y173002D01* +X1205586Y172874D01* +X1205631Y172831D01* +X1205659Y172792D01* +X1225197Y153255D01* +X1225197Y127515D01* +X1225209Y127428D01* +X1225212Y127341D01* +X1225229Y127288D01* +X1225237Y127234D01* +X1225272Y127154D01* +X1225299Y127071D01* +X1225327Y127031D01* +X1225353Y126974D01* +X1225449Y126861D01* +X1225494Y126797D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +G37* +%LPD*% +%LPC*% +G36* +X721727Y67817D02* +X721727Y67817D01* +X717713Y69480D01* +X714640Y72553D01* +X712977Y76567D01* +X712977Y80913D01* +X714640Y84927D01* +X715609Y85896D01* +X715627Y85920D01* +X715649Y85939D01* +X715712Y86033D01* +X715780Y86123D01* +X715790Y86151D01* +X715807Y86175D01* +X715841Y86283D01* +X715881Y86389D01* +X715884Y86418D01* +X715892Y86446D01* +X715895Y86560D01* +X715905Y86672D01* +X715899Y86701D01* +X715900Y86730D01* +X715871Y86840D01* +X715849Y86951D01* +X715835Y86977D01* +X715828Y87005D01* +X715770Y87103D01* +X715718Y87203D01* +X715698Y87225D01* +X715683Y87250D01* +X715600Y87327D01* +X715522Y87409D01* +X715497Y87424D01* +X715475Y87444D01* +X715374Y87496D01* +X715277Y87553D01* +X715248Y87560D01* +X715222Y87574D01* +X715145Y87587D01* +X715001Y87623D01* +X714939Y87621D01* +X714891Y87629D01* +X562495Y87629D01* +X562382Y87613D01* +X562267Y87603D01* +X562241Y87593D01* +X562214Y87589D01* +X562109Y87542D01* +X562002Y87501D01* +X561980Y87485D01* +X561954Y87473D01* +X561867Y87399D01* +X561775Y87330D01* +X561759Y87307D01* +X561737Y87290D01* +X561674Y87194D01* +X561605Y87102D01* +X561595Y87076D01* +X561580Y87053D01* +X561545Y86943D01* +X561505Y86836D01* +X561502Y86808D01* +X561494Y86782D01* +X561491Y86667D01* +X561482Y86553D01* +X561488Y86528D01* +X561487Y86498D01* +X561554Y86241D01* +X561557Y86225D01* +X562075Y84977D01* +X562075Y83030D01* +X562083Y82972D01* +X562081Y82914D01* +X562103Y82832D01* +X562115Y82748D01* +X562138Y82695D01* +X562153Y82639D01* +X562196Y82566D01* +X562231Y82489D01* +X562269Y82444D01* +X562298Y82394D01* +X562360Y82336D01* +X562414Y82272D01* +X562463Y82240D01* +X562506Y82200D01* +X562581Y82161D01* +X562651Y82114D01* +X562707Y82097D01* +X562759Y82070D01* +X562827Y82059D01* +X562922Y82029D01* +X563022Y82026D01* +X563090Y82015D01* +X565037Y82015D01* +X567174Y81129D01* +X568809Y79494D01* +X569695Y77357D01* +X569695Y75043D01* +X568809Y72906D01* +X567174Y71271D01* +X565037Y70385D01* +X562723Y70385D01* +X560586Y71271D01* +X558951Y72906D01* +X558065Y75043D01* +X558065Y76990D01* +X558057Y77048D01* +X558059Y77106D01* +X558037Y77188D01* +X558025Y77272D01* +X558002Y77325D01* +X557987Y77381D01* +X557944Y77454D01* +X557909Y77531D01* +X557871Y77576D01* +X557842Y77626D01* +X557780Y77684D01* +X557726Y77748D01* +X557677Y77780D01* +X557634Y77820D01* +X557559Y77859D01* +X557489Y77906D01* +X557433Y77923D01* +X557381Y77950D01* +X557313Y77961D01* +X557218Y77991D01* +X557118Y77994D01* +X557050Y78005D01* +X555103Y78005D01* +X552966Y78891D01* +X551331Y80526D01* +X550445Y82663D01* +X550445Y84977D01* +X550963Y86225D01* +X550991Y86337D01* +X551026Y86446D01* +X551027Y86474D01* +X551034Y86501D01* +X551030Y86615D01* +X551033Y86730D01* +X551026Y86757D01* +X551025Y86785D01* +X550990Y86894D01* +X550961Y87005D01* +X550947Y87029D01* +X550939Y87056D01* +X550875Y87151D01* +X550816Y87250D01* +X550796Y87269D01* +X550780Y87292D01* +X550693Y87366D01* +X550609Y87444D01* +X550584Y87457D01* +X550563Y87475D01* +X550458Y87521D01* +X550356Y87574D01* +X550331Y87578D01* +X550303Y87590D01* +X550039Y87627D01* +X550025Y87629D01* +X533400Y87629D01* +X533342Y87621D01* +X533284Y87623D01* +X533202Y87601D01* +X533118Y87589D01* +X533065Y87566D01* +X533009Y87551D01* +X532936Y87508D01* +X532859Y87473D01* +X532814Y87435D01* +X532764Y87406D01* +X532706Y87344D01* +X532642Y87290D01* +X532610Y87241D01* +X532570Y87198D01* +X532531Y87123D01* +X532484Y87053D01* +X532467Y86997D01* +X532440Y86945D01* +X532429Y86877D01* +X532399Y86782D01* +X532396Y86682D01* +X532385Y86614D01* +X532385Y85859D01* +X532397Y85772D01* +X532400Y85685D01* +X532417Y85632D01* +X532425Y85578D01* +X532460Y85498D01* +X532487Y85415D01* +X532515Y85375D01* +X532541Y85318D01* +X532637Y85205D01* +X532682Y85141D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X523958Y85141D01* +X524010Y85211D01* +X524070Y85275D01* +X524096Y85324D01* +X524129Y85368D01* +X524160Y85450D01* +X524200Y85528D01* +X524208Y85576D01* +X524230Y85634D01* +X524242Y85782D01* +X524255Y85859D01* +X524255Y86614D01* +X524247Y86672D01* +X524249Y86730D01* +X524227Y86812D01* +X524215Y86896D01* +X524192Y86949D01* +X524177Y87005D01* +X524134Y87078D01* +X524099Y87155D01* +X524061Y87200D01* +X524032Y87250D01* +X523970Y87308D01* +X523916Y87372D01* +X523867Y87404D01* +X523824Y87444D01* +X523749Y87483D01* +X523679Y87530D01* +X523623Y87547D01* +X523571Y87574D01* +X523503Y87585D01* +X523408Y87615D01* +X523308Y87618D01* +X523240Y87629D01* +X422148Y87629D01* +X422090Y87621D01* +X422032Y87623D01* +X421950Y87601D01* +X421866Y87589D01* +X421813Y87566D01* +X421757Y87551D01* +X421684Y87508D01* +X421607Y87473D01* +X421562Y87435D01* +X421512Y87406D01* +X421454Y87344D01* +X421390Y87290D01* +X421358Y87241D01* +X421318Y87198D01* +X421279Y87123D01* +X421232Y87053D01* +X421215Y86997D01* +X421188Y86945D01* +X421177Y86877D01* +X421147Y86782D01* +X421144Y86682D01* +X421133Y86614D01* +X421133Y70278D01* +X419942Y69087D01* +X380158Y69087D01* +X378967Y70278D01* +X378967Y110062D01* +X380158Y111253D01* +X399877Y111253D01* +X399964Y111265D01* +X400051Y111268D01* +X400104Y111285D01* +X400158Y111293D01* +X400238Y111328D01* +X400322Y111355D01* +X400361Y111383D01* +X400418Y111409D01* +X400531Y111505D01* +X400595Y111550D01* +X402750Y113706D01* +X402768Y113729D01* +X402790Y113748D01* +X402853Y113842D01* +X402921Y113933D01* +X402932Y113960D01* +X402948Y113985D01* +X402982Y114093D01* +X403022Y114198D01* +X403025Y114228D01* +X403034Y114256D01* +X403037Y114369D01* +X403046Y114482D01* +X403040Y114510D01* +X403041Y114540D01* +X403012Y114649D01* +X402990Y114760D01* +X402977Y114787D01* +X402969Y114815D01* +X402911Y114912D01* +X402859Y115013D01* +X402839Y115034D01* +X402824Y115059D01* +X402741Y115137D01* +X402663Y115219D01* +X402638Y115234D01* +X402617Y115254D01* +X402516Y115305D01* +X402418Y115363D01* +X402390Y115370D01* +X402364Y115383D01* +X402286Y115396D01* +X402143Y115433D01* +X402080Y115431D01* +X402032Y115439D01* +X308130Y115439D01* +X308044Y115426D01* +X307956Y115424D01* +X307904Y115407D01* +X307849Y115399D01* +X307769Y115363D01* +X307686Y115336D01* +X307647Y115308D01* +X307590Y115283D01* +X307476Y115187D01* +X307413Y115141D01* +X275618Y83347D01* +X273377Y82419D01* +X181667Y82419D01* +X179426Y83347D01* +X154851Y107922D01* +X153923Y110163D01* +X153923Y330011D01* +X154851Y332252D01* +X156709Y334110D01* +X170668Y348069D01* +X172909Y348997D01* +X191713Y348997D01* +X193954Y348069D01* +X195669Y346354D01* +X196597Y344113D01* +X196597Y341687D01* +X195997Y340241D01* +X195969Y340129D01* +X195934Y340020D01* +X195933Y339992D01* +X195927Y339965D01* +X195930Y339851D01* +X195927Y339736D01* +X195934Y339709D01* +X195935Y339681D01* +X195970Y339572D01* +X195999Y339461D01* +X196013Y339437D01* +X196021Y339410D01* +X196085Y339315D01* +X196144Y339216D01* +X196164Y339197D01* +X196180Y339174D01* +X196267Y339100D01* +X196351Y339022D01* +X196376Y339009D01* +X196397Y338991D01* +X196502Y338945D01* +X196604Y338892D01* +X196629Y338888D01* +X196657Y338876D01* +X196921Y338839D01* +X196935Y338837D01* +X199401Y338837D01* +X201538Y337951D01* +X203174Y336316D01* +X204059Y334179D01* +X204059Y331865D01* +X203174Y329728D01* +X201538Y328093D01* +X199401Y327207D01* +X197087Y327207D01* +X194950Y328093D01* +X193748Y329295D01* +X193678Y329347D01* +X193614Y329407D01* +X193565Y329433D01* +X193521Y329466D01* +X193439Y329497D01* +X193361Y329537D01* +X193313Y329545D01* +X193255Y329567D01* +X193107Y329579D01* +X193030Y329592D01* +X192465Y329592D01* +X192379Y329580D01* +X192291Y329577D01* +X192239Y329560D01* +X192184Y329552D01* +X192104Y329517D01* +X192021Y329490D01* +X191981Y329462D01* +X191924Y329436D01* +X191811Y329340D01* +X191747Y329295D01* +X184143Y321690D01* +X182596Y321690D01* +X182595Y321690D01* +X182593Y321690D01* +X182453Y321670D01* +X182315Y321650D01* +X182314Y321650D01* +X182312Y321650D01* +X182186Y321593D01* +X182056Y321534D01* +X182054Y321533D01* +X182053Y321532D01* +X181946Y321441D01* +X181839Y321351D01* +X181838Y321349D01* +X181836Y321348D01* +X181828Y321335D01* +X181681Y321114D01* +X181672Y321085D01* +X181659Y321064D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +X173217Y318902D01* +X171582Y320537D01* +X170696Y322674D01* +X170696Y324988D01* +X171582Y327125D01* +X173217Y328760D01* +X175354Y329646D01* +X177668Y329646D01* +X179840Y328746D01* +X179852Y328735D01* +X179901Y328709D01* +X179945Y328676D01* +X180027Y328645D01* +X180105Y328605D01* +X180153Y328597D01* +X180211Y328575D01* +X180359Y328563D01* +X180436Y328550D01* +X180881Y328550D01* +X180968Y328562D01* +X181055Y328565D01* +X181108Y328582D01* +X181162Y328590D01* +X181242Y328625D01* +X181325Y328652D01* +X181365Y328680D01* +X181422Y328706D01* +X181535Y328802D01* +X181599Y328847D01* +X187822Y335070D01* +X187839Y335094D01* +X187862Y335113D01* +X187925Y335207D01* +X187993Y335297D01* +X188003Y335325D01* +X188019Y335349D01* +X188054Y335457D01* +X188094Y335563D01* +X188096Y335592D01* +X188105Y335620D01* +X188108Y335734D01* +X188118Y335846D01* +X188112Y335875D01* +X188113Y335904D01* +X188084Y336014D01* +X188062Y336125D01* +X188048Y336151D01* +X188041Y336179D01* +X187983Y336277D01* +X187931Y336377D01* +X187910Y336399D01* +X187895Y336424D01* +X187813Y336501D01* +X187735Y336583D01* +X187710Y336598D01* +X187688Y336618D01* +X187587Y336670D01* +X187490Y336727D01* +X187461Y336734D01* +X187435Y336748D01* +X187358Y336761D01* +X187214Y336797D01* +X187152Y336795D01* +X187104Y336803D01* +X177068Y336803D01* +X176981Y336791D01* +X176893Y336788D01* +X176841Y336771D01* +X176786Y336763D01* +X176706Y336728D01* +X176623Y336701D01* +X176584Y336673D01* +X176527Y336647D01* +X176413Y336551D01* +X176350Y336506D01* +X166414Y326570D01* +X166362Y326501D01* +X166302Y326437D01* +X166276Y326387D01* +X166243Y326343D01* +X166212Y326261D01* +X166172Y326184D01* +X166164Y326136D01* +X166142Y326078D01* +X166130Y325930D01* +X166117Y325852D01* +X166117Y114321D01* +X166129Y114235D01* +X166132Y114147D01* +X166149Y114095D01* +X166157Y114040D01* +X166192Y113960D01* +X166219Y113877D01* +X166247Y113838D01* +X166273Y113780D01* +X166369Y113667D01* +X166414Y113603D01* +X185108Y94910D01* +X185178Y94857D01* +X185242Y94797D01* +X185291Y94772D01* +X185335Y94739D01* +X185417Y94708D01* +X185495Y94668D01* +X185542Y94660D01* +X185601Y94637D01* +X185749Y94625D01* +X185826Y94612D01* +X269219Y94612D01* +X269305Y94624D01* +X269393Y94627D01* +X269445Y94644D01* +X269500Y94652D01* +X269580Y94688D01* +X269663Y94715D01* +X269702Y94743D01* +X269760Y94768D01* +X269873Y94864D01* +X269937Y94910D01* +X301731Y126704D01* +X303972Y127632D01* +X486491Y127632D01* +X486522Y127636D01* +X486553Y127634D01* +X486630Y127652D01* +X486773Y127672D01* +X486832Y127698D01* +X486880Y127709D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496582Y118499D01* +X496553Y118387D01* +X496518Y118278D01* +X496518Y118250D01* +X496511Y118223D01* +X496514Y118109D01* +X496511Y117994D01* +X496518Y117967D01* +X496519Y117939D01* +X496554Y117830D01* +X496583Y117719D01* +X496597Y117695D01* +X496606Y117668D01* +X496670Y117573D01* +X496728Y117474D01* +X496748Y117455D01* +X496764Y117432D01* +X496852Y117358D01* +X496936Y117280D01* +X496960Y117267D01* +X496981Y117249D01* +X497086Y117203D01* +X497189Y117150D01* +X497213Y117146D01* +X497241Y117134D01* +X497505Y117097D01* +X497520Y117095D01* +X954305Y117095D01* +X954419Y117111D01* +X954534Y117121D01* +X954559Y117131D01* +X954587Y117135D01* +X954692Y117182D01* +X954799Y117223D01* +X954821Y117239D01* +X954846Y117251D01* +X954934Y117325D01* +X955026Y117394D01* +X955042Y117417D01* +X955063Y117434D01* +X955127Y117530D01* +X955196Y117622D01* +X955206Y117648D01* +X955221Y117671D01* +X955256Y117781D01* +X955296Y117888D01* +X955298Y117916D01* +X955307Y117942D01* +X955310Y118057D01* +X955319Y118171D01* +X955313Y118196D01* +X955314Y118226D01* +X955247Y118483D01* +X955243Y118499D01* +X954305Y120763D01* +X954305Y123077D01* +X955191Y125214D01* +X956826Y126849D01* +X958963Y127735D01* +X961277Y127735D01* +X963414Y126849D01* +X965049Y125214D01* +X965935Y123077D01* +X965935Y120763D01* +X965049Y118626D01* +X964232Y117809D01* +X964163Y117717D01* +X964089Y117629D01* +X964078Y117604D01* +X964061Y117582D01* +X964020Y117474D01* +X963974Y117370D01* +X963970Y117342D01* +X963960Y117316D01* +X963951Y117202D01* +X963935Y117088D01* +X963939Y117060D01* +X963937Y117033D01* +X963959Y116920D01* +X963976Y116807D01* +X963987Y116781D01* +X963992Y116754D01* +X964046Y116652D01* +X964093Y116548D01* +X964111Y116527D01* +X964123Y116502D01* +X964203Y116419D01* +X964277Y116331D01* +X964298Y116318D01* +X964319Y116296D01* +X964548Y116161D01* +X964562Y116153D01* +X967703Y114852D01* +X971005Y111550D01* +X971075Y111498D01* +X971139Y111438D01* +X971188Y111412D01* +X971232Y111379D01* +X971314Y111348D01* +X971392Y111308D01* +X971440Y111300D01* +X971498Y111278D01* +X971646Y111266D01* +X971723Y111253D01* +X991442Y111253D01* +X992633Y110062D01* +X992633Y70278D01* +X991442Y69087D01* +X951658Y69087D01* +X950467Y70278D01* +X950467Y86614D01* +X950459Y86672D01* +X950461Y86730D01* +X950439Y86812D01* +X950427Y86896D01* +X950404Y86949D01* +X950389Y87005D01* +X950346Y87078D01* +X950311Y87155D01* +X950273Y87200D01* +X950244Y87250D01* +X950182Y87308D01* +X950128Y87372D01* +X950079Y87404D01* +X950036Y87444D01* +X949961Y87483D01* +X949891Y87530D01* +X949835Y87547D01* +X949783Y87574D01* +X949715Y87585D01* +X949620Y87615D01* +X949520Y87618D01* +X949452Y87629D01* +X836815Y87629D01* +X836702Y87613D01* +X836587Y87603D01* +X836561Y87593D01* +X836534Y87589D01* +X836429Y87542D01* +X836322Y87501D01* +X836300Y87485D01* +X836274Y87473D01* +X836187Y87399D01* +X836095Y87330D01* +X836079Y87307D01* +X836057Y87290D01* +X835994Y87194D01* +X835925Y87102D01* +X835915Y87076D01* +X835900Y87053D01* +X835865Y86943D01* +X835825Y86836D01* +X835822Y86808D01* +X835814Y86782D01* +X835811Y86667D01* +X835802Y86553D01* +X835808Y86528D01* +X835807Y86498D01* +X835874Y86241D01* +X835877Y86225D01* +X836395Y84977D01* +X836395Y82663D01* +X835509Y80526D01* +X833874Y78891D01* +X831737Y78005D01* +X829423Y78005D01* +X827286Y78891D01* +X825651Y80526D01* +X824765Y82663D01* +X824765Y84977D01* +X825283Y86225D01* +X825311Y86337D01* +X825346Y86446D01* +X825347Y86474D01* +X825354Y86501D01* +X825350Y86615D01* +X825353Y86730D01* +X825346Y86757D01* +X825345Y86785D01* +X825310Y86894D01* +X825281Y87005D01* +X825267Y87029D01* +X825259Y87056D01* +X825195Y87151D01* +X825136Y87250D01* +X825116Y87269D01* +X825100Y87292D01* +X825013Y87366D01* +X824929Y87444D01* +X824904Y87457D01* +X824883Y87475D01* +X824778Y87521D01* +X824676Y87574D01* +X824651Y87578D01* +X824623Y87590D01* +X824359Y87627D01* +X824345Y87629D01* +X761746Y87629D01* +X761688Y87621D01* +X761630Y87623D01* +X761548Y87601D01* +X761464Y87589D01* +X761411Y87566D01* +X761355Y87551D01* +X761282Y87508D01* +X761205Y87473D01* +X761160Y87435D01* +X761110Y87406D01* +X761052Y87344D01* +X760988Y87290D01* +X760956Y87241D01* +X760916Y87198D01* +X760877Y87123D01* +X760830Y87053D01* +X760813Y86997D01* +X760786Y86945D01* +X760775Y86877D01* +X760745Y86782D01* +X760742Y86682D01* +X760731Y86614D01* +X760731Y80771D01* +X750316Y80771D01* +X750258Y80763D01* +X750200Y80765D01* +X750118Y80743D01* +X750035Y80731D01* +X749981Y80707D01* +X749925Y80693D01* +X749852Y80650D01* +X749775Y80615D01* +X749731Y80577D01* +X749680Y80547D01* +X749623Y80486D01* +X749558Y80431D01* +X749526Y80383D01* +X749486Y80340D01* +X749447Y80265D01* +X749401Y80195D01* +X749383Y80139D01* +X749356Y80087D01* +X749345Y80019D01* +X749315Y79924D01* +X749312Y79824D01* +X749301Y79756D01* +X749301Y78739D01* +X749299Y78739D01* +X749299Y79756D01* +X749291Y79814D01* +X749292Y79872D01* +X749271Y79954D01* +X749259Y80037D01* +X749235Y80091D01* +X749221Y80147D01* +X749178Y80220D01* +X749143Y80297D01* +X749105Y80342D01* +X749075Y80392D01* +X749014Y80450D01* +X748959Y80514D01* +X748911Y80546D01* +X748868Y80586D01* +X748793Y80625D01* +X748723Y80671D01* +X748667Y80689D01* +X748615Y80716D01* +X748547Y80727D01* +X748452Y80757D01* +X748352Y80760D01* +X748284Y80771D01* +X737869Y80771D01* +X737869Y86614D01* +X737861Y86672D01* +X737863Y86730D01* +X737841Y86812D01* +X737829Y86896D01* +X737806Y86949D01* +X737791Y87005D01* +X737748Y87078D01* +X737713Y87155D01* +X737675Y87200D01* +X737646Y87250D01* +X737584Y87308D01* +X737530Y87372D01* +X737481Y87404D01* +X737438Y87444D01* +X737363Y87483D01* +X737293Y87530D01* +X737237Y87547D01* +X737185Y87574D01* +X737117Y87585D01* +X737022Y87615D01* +X736922Y87618D01* +X736854Y87629D01* +X732909Y87629D01* +X732880Y87625D01* +X732851Y87628D01* +X732739Y87605D01* +X732627Y87589D01* +X732601Y87577D01* +X732572Y87572D01* +X732471Y87519D01* +X732368Y87473D01* +X732346Y87454D01* +X732319Y87441D01* +X732237Y87363D01* +X732151Y87290D01* +X732135Y87265D01* +X732113Y87245D01* +X732056Y87147D01* +X731993Y87053D01* +X731984Y87025D01* +X731970Y87000D01* +X731942Y86890D01* +X731908Y86782D01* +X731907Y86752D01* +X731900Y86724D01* +X731903Y86611D01* +X731900Y86498D01* +X731908Y86469D01* +X731909Y86440D01* +X731944Y86332D01* +X731972Y86223D01* +X731987Y86197D01* +X731996Y86169D01* +X732042Y86105D01* +X732117Y85978D01* +X732163Y85935D01* +X732191Y85896D01* +X733160Y84927D01* +X734823Y80913D01* +X734823Y76567D01* +X733160Y72553D01* +X730087Y69480D01* +X726073Y67817D01* +X721727Y67817D01* +G37* +%LPD*% +%LPC*% +G36* +X638923Y245645D02* +X638923Y245645D01* +X636786Y246531D01* +X635151Y248166D01* +X634265Y250303D01* +X634265Y252617D01* +X635151Y254754D01* +X636786Y256389D01* +X637338Y256618D01* +X637412Y256662D01* +X637490Y256697D01* +X637534Y256734D01* +X637583Y256763D01* +X637642Y256825D01* +X637707Y256881D01* +X637739Y256928D01* +X637778Y256969D01* +X637817Y257046D01* +X637865Y257117D01* +X637882Y257171D01* +X637908Y257222D01* +X637925Y257306D01* +X637951Y257388D01* +X637952Y257445D01* +X637963Y257501D01* +X637956Y257586D01* +X637958Y257672D01* +X637944Y257727D01* +X637939Y257784D01* +X637908Y257865D01* +X637886Y257947D01* +X637857Y257996D01* +X637837Y258049D01* +X637785Y258118D01* +X637741Y258192D01* +X637700Y258231D01* +X637665Y258276D01* +X637596Y258328D01* +X637534Y258386D01* +X637483Y258412D01* +X637437Y258446D01* +X637357Y258477D01* +X637281Y258516D01* +X637232Y258524D01* +X637172Y258547D01* +X637027Y258558D01* +X636950Y258571D01* +X598177Y258571D01* +X517195Y339554D01* +X517125Y339606D01* +X517061Y339666D01* +X517011Y339692D01* +X516967Y339725D01* +X516886Y339756D01* +X516808Y339796D01* +X516760Y339804D01* +X516702Y339826D01* +X516554Y339838D01* +X516477Y339851D01* +X427235Y339851D01* +X427148Y339839D01* +X427061Y339836D01* +X427008Y339819D01* +X426954Y339811D01* +X426874Y339776D01* +X426791Y339749D01* +X426751Y339721D01* +X426694Y339695D01* +X426581Y339599D01* +X426517Y339554D01* +X424934Y337971D01* +X422739Y337062D01* +X422689Y337032D01* +X422635Y337011D01* +X422567Y336960D01* +X422495Y336917D01* +X422455Y336875D01* +X422408Y336839D01* +X422357Y336772D01* +X422299Y336710D01* +X422273Y336658D01* +X422238Y336612D01* +X422208Y336533D01* +X422169Y336458D01* +X422158Y336400D01* +X422137Y336346D01* +X422131Y336262D01* +X422114Y336179D01* +X422119Y336120D01* +X422115Y336062D01* +X422130Y335995D01* +X422139Y335896D01* +X422175Y335802D01* +X422190Y335735D01* +X422952Y333897D01* +X422952Y331583D01* +X422066Y329446D01* +X421294Y328674D01* +X421259Y328627D01* +X421216Y328587D01* +X421173Y328514D01* +X421123Y328446D01* +X421102Y328392D01* +X421072Y328341D01* +X421052Y328260D01* +X421022Y328181D01* +X421017Y328122D01* +X421002Y328066D01* +X421005Y327982D01* +X420998Y327897D01* +X421010Y327840D01* +X421011Y327782D01* +X421037Y327701D01* +X421054Y327619D01* +X421081Y327567D01* +X421099Y327511D01* +X421139Y327455D01* +X421185Y327366D01* +X421254Y327294D01* +X421294Y327238D01* +X450485Y298047D01* +X450555Y297994D01* +X450619Y297934D01* +X450668Y297909D01* +X450712Y297876D01* +X450794Y297845D01* +X450872Y297805D01* +X450919Y297797D01* +X450978Y297775D01* +X451125Y297762D01* +X451203Y297749D01* +X453111Y297749D01* +X455248Y296864D01* +X456884Y295228D01* +X457769Y293091D01* +X457769Y290778D01* +X456884Y288641D01* +X455248Y287005D01* +X453111Y286120D01* +X450798Y286120D01* +X448661Y287005D01* +X447025Y288641D01* +X446140Y290778D01* +X446140Y293180D01* +X446150Y293218D01* +X446149Y293220D01* +X446150Y293222D01* +X446146Y293360D01* +X446142Y293502D01* +X446141Y293504D01* +X446141Y293506D01* +X446099Y293637D01* +X446055Y293773D01* +X446054Y293775D01* +X446053Y293777D01* +X446043Y293791D01* +X445897Y294009D01* +X445873Y294029D01* +X445859Y294050D01* +X416171Y323737D01* +X414088Y325820D01* +X414088Y327145D01* +X414076Y327232D01* +X414073Y327319D01* +X414056Y327372D01* +X414048Y327426D01* +X414013Y327506D01* +X413986Y327590D01* +X413958Y327629D01* +X413932Y327686D01* +X413836Y327799D01* +X413791Y327863D01* +X412207Y329446D01* +X411322Y331583D01* +X411322Y333897D01* +X412207Y336034D01* +X413843Y337669D01* +X416037Y338578D01* +X416088Y338608D01* +X416142Y338629D01* +X416210Y338680D01* +X416282Y338723D01* +X416322Y338765D01* +X416369Y338801D01* +X416420Y338868D01* +X416477Y338930D01* +X416504Y338982D01* +X416539Y339028D01* +X416569Y339107D01* +X416608Y339182D01* +X416619Y339240D01* +X416640Y339294D01* +X416646Y339378D01* +X416663Y339461D01* +X416658Y339520D01* +X416662Y339578D01* +X416647Y339645D01* +X416638Y339744D01* +X416602Y339838D01* +X416587Y339905D01* +X415825Y341743D01* +X415825Y344057D01* +X416711Y346194D01* +X418346Y347829D01* +X420483Y348715D01* +X422430Y348715D01* +X422488Y348723D01* +X422546Y348721D01* +X422628Y348743D01* +X422712Y348755D01* +X422765Y348778D01* +X422821Y348793D01* +X422894Y348836D01* +X422971Y348871D01* +X423016Y348909D01* +X423066Y348938D01* +X423124Y349000D01* +X423188Y349054D01* +X423220Y349103D01* +X423260Y349146D01* +X423299Y349221D01* +X423346Y349291D01* +X423363Y349347D01* +X423390Y349399D01* +X423401Y349467D01* +X423431Y349562D01* +X423434Y349662D01* +X423445Y349730D01* +X423445Y351753D01* +X424331Y353890D01* +X425966Y355525D01* +X428103Y356411D01* +X430417Y356411D01* +X432554Y355525D01* +X434137Y353942D01* +X434207Y353890D01* +X434271Y353830D01* +X434320Y353804D01* +X434364Y353771D01* +X434446Y353740D01* +X434524Y353700D01* +X434571Y353692D01* +X434630Y353670D01* +X434778Y353658D01* +X434855Y353645D01* +X519423Y353645D01* +X603811Y269256D01* +X603881Y269204D01* +X603945Y269144D01* +X603995Y269118D01* +X604039Y269085D01* +X604120Y269054D01* +X604198Y269014D01* +X604246Y269006D01* +X604304Y268984D01* +X604452Y268972D01* +X604529Y268959D01* +X708427Y268959D01* +X708456Y268963D01* +X708485Y268960D01* +X708596Y268983D01* +X708708Y268999D01* +X708735Y269011D01* +X708764Y269016D01* +X708865Y269069D01* +X708968Y269115D01* +X708990Y269134D01* +X709016Y269147D01* +X709098Y269225D01* +X709185Y269298D01* +X709201Y269323D01* +X709222Y269343D01* +X709280Y269441D01* +X709342Y269535D01* +X709351Y269563D01* +X709366Y269588D01* +X709394Y269698D01* +X709428Y269806D01* +X709429Y269836D01* +X709436Y269864D01* +X709433Y269977D01* +X709436Y270090D01* +X709428Y270119D01* +X709427Y270148D01* +X709392Y270256D01* +X709364Y270365D01* +X709349Y270391D01* +X709340Y270419D01* +X709294Y270483D01* +X709218Y270610D01* +X709173Y270653D01* +X709145Y270692D01* +X708811Y271026D01* +X707925Y273163D01* +X707925Y275477D01* +X708811Y277614D01* +X710446Y279249D01* +X712583Y280135D01* +X714897Y280135D01* +X717034Y279249D01* +X718669Y277614D01* +X719555Y275477D01* +X719555Y273163D01* +X718669Y271026D01* +X718335Y270692D01* +X718317Y270668D01* +X718295Y270649D01* +X718232Y270555D01* +X718164Y270465D01* +X718154Y270437D01* +X718138Y270413D01* +X718103Y270305D01* +X718063Y270199D01* +X718061Y270170D01* +X718052Y270142D01* +X718049Y270029D01* +X718039Y269916D01* +X718045Y269887D01* +X718044Y269858D01* +X718073Y269748D01* +X718095Y269637D01* +X718109Y269611D01* +X718116Y269583D01* +X718174Y269485D01* +X718226Y269385D01* +X718247Y269363D01* +X718262Y269338D01* +X718344Y269261D01* +X718422Y269179D01* +X718447Y269164D01* +X718469Y269144D01* +X718570Y269092D01* +X718667Y269035D01* +X718696Y269028D01* +X718722Y269014D01* +X718799Y269001D01* +X718943Y268965D01* +X719005Y268967D01* +X719053Y268959D01* +X797327Y268959D01* +X797356Y268963D01* +X797385Y268960D01* +X797496Y268983D01* +X797608Y268999D01* +X797635Y269011D01* +X797664Y269016D01* +X797765Y269069D01* +X797868Y269115D01* +X797890Y269134D01* +X797916Y269147D01* +X797998Y269225D01* +X798085Y269298D01* +X798101Y269323D01* +X798122Y269343D01* +X798180Y269441D01* +X798242Y269535D01* +X798251Y269563D01* +X798266Y269588D01* +X798294Y269698D01* +X798328Y269806D01* +X798329Y269836D01* +X798336Y269864D01* +X798333Y269977D01* +X798336Y270090D01* +X798328Y270119D01* +X798327Y270148D01* +X798292Y270256D01* +X798264Y270365D01* +X798249Y270391D01* +X798240Y270419D01* +X798194Y270483D01* +X798118Y270610D01* +X798073Y270653D01* +X798045Y270692D01* +X797711Y271026D01* +X796825Y273163D01* +X796825Y275477D01* +X797711Y277614D01* +X799346Y279249D01* +X801483Y280135D01* +X803797Y280135D01* +X805934Y279249D01* +X807569Y277614D01* +X808455Y275477D01* +X808455Y273163D01* +X807569Y271026D01* +X807235Y270692D01* +X807217Y270668D01* +X807195Y270649D01* +X807132Y270555D01* +X807064Y270465D01* +X807054Y270437D01* +X807038Y270413D01* +X807003Y270305D01* +X806963Y270199D01* +X806961Y270170D01* +X806952Y270142D01* +X806949Y270029D01* +X806939Y269916D01* +X806945Y269887D01* +X806944Y269858D01* +X806973Y269748D01* +X806995Y269637D01* +X807009Y269611D01* +X807016Y269583D01* +X807074Y269485D01* +X807126Y269385D01* +X807147Y269363D01* +X807162Y269338D01* +X807244Y269261D01* +X807322Y269179D01* +X807347Y269164D01* +X807369Y269144D01* +X807470Y269092D01* +X807567Y269035D01* +X807596Y269028D01* +X807622Y269014D01* +X807699Y269001D01* +X807843Y268965D01* +X807905Y268967D01* +X807953Y268959D01* +X855747Y268959D01* +X855776Y268963D01* +X855805Y268960D01* +X855916Y268983D01* +X856028Y268999D01* +X856055Y269011D01* +X856084Y269016D01* +X856185Y269069D01* +X856288Y269115D01* +X856310Y269134D01* +X856336Y269147D01* +X856418Y269225D01* +X856505Y269298D01* +X856521Y269323D01* +X856542Y269343D01* +X856600Y269441D01* +X856662Y269535D01* +X856671Y269563D01* +X856686Y269588D01* +X856714Y269698D01* +X856748Y269806D01* +X856749Y269836D01* +X856756Y269864D01* +X856753Y269977D01* +X856756Y270090D01* +X856748Y270119D01* +X856747Y270148D01* +X856712Y270256D01* +X856684Y270365D01* +X856669Y270391D01* +X856660Y270419D01* +X856614Y270483D01* +X856538Y270610D01* +X856493Y270653D01* +X856465Y270692D01* +X856131Y271026D01* +X855245Y273163D01* +X855245Y275477D01* +X856131Y277614D01* +X857766Y279249D01* +X859903Y280135D01* +X862217Y280135D01* +X864354Y279249D01* +X865989Y277614D01* +X866875Y275477D01* +X866875Y273163D01* +X865989Y271026D01* +X865655Y270692D01* +X865637Y270668D01* +X865615Y270649D01* +X865552Y270555D01* +X865484Y270465D01* +X865474Y270437D01* +X865458Y270413D01* +X865423Y270305D01* +X865383Y270199D01* +X865381Y270170D01* +X865372Y270142D01* +X865369Y270029D01* +X865359Y269916D01* +X865365Y269887D01* +X865364Y269858D01* +X865393Y269748D01* +X865415Y269637D01* +X865429Y269611D01* +X865436Y269583D01* +X865494Y269485D01* +X865546Y269385D01* +X865567Y269363D01* +X865582Y269338D01* +X865664Y269261D01* +X865742Y269179D01* +X865767Y269164D01* +X865789Y269144D01* +X865890Y269092D01* +X865987Y269035D01* +X866016Y269028D01* +X866042Y269014D01* +X866119Y269001D01* +X866263Y268965D01* +X866325Y268967D01* +X866373Y268959D01* +X1140527Y268959D01* +X1140613Y268971D01* +X1140701Y268974D01* +X1140753Y268991D01* +X1140808Y268999D01* +X1140888Y269034D01* +X1140971Y269061D01* +X1141010Y269089D01* +X1141068Y269115D01* +X1141181Y269211D01* +X1141245Y269256D01* +X1151897Y279909D01* +X1160265Y279909D01* +X1160352Y279921D01* +X1160439Y279924D01* +X1160492Y279941D01* +X1160546Y279949D01* +X1160626Y279984D01* +X1160709Y280011D01* +X1160749Y280039D01* +X1160806Y280065D01* +X1160919Y280161D01* +X1160983Y280206D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275703D01* +X1170789Y273566D01* +X1169154Y271931D01* +X1167017Y271045D01* +X1164703Y271045D01* +X1162566Y271931D01* +X1160983Y273514D01* +X1160913Y273566D01* +X1160849Y273626D01* +X1160800Y273652D01* +X1160756Y273685D01* +X1160674Y273716D01* +X1160596Y273756D01* +X1160548Y273764D01* +X1160490Y273786D01* +X1160342Y273798D01* +X1160265Y273811D01* +X1158830Y273811D01* +X1158745Y273799D01* +X1158659Y273797D01* +X1158605Y273779D01* +X1158549Y273771D01* +X1158471Y273736D01* +X1158389Y273710D01* +X1158341Y273678D01* +X1158290Y273655D01* +X1158224Y273600D01* +X1158153Y273552D01* +X1158116Y273508D01* +X1158073Y273472D01* +X1158025Y273400D01* +X1157970Y273334D01* +X1157947Y273282D01* +X1157915Y273235D01* +X1157889Y273153D01* +X1157854Y273074D01* +X1157846Y273018D01* +X1157829Y272964D01* +X1157827Y272878D01* +X1157815Y272793D01* +X1157823Y272737D01* +X1157822Y272680D01* +X1157844Y272597D01* +X1157856Y272511D01* +X1157879Y272460D01* +X1157894Y272405D01* +X1157938Y272331D01* +X1157973Y272252D01* +X1158010Y272209D01* +X1158039Y272160D01* +X1158102Y272101D01* +X1158157Y272036D01* +X1158199Y272010D01* +X1158246Y271966D01* +X1158375Y271900D01* +X1158442Y271858D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265543D01* +X1160629Y263406D01* +X1158994Y261771D01* +X1156857Y260885D01* +X1154617Y260885D01* +X1154531Y260873D01* +X1154443Y260870D01* +X1154391Y260853D01* +X1154336Y260845D01* +X1154256Y260810D01* +X1154173Y260783D01* +X1154134Y260755D01* +X1154076Y260729D01* +X1153963Y260633D01* +X1153899Y260588D01* +X1151883Y258571D01* +X643210Y258571D01* +X643125Y258559D01* +X643040Y258557D01* +X642985Y258539D01* +X642929Y258531D01* +X642851Y258496D01* +X642769Y258470D01* +X642721Y258438D01* +X642670Y258415D01* +X642604Y258360D01* +X642533Y258312D01* +X642496Y258268D01* +X642453Y258232D01* +X642405Y258160D01* +X642350Y258094D01* +X642327Y258042D01* +X642295Y257995D01* +X642269Y257913D01* +X642234Y257834D01* +X642226Y257778D01* +X642209Y257724D01* +X642207Y257638D01* +X642195Y257553D01* +X642203Y257497D01* +X642202Y257440D01* +X642224Y257357D01* +X642236Y257271D01* +X642259Y257220D01* +X642274Y257165D01* +X642318Y257091D01* +X642353Y257012D01* +X642390Y256969D01* +X642419Y256920D01* +X642482Y256861D01* +X642537Y256796D01* +X642579Y256770D01* +X642626Y256726D01* +X642755Y256660D01* +X642822Y256618D01* +X643374Y256389D01* +X645009Y254754D01* +X645895Y252617D01* +X645895Y250303D01* +X645009Y248166D01* +X643374Y246531D01* +X641237Y245645D01* +X638923Y245645D01* +G37* +%LPD*% +%LPC*% +G36* +X314396Y129666D02* +X314396Y129666D01* +X293984Y150078D01* +X293915Y150130D01* +X293851Y150190D01* +X293801Y150216D01* +X293757Y150249D01* +X293675Y150280D01* +X293597Y150320D01* +X293550Y150328D01* +X293491Y150350D01* +X293344Y150362D01* +X293266Y150375D01* +X289917Y150375D01* +X285902Y152038D01* +X282830Y155111D01* +X281167Y159125D01* +X281167Y163471D01* +X282830Y167485D01* +X285902Y170558D01* +X289917Y172221D01* +X294262Y172221D01* +X298277Y170558D01* +X301349Y167485D01* +X303012Y163471D01* +X303012Y159125D01* +X301349Y155111D01* +X300360Y154121D01* +X300324Y154074D01* +X300282Y154034D01* +X300239Y153961D01* +X300189Y153894D01* +X300168Y153839D01* +X300138Y153788D01* +X300117Y153707D01* +X300087Y153628D01* +X300083Y153570D01* +X300068Y153513D01* +X300071Y153429D01* +X300064Y153345D01* +X300075Y153287D01* +X300077Y153229D01* +X300103Y153149D01* +X300120Y153066D01* +X300147Y153014D01* +X300165Y152958D01* +X300205Y152902D01* +X300251Y152814D01* +X300319Y152741D01* +X300359Y152685D01* +X304834Y148211D01* +X304857Y148193D01* +X304876Y148171D01* +X304928Y148136D01* +X304953Y148113D01* +X304987Y148096D01* +X305061Y148040D01* +X305088Y148029D01* +X305113Y148013D01* +X305221Y147979D01* +X305327Y147939D01* +X305356Y147936D01* +X305384Y147927D01* +X305497Y147924D01* +X305610Y147915D01* +X305639Y147921D01* +X305668Y147920D01* +X305778Y147949D01* +X305889Y147971D01* +X305915Y147984D01* +X305943Y147992D01* +X306040Y148050D01* +X306141Y148102D01* +X306162Y148122D01* +X306187Y148137D01* +X306265Y148220D01* +X306347Y148298D01* +X306362Y148323D01* +X306382Y148344D01* +X306434Y148445D01* +X306491Y148543D01* +X306498Y148571D01* +X306511Y148598D01* +X306524Y148675D01* +X306538Y148728D01* +X306553Y148776D01* +X306553Y148788D01* +X306561Y148819D01* +X306559Y148881D01* +X306567Y148929D01* +X306567Y150771D01* +X308230Y154785D01* +X311302Y157858D01* +X315317Y159521D01* +X319662Y159521D01* +X323677Y157858D01* +X326749Y154785D01* +X328412Y150771D01* +X328412Y146425D01* +X327425Y144040D01* +X327424Y144039D01* +X327423Y144038D01* +X327389Y143905D01* +X327354Y143765D01* +X327354Y143764D01* +X327353Y143762D01* +X327358Y143621D01* +X327362Y143481D01* +X327362Y143480D01* +X327362Y143478D01* +X327406Y143344D01* +X327448Y143210D01* +X327449Y143209D01* +X327450Y143207D01* +X327458Y143195D01* +X327607Y142974D01* +X327630Y142954D01* +X327645Y142934D01* +X329946Y140633D01* +X330015Y140581D01* +X330079Y140521D01* +X330129Y140495D01* +X330173Y140462D01* +X330254Y140431D01* +X330332Y140391D01* +X330380Y140383D01* +X330438Y140361D01* +X330586Y140349D01* +X330663Y140336D01* +X391732Y140336D01* +X391819Y140348D01* +X391906Y140351D01* +X391959Y140368D01* +X392014Y140376D01* +X392094Y140411D01* +X392177Y140438D01* +X392216Y140466D01* +X392273Y140492D01* +X392387Y140588D01* +X392450Y140633D01* +X437228Y185411D01* +X437281Y185481D01* +X437341Y185545D01* +X437366Y185594D01* +X437399Y185638D01* +X437430Y185720D01* +X437470Y185798D01* +X437478Y185845D01* +X437500Y185904D01* +X437512Y186051D01* +X437525Y186129D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y199951D01* +X437513Y200038D01* +X437510Y200125D01* +X437493Y200178D01* +X437486Y200233D01* +X437450Y200313D01* +X437423Y200396D01* +X437395Y200435D01* +X437369Y200492D01* +X437273Y200605D01* +X437228Y200669D01* +X428010Y209887D01* +X427941Y209939D01* +X427877Y209999D01* +X427827Y210025D01* +X427783Y210058D01* +X427701Y210089D01* +X427623Y210129D01* +X427576Y210137D01* +X427517Y210159D01* +X427370Y210171D01* +X427292Y210184D01* +X324601Y210184D01* +X324572Y210180D01* +X324543Y210183D01* +X324432Y210160D01* +X324320Y210144D01* +X324293Y210132D01* +X324264Y210127D01* +X324164Y210074D01* +X324060Y210028D01* +X324038Y210009D01* +X324012Y209996D01* +X323930Y209918D01* +X323843Y209845D01* +X323827Y209820D01* +X323806Y209800D01* +X323749Y209702D01* +X323686Y209608D01* +X323677Y209580D01* +X323662Y209555D01* +X323634Y209445D01* +X323600Y209337D01* +X323599Y209307D01* +X323592Y209279D01* +X323596Y209166D01* +X323593Y209053D01* +X323600Y209024D01* +X323601Y208995D01* +X323636Y208887D01* +X323665Y208778D01* +X323680Y208752D01* +X323689Y208724D01* +X323734Y208661D01* +X323810Y208533D01* +X323855Y208490D01* +X323883Y208451D01* +X326749Y205585D01* +X328412Y201571D01* +X328412Y197225D01* +X326749Y193211D01* +X323677Y190138D01* +X319662Y188475D01* +X315317Y188475D01* +X311302Y190138D01* +X308230Y193211D01* +X306567Y197225D01* +X306567Y201571D01* +X308230Y205585D01* +X310971Y208327D01* +X311006Y208373D01* +X311049Y208414D01* +X311092Y208486D01* +X311142Y208554D01* +X311163Y208608D01* +X311193Y208659D01* +X311213Y208741D01* +X311243Y208820D01* +X311248Y208878D01* +X311263Y208934D01* +X311260Y209019D01* +X311267Y209103D01* +X311255Y209160D01* +X311254Y209219D01* +X311228Y209299D01* +X311211Y209382D01* +X311184Y209433D01* +X311166Y209489D01* +X311126Y209545D01* +X311080Y209634D01* +X311011Y209706D01* +X310971Y209762D01* +X304181Y216552D01* +X304113Y216604D01* +X304050Y216663D01* +X303999Y216689D01* +X303954Y216723D01* +X303874Y216754D01* +X303797Y216793D01* +X303742Y216804D01* +X303688Y216825D01* +X303603Y216832D01* +X303519Y216848D01* +X303462Y216843D01* +X303405Y216848D01* +X303321Y216831D01* +X303235Y216824D01* +X303182Y216803D01* +X303126Y216792D01* +X303050Y216753D01* +X302970Y216722D01* +X302925Y216687D01* +X302874Y216661D01* +X302812Y216602D01* +X302743Y216550D01* +X302709Y216505D01* +X302668Y216465D01* +X302624Y216391D01* +X302573Y216322D01* +X302553Y216269D01* +X302524Y216220D01* +X302503Y216137D01* +X302473Y216057D01* +X302468Y216000D01* +X302454Y215945D01* +X302457Y215859D01* +X302450Y215773D01* +X302461Y215725D01* +X302463Y215661D01* +X302508Y215523D01* +X302525Y215446D01* +X303012Y214271D01* +X303012Y209925D01* +X301349Y205911D01* +X298277Y202838D01* +X294262Y201175D01* +X289917Y201175D01* +X285902Y202838D01* +X282830Y205911D01* +X281167Y209925D01* +X281167Y214271D01* +X282830Y218285D01* +X285902Y221358D01* +X289917Y223021D01* +X294262Y223021D01* +X295438Y222534D01* +X295521Y222512D01* +X295601Y222482D01* +X295658Y222477D01* +X295713Y222463D01* +X295799Y222465D01* +X295885Y222458D01* +X295940Y222469D01* +X295997Y222471D01* +X296079Y222497D01* +X296163Y222514D01* +X296214Y222540D01* +X296268Y222558D01* +X296339Y222605D01* +X296416Y222645D01* +X296457Y222684D01* +X296504Y222716D01* +X296559Y222782D01* +X296622Y222841D01* +X296650Y222890D01* +X296687Y222933D01* +X296722Y223012D01* +X296765Y223086D01* +X296779Y223141D01* +X296803Y223193D01* +X296814Y223278D01* +X296835Y223362D01* +X296834Y223418D01* +X296841Y223475D01* +X296829Y223560D01* +X296826Y223646D01* +X296809Y223700D01* +X296801Y223756D01* +X296765Y223834D01* +X296739Y223916D01* +X296710Y223956D01* +X296684Y224015D01* +X296590Y224126D01* +X296544Y224190D01* +X294066Y226668D01* +X293996Y226720D01* +X293932Y226780D01* +X293883Y226806D01* +X293839Y226839D01* +X293757Y226870D01* +X293679Y226910D01* +X293632Y226918D01* +X293573Y226940D01* +X293425Y226952D01* +X293348Y226965D01* +X289995Y226965D01* +X286123Y228569D01* +X283160Y231532D01* +X281557Y235403D01* +X281557Y239593D01* +X283160Y243464D01* +X286123Y246427D01* +X289995Y248031D01* +X294185Y248031D01* +X298056Y246427D01* +X301019Y243464D01* +X302622Y239593D01* +X302622Y235403D01* +X301019Y231532D01* +X300320Y230832D01* +X300284Y230786D01* +X300242Y230745D01* +X300199Y230672D01* +X300149Y230605D01* +X300128Y230550D01* +X300098Y230500D01* +X300078Y230418D01* +X300047Y230339D01* +X300043Y230281D01* +X300028Y230225D01* +X300031Y230140D01* +X300024Y230056D01* +X300035Y229999D01* +X300037Y229940D01* +X300063Y229860D01* +X300080Y229777D01* +X300107Y229725D01* +X300125Y229670D01* +X300165Y229614D01* +X300211Y229525D01* +X300280Y229453D01* +X300320Y229397D01* +X304834Y224882D01* +X304857Y224865D01* +X304876Y224842D01* +X304971Y224779D01* +X305061Y224711D01* +X305088Y224701D01* +X305113Y224685D01* +X305221Y224651D01* +X305327Y224610D01* +X305356Y224608D01* +X305384Y224599D01* +X305497Y224596D01* +X305610Y224587D01* +X305639Y224592D01* +X305668Y224592D01* +X305778Y224620D01* +X305889Y224643D01* +X305915Y224656D01* +X305943Y224663D01* +X306040Y224721D01* +X306141Y224774D01* +X306162Y224794D01* +X306187Y224809D01* +X306265Y224891D01* +X306347Y224969D01* +X306362Y224995D01* +X306382Y225016D01* +X306433Y225117D01* +X306491Y225215D01* +X306498Y225243D01* +X306511Y225269D01* +X306524Y225347D01* +X306561Y225490D01* +X306559Y225553D01* +X306567Y225600D01* +X306567Y226971D01* +X308230Y230985D01* +X311302Y234058D01* +X315317Y235721D01* +X319662Y235721D01* +X323677Y234058D01* +X326749Y230985D01* +X328412Y226971D01* +X328412Y222625D01* +X328260Y222258D01* +X328231Y222147D01* +X328197Y222037D01* +X328196Y222009D01* +X328189Y221982D01* +X328192Y221868D01* +X328189Y221753D01* +X328196Y221726D01* +X328197Y221698D01* +X328232Y221589D01* +X328261Y221478D01* +X328275Y221454D01* +X328284Y221427D01* +X328348Y221332D01* +X328406Y221233D01* +X328427Y221214D01* +X328442Y221191D01* +X328530Y221117D01* +X328614Y221039D01* +X328638Y221026D01* +X328660Y221008D01* +X328765Y220961D01* +X328867Y220909D01* +X328891Y220905D01* +X328919Y220893D01* +X329183Y220856D01* +X329198Y220854D01* +X432607Y220854D01* +X443740Y209721D01* +X443810Y209669D01* +X443874Y209609D01* +X443923Y209583D01* +X443967Y209550D01* +X444049Y209519D01* +X444127Y209479D01* +X444174Y209471D01* +X444233Y209449D01* +X444381Y209437D01* +X444458Y209424D01* +X444940Y209424D01* +X445026Y209436D01* +X445114Y209439D01* +X445166Y209456D01* +X445221Y209464D01* +X445301Y209499D01* +X445384Y209526D01* +X445423Y209554D01* +X445480Y209580D01* +X445594Y209676D01* +X445657Y209721D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +X446414Y175602D01* +X445657Y176359D01* +X445588Y176411D01* +X445524Y176471D01* +X445474Y176497D01* +X445430Y176530D01* +X445349Y176561D01* +X445271Y176601D01* +X445223Y176609D01* +X445165Y176631D01* +X445017Y176643D01* +X444940Y176656D01* +X444458Y176656D01* +X444371Y176644D01* +X444284Y176641D01* +X444231Y176624D01* +X444176Y176616D01* +X444097Y176581D01* +X444013Y176554D01* +X443974Y176526D01* +X443917Y176500D01* +X443804Y176404D01* +X443740Y176359D01* +X397047Y129666D01* +X314396Y129666D01* +G37* +%LPD*% +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X443658Y37337D02* +X443658Y37337D01* +X442467Y38528D01* +X442467Y78312D01* +X443658Y79503D01* +X483442Y79503D01* +X484633Y78312D01* +X484633Y38528D01* +X483442Y37337D01* +X443658Y37337D01* +G37* +%LPD*% +%LPC*% +G36* +X888158Y37337D02* +X888158Y37337D01* +X886967Y38528D01* +X886967Y78312D01* +X888158Y79503D01* +X927942Y79503D01* +X929133Y78312D01* +X929133Y38528D01* +X927942Y37337D01* +X888158Y37337D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X256159Y99565D02* +X256159Y99565D01* +X250744Y101808D01* +X246600Y105952D01* +X244357Y111367D01* +X244357Y117228D01* +X246600Y122643D01* +X250744Y126788D01* +X256159Y129031D01* +X262020Y129031D01* +X267435Y126788D01* +X271579Y122643D01* +X273822Y117228D01* +X273822Y111367D01* +X271579Y105952D01* +X267435Y101808D01* +X262020Y99565D01* +X256159Y99565D01* +G37* +%LPD*% +%LPC*% +G36* +X256159Y257065D02* +X256159Y257065D01* +X250744Y259308D01* +X246600Y263452D01* +X244357Y268867D01* +X244357Y274728D01* +X246600Y280143D01* +X250744Y284288D01* +X256159Y286531D01* +X262020Y286531D01* +X267435Y284288D01* +X271579Y280143D01* +X273822Y274728D01* +X273822Y268867D01* +X271579Y263452D01* +X267435Y259308D01* +X262020Y257065D01* +X256159Y257065D01* +G37* +%LPD*% +%LPC*% +G36* +X486568Y179831D02* +X486568Y179831D01* +X484514Y180682D01* +X482942Y182254D01* +X482091Y184308D01* +X482091Y186532D01* +X482942Y188586D01* +X484514Y190158D01* +X486568Y191009D01* +X488696Y191009D01* +X488754Y191017D01* +X488812Y191015D01* +X488894Y191037D01* +X488978Y191049D01* +X489031Y191072D01* +X489087Y191087D01* +X489160Y191130D01* +X489237Y191165D01* +X489282Y191203D01* +X489332Y191232D01* +X489390Y191294D01* +X489454Y191348D01* +X489486Y191397D01* +X489526Y191440D01* +X489565Y191515D01* +X489612Y191585D01* +X489629Y191641D01* +X489656Y191693D01* +X489667Y191761D01* +X489697Y191856D01* +X489700Y191956D01* +X489711Y192024D01* +X489711Y194056D01* +X489703Y194114D01* +X489705Y194172D01* +X489683Y194254D01* +X489671Y194338D01* +X489648Y194391D01* +X489633Y194447D01* +X489590Y194520D01* +X489555Y194597D01* +X489517Y194642D01* +X489488Y194692D01* +X489426Y194750D01* +X489372Y194814D01* +X489323Y194846D01* +X489280Y194886D01* +X489205Y194925D01* +X489135Y194972D01* +X489079Y194989D01* +X489027Y195016D01* +X488959Y195027D01* +X488864Y195057D01* +X488764Y195060D01* +X488696Y195071D01* +X486568Y195071D01* +X484514Y195922D01* +X482942Y197494D01* +X482091Y199548D01* +X482091Y201772D01* +X482942Y203826D01* +X484514Y205398D01* +X486568Y206249D01* +X488792Y206249D01* +X490846Y205398D01* +X492418Y203826D01* +X493269Y201772D01* +X493269Y199644D01* +X493276Y199596D01* +X493275Y199590D01* +X493277Y199584D01* +X493275Y199528D01* +X493297Y199446D01* +X493309Y199362D01* +X493332Y199309D01* +X493347Y199253D01* +X493390Y199180D01* +X493425Y199103D01* +X493463Y199058D01* +X493492Y199008D01* +X493554Y198950D01* +X493608Y198886D01* +X493657Y198854D01* +X493700Y198814D01* +X493775Y198775D01* +X493845Y198728D01* +X493901Y198711D01* +X493953Y198684D01* +X494021Y198673D01* +X494116Y198643D01* +X494216Y198640D01* +X494284Y198629D01* +X496316Y198629D01* +X496374Y198637D01* +X496432Y198635D01* +X496514Y198657D01* +X496598Y198669D01* +X496651Y198692D01* +X496707Y198707D01* +X496780Y198750D01* +X496857Y198785D01* +X496902Y198823D01* +X496952Y198852D01* +X497010Y198914D01* +X497074Y198968D01* +X497106Y199017D01* +X497146Y199060D01* +X497185Y199135D01* +X497232Y199205D01* +X497249Y199261D01* +X497276Y199313D01* +X497287Y199381D01* +X497317Y199476D01* +X497320Y199576D01* +X497331Y199644D01* +X497331Y201772D01* +X498182Y203826D01* +X499754Y205398D01* +X501808Y206249D01* +X504032Y206249D01* +X506086Y205398D01* +X507658Y203826D01* +X508509Y201772D01* +X508509Y199548D01* +X507658Y197494D01* +X506086Y195922D01* +X504032Y195071D01* +X501904Y195071D01* +X501846Y195063D01* +X501788Y195065D01* +X501706Y195043D01* +X501622Y195031D01* +X501569Y195008D01* +X501513Y194993D01* +X501440Y194950D01* +X501363Y194915D01* +X501318Y194877D01* +X501268Y194848D01* +X501210Y194786D01* +X501146Y194732D01* +X501114Y194683D01* +X501074Y194640D01* +X501035Y194565D01* +X500988Y194495D01* +X500971Y194439D01* +X500944Y194387D01* +X500933Y194319D01* +X500903Y194224D01* +X500900Y194124D01* +X500889Y194056D01* +X500889Y192024D01* +X500897Y191966D01* +X500895Y191908D01* +X500917Y191826D01* +X500929Y191742D01* +X500952Y191689D01* +X500967Y191633D01* +X501010Y191560D01* +X501045Y191483D01* +X501083Y191438D01* +X501112Y191388D01* +X501174Y191330D01* +X501228Y191266D01* +X501277Y191234D01* +X501320Y191194D01* +X501395Y191155D01* +X501465Y191108D01* +X501521Y191091D01* +X501573Y191064D01* +X501641Y191053D01* +X501736Y191023D01* +X501836Y191020D01* +X501904Y191009D01* +X504032Y191009D01* +X506086Y190158D01* +X507658Y188586D01* +X508509Y186532D01* +X508509Y184308D01* +X507658Y182254D01* +X506086Y180682D01* +X504032Y179831D01* +X501808Y179831D01* +X499754Y180682D01* +X498182Y182254D01* +X497331Y184308D01* +X497331Y186436D01* +X497323Y186494D01* +X497325Y186552D01* +X497303Y186634D01* +X497291Y186718D01* +X497268Y186771D01* +X497253Y186827D01* +X497210Y186900D01* +X497175Y186977D01* +X497137Y187022D01* +X497108Y187072D01* +X497046Y187130D01* +X496992Y187194D01* +X496943Y187226D01* +X496900Y187266D01* +X496825Y187305D01* +X496755Y187352D01* +X496699Y187369D01* +X496647Y187396D01* +X496579Y187407D01* +X496484Y187437D01* +X496384Y187440D01* +X496316Y187451D01* +X494284Y187451D01* +X494226Y187443D01* +X494168Y187445D01* +X494086Y187423D01* +X494002Y187411D01* +X493949Y187388D01* +X493893Y187373D01* +X493820Y187330D01* +X493743Y187295D01* +X493698Y187257D01* +X493648Y187228D01* +X493590Y187166D01* +X493526Y187112D01* +X493494Y187063D01* +X493454Y187020D01* +X493415Y186945D01* +X493368Y186875D01* +X493351Y186819D01* +X493324Y186767D01* +X493313Y186699D01* +X493283Y186604D01* +X493280Y186504D01* +X493269Y186436D01* +X493269Y184308D01* +X492418Y182254D01* +X490846Y180682D01* +X488792Y179831D01* +X486568Y179831D01* +G37* +%LPD*% +%LPC*% +G36* +X689723Y47525D02* +X689723Y47525D01* +X687586Y48411D01* +X685951Y50046D01* +X685065Y52183D01* +X685065Y52407D01* +X685049Y52520D01* +X685039Y52635D01* +X685029Y52661D01* +X685025Y52688D01* +X684978Y52793D01* +X684937Y52900D01* +X684921Y52922D01* +X684909Y52948D01* +X684835Y53035D01* +X684766Y53127D01* +X684743Y53143D01* +X684726Y53165D01* +X684630Y53228D01* +X684538Y53297D01* +X684512Y53307D01* +X684489Y53322D01* +X684379Y53357D01* +X684272Y53397D01* +X684244Y53400D01* +X684218Y53408D01* +X684103Y53411D01* +X683989Y53420D01* +X683964Y53414D01* +X683934Y53415D01* +X683677Y53348D01* +X683661Y53345D01* +X681877Y52605D01* +X679563Y52605D01* +X677426Y53491D01* +X675791Y55126D01* +X674905Y57263D01* +X674905Y59577D01* +X675791Y61714D01* +X677426Y63349D01* +X679563Y64235D01* +X681877Y64235D01* +X683661Y63495D01* +X683773Y63467D01* +X683882Y63432D01* +X683910Y63431D01* +X683937Y63424D01* +X684051Y63428D01* +X684166Y63425D01* +X684193Y63432D01* +X684221Y63433D01* +X684330Y63468D01* +X684441Y63497D01* +X684465Y63511D01* +X684492Y63519D01* +X684587Y63583D01* +X684686Y63642D01* +X684705Y63662D01* +X684728Y63678D01* +X684802Y63765D01* +X684880Y63849D01* +X684893Y63874D01* +X684911Y63895D01* +X684957Y64000D01* +X685010Y64102D01* +X685014Y64127D01* +X685026Y64155D01* +X685063Y64419D01* +X685065Y64433D01* +X685065Y64657D01* +X685951Y66794D01* +X687586Y68429D01* +X689723Y69315D01* +X692037Y69315D01* +X694174Y68429D01* +X695809Y66794D01* +X696695Y64657D01* +X696695Y64433D01* +X696711Y64320D01* +X696721Y64205D01* +X696731Y64179D01* +X696735Y64152D01* +X696782Y64047D01* +X696823Y63940D01* +X696839Y63918D01* +X696851Y63892D01* +X696925Y63805D01* +X696994Y63713D01* +X697017Y63697D01* +X697034Y63675D01* +X697130Y63612D01* +X697222Y63543D01* +X697248Y63533D01* +X697271Y63518D01* +X697381Y63483D01* +X697488Y63443D01* +X697516Y63440D01* +X697542Y63432D01* +X697657Y63429D01* +X697771Y63420D01* +X697796Y63426D01* +X697826Y63425D01* +X698083Y63492D01* +X698099Y63495D01* +X699883Y64235D01* +X702197Y64235D01* +X704334Y63349D01* +X705969Y61714D01* +X706855Y59577D01* +X706855Y57263D01* +X705969Y55126D01* +X704334Y53491D01* +X702197Y52605D01* +X699883Y52605D01* +X698099Y53345D01* +X697987Y53373D01* +X697878Y53408D01* +X697850Y53409D01* +X697823Y53416D01* +X697709Y53412D01* +X697594Y53415D01* +X697567Y53408D01* +X697539Y53407D01* +X697430Y53372D01* +X697319Y53343D01* +X697295Y53329D01* +X697268Y53321D01* +X697173Y53257D01* +X697074Y53198D01* +X697055Y53178D01* +X697032Y53162D01* +X696958Y53075D01* +X696880Y52991D01* +X696867Y52966D01* +X696849Y52945D01* +X696803Y52840D01* +X696750Y52738D01* +X696746Y52713D01* +X696734Y52685D01* +X696697Y52421D01* +X696695Y52407D01* +X696695Y52183D01* +X695809Y50046D01* +X694174Y48411D01* +X692037Y47525D01* +X689723Y47525D01* +G37* +%LPD*% +%LPC*% +G36* +X747127Y9397D02* +X747127Y9397D01* +X743113Y11060D01* +X740040Y14133D01* +X738377Y18147D01* +X738377Y22493D01* +X740040Y26507D01* +X743113Y29580D01* +X747127Y31243D01* +X751473Y31243D01* +X755487Y29580D01* +X758560Y26507D01* +X760223Y22493D01* +X760223Y18147D01* +X758560Y14133D01* +X755487Y11060D01* +X751473Y9397D01* +X747127Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X721727Y9397D02* +X721727Y9397D01* +X717713Y11060D01* +X714640Y14133D01* +X712977Y18147D01* +X712977Y22493D01* +X714640Y26507D01* +X717713Y29580D01* +X721727Y31243D01* +X726073Y31243D01* +X730087Y29580D01* +X733160Y26507D01* +X734823Y22493D01* +X734823Y18147D01* +X733160Y14133D01* +X730087Y11060D01* +X726073Y9397D01* +X721727Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y163075D02* +X315317Y163075D01* +X311302Y164738D01* +X308230Y167811D01* +X306567Y171825D01* +X306567Y176171D01* +X308230Y180185D01* +X311302Y183258D01* +X315317Y184921D01* +X319662Y184921D01* +X323677Y183258D01* +X326749Y180185D01* +X328412Y176171D01* +X328412Y171825D01* +X326749Y167811D01* +X323677Y164738D01* +X319662Y163075D01* +X315317Y163075D01* +G37* +%LPD*% +%LPC*% +G36* +X670927Y9397D02* +X670927Y9397D01* +X666913Y11060D01* +X663840Y14133D01* +X662177Y18147D01* +X662177Y22493D01* +X663840Y26507D01* +X666913Y29580D01* +X670927Y31243D01* +X675273Y31243D01* +X679287Y29580D01* +X682360Y26507D01* +X684023Y22493D01* +X684023Y18147D01* +X682360Y14133D01* +X679287Y11060D01* +X675273Y9397D01* +X670927Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X620127Y9397D02* +X620127Y9397D01* +X616113Y11060D01* +X613040Y14133D01* +X611377Y18147D01* +X611377Y22493D01* +X613040Y26507D01* +X616113Y29580D01* +X620127Y31243D01* +X624473Y31243D01* +X628487Y29580D01* +X631560Y26507D01* +X633223Y22493D01* +X633223Y18147D01* +X631560Y14133D01* +X628487Y11060D01* +X624473Y9397D01* +X620127Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X177431Y245363D02* +X177431Y245363D01* +X173416Y247025D01* +X170344Y250098D01* +X168681Y254113D01* +X168681Y258458D01* +X170344Y262473D01* +X173416Y265545D01* +X177431Y267208D01* +X181776Y267208D01* +X185791Y265545D01* +X188864Y262473D01* +X190526Y258458D01* +X190526Y254113D01* +X188864Y250098D01* +X185791Y247025D01* +X181776Y245363D01* +X177431Y245363D01* +G37* +%LPD*% +%LPC*% +G36* +X645527Y9397D02* +X645527Y9397D01* +X641513Y11060D01* +X638440Y14133D01* +X636777Y18147D01* +X636777Y22493D01* +X638440Y26507D01* +X641513Y29580D01* +X645527Y31243D01* +X649873Y31243D01* +X653887Y29580D01* +X656960Y26507D01* +X658623Y22493D01* +X658623Y18147D01* +X656960Y14133D01* +X653887Y11060D01* +X649873Y9397D01* +X645527Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X696327Y9397D02* +X696327Y9397D01* +X692313Y11060D01* +X689240Y14133D01* +X687577Y18147D01* +X687577Y22493D01* +X689240Y26507D01* +X692313Y29580D01* +X696327Y31243D01* +X700673Y31243D01* +X704687Y29580D01* +X707760Y26507D01* +X709423Y22493D01* +X709423Y18147D01* +X707760Y14133D01* +X704687Y11060D01* +X700673Y9397D01* +X696327Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X569327Y9397D02* +X569327Y9397D01* +X565313Y11060D01* +X562240Y14133D01* +X560577Y18147D01* +X560577Y22493D01* +X562240Y26507D01* +X565313Y29580D01* +X569327Y31243D01* +X573673Y31243D01* +X577687Y29580D01* +X580760Y26507D01* +X582423Y22493D01* +X582423Y18147D01* +X580760Y14133D01* +X577687Y11060D01* +X573673Y9397D01* +X569327Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X192636Y219981D02* +X192636Y219981D01* +X188621Y221644D01* +X185549Y224717D01* +X183886Y228731D01* +X183886Y233076D01* +X185549Y237091D01* +X188621Y240164D01* +X192636Y241827D01* +X196981Y241827D01* +X200996Y240164D01* +X204069Y237091D01* +X205731Y233076D01* +X205731Y228731D01* +X204069Y224717D01* +X200996Y221644D01* +X196981Y219981D01* +X192636Y219981D01* +G37* +%LPD*% +%LPC*% +G36* +X192631Y118863D02* +X192631Y118863D01* +X188616Y120525D01* +X185544Y123598D01* +X183881Y127613D01* +X183881Y131958D01* +X185544Y135973D01* +X188616Y139045D01* +X192631Y140708D01* +X196976Y140708D01* +X200991Y139045D01* +X204064Y135973D01* +X205726Y131958D01* +X205726Y127613D01* +X204064Y123598D01* +X200991Y120525D01* +X196976Y118863D01* +X192631Y118863D01* +G37* +%LPD*% +%LPC*% +G36* +X594727Y9397D02* +X594727Y9397D01* +X590713Y11060D01* +X587640Y14133D01* +X585977Y18147D01* +X585977Y22493D01* +X587640Y26507D01* +X590713Y29580D01* +X594727Y31243D01* +X599073Y31243D01* +X603087Y29580D01* +X606160Y26507D01* +X607823Y22493D01* +X607823Y18147D01* +X606160Y14133D01* +X603087Y11060D01* +X599073Y9397D01* +X594727Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X772527Y9397D02* +X772527Y9397D01* +X768513Y11060D01* +X765440Y14133D01* +X763777Y18147D01* +X763777Y22493D01* +X765440Y26507D01* +X768513Y29580D01* +X772527Y31243D01* +X776873Y31243D01* +X780887Y29580D01* +X783960Y26507D01* +X785623Y22493D01* +X785623Y18147D01* +X783960Y14133D01* +X780887Y11060D01* +X776873Y9397D01* +X772527Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X289917Y175775D02* +X289917Y175775D01* +X285902Y177438D01* +X282830Y180511D01* +X281167Y184525D01* +X281167Y188871D01* +X282830Y192885D01* +X285902Y195958D01* +X289917Y197621D01* +X294262Y197621D01* +X298277Y195958D01* +X301349Y192885D01* +X303012Y188871D01* +X303012Y184525D01* +X301349Y180511D01* +X298277Y177438D01* +X294262Y175775D01* +X289917Y175775D01* +G37* +%LPD*% +%LPC*% +G36* +X177436Y144281D02* +X177436Y144281D01* +X173421Y145944D01* +X170349Y149017D01* +X168686Y153031D01* +X168686Y157376D01* +X170349Y161391D01* +X173421Y164464D01* +X177436Y166127D01* +X181781Y166127D01* +X185796Y164464D01* +X188869Y161391D01* +X190531Y157376D01* +X190531Y153031D01* +X188869Y149017D01* +X185796Y145944D01* +X181781Y144281D01* +X177436Y144281D01* +G37* +%LPD*% +%LPC*% +G36* +X131855Y351007D02* +X131855Y351007D01* +X129241Y352090D01* +X127240Y354091D01* +X126157Y356705D01* +X126157Y359535D01* +X127240Y362149D01* +X129241Y364150D01* +X131855Y365233D01* +X144845Y365233D01* +X147459Y364150D01* +X149460Y362149D01* +X150543Y359535D01* +X150543Y356705D01* +X149460Y354091D01* +X147459Y352090D01* +X144845Y351007D01* +X131855Y351007D01* +G37* +%LPD*% +%LPC*% +G36* +X131855Y285007D02* +X131855Y285007D01* +X129241Y286090D01* +X127240Y288091D01* +X126157Y290705D01* +X126157Y293535D01* +X127240Y296149D01* +X129241Y298150D01* +X131855Y299233D01* +X144845Y299233D01* +X147459Y298150D01* +X149460Y296149D01* +X150543Y293535D01* +X150543Y290705D01* +X149460Y288091D01* +X147459Y286090D01* +X144845Y285007D01* +X131855Y285007D01* +G37* +%LPD*% +%LPC*% +G36* +X532243Y273585D02* +X532243Y273585D01* +X530106Y274471D01* +X528471Y276106D01* +X527585Y278243D01* +X527585Y280557D01* +X528471Y282694D01* +X530106Y284329D01* +X532243Y285215D01* +X534557Y285215D01* +X536694Y284329D01* +X538277Y282746D01* +X538347Y282694D01* +X538411Y282634D01* +X538460Y282608D01* +X538504Y282575D01* +X538586Y282544D01* +X538664Y282504D01* +X538712Y282496D01* +X538770Y282474D01* +X538918Y282462D01* +X538995Y282449D01* +X550665Y282449D01* +X550752Y282461D01* +X550839Y282464D01* +X550892Y282481D01* +X550946Y282489D01* +X551026Y282524D01* +X551109Y282551D01* +X551149Y282579D01* +X551206Y282605D01* +X551319Y282701D01* +X551383Y282746D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278243D01* +X561189Y276106D01* +X559554Y274471D01* +X557417Y273585D01* +X555103Y273585D01* +X552966Y274471D01* +X551383Y276054D01* +X551313Y276106D01* +X551249Y276166D01* +X551200Y276192D01* +X551156Y276225D01* +X551074Y276256D01* +X550996Y276296D01* +X550948Y276304D01* +X550890Y276326D01* +X550742Y276338D01* +X550665Y276351D01* +X538995Y276351D01* +X538908Y276339D01* +X538821Y276336D01* +X538768Y276319D01* +X538714Y276311D01* +X538634Y276276D01* +X538551Y276249D01* +X538511Y276221D01* +X538454Y276195D01* +X538341Y276099D01* +X538277Y276054D01* +X536694Y274471D01* +X534557Y273585D01* +X532243Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X346823Y166905D02* +X346823Y166905D01* +X344686Y167791D01* +X343051Y169426D01* +X342165Y171563D01* +X342165Y173877D01* +X343051Y176014D01* +X344686Y177649D01* +X346823Y178535D01* +X349137Y178535D01* +X351274Y177649D01* +X352909Y176014D01* +X353795Y173877D01* +X353795Y171563D01* +X352909Y169426D01* +X351274Y167791D01* +X349137Y166905D01* +X346823Y166905D01* +G37* +%LPD*% +%LPC*% +G36* +X468743Y161825D02* +X468743Y161825D01* +X466606Y162711D01* +X464971Y164346D01* +X464085Y166483D01* +X464085Y168797D01* +X464971Y170934D01* +X466606Y172569D01* +X468743Y173455D01* +X471057Y173455D01* +X473194Y172569D01* +X474829Y170934D01* +X475715Y168797D01* +X475715Y166483D01* +X474829Y164346D01* +X473194Y162711D01* +X471057Y161825D01* +X468743Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X555103Y174525D02* +X555103Y174525D01* +X552966Y175411D01* +X551331Y177046D01* +X550445Y179183D01* +X550445Y181497D01* +X551331Y183634D01* +X552966Y185269D01* +X555103Y186155D01* +X557417Y186155D01* +X559554Y185269D01* +X561189Y183634D01* +X562075Y181497D01* +X562075Y179183D01* +X561189Y177046D01* +X559554Y175411D01* +X557417Y174525D01* +X555103Y174525D01* +G37* +%LPD*% +%LPC*% +G36* +X1268843Y151665D02* +X1268843Y151665D01* +X1266706Y152551D01* +X1265071Y154186D01* +X1264185Y156323D01* +X1264185Y158637D01* +X1265071Y160774D01* +X1266706Y162409D01* +X1268843Y163295D01* +X1271157Y163295D01* +X1273294Y162409D01* +X1274929Y160774D01* +X1275815Y158637D01* +X1275815Y156323D01* +X1274929Y154186D01* +X1273294Y152551D01* +X1271157Y151665D01* +X1268843Y151665D01* +G37* +%LPD*% +%LPC*% +G36* +X885303Y144045D02* +X885303Y144045D01* +X883166Y144931D01* +X881531Y146566D01* +X880645Y148703D01* +X880645Y151017D01* +X881531Y153154D01* +X883166Y154789D01* +X885303Y155675D01* +X887617Y155675D01* +X889754Y154789D01* +X891389Y153154D01* +X892275Y151017D01* +X892275Y148703D01* +X891389Y146566D01* +X889754Y144931D01* +X887617Y144045D01* +X885303Y144045D01* +G37* +%LPD*% +%LPC*% +G36* +X1126603Y192305D02* +X1126603Y192305D01* +X1124466Y193191D01* +X1122831Y194826D01* +X1121945Y196963D01* +X1121945Y199277D01* +X1122831Y201414D01* +X1124466Y203049D01* +X1126603Y203935D01* +X1128917Y203935D01* +X1131054Y203049D01* +X1132689Y201414D01* +X1133575Y199277D01* +X1133575Y196963D01* +X1132689Y194826D01* +X1131054Y193191D01* +X1128917Y192305D01* +X1126603Y192305D01* +G37* +%LPD*% +%LPC*% +G36* +X461123Y141505D02* +X461123Y141505D01* +X458986Y142391D01* +X457351Y144026D01* +X456465Y146163D01* +X456465Y148477D01* +X457351Y150614D01* +X458986Y152249D01* +X461123Y153135D01* +X463437Y153135D01* +X465574Y152249D01* +X467209Y150614D01* +X468095Y148477D01* +X468095Y146163D01* +X467209Y144026D01* +X465574Y142391D01* +X463437Y141505D01* +X461123Y141505D01* +G37* +%LPD*% +%LPC*% +G36* +X656703Y136425D02* +X656703Y136425D01* +X654566Y137311D01* +X652931Y138946D01* +X652045Y141083D01* +X652045Y143397D01* +X652931Y145534D01* +X654566Y147169D01* +X656703Y148055D01* +X659017Y148055D01* +X661154Y147169D01* +X662789Y145534D01* +X663675Y143397D01* +X663675Y141083D01* +X662789Y138946D01* +X661154Y137311D01* +X659017Y136425D01* +X656703Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X463663Y222785D02* +X463663Y222785D01* +X461526Y223671D01* +X459891Y225306D01* +X459005Y227443D01* +X459005Y229757D01* +X459891Y231894D01* +X461526Y233529D01* +X463663Y234415D01* +X465977Y234415D01* +X468114Y233529D01* +X469749Y231894D01* +X470635Y229757D01* +X470635Y227443D01* +X469749Y225306D01* +X468114Y223671D01* +X465977Y222785D01* +X463663Y222785D01* +G37* +%LPD*% +%LPC*% +G36* +X499223Y128805D02* +X499223Y128805D01* +X497086Y129691D01* +X495451Y131326D01* +X494565Y133463D01* +X494565Y135777D01* +X495451Y137914D01* +X497086Y139549D01* +X499223Y140435D01* +X501537Y140435D01* +X503674Y139549D01* +X505309Y137914D01* +X506195Y135777D01* +X506195Y133463D01* +X505309Y131326D01* +X503674Y129691D01* +X501537Y128805D01* +X499223Y128805D01* +G37* +%LPD*% +%LPC*% +G36* +X341743Y235485D02* +X341743Y235485D01* +X339606Y236371D01* +X337971Y238006D01* +X337085Y240143D01* +X337085Y242457D01* +X337971Y244594D01* +X339606Y246229D01* +X341743Y247115D01* +X344057Y247115D01* +X346194Y246229D01* +X347829Y244594D01* +X348715Y242457D01* +X348715Y240143D01* +X347829Y238006D01* +X346194Y236371D01* +X344057Y235485D01* +X341743Y235485D01* +G37* +%LPD*% +%LPC*% +G36* +X1080883Y100865D02* +X1080883Y100865D01* +X1078746Y101751D01* +X1077111Y103386D01* +X1076225Y105523D01* +X1076225Y107837D01* +X1077111Y109974D01* +X1078746Y111609D01* +X1080883Y112495D01* +X1083197Y112495D01* +X1085334Y111609D01* +X1086969Y109974D01* +X1087855Y107837D01* +X1087855Y105523D01* +X1086969Y103386D01* +X1085334Y101751D01* +X1083197Y100865D01* +X1080883Y100865D01* +G37* +%LPD*% +%LPC*% +G36* +X1169783Y100865D02* +X1169783Y100865D01* +X1167646Y101751D01* +X1166011Y103386D01* +X1165125Y105523D01* +X1165125Y107837D01* +X1166011Y109974D01* +X1167646Y111609D01* +X1169783Y112495D01* +X1172097Y112495D01* +X1174234Y111609D01* +X1175869Y109974D01* +X1176755Y107837D01* +X1176755Y105523D01* +X1175869Y103386D01* +X1174234Y101751D01* +X1172097Y100865D01* +X1169783Y100865D01* +G37* +%LPD*% +%LPC*% +G36* +X423023Y253265D02* +X423023Y253265D01* +X420886Y254151D01* +X419251Y255786D01* +X418365Y257923D01* +X418365Y260237D01* +X419251Y262374D01* +X420886Y264009D01* +X423023Y264895D01* +X425337Y264895D01* +X427474Y264009D01* +X429109Y262374D01* +X429995Y260237D01* +X429995Y257923D01* +X429109Y255786D01* +X427474Y254151D01* +X425337Y253265D01* +X423023Y253265D01* +G37* +%LPD*% +%LPC*% +G36* +X496683Y263425D02* +X496683Y263425D01* +X494546Y264311D01* +X492911Y265946D01* +X492025Y268083D01* +X492025Y270397D01* +X492911Y272534D01* +X494546Y274169D01* +X496683Y275055D01* +X498997Y275055D01* +X501134Y274169D01* +X502769Y272534D01* +X503655Y270397D01* +X503655Y268083D01* +X502769Y265946D01* +X501134Y264311D01* +X498997Y263425D01* +X496683Y263425D01* +G37* +%LPD*% +%LPC*% +G36* +X351903Y95785D02* +X351903Y95785D01* +X349766Y96671D01* +X348131Y98306D01* +X347245Y100443D01* +X347245Y102757D01* +X348131Y104894D01* +X349766Y106529D01* +X351903Y107415D01* +X354217Y107415D01* +X356354Y106529D01* +X357989Y104894D01* +X358875Y102757D01* +X358875Y100443D01* +X357989Y98306D01* +X356354Y96671D01* +X354217Y95785D01* +X351903Y95785D01* +G37* +%LPD*% +%LPC*% +G36* +X138543Y80545D02* +X138543Y80545D01* +X136406Y81431D01* +X134771Y83066D01* +X133885Y85203D01* +X133885Y87517D01* +X134771Y89654D01* +X136406Y91289D01* +X138543Y92175D01* +X140857Y92175D01* +X142994Y91289D01* +X144629Y89654D01* +X145515Y87517D01* +X145515Y85203D01* +X144629Y83066D01* +X142994Y81431D01* +X140857Y80545D01* +X138543Y80545D01* +G37* +%LPD*% +%LPC*% +G36* +X1050403Y70385D02* +X1050403Y70385D01* +X1048266Y71271D01* +X1046631Y72906D01* +X1045745Y75043D01* +X1045745Y77357D01* +X1046631Y79494D01* +X1048266Y81129D01* +X1050403Y82015D01* +X1052717Y82015D01* +X1054854Y81129D01* +X1056489Y79494D01* +X1057375Y77357D01* +X1057375Y75043D01* +X1056489Y72906D01* +X1054854Y71271D01* +X1052717Y70385D01* +X1050403Y70385D01* +G37* +%LPD*% +%LPC*% +G36* +X951343Y276125D02* +X951343Y276125D01* +X949206Y277011D01* +X947571Y278646D01* +X946685Y280783D01* +X946685Y283097D01* +X947571Y285234D01* +X949206Y286869D01* +X951343Y287755D01* +X953657Y287755D01* +X955794Y286869D01* +X957429Y285234D01* +X958315Y283097D01* +X958315Y280783D01* +X957429Y278646D01* +X955794Y277011D01* +X953657Y276125D01* +X951343Y276125D01* +G37* +%LPD*% +%LPC*% +G36* +X1124063Y276125D02* +X1124063Y276125D01* +X1121926Y277011D01* +X1120291Y278646D01* +X1119405Y280783D01* +X1119405Y283097D01* +X1120291Y285234D01* +X1121926Y286869D01* +X1124063Y287755D01* +X1126377Y287755D01* +X1128514Y286869D01* +X1130149Y285234D01* +X1131035Y283097D01* +X1131035Y280783D01* +X1130149Y278646D01* +X1128514Y277011D01* +X1126377Y276125D01* +X1124063Y276125D01* +G37* +%LPD*% +%LPC*% +G36* +X918323Y9425D02* +X918323Y9425D01* +X916186Y10311D01* +X914551Y11946D01* +X913665Y14083D01* +X913665Y16397D01* +X914551Y18534D01* +X916186Y20169D01* +X918323Y21055D01* +X920637Y21055D01* +X922774Y20169D01* +X924409Y18534D01* +X925295Y16397D01* +X925295Y14083D01* +X924409Y11946D01* +X922774Y10311D01* +X920637Y9425D01* +X918323Y9425D01* +G37* +%LPD*% +%LPC*% +G36* +X826883Y9425D02* +X826883Y9425D01* +X824746Y10311D01* +X823111Y11946D01* +X822225Y14083D01* +X822225Y16397D01* +X823111Y18534D01* +X824746Y20169D01* +X826883Y21055D01* +X829197Y21055D01* +X831334Y20169D01* +X832969Y18534D01* +X833855Y16397D01* +X833855Y14083D01* +X832969Y11946D01* +X831334Y10311D01* +X829197Y9425D01* +X826883Y9425D01* +G37* +%LPD*% +%LPC*% +G36* +X872603Y60225D02* +X872603Y60225D01* +X870466Y61111D01* +X868831Y62746D01* +X867945Y64883D01* +X867945Y67197D01* +X868831Y69334D01* +X870466Y70969D01* +X872603Y71855D01* +X874917Y71855D01* +X877054Y70969D01* +X878689Y69334D01* +X879575Y67197D01* +X879575Y64883D01* +X878689Y62746D01* +X877054Y61111D01* +X874917Y60225D01* +X872603Y60225D01* +G37* +%LPD*% +%LPC*% +G36* +X275703Y281205D02* +X275703Y281205D01* +X273566Y282091D01* +X271931Y283726D01* +X271045Y285863D01* +X271045Y288177D01* +X271931Y290314D01* +X273566Y291949D01* +X275703Y292835D01* +X278017Y292835D01* +X280154Y291949D01* +X281789Y290314D01* +X282675Y288177D01* +X282675Y285863D01* +X281789Y283726D01* +X280154Y282091D01* +X278017Y281205D01* +X275703Y281205D01* +G37* +%LPD*% +%LPC*% +G36* +X296023Y281205D02* +X296023Y281205D01* +X293886Y282091D01* +X292251Y283726D01* +X291365Y285863D01* +X291365Y288177D01* +X292251Y290314D01* +X293886Y291949D01* +X296023Y292835D01* +X298337Y292835D01* +X300474Y291949D01* +X302109Y290314D01* +X302995Y288177D01* +X302995Y285863D01* +X302109Y283726D01* +X300474Y282091D01* +X298337Y281205D01* +X296023Y281205D01* +G37* +%LPD*% +%LPC*% +G36* +X237603Y286477D02* +X237603Y286477D01* +X235466Y287363D01* +X233831Y288998D01* +X232945Y291135D01* +X232945Y293449D01* +X233831Y295586D01* +X235466Y297221D01* +X237603Y298107D01* +X239917Y298107D01* +X242054Y297221D01* +X243689Y295586D01* +X244575Y293449D01* +X244575Y291135D01* +X243689Y288998D01* +X242054Y287363D01* +X239917Y286477D01* +X237603Y286477D01* +G37* +%LPD*% +%LPC*% +G36* +X265543Y11965D02* +X265543Y11965D01* +X263406Y12851D01* +X261771Y14486D01* +X260885Y16623D01* +X260885Y18937D01* +X261771Y21074D01* +X263406Y22709D01* +X265543Y23595D01* +X267857Y23595D01* +X269994Y22709D01* +X271629Y21074D01* +X272515Y18937D01* +X272515Y16623D01* +X271629Y14486D01* +X269994Y12851D01* +X267857Y11965D01* +X265543Y11965D01* +G37* +%LPD*% +%LPC*% +G36* +X179183Y360001D02* +X179183Y360001D01* +X177046Y360887D01* +X175411Y362522D01* +X174525Y364659D01* +X174525Y366973D01* +X175411Y369110D01* +X177046Y370745D01* +X179183Y371631D01* +X181497Y371631D01* +X183634Y370745D01* +X185269Y369110D01* +X186155Y366973D01* +X186155Y364659D01* +X185269Y362522D01* +X183634Y360887D01* +X181497Y360001D01* +X179183Y360001D01* +G37* +%LPD*% +%LPC*% +G36* +X369683Y354865D02* +X369683Y354865D01* +X367546Y355751D01* +X365911Y357386D01* +X365025Y359523D01* +X365025Y361837D01* +X365911Y363974D01* +X367546Y365609D01* +X369683Y366495D01* +X371997Y366495D01* +X374134Y365609D01* +X375769Y363974D01* +X376655Y361837D01* +X376655Y359523D01* +X375769Y357386D01* +X374134Y355751D01* +X371997Y354865D01* +X369683Y354865D01* +G37* +%LPD*% +%LPC*% +G36* +X951343Y291365D02* +X951343Y291365D01* +X949206Y292251D01* +X947571Y293886D01* +X946685Y296023D01* +X946685Y298337D01* +X947571Y300474D01* +X949206Y302109D01* +X951343Y302995D01* +X953657Y302995D01* +X955794Y302109D01* +X957429Y300474D01* +X958315Y298337D01* +X958315Y296023D01* +X957429Y293886D01* +X955794Y292251D01* +X953657Y291365D01* +X951343Y291365D01* +G37* +%LPD*% +%LPC*% +G36* +X176643Y304065D02* +X176643Y304065D01* +X174506Y304951D01* +X172871Y306586D01* +X171985Y308723D01* +X171985Y311037D01* +X172871Y313174D01* +X174506Y314809D01* +X176643Y315695D01* +X178957Y315695D01* +X181094Y314809D01* +X182729Y313174D01* +X183615Y311037D01* +X183615Y308723D01* +X182729Y306586D01* +X181094Y304951D01* +X178957Y304065D01* +X176643Y304065D01* +G37* +%LPD*% +%LPC*% +G36* +X356983Y306605D02* +X356983Y306605D01* +X354846Y307491D01* +X353211Y309126D01* +X352325Y311263D01* +X352325Y313577D01* +X353211Y315714D01* +X354846Y317349D01* +X356983Y318235D01* +X359297Y318235D01* +X361434Y317349D01* +X363069Y315714D01* +X363955Y313577D01* +X363955Y311263D01* +X363069Y309126D01* +X361434Y307491D01* +X359297Y306605D01* +X356983Y306605D01* +G37* +%LPD*% +%LPC*% +G36* +X275703Y306605D02* +X275703Y306605D01* +X273566Y307491D01* +X271931Y309126D01* +X271045Y311263D01* +X271045Y313577D01* +X271931Y315714D01* +X273566Y317349D01* +X275703Y318235D01* +X278017Y318235D01* +X280154Y317349D01* +X281789Y315714D01* +X282675Y313577D01* +X282675Y311263D01* +X281789Y309126D01* +X280154Y307491D01* +X278017Y306605D01* +X275703Y306605D01* +G37* +%LPD*% +%LPC*% +G36* +X369683Y337085D02* +X369683Y337085D01* +X367546Y337971D01* +X365911Y339606D01* +X365025Y341743D01* +X365025Y344057D01* +X365911Y346194D01* +X367546Y347829D01* +X369683Y348715D01* +X371997Y348715D01* +X374134Y347829D01* +X375769Y346194D01* +X376655Y344057D01* +X376655Y341743D01* +X375769Y339606D01* +X374134Y337971D01* +X371997Y337085D01* +X369683Y337085D01* +G37* +%LPD*% +%LPC*% +G36* +X224903Y352325D02* +X224903Y352325D01* +X222766Y353211D01* +X221131Y354846D01* +X220245Y356983D01* +X220245Y359297D01* +X221131Y361434D01* +X222766Y363069D01* +X224903Y363955D01* +X227217Y363955D01* +X229354Y363069D01* +X230989Y361434D01* +X231875Y359297D01* +X231875Y356983D01* +X230989Y354846D01* +X229354Y353211D01* +X227217Y352325D01* +X224903Y352325D01* +G37* +%LPD*% +%LPC*% +G36* +X992028Y289051D02* +X992028Y289051D01* +X989974Y289902D01* +X988402Y291474D01* +X987551Y293528D01* +X987551Y295752D01* +X988402Y297806D01* +X989974Y299378D01* +X992028Y300229D01* +X994252Y300229D01* +X996306Y299378D01* +X997878Y297806D01* +X998729Y295752D01* +X998729Y293528D01* +X997878Y291474D01* +X996306Y289902D01* +X994252Y289051D01* +X992028Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y22351D02* +X802131Y22351D01* +X802131Y31751D01* +X809324Y31751D01* +X809971Y31578D01* +X810550Y31243D01* +X811023Y30770D01* +X811358Y30191D01* +X811531Y29544D01* +X811531Y22351D01* +X802131Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X788669Y22351D02* +X788669Y22351D01* +X788669Y29544D01* +X788842Y30191D01* +X789177Y30770D01* +X789650Y31243D01* +X790229Y31578D01* +X790876Y31751D01* +X798069Y31751D01* +X798069Y22351D01* +X788669Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X751331Y67309D02* +X751331Y67309D01* +X751331Y76709D01* +X760731Y76709D01* +X760731Y69516D01* +X760558Y68869D01* +X760223Y68290D01* +X759750Y67817D01* +X759171Y67482D01* +X758524Y67309D01* +X751331Y67309D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y8889D02* +X802131Y8889D01* +X802131Y18289D01* +X811531Y18289D01* +X811531Y11096D01* +X811358Y10449D01* +X811023Y9870D01* +X810550Y9397D01* +X809971Y9062D01* +X809324Y8889D01* +X802131Y8889D01* +G37* +%LPD*% +%LPC*% +G36* +X740076Y67309D02* +X740076Y67309D01* +X739429Y67482D01* +X738850Y67817D01* +X738377Y68290D01* +X738042Y68869D01* +X737869Y69516D01* +X737869Y76709D01* +X747269Y76709D01* +X747269Y67309D01* +X740076Y67309D01* +G37* +%LPD*% +%LPC*% +G36* +X790876Y8889D02* +X790876Y8889D01* +X790229Y9062D01* +X789650Y9397D01* +X789177Y9870D01* +X788842Y10449D01* +X788669Y11096D01* +X788669Y18289D01* +X798069Y18289D01* +X798069Y8889D01* +X790876Y8889D01* +G37* +%LPD*% +%LPC*% +G36* +X800099Y20319D02* +X800099Y20319D01* +X800099Y20321D01* +X800101Y20321D01* +X800101Y20319D01* +X800099Y20319D01* +G37* +%LPD*% +D10* +X133270Y358120D02* +X143430Y358120D01* +X143430Y292120D02* +X133270Y292120D01* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D12* +X292090Y237498D03* +D13* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D14* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D15* +X800100Y20320D03* +D11* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D15* +X749300Y78740D03* +D11* +X723900Y78740D03* +D16* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +X180340Y365816D03* +X563880Y76200D03* +X464820Y228600D03* +X424180Y259080D03* +X462280Y147320D03* +X469900Y167640D03* +X500380Y134620D03* +X556260Y180340D03* +X1206500Y304800D03* +X1051560Y76200D03* +X873760Y66040D03* +X830580Y83820D03* +X886460Y149860D03* +X939800Y246380D03* +X960120Y121920D03* +X1082040Y106680D03* +X1127760Y198120D03* +X657860Y142240D03* +X861060Y274320D03* +X952500Y297180D03* +X952500Y281940D03* +X960120Y246380D03* +X1071880Y302260D03* +X177800Y309880D03* +X347980Y172720D03* +X497840Y269240D03* +D17* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +X993140Y294640D03* +X866024Y248804D03* +D16* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X370840Y342900D03* +X370840Y360680D03* +X226060Y358140D03* +X238760Y292292D03* +X276860Y312420D03* +X556260Y83820D03* +X713740Y274320D03* +X802640Y274320D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X640080Y251460D03* +X1183640Y205740D03* +X1125220Y281940D03* +X1270000Y157480D03* +X1170940Y106680D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1193800Y167640D03* +X1074420Y208280D03* +X1193800Y279400D03* +D18* +X1148080Y233680D01* +D16* +X518160Y239494D03* +D18* +X573532Y233680D02* +X1148080Y233680D01* +X573532Y233680D02* +X562638Y244574D01* +X523240Y244574D01* +X518160Y239494D01* +D16* +X1206500Y203200D03* +X563880Y211610D03* +D18* +X564162Y211610D02* +X569976Y217424D01* +X564162Y211610D02* +X563880Y211610D01* +X1187196Y217424D02* +X1201420Y203200D01* +X1206500Y203200D01* +X1187196Y217424D02* +X569976Y217424D01* +D16* +X502800Y162909D03* +X1023620Y175260D03* +D18* +X1002792Y196088D01* +X608584Y196088D01* +X575405Y162909D02* +X502800Y162909D01* +X575405Y162909D02* +X608584Y196088D01* +D16* +X1206500Y241300D03* +D18* +X1190752Y225552D01* +D16* +X499816Y231140D03* +D18* +X569468Y225552D02* +X1190752Y225552D01* +X569468Y225552D02* +X558800Y236220D01* +X532892Y236220D01* +X520192Y223520D01* +X507436Y223520D01* +X499816Y231140D01* +D16* +X1206500Y218440D03* +X490188Y231172D03* +D18* +X502412Y218440D02* +X522224Y218440D01* +X502412Y218440D02* +X490188Y230664D01* +X490188Y231172D01* +X522224Y218440D02* +X534162Y230378D01* +X558546Y230378D01* +X567436Y221488D01* +X1188879Y221488D02* +X1191927Y218440D01* +X1188879Y221488D02* +X567436Y221488D01* +X1191927Y218440D02* +X1206500Y218440D01* +D16* +X1206500Y279400D03* +D18* +X1156716Y229616D01* +D16* +X482600Y238760D03* +D18* +X501904Y238760D02* +X513080Y227584D01* +X501904Y238760D02* +X482600Y238760D01* +X571500Y229616D02* +X1156716Y229616D01* +X571500Y229616D02* +X560832Y240284D01* +X530860Y240284D01* +X518160Y227584D01* +X513080Y227584D01* +D16* +X1074420Y190500D03* +X566332Y202014D03* +D18* +X576580Y213360D02* +X1038860Y213360D01* +X1061720Y190500D02* +X1074420Y190500D01* +X1061720Y190500D02* +X1038860Y213360D01* +X576580Y213360D02* +X566332Y203112D01* +X566332Y202014D01* +D16* +X1074420Y177800D03* +D18* +X1068324Y177800D01* +X1036828Y209296D01* +X587756Y209296D01* +X581660Y203200D01* +D16* +X581660Y203200D03* +X1082040Y167640D03* +D18* +X1072388Y167640D01* +X1034796Y205232D01* +D16* +X553720Y203200D03* +D18* +X596392Y205232D02* +X1034796Y205232D01* +X596392Y205232D02* +X586232Y195072D01* +X561848Y195072D01* +X553720Y203200D01* +D16* +X1165860Y276860D03* +X429260Y350596D03* +D18* +X1153160Y276860D02* +X1165860Y276860D01* +X1153160Y276860D02* +X1142210Y265910D01* +X602846Y265910D01* +X518160Y350596D01* +X429260Y350596D01* +D16* +X1155700Y266700D03* +D18* +X1150620Y261620D01* +X599440Y261620D01* +X518160Y342900D01* +X421640Y342900D01* +D16* +X421640Y342900D03* +X1222148Y121920D03* +D18* +X1222148Y151992D01* +X1198880Y175260D01* +X1132840Y175260D01* +D16* +X905760Y163580D03* +D18* +X923540Y163580D01* +X933930Y153190D02* +X1110770Y153190D01* +X933930Y153190D02* +X923540Y163580D01* +X1110770Y153190D02* +X1132840Y175260D01* +D16* +X198244Y333022D03* +D19* +X190624Y333022D01* +X182722Y325120D01* +X177800Y325120D01* +X176511Y323831D01* +D16* +X176511Y323831D03* +X982980Y172720D03* +D18* +X972820Y182880D01* +D16* +X759460Y160020D03* +D18* +X782320Y182880D01* +X972820Y182880D01* +D16* +X919480Y144780D03* +X1143000Y154940D03* +D18* +X1127760Y139700D02* +X924560Y139700D01* +X919480Y144780D01* +X1127760Y139700D02* +X1143000Y154940D01* +D16* +X972820Y165100D03* +D18* +X962660Y175260D01* +X924560Y175260D01* +D16* +X924560Y175260D03* +X995680Y182880D03* +X711200Y170180D03* +D18* +X759460Y170180D01* +X777240Y187960D01* +X990600Y187960D02* +X995680Y182880D01* +X990600Y187960D02* +X777240Y187960D01* +D16* +X909320Y175260D03* +X704129Y158029D03* +D18* +X787400Y175260D02* +X909320Y175260D01* +X787400Y175260D02* +X764540Y152400D01* +X709758Y152400D01* +X704129Y158029D01* +D16* +X1122680Y147320D03* +X889000Y165100D03* +D18* +X897410Y156690D01* +X922309Y156690D01* +X931679Y147320D01* +X1122680Y147320D01* +D16* +X1160780Y167640D03* +X906780Y142240D03* +D18* +X1160780Y163061D02* +X1160780Y167640D01* +X1160780Y163061D02* +X1133129Y135410D01* +X907281Y142240D02* +X906780Y142240D01* +X907281Y142240D02* +X914111Y135410D01* +X1133129Y135410D01* +D16* +X1092560Y249710D03* +D18* +X1082400Y239550D02* +X575790Y239550D01* +X1082400Y239550D02* +X1092560Y249710D01* +D16* +X548640Y259080D03* +D18* +X556260Y259080D01* +X575790Y239550D01* +D17* +X443114Y186806D03* +D20* +X393468Y137160D01* +X328928Y137160D01* +X317490Y148598D01* +D17* +X449580Y180340D03* +D20* +X449072Y179832D01* +X442722Y179832D01* +X395732Y132842D01* +X292090Y156464D02* +X292090Y161298D01* +X292090Y156464D02* +X315711Y132842D01* +X395732Y132842D01* +D17* +X449580Y205740D03* +D20* +X449072Y206248D01* +X442722Y206248D01* +X431292Y217678D01* +X324610Y217678D02* +X317490Y224798D01* +X324610Y217678D02* +X431292Y217678D01* +D17* +X443114Y199274D03* +D20* +X429028Y213360D01* +X322580Y213360D01* +X292090Y233135D02* +X292090Y237498D01* +X292090Y233135D02* +X312492Y212733D01* +X321953Y212733D01* +X322580Y213360D01* +D16* +X1206500Y180340D03* +X1023620Y165100D03* +D18* +X1028926Y159794D02* +X1111476Y159794D01* +X1132022Y180340D02* +X1206500Y180340D01* +X1132022Y180340D02* +X1111476Y159794D01* +X1028926Y159794D02* +X1023620Y165100D01* +D16* +X406400Y317500D03* +X855980Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +D17* +X1221740Y99060D03* +X1246124Y165100D03* +X876300Y251460D03* +D18* +X881380Y256540D01* +X1160113Y256540D01* +X1178560Y274987D01* +X1178560Y289560D01* +D17* +X1178560Y289560D03* +X1005840Y294640D03* +D18* +X1173480Y294640D02* +X1178560Y289560D01* +X1173480Y294640D02* +X1005840Y294640D01* +X541020Y206611D02* +X541020Y170180D01* +X541020Y206611D02* +X548205Y213795D01* +X548205Y221415D01* +X543560Y134620D02* +X513080Y134620D01* +X492760Y154940D01* +X492760Y165100D01* +X497840Y170180D01* +X541020Y170180D01* +X563854Y154914D02* +X668020Y154914D01* +X563854Y154914D02* +X543560Y134620D01* +X467360Y256540D02* +X406400Y317500D01* +X467360Y256540D02* +X469900Y256540D01* +X469900Y238760D01* +X495300Y213360D01* +X532529Y213360D01* +X540585Y221415D01* +X548205Y221415D01* +X1221740Y99060D02* +X1239520Y116840D01* +X1246124Y123444D01* +X1246124Y165100D01* +X1229360Y181864D01* +X1229360Y279400D01* +X1219489Y289271D01* +X1178849Y289271D02* +X1178560Y289560D01* +X1178849Y289271D02* +X1219489Y289271D01* +X1221740Y99060D02* +X1107440Y99060D01* +X1075154Y131346D01* +X869414Y131346D02* +X848360Y152400D01* +X869414Y131346D02* +X1075154Y131346D01* +D17* +X754380Y127000D03* +D18* +X695934Y127000D01* +X668020Y154914D01* +X754380Y127000D02* +X822960Y127000D01* +X848360Y152400D01* +X800100Y48260D02* +X800100Y20320D01* +X800100Y48260D02* +X855980Y48260D01* +X795020Y48260D02* +X764540Y78740D01* +X749300Y78740D01* +X795020Y48260D02* +X800100Y48260D01* +D16* +X386080Y345440D03* +D18* +X406400Y325120D01* +X406400Y317500D01* +D16* +X226060Y347980D03* +D18* +X366261Y347980D01* +X368011Y349730D01* +X381790Y349730D01* +X386080Y345440D01* +D16* +X1247140Y116840D03* +D18* +X1239520Y116840D01* +D16* +X417137Y332740D03* +D18* +X417137Y327083D02* +X451955Y292265D01* +X417137Y327083D02* +X417137Y332740D01* +X451955Y292265D02* +X451955Y291935D01* +D16* +X451955Y291935D03* +X190500Y342900D03* +D21* +X174122Y342900D01* +X160020Y328798D01* +X182880Y88515D02* +X272165Y88515D01* +X182880Y88515D02* +X160020Y111375D01* +X160020Y328798D01* +X305185Y121535D02* +X490605Y121535D01* +X305185Y121535D02* +X272165Y88515D01* +X490605Y121535D02* +X490605Y121876D01* +D22* +X490605Y121876D03* +D16* +X556260Y279400D03* +D18* +X533400Y279400D01* +D16* +X533400Y279400D03* +X528320Y81280D03* +D23* +X959358Y102362D02* +X971550Y90170D01* +X412242Y102362D02* +X400050Y90170D01* +X528320Y102362D02* +X959358Y102362D01* +X528320Y102362D02* +X412242Y102362D01* +D24* +X528320Y102362D02* +X528320Y81280D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_inner_l2.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_inner_l2.gbr new file mode 100644 index 0000000000..65de86ebf8 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_inner_l2.gbr @@ -0,0 +1,4135 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INCopper Layer 1*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.812800*% +%ADD11C,1.204800*% +%ADD12C,1.920000*% +%ADD13C,1.704341*% +%ADD14C,1.320800*% +%ADD15C,0.756400*% +%ADD16C,0.711200*% +%ADD17C,0.956400*% + +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X448468Y174751D02* +X448468Y174751D01* +X446414Y175602D01* +X444842Y177174D01* +X443991Y179228D01* +X443991Y180202D01* +X443983Y180260D01* +X443985Y180318D01* +X443963Y180400D01* +X443951Y180483D01* +X443928Y180537D01* +X443913Y180593D01* +X443870Y180666D01* +X443835Y180743D01* +X443797Y180787D01* +X443768Y180838D01* +X443706Y180895D01* +X443652Y180960D01* +X443603Y180992D01* +X443560Y181032D01* +X443485Y181071D01* +X443415Y181117D01* +X443359Y181135D01* +X443307Y181162D01* +X443239Y181173D01* +X443144Y181203D01* +X443044Y181206D01* +X442976Y181217D01* +X442003Y181217D01* +X439948Y182068D01* +X438376Y183640D01* +X437525Y185694D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y200386D01* +X438376Y202440D01* +X439948Y204012D01* +X442003Y204863D01* +X442976Y204863D01* +X443034Y204871D01* +X443092Y204870D01* +X443174Y204891D01* +X443258Y204903D01* +X443311Y204927D01* +X443367Y204941D01* +X443440Y204984D01* +X443517Y205019D01* +X443562Y205057D01* +X443612Y205087D01* +X443670Y205148D01* +X443734Y205203D01* +X443766Y205251D01* +X443806Y205294D01* +X443845Y205369D01* +X443892Y205439D01* +X443909Y205495D01* +X443936Y205547D01* +X443947Y205615D01* +X443977Y205710D01* +X443980Y205810D01* +X443991Y205878D01* +X443991Y206852D01* +X444842Y208906D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X969451Y79616D02* +X969451Y79616D01* +X965571Y81222D01* +X962602Y84191D01* +X960996Y88071D01* +X960996Y92269D01* +X962602Y96149D01* +X965571Y99118D01* +X969451Y100724D01* +X973649Y100724D01* +X977529Y99118D01* +X980498Y96149D01* +X982104Y92269D01* +X982104Y88071D01* +X980498Y84191D01* +X977529Y81222D01* +X973649Y79616D01* +X969451Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X461451Y47866D02* +X461451Y47866D01* +X457571Y49472D01* +X454602Y52441D01* +X452996Y56321D01* +X452996Y60519D01* +X454602Y64399D01* +X457571Y67368D01* +X461451Y68974D01* +X465649Y68974D01* +X469529Y67368D01* +X472498Y64399D01* +X474104Y60519D01* +X474104Y56321D01* +X472498Y52441D01* +X469529Y49472D01* +X465649Y47866D01* +X461451Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X397951Y79616D02* +X397951Y79616D01* +X394071Y81222D01* +X391102Y84191D01* +X389496Y88071D01* +X389496Y92269D01* +X391102Y96149D01* +X394071Y99118D01* +X397951Y100724D01* +X402149Y100724D01* +X406029Y99118D01* +X408998Y96149D01* +X410604Y92269D01* +X410604Y88071D01* +X408998Y84191D01* +X406029Y81222D01* +X402149Y79616D01* +X397951Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X905951Y47866D02* +X905951Y47866D01* +X902071Y49472D01* +X899102Y52441D01* +X897496Y56321D01* +X897496Y60519D01* +X899102Y64399D01* +X902071Y67368D01* +X905951Y68974D01* +X910149Y68974D01* +X914029Y67368D01* +X916998Y64399D01* +X918604Y60519D01* +X918604Y56321D01* +X916998Y52441D01* +X914029Y49472D01* +X910149Y47866D01* +X905951Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X1080883Y161825D02* +X1080883Y161825D01* +X1078746Y162711D01* +X1077111Y164346D01* +X1076225Y166483D01* +X1076225Y168797D01* +X1077016Y170706D01* +X1077023Y170734D01* +X1077037Y170760D01* +X1077059Y170871D01* +X1077087Y170981D01* +X1077086Y171010D01* +X1077092Y171039D01* +X1077082Y171152D01* +X1077079Y171265D01* +X1077070Y171293D01* +X1077067Y171322D01* +X1077027Y171428D01* +X1076992Y171536D01* +X1076976Y171560D01* +X1076965Y171587D01* +X1076897Y171678D01* +X1076834Y171772D01* +X1076811Y171791D01* +X1076794Y171814D01* +X1076703Y171882D01* +X1076616Y171955D01* +X1076589Y171967D01* +X1076566Y171984D01* +X1076460Y172024D01* +X1076356Y172070D01* +X1076327Y172074D01* +X1076300Y172085D01* +X1076187Y172094D01* +X1076075Y172109D01* +X1076046Y172105D01* +X1076017Y172107D01* +X1075940Y172090D01* +X1075794Y172069D01* +X1075737Y172043D01* +X1075689Y172032D01* +X1075577Y171985D01* +X1073263Y171985D01* +X1071126Y172871D01* +X1069491Y174506D01* +X1068605Y176643D01* +X1068605Y178957D01* +X1069491Y181094D01* +X1071126Y182729D01* +X1072291Y183212D01* +X1072316Y183227D01* +X1072344Y183236D01* +X1072439Y183299D01* +X1072536Y183357D01* +X1072556Y183378D01* +X1072581Y183394D01* +X1072653Y183481D01* +X1072731Y183563D01* +X1072745Y183589D01* +X1072764Y183612D01* +X1072810Y183715D01* +X1072861Y183816D01* +X1072867Y183845D01* +X1072879Y183872D01* +X1072895Y183984D01* +X1072916Y184095D01* +X1072914Y184124D01* +X1072918Y184153D01* +X1072902Y184265D01* +X1072892Y184378D01* +X1072881Y184405D01* +X1072877Y184435D01* +X1072831Y184538D01* +X1072790Y184643D01* +X1072772Y184667D01* +X1072760Y184694D01* +X1072687Y184780D01* +X1072618Y184870D01* +X1072595Y184888D01* +X1072576Y184910D01* +X1072509Y184952D01* +X1072391Y185040D01* +X1072332Y185062D01* +X1072291Y185088D01* +X1071126Y185571D01* +X1069491Y187206D01* +X1068605Y189343D01* +X1068605Y191657D01* +X1069491Y193794D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076077Y184688D01* +X1076031Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183894D01* +X1075963Y183866D01* +X1076009Y183763D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173853D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080723Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085334Y172569D01* +X1086969Y170934D01* +X1087855Y168797D01* +X1087855Y166483D01* +X1086969Y164346D01* +X1085334Y162711D01* +X1083197Y161825D01* +X1080883Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X565175Y196199D02* +X565175Y196199D01* +X563038Y197085D01* +X561402Y198720D01* +X560718Y200372D01* +X560703Y200397D01* +X560694Y200425D01* +X560631Y200519D01* +X560574Y200616D01* +X560552Y200637D01* +X560536Y200661D01* +X560449Y200734D01* +X560367Y200812D01* +X560341Y200825D01* +X560318Y200844D01* +X560215Y200890D01* +X560114Y200942D01* +X560085Y200948D01* +X560059Y200959D01* +X559946Y200975D01* +X559835Y200997D01* +X559806Y200994D01* +X559777Y200998D01* +X559665Y200982D01* +X559552Y200972D01* +X559525Y200962D01* +X559496Y200958D01* +X559392Y200911D01* +X559287Y200870D01* +X559263Y200853D01* +X559237Y200841D01* +X559150Y200767D01* +X559060Y200699D01* +X559042Y200675D01* +X559020Y200656D01* +X558979Y200590D01* +X558890Y200471D01* +X558868Y200413D01* +X558842Y200372D01* +X558649Y199906D01* +X557014Y198271D01* +X554877Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548791Y199906D01* +X547905Y202043D01* +X547905Y204357D01* +X548791Y206494D01* +X550426Y208129D01* +X552563Y209015D01* +X554877Y209015D01* +X557181Y208060D01* +X557209Y208053D01* +X557235Y208040D01* +X557346Y208018D01* +X557456Y207989D01* +X557485Y207990D01* +X557514Y207985D01* +X557627Y207994D01* +X557740Y207998D01* +X557768Y208007D01* +X557797Y208009D01* +X557903Y208050D01* +X558011Y208084D01* +X558035Y208101D01* +X558063Y208111D01* +X558153Y208179D01* +X558247Y208243D01* +X558266Y208265D01* +X558289Y208283D01* +X558357Y208374D01* +X558430Y208460D01* +X558442Y208487D01* +X558459Y208510D01* +X558499Y208617D01* +X558545Y208720D01* +X558549Y208749D01* +X558560Y208776D01* +X558569Y208889D01* +X558584Y209001D01* +X558580Y209031D01* +X558582Y209060D01* +X558565Y209136D01* +X558544Y209283D01* +X558518Y209340D01* +X558507Y209387D01* +X558065Y210453D01* +X558065Y212767D01* +X558951Y214904D01* +X560586Y216539D01* +X562723Y217425D01* +X565037Y217425D01* +X567174Y216539D01* +X568809Y214904D01* +X569695Y212767D01* +X569695Y210453D01* +X568832Y208371D01* +X568818Y208314D01* +X568794Y208261D01* +X568782Y208177D01* +X568761Y208096D01* +X568763Y208037D01* +X568755Y207979D01* +X568767Y207896D01* +X568769Y207812D01* +X568787Y207756D01* +X568796Y207698D01* +X568830Y207621D01* +X568856Y207541D01* +X568889Y207492D01* +X568913Y207439D01* +X568967Y207375D01* +X569014Y207305D01* +X569059Y207267D01* +X569097Y207222D01* +X569156Y207186D01* +X569232Y207122D01* +X569323Y207081D01* +X569382Y207045D01* +X569626Y206943D01* +X571261Y205308D01* +X572146Y203171D01* +X572146Y200857D01* +X571261Y198720D01* +X569626Y197085D01* +X567488Y196199D01* +X565175Y196199D01* +G37* +%LPD*% +%LPC*% +G36* +X415980Y326925D02* +X415980Y326925D01* +X413843Y327811D01* +X412207Y329446D01* +X411322Y331583D01* +X411322Y333897D01* +X412207Y336034D01* +X413843Y337669D01* +X416037Y338578D01* +X416088Y338608D01* +X416142Y338629D01* +X416210Y338680D01* +X416282Y338723D01* +X416322Y338765D01* +X416369Y338801D01* +X416420Y338868D01* +X416477Y338930D01* +X416504Y338982D01* +X416539Y339028D01* +X416569Y339107D01* +X416608Y339182D01* +X416619Y339240D01* +X416640Y339294D01* +X416646Y339378D01* +X416663Y339461D01* +X416658Y339520D01* +X416662Y339578D01* +X416647Y339645D01* +X416638Y339744D01* +X416602Y339838D01* +X416587Y339905D01* +X415825Y341743D01* +X415825Y344057D01* +X416711Y346194D01* +X418346Y347829D01* +X420483Y348715D01* +X422430Y348715D01* +X422488Y348723D01* +X422546Y348721D01* +X422628Y348743D01* +X422712Y348755D01* +X422765Y348778D01* +X422821Y348793D01* +X422894Y348836D01* +X422971Y348871D01* +X423016Y348909D01* +X423066Y348938D01* +X423124Y349000D01* +X423188Y349054D01* +X423220Y349103D01* +X423260Y349146D01* +X423299Y349221D01* +X423346Y349291D01* +X423363Y349347D01* +X423390Y349399D01* +X423401Y349467D01* +X423431Y349562D01* +X423434Y349662D01* +X423445Y349730D01* +X423445Y351753D01* +X424331Y353890D01* +X425966Y355525D01* +X428103Y356411D01* +X430417Y356411D01* +X432554Y355525D01* +X434189Y353890D01* +X435075Y351753D01* +X435075Y349439D01* +X434189Y347302D01* +X432554Y345667D01* +X430417Y344781D01* +X428470Y344781D01* +X428412Y344773D01* +X428354Y344775D01* +X428272Y344753D01* +X428188Y344741D01* +X428135Y344718D01* +X428079Y344703D01* +X428006Y344660D01* +X427929Y344625D01* +X427884Y344587D01* +X427834Y344558D01* +X427776Y344496D01* +X427712Y344442D01* +X427680Y344393D01* +X427640Y344350D01* +X427601Y344275D01* +X427554Y344205D01* +X427537Y344149D01* +X427510Y344097D01* +X427499Y344029D01* +X427469Y343934D01* +X427466Y343834D01* +X427455Y343766D01* +X427455Y341743D01* +X426569Y339606D01* +X424934Y337971D01* +X422740Y337062D01* +X422689Y337032D01* +X422635Y337011D01* +X422567Y336960D01* +X422495Y336917D01* +X422455Y336875D01* +X422408Y336839D01* +X422357Y336772D01* +X422300Y336710D01* +X422273Y336658D01* +X422238Y336612D01* +X422208Y336533D01* +X422169Y336458D01* +X422158Y336400D01* +X422137Y336346D01* +X422131Y336261D01* +X422114Y336179D01* +X422119Y336121D01* +X422115Y336062D01* +X422130Y335995D01* +X422139Y335896D01* +X422175Y335803D01* +X422190Y335735D01* +X422952Y333897D01* +X422952Y331583D01* +X422066Y329446D01* +X420431Y327811D01* +X418293Y326925D01* +X415980Y326925D01* +G37* +%LPD*% +%LPC*% +G36* +X498659Y225325D02* +X498659Y225325D01* +X496522Y226211D01* +X495704Y227028D01* +X495658Y227064D01* +X495617Y227106D01* +X495545Y227149D01* +X495477Y227199D01* +X495423Y227220D01* +X495372Y227250D01* +X495290Y227270D01* +X495212Y227301D01* +X495153Y227305D01* +X495097Y227320D01* +X495012Y227317D01* +X494928Y227324D01* +X494871Y227313D01* +X494812Y227311D01* +X494732Y227285D01* +X494649Y227268D01* +X494598Y227241D01* +X494542Y227223D01* +X494486Y227183D01* +X494397Y227137D01* +X494325Y227068D01* +X494269Y227028D01* +X493482Y226242D01* +X491345Y225357D01* +X489032Y225357D01* +X486895Y226242D01* +X485259Y227878D01* +X484374Y230015D01* +X484374Y231930D01* +X484366Y231988D01* +X484367Y232046D01* +X484346Y232128D01* +X484334Y232212D01* +X484310Y232265D01* +X484295Y232321D01* +X484252Y232394D01* +X484218Y232471D01* +X484180Y232516D01* +X484150Y232566D01* +X484088Y232624D01* +X484034Y232688D01* +X483985Y232720D01* +X483943Y232760D01* +X483868Y232799D01* +X483797Y232846D01* +X483742Y232863D01* +X483690Y232890D01* +X483621Y232901D01* +X483526Y232931D01* +X483427Y232934D01* +X483358Y232945D01* +X481443Y232945D01* +X479306Y233831D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X481443Y244575D01* +X483757Y244575D01* +X485894Y243689D01* +X487529Y242054D01* +X488415Y239917D01* +X488415Y238002D01* +X488423Y237944D01* +X488421Y237885D01* +X488443Y237804D01* +X488455Y237720D01* +X488478Y237667D01* +X488493Y237610D01* +X488536Y237538D01* +X488571Y237461D01* +X488609Y237416D01* +X488638Y237366D01* +X488700Y237308D01* +X488754Y237244D01* +X488803Y237211D01* +X488846Y237171D01* +X488921Y237133D01* +X488991Y237086D01* +X489047Y237068D01* +X489099Y237042D01* +X489167Y237030D01* +X489262Y237000D01* +X489362Y236998D01* +X489430Y236986D01* +X491345Y236986D01* +X493482Y236101D01* +X494300Y235283D01* +X494347Y235248D01* +X494387Y235206D01* +X494460Y235163D01* +X494527Y235112D01* +X494582Y235091D01* +X494632Y235062D01* +X494714Y235041D01* +X494793Y235011D01* +X494851Y235006D01* +X494908Y234992D01* +X494992Y234994D01* +X495076Y234987D01* +X495134Y234999D01* +X495192Y235001D01* +X495272Y235027D01* +X495355Y235043D01* +X495407Y235070D01* +X495463Y235088D01* +X495519Y235128D01* +X495607Y235174D01* +X495680Y235243D01* +X495736Y235283D01* +X496522Y236069D01* +X498659Y236955D01* +X500973Y236955D01* +X503110Y236069D01* +X504745Y234434D01* +X505631Y232297D01* +X505631Y229983D01* +X504745Y227846D01* +X503110Y226211D01* +X500973Y225325D01* +X498659Y225325D01* +G37* +%LPD*% +%LPC*% +G36* +X645982Y11683D02* +X645982Y11683D01* +X642808Y12998D01* +X640378Y15428D01* +X639063Y18602D01* +X639063Y22038D01* +X640378Y25212D01* +X642808Y27642D01* +X645982Y28957D01* +X649418Y28957D01* +X652592Y27642D01* +X655022Y25212D01* +X656337Y22038D01* +X656337Y18602D01* +X655022Y15428D01* +X652592Y12998D01* +X649418Y11683D01* +X645982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X620582Y11683D02* +X620582Y11683D01* +X617408Y12998D01* +X614978Y15428D01* +X613663Y18602D01* +X613663Y22038D01* +X614978Y25212D01* +X617408Y27642D01* +X620582Y28957D01* +X624018Y28957D01* +X627192Y27642D01* +X629622Y25212D01* +X630937Y22038D01* +X630937Y18602D01* +X629622Y15428D01* +X627192Y12998D01* +X624018Y11683D01* +X620582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y70103D02* +X747582Y70103D01* +X744408Y71418D01* +X741978Y73848D01* +X740663Y77022D01* +X740663Y80458D01* +X741978Y83632D01* +X744408Y86062D01* +X747582Y87377D01* +X751018Y87377D01* +X754192Y86062D01* +X756622Y83632D01* +X757937Y80458D01* +X757937Y77022D01* +X756622Y73848D01* +X754192Y71418D01* +X751018Y70103D01* +X747582Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X722182Y70103D02* +X722182Y70103D01* +X719008Y71418D01* +X716578Y73848D01* +X715263Y77022D01* +X715263Y80458D01* +X716578Y83632D01* +X719008Y86062D01* +X722182Y87377D01* +X725618Y87377D01* +X728792Y86062D01* +X731222Y83632D01* +X732537Y80458D01* +X732537Y77022D01* +X731222Y73848D01* +X728792Y71418D01* +X725618Y70103D01* +X722182Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X595182Y11683D02* +X595182Y11683D01* +X592008Y12998D01* +X589578Y15428D01* +X588263Y18602D01* +X588263Y22038D01* +X589578Y25212D01* +X592008Y27642D01* +X595182Y28957D01* +X598618Y28957D01* +X601792Y27642D01* +X604222Y25212D01* +X605537Y22038D01* +X605537Y18602D01* +X604222Y15428D01* +X601792Y12998D01* +X598618Y11683D01* +X595182Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X569782Y11683D02* +X569782Y11683D01* +X566608Y12998D01* +X564178Y15428D01* +X562863Y18602D01* +X562863Y22038D01* +X564178Y25212D01* +X566608Y27642D01* +X569782Y28957D01* +X573218Y28957D01* +X576392Y27642D01* +X578822Y25212D01* +X580137Y22038D01* +X580137Y18602D01* +X578822Y15428D01* +X576392Y12998D01* +X573218Y11683D01* +X569782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X671382Y11683D02* +X671382Y11683D01* +X668208Y12998D01* +X665778Y15428D01* +X664463Y18602D01* +X664463Y22038D01* +X665778Y25212D01* +X668208Y27642D01* +X671382Y28957D01* +X674818Y28957D01* +X677992Y27642D01* +X680422Y25212D01* +X681737Y22038D01* +X681737Y18602D01* +X680422Y15428D01* +X677992Y12998D01* +X674818Y11683D01* +X671382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y11683D02* +X747582Y11683D01* +X744408Y12998D01* +X741978Y15428D01* +X740663Y18602D01* +X740663Y22038D01* +X741978Y25212D01* +X744408Y27642D01* +X747582Y28957D01* +X751018Y28957D01* +X754192Y27642D01* +X756622Y25212D01* +X757937Y22038D01* +X757937Y18602D01* +X756622Y15428D01* +X754192Y12998D01* +X751018Y11683D01* +X747582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X798382Y11683D02* +X798382Y11683D01* +X795208Y12998D01* +X792778Y15428D01* +X791463Y18602D01* +X791463Y22038D01* +X792778Y25212D01* +X795208Y27642D01* +X798382Y28957D01* +X801818Y28957D01* +X804992Y27642D01* +X807422Y25212D01* +X808737Y22038D01* +X808737Y18602D01* +X807422Y15428D01* +X804992Y12998D01* +X801818Y11683D01* +X798382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X772982Y11683D02* +X772982Y11683D01* +X769808Y12998D01* +X767378Y15428D01* +X766063Y18602D01* +X766063Y22038D01* +X767378Y25212D01* +X769808Y27642D01* +X772982Y28957D01* +X776418Y28957D01* +X779592Y27642D01* +X782022Y25212D01* +X783337Y22038D01* +X783337Y18602D01* +X782022Y15428D01* +X779592Y12998D01* +X776418Y11683D01* +X772982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X905623Y136425D02* +X905623Y136425D01* +X903486Y137311D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X922774Y149709D01* +X924409Y148074D01* +X925295Y145937D01* +X925295Y143623D01* +X924409Y141486D01* +X922774Y139851D01* +X920637Y138965D01* +X918323Y138965D01* +X916186Y139851D01* +X914551Y141486D01* +X914548Y141492D01* +X914504Y141566D01* +X914469Y141645D01* +X914432Y141688D01* +X914404Y141737D01* +X914341Y141796D01* +X914285Y141862D01* +X914238Y141893D01* +X914197Y141932D01* +X914120Y141972D01* +X914049Y142019D01* +X913995Y142037D01* +X913944Y142063D01* +X913860Y142079D01* +X913778Y142105D01* +X913721Y142107D01* +X913665Y142118D01* +X913580Y142110D01* +X913494Y142112D01* +X913439Y142098D01* +X913382Y142093D01* +X913302Y142062D01* +X913219Y142041D01* +X913170Y142012D01* +X913117Y141991D01* +X913048Y141939D01* +X912974Y141895D01* +X912935Y141854D01* +X912890Y141820D01* +X912838Y141751D01* +X912780Y141688D01* +X912754Y141637D01* +X912720Y141592D01* +X912689Y141512D01* +X912650Y141435D01* +X912642Y141386D01* +X912619Y141326D01* +X912608Y141181D01* +X912595Y141104D01* +X912595Y141083D01* +X911709Y138946D01* +X910074Y137311D01* +X907937Y136425D01* +X905623Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X971663Y159285D02* +X971663Y159285D01* +X969526Y160171D01* +X967891Y161806D01* +X967005Y163943D01* +X967005Y166257D01* +X967891Y168394D01* +X969526Y170029D01* +X971663Y170915D01* +X973977Y170915D01* +X975886Y170124D01* +X975914Y170117D01* +X975940Y170103D01* +X976051Y170081D01* +X976161Y170053D01* +X976190Y170054D01* +X976219Y170048D01* +X976332Y170058D01* +X976445Y170061D01* +X976473Y170070D01* +X976502Y170073D01* +X976608Y170113D01* +X976716Y170148D01* +X976740Y170164D01* +X976767Y170175D01* +X976858Y170243D01* +X976952Y170306D01* +X976971Y170329D01* +X976994Y170346D01* +X977062Y170437D01* +X977135Y170524D01* +X977147Y170551D01* +X977164Y170574D01* +X977204Y170680D01* +X977250Y170784D01* +X977254Y170813D01* +X977265Y170840D01* +X977274Y170953D01* +X977289Y171065D01* +X977285Y171094D01* +X977287Y171123D01* +X977270Y171200D01* +X977249Y171346D01* +X977223Y171403D01* +X977212Y171451D01* +X977165Y171563D01* +X977165Y173877D01* +X978051Y176014D01* +X979686Y177649D01* +X981823Y178535D01* +X984137Y178535D01* +X986274Y177649D01* +X987909Y176014D01* +X988795Y173877D01* +X988795Y171563D01* +X987909Y169426D01* +X986274Y167791D01* +X984137Y166905D01* +X981823Y166905D01* +X979914Y167696D01* +X979886Y167703D01* +X979860Y167717D01* +X979749Y167739D01* +X979639Y167767D01* +X979610Y167766D01* +X979581Y167772D01* +X979468Y167762D01* +X979355Y167759D01* +X979327Y167750D01* +X979298Y167747D01* +X979192Y167707D01* +X979084Y167672D01* +X979060Y167656D01* +X979033Y167645D01* +X978942Y167577D01* +X978848Y167514D01* +X978829Y167491D01* +X978806Y167474D01* +X978738Y167383D01* +X978665Y167296D01* +X978653Y167269D01* +X978636Y167246D01* +X978596Y167140D01* +X978550Y167036D01* +X978546Y167007D01* +X978535Y166980D01* +X978526Y166867D01* +X978511Y166755D01* +X978515Y166726D01* +X978513Y166697D01* +X978530Y166620D01* +X978551Y166474D01* +X978577Y166417D01* +X978588Y166369D01* +X978635Y166257D01* +X978635Y163943D01* +X977749Y161806D01* +X976114Y160171D01* +X973977Y159285D01* +X971663Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X197087Y327207D02* +X197087Y327207D01* +X194950Y328093D01* +X193315Y329728D01* +X192429Y331865D01* +X192429Y334179D01* +X193105Y335809D01* +X193112Y335838D01* +X193126Y335864D01* +X193147Y335975D01* +X193176Y336084D01* +X193175Y336114D01* +X193181Y336143D01* +X193171Y336256D01* +X193168Y336369D01* +X193159Y336397D01* +X193156Y336426D01* +X193115Y336532D01* +X193081Y336639D01* +X193065Y336664D01* +X193054Y336691D01* +X192986Y336781D01* +X192923Y336876D01* +X192900Y336894D01* +X192882Y336918D01* +X192792Y336986D01* +X192705Y337059D01* +X192678Y337070D01* +X192655Y337088D01* +X192549Y337128D01* +X192445Y337174D01* +X192416Y337178D01* +X192389Y337188D01* +X192276Y337197D01* +X192164Y337213D01* +X192135Y337209D01* +X192105Y337211D01* +X192029Y337193D01* +X191882Y337172D01* +X191825Y337147D01* +X191778Y337136D01* +X191657Y337085D01* +X189343Y337085D01* +X187206Y337971D01* +X185571Y339606D01* +X184685Y341743D01* +X184685Y344057D01* +X185571Y346194D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195639Y340113D01* +X195632Y340084D01* +X195619Y340058D01* +X195597Y339947D01* +X195568Y339838D01* +X195569Y339808D01* +X195564Y339779D01* +X195573Y339667D01* +X195577Y339553D01* +X195585Y339525D01* +X195588Y339496D01* +X195629Y339391D01* +X195663Y339283D01* +X195680Y339258D01* +X195690Y339231D01* +X195758Y339141D01* +X195821Y339046D01* +X195844Y339028D01* +X195862Y339004D01* +X195952Y338936D01* +X196039Y338864D01* +X196066Y338852D01* +X196089Y338834D01* +X196195Y338794D01* +X196299Y338748D01* +X196328Y338744D01* +X196355Y338734D01* +X196468Y338725D01* +X196580Y338709D01* +X196609Y338713D01* +X196639Y338711D01* +X196715Y338729D01* +X196862Y338750D01* +X196919Y338776D01* +X196966Y338786D01* +X197087Y338837D01* +X199401Y338837D01* +X201538Y337951D01* +X203174Y336316D01* +X204059Y334179D01* +X204059Y331865D01* +X203174Y329728D01* +X201538Y328093D01* +X199401Y327207D01* +X197087Y327207D01* +G37* +%LPD*% +%LPC*% +G36* +X904604Y157765D02* +X904604Y157765D01* +X902467Y158650D01* +X900831Y160286D01* +X899946Y162423D01* +X899946Y164736D01* +X900831Y166873D01* +X902467Y168509D01* +X904644Y169411D01* +X904681Y169418D01* +X904793Y169434D01* +X904820Y169446D01* +X904848Y169452D01* +X904949Y169504D01* +X905052Y169550D01* +X905075Y169569D01* +X905101Y169583D01* +X905183Y169661D01* +X905269Y169734D01* +X905286Y169758D01* +X905307Y169779D01* +X905364Y169876D01* +X905427Y169971D01* +X905436Y169999D01* +X905451Y170024D01* +X905479Y170134D01* +X905513Y170242D01* +X905513Y170271D01* +X905521Y170299D01* +X905517Y170412D01* +X905520Y170526D01* +X905513Y170554D01* +X905512Y170584D01* +X905477Y170692D01* +X905448Y170801D01* +X905433Y170826D01* +X905424Y170854D01* +X905379Y170918D01* +X905303Y171045D01* +X905257Y171088D01* +X905229Y171127D01* +X904391Y171966D01* +X903505Y174103D01* +X903505Y176417D01* +X904391Y178554D01* +X906026Y180189D01* +X908163Y181075D01* +X910477Y181075D01* +X912614Y180189D01* +X914249Y178554D01* +X915135Y176417D01* +X915135Y174103D01* +X914249Y171966D01* +X912614Y170331D01* +X910437Y169429D01* +X910400Y169421D01* +X910288Y169405D01* +X910261Y169393D01* +X910232Y169388D01* +X910131Y169335D01* +X910028Y169289D01* +X910006Y169270D01* +X909980Y169257D01* +X909898Y169179D01* +X909811Y169106D01* +X909795Y169081D01* +X909774Y169061D01* +X909716Y168963D01* +X909654Y168869D01* +X909645Y168841D01* +X909630Y168816D01* +X909602Y168706D01* +X909568Y168598D01* +X909567Y168568D01* +X909560Y168540D01* +X909563Y168427D01* +X909560Y168314D01* +X909568Y168285D01* +X909569Y168256D01* +X909604Y168148D01* +X909632Y168039D01* +X909647Y168013D01* +X909656Y167985D01* +X909702Y167921D01* +X909778Y167794D01* +X909823Y167751D01* +X909851Y167712D01* +X910690Y166873D01* +X911575Y164736D01* +X911575Y162423D01* +X910690Y160286D01* +X909054Y158650D01* +X906917Y157765D01* +X904604Y157765D01* +G37* +%LPD*% +%LPC*% +G36* +X1192643Y273585D02* +X1192643Y273585D01* +X1190506Y274471D01* +X1188871Y276106D01* +X1187985Y278243D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194957Y285215D01* +X1197094Y284329D01* +X1198729Y282694D01* +X1199212Y281529D01* +X1199227Y281504D01* +X1199236Y281476D01* +X1199299Y281382D01* +X1199356Y281284D01* +X1199378Y281264D01* +X1199394Y281239D01* +X1199481Y281167D01* +X1199563Y281089D01* +X1199589Y281075D01* +X1199612Y281056D01* +X1199715Y281010D01* +X1199816Y280959D01* +X1199845Y280953D01* +X1199872Y280941D01* +X1199984Y280925D01* +X1200095Y280904D01* +X1200124Y280906D01* +X1200153Y280902D01* +X1200265Y280918D01* +X1200378Y280928D01* +X1200406Y280939D01* +X1200434Y280943D01* +X1200537Y280989D01* +X1200643Y281030D01* +X1200667Y281048D01* +X1200694Y281060D01* +X1200780Y281133D01* +X1200870Y281202D01* +X1200888Y281225D01* +X1200910Y281244D01* +X1200952Y281311D01* +X1201040Y281429D01* +X1201058Y281476D01* +X1201075Y281502D01* +X1201079Y281515D01* +X1201088Y281529D01* +X1201571Y282694D01* +X1203206Y284329D01* +X1205343Y285215D01* +X1207657Y285215D01* +X1209794Y284329D01* +X1211429Y282694D01* +X1212315Y280557D01* +X1212315Y278243D01* +X1211429Y276106D01* +X1209794Y274471D01* +X1207657Y273585D01* +X1205343Y273585D01* +X1203206Y274471D01* +X1201571Y276106D01* +X1201088Y277271D01* +X1201073Y277296D01* +X1201064Y277324D01* +X1201001Y277419D01* +X1200943Y277516D01* +X1200922Y277536D01* +X1200906Y277561D01* +X1200819Y277634D01* +X1200737Y277711D01* +X1200711Y277725D01* +X1200688Y277744D01* +X1200585Y277790D01* +X1200484Y277841D01* +X1200455Y277847D01* +X1200428Y277859D01* +X1200316Y277875D01* +X1200205Y277896D01* +X1200176Y277894D01* +X1200147Y277898D01* +X1200035Y277882D01* +X1199922Y277872D01* +X1199895Y277861D01* +X1199865Y277857D01* +X1199762Y277811D01* +X1199657Y277770D01* +X1199633Y277752D01* +X1199606Y277740D01* +X1199520Y277667D01* +X1199430Y277598D01* +X1199412Y277575D01* +X1199390Y277556D01* +X1199349Y277490D01* +X1199260Y277371D01* +X1199244Y277329D01* +X1199227Y277304D01* +X1199222Y277287D01* +X1199212Y277271D01* +X1198729Y276106D01* +X1197094Y274471D01* +X1194957Y273585D01* +X1192643Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X1022463Y159285D02* +X1022463Y159285D01* +X1020326Y160171D01* +X1018691Y161806D01* +X1017805Y163943D01* +X1017805Y166257D01* +X1018691Y168394D01* +X1019759Y169462D01* +X1019794Y169509D01* +X1019836Y169549D01* +X1019879Y169622D01* +X1019930Y169689D01* +X1019951Y169744D01* +X1019980Y169794D01* +X1020001Y169876D01* +X1020031Y169955D01* +X1020036Y170013D01* +X1020050Y170070D01* +X1020048Y170154D01* +X1020055Y170238D01* +X1020043Y170296D01* +X1020041Y170354D01* +X1020015Y170434D01* +X1019999Y170517D01* +X1019972Y170569D01* +X1019954Y170625D01* +X1019914Y170681D01* +X1019868Y170769D01* +X1019799Y170842D01* +X1019759Y170898D01* +X1018691Y171966D01* +X1017805Y174103D01* +X1017805Y176417D01* +X1018691Y178554D01* +X1020326Y180189D01* +X1022463Y181075D01* +X1024777Y181075D01* +X1026914Y180189D01* +X1028549Y178554D01* +X1029435Y176417D01* +X1029435Y174103D01* +X1028549Y171966D01* +X1027481Y170898D01* +X1027446Y170851D01* +X1027404Y170811D01* +X1027361Y170738D01* +X1027310Y170671D01* +X1027289Y170616D01* +X1027260Y170566D01* +X1027239Y170484D01* +X1027209Y170405D01* +X1027204Y170347D01* +X1027190Y170290D01* +X1027192Y170206D01* +X1027185Y170122D01* +X1027197Y170064D01* +X1027199Y170006D01* +X1027225Y169926D01* +X1027241Y169843D01* +X1027268Y169791D01* +X1027286Y169735D01* +X1027326Y169679D01* +X1027372Y169591D01* +X1027441Y169518D01* +X1027481Y169462D01* +X1028549Y168394D01* +X1029435Y166257D01* +X1029435Y163943D01* +X1028549Y161806D01* +X1026914Y160171D01* +X1024777Y159285D01* +X1022463Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y153241D02* +X290487Y153241D01* +X287526Y154468D01* +X285259Y156734D01* +X284033Y159695D01* +X284033Y162900D01* +X285259Y165862D01* +X287526Y168128D01* +X290487Y169355D01* +X293692Y169355D01* +X296653Y168128D01* +X298920Y165862D01* +X300146Y162900D01* +X300146Y159695D01* +X298920Y156734D01* +X296653Y154468D01* +X293692Y153241D01* +X290487Y153241D01* +G37* +%LPD*% +%LPC*% +G36* +X178006Y147147D02* +X178006Y147147D01* +X175045Y148374D01* +X172779Y150640D01* +X171552Y153601D01* +X171552Y156806D01* +X172779Y159768D01* +X175045Y162034D01* +X178006Y163261D01* +X181211Y163261D01* +X184173Y162034D01* +X186439Y159768D01* +X187665Y156806D01* +X187665Y153601D01* +X186439Y150640D01* +X184173Y148374D01* +X181211Y147147D01* +X178006Y147147D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y165941D02* +X315887Y165941D01* +X312926Y167168D01* +X310659Y169434D01* +X309433Y172395D01* +X309433Y175600D01* +X310659Y178562D01* +X312926Y180828D01* +X315887Y182055D01* +X319092Y182055D01* +X322053Y180828D01* +X324320Y178562D01* +X325546Y175600D01* +X325546Y172395D01* +X324320Y169434D01* +X322053Y167168D01* +X319092Y165941D01* +X315887Y165941D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y178641D02* +X290487Y178641D01* +X287526Y179868D01* +X285259Y182134D01* +X284033Y185095D01* +X284033Y188300D01* +X285259Y191262D01* +X287526Y193528D01* +X290487Y194755D01* +X293692Y194755D01* +X296653Y193528D01* +X298920Y191262D01* +X300146Y188300D01* +X300146Y185095D01* +X298920Y182134D01* +X296653Y179868D01* +X293692Y178641D01* +X290487Y178641D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y140541D02* +X315887Y140541D01* +X312926Y141768D01* +X310659Y144034D01* +X309433Y146995D01* +X309433Y150200D01* +X310659Y153162D01* +X312926Y155428D01* +X315887Y156655D01* +X319092Y156655D01* +X322053Y155428D01* +X324320Y153162D01* +X325546Y150200D01* +X325546Y146995D01* +X324320Y144034D01* +X322053Y141768D01* +X319092Y140541D01* +X315887Y140541D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y229441D02* +X290487Y229441D01* +X287526Y230668D01* +X285259Y232934D01* +X284033Y235895D01* +X284033Y239100D01* +X285259Y242062D01* +X287526Y244328D01* +X290487Y245555D01* +X293692Y245555D01* +X296653Y244328D01* +X298920Y242062D01* +X300146Y239100D01* +X300146Y235895D01* +X298920Y232934D01* +X296653Y230668D01* +X293692Y229441D01* +X290487Y229441D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y191341D02* +X315887Y191341D01* +X312926Y192568D01* +X310659Y194834D01* +X309433Y197795D01* +X309433Y201000D01* +X310659Y203962D01* +X312926Y206228D01* +X315887Y207455D01* +X319092Y207455D01* +X322053Y206228D01* +X324320Y203962D01* +X325546Y201000D01* +X325546Y197795D01* +X324320Y194834D01* +X322053Y192568D01* +X319092Y191341D01* +X315887Y191341D01* +G37* +%LPD*% +%LPC*% +G36* +X193201Y121729D02* +X193201Y121729D01* +X190240Y122955D01* +X187974Y125221D01* +X186747Y128183D01* +X186747Y131388D01* +X187974Y134349D01* +X190240Y136615D01* +X193201Y137842D01* +X196406Y137842D01* +X199368Y136615D01* +X201634Y134349D01* +X202860Y131388D01* +X202860Y128183D01* +X201634Y125221D01* +X199368Y122955D01* +X196406Y121729D01* +X193201Y121729D01* +G37* +%LPD*% +%LPC*% +G36* +X193206Y222847D02* +X193206Y222847D01* +X190245Y224074D01* +X187979Y226340D01* +X186752Y229301D01* +X186752Y232506D01* +X187979Y235468D01* +X190245Y237734D01* +X193206Y238961D01* +X196411Y238961D01* +X199373Y237734D01* +X201639Y235468D01* +X202865Y232506D01* +X202865Y229301D01* +X201639Y226340D01* +X199373Y224074D01* +X196411Y222847D01* +X193206Y222847D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y216741D02* +X315887Y216741D01* +X312926Y217968D01* +X310659Y220234D01* +X309433Y223195D01* +X309433Y226400D01* +X310659Y229362D01* +X312926Y231628D01* +X315887Y232855D01* +X319092Y232855D01* +X322053Y231628D01* +X324320Y229362D01* +X325546Y226400D01* +X325546Y223195D01* +X324320Y220234D01* +X322053Y217968D01* +X319092Y216741D01* +X315887Y216741D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y204041D02* +X290487Y204041D01* +X287526Y205268D01* +X285259Y207534D01* +X284033Y210495D01* +X284033Y213700D01* +X285259Y216662D01* +X287526Y218928D01* +X290487Y220155D01* +X293692Y220155D01* +X296653Y218928D01* +X298920Y216662D01* +X300146Y213700D01* +X300146Y210495D01* +X298920Y207534D01* +X296653Y205268D01* +X293692Y204041D01* +X290487Y204041D01* +G37* +%LPD*% +%LPC*% +G36* +X489249Y115061D02* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496382Y118016D01* +X494465Y116099D01* +X491960Y115061D01* +X489249Y115061D01* +G37* +%LPD*% +%LPC*% +G36* +X405243Y311685D02* +X405243Y311685D01* +X403106Y312571D01* +X401471Y314206D01* +X400585Y316343D01* +X400585Y318657D01* +X401471Y320794D01* +X403106Y322429D01* +X405243Y323315D01* +X407557Y323315D01* +X409694Y322429D01* +X411329Y320794D01* +X412215Y318657D01* +X412215Y316343D01* +X411329Y314206D01* +X409694Y312571D01* +X407557Y311685D01* +X405243Y311685D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y212625D02* +X1205343Y212625D01* +X1203206Y213511D01* +X1201571Y215146D01* +X1200685Y217283D01* +X1200685Y219597D01* +X1201571Y221734D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209794Y223369D01* +X1211429Y221734D01* +X1212315Y219597D01* +X1212315Y217283D01* +X1211429Y215146D01* +X1209794Y213511D01* +X1207657Y212625D01* +X1205343Y212625D01* +G37* +%LPD*% +%LPC*% +G36* +X547048Y215601D02* +X547048Y215601D01* +X544911Y216486D01* +X543275Y218122D01* +X542390Y220259D01* +X542390Y222572D01* +X543275Y224709D01* +X544911Y226345D01* +X547048Y227230D01* +X549361Y227230D01* +X551498Y226345D01* +X553134Y224709D01* +X554019Y222572D01* +X554019Y220259D01* +X553134Y218122D01* +X551498Y216486D01* +X549361Y215601D01* +X547048Y215601D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y197385D02* +X1205343Y197385D01* +X1203206Y198271D01* +X1201571Y199906D01* +X1200685Y202043D01* +X1200685Y204357D01* +X1201571Y206494D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1211429Y206494D01* +X1212315Y204357D01* +X1212315Y202043D01* +X1211429Y199906D01* +X1209794Y198271D01* +X1207657Y197385D01* +X1205343Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X580503Y197385D02* +X580503Y197385D01* +X578366Y198271D01* +X576731Y199906D01* +X575845Y202043D01* +X575845Y204357D01* +X576731Y206494D01* +X578366Y208129D01* +X580503Y209015D01* +X582817Y209015D01* +X584954Y208129D01* +X586589Y206494D01* +X587475Y204357D01* +X587475Y202043D01* +X586589Y199906D01* +X584954Y198271D01* +X582817Y197385D01* +X580503Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X517003Y233679D02* +X517003Y233679D01* +X514866Y234565D01* +X513231Y236200D01* +X512345Y238337D01* +X512345Y240651D01* +X513231Y242788D01* +X514866Y244423D01* +X517003Y245309D01* +X519317Y245309D01* +X521454Y244423D01* +X523089Y242788D01* +X523975Y240651D01* +X523975Y238337D01* +X523089Y236200D01* +X521454Y234565D01* +X519317Y233679D01* +X517003Y233679D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y235485D02* +X1205343Y235485D01* +X1203206Y236371D01* +X1201571Y238006D01* +X1200685Y240143D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1211429Y244594D01* +X1212315Y242457D01* +X1212315Y240143D01* +X1211429Y238006D01* +X1209794Y236371D01* +X1207657Y235485D01* +X1205343Y235485D01* +G37* +%LPD*% +%LPC*% +G36* +X224903Y342165D02* +X224903Y342165D01* +X222766Y343051D01* +X221131Y344686D01* +X220245Y346823D01* +X220245Y349137D01* +X221131Y351274D01* +X222766Y352909D01* +X224903Y353795D01* +X227217Y353795D01* +X229354Y352909D01* +X230989Y351274D01* +X231875Y349137D01* +X231875Y346823D01* +X230989Y344686D01* +X229354Y343051D01* +X227217Y342165D01* +X224903Y342165D01* +G37* +%LPD*% +%LPC*% +G36* +X994523Y177065D02* +X994523Y177065D01* +X992386Y177951D01* +X990751Y179586D01* +X989865Y181723D01* +X989865Y184037D01* +X990751Y186174D01* +X992386Y187809D01* +X994523Y188695D01* +X996837Y188695D01* +X998974Y187809D01* +X1000609Y186174D01* +X1001495Y184037D01* +X1001495Y181723D01* +X1000609Y179586D01* +X998974Y177951D01* +X996837Y177065D01* +X994523Y177065D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y174525D02* +X1205343Y174525D01* +X1203206Y175411D01* +X1201571Y177046D01* +X1200685Y179183D01* +X1200685Y181497D01* +X1201571Y183634D01* +X1203206Y185269D01* +X1205343Y186155D01* +X1207657Y186155D01* +X1209794Y185269D01* +X1211429Y183634D01* +X1212315Y181497D01* +X1212315Y179183D01* +X1211429Y177046D01* +X1209794Y175411D01* +X1207657Y174525D01* +X1205343Y174525D01* +G37* +%LPD*% +%LPC*% +G36* +X384923Y339625D02* +X384923Y339625D01* +X382786Y340511D01* +X381151Y342146D01* +X380265Y344283D01* +X380265Y346597D01* +X381151Y348734D01* +X382786Y350369D01* +X384923Y351255D01* +X387237Y351255D01* +X389374Y350369D01* +X391009Y348734D01* +X391895Y346597D01* +X391895Y344283D01* +X391009Y342146D01* +X389374Y340511D01* +X387237Y339625D01* +X384923Y339625D01* +G37* +%LPD*% +%LPC*% +G36* +X923403Y169445D02* +X923403Y169445D01* +X921266Y170331D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919631Y178554D01* +X921266Y180189D01* +X923403Y181075D01* +X925717Y181075D01* +X927854Y180189D01* +X929489Y178554D01* +X930375Y176417D01* +X930375Y174103D01* +X929489Y171966D01* +X927854Y170331D01* +X925717Y169445D01* +X923403Y169445D01* +G37* +%LPD*% +%LPC*% +G36* +X1091403Y243895D02* +X1091403Y243895D01* +X1089266Y244781D01* +X1087630Y246416D01* +X1086745Y248553D01* +X1086745Y250867D01* +X1087630Y253004D01* +X1089266Y254639D01* +X1091403Y255525D01* +X1093716Y255525D01* +X1095853Y254639D01* +X1097489Y253004D01* +X1098374Y250867D01* +X1098374Y248553D01* +X1097489Y246416D01* +X1095853Y244781D01* +X1093716Y243895D01* +X1091403Y243895D01* +G37* +%LPD*% +%LPC*% +G36* +X175354Y318016D02* +X175354Y318016D01* +X173217Y318902D01* +X171582Y320537D01* +X170696Y322674D01* +X170696Y324988D01* +X171582Y327125D01* +X173217Y328760D01* +X175354Y329646D01* +X177668Y329646D01* +X179805Y328760D01* +X181440Y327125D01* +X182326Y324988D01* +X182326Y322674D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +G37* +%LPD*% +%LPC*% +G36* +X532243Y273585D02* +X532243Y273585D01* +X530106Y274471D01* +X528471Y276106D01* +X527585Y278243D01* +X527585Y280557D01* +X528471Y282694D01* +X530106Y284329D01* +X532243Y285215D01* +X534557Y285215D01* +X536694Y284329D01* +X538329Y282694D01* +X539215Y280557D01* +X539215Y278243D01* +X538329Y276106D01* +X536694Y274471D01* +X534557Y273585D01* +X532243Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X468743Y250725D02* +X468743Y250725D01* +X466606Y251611D01* +X464971Y253246D01* +X464085Y255383D01* +X464085Y257697D01* +X464971Y259834D01* +X466606Y261469D01* +X468743Y262355D01* +X471057Y262355D01* +X473194Y261469D01* +X474829Y259834D01* +X475715Y257697D01* +X475715Y255383D01* +X474829Y253246D01* +X473194Y251611D01* +X471057Y250725D01* +X468743Y250725D01* +G37* +%LPD*% +%LPC*% +G36* +X555103Y273585D02* +X555103Y273585D01* +X552966Y274471D01* +X551331Y276106D01* +X550445Y278243D01* +X550445Y280557D01* +X551331Y282694D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278243D01* +X561189Y276106D01* +X559554Y274471D01* +X557417Y273585D01* +X555103Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X710043Y164365D02* +X710043Y164365D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716129Y173474D01* +X717015Y171337D01* +X717015Y169023D01* +X716129Y166886D01* +X714494Y165251D01* +X712357Y164365D01* +X710043Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X539863Y164365D02* +X539863Y164365D01* +X537726Y165251D01* +X536091Y166886D01* +X535205Y169023D01* +X535205Y171337D01* +X536091Y173474D01* +X537726Y175109D01* +X539863Y175995D01* +X542177Y175995D01* +X544314Y175109D01* +X545949Y173474D01* +X546835Y171337D01* +X546835Y169023D01* +X545949Y166886D01* +X544314Y165251D01* +X542177Y164365D01* +X539863Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X1159623Y161825D02* +X1159623Y161825D01* +X1157486Y162711D01* +X1155851Y164346D01* +X1154965Y166483D01* +X1154965Y168797D01* +X1155851Y170934D01* +X1157486Y172569D01* +X1159623Y173455D01* +X1161937Y173455D01* +X1164074Y172569D01* +X1165709Y170934D01* +X1166595Y168797D01* +X1166595Y166483D01* +X1165709Y164346D01* +X1164074Y162711D01* +X1161937Y161825D01* +X1159623Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X887843Y159285D02* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883185Y163943D01* +X883185Y166257D01* +X884071Y168394D01* +X885706Y170029D01* +X887843Y170915D01* +X890157Y170915D01* +X892294Y170029D01* +X893929Y168394D01* +X894815Y166257D01* +X894815Y163943D01* +X893929Y161806D01* +X892294Y160171D01* +X890157Y159285D01* +X887843Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X527163Y75465D02* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +G37* +%LPD*% +%LPC*% +G36* +X854823Y42445D02* +X854823Y42445D01* +X852686Y43331D01* +X851051Y44966D01* +X850165Y47103D01* +X850165Y49417D01* +X851051Y51554D01* +X852686Y53189D01* +X854823Y54075D01* +X857137Y54075D01* +X859274Y53189D01* +X860909Y51554D01* +X861795Y49417D01* +X861795Y47103D01* +X860909Y44966D01* +X859274Y43331D01* +X857137Y42445D01* +X854823Y42445D01* +G37* +%LPD*% +%LPC*% +G36* +X501643Y157094D02* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X496985Y161752D01* +X496985Y164065D01* +X497871Y166203D01* +X499506Y167838D01* +X501643Y168724D01* +X503957Y168724D01* +X506094Y167838D01* +X507729Y166203D01* +X508615Y164065D01* +X508615Y161752D01* +X507729Y159615D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +G37* +%LPD*% +%LPC*% +G36* +X758303Y154205D02* +X758303Y154205D01* +X756166Y155091D01* +X754531Y156726D01* +X753645Y158863D01* +X753645Y161177D01* +X754531Y163314D01* +X756166Y164949D01* +X758303Y165835D01* +X760617Y165835D01* +X762754Y164949D01* +X764389Y163314D01* +X765275Y161177D01* +X765275Y158863D01* +X764389Y156726D01* +X762754Y155091D01* +X760617Y154205D01* +X758303Y154205D01* +G37* +%LPD*% +%LPC*% +G36* +X702972Y152214D02* +X702972Y152214D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X699199Y161323D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707423Y162958D01* +X709058Y161323D01* +X709944Y159185D01* +X709944Y156872D01* +X709058Y154735D01* +X707423Y153099D01* +X705285Y152214D01* +X702972Y152214D01* +G37* +%LPD*% +%LPC*% +G36* +X547483Y253265D02* +X547483Y253265D01* +X545346Y254151D01* +X543711Y255786D01* +X542825Y257923D01* +X542825Y260237D01* +X543711Y262374D01* +X545346Y264009D01* +X547483Y264895D01* +X549797Y264895D01* +X551934Y264009D01* +X553569Y262374D01* +X554455Y260237D01* +X554455Y257923D01* +X553569Y255786D01* +X551934Y254151D01* +X549797Y253265D01* +X547483Y253265D01* +G37* +%LPD*% +%LPC*% +G36* +X1141843Y149125D02* +X1141843Y149125D01* +X1139706Y150011D01* +X1138071Y151646D01* +X1137185Y153783D01* +X1137185Y156097D01* +X1138071Y158234D01* +X1139706Y159869D01* +X1141843Y160755D01* +X1144157Y160755D01* +X1146294Y159869D01* +X1147929Y158234D01* +X1148815Y156097D01* +X1148815Y153783D01* +X1147929Y151646D01* +X1146294Y150011D01* +X1144157Y149125D01* +X1141843Y149125D01* +G37* +%LPD*% +%LPC*% +G36* +X666863Y149099D02* +X666863Y149099D01* +X664726Y149985D01* +X663091Y151620D01* +X662205Y153757D01* +X662205Y156071D01* +X663091Y158208D01* +X664726Y159843D01* +X666863Y160729D01* +X669177Y160729D01* +X671314Y159843D01* +X672949Y158208D01* +X673835Y156071D01* +X673835Y153757D01* +X672949Y151620D01* +X671314Y149985D01* +X669177Y149099D01* +X666863Y149099D01* +G37* +%LPD*% +%LPC*% +G36* +X847203Y146585D02* +X847203Y146585D01* +X845066Y147471D01* +X843431Y149106D01* +X842545Y151243D01* +X842545Y153557D01* +X843431Y155694D01* +X845066Y157329D01* +X847203Y158215D01* +X849517Y158215D01* +X851654Y157329D01* +X853289Y155694D01* +X854175Y153557D01* +X854175Y151243D01* +X853289Y149106D01* +X851654Y147471D01* +X849517Y146585D01* +X847203Y146585D01* +G37* +%LPD*% +%LPC*% +G36* +X450798Y286120D02* +X450798Y286120D01* +X448661Y287005D01* +X447025Y288641D01* +X446140Y290778D01* +X446140Y293091D01* +X447025Y295228D01* +X448661Y296864D01* +X450798Y297749D01* +X453111Y297749D01* +X455248Y296864D01* +X456884Y295228D01* +X457769Y293091D01* +X457769Y290778D01* +X456884Y288641D01* +X455248Y287005D01* +X453111Y286120D01* +X450798Y286120D01* +G37* +%LPD*% +%LPC*% +G36* +X1245983Y111025D02* +X1245983Y111025D01* +X1243846Y111911D01* +X1242211Y113546D01* +X1241325Y115683D01* +X1241325Y117997D01* +X1242211Y120134D01* +X1243846Y121769D01* +X1245983Y122655D01* +X1248297Y122655D01* +X1250434Y121769D01* +X1252069Y120134D01* +X1252955Y117997D01* +X1252955Y115683D01* +X1252069Y113546D01* +X1250434Y111911D01* +X1248297Y111025D01* +X1245983Y111025D01* +G37* +%LPD*% +%LPC*% +G36* +X1121523Y141505D02* +X1121523Y141505D01* +X1119386Y142391D01* +X1117751Y144026D01* +X1116865Y146163D01* +X1116865Y148477D01* +X1117751Y150614D01* +X1119386Y152249D01* +X1121523Y153135D01* +X1123837Y153135D01* +X1125974Y152249D01* +X1127609Y150614D01* +X1128495Y148477D01* +X1128495Y146163D01* +X1127609Y144026D01* +X1125974Y142391D01* +X1123837Y141505D01* +X1121523Y141505D01* +G37* +%LPD*% +%LPC*% +G36* +X1220991Y116105D02* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218854Y126849D01* +X1220991Y127735D01* +X1223305Y127735D01* +X1225442Y126849D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +G37* +%LPD*% +%LPC*% +G36* +X542403Y128805D02* +X542403Y128805D01* +X540266Y129691D01* +X538631Y131326D01* +X537745Y133463D01* +X537745Y135777D01* +X538631Y137914D01* +X540266Y139549D01* +X542403Y140435D01* +X544717Y140435D01* +X546854Y139549D01* +X548489Y137914D01* +X549375Y135777D01* +X549375Y133463D01* +X548489Y131326D01* +X546854Y129691D01* +X544717Y128805D01* +X542403Y128805D01* +G37* +%LPD*% +%LPC*% +G36* +X1154543Y260885D02* +X1154543Y260885D01* +X1152406Y261771D01* +X1150771Y263406D01* +X1149885Y265543D01* +X1149885Y267857D01* +X1150771Y269994D01* +X1152406Y271629D01* +X1154543Y272515D01* +X1156857Y272515D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265543D01* +X1160629Y263406D01* +X1158994Y261771D01* +X1156857Y260885D01* +X1154543Y260885D01* +G37* +%LPD*% +%LPC*% +G36* +X1164703Y271045D02* +X1164703Y271045D01* +X1162566Y271931D01* +X1160931Y273566D01* +X1160045Y275703D01* +X1160045Y278017D01* +X1160931Y280154D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275703D01* +X1170789Y273566D01* +X1169154Y271931D01* +X1167017Y271045D01* +X1164703Y271045D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751214Y131738D01* +X753268Y132589D01* +X755492Y132589D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X1220628Y93471D02* +X1220628Y93471D01* +X1218574Y94322D01* +X1217002Y95894D01* +X1216151Y97948D01* +X1216151Y100172D01* +X1217002Y102226D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X1004728Y289051D02* +X1004728Y289051D01* +X1002674Y289902D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009006Y289902D01* +X1006952Y289051D01* +X1004728Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X875188Y245871D02* +X875188Y245871D01* +X873134Y246722D01* +X871562Y248294D01* +X870711Y250348D01* +X870711Y252572D01* +X871562Y254626D01* +X873134Y256198D01* +X875188Y257049D01* +X877412Y257049D01* +X879466Y256198D01* +X881038Y254626D01* +X881889Y252572D01* +X881889Y250348D01* +X881038Y248294D01* +X879466Y246722D01* +X877412Y245871D01* +X875188Y245871D01* +G37* +%LPD*% +%LPC*% +G36* +X1245012Y159511D02* +X1245012Y159511D01* +X1242958Y160362D01* +X1241386Y161934D01* +X1240535Y163988D01* +X1240535Y166212D01* +X1241386Y168266D01* +X1242958Y169838D01* +X1245012Y170689D01* +X1247236Y170689D01* +X1249290Y169838D01* +X1250862Y168266D01* +X1251713Y166212D01* +X1251713Y163988D01* +X1250862Y161934D01* +X1249290Y160362D01* +X1247236Y159511D01* +X1245012Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y126268D01* +X261933Y126140D01* +X263750Y125549D01* +X265453Y124682D01* +X266999Y123558D01* +X268350Y122207D01* +X269473Y120661D01* +X270341Y118958D01* +X270931Y117141D01* +X271060Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y283768D01* +X261933Y283640D01* +X263750Y283049D01* +X265453Y282182D01* +X266999Y281058D01* +X268350Y279707D01* +X269473Y278161D01* +X270341Y276458D01* +X270931Y274641D01* +X271060Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X271060Y269767D01* +X270931Y268955D01* +X270341Y267137D01* +X269473Y265435D01* +X268350Y263889D01* +X266999Y262538D01* +X265453Y261414D01* +X263750Y260547D01* +X261933Y259956D01* +X261121Y259828D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y273829D02* +X247119Y273829D01* +X247248Y274641D01* +X247838Y276458D01* +X248706Y278161D01* +X249829Y279707D01* +X251180Y281058D01* +X252726Y282182D01* +X254429Y283049D01* +X256247Y283640D01* +X257058Y283768D01* +X257058Y273829D01* +X247119Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y116329D02* +X247119Y116329D01* +X247248Y117141D01* +X247838Y118958D01* +X248706Y120661D01* +X249829Y122207D01* +X251180Y123558D01* +X252726Y124682D01* +X254429Y125549D01* +X256247Y126140D01* +X257058Y126268D01* +X257058Y116329D01* +X247119Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y112267D02* +X261121Y112267D01* +X271060Y112267D01* +X270931Y111455D01* +X270341Y109637D01* +X269473Y107935D01* +X268350Y106389D01* +X266999Y105038D01* +X265453Y103914D01* +X263750Y103047D01* +X261933Y102456D01* +X261121Y102328D01* +X261121Y112267D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y102456D02* +X256247Y102456D01* +X254429Y103047D01* +X252726Y103914D01* +X251180Y105038D01* +X249829Y106389D01* +X248706Y107935D01* +X247838Y109637D01* +X247248Y111455D01* +X247119Y112267D01* +X257058Y112267D01* +X257058Y102328D01* +X256247Y102456D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y259956D02* +X256247Y259956D01* +X254429Y260547D01* +X252726Y261414D01* +X251180Y262538D01* +X249829Y263889D01* +X248706Y265435D01* +X247838Y267137D01* +X247248Y268955D01* +X247119Y269767D01* +X257058Y269767D01* +X257058Y259828D01* +X256247Y259956D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y37549D01* +X402640Y37460D01* +X404297Y36922D01* +X405848Y36131D01* +X407257Y35108D01* +X408488Y33877D01* +X409511Y32468D01* +X410302Y30917D01* +X410840Y29260D01* +X410929Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y37549D01* +X974140Y37460D01* +X975797Y36922D01* +X977348Y36131D01* +X978757Y35108D01* +X979988Y33877D01* +X981011Y32468D01* +X981802Y30917D01* +X982340Y29260D01* +X982429Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y24639D02* +X402081Y24639D01* +X410929Y24639D01* +X410840Y24080D01* +X410302Y22423D01* +X409511Y20872D01* +X408488Y19463D01* +X407257Y18232D01* +X405848Y17209D01* +X404297Y16418D01* +X402640Y15880D01* +X402081Y15791D01* +X402081Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X960671Y28701D02* +X960671Y28701D01* +X960760Y29260D01* +X961298Y30917D01* +X962089Y32468D01* +X963112Y33877D01* +X964343Y35108D01* +X965752Y36131D01* +X967303Y36922D01* +X968960Y37460D01* +X969519Y37549D01* +X969519Y28701D01* +X960671Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y24639D02* +X973581Y24639D01* +X982429Y24639D01* +X982340Y24080D01* +X981802Y22423D01* +X981011Y20872D01* +X979988Y19463D01* +X978757Y18232D01* +X977348Y17209D01* +X975797Y16418D01* +X974140Y15880D01* +X973581Y15791D01* +X973581Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X389171Y28701D02* +X389171Y28701D01* +X389260Y29260D01* +X389798Y30917D01* +X390589Y32468D01* +X391612Y33877D01* +X392843Y35108D01* +X394252Y36131D01* +X395803Y36922D01* +X397460Y37460D01* +X398019Y37549D01* +X398019Y28701D01* +X389171Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X968960Y15880D02* +X968960Y15880D01* +X967303Y16418D01* +X965752Y17209D01* +X964343Y18232D01* +X963112Y19463D01* +X962089Y20872D01* +X961298Y22423D01* +X960760Y24080D01* +X960671Y24639D01* +X969519Y24639D01* +X969519Y15791D01* +X968960Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X397460Y15880D02* +X397460Y15880D01* +X395803Y16418D01* +X394252Y17209D01* +X392843Y18232D01* +X391612Y19463D01* +X390589Y20872D01* +X389798Y22423D01* +X389260Y24080D01* +X389171Y24639D01* +X398019Y24639D01* +X398019Y15791D01* +X397460Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y22351D02* +X700531Y22351D01* +X700531Y29240D01* +X701167Y29113D01* +X702832Y28424D01* +X704330Y27423D01* +X705603Y26150D01* +X706604Y24652D01* +X707293Y22987D01* +X707420Y22351D01* +X700531Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y22351D02* +X725931Y22351D01* +X725931Y29240D01* +X726567Y29113D01* +X728232Y28424D01* +X729730Y27423D01* +X731003Y26150D01* +X732004Y24652D01* +X732693Y22987D01* +X732820Y22351D01* +X725931Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y18289D02* +X725931Y18289D01* +X732820Y18289D01* +X732693Y17653D01* +X732004Y15988D01* +X731003Y14490D01* +X729730Y13217D01* +X728232Y12216D01* +X726567Y11527D01* +X725931Y11400D01* +X725931Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X689580Y22351D02* +X689580Y22351D01* +X689707Y22987D01* +X690396Y24652D01* +X691397Y26150D01* +X692670Y27423D01* +X694168Y28424D01* +X695833Y29113D01* +X696469Y29240D01* +X696469Y22351D01* +X689580Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X714980Y22351D02* +X714980Y22351D01* +X715107Y22987D01* +X715796Y24652D01* +X716797Y26150D01* +X718070Y27423D01* +X719568Y28424D01* +X721233Y29113D01* +X721869Y29240D01* +X721869Y22351D01* +X714980Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y18289D02* +X700531Y18289D01* +X707420Y18289D01* +X707293Y17653D01* +X706604Y15988D01* +X705603Y14490D01* +X704330Y13217D01* +X702832Y12216D01* +X701167Y11527D01* +X700531Y11400D01* +X700531Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X695833Y11527D02* +X695833Y11527D01* +X694168Y12216D01* +X692670Y13217D01* +X691397Y14490D01* +X690396Y15988D01* +X689707Y17653D01* +X689580Y18289D01* +X696469Y18289D01* +X696469Y11400D01* +X695833Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X721233Y11527D02* +X721233Y11527D01* +X719568Y12216D01* +X718070Y13217D01* +X716797Y14490D01* +X715796Y15988D01* +X715107Y17653D01* +X714980Y18289D01* +X721869Y18289D01* +X721869Y11400D01* +X721233Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y264614D01* +X182102Y264521D01* +X183661Y263875D01* +X185063Y262938D01* +X186256Y261745D01* +X187194Y260342D01* +X187839Y258784D01* +X187932Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X187932Y254254D01* +X187839Y253787D01* +X187194Y252228D01* +X186256Y250826D01* +X185063Y249633D01* +X183661Y248695D01* +X182102Y248050D01* +X181635Y247957D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X171275Y258317D02* +X171275Y258317D01* +X171368Y258784D01* +X172014Y260342D01* +X172951Y261745D01* +X174144Y262938D01* +X175547Y263875D01* +X177105Y264521D01* +X177572Y264614D01* +X177572Y258317D01* +X171275Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X177105Y248050D02* +X177105Y248050D01* +X175547Y248695D01* +X174144Y249633D01* +X172951Y250826D01* +X172014Y252228D01* +X171368Y253787D01* +X171275Y254254D01* +X177572Y254254D01* +X177572Y247957D01* +X177105Y248050D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y293389D02* +X139619Y293389D01* +X139619Y298602D01* +X140277Y298471D01* +X141479Y297973D01* +X142560Y297250D01* +X143480Y296330D01* +X144203Y295249D01* +X144701Y294047D01* +X144832Y293389D01* +X139619Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y359389D02* +X139619Y359389D01* +X139619Y364602D01* +X140277Y364471D01* +X141479Y363973D01* +X142560Y363250D01* +X143480Y362330D01* +X144203Y361249D01* +X144701Y360047D01* +X144832Y359389D01* +X139619Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y359389D02* +X131868Y359389D01* +X131999Y360047D01* +X132497Y361249D01* +X133220Y362330D01* +X134140Y363250D01* +X135221Y363973D01* +X136423Y364471D01* +X137081Y364602D01* +X137081Y359389D01* +X131868Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y290851D02* +X139619Y290851D01* +X144832Y290851D01* +X144701Y290193D01* +X144203Y288991D01* +X143480Y287910D01* +X142560Y286990D01* +X141479Y286267D01* +X140277Y285769D01* +X139619Y285638D01* +X139619Y290851D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y293389D02* +X131868Y293389D01* +X131999Y294047D01* +X132497Y295249D01* +X133220Y296330D01* +X134140Y297250D01* +X135221Y297973D01* +X136423Y298471D01* +X137081Y298602D01* +X137081Y293389D01* +X131868Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y356851D02* +X139619Y356851D01* +X144832Y356851D01* +X144701Y356193D01* +X144203Y354991D01* +X143480Y353910D01* +X142560Y352990D01* +X141479Y352267D01* +X140277Y351769D01* +X139619Y351638D01* +X139619Y356851D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y285769D02* +X136423Y285769D01* +X135221Y286267D01* +X134140Y286990D01* +X133220Y287910D01* +X132497Y288991D01* +X131999Y290193D01* +X131868Y290851D01* +X137081Y290851D01* +X137081Y285638D01* +X136423Y285769D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y351769D02* +X136423Y351769D01* +X135221Y352267D01* +X134140Y352990D01* +X133220Y353910D01* +X132497Y354991D01* +X131999Y356193D01* +X131868Y356851D01* +X137081Y356851D01* +X137081Y351638D01* +X136423Y351769D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X971549Y26669D02* +X971549Y26669D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y26669D01* +X971549Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X698499Y20319D02* +X698499Y20319D01* +X698499Y20321D01* +X698501Y20321D01* +X698501Y20319D01* +X698499Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y114297D02* +X259089Y114297D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y114297D01* +X259089Y114297D01* +G37* +%LPD*% +%LPC*% +G36* +X400049Y26669D02* +X400049Y26669D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y26669D01* +X400049Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X723899Y20319D02* +X723899Y20319D01* +X723899Y20321D01* +X723901Y20321D01* +X723901Y20319D01* +X723899Y20319D01* +G37* +%LPD*% +D10* +X138350Y358120D03* +X138350Y292120D03* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +X292090Y237498D03* +D12* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D13* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D14* +X800100Y20320D03* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +X749300Y78740D03* +X723900Y78740D03* +D15* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +X180340Y365816D03* +X563880Y76200D03* +X464820Y228600D03* +X424180Y259080D03* +X462280Y147320D03* +X469900Y167640D03* +X500380Y134620D03* +X556260Y180340D03* +X1206500Y304800D03* +X1051560Y76200D03* +X873760Y66040D03* +X830580Y83820D03* +X886460Y149860D03* +X939800Y246380D03* +X960120Y121920D03* +X1082040Y106680D03* +X1127760Y198120D03* +X657860Y142240D03* +X861060Y274320D03* +X952500Y297180D03* +X952500Y281940D03* +X960120Y246380D03* +X1071880Y302260D03* +X177800Y309880D03* +X347980Y172720D03* +X497840Y269240D03* +D16* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +X993140Y294640D03* +X866024Y248804D03* +D15* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X370840Y342900D03* +X370840Y360680D03* +X226060Y358140D03* +X238760Y292292D03* +X276860Y312420D03* +X556260Y83820D03* +X713740Y274320D03* +X802640Y274320D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X640080Y251460D03* +X1183640Y205740D03* +X1125220Y281940D03* +X1270000Y157480D03* +X1170940Y106680D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1193800Y167640D03* +X1074420Y208280D03* +X1193800Y279400D03* +X518160Y239494D03* +X1206500Y203200D03* +X563880Y211610D03* +X502800Y162909D03* +X1023620Y175260D03* +X1206500Y241300D03* +X499816Y231140D03* +X1206500Y218440D03* +X490188Y231172D03* +X1206500Y279400D03* +X482600Y238760D03* +X1074420Y190500D03* +X566332Y202014D03* +X1074420Y177800D03* +X581660Y203200D03* +X1082040Y167640D03* +X553720Y203200D03* +X1165860Y276860D03* +X429260Y350596D03* +X1155700Y266700D03* +X421640Y342900D03* +X1222148Y121920D03* +X905760Y163580D03* +X198244Y333022D03* +X176511Y323831D03* +X982980Y172720D03* +X759460Y160020D03* +X919480Y144780D03* +X1143000Y154940D03* +X972820Y165100D03* +X924560Y175260D03* +X995680Y182880D03* +X711200Y170180D03* +X909320Y175260D03* +X704129Y158029D03* +X1122680Y147320D03* +X889000Y165100D03* +X1160780Y167640D03* +X906780Y142240D03* +X1092560Y249710D03* +X548640Y259080D03* +D16* +X443114Y186806D03* +X449580Y180340D03* +X449580Y205740D03* +X443114Y199274D03* +D15* +X1206500Y180340D03* +X1023620Y165100D03* +X406400Y317500D03* +X855980Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +D16* +X1221740Y99060D03* +X1246124Y165100D03* +X876300Y251460D03* +X1178560Y289560D03* +X1005840Y294640D03* +X754380Y127000D03* +D15* +X386080Y345440D03* +X226060Y347980D03* +X1247140Y116840D03* +X417137Y332740D03* +X451955Y291935D03* +X190500Y342900D03* +D17* +X490605Y121876D03* +D15* +X556260Y279400D03* +X533400Y279400D03* +X528320Y81280D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_inner_l3.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_inner_l3.gbr new file mode 100644 index 0000000000..6b7925017f --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_inner_l3.gbr @@ -0,0 +1,4326 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INCopper Layer 2*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.812800*% +%ADD11C,1.204800*% +%ADD12C,1.920000*% +%ADD13C,1.704341*% +%ADD14C,1.320800*% +%ADD15C,0.756400*% +%ADD16C,0.203200*% +%ADD17C,0.711200*% +%ADD18C,0.956400*% + +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X448468Y174751D02* +X448468Y174751D01* +X446414Y175602D01* +X444842Y177174D01* +X443991Y179228D01* +X443991Y180202D01* +X443983Y180260D01* +X443985Y180318D01* +X443963Y180400D01* +X443951Y180483D01* +X443928Y180537D01* +X443913Y180593D01* +X443870Y180666D01* +X443835Y180743D01* +X443797Y180787D01* +X443768Y180838D01* +X443706Y180895D01* +X443652Y180960D01* +X443603Y180992D01* +X443560Y181032D01* +X443485Y181071D01* +X443415Y181117D01* +X443359Y181135D01* +X443307Y181162D01* +X443239Y181173D01* +X443144Y181203D01* +X443044Y181206D01* +X442976Y181217D01* +X442003Y181217D01* +X439948Y182068D01* +X438376Y183640D01* +X437525Y185694D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y200386D01* +X438376Y202440D01* +X439948Y204012D01* +X442003Y204863D01* +X442976Y204863D01* +X443034Y204871D01* +X443092Y204870D01* +X443174Y204891D01* +X443258Y204903D01* +X443311Y204927D01* +X443367Y204941D01* +X443440Y204984D01* +X443517Y205019D01* +X443562Y205057D01* +X443612Y205087D01* +X443670Y205148D01* +X443734Y205203D01* +X443766Y205251D01* +X443806Y205294D01* +X443845Y205369D01* +X443892Y205439D01* +X443909Y205495D01* +X443936Y205547D01* +X443947Y205615D01* +X443977Y205710D01* +X443980Y205810D01* +X443991Y205878D01* +X443991Y206852D01* +X444842Y208906D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X969451Y79616D02* +X969451Y79616D01* +X965571Y81222D01* +X962602Y84191D01* +X960996Y88071D01* +X960996Y92269D01* +X962602Y96149D01* +X965571Y99118D01* +X969451Y100724D01* +X973649Y100724D01* +X977529Y99118D01* +X980498Y96149D01* +X982104Y92269D01* +X982104Y88071D01* +X980498Y84191D01* +X977529Y81222D01* +X973649Y79616D01* +X969451Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X461451Y47866D02* +X461451Y47866D01* +X457571Y49472D01* +X454602Y52441D01* +X452996Y56321D01* +X452996Y60519D01* +X454602Y64399D01* +X457571Y67368D01* +X461451Y68974D01* +X465649Y68974D01* +X469529Y67368D01* +X472498Y64399D01* +X474104Y60519D01* +X474104Y56321D01* +X472498Y52441D01* +X469529Y49472D01* +X465649Y47866D01* +X461451Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X397951Y79616D02* +X397951Y79616D01* +X394071Y81222D01* +X391102Y84191D01* +X389496Y88071D01* +X389496Y92269D01* +X391102Y96149D01* +X394071Y99118D01* +X397951Y100724D01* +X402149Y100724D01* +X406029Y99118D01* +X408998Y96149D01* +X410604Y92269D01* +X410604Y88071D01* +X408998Y84191D01* +X406029Y81222D01* +X402149Y79616D01* +X397951Y79616D01* +G37* +%LPD*% +%LPC*% +G36* +X905951Y47866D02* +X905951Y47866D01* +X902071Y49472D01* +X899102Y52441D01* +X897496Y56321D01* +X897496Y60519D01* +X899102Y64399D01* +X902071Y67368D01* +X905951Y68974D01* +X910149Y68974D01* +X914029Y67368D01* +X916998Y64399D01* +X918604Y60519D01* +X918604Y56321D01* +X916998Y52441D01* +X914029Y49472D01* +X910149Y47866D01* +X905951Y47866D01* +G37* +%LPD*% +%LPC*% +G36* +X1080883Y161825D02* +X1080883Y161825D01* +X1078746Y162711D01* +X1077111Y164346D01* +X1076225Y166483D01* +X1076225Y168797D01* +X1077016Y170706D01* +X1077023Y170734D01* +X1077037Y170760D01* +X1077059Y170871D01* +X1077087Y170981D01* +X1077086Y171010D01* +X1077092Y171039D01* +X1077082Y171152D01* +X1077079Y171265D01* +X1077070Y171293D01* +X1077067Y171322D01* +X1077027Y171428D01* +X1076992Y171536D01* +X1076976Y171560D01* +X1076965Y171587D01* +X1076897Y171678D01* +X1076834Y171772D01* +X1076811Y171791D01* +X1076794Y171814D01* +X1076703Y171882D01* +X1076616Y171955D01* +X1076589Y171967D01* +X1076566Y171984D01* +X1076460Y172024D01* +X1076356Y172070D01* +X1076327Y172074D01* +X1076300Y172085D01* +X1076187Y172094D01* +X1076075Y172109D01* +X1076046Y172105D01* +X1076017Y172107D01* +X1075940Y172090D01* +X1075794Y172069D01* +X1075737Y172043D01* +X1075689Y172032D01* +X1075577Y171985D01* +X1073263Y171985D01* +X1071126Y172871D01* +X1069491Y174506D01* +X1068605Y176643D01* +X1068605Y178957D01* +X1069491Y181094D01* +X1071126Y182729D01* +X1072291Y183212D01* +X1072316Y183227D01* +X1072344Y183236D01* +X1072439Y183299D01* +X1072536Y183357D01* +X1072556Y183378D01* +X1072581Y183394D01* +X1072653Y183481D01* +X1072731Y183563D01* +X1072745Y183589D01* +X1072764Y183612D01* +X1072810Y183715D01* +X1072861Y183816D01* +X1072867Y183845D01* +X1072879Y183872D01* +X1072895Y183984D01* +X1072916Y184095D01* +X1072914Y184124D01* +X1072918Y184153D01* +X1072902Y184265D01* +X1072892Y184378D01* +X1072881Y184405D01* +X1072877Y184435D01* +X1072831Y184538D01* +X1072790Y184643D01* +X1072772Y184667D01* +X1072760Y184694D01* +X1072687Y184780D01* +X1072618Y184870D01* +X1072595Y184888D01* +X1072576Y184910D01* +X1072509Y184952D01* +X1072391Y185040D01* +X1072332Y185062D01* +X1072291Y185088D01* +X1071126Y185571D01* +X1069491Y187206D01* +X1068605Y189343D01* +X1068605Y191657D01* +X1069491Y193794D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076077Y184688D01* +X1076031Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183894D01* +X1075963Y183866D01* +X1076009Y183763D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173853D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080723Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085334Y172569D01* +X1086969Y170934D01* +X1087855Y168797D01* +X1087855Y166483D01* +X1086969Y164346D01* +X1085334Y162711D01* +X1083197Y161825D01* +X1080883Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X565175Y196199D02* +X565175Y196199D01* +X563038Y197085D01* +X561402Y198720D01* +X560718Y200372D01* +X560703Y200397D01* +X560694Y200425D01* +X560631Y200519D01* +X560574Y200616D01* +X560552Y200637D01* +X560536Y200661D01* +X560449Y200734D01* +X560367Y200812D01* +X560341Y200825D01* +X560318Y200844D01* +X560215Y200890D01* +X560114Y200942D01* +X560085Y200948D01* +X560059Y200959D01* +X559946Y200975D01* +X559835Y200997D01* +X559806Y200994D01* +X559777Y200998D01* +X559665Y200982D01* +X559552Y200972D01* +X559525Y200962D01* +X559496Y200958D01* +X559392Y200911D01* +X559287Y200870D01* +X559263Y200853D01* +X559237Y200841D01* +X559150Y200767D01* +X559060Y200699D01* +X559042Y200675D01* +X559020Y200656D01* +X558979Y200590D01* +X558890Y200471D01* +X558868Y200413D01* +X558842Y200372D01* +X558649Y199906D01* +X557014Y198271D01* +X554877Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548791Y199906D01* +X547905Y202043D01* +X547905Y204357D01* +X548791Y206494D01* +X550426Y208129D01* +X552563Y209015D01* +X554877Y209015D01* +X557181Y208060D01* +X557209Y208053D01* +X557235Y208040D01* +X557346Y208018D01* +X557456Y207989D01* +X557485Y207990D01* +X557514Y207985D01* +X557627Y207994D01* +X557740Y207998D01* +X557768Y208007D01* +X557797Y208009D01* +X557903Y208050D01* +X558011Y208084D01* +X558035Y208101D01* +X558063Y208111D01* +X558153Y208179D01* +X558247Y208243D01* +X558266Y208265D01* +X558289Y208283D01* +X558357Y208374D01* +X558430Y208460D01* +X558442Y208487D01* +X558459Y208510D01* +X558499Y208617D01* +X558545Y208720D01* +X558549Y208749D01* +X558560Y208776D01* +X558569Y208889D01* +X558584Y209001D01* +X558580Y209031D01* +X558582Y209060D01* +X558565Y209136D01* +X558544Y209283D01* +X558518Y209340D01* +X558507Y209387D01* +X558065Y210453D01* +X558065Y212767D01* +X558951Y214904D01* +X560586Y216539D01* +X562723Y217425D01* +X565037Y217425D01* +X567174Y216539D01* +X568809Y214904D01* +X569695Y212767D01* +X569695Y210453D01* +X568832Y208371D01* +X568818Y208314D01* +X568794Y208261D01* +X568782Y208177D01* +X568761Y208096D01* +X568763Y208037D01* +X568755Y207979D01* +X568767Y207896D01* +X568769Y207812D01* +X568787Y207756D01* +X568796Y207698D01* +X568830Y207621D01* +X568856Y207541D01* +X568889Y207492D01* +X568913Y207439D01* +X568967Y207375D01* +X569014Y207305D01* +X569059Y207267D01* +X569097Y207222D01* +X569156Y207186D01* +X569232Y207122D01* +X569323Y207081D01* +X569382Y207045D01* +X569626Y206943D01* +X571261Y205308D01* +X572146Y203171D01* +X572146Y200857D01* +X571261Y198720D01* +X569626Y197085D01* +X567488Y196199D01* +X565175Y196199D01* +G37* +%LPD*% +%LPC*% +G36* +X415980Y326925D02* +X415980Y326925D01* +X413843Y327811D01* +X412207Y329446D01* +X411322Y331583D01* +X411322Y333897D01* +X412207Y336034D01* +X413843Y337669D01* +X416037Y338578D01* +X416088Y338608D01* +X416142Y338629D01* +X416210Y338680D01* +X416282Y338723D01* +X416322Y338765D01* +X416369Y338801D01* +X416420Y338868D01* +X416477Y338930D01* +X416504Y338982D01* +X416539Y339028D01* +X416569Y339107D01* +X416608Y339182D01* +X416619Y339240D01* +X416640Y339294D01* +X416646Y339378D01* +X416663Y339461D01* +X416658Y339520D01* +X416662Y339578D01* +X416647Y339645D01* +X416638Y339744D01* +X416602Y339838D01* +X416587Y339905D01* +X415825Y341743D01* +X415825Y344057D01* +X416711Y346194D01* +X418346Y347829D01* +X420483Y348715D01* +X422430Y348715D01* +X422488Y348723D01* +X422546Y348721D01* +X422628Y348743D01* +X422712Y348755D01* +X422765Y348778D01* +X422821Y348793D01* +X422894Y348836D01* +X422971Y348871D01* +X423016Y348909D01* +X423066Y348938D01* +X423124Y349000D01* +X423188Y349054D01* +X423220Y349103D01* +X423260Y349146D01* +X423299Y349221D01* +X423346Y349291D01* +X423363Y349347D01* +X423390Y349399D01* +X423401Y349467D01* +X423431Y349562D01* +X423434Y349662D01* +X423445Y349730D01* +X423445Y351753D01* +X424331Y353890D01* +X425966Y355525D01* +X428103Y356411D01* +X430417Y356411D01* +X432554Y355525D01* +X434189Y353890D01* +X435075Y351753D01* +X435075Y349439D01* +X434189Y347302D01* +X432554Y345667D01* +X430417Y344781D01* +X428470Y344781D01* +X428412Y344773D01* +X428354Y344775D01* +X428272Y344753D01* +X428188Y344741D01* +X428135Y344718D01* +X428079Y344703D01* +X428006Y344660D01* +X427929Y344625D01* +X427884Y344587D01* +X427834Y344558D01* +X427776Y344496D01* +X427712Y344442D01* +X427680Y344393D01* +X427640Y344350D01* +X427601Y344275D01* +X427554Y344205D01* +X427537Y344149D01* +X427510Y344097D01* +X427499Y344029D01* +X427469Y343934D01* +X427466Y343834D01* +X427455Y343766D01* +X427455Y341743D01* +X426569Y339606D01* +X424934Y337971D01* +X422740Y337062D01* +X422689Y337032D01* +X422635Y337011D01* +X422567Y336960D01* +X422495Y336917D01* +X422455Y336875D01* +X422408Y336839D01* +X422357Y336772D01* +X422300Y336710D01* +X422273Y336658D01* +X422238Y336612D01* +X422208Y336533D01* +X422169Y336458D01* +X422158Y336400D01* +X422137Y336346D01* +X422131Y336261D01* +X422114Y336179D01* +X422119Y336121D01* +X422115Y336062D01* +X422130Y335995D01* +X422139Y335896D01* +X422175Y335803D01* +X422190Y335735D01* +X422952Y333897D01* +X422952Y331583D01* +X422066Y329446D01* +X420431Y327811D01* +X418293Y326925D01* +X415980Y326925D01* +G37* +%LPD*% +%LPC*% +G36* +X498659Y225325D02* +X498659Y225325D01* +X496522Y226211D01* +X495704Y227028D01* +X495658Y227064D01* +X495617Y227106D01* +X495545Y227149D01* +X495477Y227199D01* +X495423Y227220D01* +X495372Y227250D01* +X495290Y227270D01* +X495212Y227301D01* +X495153Y227305D01* +X495097Y227320D01* +X495012Y227317D01* +X494928Y227324D01* +X494871Y227313D01* +X494812Y227311D01* +X494732Y227285D01* +X494649Y227268D01* +X494598Y227241D01* +X494542Y227223D01* +X494486Y227183D01* +X494397Y227137D01* +X494325Y227068D01* +X494269Y227028D01* +X493482Y226242D01* +X491345Y225357D01* +X489032Y225357D01* +X486895Y226242D01* +X485259Y227878D01* +X484374Y230015D01* +X484374Y231930D01* +X484366Y231988D01* +X484367Y232046D01* +X484346Y232128D01* +X484334Y232212D01* +X484310Y232265D01* +X484295Y232321D01* +X484252Y232394D01* +X484218Y232471D01* +X484180Y232516D01* +X484150Y232566D01* +X484088Y232624D01* +X484034Y232688D01* +X483985Y232720D01* +X483943Y232760D01* +X483868Y232799D01* +X483797Y232846D01* +X483742Y232863D01* +X483690Y232890D01* +X483621Y232901D01* +X483526Y232931D01* +X483427Y232934D01* +X483358Y232945D01* +X481443Y232945D01* +X479306Y233831D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X481443Y244575D01* +X483757Y244575D01* +X485894Y243689D01* +X487529Y242054D01* +X488415Y239917D01* +X488415Y238002D01* +X488423Y237944D01* +X488421Y237885D01* +X488443Y237804D01* +X488455Y237720D01* +X488478Y237667D01* +X488493Y237610D01* +X488536Y237538D01* +X488571Y237461D01* +X488609Y237416D01* +X488638Y237366D01* +X488700Y237308D01* +X488754Y237244D01* +X488803Y237211D01* +X488846Y237171D01* +X488921Y237133D01* +X488991Y237086D01* +X489047Y237068D01* +X489099Y237042D01* +X489167Y237030D01* +X489262Y237000D01* +X489362Y236998D01* +X489430Y236986D01* +X491345Y236986D01* +X493482Y236101D01* +X494300Y235283D01* +X494347Y235248D01* +X494387Y235206D01* +X494460Y235163D01* +X494527Y235112D01* +X494582Y235091D01* +X494632Y235062D01* +X494714Y235041D01* +X494793Y235011D01* +X494851Y235006D01* +X494908Y234992D01* +X494992Y234994D01* +X495076Y234987D01* +X495134Y234999D01* +X495192Y235001D01* +X495272Y235027D01* +X495355Y235043D01* +X495407Y235070D01* +X495463Y235088D01* +X495519Y235128D01* +X495607Y235174D01* +X495680Y235243D01* +X495736Y235283D01* +X496522Y236069D01* +X498659Y236955D01* +X500973Y236955D01* +X503110Y236069D01* +X504745Y234434D01* +X505631Y232297D01* +X505631Y229983D01* +X504745Y227846D01* +X503110Y226211D01* +X500973Y225325D01* +X498659Y225325D01* +G37* +%LPD*% +%LPC*% +G36* +X645982Y11683D02* +X645982Y11683D01* +X642808Y12998D01* +X640378Y15428D01* +X639063Y18602D01* +X639063Y22038D01* +X640378Y25212D01* +X642808Y27642D01* +X645982Y28957D01* +X649418Y28957D01* +X652592Y27642D01* +X655022Y25212D01* +X656337Y22038D01* +X656337Y18602D01* +X655022Y15428D01* +X652592Y12998D01* +X649418Y11683D01* +X645982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X620582Y11683D02* +X620582Y11683D01* +X617408Y12998D01* +X614978Y15428D01* +X613663Y18602D01* +X613663Y22038D01* +X614978Y25212D01* +X617408Y27642D01* +X620582Y28957D01* +X624018Y28957D01* +X627192Y27642D01* +X629622Y25212D01* +X630937Y22038D01* +X630937Y18602D01* +X629622Y15428D01* +X627192Y12998D01* +X624018Y11683D01* +X620582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y70103D02* +X747582Y70103D01* +X744408Y71418D01* +X741978Y73848D01* +X740663Y77022D01* +X740663Y80458D01* +X741978Y83632D01* +X744408Y86062D01* +X747582Y87377D01* +X751018Y87377D01* +X754192Y86062D01* +X756622Y83632D01* +X757937Y80458D01* +X757937Y77022D01* +X756622Y73848D01* +X754192Y71418D01* +X751018Y70103D01* +X747582Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X722182Y70103D02* +X722182Y70103D01* +X719008Y71418D01* +X716578Y73848D01* +X715263Y77022D01* +X715263Y80458D01* +X716578Y83632D01* +X719008Y86062D01* +X722182Y87377D01* +X725618Y87377D01* +X728792Y86062D01* +X731222Y83632D01* +X732537Y80458D01* +X732537Y77022D01* +X731222Y73848D01* +X728792Y71418D01* +X725618Y70103D01* +X722182Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X595182Y11683D02* +X595182Y11683D01* +X592008Y12998D01* +X589578Y15428D01* +X588263Y18602D01* +X588263Y22038D01* +X589578Y25212D01* +X592008Y27642D01* +X595182Y28957D01* +X598618Y28957D01* +X601792Y27642D01* +X604222Y25212D01* +X605537Y22038D01* +X605537Y18602D01* +X604222Y15428D01* +X601792Y12998D01* +X598618Y11683D01* +X595182Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X569782Y11683D02* +X569782Y11683D01* +X566608Y12998D01* +X564178Y15428D01* +X562863Y18602D01* +X562863Y22038D01* +X564178Y25212D01* +X566608Y27642D01* +X569782Y28957D01* +X573218Y28957D01* +X576392Y27642D01* +X578822Y25212D01* +X580137Y22038D01* +X580137Y18602D01* +X578822Y15428D01* +X576392Y12998D01* +X573218Y11683D01* +X569782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X671382Y11683D02* +X671382Y11683D01* +X668208Y12998D01* +X665778Y15428D01* +X664463Y18602D01* +X664463Y22038D01* +X665778Y25212D01* +X668208Y27642D01* +X671382Y28957D01* +X674818Y28957D01* +X677992Y27642D01* +X680422Y25212D01* +X681737Y22038D01* +X681737Y18602D01* +X680422Y15428D01* +X677992Y12998D01* +X674818Y11683D01* +X671382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y11683D02* +X747582Y11683D01* +X744408Y12998D01* +X741978Y15428D01* +X740663Y18602D01* +X740663Y22038D01* +X741978Y25212D01* +X744408Y27642D01* +X747582Y28957D01* +X751018Y28957D01* +X754192Y27642D01* +X756622Y25212D01* +X757937Y22038D01* +X757937Y18602D01* +X756622Y15428D01* +X754192Y12998D01* +X751018Y11683D01* +X747582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X798382Y11683D02* +X798382Y11683D01* +X795208Y12998D01* +X792778Y15428D01* +X791463Y18602D01* +X791463Y22038D01* +X792778Y25212D01* +X795208Y27642D01* +X798382Y28957D01* +X801818Y28957D01* +X804992Y27642D01* +X807422Y25212D01* +X808737Y22038D01* +X808737Y18602D01* +X807422Y15428D01* +X804992Y12998D01* +X801818Y11683D01* +X798382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X772982Y11683D02* +X772982Y11683D01* +X769808Y12998D01* +X767378Y15428D01* +X766063Y18602D01* +X766063Y22038D01* +X767378Y25212D01* +X769808Y27642D01* +X772982Y28957D01* +X776418Y28957D01* +X779592Y27642D01* +X782022Y25212D01* +X783337Y22038D01* +X783337Y18602D01* +X782022Y15428D01* +X779592Y12998D01* +X776418Y11683D01* +X772982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X905623Y136425D02* +X905623Y136425D01* +X903486Y137311D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X922774Y149709D01* +X924409Y148074D01* +X925295Y145937D01* +X925295Y143623D01* +X924409Y141486D01* +X922774Y139851D01* +X920637Y138965D01* +X918323Y138965D01* +X916186Y139851D01* +X914551Y141486D01* +X914548Y141492D01* +X914504Y141566D01* +X914469Y141645D01* +X914432Y141688D01* +X914404Y141737D01* +X914341Y141796D01* +X914285Y141862D01* +X914238Y141893D01* +X914197Y141932D01* +X914120Y141972D01* +X914049Y142019D01* +X913995Y142037D01* +X913944Y142063D01* +X913860Y142079D01* +X913778Y142105D01* +X913721Y142107D01* +X913665Y142118D01* +X913580Y142110D01* +X913494Y142112D01* +X913439Y142098D01* +X913382Y142093D01* +X913302Y142062D01* +X913219Y142041D01* +X913170Y142012D01* +X913117Y141991D01* +X913048Y141939D01* +X912974Y141895D01* +X912935Y141854D01* +X912890Y141820D01* +X912838Y141751D01* +X912780Y141688D01* +X912754Y141637D01* +X912720Y141592D01* +X912689Y141512D01* +X912650Y141435D01* +X912642Y141386D01* +X912619Y141326D01* +X912608Y141181D01* +X912595Y141104D01* +X912595Y141083D01* +X911709Y138946D01* +X910074Y137311D01* +X907937Y136425D01* +X905623Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X971663Y159285D02* +X971663Y159285D01* +X969526Y160171D01* +X967891Y161806D01* +X967005Y163943D01* +X967005Y166257D01* +X967891Y168394D01* +X969526Y170029D01* +X971663Y170915D01* +X973977Y170915D01* +X975886Y170124D01* +X975914Y170117D01* +X975940Y170103D01* +X976051Y170081D01* +X976161Y170053D01* +X976190Y170054D01* +X976219Y170048D01* +X976332Y170058D01* +X976445Y170061D01* +X976473Y170070D01* +X976502Y170073D01* +X976608Y170113D01* +X976716Y170148D01* +X976740Y170164D01* +X976767Y170175D01* +X976858Y170243D01* +X976952Y170306D01* +X976971Y170329D01* +X976994Y170346D01* +X977062Y170437D01* +X977135Y170524D01* +X977147Y170551D01* +X977164Y170574D01* +X977204Y170680D01* +X977250Y170784D01* +X977254Y170813D01* +X977265Y170840D01* +X977274Y170953D01* +X977289Y171065D01* +X977285Y171094D01* +X977287Y171123D01* +X977270Y171200D01* +X977249Y171346D01* +X977223Y171403D01* +X977212Y171451D01* +X977165Y171563D01* +X977165Y173877D01* +X978051Y176014D01* +X979686Y177649D01* +X981823Y178535D01* +X984137Y178535D01* +X986274Y177649D01* +X987909Y176014D01* +X988795Y173877D01* +X988795Y171563D01* +X987909Y169426D01* +X986274Y167791D01* +X984137Y166905D01* +X981823Y166905D01* +X979914Y167696D01* +X979886Y167703D01* +X979860Y167717D01* +X979749Y167739D01* +X979639Y167767D01* +X979610Y167766D01* +X979581Y167772D01* +X979468Y167762D01* +X979355Y167759D01* +X979327Y167750D01* +X979298Y167747D01* +X979192Y167707D01* +X979084Y167672D01* +X979060Y167656D01* +X979033Y167645D01* +X978942Y167577D01* +X978848Y167514D01* +X978829Y167491D01* +X978806Y167474D01* +X978738Y167383D01* +X978665Y167296D01* +X978653Y167269D01* +X978636Y167246D01* +X978596Y167140D01* +X978550Y167036D01* +X978546Y167007D01* +X978535Y166980D01* +X978526Y166867D01* +X978511Y166755D01* +X978515Y166726D01* +X978513Y166697D01* +X978530Y166620D01* +X978551Y166474D01* +X978577Y166417D01* +X978588Y166369D01* +X978635Y166257D01* +X978635Y163943D01* +X977749Y161806D01* +X976114Y160171D01* +X973977Y159285D01* +X971663Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X197087Y327207D02* +X197087Y327207D01* +X194950Y328093D01* +X193315Y329728D01* +X192429Y331865D01* +X192429Y334179D01* +X193105Y335809D01* +X193112Y335838D01* +X193126Y335864D01* +X193147Y335975D01* +X193176Y336084D01* +X193175Y336114D01* +X193181Y336143D01* +X193171Y336256D01* +X193168Y336369D01* +X193159Y336397D01* +X193156Y336426D01* +X193115Y336532D01* +X193081Y336639D01* +X193065Y336664D01* +X193054Y336691D01* +X192986Y336781D01* +X192923Y336876D01* +X192900Y336894D01* +X192882Y336918D01* +X192792Y336986D01* +X192705Y337059D01* +X192678Y337070D01* +X192655Y337088D01* +X192549Y337128D01* +X192445Y337174D01* +X192416Y337178D01* +X192389Y337188D01* +X192276Y337197D01* +X192164Y337213D01* +X192135Y337209D01* +X192105Y337211D01* +X192029Y337193D01* +X191882Y337172D01* +X191825Y337147D01* +X191778Y337136D01* +X191657Y337085D01* +X189343Y337085D01* +X187206Y337971D01* +X185571Y339606D01* +X184685Y341743D01* +X184685Y344057D01* +X185571Y346194D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195639Y340113D01* +X195632Y340084D01* +X195619Y340058D01* +X195597Y339947D01* +X195568Y339838D01* +X195569Y339808D01* +X195564Y339779D01* +X195573Y339667D01* +X195577Y339553D01* +X195585Y339525D01* +X195588Y339496D01* +X195629Y339391D01* +X195663Y339283D01* +X195680Y339258D01* +X195690Y339231D01* +X195758Y339141D01* +X195821Y339046D01* +X195844Y339028D01* +X195862Y339004D01* +X195952Y338936D01* +X196039Y338864D01* +X196066Y338852D01* +X196089Y338834D01* +X196195Y338794D01* +X196299Y338748D01* +X196328Y338744D01* +X196355Y338734D01* +X196468Y338725D01* +X196580Y338709D01* +X196609Y338713D01* +X196639Y338711D01* +X196715Y338729D01* +X196862Y338750D01* +X196919Y338776D01* +X196966Y338786D01* +X197087Y338837D01* +X199401Y338837D01* +X201538Y337951D01* +X203174Y336316D01* +X204059Y334179D01* +X204059Y331865D01* +X203174Y329728D01* +X201538Y328093D01* +X199401Y327207D01* +X197087Y327207D01* +G37* +%LPD*% +%LPC*% +G36* +X904604Y157765D02* +X904604Y157765D01* +X902467Y158650D01* +X900831Y160286D01* +X899946Y162423D01* +X899946Y164736D01* +X900831Y166873D01* +X902467Y168509D01* +X904644Y169411D01* +X904681Y169418D01* +X904793Y169434D01* +X904820Y169446D01* +X904848Y169452D01* +X904949Y169504D01* +X905052Y169550D01* +X905075Y169569D01* +X905101Y169583D01* +X905183Y169661D01* +X905269Y169734D01* +X905286Y169758D01* +X905307Y169779D01* +X905364Y169876D01* +X905427Y169971D01* +X905436Y169999D01* +X905451Y170024D01* +X905479Y170134D01* +X905513Y170242D01* +X905513Y170271D01* +X905521Y170299D01* +X905517Y170412D01* +X905520Y170526D01* +X905513Y170554D01* +X905512Y170584D01* +X905477Y170692D01* +X905448Y170801D01* +X905433Y170826D01* +X905424Y170854D01* +X905379Y170918D01* +X905303Y171045D01* +X905257Y171088D01* +X905229Y171127D01* +X904391Y171966D01* +X903505Y174103D01* +X903505Y176417D01* +X904391Y178554D01* +X906026Y180189D01* +X908163Y181075D01* +X910477Y181075D01* +X912614Y180189D01* +X914249Y178554D01* +X915135Y176417D01* +X915135Y174103D01* +X914249Y171966D01* +X912614Y170331D01* +X910437Y169429D01* +X910400Y169421D01* +X910288Y169405D01* +X910261Y169393D01* +X910232Y169388D01* +X910131Y169335D01* +X910028Y169289D01* +X910006Y169270D01* +X909980Y169257D01* +X909898Y169179D01* +X909811Y169106D01* +X909795Y169081D01* +X909774Y169061D01* +X909716Y168963D01* +X909654Y168869D01* +X909645Y168841D01* +X909630Y168816D01* +X909602Y168706D01* +X909568Y168598D01* +X909567Y168568D01* +X909560Y168540D01* +X909563Y168427D01* +X909560Y168314D01* +X909568Y168285D01* +X909569Y168256D01* +X909604Y168148D01* +X909632Y168039D01* +X909647Y168013D01* +X909656Y167985D01* +X909702Y167921D01* +X909778Y167794D01* +X909823Y167751D01* +X909851Y167712D01* +X910690Y166873D01* +X911575Y164736D01* +X911575Y162423D01* +X910690Y160286D01* +X909054Y158650D01* +X906917Y157765D01* +X904604Y157765D01* +G37* +%LPD*% +%LPC*% +G36* +X1192643Y273585D02* +X1192643Y273585D01* +X1190506Y274471D01* +X1188871Y276106D01* +X1187985Y278243D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194957Y285215D01* +X1197094Y284329D01* +X1198729Y282694D01* +X1199212Y281529D01* +X1199227Y281504D01* +X1199236Y281476D01* +X1199299Y281382D01* +X1199356Y281284D01* +X1199378Y281264D01* +X1199394Y281239D01* +X1199481Y281167D01* +X1199563Y281089D01* +X1199589Y281075D01* +X1199612Y281056D01* +X1199715Y281010D01* +X1199816Y280959D01* +X1199845Y280953D01* +X1199872Y280941D01* +X1199984Y280925D01* +X1200095Y280904D01* +X1200124Y280906D01* +X1200153Y280902D01* +X1200265Y280918D01* +X1200378Y280928D01* +X1200406Y280939D01* +X1200434Y280943D01* +X1200537Y280989D01* +X1200643Y281030D01* +X1200667Y281048D01* +X1200694Y281060D01* +X1200780Y281133D01* +X1200870Y281202D01* +X1200888Y281225D01* +X1200910Y281244D01* +X1200952Y281311D01* +X1201040Y281429D01* +X1201058Y281476D01* +X1201075Y281502D01* +X1201079Y281515D01* +X1201088Y281529D01* +X1201571Y282694D01* +X1203206Y284329D01* +X1205343Y285215D01* +X1207657Y285215D01* +X1209794Y284329D01* +X1211429Y282694D01* +X1212315Y280557D01* +X1212315Y278243D01* +X1211429Y276106D01* +X1209794Y274471D01* +X1207657Y273585D01* +X1205343Y273585D01* +X1203206Y274471D01* +X1201571Y276106D01* +X1201088Y277271D01* +X1201073Y277296D01* +X1201064Y277324D01* +X1201001Y277419D01* +X1200943Y277516D01* +X1200922Y277536D01* +X1200906Y277561D01* +X1200819Y277634D01* +X1200737Y277711D01* +X1200711Y277725D01* +X1200688Y277744D01* +X1200585Y277790D01* +X1200484Y277841D01* +X1200455Y277847D01* +X1200428Y277859D01* +X1200316Y277875D01* +X1200205Y277896D01* +X1200176Y277894D01* +X1200147Y277898D01* +X1200035Y277882D01* +X1199922Y277872D01* +X1199895Y277861D01* +X1199865Y277857D01* +X1199762Y277811D01* +X1199657Y277770D01* +X1199633Y277752D01* +X1199606Y277740D01* +X1199520Y277667D01* +X1199430Y277598D01* +X1199412Y277575D01* +X1199390Y277556D01* +X1199349Y277490D01* +X1199260Y277371D01* +X1199244Y277329D01* +X1199227Y277304D01* +X1199222Y277287D01* +X1199212Y277271D01* +X1198729Y276106D01* +X1197094Y274471D01* +X1194957Y273585D01* +X1192643Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X1022463Y159285D02* +X1022463Y159285D01* +X1020326Y160171D01* +X1018691Y161806D01* +X1017805Y163943D01* +X1017805Y166257D01* +X1018691Y168394D01* +X1019759Y169462D01* +X1019794Y169509D01* +X1019836Y169549D01* +X1019879Y169622D01* +X1019930Y169689D01* +X1019951Y169744D01* +X1019980Y169794D01* +X1020001Y169876D01* +X1020031Y169955D01* +X1020036Y170013D01* +X1020050Y170070D01* +X1020048Y170154D01* +X1020055Y170238D01* +X1020043Y170296D01* +X1020041Y170354D01* +X1020015Y170434D01* +X1019999Y170517D01* +X1019972Y170569D01* +X1019954Y170625D01* +X1019914Y170681D01* +X1019868Y170769D01* +X1019799Y170842D01* +X1019759Y170898D01* +X1018691Y171966D01* +X1017805Y174103D01* +X1017805Y176417D01* +X1018691Y178554D01* +X1020326Y180189D01* +X1022463Y181075D01* +X1024777Y181075D01* +X1026914Y180189D01* +X1028549Y178554D01* +X1029435Y176417D01* +X1029435Y174103D01* +X1028549Y171966D01* +X1027481Y170898D01* +X1027446Y170851D01* +X1027404Y170811D01* +X1027361Y170738D01* +X1027310Y170671D01* +X1027289Y170616D01* +X1027260Y170566D01* +X1027239Y170484D01* +X1027209Y170405D01* +X1027204Y170347D01* +X1027190Y170290D01* +X1027192Y170206D01* +X1027185Y170122D01* +X1027197Y170064D01* +X1027199Y170006D01* +X1027225Y169926D01* +X1027241Y169843D01* +X1027268Y169791D01* +X1027286Y169735D01* +X1027326Y169679D01* +X1027372Y169591D01* +X1027441Y169518D01* +X1027481Y169462D01* +X1028549Y168394D01* +X1029435Y166257D01* +X1029435Y163943D01* +X1028549Y161806D01* +X1026914Y160171D01* +X1024777Y159285D01* +X1022463Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y153241D02* +X290487Y153241D01* +X287526Y154468D01* +X285259Y156734D01* +X284033Y159695D01* +X284033Y162900D01* +X285259Y165862D01* +X287526Y168128D01* +X290487Y169355D01* +X293692Y169355D01* +X296653Y168128D01* +X298920Y165862D01* +X300146Y162900D01* +X300146Y159695D01* +X298920Y156734D01* +X296653Y154468D01* +X293692Y153241D01* +X290487Y153241D01* +G37* +%LPD*% +%LPC*% +G36* +X178006Y147147D02* +X178006Y147147D01* +X175045Y148374D01* +X172779Y150640D01* +X171552Y153601D01* +X171552Y156806D01* +X172779Y159768D01* +X175045Y162034D01* +X178006Y163261D01* +X181211Y163261D01* +X184173Y162034D01* +X186439Y159768D01* +X187665Y156806D01* +X187665Y153601D01* +X186439Y150640D01* +X184173Y148374D01* +X181211Y147147D01* +X178006Y147147D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y165941D02* +X315887Y165941D01* +X312926Y167168D01* +X310659Y169434D01* +X309433Y172395D01* +X309433Y175600D01* +X310659Y178562D01* +X312926Y180828D01* +X315887Y182055D01* +X319092Y182055D01* +X322053Y180828D01* +X324320Y178562D01* +X325546Y175600D01* +X325546Y172395D01* +X324320Y169434D01* +X322053Y167168D01* +X319092Y165941D01* +X315887Y165941D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y178641D02* +X290487Y178641D01* +X287526Y179868D01* +X285259Y182134D01* +X284033Y185095D01* +X284033Y188300D01* +X285259Y191262D01* +X287526Y193528D01* +X290487Y194755D01* +X293692Y194755D01* +X296653Y193528D01* +X298920Y191262D01* +X300146Y188300D01* +X300146Y185095D01* +X298920Y182134D01* +X296653Y179868D01* +X293692Y178641D01* +X290487Y178641D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y140541D02* +X315887Y140541D01* +X312926Y141768D01* +X310659Y144034D01* +X309433Y146995D01* +X309433Y150200D01* +X310659Y153162D01* +X312926Y155428D01* +X315887Y156655D01* +X319092Y156655D01* +X322053Y155428D01* +X324320Y153162D01* +X325546Y150200D01* +X325546Y146995D01* +X324320Y144034D01* +X322053Y141768D01* +X319092Y140541D01* +X315887Y140541D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y229441D02* +X290487Y229441D01* +X287526Y230668D01* +X285259Y232934D01* +X284033Y235895D01* +X284033Y239100D01* +X285259Y242062D01* +X287526Y244328D01* +X290487Y245555D01* +X293692Y245555D01* +X296653Y244328D01* +X298920Y242062D01* +X300146Y239100D01* +X300146Y235895D01* +X298920Y232934D01* +X296653Y230668D01* +X293692Y229441D01* +X290487Y229441D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y191341D02* +X315887Y191341D01* +X312926Y192568D01* +X310659Y194834D01* +X309433Y197795D01* +X309433Y201000D01* +X310659Y203962D01* +X312926Y206228D01* +X315887Y207455D01* +X319092Y207455D01* +X322053Y206228D01* +X324320Y203962D01* +X325546Y201000D01* +X325546Y197795D01* +X324320Y194834D01* +X322053Y192568D01* +X319092Y191341D01* +X315887Y191341D01* +G37* +%LPD*% +%LPC*% +G36* +X193201Y121729D02* +X193201Y121729D01* +X190240Y122955D01* +X187974Y125221D01* +X186747Y128183D01* +X186747Y131388D01* +X187974Y134349D01* +X190240Y136615D01* +X193201Y137842D01* +X196406Y137842D01* +X199368Y136615D01* +X201634Y134349D01* +X202860Y131388D01* +X202860Y128183D01* +X201634Y125221D01* +X199368Y122955D01* +X196406Y121729D01* +X193201Y121729D01* +G37* +%LPD*% +%LPC*% +G36* +X193206Y222847D02* +X193206Y222847D01* +X190245Y224074D01* +X187979Y226340D01* +X186752Y229301D01* +X186752Y232506D01* +X187979Y235468D01* +X190245Y237734D01* +X193206Y238961D01* +X196411Y238961D01* +X199373Y237734D01* +X201639Y235468D01* +X202865Y232506D01* +X202865Y229301D01* +X201639Y226340D01* +X199373Y224074D01* +X196411Y222847D01* +X193206Y222847D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y216741D02* +X315887Y216741D01* +X312926Y217968D01* +X310659Y220234D01* +X309433Y223195D01* +X309433Y226400D01* +X310659Y229362D01* +X312926Y231628D01* +X315887Y232855D01* +X319092Y232855D01* +X322053Y231628D01* +X324320Y229362D01* +X325546Y226400D01* +X325546Y223195D01* +X324320Y220234D01* +X322053Y217968D01* +X319092Y216741D01* +X315887Y216741D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y204041D02* +X290487Y204041D01* +X287526Y205268D01* +X285259Y207534D01* +X284033Y210495D01* +X284033Y213700D01* +X285259Y216662D01* +X287526Y218928D01* +X290487Y220155D01* +X293692Y220155D01* +X296653Y218928D01* +X298920Y216662D01* +X300146Y213700D01* +X300146Y210495D01* +X298920Y207534D01* +X296653Y205268D01* +X293692Y204041D01* +X290487Y204041D01* +G37* +%LPD*% +%LPC*% +G36* +X489249Y115061D02* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496382Y118016D01* +X494465Y116099D01* +X491960Y115061D01* +X489249Y115061D01* +G37* +%LPD*% +%LPC*% +G36* +X405243Y311685D02* +X405243Y311685D01* +X403106Y312571D01* +X401471Y314206D01* +X400585Y316343D01* +X400585Y318657D01* +X401471Y320794D01* +X403106Y322429D01* +X405243Y323315D01* +X407557Y323315D01* +X409694Y322429D01* +X411329Y320794D01* +X412215Y318657D01* +X412215Y316343D01* +X411329Y314206D01* +X409694Y312571D01* +X407557Y311685D01* +X405243Y311685D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y212625D02* +X1205343Y212625D01* +X1203206Y213511D01* +X1201571Y215146D01* +X1200685Y217283D01* +X1200685Y219597D01* +X1201571Y221734D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209794Y223369D01* +X1211429Y221734D01* +X1212315Y219597D01* +X1212315Y217283D01* +X1211429Y215146D01* +X1209794Y213511D01* +X1207657Y212625D01* +X1205343Y212625D01* +G37* +%LPD*% +%LPC*% +G36* +X547048Y215601D02* +X547048Y215601D01* +X544911Y216486D01* +X543275Y218122D01* +X542390Y220259D01* +X542390Y222572D01* +X543275Y224709D01* +X544911Y226345D01* +X547048Y227230D01* +X549361Y227230D01* +X551498Y226345D01* +X553134Y224709D01* +X554019Y222572D01* +X554019Y220259D01* +X553134Y218122D01* +X551498Y216486D01* +X549361Y215601D01* +X547048Y215601D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y197385D02* +X1205343Y197385D01* +X1203206Y198271D01* +X1201571Y199906D01* +X1200685Y202043D01* +X1200685Y204357D01* +X1201571Y206494D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1211429Y206494D01* +X1212315Y204357D01* +X1212315Y202043D01* +X1211429Y199906D01* +X1209794Y198271D01* +X1207657Y197385D01* +X1205343Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X580503Y197385D02* +X580503Y197385D01* +X578366Y198271D01* +X576731Y199906D01* +X575845Y202043D01* +X575845Y204357D01* +X576731Y206494D01* +X578366Y208129D01* +X580503Y209015D01* +X582817Y209015D01* +X584954Y208129D01* +X586589Y206494D01* +X587475Y204357D01* +X587475Y202043D01* +X586589Y199906D01* +X584954Y198271D01* +X582817Y197385D01* +X580503Y197385D01* +G37* +%LPD*% +%LPC*% +G36* +X517003Y233679D02* +X517003Y233679D01* +X514866Y234565D01* +X513231Y236200D01* +X512345Y238337D01* +X512345Y240651D01* +X513231Y242788D01* +X514866Y244423D01* +X517003Y245309D01* +X519317Y245309D01* +X521454Y244423D01* +X523089Y242788D01* +X523975Y240651D01* +X523975Y238337D01* +X523089Y236200D01* +X521454Y234565D01* +X519317Y233679D01* +X517003Y233679D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y235485D02* +X1205343Y235485D01* +X1203206Y236371D01* +X1201571Y238006D01* +X1200685Y240143D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1211429Y244594D01* +X1212315Y242457D01* +X1212315Y240143D01* +X1211429Y238006D01* +X1209794Y236371D01* +X1207657Y235485D01* +X1205343Y235485D01* +G37* +%LPD*% +%LPC*% +G36* +X224903Y342165D02* +X224903Y342165D01* +X222766Y343051D01* +X221131Y344686D01* +X220245Y346823D01* +X220245Y349137D01* +X221131Y351274D01* +X222766Y352909D01* +X224903Y353795D01* +X227217Y353795D01* +X229354Y352909D01* +X230989Y351274D01* +X231875Y349137D01* +X231875Y346823D01* +X230989Y344686D01* +X229354Y343051D01* +X227217Y342165D01* +X224903Y342165D01* +G37* +%LPD*% +%LPC*% +G36* +X994523Y177065D02* +X994523Y177065D01* +X992386Y177951D01* +X990751Y179586D01* +X989865Y181723D01* +X989865Y184037D01* +X990751Y186174D01* +X992386Y187809D01* +X994523Y188695D01* +X996837Y188695D01* +X998974Y187809D01* +X1000609Y186174D01* +X1001495Y184037D01* +X1001495Y181723D01* +X1000609Y179586D01* +X998974Y177951D01* +X996837Y177065D01* +X994523Y177065D01* +G37* +%LPD*% +%LPC*% +G36* +X1205343Y174525D02* +X1205343Y174525D01* +X1203206Y175411D01* +X1201571Y177046D01* +X1200685Y179183D01* +X1200685Y181497D01* +X1201571Y183634D01* +X1203206Y185269D01* +X1205343Y186155D01* +X1207657Y186155D01* +X1209794Y185269D01* +X1211429Y183634D01* +X1212315Y181497D01* +X1212315Y179183D01* +X1211429Y177046D01* +X1209794Y175411D01* +X1207657Y174525D01* +X1205343Y174525D01* +G37* +%LPD*% +%LPC*% +G36* +X384923Y339625D02* +X384923Y339625D01* +X382786Y340511D01* +X381151Y342146D01* +X380265Y344283D01* +X380265Y346597D01* +X381151Y348734D01* +X382786Y350369D01* +X384923Y351255D01* +X387237Y351255D01* +X389374Y350369D01* +X391009Y348734D01* +X391895Y346597D01* +X391895Y344283D01* +X391009Y342146D01* +X389374Y340511D01* +X387237Y339625D01* +X384923Y339625D01* +G37* +%LPD*% +%LPC*% +G36* +X923403Y169445D02* +X923403Y169445D01* +X921266Y170331D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919631Y178554D01* +X921266Y180189D01* +X923403Y181075D01* +X925717Y181075D01* +X927854Y180189D01* +X929489Y178554D01* +X930375Y176417D01* +X930375Y174103D01* +X929489Y171966D01* +X927854Y170331D01* +X925717Y169445D01* +X923403Y169445D01* +G37* +%LPD*% +%LPC*% +G36* +X1091403Y243895D02* +X1091403Y243895D01* +X1089266Y244781D01* +X1087630Y246416D01* +X1086745Y248553D01* +X1086745Y250867D01* +X1087630Y253004D01* +X1089266Y254639D01* +X1091403Y255525D01* +X1093716Y255525D01* +X1095853Y254639D01* +X1097489Y253004D01* +X1098374Y250867D01* +X1098374Y248553D01* +X1097489Y246416D01* +X1095853Y244781D01* +X1093716Y243895D01* +X1091403Y243895D01* +G37* +%LPD*% +%LPC*% +G36* +X175354Y318016D02* +X175354Y318016D01* +X173217Y318902D01* +X171582Y320537D01* +X170696Y322674D01* +X170696Y324988D01* +X171582Y327125D01* +X173217Y328760D01* +X175354Y329646D01* +X177668Y329646D01* +X179805Y328760D01* +X181440Y327125D01* +X182326Y324988D01* +X182326Y322674D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +G37* +%LPD*% +%LPC*% +G36* +X532243Y273585D02* +X532243Y273585D01* +X530106Y274471D01* +X528471Y276106D01* +X527585Y278243D01* +X527585Y280557D01* +X528471Y282694D01* +X530106Y284329D01* +X532243Y285215D01* +X534557Y285215D01* +X536694Y284329D01* +X538329Y282694D01* +X539215Y280557D01* +X539215Y278243D01* +X538329Y276106D01* +X536694Y274471D01* +X534557Y273585D01* +X532243Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X468743Y250725D02* +X468743Y250725D01* +X466606Y251611D01* +X464971Y253246D01* +X464085Y255383D01* +X464085Y257697D01* +X464971Y259834D01* +X466606Y261469D01* +X468743Y262355D01* +X471057Y262355D01* +X473194Y261469D01* +X474829Y259834D01* +X475715Y257697D01* +X475715Y255383D01* +X474829Y253246D01* +X473194Y251611D01* +X471057Y250725D01* +X468743Y250725D01* +G37* +%LPD*% +%LPC*% +G36* +X555103Y273585D02* +X555103Y273585D01* +X552966Y274471D01* +X551331Y276106D01* +X550445Y278243D01* +X550445Y280557D01* +X551331Y282694D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278243D01* +X561189Y276106D01* +X559554Y274471D01* +X557417Y273585D01* +X555103Y273585D01* +G37* +%LPD*% +%LPC*% +G36* +X710043Y164365D02* +X710043Y164365D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716129Y173474D01* +X717015Y171337D01* +X717015Y169023D01* +X716129Y166886D01* +X714494Y165251D01* +X712357Y164365D01* +X710043Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X539863Y164365D02* +X539863Y164365D01* +X537726Y165251D01* +X536091Y166886D01* +X535205Y169023D01* +X535205Y171337D01* +X536091Y173474D01* +X537726Y175109D01* +X539863Y175995D01* +X542177Y175995D01* +X544314Y175109D01* +X545949Y173474D01* +X546835Y171337D01* +X546835Y169023D01* +X545949Y166886D01* +X544314Y165251D01* +X542177Y164365D01* +X539863Y164365D01* +G37* +%LPD*% +%LPC*% +G36* +X1159623Y161825D02* +X1159623Y161825D01* +X1157486Y162711D01* +X1155851Y164346D01* +X1154965Y166483D01* +X1154965Y168797D01* +X1155851Y170934D01* +X1157486Y172569D01* +X1159623Y173455D01* +X1161937Y173455D01* +X1164074Y172569D01* +X1165709Y170934D01* +X1166595Y168797D01* +X1166595Y166483D01* +X1165709Y164346D01* +X1164074Y162711D01* +X1161937Y161825D01* +X1159623Y161825D01* +G37* +%LPD*% +%LPC*% +G36* +X887843Y159285D02* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883185Y163943D01* +X883185Y166257D01* +X884071Y168394D01* +X885706Y170029D01* +X887843Y170915D01* +X890157Y170915D01* +X892294Y170029D01* +X893929Y168394D01* +X894815Y166257D01* +X894815Y163943D01* +X893929Y161806D01* +X892294Y160171D01* +X890157Y159285D01* +X887843Y159285D01* +G37* +%LPD*% +%LPC*% +G36* +X527163Y75465D02* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +G37* +%LPD*% +%LPC*% +G36* +X854823Y42445D02* +X854823Y42445D01* +X852686Y43331D01* +X851051Y44966D01* +X850165Y47103D01* +X850165Y49417D01* +X851051Y51554D01* +X852686Y53189D01* +X854823Y54075D01* +X857137Y54075D01* +X859274Y53189D01* +X860909Y51554D01* +X861795Y49417D01* +X861795Y47103D01* +X860909Y44966D01* +X859274Y43331D01* +X857137Y42445D01* +X854823Y42445D01* +G37* +%LPD*% +%LPC*% +G36* +X501643Y157094D02* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X496985Y161752D01* +X496985Y164065D01* +X497871Y166203D01* +X499506Y167838D01* +X501643Y168724D01* +X503957Y168724D01* +X506094Y167838D01* +X507729Y166203D01* +X508615Y164065D01* +X508615Y161752D01* +X507729Y159615D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +G37* +%LPD*% +%LPC*% +G36* +X758303Y154205D02* +X758303Y154205D01* +X756166Y155091D01* +X754531Y156726D01* +X753645Y158863D01* +X753645Y161177D01* +X754531Y163314D01* +X756166Y164949D01* +X758303Y165835D01* +X760617Y165835D01* +X762754Y164949D01* +X764389Y163314D01* +X765275Y161177D01* +X765275Y158863D01* +X764389Y156726D01* +X762754Y155091D01* +X760617Y154205D01* +X758303Y154205D01* +G37* +%LPD*% +%LPC*% +G36* +X702972Y152214D02* +X702972Y152214D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X699199Y161323D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707423Y162958D01* +X709058Y161323D01* +X709944Y159185D01* +X709944Y156872D01* +X709058Y154735D01* +X707423Y153099D01* +X705285Y152214D01* +X702972Y152214D01* +G37* +%LPD*% +%LPC*% +G36* +X547483Y253265D02* +X547483Y253265D01* +X545346Y254151D01* +X543711Y255786D01* +X542825Y257923D01* +X542825Y260237D01* +X543711Y262374D01* +X545346Y264009D01* +X547483Y264895D01* +X549797Y264895D01* +X551934Y264009D01* +X553569Y262374D01* +X554455Y260237D01* +X554455Y257923D01* +X553569Y255786D01* +X551934Y254151D01* +X549797Y253265D01* +X547483Y253265D01* +G37* +%LPD*% +%LPC*% +G36* +X1141843Y149125D02* +X1141843Y149125D01* +X1139706Y150011D01* +X1138071Y151646D01* +X1137185Y153783D01* +X1137185Y156097D01* +X1138071Y158234D01* +X1139706Y159869D01* +X1141843Y160755D01* +X1144157Y160755D01* +X1146294Y159869D01* +X1147929Y158234D01* +X1148815Y156097D01* +X1148815Y153783D01* +X1147929Y151646D01* +X1146294Y150011D01* +X1144157Y149125D01* +X1141843Y149125D01* +G37* +%LPD*% +%LPC*% +G36* +X666863Y149099D02* +X666863Y149099D01* +X664726Y149985D01* +X663091Y151620D01* +X662205Y153757D01* +X662205Y156071D01* +X663091Y158208D01* +X664726Y159843D01* +X666863Y160729D01* +X669177Y160729D01* +X671314Y159843D01* +X672949Y158208D01* +X673835Y156071D01* +X673835Y153757D01* +X672949Y151620D01* +X671314Y149985D01* +X669177Y149099D01* +X666863Y149099D01* +G37* +%LPD*% +%LPC*% +G36* +X847203Y146585D02* +X847203Y146585D01* +X845066Y147471D01* +X843431Y149106D01* +X842545Y151243D01* +X842545Y153557D01* +X843431Y155694D01* +X845066Y157329D01* +X847203Y158215D01* +X849517Y158215D01* +X851654Y157329D01* +X853289Y155694D01* +X854175Y153557D01* +X854175Y151243D01* +X853289Y149106D01* +X851654Y147471D01* +X849517Y146585D01* +X847203Y146585D01* +G37* +%LPD*% +%LPC*% +G36* +X450798Y286120D02* +X450798Y286120D01* +X448661Y287005D01* +X447025Y288641D01* +X446140Y290778D01* +X446140Y293091D01* +X447025Y295228D01* +X448661Y296864D01* +X450798Y297749D01* +X453111Y297749D01* +X455248Y296864D01* +X456884Y295228D01* +X457769Y293091D01* +X457769Y290778D01* +X456884Y288641D01* +X455248Y287005D01* +X453111Y286120D01* +X450798Y286120D01* +G37* +%LPD*% +%LPC*% +G36* +X1245983Y111025D02* +X1245983Y111025D01* +X1243846Y111911D01* +X1242211Y113546D01* +X1241325Y115683D01* +X1241325Y117997D01* +X1242211Y120134D01* +X1243846Y121769D01* +X1245983Y122655D01* +X1248297Y122655D01* +X1250434Y121769D01* +X1252069Y120134D01* +X1252955Y117997D01* +X1252955Y115683D01* +X1252069Y113546D01* +X1250434Y111911D01* +X1248297Y111025D01* +X1245983Y111025D01* +G37* +%LPD*% +%LPC*% +G36* +X1121523Y141505D02* +X1121523Y141505D01* +X1119386Y142391D01* +X1117751Y144026D01* +X1116865Y146163D01* +X1116865Y148477D01* +X1117751Y150614D01* +X1119386Y152249D01* +X1121523Y153135D01* +X1123837Y153135D01* +X1125974Y152249D01* +X1127609Y150614D01* +X1128495Y148477D01* +X1128495Y146163D01* +X1127609Y144026D01* +X1125974Y142391D01* +X1123837Y141505D01* +X1121523Y141505D01* +G37* +%LPD*% +%LPC*% +G36* +X1220991Y116105D02* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218854Y126849D01* +X1220991Y127735D01* +X1223305Y127735D01* +X1225442Y126849D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +G37* +%LPD*% +%LPC*% +G36* +X542403Y128805D02* +X542403Y128805D01* +X540266Y129691D01* +X538631Y131326D01* +X537745Y133463D01* +X537745Y135777D01* +X538631Y137914D01* +X540266Y139549D01* +X542403Y140435D01* +X544717Y140435D01* +X546854Y139549D01* +X548489Y137914D01* +X549375Y135777D01* +X549375Y133463D01* +X548489Y131326D01* +X546854Y129691D01* +X544717Y128805D01* +X542403Y128805D01* +G37* +%LPD*% +%LPC*% +G36* +X1154543Y260885D02* +X1154543Y260885D01* +X1152406Y261771D01* +X1150771Y263406D01* +X1149885Y265543D01* +X1149885Y267857D01* +X1150771Y269994D01* +X1152406Y271629D01* +X1154543Y272515D01* +X1156857Y272515D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265543D01* +X1160629Y263406D01* +X1158994Y261771D01* +X1156857Y260885D01* +X1154543Y260885D01* +G37* +%LPD*% +%LPC*% +G36* +X1164703Y271045D02* +X1164703Y271045D01* +X1162566Y271931D01* +X1160931Y273566D01* +X1160045Y275703D01* +X1160045Y278017D01* +X1160931Y280154D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275703D01* +X1170789Y273566D01* +X1169154Y271931D01* +X1167017Y271045D01* +X1164703Y271045D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751214Y131738D01* +X753268Y132589D01* +X755492Y132589D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X1220628Y93471D02* +X1220628Y93471D01* +X1218574Y94322D01* +X1217002Y95894D01* +X1216151Y97948D01* +X1216151Y100172D01* +X1217002Y102226D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X1004728Y289051D02* +X1004728Y289051D01* +X1002674Y289902D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009006Y289902D01* +X1006952Y289051D01* +X1004728Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X875188Y245871D02* +X875188Y245871D01* +X873134Y246722D01* +X871562Y248294D01* +X870711Y250348D01* +X870711Y252572D01* +X871562Y254626D01* +X873134Y256198D01* +X875188Y257049D01* +X877412Y257049D01* +X879466Y256198D01* +X881038Y254626D01* +X881889Y252572D01* +X881889Y250348D01* +X881038Y248294D01* +X879466Y246722D01* +X877412Y245871D01* +X875188Y245871D01* +G37* +%LPD*% +%LPC*% +G36* +X1245012Y159511D02* +X1245012Y159511D01* +X1242958Y160362D01* +X1241386Y161934D01* +X1240535Y163988D01* +X1240535Y166212D01* +X1241386Y168266D01* +X1242958Y169838D01* +X1245012Y170689D01* +X1247236Y170689D01* +X1249290Y169838D01* +X1250862Y168266D01* +X1251713Y166212D01* +X1251713Y163988D01* +X1250862Y161934D01* +X1249290Y160362D01* +X1247236Y159511D01* +X1245012Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y126268D01* +X261933Y126140D01* +X263750Y125549D01* +X265453Y124682D01* +X266999Y123558D01* +X268350Y122207D01* +X269473Y120661D01* +X270341Y118958D01* +X270931Y117141D01* +X271060Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y283768D01* +X261933Y283640D01* +X263750Y283049D01* +X265453Y282182D01* +X266999Y281058D01* +X268350Y279707D01* +X269473Y278161D01* +X270341Y276458D01* +X270931Y274641D01* +X271060Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X271060Y269767D01* +X270931Y268955D01* +X270341Y267137D01* +X269473Y265435D01* +X268350Y263889D01* +X266999Y262538D01* +X265453Y261414D01* +X263750Y260547D01* +X261933Y259956D01* +X261121Y259828D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y273829D02* +X247119Y273829D01* +X247248Y274641D01* +X247838Y276458D01* +X248706Y278161D01* +X249829Y279707D01* +X251180Y281058D01* +X252726Y282182D01* +X254429Y283049D01* +X256247Y283640D01* +X257058Y283768D01* +X257058Y273829D01* +X247119Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y116329D02* +X247119Y116329D01* +X247248Y117141D01* +X247838Y118958D01* +X248706Y120661D01* +X249829Y122207D01* +X251180Y123558D01* +X252726Y124682D01* +X254429Y125549D01* +X256247Y126140D01* +X257058Y126268D01* +X257058Y116329D01* +X247119Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y112267D02* +X261121Y112267D01* +X271060Y112267D01* +X270931Y111455D01* +X270341Y109637D01* +X269473Y107935D01* +X268350Y106389D01* +X266999Y105038D01* +X265453Y103914D01* +X263750Y103047D01* +X261933Y102456D01* +X261121Y102328D01* +X261121Y112267D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y102456D02* +X256247Y102456D01* +X254429Y103047D01* +X252726Y103914D01* +X251180Y105038D01* +X249829Y106389D01* +X248706Y107935D01* +X247838Y109637D01* +X247248Y111455D01* +X247119Y112267D01* +X257058Y112267D01* +X257058Y102328D01* +X256247Y102456D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y259956D02* +X256247Y259956D01* +X254429Y260547D01* +X252726Y261414D01* +X251180Y262538D01* +X249829Y263889D01* +X248706Y265435D01* +X247838Y267137D01* +X247248Y268955D01* +X247119Y269767D01* +X257058Y269767D01* +X257058Y259828D01* +X256247Y259956D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y37549D01* +X402640Y37460D01* +X404297Y36922D01* +X405848Y36131D01* +X407257Y35108D01* +X408488Y33877D01* +X409511Y32468D01* +X410302Y30917D01* +X410840Y29260D01* +X410929Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y37549D01* +X974140Y37460D01* +X975797Y36922D01* +X977348Y36131D01* +X978757Y35108D01* +X979988Y33877D01* +X981011Y32468D01* +X981802Y30917D01* +X982340Y29260D01* +X982429Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y24639D02* +X402081Y24639D01* +X410929Y24639D01* +X410840Y24080D01* +X410302Y22423D01* +X409511Y20872D01* +X408488Y19463D01* +X407257Y18232D01* +X405848Y17209D01* +X404297Y16418D01* +X402640Y15880D01* +X402081Y15791D01* +X402081Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X960671Y28701D02* +X960671Y28701D01* +X960760Y29260D01* +X961298Y30917D01* +X962089Y32468D01* +X963112Y33877D01* +X964343Y35108D01* +X965752Y36131D01* +X967303Y36922D01* +X968960Y37460D01* +X969519Y37549D01* +X969519Y28701D01* +X960671Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y24639D02* +X973581Y24639D01* +X982429Y24639D01* +X982340Y24080D01* +X981802Y22423D01* +X981011Y20872D01* +X979988Y19463D01* +X978757Y18232D01* +X977348Y17209D01* +X975797Y16418D01* +X974140Y15880D01* +X973581Y15791D01* +X973581Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X389171Y28701D02* +X389171Y28701D01* +X389260Y29260D01* +X389798Y30917D01* +X390589Y32468D01* +X391612Y33877D01* +X392843Y35108D01* +X394252Y36131D01* +X395803Y36922D01* +X397460Y37460D01* +X398019Y37549D01* +X398019Y28701D01* +X389171Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X968960Y15880D02* +X968960Y15880D01* +X967303Y16418D01* +X965752Y17209D01* +X964343Y18232D01* +X963112Y19463D01* +X962089Y20872D01* +X961298Y22423D01* +X960760Y24080D01* +X960671Y24639D01* +X969519Y24639D01* +X969519Y15791D01* +X968960Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X397460Y15880D02* +X397460Y15880D01* +X395803Y16418D01* +X394252Y17209D01* +X392843Y18232D01* +X391612Y19463D01* +X390589Y20872D01* +X389798Y22423D01* +X389260Y24080D01* +X389171Y24639D01* +X398019Y24639D01* +X398019Y15791D01* +X397460Y15880D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y22351D02* +X700531Y22351D01* +X700531Y29240D01* +X701167Y29113D01* +X702832Y28424D01* +X704330Y27423D01* +X705603Y26150D01* +X706604Y24652D01* +X707293Y22987D01* +X707420Y22351D01* +X700531Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y22351D02* +X725931Y22351D01* +X725931Y29240D01* +X726567Y29113D01* +X728232Y28424D01* +X729730Y27423D01* +X731003Y26150D01* +X732004Y24652D01* +X732693Y22987D01* +X732820Y22351D01* +X725931Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X725931Y18289D02* +X725931Y18289D01* +X732820Y18289D01* +X732693Y17653D01* +X732004Y15988D01* +X731003Y14490D01* +X729730Y13217D01* +X728232Y12216D01* +X726567Y11527D01* +X725931Y11400D01* +X725931Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X689580Y22351D02* +X689580Y22351D01* +X689707Y22987D01* +X690396Y24652D01* +X691397Y26150D01* +X692670Y27423D01* +X694168Y28424D01* +X695833Y29113D01* +X696469Y29240D01* +X696469Y22351D01* +X689580Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X714980Y22351D02* +X714980Y22351D01* +X715107Y22987D01* +X715796Y24652D01* +X716797Y26150D01* +X718070Y27423D01* +X719568Y28424D01* +X721233Y29113D01* +X721869Y29240D01* +X721869Y22351D01* +X714980Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y18289D02* +X700531Y18289D01* +X707420Y18289D01* +X707293Y17653D01* +X706604Y15988D01* +X705603Y14490D01* +X704330Y13217D01* +X702832Y12216D01* +X701167Y11527D01* +X700531Y11400D01* +X700531Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X695833Y11527D02* +X695833Y11527D01* +X694168Y12216D01* +X692670Y13217D01* +X691397Y14490D01* +X690396Y15988D01* +X689707Y17653D01* +X689580Y18289D01* +X696469Y18289D01* +X696469Y11400D01* +X695833Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X721233Y11527D02* +X721233Y11527D01* +X719568Y12216D01* +X718070Y13217D01* +X716797Y14490D01* +X715796Y15988D01* +X715107Y17653D01* +X714980Y18289D01* +X721869Y18289D01* +X721869Y11400D01* +X721233Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y264614D01* +X182102Y264521D01* +X183661Y263875D01* +X185063Y262938D01* +X186256Y261745D01* +X187194Y260342D01* +X187839Y258784D01* +X187932Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X187932Y254254D01* +X187839Y253787D01* +X187194Y252228D01* +X186256Y250826D01* +X185063Y249633D01* +X183661Y248695D01* +X182102Y248050D01* +X181635Y247957D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X171275Y258317D02* +X171275Y258317D01* +X171368Y258784D01* +X172014Y260342D01* +X172951Y261745D01* +X174144Y262938D01* +X175547Y263875D01* +X177105Y264521D01* +X177572Y264614D01* +X177572Y258317D01* +X171275Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X177105Y248050D02* +X177105Y248050D01* +X175547Y248695D01* +X174144Y249633D01* +X172951Y250826D01* +X172014Y252228D01* +X171368Y253787D01* +X171275Y254254D01* +X177572Y254254D01* +X177572Y247957D01* +X177105Y248050D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y293389D02* +X139619Y293389D01* +X139619Y298602D01* +X140277Y298471D01* +X141479Y297973D01* +X142560Y297250D01* +X143480Y296330D01* +X144203Y295249D01* +X144701Y294047D01* +X144832Y293389D01* +X139619Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y359389D02* +X139619Y359389D01* +X139619Y364602D01* +X140277Y364471D01* +X141479Y363973D01* +X142560Y363250D01* +X143480Y362330D01* +X144203Y361249D01* +X144701Y360047D01* +X144832Y359389D01* +X139619Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y359389D02* +X131868Y359389D01* +X131999Y360047D01* +X132497Y361249D01* +X133220Y362330D01* +X134140Y363250D01* +X135221Y363973D01* +X136423Y364471D01* +X137081Y364602D01* +X137081Y359389D01* +X131868Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y290851D02* +X139619Y290851D01* +X144832Y290851D01* +X144701Y290193D01* +X144203Y288991D01* +X143480Y287910D01* +X142560Y286990D01* +X141479Y286267D01* +X140277Y285769D01* +X139619Y285638D01* +X139619Y290851D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y293389D02* +X131868Y293389D01* +X131999Y294047D01* +X132497Y295249D01* +X133220Y296330D01* +X134140Y297250D01* +X135221Y297973D01* +X136423Y298471D01* +X137081Y298602D01* +X137081Y293389D01* +X131868Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y356851D02* +X139619Y356851D01* +X144832Y356851D01* +X144701Y356193D01* +X144203Y354991D01* +X143480Y353910D01* +X142560Y352990D01* +X141479Y352267D01* +X140277Y351769D01* +X139619Y351638D01* +X139619Y356851D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y285769D02* +X136423Y285769D01* +X135221Y286267D01* +X134140Y286990D01* +X133220Y287910D01* +X132497Y288991D01* +X131999Y290193D01* +X131868Y290851D01* +X137081Y290851D01* +X137081Y285638D01* +X136423Y285769D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y351769D02* +X136423Y351769D01* +X135221Y352267D01* +X134140Y352990D01* +X133220Y353910D01* +X132497Y354991D01* +X131999Y356193D01* +X131868Y356851D01* +X137081Y356851D01* +X137081Y351638D01* +X136423Y351769D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X971549Y26669D02* +X971549Y26669D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y26669D01* +X971549Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X698499Y20319D02* +X698499Y20319D01* +X698499Y20321D01* +X698501Y20321D01* +X698501Y20319D01* +X698499Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y114297D02* +X259089Y114297D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y114297D01* +X259089Y114297D01* +G37* +%LPD*% +%LPC*% +G36* +X400049Y26669D02* +X400049Y26669D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y26669D01* +X400049Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X723899Y20319D02* +X723899Y20319D01* +X723899Y20321D01* +X723901Y20321D01* +X723901Y20319D01* +X723899Y20319D01* +G37* +%LPD*% +D10* +X138350Y358120D03* +X138350Y292120D03* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +X292090Y237498D03* +D12* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D13* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D14* +X800100Y20320D03* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +X749300Y78740D03* +X723900Y78740D03* +D15* +X680720Y58420D03* +D16* +X698500Y58420D01* +X698500Y20320D01* +X723900Y20320D01* +D15* +X276860Y287020D03* +D16* +X259090Y271798D02* +X238760Y271798D01* +X179604Y271798D01* +X177800Y271798D01* +D15* +X297180Y287020D03* +X180340Y365816D03* +D16* +X172644Y358120D01* +X138350Y358120D01* +X370840Y271798D02* +X393700Y271798D01* +X370840Y271798D02* +X297180Y271798D01* +X276860Y271798D01* +X259090Y271798D01* +D15* +X563880Y76200D03* +D16* +X594360Y76200D02* +X612140Y58420D01* +X594360Y76200D02* +X563880Y76200D01* +X657860Y58420D02* +X680720Y58420D01* +D15* +X464820Y228600D03* +D16* +X393700Y228600D01* +X347980Y228600D01* +D15* +X424180Y259080D03* +X462280Y147320D03* +D16* +X347980Y147320D01* +X347980Y172720D01* +X347980Y228600D01* +X424180Y259080D02* +X424180Y269240D01* +D15* +X469900Y167640D03* +D16* +X462280Y160020D01* +X462280Y147320D01* +D15* +X500380Y134620D03* +D16* +X487680Y147320D01* +X462280Y147320D01* +D15* +X556260Y180340D03* +D16* +X487680Y180340D01* +X482600Y180340D01* +X469900Y167640D01* +D15* +X1206500Y304800D03* +D16* +X1257300Y7620D02* +X1051560Y7620D01* +X1051560Y76200D01* +X1206500Y304800D02* +X1247027Y304800D01* +X1247140Y304687D01* +D15* +X1051560Y76200D03* +D16* +X1247140Y190500D02* +X1257300Y190500D01* +X1247140Y190500D02* +X1135380Y190500D01* +X1127760Y198120D01* +X1257300Y190500D02* +X1257300Y7620D01* +X971550Y7620D02* +X971550Y26670D01* +X971550Y7620D02* +X1051560Y7620D01* +D15* +X873760Y66040D03* +D16* +X873760Y7620D01* +X971550Y7620D01* +X830580Y7620D02* +X723900Y7620D01* +D15* +X830580Y83820D03* +D16* +X830580Y7620D01* +X873760Y7620D01* +D15* +X886460Y149860D03* +D16* +X886460Y78740D01* +X873760Y66040D01* +D15* +X939800Y246380D03* +D16* +X939800Y142240D01* +X960120Y121920D01* +D15* +X960120Y121920D03* +X1082040Y106680D03* +D16* +X1066800Y121920D01* +X960120Y121920D01* +X1051560Y76200D02* +X1082040Y106680D01* +D15* +X1127760Y198120D03* +D16* +X723900Y20320D02* +X723900Y7620D01* +D15* +X657860Y142240D03* +D16* +X657860Y58420D01* +X723900Y7620D02* +X400050Y7620D01* +X259090Y7620D01* +X139700Y7620D01* +X139700Y271798D01* +X177800Y271798D01* +X179604Y271798D02* +X179604Y256285D01* +X400050Y26670D02* +X400050Y7620D01* +X259090Y7620D02* +X259090Y114298D01* +X139700Y356770D02* +X138350Y358120D01* +X139700Y356770D02* +X139700Y271798D01* +D15* +X861060Y274320D03* +D16* +X952500Y274320D02* +X960120Y274320D01* +X960120Y246380D01* +D15* +X952500Y297180D03* +D16* +X952500Y281940D01* +X952500Y274320D01* +X883920Y274320D02* +X861060Y274320D01* +X883920Y274320D02* +X952500Y274320D01* +D15* +X952500Y281940D03* +X960120Y246380D03* +D16* +X939800Y246380D01* +D15* +X1071880Y302260D03* +D16* +X957580Y302260D01* +X952500Y297180D01* +D15* +X177800Y309880D03* +X347980Y172720D03* +X497840Y269240D03* +D16* +X424180Y269240D01* +X1247140Y304687D02* +X1247140Y190500D01* +X657860Y58420D02* +X612140Y58420D01* +X177800Y271798D02* +X177800Y309880D01* +X297180Y287020D02* +X297180Y271798D01* +X393700Y271798D02* +X393700Y269240D01* +X424180Y269240D01* +X393700Y269240D02* +X393700Y228600D01* +D17* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +D16* +X487680Y185420D02* +X487680Y180340D01* +X487680Y185420D02* +X495300Y185420D01* +X502920Y185420D01* +X502920Y200660D01* +X487680Y200660D01* +X495300Y193040D02* +X495300Y185420D01* +X276860Y271798D02* +X276860Y287020D01* +D17* +X993140Y294640D03* +X866024Y248804D03* +D16* +X872512Y242316D01* +X881576Y242316D01* +X883920Y244661D01* +X883920Y274320D01* +D15* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +X370840Y342900D03* +D16* +X370840Y271798D01* +D15* +X370840Y360680D03* +D16* +X370840Y342900D01* +D15* +X226060Y358140D03* +D16* +X188016Y358140D01* +X180340Y365816D01* +D15* +X238760Y292292D03* +D16* +X238760Y271798D01* +D15* +X276860Y312420D03* +D16* +X276860Y287020D01* +D15* +X556260Y83820D03* +X713740Y274320D03* +X802640Y274320D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X640080Y251460D03* +X1183640Y205740D03* +X1125220Y281940D03* +X1270000Y157480D03* +X1170940Y106680D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1193800Y167640D03* +X1074420Y208280D03* +X1193800Y279400D03* +X518160Y239494D03* +X1206500Y203200D03* +X563880Y211610D03* +X502800Y162909D03* +X1023620Y175260D03* +X1206500Y241300D03* +X499816Y231140D03* +X1206500Y218440D03* +X490188Y231172D03* +X1206500Y279400D03* +X482600Y238760D03* +X1074420Y190500D03* +X566332Y202014D03* +X1074420Y177800D03* +X581660Y203200D03* +X1082040Y167640D03* +X553720Y203200D03* +X1165860Y276860D03* +X429260Y350596D03* +X1155700Y266700D03* +X421640Y342900D03* +X1222148Y121920D03* +X905760Y163580D03* +X198244Y333022D03* +X176511Y323831D03* +X982980Y172720D03* +X759460Y160020D03* +X919480Y144780D03* +X1143000Y154940D03* +X972820Y165100D03* +X924560Y175260D03* +X995680Y182880D03* +X711200Y170180D03* +X909320Y175260D03* +X704129Y158029D03* +X1122680Y147320D03* +X889000Y165100D03* +X1160780Y167640D03* +X906780Y142240D03* +X1092560Y249710D03* +X548640Y259080D03* +D17* +X443114Y186806D03* +X449580Y180340D03* +X449580Y205740D03* +X443114Y199274D03* +D15* +X1206500Y180340D03* +X1023620Y165100D03* +X406400Y317500D03* +X855980Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +D17* +X1221740Y99060D03* +X1246124Y165100D03* +X876300Y251460D03* +X1178560Y289560D03* +X1005840Y294640D03* +X754380Y127000D03* +D15* +X386080Y345440D03* +X226060Y347980D03* +X1247140Y116840D03* +X417137Y332740D03* +X451955Y291935D03* +X190500Y342900D03* +D18* +X490605Y121876D03* +D15* +X556260Y279400D03* +X533400Y279400D03* +X528320Y81280D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_top_l1.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_top_l1.gbr new file mode 100644 index 0000000000..7799837905 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_copper_top_l1.gbr @@ -0,0 +1,21498 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INTop Copper*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.192500*% +%ADD11C,0.350000*% +%ADD12C,0.241500*% +%ADD13C,0.420000*% +%ADD14C,0.320038*% +%ADD15C,0.490000*% +%ADD16C,0.500000*% +%ADD17C,0.315000*% +%ADD18C,1.016000*% +%ADD19C,0.200000*% +%ADD20C,0.700000*% +%ADD21C,0.950000*% +%ADD22C,0.091000*% +%ADD23C,1.778000*% +%ADD24C,1.700000*% +%ADD25C,2.540000*% +%ADD26R,3.810000X3.810000*% +%ADD27C,0.210000*% +%ADD28R,1.778000X1.778000*% +%ADD29C,0.124459*% +%ADD30C,0.140000*% +%ADD31C,0.402500*% +%ADD32C,0.406400*% +%ADD33C,0.756400*% +%ADD34C,0.203200*% +%ADD35C,0.711200*% +%ADD36C,0.279400*% +%ADD37C,0.609600*% +%ADD38C,0.228600*% +%ADD39C,0.956400*% +%ADD40C,0.812800*% + +G36* +X461581Y97549D02* +X461581Y97549D01* +X461668Y97552D01* +X461721Y97569D01* +X461776Y97577D01* +X461855Y97612D01* +X461939Y97639D01* +X461978Y97667D01* +X462035Y97693D01* +X462148Y97789D01* +X462212Y97834D01* +X473686Y109309D01* +X475927Y110237D01* +X488247Y110237D01* +X488333Y110249D01* +X488421Y110252D01* +X488473Y110269D01* +X488528Y110277D01* +X488608Y110312D01* +X488691Y110339D01* +X488731Y110367D01* +X488788Y110393D01* +X488901Y110489D01* +X488965Y110534D01* +X489603Y111173D01* +X500434Y111173D01* +X500463Y111177D01* +X500492Y111174D01* +X500603Y111197D01* +X500716Y111213D01* +X500742Y111225D01* +X500771Y111230D01* +X500872Y111283D01* +X500975Y111329D01* +X500997Y111348D01* +X501024Y111361D01* +X501106Y111439D01* +X501192Y111512D01* +X501208Y111537D01* +X501230Y111557D01* +X501287Y111655D01* +X501350Y111749D01* +X501359Y111777D01* +X501373Y111802D01* +X501401Y111912D01* +X501435Y112020D01* +X501436Y112050D01* +X501443Y112078D01* +X501440Y112191D01* +X501443Y112304D01* +X501435Y112333D01* +X501434Y112362D01* +X501400Y112470D01* +X501371Y112579D01* +X501356Y112605D01* +X501347Y112633D01* +X501301Y112696D01* +X501226Y112824D01* +X501180Y112867D01* +X501152Y112906D01* +X498576Y115482D01* +X498506Y115534D01* +X498442Y115594D01* +X498393Y115620D01* +X498349Y115653D01* +X498267Y115684D01* +X498189Y115724D01* +X498142Y115732D01* +X498083Y115754D01* +X497935Y115766D01* +X497858Y115779D01* +X493895Y115779D01* +X493865Y115775D01* +X493834Y115777D01* +X493757Y115760D01* +X493614Y115739D01* +X493555Y115713D01* +X493507Y115702D01* +X491960Y115061D01* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X493507Y128050D01* +X493537Y128042D01* +X493564Y128028D01* +X493642Y128015D01* +X493782Y127979D01* +X493847Y127981D01* +X493895Y127973D01* +X502017Y127973D01* +X504258Y127045D01* +X516089Y115214D01* +X517017Y112973D01* +X517017Y110813D01* +X517029Y110727D01* +X517032Y110639D01* +X517049Y110587D01* +X517057Y110532D01* +X517092Y110452D01* +X517119Y110369D01* +X517147Y110329D01* +X517173Y110272D01* +X517269Y110159D01* +X517314Y110095D01* +X518453Y108957D01* +X518453Y106512D01* +X518457Y106483D01* +X518454Y106454D01* +X518477Y106343D01* +X518493Y106231D01* +X518505Y106204D01* +X518510Y106175D01* +X518563Y106074D01* +X518609Y105971D01* +X518628Y105949D01* +X518641Y105923D01* +X518719Y105841D01* +X518792Y105754D01* +X518817Y105738D01* +X518837Y105717D01* +X518935Y105659D01* +X519029Y105597D01* +X519057Y105588D01* +X519082Y105573D01* +X519192Y105545D01* +X519300Y105511D01* +X519330Y105510D01* +X519358Y105503D01* +X519471Y105506D01* +X519584Y105504D01* +X519613Y105511D01* +X519642Y105512D01* +X519750Y105547D01* +X519859Y105575D01* +X519885Y105590D01* +X519913Y105599D01* +X519977Y105645D01* +X520104Y105721D01* +X520147Y105766D01* +X520186Y105794D01* +X520896Y106505D01* +X526012Y106505D01* +X526070Y106513D01* +X526128Y106511D01* +X526210Y106533D01* +X526294Y106545D01* +X526347Y106568D01* +X526403Y106583D01* +X526476Y106626D01* +X526553Y106661D01* +X526598Y106699D01* +X526648Y106728D01* +X526706Y106790D01* +X526770Y106844D01* +X526802Y106893D01* +X526842Y106936D01* +X526881Y107011D01* +X526928Y107081D01* +X526945Y107137D01* +X526972Y107189D01* +X526983Y107257D01* +X527013Y107352D01* +X527016Y107452D01* +X527027Y107520D01* +X527027Y109257D01* +X529243Y111473D01* +X533165Y111473D01* +X533194Y111477D01* +X533224Y111474D01* +X533335Y111497D01* +X533447Y111513D01* +X533474Y111525D01* +X533502Y111530D01* +X533603Y111583D01* +X533706Y111629D01* +X533729Y111648D01* +X533755Y111661D01* +X533837Y111739D01* +X533923Y111812D01* +X533940Y111837D01* +X533961Y111857D01* +X534018Y111955D01* +X534081Y112049D01* +X534090Y112077D01* +X534105Y112102D01* +X534132Y112212D01* +X534167Y112320D01* +X534167Y112350D01* +X534175Y112378D01* +X534171Y112491D01* +X534174Y112604D01* +X534167Y112633D01* +X534166Y112662D01* +X534131Y112770D01* +X534102Y112879D01* +X534087Y112905D01* +X534078Y112933D01* +X534032Y112997D01* +X533957Y113124D01* +X533911Y113167D01* +X533883Y113206D01* +X533527Y113562D01* +X533527Y120118D01* +X533948Y120539D01* +X534000Y120609D01* +X534060Y120672D01* +X534086Y120722D01* +X534119Y120766D01* +X534150Y120848D01* +X534190Y120926D01* +X534198Y120973D01* +X534220Y121032D01* +X534232Y121179D01* +X534245Y121257D01* +X534245Y123604D01* +X538610Y127969D01* +X539537Y127969D01* +X539566Y127973D01* +X539595Y127970D01* +X539706Y127993D01* +X539818Y128009D01* +X539845Y128021D01* +X539874Y128026D01* +X539975Y128079D01* +X540078Y128125D01* +X540100Y128144D01* +X540126Y128157D01* +X540208Y128235D01* +X540295Y128308D01* +X540311Y128333D01* +X540332Y128353D01* +X540390Y128451D01* +X540452Y128545D01* +X540461Y128573D01* +X540476Y128598D01* +X540504Y128708D01* +X540538Y128816D01* +X540539Y128846D01* +X540546Y128874D01* +X540543Y128987D01* +X540546Y129100D01* +X540538Y129129D01* +X540537Y129158D01* +X540502Y129266D01* +X540474Y129375D01* +X540459Y129401D01* +X540450Y129429D01* +X540404Y129493D01* +X540328Y129620D01* +X540283Y129663D01* +X540255Y129702D01* +X538631Y131326D01* +X538186Y132399D01* +X538142Y132473D01* +X538107Y132552D01* +X538070Y132595D01* +X538041Y132644D01* +X537979Y132703D01* +X537923Y132769D01* +X537876Y132800D01* +X537835Y132839D01* +X537758Y132879D01* +X537687Y132926D01* +X537633Y132944D01* +X537582Y132970D01* +X537498Y132986D01* +X537416Y133012D01* +X537359Y133014D01* +X537303Y133025D01* +X537218Y133017D01* +X537132Y133020D01* +X537077Y133005D01* +X537020Y133000D01* +X536940Y132969D01* +X536857Y132948D01* +X536808Y132919D01* +X536755Y132898D01* +X536686Y132846D01* +X536612Y132802D01* +X536573Y132761D01* +X536528Y132727D01* +X536476Y132658D01* +X536418Y132595D01* +X536392Y132545D01* +X536358Y132499D01* +X536327Y132418D01* +X536288Y132342D01* +X536280Y132293D01* +X536257Y132233D01* +X536246Y132088D01* +X536233Y132011D01* +X536233Y129803D01* +X534017Y127587D01* +X523383Y127587D01* +X521167Y129803D01* +X521167Y139437D01* +X523383Y141653D01* +X529716Y141653D01* +X529774Y141661D01* +X529832Y141659D01* +X529914Y141681D01* +X529998Y141693D01* +X530051Y141716D01* +X530107Y141731D01* +X530180Y141774D01* +X530257Y141809D01* +X530302Y141847D01* +X530352Y141876D01* +X530410Y141938D01* +X530474Y141992D01* +X530506Y142041D01* +X530546Y142084D01* +X530585Y142159D01* +X530632Y142229D01* +X530649Y142285D01* +X530676Y142337D01* +X530687Y142405D01* +X530717Y142500D01* +X530720Y142600D01* +X530731Y142668D01* +X530731Y152089D01* +X530727Y152118D01* +X530730Y152148D01* +X530707Y152259D01* +X530691Y152371D01* +X530679Y152398D01* +X530674Y152426D01* +X530622Y152527D01* +X530575Y152630D01* +X530556Y152653D01* +X530543Y152679D01* +X530465Y152761D01* +X530392Y152847D01* +X530367Y152864D01* +X530347Y152885D01* +X530249Y152942D01* +X530155Y153005D01* +X530127Y153014D01* +X530102Y153029D01* +X529992Y153056D01* +X529884Y153091D01* +X529855Y153091D01* +X529826Y153099D01* +X529713Y153095D01* +X529600Y153098D01* +X529571Y153091D01* +X529542Y153090D01* +X529434Y153055D01* +X529325Y153026D01* +X529299Y153011D01* +X529271Y153002D01* +X529208Y152957D01* +X529080Y152881D01* +X529067Y152867D01* +X522502Y152867D01* +X521065Y154304D01* +X520995Y154356D01* +X520931Y154416D01* +X520882Y154442D01* +X520838Y154475D01* +X520756Y154506D01* +X520678Y154546D01* +X520631Y154554D01* +X520572Y154576D01* +X520425Y154588D01* +X520347Y154601D01* +X518513Y154601D01* +X518426Y154589D01* +X518339Y154586D01* +X518286Y154569D01* +X518231Y154561D01* +X518151Y154526D01* +X518068Y154499D01* +X518029Y154471D01* +X517972Y154445D01* +X517859Y154349D01* +X517795Y154304D01* +X516358Y152867D01* +X509802Y152867D01* +X508047Y154622D01* +X508047Y157482D01* +X508043Y157511D01* +X508046Y157540D01* +X508023Y157651D01* +X508007Y157763D01* +X507995Y157790D01* +X507990Y157819D01* +X507937Y157919D01* +X507891Y158023D01* +X507872Y158045D01* +X507859Y158071D01* +X507781Y158153D01* +X507708Y158240D01* +X507683Y158256D01* +X507663Y158277D01* +X507565Y158334D01* +X507471Y158397D01* +X507443Y158406D01* +X507418Y158421D01* +X507308Y158449D01* +X507200Y158483D01* +X507171Y158484D01* +X507142Y158491D01* +X507029Y158487D01* +X506916Y158490D01* +X506887Y158483D01* +X506858Y158482D01* +X506750Y158447D01* +X506641Y158419D01* +X506615Y158404D01* +X506587Y158395D01* +X506524Y158349D01* +X506396Y158273D01* +X506353Y158228D01* +X506314Y158200D01* +X506094Y157979D01* +X503957Y157094D01* +X501643Y157094D01* +X499506Y157979D01* +X497871Y159615D01* +X497802Y159781D01* +X497758Y159855D01* +X497723Y159933D01* +X497686Y159976D01* +X497657Y160025D01* +X497595Y160084D01* +X497539Y160150D01* +X497492Y160182D01* +X497451Y160221D01* +X497375Y160260D01* +X497303Y160308D01* +X497249Y160325D01* +X497198Y160351D01* +X497114Y160367D01* +X497032Y160393D01* +X496975Y160395D01* +X496919Y160406D01* +X496834Y160398D01* +X496748Y160401D01* +X496693Y160386D01* +X496636Y160381D01* +X496556Y160351D01* +X496473Y160329D01* +X496424Y160300D01* +X496371Y160279D01* +X496302Y160227D01* +X496228Y160184D01* +X496189Y160142D01* +X496144Y160108D01* +X496092Y160039D01* +X496034Y159976D01* +X496008Y159926D01* +X495974Y159880D01* +X495943Y159800D01* +X495904Y159723D01* +X495896Y159674D01* +X495873Y159614D01* +X495862Y159469D01* +X495849Y159392D01* +X495849Y148597D01* +X471203Y123951D01* +X445023Y123951D01* +X444936Y123939D01* +X444849Y123936D01* +X444796Y123919D01* +X444741Y123911D01* +X444661Y123876D01* +X444578Y123849D01* +X444539Y123821D01* +X444482Y123795D01* +X444369Y123699D01* +X444305Y123654D01* +X442618Y121967D01* +X436562Y121967D01* +X435058Y123471D01* +X435011Y123506D01* +X434971Y123549D01* +X434898Y123591D01* +X434831Y123642D01* +X434776Y123663D01* +X434726Y123692D01* +X434644Y123713D01* +X434565Y123743D01* +X434507Y123748D01* +X434450Y123763D01* +X434366Y123760D01* +X434282Y123767D01* +X434224Y123755D01* +X434166Y123754D01* +X434086Y123728D01* +X434003Y123711D01* +X433951Y123684D01* +X433895Y123666D01* +X433839Y123626D01* +X433751Y123580D01* +X433678Y123511D01* +X433622Y123471D01* +X432118Y121967D01* +X426062Y121967D01* +X424375Y123654D01* +X424305Y123706D01* +X424242Y123766D01* +X424192Y123792D01* +X424148Y123825D01* +X424066Y123856D01* +X423988Y123896D01* +X423941Y123904D01* +X423882Y123926D01* +X423735Y123938D01* +X423657Y123951D01* +X380313Y123951D01* +X380227Y123939D01* +X380139Y123936D01* +X380087Y123919D01* +X380032Y123911D01* +X379952Y123876D01* +X379869Y123849D01* +X379830Y123821D01* +X379772Y123795D01* +X379762Y123787D01* +X379659Y123699D01* +X379595Y123654D01* +X376039Y120098D01* +X367193Y111251D01* +X298863Y111251D01* +X298777Y111239D01* +X298689Y111236D01* +X298637Y111219D01* +X298582Y111211D01* +X298502Y111176D01* +X298419Y111149D01* +X298380Y111121D01* +X298322Y111095D01* +X298209Y110999D01* +X298145Y110954D01* +X278123Y90931D01* +X199397Y90931D01* +X162051Y128277D01* +X162051Y168903D01* +X191463Y198314D01* +X191515Y198384D01* +X191575Y198448D01* +X191600Y198497D01* +X191633Y198541D01* +X191665Y198623D01* +X191704Y198701D01* +X191712Y198749D01* +X191735Y198807D01* +X191747Y198955D01* +X191760Y199032D01* +X191760Y219666D01* +X191760Y219667D01* +X191760Y219669D01* +X191740Y219805D01* +X191720Y219947D01* +X191719Y219949D01* +X191719Y219950D01* +X191662Y220076D01* +X191604Y220206D01* +X191603Y220208D01* +X191602Y220209D01* +X191511Y220316D01* +X191420Y220423D01* +X191419Y220424D01* +X191418Y220426D01* +X191405Y220434D01* +X191184Y220581D01* +X191154Y220590D01* +X191133Y220604D01* +X188621Y221644D01* +X185549Y224717D01* +X183886Y228731D01* +X183886Y233076D01* +X185549Y237091D01* +X188621Y240164D01* +X192636Y241827D01* +X196981Y241827D01* +X200996Y240164D01* +X204069Y237091D01* +X205731Y233076D01* +X205731Y228731D01* +X204069Y224717D01* +X200996Y221644D01* +X198484Y220604D01* +X198483Y220603D01* +X198481Y220602D01* +X198363Y220532D01* +X198239Y220459D01* +X198238Y220458D01* +X198237Y220457D01* +X198139Y220353D01* +X198044Y220252D01* +X198043Y220251D01* +X198042Y220250D01* +X197978Y220123D01* +X197914Y220000D01* +X197914Y219998D01* +X197913Y219997D01* +X197910Y219982D01* +X197859Y219721D01* +X197862Y219690D01* +X197857Y219666D01* +X197857Y196086D01* +X168446Y166675D01* +X168394Y166605D01* +X168334Y166541D01* +X168308Y166491D01* +X168275Y166447D01* +X168244Y166366D01* +X168204Y166288D01* +X168196Y166240D01* +X168174Y166182D01* +X168162Y166034D01* +X168149Y165957D01* +X168149Y161184D01* +X168161Y161098D01* +X168163Y161013D01* +X168181Y160958D01* +X168189Y160902D01* +X168224Y160824D01* +X168250Y160742D01* +X168282Y160694D01* +X168305Y160643D01* +X168360Y160577D01* +X168408Y160506D01* +X168452Y160469D01* +X168488Y160426D01* +X168560Y160378D01* +X168626Y160323D01* +X168678Y160300D01* +X168725Y160268D01* +X168807Y160242D01* +X168886Y160207D01* +X168942Y160199D01* +X168996Y160182D01* +X169082Y160180D01* +X169167Y160168D01* +X169223Y160176D01* +X169280Y160175D01* +X169363Y160197D01* +X169449Y160209D01* +X169500Y160232D01* +X169555Y160247D01* +X169629Y160291D01* +X169708Y160326D01* +X169751Y160363D01* +X169800Y160392D01* +X169859Y160455D01* +X169924Y160510D01* +X169950Y160552D01* +X169994Y160599D01* +X170060Y160728D01* +X170102Y160795D01* +X170349Y161391D01* +X173421Y164464D01* +X177436Y166127D01* +X181781Y166127D01* +X185796Y164464D01* +X188869Y161391D01* +X190531Y157376D01* +X190531Y153031D01* +X188869Y149017D01* +X185796Y145944D01* +X183284Y144904D01* +X183283Y144903D01* +X183281Y144902D01* +X183163Y144832D01* +X183039Y144759D01* +X183038Y144758D01* +X183037Y144757D01* +X182939Y144653D01* +X182844Y144552D01* +X182843Y144551D01* +X182842Y144550D01* +X182778Y144424D01* +X182714Y144300D01* +X182714Y144298D01* +X182713Y144297D01* +X182710Y144282D01* +X182659Y144021D01* +X182662Y143990D01* +X182657Y143966D01* +X182657Y134108D01* +X182669Y134023D01* +X182672Y133937D01* +X182689Y133883D01* +X182697Y133827D01* +X182732Y133748D01* +X182759Y133666D01* +X182790Y133619D01* +X182814Y133567D01* +X182869Y133502D01* +X182917Y133430D01* +X182960Y133394D01* +X182997Y133350D01* +X183069Y133303D01* +X183134Y133247D01* +X183186Y133224D01* +X183234Y133193D01* +X183316Y133167D01* +X183394Y133132D01* +X183451Y133124D01* +X183505Y133107D01* +X183591Y133105D01* +X183676Y133093D01* +X183732Y133101D01* +X183789Y133100D01* +X183872Y133121D01* +X183957Y133134D01* +X184009Y133157D01* +X184064Y133171D01* +X184138Y133215D01* +X184216Y133251D01* +X184260Y133288D01* +X184308Y133317D01* +X184367Y133379D01* +X184433Y133435D01* +X184459Y133477D01* +X184503Y133524D01* +X184569Y133653D01* +X184611Y133720D01* +X185544Y135973D01* +X188616Y139045D01* +X192631Y140708D01* +X196976Y140708D01* +X198541Y140060D01* +X198652Y140031D01* +X198762Y139997D01* +X198790Y139996D01* +X198816Y139989D01* +X198931Y139992D01* +X199046Y139989D01* +X199073Y139996D01* +X199101Y139997D01* +X199210Y140032D01* +X199321Y140061D01* +X199345Y140075D01* +X199371Y140084D01* +X199467Y140148D01* +X199565Y140206D01* +X199584Y140227D01* +X199607Y140242D01* +X199681Y140330D01* +X199760Y140414D01* +X199773Y140438D01* +X199790Y140460D01* +X199837Y140565D01* +X199889Y140667D01* +X199893Y140691D01* +X199906Y140719D01* +X199942Y140983D01* +X199945Y140998D01* +X199945Y171059D01* +X244033Y215147D01* +X280851Y215147D01* +X280853Y215147D01* +X280855Y215147D01* +X280995Y215167D01* +X281133Y215186D01* +X281134Y215187D01* +X281136Y215187D01* +X281262Y215244D01* +X281392Y215303D01* +X281394Y215304D01* +X281395Y215304D01* +X281502Y215396D01* +X281609Y215486D01* +X281610Y215488D01* +X281611Y215489D01* +X281620Y215502D01* +X281767Y215723D01* +X281776Y215752D01* +X281789Y215773D01* +X282830Y218285D01* +X285902Y221358D01* +X289917Y223021D01* +X294262Y223021D01* +X298277Y221358D01* +X301349Y218285D01* +X303012Y214271D01* +X303012Y209925D01* +X301349Y205911D01* +X299325Y203887D01* +X299290Y203840D01* +X299248Y203800D01* +X299205Y203727D01* +X299154Y203659D01* +X299134Y203605D01* +X299104Y203554D01* +X299083Y203473D01* +X299053Y203394D01* +X299048Y203335D01* +X299034Y203279D01* +X299037Y203194D01* +X299030Y203110D01* +X299041Y203053D01* +X299043Y202995D01* +X299069Y202914D01* +X299086Y202832D01* +X299112Y202780D01* +X299130Y202724D01* +X299171Y202668D01* +X299217Y202579D01* +X299285Y202507D01* +X299325Y202451D01* +X304834Y196942D01* +X304857Y196925D01* +X304876Y196902D01* +X304928Y196868D01* +X304952Y196845D01* +X304986Y196828D01* +X305061Y196771D01* +X305088Y196761D01* +X305113Y196745D01* +X305221Y196711D01* +X305327Y196670D01* +X305356Y196668D01* +X305384Y196659D01* +X305497Y196656D01* +X305610Y196647D01* +X305639Y196652D01* +X305668Y196652D01* +X305778Y196680D01* +X305889Y196703D01* +X305915Y196716D01* +X305943Y196724D01* +X306040Y196781D01* +X306141Y196834D01* +X306162Y196854D01* +X306187Y196869D01* +X306265Y196951D01* +X306347Y197029D01* +X306362Y197055D01* +X306382Y197076D01* +X306434Y197177D01* +X306491Y197275D01* +X306498Y197303D01* +X306511Y197329D01* +X306524Y197407D01* +X306538Y197462D01* +X306553Y197508D01* +X306553Y197520D01* +X306561Y197550D01* +X306559Y197613D01* +X306567Y197660D01* +X306567Y201571D01* +X308230Y205585D01* +X311302Y208658D01* +X315317Y210321D01* +X319662Y210321D01* +X323677Y208658D01* +X326749Y205585D01* +X328412Y201571D01* +X328412Y197274D01* +X328421Y197216D01* +X328419Y197158D01* +X328440Y197076D01* +X328452Y196992D01* +X328476Y196939D01* +X328491Y196883D01* +X328534Y196810D01* +X328568Y196733D01* +X328606Y196688D01* +X328636Y196638D01* +X328698Y196580D01* +X328752Y196516D01* +X328801Y196484D01* +X328843Y196444D01* +X328918Y196405D01* +X328989Y196358D01* +X329045Y196341D01* +X329097Y196314D01* +X329165Y196303D01* +X329260Y196273D01* +X329360Y196270D01* +X329428Y196259D01* +X342547Y196259D01* +X342634Y196271D01* +X342721Y196274D01* +X342774Y196291D01* +X342829Y196299D01* +X342909Y196334D01* +X342992Y196361D01* +X343031Y196389D01* +X343088Y196415D01* +X343201Y196511D01* +X343265Y196556D01* +X344702Y197993D01* +X351258Y197993D01* +X352865Y196386D01* +X352935Y196334D01* +X352998Y196274D01* +X353048Y196248D01* +X353092Y196215D01* +X353174Y196184D01* +X353252Y196144D01* +X353299Y196136D01* +X353358Y196114D01* +X353505Y196102D01* +X353583Y196089D01* +X415672Y196089D01* +X415730Y196097D01* +X415788Y196095D01* +X415870Y196117D01* +X415954Y196129D01* +X416007Y196152D01* +X416063Y196167D01* +X416136Y196210D01* +X416213Y196245D01* +X416258Y196283D01* +X416308Y196312D01* +X416366Y196374D01* +X416430Y196428D01* +X416462Y196477D01* +X416502Y196520D01* +X416541Y196595D01* +X416588Y196665D01* +X416605Y196721D01* +X416632Y196773D01* +X416643Y196841D01* +X416673Y196936D01* +X416676Y197036D01* +X416687Y197104D01* +X416687Y203938D01* +X418442Y205693D01* +X419051Y205693D01* +X419138Y205705D01* +X419225Y205708D01* +X419278Y205725D01* +X419333Y205733D01* +X419412Y205768D01* +X419496Y205795D01* +X419535Y205823D01* +X419592Y205849D01* +X419705Y205945D01* +X419769Y205990D01* +X424010Y210231D01* +X424062Y210301D01* +X424122Y210365D01* +X424148Y210414D01* +X424181Y210458D01* +X424212Y210540D01* +X424252Y210618D01* +X424260Y210665D01* +X424282Y210724D01* +X424294Y210872D01* +X424307Y210949D01* +X424307Y214098D01* +X425744Y215535D01* +X425796Y215605D01* +X425856Y215668D01* +X425882Y215718D01* +X425915Y215762D01* +X425946Y215844D01* +X425986Y215922D01* +X425994Y215969D01* +X426016Y216028D01* +X426028Y216175D01* +X426041Y216253D01* +X426041Y219087D01* +X426029Y219173D01* +X426026Y219261D01* +X426009Y219313D01* +X426001Y219368D01* +X425966Y219448D01* +X425939Y219531D01* +X425911Y219571D01* +X425885Y219628D01* +X425831Y219691D01* +X425831Y222243D01* +X428670Y225081D01* +X428722Y225151D01* +X428782Y225215D01* +X428808Y225264D01* +X428841Y225309D01* +X428872Y225390D01* +X428912Y225468D01* +X428920Y225516D01* +X428942Y225574D01* +X428954Y225722D01* +X428967Y225799D01* +X428967Y233417D01* +X431053Y235502D01* +X431088Y235549D01* +X431130Y235589D01* +X431173Y235662D01* +X431223Y235729D01* +X431244Y235784D01* +X431274Y235834D01* +X431295Y235916D01* +X431325Y235995D01* +X431329Y236053D01* +X431344Y236110D01* +X431341Y236194D01* +X431348Y236278D01* +X431337Y236336D01* +X431335Y236394D01* +X431309Y236474D01* +X431292Y236557D01* +X431265Y236609D01* +X431247Y236665D01* +X431207Y236721D01* +X431161Y236809D01* +X431103Y236871D01* +X431091Y236891D01* +X431076Y236905D01* +X431053Y236938D01* +X428967Y239023D01* +X428967Y248657D01* +X430823Y250512D01* +X430823Y250513D01* +X431183Y250873D01* +X441817Y250873D01* +X443782Y248907D01* +X443829Y248872D01* +X443869Y248830D01* +X443942Y248787D01* +X444009Y248737D01* +X444064Y248716D01* +X444114Y248686D01* +X444196Y248665D01* +X444275Y248635D01* +X444333Y248631D01* +X444390Y248616D01* +X444474Y248619D01* +X444558Y248612D01* +X444616Y248623D01* +X444674Y248625D01* +X444754Y248651D01* +X444837Y248668D01* +X444889Y248695D01* +X444945Y248713D01* +X445001Y248753D01* +X445089Y248799D01* +X445162Y248867D01* +X445218Y248907D01* +X447053Y250742D01* +X447088Y250789D01* +X447130Y250829D01* +X447173Y250902D01* +X447223Y250969D01* +X447244Y251024D01* +X447274Y251074D01* +X447295Y251156D01* +X447325Y251235D01* +X447329Y251293D01* +X447344Y251350D01* +X447341Y251434D01* +X447348Y251518D01* +X447337Y251576D01* +X447335Y251634D01* +X447309Y251714D01* +X447292Y251797D01* +X447265Y251849D01* +X447247Y251905D01* +X447207Y251961D01* +X447161Y252049D01* +X447115Y252098D01* +X447102Y252120D01* +X447077Y252143D01* +X447053Y252178D01* +X444967Y254263D01* +X444967Y263897D01* +X447183Y266113D01* +X457817Y266113D01* +X460090Y263840D01* +X460096Y263825D01* +X460111Y263769D01* +X460154Y263696D01* +X460189Y263619D01* +X460227Y263574D01* +X460256Y263524D01* +X460318Y263466D01* +X460372Y263402D01* +X460421Y263370D01* +X460464Y263330D01* +X460539Y263291D01* +X460609Y263244D01* +X460665Y263227D01* +X460717Y263200D01* +X460785Y263189D01* +X460880Y263159D01* +X460980Y263156D01* +X461048Y263145D01* +X469044Y263145D01* +X469536Y262652D01* +X469606Y262600D01* +X469670Y262540D01* +X469719Y262514D01* +X469764Y262481D01* +X469845Y262450D01* +X469923Y262410D01* +X469971Y262402D01* +X470029Y262380D01* +X470177Y262368D01* +X470254Y262355D01* +X471057Y262355D01* +X473194Y261469D01* +X474777Y259886D01* +X474847Y259834D01* +X474911Y259774D01* +X474960Y259748D01* +X475004Y259715D01* +X475086Y259684D01* +X475164Y259644D01* +X475212Y259636D01* +X475270Y259614D01* +X475418Y259602D01* +X475495Y259589D01* +X479092Y259589D01* +X479150Y259597D01* +X479208Y259595D01* +X479290Y259617D01* +X479374Y259629D01* +X479427Y259652D01* +X479483Y259667D01* +X479556Y259710D01* +X479633Y259745D01* +X479678Y259783D01* +X479728Y259812D01* +X479786Y259874D01* +X479850Y259928D01* +X479882Y259977D01* +X479922Y260020D01* +X479961Y260095D01* +X480008Y260165D01* +X480025Y260221D01* +X480052Y260273D01* +X480063Y260341D01* +X480093Y260436D01* +X480096Y260536D01* +X480107Y260604D01* +X480107Y262278D01* +X481862Y264033D01* +X488418Y264033D01* +X490173Y262278D01* +X490173Y256222D01* +X488669Y254718D01* +X488634Y254671D01* +X488591Y254631D01* +X488549Y254558D01* +X488498Y254491D01* +X488477Y254436D01* +X488448Y254386D01* +X488427Y254304D01* +X488397Y254225D01* +X488392Y254167D01* +X488377Y254110D01* +X488380Y254026D01* +X488373Y253942D01* +X488385Y253884D01* +X488386Y253826D01* +X488412Y253746D01* +X488429Y253663D01* +X488456Y253611D01* +X488474Y253555D01* +X488514Y253499D01* +X488560Y253411D01* +X488629Y253338D01* +X488669Y253282D01* +X489855Y252096D01* +X489925Y252044D01* +X489989Y251984D01* +X490038Y251958D01* +X490082Y251925D01* +X490164Y251894D01* +X490242Y251854D01* +X490289Y251846D01* +X490348Y251824D01* +X490495Y251812D01* +X490573Y251799D01* +X492407Y251799D01* +X492494Y251811D01* +X492581Y251814D01* +X492634Y251831D01* +X492689Y251839D01* +X492769Y251874D01* +X492852Y251901D01* +X492891Y251929D01* +X492948Y251955D01* +X493061Y252051D01* +X493125Y252096D01* +X494562Y253533D01* +X501118Y253533D01* +X502555Y252096D01* +X502625Y252044D01* +X502688Y251984D01* +X502738Y251958D01* +X502782Y251925D01* +X502864Y251894D01* +X502942Y251854D01* +X502989Y251846D01* +X503048Y251824D01* +X503195Y251812D01* +X503273Y251799D01* +X505107Y251799D01* +X505194Y251811D01* +X505281Y251814D01* +X505334Y251831D01* +X505389Y251839D01* +X505469Y251874D01* +X505552Y251901D01* +X505591Y251929D01* +X505648Y251955D01* +X505761Y252051D01* +X505825Y252096D01* +X507011Y253282D01* +X507046Y253329D01* +X507089Y253369D01* +X507131Y253442D01* +X507182Y253509D01* +X507203Y253564D01* +X507232Y253614D01* +X507253Y253696D01* +X507283Y253775D01* +X507288Y253833D01* +X507303Y253890D01* +X507300Y253974D01* +X507307Y254058D01* +X507295Y254116D01* +X507294Y254174D01* +X507268Y254254D01* +X507251Y254337D01* +X507224Y254389D01* +X507206Y254445D01* +X507166Y254501D01* +X507120Y254589D01* +X507051Y254662D01* +X507011Y254718D01* +X505507Y256222D01* +X505507Y262278D01* +X507262Y264033D01* +X513818Y264033D01* +X515255Y262596D01* +X515325Y262544D01* +X515389Y262484D01* +X515438Y262458D01* +X515482Y262425D01* +X515564Y262394D01* +X515642Y262354D01* +X515689Y262346D01* +X515748Y262324D01* +X515895Y262312D01* +X515973Y262299D01* +X522887Y262299D01* +X522974Y262311D01* +X523061Y262314D01* +X523114Y262331D01* +X523169Y262339D01* +X523249Y262374D01* +X523332Y262401D01* +X523371Y262429D01* +X523428Y262455D01* +X523541Y262551D01* +X523605Y262596D01* +X525122Y264113D01* +X531178Y264113D01* +X532682Y262609D01* +X532729Y262574D01* +X532769Y262531D01* +X532842Y262489D01* +X532909Y262438D01* +X532964Y262417D01* +X533014Y262388D01* +X533096Y262367D01* +X533175Y262337D01* +X533233Y262332D01* +X533290Y262317D01* +X533374Y262320D01* +X533458Y262313D01* +X533516Y262325D01* +X533574Y262326D01* +X533654Y262352D01* +X533737Y262369D01* +X533789Y262396D01* +X533845Y262414D01* +X533901Y262454D01* +X533989Y262500D01* +X534062Y262569D01* +X534118Y262609D01* +X535622Y264113D01* +X541678Y264113D01* +X542846Y262945D01* +X542893Y262910D01* +X542933Y262867D01* +X542959Y262852D01* +X542976Y262836D01* +X543021Y262813D01* +X543073Y262774D01* +X543128Y262753D01* +X543178Y262724D01* +X543214Y262715D01* +X543229Y262707D01* +X543265Y262701D01* +X543339Y262673D01* +X543397Y262668D01* +X543454Y262654D01* +X543532Y262656D01* +X543560Y262651D01* +X543568Y262651D01* +X543578Y262653D01* +X543622Y262649D01* +X543679Y262661D01* +X543738Y262663D01* +X543809Y262686D01* +X543849Y262691D01* +X543863Y262698D01* +X543901Y262705D01* +X543953Y262732D01* +X544008Y262750D01* +X544056Y262784D01* +X544109Y262808D01* +X544125Y262822D01* +X544153Y262836D01* +X544226Y262905D01* +X544282Y262945D01* +X545346Y264009D01* +X547483Y264895D01* +X549797Y264895D01* +X551836Y264050D01* +X551920Y264028D01* +X552000Y263998D01* +X552057Y263993D01* +X552112Y263979D01* +X552198Y263981D01* +X552283Y263974D01* +X552339Y263985D01* +X552396Y263987D01* +X552478Y264013D01* +X552562Y264030D01* +X552612Y264056D01* +X552667Y264074D01* +X552738Y264122D01* +X552814Y264161D01* +X552855Y264200D01* +X552903Y264232D01* +X552958Y264298D01* +X553020Y264357D01* +X553049Y264406D01* +X553086Y264450D01* +X553121Y264528D01* +X553164Y264602D01* +X553178Y264657D01* +X553201Y264709D01* +X553213Y264795D01* +X553234Y264878D01* +X553232Y264934D01* +X553240Y264991D01* +X553228Y265076D01* +X553225Y265162D01* +X553208Y265216D01* +X553199Y265272D01* +X553164Y265351D01* +X553138Y265432D01* +X553109Y265473D01* +X553082Y265531D01* +X552988Y265642D01* +X552943Y265706D01* +X540638Y278011D01* +X540546Y278080D01* +X540458Y278154D01* +X540433Y278165D01* +X540411Y278182D01* +X540303Y278223D01* +X540198Y278269D01* +X540171Y278273D01* +X540145Y278283D01* +X540031Y278292D01* +X539917Y278308D01* +X539889Y278304D01* +X539862Y278306D01* +X539749Y278284D01* +X539635Y278267D01* +X539610Y278256D01* +X539583Y278250D01* +X539481Y278198D01* +X539376Y278150D01* +X539355Y278132D01* +X539331Y278119D01* +X539247Y278040D01* +X539160Y277966D01* +X539147Y277945D01* +X539124Y277924D01* +X538990Y277694D01* +X538982Y277681D01* +X538329Y276106D01* +X536694Y274471D01* +X534557Y273585D01* +X532243Y273585D01* +X530106Y274471D01* +X528471Y276106D01* +X527585Y278243D01* +X527585Y280483D01* +X527573Y280569D01* +X527570Y280657D01* +X527553Y280709D01* +X527545Y280764D01* +X527510Y280844D01* +X527483Y280927D01* +X527455Y280966D01* +X527429Y281024D01* +X527333Y281137D01* +X527288Y281201D01* +X513907Y294582D01* +X513860Y294617D01* +X513820Y294659D01* +X513747Y294702D01* +X513680Y294752D01* +X513625Y294773D01* +X513575Y294803D01* +X513493Y294824D01* +X513414Y294854D01* +X513356Y294859D01* +X513299Y294873D01* +X513215Y294870D01* +X513131Y294877D01* +X513073Y294866D01* +X513015Y294864D01* +X512935Y294838D01* +X512852Y294821D01* +X512800Y294794D01* +X512744Y294776D01* +X512688Y294736D01* +X512600Y294690D01* +X512527Y294622D01* +X512471Y294582D01* +X510577Y292687D01* +X496943Y292687D01* +X496590Y293041D01* +X496566Y293058D01* +X496547Y293081D01* +X496453Y293143D01* +X496363Y293211D01* +X496335Y293222D01* +X496311Y293238D01* +X496203Y293272D01* +X496097Y293313D01* +X496068Y293315D01* +X496040Y293324D01* +X495926Y293327D01* +X495814Y293336D01* +X495785Y293330D01* +X495756Y293331D01* +X495646Y293303D01* +X495535Y293280D01* +X495509Y293267D01* +X495481Y293259D01* +X495383Y293202D01* +X495283Y293149D01* +X495261Y293129D01* +X495236Y293114D01* +X495159Y293032D01* +X495077Y292954D01* +X495062Y292928D01* +X495042Y292907D01* +X494990Y292806D01* +X494933Y292708D01* +X494926Y292680D01* +X494912Y292654D01* +X494899Y292576D01* +X494863Y292433D01* +X494865Y292370D01* +X494857Y292323D01* +X494857Y282695D01* +X491285Y279123D01* +X450795Y279123D01* +X438911Y291007D01* +X438911Y291577D01* +X438899Y291664D01* +X438896Y291751D01* +X438879Y291804D01* +X438871Y291859D01* +X438836Y291939D01* +X438809Y292022D01* +X438781Y292061D01* +X438755Y292118D01* +X438659Y292231D01* +X438614Y292295D01* +X436927Y293982D01* +X436927Y300038D01* +X438431Y301542D01* +X438444Y301560D01* +X438457Y301571D01* +X438475Y301597D01* +X438509Y301629D01* +X438551Y301702D01* +X438602Y301769D01* +X438623Y301824D01* +X438652Y301874D01* +X438673Y301956D01* +X438703Y302035D01* +X438708Y302093D01* +X438723Y302150D01* +X438720Y302234D01* +X438727Y302318D01* +X438715Y302376D01* +X438714Y302434D01* +X438688Y302514D01* +X438671Y302597D01* +X438644Y302649D01* +X438626Y302705D01* +X438586Y302761D01* +X438540Y302849D01* +X438471Y302922D01* +X438431Y302978D01* +X436927Y304482D01* +X436927Y310538D01* +X437774Y311385D01* +X437826Y311455D01* +X437886Y311519D01* +X437912Y311568D01* +X437945Y311612D01* +X437976Y311694D01* +X438016Y311772D01* +X438024Y311819D01* +X438046Y311878D01* +X438058Y312025D01* +X438071Y312103D01* +X438071Y312652D01* +X438063Y312710D01* +X438065Y312768D01* +X438043Y312850D01* +X438031Y312934D01* +X438008Y312987D01* +X437993Y313043D01* +X437950Y313116D01* +X437915Y313193D01* +X437877Y313238D01* +X437848Y313288D01* +X437786Y313346D01* +X437732Y313410D01* +X437683Y313442D01* +X437640Y313482D01* +X437565Y313521D01* +X437495Y313568D01* +X437439Y313585D01* +X437387Y313612D01* +X437319Y313623D01* +X437224Y313653D01* +X437124Y313656D01* +X437056Y313667D01* +X434303Y313667D01* +X432087Y315883D01* +X432087Y316636D01* +X432079Y316694D01* +X432081Y316752D01* +X432059Y316834D01* +X432047Y316918D01* +X432024Y316971D01* +X432009Y317027D01* +X431966Y317100D01* +X431931Y317177D01* +X431893Y317222D01* +X431864Y317272D01* +X431802Y317330D01* +X431748Y317394D01* +X431699Y317426D01* +X431656Y317466D01* +X431581Y317505D01* +X431511Y317552D01* +X431455Y317569D01* +X431403Y317596D01* +X431335Y317607D01* +X431240Y317637D01* +X431140Y317640D01* +X431072Y317651D01* +X414637Y317651D01* +X413948Y318341D01* +X413924Y318358D01* +X413905Y318381D01* +X413811Y318443D01* +X413721Y318511D01* +X413693Y318522D01* +X413669Y318538D01* +X413561Y318572D01* +X413455Y318613D01* +X413426Y318615D01* +X413398Y318624D01* +X413284Y318627D01* +X413172Y318636D01* +X413143Y318631D01* +X413114Y318631D01* +X413004Y318603D01* +X412893Y318580D01* +X412867Y318567D01* +X412839Y318559D01* +X412741Y318502D01* +X412641Y318449D01* +X412619Y318429D01* +X412594Y318414D01* +X412517Y318332D01* +X412435Y318254D01* +X412420Y318228D01* +X412400Y318207D01* +X412348Y318106D01* +X412291Y318008D01* +X412284Y317980D01* +X412270Y317954D01* +X412257Y317876D01* +X412221Y317733D01* +X412223Y317670D01* +X412215Y317623D01* +X412215Y316343D01* +X411329Y314206D01* +X409694Y312571D01* +X407557Y311685D01* +X405243Y311685D01* +X403106Y312571D01* +X401471Y314206D01* +X400585Y316343D01* +X400585Y318657D01* +X401471Y320794D01* +X402845Y322168D01* +X402863Y322192D01* +X402885Y322211D01* +X402948Y322305D01* +X403016Y322395D01* +X403026Y322423D01* +X403042Y322447D01* +X403077Y322555D01* +X403117Y322661D01* +X403119Y322690D01* +X403128Y322718D01* +X403131Y322832D01* +X403141Y322944D01* +X403135Y322973D01* +X403136Y323002D01* +X403107Y323112D01* +X403085Y323223D01* +X403071Y323249D01* +X403064Y323277D01* +X403006Y323375D01* +X402954Y323475D01* +X402933Y323497D01* +X402918Y323522D01* +X402836Y323599D01* +X402758Y323681D01* +X402733Y323696D01* +X402711Y323716D01* +X402610Y323768D01* +X402513Y323825D01* +X402484Y323832D01* +X402458Y323846D01* +X402381Y323859D01* +X402237Y323895D01* +X402175Y323893D01* +X402127Y323901D01* +X343978Y323901D01* +X343920Y323893D01* +X343862Y323895D01* +X343780Y323873D01* +X343696Y323861D01* +X343643Y323838D01* +X343587Y323823D01* +X343514Y323780D01* +X343437Y323745D01* +X343392Y323707D01* +X343342Y323678D01* +X343284Y323616D01* +X343220Y323562D01* +X343188Y323513D01* +X343148Y323470D01* +X343109Y323395D01* +X343062Y323325D01* +X343045Y323269D01* +X343018Y323217D01* +X343007Y323149D01* +X342977Y323054D01* +X342974Y322954D01* +X342963Y322886D01* +X342963Y318018D01* +X342863Y317918D01* +X342828Y317871D01* +X342785Y317831D01* +X342742Y317758D01* +X342692Y317691D01* +X342671Y317636D01* +X342641Y317586D01* +X342620Y317504D01* +X342590Y317425D01* +X342586Y317367D01* +X342571Y317310D01* +X342574Y317226D01* +X342567Y317142D01* +X342578Y317084D01* +X342580Y317026D01* +X342606Y316946D01* +X342623Y316863D01* +X342650Y316811D01* +X342668Y316755D01* +X342708Y316699D01* +X342754Y316611D01* +X342822Y316538D01* +X342863Y316482D01* +X342963Y316382D01* +X342963Y311518D01* +X342863Y311418D01* +X342828Y311371D01* +X342785Y311331D01* +X342742Y311258D01* +X342692Y311191D01* +X342671Y311136D01* +X342641Y311086D01* +X342620Y311004D01* +X342590Y310925D01* +X342586Y310867D01* +X342571Y310810D01* +X342574Y310726D01* +X342567Y310642D01* +X342578Y310584D01* +X342580Y310526D01* +X342606Y310446D01* +X342623Y310363D01* +X342650Y310311D01* +X342668Y310255D01* +X342708Y310199D01* +X342754Y310111D01* +X342822Y310038D01* +X342863Y309982D01* +X342963Y309882D01* +X342963Y305018D01* +X342863Y304918D01* +X342828Y304871D01* +X342785Y304831D01* +X342742Y304758D01* +X342692Y304691D01* +X342671Y304636D01* +X342641Y304586D01* +X342620Y304504D01* +X342590Y304425D01* +X342586Y304367D01* +X342571Y304310D01* +X342574Y304226D01* +X342567Y304142D01* +X342578Y304084D01* +X342580Y304026D01* +X342606Y303946D01* +X342623Y303863D01* +X342650Y303811D01* +X342668Y303755D01* +X342708Y303699D01* +X342754Y303611D01* +X342822Y303538D01* +X342863Y303482D01* +X342963Y303382D01* +X342963Y298518D01* +X341362Y296917D01* +X325498Y296917D01* +X323897Y298518D01* +X323897Y303382D01* +X323997Y303482D01* +X324033Y303529D01* +X324075Y303569D01* +X324118Y303642D01* +X324168Y303709D01* +X324189Y303764D01* +X324219Y303814D01* +X324239Y303896D01* +X324270Y303975D01* +X324274Y304033D01* +X324289Y304090D01* +X324286Y304174D01* +X324293Y304258D01* +X324282Y304316D01* +X324280Y304374D01* +X324254Y304454D01* +X324237Y304537D01* +X324210Y304589D01* +X324192Y304645D01* +X324152Y304701D01* +X324106Y304789D01* +X324037Y304862D01* +X323997Y304918D01* +X323897Y305018D01* +X323897Y309882D01* +X323997Y309982D01* +X324033Y310029D01* +X324075Y310069D01* +X324118Y310142D01* +X324168Y310209D01* +X324189Y310264D01* +X324219Y310314D01* +X324239Y310396D01* +X324270Y310475D01* +X324274Y310533D01* +X324289Y310590D01* +X324286Y310674D01* +X324293Y310758D01* +X324282Y310816D01* +X324280Y310874D01* +X324254Y310954D01* +X324237Y311037D01* +X324210Y311089D01* +X324192Y311145D01* +X324152Y311201D01* +X324106Y311289D01* +X324037Y311362D01* +X323997Y311418D01* +X323897Y311518D01* +X323897Y316382D01* +X323997Y316482D01* +X324033Y316529D01* +X324075Y316569D01* +X324118Y316642D01* +X324168Y316709D01* +X324189Y316764D01* +X324219Y316814D01* +X324239Y316896D01* +X324270Y316975D01* +X324274Y317033D01* +X324289Y317090D01* +X324286Y317174D01* +X324293Y317258D01* +X324282Y317316D01* +X324280Y317374D01* +X324254Y317454D01* +X324237Y317537D01* +X324210Y317589D01* +X324192Y317645D01* +X324152Y317701D01* +X324106Y317789D01* +X324037Y317862D01* +X323997Y317918D01* +X323897Y318018D01* +X323897Y322882D01* +X323997Y322982D01* +X324033Y323029D01* +X324075Y323069D01* +X324118Y323142D01* +X324168Y323209D01* +X324189Y323264D01* +X324219Y323314D01* +X324239Y323396D01* +X324270Y323475D01* +X324274Y323533D01* +X324289Y323590D01* +X324286Y323674D01* +X324293Y323758D01* +X324282Y323816D01* +X324280Y323874D01* +X324254Y323954D01* +X324237Y324037D01* +X324210Y324089D01* +X324192Y324145D01* +X324152Y324201D01* +X324106Y324289D01* +X324037Y324362D01* +X323997Y324418D01* +X323897Y324518D01* +X323897Y329382D01* +X323997Y329482D01* +X324033Y329529D01* +X324075Y329569D01* +X324118Y329642D01* +X324168Y329709D01* +X324189Y329764D01* +X324219Y329814D01* +X324239Y329896D01* +X324270Y329975D01* +X324274Y330033D01* +X324289Y330090D01* +X324286Y330174D01* +X324293Y330258D01* +X324282Y330316D01* +X324280Y330374D01* +X324254Y330454D01* +X324237Y330537D01* +X324210Y330589D01* +X324192Y330645D01* +X324152Y330701D01* +X324106Y330789D01* +X324037Y330862D01* +X323997Y330918D01* +X323897Y331018D01* +X323897Y335882D01* +X323997Y335982D01* +X324033Y336029D01* +X324075Y336069D01* +X324118Y336142D01* +X324168Y336209D01* +X324189Y336264D01* +X324219Y336314D01* +X324239Y336396D01* +X324270Y336475D01* +X324274Y336533D01* +X324289Y336590D01* +X324286Y336674D01* +X324293Y336758D01* +X324282Y336816D01* +X324280Y336874D01* +X324254Y336954D01* +X324237Y337037D01* +X324210Y337089D01* +X324192Y337145D01* +X324152Y337201D01* +X324106Y337289D01* +X324037Y337362D01* +X323997Y337418D01* +X323897Y337518D01* +X323897Y342382D01* +X323997Y342482D01* +X324033Y342529D01* +X324075Y342569D01* +X324118Y342642D01* +X324168Y342709D01* +X324189Y342764D01* +X324219Y342814D01* +X324239Y342896D01* +X324270Y342975D01* +X324274Y343033D01* +X324289Y343090D01* +X324286Y343174D01* +X324293Y343258D01* +X324282Y343316D01* +X324280Y343374D01* +X324254Y343454D01* +X324237Y343537D01* +X324210Y343589D01* +X324192Y343645D01* +X324152Y343701D01* +X324106Y343789D01* +X324037Y343862D01* +X323997Y343918D01* +X323897Y344018D01* +X323897Y348882D01* +X323997Y348982D01* +X324033Y349029D01* +X324075Y349069D01* +X324118Y349142D01* +X324168Y349209D01* +X324189Y349264D01* +X324219Y349314D01* +X324239Y349396D01* +X324270Y349475D01* +X324274Y349533D01* +X324289Y349590D01* +X324286Y349674D01* +X324293Y349758D01* +X324282Y349816D01* +X324280Y349874D01* +X324254Y349954D01* +X324237Y350037D01* +X324210Y350089D01* +X324192Y350145D01* +X324152Y350201D01* +X324106Y350289D01* +X324037Y350362D01* +X323997Y350418D01* +X323897Y350518D01* +X323897Y355382D01* +X323997Y355482D01* +X324033Y355529D01* +X324075Y355569D01* +X324118Y355642D01* +X324168Y355709D01* +X324189Y355764D01* +X324219Y355814D01* +X324239Y355896D01* +X324270Y355975D01* +X324274Y356033D01* +X324289Y356090D01* +X324286Y356174D01* +X324293Y356258D01* +X324282Y356316D01* +X324280Y356374D01* +X324254Y356454D01* +X324237Y356537D01* +X324210Y356589D01* +X324192Y356645D01* +X324152Y356701D01* +X324106Y356789D01* +X324037Y356862D01* +X323997Y356918D01* +X323897Y357018D01* +X323897Y361882D01* +X325498Y363483D01* +X341362Y363483D01* +X342049Y362796D01* +X342118Y362744D01* +X342182Y362684D01* +X342232Y362658D01* +X342276Y362625D01* +X342357Y362594D01* +X342435Y362554D01* +X342483Y362546D01* +X342541Y362524D01* +X342689Y362512D01* +X342766Y362499D01* +X344552Y362499D01* +X344610Y362507D01* +X344668Y362505D01* +X344750Y362527D01* +X344834Y362539D01* +X344887Y362562D01* +X344943Y362577D01* +X345016Y362620D01* +X345093Y362655D01* +X345138Y362693D01* +X345188Y362722D01* +X345246Y362784D01* +X345310Y362838D01* +X345342Y362887D01* +X345382Y362930D01* +X345421Y363005D01* +X345468Y363075D01* +X345485Y363131D01* +X345512Y363183D01* +X345523Y363251D01* +X345553Y363346D01* +X345556Y363446D01* +X345567Y363514D01* +X345567Y365252D01* +X345560Y365301D01* +X345561Y365308D01* +X345559Y365313D01* +X345561Y365368D01* +X345539Y365450D01* +X345527Y365534D01* +X345504Y365587D01* +X345489Y365643D01* +X345446Y365716D01* +X345411Y365793D01* +X345373Y365838D01* +X345344Y365888D01* +X345282Y365946D01* +X345228Y366010D01* +X345179Y366042D01* +X345136Y366082D01* +X345061Y366121D01* +X344991Y366168D01* +X344935Y366185D01* +X344883Y366212D01* +X344815Y366223D01* +X344720Y366253D01* +X344620Y366256D01* +X344552Y366267D01* +X305627Y366267D01* +X305540Y366255D01* +X305453Y366252D01* +X305400Y366235D01* +X305345Y366227D01* +X305265Y366192D01* +X305182Y366165D01* +X305143Y366137D01* +X305086Y366111D01* +X304973Y366015D01* +X304909Y365970D01* +X275840Y336901D01* +X271478Y336901D01* +X271420Y336893D01* +X271362Y336895D01* +X271280Y336873D01* +X271196Y336861D01* +X271143Y336838D01* +X271087Y336823D01* +X271014Y336780D01* +X270937Y336745D01* +X270892Y336707D01* +X270842Y336678D01* +X270784Y336616D01* +X270720Y336562D01* +X270688Y336513D01* +X270648Y336470D01* +X270609Y336395D01* +X270562Y336325D01* +X270545Y336269D01* +X270518Y336217D01* +X270507Y336149D01* +X270477Y336054D01* +X270474Y335954D01* +X270463Y335886D01* +X270463Y331018D01* +X270363Y330918D01* +X270327Y330871D01* +X270285Y330831D01* +X270242Y330758D01* +X270192Y330691D01* +X270171Y330636D01* +X270141Y330586D01* +X270121Y330504D01* +X270090Y330425D01* +X270086Y330367D01* +X270071Y330310D01* +X270074Y330226D01* +X270067Y330142D01* +X270078Y330084D01* +X270080Y330026D01* +X270106Y329946D01* +X270123Y329863D01* +X270150Y329811D01* +X270168Y329755D01* +X270208Y329699D01* +X270254Y329611D01* +X270323Y329538D01* +X270363Y329482D01* +X270463Y329382D01* +X270463Y324518D01* +X270363Y324418D01* +X270327Y324371D01* +X270285Y324331D01* +X270242Y324258D01* +X270192Y324191D01* +X270171Y324136D01* +X270141Y324086D01* +X270121Y324004D01* +X270090Y323925D01* +X270086Y323867D01* +X270071Y323810D01* +X270074Y323726D01* +X270067Y323642D01* +X270078Y323584D01* +X270080Y323526D01* +X270106Y323446D01* +X270123Y323363D01* +X270150Y323311D01* +X270168Y323255D01* +X270208Y323199D01* +X270254Y323111D01* +X270323Y323038D01* +X270363Y322982D01* +X270463Y322882D01* +X270463Y318018D01* +X268862Y316417D01* +X252998Y316417D01* +X252692Y316723D01* +X252623Y316775D01* +X252559Y316835D01* +X252509Y316861D01* +X252465Y316894D01* +X252384Y316925D01* +X252306Y316965D01* +X252258Y316973D01* +X252200Y316995D01* +X252052Y317007D01* +X251975Y317020D01* +X247962Y317020D01* +X247933Y317016D01* +X247904Y317019D01* +X247793Y316996D01* +X247681Y316980D01* +X247654Y316968D01* +X247625Y316963D01* +X247525Y316910D01* +X247421Y316864D01* +X247399Y316845D01* +X247373Y316832D01* +X247291Y316754D01* +X247204Y316681D01* +X247188Y316656D01* +X247167Y316636D01* +X247110Y316538D01* +X247047Y316444D01* +X247038Y316416D01* +X247023Y316391D01* +X246995Y316281D01* +X246961Y316173D01* +X246960Y316143D01* +X246953Y316115D01* +X246957Y316002D01* +X246954Y315889D01* +X246961Y315860D01* +X246962Y315831D01* +X246997Y315723D01* +X247026Y315614D01* +X247040Y315588D01* +X247050Y315560D01* +X247095Y315496D01* +X247171Y315369D01* +X247216Y315326D01* +X247244Y315287D01* +X249036Y313495D01* +X251306Y311226D01* +X251352Y311191D01* +X251393Y311148D01* +X251465Y311106D01* +X251533Y311055D01* +X251587Y311034D01* +X251638Y311005D01* +X251720Y310984D01* +X251798Y310954D01* +X251857Y310949D01* +X251913Y310935D01* +X251998Y310937D01* +X252082Y310930D01* +X252139Y310942D01* +X252198Y310944D01* +X252278Y310970D01* +X252360Y310986D01* +X252412Y311013D01* +X252468Y311031D01* +X252524Y311071D01* +X252613Y311117D01* +X252685Y311186D01* +X252741Y311226D01* +X252998Y311483D01* +X268862Y311483D01* +X270463Y309882D01* +X270463Y305018D01* +X270363Y304918D01* +X270327Y304871D01* +X270285Y304831D01* +X270242Y304758D01* +X270192Y304691D01* +X270171Y304636D01* +X270141Y304586D01* +X270121Y304504D01* +X270090Y304425D01* +X270086Y304367D01* +X270071Y304310D01* +X270074Y304226D01* +X270067Y304142D01* +X270078Y304084D01* +X270080Y304026D01* +X270106Y303946D01* +X270123Y303863D01* +X270150Y303811D01* +X270168Y303755D01* +X270208Y303699D01* +X270254Y303611D01* +X270323Y303538D01* +X270363Y303482D01* +X270463Y303382D01* +X270463Y298518D01* +X268862Y296917D01* +X252988Y296917D01* +X252979Y296927D01* +X252906Y296969D01* +X252839Y297020D01* +X252785Y297041D01* +X252734Y297070D01* +X252652Y297091D01* +X252574Y297121D01* +X252515Y297126D01* +X252459Y297140D01* +X252374Y297138D01* +X252290Y297145D01* +X252233Y297133D01* +X252174Y297131D01* +X252094Y297105D01* +X252012Y297089D01* +X251959Y297062D01* +X251904Y297044D01* +X251848Y297004D01* +X251759Y296958D01* +X251687Y296889D01* +X251631Y296849D01* +X250956Y296175D01* +X250904Y296105D01* +X250844Y296041D01* +X250818Y295991D01* +X250785Y295947D01* +X250754Y295866D01* +X250714Y295788D01* +X250706Y295740D01* +X250684Y295682D01* +X250672Y295534D01* +X250659Y295457D01* +X250659Y289527D01* +X248576Y287444D01* +X248575Y287444D01* +X244646Y283515D01* +X244646Y283514D01* +X242563Y281431D01* +X208197Y281431D01* +X203900Y285728D01* +X199350Y290278D01* +X199311Y290317D01* +X199311Y290542D01* +X199303Y290600D01* +X199305Y290658D01* +X199283Y290740D01* +X199271Y290824D01* +X199248Y290877D01* +X199233Y290933D01* +X199190Y291006D01* +X199155Y291083D01* +X199117Y291128D01* +X199088Y291178D01* +X199026Y291236D01* +X198972Y291300D01* +X198923Y291332D01* +X198880Y291372D01* +X198805Y291411D01* +X198735Y291458D01* +X198679Y291475D01* +X198627Y291502D01* +X198559Y291513D01* +X198464Y291543D01* +X198364Y291546D01* +X198296Y291557D01* +X195697Y291557D01* +X193327Y293927D01* +X193327Y296945D01* +X193323Y296974D01* +X193326Y297004D01* +X193303Y297114D01* +X193287Y297227D01* +X193275Y297254D01* +X193270Y297282D01* +X193217Y297383D01* +X193171Y297486D01* +X193152Y297509D01* +X193139Y297535D01* +X193061Y297617D01* +X192988Y297703D01* +X192963Y297720D01* +X192943Y297741D01* +X192845Y297798D01* +X192751Y297861D01* +X192723Y297870D01* +X192698Y297885D01* +X192588Y297912D01* +X192480Y297947D01* +X192450Y297947D01* +X192422Y297955D01* +X192309Y297951D01* +X192196Y297954D01* +X192167Y297947D01* +X192138Y297946D01* +X192030Y297911D01* +X191921Y297882D01* +X191895Y297867D01* +X191867Y297858D01* +X191803Y297812D01* +X191676Y297737D01* +X191633Y297691D01* +X191594Y297663D01* +X191238Y297307D01* +X184682Y297307D01* +X182927Y299062D01* +X182927Y305118D01* +X184682Y306873D01* +X191238Y306873D01* +X192625Y305486D01* +X192671Y305451D01* +X192712Y305409D01* +X192785Y305366D01* +X192852Y305315D01* +X192907Y305295D01* +X192957Y305265D01* +X193039Y305244D01* +X193118Y305214D01* +X193176Y305209D01* +X193232Y305195D01* +X193317Y305198D01* +X193401Y305191D01* +X193458Y305202D01* +X193517Y305204D01* +X193597Y305230D01* +X193680Y305246D01* +X193731Y305273D01* +X193787Y305291D01* +X193843Y305331D01* +X193932Y305377D01* +X194004Y305446D01* +X194060Y305486D01* +X195697Y307123D01* +X209023Y307123D01* +X211393Y304753D01* +X211393Y293927D01* +X209005Y291539D01* +X208975Y291533D01* +X208863Y291517D01* +X208837Y291505D01* +X208808Y291500D01* +X208707Y291447D01* +X208604Y291401D01* +X208582Y291382D01* +X208555Y291369D01* +X208473Y291291D01* +X208387Y291218D01* +X208371Y291193D01* +X208349Y291173D01* +X208292Y291075D01* +X208229Y290981D01* +X208220Y290953D01* +X208206Y290928D01* +X208178Y290818D01* +X208144Y290710D01* +X208143Y290680D01* +X208136Y290652D01* +X208139Y290539D01* +X208136Y290426D01* +X208144Y290397D01* +X208145Y290368D01* +X208179Y290260D01* +X208208Y290151D01* +X208223Y290125D01* +X208232Y290097D01* +X208278Y290034D01* +X208353Y289906D01* +X208399Y289863D01* +X208427Y289824D01* +X210425Y287826D01* +X210495Y287774D01* +X210559Y287714D01* +X210608Y287688D01* +X210652Y287655D01* +X210734Y287624D01* +X210812Y287584D01* +X210859Y287576D01* +X210918Y287554D01* +X211066Y287542D01* +X211143Y287529D01* +X228600Y287529D01* +X228658Y287537D01* +X228716Y287535D01* +X228798Y287557D01* +X228882Y287569D01* +X228935Y287592D01* +X228991Y287607D01* +X229064Y287650D01* +X229141Y287685D01* +X229186Y287723D01* +X229236Y287752D01* +X229294Y287814D01* +X229358Y287868D01* +X229390Y287917D01* +X229430Y287960D01* +X229469Y288035D01* +X229516Y288105D01* +X229533Y288161D01* +X229560Y288213D01* +X229571Y288281D01* +X229601Y288376D01* +X229604Y288476D01* +X229615Y288544D01* +X229615Y288545D01* +X240633Y288545D01* +X240719Y288557D01* +X240807Y288560D01* +X240859Y288577D01* +X240914Y288585D01* +X240994Y288620D01* +X241077Y288647D01* +X241116Y288675D01* +X241174Y288701D01* +X241287Y288797D01* +X241351Y288842D01* +X244264Y291755D01* +X244316Y291825D01* +X244376Y291889D01* +X244402Y291939D01* +X244435Y291983D01* +X244466Y292064D01* +X244506Y292142D01* +X244514Y292190D01* +X244536Y292248D01* +X244548Y292396D01* +X244561Y292473D01* +X244561Y298403D01* +X249316Y303157D01* +X249351Y303204D01* +X249393Y303244D01* +X249436Y303317D01* +X249486Y303384D01* +X249507Y303439D01* +X249537Y303489D01* +X249558Y303571D01* +X249588Y303650D01* +X249593Y303708D01* +X249607Y303765D01* +X249604Y303849D01* +X249611Y303933D01* +X249600Y303991D01* +X249598Y304049D01* +X249572Y304129D01* +X249555Y304212D01* +X249528Y304264D01* +X249510Y304320D01* +X249470Y304376D01* +X249424Y304464D01* +X249356Y304537D01* +X249316Y304593D01* +X244788Y309121D01* +X244741Y309156D01* +X244701Y309198D01* +X244628Y309241D01* +X244560Y309292D01* +X244506Y309313D01* +X244455Y309342D01* +X244374Y309363D01* +X244295Y309393D01* +X244236Y309398D01* +X244180Y309412D01* +X244095Y309410D01* +X244011Y309417D01* +X243954Y309405D01* +X243896Y309403D01* +X243815Y309377D01* +X243733Y309361D01* +X243681Y309334D01* +X243625Y309316D01* +X243569Y309276D01* +X243480Y309230D01* +X243408Y309161D01* +X243352Y309121D01* +X242038Y307807D01* +X235482Y307807D01* +X234095Y309194D01* +X234049Y309229D01* +X234008Y309271D01* +X233935Y309314D01* +X233868Y309365D01* +X233813Y309385D01* +X233763Y309415D01* +X233681Y309436D01* +X233602Y309466D01* +X233544Y309471D01* +X233488Y309485D01* +X233403Y309482D01* +X233319Y309489D01* +X233262Y309478D01* +X233203Y309476D01* +X233123Y309450D01* +X233040Y309434D01* +X232989Y309407D01* +X232933Y309389D01* +X232877Y309349D01* +X232788Y309303D01* +X232716Y309234D01* +X232660Y309194D01* +X231023Y307557D01* +X217697Y307557D01* +X215327Y309927D01* +X215327Y320753D01* +X217697Y323123D01* +X231023Y323123D01* +X233393Y320753D01* +X233393Y317735D01* +X233397Y317706D01* +X233394Y317676D01* +X233417Y317565D01* +X233433Y317453D01* +X233445Y317426D01* +X233450Y317398D01* +X233503Y317297D01* +X233549Y317194D01* +X233568Y317171D01* +X233581Y317145D01* +X233659Y317063D01* +X233732Y316977D01* +X233757Y316960D01* +X233777Y316939D01* +X233875Y316882D01* +X233969Y316819D01* +X233997Y316810D01* +X234022Y316795D01* +X234132Y316768D01* +X234240Y316733D01* +X234270Y316733D01* +X234298Y316725D01* +X234411Y316729D01* +X234524Y316726D01* +X234553Y316733D01* +X234582Y316734D01* +X234690Y316769D01* +X234799Y316798D01* +X234825Y316813D01* +X234853Y316822D01* +X234917Y316868D01* +X235044Y316943D01* +X235087Y316989D01* +X235126Y317017D01* +X235482Y317373D01* +X239206Y317373D01* +X239235Y317377D01* +X239264Y317374D01* +X239375Y317397D01* +X239487Y317413D01* +X239514Y317425D01* +X239543Y317430D01* +X239643Y317482D01* +X239747Y317529D01* +X239769Y317548D01* +X239795Y317561D01* +X239877Y317639D01* +X239964Y317712D01* +X239980Y317737D01* +X240001Y317757D01* +X240059Y317855D01* +X240121Y317949D01* +X240130Y317977D01* +X240145Y318002D01* +X240173Y318112D01* +X240207Y318220D01* +X240208Y318250D01* +X240215Y318278D01* +X240212Y318391D01* +X240214Y318504D01* +X240207Y318533D01* +X240206Y318562D01* +X240171Y318670D01* +X240143Y318779D01* +X240128Y318805D01* +X240119Y318833D01* +X240073Y318896D01* +X239997Y319024D01* +X239952Y319067D01* +X239924Y319106D01* +X229937Y329093D01* +X229867Y329145D01* +X229803Y329205D01* +X229754Y329231D01* +X229710Y329264D01* +X229628Y329295D01* +X229550Y329335D01* +X229502Y329343D01* +X229444Y329365D01* +X229296Y329377D01* +X229219Y329390D01* +X212621Y329390D01* +X212535Y329378D01* +X212447Y329375D01* +X212394Y329358D01* +X212340Y329350D01* +X212260Y329315D01* +X212177Y329288D01* +X212137Y329260D01* +X212080Y329234D01* +X211967Y329138D01* +X211903Y329093D01* +X206807Y323997D01* +X204501Y321690D01* +X186539Y321690D01* +X184233Y323997D01* +X184059Y324171D01* +X184035Y324188D01* +X184017Y324211D01* +X183922Y324274D01* +X183832Y324342D01* +X183804Y324352D01* +X183780Y324368D01* +X183672Y324403D01* +X183566Y324443D01* +X183537Y324445D01* +X183509Y324454D01* +X183396Y324457D01* +X183283Y324466D01* +X183254Y324461D01* +X183225Y324461D01* +X183115Y324433D01* +X183004Y324411D01* +X182978Y324397D01* +X182950Y324390D01* +X182853Y324332D01* +X182752Y324280D01* +X182730Y324259D01* +X182705Y324244D01* +X182628Y324162D01* +X182546Y324084D01* +X182531Y324058D01* +X182511Y324037D01* +X182459Y323936D01* +X182402Y323839D01* +X182395Y323810D01* +X182381Y323784D01* +X182368Y323707D01* +X182332Y323563D01* +X182334Y323500D01* +X182326Y323453D01* +X182326Y322674D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +X173537Y318769D01* +X173425Y318798D01* +X173316Y318833D01* +X173288Y318833D01* +X173261Y318840D01* +X173147Y318837D01* +X173032Y318840D01* +X173005Y318833D01* +X172977Y318832D01* +X172868Y318797D01* +X172757Y318768D01* +X172733Y318754D01* +X172706Y318745D01* +X172611Y318682D01* +X172512Y318623D01* +X172493Y318603D01* +X172470Y318587D01* +X172396Y318499D01* +X172318Y318416D01* +X172305Y318391D01* +X172287Y318370D01* +X172241Y318265D01* +X172188Y318162D01* +X172184Y318138D01* +X172172Y318110D01* +X172135Y317846D01* +X172133Y317831D01* +X172133Y316364D01* +X170356Y314587D01* +X154844Y314587D01* +X154834Y314597D01* +X154810Y314615D01* +X154791Y314637D01* +X154697Y314700D01* +X154607Y314768D01* +X154579Y314779D01* +X154555Y314795D01* +X154447Y314829D01* +X154341Y314869D01* +X154312Y314872D01* +X154284Y314881D01* +X154171Y314884D01* +X154058Y314893D01* +X154029Y314887D01* +X154000Y314888D01* +X153890Y314859D01* +X153779Y314837D01* +X153753Y314823D01* +X153725Y314816D01* +X153627Y314758D01* +X153527Y314706D01* +X153505Y314686D01* +X153480Y314671D01* +X153403Y314588D01* +X153321Y314510D01* +X153306Y314485D01* +X153286Y314464D01* +X153234Y314363D01* +X153177Y314265D01* +X153170Y314236D01* +X153156Y314210D01* +X153143Y314133D01* +X153107Y313989D01* +X153109Y313927D01* +X153101Y313879D01* +X153101Y310120D01* +X153100Y310119D01* +X149100Y310119D01* +X149099Y310120D01* +X149099Y340120D01* +X149100Y340121D01* +X152391Y340121D01* +X152478Y340133D01* +X152565Y340136D01* +X152618Y340153D01* +X152673Y340161D01* +X152753Y340196D01* +X152836Y340223D01* +X152875Y340251D01* +X152932Y340277D01* +X153045Y340373D01* +X153109Y340418D01* +X154844Y342153D01* +X160464Y342153D01* +X160550Y342165D01* +X160638Y342168D01* +X160690Y342185D01* +X173626Y342185D01* +X173712Y342197D01* +X173800Y342200D01* +X173852Y342217D01* +X173907Y342225D01* +X173987Y342260D01* +X174070Y342287D01* +X174110Y342315D01* +X174167Y342341D01* +X174280Y342437D01* +X174344Y342482D01* +X175010Y343148D01* +X175038Y343186D01* +X175050Y343196D01* +X175070Y343226D01* +X175122Y343282D01* +X175148Y343331D01* +X175181Y343376D01* +X175196Y343415D01* +X175208Y343433D01* +X175221Y343475D01* +X175252Y343535D01* +X175260Y343583D01* +X175282Y343641D01* +X175285Y343678D01* +X175293Y343704D01* +X175296Y343797D01* +X175307Y343866D01* +X175307Y345758D01* +X177062Y347513D01* +X183618Y347513D01* +X183869Y347262D01* +X183939Y347210D01* +X184003Y347150D01* +X184052Y347124D01* +X184096Y347091D01* +X184178Y347060D01* +X184256Y347020D01* +X184303Y347012D01* +X184362Y346990D01* +X184509Y346978D01* +X184587Y346965D01* +X185921Y346965D01* +X186008Y346977D01* +X186095Y346980D01* +X186148Y346997D01* +X186202Y347005D01* +X186282Y347040D01* +X186365Y347067D01* +X186405Y347095D01* +X186462Y347121D01* +X186575Y347217D01* +X186639Y347262D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195639Y340113D01* +X195632Y340084D01* +X195619Y340058D01* +X195597Y339947D01* +X195568Y339838D01* +X195569Y339808D01* +X195564Y339779D01* +X195573Y339667D01* +X195577Y339553D01* +X195585Y339525D01* +X195588Y339496D01* +X195629Y339391D01* +X195663Y339283D01* +X195680Y339258D01* +X195690Y339231D01* +X195758Y339141D01* +X195821Y339046D01* +X195844Y339028D01* +X195862Y339004D01* +X195952Y338936D01* +X196039Y338864D01* +X196066Y338852D01* +X196089Y338834D01* +X196195Y338794D01* +X196299Y338748D01* +X196328Y338744D01* +X196355Y338734D01* +X196468Y338725D01* +X196580Y338709D01* +X196609Y338713D01* +X196639Y338711D01* +X196715Y338729D01* +X196862Y338750D01* +X196919Y338776D01* +X196966Y338786D01* +X197087Y338837D01* +X199401Y338837D01* +X200434Y338409D01* +X200436Y338408D01* +X200437Y338407D01* +X200576Y338372D01* +X200709Y338338D01* +X200711Y338338D01* +X200713Y338337D01* +X200854Y338342D01* +X200994Y338346D01* +X200995Y338346D01* +X200997Y338346D01* +X201132Y338390D01* +X201264Y338433D01* +X201266Y338433D01* +X201267Y338434D01* +X201280Y338443D01* +X201500Y338591D01* +X201520Y338614D01* +X201541Y338629D01* +X201681Y338769D01* +X203987Y341076D01* +X222430Y341076D01* +X222515Y341088D01* +X222601Y341090D01* +X222655Y341108D01* +X222711Y341116D01* +X222790Y341151D01* +X222872Y341177D01* +X222919Y341209D01* +X222971Y341232D01* +X223036Y341287D01* +X223108Y341335D01* +X223144Y341379D01* +X223188Y341415D01* +X223235Y341487D01* +X223291Y341553D01* +X223314Y341605D01* +X223345Y341652D01* +X223371Y341734D01* +X223406Y341813D01* +X223414Y341869D01* +X223431Y341923D01* +X223433Y342009D01* +X223445Y342094D01* +X223437Y342151D01* +X223438Y342207D01* +X223417Y342290D01* +X223404Y342376D01* +X223381Y342428D01* +X223367Y342482D01* +X223323Y342556D01* +X223287Y342635D01* +X223250Y342678D01* +X223221Y342727D01* +X223159Y342786D01* +X223103Y342851D01* +X223061Y342877D01* +X223014Y342921D01* +X222885Y342987D01* +X222818Y343029D01* +X222766Y343051D01* +X221131Y344686D01* +X220245Y346823D01* +X220245Y349137D01* +X221131Y351274D01* +X222766Y352909D01* +X224903Y353795D01* +X227217Y353795D01* +X229354Y352909D01* +X230588Y351675D01* +X230635Y351640D01* +X230675Y351597D01* +X230748Y351555D01* +X230815Y351504D01* +X230870Y351483D01* +X230921Y351454D01* +X231002Y351433D01* +X231081Y351403D01* +X231139Y351398D01* +X231196Y351384D01* +X231280Y351386D01* +X231364Y351379D01* +X231422Y351391D01* +X231480Y351393D01* +X231560Y351419D01* +X231643Y351435D01* +X231695Y351462D01* +X231751Y351480D01* +X231807Y351520D01* +X231895Y351566D01* +X231968Y351635D01* +X232024Y351675D01* +X232942Y352593D01* +X239498Y352593D01* +X240582Y351509D01* +X240629Y351474D01* +X240669Y351431D01* +X240742Y351389D01* +X240809Y351338D01* +X240864Y351317D01* +X240914Y351288D01* +X240996Y351267D01* +X241075Y351237D01* +X241133Y351232D01* +X241190Y351217D01* +X241274Y351220D01* +X241358Y351213D01* +X241416Y351225D01* +X241474Y351226D01* +X241554Y351252D01* +X241637Y351269D01* +X241689Y351296D01* +X241745Y351314D01* +X241801Y351354D01* +X241889Y351400D01* +X241962Y351469D01* +X242018Y351509D01* +X243102Y352593D01* +X249658Y352593D01* +X249664Y352587D01* +X249688Y352569D01* +X249707Y352547D01* +X249801Y352484D01* +X249891Y352416D01* +X249919Y352405D01* +X249943Y352389D01* +X250051Y352355D01* +X250157Y352315D01* +X250186Y352312D01* +X250214Y352303D01* +X250327Y352300D01* +X250440Y352291D01* +X250469Y352297D01* +X250498Y352296D01* +X250608Y352325D01* +X250719Y352347D01* +X250745Y352360D01* +X250773Y352368D01* +X250871Y352426D01* +X250971Y352478D01* +X250993Y352498D01* +X251018Y352513D01* +X251095Y352596D01* +X251177Y352674D01* +X251192Y352699D01* +X251212Y352720D01* +X251264Y352821D01* +X251321Y352919D01* +X251328Y352947D01* +X251342Y352974D01* +X251355Y353051D01* +X251391Y353194D01* +X251389Y353257D01* +X251397Y353305D01* +X251397Y355382D01* +X251497Y355482D01* +X251532Y355529D01* +X251575Y355569D01* +X251618Y355642D01* +X251668Y355709D01* +X251689Y355764D01* +X251719Y355814D01* +X251740Y355896D01* +X251770Y355975D01* +X251774Y356033D01* +X251789Y356090D01* +X251786Y356174D01* +X251793Y356258D01* +X251782Y356316D01* +X251780Y356374D01* +X251754Y356454D01* +X251737Y356537D01* +X251710Y356589D01* +X251692Y356645D01* +X251652Y356701D01* +X251606Y356789D01* +X251538Y356862D01* +X251497Y356918D01* +X251397Y357018D01* +X251397Y361882D01* +X252998Y363483D01* +X268862Y363483D01* +X270463Y361882D01* +X270463Y357018D01* +X270363Y356918D01* +X270327Y356871D01* +X270285Y356831D01* +X270242Y356758D01* +X270192Y356691D01* +X270171Y356636D01* +X270141Y356586D01* +X270121Y356504D01* +X270090Y356425D01* +X270086Y356367D01* +X270071Y356310D01* +X270074Y356226D01* +X270067Y356142D01* +X270078Y356084D01* +X270080Y356026D01* +X270106Y355946D01* +X270123Y355863D01* +X270150Y355811D01* +X270168Y355755D01* +X270208Y355699D01* +X270254Y355611D01* +X270323Y355538D01* +X270363Y355482D01* +X270463Y355382D01* +X270463Y350514D01* +X270471Y350456D01* +X270469Y350398D01* +X270491Y350316D01* +X270503Y350232D01* +X270526Y350179D01* +X270541Y350123D01* +X270584Y350050D01* +X270619Y349973D01* +X270657Y349928D01* +X270686Y349878D01* +X270748Y349820D01* +X270802Y349756D01* +X270851Y349724D01* +X270894Y349684D01* +X270969Y349645D01* +X271039Y349598D01* +X271095Y349581D01* +X271147Y349554D01* +X271215Y349543D01* +X271310Y349513D01* +X271410Y349510D01* +X271478Y349499D01* +X273647Y349499D01* +X273733Y349511D01* +X273821Y349514D01* +X273873Y349531D01* +X273928Y349539D01* +X274008Y349574D01* +X274091Y349601D01* +X274130Y349629D01* +X274188Y349655D01* +X274301Y349751D01* +X274365Y349796D01* +X298914Y374345D01* +X300073Y375504D01* +X300090Y375528D01* +X300113Y375547D01* +X300175Y375641D01* +X300243Y375731D01* +X300254Y375759D01* +X300270Y375783D01* +X300304Y375891D01* +X300345Y375997D01* +X300347Y376026D01* +X300356Y376054D01* +X300359Y376168D01* +X300368Y376280D01* +X300363Y376309D01* +X300363Y376338D01* +X300335Y376448D01* +X300312Y376559D01* +X300299Y376585D01* +X300291Y376613D01* +X300234Y376711D01* +X300181Y376811D01* +X300161Y376833D01* +X300146Y376858D01* +X300064Y376935D01* +X299986Y377017D01* +X299960Y377032D01* +X299939Y377052D01* +X299838Y377104D01* +X299740Y377161D01* +X299712Y377168D01* +X299686Y377182D01* +X299608Y377195D01* +X299465Y377231D01* +X299402Y377229D01* +X299355Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X378813Y3763D01* +X378842Y3767D01* +X378871Y3764D01* +X378982Y3787D01* +X379095Y3803D01* +X379121Y3815D01* +X379150Y3820D01* +X379251Y3873D01* +X379354Y3919D01* +X379376Y3938D01* +X379402Y3951D01* +X379485Y4029D01* +X379571Y4102D01* +X379587Y4127D01* +X379609Y4147D01* +X379666Y4245D01* +X379729Y4339D01* +X379737Y4367D01* +X379752Y4392D01* +X379780Y4502D01* +X379814Y4610D01* +X379815Y4640D01* +X379822Y4668D01* +X379819Y4781D01* +X379822Y4894D01* +X379814Y4923D01* +X379813Y4952D01* +X379778Y5060D01* +X379750Y5169D01* +X379735Y5195D01* +X379726Y5223D01* +X379680Y5287D01* +X379605Y5414D01* +X379559Y5457D01* +X379531Y5496D01* +X378967Y6060D01* +X378632Y6639D01* +X378459Y7286D01* +X378459Y24639D01* +X399034Y24639D01* +X399092Y24647D01* +X399150Y24645D01* +X399232Y24667D01* +X399315Y24679D01* +X399369Y24703D01* +X399425Y24717D01* +X399498Y24760D01* +X399575Y24795D01* +X399619Y24833D01* +X399670Y24863D01* +X399727Y24924D01* +X399792Y24979D01* +X399824Y25027D01* +X399864Y25070D01* +X399903Y25145D01* +X399949Y25215D01* +X399967Y25271D01* +X399994Y25323D01* +X400005Y25391D01* +X400035Y25486D01* +X400038Y25586D01* +X400049Y25654D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y25654D01* +X400059Y25596D01* +X400058Y25538D01* +X400079Y25456D01* +X400091Y25373D01* +X400115Y25319D01* +X400129Y25263D01* +X400172Y25190D01* +X400207Y25113D01* +X400245Y25068D01* +X400275Y25018D01* +X400336Y24960D01* +X400391Y24896D01* +X400439Y24864D01* +X400482Y24824D01* +X400557Y24785D01* +X400627Y24739D01* +X400683Y24721D01* +X400735Y24694D01* +X400803Y24683D01* +X400898Y24653D01* +X400998Y24650D01* +X401066Y24639D01* +X421641Y24639D01* +X421641Y7286D01* +X421468Y6639D01* +X421133Y6060D01* +X420569Y5496D01* +X420551Y5472D01* +X420529Y5453D01* +X420466Y5359D01* +X420398Y5269D01* +X420388Y5241D01* +X420371Y5217D01* +X420337Y5109D01* +X420297Y5003D01* +X420294Y4974D01* +X420286Y4946D01* +X420283Y4832D01* +X420273Y4720D01* +X420279Y4691D01* +X420278Y4662D01* +X420307Y4552D01* +X420329Y4441D01* +X420343Y4415D01* +X420350Y4387D01* +X420408Y4289D01* +X420460Y4189D01* +X420480Y4167D01* +X420495Y4142D01* +X420578Y4065D01* +X420656Y3983D01* +X420681Y3968D01* +X420703Y3948D01* +X420804Y3896D01* +X420901Y3839D01* +X420930Y3832D01* +X420956Y3818D01* +X421033Y3805D01* +X421177Y3769D01* +X421239Y3771D01* +X421287Y3763D01* +X436880Y3763D01* +X436938Y3771D01* +X436996Y3769D01* +X437078Y3791D01* +X437162Y3803D01* +X437215Y3826D01* +X437271Y3841D01* +X437344Y3884D01* +X437421Y3919D01* +X437466Y3957D01* +X437516Y3986D01* +X437574Y4048D01* +X437638Y4102D01* +X437670Y4151D01* +X437710Y4194D01* +X437749Y4269D01* +X437796Y4339D01* +X437813Y4395D01* +X437840Y4447D01* +X437851Y4515D01* +X437881Y4610D01* +X437884Y4710D01* +X437895Y4778D01* +X437895Y84328D01* +X437887Y84386D01* +X437889Y84444D01* +X437867Y84526D01* +X437855Y84610D01* +X437832Y84663D01* +X437817Y84719D01* +X437774Y84792D01* +X437739Y84869D01* +X437701Y84914D01* +X437672Y84964D01* +X437610Y85022D01* +X437556Y85086D01* +X437507Y85118D01* +X437464Y85158D01* +X437389Y85197D01* +X437319Y85244D01* +X437263Y85261D01* +X437211Y85288D01* +X437143Y85299D01* +X437048Y85329D01* +X436948Y85332D01* +X436880Y85343D01* +X422148Y85343D01* +X422090Y85335D01* +X422032Y85337D01* +X421950Y85315D01* +X421866Y85303D01* +X421813Y85280D01* +X421757Y85265D01* +X421684Y85222D01* +X421607Y85187D01* +X421562Y85149D01* +X421512Y85120D01* +X421454Y85058D01* +X421390Y85004D01* +X421358Y84955D01* +X421318Y84912D01* +X421279Y84837D01* +X421232Y84767D01* +X421215Y84711D01* +X421188Y84659D01* +X421177Y84591D01* +X421147Y84496D01* +X421144Y84396D01* +X421133Y84328D01* +X421133Y70278D01* +X419942Y69087D01* +X380158Y69087D01* +X378967Y70278D01* +X378967Y85090D01* +X378959Y85148D01* +X378961Y85206D01* +X378939Y85288D01* +X378927Y85372D01* +X378904Y85425D01* +X378889Y85481D01* +X378846Y85554D01* +X378811Y85631D01* +X378773Y85676D01* +X378744Y85726D01* +X378682Y85784D01* +X378628Y85848D01* +X378579Y85880D01* +X378536Y85920D01* +X378461Y85959D01* +X378391Y86006D01* +X378335Y86023D01* +X378283Y86050D01* +X378215Y86061D01* +X378120Y86091D01* +X378020Y86094D01* +X377952Y86105D01* +X369134Y86105D01* +X369048Y86093D01* +X368960Y86090D01* +X368908Y86073D01* +X368853Y86065D01* +X368773Y86030D01* +X368690Y86003D01* +X368650Y85975D01* +X368593Y85949D01* +X368480Y85853D01* +X368416Y85808D01* +X359962Y77354D01* +X359910Y77284D01* +X359850Y77220D01* +X359824Y77171D01* +X359791Y77126D01* +X359760Y77045D01* +X359720Y76967D01* +X359712Y76919D01* +X359690Y76861D01* +X359678Y76713D01* +X359665Y76636D01* +X359665Y74968D01* +X359673Y74910D01* +X359671Y74852D01* +X359693Y74770D01* +X359705Y74686D01* +X359728Y74633D01* +X359743Y74577D01* +X359786Y74504D01* +X359821Y74427D01* +X359859Y74382D01* +X359888Y74332D01* +X359950Y74274D01* +X360004Y74210D01* +X360053Y74178D01* +X360096Y74138D01* +X360171Y74099D01* +X360241Y74052D01* +X360297Y74035D01* +X360349Y74008D01* +X360364Y74006D01* +X362633Y71737D01* +X362633Y61103D01* +X360929Y59400D01* +X360900Y59361D01* +X360864Y59328D01* +X360815Y59248D01* +X360758Y59173D01* +X360741Y59127D01* +X360716Y59085D01* +X360691Y58995D01* +X360657Y58907D01* +X360653Y58858D01* +X360640Y58811D01* +X360641Y58717D01* +X360634Y58624D01* +X360643Y58576D01* +X360644Y58527D01* +X360671Y58437D01* +X360690Y58345D01* +X360712Y58302D01* +X360726Y58255D01* +X360777Y58176D01* +X360821Y58093D01* +X360854Y58057D01* +X360881Y58016D01* +X360938Y57969D01* +X361016Y57886D01* +X361091Y57843D01* +X361140Y57803D01* +X361485Y57603D01* +X362283Y56805D01* +X362848Y55826D01* +X363141Y54735D01* +X363141Y52451D01* +X356616Y52451D01* +X356558Y52443D01* +X356500Y52444D01* +X356418Y52423D01* +X356335Y52411D01* +X356281Y52387D01* +X356225Y52373D01* +X356152Y52330D01* +X356075Y52295D01* +X356031Y52257D01* +X355980Y52227D01* +X355923Y52166D01* +X355858Y52111D01* +X355826Y52063D01* +X355786Y52020D01* +X355747Y51945D01* +X355701Y51875D01* +X355683Y51819D01* +X355656Y51767D01* +X355645Y51699D01* +X355615Y51604D01* +X355612Y51504D01* +X355601Y51436D01* +X355601Y50419D01* +X355599Y50419D01* +X355599Y51436D01* +X355591Y51494D01* +X355592Y51552D01* +X355571Y51634D01* +X355559Y51717D01* +X355535Y51771D01* +X355521Y51827D01* +X355478Y51900D01* +X355443Y51977D01* +X355405Y52021D01* +X355375Y52072D01* +X355314Y52129D01* +X355259Y52194D01* +X355211Y52226D01* +X355168Y52266D01* +X355093Y52305D01* +X355023Y52351D01* +X354967Y52369D01* +X354915Y52396D01* +X354847Y52407D01* +X354752Y52437D01* +X354652Y52440D01* +X354584Y52451D01* +X348059Y52451D01* +X348059Y54735D01* +X348352Y55826D01* +X348917Y56805D01* +X349715Y57603D01* +X350060Y57803D01* +X350099Y57833D01* +X350142Y57855D01* +X350210Y57920D01* +X350284Y57978D01* +X350313Y58017D01* +X350348Y58051D01* +X350396Y58132D01* +X350451Y58208D01* +X350467Y58254D01* +X350492Y58296D01* +X350515Y58387D01* +X350547Y58476D01* +X350550Y58525D01* +X350562Y58572D01* +X350559Y58666D01* +X350565Y58759D01* +X350555Y58807D01* +X350553Y58856D01* +X350524Y58945D01* +X350504Y59037D01* +X350481Y59080D01* +X350466Y59126D01* +X350422Y59187D01* +X350368Y59287D01* +X350307Y59349D01* +X350271Y59400D01* +X348567Y61103D01* +X348567Y71737D01* +X350840Y74010D01* +X350855Y74016D01* +X350911Y74031D01* +X350984Y74074D01* +X351061Y74109D01* +X351106Y74147D01* +X351156Y74176D01* +X351214Y74238D01* +X351278Y74292D01* +X351310Y74341D01* +X351350Y74384D01* +X351389Y74459D01* +X351436Y74529D01* +X351453Y74585D01* +X351480Y74637D01* +X351491Y74705D01* +X351521Y74800D01* +X351524Y74900D01* +X351535Y74968D01* +X351535Y80424D01* +X365346Y94235D01* +X377952Y94235D01* +X378010Y94243D01* +X378068Y94241D01* +X378150Y94263D01* +X378234Y94275D01* +X378287Y94298D01* +X378343Y94313D01* +X378416Y94356D01* +X378493Y94391D01* +X378538Y94429D01* +X378588Y94458D01* +X378646Y94520D01* +X378710Y94574D01* +X378742Y94623D01* +X378782Y94666D01* +X378821Y94741D01* +X378868Y94811D01* +X378885Y94867D01* +X378912Y94919D01* +X378923Y94987D01* +X378953Y95082D01* +X378956Y95182D01* +X378967Y95250D01* +X378967Y110062D01* +X380158Y111253D01* +X419942Y111253D01* +X421133Y110062D01* +X421133Y98552D01* +X421141Y98494D01* +X421139Y98436D01* +X421161Y98354D01* +X421173Y98270D01* +X421196Y98217D01* +X421211Y98161D01* +X421254Y98088D01* +X421289Y98011D01* +X421327Y97966D01* +X421356Y97916D01* +X421418Y97858D01* +X421472Y97794D01* +X421521Y97762D01* +X421564Y97722D01* +X421639Y97683D01* +X421709Y97636D01* +X421765Y97619D01* +X421817Y97592D01* +X421885Y97581D01* +X421980Y97551D01* +X422080Y97548D01* +X422148Y97537D01* +X461494Y97537D01* +X461581Y97549D01* +G37* +G36* +X950342Y3767D02* +X950342Y3767D01* +X950371Y3764D01* +X950482Y3787D01* +X950595Y3803D01* +X950621Y3815D01* +X950650Y3820D01* +X950751Y3873D01* +X950854Y3919D01* +X950876Y3938D01* +X950902Y3951D01* +X950985Y4029D01* +X951071Y4102D01* +X951087Y4127D01* +X951109Y4147D01* +X951166Y4245D01* +X951229Y4339D01* +X951237Y4367D01* +X951252Y4392D01* +X951280Y4502D01* +X951314Y4610D01* +X951315Y4640D01* +X951322Y4668D01* +X951319Y4781D01* +X951322Y4894D01* +X951314Y4923D01* +X951313Y4952D01* +X951278Y5060D01* +X951250Y5169D01* +X951235Y5195D01* +X951226Y5223D01* +X951180Y5287D01* +X951105Y5414D01* +X951059Y5457D01* +X951031Y5496D01* +X950467Y6060D01* +X950132Y6639D01* +X949959Y7286D01* +X949959Y24639D01* +X970534Y24639D01* +X970592Y24647D01* +X970650Y24645D01* +X970732Y24667D01* +X970815Y24679D01* +X970869Y24703D01* +X970925Y24717D01* +X970998Y24760D01* +X971075Y24795D01* +X971119Y24833D01* +X971170Y24863D01* +X971227Y24924D01* +X971292Y24979D01* +X971324Y25027D01* +X971364Y25070D01* +X971403Y25145D01* +X971449Y25215D01* +X971467Y25271D01* +X971494Y25323D01* +X971505Y25391D01* +X971535Y25486D01* +X971538Y25586D01* +X971549Y25654D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y25654D01* +X971559Y25596D01* +X971558Y25538D01* +X971579Y25456D01* +X971591Y25373D01* +X971615Y25319D01* +X971629Y25263D01* +X971672Y25190D01* +X971707Y25113D01* +X971745Y25068D01* +X971775Y25018D01* +X971836Y24960D01* +X971891Y24896D01* +X971939Y24864D01* +X971982Y24824D01* +X972057Y24785D01* +X972127Y24739D01* +X972183Y24721D01* +X972235Y24694D01* +X972303Y24683D01* +X972398Y24653D01* +X972498Y24650D01* +X972566Y24639D01* +X993141Y24639D01* +X993141Y7286D01* +X992968Y6639D01* +X992633Y6060D01* +X992069Y5496D01* +X992051Y5472D01* +X992029Y5453D01* +X991966Y5359D01* +X991898Y5269D01* +X991888Y5241D01* +X991871Y5217D01* +X991837Y5109D01* +X991797Y5003D01* +X991794Y4974D01* +X991786Y4946D01* +X991783Y4832D01* +X991773Y4720D01* +X991779Y4691D01* +X991778Y4662D01* +X991807Y4552D01* +X991829Y4441D01* +X991843Y4415D01* +X991850Y4387D01* +X991908Y4289D01* +X991960Y4189D01* +X991980Y4167D01* +X991995Y4142D01* +X992078Y4065D01* +X992156Y3983D01* +X992181Y3968D01* +X992203Y3948D01* +X992304Y3896D01* +X992401Y3839D01* +X992430Y3832D01* +X992456Y3818D01* +X992533Y3805D01* +X992677Y3769D01* +X992739Y3771D01* +X992787Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X901395Y308355D01* +X901366Y308351D01* +X901337Y308354D01* +X901226Y308331D01* +X901114Y308315D01* +X901087Y308303D01* +X901058Y308298D01* +X900958Y308246D01* +X900854Y308199D01* +X900832Y308180D01* +X900806Y308167D01* +X900724Y308089D01* +X900637Y308016D01* +X900621Y307991D01* +X900600Y307971D01* +X900543Y307873D01* +X900480Y307779D01* +X900471Y307751D01* +X900456Y307726D01* +X900428Y307616D01* +X900394Y307508D01* +X900393Y307478D01* +X900386Y307450D01* +X900390Y307337D01* +X900387Y307224D01* +X900394Y307195D01* +X900395Y307166D01* +X900430Y307058D01* +X900433Y307048D01* +X900433Y287053D01* +X897807Y284427D01* +X895464Y284427D01* +X895406Y284419D01* +X895348Y284421D01* +X895266Y284399D01* +X895182Y284387D01* +X895129Y284364D01* +X895073Y284349D01* +X895000Y284306D01* +X894923Y284271D01* +X894878Y284233D01* +X894828Y284204D01* +X894770Y284142D01* +X894706Y284088D01* +X894674Y284039D01* +X894634Y283996D01* +X894595Y283921D01* +X894548Y283851D01* +X894531Y283795D01* +X894504Y283743D01* +X894493Y283675D01* +X894463Y283580D01* +X894460Y283480D01* +X894449Y283412D01* +X894449Y278214D01* +X894457Y278156D01* +X894455Y278098D01* +X894477Y278016D01* +X894489Y277932D01* +X894512Y277879D01* +X894527Y277823D01* +X894570Y277750D01* +X894605Y277673D01* +X894643Y277628D01* +X894672Y277578D01* +X894734Y277520D01* +X894788Y277456D01* +X894837Y277424D01* +X894880Y277384D01* +X894955Y277345D01* +X895025Y277298D01* +X895081Y277281D01* +X895133Y277254D01* +X895201Y277243D01* +X895296Y277213D01* +X895396Y277210D01* +X895464Y277199D01* +X987707Y277199D01* +X987794Y277211D01* +X987881Y277214D01* +X987934Y277231D01* +X987989Y277239D01* +X988069Y277274D01* +X988152Y277301D01* +X988191Y277329D01* +X988248Y277355D01* +X988361Y277451D01* +X988425Y277496D01* +X989862Y278933D01* +X996418Y278933D01* +X997855Y277496D01* +X997925Y277444D01* +X997988Y277384D01* +X998038Y277358D01* +X998082Y277325D01* +X998164Y277294D01* +X998242Y277254D01* +X998289Y277246D01* +X998348Y277224D01* +X998495Y277212D01* +X998573Y277199D01* +X1000407Y277199D01* +X1000494Y277211D01* +X1000581Y277214D01* +X1000634Y277231D01* +X1000689Y277239D01* +X1000769Y277274D01* +X1000852Y277301D01* +X1000891Y277329D01* +X1000948Y277355D01* +X1001061Y277451D01* +X1001125Y277496D01* +X1002311Y278682D01* +X1002346Y278729D01* +X1002389Y278769D01* +X1002431Y278842D01* +X1002482Y278909D01* +X1002503Y278964D01* +X1002532Y279014D01* +X1002553Y279096D01* +X1002583Y279175D01* +X1002588Y279233D01* +X1002603Y279290D01* +X1002600Y279374D01* +X1002607Y279458D01* +X1002595Y279516D01* +X1002594Y279574D01* +X1002568Y279654D01* +X1002551Y279737D01* +X1002524Y279789D01* +X1002506Y279845D01* +X1002466Y279901D01* +X1002420Y279989D01* +X1002351Y280062D01* +X1002311Y280118D01* +X1000807Y281622D01* +X1000807Y287678D01* +X1002135Y289006D01* +X1002170Y289052D01* +X1002212Y289093D01* +X1002255Y289166D01* +X1002306Y289233D01* +X1002327Y289288D01* +X1002356Y289338D01* +X1002377Y289420D01* +X1002407Y289499D01* +X1002412Y289557D01* +X1002426Y289614D01* +X1002424Y289698D01* +X1002431Y289782D01* +X1002419Y289839D01* +X1002417Y289898D01* +X1002391Y289978D01* +X1002375Y290061D01* +X1002348Y290113D01* +X1002330Y290168D01* +X1002290Y290225D01* +X1002244Y290313D01* +X1002175Y290385D01* +X1002135Y290442D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009545Y290442D01* +X1009510Y290395D01* +X1009468Y290355D01* +X1009425Y290282D01* +X1009374Y290214D01* +X1009353Y290160D01* +X1009324Y290109D01* +X1009303Y290028D01* +X1009273Y289949D01* +X1009268Y289890D01* +X1009254Y289834D01* +X1009256Y289749D01* +X1009249Y289665D01* +X1009261Y289608D01* +X1009263Y289550D01* +X1009289Y289469D01* +X1009305Y289387D01* +X1009332Y289335D01* +X1009350Y289279D01* +X1009390Y289223D01* +X1009436Y289134D01* +X1009505Y289062D01* +X1009545Y289006D01* +X1010555Y287996D01* +X1010625Y287944D01* +X1010689Y287884D01* +X1010738Y287858D01* +X1010782Y287825D01* +X1010864Y287794D01* +X1010942Y287754D01* +X1010989Y287746D01* +X1011048Y287724D01* +X1011195Y287712D01* +X1011273Y287699D01* +X1013032Y287699D01* +X1013090Y287707D01* +X1013148Y287705D01* +X1013230Y287727D01* +X1013314Y287739D01* +X1013367Y287762D01* +X1013423Y287777D01* +X1013496Y287820D01* +X1013573Y287855D01* +X1013618Y287893D01* +X1013668Y287922D01* +X1013726Y287984D01* +X1013790Y288038D01* +X1013822Y288087D01* +X1013862Y288130D01* +X1013901Y288205D01* +X1013948Y288275D01* +X1013965Y288331D01* +X1013992Y288383D01* +X1014003Y288451D01* +X1014033Y288546D01* +X1014036Y288646D01* +X1014047Y288714D01* +X1014047Y291957D01* +X1016263Y294173D01* +X1025897Y294173D01* +X1027014Y293055D01* +X1027038Y293038D01* +X1027057Y293015D01* +X1027151Y292953D01* +X1027241Y292885D01* +X1027269Y292874D01* +X1027293Y292858D01* +X1027401Y292824D01* +X1027507Y292783D01* +X1027536Y292781D01* +X1027564Y292772D01* +X1027678Y292769D01* +X1027790Y292760D01* +X1027819Y292766D01* +X1027848Y292765D01* +X1027958Y292793D01* +X1028069Y292816D01* +X1028095Y292829D01* +X1028123Y292837D01* +X1028221Y292894D01* +X1028321Y292947D01* +X1028343Y292967D01* +X1028368Y292982D01* +X1028445Y293064D01* +X1028527Y293142D01* +X1028542Y293168D01* +X1028562Y293189D01* +X1028614Y293290D01* +X1028671Y293388D01* +X1028678Y293416D01* +X1028692Y293442D01* +X1028705Y293520D01* +X1028741Y293663D01* +X1028739Y293726D01* +X1028747Y293773D01* +X1028747Y294958D01* +X1030502Y296713D01* +X1037058Y296713D01* +X1039065Y294706D01* +X1039135Y294654D01* +X1039199Y294594D01* +X1039248Y294568D01* +X1039292Y294535D01* +X1039374Y294504D01* +X1039452Y294464D01* +X1039499Y294456D01* +X1039558Y294434D01* +X1039705Y294422D01* +X1039783Y294409D01* +X1039872Y294409D01* +X1039930Y294417D01* +X1039988Y294415D01* +X1040070Y294437D01* +X1040154Y294449D01* +X1040207Y294472D01* +X1040263Y294487D01* +X1040336Y294530D01* +X1040413Y294565D01* +X1040458Y294603D01* +X1040508Y294632D01* +X1040566Y294694D01* +X1040630Y294748D01* +X1040662Y294797D01* +X1040702Y294840D01* +X1040741Y294915D01* +X1040788Y294985D01* +X1040805Y295041D01* +X1040832Y295093D01* +X1040843Y295161D01* +X1040873Y295256D01* +X1040876Y295356D01* +X1040887Y295424D01* +X1040887Y295779D01* +X1043001Y297893D01* +X1062839Y297893D01* +X1064953Y295779D01* +X1064953Y286941D01* +X1063740Y285728D01* +X1063705Y285681D01* +X1063662Y285641D01* +X1063620Y285568D01* +X1063569Y285501D01* +X1063548Y285446D01* +X1063519Y285396D01* +X1063498Y285314D01* +X1063468Y285235D01* +X1063463Y285177D01* +X1063449Y285120D01* +X1063451Y285036D01* +X1063444Y284952D01* +X1063456Y284894D01* +X1063458Y284836D01* +X1063484Y284756D01* +X1063500Y284673D01* +X1063527Y284621D01* +X1063545Y284565D01* +X1063585Y284509D01* +X1063631Y284421D01* +X1063676Y284373D01* +X1063689Y284351D01* +X1063715Y284327D01* +X1063740Y284292D01* +X1064953Y283079D01* +X1064953Y274241D01* +X1063740Y273028D01* +X1063705Y272981D01* +X1063662Y272941D01* +X1063620Y272868D01* +X1063569Y272801D01* +X1063548Y272746D01* +X1063519Y272696D01* +X1063498Y272614D01* +X1063468Y272535D01* +X1063463Y272477D01* +X1063449Y272420D01* +X1063451Y272336D01* +X1063444Y272252D01* +X1063456Y272194D01* +X1063458Y272136D01* +X1063484Y272056D01* +X1063500Y271973D01* +X1063527Y271921D01* +X1063545Y271865D01* +X1063585Y271809D01* +X1063631Y271721D01* +X1063700Y271648D01* +X1063740Y271592D01* +X1064953Y270379D01* +X1064953Y269952D01* +X1064961Y269894D01* +X1064959Y269836D01* +X1064981Y269754D01* +X1064993Y269670D01* +X1065016Y269617D01* +X1065031Y269561D01* +X1065074Y269488D01* +X1065109Y269411D01* +X1065147Y269366D01* +X1065176Y269316D01* +X1065238Y269258D01* +X1065292Y269194D01* +X1065341Y269162D01* +X1065384Y269122D01* +X1065459Y269083D01* +X1065529Y269036D01* +X1065585Y269019D01* +X1065637Y268992D01* +X1065705Y268981D01* +X1065800Y268951D01* +X1065900Y268948D01* +X1065968Y268937D01* +X1067985Y268937D01* +X1085469Y251453D01* +X1085560Y251385D01* +X1085648Y251311D01* +X1085674Y251299D01* +X1085696Y251283D01* +X1085803Y251242D01* +X1085908Y251195D01* +X1085935Y251191D01* +X1085961Y251181D01* +X1086076Y251172D01* +X1086190Y251156D01* +X1086217Y251160D01* +X1086245Y251158D01* +X1086357Y251180D01* +X1086471Y251197D01* +X1086496Y251208D01* +X1086523Y251214D01* +X1086625Y251267D01* +X1086730Y251314D01* +X1086751Y251332D01* +X1086776Y251345D01* +X1086859Y251424D01* +X1086946Y251498D01* +X1086960Y251519D01* +X1086982Y251540D01* +X1087117Y251770D01* +X1087124Y251783D01* +X1087630Y253004D01* +X1089266Y254639D01* +X1091403Y255525D01* +X1093716Y255525D01* +X1095853Y254639D01* +X1097489Y253004D01* +X1098374Y250867D01* +X1098374Y248553D01* +X1097489Y246416D01* +X1097070Y245997D01* +X1097018Y245927D01* +X1096958Y245863D01* +X1096932Y245814D01* +X1096899Y245770D01* +X1096868Y245688D01* +X1096828Y245610D01* +X1096820Y245563D01* +X1096798Y245504D01* +X1096786Y245357D01* +X1096773Y245279D01* +X1096773Y156240D01* +X1096764Y156228D01* +X1096704Y156164D01* +X1096678Y156115D01* +X1096645Y156070D01* +X1096614Y155989D01* +X1096574Y155911D01* +X1096566Y155863D01* +X1096544Y155805D01* +X1096532Y155657D01* +X1096519Y155580D01* +X1096519Y142008D01* +X1096527Y141950D01* +X1096525Y141892D01* +X1096547Y141810D01* +X1096559Y141726D01* +X1096582Y141673D01* +X1096597Y141617D01* +X1096640Y141544D01* +X1096675Y141467D01* +X1096713Y141422D01* +X1096742Y141372D01* +X1096804Y141314D01* +X1096858Y141250D01* +X1096907Y141218D01* +X1096950Y141178D01* +X1097025Y141139D01* +X1097095Y141092D01* +X1097151Y141075D01* +X1097203Y141048D01* +X1097271Y141037D01* +X1097366Y141007D01* +X1097466Y141004D01* +X1097534Y140993D01* +X1097889Y140993D01* +X1099102Y139780D01* +X1099149Y139745D01* +X1099189Y139702D01* +X1099262Y139660D01* +X1099329Y139609D01* +X1099384Y139588D01* +X1099434Y139559D01* +X1099516Y139538D01* +X1099595Y139508D01* +X1099653Y139503D01* +X1099710Y139489D01* +X1099794Y139491D01* +X1099878Y139484D01* +X1099936Y139496D01* +X1099994Y139498D01* +X1100074Y139524D01* +X1100157Y139540D01* +X1100209Y139567D01* +X1100265Y139585D01* +X1100321Y139625D01* +X1100409Y139671D01* +X1100482Y139740D01* +X1100538Y139780D01* +X1101751Y140993D01* +X1110589Y140993D01* +X1111802Y139780D01* +X1111849Y139745D01* +X1111889Y139702D01* +X1111962Y139660D01* +X1112029Y139609D01* +X1112084Y139588D01* +X1112134Y139559D01* +X1112216Y139538D01* +X1112295Y139508D01* +X1112353Y139503D01* +X1112410Y139489D01* +X1112494Y139491D01* +X1112578Y139484D01* +X1112636Y139496D01* +X1112694Y139498D01* +X1112774Y139524D01* +X1112857Y139540D01* +X1112909Y139567D01* +X1112965Y139585D01* +X1113021Y139625D01* +X1113109Y139671D01* +X1113182Y139740D01* +X1113238Y139780D01* +X1114451Y140993D01* +X1118333Y140993D01* +X1118362Y140997D01* +X1118391Y140994D01* +X1118502Y141017D01* +X1118614Y141033D01* +X1118641Y141045D01* +X1118670Y141050D01* +X1118771Y141103D01* +X1118874Y141149D01* +X1118896Y141168D01* +X1118922Y141181D01* +X1119004Y141259D01* +X1119091Y141332D01* +X1119107Y141357D01* +X1119128Y141377D01* +X1119186Y141475D01* +X1119248Y141569D01* +X1119257Y141597D01* +X1119272Y141622D01* +X1119300Y141732D01* +X1119334Y141840D01* +X1119335Y141870D01* +X1119342Y141898D01* +X1119339Y142011D01* +X1119342Y142124D01* +X1119334Y142153D01* +X1119333Y142182D01* +X1119298Y142290D01* +X1119270Y142399D01* +X1119255Y142425D01* +X1119246Y142453D01* +X1119200Y142517D01* +X1119124Y142644D01* +X1119079Y142687D01* +X1119051Y142726D01* +X1117751Y144026D01* +X1116865Y146163D01* +X1116865Y148477D01* +X1117751Y150614D01* +X1119386Y152249D01* +X1121523Y153135D01* +X1123837Y153135D01* +X1125974Y152249D01* +X1127557Y150666D01* +X1127627Y150614D01* +X1127691Y150554D01* +X1127740Y150528D01* +X1127784Y150495D01* +X1127866Y150464D01* +X1127944Y150424D01* +X1127992Y150416D01* +X1128050Y150394D01* +X1128198Y150382D01* +X1128275Y150369D01* +X1137080Y150369D01* +X1137194Y150385D01* +X1137308Y150395D01* +X1137334Y150405D01* +X1137362Y150409D01* +X1137467Y150456D01* +X1137574Y150497D01* +X1137596Y150513D01* +X1137621Y150525D01* +X1137709Y150599D01* +X1137800Y150668D01* +X1137817Y150691D01* +X1137838Y150708D01* +X1137902Y150804D01* +X1137971Y150896D01* +X1137980Y150922D01* +X1137996Y150945D01* +X1138030Y151055D01* +X1138071Y151162D01* +X1138073Y151190D01* +X1138082Y151216D01* +X1138084Y151331D01* +X1138094Y151445D01* +X1138088Y151470D01* +X1138089Y151500D01* +X1138022Y151757D01* +X1138018Y151773D01* +X1137185Y153783D01* +X1137185Y156097D01* +X1138071Y158234D01* +X1139706Y159869D01* +X1141843Y160755D01* +X1144157Y160755D01* +X1146294Y159869D01* +X1147877Y158286D01* +X1147947Y158234D01* +X1148011Y158174D01* +X1148060Y158148D01* +X1148104Y158115D01* +X1148186Y158084D01* +X1148264Y158044D01* +X1148312Y158036D01* +X1148370Y158014D01* +X1148518Y158002D01* +X1148595Y157989D01* +X1163839Y157989D01* +X1163868Y157993D01* +X1163897Y157990D01* +X1164008Y158013D01* +X1164120Y158029D01* +X1164147Y158041D01* +X1164176Y158046D01* +X1164276Y158099D01* +X1164380Y158145D01* +X1164402Y158164D01* +X1164428Y158177D01* +X1164510Y158255D01* +X1164597Y158328D01* +X1164613Y158353D01* +X1164634Y158373D01* +X1164691Y158471D01* +X1164754Y158565D01* +X1164763Y158593D01* +X1164778Y158618D01* +X1164806Y158728D01* +X1164840Y158836D01* +X1164841Y158866D01* +X1164848Y158894D01* +X1164844Y159007D01* +X1164847Y159120D01* +X1164840Y159149D01* +X1164839Y159178D01* +X1164804Y159286D01* +X1164775Y159395D01* +X1164760Y159421D01* +X1164751Y159449D01* +X1164706Y159512D01* +X1164630Y159640D01* +X1164585Y159683D01* +X1164557Y159722D01* +X1162751Y161528D01* +X1162681Y161580D01* +X1162617Y161640D01* +X1162567Y161666D01* +X1162523Y161699D01* +X1162442Y161730D01* +X1162364Y161770D01* +X1162316Y161778D01* +X1162258Y161800D01* +X1162110Y161812D01* +X1162033Y161825D01* +X1159623Y161825D01* +X1157486Y162711D01* +X1155851Y164346D01* +X1154965Y166483D01* +X1154965Y168797D01* +X1155851Y170934D01* +X1157434Y172517D01* +X1157486Y172587D01* +X1157546Y172651D01* +X1157572Y172700D01* +X1157605Y172744D01* +X1157636Y172826D01* +X1157676Y172904D01* +X1157684Y172952D01* +X1157706Y173010D01* +X1157717Y173140D01* +X1157717Y173142D01* +X1157717Y173147D01* +X1157718Y173158D01* +X1157731Y173235D01* +X1157731Y174603D01* +X1175937Y192809D01* +X1209872Y192809D01* +X1209930Y192817D01* +X1209988Y192815D01* +X1210070Y192837D01* +X1210154Y192849D01* +X1210207Y192872D01* +X1210263Y192887D01* +X1210336Y192930D01* +X1210413Y192965D01* +X1210458Y193003D01* +X1210508Y193032D01* +X1210566Y193094D01* +X1210630Y193148D01* +X1210662Y193197D01* +X1210702Y193240D01* +X1210741Y193315D01* +X1210788Y193385D01* +X1210805Y193441D01* +X1210832Y193493D01* +X1210843Y193561D01* +X1210873Y193656D01* +X1210876Y193756D01* +X1210887Y193824D01* +X1210887Y194179D01* +X1212100Y195392D01* +X1212135Y195439D01* +X1212178Y195479D01* +X1212220Y195552D01* +X1212271Y195619D01* +X1212292Y195674D01* +X1212321Y195724D01* +X1212342Y195806D01* +X1212372Y195885D01* +X1212377Y195943D01* +X1212391Y196000D01* +X1212389Y196084D01* +X1212396Y196168D01* +X1212384Y196226D01* +X1212382Y196284D01* +X1212356Y196364D01* +X1212340Y196447D01* +X1212313Y196499D01* +X1212295Y196555D01* +X1212255Y196611D01* +X1212209Y196699D01* +X1212140Y196772D01* +X1212100Y196828D01* +X1210884Y198044D01* +X1210883Y198045D01* +X1210882Y198046D01* +X1210770Y198130D01* +X1210657Y198215D01* +X1210655Y198215D01* +X1210654Y198216D01* +X1210524Y198265D01* +X1210391Y198316D01* +X1210390Y198316D01* +X1210388Y198317D01* +X1210245Y198328D01* +X1210108Y198339D01* +X1210107Y198339D01* +X1210105Y198339D01* +X1210089Y198336D01* +X1209829Y198284D01* +X1209802Y198269D01* +X1209778Y198264D01* +X1207657Y197385D01* +X1205343Y197385D01* +X1203206Y198271D01* +X1201571Y199906D01* +X1200685Y202043D01* +X1200685Y204357D01* +X1201571Y206494D01* +X1203206Y208129D01* +X1205343Y209015D01* +X1207657Y209015D01* +X1209794Y208129D01* +X1210248Y207676D01* +X1210294Y207640D01* +X1210335Y207598D01* +X1210408Y207555D01* +X1210475Y207505D01* +X1210530Y207484D01* +X1210580Y207454D01* +X1210662Y207434D01* +X1210741Y207403D01* +X1210799Y207399D01* +X1210855Y207384D01* +X1210940Y207387D01* +X1211024Y207380D01* +X1211081Y207391D01* +X1211140Y207393D01* +X1211220Y207419D01* +X1211303Y207436D01* +X1211354Y207463D01* +X1211410Y207481D01* +X1211466Y207521D01* +X1211555Y207567D01* +X1211627Y207636D01* +X1211683Y207676D01* +X1212100Y208092D01* +X1212135Y208139D01* +X1212178Y208179D01* +X1212220Y208252D01* +X1212271Y208319D01* +X1212292Y208374D01* +X1212321Y208424D01* +X1212342Y208506D01* +X1212372Y208585D01* +X1212377Y208643D01* +X1212391Y208700D01* +X1212389Y208784D01* +X1212396Y208868D01* +X1212384Y208926D01* +X1212382Y208984D01* +X1212356Y209064D01* +X1212340Y209147D01* +X1212313Y209199D01* +X1212295Y209255D01* +X1212255Y209311D01* +X1212209Y209399D01* +X1212153Y209458D01* +X1212140Y209479D01* +X1212124Y209495D01* +X1212100Y209528D01* +X1210887Y210741D01* +X1210887Y211096D01* +X1210879Y211154D01* +X1210881Y211212D01* +X1210859Y211294D01* +X1210847Y211378D01* +X1210824Y211431D01* +X1210809Y211487D01* +X1210766Y211560D01* +X1210731Y211637D01* +X1210693Y211682D01* +X1210664Y211732D01* +X1210602Y211790D01* +X1210548Y211854D01* +X1210499Y211886D01* +X1210456Y211926D01* +X1210381Y211965D01* +X1210311Y212012D01* +X1210255Y212029D01* +X1210203Y212056D01* +X1210135Y212067D01* +X1210040Y212097D01* +X1209940Y212100D01* +X1209872Y212111D01* +X1208517Y212111D01* +X1208301Y212328D01* +X1208231Y212380D01* +X1208167Y212440D01* +X1208117Y212466D01* +X1208073Y212499D01* +X1207992Y212530D01* +X1207914Y212570D01* +X1207866Y212578D01* +X1207808Y212600D01* +X1207660Y212612D01* +X1207583Y212625D01* +X1205343Y212625D01* +X1203206Y213511D01* +X1201571Y215146D01* +X1200685Y217283D01* +X1200685Y219597D01* +X1201571Y221734D01* +X1203206Y223369D01* +X1205343Y224255D01* +X1207657Y224255D01* +X1209483Y223498D01* +X1209595Y223469D01* +X1209704Y223435D01* +X1209732Y223434D01* +X1209759Y223427D01* +X1209873Y223430D01* +X1209988Y223427D01* +X1210015Y223434D01* +X1210043Y223435D01* +X1210152Y223470D01* +X1210263Y223499D01* +X1210287Y223513D01* +X1210314Y223522D01* +X1210409Y223586D01* +X1210508Y223644D01* +X1210527Y223665D01* +X1210550Y223680D01* +X1210624Y223768D01* +X1210702Y223852D01* +X1210715Y223877D01* +X1210733Y223898D01* +X1210779Y224003D01* +X1210832Y224105D01* +X1210836Y224129D01* +X1210848Y224157D01* +X1210885Y224421D01* +X1210887Y224436D01* +X1210887Y232279D01* +X1212100Y233492D01* +X1212135Y233539D01* +X1212178Y233579D01* +X1212220Y233652D01* +X1212271Y233719D01* +X1212292Y233774D01* +X1212321Y233824D01* +X1212342Y233906D01* +X1212372Y233985D01* +X1212377Y234043D01* +X1212391Y234100D01* +X1212389Y234184D01* +X1212396Y234268D01* +X1212384Y234326D01* +X1212382Y234384D01* +X1212356Y234464D01* +X1212340Y234547D01* +X1212313Y234599D01* +X1212295Y234655D01* +X1212255Y234711D01* +X1212209Y234799D01* +X1212173Y234837D01* +X1212159Y234860D01* +X1212126Y234891D01* +X1212100Y234928D01* +X1210884Y236144D01* +X1210883Y236145D01* +X1210882Y236146D01* +X1210764Y236234D01* +X1210657Y236315D01* +X1210655Y236315D01* +X1210654Y236316D01* +X1210521Y236367D01* +X1210391Y236416D01* +X1210390Y236416D01* +X1210388Y236417D01* +X1210244Y236428D01* +X1210108Y236439D01* +X1210106Y236439D01* +X1210105Y236439D01* +X1210089Y236436D01* +X1209829Y236384D01* +X1209802Y236369D01* +X1209778Y236364D01* +X1207657Y235485D01* +X1205343Y235485D01* +X1203206Y236371D01* +X1201571Y238006D01* +X1200685Y240143D01* +X1200685Y242457D01* +X1201571Y244594D01* +X1203206Y246229D01* +X1205343Y247115D01* +X1207657Y247115D01* +X1209794Y246229D01* +X1210248Y245776D01* +X1210294Y245740D01* +X1210335Y245698D01* +X1210408Y245655D01* +X1210475Y245605D01* +X1210530Y245584D01* +X1210580Y245554D01* +X1210662Y245534D01* +X1210741Y245503D01* +X1210799Y245499D01* +X1210855Y245484D01* +X1210940Y245487D01* +X1211024Y245480D01* +X1211081Y245491D01* +X1211140Y245493D01* +X1211220Y245519D01* +X1211303Y245536D01* +X1211354Y245563D01* +X1211410Y245581D01* +X1211466Y245621D01* +X1211555Y245667D01* +X1211627Y245736D01* +X1211683Y245776D01* +X1212100Y246192D01* +X1212135Y246239D01* +X1212178Y246279D01* +X1212220Y246352D01* +X1212271Y246419D01* +X1212292Y246474D01* +X1212321Y246524D01* +X1212342Y246606D01* +X1212372Y246685D01* +X1212377Y246743D01* +X1212391Y246800D01* +X1212389Y246884D01* +X1212396Y246968D01* +X1212384Y247026D01* +X1212382Y247084D01* +X1212356Y247164D01* +X1212340Y247247D01* +X1212313Y247299D01* +X1212295Y247355D01* +X1212255Y247411D01* +X1212209Y247499D01* +X1212140Y247572D01* +X1212100Y247628D01* +X1210887Y248841D01* +X1210887Y249196D01* +X1210879Y249254D01* +X1210881Y249312D01* +X1210859Y249394D01* +X1210847Y249478D01* +X1210824Y249531D01* +X1210809Y249587D01* +X1210766Y249660D01* +X1210731Y249737D01* +X1210693Y249782D01* +X1210664Y249832D01* +X1210602Y249890D01* +X1210548Y249954D01* +X1210499Y249986D01* +X1210456Y250026D01* +X1210381Y250065D01* +X1210311Y250112D01* +X1210255Y250129D01* +X1210203Y250156D01* +X1210135Y250167D01* +X1210040Y250197D01* +X1209940Y250200D01* +X1209872Y250211D01* +X1167877Y250211D01* +X1157501Y260588D01* +X1157431Y260640D01* +X1157367Y260700D01* +X1157317Y260726D01* +X1157273Y260759D01* +X1157192Y260790D01* +X1157114Y260830D01* +X1157066Y260838D01* +X1157008Y260860D01* +X1156860Y260872D01* +X1156783Y260885D01* +X1154543Y260885D01* +X1152406Y261771D01* +X1150771Y263406D01* +X1149885Y265543D01* +X1149885Y267857D01* +X1150771Y269994D01* +X1152406Y271629D01* +X1154543Y272515D01* +X1156857Y272515D01* +X1158994Y271629D01* +X1160629Y269994D01* +X1161515Y267857D01* +X1161515Y265617D01* +X1161527Y265531D01* +X1161530Y265443D01* +X1161547Y265391D01* +X1161555Y265336D01* +X1161590Y265256D01* +X1161617Y265173D01* +X1161645Y265134D01* +X1161671Y265076D01* +X1161767Y264963D01* +X1161812Y264899D01* +X1170105Y256606D01* +X1170175Y256554D01* +X1170239Y256494D01* +X1170289Y256468D01* +X1170333Y256435D01* +X1170414Y256404D01* +X1170492Y256364D01* +X1170540Y256356D01* +X1170598Y256334D01* +X1170746Y256322D01* +X1170823Y256309D01* +X1209872Y256309D01* +X1209930Y256317D01* +X1209988Y256315D01* +X1210070Y256337D01* +X1210154Y256349D01* +X1210207Y256372D01* +X1210263Y256387D01* +X1210336Y256430D01* +X1210413Y256465D01* +X1210458Y256503D01* +X1210508Y256532D01* +X1210566Y256594D01* +X1210630Y256648D01* +X1210662Y256697D01* +X1210702Y256740D01* +X1210741Y256815D01* +X1210788Y256885D01* +X1210805Y256941D01* +X1210832Y256993D01* +X1210843Y257061D01* +X1210873Y257156D01* +X1210876Y257256D01* +X1210887Y257324D01* +X1210887Y257679D01* +X1212100Y258892D01* +X1212116Y258914D01* +X1212136Y258930D01* +X1212152Y258955D01* +X1212178Y258979D01* +X1212220Y259052D01* +X1212271Y259119D01* +X1212283Y259152D01* +X1212293Y259167D01* +X1212300Y259188D01* +X1212321Y259224D01* +X1212342Y259306D01* +X1212372Y259385D01* +X1212376Y259427D01* +X1212379Y259438D01* +X1212380Y259453D01* +X1212391Y259500D01* +X1212389Y259584D01* +X1212396Y259668D01* +X1212386Y259715D01* +X1212386Y259722D01* +X1212384Y259731D01* +X1212382Y259784D01* +X1212356Y259864D01* +X1212340Y259947D01* +X1212315Y259994D01* +X1212315Y259997D01* +X1212312Y260001D01* +X1212295Y260055D01* +X1212255Y260111D01* +X1212209Y260199D01* +X1212170Y260240D01* +X1212169Y260242D01* +X1212164Y260247D01* +X1212140Y260272D01* +X1212100Y260328D01* +X1210887Y261541D01* +X1210887Y261896D01* +X1210879Y261954D01* +X1210881Y262012D01* +X1210859Y262094D01* +X1210847Y262178D01* +X1210824Y262231D01* +X1210809Y262287D01* +X1210766Y262360D01* +X1210731Y262437D01* +X1210693Y262482D01* +X1210664Y262532D01* +X1210602Y262590D01* +X1210548Y262654D01* +X1210499Y262686D01* +X1210456Y262726D01* +X1210381Y262765D01* +X1210311Y262812D01* +X1210255Y262829D01* +X1210203Y262856D01* +X1210135Y262867D01* +X1210040Y262897D01* +X1209940Y262900D01* +X1209872Y262911D01* +X1175497Y262911D01* +X1167661Y270748D01* +X1167591Y270800D01* +X1167527Y270860D01* +X1167477Y270886D01* +X1167433Y270919D01* +X1167352Y270950D01* +X1167274Y270990D01* +X1167226Y270998D01* +X1167168Y271020D01* +X1167020Y271032D01* +X1166943Y271045D01* +X1164703Y271045D01* +X1162566Y271931D01* +X1160931Y273566D01* +X1160045Y275703D01* +X1160045Y278017D01* +X1160931Y280154D01* +X1162566Y281789D01* +X1164703Y282675D01* +X1167017Y282675D01* +X1169154Y281789D01* +X1170789Y280154D01* +X1171675Y278017D01* +X1171675Y275777D01* +X1171687Y275691D01* +X1171690Y275603D01* +X1171707Y275551D01* +X1171715Y275496D01* +X1171750Y275416D01* +X1171777Y275333D01* +X1171805Y275294D01* +X1171831Y275236D01* +X1171927Y275123D01* +X1171972Y275059D01* +X1177725Y269306D01* +X1177795Y269254D01* +X1177859Y269194D01* +X1177909Y269168D01* +X1177953Y269135D01* +X1178034Y269104D01* +X1178112Y269064D01* +X1178160Y269056D01* +X1178218Y269034D01* +X1178366Y269022D01* +X1178443Y269009D01* +X1209872Y269009D01* +X1209930Y269017D01* +X1209988Y269015D01* +X1210070Y269037D01* +X1210154Y269049D01* +X1210207Y269072D01* +X1210263Y269087D01* +X1210336Y269130D01* +X1210413Y269165D01* +X1210458Y269203D01* +X1210508Y269232D01* +X1210566Y269294D01* +X1210630Y269348D01* +X1210662Y269397D01* +X1210702Y269440D01* +X1210741Y269515D01* +X1210788Y269585D01* +X1210805Y269641D01* +X1210832Y269693D01* +X1210843Y269761D01* +X1210873Y269856D01* +X1210876Y269956D01* +X1210887Y270024D01* +X1210887Y270379D01* +X1212100Y271592D01* +X1212135Y271639D01* +X1212178Y271679D01* +X1212220Y271752D01* +X1212271Y271819D01* +X1212292Y271874D01* +X1212321Y271924D01* +X1212342Y272006D01* +X1212372Y272085D01* +X1212377Y272143D01* +X1212391Y272200D01* +X1212389Y272284D01* +X1212396Y272368D01* +X1212384Y272426D01* +X1212382Y272484D01* +X1212356Y272564D01* +X1212340Y272647D01* +X1212313Y272699D01* +X1212295Y272755D01* +X1212255Y272811D01* +X1212209Y272899D01* +X1212140Y272972D01* +X1212100Y273028D01* +X1210884Y274244D01* +X1210883Y274245D01* +X1210882Y274246D01* +X1210770Y274330D01* +X1210657Y274415D01* +X1210655Y274415D01* +X1210654Y274416D01* +X1210524Y274465D01* +X1210391Y274516D01* +X1210390Y274516D01* +X1210388Y274517D01* +X1210245Y274528D01* +X1210108Y274539D01* +X1210107Y274539D01* +X1210105Y274539D01* +X1210089Y274536D01* +X1209829Y274484D01* +X1209802Y274469D01* +X1209778Y274464D01* +X1207657Y273585D01* +X1205343Y273585D01* +X1203206Y274471D01* +X1201571Y276106D01* +X1201088Y277271D01* +X1201073Y277296D01* +X1201064Y277324D01* +X1201001Y277419D01* +X1200943Y277516D01* +X1200922Y277536D01* +X1200906Y277561D01* +X1200819Y277633D01* +X1200737Y277711D01* +X1200711Y277725D01* +X1200688Y277744D01* +X1200585Y277790D01* +X1200484Y277841D01* +X1200455Y277847D01* +X1200428Y277859D01* +X1200316Y277875D01* +X1200205Y277896D01* +X1200176Y277894D01* +X1200147Y277898D01* +X1200035Y277882D01* +X1199922Y277872D01* +X1199895Y277861D01* +X1199865Y277857D01* +X1199762Y277811D01* +X1199657Y277770D01* +X1199633Y277752D01* +X1199606Y277740D01* +X1199520Y277667D01* +X1199430Y277598D01* +X1199412Y277575D01* +X1199390Y277556D01* +X1199348Y277489D01* +X1199260Y277371D01* +X1199244Y277329D01* +X1199227Y277304D01* +X1199222Y277287D01* +X1199212Y277271D01* +X1198729Y276106D01* +X1197094Y274471D01* +X1194957Y273585D01* +X1192643Y273585D01* +X1190506Y274471D01* +X1188871Y276106D01* +X1187985Y278243D01* +X1187985Y280557D01* +X1188871Y282694D01* +X1190506Y284329D01* +X1192643Y285215D01* +X1194883Y285215D01* +X1194969Y285227D01* +X1195057Y285230D01* +X1195109Y285247D01* +X1195164Y285255D01* +X1195244Y285290D01* +X1195327Y285317D01* +X1195366Y285345D01* +X1195424Y285371D01* +X1195537Y285467D01* +X1195601Y285512D01* +X1204497Y294409D01* +X1209872Y294409D01* +X1209930Y294417D01* +X1209988Y294415D01* +X1210070Y294437D01* +X1210154Y294449D01* +X1210207Y294472D01* +X1210263Y294487D01* +X1210336Y294530D01* +X1210413Y294565D01* +X1210458Y294603D01* +X1210508Y294632D01* +X1210566Y294694D01* +X1210630Y294748D01* +X1210662Y294797D01* +X1210702Y294840D01* +X1210741Y294915D01* +X1210788Y294985D01* +X1210805Y295041D01* +X1210832Y295093D01* +X1210843Y295161D01* +X1210873Y295256D01* +X1210876Y295356D01* +X1210887Y295424D01* +X1210887Y295779D01* +X1213001Y297893D01* +X1232839Y297893D01* +X1234953Y295779D01* +X1234953Y286941D01* +X1233740Y285728D01* +X1233705Y285681D01* +X1233662Y285641D01* +X1233620Y285568D01* +X1233569Y285501D01* +X1233548Y285446D01* +X1233519Y285396D01* +X1233498Y285314D01* +X1233468Y285235D01* +X1233463Y285177D01* +X1233449Y285120D01* +X1233451Y285036D01* +X1233444Y284952D01* +X1233456Y284894D01* +X1233458Y284836D01* +X1233484Y284756D01* +X1233500Y284673D01* +X1233527Y284621D01* +X1233545Y284565D01* +X1233585Y284509D01* +X1233631Y284421D01* +X1233676Y284373D01* +X1233689Y284351D01* +X1233715Y284327D01* +X1233740Y284292D01* +X1234953Y283079D01* +X1234953Y274241D01* +X1233740Y273028D01* +X1233705Y272981D01* +X1233662Y272941D01* +X1233620Y272868D01* +X1233569Y272801D01* +X1233548Y272746D01* +X1233519Y272696D01* +X1233498Y272614D01* +X1233468Y272535D01* +X1233463Y272477D01* +X1233449Y272420D01* +X1233451Y272336D01* +X1233444Y272252D01* +X1233456Y272194D01* +X1233458Y272136D01* +X1233484Y272056D01* +X1233500Y271973D01* +X1233527Y271921D01* +X1233545Y271865D01* +X1233585Y271809D01* +X1233631Y271721D01* +X1233700Y271648D01* +X1233740Y271592D01* +X1234953Y270379D01* +X1234953Y261541D01* +X1233740Y260328D01* +X1233706Y260283D01* +X1233704Y260281D01* +X1233703Y260280D01* +X1233662Y260241D01* +X1233620Y260168D01* +X1233569Y260101D01* +X1233549Y260048D01* +X1233547Y260045D01* +X1233546Y260042D01* +X1233519Y259996D01* +X1233498Y259914D01* +X1233468Y259835D01* +X1233463Y259782D01* +X1233461Y259774D01* +X1233461Y259768D01* +X1233449Y259720D01* +X1233451Y259636D01* +X1233444Y259552D01* +X1233454Y259503D01* +X1233454Y259489D01* +X1233456Y259479D01* +X1233458Y259436D01* +X1233484Y259356D01* +X1233500Y259273D01* +X1233520Y259235D01* +X1233525Y259214D01* +X1233534Y259200D01* +X1233545Y259165D01* +X1233585Y259109D01* +X1233631Y259021D01* +X1233656Y258994D01* +X1233671Y258970D01* +X1233713Y258931D01* +X1233740Y258892D01* +X1234953Y257679D01* +X1234953Y248841D01* +X1233740Y247628D01* +X1233705Y247581D01* +X1233662Y247541D01* +X1233620Y247468D01* +X1233569Y247401D01* +X1233548Y247346D01* +X1233519Y247296D01* +X1233498Y247214D01* +X1233468Y247135D01* +X1233463Y247077D01* +X1233449Y247020D01* +X1233451Y246936D01* +X1233444Y246852D01* +X1233456Y246794D01* +X1233458Y246736D01* +X1233484Y246656D01* +X1233500Y246573D01* +X1233527Y246521D01* +X1233545Y246465D01* +X1233585Y246409D01* +X1233631Y246321D01* +X1233700Y246248D01* +X1233740Y246192D01* +X1234953Y244979D01* +X1234953Y236141D01* +X1233740Y234928D01* +X1233727Y234911D01* +X1233714Y234900D01* +X1233697Y234874D01* +X1233662Y234841D01* +X1233620Y234768D01* +X1233569Y234701D01* +X1233548Y234646D01* +X1233519Y234596D01* +X1233498Y234514D01* +X1233468Y234435D01* +X1233463Y234377D01* +X1233449Y234320D01* +X1233451Y234236D01* +X1233444Y234152D01* +X1233456Y234094D01* +X1233458Y234036D01* +X1233484Y233956D01* +X1233500Y233873D01* +X1233527Y233821D01* +X1233545Y233765D01* +X1233585Y233709D01* +X1233631Y233621D01* +X1233700Y233548D01* +X1233740Y233492D01* +X1234953Y232279D01* +X1234953Y223441D01* +X1233740Y222228D01* +X1233705Y222181D01* +X1233662Y222141D01* +X1233620Y222068D01* +X1233569Y222001D01* +X1233548Y221946D01* +X1233519Y221896D01* +X1233498Y221814D01* +X1233468Y221735D01* +X1233463Y221677D01* +X1233449Y221620D01* +X1233451Y221536D01* +X1233444Y221452D01* +X1233456Y221394D01* +X1233458Y221336D01* +X1233484Y221256D01* +X1233500Y221173D01* +X1233527Y221121D01* +X1233545Y221065D01* +X1233585Y221009D01* +X1233631Y220921D01* +X1233700Y220848D01* +X1233740Y220792D01* +X1234953Y219579D01* +X1234953Y210741D01* +X1233740Y209528D01* +X1233705Y209481D01* +X1233662Y209441D01* +X1233620Y209368D01* +X1233569Y209301D01* +X1233548Y209246D01* +X1233519Y209196D01* +X1233498Y209114D01* +X1233468Y209035D01* +X1233463Y208977D01* +X1233449Y208920D01* +X1233451Y208836D01* +X1233444Y208752D01* +X1233456Y208694D01* +X1233458Y208636D01* +X1233484Y208556D01* +X1233500Y208473D01* +X1233527Y208421D01* +X1233545Y208365D01* +X1233585Y208309D01* +X1233631Y208221D01* +X1233700Y208148D01* +X1233740Y208092D01* +X1234953Y206879D01* +X1234953Y198041D01* +X1233740Y196828D01* +X1233705Y196781D01* +X1233662Y196741D01* +X1233620Y196668D01* +X1233569Y196601D01* +X1233548Y196546D01* +X1233519Y196496D01* +X1233498Y196414D01* +X1233468Y196335D01* +X1233463Y196277D01* +X1233449Y196220D01* +X1233451Y196136D01* +X1233444Y196052D01* +X1233456Y195994D01* +X1233458Y195936D01* +X1233484Y195856D01* +X1233500Y195773D01* +X1233527Y195721D01* +X1233545Y195665D01* +X1233585Y195609D01* +X1233631Y195521D01* +X1233700Y195448D01* +X1233740Y195392D01* +X1234953Y194179D01* +X1234953Y187615D01* +X1234957Y187586D01* +X1234954Y187557D01* +X1234977Y187446D01* +X1234993Y187334D01* +X1235005Y187307D01* +X1235010Y187278D01* +X1235063Y187178D01* +X1235109Y187074D01* +X1235128Y187052D01* +X1235141Y187026D01* +X1235219Y186944D01* +X1235292Y186857D01* +X1235317Y186841D01* +X1235337Y186820D01* +X1235435Y186763D01* +X1235529Y186700D01* +X1235557Y186691D01* +X1235582Y186676D01* +X1235692Y186648D01* +X1235800Y186614D01* +X1235830Y186613D01* +X1235858Y186606D01* +X1235971Y186610D01* +X1236084Y186607D01* +X1236113Y186614D01* +X1236142Y186615D01* +X1236250Y186650D01* +X1236359Y186679D01* +X1236385Y186694D01* +X1236413Y186703D01* +X1236476Y186748D01* +X1236604Y186824D01* +X1236647Y186869D01* +X1236686Y186897D01* +X1245877Y196089D01* +X1249157Y196089D01* +X1249244Y196101D01* +X1249331Y196104D01* +X1249384Y196121D01* +X1249439Y196129D01* +X1249519Y196164D01* +X1249602Y196191D01* +X1249641Y196219D01* +X1249698Y196245D01* +X1249811Y196341D01* +X1249875Y196386D01* +X1251562Y198073D01* +X1257618Y198073D01* +X1259122Y196569D01* +X1259169Y196534D01* +X1259209Y196491D01* +X1259282Y196449D01* +X1259349Y196398D01* +X1259404Y196377D01* +X1259454Y196348D01* +X1259536Y196327D01* +X1259615Y196297D01* +X1259673Y196292D01* +X1259730Y196277D01* +X1259814Y196280D01* +X1259898Y196273D01* +X1259956Y196285D01* +X1260014Y196286D01* +X1260094Y196312D01* +X1260177Y196329D01* +X1260229Y196356D01* +X1260285Y196374D01* +X1260341Y196414D01* +X1260429Y196460D01* +X1260502Y196529D01* +X1260558Y196569D01* +X1262062Y198073D01* +X1268118Y198073D01* +X1269873Y196318D01* +X1269873Y189762D01* +X1268436Y188325D01* +X1268384Y188255D01* +X1268324Y188191D01* +X1268298Y188142D01* +X1268265Y188098D01* +X1268234Y188016D01* +X1268194Y187938D01* +X1268186Y187891D01* +X1268164Y187832D01* +X1268152Y187685D01* +X1268139Y187607D01* +X1268139Y185848D01* +X1268147Y185790D01* +X1268145Y185732D01* +X1268167Y185650D01* +X1268179Y185566D01* +X1268202Y185513D01* +X1268217Y185457D01* +X1268260Y185384D01* +X1268295Y185307D01* +X1268333Y185262D01* +X1268362Y185212D01* +X1268424Y185154D01* +X1268478Y185090D01* +X1268527Y185058D01* +X1268570Y185018D01* +X1268645Y184979D01* +X1268715Y184932D01* +X1268771Y184915D01* +X1268823Y184888D01* +X1268891Y184877D01* +X1268986Y184847D01* +X1269086Y184844D01* +X1269154Y184833D01* +X1270617Y184833D01* +X1272833Y182617D01* +X1272833Y172983D01* +X1270617Y170767D01* +X1259983Y170767D01* +X1258018Y172733D01* +X1257971Y172768D01* +X1257931Y172810D01* +X1257858Y172853D01* +X1257791Y172903D01* +X1257736Y172924D01* +X1257686Y172954D01* +X1257604Y172975D01* +X1257525Y173005D01* +X1257467Y173009D01* +X1257410Y173024D01* +X1257326Y173021D01* +X1257242Y173028D01* +X1257184Y173017D01* +X1257126Y173015D01* +X1257046Y172989D01* +X1256963Y172972D01* +X1256911Y172945D01* +X1256855Y172927D01* +X1256799Y172887D01* +X1256711Y172841D01* +X1256638Y172773D01* +X1256582Y172733D01* +X1254617Y170767D01* +X1253364Y170767D01* +X1253306Y170759D01* +X1253248Y170761D01* +X1253166Y170739D01* +X1253082Y170727D01* +X1253029Y170704D01* +X1252973Y170689D01* +X1252900Y170646D01* +X1252823Y170611D01* +X1252778Y170573D01* +X1252728Y170544D01* +X1252670Y170482D01* +X1252606Y170428D01* +X1252574Y170379D01* +X1252534Y170336D01* +X1252495Y170261D01* +X1252448Y170191D01* +X1252431Y170135D01* +X1252404Y170083D01* +X1252393Y170015D01* +X1252363Y169920D01* +X1252360Y169820D01* +X1252349Y169752D01* +X1252349Y167013D01* +X1252010Y166675D01* +X1251958Y166605D01* +X1251898Y166541D01* +X1251872Y166491D01* +X1251839Y166447D01* +X1251808Y166366D01* +X1251768Y166288D01* +X1251760Y166240D01* +X1251738Y166182D01* +X1251726Y166034D01* +X1251713Y165957D01* +X1251713Y163988D01* +X1250862Y161934D01* +X1249290Y160362D01* +X1247236Y159511D01* +X1245012Y159511D01* +X1242958Y160362D01* +X1241386Y161934D01* +X1241013Y162836D01* +X1240954Y162935D01* +X1240901Y163037D01* +X1240882Y163057D01* +X1240868Y163081D01* +X1240785Y163159D01* +X1240706Y163243D01* +X1240682Y163257D01* +X1240661Y163276D01* +X1240559Y163329D01* +X1240460Y163387D01* +X1240433Y163393D01* +X1240409Y163406D01* +X1240296Y163428D01* +X1240185Y163457D01* +X1240157Y163456D01* +X1240130Y163461D01* +X1240015Y163451D01* +X1239901Y163448D01* +X1239874Y163439D01* +X1239847Y163437D01* +X1239739Y163395D01* +X1239630Y163360D01* +X1239610Y163346D01* +X1239581Y163335D01* +X1239369Y163174D01* +X1239357Y163165D01* +X1237503Y161311D01* +X1235968Y161311D01* +X1235910Y161303D01* +X1235852Y161305D01* +X1235770Y161283D01* +X1235686Y161271D01* +X1235633Y161248D01* +X1235577Y161233D01* +X1235504Y161190D01* +X1235427Y161155D01* +X1235382Y161117D01* +X1235332Y161088D01* +X1235274Y161026D01* +X1235210Y160972D01* +X1235178Y160923D01* +X1235138Y160880D01* +X1235099Y160805D01* +X1235052Y160735D01* +X1235035Y160679D01* +X1235008Y160627D01* +X1234997Y160559D01* +X1234967Y160464D01* +X1234964Y160364D01* +X1234953Y160296D01* +X1234953Y159941D01* +X1233740Y158728D01* +X1233705Y158681D01* +X1233662Y158641D01* +X1233620Y158568D01* +X1233569Y158501D01* +X1233548Y158446D01* +X1233519Y158396D01* +X1233498Y158314D01* +X1233468Y158235D01* +X1233463Y158177D01* +X1233449Y158120D01* +X1233451Y158036D01* +X1233444Y157952D01* +X1233456Y157894D01* +X1233458Y157836D01* +X1233484Y157756D01* +X1233500Y157673D01* +X1233527Y157621D01* +X1233545Y157565D01* +X1233585Y157509D01* +X1233631Y157421D01* +X1233700Y157348D01* +X1233740Y157292D01* +X1234953Y156079D01* +X1234953Y155724D01* +X1234961Y155666D01* +X1234959Y155608D01* +X1234981Y155526D01* +X1234993Y155442D01* +X1235016Y155389D01* +X1235031Y155333D01* +X1235074Y155260D01* +X1235109Y155183D01* +X1235147Y155138D01* +X1235176Y155088D01* +X1235238Y155030D01* +X1235292Y154966D01* +X1235341Y154934D01* +X1235384Y154894D01* +X1235459Y154855D01* +X1235529Y154808D01* +X1235585Y154791D01* +X1235637Y154764D01* +X1235705Y154753D01* +X1235800Y154723D01* +X1235900Y154720D01* +X1235968Y154709D01* +X1246433Y154709D01* +X1253571Y147570D01* +X1253641Y147518D01* +X1253705Y147458D01* +X1253755Y147432D01* +X1253799Y147399D01* +X1253880Y147368D01* +X1253958Y147328D01* +X1254006Y147320D01* +X1254064Y147298D01* +X1254212Y147286D01* +X1254289Y147273D01* +X1257618Y147273D01* +X1259122Y145769D01* +X1259169Y145734D01* +X1259209Y145691D01* +X1259282Y145649D01* +X1259349Y145598D01* +X1259404Y145577D01* +X1259454Y145548D01* +X1259536Y145527D01* +X1259615Y145497D01* +X1259673Y145492D01* +X1259730Y145477D01* +X1259814Y145480D01* +X1259898Y145473D01* +X1259956Y145485D01* +X1260014Y145486D01* +X1260094Y145512D01* +X1260177Y145529D01* +X1260229Y145556D01* +X1260285Y145574D01* +X1260341Y145614D01* +X1260429Y145660D01* +X1260502Y145729D01* +X1260558Y145769D01* +X1262062Y147273D01* +X1268118Y147273D01* +X1269873Y145518D01* +X1269873Y138962D01* +X1269217Y138306D01* +X1269199Y138282D01* +X1269177Y138263D01* +X1269114Y138169D01* +X1269046Y138079D01* +X1269035Y138051D01* +X1269019Y138027D01* +X1268985Y137919D01* +X1268945Y137813D01* +X1268942Y137784D01* +X1268933Y137756D01* +X1268930Y137642D01* +X1268921Y137530D01* +X1268927Y137501D01* +X1268926Y137472D01* +X1268955Y137362D01* +X1268977Y137251D01* +X1268991Y137225D01* +X1268998Y137197D01* +X1269056Y137099D01* +X1269108Y136999D01* +X1269128Y136977D01* +X1269143Y136952D01* +X1269226Y136875D01* +X1269304Y136793D01* +X1269329Y136778D01* +X1269350Y136758D01* +X1269451Y136706D01* +X1269549Y136649D01* +X1269577Y136642D01* +X1269604Y136628D01* +X1269681Y136615D01* +X1269825Y136579D01* +X1269887Y136581D01* +X1269935Y136573D01* +X1270617Y136573D01* +X1272833Y134357D01* +X1272833Y124723D01* +X1270617Y122507D01* +X1259983Y122507D01* +X1258018Y124473D01* +X1257971Y124508D01* +X1257931Y124550D01* +X1257858Y124593D01* +X1257791Y124643D01* +X1257736Y124664D01* +X1257686Y124694D01* +X1257604Y124715D01* +X1257525Y124745D01* +X1257467Y124749D01* +X1257410Y124764D01* +X1257326Y124761D01* +X1257242Y124768D01* +X1257184Y124757D01* +X1257126Y124755D01* +X1257046Y124729D01* +X1256963Y124712D01* +X1256911Y124685D01* +X1256855Y124667D01* +X1256799Y124627D01* +X1256711Y124581D01* +X1256638Y124513D01* +X1256582Y124473D01* +X1254617Y122507D01* +X1253364Y122507D01* +X1253306Y122499D01* +X1253248Y122501D01* +X1253166Y122479D01* +X1253082Y122467D01* +X1253029Y122444D01* +X1252973Y122429D01* +X1252900Y122386D01* +X1252823Y122351D01* +X1252778Y122313D01* +X1252728Y122284D01* +X1252670Y122222D01* +X1252606Y122168D01* +X1252574Y122119D01* +X1252534Y122076D01* +X1252495Y122001D01* +X1252448Y121931D01* +X1252431Y121875D01* +X1252404Y121823D01* +X1252393Y121755D01* +X1252363Y121660D01* +X1252360Y121560D01* +X1252349Y121492D01* +X1252349Y119662D01* +X1252353Y119631D01* +X1252351Y119600D01* +X1252368Y119523D01* +X1252389Y119380D01* +X1252415Y119321D01* +X1252426Y119273D01* +X1252955Y117997D01* +X1252955Y115683D01* +X1252069Y113546D01* +X1250434Y111911D01* +X1248297Y111025D01* +X1245983Y111025D01* +X1243846Y111911D01* +X1242211Y113546D01* +X1241325Y115683D01* +X1241325Y117997D01* +X1242211Y120134D01* +X1243566Y121489D01* +X1243601Y121536D01* +X1243643Y121576D01* +X1243686Y121649D01* +X1243737Y121716D01* +X1243757Y121771D01* +X1243787Y121821D01* +X1243808Y121903D01* +X1243838Y121982D01* +X1243843Y122040D01* +X1243857Y122097D01* +X1243854Y122181D01* +X1243861Y122265D01* +X1243850Y122322D01* +X1243848Y122381D01* +X1243822Y122461D01* +X1243805Y122544D01* +X1243779Y122596D01* +X1243761Y122651D01* +X1243720Y122708D01* +X1243674Y122796D01* +X1243606Y122869D01* +X1243566Y122925D01* +X1241767Y124723D01* +X1241767Y134357D01* +X1243983Y136573D01* +X1249745Y136573D01* +X1249774Y136577D01* +X1249804Y136574D01* +X1249915Y136597D01* +X1250027Y136613D01* +X1250054Y136625D01* +X1250082Y136630D01* +X1250183Y136683D01* +X1250286Y136729D01* +X1250309Y136748D01* +X1250335Y136761D01* +X1250417Y136839D01* +X1250503Y136912D01* +X1250520Y136937D01* +X1250541Y136957D01* +X1250598Y137055D01* +X1250661Y137149D01* +X1250670Y137177D01* +X1250685Y137202D01* +X1250712Y137312D01* +X1250747Y137420D01* +X1250747Y137450D01* +X1250755Y137478D01* +X1250751Y137591D01* +X1250754Y137704D01* +X1250747Y137733D01* +X1250746Y137762D01* +X1250711Y137870D01* +X1250682Y137979D01* +X1250667Y138005D01* +X1250658Y138033D01* +X1250612Y138097D01* +X1250537Y138224D01* +X1250491Y138267D01* +X1250463Y138306D01* +X1249807Y138962D01* +X1249807Y142291D01* +X1249795Y142377D01* +X1249792Y142465D01* +X1249775Y142517D01* +X1249767Y142572D01* +X1249732Y142652D01* +X1249705Y142735D01* +X1249677Y142774D01* +X1249651Y142832D01* +X1249555Y142945D01* +X1249510Y143009D01* +X1244205Y148314D01* +X1244135Y148366D01* +X1244071Y148426D01* +X1244021Y148452D01* +X1243977Y148485D01* +X1243896Y148516D01* +X1243818Y148556D01* +X1243770Y148564D01* +X1243712Y148586D01* +X1243564Y148598D01* +X1243487Y148611D01* +X1235968Y148611D01* +X1235910Y148603D01* +X1235852Y148605D01* +X1235770Y148583D01* +X1235686Y148571D01* +X1235633Y148548D01* +X1235577Y148533D01* +X1235504Y148490D01* +X1235427Y148455D01* +X1235382Y148417D01* +X1235332Y148388D01* +X1235274Y148326D01* +X1235210Y148272D01* +X1235178Y148223D01* +X1235138Y148180D01* +X1235099Y148105D01* +X1235052Y148035D01* +X1235035Y147979D01* +X1235008Y147927D01* +X1234997Y147859D01* +X1234967Y147764D01* +X1234964Y147664D01* +X1234953Y147596D01* +X1234953Y147241D01* +X1233740Y146028D01* +X1233705Y145981D01* +X1233662Y145941D01* +X1233620Y145868D01* +X1233569Y145801D01* +X1233548Y145746D01* +X1233519Y145696D01* +X1233498Y145614D01* +X1233468Y145535D01* +X1233463Y145477D01* +X1233449Y145420D01* +X1233451Y145336D01* +X1233444Y145252D01* +X1233456Y145194D01* +X1233458Y145136D01* +X1233484Y145056D01* +X1233500Y144973D01* +X1233527Y144921D01* +X1233545Y144865D01* +X1233585Y144809D01* +X1233631Y144721D01* +X1233700Y144648D01* +X1233740Y144592D01* +X1234953Y143379D01* +X1234953Y134541D01* +X1232839Y132427D01* +X1226984Y132427D01* +X1226926Y132419D01* +X1226868Y132421D01* +X1226786Y132399D01* +X1226702Y132387D01* +X1226649Y132364D01* +X1226593Y132349D01* +X1226520Y132306D01* +X1226443Y132271D01* +X1226398Y132233D01* +X1226348Y132204D01* +X1226290Y132142D01* +X1226226Y132088D01* +X1226194Y132039D01* +X1226154Y131996D01* +X1226115Y131921D01* +X1226068Y131851D01* +X1226051Y131795D01* +X1226024Y131743D01* +X1226013Y131675D01* +X1225983Y131580D01* +X1225980Y131480D01* +X1225969Y131412D01* +X1225969Y126743D01* +X1225981Y126656D01* +X1225984Y126569D01* +X1226001Y126516D01* +X1226009Y126462D01* +X1226044Y126382D01* +X1226071Y126299D01* +X1226099Y126259D01* +X1226125Y126202D01* +X1226221Y126089D01* +X1226266Y126025D01* +X1227077Y125214D01* +X1227963Y123077D01* +X1227963Y120763D01* +X1227077Y118626D01* +X1225442Y116991D01* +X1223305Y116105D01* +X1220991Y116105D01* +X1218854Y116991D01* +X1217219Y118626D01* +X1216333Y120763D01* +X1216333Y123077D01* +X1217219Y125214D01* +X1218854Y126849D01* +X1219245Y127011D01* +X1219246Y127012D01* +X1219247Y127012D01* +X1219366Y127083D01* +X1219489Y127156D01* +X1219490Y127157D01* +X1219492Y127158D01* +X1219589Y127262D01* +X1219685Y127362D01* +X1219685Y127364D01* +X1219686Y127365D01* +X1219748Y127485D01* +X1219815Y127615D01* +X1219815Y127617D01* +X1219816Y127618D01* +X1219818Y127633D01* +X1219870Y127894D01* +X1219867Y127924D01* +X1219871Y127949D01* +X1219871Y131412D01* +X1219863Y131470D01* +X1219865Y131528D01* +X1219843Y131610D01* +X1219831Y131694D01* +X1219808Y131747D01* +X1219793Y131803D01* +X1219750Y131876D01* +X1219715Y131953D01* +X1219677Y131998D01* +X1219648Y132048D01* +X1219586Y132106D01* +X1219532Y132170D01* +X1219483Y132202D01* +X1219440Y132242D01* +X1219365Y132281D01* +X1219295Y132328D01* +X1219239Y132345D01* +X1219187Y132372D01* +X1219119Y132383D01* +X1219024Y132413D01* +X1218924Y132416D01* +X1218856Y132427D01* +X1213001Y132427D01* +X1212768Y132660D01* +X1212744Y132678D01* +X1212725Y132700D01* +X1212631Y132763D01* +X1212540Y132831D01* +X1212513Y132842D01* +X1212489Y132858D01* +X1212381Y132892D01* +X1212275Y132932D01* +X1212246Y132935D01* +X1212218Y132944D01* +X1212105Y132947D01* +X1211991Y132956D01* +X1211963Y132950D01* +X1211933Y132951D01* +X1211824Y132922D01* +X1211713Y132900D01* +X1211687Y132887D01* +X1211658Y132879D01* +X1211561Y132821D01* +X1211460Y132769D01* +X1211439Y132749D01* +X1211414Y132734D01* +X1211336Y132651D01* +X1211254Y132573D01* +X1211240Y132548D01* +X1211219Y132527D01* +X1211168Y132426D01* +X1211111Y132328D01* +X1211103Y132300D01* +X1211090Y132273D01* +X1211077Y132196D01* +X1211040Y132053D01* +X1211042Y131990D01* +X1211034Y131942D01* +X1211034Y115188D01* +X1211043Y115130D01* +X1211041Y115072D01* +X1211062Y114990D01* +X1211074Y114906D01* +X1211098Y114853D01* +X1211113Y114797D01* +X1211156Y114724D01* +X1211191Y114647D01* +X1211228Y114602D01* +X1211258Y114552D01* +X1211320Y114494D01* +X1211374Y114430D01* +X1211423Y114398D01* +X1211466Y114358D01* +X1211541Y114319D01* +X1211611Y114272D01* +X1211667Y114255D01* +X1211719Y114228D01* +X1211787Y114217D01* +X1211882Y114187D01* +X1211982Y114184D01* +X1212050Y114173D01* +X1214858Y114173D01* +X1216613Y112418D01* +X1216613Y106362D01* +X1215109Y104858D01* +X1215074Y104811D01* +X1215031Y104771D01* +X1214988Y104698D01* +X1214938Y104631D01* +X1214917Y104576D01* +X1214888Y104526D01* +X1214867Y104444D01* +X1214837Y104365D01* +X1214832Y104307D01* +X1214817Y104250D01* +X1214820Y104166D01* +X1214813Y104082D01* +X1214825Y104024D01* +X1214826Y103966D01* +X1214852Y103886D01* +X1214869Y103803D01* +X1214896Y103751D01* +X1214914Y103695D01* +X1214954Y103639D01* +X1215000Y103551D01* +X1215069Y103478D01* +X1215109Y103422D01* +X1215936Y102595D01* +X1215982Y102560D01* +X1216023Y102518D01* +X1216096Y102475D01* +X1216163Y102424D01* +X1216218Y102403D01* +X1216268Y102374D01* +X1216350Y102353D01* +X1216429Y102323D01* +X1216487Y102318D01* +X1216544Y102304D01* +X1216628Y102306D01* +X1216712Y102299D01* +X1216769Y102311D01* +X1216828Y102313D01* +X1216908Y102339D01* +X1216991Y102355D01* +X1217043Y102382D01* +X1217098Y102400D01* +X1217154Y102440D01* +X1217243Y102486D01* +X1217315Y102555D01* +X1217371Y102595D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +X1218574Y94322D01* +X1217541Y95355D01* +X1217495Y95390D01* +X1217454Y95432D01* +X1217382Y95475D01* +X1217314Y95526D01* +X1217260Y95547D01* +X1217209Y95576D01* +X1217128Y95597D01* +X1217049Y95627D01* +X1216990Y95632D01* +X1216934Y95646D01* +X1216849Y95644D01* +X1216765Y95651D01* +X1216708Y95639D01* +X1216650Y95637D01* +X1216569Y95611D01* +X1216487Y95595D01* +X1216435Y95568D01* +X1216379Y95550D01* +X1216323Y95510D01* +X1216234Y95464D01* +X1216162Y95395D01* +X1216106Y95355D01* +X1214858Y94107D01* +X1208302Y94107D01* +X1206865Y95544D01* +X1206795Y95596D01* +X1206731Y95656D01* +X1206682Y95682D01* +X1206638Y95715D01* +X1206556Y95746D01* +X1206478Y95786D01* +X1206431Y95794D01* +X1206372Y95816D01* +X1206225Y95828D01* +X1206147Y95841D01* +X1204313Y95841D01* +X1204226Y95829D01* +X1204139Y95826D01* +X1204086Y95809D01* +X1204031Y95801D01* +X1203951Y95766D01* +X1203868Y95739D01* +X1203829Y95711D01* +X1203772Y95685D01* +X1203659Y95589D01* +X1203595Y95544D01* +X1202158Y94107D01* +X1195602Y94107D01* +X1193847Y95862D01* +X1193847Y101918D01* +X1195351Y103422D01* +X1195386Y103469D01* +X1195429Y103509D01* +X1195472Y103582D01* +X1195522Y103649D01* +X1195543Y103704D01* +X1195572Y103754D01* +X1195593Y103836D01* +X1195623Y103915D01* +X1195628Y103973D01* +X1195643Y104030D01* +X1195640Y104114D01* +X1195647Y104198D01* +X1195635Y104256D01* +X1195634Y104314D01* +X1195608Y104394D01* +X1195591Y104477D01* +X1195564Y104529D01* +X1195546Y104585D01* +X1195506Y104641D01* +X1195460Y104729D01* +X1195391Y104802D01* +X1195351Y104858D01* +X1194165Y106044D01* +X1194095Y106096D01* +X1194032Y106156D01* +X1193982Y106182D01* +X1193938Y106215D01* +X1193856Y106246D01* +X1193778Y106286D01* +X1193731Y106294D01* +X1193672Y106316D01* +X1193525Y106328D01* +X1193447Y106341D01* +X1184917Y106341D01* +X1179321Y111937D01* +X1179321Y115912D01* +X1179313Y115970D01* +X1179315Y116028D01* +X1179293Y116110D01* +X1179281Y116194D01* +X1179258Y116247D01* +X1179243Y116303D01* +X1179200Y116376D01* +X1179165Y116453D01* +X1179127Y116498D01* +X1179098Y116548D01* +X1179036Y116606D01* +X1178982Y116670D01* +X1178933Y116702D01* +X1178890Y116742D01* +X1178815Y116781D01* +X1178745Y116828D01* +X1178689Y116845D01* +X1178637Y116872D01* +X1178569Y116883D01* +X1178474Y116913D01* +X1178374Y116916D01* +X1178306Y116927D01* +X1177951Y116927D01* +X1176738Y118140D01* +X1176691Y118175D01* +X1176651Y118218D01* +X1176578Y118260D01* +X1176511Y118311D01* +X1176456Y118332D01* +X1176406Y118361D01* +X1176324Y118382D01* +X1176245Y118412D01* +X1176187Y118417D01* +X1176130Y118431D01* +X1176046Y118429D01* +X1175962Y118436D01* +X1175904Y118424D01* +X1175846Y118422D01* +X1175766Y118396D01* +X1175683Y118380D01* +X1175631Y118353D01* +X1175575Y118335D01* +X1175519Y118295D01* +X1175431Y118249D01* +X1175358Y118180D01* +X1175302Y118140D01* +X1174089Y116927D01* +X1165251Y116927D01* +X1164038Y118140D01* +X1163991Y118175D01* +X1163951Y118218D01* +X1163878Y118260D01* +X1163811Y118311D01* +X1163756Y118332D01* +X1163706Y118361D01* +X1163624Y118382D01* +X1163545Y118412D01* +X1163487Y118417D01* +X1163430Y118431D01* +X1163346Y118429D01* +X1163262Y118436D01* +X1163204Y118424D01* +X1163146Y118422D01* +X1163066Y118396D01* +X1162983Y118380D01* +X1162931Y118353D01* +X1162875Y118335D01* +X1162819Y118295D01* +X1162731Y118249D01* +X1162658Y118180D01* +X1162602Y118140D01* +X1161389Y116927D01* +X1152551Y116927D01* +X1151338Y118140D01* +X1151291Y118175D01* +X1151251Y118218D01* +X1151178Y118260D01* +X1151111Y118311D01* +X1151056Y118332D01* +X1151006Y118361D01* +X1150924Y118382D01* +X1150845Y118412D01* +X1150787Y118417D01* +X1150730Y118431D01* +X1150646Y118429D01* +X1150562Y118436D01* +X1150504Y118424D01* +X1150446Y118422D01* +X1150366Y118396D01* +X1150283Y118380D01* +X1150231Y118353D01* +X1150175Y118335D01* +X1150119Y118295D01* +X1150031Y118249D01* +X1149958Y118180D01* +X1149902Y118140D01* +X1148689Y116927D01* +X1139851Y116927D01* +X1138638Y118140D01* +X1138591Y118175D01* +X1138551Y118218D01* +X1138478Y118260D01* +X1138411Y118311D01* +X1138356Y118332D01* +X1138306Y118361D01* +X1138224Y118382D01* +X1138145Y118412D01* +X1138087Y118417D01* +X1138030Y118431D01* +X1137946Y118429D01* +X1137862Y118436D01* +X1137804Y118424D01* +X1137746Y118422D01* +X1137666Y118396D01* +X1137583Y118380D01* +X1137531Y118353D01* +X1137475Y118335D01* +X1137419Y118295D01* +X1137331Y118249D01* +X1137258Y118180D01* +X1137202Y118140D01* +X1135989Y116927D01* +X1127151Y116927D01* +X1125938Y118140D01* +X1125891Y118175D01* +X1125851Y118218D01* +X1125778Y118260D01* +X1125711Y118311D01* +X1125656Y118332D01* +X1125606Y118361D01* +X1125524Y118382D01* +X1125445Y118412D01* +X1125387Y118417D01* +X1125330Y118431D01* +X1125246Y118429D01* +X1125162Y118436D01* +X1125104Y118424D01* +X1125046Y118422D01* +X1124966Y118396D01* +X1124883Y118380D01* +X1124831Y118353D01* +X1124775Y118335D01* +X1124719Y118295D01* +X1124631Y118249D01* +X1124558Y118180D01* +X1124502Y118140D01* +X1123289Y116927D01* +X1114451Y116927D01* +X1113238Y118140D01* +X1113191Y118175D01* +X1113151Y118218D01* +X1113078Y118260D01* +X1113011Y118311D01* +X1112956Y118332D01* +X1112906Y118361D01* +X1112824Y118382D01* +X1112745Y118412D01* +X1112687Y118417D01* +X1112630Y118431D01* +X1112546Y118429D01* +X1112462Y118436D01* +X1112404Y118424D01* +X1112346Y118422D01* +X1112266Y118396D01* +X1112183Y118380D01* +X1112131Y118353D01* +X1112075Y118335D01* +X1112019Y118295D01* +X1111931Y118249D01* +X1111858Y118180D01* +X1111802Y118140D01* +X1110589Y116927D01* +X1101751Y116927D01* +X1100538Y118140D01* +X1100491Y118175D01* +X1100451Y118218D01* +X1100378Y118260D01* +X1100311Y118311D01* +X1100256Y118332D01* +X1100206Y118361D01* +X1100124Y118382D01* +X1100045Y118412D01* +X1099987Y118417D01* +X1099930Y118431D01* +X1099846Y118429D01* +X1099762Y118436D01* +X1099704Y118424D01* +X1099646Y118422D01* +X1099566Y118396D01* +X1099483Y118380D01* +X1099431Y118353D01* +X1099375Y118335D01* +X1099319Y118295D01* +X1099231Y118249D01* +X1099158Y118180D01* +X1099102Y118140D01* +X1097889Y116927D01* +X1089051Y116927D01* +X1086937Y119041D01* +X1086937Y138879D01* +X1089051Y140993D01* +X1089406Y140993D01* +X1089464Y141001D01* +X1089522Y140999D01* +X1089604Y141021D01* +X1089688Y141033D01* +X1089741Y141056D01* +X1089797Y141071D01* +X1089870Y141114D01* +X1089947Y141149D01* +X1089992Y141187D01* +X1090042Y141216D01* +X1090100Y141278D01* +X1090164Y141332D01* +X1090196Y141381D01* +X1090236Y141424D01* +X1090275Y141499D01* +X1090322Y141569D01* +X1090339Y141625D01* +X1090366Y141677D01* +X1090377Y141745D01* +X1090407Y141840D01* +X1090410Y141940D01* +X1090421Y142008D01* +X1090421Y153199D01* +X1090417Y153228D01* +X1090420Y153257D01* +X1090397Y153369D01* +X1090381Y153481D01* +X1090369Y153507D01* +X1090364Y153536D01* +X1090312Y153637D01* +X1090265Y153740D01* +X1090246Y153763D01* +X1090233Y153789D01* +X1090155Y153871D01* +X1090082Y153957D01* +X1090057Y153973D01* +X1090037Y153995D01* +X1089939Y154052D01* +X1089845Y154115D01* +X1089817Y154124D01* +X1089792Y154138D01* +X1089682Y154166D01* +X1089574Y154200D01* +X1089544Y154201D01* +X1089516Y154208D01* +X1089403Y154205D01* +X1089290Y154208D01* +X1089261Y154200D01* +X1089232Y154199D01* +X1089124Y154165D01* +X1089015Y154136D01* +X1088989Y154121D01* +X1088961Y154112D01* +X1088898Y154066D01* +X1088770Y153991D01* +X1088727Y153945D01* +X1088688Y153917D01* +X1074028Y139257D01* +X1073976Y139187D01* +X1073916Y139123D01* +X1073890Y139074D01* +X1073857Y139030D01* +X1073826Y138948D01* +X1073786Y138870D01* +X1073778Y138823D01* +X1073756Y138764D01* +X1073744Y138616D01* +X1073731Y138539D01* +X1073731Y106785D01* +X1060587Y93641D01* +X1056993Y93641D01* +X1056906Y93629D01* +X1056819Y93626D01* +X1056766Y93609D01* +X1056711Y93601D01* +X1056631Y93566D01* +X1056548Y93539D01* +X1056509Y93511D01* +X1056452Y93485D01* +X1056339Y93389D01* +X1056275Y93344D01* +X1054838Y91907D01* +X1048282Y91907D01* +X1047198Y92991D01* +X1047151Y93026D01* +X1047111Y93069D01* +X1047038Y93111D01* +X1046971Y93162D01* +X1046916Y93183D01* +X1046866Y93212D01* +X1046784Y93233D01* +X1046705Y93263D01* +X1046647Y93268D01* +X1046590Y93283D01* +X1046506Y93280D01* +X1046422Y93287D01* +X1046364Y93275D01* +X1046306Y93274D01* +X1046226Y93248D01* +X1046143Y93231D01* +X1046091Y93204D01* +X1046035Y93186D01* +X1045979Y93146D01* +X1045891Y93100D01* +X1045818Y93031D01* +X1045762Y92991D01* +X1044678Y91907D01* +X1038122Y91907D01* +X1037038Y92991D01* +X1036991Y93026D01* +X1036951Y93069D01* +X1036878Y93111D01* +X1036811Y93162D01* +X1036756Y93183D01* +X1036706Y93212D01* +X1036624Y93233D01* +X1036545Y93263D01* +X1036487Y93268D01* +X1036430Y93283D01* +X1036346Y93280D01* +X1036262Y93287D01* +X1036204Y93275D01* +X1036146Y93274D01* +X1036066Y93248D01* +X1035983Y93231D01* +X1035931Y93204D01* +X1035875Y93186D01* +X1035819Y93146D01* +X1035731Y93100D01* +X1035658Y93031D01* +X1035602Y92991D01* +X1034769Y92158D01* +X1034734Y92111D01* +X1034691Y92071D01* +X1034649Y91998D01* +X1034598Y91931D01* +X1034577Y91876D01* +X1034548Y91826D01* +X1034527Y91744D01* +X1034497Y91665D01* +X1034492Y91607D01* +X1034477Y91550D01* +X1034480Y91466D01* +X1034473Y91382D01* +X1034485Y91324D01* +X1034486Y91266D01* +X1034512Y91186D01* +X1034529Y91103D01* +X1034556Y91051D01* +X1034574Y90995D01* +X1034614Y90939D01* +X1034660Y90851D01* +X1034729Y90778D01* +X1034769Y90722D01* +X1036273Y89218D01* +X1036273Y83162D01* +X1035602Y82491D01* +X1035550Y82421D01* +X1035490Y82357D01* +X1035464Y82308D01* +X1035431Y82264D01* +X1035400Y82182D01* +X1035360Y82104D01* +X1035352Y82057D01* +X1035330Y81998D01* +X1035318Y81851D01* +X1035305Y81773D01* +X1035305Y69436D01* +X1027844Y61975D01* +X1024048Y61975D01* +X1023990Y61967D01* +X1023932Y61969D01* +X1023850Y61947D01* +X1023766Y61935D01* +X1023713Y61912D01* +X1023657Y61897D01* +X1023584Y61854D01* +X1023507Y61819D01* +X1023462Y61781D01* +X1023412Y61752D01* +X1023354Y61690D01* +X1023290Y61636D01* +X1023258Y61587D01* +X1023218Y61544D01* +X1023179Y61469D01* +X1023132Y61399D01* +X1023115Y61343D01* +X1023088Y61291D01* +X1023077Y61223D01* +X1023047Y61128D01* +X1023046Y61117D01* +X1020817Y58887D01* +X1011183Y58887D01* +X1008967Y61103D01* +X1008967Y71737D01* +X1009606Y72376D01* +X1009658Y72445D01* +X1009718Y72509D01* +X1009744Y72559D01* +X1009777Y72603D01* +X1009808Y72684D01* +X1009848Y72762D01* +X1009856Y72810D01* +X1009878Y72868D01* +X1009890Y73016D01* +X1009903Y73093D01* +X1009903Y73254D01* +X1009891Y73341D01* +X1009888Y73428D01* +X1009871Y73481D01* +X1009863Y73536D01* +X1009828Y73615D01* +X1009801Y73699D01* +X1009773Y73738D01* +X1009747Y73795D01* +X1009651Y73908D01* +X1009606Y73972D01* +X999802Y83776D01* +X999732Y83828D01* +X999668Y83888D01* +X999619Y83914D01* +X999575Y83947D01* +X999493Y83978D01* +X999415Y84018D01* +X999368Y84026D01* +X999309Y84048D01* +X999161Y84060D01* +X999084Y84073D01* +X993648Y84073D01* +X993590Y84065D01* +X993532Y84067D01* +X993450Y84045D01* +X993366Y84033D01* +X993313Y84010D01* +X993257Y83995D01* +X993184Y83952D01* +X993107Y83917D01* +X993062Y83879D01* +X993012Y83850D01* +X992954Y83788D01* +X992890Y83734D01* +X992858Y83685D01* +X992818Y83642D01* +X992779Y83567D01* +X992732Y83497D01* +X992715Y83441D01* +X992688Y83389D01* +X992677Y83321D01* +X992647Y83226D01* +X992644Y83126D01* +X992633Y83058D01* +X992633Y70278D01* +X991442Y69087D01* +X951658Y69087D01* +X950467Y70278D01* +X950467Y110062D01* +X951658Y111253D01* +X991442Y111253D01* +X992633Y110062D01* +X992633Y97282D01* +X992641Y97224D01* +X992639Y97166D01* +X992661Y97084D01* +X992673Y97000D01* +X992696Y96947D01* +X992711Y96891D01* +X992754Y96818D01* +X992789Y96741D01* +X992827Y96696D01* +X992856Y96646D01* +X992918Y96588D01* +X992972Y96524D01* +X993021Y96492D01* +X993064Y96452D01* +X993139Y96413D01* +X993209Y96366D01* +X993265Y96349D01* +X993317Y96322D01* +X993385Y96311D01* +X993480Y96281D01* +X993580Y96278D01* +X993648Y96267D01* +X1003243Y96267D01* +X1005484Y95339D01* +X1021169Y79654D01* +X1022097Y77413D01* +X1022097Y73093D01* +X1022109Y73007D01* +X1022112Y72919D01* +X1022129Y72867D01* +X1022137Y72812D01* +X1022172Y72732D01* +X1022199Y72649D01* +X1022227Y72610D01* +X1022253Y72552D01* +X1022349Y72439D01* +X1022394Y72376D01* +X1023033Y71737D01* +X1023033Y71120D01* +X1023041Y71062D01* +X1023039Y71004D01* +X1023061Y70922D01* +X1023073Y70838D01* +X1023096Y70785D01* +X1023111Y70729D01* +X1023154Y70656D01* +X1023189Y70579D01* +X1023227Y70534D01* +X1023256Y70484D01* +X1023318Y70426D01* +X1023372Y70362D01* +X1023418Y70332D01* +X1023425Y70325D01* +X1023429Y70322D01* +X1023464Y70290D01* +X1023539Y70251D01* +X1023609Y70204D01* +X1023654Y70190D01* +X1023670Y70181D01* +X1023683Y70178D01* +X1023717Y70160D01* +X1023785Y70149D01* +X1023880Y70119D01* +X1023918Y70118D01* +X1023946Y70111D01* +X1024002Y70113D01* +X1024048Y70105D01* +X1024056Y70105D01* +X1024112Y70113D01* +X1024164Y70111D01* +X1024192Y70119D01* +X1024230Y70120D01* +X1024282Y70137D01* +X1024337Y70145D01* +X1024402Y70173D01* +X1024439Y70183D01* +X1024455Y70193D01* +X1024500Y70207D01* +X1024540Y70235D01* +X1024597Y70261D01* +X1024660Y70314D01* +X1024684Y70328D01* +X1024711Y70357D01* +X1024774Y70402D01* +X1026878Y72506D01* +X1026930Y72576D01* +X1026990Y72640D01* +X1027016Y72689D01* +X1027049Y72734D01* +X1027080Y72815D01* +X1027120Y72893D01* +X1027128Y72941D01* +X1027150Y72999D01* +X1027162Y73147D01* +X1027175Y73224D01* +X1027175Y81773D01* +X1027163Y81860D01* +X1027160Y81947D01* +X1027143Y82000D01* +X1027135Y82055D01* +X1027100Y82135D01* +X1027073Y82218D01* +X1027045Y82257D01* +X1027019Y82314D01* +X1026923Y82427D01* +X1026878Y82491D01* +X1026207Y83162D01* +X1026207Y89218D01* +X1027711Y90722D01* +X1027746Y90769D01* +X1027789Y90809D01* +X1027831Y90882D01* +X1027882Y90949D01* +X1027903Y91004D01* +X1027932Y91054D01* +X1027953Y91136D01* +X1027983Y91215D01* +X1027988Y91273D01* +X1028003Y91330D01* +X1028000Y91414D01* +X1028007Y91498D01* +X1027995Y91555D01* +X1027994Y91614D01* +X1027968Y91694D01* +X1027951Y91777D01* +X1027924Y91829D01* +X1027906Y91885D01* +X1027866Y91941D01* +X1027820Y92029D01* +X1027751Y92102D01* +X1027711Y92158D01* +X1026207Y93662D01* +X1026207Y99718D01* +X1027962Y101473D01* +X1034518Y101473D01* +X1035602Y100389D01* +X1035649Y100354D01* +X1035689Y100311D01* +X1035762Y100269D01* +X1035829Y100218D01* +X1035884Y100197D01* +X1035934Y100168D01* +X1036016Y100147D01* +X1036095Y100117D01* +X1036153Y100112D01* +X1036210Y100097D01* +X1036294Y100100D01* +X1036378Y100093D01* +X1036436Y100105D01* +X1036494Y100106D01* +X1036574Y100132D01* +X1036657Y100149D01* +X1036709Y100176D01* +X1036765Y100194D01* +X1036821Y100234D01* +X1036909Y100280D01* +X1036982Y100349D01* +X1037038Y100389D01* +X1038122Y101473D01* +X1044678Y101473D01* +X1045762Y100389D01* +X1045809Y100354D01* +X1045849Y100311D01* +X1045922Y100269D01* +X1045989Y100218D01* +X1046044Y100197D01* +X1046094Y100168D01* +X1046176Y100147D01* +X1046255Y100117D01* +X1046313Y100112D01* +X1046370Y100097D01* +X1046454Y100100D01* +X1046538Y100093D01* +X1046596Y100105D01* +X1046654Y100106D01* +X1046734Y100132D01* +X1046817Y100149D01* +X1046869Y100176D01* +X1046925Y100194D01* +X1046981Y100234D01* +X1047069Y100280D01* +X1047142Y100349D01* +X1047198Y100389D01* +X1048282Y101473D01* +X1054838Y101473D01* +X1056275Y100036D01* +X1056345Y99984D01* +X1056409Y99924D01* +X1056458Y99898D01* +X1056502Y99865D01* +X1056584Y99834D01* +X1056662Y99794D01* +X1056709Y99786D01* +X1056768Y99764D01* +X1056915Y99752D01* +X1056993Y99739D01* +X1057641Y99739D01* +X1057727Y99751D01* +X1057815Y99754D01* +X1057867Y99771D01* +X1057922Y99779D01* +X1058002Y99814D01* +X1058085Y99841D01* +X1058124Y99869D01* +X1058182Y99895D01* +X1058295Y99991D01* +X1058359Y100036D01* +X1067336Y109013D01* +X1067388Y109083D01* +X1067448Y109147D01* +X1067474Y109197D01* +X1067507Y109241D01* +X1067538Y109322D01* +X1067578Y109400D01* +X1067586Y109448D01* +X1067608Y109506D01* +X1067620Y109654D01* +X1067633Y109731D01* +X1067633Y141485D01* +X1086314Y160166D01* +X1086366Y160236D01* +X1086426Y160300D01* +X1086452Y160349D01* +X1086485Y160393D01* +X1086516Y160475D01* +X1086556Y160553D01* +X1086564Y160600D01* +X1086586Y160659D01* +X1086598Y160807D01* +X1086611Y160884D01* +X1086611Y161720D01* +X1086595Y161834D01* +X1086585Y161948D01* +X1086575Y161974D01* +X1086571Y162002D01* +X1086524Y162107D01* +X1086483Y162214D01* +X1086467Y162236D01* +X1086455Y162261D01* +X1086381Y162349D01* +X1086312Y162440D01* +X1086289Y162457D01* +X1086272Y162478D01* +X1086176Y162542D01* +X1086084Y162611D01* +X1086058Y162620D01* +X1086035Y162636D01* +X1085925Y162670D01* +X1085818Y162711D01* +X1085790Y162713D01* +X1085764Y162722D01* +X1085649Y162724D01* +X1085535Y162734D01* +X1085510Y162728D01* +X1085480Y162729D01* +X1085223Y162662D01* +X1085207Y162658D01* +X1083197Y161825D01* +X1080957Y161825D01* +X1080871Y161813D01* +X1080783Y161810D01* +X1080731Y161793D01* +X1080676Y161785D01* +X1080596Y161750D01* +X1080513Y161723D01* +X1080473Y161695D01* +X1080416Y161669D01* +X1080303Y161573D01* +X1080239Y161528D01* +X1080023Y161311D01* +X1065968Y161311D01* +X1065910Y161303D01* +X1065852Y161305D01* +X1065770Y161283D01* +X1065686Y161271D01* +X1065633Y161248D01* +X1065577Y161233D01* +X1065504Y161190D01* +X1065427Y161155D01* +X1065382Y161117D01* +X1065332Y161088D01* +X1065274Y161026D01* +X1065210Y160972D01* +X1065178Y160923D01* +X1065138Y160880D01* +X1065099Y160805D01* +X1065052Y160735D01* +X1065035Y160679D01* +X1065008Y160627D01* +X1064997Y160559D01* +X1064967Y160464D01* +X1064964Y160364D01* +X1064953Y160296D01* +X1064953Y159941D01* +X1063740Y158728D01* +X1063705Y158681D01* +X1063662Y158641D01* +X1063620Y158568D01* +X1063569Y158501D01* +X1063548Y158446D01* +X1063519Y158396D01* +X1063498Y158314D01* +X1063468Y158235D01* +X1063463Y158177D01* +X1063449Y158120D01* +X1063451Y158036D01* +X1063444Y157952D01* +X1063456Y157894D01* +X1063458Y157836D01* +X1063484Y157756D01* +X1063500Y157673D01* +X1063527Y157621D01* +X1063545Y157565D01* +X1063585Y157509D01* +X1063631Y157421D01* +X1063700Y157348D01* +X1063740Y157292D01* +X1064953Y156079D01* +X1064953Y147241D01* +X1063740Y146028D01* +X1063705Y145981D01* +X1063662Y145941D01* +X1063620Y145868D01* +X1063569Y145801D01* +X1063548Y145746D01* +X1063519Y145696D01* +X1063498Y145614D01* +X1063468Y145535D01* +X1063463Y145477D01* +X1063449Y145420D01* +X1063451Y145336D01* +X1063444Y145252D01* +X1063456Y145194D01* +X1063458Y145136D01* +X1063484Y145056D01* +X1063500Y144973D01* +X1063527Y144921D01* +X1063545Y144865D01* +X1063585Y144809D01* +X1063631Y144721D01* +X1063700Y144648D01* +X1063740Y144592D01* +X1064953Y143379D01* +X1064953Y134541D01* +X1062839Y132427D01* +X1043001Y132427D01* +X1040887Y134541D01* +X1040887Y134896D01* +X1040879Y134954D01* +X1040881Y135012D01* +X1040859Y135094D01* +X1040847Y135178D01* +X1040824Y135231D01* +X1040809Y135287D01* +X1040766Y135360D01* +X1040731Y135437D01* +X1040693Y135482D01* +X1040664Y135532D01* +X1040602Y135590D01* +X1040548Y135654D01* +X1040499Y135686D01* +X1040456Y135726D01* +X1040381Y135765D01* +X1040311Y135812D01* +X1040255Y135829D01* +X1040203Y135856D01* +X1040135Y135867D01* +X1040040Y135897D01* +X1039940Y135900D01* +X1039872Y135911D01* +X978673Y135911D01* +X978587Y135899D01* +X978499Y135896D01* +X978447Y135879D01* +X978392Y135871D01* +X978312Y135836D01* +X978229Y135809D01* +X978190Y135781D01* +X978132Y135755D01* +X978019Y135659D01* +X977955Y135614D01* +X975610Y133269D01* +X975558Y133199D01* +X975498Y133135D01* +X975472Y133085D01* +X975439Y133041D01* +X975408Y132960D01* +X975368Y132882D01* +X975360Y132834D01* +X975338Y132776D01* +X975326Y132628D01* +X975313Y132551D01* +X975313Y129222D01* +X973558Y127467D01* +X967002Y127467D01* +X965565Y128904D01* +X965495Y128956D01* +X965432Y129016D01* +X965382Y129042D01* +X965338Y129075D01* +X965256Y129106D01* +X965178Y129146D01* +X965131Y129154D01* +X965072Y129176D01* +X964925Y129188D01* +X964847Y129201D01* +X949273Y129201D01* +X949187Y129189D01* +X949099Y129186D01* +X949047Y129169D01* +X948992Y129161D01* +X948912Y129126D01* +X948829Y129099D01* +X948790Y129071D01* +X948732Y129045D01* +X948619Y128949D01* +X948555Y128904D01* +X943438Y123787D01* +X943386Y123717D01* +X943326Y123653D01* +X943300Y123603D01* +X943267Y123559D01* +X943236Y123478D01* +X943196Y123400D01* +X943188Y123352D01* +X943166Y123294D01* +X943154Y123146D01* +X943141Y123069D01* +X943141Y41041D01* +X931309Y29209D01* +X812038Y29209D01* +X811980Y29201D01* +X811922Y29203D01* +X811840Y29181D01* +X811756Y29169D01* +X811703Y29146D01* +X811647Y29131D01* +X811574Y29088D01* +X811497Y29053D01* +X811452Y29015D01* +X811402Y28986D01* +X811344Y28924D01* +X811280Y28870D01* +X811248Y28821D01* +X811208Y28778D01* +X811169Y28703D01* +X811122Y28633D01* +X811105Y28577D01* +X811078Y28525D01* +X811067Y28457D01* +X811037Y28362D01* +X811034Y28262D01* +X811023Y28194D01* +X811023Y10588D01* +X809832Y9397D01* +X790368Y9397D01* +X789177Y10588D01* +X789177Y28035D01* +X789173Y28064D01* +X789176Y28093D01* +X789153Y28204D01* +X789137Y28316D01* +X789125Y28343D01* +X789120Y28372D01* +X789067Y28472D01* +X789021Y28576D01* +X789002Y28598D01* +X788989Y28624D01* +X788911Y28706D01* +X788838Y28793D01* +X788813Y28809D01* +X788793Y28830D01* +X788695Y28887D01* +X788601Y28950D01* +X788573Y28959D01* +X788548Y28974D01* +X788438Y29002D01* +X788330Y29036D01* +X788300Y29037D01* +X788272Y29044D01* +X788159Y29040D01* +X788046Y29043D01* +X788017Y29036D01* +X787988Y29035D01* +X787880Y29000D01* +X787771Y28971D01* +X787745Y28956D01* +X787717Y28947D01* +X787654Y28902D01* +X787526Y28826D01* +X787483Y28781D01* +X787444Y28753D01* +X784802Y26111D01* +X784801Y26110D01* +X784800Y26109D01* +X784714Y25993D01* +X784632Y25884D01* +X784631Y25882D01* +X784630Y25881D01* +X784580Y25747D01* +X784530Y25618D01* +X784530Y25616D01* +X784530Y25615D01* +X784518Y25470D01* +X784507Y25335D01* +X784507Y25333D01* +X784507Y25332D01* +X784510Y25316D01* +X784563Y25056D01* +X784577Y25029D01* +X784582Y25004D01* +X785623Y22493D01* +X785623Y18147D01* +X783960Y14133D01* +X780887Y11060D01* +X776873Y9397D01* +X772527Y9397D01* +X768513Y11060D01* +X765440Y14133D01* +X763777Y18147D01* +X763777Y22493D01* +X765440Y26507D01* +X768513Y29580D01* +X772527Y31243D01* +X776873Y31243D01* +X779384Y30202D01* +X779386Y30202D01* +X779387Y30201D01* +X779523Y30167D01* +X779660Y30131D01* +X779661Y30131D01* +X779663Y30131D01* +X779803Y30136D01* +X779944Y30140D01* +X779945Y30140D01* +X779947Y30140D01* +X780080Y30183D01* +X780215Y30226D01* +X780216Y30227D01* +X780217Y30228D01* +X780230Y30236D01* +X780347Y30315D01* +X780348Y30315D01* +X780350Y30317D01* +X780451Y30384D01* +X780470Y30408D01* +X780491Y30422D01* +X781609Y31540D01* +X781626Y31564D01* +X781649Y31583D01* +X781711Y31677D01* +X781779Y31767D01* +X781790Y31795D01* +X781806Y31819D01* +X781840Y31927D01* +X781881Y32033D01* +X781883Y32062D01* +X781892Y32090D01* +X781895Y32204D01* +X781904Y32316D01* +X781899Y32345D01* +X781899Y32374D01* +X781871Y32484D01* +X781848Y32595D01* +X781835Y32621D01* +X781827Y32649D01* +X781770Y32747D01* +X781717Y32847D01* +X781697Y32869D01* +X781682Y32894D01* +X781600Y32971D01* +X781522Y33053D01* +X781496Y33068D01* +X781475Y33088D01* +X781374Y33140D01* +X781276Y33197D01* +X781248Y33204D01* +X781222Y33218D01* +X781144Y33231D01* +X781001Y33267D01* +X780938Y33265D01* +X780891Y33273D01* +X766985Y33273D01* +X766899Y33261D01* +X766811Y33258D01* +X766759Y33241D01* +X766704Y33233D01* +X766624Y33198D01* +X766541Y33171D01* +X766502Y33143D01* +X766444Y33117D01* +X766331Y33021D01* +X766267Y32976D01* +X759402Y26111D01* +X759402Y26110D01* +X759400Y26109D01* +X759312Y25990D01* +X759232Y25884D01* +X759231Y25882D01* +X759230Y25881D01* +X759180Y25747D01* +X759130Y25618D01* +X759130Y25616D01* +X759130Y25615D01* +X759118Y25470D01* +X759107Y25335D01* +X759107Y25333D01* +X759107Y25332D01* +X759110Y25316D01* +X759163Y25056D01* +X759177Y25029D01* +X759182Y25004D01* +X760223Y22493D01* +X760223Y18147D01* +X758560Y14133D01* +X755487Y11060D01* +X751473Y9397D01* +X747127Y9397D01* +X743113Y11060D01* +X740040Y14133D01* +X738377Y18147D01* +X738377Y22493D01* +X740040Y26507D01* +X742279Y28746D01* +X742297Y28770D01* +X742319Y28789D01* +X742382Y28883D01* +X742450Y28973D01* +X742460Y29001D01* +X742477Y29025D01* +X742511Y29133D01* +X742551Y29239D01* +X742554Y29268D01* +X742562Y29296D01* +X742565Y29410D01* +X742575Y29522D01* +X742569Y29551D01* +X742570Y29580D01* +X742541Y29690D01* +X742519Y29801D01* +X742505Y29827D01* +X742498Y29855D01* +X742440Y29953D01* +X742388Y30053D01* +X742368Y30075D01* +X742353Y30100D01* +X742270Y30177D01* +X742192Y30259D01* +X742167Y30274D01* +X742145Y30294D01* +X742045Y30346D01* +X741947Y30403D01* +X741918Y30410D01* +X741892Y30424D01* +X741815Y30437D01* +X741671Y30473D01* +X741609Y30471D01* +X741561Y30479D01* +X687991Y30479D01* +X687905Y30467D01* +X687817Y30464D01* +X687765Y30447D01* +X687710Y30439D01* +X687630Y30404D01* +X687547Y30377D01* +X687508Y30349D01* +X687450Y30323D01* +X687337Y30227D01* +X687273Y30182D01* +X683202Y26111D01* +X683202Y26110D01* +X683200Y26109D01* +X683112Y25990D01* +X683032Y25884D01* +X683031Y25882D01* +X683030Y25881D01* +X682980Y25747D01* +X682930Y25618D01* +X682930Y25616D01* +X682930Y25615D01* +X682918Y25470D01* +X682907Y25335D01* +X682907Y25333D01* +X682907Y25332D01* +X682910Y25316D01* +X682963Y25056D01* +X682977Y25029D01* +X682982Y25004D01* +X684023Y22493D01* +X684023Y18147D01* +X682360Y14133D01* +X679287Y11060D01* +X675273Y9397D01* +X670927Y9397D01* +X666913Y11060D01* +X663840Y14133D01* +X662177Y18147D01* +X662177Y22493D01* +X663840Y26507D01* +X666913Y29580D01* +X670927Y31243D01* +X675273Y31243D01* +X677784Y30202D01* +X677786Y30202D01* +X677787Y30201D01* +X677923Y30167D01* +X678060Y30131D01* +X678061Y30131D01* +X678063Y30131D01* +X678203Y30136D01* +X678344Y30140D01* +X678345Y30140D01* +X678347Y30140D01* +X678480Y30183D01* +X678615Y30226D01* +X678616Y30227D01* +X678617Y30228D01* +X678630Y30236D01* +X678747Y30315D01* +X678748Y30315D01* +X678750Y30317D01* +X678851Y30384D01* +X678870Y30408D01* +X678891Y30422D01* +X681279Y32810D01* +X681296Y32834D01* +X681319Y32853D01* +X681381Y32947D01* +X681449Y33037D01* +X681460Y33065D01* +X681476Y33089D01* +X681510Y33197D01* +X681551Y33303D01* +X681553Y33332D01* +X681562Y33360D01* +X681565Y33474D01* +X681574Y33586D01* +X681569Y33615D01* +X681569Y33644D01* +X681541Y33754D01* +X681518Y33865D01* +X681505Y33891D01* +X681497Y33919D01* +X681440Y34017D01* +X681387Y34117D01* +X681367Y34139D01* +X681352Y34164D01* +X681270Y34241D01* +X681192Y34323D01* +X681166Y34338D01* +X681145Y34358D01* +X681044Y34410D01* +X680946Y34467D01* +X680918Y34474D01* +X680892Y34488D01* +X680814Y34501D01* +X680671Y34537D01* +X680608Y34535D01* +X680561Y34543D01* +X666655Y34543D01* +X666569Y34531D01* +X666481Y34528D01* +X666429Y34511D01* +X666374Y34503D01* +X666294Y34468D01* +X666211Y34441D01* +X666172Y34413D01* +X666114Y34387D01* +X666001Y34291D01* +X665937Y34246D01* +X657802Y26111D01* +X657802Y26110D01* +X657800Y26109D01* +X657712Y25990D01* +X657632Y25884D01* +X657631Y25882D01* +X657630Y25881D01* +X657580Y25747D01* +X657530Y25618D01* +X657530Y25616D01* +X657530Y25615D01* +X657518Y25470D01* +X657507Y25335D01* +X657507Y25333D01* +X657507Y25332D01* +X657510Y25316D01* +X657563Y25056D01* +X657577Y25029D01* +X657582Y25004D01* +X658623Y22493D01* +X658623Y18147D01* +X656960Y14133D01* +X653887Y11060D01* +X649873Y9397D01* +X645527Y9397D01* +X643016Y10438D01* +X643014Y10438D01* +X643013Y10439D01* +X642878Y10473D01* +X642740Y10509D01* +X642739Y10509D01* +X642737Y10509D01* +X642597Y10504D01* +X642456Y10500D01* +X642455Y10500D01* +X642453Y10500D01* +X642320Y10457D01* +X642185Y10414D01* +X642184Y10413D01* +X642183Y10412D01* +X642170Y10404D01* +X641949Y10256D01* +X641929Y10232D01* +X641909Y10218D01* +X638346Y6655D01* +X637187Y5496D01* +X637170Y5472D01* +X637147Y5453D01* +X637085Y5359D01* +X637017Y5269D01* +X637006Y5241D01* +X636990Y5217D01* +X636956Y5109D01* +X636915Y5003D01* +X636913Y4974D01* +X636904Y4946D01* +X636901Y4832D01* +X636892Y4720D01* +X636897Y4691D01* +X636897Y4662D01* +X636925Y4552D01* +X636948Y4441D01* +X636961Y4415D01* +X636969Y4387D01* +X637026Y4289D01* +X637079Y4189D01* +X637099Y4167D01* +X637114Y4142D01* +X637196Y4065D01* +X637274Y3983D01* +X637300Y3968D01* +X637321Y3948D01* +X637422Y3896D01* +X637520Y3839D01* +X637548Y3832D01* +X637574Y3818D01* +X637652Y3805D01* +X637795Y3769D01* +X637858Y3771D01* +X637905Y3763D01* +X950313Y3763D01* +X950342Y3767D01* +G37* +G36* +X881410Y209017D02* +X881410Y209017D01* +X881468Y209015D01* +X881550Y209037D01* +X881634Y209049D01* +X881687Y209072D01* +X881743Y209087D01* +X881816Y209130D01* +X881893Y209165D01* +X881938Y209203D01* +X881988Y209232D01* +X882046Y209294D01* +X882110Y209348D01* +X882142Y209397D01* +X882182Y209440D01* +X882221Y209515D01* +X882268Y209585D01* +X882285Y209641D01* +X882312Y209693D01* +X882323Y209761D01* +X882353Y209856D01* +X882356Y209956D01* +X882367Y210024D01* +X882367Y215867D01* +X884993Y218493D01* +X887336Y218493D01* +X887394Y218501D01* +X887452Y218499D01* +X887534Y218521D01* +X887618Y218533D01* +X887671Y218556D01* +X887727Y218571D01* +X887800Y218614D01* +X887877Y218649D01* +X887922Y218687D01* +X887972Y218716D01* +X888030Y218778D01* +X888094Y218832D01* +X888126Y218881D01* +X888166Y218924D01* +X888205Y218999D01* +X888252Y219069D01* +X888269Y219125D01* +X888296Y219177D01* +X888307Y219245D01* +X888337Y219340D01* +X888340Y219440D01* +X888351Y219508D01* +X888351Y283412D01* +X888343Y283470D01* +X888345Y283528D01* +X888323Y283610D01* +X888311Y283694D01* +X888288Y283747D01* +X888273Y283803D01* +X888230Y283876D01* +X888195Y283953D01* +X888157Y283998D01* +X888128Y284048D01* +X888066Y284106D01* +X888012Y284170D01* +X887963Y284202D01* +X887920Y284242D01* +X887845Y284281D01* +X887775Y284328D01* +X887719Y284345D01* +X887667Y284372D01* +X887599Y284383D01* +X887504Y284413D01* +X887404Y284416D01* +X887336Y284427D01* +X884993Y284427D01* +X882367Y287053D01* +X882367Y307043D01* +X882395Y307115D01* +X882397Y307144D01* +X882406Y307172D01* +X882409Y307286D01* +X882418Y307398D01* +X882412Y307427D01* +X882413Y307456D01* +X882385Y307566D01* +X882362Y307677D01* +X882349Y307703D01* +X882341Y307731D01* +X882284Y307829D01* +X882231Y307929D01* +X882211Y307951D01* +X882196Y307976D01* +X882114Y308053D01* +X882036Y308135D01* +X882010Y308150D01* +X881989Y308170D01* +X881888Y308222D01* +X881790Y308279D01* +X881762Y308286D01* +X881736Y308300D01* +X881658Y308313D01* +X881515Y308349D01* +X881452Y308347D01* +X881405Y308355D01* +X795687Y308355D01* +X795658Y308351D01* +X795629Y308354D01* +X795518Y308331D01* +X795406Y308315D01* +X795379Y308303D01* +X795350Y308298D01* +X795250Y308246D01* +X795146Y308199D01* +X795124Y308180D01* +X795098Y308167D01* +X795016Y308089D01* +X794929Y308016D01* +X794913Y307991D01* +X794892Y307971D01* +X794835Y307873D01* +X794772Y307779D01* +X794763Y307751D01* +X794748Y307726D01* +X794720Y307616D01* +X794686Y307508D01* +X794685Y307478D01* +X794678Y307450D01* +X794682Y307337D01* +X794679Y307224D01* +X794686Y307195D01* +X794687Y307166D01* +X794722Y307058D01* +X794751Y306949D01* +X794766Y306923D01* +X794775Y306895D01* +X794820Y306832D01* +X794896Y306704D01* +X794912Y306689D01* +X794913Y306687D01* +X794944Y306658D01* +X794969Y306622D01* +X836625Y264966D01* +X836695Y264914D01* +X836759Y264854D01* +X836809Y264828D01* +X836853Y264795D01* +X836934Y264764D01* +X837012Y264724D01* +X837060Y264716D01* +X837118Y264694D01* +X837266Y264682D01* +X837343Y264669D01* +X845297Y264669D01* +X845384Y264681D01* +X845471Y264684D01* +X845524Y264701D01* +X845579Y264709D01* +X845659Y264744D01* +X845742Y264771D01* +X845781Y264799D01* +X845838Y264825D01* +X845951Y264921D01* +X846015Y264966D01* +X847702Y266653D01* +X853758Y266653D01* +X855513Y264898D01* +X855513Y259636D01* +X855521Y259578D01* +X855519Y259520D01* +X855541Y259438D01* +X855553Y259354D01* +X855576Y259301D01* +X855591Y259245D01* +X855634Y259172D01* +X855669Y259095D01* +X855707Y259050D01* +X855736Y259000D01* +X855798Y258942D01* +X855852Y258878D01* +X855901Y258846D01* +X855944Y258806D01* +X856019Y258767D01* +X856089Y258720D01* +X856145Y258703D01* +X856197Y258676D01* +X856265Y258665D01* +X856360Y258635D01* +X856460Y258632D01* +X856528Y258621D01* +X873451Y258621D01* +X874725Y257346D01* +X874795Y257294D01* +X874859Y257234D01* +X874908Y257208D01* +X874953Y257175D01* +X875034Y257144D01* +X875112Y257104D01* +X875160Y257096D01* +X875218Y257074D01* +X875366Y257062D01* +X875443Y257049D01* +X877412Y257049D01* +X879466Y256198D01* +X881038Y254626D01* +X881889Y252572D01* +X881889Y250348D01* +X881038Y248294D01* +X879466Y246722D01* +X877412Y245871D01* +X875188Y245871D01* +X873134Y246722D01* +X871562Y248294D01* +X870711Y250348D01* +X870711Y251508D01* +X870704Y251562D01* +X870705Y251600D01* +X870704Y251602D01* +X870705Y251624D01* +X870683Y251706D01* +X870671Y251790D01* +X870648Y251843D01* +X870633Y251899D01* +X870590Y251972D01* +X870555Y252049D01* +X870517Y252094D01* +X870488Y252144D01* +X870426Y252202D01* +X870372Y252266D01* +X870323Y252298D01* +X870280Y252338D01* +X870205Y252377D01* +X870135Y252424D01* +X870079Y252441D01* +X870027Y252468D01* +X869959Y252479D01* +X869864Y252509D01* +X869764Y252512D01* +X869696Y252523D01* +X848908Y252523D01* +X848850Y252515D01* +X848792Y252517D01* +X848710Y252495D01* +X848626Y252483D01* +X848573Y252460D01* +X848517Y252445D01* +X848444Y252402D01* +X848367Y252367D01* +X848322Y252329D01* +X848272Y252300D01* +X848214Y252238D01* +X848150Y252184D01* +X848118Y252135D01* +X848078Y252092D01* +X848039Y252017D01* +X847992Y251947D01* +X847975Y251891D01* +X847948Y251839D01* +X847937Y251771D01* +X847907Y251676D01* +X847904Y251576D01* +X847893Y251508D01* +X847893Y245642D01* +X846138Y243887D01* +X840082Y243887D01* +X838395Y245574D01* +X838325Y245626D01* +X838261Y245686D01* +X838212Y245712D01* +X838168Y245745D01* +X838086Y245776D01* +X838008Y245816D01* +X837961Y245824D01* +X837902Y245846D01* +X837755Y245858D01* +X837677Y245871D01* +X727717Y245871D01* +X685291Y288297D01* +X685291Y303523D01* +X686488Y304719D01* +X686502Y304738D01* +X686520Y304753D01* +X686587Y304851D01* +X686658Y304946D01* +X686667Y304969D01* +X686680Y304988D01* +X686717Y305101D01* +X686760Y305212D01* +X686762Y305236D01* +X686769Y305258D01* +X686773Y305377D01* +X686783Y305495D01* +X686779Y305519D01* +X686779Y305543D01* +X686759Y305616D01* +X686727Y305774D01* +X686701Y305824D01* +X686690Y305866D01* +X685802Y307769D01* +X685736Y307871D01* +X685674Y307976D01* +X685659Y307990D01* +X685647Y308007D01* +X685556Y308087D01* +X685466Y308170D01* +X685448Y308180D01* +X685432Y308193D01* +X685322Y308244D01* +X685213Y308300D01* +X685195Y308303D01* +X685174Y308312D01* +X684893Y308355D01* +X684887Y308354D01* +X684882Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X381365Y377237D01* +X381336Y377233D01* +X381307Y377236D01* +X381196Y377213D01* +X381084Y377197D01* +X381057Y377185D01* +X381028Y377180D01* +X380928Y377128D01* +X380824Y377081D01* +X380802Y377062D01* +X380776Y377049D01* +X380694Y376971D01* +X380607Y376898D01* +X380591Y376873D01* +X380570Y376853D01* +X380513Y376755D01* +X380450Y376661D01* +X380441Y376633D01* +X380426Y376608D01* +X380398Y376498D01* +X380364Y376390D01* +X380363Y376360D01* +X380356Y376332D01* +X380360Y376219D01* +X380357Y376106D01* +X380364Y376077D01* +X380365Y376048D01* +X380400Y375940D01* +X380429Y375831D01* +X380444Y375805D01* +X380453Y375777D01* +X380498Y375714D01* +X380574Y375586D01* +X380619Y375543D01* +X380647Y375504D01* +X392125Y364026D01* +X392195Y363974D01* +X392259Y363914D01* +X392309Y363888D01* +X392353Y363855D01* +X392434Y363824D01* +X392512Y363784D01* +X392560Y363776D01* +X392618Y363754D01* +X392766Y363742D01* +X392843Y363729D01* +X393177Y363729D01* +X393264Y363741D01* +X393351Y363744D01* +X393404Y363761D01* +X393459Y363769D01* +X393539Y363804D01* +X393622Y363831D01* +X393661Y363859D01* +X393718Y363885D01* +X393831Y363981D01* +X393895Y364026D01* +X395582Y365713D01* +X401638Y365713D01* +X403142Y364209D01* +X403189Y364174D01* +X403229Y364131D01* +X403302Y364089D01* +X403369Y364038D01* +X403424Y364017D01* +X403474Y363988D01* +X403556Y363967D01* +X403635Y363937D01* +X403693Y363932D01* +X403750Y363917D01* +X403834Y363920D01* +X403918Y363913D01* +X403976Y363925D01* +X404034Y363926D01* +X404114Y363952D01* +X404197Y363969D01* +X404249Y363996D01* +X404305Y364014D01* +X404361Y364054D01* +X404449Y364100D01* +X404522Y364169D01* +X404578Y364209D01* +X406082Y365713D01* +X412138Y365713D01* +X413825Y364026D01* +X413895Y363974D01* +X413959Y363914D01* +X414008Y363888D01* +X414052Y363855D01* +X414134Y363824D01* +X414212Y363784D01* +X414259Y363776D01* +X414318Y363754D01* +X414465Y363742D01* +X414543Y363729D01* +X421103Y363729D01* +X428123Y356708D01* +X428193Y356656D01* +X428257Y356596D01* +X428307Y356570D01* +X428351Y356537D01* +X428432Y356506D01* +X428510Y356466D01* +X428558Y356458D01* +X428616Y356436D01* +X428764Y356424D01* +X428841Y356411D01* +X430417Y356411D01* +X432554Y355525D01* +X434189Y353890D01* +X435075Y351753D01* +X435075Y349439D01* +X434535Y348137D01* +X434506Y348025D01* +X434472Y347916D01* +X434471Y347888D01* +X434464Y347861D01* +X434467Y347747D01* +X434464Y347632D01* +X434471Y347605D01* +X434472Y347577D01* +X434507Y347468D01* +X434536Y347357D01* +X434550Y347333D01* +X434559Y347306D01* +X434623Y347211D01* +X434682Y347112D01* +X434702Y347093D01* +X434717Y347070D01* +X434805Y346996D01* +X434889Y346918D01* +X434914Y346905D01* +X434935Y346887D01* +X435040Y346841D01* +X435142Y346788D01* +X435167Y346784D01* +X435195Y346772D01* +X435458Y346735D01* +X435473Y346733D01* +X447937Y346733D01* +X450153Y344517D01* +X450153Y343019D01* +X450165Y342933D01* +X450168Y342845D01* +X450185Y342793D01* +X450193Y342738D01* +X450228Y342658D01* +X450255Y342575D01* +X450283Y342535D01* +X450309Y342478D01* +X450405Y342365D01* +X450450Y342301D01* +X452086Y340665D01* +X454037Y338714D01* +X455221Y337530D01* +X455291Y337478D01* +X455355Y337418D01* +X455404Y337392D01* +X455449Y337359D01* +X455530Y337328D01* +X455608Y337288D01* +X455656Y337280D01* +X455714Y337258D01* +X455862Y337246D01* +X455939Y337233D01* +X469937Y337233D01* +X472153Y335017D01* +X472153Y334264D01* +X472161Y334206D01* +X472159Y334148D01* +X472181Y334066D01* +X472193Y333982D01* +X472216Y333929D01* +X472231Y333873D01* +X472274Y333800D01* +X472309Y333723D01* +X472347Y333678D01* +X472376Y333628D01* +X472438Y333570D01* +X472492Y333506D01* +X472541Y333474D01* +X472584Y333434D01* +X472659Y333395D01* +X472729Y333348D01* +X472785Y333331D01* +X472837Y333304D01* +X472905Y333293D01* +X473000Y333263D01* +X473100Y333260D01* +X473168Y333249D01* +X494023Y333249D01* +X548712Y278559D01* +X548736Y278542D01* +X548755Y278519D01* +X548849Y278456D01* +X548939Y278389D01* +X548967Y278378D01* +X548991Y278362D01* +X549099Y278328D01* +X549205Y278287D01* +X549234Y278285D01* +X549262Y278276D01* +X549376Y278273D01* +X549488Y278264D01* +X549517Y278269D01* +X549546Y278269D01* +X549656Y278297D01* +X549767Y278320D01* +X549793Y278333D01* +X549821Y278341D01* +X549919Y278398D01* +X550019Y278451D01* +X550041Y278471D01* +X550066Y278486D01* +X550143Y278568D01* +X550225Y278646D01* +X550240Y278672D01* +X550260Y278693D01* +X550312Y278794D01* +X550369Y278892D01* +X550376Y278920D01* +X550390Y278946D01* +X550403Y279024D01* +X550439Y279167D01* +X550437Y279230D01* +X550445Y279277D01* +X550445Y280557D01* +X551331Y282694D01* +X552966Y284329D01* +X555103Y285215D01* +X557417Y285215D01* +X559554Y284329D01* +X561189Y282694D01* +X562075Y280557D01* +X562075Y278317D01* +X562087Y278231D01* +X562090Y278143D01* +X562107Y278091D01* +X562115Y278036D01* +X562150Y277956D01* +X562177Y277873D01* +X562205Y277834D01* +X562231Y277776D01* +X562327Y277663D01* +X562372Y277599D01* +X630666Y209306D01* +X630735Y209254D01* +X630799Y209194D01* +X630849Y209168D01* +X630893Y209135D01* +X630974Y209104D01* +X631052Y209064D01* +X631100Y209056D01* +X631158Y209034D01* +X631306Y209022D01* +X631383Y209009D01* +X881352Y209009D01* +X881410Y209017D01* +G37* +G36* +X850174Y43705D02* +X850174Y43705D01* +X850288Y43715D01* +X850314Y43725D01* +X850342Y43729D01* +X850447Y43776D01* +X850554Y43817D01* +X850576Y43833D01* +X850601Y43845D01* +X850689Y43919D01* +X850780Y43988D01* +X850797Y44011D01* +X850818Y44028D01* +X850882Y44124D01* +X850951Y44216D01* +X850960Y44242D01* +X850976Y44265D01* +X851010Y44375D01* +X851051Y44482D01* +X851053Y44510D01* +X851062Y44536D01* +X851064Y44651D01* +X851074Y44765D01* +X851068Y44790D01* +X851069Y44820D01* +X851002Y45077D01* +X850998Y45093D01* +X850165Y47103D01* +X850165Y49417D01* +X850998Y51427D01* +X851027Y51539D01* +X851062Y51648D01* +X851062Y51676D01* +X851069Y51703D01* +X851066Y51817D01* +X851069Y51932D01* +X851062Y51959D01* +X851061Y51987D01* +X851026Y52096D01* +X850997Y52207D01* +X850983Y52231D01* +X850974Y52258D01* +X850910Y52353D01* +X850852Y52452D01* +X850832Y52471D01* +X850816Y52494D01* +X850728Y52568D01* +X850644Y52646D01* +X850620Y52659D01* +X850599Y52677D01* +X850494Y52723D01* +X850391Y52776D01* +X850367Y52780D01* +X850339Y52792D01* +X850075Y52829D01* +X850060Y52831D01* +X836706Y52831D01* +X835151Y54386D01* +X835151Y58897D01* +X835480Y59226D01* +X835515Y59273D01* +X835557Y59313D01* +X835600Y59386D01* +X835651Y59453D01* +X835672Y59508D01* +X835701Y59558D01* +X835722Y59640D01* +X835752Y59719D01* +X835757Y59777D01* +X835771Y59834D01* +X835769Y59918D01* +X835776Y60002D01* +X835764Y60060D01* +X835762Y60118D01* +X835736Y60198D01* +X835720Y60281D01* +X835693Y60333D01* +X835675Y60389D01* +X835635Y60445D01* +X835589Y60533D01* +X835520Y60606D01* +X835480Y60662D01* +X835151Y60990D01* +X835151Y65501D01* +X835353Y65703D01* +X835388Y65750D01* +X835430Y65790D01* +X835473Y65863D01* +X835524Y65930D01* +X835545Y65985D01* +X835574Y66035D01* +X835595Y66117D01* +X835625Y66196D01* +X835630Y66254D01* +X835644Y66311D01* +X835642Y66395D01* +X835649Y66479D01* +X835637Y66537D01* +X835635Y66595D01* +X835609Y66675D01* +X835593Y66758D01* +X835566Y66810D01* +X835548Y66866D01* +X835508Y66922D01* +X835462Y67010D01* +X835393Y67083D01* +X835353Y67139D01* +X835151Y67340D01* +X835151Y71851D01* +X835480Y72180D01* +X835515Y72227D01* +X835557Y72267D01* +X835600Y72340D01* +X835651Y72407D01* +X835672Y72462D01* +X835701Y72512D01* +X835722Y72594D01* +X835752Y72673D01* +X835757Y72731D01* +X835771Y72788D01* +X835769Y72872D01* +X835776Y72956D01* +X835764Y73014D01* +X835762Y73072D01* +X835736Y73152D01* +X835720Y73235D01* +X835693Y73287D01* +X835675Y73343D01* +X835635Y73399D01* +X835589Y73487D01* +X835520Y73560D01* +X835480Y73616D01* +X835151Y73944D01* +X835151Y78455D01* +X835480Y78784D01* +X835515Y78831D01* +X835557Y78871D01* +X835600Y78944D01* +X835651Y79011D01* +X835672Y79066D01* +X835701Y79116D01* +X835722Y79198D01* +X835752Y79277D01* +X835757Y79335D01* +X835771Y79392D01* +X835769Y79476D01* +X835776Y79560D01* +X835764Y79618D01* +X835762Y79676D01* +X835736Y79756D01* +X835720Y79839D01* +X835693Y79891D01* +X835675Y79947D01* +X835635Y80003D01* +X835589Y80091D01* +X835520Y80164D01* +X835480Y80220D01* +X835151Y80548D01* +X835151Y85059D01* +X835353Y85261D01* +X835388Y85308D01* +X835430Y85348D01* +X835473Y85421D01* +X835524Y85488D01* +X835545Y85543D01* +X835574Y85593D01* +X835595Y85675D01* +X835625Y85754D01* +X835630Y85812D01* +X835644Y85869D01* +X835642Y85953D01* +X835649Y86037D01* +X835637Y86095D01* +X835635Y86153D01* +X835609Y86233D01* +X835593Y86316D01* +X835566Y86368D01* +X835548Y86424D01* +X835508Y86480D01* +X835462Y86568D01* +X835421Y86611D01* +X835408Y86634D01* +X835378Y86661D01* +X835353Y86697D01* +X835151Y86898D01* +X835151Y91410D01* +X836706Y92965D01* +X852394Y92965D01* +X853949Y91410D01* +X853949Y86868D01* +X853957Y86810D01* +X853955Y86752D01* +X853977Y86670D01* +X853989Y86586D01* +X854012Y86533D01* +X854027Y86477D01* +X854070Y86404D01* +X854105Y86327D01* +X854143Y86282D01* +X854172Y86232D01* +X854234Y86174D01* +X854288Y86110D01* +X854337Y86078D01* +X854380Y86038D01* +X854455Y85999D01* +X854525Y85952D01* +X854581Y85935D01* +X854633Y85908D01* +X854701Y85897D01* +X854796Y85867D01* +X854896Y85864D01* +X854964Y85853D01* +X858361Y85853D01* +X858447Y85865D01* +X858535Y85868D01* +X858587Y85885D01* +X858642Y85893D01* +X858722Y85928D01* +X858805Y85955D01* +X858844Y85983D01* +X858902Y86009D01* +X859015Y86105D01* +X859079Y86150D01* +X903434Y130505D01* +X903486Y130575D01* +X903546Y130639D01* +X903572Y130688D01* +X903605Y130733D01* +X903636Y130814D01* +X903676Y130892D01* +X903684Y130940D01* +X903706Y130998D01* +X903718Y131146D01* +X903731Y131223D01* +X903731Y136645D01* +X903719Y136732D01* +X903716Y136819D01* +X903699Y136872D01* +X903691Y136926D01* +X903656Y137006D01* +X903629Y137089D01* +X903601Y137129D01* +X903575Y137186D01* +X903479Y137299D01* +X903434Y137363D01* +X901851Y138946D01* +X900965Y141083D01* +X900965Y143397D01* +X901851Y145534D01* +X903486Y147169D01* +X905623Y148055D01* +X907937Y148055D01* +X910074Y147169D01* +X911709Y145534D01* +X911712Y145528D01* +X911756Y145454D01* +X911791Y145375D01* +X911828Y145332D01* +X911856Y145283D01* +X911919Y145224D01* +X911975Y145158D01* +X912022Y145127D01* +X912063Y145088D01* +X912140Y145048D01* +X912211Y145001D01* +X912265Y144983D01* +X912316Y144957D01* +X912400Y144941D01* +X912482Y144915D01* +X912539Y144913D01* +X912595Y144902D01* +X912680Y144910D01* +X912766Y144908D01* +X912821Y144922D01* +X912878Y144927D01* +X912958Y144958D01* +X913041Y144979D01* +X913090Y145008D01* +X913143Y145029D01* +X913212Y145081D01* +X913286Y145125D01* +X913325Y145166D01* +X913370Y145200D01* +X913422Y145269D01* +X913480Y145332D01* +X913506Y145383D01* +X913540Y145428D01* +X913571Y145508D01* +X913610Y145585D01* +X913618Y145634D01* +X913641Y145694D01* +X913652Y145839D01* +X913665Y145916D01* +X913665Y145937D01* +X914551Y148074D01* +X916186Y149709D01* +X918323Y150595D01* +X920637Y150595D01* +X922774Y149709D01* +X924409Y148074D01* +X925295Y145937D01* +X925295Y143623D01* +X924450Y141584D01* +X924428Y141500D01* +X924398Y141420D01* +X924393Y141363D01* +X924379Y141308D01* +X924381Y141222D01* +X924374Y141137D01* +X924385Y141081D01* +X924387Y141024D01* +X924413Y140942D01* +X924430Y140858D01* +X924456Y140808D01* +X924474Y140753D01* +X924522Y140682D01* +X924561Y140606D01* +X924600Y140565D01* +X924632Y140517D01* +X924698Y140462D01* +X924757Y140400D01* +X924806Y140371D01* +X924850Y140334D01* +X924928Y140299D01* +X925002Y140256D01* +X925057Y140242D01* +X925109Y140219D01* +X925195Y140207D01* +X925278Y140186D01* +X925334Y140188D01* +X925391Y140180D01* +X925476Y140192D01* +X925562Y140195D01* +X925616Y140212D01* +X925672Y140221D01* +X925751Y140256D01* +X925832Y140282D01* +X925873Y140311D01* +X925931Y140338D01* +X926042Y140432D01* +X926106Y140477D01* +X1016465Y230837D01* +X1023225Y230837D01* +X1023311Y230849D01* +X1023399Y230852D01* +X1023451Y230869D01* +X1023506Y230877D01* +X1023578Y230909D01* +X1039872Y230909D01* +X1039930Y230917D01* +X1039988Y230915D01* +X1040070Y230937D01* +X1040154Y230949D01* +X1040207Y230972D01* +X1040263Y230987D01* +X1040336Y231030D01* +X1040413Y231065D01* +X1040458Y231103D01* +X1040508Y231132D01* +X1040566Y231194D01* +X1040630Y231248D01* +X1040662Y231297D01* +X1040702Y231340D01* +X1040741Y231415D01* +X1040788Y231485D01* +X1040805Y231541D01* +X1040832Y231593D01* +X1040843Y231661D01* +X1040873Y231756D01* +X1040876Y231856D01* +X1040887Y231924D01* +X1040887Y232279D01* +X1042100Y233492D01* +X1042135Y233539D01* +X1042178Y233579D01* +X1042220Y233652D01* +X1042271Y233719D01* +X1042292Y233774D01* +X1042321Y233824D01* +X1042342Y233906D01* +X1042372Y233985D01* +X1042377Y234043D01* +X1042391Y234100D01* +X1042389Y234184D01* +X1042396Y234268D01* +X1042384Y234326D01* +X1042382Y234384D01* +X1042356Y234464D01* +X1042340Y234547D01* +X1042313Y234599D01* +X1042295Y234655D01* +X1042255Y234711D01* +X1042209Y234799D01* +X1042173Y234837D01* +X1042159Y234860D01* +X1042126Y234891D01* +X1042100Y234928D01* +X1040887Y236141D01* +X1040887Y236496D01* +X1040879Y236554D01* +X1040881Y236612D01* +X1040859Y236694D01* +X1040847Y236778D01* +X1040824Y236831D01* +X1040809Y236887D01* +X1040766Y236960D01* +X1040731Y237037D01* +X1040693Y237082D01* +X1040664Y237132D01* +X1040602Y237190D01* +X1040548Y237254D01* +X1040499Y237286D01* +X1040456Y237326D01* +X1040381Y237365D01* +X1040311Y237412D01* +X1040255Y237429D01* +X1040203Y237456D01* +X1040135Y237467D01* +X1040040Y237497D01* +X1039940Y237500D01* +X1039872Y237511D01* +X1003576Y237511D01* +X1003489Y237499D01* +X1003402Y237496D01* +X1003349Y237479D01* +X1003294Y237471D01* +X1003215Y237436D01* +X1003131Y237409D01* +X1003092Y237381D01* +X1003035Y237355D01* +X1002922Y237259D01* +X1002858Y237214D01* +X929445Y163801D01* +X915388Y163801D01* +X913149Y166040D01* +X913081Y166092D01* +X913018Y166151D01* +X912967Y166177D01* +X912922Y166211D01* +X912842Y166242D01* +X912765Y166281D01* +X912709Y166292D01* +X912656Y166312D01* +X912571Y166319D01* +X912486Y166336D01* +X912430Y166331D01* +X912373Y166336D01* +X912289Y166319D01* +X912203Y166312D01* +X912150Y166291D01* +X912094Y166280D01* +X912018Y166240D01* +X911938Y166209D01* +X911892Y166175D01* +X911842Y166149D01* +X911780Y166090D01* +X911711Y166038D01* +X911677Y165992D01* +X911636Y165953D01* +X911592Y165879D01* +X911541Y165810D01* +X911521Y165757D01* +X911492Y165708D01* +X911471Y165625D01* +X911441Y165544D01* +X911436Y165487D01* +X911422Y165432D01* +X911425Y165346D01* +X911418Y165261D01* +X911429Y165213D01* +X911431Y165148D01* +X911476Y165010D01* +X911493Y164934D01* +X911575Y164736D01* +X911575Y162423D01* +X910690Y160286D01* +X909054Y158650D01* +X906917Y157765D01* +X904604Y157765D01* +X902467Y158650D01* +X900831Y160286D01* +X899946Y162423D01* +X899946Y164938D01* +X899938Y164994D01* +X899935Y165114D01* +X899934Y165117D01* +X899934Y165120D01* +X899909Y165195D01* +X899906Y165220D01* +X899890Y165256D01* +X899849Y165385D01* +X899847Y165387D01* +X899846Y165390D01* +X899832Y165410D01* +X899797Y165462D01* +X899790Y165479D01* +X899772Y165499D01* +X899691Y165622D01* +X899666Y165642D01* +X899651Y165663D01* +X880186Y185129D01* +X880162Y185146D01* +X880143Y185169D01* +X880049Y185232D01* +X879959Y185300D01* +X879931Y185310D01* +X879907Y185327D01* +X879799Y185361D01* +X879693Y185401D01* +X879664Y185403D01* +X879636Y185412D01* +X879522Y185415D01* +X879410Y185425D01* +X879381Y185419D01* +X879352Y185420D01* +X879242Y185391D01* +X879131Y185369D01* +X879105Y185355D01* +X879077Y185348D01* +X878979Y185290D01* +X878879Y185238D01* +X878857Y185218D01* +X878832Y185203D01* +X878755Y185120D01* +X878673Y185042D01* +X878658Y185017D01* +X878638Y184995D01* +X878586Y184894D01* +X878529Y184797D01* +X878522Y184768D01* +X878508Y184742D01* +X878495Y184665D01* +X878459Y184521D01* +X878461Y184459D01* +X878453Y184411D01* +X878453Y180379D01* +X878460Y180327D01* +X878459Y180300D01* +X878465Y180277D01* +X878468Y180205D01* +X878485Y180153D01* +X878493Y180098D01* +X878528Y180018D01* +X878555Y179935D01* +X878583Y179896D01* +X878609Y179838D01* +X878705Y179725D01* +X878750Y179661D01* +X887199Y171212D01* +X887269Y171160D01* +X887333Y171100D01* +X887383Y171074D01* +X887427Y171041D01* +X887508Y171010D01* +X887586Y170970D01* +X887634Y170962D01* +X887692Y170940D01* +X887840Y170928D01* +X887917Y170915D01* +X890157Y170915D01* +X892294Y170029D01* +X893929Y168394D01* +X894815Y166257D01* +X894815Y163943D01* +X893929Y161806D01* +X892294Y160171D01* +X890157Y159285D01* +X887843Y159285D01* +X885706Y160171D01* +X884071Y161806D01* +X883286Y163700D01* +X883242Y163774D01* +X883207Y163853D01* +X883170Y163896D01* +X883141Y163945D01* +X883079Y164004D01* +X883023Y164070D01* +X882976Y164101D01* +X882935Y164140D01* +X882858Y164180D01* +X882787Y164227D01* +X882733Y164244D01* +X882682Y164271D01* +X882598Y164287D01* +X882516Y164313D01* +X882459Y164315D01* +X882403Y164326D01* +X882318Y164318D01* +X882232Y164320D01* +X882177Y164306D01* +X882120Y164301D01* +X882040Y164270D01* +X881957Y164249D01* +X881908Y164220D01* +X881855Y164199D01* +X881786Y164147D01* +X881712Y164103D01* +X881673Y164062D01* +X881628Y164027D01* +X881577Y163959D01* +X881518Y163896D01* +X881492Y163845D01* +X881458Y163800D01* +X881427Y163719D01* +X881388Y163643D01* +X881380Y163594D01* +X881357Y163534D01* +X881346Y163389D01* +X881333Y163312D01* +X881333Y162242D01* +X879578Y160487D01* +X873022Y160487D01* +X871585Y161924D01* +X871515Y161976D01* +X871451Y162036D01* +X871402Y162062D01* +X871358Y162095D01* +X871276Y162126D01* +X871198Y162166D01* +X871151Y162174D01* +X871092Y162196D01* +X870945Y162208D01* +X870867Y162221D01* +X869033Y162221D01* +X868946Y162209D01* +X868859Y162206D01* +X868806Y162189D01* +X868751Y162181D01* +X868671Y162146D01* +X868588Y162119D01* +X868549Y162091D01* +X868492Y162065D01* +X868379Y161969D01* +X868315Y161924D01* +X867129Y160738D01* +X867094Y160691D01* +X867051Y160651D01* +X867009Y160578D01* +X866958Y160511D01* +X866937Y160456D01* +X866908Y160406D01* +X866887Y160324D01* +X866857Y160245D01* +X866852Y160187D01* +X866837Y160130D01* +X866840Y160046D01* +X866833Y159962D01* +X866845Y159904D01* +X866846Y159846D01* +X866872Y159766D01* +X866889Y159683D01* +X866916Y159631D01* +X866934Y159575D01* +X866974Y159519D01* +X867020Y159431D01* +X867089Y159358D01* +X867129Y159302D01* +X868633Y157798D01* +X868633Y151742D01* +X866878Y149987D01* +X860322Y149987D01* +X858885Y151424D01* +X858815Y151476D01* +X858752Y151536D01* +X858702Y151562D01* +X858658Y151595D01* +X858576Y151626D01* +X858498Y151666D01* +X858451Y151674D01* +X858392Y151696D01* +X858245Y151708D01* +X858167Y151721D01* +X855801Y151721D01* +X855772Y151717D01* +X855743Y151720D01* +X855632Y151697D01* +X855520Y151681D01* +X855493Y151669D01* +X855464Y151664D01* +X855364Y151612D01* +X855260Y151565D01* +X855238Y151546D01* +X855212Y151533D01* +X855130Y151455D01* +X855043Y151382D01* +X855027Y151357D01* +X855006Y151337D01* +X854949Y151239D01* +X854886Y151145D01* +X854877Y151117D01* +X854862Y151092D01* +X854834Y150982D01* +X854800Y150874D01* +X854799Y150844D01* +X854792Y150816D01* +X854796Y150703D01* +X854793Y150590D01* +X854800Y150561D01* +X854801Y150532D01* +X854836Y150424D01* +X854865Y150315D01* +X854880Y150289D01* +X854889Y150261D01* +X854934Y150198D01* +X855010Y150070D01* +X855055Y150027D01* +X855083Y149988D01* +X858721Y146350D01* +X858791Y146298D01* +X858855Y146238D01* +X858905Y146212D01* +X858949Y146179D01* +X859030Y146148D01* +X859108Y146108D01* +X859156Y146100D01* +X859214Y146078D01* +X859362Y146066D01* +X859439Y146053D01* +X875827Y146053D01* +X878453Y143427D01* +X878453Y130613D01* +X875827Y127987D01* +X856013Y127987D01* +X853387Y130613D01* +X853387Y142641D01* +X853375Y142727D01* +X853372Y142815D01* +X853355Y142867D01* +X853347Y142922D01* +X853312Y143002D01* +X853285Y143085D01* +X853257Y143124D01* +X853231Y143182D01* +X853135Y143295D01* +X853090Y143359D01* +X850161Y146288D01* +X850091Y146340D01* +X850027Y146400D01* +X849977Y146426D01* +X849933Y146459D01* +X849852Y146490D01* +X849774Y146530D01* +X849726Y146538D01* +X849668Y146560D01* +X849520Y146572D01* +X849443Y146585D01* +X847203Y146585D01* +X845066Y147471D01* +X843431Y149106D01* +X842545Y151243D01* +X842545Y153557D01* +X843431Y155694D01* +X845066Y157329D01* +X847203Y158215D01* +X849517Y158215D01* +X850286Y157896D01* +X850316Y157888D01* +X850344Y157874D01* +X850421Y157861D01* +X850561Y157825D01* +X850626Y157827D01* +X850675Y157819D01* +X858167Y157819D01* +X858254Y157831D01* +X858341Y157834D01* +X858394Y157851D01* +X858449Y157859D01* +X858529Y157894D01* +X858612Y157921D01* +X858651Y157949D01* +X858708Y157975D01* +X858822Y158071D01* +X858885Y158116D01* +X860071Y159302D01* +X860106Y159349D01* +X860149Y159389D01* +X860192Y159462D01* +X860242Y159529D01* +X860263Y159584D01* +X860292Y159634D01* +X860313Y159716D01* +X860343Y159795D01* +X860348Y159853D01* +X860363Y159910D01* +X860360Y159994D01* +X860367Y160078D01* +X860355Y160136D01* +X860354Y160194D01* +X860328Y160274D01* +X860311Y160357D01* +X860284Y160409D01* +X860266Y160465D01* +X860226Y160521D01* +X860180Y160609D01* +X860111Y160682D01* +X860071Y160738D01* +X858567Y162242D01* +X858567Y168298D01* +X860254Y169985D01* +X860306Y170055D01* +X860366Y170118D01* +X860392Y170168D01* +X860425Y170212D01* +X860456Y170294D01* +X860496Y170372D01* +X860504Y170419D01* +X860526Y170478D01* +X860538Y170625D01* +X860551Y170703D01* +X860551Y172972D01* +X860543Y173030D01* +X860545Y173088D01* +X860523Y173170D01* +X860511Y173254D01* +X860488Y173307D01* +X860473Y173363D01* +X860430Y173436D01* +X860395Y173513D01* +X860357Y173558D01* +X860328Y173608D01* +X860266Y173666D01* +X860212Y173730D01* +X860163Y173762D01* +X860120Y173802D01* +X860045Y173841D01* +X859975Y173888D01* +X859919Y173905D01* +X859867Y173932D01* +X859799Y173943D01* +X859704Y173973D01* +X859604Y173976D01* +X859536Y173987D01* +X856013Y173987D01* +X853387Y176613D01* +X853387Y178956D01* +X853379Y179014D01* +X853381Y179072D01* +X853359Y179154D01* +X853347Y179238D01* +X853324Y179291D01* +X853309Y179347D01* +X853266Y179420D01* +X853231Y179497D01* +X853193Y179542D01* +X853164Y179592D01* +X853102Y179650D01* +X853048Y179714D01* +X852999Y179746D01* +X852956Y179786D01* +X852881Y179825D01* +X852811Y179872D01* +X852755Y179889D01* +X852703Y179916D01* +X852635Y179927D01* +X852540Y179957D01* +X852440Y179960D01* +X852372Y179971D01* +X788468Y179971D01* +X788410Y179963D01* +X788352Y179965D01* +X788270Y179943D01* +X788186Y179931D01* +X788133Y179908D01* +X788077Y179893D01* +X788004Y179850D01* +X787927Y179815D01* +X787882Y179777D01* +X787832Y179748D01* +X787774Y179686D01* +X787710Y179632D01* +X787678Y179583D01* +X787638Y179540D01* +X787599Y179465D01* +X787552Y179395D01* +X787535Y179339D01* +X787508Y179287D01* +X787497Y179219D01* +X787467Y179124D01* +X787464Y179024D01* +X787453Y178956D01* +X787453Y176613D01* +X784827Y173987D01* +X765013Y173987D01* +X762387Y176613D01* +X762387Y189427D01* +X765013Y192053D01* +X784827Y192053D01* +X787453Y189427D01* +X787453Y187084D01* +X787461Y187026D01* +X787459Y186968D01* +X787481Y186886D01* +X787493Y186802D01* +X787516Y186749D01* +X787531Y186693D01* +X787574Y186620D01* +X787609Y186543D01* +X787647Y186498D01* +X787676Y186448D01* +X787738Y186390D01* +X787792Y186326D01* +X787841Y186294D01* +X787884Y186254D01* +X787959Y186215D01* +X788029Y186168D01* +X788085Y186151D01* +X788137Y186124D01* +X788205Y186113D01* +X788300Y186083D01* +X788400Y186080D01* +X788468Y186069D01* +X852372Y186069D01* +X852430Y186077D01* +X852488Y186075D01* +X852570Y186097D01* +X852654Y186109D01* +X852707Y186132D01* +X852763Y186147D01* +X852836Y186190D01* +X852913Y186225D01* +X852958Y186263D01* +X853008Y186292D01* +X853066Y186354D01* +X853130Y186408D01* +X853162Y186457D01* +X853202Y186500D01* +X853241Y186575D01* +X853288Y186645D01* +X853305Y186701D01* +X853332Y186753D01* +X853343Y186821D01* +X853373Y186916D01* +X853376Y187016D01* +X853387Y187084D01* +X853387Y189427D01* +X856013Y192053D01* +X870811Y192053D01* +X870840Y192057D01* +X870869Y192054D01* +X870980Y192077D01* +X871093Y192093D01* +X871119Y192105D01* +X871148Y192110D01* +X871249Y192162D01* +X871352Y192209D01* +X871374Y192228D01* +X871400Y192241D01* +X871482Y192319D01* +X871569Y192392D01* +X871585Y192417D01* +X871606Y192437D01* +X871664Y192535D01* +X871727Y192629D01* +X871735Y192657D01* +X871750Y192682D01* +X871778Y192792D01* +X871812Y192900D01* +X871813Y192930D01* +X871820Y192958D01* +X871817Y193071D01* +X871820Y193184D01* +X871812Y193213D01* +X871811Y193242D01* +X871776Y193350D01* +X871748Y193459D01* +X871733Y193485D01* +X871724Y193513D01* +X871678Y193576D01* +X871603Y193704D01* +X871557Y193747D01* +X871529Y193786D01* +X867973Y197342D01* +X867903Y197394D01* +X867839Y197454D01* +X867790Y197480D01* +X867746Y197513D01* +X867664Y197544D01* +X867586Y197584D01* +X867538Y197592D01* +X867480Y197614D01* +X867332Y197626D01* +X867255Y197639D01* +X698801Y197639D01* +X698714Y197627D01* +X698627Y197624D01* +X698574Y197607D01* +X698519Y197599D01* +X698440Y197564D01* +X698356Y197537D01* +X698317Y197509D01* +X698260Y197483D01* +X698147Y197387D01* +X698083Y197342D01* +X692318Y191577D01* +X692283Y191530D01* +X692241Y191490D01* +X692198Y191417D01* +X692147Y191350D01* +X692127Y191295D01* +X692097Y191245D01* +X692076Y191163D01* +X692046Y191084D01* +X692041Y191026D01* +X692027Y190969D01* +X692030Y190885D01* +X692023Y190801D01* +X692034Y190744D01* +X692036Y190685D01* +X692062Y190605D01* +X692078Y190522D01* +X692105Y190470D01* +X692123Y190415D01* +X692163Y190358D01* +X692209Y190270D01* +X692278Y190198D01* +X692318Y190141D01* +X693033Y189427D01* +X693033Y176613D01* +X690407Y173987D01* +X682244Y173987D01* +X682186Y173979D01* +X682128Y173981D01* +X682046Y173959D01* +X681962Y173947D01* +X681909Y173924D01* +X681853Y173909D01* +X681780Y173866D01* +X681703Y173831D01* +X681658Y173793D01* +X681608Y173764D01* +X681550Y173702D01* +X681486Y173648D01* +X681454Y173599D01* +X681414Y173556D01* +X681375Y173481D01* +X681328Y173411D01* +X681311Y173355D01* +X681284Y173303D01* +X681273Y173235D01* +X681243Y173140D01* +X681240Y173040D01* +X681229Y172972D01* +X681229Y170703D01* +X681241Y170616D01* +X681244Y170529D01* +X681261Y170476D01* +X681269Y170421D01* +X681304Y170341D01* +X681331Y170258D01* +X681359Y170219D01* +X681385Y170162D01* +X681481Y170049D01* +X681526Y169985D01* +X682895Y168616D01* +X682965Y168564D01* +X683029Y168504D01* +X683078Y168478D01* +X683122Y168445D01* +X683204Y168414D01* +X683282Y168374D01* +X683329Y168366D01* +X683388Y168344D01* +X683535Y168332D01* +X683613Y168319D01* +X687987Y168319D01* +X688074Y168331D01* +X688161Y168334D01* +X688214Y168351D01* +X688269Y168359D01* +X688349Y168394D01* +X688432Y168421D01* +X688471Y168449D01* +X688528Y168475D01* +X688641Y168571D01* +X688705Y168616D01* +X690142Y170053D01* +X696698Y170053D01* +X698453Y168298D01* +X698453Y163027D01* +X698457Y162998D01* +X698454Y162969D01* +X698477Y162858D01* +X698493Y162746D01* +X698505Y162719D01* +X698510Y162690D01* +X698563Y162589D01* +X698609Y162486D01* +X698628Y162464D01* +X698641Y162438D01* +X698719Y162356D01* +X698792Y162269D01* +X698817Y162253D01* +X698837Y162232D01* +X698935Y162174D01* +X699029Y162112D01* +X699057Y162103D01* +X699082Y162088D01* +X699192Y162060D01* +X699300Y162026D01* +X699330Y162025D01* +X699358Y162018D01* +X699471Y162021D01* +X699584Y162018D01* +X699613Y162026D01* +X699642Y162027D01* +X699750Y162062D01* +X699859Y162090D01* +X699885Y162105D01* +X699913Y162114D01* +X699977Y162160D01* +X700104Y162236D01* +X700147Y162281D01* +X700186Y162309D01* +X700835Y162958D01* +X702972Y163844D01* +X705285Y163844D01* +X707521Y162918D01* +X707522Y162917D01* +X707524Y162917D01* +X707661Y162882D01* +X707796Y162847D01* +X707797Y162847D01* +X707799Y162846D01* +X707945Y162851D01* +X708080Y162855D01* +X708082Y162855D01* +X708083Y162856D01* +X708217Y162899D01* +X708351Y162942D01* +X708352Y162943D01* +X708354Y162943D01* +X708366Y162952D01* +X708587Y163100D01* +X708607Y163123D01* +X708627Y163138D01* +X708835Y163346D01* +X708904Y163438D01* +X708978Y163526D01* +X708990Y163551D01* +X709006Y163574D01* +X709047Y163681D01* +X709094Y163786D01* +X709098Y163813D01* +X709107Y163839D01* +X709117Y163953D01* +X709133Y164067D01* +X709129Y164095D01* +X709131Y164122D01* +X709108Y164235D01* +X709092Y164349D01* +X709081Y164374D01* +X709075Y164401D01* +X709022Y164503D01* +X708975Y164608D01* +X708957Y164629D01* +X708944Y164654D01* +X708865Y164737D01* +X708791Y164824D01* +X708769Y164837D01* +X708748Y164860D01* +X708519Y164994D01* +X708506Y165002D01* +X707906Y165251D01* +X706271Y166886D01* +X705385Y169023D01* +X705385Y171337D01* +X706271Y173474D01* +X707906Y175109D01* +X710043Y175995D01* +X712357Y175995D01* +X714494Y175109D01* +X716129Y173474D01* +X717015Y171337D01* +X717015Y169023D01* +X716696Y168254D01* +X716688Y168224D01* +X716674Y168196D01* +X716661Y168119D01* +X716625Y167979D01* +X716627Y167914D01* +X716619Y167865D01* +X716619Y165453D01* +X716631Y165366D01* +X716634Y165279D01* +X716651Y165226D01* +X716659Y165171D01* +X716694Y165091D01* +X716721Y165008D01* +X716749Y164969D01* +X716775Y164912D01* +X716871Y164799D01* +X716916Y164735D01* +X718102Y163549D01* +X718149Y163514D01* +X718189Y163471D01* +X718262Y163429D01* +X718329Y163378D01* +X718384Y163357D01* +X718434Y163328D01* +X718516Y163307D01* +X718595Y163277D01* +X718653Y163272D01* +X718710Y163257D01* +X718794Y163260D01* +X718878Y163253D01* +X718936Y163265D01* +X718994Y163266D01* +X719074Y163292D01* +X719157Y163309D01* +X719209Y163336D01* +X719265Y163354D01* +X719321Y163394D01* +X719409Y163440D01* +X719482Y163509D01* +X719538Y163549D01* +X721042Y165053D01* +X727098Y165053D01* +X728853Y163298D01* +X728853Y156742D01* +X727416Y155305D01* +X727364Y155235D01* +X727304Y155172D01* +X727278Y155122D01* +X727245Y155078D01* +X727214Y154996D01* +X727174Y154918D01* +X727166Y154871D01* +X727144Y154812D01* +X727132Y154665D01* +X727119Y154587D01* +X727119Y150498D01* +X727127Y150440D01* +X727125Y150382D01* +X727147Y150300D01* +X727159Y150216D01* +X727182Y150163D01* +X727197Y150107D01* +X727240Y150034D01* +X727275Y149957D01* +X727313Y149912D01* +X727342Y149862D01* +X727404Y149804D01* +X727458Y149740D01* +X727507Y149708D01* +X727550Y149668D01* +X727575Y149655D01* +X729553Y147677D01* +X729553Y140723D01* +X729248Y140418D01* +X729212Y140371D01* +X729170Y140331D01* +X729127Y140258D01* +X729077Y140191D01* +X729056Y140136D01* +X729026Y140086D01* +X729006Y140004D01* +X728975Y139925D01* +X728971Y139867D01* +X728956Y139810D01* +X728959Y139726D01* +X728952Y139642D01* +X728963Y139584D01* +X728965Y139526D01* +X728991Y139446D01* +X729008Y139363D01* +X729035Y139311D01* +X729053Y139255D01* +X729093Y139199D01* +X729139Y139111D01* +X729208Y139038D01* +X729248Y138982D01* +X729553Y138677D01* +X729553Y131723D01* +X727532Y129702D01* +X727514Y129678D01* +X727491Y129659D01* +X727429Y129565D01* +X727361Y129475D01* +X727350Y129447D01* +X727334Y129423D01* +X727300Y129315D01* +X727259Y129209D01* +X727257Y129180D01* +X727248Y129152D01* +X727245Y129038D01* +X727236Y128926D01* +X727242Y128897D01* +X727241Y128868D01* +X727269Y128758D01* +X727292Y128647D01* +X727305Y128621D01* +X727313Y128593D01* +X727370Y128495D01* +X727423Y128395D01* +X727443Y128373D01* +X727458Y128348D01* +X727540Y128271D01* +X727618Y128189D01* +X727644Y128174D01* +X727665Y128154D01* +X727766Y128102D01* +X727864Y128045D01* +X727892Y128038D01* +X727918Y128024D01* +X727996Y128011D01* +X728139Y127975D01* +X728202Y127977D01* +X728249Y127969D01* +X734791Y127969D01* +X734820Y127973D01* +X734849Y127970D01* +X734960Y127993D01* +X735072Y128009D01* +X735099Y128021D01* +X735128Y128026D01* +X735228Y128079D01* +X735332Y128125D01* +X735354Y128144D01* +X735380Y128157D01* +X735462Y128235D01* +X735549Y128308D01* +X735565Y128333D01* +X735586Y128353D01* +X735643Y128451D01* +X735706Y128545D01* +X735715Y128573D01* +X735730Y128598D01* +X735758Y128708D01* +X735792Y128816D01* +X735793Y128846D01* +X735800Y128874D01* +X735796Y128987D01* +X735799Y129100D01* +X735792Y129129D01* +X735791Y129158D01* +X735756Y129266D01* +X735727Y129375D01* +X735712Y129401D01* +X735703Y129429D01* +X735658Y129492D01* +X735582Y129620D01* +X735536Y129663D01* +X735508Y129702D01* +X733487Y131723D01* +X733487Y138677D01* +X733792Y138982D01* +X733828Y139029D01* +X733870Y139069D01* +X733913Y139142D01* +X733963Y139209D01* +X733984Y139264D01* +X734014Y139314D01* +X734035Y139396D01* +X734065Y139475D01* +X734069Y139533D01* +X734084Y139590D01* +X734081Y139674D01* +X734088Y139758D01* +X734077Y139816D01* +X734075Y139874D01* +X734049Y139954D01* +X734032Y140037D01* +X734005Y140089D01* +X733987Y140145D01* +X733947Y140201D01* +X733901Y140289D01* +X733833Y140362D01* +X733792Y140418D01* +X733487Y140723D01* +X733487Y147677D01* +X735461Y149651D01* +X735492Y149677D01* +X735542Y149706D01* +X735600Y149768D01* +X735664Y149822D01* +X735696Y149871D01* +X735736Y149914D01* +X735775Y149989D01* +X735822Y150059D01* +X735839Y150115D01* +X735866Y150167D01* +X735877Y150235D01* +X735907Y150330D01* +X735910Y150430D01* +X735921Y150498D01* +X735921Y154587D01* +X735909Y154674D01* +X735906Y154761D01* +X735889Y154814D01* +X735881Y154869D01* +X735846Y154949D01* +X735819Y155032D01* +X735791Y155071D01* +X735765Y155128D01* +X735669Y155241D01* +X735624Y155305D01* +X734187Y156742D01* +X734187Y163298D01* +X735942Y165053D01* +X741998Y165053D01* +X743502Y163549D01* +X743549Y163514D01* +X743589Y163471D01* +X743662Y163429D01* +X743729Y163378D01* +X743784Y163357D01* +X743834Y163328D01* +X743916Y163307D01* +X743995Y163277D01* +X744053Y163272D01* +X744110Y163257D01* +X744194Y163260D01* +X744278Y163253D01* +X744336Y163265D01* +X744394Y163266D01* +X744474Y163292D01* +X744557Y163309D01* +X744609Y163336D01* +X744665Y163354D01* +X744721Y163394D01* +X744809Y163440D01* +X744882Y163509D01* +X744938Y163549D01* +X746442Y165053D01* +X752498Y165053D01* +X753666Y163885D01* +X753713Y163850D01* +X753753Y163807D01* +X753826Y163765D01* +X753893Y163714D01* +X753948Y163693D01* +X753998Y163664D01* +X754080Y163643D01* +X754159Y163613D01* +X754217Y163608D01* +X754274Y163594D01* +X754358Y163596D01* +X754442Y163589D01* +X754499Y163601D01* +X754558Y163603D01* +X754638Y163629D01* +X754721Y163645D01* +X754773Y163672D01* +X754828Y163690D01* +X754884Y163730D01* +X754973Y163776D01* +X755046Y163845D01* +X755102Y163885D01* +X756166Y164949D01* +X758303Y165835D01* +X760617Y165835D01* +X762754Y164949D01* +X764389Y163314D01* +X765275Y161177D01* +X765275Y158863D01* +X764389Y156726D01* +X762754Y155091D01* +X760617Y154205D01* +X758303Y154205D01* +X756166Y155091D01* +X755102Y156155D01* +X755055Y156190D01* +X755015Y156233D01* +X754942Y156275D01* +X754874Y156326D01* +X754820Y156347D01* +X754769Y156376D01* +X754688Y156397D01* +X754609Y156427D01* +X754550Y156432D01* +X754494Y156446D01* +X754410Y156444D01* +X754326Y156451D01* +X754268Y156439D01* +X754210Y156437D01* +X754129Y156411D01* +X754047Y156395D01* +X753995Y156368D01* +X753939Y156350D01* +X753883Y156310D01* +X753794Y156264D01* +X753722Y156195D01* +X753666Y156155D01* +X752498Y154987D01* +X746442Y154987D01* +X744938Y156491D01* +X744891Y156526D01* +X744851Y156569D01* +X744778Y156611D01* +X744711Y156662D01* +X744656Y156683D01* +X744606Y156712D01* +X744524Y156733D01* +X744445Y156763D01* +X744387Y156768D01* +X744330Y156783D01* +X744246Y156780D01* +X744162Y156787D01* +X744104Y156775D01* +X744046Y156774D01* +X743966Y156748D01* +X743883Y156731D01* +X743831Y156704D01* +X743775Y156686D01* +X743719Y156646D01* +X743631Y156600D01* +X743558Y156531D01* +X743502Y156491D01* +X742316Y155305D01* +X742264Y155235D01* +X742204Y155172D01* +X742178Y155122D01* +X742145Y155078D01* +X742114Y154996D01* +X742074Y154918D01* +X742066Y154871D01* +X742044Y154812D01* +X742032Y154665D01* +X742019Y154587D01* +X742019Y149631D01* +X742031Y149545D01* +X742034Y149457D01* +X742051Y149405D01* +X742059Y149350D01* +X742094Y149270D01* +X742121Y149187D01* +X742149Y149148D01* +X742175Y149091D01* +X742271Y148977D01* +X742316Y148914D01* +X743553Y147677D01* +X743553Y140715D01* +X743557Y140686D01* +X743554Y140657D01* +X743577Y140546D01* +X743593Y140434D01* +X743605Y140407D01* +X743610Y140378D01* +X743663Y140278D01* +X743709Y140174D01* +X743728Y140152D01* +X743741Y140126D01* +X743819Y140044D01* +X743892Y139957D01* +X743917Y139941D01* +X743937Y139920D01* +X744035Y139863D01* +X744129Y139800D01* +X744157Y139791D01* +X744182Y139776D01* +X744292Y139748D01* +X744400Y139714D01* +X744429Y139713D01* +X744458Y139706D01* +X744571Y139710D01* +X744684Y139707D01* +X744713Y139714D01* +X744742Y139715D01* +X744850Y139750D01* +X744959Y139779D01* +X744985Y139794D01* +X745013Y139803D01* +X745076Y139848D01* +X745204Y139924D01* +X745247Y139969D01* +X745286Y139997D01* +X745357Y140069D01* +X761372Y140069D01* +X761430Y140077D01* +X761488Y140075D01* +X761570Y140097D01* +X761654Y140109D01* +X761707Y140132D01* +X761763Y140147D01* +X761836Y140190D01* +X761913Y140225D01* +X761958Y140263D01* +X762008Y140292D01* +X762066Y140354D01* +X762130Y140408D01* +X762162Y140457D01* +X762202Y140500D01* +X762241Y140575D01* +X762288Y140645D01* +X762305Y140701D01* +X762332Y140753D01* +X762343Y140821D01* +X762373Y140916D01* +X762376Y141016D01* +X762387Y141084D01* +X762387Y143427D01* +X765013Y146053D01* +X784827Y146053D01* +X787453Y143427D01* +X787453Y130613D01* +X784827Y127987D01* +X765013Y127987D01* +X762387Y130613D01* +X762387Y132956D01* +X762379Y133014D01* +X762381Y133072D01* +X762359Y133154D01* +X762347Y133238D01* +X762324Y133291D01* +X762309Y133347D01* +X762266Y133420D01* +X762231Y133497D01* +X762193Y133542D01* +X762164Y133592D01* +X762102Y133650D01* +X762048Y133714D01* +X761999Y133746D01* +X761956Y133786D01* +X761881Y133825D01* +X761811Y133872D01* +X761755Y133889D01* +X761703Y133916D01* +X761635Y133927D01* +X761540Y133957D01* +X761440Y133960D01* +X761372Y133971D01* +X758444Y133971D01* +X758386Y133963D01* +X758328Y133965D01* +X758246Y133943D01* +X758162Y133931D01* +X758109Y133908D01* +X758053Y133893D01* +X757980Y133850D01* +X757903Y133815D01* +X757858Y133777D01* +X757808Y133748D01* +X757750Y133686D01* +X757686Y133632D01* +X757654Y133583D01* +X757614Y133540D01* +X757575Y133465D01* +X757528Y133395D01* +X757511Y133339D01* +X757484Y133287D01* +X757473Y133219D01* +X757443Y133124D01* +X757440Y133024D01* +X757429Y132956D01* +X757429Y132275D01* +X757441Y132189D01* +X757444Y132101D01* +X757461Y132049D01* +X757469Y131994D01* +X757504Y131914D01* +X757531Y131831D01* +X757559Y131792D01* +X757585Y131735D01* +X757681Y131621D01* +X757726Y131558D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757922Y122638D01* +X757904Y122614D01* +X757881Y122595D01* +X757819Y122501D01* +X757751Y122411D01* +X757740Y122383D01* +X757724Y122359D01* +X757690Y122251D01* +X757649Y122145D01* +X757647Y122116D01* +X757638Y122088D01* +X757635Y121974D01* +X757626Y121862D01* +X757632Y121833D01* +X757631Y121804D01* +X757659Y121694D01* +X757682Y121583D01* +X757695Y121557D01* +X757703Y121529D01* +X757760Y121431D01* +X757813Y121331D01* +X757833Y121309D01* +X757848Y121284D01* +X757930Y121207D01* +X758008Y121125D01* +X758034Y121110D01* +X758055Y121090D01* +X758156Y121038D01* +X758254Y120981D01* +X758282Y120974D01* +X758308Y120960D01* +X758386Y120947D01* +X758529Y120911D01* +X758592Y120913D01* +X758639Y120905D01* +X781623Y120905D01* +X801625Y100903D01* +X801625Y58101D01* +X796101Y52577D01* +X784432Y52577D01* +X784420Y52586D01* +X784356Y52646D01* +X784307Y52672D01* +X784262Y52705D01* +X784181Y52736D01* +X784103Y52776D01* +X784055Y52784D01* +X783997Y52806D01* +X783849Y52818D01* +X783772Y52831D01* +X778287Y52831D01* +X776942Y54176D01* +X776918Y54194D01* +X776899Y54216D01* +X776805Y54279D01* +X776715Y54347D01* +X776687Y54357D01* +X776663Y54374D01* +X776555Y54408D01* +X776449Y54448D01* +X776420Y54450D01* +X776392Y54459D01* +X776278Y54462D01* +X776166Y54472D01* +X776137Y54466D01* +X776108Y54467D01* +X775998Y54438D01* +X775887Y54416D01* +X775861Y54402D01* +X775833Y54395D01* +X775735Y54337D01* +X775635Y54285D01* +X775613Y54265D01* +X775588Y54250D01* +X775511Y54167D01* +X775429Y54089D01* +X775414Y54064D01* +X775394Y54042D01* +X775342Y53941D01* +X775285Y53844D01* +X775278Y53815D01* +X775264Y53789D01* +X775251Y53712D01* +X775215Y53568D01* +X775217Y53506D01* +X775209Y53458D01* +X775209Y44704D01* +X775217Y44646D01* +X775215Y44588D01* +X775237Y44506D01* +X775249Y44422D01* +X775272Y44369D01* +X775287Y44313D01* +X775330Y44240D01* +X775365Y44163D01* +X775403Y44118D01* +X775432Y44068D01* +X775494Y44010D01* +X775548Y43946D01* +X775597Y43914D01* +X775640Y43874D01* +X775715Y43835D01* +X775785Y43788D01* +X775841Y43771D01* +X775893Y43744D01* +X775961Y43733D01* +X776056Y43703D01* +X776156Y43700D01* +X776224Y43689D01* +X850060Y43689D01* +X850174Y43705D01* +G37* +G36* +X423744Y142761D02* +X423744Y142761D01* +X423831Y142764D01* +X423884Y142781D01* +X423939Y142789D01* +X424019Y142824D01* +X424102Y142851D01* +X424141Y142879D01* +X424198Y142905D01* +X424311Y143001D01* +X424375Y143046D01* +X426062Y144733D01* +X432118Y144733D01* +X433622Y143229D01* +X433669Y143194D01* +X433709Y143151D01* +X433782Y143109D01* +X433849Y143058D01* +X433904Y143037D01* +X433954Y143008D01* +X434036Y142987D01* +X434115Y142957D01* +X434173Y142952D01* +X434230Y142937D01* +X434314Y142940D01* +X434398Y142933D01* +X434456Y142945D01* +X434514Y142946D01* +X434594Y142972D01* +X434677Y142989D01* +X434729Y143016D01* +X434785Y143034D01* +X434841Y143074D01* +X434929Y143120D01* +X435002Y143189D01* +X435058Y143229D01* +X436562Y144733D01* +X442618Y144733D01* +X444305Y143046D01* +X444375Y142994D01* +X444439Y142934D01* +X444488Y142908D01* +X444532Y142875D01* +X444614Y142844D01* +X444692Y142804D01* +X444739Y142796D01* +X444798Y142774D01* +X444945Y142762D01* +X445023Y142749D01* +X474687Y142749D01* +X474773Y142761D01* +X474861Y142764D01* +X474913Y142781D01* +X474968Y142789D01* +X475048Y142824D01* +X475131Y142851D01* +X475170Y142879D01* +X475228Y142905D01* +X475341Y143001D01* +X475405Y143046D01* +X484454Y152095D01* +X484506Y152165D01* +X484566Y152229D01* +X484592Y152279D01* +X484625Y152323D01* +X484656Y152404D01* +X484696Y152482D01* +X484704Y152530D01* +X484726Y152588D01* +X484738Y152736D01* +X484751Y152813D01* +X484751Y163199D01* +X484747Y163228D01* +X484750Y163257D01* +X484727Y163368D01* +X484711Y163480D01* +X484699Y163507D01* +X484694Y163536D01* +X484642Y163636D01* +X484595Y163740D01* +X484576Y163762D01* +X484563Y163788D01* +X484485Y163870D01* +X484412Y163957D01* +X484387Y163973D01* +X484367Y163994D01* +X484269Y164051D01* +X484175Y164114D01* +X484147Y164123D01* +X484122Y164138D01* +X484012Y164166D01* +X483904Y164200D01* +X483874Y164201D01* +X483846Y164208D01* +X483733Y164204D01* +X483620Y164207D01* +X483591Y164200D01* +X483562Y164199D01* +X483454Y164164D01* +X483345Y164135D01* +X483319Y164120D01* +X483291Y164111D01* +X483228Y164066D01* +X483100Y163990D01* +X483057Y163945D01* +X483018Y163917D01* +X477770Y158669D01* +X477718Y158599D01* +X477658Y158535D01* +X477632Y158485D01* +X477599Y158441D01* +X477568Y158360D01* +X477528Y158282D01* +X477520Y158234D01* +X477498Y158176D01* +X477486Y158028D01* +X477473Y157951D01* +X477473Y154622D01* +X475718Y152867D01* +X469162Y152867D01* +X467725Y154304D01* +X467655Y154356D01* +X467591Y154416D01* +X467542Y154442D01* +X467498Y154475D01* +X467416Y154506D01* +X467338Y154546D01* +X467291Y154554D01* +X467232Y154576D01* +X467085Y154588D01* +X467007Y154601D01* +X446183Y154601D01* +X446097Y154589D01* +X446009Y154586D01* +X445957Y154569D01* +X445902Y154561D01* +X445822Y154526D01* +X445739Y154499D01* +X445700Y154471D01* +X445642Y154445D01* +X445626Y154431D01* +X443067Y154431D01* +X440984Y156514D01* +X440984Y156515D01* +X437598Y159900D01* +X437598Y159901D01* +X427569Y169930D01* +X427499Y169982D01* +X427435Y170042D01* +X427386Y170068D01* +X427341Y170101D01* +X427260Y170132D01* +X427182Y170172D01* +X427134Y170180D01* +X427076Y170202D01* +X426928Y170214D01* +X426851Y170227D01* +X426062Y170227D01* +X424502Y171787D01* +X424432Y171839D01* +X424368Y171899D01* +X424319Y171925D01* +X424275Y171958D01* +X424193Y171989D01* +X424115Y172029D01* +X424068Y172037D01* +X424009Y172059D01* +X423862Y172071D01* +X423784Y172084D01* +X422865Y172084D01* +X418294Y176655D01* +X418294Y180114D01* +X418282Y180201D01* +X418279Y180288D01* +X418262Y180341D01* +X418254Y180396D01* +X418219Y180476D01* +X418192Y180559D01* +X418164Y180598D01* +X418138Y180655D01* +X418042Y180768D01* +X417997Y180832D01* +X416687Y182142D01* +X416687Y188976D01* +X416679Y189034D01* +X416681Y189092D01* +X416659Y189174D01* +X416647Y189258D01* +X416624Y189311D01* +X416609Y189367D01* +X416566Y189440D01* +X416531Y189517D01* +X416493Y189562D01* +X416464Y189612D01* +X416402Y189670D01* +X416348Y189734D01* +X416299Y189766D01* +X416256Y189806D01* +X416181Y189845D01* +X416111Y189892D01* +X416055Y189909D01* +X416003Y189936D01* +X415935Y189947D01* +X415840Y189977D01* +X415740Y189980D01* +X415672Y189991D01* +X353243Y189991D01* +X353156Y189979D01* +X353069Y189976D01* +X353016Y189959D01* +X352961Y189951D01* +X352881Y189916D01* +X352798Y189889D01* +X352759Y189861D01* +X352702Y189835D01* +X352589Y189739D01* +X352525Y189694D01* +X351258Y188427D01* +X344702Y188427D01* +X344147Y188982D01* +X343265Y189864D01* +X343195Y189916D01* +X343132Y189976D01* +X343082Y190002D01* +X343038Y190035D01* +X342956Y190066D01* +X342878Y190106D01* +X342831Y190114D01* +X342772Y190136D01* +X342625Y190148D01* +X342547Y190161D01* +X331883Y190161D01* +X331797Y190149D01* +X331709Y190146D01* +X331657Y190129D01* +X331602Y190121D01* +X331522Y190086D01* +X331439Y190059D01* +X331400Y190031D01* +X331342Y190005D01* +X331229Y189909D01* +X331165Y189864D01* +X325713Y184411D01* +X324974Y184411D01* +X324945Y184407D01* +X324916Y184409D01* +X324805Y184387D01* +X324693Y184371D01* +X324666Y184359D01* +X324637Y184354D01* +X324537Y184301D01* +X324434Y184255D01* +X324411Y184236D01* +X324385Y184223D01* +X324303Y184145D01* +X324217Y184071D01* +X324200Y184047D01* +X324179Y184027D01* +X324122Y183929D01* +X324059Y183835D01* +X324050Y183807D01* +X324035Y183782D01* +X324007Y183672D01* +X323973Y183564D01* +X323972Y183534D01* +X323965Y183506D01* +X323969Y183393D01* +X323966Y183280D01* +X323973Y183251D01* +X323974Y183222D01* +X324009Y183114D01* +X324038Y183005D01* +X324053Y182979D01* +X324062Y182951D01* +X324107Y182888D01* +X324183Y182760D01* +X324229Y182717D01* +X324257Y182678D01* +X326749Y180185D01* +X328412Y176171D01* +X328412Y171825D01* +X326749Y167811D01* +X323677Y164738D01* +X319662Y163075D01* +X315317Y163075D01* +X311302Y164738D01* +X308230Y167811D01* +X306567Y171825D01* +X306567Y176171D01* +X308230Y180185D01* +X310723Y182678D01* +X310740Y182701D01* +X310763Y182720D01* +X310825Y182815D01* +X310894Y182905D01* +X310904Y182933D01* +X310920Y182957D01* +X310954Y183065D01* +X310995Y183171D01* +X310997Y183200D01* +X311006Y183228D01* +X311009Y183341D01* +X311018Y183454D01* +X311013Y183483D01* +X311013Y183512D01* +X310985Y183622D01* +X310962Y183733D01* +X310949Y183759D01* +X310942Y183787D01* +X310884Y183885D01* +X310831Y183985D01* +X310811Y184006D01* +X310796Y184032D01* +X310714Y184109D01* +X310636Y184191D01* +X310610Y184206D01* +X310589Y184226D01* +X310488Y184278D01* +X310390Y184335D01* +X310362Y184342D01* +X310336Y184356D01* +X310258Y184369D01* +X310115Y184405D01* +X310052Y184403D01* +X310005Y184411D01* +X308742Y184411D01* +X304745Y188408D01* +X304722Y188425D01* +X304703Y188448D01* +X304609Y188510D01* +X304518Y188578D01* +X304491Y188589D01* +X304466Y188605D01* +X304358Y188639D01* +X304253Y188680D01* +X304223Y188682D01* +X304195Y188691D01* +X304082Y188694D01* +X303969Y188703D01* +X303941Y188697D01* +X303911Y188698D01* +X303802Y188670D01* +X303691Y188647D01* +X303664Y188634D01* +X303636Y188626D01* +X303539Y188569D01* +X303438Y188516D01* +X303417Y188496D01* +X303392Y188481D01* +X303314Y188399D01* +X303232Y188321D01* +X303217Y188295D01* +X303197Y188274D01* +X303146Y188173D01* +X303088Y188075D01* +X303081Y188047D01* +X303068Y188021D01* +X303055Y187943D01* +X303018Y187800D01* +X303020Y187737D01* +X303012Y187690D01* +X303012Y184525D01* +X301349Y180511D01* +X298277Y177438D01* +X294262Y175775D01* +X289917Y175775D01* +X285902Y177438D01* +X282830Y180511D01* +X281167Y184525D01* +X281167Y188871D01* +X282830Y192885D01* +X285902Y195958D01* +X289917Y197621D01* +X293081Y197621D01* +X293110Y197625D01* +X293140Y197622D01* +X293251Y197645D01* +X293363Y197660D01* +X293390Y197672D01* +X293418Y197678D01* +X293519Y197730D01* +X293622Y197777D01* +X293645Y197796D01* +X293671Y197809D01* +X293753Y197887D01* +X293839Y197960D01* +X293856Y197985D01* +X293877Y198005D01* +X293934Y198103D01* +X293997Y198197D01* +X294006Y198225D01* +X294021Y198250D01* +X294048Y198360D01* +X294083Y198468D01* +X294083Y198497D01* +X294091Y198526D01* +X294087Y198639D01* +X294090Y198752D01* +X294083Y198781D01* +X294082Y198810D01* +X294047Y198918D01* +X294018Y199027D01* +X294003Y199052D01* +X293994Y199080D01* +X293948Y199144D01* +X293873Y199272D01* +X293827Y199315D01* +X293799Y199354D01* +X292275Y200878D01* +X292205Y200930D01* +X292141Y200990D01* +X292092Y201015D01* +X292048Y201049D01* +X291966Y201080D01* +X291888Y201120D01* +X291841Y201128D01* +X291782Y201150D01* +X291635Y201162D01* +X291557Y201175D01* +X289917Y201175D01* +X285902Y202838D01* +X282830Y205911D01* +X281789Y208422D01* +X281788Y208424D01* +X281788Y208425D01* +X281718Y208543D01* +X281645Y208667D01* +X281644Y208668D01* +X281643Y208670D01* +X281539Y208767D01* +X281438Y208862D01* +X281437Y208863D01* +X281436Y208864D01* +X281310Y208929D01* +X281185Y208993D01* +X281184Y208993D01* +X281182Y208994D01* +X281167Y208996D01* +X280906Y209048D01* +X280876Y209045D01* +X280851Y209049D01* +X246979Y209049D01* +X246892Y209037D01* +X246805Y209034D01* +X246752Y209017D01* +X246697Y209009D01* +X246618Y208974D01* +X246534Y208947D01* +X246495Y208919D01* +X246438Y208893D01* +X246325Y208797D01* +X246261Y208752D01* +X206340Y168830D01* +X206287Y168761D01* +X206227Y168697D01* +X206202Y168647D01* +X206169Y168603D01* +X206138Y168522D01* +X206098Y168444D01* +X206090Y168396D01* +X206068Y168338D01* +X206055Y168190D01* +X206042Y168113D01* +X206042Y136712D01* +X204906Y135576D01* +X204905Y135575D01* +X204904Y135574D01* +X204815Y135456D01* +X204735Y135349D01* +X204735Y135348D01* +X204734Y135346D01* +X204683Y135213D01* +X204634Y135083D01* +X204634Y135082D01* +X204633Y135080D01* +X204622Y134936D01* +X204610Y134800D01* +X204611Y134799D01* +X204611Y134797D01* +X204614Y134781D01* +X204666Y134521D01* +X204680Y134494D01* +X204686Y134470D01* +X205726Y131958D01* +X205726Y127613D01* +X204064Y123598D01* +X200991Y120525D01* +X196976Y118863D01* +X192631Y118863D01* +X188944Y120390D01* +X188861Y120411D01* +X188781Y120442D01* +X188724Y120447D01* +X188669Y120461D01* +X188583Y120458D01* +X188497Y120465D01* +X188441Y120454D01* +X188385Y120453D01* +X188303Y120426D01* +X188219Y120409D01* +X188168Y120383D01* +X188114Y120366D01* +X188042Y120318D01* +X187966Y120278D01* +X187925Y120239D01* +X187878Y120208D01* +X187822Y120142D01* +X187760Y120083D01* +X187731Y120034D01* +X187695Y119990D01* +X187660Y119911D01* +X187616Y119837D01* +X187602Y119782D01* +X187579Y119730D01* +X187567Y119645D01* +X187546Y119562D01* +X187548Y119505D01* +X187540Y119449D01* +X187553Y119364D01* +X187555Y119278D01* +X187573Y119224D01* +X187581Y119167D01* +X187616Y119089D01* +X187643Y119007D01* +X187672Y118967D01* +X187698Y118908D01* +X187792Y118798D01* +X187838Y118734D01* +X204676Y101896D01* +X204745Y101843D01* +X204809Y101784D01* +X204859Y101758D01* +X204903Y101725D01* +X204984Y101694D01* +X205062Y101654D01* +X205110Y101646D01* +X205168Y101624D01* +X205316Y101612D01* +X205393Y101599D01* +X247784Y101599D01* +X247813Y101603D01* +X247842Y101600D01* +X247954Y101623D01* +X248066Y101638D01* +X248092Y101650D01* +X248121Y101656D01* +X248222Y101708D01* +X248325Y101755D01* +X248347Y101774D01* +X248374Y101787D01* +X248456Y101865D01* +X248542Y101938D01* +X248558Y101963D01* +X248580Y101983D01* +X248637Y102081D01* +X248700Y102175D01* +X248709Y102203D01* +X248723Y102228D01* +X248751Y102338D01* +X248785Y102446D01* +X248786Y102475D01* +X248793Y102504D01* +X248790Y102617D01* +X248793Y102730D01* +X248785Y102759D01* +X248784Y102788D01* +X248750Y102896D01* +X248721Y103005D01* +X248706Y103030D01* +X248697Y103058D01* +X248651Y103122D01* +X248576Y103250D01* +X248530Y103293D01* +X248502Y103332D01* +X247606Y104227D01* +X246390Y105812D01* +X245391Y107543D01* +X244627Y109388D01* +X244110Y111318D01* +X243985Y112267D01* +X258073Y112267D01* +X258131Y112275D01* +X258190Y112273D01* +X258271Y112295D01* +X258355Y112306D01* +X258408Y112330D01* +X258465Y112345D01* +X258537Y112388D01* +X258614Y112423D01* +X258659Y112461D01* +X258709Y112490D01* +X258767Y112552D01* +X258831Y112606D01* +X258864Y112655D01* +X258904Y112698D01* +X258942Y112773D01* +X258989Y112843D01* +X259007Y112899D01* +X259033Y112951D01* +X259045Y113019D01* +X259075Y113114D01* +X259077Y113214D01* +X259089Y113282D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y113282D01* +X259099Y113224D01* +X259097Y113166D01* +X259118Y113084D01* +X259130Y113000D01* +X259154Y112947D01* +X259169Y112891D01* +X259212Y112818D01* +X259247Y112741D01* +X259284Y112696D01* +X259314Y112646D01* +X259376Y112588D01* +X259430Y112524D01* +X259479Y112492D01* +X259522Y112452D01* +X259597Y112413D01* +X259667Y112366D01* +X259723Y112349D01* +X259775Y112322D01* +X259843Y112311D01* +X259938Y112281D01* +X260038Y112278D01* +X260106Y112267D01* +X274194Y112267D01* +X274070Y111318D01* +X273552Y109388D01* +X272788Y107543D01* +X271789Y105812D01* +X270573Y104227D01* +X269677Y103332D01* +X269659Y103308D01* +X269637Y103289D01* +X269574Y103195D01* +X269506Y103105D01* +X269496Y103077D01* +X269479Y103053D01* +X269445Y102945D01* +X269405Y102839D01* +X269403Y102810D01* +X269394Y102782D01* +X269391Y102668D01* +X269381Y102556D01* +X269387Y102527D01* +X269386Y102498D01* +X269415Y102388D01* +X269437Y102277D01* +X269451Y102251D01* +X269458Y102222D01* +X269516Y102125D01* +X269568Y102025D01* +X269589Y102003D01* +X269603Y101978D01* +X269686Y101901D01* +X269764Y101818D01* +X269789Y101804D01* +X269811Y101784D01* +X269912Y101732D01* +X270009Y101675D01* +X270038Y101668D01* +X270064Y101654D01* +X270141Y101641D01* +X270285Y101605D01* +X270347Y101607D01* +X270395Y101599D01* +X272127Y101599D01* +X272213Y101611D01* +X272301Y101614D01* +X272353Y101631D01* +X272408Y101638D01* +X272488Y101674D01* +X272571Y101701D01* +X272610Y101729D01* +X272667Y101755D01* +X272781Y101851D01* +X272844Y101896D01* +X289610Y118662D01* +X289611Y118662D01* +X291294Y120345D01* +X291294Y120346D01* +X293377Y122429D01* +X361707Y122429D01* +X361793Y122441D01* +X361881Y122444D01* +X361933Y122461D01* +X361988Y122469D01* +X362068Y122504D01* +X362151Y122531D01* +X362190Y122559D01* +X362248Y122585D01* +X362361Y122681D01* +X362425Y122726D01* +X382447Y142749D01* +X423657Y142749D01* +X423744Y142761D01* +G37* +G36* +X919276Y169903D02* +X919276Y169903D01* +X919305Y169900D01* +X919416Y169923D01* +X919528Y169939D01* +X919555Y169951D01* +X919584Y169956D01* +X919685Y170009D01* +X919788Y170055D01* +X919810Y170074D01* +X919836Y170087D01* +X919918Y170165D01* +X920005Y170238D01* +X920021Y170263D01* +X920042Y170283D01* +X920100Y170381D01* +X920162Y170475D01* +X920171Y170503D01* +X920186Y170528D01* +X920214Y170638D01* +X920248Y170746D01* +X920249Y170776D01* +X920256Y170804D01* +X920253Y170917D01* +X920256Y171030D01* +X920248Y171059D01* +X920247Y171088D01* +X920212Y171196D01* +X920184Y171305D01* +X920169Y171331D01* +X920160Y171359D01* +X920114Y171423D01* +X920038Y171550D01* +X919993Y171593D01* +X919965Y171632D01* +X919631Y171966D01* +X918745Y174103D01* +X918745Y176417D01* +X919631Y178554D01* +X921266Y180189D01* +X923403Y181075D01* +X925717Y181075D01* +X927854Y180189D01* +X928338Y179705D01* +X928385Y179670D01* +X928425Y179628D01* +X928498Y179585D01* +X928565Y179534D01* +X928620Y179514D01* +X928670Y179484D01* +X928752Y179463D01* +X928831Y179433D01* +X928889Y179428D01* +X928946Y179414D01* +X929030Y179417D01* +X929114Y179410D01* +X929171Y179421D01* +X929230Y179423D01* +X929310Y179449D01* +X929393Y179465D01* +X929445Y179492D01* +X929500Y179510D01* +X929557Y179550D01* +X929645Y179596D01* +X929718Y179665D01* +X929774Y179705D01* +X974724Y224655D01* +X974776Y224725D01* +X974836Y224789D01* +X974862Y224839D01* +X974895Y224883D01* +X974926Y224964D01* +X974966Y225042D01* +X974974Y225090D01* +X974996Y225148D01* +X975008Y225296D01* +X975021Y225373D01* +X975021Y248567D01* +X975009Y248654D01* +X975006Y248741D01* +X974989Y248794D01* +X974981Y248849D01* +X974946Y248929D01* +X974919Y249012D01* +X974891Y249051D01* +X974865Y249108D01* +X974769Y249221D01* +X974724Y249285D01* +X973287Y250722D01* +X973287Y257278D01* +X975042Y259033D01* +X981098Y259033D01* +X982853Y257278D01* +X982853Y257252D01* +X982861Y257194D01* +X982859Y257136D01* +X982881Y257054D01* +X982893Y256970D01* +X982916Y256917D01* +X982931Y256861D01* +X982974Y256788D01* +X983009Y256711D01* +X983047Y256666D01* +X983076Y256616D01* +X983138Y256558D01* +X983192Y256494D01* +X983241Y256462D01* +X983284Y256422D01* +X983359Y256383D01* +X983429Y256336D01* +X983485Y256319D01* +X983537Y256292D01* +X983605Y256281D01* +X983700Y256251D01* +X983800Y256248D01* +X983868Y256237D01* +X1039872Y256237D01* +X1039930Y256245D01* +X1039988Y256243D01* +X1040070Y256265D01* +X1040154Y256277D01* +X1040207Y256300D01* +X1040263Y256315D01* +X1040336Y256358D01* +X1040413Y256393D01* +X1040458Y256431D01* +X1040508Y256460D01* +X1040566Y256522D01* +X1040630Y256576D01* +X1040662Y256625D01* +X1040702Y256668D01* +X1040741Y256743D01* +X1040788Y256813D01* +X1040805Y256869D01* +X1040832Y256921D01* +X1040843Y256989D01* +X1040873Y257084D01* +X1040876Y257184D01* +X1040887Y257252D01* +X1040887Y257679D01* +X1042100Y258892D01* +X1042116Y258914D01* +X1042136Y258930D01* +X1042152Y258955D01* +X1042178Y258979D01* +X1042220Y259052D01* +X1042271Y259119D01* +X1042283Y259152D01* +X1042293Y259167D01* +X1042300Y259188D01* +X1042321Y259224D01* +X1042342Y259306D01* +X1042372Y259385D01* +X1042376Y259427D01* +X1042379Y259438D01* +X1042379Y259453D01* +X1042391Y259500D01* +X1042389Y259584D01* +X1042396Y259668D01* +X1042386Y259716D01* +X1042386Y259722D01* +X1042384Y259731D01* +X1042382Y259784D01* +X1042356Y259864D01* +X1042340Y259947D01* +X1042315Y259994D01* +X1042315Y259997D01* +X1042312Y260001D01* +X1042295Y260055D01* +X1042255Y260111D01* +X1042209Y260199D01* +X1042170Y260240D01* +X1042169Y260242D01* +X1042164Y260246D01* +X1042140Y260272D01* +X1042100Y260328D01* +X1040887Y261541D01* +X1040887Y270379D01* +X1042100Y271592D01* +X1042135Y271639D01* +X1042178Y271679D01* +X1042220Y271752D01* +X1042271Y271819D01* +X1042292Y271874D01* +X1042321Y271924D01* +X1042342Y272006D01* +X1042372Y272085D01* +X1042377Y272143D01* +X1042391Y272200D01* +X1042389Y272284D01* +X1042396Y272368D01* +X1042384Y272426D01* +X1042382Y272484D01* +X1042356Y272564D01* +X1042340Y272647D01* +X1042313Y272699D01* +X1042295Y272755D01* +X1042255Y272811D01* +X1042209Y272899D01* +X1042140Y272972D01* +X1042100Y273028D01* +X1040887Y274241D01* +X1040887Y274524D01* +X1040879Y274582D01* +X1040881Y274640D01* +X1040859Y274722D01* +X1040847Y274806D01* +X1040824Y274859D01* +X1040809Y274915D01* +X1040766Y274988D01* +X1040731Y275065D01* +X1040693Y275110D01* +X1040664Y275160D01* +X1040602Y275218D01* +X1040548Y275282D01* +X1040499Y275314D01* +X1040456Y275354D01* +X1040381Y275393D01* +X1040311Y275440D01* +X1040255Y275457D01* +X1040203Y275484D01* +X1040135Y275495D01* +X1040040Y275525D01* +X1039940Y275528D01* +X1039872Y275539D01* +X1036354Y275539D01* +X1036267Y275527D01* +X1036180Y275524D01* +X1036127Y275507D01* +X1036072Y275499D01* +X1035993Y275464D01* +X1035909Y275437D01* +X1035870Y275409D01* +X1035813Y275383D01* +X1035700Y275287D01* +X1035636Y275242D01* +X1031495Y271101D01* +X1011273Y271101D01* +X1011186Y271089D01* +X1011099Y271086D01* +X1011046Y271069D01* +X1010991Y271061D01* +X1010911Y271026D01* +X1010828Y270999D01* +X1010789Y270971D01* +X1010732Y270945D01* +X1010619Y270849D01* +X1010555Y270804D01* +X1009118Y269367D01* +X1002562Y269367D01* +X1001125Y270804D01* +X1001055Y270856D01* +X1000991Y270916D01* +X1000942Y270942D01* +X1000898Y270975D01* +X1000816Y271006D01* +X1000738Y271046D01* +X1000691Y271054D01* +X1000632Y271076D01* +X1000485Y271088D01* +X1000407Y271101D01* +X998573Y271101D01* +X998486Y271089D01* +X998399Y271086D01* +X998346Y271069D01* +X998291Y271061D01* +X998211Y271026D01* +X998128Y270999D01* +X998089Y270971D01* +X998032Y270945D01* +X997919Y270849D01* +X997855Y270804D01* +X996418Y269367D01* +X989862Y269367D01* +X988425Y270804D01* +X988355Y270856D01* +X988292Y270916D01* +X988242Y270942D01* +X988198Y270975D01* +X988116Y271006D01* +X988038Y271046D01* +X987991Y271054D01* +X987932Y271076D01* +X987785Y271088D01* +X987707Y271101D01* +X895464Y271101D01* +X895406Y271093D01* +X895348Y271095D01* +X895266Y271073D01* +X895182Y271061D01* +X895129Y271038D01* +X895073Y271023D01* +X895000Y270980D01* +X894923Y270945D01* +X894878Y270907D01* +X894828Y270878D01* +X894770Y270816D01* +X894706Y270762D01* +X894674Y270713D01* +X894634Y270670D01* +X894595Y270595D01* +X894548Y270525D01* +X894531Y270469D01* +X894504Y270417D01* +X894493Y270349D01* +X894463Y270254D01* +X894460Y270154D01* +X894449Y270086D01* +X894449Y219508D01* +X894457Y219450D01* +X894455Y219392D01* +X894477Y219310D01* +X894489Y219226D01* +X894512Y219173D01* +X894527Y219117D01* +X894570Y219044D01* +X894605Y218967D01* +X894643Y218922D01* +X894672Y218872D01* +X894734Y218814D01* +X894788Y218750D01* +X894837Y218718D01* +X894880Y218678D01* +X894955Y218639D01* +X895025Y218592D01* +X895081Y218575D01* +X895133Y218548D01* +X895201Y218537D01* +X895296Y218507D01* +X895396Y218504D01* +X895464Y218493D01* +X897807Y218493D01* +X900433Y215867D01* +X900433Y196053D01* +X897807Y193427D01* +X884993Y193427D01* +X882367Y196053D01* +X882367Y201896D01* +X882359Y201954D01* +X882361Y202012D01* +X882339Y202094D01* +X882327Y202178D01* +X882304Y202231D01* +X882289Y202287D01* +X882246Y202360D01* +X882211Y202437D01* +X882173Y202482D01* +X882144Y202532D01* +X882082Y202590D01* +X882028Y202654D01* +X881979Y202686D01* +X881936Y202726D01* +X881861Y202765D01* +X881791Y202812D01* +X881735Y202829D01* +X881683Y202856D01* +X881615Y202867D01* +X881520Y202897D01* +X881420Y202900D01* +X881352Y202911D01* +X873478Y202911D01* +X873449Y202907D01* +X873419Y202910D01* +X873308Y202887D01* +X873196Y202871D01* +X873169Y202859D01* +X873141Y202854D01* +X873040Y202802D01* +X872937Y202755D01* +X872914Y202736D01* +X872888Y202723D01* +X872806Y202645D01* +X872720Y202572D01* +X872703Y202547D01* +X872682Y202527D01* +X872625Y202429D01* +X872562Y202335D01* +X872553Y202307D01* +X872538Y202282D01* +X872511Y202172D01* +X872476Y202064D01* +X872476Y202034D01* +X872468Y202006D01* +X872472Y201893D01* +X872469Y201780D01* +X872476Y201751D01* +X872477Y201722D01* +X872512Y201614D01* +X872541Y201505D01* +X872556Y201479D01* +X872565Y201451D01* +X872610Y201388D01* +X872686Y201260D01* +X872732Y201217D01* +X872760Y201178D01* +X902492Y171446D01* +X902560Y171394D01* +X902623Y171335D01* +X902674Y171309D01* +X902719Y171275D01* +X902799Y171245D01* +X902876Y171205D01* +X902931Y171194D01* +X902985Y171174D01* +X903070Y171167D01* +X903155Y171150D01* +X903211Y171155D01* +X903268Y171150D01* +X903352Y171167D01* +X903438Y171175D01* +X903491Y171195D01* +X903547Y171206D01* +X903623Y171246D01* +X903703Y171277D01* +X903749Y171311D01* +X903799Y171337D01* +X903861Y171396D01* +X903930Y171448D01* +X903964Y171494D01* +X904005Y171533D01* +X904049Y171607D01* +X904100Y171676D01* +X904120Y171729D01* +X904149Y171778D01* +X904170Y171861D01* +X904200Y171942D01* +X904205Y171999D01* +X904219Y172054D01* +X904216Y172139D01* +X904223Y172225D01* +X904212Y172274D01* +X904210Y172338D01* +X904165Y172476D01* +X904148Y172552D01* +X903505Y174103D01* +X903505Y176417D01* +X904391Y178554D01* +X906026Y180189D01* +X908163Y181075D01* +X910477Y181075D01* +X912614Y180189D01* +X914249Y178554D01* +X915135Y176417D01* +X915135Y174103D01* +X914977Y173722D01* +X914976Y173721D01* +X914976Y173719D01* +X914940Y173580D01* +X914906Y173447D01* +X914906Y173445D01* +X914905Y173444D01* +X914910Y173299D01* +X914914Y173163D01* +X914914Y173161D01* +X914914Y173159D01* +X914958Y173025D01* +X915001Y172892D01* +X915001Y172890D01* +X915002Y172889D01* +X915011Y172877D01* +X915159Y172656D01* +X915182Y172636D01* +X915197Y172616D01* +X917616Y170196D01* +X917686Y170144D01* +X917750Y170084D01* +X917799Y170058D01* +X917844Y170025D01* +X917925Y169994D01* +X918003Y169954D01* +X918051Y169946D01* +X918109Y169924D01* +X918257Y169912D01* +X918334Y169899D01* +X919247Y169899D01* +X919276Y169903D01* +G37* +G36* +X702118Y127973D02* +X702118Y127973D01* +X702148Y127970D01* +X702259Y127993D01* +X702371Y128009D01* +X702398Y128021D01* +X702426Y128026D01* +X702527Y128079D01* +X702630Y128125D01* +X702653Y128144D01* +X702679Y128157D01* +X702761Y128235D01* +X702847Y128308D01* +X702864Y128333D01* +X702885Y128353D01* +X702942Y128451D01* +X703005Y128545D01* +X703014Y128573D01* +X703029Y128598D01* +X703056Y128708D01* +X703091Y128816D01* +X703091Y128846D01* +X703099Y128874D01* +X703095Y128987D01* +X703098Y129100D01* +X703091Y129129D01* +X703090Y129158D01* +X703055Y129266D01* +X703026Y129375D01* +X703011Y129401D01* +X703002Y129429D01* +X702957Y129492D01* +X702881Y129620D01* +X702835Y129663D01* +X702807Y129702D01* +X701087Y131422D01* +X701087Y137478D01* +X702591Y138982D01* +X702626Y139029D01* +X702669Y139069D01* +X702711Y139142D01* +X702762Y139209D01* +X702783Y139264D01* +X702812Y139314D01* +X702833Y139396D01* +X702863Y139475D01* +X702868Y139533D01* +X702883Y139590D01* +X702880Y139674D01* +X702887Y139758D01* +X702875Y139816D01* +X702874Y139874D01* +X702848Y139954D01* +X702831Y140037D01* +X702804Y140089D01* +X702786Y140145D01* +X702746Y140201D01* +X702700Y140289D01* +X702631Y140362D01* +X702591Y140418D01* +X701087Y141922D01* +X701087Y147978D01* +X702774Y149665D01* +X702826Y149735D01* +X702886Y149799D01* +X702912Y149848D01* +X702945Y149892D01* +X702976Y149974D01* +X703016Y150052D01* +X703024Y150099D01* +X703046Y150158D01* +X703058Y150305D01* +X703071Y150383D01* +X703071Y151495D01* +X703071Y151496D01* +X703071Y151498D01* +X703052Y151632D01* +X703031Y151776D01* +X703031Y151778D01* +X703031Y151779D01* +X702974Y151905D01* +X702915Y152036D01* +X702914Y152037D01* +X702913Y152038D01* +X702822Y152145D01* +X702732Y152253D01* +X702730Y152254D01* +X702729Y152255D01* +X702716Y152263D01* +X702495Y152410D01* +X702466Y152420D01* +X702445Y152433D01* +X700835Y153099D01* +X699199Y154735D01* +X698314Y156872D01* +X698314Y159185D01* +X698424Y159451D01* +X698446Y159534D01* +X698476Y159614D01* +X698481Y159671D01* +X698495Y159726D01* +X698493Y159812D01* +X698500Y159898D01* +X698489Y159954D01* +X698487Y160010D01* +X698461Y160092D01* +X698444Y160177D01* +X698418Y160227D01* +X698400Y160281D01* +X698353Y160352D01* +X698313Y160429D01* +X698274Y160470D01* +X698242Y160517D01* +X698176Y160573D01* +X698117Y160635D01* +X698068Y160664D01* +X698024Y160700D01* +X697946Y160735D01* +X697872Y160779D01* +X697817Y160793D01* +X697765Y160816D01* +X697680Y160828D01* +X697596Y160849D01* +X697539Y160847D01* +X697483Y160855D01* +X697398Y160842D01* +X697312Y160840D01* +X697258Y160822D01* +X697202Y160814D01* +X697123Y160779D01* +X697042Y160752D01* +X697001Y160724D01* +X696943Y160697D01* +X696832Y160603D01* +X696768Y160557D01* +X696698Y160487D01* +X690142Y160487D01* +X688705Y161924D01* +X688635Y161976D01* +X688572Y162036D01* +X688522Y162062D01* +X688478Y162095D01* +X688396Y162126D01* +X688318Y162166D01* +X688271Y162174D01* +X688212Y162196D01* +X688065Y162208D01* +X687987Y162221D01* +X683613Y162221D01* +X683526Y162209D01* +X683439Y162206D01* +X683386Y162189D01* +X683331Y162181D01* +X683251Y162146D01* +X683168Y162119D01* +X683129Y162091D01* +X683072Y162065D01* +X682959Y161969D01* +X682895Y161924D01* +X681709Y160738D01* +X681674Y160691D01* +X681631Y160651D01* +X681589Y160578D01* +X681538Y160511D01* +X681517Y160456D01* +X681488Y160406D01* +X681467Y160324D01* +X681437Y160245D01* +X681432Y160187D01* +X681417Y160130D01* +X681420Y160046D01* +X681413Y159962D01* +X681425Y159904D01* +X681426Y159846D01* +X681452Y159766D01* +X681469Y159683D01* +X681496Y159631D01* +X681514Y159575D01* +X681554Y159519D01* +X681600Y159431D01* +X681669Y159358D01* +X681709Y159302D01* +X683213Y157798D01* +X683213Y151742D01* +X681458Y149987D01* +X674902Y149987D01* +X673827Y151062D01* +X673780Y151097D01* +X673740Y151140D01* +X673667Y151182D01* +X673600Y151233D01* +X673545Y151254D01* +X673495Y151283D01* +X673413Y151304D01* +X673334Y151334D01* +X673276Y151339D01* +X673219Y151353D01* +X673135Y151351D01* +X673051Y151358D01* +X672994Y151346D01* +X672935Y151344D01* +X672855Y151318D01* +X672772Y151302D01* +X672720Y151275D01* +X672665Y151257D01* +X672608Y151217D01* +X672520Y151171D01* +X672448Y151102D01* +X672391Y151062D01* +X671314Y149985D01* +X669177Y149099D01* +X666863Y149099D01* +X664726Y149985D01* +X663091Y151620D01* +X662205Y153757D01* +X662205Y156071D01* +X663091Y158208D01* +X664726Y159843D01* +X666863Y160729D01* +X669177Y160729D01* +X671314Y159843D01* +X672535Y158622D01* +X672582Y158587D01* +X672622Y158544D01* +X672695Y158502D01* +X672762Y158451D01* +X672817Y158430D01* +X672868Y158401D01* +X672949Y158380D01* +X673028Y158350D01* +X673086Y158345D01* +X673143Y158331D01* +X673227Y158333D01* +X673311Y158326D01* +X673369Y158338D01* +X673427Y158340D01* +X673507Y158366D01* +X673590Y158382D01* +X673642Y158409D01* +X673698Y158427D01* +X673754Y158467D01* +X673842Y158513D01* +X673915Y158582D01* +X673971Y158622D01* +X674651Y159302D01* +X674686Y159349D01* +X674729Y159389D01* +X674771Y159462D01* +X674822Y159529D01* +X674843Y159584D01* +X674872Y159634D01* +X674893Y159716D01* +X674923Y159795D01* +X674928Y159853D01* +X674943Y159910D01* +X674940Y159994D01* +X674947Y160078D01* +X674935Y160136D01* +X674934Y160194D01* +X674908Y160274D01* +X674891Y160357D01* +X674864Y160409D01* +X674846Y160465D01* +X674806Y160521D01* +X674760Y160609D01* +X674691Y160682D01* +X674651Y160738D01* +X673147Y162242D01* +X673147Y168298D01* +X674834Y169985D01* +X674886Y170055D01* +X674946Y170119D01* +X674972Y170168D01* +X675005Y170212D01* +X675036Y170294D01* +X675076Y170372D01* +X675084Y170419D01* +X675106Y170478D01* +X675118Y170625D01* +X675131Y170703D01* +X675131Y172972D01* +X675123Y173030D01* +X675125Y173088D01* +X675103Y173170D01* +X675091Y173254D01* +X675068Y173307D01* +X675053Y173363D01* +X675010Y173436D01* +X674975Y173513D01* +X674937Y173558D01* +X674908Y173608D01* +X674846Y173666D01* +X674792Y173730D01* +X674743Y173762D01* +X674700Y173802D01* +X674625Y173841D01* +X674555Y173888D01* +X674499Y173905D01* +X674447Y173932D01* +X674379Y173943D01* +X674284Y173973D01* +X674184Y173976D01* +X674116Y173987D01* +X670593Y173987D01* +X667967Y176613D01* +X667967Y178956D01* +X667959Y179014D01* +X667961Y179072D01* +X667939Y179154D01* +X667927Y179238D01* +X667904Y179291D01* +X667889Y179347D01* +X667846Y179420D01* +X667811Y179497D01* +X667773Y179542D01* +X667744Y179592D01* +X667682Y179650D01* +X667628Y179714D01* +X667579Y179746D01* +X667536Y179786D01* +X667461Y179825D01* +X667391Y179872D01* +X667335Y179889D01* +X667283Y179916D01* +X667215Y179927D01* +X667120Y179957D01* +X667020Y179960D01* +X666952Y179971D01* +X603048Y179971D01* +X602990Y179963D01* +X602932Y179965D01* +X602850Y179943D01* +X602766Y179931D01* +X602713Y179908D01* +X602657Y179893D01* +X602584Y179850D01* +X602507Y179815D01* +X602462Y179777D01* +X602412Y179748D01* +X602354Y179686D01* +X602290Y179632D01* +X602258Y179583D01* +X602218Y179540D01* +X602179Y179465D01* +X602132Y179395D01* +X602115Y179339D01* +X602088Y179287D01* +X602077Y179219D01* +X602047Y179124D01* +X602044Y179024D01* +X602033Y178956D01* +X602033Y176613D01* +X599407Y173987D01* +X579593Y173987D01* +X578822Y174759D01* +X578798Y174776D01* +X578779Y174799D01* +X578685Y174861D01* +X578595Y174929D01* +X578567Y174940D01* +X578543Y174956D01* +X578435Y174990D01* +X578329Y175031D01* +X578300Y175033D01* +X578272Y175042D01* +X578158Y175045D01* +X578046Y175054D01* +X578017Y175049D01* +X577988Y175049D01* +X577878Y175021D01* +X577767Y174998D01* +X577741Y174985D01* +X577713Y174977D01* +X577615Y174920D01* +X577515Y174867D01* +X577493Y174847D01* +X577468Y174832D01* +X577391Y174750D01* +X577309Y174672D01* +X577294Y174646D01* +X577274Y174625D01* +X577222Y174524D01* +X577165Y174426D01* +X577158Y174398D01* +X577144Y174372D01* +X577131Y174294D01* +X577095Y174151D01* +X577097Y174088D01* +X577089Y174041D01* +X577089Y161127D01* +X571670Y155709D01* +X571618Y155639D01* +X571558Y155575D01* +X571532Y155525D01* +X571499Y155481D01* +X571468Y155400D01* +X571428Y155322D01* +X571420Y155274D01* +X571398Y155216D01* +X571386Y155068D01* +X571373Y154991D01* +X571373Y151662D01* +X569618Y149907D01* +X563562Y149907D01* +X562058Y151411D01* +X562011Y151446D01* +X561971Y151489D01* +X561898Y151531D01* +X561831Y151582D01* +X561776Y151603D01* +X561726Y151632D01* +X561644Y151653D01* +X561565Y151683D01* +X561507Y151688D01* +X561450Y151703D01* +X561366Y151700D01* +X561282Y151707D01* +X561224Y151695D01* +X561166Y151694D01* +X561086Y151668D01* +X561003Y151651D01* +X560951Y151624D01* +X560895Y151606D01* +X560839Y151566D01* +X560751Y151520D01* +X560678Y151451D01* +X560622Y151411D01* +X559118Y149907D01* +X553062Y149907D01* +X551205Y151764D01* +X551135Y151816D01* +X551071Y151876D01* +X551022Y151902D01* +X550978Y151935D01* +X550896Y151966D01* +X550818Y152006D01* +X550771Y152014D01* +X550712Y152036D01* +X550565Y152048D01* +X550487Y152061D01* +X548993Y152061D01* +X548906Y152049D01* +X548819Y152046D01* +X548766Y152029D01* +X548711Y152021D01* +X548631Y151986D01* +X548548Y151959D01* +X548509Y151931D01* +X548452Y151905D01* +X548339Y151809D01* +X548275Y151764D01* +X547089Y150578D01* +X547054Y150531D01* +X547011Y150491D01* +X546969Y150418D01* +X546918Y150351D01* +X546897Y150296D01* +X546868Y150246D01* +X546847Y150164D01* +X546817Y150085D01* +X546812Y150027D01* +X546797Y149970D01* +X546800Y149886D01* +X546793Y149802D01* +X546805Y149744D01* +X546806Y149686D01* +X546832Y149606D01* +X546849Y149523D01* +X546876Y149471D01* +X546894Y149415D01* +X546934Y149359D01* +X546980Y149271D01* +X547049Y149198D01* +X547089Y149142D01* +X548593Y147638D01* +X548593Y141582D01* +X547425Y140414D01* +X547390Y140367D01* +X547347Y140327D01* +X547305Y140254D01* +X547254Y140187D01* +X547233Y140132D01* +X547204Y140082D01* +X547183Y140000D01* +X547153Y139921D01* +X547148Y139863D01* +X547134Y139806D01* +X547136Y139722D01* +X547129Y139638D01* +X547141Y139581D01* +X547143Y139522D01* +X547169Y139442D01* +X547185Y139359D01* +X547212Y139307D01* +X547230Y139252D01* +X547270Y139196D01* +X547316Y139107D01* +X547385Y139034D01* +X547425Y138978D01* +X548489Y137914D01* +X549375Y135777D01* +X549375Y133463D01* +X548489Y131326D01* +X546865Y129702D01* +X546847Y129678D01* +X546825Y129659D01* +X546762Y129565D01* +X546694Y129475D01* +X546684Y129447D01* +X546668Y129423D01* +X546633Y129315D01* +X546593Y129209D01* +X546591Y129180D01* +X546582Y129152D01* +X546579Y129038D01* +X546569Y128926D01* +X546575Y128897D01* +X546574Y128868D01* +X546603Y128758D01* +X546625Y128647D01* +X546639Y128621D01* +X546646Y128593D01* +X546704Y128495D01* +X546756Y128395D01* +X546777Y128373D01* +X546792Y128348D01* +X546874Y128271D01* +X546952Y128189D01* +X546977Y128174D01* +X546999Y128154D01* +X547100Y128102D01* +X547197Y128045D01* +X547226Y128038D01* +X547252Y128024D01* +X547329Y128011D01* +X547473Y127975D01* +X547535Y127977D01* +X547583Y127969D01* +X702089Y127969D01* +X702118Y127973D01* +G37* +G36* +X828466Y251973D02* +X828466Y251973D01* +X828495Y251970D01* +X828606Y251993D01* +X828718Y252009D01* +X828745Y252021D01* +X828774Y252026D01* +X828874Y252078D01* +X828978Y252125D01* +X829000Y252144D01* +X829026Y252157D01* +X829108Y252235D01* +X829195Y252308D01* +X829211Y252333D01* +X829232Y252353D01* +X829289Y252451D01* +X829352Y252545D01* +X829361Y252573D01* +X829376Y252598D01* +X829404Y252708D01* +X829438Y252816D01* +X829439Y252846D01* +X829446Y252874D01* +X829442Y252987D01* +X829445Y253100D01* +X829438Y253129D01* +X829437Y253158D01* +X829402Y253266D01* +X829373Y253375D01* +X829358Y253401D01* +X829349Y253429D01* +X829304Y253492D01* +X829228Y253620D01* +X829183Y253663D01* +X829155Y253702D01* +X794270Y288587D01* +X794200Y288639D01* +X794136Y288699D01* +X794087Y288724D01* +X794043Y288758D01* +X793961Y288789D01* +X793883Y288829D01* +X793835Y288837D01* +X793777Y288859D01* +X793629Y288871D01* +X793552Y288884D01* +X769295Y288884D01* +X769174Y288867D01* +X769053Y288855D01* +X769034Y288847D01* +X769013Y288844D01* +X768902Y288794D01* +X768789Y288749D01* +X768773Y288736D01* +X768754Y288728D01* +X768661Y288649D01* +X768565Y288574D01* +X768554Y288559D01* +X768537Y288544D01* +X768379Y288308D01* +X768378Y288302D01* +X768375Y288298D01* +X766437Y284142D01* +X763492Y283070D01* +X754761Y287142D01* +X754370Y288216D01* +X754359Y288237D01* +X754353Y288260D01* +X754292Y288362D01* +X754236Y288467D01* +X754220Y288484D01* +X754207Y288505D01* +X754121Y288586D01* +X754038Y288671D01* +X754018Y288683D01* +X754000Y288699D01* +X753894Y288753D01* +X753791Y288812D01* +X753768Y288818D01* +X753747Y288829D01* +X753671Y288841D01* +X753515Y288879D01* +X753459Y288877D01* +X753416Y288884D01* +X709593Y288884D01* +X709569Y288881D01* +X709545Y288883D01* +X709429Y288861D01* +X709311Y288844D01* +X709290Y288834D01* +X709266Y288830D01* +X709160Y288776D01* +X709052Y288728D01* +X709034Y288713D01* +X709012Y288702D01* +X708925Y288621D01* +X708835Y288544D01* +X708822Y288524D01* +X708804Y288508D01* +X708766Y288441D01* +X708677Y288308D01* +X708660Y288254D01* +X708639Y288216D01* +X708356Y287440D01* +X700406Y283733D01* +X700328Y283682D01* +X700245Y283639D01* +X700209Y283605D01* +X700167Y283578D01* +X700107Y283507D01* +X700039Y283443D01* +X700014Y283400D01* +X699981Y283363D01* +X699943Y283278D01* +X699896Y283198D01* +X699883Y283150D01* +X699862Y283104D01* +X699848Y283013D01* +X699825Y282923D01* +X699827Y282873D01* +X699820Y282823D01* +X699832Y282731D01* +X699835Y282639D01* +X699850Y282591D01* +X699856Y282542D01* +X699893Y282456D01* +X699922Y282368D01* +X699947Y282332D01* +X699970Y282281D01* +X700073Y282157D01* +X700117Y282095D01* +X729945Y252266D01* +X730015Y252214D01* +X730079Y252154D01* +X730129Y252128D01* +X730173Y252095D01* +X730254Y252064D01* +X730332Y252024D01* +X730380Y252016D01* +X730438Y251994D01* +X730586Y251982D01* +X730663Y251969D01* +X828437Y251969D01* +X828466Y251973D01* +G37* +G36* +X571558Y52333D02* +X571558Y52333D01* +X571616Y52331D01* +X571698Y52353D01* +X571782Y52365D01* +X571835Y52388D01* +X571891Y52403D01* +X571964Y52446D01* +X572041Y52481D01* +X572086Y52519D01* +X572136Y52548D01* +X572194Y52610D01* +X572258Y52664D01* +X572290Y52713D01* +X572330Y52756D01* +X572369Y52831D01* +X572416Y52901D01* +X572433Y52957D01* +X572460Y53009D01* +X572471Y53077D01* +X572501Y53172D01* +X572504Y53272D01* +X572515Y53340D01* +X572515Y54572D01* +X572508Y54623D01* +X572509Y54642D01* +X572507Y54646D01* +X572509Y54688D01* +X572487Y54770D01* +X572475Y54854D01* +X572452Y54907D01* +X572437Y54963D01* +X572394Y55036D01* +X572359Y55113D01* +X572321Y55158D01* +X572292Y55208D01* +X572230Y55266D01* +X572176Y55330D01* +X572127Y55362D01* +X572084Y55402D01* +X572009Y55441D01* +X571939Y55488D01* +X571883Y55505D01* +X571831Y55532D01* +X571816Y55534D01* +X569547Y57803D01* +X569547Y68437D01* +X571763Y70653D01* +X581397Y70653D01* +X583613Y68437D01* +X583613Y57803D01* +X582835Y57026D01* +X582818Y57002D01* +X582795Y56983D01* +X582733Y56889D01* +X582665Y56799D01* +X582654Y56771D01* +X582638Y56747D01* +X582604Y56639D01* +X582563Y56533D01* +X582561Y56504D01* +X582552Y56476D01* +X582549Y56362D01* +X582540Y56250D01* +X582546Y56221D01* +X582545Y56192D01* +X582573Y56082D01* +X582596Y55971D01* +X582609Y55945D01* +X582617Y55917D01* +X582674Y55819D01* +X582727Y55719D01* +X582747Y55697D01* +X582762Y55672D01* +X582844Y55595D01* +X582922Y55513D01* +X582948Y55498D01* +X582969Y55478D01* +X583070Y55426D01* +X583168Y55369D01* +X583196Y55362D01* +X583222Y55348D01* +X583300Y55335D01* +X583443Y55299D01* +X583506Y55301D01* +X583553Y55293D01* +X594217Y55293D01* +X596182Y53327D01* +X596229Y53292D01* +X596269Y53250D01* +X596342Y53207D01* +X596409Y53157D01* +X596464Y53136D01* +X596514Y53106D01* +X596596Y53085D01* +X596675Y53055D01* +X596733Y53051D01* +X596790Y53036D01* +X596874Y53039D01* +X596958Y53032D01* +X597016Y53043D01* +X597074Y53045D01* +X597154Y53071D01* +X597237Y53088D01* +X597289Y53115D01* +X597345Y53133D01* +X597401Y53173D01* +X597489Y53219D01* +X597562Y53287D01* +X597618Y53327D01* +X599583Y55293D01* +X599820Y55293D01* +X599878Y55301D01* +X599936Y55299D01* +X600018Y55321D01* +X600102Y55333D01* +X600155Y55356D01* +X600211Y55371D01* +X600284Y55414D01* +X600361Y55449D01* +X600406Y55487D01* +X600456Y55516D01* +X600514Y55578D01* +X600578Y55632D01* +X600610Y55681D01* +X600650Y55724D01* +X600689Y55799D01* +X600736Y55869D01* +X600753Y55925D01* +X600780Y55977D01* +X600791Y56045D01* +X600821Y56140D01* +X600824Y56240D01* +X600835Y56308D01* +X600835Y58873D01* +X600823Y58960D01* +X600820Y59047D01* +X600803Y59100D01* +X600795Y59155D01* +X600760Y59235D01* +X600733Y59318D01* +X600705Y59357D01* +X600679Y59414D01* +X600583Y59528D01* +X600538Y59591D01* +X600158Y59971D01* +X600111Y60006D01* +X600071Y60049D01* +X599998Y60092D01* +X599931Y60142D01* +X599876Y60163D01* +X599826Y60192D01* +X599744Y60213D01* +X599665Y60243D01* +X599607Y60248D01* +X599550Y60263D01* +X599466Y60260D01* +X599382Y60267D01* +X599324Y60255D01* +X599266Y60254D01* +X599186Y60228D01* +X599103Y60211D01* +X599051Y60184D01* +X598995Y60166D01* +X598939Y60126D01* +X598851Y60080D01* +X598778Y60011D01* +X598722Y59971D01* +X597218Y58467D01* +X591162Y58467D01* +X589407Y60222D01* +X589407Y66778D01* +X590748Y68119D01* +X590783Y68166D01* +X590826Y68206D01* +X590868Y68279D01* +X590919Y68346D01* +X590940Y68401D01* +X590969Y68451D01* +X590990Y68533D01* +X591020Y68612D01* +X591025Y68670D01* +X591039Y68727D01* +X591037Y68811D01* +X591044Y68895D01* +X591032Y68952D01* +X591030Y69011D01* +X591004Y69091D01* +X590988Y69174D01* +X590961Y69226D01* +X590943Y69281D01* +X590903Y69338D01* +X590857Y69426D01* +X590788Y69498D01* +X590748Y69555D01* +X589537Y70765D01* +X589537Y81035D01* +X591435Y82933D01* +X598605Y82933D01* +X599052Y82485D01* +X599099Y82450D01* +X599139Y82408D01* +X599212Y82365D01* +X599279Y82314D01* +X599334Y82294D01* +X599384Y82264D01* +X599466Y82243D01* +X599545Y82213D01* +X599603Y82208D01* +X599660Y82194D01* +X599744Y82197D01* +X599828Y82190D01* +X599886Y82201D01* +X599944Y82203D01* +X600024Y82229D01* +X600107Y82245D01* +X600159Y82272D01* +X600215Y82290D01* +X600271Y82330D01* +X600359Y82376D01* +X600432Y82445D01* +X600488Y82485D01* +X600935Y82933D01* +X606521Y82933D01* +X606607Y82945D01* +X606695Y82948D01* +X606747Y82965D01* +X606802Y82973D01* +X606882Y83008D01* +X606965Y83035D01* +X607004Y83063D01* +X607062Y83089D01* +X607175Y83185D01* +X607239Y83230D01* +X608337Y84329D01* +X618236Y84329D01* +X618294Y84337D01* +X618352Y84335D01* +X618434Y84357D01* +X618518Y84369D01* +X618571Y84392D01* +X618627Y84407D01* +X618700Y84450D01* +X618777Y84485D01* +X618822Y84523D01* +X618872Y84552D01* +X618930Y84614D01* +X618994Y84668D01* +X619026Y84717D01* +X619066Y84760D01* +X619105Y84835D01* +X619152Y84905D01* +X619169Y84961D01* +X619196Y85013D01* +X619207Y85081D01* +X619237Y85176D01* +X619240Y85276D01* +X619251Y85344D01* +X619251Y94063D01* +X619247Y94092D01* +X619250Y94121D01* +X619227Y94232D01* +X619211Y94344D01* +X619199Y94371D01* +X619194Y94400D01* +X619141Y94501D01* +X619095Y94604D01* +X619076Y94626D01* +X619063Y94652D01* +X618985Y94734D01* +X618912Y94821D01* +X618887Y94837D01* +X618867Y94858D01* +X618769Y94915D01* +X618675Y94978D01* +X618647Y94987D01* +X618622Y95002D01* +X618512Y95030D01* +X618404Y95064D01* +X618375Y95065D01* +X618346Y95072D01* +X618233Y95069D01* +X618120Y95071D01* +X618091Y95064D01* +X618062Y95063D01* +X617954Y95028D01* +X617845Y95000D01* +X617819Y94985D01* +X617791Y94976D01* +X617728Y94930D01* +X617622Y94867D01* +X610435Y94867D01* +X608537Y96765D01* +X608537Y107035D01* +X610435Y108933D01* +X617605Y108933D01* +X618995Y107542D01* +X619042Y107507D01* +X619082Y107465D01* +X619155Y107422D01* +X619222Y107371D01* +X619277Y107351D01* +X619327Y107321D01* +X619409Y107300D01* +X619488Y107270D01* +X619546Y107265D01* +X619603Y107251D01* +X619687Y107254D01* +X619771Y107247D01* +X619828Y107258D01* +X619887Y107260D01* +X619967Y107286D01* +X620050Y107303D01* +X620102Y107330D01* +X620157Y107347D01* +X620214Y107387D01* +X620302Y107434D01* +X620375Y107502D01* +X620431Y107542D01* +X622963Y110074D01* +X622980Y110098D01* +X623003Y110117D01* +X623066Y110211D01* +X623133Y110301D01* +X623144Y110329D01* +X623160Y110353D01* +X623194Y110461D01* +X623235Y110567D01* +X623237Y110596D01* +X623246Y110624D01* +X623249Y110738D01* +X623258Y110850D01* +X623253Y110879D01* +X623253Y110908D01* +X623225Y111018D01* +X623202Y111129D01* +X623189Y111155D01* +X623181Y111183D01* +X623124Y111281D01* +X623071Y111381D01* +X623051Y111403D01* +X623036Y111428D01* +X622954Y111505D01* +X622876Y111587D01* +X622850Y111602D01* +X622829Y111622D01* +X622728Y111674D01* +X622630Y111731D01* +X622602Y111738D01* +X622576Y111752D01* +X622498Y111765D01* +X622355Y111801D01* +X622292Y111799D01* +X622245Y111807D01* +X619442Y111807D01* +X617938Y113311D01* +X617891Y113346D01* +X617851Y113389D01* +X617778Y113431D01* +X617711Y113482D01* +X617656Y113503D01* +X617606Y113532D01* +X617524Y113553D01* +X617445Y113583D01* +X617387Y113588D01* +X617330Y113603D01* +X617246Y113600D01* +X617162Y113607D01* +X617104Y113595D01* +X617046Y113594D01* +X616966Y113568D01* +X616883Y113551D01* +X616831Y113524D01* +X616775Y113506D01* +X616719Y113466D01* +X616631Y113420D01* +X616558Y113351D01* +X616502Y113311D01* +X614998Y111807D01* +X608942Y111807D01* +X607255Y113494D01* +X607185Y113546D01* +X607122Y113606D01* +X607072Y113632D01* +X607028Y113665D01* +X606946Y113696D01* +X606868Y113736D01* +X606821Y113744D01* +X606762Y113766D01* +X606615Y113778D01* +X606537Y113791D01* +X602503Y113791D01* +X602416Y113779D01* +X602329Y113776D01* +X602276Y113759D01* +X602221Y113751D01* +X602141Y113716D01* +X602058Y113689D01* +X602019Y113661D01* +X601962Y113635D01* +X601848Y113539D01* +X601785Y113494D01* +X600416Y112125D01* +X600364Y112055D01* +X600304Y111992D01* +X600278Y111942D01* +X600245Y111898D01* +X600214Y111816D01* +X600174Y111738D01* +X600166Y111691D01* +X600144Y111632D01* +X600138Y111565D01* +X600133Y111547D01* +X600131Y111480D01* +X600119Y111407D01* +X600119Y107839D01* +X600131Y107753D01* +X600134Y107665D01* +X600151Y107613D01* +X600159Y107558D01* +X600194Y107478D01* +X600221Y107395D01* +X600249Y107355D01* +X600275Y107298D01* +X600371Y107185D01* +X600416Y107121D01* +X600503Y107035D01* +X600503Y96765D01* +X598605Y94867D01* +X591435Y94867D01* +X589537Y96765D01* +X589537Y107035D01* +X591435Y108933D01* +X593006Y108933D01* +X593064Y108941D01* +X593122Y108939D01* +X593204Y108961D01* +X593288Y108973D01* +X593341Y108996D01* +X593397Y109011D01* +X593470Y109054D01* +X593547Y109089D01* +X593592Y109127D01* +X593642Y109156D01* +X593700Y109218D01* +X593764Y109272D01* +X593796Y109321D01* +X593836Y109364D01* +X593875Y109439D01* +X593922Y109509D01* +X593939Y109565D01* +X593966Y109617D01* +X593977Y109685D01* +X594007Y109780D01* +X594010Y109880D01* +X594021Y109948D01* +X594021Y111407D01* +X594014Y111461D01* +X594015Y111496D01* +X594008Y111520D01* +X594006Y111581D01* +X593989Y111634D01* +X593981Y111689D01* +X593946Y111769D01* +X593919Y111852D01* +X593891Y111891D01* +X593865Y111948D01* +X593769Y112061D01* +X593724Y112125D01* +X592287Y113562D01* +X592287Y118824D01* +X592279Y118882D01* +X592281Y118940D01* +X592259Y119022D01* +X592247Y119106D01* +X592224Y119159D01* +X592209Y119215D01* +X592166Y119288D01* +X592131Y119365D01* +X592093Y119410D01* +X592064Y119460D01* +X592002Y119518D01* +X591948Y119582D01* +X591899Y119614D01* +X591856Y119654D01* +X591781Y119693D01* +X591711Y119740D01* +X591655Y119757D01* +X591603Y119784D01* +X591535Y119795D01* +X591440Y119825D01* +X591340Y119828D01* +X591272Y119839D01* +X544108Y119839D01* +X544050Y119831D01* +X543992Y119833D01* +X543910Y119811D01* +X543826Y119799D01* +X543773Y119776D01* +X543717Y119761D01* +X543644Y119718D01* +X543567Y119683D01* +X543522Y119645D01* +X543472Y119616D01* +X543414Y119554D01* +X543350Y119500D01* +X543318Y119451D01* +X543278Y119408D01* +X543239Y119333D01* +X543192Y119263D01* +X543175Y119207D01* +X543148Y119155D01* +X543137Y119087D01* +X543107Y118992D01* +X543104Y118892D01* +X543093Y118824D01* +X543093Y113562D01* +X542672Y113141D01* +X542620Y113071D01* +X542560Y113008D01* +X542534Y112958D01* +X542501Y112914D01* +X542470Y112832D01* +X542430Y112754D01* +X542422Y112707D01* +X542400Y112648D01* +X542394Y112580D01* +X542389Y112562D01* +X542387Y112497D01* +X542375Y112423D01* +X542375Y105006D01* +X541390Y104022D01* +X541338Y103952D01* +X541278Y103888D01* +X541252Y103839D01* +X541219Y103794D01* +X541188Y103713D01* +X541148Y103635D01* +X541140Y103587D01* +X541118Y103529D01* +X541110Y103436D01* +X541107Y103425D01* +X541106Y103380D01* +X541093Y103304D01* +X541093Y95623D01* +X538877Y93407D01* +X529243Y93407D01* +X527538Y95113D01* +X527514Y95130D01* +X527495Y95153D01* +X527401Y95215D01* +X527311Y95283D01* +X527283Y95294D01* +X527259Y95310D01* +X527151Y95344D01* +X527045Y95385D01* +X527016Y95387D01* +X526988Y95396D01* +X526874Y95399D01* +X526762Y95408D01* +X526733Y95402D01* +X526704Y95403D01* +X526594Y95375D01* +X526483Y95352D01* +X526457Y95339D01* +X526429Y95331D01* +X526331Y95274D01* +X526231Y95221D01* +X526209Y95201D01* +X526184Y95186D01* +X526107Y95104D01* +X526025Y95026D01* +X526010Y95000D01* +X525990Y94979D01* +X525938Y94878D01* +X525881Y94780D01* +X525874Y94752D01* +X525860Y94726D01* +X525847Y94648D01* +X525811Y94505D01* +X525813Y94442D01* +X525805Y94395D01* +X525805Y93336D01* +X520822Y88354D01* +X520770Y88284D01* +X520710Y88220D01* +X520684Y88171D01* +X520651Y88126D01* +X520620Y88045D01* +X520580Y87967D01* +X520572Y87919D01* +X520550Y87861D01* +X520538Y87713D01* +X520525Y87636D01* +X520525Y82759D01* +X520537Y82674D01* +X520539Y82588D01* +X520557Y82534D01* +X520565Y82478D01* +X520600Y82399D01* +X520626Y82317D01* +X520658Y82270D01* +X520681Y82218D01* +X520736Y82153D01* +X520784Y82081D01* +X520828Y82045D01* +X520864Y82001D01* +X520936Y81954D01* +X521002Y81898D01* +X521054Y81875D01* +X521101Y81844D01* +X521183Y81818D01* +X521262Y81783D01* +X521318Y81775D01* +X521372Y81758D01* +X521458Y81756D01* +X521543Y81744D01* +X521599Y81752D01* +X521656Y81751D01* +X521739Y81772D01* +X521824Y81785D01* +X521876Y81808D01* +X521931Y81822D01* +X522005Y81866D01* +X522084Y81902D01* +X522127Y81939D01* +X522176Y81968D01* +X522235Y82030D01* +X522300Y82086D01* +X522326Y82128D01* +X522370Y82175D01* +X522436Y82304D01* +X522478Y82371D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533021Y84802D01* +X533091Y84750D01* +X533155Y84690D01* +X533204Y84664D01* +X533248Y84631D01* +X533330Y84600D01* +X533408Y84560D01* +X533455Y84552D01* +X533514Y84530D01* +X533662Y84518D01* +X533739Y84505D01* +X535512Y84505D01* +X535570Y84513D01* +X535628Y84511D01* +X535710Y84533D01* +X535794Y84545D01* +X535847Y84568D01* +X535903Y84583D01* +X535976Y84626D01* +X536053Y84661D01* +X536098Y84699D01* +X536148Y84728D01* +X536206Y84790D01* +X536270Y84844D01* +X536302Y84893D01* +X536342Y84936D01* +X536381Y85011D01* +X536428Y85081D01* +X536445Y85137D01* +X536472Y85189D01* +X536483Y85257D01* +X536513Y85352D01* +X536516Y85452D01* +X536527Y85520D01* +X536527Y87257D01* +X538743Y89473D01* +X548377Y89473D01* +X550593Y87257D01* +X550593Y73623D01* +X548717Y71748D01* +X548682Y71701D01* +X548640Y71661D01* +X548597Y71588D01* +X548547Y71521D01* +X548526Y71466D01* +X548496Y71416D01* +X548475Y71334D01* +X548445Y71255D01* +X548441Y71197D01* +X548426Y71140D01* +X548429Y71056D01* +X548422Y70972D01* +X548433Y70914D01* +X548435Y70856D01* +X548461Y70776D01* +X548478Y70693D01* +X548505Y70641D01* +X548523Y70585D01* +X548563Y70529D01* +X548609Y70441D01* +X548677Y70368D01* +X548717Y70312D01* +X550713Y68317D01* +X550713Y58683D01* +X548497Y56467D01* +X548260Y56467D01* +X548202Y56459D01* +X548144Y56461D01* +X548062Y56439D01* +X547978Y56427D01* +X547925Y56404D01* +X547869Y56389D01* +X547796Y56346D01* +X547719Y56311D01* +X547674Y56273D01* +X547624Y56244D01* +X547566Y56182D01* +X547502Y56128D01* +X547472Y56082D01* +X547465Y56075D01* +X547462Y56071D01* +X547430Y56036D01* +X547391Y55961D01* +X547344Y55891D01* +X547330Y55846D01* +X547321Y55830D01* +X547318Y55817D01* +X547300Y55783D01* +X547289Y55715D01* +X547259Y55620D01* +X547258Y55582D01* +X547251Y55554D01* +X547253Y55498D01* +X547245Y55452D01* +X547245Y55444D01* +X547253Y55387D01* +X547251Y55336D01* +X547259Y55308D01* +X547260Y55270D01* +X547277Y55217D01* +X547285Y55163D01* +X547313Y55098D01* +X547323Y55061D01* +X547333Y55045D01* +X547347Y55000D01* +X547375Y54960D01* +X547401Y54903D01* +X547454Y54840D01* +X547468Y54816D01* +X547497Y54789D01* +X547542Y54726D01* +X549646Y52622D01* +X549716Y52570D01* +X549780Y52510D01* +X549829Y52484D01* +X549873Y52451D01* +X549955Y52420D01* +X550033Y52380D01* +X550081Y52372D01* +X550139Y52350D01* +X550287Y52338D01* +X550364Y52325D01* +X571500Y52325D01* +X571558Y52333D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +G36* +X655378Y49793D02* +X655378Y49793D01* +X655436Y49791D01* +X655518Y49813D01* +X655602Y49825D01* +X655655Y49849D01* +X655711Y49863D01* +X655784Y49906D01* +X655861Y49941D01* +X655906Y49979D01* +X655956Y50009D01* +X656014Y50070D01* +X656078Y50125D01* +X656110Y50173D01* +X656150Y50216D01* +X656189Y50291D01* +X656236Y50361D01* +X656253Y50417D01* +X656280Y50469D01* +X656291Y50537D01* +X656321Y50632D01* +X656324Y50732D01* +X656335Y50800D01* +X656335Y112776D01* +X656328Y112827D01* +X656329Y112847D01* +X656328Y112851D01* +X656329Y112892D01* +X656307Y112974D01* +X656295Y113058D01* +X656272Y113111D01* +X656257Y113167D01* +X656214Y113240D01* +X656179Y113317D01* +X656141Y113362D01* +X656112Y113412D01* +X656050Y113470D01* +X655996Y113534D01* +X655947Y113566D01* +X655904Y113606D01* +X655829Y113645D01* +X655759Y113692D01* +X655703Y113709D01* +X655651Y113736D01* +X655583Y113747D01* +X655488Y113777D01* +X655388Y113780D01* +X655320Y113791D01* +X635968Y113791D01* +X635910Y113783D01* +X635852Y113785D01* +X635770Y113763D01* +X635686Y113751D01* +X635633Y113728D01* +X635577Y113713D01* +X635504Y113670D01* +X635427Y113635D01* +X635382Y113597D01* +X635332Y113568D01* +X635274Y113506D01* +X635210Y113452D01* +X635178Y113403D01* +X635138Y113360D01* +X635099Y113285D01* +X635052Y113215D01* +X635035Y113159D01* +X635008Y113107D01* +X634997Y113039D01* +X634967Y112944D01* +X634964Y112844D01* +X634953Y112776D01* +X634953Y106362D01* +X634282Y105691D01* +X634230Y105621D01* +X634170Y105558D01* +X634144Y105508D01* +X634111Y105464D01* +X634080Y105382D01* +X634040Y105304D01* +X634032Y105257D01* +X634010Y105198D01* +X634005Y105141D01* +X633993Y105140D01* +X633940Y105123D01* +X633885Y105115D01* +X633805Y105080D01* +X633722Y105053D01* +X633683Y105025D01* +X633626Y104999D01* +X633513Y104903D01* +X633449Y104858D01* +X633198Y104607D01* +X626539Y104607D01* +X626453Y104595D01* +X626365Y104592D01* +X626313Y104575D01* +X626258Y104567D01* +X626178Y104532D01* +X626095Y104505D01* +X626056Y104477D01* +X625998Y104451D01* +X625885Y104355D01* +X625821Y104310D01* +X621582Y100071D01* +X621530Y100001D01* +X621470Y99937D01* +X621444Y99887D01* +X621411Y99843D01* +X621380Y99762D01* +X621340Y99684D01* +X621332Y99636D01* +X621310Y99578D01* +X621298Y99430D01* +X621285Y99353D01* +X621285Y82295D01* +X611018Y82295D01* +X610960Y82287D01* +X610902Y82289D01* +X610820Y82267D01* +X610736Y82255D01* +X610683Y82232D01* +X610627Y82217D01* +X610554Y82174D01* +X610477Y82139D01* +X610432Y82101D01* +X610382Y82072D01* +X610324Y82010D01* +X610260Y81956D01* +X610228Y81907D01* +X610188Y81864D01* +X610149Y81789D01* +X610102Y81719D01* +X610085Y81663D01* +X610058Y81611D01* +X610047Y81543D01* +X610017Y81448D01* +X610014Y81348D01* +X610003Y81280D01* +X610003Y70765D01* +X609052Y69815D01* +X609000Y69745D01* +X608940Y69681D01* +X608914Y69632D01* +X608881Y69587D01* +X608850Y69506D01* +X608810Y69428D01* +X608802Y69380D01* +X608780Y69322D01* +X608775Y69262D01* +X608769Y69242D01* +X608767Y69169D01* +X608755Y69097D01* +X608755Y67917D01* +X608767Y67830D01* +X608770Y67743D01* +X608787Y67690D01* +X608795Y67635D01* +X608830Y67555D01* +X608857Y67472D01* +X608885Y67433D01* +X608911Y67376D01* +X609007Y67263D01* +X609052Y67199D01* +X609473Y66778D01* +X609473Y60222D01* +X609262Y60011D01* +X609210Y59941D01* +X609150Y59877D01* +X609124Y59828D01* +X609091Y59784D01* +X609060Y59702D01* +X609020Y59624D01* +X609012Y59577D01* +X608990Y59518D01* +X608978Y59371D01* +X608965Y59293D01* +X608965Y56308D01* +X608973Y56250D01* +X608971Y56192D01* +X608993Y56110D01* +X609005Y56026D01* +X609028Y55973D01* +X609043Y55917D01* +X609086Y55844D01* +X609121Y55767D01* +X609159Y55722D01* +X609188Y55672D01* +X609250Y55614D01* +X609304Y55550D01* +X609353Y55518D01* +X609396Y55478D01* +X609471Y55439D01* +X609541Y55392D01* +X609597Y55375D01* +X609649Y55348D01* +X609717Y55337D01* +X609812Y55307D01* +X609912Y55304D01* +X609980Y55293D01* +X610217Y55293D01* +X612433Y53077D01* +X612433Y50800D01* +X612441Y50742D01* +X612439Y50684D01* +X612461Y50602D01* +X612473Y50519D01* +X612496Y50465D01* +X612511Y50409D01* +X612554Y50336D01* +X612589Y50259D01* +X612627Y50214D01* +X612656Y50164D01* +X612718Y50106D01* +X612772Y50042D01* +X612821Y50010D01* +X612864Y49970D01* +X612939Y49931D01* +X613009Y49885D01* +X613065Y49867D01* +X613117Y49840D01* +X613185Y49829D01* +X613280Y49799D01* +X613380Y49796D01* +X613448Y49785D01* +X655320Y49785D01* +X655378Y49793D01* +G37* +G36* +X868353Y43701D02* +X868353Y43701D01* +X868441Y43704D01* +X868493Y43721D01* +X868548Y43729D01* +X868628Y43764D01* +X868711Y43791D01* +X868750Y43819D01* +X868808Y43845D01* +X868921Y43941D01* +X868985Y43986D01* +X869652Y44653D01* +X869704Y44723D01* +X869764Y44787D01* +X869790Y44837D01* +X869823Y44881D01* +X869848Y44947D01* +X869850Y44949D01* +X869853Y44959D01* +X869854Y44962D01* +X869894Y45040D01* +X869902Y45088D01* +X869924Y45146D01* +X869928Y45198D01* +X869935Y45220D01* +X869937Y45300D01* +X869949Y45371D01* +X869949Y46731D01* +X870723Y48598D01* +X872152Y50027D01* +X874019Y50801D01* +X885952Y50801D01* +X886010Y50809D01* +X886068Y50807D01* +X886150Y50829D01* +X886234Y50841D01* +X886287Y50864D01* +X886343Y50879D01* +X886416Y50922D01* +X886493Y50957D01* +X886538Y50995D01* +X886588Y51024D01* +X886646Y51086D01* +X886710Y51140D01* +X886742Y51189D01* +X886782Y51232D01* +X886821Y51307D01* +X886868Y51377D01* +X886885Y51433D01* +X886912Y51485D01* +X886923Y51553D01* +X886953Y51648D01* +X886956Y51748D01* +X886967Y51816D01* +X886967Y78312D01* +X888158Y79503D01* +X927942Y79503D01* +X929133Y78312D01* +X929133Y66040D01* +X929141Y65982D01* +X929139Y65924D01* +X929161Y65842D01* +X929173Y65759D01* +X929196Y65705D01* +X929211Y65649D01* +X929254Y65576D01* +X929289Y65499D01* +X929327Y65454D01* +X929356Y65404D01* +X929418Y65346D01* +X929472Y65282D01* +X929521Y65250D01* +X929564Y65210D01* +X929639Y65171D01* +X929709Y65125D01* +X929765Y65107D01* +X929817Y65080D01* +X929885Y65069D01* +X929980Y65039D01* +X930080Y65036D01* +X930148Y65025D01* +X931964Y65025D01* +X932022Y65033D01* +X932080Y65031D01* +X932162Y65053D01* +X932246Y65065D01* +X932299Y65089D01* +X932355Y65103D01* +X932428Y65146D01* +X932505Y65181D01* +X932550Y65219D01* +X932600Y65249D01* +X932658Y65310D01* +X932722Y65365D01* +X932754Y65413D01* +X932794Y65456D01* +X932833Y65531D01* +X932880Y65601D01* +X932897Y65657D01* +X932924Y65709D01* +X932935Y65777D01* +X932965Y65872D01* +X932968Y65972D01* +X932979Y66040D01* +X932979Y129571D01* +X966708Y163299D01* +X966760Y163369D01* +X966820Y163433D01* +X966846Y163483D01* +X966879Y163527D01* +X966910Y163608D01* +X966950Y163686D01* +X966958Y163734D01* +X966980Y163792D01* +X966992Y163940D01* +X967005Y164017D01* +X967005Y164555D01* +X967001Y164584D01* +X967004Y164614D01* +X966981Y164725D01* +X966965Y164837D01* +X966953Y164864D01* +X966948Y164892D01* +X966896Y164993D01* +X966849Y165096D01* +X966830Y165119D01* +X966817Y165145D01* +X966739Y165227D01* +X966666Y165313D01* +X966641Y165329D01* +X966621Y165351D01* +X966523Y165408D01* +X966429Y165471D01* +X966401Y165480D01* +X966376Y165494D01* +X966266Y165522D01* +X966158Y165557D01* +X966128Y165557D01* +X966100Y165565D01* +X965987Y165561D01* +X965874Y165564D01* +X965845Y165556D01* +X965816Y165556D01* +X965708Y165521D01* +X965599Y165492D01* +X965573Y165477D01* +X965545Y165468D01* +X965482Y165423D01* +X965354Y165347D01* +X965311Y165301D01* +X965272Y165273D01* +X862645Y62646D01* +X862627Y62622D01* +X862605Y62603D01* +X862542Y62509D01* +X862474Y62419D01* +X862463Y62391D01* +X862447Y62367D01* +X862413Y62259D01* +X862373Y62153D01* +X862370Y62124D01* +X862361Y62096D01* +X862358Y61982D01* +X862349Y61870D01* +X862355Y61841D01* +X862354Y61812D01* +X862383Y61702D01* +X862405Y61591D01* +X862419Y61565D01* +X862426Y61537D01* +X862484Y61439D01* +X862536Y61339D01* +X862556Y61317D01* +X862571Y61292D01* +X862654Y61215D01* +X862732Y61133D01* +X862757Y61118D01* +X862778Y61098D01* +X862879Y61046D01* +X862977Y60989D01* +X863005Y60982D01* +X863032Y60968D01* +X863109Y60955D01* +X863253Y60919D01* +X863315Y60921D01* +X863363Y60913D01* +X866458Y60913D01* +X868213Y59158D01* +X868213Y52602D01* +X866776Y51165D01* +X866764Y51149D01* +X866753Y51140D01* +X866723Y51095D01* +X866664Y51031D01* +X866638Y50982D01* +X866605Y50938D01* +X866574Y50856D01* +X866534Y50778D01* +X866526Y50731D01* +X866504Y50672D01* +X866492Y50525D01* +X866479Y50447D01* +X866479Y49367D01* +X864396Y47284D01* +X864395Y47284D01* +X862533Y45422D01* +X862516Y45398D01* +X862493Y45379D01* +X862431Y45285D01* +X862363Y45195D01* +X862352Y45167D01* +X862336Y45143D01* +X862302Y45035D01* +X862261Y44929D01* +X862259Y44900D01* +X862250Y44872D01* +X862247Y44758D01* +X862238Y44646D01* +X862243Y44617D01* +X862243Y44588D01* +X862271Y44478D01* +X862294Y44367D01* +X862307Y44341D01* +X862315Y44313D01* +X862372Y44215D01* +X862425Y44115D01* +X862445Y44093D01* +X862460Y44068D01* +X862542Y43991D01* +X862620Y43909D01* +X862646Y43894D01* +X862667Y43874D01* +X862768Y43822D01* +X862866Y43765D01* +X862894Y43758D01* +X862920Y43744D01* +X862998Y43731D01* +X863141Y43695D01* +X863204Y43697D01* +X863251Y43689D01* +X868267Y43689D01* +X868353Y43701D01* +G37* +G36* +X710780Y48773D02* +X710780Y48773D01* +X710809Y48770D01* +X710920Y48793D01* +X711032Y48809D01* +X711059Y48821D01* +X711088Y48826D01* +X711188Y48879D01* +X711292Y48925D01* +X711314Y48944D01* +X711340Y48957D01* +X711422Y49035D01* +X711509Y49108D01* +X711525Y49133D01* +X711546Y49153D01* +X711603Y49251D01* +X711666Y49345D01* +X711675Y49373D01* +X711690Y49398D01* +X711718Y49508D01* +X711752Y49616D01* +X711753Y49646D01* +X711760Y49674D01* +X711756Y49787D01* +X711759Y49900D01* +X711752Y49929D01* +X711751Y49958D01* +X711716Y50066D01* +X711687Y50175D01* +X711672Y50201D01* +X711663Y50229D01* +X711618Y50293D01* +X711542Y50420D01* +X711497Y50463D01* +X711469Y50502D01* +X710907Y51063D01* +X710907Y60697D01* +X713062Y62852D01* +X713114Y62921D01* +X713174Y62985D01* +X713200Y63035D01* +X713233Y63079D01* +X713264Y63160D01* +X713304Y63238D01* +X713312Y63286D01* +X713334Y63344D01* +X713346Y63492D01* +X713359Y63569D01* +X713359Y74291D01* +X713479Y74579D01* +X713501Y74664D01* +X713532Y74746D01* +X713536Y74801D01* +X713550Y74855D01* +X713547Y74942D01* +X713554Y75029D01* +X713543Y75076D01* +X713542Y75139D01* +X713497Y75280D01* +X713479Y75356D01* +X712977Y76567D01* +X712977Y80913D01* +X714031Y83457D01* +X714032Y83459D01* +X714032Y83460D01* +X714065Y83588D01* +X714102Y83733D01* +X714102Y83734D01* +X714103Y83736D01* +X714098Y83876D01* +X714094Y84017D01* +X714094Y84018D01* +X714093Y84020D01* +X714052Y84149D01* +X714007Y84287D01* +X714006Y84289D01* +X714006Y84290D01* +X713997Y84302D01* +X713849Y84524D01* +X713826Y84543D01* +X713811Y84564D01* +X711960Y86415D01* +X711913Y86450D01* +X711873Y86492D01* +X711800Y86535D01* +X711733Y86586D01* +X711678Y86606D01* +X711628Y86636D01* +X711546Y86657D01* +X711467Y86687D01* +X711409Y86692D01* +X711352Y86706D01* +X711268Y86703D01* +X711184Y86710D01* +X711127Y86699D01* +X711068Y86697D01* +X710988Y86671D01* +X710905Y86655D01* +X710853Y86628D01* +X710798Y86610D01* +X710741Y86569D01* +X710653Y86524D01* +X710581Y86455D01* +X710524Y86415D01* +X708397Y84287D01* +X698763Y84287D01* +X696678Y86373D01* +X696631Y86408D01* +X696591Y86450D01* +X696518Y86493D01* +X696451Y86543D01* +X696396Y86564D01* +X696346Y86594D01* +X696264Y86615D01* +X696185Y86645D01* +X696127Y86649D01* +X696070Y86664D01* +X695986Y86661D01* +X695902Y86668D01* +X695844Y86657D01* +X695786Y86655D01* +X695706Y86629D01* +X695623Y86612D01* +X695571Y86585D01* +X695515Y86567D01* +X695459Y86527D01* +X695371Y86481D01* +X695298Y86413D01* +X695242Y86373D01* +X693157Y84287D01* +X683523Y84287D01* +X681626Y86185D01* +X681602Y86202D01* +X681583Y86225D01* +X681489Y86287D01* +X681399Y86355D01* +X681371Y86366D01* +X681347Y86382D01* +X681239Y86416D01* +X681133Y86457D01* +X681104Y86459D01* +X681076Y86468D01* +X680962Y86471D01* +X680850Y86480D01* +X680821Y86474D01* +X680792Y86475D01* +X680682Y86447D01* +X680571Y86424D01* +X680545Y86411D01* +X680517Y86403D01* +X680419Y86346D01* +X680319Y86293D01* +X680297Y86273D01* +X680272Y86258D01* +X680195Y86176D01* +X680113Y86098D01* +X680098Y86072D01* +X680078Y86051D01* +X680026Y85950D01* +X679969Y85852D01* +X679962Y85824D01* +X679948Y85798D01* +X679935Y85720D01* +X679899Y85577D01* +X679901Y85514D01* +X679893Y85467D01* +X679893Y75868D01* +X677472Y73447D01* +X666248Y73447D01* +X663827Y75868D01* +X663827Y112095D01* +X663834Y112101D01* +X663896Y112195D01* +X663964Y112285D01* +X663975Y112313D01* +X663991Y112337D01* +X664025Y112445D01* +X664066Y112551D01* +X664068Y112580D01* +X664077Y112608D01* +X664080Y112721D01* +X664089Y112834D01* +X664084Y112863D01* +X664084Y112892D01* +X664056Y113002D01* +X664033Y113113D01* +X664020Y113139D01* +X664012Y113167D01* +X663955Y113265D01* +X663902Y113365D01* +X663882Y113387D01* +X663867Y113412D01* +X663785Y113489D01* +X663707Y113571D01* +X663681Y113586D01* +X663660Y113606D01* +X663559Y113658D01* +X663461Y113715D01* +X663433Y113722D01* +X663407Y113736D01* +X663330Y113749D01* +X663186Y113785D01* +X663123Y113783D01* +X663076Y113791D01* +X659384Y113791D01* +X659326Y113783D01* +X659268Y113785D01* +X659186Y113763D01* +X659102Y113751D01* +X659049Y113728D01* +X658993Y113713D01* +X658920Y113670D01* +X658843Y113635D01* +X658798Y113597D01* +X658748Y113568D01* +X658690Y113506D01* +X658626Y113452D01* +X658594Y113403D01* +X658554Y113360D01* +X658515Y113285D01* +X658468Y113215D01* +X658451Y113159D01* +X658424Y113107D01* +X658413Y113039D01* +X658383Y112944D01* +X658380Y112844D01* +X658369Y112776D01* +X658369Y49784D01* +X658377Y49726D01* +X658375Y49668D01* +X658397Y49586D01* +X658409Y49502D01* +X658432Y49449D01* +X658447Y49393D01* +X658490Y49320D01* +X658525Y49243D01* +X658563Y49198D01* +X658592Y49148D01* +X658654Y49090D01* +X658708Y49026D01* +X658757Y48994D01* +X658800Y48954D01* +X658875Y48915D01* +X658945Y48868D01* +X659001Y48851D01* +X659053Y48824D01* +X659121Y48813D01* +X659216Y48783D01* +X659316Y48780D01* +X659384Y48769D01* +X710751Y48769D01* +X710780Y48773D01* +G37* +G36* +X1085597Y172554D02* +X1085597Y172554D01* +X1085712Y172551D01* +X1085739Y172558D01* +X1085767Y172559D01* +X1085876Y172594D01* +X1085987Y172623D01* +X1086011Y172637D01* +X1086038Y172646D01* +X1086133Y172710D01* +X1086232Y172768D01* +X1086251Y172788D01* +X1086274Y172804D01* +X1086348Y172892D01* +X1086426Y172976D01* +X1086439Y173000D01* +X1086457Y173021D01* +X1086503Y173126D01* +X1086556Y173229D01* +X1086560Y173253D01* +X1086572Y173281D01* +X1086609Y173545D01* +X1086611Y173560D01* +X1086611Y241267D01* +X1086599Y241354D01* +X1086596Y241441D01* +X1086579Y241494D01* +X1086571Y241549D01* +X1086536Y241628D01* +X1086509Y241712D01* +X1086481Y241751D01* +X1086455Y241808D01* +X1086359Y241921D01* +X1086314Y241985D01* +X1066573Y261726D01* +X1066527Y261761D01* +X1066486Y261803D01* +X1066414Y261846D01* +X1066346Y261896D01* +X1066292Y261917D01* +X1066241Y261947D01* +X1066159Y261968D01* +X1066081Y261998D01* +X1066022Y262002D01* +X1065966Y262017D01* +X1065881Y262014D01* +X1065797Y262021D01* +X1065740Y262010D01* +X1065682Y262008D01* +X1065601Y261982D01* +X1065519Y261965D01* +X1065467Y261938D01* +X1065411Y261920D01* +X1065355Y261880D01* +X1065266Y261834D01* +X1065194Y261766D01* +X1065138Y261726D01* +X1063740Y260328D01* +X1063706Y260283D01* +X1063704Y260281D01* +X1063703Y260280D01* +X1063662Y260241D01* +X1063620Y260168D01* +X1063569Y260101D01* +X1063549Y260048D01* +X1063547Y260045D01* +X1063546Y260042D01* +X1063519Y259996D01* +X1063498Y259914D01* +X1063468Y259835D01* +X1063463Y259781D01* +X1063461Y259774D01* +X1063461Y259768D01* +X1063449Y259720D01* +X1063451Y259636D01* +X1063444Y259552D01* +X1063454Y259503D01* +X1063454Y259489D01* +X1063456Y259479D01* +X1063458Y259436D01* +X1063484Y259356D01* +X1063500Y259273D01* +X1063520Y259235D01* +X1063525Y259214D01* +X1063534Y259200D01* +X1063545Y259165D01* +X1063585Y259109D01* +X1063631Y259021D01* +X1063656Y258994D01* +X1063671Y258970D01* +X1063713Y258931D01* +X1063740Y258892D01* +X1064953Y257679D01* +X1064953Y248841D01* +X1063740Y247628D01* +X1063705Y247581D01* +X1063662Y247541D01* +X1063620Y247468D01* +X1063569Y247401D01* +X1063548Y247346D01* +X1063519Y247296D01* +X1063498Y247214D01* +X1063468Y247135D01* +X1063463Y247077D01* +X1063449Y247020D01* +X1063451Y246936D01* +X1063444Y246852D01* +X1063456Y246794D01* +X1063458Y246736D01* +X1063484Y246656D01* +X1063500Y246573D01* +X1063527Y246521D01* +X1063545Y246465D01* +X1063585Y246409D01* +X1063631Y246321D01* +X1063700Y246248D01* +X1063740Y246192D01* +X1064953Y244979D01* +X1064953Y236141D01* +X1063740Y234928D01* +X1063727Y234911D01* +X1063714Y234900D01* +X1063697Y234874D01* +X1063662Y234841D01* +X1063620Y234768D01* +X1063569Y234701D01* +X1063548Y234646D01* +X1063519Y234596D01* +X1063498Y234514D01* +X1063468Y234435D01* +X1063463Y234377D01* +X1063449Y234320D01* +X1063451Y234236D01* +X1063444Y234152D01* +X1063456Y234094D01* +X1063458Y234036D01* +X1063484Y233956D01* +X1063500Y233873D01* +X1063527Y233821D01* +X1063545Y233765D01* +X1063585Y233709D01* +X1063631Y233621D01* +X1063700Y233548D01* +X1063740Y233492D01* +X1064953Y232279D01* +X1064953Y223441D01* +X1063740Y222228D01* +X1063705Y222181D01* +X1063662Y222141D01* +X1063620Y222068D01* +X1063569Y222001D01* +X1063548Y221946D01* +X1063519Y221896D01* +X1063498Y221814D01* +X1063468Y221735D01* +X1063463Y221677D01* +X1063449Y221620D01* +X1063451Y221536D01* +X1063444Y221452D01* +X1063456Y221394D01* +X1063458Y221336D01* +X1063484Y221256D01* +X1063500Y221173D01* +X1063527Y221121D01* +X1063545Y221065D01* +X1063585Y221009D01* +X1063631Y220921D01* +X1063700Y220848D01* +X1063740Y220792D01* +X1064953Y219579D01* +X1064953Y210741D01* +X1063740Y209528D01* +X1063705Y209481D01* +X1063662Y209441D01* +X1063620Y209368D01* +X1063569Y209301D01* +X1063548Y209246D01* +X1063519Y209196D01* +X1063498Y209114D01* +X1063468Y209035D01* +X1063463Y208977D01* +X1063449Y208920D01* +X1063451Y208836D01* +X1063444Y208752D01* +X1063456Y208694D01* +X1063458Y208636D01* +X1063484Y208556D01* +X1063500Y208473D01* +X1063527Y208421D01* +X1063545Y208365D01* +X1063585Y208309D01* +X1063631Y208221D01* +X1063700Y208148D01* +X1063740Y208092D01* +X1064953Y206879D01* +X1064953Y198041D01* +X1063740Y196828D01* +X1063705Y196781D01* +X1063662Y196741D01* +X1063620Y196668D01* +X1063569Y196601D01* +X1063548Y196546D01* +X1063519Y196496D01* +X1063498Y196414D01* +X1063468Y196335D01* +X1063463Y196277D01* +X1063449Y196220D01* +X1063451Y196136D01* +X1063444Y196052D01* +X1063456Y195994D01* +X1063458Y195936D01* +X1063484Y195856D01* +X1063500Y195773D01* +X1063527Y195721D01* +X1063545Y195665D01* +X1063585Y195609D01* +X1063631Y195521D01* +X1063700Y195448D01* +X1063740Y195392D01* +X1064953Y194179D01* +X1064953Y193824D01* +X1064961Y193766D01* +X1064959Y193708D01* +X1064981Y193626D01* +X1064993Y193542D01* +X1065016Y193489D01* +X1065031Y193433D01* +X1065074Y193360D01* +X1065109Y193283D01* +X1065147Y193238D01* +X1065176Y193188D01* +X1065238Y193130D01* +X1065292Y193066D01* +X1065341Y193034D01* +X1065384Y192994D01* +X1065459Y192955D01* +X1065529Y192908D01* +X1065585Y192891D01* +X1065637Y192864D01* +X1065705Y192853D01* +X1065800Y192823D01* +X1065900Y192820D01* +X1065968Y192809D01* +X1068404Y192809D01* +X1068406Y192809D01* +X1068407Y192809D01* +X1068549Y192829D01* +X1068686Y192849D01* +X1068687Y192849D01* +X1068689Y192849D01* +X1068818Y192908D01* +X1068945Y192965D01* +X1068946Y192966D01* +X1068948Y192967D01* +X1069057Y193060D01* +X1069162Y193148D01* +X1069163Y193150D01* +X1069164Y193151D01* +X1069172Y193164D01* +X1069320Y193385D01* +X1069329Y193414D01* +X1069342Y193435D01* +X1069491Y193794D01* +X1071126Y195429D01* +X1073263Y196315D01* +X1075577Y196315D01* +X1077714Y195429D01* +X1079349Y193794D01* +X1080235Y191657D01* +X1080235Y189343D01* +X1079349Y187206D01* +X1077714Y185571D01* +X1076549Y185088D01* +X1076524Y185073D01* +X1076496Y185064D01* +X1076401Y185001D01* +X1076304Y184943D01* +X1076284Y184922D01* +X1076259Y184906D01* +X1076187Y184819D01* +X1076109Y184737D01* +X1076095Y184711D01* +X1076077Y184688D01* +X1076031Y184585D01* +X1075979Y184484D01* +X1075973Y184455D01* +X1075961Y184428D01* +X1075945Y184316D01* +X1075924Y184205D01* +X1075926Y184176D01* +X1075922Y184147D01* +X1075938Y184035D01* +X1075948Y183922D01* +X1075959Y183894D01* +X1075963Y183866D01* +X1076009Y183763D01* +X1076050Y183657D01* +X1076068Y183633D01* +X1076080Y183606D01* +X1076153Y183520D01* +X1076222Y183430D01* +X1076245Y183412D01* +X1076264Y183390D01* +X1076331Y183348D01* +X1076449Y183260D01* +X1076508Y183238D01* +X1076549Y183212D01* +X1077714Y182729D01* +X1079349Y181094D01* +X1080235Y178957D01* +X1080235Y176643D01* +X1079444Y174734D01* +X1079437Y174706D01* +X1079423Y174680D01* +X1079401Y174569D01* +X1079373Y174459D01* +X1079374Y174430D01* +X1079368Y174401D01* +X1079378Y174288D01* +X1079381Y174175D01* +X1079390Y174147D01* +X1079393Y174118D01* +X1079433Y174012D01* +X1079468Y173904D01* +X1079484Y173880D01* +X1079495Y173852D01* +X1079563Y173762D01* +X1079626Y173668D01* +X1079649Y173649D01* +X1079666Y173626D01* +X1079757Y173558D01* +X1079844Y173485D01* +X1079871Y173473D01* +X1079894Y173456D01* +X1080000Y173416D01* +X1080104Y173370D01* +X1080133Y173366D01* +X1080160Y173355D01* +X1080273Y173346D01* +X1080385Y173331D01* +X1080414Y173335D01* +X1080443Y173333D01* +X1080520Y173350D01* +X1080666Y173371D01* +X1080724Y173397D01* +X1080771Y173408D01* +X1080883Y173455D01* +X1083197Y173455D01* +X1085207Y172622D01* +X1085319Y172593D01* +X1085428Y172558D01* +X1085456Y172558D01* +X1085483Y172551D01* +X1085597Y172554D01* +G37* +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +G36* +X478510Y208881D02* +X478510Y208881D01* +X478568Y208879D01* +X478650Y208901D01* +X478734Y208913D01* +X478787Y208936D01* +X478843Y208951D01* +X478916Y208994D01* +X478993Y209029D01* +X479038Y209067D01* +X479088Y209096D01* +X479146Y209158D01* +X479210Y209212D01* +X479242Y209261D01* +X479282Y209304D01* +X479321Y209379D01* +X479368Y209449D01* +X479385Y209505D01* +X479412Y209557D01* +X479423Y209625D01* +X479453Y209720D01* +X479456Y209820D01* +X479467Y209888D01* +X479467Y217383D01* +X479496Y217439D01* +X479504Y217486D01* +X479526Y217545D01* +X479538Y217693D01* +X479551Y217770D01* +X479551Y233165D01* +X479539Y233252D01* +X479536Y233339D01* +X479519Y233392D01* +X479511Y233446D01* +X479476Y233526D01* +X479449Y233609D01* +X479421Y233649D01* +X479395Y233706D01* +X479299Y233819D01* +X479295Y233825D01* +X479283Y233845D01* +X479276Y233852D01* +X479254Y233883D01* +X477671Y235466D01* +X476785Y237603D01* +X476785Y239917D01* +X477671Y242054D01* +X479306Y243689D01* +X479906Y243938D01* +X480005Y243996D01* +X480107Y244049D01* +X480127Y244068D01* +X480151Y244082D01* +X480230Y244166D01* +X480313Y244245D01* +X480327Y244269D01* +X480346Y244289D01* +X480399Y244391D01* +X480457Y244490D01* +X480463Y244517D01* +X480476Y244542D01* +X480498Y244655D01* +X480527Y244766D01* +X480526Y244793D01* +X480531Y244821D01* +X480521Y244935D01* +X480518Y245050D01* +X480509Y245076D01* +X480507Y245104D01* +X480465Y245211D01* +X480430Y245320D01* +X480416Y245341D01* +X480405Y245369D01* +X480244Y245582D01* +X480235Y245594D01* +X480233Y245596D01* +X480107Y245722D01* +X480107Y251784D01* +X480127Y251801D01* +X480190Y251895D01* +X480258Y251985D01* +X480269Y252013D01* +X480285Y252037D01* +X480319Y252145D01* +X480359Y252251D01* +X480362Y252280D01* +X480371Y252308D01* +X480374Y252421D01* +X480383Y252534D01* +X480377Y252563D01* +X480378Y252592D01* +X480349Y252702D01* +X480327Y252813D01* +X480314Y252839D01* +X480306Y252867D01* +X480248Y252965D01* +X480196Y253065D01* +X480176Y253087D01* +X480161Y253112D01* +X480078Y253189D01* +X480000Y253271D01* +X479975Y253286D01* +X479954Y253306D01* +X479853Y253358D01* +X479755Y253415D01* +X479727Y253422D01* +X479700Y253436D01* +X479623Y253449D01* +X479480Y253485D01* +X479417Y253483D01* +X479369Y253491D01* +X475495Y253491D01* +X475408Y253479D01* +X475321Y253476D01* +X475268Y253459D01* +X475214Y253451D01* +X475134Y253416D01* +X475051Y253389D01* +X475011Y253361D01* +X474954Y253335D01* +X474841Y253239D01* +X474777Y253194D01* +X473194Y251611D01* +X471057Y250725D01* +X468743Y250725D01* +X466606Y251611D01* +X464971Y253246D01* +X464497Y254389D01* +X464497Y254390D01* +X464496Y254391D01* +X464425Y254512D01* +X464353Y254633D01* +X464352Y254634D01* +X464351Y254636D01* +X464249Y254731D01* +X464146Y254829D01* +X464145Y254829D01* +X464144Y254830D01* +X464018Y254895D01* +X463893Y254959D01* +X463892Y254959D01* +X463890Y254960D01* +X463876Y254962D01* +X463615Y255014D01* +X463584Y255011D01* +X463559Y255015D01* +X461048Y255015D01* +X460990Y255007D01* +X460932Y255009D01* +X460850Y254987D01* +X460766Y254975D01* +X460713Y254952D01* +X460657Y254937D01* +X460584Y254894D01* +X460507Y254859D01* +X460462Y254821D01* +X460412Y254792D01* +X460354Y254730D01* +X460290Y254676D01* +X460258Y254627D01* +X460218Y254584D01* +X460179Y254509D01* +X460132Y254439D01* +X460115Y254383D01* +X460088Y254331D01* +X460086Y254316D01* +X457947Y252178D01* +X457937Y252164D01* +X457931Y252159D01* +X457914Y252133D01* +X457912Y252131D01* +X457870Y252091D01* +X457827Y252018D01* +X457777Y251951D01* +X457756Y251896D01* +X457726Y251846D01* +X457705Y251764D01* +X457675Y251685D01* +X457671Y251627D01* +X457656Y251570D01* +X457659Y251486D01* +X457652Y251402D01* +X457663Y251344D01* +X457665Y251286D01* +X457691Y251206D01* +X457708Y251123D01* +X457735Y251071D01* +X457753Y251015D01* +X457793Y250959D01* +X457839Y250871D01* +X457907Y250798D01* +X457947Y250742D01* +X460033Y248657D01* +X460033Y239023D01* +X457817Y236807D01* +X447183Y236807D01* +X445218Y238773D01* +X445171Y238808D01* +X445131Y238850D01* +X445058Y238893D01* +X444991Y238943D01* +X444936Y238964D01* +X444886Y238994D01* +X444804Y239015D01* +X444725Y239045D01* +X444667Y239049D01* +X444610Y239064D01* +X444526Y239061D01* +X444442Y239068D01* +X444384Y239057D01* +X444326Y239055D01* +X444246Y239029D01* +X444163Y239012D01* +X444111Y238985D01* +X444055Y238967D01* +X443999Y238927D01* +X443911Y238881D01* +X443838Y238813D01* +X443782Y238773D01* +X441947Y236938D01* +X441912Y236891D01* +X441870Y236851D01* +X441827Y236778D01* +X441777Y236711D01* +X441756Y236656D01* +X441726Y236606D01* +X441705Y236524D01* +X441675Y236445D01* +X441671Y236387D01* +X441656Y236330D01* +X441659Y236246D01* +X441652Y236162D01* +X441663Y236104D01* +X441665Y236046D01* +X441691Y235966D01* +X441708Y235883D01* +X441735Y235831D01* +X441753Y235775D01* +X441793Y235719D01* +X441839Y235631D01* +X441907Y235558D01* +X441947Y235502D01* +X444033Y233417D01* +X444033Y226677D01* +X444045Y226590D01* +X444048Y226503D01* +X444065Y226450D01* +X444073Y226395D01* +X444108Y226315D01* +X444135Y226232D01* +X444163Y226193D01* +X444189Y226136D01* +X444285Y226023D01* +X444330Y225959D01* +X457481Y212808D01* +X457528Y212773D01* +X457568Y212730D01* +X457641Y212688D01* +X457708Y212637D01* +X457763Y212616D01* +X457813Y212586D01* +X457895Y212566D01* +X457974Y212536D01* +X458032Y212531D01* +X458089Y212516D01* +X458173Y212519D01* +X458257Y212512D01* +X458315Y212524D01* +X458373Y212525D01* +X458453Y212551D01* +X458536Y212568D01* +X458588Y212595D01* +X458644Y212613D01* +X458700Y212653D01* +X458788Y212699D01* +X458861Y212768D01* +X458917Y212808D01* +X459002Y212893D01* +X465558Y212893D01* +X466995Y211456D01* +X467065Y211404D01* +X467129Y211344D01* +X467178Y211318D01* +X467222Y211285D01* +X467304Y211254D01* +X467382Y211214D01* +X467429Y211206D01* +X467488Y211184D01* +X467635Y211172D01* +X467713Y211159D01* +X468623Y211159D01* +X470611Y209170D01* +X470681Y209118D01* +X470745Y209058D01* +X470795Y209032D01* +X470839Y208999D01* +X470920Y208968D01* +X470998Y208928D01* +X471046Y208920D01* +X471104Y208898D01* +X471252Y208886D01* +X471329Y208873D01* +X478452Y208873D01* +X478510Y208881D01* +G37* +G36* +X1210729Y143539D02* +X1210729Y143539D01* +X1210787Y143541D01* +X1210868Y143567D01* +X1210950Y143584D01* +X1211002Y143611D01* +X1211058Y143629D01* +X1211114Y143669D01* +X1211203Y143715D01* +X1211275Y143783D01* +X1211331Y143823D01* +X1212100Y144592D01* +X1212135Y144639D01* +X1212178Y144679D01* +X1212220Y144752D01* +X1212271Y144819D01* +X1212292Y144874D01* +X1212321Y144924D01* +X1212342Y145006D01* +X1212372Y145085D01* +X1212377Y145143D01* +X1212391Y145200D01* +X1212389Y145284D01* +X1212396Y145368D01* +X1212384Y145426D01* +X1212382Y145484D01* +X1212356Y145564D01* +X1212340Y145647D01* +X1212313Y145699D01* +X1212295Y145755D01* +X1212255Y145811D01* +X1212209Y145899D01* +X1212140Y145972D01* +X1212100Y146028D01* +X1210887Y147241D01* +X1210887Y156079D01* +X1212100Y157292D01* +X1212135Y157339D01* +X1212178Y157379D01* +X1212220Y157452D01* +X1212271Y157519D01* +X1212292Y157574D01* +X1212321Y157624D01* +X1212342Y157706D01* +X1212372Y157785D01* +X1212377Y157843D01* +X1212391Y157900D01* +X1212389Y157984D01* +X1212396Y158068D01* +X1212384Y158126D01* +X1212382Y158184D01* +X1212356Y158264D01* +X1212340Y158347D01* +X1212313Y158399D01* +X1212295Y158455D01* +X1212255Y158511D01* +X1212209Y158599D01* +X1212140Y158672D01* +X1212100Y158728D01* +X1210887Y159941D01* +X1210887Y168779D01* +X1212100Y169992D01* +X1212135Y170039D01* +X1212178Y170079D01* +X1212220Y170152D01* +X1212271Y170219D01* +X1212292Y170274D01* +X1212321Y170324D01* +X1212342Y170406D01* +X1212372Y170485D01* +X1212377Y170543D01* +X1212391Y170600D01* +X1212389Y170684D01* +X1212396Y170768D01* +X1212384Y170826D01* +X1212382Y170884D01* +X1212356Y170964D01* +X1212340Y171047D01* +X1212313Y171099D01* +X1212295Y171155D01* +X1212255Y171211D01* +X1212209Y171299D01* +X1212140Y171372D01* +X1212100Y171428D01* +X1210887Y172641D01* +X1210887Y172996D01* +X1210879Y173054D01* +X1210881Y173112D01* +X1210859Y173194D01* +X1210847Y173278D01* +X1210824Y173331D01* +X1210809Y173387D01* +X1210766Y173460D01* +X1210731Y173537D01* +X1210693Y173582D01* +X1210664Y173632D01* +X1210602Y173690D01* +X1210548Y173754D01* +X1210499Y173786D01* +X1210456Y173826D01* +X1210381Y173865D01* +X1210311Y173912D01* +X1210255Y173929D01* +X1210203Y173956D01* +X1210135Y173967D01* +X1210040Y173997D01* +X1209940Y174000D01* +X1209872Y174011D01* +X1208517Y174011D01* +X1208301Y174228D01* +X1208231Y174280D01* +X1208167Y174340D01* +X1208117Y174366D01* +X1208073Y174399D01* +X1207992Y174430D01* +X1207914Y174470D01* +X1207866Y174478D01* +X1207808Y174500D01* +X1207660Y174512D01* +X1207583Y174525D01* +X1205343Y174525D01* +X1203206Y175411D01* +X1201571Y177046D01* +X1200685Y179183D01* +X1200685Y181497D01* +X1201571Y183634D01* +X1202915Y184978D01* +X1202933Y185002D01* +X1202955Y185021D01* +X1203018Y185115D01* +X1203086Y185205D01* +X1203096Y185233D01* +X1203112Y185257D01* +X1203147Y185365D01* +X1203187Y185471D01* +X1203189Y185500D01* +X1203198Y185528D01* +X1203201Y185642D01* +X1203211Y185754D01* +X1203205Y185783D01* +X1203206Y185812D01* +X1203177Y185922D01* +X1203155Y186033D01* +X1203141Y186059D01* +X1203134Y186087D01* +X1203076Y186185D01* +X1203024Y186285D01* +X1203003Y186307D01* +X1202988Y186332D01* +X1202906Y186409D01* +X1202828Y186491D01* +X1202803Y186506D01* +X1202781Y186526D01* +X1202680Y186578D01* +X1202583Y186635D01* +X1202554Y186642D01* +X1202528Y186656D01* +X1202451Y186669D01* +X1202307Y186705D01* +X1202245Y186703D01* +X1202197Y186711D01* +X1178883Y186711D01* +X1178797Y186699D01* +X1178709Y186696D01* +X1178657Y186679D01* +X1178602Y186671D01* +X1178522Y186636D01* +X1178439Y186609D01* +X1178400Y186581D01* +X1178342Y186555D01* +X1178229Y186459D01* +X1178165Y186414D01* +X1164915Y173164D01* +X1164880Y173117D01* +X1164838Y173077D01* +X1164795Y173004D01* +X1164744Y172937D01* +X1164724Y172882D01* +X1164694Y172831D01* +X1164673Y172750D01* +X1164643Y172671D01* +X1164638Y172613D01* +X1164624Y172556D01* +X1164627Y172472D01* +X1164620Y172388D01* +X1164631Y172330D01* +X1164633Y172272D01* +X1164659Y172192D01* +X1164675Y172109D01* +X1164702Y172057D01* +X1164720Y172001D01* +X1164761Y171945D01* +X1164806Y171857D01* +X1164875Y171784D01* +X1164915Y171728D01* +X1165709Y170934D01* +X1166595Y168797D01* +X1166595Y166727D01* +X1166607Y166641D01* +X1166610Y166553D01* +X1166627Y166501D01* +X1166635Y166446D01* +X1166670Y166366D01* +X1166697Y166283D01* +X1166725Y166244D01* +X1166751Y166186D01* +X1166847Y166073D01* +X1166892Y166009D01* +X1170551Y162350D01* +X1170621Y162298D01* +X1170685Y162238D01* +X1170735Y162212D01* +X1170779Y162179D01* +X1170860Y162148D01* +X1170938Y162108D01* +X1170986Y162100D01* +X1171044Y162078D01* +X1171192Y162066D01* +X1171269Y162053D01* +X1191666Y162053D01* +X1209896Y143823D01* +X1209942Y143788D01* +X1209983Y143746D01* +X1210055Y143703D01* +X1210123Y143653D01* +X1210177Y143632D01* +X1210228Y143602D01* +X1210309Y143581D01* +X1210388Y143551D01* +X1210447Y143546D01* +X1210503Y143532D01* +X1210588Y143535D01* +X1210672Y143528D01* +X1210729Y143539D01* +G37* +G36* +X412338Y336511D02* +X412338Y336511D01* +X412426Y336514D01* +X412478Y336531D01* +X412533Y336539D01* +X412613Y336574D01* +X412696Y336601D01* +X412736Y336629D01* +X412793Y336655D01* +X412906Y336751D01* +X412970Y336796D01* +X413843Y337669D01* +X416037Y338578D01* +X416088Y338608D01* +X416142Y338629D01* +X416210Y338680D01* +X416282Y338723D01* +X416322Y338765D01* +X416369Y338801D01* +X416420Y338868D01* +X416477Y338930D01* +X416504Y338982D01* +X416539Y339028D01* +X416569Y339107D01* +X416608Y339182D01* +X416619Y339240D01* +X416640Y339294D01* +X416646Y339378D01* +X416663Y339461D01* +X416658Y339520D01* +X416662Y339578D01* +X416647Y339645D01* +X416638Y339744D01* +X416602Y339838D01* +X416587Y339905D01* +X415825Y341743D01* +X415825Y344063D01* +X415813Y344149D01* +X415810Y344237D01* +X415793Y344289D01* +X415785Y344344D01* +X415750Y344424D01* +X415723Y344507D01* +X415695Y344546D01* +X415669Y344604D01* +X415573Y344717D01* +X415528Y344781D01* +X414198Y346111D01* +X414151Y346146D01* +X414111Y346188D01* +X414038Y346231D01* +X413970Y346282D01* +X413916Y346303D01* +X413865Y346332D01* +X413784Y346353D01* +X413705Y346383D01* +X413646Y346388D01* +X413590Y346402D01* +X413505Y346400D01* +X413421Y346407D01* +X413364Y346395D01* +X413306Y346393D01* +X413225Y346367D01* +X413143Y346351D01* +X413091Y346324D01* +X413035Y346306D01* +X412979Y346266D01* +X412890Y346220D01* +X412818Y346151D01* +X412762Y346111D01* +X412138Y345487D01* +X406082Y345487D01* +X404578Y346991D01* +X404531Y347026D01* +X404491Y347069D01* +X404418Y347111D01* +X404351Y347162D01* +X404296Y347183D01* +X404246Y347212D01* +X404164Y347233D01* +X404085Y347263D01* +X404027Y347268D01* +X403970Y347283D01* +X403886Y347280D01* +X403802Y347287D01* +X403744Y347275D01* +X403686Y347274D01* +X403606Y347248D01* +X403523Y347231D01* +X403471Y347204D01* +X403415Y347186D01* +X403359Y347146D01* +X403271Y347100D01* +X403198Y347031D01* +X403142Y346991D01* +X401638Y345487D01* +X395582Y345487D01* +X393895Y347174D01* +X393825Y347226D01* +X393761Y347286D01* +X393712Y347312D01* +X393668Y347345D01* +X393586Y347376D01* +X393508Y347416D01* +X393461Y347424D01* +X393402Y347446D01* +X393255Y347458D01* +X393177Y347471D01* +X392910Y347471D01* +X392852Y347463D01* +X392794Y347465D01* +X392712Y347443D01* +X392628Y347431D01* +X392575Y347408D01* +X392519Y347393D01* +X392446Y347350D01* +X392369Y347315D01* +X392324Y347277D01* +X392274Y347248D01* +X392216Y347186D01* +X392152Y347132D01* +X392120Y347083D01* +X392080Y347040D01* +X392041Y346965D01* +X391994Y346895D01* +X391977Y346839D01* +X391950Y346787D01* +X391939Y346719D01* +X391909Y346624D01* +X391906Y346524D01* +X391895Y346456D01* +X391895Y344283D01* +X391009Y342146D01* +X389374Y340511D01* +X387237Y339625D01* +X384923Y339625D01* +X382786Y340511D01* +X381151Y342146D01* +X380265Y344283D01* +X380265Y346523D01* +X380253Y346609D01* +X380250Y346697D01* +X380233Y346749D01* +X380225Y346804D01* +X380190Y346884D01* +X380163Y346967D01* +X380135Y347006D01* +X380109Y347064D01* +X380013Y347177D01* +X379968Y347241D01* +X377325Y349884D01* +X377255Y349936D01* +X377191Y349996D01* +X377141Y350022D01* +X377097Y350055D01* +X377016Y350086D01* +X376938Y350126D01* +X376890Y350134D01* +X376832Y350156D01* +X376684Y350168D01* +X376607Y350181D01* +X366113Y350181D01* +X366026Y350169D01* +X365939Y350166D01* +X365886Y350149D01* +X365831Y350141D01* +X365751Y350106D01* +X365668Y350079D01* +X365629Y350051D01* +X365572Y350025D01* +X365459Y349929D01* +X365395Y349884D01* +X363958Y348447D01* +X357402Y348447D01* +X356318Y349531D01* +X356271Y349566D01* +X356231Y349609D01* +X356158Y349651D01* +X356091Y349702D01* +X356036Y349723D01* +X355986Y349752D01* +X355904Y349773D01* +X355825Y349803D01* +X355767Y349808D01* +X355710Y349823D01* +X355626Y349820D01* +X355542Y349827D01* +X355484Y349815D01* +X355426Y349814D01* +X355346Y349788D01* +X355263Y349771D01* +X355211Y349744D01* +X355155Y349726D01* +X355099Y349686D01* +X355011Y349640D01* +X354938Y349571D01* +X354882Y349531D01* +X353798Y348447D01* +X347242Y348447D01* +X345805Y349884D01* +X345735Y349936D01* +X345671Y349996D01* +X345622Y350022D01* +X345578Y350055D01* +X345496Y350086D01* +X345418Y350126D01* +X345371Y350134D01* +X345312Y350156D01* +X345165Y350168D01* +X345087Y350181D01* +X343978Y350181D01* +X343920Y350173D01* +X343862Y350175D01* +X343780Y350153D01* +X343696Y350141D01* +X343643Y350118D01* +X343587Y350103D01* +X343514Y350060D01* +X343437Y350025D01* +X343392Y349987D01* +X343342Y349958D01* +X343284Y349896D01* +X343220Y349842D01* +X343188Y349793D01* +X343148Y349750D01* +X343109Y349675D01* +X343062Y349605D01* +X343045Y349549D01* +X343018Y349497D01* +X343007Y349429D01* +X342977Y349334D01* +X342974Y349234D01* +X342963Y349166D01* +X342963Y344018D01* +X342863Y343918D01* +X342828Y343871D01* +X342785Y343831D01* +X342742Y343758D01* +X342692Y343691D01* +X342671Y343636D01* +X342641Y343586D01* +X342620Y343504D01* +X342590Y343425D01* +X342586Y343367D01* +X342571Y343310D01* +X342574Y343226D01* +X342567Y343142D01* +X342578Y343084D01* +X342580Y343026D01* +X342606Y342946D01* +X342623Y342863D01* +X342650Y342811D01* +X342668Y342755D01* +X342708Y342699D01* +X342754Y342611D01* +X342822Y342538D01* +X342863Y342482D01* +X342963Y342382D01* +X342963Y337514D01* +X342971Y337456D01* +X342969Y337398D01* +X342991Y337316D01* +X343003Y337232D01* +X343026Y337179D01* +X343041Y337123D01* +X343084Y337050D01* +X343119Y336973D01* +X343157Y336928D01* +X343186Y336878D01* +X343248Y336820D01* +X343302Y336756D01* +X343351Y336724D01* +X343394Y336684D01* +X343469Y336645D01* +X343539Y336598D01* +X343595Y336581D01* +X343647Y336554D01* +X343715Y336543D01* +X343810Y336513D01* +X343910Y336510D01* +X343978Y336499D01* +X412252Y336499D01* +X412338Y336511D01* +G37* +G36* +X755446Y294999D02* +X755446Y294999D01* +X755567Y295011D01* +X755586Y295018D01* +X755607Y295021D01* +X755718Y295071D01* +X755831Y295116D01* +X755847Y295129D01* +X755866Y295138D01* +X755959Y295216D01* +X756055Y295291D01* +X756066Y295307D01* +X756083Y295321D01* +X756241Y295558D01* +X756242Y295564D01* +X756245Y295568D01* +X758183Y299724D01* +X760795Y300674D01* +X760847Y300702D01* +X760902Y300720D01* +X760971Y300768D01* +X761046Y300808D01* +X761088Y300849D01* +X761136Y300882D01* +X761189Y300947D01* +X761250Y301006D01* +X761279Y301057D01* +X761316Y301102D01* +X761349Y301179D01* +X761391Y301253D01* +X761405Y301310D01* +X761428Y301363D01* +X761438Y301447D01* +X761458Y301529D01* +X761456Y301587D01* +X761463Y301645D01* +X761450Y301713D01* +X761446Y301813D01* +X761414Y301908D01* +X761402Y301975D01* +X760451Y304587D01* +X761535Y306911D01* +X761575Y307042D01* +X761616Y307172D01* +X761616Y307178D01* +X761618Y307183D01* +X761620Y307320D01* +X761623Y307456D01* +X761622Y307462D01* +X761622Y307467D01* +X761586Y307600D01* +X761551Y307731D01* +X761549Y307736D01* +X761547Y307741D01* +X761476Y307859D01* +X761406Y307976D01* +X761402Y307980D01* +X761399Y307984D01* +X761299Y308076D01* +X761199Y308170D01* +X761194Y308173D01* +X761190Y308177D01* +X761067Y308238D01* +X760946Y308300D01* +X760941Y308301D01* +X760935Y308303D01* +X760656Y308354D01* +X760633Y308352D01* +X760615Y308355D01* +X702642Y308355D01* +X702507Y308336D01* +X702371Y308318D01* +X702366Y308316D01* +X702361Y308315D01* +X702237Y308260D01* +X702111Y308205D01* +X702106Y308201D01* +X702101Y308199D01* +X701998Y308111D01* +X701892Y308024D01* +X701888Y308019D01* +X701884Y308016D01* +X701809Y307902D01* +X701731Y307789D01* +X701730Y307783D01* +X701727Y307779D01* +X701685Y307647D01* +X701643Y307519D01* +X701643Y307513D01* +X701641Y307508D01* +X701637Y307372D01* +X701632Y307234D01* +X701634Y307230D01* +X701634Y307224D01* +X701705Y306949D01* +X701712Y306938D01* +X701714Y306931D01* +X701719Y306922D01* +X701722Y306911D01* +X702666Y304886D01* +X701716Y302274D01* +X701704Y302217D01* +X701682Y302163D01* +X701674Y302079D01* +X701657Y301996D01* +X701661Y301938D01* +X701656Y301880D01* +X701671Y301797D01* +X701677Y301713D01* +X701698Y301658D01* +X701709Y301600D01* +X701747Y301525D01* +X701776Y301446D01* +X701810Y301399D01* +X701837Y301347D01* +X701894Y301285D01* +X701944Y301217D01* +X701991Y301181D01* +X702030Y301138D01* +X702091Y301104D01* +X702170Y301044D01* +X702262Y301007D01* +X702323Y300973D01* +X704934Y300022D01* +X707012Y295568D01* +X707078Y295465D01* +X707140Y295361D01* +X707155Y295347D01* +X707167Y295329D01* +X707259Y295250D01* +X707347Y295166D01* +X707366Y295157D01* +X707382Y295143D01* +X707492Y295093D01* +X707601Y295037D01* +X707619Y295034D01* +X707640Y295024D01* +X707921Y294982D01* +X707927Y294982D01* +X707932Y294982D01* +X755325Y294982D01* +X755446Y294999D01* +G37* +G36* +X505416Y179832D02* +X505416Y179832D01* +X505474Y179834D01* +X505554Y179860D01* +X505637Y179876D01* +X505689Y179903D01* +X505745Y179921D01* +X505801Y179961D01* +X505889Y180007D01* +X505906Y180023D01* +X507302Y180023D01* +X507360Y180031D01* +X507418Y180029D01* +X507500Y180051D01* +X507584Y180063D01* +X507637Y180086D01* +X507693Y180101D01* +X507766Y180144D01* +X507843Y180179D01* +X507888Y180217D01* +X507938Y180246D01* +X507996Y180308D01* +X508060Y180362D01* +X508092Y180411D01* +X508132Y180454D01* +X508171Y180529D01* +X508218Y180599D01* +X508235Y180655D01* +X508262Y180707D01* +X508273Y180775D01* +X508303Y180870D01* +X508306Y180970D01* +X508317Y181038D01* +X508317Y182436D01* +X508344Y182482D01* +X508395Y182549D01* +X508416Y182604D01* +X508445Y182654D01* +X508466Y182736D01* +X508496Y182815D01* +X508501Y182873D01* +X508515Y182930D01* +X508513Y183014D01* +X508520Y183098D01* +X508508Y183156D01* +X508506Y183214D01* +X508480Y183294D01* +X508464Y183377D01* +X508437Y183429D01* +X508419Y183485D01* +X508379Y183541D01* +X508333Y183629D01* +X508317Y183646D01* +X508317Y187436D01* +X508344Y187482D01* +X508395Y187549D01* +X508416Y187604D01* +X508445Y187654D01* +X508466Y187736D01* +X508496Y187815D01* +X508501Y187873D01* +X508515Y187930D01* +X508513Y188014D01* +X508520Y188098D01* +X508508Y188156D01* +X508506Y188214D01* +X508480Y188294D01* +X508464Y188377D01* +X508437Y188429D01* +X508419Y188485D01* +X508379Y188541D01* +X508333Y188629D01* +X508317Y188646D01* +X508317Y192436D01* +X508344Y192482D01* +X508395Y192549D01* +X508416Y192604D01* +X508445Y192654D01* +X508466Y192736D01* +X508496Y192815D01* +X508501Y192873D01* +X508515Y192930D01* +X508513Y193014D01* +X508520Y193098D01* +X508508Y193156D01* +X508506Y193214D01* +X508480Y193294D01* +X508464Y193377D01* +X508437Y193429D01* +X508419Y193485D01* +X508379Y193541D01* +X508333Y193629D01* +X508317Y193646D01* +X508317Y197436D01* +X508344Y197482D01* +X508395Y197549D01* +X508416Y197604D01* +X508445Y197654D01* +X508466Y197736D01* +X508496Y197815D01* +X508501Y197873D01* +X508515Y197930D01* +X508513Y198014D01* +X508520Y198098D01* +X508508Y198156D01* +X508506Y198214D01* +X508480Y198294D01* +X508464Y198377D01* +X508437Y198429D01* +X508419Y198485D01* +X508379Y198541D01* +X508333Y198629D01* +X508317Y198646D01* +X508317Y202436D01* +X508344Y202482D01* +X508395Y202549D01* +X508416Y202604D01* +X508445Y202654D01* +X508466Y202736D01* +X508496Y202815D01* +X508501Y202873D01* +X508515Y202930D01* +X508513Y203014D01* +X508520Y203098D01* +X508508Y203156D01* +X508506Y203214D01* +X508480Y203294D01* +X508464Y203377D01* +X508437Y203429D01* +X508419Y203485D01* +X508379Y203541D01* +X508333Y203629D01* +X508317Y203646D01* +X508317Y205042D01* +X508309Y205100D01* +X508311Y205158D01* +X508289Y205240D01* +X508277Y205324D01* +X508254Y205377D01* +X508239Y205433D01* +X508196Y205506D01* +X508161Y205583D01* +X508123Y205628D01* +X508094Y205678D01* +X508032Y205736D01* +X507978Y205800D01* +X507929Y205832D01* +X507886Y205872D01* +X507811Y205911D01* +X507741Y205958D01* +X507685Y205975D01* +X507633Y206002D01* +X507565Y206013D01* +X507470Y206043D01* +X507370Y206046D01* +X507302Y206057D01* +X505904Y206057D01* +X505858Y206084D01* +X505791Y206135D01* +X505736Y206156D01* +X505686Y206185D01* +X505604Y206206D01* +X505525Y206236D01* +X505467Y206241D01* +X505410Y206255D01* +X505326Y206253D01* +X505242Y206260D01* +X505184Y206248D01* +X505126Y206246D01* +X505046Y206220D01* +X504963Y206204D01* +X504911Y206177D01* +X504855Y206159D01* +X504799Y206119D01* +X504711Y206073D01* +X504694Y206057D01* +X500904Y206057D01* +X500858Y206084D01* +X500791Y206135D01* +X500736Y206156D01* +X500686Y206185D01* +X500604Y206206D01* +X500525Y206236D01* +X500467Y206241D01* +X500410Y206255D01* +X500326Y206253D01* +X500242Y206260D01* +X500184Y206248D01* +X500126Y206246D01* +X500046Y206220D01* +X499963Y206204D01* +X499911Y206177D01* +X499855Y206159D01* +X499799Y206119D01* +X499711Y206073D01* +X499694Y206057D01* +X495904Y206057D01* +X495858Y206084D01* +X495791Y206135D01* +X495736Y206156D01* +X495686Y206185D01* +X495604Y206206D01* +X495525Y206236D01* +X495467Y206241D01* +X495410Y206255D01* +X495326Y206253D01* +X495242Y206260D01* +X495184Y206248D01* +X495126Y206246D01* +X495046Y206220D01* +X494963Y206204D01* +X494911Y206177D01* +X494855Y206159D01* +X494799Y206119D01* +X494711Y206073D01* +X494694Y206057D01* +X490904Y206057D01* +X490858Y206084D01* +X490791Y206135D01* +X490736Y206156D01* +X490686Y206185D01* +X490604Y206206D01* +X490525Y206236D01* +X490467Y206241D01* +X490410Y206255D01* +X490326Y206253D01* +X490242Y206260D01* +X490184Y206248D01* +X490126Y206246D01* +X490046Y206220D01* +X489963Y206204D01* +X489911Y206177D01* +X489855Y206159D01* +X489799Y206119D01* +X489711Y206073D01* +X489694Y206057D01* +X485904Y206057D01* +X485858Y206084D01* +X485791Y206135D01* +X485736Y206156D01* +X485686Y206185D01* +X485604Y206206D01* +X485525Y206236D01* +X485467Y206241D01* +X485410Y206255D01* +X485326Y206253D01* +X485242Y206260D01* +X485184Y206248D01* +X485126Y206246D01* +X485046Y206220D01* +X484963Y206204D01* +X484911Y206177D01* +X484855Y206159D01* +X484799Y206119D01* +X484711Y206073D01* +X484694Y206057D01* +X483298Y206057D01* +X483240Y206049D01* +X483182Y206051D01* +X483100Y206029D01* +X483016Y206017D01* +X482963Y205994D01* +X482907Y205979D01* +X482834Y205936D01* +X482757Y205901D01* +X482712Y205863D01* +X482662Y205834D01* +X482604Y205772D01* +X482540Y205718D01* +X482508Y205669D01* +X482468Y205626D01* +X482429Y205551D01* +X482382Y205481D01* +X482365Y205425D01* +X482338Y205373D01* +X482327Y205305D01* +X482297Y205210D01* +X482294Y205110D01* +X482283Y205042D01* +X482283Y203644D01* +X482256Y203598D01* +X482205Y203531D01* +X482184Y203476D01* +X482155Y203426D01* +X482134Y203344D01* +X482104Y203265D01* +X482099Y203207D01* +X482085Y203150D01* +X482087Y203066D01* +X482080Y202982D01* +X482092Y202924D01* +X482094Y202866D01* +X482120Y202786D01* +X482136Y202703D01* +X482163Y202651D01* +X482181Y202595D01* +X482221Y202539D01* +X482267Y202451D01* +X482283Y202434D01* +X482283Y198644D01* +X482256Y198598D01* +X482205Y198531D01* +X482184Y198476D01* +X482155Y198426D01* +X482134Y198344D01* +X482104Y198265D01* +X482099Y198207D01* +X482085Y198150D01* +X482087Y198066D01* +X482080Y197982D01* +X482092Y197924D01* +X482094Y197866D01* +X482120Y197786D01* +X482136Y197703D01* +X482163Y197651D01* +X482181Y197595D01* +X482221Y197539D01* +X482267Y197451D01* +X482283Y197434D01* +X482283Y193644D01* +X482256Y193598D01* +X482205Y193531D01* +X482184Y193476D01* +X482155Y193426D01* +X482134Y193344D01* +X482104Y193265D01* +X482099Y193207D01* +X482085Y193150D01* +X482087Y193066D01* +X482080Y192982D01* +X482092Y192924D01* +X482094Y192866D01* +X482120Y192786D01* +X482136Y192703D01* +X482163Y192651D01* +X482181Y192595D01* +X482221Y192539D01* +X482267Y192451D01* +X482283Y192434D01* +X482283Y188644D01* +X482256Y188598D01* +X482205Y188531D01* +X482184Y188476D01* +X482155Y188426D01* +X482134Y188344D01* +X482104Y188265D01* +X482099Y188207D01* +X482085Y188150D01* +X482087Y188066D01* +X482080Y187982D01* +X482092Y187924D01* +X482094Y187866D01* +X482120Y187786D01* +X482136Y187703D01* +X482163Y187651D01* +X482181Y187595D01* +X482221Y187539D01* +X482267Y187451D01* +X482283Y187434D01* +X482283Y183644D01* +X482256Y183598D01* +X482205Y183531D01* +X482184Y183476D01* +X482155Y183426D01* +X482134Y183344D01* +X482104Y183265D01* +X482099Y183207D01* +X482085Y183150D01* +X482087Y183066D01* +X482080Y182982D01* +X482092Y182924D01* +X482094Y182866D01* +X482120Y182786D01* +X482136Y182703D01* +X482163Y182651D01* +X482181Y182595D01* +X482221Y182539D01* +X482267Y182451D01* +X482283Y182434D01* +X482283Y181038D01* +X482291Y180980D01* +X482289Y180922D01* +X482311Y180840D01* +X482323Y180756D01* +X482346Y180703D01* +X482361Y180647D01* +X482404Y180574D01* +X482439Y180497D01* +X482477Y180452D01* +X482506Y180402D01* +X482568Y180344D01* +X482622Y180280D01* +X482671Y180248D01* +X482714Y180208D01* +X482789Y180169D01* +X482859Y180122D01* +X482915Y180105D01* +X482967Y180078D01* +X483035Y180067D01* +X483130Y180037D01* +X483230Y180034D01* +X483298Y180023D01* +X484696Y180023D01* +X484742Y179996D01* +X484809Y179945D01* +X484864Y179924D01* +X484914Y179895D01* +X484996Y179874D01* +X485075Y179844D01* +X485133Y179839D01* +X485190Y179825D01* +X485274Y179827D01* +X485358Y179820D01* +X485416Y179832D01* +X485474Y179834D01* +X485554Y179860D01* +X485637Y179876D01* +X485689Y179903D01* +X485745Y179921D01* +X485801Y179961D01* +X485889Y180007D01* +X485906Y180023D01* +X489696Y180023D01* +X489742Y179996D01* +X489809Y179945D01* +X489864Y179924D01* +X489914Y179895D01* +X489996Y179874D01* +X490075Y179844D01* +X490133Y179839D01* +X490190Y179825D01* +X490274Y179827D01* +X490358Y179820D01* +X490416Y179832D01* +X490474Y179834D01* +X490554Y179860D01* +X490637Y179876D01* +X490689Y179903D01* +X490745Y179921D01* +X490801Y179961D01* +X490889Y180007D01* +X490906Y180023D01* +X494696Y180023D01* +X494742Y179996D01* +X494809Y179945D01* +X494864Y179924D01* +X494914Y179895D01* +X494996Y179874D01* +X495075Y179844D01* +X495133Y179839D01* +X495190Y179825D01* +X495274Y179827D01* +X495358Y179820D01* +X495416Y179832D01* +X495474Y179834D01* +X495554Y179860D01* +X495637Y179876D01* +X495689Y179903D01* +X495745Y179921D01* +X495801Y179961D01* +X495889Y180007D01* +X495906Y180023D01* +X499696Y180023D01* +X499742Y179996D01* +X499809Y179945D01* +X499864Y179924D01* +X499914Y179895D01* +X499996Y179874D01* +X500075Y179844D01* +X500133Y179839D01* +X500190Y179825D01* +X500274Y179827D01* +X500358Y179820D01* +X500416Y179832D01* +X500474Y179834D01* +X500554Y179860D01* +X500637Y179876D01* +X500689Y179903D01* +X500745Y179921D01* +X500801Y179961D01* +X500889Y180007D01* +X500906Y180023D01* +X504696Y180023D01* +X504742Y179996D01* +X504809Y179945D01* +X504864Y179924D01* +X504914Y179895D01* +X504996Y179874D01* +X505075Y179844D01* +X505133Y179839D01* +X505190Y179825D01* +X505274Y179827D01* +X505358Y179820D01* +X505416Y179832D01* +G37* +G36* +X550744Y173241D02* +X550744Y173241D01* +X550831Y173244D01* +X550884Y173261D01* +X550939Y173269D01* +X551019Y173304D01* +X551102Y173331D01* +X551141Y173359D01* +X551198Y173385D01* +X551311Y173481D01* +X551375Y173526D01* +X553062Y175213D01* +X559118Y175213D01* +X560622Y173709D01* +X560669Y173674D01* +X560709Y173631D01* +X560782Y173589D01* +X560849Y173538D01* +X560904Y173517D01* +X560954Y173487D01* +X561036Y173467D01* +X561115Y173437D01* +X561173Y173432D01* +X561230Y173417D01* +X561314Y173420D01* +X561398Y173413D01* +X561456Y173425D01* +X561514Y173426D01* +X561594Y173452D01* +X561677Y173469D01* +X561729Y173496D01* +X561785Y173514D01* +X561841Y173554D01* +X561929Y173600D01* +X562002Y173669D01* +X562058Y173709D01* +X562721Y174372D01* +X562756Y174419D01* +X562799Y174459D01* +X562841Y174532D01* +X562892Y174599D01* +X562913Y174654D01* +X562942Y174704D01* +X562963Y174786D01* +X562993Y174865D01* +X562998Y174923D01* +X563013Y174980D01* +X563010Y175064D01* +X563017Y175148D01* +X563005Y175206D01* +X563004Y175264D01* +X562978Y175344D01* +X562961Y175427D01* +X562934Y175479D01* +X562916Y175535D01* +X562876Y175591D01* +X562830Y175679D01* +X562761Y175752D01* +X562721Y175808D01* +X561387Y177142D01* +X561387Y183198D01* +X562891Y184702D01* +X562926Y184749D01* +X562969Y184789D01* +X563011Y184862D01* +X563062Y184929D01* +X563083Y184984D01* +X563112Y185034D01* +X563133Y185116D01* +X563163Y185195D01* +X563168Y185253D01* +X563183Y185310D01* +X563180Y185394D01* +X563187Y185478D01* +X563175Y185536D01* +X563174Y185594D01* +X563148Y185674D01* +X563131Y185757D01* +X563104Y185809D01* +X563086Y185865D01* +X563046Y185921D01* +X563000Y186009D01* +X562931Y186082D01* +X562891Y186138D01* +X561387Y187642D01* +X561387Y193698D01* +X563074Y195385D01* +X563126Y195455D01* +X563186Y195518D01* +X563212Y195568D01* +X563245Y195612D01* +X563276Y195694D01* +X563316Y195772D01* +X563324Y195819D01* +X563346Y195878D01* +X563358Y196025D01* +X563371Y196103D01* +X563371Y196331D01* +X563359Y196417D01* +X563356Y196505D01* +X563339Y196557D01* +X563331Y196612D01* +X563296Y196692D01* +X563269Y196775D01* +X563241Y196814D01* +X563215Y196872D01* +X563119Y196985D01* +X563074Y197049D01* +X561402Y198720D01* +X560718Y200372D01* +X560703Y200397D01* +X560694Y200425D01* +X560631Y200519D01* +X560574Y200617D01* +X560552Y200637D01* +X560536Y200661D01* +X560449Y200734D01* +X560367Y200812D01* +X560341Y200825D01* +X560318Y200844D01* +X560215Y200890D01* +X560114Y200942D01* +X560085Y200948D01* +X560059Y200959D01* +X559947Y200975D01* +X559835Y200997D01* +X559806Y200994D01* +X559777Y200998D01* +X559665Y200982D01* +X559552Y200972D01* +X559525Y200962D01* +X559496Y200958D01* +X559392Y200911D01* +X559287Y200870D01* +X559263Y200853D01* +X559237Y200841D01* +X559150Y200767D01* +X559060Y200699D01* +X559043Y200675D01* +X559020Y200656D01* +X558979Y200590D01* +X558890Y200471D01* +X558868Y200412D01* +X558842Y200372D01* +X558649Y199906D01* +X557014Y198271D01* +X554877Y197385D01* +X552563Y197385D01* +X550426Y198271D01* +X548843Y199854D01* +X548773Y199906D01* +X548709Y199966D01* +X548660Y199992D01* +X548616Y200025D01* +X548534Y200056D01* +X548456Y200096D01* +X548408Y200104D01* +X548350Y200126D01* +X548202Y200138D01* +X548125Y200151D01* +X544083Y200151D01* +X543996Y200139D01* +X543909Y200136D01* +X543856Y200119D01* +X543801Y200111D01* +X543721Y200076D01* +X543638Y200049D01* +X543599Y200021D01* +X543542Y199995D01* +X543429Y199899D01* +X543365Y199854D01* +X541678Y198167D01* +X535622Y198167D01* +X534118Y199671D01* +X534071Y199706D01* +X534031Y199749D01* +X533958Y199792D01* +X533891Y199842D01* +X533836Y199863D01* +X533786Y199892D01* +X533704Y199913D01* +X533625Y199943D01* +X533567Y199948D01* +X533510Y199963D01* +X533426Y199960D01* +X533342Y199967D01* +X533284Y199955D01* +X533226Y199954D01* +X533146Y199928D01* +X533063Y199911D01* +X533011Y199884D01* +X532955Y199866D01* +X532899Y199826D01* +X532811Y199780D01* +X532738Y199711D01* +X532682Y199671D01* +X531244Y198233D01* +X531209Y198187D01* +X531167Y198146D01* +X531124Y198073D01* +X531073Y198006D01* +X531052Y197951D01* +X531023Y197901D01* +X531002Y197819D01* +X530972Y197740D01* +X530967Y197682D01* +X530953Y197625D01* +X530955Y197541D01* +X530948Y197457D01* +X530960Y197400D01* +X530962Y197341D01* +X530988Y197261D01* +X531004Y197178D01* +X531031Y197126D01* +X531049Y197071D01* +X531089Y197015D01* +X531135Y196926D01* +X531204Y196854D01* +X531244Y196797D01* +X534195Y193846D01* +X534265Y193794D01* +X534329Y193734D01* +X534379Y193708D01* +X534423Y193675D01* +X534504Y193644D01* +X534582Y193604D01* +X534630Y193596D01* +X534688Y193574D01* +X534836Y193562D01* +X534913Y193549D01* +X535417Y193549D01* +X535504Y193561D01* +X535591Y193564D01* +X535644Y193581D01* +X535699Y193589D01* +X535779Y193624D01* +X535862Y193651D01* +X535901Y193679D01* +X535958Y193705D01* +X536071Y193801D01* +X536135Y193846D01* +X537822Y195533D01* +X543878Y195533D01* +X545633Y193778D01* +X545633Y187222D01* +X543878Y185467D01* +X541155Y185467D01* +X541126Y185463D01* +X541096Y185466D01* +X540985Y185443D01* +X540873Y185427D01* +X540846Y185415D01* +X540818Y185410D01* +X540717Y185358D01* +X540614Y185311D01* +X540591Y185292D01* +X540565Y185279D01* +X540483Y185201D01* +X540397Y185128D01* +X540381Y185103D01* +X540359Y185083D01* +X540302Y184985D01* +X540239Y184891D01* +X540230Y184863D01* +X540215Y184838D01* +X540188Y184728D01* +X540153Y184620D01* +X540153Y184591D01* +X540145Y184562D01* +X540149Y184449D01* +X540146Y184336D01* +X540153Y184307D01* +X540154Y184278D01* +X540189Y184170D01* +X540218Y184061D01* +X540233Y184035D01* +X540242Y184007D01* +X540288Y183943D01* +X540363Y183816D01* +X540409Y183773D01* +X540437Y183734D01* +X540553Y183618D01* +X540553Y180289D01* +X540565Y180203D01* +X540568Y180115D01* +X540585Y180063D01* +X540593Y180008D01* +X540628Y179928D01* +X540655Y179845D01* +X540683Y179806D01* +X540709Y179748D01* +X540805Y179635D01* +X540850Y179571D01* +X544069Y176353D01* +X544069Y175775D01* +X544081Y175688D01* +X544084Y175601D01* +X544101Y175548D01* +X544109Y175494D01* +X544144Y175414D01* +X544171Y175331D01* +X544199Y175291D01* +X544225Y175234D01* +X544321Y175121D01* +X544366Y175057D01* +X545897Y173526D01* +X545967Y173474D01* +X546031Y173414D01* +X546080Y173388D01* +X546124Y173355D01* +X546206Y173324D01* +X546284Y173284D01* +X546331Y173276D01* +X546390Y173254D01* +X546538Y173242D01* +X546615Y173229D01* +X550657Y173229D01* +X550744Y173241D01* +G37* +G36* +X467094Y160711D02* +X467094Y160711D01* +X467181Y160714D01* +X467234Y160731D01* +X467289Y160739D01* +X467369Y160774D01* +X467452Y160801D01* +X467491Y160829D01* +X467548Y160855D01* +X467661Y160951D01* +X467725Y160996D01* +X469162Y162433D01* +X472491Y162433D01* +X472577Y162445D01* +X472665Y162448D01* +X472717Y162465D01* +X472772Y162473D01* +X472852Y162508D01* +X472935Y162535D01* +X472974Y162563D01* +X473032Y162589D01* +X473145Y162685D01* +X473209Y162730D01* +X479170Y168691D01* +X479222Y168761D01* +X479282Y168825D01* +X479308Y168875D01* +X479341Y168919D01* +X479372Y169000D01* +X479412Y169078D01* +X479420Y169126D01* +X479442Y169184D01* +X479454Y169332D01* +X479467Y169409D01* +X479467Y176192D01* +X479459Y176250D01* +X479461Y176308D01* +X479439Y176390D01* +X479427Y176474D01* +X479404Y176527D01* +X479389Y176583D01* +X479346Y176656D01* +X479311Y176733D01* +X479273Y176778D01* +X479244Y176828D01* +X479182Y176886D01* +X479128Y176950D01* +X479079Y176982D01* +X479036Y177022D01* +X478961Y177061D01* +X478891Y177108D01* +X478835Y177125D01* +X478783Y177152D01* +X478715Y177163D01* +X478620Y177193D01* +X478520Y177196D01* +X478452Y177207D01* +X471070Y177207D01* +X471018Y177246D01* +X470954Y177306D01* +X470905Y177332D01* +X470861Y177365D01* +X470779Y177396D01* +X470701Y177436D01* +X470654Y177444D01* +X470595Y177466D01* +X470447Y177478D01* +X470370Y177491D01* +X470013Y177491D01* +X469927Y177479D01* +X469839Y177476D01* +X469787Y177459D01* +X469732Y177451D01* +X469652Y177416D01* +X469569Y177389D01* +X469530Y177361D01* +X469472Y177335D01* +X469359Y177239D01* +X469295Y177194D01* +X467579Y175477D01* +X465729Y175477D01* +X465642Y175465D01* +X465555Y175462D01* +X465502Y175445D01* +X465447Y175437D01* +X465367Y175402D01* +X465284Y175375D01* +X465245Y175347D01* +X465188Y175321D01* +X465075Y175225D01* +X465011Y175180D01* +X463018Y173187D01* +X456462Y173187D01* +X454707Y174942D01* +X454707Y175113D01* +X454703Y175142D01* +X454706Y175171D01* +X454683Y175282D01* +X454667Y175394D01* +X454655Y175421D01* +X454650Y175450D01* +X454597Y175550D01* +X454551Y175654D01* +X454532Y175676D01* +X454519Y175702D01* +X454441Y175784D01* +X454368Y175871D01* +X454343Y175887D01* +X454323Y175908D01* +X454225Y175965D01* +X454131Y176028D01* +X454103Y176037D01* +X454078Y176052D01* +X453968Y176080D01* +X453860Y176114D01* +X453831Y176115D01* +X453802Y176122D01* +X453689Y176118D01* +X453576Y176121D01* +X453547Y176114D01* +X453518Y176113D01* +X453410Y176078D01* +X453301Y176049D01* +X453275Y176034D01* +X453247Y176025D01* +X453184Y175980D01* +X453056Y175904D01* +X453013Y175858D01* +X452974Y175830D01* +X452746Y175602D01* +X450692Y174751D01* +X448903Y174751D01* +X448816Y174739D01* +X448729Y174736D01* +X448676Y174719D01* +X448621Y174711D01* +X448542Y174676D01* +X448458Y174649D01* +X448419Y174621D01* +X448362Y174595D01* +X448249Y174499D01* +X448185Y174454D01* +X447973Y174242D01* +X445815Y172084D01* +X444896Y172084D01* +X444809Y172072D01* +X444722Y172069D01* +X444669Y172052D01* +X444614Y172044D01* +X444534Y172009D01* +X444451Y171982D01* +X444412Y171954D01* +X444355Y171928D01* +X444242Y171832D01* +X444178Y171787D01* +X442618Y170227D01* +X438345Y170227D01* +X438316Y170223D01* +X438287Y170226D01* +X438176Y170203D01* +X438064Y170187D01* +X438037Y170175D01* +X438008Y170170D01* +X437908Y170118D01* +X437804Y170071D01* +X437782Y170052D01* +X437756Y170039D01* +X437674Y169961D01* +X437587Y169888D01* +X437571Y169863D01* +X437550Y169843D01* +X437493Y169745D01* +X437430Y169651D01* +X437421Y169623D01* +X437406Y169598D01* +X437378Y169488D01* +X437344Y169380D01* +X437343Y169350D01* +X437336Y169322D01* +X437340Y169209D01* +X437337Y169096D01* +X437344Y169067D01* +X437345Y169038D01* +X437380Y168930D01* +X437409Y168821D01* +X437424Y168795D01* +X437433Y168767D01* +X437478Y168704D01* +X437554Y168576D01* +X437599Y168533D01* +X437627Y168494D01* +X445125Y160996D01* +X445195Y160944D01* +X445259Y160884D01* +X445309Y160858D01* +X445353Y160825D01* +X445434Y160794D01* +X445512Y160754D01* +X445560Y160746D01* +X445618Y160724D01* +X445766Y160712D01* +X445843Y160699D01* +X467007Y160699D01* +X467094Y160711D01* +G37* +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y48261D01* +X990934Y48261D01* +X991581Y48088D01* +X992160Y47753D01* +X992633Y47280D01* +X992968Y46701D01* +X993141Y46054D01* +X993141Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y48261D01* +X419434Y48261D01* +X420081Y48088D01* +X420660Y47753D01* +X421133Y47280D01* +X421468Y46701D01* +X421641Y46054D01* +X421641Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X378459Y28701D02* +X378459Y28701D01* +X378459Y46054D01* +X378632Y46701D01* +X378967Y47280D01* +X379440Y47753D01* +X380019Y48088D01* +X380666Y48261D01* +X398019Y48261D01* +X398019Y28701D01* +X378459Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X949959Y28701D02* +X949959Y28701D01* +X949959Y46054D01* +X950132Y46701D01* +X950467Y47280D01* +X950940Y47753D01* +X951519Y48088D01* +X952166Y48261D01* +X969519Y48261D01* +X969519Y28701D01* +X949959Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y137675D02* +X315317Y137675D01* +X311302Y139338D01* +X308230Y142411D01* +X306567Y146425D01* +X306567Y150771D01* +X308230Y154785D01* +X311302Y157858D01* +X315317Y159521D01* +X319662Y159521D01* +X323677Y157858D01* +X326749Y154785D01* +X328412Y150771D01* +X328412Y146425D01* +X326749Y142411D01* +X323677Y139338D01* +X319662Y137675D01* +X315317Y137675D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y213875D02* +X315317Y213875D01* +X311302Y215538D01* +X308230Y218611D01* +X306567Y222625D01* +X306567Y226971D01* +X308230Y230985D01* +X311302Y234058D01* +X315317Y235721D01* +X319662Y235721D01* +X323677Y234058D01* +X326749Y230985D01* +X328412Y226971D01* +X328412Y222625D01* +X326749Y218611D01* +X323677Y215538D01* +X319662Y213875D01* +X315317Y213875D01* +G37* +%LPD*% +%LPC*% +G36* +X289917Y150375D02* +X289917Y150375D01* +X285902Y152038D01* +X282830Y155111D01* +X281167Y159125D01* +X281167Y163471D01* +X282830Y167485D01* +X285902Y170558D01* +X289917Y172221D01* +X294262Y172221D01* +X298277Y170558D01* +X301349Y167485D01* +X303012Y163471D01* +X303012Y159125D01* +X301349Y155111D01* +X298277Y152038D01* +X294262Y150375D01* +X289917Y150375D01* +G37* +%LPD*% +%LPC*% +G36* +X289995Y226965D02* +X289995Y226965D01* +X286123Y228569D01* +X283160Y231532D01* +X282878Y232213D01* +X281557Y235403D01* +X281557Y239593D01* +X282878Y242782D01* +X283160Y243464D01* +X286123Y246427D01* +X289995Y248031D01* +X294185Y248031D01* +X298056Y246427D01* +X301019Y243464D01* +X302622Y239593D01* +X302622Y235403D01* +X301019Y231532D01* +X298056Y228569D01* +X294185Y226965D01* +X289995Y226965D01* +G37* +%LPD*% +%LPC*% +G36* +X133023Y8722D02* +X133023Y8722D01* +X128783Y12396D01* +X127202Y17780D01* +X128783Y23164D01* +X133023Y26838D01* +X138577Y27637D01* +X143681Y25306D01* +X146715Y20585D01* +X146715Y14975D01* +X143681Y10254D01* +X138577Y7923D01* +X133023Y8722D01* +G37* +%LPD*% +%LPC*% +G36* +X447983Y354162D02* +X447983Y354162D01* +X443743Y357836D01* +X442162Y363220D01* +X443743Y368604D01* +X447983Y372278D01* +X453537Y373077D01* +X458641Y370746D01* +X461675Y366025D01* +X461675Y360415D01* +X458641Y355694D01* +X453537Y353363D01* +X447983Y354162D01* +G37* +%LPD*% +%LPC*% +G36* +X1253163Y87462D02* +X1253163Y87462D01* +X1248923Y91136D01* +X1247342Y96520D01* +X1248923Y101904D01* +X1253163Y105578D01* +X1258717Y106377D01* +X1263821Y104046D01* +X1266855Y99325D01* +X1266855Y93715D01* +X1263821Y88994D01* +X1258717Y86663D01* +X1253163Y87462D01* +G37* +%LPD*% +G36* +X386232Y351259D02* +X386232Y351259D01* +X386261Y351256D01* +X386372Y351279D01* +X386484Y351295D01* +X386511Y351307D01* +X386540Y351312D01* +X386640Y351364D01* +X386744Y351411D01* +X386766Y351430D01* +X386792Y351443D01* +X386874Y351521D01* +X386961Y351594D01* +X386977Y351619D01* +X386998Y351639D01* +X387055Y351737D01* +X387118Y351831D01* +X387127Y351859D01* +X387142Y351884D01* +X387170Y351994D01* +X387204Y352102D01* +X387205Y352132D01* +X387212Y352160D01* +X387208Y352273D01* +X387211Y352386D01* +X387204Y352415D01* +X387203Y352444D01* +X387168Y352552D01* +X387139Y352661D01* +X387124Y352687D01* +X387115Y352715D01* +X387070Y352778D01* +X386994Y352906D01* +X386949Y352949D01* +X386921Y352988D01* +X373939Y365970D01* +X373869Y366022D01* +X373805Y366082D01* +X373755Y366108D01* +X373711Y366141D01* +X373630Y366172D01* +X373552Y366212D01* +X373504Y366220D01* +X373446Y366242D01* +X373298Y366254D01* +X373221Y366267D01* +X356148Y366267D01* +X356090Y366259D01* +X356032Y366261D01* +X355950Y366239D01* +X355866Y366227D01* +X355813Y366204D01* +X355757Y366189D01* +X355684Y366146D01* +X355607Y366111D01* +X355562Y366073D01* +X355512Y366044D01* +X355454Y365982D01* +X355390Y365928D01* +X355358Y365879D01* +X355318Y365836D01* +X355279Y365761D01* +X355232Y365691D01* +X355215Y365635D01* +X355188Y365583D01* +X355177Y365515D01* +X355147Y365420D01* +X355144Y365320D01* +X355133Y365252D01* +X355133Y359942D01* +X354219Y359028D01* +X354184Y358981D01* +X354141Y358941D01* +X354099Y358868D01* +X354048Y358801D01* +X354027Y358746D01* +X353998Y358696D01* +X353977Y358614D01* +X353947Y358535D01* +X353942Y358477D01* +X353927Y358420D01* +X353930Y358336D01* +X353923Y358252D01* +X353935Y358194D01* +X353936Y358136D01* +X353962Y358056D01* +X353979Y357973D01* +X354006Y357921D01* +X354024Y357865D01* +X354064Y357809D01* +X354110Y357721D01* +X354179Y357648D01* +X354219Y357592D01* +X354882Y356929D01* +X354929Y356894D01* +X354969Y356851D01* +X355042Y356809D01* +X355109Y356758D01* +X355164Y356737D01* +X355214Y356708D01* +X355296Y356687D01* +X355375Y356657D01* +X355433Y356652D01* +X355490Y356637D01* +X355574Y356640D01* +X355658Y356633D01* +X355716Y356645D01* +X355774Y356646D01* +X355854Y356672D01* +X355937Y356689D01* +X355989Y356716D01* +X356045Y356734D01* +X356101Y356774D01* +X356189Y356820D01* +X356262Y356889D01* +X356318Y356929D01* +X357402Y358013D01* +X363958Y358013D01* +X365395Y356576D01* +X365465Y356524D01* +X365529Y356464D01* +X365578Y356438D01* +X365622Y356405D01* +X365704Y356374D01* +X365782Y356334D01* +X365829Y356326D01* +X365888Y356304D01* +X366035Y356292D01* +X366113Y356279D01* +X379553Y356279D01* +X384279Y351552D01* +X384349Y351500D01* +X384413Y351440D01* +X384463Y351414D01* +X384507Y351381D01* +X384588Y351350D01* +X384666Y351310D01* +X384714Y351302D01* +X384772Y351280D01* +X384920Y351268D01* +X384997Y351255D01* +X386203Y351255D01* +X386232Y351259D01* +G37* +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y129403D01* +X262069Y129278D01* +X263999Y128761D01* +X265845Y127996D01* +X267575Y126997D01* +X269160Y125781D01* +X270573Y124369D01* +X271789Y122783D01* +X272788Y121053D01* +X273552Y119207D01* +X274070Y117278D01* +X274194Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y286903D01* +X262069Y286778D01* +X263999Y286261D01* +X265845Y285496D01* +X267575Y284497D01* +X269160Y283281D01* +X270573Y281869D01* +X271789Y280283D01* +X272788Y278553D01* +X273552Y276707D01* +X274070Y274778D01* +X274194Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X243985Y273829D02* +X243985Y273829D01* +X244110Y274778D01* +X244627Y276707D01* +X245391Y278553D01* +X246390Y280283D01* +X247607Y281869D01* +X249019Y283281D01* +X250604Y284497D01* +X252334Y285496D01* +X254180Y286261D01* +X256110Y286778D01* +X257058Y286903D01* +X257058Y273829D01* +X243985Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X243985Y116329D02* +X243985Y116329D01* +X244110Y117278D01* +X244627Y119207D01* +X245391Y121053D01* +X246390Y122783D01* +X247607Y124369D01* +X249019Y125781D01* +X250604Y126997D01* +X252334Y127996D01* +X254180Y128761D01* +X256110Y129278D01* +X257058Y129403D01* +X257058Y116329D01* +X243985Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X274194Y269767D01* +X274070Y268818D01* +X273552Y266888D01* +X272788Y265043D01* +X271789Y263312D01* +X270573Y261727D01* +X269160Y260315D01* +X267575Y259099D01* +X265845Y258100D01* +X263999Y257335D01* +X262069Y256818D01* +X261121Y256693D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X256110Y256818D02* +X256110Y256818D01* +X254180Y257335D01* +X252334Y258100D01* +X250604Y259099D01* +X249019Y260315D01* +X247607Y261727D01* +X246390Y263312D01* +X245391Y265043D01* +X244627Y266888D01* +X244110Y268818D01* +X243985Y269767D01* +X257058Y269767D01* +X257058Y256693D01* +X256110Y256818D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y267537D01* +X182280Y267435D01* +X183992Y266879D01* +X185595Y266062D01* +X187050Y265004D01* +X188323Y263732D01* +X189380Y262276D01* +X190197Y260673D01* +X190753Y258962D01* +X190855Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X168352Y258317D02* +X168352Y258317D01* +X168454Y258962D01* +X169010Y260673D01* +X169827Y262276D01* +X170885Y263732D01* +X172157Y265004D01* +X173613Y266062D01* +X175216Y266879D01* +X176927Y267435D01* +X177572Y267537D01* +X177572Y258317D01* +X168352Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X190855Y254254D01* +X190753Y253609D01* +X190197Y251897D01* +X189380Y250294D01* +X188323Y248839D01* +X187050Y247566D01* +X185595Y246509D01* +X183992Y245692D01* +X182280Y245136D01* +X181635Y245034D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X176927Y245136D02* +X176927Y245136D01* +X175216Y245692D01* +X173613Y246509D01* +X172157Y247566D01* +X170885Y248839D01* +X169827Y250294D01* +X169010Y251897D01* +X168454Y253609D01* +X168352Y254254D01* +X177572Y254254D01* +X177572Y245034D01* +X176927Y245136D01* +G37* +%LPD*% +%LPC*% +G36* +X357631Y42379D02* +X357631Y42379D01* +X357631Y48389D01* +X363141Y48389D01* +X363141Y46105D01* +X362848Y45014D01* +X362283Y44035D01* +X361485Y43237D01* +X360506Y42672D01* +X359415Y42379D01* +X357631Y42379D01* +G37* +%LPD*% +%LPC*% +G36* +X351785Y42379D02* +X351785Y42379D01* +X350694Y42672D01* +X349715Y43237D01* +X348917Y44035D01* +X348352Y45014D01* +X348059Y46105D01* +X348059Y48389D01* +X353569Y48389D01* +X353569Y42379D01* +X351785Y42379D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +D10* +X248418Y349598D02* +X248418Y346022D01* +X244342Y346022D01* +X244342Y349598D01* +X248418Y349598D01* +X248418Y347851D02* +X244342Y347851D01* +X248418Y356522D02* +X248418Y360098D01* +X248418Y356522D02* +X244342Y356522D01* +X244342Y360098D01* +X248418Y360098D01* +X248418Y358351D02* +X244342Y358351D01* +X345942Y194998D02* +X345942Y191422D01* +X345942Y194998D02* +X350018Y194998D01* +X350018Y191422D01* +X345942Y191422D01* +X345942Y193251D02* +X350018Y193251D01* +X345942Y184498D02* +X345942Y180922D01* +X345942Y184498D02* +X350018Y184498D01* +X350018Y180922D01* +X345942Y180922D01* +X345942Y182751D02* +X350018Y182751D01* +X499878Y246962D02* +X499878Y250538D01* +X499878Y246962D02* +X495802Y246962D01* +X495802Y250538D01* +X499878Y250538D01* +X499878Y248791D02* +X495802Y248791D01* +X499878Y257462D02* +X499878Y261038D01* +X499878Y257462D02* +X495802Y257462D01* +X495802Y261038D01* +X499878Y261038D01* +X499878Y259291D02* +X495802Y259291D01* +D11* +X579830Y66870D02* +X579830Y59370D01* +X573330Y59370D01* +X573330Y66870D01* +X579830Y66870D01* +X579830Y62695D02* +X573330Y62695D01* +X573330Y66020D02* +X579830Y66020D01* +X579830Y75370D02* +X579830Y82870D01* +X579830Y75370D02* +X573330Y75370D01* +X573330Y82870D01* +X579830Y82870D01* +X579830Y78695D02* +X573330Y78695D01* +X573330Y82020D02* +X579830Y82020D01* +X352350Y70170D02* +X352350Y62670D01* +X352350Y70170D02* +X358850Y70170D01* +X358850Y62670D01* +X352350Y62670D01* +X352350Y65995D02* +X358850Y65995D01* +X358850Y69320D02* +X352350Y69320D01* +X352350Y54170D02* +X352350Y46670D01* +X352350Y54170D02* +X358850Y54170D01* +X358850Y46670D01* +X352350Y46670D01* +X352350Y49995D02* +X358850Y49995D01* +X358850Y53320D02* +X352350Y53320D01* +D10* +X691382Y163482D02* +X691382Y167058D01* +X695458Y167058D01* +X695458Y163482D01* +X691382Y163482D01* +X691382Y165311D02* +X695458Y165311D01* +X691382Y156558D02* +X691382Y152982D01* +X691382Y156558D02* +X695458Y156558D01* +X695458Y152982D01* +X691382Y152982D01* +X691382Y154811D02* +X695458Y154811D01* +X995178Y272362D02* +X995178Y275938D01* +X995178Y272362D02* +X991102Y272362D01* +X991102Y275938D01* +X995178Y275938D01* +X995178Y274191D02* +X991102Y274191D01* +X995178Y282862D02* +X995178Y286438D01* +X995178Y282862D02* +X991102Y282862D01* +X991102Y286438D01* +X995178Y286438D01* +X995178Y284691D02* +X991102Y284691D01* +X865638Y156558D02* +X865638Y152982D01* +X861562Y152982D01* +X861562Y156558D01* +X865638Y156558D01* +X865638Y154811D02* +X861562Y154811D01* +X865638Y163482D02* +X865638Y167058D01* +X865638Y163482D02* +X861562Y163482D01* +X861562Y167058D01* +X865638Y167058D01* +X865638Y165311D02* +X861562Y165311D01* +D11* +X498510Y296470D02* +X498510Y302970D01* +X509010Y302970D01* +X509010Y296470D01* +X498510Y296470D01* +X498510Y299795D02* +X509010Y299795D01* +X476510Y293470D02* +X476510Y286970D01* +X476510Y293470D02* +X487010Y293470D01* +X487010Y286970D01* +X476510Y286970D01* +X476510Y290295D02* +X487010Y290295D01* +X476510Y305970D02* +X476510Y312470D01* +X487010Y312470D01* +X487010Y305970D01* +X476510Y305970D01* +X476510Y309295D02* +X487010Y309295D01* +X457870Y326950D02* +X457870Y333450D01* +X468370Y333450D01* +X468370Y326950D01* +X457870Y326950D01* +X457870Y330275D02* +X468370Y330275D01* +X435870Y323950D02* +X435870Y317450D01* +X435870Y323950D02* +X446370Y323950D01* +X446370Y317450D01* +X435870Y317450D01* +X435870Y320775D02* +X446370Y320775D01* +X435870Y336450D02* +X435870Y342950D01* +X446370Y342950D01* +X446370Y336450D01* +X435870Y336450D01* +X435870Y339775D02* +X446370Y339775D01* +D10* +X1029202Y98478D02* +X1029202Y94902D01* +X1029202Y98478D02* +X1033278Y98478D01* +X1033278Y94902D01* +X1029202Y94902D01* +X1029202Y96731D02* +X1033278Y96731D01* +X1029202Y87978D02* +X1029202Y84402D01* +X1029202Y87978D02* +X1033278Y87978D01* +X1033278Y84402D01* +X1029202Y84402D01* +X1029202Y86231D02* +X1033278Y86231D01* +X704082Y143162D02* +X704082Y146738D01* +X708158Y146738D01* +X708158Y143162D01* +X704082Y143162D01* +X704082Y144991D02* +X708158Y144991D01* +X704082Y136238D02* +X704082Y132662D01* +X704082Y136238D02* +X708158Y136238D01* +X708158Y132662D01* +X704082Y132662D01* +X704082Y134491D02* +X708158Y134491D01* +X1252802Y191002D02* +X1256378Y191002D01* +X1252802Y191002D02* +X1252802Y195078D01* +X1256378Y195078D01* +X1256378Y191002D01* +X1256378Y192831D02* +X1252802Y192831D01* +X1252802Y194660D02* +X1256378Y194660D01* +X1263302Y191002D02* +X1266878Y191002D01* +X1263302Y191002D02* +X1263302Y195078D01* +X1266878Y195078D01* +X1266878Y191002D01* +X1266878Y192831D02* +X1263302Y192831D01* +X1263302Y194660D02* +X1266878Y194660D01* +X1256378Y140202D02* +X1252802Y140202D01* +X1252802Y144278D01* +X1256378Y144278D01* +X1256378Y140202D01* +X1256378Y142031D02* +X1252802Y142031D01* +X1252802Y143860D02* +X1256378Y143860D01* +X1263302Y140202D02* +X1266878Y140202D01* +X1263302Y140202D02* +X1263302Y144278D01* +X1266878Y144278D01* +X1266878Y140202D01* +X1266878Y142031D02* +X1263302Y142031D01* +X1263302Y143860D02* +X1266878Y143860D01* +X540438Y261118D02* +X536862Y261118D01* +X540438Y261118D02* +X540438Y257042D01* +X536862Y257042D01* +X536862Y261118D01* +X536862Y258871D02* +X540438Y258871D01* +X540438Y260700D02* +X536862Y260700D01* +X529938Y261118D02* +X526362Y261118D01* +X529938Y261118D02* +X529938Y257042D01* +X526362Y257042D01* +X526362Y261118D01* +X526362Y258871D02* +X529938Y258871D01* +X529938Y260700D02* +X526362Y260700D01* +X676142Y167058D02* +X676142Y163482D01* +X676142Y167058D02* +X680218Y167058D01* +X680218Y163482D01* +X676142Y163482D01* +X676142Y165311D02* +X680218Y165311D01* +X676142Y156558D02* +X676142Y152982D01* +X676142Y156558D02* +X680218Y156558D01* +X680218Y152982D01* +X676142Y152982D01* +X676142Y154811D02* +X680218Y154811D01* +X1007878Y272362D02* +X1007878Y275938D01* +X1007878Y272362D02* +X1003802Y272362D01* +X1003802Y275938D01* +X1007878Y275938D01* +X1007878Y274191D02* +X1003802Y274191D01* +X1007878Y282862D02* +X1007878Y286438D01* +X1007878Y282862D02* +X1003802Y282862D01* +X1003802Y286438D01* +X1007878Y286438D01* +X1007878Y284691D02* +X1003802Y284691D01* +X874262Y167058D02* +X874262Y163482D01* +X874262Y167058D02* +X878338Y167058D01* +X878338Y163482D01* +X874262Y163482D01* +X874262Y165311D02* +X878338Y165311D01* +X874262Y156558D02* +X874262Y152982D01* +X874262Y156558D02* +X878338Y156558D01* +X878338Y152982D01* +X874262Y152982D01* +X874262Y154811D02* +X878338Y154811D01* +X1200918Y100678D02* +X1200918Y97102D01* +X1196842Y97102D01* +X1196842Y100678D01* +X1200918Y100678D01* +X1200918Y98931D02* +X1196842Y98931D01* +X1200918Y107602D02* +X1200918Y111178D01* +X1200918Y107602D02* +X1196842Y107602D01* +X1196842Y111178D01* +X1200918Y111178D01* +X1200918Y109431D02* +X1196842Y109431D01* +X968242Y130462D02* +X968242Y134038D01* +X972318Y134038D01* +X972318Y130462D01* +X968242Y130462D01* +X968242Y132291D02* +X972318Y132291D01* +X968242Y123538D02* +X968242Y119962D01* +X968242Y123538D02* +X972318Y123538D01* +X972318Y119962D01* +X968242Y119962D01* +X968242Y121791D02* +X972318Y121791D01* +X976282Y256038D02* +X979858Y256038D01* +X979858Y251962D01* +X976282Y251962D01* +X976282Y256038D01* +X976282Y253791D02* +X979858Y253791D01* +X979858Y255620D02* +X976282Y255620D01* +X969358Y256038D02* +X965782Y256038D01* +X969358Y256038D02* +X969358Y251962D01* +X965782Y251962D01* +X965782Y256038D01* +X965782Y253791D02* +X969358Y253791D01* +X969358Y255620D02* +X965782Y255620D01* +X1043438Y87978D02* +X1043438Y84402D01* +X1039362Y84402D01* +X1039362Y87978D01* +X1043438Y87978D01* +X1043438Y86231D02* +X1039362Y86231D01* +X1043438Y94902D02* +X1043438Y98478D01* +X1043438Y94902D02* +X1039362Y94902D01* +X1039362Y98478D01* +X1043438Y98478D01* +X1043438Y96731D02* +X1039362Y96731D01* +X441378Y212858D02* +X437802Y212858D01* +X441378Y212858D02* +X441378Y208782D01* +X437802Y208782D01* +X437802Y212858D01* +X437802Y210611D02* +X441378Y210611D01* +X441378Y212440D02* +X437802Y212440D01* +X430878Y212858D02* +X427302Y212858D01* +X430878Y212858D02* +X430878Y208782D01* +X427302Y208782D01* +X427302Y212858D01* +X427302Y210611D02* +X430878Y210611D01* +X430878Y212440D02* +X427302Y212440D01* +X437802Y177298D02* +X441378Y177298D01* +X441378Y173222D01* +X437802Y173222D01* +X437802Y177298D01* +X437802Y175051D02* +X441378Y175051D01* +X441378Y176880D02* +X437802Y176880D01* +X430878Y177298D02* +X427302Y177298D01* +X430878Y177298D02* +X430878Y173222D01* +X427302Y173222D01* +X427302Y177298D01* +X427302Y175051D02* +X430878Y175051D01* +X430878Y176880D02* +X427302Y176880D01* +X430182Y187458D02* +X433758Y187458D01* +X433758Y183382D01* +X430182Y183382D01* +X430182Y187458D01* +X430182Y185211D02* +X433758Y185211D01* +X433758Y187040D02* +X430182Y187040D01* +X423258Y187458D02* +X419682Y187458D01* +X423258Y187458D02* +X423258Y183382D01* +X419682Y183382D01* +X419682Y187458D01* +X419682Y185211D02* +X423258Y185211D01* +X423258Y187040D02* +X419682Y187040D01* +X430182Y202698D02* +X433758Y202698D01* +X433758Y198622D01* +X430182Y198622D01* +X430182Y202698D01* +X430182Y200451D02* +X433758Y200451D01* +X433758Y202280D02* +X430182Y202280D01* +X423258Y202698D02* +X419682Y202698D01* +X423258Y202698D02* +X423258Y198622D01* +X419682Y198622D01* +X419682Y202698D01* +X419682Y200451D02* +X423258Y200451D01* +X423258Y202280D02* +X419682Y202280D01* +X526362Y201162D02* +X529938Y201162D01* +X526362Y201162D02* +X526362Y205238D01* +X529938Y205238D01* +X529938Y201162D01* +X529938Y202991D02* +X526362Y202991D01* +X526362Y204820D02* +X529938Y204820D01* +X536862Y201162D02* +X540438Y201162D01* +X536862Y201162D02* +X536862Y205238D01* +X540438Y205238D01* +X540438Y201162D01* +X540438Y202991D02* +X536862Y202991D01* +X536862Y204820D02* +X540438Y204820D01* +X554302Y152902D02* +X557878Y152902D01* +X554302Y152902D02* +X554302Y156978D01* +X557878Y156978D01* +X557878Y152902D01* +X557878Y154731D02* +X554302Y154731D01* +X554302Y156560D02* +X557878Y156560D01* +X564802Y152902D02* +X568378Y152902D01* +X564802Y152902D02* +X564802Y156978D01* +X568378Y156978D01* +X568378Y152902D01* +X568378Y154731D02* +X564802Y154731D01* +X564802Y156560D02* +X568378Y156560D01* +X568458Y178382D02* +X568458Y181958D01* +X568458Y178382D02* +X564382Y178382D01* +X564382Y181958D01* +X568458Y181958D01* +X568458Y180211D02* +X564382Y180211D01* +X568458Y188882D02* +X568458Y192458D01* +X568458Y188882D02* +X564382Y188882D01* +X564382Y192458D01* +X568458Y192458D01* +X568458Y190711D02* +X564382Y190711D01* +X529938Y226562D02* +X526362Y226562D01* +X526362Y230638D01* +X529938Y230638D01* +X529938Y226562D01* +X529938Y228391D02* +X526362Y228391D01* +X526362Y230220D02* +X529938Y230220D01* +X536862Y226562D02* +X540438Y226562D01* +X536862Y226562D02* +X536862Y230638D01* +X540438Y230638D01* +X540438Y226562D01* +X540438Y228391D02* +X536862Y228391D01* +X536862Y230220D02* +X540438Y230220D01* +X461778Y169258D02* +X461778Y165682D01* +X457702Y165682D01* +X457702Y169258D01* +X461778Y169258D01* +X461778Y167511D02* +X457702Y167511D01* +X461778Y176182D02* +X461778Y179758D01* +X461778Y176182D02* +X457702Y176182D01* +X457702Y179758D01* +X461778Y179758D01* +X461778Y178011D02* +X457702Y178011D01* +X441378Y141738D02* +X437802Y141738D01* +X441378Y141738D02* +X441378Y137662D01* +X437802Y137662D01* +X437802Y141738D01* +X437802Y139491D02* +X441378Y139491D01* +X441378Y141320D02* +X437802Y141320D01* +X430878Y141738D02* +X427302Y141738D01* +X430878Y141738D02* +X430878Y137662D01* +X427302Y137662D01* +X427302Y141738D01* +X427302Y139491D02* +X430878Y139491D01* +X430878Y141320D02* +X427302Y141320D01* +X439922Y305722D02* +X439922Y309298D01* +X443998Y309298D01* +X443998Y305722D01* +X439922Y305722D01* +X439922Y307551D02* +X443998Y307551D01* +X439922Y298798D02* +X439922Y295222D01* +X439922Y298798D02* +X443998Y298798D01* +X443998Y295222D01* +X439922Y295222D01* +X439922Y297051D02* +X443998Y297051D01* +X441378Y129038D02* +X437802Y129038D01* +X441378Y129038D02* +X441378Y124962D01* +X437802Y124962D01* +X437802Y129038D01* +X437802Y126791D02* +X441378Y126791D01* +X441378Y128620D02* +X437802Y128620D01* +X430878Y129038D02* +X427302Y129038D01* +X430878Y129038D02* +X430878Y124962D01* +X427302Y124962D01* +X427302Y129038D01* +X427302Y126791D02* +X430878Y126791D01* +X430878Y128620D02* +X427302Y128620D01* +X549562Y192538D02* +X553138Y192538D01* +X553138Y188462D01* +X549562Y188462D01* +X549562Y192538D01* +X549562Y190291D02* +X553138Y190291D01* +X553138Y192120D02* +X549562Y192120D01* +X542638Y192538D02* +X539062Y192538D01* +X542638Y192538D02* +X542638Y188462D01* +X539062Y188462D01* +X539062Y192538D01* +X539062Y190291D02* +X542638Y190291D01* +X542638Y192120D02* +X539062Y192120D01* +X529938Y213862D02* +X526362Y213862D01* +X526362Y217938D01* +X529938Y217938D01* +X529938Y213862D01* +X529938Y215691D02* +X526362Y215691D01* +X526362Y217520D02* +X529938Y217520D01* +X536862Y213862D02* +X540438Y213862D01* +X536862Y213862D02* +X536862Y217938D01* +X540438Y217938D01* +X540438Y213862D01* +X540438Y215691D02* +X536862Y215691D01* +X536862Y217520D02* +X540438Y217520D01* +X541522Y156898D02* +X541522Y153322D01* +X541522Y156898D02* +X545598Y156898D01* +X545598Y153322D01* +X541522Y153322D01* +X541522Y155151D02* +X545598Y155151D01* +X541522Y146398D02* +X541522Y142822D01* +X541522Y146398D02* +X545598Y146398D01* +X545598Y142822D01* +X541522Y142822D01* +X541522Y144651D02* +X545598Y144651D01* +X564802Y172218D02* +X568378Y172218D01* +X568378Y168142D01* +X564802Y168142D01* +X564802Y172218D01* +X564802Y169971D02* +X568378Y169971D01* +X568378Y171800D02* +X564802Y171800D01* +X557878Y172218D02* +X554302Y172218D01* +X557878Y172218D02* +X557878Y168142D01* +X554302Y168142D01* +X554302Y172218D01* +X554302Y169971D02* +X557878Y169971D01* +X557878Y171800D02* +X554302Y171800D01* +X487178Y246962D02* +X487178Y250538D01* +X487178Y246962D02* +X483102Y246962D01* +X483102Y250538D01* +X487178Y250538D01* +X487178Y248791D02* +X483102Y248791D01* +X487178Y257462D02* +X487178Y261038D01* +X487178Y257462D02* +X483102Y257462D01* +X483102Y261038D01* +X487178Y261038D01* +X487178Y259291D02* +X483102Y259291D01* +X757502Y99562D02* +X761078Y99562D01* +X757502Y99562D02* +X757502Y103638D01* +X761078Y103638D01* +X761078Y99562D01* +X761078Y101391D02* +X757502Y101391D01* +X757502Y103220D02* +X761078Y103220D01* +X768002Y99562D02* +X771578Y99562D01* +X768002Y99562D02* +X768002Y103638D01* +X771578Y103638D01* +X771578Y99562D01* +X771578Y101391D02* +X768002Y101391D01* +X768002Y103220D02* +X771578Y103220D01* +X464318Y295222D02* +X464318Y298798D01* +X464318Y295222D02* +X460242Y295222D01* +X460242Y298798D01* +X464318Y298798D01* +X464318Y297051D02* +X460242Y297051D01* +X464318Y305722D02* +X464318Y309298D01* +X464318Y305722D02* +X460242Y305722D01* +X460242Y309298D01* +X464318Y309298D01* +X464318Y307551D02* +X460242Y307551D01* +X352138Y361182D02* +X348562Y361182D01* +X348562Y365258D01* +X352138Y365258D01* +X352138Y361182D01* +X352138Y363011D02* +X348562Y363011D01* +X348562Y364840D02* +X352138Y364840D01* +X359062Y361182D02* +X362638Y361182D01* +X359062Y361182D02* +X359062Y365258D01* +X362638Y365258D01* +X362638Y361182D01* +X362638Y363011D02* +X359062Y363011D01* +X359062Y364840D02* +X362638Y364840D01* +X1213618Y100678D02* +X1213618Y97102D01* +X1209542Y97102D01* +X1209542Y100678D01* +X1213618Y100678D01* +X1213618Y98931D02* +X1209542Y98931D01* +X1213618Y107602D02* +X1213618Y111178D01* +X1213618Y107602D02* +X1209542Y107602D01* +X1209542Y111178D01* +X1213618Y111178D01* +X1213618Y109431D02* +X1209542Y109431D01* +X751258Y162058D02* +X747682Y162058D01* +X751258Y162058D02* +X751258Y157982D01* +X747682Y157982D01* +X747682Y162058D01* +X747682Y159811D02* +X751258Y159811D01* +X751258Y161640D02* +X747682Y161640D01* +X740758Y162058D02* +X737182Y162058D01* +X740758Y162058D02* +X740758Y157982D01* +X737182Y157982D01* +X737182Y162058D01* +X737182Y159811D02* +X740758Y159811D01* +X740758Y161640D02* +X737182Y161640D01* +X715358Y157982D02* +X711782Y157982D01* +X711782Y162058D01* +X715358Y162058D01* +X715358Y157982D01* +X715358Y159811D02* +X711782Y159811D01* +X711782Y161640D02* +X715358Y161640D01* +X722282Y157982D02* +X725858Y157982D01* +X722282Y157982D02* +X722282Y162058D01* +X725858Y162058D01* +X725858Y157982D01* +X725858Y159811D02* +X722282Y159811D01* +X722282Y161640D02* +X725858Y161640D01* +D11* +X456250Y262330D02* +X448750Y262330D01* +X456250Y262330D02* +X456250Y255830D01* +X448750Y255830D01* +X448750Y262330D01* +X448750Y259155D02* +X456250Y259155D01* +X440250Y262330D02* +X432750Y262330D01* +X440250Y262330D02* +X440250Y255830D01* +X432750Y255830D01* +X432750Y262330D01* +X432750Y259155D02* +X440250Y259155D01* +X440250Y225350D02* +X432750Y225350D01* +X432750Y231850D01* +X440250Y231850D01* +X440250Y225350D01* +X440250Y228675D02* +X432750Y228675D01* +X448750Y225350D02* +X456250Y225350D01* +X448750Y225350D02* +X448750Y231850D01* +X456250Y231850D01* +X456250Y225350D01* +X456250Y228675D02* +X448750Y228675D01* +D10* +X1035818Y166718D02* +X1035818Y163142D01* +X1031742Y163142D01* +X1031742Y166718D01* +X1035818Y166718D01* +X1035818Y164971D02* +X1031742Y164971D01* +X1035818Y173642D02* +X1035818Y177218D01* +X1035818Y173642D02* +X1031742Y173642D01* +X1031742Y177218D01* +X1035818Y177218D01* +X1035818Y175471D02* +X1031742Y175471D01* +X464318Y206322D02* +X464318Y209898D01* +X464318Y206322D02* +X460242Y206322D01* +X460242Y209898D01* +X464318Y209898D01* +X464318Y208151D02* +X460242Y208151D01* +X464318Y216822D02* +X464318Y220398D01* +X464318Y216822D02* +X460242Y216822D01* +X460242Y220398D01* +X464318Y220398D01* +X464318Y218651D02* +X460242Y218651D01* +X470402Y159438D02* +X470402Y155862D01* +X470402Y159438D02* +X474478Y159438D01* +X474478Y155862D01* +X470402Y155862D01* +X470402Y157691D02* +X474478Y157691D01* +X470402Y148938D02* +X470402Y145362D01* +X470402Y148938D02* +X474478Y148938D01* +X474478Y145362D01* +X470402Y145362D01* +X470402Y147191D02* +X474478Y147191D01* +D11* +X524950Y137870D02* +X532450Y137870D01* +X532450Y131370D01* +X524950Y131370D01* +X524950Y137870D01* +X524950Y134695D02* +X532450Y134695D01* +X516450Y137870D02* +X508950Y137870D01* +X516450Y137870D02* +X516450Y131370D01* +X508950Y131370D01* +X508950Y137870D01* +X508950Y134695D02* +X516450Y134695D01* +X1024330Y282890D02* +X1024330Y290390D01* +X1024330Y282890D02* +X1017830Y282890D01* +X1017830Y290390D01* +X1024330Y290390D01* +X1024330Y286215D02* +X1017830Y286215D01* +X1017830Y289540D02* +X1024330Y289540D01* +X1024330Y298890D02* +X1024330Y306390D01* +X1024330Y298890D02* +X1017830Y298890D01* +X1017830Y306390D01* +X1024330Y306390D01* +X1024330Y302215D02* +X1017830Y302215D01* +X1017830Y305540D02* +X1024330Y305540D01* +D10* +X1035818Y293718D02* +X1035818Y290142D01* +X1031742Y290142D01* +X1031742Y293718D01* +X1035818Y293718D01* +X1035818Y291971D02* +X1031742Y291971D01* +X1035818Y300642D02* +X1035818Y304218D01* +X1035818Y300642D02* +X1031742Y300642D01* +X1031742Y304218D01* +X1035818Y304218D01* +X1035818Y302471D02* +X1031742Y302471D01* +D11* +X1012750Y70170D02* +X1012750Y62670D01* +X1012750Y70170D02* +X1019250Y70170D01* +X1019250Y62670D01* +X1012750Y62670D01* +X1012750Y65995D02* +X1019250Y65995D01* +X1019250Y69320D02* +X1012750Y69320D01* +X1012750Y54170D02* +X1012750Y46670D01* +X1012750Y54170D02* +X1019250Y54170D01* +X1019250Y46670D01* +X1012750Y46670D01* +X1012750Y49995D02* +X1019250Y49995D01* +X1019250Y53320D02* +X1012750Y53320D01* +X685090Y88070D02* +X685090Y95570D01* +X691590Y95570D01* +X691590Y88070D01* +X685090Y88070D01* +X685090Y91395D02* +X691590Y91395D01* +X691590Y94720D02* +X685090Y94720D01* +X685090Y79570D02* +X685090Y72070D01* +X685090Y79570D02* +X691590Y79570D01* +X691590Y72070D01* +X685090Y72070D01* +X685090Y75395D02* +X691590Y75395D01* +X691590Y78720D02* +X685090Y78720D01* +D10* +X1049522Y94902D02* +X1049522Y98478D01* +X1053598Y98478D01* +X1053598Y94902D01* +X1049522Y94902D01* +X1049522Y96731D02* +X1053598Y96731D01* +X1049522Y87978D02* +X1049522Y84402D01* +X1049522Y87978D02* +X1053598Y87978D01* +X1053598Y84402D01* +X1049522Y84402D01* +X1049522Y86231D02* +X1053598Y86231D01* +X511042Y155862D02* +X511042Y159438D01* +X515118Y159438D01* +X515118Y155862D01* +X511042Y155862D01* +X511042Y157691D02* +X515118Y157691D01* +X511042Y148938D02* +X511042Y145362D01* +X511042Y148938D02* +X515118Y148938D01* +X515118Y145362D01* +X511042Y145362D01* +X511042Y147191D02* +X515118Y147191D01* +X523742Y155862D02* +X523742Y159438D01* +X527818Y159438D01* +X527818Y155862D01* +X523742Y155862D01* +X523742Y157691D02* +X527818Y157691D01* +X523742Y148938D02* +X523742Y145362D01* +X523742Y148938D02* +X527818Y148938D01* +X527818Y145362D01* +X523742Y145362D01* +X523742Y147191D02* +X527818Y147191D01* +X348482Y351442D02* +X348482Y355018D01* +X352558Y355018D01* +X352558Y351442D01* +X348482Y351442D01* +X348482Y353271D02* +X352558Y353271D01* +X348482Y344518D02* +X348482Y340942D01* +X348482Y344518D02* +X352558Y344518D01* +X352558Y340942D01* +X348482Y340942D01* +X348482Y342771D02* +X352558Y342771D01* +X358642Y351442D02* +X358642Y355018D01* +X362718Y355018D01* +X362718Y351442D01* +X358642Y351442D01* +X358642Y353271D02* +X362718Y353271D01* +X358642Y344518D02* +X358642Y340942D01* +X358642Y344518D02* +X362718Y344518D01* +X362718Y340942D01* +X358642Y340942D01* +X358642Y342771D02* +X362718Y342771D01* +X238258Y346022D02* +X238258Y349598D01* +X238258Y346022D02* +X234182Y346022D01* +X234182Y349598D01* +X238258Y349598D01* +X238258Y347851D02* +X234182Y347851D01* +X238258Y356522D02* +X238258Y360098D01* +X238258Y356522D02* +X234182Y356522D01* +X234182Y360098D01* +X238258Y360098D01* +X238258Y358351D02* +X234182Y358351D01* +D11* +X516290Y64210D02* +X516290Y57710D01* +X516290Y64210D02* +X526790Y64210D01* +X526790Y57710D01* +X516290Y57710D01* +X516290Y61035D02* +X526790Y61035D01* +X494290Y54710D02* +X494290Y48210D01* +X494290Y54710D02* +X504790Y54710D01* +X504790Y48210D01* +X494290Y48210D01* +X494290Y51535D02* +X504790Y51535D01* +X494290Y67210D02* +X494290Y73710D01* +X504790Y73710D01* +X504790Y67210D01* +X494290Y67210D01* +X494290Y70535D02* +X504790Y70535D01* +D10* +X182378Y340942D02* +X182378Y344518D01* +X182378Y340942D02* +X178302Y340942D01* +X178302Y344518D01* +X182378Y344518D01* +X182378Y342771D02* +X178302Y342771D01* +X182378Y351442D02* +X182378Y355018D01* +X182378Y351442D02* +X178302Y351442D01* +X178302Y355018D01* +X182378Y355018D01* +X182378Y353271D02* +X178302Y353271D01* +D11* +X448750Y247090D02* +X456250Y247090D01* +X456250Y240590D01* +X448750Y240590D01* +X448750Y247090D01* +X448750Y243915D02* +X456250Y243915D01* +X440250Y247090D02* +X432750Y247090D01* +X440250Y247090D02* +X440250Y240590D01* +X432750Y240590D01* +X432750Y247090D01* +X432750Y243915D02* +X440250Y243915D01* +D12* +X611777Y105693D02* +X611777Y98107D01* +X611777Y105693D02* +X616263Y105693D01* +X616263Y98107D01* +X611777Y98107D01* +X611777Y100401D02* +X616263Y100401D01* +X616263Y102695D02* +X611777Y102695D01* +X611777Y104989D02* +X616263Y104989D01* +X602277Y105693D02* +X602277Y98107D01* +X602277Y105693D02* +X606763Y105693D01* +X606763Y98107D01* +X602277Y98107D01* +X602277Y100401D02* +X606763Y100401D01* +X606763Y102695D02* +X602277Y102695D01* +X602277Y104989D02* +X606763Y104989D01* +X592777Y105693D02* +X592777Y98107D01* +X592777Y105693D02* +X597263Y105693D01* +X597263Y98107D01* +X592777Y98107D01* +X592777Y100401D02* +X597263Y100401D01* +X597263Y102695D02* +X592777Y102695D01* +X592777Y104989D02* +X597263Y104989D01* +X592777Y79693D02* +X592777Y72107D01* +X592777Y79693D02* +X597263Y79693D01* +X597263Y72107D01* +X592777Y72107D01* +X592777Y74401D02* +X597263Y74401D01* +X597263Y76695D02* +X592777Y76695D01* +X592777Y78989D02* +X597263Y78989D01* +X602277Y79693D02* +X602277Y72107D01* +X602277Y79693D02* +X606763Y79693D01* +X606763Y72107D01* +X602277Y72107D01* +X602277Y74401D02* +X606763Y74401D01* +X606763Y76695D02* +X602277Y76695D01* +X602277Y78989D02* +X606763Y78989D01* +X611777Y79693D02* +X611777Y72107D01* +X611777Y79693D02* +X616263Y79693D01* +X616263Y72107D01* +X611777Y72107D01* +X611777Y74401D02* +X616263Y74401D01* +X616263Y76695D02* +X611777Y76695D01* +X611777Y78989D02* +X616263Y78989D01* +D13* +X639960Y77580D02* +X647760Y77580D01* +X639960Y77580D02* +X639960Y110380D01* +X647760Y110380D01* +X647760Y77580D01* +X647760Y81570D02* +X639960Y81570D01* +X639960Y85560D02* +X647760Y85560D01* +X647760Y89550D02* +X639960Y89550D01* +X639960Y93540D02* +X647760Y93540D01* +X647760Y97530D02* +X639960Y97530D01* +X639960Y101520D02* +X647760Y101520D01* +X647760Y105510D02* +X639960Y105510D01* +X639960Y109500D02* +X647760Y109500D01* +X667960Y77580D02* +X675760Y77580D01* +X667960Y77580D02* +X667960Y110380D01* +X675760Y110380D01* +X675760Y77580D01* +X675760Y81570D02* +X667960Y81570D01* +X667960Y85560D02* +X675760Y85560D01* +X675760Y89550D02* +X667960Y89550D01* +X667960Y93540D02* +X675760Y93540D01* +X675760Y97530D02* +X667960Y97530D01* +X667960Y101520D02* +X675760Y101520D01* +X675760Y105510D02* +X667960Y105510D01* +X667960Y109500D02* +X675760Y109500D01* +D10* +X606478Y65538D02* +X602902Y65538D01* +X606478Y65538D02* +X606478Y61462D01* +X602902Y61462D01* +X602902Y65538D01* +X602902Y63291D02* +X606478Y63291D01* +X606478Y65120D02* +X602902Y65120D01* +X595978Y65538D02* +X592402Y65538D01* +X595978Y65538D02* +X595978Y61462D01* +X592402Y61462D01* +X592402Y65538D01* +X592402Y63291D02* +X595978Y63291D01* +X595978Y65120D02* +X592402Y65120D01* +X627882Y107602D02* +X627882Y111178D01* +X631958Y111178D01* +X631958Y107602D01* +X627882Y107602D01* +X627882Y109431D02* +X631958Y109431D01* +X627882Y100678D02* +X627882Y97102D01* +X627882Y100678D02* +X631958Y100678D01* +X631958Y97102D01* +X627882Y97102D01* +X627882Y98931D02* +X631958Y98931D01* +X613758Y114802D02* +X610182Y114802D01* +X610182Y118878D01* +X613758Y118878D01* +X613758Y114802D01* +X613758Y116631D02* +X610182Y116631D01* +X610182Y118460D02* +X613758Y118460D01* +X620682Y114802D02* +X624258Y114802D01* +X620682Y114802D02* +X620682Y118878D01* +X624258Y118878D01* +X624258Y114802D01* +X624258Y116631D02* +X620682Y116631D01* +X620682Y118460D02* +X624258Y118460D01* +X588358Y114802D02* +X584782Y114802D01* +X584782Y118878D01* +X588358Y118878D01* +X588358Y114802D01* +X588358Y116631D02* +X584782Y116631D01* +X584782Y118460D02* +X588358Y118460D01* +X595282Y114802D02* +X598858Y114802D01* +X595282Y114802D02* +X595282Y118878D01* +X598858Y118878D01* +X598858Y114802D01* +X598858Y116631D02* +X595282Y116631D01* +X595282Y118460D02* +X598858Y118460D01* +D14* +X639369Y62916D02* +X639369Y53924D01* +X633425Y53924D01* +X633425Y62916D01* +X639369Y62916D01* +X639369Y56964D02* +X633425Y56964D01* +X633425Y60004D02* +X639369Y60004D01* +X672135Y62916D02* +X672135Y53924D01* +X666191Y53924D01* +X666191Y62916D01* +X672135Y62916D01* +X672135Y56964D02* +X666191Y56964D01* +X666191Y60004D02* +X672135Y60004D01* +D10* +X540098Y114802D02* +X536522Y114802D01* +X536522Y118878D01* +X540098Y118878D01* +X540098Y114802D01* +X540098Y116631D02* +X536522Y116631D01* +X536522Y118460D02* +X540098Y118460D01* +X547022Y114802D02* +X550598Y114802D01* +X547022Y114802D02* +X547022Y118878D01* +X550598Y118878D01* +X550598Y114802D01* +X550598Y116631D02* +X547022Y116631D01* +X547022Y118460D02* +X550598Y118460D01* +D11* +X546930Y60250D02* +X539430Y60250D01* +X539430Y66750D01* +X546930Y66750D01* +X546930Y60250D01* +X546930Y63575D02* +X539430Y63575D01* +X555430Y60250D02* +X562930Y60250D01* +X555430Y60250D02* +X555430Y66750D01* +X562930Y66750D01* +X562930Y60250D01* +X562930Y63575D02* +X555430Y63575D01* +D15* +X581450Y132470D02* +X597550Y132470D01* +X581450Y132470D02* +X581450Y141570D01* +X597550Y141570D01* +X597550Y132470D01* +X597550Y137125D02* +X581450Y137125D01* +X581450Y178470D02* +X597550Y178470D01* +X581450Y178470D02* +X581450Y187570D01* +X597550Y187570D01* +X597550Y178470D01* +X597550Y183125D02* +X581450Y183125D01* +X672450Y178470D02* +X688550Y178470D01* +X672450Y178470D02* +X672450Y187570D01* +X688550Y187570D01* +X688550Y178470D01* +X688550Y183125D02* +X672450Y183125D01* +X672450Y132470D02* +X688550Y132470D01* +X672450Y132470D02* +X672450Y141570D01* +X688550Y141570D01* +X688550Y132470D01* +X688550Y137125D02* +X672450Y137125D01* +X941950Y197910D02* +X941950Y214010D01* +X941950Y197910D02* +X932850Y197910D01* +X932850Y214010D01* +X941950Y214010D01* +X941950Y202565D02* +X932850Y202565D01* +X932850Y207220D02* +X941950Y207220D01* +X941950Y211875D02* +X932850Y211875D01* +X895950Y214010D02* +X895950Y197910D01* +X886850Y197910D01* +X886850Y214010D01* +X895950Y214010D01* +X895950Y202565D02* +X886850Y202565D01* +X886850Y207220D02* +X895950Y207220D01* +X895950Y211875D02* +X886850Y211875D01* +X895950Y288910D02* +X895950Y305010D01* +X895950Y288910D02* +X886850Y288910D01* +X886850Y305010D01* +X895950Y305010D01* +X895950Y293565D02* +X886850Y293565D01* +X886850Y298220D02* +X895950Y298220D01* +X895950Y302875D02* +X886850Y302875D01* +X941950Y305010D02* +X941950Y288910D01* +X932850Y288910D01* +X932850Y305010D01* +X941950Y305010D01* +X941950Y293565D02* +X932850Y293565D01* +X932850Y298220D02* +X941950Y298220D01* +X941950Y302875D02* +X932850Y302875D01* +X782970Y132470D02* +X766870Y132470D01* +X766870Y141570D01* +X782970Y141570D01* +X782970Y132470D01* +X782970Y137125D02* +X766870Y137125D01* +X766870Y178470D02* +X782970Y178470D01* +X766870Y178470D02* +X766870Y187570D01* +X782970Y187570D01* +X782970Y178470D01* +X782970Y183125D02* +X766870Y183125D01* +X857870Y178470D02* +X873970Y178470D01* +X857870Y178470D02* +X857870Y187570D01* +X873970Y187570D01* +X873970Y178470D01* +X873970Y183125D02* +X857870Y183125D01* +X857870Y132470D02* +X873970Y132470D01* +X857870Y132470D02* +X857870Y141570D01* +X873970Y141570D01* +X873970Y132470D01* +X873970Y137125D02* +X857870Y137125D01* +D10* +X537558Y178302D02* +X533982Y178302D01* +X533982Y182378D01* +X537558Y182378D01* +X537558Y178302D01* +X537558Y180131D02* +X533982Y180131D01* +X533982Y181960D02* +X537558Y181960D01* +X544482Y178302D02* +X548058Y178302D01* +X544482Y178302D02* +X544482Y182378D01* +X548058Y182378D01* +X548058Y178302D01* +X548058Y180131D02* +X544482Y180131D01* +X544482Y181960D02* +X548058Y181960D01* +X508502Y257462D02* +X508502Y261038D01* +X512578Y261038D01* +X512578Y257462D01* +X508502Y257462D01* +X508502Y259291D02* +X512578Y259291D01* +X508502Y250538D02* +X508502Y246962D01* +X508502Y250538D02* +X512578Y250538D01* +X512578Y246962D01* +X508502Y246962D01* +X508502Y248791D02* +X512578Y248791D01* +X861642Y53842D02* +X865218Y53842D01* +X861642Y53842D02* +X861642Y57918D01* +X865218Y57918D01* +X865218Y53842D01* +X865218Y55671D02* +X861642Y55671D01* +X861642Y57500D02* +X865218Y57500D01* +X872142Y53842D02* +X875718Y53842D01* +X872142Y53842D02* +X872142Y57918D01* +X875718Y57918D01* +X875718Y53842D01* +X875718Y55671D02* +X872142Y55671D01* +X872142Y57500D02* +X875718Y57500D01* +D16* +X1105420Y206560D02* +X1150420Y206560D01* +X1105420Y206560D02* +X1105420Y251560D01* +X1150420Y251560D01* +X1150420Y206560D01* +X1150420Y211310D02* +X1105420Y211310D01* +X1105420Y216060D02* +X1150420Y216060D01* +X1150420Y220810D02* +X1105420Y220810D01* +X1105420Y225560D02* +X1150420Y225560D01* +X1150420Y230310D02* +X1105420Y230310D01* +X1105420Y235060D02* +X1150420Y235060D01* +X1150420Y239810D02* +X1105420Y239810D01* +X1105420Y244560D02* +X1150420Y244560D01* +X1150420Y249310D02* +X1105420Y249310D01* +D17* +X1061345Y301135D02* +X1044495Y301135D01* +X1044495Y306985D01* +X1061345Y306985D01* +X1061345Y301135D01* +X1061345Y304127D02* +X1044495Y304127D01* +X1044495Y288435D02* +X1061345Y288435D01* +X1044495Y288435D02* +X1044495Y294285D01* +X1061345Y294285D01* +X1061345Y288435D01* +X1061345Y291427D02* +X1044495Y291427D01* +X1044495Y275735D02* +X1061345Y275735D01* +X1044495Y275735D02* +X1044495Y281585D01* +X1061345Y281585D01* +X1061345Y275735D01* +X1061345Y278727D02* +X1044495Y278727D01* +X1044495Y263035D02* +X1061345Y263035D01* +X1044495Y263035D02* +X1044495Y268885D01* +X1061345Y268885D01* +X1061345Y263035D01* +X1061345Y266027D02* +X1044495Y266027D01* +X1044495Y250335D02* +X1061345Y250335D01* +X1044495Y250335D02* +X1044495Y256185D01* +X1061345Y256185D01* +X1061345Y250335D01* +X1061345Y253327D02* +X1044495Y253327D01* +X1044495Y237635D02* +X1061345Y237635D01* +X1044495Y237635D02* +X1044495Y243485D01* +X1061345Y243485D01* +X1061345Y237635D01* +X1061345Y240627D02* +X1044495Y240627D01* +X1044495Y224935D02* +X1061345Y224935D01* +X1044495Y224935D02* +X1044495Y230785D01* +X1061345Y230785D01* +X1061345Y224935D01* +X1061345Y227927D02* +X1044495Y227927D01* +X1044495Y212235D02* +X1061345Y212235D01* +X1044495Y212235D02* +X1044495Y218085D01* +X1061345Y218085D01* +X1061345Y212235D01* +X1061345Y215227D02* +X1044495Y215227D01* +X1044495Y199535D02* +X1061345Y199535D01* +X1044495Y199535D02* +X1044495Y205385D01* +X1061345Y205385D01* +X1061345Y199535D01* +X1061345Y202527D02* +X1044495Y202527D01* +X1044495Y186835D02* +X1061345Y186835D01* +X1044495Y186835D02* +X1044495Y192685D01* +X1061345Y192685D01* +X1061345Y186835D01* +X1061345Y189827D02* +X1044495Y189827D01* +X1044495Y174135D02* +X1061345Y174135D01* +X1044495Y174135D02* +X1044495Y179985D01* +X1061345Y179985D01* +X1061345Y174135D01* +X1061345Y177127D02* +X1044495Y177127D01* +X1044495Y161435D02* +X1061345Y161435D01* +X1044495Y161435D02* +X1044495Y167285D01* +X1061345Y167285D01* +X1061345Y161435D01* +X1061345Y164427D02* +X1044495Y164427D01* +X1044495Y148735D02* +X1061345Y148735D01* +X1044495Y148735D02* +X1044495Y154585D01* +X1061345Y154585D01* +X1061345Y148735D01* +X1061345Y151727D02* +X1044495Y151727D01* +X1044495Y136035D02* +X1061345Y136035D01* +X1044495Y136035D02* +X1044495Y141885D01* +X1061345Y141885D01* +X1061345Y136035D01* +X1061345Y139027D02* +X1044495Y139027D01* +X1083695Y137385D02* +X1083695Y120535D01* +X1077845Y120535D01* +X1077845Y137385D01* +X1083695Y137385D01* +X1083695Y123527D02* +X1077845Y123527D01* +X1077845Y126519D02* +X1083695Y126519D01* +X1083695Y129511D02* +X1077845Y129511D01* +X1077845Y132503D02* +X1083695Y132503D01* +X1083695Y135495D02* +X1077845Y135495D01* +X1096395Y137385D02* +X1096395Y120535D01* +X1090545Y120535D01* +X1090545Y137385D01* +X1096395Y137385D01* +X1096395Y123527D02* +X1090545Y123527D01* +X1090545Y126519D02* +X1096395Y126519D01* +X1096395Y129511D02* +X1090545Y129511D01* +X1090545Y132503D02* +X1096395Y132503D01* +X1096395Y135495D02* +X1090545Y135495D01* +X1109095Y137385D02* +X1109095Y120535D01* +X1103245Y120535D01* +X1103245Y137385D01* +X1109095Y137385D01* +X1109095Y123527D02* +X1103245Y123527D01* +X1103245Y126519D02* +X1109095Y126519D01* +X1109095Y129511D02* +X1103245Y129511D01* +X1103245Y132503D02* +X1109095Y132503D01* +X1109095Y135495D02* +X1103245Y135495D01* +X1121795Y137385D02* +X1121795Y120535D01* +X1115945Y120535D01* +X1115945Y137385D01* +X1121795Y137385D01* +X1121795Y123527D02* +X1115945Y123527D01* +X1115945Y126519D02* +X1121795Y126519D01* +X1121795Y129511D02* +X1115945Y129511D01* +X1115945Y132503D02* +X1121795Y132503D01* +X1121795Y135495D02* +X1115945Y135495D01* +X1134495Y137385D02* +X1134495Y120535D01* +X1128645Y120535D01* +X1128645Y137385D01* +X1134495Y137385D01* +X1134495Y123527D02* +X1128645Y123527D01* +X1128645Y126519D02* +X1134495Y126519D01* +X1134495Y129511D02* +X1128645Y129511D01* +X1128645Y132503D02* +X1134495Y132503D01* +X1134495Y135495D02* +X1128645Y135495D01* +X1147195Y137385D02* +X1147195Y120535D01* +X1141345Y120535D01* +X1141345Y137385D01* +X1147195Y137385D01* +X1147195Y123527D02* +X1141345Y123527D01* +X1141345Y126519D02* +X1147195Y126519D01* +X1147195Y129511D02* +X1141345Y129511D01* +X1141345Y132503D02* +X1147195Y132503D01* +X1147195Y135495D02* +X1141345Y135495D01* +X1159895Y137385D02* +X1159895Y120535D01* +X1154045Y120535D01* +X1154045Y137385D01* +X1159895Y137385D01* +X1159895Y123527D02* +X1154045Y123527D01* +X1154045Y126519D02* +X1159895Y126519D01* +X1159895Y129511D02* +X1154045Y129511D01* +X1154045Y132503D02* +X1159895Y132503D01* +X1159895Y135495D02* +X1154045Y135495D01* +X1172595Y137385D02* +X1172595Y120535D01* +X1166745Y120535D01* +X1166745Y137385D01* +X1172595Y137385D01* +X1172595Y123527D02* +X1166745Y123527D01* +X1166745Y126519D02* +X1172595Y126519D01* +X1172595Y129511D02* +X1166745Y129511D01* +X1166745Y132503D02* +X1172595Y132503D01* +X1172595Y135495D02* +X1166745Y135495D01* +X1185295Y137385D02* +X1185295Y120535D01* +X1179445Y120535D01* +X1179445Y137385D01* +X1185295Y137385D01* +X1185295Y123527D02* +X1179445Y123527D01* +X1179445Y126519D02* +X1185295Y126519D01* +X1185295Y129511D02* +X1179445Y129511D01* +X1179445Y132503D02* +X1185295Y132503D01* +X1185295Y135495D02* +X1179445Y135495D01* +X1197995Y137385D02* +X1197995Y120535D01* +X1192145Y120535D01* +X1192145Y137385D01* +X1197995Y137385D01* +X1197995Y123527D02* +X1192145Y123527D01* +X1192145Y126519D02* +X1197995Y126519D01* +X1197995Y129511D02* +X1192145Y129511D01* +X1192145Y132503D02* +X1197995Y132503D01* +X1197995Y135495D02* +X1192145Y135495D01* +X1214495Y141885D02* +X1231345Y141885D01* +X1231345Y136035D01* +X1214495Y136035D01* +X1214495Y141885D01* +X1214495Y139027D02* +X1231345Y139027D01* +X1231345Y154585D02* +X1214495Y154585D01* +X1231345Y154585D02* +X1231345Y148735D01* +X1214495Y148735D01* +X1214495Y154585D01* +X1214495Y151727D02* +X1231345Y151727D01* +X1231345Y167285D02* +X1214495Y167285D01* +X1231345Y167285D02* +X1231345Y161435D01* +X1214495Y161435D01* +X1214495Y167285D01* +X1214495Y164427D02* +X1231345Y164427D01* +X1231345Y179985D02* +X1214495Y179985D01* +X1231345Y179985D02* +X1231345Y174135D01* +X1214495Y174135D01* +X1214495Y179985D01* +X1214495Y177127D02* +X1231345Y177127D01* +X1231345Y192685D02* +X1214495Y192685D01* +X1231345Y192685D02* +X1231345Y186835D01* +X1214495Y186835D01* +X1214495Y192685D01* +X1214495Y189827D02* +X1231345Y189827D01* +X1231345Y205385D02* +X1214495Y205385D01* +X1231345Y205385D02* +X1231345Y199535D01* +X1214495Y199535D01* +X1214495Y205385D01* +X1214495Y202527D02* +X1231345Y202527D01* +X1231345Y218085D02* +X1214495Y218085D01* +X1231345Y218085D02* +X1231345Y212235D01* +X1214495Y212235D01* +X1214495Y218085D01* +X1214495Y215227D02* +X1231345Y215227D01* +X1231345Y230785D02* +X1214495Y230785D01* +X1231345Y230785D02* +X1231345Y224935D01* +X1214495Y224935D01* +X1214495Y230785D01* +X1214495Y227927D02* +X1231345Y227927D01* +X1231345Y243485D02* +X1214495Y243485D01* +X1231345Y243485D02* +X1231345Y237635D01* +X1214495Y237635D01* +X1214495Y243485D01* +X1214495Y240627D02* +X1231345Y240627D01* +X1231345Y256185D02* +X1214495Y256185D01* +X1231345Y256185D02* +X1231345Y250335D01* +X1214495Y250335D01* +X1214495Y256185D01* +X1214495Y253327D02* +X1231345Y253327D01* +X1231345Y268885D02* +X1214495Y268885D01* +X1231345Y268885D02* +X1231345Y263035D01* +X1214495Y263035D01* +X1214495Y268885D01* +X1214495Y266027D02* +X1231345Y266027D01* +X1231345Y281585D02* +X1214495Y281585D01* +X1231345Y281585D02* +X1231345Y275735D01* +X1214495Y275735D01* +X1214495Y281585D01* +X1214495Y278727D02* +X1231345Y278727D01* +X1231345Y294285D02* +X1214495Y294285D01* +X1231345Y294285D02* +X1231345Y288435D01* +X1214495Y288435D01* +X1214495Y294285D01* +X1214495Y291427D02* +X1231345Y291427D01* +X1231345Y306985D02* +X1214495Y306985D01* +X1231345Y306985D02* +X1231345Y301135D01* +X1214495Y301135D01* +X1214495Y306985D01* +X1214495Y304127D02* +X1231345Y304127D01* +D18* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D19* +X169100Y324120D02* +X169100Y326120D01* +X169100Y324120D02* +X156100Y324120D01* +X156100Y326120D01* +X169100Y326120D01* +X169100Y326020D02* +X156100Y326020D01* +X169100Y330620D02* +X169100Y332620D01* +X169100Y330620D02* +X156100Y330620D01* +X156100Y332620D01* +X169100Y332620D01* +X169100Y332520D02* +X156100Y332520D01* +X169100Y319620D02* +X169100Y317620D01* +X156100Y317620D01* +X156100Y319620D01* +X169100Y319620D01* +X169100Y319520D02* +X156100Y319520D01* +X169100Y313120D02* +X169100Y311120D01* +X156100Y311120D01* +X156100Y313120D01* +X169100Y313120D01* +X169100Y313020D02* +X156100Y313020D01* +X169100Y337120D02* +X169100Y339120D01* +X169100Y337120D02* +X156100Y337120D01* +X156100Y339120D01* +X169100Y339120D01* +X169100Y339020D02* +X156100Y339020D01* +D20* +X157330Y354620D02* +X164330Y354620D01* +X157330Y354620D02* +X157330Y363620D01* +X164330Y363620D01* +X164330Y354620D01* +X164330Y361270D02* +X157330Y361270D01* +X157330Y286620D02* +X164330Y286620D01* +X157330Y286620D02* +X157330Y295620D01* +X164330Y295620D01* +X164330Y286620D01* +X164330Y293270D02* +X157330Y293270D01* +D21* +X133600Y332370D02* +X133600Y341870D01* +X143100Y341870D01* +X143100Y332370D01* +X133600Y332370D01* +X133600Y341395D02* +X143100Y341395D01* +X133600Y317870D02* +X133600Y308370D01* +X133600Y317870D02* +X143100Y317870D01* +X143100Y308370D01* +X133600Y308370D01* +X133600Y317395D02* +X143100Y317395D01* +D22* +X510805Y181385D02* +X518495Y181385D01* +X518495Y179695D01* +X510805Y179695D01* +X510805Y181385D01* +X510805Y180559D02* +X518495Y180559D01* +X518495Y186385D02* +X510805Y186385D01* +X518495Y186385D02* +X518495Y184695D01* +X510805Y184695D01* +X510805Y186385D01* +X510805Y185559D02* +X518495Y185559D01* +X518495Y191385D02* +X510805Y191385D01* +X518495Y191385D02* +X518495Y189695D01* +X510805Y189695D01* +X510805Y191385D01* +X510805Y190559D02* +X518495Y190559D01* +X518495Y196385D02* +X510805Y196385D01* +X518495Y196385D02* +X518495Y194695D01* +X510805Y194695D01* +X510805Y196385D01* +X510805Y195559D02* +X518495Y195559D01* +X518495Y201385D02* +X510805Y201385D01* +X518495Y201385D02* +X518495Y199695D01* +X510805Y199695D01* +X510805Y201385D01* +X510805Y200559D02* +X518495Y200559D01* +X518495Y206385D02* +X510805Y206385D01* +X518495Y206385D02* +X518495Y204695D01* +X510805Y204695D01* +X510805Y206385D01* +X510805Y205559D02* +X518495Y205559D01* +X479795Y206385D02* +X472105Y206385D01* +X479795Y206385D02* +X479795Y204695D01* +X472105Y204695D01* +X472105Y206385D01* +X472105Y205559D02* +X479795Y205559D01* +X479795Y201385D02* +X472105Y201385D01* +X479795Y201385D02* +X479795Y199695D01* +X472105Y199695D01* +X472105Y201385D01* +X472105Y200559D02* +X479795Y200559D01* +X479795Y196385D02* +X472105Y196385D01* +X479795Y196385D02* +X479795Y194695D01* +X472105Y194695D01* +X472105Y196385D01* +X472105Y195559D02* +X479795Y195559D01* +X479795Y191385D02* +X472105Y191385D01* +X479795Y191385D02* +X479795Y189695D01* +X472105Y189695D01* +X472105Y191385D01* +X472105Y190559D02* +X479795Y190559D01* +X479795Y186385D02* +X472105Y186385D01* +X479795Y186385D02* +X479795Y184695D01* +X472105Y184695D01* +X472105Y186385D01* +X472105Y185559D02* +X479795Y185559D01* +X479795Y181385D02* +X472105Y181385D01* +X479795Y181385D02* +X479795Y179695D01* +X472105Y179695D01* +X472105Y181385D01* +X472105Y180559D02* +X479795Y180559D01* +X483645Y177535D02* +X483645Y169845D01* +X481955Y169845D01* +X481955Y177535D01* +X483645Y177535D01* +X483645Y170709D02* +X481955Y170709D01* +X481955Y171573D02* +X483645Y171573D01* +X483645Y172437D02* +X481955Y172437D01* +X481955Y173301D02* +X483645Y173301D01* +X483645Y174165D02* +X481955Y174165D01* +X481955Y175029D02* +X483645Y175029D01* +X483645Y175893D02* +X481955Y175893D01* +X481955Y176757D02* +X483645Y176757D01* +X488645Y177535D02* +X488645Y169845D01* +X486955Y169845D01* +X486955Y177535D01* +X488645Y177535D01* +X488645Y170709D02* +X486955Y170709D01* +X486955Y171573D02* +X488645Y171573D01* +X488645Y172437D02* +X486955Y172437D01* +X486955Y173301D02* +X488645Y173301D01* +X488645Y174165D02* +X486955Y174165D01* +X486955Y175029D02* +X488645Y175029D01* +X488645Y175893D02* +X486955Y175893D01* +X486955Y176757D02* +X488645Y176757D01* +X493645Y177535D02* +X493645Y169845D01* +X491955Y169845D01* +X491955Y177535D01* +X493645Y177535D01* +X493645Y170709D02* +X491955Y170709D01* +X491955Y171573D02* +X493645Y171573D01* +X493645Y172437D02* +X491955Y172437D01* +X491955Y173301D02* +X493645Y173301D01* +X493645Y174165D02* +X491955Y174165D01* +X491955Y175029D02* +X493645Y175029D01* +X493645Y175893D02* +X491955Y175893D01* +X491955Y176757D02* +X493645Y176757D01* +X498645Y177535D02* +X498645Y169845D01* +X496955Y169845D01* +X496955Y177535D01* +X498645Y177535D01* +X498645Y170709D02* +X496955Y170709D01* +X496955Y171573D02* +X498645Y171573D01* +X498645Y172437D02* +X496955Y172437D01* +X496955Y173301D02* +X498645Y173301D01* +X498645Y174165D02* +X496955Y174165D01* +X496955Y175029D02* +X498645Y175029D01* +X498645Y175893D02* +X496955Y175893D01* +X496955Y176757D02* +X498645Y176757D01* +X503645Y177535D02* +X503645Y169845D01* +X501955Y169845D01* +X501955Y177535D01* +X503645Y177535D01* +X503645Y170709D02* +X501955Y170709D01* +X501955Y171573D02* +X503645Y171573D01* +X503645Y172437D02* +X501955Y172437D01* +X501955Y173301D02* +X503645Y173301D01* +X503645Y174165D02* +X501955Y174165D01* +X501955Y175029D02* +X503645Y175029D01* +X503645Y175893D02* +X501955Y175893D01* +X501955Y176757D02* +X503645Y176757D01* +X508645Y177535D02* +X508645Y169845D01* +X506955Y169845D01* +X506955Y177535D01* +X508645Y177535D01* +X508645Y170709D02* +X506955Y170709D01* +X506955Y171573D02* +X508645Y171573D01* +X508645Y172437D02* +X506955Y172437D01* +X506955Y173301D02* +X508645Y173301D01* +X508645Y174165D02* +X506955Y174165D01* +X506955Y175029D02* +X508645Y175029D01* +X508645Y175893D02* +X506955Y175893D01* +X506955Y176757D02* +X508645Y176757D01* +X508645Y208545D02* +X508645Y216235D01* +X508645Y208545D02* +X506955Y208545D01* +X506955Y216235D01* +X508645Y216235D01* +X508645Y209409D02* +X506955Y209409D01* +X506955Y210273D02* +X508645Y210273D01* +X508645Y211137D02* +X506955Y211137D01* +X506955Y212001D02* +X508645Y212001D01* +X508645Y212865D02* +X506955Y212865D01* +X506955Y213729D02* +X508645Y213729D01* +X508645Y214593D02* +X506955Y214593D01* +X506955Y215457D02* +X508645Y215457D01* +X503645Y216235D02* +X503645Y208545D01* +X501955Y208545D01* +X501955Y216235D01* +X503645Y216235D01* +X503645Y209409D02* +X501955Y209409D01* +X501955Y210273D02* +X503645Y210273D01* +X503645Y211137D02* +X501955Y211137D01* +X501955Y212001D02* +X503645Y212001D01* +X503645Y212865D02* +X501955Y212865D01* +X501955Y213729D02* +X503645Y213729D01* +X503645Y214593D02* +X501955Y214593D01* +X501955Y215457D02* +X503645Y215457D01* +X498645Y216235D02* +X498645Y208545D01* +X496955Y208545D01* +X496955Y216235D01* +X498645Y216235D01* +X498645Y209409D02* +X496955Y209409D01* +X496955Y210273D02* +X498645Y210273D01* +X498645Y211137D02* +X496955Y211137D01* +X496955Y212001D02* +X498645Y212001D01* +X498645Y212865D02* +X496955Y212865D01* +X496955Y213729D02* +X498645Y213729D01* +X498645Y214593D02* +X496955Y214593D01* +X496955Y215457D02* +X498645Y215457D01* +X493645Y216235D02* +X493645Y208545D01* +X491955Y208545D01* +X491955Y216235D01* +X493645Y216235D01* +X493645Y209409D02* +X491955Y209409D01* +X491955Y210273D02* +X493645Y210273D01* +X493645Y211137D02* +X491955Y211137D01* +X491955Y212001D02* +X493645Y212001D01* +X493645Y212865D02* +X491955Y212865D01* +X491955Y213729D02* +X493645Y213729D01* +X493645Y214593D02* +X491955Y214593D01* +X491955Y215457D02* +X493645Y215457D01* +X488645Y216235D02* +X488645Y208545D01* +X486955Y208545D01* +X486955Y216235D01* +X488645Y216235D01* +X488645Y209409D02* +X486955Y209409D01* +X486955Y210273D02* +X488645Y210273D01* +X488645Y211137D02* +X486955Y211137D01* +X486955Y212001D02* +X488645Y212001D01* +X488645Y212865D02* +X486955Y212865D01* +X486955Y213729D02* +X488645Y213729D01* +X488645Y214593D02* +X486955Y214593D01* +X486955Y215457D02* +X488645Y215457D01* +X483645Y216235D02* +X483645Y208545D01* +X481955Y208545D01* +X481955Y216235D01* +X483645Y216235D01* +X483645Y209409D02* +X481955Y209409D01* +X481955Y210273D02* +X483645Y210273D01* +X483645Y211137D02* +X481955Y211137D01* +X481955Y212001D02* +X483645Y212001D01* +X483645Y212865D02* +X481955Y212865D01* +X481955Y213729D02* +X483645Y213729D01* +X483645Y214593D02* +X481955Y214593D01* +X481955Y215457D02* +X483645Y215457D01* +D16* +X505300Y203040D02* +X505300Y183040D01* +X485300Y183040D01* +X485300Y203040D01* +X505300Y203040D01* +X505300Y187790D02* +X485300Y187790D01* +X485300Y192540D02* +X505300Y192540D01* +X505300Y197290D02* +X485300Y197290D01* +X485300Y202040D02* +X505300Y202040D01* +D23* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D24* +X292090Y237498D03* +D25* +X259090Y271798D03* +X259090Y114298D03* +D23* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D26* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D27* +X726470Y142000D02* +X722570Y142000D01* +X722570Y146400D01* +X726470Y146400D01* +X726470Y142000D01* +X726470Y143995D02* +X722570Y143995D01* +X722570Y145990D02* +X726470Y145990D01* +X736570Y142000D02* +X740470Y142000D01* +X736570Y142000D02* +X736570Y146400D01* +X740470Y146400D01* +X740470Y142000D01* +X740470Y143995D02* +X736570Y143995D01* +X736570Y145990D02* +X740470Y145990D01* +X740470Y133000D02* +X736570Y133000D01* +X736570Y137400D01* +X740470Y137400D01* +X740470Y133000D01* +X740470Y134995D02* +X736570Y134995D01* +X736570Y136990D02* +X740470Y136990D01* +X726470Y133000D02* +X722570Y133000D01* +X722570Y137400D01* +X726470Y137400D01* +X726470Y133000D01* +X726470Y134995D02* +X722570Y134995D01* +X722570Y136990D02* +X726470Y136990D01* +D28* +X800100Y20320D03* +D23* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D29* +X837806Y57798D02* +X851294Y57798D01* +X851294Y55486D01* +X837806Y55486D01* +X837806Y57798D01* +X837806Y56669D02* +X851294Y56669D01* +X851294Y64402D02* +X837806Y64402D01* +X851294Y64402D02* +X851294Y62090D01* +X837806Y62090D01* +X837806Y64402D01* +X837806Y63273D02* +X851294Y63273D01* +X851294Y70752D02* +X837806Y70752D01* +X851294Y70752D02* +X851294Y68440D01* +X837806Y68440D01* +X837806Y70752D01* +X837806Y69623D02* +X851294Y69623D01* +X851294Y77356D02* +X837806Y77356D01* +X851294Y77356D02* +X851294Y75044D01* +X837806Y75044D01* +X837806Y77356D01* +X837806Y76227D02* +X851294Y76227D01* +X851294Y83960D02* +X837806Y83960D01* +X851294Y83960D02* +X851294Y81648D01* +X837806Y81648D01* +X837806Y83960D01* +X837806Y82831D02* +X851294Y82831D01* +X851294Y90310D02* +X837806Y90310D01* +X851294Y90310D02* +X851294Y87998D01* +X837806Y87998D01* +X837806Y90310D01* +X837806Y89181D02* +X851294Y89181D01* +X851294Y96914D02* +X837806Y96914D01* +X851294Y96914D02* +X851294Y94602D01* +X837806Y94602D01* +X837806Y96914D01* +X837806Y95785D02* +X851294Y95785D01* +X792874Y96914D02* +X779386Y96914D01* +X792874Y96914D02* +X792874Y94602D01* +X779386Y94602D01* +X779386Y96914D01* +X779386Y95785D02* +X792874Y95785D01* +X792874Y90310D02* +X779386Y90310D01* +X792874Y90310D02* +X792874Y87998D01* +X779386Y87998D01* +X779386Y90310D01* +X779386Y89181D02* +X792874Y89181D01* +X792874Y83960D02* +X779386Y83960D01* +X792874Y83960D02* +X792874Y81648D01* +X779386Y81648D01* +X779386Y83960D01* +X779386Y82831D02* +X792874Y82831D01* +X792874Y77356D02* +X779386Y77356D01* +X792874Y77356D02* +X792874Y75044D01* +X779386Y75044D01* +X779386Y77356D01* +X779386Y76227D02* +X792874Y76227D01* +X792874Y70752D02* +X779386Y70752D01* +X792874Y70752D02* +X792874Y68440D01* +X779386Y68440D01* +X779386Y70752D01* +X779386Y69623D02* +X792874Y69623D01* +X792874Y64402D02* +X779386Y64402D01* +X792874Y64402D02* +X792874Y62090D01* +X779386Y62090D01* +X779386Y64402D01* +X779386Y63273D02* +X792874Y63273D01* +X792874Y57798D02* +X779386Y57798D01* +X792874Y57798D02* +X792874Y55486D01* +X779386Y55486D01* +X779386Y57798D01* +X779386Y56669D02* +X792874Y56669D01* +D11* +X592650Y45010D02* +X585150Y45010D01* +X585150Y51510D01* +X592650Y51510D01* +X592650Y45010D01* +X592650Y48335D02* +X585150Y48335D01* +X601150Y45010D02* +X608650Y45010D01* +X601150Y45010D02* +X601150Y51510D01* +X608650Y51510D01* +X608650Y45010D01* +X608650Y48335D02* +X601150Y48335D01* +X714690Y52630D02* +X722190Y52630D01* +X714690Y52630D02* +X714690Y59130D01* +X722190Y59130D01* +X722190Y52630D01* +X722190Y55955D02* +X714690Y55955D01* +X730690Y52630D02* +X738190Y52630D01* +X730690Y52630D02* +X730690Y59130D01* +X738190Y59130D01* +X738190Y52630D01* +X738190Y55955D02* +X730690Y55955D01* +D28* +X749300Y78740D03* +D23* +X723900Y78740D03* +D11* +X692686Y301960D02* +X689516Y308757D01* +X695406Y311504D01* +X698576Y304707D01* +X692686Y301960D01* +X691135Y305285D02* +X698306Y305285D01* +X696756Y308610D02* +X689585Y308610D01* +X696277Y294257D02* +X699447Y287460D01* +X696277Y294257D02* +X702167Y297004D01* +X705337Y290207D01* +X699447Y287460D01* +X697896Y290785D02* +X705067Y290785D01* +X703517Y294110D02* +X696346Y294110D01* +X764542Y304409D02* +X767712Y311206D01* +X773602Y308459D01* +X770432Y301662D01* +X764542Y304409D01* +X764812Y304987D02* +X771983Y304987D01* +X773533Y308312D02* +X766362Y308312D01* +X760950Y296705D02* +X757780Y289908D01* +X760950Y296705D02* +X766840Y293958D01* +X763670Y287161D01* +X757780Y289908D01* +X758050Y290486D02* +X765221Y290486D01* +X766771Y293811D02* +X759600Y293811D01* +D10* +X841322Y246882D02* +X844898Y246882D01* +X841322Y246882D02* +X841322Y250958D01* +X844898Y250958D01* +X844898Y246882D01* +X844898Y248711D02* +X841322Y248711D01* +X841322Y250540D02* +X844898Y250540D01* +X851822Y246882D02* +X855398Y246882D01* +X851822Y246882D02* +X851822Y250958D01* +X855398Y250958D01* +X855398Y246882D01* +X855398Y248711D02* +X851822Y248711D01* +X851822Y250540D02* +X855398Y250540D01* +X852518Y259582D02* +X848942Y259582D01* +X848942Y263658D01* +X852518Y263658D01* +X852518Y259582D01* +X852518Y261411D02* +X848942Y261411D01* +X848942Y263240D02* +X852518Y263240D01* +X859442Y259582D02* +X863018Y259582D01* +X859442Y259582D02* +X859442Y263658D01* +X863018Y263658D01* +X863018Y259582D01* +X863018Y261411D02* +X859442Y261411D01* +X859442Y263240D02* +X863018Y263240D01* +D16* +X449620Y363220D02* +X449622Y363319D01* +X449628Y363419D01* +X449638Y363518D01* +X449652Y363616D01* +X449669Y363714D01* +X449691Y363811D01* +X449716Y363907D01* +X449745Y364002D01* +X449778Y364096D01* +X449815Y364188D01* +X449855Y364279D01* +X449899Y364368D01* +X449947Y364456D01* +X449998Y364541D01* +X450052Y364624D01* +X450109Y364706D01* +X450170Y364784D01* +X450234Y364861D01* +X450300Y364934D01* +X450370Y365005D01* +X450442Y365073D01* +X450517Y365139D01* +X450595Y365201D01* +X450675Y365260D01* +X450757Y365316D01* +X450841Y365368D01* +X450928Y365417D01* +X451016Y365463D01* +X451106Y365505D01* +X451198Y365544D01* +X451291Y365579D01* +X451385Y365610D01* +X451481Y365637D01* +X451578Y365660D01* +X451675Y365680D01* +X451773Y365696D01* +X451872Y365708D01* +X451971Y365716D01* +X452070Y365720D01* +X452170Y365720D01* +X452269Y365716D01* +X452368Y365708D01* +X452467Y365696D01* +X452565Y365680D01* +X452662Y365660D01* +X452759Y365637D01* +X452855Y365610D01* +X452949Y365579D01* +X453042Y365544D01* +X453134Y365505D01* +X453224Y365463D01* +X453312Y365417D01* +X453399Y365368D01* +X453483Y365316D01* +X453565Y365260D01* +X453645Y365201D01* +X453723Y365139D01* +X453798Y365073D01* +X453870Y365005D01* +X453940Y364934D01* +X454006Y364861D01* +X454070Y364784D01* +X454131Y364706D01* +X454188Y364624D01* +X454242Y364541D01* +X454293Y364456D01* +X454341Y364368D01* +X454385Y364279D01* +X454425Y364188D01* +X454462Y364096D01* +X454495Y364002D01* +X454524Y363907D01* +X454549Y363811D01* +X454571Y363714D01* +X454588Y363616D01* +X454602Y363518D01* +X454612Y363419D01* +X454618Y363319D01* +X454620Y363220D01* +X454618Y363121D01* +X454612Y363021D01* +X454602Y362922D01* +X454588Y362824D01* +X454571Y362726D01* +X454549Y362629D01* +X454524Y362533D01* +X454495Y362438D01* +X454462Y362344D01* +X454425Y362252D01* +X454385Y362161D01* +X454341Y362072D01* +X454293Y361984D01* +X454242Y361899D01* +X454188Y361816D01* +X454131Y361734D01* +X454070Y361656D01* +X454006Y361579D01* +X453940Y361506D01* +X453870Y361435D01* +X453798Y361367D01* +X453723Y361301D01* +X453645Y361239D01* +X453565Y361180D01* +X453483Y361124D01* +X453399Y361072D01* +X453312Y361023D01* +X453224Y360977D01* +X453134Y360935D01* +X453042Y360896D01* +X452949Y360861D01* +X452855Y360830D01* +X452759Y360803D01* +X452662Y360780D01* +X452565Y360760D01* +X452467Y360744D01* +X452368Y360732D01* +X452269Y360724D01* +X452170Y360720D01* +X452070Y360720D01* +X451971Y360724D01* +X451872Y360732D01* +X451773Y360744D01* +X451675Y360760D01* +X451578Y360780D01* +X451481Y360803D01* +X451385Y360830D01* +X451291Y360861D01* +X451198Y360896D01* +X451106Y360935D01* +X451016Y360977D01* +X450928Y361023D01* +X450841Y361072D01* +X450757Y361124D01* +X450675Y361180D01* +X450595Y361239D01* +X450517Y361301D01* +X450442Y361367D01* +X450370Y361435D01* +X450300Y361506D01* +X450234Y361579D01* +X450170Y361656D01* +X450109Y361734D01* +X450052Y361816D01* +X449998Y361899D01* +X449947Y361984D01* +X449899Y362072D01* +X449855Y362161D01* +X449815Y362252D01* +X449778Y362344D01* +X449745Y362438D01* +X449716Y362533D01* +X449691Y362629D01* +X449669Y362726D01* +X449652Y362824D01* +X449638Y362922D01* +X449628Y363021D01* +X449622Y363121D01* +X449620Y363220D01* +X1254800Y96520D02* +X1254802Y96619D01* +X1254808Y96719D01* +X1254818Y96818D01* +X1254832Y96916D01* +X1254849Y97014D01* +X1254871Y97111D01* +X1254896Y97207D01* +X1254925Y97302D01* +X1254958Y97396D01* +X1254995Y97488D01* +X1255035Y97579D01* +X1255079Y97668D01* +X1255127Y97756D01* +X1255178Y97841D01* +X1255232Y97924D01* +X1255289Y98006D01* +X1255350Y98084D01* +X1255414Y98161D01* +X1255480Y98234D01* +X1255550Y98305D01* +X1255622Y98373D01* +X1255697Y98439D01* +X1255775Y98501D01* +X1255855Y98560D01* +X1255937Y98616D01* +X1256021Y98668D01* +X1256108Y98717D01* +X1256196Y98763D01* +X1256286Y98805D01* +X1256378Y98844D01* +X1256471Y98879D01* +X1256565Y98910D01* +X1256661Y98937D01* +X1256758Y98960D01* +X1256855Y98980D01* +X1256953Y98996D01* +X1257052Y99008D01* +X1257151Y99016D01* +X1257250Y99020D01* +X1257350Y99020D01* +X1257449Y99016D01* +X1257548Y99008D01* +X1257647Y98996D01* +X1257745Y98980D01* +X1257842Y98960D01* +X1257939Y98937D01* +X1258035Y98910D01* +X1258129Y98879D01* +X1258222Y98844D01* +X1258314Y98805D01* +X1258404Y98763D01* +X1258492Y98717D01* +X1258579Y98668D01* +X1258663Y98616D01* +X1258745Y98560D01* +X1258825Y98501D01* +X1258903Y98439D01* +X1258978Y98373D01* +X1259050Y98305D01* +X1259120Y98234D01* +X1259186Y98161D01* +X1259250Y98084D01* +X1259311Y98006D01* +X1259368Y97924D01* +X1259422Y97841D01* +X1259473Y97756D01* +X1259521Y97668D01* +X1259565Y97579D01* +X1259605Y97488D01* +X1259642Y97396D01* +X1259675Y97302D01* +X1259704Y97207D01* +X1259729Y97111D01* +X1259751Y97014D01* +X1259768Y96916D01* +X1259782Y96818D01* +X1259792Y96719D01* +X1259798Y96619D01* +X1259800Y96520D01* +X1259798Y96421D01* +X1259792Y96321D01* +X1259782Y96222D01* +X1259768Y96124D01* +X1259751Y96026D01* +X1259729Y95929D01* +X1259704Y95833D01* +X1259675Y95738D01* +X1259642Y95644D01* +X1259605Y95552D01* +X1259565Y95461D01* +X1259521Y95372D01* +X1259473Y95284D01* +X1259422Y95199D01* +X1259368Y95116D01* +X1259311Y95034D01* +X1259250Y94956D01* +X1259186Y94879D01* +X1259120Y94806D01* +X1259050Y94735D01* +X1258978Y94667D01* +X1258903Y94601D01* +X1258825Y94539D01* +X1258745Y94480D01* +X1258663Y94424D01* +X1258579Y94372D01* +X1258492Y94323D01* +X1258404Y94277D01* +X1258314Y94235D01* +X1258222Y94196D01* +X1258129Y94161D01* +X1258035Y94130D01* +X1257939Y94103D01* +X1257842Y94080D01* +X1257745Y94060D01* +X1257647Y94044D01* +X1257548Y94032D01* +X1257449Y94024D01* +X1257350Y94020D01* +X1257250Y94020D01* +X1257151Y94024D01* +X1257052Y94032D01* +X1256953Y94044D01* +X1256855Y94060D01* +X1256758Y94080D01* +X1256661Y94103D01* +X1256565Y94130D01* +X1256471Y94161D01* +X1256378Y94196D01* +X1256286Y94235D01* +X1256196Y94277D01* +X1256108Y94323D01* +X1256021Y94372D01* +X1255937Y94424D01* +X1255855Y94480D01* +X1255775Y94539D01* +X1255697Y94601D01* +X1255622Y94667D01* +X1255550Y94735D01* +X1255480Y94806D01* +X1255414Y94879D01* +X1255350Y94956D01* +X1255289Y95034D01* +X1255232Y95116D01* +X1255178Y95199D01* +X1255127Y95284D01* +X1255079Y95372D01* +X1255035Y95461D01* +X1254995Y95552D01* +X1254958Y95644D01* +X1254925Y95738D01* +X1254896Y95833D01* +X1254871Y95929D01* +X1254849Y96026D01* +X1254832Y96124D01* +X1254818Y96222D01* +X1254808Y96321D01* +X1254802Y96421D01* +X1254800Y96520D01* +X134660Y17780D02* +X134662Y17879D01* +X134668Y17979D01* +X134678Y18078D01* +X134692Y18176D01* +X134709Y18274D01* +X134731Y18371D01* +X134756Y18467D01* +X134785Y18562D01* +X134818Y18656D01* +X134855Y18748D01* +X134895Y18839D01* +X134939Y18928D01* +X134987Y19016D01* +X135038Y19101D01* +X135092Y19184D01* +X135149Y19266D01* +X135210Y19344D01* +X135274Y19421D01* +X135340Y19494D01* +X135410Y19565D01* +X135482Y19633D01* +X135557Y19699D01* +X135635Y19761D01* +X135715Y19820D01* +X135797Y19876D01* +X135881Y19928D01* +X135968Y19977D01* +X136056Y20023D01* +X136146Y20065D01* +X136238Y20104D01* +X136331Y20139D01* +X136425Y20170D01* +X136521Y20197D01* +X136618Y20220D01* +X136715Y20240D01* +X136813Y20256D01* +X136912Y20268D01* +X137011Y20276D01* +X137110Y20280D01* +X137210Y20280D01* +X137309Y20276D01* +X137408Y20268D01* +X137507Y20256D01* +X137605Y20240D01* +X137702Y20220D01* +X137799Y20197D01* +X137895Y20170D01* +X137989Y20139D01* +X138082Y20104D01* +X138174Y20065D01* +X138264Y20023D01* +X138352Y19977D01* +X138439Y19928D01* +X138523Y19876D01* +X138605Y19820D01* +X138685Y19761D01* +X138763Y19699D01* +X138838Y19633D01* +X138910Y19565D01* +X138980Y19494D01* +X139046Y19421D01* +X139110Y19344D01* +X139171Y19266D01* +X139228Y19184D01* +X139282Y19101D01* +X139333Y19016D01* +X139381Y18928D01* +X139425Y18839D01* +X139465Y18748D01* +X139502Y18656D01* +X139535Y18562D01* +X139564Y18467D01* +X139589Y18371D01* +X139611Y18274D01* +X139628Y18176D01* +X139642Y18078D01* +X139652Y17979D01* +X139658Y17879D01* +X139660Y17780D01* +X139658Y17681D01* +X139652Y17581D01* +X139642Y17482D01* +X139628Y17384D01* +X139611Y17286D01* +X139589Y17189D01* +X139564Y17093D01* +X139535Y16998D01* +X139502Y16904D01* +X139465Y16812D01* +X139425Y16721D01* +X139381Y16632D01* +X139333Y16544D01* +X139282Y16459D01* +X139228Y16376D01* +X139171Y16294D01* +X139110Y16216D01* +X139046Y16139D01* +X138980Y16066D01* +X138910Y15995D01* +X138838Y15927D01* +X138763Y15861D01* +X138685Y15799D01* +X138605Y15740D01* +X138523Y15684D01* +X138439Y15632D01* +X138352Y15583D01* +X138264Y15537D01* +X138174Y15495D01* +X138082Y15456D01* +X137989Y15421D01* +X137895Y15390D01* +X137799Y15363D01* +X137702Y15340D01* +X137605Y15320D01* +X137507Y15304D01* +X137408Y15292D01* +X137309Y15284D01* +X137210Y15280D01* +X137110Y15280D01* +X137011Y15284D01* +X136912Y15292D01* +X136813Y15304D01* +X136715Y15320D01* +X136618Y15340D01* +X136521Y15363D01* +X136425Y15390D01* +X136331Y15421D01* +X136238Y15456D01* +X136146Y15495D01* +X136056Y15537D01* +X135968Y15583D01* +X135881Y15632D01* +X135797Y15684D01* +X135715Y15740D01* +X135635Y15799D01* +X135557Y15861D01* +X135482Y15927D01* +X135410Y15995D01* +X135340Y16066D01* +X135274Y16139D01* +X135210Y16216D01* +X135149Y16294D01* +X135092Y16376D01* +X135038Y16459D01* +X134987Y16544D01* +X134939Y16632D01* +X134895Y16721D01* +X134855Y16812D01* +X134818Y16904D01* +X134785Y16998D01* +X134756Y17093D01* +X134731Y17189D01* +X134709Y17286D01* +X134692Y17384D01* +X134678Y17482D01* +X134668Y17581D01* +X134662Y17681D01* +X134660Y17780D01* +D11* +X507170Y107390D02* +X514670Y107390D01* +X514670Y100890D01* +X507170Y100890D01* +X507170Y107390D01* +X507170Y104215D02* +X514670Y104215D01* +X498670Y107390D02* +X491170Y107390D01* +X498670Y107390D02* +X498670Y100890D01* +X491170Y100890D01* +X491170Y107390D01* +X491170Y104215D02* +X498670Y104215D01* +D30* +X254130Y358150D02* +X254130Y360750D01* +X267730Y360750D01* +X267730Y358150D01* +X254130Y358150D01* +X254130Y359480D02* +X267730Y359480D01* +X254130Y354250D02* +X254130Y351650D01* +X254130Y354250D02* +X267730Y354250D01* +X267730Y351650D01* +X254130Y351650D01* +X254130Y352980D02* +X267730Y352980D01* +X254130Y347750D02* +X254130Y345150D01* +X254130Y347750D02* +X267730Y347750D01* +X267730Y345150D01* +X254130Y345150D01* +X254130Y346480D02* +X267730Y346480D01* +X254130Y341250D02* +X254130Y338650D01* +X254130Y341250D02* +X267730Y341250D01* +X267730Y338650D01* +X254130Y338650D01* +X254130Y339980D02* +X267730Y339980D01* +X254130Y334750D02* +X254130Y332150D01* +X254130Y334750D02* +X267730Y334750D01* +X267730Y332150D01* +X254130Y332150D01* +X254130Y333480D02* +X267730Y333480D01* +X254130Y328250D02* +X254130Y325650D01* +X254130Y328250D02* +X267730Y328250D01* +X267730Y325650D01* +X254130Y325650D01* +X254130Y326980D02* +X267730Y326980D01* +X254130Y321750D02* +X254130Y319150D01* +X254130Y321750D02* +X267730Y321750D01* +X267730Y319150D01* +X254130Y319150D01* +X254130Y320480D02* +X267730Y320480D01* +X254130Y315250D02* +X254130Y312650D01* +X254130Y315250D02* +X267730Y315250D01* +X267730Y312650D01* +X254130Y312650D01* +X254130Y313980D02* +X267730Y313980D01* +X254130Y308750D02* +X254130Y306150D01* +X254130Y308750D02* +X267730Y308750D01* +X267730Y306150D01* +X254130Y306150D01* +X254130Y307480D02* +X267730Y307480D01* +X254130Y302250D02* +X254130Y299650D01* +X254130Y302250D02* +X267730Y302250D01* +X267730Y299650D01* +X254130Y299650D01* +X254130Y300980D02* +X267730Y300980D01* +X326630Y302250D02* +X326630Y299650D01* +X326630Y302250D02* +X340230Y302250D01* +X340230Y299650D01* +X326630Y299650D01* +X326630Y300980D02* +X340230Y300980D01* +X326630Y306150D02* +X326630Y308750D01* +X340230Y308750D01* +X340230Y306150D01* +X326630Y306150D01* +X326630Y307480D02* +X340230Y307480D01* +X326630Y312650D02* +X326630Y315250D01* +X340230Y315250D01* +X340230Y312650D01* +X326630Y312650D01* +X326630Y313980D02* +X340230Y313980D01* +X326630Y319150D02* +X326630Y321750D01* +X340230Y321750D01* +X340230Y319150D01* +X326630Y319150D01* +X326630Y320480D02* +X340230Y320480D01* +X326630Y325650D02* +X326630Y328250D01* +X340230Y328250D01* +X340230Y325650D01* +X326630Y325650D01* +X326630Y326980D02* +X340230Y326980D01* +X326630Y332150D02* +X326630Y334750D01* +X340230Y334750D01* +X340230Y332150D01* +X326630Y332150D01* +X326630Y333480D02* +X340230Y333480D01* +X326630Y338650D02* +X326630Y341250D01* +X340230Y341250D01* +X340230Y338650D01* +X326630Y338650D01* +X326630Y339980D02* +X340230Y339980D01* +X326630Y345150D02* +X326630Y347750D01* +X340230Y347750D01* +X340230Y345150D01* +X326630Y345150D01* +X326630Y346480D02* +X340230Y346480D01* +X326630Y351650D02* +X326630Y354250D01* +X340230Y354250D01* +X340230Y351650D01* +X326630Y351650D01* +X326630Y352980D02* +X340230Y352980D01* +X326630Y358150D02* +X326630Y360750D01* +X340230Y360750D01* +X340230Y358150D01* +X326630Y358150D01* +X326630Y359480D02* +X340230Y359480D01* +D10* +X407322Y362718D02* +X410898Y362718D01* +X410898Y358642D01* +X407322Y358642D01* +X407322Y362718D01* +X407322Y360471D02* +X410898Y360471D01* +X410898Y362300D02* +X407322Y362300D01* +X400398Y362718D02* +X396822Y362718D01* +X400398Y362718D02* +X400398Y358642D01* +X396822Y358642D01* +X396822Y362718D01* +X396822Y360471D02* +X400398Y360471D01* +X400398Y362300D02* +X396822Y362300D01* +X407322Y352558D02* +X410898Y352558D01* +X410898Y348482D01* +X407322Y348482D01* +X407322Y352558D01* +X407322Y350311D02* +X410898Y350311D01* +X410898Y352140D02* +X407322Y352140D01* +X400398Y352558D02* +X396822Y352558D01* +X400398Y352558D02* +X400398Y348482D01* +X396822Y348482D01* +X396822Y352558D01* +X396822Y350311D02* +X400398Y350311D01* +X400398Y352140D02* +X396822Y352140D01* +D31* +X229348Y303078D02* +X229348Y295602D01* +X219372Y295602D01* +X219372Y303078D01* +X229348Y303078D01* +X229348Y299426D02* +X219372Y299426D01* +X207348Y303078D02* +X207348Y295602D01* +X197372Y295602D01* +X197372Y303078D01* +X207348Y303078D01* +X207348Y299426D02* +X197372Y299426D01* +X207348Y311602D02* +X207348Y319078D01* +X207348Y311602D02* +X197372Y311602D01* +X197372Y319078D01* +X207348Y319078D01* +X207348Y315426D02* +X197372Y315426D01* +X229348Y319078D02* +X229348Y311602D01* +X219372Y311602D01* +X219372Y319078D01* +X229348Y319078D01* +X229348Y315426D02* +X219372Y315426D01* +D10* +X189998Y303878D02* +X189998Y300302D01* +X185922Y300302D01* +X185922Y303878D01* +X189998Y303878D01* +X189998Y302131D02* +X185922Y302131D01* +X189998Y310802D02* +X189998Y314378D01* +X189998Y310802D02* +X185922Y310802D01* +X185922Y314378D01* +X189998Y314378D01* +X189998Y312631D02* +X185922Y312631D01* +X236722Y314378D02* +X236722Y310802D01* +X236722Y314378D02* +X240798Y314378D01* +X240798Y310802D01* +X236722Y310802D01* +X236722Y312631D02* +X240798Y312631D01* +X236722Y303878D02* +X236722Y300302D01* +X236722Y303878D02* +X240798Y303878D01* +X240798Y300302D01* +X236722Y300302D01* +X236722Y302131D02* +X240798Y302131D01* +D11* +X540310Y85690D02* +X546810Y85690D01* +X546810Y75190D01* +X540310Y75190D01* +X540310Y85690D01* +X540310Y78515D02* +X546810Y78515D01* +X546810Y81840D02* +X540310Y81840D01* +X540310Y85165D02* +X546810Y85165D01* +X537310Y107690D02* +X530810Y107690D01* +X537310Y107690D02* +X537310Y97190D01* +X530810Y97190D01* +X530810Y107690D01* +X530810Y100515D02* +X537310Y100515D01* +X537310Y103840D02* +X530810Y103840D01* +X530810Y107165D02* +X537310Y107165D01* +X549810Y107690D02* +X556310Y107690D01* +X556310Y97190D01* +X549810Y97190D01* +X549810Y107690D01* +X549810Y100515D02* +X556310Y100515D01* +X556310Y103840D02* +X549810Y103840D01* +X549810Y107165D02* +X556310Y107165D01* +X700330Y95570D02* +X700330Y88070D01* +X700330Y95570D02* +X706830Y95570D01* +X706830Y88070D01* +X700330Y88070D01* +X700330Y91395D02* +X706830Y91395D01* +X706830Y94720D02* +X700330Y94720D01* +X700330Y79570D02* +X700330Y72070D01* +X700330Y79570D02* +X706830Y79570D01* +X706830Y72070D01* +X700330Y72070D01* +X700330Y75395D02* +X706830Y75395D01* +X706830Y78720D02* +X700330Y78720D01* +X1261550Y181050D02* +X1269050Y181050D01* +X1269050Y174550D01* +X1261550Y174550D01* +X1261550Y181050D01* +X1261550Y177875D02* +X1269050Y177875D01* +X1253050Y181050D02* +X1245550Y181050D01* +X1253050Y181050D02* +X1253050Y174550D01* +X1245550Y174550D01* +X1245550Y181050D01* +X1245550Y177875D02* +X1253050Y177875D01* +X1261550Y132790D02* +X1269050Y132790D01* +X1269050Y126290D01* +X1261550Y126290D01* +X1261550Y132790D01* +X1261550Y129615D02* +X1269050Y129615D01* +X1253050Y132790D02* +X1245550Y132790D01* +X1253050Y132790D02* +X1253050Y126290D01* +X1245550Y126290D01* +X1245550Y132790D01* +X1245550Y129615D02* +X1253050Y129615D01* +D32* +X680720Y58420D02* +X669163Y58420D01* +D33* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +D34* +X160830Y291120D02* +X139350Y291120D01* +X138350Y292120D02* +X138350Y313120D01* +X138350Y292120D02* +X139350Y291120D01* +X138350Y337120D02* +X138350Y358120D01* +X159830Y358120D02* +X160830Y359120D01* +X159830Y358120D02* +X138350Y358120D01* +X180340Y353230D02* +X180340Y365816D01* +D33* +X180340Y365816D03* +D34* +X559180Y71500D02* +X559180Y63500D01* +X559180Y71500D02* +X563880Y76200D01* +D33* +X563880Y76200D03* +D34* +X574040Y79120D02* +X576580Y79120D01* +X574040Y79120D02* +X566800Y79120D01* +X563880Y76200D01* +X548810Y116840D02* +X586570Y116840D01* +X604520Y101900D02* +X604520Y98990D01* +D32* +X464820Y228600D02* +X452500Y228600D01* +D33* +X464820Y228600D03* +D32* +X464820Y221150D02* +X462280Y218610D01* +X464820Y221150D02* +X464820Y228600D01* +X436500Y259080D02* +X424180Y259080D01* +D33* +X424180Y259080D03* +D34* +X462450Y147150D02* +X472440Y147150D01* +X462450Y147150D02* +X462280Y147320D01* +D33* +X462280Y147320D03* +D34* +X459740Y167470D02* +X459910Y167640D01* +X469900Y167640D01* +D33* +X469900Y167640D03* +D34* +X500380Y134620D02* +X512700Y134620D01* +D33* +X500380Y134620D03* +D34* +X513080Y147150D02* +X525780Y147150D01* +X513080Y147150D02* +X502750Y147150D01* +X500380Y144780D01* +X500380Y134620D01* +X546270Y180340D02* +X556260Y180340D01* +D33* +X556260Y180340D03* +D34* +X556260Y190500D02* +X551350Y190500D01* +X556260Y190500D02* +X556260Y180340D01* +X1207240Y304060D02* +X1222920Y304060D01* +X1207240Y304060D02* +X1206500Y304800D01* +D33* +X1206500Y304800D03* +X1051560Y76200D03* +D34* +X1051560Y86190D01* +X1041400Y86190D01* +X873930Y55880D02* +X873760Y56050D01* +X873760Y66040D01* +D33* +X873760Y66040D03* +D34* +X830580Y83820D02* +X830580Y91948D01* +X834390Y95758D02* +X844550Y95758D01* +X834390Y95758D02* +X830580Y91948D01* +D33* +X830580Y83820D03* +D34* +X881210Y149860D02* +X876300Y154770D01* +X881210Y149860D02* +X886460Y149860D01* +D33* +X886460Y149860D03* +D34* +X937400Y205960D02* +X937400Y243980D01* +X939800Y246380D01* +D33* +X939800Y246380D03* +X960120Y121920D03* +D34* +X970110Y121920D01* +X970280Y121750D01* +X1080770Y128960D02* +X1080770Y107950D01* +X1082040Y106680D01* +D33* +X1082040Y106680D03* +D34* +X1127920Y198280D02* +X1127920Y229060D01* +X1127920Y198280D02* +X1127760Y198120D01* +D33* +X1127760Y198120D03* +D34* +X680500Y137020D02* +X663080Y137020D01* +X657860Y142240D01* +D33* +X657860Y142240D03* +D34* +X680720Y139700D02* +X683260Y142240D01* +X688340Y66040D02* +X680720Y58420D01* +X688340Y66040D02* +X688340Y75820D01* +X652640Y137020D02* +X589500Y137020D01* +X652640Y137020D02* +X657860Y142240D01* +X604520Y101900D02* +X604520Y90541D01* +X600720Y86740D01* +X591820Y86740D01* +X584200Y79120D01* +X576580Y79120D01* +D33* +X861060Y274320D03* +X952500Y297180D03* +D34* +X937620Y297180D02* +X937400Y296960D01* +X937620Y297180D02* +X952500Y297180D01* +D33* +X952500Y281940D03* +D34* +X967570Y254000D02* +X960120Y246550D01* +X960120Y246380D01* +D33* +X960120Y246380D03* +D34* +X1052920Y304060D02* +X1070080Y304060D01* +X1071880Y302260D01* +D33* +X1071880Y302260D03* +D34* +X400050Y26670D02* +X364490Y26670D01* +X355600Y35560D01* +X355600Y50420D01* +D32* +X1016000Y50420D02* +X1016000Y37720D01* +X1004950Y26670D01* +X971550Y26670D01* +X138350Y313120D02* +X138350Y337120D01* +X162600Y312120D02* +X175560Y312120D01* +X177800Y309880D01* +D33* +X177800Y309880D03* +D34* +X347980Y182710D02* +X347980Y172720D01* +D33* +X347980Y172720D03* +D34* +X497840Y259250D02* +X497840Y269240D01* +D33* +X497840Y269240D03* +D35* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +D34* +X993140Y284650D02* +X993140Y294640D01* +D35* +X993140Y294640D03* +D34* +X1052920Y302430D02* +X1052920Y304060D01* +X1052920Y302430D02* +X1033780Y302430D01* +X1021080Y302430D02* +X1021080Y302640D01* +X1021080Y302430D02* +X1033780Y302430D01* +X693420Y154770D02* +X693420Y146384D01* +X684056Y137020D01* +X680500Y137020D01* +X1001140Y302640D02* +X1021080Y302640D01* +X1001140Y302640D02* +X993140Y294640D01* +X861230Y274150D02* +X861060Y274320D01* +X861230Y274150D02* +X861230Y261620D01* +X856150Y248920D02* +X853610Y248920D01* +X856150Y248920D02* +X856266Y248804D01* +X866024Y248804D01* +D35* +X866024Y248804D03* +D33* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +D34* +X360680Y342730D02* +X350520Y342730D01* +X360680Y342730D02* +X360850Y342900D01* +D33* +X370840Y342900D03* +D34* +X360850Y342900D01* +X360850Y363220D02* +X368300Y363220D01* +X370840Y360680D01* +D33* +X370840Y360680D03* +D34* +X246380Y358310D02* +X236220Y358310D01* +X226230Y358310D01* +X226060Y358140D01* +D33* +X226060Y358140D03* +D34* +X227110Y302090D02* +X238760Y302090D01* +X227110Y302090D02* +X224360Y299340D01* +X199610Y312590D02* +X187960Y312590D01* +X199610Y312590D02* +X202360Y315340D01* +X238760Y302090D02* +X238760Y292292D01* +D33* +X238760Y292292D03* +D34* +X187960Y312590D02* +X180510Y312590D01* +X177800Y309880D01* +X260930Y313950D02* +X275330Y313950D01* +X276860Y312420D01* +D33* +X276860Y312420D03* +D32* +X548810Y116840D02* +X548810Y106690D01* +X553060Y102440D01* +X570660Y102440D01* +X576580Y96520D01* +X576580Y81660D01* +X574040Y79120D01* +D33* +X556260Y83820D03* +D34* +X703580Y75820D02* +X703580Y60960D01* +X701040Y58420D01* +D33* +X713740Y274320D03* +X802640Y274320D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X640080Y251460D03* +X1183640Y205740D03* +X1125220Y281940D03* +X1270000Y157480D03* +X1170940Y106680D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1193800Y167640D03* +X1074420Y208280D03* +D34* +X1051560Y96690D02* +X1041400Y96690D01* +X1031240Y96690D01* +X1052992Y265888D02* +X1052920Y265960D01* +X1052992Y265888D02* +X1066723Y265888D01* +X1089660Y242951D01* +X1089660Y159201D01* +X1070682Y140223D01* +X1070682Y108048D02* +X1059324Y96690D01* +X1031240Y96690D01* +X1070682Y108048D02* +X1070682Y140223D01* +X1205760Y291360D02* +X1222920Y291360D01* +X1205760Y291360D02* +X1193800Y279400D01* +D33* +X1193800Y279400D03* +D34* +X507800Y220780D02* +X507800Y212390D01* +X507800Y220780D02* +X518160Y231140D01* +X518160Y239494D01* +D33* +X518160Y239494D03* +D34* +X1207240Y202460D02* +X1222920Y202460D01* +X1207240Y202460D02* +X1206500Y203200D01* +D33* +X1206500Y203200D03* +D34* +X514650Y205540D02* +X514650Y217541D01* +D33* +X563880Y211610D03* +D34* +X563880Y215971D01* +X531658Y234648D02* +X528150Y231140D01* +X528150Y228600D01* +X531658Y234648D02* +X545203Y234648D01* +X563880Y215971D01* +X528150Y228600D02* +X525710Y228600D01* +X514650Y217541D01* +D33* +X502800Y162909D03* +X1023620Y175260D03* +D34* +X502800Y173690D02* +X502800Y162909D01* +X1023620Y175260D02* +X1023790Y175430D01* +X1033780Y175430D01* +X1207240Y240560D02* +X1222920Y240560D01* +X1207240Y240560D02* +X1206500Y241300D01* +D33* +X1206500Y241300D03* +D34* +X492800Y224124D02* +X492800Y212390D01* +X492800Y224124D02* +X499816Y231140D01* +D33* +X499816Y231140D03* +D34* +X1209780Y215160D02* +X1222920Y215160D01* +X1209780Y215160D02* +X1206500Y218440D01* +D33* +X1206500Y218440D03* +D34* +X487800Y212390D02* +X487800Y228720D01* +X490220Y231140D01* +X490188Y231172D01* +D33* +X490188Y231172D03* +D34* +X1207240Y278660D02* +X1222920Y278660D01* +X1207240Y278660D02* +X1206500Y279400D01* +D33* +X1206500Y279400D03* +D34* +X482800Y212390D02* +X482600Y212590D01* +X482600Y238760D01* +D33* +X482600Y238760D03* +D34* +X1052920Y189760D02* +X1073680Y189760D01* +X1074420Y190500D01* +D33* +X1074420Y190500D03* +X566332Y202014D03* +D34* +X566420Y201926D01* +X566420Y190670D01* +X1052920Y177060D02* +X1073680Y177060D01* +X1074420Y177800D01* +D33* +X1074420Y177800D03* +X581660Y203200D03* +D34* +X574040Y195580D01* +X574040Y162390D02* +X566590Y154940D01* +X574040Y162390D02* +X574040Y195580D01* +X1052920Y164360D02* +X1078760Y164360D01* +X1082040Y167640D01* +D33* +X1082040Y167640D03* +X553720Y203200D03* +D34* +X538650Y203200D01* +X1176760Y265960D02* +X1222920Y265960D01* +X1176760Y265960D02* +X1165860Y276860D01* +D33* +X1165860Y276860D03* +X429260Y350596D03* +D34* +X429260Y351260D01* +X419840Y360680D02* +X409110Y360680D01* +X419840Y360680D02* +X429260Y351260D01* +X1169140Y253260D02* +X1222920Y253260D01* +D33* +X1155700Y266700D03* +X421640Y342900D03* +D34* +X419180Y345360D01* +X419180Y345440D01* +X1155700Y266700D02* +X1169140Y253260D01* +X414100Y350520D02* +X409110Y350520D01* +X414100Y350520D02* +X419180Y345440D01* +X680500Y184071D02* +X680500Y183020D01* +X680500Y184071D02* +X697118Y200688D01* +X680500Y183020D02* +X589500Y183020D01* +X678180Y180700D02* +X680500Y183020D01* +X678180Y180700D02* +X678180Y165270D01* +X693420Y165270D01* +X1222148Y121920D02* +X1222920Y122692D01* +X1222920Y138960D01* +D33* +X1222148Y121920D03* +D34* +X492760Y330200D02* +X463120Y330200D01* +X589500Y233460D02* +X589500Y183020D01* +X589500Y233460D02* +X492760Y330200D01* +X905760Y163866D02* +X905760Y163580D01* +X905760Y163866D02* +X868938Y200688D01* +D33* +X905760Y163580D03* +D34* +X868938Y200688D02* +X697118Y200688D01* +X491808Y283958D02* +X491808Y301563D01* +X491808Y283958D02* +X490023Y282172D01* +X452058Y282172D01* +X441960Y292270D02* +X441960Y297010D01* +X441960Y292270D02* +X452058Y282172D01* +X484151Y309220D02* +X491808Y301563D01* +X484151Y309220D02* +X481760Y309220D01* +X462280Y307510D02* +X462280Y312190D01* +X453072Y335368D02* +X448740Y339700D01* +X441120Y339700D01* +X453072Y335368D02* +X453072Y321398D01* +X462280Y312190D01* +D36* +X210780Y332820D02* +X203080Y325120D01* +X243430Y320450D02* +X260930Y320450D01* +X231060Y332820D02* +X210780Y332820D01* +X231060Y332820D02* +X243430Y320450D01* +X181460Y331620D02* +X162600Y331620D01* +X181460Y331620D02* +X187960Y325120D01* +X203080Y325120D01* +X243755Y326950D02* +X260930Y326950D01* +X243755Y326950D02* +X233059Y337646D01* +X205408Y337646D02* +X200784Y333022D01* +X198244Y333022D01* +X205408Y337646D02* +X233059Y337646D01* +D33* +X198244Y333022D03* +X176511Y323831D03* +D36* +X175222Y325120D01* +X162600Y325120D01* +D34* +X738970Y160020D02* +X738970Y144650D01* +X738520Y144200D01* +X724070Y144650D02* +X724070Y160020D01* +X724070Y144650D02* +X724520Y144200D01* +X713570Y134450D02* +X706120Y134450D01* +X714320Y135200D02* +X724520Y135200D01* +X714320Y135200D02* +X713570Y134450D01* +X1265090Y178010D02* +X1265090Y193040D01* +X1265090Y178010D02* +X1265300Y177800D01* +X1265090Y142240D02* +X1265090Y129750D01* +X1265300Y129540D01* +X1052920Y151660D02* +X1004040Y151660D01* +X982980Y172720D01* +D33* +X982980Y172720D03* +X759460Y160020D03* +D34* +X749470Y160020D01* +X844550Y76200D02* +X859187Y76200D01* +X919480Y136493D02* +X919480Y144780D01* +D33* +X919480Y144780D03* +X1143000Y154940D03* +D34* +X1188720Y154940D01* +X919480Y136493D02* +X859187Y76200D01* +X1188720Y154940D02* +X1203922Y139738D01* +X1199050Y109390D02* +X1198880Y109390D01* +X1199050Y109390D02* +X1203922Y114262D01* +X1203922Y139738D01* +X1182370Y128960D02* +X1182370Y113200D01* +X1186180Y109390D01* +X1198880Y109390D01* +X1052920Y253260D02* +X1052848Y253188D01* +X978882Y253188D02* +X978070Y254000D01* +X978882Y253188D02* +X1052848Y253188D01* +X765302Y36322D02* +X749300Y20320D01* +X928363Y36322D02* +X936028Y43988D01* +X936028Y128308D01* +X928363Y36322D02* +X765302Y36322D01* +D33* +X972820Y165100D03* +X924560Y175260D03* +D34* +X929640Y175260D02* +X978070Y223690D01* +X929640Y175260D02* +X924560Y175260D01* +X978070Y223690D02* +X978070Y254000D01* +X972820Y165100D02* +X936028Y128308D01* +X858933Y63246D02* +X844550Y63246D01* +X858933Y63246D02* +X1010775Y215088D01* +X1024578Y215160D02* +X1052920Y215160D01* +X1024578Y215160D02* +X1024506Y215088D01* +X1010775Y215088D01* +X1052848Y202388D02* +X1052920Y202460D01* +X1052848Y202388D02* +X1040588Y202388D01* +X1021080Y182880D01* +X995680Y182880D01* +D33* +X995680Y182880D03* +X711200Y170180D03* +D34* +X713570Y167810D01* +X713570Y160020D01* +X1001893Y240560D02* +X1052920Y240560D01* +X1001893Y240560D02* +X928183Y166850D01* +X916651Y166850D01* +X909320Y174181D01* +X909320Y175260D01* +D33* +X909320Y175260D03* +X704129Y158029D03* +D34* +X706120Y156038D01* +X706120Y144950D01* +X844550Y69596D02* +X859536Y69596D01* +X1024980Y227860D02* +X1052920Y227860D01* +X1024980Y227860D02* +X1024908Y227788D01* +X1017728Y227788D01* +X859536Y69596D01* +X863600Y183020D02* +X774920Y183020D01* +X863600Y183020D02* +X865920Y183020D01* +X871080Y183020D01* +X863600Y183020D02* +X863600Y165270D01* +X876300Y165270D01* +X1195070Y142691D02* +X1195070Y128960D01* +X1195070Y142691D02* +X1190441Y147320D01* +X1122680Y147320D01* +D33* +X1122680Y147320D03* +X889000Y165100D03* +D34* +X871080Y183020D01* +X940092Y42304D02* +X930046Y32258D01* +X786638Y32258D02* +X774700Y20320D01* +X786638Y32258D02* +X930046Y32258D01* +X940092Y124752D02* +X947590Y132250D01* +X940092Y124752D02* +X940092Y42304D01* +X976990Y138960D02* +X1052920Y138960D01* +X976990Y138960D02* +X970280Y132250D01* +X947590Y132250D01* +X860044Y82804D02* +X844550Y82804D01* +X860044Y82804D02* +X906780Y129540D01* +X1160780Y173340D02* +X1177200Y189760D01* +X1160780Y173340D02* +X1160780Y167640D01* +X1177200Y189760D02* +X1222920Y189760D01* +D33* +X1160780Y167640D03* +D34* +X906780Y142240D02* +X906780Y129540D01* +D33* +X906780Y142240D03* +D34* +X1211410Y109390D02* +X1211580Y109390D01* +X1211410Y109390D02* +X1207986Y112814D01* +X1207986Y141422D01* +X1160950Y167640D02* +X1160780Y167640D01* +X1160950Y167640D02* +X1169586Y159004D01* +X1190403Y159004D02* +X1207986Y141422D01* +X1190403Y159004D02* +X1169586Y159004D01* +X1093470Y157263D02* +X1093470Y128960D01* +X1093470Y157263D02* +X1093724Y157517D01* +X1093724Y249936D01* +X1092200Y251460D01* +X1092200Y250070D01* +X1092560Y249710D01* +D33* +X1092560Y249710D03* +X548640Y259080D03* +D34* +X538650Y259080D01* +X1222920Y151660D02* +X1245170Y151660D01* +X1254590Y142240D01* +X1236240Y164360D02* +X1222920Y164360D01* +X1236240Y164360D02* +X1239520Y167640D01* +X1239520Y185420D01* +X1247140Y193040D02* +X1254590Y193040D01* +X1247140Y193040D02* +X1239520Y185420D01* +D37* +X463550Y58420D02* +X463550Y24130D01* +D34* +X635000Y7620D02* +X647700Y20320D01* +X480060Y7620D02* +X463550Y24130D01* +X480060Y7620D02* +X635000Y7620D01* +X647700Y20320D02* +X664972Y37592D01* +X743712Y37592D01* +X775716Y69596D02* +X786130Y69596D01* +X775716Y69596D02* +X743712Y37592D01* +X643636Y41656D02* +X622300Y20320D01* +X643636Y41656D02* +X741172Y41656D01* +X775716Y76200D02* +X786130Y76200D01* +X775716Y76200D02* +X741172Y41656D01* +D37* +X895350Y45720D02* +X908050Y58420D01* +X895350Y45720D02* +X875030Y45720D01* +D34* +X869950Y40640D01* +X772160Y40640D01* +X752565Y40640D01* +X686308Y33528D02* +X673100Y20320D01* +X686308Y33528D02* +X745453Y33528D01* +X775171Y63246D02* +X786130Y63246D01* +X752565Y40640D02* +X745453Y33528D01* +X772160Y60235D02* +X775171Y63246D01* +X772160Y60235D02* +X772160Y40640D01* +D38* +X446848Y190540D02* +X443114Y186806D01* +D35* +X443114Y186806D03* +D38* +X446848Y190540D02* +X475950Y190540D01* +X441728Y185420D02* +X431970Y185420D01* +X441728Y185420D02* +X443114Y186806D01* +X449580Y180340D02* +X454780Y185540D01* +D35* +X449580Y180340D03* +D38* +X454780Y185540D02* +X475950Y185540D01* +X444500Y175260D02* +X439590Y175260D01* +X444500Y175260D02* +X449580Y180340D01* +X454780Y200540D02* +X449580Y205740D01* +D35* +X449580Y205740D03* +D38* +X454780Y200540D02* +X475950Y200540D01* +X444500Y210820D02* +X439590Y210820D01* +X444500Y210820D02* +X449580Y205740D01* +X443114Y199274D02* +X446848Y195540D01* +D35* +X443114Y199274D03* +D38* +X446848Y195540D02* +X475950Y195540D01* +X441728Y200660D02* +X431970Y200660D01* +X441728Y200660D02* +X443114Y199274D01* +D34* +X469930Y205540D02* +X475950Y205540D01* +X469930Y205540D02* +X467360Y208110D01* +X462280Y208110D01* +X429090Y220980D02* +X428880Y220980D01* +X436500Y228600D01* +X347980Y193210D02* +X330200Y193210D01* +X324450Y187460D01* +X310005Y187460D01* +X347980Y193210D02* +X348150Y193040D01* +X482800Y173690D02* +X482800Y168010D01* +X472440Y157650D01* +X202994Y137975D02* +X194804Y129785D01* +X202994Y137975D02* +X202994Y169796D01* +X245296Y212098D01* +X292090Y212098D01* +X292090Y205375D01* +X310005Y187460D01* +D32* +X436500Y228600D02* +X436500Y243840D01* +D34* +X457867Y208110D02* +X462280Y208110D01* +X421470Y200660D02* +X421470Y193040D01* +X421470Y185420D01* +X421470Y193040D02* +X348150Y193040D01* +X429090Y210820D02* +X429090Y220980D01* +X436500Y228600D02* +X437377Y228600D01* +X457867Y208110D01* +X444330Y157650D02* +X472440Y157650D01* +X429090Y172720D02* +X429090Y175260D01* +X429090Y172720D02* +X444330Y157480D01* +X444330Y157650D01* +D38* +X429090Y175260D02* +X424180Y175260D01* +X421470Y177970D02* +X421470Y185420D01* +X421470Y177970D02* +X424180Y175260D01* +X421470Y203200D02* +X429090Y210820D01* +X421470Y203200D02* +X421470Y200660D01* +D34* +X514650Y200540D02* +X525490Y200540D01* +X528150Y203200D01* +X528150Y215900D01* +X517890Y180540D02* +X514650Y180540D01* +X517890Y180540D02* +X522506Y175924D01* +X522506Y173288D01* +X540684Y155110D02* +X543560Y155110D01* +X540684Y155110D02* +X522506Y173288D01* +X543560Y155110D02* +X555920Y155110D01* +X556090Y154940D01* +X521177Y185540D02* +X514650Y185540D01* +X521177Y185540D02* +X526570Y180147D01* +X526570Y174971D01* +X538647Y162894D01* +X566590Y165270D02* +X566590Y170180D01* +X564214Y162894D02* +X538647Y162894D01* +X564214Y162894D02* +X566590Y165270D01* +X566590Y170180D02* +X566420Y170350D01* +X566420Y180170D01* +X475950Y180540D02* +X468330Y180540D01* +X466316Y178526D01* +X460296Y178526D01* +X459740Y177970D01* +X492800Y173690D02* +X492800Y149860D01* +X469940Y127000D01* +X439590Y127000D01* +X487800Y151130D02* +X487800Y173690D01* +X487800Y151130D02* +X476370Y139700D01* +X439590Y139700D01* +X179609Y155204D02* +X179609Y122651D01* +X203710Y98550D02* +X273810Y98550D01* +X294640Y119380D01* +X203710Y98550D02* +X179609Y122651D01* +X383710Y139700D02* +X429090Y139700D01* +X383710Y139700D02* +X363390Y119380D01* +X294640Y119380D01* +X514650Y195540D02* +X528190Y195540D01* +X533230Y190500D01* +X540850Y190500D01* +X497800Y212390D02* +X497800Y219040D01* +X497840Y248750D02* +X510540Y248750D01* +X485140Y248750D01* +X510540Y231780D02* +X497800Y219040D01* +X510540Y231780D02* +X510540Y248750D01* +X507800Y173690D02* +X507800Y168610D01* +X513080Y163330D01* +X513080Y157650D01* +X525780Y157650D01* +X530860Y157650D02* +X533780Y154730D01* +X530860Y157650D02* +X525780Y157650D01* +X533780Y154730D02* +X533780Y139700D01* +X528700Y134620D01* +X775632Y95758D02* +X786130Y95758D01* +X775632Y95758D02* +X769790Y101600D01* +X1209780Y177060D02* +X1222920Y177060D01* +X1209780Y177060D02* +X1206500Y180340D01* +D33* +X1206500Y180340D03* +X1023620Y165100D03* +D34* +X1033610Y165100D02* +X1033780Y164930D01* +X1033610Y165100D02* +X1023620Y165100D01* +D37* +X749300Y78740D02* +X734440Y63880D01* +X734440Y55880D01* +D33* +X406400Y317500D03* +X855980Y48260D03* +D34* +X863430Y55880D02* +X862668Y56642D01* +X844550Y56642D01* +X855980Y48260D02* +X861060Y48260D01* +X863430Y50630D01* +X863430Y55880D01* +X535770Y180340D02* +X525570Y190540D01* +X541020Y175090D02* +X541020Y170180D01* +X541020Y175090D02* +X535770Y180340D01* +D33* +X541020Y170180D03* +X469900Y256540D03* +D34* +X482430Y256540D02* +X485140Y259250D01* +X482430Y256540D02* +X469900Y256540D01* +X538650Y228600D02* +X538650Y220980D01* +X538650Y215900D01* +X538650Y220980D02* +X548640Y220980D01* +X548205Y221415D01* +D33* +X548205Y221415D03* +D34* +X541020Y170180D02* +X556090Y170180D01* +D33* +X668020Y154914D03* +D34* +X850730Y154770D02* +X863600Y154770D01* +X850730Y154770D02* +X848360Y152400D01* +D33* +X848360Y152400D03* +D34* +X863740Y137020D02* +X865920Y137020D01* +X863740Y137020D02* +X848360Y152400D01* +X762310Y291933D02* +X701106Y291933D01* +X700807Y292232D01* +X754380Y101600D02* +X759290Y101600D01* +X754380Y101600D02* +X749300Y96520D01* +X749300Y78740D01* +X678180Y154770D02* +X678036Y154914D01* +X668020Y154914D01* +X543560Y144610D02* +X543560Y134620D01* +D33* +X543560Y134620D03* +D32* +X452500Y243840D02* +X452500Y259080D01* +X467360Y259080D02* +X469900Y256540D01* +X467360Y259080D02* +X452500Y259080D01* +D34* +X514650Y190540D02* +X525570Y190540D01* +X1198880Y98890D02* +X1211580Y98890D01* +X1211750Y99060D01* +X1221740Y99060D01* +D35* +X1221740Y99060D03* +X1246124Y165100D03* +D34* +X876300Y251460D02* +X872188Y255572D01* +X831596Y255572D01* +X795235Y291933D02* +X762310Y291933D01* +X795235Y291933D02* +X831596Y255572D01* +D35* +X876300Y251460D03* +X1178560Y289560D03* +X1005840Y294640D03* +D34* +X1005840Y284650D01* +X1028700Y286850D02* +X1033780Y291930D01* +X1028700Y286850D02* +X1028700Y286640D01* +X1021080Y286640D01* +X1021080Y284650D01* +X1005840Y284650D01* +X1033780Y291360D02* +X1052920Y291360D01* +X1033780Y291360D02* +X1033780Y291930D01* +D35* +X754380Y127000D03* +D34* +X333710Y353230D02* +X333430Y352950D01* +X333710Y353230D02* +X350520Y353230D01* +X360680Y353230D01* +X378290Y353230D01* +D33* +X386080Y345440D03* +D34* +X378290Y353230D01* +X260930Y333450D02* +X250750Y333450D01* +X246380Y337820D01* +X246380Y347810D01* +X236220Y347810D01* +X228770Y347810D01* +X228600Y347980D01* +X226060Y347980D01* +D33* +X226060Y347980D03* +D34* +X738520Y135200D02* +X744800Y135200D01* +X746620Y137020D01* +X754380Y137020D02* +X774920Y137020D01* +X754380Y137020D02* +X746620Y137020D01* +X754380Y137020D02* +X754380Y127000D01* +X1249300Y168276D02* +X1249300Y177800D01* +X1249300Y168276D02* +X1246124Y165100D01* +X1249300Y129540D02* +X1249300Y119000D01* +X1247140Y116840D01* +D33* +X1247140Y116840D03* +D32* +X516460Y89740D02* +X516460Y76200D01* +X521540Y71120D02* +X521540Y60960D01* +X521540Y71120D02* +X516460Y76200D01* +X516460Y89740D02* +X521740Y95020D01* +X521740Y101600D01* +X521540Y60960D02* +X521540Y42340D01* +X543560Y20320D01* +X571500Y20320D01* +X538310Y116840D02* +X538310Y121920D01* +X540294Y123904D01* +X797560Y99219D02* +X797560Y59785D01* +X779939Y116840D02* +X749300Y116840D01* +X779939Y116840D02* +X797560Y99219D01* +X742236Y123904D02* +X540294Y123904D01* +X742236Y123904D02* +X749300Y116840D01* +X786130Y56642D02* +X794417Y56642D01* +X797560Y59785D01* +X522580Y102440D02* +X521740Y101600D01* +X522580Y102440D02* +X534060Y102440D01* +X538310Y106690D02* +X538310Y116840D01* +X538310Y106690D02* +X534060Y102440D01* +D34* +X194809Y197349D02* +X194809Y230904D01* +X194809Y197349D02* +X165100Y167640D01* +X165100Y129540D01* +X200660Y93980D01* +X276860Y93980D01* +X297180Y114300D01* +X378630Y127000D02* +X429090Y127000D01* +X378630Y127000D02* +X365930Y114300D01* +X297180Y114300D01* +X417057Y332660D02* +X417137Y332740D01* +X417057Y332660D02* +X416480Y332660D01* +X462280Y290220D02* +X481760Y290220D01* +X462280Y290220D02* +X462280Y297010D01* +D33* +X417137Y332740D03* +X451955Y291935D03* +D34* +X453669Y290220D01* +X481760Y290220D01* +X415690Y333450D02* +X333430Y333450D01* +X415690Y333450D02* +X416480Y332660D01* +X415900Y320700D02* +X441120Y320700D01* +X441960Y309880D02* +X441960Y307510D01* +X441120Y310720D02* +X441120Y320700D01* +X441120Y310720D02* +X441960Y309880D01* +X409650Y326950D02* +X333430Y326950D01* +X409650Y326950D02* +X415900Y320700D01* +D32* +X175730Y338120D02* +X162600Y338120D01* +X175730Y338120D02* +X180340Y342730D01* +X180510Y342900D01* +X190500Y342900D01* +D33* +X190500Y342900D03* +D39* +X490605Y121876D03* +D40* +X510920Y111760D02* +X510920Y104140D01* +X510920Y111760D02* +X500804Y121876D01* +X490605Y121876D01* +D32* +X510920Y104140D02* +X499540Y92760D01* +X499540Y70460D01* +D34* +X594190Y75070D02* +X595020Y75900D01* +X594190Y75070D02* +X594190Y63500D01* +X626237Y68580D02* +X626237Y75900D01* +X626237Y68580D02* +X636397Y58420D01* +X626237Y75900D02* +X614020Y75900D01* +X626237Y75900D02* +X629920Y75900D01* +X629920Y93980D02* +X629920Y98890D01* +X629920Y93980D02* +X643860Y93980D01* +X629920Y93980D02* +X629920Y75900D01* +X629920Y109390D02* +X626590Y109390D01* +X619100Y101900D01* +X614020Y101900D01* +X597070Y103950D02* +X595020Y101900D01* +X597070Y103950D02* +X597070Y116840D01* +X611970Y116840D01* +X1052848Y278588D02* +X1052920Y278660D01* +X1030233Y274150D02* +X993140Y274150D01* +X1034671Y278588D02* +X1052848Y278588D01* +X1034671Y278588D02* +X1030233Y274150D01* +X1005840Y274150D02* +X993140Y274150D01* +X513080Y299720D02* +X503760Y299720D01* +X513080Y299720D02* +X533400Y279400D01* +X891400Y274150D02* +X993140Y274150D01* +X891400Y274150D02* +X891400Y296960D01* +X891400Y205960D01* +X629700Y205960D01* +X556260Y279400D01* +D33* +X556260Y279400D03* +X533400Y279400D03* +D32* +X576580Y48260D02* +X588900Y48260D01* +X576580Y48260D02* +X548260Y48260D01* +X543180Y53340D02* +X543180Y63500D01* +X543180Y53340D02* +X548260Y48260D01* +D33* +X528320Y81280D03* +D32* +X400050Y90170D02* +X367030Y90170D01* +X355600Y78740D01* +X355600Y66420D01* +D40* +X971550Y90170D02* +X1002030Y90170D01* +X1016000Y76200D01* +X1016000Y66420D01* +D32* +X1031240Y71120D02* +X1031240Y86190D01* +X1031240Y71120D02* +X1026160Y66040D01* +X1016380Y66040D01* +X1016000Y66420D01* +X576580Y63120D02* +X576580Y48260D01* +D40* +X494920Y104140D02* +X477140Y104140D01* +X464440Y91440D01* +X400050Y91440D01* +X400050Y90170D01* +D32* +X543180Y80060D02* +X543180Y63500D01* +X543180Y80060D02* +X543560Y80440D01* +X529160Y80440D01* +X528320Y81280D01* +D34* +X776224Y82804D02* +X786130Y82804D01* +X622300Y45720D02* +X596900Y20320D01* +X622300Y45720D02* +X739140Y45720D01* +X776224Y82804D01* +D32* +X604690Y75730D02* +X604520Y75900D01* +X604690Y75730D02* +X604690Y63500D01* +X604900Y63500D02* +X604900Y48260D01* +X604900Y63500D02* +X604690Y63500D01* +D34* +X622470Y116840D02* +X678560Y116840D01* +X688340Y107060D01* +X688340Y91820D01* +D37* +X718440Y73280D02* +X723900Y78740D01* +X718440Y73280D02* +X718440Y55880D01* +X688340Y91820D02* +X674020Y91820D01* +D32* +X671860Y93980D01* +D37* +X713740Y91820D02* +X723900Y81660D01* +X713740Y91820D02* +X703580Y91820D01* +X723900Y81660D02* +X723900Y78740D01* +X703580Y91820D02* +X688340Y91820D01* +D34* +X769072Y306434D02* +X790846Y306434D01* +X835660Y261620D02* +X850730Y261620D01* +X835660Y261620D02* +X790846Y306434D01* +X843110Y248920D02* +X728980Y248920D01* +X688340Y289560D02* +X688340Y302260D01* +X692812Y306732D01* +X694046Y306732D01* +X688340Y289560D02* +X728980Y248920D01* +X346580Y359450D02* +X333430Y359450D01* +X346580Y359450D02* +X350350Y363220D01* +X275330Y346450D02* +X260930Y346450D01* +X275330Y346450D02* +X302260Y373380D01* +X378460Y373380D01* +X391160Y360680D01* +X398610Y360680D01* +X274577Y339950D02* +X260930Y339950D01* +X274577Y339950D02* +X303943Y369316D01* +X374904Y369316D02* +X393700Y350520D01* +X398610Y350520D01* +X374904Y369316D02* +X303943Y369316D01* +X260930Y307450D02* +X250770Y307450D01* +X245690Y312530D01* +X238820Y312530D01* +X238760Y312590D01* +X227110Y312590D01* +X224360Y315340D01* +X202360Y299340D02* +X202360Y291580D01* +X241300Y284480D02* +X247610Y290790D01* +X251420Y300950D02* +X260930Y300950D01* +X251420Y300950D02* +X247610Y297140D01* +X247610Y290790D01* +X199610Y302090D02* +X187960Y302090D01* +X199610Y302090D02* +X202360Y299340D01* +X209460Y284480D02* +X241300Y284480D01* +X209460Y284480D02* +X202360Y291580D01* +X527980Y259250D02* +X528150Y259080D01* +X527980Y259250D02* +X510540Y259250D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_drills.xln b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_drills.xln new file mode 100644 index 0000000000..db0302a356 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_drills.xln @@ -0,0 +1,212 @@ +M48 +;GenerationSoftware,Autodesk,EAGLE,9.4.1*% +;CreationDate,2019-06-03T02:15:11Z*% +FMAT,2 +ICI,OFF +METRIC,TZ,000.000 +T11C0.305 +T10C0.350 +T9C0.508 +T8C0.550 +T7C0.900 +T6C1.016 +T5C1.400 +T4C1.600 +T3C3.300 +T2C3.302 +T1C5.080 +% +G90 +M71 +T1 +X5080Y15240 +X132080Y15240 +T2 +X7620Y8890 +X7620Y3175 +X129540Y3175 +X129540Y8890 +T3 +X22859Y13590 +X22859Y25020 +T4 +X25909Y11430 +X25909Y27180 +T5 +X90805Y5842 +X97155Y9017 +X97155Y2667 +X46355Y5842 +X40005Y9017 +X40005Y2667 +T6 +X72390Y7874 +X74930Y7874 +X57150Y2032 +X59690Y2032 +X62230Y2032 +X64770Y2032 +X67310Y2032 +X69850Y2032 +X72390Y2032 +X74930Y2032 +X77470Y2032 +X80010Y2032 +T7 +X29209Y18670 +X31749Y17400 +X29209Y16130 +X31749Y14860 +X31749Y19940 +X29209Y21210 +X31749Y22480 +X29209Y23750 +X19480Y12979 +X17960Y25629 +X19481Y23090 +X17961Y15520 +T8 +X49060Y12188 +T9 +X13835Y29212 +X13835Y35812 +T10 +X27686Y31242 +X55626Y8382 +X71374Y27432 +X80264Y27432 +X73152Y30226 +X67818Y30226 +X57150Y37084 +X57150Y32258 +X50546Y37084 +X35814Y31242 +X34290Y24130 +X64008Y25146 +X118364Y20574 +X112522Y28194 +X127000Y15748 +X117094Y10668 +X91948Y1524 +X82804Y1524 +X26670Y1778 +X13970Y8636 +X35306Y10160 +X119380Y16764 +X107442Y20828 +X119380Y27940 +X51816Y23949 +X120650Y20320 +X56388Y21161 +X50280Y16291 +X102362Y17526 +X120650Y24130 +X49982Y23114 +X120650Y21844 +X49019Y23117 +X120650Y27940 +X48260Y23876 +X107442Y19050 +X56633Y20201 +X107442Y17780 +X58166Y20320 +X108204Y16764 +X55372Y20320 +X116586Y27686 +X42926Y35060 +X115570Y26670 +X42164Y34290 +X122215Y12192 +X90576Y16358 +X68072Y5842 +X17651Y32383 +X98298Y17272 +X75946Y16002 +X91948Y14478 +X114300Y15494 +X97282Y16510 +X92456Y17526 +X99568Y18288 +X71120Y17018 +X90932Y17526 +X70413Y15803 +X112268Y14732 +X88900Y16510 +X116078Y16764 +X90678Y14224 +X109256Y24971 +X54864Y25908 +X19824Y33302 +X27686Y28702 +X29718Y28702 +X18034Y36582 +X120650Y18034 +X102362Y16510 +X40640Y31750 +X85598Y4826 +X54102Y17018 +X46990Y25654 +X54820Y22142 +X66802Y15491 +X84836Y15240 +X54356Y13462 +X56388Y7620 +X46482Y22860 +X42418Y25908 +X46228Y14732 +X46990Y16764 +X50038Y13462 +X38608Y34544 +X22606Y34798 +X124714Y11684 +X41714Y33274 +X45195Y29193 +X19050Y34290 +X23876Y29229 +X55626Y27940 +X53340Y27940 +X52832Y8128 +X22606Y35814 +X37084Y36068 +X37084Y34290 +X69088Y5334 +X70104Y5842 +X69088Y6350 +X55626Y18034 +X120650Y30480 +X105156Y7620 +X87376Y6604 +X83058Y8382 +X88646Y14986 +X93980Y24638 +X49784Y26924 +X34798Y17272 +X17780Y30988 +X107188Y30226 +X96012Y24638 +X95250Y28194 +X95250Y29718 +X86106Y27432 +X65786Y14224 +X112776Y19812 +X108204Y10668 +X96012Y12192 +T11 +X49530Y19304 +X48768Y18542 +X50292Y18542 +X50292Y20066 +X48768Y20066 +X99314Y29464 +X86602Y24880 +X75438Y12700 +X100584Y29464 +X117856Y28956 +X87630Y25146 +X124612Y16510 +X122174Y9906 +X44311Y19927 +X44958Y20574 +X44958Y18034 +X44311Y18681 +M30 \ No newline at end of file diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_profile.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_profile.gbr new file mode 100644 index 0000000000..013e9cad9c --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_profile.gbr @@ -0,0 +1,982 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%IN*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.508000*% +%ADD11C,0.254000*% + + +D10* +X140970Y358120D02* +X133350Y358120D01* +X133350Y292120D02* +X140970Y292120D01* +D11* +X0Y25400D02* +X97Y23186D01* +X386Y20989D01* +X865Y18826D01* +X1532Y16713D01* +X2380Y14666D01* +X3403Y12700D01* +X4594Y10831D01* +X5942Y9073D01* +X7440Y7440D01* +X9073Y5942D01* +X10831Y4594D01* +X12700Y3403D01* +X14666Y2380D01* +X16713Y1532D01* +X18826Y865D01* +X20989Y386D01* +X23186Y97D01* +X25400Y0D01* +X1346200Y0D01* +X1348414Y97D01* +X1350611Y386D01* +X1352774Y865D01* +X1354887Y1532D01* +X1356935Y2380D01* +X1358900Y3403D01* +X1360769Y4594D01* +X1362527Y5942D01* +X1364161Y7440D01* +X1365658Y9073D01* +X1367006Y10831D01* +X1368197Y12700D01* +X1369220Y14666D01* +X1370068Y16713D01* +X1370735Y18826D01* +X1371214Y20989D01* +X1371503Y23186D01* +X1371600Y25400D01* +X1371600Y177800D01* +X1371503Y180014D01* +X1371214Y182211D01* +X1370735Y184374D01* +X1370068Y186487D01* +X1369220Y188535D01* +X1368197Y190500D01* +X1367006Y192369D01* +X1365658Y194127D01* +X1364161Y195761D01* +X1362527Y197258D01* +X1360769Y198606D01* +X1358900Y199797D01* +X1356935Y200820D01* +X1354887Y201668D01* +X1352774Y202335D01* +X1350611Y202814D01* +X1348414Y203103D01* +X1346200Y203200D01* +X1282700Y203200D01* +X1280486Y203297D01* +X1278289Y203586D01* +X1276126Y204065D01* +X1274013Y204732D01* +X1271966Y205580D01* +X1270000Y206603D01* +X1268131Y207794D01* +X1266373Y209142D01* +X1264740Y210640D01* +X1263242Y212273D01* +X1261894Y214031D01* +X1260703Y215900D01* +X1259680Y217866D01* +X1258832Y219913D01* +X1258165Y222026D01* +X1257686Y224189D01* +X1257397Y226386D01* +X1257300Y228600D01* +X1257300Y355600D01* +X1257203Y357814D01* +X1256914Y360011D01* +X1256435Y362174D01* +X1255768Y364287D01* +X1254920Y366335D01* +X1253897Y368300D01* +X1252706Y370169D01* +X1251358Y371927D01* +X1249861Y373561D01* +X1248227Y375058D01* +X1246469Y376406D01* +X1244600Y377597D01* +X1242635Y378620D01* +X1240587Y379468D01* +X1238474Y380135D01* +X1236311Y380614D01* +X1234114Y380903D01* +X1231900Y381000D01* +X139700Y381000D01* +X137486Y380903D01* +X135289Y380614D01* +X133126Y380135D01* +X131013Y379468D01* +X128966Y378620D01* +X127000Y377597D01* +X125131Y376406D01* +X123373Y375058D01* +X121740Y373561D01* +X120242Y371927D01* +X118894Y370169D01* +X117703Y368300D01* +X116680Y366335D01* +X115832Y364287D01* +X115165Y362174D01* +X114686Y360011D01* +X114397Y357814D01* +X114300Y355600D01* +X114300Y228600D01* +X114203Y226386D01* +X113914Y224189D01* +X113435Y222026D01* +X112768Y219913D01* +X111920Y217866D01* +X110897Y215900D01* +X109706Y214031D01* +X108358Y212273D01* +X106861Y210640D01* +X105227Y209142D01* +X103469Y207794D01* +X101600Y206603D01* +X99635Y205580D01* +X97587Y204732D01* +X95474Y204065D01* +X93311Y203586D01* +X91114Y203297D01* +X88900Y203200D01* +X25400Y203200D01* +X23186Y203103D01* +X20989Y202814D01* +X18826Y202335D01* +X16713Y201668D01* +X14666Y200820D01* +X12700Y199797D01* +X10831Y198606D01* +X9073Y197258D01* +X7440Y195761D01* +X5942Y194127D01* +X4594Y192369D01* +X3403Y190500D01* +X2380Y188535D01* +X1532Y186487D01* +X865Y184374D01* +X386Y182211D01* +X97Y180014D01* +X0Y177800D01* +X0Y25400D01* +X76200Y151687D02* +X76120Y150264D01* +X75961Y148848D01* +X75722Y147443D01* +X75405Y146053D01* +X75010Y144684D01* +X74539Y143338D01* +X73994Y142021D01* +X73375Y140737D01* +X72686Y139490D01* +X71928Y138283D01* +X71103Y137121D01* +X70214Y136006D01* +X69264Y134943D01* +X68257Y133936D01* +X67194Y132986D01* +X66079Y132097D01* +X64917Y131272D01* +X63710Y130514D01* +X62463Y129825D01* +X61179Y129206D01* +X59862Y128661D01* +X58516Y128190D01* +X57147Y127795D01* +X55757Y127478D01* +X54352Y127240D01* +X52936Y127080D01* +X51513Y127000D01* +X50087Y127000D01* +X48664Y127080D01* +X47248Y127240D01* +X45843Y127478D01* +X44453Y127795D01* +X43084Y128190D01* +X41738Y128661D01* +X40421Y129206D01* +X39137Y129825D01* +X37890Y130514D01* +X36683Y131272D01* +X35521Y132097D01* +X34406Y132986D01* +X33343Y133936D01* +X32336Y134943D01* +X31386Y136006D01* +X30497Y137121D01* +X29672Y138283D01* +X28914Y139490D01* +X28225Y140737D01* +X27606Y142021D01* +X27061Y143338D01* +X26590Y144684D01* +X26195Y146053D01* +X25878Y147443D01* +X25640Y148848D01* +X25480Y150264D01* +X25400Y151687D01* +X25400Y153113D01* +X25480Y154536D01* +X25640Y155952D01* +X25878Y157357D01* +X26195Y158747D01* +X26590Y160116D01* +X27061Y161462D01* +X27606Y162779D01* +X28225Y164063D01* +X28914Y165310D01* +X29672Y166517D01* +X30497Y167679D01* +X31386Y168794D01* +X32336Y169857D01* +X33343Y170864D01* +X34406Y171814D01* +X35521Y172703D01* +X36683Y173528D01* +X37890Y174286D01* +X39137Y174975D01* +X40421Y175594D01* +X41738Y176139D01* +X43084Y176610D01* +X44453Y177005D01* +X45843Y177322D01* +X47248Y177561D01* +X48664Y177720D01* +X50087Y177800D01* +X51513Y177800D01* +X52936Y177720D01* +X54352Y177561D01* +X55757Y177322D01* +X57147Y177005D01* +X58516Y176610D01* +X59862Y176139D01* +X61179Y175594D01* +X62463Y174975D01* +X63710Y174286D01* +X64917Y173528D01* +X66079Y172703D01* +X67194Y171814D01* +X68257Y170864D01* +X69264Y169857D01* +X70214Y168794D01* +X71103Y167679D01* +X71928Y166517D01* +X72686Y165310D01* +X73375Y164063D01* +X73994Y162779D01* +X74539Y161462D01* +X75010Y160116D01* +X75405Y158747D01* +X75722Y157357D01* +X75961Y155952D01* +X76120Y154536D01* +X76200Y153113D01* +X76200Y151687D01* +X1346200Y151687D02* +X1346120Y150264D01* +X1345961Y148848D01* +X1345722Y147443D01* +X1345405Y146053D01* +X1345010Y144684D01* +X1344539Y143338D01* +X1343994Y142021D01* +X1343375Y140737D01* +X1342686Y139490D01* +X1341928Y138283D01* +X1341103Y137121D01* +X1340214Y136006D01* +X1339264Y134943D01* +X1338257Y133936D01* +X1337194Y132986D01* +X1336079Y132097D01* +X1334917Y131272D01* +X1333710Y130514D01* +X1332463Y129825D01* +X1331179Y129206D01* +X1329862Y128661D01* +X1328516Y128190D01* +X1327147Y127795D01* +X1325757Y127478D01* +X1324352Y127240D01* +X1322936Y127080D01* +X1321513Y127000D01* +X1320087Y127000D01* +X1318664Y127080D01* +X1317248Y127240D01* +X1315843Y127478D01* +X1314453Y127795D01* +X1313084Y128190D01* +X1311738Y128661D01* +X1310421Y129206D01* +X1309137Y129825D01* +X1307890Y130514D01* +X1306683Y131272D01* +X1305521Y132097D01* +X1304406Y132986D01* +X1303343Y133936D01* +X1302336Y134943D01* +X1301386Y136006D01* +X1300497Y137121D01* +X1299672Y138283D01* +X1298914Y139490D01* +X1298225Y140737D01* +X1297606Y142021D01* +X1297061Y143338D01* +X1296590Y144684D01* +X1296195Y146053D01* +X1295878Y147443D01* +X1295640Y148848D01* +X1295480Y150264D01* +X1295400Y151687D01* +X1295400Y153113D01* +X1295480Y154536D01* +X1295640Y155952D01* +X1295878Y157357D01* +X1296195Y158747D01* +X1296590Y160116D01* +X1297061Y161462D01* +X1297606Y162779D01* +X1298225Y164063D01* +X1298914Y165310D01* +X1299672Y166517D01* +X1300497Y167679D01* +X1301386Y168794D01* +X1302336Y169857D01* +X1303343Y170864D01* +X1304406Y171814D01* +X1305521Y172703D01* +X1306683Y173528D01* +X1307890Y174286D01* +X1309137Y174975D01* +X1310421Y175594D01* +X1311738Y176139D01* +X1313084Y176610D01* +X1314453Y177005D01* +X1315843Y177322D01* +X1317248Y177561D01* +X1318664Y177720D01* +X1320087Y177800D01* +X1321513Y177800D01* +X1322936Y177720D01* +X1324352Y177561D01* +X1325757Y177322D01* +X1327147Y177005D01* +X1328516Y176610D01* +X1329862Y176139D01* +X1331179Y175594D01* +X1332463Y174975D01* +X1333710Y174286D01* +X1334917Y173528D01* +X1336079Y172703D01* +X1337194Y171814D01* +X1338257Y170864D01* +X1339264Y169857D01* +X1340214Y168794D01* +X1341103Y167679D01* +X1341928Y166517D01* +X1342686Y165310D01* +X1343375Y164063D01* +X1343994Y162779D01* +X1344539Y161462D01* +X1345010Y160116D01* +X1345405Y158747D01* +X1345722Y157357D01* +X1345961Y155952D01* +X1346120Y154536D01* +X1346200Y153113D01* +X1346200Y151687D01* +X92710Y88360D02* +X92639Y87281D01* +X92498Y86209D01* +X92287Y85149D01* +X92008Y84105D01* +X91660Y83081D01* +X91246Y82083D01* +X90768Y81113D01* +X90228Y80177D01* +X89627Y79278D01* +X88969Y78421D01* +X88257Y77608D01* +X87492Y76844D01* +X86679Y76131D01* +X85822Y75473D01* +X84923Y74872D01* +X83987Y74332D01* +X83017Y73854D01* +X82019Y73440D01* +X80995Y73092D01* +X79951Y72813D01* +X78891Y72602D01* +X77819Y72461D01* +X76740Y72390D01* +X75660Y72390D01* +X74581Y72461D01* +X73509Y72602D01* +X72449Y72813D01* +X71405Y73092D01* +X70381Y73440D01* +X69383Y73854D01* +X68413Y74332D01* +X67477Y74872D01* +X66578Y75473D01* +X65721Y76131D01* +X64908Y76844D01* +X64144Y77608D01* +X63431Y78421D01* +X62773Y79278D01* +X62172Y80177D01* +X61632Y81113D01* +X61154Y82083D01* +X60740Y83081D01* +X60392Y84105D01* +X60113Y85149D01* +X59902Y86209D01* +X59761Y87281D01* +X59690Y88360D01* +X59690Y89440D01* +X59761Y90519D01* +X59902Y91591D01* +X60113Y92651D01* +X60392Y93695D01* +X60740Y94719D01* +X61154Y95717D01* +X61632Y96687D01* +X62172Y97623D01* +X62773Y98522D01* +X63431Y99379D01* +X64144Y100192D01* +X64908Y100957D01* +X65721Y101669D01* +X66578Y102327D01* +X67477Y102928D01* +X68413Y103468D01* +X69383Y103946D01* +X70381Y104360D01* +X71405Y104708D01* +X72449Y104987D01* +X73509Y105198D01* +X74581Y105339D01* +X75660Y105410D01* +X76740Y105410D01* +X77819Y105339D01* +X78891Y105198D01* +X79951Y104987D01* +X80995Y104708D01* +X82019Y104360D01* +X83017Y103946D01* +X83987Y103468D01* +X84923Y102928D01* +X85822Y102327D01* +X86679Y101669D01* +X87492Y100957D01* +X88257Y100192D01* +X88969Y99379D01* +X89627Y98522D01* +X90228Y97623D01* +X90768Y96687D01* +X91246Y95717D01* +X91660Y94719D01* +X92008Y93695D01* +X92287Y92651D01* +X92498Y91591D01* +X92639Y90519D01* +X92710Y89440D01* +X92710Y88360D01* +X92710Y31210D02* +X92639Y30131D01* +X92498Y29059D01* +X92287Y27999D01* +X92008Y26955D01* +X91660Y25931D01* +X91246Y24933D01* +X90768Y23963D01* +X90228Y23027D01* +X89627Y22128D01* +X88969Y21271D01* +X88257Y20458D01* +X87492Y19694D01* +X86679Y18981D01* +X85822Y18323D01* +X84923Y17722D01* +X83987Y17182D01* +X83017Y16704D01* +X82019Y16290D01* +X80995Y15942D01* +X79951Y15663D01* +X78891Y15452D01* +X77819Y15311D01* +X76740Y15240D01* +X75660Y15240D01* +X74581Y15311D01* +X73509Y15452D01* +X72449Y15663D01* +X71405Y15942D01* +X70381Y16290D01* +X69383Y16704D01* +X68413Y17182D01* +X67477Y17722D01* +X66578Y18323D01* +X65721Y18981D01* +X64908Y19694D01* +X64144Y20458D01* +X63431Y21271D01* +X62773Y22128D01* +X62172Y23027D01* +X61632Y23963D01* +X61154Y24933D01* +X60740Y25931D01* +X60392Y26955D01* +X60113Y27999D01* +X59902Y29059D01* +X59761Y30131D01* +X59690Y31210D01* +X59690Y32290D01* +X59761Y33369D01* +X59902Y34441D01* +X60113Y35501D01* +X60392Y36545D01* +X60740Y37569D01* +X61154Y38567D01* +X61632Y39537D01* +X62172Y40473D01* +X62773Y41372D01* +X63431Y42229D01* +X64144Y43042D01* +X64908Y43807D01* +X65721Y44519D01* +X66578Y45177D01* +X67477Y45778D01* +X68413Y46318D01* +X69383Y46796D01* +X70381Y47210D01* +X71405Y47558D01* +X72449Y47837D01* +X73509Y48048D01* +X74581Y48189D01* +X75660Y48260D01* +X76740Y48260D01* +X77819Y48189D01* +X78891Y48048D01* +X79951Y47837D01* +X80995Y47558D01* +X82019Y47210D01* +X83017Y46796D01* +X83987Y46318D01* +X84923Y45778D01* +X85822Y45177D01* +X86679Y44519D01* +X87492Y43807D01* +X88257Y43042D01* +X88969Y42229D01* +X89627Y41372D01* +X90228Y40473D01* +X90768Y39537D01* +X91246Y38567D01* +X91660Y37569D01* +X92008Y36545D01* +X92287Y35501D01* +X92498Y34441D01* +X92639Y33369D01* +X92710Y32290D01* +X92710Y31210D01* +X1311910Y31210D02* +X1311839Y30131D01* +X1311698Y29059D01* +X1311487Y27999D01* +X1311208Y26955D01* +X1310860Y25931D01* +X1310446Y24933D01* +X1309968Y23963D01* +X1309428Y23027D01* +X1308827Y22128D01* +X1308169Y21271D01* +X1307457Y20458D01* +X1306692Y19694D01* +X1305879Y18981D01* +X1305022Y18323D01* +X1304123Y17722D01* +X1303187Y17182D01* +X1302217Y16704D01* +X1301219Y16290D01* +X1300195Y15942D01* +X1299151Y15663D01* +X1298091Y15452D01* +X1297019Y15311D01* +X1295940Y15240D01* +X1294860Y15240D01* +X1293781Y15311D01* +X1292709Y15452D01* +X1291649Y15663D01* +X1290605Y15942D01* +X1289581Y16290D01* +X1288583Y16704D01* +X1287613Y17182D01* +X1286677Y17722D01* +X1285778Y18323D01* +X1284921Y18981D01* +X1284108Y19694D01* +X1283344Y20458D01* +X1282631Y21271D01* +X1281973Y22128D01* +X1281372Y23027D01* +X1280832Y23963D01* +X1280354Y24933D01* +X1279940Y25931D01* +X1279592Y26955D01* +X1279313Y27999D01* +X1279102Y29059D01* +X1278961Y30131D01* +X1278890Y31210D01* +X1278890Y32290D01* +X1278961Y33369D01* +X1279102Y34441D01* +X1279313Y35501D01* +X1279592Y36545D01* +X1279940Y37569D01* +X1280354Y38567D01* +X1280832Y39537D01* +X1281372Y40473D01* +X1281973Y41372D01* +X1282631Y42229D01* +X1283344Y43042D01* +X1284108Y43807D01* +X1284921Y44519D01* +X1285778Y45177D01* +X1286677Y45778D01* +X1287613Y46318D01* +X1288583Y46796D01* +X1289581Y47210D01* +X1290605Y47558D01* +X1291649Y47837D01* +X1292709Y48048D01* +X1293781Y48189D01* +X1294860Y48260D01* +X1295940Y48260D01* +X1297019Y48189D01* +X1298091Y48048D01* +X1299151Y47837D01* +X1300195Y47558D01* +X1301219Y47210D01* +X1302217Y46796D01* +X1303187Y46318D01* +X1304123Y45778D01* +X1305022Y45177D01* +X1305879Y44519D01* +X1306692Y43807D01* +X1307457Y43042D01* +X1308169Y42229D01* +X1308827Y41372D01* +X1309428Y40473D01* +X1309968Y39537D01* +X1310446Y38567D01* +X1310860Y37569D01* +X1311208Y36545D01* +X1311487Y35501D01* +X1311698Y34441D01* +X1311839Y33369D01* +X1311910Y32290D01* +X1311910Y31210D01* +X1311910Y88360D02* +X1311839Y87281D01* +X1311698Y86209D01* +X1311487Y85149D01* +X1311208Y84105D01* +X1310860Y83081D01* +X1310446Y82083D01* +X1309968Y81113D01* +X1309428Y80177D01* +X1308827Y79278D01* +X1308169Y78421D01* +X1307457Y77608D01* +X1306692Y76844D01* +X1305879Y76131D01* +X1305022Y75473D01* +X1304123Y74872D01* +X1303187Y74332D01* +X1302217Y73854D01* +X1301219Y73440D01* +X1300195Y73092D01* +X1299151Y72813D01* +X1298091Y72602D01* +X1297019Y72461D01* +X1295940Y72390D01* +X1294860Y72390D01* +X1293781Y72461D01* +X1292709Y72602D01* +X1291649Y72813D01* +X1290605Y73092D01* +X1289581Y73440D01* +X1288583Y73854D01* +X1287613Y74332D01* +X1286677Y74872D01* +X1285778Y75473D01* +X1284921Y76131D01* +X1284108Y76844D01* +X1283344Y77608D01* +X1282631Y78421D01* +X1281973Y79278D01* +X1281372Y80177D01* +X1280832Y81113D01* +X1280354Y82083D01* +X1279940Y83081D01* +X1279592Y84105D01* +X1279313Y85149D01* +X1279102Y86209D01* +X1278961Y87281D01* +X1278890Y88360D01* +X1278890Y89440D01* +X1278961Y90519D01* +X1279102Y91591D01* +X1279313Y92651D01* +X1279592Y93695D01* +X1279940Y94719D01* +X1280354Y95717D01* +X1280832Y96687D01* +X1281372Y97623D01* +X1281973Y98522D01* +X1282631Y99379D01* +X1283344Y100192D01* +X1284108Y100957D01* +X1284921Y101669D01* +X1285778Y102327D01* +X1286677Y102928D01* +X1287613Y103468D01* +X1288583Y103946D01* +X1289581Y104360D01* +X1290605Y104708D01* +X1291649Y104987D01* +X1292709Y105198D01* +X1293781Y105339D01* +X1294860Y105410D01* +X1295940Y105410D01* +X1297019Y105339D01* +X1298091Y105198D01* +X1299151Y104987D01* +X1300195Y104708D01* +X1301219Y104360D01* +X1302217Y103946D01* +X1303187Y103468D01* +X1304123Y102928D01* +X1305022Y102327D01* +X1305879Y101669D01* +X1306692Y100957D01* +X1307457Y100192D01* +X1308169Y99379D01* +X1308827Y98522D01* +X1309428Y97623D01* +X1309968Y96687D01* +X1310446Y95717D01* +X1310860Y94719D01* +X1311208Y93695D01* +X1311487Y92651D01* +X1311698Y91591D01* +X1311839Y90519D01* +X1311910Y89440D01* +X1311910Y88360D01* +X228049Y119398D02* +X226971Y119469D01* +X225900Y119610D01* +X224841Y119820D01* +X223797Y120100D01* +X222774Y120447D01* +X221776Y120861D01* +X220807Y121338D01* +X219872Y121879D01* +X218974Y122479D01* +X218117Y123136D01* +X217304Y123849D01* +X216540Y124613D01* +X215828Y125425D01* +X215170Y126282D01* +X214570Y127180D01* +X214030Y128116D01* +X213552Y129085D01* +X213139Y130083D01* +X212792Y131106D01* +X212512Y132149D01* +X212301Y133209D01* +X212160Y134280D01* +X212090Y135358D01* +X212090Y136438D01* +X212160Y137516D01* +X212301Y138587D01* +X212512Y139647D01* +X212792Y140690D01* +X213139Y141713D01* +X213552Y142711D01* +X214030Y143680D01* +X214570Y144616D01* +X215170Y145514D01* +X215828Y146371D01* +X216540Y147183D01* +X217304Y147947D01* +X218117Y148659D01* +X218974Y149317D01* +X219872Y149917D01* +X220807Y150457D01* +X221776Y150935D01* +X222774Y151349D01* +X223797Y151696D01* +X224841Y151976D01* +X225900Y152186D01* +X226971Y152327D01* +X228049Y152398D01* +X229130Y152398D01* +X230208Y152327D01* +X231279Y152186D01* +X232338Y151976D01* +X233382Y151696D01* +X234405Y151349D01* +X235403Y150935D01* +X236372Y150457D01* +X237307Y149917D01* +X238206Y149317D01* +X239063Y148659D01* +X239875Y147947D01* +X240639Y147183D01* +X241351Y146371D01* +X242009Y145514D01* +X242609Y144616D01* +X243149Y143680D01* +X243627Y142711D01* +X244040Y141713D01* +X244388Y140690D01* +X244667Y139647D01* +X244878Y138587D01* +X245019Y137516D01* +X245090Y136438D01* +X245090Y135358D01* +X245019Y134280D01* +X244878Y133209D01* +X244667Y132149D01* +X244388Y131106D01* +X244040Y130083D01* +X243627Y129085D01* +X243149Y128116D01* +X242609Y127180D01* +X242009Y126282D01* +X241351Y125425D01* +X240639Y124613D01* +X239875Y123849D01* +X239063Y123136D01* +X238206Y122479D01* +X237307Y121879D01* +X236372Y121338D01* +X235403Y120861D01* +X234405Y120447D01* +X233382Y120100D01* +X232338Y119820D01* +X231279Y119610D01* +X230208Y119469D01* +X229130Y119398D01* +X228049Y119398D01* +X228049Y233698D02* +X226971Y233769D01* +X225900Y233910D01* +X224841Y234120D01* +X223797Y234400D01* +X222774Y234747D01* +X221776Y235161D01* +X220807Y235638D01* +X219872Y236179D01* +X218974Y236779D01* +X218117Y237436D01* +X217304Y238149D01* +X216540Y238913D01* +X215828Y239725D01* +X215170Y240582D01* +X214570Y241480D01* +X214030Y242416D01* +X213552Y243385D01* +X213139Y244383D01* +X212792Y245406D01* +X212512Y246449D01* +X212301Y247509D01* +X212160Y248580D01* +X212090Y249658D01* +X212090Y250738D01* +X212160Y251816D01* +X212301Y252887D01* +X212512Y253947D01* +X212792Y254990D01* +X213139Y256013D01* +X213552Y257011D01* +X214030Y257980D01* +X214570Y258916D01* +X215170Y259814D01* +X215828Y260671D01* +X216540Y261483D01* +X217304Y262247D01* +X218117Y262959D01* +X218974Y263617D01* +X219872Y264217D01* +X220807Y264757D01* +X221776Y265235D01* +X222774Y265649D01* +X223797Y265996D01* +X224841Y266276D01* +X225900Y266486D01* +X226971Y266627D01* +X228049Y266698D01* +X229130Y266698D01* +X230208Y266627D01* +X231279Y266486D01* +X232338Y266276D01* +X233382Y265996D01* +X234405Y265649D01* +X235403Y265235D01* +X236372Y264757D01* +X237307Y264217D01* +X238206Y263617D01* +X239063Y262959D01* +X239875Y262247D01* +X240639Y261483D01* +X241351Y260671D01* +X242009Y259814D01* +X242609Y258916D01* +X243149Y257980D01* +X243627Y257011D01* +X244040Y256013D01* +X244388Y254990D01* +X244667Y253947D01* +X244878Y252887D01* +X245019Y251816D01* +X245090Y250738D01* +X245090Y249658D01* +X245019Y248580D01* +X244878Y247509D01* +X244667Y246449D01* +X244388Y245406D01* +X244040Y244383D01* +X243627Y243385D01* +X243149Y242416D01* +X242609Y241480D01* +X242009Y240582D01* +X241351Y239725D01* +X240639Y238913D01* +X239875Y238149D01* +X239063Y237436D01* +X238206Y236779D01* +X237307Y236179D01* +X236372Y235638D01* +X235403Y235161D01* +X234405Y234747D01* +X233382Y234400D01* +X232338Y234120D01* +X231279Y233910D01* +X230208Y233769D01* +X229130Y233698D01* +X228049Y233698D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_silkscreen_bottom.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_silkscreen_bottom.gbr new file mode 100644 index 0000000000..7cdf810d14 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_silkscreen_bottom.gbr @@ -0,0 +1,166 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSilkscreen Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.177800*% + + +D10* +X888936Y19431D02* +X888936Y10936D01* +X888938Y10838D01* +X888944Y10741D01* +X888954Y10643D01* +X888967Y10547D01* +X888985Y10451D01* +X889007Y10355D01* +X889032Y10261D01* +X889061Y10167D01* +X889094Y10075D01* +X889130Y9985D01* +X889170Y9896D01* +X889214Y9808D01* +X889261Y9723D01* +X889312Y9639D01* +X889366Y9557D01* +X889423Y9478D01* +X889483Y9401D01* +X889546Y9327D01* +X889613Y9255D01* +X889682Y9186D01* +X889754Y9119D01* +X889828Y9056D01* +X889905Y8996D01* +X889984Y8939D01* +X890066Y8885D01* +X890150Y8834D01* +X890235Y8787D01* +X890323Y8743D01* +X890412Y8703D01* +X890502Y8667D01* +X890594Y8634D01* +X890688Y8605D01* +X890782Y8580D01* +X890878Y8558D01* +X890974Y8540D01* +X891070Y8527D01* +X891168Y8517D01* +X891265Y8511D01* +X891363Y8509D01* +X892577Y8509D01* +X879920Y19432D02* +X879818Y19430D01* +X879716Y19424D01* +X879614Y19415D01* +X879513Y19401D01* +X879412Y19384D01* +X879312Y19364D01* +X879213Y19339D01* +X879115Y19311D01* +X879018Y19279D01* +X878922Y19243D01* +X878828Y19204D01* +X878735Y19162D01* +X878644Y19116D01* +X878555Y19066D01* +X878467Y19013D01* +X878382Y18957D01* +X878298Y18898D01* +X878217Y18836D01* +X878139Y18771D01* +X878062Y18703D01* +X877989Y18632D01* +X877918Y18559D01* +X877850Y18482D01* +X877785Y18404D01* +X877723Y18323D01* +X877664Y18239D01* +X877608Y18154D01* +X877555Y18066D01* +X877505Y17977D01* +X877459Y17886D01* +X877417Y17793D01* +X877378Y17699D01* +X877342Y17603D01* +X877310Y17506D01* +X877282Y17408D01* +X877257Y17309D01* +X877237Y17209D01* +X877220Y17108D01* +X877206Y17007D01* +X877197Y16905D01* +X877191Y16803D01* +X877189Y16701D01* +X879920Y19431D02* +X880036Y19429D01* +X880152Y19423D01* +X880268Y19414D01* +X880383Y19400D01* +X880498Y19383D01* +X880612Y19362D01* +X880725Y19337D01* +X880838Y19309D01* +X880949Y19277D01* +X881060Y19241D01* +X881169Y19201D01* +X881277Y19158D01* +X881383Y19111D01* +X881488Y19061D01* +X881591Y19008D01* +X881692Y18951D01* +X881791Y18890D01* +X881888Y18827D01* +X881983Y18760D01* +X882076Y18690D01* +X882166Y18617D01* +X882254Y18542D01* +X882340Y18463D01* +X882422Y18381D01* +X882502Y18297D01* +X882580Y18211D01* +X882654Y18121D01* +X882725Y18030D01* +X882793Y17936D01* +X882858Y17839D01* +X882920Y17741D01* +X882979Y17641D01* +X883034Y17539D01* +X883086Y17435D01* +X883134Y17329D01* +X883179Y17222D01* +X883220Y17114D01* +X883257Y17004D01* +X878099Y14577D02* +X878026Y14650D01* +X877955Y14725D01* +X877887Y14802D01* +X877821Y14882D01* +X877759Y14964D01* +X877699Y15048D01* +X877642Y15135D01* +X877589Y15223D01* +X877538Y15313D01* +X877491Y15405D01* +X877447Y15498D01* +X877406Y15593D01* +X877369Y15690D01* +X877335Y15787D01* +X877305Y15886D01* +X877278Y15985D01* +X877254Y16086D01* +X877234Y16187D01* +X877218Y16289D01* +X877205Y16392D01* +X877196Y16495D01* +X877191Y16598D01* +X877189Y16701D01* +X878099Y14577D02* +X883257Y8509D01* +X877189Y8509D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_silkscreen_top.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_silkscreen_top.gbr new file mode 100644 index 0000000000..2db5ec9329 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_silkscreen_top.gbr @@ -0,0 +1,29424 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSilkscreen Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.279400*% +%ADD11C,0.203200*% +%ADD12C,0.355600*% +%ADD13R,0.508000X0.254000*% +%ADD14C,0.152400*% +%ADD15R,0.762000X0.254000*% +%ADD16R,0.508000X1.270000*% +%ADD17R,0.254000X0.508000*% +%ADD18R,0.254000X0.762000*% +%ADD19R,0.508000X1.016000*% +%ADD20C,0.127000*% +%ADD21C,0.508000*% +%ADD22R,0.600000X1.000000*% +%ADD23C,0.200000*% +%ADD24R,0.762000X0.762000*% +%ADD25R,1.016000X1.016000*% +%ADD26C,0.300000*% +%ADD27C,0.100000*% +%ADD28C,0.254000*% +%ADD29R,0.213359X0.071119*% +%ADD30R,0.711200X0.071122*% +%ADD31R,0.853441X0.071119*% +%ADD32R,1.066800X0.071119*% +%ADD33R,1.137922X0.071122*% +%ADD34R,1.280159X0.071119*% +%ADD35R,1.280159X0.071122*% +%ADD36R,1.422400X0.071119*% +%ADD37R,1.422400X0.071122*% +%ADD38R,0.426722X0.071122*% +%ADD39R,0.711200X0.071119*% +%ADD40R,0.497838X0.071119*% +%ADD41R,2.346959X0.071119*% +%ADD42R,0.782319X0.071119*% +%ADD43R,2.346959X0.071122*% +%ADD44R,0.924563X0.071122*% +%ADD45R,3.484881X0.071119*% +%ADD46R,3.627119X0.071122*% +%ADD47R,3.698241X0.071119*% +%ADD48R,3.769359X0.071122*% +%ADD49R,3.769359X0.071119*% +%ADD50R,3.840478X0.071122*% +%ADD51R,0.284481X0.071119*% +%ADD52R,3.840478X0.071119*% +%ADD53R,0.426722X0.071119*% +%ADD54R,0.853441X0.071122*% +%ADD55R,3.698241X0.071122*% +%ADD56R,5.618481X0.071119*% +%ADD57R,5.760719X0.071122*% +%ADD58R,5.902959X0.071119*% +%ADD59R,5.974078X0.071119*% +%ADD60R,6.045200X0.071122*% +%ADD61R,6.045200X0.071119*% +%ADD62R,6.116322X0.071122*% +%ADD63R,6.116322X0.071119*% +%ADD64R,0.568959X0.071122*% +%ADD65R,0.284481X0.071122*% +%ADD66R,0.782322X0.071119*% +%ADD67R,2.773678X0.071122*% +%ADD68R,0.853438X0.071122*% +%ADD69R,3.484878X0.071119*% +%ADD70R,3.413759X0.071119*% +%ADD71R,3.342641X0.071119*% +%ADD72R,3.271519X0.071119*% +%ADD73R,3.129281X0.071122*% +%ADD74R,3.058159X0.071119*% +%ADD75R,2.987041X0.071119*% +%ADD76R,2.987041X0.071122*% +%ADD77R,2.844800X0.071119*% +%ADD78R,2.773678X0.071119*% +%ADD79R,2.773681X0.071119*% +%ADD80R,2.631441X0.071122*% +%ADD81R,0.497841X0.071119*% +%ADD82R,2.560319X0.071119*% +%ADD83R,0.782319X0.071122*% +%ADD84R,2.489200X0.071122*% +%ADD85R,3.342638X0.071119*% +%ADD86R,1.137922X0.071119*% +%ADD87R,2.346963X0.071119*% +%ADD88R,3.413759X0.071122*% +%ADD89R,1.635759X0.071122*% +%ADD90R,3.342641X0.071122*% +%ADD91R,3.413763X0.071119*% +%ADD92R,1.849122X0.071119*% +%ADD93R,0.355600X0.071122*% +%ADD94R,3.271519X0.071122*% +%ADD95R,0.568963X0.071119*% +%ADD96R,0.355600X0.071119*% +%ADD97R,0.568959X0.071119*% +%ADD98R,3.271522X0.071119*% +%ADD99R,0.426719X0.071119*% +%ADD100R,3.200400X0.071122*% +%ADD101R,3.200400X0.071119*% +%ADD102R,0.284478X0.071122*% +%ADD103R,3.129278X0.071122*% +%ADD104R,3.129281X0.071119*% +%ADD105R,0.142241X0.071119*% +%ADD106R,0.142238X0.071119*% +%ADD107R,3.129278X0.071119*% +%ADD108R,3.058163X0.071119*% +%ADD109R,3.911600X0.071119*% +%ADD110R,3.911600X0.071122*% +%ADD111R,0.497841X0.071122*% +%ADD112R,3.982719X0.071119*% +%ADD113R,0.640078X0.071119*% +%ADD114R,4.053841X0.071119*% +%ADD115R,4.053841X0.071122*% +%ADD116R,3.982719X0.071122*% +%ADD117R,3.982722X0.071119*% +%ADD118R,0.924559X0.071119*% +%ADD119R,0.995678X0.071122*% +%ADD120R,0.640081X0.071119*% +%ADD121R,3.982722X0.071122*% +%ADD122R,0.284478X0.071119*% +%ADD123R,3.840481X0.071119*% +%ADD124R,4.693919X0.071119*% +%ADD125R,4.765038X0.071122*% +%ADD126R,4.693922X0.071122*% +%ADD127R,4.836159X0.071119*% +%ADD128R,4.765041X0.071119*% +%ADD129R,4.836159X0.071122*% +%ADD130R,4.765041X0.071122*% +%ADD131R,4.907281X0.071119*% +%ADD132R,4.836163X0.071122*% +%ADD133R,4.836163X0.071119*% +%ADD134R,4.765038X0.071119*% +%ADD135R,0.213363X0.071119*% +%ADD136R,4.693919X0.071122*% +%ADD137R,4.622800X0.071119*% +%ADD138R,0.782322X0.071122*% +%ADD139R,4.551681X0.071122*% +%ADD140R,4.622800X0.071122*% +%ADD141R,0.568963X0.071122*% +%ADD142R,5.547359X0.071119*% +%ADD143R,5.405119X0.071119*% +%ADD144R,5.405122X0.071119*% +%ADD145R,5.547359X0.071122*% +%ADD146R,5.476241X0.071122*% +%ADD147R,5.618478X0.071119*% +%ADD148R,5.547363X0.071119*% +%ADD149R,5.618478X0.071122*% +%ADD150R,5.547363X0.071122*% +%ADD151R,5.618481X0.071122*% +%ADD152R,5.476241X0.071119*% +%ADD153R,5.334000X0.071122*% +%ADD154R,5.334000X0.071119*% +%ADD155R,6.116319X0.071122*% +%ADD156R,5.191759X0.071122*% +%ADD157R,0.640078X0.071122*% +%ADD158R,5.974081X0.071119*% +%ADD159R,6.187441X0.071119*% +%ADD160R,6.258559X0.071122*% +%ADD161R,6.187438X0.071119*% +%ADD162R,6.187438X0.071122*% +%ADD163R,6.258559X0.071119*% +%ADD164R,6.116319X0.071119*% +%ADD165R,6.187441X0.071122*% +%ADD166R,5.974081X0.071122*% +%ADD167R,5.902959X0.071122*% +%ADD168R,6.471919X0.071122*% +%ADD169R,5.831838X0.071122*% +%ADD170R,0.071119X0.071122*% +%ADD171R,6.614159X0.071119*% +%ADD172R,6.329681X0.071119*% +%ADD173R,6.471919X0.071119*% +%ADD174R,6.614159X0.071122*% +%ADD175R,6.543041X0.071122*% +%ADD176R,6.685281X0.071119*% +%ADD177R,6.685278X0.071122*% +%ADD178R,6.685278X0.071119*% +%ADD179R,6.614162X0.071119*% +%ADD180R,6.543041X0.071119*% +%ADD181R,6.471922X0.071119*% +%ADD182R,6.471922X0.071122*% +%ADD183R,6.400800X0.071119*% +%ADD184R,0.213359X0.071122*% +%ADD185R,6.329678X0.071122*% +%ADD186R,6.969759X0.071119*% +%ADD187R,6.329678X0.071119*% +%ADD188R,7.040878X0.071119*% +%ADD189R,6.756400X0.071119*% +%ADD190R,7.040881X0.071122*% +%ADD191R,6.898641X0.071122*% +%ADD192R,7.112000X0.071119*% +%ADD193R,7.183122X0.071122*% +%ADD194R,6.969763X0.071119*% +%ADD195R,7.183119X0.071119*% +%ADD196R,7.040881X0.071119*% +%ADD197R,7.183119X0.071122*% +%ADD198R,7.112000X0.071122*% +%ADD199R,7.040878X0.071122*% +%ADD200R,6.969763X0.071122*% +%ADD201R,6.969759X0.071122*% +%ADD202R,6.898641X0.071119*% +%ADD203R,6.827519X0.071122*% +%ADD204R,6.827519X0.071119*% +%ADD205R,6.756400X0.071122*% +%ADD206R,7.254238X0.071119*% +%ADD207R,7.254238X0.071122*% +%ADD208R,7.254241X0.071119*% +%ADD209R,7.254241X0.071122*% +%ADD210R,7.183122X0.071119*% +%ADD211R,6.898638X0.071119*% +%ADD212R,7.325359X0.071122*% +%ADD213R,7.396478X0.071119*% +%ADD214R,7.325359X0.071119*% +%ADD215R,7.396481X0.071122*% +%ADD216R,7.396481X0.071119*% +%ADD217R,7.467600X0.071122*% +%ADD218R,7.467600X0.071119*% +%ADD219R,0.142241X0.071122*% +%ADD220R,0.142238X0.071122*% +%ADD221R,0.853438X0.071119*% +%ADD222R,0.924559X0.071122*% +%ADD223R,6.827522X0.071119*% +%ADD224R,3.484878X0.071122*% +%ADD225R,4.196081X0.071119*% +%ADD226R,4.338319X0.071122*% +%ADD227R,0.497838X0.071122*% +%ADD228R,4.551681X0.071119*% +%ADD229R,7.396478X0.071122*% +%ADD230R,4.907281X0.071122*% +%ADD231R,5.120637X0.071119*% +%ADD232R,5.262881X0.071122*% +%ADD233R,7.609838X0.071122*% +%ADD234R,15.433041X0.071119*% +%ADD235R,9.743438X0.071119*% +%ADD236R,1.564641X0.071119*% +%ADD237R,4.480559X0.071119*% +%ADD238R,11.734800X0.071122*% +%ADD239R,4.409441X0.071122*% +%ADD240R,11.734800X0.071119*% +%ADD241R,4.267200X0.071119*% +%ADD242R,4.480563X0.071122*% +%ADD243R,4.124959X0.071122*% +%ADD244R,4.338322X0.071119*% +%ADD245R,3.769363X0.071122*% +%ADD246R,3.556000X0.071119*% +%ADD247R,11.805919X0.071119*% +%ADD248R,11.805919X0.071122*% +%ADD249R,2.915922X0.071122*% +%ADD250R,2.915919X0.071119*% +%ADD251R,2.702559X0.071119*% +%ADD252R,2.062481X0.071119*% +%ADD253R,2.204719X0.071119*% +%ADD254R,1.991359X0.071119*% +%ADD255R,1.564638X0.071119*% +%ADD256R,1.920241X0.071122*% +%ADD257R,1.493522X0.071122*% +%ADD258R,1.778000X0.071119*% +%ADD259R,1.706881X0.071122*% +%ADD260R,1.351278X0.071122*% +%ADD261R,1.635759X0.071119*% +%ADD262R,1.351281X0.071119*% +%ADD263R,1.706878X0.071119*% +%ADD264R,11.877041X0.071122*% +%ADD265R,11.877041X0.071119*% +%ADD266R,1.706881X0.071119*% +%ADD267R,21.904962X0.071122*% +%ADD268R,21.904962X0.071119*% +%ADD269R,21.762719X0.071122*% +%ADD270R,21.620481X0.071119*% +%ADD271R,21.478238X0.071119*% +%ADD272R,20.695919X0.071122*% +%ADD273R,20.055841X0.071119*% +%ADD274R,20.126959X0.071122*% +%ADD275R,20.126959X0.071119*% +%ADD276R,20.198078X0.071119*% +%ADD277R,20.269200X0.071122*% +%ADD278R,20.269200X0.071119*% +%ADD279R,20.198081X0.071119*% +%ADD280R,19.984719X0.071122*% +%ADD281R,19.913600X0.071119*% +%ADD282R,8.890000X0.071119*% +%ADD283R,9.032241X0.071119*% +%ADD284R,7.965438X0.071122*% +%ADD285R,8.036559X0.071122*% +%ADD286R,8.107681X0.071119*% +%ADD287R,8.036559X0.071119*% +%ADD288R,8.107681X0.071122*% +%ADD289R,8.107678X0.071122*% +%ADD290R,8.107678X0.071119*% +%ADD291R,7.965438X0.071119*% +%ADD292R,7.965441X0.071119*% +%ADD293R,7.965441X0.071122*% +%ADD294R,7.894319X0.071119*% +%ADD295R,0.995681X0.071119*% +%ADD296R,0.995681X0.071122*% +%ADD297R,0.426719X0.071122*% +%ADD298R,0.640081X0.071122*% +%ADD299R,5.405119X0.071122*% +%ADD300R,1.209041X0.071122*% +%ADD301R,1.209041X0.071119*% +%ADD302R,4.124959X0.071119*% +%ADD303R,2.773681X0.071122*% +%ADD304R,1.066800X0.071122*% +%ADD305R,1.137919X0.071122*% +%ADD306R,0.995678X0.071119*% +%ADD307R,1.351278X0.071119*% +%ADD308R,1.280163X0.071119*% +%ADD309R,1.280163X0.071122*% +%ADD310R,1.137919X0.071119*% +%ADD311C,0.800000*% +%ADD312R,0.400000X0.800000*% +%ADD313R,1.000000X0.400000*% + + +D10* +X396677Y50927D02* +X393347Y50927D01* +X393233Y50929D01* +X393120Y50935D01* +X393006Y50944D01* +X392894Y50958D01* +X392781Y50975D01* +X392669Y50997D01* +X392559Y51022D01* +X392449Y51050D01* +X392340Y51083D01* +X392232Y51119D01* +X392125Y51159D01* +X392020Y51203D01* +X391917Y51250D01* +X391815Y51300D01* +X391715Y51354D01* +X391617Y51412D01* +X391521Y51473D01* +X391427Y51536D01* +X391335Y51604D01* +X391245Y51674D01* +X391159Y51747D01* +X391074Y51823D01* +X390992Y51902D01* +X390913Y51984D01* +X390837Y52069D01* +X390764Y52155D01* +X390694Y52245D01* +X390626Y52337D01* +X390563Y52431D01* +X390502Y52527D01* +X390444Y52625D01* +X390390Y52725D01* +X390340Y52827D01* +X390293Y52930D01* +X390249Y53035D01* +X390209Y53142D01* +X390173Y53250D01* +X390140Y53359D01* +X390112Y53469D01* +X390087Y53579D01* +X390065Y53691D01* +X390048Y53804D01* +X390034Y53916D01* +X390025Y54030D01* +X390019Y54143D01* +X390017Y54257D01* +X390017Y62583D01* +X390019Y62697D01* +X390025Y62810D01* +X390034Y62924D01* +X390048Y63036D01* +X390065Y63149D01* +X390087Y63261D01* +X390112Y63371D01* +X390140Y63481D01* +X390173Y63590D01* +X390209Y63698D01* +X390249Y63805D01* +X390293Y63910D01* +X390340Y64013D01* +X390390Y64115D01* +X390444Y64215D01* +X390502Y64313D01* +X390563Y64409D01* +X390626Y64503D01* +X390694Y64595D01* +X390764Y64685D01* +X390837Y64771D01* +X390913Y64856D01* +X390992Y64938D01* +X391074Y65017D01* +X391158Y65093D01* +X391245Y65166D01* +X391335Y65236D01* +X391427Y65303D01* +X391521Y65367D01* +X391617Y65428D01* +X391715Y65486D01* +X391815Y65540D01* +X391917Y65590D01* +X392020Y65637D01* +X392125Y65681D01* +X392232Y65721D01* +X392340Y65757D01* +X392449Y65790D01* +X392559Y65818D01* +X392669Y65843D01* +X392781Y65865D01* +X392894Y65882D01* +X393006Y65896D01* +X393120Y65905D01* +X393233Y65911D01* +X393347Y65913D01* +X396677Y65913D01* +X403624Y65913D02* +X403624Y50927D01* +X403624Y59253D02* +X411949Y59253D01* +X411949Y65913D02* +X411949Y50927D01* +X424355Y65914D02* +X424475Y65912D01* +X424595Y65906D01* +X424715Y65897D01* +X424834Y65883D01* +X424953Y65866D01* +X425071Y65845D01* +X425189Y65820D01* +X425305Y65791D01* +X425421Y65759D01* +X425536Y65723D01* +X425649Y65683D01* +X425761Y65640D01* +X425872Y65593D01* +X425981Y65543D01* +X426088Y65489D01* +X426194Y65432D01* +X426297Y65371D01* +X426399Y65307D01* +X426499Y65240D01* +X426596Y65170D01* +X426691Y65097D01* +X426784Y65020D01* +X426874Y64941D01* +X426962Y64859D01* +X427047Y64774D01* +X427129Y64686D01* +X427208Y64596D01* +X427285Y64503D01* +X427358Y64408D01* +X427428Y64311D01* +X427495Y64211D01* +X427559Y64109D01* +X427620Y64006D01* +X427677Y63900D01* +X427731Y63793D01* +X427781Y63684D01* +X427828Y63573D01* +X427871Y63461D01* +X427911Y63348D01* +X427947Y63233D01* +X427979Y63117D01* +X428008Y63001D01* +X428033Y62883D01* +X428054Y62765D01* +X428071Y62646D01* +X428085Y62527D01* +X428094Y62407D01* +X428100Y62287D01* +X428102Y62167D01* +X424355Y65913D02* +X424217Y65911D01* +X424080Y65905D01* +X423943Y65895D01* +X423806Y65882D01* +X423670Y65864D01* +X423534Y65842D01* +X423398Y65817D01* +X423264Y65788D01* +X423131Y65755D01* +X422998Y65718D01* +X422867Y65677D01* +X422736Y65633D01* +X422608Y65585D01* +X422480Y65533D01* +X422354Y65477D01* +X422230Y65418D01* +X422107Y65356D01* +X421987Y65290D01* +X421868Y65221D01* +X421751Y65148D01* +X421637Y65072D01* +X421524Y64992D01* +X421414Y64910D01* +X421306Y64824D01* +X421201Y64736D01* +X421099Y64644D01* +X420999Y64550D01* +X420901Y64452D01* +X420807Y64352D01* +X420716Y64249D01* +X420627Y64144D01* +X420542Y64036D01* +X420459Y63926D01* +X420380Y63814D01* +X420304Y63699D01* +X420231Y63582D01* +X420162Y63463D01* +X420096Y63343D01* +X420034Y63220D01* +X419975Y63096D01* +X419920Y62970D01* +X419868Y62842D01* +X419820Y62713D01* +X419776Y62583D01* +X426852Y59253D02* +X426942Y59341D01* +X427028Y59432D01* +X427112Y59525D01* +X427193Y59621D01* +X427271Y59719D01* +X427345Y59819D01* +X427417Y59922D01* +X427485Y60027D01* +X427550Y60135D01* +X427612Y60244D01* +X427670Y60355D01* +X427725Y60468D01* +X427776Y60582D01* +X427823Y60698D01* +X427867Y60815D01* +X427907Y60934D01* +X427944Y61054D01* +X427977Y61175D01* +X428006Y61297D01* +X428031Y61419D01* +X428052Y61543D01* +X428070Y61667D01* +X428083Y61792D01* +X428093Y61917D01* +X428099Y62042D01* +X428101Y62167D01* +X426853Y59253D02* +X419776Y50927D01* +X428101Y50927D01* +X443597Y25725D02* +X446095Y25725D01* +X446095Y17399D01* +X441099Y17399D01* +X440985Y17401D01* +X440872Y17407D01* +X440758Y17416D01* +X440646Y17430D01* +X440533Y17447D01* +X440421Y17469D01* +X440311Y17494D01* +X440201Y17522D01* +X440092Y17555D01* +X439984Y17591D01* +X439877Y17631D01* +X439772Y17675D01* +X439669Y17722D01* +X439567Y17772D01* +X439467Y17826D01* +X439369Y17884D01* +X439273Y17945D01* +X439179Y18008D01* +X439087Y18076D01* +X438997Y18146D01* +X438911Y18219D01* +X438826Y18295D01* +X438744Y18374D01* +X438665Y18456D01* +X438589Y18541D01* +X438516Y18627D01* +X438446Y18717D01* +X438378Y18809D01* +X438315Y18903D01* +X438254Y18999D01* +X438196Y19097D01* +X438142Y19197D01* +X438092Y19299D01* +X438045Y19402D01* +X438001Y19507D01* +X437961Y19614D01* +X437925Y19722D01* +X437892Y19831D01* +X437864Y19941D01* +X437839Y20051D01* +X437817Y20163D01* +X437800Y20276D01* +X437786Y20388D01* +X437777Y20502D01* +X437771Y20615D01* +X437769Y20729D01* +X437769Y29055D01* +X437771Y29169D01* +X437777Y29282D01* +X437786Y29396D01* +X437800Y29508D01* +X437817Y29621D01* +X437839Y29733D01* +X437864Y29843D01* +X437892Y29953D01* +X437925Y30062D01* +X437961Y30170D01* +X438001Y30277D01* +X438045Y30382D01* +X438092Y30485D01* +X438142Y30587D01* +X438196Y30687D01* +X438254Y30785D01* +X438315Y30881D01* +X438378Y30975D01* +X438446Y31067D01* +X438516Y31157D01* +X438589Y31243D01* +X438665Y31328D01* +X438744Y31410D01* +X438826Y31489D01* +X438910Y31565D01* +X438997Y31638D01* +X439087Y31708D01* +X439179Y31775D01* +X439273Y31839D01* +X439369Y31900D01* +X439467Y31958D01* +X439567Y32012D01* +X439669Y32062D01* +X439772Y32109D01* +X439877Y32153D01* +X439984Y32193D01* +X440092Y32229D01* +X440201Y32262D01* +X440311Y32290D01* +X440421Y32315D01* +X440533Y32337D01* +X440646Y32354D01* +X440758Y32368D01* +X440872Y32377D01* +X440985Y32383D01* +X441099Y32385D01* +X446095Y32385D01* +X454442Y32385D02* +X454442Y17399D01* +X462768Y17399D02* +X454442Y32385D01* +X462768Y32385D02* +X462768Y17399D01* +X471116Y17399D02* +X471116Y32385D01* +X475278Y32385D01* +X475406Y32383D01* +X475534Y32377D01* +X475662Y32367D01* +X475790Y32353D01* +X475917Y32336D01* +X476043Y32314D01* +X476169Y32289D01* +X476293Y32259D01* +X476417Y32226D01* +X476540Y32189D01* +X476662Y32148D01* +X476782Y32104D01* +X476901Y32056D01* +X477018Y32004D01* +X477134Y31949D01* +X477247Y31890D01* +X477360Y31827D01* +X477470Y31761D01* +X477577Y31692D01* +X477683Y31620D01* +X477787Y31544D01* +X477888Y31465D01* +X477987Y31383D01* +X478083Y31298D01* +X478176Y31211D01* +X478267Y31120D01* +X478354Y31027D01* +X478439Y30931D01* +X478521Y30832D01* +X478600Y30731D01* +X478676Y30627D01* +X478748Y30521D01* +X478817Y30414D01* +X478883Y30304D01* +X478946Y30191D01* +X479005Y30078D01* +X479060Y29962D01* +X479112Y29845D01* +X479160Y29726D01* +X479204Y29606D01* +X479245Y29484D01* +X479282Y29361D01* +X479315Y29237D01* +X479345Y29113D01* +X479370Y28987D01* +X479392Y28861D01* +X479409Y28734D01* +X479423Y28606D01* +X479433Y28478D01* +X479439Y28350D01* +X479441Y28222D01* +X479441Y21562D01* +X479439Y21434D01* +X479433Y21306D01* +X479423Y21178D01* +X479409Y21050D01* +X479392Y20923D01* +X479370Y20797D01* +X479345Y20671D01* +X479315Y20547D01* +X479282Y20423D01* +X479245Y20300D01* +X479204Y20178D01* +X479160Y20058D01* +X479112Y19939D01* +X479060Y19822D01* +X479005Y19706D01* +X478946Y19593D01* +X478883Y19480D01* +X478817Y19370D01* +X478748Y19263D01* +X478676Y19157D01* +X478600Y19053D01* +X478521Y18952D01* +X478439Y18853D01* +X478354Y18757D01* +X478267Y18664D01* +X478176Y18573D01* +X478083Y18486D01* +X477987Y18401D01* +X477888Y18319D01* +X477787Y18240D01* +X477683Y18164D01* +X477577Y18092D01* +X477470Y18023D01* +X477360Y17957D01* +X477247Y17894D01* +X477134Y17835D01* +X477018Y17780D01* +X476901Y17728D01* +X476782Y17680D01* +X476662Y17636D01* +X476540Y17595D01* +X476417Y17558D01* +X476293Y17525D01* +X476169Y17495D01* +X476043Y17470D01* +X475917Y17448D01* +X475790Y17431D01* +X475662Y17417D01* +X475534Y17407D01* +X475406Y17401D01* +X475278Y17399D01* +X471116Y17399D01* +X888365Y83693D02* +X888365Y98679D01* +X892528Y98679D01* +X892656Y98677D01* +X892784Y98671D01* +X892912Y98661D01* +X893040Y98647D01* +X893167Y98630D01* +X893293Y98608D01* +X893419Y98583D01* +X893543Y98553D01* +X893667Y98520D01* +X893790Y98483D01* +X893912Y98442D01* +X894032Y98398D01* +X894151Y98350D01* +X894268Y98298D01* +X894384Y98243D01* +X894497Y98184D01* +X894610Y98121D01* +X894720Y98055D01* +X894827Y97986D01* +X894933Y97914D01* +X895037Y97838D01* +X895138Y97759D01* +X895237Y97677D01* +X895333Y97592D01* +X895426Y97505D01* +X895517Y97414D01* +X895604Y97321D01* +X895689Y97225D01* +X895771Y97126D01* +X895850Y97025D01* +X895926Y96921D01* +X895998Y96815D01* +X896067Y96708D01* +X896133Y96597D01* +X896196Y96485D01* +X896255Y96372D01* +X896310Y96256D01* +X896362Y96139D01* +X896410Y96020D01* +X896454Y95900D01* +X896495Y95778D01* +X896532Y95655D01* +X896565Y95531D01* +X896595Y95407D01* +X896620Y95281D01* +X896642Y95155D01* +X896659Y95028D01* +X896673Y94900D01* +X896683Y94772D01* +X896689Y94644D01* +X896691Y94516D01* +X896689Y94388D01* +X896683Y94260D01* +X896673Y94132D01* +X896659Y94004D01* +X896642Y93877D01* +X896620Y93751D01* +X896595Y93625D01* +X896565Y93501D01* +X896532Y93377D01* +X896495Y93254D01* +X896454Y93132D01* +X896410Y93012D01* +X896362Y92893D01* +X896310Y92776D01* +X896255Y92660D01* +X896196Y92547D01* +X896133Y92434D01* +X896067Y92324D01* +X895998Y92217D01* +X895926Y92111D01* +X895850Y92007D01* +X895771Y91906D01* +X895689Y91807D01* +X895604Y91711D01* +X895517Y91618D01* +X895426Y91527D01* +X895333Y91440D01* +X895237Y91355D01* +X895138Y91273D01* +X895037Y91194D01* +X894933Y91118D01* +X894827Y91046D01* +X894720Y90977D01* +X894610Y90911D01* +X894497Y90848D01* +X894384Y90789D01* +X894268Y90734D01* +X894151Y90682D01* +X894032Y90634D01* +X893912Y90590D01* +X893790Y90549D01* +X893667Y90512D01* +X893543Y90479D01* +X893419Y90449D01* +X893293Y90424D01* +X893167Y90402D01* +X893040Y90385D01* +X892912Y90371D01* +X892784Y90361D01* +X892656Y90355D01* +X892528Y90353D01* +X888365Y90353D01* +X902744Y98679D02* +X906074Y83693D01* +X909404Y93684D01* +X912734Y83693D01* +X916065Y98679D01* +X923616Y98679D02* +X923616Y83693D01* +X923616Y98679D02* +X927779Y98679D01* +X927907Y98677D01* +X928035Y98671D01* +X928163Y98661D01* +X928291Y98647D01* +X928418Y98630D01* +X928544Y98608D01* +X928670Y98583D01* +X928794Y98553D01* +X928918Y98520D01* +X929041Y98483D01* +X929163Y98442D01* +X929283Y98398D01* +X929402Y98350D01* +X929519Y98298D01* +X929635Y98243D01* +X929748Y98184D01* +X929861Y98121D01* +X929971Y98055D01* +X930078Y97986D01* +X930184Y97914D01* +X930288Y97838D01* +X930389Y97759D01* +X930488Y97677D01* +X930584Y97592D01* +X930677Y97505D01* +X930768Y97414D01* +X930855Y97321D01* +X930940Y97225D01* +X931022Y97126D01* +X931101Y97025D01* +X931177Y96921D01* +X931249Y96815D01* +X931318Y96708D01* +X931384Y96597D01* +X931447Y96485D01* +X931506Y96372D01* +X931561Y96256D01* +X931613Y96139D01* +X931661Y96020D01* +X931705Y95900D01* +X931746Y95778D01* +X931783Y95655D01* +X931816Y95531D01* +X931846Y95407D01* +X931871Y95281D01* +X931893Y95155D01* +X931910Y95028D01* +X931924Y94900D01* +X931934Y94772D01* +X931940Y94644D01* +X931942Y94516D01* +X931940Y94388D01* +X931934Y94260D01* +X931924Y94132D01* +X931910Y94004D01* +X931893Y93877D01* +X931871Y93751D01* +X931846Y93625D01* +X931816Y93501D01* +X931783Y93377D01* +X931746Y93254D01* +X931705Y93132D01* +X931661Y93012D01* +X931613Y92893D01* +X931561Y92776D01* +X931506Y92660D01* +X931447Y92547D01* +X931384Y92434D01* +X931318Y92324D01* +X931249Y92217D01* +X931177Y92111D01* +X931101Y92007D01* +X931022Y91906D01* +X930940Y91807D01* +X930855Y91711D01* +X930768Y91618D01* +X930677Y91527D01* +X930584Y91440D01* +X930488Y91355D01* +X930389Y91273D01* +X930288Y91194D01* +X930184Y91118D01* +X930078Y91046D01* +X929971Y90977D01* +X929861Y90911D01* +X929748Y90848D01* +X929635Y90789D01* +X929519Y90734D01* +X929402Y90682D01* +X929283Y90634D01* +X929163Y90590D01* +X929041Y90549D01* +X928918Y90512D01* +X928794Y90479D01* +X928670Y90449D01* +X928544Y90424D01* +X928418Y90402D01* +X928291Y90385D01* +X928163Y90371D01* +X928035Y90361D01* +X927907Y90355D01* +X927779Y90353D01* +X923616Y90353D01* +X928611Y90353D02* +X931941Y83693D01* +X952655Y51181D02* +X955985Y51181D01* +X952655Y51181D02* +X952541Y51183D01* +X952428Y51189D01* +X952314Y51198D01* +X952202Y51212D01* +X952089Y51229D01* +X951977Y51251D01* +X951867Y51276D01* +X951757Y51304D01* +X951648Y51337D01* +X951540Y51373D01* +X951433Y51413D01* +X951328Y51457D01* +X951225Y51504D01* +X951123Y51554D01* +X951023Y51608D01* +X950925Y51666D01* +X950829Y51727D01* +X950735Y51790D01* +X950643Y51858D01* +X950553Y51928D01* +X950467Y52001D01* +X950382Y52077D01* +X950300Y52156D01* +X950221Y52238D01* +X950145Y52323D01* +X950072Y52409D01* +X950002Y52499D01* +X949934Y52591D01* +X949871Y52685D01* +X949810Y52781D01* +X949752Y52879D01* +X949698Y52979D01* +X949648Y53081D01* +X949601Y53184D01* +X949557Y53289D01* +X949517Y53396D01* +X949481Y53504D01* +X949448Y53613D01* +X949420Y53723D01* +X949395Y53833D01* +X949373Y53945D01* +X949356Y54058D01* +X949342Y54170D01* +X949333Y54284D01* +X949327Y54397D01* +X949325Y54511D01* +X949325Y62837D01* +X949327Y62951D01* +X949333Y63064D01* +X949342Y63178D01* +X949356Y63290D01* +X949373Y63403D01* +X949395Y63515D01* +X949420Y63625D01* +X949448Y63735D01* +X949481Y63844D01* +X949517Y63952D01* +X949557Y64059D01* +X949601Y64164D01* +X949648Y64267D01* +X949698Y64369D01* +X949752Y64469D01* +X949810Y64567D01* +X949871Y64663D01* +X949934Y64757D01* +X950002Y64849D01* +X950072Y64939D01* +X950145Y65025D01* +X950221Y65110D01* +X950300Y65192D01* +X950382Y65271D01* +X950466Y65347D01* +X950553Y65420D01* +X950643Y65490D01* +X950735Y65557D01* +X950829Y65621D01* +X950925Y65682D01* +X951023Y65740D01* +X951123Y65794D01* +X951225Y65844D01* +X951328Y65891D01* +X951433Y65935D01* +X951540Y65975D01* +X951648Y66011D01* +X951757Y66044D01* +X951867Y66072D01* +X951977Y66097D01* +X952089Y66119D01* +X952202Y66136D01* +X952314Y66150D01* +X952428Y66159D01* +X952541Y66165D01* +X952655Y66167D01* +X955985Y66167D01* +X962932Y66167D02* +X962932Y51181D01* +X962932Y59507D02* +X971257Y59507D01* +X971257Y66167D02* +X971257Y51181D01* +X979084Y62837D02* +X983247Y66167D01* +X983247Y51181D01* +X987409Y51181D02* +X979084Y51181D01* +X898723Y26487D02* +X896225Y26487D01* +X898723Y26487D02* +X898723Y18161D01* +X893727Y18161D01* +X893613Y18163D01* +X893500Y18169D01* +X893386Y18178D01* +X893274Y18192D01* +X893161Y18209D01* +X893049Y18231D01* +X892939Y18256D01* +X892829Y18284D01* +X892720Y18317D01* +X892612Y18353D01* +X892505Y18393D01* +X892400Y18437D01* +X892297Y18484D01* +X892195Y18534D01* +X892095Y18588D01* +X891997Y18646D01* +X891901Y18707D01* +X891807Y18770D01* +X891715Y18838D01* +X891625Y18908D01* +X891539Y18981D01* +X891454Y19057D01* +X891372Y19136D01* +X891293Y19218D01* +X891217Y19303D01* +X891144Y19389D01* +X891074Y19479D01* +X891006Y19571D01* +X890943Y19665D01* +X890882Y19761D01* +X890824Y19859D01* +X890770Y19959D01* +X890720Y20061D01* +X890673Y20164D01* +X890629Y20269D01* +X890589Y20376D01* +X890553Y20484D01* +X890520Y20593D01* +X890492Y20703D01* +X890467Y20813D01* +X890445Y20925D01* +X890428Y21038D01* +X890414Y21150D01* +X890405Y21264D01* +X890399Y21377D01* +X890397Y21491D01* +X890397Y29817D01* +X890399Y29931D01* +X890405Y30044D01* +X890414Y30158D01* +X890428Y30270D01* +X890445Y30383D01* +X890467Y30495D01* +X890492Y30605D01* +X890520Y30715D01* +X890553Y30824D01* +X890589Y30932D01* +X890629Y31039D01* +X890673Y31144D01* +X890720Y31247D01* +X890770Y31349D01* +X890824Y31449D01* +X890882Y31547D01* +X890943Y31643D01* +X891006Y31737D01* +X891074Y31829D01* +X891144Y31919D01* +X891217Y32005D01* +X891293Y32090D01* +X891372Y32172D01* +X891454Y32251D01* +X891538Y32327D01* +X891625Y32400D01* +X891715Y32470D01* +X891807Y32537D01* +X891901Y32601D01* +X891997Y32662D01* +X892095Y32720D01* +X892195Y32774D01* +X892297Y32824D01* +X892400Y32871D01* +X892505Y32915D01* +X892612Y32955D01* +X892720Y32991D01* +X892829Y33024D01* +X892939Y33052D01* +X893049Y33077D01* +X893161Y33099D01* +X893274Y33116D01* +X893386Y33130D01* +X893500Y33139D01* +X893613Y33145D01* +X893727Y33147D01* +X898723Y33147D01* +X907070Y33147D02* +X907070Y18161D01* +X915396Y18161D02* +X907070Y33147D01* +X915396Y33147D02* +X915396Y18161D01* +X923744Y18161D02* +X923744Y33147D01* +X927906Y33147D01* +X928034Y33145D01* +X928162Y33139D01* +X928290Y33129D01* +X928418Y33115D01* +X928545Y33098D01* +X928671Y33076D01* +X928797Y33051D01* +X928921Y33021D01* +X929045Y32988D01* +X929168Y32951D01* +X929290Y32910D01* +X929410Y32866D01* +X929529Y32818D01* +X929646Y32766D01* +X929762Y32711D01* +X929875Y32652D01* +X929988Y32589D01* +X930098Y32523D01* +X930205Y32454D01* +X930311Y32382D01* +X930415Y32306D01* +X930516Y32227D01* +X930615Y32145D01* +X930711Y32060D01* +X930804Y31973D01* +X930895Y31882D01* +X930982Y31789D01* +X931067Y31693D01* +X931149Y31594D01* +X931228Y31493D01* +X931304Y31389D01* +X931376Y31283D01* +X931445Y31176D01* +X931511Y31066D01* +X931574Y30953D01* +X931633Y30840D01* +X931688Y30724D01* +X931740Y30607D01* +X931788Y30488D01* +X931832Y30368D01* +X931873Y30246D01* +X931910Y30123D01* +X931943Y29999D01* +X931973Y29875D01* +X931998Y29749D01* +X932020Y29623D01* +X932037Y29496D01* +X932051Y29368D01* +X932061Y29240D01* +X932067Y29112D01* +X932069Y28984D01* +X932069Y22324D01* +X932067Y22196D01* +X932061Y22068D01* +X932051Y21940D01* +X932037Y21812D01* +X932020Y21685D01* +X931998Y21559D01* +X931973Y21433D01* +X931943Y21309D01* +X931910Y21185D01* +X931873Y21062D01* +X931832Y20940D01* +X931788Y20820D01* +X931740Y20701D01* +X931688Y20584D01* +X931633Y20468D01* +X931574Y20355D01* +X931511Y20242D01* +X931445Y20132D01* +X931376Y20025D01* +X931304Y19919D01* +X931228Y19815D01* +X931149Y19714D01* +X931067Y19615D01* +X930982Y19519D01* +X930895Y19426D01* +X930804Y19335D01* +X930711Y19248D01* +X930615Y19163D01* +X930516Y19081D01* +X930415Y19002D01* +X930311Y18926D01* +X930205Y18854D01* +X930098Y18785D01* +X929988Y18719D01* +X929875Y18656D01* +X929762Y18597D01* +X929646Y18542D01* +X929529Y18490D01* +X929410Y18442D01* +X929290Y18398D01* +X929168Y18357D01* +X929045Y18320D01* +X928921Y18287D01* +X928797Y18257D01* +X928671Y18232D01* +X928545Y18210D01* +X928418Y18193D01* +X928290Y18179D01* +X928162Y18169D01* +X928034Y18163D01* +X927906Y18161D01* +X923744Y18161D01* +D11* +X939292Y90424D02* +X948436Y90424D01* +X942086Y59182D02* +X932942Y59182D01* +X937260Y26924D02* +X946404Y26924D01* +X433578Y90678D02* +X424434Y90678D01* +D10* +X437769Y84455D02* +X437769Y99441D01* +X441932Y99441D01* +X442060Y99439D01* +X442188Y99433D01* +X442316Y99423D01* +X442444Y99409D01* +X442571Y99392D01* +X442697Y99370D01* +X442823Y99345D01* +X442947Y99315D01* +X443071Y99282D01* +X443194Y99245D01* +X443316Y99204D01* +X443436Y99160D01* +X443555Y99112D01* +X443672Y99060D01* +X443788Y99005D01* +X443901Y98946D01* +X444014Y98883D01* +X444124Y98817D01* +X444231Y98748D01* +X444337Y98676D01* +X444441Y98600D01* +X444542Y98521D01* +X444641Y98439D01* +X444737Y98354D01* +X444830Y98267D01* +X444921Y98176D01* +X445008Y98083D01* +X445093Y97987D01* +X445175Y97888D01* +X445254Y97787D01* +X445330Y97683D01* +X445402Y97577D01* +X445471Y97470D01* +X445537Y97359D01* +X445600Y97247D01* +X445659Y97134D01* +X445714Y97018D01* +X445766Y96901D01* +X445814Y96782D01* +X445858Y96662D01* +X445899Y96540D01* +X445936Y96417D01* +X445969Y96293D01* +X445999Y96169D01* +X446024Y96043D01* +X446046Y95917D01* +X446063Y95790D01* +X446077Y95662D01* +X446087Y95534D01* +X446093Y95406D01* +X446095Y95278D01* +X446093Y95150D01* +X446087Y95022D01* +X446077Y94894D01* +X446063Y94766D01* +X446046Y94639D01* +X446024Y94513D01* +X445999Y94387D01* +X445969Y94263D01* +X445936Y94139D01* +X445899Y94016D01* +X445858Y93894D01* +X445814Y93774D01* +X445766Y93655D01* +X445714Y93538D01* +X445659Y93422D01* +X445600Y93309D01* +X445537Y93196D01* +X445471Y93086D01* +X445402Y92979D01* +X445330Y92873D01* +X445254Y92769D01* +X445175Y92668D01* +X445093Y92569D01* +X445008Y92473D01* +X444921Y92380D01* +X444830Y92289D01* +X444737Y92202D01* +X444641Y92117D01* +X444542Y92035D01* +X444441Y91956D01* +X444337Y91880D01* +X444231Y91808D01* +X444124Y91739D01* +X444014Y91673D01* +X443901Y91610D01* +X443788Y91551D01* +X443672Y91496D01* +X443555Y91444D01* +X443436Y91396D01* +X443316Y91352D01* +X443194Y91311D01* +X443071Y91274D01* +X442947Y91241D01* +X442823Y91211D01* +X442697Y91186D01* +X442571Y91164D01* +X442444Y91147D01* +X442316Y91133D01* +X442188Y91123D01* +X442060Y91117D01* +X441932Y91115D01* +X437769Y91115D01* +X452148Y99441D02* +X455478Y84455D01* +X458808Y94446D01* +X462138Y84455D01* +X465469Y99441D01* +X473020Y99441D02* +X473020Y84455D01* +X473020Y99441D02* +X477183Y99441D01* +X477311Y99439D01* +X477439Y99433D01* +X477567Y99423D01* +X477695Y99409D01* +X477822Y99392D01* +X477948Y99370D01* +X478074Y99345D01* +X478198Y99315D01* +X478322Y99282D01* +X478445Y99245D01* +X478567Y99204D01* +X478687Y99160D01* +X478806Y99112D01* +X478923Y99060D01* +X479039Y99005D01* +X479152Y98946D01* +X479265Y98883D01* +X479375Y98817D01* +X479482Y98748D01* +X479588Y98676D01* +X479692Y98600D01* +X479793Y98521D01* +X479892Y98439D01* +X479988Y98354D01* +X480081Y98267D01* +X480172Y98176D01* +X480259Y98083D01* +X480344Y97987D01* +X480426Y97888D01* +X480505Y97787D01* +X480581Y97683D01* +X480653Y97577D01* +X480722Y97470D01* +X480788Y97359D01* +X480851Y97247D01* +X480910Y97134D01* +X480965Y97018D01* +X481017Y96901D01* +X481065Y96782D01* +X481109Y96662D01* +X481150Y96540D01* +X481187Y96417D01* +X481220Y96293D01* +X481250Y96169D01* +X481275Y96043D01* +X481297Y95917D01* +X481314Y95790D01* +X481328Y95662D01* +X481338Y95534D01* +X481344Y95406D01* +X481346Y95278D01* +X481344Y95150D01* +X481338Y95022D01* +X481328Y94894D01* +X481314Y94766D01* +X481297Y94639D01* +X481275Y94513D01* +X481250Y94387D01* +X481220Y94263D01* +X481187Y94139D01* +X481150Y94016D01* +X481109Y93894D01* +X481065Y93774D01* +X481017Y93655D01* +X480965Y93538D01* +X480910Y93422D01* +X480851Y93309D01* +X480788Y93196D01* +X480722Y93086D01* +X480653Y92979D01* +X480581Y92873D01* +X480505Y92769D01* +X480426Y92668D01* +X480344Y92569D01* +X480259Y92473D01* +X480172Y92380D01* +X480081Y92289D01* +X479988Y92202D01* +X479892Y92117D01* +X479793Y92035D01* +X479692Y91956D01* +X479588Y91880D01* +X479482Y91808D01* +X479375Y91739D01* +X479265Y91673D01* +X479152Y91610D01* +X479039Y91551D01* +X478923Y91496D01* +X478806Y91444D01* +X478687Y91396D01* +X478567Y91352D01* +X478445Y91311D01* +X478322Y91274D01* +X478198Y91241D01* +X478074Y91211D01* +X477948Y91186D01* +X477822Y91164D01* +X477695Y91147D01* +X477567Y91133D01* +X477439Y91123D01* +X477311Y91117D01* +X477183Y91115D01* +X473020Y91115D01* +X478015Y91115D02* +X481345Y84455D01* +D11* +X440944Y58420D02* +X431800Y58420D01* +X432816Y24638D02* +X423672Y24638D01* +D10* +X884047Y315087D02* +X884047Y330073D01* +X888210Y330073D01* +X888338Y330071D01* +X888466Y330065D01* +X888594Y330055D01* +X888722Y330041D01* +X888849Y330024D01* +X888975Y330002D01* +X889101Y329977D01* +X889225Y329947D01* +X889349Y329914D01* +X889472Y329877D01* +X889594Y329836D01* +X889714Y329792D01* +X889833Y329744D01* +X889950Y329692D01* +X890066Y329637D01* +X890179Y329578D01* +X890292Y329515D01* +X890402Y329449D01* +X890509Y329380D01* +X890615Y329308D01* +X890719Y329232D01* +X890820Y329153D01* +X890919Y329071D01* +X891015Y328986D01* +X891108Y328899D01* +X891199Y328808D01* +X891286Y328715D01* +X891371Y328619D01* +X891453Y328520D01* +X891532Y328419D01* +X891608Y328315D01* +X891680Y328209D01* +X891749Y328102D01* +X891815Y327992D01* +X891878Y327879D01* +X891937Y327766D01* +X891992Y327650D01* +X892044Y327533D01* +X892092Y327414D01* +X892136Y327294D01* +X892177Y327172D01* +X892214Y327049D01* +X892247Y326925D01* +X892277Y326801D01* +X892302Y326675D01* +X892324Y326549D01* +X892341Y326422D01* +X892355Y326294D01* +X892365Y326166D01* +X892371Y326038D01* +X892373Y325910D01* +X892371Y325782D01* +X892365Y325654D01* +X892355Y325526D01* +X892341Y325398D01* +X892324Y325271D01* +X892302Y325145D01* +X892277Y325019D01* +X892247Y324895D01* +X892214Y324771D01* +X892177Y324648D01* +X892136Y324526D01* +X892092Y324406D01* +X892044Y324287D01* +X891992Y324170D01* +X891937Y324054D01* +X891878Y323941D01* +X891815Y323829D01* +X891749Y323718D01* +X891680Y323611D01* +X891608Y323505D01* +X891532Y323401D01* +X891453Y323300D01* +X891371Y323201D01* +X891286Y323105D01* +X891199Y323012D01* +X891108Y322921D01* +X891015Y322834D01* +X890919Y322749D01* +X890820Y322667D01* +X890719Y322588D01* +X890615Y322512D01* +X890509Y322440D01* +X890402Y322371D01* +X890292Y322305D01* +X890179Y322242D01* +X890066Y322183D01* +X889950Y322128D01* +X889833Y322076D01* +X889714Y322028D01* +X889594Y321984D01* +X889472Y321943D01* +X889349Y321906D01* +X889225Y321873D01* +X889101Y321843D01* +X888975Y321818D01* +X888849Y321796D01* +X888722Y321779D01* +X888594Y321765D01* +X888466Y321755D01* +X888338Y321749D01* +X888210Y321747D01* +X884047Y321747D01* +X889042Y321747D02* +X892373Y315087D01* +X900106Y315087D02* +X906767Y315087D01* +X900106Y315087D02* +X900106Y330073D01* +X906767Y330073D01* +X905101Y323413D02* +X900106Y323413D01* +X917561Y315087D02* +X917675Y315089D01* +X917788Y315095D01* +X917902Y315104D01* +X918014Y315118D01* +X918127Y315135D01* +X918239Y315157D01* +X918349Y315182D01* +X918459Y315210D01* +X918568Y315243D01* +X918676Y315279D01* +X918783Y315319D01* +X918888Y315363D01* +X918991Y315410D01* +X919093Y315460D01* +X919193Y315514D01* +X919291Y315572D01* +X919387Y315633D01* +X919481Y315697D01* +X919573Y315764D01* +X919663Y315834D01* +X919750Y315907D01* +X919834Y315983D01* +X919916Y316062D01* +X919995Y316144D01* +X920071Y316229D01* +X920144Y316315D01* +X920214Y316405D01* +X920282Y316497D01* +X920345Y316591D01* +X920406Y316687D01* +X920464Y316785D01* +X920518Y316885D01* +X920568Y316987D01* +X920615Y317090D01* +X920659Y317195D01* +X920699Y317302D01* +X920735Y317410D01* +X920768Y317519D01* +X920796Y317629D01* +X920821Y317739D01* +X920843Y317851D01* +X920860Y317964D01* +X920874Y318076D01* +X920883Y318190D01* +X920889Y318303D01* +X920891Y318417D01* +X917561Y315087D02* +X917393Y315089D01* +X917225Y315095D01* +X917057Y315105D01* +X916889Y315119D01* +X916721Y315137D01* +X916555Y315159D01* +X916388Y315185D01* +X916223Y315215D01* +X916058Y315249D01* +X915894Y315287D01* +X915731Y315329D01* +X915569Y315375D01* +X915408Y315425D01* +X915248Y315478D01* +X915090Y315535D01* +X914933Y315596D01* +X914778Y315661D01* +X914624Y315729D01* +X914472Y315802D01* +X914322Y315877D01* +X914173Y315957D01* +X914026Y316039D01* +X913882Y316126D01* +X913740Y316215D01* +X913599Y316309D01* +X913461Y316405D01* +X913326Y316505D01* +X913193Y316608D01* +X913062Y316714D01* +X912934Y316823D01* +X912808Y316935D01* +X912686Y317050D01* +X912566Y317168D01* +X912983Y326743D02* +X912985Y326857D01* +X912991Y326970D01* +X913000Y327084D01* +X913014Y327196D01* +X913031Y327309D01* +X913053Y327421D01* +X913078Y327531D01* +X913106Y327641D01* +X913139Y327750D01* +X913175Y327858D01* +X913215Y327965D01* +X913259Y328070D01* +X913306Y328173D01* +X913356Y328275D01* +X913410Y328375D01* +X913468Y328473D01* +X913529Y328569D01* +X913592Y328663D01* +X913660Y328755D01* +X913730Y328845D01* +X913803Y328931D01* +X913879Y329016D01* +X913958Y329098D01* +X914040Y329177D01* +X914125Y329253D01* +X914211Y329326D01* +X914301Y329396D01* +X914393Y329464D01* +X914487Y329527D01* +X914583Y329588D01* +X914681Y329646D01* +X914781Y329700D01* +X914883Y329750D01* +X914986Y329797D01* +X915091Y329841D01* +X915198Y329881D01* +X915306Y329917D01* +X915415Y329950D01* +X915525Y329978D01* +X915635Y330003D01* +X915747Y330025D01* +X915860Y330042D01* +X915972Y330056D01* +X916086Y330065D01* +X916199Y330071D01* +X916313Y330073D01* +X916468Y330071D01* +X916622Y330065D01* +X916776Y330056D01* +X916930Y330042D01* +X917084Y330025D01* +X917237Y330004D01* +X917389Y329980D01* +X917541Y329951D01* +X917692Y329919D01* +X917843Y329883D01* +X917992Y329843D01* +X918140Y329800D01* +X918288Y329753D01* +X918434Y329702D01* +X918578Y329648D01* +X918722Y329590D01* +X918863Y329528D01* +X919004Y329464D01* +X919142Y329395D01* +X919279Y329324D01* +X919414Y329248D01* +X919547Y329170D01* +X919679Y329088D01* +X919808Y329003D01* +X919935Y328915D01* +X920059Y328824D01* +X914648Y323829D02* +X914551Y323888D01* +X914457Y323951D01* +X914364Y324016D01* +X914274Y324085D01* +X914186Y324156D01* +X914101Y324231D01* +X914018Y324308D01* +X913938Y324388D01* +X913860Y324470D01* +X913786Y324556D01* +X913714Y324643D01* +X913645Y324733D01* +X913579Y324825D01* +X913517Y324920D01* +X913457Y325016D01* +X913401Y325114D01* +X913348Y325215D01* +X913299Y325317D01* +X913253Y325420D01* +X913210Y325525D01* +X913171Y325631D01* +X913135Y325739D01* +X913104Y325848D01* +X913076Y325957D01* +X913051Y326068D01* +X913030Y326179D01* +X913013Y326291D01* +X913000Y326404D01* +X912991Y326517D01* +X912985Y326630D01* +X912983Y326743D01* +X919226Y321331D02* +X919323Y321272D01* +X919417Y321209D01* +X919510Y321144D01* +X919600Y321075D01* +X919688Y321004D01* +X919773Y320929D01* +X919856Y320852D01* +X919936Y320772D01* +X920014Y320690D01* +X920088Y320604D01* +X920160Y320517D01* +X920229Y320427D01* +X920295Y320335D01* +X920357Y320240D01* +X920417Y320144D01* +X920473Y320046D01* +X920526Y319945D01* +X920575Y319843D01* +X920622Y319740D01* +X920664Y319635D01* +X920703Y319529D01* +X920739Y319421D01* +X920770Y319312D01* +X920798Y319203D01* +X920823Y319092D01* +X920844Y318981D01* +X920861Y318869D01* +X920874Y318756D01* +X920883Y318643D01* +X920889Y318530D01* +X920891Y318417D01* +X919227Y321331D02* +X914648Y323829D01* +X928242Y315087D02* +X934903Y315087D01* +X928242Y315087D02* +X928242Y330073D01* +X934903Y330073D01* +X933238Y323413D02* +X928242Y323413D01* +X944344Y330073D02* +X944344Y315087D01* +X940181Y330073D02* +X948507Y330073D01* +D11* +X879856Y311658D02* +X879856Y192024D01* +X948944Y191770D01* +X948944Y311404D01* +X879856Y311658D01* +D12* +X1050798Y41966D02* +X1056160Y41966D01* +X1056305Y41964D01* +X1056450Y41958D01* +X1056595Y41948D01* +X1056740Y41935D01* +X1056884Y41917D01* +X1057027Y41895D01* +X1057170Y41870D01* +X1057313Y41841D01* +X1057454Y41808D01* +X1057594Y41771D01* +X1057734Y41730D01* +X1057872Y41685D01* +X1058009Y41637D01* +X1058145Y41585D01* +X1058279Y41530D01* +X1058411Y41470D01* +X1058542Y41408D01* +X1058672Y41341D01* +X1058799Y41272D01* +X1058924Y41198D01* +X1059048Y41122D01* +X1059169Y41042D01* +X1059288Y40959D01* +X1059405Y40873D01* +X1059519Y40783D01* +X1059631Y40691D01* +X1059741Y40595D01* +X1059847Y40497D01* +X1059952Y40396D01* +X1060053Y40291D01* +X1060151Y40185D01* +X1060247Y40075D01* +X1060339Y39963D01* +X1060429Y39849D01* +X1060515Y39732D01* +X1060598Y39613D01* +X1060678Y39492D01* +X1060754Y39368D01* +X1060828Y39243D01* +X1060897Y39116D01* +X1060964Y38986D01* +X1061026Y38855D01* +X1061086Y38723D01* +X1061141Y38589D01* +X1061193Y38453D01* +X1061241Y38316D01* +X1061286Y38178D01* +X1061327Y38038D01* +X1061364Y37898D01* +X1061397Y37757D01* +X1061426Y37614D01* +X1061451Y37471D01* +X1061473Y37328D01* +X1061491Y37184D01* +X1061504Y37039D01* +X1061514Y36894D01* +X1061520Y36749D01* +X1061522Y36604D01* +X1061520Y36459D01* +X1061514Y36314D01* +X1061504Y36169D01* +X1061491Y36024D01* +X1061473Y35880D01* +X1061451Y35737D01* +X1061426Y35594D01* +X1061397Y35451D01* +X1061364Y35310D01* +X1061327Y35170D01* +X1061286Y35030D01* +X1061241Y34892D01* +X1061193Y34755D01* +X1061141Y34619D01* +X1061086Y34485D01* +X1061026Y34353D01* +X1060964Y34222D01* +X1060897Y34092D01* +X1060828Y33965D01* +X1060754Y33840D01* +X1060678Y33716D01* +X1060598Y33595D01* +X1060515Y33476D01* +X1060429Y33359D01* +X1060339Y33245D01* +X1060247Y33133D01* +X1060151Y33023D01* +X1060053Y32917D01* +X1059952Y32812D01* +X1059847Y32711D01* +X1059741Y32613D01* +X1059631Y32517D01* +X1059519Y32425D01* +X1059405Y32335D01* +X1059288Y32249D01* +X1059169Y32166D01* +X1059048Y32086D01* +X1058924Y32010D01* +X1058799Y31936D01* +X1058672Y31867D01* +X1058542Y31800D01* +X1058411Y31738D01* +X1058279Y31678D01* +X1058145Y31623D01* +X1058009Y31571D01* +X1057872Y31523D01* +X1057734Y31478D01* +X1057594Y31437D01* +X1057454Y31400D01* +X1057313Y31367D01* +X1057170Y31338D01* +X1057027Y31313D01* +X1056884Y31291D01* +X1056740Y31273D01* +X1056595Y31260D01* +X1056450Y31250D01* +X1056305Y31244D01* +X1056160Y31242D01* +X1050798Y31242D01* +X1050798Y50546D01* +X1056160Y50546D01* +X1056290Y50544D01* +X1056419Y50538D01* +X1056548Y50528D01* +X1056677Y50515D01* +X1056805Y50497D01* +X1056933Y50476D01* +X1057060Y50450D01* +X1057187Y50421D01* +X1057312Y50388D01* +X1057436Y50352D01* +X1057559Y50311D01* +X1057681Y50267D01* +X1057802Y50219D01* +X1057921Y50168D01* +X1058038Y50113D01* +X1058154Y50055D01* +X1058267Y49993D01* +X1058379Y49927D01* +X1058489Y49859D01* +X1058597Y49787D01* +X1058703Y49711D01* +X1058806Y49633D01* +X1058907Y49552D01* +X1059005Y49467D01* +X1059100Y49380D01* +X1059193Y49289D01* +X1059284Y49196D01* +X1059371Y49101D01* +X1059456Y49003D01* +X1059537Y48902D01* +X1059615Y48799D01* +X1059691Y48693D01* +X1059763Y48585D01* +X1059831Y48475D01* +X1059897Y48363D01* +X1059959Y48250D01* +X1060017Y48134D01* +X1060072Y48017D01* +X1060123Y47898D01* +X1060171Y47777D01* +X1060215Y47655D01* +X1060256Y47532D01* +X1060292Y47408D01* +X1060325Y47283D01* +X1060354Y47156D01* +X1060380Y47029D01* +X1060401Y46901D01* +X1060419Y46773D01* +X1060432Y46644D01* +X1060442Y46515D01* +X1060448Y46386D01* +X1060450Y46256D01* +X1060448Y46126D01* +X1060442Y45997D01* +X1060432Y45868D01* +X1060419Y45739D01* +X1060401Y45611D01* +X1060380Y45483D01* +X1060354Y45356D01* +X1060325Y45229D01* +X1060292Y45104D01* +X1060256Y44980D01* +X1060215Y44857D01* +X1060171Y44735D01* +X1060123Y44614D01* +X1060072Y44495D01* +X1060017Y44378D01* +X1059959Y44262D01* +X1059897Y44149D01* +X1059831Y44037D01* +X1059763Y43927D01* +X1059691Y43819D01* +X1059615Y43713D01* +X1059537Y43610D01* +X1059456Y43509D01* +X1059371Y43411D01* +X1059284Y43316D01* +X1059193Y43223D01* +X1059100Y43132D01* +X1059005Y43045D01* +X1058907Y42960D01* +X1058806Y42879D01* +X1058703Y42801D01* +X1058597Y42725D01* +X1058489Y42653D01* +X1058379Y42585D01* +X1058267Y42519D01* +X1058154Y42457D01* +X1058038Y42399D01* +X1057921Y42344D01* +X1057802Y42293D01* +X1057681Y42245D01* +X1057559Y42201D01* +X1057436Y42160D01* +X1057312Y42124D01* +X1057187Y42091D01* +X1057060Y42062D01* +X1056933Y42036D01* +X1056805Y42015D01* +X1056677Y41997D01* +X1056548Y41984D01* +X1056419Y41974D01* +X1056290Y41968D01* +X1056160Y41966D01* +X1067986Y31242D02* +X1074420Y50546D01* +X1080855Y31242D01* +X1079246Y36068D02* +X1069594Y36068D01* +X1087212Y31242D02* +X1093647Y50546D01* +X1100081Y31242D01* +X1098473Y36068D02* +X1088821Y36068D01* +X1106438Y31242D02* +X1112873Y50546D01* +X1119308Y31242D01* +X1117699Y36068D02* +X1108047Y36068D01* +X1127378Y31242D02* +X1127378Y50546D01* +X1127378Y41966D02* +X1138102Y41966D01* +X1138102Y50546D02* +X1138102Y31242D01* +X1153039Y31242D02* +X1153169Y31244D01* +X1153298Y31250D01* +X1153427Y31260D01* +X1153556Y31273D01* +X1153684Y31291D01* +X1153812Y31312D01* +X1153939Y31338D01* +X1154066Y31367D01* +X1154191Y31400D01* +X1154315Y31436D01* +X1154438Y31477D01* +X1154560Y31521D01* +X1154681Y31569D01* +X1154800Y31620D01* +X1154917Y31675D01* +X1155033Y31733D01* +X1155146Y31795D01* +X1155258Y31861D01* +X1155368Y31929D01* +X1155476Y32001D01* +X1155582Y32077D01* +X1155685Y32155D01* +X1155786Y32236D01* +X1155884Y32321D01* +X1155979Y32408D01* +X1156072Y32499D01* +X1156163Y32592D01* +X1156250Y32687D01* +X1156335Y32785D01* +X1156416Y32886D01* +X1156494Y32989D01* +X1156570Y33095D01* +X1156642Y33203D01* +X1156710Y33313D01* +X1156776Y33425D01* +X1156838Y33538D01* +X1156896Y33654D01* +X1156951Y33771D01* +X1157002Y33890D01* +X1157050Y34011D01* +X1157094Y34133D01* +X1157135Y34256D01* +X1157171Y34380D01* +X1157204Y34505D01* +X1157233Y34632D01* +X1157259Y34759D01* +X1157280Y34887D01* +X1157298Y35015D01* +X1157311Y35144D01* +X1157321Y35273D01* +X1157327Y35402D01* +X1157329Y35532D01* +X1153039Y31242D02* +X1152822Y31245D01* +X1152606Y31252D01* +X1152389Y31265D01* +X1152173Y31283D01* +X1151957Y31307D01* +X1151743Y31335D01* +X1151528Y31369D01* +X1151315Y31408D01* +X1151103Y31451D01* +X1150891Y31500D01* +X1150681Y31554D01* +X1150473Y31613D01* +X1150266Y31677D01* +X1150060Y31746D01* +X1149856Y31819D01* +X1149654Y31898D01* +X1149454Y31981D01* +X1149256Y32070D01* +X1149060Y32162D01* +X1148866Y32260D01* +X1148675Y32362D01* +X1148486Y32469D01* +X1148300Y32580D01* +X1148117Y32695D01* +X1147936Y32815D01* +X1147758Y32940D01* +X1147584Y33068D01* +X1147412Y33201D01* +X1147244Y33337D01* +X1147079Y33478D01* +X1146917Y33623D01* +X1146759Y33771D01* +X1146604Y33923D01* +X1147140Y46256D02* +X1147142Y46386D01* +X1147148Y46515D01* +X1147158Y46644D01* +X1147171Y46773D01* +X1147189Y46901D01* +X1147210Y47029D01* +X1147236Y47156D01* +X1147265Y47283D01* +X1147298Y47408D01* +X1147334Y47532D01* +X1147375Y47655D01* +X1147419Y47777D01* +X1147467Y47898D01* +X1147518Y48017D01* +X1147573Y48134D01* +X1147631Y48250D01* +X1147693Y48363D01* +X1147759Y48475D01* +X1147827Y48585D01* +X1147899Y48693D01* +X1147975Y48799D01* +X1148053Y48902D01* +X1148134Y49003D01* +X1148219Y49101D01* +X1148306Y49196D01* +X1148397Y49289D01* +X1148490Y49380D01* +X1148585Y49467D01* +X1148684Y49552D01* +X1148784Y49633D01* +X1148887Y49711D01* +X1148993Y49787D01* +X1149101Y49859D01* +X1149211Y49927D01* +X1149323Y49993D01* +X1149436Y50055D01* +X1149552Y50113D01* +X1149669Y50168D01* +X1149788Y50219D01* +X1149909Y50267D01* +X1150031Y50311D01* +X1150154Y50352D01* +X1150278Y50388D01* +X1150403Y50421D01* +X1150530Y50450D01* +X1150657Y50476D01* +X1150785Y50497D01* +X1150913Y50515D01* +X1151042Y50528D01* +X1151171Y50538D01* +X1151300Y50544D01* +X1151430Y50546D01* +X1151622Y50544D01* +X1151813Y50537D01* +X1152005Y50525D01* +X1152196Y50509D01* +X1152386Y50489D01* +X1152576Y50464D01* +X1152766Y50434D01* +X1152954Y50400D01* +X1153142Y50362D01* +X1153329Y50319D01* +X1153515Y50271D01* +X1153699Y50219D01* +X1153882Y50163D01* +X1154064Y50102D01* +X1154245Y50037D01* +X1154423Y49968D01* +X1154600Y49895D01* +X1154776Y49817D01* +X1154949Y49735D01* +X1155120Y49649D01* +X1155290Y49559D01* +X1155457Y49465D01* +X1155621Y49368D01* +X1155784Y49266D01* +X1155944Y49160D01* +X1156101Y49051D01* +X1156256Y48937D01* +X1149285Y42502D02* +X1149175Y42570D01* +X1149066Y42640D01* +X1148960Y42714D01* +X1148856Y42791D01* +X1148755Y42870D01* +X1148655Y42953D01* +X1148559Y43039D01* +X1148464Y43128D01* +X1148373Y43219D01* +X1148284Y43313D01* +X1148198Y43409D01* +X1148115Y43509D01* +X1148035Y43610D01* +X1147958Y43714D01* +X1147885Y43820D01* +X1147814Y43928D01* +X1147747Y44038D01* +X1147682Y44151D01* +X1147622Y44265D01* +X1147564Y44381D01* +X1147510Y44498D01* +X1147460Y44617D01* +X1147413Y44738D01* +X1147370Y44859D01* +X1147330Y44982D01* +X1147294Y45107D01* +X1147262Y45232D01* +X1147234Y45358D01* +X1147209Y45485D01* +X1147188Y45612D01* +X1147171Y45740D01* +X1147157Y45869D01* +X1147148Y45998D01* +X1147142Y46127D01* +X1147140Y46256D01* +X1155184Y39286D02* +X1155294Y39218D01* +X1155403Y39148D01* +X1155509Y39074D01* +X1155613Y38997D01* +X1155714Y38918D01* +X1155814Y38835D01* +X1155910Y38749D01* +X1156005Y38660D01* +X1156096Y38569D01* +X1156185Y38475D01* +X1156271Y38379D01* +X1156354Y38279D01* +X1156434Y38178D01* +X1156511Y38074D01* +X1156584Y37968D01* +X1156655Y37860D01* +X1156722Y37750D01* +X1156787Y37637D01* +X1156847Y37523D01* +X1156905Y37407D01* +X1156959Y37290D01* +X1157009Y37171D01* +X1157056Y37050D01* +X1157099Y36929D01* +X1157139Y36806D01* +X1157175Y36682D01* +X1157207Y36556D01* +X1157235Y36430D01* +X1157260Y36303D01* +X1157281Y36176D01* +X1157298Y36048D01* +X1157312Y35919D01* +X1157321Y35790D01* +X1157327Y35661D01* +X1157329Y35532D01* +X1155184Y39285D02* +X1149285Y42503D01* +X1176410Y41966D02* +X1181772Y41966D01* +X1181917Y41964D01* +X1182062Y41958D01* +X1182207Y41948D01* +X1182352Y41935D01* +X1182496Y41917D01* +X1182639Y41895D01* +X1182782Y41870D01* +X1182925Y41841D01* +X1183066Y41808D01* +X1183206Y41771D01* +X1183346Y41730D01* +X1183484Y41685D01* +X1183621Y41637D01* +X1183757Y41585D01* +X1183891Y41530D01* +X1184023Y41470D01* +X1184154Y41408D01* +X1184284Y41341D01* +X1184411Y41272D01* +X1184536Y41198D01* +X1184660Y41122D01* +X1184781Y41042D01* +X1184900Y40959D01* +X1185017Y40873D01* +X1185131Y40783D01* +X1185243Y40691D01* +X1185353Y40595D01* +X1185459Y40497D01* +X1185564Y40396D01* +X1185665Y40291D01* +X1185763Y40185D01* +X1185859Y40075D01* +X1185951Y39963D01* +X1186041Y39849D01* +X1186127Y39732D01* +X1186210Y39613D01* +X1186290Y39492D01* +X1186366Y39368D01* +X1186440Y39243D01* +X1186509Y39116D01* +X1186576Y38986D01* +X1186638Y38855D01* +X1186698Y38723D01* +X1186753Y38589D01* +X1186805Y38453D01* +X1186853Y38316D01* +X1186898Y38178D01* +X1186939Y38038D01* +X1186976Y37898D01* +X1187009Y37757D01* +X1187038Y37614D01* +X1187063Y37471D01* +X1187085Y37328D01* +X1187103Y37184D01* +X1187116Y37039D01* +X1187126Y36894D01* +X1187132Y36749D01* +X1187134Y36604D01* +X1187132Y36459D01* +X1187126Y36314D01* +X1187116Y36169D01* +X1187103Y36024D01* +X1187085Y35880D01* +X1187063Y35737D01* +X1187038Y35594D01* +X1187009Y35451D01* +X1186976Y35310D01* +X1186939Y35170D01* +X1186898Y35030D01* +X1186853Y34892D01* +X1186805Y34755D01* +X1186753Y34619D01* +X1186698Y34485D01* +X1186638Y34353D01* +X1186576Y34222D01* +X1186509Y34092D01* +X1186440Y33965D01* +X1186366Y33840D01* +X1186290Y33716D01* +X1186210Y33595D01* +X1186127Y33476D01* +X1186041Y33359D01* +X1185951Y33245D01* +X1185859Y33133D01* +X1185763Y33023D01* +X1185665Y32917D01* +X1185564Y32812D01* +X1185459Y32711D01* +X1185353Y32613D01* +X1185243Y32517D01* +X1185131Y32425D01* +X1185017Y32335D01* +X1184900Y32249D01* +X1184781Y32166D01* +X1184660Y32086D01* +X1184536Y32010D01* +X1184411Y31936D01* +X1184284Y31867D01* +X1184154Y31800D01* +X1184023Y31738D01* +X1183891Y31678D01* +X1183757Y31623D01* +X1183621Y31571D01* +X1183484Y31523D01* +X1183346Y31478D01* +X1183206Y31437D01* +X1183066Y31400D01* +X1182925Y31367D01* +X1182782Y31338D01* +X1182639Y31313D01* +X1182496Y31291D01* +X1182352Y31273D01* +X1182207Y31260D01* +X1182062Y31250D01* +X1181917Y31244D01* +X1181772Y31242D01* +X1176410Y31242D01* +X1176410Y50546D01* +X1181772Y50546D01* +X1181902Y50544D01* +X1182031Y50538D01* +X1182160Y50528D01* +X1182289Y50515D01* +X1182417Y50497D01* +X1182545Y50476D01* +X1182672Y50450D01* +X1182799Y50421D01* +X1182924Y50388D01* +X1183048Y50352D01* +X1183171Y50311D01* +X1183293Y50267D01* +X1183414Y50219D01* +X1183533Y50168D01* +X1183650Y50113D01* +X1183766Y50055D01* +X1183879Y49993D01* +X1183991Y49927D01* +X1184101Y49859D01* +X1184209Y49787D01* +X1184315Y49711D01* +X1184418Y49633D01* +X1184519Y49552D01* +X1184617Y49467D01* +X1184712Y49380D01* +X1184805Y49289D01* +X1184896Y49196D01* +X1184983Y49101D01* +X1185068Y49003D01* +X1185149Y48902D01* +X1185227Y48799D01* +X1185303Y48693D01* +X1185375Y48585D01* +X1185443Y48475D01* +X1185509Y48363D01* +X1185571Y48250D01* +X1185629Y48134D01* +X1185684Y48017D01* +X1185735Y47898D01* +X1185783Y47777D01* +X1185827Y47655D01* +X1185868Y47532D01* +X1185904Y47408D01* +X1185937Y47283D01* +X1185966Y47156D01* +X1185992Y47029D01* +X1186013Y46901D01* +X1186031Y46773D01* +X1186044Y46644D01* +X1186054Y46515D01* +X1186060Y46386D01* +X1186062Y46256D01* +X1186060Y46126D01* +X1186054Y45997D01* +X1186044Y45868D01* +X1186031Y45739D01* +X1186013Y45611D01* +X1185992Y45483D01* +X1185966Y45356D01* +X1185937Y45229D01* +X1185904Y45104D01* +X1185868Y44980D01* +X1185827Y44857D01* +X1185783Y44735D01* +X1185735Y44614D01* +X1185684Y44495D01* +X1185629Y44378D01* +X1185571Y44262D01* +X1185509Y44149D01* +X1185443Y44037D01* +X1185375Y43927D01* +X1185303Y43819D01* +X1185227Y43713D01* +X1185149Y43610D01* +X1185068Y43509D01* +X1184983Y43411D01* +X1184896Y43316D01* +X1184805Y43223D01* +X1184712Y43132D01* +X1184617Y43045D01* +X1184519Y42960D01* +X1184418Y42879D01* +X1184315Y42801D01* +X1184209Y42725D01* +X1184101Y42653D01* +X1183991Y42585D01* +X1183879Y42519D01* +X1183766Y42457D01* +X1183650Y42399D01* +X1183533Y42344D01* +X1183414Y42293D01* +X1183293Y42245D01* +X1183171Y42201D01* +X1183048Y42160D01* +X1182924Y42124D01* +X1182799Y42091D01* +X1182672Y42062D01* +X1182545Y42036D01* +X1182417Y42015D01* +X1182289Y41997D01* +X1182160Y41984D01* +X1182031Y41974D01* +X1181902Y41968D01* +X1181772Y41966D01* +X1195452Y50546D02* +X1195452Y31242D01* +X1195452Y50546D02* +X1200814Y50546D01* +X1200959Y50544D01* +X1201104Y50538D01* +X1201249Y50528D01* +X1201394Y50515D01* +X1201538Y50497D01* +X1201681Y50475D01* +X1201824Y50450D01* +X1201967Y50421D01* +X1202108Y50388D01* +X1202248Y50351D01* +X1202388Y50310D01* +X1202526Y50265D01* +X1202663Y50217D01* +X1202799Y50165D01* +X1202933Y50110D01* +X1203065Y50050D01* +X1203196Y49988D01* +X1203326Y49921D01* +X1203453Y49852D01* +X1203578Y49778D01* +X1203702Y49702D01* +X1203823Y49622D01* +X1203942Y49539D01* +X1204059Y49453D01* +X1204173Y49363D01* +X1204285Y49271D01* +X1204395Y49175D01* +X1204501Y49077D01* +X1204606Y48976D01* +X1204707Y48871D01* +X1204805Y48765D01* +X1204901Y48655D01* +X1204993Y48543D01* +X1205083Y48429D01* +X1205169Y48312D01* +X1205252Y48193D01* +X1205332Y48072D01* +X1205408Y47948D01* +X1205482Y47823D01* +X1205551Y47696D01* +X1205618Y47566D01* +X1205680Y47435D01* +X1205740Y47303D01* +X1205795Y47169D01* +X1205847Y47033D01* +X1205895Y46896D01* +X1205940Y46758D01* +X1205981Y46618D01* +X1206018Y46478D01* +X1206051Y46337D01* +X1206080Y46194D01* +X1206105Y46051D01* +X1206127Y45908D01* +X1206145Y45764D01* +X1206158Y45619D01* +X1206168Y45474D01* +X1206174Y45329D01* +X1206176Y45184D01* +X1206174Y45039D01* +X1206168Y44894D01* +X1206158Y44749D01* +X1206145Y44604D01* +X1206127Y44460D01* +X1206105Y44317D01* +X1206080Y44174D01* +X1206051Y44031D01* +X1206018Y43890D01* +X1205981Y43750D01* +X1205940Y43610D01* +X1205895Y43472D01* +X1205847Y43335D01* +X1205795Y43199D01* +X1205740Y43065D01* +X1205680Y42933D01* +X1205618Y42802D01* +X1205551Y42672D01* +X1205482Y42545D01* +X1205408Y42420D01* +X1205332Y42296D01* +X1205252Y42175D01* +X1205169Y42056D01* +X1205083Y41939D01* +X1204993Y41825D01* +X1204901Y41713D01* +X1204805Y41603D01* +X1204707Y41497D01* +X1204606Y41392D01* +X1204501Y41291D01* +X1204395Y41193D01* +X1204285Y41097D01* +X1204173Y41005D01* +X1204059Y40915D01* +X1203942Y40829D01* +X1203823Y40746D01* +X1203702Y40666D01* +X1203578Y40590D01* +X1203453Y40516D01* +X1203326Y40447D01* +X1203196Y40380D01* +X1203065Y40318D01* +X1202933Y40258D01* +X1202799Y40203D01* +X1202663Y40151D01* +X1202526Y40103D01* +X1202388Y40058D01* +X1202248Y40017D01* +X1202108Y39980D01* +X1201967Y39947D01* +X1201824Y39918D01* +X1201681Y39893D01* +X1201538Y39871D01* +X1201394Y39853D01* +X1201249Y39840D01* +X1201104Y39830D01* +X1200959Y39824D01* +X1200814Y39822D01* +X1195452Y39822D01* +X1201887Y39822D02* +X1206176Y31242D01* +X1213465Y31242D02* +X1219900Y50546D01* +X1226334Y31242D01* +X1224726Y36068D02* +X1215074Y36068D01* +X1235281Y31242D02* +X1235281Y50546D01* +X1233136Y31242D02* +X1237426Y31242D01* +X1237426Y50546D02* +X1233136Y50546D01* +X1245940Y50546D02* +X1245940Y31242D01* +X1256665Y31242D02* +X1245940Y50546D01* +X1256665Y50546D02* +X1256665Y31242D01* +D10* +X1054580Y13787D02* +X1050417Y13787D01* +X1054580Y13787D02* +X1054708Y13785D01* +X1054836Y13779D01* +X1054964Y13769D01* +X1055092Y13755D01* +X1055219Y13738D01* +X1055345Y13716D01* +X1055471Y13691D01* +X1055595Y13661D01* +X1055719Y13628D01* +X1055842Y13591D01* +X1055964Y13550D01* +X1056084Y13506D01* +X1056203Y13458D01* +X1056320Y13406D01* +X1056436Y13351D01* +X1056549Y13292D01* +X1056662Y13229D01* +X1056772Y13163D01* +X1056879Y13094D01* +X1056985Y13022D01* +X1057089Y12946D01* +X1057190Y12867D01* +X1057289Y12785D01* +X1057385Y12700D01* +X1057478Y12613D01* +X1057569Y12522D01* +X1057656Y12429D01* +X1057741Y12333D01* +X1057823Y12234D01* +X1057902Y12133D01* +X1057978Y12029D01* +X1058050Y11923D01* +X1058119Y11816D01* +X1058185Y11705D01* +X1058248Y11593D01* +X1058307Y11480D01* +X1058362Y11364D01* +X1058414Y11247D01* +X1058462Y11128D01* +X1058506Y11008D01* +X1058547Y10886D01* +X1058584Y10763D01* +X1058617Y10639D01* +X1058647Y10515D01* +X1058672Y10389D01* +X1058694Y10263D01* +X1058711Y10136D01* +X1058725Y10008D01* +X1058735Y9880D01* +X1058741Y9752D01* +X1058743Y9624D01* +X1058741Y9496D01* +X1058735Y9368D01* +X1058725Y9240D01* +X1058711Y9112D01* +X1058694Y8985D01* +X1058672Y8859D01* +X1058647Y8733D01* +X1058617Y8609D01* +X1058584Y8485D01* +X1058547Y8362D01* +X1058506Y8240D01* +X1058462Y8120D01* +X1058414Y8001D01* +X1058362Y7884D01* +X1058307Y7768D01* +X1058248Y7655D01* +X1058185Y7542D01* +X1058119Y7432D01* +X1058050Y7325D01* +X1057978Y7219D01* +X1057902Y7115D01* +X1057823Y7014D01* +X1057741Y6915D01* +X1057656Y6819D01* +X1057569Y6726D01* +X1057478Y6635D01* +X1057385Y6548D01* +X1057289Y6463D01* +X1057190Y6381D01* +X1057089Y6302D01* +X1056985Y6226D01* +X1056879Y6154D01* +X1056772Y6085D01* +X1056662Y6019D01* +X1056549Y5956D01* +X1056436Y5897D01* +X1056320Y5842D01* +X1056203Y5790D01* +X1056084Y5742D01* +X1055964Y5698D01* +X1055842Y5657D01* +X1055719Y5620D01* +X1055595Y5587D01* +X1055471Y5557D01* +X1055345Y5532D01* +X1055219Y5510D01* +X1055092Y5493D01* +X1054964Y5479D01* +X1054836Y5469D01* +X1054708Y5463D01* +X1054580Y5461D01* +X1050417Y5461D01* +X1050417Y20447D01* +X1054580Y20447D01* +X1054694Y20445D01* +X1054807Y20439D01* +X1054921Y20430D01* +X1055033Y20416D01* +X1055146Y20399D01* +X1055258Y20377D01* +X1055368Y20352D01* +X1055478Y20324D01* +X1055587Y20291D01* +X1055695Y20255D01* +X1055802Y20215D01* +X1055907Y20171D01* +X1056010Y20124D01* +X1056112Y20074D01* +X1056212Y20020D01* +X1056310Y19962D01* +X1056406Y19901D01* +X1056500Y19838D01* +X1056592Y19770D01* +X1056682Y19700D01* +X1056768Y19627D01* +X1056853Y19551D01* +X1056935Y19472D01* +X1057014Y19390D01* +X1057090Y19305D01* +X1057163Y19219D01* +X1057233Y19129D01* +X1057301Y19037D01* +X1057364Y18943D01* +X1057425Y18847D01* +X1057483Y18749D01* +X1057537Y18649D01* +X1057587Y18547D01* +X1057634Y18444D01* +X1057678Y18339D01* +X1057718Y18232D01* +X1057754Y18124D01* +X1057787Y18015D01* +X1057815Y17905D01* +X1057840Y17795D01* +X1057862Y17683D01* +X1057879Y17570D01* +X1057893Y17458D01* +X1057902Y17344D01* +X1057908Y17231D01* +X1057910Y17117D01* +X1057908Y17003D01* +X1057902Y16890D01* +X1057893Y16776D01* +X1057879Y16664D01* +X1057862Y16551D01* +X1057840Y16439D01* +X1057815Y16329D01* +X1057787Y16219D01* +X1057754Y16110D01* +X1057718Y16002D01* +X1057678Y15895D01* +X1057634Y15790D01* +X1057587Y15687D01* +X1057537Y15585D01* +X1057483Y15485D01* +X1057425Y15387D01* +X1057364Y15291D01* +X1057301Y15197D01* +X1057233Y15105D01* +X1057163Y15015D01* +X1057090Y14929D01* +X1057014Y14844D01* +X1056935Y14762D01* +X1056853Y14683D01* +X1056768Y14607D01* +X1056682Y14534D01* +X1056592Y14464D01* +X1056500Y14396D01* +X1056406Y14333D01* +X1056310Y14272D01* +X1056212Y14214D01* +X1056112Y14160D01* +X1056010Y14110D01* +X1055907Y14063D01* +X1055802Y14019D01* +X1055695Y13979D01* +X1055587Y13943D01* +X1055478Y13910D01* +X1055368Y13882D01* +X1055258Y13857D01* +X1055146Y13835D01* +X1055033Y13818D01* +X1054921Y13804D01* +X1054807Y13795D01* +X1054694Y13789D01* +X1054580Y13787D01* +X1064377Y5461D02* +X1069372Y20447D01* +X1074367Y5461D01* +X1073118Y9208D02* +X1065625Y9208D01* +X1080008Y5461D02* +X1085003Y20447D01* +X1089998Y5461D01* +X1088750Y9208D02* +X1081257Y9208D01* +X1095639Y5461D02* +X1100634Y20447D01* +X1105630Y5461D01* +X1104381Y9208D02* +X1096888Y9208D01* +X1112624Y5461D02* +X1112624Y20447D01* +X1112624Y13787D02* +X1120949Y13787D01* +X1120949Y20447D02* +X1120949Y5461D01* +X1133250Y5461D02* +X1133364Y5463D01* +X1133477Y5469D01* +X1133591Y5478D01* +X1133703Y5492D01* +X1133816Y5509D01* +X1133928Y5531D01* +X1134038Y5556D01* +X1134148Y5584D01* +X1134257Y5617D01* +X1134365Y5653D01* +X1134472Y5693D01* +X1134577Y5737D01* +X1134680Y5784D01* +X1134782Y5834D01* +X1134882Y5888D01* +X1134980Y5946D01* +X1135076Y6007D01* +X1135170Y6071D01* +X1135262Y6138D01* +X1135352Y6208D01* +X1135439Y6281D01* +X1135523Y6357D01* +X1135605Y6436D01* +X1135684Y6518D01* +X1135760Y6603D01* +X1135833Y6689D01* +X1135903Y6779D01* +X1135971Y6871D01* +X1136034Y6965D01* +X1136095Y7061D01* +X1136153Y7159D01* +X1136207Y7259D01* +X1136257Y7361D01* +X1136304Y7464D01* +X1136348Y7569D01* +X1136388Y7676D01* +X1136424Y7784D01* +X1136457Y7893D01* +X1136485Y8003D01* +X1136510Y8113D01* +X1136532Y8225D01* +X1136549Y8338D01* +X1136563Y8450D01* +X1136572Y8564D01* +X1136578Y8677D01* +X1136580Y8791D01* +X1133250Y5461D02* +X1133082Y5463D01* +X1132914Y5469D01* +X1132746Y5479D01* +X1132578Y5493D01* +X1132410Y5511D01* +X1132244Y5533D01* +X1132077Y5559D01* +X1131912Y5589D01* +X1131747Y5623D01* +X1131583Y5661D01* +X1131420Y5703D01* +X1131258Y5749D01* +X1131097Y5799D01* +X1130937Y5852D01* +X1130779Y5909D01* +X1130622Y5970D01* +X1130467Y6035D01* +X1130313Y6103D01* +X1130161Y6176D01* +X1130011Y6251D01* +X1129862Y6331D01* +X1129715Y6413D01* +X1129571Y6500D01* +X1129429Y6589D01* +X1129288Y6683D01* +X1129150Y6779D01* +X1129015Y6879D01* +X1128882Y6982D01* +X1128751Y7088D01* +X1128623Y7197D01* +X1128497Y7309D01* +X1128375Y7424D01* +X1128255Y7542D01* +X1128672Y17117D02* +X1128674Y17231D01* +X1128680Y17344D01* +X1128689Y17458D01* +X1128703Y17570D01* +X1128720Y17683D01* +X1128742Y17795D01* +X1128767Y17905D01* +X1128795Y18015D01* +X1128828Y18124D01* +X1128864Y18232D01* +X1128904Y18339D01* +X1128948Y18444D01* +X1128995Y18547D01* +X1129045Y18649D01* +X1129099Y18749D01* +X1129157Y18847D01* +X1129218Y18943D01* +X1129281Y19037D01* +X1129349Y19129D01* +X1129419Y19219D01* +X1129492Y19305D01* +X1129568Y19390D01* +X1129647Y19472D01* +X1129729Y19551D01* +X1129814Y19627D01* +X1129900Y19700D01* +X1129990Y19770D01* +X1130082Y19838D01* +X1130176Y19901D01* +X1130272Y19962D01* +X1130370Y20020D01* +X1130470Y20074D01* +X1130572Y20124D01* +X1130675Y20171D01* +X1130780Y20215D01* +X1130887Y20255D01* +X1130995Y20291D01* +X1131104Y20324D01* +X1131214Y20352D01* +X1131324Y20377D01* +X1131436Y20399D01* +X1131549Y20416D01* +X1131661Y20430D01* +X1131775Y20439D01* +X1131888Y20445D01* +X1132002Y20447D01* +X1132157Y20445D01* +X1132311Y20439D01* +X1132465Y20430D01* +X1132619Y20416D01* +X1132773Y20399D01* +X1132926Y20378D01* +X1133078Y20354D01* +X1133230Y20325D01* +X1133381Y20293D01* +X1133532Y20257D01* +X1133681Y20217D01* +X1133829Y20174D01* +X1133977Y20127D01* +X1134123Y20076D01* +X1134267Y20022D01* +X1134411Y19964D01* +X1134552Y19902D01* +X1134693Y19838D01* +X1134831Y19769D01* +X1134968Y19698D01* +X1135103Y19622D01* +X1135236Y19544D01* +X1135368Y19462D01* +X1135497Y19377D01* +X1135624Y19289D01* +X1135748Y19198D01* +X1130337Y14203D02* +X1130240Y14262D01* +X1130146Y14325D01* +X1130053Y14390D01* +X1129963Y14459D01* +X1129875Y14530D01* +X1129790Y14605D01* +X1129707Y14682D01* +X1129627Y14762D01* +X1129549Y14844D01* +X1129475Y14930D01* +X1129403Y15017D01* +X1129334Y15107D01* +X1129268Y15199D01* +X1129206Y15294D01* +X1129146Y15390D01* +X1129090Y15488D01* +X1129037Y15589D01* +X1128988Y15691D01* +X1128942Y15794D01* +X1128899Y15899D01* +X1128860Y16005D01* +X1128824Y16113D01* +X1128793Y16222D01* +X1128765Y16331D01* +X1128740Y16442D01* +X1128719Y16553D01* +X1128702Y16665D01* +X1128689Y16778D01* +X1128680Y16891D01* +X1128674Y17004D01* +X1128672Y17117D01* +X1134915Y11705D02* +X1135012Y11646D01* +X1135106Y11583D01* +X1135199Y11518D01* +X1135289Y11449D01* +X1135377Y11378D01* +X1135462Y11303D01* +X1135545Y11226D01* +X1135625Y11146D01* +X1135703Y11064D01* +X1135777Y10978D01* +X1135849Y10891D01* +X1135918Y10801D01* +X1135984Y10709D01* +X1136046Y10614D01* +X1136106Y10518D01* +X1136162Y10420D01* +X1136215Y10319D01* +X1136264Y10217D01* +X1136311Y10114D01* +X1136353Y10009D01* +X1136392Y9903D01* +X1136428Y9795D01* +X1136459Y9686D01* +X1136487Y9577D01* +X1136512Y9466D01* +X1136533Y9355D01* +X1136550Y9243D01* +X1136563Y9130D01* +X1136572Y9017D01* +X1136578Y8904D01* +X1136580Y8791D01* +X1134916Y11705D02* +X1130336Y14203D01* +X1143575Y11289D02* +X1153565Y11289D01* +X1161920Y13787D02* +X1166083Y13787D01* +X1166211Y13785D01* +X1166339Y13779D01* +X1166467Y13769D01* +X1166595Y13755D01* +X1166722Y13738D01* +X1166848Y13716D01* +X1166974Y13691D01* +X1167098Y13661D01* +X1167222Y13628D01* +X1167345Y13591D01* +X1167467Y13550D01* +X1167587Y13506D01* +X1167706Y13458D01* +X1167823Y13406D01* +X1167939Y13351D01* +X1168052Y13292D01* +X1168165Y13229D01* +X1168275Y13163D01* +X1168382Y13094D01* +X1168488Y13022D01* +X1168592Y12946D01* +X1168693Y12867D01* +X1168792Y12785D01* +X1168888Y12700D01* +X1168981Y12613D01* +X1169072Y12522D01* +X1169159Y12429D01* +X1169244Y12333D01* +X1169326Y12234D01* +X1169405Y12133D01* +X1169481Y12029D01* +X1169553Y11923D01* +X1169622Y11816D01* +X1169688Y11705D01* +X1169751Y11593D01* +X1169810Y11480D01* +X1169865Y11364D01* +X1169917Y11247D01* +X1169965Y11128D01* +X1170009Y11008D01* +X1170050Y10886D01* +X1170087Y10763D01* +X1170120Y10639D01* +X1170150Y10515D01* +X1170175Y10389D01* +X1170197Y10263D01* +X1170214Y10136D01* +X1170228Y10008D01* +X1170238Y9880D01* +X1170244Y9752D01* +X1170246Y9624D01* +X1170244Y9496D01* +X1170238Y9368D01* +X1170228Y9240D01* +X1170214Y9112D01* +X1170197Y8985D01* +X1170175Y8859D01* +X1170150Y8733D01* +X1170120Y8609D01* +X1170087Y8485D01* +X1170050Y8362D01* +X1170009Y8240D01* +X1169965Y8120D01* +X1169917Y8001D01* +X1169865Y7884D01* +X1169810Y7768D01* +X1169751Y7655D01* +X1169688Y7542D01* +X1169622Y7432D01* +X1169553Y7325D01* +X1169481Y7219D01* +X1169405Y7115D01* +X1169326Y7014D01* +X1169244Y6915D01* +X1169159Y6819D01* +X1169072Y6726D01* +X1168981Y6635D01* +X1168888Y6548D01* +X1168792Y6463D01* +X1168693Y6381D01* +X1168592Y6302D01* +X1168488Y6226D01* +X1168382Y6154D01* +X1168275Y6085D01* +X1168165Y6019D01* +X1168052Y5956D01* +X1167939Y5897D01* +X1167823Y5842D01* +X1167706Y5790D01* +X1167587Y5742D01* +X1167467Y5698D01* +X1167345Y5657D01* +X1167222Y5620D01* +X1167098Y5587D01* +X1166974Y5557D01* +X1166848Y5532D01* +X1166722Y5510D01* +X1166595Y5493D01* +X1166467Y5479D01* +X1166339Y5469D01* +X1166211Y5463D01* +X1166083Y5461D01* +X1161920Y5461D01* +X1161920Y20447D01* +X1166083Y20447D01* +X1166197Y20445D01* +X1166310Y20439D01* +X1166424Y20430D01* +X1166536Y20416D01* +X1166649Y20399D01* +X1166761Y20377D01* +X1166871Y20352D01* +X1166981Y20324D01* +X1167090Y20291D01* +X1167198Y20255D01* +X1167305Y20215D01* +X1167410Y20171D01* +X1167513Y20124D01* +X1167615Y20074D01* +X1167715Y20020D01* +X1167813Y19962D01* +X1167909Y19901D01* +X1168003Y19838D01* +X1168095Y19770D01* +X1168185Y19700D01* +X1168271Y19627D01* +X1168356Y19551D01* +X1168438Y19472D01* +X1168517Y19390D01* +X1168593Y19305D01* +X1168666Y19219D01* +X1168736Y19129D01* +X1168804Y19037D01* +X1168867Y18943D01* +X1168928Y18847D01* +X1168986Y18749D01* +X1169040Y18649D01* +X1169090Y18547D01* +X1169137Y18444D01* +X1169181Y18339D01* +X1169221Y18232D01* +X1169257Y18124D01* +X1169290Y18015D01* +X1169318Y17905D01* +X1169343Y17795D01* +X1169365Y17683D01* +X1169382Y17570D01* +X1169396Y17458D01* +X1169405Y17344D01* +X1169411Y17231D01* +X1169413Y17117D01* +X1169411Y17003D01* +X1169405Y16890D01* +X1169396Y16776D01* +X1169382Y16664D01* +X1169365Y16551D01* +X1169343Y16439D01* +X1169318Y16329D01* +X1169290Y16219D01* +X1169257Y16110D01* +X1169221Y16002D01* +X1169181Y15895D01* +X1169137Y15790D01* +X1169090Y15687D01* +X1169040Y15585D01* +X1168986Y15485D01* +X1168928Y15387D01* +X1168867Y15291D01* +X1168804Y15197D01* +X1168736Y15105D01* +X1168666Y15015D01* +X1168593Y14929D01* +X1168517Y14844D01* +X1168438Y14762D01* +X1168356Y14683D01* +X1168271Y14607D01* +X1168185Y14534D01* +X1168095Y14464D01* +X1168003Y14396D01* +X1167909Y14333D01* +X1167813Y14272D01* +X1167715Y14214D01* +X1167615Y14160D01* +X1167513Y14110D01* +X1167410Y14063D01* +X1167305Y14019D01* +X1167198Y13979D01* +X1167090Y13943D01* +X1166981Y13910D01* +X1166871Y13882D01* +X1166761Y13857D01* +X1166649Y13835D01* +X1166536Y13818D01* +X1166424Y13804D01* +X1166310Y13795D01* +X1166197Y13789D01* +X1166083Y13787D01* +X1177371Y20447D02* +X1177371Y5461D01* +X1177371Y20447D02* +X1181534Y20447D01* +X1181662Y20445D01* +X1181790Y20439D01* +X1181918Y20429D01* +X1182046Y20415D01* +X1182173Y20398D01* +X1182299Y20376D01* +X1182425Y20351D01* +X1182549Y20321D01* +X1182673Y20288D01* +X1182796Y20251D01* +X1182918Y20210D01* +X1183038Y20166D01* +X1183157Y20118D01* +X1183274Y20066D01* +X1183390Y20011D01* +X1183503Y19952D01* +X1183616Y19889D01* +X1183726Y19823D01* +X1183833Y19754D01* +X1183939Y19682D01* +X1184043Y19606D01* +X1184144Y19527D01* +X1184243Y19445D01* +X1184339Y19360D01* +X1184432Y19273D01* +X1184523Y19182D01* +X1184610Y19089D01* +X1184695Y18993D01* +X1184777Y18894D01* +X1184856Y18793D01* +X1184932Y18689D01* +X1185004Y18583D01* +X1185073Y18476D01* +X1185139Y18365D01* +X1185202Y18253D01* +X1185261Y18140D01* +X1185316Y18024D01* +X1185368Y17907D01* +X1185416Y17788D01* +X1185460Y17668D01* +X1185501Y17546D01* +X1185538Y17423D01* +X1185571Y17299D01* +X1185601Y17175D01* +X1185626Y17049D01* +X1185648Y16923D01* +X1185665Y16796D01* +X1185679Y16668D01* +X1185689Y16540D01* +X1185695Y16412D01* +X1185697Y16284D01* +X1185695Y16156D01* +X1185689Y16028D01* +X1185679Y15900D01* +X1185665Y15772D01* +X1185648Y15645D01* +X1185626Y15519D01* +X1185601Y15393D01* +X1185571Y15269D01* +X1185538Y15145D01* +X1185501Y15022D01* +X1185460Y14900D01* +X1185416Y14780D01* +X1185368Y14661D01* +X1185316Y14544D01* +X1185261Y14428D01* +X1185202Y14315D01* +X1185139Y14202D01* +X1185073Y14092D01* +X1185004Y13985D01* +X1184932Y13879D01* +X1184856Y13775D01* +X1184777Y13674D01* +X1184695Y13575D01* +X1184610Y13479D01* +X1184523Y13386D01* +X1184432Y13295D01* +X1184339Y13208D01* +X1184243Y13123D01* +X1184144Y13041D01* +X1184043Y12962D01* +X1183939Y12886D01* +X1183833Y12814D01* +X1183726Y12745D01* +X1183616Y12679D01* +X1183503Y12616D01* +X1183390Y12557D01* +X1183274Y12502D01* +X1183157Y12450D01* +X1183038Y12402D01* +X1182918Y12358D01* +X1182796Y12317D01* +X1182673Y12280D01* +X1182549Y12247D01* +X1182425Y12217D01* +X1182299Y12192D01* +X1182173Y12170D01* +X1182046Y12153D01* +X1181918Y12139D01* +X1181790Y12129D01* +X1181662Y12123D01* +X1181534Y12121D01* +X1177371Y12121D01* +X1182366Y12121D02* +X1185697Y5461D01* +X1193385Y5461D02* +X1193385Y20447D01* +X1201711Y5461D01* +X1201711Y20447D01* +X1210786Y18366D02* +X1210660Y18099D01* +X1210540Y17830D01* +X1210427Y17557D01* +X1210320Y17283D01* +X1210220Y17005D01* +X1210127Y16726D01* +X1210040Y16444D01* +X1209960Y16160D01* +X1209887Y15874D01* +X1209821Y15587D01* +X1209762Y15298D01* +X1209709Y15008D01* +X1209663Y14717D01* +X1209625Y14425D01* +X1209593Y14132D01* +X1209569Y13838D01* +X1209551Y13543D01* +X1209541Y13249D01* +X1209537Y12954D01* +X1210786Y18366D02* +X1210824Y18469D01* +X1210865Y18570D01* +X1210909Y18669D01* +X1210957Y18768D01* +X1211008Y18864D01* +X1211063Y18958D01* +X1211121Y19051D01* +X1211182Y19141D01* +X1211247Y19229D01* +X1211314Y19315D01* +X1211385Y19398D01* +X1211458Y19479D01* +X1211534Y19557D01* +X1211613Y19633D01* +X1211695Y19705D01* +X1211779Y19775D01* +X1211866Y19841D01* +X1211954Y19905D01* +X1212045Y19965D01* +X1212139Y20022D01* +X1212234Y20076D01* +X1212331Y20126D01* +X1212429Y20173D01* +X1212529Y20216D01* +X1212631Y20256D01* +X1212734Y20292D01* +X1212838Y20324D01* +X1212944Y20353D01* +X1213050Y20378D01* +X1213157Y20399D01* +X1213265Y20416D01* +X1213373Y20430D01* +X1213482Y20439D01* +X1213591Y20445D01* +X1213700Y20447D01* +X1213809Y20445D01* +X1213918Y20439D01* +X1214027Y20430D01* +X1214135Y20416D01* +X1214243Y20399D01* +X1214350Y20378D01* +X1214456Y20353D01* +X1214562Y20324D01* +X1214666Y20292D01* +X1214769Y20256D01* +X1214871Y20216D01* +X1214971Y20173D01* +X1215069Y20126D01* +X1215166Y20076D01* +X1215261Y20022D01* +X1215355Y19965D01* +X1215446Y19905D01* +X1215534Y19841D01* +X1215621Y19775D01* +X1215705Y19705D01* +X1215787Y19633D01* +X1215866Y19557D01* +X1215942Y19479D01* +X1216015Y19398D01* +X1216086Y19315D01* +X1216153Y19229D01* +X1216218Y19141D01* +X1216279Y19051D01* +X1216337Y18958D01* +X1216392Y18864D01* +X1216443Y18768D01* +X1216491Y18669D01* +X1216535Y18570D01* +X1216576Y18469D01* +X1216614Y18366D01* +X1216740Y18099D01* +X1216860Y17830D01* +X1216973Y17557D01* +X1217080Y17283D01* +X1217180Y17005D01* +X1217273Y16726D01* +X1217360Y16444D01* +X1217440Y16160D01* +X1217513Y15874D01* +X1217579Y15587D01* +X1217638Y15298D01* +X1217691Y15008D01* +X1217737Y14717D01* +X1217775Y14425D01* +X1217807Y14132D01* +X1217831Y13838D01* +X1217849Y13543D01* +X1217859Y13249D01* +X1217863Y12954D01* +X1209537Y12954D02* +X1209541Y12659D01* +X1209551Y12365D01* +X1209569Y12070D01* +X1209593Y11776D01* +X1209625Y11483D01* +X1209663Y11191D01* +X1209709Y10900D01* +X1209762Y10610D01* +X1209821Y10321D01* +X1209887Y10034D01* +X1209960Y9748D01* +X1210040Y9464D01* +X1210127Y9182D01* +X1210220Y8903D01* +X1210320Y8625D01* +X1210427Y8351D01* +X1210540Y8078D01* +X1210660Y7809D01* +X1210786Y7542D01* +X1210824Y7439D01* +X1210865Y7338D01* +X1210909Y7239D01* +X1210957Y7140D01* +X1211008Y7044D01* +X1211063Y6950D01* +X1211121Y6857D01* +X1211182Y6767D01* +X1211247Y6679D01* +X1211314Y6593D01* +X1211385Y6510D01* +X1211458Y6429D01* +X1211534Y6351D01* +X1211613Y6275D01* +X1211695Y6203D01* +X1211779Y6133D01* +X1211866Y6067D01* +X1211954Y6003D01* +X1212045Y5943D01* +X1212139Y5886D01* +X1212234Y5832D01* +X1212331Y5782D01* +X1212429Y5735D01* +X1212529Y5692D01* +X1212631Y5652D01* +X1212734Y5616D01* +X1212838Y5584D01* +X1212944Y5555D01* +X1213050Y5530D01* +X1213157Y5509D01* +X1213265Y5492D01* +X1213373Y5478D01* +X1213482Y5469D01* +X1213591Y5463D01* +X1213700Y5461D01* +X1216614Y7542D02* +X1216740Y7809D01* +X1216860Y8078D01* +X1216973Y8351D01* +X1217080Y8625D01* +X1217180Y8903D01* +X1217273Y9182D01* +X1217360Y9464D01* +X1217440Y9748D01* +X1217513Y10034D01* +X1217579Y10321D01* +X1217638Y10610D01* +X1217691Y10900D01* +X1217737Y11191D01* +X1217775Y11483D01* +X1217807Y11776D01* +X1217831Y12070D01* +X1217849Y12365D01* +X1217859Y12659D01* +X1217863Y12954D01* +X1216614Y7542D02* +X1216576Y7439D01* +X1216535Y7338D01* +X1216491Y7239D01* +X1216443Y7140D01* +X1216392Y7044D01* +X1216337Y6950D01* +X1216279Y6857D01* +X1216218Y6767D01* +X1216153Y6679D01* +X1216086Y6593D01* +X1216015Y6510D01* +X1215942Y6429D01* +X1215866Y6351D01* +X1215787Y6275D01* +X1215705Y6203D01* +X1215621Y6133D01* +X1215534Y6067D01* +X1215446Y6003D01* +X1215354Y5943D01* +X1215261Y5886D01* +X1215166Y5832D01* +X1215069Y5782D01* +X1214971Y5735D01* +X1214871Y5692D01* +X1214769Y5652D01* +X1214666Y5616D01* +X1214562Y5584D01* +X1214456Y5555D01* +X1214350Y5530D01* +X1214243Y5509D01* +X1214135Y5492D01* +X1214027Y5478D01* +X1213918Y5469D01* +X1213809Y5463D01* +X1213700Y5461D01* +X1210370Y8791D02* +X1217031Y17117D01* +X1225169Y17117D02* +X1229332Y20447D01* +X1229332Y5461D01* +X1233494Y5461D02* +X1225169Y5461D01* +X1241010Y11289D02* +X1251000Y11289D01* +X1259036Y5461D02* +X1259036Y20447D01* +X1263199Y20447D01* +X1263327Y20445D01* +X1263455Y20439D01* +X1263583Y20429D01* +X1263711Y20415D01* +X1263838Y20398D01* +X1263964Y20376D01* +X1264090Y20351D01* +X1264214Y20321D01* +X1264338Y20288D01* +X1264461Y20251D01* +X1264583Y20210D01* +X1264703Y20166D01* +X1264822Y20118D01* +X1264939Y20066D01* +X1265055Y20011D01* +X1265168Y19952D01* +X1265281Y19889D01* +X1265391Y19823D01* +X1265498Y19754D01* +X1265604Y19682D01* +X1265708Y19606D01* +X1265809Y19527D01* +X1265908Y19445D01* +X1266004Y19360D01* +X1266097Y19273D01* +X1266188Y19182D01* +X1266275Y19089D01* +X1266360Y18993D01* +X1266442Y18894D01* +X1266521Y18793D01* +X1266597Y18689D01* +X1266669Y18583D01* +X1266738Y18476D01* +X1266804Y18366D01* +X1266867Y18253D01* +X1266926Y18140D01* +X1266981Y18024D01* +X1267033Y17907D01* +X1267081Y17788D01* +X1267125Y17668D01* +X1267166Y17546D01* +X1267203Y17423D01* +X1267236Y17299D01* +X1267266Y17175D01* +X1267291Y17049D01* +X1267313Y16923D01* +X1267330Y16796D01* +X1267344Y16668D01* +X1267354Y16540D01* +X1267360Y16412D01* +X1267362Y16284D01* +X1267362Y9624D01* +X1267360Y9496D01* +X1267354Y9368D01* +X1267344Y9240D01* +X1267330Y9112D01* +X1267313Y8985D01* +X1267291Y8859D01* +X1267266Y8733D01* +X1267236Y8609D01* +X1267203Y8485D01* +X1267166Y8362D01* +X1267125Y8240D01* +X1267081Y8120D01* +X1267033Y8001D01* +X1266981Y7884D01* +X1266926Y7768D01* +X1266867Y7655D01* +X1266804Y7542D01* +X1266738Y7432D01* +X1266669Y7325D01* +X1266597Y7219D01* +X1266521Y7115D01* +X1266442Y7014D01* +X1266360Y6915D01* +X1266275Y6819D01* +X1266188Y6726D01* +X1266097Y6635D01* +X1266004Y6548D01* +X1265908Y6463D01* +X1265809Y6381D01* +X1265708Y6302D01* +X1265604Y6226D01* +X1265498Y6154D01* +X1265391Y6085D01* +X1265281Y6019D01* +X1265168Y5956D01* +X1265055Y5897D01* +X1264939Y5842D01* +X1264822Y5790D01* +X1264703Y5742D01* +X1264583Y5698D01* +X1264461Y5657D01* +X1264338Y5620D01* +X1264214Y5587D01* +X1264090Y5557D01* +X1263964Y5532D01* +X1263838Y5510D01* +X1263711Y5493D01* +X1263583Y5479D01* +X1263455Y5469D01* +X1263327Y5463D01* +X1263199Y5461D01* +X1259036Y5461D01* +D11* +X557022Y197104D02* +X554736Y194818D01* +X557022Y197104D02* +X573786Y197104D01* +X573786Y220980D01* +X578866Y226060D01* +X579628Y193802D02* +X577596Y191770D01* +X572008Y191770D01* +X714502Y154178D02* +X714502Y122682D01* +X725932Y111252D01* +X629158Y194818D02* +X629158Y197612D01* +X629158Y194818D02* +X659384Y194818D01* +X659384Y197358D01* +X643890Y194564D02* +X643890Y184150D01* +X668274Y159766D01* +X671576Y159766D01* +D13* +X246380Y353060D03* +D14* +X251968Y331996D02* +X251968Y330077D01* +X251966Y329991D01* +X251960Y329905D01* +X251951Y329819D01* +X251937Y329734D01* +X251920Y329650D01* +X251899Y329566D01* +X251874Y329484D01* +X251846Y329403D01* +X251814Y329323D01* +X251778Y329244D01* +X251739Y329168D01* +X251696Y329093D01* +X251651Y329020D01* +X251602Y328949D01* +X251549Y328881D01* +X251494Y328814D01* +X251436Y328751D01* +X251375Y328690D01* +X251312Y328632D01* +X251245Y328577D01* +X251177Y328525D01* +X251106Y328475D01* +X251033Y328430D01* +X250958Y328387D01* +X250882Y328348D01* +X250803Y328312D01* +X250723Y328280D01* +X250642Y328252D01* +X250560Y328227D01* +X250476Y328206D01* +X250392Y328189D01* +X250307Y328175D01* +X250221Y328166D01* +X250135Y328160D01* +X250049Y328158D01* +X245251Y328158D01* +X245165Y328160D01* +X245079Y328166D01* +X244993Y328175D01* +X244908Y328189D01* +X244824Y328206D01* +X244740Y328227D01* +X244658Y328252D01* +X244577Y328280D01* +X244497Y328312D01* +X244418Y328348D01* +X244342Y328387D01* +X244267Y328430D01* +X244194Y328475D01* +X244123Y328524D01* +X244055Y328577D01* +X243988Y328632D01* +X243925Y328690D01* +X243864Y328751D01* +X243806Y328814D01* +X243751Y328881D01* +X243699Y328949D01* +X243649Y329020D01* +X243604Y329093D01* +X243561Y329168D01* +X243522Y329244D01* +X243486Y329323D01* +X243454Y329403D01* +X243426Y329484D01* +X243401Y329566D01* +X243380Y329650D01* +X243363Y329734D01* +X243349Y329819D01* +X243340Y329905D01* +X243334Y329991D01* +X243332Y330077D01* +X243332Y331996D01* +X248130Y337735D02* +X248130Y340614D01* +X248130Y337735D02* +X248128Y337649D01* +X248122Y337563D01* +X248113Y337477D01* +X248099Y337392D01* +X248082Y337308D01* +X248061Y337224D01* +X248036Y337142D01* +X248008Y337061D01* +X247976Y336981D01* +X247940Y336902D01* +X247901Y336826D01* +X247858Y336751D01* +X247813Y336678D01* +X247764Y336607D01* +X247711Y336539D01* +X247656Y336472D01* +X247598Y336409D01* +X247537Y336348D01* +X247474Y336290D01* +X247407Y336235D01* +X247339Y336183D01* +X247268Y336133D01* +X247195Y336088D01* +X247120Y336045D01* +X247044Y336006D01* +X246965Y335970D01* +X246885Y335938D01* +X246804Y335910D01* +X246722Y335885D01* +X246638Y335864D01* +X246554Y335847D01* +X246469Y335833D01* +X246383Y335824D01* +X246297Y335818D01* +X246211Y335816D01* +X245731Y335816D01* +X245634Y335818D01* +X245538Y335824D01* +X245442Y335833D01* +X245346Y335847D01* +X245251Y335864D01* +X245157Y335886D01* +X245064Y335911D01* +X244971Y335939D01* +X244880Y335972D01* +X244791Y336008D01* +X244703Y336048D01* +X244616Y336091D01* +X244531Y336137D01* +X244449Y336187D01* +X244368Y336241D01* +X244290Y336297D01* +X244214Y336357D01* +X244140Y336419D01* +X244069Y336485D01* +X244001Y336553D01* +X243935Y336624D01* +X243873Y336698D01* +X243813Y336774D01* +X243757Y336852D01* +X243703Y336933D01* +X243653Y337016D01* +X243607Y337100D01* +X243564Y337187D01* +X243524Y337275D01* +X243488Y337364D01* +X243455Y337455D01* +X243427Y337548D01* +X243402Y337641D01* +X243380Y337735D01* +X243363Y337830D01* +X243349Y337926D01* +X243340Y338022D01* +X243334Y338118D01* +X243332Y338215D01* +X243334Y338312D01* +X243340Y338408D01* +X243349Y338504D01* +X243363Y338600D01* +X243380Y338695D01* +X243402Y338789D01* +X243427Y338882D01* +X243455Y338975D01* +X243488Y339066D01* +X243524Y339155D01* +X243564Y339243D01* +X243607Y339330D01* +X243653Y339415D01* +X243703Y339497D01* +X243757Y339578D01* +X243813Y339656D01* +X243873Y339732D01* +X243935Y339806D01* +X244001Y339877D01* +X244069Y339945D01* +X244140Y340011D01* +X244214Y340073D01* +X244290Y340133D01* +X244368Y340189D01* +X244449Y340243D01* +X244532Y340293D01* +X244616Y340339D01* +X244703Y340382D01* +X244791Y340422D01* +X244880Y340458D01* +X244971Y340491D01* +X245064Y340519D01* +X245157Y340544D01* +X245251Y340566D01* +X245346Y340583D01* +X245442Y340597D01* +X245538Y340606D01* +X245634Y340612D01* +X245731Y340614D01* +X248130Y340614D01* +X248253Y340612D01* +X248376Y340606D01* +X248499Y340596D01* +X248621Y340582D01* +X248743Y340565D01* +X248864Y340543D01* +X248984Y340518D01* +X249104Y340488D01* +X249222Y340455D01* +X249339Y340418D01* +X249456Y340378D01* +X249570Y340334D01* +X249684Y340286D01* +X249795Y340234D01* +X249905Y340179D01* +X250013Y340120D01* +X250120Y340058D01* +X250224Y339993D01* +X250326Y339924D01* +X250426Y339852D01* +X250523Y339777D01* +X250618Y339698D01* +X250710Y339617D01* +X250800Y339533D01* +X250887Y339446D01* +X250971Y339356D01* +X251052Y339264D01* +X251131Y339169D01* +X251206Y339072D01* +X251278Y338972D01* +X251347Y338870D01* +X251412Y338766D01* +X251474Y338659D01* +X251533Y338551D01* +X251588Y338441D01* +X251640Y338330D01* +X251688Y338216D01* +X251732Y338102D01* +X251772Y337985D01* +X251809Y337868D01* +X251842Y337750D01* +X251872Y337630D01* +X251897Y337510D01* +X251919Y337389D01* +X251936Y337267D01* +X251950Y337145D01* +X251960Y337022D01* +X251966Y336899D01* +X251968Y336776D01* +D13* +X347980Y187960D03* +D14* +X363728Y183660D02* +X363728Y181741D01* +X363726Y181655D01* +X363720Y181569D01* +X363711Y181483D01* +X363697Y181398D01* +X363680Y181314D01* +X363659Y181230D01* +X363634Y181148D01* +X363606Y181067D01* +X363574Y180987D01* +X363538Y180908D01* +X363499Y180832D01* +X363456Y180757D01* +X363411Y180684D01* +X363362Y180613D01* +X363309Y180545D01* +X363254Y180478D01* +X363196Y180415D01* +X363135Y180354D01* +X363072Y180296D01* +X363005Y180241D01* +X362937Y180189D01* +X362866Y180139D01* +X362793Y180094D01* +X362718Y180051D01* +X362642Y180012D01* +X362563Y179976D01* +X362483Y179944D01* +X362402Y179916D01* +X362320Y179891D01* +X362236Y179870D01* +X362152Y179853D01* +X362067Y179839D01* +X361981Y179830D01* +X361895Y179824D01* +X361809Y179822D01* +X357011Y179822D01* +X356925Y179824D01* +X356839Y179830D01* +X356753Y179839D01* +X356668Y179853D01* +X356584Y179870D01* +X356500Y179891D01* +X356418Y179916D01* +X356337Y179944D01* +X356257Y179976D01* +X356178Y180012D01* +X356102Y180051D01* +X356027Y180094D01* +X355954Y180139D01* +X355883Y180188D01* +X355815Y180241D01* +X355748Y180296D01* +X355685Y180354D01* +X355624Y180415D01* +X355566Y180478D01* +X355511Y180545D01* +X355459Y180613D01* +X355409Y180684D01* +X355364Y180757D01* +X355321Y180832D01* +X355282Y180908D01* +X355246Y180987D01* +X355214Y181067D01* +X355186Y181148D01* +X355161Y181230D01* +X355140Y181314D01* +X355123Y181398D01* +X355109Y181483D01* +X355100Y181569D01* +X355094Y181655D01* +X355092Y181741D01* +X355092Y183660D01* +X355092Y190119D02* +X355094Y190211D01* +X355100Y190302D01* +X355109Y190393D01* +X355123Y190484D01* +X355140Y190574D01* +X355162Y190663D01* +X355187Y190751D01* +X355215Y190838D01* +X355248Y190924D01* +X355284Y191008D01* +X355323Y191091D01* +X355366Y191172D01* +X355413Y191251D01* +X355462Y191328D01* +X355515Y191403D01* +X355571Y191475D01* +X355630Y191545D01* +X355692Y191613D01* +X355757Y191678D01* +X355825Y191740D01* +X355895Y191799D01* +X355967Y191855D01* +X356042Y191908D01* +X356119Y191957D01* +X356198Y192004D01* +X356279Y192047D01* +X356362Y192086D01* +X356446Y192122D01* +X356532Y192155D01* +X356619Y192183D01* +X356707Y192208D01* +X356796Y192230D01* +X356886Y192247D01* +X356977Y192261D01* +X357068Y192270D01* +X357159Y192276D01* +X357251Y192278D01* +X355092Y190119D02* +X355094Y190016D01* +X355100Y189914D01* +X355109Y189812D01* +X355122Y189710D01* +X355139Y189609D01* +X355160Y189508D01* +X355184Y189409D01* +X355213Y189310D01* +X355244Y189213D01* +X355280Y189116D01* +X355318Y189021D01* +X355361Y188928D01* +X355407Y188836D01* +X355456Y188746D01* +X355508Y188658D01* +X355564Y188571D01* +X355623Y188487D01* +X355684Y188406D01* +X355749Y188326D01* +X355817Y188249D01* +X355888Y188174D01* +X355961Y188103D01* +X356037Y188034D01* +X356115Y187967D01* +X356196Y187904D01* +X356279Y187844D01* +X356364Y187787D01* +X356451Y187733D01* +X356541Y187682D01* +X356632Y187635D01* +X356724Y187591D01* +X356819Y187550D01* +X356914Y187513D01* +X357011Y187480D01* +X358930Y191558D02* +X358864Y191625D01* +X358795Y191689D01* +X358724Y191750D01* +X358650Y191808D01* +X358574Y191863D01* +X358496Y191915D01* +X358416Y191964D01* +X358334Y192010D01* +X358250Y192052D01* +X358164Y192091D01* +X358077Y192126D01* +X357989Y192157D01* +X357899Y192185D01* +X357809Y192210D01* +X357717Y192231D01* +X357625Y192248D01* +X357532Y192261D01* +X357439Y192270D01* +X357345Y192276D01* +X357251Y192278D01* +X358930Y191558D02* +X363728Y187480D01* +X363728Y192278D01* +X359890Y198543D02* +X359890Y201422D01* +X359890Y198543D02* +X359888Y198457D01* +X359882Y198371D01* +X359873Y198285D01* +X359859Y198200D01* +X359842Y198116D01* +X359821Y198032D01* +X359796Y197950D01* +X359768Y197869D01* +X359736Y197789D01* +X359700Y197710D01* +X359661Y197634D01* +X359618Y197559D01* +X359573Y197486D01* +X359524Y197415D01* +X359471Y197347D01* +X359416Y197280D01* +X359358Y197217D01* +X359297Y197156D01* +X359234Y197098D01* +X359167Y197043D01* +X359099Y196991D01* +X359028Y196941D01* +X358955Y196896D01* +X358880Y196853D01* +X358804Y196814D01* +X358725Y196778D01* +X358645Y196746D01* +X358564Y196718D01* +X358482Y196693D01* +X358398Y196672D01* +X358314Y196655D01* +X358229Y196641D01* +X358143Y196632D01* +X358057Y196626D01* +X357971Y196624D01* +X357491Y196624D01* +X357394Y196626D01* +X357298Y196632D01* +X357202Y196641D01* +X357106Y196655D01* +X357011Y196672D01* +X356917Y196694D01* +X356824Y196719D01* +X356731Y196747D01* +X356640Y196780D01* +X356551Y196816D01* +X356463Y196856D01* +X356376Y196899D01* +X356292Y196945D01* +X356209Y196995D01* +X356128Y197049D01* +X356050Y197105D01* +X355974Y197165D01* +X355900Y197227D01* +X355829Y197293D01* +X355761Y197361D01* +X355695Y197432D01* +X355633Y197506D01* +X355573Y197582D01* +X355517Y197660D01* +X355463Y197741D01* +X355413Y197824D01* +X355367Y197908D01* +X355324Y197995D01* +X355284Y198083D01* +X355248Y198172D01* +X355215Y198263D01* +X355187Y198356D01* +X355162Y198449D01* +X355140Y198543D01* +X355123Y198638D01* +X355109Y198734D01* +X355100Y198830D01* +X355094Y198926D01* +X355092Y199023D01* +X355094Y199120D01* +X355100Y199216D01* +X355109Y199312D01* +X355123Y199408D01* +X355140Y199503D01* +X355162Y199597D01* +X355187Y199690D01* +X355215Y199783D01* +X355248Y199874D01* +X355284Y199963D01* +X355324Y200051D01* +X355367Y200138D01* +X355413Y200223D01* +X355463Y200305D01* +X355517Y200386D01* +X355573Y200464D01* +X355633Y200540D01* +X355695Y200614D01* +X355761Y200685D01* +X355829Y200753D01* +X355900Y200819D01* +X355974Y200881D01* +X356050Y200941D01* +X356128Y200997D01* +X356209Y201051D01* +X356292Y201101D01* +X356376Y201147D01* +X356463Y201190D01* +X356551Y201230D01* +X356640Y201266D01* +X356731Y201299D01* +X356824Y201327D01* +X356917Y201352D01* +X357011Y201374D01* +X357106Y201391D01* +X357202Y201405D01* +X357298Y201414D01* +X357394Y201420D01* +X357491Y201422D01* +X359890Y201422D01* +X360013Y201420D01* +X360136Y201414D01* +X360259Y201404D01* +X360381Y201390D01* +X360503Y201373D01* +X360624Y201351D01* +X360744Y201326D01* +X360864Y201296D01* +X360982Y201263D01* +X361099Y201226D01* +X361216Y201186D01* +X361330Y201142D01* +X361444Y201094D01* +X361555Y201042D01* +X361665Y200987D01* +X361773Y200928D01* +X361880Y200866D01* +X361984Y200801D01* +X362086Y200732D01* +X362186Y200660D01* +X362283Y200585D01* +X362378Y200506D01* +X362470Y200425D01* +X362560Y200341D01* +X362647Y200254D01* +X362731Y200164D01* +X362812Y200072D01* +X362891Y199977D01* +X362966Y199880D01* +X363038Y199780D01* +X363107Y199678D01* +X363172Y199574D01* +X363234Y199467D01* +X363293Y199359D01* +X363348Y199249D01* +X363400Y199138D01* +X363448Y199024D01* +X363492Y198910D01* +X363532Y198793D01* +X363569Y198676D01* +X363602Y198558D01* +X363632Y198438D01* +X363657Y198318D01* +X363679Y198197D01* +X363696Y198075D01* +X363710Y197953D01* +X363720Y197830D01* +X363726Y197707D01* +X363728Y197584D01* +D13* +X497840Y254000D03* +D14* +X502158Y225316D02* +X502158Y223397D01* +X502156Y223311D01* +X502150Y223225D01* +X502141Y223139D01* +X502127Y223054D01* +X502110Y222970D01* +X502089Y222886D01* +X502064Y222804D01* +X502036Y222723D01* +X502004Y222643D01* +X501968Y222564D01* +X501929Y222488D01* +X501886Y222413D01* +X501841Y222340D01* +X501792Y222269D01* +X501739Y222201D01* +X501684Y222134D01* +X501626Y222071D01* +X501565Y222010D01* +X501502Y221952D01* +X501435Y221897D01* +X501367Y221845D01* +X501296Y221795D01* +X501223Y221750D01* +X501148Y221707D01* +X501072Y221668D01* +X500993Y221632D01* +X500913Y221600D01* +X500832Y221572D01* +X500750Y221547D01* +X500666Y221526D01* +X500582Y221509D01* +X500497Y221495D01* +X500411Y221486D01* +X500325Y221480D01* +X500239Y221478D01* +X495441Y221478D01* +X495355Y221480D01* +X495269Y221486D01* +X495183Y221495D01* +X495098Y221509D01* +X495014Y221526D01* +X494930Y221547D01* +X494848Y221572D01* +X494767Y221600D01* +X494687Y221632D01* +X494608Y221668D01* +X494532Y221707D01* +X494457Y221750D01* +X494384Y221795D01* +X494313Y221844D01* +X494245Y221897D01* +X494178Y221952D01* +X494115Y222010D01* +X494054Y222071D01* +X493996Y222134D01* +X493941Y222201D01* +X493889Y222269D01* +X493839Y222340D01* +X493794Y222413D01* +X493751Y222488D01* +X493712Y222564D01* +X493676Y222643D01* +X493644Y222723D01* +X493616Y222804D01* +X493591Y222886D01* +X493570Y222970D01* +X493553Y223054D01* +X493539Y223139D01* +X493530Y223225D01* +X493524Y223311D01* +X493522Y223397D01* +X493522Y225316D01* +X493522Y231775D02* +X493524Y231867D01* +X493530Y231958D01* +X493539Y232049D01* +X493553Y232140D01* +X493570Y232230D01* +X493592Y232319D01* +X493617Y232407D01* +X493645Y232494D01* +X493678Y232580D01* +X493714Y232664D01* +X493753Y232747D01* +X493796Y232828D01* +X493843Y232907D01* +X493892Y232984D01* +X493945Y233059D01* +X494001Y233131D01* +X494060Y233201D01* +X494122Y233269D01* +X494187Y233334D01* +X494255Y233396D01* +X494325Y233455D01* +X494397Y233511D01* +X494472Y233564D01* +X494549Y233613D01* +X494628Y233660D01* +X494709Y233703D01* +X494792Y233742D01* +X494876Y233778D01* +X494962Y233811D01* +X495049Y233839D01* +X495137Y233864D01* +X495226Y233886D01* +X495316Y233903D01* +X495407Y233917D01* +X495498Y233926D01* +X495589Y233932D01* +X495681Y233934D01* +X493522Y231775D02* +X493524Y231672D01* +X493530Y231570D01* +X493539Y231468D01* +X493552Y231366D01* +X493569Y231265D01* +X493590Y231164D01* +X493614Y231065D01* +X493643Y230966D01* +X493674Y230869D01* +X493710Y230772D01* +X493748Y230677D01* +X493791Y230584D01* +X493837Y230492D01* +X493886Y230402D01* +X493938Y230314D01* +X493994Y230227D01* +X494053Y230143D01* +X494114Y230062D01* +X494179Y229982D01* +X494247Y229905D01* +X494318Y229830D01* +X494391Y229759D01* +X494467Y229690D01* +X494545Y229623D01* +X494626Y229560D01* +X494709Y229500D01* +X494794Y229443D01* +X494881Y229389D01* +X494971Y229338D01* +X495062Y229291D01* +X495154Y229247D01* +X495249Y229206D01* +X495344Y229169D01* +X495441Y229136D01* +X497360Y233214D02* +X497294Y233281D01* +X497225Y233345D01* +X497154Y233406D01* +X497080Y233464D01* +X497004Y233519D01* +X496926Y233571D01* +X496846Y233620D01* +X496764Y233666D01* +X496680Y233708D01* +X496594Y233747D01* +X496507Y233782D01* +X496419Y233813D01* +X496329Y233841D01* +X496239Y233866D01* +X496147Y233887D01* +X496055Y233904D01* +X495962Y233917D01* +X495869Y233926D01* +X495775Y233932D01* +X495681Y233934D01* +X497360Y233214D02* +X502158Y229136D01* +X502158Y233934D01* +X497840Y238280D02* +X497670Y238282D01* +X497500Y238288D01* +X497331Y238298D01* +X497161Y238312D01* +X496992Y238331D01* +X496824Y238353D01* +X496656Y238379D01* +X496489Y238409D01* +X496323Y238444D01* +X496157Y238482D01* +X495992Y238524D01* +X495829Y238570D01* +X495667Y238620D01* +X495505Y238674D01* +X495346Y238731D01* +X495187Y238793D01* +X495030Y238858D01* +X494875Y238927D01* +X494721Y239000D01* +X494645Y239028D01* +X494570Y239060D01* +X494496Y239095D01* +X494424Y239133D01* +X494354Y239175D01* +X494286Y239220D01* +X494220Y239268D01* +X494156Y239319D01* +X494095Y239373D01* +X494036Y239429D01* +X493980Y239489D01* +X493927Y239550D01* +X493877Y239614D01* +X493829Y239681D01* +X493785Y239749D01* +X493744Y239820D01* +X493706Y239892D01* +X493672Y239966D01* +X493641Y240041D01* +X493613Y240118D01* +X493589Y240196D01* +X493569Y240275D01* +X493552Y240355D01* +X493539Y240435D01* +X493529Y240516D01* +X493524Y240597D01* +X493522Y240679D01* +X493524Y240761D01* +X493529Y240842D01* +X493539Y240923D01* +X493552Y241003D01* +X493569Y241083D01* +X493589Y241162D01* +X493613Y241240D01* +X493641Y241317D01* +X493672Y241392D01* +X493706Y241466D01* +X493744Y241538D01* +X493785Y241609D01* +X493829Y241677D01* +X493877Y241744D01* +X493927Y241808D01* +X493980Y241869D01* +X494036Y241929D01* +X494095Y241985D01* +X494156Y242039D01* +X494220Y242090D01* +X494286Y242138D01* +X494354Y242183D01* +X494424Y242225D01* +X494496Y242263D01* +X494570Y242298D01* +X494645Y242330D01* +X494721Y242358D01* +X494875Y242431D01* +X495030Y242500D01* +X495187Y242565D01* +X495346Y242627D01* +X495505Y242684D01* +X495667Y242738D01* +X495829Y242788D01* +X495992Y242834D01* +X496157Y242876D01* +X496323Y242914D01* +X496489Y242949D01* +X496656Y242979D01* +X496824Y243005D01* +X496992Y243027D01* +X497161Y243046D01* +X497331Y243060D01* +X497500Y243070D01* +X497670Y243076D01* +X497840Y243078D01* +X497840Y238280D02* +X498010Y238282D01* +X498180Y238288D01* +X498349Y238298D01* +X498519Y238312D01* +X498688Y238331D01* +X498856Y238353D01* +X499024Y238379D01* +X499191Y238409D01* +X499357Y238444D01* +X499523Y238482D01* +X499688Y238524D01* +X499851Y238570D01* +X500013Y238620D01* +X500175Y238674D01* +X500334Y238731D01* +X500493Y238793D01* +X500650Y238858D01* +X500805Y238927D01* +X500959Y239000D01* +X501035Y239028D01* +X501110Y239060D01* +X501184Y239095D01* +X501256Y239133D01* +X501326Y239175D01* +X501394Y239220D01* +X501460Y239268D01* +X501524Y239319D01* +X501585Y239373D01* +X501644Y239429D01* +X501700Y239489D01* +X501753Y239550D01* +X501803Y239614D01* +X501851Y239681D01* +X501895Y239749D01* +X501936Y239820D01* +X501974Y239892D01* +X502008Y239966D01* +X502039Y240041D01* +X502067Y240118D01* +X502091Y240196D01* +X502111Y240275D01* +X502128Y240355D01* +X502141Y240435D01* +X502151Y240516D01* +X502156Y240597D01* +X502158Y240679D01* +X500959Y242358D02* +X500805Y242431D01* +X500650Y242500D01* +X500493Y242565D01* +X500334Y242627D01* +X500175Y242684D01* +X500013Y242738D01* +X499851Y242788D01* +X499688Y242834D01* +X499523Y242876D01* +X499357Y242914D01* +X499191Y242949D01* +X499024Y242979D01* +X498856Y243005D01* +X498688Y243027D01* +X498519Y243046D01* +X498349Y243060D01* +X498180Y243070D01* +X498010Y243076D01* +X497840Y243078D01* +X500959Y242358D02* +X501035Y242330D01* +X501110Y242298D01* +X501184Y242263D01* +X501256Y242225D01* +X501326Y242183D01* +X501394Y242138D01* +X501460Y242090D01* +X501524Y242039D01* +X501585Y241985D01* +X501644Y241929D01* +X501700Y241869D01* +X501753Y241808D01* +X501803Y241744D01* +X501851Y241677D01* +X501895Y241609D01* +X501936Y241538D01* +X501974Y241466D01* +X502008Y241392D01* +X502039Y241317D01* +X502067Y241240D01* +X502091Y241162D01* +X502111Y241083D01* +X502128Y241003D01* +X502141Y240923D01* +X502151Y240842D01* +X502156Y240761D01* +X502158Y240679D01* +X500239Y238760D02* +X495441Y242598D01* +D15* +X576580Y71120D03* +D14* +X580644Y38118D02* +X580644Y36199D01* +X580642Y36113D01* +X580636Y36027D01* +X580627Y35941D01* +X580613Y35856D01* +X580596Y35772D01* +X580575Y35688D01* +X580550Y35606D01* +X580522Y35525D01* +X580490Y35445D01* +X580454Y35366D01* +X580415Y35290D01* +X580372Y35215D01* +X580327Y35142D01* +X580278Y35071D01* +X580225Y35003D01* +X580170Y34936D01* +X580112Y34873D01* +X580051Y34812D01* +X579988Y34754D01* +X579921Y34699D01* +X579853Y34647D01* +X579782Y34597D01* +X579709Y34552D01* +X579634Y34509D01* +X579558Y34470D01* +X579479Y34434D01* +X579399Y34402D01* +X579318Y34374D01* +X579236Y34349D01* +X579152Y34328D01* +X579068Y34311D01* +X578983Y34297D01* +X578897Y34288D01* +X578811Y34282D01* +X578725Y34280D01* +X573927Y34280D01* +X573841Y34282D01* +X573755Y34288D01* +X573669Y34297D01* +X573584Y34311D01* +X573500Y34328D01* +X573416Y34349D01* +X573334Y34374D01* +X573253Y34402D01* +X573173Y34434D01* +X573094Y34470D01* +X573018Y34509D01* +X572943Y34552D01* +X572870Y34597D01* +X572799Y34646D01* +X572731Y34699D01* +X572664Y34754D01* +X572601Y34812D01* +X572540Y34873D01* +X572482Y34936D01* +X572427Y35003D01* +X572375Y35071D01* +X572325Y35142D01* +X572280Y35215D01* +X572237Y35290D01* +X572198Y35366D01* +X572162Y35445D01* +X572130Y35525D01* +X572102Y35606D01* +X572077Y35688D01* +X572056Y35772D01* +X572039Y35856D01* +X572025Y35941D01* +X572016Y36027D01* +X572010Y36113D01* +X572008Y36199D01* +X572008Y38118D01* +X573927Y41938D02* +X572008Y44337D01* +X580644Y44337D01* +X580644Y41938D02* +X580644Y46736D01* +X573927Y51082D02* +X572008Y53481D01* +X580644Y53481D01* +X580644Y51082D02* +X580644Y55880D01* +D15* +X355600Y58420D03* +D14* +X345948Y49050D02* +X345948Y47131D01* +X345946Y47045D01* +X345940Y46959D01* +X345931Y46873D01* +X345917Y46788D01* +X345900Y46704D01* +X345879Y46620D01* +X345854Y46538D01* +X345826Y46457D01* +X345794Y46377D01* +X345758Y46298D01* +X345719Y46222D01* +X345676Y46147D01* +X345631Y46074D01* +X345582Y46003D01* +X345529Y45935D01* +X345474Y45868D01* +X345416Y45805D01* +X345355Y45744D01* +X345292Y45686D01* +X345225Y45631D01* +X345157Y45579D01* +X345086Y45529D01* +X345013Y45484D01* +X344938Y45441D01* +X344862Y45402D01* +X344783Y45366D01* +X344703Y45334D01* +X344622Y45306D01* +X344540Y45281D01* +X344456Y45260D01* +X344372Y45243D01* +X344287Y45229D01* +X344201Y45220D01* +X344115Y45214D01* +X344029Y45212D01* +X339231Y45212D01* +X339145Y45214D01* +X339059Y45220D01* +X338973Y45229D01* +X338888Y45243D01* +X338804Y45260D01* +X338720Y45281D01* +X338638Y45306D01* +X338557Y45334D01* +X338477Y45366D01* +X338398Y45402D01* +X338322Y45441D01* +X338247Y45484D01* +X338174Y45529D01* +X338103Y45578D01* +X338035Y45631D01* +X337968Y45686D01* +X337905Y45744D01* +X337844Y45805D01* +X337786Y45868D01* +X337731Y45935D01* +X337679Y46003D01* +X337629Y46074D01* +X337584Y46147D01* +X337541Y46222D01* +X337502Y46298D01* +X337466Y46377D01* +X337434Y46457D01* +X337406Y46538D01* +X337381Y46620D01* +X337360Y46704D01* +X337343Y46788D01* +X337329Y46873D01* +X337320Y46959D01* +X337314Y47045D01* +X337312Y47131D01* +X337312Y49050D01* +X339231Y52870D02* +X337312Y55269D01* +X345948Y55269D01* +X345948Y52870D02* +X345948Y57668D01* +X343549Y62014D02* +X343452Y62016D01* +X343356Y62022D01* +X343260Y62031D01* +X343164Y62045D01* +X343069Y62062D01* +X342975Y62084D01* +X342882Y62109D01* +X342789Y62137D01* +X342698Y62170D01* +X342609Y62206D01* +X342521Y62246D01* +X342434Y62289D01* +X342350Y62335D01* +X342267Y62385D01* +X342186Y62439D01* +X342108Y62495D01* +X342032Y62555D01* +X341958Y62617D01* +X341887Y62683D01* +X341819Y62751D01* +X341753Y62822D01* +X341691Y62896D01* +X341631Y62972D01* +X341575Y63050D01* +X341521Y63131D01* +X341471Y63214D01* +X341425Y63298D01* +X341382Y63385D01* +X341342Y63473D01* +X341306Y63562D01* +X341273Y63653D01* +X341245Y63746D01* +X341220Y63839D01* +X341198Y63933D01* +X341181Y64028D01* +X341167Y64124D01* +X341158Y64220D01* +X341152Y64316D01* +X341150Y64413D01* +X341152Y64510D01* +X341158Y64606D01* +X341167Y64702D01* +X341181Y64798D01* +X341198Y64893D01* +X341220Y64987D01* +X341245Y65080D01* +X341273Y65173D01* +X341306Y65264D01* +X341342Y65353D01* +X341382Y65441D01* +X341425Y65528D01* +X341471Y65613D01* +X341521Y65695D01* +X341575Y65776D01* +X341631Y65854D01* +X341691Y65930D01* +X341753Y66004D01* +X341819Y66075D01* +X341887Y66143D01* +X341958Y66209D01* +X342032Y66271D01* +X342108Y66331D01* +X342186Y66387D01* +X342267Y66441D01* +X342350Y66491D01* +X342434Y66537D01* +X342521Y66580D01* +X342609Y66620D01* +X342698Y66656D01* +X342789Y66689D01* +X342882Y66717D01* +X342975Y66742D01* +X343069Y66764D01* +X343164Y66781D01* +X343260Y66795D01* +X343356Y66804D01* +X343452Y66810D01* +X343549Y66812D01* +X343646Y66810D01* +X343742Y66804D01* +X343838Y66795D01* +X343934Y66781D01* +X344029Y66764D01* +X344123Y66742D01* +X344216Y66717D01* +X344309Y66689D01* +X344400Y66656D01* +X344489Y66620D01* +X344577Y66580D01* +X344664Y66537D01* +X344749Y66491D01* +X344831Y66441D01* +X344912Y66387D01* +X344990Y66331D01* +X345066Y66271D01* +X345140Y66209D01* +X345211Y66143D01* +X345279Y66075D01* +X345345Y66004D01* +X345407Y65930D01* +X345467Y65854D01* +X345523Y65776D01* +X345577Y65695D01* +X345627Y65612D01* +X345673Y65528D01* +X345716Y65441D01* +X345756Y65353D01* +X345792Y65264D01* +X345825Y65173D01* +X345853Y65080D01* +X345878Y64987D01* +X345900Y64893D01* +X345917Y64798D01* +X345931Y64702D01* +X345940Y64606D01* +X345946Y64510D01* +X345948Y64413D01* +X345946Y64316D01* +X345940Y64220D01* +X345931Y64124D01* +X345917Y64028D01* +X345900Y63933D01* +X345878Y63839D01* +X345853Y63746D01* +X345825Y63653D01* +X345792Y63562D01* +X345756Y63473D01* +X345716Y63385D01* +X345673Y63298D01* +X345627Y63213D01* +X345577Y63131D01* +X345523Y63050D01* +X345467Y62972D01* +X345407Y62896D01* +X345345Y62822D01* +X345279Y62751D01* +X345211Y62683D01* +X345140Y62617D01* +X345066Y62555D01* +X344990Y62495D01* +X344912Y62439D01* +X344831Y62385D01* +X344749Y62335D01* +X344664Y62289D01* +X344577Y62246D01* +X344489Y62206D01* +X344400Y62170D01* +X344309Y62137D01* +X344216Y62109D01* +X344123Y62084D01* +X344029Y62062D01* +X343934Y62045D01* +X343838Y62031D01* +X343742Y62022D01* +X343646Y62016D01* +X343549Y62014D01* +X339231Y62494D02* +X339145Y62496D01* +X339059Y62502D01* +X338973Y62511D01* +X338888Y62525D01* +X338804Y62542D01* +X338720Y62563D01* +X338638Y62588D01* +X338557Y62616D01* +X338477Y62648D01* +X338398Y62684D01* +X338322Y62723D01* +X338247Y62766D01* +X338174Y62811D01* +X338103Y62860D01* +X338035Y62913D01* +X337968Y62968D01* +X337905Y63026D01* +X337844Y63087D01* +X337786Y63150D01* +X337731Y63217D01* +X337678Y63285D01* +X337629Y63356D01* +X337584Y63429D01* +X337541Y63504D01* +X337502Y63580D01* +X337466Y63659D01* +X337434Y63739D01* +X337406Y63820D01* +X337381Y63902D01* +X337360Y63986D01* +X337343Y64070D01* +X337329Y64155D01* +X337320Y64241D01* +X337314Y64327D01* +X337312Y64413D01* +X337314Y64499D01* +X337320Y64585D01* +X337329Y64671D01* +X337343Y64756D01* +X337360Y64840D01* +X337381Y64924D01* +X337406Y65006D01* +X337434Y65087D01* +X337466Y65167D01* +X337502Y65246D01* +X337541Y65322D01* +X337584Y65397D01* +X337629Y65470D01* +X337678Y65541D01* +X337731Y65609D01* +X337786Y65676D01* +X337844Y65739D01* +X337905Y65800D01* +X337968Y65858D01* +X338035Y65913D01* +X338103Y65966D01* +X338174Y66015D01* +X338247Y66060D01* +X338322Y66103D01* +X338398Y66142D01* +X338477Y66178D01* +X338557Y66210D01* +X338638Y66238D01* +X338720Y66263D01* +X338804Y66284D01* +X338888Y66301D01* +X338973Y66315D01* +X339059Y66324D01* +X339145Y66330D01* +X339231Y66332D01* +X339317Y66330D01* +X339403Y66324D01* +X339489Y66315D01* +X339574Y66301D01* +X339658Y66284D01* +X339742Y66263D01* +X339824Y66238D01* +X339905Y66210D01* +X339985Y66178D01* +X340064Y66142D01* +X340140Y66103D01* +X340215Y66060D01* +X340288Y66015D01* +X340359Y65966D01* +X340427Y65913D01* +X340494Y65858D01* +X340557Y65800D01* +X340618Y65739D01* +X340676Y65676D01* +X340731Y65609D01* +X340784Y65541D01* +X340833Y65470D01* +X340878Y65397D01* +X340921Y65322D01* +X340960Y65246D01* +X340996Y65167D01* +X341028Y65087D01* +X341056Y65006D01* +X341081Y64924D01* +X341102Y64840D01* +X341119Y64756D01* +X341133Y64671D01* +X341142Y64585D01* +X341148Y64499D01* +X341150Y64413D01* +X341148Y64327D01* +X341142Y64241D01* +X341133Y64155D01* +X341119Y64070D01* +X341102Y63986D01* +X341081Y63902D01* +X341056Y63820D01* +X341028Y63739D01* +X340996Y63659D01* +X340960Y63580D01* +X340921Y63504D01* +X340878Y63429D01* +X340833Y63356D01* +X340784Y63285D01* +X340731Y63217D01* +X340676Y63150D01* +X340618Y63087D01* +X340557Y63026D01* +X340494Y62968D01* +X340427Y62913D01* +X340359Y62860D01* +X340288Y62811D01* +X340215Y62766D01* +X340140Y62723D01* +X340064Y62684D01* +X339985Y62648D01* +X339905Y62616D01* +X339824Y62588D01* +X339742Y62563D01* +X339658Y62542D01* +X339574Y62525D01* +X339489Y62511D01* +X339403Y62502D01* +X339317Y62496D01* +X339231Y62494D01* +D13* +X693420Y160020D03* +D14* +X656336Y201299D02* +X656336Y203218D01* +X656336Y201299D02* +X656334Y201213D01* +X656328Y201127D01* +X656319Y201041D01* +X656305Y200956D01* +X656288Y200872D01* +X656267Y200788D01* +X656242Y200706D01* +X656214Y200625D01* +X656182Y200545D01* +X656146Y200466D01* +X656107Y200390D01* +X656064Y200315D01* +X656019Y200242D01* +X655970Y200171D01* +X655917Y200103D01* +X655862Y200036D01* +X655804Y199973D01* +X655743Y199912D01* +X655680Y199854D01* +X655613Y199799D01* +X655545Y199747D01* +X655474Y199697D01* +X655401Y199652D01* +X655326Y199609D01* +X655250Y199570D01* +X655171Y199534D01* +X655091Y199502D01* +X655010Y199474D01* +X654928Y199449D01* +X654844Y199428D01* +X654760Y199411D01* +X654675Y199397D01* +X654589Y199388D01* +X654503Y199382D01* +X654417Y199380D01* +X649619Y199380D01* +X649533Y199382D01* +X649447Y199388D01* +X649361Y199397D01* +X649276Y199411D01* +X649192Y199428D01* +X649108Y199449D01* +X649026Y199474D01* +X648945Y199502D01* +X648865Y199534D01* +X648786Y199570D01* +X648710Y199609D01* +X648635Y199652D01* +X648562Y199697D01* +X648491Y199746D01* +X648423Y199799D01* +X648356Y199854D01* +X648293Y199912D01* +X648232Y199973D01* +X648174Y200036D01* +X648119Y200103D01* +X648067Y200171D01* +X648017Y200242D01* +X647972Y200315D01* +X647929Y200390D01* +X647890Y200466D01* +X647854Y200545D01* +X647822Y200625D01* +X647794Y200706D01* +X647769Y200788D01* +X647748Y200872D01* +X647731Y200956D01* +X647717Y201041D01* +X647708Y201127D01* +X647702Y201213D01* +X647700Y201299D01* +X647700Y203218D01* +X649619Y207038D02* +X647700Y209437D01* +X656336Y209437D01* +X656336Y207038D02* +X656336Y211836D01* +X648660Y216182D02* +X647700Y216182D01* +X647700Y220980D01* +X656336Y218581D01* +D13* +X993140Y279400D03* +D14* +X992632Y292749D02* +X992632Y294668D01* +X992632Y292749D02* +X992630Y292663D01* +X992624Y292577D01* +X992615Y292491D01* +X992601Y292406D01* +X992584Y292322D01* +X992563Y292238D01* +X992538Y292156D01* +X992510Y292075D01* +X992478Y291995D01* +X992442Y291916D01* +X992403Y291840D01* +X992360Y291765D01* +X992315Y291692D01* +X992266Y291621D01* +X992213Y291553D01* +X992158Y291486D01* +X992100Y291423D01* +X992039Y291362D01* +X991976Y291304D01* +X991909Y291249D01* +X991841Y291197D01* +X991770Y291147D01* +X991697Y291102D01* +X991622Y291059D01* +X991546Y291020D01* +X991467Y290984D01* +X991387Y290952D01* +X991306Y290924D01* +X991224Y290899D01* +X991140Y290878D01* +X991056Y290861D01* +X990971Y290847D01* +X990885Y290838D01* +X990799Y290832D01* +X990713Y290830D01* +X985915Y290830D01* +X985829Y290832D01* +X985743Y290838D01* +X985657Y290847D01* +X985572Y290861D01* +X985488Y290878D01* +X985404Y290899D01* +X985322Y290924D01* +X985241Y290952D01* +X985161Y290984D01* +X985082Y291020D01* +X985006Y291059D01* +X984931Y291102D01* +X984858Y291147D01* +X984787Y291196D01* +X984719Y291249D01* +X984652Y291304D01* +X984589Y291362D01* +X984528Y291423D01* +X984470Y291486D01* +X984415Y291553D01* +X984363Y291621D01* +X984313Y291692D01* +X984268Y291765D01* +X984225Y291840D01* +X984186Y291916D01* +X984150Y291995D01* +X984118Y292075D01* +X984090Y292156D01* +X984065Y292238D01* +X984044Y292322D01* +X984027Y292406D01* +X984013Y292491D01* +X984004Y292577D01* +X983998Y292663D01* +X983996Y292749D01* +X983996Y294668D01* +X983996Y301127D02* +X983998Y301219D01* +X984004Y301310D01* +X984013Y301401D01* +X984027Y301492D01* +X984044Y301582D01* +X984066Y301671D01* +X984091Y301759D01* +X984119Y301846D01* +X984152Y301932D01* +X984188Y302016D01* +X984227Y302099D01* +X984270Y302180D01* +X984317Y302259D01* +X984366Y302336D01* +X984419Y302411D01* +X984475Y302483D01* +X984534Y302553D01* +X984596Y302621D01* +X984661Y302686D01* +X984729Y302748D01* +X984799Y302807D01* +X984871Y302863D01* +X984946Y302916D01* +X985023Y302965D01* +X985102Y303012D01* +X985183Y303055D01* +X985266Y303094D01* +X985350Y303130D01* +X985436Y303163D01* +X985523Y303191D01* +X985611Y303216D01* +X985700Y303238D01* +X985790Y303255D01* +X985881Y303269D01* +X985972Y303278D01* +X986063Y303284D01* +X986155Y303286D01* +X983996Y301127D02* +X983998Y301024D01* +X984004Y300922D01* +X984013Y300820D01* +X984026Y300718D01* +X984043Y300617D01* +X984064Y300516D01* +X984088Y300417D01* +X984117Y300318D01* +X984148Y300221D01* +X984184Y300124D01* +X984222Y300029D01* +X984265Y299936D01* +X984311Y299844D01* +X984360Y299754D01* +X984412Y299666D01* +X984468Y299579D01* +X984527Y299495D01* +X984588Y299414D01* +X984653Y299334D01* +X984721Y299257D01* +X984792Y299182D01* +X984865Y299111D01* +X984941Y299042D01* +X985019Y298975D01* +X985100Y298912D01* +X985183Y298852D01* +X985268Y298795D01* +X985355Y298741D01* +X985445Y298690D01* +X985536Y298643D01* +X985628Y298599D01* +X985723Y298558D01* +X985818Y298521D01* +X985915Y298488D01* +X987834Y302566D02* +X987768Y302633D01* +X987699Y302697D01* +X987628Y302758D01* +X987554Y302816D01* +X987478Y302871D01* +X987400Y302923D01* +X987320Y302972D01* +X987238Y303018D01* +X987154Y303060D01* +X987068Y303099D01* +X986981Y303134D01* +X986893Y303165D01* +X986803Y303193D01* +X986713Y303218D01* +X986621Y303239D01* +X986529Y303256D01* +X986436Y303269D01* +X986343Y303278D01* +X986249Y303284D01* +X986155Y303286D01* +X987834Y302566D02* +X992632Y298488D01* +X992632Y303286D01* +D13* +X863600Y160020D03* +D14* +X894334Y152164D02* +X894334Y150245D01* +X894332Y150159D01* +X894326Y150073D01* +X894317Y149987D01* +X894303Y149902D01* +X894286Y149818D01* +X894265Y149734D01* +X894240Y149652D01* +X894212Y149571D01* +X894180Y149491D01* +X894144Y149412D01* +X894105Y149336D01* +X894062Y149261D01* +X894017Y149188D01* +X893968Y149117D01* +X893915Y149049D01* +X893860Y148982D01* +X893802Y148919D01* +X893741Y148858D01* +X893678Y148800D01* +X893611Y148745D01* +X893543Y148693D01* +X893472Y148643D01* +X893399Y148598D01* +X893324Y148555D01* +X893248Y148516D01* +X893169Y148480D01* +X893089Y148448D01* +X893008Y148420D01* +X892926Y148395D01* +X892842Y148374D01* +X892758Y148357D01* +X892673Y148343D01* +X892587Y148334D01* +X892501Y148328D01* +X892415Y148326D01* +X887617Y148326D01* +X887531Y148328D01* +X887445Y148334D01* +X887359Y148343D01* +X887274Y148357D01* +X887190Y148374D01* +X887106Y148395D01* +X887024Y148420D01* +X886943Y148448D01* +X886863Y148480D01* +X886784Y148516D01* +X886708Y148555D01* +X886633Y148598D01* +X886560Y148643D01* +X886489Y148692D01* +X886421Y148745D01* +X886354Y148800D01* +X886291Y148858D01* +X886230Y148919D01* +X886172Y148982D01* +X886117Y149049D01* +X886065Y149117D01* +X886015Y149188D01* +X885970Y149261D01* +X885927Y149336D01* +X885888Y149412D01* +X885852Y149491D01* +X885820Y149571D01* +X885792Y149652D01* +X885767Y149734D01* +X885746Y149818D01* +X885729Y149902D01* +X885715Y149987D01* +X885706Y150073D01* +X885700Y150159D01* +X885698Y150245D01* +X885698Y152164D01* +X887617Y155984D02* +X885698Y158383D01* +X894334Y158383D01* +X894334Y155984D02* +X894334Y160782D01* +X894334Y165128D02* +X894334Y167527D01* +X894332Y167624D01* +X894326Y167720D01* +X894317Y167816D01* +X894303Y167912D01* +X894286Y168007D01* +X894264Y168101D01* +X894239Y168194D01* +X894211Y168287D01* +X894178Y168378D01* +X894142Y168467D01* +X894102Y168555D01* +X894059Y168642D01* +X894013Y168727D01* +X893963Y168809D01* +X893909Y168890D01* +X893853Y168968D01* +X893793Y169044D01* +X893731Y169118D01* +X893665Y169189D01* +X893597Y169257D01* +X893526Y169323D01* +X893452Y169385D01* +X893376Y169445D01* +X893298Y169501D01* +X893217Y169555D01* +X893135Y169605D01* +X893050Y169651D01* +X892963Y169694D01* +X892875Y169734D01* +X892786Y169770D01* +X892695Y169803D01* +X892602Y169831D01* +X892509Y169856D01* +X892415Y169878D01* +X892320Y169895D01* +X892224Y169909D01* +X892128Y169918D01* +X892032Y169924D01* +X891935Y169926D01* +X891838Y169924D01* +X891742Y169918D01* +X891646Y169909D01* +X891550Y169895D01* +X891455Y169878D01* +X891361Y169856D01* +X891268Y169831D01* +X891175Y169803D01* +X891084Y169770D01* +X890995Y169734D01* +X890907Y169694D01* +X890820Y169651D01* +X890736Y169605D01* +X890653Y169555D01* +X890572Y169501D01* +X890494Y169445D01* +X890418Y169385D01* +X890344Y169323D01* +X890273Y169257D01* +X890205Y169189D01* +X890139Y169118D01* +X890077Y169044D01* +X890017Y168968D01* +X889961Y168890D01* +X889907Y168809D01* +X889857Y168727D01* +X889811Y168642D01* +X889768Y168555D01* +X889728Y168467D01* +X889692Y168378D01* +X889659Y168287D01* +X889631Y168194D01* +X889606Y168101D01* +X889584Y168007D01* +X889567Y167912D01* +X889553Y167816D01* +X889544Y167720D01* +X889538Y167624D01* +X889536Y167527D01* +X885698Y168007D02* +X885698Y165128D01* +X885698Y168007D02* +X885700Y168093D01* +X885706Y168179D01* +X885715Y168265D01* +X885729Y168350D01* +X885746Y168434D01* +X885767Y168518D01* +X885792Y168600D01* +X885820Y168681D01* +X885852Y168761D01* +X885888Y168840D01* +X885927Y168916D01* +X885970Y168991D01* +X886015Y169064D01* +X886064Y169135D01* +X886117Y169203D01* +X886172Y169270D01* +X886230Y169333D01* +X886291Y169394D01* +X886354Y169452D01* +X886421Y169507D01* +X886489Y169560D01* +X886560Y169609D01* +X886633Y169654D01* +X886708Y169697D01* +X886784Y169736D01* +X886863Y169772D01* +X886943Y169804D01* +X887024Y169832D01* +X887106Y169857D01* +X887190Y169878D01* +X887274Y169895D01* +X887359Y169909D01* +X887445Y169918D01* +X887531Y169924D01* +X887617Y169926D01* +X887703Y169924D01* +X887789Y169918D01* +X887875Y169909D01* +X887960Y169895D01* +X888044Y169878D01* +X888128Y169857D01* +X888210Y169832D01* +X888291Y169804D01* +X888371Y169772D01* +X888450Y169736D01* +X888526Y169697D01* +X888601Y169654D01* +X888674Y169609D01* +X888745Y169560D01* +X888813Y169507D01* +X888880Y169452D01* +X888943Y169394D01* +X889004Y169333D01* +X889062Y169270D01* +X889117Y169203D01* +X889170Y169135D01* +X889219Y169064D01* +X889264Y168991D01* +X889307Y168916D01* +X889346Y168840D01* +X889382Y168761D01* +X889414Y168681D01* +X889442Y168600D01* +X889467Y168518D01* +X889488Y168434D01* +X889505Y168350D01* +X889519Y168265D01* +X889528Y168179D01* +X889534Y168093D01* +X889536Y168007D01* +X889536Y166088D01* +D16* +X492760Y299720D03* +D14* +X506081Y312657D02* +X509919Y312657D01* +X506081Y312657D02* +X505984Y312659D01* +X505888Y312665D01* +X505792Y312674D01* +X505696Y312688D01* +X505601Y312705D01* +X505507Y312727D01* +X505414Y312752D01* +X505321Y312780D01* +X505230Y312813D01* +X505141Y312849D01* +X505053Y312889D01* +X504966Y312932D01* +X504882Y312978D01* +X504799Y313028D01* +X504718Y313082D01* +X504640Y313138D01* +X504564Y313198D01* +X504490Y313260D01* +X504419Y313326D01* +X504351Y313394D01* +X504285Y313465D01* +X504223Y313539D01* +X504163Y313615D01* +X504107Y313693D01* +X504053Y313774D01* +X504003Y313857D01* +X503957Y313941D01* +X503914Y314028D01* +X503874Y314116D01* +X503838Y314205D01* +X503805Y314296D01* +X503777Y314389D01* +X503752Y314482D01* +X503730Y314576D01* +X503713Y314671D01* +X503699Y314767D01* +X503690Y314863D01* +X503684Y314959D01* +X503682Y315056D01* +X503684Y315153D01* +X503690Y315249D01* +X503699Y315345D01* +X503713Y315441D01* +X503730Y315536D01* +X503752Y315630D01* +X503777Y315723D01* +X503805Y315816D01* +X503838Y315907D01* +X503874Y315996D01* +X503914Y316084D01* +X503957Y316171D01* +X504003Y316256D01* +X504053Y316338D01* +X504107Y316419D01* +X504163Y316497D01* +X504223Y316573D01* +X504285Y316647D01* +X504351Y316718D01* +X504419Y316786D01* +X504490Y316852D01* +X504564Y316914D01* +X504640Y316974D01* +X504718Y317030D01* +X504799Y317084D01* +X504882Y317134D01* +X504966Y317180D01* +X505053Y317223D01* +X505141Y317263D01* +X505230Y317299D01* +X505321Y317332D01* +X505414Y317360D01* +X505507Y317385D01* +X505601Y317407D01* +X505696Y317424D01* +X505792Y317438D01* +X505888Y317447D01* +X505984Y317453D01* +X506081Y317455D01* +X506081Y317454D02* +X509919Y317454D01* +X509919Y317455D02* +X510016Y317453D01* +X510112Y317447D01* +X510208Y317438D01* +X510304Y317424D01* +X510399Y317407D01* +X510493Y317385D01* +X510586Y317360D01* +X510679Y317332D01* +X510770Y317299D01* +X510859Y317263D01* +X510947Y317223D01* +X511034Y317180D01* +X511119Y317134D01* +X511201Y317084D01* +X511282Y317030D01* +X511360Y316974D01* +X511436Y316914D01* +X511510Y316852D01* +X511581Y316786D01* +X511649Y316718D01* +X511715Y316647D01* +X511777Y316573D01* +X511837Y316497D01* +X511893Y316419D01* +X511947Y316338D01* +X511997Y316256D01* +X512043Y316171D01* +X512086Y316084D01* +X512126Y315996D01* +X512162Y315907D01* +X512195Y315816D01* +X512223Y315723D01* +X512248Y315630D01* +X512270Y315536D01* +X512287Y315441D01* +X512301Y315345D01* +X512310Y315249D01* +X512316Y315153D01* +X512318Y315056D01* +X512316Y314959D01* +X512310Y314863D01* +X512301Y314767D01* +X512287Y314671D01* +X512270Y314576D01* +X512248Y314482D01* +X512223Y314389D01* +X512195Y314296D01* +X512162Y314205D01* +X512126Y314116D01* +X512086Y314028D01* +X512043Y313941D01* +X511997Y313857D01* +X511947Y313774D01* +X511893Y313693D01* +X511837Y313615D01* +X511777Y313539D01* +X511715Y313465D01* +X511649Y313394D01* +X511581Y313326D01* +X511510Y313260D01* +X511436Y313198D01* +X511360Y313138D01* +X511282Y313082D01* +X511201Y313028D01* +X511119Y312978D01* +X511034Y312932D01* +X510947Y312889D01* +X510859Y312849D01* +X510770Y312813D01* +X510679Y312780D01* +X510586Y312752D01* +X510493Y312727D01* +X510399Y312705D01* +X510304Y312688D01* +X510208Y312674D01* +X510112Y312665D01* +X510016Y312659D01* +X509919Y312657D01* +X510399Y316495D02* +X512318Y318414D01* +X505841Y326136D02* +X505749Y326134D01* +X505658Y326128D01* +X505567Y326119D01* +X505476Y326105D01* +X505386Y326088D01* +X505297Y326066D01* +X505209Y326041D01* +X505122Y326013D01* +X505036Y325980D01* +X504952Y325944D01* +X504869Y325905D01* +X504788Y325862D01* +X504709Y325815D01* +X504632Y325766D01* +X504557Y325713D01* +X504485Y325657D01* +X504415Y325598D01* +X504347Y325536D01* +X504282Y325471D01* +X504220Y325403D01* +X504161Y325333D01* +X504105Y325261D01* +X504052Y325186D01* +X504003Y325109D01* +X503956Y325030D01* +X503913Y324949D01* +X503874Y324866D01* +X503838Y324782D01* +X503805Y324696D01* +X503777Y324609D01* +X503752Y324521D01* +X503730Y324432D01* +X503713Y324342D01* +X503699Y324251D01* +X503690Y324160D01* +X503684Y324069D01* +X503682Y323977D01* +X503684Y323874D01* +X503690Y323772D01* +X503699Y323670D01* +X503712Y323568D01* +X503729Y323467D01* +X503750Y323366D01* +X503774Y323267D01* +X503803Y323168D01* +X503834Y323071D01* +X503870Y322974D01* +X503908Y322879D01* +X503951Y322786D01* +X503997Y322694D01* +X504046Y322604D01* +X504098Y322516D01* +X504154Y322429D01* +X504213Y322345D01* +X504274Y322264D01* +X504339Y322184D01* +X504407Y322107D01* +X504478Y322032D01* +X504551Y321961D01* +X504627Y321892D01* +X504705Y321825D01* +X504786Y321762D01* +X504869Y321702D01* +X504954Y321645D01* +X505041Y321591D01* +X505131Y321540D01* +X505222Y321493D01* +X505314Y321449D01* +X505409Y321408D01* +X505504Y321371D01* +X505601Y321338D01* +X507520Y325416D02* +X507454Y325483D01* +X507385Y325547D01* +X507314Y325608D01* +X507240Y325666D01* +X507164Y325721D01* +X507086Y325773D01* +X507006Y325822D01* +X506924Y325868D01* +X506840Y325910D01* +X506754Y325949D01* +X506667Y325984D01* +X506579Y326015D01* +X506489Y326043D01* +X506399Y326068D01* +X506307Y326089D01* +X506215Y326106D01* +X506122Y326119D01* +X506029Y326128D01* +X505935Y326134D01* +X505841Y326136D01* +X507520Y325416D02* +X512318Y321338D01* +X512318Y326136D01* +D16* +X452120Y330200D03* +D11* +X475149Y331497D02* +X479891Y331497D01* +X475149Y331497D02* +X475042Y331499D01* +X474935Y331505D01* +X474829Y331514D01* +X474723Y331528D01* +X474617Y331545D01* +X474512Y331566D01* +X474408Y331591D01* +X474305Y331620D01* +X474203Y331652D01* +X474102Y331688D01* +X474003Y331728D01* +X473905Y331771D01* +X473809Y331818D01* +X473714Y331868D01* +X473621Y331921D01* +X473531Y331978D01* +X473442Y332038D01* +X473356Y332101D01* +X473272Y332167D01* +X473190Y332237D01* +X473111Y332309D01* +X473035Y332384D01* +X472961Y332462D01* +X472891Y332542D01* +X472823Y332625D01* +X472758Y332710D01* +X472697Y332797D01* +X472638Y332887D01* +X472583Y332979D01* +X472531Y333072D01* +X472483Y333168D01* +X472438Y333265D01* +X472396Y333363D01* +X472359Y333463D01* +X472324Y333565D01* +X472294Y333667D01* +X472267Y333771D01* +X472244Y333875D01* +X472225Y333981D01* +X472210Y334087D01* +X472198Y334193D01* +X472190Y334300D01* +X472186Y334407D01* +X472186Y334513D01* +X472190Y334620D01* +X472198Y334727D01* +X472210Y334833D01* +X472225Y334939D01* +X472244Y335045D01* +X472267Y335149D01* +X472294Y335253D01* +X472324Y335355D01* +X472359Y335457D01* +X472396Y335557D01* +X472438Y335655D01* +X472483Y335752D01* +X472531Y335848D01* +X472583Y335942D01* +X472638Y336033D01* +X472697Y336123D01* +X472758Y336210D01* +X472823Y336295D01* +X472891Y336378D01* +X472961Y336458D01* +X473035Y336536D01* +X473111Y336611D01* +X473190Y336683D01* +X473272Y336753D01* +X473356Y336819D01* +X473442Y336882D01* +X473531Y336942D01* +X473621Y336999D01* +X473714Y337052D01* +X473809Y337102D01* +X473905Y337149D01* +X474003Y337192D01* +X474102Y337232D01* +X474203Y337268D01* +X474305Y337300D01* +X474408Y337329D01* +X474512Y337354D01* +X474617Y337375D01* +X474723Y337392D01* +X474829Y337406D01* +X474935Y337415D01* +X475042Y337421D01* +X475149Y337423D01* +X475149Y337424D02* +X479891Y337424D01* +X479891Y337423D02* +X479998Y337421D01* +X480105Y337415D01* +X480211Y337406D01* +X480317Y337392D01* +X480423Y337375D01* +X480528Y337354D01* +X480632Y337329D01* +X480735Y337300D01* +X480837Y337268D01* +X480938Y337232D01* +X481037Y337192D01* +X481135Y337149D01* +X481231Y337102D01* +X481326Y337052D01* +X481419Y336999D01* +X481509Y336942D01* +X481598Y336882D01* +X481684Y336819D01* +X481768Y336753D01* +X481850Y336683D01* +X481929Y336611D01* +X482005Y336536D01* +X482079Y336458D01* +X482149Y336378D01* +X482217Y336295D01* +X482282Y336210D01* +X482343Y336123D01* +X482402Y336033D01* +X482457Y335942D01* +X482509Y335848D01* +X482557Y335752D01* +X482602Y335655D01* +X482644Y335557D01* +X482681Y335457D01* +X482716Y335355D01* +X482746Y335253D01* +X482773Y335149D01* +X482796Y335045D01* +X482815Y334939D01* +X482830Y334833D01* +X482842Y334727D01* +X482850Y334620D01* +X482854Y334513D01* +X482854Y334407D01* +X482850Y334300D01* +X482842Y334193D01* +X482830Y334087D01* +X482815Y333981D01* +X482796Y333875D01* +X482773Y333771D01* +X482746Y333667D01* +X482716Y333565D01* +X482681Y333463D01* +X482644Y333363D01* +X482602Y333265D01* +X482557Y333168D01* +X482509Y333072D01* +X482457Y332979D01* +X482402Y332887D01* +X482343Y332797D01* +X482282Y332710D01* +X482217Y332625D01* +X482149Y332542D01* +X482079Y332462D01* +X482005Y332384D01* +X481929Y332309D01* +X481850Y332237D01* +X481768Y332167D01* +X481684Y332101D01* +X481598Y332038D01* +X481509Y331978D01* +X481419Y331921D01* +X481326Y331868D01* +X481231Y331818D01* +X481135Y331771D01* +X481037Y331728D01* +X480938Y331688D01* +X480837Y331652D01* +X480735Y331620D01* +X480632Y331591D01* +X480528Y331566D01* +X480423Y331545D01* +X480317Y331528D01* +X480211Y331514D01* +X480105Y331505D01* +X479998Y331499D01* +X479891Y331497D01* +X480483Y336238D02* +X482854Y338609D01* +X474557Y342307D02* +X472186Y345271D01* +X482854Y345271D01* +X482854Y348234D02* +X482854Y342307D01* +D13* +X1031240Y91440D03* +D14* +X1031494Y102616D02* +X1022858Y102616D01* +X1022858Y105015D01* +X1022860Y105112D01* +X1022866Y105208D01* +X1022875Y105304D01* +X1022889Y105400D01* +X1022906Y105495D01* +X1022928Y105589D01* +X1022953Y105682D01* +X1022981Y105775D01* +X1023014Y105866D01* +X1023050Y105955D01* +X1023090Y106043D01* +X1023133Y106130D01* +X1023179Y106215D01* +X1023229Y106297D01* +X1023283Y106378D01* +X1023339Y106456D01* +X1023399Y106532D01* +X1023461Y106606D01* +X1023527Y106677D01* +X1023595Y106745D01* +X1023666Y106811D01* +X1023740Y106873D01* +X1023816Y106933D01* +X1023894Y106989D01* +X1023975Y107043D01* +X1024058Y107093D01* +X1024142Y107139D01* +X1024229Y107182D01* +X1024317Y107222D01* +X1024406Y107258D01* +X1024497Y107291D01* +X1024590Y107319D01* +X1024683Y107344D01* +X1024777Y107366D01* +X1024872Y107383D01* +X1024968Y107397D01* +X1025064Y107406D01* +X1025160Y107412D01* +X1025257Y107414D01* +X1025354Y107412D01* +X1025450Y107406D01* +X1025546Y107397D01* +X1025642Y107383D01* +X1025737Y107366D01* +X1025831Y107344D01* +X1025924Y107319D01* +X1026017Y107291D01* +X1026108Y107258D01* +X1026197Y107222D01* +X1026285Y107182D01* +X1026372Y107139D01* +X1026457Y107093D01* +X1026539Y107043D01* +X1026620Y106989D01* +X1026698Y106933D01* +X1026774Y106873D01* +X1026848Y106811D01* +X1026919Y106745D01* +X1026987Y106677D01* +X1027053Y106606D01* +X1027115Y106532D01* +X1027175Y106456D01* +X1027231Y106378D01* +X1027285Y106297D01* +X1027335Y106215D01* +X1027381Y106130D01* +X1027424Y106043D01* +X1027464Y105955D01* +X1027500Y105866D01* +X1027533Y105775D01* +X1027561Y105682D01* +X1027586Y105589D01* +X1027608Y105495D01* +X1027625Y105400D01* +X1027639Y105304D01* +X1027648Y105208D01* +X1027654Y105112D01* +X1027656Y105015D01* +X1027656Y102616D01* +X1027656Y105495D02* +X1031494Y107414D01* +X1024777Y111675D02* +X1022858Y114074D01* +X1031494Y114074D01* +X1031494Y111675D02* +X1031494Y116473D01* +X1031494Y120819D02* +X1031494Y123218D01* +X1031492Y123315D01* +X1031486Y123411D01* +X1031477Y123507D01* +X1031463Y123603D01* +X1031446Y123698D01* +X1031424Y123792D01* +X1031399Y123885D01* +X1031371Y123978D01* +X1031338Y124069D01* +X1031302Y124158D01* +X1031262Y124246D01* +X1031219Y124333D01* +X1031173Y124418D01* +X1031123Y124500D01* +X1031069Y124581D01* +X1031013Y124659D01* +X1030953Y124735D01* +X1030891Y124809D01* +X1030825Y124880D01* +X1030757Y124948D01* +X1030686Y125014D01* +X1030612Y125076D01* +X1030536Y125136D01* +X1030458Y125192D01* +X1030377Y125246D01* +X1030295Y125296D01* +X1030210Y125342D01* +X1030123Y125385D01* +X1030035Y125425D01* +X1029946Y125461D01* +X1029855Y125494D01* +X1029762Y125522D01* +X1029669Y125547D01* +X1029575Y125569D01* +X1029480Y125586D01* +X1029384Y125600D01* +X1029288Y125609D01* +X1029192Y125615D01* +X1029095Y125617D01* +X1028998Y125615D01* +X1028902Y125609D01* +X1028806Y125600D01* +X1028710Y125586D01* +X1028615Y125569D01* +X1028521Y125547D01* +X1028428Y125522D01* +X1028335Y125494D01* +X1028244Y125461D01* +X1028155Y125425D01* +X1028067Y125385D01* +X1027980Y125342D01* +X1027896Y125296D01* +X1027813Y125246D01* +X1027732Y125192D01* +X1027654Y125136D01* +X1027578Y125076D01* +X1027504Y125014D01* +X1027433Y124948D01* +X1027365Y124880D01* +X1027299Y124809D01* +X1027237Y124735D01* +X1027177Y124659D01* +X1027121Y124581D01* +X1027067Y124500D01* +X1027017Y124418D01* +X1026971Y124333D01* +X1026928Y124246D01* +X1026888Y124158D01* +X1026852Y124069D01* +X1026819Y123978D01* +X1026791Y123885D01* +X1026766Y123792D01* +X1026744Y123698D01* +X1026727Y123603D01* +X1026713Y123507D01* +X1026704Y123411D01* +X1026698Y123315D01* +X1026696Y123218D01* +X1022858Y123698D02* +X1022858Y120819D01* +X1022858Y123698D02* +X1022860Y123784D01* +X1022866Y123870D01* +X1022875Y123956D01* +X1022889Y124041D01* +X1022906Y124125D01* +X1022927Y124209D01* +X1022952Y124291D01* +X1022980Y124372D01* +X1023012Y124452D01* +X1023048Y124531D01* +X1023087Y124607D01* +X1023130Y124682D01* +X1023175Y124755D01* +X1023224Y124826D01* +X1023277Y124894D01* +X1023332Y124961D01* +X1023390Y125024D01* +X1023451Y125085D01* +X1023514Y125143D01* +X1023581Y125198D01* +X1023649Y125251D01* +X1023720Y125300D01* +X1023793Y125345D01* +X1023868Y125388D01* +X1023944Y125427D01* +X1024023Y125463D01* +X1024103Y125495D01* +X1024184Y125523D01* +X1024266Y125548D01* +X1024350Y125569D01* +X1024434Y125586D01* +X1024519Y125600D01* +X1024605Y125609D01* +X1024691Y125615D01* +X1024777Y125617D01* +X1024863Y125615D01* +X1024949Y125609D01* +X1025035Y125600D01* +X1025120Y125586D01* +X1025204Y125569D01* +X1025288Y125548D01* +X1025370Y125523D01* +X1025451Y125495D01* +X1025531Y125463D01* +X1025610Y125427D01* +X1025686Y125388D01* +X1025761Y125345D01* +X1025834Y125300D01* +X1025905Y125251D01* +X1025973Y125198D01* +X1026040Y125143D01* +X1026103Y125085D01* +X1026164Y125024D01* +X1026222Y124961D01* +X1026277Y124894D01* +X1026330Y124826D01* +X1026379Y124755D01* +X1026424Y124682D01* +X1026467Y124607D01* +X1026506Y124531D01* +X1026542Y124452D01* +X1026574Y124372D01* +X1026602Y124291D01* +X1026627Y124209D01* +X1026648Y124125D01* +X1026665Y124041D01* +X1026679Y123956D01* +X1026688Y123870D01* +X1026694Y123784D01* +X1026696Y123698D01* +X1026696Y121779D01* +D13* +X706120Y139700D03* +D14* +X709930Y105269D02* +X701294Y105269D01* +X701294Y107668D01* +X701296Y107765D01* +X701302Y107861D01* +X701311Y107957D01* +X701325Y108053D01* +X701342Y108148D01* +X701364Y108242D01* +X701389Y108335D01* +X701417Y108428D01* +X701450Y108519D01* +X701486Y108608D01* +X701526Y108696D01* +X701569Y108783D01* +X701615Y108868D01* +X701665Y108950D01* +X701719Y109031D01* +X701775Y109109D01* +X701835Y109185D01* +X701897Y109259D01* +X701963Y109330D01* +X702031Y109398D01* +X702102Y109464D01* +X702176Y109526D01* +X702252Y109586D01* +X702330Y109642D01* +X702411Y109696D01* +X702494Y109746D01* +X702578Y109792D01* +X702665Y109835D01* +X702753Y109875D01* +X702842Y109911D01* +X702933Y109944D01* +X703026Y109972D01* +X703119Y109997D01* +X703213Y110019D01* +X703308Y110036D01* +X703404Y110050D01* +X703500Y110059D01* +X703596Y110065D01* +X703693Y110067D01* +X703790Y110065D01* +X703886Y110059D01* +X703982Y110050D01* +X704078Y110036D01* +X704173Y110019D01* +X704267Y109997D01* +X704360Y109972D01* +X704453Y109944D01* +X704544Y109911D01* +X704633Y109875D01* +X704721Y109835D01* +X704808Y109792D01* +X704893Y109746D01* +X704975Y109696D01* +X705056Y109642D01* +X705134Y109586D01* +X705210Y109526D01* +X705284Y109464D01* +X705355Y109398D01* +X705423Y109330D01* +X705489Y109259D01* +X705551Y109185D01* +X705611Y109109D01* +X705667Y109031D01* +X705721Y108950D01* +X705771Y108868D01* +X705817Y108783D01* +X705860Y108696D01* +X705900Y108608D01* +X705936Y108519D01* +X705969Y108428D01* +X705997Y108335D01* +X706022Y108242D01* +X706044Y108148D01* +X706061Y108053D01* +X706075Y107957D01* +X706084Y107861D01* +X706090Y107765D01* +X706092Y107668D01* +X706092Y105269D01* +X706092Y108148D02* +X709930Y110067D01* +X703213Y114328D02* +X701294Y116727D01* +X709930Y116727D01* +X709930Y114328D02* +X709930Y119126D01* +X706092Y125391D02* +X706092Y128270D01* +X706092Y125391D02* +X706090Y125305D01* +X706084Y125219D01* +X706075Y125133D01* +X706061Y125048D01* +X706044Y124964D01* +X706023Y124880D01* +X705998Y124798D01* +X705970Y124717D01* +X705938Y124637D01* +X705902Y124558D01* +X705863Y124482D01* +X705820Y124407D01* +X705775Y124334D01* +X705726Y124263D01* +X705673Y124195D01* +X705618Y124128D01* +X705560Y124065D01* +X705499Y124004D01* +X705436Y123946D01* +X705369Y123891D01* +X705301Y123839D01* +X705230Y123789D01* +X705157Y123744D01* +X705082Y123701D01* +X705006Y123662D01* +X704927Y123626D01* +X704847Y123594D01* +X704766Y123566D01* +X704684Y123541D01* +X704600Y123520D01* +X704516Y123503D01* +X704431Y123489D01* +X704345Y123480D01* +X704259Y123474D01* +X704173Y123472D01* +X703693Y123472D01* +X703596Y123474D01* +X703500Y123480D01* +X703404Y123489D01* +X703308Y123503D01* +X703213Y123520D01* +X703119Y123542D01* +X703026Y123567D01* +X702933Y123595D01* +X702842Y123628D01* +X702753Y123664D01* +X702665Y123704D01* +X702578Y123747D01* +X702494Y123793D01* +X702411Y123843D01* +X702330Y123897D01* +X702252Y123953D01* +X702176Y124013D01* +X702102Y124075D01* +X702031Y124141D01* +X701963Y124209D01* +X701897Y124280D01* +X701835Y124354D01* +X701775Y124430D01* +X701719Y124508D01* +X701665Y124589D01* +X701615Y124672D01* +X701569Y124756D01* +X701526Y124843D01* +X701486Y124931D01* +X701450Y125020D01* +X701417Y125111D01* +X701389Y125204D01* +X701364Y125297D01* +X701342Y125391D01* +X701325Y125486D01* +X701311Y125582D01* +X701302Y125678D01* +X701296Y125774D01* +X701294Y125871D01* +X701296Y125968D01* +X701302Y126064D01* +X701311Y126160D01* +X701325Y126256D01* +X701342Y126351D01* +X701364Y126445D01* +X701389Y126538D01* +X701417Y126631D01* +X701450Y126722D01* +X701486Y126811D01* +X701526Y126899D01* +X701569Y126986D01* +X701615Y127071D01* +X701665Y127153D01* +X701719Y127234D01* +X701775Y127312D01* +X701835Y127388D01* +X701897Y127462D01* +X701963Y127533D01* +X702031Y127601D01* +X702102Y127667D01* +X702176Y127729D01* +X702252Y127789D01* +X702330Y127845D01* +X702411Y127899D01* +X702494Y127949D01* +X702578Y127995D01* +X702665Y128038D01* +X702753Y128078D01* +X702842Y128114D01* +X702933Y128147D01* +X703026Y128175D01* +X703119Y128200D01* +X703213Y128222D01* +X703308Y128239D01* +X703404Y128253D01* +X703500Y128262D01* +X703596Y128268D01* +X703693Y128270D01* +X706092Y128270D01* +X706215Y128268D01* +X706338Y128262D01* +X706461Y128252D01* +X706583Y128238D01* +X706705Y128221D01* +X706826Y128199D01* +X706946Y128174D01* +X707066Y128144D01* +X707184Y128111D01* +X707301Y128074D01* +X707418Y128034D01* +X707532Y127990D01* +X707646Y127942D01* +X707757Y127890D01* +X707867Y127835D01* +X707975Y127776D01* +X708082Y127714D01* +X708186Y127649D01* +X708288Y127580D01* +X708388Y127508D01* +X708485Y127433D01* +X708580Y127354D01* +X708672Y127273D01* +X708762Y127189D01* +X708849Y127102D01* +X708933Y127012D01* +X709014Y126920D01* +X709093Y126825D01* +X709168Y126728D01* +X709240Y126628D01* +X709309Y126526D01* +X709374Y126422D01* +X709436Y126315D01* +X709495Y126207D01* +X709550Y126097D01* +X709602Y125986D01* +X709650Y125872D01* +X709694Y125758D01* +X709734Y125641D01* +X709771Y125524D01* +X709804Y125406D01* +X709834Y125286D01* +X709859Y125166D01* +X709881Y125045D01* +X709898Y124923D01* +X709912Y124801D01* +X709922Y124678D01* +X709928Y124555D01* +X709930Y124432D01* +D17* +X1259840Y193040D03* +D14* +X1238504Y201168D02* +X1238504Y209804D01* +X1240903Y209804D01* +X1241000Y209802D01* +X1241096Y209796D01* +X1241192Y209787D01* +X1241288Y209773D01* +X1241383Y209756D01* +X1241477Y209734D01* +X1241570Y209709D01* +X1241663Y209681D01* +X1241754Y209648D01* +X1241843Y209612D01* +X1241931Y209572D01* +X1242018Y209529D01* +X1242103Y209483D01* +X1242185Y209433D01* +X1242266Y209379D01* +X1242344Y209323D01* +X1242420Y209263D01* +X1242494Y209201D01* +X1242565Y209135D01* +X1242633Y209067D01* +X1242699Y208996D01* +X1242761Y208922D01* +X1242821Y208846D01* +X1242877Y208768D01* +X1242931Y208687D01* +X1242981Y208604D01* +X1243027Y208520D01* +X1243070Y208433D01* +X1243110Y208345D01* +X1243146Y208256D01* +X1243179Y208165D01* +X1243207Y208072D01* +X1243232Y207979D01* +X1243254Y207885D01* +X1243271Y207790D01* +X1243285Y207694D01* +X1243294Y207598D01* +X1243300Y207502D01* +X1243302Y207405D01* +X1243300Y207308D01* +X1243294Y207212D01* +X1243285Y207116D01* +X1243271Y207020D01* +X1243254Y206925D01* +X1243232Y206831D01* +X1243207Y206738D01* +X1243179Y206645D01* +X1243146Y206554D01* +X1243110Y206465D01* +X1243070Y206377D01* +X1243027Y206290D01* +X1242981Y206206D01* +X1242931Y206123D01* +X1242877Y206042D01* +X1242821Y205964D01* +X1242761Y205888D01* +X1242699Y205814D01* +X1242633Y205743D01* +X1242565Y205675D01* +X1242494Y205609D01* +X1242420Y205547D01* +X1242344Y205487D01* +X1242266Y205431D01* +X1242185Y205377D01* +X1242103Y205327D01* +X1242018Y205281D01* +X1241931Y205238D01* +X1241843Y205198D01* +X1241754Y205162D01* +X1241663Y205129D01* +X1241570Y205101D01* +X1241477Y205076D01* +X1241383Y205054D01* +X1241288Y205037D01* +X1241192Y205023D01* +X1241096Y205014D01* +X1241000Y205008D01* +X1240903Y205006D01* +X1238504Y205006D01* +X1241383Y205006D02* +X1243302Y201168D01* +X1250202Y209804D02* +X1250294Y209802D01* +X1250385Y209796D01* +X1250476Y209787D01* +X1250567Y209773D01* +X1250657Y209756D01* +X1250746Y209734D01* +X1250834Y209709D01* +X1250921Y209681D01* +X1251007Y209648D01* +X1251091Y209612D01* +X1251174Y209573D01* +X1251255Y209530D01* +X1251334Y209483D01* +X1251411Y209434D01* +X1251486Y209381D01* +X1251558Y209325D01* +X1251628Y209266D01* +X1251696Y209204D01* +X1251761Y209139D01* +X1251823Y209071D01* +X1251882Y209001D01* +X1251938Y208929D01* +X1251991Y208854D01* +X1252040Y208777D01* +X1252087Y208698D01* +X1252130Y208617D01* +X1252169Y208534D01* +X1252205Y208450D01* +X1252238Y208364D01* +X1252266Y208277D01* +X1252291Y208189D01* +X1252313Y208100D01* +X1252330Y208010D01* +X1252344Y207919D01* +X1252353Y207828D01* +X1252359Y207737D01* +X1252361Y207645D01* +X1250202Y209804D02* +X1250099Y209802D01* +X1249997Y209796D01* +X1249895Y209787D01* +X1249793Y209774D01* +X1249692Y209757D01* +X1249591Y209736D01* +X1249492Y209712D01* +X1249393Y209683D01* +X1249296Y209652D01* +X1249199Y209616D01* +X1249104Y209578D01* +X1249011Y209535D01* +X1248919Y209489D01* +X1248829Y209440D01* +X1248741Y209388D01* +X1248654Y209332D01* +X1248570Y209273D01* +X1248489Y209212D01* +X1248409Y209147D01* +X1248332Y209079D01* +X1248257Y209008D01* +X1248186Y208935D01* +X1248117Y208859D01* +X1248050Y208781D01* +X1247987Y208700D01* +X1247927Y208617D01* +X1247870Y208532D01* +X1247816Y208445D01* +X1247765Y208355D01* +X1247718Y208264D01* +X1247674Y208172D01* +X1247633Y208077D01* +X1247596Y207982D01* +X1247563Y207885D01* +X1251641Y205966D02* +X1251708Y206032D01* +X1251772Y206101D01* +X1251833Y206172D01* +X1251891Y206246D01* +X1251946Y206322D01* +X1251998Y206400D01* +X1252047Y206480D01* +X1252093Y206562D01* +X1252135Y206646D01* +X1252174Y206732D01* +X1252209Y206819D01* +X1252240Y206907D01* +X1252268Y206997D01* +X1252293Y207087D01* +X1252314Y207179D01* +X1252331Y207271D01* +X1252344Y207364D01* +X1252353Y207457D01* +X1252359Y207551D01* +X1252361Y207645D01* +X1251641Y205966D02* +X1247563Y201168D01* +X1252361Y201168D01* +X1256707Y201168D02* +X1259106Y201168D01* +X1259203Y201170D01* +X1259299Y201176D01* +X1259395Y201185D01* +X1259491Y201199D01* +X1259586Y201216D01* +X1259680Y201238D01* +X1259773Y201263D01* +X1259866Y201291D01* +X1259957Y201324D01* +X1260046Y201360D01* +X1260134Y201400D01* +X1260221Y201443D01* +X1260306Y201489D01* +X1260388Y201539D01* +X1260469Y201593D01* +X1260547Y201649D01* +X1260623Y201709D01* +X1260697Y201771D01* +X1260768Y201837D01* +X1260836Y201905D01* +X1260902Y201976D01* +X1260964Y202050D01* +X1261024Y202126D01* +X1261080Y202204D01* +X1261134Y202285D01* +X1261184Y202368D01* +X1261230Y202452D01* +X1261273Y202539D01* +X1261313Y202627D01* +X1261349Y202716D01* +X1261382Y202807D01* +X1261410Y202900D01* +X1261435Y202993D01* +X1261457Y203087D01* +X1261474Y203182D01* +X1261488Y203278D01* +X1261497Y203374D01* +X1261503Y203470D01* +X1261505Y203567D01* +X1261503Y203664D01* +X1261497Y203760D01* +X1261488Y203856D01* +X1261474Y203952D01* +X1261457Y204047D01* +X1261435Y204141D01* +X1261410Y204234D01* +X1261382Y204327D01* +X1261349Y204418D01* +X1261313Y204507D01* +X1261273Y204595D01* +X1261230Y204682D01* +X1261184Y204766D01* +X1261134Y204849D01* +X1261080Y204930D01* +X1261024Y205008D01* +X1260964Y205084D01* +X1260902Y205158D01* +X1260836Y205229D01* +X1260768Y205297D01* +X1260697Y205363D01* +X1260623Y205425D01* +X1260547Y205485D01* +X1260469Y205541D01* +X1260388Y205595D01* +X1260306Y205645D01* +X1260221Y205691D01* +X1260134Y205734D01* +X1260046Y205774D01* +X1259957Y205810D01* +X1259866Y205843D01* +X1259773Y205871D01* +X1259680Y205896D01* +X1259586Y205918D01* +X1259491Y205935D01* +X1259395Y205949D01* +X1259299Y205958D01* +X1259203Y205964D01* +X1259106Y205966D01* +X1259586Y209804D02* +X1256707Y209804D01* +X1259586Y209804D02* +X1259672Y209802D01* +X1259758Y209796D01* +X1259844Y209787D01* +X1259929Y209773D01* +X1260013Y209756D01* +X1260097Y209735D01* +X1260179Y209710D01* +X1260260Y209682D01* +X1260340Y209650D01* +X1260419Y209614D01* +X1260495Y209575D01* +X1260570Y209532D01* +X1260643Y209487D01* +X1260714Y209438D01* +X1260782Y209385D01* +X1260849Y209330D01* +X1260912Y209272D01* +X1260973Y209211D01* +X1261031Y209148D01* +X1261086Y209081D01* +X1261139Y209013D01* +X1261188Y208942D01* +X1261233Y208869D01* +X1261276Y208794D01* +X1261315Y208718D01* +X1261351Y208639D01* +X1261383Y208559D01* +X1261411Y208478D01* +X1261436Y208396D01* +X1261457Y208312D01* +X1261474Y208228D01* +X1261488Y208143D01* +X1261497Y208057D01* +X1261503Y207971D01* +X1261505Y207885D01* +X1261503Y207799D01* +X1261497Y207713D01* +X1261488Y207627D01* +X1261474Y207542D01* +X1261457Y207458D01* +X1261436Y207374D01* +X1261411Y207292D01* +X1261383Y207211D01* +X1261351Y207131D01* +X1261315Y207052D01* +X1261276Y206976D01* +X1261233Y206901D01* +X1261188Y206828D01* +X1261139Y206757D01* +X1261086Y206689D01* +X1261031Y206622D01* +X1260973Y206559D01* +X1260912Y206498D01* +X1260849Y206440D01* +X1260782Y206385D01* +X1260714Y206332D01* +X1260643Y206283D01* +X1260570Y206238D01* +X1260495Y206195D01* +X1260419Y206156D01* +X1260340Y206120D01* +X1260260Y206088D01* +X1260179Y206060D01* +X1260097Y206035D01* +X1260013Y206014D01* +X1259929Y205997D01* +X1259844Y205983D01* +X1259758Y205974D01* +X1259672Y205968D01* +X1259586Y205966D01* +X1257667Y205966D01* +D17* +X1259840Y142240D03* +D14* +X1248156Y147828D02* +X1248156Y156464D01* +X1250555Y156464D01* +X1250652Y156462D01* +X1250748Y156456D01* +X1250844Y156447D01* +X1250940Y156433D01* +X1251035Y156416D01* +X1251129Y156394D01* +X1251222Y156369D01* +X1251315Y156341D01* +X1251406Y156308D01* +X1251495Y156272D01* +X1251583Y156232D01* +X1251670Y156189D01* +X1251755Y156143D01* +X1251837Y156093D01* +X1251918Y156039D01* +X1251996Y155983D01* +X1252072Y155923D01* +X1252146Y155861D01* +X1252217Y155795D01* +X1252285Y155727D01* +X1252351Y155656D01* +X1252413Y155582D01* +X1252473Y155506D01* +X1252529Y155428D01* +X1252583Y155347D01* +X1252633Y155264D01* +X1252679Y155180D01* +X1252722Y155093D01* +X1252762Y155005D01* +X1252798Y154916D01* +X1252831Y154825D01* +X1252859Y154732D01* +X1252884Y154639D01* +X1252906Y154545D01* +X1252923Y154450D01* +X1252937Y154354D01* +X1252946Y154258D01* +X1252952Y154162D01* +X1252954Y154065D01* +X1252952Y153968D01* +X1252946Y153872D01* +X1252937Y153776D01* +X1252923Y153680D01* +X1252906Y153585D01* +X1252884Y153491D01* +X1252859Y153398D01* +X1252831Y153305D01* +X1252798Y153214D01* +X1252762Y153125D01* +X1252722Y153037D01* +X1252679Y152950D01* +X1252633Y152866D01* +X1252583Y152783D01* +X1252529Y152702D01* +X1252473Y152624D01* +X1252413Y152548D01* +X1252351Y152474D01* +X1252285Y152403D01* +X1252217Y152335D01* +X1252146Y152269D01* +X1252072Y152207D01* +X1251996Y152147D01* +X1251918Y152091D01* +X1251837Y152037D01* +X1251755Y151987D01* +X1251670Y151941D01* +X1251583Y151898D01* +X1251495Y151858D01* +X1251406Y151822D01* +X1251315Y151789D01* +X1251222Y151761D01* +X1251129Y151736D01* +X1251035Y151714D01* +X1250940Y151697D01* +X1250844Y151683D01* +X1250748Y151674D01* +X1250652Y151668D01* +X1250555Y151666D01* +X1248156Y151666D01* +X1251035Y151666D02* +X1252954Y147828D01* +X1259854Y156464D02* +X1259946Y156462D01* +X1260037Y156456D01* +X1260128Y156447D01* +X1260219Y156433D01* +X1260309Y156416D01* +X1260398Y156394D01* +X1260486Y156369D01* +X1260573Y156341D01* +X1260659Y156308D01* +X1260743Y156272D01* +X1260826Y156233D01* +X1260907Y156190D01* +X1260986Y156143D01* +X1261063Y156094D01* +X1261138Y156041D01* +X1261210Y155985D01* +X1261280Y155926D01* +X1261348Y155864D01* +X1261413Y155799D01* +X1261475Y155731D01* +X1261534Y155661D01* +X1261590Y155589D01* +X1261643Y155514D01* +X1261692Y155437D01* +X1261739Y155358D01* +X1261782Y155277D01* +X1261821Y155194D01* +X1261857Y155110D01* +X1261890Y155024D01* +X1261918Y154937D01* +X1261943Y154849D01* +X1261965Y154760D01* +X1261982Y154670D01* +X1261996Y154579D01* +X1262005Y154488D01* +X1262011Y154397D01* +X1262013Y154305D01* +X1259854Y156464D02* +X1259751Y156462D01* +X1259649Y156456D01* +X1259547Y156447D01* +X1259445Y156434D01* +X1259344Y156417D01* +X1259243Y156396D01* +X1259144Y156372D01* +X1259045Y156343D01* +X1258948Y156312D01* +X1258851Y156276D01* +X1258756Y156238D01* +X1258663Y156195D01* +X1258571Y156149D01* +X1258481Y156100D01* +X1258393Y156048D01* +X1258306Y155992D01* +X1258222Y155933D01* +X1258141Y155872D01* +X1258061Y155807D01* +X1257984Y155739D01* +X1257909Y155668D01* +X1257838Y155595D01* +X1257769Y155519D01* +X1257702Y155441D01* +X1257639Y155360D01* +X1257579Y155277D01* +X1257522Y155192D01* +X1257468Y155105D01* +X1257417Y155015D01* +X1257370Y154924D01* +X1257326Y154832D01* +X1257285Y154737D01* +X1257248Y154642D01* +X1257215Y154545D01* +X1261293Y152626D02* +X1261360Y152692D01* +X1261424Y152761D01* +X1261485Y152832D01* +X1261543Y152906D01* +X1261598Y152982D01* +X1261650Y153060D01* +X1261699Y153140D01* +X1261745Y153222D01* +X1261787Y153306D01* +X1261826Y153392D01* +X1261861Y153479D01* +X1261892Y153567D01* +X1261920Y153657D01* +X1261945Y153747D01* +X1261966Y153839D01* +X1261983Y153931D01* +X1261996Y154024D01* +X1262005Y154117D01* +X1262011Y154211D01* +X1262013Y154305D01* +X1261293Y152626D02* +X1257215Y147828D01* +X1262013Y147828D01* +X1266359Y149747D02* +X1268278Y156464D01* +X1266359Y149747D02* +X1271157Y149747D01* +X1269718Y151666D02* +X1269718Y147828D01* +D17* +X533400Y259080D03* +D14* +X524256Y252984D02* +X524256Y244348D01* +X524256Y252984D02* +X526655Y252984D01* +X526752Y252982D01* +X526848Y252976D01* +X526944Y252967D01* +X527040Y252953D01* +X527135Y252936D01* +X527229Y252914D01* +X527322Y252889D01* +X527415Y252861D01* +X527506Y252828D01* +X527595Y252792D01* +X527683Y252752D01* +X527770Y252709D01* +X527855Y252663D01* +X527937Y252613D01* +X528018Y252559D01* +X528096Y252503D01* +X528172Y252443D01* +X528246Y252381D01* +X528317Y252315D01* +X528385Y252247D01* +X528451Y252176D01* +X528513Y252102D01* +X528573Y252026D01* +X528629Y251948D01* +X528683Y251867D01* +X528733Y251784D01* +X528779Y251700D01* +X528822Y251613D01* +X528862Y251525D01* +X528898Y251436D01* +X528931Y251345D01* +X528959Y251252D01* +X528984Y251159D01* +X529006Y251065D01* +X529023Y250970D01* +X529037Y250874D01* +X529046Y250778D01* +X529052Y250682D01* +X529054Y250585D01* +X529052Y250488D01* +X529046Y250392D01* +X529037Y250296D01* +X529023Y250200D01* +X529006Y250105D01* +X528984Y250011D01* +X528959Y249918D01* +X528931Y249825D01* +X528898Y249734D01* +X528862Y249645D01* +X528822Y249557D01* +X528779Y249470D01* +X528733Y249386D01* +X528683Y249303D01* +X528629Y249222D01* +X528573Y249144D01* +X528513Y249068D01* +X528451Y248994D01* +X528385Y248923D01* +X528317Y248855D01* +X528246Y248789D01* +X528172Y248727D01* +X528096Y248667D01* +X528018Y248611D01* +X527937Y248557D01* +X527855Y248507D01* +X527770Y248461D01* +X527683Y248418D01* +X527595Y248378D01* +X527506Y248342D01* +X527415Y248309D01* +X527322Y248281D01* +X527229Y248256D01* +X527135Y248234D01* +X527040Y248217D01* +X526944Y248203D01* +X526848Y248194D01* +X526752Y248188D01* +X526655Y248186D01* +X524256Y248186D01* +X527135Y248186D02* +X529054Y244348D01* +X535954Y252984D02* +X536046Y252982D01* +X536137Y252976D01* +X536228Y252967D01* +X536319Y252953D01* +X536409Y252936D01* +X536498Y252914D01* +X536586Y252889D01* +X536673Y252861D01* +X536759Y252828D01* +X536843Y252792D01* +X536926Y252753D01* +X537007Y252710D01* +X537086Y252663D01* +X537163Y252614D01* +X537238Y252561D01* +X537310Y252505D01* +X537380Y252446D01* +X537448Y252384D01* +X537513Y252319D01* +X537575Y252251D01* +X537634Y252181D01* +X537690Y252109D01* +X537743Y252034D01* +X537792Y251957D01* +X537839Y251878D01* +X537882Y251797D01* +X537921Y251714D01* +X537957Y251630D01* +X537990Y251544D01* +X538018Y251457D01* +X538043Y251369D01* +X538065Y251280D01* +X538082Y251190D01* +X538096Y251099D01* +X538105Y251008D01* +X538111Y250917D01* +X538113Y250825D01* +X535954Y252984D02* +X535851Y252982D01* +X535749Y252976D01* +X535647Y252967D01* +X535545Y252954D01* +X535444Y252937D01* +X535343Y252916D01* +X535244Y252892D01* +X535145Y252863D01* +X535048Y252832D01* +X534951Y252796D01* +X534856Y252758D01* +X534763Y252715D01* +X534671Y252669D01* +X534581Y252620D01* +X534493Y252568D01* +X534406Y252512D01* +X534322Y252453D01* +X534241Y252392D01* +X534161Y252327D01* +X534084Y252259D01* +X534009Y252188D01* +X533938Y252115D01* +X533869Y252039D01* +X533802Y251961D01* +X533739Y251880D01* +X533679Y251797D01* +X533622Y251712D01* +X533568Y251625D01* +X533517Y251535D01* +X533470Y251444D01* +X533426Y251352D01* +X533385Y251257D01* +X533348Y251162D01* +X533315Y251065D01* +X537393Y249146D02* +X537460Y249212D01* +X537524Y249281D01* +X537585Y249352D01* +X537643Y249426D01* +X537698Y249502D01* +X537750Y249580D01* +X537799Y249660D01* +X537845Y249742D01* +X537887Y249826D01* +X537926Y249912D01* +X537961Y249999D01* +X537992Y250087D01* +X538020Y250177D01* +X538045Y250267D01* +X538066Y250359D01* +X538083Y250451D01* +X538096Y250544D01* +X538105Y250637D01* +X538111Y250731D01* +X538113Y250825D01* +X537393Y249146D02* +X533315Y244348D01* +X538113Y244348D01* +X542459Y244348D02* +X545338Y244348D01* +X545424Y244350D01* +X545510Y244356D01* +X545596Y244365D01* +X545681Y244379D01* +X545765Y244396D01* +X545849Y244417D01* +X545931Y244442D01* +X546012Y244470D01* +X546092Y244502D01* +X546171Y244538D01* +X546247Y244577D01* +X546322Y244620D01* +X546395Y244665D01* +X546466Y244715D01* +X546534Y244767D01* +X546601Y244822D01* +X546664Y244880D01* +X546725Y244941D01* +X546783Y245004D01* +X546838Y245071D01* +X546891Y245139D01* +X546940Y245210D01* +X546985Y245283D01* +X547028Y245358D01* +X547067Y245434D01* +X547103Y245513D01* +X547135Y245593D01* +X547163Y245674D01* +X547188Y245757D01* +X547209Y245840D01* +X547226Y245924D01* +X547240Y246009D01* +X547249Y246095D01* +X547255Y246181D01* +X547257Y246267D01* +X547257Y247227D01* +X547255Y247313D01* +X547249Y247399D01* +X547240Y247485D01* +X547226Y247570D01* +X547209Y247654D01* +X547188Y247738D01* +X547163Y247820D01* +X547135Y247901D01* +X547103Y247981D01* +X547067Y248060D01* +X547028Y248136D01* +X546985Y248211D01* +X546940Y248284D01* +X546891Y248355D01* +X546838Y248423D01* +X546783Y248490D01* +X546725Y248553D01* +X546664Y248614D01* +X546601Y248672D01* +X546534Y248727D01* +X546466Y248780D01* +X546395Y248829D01* +X546322Y248874D01* +X546247Y248917D01* +X546171Y248956D01* +X546092Y248992D01* +X546012Y249024D01* +X545931Y249052D01* +X545849Y249077D01* +X545765Y249098D01* +X545681Y249115D01* +X545596Y249129D01* +X545510Y249138D01* +X545424Y249144D01* +X545338Y249146D01* +X542459Y249146D01* +X542459Y252984D01* +X547257Y252984D01* +D13* +X678180Y160020D03* +D14* +X641350Y200011D02* +X632714Y200011D01* +X632714Y202410D01* +X632716Y202507D01* +X632722Y202603D01* +X632731Y202699D01* +X632745Y202795D01* +X632762Y202890D01* +X632784Y202984D01* +X632809Y203077D01* +X632837Y203170D01* +X632870Y203261D01* +X632906Y203350D01* +X632946Y203438D01* +X632989Y203525D01* +X633035Y203610D01* +X633085Y203692D01* +X633139Y203773D01* +X633195Y203851D01* +X633255Y203927D01* +X633317Y204001D01* +X633383Y204072D01* +X633451Y204140D01* +X633522Y204206D01* +X633596Y204268D01* +X633672Y204328D01* +X633750Y204384D01* +X633831Y204438D01* +X633914Y204488D01* +X633998Y204534D01* +X634085Y204577D01* +X634173Y204617D01* +X634262Y204653D01* +X634353Y204686D01* +X634446Y204714D01* +X634539Y204739D01* +X634633Y204761D01* +X634728Y204778D01* +X634824Y204792D01* +X634920Y204801D01* +X635016Y204807D01* +X635113Y204809D01* +X635210Y204807D01* +X635306Y204801D01* +X635402Y204792D01* +X635498Y204778D01* +X635593Y204761D01* +X635687Y204739D01* +X635780Y204714D01* +X635873Y204686D01* +X635964Y204653D01* +X636053Y204617D01* +X636141Y204577D01* +X636228Y204534D01* +X636313Y204488D01* +X636395Y204438D01* +X636476Y204384D01* +X636554Y204328D01* +X636630Y204268D01* +X636704Y204206D01* +X636775Y204140D01* +X636843Y204072D01* +X636909Y204001D01* +X636971Y203927D01* +X637031Y203851D01* +X637087Y203773D01* +X637141Y203692D01* +X637191Y203610D01* +X637237Y203525D01* +X637280Y203438D01* +X637320Y203350D01* +X637356Y203261D01* +X637389Y203170D01* +X637417Y203077D01* +X637442Y202984D01* +X637464Y202890D01* +X637481Y202795D01* +X637495Y202699D01* +X637504Y202603D01* +X637510Y202507D01* +X637512Y202410D01* +X637512Y200011D01* +X637512Y202890D02* +X641350Y204809D01* +X632714Y211709D02* +X632716Y211801D01* +X632722Y211892D01* +X632731Y211983D01* +X632745Y212074D01* +X632762Y212164D01* +X632784Y212253D01* +X632809Y212341D01* +X632837Y212428D01* +X632870Y212514D01* +X632906Y212598D01* +X632945Y212681D01* +X632988Y212762D01* +X633035Y212841D01* +X633084Y212918D01* +X633137Y212993D01* +X633193Y213065D01* +X633252Y213135D01* +X633314Y213203D01* +X633379Y213268D01* +X633447Y213330D01* +X633517Y213389D01* +X633589Y213445D01* +X633664Y213498D01* +X633741Y213547D01* +X633820Y213594D01* +X633901Y213637D01* +X633984Y213676D01* +X634068Y213712D01* +X634154Y213745D01* +X634241Y213773D01* +X634329Y213798D01* +X634418Y213820D01* +X634508Y213837D01* +X634599Y213851D01* +X634690Y213860D01* +X634781Y213866D01* +X634873Y213868D01* +X632714Y211709D02* +X632716Y211606D01* +X632722Y211504D01* +X632731Y211402D01* +X632744Y211300D01* +X632761Y211199D01* +X632782Y211098D01* +X632806Y210999D01* +X632835Y210900D01* +X632866Y210803D01* +X632902Y210706D01* +X632940Y210611D01* +X632983Y210518D01* +X633029Y210426D01* +X633078Y210336D01* +X633130Y210248D01* +X633186Y210161D01* +X633245Y210077D01* +X633306Y209996D01* +X633371Y209916D01* +X633439Y209839D01* +X633510Y209764D01* +X633583Y209693D01* +X633659Y209624D01* +X633737Y209557D01* +X633818Y209494D01* +X633901Y209434D01* +X633986Y209377D01* +X634073Y209323D01* +X634163Y209272D01* +X634254Y209225D01* +X634346Y209181D01* +X634441Y209140D01* +X634536Y209103D01* +X634633Y209070D01* +X636552Y213148D02* +X636486Y213215D01* +X636417Y213279D01* +X636346Y213340D01* +X636272Y213398D01* +X636196Y213453D01* +X636118Y213505D01* +X636038Y213554D01* +X635956Y213600D01* +X635872Y213642D01* +X635786Y213681D01* +X635699Y213716D01* +X635611Y213747D01* +X635521Y213775D01* +X635431Y213800D01* +X635339Y213821D01* +X635247Y213838D01* +X635154Y213851D01* +X635061Y213860D01* +X634967Y213866D01* +X634873Y213868D01* +X636552Y213148D02* +X641350Y209070D01* +X641350Y213868D01* +X632714Y220853D02* +X632716Y220945D01* +X632722Y221036D01* +X632731Y221127D01* +X632745Y221218D01* +X632762Y221308D01* +X632784Y221397D01* +X632809Y221485D01* +X632837Y221572D01* +X632870Y221658D01* +X632906Y221742D01* +X632945Y221825D01* +X632988Y221906D01* +X633035Y221985D01* +X633084Y222062D01* +X633137Y222137D01* +X633193Y222209D01* +X633252Y222279D01* +X633314Y222347D01* +X633379Y222412D01* +X633447Y222474D01* +X633517Y222533D01* +X633589Y222589D01* +X633664Y222642D01* +X633741Y222691D01* +X633820Y222738D01* +X633901Y222781D01* +X633984Y222820D01* +X634068Y222856D01* +X634154Y222889D01* +X634241Y222917D01* +X634329Y222942D01* +X634418Y222964D01* +X634508Y222981D01* +X634599Y222995D01* +X634690Y223004D01* +X634781Y223010D01* +X634873Y223012D01* +X632714Y220853D02* +X632716Y220750D01* +X632722Y220648D01* +X632731Y220546D01* +X632744Y220444D01* +X632761Y220343D01* +X632782Y220242D01* +X632806Y220143D01* +X632835Y220044D01* +X632866Y219947D01* +X632902Y219850D01* +X632940Y219755D01* +X632983Y219662D01* +X633029Y219570D01* +X633078Y219480D01* +X633130Y219392D01* +X633186Y219305D01* +X633245Y219221D01* +X633306Y219140D01* +X633371Y219060D01* +X633439Y218983D01* +X633510Y218908D01* +X633583Y218837D01* +X633659Y218768D01* +X633737Y218701D01* +X633818Y218638D01* +X633901Y218578D01* +X633986Y218521D01* +X634073Y218467D01* +X634163Y218416D01* +X634254Y218369D01* +X634346Y218325D01* +X634441Y218284D01* +X634536Y218247D01* +X634633Y218214D01* +X636552Y222292D02* +X636486Y222359D01* +X636417Y222423D01* +X636346Y222484D01* +X636272Y222542D01* +X636196Y222597D01* +X636118Y222649D01* +X636038Y222698D01* +X635956Y222744D01* +X635872Y222786D01* +X635786Y222825D01* +X635699Y222860D01* +X635611Y222891D01* +X635521Y222919D01* +X635431Y222944D01* +X635339Y222965D01* +X635247Y222982D01* +X635154Y222995D01* +X635061Y223004D01* +X634967Y223010D01* +X634873Y223012D01* +X636552Y222292D02* +X641350Y218214D01* +X641350Y223012D01* +D13* +X1005840Y279400D03* +D14* +X1009142Y291592D02* +X1000506Y291592D01* +X1000506Y293991D01* +X1000508Y294088D01* +X1000514Y294184D01* +X1000523Y294280D01* +X1000537Y294376D01* +X1000554Y294471D01* +X1000576Y294565D01* +X1000601Y294658D01* +X1000629Y294751D01* +X1000662Y294842D01* +X1000698Y294931D01* +X1000738Y295019D01* +X1000781Y295106D01* +X1000827Y295191D01* +X1000877Y295273D01* +X1000931Y295354D01* +X1000987Y295432D01* +X1001047Y295508D01* +X1001109Y295582D01* +X1001175Y295653D01* +X1001243Y295721D01* +X1001314Y295787D01* +X1001388Y295849D01* +X1001464Y295909D01* +X1001542Y295965D01* +X1001623Y296019D01* +X1001706Y296069D01* +X1001790Y296115D01* +X1001877Y296158D01* +X1001965Y296198D01* +X1002054Y296234D01* +X1002145Y296267D01* +X1002238Y296295D01* +X1002331Y296320D01* +X1002425Y296342D01* +X1002520Y296359D01* +X1002616Y296373D01* +X1002712Y296382D01* +X1002808Y296388D01* +X1002905Y296390D01* +X1003002Y296388D01* +X1003098Y296382D01* +X1003194Y296373D01* +X1003290Y296359D01* +X1003385Y296342D01* +X1003479Y296320D01* +X1003572Y296295D01* +X1003665Y296267D01* +X1003756Y296234D01* +X1003845Y296198D01* +X1003933Y296158D01* +X1004020Y296115D01* +X1004105Y296069D01* +X1004187Y296019D01* +X1004268Y295965D01* +X1004346Y295909D01* +X1004422Y295849D01* +X1004496Y295787D01* +X1004567Y295721D01* +X1004635Y295653D01* +X1004701Y295582D01* +X1004763Y295508D01* +X1004823Y295432D01* +X1004879Y295354D01* +X1004933Y295273D01* +X1004983Y295191D01* +X1005029Y295106D01* +X1005072Y295019D01* +X1005112Y294931D01* +X1005148Y294842D01* +X1005181Y294751D01* +X1005209Y294658D01* +X1005234Y294565D01* +X1005256Y294471D01* +X1005273Y294376D01* +X1005287Y294280D01* +X1005296Y294184D01* +X1005302Y294088D01* +X1005304Y293991D01* +X1005304Y291592D01* +X1005304Y294471D02* +X1009142Y296390D01* +X1002425Y300651D02* +X1000506Y303050D01* +X1009142Y303050D01* +X1009142Y300651D02* +X1009142Y305449D01* +D13* +X876300Y160020D03* +D14* +X899160Y147687D02* +X907796Y147687D01* +X899160Y147687D02* +X899160Y150086D01* +X899162Y150183D01* +X899168Y150279D01* +X899177Y150375D01* +X899191Y150471D01* +X899208Y150566D01* +X899230Y150660D01* +X899255Y150753D01* +X899283Y150846D01* +X899316Y150937D01* +X899352Y151026D01* +X899392Y151114D01* +X899435Y151201D01* +X899481Y151286D01* +X899531Y151368D01* +X899585Y151449D01* +X899641Y151527D01* +X899701Y151603D01* +X899763Y151677D01* +X899829Y151748D01* +X899897Y151816D01* +X899968Y151882D01* +X900042Y151944D01* +X900118Y152004D01* +X900196Y152060D01* +X900277Y152114D01* +X900360Y152164D01* +X900444Y152210D01* +X900531Y152253D01* +X900619Y152293D01* +X900708Y152329D01* +X900799Y152362D01* +X900892Y152390D01* +X900985Y152415D01* +X901079Y152437D01* +X901174Y152454D01* +X901270Y152468D01* +X901366Y152477D01* +X901462Y152483D01* +X901559Y152485D01* +X901656Y152483D01* +X901752Y152477D01* +X901848Y152468D01* +X901944Y152454D01* +X902039Y152437D01* +X902133Y152415D01* +X902226Y152390D01* +X902319Y152362D01* +X902410Y152329D01* +X902499Y152293D01* +X902587Y152253D01* +X902674Y152210D01* +X902759Y152164D01* +X902841Y152114D01* +X902922Y152060D01* +X903000Y152004D01* +X903076Y151944D01* +X903150Y151882D01* +X903221Y151816D01* +X903289Y151748D01* +X903355Y151677D01* +X903417Y151603D01* +X903477Y151527D01* +X903533Y151449D01* +X903587Y151368D01* +X903637Y151286D01* +X903683Y151201D01* +X903726Y151114D01* +X903766Y151026D01* +X903802Y150937D01* +X903835Y150846D01* +X903863Y150753D01* +X903888Y150660D01* +X903910Y150566D01* +X903927Y150471D01* +X903941Y150375D01* +X903950Y150279D01* +X903956Y150183D01* +X903958Y150086D01* +X903958Y147687D01* +X903958Y150566D02* +X907796Y152485D01* +X901079Y156746D02* +X899160Y159145D01* +X907796Y159145D01* +X907796Y156746D02* +X907796Y161544D01* +X902998Y165890D02* +X902998Y168769D01* +X903000Y168855D01* +X903006Y168941D01* +X903015Y169027D01* +X903029Y169112D01* +X903046Y169196D01* +X903067Y169280D01* +X903092Y169362D01* +X903120Y169443D01* +X903152Y169523D01* +X903188Y169602D01* +X903227Y169678D01* +X903270Y169753D01* +X903315Y169826D01* +X903365Y169897D01* +X903417Y169965D01* +X903472Y170032D01* +X903530Y170095D01* +X903591Y170156D01* +X903654Y170214D01* +X903721Y170269D01* +X903789Y170322D01* +X903860Y170371D01* +X903933Y170416D01* +X904008Y170459D01* +X904084Y170498D01* +X904163Y170534D01* +X904243Y170566D01* +X904324Y170594D01* +X904407Y170619D01* +X904490Y170640D01* +X904574Y170657D01* +X904659Y170671D01* +X904745Y170680D01* +X904831Y170686D01* +X904917Y170688D01* +X905397Y170688D01* +X905494Y170686D01* +X905590Y170680D01* +X905686Y170671D01* +X905782Y170657D01* +X905877Y170640D01* +X905971Y170618D01* +X906064Y170593D01* +X906157Y170565D01* +X906248Y170532D01* +X906337Y170496D01* +X906425Y170456D01* +X906512Y170413D01* +X906597Y170367D01* +X906679Y170317D01* +X906760Y170263D01* +X906838Y170207D01* +X906914Y170147D01* +X906988Y170085D01* +X907059Y170019D01* +X907127Y169951D01* +X907193Y169880D01* +X907255Y169806D01* +X907315Y169730D01* +X907371Y169652D01* +X907425Y169571D01* +X907475Y169488D01* +X907521Y169404D01* +X907564Y169317D01* +X907604Y169229D01* +X907640Y169140D01* +X907673Y169049D01* +X907701Y168956D01* +X907726Y168863D01* +X907748Y168769D01* +X907765Y168674D01* +X907779Y168578D01* +X907788Y168482D01* +X907794Y168386D01* +X907796Y168289D01* +X907794Y168192D01* +X907788Y168096D01* +X907779Y168000D01* +X907765Y167904D01* +X907748Y167809D01* +X907726Y167715D01* +X907701Y167622D01* +X907673Y167529D01* +X907640Y167438D01* +X907604Y167349D01* +X907564Y167261D01* +X907521Y167174D01* +X907475Y167090D01* +X907425Y167007D01* +X907371Y166926D01* +X907315Y166848D01* +X907255Y166772D01* +X907193Y166698D01* +X907127Y166627D01* +X907059Y166559D01* +X906988Y166493D01* +X906914Y166431D01* +X906838Y166371D01* +X906760Y166315D01* +X906679Y166261D01* +X906597Y166211D01* +X906512Y166165D01* +X906425Y166122D01* +X906337Y166082D01* +X906248Y166046D01* +X906157Y166013D01* +X906064Y165985D01* +X905971Y165960D01* +X905877Y165938D01* +X905782Y165921D01* +X905686Y165907D01* +X905590Y165898D01* +X905494Y165892D01* +X905397Y165890D01* +X902998Y165890D01* +X902998Y165891D02* +X902875Y165893D01* +X902752Y165899D01* +X902629Y165909D01* +X902507Y165923D01* +X902385Y165940D01* +X902264Y165962D01* +X902144Y165987D01* +X902024Y166017D01* +X901906Y166050D01* +X901789Y166087D01* +X901672Y166127D01* +X901558Y166171D01* +X901444Y166219D01* +X901333Y166271D01* +X901223Y166326D01* +X901115Y166385D01* +X901008Y166447D01* +X900904Y166512D01* +X900802Y166581D01* +X900702Y166653D01* +X900605Y166728D01* +X900510Y166807D01* +X900418Y166888D01* +X900328Y166972D01* +X900241Y167059D01* +X900157Y167149D01* +X900076Y167241D01* +X899997Y167336D01* +X899922Y167433D01* +X899850Y167533D01* +X899781Y167635D01* +X899716Y167739D01* +X899654Y167846D01* +X899595Y167954D01* +X899540Y168064D01* +X899488Y168175D01* +X899441Y168289D01* +X899396Y168403D01* +X899356Y168520D01* +X899319Y168637D01* +X899286Y168755D01* +X899256Y168875D01* +X899231Y168995D01* +X899209Y169116D01* +X899192Y169238D01* +X899178Y169360D01* +X899168Y169483D01* +X899162Y169606D01* +X899160Y169729D01* +D13* +X1198880Y104140D03* +D14* +X1192784Y91045D02* +X1184148Y91045D01* +X1184148Y93444D01* +X1184150Y93541D01* +X1184156Y93637D01* +X1184165Y93733D01* +X1184179Y93829D01* +X1184196Y93924D01* +X1184218Y94018D01* +X1184243Y94111D01* +X1184271Y94204D01* +X1184304Y94295D01* +X1184340Y94384D01* +X1184380Y94472D01* +X1184423Y94559D01* +X1184469Y94644D01* +X1184519Y94726D01* +X1184573Y94807D01* +X1184629Y94885D01* +X1184689Y94961D01* +X1184751Y95035D01* +X1184817Y95106D01* +X1184885Y95174D01* +X1184956Y95240D01* +X1185030Y95302D01* +X1185106Y95362D01* +X1185184Y95418D01* +X1185265Y95472D01* +X1185348Y95522D01* +X1185432Y95568D01* +X1185519Y95611D01* +X1185607Y95651D01* +X1185696Y95687D01* +X1185787Y95720D01* +X1185880Y95748D01* +X1185973Y95773D01* +X1186067Y95795D01* +X1186162Y95812D01* +X1186258Y95826D01* +X1186354Y95835D01* +X1186450Y95841D01* +X1186547Y95843D01* +X1186644Y95841D01* +X1186740Y95835D01* +X1186836Y95826D01* +X1186932Y95812D01* +X1187027Y95795D01* +X1187121Y95773D01* +X1187214Y95748D01* +X1187307Y95720D01* +X1187398Y95687D01* +X1187487Y95651D01* +X1187575Y95611D01* +X1187662Y95568D01* +X1187747Y95522D01* +X1187829Y95472D01* +X1187910Y95418D01* +X1187988Y95362D01* +X1188064Y95302D01* +X1188138Y95240D01* +X1188209Y95174D01* +X1188277Y95106D01* +X1188343Y95035D01* +X1188405Y94961D01* +X1188465Y94885D01* +X1188521Y94807D01* +X1188575Y94726D01* +X1188625Y94644D01* +X1188671Y94559D01* +X1188714Y94472D01* +X1188754Y94384D01* +X1188790Y94295D01* +X1188823Y94204D01* +X1188851Y94111D01* +X1188876Y94018D01* +X1188898Y93924D01* +X1188915Y93829D01* +X1188929Y93733D01* +X1188938Y93637D01* +X1188944Y93541D01* +X1188946Y93444D01* +X1188946Y91045D01* +X1188946Y93924D02* +X1192784Y95843D01* +X1186067Y100104D02* +X1184148Y102503D01* +X1192784Y102503D01* +X1192784Y100104D02* +X1192784Y104902D01* +X1188466Y109248D02* +X1188296Y109250D01* +X1188126Y109256D01* +X1187957Y109266D01* +X1187787Y109280D01* +X1187618Y109299D01* +X1187450Y109321D01* +X1187282Y109347D01* +X1187115Y109377D01* +X1186949Y109412D01* +X1186783Y109450D01* +X1186618Y109492D01* +X1186455Y109538D01* +X1186293Y109588D01* +X1186131Y109642D01* +X1185972Y109699D01* +X1185813Y109761D01* +X1185656Y109826D01* +X1185501Y109895D01* +X1185347Y109968D01* +X1185271Y109996D01* +X1185196Y110028D01* +X1185122Y110063D01* +X1185050Y110101D01* +X1184980Y110143D01* +X1184912Y110188D01* +X1184846Y110236D01* +X1184782Y110287D01* +X1184721Y110341D01* +X1184662Y110397D01* +X1184606Y110457D01* +X1184553Y110518D01* +X1184503Y110582D01* +X1184455Y110649D01* +X1184411Y110717D01* +X1184370Y110788D01* +X1184332Y110860D01* +X1184298Y110934D01* +X1184267Y111009D01* +X1184239Y111086D01* +X1184215Y111164D01* +X1184195Y111243D01* +X1184178Y111323D01* +X1184165Y111403D01* +X1184155Y111484D01* +X1184150Y111565D01* +X1184148Y111647D01* +X1184150Y111729D01* +X1184155Y111810D01* +X1184165Y111891D01* +X1184178Y111971D01* +X1184195Y112051D01* +X1184215Y112130D01* +X1184239Y112208D01* +X1184267Y112285D01* +X1184298Y112360D01* +X1184332Y112434D01* +X1184370Y112506D01* +X1184411Y112577D01* +X1184455Y112645D01* +X1184503Y112712D01* +X1184553Y112776D01* +X1184606Y112837D01* +X1184662Y112897D01* +X1184721Y112953D01* +X1184782Y113007D01* +X1184846Y113058D01* +X1184912Y113106D01* +X1184980Y113151D01* +X1185050Y113193D01* +X1185122Y113231D01* +X1185196Y113266D01* +X1185271Y113298D01* +X1185347Y113326D01* +X1185501Y113399D01* +X1185656Y113468D01* +X1185813Y113533D01* +X1185972Y113595D01* +X1186131Y113652D01* +X1186293Y113706D01* +X1186455Y113756D01* +X1186618Y113802D01* +X1186783Y113844D01* +X1186949Y113882D01* +X1187115Y113917D01* +X1187282Y113947D01* +X1187450Y113973D01* +X1187618Y113995D01* +X1187787Y114014D01* +X1187957Y114028D01* +X1188126Y114038D01* +X1188296Y114044D01* +X1188466Y114046D01* +X1188466Y109248D02* +X1188636Y109250D01* +X1188806Y109256D01* +X1188975Y109266D01* +X1189145Y109280D01* +X1189314Y109299D01* +X1189482Y109321D01* +X1189650Y109347D01* +X1189817Y109377D01* +X1189983Y109412D01* +X1190149Y109450D01* +X1190314Y109492D01* +X1190477Y109538D01* +X1190639Y109588D01* +X1190801Y109642D01* +X1190960Y109699D01* +X1191119Y109761D01* +X1191276Y109826D01* +X1191431Y109895D01* +X1191585Y109968D01* +X1191661Y109996D01* +X1191736Y110028D01* +X1191810Y110063D01* +X1191882Y110101D01* +X1191952Y110143D01* +X1192020Y110188D01* +X1192086Y110236D01* +X1192150Y110287D01* +X1192211Y110341D01* +X1192270Y110397D01* +X1192326Y110457D01* +X1192379Y110518D01* +X1192429Y110582D01* +X1192477Y110649D01* +X1192521Y110717D01* +X1192562Y110788D01* +X1192600Y110860D01* +X1192634Y110934D01* +X1192665Y111009D01* +X1192693Y111086D01* +X1192717Y111164D01* +X1192737Y111243D01* +X1192754Y111323D01* +X1192767Y111403D01* +X1192777Y111484D01* +X1192782Y111565D01* +X1192784Y111647D01* +X1191585Y113326D02* +X1191431Y113399D01* +X1191276Y113468D01* +X1191119Y113533D01* +X1190960Y113595D01* +X1190801Y113652D01* +X1190639Y113706D01* +X1190477Y113756D01* +X1190314Y113802D01* +X1190149Y113844D01* +X1189983Y113882D01* +X1189817Y113917D01* +X1189650Y113947D01* +X1189482Y113973D01* +X1189314Y113995D01* +X1189145Y114014D01* +X1188975Y114028D01* +X1188806Y114038D01* +X1188636Y114044D01* +X1188466Y114046D01* +X1191585Y113326D02* +X1191661Y113298D01* +X1191736Y113266D01* +X1191810Y113231D01* +X1191882Y113193D01* +X1191952Y113151D01* +X1192020Y113106D01* +X1192086Y113058D01* +X1192150Y113007D01* +X1192211Y112953D01* +X1192270Y112897D01* +X1192326Y112837D01* +X1192379Y112776D01* +X1192429Y112712D01* +X1192477Y112645D01* +X1192521Y112577D01* +X1192562Y112506D01* +X1192600Y112434D01* +X1192634Y112360D01* +X1192665Y112285D01* +X1192693Y112208D01* +X1192717Y112130D01* +X1192737Y112051D01* +X1192754Y111971D01* +X1192767Y111891D01* +X1192777Y111810D01* +X1192782Y111729D01* +X1192784Y111647D01* +X1190865Y109728D02* +X1186067Y113566D01* +D13* +X970280Y127000D03* +D14* +X976630Y118985D02* +X985266Y118985D01* +X976630Y118985D02* +X976630Y121384D01* +X976632Y121481D01* +X976638Y121577D01* +X976647Y121673D01* +X976661Y121769D01* +X976678Y121864D01* +X976700Y121958D01* +X976725Y122051D01* +X976753Y122144D01* +X976786Y122235D01* +X976822Y122324D01* +X976862Y122412D01* +X976905Y122499D01* +X976951Y122584D01* +X977001Y122666D01* +X977055Y122747D01* +X977111Y122825D01* +X977171Y122901D01* +X977233Y122975D01* +X977299Y123046D01* +X977367Y123114D01* +X977438Y123180D01* +X977512Y123242D01* +X977588Y123302D01* +X977666Y123358D01* +X977747Y123412D01* +X977830Y123462D01* +X977914Y123508D01* +X978001Y123551D01* +X978089Y123591D01* +X978178Y123627D01* +X978269Y123660D01* +X978362Y123688D01* +X978455Y123713D01* +X978549Y123735D01* +X978644Y123752D01* +X978740Y123766D01* +X978836Y123775D01* +X978932Y123781D01* +X979029Y123783D01* +X979126Y123781D01* +X979222Y123775D01* +X979318Y123766D01* +X979414Y123752D01* +X979509Y123735D01* +X979603Y123713D01* +X979696Y123688D01* +X979789Y123660D01* +X979880Y123627D01* +X979969Y123591D01* +X980057Y123551D01* +X980144Y123508D01* +X980229Y123462D01* +X980311Y123412D01* +X980392Y123358D01* +X980470Y123302D01* +X980546Y123242D01* +X980620Y123180D01* +X980691Y123114D01* +X980759Y123046D01* +X980825Y122975D01* +X980887Y122901D01* +X980947Y122825D01* +X981003Y122747D01* +X981057Y122666D01* +X981107Y122584D01* +X981153Y122499D01* +X981196Y122412D01* +X981236Y122324D01* +X981272Y122235D01* +X981305Y122144D01* +X981333Y122051D01* +X981358Y121958D01* +X981380Y121864D01* +X981397Y121769D01* +X981411Y121673D01* +X981420Y121577D01* +X981426Y121481D01* +X981428Y121384D01* +X981428Y118985D01* +X981428Y121864D02* +X985266Y123783D01* +X978549Y128044D02* +X976630Y130443D01* +X985266Y130443D01* +X985266Y128044D02* +X985266Y132842D01* +X978549Y137188D02* +X976630Y139587D01* +X985266Y139587D01* +X985266Y137188D02* +X985266Y141986D01* +D17* +X972820Y254000D03* +D14* +X962152Y248158D02* +X962152Y239522D01* +X962152Y248158D02* +X964551Y248158D01* +X964648Y248156D01* +X964744Y248150D01* +X964840Y248141D01* +X964936Y248127D01* +X965031Y248110D01* +X965125Y248088D01* +X965218Y248063D01* +X965311Y248035D01* +X965402Y248002D01* +X965491Y247966D01* +X965579Y247926D01* +X965666Y247883D01* +X965751Y247837D01* +X965833Y247787D01* +X965914Y247733D01* +X965992Y247677D01* +X966068Y247617D01* +X966142Y247555D01* +X966213Y247489D01* +X966281Y247421D01* +X966347Y247350D01* +X966409Y247276D01* +X966469Y247200D01* +X966525Y247122D01* +X966579Y247041D01* +X966629Y246958D01* +X966675Y246874D01* +X966718Y246787D01* +X966758Y246699D01* +X966794Y246610D01* +X966827Y246519D01* +X966855Y246426D01* +X966880Y246333D01* +X966902Y246239D01* +X966919Y246144D01* +X966933Y246048D01* +X966942Y245952D01* +X966948Y245856D01* +X966950Y245759D01* +X966948Y245662D01* +X966942Y245566D01* +X966933Y245470D01* +X966919Y245374D01* +X966902Y245279D01* +X966880Y245185D01* +X966855Y245092D01* +X966827Y244999D01* +X966794Y244908D01* +X966758Y244819D01* +X966718Y244731D01* +X966675Y244644D01* +X966629Y244560D01* +X966579Y244477D01* +X966525Y244396D01* +X966469Y244318D01* +X966409Y244242D01* +X966347Y244168D01* +X966281Y244097D01* +X966213Y244029D01* +X966142Y243963D01* +X966068Y243901D01* +X965992Y243841D01* +X965914Y243785D01* +X965833Y243731D01* +X965751Y243681D01* +X965666Y243635D01* +X965579Y243592D01* +X965491Y243552D01* +X965402Y243516D01* +X965311Y243483D01* +X965218Y243455D01* +X965125Y243430D01* +X965031Y243408D01* +X964936Y243391D01* +X964840Y243377D01* +X964744Y243368D01* +X964648Y243362D01* +X964551Y243360D01* +X962152Y243360D01* +X965031Y243360D02* +X966950Y239522D01* +X971211Y246239D02* +X973610Y248158D01* +X973610Y239522D01* +X971211Y239522D02* +X976009Y239522D01* +X982994Y248158D02* +X983086Y248156D01* +X983177Y248150D01* +X983268Y248141D01* +X983359Y248127D01* +X983449Y248110D01* +X983538Y248088D01* +X983626Y248063D01* +X983713Y248035D01* +X983799Y248002D01* +X983883Y247966D01* +X983966Y247927D01* +X984047Y247884D01* +X984126Y247837D01* +X984203Y247788D01* +X984278Y247735D01* +X984350Y247679D01* +X984420Y247620D01* +X984488Y247558D01* +X984553Y247493D01* +X984615Y247425D01* +X984674Y247355D01* +X984730Y247283D01* +X984783Y247208D01* +X984832Y247131D01* +X984879Y247052D01* +X984922Y246971D01* +X984961Y246888D01* +X984997Y246804D01* +X985030Y246718D01* +X985058Y246631D01* +X985083Y246543D01* +X985105Y246454D01* +X985122Y246364D01* +X985136Y246273D01* +X985145Y246182D01* +X985151Y246091D01* +X985153Y245999D01* +X982994Y248158D02* +X982891Y248156D01* +X982789Y248150D01* +X982687Y248141D01* +X982585Y248128D01* +X982484Y248111D01* +X982383Y248090D01* +X982284Y248066D01* +X982185Y248037D01* +X982088Y248006D01* +X981991Y247970D01* +X981896Y247932D01* +X981803Y247889D01* +X981711Y247843D01* +X981621Y247794D01* +X981533Y247742D01* +X981446Y247686D01* +X981362Y247627D01* +X981281Y247566D01* +X981201Y247501D01* +X981124Y247433D01* +X981049Y247362D01* +X980978Y247289D01* +X980909Y247213D01* +X980842Y247135D01* +X980779Y247054D01* +X980719Y246971D01* +X980662Y246886D01* +X980608Y246799D01* +X980557Y246709D01* +X980510Y246618D01* +X980466Y246526D01* +X980425Y246431D01* +X980388Y246336D01* +X980355Y246239D01* +X984433Y244320D02* +X984500Y244386D01* +X984564Y244455D01* +X984625Y244526D01* +X984683Y244600D01* +X984738Y244676D01* +X984790Y244754D01* +X984839Y244834D01* +X984885Y244916D01* +X984927Y245000D01* +X984966Y245086D01* +X985001Y245173D01* +X985032Y245261D01* +X985060Y245351D01* +X985085Y245441D01* +X985106Y245533D01* +X985123Y245625D01* +X985136Y245718D01* +X985145Y245811D01* +X985151Y245905D01* +X985153Y245999D01* +X984433Y244320D02* +X980355Y239522D01* +X985153Y239522D01* +D13* +X1041400Y91440D03* +D14* +X1044702Y102362D02* +X1036066Y102362D01* +X1036066Y104761D01* +X1036068Y104858D01* +X1036074Y104954D01* +X1036083Y105050D01* +X1036097Y105146D01* +X1036114Y105241D01* +X1036136Y105335D01* +X1036161Y105428D01* +X1036189Y105521D01* +X1036222Y105612D01* +X1036258Y105701D01* +X1036298Y105789D01* +X1036341Y105876D01* +X1036387Y105961D01* +X1036437Y106043D01* +X1036491Y106124D01* +X1036547Y106202D01* +X1036607Y106278D01* +X1036669Y106352D01* +X1036735Y106423D01* +X1036803Y106491D01* +X1036874Y106557D01* +X1036948Y106619D01* +X1037024Y106679D01* +X1037102Y106735D01* +X1037183Y106789D01* +X1037266Y106839D01* +X1037350Y106885D01* +X1037437Y106928D01* +X1037525Y106968D01* +X1037614Y107004D01* +X1037705Y107037D01* +X1037798Y107065D01* +X1037891Y107090D01* +X1037985Y107112D01* +X1038080Y107129D01* +X1038176Y107143D01* +X1038272Y107152D01* +X1038368Y107158D01* +X1038465Y107160D01* +X1038562Y107158D01* +X1038658Y107152D01* +X1038754Y107143D01* +X1038850Y107129D01* +X1038945Y107112D01* +X1039039Y107090D01* +X1039132Y107065D01* +X1039225Y107037D01* +X1039316Y107004D01* +X1039405Y106968D01* +X1039493Y106928D01* +X1039580Y106885D01* +X1039665Y106839D01* +X1039747Y106789D01* +X1039828Y106735D01* +X1039906Y106679D01* +X1039982Y106619D01* +X1040056Y106557D01* +X1040127Y106491D01* +X1040195Y106423D01* +X1040261Y106352D01* +X1040323Y106278D01* +X1040383Y106202D01* +X1040439Y106124D01* +X1040493Y106043D01* +X1040543Y105961D01* +X1040589Y105876D01* +X1040632Y105789D01* +X1040672Y105701D01* +X1040708Y105612D01* +X1040741Y105521D01* +X1040769Y105428D01* +X1040794Y105335D01* +X1040816Y105241D01* +X1040833Y105146D01* +X1040847Y105050D01* +X1040856Y104954D01* +X1040862Y104858D01* +X1040864Y104761D01* +X1040864Y102362D01* +X1040864Y105241D02* +X1044702Y107160D01* +X1037985Y111421D02* +X1036066Y113820D01* +X1044702Y113820D01* +X1044702Y111421D02* +X1044702Y116219D01* +X1042783Y120565D02* +X1036066Y122484D01* +X1042783Y120565D02* +X1042783Y125363D01* +X1040864Y123924D02* +X1044702Y123924D01* +D17* +X434340Y210820D03* +D14* +X399401Y209042D02* +X399401Y217678D01* +X401800Y217678D01* +X401897Y217676D01* +X401993Y217670D01* +X402089Y217661D01* +X402185Y217647D01* +X402280Y217630D01* +X402374Y217608D01* +X402467Y217583D01* +X402560Y217555D01* +X402651Y217522D01* +X402740Y217486D01* +X402828Y217446D01* +X402915Y217403D01* +X403000Y217357D01* +X403082Y217307D01* +X403163Y217253D01* +X403241Y217197D01* +X403317Y217137D01* +X403391Y217075D01* +X403462Y217009D01* +X403530Y216941D01* +X403596Y216870D01* +X403658Y216796D01* +X403718Y216720D01* +X403774Y216642D01* +X403828Y216561D01* +X403878Y216478D01* +X403924Y216394D01* +X403967Y216307D01* +X404007Y216219D01* +X404043Y216130D01* +X404076Y216039D01* +X404104Y215946D01* +X404129Y215853D01* +X404151Y215759D01* +X404168Y215664D01* +X404182Y215568D01* +X404191Y215472D01* +X404197Y215376D01* +X404199Y215279D01* +X404197Y215182D01* +X404191Y215086D01* +X404182Y214990D01* +X404168Y214894D01* +X404151Y214799D01* +X404129Y214705D01* +X404104Y214612D01* +X404076Y214519D01* +X404043Y214428D01* +X404007Y214339D01* +X403967Y214251D01* +X403924Y214164D01* +X403878Y214080D01* +X403828Y213997D01* +X403774Y213916D01* +X403718Y213838D01* +X403658Y213762D01* +X403596Y213688D01* +X403530Y213617D01* +X403462Y213549D01* +X403391Y213483D01* +X403317Y213421D01* +X403241Y213361D01* +X403163Y213305D01* +X403082Y213251D01* +X403000Y213201D01* +X402915Y213155D01* +X402828Y213112D01* +X402740Y213072D01* +X402651Y213036D01* +X402560Y213003D01* +X402467Y212975D01* +X402374Y212950D01* +X402280Y212928D01* +X402185Y212911D01* +X402089Y212897D01* +X401993Y212888D01* +X401897Y212882D01* +X401800Y212880D01* +X399401Y212880D01* +X402280Y212880D02* +X404199Y209042D01* +X408460Y209042D02* +X410859Y209042D01* +X410956Y209044D01* +X411052Y209050D01* +X411148Y209059D01* +X411244Y209073D01* +X411339Y209090D01* +X411433Y209112D01* +X411526Y209137D01* +X411619Y209165D01* +X411710Y209198D01* +X411799Y209234D01* +X411887Y209274D01* +X411974Y209317D01* +X412059Y209363D01* +X412141Y209413D01* +X412222Y209467D01* +X412300Y209523D01* +X412376Y209583D01* +X412450Y209645D01* +X412521Y209711D01* +X412589Y209779D01* +X412655Y209850D01* +X412717Y209924D01* +X412777Y210000D01* +X412833Y210078D01* +X412887Y210159D01* +X412937Y210242D01* +X412983Y210326D01* +X413026Y210413D01* +X413066Y210501D01* +X413102Y210590D01* +X413135Y210681D01* +X413163Y210774D01* +X413188Y210867D01* +X413210Y210961D01* +X413227Y211056D01* +X413241Y211152D01* +X413250Y211248D01* +X413256Y211344D01* +X413258Y211441D01* +X413256Y211538D01* +X413250Y211634D01* +X413241Y211730D01* +X413227Y211826D01* +X413210Y211921D01* +X413188Y212015D01* +X413163Y212108D01* +X413135Y212201D01* +X413102Y212292D01* +X413066Y212381D01* +X413026Y212469D01* +X412983Y212556D01* +X412937Y212640D01* +X412887Y212723D01* +X412833Y212804D01* +X412777Y212882D01* +X412717Y212958D01* +X412655Y213032D01* +X412589Y213103D01* +X412521Y213171D01* +X412450Y213237D01* +X412376Y213299D01* +X412300Y213359D01* +X412222Y213415D01* +X412141Y213469D01* +X412059Y213519D01* +X411974Y213565D01* +X411887Y213608D01* +X411799Y213648D01* +X411710Y213684D01* +X411619Y213717D01* +X411526Y213745D01* +X411433Y213770D01* +X411339Y213792D01* +X411244Y213809D01* +X411148Y213823D01* +X411052Y213832D01* +X410956Y213838D01* +X410859Y213840D01* +X411339Y217678D02* +X408460Y217678D01* +X411339Y217678D02* +X411425Y217676D01* +X411511Y217670D01* +X411597Y217661D01* +X411682Y217647D01* +X411766Y217630D01* +X411850Y217609D01* +X411932Y217584D01* +X412013Y217556D01* +X412093Y217524D01* +X412172Y217488D01* +X412248Y217449D01* +X412323Y217406D01* +X412396Y217361D01* +X412467Y217312D01* +X412535Y217259D01* +X412602Y217204D01* +X412665Y217146D01* +X412726Y217085D01* +X412784Y217022D01* +X412839Y216955D01* +X412892Y216887D01* +X412941Y216816D01* +X412986Y216743D01* +X413029Y216668D01* +X413068Y216592D01* +X413104Y216513D01* +X413136Y216433D01* +X413164Y216352D01* +X413189Y216270D01* +X413210Y216186D01* +X413227Y216102D01* +X413241Y216017D01* +X413250Y215931D01* +X413256Y215845D01* +X413258Y215759D01* +X413256Y215673D01* +X413250Y215587D01* +X413241Y215501D01* +X413227Y215416D01* +X413210Y215332D01* +X413189Y215248D01* +X413164Y215166D01* +X413136Y215085D01* +X413104Y215005D01* +X413068Y214926D01* +X413029Y214850D01* +X412986Y214775D01* +X412941Y214702D01* +X412892Y214631D01* +X412839Y214563D01* +X412784Y214496D01* +X412726Y214433D01* +X412665Y214372D01* +X412602Y214314D01* +X412535Y214259D01* +X412467Y214206D01* +X412396Y214157D01* +X412323Y214112D01* +X412248Y214069D01* +X412172Y214030D01* +X412093Y213994D01* +X412013Y213962D01* +X411932Y213934D01* +X411850Y213909D01* +X411766Y213888D01* +X411682Y213871D01* +X411597Y213857D01* +X411511Y213848D01* +X411425Y213842D01* +X411339Y213840D01* +X409420Y213840D01* +X419523Y212880D02* +X422402Y212880D01* +X419523Y212880D02* +X419437Y212882D01* +X419351Y212888D01* +X419265Y212897D01* +X419180Y212911D01* +X419096Y212928D01* +X419012Y212949D01* +X418930Y212974D01* +X418849Y213002D01* +X418769Y213034D01* +X418690Y213070D01* +X418614Y213109D01* +X418539Y213152D01* +X418466Y213197D01* +X418395Y213246D01* +X418327Y213299D01* +X418260Y213354D01* +X418197Y213412D01* +X418136Y213473D01* +X418078Y213536D01* +X418023Y213603D01* +X417970Y213671D01* +X417921Y213742D01* +X417876Y213815D01* +X417833Y213890D01* +X417794Y213966D01* +X417758Y214045D01* +X417726Y214125D01* +X417698Y214206D01* +X417673Y214288D01* +X417652Y214372D01* +X417635Y214456D01* +X417621Y214541D01* +X417612Y214627D01* +X417606Y214713D01* +X417604Y214799D01* +X417604Y215279D01* +X417606Y215376D01* +X417612Y215472D01* +X417621Y215568D01* +X417635Y215664D01* +X417652Y215759D01* +X417674Y215853D01* +X417699Y215946D01* +X417727Y216039D01* +X417760Y216130D01* +X417796Y216219D01* +X417836Y216307D01* +X417879Y216394D01* +X417925Y216479D01* +X417975Y216561D01* +X418029Y216642D01* +X418085Y216720D01* +X418145Y216796D01* +X418207Y216870D01* +X418273Y216941D01* +X418341Y217009D01* +X418412Y217075D01* +X418486Y217137D01* +X418562Y217197D01* +X418640Y217253D01* +X418721Y217307D01* +X418804Y217357D01* +X418888Y217403D01* +X418975Y217446D01* +X419063Y217486D01* +X419152Y217522D01* +X419243Y217555D01* +X419336Y217583D01* +X419429Y217608D01* +X419523Y217630D01* +X419618Y217647D01* +X419714Y217661D01* +X419810Y217670D01* +X419906Y217676D01* +X420003Y217678D01* +X420100Y217676D01* +X420196Y217670D01* +X420292Y217661D01* +X420388Y217647D01* +X420483Y217630D01* +X420577Y217608D01* +X420670Y217583D01* +X420763Y217555D01* +X420854Y217522D01* +X420943Y217486D01* +X421031Y217446D01* +X421118Y217403D01* +X421203Y217357D01* +X421285Y217307D01* +X421366Y217253D01* +X421444Y217197D01* +X421520Y217137D01* +X421594Y217075D01* +X421665Y217009D01* +X421733Y216941D01* +X421799Y216870D01* +X421861Y216796D01* +X421921Y216720D01* +X421977Y216642D01* +X422031Y216561D01* +X422081Y216479D01* +X422127Y216394D01* +X422170Y216307D01* +X422210Y216219D01* +X422246Y216130D01* +X422279Y216039D01* +X422307Y215946D01* +X422332Y215853D01* +X422354Y215759D01* +X422371Y215664D01* +X422385Y215568D01* +X422394Y215472D01* +X422400Y215376D01* +X422402Y215279D01* +X422402Y212880D01* +X422400Y212757D01* +X422394Y212634D01* +X422384Y212511D01* +X422370Y212389D01* +X422353Y212267D01* +X422331Y212146D01* +X422306Y212026D01* +X422276Y211906D01* +X422243Y211788D01* +X422206Y211671D01* +X422166Y211554D01* +X422122Y211440D01* +X422074Y211326D01* +X422022Y211215D01* +X421967Y211105D01* +X421908Y210997D01* +X421846Y210890D01* +X421781Y210786D01* +X421712Y210684D01* +X421640Y210584D01* +X421565Y210487D01* +X421486Y210392D01* +X421405Y210300D01* +X421321Y210210D01* +X421234Y210123D01* +X421144Y210039D01* +X421052Y209958D01* +X420957Y209879D01* +X420860Y209804D01* +X420760Y209732D01* +X420658Y209663D01* +X420554Y209598D01* +X420447Y209536D01* +X420339Y209477D01* +X420229Y209422D01* +X420118Y209370D01* +X420004Y209323D01* +X419890Y209278D01* +X419773Y209238D01* +X419656Y209201D01* +X419538Y209168D01* +X419418Y209138D01* +X419298Y209113D01* +X419177Y209091D01* +X419055Y209074D01* +X418933Y209060D01* +X418810Y209050D01* +X418687Y209044D01* +X418564Y209042D01* +D17* +X434340Y175260D03* +D14* +X399147Y175006D02* +X399147Y166370D01* +X399147Y175006D02* +X401546Y175006D01* +X401643Y175004D01* +X401739Y174998D01* +X401835Y174989D01* +X401931Y174975D01* +X402026Y174958D01* +X402120Y174936D01* +X402213Y174911D01* +X402306Y174883D01* +X402397Y174850D01* +X402486Y174814D01* +X402574Y174774D01* +X402661Y174731D01* +X402746Y174685D01* +X402828Y174635D01* +X402909Y174581D01* +X402987Y174525D01* +X403063Y174465D01* +X403137Y174403D01* +X403208Y174337D01* +X403276Y174269D01* +X403342Y174198D01* +X403404Y174124D01* +X403464Y174048D01* +X403520Y173970D01* +X403574Y173889D01* +X403624Y173806D01* +X403670Y173722D01* +X403713Y173635D01* +X403753Y173547D01* +X403789Y173458D01* +X403822Y173367D01* +X403850Y173274D01* +X403875Y173181D01* +X403897Y173087D01* +X403914Y172992D01* +X403928Y172896D01* +X403937Y172800D01* +X403943Y172704D01* +X403945Y172607D01* +X403943Y172510D01* +X403937Y172414D01* +X403928Y172318D01* +X403914Y172222D01* +X403897Y172127D01* +X403875Y172033D01* +X403850Y171940D01* +X403822Y171847D01* +X403789Y171756D01* +X403753Y171667D01* +X403713Y171579D01* +X403670Y171492D01* +X403624Y171408D01* +X403574Y171325D01* +X403520Y171244D01* +X403464Y171166D01* +X403404Y171090D01* +X403342Y171016D01* +X403276Y170945D01* +X403208Y170877D01* +X403137Y170811D01* +X403063Y170749D01* +X402987Y170689D01* +X402909Y170633D01* +X402828Y170579D01* +X402746Y170529D01* +X402661Y170483D01* +X402574Y170440D01* +X402486Y170400D01* +X402397Y170364D01* +X402306Y170331D01* +X402213Y170303D01* +X402120Y170278D01* +X402026Y170256D01* +X401931Y170239D01* +X401835Y170225D01* +X401739Y170216D01* +X401643Y170210D01* +X401546Y170208D01* +X399147Y170208D01* +X402026Y170208D02* +X403945Y166370D01* +X408206Y166370D02* +X410605Y166370D01* +X410702Y166372D01* +X410798Y166378D01* +X410894Y166387D01* +X410990Y166401D01* +X411085Y166418D01* +X411179Y166440D01* +X411272Y166465D01* +X411365Y166493D01* +X411456Y166526D01* +X411545Y166562D01* +X411633Y166602D01* +X411720Y166645D01* +X411805Y166691D01* +X411887Y166741D01* +X411968Y166795D01* +X412046Y166851D01* +X412122Y166911D01* +X412196Y166973D01* +X412267Y167039D01* +X412335Y167107D01* +X412401Y167178D01* +X412463Y167252D01* +X412523Y167328D01* +X412579Y167406D01* +X412633Y167487D01* +X412683Y167570D01* +X412729Y167654D01* +X412772Y167741D01* +X412812Y167829D01* +X412848Y167918D01* +X412881Y168009D01* +X412909Y168102D01* +X412934Y168195D01* +X412956Y168289D01* +X412973Y168384D01* +X412987Y168480D01* +X412996Y168576D01* +X413002Y168672D01* +X413004Y168769D01* +X413002Y168866D01* +X412996Y168962D01* +X412987Y169058D01* +X412973Y169154D01* +X412956Y169249D01* +X412934Y169343D01* +X412909Y169436D01* +X412881Y169529D01* +X412848Y169620D01* +X412812Y169709D01* +X412772Y169797D01* +X412729Y169884D01* +X412683Y169968D01* +X412633Y170051D01* +X412579Y170132D01* +X412523Y170210D01* +X412463Y170286D01* +X412401Y170360D01* +X412335Y170431D01* +X412267Y170499D01* +X412196Y170565D01* +X412122Y170627D01* +X412046Y170687D01* +X411968Y170743D01* +X411887Y170797D01* +X411805Y170847D01* +X411720Y170893D01* +X411633Y170936D01* +X411545Y170976D01* +X411456Y171012D01* +X411365Y171045D01* +X411272Y171073D01* +X411179Y171098D01* +X411085Y171120D01* +X410990Y171137D01* +X410894Y171151D01* +X410798Y171160D01* +X410702Y171166D01* +X410605Y171168D01* +X411085Y175006D02* +X408206Y175006D01* +X411085Y175006D02* +X411171Y175004D01* +X411257Y174998D01* +X411343Y174989D01* +X411428Y174975D01* +X411512Y174958D01* +X411596Y174937D01* +X411678Y174912D01* +X411759Y174884D01* +X411839Y174852D01* +X411918Y174816D01* +X411994Y174777D01* +X412069Y174734D01* +X412142Y174689D01* +X412213Y174640D01* +X412281Y174587D01* +X412348Y174532D01* +X412411Y174474D01* +X412472Y174413D01* +X412530Y174350D01* +X412585Y174283D01* +X412638Y174215D01* +X412687Y174144D01* +X412732Y174071D01* +X412775Y173996D01* +X412814Y173920D01* +X412850Y173841D01* +X412882Y173761D01* +X412910Y173680D01* +X412935Y173598D01* +X412956Y173514D01* +X412973Y173430D01* +X412987Y173345D01* +X412996Y173259D01* +X413002Y173173D01* +X413004Y173087D01* +X413002Y173001D01* +X412996Y172915D01* +X412987Y172829D01* +X412973Y172744D01* +X412956Y172660D01* +X412935Y172576D01* +X412910Y172494D01* +X412882Y172413D01* +X412850Y172333D01* +X412814Y172254D01* +X412775Y172178D01* +X412732Y172103D01* +X412687Y172030D01* +X412638Y171959D01* +X412585Y171891D01* +X412530Y171824D01* +X412472Y171761D01* +X412411Y171700D01* +X412348Y171642D01* +X412281Y171587D01* +X412213Y171534D01* +X412142Y171485D01* +X412069Y171440D01* +X411994Y171397D01* +X411918Y171358D01* +X411839Y171322D01* +X411759Y171290D01* +X411678Y171262D01* +X411596Y171237D01* +X411512Y171216D01* +X411428Y171199D01* +X411343Y171185D01* +X411257Y171176D01* +X411171Y171170D01* +X411085Y171168D01* +X409166Y171168D01* +X417350Y168769D02* +X417352Y168866D01* +X417358Y168962D01* +X417367Y169058D01* +X417381Y169154D01* +X417398Y169249D01* +X417420Y169343D01* +X417445Y169436D01* +X417473Y169529D01* +X417506Y169620D01* +X417542Y169709D01* +X417582Y169797D01* +X417625Y169884D01* +X417671Y169969D01* +X417721Y170051D01* +X417775Y170132D01* +X417831Y170210D01* +X417891Y170286D01* +X417953Y170360D01* +X418019Y170431D01* +X418087Y170499D01* +X418158Y170565D01* +X418232Y170627D01* +X418308Y170687D01* +X418386Y170743D01* +X418467Y170797D01* +X418550Y170847D01* +X418634Y170893D01* +X418721Y170936D01* +X418809Y170976D01* +X418898Y171012D01* +X418989Y171045D01* +X419082Y171073D01* +X419175Y171098D01* +X419269Y171120D01* +X419364Y171137D01* +X419460Y171151D01* +X419556Y171160D01* +X419652Y171166D01* +X419749Y171168D01* +X419846Y171166D01* +X419942Y171160D01* +X420038Y171151D01* +X420134Y171137D01* +X420229Y171120D01* +X420323Y171098D01* +X420416Y171073D01* +X420509Y171045D01* +X420600Y171012D01* +X420689Y170976D01* +X420777Y170936D01* +X420864Y170893D01* +X420949Y170847D01* +X421031Y170797D01* +X421112Y170743D01* +X421190Y170687D01* +X421266Y170627D01* +X421340Y170565D01* +X421411Y170499D01* +X421479Y170431D01* +X421545Y170360D01* +X421607Y170286D01* +X421667Y170210D01* +X421723Y170132D01* +X421777Y170051D01* +X421827Y169969D01* +X421873Y169884D01* +X421916Y169797D01* +X421956Y169709D01* +X421992Y169620D01* +X422025Y169529D01* +X422053Y169436D01* +X422078Y169343D01* +X422100Y169249D01* +X422117Y169154D01* +X422131Y169058D01* +X422140Y168962D01* +X422146Y168866D01* +X422148Y168769D01* +X422146Y168672D01* +X422140Y168576D01* +X422131Y168480D01* +X422117Y168384D01* +X422100Y168289D01* +X422078Y168195D01* +X422053Y168102D01* +X422025Y168009D01* +X421992Y167918D01* +X421956Y167829D01* +X421916Y167741D01* +X421873Y167654D01* +X421827Y167569D01* +X421777Y167487D01* +X421723Y167406D01* +X421667Y167328D01* +X421607Y167252D01* +X421545Y167178D01* +X421479Y167107D01* +X421411Y167039D01* +X421340Y166973D01* +X421266Y166911D01* +X421190Y166851D01* +X421112Y166795D01* +X421031Y166741D01* +X420949Y166691D01* +X420864Y166645D01* +X420777Y166602D01* +X420689Y166562D01* +X420600Y166526D01* +X420509Y166493D01* +X420416Y166465D01* +X420323Y166440D01* +X420229Y166418D01* +X420134Y166401D01* +X420038Y166387D01* +X419942Y166378D01* +X419846Y166372D01* +X419749Y166370D01* +X419652Y166372D01* +X419556Y166378D01* +X419460Y166387D01* +X419364Y166401D01* +X419269Y166418D01* +X419175Y166440D01* +X419082Y166465D01* +X418989Y166493D01* +X418898Y166526D01* +X418809Y166562D01* +X418721Y166602D01* +X418634Y166645D01* +X418550Y166691D01* +X418467Y166741D01* +X418386Y166795D01* +X418308Y166851D01* +X418232Y166911D01* +X418158Y166973D01* +X418087Y167039D01* +X418019Y167107D01* +X417953Y167178D01* +X417891Y167252D01* +X417831Y167328D01* +X417775Y167406D01* +X417721Y167487D01* +X417671Y167570D01* +X417625Y167654D01* +X417582Y167741D01* +X417542Y167829D01* +X417506Y167918D01* +X417473Y168009D01* +X417445Y168102D01* +X417420Y168195D01* +X417398Y168289D01* +X417381Y168384D01* +X417367Y168480D01* +X417358Y168576D01* +X417352Y168672D01* +X417350Y168769D01* +X417830Y173087D02* +X417832Y173173D01* +X417838Y173259D01* +X417847Y173345D01* +X417861Y173430D01* +X417878Y173514D01* +X417899Y173598D01* +X417924Y173680D01* +X417952Y173761D01* +X417984Y173841D01* +X418020Y173920D01* +X418059Y173996D01* +X418102Y174071D01* +X418147Y174144D01* +X418196Y174215D01* +X418249Y174283D01* +X418304Y174350D01* +X418362Y174413D01* +X418423Y174474D01* +X418486Y174532D01* +X418553Y174587D01* +X418621Y174640D01* +X418692Y174689D01* +X418765Y174734D01* +X418840Y174777D01* +X418916Y174816D01* +X418995Y174852D01* +X419075Y174884D01* +X419156Y174912D01* +X419238Y174937D01* +X419322Y174958D01* +X419406Y174975D01* +X419491Y174989D01* +X419577Y174998D01* +X419663Y175004D01* +X419749Y175006D01* +X419835Y175004D01* +X419921Y174998D01* +X420007Y174989D01* +X420092Y174975D01* +X420176Y174958D01* +X420260Y174937D01* +X420342Y174912D01* +X420423Y174884D01* +X420503Y174852D01* +X420582Y174816D01* +X420658Y174777D01* +X420733Y174734D01* +X420806Y174689D01* +X420877Y174640D01* +X420945Y174587D01* +X421012Y174532D01* +X421075Y174474D01* +X421136Y174413D01* +X421194Y174350D01* +X421249Y174283D01* +X421302Y174215D01* +X421351Y174144D01* +X421396Y174071D01* +X421439Y173996D01* +X421478Y173920D01* +X421514Y173841D01* +X421546Y173761D01* +X421574Y173680D01* +X421599Y173598D01* +X421620Y173514D01* +X421637Y173430D01* +X421651Y173345D01* +X421660Y173259D01* +X421666Y173173D01* +X421668Y173087D01* +X421666Y173001D01* +X421660Y172915D01* +X421651Y172829D01* +X421637Y172744D01* +X421620Y172660D01* +X421599Y172576D01* +X421574Y172494D01* +X421546Y172413D01* +X421514Y172333D01* +X421478Y172254D01* +X421439Y172178D01* +X421396Y172103D01* +X421351Y172030D01* +X421302Y171959D01* +X421249Y171891D01* +X421194Y171824D01* +X421136Y171761D01* +X421075Y171700D01* +X421012Y171642D01* +X420945Y171587D01* +X420877Y171534D01* +X420806Y171485D01* +X420733Y171440D01* +X420658Y171397D01* +X420582Y171358D01* +X420503Y171322D01* +X420423Y171290D01* +X420342Y171262D01* +X420260Y171237D01* +X420176Y171216D01* +X420092Y171199D01* +X420007Y171185D01* +X419921Y171176D01* +X419835Y171170D01* +X419749Y171168D01* +X419663Y171170D01* +X419577Y171176D01* +X419491Y171185D01* +X419406Y171199D01* +X419322Y171216D01* +X419238Y171237D01* +X419156Y171262D01* +X419075Y171290D01* +X418995Y171322D01* +X418916Y171358D01* +X418840Y171397D01* +X418765Y171440D01* +X418692Y171485D01* +X418621Y171534D01* +X418553Y171587D01* +X418486Y171642D01* +X418423Y171700D01* +X418362Y171761D01* +X418304Y171824D01* +X418249Y171891D01* +X418196Y171959D01* +X418147Y172030D01* +X418102Y172103D01* +X418059Y172178D01* +X418020Y172254D01* +X417984Y172333D01* +X417952Y172413D01* +X417924Y172494D01* +X417899Y172576D01* +X417878Y172660D01* +X417861Y172744D01* +X417847Y172829D01* +X417838Y172915D01* +X417832Y173001D01* +X417830Y173087D01* +D17* +X426720Y185420D03* +D14* +X392289Y188722D02* +X392289Y180086D01* +X392289Y188722D02* +X394688Y188722D01* +X394785Y188720D01* +X394881Y188714D01* +X394977Y188705D01* +X395073Y188691D01* +X395168Y188674D01* +X395262Y188652D01* +X395355Y188627D01* +X395448Y188599D01* +X395539Y188566D01* +X395628Y188530D01* +X395716Y188490D01* +X395803Y188447D01* +X395888Y188401D01* +X395970Y188351D01* +X396051Y188297D01* +X396129Y188241D01* +X396205Y188181D01* +X396279Y188119D01* +X396350Y188053D01* +X396418Y187985D01* +X396484Y187914D01* +X396546Y187840D01* +X396606Y187764D01* +X396662Y187686D01* +X396716Y187605D01* +X396766Y187522D01* +X396812Y187438D01* +X396855Y187351D01* +X396895Y187263D01* +X396931Y187174D01* +X396964Y187083D01* +X396992Y186990D01* +X397017Y186897D01* +X397039Y186803D01* +X397056Y186708D01* +X397070Y186612D01* +X397079Y186516D01* +X397085Y186420D01* +X397087Y186323D01* +X397085Y186226D01* +X397079Y186130D01* +X397070Y186034D01* +X397056Y185938D01* +X397039Y185843D01* +X397017Y185749D01* +X396992Y185656D01* +X396964Y185563D01* +X396931Y185472D01* +X396895Y185383D01* +X396855Y185295D01* +X396812Y185208D01* +X396766Y185124D01* +X396716Y185041D01* +X396662Y184960D01* +X396606Y184882D01* +X396546Y184806D01* +X396484Y184732D01* +X396418Y184661D01* +X396350Y184593D01* +X396279Y184527D01* +X396205Y184465D01* +X396129Y184405D01* +X396051Y184349D01* +X395970Y184295D01* +X395888Y184245D01* +X395803Y184199D01* +X395716Y184156D01* +X395628Y184116D01* +X395539Y184080D01* +X395448Y184047D01* +X395355Y184019D01* +X395262Y183994D01* +X395168Y183972D01* +X395073Y183955D01* +X394977Y183941D01* +X394881Y183932D01* +X394785Y183926D01* +X394688Y183924D01* +X392289Y183924D01* +X395168Y183924D02* +X397087Y180086D01* +X401348Y180086D02* +X403747Y180086D01* +X403844Y180088D01* +X403940Y180094D01* +X404036Y180103D01* +X404132Y180117D01* +X404227Y180134D01* +X404321Y180156D01* +X404414Y180181D01* +X404507Y180209D01* +X404598Y180242D01* +X404687Y180278D01* +X404775Y180318D01* +X404862Y180361D01* +X404947Y180407D01* +X405029Y180457D01* +X405110Y180511D01* +X405188Y180567D01* +X405264Y180627D01* +X405338Y180689D01* +X405409Y180755D01* +X405477Y180823D01* +X405543Y180894D01* +X405605Y180968D01* +X405665Y181044D01* +X405721Y181122D01* +X405775Y181203D01* +X405825Y181286D01* +X405871Y181370D01* +X405914Y181457D01* +X405954Y181545D01* +X405990Y181634D01* +X406023Y181725D01* +X406051Y181818D01* +X406076Y181911D01* +X406098Y182005D01* +X406115Y182100D01* +X406129Y182196D01* +X406138Y182292D01* +X406144Y182388D01* +X406146Y182485D01* +X406144Y182582D01* +X406138Y182678D01* +X406129Y182774D01* +X406115Y182870D01* +X406098Y182965D01* +X406076Y183059D01* +X406051Y183152D01* +X406023Y183245D01* +X405990Y183336D01* +X405954Y183425D01* +X405914Y183513D01* +X405871Y183600D01* +X405825Y183684D01* +X405775Y183767D01* +X405721Y183848D01* +X405665Y183926D01* +X405605Y184002D01* +X405543Y184076D01* +X405477Y184147D01* +X405409Y184215D01* +X405338Y184281D01* +X405264Y184343D01* +X405188Y184403D01* +X405110Y184459D01* +X405029Y184513D01* +X404947Y184563D01* +X404862Y184609D01* +X404775Y184652D01* +X404687Y184692D01* +X404598Y184728D01* +X404507Y184761D01* +X404414Y184789D01* +X404321Y184814D01* +X404227Y184836D01* +X404132Y184853D01* +X404036Y184867D01* +X403940Y184876D01* +X403844Y184882D01* +X403747Y184884D01* +X404227Y188722D02* +X401348Y188722D01* +X404227Y188722D02* +X404313Y188720D01* +X404399Y188714D01* +X404485Y188705D01* +X404570Y188691D01* +X404654Y188674D01* +X404738Y188653D01* +X404820Y188628D01* +X404901Y188600D01* +X404981Y188568D01* +X405060Y188532D01* +X405136Y188493D01* +X405211Y188450D01* +X405284Y188405D01* +X405355Y188356D01* +X405423Y188303D01* +X405490Y188248D01* +X405553Y188190D01* +X405614Y188129D01* +X405672Y188066D01* +X405727Y187999D01* +X405780Y187931D01* +X405829Y187860D01* +X405874Y187787D01* +X405917Y187712D01* +X405956Y187636D01* +X405992Y187557D01* +X406024Y187477D01* +X406052Y187396D01* +X406077Y187314D01* +X406098Y187230D01* +X406115Y187146D01* +X406129Y187061D01* +X406138Y186975D01* +X406144Y186889D01* +X406146Y186803D01* +X406144Y186717D01* +X406138Y186631D01* +X406129Y186545D01* +X406115Y186460D01* +X406098Y186376D01* +X406077Y186292D01* +X406052Y186210D01* +X406024Y186129D01* +X405992Y186049D01* +X405956Y185970D01* +X405917Y185894D01* +X405874Y185819D01* +X405829Y185746D01* +X405780Y185675D01* +X405727Y185607D01* +X405672Y185540D01* +X405614Y185477D01* +X405553Y185416D01* +X405490Y185358D01* +X405423Y185303D01* +X405355Y185250D01* +X405284Y185201D01* +X405211Y185156D01* +X405136Y185113D01* +X405060Y185074D01* +X404981Y185038D01* +X404901Y185006D01* +X404820Y184978D01* +X404738Y184953D01* +X404654Y184932D01* +X404570Y184915D01* +X404485Y184901D01* +X404399Y184892D01* +X404313Y184886D01* +X404227Y184884D01* +X402308Y184884D01* +X410492Y187762D02* +X410492Y188722D01* +X415290Y188722D01* +X412891Y180086D01* +D17* +X426720Y200660D03* +D14* +X392543Y203454D02* +X392543Y194818D01* +X392543Y203454D02* +X394942Y203454D01* +X395039Y203452D01* +X395135Y203446D01* +X395231Y203437D01* +X395327Y203423D01* +X395422Y203406D01* +X395516Y203384D01* +X395609Y203359D01* +X395702Y203331D01* +X395793Y203298D01* +X395882Y203262D01* +X395970Y203222D01* +X396057Y203179D01* +X396142Y203133D01* +X396224Y203083D01* +X396305Y203029D01* +X396383Y202973D01* +X396459Y202913D01* +X396533Y202851D01* +X396604Y202785D01* +X396672Y202717D01* +X396738Y202646D01* +X396800Y202572D01* +X396860Y202496D01* +X396916Y202418D01* +X396970Y202337D01* +X397020Y202254D01* +X397066Y202170D01* +X397109Y202083D01* +X397149Y201995D01* +X397185Y201906D01* +X397218Y201815D01* +X397246Y201722D01* +X397271Y201629D01* +X397293Y201535D01* +X397310Y201440D01* +X397324Y201344D01* +X397333Y201248D01* +X397339Y201152D01* +X397341Y201055D01* +X397339Y200958D01* +X397333Y200862D01* +X397324Y200766D01* +X397310Y200670D01* +X397293Y200575D01* +X397271Y200481D01* +X397246Y200388D01* +X397218Y200295D01* +X397185Y200204D01* +X397149Y200115D01* +X397109Y200027D01* +X397066Y199940D01* +X397020Y199856D01* +X396970Y199773D01* +X396916Y199692D01* +X396860Y199614D01* +X396800Y199538D01* +X396738Y199464D01* +X396672Y199393D01* +X396604Y199325D01* +X396533Y199259D01* +X396459Y199197D01* +X396383Y199137D01* +X396305Y199081D01* +X396224Y199027D01* +X396142Y198977D01* +X396057Y198931D01* +X395970Y198888D01* +X395882Y198848D01* +X395793Y198812D01* +X395702Y198779D01* +X395609Y198751D01* +X395516Y198726D01* +X395422Y198704D01* +X395327Y198687D01* +X395231Y198673D01* +X395135Y198664D01* +X395039Y198658D01* +X394942Y198656D01* +X392543Y198656D01* +X395422Y198656D02* +X397341Y194818D01* +X401602Y196737D02* +X403521Y203454D01* +X401602Y196737D02* +X406400Y196737D01* +X404961Y198656D02* +X404961Y194818D01* +X413385Y203454D02* +X413477Y203452D01* +X413568Y203446D01* +X413659Y203437D01* +X413750Y203423D01* +X413840Y203406D01* +X413929Y203384D01* +X414017Y203359D01* +X414104Y203331D01* +X414190Y203298D01* +X414274Y203262D01* +X414357Y203223D01* +X414438Y203180D01* +X414517Y203133D01* +X414594Y203084D01* +X414669Y203031D01* +X414741Y202975D01* +X414811Y202916D01* +X414879Y202854D01* +X414944Y202789D01* +X415006Y202721D01* +X415065Y202651D01* +X415121Y202579D01* +X415174Y202504D01* +X415223Y202427D01* +X415270Y202348D01* +X415313Y202267D01* +X415352Y202184D01* +X415388Y202100D01* +X415421Y202014D01* +X415449Y201927D01* +X415474Y201839D01* +X415496Y201750D01* +X415513Y201660D01* +X415527Y201569D01* +X415536Y201478D01* +X415542Y201387D01* +X415544Y201295D01* +X413385Y203454D02* +X413282Y203452D01* +X413180Y203446D01* +X413078Y203437D01* +X412976Y203424D01* +X412875Y203407D01* +X412774Y203386D01* +X412675Y203362D01* +X412576Y203333D01* +X412479Y203302D01* +X412382Y203266D01* +X412287Y203228D01* +X412194Y203185D01* +X412102Y203139D01* +X412012Y203090D01* +X411924Y203038D01* +X411837Y202982D01* +X411753Y202923D01* +X411672Y202862D01* +X411592Y202797D01* +X411515Y202729D01* +X411440Y202658D01* +X411369Y202585D01* +X411300Y202509D01* +X411233Y202431D01* +X411170Y202350D01* +X411110Y202267D01* +X411053Y202182D01* +X410999Y202095D01* +X410948Y202005D01* +X410901Y201914D01* +X410857Y201822D01* +X410816Y201727D01* +X410779Y201632D01* +X410746Y201535D01* +X414824Y199616D02* +X414891Y199682D01* +X414955Y199751D01* +X415016Y199822D01* +X415074Y199896D01* +X415129Y199972D01* +X415181Y200050D01* +X415230Y200130D01* +X415276Y200212D01* +X415318Y200296D01* +X415357Y200382D01* +X415392Y200469D01* +X415423Y200557D01* +X415451Y200647D01* +X415476Y200737D01* +X415497Y200829D01* +X415514Y200921D01* +X415527Y201014D01* +X415536Y201107D01* +X415542Y201201D01* +X415544Y201295D01* +X414824Y199616D02* +X410746Y194818D01* +X415544Y194818D01* +D17* +X533400Y203200D03* +D14* +X546354Y200152D02* +X546354Y208788D01* +X548753Y208788D01* +X548850Y208786D01* +X548946Y208780D01* +X549042Y208771D01* +X549138Y208757D01* +X549233Y208740D01* +X549327Y208718D01* +X549420Y208693D01* +X549513Y208665D01* +X549604Y208632D01* +X549693Y208596D01* +X549781Y208556D01* +X549868Y208513D01* +X549953Y208467D01* +X550035Y208417D01* +X550116Y208363D01* +X550194Y208307D01* +X550270Y208247D01* +X550344Y208185D01* +X550415Y208119D01* +X550483Y208051D01* +X550549Y207980D01* +X550611Y207906D01* +X550671Y207830D01* +X550727Y207752D01* +X550781Y207671D01* +X550831Y207588D01* +X550877Y207504D01* +X550920Y207417D01* +X550960Y207329D01* +X550996Y207240D01* +X551029Y207149D01* +X551057Y207056D01* +X551082Y206963D01* +X551104Y206869D01* +X551121Y206774D01* +X551135Y206678D01* +X551144Y206582D01* +X551150Y206486D01* +X551152Y206389D01* +X551150Y206292D01* +X551144Y206196D01* +X551135Y206100D01* +X551121Y206004D01* +X551104Y205909D01* +X551082Y205815D01* +X551057Y205722D01* +X551029Y205629D01* +X550996Y205538D01* +X550960Y205449D01* +X550920Y205361D01* +X550877Y205274D01* +X550831Y205190D01* +X550781Y205107D01* +X550727Y205026D01* +X550671Y204948D01* +X550611Y204872D01* +X550549Y204798D01* +X550483Y204727D01* +X550415Y204659D01* +X550344Y204593D01* +X550270Y204531D01* +X550194Y204471D01* +X550116Y204415D01* +X550035Y204361D01* +X549953Y204311D01* +X549868Y204265D01* +X549781Y204222D01* +X549693Y204182D01* +X549604Y204146D01* +X549513Y204113D01* +X549420Y204085D01* +X549327Y204060D01* +X549233Y204038D01* +X549138Y204021D01* +X549042Y204007D01* +X548946Y203998D01* +X548850Y203992D01* +X548753Y203990D01* +X546354Y203990D01* +X549233Y203990D02* +X551152Y200152D01* +X555413Y200152D02* +X557812Y200152D01* +X557909Y200154D01* +X558005Y200160D01* +X558101Y200169D01* +X558197Y200183D01* +X558292Y200200D01* +X558386Y200222D01* +X558479Y200247D01* +X558572Y200275D01* +X558663Y200308D01* +X558752Y200344D01* +X558840Y200384D01* +X558927Y200427D01* +X559012Y200473D01* +X559094Y200523D01* +X559175Y200577D01* +X559253Y200633D01* +X559329Y200693D01* +X559403Y200755D01* +X559474Y200821D01* +X559542Y200889D01* +X559608Y200960D01* +X559670Y201034D01* +X559730Y201110D01* +X559786Y201188D01* +X559840Y201269D01* +X559890Y201352D01* +X559936Y201436D01* +X559979Y201523D01* +X560019Y201611D01* +X560055Y201700D01* +X560088Y201791D01* +X560116Y201884D01* +X560141Y201977D01* +X560163Y202071D01* +X560180Y202166D01* +X560194Y202262D01* +X560203Y202358D01* +X560209Y202454D01* +X560211Y202551D01* +X560209Y202648D01* +X560203Y202744D01* +X560194Y202840D01* +X560180Y202936D01* +X560163Y203031D01* +X560141Y203125D01* +X560116Y203218D01* +X560088Y203311D01* +X560055Y203402D01* +X560019Y203491D01* +X559979Y203579D01* +X559936Y203666D01* +X559890Y203750D01* +X559840Y203833D01* +X559786Y203914D01* +X559730Y203992D01* +X559670Y204068D01* +X559608Y204142D01* +X559542Y204213D01* +X559474Y204281D01* +X559403Y204347D01* +X559329Y204409D01* +X559253Y204469D01* +X559175Y204525D01* +X559094Y204579D01* +X559012Y204629D01* +X558927Y204675D01* +X558840Y204718D01* +X558752Y204758D01* +X558663Y204794D01* +X558572Y204827D01* +X558479Y204855D01* +X558386Y204880D01* +X558292Y204902D01* +X558197Y204919D01* +X558101Y204933D01* +X558005Y204942D01* +X557909Y204948D01* +X557812Y204950D01* +X558292Y208788D02* +X555413Y208788D01* +X558292Y208788D02* +X558378Y208786D01* +X558464Y208780D01* +X558550Y208771D01* +X558635Y208757D01* +X558719Y208740D01* +X558803Y208719D01* +X558885Y208694D01* +X558966Y208666D01* +X559046Y208634D01* +X559125Y208598D01* +X559201Y208559D01* +X559276Y208516D01* +X559349Y208471D01* +X559420Y208422D01* +X559488Y208369D01* +X559555Y208314D01* +X559618Y208256D01* +X559679Y208195D01* +X559737Y208132D01* +X559792Y208065D01* +X559845Y207997D01* +X559894Y207926D01* +X559939Y207853D01* +X559982Y207778D01* +X560021Y207702D01* +X560057Y207623D01* +X560089Y207543D01* +X560117Y207462D01* +X560142Y207380D01* +X560163Y207296D01* +X560180Y207212D01* +X560194Y207127D01* +X560203Y207041D01* +X560209Y206955D01* +X560211Y206869D01* +X560209Y206783D01* +X560203Y206697D01* +X560194Y206611D01* +X560180Y206526D01* +X560163Y206442D01* +X560142Y206358D01* +X560117Y206276D01* +X560089Y206195D01* +X560057Y206115D01* +X560021Y206036D01* +X559982Y205960D01* +X559939Y205885D01* +X559894Y205812D01* +X559845Y205741D01* +X559792Y205673D01* +X559737Y205606D01* +X559679Y205543D01* +X559618Y205482D01* +X559555Y205424D01* +X559488Y205369D01* +X559420Y205316D01* +X559349Y205267D01* +X559276Y205222D01* +X559201Y205179D01* +X559125Y205140D01* +X559046Y205104D01* +X558966Y205072D01* +X558885Y205044D01* +X558803Y205019D01* +X558719Y204998D01* +X558635Y204981D01* +X558550Y204967D01* +X558464Y204958D01* +X558378Y204952D01* +X558292Y204950D01* +X556373Y204950D01* +X564557Y204950D02* +X567436Y204950D01* +X567522Y204948D01* +X567608Y204942D01* +X567694Y204933D01* +X567779Y204919D01* +X567863Y204902D01* +X567947Y204881D01* +X568029Y204856D01* +X568110Y204828D01* +X568190Y204796D01* +X568269Y204760D01* +X568345Y204721D01* +X568420Y204678D01* +X568493Y204633D01* +X568564Y204584D01* +X568632Y204531D01* +X568699Y204476D01* +X568762Y204418D01* +X568823Y204357D01* +X568881Y204294D01* +X568936Y204227D01* +X568989Y204159D01* +X569038Y204088D01* +X569083Y204015D01* +X569126Y203940D01* +X569165Y203864D01* +X569201Y203785D01* +X569233Y203705D01* +X569261Y203624D01* +X569286Y203542D01* +X569307Y203458D01* +X569324Y203374D01* +X569338Y203289D01* +X569347Y203203D01* +X569353Y203117D01* +X569355Y203031D01* +X569355Y202551D01* +X569353Y202454D01* +X569347Y202358D01* +X569338Y202262D01* +X569324Y202166D01* +X569307Y202071D01* +X569285Y201977D01* +X569260Y201884D01* +X569232Y201791D01* +X569199Y201700D01* +X569163Y201611D01* +X569123Y201523D01* +X569080Y201436D01* +X569034Y201351D01* +X568984Y201269D01* +X568930Y201188D01* +X568874Y201110D01* +X568814Y201034D01* +X568752Y200960D01* +X568686Y200889D01* +X568618Y200821D01* +X568547Y200755D01* +X568473Y200693D01* +X568397Y200633D01* +X568319Y200577D01* +X568238Y200523D01* +X568156Y200473D01* +X568071Y200427D01* +X567984Y200384D01* +X567896Y200344D01* +X567807Y200308D01* +X567716Y200275D01* +X567623Y200247D01* +X567530Y200222D01* +X567436Y200200D01* +X567341Y200183D01* +X567245Y200169D01* +X567149Y200160D01* +X567053Y200154D01* +X566956Y200152D01* +X566859Y200154D01* +X566763Y200160D01* +X566667Y200169D01* +X566571Y200183D01* +X566476Y200200D01* +X566382Y200222D01* +X566289Y200247D01* +X566196Y200275D01* +X566105Y200308D01* +X566016Y200344D01* +X565928Y200384D01* +X565841Y200427D01* +X565757Y200473D01* +X565674Y200523D01* +X565593Y200577D01* +X565515Y200633D01* +X565439Y200693D01* +X565365Y200755D01* +X565294Y200821D01* +X565226Y200889D01* +X565160Y200960D01* +X565098Y201034D01* +X565038Y201110D01* +X564982Y201188D01* +X564928Y201269D01* +X564878Y201352D01* +X564832Y201436D01* +X564789Y201523D01* +X564749Y201611D01* +X564713Y201700D01* +X564680Y201791D01* +X564652Y201884D01* +X564627Y201977D01* +X564605Y202071D01* +X564588Y202166D01* +X564574Y202262D01* +X564565Y202358D01* +X564559Y202454D01* +X564557Y202551D01* +X564557Y204950D01* +X564558Y204950D02* +X564560Y205073D01* +X564566Y205196D01* +X564576Y205319D01* +X564590Y205441D01* +X564607Y205563D01* +X564629Y205684D01* +X564654Y205804D01* +X564684Y205924D01* +X564717Y206042D01* +X564754Y206159D01* +X564794Y206276D01* +X564838Y206390D01* +X564886Y206504D01* +X564938Y206615D01* +X564993Y206725D01* +X565052Y206833D01* +X565114Y206940D01* +X565179Y207044D01* +X565248Y207146D01* +X565320Y207246D01* +X565395Y207343D01* +X565474Y207438D01* +X565555Y207530D01* +X565639Y207620D01* +X565726Y207707D01* +X565816Y207791D01* +X565908Y207872D01* +X566003Y207951D01* +X566100Y208026D01* +X566200Y208098D01* +X566302Y208167D01* +X566406Y208232D01* +X566513Y208294D01* +X566621Y208353D01* +X566731Y208408D01* +X566842Y208460D01* +X566956Y208507D01* +X567070Y208552D01* +X567187Y208592D01* +X567304Y208629D01* +X567422Y208662D01* +X567542Y208692D01* +X567662Y208717D01* +X567783Y208739D01* +X567905Y208756D01* +X568027Y208770D01* +X568150Y208780D01* +X568273Y208786D01* +X568396Y208788D01* +D17* +X561340Y154940D03* +D14* +X573786Y156210D02* +X573786Y147574D01* +X573786Y156210D02* +X576185Y156210D01* +X576282Y156208D01* +X576378Y156202D01* +X576474Y156193D01* +X576570Y156179D01* +X576665Y156162D01* +X576759Y156140D01* +X576852Y156115D01* +X576945Y156087D01* +X577036Y156054D01* +X577125Y156018D01* +X577213Y155978D01* +X577300Y155935D01* +X577385Y155889D01* +X577467Y155839D01* +X577548Y155785D01* +X577626Y155729D01* +X577702Y155669D01* +X577776Y155607D01* +X577847Y155541D01* +X577915Y155473D01* +X577981Y155402D01* +X578043Y155328D01* +X578103Y155252D01* +X578159Y155174D01* +X578213Y155093D01* +X578263Y155010D01* +X578309Y154926D01* +X578352Y154839D01* +X578392Y154751D01* +X578428Y154662D01* +X578461Y154571D01* +X578489Y154478D01* +X578514Y154385D01* +X578536Y154291D01* +X578553Y154196D01* +X578567Y154100D01* +X578576Y154004D01* +X578582Y153908D01* +X578584Y153811D01* +X578582Y153714D01* +X578576Y153618D01* +X578567Y153522D01* +X578553Y153426D01* +X578536Y153331D01* +X578514Y153237D01* +X578489Y153144D01* +X578461Y153051D01* +X578428Y152960D01* +X578392Y152871D01* +X578352Y152783D01* +X578309Y152696D01* +X578263Y152612D01* +X578213Y152529D01* +X578159Y152448D01* +X578103Y152370D01* +X578043Y152294D01* +X577981Y152220D01* +X577915Y152149D01* +X577847Y152081D01* +X577776Y152015D01* +X577702Y151953D01* +X577626Y151893D01* +X577548Y151837D01* +X577467Y151783D01* +X577385Y151733D01* +X577300Y151687D01* +X577213Y151644D01* +X577125Y151604D01* +X577036Y151568D01* +X576945Y151535D01* +X576852Y151507D01* +X576759Y151482D01* +X576665Y151460D01* +X576570Y151443D01* +X576474Y151429D01* +X576378Y151420D01* +X576282Y151414D01* +X576185Y151412D01* +X573786Y151412D01* +X576665Y151412D02* +X578584Y147574D01* +X582845Y147574D02* +X585244Y147574D01* +X585341Y147576D01* +X585437Y147582D01* +X585533Y147591D01* +X585629Y147605D01* +X585724Y147622D01* +X585818Y147644D01* +X585911Y147669D01* +X586004Y147697D01* +X586095Y147730D01* +X586184Y147766D01* +X586272Y147806D01* +X586359Y147849D01* +X586444Y147895D01* +X586526Y147945D01* +X586607Y147999D01* +X586685Y148055D01* +X586761Y148115D01* +X586835Y148177D01* +X586906Y148243D01* +X586974Y148311D01* +X587040Y148382D01* +X587102Y148456D01* +X587162Y148532D01* +X587218Y148610D01* +X587272Y148691D01* +X587322Y148774D01* +X587368Y148858D01* +X587411Y148945D01* +X587451Y149033D01* +X587487Y149122D01* +X587520Y149213D01* +X587548Y149306D01* +X587573Y149399D01* +X587595Y149493D01* +X587612Y149588D01* +X587626Y149684D01* +X587635Y149780D01* +X587641Y149876D01* +X587643Y149973D01* +X587641Y150070D01* +X587635Y150166D01* +X587626Y150262D01* +X587612Y150358D01* +X587595Y150453D01* +X587573Y150547D01* +X587548Y150640D01* +X587520Y150733D01* +X587487Y150824D01* +X587451Y150913D01* +X587411Y151001D01* +X587368Y151088D01* +X587322Y151172D01* +X587272Y151255D01* +X587218Y151336D01* +X587162Y151414D01* +X587102Y151490D01* +X587040Y151564D01* +X586974Y151635D01* +X586906Y151703D01* +X586835Y151769D01* +X586761Y151831D01* +X586685Y151891D01* +X586607Y151947D01* +X586526Y152001D01* +X586444Y152051D01* +X586359Y152097D01* +X586272Y152140D01* +X586184Y152180D01* +X586095Y152216D01* +X586004Y152249D01* +X585911Y152277D01* +X585818Y152302D01* +X585724Y152324D01* +X585629Y152341D01* +X585533Y152355D01* +X585437Y152364D01* +X585341Y152370D01* +X585244Y152372D01* +X585724Y156210D02* +X582845Y156210D01* +X585724Y156210D02* +X585810Y156208D01* +X585896Y156202D01* +X585982Y156193D01* +X586067Y156179D01* +X586151Y156162D01* +X586235Y156141D01* +X586317Y156116D01* +X586398Y156088D01* +X586478Y156056D01* +X586557Y156020D01* +X586633Y155981D01* +X586708Y155938D01* +X586781Y155893D01* +X586852Y155844D01* +X586920Y155791D01* +X586987Y155736D01* +X587050Y155678D01* +X587111Y155617D01* +X587169Y155554D01* +X587224Y155487D01* +X587277Y155419D01* +X587326Y155348D01* +X587371Y155275D01* +X587414Y155200D01* +X587453Y155124D01* +X587489Y155045D01* +X587521Y154965D01* +X587549Y154884D01* +X587574Y154802D01* +X587595Y154718D01* +X587612Y154634D01* +X587626Y154549D01* +X587635Y154463D01* +X587641Y154377D01* +X587643Y154291D01* +X587641Y154205D01* +X587635Y154119D01* +X587626Y154033D01* +X587612Y153948D01* +X587595Y153864D01* +X587574Y153780D01* +X587549Y153698D01* +X587521Y153617D01* +X587489Y153537D01* +X587453Y153458D01* +X587414Y153382D01* +X587371Y153307D01* +X587326Y153234D01* +X587277Y153163D01* +X587224Y153095D01* +X587169Y153028D01* +X587111Y152965D01* +X587050Y152904D01* +X586987Y152846D01* +X586920Y152791D01* +X586852Y152738D01* +X586781Y152689D01* +X586708Y152644D01* +X586633Y152601D01* +X586557Y152562D01* +X586478Y152526D01* +X586398Y152494D01* +X586317Y152466D01* +X586235Y152441D01* +X586151Y152420D01* +X586067Y152403D01* +X585982Y152389D01* +X585896Y152380D01* +X585810Y152374D01* +X585724Y152372D01* +X583805Y152372D01* +X591989Y147574D02* +X594868Y147574D01* +X594954Y147576D01* +X595040Y147582D01* +X595126Y147591D01* +X595211Y147605D01* +X595295Y147622D01* +X595379Y147643D01* +X595461Y147668D01* +X595542Y147696D01* +X595622Y147728D01* +X595701Y147764D01* +X595777Y147803D01* +X595852Y147846D01* +X595925Y147891D01* +X595996Y147941D01* +X596064Y147993D01* +X596131Y148048D01* +X596194Y148106D01* +X596255Y148167D01* +X596313Y148230D01* +X596368Y148297D01* +X596421Y148365D01* +X596470Y148436D01* +X596515Y148509D01* +X596558Y148584D01* +X596597Y148660D01* +X596633Y148739D01* +X596665Y148819D01* +X596693Y148900D01* +X596718Y148983D01* +X596739Y149066D01* +X596756Y149150D01* +X596770Y149235D01* +X596779Y149321D01* +X596785Y149407D01* +X596787Y149493D01* +X596787Y150453D01* +X596785Y150539D01* +X596779Y150625D01* +X596770Y150711D01* +X596756Y150796D01* +X596739Y150880D01* +X596718Y150964D01* +X596693Y151046D01* +X596665Y151127D01* +X596633Y151207D01* +X596597Y151286D01* +X596558Y151362D01* +X596515Y151437D01* +X596470Y151510D01* +X596421Y151581D01* +X596368Y151649D01* +X596313Y151716D01* +X596255Y151779D01* +X596194Y151840D01* +X596131Y151898D01* +X596064Y151953D01* +X595996Y152006D01* +X595925Y152055D01* +X595852Y152100D01* +X595777Y152143D01* +X595701Y152182D01* +X595622Y152218D01* +X595542Y152250D01* +X595461Y152278D01* +X595379Y152303D01* +X595295Y152324D01* +X595211Y152341D01* +X595126Y152355D01* +X595040Y152364D01* +X594954Y152370D01* +X594868Y152372D01* +X591989Y152372D01* +X591989Y156210D01* +X596787Y156210D01* +D13* +X566420Y185420D03* +D14* +X581914Y195326D02* +X590550Y195326D01* +X581914Y195326D02* +X581914Y197725D01* +X581916Y197822D01* +X581922Y197918D01* +X581931Y198014D01* +X581945Y198110D01* +X581962Y198205D01* +X581984Y198299D01* +X582009Y198392D01* +X582037Y198485D01* +X582070Y198576D01* +X582106Y198665D01* +X582146Y198753D01* +X582189Y198840D01* +X582235Y198925D01* +X582285Y199007D01* +X582339Y199088D01* +X582395Y199166D01* +X582455Y199242D01* +X582517Y199316D01* +X582583Y199387D01* +X582651Y199455D01* +X582722Y199521D01* +X582796Y199583D01* +X582872Y199643D01* +X582950Y199699D01* +X583031Y199753D01* +X583114Y199803D01* +X583198Y199849D01* +X583285Y199892D01* +X583373Y199932D01* +X583462Y199968D01* +X583553Y200001D01* +X583646Y200029D01* +X583739Y200054D01* +X583833Y200076D01* +X583928Y200093D01* +X584024Y200107D01* +X584120Y200116D01* +X584216Y200122D01* +X584313Y200124D01* +X584410Y200122D01* +X584506Y200116D01* +X584602Y200107D01* +X584698Y200093D01* +X584793Y200076D01* +X584887Y200054D01* +X584980Y200029D01* +X585073Y200001D01* +X585164Y199968D01* +X585253Y199932D01* +X585341Y199892D01* +X585428Y199849D01* +X585513Y199803D01* +X585595Y199753D01* +X585676Y199699D01* +X585754Y199643D01* +X585830Y199583D01* +X585904Y199521D01* +X585975Y199455D01* +X586043Y199387D01* +X586109Y199316D01* +X586171Y199242D01* +X586231Y199166D01* +X586287Y199088D01* +X586341Y199007D01* +X586391Y198925D01* +X586437Y198840D01* +X586480Y198753D01* +X586520Y198665D01* +X586556Y198576D01* +X586589Y198485D01* +X586617Y198392D01* +X586642Y198299D01* +X586664Y198205D01* +X586681Y198110D01* +X586695Y198014D01* +X586704Y197918D01* +X586710Y197822D01* +X586712Y197725D01* +X586712Y195326D01* +X586712Y198205D02* +X590550Y200124D01* +X590550Y204385D02* +X590550Y206784D01* +X590548Y206881D01* +X590542Y206977D01* +X590533Y207073D01* +X590519Y207169D01* +X590502Y207264D01* +X590480Y207358D01* +X590455Y207451D01* +X590427Y207544D01* +X590394Y207635D01* +X590358Y207724D01* +X590318Y207812D01* +X590275Y207899D01* +X590229Y207984D01* +X590179Y208066D01* +X590125Y208147D01* +X590069Y208225D01* +X590009Y208301D01* +X589947Y208375D01* +X589881Y208446D01* +X589813Y208514D01* +X589742Y208580D01* +X589668Y208642D01* +X589592Y208702D01* +X589514Y208758D01* +X589433Y208812D01* +X589351Y208862D01* +X589266Y208908D01* +X589179Y208951D01* +X589091Y208991D01* +X589002Y209027D01* +X588911Y209060D01* +X588818Y209088D01* +X588725Y209113D01* +X588631Y209135D01* +X588536Y209152D01* +X588440Y209166D01* +X588344Y209175D01* +X588248Y209181D01* +X588151Y209183D01* +X588054Y209181D01* +X587958Y209175D01* +X587862Y209166D01* +X587766Y209152D01* +X587671Y209135D01* +X587577Y209113D01* +X587484Y209088D01* +X587391Y209060D01* +X587300Y209027D01* +X587211Y208991D01* +X587123Y208951D01* +X587036Y208908D01* +X586952Y208862D01* +X586869Y208812D01* +X586788Y208758D01* +X586710Y208702D01* +X586634Y208642D01* +X586560Y208580D01* +X586489Y208514D01* +X586421Y208446D01* +X586355Y208375D01* +X586293Y208301D01* +X586233Y208225D01* +X586177Y208147D01* +X586123Y208066D01* +X586073Y207984D01* +X586027Y207899D01* +X585984Y207812D01* +X585944Y207724D01* +X585908Y207635D01* +X585875Y207544D01* +X585847Y207451D01* +X585822Y207358D01* +X585800Y207264D01* +X585783Y207169D01* +X585769Y207073D01* +X585760Y206977D01* +X585754Y206881D01* +X585752Y206784D01* +X581914Y207264D02* +X581914Y204385D01* +X581914Y207264D02* +X581916Y207350D01* +X581922Y207436D01* +X581931Y207522D01* +X581945Y207607D01* +X581962Y207691D01* +X581983Y207775D01* +X582008Y207857D01* +X582036Y207938D01* +X582068Y208018D01* +X582104Y208097D01* +X582143Y208173D01* +X582186Y208248D01* +X582231Y208321D01* +X582280Y208392D01* +X582333Y208460D01* +X582388Y208527D01* +X582446Y208590D01* +X582507Y208651D01* +X582570Y208709D01* +X582637Y208764D01* +X582705Y208817D01* +X582776Y208866D01* +X582849Y208911D01* +X582924Y208954D01* +X583000Y208993D01* +X583079Y209029D01* +X583159Y209061D01* +X583240Y209089D01* +X583322Y209114D01* +X583406Y209135D01* +X583490Y209152D01* +X583575Y209166D01* +X583661Y209175D01* +X583747Y209181D01* +X583833Y209183D01* +X583919Y209181D01* +X584005Y209175D01* +X584091Y209166D01* +X584176Y209152D01* +X584260Y209135D01* +X584344Y209114D01* +X584426Y209089D01* +X584507Y209061D01* +X584587Y209029D01* +X584666Y208993D01* +X584742Y208954D01* +X584817Y208911D01* +X584890Y208866D01* +X584961Y208817D01* +X585029Y208764D01* +X585096Y208709D01* +X585159Y208651D01* +X585220Y208590D01* +X585278Y208527D01* +X585333Y208460D01* +X585386Y208392D01* +X585435Y208321D01* +X585480Y208248D01* +X585523Y208173D01* +X585562Y208097D01* +X585598Y208018D01* +X585630Y207938D01* +X585658Y207857D01* +X585683Y207775D01* +X585704Y207691D01* +X585721Y207607D01* +X585735Y207522D01* +X585744Y207436D01* +X585750Y207350D01* +X585752Y207264D01* +X585752Y205345D01* +X588631Y213529D02* +X581914Y215448D01* +X588631Y213529D02* +X588631Y218327D01* +X586712Y216888D02* +X590550Y216888D01* +D17* +X533400Y228600D03* +D14* +X545846Y226060D02* +X545846Y234696D01* +X548245Y234696D01* +X548342Y234694D01* +X548438Y234688D01* +X548534Y234679D01* +X548630Y234665D01* +X548725Y234648D01* +X548819Y234626D01* +X548912Y234601D01* +X549005Y234573D01* +X549096Y234540D01* +X549185Y234504D01* +X549273Y234464D01* +X549360Y234421D01* +X549445Y234375D01* +X549527Y234325D01* +X549608Y234271D01* +X549686Y234215D01* +X549762Y234155D01* +X549836Y234093D01* +X549907Y234027D01* +X549975Y233959D01* +X550041Y233888D01* +X550103Y233814D01* +X550163Y233738D01* +X550219Y233660D01* +X550273Y233579D01* +X550323Y233496D01* +X550369Y233412D01* +X550412Y233325D01* +X550452Y233237D01* +X550488Y233148D01* +X550521Y233057D01* +X550549Y232964D01* +X550574Y232871D01* +X550596Y232777D01* +X550613Y232682D01* +X550627Y232586D01* +X550636Y232490D01* +X550642Y232394D01* +X550644Y232297D01* +X550642Y232200D01* +X550636Y232104D01* +X550627Y232008D01* +X550613Y231912D01* +X550596Y231817D01* +X550574Y231723D01* +X550549Y231630D01* +X550521Y231537D01* +X550488Y231446D01* +X550452Y231357D01* +X550412Y231269D01* +X550369Y231182D01* +X550323Y231098D01* +X550273Y231015D01* +X550219Y230934D01* +X550163Y230856D01* +X550103Y230780D01* +X550041Y230706D01* +X549975Y230635D01* +X549907Y230567D01* +X549836Y230501D01* +X549762Y230439D01* +X549686Y230379D01* +X549608Y230323D01* +X549527Y230269D01* +X549445Y230219D01* +X549360Y230173D01* +X549273Y230130D01* +X549185Y230090D01* +X549096Y230054D01* +X549005Y230021D01* +X548912Y229993D01* +X548819Y229968D01* +X548725Y229946D01* +X548630Y229929D01* +X548534Y229915D01* +X548438Y229906D01* +X548342Y229900D01* +X548245Y229898D01* +X545846Y229898D01* +X548725Y229898D02* +X550644Y226060D01* +X554905Y226060D02* +X557304Y226060D01* +X557401Y226062D01* +X557497Y226068D01* +X557593Y226077D01* +X557689Y226091D01* +X557784Y226108D01* +X557878Y226130D01* +X557971Y226155D01* +X558064Y226183D01* +X558155Y226216D01* +X558244Y226252D01* +X558332Y226292D01* +X558419Y226335D01* +X558504Y226381D01* +X558586Y226431D01* +X558667Y226485D01* +X558745Y226541D01* +X558821Y226601D01* +X558895Y226663D01* +X558966Y226729D01* +X559034Y226797D01* +X559100Y226868D01* +X559162Y226942D01* +X559222Y227018D01* +X559278Y227096D01* +X559332Y227177D01* +X559382Y227260D01* +X559428Y227344D01* +X559471Y227431D01* +X559511Y227519D01* +X559547Y227608D01* +X559580Y227699D01* +X559608Y227792D01* +X559633Y227885D01* +X559655Y227979D01* +X559672Y228074D01* +X559686Y228170D01* +X559695Y228266D01* +X559701Y228362D01* +X559703Y228459D01* +X559701Y228556D01* +X559695Y228652D01* +X559686Y228748D01* +X559672Y228844D01* +X559655Y228939D01* +X559633Y229033D01* +X559608Y229126D01* +X559580Y229219D01* +X559547Y229310D01* +X559511Y229399D01* +X559471Y229487D01* +X559428Y229574D01* +X559382Y229658D01* +X559332Y229741D01* +X559278Y229822D01* +X559222Y229900D01* +X559162Y229976D01* +X559100Y230050D01* +X559034Y230121D01* +X558966Y230189D01* +X558895Y230255D01* +X558821Y230317D01* +X558745Y230377D01* +X558667Y230433D01* +X558586Y230487D01* +X558504Y230537D01* +X558419Y230583D01* +X558332Y230626D01* +X558244Y230666D01* +X558155Y230702D01* +X558064Y230735D01* +X557971Y230763D01* +X557878Y230788D01* +X557784Y230810D01* +X557689Y230827D01* +X557593Y230841D01* +X557497Y230850D01* +X557401Y230856D01* +X557304Y230858D01* +X557784Y234696D02* +X554905Y234696D01* +X557784Y234696D02* +X557870Y234694D01* +X557956Y234688D01* +X558042Y234679D01* +X558127Y234665D01* +X558211Y234648D01* +X558295Y234627D01* +X558377Y234602D01* +X558458Y234574D01* +X558538Y234542D01* +X558617Y234506D01* +X558693Y234467D01* +X558768Y234424D01* +X558841Y234379D01* +X558912Y234330D01* +X558980Y234277D01* +X559047Y234222D01* +X559110Y234164D01* +X559171Y234103D01* +X559229Y234040D01* +X559284Y233973D01* +X559337Y233905D01* +X559386Y233834D01* +X559431Y233761D01* +X559474Y233686D01* +X559513Y233610D01* +X559549Y233531D01* +X559581Y233451D01* +X559609Y233370D01* +X559634Y233288D01* +X559655Y233204D01* +X559672Y233120D01* +X559686Y233035D01* +X559695Y232949D01* +X559701Y232863D01* +X559703Y232777D01* +X559701Y232691D01* +X559695Y232605D01* +X559686Y232519D01* +X559672Y232434D01* +X559655Y232350D01* +X559634Y232266D01* +X559609Y232184D01* +X559581Y232103D01* +X559549Y232023D01* +X559513Y231944D01* +X559474Y231868D01* +X559431Y231793D01* +X559386Y231720D01* +X559337Y231649D01* +X559284Y231581D01* +X559229Y231514D01* +X559171Y231451D01* +X559110Y231390D01* +X559047Y231332D01* +X558980Y231277D01* +X558912Y231224D01* +X558841Y231175D01* +X558768Y231130D01* +X558693Y231087D01* +X558617Y231048D01* +X558538Y231012D01* +X558458Y230980D01* +X558377Y230952D01* +X558295Y230927D01* +X558211Y230906D01* +X558127Y230889D01* +X558042Y230875D01* +X557956Y230866D01* +X557870Y230860D01* +X557784Y230858D01* +X555865Y230858D01* +X564049Y226060D02* +X566448Y226060D01* +X566545Y226062D01* +X566641Y226068D01* +X566737Y226077D01* +X566833Y226091D01* +X566928Y226108D01* +X567022Y226130D01* +X567115Y226155D01* +X567208Y226183D01* +X567299Y226216D01* +X567388Y226252D01* +X567476Y226292D01* +X567563Y226335D01* +X567648Y226381D01* +X567730Y226431D01* +X567811Y226485D01* +X567889Y226541D01* +X567965Y226601D01* +X568039Y226663D01* +X568110Y226729D01* +X568178Y226797D01* +X568244Y226868D01* +X568306Y226942D01* +X568366Y227018D01* +X568422Y227096D01* +X568476Y227177D01* +X568526Y227260D01* +X568572Y227344D01* +X568615Y227431D01* +X568655Y227519D01* +X568691Y227608D01* +X568724Y227699D01* +X568752Y227792D01* +X568777Y227885D01* +X568799Y227979D01* +X568816Y228074D01* +X568830Y228170D01* +X568839Y228266D01* +X568845Y228362D01* +X568847Y228459D01* +X568845Y228556D01* +X568839Y228652D01* +X568830Y228748D01* +X568816Y228844D01* +X568799Y228939D01* +X568777Y229033D01* +X568752Y229126D01* +X568724Y229219D01* +X568691Y229310D01* +X568655Y229399D01* +X568615Y229487D01* +X568572Y229574D01* +X568526Y229658D01* +X568476Y229741D01* +X568422Y229822D01* +X568366Y229900D01* +X568306Y229976D01* +X568244Y230050D01* +X568178Y230121D01* +X568110Y230189D01* +X568039Y230255D01* +X567965Y230317D01* +X567889Y230377D01* +X567811Y230433D01* +X567730Y230487D01* +X567648Y230537D01* +X567563Y230583D01* +X567476Y230626D01* +X567388Y230666D01* +X567299Y230702D01* +X567208Y230735D01* +X567115Y230763D01* +X567022Y230788D01* +X566928Y230810D01* +X566833Y230827D01* +X566737Y230841D01* +X566641Y230850D01* +X566545Y230856D01* +X566448Y230858D01* +X566928Y234696D02* +X564049Y234696D01* +X566928Y234696D02* +X567014Y234694D01* +X567100Y234688D01* +X567186Y234679D01* +X567271Y234665D01* +X567355Y234648D01* +X567439Y234627D01* +X567521Y234602D01* +X567602Y234574D01* +X567682Y234542D01* +X567761Y234506D01* +X567837Y234467D01* +X567912Y234424D01* +X567985Y234379D01* +X568056Y234330D01* +X568124Y234277D01* +X568191Y234222D01* +X568254Y234164D01* +X568315Y234103D01* +X568373Y234040D01* +X568428Y233973D01* +X568481Y233905D01* +X568530Y233834D01* +X568575Y233761D01* +X568618Y233686D01* +X568657Y233610D01* +X568693Y233531D01* +X568725Y233451D01* +X568753Y233370D01* +X568778Y233288D01* +X568799Y233204D01* +X568816Y233120D01* +X568830Y233035D01* +X568839Y232949D01* +X568845Y232863D01* +X568847Y232777D01* +X568845Y232691D01* +X568839Y232605D01* +X568830Y232519D01* +X568816Y232434D01* +X568799Y232350D01* +X568778Y232266D01* +X568753Y232184D01* +X568725Y232103D01* +X568693Y232023D01* +X568657Y231944D01* +X568618Y231868D01* +X568575Y231793D01* +X568530Y231720D01* +X568481Y231649D01* +X568428Y231581D01* +X568373Y231514D01* +X568315Y231451D01* +X568254Y231390D01* +X568191Y231332D01* +X568124Y231277D01* +X568056Y231224D01* +X567985Y231175D01* +X567912Y231130D01* +X567837Y231087D01* +X567761Y231048D01* +X567682Y231012D01* +X567602Y230980D01* +X567521Y230952D01* +X567439Y230927D01* +X567355Y230906D01* +X567271Y230889D01* +X567186Y230875D01* +X567100Y230866D01* +X567014Y230860D01* +X566928Y230858D01* +X565009Y230858D01* +D13* +X459740Y172720D03* +D14* +X454406Y159258D02* +X445770Y159258D01* +X445770Y161657D01* +X445772Y161754D01* +X445778Y161850D01* +X445787Y161946D01* +X445801Y162042D01* +X445818Y162137D01* +X445840Y162231D01* +X445865Y162324D01* +X445893Y162417D01* +X445926Y162508D01* +X445962Y162597D01* +X446002Y162685D01* +X446045Y162772D01* +X446091Y162857D01* +X446141Y162939D01* +X446195Y163020D01* +X446251Y163098D01* +X446311Y163174D01* +X446373Y163248D01* +X446439Y163319D01* +X446507Y163387D01* +X446578Y163453D01* +X446652Y163515D01* +X446728Y163575D01* +X446806Y163631D01* +X446887Y163685D01* +X446970Y163735D01* +X447054Y163781D01* +X447141Y163824D01* +X447229Y163864D01* +X447318Y163900D01* +X447409Y163933D01* +X447502Y163961D01* +X447595Y163986D01* +X447689Y164008D01* +X447784Y164025D01* +X447880Y164039D01* +X447976Y164048D01* +X448072Y164054D01* +X448169Y164056D01* +X448266Y164054D01* +X448362Y164048D01* +X448458Y164039D01* +X448554Y164025D01* +X448649Y164008D01* +X448743Y163986D01* +X448836Y163961D01* +X448929Y163933D01* +X449020Y163900D01* +X449109Y163864D01* +X449197Y163824D01* +X449284Y163781D01* +X449369Y163735D01* +X449451Y163685D01* +X449532Y163631D01* +X449610Y163575D01* +X449686Y163515D01* +X449760Y163453D01* +X449831Y163387D01* +X449899Y163319D01* +X449965Y163248D01* +X450027Y163174D01* +X450087Y163098D01* +X450143Y163020D01* +X450197Y162939D01* +X450247Y162857D01* +X450293Y162772D01* +X450336Y162685D01* +X450376Y162597D01* +X450412Y162508D01* +X450445Y162417D01* +X450473Y162324D01* +X450498Y162231D01* +X450520Y162137D01* +X450537Y162042D01* +X450551Y161946D01* +X450560Y161850D01* +X450566Y161754D01* +X450568Y161657D01* +X450568Y159258D01* +X450568Y162137D02* +X454406Y164056D01* +X445770Y170956D02* +X445772Y171048D01* +X445778Y171139D01* +X445787Y171230D01* +X445801Y171321D01* +X445818Y171411D01* +X445840Y171500D01* +X445865Y171588D01* +X445893Y171675D01* +X445926Y171761D01* +X445962Y171845D01* +X446001Y171928D01* +X446044Y172009D01* +X446091Y172088D01* +X446140Y172165D01* +X446193Y172240D01* +X446249Y172312D01* +X446308Y172382D01* +X446370Y172450D01* +X446435Y172515D01* +X446503Y172577D01* +X446573Y172636D01* +X446645Y172692D01* +X446720Y172745D01* +X446797Y172794D01* +X446876Y172841D01* +X446957Y172884D01* +X447040Y172923D01* +X447124Y172959D01* +X447210Y172992D01* +X447297Y173020D01* +X447385Y173045D01* +X447474Y173067D01* +X447564Y173084D01* +X447655Y173098D01* +X447746Y173107D01* +X447837Y173113D01* +X447929Y173115D01* +X445770Y170956D02* +X445772Y170853D01* +X445778Y170751D01* +X445787Y170649D01* +X445800Y170547D01* +X445817Y170446D01* +X445838Y170345D01* +X445862Y170246D01* +X445891Y170147D01* +X445922Y170050D01* +X445958Y169953D01* +X445996Y169858D01* +X446039Y169765D01* +X446085Y169673D01* +X446134Y169583D01* +X446186Y169495D01* +X446242Y169408D01* +X446301Y169324D01* +X446362Y169243D01* +X446427Y169163D01* +X446495Y169086D01* +X446566Y169011D01* +X446639Y168940D01* +X446715Y168871D01* +X446793Y168804D01* +X446874Y168741D01* +X446957Y168681D01* +X447042Y168624D01* +X447129Y168570D01* +X447219Y168519D01* +X447310Y168472D01* +X447402Y168428D01* +X447497Y168387D01* +X447592Y168350D01* +X447689Y168317D01* +X449608Y172395D02* +X449542Y172462D01* +X449473Y172526D01* +X449402Y172587D01* +X449328Y172645D01* +X449252Y172700D01* +X449174Y172752D01* +X449094Y172801D01* +X449012Y172847D01* +X448928Y172889D01* +X448842Y172928D01* +X448755Y172963D01* +X448667Y172994D01* +X448577Y173022D01* +X448487Y173047D01* +X448395Y173068D01* +X448303Y173085D01* +X448210Y173098D01* +X448117Y173107D01* +X448023Y173113D01* +X447929Y173115D01* +X449608Y172395D02* +X454406Y168317D01* +X454406Y173115D01* +X452007Y177461D02* +X451910Y177463D01* +X451814Y177469D01* +X451718Y177478D01* +X451622Y177492D01* +X451527Y177509D01* +X451433Y177531D01* +X451340Y177556D01* +X451247Y177584D01* +X451156Y177617D01* +X451067Y177653D01* +X450979Y177693D01* +X450892Y177736D01* +X450808Y177782D01* +X450725Y177832D01* +X450644Y177886D01* +X450566Y177942D01* +X450490Y178002D01* +X450416Y178064D01* +X450345Y178130D01* +X450277Y178198D01* +X450211Y178269D01* +X450149Y178343D01* +X450089Y178419D01* +X450033Y178497D01* +X449979Y178578D01* +X449929Y178661D01* +X449883Y178745D01* +X449840Y178832D01* +X449800Y178920D01* +X449764Y179009D01* +X449731Y179100D01* +X449703Y179193D01* +X449678Y179286D01* +X449656Y179380D01* +X449639Y179475D01* +X449625Y179571D01* +X449616Y179667D01* +X449610Y179763D01* +X449608Y179860D01* +X449610Y179957D01* +X449616Y180053D01* +X449625Y180149D01* +X449639Y180245D01* +X449656Y180340D01* +X449678Y180434D01* +X449703Y180527D01* +X449731Y180620D01* +X449764Y180711D01* +X449800Y180800D01* +X449840Y180888D01* +X449883Y180975D01* +X449929Y181060D01* +X449979Y181142D01* +X450033Y181223D01* +X450089Y181301D01* +X450149Y181377D01* +X450211Y181451D01* +X450277Y181522D01* +X450345Y181590D01* +X450416Y181656D01* +X450490Y181718D01* +X450566Y181778D01* +X450644Y181834D01* +X450725Y181888D01* +X450808Y181938D01* +X450892Y181984D01* +X450979Y182027D01* +X451067Y182067D01* +X451156Y182103D01* +X451247Y182136D01* +X451340Y182164D01* +X451433Y182189D01* +X451527Y182211D01* +X451622Y182228D01* +X451718Y182242D01* +X451814Y182251D01* +X451910Y182257D01* +X452007Y182259D01* +X452104Y182257D01* +X452200Y182251D01* +X452296Y182242D01* +X452392Y182228D01* +X452487Y182211D01* +X452581Y182189D01* +X452674Y182164D01* +X452767Y182136D01* +X452858Y182103D01* +X452947Y182067D01* +X453035Y182027D01* +X453122Y181984D01* +X453207Y181938D01* +X453289Y181888D01* +X453370Y181834D01* +X453448Y181778D01* +X453524Y181718D01* +X453598Y181656D01* +X453669Y181590D01* +X453737Y181522D01* +X453803Y181451D01* +X453865Y181377D01* +X453925Y181301D01* +X453981Y181223D01* +X454035Y181142D01* +X454085Y181059D01* +X454131Y180975D01* +X454174Y180888D01* +X454214Y180800D01* +X454250Y180711D01* +X454283Y180620D01* +X454311Y180527D01* +X454336Y180434D01* +X454358Y180340D01* +X454375Y180245D01* +X454389Y180149D01* +X454398Y180053D01* +X454404Y179957D01* +X454406Y179860D01* +X454404Y179763D01* +X454398Y179667D01* +X454389Y179571D01* +X454375Y179475D01* +X454358Y179380D01* +X454336Y179286D01* +X454311Y179193D01* +X454283Y179100D01* +X454250Y179009D01* +X454214Y178920D01* +X454174Y178832D01* +X454131Y178745D01* +X454085Y178661D01* +X454035Y178578D01* +X453981Y178497D01* +X453925Y178419D01* +X453865Y178343D01* +X453803Y178269D01* +X453737Y178198D01* +X453669Y178130D01* +X453598Y178064D01* +X453524Y178002D01* +X453448Y177942D01* +X453370Y177886D01* +X453289Y177832D01* +X453207Y177782D01* +X453122Y177736D01* +X453035Y177693D01* +X452947Y177653D01* +X452858Y177617D01* +X452767Y177584D01* +X452674Y177556D01* +X452581Y177531D01* +X452487Y177509D01* +X452392Y177492D01* +X452296Y177478D01* +X452200Y177469D01* +X452104Y177463D01* +X452007Y177461D01* +X447689Y177941D02* +X447603Y177943D01* +X447517Y177949D01* +X447431Y177958D01* +X447346Y177972D01* +X447262Y177989D01* +X447178Y178010D01* +X447096Y178035D01* +X447015Y178063D01* +X446935Y178095D01* +X446856Y178131D01* +X446780Y178170D01* +X446705Y178213D01* +X446632Y178258D01* +X446561Y178307D01* +X446493Y178360D01* +X446426Y178415D01* +X446363Y178473D01* +X446302Y178534D01* +X446244Y178597D01* +X446189Y178664D01* +X446136Y178732D01* +X446087Y178803D01* +X446042Y178876D01* +X445999Y178951D01* +X445960Y179027D01* +X445924Y179106D01* +X445892Y179186D01* +X445864Y179267D01* +X445839Y179349D01* +X445818Y179433D01* +X445801Y179517D01* +X445787Y179602D01* +X445778Y179688D01* +X445772Y179774D01* +X445770Y179860D01* +X445772Y179946D01* +X445778Y180032D01* +X445787Y180118D01* +X445801Y180203D01* +X445818Y180287D01* +X445839Y180371D01* +X445864Y180453D01* +X445892Y180534D01* +X445924Y180614D01* +X445960Y180693D01* +X445999Y180769D01* +X446042Y180844D01* +X446087Y180917D01* +X446136Y180988D01* +X446189Y181056D01* +X446244Y181123D01* +X446302Y181186D01* +X446363Y181247D01* +X446426Y181305D01* +X446493Y181360D01* +X446561Y181413D01* +X446632Y181462D01* +X446705Y181507D01* +X446780Y181550D01* +X446856Y181589D01* +X446935Y181625D01* +X447015Y181657D01* +X447096Y181685D01* +X447178Y181710D01* +X447262Y181731D01* +X447346Y181748D01* +X447431Y181762D01* +X447517Y181771D01* +X447603Y181777D01* +X447689Y181779D01* +X447775Y181777D01* +X447861Y181771D01* +X447947Y181762D01* +X448032Y181748D01* +X448116Y181731D01* +X448200Y181710D01* +X448282Y181685D01* +X448363Y181657D01* +X448443Y181625D01* +X448522Y181589D01* +X448598Y181550D01* +X448673Y181507D01* +X448746Y181462D01* +X448817Y181413D01* +X448885Y181360D01* +X448952Y181305D01* +X449015Y181247D01* +X449076Y181186D01* +X449134Y181123D01* +X449189Y181056D01* +X449242Y180988D01* +X449291Y180917D01* +X449336Y180844D01* +X449379Y180769D01* +X449418Y180693D01* +X449454Y180614D01* +X449486Y180534D01* +X449514Y180453D01* +X449539Y180371D01* +X449560Y180287D01* +X449577Y180203D01* +X449591Y180118D01* +X449600Y180032D01* +X449606Y179946D01* +X449608Y179860D01* +X449606Y179774D01* +X449600Y179688D01* +X449591Y179602D01* +X449577Y179517D01* +X449560Y179433D01* +X449539Y179349D01* +X449514Y179267D01* +X449486Y179186D01* +X449454Y179106D01* +X449418Y179027D01* +X449379Y178951D01* +X449336Y178876D01* +X449291Y178803D01* +X449242Y178732D01* +X449189Y178664D01* +X449134Y178597D01* +X449076Y178534D01* +X449015Y178473D01* +X448952Y178415D01* +X448885Y178360D01* +X448817Y178307D01* +X448746Y178258D01* +X448673Y178213D01* +X448598Y178170D01* +X448522Y178131D01* +X448443Y178095D01* +X448363Y178063D01* +X448282Y178035D01* +X448200Y178010D01* +X448116Y177989D01* +X448032Y177972D01* +X447947Y177958D01* +X447861Y177949D01* +X447775Y177943D01* +X447689Y177941D01* +D17* +X434340Y139700D03* +D14* +X396607Y135382D02* +X396607Y144018D01* +X399006Y144018D01* +X399103Y144016D01* +X399199Y144010D01* +X399295Y144001D01* +X399391Y143987D01* +X399486Y143970D01* +X399580Y143948D01* +X399673Y143923D01* +X399766Y143895D01* +X399857Y143862D01* +X399946Y143826D01* +X400034Y143786D01* +X400121Y143743D01* +X400206Y143697D01* +X400288Y143647D01* +X400369Y143593D01* +X400447Y143537D01* +X400523Y143477D01* +X400597Y143415D01* +X400668Y143349D01* +X400736Y143281D01* +X400802Y143210D01* +X400864Y143136D01* +X400924Y143060D01* +X400980Y142982D01* +X401034Y142901D01* +X401084Y142818D01* +X401130Y142734D01* +X401173Y142647D01* +X401213Y142559D01* +X401249Y142470D01* +X401282Y142379D01* +X401310Y142286D01* +X401335Y142193D01* +X401357Y142099D01* +X401374Y142004D01* +X401388Y141908D01* +X401397Y141812D01* +X401403Y141716D01* +X401405Y141619D01* +X401403Y141522D01* +X401397Y141426D01* +X401388Y141330D01* +X401374Y141234D01* +X401357Y141139D01* +X401335Y141045D01* +X401310Y140952D01* +X401282Y140859D01* +X401249Y140768D01* +X401213Y140679D01* +X401173Y140591D01* +X401130Y140504D01* +X401084Y140420D01* +X401034Y140337D01* +X400980Y140256D01* +X400924Y140178D01* +X400864Y140102D01* +X400802Y140028D01* +X400736Y139957D01* +X400668Y139889D01* +X400597Y139823D01* +X400523Y139761D01* +X400447Y139701D01* +X400369Y139645D01* +X400288Y139591D01* +X400206Y139541D01* +X400121Y139495D01* +X400034Y139452D01* +X399946Y139412D01* +X399857Y139376D01* +X399766Y139343D01* +X399673Y139315D01* +X399580Y139290D01* +X399486Y139268D01* +X399391Y139251D01* +X399295Y139237D01* +X399199Y139228D01* +X399103Y139222D01* +X399006Y139220D01* +X396607Y139220D01* +X399486Y139220D02* +X401405Y135382D01* +X405666Y137301D02* +X407585Y144018D01* +X405666Y137301D02* +X410464Y137301D01* +X409025Y139220D02* +X409025Y135382D01* +X414810Y139700D02* +X414812Y139870D01* +X414818Y140040D01* +X414828Y140209D01* +X414842Y140379D01* +X414861Y140548D01* +X414883Y140716D01* +X414909Y140884D01* +X414939Y141051D01* +X414974Y141217D01* +X415012Y141383D01* +X415054Y141548D01* +X415100Y141711D01* +X415150Y141874D01* +X415204Y142035D01* +X415261Y142195D01* +X415323Y142353D01* +X415388Y142510D01* +X415457Y142665D01* +X415530Y142819D01* +X415558Y142895D01* +X415590Y142970D01* +X415625Y143044D01* +X415663Y143116D01* +X415705Y143186D01* +X415750Y143254D01* +X415798Y143320D01* +X415849Y143384D01* +X415903Y143445D01* +X415959Y143504D01* +X416019Y143560D01* +X416080Y143613D01* +X416144Y143663D01* +X416211Y143711D01* +X416279Y143755D01* +X416350Y143796D01* +X416422Y143834D01* +X416496Y143868D01* +X416571Y143899D01* +X416648Y143927D01* +X416726Y143951D01* +X416805Y143971D01* +X416885Y143988D01* +X416965Y144001D01* +X417046Y144011D01* +X417127Y144016D01* +X417209Y144018D01* +X417291Y144016D01* +X417372Y144011D01* +X417453Y144001D01* +X417533Y143988D01* +X417613Y143971D01* +X417692Y143951D01* +X417770Y143927D01* +X417847Y143899D01* +X417922Y143868D01* +X417996Y143834D01* +X418068Y143796D01* +X418139Y143755D01* +X418207Y143711D01* +X418274Y143663D01* +X418338Y143613D01* +X418399Y143560D01* +X418459Y143504D01* +X418515Y143445D01* +X418569Y143384D01* +X418620Y143320D01* +X418668Y143254D01* +X418713Y143186D01* +X418755Y143116D01* +X418793Y143044D01* +X418828Y142970D01* +X418860Y142895D01* +X418888Y142819D01* +X418961Y142665D01* +X419030Y142510D01* +X419095Y142353D01* +X419157Y142195D01* +X419214Y142035D01* +X419268Y141874D01* +X419318Y141711D01* +X419364Y141548D01* +X419406Y141383D01* +X419444Y141217D01* +X419479Y141051D01* +X419509Y140884D01* +X419535Y140716D01* +X419557Y140548D01* +X419576Y140379D01* +X419590Y140209D01* +X419600Y140040D01* +X419606Y139870D01* +X419608Y139700D01* +X414810Y139700D02* +X414812Y139530D01* +X414818Y139360D01* +X414828Y139191D01* +X414842Y139021D01* +X414861Y138852D01* +X414883Y138684D01* +X414909Y138516D01* +X414939Y138349D01* +X414974Y138183D01* +X415012Y138017D01* +X415054Y137852D01* +X415100Y137689D01* +X415150Y137527D01* +X415204Y137365D01* +X415261Y137206D01* +X415323Y137047D01* +X415388Y136890D01* +X415457Y136735D01* +X415530Y136581D01* +X415558Y136505D01* +X415590Y136430D01* +X415625Y136356D01* +X415663Y136284D01* +X415705Y136214D01* +X415750Y136146D01* +X415798Y136080D01* +X415849Y136016D01* +X415903Y135955D01* +X415959Y135896D01* +X416019Y135840D01* +X416080Y135787D01* +X416144Y135737D01* +X416211Y135689D01* +X416279Y135645D01* +X416350Y135604D01* +X416422Y135566D01* +X416496Y135532D01* +X416571Y135501D01* +X416648Y135473D01* +X416726Y135449D01* +X416805Y135429D01* +X416885Y135412D01* +X416965Y135399D01* +X417046Y135389D01* +X417127Y135384D01* +X417209Y135382D01* +X418888Y136581D02* +X418961Y136735D01* +X419030Y136890D01* +X419095Y137047D01* +X419157Y137206D01* +X419214Y137365D01* +X419268Y137527D01* +X419318Y137689D01* +X419364Y137852D01* +X419406Y138017D01* +X419444Y138183D01* +X419479Y138349D01* +X419509Y138516D01* +X419535Y138684D01* +X419557Y138852D01* +X419576Y139021D01* +X419590Y139191D01* +X419600Y139360D01* +X419606Y139530D01* +X419608Y139700D01* +X418888Y136581D02* +X418860Y136505D01* +X418828Y136430D01* +X418793Y136356D01* +X418755Y136284D01* +X418713Y136214D01* +X418668Y136146D01* +X418620Y136080D01* +X418569Y136016D01* +X418515Y135955D01* +X418459Y135896D01* +X418399Y135840D01* +X418338Y135787D01* +X418274Y135737D01* +X418207Y135689D01* +X418139Y135645D01* +X418068Y135604D01* +X417996Y135566D01* +X417922Y135532D01* +X417847Y135501D01* +X417770Y135473D01* +X417692Y135449D01* +X417613Y135429D01* +X417533Y135412D01* +X417453Y135399D01* +X417372Y135389D01* +X417291Y135384D01* +X417209Y135382D01* +X415290Y137301D02* +X419128Y142099D01* +D13* +X441960Y302260D03* +D14* +X446024Y276211D02* +X437388Y276211D01* +X437388Y278610D01* +X437390Y278707D01* +X437396Y278803D01* +X437405Y278899D01* +X437419Y278995D01* +X437436Y279090D01* +X437458Y279184D01* +X437483Y279277D01* +X437511Y279370D01* +X437544Y279461D01* +X437580Y279550D01* +X437620Y279638D01* +X437663Y279725D01* +X437709Y279810D01* +X437759Y279892D01* +X437813Y279973D01* +X437869Y280051D01* +X437929Y280127D01* +X437991Y280201D01* +X438057Y280272D01* +X438125Y280340D01* +X438196Y280406D01* +X438270Y280468D01* +X438346Y280528D01* +X438424Y280584D01* +X438505Y280638D01* +X438588Y280688D01* +X438672Y280734D01* +X438759Y280777D01* +X438847Y280817D01* +X438936Y280853D01* +X439027Y280886D01* +X439120Y280914D01* +X439213Y280939D01* +X439307Y280961D01* +X439402Y280978D01* +X439498Y280992D01* +X439594Y281001D01* +X439690Y281007D01* +X439787Y281009D01* +X439884Y281007D01* +X439980Y281001D01* +X440076Y280992D01* +X440172Y280978D01* +X440267Y280961D01* +X440361Y280939D01* +X440454Y280914D01* +X440547Y280886D01* +X440638Y280853D01* +X440727Y280817D01* +X440815Y280777D01* +X440902Y280734D01* +X440987Y280688D01* +X441069Y280638D01* +X441150Y280584D01* +X441228Y280528D01* +X441304Y280468D01* +X441378Y280406D01* +X441449Y280340D01* +X441517Y280272D01* +X441583Y280201D01* +X441645Y280127D01* +X441705Y280051D01* +X441761Y279973D01* +X441815Y279892D01* +X441865Y279810D01* +X441911Y279725D01* +X441954Y279638D01* +X441994Y279550D01* +X442030Y279461D01* +X442063Y279370D01* +X442091Y279277D01* +X442116Y279184D01* +X442138Y279090D01* +X442155Y278995D01* +X442169Y278899D01* +X442178Y278803D01* +X442184Y278707D01* +X442186Y278610D01* +X442186Y276211D01* +X442186Y279090D02* +X446024Y281009D01* +X443625Y285270D02* +X443528Y285272D01* +X443432Y285278D01* +X443336Y285287D01* +X443240Y285301D01* +X443145Y285318D01* +X443051Y285340D01* +X442958Y285365D01* +X442865Y285393D01* +X442774Y285426D01* +X442685Y285462D01* +X442597Y285502D01* +X442510Y285545D01* +X442426Y285591D01* +X442343Y285641D01* +X442262Y285695D01* +X442184Y285751D01* +X442108Y285811D01* +X442034Y285873D01* +X441963Y285939D01* +X441895Y286007D01* +X441829Y286078D01* +X441767Y286152D01* +X441707Y286228D01* +X441651Y286306D01* +X441597Y286387D01* +X441547Y286470D01* +X441501Y286554D01* +X441458Y286641D01* +X441418Y286729D01* +X441382Y286818D01* +X441349Y286909D01* +X441321Y287002D01* +X441296Y287095D01* +X441274Y287189D01* +X441257Y287284D01* +X441243Y287380D01* +X441234Y287476D01* +X441228Y287572D01* +X441226Y287669D01* +X441228Y287766D01* +X441234Y287862D01* +X441243Y287958D01* +X441257Y288054D01* +X441274Y288149D01* +X441296Y288243D01* +X441321Y288336D01* +X441349Y288429D01* +X441382Y288520D01* +X441418Y288609D01* +X441458Y288697D01* +X441501Y288784D01* +X441547Y288869D01* +X441597Y288951D01* +X441651Y289032D01* +X441707Y289110D01* +X441767Y289186D01* +X441829Y289260D01* +X441895Y289331D01* +X441963Y289399D01* +X442034Y289465D01* +X442108Y289527D01* +X442184Y289587D01* +X442262Y289643D01* +X442343Y289697D01* +X442426Y289747D01* +X442510Y289793D01* +X442597Y289836D01* +X442685Y289876D01* +X442774Y289912D01* +X442865Y289945D01* +X442958Y289973D01* +X443051Y289998D01* +X443145Y290020D01* +X443240Y290037D01* +X443336Y290051D01* +X443432Y290060D01* +X443528Y290066D01* +X443625Y290068D01* +X443722Y290066D01* +X443818Y290060D01* +X443914Y290051D01* +X444010Y290037D01* +X444105Y290020D01* +X444199Y289998D01* +X444292Y289973D01* +X444385Y289945D01* +X444476Y289912D01* +X444565Y289876D01* +X444653Y289836D01* +X444740Y289793D01* +X444825Y289747D01* +X444907Y289697D01* +X444988Y289643D01* +X445066Y289587D01* +X445142Y289527D01* +X445216Y289465D01* +X445287Y289399D01* +X445355Y289331D01* +X445421Y289260D01* +X445483Y289186D01* +X445543Y289110D01* +X445599Y289032D01* +X445653Y288951D01* +X445703Y288869D01* +X445749Y288784D01* +X445792Y288697D01* +X445832Y288609D01* +X445868Y288520D01* +X445901Y288429D01* +X445929Y288336D01* +X445954Y288243D01* +X445976Y288149D01* +X445993Y288054D01* +X446007Y287958D01* +X446016Y287862D01* +X446022Y287766D01* +X446024Y287669D01* +X446022Y287572D01* +X446016Y287476D01* +X446007Y287380D01* +X445993Y287284D01* +X445976Y287189D01* +X445954Y287095D01* +X445929Y287002D01* +X445901Y286909D01* +X445868Y286818D01* +X445832Y286729D01* +X445792Y286641D01* +X445749Y286554D01* +X445703Y286470D01* +X445653Y286387D01* +X445599Y286306D01* +X445543Y286228D01* +X445483Y286152D01* +X445421Y286078D01* +X445355Y286007D01* +X445287Y285939D01* +X445216Y285873D01* +X445142Y285811D01* +X445066Y285751D01* +X444988Y285695D01* +X444907Y285641D01* +X444825Y285591D01* +X444740Y285545D01* +X444653Y285502D01* +X444565Y285462D01* +X444476Y285426D01* +X444385Y285393D01* +X444292Y285365D01* +X444199Y285340D01* +X444105Y285318D01* +X444010Y285301D01* +X443914Y285287D01* +X443818Y285278D01* +X443722Y285272D01* +X443625Y285270D01* +X439307Y285750D02* +X439221Y285752D01* +X439135Y285758D01* +X439049Y285767D01* +X438964Y285781D01* +X438880Y285798D01* +X438796Y285819D01* +X438714Y285844D01* +X438633Y285872D01* +X438553Y285904D01* +X438474Y285940D01* +X438398Y285979D01* +X438323Y286022D01* +X438250Y286067D01* +X438179Y286116D01* +X438111Y286169D01* +X438044Y286224D01* +X437981Y286282D01* +X437920Y286343D01* +X437862Y286406D01* +X437807Y286473D01* +X437754Y286541D01* +X437705Y286612D01* +X437660Y286685D01* +X437617Y286760D01* +X437578Y286836D01* +X437542Y286915D01* +X437510Y286995D01* +X437482Y287076D01* +X437457Y287158D01* +X437436Y287242D01* +X437419Y287326D01* +X437405Y287411D01* +X437396Y287497D01* +X437390Y287583D01* +X437388Y287669D01* +X437390Y287755D01* +X437396Y287841D01* +X437405Y287927D01* +X437419Y288012D01* +X437436Y288096D01* +X437457Y288180D01* +X437482Y288262D01* +X437510Y288343D01* +X437542Y288423D01* +X437578Y288502D01* +X437617Y288578D01* +X437660Y288653D01* +X437705Y288726D01* +X437754Y288797D01* +X437807Y288865D01* +X437862Y288932D01* +X437920Y288995D01* +X437981Y289056D01* +X438044Y289114D01* +X438111Y289169D01* +X438179Y289222D01* +X438250Y289271D01* +X438323Y289316D01* +X438398Y289359D01* +X438474Y289398D01* +X438553Y289434D01* +X438633Y289466D01* +X438714Y289494D01* +X438796Y289519D01* +X438880Y289540D01* +X438964Y289557D01* +X439049Y289571D01* +X439135Y289580D01* +X439221Y289586D01* +X439307Y289588D01* +X439393Y289586D01* +X439479Y289580D01* +X439565Y289571D01* +X439650Y289557D01* +X439734Y289540D01* +X439818Y289519D01* +X439900Y289494D01* +X439981Y289466D01* +X440061Y289434D01* +X440140Y289398D01* +X440216Y289359D01* +X440291Y289316D01* +X440364Y289271D01* +X440435Y289222D01* +X440503Y289169D01* +X440570Y289114D01* +X440633Y289056D01* +X440694Y288995D01* +X440752Y288932D01* +X440807Y288865D01* +X440860Y288797D01* +X440909Y288726D01* +X440954Y288653D01* +X440997Y288578D01* +X441036Y288502D01* +X441072Y288423D01* +X441104Y288343D01* +X441132Y288262D01* +X441157Y288180D01* +X441178Y288096D01* +X441195Y288012D01* +X441209Y287927D01* +X441218Y287841D01* +X441224Y287755D01* +X441226Y287669D01* +X441224Y287583D01* +X441218Y287497D01* +X441209Y287411D01* +X441195Y287326D01* +X441178Y287242D01* +X441157Y287158D01* +X441132Y287076D01* +X441104Y286995D01* +X441072Y286915D01* +X441036Y286836D01* +X440997Y286760D01* +X440954Y286685D01* +X440909Y286612D01* +X440860Y286541D01* +X440807Y286473D01* +X440752Y286406D01* +X440694Y286343D01* +X440633Y286282D01* +X440570Y286224D01* +X440503Y286169D01* +X440435Y286116D01* +X440364Y286067D01* +X440291Y286022D01* +X440216Y285979D01* +X440140Y285940D01* +X440061Y285904D01* +X439981Y285872D01* +X439900Y285844D01* +X439818Y285819D01* +X439734Y285798D01* +X439650Y285781D01* +X439565Y285767D01* +X439479Y285758D01* +X439393Y285752D01* +X439307Y285750D01* +D17* +X434340Y127000D03* +D14* +X396607Y128778D02* +X396607Y120142D01* +X396607Y128778D02* +X399006Y128778D01* +X399103Y128776D01* +X399199Y128770D01* +X399295Y128761D01* +X399391Y128747D01* +X399486Y128730D01* +X399580Y128708D01* +X399673Y128683D01* +X399766Y128655D01* +X399857Y128622D01* +X399946Y128586D01* +X400034Y128546D01* +X400121Y128503D01* +X400206Y128457D01* +X400288Y128407D01* +X400369Y128353D01* +X400447Y128297D01* +X400523Y128237D01* +X400597Y128175D01* +X400668Y128109D01* +X400736Y128041D01* +X400802Y127970D01* +X400864Y127896D01* +X400924Y127820D01* +X400980Y127742D01* +X401034Y127661D01* +X401084Y127578D01* +X401130Y127494D01* +X401173Y127407D01* +X401213Y127319D01* +X401249Y127230D01* +X401282Y127139D01* +X401310Y127046D01* +X401335Y126953D01* +X401357Y126859D01* +X401374Y126764D01* +X401388Y126668D01* +X401397Y126572D01* +X401403Y126476D01* +X401405Y126379D01* +X401403Y126282D01* +X401397Y126186D01* +X401388Y126090D01* +X401374Y125994D01* +X401357Y125899D01* +X401335Y125805D01* +X401310Y125712D01* +X401282Y125619D01* +X401249Y125528D01* +X401213Y125439D01* +X401173Y125351D01* +X401130Y125264D01* +X401084Y125179D01* +X401034Y125097D01* +X400980Y125016D01* +X400924Y124938D01* +X400864Y124862D01* +X400802Y124788D01* +X400736Y124717D01* +X400668Y124649D01* +X400597Y124583D01* +X400523Y124521D01* +X400447Y124461D01* +X400369Y124405D01* +X400288Y124351D01* +X400206Y124301D01* +X400121Y124255D01* +X400034Y124212D01* +X399946Y124172D01* +X399857Y124136D01* +X399766Y124103D01* +X399673Y124075D01* +X399580Y124050D01* +X399486Y124028D01* +X399391Y124011D01* +X399295Y123997D01* +X399199Y123988D01* +X399103Y123982D01* +X399006Y123980D01* +X396607Y123980D01* +X399486Y123980D02* +X401405Y120142D01* +X405666Y122061D02* +X407585Y128778D01* +X405666Y122061D02* +X410464Y122061D01* +X409025Y123980D02* +X409025Y120142D01* +X414810Y126859D02* +X417209Y128778D01* +X417209Y120142D01* +X414810Y120142D02* +X419608Y120142D01* +D17* +X546100Y190500D03* +D14* +X582422Y225044D02* +X582422Y233680D01* +X584821Y233680D01* +X584918Y233678D01* +X585014Y233672D01* +X585110Y233663D01* +X585206Y233649D01* +X585301Y233632D01* +X585395Y233610D01* +X585488Y233585D01* +X585581Y233557D01* +X585672Y233524D01* +X585761Y233488D01* +X585849Y233448D01* +X585936Y233405D01* +X586021Y233359D01* +X586103Y233309D01* +X586184Y233255D01* +X586262Y233199D01* +X586338Y233139D01* +X586412Y233077D01* +X586483Y233011D01* +X586551Y232943D01* +X586617Y232872D01* +X586679Y232798D01* +X586739Y232722D01* +X586795Y232644D01* +X586849Y232563D01* +X586899Y232480D01* +X586945Y232396D01* +X586988Y232309D01* +X587028Y232221D01* +X587064Y232132D01* +X587097Y232041D01* +X587125Y231948D01* +X587150Y231855D01* +X587172Y231761D01* +X587189Y231666D01* +X587203Y231570D01* +X587212Y231474D01* +X587218Y231378D01* +X587220Y231281D01* +X587218Y231184D01* +X587212Y231088D01* +X587203Y230992D01* +X587189Y230896D01* +X587172Y230801D01* +X587150Y230707D01* +X587125Y230614D01* +X587097Y230521D01* +X587064Y230430D01* +X587028Y230341D01* +X586988Y230253D01* +X586945Y230166D01* +X586899Y230082D01* +X586849Y229999D01* +X586795Y229918D01* +X586739Y229840D01* +X586679Y229764D01* +X586617Y229690D01* +X586551Y229619D01* +X586483Y229551D01* +X586412Y229485D01* +X586338Y229423D01* +X586262Y229363D01* +X586184Y229307D01* +X586103Y229253D01* +X586021Y229203D01* +X585936Y229157D01* +X585849Y229114D01* +X585761Y229074D01* +X585672Y229038D01* +X585581Y229005D01* +X585488Y228977D01* +X585395Y228952D01* +X585301Y228930D01* +X585206Y228913D01* +X585110Y228899D01* +X585014Y228890D01* +X584918Y228884D01* +X584821Y228882D01* +X582422Y228882D01* +X585301Y228882D02* +X587220Y225044D01* +X591481Y225044D02* +X593880Y225044D01* +X593977Y225046D01* +X594073Y225052D01* +X594169Y225061D01* +X594265Y225075D01* +X594360Y225092D01* +X594454Y225114D01* +X594547Y225139D01* +X594640Y225167D01* +X594731Y225200D01* +X594820Y225236D01* +X594908Y225276D01* +X594995Y225319D01* +X595080Y225365D01* +X595162Y225415D01* +X595243Y225469D01* +X595321Y225525D01* +X595397Y225585D01* +X595471Y225647D01* +X595542Y225713D01* +X595610Y225781D01* +X595676Y225852D01* +X595738Y225926D01* +X595798Y226002D01* +X595854Y226080D01* +X595908Y226161D01* +X595958Y226244D01* +X596004Y226328D01* +X596047Y226415D01* +X596087Y226503D01* +X596123Y226592D01* +X596156Y226683D01* +X596184Y226776D01* +X596209Y226869D01* +X596231Y226963D01* +X596248Y227058D01* +X596262Y227154D01* +X596271Y227250D01* +X596277Y227346D01* +X596279Y227443D01* +X596277Y227540D01* +X596271Y227636D01* +X596262Y227732D01* +X596248Y227828D01* +X596231Y227923D01* +X596209Y228017D01* +X596184Y228110D01* +X596156Y228203D01* +X596123Y228294D01* +X596087Y228383D01* +X596047Y228471D01* +X596004Y228558D01* +X595958Y228642D01* +X595908Y228725D01* +X595854Y228806D01* +X595798Y228884D01* +X595738Y228960D01* +X595676Y229034D01* +X595610Y229105D01* +X595542Y229173D01* +X595471Y229239D01* +X595397Y229301D01* +X595321Y229361D01* +X595243Y229417D01* +X595162Y229471D01* +X595080Y229521D01* +X594995Y229567D01* +X594908Y229610D01* +X594820Y229650D01* +X594731Y229686D01* +X594640Y229719D01* +X594547Y229747D01* +X594454Y229772D01* +X594360Y229794D01* +X594265Y229811D01* +X594169Y229825D01* +X594073Y229834D01* +X593977Y229840D01* +X593880Y229842D01* +X594360Y233680D02* +X591481Y233680D01* +X594360Y233680D02* +X594446Y233678D01* +X594532Y233672D01* +X594618Y233663D01* +X594703Y233649D01* +X594787Y233632D01* +X594871Y233611D01* +X594953Y233586D01* +X595034Y233558D01* +X595114Y233526D01* +X595193Y233490D01* +X595269Y233451D01* +X595344Y233408D01* +X595417Y233363D01* +X595488Y233314D01* +X595556Y233261D01* +X595623Y233206D01* +X595686Y233148D01* +X595747Y233087D01* +X595805Y233024D01* +X595860Y232957D01* +X595913Y232889D01* +X595962Y232818D01* +X596007Y232745D01* +X596050Y232670D01* +X596089Y232594D01* +X596125Y232515D01* +X596157Y232435D01* +X596185Y232354D01* +X596210Y232272D01* +X596231Y232188D01* +X596248Y232104D01* +X596262Y232019D01* +X596271Y231933D01* +X596277Y231847D01* +X596279Y231761D01* +X596277Y231675D01* +X596271Y231589D01* +X596262Y231503D01* +X596248Y231418D01* +X596231Y231334D01* +X596210Y231250D01* +X596185Y231168D01* +X596157Y231087D01* +X596125Y231007D01* +X596089Y230928D01* +X596050Y230852D01* +X596007Y230777D01* +X595962Y230704D01* +X595913Y230633D01* +X595860Y230565D01* +X595805Y230498D01* +X595747Y230435D01* +X595686Y230374D01* +X595623Y230316D01* +X595556Y230261D01* +X595488Y230208D01* +X595417Y230159D01* +X595344Y230114D01* +X595269Y230071D01* +X595193Y230032D01* +X595114Y229996D01* +X595034Y229964D01* +X594953Y229936D01* +X594871Y229911D01* +X594787Y229890D01* +X594703Y229873D01* +X594618Y229859D01* +X594532Y229850D01* +X594446Y229844D01* +X594360Y229842D01* +X592441Y229842D01* +X603264Y233680D02* +X603356Y233678D01* +X603447Y233672D01* +X603538Y233663D01* +X603629Y233649D01* +X603719Y233632D01* +X603808Y233610D01* +X603896Y233585D01* +X603983Y233557D01* +X604069Y233524D01* +X604153Y233488D01* +X604236Y233449D01* +X604317Y233406D01* +X604396Y233359D01* +X604473Y233310D01* +X604548Y233257D01* +X604620Y233201D01* +X604690Y233142D01* +X604758Y233080D01* +X604823Y233015D01* +X604885Y232947D01* +X604944Y232877D01* +X605000Y232805D01* +X605053Y232730D01* +X605102Y232653D01* +X605149Y232574D01* +X605192Y232493D01* +X605231Y232410D01* +X605267Y232326D01* +X605300Y232240D01* +X605328Y232153D01* +X605353Y232065D01* +X605375Y231976D01* +X605392Y231886D01* +X605406Y231795D01* +X605415Y231704D01* +X605421Y231613D01* +X605423Y231521D01* +X603264Y233680D02* +X603161Y233678D01* +X603059Y233672D01* +X602957Y233663D01* +X602855Y233650D01* +X602754Y233633D01* +X602653Y233612D01* +X602554Y233588D01* +X602455Y233559D01* +X602358Y233528D01* +X602261Y233492D01* +X602166Y233454D01* +X602073Y233411D01* +X601981Y233365D01* +X601891Y233316D01* +X601803Y233264D01* +X601716Y233208D01* +X601632Y233149D01* +X601551Y233088D01* +X601471Y233023D01* +X601394Y232955D01* +X601319Y232884D01* +X601248Y232811D01* +X601179Y232735D01* +X601112Y232657D01* +X601049Y232576D01* +X600989Y232493D01* +X600932Y232408D01* +X600878Y232321D01* +X600827Y232231D01* +X600780Y232140D01* +X600736Y232048D01* +X600695Y231953D01* +X600658Y231858D01* +X600625Y231761D01* +X604703Y229842D02* +X604770Y229908D01* +X604834Y229977D01* +X604895Y230048D01* +X604953Y230122D01* +X605008Y230198D01* +X605060Y230276D01* +X605109Y230356D01* +X605155Y230438D01* +X605197Y230522D01* +X605236Y230608D01* +X605271Y230695D01* +X605302Y230783D01* +X605330Y230873D01* +X605355Y230963D01* +X605376Y231055D01* +X605393Y231147D01* +X605406Y231240D01* +X605415Y231333D01* +X605421Y231427D01* +X605423Y231521D01* +X604703Y229842D02* +X600625Y225044D01* +X605423Y225044D01* +D17* +X533400Y215900D03* +D14* +X545592Y213360D02* +X545592Y221996D01* +X547991Y221996D01* +X548088Y221994D01* +X548184Y221988D01* +X548280Y221979D01* +X548376Y221965D01* +X548471Y221948D01* +X548565Y221926D01* +X548658Y221901D01* +X548751Y221873D01* +X548842Y221840D01* +X548931Y221804D01* +X549019Y221764D01* +X549106Y221721D01* +X549191Y221675D01* +X549273Y221625D01* +X549354Y221571D01* +X549432Y221515D01* +X549508Y221455D01* +X549582Y221393D01* +X549653Y221327D01* +X549721Y221259D01* +X549787Y221188D01* +X549849Y221114D01* +X549909Y221038D01* +X549965Y220960D01* +X550019Y220879D01* +X550069Y220796D01* +X550115Y220712D01* +X550158Y220625D01* +X550198Y220537D01* +X550234Y220448D01* +X550267Y220357D01* +X550295Y220264D01* +X550320Y220171D01* +X550342Y220077D01* +X550359Y219982D01* +X550373Y219886D01* +X550382Y219790D01* +X550388Y219694D01* +X550390Y219597D01* +X550388Y219500D01* +X550382Y219404D01* +X550373Y219308D01* +X550359Y219212D01* +X550342Y219117D01* +X550320Y219023D01* +X550295Y218930D01* +X550267Y218837D01* +X550234Y218746D01* +X550198Y218657D01* +X550158Y218569D01* +X550115Y218482D01* +X550069Y218398D01* +X550019Y218315D01* +X549965Y218234D01* +X549909Y218156D01* +X549849Y218080D01* +X549787Y218006D01* +X549721Y217935D01* +X549653Y217867D01* +X549582Y217801D01* +X549508Y217739D01* +X549432Y217679D01* +X549354Y217623D01* +X549273Y217569D01* +X549191Y217519D01* +X549106Y217473D01* +X549019Y217430D01* +X548931Y217390D01* +X548842Y217354D01* +X548751Y217321D01* +X548658Y217293D01* +X548565Y217268D01* +X548471Y217246D01* +X548376Y217229D01* +X548280Y217215D01* +X548184Y217206D01* +X548088Y217200D01* +X547991Y217198D01* +X545592Y217198D01* +X548471Y217198D02* +X550390Y213360D01* +X554651Y213360D02* +X557050Y213360D01* +X557147Y213362D01* +X557243Y213368D01* +X557339Y213377D01* +X557435Y213391D01* +X557530Y213408D01* +X557624Y213430D01* +X557717Y213455D01* +X557810Y213483D01* +X557901Y213516D01* +X557990Y213552D01* +X558078Y213592D01* +X558165Y213635D01* +X558250Y213681D01* +X558332Y213731D01* +X558413Y213785D01* +X558491Y213841D01* +X558567Y213901D01* +X558641Y213963D01* +X558712Y214029D01* +X558780Y214097D01* +X558846Y214168D01* +X558908Y214242D01* +X558968Y214318D01* +X559024Y214396D01* +X559078Y214477D01* +X559128Y214560D01* +X559174Y214644D01* +X559217Y214731D01* +X559257Y214819D01* +X559293Y214908D01* +X559326Y214999D01* +X559354Y215092D01* +X559379Y215185D01* +X559401Y215279D01* +X559418Y215374D01* +X559432Y215470D01* +X559441Y215566D01* +X559447Y215662D01* +X559449Y215759D01* +X559447Y215856D01* +X559441Y215952D01* +X559432Y216048D01* +X559418Y216144D01* +X559401Y216239D01* +X559379Y216333D01* +X559354Y216426D01* +X559326Y216519D01* +X559293Y216610D01* +X559257Y216699D01* +X559217Y216787D01* +X559174Y216874D01* +X559128Y216958D01* +X559078Y217041D01* +X559024Y217122D01* +X558968Y217200D01* +X558908Y217276D01* +X558846Y217350D01* +X558780Y217421D01* +X558712Y217489D01* +X558641Y217555D01* +X558567Y217617D01* +X558491Y217677D01* +X558413Y217733D01* +X558332Y217787D01* +X558250Y217837D01* +X558165Y217883D01* +X558078Y217926D01* +X557990Y217966D01* +X557901Y218002D01* +X557810Y218035D01* +X557717Y218063D01* +X557624Y218088D01* +X557530Y218110D01* +X557435Y218127D01* +X557339Y218141D01* +X557243Y218150D01* +X557147Y218156D01* +X557050Y218158D01* +X557530Y221996D02* +X554651Y221996D01* +X557530Y221996D02* +X557616Y221994D01* +X557702Y221988D01* +X557788Y221979D01* +X557873Y221965D01* +X557957Y221948D01* +X558041Y221927D01* +X558123Y221902D01* +X558204Y221874D01* +X558284Y221842D01* +X558363Y221806D01* +X558439Y221767D01* +X558514Y221724D01* +X558587Y221679D01* +X558658Y221630D01* +X558726Y221577D01* +X558793Y221522D01* +X558856Y221464D01* +X558917Y221403D01* +X558975Y221340D01* +X559030Y221273D01* +X559083Y221205D01* +X559132Y221134D01* +X559177Y221061D01* +X559220Y220986D01* +X559259Y220910D01* +X559295Y220831D01* +X559327Y220751D01* +X559355Y220670D01* +X559380Y220588D01* +X559401Y220504D01* +X559418Y220420D01* +X559432Y220335D01* +X559441Y220249D01* +X559447Y220163D01* +X559449Y220077D01* +X559447Y219991D01* +X559441Y219905D01* +X559432Y219819D01* +X559418Y219734D01* +X559401Y219650D01* +X559380Y219566D01* +X559355Y219484D01* +X559327Y219403D01* +X559295Y219323D01* +X559259Y219244D01* +X559220Y219168D01* +X559177Y219093D01* +X559132Y219020D01* +X559083Y218949D01* +X559030Y218881D01* +X558975Y218814D01* +X558917Y218751D01* +X558856Y218690D01* +X558793Y218632D01* +X558726Y218577D01* +X558658Y218524D01* +X558587Y218475D01* +X558514Y218430D01* +X558439Y218387D01* +X558363Y218348D01* +X558284Y218312D01* +X558204Y218280D01* +X558123Y218252D01* +X558041Y218227D01* +X557957Y218206D01* +X557873Y218189D01* +X557788Y218175D01* +X557702Y218166D01* +X557616Y218160D01* +X557530Y218158D01* +X555611Y218158D01* +X563795Y220077D02* +X566194Y221996D01* +X566194Y213360D01* +X563795Y213360D02* +X568593Y213360D01* +D13* +X543560Y149860D03* +D14* +X549402Y126351D02* +X558038Y126351D01* +X549402Y126351D02* +X549402Y128750D01* +X549404Y128847D01* +X549410Y128943D01* +X549419Y129039D01* +X549433Y129135D01* +X549450Y129230D01* +X549472Y129324D01* +X549497Y129417D01* +X549525Y129510D01* +X549558Y129601D01* +X549594Y129690D01* +X549634Y129778D01* +X549677Y129865D01* +X549723Y129950D01* +X549773Y130032D01* +X549827Y130113D01* +X549883Y130191D01* +X549943Y130267D01* +X550005Y130341D01* +X550071Y130412D01* +X550139Y130480D01* +X550210Y130546D01* +X550284Y130608D01* +X550360Y130668D01* +X550438Y130724D01* +X550519Y130778D01* +X550602Y130828D01* +X550686Y130874D01* +X550773Y130917D01* +X550861Y130957D01* +X550950Y130993D01* +X551041Y131026D01* +X551134Y131054D01* +X551227Y131079D01* +X551321Y131101D01* +X551416Y131118D01* +X551512Y131132D01* +X551608Y131141D01* +X551704Y131147D01* +X551801Y131149D01* +X551898Y131147D01* +X551994Y131141D01* +X552090Y131132D01* +X552186Y131118D01* +X552281Y131101D01* +X552375Y131079D01* +X552468Y131054D01* +X552561Y131026D01* +X552652Y130993D01* +X552741Y130957D01* +X552829Y130917D01* +X552916Y130874D01* +X553001Y130828D01* +X553083Y130778D01* +X553164Y130724D01* +X553242Y130668D01* +X553318Y130608D01* +X553392Y130546D01* +X553463Y130480D01* +X553531Y130412D01* +X553597Y130341D01* +X553659Y130267D01* +X553719Y130191D01* +X553775Y130113D01* +X553829Y130032D01* +X553879Y129950D01* +X553925Y129865D01* +X553968Y129778D01* +X554008Y129690D01* +X554044Y129601D01* +X554077Y129510D01* +X554105Y129417D01* +X554130Y129324D01* +X554152Y129230D01* +X554169Y129135D01* +X554183Y129039D01* +X554192Y128943D01* +X554198Y128847D01* +X554200Y128750D01* +X554200Y126351D01* +X554200Y129230D02* +X558038Y131149D01* +X558038Y135410D02* +X558038Y137809D01* +X558036Y137906D01* +X558030Y138002D01* +X558021Y138098D01* +X558007Y138194D01* +X557990Y138289D01* +X557968Y138383D01* +X557943Y138476D01* +X557915Y138569D01* +X557882Y138660D01* +X557846Y138749D01* +X557806Y138837D01* +X557763Y138924D01* +X557717Y139009D01* +X557667Y139091D01* +X557613Y139172D01* +X557557Y139250D01* +X557497Y139326D01* +X557435Y139400D01* +X557369Y139471D01* +X557301Y139539D01* +X557230Y139605D01* +X557156Y139667D01* +X557080Y139727D01* +X557002Y139783D01* +X556921Y139837D01* +X556839Y139887D01* +X556754Y139933D01* +X556667Y139976D01* +X556579Y140016D01* +X556490Y140052D01* +X556399Y140085D01* +X556306Y140113D01* +X556213Y140138D01* +X556119Y140160D01* +X556024Y140177D01* +X555928Y140191D01* +X555832Y140200D01* +X555736Y140206D01* +X555639Y140208D01* +X555542Y140206D01* +X555446Y140200D01* +X555350Y140191D01* +X555254Y140177D01* +X555159Y140160D01* +X555065Y140138D01* +X554972Y140113D01* +X554879Y140085D01* +X554788Y140052D01* +X554699Y140016D01* +X554611Y139976D01* +X554524Y139933D01* +X554440Y139887D01* +X554357Y139837D01* +X554276Y139783D01* +X554198Y139727D01* +X554122Y139667D01* +X554048Y139605D01* +X553977Y139539D01* +X553909Y139471D01* +X553843Y139400D01* +X553781Y139326D01* +X553721Y139250D01* +X553665Y139172D01* +X553611Y139091D01* +X553561Y139009D01* +X553515Y138924D01* +X553472Y138837D01* +X553432Y138749D01* +X553396Y138660D01* +X553363Y138569D01* +X553335Y138476D01* +X553310Y138383D01* +X553288Y138289D01* +X553271Y138194D01* +X553257Y138098D01* +X553248Y138002D01* +X553242Y137906D01* +X553240Y137809D01* +X549402Y138289D02* +X549402Y135410D01* +X549402Y138289D02* +X549404Y138375D01* +X549410Y138461D01* +X549419Y138547D01* +X549433Y138632D01* +X549450Y138716D01* +X549471Y138800D01* +X549496Y138882D01* +X549524Y138963D01* +X549556Y139043D01* +X549592Y139122D01* +X549631Y139198D01* +X549674Y139273D01* +X549719Y139346D01* +X549768Y139417D01* +X549821Y139485D01* +X549876Y139552D01* +X549934Y139615D01* +X549995Y139676D01* +X550058Y139734D01* +X550125Y139789D01* +X550193Y139842D01* +X550264Y139891D01* +X550337Y139936D01* +X550412Y139979D01* +X550488Y140018D01* +X550567Y140054D01* +X550647Y140086D01* +X550728Y140114D01* +X550810Y140139D01* +X550894Y140160D01* +X550978Y140177D01* +X551063Y140191D01* +X551149Y140200D01* +X551235Y140206D01* +X551321Y140208D01* +X551407Y140206D01* +X551493Y140200D01* +X551579Y140191D01* +X551664Y140177D01* +X551748Y140160D01* +X551832Y140139D01* +X551914Y140114D01* +X551995Y140086D01* +X552075Y140054D01* +X552154Y140018D01* +X552230Y139979D01* +X552305Y139936D01* +X552378Y139891D01* +X552449Y139842D01* +X552517Y139789D01* +X552584Y139734D01* +X552647Y139676D01* +X552708Y139615D01* +X552766Y139552D01* +X552821Y139485D01* +X552874Y139417D01* +X552923Y139346D01* +X552968Y139273D01* +X553011Y139198D01* +X553050Y139122D01* +X553086Y139043D01* +X553118Y138963D01* +X553146Y138882D01* +X553171Y138800D01* +X553192Y138716D01* +X553209Y138632D01* +X553223Y138547D01* +X553232Y138461D01* +X553238Y138375D01* +X553240Y138289D01* +X553240Y136370D01* +X553720Y144554D02* +X553550Y144556D01* +X553380Y144562D01* +X553211Y144572D01* +X553041Y144586D01* +X552872Y144605D01* +X552704Y144627D01* +X552536Y144653D01* +X552369Y144683D01* +X552203Y144718D01* +X552037Y144756D01* +X551872Y144798D01* +X551709Y144844D01* +X551547Y144894D01* +X551385Y144948D01* +X551226Y145005D01* +X551067Y145067D01* +X550910Y145132D01* +X550755Y145201D01* +X550601Y145274D01* +X550525Y145302D01* +X550450Y145334D01* +X550376Y145369D01* +X550304Y145407D01* +X550234Y145449D01* +X550166Y145494D01* +X550100Y145542D01* +X550036Y145593D01* +X549975Y145647D01* +X549916Y145703D01* +X549860Y145763D01* +X549807Y145824D01* +X549757Y145888D01* +X549709Y145955D01* +X549665Y146023D01* +X549624Y146094D01* +X549586Y146166D01* +X549552Y146240D01* +X549521Y146315D01* +X549493Y146392D01* +X549469Y146470D01* +X549449Y146549D01* +X549432Y146629D01* +X549419Y146709D01* +X549409Y146790D01* +X549404Y146871D01* +X549402Y146953D01* +X549404Y147035D01* +X549409Y147116D01* +X549419Y147197D01* +X549432Y147277D01* +X549449Y147357D01* +X549469Y147436D01* +X549493Y147514D01* +X549521Y147591D01* +X549552Y147666D01* +X549586Y147740D01* +X549624Y147812D01* +X549665Y147883D01* +X549709Y147951D01* +X549757Y148018D01* +X549807Y148082D01* +X549860Y148143D01* +X549916Y148203D01* +X549975Y148259D01* +X550036Y148313D01* +X550100Y148364D01* +X550166Y148412D01* +X550234Y148457D01* +X550304Y148499D01* +X550376Y148537D01* +X550450Y148572D01* +X550525Y148604D01* +X550601Y148632D01* +X550755Y148705D01* +X550910Y148774D01* +X551067Y148839D01* +X551226Y148901D01* +X551385Y148958D01* +X551547Y149012D01* +X551709Y149062D01* +X551872Y149108D01* +X552037Y149150D01* +X552203Y149188D01* +X552369Y149223D01* +X552536Y149253D01* +X552704Y149279D01* +X552872Y149301D01* +X553041Y149320D01* +X553211Y149334D01* +X553380Y149344D01* +X553550Y149350D01* +X553720Y149352D01* +X553720Y144554D02* +X553890Y144556D01* +X554060Y144562D01* +X554229Y144572D01* +X554399Y144586D01* +X554568Y144605D01* +X554736Y144627D01* +X554904Y144653D01* +X555071Y144683D01* +X555237Y144718D01* +X555403Y144756D01* +X555568Y144798D01* +X555731Y144844D01* +X555893Y144894D01* +X556055Y144948D01* +X556214Y145005D01* +X556373Y145067D01* +X556530Y145132D01* +X556685Y145201D01* +X556839Y145274D01* +X556915Y145302D01* +X556990Y145334D01* +X557064Y145369D01* +X557136Y145407D01* +X557206Y145449D01* +X557274Y145494D01* +X557340Y145542D01* +X557404Y145593D01* +X557465Y145647D01* +X557524Y145703D01* +X557580Y145763D01* +X557633Y145824D01* +X557683Y145888D01* +X557731Y145955D01* +X557775Y146023D01* +X557816Y146094D01* +X557854Y146166D01* +X557888Y146240D01* +X557919Y146315D01* +X557947Y146392D01* +X557971Y146470D01* +X557991Y146549D01* +X558008Y146629D01* +X558021Y146709D01* +X558031Y146790D01* +X558036Y146871D01* +X558038Y146953D01* +X556839Y148632D02* +X556685Y148705D01* +X556530Y148774D01* +X556373Y148839D01* +X556214Y148901D01* +X556055Y148958D01* +X555893Y149012D01* +X555731Y149062D01* +X555568Y149108D01* +X555403Y149150D01* +X555237Y149188D01* +X555071Y149223D01* +X554904Y149253D01* +X554736Y149279D01* +X554568Y149301D01* +X554399Y149320D01* +X554229Y149334D01* +X554060Y149344D01* +X553890Y149350D01* +X553720Y149352D01* +X556839Y148632D02* +X556915Y148604D01* +X556990Y148572D01* +X557064Y148537D01* +X557136Y148499D01* +X557206Y148457D01* +X557274Y148412D01* +X557340Y148364D01* +X557404Y148313D01* +X557465Y148259D01* +X557524Y148203D01* +X557580Y148143D01* +X557633Y148082D01* +X557683Y148018D01* +X557731Y147951D01* +X557775Y147883D01* +X557816Y147812D01* +X557854Y147740D01* +X557888Y147666D01* +X557919Y147591D01* +X557947Y147514D01* +X557971Y147436D01* +X557991Y147357D01* +X558008Y147277D01* +X558021Y147197D01* +X558031Y147116D01* +X558036Y147035D01* +X558038Y146953D01* +X556119Y145034D02* +X551321Y148872D01* +D17* +X561340Y170180D03* +D14* +X573278Y169672D02* +X573278Y161036D01* +X573278Y169672D02* +X575677Y169672D01* +X575774Y169670D01* +X575870Y169664D01* +X575966Y169655D01* +X576062Y169641D01* +X576157Y169624D01* +X576251Y169602D01* +X576344Y169577D01* +X576437Y169549D01* +X576528Y169516D01* +X576617Y169480D01* +X576705Y169440D01* +X576792Y169397D01* +X576877Y169351D01* +X576959Y169301D01* +X577040Y169247D01* +X577118Y169191D01* +X577194Y169131D01* +X577268Y169069D01* +X577339Y169003D01* +X577407Y168935D01* +X577473Y168864D01* +X577535Y168790D01* +X577595Y168714D01* +X577651Y168636D01* +X577705Y168555D01* +X577755Y168472D01* +X577801Y168388D01* +X577844Y168301D01* +X577884Y168213D01* +X577920Y168124D01* +X577953Y168033D01* +X577981Y167940D01* +X578006Y167847D01* +X578028Y167753D01* +X578045Y167658D01* +X578059Y167562D01* +X578068Y167466D01* +X578074Y167370D01* +X578076Y167273D01* +X578074Y167176D01* +X578068Y167080D01* +X578059Y166984D01* +X578045Y166888D01* +X578028Y166793D01* +X578006Y166699D01* +X577981Y166606D01* +X577953Y166513D01* +X577920Y166422D01* +X577884Y166333D01* +X577844Y166245D01* +X577801Y166158D01* +X577755Y166074D01* +X577705Y165991D01* +X577651Y165910D01* +X577595Y165832D01* +X577535Y165756D01* +X577473Y165682D01* +X577407Y165611D01* +X577339Y165543D01* +X577268Y165477D01* +X577194Y165415D01* +X577118Y165355D01* +X577040Y165299D01* +X576959Y165245D01* +X576877Y165195D01* +X576792Y165149D01* +X576705Y165106D01* +X576617Y165066D01* +X576528Y165030D01* +X576437Y164997D01* +X576344Y164969D01* +X576251Y164944D01* +X576157Y164922D01* +X576062Y164905D01* +X575966Y164891D01* +X575870Y164882D01* +X575774Y164876D01* +X575677Y164874D01* +X573278Y164874D01* +X576157Y164874D02* +X578076Y161036D01* +X584976Y169672D02* +X585068Y169670D01* +X585159Y169664D01* +X585250Y169655D01* +X585341Y169641D01* +X585431Y169624D01* +X585520Y169602D01* +X585608Y169577D01* +X585695Y169549D01* +X585781Y169516D01* +X585865Y169480D01* +X585948Y169441D01* +X586029Y169398D01* +X586108Y169351D01* +X586185Y169302D01* +X586260Y169249D01* +X586332Y169193D01* +X586402Y169134D01* +X586470Y169072D01* +X586535Y169007D01* +X586597Y168939D01* +X586656Y168869D01* +X586712Y168797D01* +X586765Y168722D01* +X586814Y168645D01* +X586861Y168566D01* +X586904Y168485D01* +X586943Y168402D01* +X586979Y168318D01* +X587012Y168232D01* +X587040Y168145D01* +X587065Y168057D01* +X587087Y167968D01* +X587104Y167878D01* +X587118Y167787D01* +X587127Y167696D01* +X587133Y167605D01* +X587135Y167513D01* +X584976Y169672D02* +X584873Y169670D01* +X584771Y169664D01* +X584669Y169655D01* +X584567Y169642D01* +X584466Y169625D01* +X584365Y169604D01* +X584266Y169580D01* +X584167Y169551D01* +X584070Y169520D01* +X583973Y169484D01* +X583878Y169446D01* +X583785Y169403D01* +X583693Y169357D01* +X583603Y169308D01* +X583515Y169256D01* +X583428Y169200D01* +X583344Y169141D01* +X583263Y169080D01* +X583183Y169015D01* +X583106Y168947D01* +X583031Y168876D01* +X582960Y168803D01* +X582891Y168727D01* +X582824Y168649D01* +X582761Y168568D01* +X582701Y168485D01* +X582644Y168400D01* +X582590Y168313D01* +X582539Y168223D01* +X582492Y168132D01* +X582448Y168040D01* +X582407Y167945D01* +X582370Y167850D01* +X582337Y167753D01* +X586415Y165834D02* +X586482Y165900D01* +X586546Y165969D01* +X586607Y166040D01* +X586665Y166114D01* +X586720Y166190D01* +X586772Y166268D01* +X586821Y166348D01* +X586867Y166430D01* +X586909Y166514D01* +X586948Y166600D01* +X586983Y166687D01* +X587014Y166775D01* +X587042Y166865D01* +X587067Y166955D01* +X587088Y167047D01* +X587105Y167139D01* +X587118Y167232D01* +X587127Y167325D01* +X587133Y167419D01* +X587135Y167513D01* +X586415Y165834D02* +X582337Y161036D01* +X587135Y161036D01* +X593400Y164874D02* +X596279Y164874D01* +X593400Y164874D02* +X593314Y164876D01* +X593228Y164882D01* +X593142Y164891D01* +X593057Y164905D01* +X592973Y164922D01* +X592889Y164943D01* +X592807Y164968D01* +X592726Y164996D01* +X592646Y165028D01* +X592567Y165064D01* +X592491Y165103D01* +X592416Y165146D01* +X592343Y165191D01* +X592272Y165240D01* +X592204Y165293D01* +X592137Y165348D01* +X592074Y165406D01* +X592013Y165467D01* +X591955Y165530D01* +X591900Y165597D01* +X591847Y165665D01* +X591798Y165736D01* +X591753Y165809D01* +X591710Y165884D01* +X591671Y165960D01* +X591635Y166039D01* +X591603Y166119D01* +X591575Y166200D01* +X591550Y166282D01* +X591529Y166366D01* +X591512Y166450D01* +X591498Y166535D01* +X591489Y166621D01* +X591483Y166707D01* +X591481Y166793D01* +X591481Y167273D01* +X591483Y167370D01* +X591489Y167466D01* +X591498Y167562D01* +X591512Y167658D01* +X591529Y167753D01* +X591551Y167847D01* +X591576Y167940D01* +X591604Y168033D01* +X591637Y168124D01* +X591673Y168213D01* +X591713Y168301D01* +X591756Y168388D01* +X591802Y168473D01* +X591852Y168555D01* +X591906Y168636D01* +X591962Y168714D01* +X592022Y168790D01* +X592084Y168864D01* +X592150Y168935D01* +X592218Y169003D01* +X592289Y169069D01* +X592363Y169131D01* +X592439Y169191D01* +X592517Y169247D01* +X592598Y169301D01* +X592681Y169351D01* +X592765Y169397D01* +X592852Y169440D01* +X592940Y169480D01* +X593029Y169516D01* +X593120Y169549D01* +X593213Y169577D01* +X593306Y169602D01* +X593400Y169624D01* +X593495Y169641D01* +X593591Y169655D01* +X593687Y169664D01* +X593783Y169670D01* +X593880Y169672D01* +X593977Y169670D01* +X594073Y169664D01* +X594169Y169655D01* +X594265Y169641D01* +X594360Y169624D01* +X594454Y169602D01* +X594547Y169577D01* +X594640Y169549D01* +X594731Y169516D01* +X594820Y169480D01* +X594908Y169440D01* +X594995Y169397D01* +X595080Y169351D01* +X595162Y169301D01* +X595243Y169247D01* +X595321Y169191D01* +X595397Y169131D01* +X595471Y169069D01* +X595542Y169003D01* +X595610Y168935D01* +X595676Y168864D01* +X595738Y168790D01* +X595798Y168714D01* +X595854Y168636D01* +X595908Y168555D01* +X595958Y168473D01* +X596004Y168388D01* +X596047Y168301D01* +X596087Y168213D01* +X596123Y168124D01* +X596156Y168033D01* +X596184Y167940D01* +X596209Y167847D01* +X596231Y167753D01* +X596248Y167658D01* +X596262Y167562D01* +X596271Y167466D01* +X596277Y167370D01* +X596279Y167273D01* +X596279Y164874D01* +X596277Y164751D01* +X596271Y164628D01* +X596261Y164505D01* +X596247Y164383D01* +X596230Y164261D01* +X596208Y164140D01* +X596183Y164020D01* +X596153Y163900D01* +X596120Y163782D01* +X596083Y163665D01* +X596043Y163548D01* +X595999Y163434D01* +X595951Y163320D01* +X595899Y163209D01* +X595844Y163099D01* +X595785Y162991D01* +X595723Y162884D01* +X595658Y162780D01* +X595589Y162678D01* +X595517Y162578D01* +X595442Y162481D01* +X595363Y162386D01* +X595282Y162294D01* +X595198Y162204D01* +X595111Y162117D01* +X595021Y162033D01* +X594929Y161952D01* +X594834Y161873D01* +X594737Y161798D01* +X594637Y161726D01* +X594535Y161657D01* +X594431Y161592D01* +X594324Y161530D01* +X594216Y161471D01* +X594106Y161416D01* +X593995Y161364D01* +X593881Y161317D01* +X593767Y161272D01* +X593650Y161232D01* +X593533Y161195D01* +X593415Y161162D01* +X593295Y161132D01* +X593175Y161107D01* +X593054Y161085D01* +X592932Y161068D01* +X592810Y161054D01* +X592687Y161044D01* +X592564Y161038D01* +X592441Y161036D01* +D13* +X485140Y254000D03* +D14* +X478028Y244856D02* +X469392Y244856D01* +X469392Y247255D01* +X469394Y247352D01* +X469400Y247448D01* +X469409Y247544D01* +X469423Y247640D01* +X469440Y247735D01* +X469462Y247829D01* +X469487Y247922D01* +X469515Y248015D01* +X469548Y248106D01* +X469584Y248195D01* +X469624Y248283D01* +X469667Y248370D01* +X469713Y248455D01* +X469763Y248537D01* +X469817Y248618D01* +X469873Y248696D01* +X469933Y248772D01* +X469995Y248846D01* +X470061Y248917D01* +X470129Y248985D01* +X470200Y249051D01* +X470274Y249113D01* +X470350Y249173D01* +X470428Y249229D01* +X470509Y249283D01* +X470592Y249333D01* +X470676Y249379D01* +X470763Y249422D01* +X470851Y249462D01* +X470940Y249498D01* +X471031Y249531D01* +X471124Y249559D01* +X471217Y249584D01* +X471311Y249606D01* +X471406Y249623D01* +X471502Y249637D01* +X471598Y249646D01* +X471694Y249652D01* +X471791Y249654D01* +X471888Y249652D01* +X471984Y249646D01* +X472080Y249637D01* +X472176Y249623D01* +X472271Y249606D01* +X472365Y249584D01* +X472458Y249559D01* +X472551Y249531D01* +X472642Y249498D01* +X472731Y249462D01* +X472819Y249422D01* +X472906Y249379D01* +X472991Y249333D01* +X473073Y249283D01* +X473154Y249229D01* +X473232Y249173D01* +X473308Y249113D01* +X473382Y249051D01* +X473453Y248985D01* +X473521Y248917D01* +X473587Y248846D01* +X473649Y248772D01* +X473709Y248696D01* +X473765Y248618D01* +X473819Y248537D01* +X473869Y248455D01* +X473915Y248370D01* +X473958Y248283D01* +X473998Y248195D01* +X474034Y248106D01* +X474067Y248015D01* +X474095Y247922D01* +X474120Y247829D01* +X474142Y247735D01* +X474159Y247640D01* +X474173Y247544D01* +X474182Y247448D01* +X474188Y247352D01* +X474190Y247255D01* +X474190Y244856D01* +X474190Y247735D02* +X478028Y249654D01* +X469392Y256554D02* +X469394Y256646D01* +X469400Y256737D01* +X469409Y256828D01* +X469423Y256919D01* +X469440Y257009D01* +X469462Y257098D01* +X469487Y257186D01* +X469515Y257273D01* +X469548Y257359D01* +X469584Y257443D01* +X469623Y257526D01* +X469666Y257607D01* +X469713Y257686D01* +X469762Y257763D01* +X469815Y257838D01* +X469871Y257910D01* +X469930Y257980D01* +X469992Y258048D01* +X470057Y258113D01* +X470125Y258175D01* +X470195Y258234D01* +X470267Y258290D01* +X470342Y258343D01* +X470419Y258392D01* +X470498Y258439D01* +X470579Y258482D01* +X470662Y258521D01* +X470746Y258557D01* +X470832Y258590D01* +X470919Y258618D01* +X471007Y258643D01* +X471096Y258665D01* +X471186Y258682D01* +X471277Y258696D01* +X471368Y258705D01* +X471459Y258711D01* +X471551Y258713D01* +X469392Y256554D02* +X469394Y256451D01* +X469400Y256349D01* +X469409Y256247D01* +X469422Y256145D01* +X469439Y256044D01* +X469460Y255943D01* +X469484Y255844D01* +X469513Y255745D01* +X469544Y255648D01* +X469580Y255551D01* +X469618Y255456D01* +X469661Y255363D01* +X469707Y255271D01* +X469756Y255181D01* +X469808Y255093D01* +X469864Y255006D01* +X469923Y254922D01* +X469984Y254841D01* +X470049Y254761D01* +X470117Y254684D01* +X470188Y254609D01* +X470261Y254538D01* +X470337Y254469D01* +X470415Y254402D01* +X470496Y254339D01* +X470579Y254279D01* +X470664Y254222D01* +X470751Y254168D01* +X470841Y254117D01* +X470932Y254070D01* +X471024Y254026D01* +X471119Y253985D01* +X471214Y253948D01* +X471311Y253915D01* +X473230Y257993D02* +X473164Y258060D01* +X473095Y258124D01* +X473024Y258185D01* +X472950Y258243D01* +X472874Y258298D01* +X472796Y258350D01* +X472716Y258399D01* +X472634Y258445D01* +X472550Y258487D01* +X472464Y258526D01* +X472377Y258561D01* +X472289Y258592D01* +X472199Y258620D01* +X472109Y258645D01* +X472017Y258666D01* +X471925Y258683D01* +X471832Y258696D01* +X471739Y258705D01* +X471645Y258711D01* +X471551Y258713D01* +X473230Y257993D02* +X478028Y253915D01* +X478028Y258713D01* +X470352Y263059D02* +X469392Y263059D01* +X469392Y267857D01* +X478028Y265458D01* +D17* +X764540Y101600D03* +D14* +X758444Y108966D02* +X758444Y117602D01* +X760843Y117602D01* +X760940Y117600D01* +X761036Y117594D01* +X761132Y117585D01* +X761228Y117571D01* +X761323Y117554D01* +X761417Y117532D01* +X761510Y117507D01* +X761603Y117479D01* +X761694Y117446D01* +X761783Y117410D01* +X761871Y117370D01* +X761958Y117327D01* +X762043Y117281D01* +X762125Y117231D01* +X762206Y117177D01* +X762284Y117121D01* +X762360Y117061D01* +X762434Y116999D01* +X762505Y116933D01* +X762573Y116865D01* +X762639Y116794D01* +X762701Y116720D01* +X762761Y116644D01* +X762817Y116566D01* +X762871Y116485D01* +X762921Y116402D01* +X762967Y116318D01* +X763010Y116231D01* +X763050Y116143D01* +X763086Y116054D01* +X763119Y115963D01* +X763147Y115870D01* +X763172Y115777D01* +X763194Y115683D01* +X763211Y115588D01* +X763225Y115492D01* +X763234Y115396D01* +X763240Y115300D01* +X763242Y115203D01* +X763240Y115106D01* +X763234Y115010D01* +X763225Y114914D01* +X763211Y114818D01* +X763194Y114723D01* +X763172Y114629D01* +X763147Y114536D01* +X763119Y114443D01* +X763086Y114352D01* +X763050Y114263D01* +X763010Y114175D01* +X762967Y114088D01* +X762921Y114003D01* +X762871Y113921D01* +X762817Y113840D01* +X762761Y113762D01* +X762701Y113686D01* +X762639Y113612D01* +X762573Y113541D01* +X762505Y113473D01* +X762434Y113407D01* +X762360Y113345D01* +X762284Y113285D01* +X762206Y113229D01* +X762125Y113175D01* +X762043Y113125D01* +X761958Y113079D01* +X761871Y113036D01* +X761783Y112996D01* +X761694Y112960D01* +X761603Y112927D01* +X761510Y112899D01* +X761417Y112874D01* +X761323Y112852D01* +X761228Y112835D01* +X761132Y112821D01* +X761036Y112812D01* +X760940Y112806D01* +X760843Y112804D01* +X758444Y112804D01* +X761323Y112804D02* +X763242Y108966D01* +X770142Y117602D02* +X770234Y117600D01* +X770325Y117594D01* +X770416Y117585D01* +X770507Y117571D01* +X770597Y117554D01* +X770686Y117532D01* +X770774Y117507D01* +X770861Y117479D01* +X770947Y117446D01* +X771031Y117410D01* +X771114Y117371D01* +X771195Y117328D01* +X771274Y117281D01* +X771351Y117232D01* +X771426Y117179D01* +X771498Y117123D01* +X771568Y117064D01* +X771636Y117002D01* +X771701Y116937D01* +X771763Y116869D01* +X771822Y116799D01* +X771878Y116727D01* +X771931Y116652D01* +X771980Y116575D01* +X772027Y116496D01* +X772070Y116415D01* +X772109Y116332D01* +X772145Y116248D01* +X772178Y116162D01* +X772206Y116075D01* +X772231Y115987D01* +X772253Y115898D01* +X772270Y115808D01* +X772284Y115717D01* +X772293Y115626D01* +X772299Y115535D01* +X772301Y115443D01* +X770142Y117602D02* +X770039Y117600D01* +X769937Y117594D01* +X769835Y117585D01* +X769733Y117572D01* +X769632Y117555D01* +X769531Y117534D01* +X769432Y117510D01* +X769333Y117481D01* +X769236Y117450D01* +X769139Y117414D01* +X769044Y117376D01* +X768951Y117333D01* +X768859Y117287D01* +X768769Y117238D01* +X768681Y117186D01* +X768594Y117130D01* +X768510Y117071D01* +X768429Y117010D01* +X768349Y116945D01* +X768272Y116877D01* +X768197Y116806D01* +X768126Y116733D01* +X768057Y116657D01* +X767990Y116579D01* +X767927Y116498D01* +X767867Y116415D01* +X767810Y116330D01* +X767756Y116243D01* +X767705Y116153D01* +X767658Y116062D01* +X767614Y115970D01* +X767573Y115875D01* +X767536Y115780D01* +X767503Y115683D01* +X771581Y113764D02* +X771648Y113830D01* +X771712Y113899D01* +X771773Y113970D01* +X771831Y114044D01* +X771886Y114120D01* +X771938Y114198D01* +X771987Y114278D01* +X772033Y114360D01* +X772075Y114444D01* +X772114Y114530D01* +X772149Y114617D01* +X772180Y114705D01* +X772208Y114795D01* +X772233Y114885D01* +X772254Y114977D01* +X772271Y115069D01* +X772284Y115162D01* +X772293Y115255D01* +X772299Y115349D01* +X772301Y115443D01* +X771581Y113764D02* +X767503Y108966D01* +X772301Y108966D01* +D13* +X462280Y302260D03* +D14* +X465328Y277735D02* +X456692Y277735D01* +X456692Y280134D01* +X456694Y280231D01* +X456700Y280327D01* +X456709Y280423D01* +X456723Y280519D01* +X456740Y280614D01* +X456762Y280708D01* +X456787Y280801D01* +X456815Y280894D01* +X456848Y280985D01* +X456884Y281074D01* +X456924Y281162D01* +X456967Y281249D01* +X457013Y281334D01* +X457063Y281416D01* +X457117Y281497D01* +X457173Y281575D01* +X457233Y281651D01* +X457295Y281725D01* +X457361Y281796D01* +X457429Y281864D01* +X457500Y281930D01* +X457574Y281992D01* +X457650Y282052D01* +X457728Y282108D01* +X457809Y282162D01* +X457892Y282212D01* +X457976Y282258D01* +X458063Y282301D01* +X458151Y282341D01* +X458240Y282377D01* +X458331Y282410D01* +X458424Y282438D01* +X458517Y282463D01* +X458611Y282485D01* +X458706Y282502D01* +X458802Y282516D01* +X458898Y282525D01* +X458994Y282531D01* +X459091Y282533D01* +X459188Y282531D01* +X459284Y282525D01* +X459380Y282516D01* +X459476Y282502D01* +X459571Y282485D01* +X459665Y282463D01* +X459758Y282438D01* +X459851Y282410D01* +X459942Y282377D01* +X460031Y282341D01* +X460119Y282301D01* +X460206Y282258D01* +X460291Y282212D01* +X460373Y282162D01* +X460454Y282108D01* +X460532Y282052D01* +X460608Y281992D01* +X460682Y281930D01* +X460753Y281864D01* +X460821Y281796D01* +X460887Y281725D01* +X460949Y281651D01* +X461009Y281575D01* +X461065Y281497D01* +X461119Y281416D01* +X461169Y281334D01* +X461215Y281249D01* +X461258Y281162D01* +X461298Y281074D01* +X461334Y280985D01* +X461367Y280894D01* +X461395Y280801D01* +X461420Y280708D01* +X461442Y280614D01* +X461459Y280519D01* +X461473Y280423D01* +X461482Y280327D01* +X461488Y280231D01* +X461490Y280134D01* +X461490Y277735D01* +X461490Y280614D02* +X465328Y282533D01* +X457652Y286794D02* +X456692Y286794D01* +X456692Y291592D01* +X465328Y289193D01* +D17* +X355600Y363220D03* +D14* +X370332Y361442D02* +X370332Y370078D01* +X372731Y370078D01* +X372828Y370076D01* +X372924Y370070D01* +X373020Y370061D01* +X373116Y370047D01* +X373211Y370030D01* +X373305Y370008D01* +X373398Y369983D01* +X373491Y369955D01* +X373582Y369922D01* +X373671Y369886D01* +X373759Y369846D01* +X373846Y369803D01* +X373931Y369757D01* +X374013Y369707D01* +X374094Y369653D01* +X374172Y369597D01* +X374248Y369537D01* +X374322Y369475D01* +X374393Y369409D01* +X374461Y369341D01* +X374527Y369270D01* +X374589Y369196D01* +X374649Y369120D01* +X374705Y369042D01* +X374759Y368961D01* +X374809Y368879D01* +X374855Y368794D01* +X374898Y368707D01* +X374938Y368619D01* +X374974Y368530D01* +X375007Y368439D01* +X375035Y368346D01* +X375060Y368253D01* +X375082Y368159D01* +X375099Y368064D01* +X375113Y367968D01* +X375122Y367872D01* +X375128Y367776D01* +X375130Y367679D01* +X375128Y367582D01* +X375122Y367486D01* +X375113Y367390D01* +X375099Y367294D01* +X375082Y367199D01* +X375060Y367105D01* +X375035Y367012D01* +X375007Y366919D01* +X374974Y366828D01* +X374938Y366739D01* +X374898Y366651D01* +X374855Y366564D01* +X374809Y366480D01* +X374759Y366397D01* +X374705Y366316D01* +X374649Y366238D01* +X374589Y366162D01* +X374527Y366088D01* +X374461Y366017D01* +X374393Y365949D01* +X374322Y365883D01* +X374248Y365821D01* +X374172Y365761D01* +X374094Y365705D01* +X374013Y365651D01* +X373931Y365601D01* +X373846Y365555D01* +X373759Y365512D01* +X373671Y365472D01* +X373582Y365436D01* +X373491Y365403D01* +X373398Y365375D01* +X373305Y365350D01* +X373211Y365328D01* +X373116Y365311D01* +X373020Y365297D01* +X372924Y365288D01* +X372828Y365282D01* +X372731Y365280D01* +X370332Y365280D01* +X373211Y365280D02* +X375130Y361442D01* +X379391Y366240D02* +X382270Y366240D01* +X382356Y366238D01* +X382442Y366232D01* +X382528Y366223D01* +X382613Y366209D01* +X382697Y366192D01* +X382781Y366171D01* +X382863Y366146D01* +X382944Y366118D01* +X383024Y366086D01* +X383103Y366050D01* +X383179Y366011D01* +X383254Y365968D01* +X383327Y365923D01* +X383398Y365874D01* +X383466Y365821D01* +X383533Y365766D01* +X383596Y365708D01* +X383657Y365647D01* +X383715Y365584D01* +X383770Y365517D01* +X383823Y365449D01* +X383872Y365378D01* +X383917Y365305D01* +X383960Y365230D01* +X383999Y365154D01* +X384035Y365075D01* +X384067Y364995D01* +X384095Y364914D01* +X384120Y364832D01* +X384141Y364748D01* +X384158Y364664D01* +X384172Y364579D01* +X384181Y364493D01* +X384187Y364407D01* +X384189Y364321D01* +X384189Y363841D01* +X384187Y363744D01* +X384181Y363648D01* +X384172Y363552D01* +X384158Y363456D01* +X384141Y363361D01* +X384119Y363267D01* +X384094Y363174D01* +X384066Y363081D01* +X384033Y362990D01* +X383997Y362901D01* +X383957Y362813D01* +X383914Y362726D01* +X383868Y362642D01* +X383818Y362559D01* +X383764Y362478D01* +X383708Y362400D01* +X383648Y362324D01* +X383586Y362250D01* +X383520Y362179D01* +X383452Y362111D01* +X383381Y362045D01* +X383307Y361983D01* +X383231Y361923D01* +X383153Y361867D01* +X383072Y361813D01* +X382990Y361763D01* +X382905Y361717D01* +X382818Y361674D01* +X382730Y361634D01* +X382641Y361598D01* +X382550Y361565D01* +X382457Y361537D01* +X382364Y361512D01* +X382270Y361490D01* +X382175Y361473D01* +X382079Y361459D01* +X381983Y361450D01* +X381887Y361444D01* +X381790Y361442D01* +X381693Y361444D01* +X381597Y361450D01* +X381501Y361459D01* +X381405Y361473D01* +X381310Y361490D01* +X381216Y361512D01* +X381123Y361537D01* +X381030Y361565D01* +X380939Y361598D01* +X380850Y361634D01* +X380762Y361674D01* +X380675Y361717D01* +X380591Y361763D01* +X380508Y361813D01* +X380427Y361867D01* +X380349Y361923D01* +X380273Y361983D01* +X380199Y362045D01* +X380128Y362111D01* +X380060Y362179D01* +X379994Y362250D01* +X379932Y362324D01* +X379872Y362400D01* +X379816Y362478D01* +X379762Y362559D01* +X379712Y362642D01* +X379666Y362726D01* +X379623Y362813D01* +X379583Y362901D01* +X379547Y362990D01* +X379514Y363081D01* +X379486Y363174D01* +X379461Y363267D01* +X379439Y363361D01* +X379422Y363456D01* +X379408Y363552D01* +X379399Y363648D01* +X379393Y363744D01* +X379391Y363841D01* +X379391Y366240D01* +X379392Y366240D02* +X379394Y366363D01* +X379400Y366486D01* +X379410Y366609D01* +X379424Y366731D01* +X379441Y366853D01* +X379463Y366974D01* +X379488Y367094D01* +X379518Y367214D01* +X379551Y367332D01* +X379588Y367449D01* +X379628Y367566D01* +X379672Y367680D01* +X379720Y367794D01* +X379772Y367905D01* +X379827Y368015D01* +X379886Y368123D01* +X379948Y368230D01* +X380013Y368334D01* +X380082Y368436D01* +X380154Y368536D01* +X380229Y368633D01* +X380308Y368728D01* +X380389Y368820D01* +X380473Y368910D01* +X380560Y368997D01* +X380650Y369081D01* +X380742Y369162D01* +X380837Y369241D01* +X380934Y369316D01* +X381034Y369388D01* +X381136Y369457D01* +X381240Y369522D01* +X381347Y369584D01* +X381455Y369643D01* +X381565Y369698D01* +X381676Y369750D01* +X381790Y369797D01* +X381904Y369842D01* +X382021Y369882D01* +X382138Y369919D01* +X382256Y369952D01* +X382376Y369982D01* +X382496Y370007D01* +X382617Y370029D01* +X382739Y370046D01* +X382861Y370060D01* +X382984Y370070D01* +X383107Y370076D01* +X383230Y370078D01* +D13* +X1211580Y104140D03* +D14* +X1218438Y97395D02* +X1227074Y97395D01* +X1218438Y97395D02* +X1218438Y99794D01* +X1218440Y99891D01* +X1218446Y99987D01* +X1218455Y100083D01* +X1218469Y100179D01* +X1218486Y100274D01* +X1218508Y100368D01* +X1218533Y100461D01* +X1218561Y100554D01* +X1218594Y100645D01* +X1218630Y100734D01* +X1218670Y100822D01* +X1218713Y100909D01* +X1218759Y100994D01* +X1218809Y101076D01* +X1218863Y101157D01* +X1218919Y101235D01* +X1218979Y101311D01* +X1219041Y101385D01* +X1219107Y101456D01* +X1219175Y101524D01* +X1219246Y101590D01* +X1219320Y101652D01* +X1219396Y101712D01* +X1219474Y101768D01* +X1219555Y101822D01* +X1219638Y101872D01* +X1219722Y101918D01* +X1219809Y101961D01* +X1219897Y102001D01* +X1219986Y102037D01* +X1220077Y102070D01* +X1220170Y102098D01* +X1220263Y102123D01* +X1220357Y102145D01* +X1220452Y102162D01* +X1220548Y102176D01* +X1220644Y102185D01* +X1220740Y102191D01* +X1220837Y102193D01* +X1220934Y102191D01* +X1221030Y102185D01* +X1221126Y102176D01* +X1221222Y102162D01* +X1221317Y102145D01* +X1221411Y102123D01* +X1221504Y102098D01* +X1221597Y102070D01* +X1221688Y102037D01* +X1221777Y102001D01* +X1221865Y101961D01* +X1221952Y101918D01* +X1222037Y101872D01* +X1222119Y101822D01* +X1222200Y101768D01* +X1222278Y101712D01* +X1222354Y101652D01* +X1222428Y101590D01* +X1222499Y101524D01* +X1222567Y101456D01* +X1222633Y101385D01* +X1222695Y101311D01* +X1222755Y101235D01* +X1222811Y101157D01* +X1222865Y101076D01* +X1222915Y100994D01* +X1222961Y100909D01* +X1223004Y100822D01* +X1223044Y100734D01* +X1223080Y100645D01* +X1223113Y100554D01* +X1223141Y100461D01* +X1223166Y100368D01* +X1223188Y100274D01* +X1223205Y100179D01* +X1223219Y100083D01* +X1223228Y99987D01* +X1223234Y99891D01* +X1223236Y99794D01* +X1223236Y97395D01* +X1223236Y100274D02* +X1227074Y102193D01* +X1223236Y108373D02* +X1223236Y111252D01* +X1223236Y108373D02* +X1223234Y108287D01* +X1223228Y108201D01* +X1223219Y108115D01* +X1223205Y108030D01* +X1223188Y107946D01* +X1223167Y107862D01* +X1223142Y107780D01* +X1223114Y107699D01* +X1223082Y107619D01* +X1223046Y107540D01* +X1223007Y107464D01* +X1222964Y107389D01* +X1222919Y107316D01* +X1222870Y107245D01* +X1222817Y107177D01* +X1222762Y107110D01* +X1222704Y107047D01* +X1222643Y106986D01* +X1222580Y106928D01* +X1222513Y106873D01* +X1222445Y106821D01* +X1222374Y106771D01* +X1222301Y106726D01* +X1222226Y106683D01* +X1222150Y106644D01* +X1222071Y106608D01* +X1221991Y106576D01* +X1221910Y106548D01* +X1221828Y106523D01* +X1221744Y106502D01* +X1221660Y106485D01* +X1221575Y106471D01* +X1221489Y106462D01* +X1221403Y106456D01* +X1221317Y106454D01* +X1220837Y106454D01* +X1220740Y106456D01* +X1220644Y106462D01* +X1220548Y106471D01* +X1220452Y106485D01* +X1220357Y106502D01* +X1220263Y106524D01* +X1220170Y106549D01* +X1220077Y106577D01* +X1219986Y106610D01* +X1219897Y106646D01* +X1219809Y106686D01* +X1219722Y106729D01* +X1219638Y106775D01* +X1219555Y106825D01* +X1219474Y106879D01* +X1219396Y106935D01* +X1219320Y106995D01* +X1219246Y107057D01* +X1219175Y107123D01* +X1219107Y107191D01* +X1219041Y107262D01* +X1218979Y107336D01* +X1218919Y107412D01* +X1218863Y107490D01* +X1218809Y107571D01* +X1218759Y107654D01* +X1218713Y107738D01* +X1218670Y107825D01* +X1218630Y107913D01* +X1218594Y108002D01* +X1218561Y108093D01* +X1218533Y108186D01* +X1218508Y108279D01* +X1218486Y108373D01* +X1218469Y108468D01* +X1218455Y108564D01* +X1218446Y108660D01* +X1218440Y108756D01* +X1218438Y108853D01* +X1218440Y108950D01* +X1218446Y109046D01* +X1218455Y109142D01* +X1218469Y109238D01* +X1218486Y109333D01* +X1218508Y109427D01* +X1218533Y109520D01* +X1218561Y109613D01* +X1218594Y109704D01* +X1218630Y109793D01* +X1218670Y109881D01* +X1218713Y109968D01* +X1218759Y110053D01* +X1218809Y110135D01* +X1218863Y110216D01* +X1218919Y110294D01* +X1218979Y110370D01* +X1219041Y110444D01* +X1219107Y110515D01* +X1219175Y110583D01* +X1219246Y110649D01* +X1219320Y110711D01* +X1219396Y110771D01* +X1219474Y110827D01* +X1219555Y110881D01* +X1219638Y110931D01* +X1219722Y110977D01* +X1219809Y111020D01* +X1219897Y111060D01* +X1219986Y111096D01* +X1220077Y111129D01* +X1220170Y111157D01* +X1220263Y111182D01* +X1220357Y111204D01* +X1220452Y111221D01* +X1220548Y111235D01* +X1220644Y111244D01* +X1220740Y111250D01* +X1220837Y111252D01* +X1223236Y111252D01* +X1223359Y111250D01* +X1223482Y111244D01* +X1223605Y111234D01* +X1223727Y111220D01* +X1223849Y111203D01* +X1223970Y111181D01* +X1224090Y111156D01* +X1224210Y111126D01* +X1224328Y111093D01* +X1224445Y111056D01* +X1224562Y111016D01* +X1224676Y110972D01* +X1224790Y110924D01* +X1224901Y110872D01* +X1225011Y110817D01* +X1225119Y110758D01* +X1225226Y110696D01* +X1225330Y110631D01* +X1225432Y110562D01* +X1225532Y110490D01* +X1225629Y110415D01* +X1225724Y110336D01* +X1225816Y110255D01* +X1225906Y110171D01* +X1225993Y110084D01* +X1226077Y109994D01* +X1226158Y109902D01* +X1226237Y109807D01* +X1226312Y109710D01* +X1226384Y109610D01* +X1226453Y109508D01* +X1226518Y109404D01* +X1226580Y109297D01* +X1226639Y109189D01* +X1226694Y109079D01* +X1226746Y108968D01* +X1226794Y108854D01* +X1226838Y108740D01* +X1226878Y108623D01* +X1226915Y108506D01* +X1226948Y108388D01* +X1226978Y108268D01* +X1227003Y108148D01* +X1227025Y108027D01* +X1227042Y107905D01* +X1227056Y107783D01* +X1227066Y107660D01* +X1227072Y107537D01* +X1227074Y107414D01* +D17* +X744220Y160020D03* +D14* +X756666Y155702D02* +X756666Y164338D01* +X759065Y164338D01* +X759162Y164336D01* +X759258Y164330D01* +X759354Y164321D01* +X759450Y164307D01* +X759545Y164290D01* +X759639Y164268D01* +X759732Y164243D01* +X759825Y164215D01* +X759916Y164182D01* +X760005Y164146D01* +X760093Y164106D01* +X760180Y164063D01* +X760265Y164017D01* +X760347Y163967D01* +X760428Y163913D01* +X760506Y163857D01* +X760582Y163797D01* +X760656Y163735D01* +X760727Y163669D01* +X760795Y163601D01* +X760861Y163530D01* +X760923Y163456D01* +X760983Y163380D01* +X761039Y163302D01* +X761093Y163221D01* +X761143Y163138D01* +X761189Y163054D01* +X761232Y162967D01* +X761272Y162879D01* +X761308Y162790D01* +X761341Y162699D01* +X761369Y162606D01* +X761394Y162513D01* +X761416Y162419D01* +X761433Y162324D01* +X761447Y162228D01* +X761456Y162132D01* +X761462Y162036D01* +X761464Y161939D01* +X761462Y161842D01* +X761456Y161746D01* +X761447Y161650D01* +X761433Y161554D01* +X761416Y161459D01* +X761394Y161365D01* +X761369Y161272D01* +X761341Y161179D01* +X761308Y161088D01* +X761272Y160999D01* +X761232Y160911D01* +X761189Y160824D01* +X761143Y160740D01* +X761093Y160657D01* +X761039Y160576D01* +X760983Y160498D01* +X760923Y160422D01* +X760861Y160348D01* +X760795Y160277D01* +X760727Y160209D01* +X760656Y160143D01* +X760582Y160081D01* +X760506Y160021D01* +X760428Y159965D01* +X760347Y159911D01* +X760265Y159861D01* +X760180Y159815D01* +X760093Y159772D01* +X760005Y159732D01* +X759916Y159696D01* +X759825Y159663D01* +X759732Y159635D01* +X759639Y159610D01* +X759545Y159588D01* +X759450Y159571D01* +X759354Y159557D01* +X759258Y159548D01* +X759162Y159542D01* +X759065Y159540D01* +X756666Y159540D01* +X759545Y159540D02* +X761464Y155702D01* +X765725Y162419D02* +X768124Y164338D01* +X768124Y155702D01* +X765725Y155702D02* +X770523Y155702D01* +X774869Y163378D02* +X774869Y164338D01* +X779667Y164338D01* +X777268Y155702D01* +D17* +X718820Y160020D03* +D14* +X729742Y115824D02* +X729742Y107188D01* +X729742Y115824D02* +X732141Y115824D01* +X732238Y115822D01* +X732334Y115816D01* +X732430Y115807D01* +X732526Y115793D01* +X732621Y115776D01* +X732715Y115754D01* +X732808Y115729D01* +X732901Y115701D01* +X732992Y115668D01* +X733081Y115632D01* +X733169Y115592D01* +X733256Y115549D01* +X733341Y115503D01* +X733423Y115453D01* +X733504Y115399D01* +X733582Y115343D01* +X733658Y115283D01* +X733732Y115221D01* +X733803Y115155D01* +X733871Y115087D01* +X733937Y115016D01* +X733999Y114942D01* +X734059Y114866D01* +X734115Y114788D01* +X734169Y114707D01* +X734219Y114624D01* +X734265Y114540D01* +X734308Y114453D01* +X734348Y114365D01* +X734384Y114276D01* +X734417Y114185D01* +X734445Y114092D01* +X734470Y113999D01* +X734492Y113905D01* +X734509Y113810D01* +X734523Y113714D01* +X734532Y113618D01* +X734538Y113522D01* +X734540Y113425D01* +X734538Y113328D01* +X734532Y113232D01* +X734523Y113136D01* +X734509Y113040D01* +X734492Y112945D01* +X734470Y112851D01* +X734445Y112758D01* +X734417Y112665D01* +X734384Y112574D01* +X734348Y112485D01* +X734308Y112397D01* +X734265Y112310D01* +X734219Y112225D01* +X734169Y112143D01* +X734115Y112062D01* +X734059Y111984D01* +X733999Y111908D01* +X733937Y111834D01* +X733871Y111763D01* +X733803Y111695D01* +X733732Y111629D01* +X733658Y111567D01* +X733582Y111507D01* +X733504Y111451D01* +X733423Y111397D01* +X733341Y111347D01* +X733256Y111301D01* +X733169Y111258D01* +X733081Y111218D01* +X732992Y111182D01* +X732901Y111149D01* +X732808Y111121D01* +X732715Y111096D01* +X732621Y111074D01* +X732526Y111057D01* +X732430Y111043D01* +X732334Y111034D01* +X732238Y111028D01* +X732141Y111026D01* +X729742Y111026D01* +X732621Y111026D02* +X734540Y107188D01* +X738801Y113905D02* +X741200Y115824D01* +X741200Y107188D01* +X738801Y107188D02* +X743599Y107188D01* +X747945Y109587D02* +X747947Y109684D01* +X747953Y109780D01* +X747962Y109876D01* +X747976Y109972D01* +X747993Y110067D01* +X748015Y110161D01* +X748040Y110254D01* +X748068Y110347D01* +X748101Y110438D01* +X748137Y110527D01* +X748177Y110615D01* +X748220Y110702D01* +X748266Y110787D01* +X748316Y110869D01* +X748370Y110950D01* +X748426Y111028D01* +X748486Y111104D01* +X748548Y111178D01* +X748614Y111249D01* +X748682Y111317D01* +X748753Y111383D01* +X748827Y111445D01* +X748903Y111505D01* +X748981Y111561D01* +X749062Y111615D01* +X749145Y111665D01* +X749229Y111711D01* +X749316Y111754D01* +X749404Y111794D01* +X749493Y111830D01* +X749584Y111863D01* +X749677Y111891D01* +X749770Y111916D01* +X749864Y111938D01* +X749959Y111955D01* +X750055Y111969D01* +X750151Y111978D01* +X750247Y111984D01* +X750344Y111986D01* +X750441Y111984D01* +X750537Y111978D01* +X750633Y111969D01* +X750729Y111955D01* +X750824Y111938D01* +X750918Y111916D01* +X751011Y111891D01* +X751104Y111863D01* +X751195Y111830D01* +X751284Y111794D01* +X751372Y111754D01* +X751459Y111711D01* +X751544Y111665D01* +X751626Y111615D01* +X751707Y111561D01* +X751785Y111505D01* +X751861Y111445D01* +X751935Y111383D01* +X752006Y111317D01* +X752074Y111249D01* +X752140Y111178D01* +X752202Y111104D01* +X752262Y111028D01* +X752318Y110950D01* +X752372Y110869D01* +X752422Y110787D01* +X752468Y110702D01* +X752511Y110615D01* +X752551Y110527D01* +X752587Y110438D01* +X752620Y110347D01* +X752648Y110254D01* +X752673Y110161D01* +X752695Y110067D01* +X752712Y109972D01* +X752726Y109876D01* +X752735Y109780D01* +X752741Y109684D01* +X752743Y109587D01* +X752741Y109490D01* +X752735Y109394D01* +X752726Y109298D01* +X752712Y109202D01* +X752695Y109107D01* +X752673Y109013D01* +X752648Y108920D01* +X752620Y108827D01* +X752587Y108736D01* +X752551Y108647D01* +X752511Y108559D01* +X752468Y108472D01* +X752422Y108387D01* +X752372Y108305D01* +X752318Y108224D01* +X752262Y108146D01* +X752202Y108070D01* +X752140Y107996D01* +X752074Y107925D01* +X752006Y107857D01* +X751935Y107791D01* +X751861Y107729D01* +X751785Y107669D01* +X751707Y107613D01* +X751626Y107559D01* +X751544Y107509D01* +X751459Y107463D01* +X751372Y107420D01* +X751284Y107380D01* +X751195Y107344D01* +X751104Y107311D01* +X751011Y107283D01* +X750918Y107258D01* +X750824Y107236D01* +X750729Y107219D01* +X750633Y107205D01* +X750537Y107196D01* +X750441Y107190D01* +X750344Y107188D01* +X750247Y107190D01* +X750151Y107196D01* +X750055Y107205D01* +X749959Y107219D01* +X749864Y107236D01* +X749770Y107258D01* +X749677Y107283D01* +X749584Y107311D01* +X749493Y107344D01* +X749404Y107380D01* +X749316Y107420D01* +X749229Y107463D01* +X749145Y107509D01* +X749062Y107559D01* +X748981Y107613D01* +X748903Y107669D01* +X748827Y107729D01* +X748753Y107791D01* +X748682Y107857D01* +X748614Y107925D01* +X748548Y107996D01* +X748486Y108070D01* +X748426Y108146D01* +X748370Y108224D01* +X748316Y108305D01* +X748266Y108388D01* +X748220Y108472D01* +X748177Y108559D01* +X748137Y108647D01* +X748101Y108736D01* +X748068Y108827D01* +X748040Y108920D01* +X748015Y109013D01* +X747993Y109107D01* +X747976Y109202D01* +X747962Y109298D01* +X747953Y109394D01* +X747947Y109490D01* +X747945Y109587D01* +X748425Y113905D02* +X748427Y113991D01* +X748433Y114077D01* +X748442Y114163D01* +X748456Y114248D01* +X748473Y114332D01* +X748494Y114416D01* +X748519Y114498D01* +X748547Y114579D01* +X748579Y114659D01* +X748615Y114738D01* +X748654Y114814D01* +X748697Y114889D01* +X748742Y114962D01* +X748791Y115033D01* +X748844Y115101D01* +X748899Y115168D01* +X748957Y115231D01* +X749018Y115292D01* +X749081Y115350D01* +X749148Y115405D01* +X749216Y115458D01* +X749287Y115507D01* +X749360Y115552D01* +X749435Y115595D01* +X749511Y115634D01* +X749590Y115670D01* +X749670Y115702D01* +X749751Y115730D01* +X749833Y115755D01* +X749917Y115776D01* +X750001Y115793D01* +X750086Y115807D01* +X750172Y115816D01* +X750258Y115822D01* +X750344Y115824D01* +X750430Y115822D01* +X750516Y115816D01* +X750602Y115807D01* +X750687Y115793D01* +X750771Y115776D01* +X750855Y115755D01* +X750937Y115730D01* +X751018Y115702D01* +X751098Y115670D01* +X751177Y115634D01* +X751253Y115595D01* +X751328Y115552D01* +X751401Y115507D01* +X751472Y115458D01* +X751540Y115405D01* +X751607Y115350D01* +X751670Y115292D01* +X751731Y115231D01* +X751789Y115168D01* +X751844Y115101D01* +X751897Y115033D01* +X751946Y114962D01* +X751991Y114889D01* +X752034Y114814D01* +X752073Y114738D01* +X752109Y114659D01* +X752141Y114579D01* +X752169Y114498D01* +X752194Y114416D01* +X752215Y114332D01* +X752232Y114248D01* +X752246Y114163D01* +X752255Y114077D01* +X752261Y113991D01* +X752263Y113905D01* +X752261Y113819D01* +X752255Y113733D01* +X752246Y113647D01* +X752232Y113562D01* +X752215Y113478D01* +X752194Y113394D01* +X752169Y113312D01* +X752141Y113231D01* +X752109Y113151D01* +X752073Y113072D01* +X752034Y112996D01* +X751991Y112921D01* +X751946Y112848D01* +X751897Y112777D01* +X751844Y112709D01* +X751789Y112642D01* +X751731Y112579D01* +X751670Y112518D01* +X751607Y112460D01* +X751540Y112405D01* +X751472Y112352D01* +X751401Y112303D01* +X751328Y112258D01* +X751253Y112215D01* +X751177Y112176D01* +X751098Y112140D01* +X751018Y112108D01* +X750937Y112080D01* +X750855Y112055D01* +X750771Y112034D01* +X750687Y112017D01* +X750602Y112003D01* +X750516Y111994D01* +X750430Y111988D01* +X750344Y111986D01* +X750258Y111988D01* +X750172Y111994D01* +X750086Y112003D01* +X750001Y112017D01* +X749917Y112034D01* +X749833Y112055D01* +X749751Y112080D01* +X749670Y112108D01* +X749590Y112140D01* +X749511Y112176D01* +X749435Y112215D01* +X749360Y112258D01* +X749287Y112303D01* +X749216Y112352D01* +X749148Y112405D01* +X749081Y112460D01* +X749018Y112518D01* +X748957Y112579D01* +X748899Y112642D01* +X748844Y112709D01* +X748791Y112777D01* +X748742Y112848D01* +X748697Y112921D01* +X748654Y112996D01* +X748615Y113072D01* +X748579Y113151D01* +X748547Y113231D01* +X748519Y113312D01* +X748494Y113394D01* +X748473Y113478D01* +X748456Y113562D01* +X748442Y113647D01* +X748433Y113733D01* +X748427Y113819D01* +X748425Y113905D01* +D18* +X444500Y259080D03* +D14* +X408196Y255778D02* +X406277Y255778D01* +X406191Y255780D01* +X406105Y255786D01* +X406019Y255795D01* +X405934Y255809D01* +X405850Y255826D01* +X405766Y255847D01* +X405684Y255872D01* +X405603Y255900D01* +X405523Y255932D01* +X405444Y255968D01* +X405368Y256007D01* +X405293Y256050D01* +X405220Y256095D01* +X405149Y256144D01* +X405081Y256197D01* +X405014Y256252D01* +X404951Y256310D01* +X404890Y256371D01* +X404832Y256434D01* +X404777Y256501D01* +X404724Y256569D01* +X404675Y256640D01* +X404630Y256713D01* +X404587Y256788D01* +X404548Y256864D01* +X404512Y256943D01* +X404480Y257023D01* +X404452Y257104D01* +X404427Y257186D01* +X404406Y257270D01* +X404389Y257354D01* +X404375Y257439D01* +X404366Y257525D01* +X404360Y257611D01* +X404358Y257697D01* +X404358Y262495D01* +X404360Y262581D01* +X404366Y262667D01* +X404375Y262753D01* +X404389Y262838D01* +X404406Y262922D01* +X404427Y263006D01* +X404452Y263088D01* +X404480Y263169D01* +X404512Y263249D01* +X404548Y263328D01* +X404587Y263404D01* +X404630Y263479D01* +X404675Y263552D01* +X404724Y263623D01* +X404777Y263691D01* +X404832Y263758D01* +X404890Y263821D01* +X404951Y263882D01* +X405014Y263940D01* +X405081Y263995D01* +X405149Y264047D01* +X405220Y264097D01* +X405293Y264142D01* +X405368Y264185D01* +X405444Y264224D01* +X405523Y264260D01* +X405603Y264292D01* +X405684Y264320D01* +X405766Y264345D01* +X405850Y264366D01* +X405934Y264383D01* +X406019Y264397D01* +X406105Y264406D01* +X406191Y264412D01* +X406277Y264414D01* +X408196Y264414D01* +X414655Y264414D02* +X414747Y264412D01* +X414838Y264406D01* +X414929Y264397D01* +X415020Y264383D01* +X415110Y264366D01* +X415199Y264344D01* +X415287Y264319D01* +X415374Y264291D01* +X415460Y264258D01* +X415544Y264222D01* +X415627Y264183D01* +X415708Y264140D01* +X415787Y264093D01* +X415864Y264044D01* +X415939Y263991D01* +X416011Y263935D01* +X416081Y263876D01* +X416149Y263814D01* +X416214Y263749D01* +X416276Y263681D01* +X416335Y263611D01* +X416391Y263539D01* +X416444Y263464D01* +X416493Y263387D01* +X416540Y263308D01* +X416583Y263227D01* +X416622Y263144D01* +X416658Y263060D01* +X416691Y262974D01* +X416719Y262887D01* +X416744Y262799D01* +X416766Y262710D01* +X416783Y262620D01* +X416797Y262529D01* +X416806Y262438D01* +X416812Y262347D01* +X416814Y262255D01* +X414655Y264414D02* +X414552Y264412D01* +X414450Y264406D01* +X414348Y264397D01* +X414246Y264384D01* +X414145Y264367D01* +X414044Y264346D01* +X413945Y264322D01* +X413846Y264293D01* +X413749Y264262D01* +X413652Y264226D01* +X413557Y264188D01* +X413464Y264145D01* +X413372Y264099D01* +X413282Y264050D01* +X413194Y263998D01* +X413107Y263942D01* +X413023Y263883D01* +X412942Y263822D01* +X412862Y263757D01* +X412785Y263689D01* +X412710Y263618D01* +X412639Y263545D01* +X412570Y263469D01* +X412503Y263391D01* +X412440Y263310D01* +X412380Y263227D01* +X412323Y263142D01* +X412269Y263055D01* +X412218Y262965D01* +X412171Y262874D01* +X412127Y262782D01* +X412086Y262687D01* +X412049Y262592D01* +X412016Y262495D01* +X416094Y260576D02* +X416161Y260642D01* +X416225Y260711D01* +X416286Y260782D01* +X416344Y260856D01* +X416399Y260932D01* +X416451Y261010D01* +X416500Y261090D01* +X416546Y261172D01* +X416588Y261256D01* +X416627Y261342D01* +X416662Y261429D01* +X416693Y261517D01* +X416721Y261607D01* +X416746Y261697D01* +X416767Y261789D01* +X416784Y261881D01* +X416797Y261974D01* +X416806Y262067D01* +X416812Y262161D01* +X416814Y262255D01* +X416094Y260576D02* +X412016Y255778D01* +X416814Y255778D01* +X421160Y255778D02* +X423559Y255778D01* +X423656Y255780D01* +X423752Y255786D01* +X423848Y255795D01* +X423944Y255809D01* +X424039Y255826D01* +X424133Y255848D01* +X424226Y255873D01* +X424319Y255901D01* +X424410Y255934D01* +X424499Y255970D01* +X424587Y256010D01* +X424674Y256053D01* +X424759Y256099D01* +X424841Y256149D01* +X424922Y256203D01* +X425000Y256259D01* +X425076Y256319D01* +X425150Y256381D01* +X425221Y256447D01* +X425289Y256515D01* +X425355Y256586D01* +X425417Y256660D01* +X425477Y256736D01* +X425533Y256814D01* +X425587Y256895D01* +X425637Y256978D01* +X425683Y257062D01* +X425726Y257149D01* +X425766Y257237D01* +X425802Y257326D01* +X425835Y257417D01* +X425863Y257510D01* +X425888Y257603D01* +X425910Y257697D01* +X425927Y257792D01* +X425941Y257888D01* +X425950Y257984D01* +X425956Y258080D01* +X425958Y258177D01* +X425956Y258274D01* +X425950Y258370D01* +X425941Y258466D01* +X425927Y258562D01* +X425910Y258657D01* +X425888Y258751D01* +X425863Y258844D01* +X425835Y258937D01* +X425802Y259028D01* +X425766Y259117D01* +X425726Y259205D01* +X425683Y259292D01* +X425637Y259376D01* +X425587Y259459D01* +X425533Y259540D01* +X425477Y259618D01* +X425417Y259694D01* +X425355Y259768D01* +X425289Y259839D01* +X425221Y259907D01* +X425150Y259973D01* +X425076Y260035D01* +X425000Y260095D01* +X424922Y260151D01* +X424841Y260205D01* +X424759Y260255D01* +X424674Y260301D01* +X424587Y260344D01* +X424499Y260384D01* +X424410Y260420D01* +X424319Y260453D01* +X424226Y260481D01* +X424133Y260506D01* +X424039Y260528D01* +X423944Y260545D01* +X423848Y260559D01* +X423752Y260568D01* +X423656Y260574D01* +X423559Y260576D01* +X424039Y264414D02* +X421160Y264414D01* +X424039Y264414D02* +X424125Y264412D01* +X424211Y264406D01* +X424297Y264397D01* +X424382Y264383D01* +X424466Y264366D01* +X424550Y264345D01* +X424632Y264320D01* +X424713Y264292D01* +X424793Y264260D01* +X424872Y264224D01* +X424948Y264185D01* +X425023Y264142D01* +X425096Y264097D01* +X425167Y264048D01* +X425235Y263995D01* +X425302Y263940D01* +X425365Y263882D01* +X425426Y263821D01* +X425484Y263758D01* +X425539Y263691D01* +X425592Y263623D01* +X425641Y263552D01* +X425686Y263479D01* +X425729Y263404D01* +X425768Y263328D01* +X425804Y263249D01* +X425836Y263169D01* +X425864Y263088D01* +X425889Y263006D01* +X425910Y262922D01* +X425927Y262838D01* +X425941Y262753D01* +X425950Y262667D01* +X425956Y262581D01* +X425958Y262495D01* +X425956Y262409D01* +X425950Y262323D01* +X425941Y262237D01* +X425927Y262152D01* +X425910Y262068D01* +X425889Y261984D01* +X425864Y261902D01* +X425836Y261821D01* +X425804Y261741D01* +X425768Y261662D01* +X425729Y261586D01* +X425686Y261511D01* +X425641Y261438D01* +X425592Y261367D01* +X425539Y261299D01* +X425484Y261232D01* +X425426Y261169D01* +X425365Y261108D01* +X425302Y261050D01* +X425235Y260995D01* +X425167Y260942D01* +X425096Y260893D01* +X425023Y260848D01* +X424948Y260805D01* +X424872Y260766D01* +X424793Y260730D01* +X424713Y260698D01* +X424632Y260670D01* +X424550Y260645D01* +X424466Y260624D01* +X424382Y260607D01* +X424297Y260593D01* +X424211Y260584D01* +X424125Y260578D01* +X424039Y260576D01* +X422120Y260576D01* +D18* +X444500Y228600D03* +D14* +X407942Y224282D02* +X406023Y224282D01* +X405937Y224284D01* +X405851Y224290D01* +X405765Y224299D01* +X405680Y224313D01* +X405596Y224330D01* +X405512Y224351D01* +X405430Y224376D01* +X405349Y224404D01* +X405269Y224436D01* +X405190Y224472D01* +X405114Y224511D01* +X405039Y224554D01* +X404966Y224599D01* +X404895Y224648D01* +X404827Y224701D01* +X404760Y224756D01* +X404697Y224814D01* +X404636Y224875D01* +X404578Y224938D01* +X404523Y225005D01* +X404470Y225073D01* +X404421Y225144D01* +X404376Y225217D01* +X404333Y225292D01* +X404294Y225368D01* +X404258Y225447D01* +X404226Y225527D01* +X404198Y225608D01* +X404173Y225690D01* +X404152Y225774D01* +X404135Y225858D01* +X404121Y225943D01* +X404112Y226029D01* +X404106Y226115D01* +X404104Y226201D01* +X404104Y230999D01* +X404106Y231085D01* +X404112Y231171D01* +X404121Y231257D01* +X404135Y231342D01* +X404152Y231426D01* +X404173Y231510D01* +X404198Y231592D01* +X404226Y231673D01* +X404258Y231753D01* +X404294Y231832D01* +X404333Y231908D01* +X404376Y231983D01* +X404421Y232056D01* +X404470Y232127D01* +X404523Y232195D01* +X404578Y232262D01* +X404636Y232325D01* +X404697Y232386D01* +X404760Y232444D01* +X404827Y232499D01* +X404895Y232551D01* +X404966Y232601D01* +X405039Y232646D01* +X405114Y232689D01* +X405190Y232728D01* +X405269Y232764D01* +X405349Y232796D01* +X405430Y232824D01* +X405512Y232849D01* +X405596Y232870D01* +X405680Y232887D01* +X405765Y232901D01* +X405851Y232910D01* +X405937Y232916D01* +X406023Y232918D01* +X407942Y232918D01* +X414401Y232918D02* +X414493Y232916D01* +X414584Y232910D01* +X414675Y232901D01* +X414766Y232887D01* +X414856Y232870D01* +X414945Y232848D01* +X415033Y232823D01* +X415120Y232795D01* +X415206Y232762D01* +X415290Y232726D01* +X415373Y232687D01* +X415454Y232644D01* +X415533Y232597D01* +X415610Y232548D01* +X415685Y232495D01* +X415757Y232439D01* +X415827Y232380D01* +X415895Y232318D01* +X415960Y232253D01* +X416022Y232185D01* +X416081Y232115D01* +X416137Y232043D01* +X416190Y231968D01* +X416239Y231891D01* +X416286Y231812D01* +X416329Y231731D01* +X416368Y231648D01* +X416404Y231564D01* +X416437Y231478D01* +X416465Y231391D01* +X416490Y231303D01* +X416512Y231214D01* +X416529Y231124D01* +X416543Y231033D01* +X416552Y230942D01* +X416558Y230851D01* +X416560Y230759D01* +X414401Y232918D02* +X414298Y232916D01* +X414196Y232910D01* +X414094Y232901D01* +X413992Y232888D01* +X413891Y232871D01* +X413790Y232850D01* +X413691Y232826D01* +X413592Y232797D01* +X413495Y232766D01* +X413398Y232730D01* +X413303Y232692D01* +X413210Y232649D01* +X413118Y232603D01* +X413028Y232554D01* +X412940Y232502D01* +X412853Y232446D01* +X412769Y232387D01* +X412688Y232326D01* +X412608Y232261D01* +X412531Y232193D01* +X412456Y232122D01* +X412385Y232049D01* +X412316Y231973D01* +X412249Y231895D01* +X412186Y231814D01* +X412126Y231731D01* +X412069Y231646D01* +X412015Y231559D01* +X411964Y231469D01* +X411917Y231378D01* +X411873Y231286D01* +X411832Y231191D01* +X411795Y231096D01* +X411762Y230999D01* +X415840Y229080D02* +X415907Y229146D01* +X415971Y229215D01* +X416032Y229286D01* +X416090Y229360D01* +X416145Y229436D01* +X416197Y229514D01* +X416246Y229594D01* +X416292Y229676D01* +X416334Y229760D01* +X416373Y229846D01* +X416408Y229933D01* +X416439Y230021D01* +X416467Y230111D01* +X416492Y230201D01* +X416513Y230293D01* +X416530Y230385D01* +X416543Y230478D01* +X416552Y230571D01* +X416558Y230665D01* +X416560Y230759D01* +X415840Y229080D02* +X411762Y224282D01* +X416560Y224282D01* +X420906Y229080D02* +X423785Y229080D01* +X423871Y229078D01* +X423957Y229072D01* +X424043Y229063D01* +X424128Y229049D01* +X424212Y229032D01* +X424296Y229011D01* +X424378Y228986D01* +X424459Y228958D01* +X424539Y228926D01* +X424618Y228890D01* +X424694Y228851D01* +X424769Y228808D01* +X424842Y228763D01* +X424913Y228714D01* +X424981Y228661D01* +X425048Y228606D01* +X425111Y228548D01* +X425172Y228487D01* +X425230Y228424D01* +X425285Y228357D01* +X425338Y228289D01* +X425387Y228218D01* +X425432Y228145D01* +X425475Y228070D01* +X425514Y227994D01* +X425550Y227915D01* +X425582Y227835D01* +X425610Y227754D01* +X425635Y227672D01* +X425656Y227588D01* +X425673Y227504D01* +X425687Y227419D01* +X425696Y227333D01* +X425702Y227247D01* +X425704Y227161D01* +X425704Y226681D01* +X425702Y226584D01* +X425696Y226488D01* +X425687Y226392D01* +X425673Y226296D01* +X425656Y226201D01* +X425634Y226107D01* +X425609Y226014D01* +X425581Y225921D01* +X425548Y225830D01* +X425512Y225741D01* +X425472Y225653D01* +X425429Y225566D01* +X425383Y225481D01* +X425333Y225399D01* +X425279Y225318D01* +X425223Y225240D01* +X425163Y225164D01* +X425101Y225090D01* +X425035Y225019D01* +X424967Y224951D01* +X424896Y224885D01* +X424822Y224823D01* +X424746Y224763D01* +X424668Y224707D01* +X424587Y224653D01* +X424505Y224603D01* +X424420Y224557D01* +X424333Y224514D01* +X424245Y224474D01* +X424156Y224438D01* +X424065Y224405D01* +X423972Y224377D01* +X423879Y224352D01* +X423785Y224330D01* +X423690Y224313D01* +X423594Y224299D01* +X423498Y224290D01* +X423402Y224284D01* +X423305Y224282D01* +X423208Y224284D01* +X423112Y224290D01* +X423016Y224299D01* +X422920Y224313D01* +X422825Y224330D01* +X422731Y224352D01* +X422638Y224377D01* +X422545Y224405D01* +X422454Y224438D01* +X422365Y224474D01* +X422277Y224514D01* +X422190Y224557D01* +X422106Y224603D01* +X422023Y224653D01* +X421942Y224707D01* +X421864Y224763D01* +X421788Y224823D01* +X421714Y224885D01* +X421643Y224951D01* +X421575Y225019D01* +X421509Y225090D01* +X421447Y225164D01* +X421387Y225240D01* +X421331Y225318D01* +X421277Y225399D01* +X421227Y225482D01* +X421181Y225566D01* +X421138Y225653D01* +X421098Y225741D01* +X421062Y225830D01* +X421029Y225921D01* +X421001Y226014D01* +X420976Y226107D01* +X420954Y226201D01* +X420937Y226296D01* +X420923Y226392D01* +X420914Y226488D01* +X420908Y226584D01* +X420906Y226681D01* +X420906Y229080D01* +X420907Y229080D02* +X420909Y229203D01* +X420915Y229326D01* +X420925Y229449D01* +X420939Y229571D01* +X420956Y229693D01* +X420978Y229814D01* +X421003Y229934D01* +X421033Y230054D01* +X421066Y230172D01* +X421103Y230289D01* +X421143Y230406D01* +X421187Y230520D01* +X421235Y230634D01* +X421287Y230745D01* +X421342Y230855D01* +X421401Y230963D01* +X421463Y231070D01* +X421528Y231174D01* +X421597Y231276D01* +X421669Y231376D01* +X421744Y231473D01* +X421823Y231568D01* +X421904Y231660D01* +X421988Y231750D01* +X422075Y231837D01* +X422165Y231921D01* +X422257Y232002D01* +X422352Y232081D01* +X422449Y232156D01* +X422549Y232228D01* +X422651Y232297D01* +X422755Y232362D01* +X422862Y232424D01* +X422970Y232483D01* +X423080Y232538D01* +X423191Y232590D01* +X423305Y232637D01* +X423419Y232682D01* +X423536Y232722D01* +X423653Y232759D01* +X423771Y232792D01* +X423891Y232822D01* +X424011Y232847D01* +X424132Y232869D01* +X424254Y232886D01* +X424376Y232900D01* +X424499Y232910D01* +X424622Y232916D01* +X424745Y232918D01* +D13* +X1033780Y170180D03* +D14* +X1025906Y160782D02* +X1017270Y160782D01* +X1017270Y163181D01* +X1017272Y163278D01* +X1017278Y163374D01* +X1017287Y163470D01* +X1017301Y163566D01* +X1017318Y163661D01* +X1017340Y163755D01* +X1017365Y163848D01* +X1017393Y163941D01* +X1017426Y164032D01* +X1017462Y164121D01* +X1017502Y164209D01* +X1017545Y164296D01* +X1017591Y164381D01* +X1017641Y164463D01* +X1017695Y164544D01* +X1017751Y164622D01* +X1017811Y164698D01* +X1017873Y164772D01* +X1017939Y164843D01* +X1018007Y164911D01* +X1018078Y164977D01* +X1018152Y165039D01* +X1018228Y165099D01* +X1018306Y165155D01* +X1018387Y165209D01* +X1018470Y165259D01* +X1018554Y165305D01* +X1018641Y165348D01* +X1018729Y165388D01* +X1018818Y165424D01* +X1018909Y165457D01* +X1019002Y165485D01* +X1019095Y165510D01* +X1019189Y165532D01* +X1019284Y165549D01* +X1019380Y165563D01* +X1019476Y165572D01* +X1019572Y165578D01* +X1019669Y165580D01* +X1019766Y165578D01* +X1019862Y165572D01* +X1019958Y165563D01* +X1020054Y165549D01* +X1020149Y165532D01* +X1020243Y165510D01* +X1020336Y165485D01* +X1020429Y165457D01* +X1020520Y165424D01* +X1020609Y165388D01* +X1020697Y165348D01* +X1020784Y165305D01* +X1020869Y165259D01* +X1020951Y165209D01* +X1021032Y165155D01* +X1021110Y165099D01* +X1021186Y165039D01* +X1021260Y164977D01* +X1021331Y164911D01* +X1021399Y164843D01* +X1021465Y164772D01* +X1021527Y164698D01* +X1021587Y164622D01* +X1021643Y164544D01* +X1021697Y164463D01* +X1021747Y164381D01* +X1021793Y164296D01* +X1021836Y164209D01* +X1021876Y164121D01* +X1021912Y164032D01* +X1021945Y163941D01* +X1021973Y163848D01* +X1021998Y163755D01* +X1022020Y163661D01* +X1022037Y163566D01* +X1022051Y163470D01* +X1022060Y163374D01* +X1022066Y163278D01* +X1022068Y163181D01* +X1022068Y160782D01* +X1022068Y163661D02* +X1025906Y165580D01* +X1025906Y169841D02* +X1025906Y172720D01* +X1025904Y172806D01* +X1025898Y172892D01* +X1025889Y172978D01* +X1025875Y173063D01* +X1025858Y173147D01* +X1025837Y173231D01* +X1025812Y173313D01* +X1025784Y173394D01* +X1025752Y173474D01* +X1025716Y173553D01* +X1025677Y173629D01* +X1025634Y173704D01* +X1025589Y173777D01* +X1025540Y173848D01* +X1025487Y173916D01* +X1025432Y173983D01* +X1025374Y174046D01* +X1025313Y174107D01* +X1025250Y174165D01* +X1025183Y174220D01* +X1025115Y174273D01* +X1025044Y174322D01* +X1024971Y174367D01* +X1024896Y174410D01* +X1024820Y174449D01* +X1024741Y174485D01* +X1024661Y174517D01* +X1024580Y174545D01* +X1024498Y174570D01* +X1024414Y174591D01* +X1024330Y174608D01* +X1024245Y174622D01* +X1024159Y174631D01* +X1024073Y174637D01* +X1023987Y174639D01* +X1023027Y174639D01* +X1022941Y174637D01* +X1022855Y174631D01* +X1022769Y174622D01* +X1022684Y174608D01* +X1022600Y174591D01* +X1022516Y174570D01* +X1022434Y174545D01* +X1022353Y174517D01* +X1022273Y174485D01* +X1022194Y174449D01* +X1022118Y174410D01* +X1022043Y174367D01* +X1021970Y174322D01* +X1021899Y174273D01* +X1021831Y174220D01* +X1021764Y174165D01* +X1021701Y174107D01* +X1021640Y174046D01* +X1021582Y173983D01* +X1021527Y173916D01* +X1021475Y173848D01* +X1021425Y173777D01* +X1021380Y173704D01* +X1021337Y173629D01* +X1021298Y173553D01* +X1021262Y173474D01* +X1021230Y173394D01* +X1021202Y173313D01* +X1021177Y173231D01* +X1021156Y173147D01* +X1021139Y173063D01* +X1021125Y172978D01* +X1021116Y172892D01* +X1021110Y172806D01* +X1021108Y172720D01* +X1021108Y169841D01* +X1017270Y169841D01* +X1017270Y174639D01* +D13* +X462280Y213360D03* +D14* +X456946Y202974D02* +X456946Y201055D01* +X456944Y200969D01* +X456938Y200883D01* +X456929Y200797D01* +X456915Y200712D01* +X456898Y200628D01* +X456877Y200544D01* +X456852Y200462D01* +X456824Y200381D01* +X456792Y200301D01* +X456756Y200222D01* +X456717Y200146D01* +X456674Y200071D01* +X456629Y199998D01* +X456580Y199927D01* +X456527Y199859D01* +X456472Y199792D01* +X456414Y199729D01* +X456353Y199668D01* +X456290Y199610D01* +X456223Y199555D01* +X456155Y199503D01* +X456084Y199453D01* +X456011Y199408D01* +X455936Y199365D01* +X455860Y199326D01* +X455781Y199290D01* +X455701Y199258D01* +X455620Y199230D01* +X455538Y199205D01* +X455454Y199184D01* +X455370Y199167D01* +X455285Y199153D01* +X455199Y199144D01* +X455113Y199138D01* +X455027Y199136D01* +X450229Y199136D01* +X450143Y199138D01* +X450057Y199144D01* +X449971Y199153D01* +X449886Y199167D01* +X449802Y199184D01* +X449718Y199205D01* +X449636Y199230D01* +X449555Y199258D01* +X449475Y199290D01* +X449396Y199326D01* +X449320Y199365D01* +X449245Y199408D01* +X449172Y199453D01* +X449101Y199502D01* +X449033Y199555D01* +X448966Y199610D01* +X448903Y199668D01* +X448842Y199729D01* +X448784Y199792D01* +X448729Y199859D01* +X448677Y199927D01* +X448627Y199998D01* +X448582Y200071D01* +X448539Y200146D01* +X448500Y200222D01* +X448464Y200301D01* +X448432Y200381D01* +X448404Y200462D01* +X448379Y200544D01* +X448358Y200628D01* +X448341Y200712D01* +X448327Y200797D01* +X448318Y200883D01* +X448312Y200969D01* +X448310Y201055D01* +X448310Y202974D01* +X448310Y209433D02* +X448312Y209525D01* +X448318Y209616D01* +X448327Y209707D01* +X448341Y209798D01* +X448358Y209888D01* +X448380Y209977D01* +X448405Y210065D01* +X448433Y210152D01* +X448466Y210238D01* +X448502Y210322D01* +X448541Y210405D01* +X448584Y210486D01* +X448631Y210565D01* +X448680Y210642D01* +X448733Y210717D01* +X448789Y210789D01* +X448848Y210859D01* +X448910Y210927D01* +X448975Y210992D01* +X449043Y211054D01* +X449113Y211113D01* +X449185Y211169D01* +X449260Y211222D01* +X449337Y211271D01* +X449416Y211318D01* +X449497Y211361D01* +X449580Y211400D01* +X449664Y211436D01* +X449750Y211469D01* +X449837Y211497D01* +X449925Y211522D01* +X450014Y211544D01* +X450104Y211561D01* +X450195Y211575D01* +X450286Y211584D01* +X450377Y211590D01* +X450469Y211592D01* +X448310Y209433D02* +X448312Y209330D01* +X448318Y209228D01* +X448327Y209126D01* +X448340Y209024D01* +X448357Y208923D01* +X448378Y208822D01* +X448402Y208723D01* +X448431Y208624D01* +X448462Y208527D01* +X448498Y208430D01* +X448536Y208335D01* +X448579Y208242D01* +X448625Y208150D01* +X448674Y208060D01* +X448726Y207972D01* +X448782Y207885D01* +X448841Y207801D01* +X448902Y207720D01* +X448967Y207640D01* +X449035Y207563D01* +X449106Y207488D01* +X449179Y207417D01* +X449255Y207348D01* +X449333Y207281D01* +X449414Y207218D01* +X449497Y207158D01* +X449582Y207101D01* +X449669Y207047D01* +X449759Y206996D01* +X449850Y206949D01* +X449942Y206905D01* +X450037Y206864D01* +X450132Y206827D01* +X450229Y206794D01* +X452148Y210872D02* +X452082Y210939D01* +X452013Y211003D01* +X451942Y211064D01* +X451868Y211122D01* +X451792Y211177D01* +X451714Y211229D01* +X451634Y211278D01* +X451552Y211324D01* +X451468Y211366D01* +X451382Y211405D01* +X451295Y211440D01* +X451207Y211471D01* +X451117Y211499D01* +X451027Y211524D01* +X450935Y211545D01* +X450843Y211562D01* +X450750Y211575D01* +X450657Y211584D01* +X450563Y211590D01* +X450469Y211592D01* +X452148Y210872D02* +X456946Y206794D01* +X456946Y211592D01* +X449270Y215938D02* +X448310Y215938D01* +X448310Y220736D01* +X456946Y218337D01* +D13* +X472440Y152400D03* +D14* +X476504Y123970D02* +X476504Y122051D01* +X476502Y121965D01* +X476496Y121879D01* +X476487Y121793D01* +X476473Y121708D01* +X476456Y121624D01* +X476435Y121540D01* +X476410Y121458D01* +X476382Y121377D01* +X476350Y121297D01* +X476314Y121218D01* +X476275Y121142D01* +X476232Y121067D01* +X476187Y120994D01* +X476138Y120923D01* +X476085Y120855D01* +X476030Y120788D01* +X475972Y120725D01* +X475911Y120664D01* +X475848Y120606D01* +X475781Y120551D01* +X475713Y120499D01* +X475642Y120449D01* +X475569Y120404D01* +X475494Y120361D01* +X475418Y120322D01* +X475339Y120286D01* +X475259Y120254D01* +X475178Y120226D01* +X475096Y120201D01* +X475012Y120180D01* +X474928Y120163D01* +X474843Y120149D01* +X474757Y120140D01* +X474671Y120134D01* +X474585Y120132D01* +X469787Y120132D01* +X469701Y120134D01* +X469615Y120140D01* +X469529Y120149D01* +X469444Y120163D01* +X469360Y120180D01* +X469276Y120201D01* +X469194Y120226D01* +X469113Y120254D01* +X469033Y120286D01* +X468954Y120322D01* +X468878Y120361D01* +X468803Y120404D01* +X468730Y120449D01* +X468659Y120498D01* +X468591Y120551D01* +X468524Y120606D01* +X468461Y120664D01* +X468400Y120725D01* +X468342Y120788D01* +X468287Y120855D01* +X468235Y120923D01* +X468185Y120994D01* +X468140Y121067D01* +X468097Y121142D01* +X468058Y121218D01* +X468022Y121297D01* +X467990Y121377D01* +X467962Y121458D01* +X467937Y121540D01* +X467916Y121624D01* +X467899Y121708D01* +X467885Y121793D01* +X467876Y121879D01* +X467870Y121965D01* +X467868Y122051D01* +X467868Y123970D01* +X467868Y130429D02* +X467870Y130521D01* +X467876Y130612D01* +X467885Y130703D01* +X467899Y130794D01* +X467916Y130884D01* +X467938Y130973D01* +X467963Y131061D01* +X467991Y131148D01* +X468024Y131234D01* +X468060Y131318D01* +X468099Y131401D01* +X468142Y131482D01* +X468189Y131561D01* +X468238Y131638D01* +X468291Y131713D01* +X468347Y131785D01* +X468406Y131855D01* +X468468Y131923D01* +X468533Y131988D01* +X468601Y132050D01* +X468671Y132109D01* +X468743Y132165D01* +X468818Y132218D01* +X468895Y132267D01* +X468974Y132314D01* +X469055Y132357D01* +X469138Y132396D01* +X469222Y132432D01* +X469308Y132465D01* +X469395Y132493D01* +X469483Y132518D01* +X469572Y132540D01* +X469662Y132557D01* +X469753Y132571D01* +X469844Y132580D01* +X469935Y132586D01* +X470027Y132588D01* +X467868Y130429D02* +X467870Y130326D01* +X467876Y130224D01* +X467885Y130122D01* +X467898Y130020D01* +X467915Y129919D01* +X467936Y129818D01* +X467960Y129719D01* +X467989Y129620D01* +X468020Y129523D01* +X468056Y129426D01* +X468094Y129331D01* +X468137Y129238D01* +X468183Y129146D01* +X468232Y129056D01* +X468284Y128968D01* +X468340Y128881D01* +X468399Y128797D01* +X468460Y128716D01* +X468525Y128636D01* +X468593Y128559D01* +X468664Y128484D01* +X468737Y128413D01* +X468813Y128344D01* +X468891Y128277D01* +X468972Y128214D01* +X469055Y128154D01* +X469140Y128097D01* +X469227Y128043D01* +X469317Y127992D01* +X469408Y127945D01* +X469500Y127901D01* +X469595Y127860D01* +X469690Y127823D01* +X469787Y127790D01* +X471706Y131868D02* +X471640Y131935D01* +X471571Y131999D01* +X471500Y132060D01* +X471426Y132118D01* +X471350Y132173D01* +X471272Y132225D01* +X471192Y132274D01* +X471110Y132320D01* +X471026Y132362D01* +X470940Y132401D01* +X470853Y132436D01* +X470765Y132467D01* +X470675Y132495D01* +X470585Y132520D01* +X470493Y132541D01* +X470401Y132558D01* +X470308Y132571D01* +X470215Y132580D01* +X470121Y132586D01* +X470027Y132588D01* +X471706Y131868D02* +X476504Y127790D01* +X476504Y132588D01* +X474105Y136934D02* +X474008Y136936D01* +X473912Y136942D01* +X473816Y136951D01* +X473720Y136965D01* +X473625Y136982D01* +X473531Y137004D01* +X473438Y137029D01* +X473345Y137057D01* +X473254Y137090D01* +X473165Y137126D01* +X473077Y137166D01* +X472990Y137209D01* +X472906Y137255D01* +X472823Y137305D01* +X472742Y137359D01* +X472664Y137415D01* +X472588Y137475D01* +X472514Y137537D01* +X472443Y137603D01* +X472375Y137671D01* +X472309Y137742D01* +X472247Y137816D01* +X472187Y137892D01* +X472131Y137970D01* +X472077Y138051D01* +X472027Y138134D01* +X471981Y138218D01* +X471938Y138305D01* +X471898Y138393D01* +X471862Y138482D01* +X471829Y138573D01* +X471801Y138666D01* +X471776Y138759D01* +X471754Y138853D01* +X471737Y138948D01* +X471723Y139044D01* +X471714Y139140D01* +X471708Y139236D01* +X471706Y139333D01* +X471708Y139430D01* +X471714Y139526D01* +X471723Y139622D01* +X471737Y139718D01* +X471754Y139813D01* +X471776Y139907D01* +X471801Y140000D01* +X471829Y140093D01* +X471862Y140184D01* +X471898Y140273D01* +X471938Y140361D01* +X471981Y140448D01* +X472027Y140533D01* +X472077Y140615D01* +X472131Y140696D01* +X472187Y140774D01* +X472247Y140850D01* +X472309Y140924D01* +X472375Y140995D01* +X472443Y141063D01* +X472514Y141129D01* +X472588Y141191D01* +X472664Y141251D01* +X472742Y141307D01* +X472823Y141361D01* +X472906Y141411D01* +X472990Y141457D01* +X473077Y141500D01* +X473165Y141540D01* +X473254Y141576D01* +X473345Y141609D01* +X473438Y141637D01* +X473531Y141662D01* +X473625Y141684D01* +X473720Y141701D01* +X473816Y141715D01* +X473912Y141724D01* +X474008Y141730D01* +X474105Y141732D01* +X474202Y141730D01* +X474298Y141724D01* +X474394Y141715D01* +X474490Y141701D01* +X474585Y141684D01* +X474679Y141662D01* +X474772Y141637D01* +X474865Y141609D01* +X474956Y141576D01* +X475045Y141540D01* +X475133Y141500D01* +X475220Y141457D01* +X475305Y141411D01* +X475387Y141361D01* +X475468Y141307D01* +X475546Y141251D01* +X475622Y141191D01* +X475696Y141129D01* +X475767Y141063D01* +X475835Y140995D01* +X475901Y140924D01* +X475963Y140850D01* +X476023Y140774D01* +X476079Y140696D01* +X476133Y140615D01* +X476183Y140532D01* +X476229Y140448D01* +X476272Y140361D01* +X476312Y140273D01* +X476348Y140184D01* +X476381Y140093D01* +X476409Y140000D01* +X476434Y139907D01* +X476456Y139813D01* +X476473Y139718D01* +X476487Y139622D01* +X476496Y139526D01* +X476502Y139430D01* +X476504Y139333D01* +X476502Y139236D01* +X476496Y139140D01* +X476487Y139044D01* +X476473Y138948D01* +X476456Y138853D01* +X476434Y138759D01* +X476409Y138666D01* +X476381Y138573D01* +X476348Y138482D01* +X476312Y138393D01* +X476272Y138305D01* +X476229Y138218D01* +X476183Y138134D01* +X476133Y138051D01* +X476079Y137970D01* +X476023Y137892D01* +X475963Y137816D01* +X475901Y137742D01* +X475835Y137671D01* +X475767Y137603D01* +X475696Y137537D01* +X475622Y137475D01* +X475546Y137415D01* +X475468Y137359D01* +X475387Y137305D01* +X475305Y137255D01* +X475220Y137209D01* +X475133Y137166D01* +X475045Y137126D01* +X474956Y137090D01* +X474865Y137057D01* +X474772Y137029D01* +X474679Y137004D01* +X474585Y136982D01* +X474490Y136965D01* +X474394Y136951D01* +X474298Y136942D01* +X474202Y136936D01* +X474105Y136934D01* +X469787Y137414D02* +X469701Y137416D01* +X469615Y137422D01* +X469529Y137431D01* +X469444Y137445D01* +X469360Y137462D01* +X469276Y137483D01* +X469194Y137508D01* +X469113Y137536D01* +X469033Y137568D01* +X468954Y137604D01* +X468878Y137643D01* +X468803Y137686D01* +X468730Y137731D01* +X468659Y137780D01* +X468591Y137833D01* +X468524Y137888D01* +X468461Y137946D01* +X468400Y138007D01* +X468342Y138070D01* +X468287Y138137D01* +X468234Y138205D01* +X468185Y138276D01* +X468140Y138349D01* +X468097Y138424D01* +X468058Y138500D01* +X468022Y138579D01* +X467990Y138659D01* +X467962Y138740D01* +X467937Y138822D01* +X467916Y138906D01* +X467899Y138990D01* +X467885Y139075D01* +X467876Y139161D01* +X467870Y139247D01* +X467868Y139333D01* +X467870Y139419D01* +X467876Y139505D01* +X467885Y139591D01* +X467899Y139676D01* +X467916Y139760D01* +X467937Y139844D01* +X467962Y139926D01* +X467990Y140007D01* +X468022Y140087D01* +X468058Y140166D01* +X468097Y140242D01* +X468140Y140317D01* +X468185Y140390D01* +X468234Y140461D01* +X468287Y140529D01* +X468342Y140596D01* +X468400Y140659D01* +X468461Y140720D01* +X468524Y140778D01* +X468591Y140833D01* +X468659Y140886D01* +X468730Y140935D01* +X468803Y140980D01* +X468878Y141023D01* +X468954Y141062D01* +X469033Y141098D01* +X469113Y141130D01* +X469194Y141158D01* +X469276Y141183D01* +X469360Y141204D01* +X469444Y141221D01* +X469529Y141235D01* +X469615Y141244D01* +X469701Y141250D01* +X469787Y141252D01* +X469873Y141250D01* +X469959Y141244D01* +X470045Y141235D01* +X470130Y141221D01* +X470214Y141204D01* +X470298Y141183D01* +X470380Y141158D01* +X470461Y141130D01* +X470541Y141098D01* +X470620Y141062D01* +X470696Y141023D01* +X470771Y140980D01* +X470844Y140935D01* +X470915Y140886D01* +X470983Y140833D01* +X471050Y140778D01* +X471113Y140720D01* +X471174Y140659D01* +X471232Y140596D01* +X471287Y140529D01* +X471340Y140461D01* +X471389Y140390D01* +X471434Y140317D01* +X471477Y140242D01* +X471516Y140166D01* +X471552Y140087D01* +X471584Y140007D01* +X471612Y139926D01* +X471637Y139844D01* +X471658Y139760D01* +X471675Y139676D01* +X471689Y139591D01* +X471698Y139505D01* +X471704Y139419D01* +X471706Y139333D01* +X471704Y139247D01* +X471698Y139161D01* +X471689Y139075D01* +X471675Y138990D01* +X471658Y138906D01* +X471637Y138822D01* +X471612Y138740D01* +X471584Y138659D01* +X471552Y138579D01* +X471516Y138500D01* +X471477Y138424D01* +X471434Y138349D01* +X471389Y138276D01* +X471340Y138205D01* +X471287Y138137D01* +X471232Y138070D01* +X471174Y138007D01* +X471113Y137946D01* +X471050Y137888D01* +X470983Y137833D01* +X470915Y137780D01* +X470844Y137731D01* +X470771Y137686D01* +X470696Y137643D01* +X470620Y137604D01* +X470541Y137568D01* +X470461Y137536D01* +X470380Y137508D01* +X470298Y137483D01* +X470214Y137462D01* +X470130Y137445D01* +X470045Y137431D01* +X469959Y137422D01* +X469873Y137416D01* +X469787Y137414D01* +D18* +X520700Y134620D03* +D14* +X511066Y116332D02* +X509147Y116332D01* +X509061Y116334D01* +X508975Y116340D01* +X508889Y116349D01* +X508804Y116363D01* +X508720Y116380D01* +X508636Y116401D01* +X508554Y116426D01* +X508473Y116454D01* +X508393Y116486D01* +X508314Y116522D01* +X508238Y116561D01* +X508163Y116604D01* +X508090Y116649D01* +X508019Y116698D01* +X507951Y116751D01* +X507884Y116806D01* +X507821Y116864D01* +X507760Y116925D01* +X507702Y116988D01* +X507647Y117055D01* +X507594Y117123D01* +X507545Y117194D01* +X507500Y117267D01* +X507457Y117342D01* +X507418Y117418D01* +X507382Y117497D01* +X507350Y117577D01* +X507322Y117658D01* +X507297Y117740D01* +X507276Y117824D01* +X507259Y117908D01* +X507245Y117993D01* +X507236Y118079D01* +X507230Y118165D01* +X507228Y118251D01* +X507228Y123049D01* +X507230Y123135D01* +X507236Y123221D01* +X507245Y123307D01* +X507259Y123392D01* +X507276Y123476D01* +X507297Y123560D01* +X507322Y123642D01* +X507350Y123723D01* +X507382Y123803D01* +X507418Y123882D01* +X507457Y123958D01* +X507500Y124033D01* +X507545Y124106D01* +X507594Y124177D01* +X507647Y124245D01* +X507702Y124312D01* +X507760Y124375D01* +X507821Y124436D01* +X507884Y124494D01* +X507951Y124549D01* +X508019Y124601D01* +X508090Y124651D01* +X508163Y124696D01* +X508238Y124739D01* +X508314Y124778D01* +X508393Y124814D01* +X508473Y124846D01* +X508554Y124874D01* +X508636Y124899D01* +X508720Y124920D01* +X508804Y124937D01* +X508889Y124951D01* +X508975Y124960D01* +X509061Y124966D01* +X509147Y124968D01* +X511066Y124968D01* +X517525Y124968D02* +X517617Y124966D01* +X517708Y124960D01* +X517799Y124951D01* +X517890Y124937D01* +X517980Y124920D01* +X518069Y124898D01* +X518157Y124873D01* +X518244Y124845D01* +X518330Y124812D01* +X518414Y124776D01* +X518497Y124737D01* +X518578Y124694D01* +X518657Y124647D01* +X518734Y124598D01* +X518809Y124545D01* +X518881Y124489D01* +X518951Y124430D01* +X519019Y124368D01* +X519084Y124303D01* +X519146Y124235D01* +X519205Y124165D01* +X519261Y124093D01* +X519314Y124018D01* +X519363Y123941D01* +X519410Y123862D01* +X519453Y123781D01* +X519492Y123698D01* +X519528Y123614D01* +X519561Y123528D01* +X519589Y123441D01* +X519614Y123353D01* +X519636Y123264D01* +X519653Y123174D01* +X519667Y123083D01* +X519676Y122992D01* +X519682Y122901D01* +X519684Y122809D01* +X517525Y124968D02* +X517422Y124966D01* +X517320Y124960D01* +X517218Y124951D01* +X517116Y124938D01* +X517015Y124921D01* +X516914Y124900D01* +X516815Y124876D01* +X516716Y124847D01* +X516619Y124816D01* +X516522Y124780D01* +X516427Y124742D01* +X516334Y124699D01* +X516242Y124653D01* +X516152Y124604D01* +X516064Y124552D01* +X515977Y124496D01* +X515893Y124437D01* +X515812Y124376D01* +X515732Y124311D01* +X515655Y124243D01* +X515580Y124172D01* +X515509Y124099D01* +X515440Y124023D01* +X515373Y123945D01* +X515310Y123864D01* +X515250Y123781D01* +X515193Y123696D01* +X515139Y123609D01* +X515088Y123519D01* +X515041Y123428D01* +X514997Y123336D01* +X514956Y123241D01* +X514919Y123146D01* +X514886Y123049D01* +X518964Y121130D02* +X519031Y121196D01* +X519095Y121265D01* +X519156Y121336D01* +X519214Y121410D01* +X519269Y121486D01* +X519321Y121564D01* +X519370Y121644D01* +X519416Y121726D01* +X519458Y121810D01* +X519497Y121896D01* +X519532Y121983D01* +X519563Y122071D01* +X519591Y122161D01* +X519616Y122251D01* +X519637Y122343D01* +X519654Y122435D01* +X519667Y122528D01* +X519676Y122621D01* +X519682Y122715D01* +X519684Y122809D01* +X518964Y121130D02* +X514886Y116332D01* +X519684Y116332D01* +X526669Y124968D02* +X526761Y124966D01* +X526852Y124960D01* +X526943Y124951D01* +X527034Y124937D01* +X527124Y124920D01* +X527213Y124898D01* +X527301Y124873D01* +X527388Y124845D01* +X527474Y124812D01* +X527558Y124776D01* +X527641Y124737D01* +X527722Y124694D01* +X527801Y124647D01* +X527878Y124598D01* +X527953Y124545D01* +X528025Y124489D01* +X528095Y124430D01* +X528163Y124368D01* +X528228Y124303D01* +X528290Y124235D01* +X528349Y124165D01* +X528405Y124093D01* +X528458Y124018D01* +X528507Y123941D01* +X528554Y123862D01* +X528597Y123781D01* +X528636Y123698D01* +X528672Y123614D01* +X528705Y123528D01* +X528733Y123441D01* +X528758Y123353D01* +X528780Y123264D01* +X528797Y123174D01* +X528811Y123083D01* +X528820Y122992D01* +X528826Y122901D01* +X528828Y122809D01* +X526669Y124968D02* +X526566Y124966D01* +X526464Y124960D01* +X526362Y124951D01* +X526260Y124938D01* +X526159Y124921D01* +X526058Y124900D01* +X525959Y124876D01* +X525860Y124847D01* +X525763Y124816D01* +X525666Y124780D01* +X525571Y124742D01* +X525478Y124699D01* +X525386Y124653D01* +X525296Y124604D01* +X525208Y124552D01* +X525121Y124496D01* +X525037Y124437D01* +X524956Y124376D01* +X524876Y124311D01* +X524799Y124243D01* +X524724Y124172D01* +X524653Y124099D01* +X524584Y124023D01* +X524517Y123945D01* +X524454Y123864D01* +X524394Y123781D01* +X524337Y123696D01* +X524283Y123609D01* +X524232Y123519D01* +X524185Y123428D01* +X524141Y123336D01* +X524100Y123241D01* +X524063Y123146D01* +X524030Y123049D01* +X528108Y121130D02* +X528175Y121196D01* +X528239Y121265D01* +X528300Y121336D01* +X528358Y121410D01* +X528413Y121486D01* +X528465Y121564D01* +X528514Y121644D01* +X528560Y121726D01* +X528602Y121810D01* +X528641Y121896D01* +X528676Y121983D01* +X528707Y122071D01* +X528735Y122161D01* +X528760Y122251D01* +X528781Y122343D01* +X528798Y122435D01* +X528811Y122528D01* +X528820Y122621D01* +X528826Y122715D01* +X528828Y122809D01* +X528108Y121130D02* +X524030Y116332D01* +X528828Y116332D01* +D15* +X1021080Y294640D03* +D14* +X1020572Y315355D02* +X1020572Y317274D01* +X1020572Y315355D02* +X1020570Y315269D01* +X1020564Y315183D01* +X1020555Y315097D01* +X1020541Y315012D01* +X1020524Y314928D01* +X1020503Y314844D01* +X1020478Y314762D01* +X1020450Y314681D01* +X1020418Y314601D01* +X1020382Y314522D01* +X1020343Y314446D01* +X1020300Y314371D01* +X1020255Y314298D01* +X1020206Y314227D01* +X1020153Y314159D01* +X1020098Y314092D01* +X1020040Y314029D01* +X1019979Y313968D01* +X1019916Y313910D01* +X1019849Y313855D01* +X1019781Y313803D01* +X1019710Y313753D01* +X1019637Y313708D01* +X1019562Y313665D01* +X1019486Y313626D01* +X1019407Y313590D01* +X1019327Y313558D01* +X1019246Y313530D01* +X1019164Y313505D01* +X1019080Y313484D01* +X1018996Y313467D01* +X1018911Y313453D01* +X1018825Y313444D01* +X1018739Y313438D01* +X1018653Y313436D01* +X1013855Y313436D01* +X1013769Y313438D01* +X1013683Y313444D01* +X1013597Y313453D01* +X1013512Y313467D01* +X1013428Y313484D01* +X1013344Y313505D01* +X1013262Y313530D01* +X1013181Y313558D01* +X1013101Y313590D01* +X1013022Y313626D01* +X1012946Y313665D01* +X1012871Y313708D01* +X1012798Y313753D01* +X1012727Y313802D01* +X1012659Y313855D01* +X1012592Y313910D01* +X1012529Y313968D01* +X1012468Y314029D01* +X1012410Y314092D01* +X1012355Y314159D01* +X1012303Y314227D01* +X1012253Y314298D01* +X1012208Y314371D01* +X1012165Y314446D01* +X1012126Y314522D01* +X1012090Y314601D01* +X1012058Y314681D01* +X1012030Y314762D01* +X1012005Y314844D01* +X1011984Y314928D01* +X1011967Y315012D01* +X1011953Y315097D01* +X1011944Y315183D01* +X1011938Y315269D01* +X1011936Y315355D01* +X1011936Y317274D01* +X1011936Y323013D02* +X1018653Y321094D01* +X1018653Y325892D01* +X1016734Y324453D02* +X1020572Y324453D01* +D13* +X1033780Y297180D03* +D14* +X1036828Y315355D02* +X1036828Y317274D01* +X1036828Y315355D02* +X1036826Y315269D01* +X1036820Y315183D01* +X1036811Y315097D01* +X1036797Y315012D01* +X1036780Y314928D01* +X1036759Y314844D01* +X1036734Y314762D01* +X1036706Y314681D01* +X1036674Y314601D01* +X1036638Y314522D01* +X1036599Y314446D01* +X1036556Y314371D01* +X1036511Y314298D01* +X1036462Y314227D01* +X1036409Y314159D01* +X1036354Y314092D01* +X1036296Y314029D01* +X1036235Y313968D01* +X1036172Y313910D01* +X1036105Y313855D01* +X1036037Y313803D01* +X1035966Y313753D01* +X1035893Y313708D01* +X1035818Y313665D01* +X1035742Y313626D01* +X1035663Y313590D01* +X1035583Y313558D01* +X1035502Y313530D01* +X1035420Y313505D01* +X1035336Y313484D01* +X1035252Y313467D01* +X1035167Y313453D01* +X1035081Y313444D01* +X1034995Y313438D01* +X1034909Y313436D01* +X1030111Y313436D01* +X1030025Y313438D01* +X1029939Y313444D01* +X1029853Y313453D01* +X1029768Y313467D01* +X1029684Y313484D01* +X1029600Y313505D01* +X1029518Y313530D01* +X1029437Y313558D01* +X1029357Y313590D01* +X1029278Y313626D01* +X1029202Y313665D01* +X1029127Y313708D01* +X1029054Y313753D01* +X1028983Y313802D01* +X1028915Y313855D01* +X1028848Y313910D01* +X1028785Y313968D01* +X1028724Y314029D01* +X1028666Y314092D01* +X1028611Y314159D01* +X1028559Y314227D01* +X1028509Y314298D01* +X1028464Y314371D01* +X1028421Y314446D01* +X1028382Y314522D01* +X1028346Y314601D01* +X1028314Y314681D01* +X1028286Y314762D01* +X1028261Y314844D01* +X1028240Y314928D01* +X1028223Y315012D01* +X1028209Y315097D01* +X1028200Y315183D01* +X1028194Y315269D01* +X1028192Y315355D01* +X1028192Y317274D01* +X1036828Y321094D02* +X1036828Y323973D01* +X1036826Y324059D01* +X1036820Y324145D01* +X1036811Y324231D01* +X1036797Y324316D01* +X1036780Y324400D01* +X1036759Y324484D01* +X1036734Y324566D01* +X1036706Y324647D01* +X1036674Y324727D01* +X1036638Y324806D01* +X1036599Y324882D01* +X1036556Y324957D01* +X1036511Y325030D01* +X1036462Y325101D01* +X1036409Y325169D01* +X1036354Y325236D01* +X1036296Y325299D01* +X1036235Y325360D01* +X1036172Y325418D01* +X1036105Y325473D01* +X1036037Y325526D01* +X1035966Y325575D01* +X1035893Y325620D01* +X1035818Y325663D01* +X1035742Y325702D01* +X1035663Y325738D01* +X1035583Y325770D01* +X1035502Y325798D01* +X1035420Y325823D01* +X1035336Y325844D01* +X1035252Y325861D01* +X1035167Y325875D01* +X1035081Y325884D01* +X1034995Y325890D01* +X1034909Y325892D01* +X1033949Y325892D01* +X1033863Y325890D01* +X1033777Y325884D01* +X1033691Y325875D01* +X1033606Y325861D01* +X1033522Y325844D01* +X1033438Y325823D01* +X1033356Y325798D01* +X1033275Y325770D01* +X1033195Y325738D01* +X1033116Y325702D01* +X1033040Y325663D01* +X1032965Y325620D01* +X1032892Y325575D01* +X1032821Y325526D01* +X1032753Y325473D01* +X1032686Y325418D01* +X1032623Y325360D01* +X1032562Y325299D01* +X1032504Y325236D01* +X1032449Y325169D01* +X1032397Y325101D01* +X1032347Y325030D01* +X1032302Y324957D01* +X1032259Y324882D01* +X1032220Y324806D01* +X1032184Y324727D01* +X1032152Y324647D01* +X1032124Y324566D01* +X1032099Y324484D01* +X1032078Y324400D01* +X1032061Y324316D01* +X1032047Y324231D01* +X1032038Y324145D01* +X1032032Y324059D01* +X1032030Y323973D01* +X1032030Y321094D01* +X1028192Y321094D01* +X1028192Y325892D01* +D15* +X1016000Y58420D03* +D14* +X1019810Y77103D02* +X1019810Y79022D01* +X1019810Y77103D02* +X1019808Y77017D01* +X1019802Y76931D01* +X1019793Y76845D01* +X1019779Y76760D01* +X1019762Y76676D01* +X1019741Y76592D01* +X1019716Y76510D01* +X1019688Y76429D01* +X1019656Y76349D01* +X1019620Y76270D01* +X1019581Y76194D01* +X1019538Y76119D01* +X1019493Y76046D01* +X1019444Y75975D01* +X1019391Y75907D01* +X1019336Y75840D01* +X1019278Y75777D01* +X1019217Y75716D01* +X1019154Y75658D01* +X1019087Y75603D01* +X1019019Y75551D01* +X1018948Y75501D01* +X1018875Y75456D01* +X1018800Y75413D01* +X1018724Y75374D01* +X1018645Y75338D01* +X1018565Y75306D01* +X1018484Y75278D01* +X1018402Y75253D01* +X1018318Y75232D01* +X1018234Y75215D01* +X1018149Y75201D01* +X1018063Y75192D01* +X1017977Y75186D01* +X1017891Y75184D01* +X1013093Y75184D01* +X1013007Y75186D01* +X1012921Y75192D01* +X1012835Y75201D01* +X1012750Y75215D01* +X1012666Y75232D01* +X1012582Y75253D01* +X1012500Y75278D01* +X1012419Y75306D01* +X1012339Y75338D01* +X1012260Y75374D01* +X1012184Y75413D01* +X1012109Y75456D01* +X1012036Y75501D01* +X1011965Y75550D01* +X1011897Y75603D01* +X1011830Y75658D01* +X1011767Y75716D01* +X1011706Y75777D01* +X1011648Y75840D01* +X1011593Y75907D01* +X1011541Y75975D01* +X1011491Y76046D01* +X1011446Y76119D01* +X1011403Y76194D01* +X1011364Y76270D01* +X1011328Y76349D01* +X1011296Y76429D01* +X1011268Y76510D01* +X1011243Y76592D01* +X1011222Y76676D01* +X1011205Y76760D01* +X1011191Y76845D01* +X1011182Y76931D01* +X1011176Y77017D01* +X1011174Y77103D01* +X1011174Y79022D01* +X1013093Y82842D02* +X1011174Y85241D01* +X1019810Y85241D01* +X1019810Y82842D02* +X1019810Y87640D01* +X1015972Y93905D02* +X1015972Y96784D01* +X1015972Y93905D02* +X1015970Y93819D01* +X1015964Y93733D01* +X1015955Y93647D01* +X1015941Y93562D01* +X1015924Y93478D01* +X1015903Y93394D01* +X1015878Y93312D01* +X1015850Y93231D01* +X1015818Y93151D01* +X1015782Y93072D01* +X1015743Y92996D01* +X1015700Y92921D01* +X1015655Y92848D01* +X1015606Y92777D01* +X1015553Y92709D01* +X1015498Y92642D01* +X1015440Y92579D01* +X1015379Y92518D01* +X1015316Y92460D01* +X1015249Y92405D01* +X1015181Y92353D01* +X1015110Y92303D01* +X1015037Y92258D01* +X1014962Y92215D01* +X1014886Y92176D01* +X1014807Y92140D01* +X1014727Y92108D01* +X1014646Y92080D01* +X1014564Y92055D01* +X1014480Y92034D01* +X1014396Y92017D01* +X1014311Y92003D01* +X1014225Y91994D01* +X1014139Y91988D01* +X1014053Y91986D01* +X1013573Y91986D01* +X1013476Y91988D01* +X1013380Y91994D01* +X1013284Y92003D01* +X1013188Y92017D01* +X1013093Y92034D01* +X1012999Y92056D01* +X1012906Y92081D01* +X1012813Y92109D01* +X1012722Y92142D01* +X1012633Y92178D01* +X1012545Y92218D01* +X1012458Y92261D01* +X1012374Y92307D01* +X1012291Y92357D01* +X1012210Y92411D01* +X1012132Y92467D01* +X1012056Y92527D01* +X1011982Y92589D01* +X1011911Y92655D01* +X1011843Y92723D01* +X1011777Y92794D01* +X1011715Y92868D01* +X1011655Y92944D01* +X1011599Y93022D01* +X1011545Y93103D01* +X1011495Y93186D01* +X1011449Y93270D01* +X1011406Y93357D01* +X1011366Y93445D01* +X1011330Y93534D01* +X1011297Y93625D01* +X1011269Y93718D01* +X1011244Y93811D01* +X1011222Y93905D01* +X1011205Y94000D01* +X1011191Y94096D01* +X1011182Y94192D01* +X1011176Y94288D01* +X1011174Y94385D01* +X1011176Y94482D01* +X1011182Y94578D01* +X1011191Y94674D01* +X1011205Y94770D01* +X1011222Y94865D01* +X1011244Y94959D01* +X1011269Y95052D01* +X1011297Y95145D01* +X1011330Y95236D01* +X1011366Y95325D01* +X1011406Y95413D01* +X1011449Y95500D01* +X1011495Y95585D01* +X1011545Y95667D01* +X1011599Y95748D01* +X1011655Y95826D01* +X1011715Y95902D01* +X1011777Y95976D01* +X1011843Y96047D01* +X1011911Y96115D01* +X1011982Y96181D01* +X1012056Y96243D01* +X1012132Y96303D01* +X1012210Y96359D01* +X1012291Y96413D01* +X1012374Y96463D01* +X1012458Y96509D01* +X1012545Y96552D01* +X1012633Y96592D01* +X1012722Y96628D01* +X1012813Y96661D01* +X1012906Y96689D01* +X1012999Y96714D01* +X1013093Y96736D01* +X1013188Y96753D01* +X1013284Y96767D01* +X1013380Y96776D01* +X1013476Y96782D01* +X1013573Y96784D01* +X1015972Y96784D01* +X1016095Y96782D01* +X1016218Y96776D01* +X1016341Y96766D01* +X1016463Y96752D01* +X1016585Y96735D01* +X1016706Y96713D01* +X1016826Y96688D01* +X1016946Y96658D01* +X1017064Y96625D01* +X1017181Y96588D01* +X1017298Y96548D01* +X1017412Y96504D01* +X1017526Y96456D01* +X1017637Y96404D01* +X1017747Y96349D01* +X1017855Y96290D01* +X1017962Y96228D01* +X1018066Y96163D01* +X1018168Y96094D01* +X1018268Y96022D01* +X1018365Y95947D01* +X1018460Y95868D01* +X1018552Y95787D01* +X1018642Y95703D01* +X1018729Y95616D01* +X1018813Y95526D01* +X1018894Y95434D01* +X1018973Y95339D01* +X1019048Y95242D01* +X1019120Y95142D01* +X1019189Y95040D01* +X1019254Y94936D01* +X1019316Y94829D01* +X1019375Y94721D01* +X1019430Y94611D01* +X1019482Y94500D01* +X1019530Y94386D01* +X1019574Y94272D01* +X1019614Y94155D01* +X1019651Y94038D01* +X1019684Y93920D01* +X1019714Y93800D01* +X1019739Y93680D01* +X1019761Y93559D01* +X1019778Y93437D01* +X1019792Y93315D01* +X1019802Y93192D01* +X1019808Y93069D01* +X1019810Y92946D01* +D15* +X688340Y83820D03* +D14* +X691896Y49040D02* +X691896Y47121D01* +X691894Y47035D01* +X691888Y46949D01* +X691879Y46863D01* +X691865Y46778D01* +X691848Y46694D01* +X691827Y46610D01* +X691802Y46528D01* +X691774Y46447D01* +X691742Y46367D01* +X691706Y46288D01* +X691667Y46212D01* +X691624Y46137D01* +X691579Y46064D01* +X691530Y45993D01* +X691477Y45925D01* +X691422Y45858D01* +X691364Y45795D01* +X691303Y45734D01* +X691240Y45676D01* +X691173Y45621D01* +X691105Y45569D01* +X691034Y45519D01* +X690961Y45474D01* +X690886Y45431D01* +X690810Y45392D01* +X690731Y45356D01* +X690651Y45324D01* +X690570Y45296D01* +X690488Y45271D01* +X690404Y45250D01* +X690320Y45233D01* +X690235Y45219D01* +X690149Y45210D01* +X690063Y45204D01* +X689977Y45202D01* +X685179Y45202D01* +X685093Y45204D01* +X685007Y45210D01* +X684921Y45219D01* +X684836Y45233D01* +X684752Y45250D01* +X684668Y45271D01* +X684586Y45296D01* +X684505Y45324D01* +X684425Y45356D01* +X684346Y45392D01* +X684270Y45431D01* +X684195Y45474D01* +X684122Y45519D01* +X684051Y45568D01* +X683983Y45621D01* +X683916Y45676D01* +X683853Y45734D01* +X683792Y45795D01* +X683734Y45858D01* +X683679Y45925D01* +X683627Y45993D01* +X683577Y46064D01* +X683532Y46137D01* +X683489Y46212D01* +X683450Y46288D01* +X683414Y46367D01* +X683382Y46447D01* +X683354Y46528D01* +X683329Y46610D01* +X683308Y46694D01* +X683291Y46778D01* +X683277Y46863D01* +X683268Y46949D01* +X683262Y47035D01* +X683260Y47121D01* +X683260Y49040D01* +X685179Y52860D02* +X683260Y55259D01* +X691896Y55259D01* +X691896Y52860D02* +X691896Y57658D01* +X687098Y62004D02* +X687098Y64883D01* +X687100Y64969D01* +X687106Y65055D01* +X687115Y65141D01* +X687129Y65226D01* +X687146Y65310D01* +X687167Y65394D01* +X687192Y65476D01* +X687220Y65557D01* +X687252Y65637D01* +X687288Y65716D01* +X687327Y65792D01* +X687370Y65867D01* +X687415Y65940D01* +X687465Y66011D01* +X687517Y66079D01* +X687572Y66146D01* +X687630Y66209D01* +X687691Y66270D01* +X687754Y66328D01* +X687821Y66383D01* +X687889Y66436D01* +X687960Y66485D01* +X688033Y66530D01* +X688108Y66573D01* +X688184Y66612D01* +X688263Y66648D01* +X688343Y66680D01* +X688424Y66708D01* +X688507Y66733D01* +X688590Y66754D01* +X688674Y66771D01* +X688759Y66785D01* +X688845Y66794D01* +X688931Y66800D01* +X689017Y66802D01* +X689497Y66802D01* +X689594Y66800D01* +X689690Y66794D01* +X689786Y66785D01* +X689882Y66771D01* +X689977Y66754D01* +X690071Y66732D01* +X690164Y66707D01* +X690257Y66679D01* +X690348Y66646D01* +X690437Y66610D01* +X690525Y66570D01* +X690612Y66527D01* +X690697Y66481D01* +X690779Y66431D01* +X690860Y66377D01* +X690938Y66321D01* +X691014Y66261D01* +X691088Y66199D01* +X691159Y66133D01* +X691227Y66065D01* +X691293Y65994D01* +X691355Y65920D01* +X691415Y65844D01* +X691471Y65766D01* +X691525Y65685D01* +X691575Y65602D01* +X691621Y65518D01* +X691664Y65431D01* +X691704Y65343D01* +X691740Y65254D01* +X691773Y65163D01* +X691801Y65070D01* +X691826Y64977D01* +X691848Y64883D01* +X691865Y64788D01* +X691879Y64692D01* +X691888Y64596D01* +X691894Y64500D01* +X691896Y64403D01* +X691894Y64306D01* +X691888Y64210D01* +X691879Y64114D01* +X691865Y64018D01* +X691848Y63923D01* +X691826Y63829D01* +X691801Y63736D01* +X691773Y63643D01* +X691740Y63552D01* +X691704Y63463D01* +X691664Y63375D01* +X691621Y63288D01* +X691575Y63203D01* +X691525Y63121D01* +X691471Y63040D01* +X691415Y62962D01* +X691355Y62886D01* +X691293Y62812D01* +X691227Y62741D01* +X691159Y62673D01* +X691088Y62607D01* +X691014Y62545D01* +X690938Y62485D01* +X690860Y62429D01* +X690779Y62375D01* +X690697Y62325D01* +X690612Y62279D01* +X690525Y62236D01* +X690437Y62196D01* +X690348Y62160D01* +X690257Y62127D01* +X690164Y62099D01* +X690071Y62074D01* +X689977Y62052D01* +X689882Y62035D01* +X689786Y62021D01* +X689690Y62012D01* +X689594Y62006D01* +X689497Y62004D01* +X687098Y62004D01* +X687098Y62005D02* +X686975Y62007D01* +X686852Y62013D01* +X686729Y62023D01* +X686607Y62037D01* +X686485Y62054D01* +X686364Y62076D01* +X686244Y62101D01* +X686124Y62131D01* +X686006Y62164D01* +X685889Y62201D01* +X685772Y62241D01* +X685658Y62285D01* +X685544Y62333D01* +X685433Y62385D01* +X685323Y62440D01* +X685215Y62499D01* +X685108Y62561D01* +X685004Y62626D01* +X684902Y62695D01* +X684802Y62767D01* +X684705Y62842D01* +X684610Y62921D01* +X684518Y63002D01* +X684428Y63086D01* +X684341Y63173D01* +X684257Y63263D01* +X684176Y63355D01* +X684097Y63450D01* +X684022Y63547D01* +X683950Y63647D01* +X683881Y63749D01* +X683816Y63853D01* +X683754Y63960D01* +X683695Y64068D01* +X683640Y64178D01* +X683588Y64289D01* +X683541Y64403D01* +X683496Y64517D01* +X683456Y64634D01* +X683419Y64751D01* +X683386Y64869D01* +X683356Y64989D01* +X683331Y65109D01* +X683309Y65230D01* +X683292Y65352D01* +X683278Y65474D01* +X683268Y65597D01* +X683262Y65720D01* +X683260Y65843D01* +D13* +X1051560Y91440D03* +D14* +X1056640Y105043D02* +X1056640Y106962D01* +X1056640Y105043D02* +X1056638Y104957D01* +X1056632Y104871D01* +X1056623Y104785D01* +X1056609Y104700D01* +X1056592Y104616D01* +X1056571Y104532D01* +X1056546Y104450D01* +X1056518Y104369D01* +X1056486Y104289D01* +X1056450Y104210D01* +X1056411Y104134D01* +X1056368Y104059D01* +X1056323Y103986D01* +X1056274Y103915D01* +X1056221Y103847D01* +X1056166Y103780D01* +X1056108Y103717D01* +X1056047Y103656D01* +X1055984Y103598D01* +X1055917Y103543D01* +X1055849Y103491D01* +X1055778Y103441D01* +X1055705Y103396D01* +X1055630Y103353D01* +X1055554Y103314D01* +X1055475Y103278D01* +X1055395Y103246D01* +X1055314Y103218D01* +X1055232Y103193D01* +X1055148Y103172D01* +X1055064Y103155D01* +X1054979Y103141D01* +X1054893Y103132D01* +X1054807Y103126D01* +X1054721Y103124D01* +X1049923Y103124D01* +X1049837Y103126D01* +X1049751Y103132D01* +X1049665Y103141D01* +X1049580Y103155D01* +X1049496Y103172D01* +X1049412Y103193D01* +X1049330Y103218D01* +X1049249Y103246D01* +X1049169Y103278D01* +X1049090Y103314D01* +X1049014Y103353D01* +X1048939Y103396D01* +X1048866Y103441D01* +X1048795Y103490D01* +X1048727Y103543D01* +X1048660Y103598D01* +X1048597Y103656D01* +X1048536Y103717D01* +X1048478Y103780D01* +X1048423Y103847D01* +X1048371Y103915D01* +X1048321Y103986D01* +X1048276Y104059D01* +X1048233Y104134D01* +X1048194Y104210D01* +X1048158Y104289D01* +X1048126Y104369D01* +X1048098Y104450D01* +X1048073Y104532D01* +X1048052Y104616D01* +X1048035Y104700D01* +X1048021Y104785D01* +X1048012Y104871D01* +X1048006Y104957D01* +X1048004Y105043D01* +X1048004Y106962D01* +X1054241Y110782D02* +X1054144Y110784D01* +X1054048Y110790D01* +X1053952Y110799D01* +X1053856Y110813D01* +X1053761Y110830D01* +X1053667Y110852D01* +X1053574Y110877D01* +X1053481Y110905D01* +X1053390Y110938D01* +X1053301Y110974D01* +X1053213Y111014D01* +X1053126Y111057D01* +X1053042Y111103D01* +X1052959Y111153D01* +X1052878Y111207D01* +X1052800Y111263D01* +X1052724Y111323D01* +X1052650Y111385D01* +X1052579Y111451D01* +X1052511Y111519D01* +X1052445Y111590D01* +X1052383Y111664D01* +X1052323Y111740D01* +X1052267Y111818D01* +X1052213Y111899D01* +X1052163Y111982D01* +X1052117Y112066D01* +X1052074Y112153D01* +X1052034Y112241D01* +X1051998Y112330D01* +X1051965Y112421D01* +X1051937Y112514D01* +X1051912Y112607D01* +X1051890Y112701D01* +X1051873Y112796D01* +X1051859Y112892D01* +X1051850Y112988D01* +X1051844Y113084D01* +X1051842Y113181D01* +X1051844Y113278D01* +X1051850Y113374D01* +X1051859Y113470D01* +X1051873Y113566D01* +X1051890Y113661D01* +X1051912Y113755D01* +X1051937Y113848D01* +X1051965Y113941D01* +X1051998Y114032D01* +X1052034Y114121D01* +X1052074Y114209D01* +X1052117Y114296D01* +X1052163Y114381D01* +X1052213Y114463D01* +X1052267Y114544D01* +X1052323Y114622D01* +X1052383Y114698D01* +X1052445Y114772D01* +X1052511Y114843D01* +X1052579Y114911D01* +X1052650Y114977D01* +X1052724Y115039D01* +X1052800Y115099D01* +X1052878Y115155D01* +X1052959Y115209D01* +X1053042Y115259D01* +X1053126Y115305D01* +X1053213Y115348D01* +X1053301Y115388D01* +X1053390Y115424D01* +X1053481Y115457D01* +X1053574Y115485D01* +X1053667Y115510D01* +X1053761Y115532D01* +X1053856Y115549D01* +X1053952Y115563D01* +X1054048Y115572D01* +X1054144Y115578D01* +X1054241Y115580D01* +X1054338Y115578D01* +X1054434Y115572D01* +X1054530Y115563D01* +X1054626Y115549D01* +X1054721Y115532D01* +X1054815Y115510D01* +X1054908Y115485D01* +X1055001Y115457D01* +X1055092Y115424D01* +X1055181Y115388D01* +X1055269Y115348D01* +X1055356Y115305D01* +X1055441Y115259D01* +X1055523Y115209D01* +X1055604Y115155D01* +X1055682Y115099D01* +X1055758Y115039D01* +X1055832Y114977D01* +X1055903Y114911D01* +X1055971Y114843D01* +X1056037Y114772D01* +X1056099Y114698D01* +X1056159Y114622D01* +X1056215Y114544D01* +X1056269Y114463D01* +X1056319Y114380D01* +X1056365Y114296D01* +X1056408Y114209D01* +X1056448Y114121D01* +X1056484Y114032D01* +X1056517Y113941D01* +X1056545Y113848D01* +X1056570Y113755D01* +X1056592Y113661D01* +X1056609Y113566D01* +X1056623Y113470D01* +X1056632Y113374D01* +X1056638Y113278D01* +X1056640Y113181D01* +X1056638Y113084D01* +X1056632Y112988D01* +X1056623Y112892D01* +X1056609Y112796D01* +X1056592Y112701D01* +X1056570Y112607D01* +X1056545Y112514D01* +X1056517Y112421D01* +X1056484Y112330D01* +X1056448Y112241D01* +X1056408Y112153D01* +X1056365Y112066D01* +X1056319Y111981D01* +X1056269Y111899D01* +X1056215Y111818D01* +X1056159Y111740D01* +X1056099Y111664D01* +X1056037Y111590D01* +X1055971Y111519D01* +X1055903Y111451D01* +X1055832Y111385D01* +X1055758Y111323D01* +X1055682Y111263D01* +X1055604Y111207D01* +X1055523Y111153D01* +X1055441Y111103D01* +X1055356Y111057D01* +X1055269Y111014D01* +X1055181Y110974D01* +X1055092Y110938D01* +X1055001Y110905D01* +X1054908Y110877D01* +X1054815Y110852D01* +X1054721Y110830D01* +X1054626Y110813D01* +X1054530Y110799D01* +X1054434Y110790D01* +X1054338Y110784D01* +X1054241Y110782D01* +X1049923Y111262D02* +X1049837Y111264D01* +X1049751Y111270D01* +X1049665Y111279D01* +X1049580Y111293D01* +X1049496Y111310D01* +X1049412Y111331D01* +X1049330Y111356D01* +X1049249Y111384D01* +X1049169Y111416D01* +X1049090Y111452D01* +X1049014Y111491D01* +X1048939Y111534D01* +X1048866Y111579D01* +X1048795Y111628D01* +X1048727Y111681D01* +X1048660Y111736D01* +X1048597Y111794D01* +X1048536Y111855D01* +X1048478Y111918D01* +X1048423Y111985D01* +X1048370Y112053D01* +X1048321Y112124D01* +X1048276Y112197D01* +X1048233Y112272D01* +X1048194Y112348D01* +X1048158Y112427D01* +X1048126Y112507D01* +X1048098Y112588D01* +X1048073Y112670D01* +X1048052Y112754D01* +X1048035Y112838D01* +X1048021Y112923D01* +X1048012Y113009D01* +X1048006Y113095D01* +X1048004Y113181D01* +X1048006Y113267D01* +X1048012Y113353D01* +X1048021Y113439D01* +X1048035Y113524D01* +X1048052Y113608D01* +X1048073Y113692D01* +X1048098Y113774D01* +X1048126Y113855D01* +X1048158Y113935D01* +X1048194Y114014D01* +X1048233Y114090D01* +X1048276Y114165D01* +X1048321Y114238D01* +X1048370Y114309D01* +X1048423Y114377D01* +X1048478Y114444D01* +X1048536Y114507D01* +X1048597Y114568D01* +X1048660Y114626D01* +X1048727Y114681D01* +X1048795Y114734D01* +X1048866Y114783D01* +X1048939Y114828D01* +X1049014Y114871D01* +X1049090Y114910D01* +X1049169Y114946D01* +X1049249Y114978D01* +X1049330Y115006D01* +X1049412Y115031D01* +X1049496Y115052D01* +X1049580Y115069D01* +X1049665Y115083D01* +X1049751Y115092D01* +X1049837Y115098D01* +X1049923Y115100D01* +X1050009Y115098D01* +X1050095Y115092D01* +X1050181Y115083D01* +X1050266Y115069D01* +X1050350Y115052D01* +X1050434Y115031D01* +X1050516Y115006D01* +X1050597Y114978D01* +X1050677Y114946D01* +X1050756Y114910D01* +X1050832Y114871D01* +X1050907Y114828D01* +X1050980Y114783D01* +X1051051Y114734D01* +X1051119Y114681D01* +X1051186Y114626D01* +X1051249Y114568D01* +X1051310Y114507D01* +X1051368Y114444D01* +X1051423Y114377D01* +X1051476Y114309D01* +X1051525Y114238D01* +X1051570Y114165D01* +X1051613Y114090D01* +X1051652Y114014D01* +X1051688Y113935D01* +X1051720Y113855D01* +X1051748Y113774D01* +X1051773Y113692D01* +X1051794Y113608D01* +X1051811Y113524D01* +X1051825Y113439D01* +X1051834Y113353D01* +X1051840Y113267D01* +X1051842Y113181D01* +X1051840Y113095D01* +X1051834Y113009D01* +X1051825Y112923D01* +X1051811Y112838D01* +X1051794Y112754D01* +X1051773Y112670D01* +X1051748Y112588D01* +X1051720Y112507D01* +X1051688Y112427D01* +X1051652Y112348D01* +X1051613Y112272D01* +X1051570Y112197D01* +X1051525Y112124D01* +X1051476Y112053D01* +X1051423Y111985D01* +X1051368Y111918D01* +X1051310Y111855D01* +X1051249Y111794D01* +X1051186Y111736D01* +X1051119Y111681D01* +X1051051Y111628D01* +X1050980Y111579D01* +X1050907Y111534D01* +X1050832Y111491D01* +X1050756Y111452D01* +X1050677Y111416D01* +X1050597Y111384D01* +X1050516Y111356D01* +X1050434Y111331D01* +X1050350Y111310D01* +X1050266Y111293D01* +X1050181Y111279D01* +X1050095Y111270D01* +X1050009Y111264D01* +X1049923Y111262D01* +D13* +X513080Y152400D03* +D14* +X506984Y147602D02* +X506984Y145683D01* +X506982Y145597D01* +X506976Y145511D01* +X506967Y145425D01* +X506953Y145340D01* +X506936Y145256D01* +X506915Y145172D01* +X506890Y145090D01* +X506862Y145009D01* +X506830Y144929D01* +X506794Y144850D01* +X506755Y144774D01* +X506712Y144699D01* +X506667Y144626D01* +X506618Y144555D01* +X506565Y144487D01* +X506510Y144420D01* +X506452Y144357D01* +X506391Y144296D01* +X506328Y144238D01* +X506261Y144183D01* +X506193Y144131D01* +X506122Y144081D01* +X506049Y144036D01* +X505974Y143993D01* +X505898Y143954D01* +X505819Y143918D01* +X505739Y143886D01* +X505658Y143858D01* +X505576Y143833D01* +X505492Y143812D01* +X505408Y143795D01* +X505323Y143781D01* +X505237Y143772D01* +X505151Y143766D01* +X505065Y143764D01* +X500267Y143764D01* +X500181Y143766D01* +X500095Y143772D01* +X500009Y143781D01* +X499924Y143795D01* +X499840Y143812D01* +X499756Y143833D01* +X499674Y143858D01* +X499593Y143886D01* +X499513Y143918D01* +X499434Y143954D01* +X499358Y143993D01* +X499283Y144036D01* +X499210Y144081D01* +X499139Y144130D01* +X499071Y144183D01* +X499004Y144238D01* +X498941Y144296D01* +X498880Y144357D01* +X498822Y144420D01* +X498767Y144487D01* +X498715Y144555D01* +X498665Y144626D01* +X498620Y144699D01* +X498577Y144774D01* +X498538Y144850D01* +X498502Y144929D01* +X498470Y145009D01* +X498442Y145090D01* +X498417Y145172D01* +X498396Y145256D01* +X498379Y145340D01* +X498365Y145425D01* +X498356Y145511D01* +X498350Y145597D01* +X498348Y145683D01* +X498348Y147602D01* +X498348Y154061D02* +X498350Y154153D01* +X498356Y154244D01* +X498365Y154335D01* +X498379Y154426D01* +X498396Y154516D01* +X498418Y154605D01* +X498443Y154693D01* +X498471Y154780D01* +X498504Y154866D01* +X498540Y154950D01* +X498579Y155033D01* +X498622Y155114D01* +X498669Y155193D01* +X498718Y155270D01* +X498771Y155345D01* +X498827Y155417D01* +X498886Y155487D01* +X498948Y155555D01* +X499013Y155620D01* +X499081Y155682D01* +X499151Y155741D01* +X499223Y155797D01* +X499298Y155850D01* +X499375Y155899D01* +X499454Y155946D01* +X499535Y155989D01* +X499618Y156028D01* +X499702Y156064D01* +X499788Y156097D01* +X499875Y156125D01* +X499963Y156150D01* +X500052Y156172D01* +X500142Y156189D01* +X500233Y156203D01* +X500324Y156212D01* +X500415Y156218D01* +X500507Y156220D01* +X498348Y154061D02* +X498350Y153958D01* +X498356Y153856D01* +X498365Y153754D01* +X498378Y153652D01* +X498395Y153551D01* +X498416Y153450D01* +X498440Y153351D01* +X498469Y153252D01* +X498500Y153155D01* +X498536Y153058D01* +X498574Y152963D01* +X498617Y152870D01* +X498663Y152778D01* +X498712Y152688D01* +X498764Y152600D01* +X498820Y152513D01* +X498879Y152429D01* +X498940Y152348D01* +X499005Y152268D01* +X499073Y152191D01* +X499144Y152116D01* +X499217Y152045D01* +X499293Y151976D01* +X499371Y151909D01* +X499452Y151846D01* +X499535Y151786D01* +X499620Y151729D01* +X499707Y151675D01* +X499797Y151624D01* +X499888Y151577D01* +X499980Y151533D01* +X500075Y151492D01* +X500170Y151455D01* +X500267Y151422D01* +X502186Y155500D02* +X502120Y155567D01* +X502051Y155631D01* +X501980Y155692D01* +X501906Y155750D01* +X501830Y155805D01* +X501752Y155857D01* +X501672Y155906D01* +X501590Y155952D01* +X501506Y155994D01* +X501420Y156033D01* +X501333Y156068D01* +X501245Y156099D01* +X501155Y156127D01* +X501065Y156152D01* +X500973Y156173D01* +X500881Y156190D01* +X500788Y156203D01* +X500695Y156212D01* +X500601Y156218D01* +X500507Y156220D01* +X502186Y155500D02* +X506984Y151422D01* +X506984Y156220D01* +X505065Y160566D02* +X498348Y162485D01* +X505065Y160566D02* +X505065Y165364D01* +X503146Y163925D02* +X506984Y163925D01* +D13* +X525780Y152400D03* +D14* +X538988Y145560D02* +X538988Y143641D01* +X538986Y143555D01* +X538980Y143469D01* +X538971Y143383D01* +X538957Y143298D01* +X538940Y143214D01* +X538919Y143130D01* +X538894Y143048D01* +X538866Y142967D01* +X538834Y142887D01* +X538798Y142808D01* +X538759Y142732D01* +X538716Y142657D01* +X538671Y142584D01* +X538622Y142513D01* +X538569Y142445D01* +X538514Y142378D01* +X538456Y142315D01* +X538395Y142254D01* +X538332Y142196D01* +X538265Y142141D01* +X538197Y142089D01* +X538126Y142039D01* +X538053Y141994D01* +X537978Y141951D01* +X537902Y141912D01* +X537823Y141876D01* +X537743Y141844D01* +X537662Y141816D01* +X537580Y141791D01* +X537496Y141770D01* +X537412Y141753D01* +X537327Y141739D01* +X537241Y141730D01* +X537155Y141724D01* +X537069Y141722D01* +X532271Y141722D01* +X532185Y141724D01* +X532099Y141730D01* +X532013Y141739D01* +X531928Y141753D01* +X531844Y141770D01* +X531760Y141791D01* +X531678Y141816D01* +X531597Y141844D01* +X531517Y141876D01* +X531438Y141912D01* +X531362Y141951D01* +X531287Y141994D01* +X531214Y142039D01* +X531143Y142088D01* +X531075Y142141D01* +X531008Y142196D01* +X530945Y142254D01* +X530884Y142315D01* +X530826Y142378D01* +X530771Y142445D01* +X530719Y142513D01* +X530669Y142584D01* +X530624Y142657D01* +X530581Y142732D01* +X530542Y142808D01* +X530506Y142887D01* +X530474Y142967D01* +X530446Y143048D01* +X530421Y143130D01* +X530400Y143214D01* +X530383Y143298D01* +X530369Y143383D01* +X530360Y143469D01* +X530354Y143555D01* +X530352Y143641D01* +X530352Y145560D01* +X530352Y152019D02* +X530354Y152111D01* +X530360Y152202D01* +X530369Y152293D01* +X530383Y152384D01* +X530400Y152474D01* +X530422Y152563D01* +X530447Y152651D01* +X530475Y152738D01* +X530508Y152824D01* +X530544Y152908D01* +X530583Y152991D01* +X530626Y153072D01* +X530673Y153151D01* +X530722Y153228D01* +X530775Y153303D01* +X530831Y153375D01* +X530890Y153445D01* +X530952Y153513D01* +X531017Y153578D01* +X531085Y153640D01* +X531155Y153699D01* +X531227Y153755D01* +X531302Y153808D01* +X531379Y153857D01* +X531458Y153904D01* +X531539Y153947D01* +X531622Y153986D01* +X531706Y154022D01* +X531792Y154055D01* +X531879Y154083D01* +X531967Y154108D01* +X532056Y154130D01* +X532146Y154147D01* +X532237Y154161D01* +X532328Y154170D01* +X532419Y154176D01* +X532511Y154178D01* +X530352Y152019D02* +X530354Y151916D01* +X530360Y151814D01* +X530369Y151712D01* +X530382Y151610D01* +X530399Y151509D01* +X530420Y151408D01* +X530444Y151309D01* +X530473Y151210D01* +X530504Y151113D01* +X530540Y151016D01* +X530578Y150921D01* +X530621Y150828D01* +X530667Y150736D01* +X530716Y150646D01* +X530768Y150558D01* +X530824Y150471D01* +X530883Y150387D01* +X530944Y150306D01* +X531009Y150226D01* +X531077Y150149D01* +X531148Y150074D01* +X531221Y150003D01* +X531297Y149934D01* +X531375Y149867D01* +X531456Y149804D01* +X531539Y149744D01* +X531624Y149687D01* +X531711Y149633D01* +X531801Y149582D01* +X531892Y149535D01* +X531984Y149491D01* +X532079Y149450D01* +X532174Y149413D01* +X532271Y149380D01* +X534190Y153458D02* +X534124Y153525D01* +X534055Y153589D01* +X533984Y153650D01* +X533910Y153708D01* +X533834Y153763D01* +X533756Y153815D01* +X533676Y153864D01* +X533594Y153910D01* +X533510Y153952D01* +X533424Y153991D01* +X533337Y154026D01* +X533249Y154057D01* +X533159Y154085D01* +X533069Y154110D01* +X532977Y154131D01* +X532885Y154148D01* +X532792Y154161D01* +X532699Y154170D01* +X532605Y154176D01* +X532511Y154178D01* +X534190Y153458D02* +X538988Y149380D01* +X538988Y154178D01* +X538988Y158524D02* +X538988Y161403D01* +X538986Y161489D01* +X538980Y161575D01* +X538971Y161661D01* +X538957Y161746D01* +X538940Y161830D01* +X538919Y161914D01* +X538894Y161996D01* +X538866Y162077D01* +X538834Y162157D01* +X538798Y162236D01* +X538759Y162312D01* +X538716Y162387D01* +X538671Y162460D01* +X538622Y162531D01* +X538569Y162599D01* +X538514Y162666D01* +X538456Y162729D01* +X538395Y162790D01* +X538332Y162848D01* +X538265Y162903D01* +X538197Y162956D01* +X538126Y163005D01* +X538053Y163050D01* +X537978Y163093D01* +X537902Y163132D01* +X537823Y163168D01* +X537743Y163200D01* +X537662Y163228D01* +X537580Y163253D01* +X537496Y163274D01* +X537412Y163291D01* +X537327Y163305D01* +X537241Y163314D01* +X537155Y163320D01* +X537069Y163322D01* +X536109Y163322D01* +X536023Y163320D01* +X535937Y163314D01* +X535851Y163305D01* +X535766Y163291D01* +X535682Y163274D01* +X535598Y163253D01* +X535516Y163228D01* +X535435Y163200D01* +X535355Y163168D01* +X535276Y163132D01* +X535200Y163093D01* +X535125Y163050D01* +X535052Y163005D01* +X534981Y162956D01* +X534913Y162903D01* +X534846Y162848D01* +X534783Y162790D01* +X534722Y162729D01* +X534664Y162666D01* +X534609Y162599D01* +X534557Y162531D01* +X534507Y162460D01* +X534462Y162387D01* +X534419Y162312D01* +X534380Y162236D01* +X534344Y162157D01* +X534312Y162077D01* +X534284Y161996D01* +X534259Y161914D01* +X534238Y161830D01* +X534221Y161746D01* +X534207Y161661D01* +X534198Y161575D01* +X534192Y161489D01* +X534190Y161403D01* +X534190Y158524D01* +X530352Y158524D01* +X530352Y163322D01* +D13* +X350520Y347980D03* +D14* +X356362Y326662D02* +X356362Y324743D01* +X356360Y324657D01* +X356354Y324571D01* +X356345Y324485D01* +X356331Y324400D01* +X356314Y324316D01* +X356293Y324232D01* +X356268Y324150D01* +X356240Y324069D01* +X356208Y323989D01* +X356172Y323910D01* +X356133Y323834D01* +X356090Y323759D01* +X356045Y323686D01* +X355996Y323615D01* +X355943Y323547D01* +X355888Y323480D01* +X355830Y323417D01* +X355769Y323356D01* +X355706Y323298D01* +X355639Y323243D01* +X355571Y323191D01* +X355500Y323141D01* +X355427Y323096D01* +X355352Y323053D01* +X355276Y323014D01* +X355197Y322978D01* +X355117Y322946D01* +X355036Y322918D01* +X354954Y322893D01* +X354870Y322872D01* +X354786Y322855D01* +X354701Y322841D01* +X354615Y322832D01* +X354529Y322826D01* +X354443Y322824D01* +X349645Y322824D01* +X349559Y322826D01* +X349473Y322832D01* +X349387Y322841D01* +X349302Y322855D01* +X349218Y322872D01* +X349134Y322893D01* +X349052Y322918D01* +X348971Y322946D01* +X348891Y322978D01* +X348812Y323014D01* +X348736Y323053D01* +X348661Y323096D01* +X348588Y323141D01* +X348517Y323190D01* +X348449Y323243D01* +X348382Y323298D01* +X348319Y323356D01* +X348258Y323417D01* +X348200Y323480D01* +X348145Y323547D01* +X348093Y323615D01* +X348043Y323686D01* +X347998Y323759D01* +X347955Y323834D01* +X347916Y323910D01* +X347880Y323989D01* +X347848Y324069D01* +X347820Y324150D01* +X347795Y324232D01* +X347774Y324316D01* +X347757Y324400D01* +X347743Y324485D01* +X347734Y324571D01* +X347728Y324657D01* +X347726Y324743D01* +X347726Y326662D01* +X351564Y330482D02* +X351564Y333361D01* +X351566Y333447D01* +X351572Y333533D01* +X351581Y333619D01* +X351595Y333704D01* +X351612Y333788D01* +X351633Y333872D01* +X351658Y333954D01* +X351686Y334035D01* +X351718Y334115D01* +X351754Y334194D01* +X351793Y334270D01* +X351836Y334345D01* +X351881Y334418D01* +X351931Y334489D01* +X351983Y334557D01* +X352038Y334624D01* +X352096Y334687D01* +X352157Y334748D01* +X352220Y334806D01* +X352287Y334861D01* +X352355Y334914D01* +X352426Y334963D01* +X352499Y335008D01* +X352574Y335051D01* +X352650Y335090D01* +X352729Y335126D01* +X352809Y335158D01* +X352890Y335186D01* +X352973Y335211D01* +X353056Y335232D01* +X353140Y335249D01* +X353225Y335263D01* +X353311Y335272D01* +X353397Y335278D01* +X353483Y335280D01* +X353963Y335280D01* +X354060Y335278D01* +X354156Y335272D01* +X354252Y335263D01* +X354348Y335249D01* +X354443Y335232D01* +X354537Y335210D01* +X354630Y335185D01* +X354723Y335157D01* +X354814Y335124D01* +X354903Y335088D01* +X354991Y335048D01* +X355078Y335005D01* +X355163Y334959D01* +X355245Y334909D01* +X355326Y334855D01* +X355404Y334799D01* +X355480Y334739D01* +X355554Y334677D01* +X355625Y334611D01* +X355693Y334543D01* +X355759Y334472D01* +X355821Y334398D01* +X355881Y334322D01* +X355937Y334244D01* +X355991Y334163D01* +X356041Y334081D01* +X356087Y333996D01* +X356130Y333909D01* +X356170Y333821D01* +X356206Y333732D01* +X356239Y333641D01* +X356267Y333548D01* +X356292Y333455D01* +X356314Y333361D01* +X356331Y333266D01* +X356345Y333170D01* +X356354Y333074D01* +X356360Y332978D01* +X356362Y332881D01* +X356360Y332784D01* +X356354Y332688D01* +X356345Y332592D01* +X356331Y332496D01* +X356314Y332401D01* +X356292Y332307D01* +X356267Y332214D01* +X356239Y332121D01* +X356206Y332030D01* +X356170Y331941D01* +X356130Y331853D01* +X356087Y331766D01* +X356041Y331682D01* +X355991Y331599D01* +X355937Y331518D01* +X355881Y331440D01* +X355821Y331364D01* +X355759Y331290D01* +X355693Y331219D01* +X355625Y331151D01* +X355554Y331085D01* +X355480Y331023D01* +X355404Y330963D01* +X355326Y330907D01* +X355245Y330853D01* +X355163Y330803D01* +X355078Y330757D01* +X354991Y330714D01* +X354903Y330674D01* +X354814Y330638D01* +X354723Y330605D01* +X354630Y330577D01* +X354537Y330552D01* +X354443Y330530D01* +X354348Y330513D01* +X354252Y330499D01* +X354156Y330490D01* +X354060Y330484D01* +X353963Y330482D01* +X351564Y330482D01* +X351564Y330483D02* +X351441Y330485D01* +X351318Y330491D01* +X351195Y330501D01* +X351073Y330515D01* +X350951Y330532D01* +X350830Y330554D01* +X350710Y330579D01* +X350590Y330609D01* +X350472Y330642D01* +X350355Y330679D01* +X350238Y330719D01* +X350124Y330763D01* +X350010Y330811D01* +X349899Y330863D01* +X349789Y330918D01* +X349681Y330977D01* +X349574Y331039D01* +X349470Y331104D01* +X349368Y331173D01* +X349268Y331245D01* +X349171Y331320D01* +X349076Y331399D01* +X348984Y331480D01* +X348894Y331564D01* +X348807Y331651D01* +X348723Y331741D01* +X348642Y331833D01* +X348563Y331928D01* +X348488Y332025D01* +X348416Y332125D01* +X348347Y332227D01* +X348282Y332331D01* +X348220Y332438D01* +X348161Y332546D01* +X348106Y332656D01* +X348054Y332767D01* +X348007Y332881D01* +X347962Y332995D01* +X347922Y333112D01* +X347885Y333229D01* +X347852Y333347D01* +X347822Y333467D01* +X347797Y333587D01* +X347775Y333708D01* +X347758Y333830D01* +X347744Y333952D01* +X347734Y334075D01* +X347728Y334198D01* +X347726Y334321D01* +D13* +X360680Y347980D03* +D14* +X369062Y326662D02* +X369062Y324743D01* +X369060Y324657D01* +X369054Y324571D01* +X369045Y324485D01* +X369031Y324400D01* +X369014Y324316D01* +X368993Y324232D01* +X368968Y324150D01* +X368940Y324069D01* +X368908Y323989D01* +X368872Y323910D01* +X368833Y323834D01* +X368790Y323759D01* +X368745Y323686D01* +X368696Y323615D01* +X368643Y323547D01* +X368588Y323480D01* +X368530Y323417D01* +X368469Y323356D01* +X368406Y323298D01* +X368339Y323243D01* +X368271Y323191D01* +X368200Y323141D01* +X368127Y323096D01* +X368052Y323053D01* +X367976Y323014D01* +X367897Y322978D01* +X367817Y322946D01* +X367736Y322918D01* +X367654Y322893D01* +X367570Y322872D01* +X367486Y322855D01* +X367401Y322841D01* +X367315Y322832D01* +X367229Y322826D01* +X367143Y322824D01* +X362345Y322824D01* +X362259Y322826D01* +X362173Y322832D01* +X362087Y322841D01* +X362002Y322855D01* +X361918Y322872D01* +X361834Y322893D01* +X361752Y322918D01* +X361671Y322946D01* +X361591Y322978D01* +X361512Y323014D01* +X361436Y323053D01* +X361361Y323096D01* +X361288Y323141D01* +X361217Y323190D01* +X361149Y323243D01* +X361082Y323298D01* +X361019Y323356D01* +X360958Y323417D01* +X360900Y323480D01* +X360845Y323547D01* +X360793Y323615D01* +X360743Y323686D01* +X360698Y323759D01* +X360655Y323834D01* +X360616Y323910D01* +X360580Y323989D01* +X360548Y324069D01* +X360520Y324150D01* +X360495Y324232D01* +X360474Y324316D01* +X360457Y324400D01* +X360443Y324485D01* +X360434Y324571D01* +X360428Y324657D01* +X360426Y324743D01* +X360426Y326662D01* +X360426Y330482D02* +X361386Y330482D01* +X360426Y330482D02* +X360426Y335280D01* +X369062Y332881D01* +D13* +X236220Y353060D03* +D14* +X241046Y322852D02* +X241046Y320933D01* +X241044Y320847D01* +X241038Y320761D01* +X241029Y320675D01* +X241015Y320590D01* +X240998Y320506D01* +X240977Y320422D01* +X240952Y320340D01* +X240924Y320259D01* +X240892Y320179D01* +X240856Y320100D01* +X240817Y320024D01* +X240774Y319949D01* +X240729Y319876D01* +X240680Y319805D01* +X240627Y319737D01* +X240572Y319670D01* +X240514Y319607D01* +X240453Y319546D01* +X240390Y319488D01* +X240323Y319433D01* +X240255Y319381D01* +X240184Y319331D01* +X240111Y319286D01* +X240036Y319243D01* +X239960Y319204D01* +X239881Y319168D01* +X239801Y319136D01* +X239720Y319108D01* +X239638Y319083D01* +X239554Y319062D01* +X239470Y319045D01* +X239385Y319031D01* +X239299Y319022D01* +X239213Y319016D01* +X239127Y319014D01* +X234329Y319014D01* +X234243Y319016D01* +X234157Y319022D01* +X234071Y319031D01* +X233986Y319045D01* +X233902Y319062D01* +X233818Y319083D01* +X233736Y319108D01* +X233655Y319136D01* +X233575Y319168D01* +X233496Y319204D01* +X233420Y319243D01* +X233345Y319286D01* +X233272Y319331D01* +X233201Y319380D01* +X233133Y319433D01* +X233066Y319488D01* +X233003Y319546D01* +X232942Y319607D01* +X232884Y319670D01* +X232829Y319737D01* +X232777Y319805D01* +X232727Y319876D01* +X232682Y319949D01* +X232639Y320024D01* +X232600Y320100D01* +X232564Y320179D01* +X232532Y320259D01* +X232504Y320340D01* +X232479Y320422D01* +X232458Y320506D01* +X232441Y320590D01* +X232427Y320675D01* +X232418Y320761D01* +X232412Y320847D01* +X232410Y320933D01* +X232410Y322852D01* +X234329Y326672D02* +X232410Y329071D01* +X241046Y329071D01* +X241046Y326672D02* +X241046Y331470D01* +X236728Y335816D02* +X236558Y335818D01* +X236388Y335824D01* +X236219Y335834D01* +X236049Y335848D01* +X235880Y335867D01* +X235712Y335889D01* +X235544Y335915D01* +X235377Y335945D01* +X235211Y335980D01* +X235045Y336018D01* +X234880Y336060D01* +X234717Y336106D01* +X234555Y336156D01* +X234393Y336210D01* +X234234Y336267D01* +X234075Y336329D01* +X233918Y336394D01* +X233763Y336463D01* +X233609Y336536D01* +X233533Y336564D01* +X233458Y336596D01* +X233384Y336631D01* +X233312Y336669D01* +X233242Y336711D01* +X233174Y336756D01* +X233108Y336804D01* +X233044Y336855D01* +X232983Y336909D01* +X232924Y336965D01* +X232868Y337025D01* +X232815Y337086D01* +X232765Y337150D01* +X232717Y337217D01* +X232673Y337285D01* +X232632Y337356D01* +X232594Y337428D01* +X232560Y337502D01* +X232529Y337577D01* +X232501Y337654D01* +X232477Y337732D01* +X232457Y337811D01* +X232440Y337891D01* +X232427Y337971D01* +X232417Y338052D01* +X232412Y338133D01* +X232410Y338215D01* +X232412Y338297D01* +X232417Y338378D01* +X232427Y338459D01* +X232440Y338539D01* +X232457Y338619D01* +X232477Y338698D01* +X232501Y338776D01* +X232529Y338853D01* +X232560Y338928D01* +X232594Y339002D01* +X232632Y339074D01* +X232673Y339145D01* +X232717Y339213D01* +X232765Y339280D01* +X232815Y339344D01* +X232868Y339405D01* +X232924Y339465D01* +X232983Y339521D01* +X233044Y339575D01* +X233108Y339626D01* +X233174Y339674D01* +X233242Y339719D01* +X233312Y339761D01* +X233384Y339799D01* +X233458Y339834D01* +X233533Y339866D01* +X233609Y339894D01* +X233763Y339967D01* +X233918Y340036D01* +X234075Y340101D01* +X234234Y340163D01* +X234393Y340220D01* +X234555Y340274D01* +X234717Y340324D01* +X234880Y340370D01* +X235045Y340412D01* +X235211Y340450D01* +X235377Y340485D01* +X235544Y340515D01* +X235712Y340541D01* +X235880Y340563D01* +X236049Y340582D01* +X236219Y340596D01* +X236388Y340606D01* +X236558Y340612D01* +X236728Y340614D01* +X236728Y335816D02* +X236898Y335818D01* +X237068Y335824D01* +X237237Y335834D01* +X237407Y335848D01* +X237576Y335867D01* +X237744Y335889D01* +X237912Y335915D01* +X238079Y335945D01* +X238245Y335980D01* +X238411Y336018D01* +X238576Y336060D01* +X238739Y336106D01* +X238901Y336156D01* +X239063Y336210D01* +X239222Y336267D01* +X239381Y336329D01* +X239538Y336394D01* +X239693Y336463D01* +X239847Y336536D01* +X239923Y336564D01* +X239998Y336596D01* +X240072Y336631D01* +X240144Y336669D01* +X240214Y336711D01* +X240282Y336756D01* +X240348Y336804D01* +X240412Y336855D01* +X240473Y336909D01* +X240532Y336965D01* +X240588Y337025D01* +X240641Y337086D01* +X240691Y337150D01* +X240739Y337217D01* +X240783Y337285D01* +X240824Y337356D01* +X240862Y337428D01* +X240896Y337502D01* +X240927Y337577D01* +X240955Y337654D01* +X240979Y337732D01* +X240999Y337811D01* +X241016Y337891D01* +X241029Y337971D01* +X241039Y338052D01* +X241044Y338133D01* +X241046Y338215D01* +X239847Y339894D02* +X239693Y339967D01* +X239538Y340036D01* +X239381Y340101D01* +X239222Y340163D01* +X239063Y340220D01* +X238901Y340274D01* +X238739Y340324D01* +X238576Y340370D01* +X238411Y340412D01* +X238245Y340450D01* +X238079Y340485D01* +X237912Y340515D01* +X237744Y340541D01* +X237576Y340563D01* +X237407Y340582D01* +X237237Y340596D01* +X237068Y340606D01* +X236898Y340612D01* +X236728Y340614D01* +X239847Y339894D02* +X239923Y339866D01* +X239998Y339834D01* +X240072Y339799D01* +X240144Y339761D01* +X240214Y339719D01* +X240282Y339674D01* +X240348Y339626D01* +X240412Y339575D01* +X240473Y339521D01* +X240532Y339465D01* +X240588Y339405D01* +X240641Y339344D01* +X240691Y339280D01* +X240739Y339213D01* +X240783Y339145D01* +X240824Y339074D01* +X240862Y339002D01* +X240896Y338928D01* +X240927Y338853D01* +X240955Y338776D01* +X240979Y338698D01* +X240999Y338619D01* +X241016Y338539D01* +X241029Y338459D01* +X241039Y338378D01* +X241044Y338297D01* +X241046Y338215D01* +X239127Y336296D02* +X234329Y340134D01* +D19* +X510540Y60960D03* +D14* +X522986Y36807D02* +X531622Y36807D01* +X522986Y36807D02* +X522986Y39206D01* +X522988Y39303D01* +X522994Y39399D01* +X523003Y39495D01* +X523017Y39591D01* +X523034Y39686D01* +X523056Y39780D01* +X523081Y39873D01* +X523109Y39966D01* +X523142Y40057D01* +X523178Y40146D01* +X523218Y40234D01* +X523261Y40321D01* +X523307Y40406D01* +X523357Y40488D01* +X523411Y40569D01* +X523467Y40647D01* +X523527Y40723D01* +X523589Y40797D01* +X523655Y40868D01* +X523723Y40936D01* +X523794Y41002D01* +X523868Y41064D01* +X523944Y41124D01* +X524022Y41180D01* +X524103Y41234D01* +X524186Y41284D01* +X524270Y41330D01* +X524357Y41373D01* +X524445Y41413D01* +X524534Y41449D01* +X524625Y41482D01* +X524718Y41510D01* +X524811Y41535D01* +X524905Y41557D01* +X525000Y41574D01* +X525096Y41588D01* +X525192Y41597D01* +X525288Y41603D01* +X525385Y41605D01* +X529223Y41605D01* +X529320Y41603D01* +X529416Y41597D01* +X529512Y41588D01* +X529608Y41574D01* +X529703Y41557D01* +X529797Y41535D01* +X529890Y41510D01* +X529983Y41482D01* +X530074Y41449D01* +X530163Y41413D01* +X530251Y41373D01* +X530338Y41330D01* +X530423Y41284D01* +X530505Y41234D01* +X530586Y41180D01* +X530664Y41124D01* +X530740Y41064D01* +X530814Y41002D01* +X530885Y40936D01* +X530953Y40868D01* +X531019Y40797D01* +X531081Y40723D01* +X531141Y40647D01* +X531197Y40569D01* +X531251Y40488D01* +X531301Y40406D01* +X531347Y40321D01* +X531390Y40234D01* +X531430Y40146D01* +X531466Y40057D01* +X531499Y39966D01* +X531527Y39873D01* +X531552Y39780D01* +X531574Y39686D01* +X531591Y39591D01* +X531605Y39495D01* +X531614Y39399D01* +X531620Y39303D01* +X531622Y39206D01* +X531622Y36807D01* +X524905Y46256D02* +X522986Y48655D01* +X531622Y48655D01* +X531622Y46256D02* +X531622Y51054D01* +D13* +X180340Y347980D03* +D14* +X197358Y347490D02* +X197358Y345571D01* +X197356Y345485D01* +X197350Y345399D01* +X197341Y345313D01* +X197327Y345228D01* +X197310Y345144D01* +X197289Y345060D01* +X197264Y344978D01* +X197236Y344897D01* +X197204Y344817D01* +X197168Y344738D01* +X197129Y344662D01* +X197086Y344587D01* +X197041Y344514D01* +X196992Y344443D01* +X196939Y344375D01* +X196884Y344308D01* +X196826Y344245D01* +X196765Y344184D01* +X196702Y344126D01* +X196635Y344071D01* +X196567Y344019D01* +X196496Y343969D01* +X196423Y343924D01* +X196348Y343881D01* +X196272Y343842D01* +X196193Y343806D01* +X196113Y343774D01* +X196032Y343746D01* +X195950Y343721D01* +X195866Y343700D01* +X195782Y343683D01* +X195697Y343669D01* +X195611Y343660D01* +X195525Y343654D01* +X195439Y343652D01* +X190641Y343652D01* +X190555Y343654D01* +X190469Y343660D01* +X190383Y343669D01* +X190298Y343683D01* +X190214Y343700D01* +X190130Y343721D01* +X190048Y343746D01* +X189967Y343774D01* +X189887Y343806D01* +X189808Y343842D01* +X189732Y343881D01* +X189657Y343924D01* +X189584Y343969D01* +X189513Y344018D01* +X189445Y344071D01* +X189378Y344126D01* +X189315Y344184D01* +X189254Y344245D01* +X189196Y344308D01* +X189141Y344375D01* +X189089Y344443D01* +X189039Y344514D01* +X188994Y344587D01* +X188951Y344662D01* +X188912Y344738D01* +X188876Y344817D01* +X188844Y344897D01* +X188816Y344978D01* +X188791Y345060D01* +X188770Y345144D01* +X188753Y345228D01* +X188739Y345313D01* +X188730Y345399D01* +X188724Y345485D01* +X188722Y345571D01* +X188722Y347490D01* +X197358Y351310D02* +X197358Y353709D01* +X197356Y353806D01* +X197350Y353902D01* +X197341Y353998D01* +X197327Y354094D01* +X197310Y354189D01* +X197288Y354283D01* +X197263Y354376D01* +X197235Y354469D01* +X197202Y354560D01* +X197166Y354649D01* +X197126Y354737D01* +X197083Y354824D01* +X197037Y354909D01* +X196987Y354991D01* +X196933Y355072D01* +X196877Y355150D01* +X196817Y355226D01* +X196755Y355300D01* +X196689Y355371D01* +X196621Y355439D01* +X196550Y355505D01* +X196476Y355567D01* +X196400Y355627D01* +X196322Y355683D01* +X196241Y355737D01* +X196159Y355787D01* +X196074Y355833D01* +X195987Y355876D01* +X195899Y355916D01* +X195810Y355952D01* +X195719Y355985D01* +X195626Y356013D01* +X195533Y356038D01* +X195439Y356060D01* +X195344Y356077D01* +X195248Y356091D01* +X195152Y356100D01* +X195056Y356106D01* +X194959Y356108D01* +X194862Y356106D01* +X194766Y356100D01* +X194670Y356091D01* +X194574Y356077D01* +X194479Y356060D01* +X194385Y356038D01* +X194292Y356013D01* +X194199Y355985D01* +X194108Y355952D01* +X194019Y355916D01* +X193931Y355876D01* +X193844Y355833D01* +X193760Y355787D01* +X193677Y355737D01* +X193596Y355683D01* +X193518Y355627D01* +X193442Y355567D01* +X193368Y355505D01* +X193297Y355439D01* +X193229Y355371D01* +X193163Y355300D01* +X193101Y355226D01* +X193041Y355150D01* +X192985Y355072D01* +X192931Y354991D01* +X192881Y354909D01* +X192835Y354824D01* +X192792Y354737D01* +X192752Y354649D01* +X192716Y354560D01* +X192683Y354469D01* +X192655Y354376D01* +X192630Y354283D01* +X192608Y354189D01* +X192591Y354094D01* +X192577Y353998D01* +X192568Y353902D01* +X192562Y353806D01* +X192560Y353709D01* +X188722Y354189D02* +X188722Y351310D01* +X188722Y354189D02* +X188724Y354275D01* +X188730Y354361D01* +X188739Y354447D01* +X188753Y354532D01* +X188770Y354616D01* +X188791Y354700D01* +X188816Y354782D01* +X188844Y354863D01* +X188876Y354943D01* +X188912Y355022D01* +X188951Y355098D01* +X188994Y355173D01* +X189039Y355246D01* +X189088Y355317D01* +X189141Y355385D01* +X189196Y355452D01* +X189254Y355515D01* +X189315Y355576D01* +X189378Y355634D01* +X189445Y355689D01* +X189513Y355742D01* +X189584Y355791D01* +X189657Y355836D01* +X189732Y355879D01* +X189808Y355918D01* +X189887Y355954D01* +X189967Y355986D01* +X190048Y356014D01* +X190130Y356039D01* +X190214Y356060D01* +X190298Y356077D01* +X190383Y356091D01* +X190469Y356100D01* +X190555Y356106D01* +X190641Y356108D01* +X190727Y356106D01* +X190813Y356100D01* +X190899Y356091D01* +X190984Y356077D01* +X191068Y356060D01* +X191152Y356039D01* +X191234Y356014D01* +X191315Y355986D01* +X191395Y355954D01* +X191474Y355918D01* +X191550Y355879D01* +X191625Y355836D01* +X191698Y355791D01* +X191769Y355742D01* +X191837Y355689D01* +X191904Y355634D01* +X191967Y355576D01* +X192028Y355515D01* +X192086Y355452D01* +X192141Y355385D01* +X192194Y355317D01* +X192243Y355246D01* +X192288Y355173D01* +X192331Y355098D01* +X192370Y355022D01* +X192406Y354943D01* +X192438Y354863D01* +X192466Y354782D01* +X192491Y354700D01* +X192512Y354616D01* +X192529Y354532D01* +X192543Y354447D01* +X192552Y354361D01* +X192558Y354275D01* +X192560Y354189D01* +X192560Y352270D01* +D18* +X444500Y243840D03* +D14* +X412042Y240538D02* +X412042Y249174D01* +X412042Y240538D02* +X415880Y240538D01* +X424434Y247015D02* +X424432Y247107D01* +X424426Y247198D01* +X424417Y247289D01* +X424403Y247380D01* +X424386Y247470D01* +X424364Y247559D01* +X424339Y247647D01* +X424311Y247734D01* +X424278Y247820D01* +X424242Y247904D01* +X424203Y247987D01* +X424160Y248068D01* +X424113Y248147D01* +X424064Y248224D01* +X424011Y248299D01* +X423955Y248371D01* +X423896Y248441D01* +X423834Y248509D01* +X423769Y248574D01* +X423701Y248636D01* +X423631Y248695D01* +X423559Y248751D01* +X423484Y248804D01* +X423407Y248853D01* +X423328Y248900D01* +X423247Y248943D01* +X423164Y248982D01* +X423080Y249018D01* +X422994Y249051D01* +X422907Y249079D01* +X422819Y249104D01* +X422730Y249126D01* +X422640Y249143D01* +X422549Y249157D01* +X422458Y249166D01* +X422367Y249172D01* +X422275Y249174D01* +X422172Y249172D01* +X422070Y249166D01* +X421968Y249157D01* +X421866Y249144D01* +X421765Y249127D01* +X421664Y249106D01* +X421565Y249082D01* +X421466Y249053D01* +X421369Y249022D01* +X421272Y248986D01* +X421177Y248948D01* +X421084Y248905D01* +X420992Y248859D01* +X420902Y248810D01* +X420814Y248758D01* +X420727Y248702D01* +X420643Y248643D01* +X420562Y248582D01* +X420482Y248517D01* +X420405Y248449D01* +X420330Y248378D01* +X420259Y248305D01* +X420190Y248229D01* +X420123Y248151D01* +X420060Y248070D01* +X420000Y247987D01* +X419943Y247902D01* +X419889Y247815D01* +X419838Y247725D01* +X419791Y247634D01* +X419747Y247542D01* +X419706Y247447D01* +X419669Y247352D01* +X419636Y247255D01* +X423714Y245336D02* +X423781Y245402D01* +X423845Y245471D01* +X423906Y245542D01* +X423964Y245616D01* +X424019Y245692D01* +X424071Y245770D01* +X424120Y245850D01* +X424166Y245932D01* +X424208Y246016D01* +X424247Y246102D01* +X424282Y246189D01* +X424313Y246277D01* +X424341Y246367D01* +X424366Y246457D01* +X424387Y246549D01* +X424404Y246641D01* +X424417Y246734D01* +X424426Y246827D01* +X424432Y246921D01* +X424434Y247015D01* +X423714Y245336D02* +X419636Y240538D01* +X424434Y240538D01* +D20* +X589620Y97200D02* +X589620Y80600D01* +X617118Y97200D02* +X619420Y94898D01* +X619420Y80600D01* +D21* +X623570Y95250D03* +D14* +X573763Y96774D02* +X573763Y90537D01* +X573765Y90440D01* +X573771Y90344D01* +X573780Y90248D01* +X573794Y90152D01* +X573811Y90057D01* +X573833Y89963D01* +X573858Y89870D01* +X573886Y89777D01* +X573919Y89686D01* +X573955Y89597D01* +X573995Y89509D01* +X574038Y89422D01* +X574084Y89338D01* +X574134Y89255D01* +X574188Y89174D01* +X574244Y89096D01* +X574304Y89020D01* +X574366Y88946D01* +X574432Y88875D01* +X574500Y88807D01* +X574571Y88741D01* +X574645Y88679D01* +X574721Y88619D01* +X574799Y88563D01* +X574880Y88509D01* +X574963Y88459D01* +X575047Y88413D01* +X575134Y88370D01* +X575222Y88330D01* +X575311Y88294D01* +X575402Y88261D01* +X575495Y88233D01* +X575588Y88208D01* +X575682Y88186D01* +X575777Y88169D01* +X575873Y88155D01* +X575969Y88146D01* +X576065Y88140D01* +X576162Y88138D01* +X576259Y88140D01* +X576355Y88146D01* +X576451Y88155D01* +X576547Y88169D01* +X576642Y88186D01* +X576736Y88208D01* +X576829Y88233D01* +X576922Y88261D01* +X577013Y88294D01* +X577102Y88330D01* +X577190Y88370D01* +X577277Y88413D01* +X577362Y88459D01* +X577444Y88509D01* +X577525Y88563D01* +X577603Y88619D01* +X577679Y88679D01* +X577753Y88741D01* +X577824Y88807D01* +X577892Y88875D01* +X577958Y88946D01* +X578020Y89020D01* +X578080Y89096D01* +X578136Y89174D01* +X578190Y89255D01* +X578240Y89337D01* +X578286Y89422D01* +X578329Y89509D01* +X578369Y89597D01* +X578405Y89686D01* +X578438Y89777D01* +X578466Y89870D01* +X578491Y89963D01* +X578513Y90057D01* +X578530Y90152D01* +X578544Y90248D01* +X578553Y90344D01* +X578559Y90440D01* +X578561Y90537D01* +X578561Y96774D01* +X583212Y88138D02* +X586091Y88138D01* +X586177Y88140D01* +X586263Y88146D01* +X586349Y88155D01* +X586434Y88169D01* +X586518Y88186D01* +X586602Y88207D01* +X586684Y88232D01* +X586765Y88260D01* +X586845Y88292D01* +X586924Y88328D01* +X587000Y88367D01* +X587075Y88410D01* +X587148Y88455D01* +X587219Y88505D01* +X587287Y88557D01* +X587354Y88612D01* +X587417Y88670D01* +X587478Y88731D01* +X587536Y88794D01* +X587591Y88861D01* +X587644Y88929D01* +X587693Y89000D01* +X587738Y89073D01* +X587781Y89148D01* +X587820Y89224D01* +X587856Y89303D01* +X587888Y89383D01* +X587916Y89464D01* +X587941Y89547D01* +X587962Y89630D01* +X587979Y89714D01* +X587993Y89799D01* +X588002Y89885D01* +X588008Y89971D01* +X588010Y90057D01* +X588010Y91017D01* +X588008Y91103D01* +X588002Y91189D01* +X587993Y91275D01* +X587979Y91360D01* +X587962Y91444D01* +X587941Y91528D01* +X587916Y91610D01* +X587888Y91691D01* +X587856Y91771D01* +X587820Y91850D01* +X587781Y91926D01* +X587738Y92001D01* +X587693Y92074D01* +X587644Y92145D01* +X587591Y92213D01* +X587536Y92280D01* +X587478Y92343D01* +X587417Y92404D01* +X587354Y92462D01* +X587287Y92517D01* +X587219Y92570D01* +X587148Y92619D01* +X587075Y92664D01* +X587000Y92707D01* +X586924Y92746D01* +X586845Y92782D01* +X586765Y92814D01* +X586684Y92842D01* +X586602Y92867D01* +X586518Y92888D01* +X586434Y92905D01* +X586349Y92919D01* +X586263Y92928D01* +X586177Y92934D01* +X586091Y92936D01* +X583212Y92936D01* +X583212Y96774D01* +X588010Y96774D01* +D22* +X657860Y93980D03* +D14* +X666086Y117234D02* +X666086Y125870D01* +X666086Y117234D02* +X669924Y117234D01* +X673680Y123951D02* +X676079Y125870D01* +X676079Y117234D01* +X673680Y117234D02* +X678478Y117234D01* +D17* +X599440Y63500D03* +D14* +X610108Y66802D02* +X610108Y58166D01* +X610108Y66802D02* +X612507Y66802D01* +X612604Y66800D01* +X612700Y66794D01* +X612796Y66785D01* +X612892Y66771D01* +X612987Y66754D01* +X613081Y66732D01* +X613174Y66707D01* +X613267Y66679D01* +X613358Y66646D01* +X613447Y66610D01* +X613535Y66570D01* +X613622Y66527D01* +X613707Y66481D01* +X613789Y66431D01* +X613870Y66377D01* +X613948Y66321D01* +X614024Y66261D01* +X614098Y66199D01* +X614169Y66133D01* +X614237Y66065D01* +X614303Y65994D01* +X614365Y65920D01* +X614425Y65844D01* +X614481Y65766D01* +X614535Y65685D01* +X614585Y65602D01* +X614631Y65518D01* +X614674Y65431D01* +X614714Y65343D01* +X614750Y65254D01* +X614783Y65163D01* +X614811Y65070D01* +X614836Y64977D01* +X614858Y64883D01* +X614875Y64788D01* +X614889Y64692D01* +X614898Y64596D01* +X614904Y64500D01* +X614906Y64403D01* +X614904Y64306D01* +X614898Y64210D01* +X614889Y64114D01* +X614875Y64018D01* +X614858Y63923D01* +X614836Y63829D01* +X614811Y63736D01* +X614783Y63643D01* +X614750Y63552D01* +X614714Y63463D01* +X614674Y63375D01* +X614631Y63288D01* +X614585Y63203D01* +X614535Y63121D01* +X614481Y63040D01* +X614425Y62962D01* +X614365Y62886D01* +X614303Y62812D01* +X614237Y62741D01* +X614169Y62673D01* +X614098Y62607D01* +X614024Y62545D01* +X613948Y62485D01* +X613870Y62429D01* +X613789Y62375D01* +X613707Y62325D01* +X613622Y62279D01* +X613535Y62236D01* +X613447Y62196D01* +X613358Y62160D01* +X613267Y62127D01* +X613174Y62099D01* +X613081Y62074D01* +X612987Y62052D01* +X612892Y62035D01* +X612796Y62021D01* +X612700Y62012D01* +X612604Y62006D01* +X612507Y62004D01* +X610108Y62004D01* +X612987Y62004D02* +X614906Y58166D01* +X619167Y64883D02* +X621566Y66802D01* +X621566Y58166D01* +X619167Y58166D02* +X623965Y58166D01* +X628311Y58166D02* +X631190Y58166D01* +X631276Y58168D01* +X631362Y58174D01* +X631448Y58183D01* +X631533Y58197D01* +X631617Y58214D01* +X631701Y58235D01* +X631783Y58260D01* +X631864Y58288D01* +X631944Y58320D01* +X632023Y58356D01* +X632099Y58395D01* +X632174Y58438D01* +X632247Y58483D01* +X632318Y58533D01* +X632386Y58585D01* +X632453Y58640D01* +X632516Y58698D01* +X632577Y58759D01* +X632635Y58822D01* +X632690Y58889D01* +X632743Y58957D01* +X632792Y59028D01* +X632837Y59101D01* +X632880Y59176D01* +X632919Y59252D01* +X632955Y59331D01* +X632987Y59411D01* +X633015Y59492D01* +X633040Y59575D01* +X633061Y59658D01* +X633078Y59742D01* +X633092Y59827D01* +X633101Y59913D01* +X633107Y59999D01* +X633109Y60085D01* +X633109Y61045D01* +X633107Y61131D01* +X633101Y61217D01* +X633092Y61303D01* +X633078Y61388D01* +X633061Y61472D01* +X633040Y61556D01* +X633015Y61638D01* +X632987Y61719D01* +X632955Y61799D01* +X632919Y61878D01* +X632880Y61954D01* +X632837Y62029D01* +X632792Y62102D01* +X632743Y62173D01* +X632690Y62241D01* +X632635Y62308D01* +X632577Y62371D01* +X632516Y62432D01* +X632453Y62490D01* +X632386Y62545D01* +X632318Y62598D01* +X632247Y62647D01* +X632174Y62692D01* +X632099Y62735D01* +X632023Y62774D01* +X631944Y62810D01* +X631864Y62842D01* +X631783Y62870D01* +X631701Y62895D01* +X631617Y62916D01* +X631533Y62933D01* +X631448Y62947D01* +X631362Y62956D01* +X631276Y62962D01* +X631190Y62964D01* +X628311Y62964D01* +X628311Y66802D01* +X633109Y66802D01* +D13* +X629920Y104140D03* +D14* +X634746Y75202D02* +X634746Y73283D01* +X634744Y73197D01* +X634738Y73111D01* +X634729Y73025D01* +X634715Y72940D01* +X634698Y72856D01* +X634677Y72772D01* +X634652Y72690D01* +X634624Y72609D01* +X634592Y72529D01* +X634556Y72450D01* +X634517Y72374D01* +X634474Y72299D01* +X634429Y72226D01* +X634380Y72155D01* +X634327Y72087D01* +X634272Y72020D01* +X634214Y71957D01* +X634153Y71896D01* +X634090Y71838D01* +X634023Y71783D01* +X633955Y71731D01* +X633884Y71681D01* +X633811Y71636D01* +X633736Y71593D01* +X633660Y71554D01* +X633581Y71518D01* +X633501Y71486D01* +X633420Y71458D01* +X633338Y71433D01* +X633254Y71412D01* +X633170Y71395D01* +X633085Y71381D01* +X632999Y71372D01* +X632913Y71366D01* +X632827Y71364D01* +X628029Y71364D01* +X627943Y71366D01* +X627857Y71372D01* +X627771Y71381D01* +X627686Y71395D01* +X627602Y71412D01* +X627518Y71433D01* +X627436Y71458D01* +X627355Y71486D01* +X627275Y71518D01* +X627196Y71554D01* +X627120Y71593D01* +X627045Y71636D01* +X626972Y71681D01* +X626901Y71730D01* +X626833Y71783D01* +X626766Y71838D01* +X626703Y71896D01* +X626642Y71957D01* +X626584Y72020D01* +X626529Y72087D01* +X626477Y72155D01* +X626427Y72226D01* +X626382Y72299D01* +X626339Y72374D01* +X626300Y72450D01* +X626264Y72529D01* +X626232Y72609D01* +X626204Y72690D01* +X626179Y72772D01* +X626158Y72856D01* +X626141Y72940D01* +X626127Y73025D01* +X626118Y73111D01* +X626112Y73197D01* +X626110Y73283D01* +X626110Y75202D01* +X628029Y79022D02* +X626110Y81421D01* +X634746Y81421D01* +X634746Y79022D02* +X634746Y83820D01* +X634746Y88166D02* +X634746Y91045D01* +X634744Y91131D01* +X634738Y91217D01* +X634729Y91303D01* +X634715Y91388D01* +X634698Y91472D01* +X634677Y91556D01* +X634652Y91638D01* +X634624Y91719D01* +X634592Y91799D01* +X634556Y91878D01* +X634517Y91954D01* +X634474Y92029D01* +X634429Y92102D01* +X634380Y92173D01* +X634327Y92241D01* +X634272Y92308D01* +X634214Y92371D01* +X634153Y92432D01* +X634090Y92490D01* +X634023Y92545D01* +X633955Y92598D01* +X633884Y92647D01* +X633811Y92692D01* +X633736Y92735D01* +X633660Y92774D01* +X633581Y92810D01* +X633501Y92842D01* +X633420Y92870D01* +X633338Y92895D01* +X633254Y92916D01* +X633170Y92933D01* +X633085Y92947D01* +X632999Y92956D01* +X632913Y92962D01* +X632827Y92964D01* +X631867Y92964D01* +X631781Y92962D01* +X631695Y92956D01* +X631609Y92947D01* +X631524Y92933D01* +X631440Y92916D01* +X631356Y92895D01* +X631274Y92870D01* +X631193Y92842D01* +X631113Y92810D01* +X631034Y92774D01* +X630958Y92735D01* +X630883Y92692D01* +X630810Y92647D01* +X630739Y92598D01* +X630671Y92545D01* +X630604Y92490D01* +X630541Y92432D01* +X630480Y92371D01* +X630422Y92308D01* +X630367Y92241D01* +X630315Y92173D01* +X630265Y92102D01* +X630220Y92029D01* +X630177Y91954D01* +X630138Y91878D01* +X630102Y91799D01* +X630070Y91719D01* +X630042Y91638D01* +X630017Y91556D01* +X629996Y91472D01* +X629979Y91388D01* +X629965Y91303D01* +X629956Y91217D01* +X629950Y91131D01* +X629948Y91045D01* +X629948Y88166D01* +X626110Y88166D01* +X626110Y92964D01* +D17* +X617220Y116840D03* +D14* +X630428Y118364D02* +X630428Y127000D01* +X632827Y127000D01* +X632924Y126998D01* +X633020Y126992D01* +X633116Y126983D01* +X633212Y126969D01* +X633307Y126952D01* +X633401Y126930D01* +X633494Y126905D01* +X633587Y126877D01* +X633678Y126844D01* +X633767Y126808D01* +X633855Y126768D01* +X633942Y126725D01* +X634027Y126679D01* +X634109Y126629D01* +X634190Y126575D01* +X634268Y126519D01* +X634344Y126459D01* +X634418Y126397D01* +X634489Y126331D01* +X634557Y126263D01* +X634623Y126192D01* +X634685Y126118D01* +X634745Y126042D01* +X634801Y125964D01* +X634855Y125883D01* +X634905Y125800D01* +X634951Y125716D01* +X634994Y125629D01* +X635034Y125541D01* +X635070Y125452D01* +X635103Y125361D01* +X635131Y125268D01* +X635156Y125175D01* +X635178Y125081D01* +X635195Y124986D01* +X635209Y124890D01* +X635218Y124794D01* +X635224Y124698D01* +X635226Y124601D01* +X635224Y124504D01* +X635218Y124408D01* +X635209Y124312D01* +X635195Y124216D01* +X635178Y124121D01* +X635156Y124027D01* +X635131Y123934D01* +X635103Y123841D01* +X635070Y123750D01* +X635034Y123661D01* +X634994Y123573D01* +X634951Y123486D01* +X634905Y123401D01* +X634855Y123319D01* +X634801Y123238D01* +X634745Y123160D01* +X634685Y123084D01* +X634623Y123010D01* +X634557Y122939D01* +X634489Y122871D01* +X634418Y122805D01* +X634344Y122743D01* +X634268Y122683D01* +X634190Y122627D01* +X634109Y122573D01* +X634027Y122523D01* +X633942Y122477D01* +X633855Y122434D01* +X633767Y122394D01* +X633678Y122358D01* +X633587Y122325D01* +X633494Y122297D01* +X633401Y122272D01* +X633307Y122250D01* +X633212Y122233D01* +X633116Y122219D01* +X633020Y122210D01* +X632924Y122204D01* +X632827Y122202D01* +X630428Y122202D01* +X633307Y122202D02* +X635226Y118364D01* +X642126Y127000D02* +X642218Y126998D01* +X642309Y126992D01* +X642400Y126983D01* +X642491Y126969D01* +X642581Y126952D01* +X642670Y126930D01* +X642758Y126905D01* +X642845Y126877D01* +X642931Y126844D01* +X643015Y126808D01* +X643098Y126769D01* +X643179Y126726D01* +X643258Y126679D01* +X643335Y126630D01* +X643410Y126577D01* +X643482Y126521D01* +X643552Y126462D01* +X643620Y126400D01* +X643685Y126335D01* +X643747Y126267D01* +X643806Y126197D01* +X643862Y126125D01* +X643915Y126050D01* +X643964Y125973D01* +X644011Y125894D01* +X644054Y125813D01* +X644093Y125730D01* +X644129Y125646D01* +X644162Y125560D01* +X644190Y125473D01* +X644215Y125385D01* +X644237Y125296D01* +X644254Y125206D01* +X644268Y125115D01* +X644277Y125024D01* +X644283Y124933D01* +X644285Y124841D01* +X642126Y127000D02* +X642023Y126998D01* +X641921Y126992D01* +X641819Y126983D01* +X641717Y126970D01* +X641616Y126953D01* +X641515Y126932D01* +X641416Y126908D01* +X641317Y126879D01* +X641220Y126848D01* +X641123Y126812D01* +X641028Y126774D01* +X640935Y126731D01* +X640843Y126685D01* +X640753Y126636D01* +X640665Y126584D01* +X640578Y126528D01* +X640494Y126469D01* +X640413Y126408D01* +X640333Y126343D01* +X640256Y126275D01* +X640181Y126204D01* +X640110Y126131D01* +X640041Y126055D01* +X639974Y125977D01* +X639911Y125896D01* +X639851Y125813D01* +X639794Y125728D01* +X639740Y125641D01* +X639689Y125551D01* +X639642Y125460D01* +X639598Y125368D01* +X639557Y125273D01* +X639520Y125178D01* +X639487Y125081D01* +X643565Y123162D02* +X643632Y123228D01* +X643696Y123297D01* +X643757Y123368D01* +X643815Y123442D01* +X643870Y123518D01* +X643922Y123596D01* +X643971Y123676D01* +X644017Y123758D01* +X644059Y123842D01* +X644098Y123928D01* +X644133Y124015D01* +X644164Y124103D01* +X644192Y124193D01* +X644217Y124283D01* +X644238Y124375D01* +X644255Y124467D01* +X644268Y124560D01* +X644277Y124653D01* +X644283Y124747D01* +X644285Y124841D01* +X643565Y123162D02* +X639487Y118364D01* +X644285Y118364D01* +X648631Y122682D02* +X648633Y122852D01* +X648639Y123022D01* +X648649Y123191D01* +X648663Y123361D01* +X648682Y123530D01* +X648704Y123698D01* +X648730Y123866D01* +X648760Y124033D01* +X648795Y124199D01* +X648833Y124365D01* +X648875Y124530D01* +X648921Y124693D01* +X648971Y124856D01* +X649025Y125017D01* +X649082Y125177D01* +X649144Y125335D01* +X649209Y125492D01* +X649278Y125647D01* +X649351Y125801D01* +X649379Y125877D01* +X649411Y125952D01* +X649446Y126026D01* +X649484Y126098D01* +X649526Y126168D01* +X649571Y126236D01* +X649619Y126302D01* +X649670Y126366D01* +X649724Y126427D01* +X649780Y126486D01* +X649840Y126542D01* +X649901Y126595D01* +X649965Y126645D01* +X650032Y126693D01* +X650100Y126737D01* +X650171Y126778D01* +X650243Y126816D01* +X650317Y126850D01* +X650392Y126881D01* +X650469Y126909D01* +X650547Y126933D01* +X650626Y126953D01* +X650706Y126970D01* +X650786Y126983D01* +X650867Y126993D01* +X650948Y126998D01* +X651030Y127000D01* +X651112Y126998D01* +X651193Y126993D01* +X651274Y126983D01* +X651354Y126970D01* +X651434Y126953D01* +X651513Y126933D01* +X651591Y126909D01* +X651668Y126881D01* +X651743Y126850D01* +X651817Y126816D01* +X651889Y126778D01* +X651960Y126737D01* +X652028Y126693D01* +X652095Y126645D01* +X652159Y126595D01* +X652220Y126542D01* +X652280Y126486D01* +X652336Y126427D01* +X652390Y126366D01* +X652441Y126302D01* +X652489Y126236D01* +X652534Y126168D01* +X652576Y126098D01* +X652614Y126026D01* +X652649Y125952D01* +X652681Y125877D01* +X652709Y125801D01* +X652782Y125647D01* +X652851Y125492D01* +X652916Y125335D01* +X652978Y125177D01* +X653035Y125017D01* +X653089Y124856D01* +X653139Y124693D01* +X653185Y124530D01* +X653227Y124365D01* +X653265Y124199D01* +X653300Y124033D01* +X653330Y123866D01* +X653356Y123698D01* +X653378Y123530D01* +X653397Y123361D01* +X653411Y123191D01* +X653421Y123022D01* +X653427Y122852D01* +X653429Y122682D01* +X648631Y122682D02* +X648633Y122512D01* +X648639Y122342D01* +X648649Y122173D01* +X648663Y122003D01* +X648682Y121834D01* +X648704Y121666D01* +X648730Y121498D01* +X648760Y121331D01* +X648795Y121165D01* +X648833Y120999D01* +X648875Y120834D01* +X648921Y120671D01* +X648971Y120509D01* +X649025Y120347D01* +X649082Y120188D01* +X649144Y120029D01* +X649209Y119872D01* +X649278Y119717D01* +X649351Y119563D01* +X649379Y119487D01* +X649411Y119412D01* +X649446Y119338D01* +X649484Y119266D01* +X649526Y119196D01* +X649571Y119128D01* +X649619Y119062D01* +X649670Y118998D01* +X649724Y118937D01* +X649780Y118878D01* +X649840Y118822D01* +X649901Y118769D01* +X649965Y118719D01* +X650032Y118671D01* +X650100Y118627D01* +X650171Y118586D01* +X650243Y118548D01* +X650317Y118514D01* +X650392Y118483D01* +X650469Y118455D01* +X650547Y118431D01* +X650626Y118411D01* +X650706Y118394D01* +X650786Y118381D01* +X650867Y118371D01* +X650948Y118366D01* +X651030Y118364D01* +X652709Y119563D02* +X652782Y119717D01* +X652851Y119872D01* +X652916Y120029D01* +X652978Y120188D01* +X653035Y120347D01* +X653089Y120509D01* +X653139Y120671D01* +X653185Y120834D01* +X653227Y120999D01* +X653265Y121165D01* +X653300Y121331D01* +X653330Y121498D01* +X653356Y121666D01* +X653378Y121834D01* +X653397Y122003D01* +X653411Y122173D01* +X653421Y122342D01* +X653427Y122512D01* +X653429Y122682D01* +X652709Y119563D02* +X652681Y119487D01* +X652649Y119412D01* +X652614Y119338D01* +X652576Y119266D01* +X652534Y119196D01* +X652489Y119128D01* +X652441Y119062D01* +X652390Y118998D01* +X652336Y118937D01* +X652280Y118878D01* +X652220Y118822D01* +X652159Y118769D01* +X652095Y118719D01* +X652028Y118671D01* +X651960Y118627D01* +X651889Y118586D01* +X651817Y118548D01* +X651743Y118514D01* +X651668Y118483D01* +X651591Y118455D01* +X651513Y118431D01* +X651434Y118411D01* +X651354Y118394D01* +X651274Y118381D01* +X651193Y118371D01* +X651112Y118366D01* +X651030Y118364D01* +X649111Y120283D02* +X652949Y125081D01* +D17* +X591820Y116840D03* +D14* +X563993Y111506D02* +X563993Y102870D01* +X563993Y111506D02* +X566392Y111506D01* +X566489Y111504D01* +X566585Y111498D01* +X566681Y111489D01* +X566777Y111475D01* +X566872Y111458D01* +X566966Y111436D01* +X567059Y111411D01* +X567152Y111383D01* +X567243Y111350D01* +X567332Y111314D01* +X567420Y111274D01* +X567507Y111231D01* +X567592Y111185D01* +X567674Y111135D01* +X567755Y111081D01* +X567833Y111025D01* +X567909Y110965D01* +X567983Y110903D01* +X568054Y110837D01* +X568122Y110769D01* +X568188Y110698D01* +X568250Y110624D01* +X568310Y110548D01* +X568366Y110470D01* +X568420Y110389D01* +X568470Y110306D01* +X568516Y110222D01* +X568559Y110135D01* +X568599Y110047D01* +X568635Y109958D01* +X568668Y109867D01* +X568696Y109774D01* +X568721Y109681D01* +X568743Y109587D01* +X568760Y109492D01* +X568774Y109396D01* +X568783Y109300D01* +X568789Y109204D01* +X568791Y109107D01* +X568789Y109010D01* +X568783Y108914D01* +X568774Y108818D01* +X568760Y108722D01* +X568743Y108627D01* +X568721Y108533D01* +X568696Y108440D01* +X568668Y108347D01* +X568635Y108256D01* +X568599Y108167D01* +X568559Y108079D01* +X568516Y107992D01* +X568470Y107907D01* +X568420Y107825D01* +X568366Y107744D01* +X568310Y107666D01* +X568250Y107590D01* +X568188Y107516D01* +X568122Y107445D01* +X568054Y107377D01* +X567983Y107311D01* +X567909Y107249D01* +X567833Y107189D01* +X567755Y107133D01* +X567674Y107079D01* +X567592Y107029D01* +X567507Y106983D01* +X567420Y106940D01* +X567332Y106900D01* +X567243Y106864D01* +X567152Y106831D01* +X567059Y106803D01* +X566966Y106778D01* +X566872Y106756D01* +X566777Y106739D01* +X566681Y106725D01* +X566585Y106716D01* +X566489Y106710D01* +X566392Y106708D01* +X563993Y106708D01* +X566872Y106708D02* +X568791Y102870D01* +X575691Y111506D02* +X575783Y111504D01* +X575874Y111498D01* +X575965Y111489D01* +X576056Y111475D01* +X576146Y111458D01* +X576235Y111436D01* +X576323Y111411D01* +X576410Y111383D01* +X576496Y111350D01* +X576580Y111314D01* +X576663Y111275D01* +X576744Y111232D01* +X576823Y111185D01* +X576900Y111136D01* +X576975Y111083D01* +X577047Y111027D01* +X577117Y110968D01* +X577185Y110906D01* +X577250Y110841D01* +X577312Y110773D01* +X577371Y110703D01* +X577427Y110631D01* +X577480Y110556D01* +X577529Y110479D01* +X577576Y110400D01* +X577619Y110319D01* +X577658Y110236D01* +X577694Y110152D01* +X577727Y110066D01* +X577755Y109979D01* +X577780Y109891D01* +X577802Y109802D01* +X577819Y109712D01* +X577833Y109621D01* +X577842Y109530D01* +X577848Y109439D01* +X577850Y109347D01* +X575691Y111506D02* +X575588Y111504D01* +X575486Y111498D01* +X575384Y111489D01* +X575282Y111476D01* +X575181Y111459D01* +X575080Y111438D01* +X574981Y111414D01* +X574882Y111385D01* +X574785Y111354D01* +X574688Y111318D01* +X574593Y111280D01* +X574500Y111237D01* +X574408Y111191D01* +X574318Y111142D01* +X574230Y111090D01* +X574143Y111034D01* +X574059Y110975D01* +X573978Y110914D01* +X573898Y110849D01* +X573821Y110781D01* +X573746Y110710D01* +X573675Y110637D01* +X573606Y110561D01* +X573539Y110483D01* +X573476Y110402D01* +X573416Y110319D01* +X573359Y110234D01* +X573305Y110147D01* +X573254Y110057D01* +X573207Y109966D01* +X573163Y109874D01* +X573122Y109779D01* +X573085Y109684D01* +X573052Y109587D01* +X577130Y107668D02* +X577197Y107734D01* +X577261Y107803D01* +X577322Y107874D01* +X577380Y107948D01* +X577435Y108024D01* +X577487Y108102D01* +X577536Y108182D01* +X577582Y108264D01* +X577624Y108348D01* +X577663Y108434D01* +X577698Y108521D01* +X577729Y108609D01* +X577757Y108699D01* +X577782Y108789D01* +X577803Y108881D01* +X577820Y108973D01* +X577833Y109066D01* +X577842Y109159D01* +X577848Y109253D01* +X577850Y109347D01* +X577130Y107668D02* +X573052Y102870D01* +X577850Y102870D01* +X582196Y109587D02* +X584595Y111506D01* +X584595Y102870D01* +X582196Y102870D02* +X586994Y102870D01* +D23* +X628400Y47960D02* +X632400Y47960D01* +X628400Y47960D02* +X628400Y68880D01* +X632400Y68880D01* +D24* +X652780Y58420D03* +D14* +X646164Y48400D02* +X646164Y39764D01* +X646164Y48400D02* +X648563Y48400D01* +X648660Y48398D01* +X648756Y48392D01* +X648852Y48383D01* +X648948Y48369D01* +X649043Y48352D01* +X649137Y48330D01* +X649230Y48305D01* +X649323Y48277D01* +X649414Y48244D01* +X649503Y48208D01* +X649591Y48168D01* +X649678Y48125D01* +X649763Y48079D01* +X649845Y48029D01* +X649926Y47975D01* +X650004Y47919D01* +X650080Y47859D01* +X650154Y47797D01* +X650225Y47731D01* +X650293Y47663D01* +X650359Y47592D01* +X650421Y47518D01* +X650481Y47442D01* +X650537Y47364D01* +X650591Y47283D01* +X650641Y47201D01* +X650687Y47116D01* +X650730Y47029D01* +X650770Y46941D01* +X650806Y46852D01* +X650839Y46761D01* +X650867Y46668D01* +X650892Y46575D01* +X650914Y46481D01* +X650931Y46386D01* +X650945Y46290D01* +X650954Y46194D01* +X650960Y46098D01* +X650962Y46001D01* +X650962Y42163D01* +X650960Y42066D01* +X650954Y41970D01* +X650945Y41874D01* +X650931Y41778D01* +X650914Y41683D01* +X650892Y41589D01* +X650867Y41496D01* +X650839Y41403D01* +X650806Y41312D01* +X650770Y41223D01* +X650730Y41135D01* +X650687Y41048D01* +X650641Y40963D01* +X650591Y40881D01* +X650537Y40800D01* +X650481Y40722D01* +X650421Y40646D01* +X650359Y40572D01* +X650293Y40501D01* +X650225Y40433D01* +X650154Y40367D01* +X650080Y40305D01* +X650004Y40245D01* +X649926Y40189D01* +X649845Y40135D01* +X649763Y40085D01* +X649678Y40039D01* +X649591Y39996D01* +X649503Y39956D01* +X649414Y39920D01* +X649323Y39887D01* +X649230Y39859D01* +X649137Y39834D01* +X649043Y39812D01* +X648948Y39795D01* +X648852Y39781D01* +X648756Y39772D01* +X648660Y39766D01* +X648563Y39764D01* +X646164Y39764D01* +X658252Y48400D02* +X658344Y48398D01* +X658435Y48392D01* +X658526Y48383D01* +X658617Y48369D01* +X658707Y48352D01* +X658796Y48330D01* +X658884Y48305D01* +X658971Y48277D01* +X659057Y48244D01* +X659141Y48208D01* +X659224Y48169D01* +X659305Y48126D01* +X659384Y48079D01* +X659461Y48030D01* +X659536Y47977D01* +X659608Y47921D01* +X659678Y47862D01* +X659746Y47800D01* +X659811Y47735D01* +X659873Y47667D01* +X659932Y47597D01* +X659988Y47525D01* +X660041Y47450D01* +X660090Y47373D01* +X660137Y47294D01* +X660180Y47213D01* +X660219Y47130D01* +X660255Y47046D01* +X660288Y46960D01* +X660316Y46873D01* +X660341Y46785D01* +X660363Y46696D01* +X660380Y46606D01* +X660394Y46515D01* +X660403Y46424D01* +X660409Y46333D01* +X660411Y46241D01* +X658252Y48400D02* +X658149Y48398D01* +X658047Y48392D01* +X657945Y48383D01* +X657843Y48370D01* +X657742Y48353D01* +X657641Y48332D01* +X657542Y48308D01* +X657443Y48279D01* +X657346Y48248D01* +X657249Y48212D01* +X657154Y48174D01* +X657061Y48131D01* +X656969Y48085D01* +X656879Y48036D01* +X656791Y47984D01* +X656704Y47928D01* +X656620Y47869D01* +X656539Y47808D01* +X656459Y47743D01* +X656382Y47675D01* +X656307Y47604D01* +X656236Y47531D01* +X656167Y47455D01* +X656100Y47377D01* +X656037Y47296D01* +X655977Y47213D01* +X655920Y47128D01* +X655866Y47041D01* +X655815Y46951D01* +X655768Y46860D01* +X655724Y46768D01* +X655683Y46673D01* +X655646Y46578D01* +X655613Y46481D01* +X659691Y44562D02* +X659758Y44628D01* +X659822Y44697D01* +X659883Y44768D01* +X659941Y44842D01* +X659996Y44918D01* +X660048Y44996D01* +X660097Y45076D01* +X660143Y45158D01* +X660185Y45242D01* +X660224Y45328D01* +X660259Y45415D01* +X660290Y45503D01* +X660318Y45593D01* +X660343Y45683D01* +X660364Y45775D01* +X660381Y45867D01* +X660394Y45960D01* +X660403Y46053D01* +X660409Y46147D01* +X660411Y46241D01* +X659691Y44562D02* +X655613Y39764D01* +X660411Y39764D01* +D17* +X543560Y116840D03* +D14* +X552845Y121666D02* +X554764Y121666D01* +X552845Y121666D02* +X552759Y121668D01* +X552673Y121674D01* +X552587Y121683D01* +X552502Y121697D01* +X552418Y121714D01* +X552334Y121735D01* +X552252Y121760D01* +X552171Y121788D01* +X552091Y121820D01* +X552012Y121856D01* +X551936Y121895D01* +X551861Y121938D01* +X551788Y121983D01* +X551717Y122032D01* +X551649Y122085D01* +X551582Y122140D01* +X551519Y122198D01* +X551458Y122259D01* +X551400Y122322D01* +X551345Y122389D01* +X551292Y122457D01* +X551243Y122528D01* +X551198Y122601D01* +X551155Y122676D01* +X551116Y122752D01* +X551080Y122831D01* +X551048Y122911D01* +X551020Y122992D01* +X550995Y123074D01* +X550974Y123158D01* +X550957Y123242D01* +X550943Y123327D01* +X550934Y123413D01* +X550928Y123499D01* +X550926Y123585D01* +X550926Y128383D01* +X550928Y128469D01* +X550934Y128555D01* +X550943Y128641D01* +X550957Y128726D01* +X550974Y128810D01* +X550995Y128894D01* +X551020Y128976D01* +X551048Y129057D01* +X551080Y129137D01* +X551116Y129216D01* +X551155Y129292D01* +X551198Y129367D01* +X551243Y129440D01* +X551292Y129511D01* +X551345Y129579D01* +X551400Y129646D01* +X551458Y129709D01* +X551519Y129770D01* +X551582Y129828D01* +X551649Y129883D01* +X551717Y129935D01* +X551788Y129985D01* +X551861Y130030D01* +X551936Y130073D01* +X552012Y130112D01* +X552091Y130148D01* +X552171Y130180D01* +X552252Y130208D01* +X552334Y130233D01* +X552418Y130254D01* +X552502Y130271D01* +X552587Y130285D01* +X552673Y130294D01* +X552759Y130300D01* +X552845Y130302D01* +X554764Y130302D01* +X558584Y128383D02* +X560983Y130302D01* +X560983Y121666D01* +X558584Y121666D02* +X563382Y121666D01* +X567728Y123585D02* +X569647Y130302D01* +X567728Y123585D02* +X572526Y123585D01* +X571087Y125504D02* +X571087Y121666D01* +D18* +X551180Y63500D03* +D14* +X543324Y46228D02* +X541405Y46228D01* +X541319Y46230D01* +X541233Y46236D01* +X541147Y46245D01* +X541062Y46259D01* +X540978Y46276D01* +X540894Y46297D01* +X540812Y46322D01* +X540731Y46350D01* +X540651Y46382D01* +X540572Y46418D01* +X540496Y46457D01* +X540421Y46500D01* +X540348Y46545D01* +X540277Y46594D01* +X540209Y46647D01* +X540142Y46702D01* +X540079Y46760D01* +X540018Y46821D01* +X539960Y46884D01* +X539905Y46951D01* +X539852Y47019D01* +X539803Y47090D01* +X539758Y47163D01* +X539715Y47238D01* +X539676Y47314D01* +X539640Y47393D01* +X539608Y47473D01* +X539580Y47554D01* +X539555Y47636D01* +X539534Y47720D01* +X539517Y47804D01* +X539503Y47889D01* +X539494Y47975D01* +X539488Y48061D01* +X539486Y48147D01* +X539486Y52945D01* +X539488Y53031D01* +X539494Y53117D01* +X539503Y53203D01* +X539517Y53288D01* +X539534Y53372D01* +X539555Y53456D01* +X539580Y53538D01* +X539608Y53619D01* +X539640Y53699D01* +X539676Y53778D01* +X539715Y53854D01* +X539758Y53929D01* +X539803Y54002D01* +X539852Y54073D01* +X539905Y54141D01* +X539960Y54208D01* +X540018Y54271D01* +X540079Y54332D01* +X540142Y54390D01* +X540209Y54445D01* +X540277Y54497D01* +X540348Y54547D01* +X540421Y54592D01* +X540496Y54635D01* +X540572Y54674D01* +X540651Y54710D01* +X540731Y54742D01* +X540812Y54770D01* +X540894Y54795D01* +X540978Y54816D01* +X541062Y54833D01* +X541147Y54847D01* +X541233Y54856D01* +X541319Y54862D01* +X541405Y54864D01* +X543324Y54864D01* +X547144Y52945D02* +X549543Y54864D01* +X549543Y46228D01* +X547144Y46228D02* +X551942Y46228D01* +X558927Y54864D02* +X559019Y54862D01* +X559110Y54856D01* +X559201Y54847D01* +X559292Y54833D01* +X559382Y54816D01* +X559471Y54794D01* +X559559Y54769D01* +X559646Y54741D01* +X559732Y54708D01* +X559816Y54672D01* +X559899Y54633D01* +X559980Y54590D01* +X560059Y54543D01* +X560136Y54494D01* +X560211Y54441D01* +X560283Y54385D01* +X560353Y54326D01* +X560421Y54264D01* +X560486Y54199D01* +X560548Y54131D01* +X560607Y54061D01* +X560663Y53989D01* +X560716Y53914D01* +X560765Y53837D01* +X560812Y53758D01* +X560855Y53677D01* +X560894Y53594D01* +X560930Y53510D01* +X560963Y53424D01* +X560991Y53337D01* +X561016Y53249D01* +X561038Y53160D01* +X561055Y53070D01* +X561069Y52979D01* +X561078Y52888D01* +X561084Y52797D01* +X561086Y52705D01* +X558927Y54864D02* +X558824Y54862D01* +X558722Y54856D01* +X558620Y54847D01* +X558518Y54834D01* +X558417Y54817D01* +X558316Y54796D01* +X558217Y54772D01* +X558118Y54743D01* +X558021Y54712D01* +X557924Y54676D01* +X557829Y54638D01* +X557736Y54595D01* +X557644Y54549D01* +X557554Y54500D01* +X557466Y54448D01* +X557379Y54392D01* +X557295Y54333D01* +X557214Y54272D01* +X557134Y54207D01* +X557057Y54139D01* +X556982Y54068D01* +X556911Y53995D01* +X556842Y53919D01* +X556775Y53841D01* +X556712Y53760D01* +X556652Y53677D01* +X556595Y53592D01* +X556541Y53505D01* +X556490Y53415D01* +X556443Y53324D01* +X556399Y53232D01* +X556358Y53137D01* +X556321Y53042D01* +X556288Y52945D01* +X560366Y51026D02* +X560433Y51092D01* +X560497Y51161D01* +X560558Y51232D01* +X560616Y51306D01* +X560671Y51382D01* +X560723Y51460D01* +X560772Y51540D01* +X560818Y51622D01* +X560860Y51706D01* +X560899Y51792D01* +X560934Y51879D01* +X560965Y51967D01* +X560993Y52057D01* +X561018Y52147D01* +X561039Y52239D01* +X561056Y52331D01* +X561069Y52424D01* +X561078Y52517D01* +X561084Y52611D01* +X561086Y52705D01* +X560366Y51026D02* +X556288Y46228D01* +X561086Y46228D01* +D20* +X605000Y130020D02* +X605000Y190020D01* +X665000Y190020D02* +X665000Y130020D01* +X665000Y190020D02* +X605000Y190020D01* +X605000Y130020D02* +X665000Y130020D01* +D25* +X635000Y160020D03* +D14* +X608641Y193782D02* +X608727Y193784D01* +X608813Y193790D01* +X608899Y193799D01* +X608984Y193813D01* +X609068Y193830D01* +X609152Y193851D01* +X609234Y193876D01* +X609315Y193904D01* +X609395Y193936D01* +X609474Y193972D01* +X609550Y194011D01* +X609625Y194054D01* +X609698Y194099D01* +X609769Y194149D01* +X609837Y194201D01* +X609904Y194256D01* +X609967Y194314D01* +X610028Y194375D01* +X610086Y194438D01* +X610141Y194505D01* +X610194Y194573D01* +X610243Y194644D01* +X610288Y194717D01* +X610331Y194792D01* +X610370Y194868D01* +X610406Y194947D01* +X610438Y195027D01* +X610466Y195108D01* +X610491Y195190D01* +X610512Y195274D01* +X610529Y195358D01* +X610543Y195443D01* +X610552Y195529D01* +X610558Y195615D01* +X610560Y195701D01* +X608641Y193782D02* +X608518Y193784D01* +X608395Y193789D01* +X608272Y193799D01* +X608150Y193812D01* +X608028Y193829D01* +X607906Y193849D01* +X607786Y193873D01* +X607666Y193901D01* +X607547Y193932D01* +X607429Y193967D01* +X607312Y194006D01* +X607196Y194048D01* +X607082Y194094D01* +X606969Y194143D01* +X606858Y194195D01* +X606748Y194251D01* +X606640Y194310D01* +X606534Y194373D01* +X606429Y194438D01* +X606327Y194507D01* +X606227Y194579D01* +X606130Y194654D01* +X606034Y194731D01* +X605941Y194812D01* +X605850Y194895D01* +X605762Y194981D01* +X606002Y200499D02* +X606004Y200585D01* +X606010Y200671D01* +X606019Y200757D01* +X606033Y200842D01* +X606050Y200926D01* +X606071Y201010D01* +X606096Y201092D01* +X606124Y201173D01* +X606156Y201253D01* +X606192Y201332D01* +X606231Y201408D01* +X606274Y201483D01* +X606319Y201556D01* +X606368Y201627D01* +X606421Y201695D01* +X606476Y201762D01* +X606534Y201825D01* +X606595Y201886D01* +X606658Y201944D01* +X606725Y201999D01* +X606793Y202052D01* +X606864Y202101D01* +X606937Y202146D01* +X607012Y202189D01* +X607088Y202228D01* +X607167Y202264D01* +X607247Y202296D01* +X607328Y202324D01* +X607410Y202349D01* +X607494Y202370D01* +X607578Y202387D01* +X607663Y202401D01* +X607749Y202410D01* +X607835Y202416D01* +X607921Y202418D01* +X608037Y202416D01* +X608152Y202411D01* +X608268Y202401D01* +X608383Y202388D01* +X608497Y202372D01* +X608611Y202351D01* +X608725Y202327D01* +X608837Y202299D01* +X608948Y202268D01* +X609059Y202233D01* +X609168Y202195D01* +X609276Y202153D01* +X609382Y202108D01* +X609488Y202059D01* +X609591Y202007D01* +X609693Y201952D01* +X609792Y201893D01* +X609890Y201831D01* +X609986Y201766D01* +X610080Y201698D01* +X606961Y198820D02* +X606887Y198866D01* +X606814Y198916D01* +X606744Y198969D01* +X606676Y199025D01* +X606611Y199084D01* +X606548Y199146D01* +X606489Y199211D01* +X606432Y199278D01* +X606378Y199348D01* +X606328Y199420D01* +X606281Y199494D01* +X606237Y199570D01* +X606197Y199649D01* +X606161Y199729D01* +X606128Y199810D01* +X606099Y199893D01* +X606073Y199978D01* +X606051Y200063D01* +X606034Y200149D01* +X606020Y200236D01* +X606010Y200323D01* +X606004Y200411D01* +X606002Y200499D01* +X609601Y197380D02* +X609675Y197334D01* +X609748Y197284D01* +X609818Y197231D01* +X609886Y197175D01* +X609951Y197116D01* +X610014Y197054D01* +X610073Y196989D01* +X610130Y196922D01* +X610184Y196852D01* +X610234Y196780D01* +X610281Y196706D01* +X610325Y196630D01* +X610365Y196551D01* +X610401Y196471D01* +X610434Y196390D01* +X610463Y196307D01* +X610489Y196222D01* +X610511Y196137D01* +X610528Y196051D01* +X610542Y195964D01* +X610552Y195877D01* +X610558Y195789D01* +X610560Y195701D01* +X609600Y197380D02* +X606961Y198820D01* +X617240Y202418D02* +X617332Y202416D01* +X617423Y202410D01* +X617514Y202401D01* +X617605Y202387D01* +X617695Y202370D01* +X617784Y202348D01* +X617872Y202323D01* +X617959Y202295D01* +X618045Y202262D01* +X618129Y202226D01* +X618212Y202187D01* +X618293Y202144D01* +X618372Y202097D01* +X618449Y202048D01* +X618524Y201995D01* +X618596Y201939D01* +X618666Y201880D01* +X618734Y201818D01* +X618799Y201753D01* +X618861Y201685D01* +X618920Y201615D01* +X618976Y201543D01* +X619029Y201468D01* +X619078Y201391D01* +X619125Y201312D01* +X619168Y201231D01* +X619207Y201148D01* +X619243Y201064D01* +X619276Y200978D01* +X619304Y200891D01* +X619329Y200803D01* +X619351Y200714D01* +X619368Y200624D01* +X619382Y200533D01* +X619391Y200442D01* +X619397Y200351D01* +X619399Y200259D01* +X617240Y202418D02* +X617137Y202416D01* +X617035Y202410D01* +X616933Y202401D01* +X616831Y202388D01* +X616730Y202371D01* +X616629Y202350D01* +X616530Y202326D01* +X616431Y202297D01* +X616334Y202266D01* +X616237Y202230D01* +X616142Y202192D01* +X616049Y202149D01* +X615957Y202103D01* +X615867Y202054D01* +X615779Y202002D01* +X615692Y201946D01* +X615608Y201887D01* +X615527Y201826D01* +X615447Y201761D01* +X615370Y201693D01* +X615295Y201622D01* +X615224Y201549D01* +X615155Y201473D01* +X615088Y201395D01* +X615025Y201314D01* +X614965Y201231D01* +X614908Y201146D01* +X614854Y201059D01* +X614803Y200969D01* +X614756Y200878D01* +X614712Y200786D01* +X614671Y200691D01* +X614634Y200596D01* +X614601Y200499D01* +X618679Y198580D02* +X618746Y198646D01* +X618810Y198715D01* +X618871Y198786D01* +X618929Y198860D01* +X618984Y198936D01* +X619036Y199014D01* +X619085Y199094D01* +X619131Y199176D01* +X619173Y199260D01* +X619212Y199346D01* +X619247Y199433D01* +X619278Y199521D01* +X619306Y199611D01* +X619331Y199701D01* +X619352Y199793D01* +X619369Y199885D01* +X619382Y199978D01* +X619391Y200071D01* +X619397Y200165D01* +X619399Y200259D01* +X618679Y198580D02* +X614601Y193782D01* +X619399Y193782D01* +D20* +X884400Y221460D02* +X944400Y221460D01* +X944400Y281460D02* +X884400Y281460D01* +X884400Y221460D01* +X944400Y221460D02* +X944400Y281460D01* +D25* +X914400Y251460D03* +D14* +X908361Y287762D02* +X908447Y287764D01* +X908533Y287770D01* +X908619Y287779D01* +X908704Y287793D01* +X908788Y287810D01* +X908872Y287831D01* +X908954Y287856D01* +X909035Y287884D01* +X909115Y287916D01* +X909194Y287952D01* +X909270Y287991D01* +X909345Y288034D01* +X909418Y288079D01* +X909489Y288129D01* +X909557Y288181D01* +X909624Y288236D01* +X909687Y288294D01* +X909748Y288355D01* +X909806Y288418D01* +X909861Y288485D01* +X909914Y288553D01* +X909963Y288624D01* +X910008Y288697D01* +X910051Y288772D01* +X910090Y288848D01* +X910126Y288927D01* +X910158Y289007D01* +X910186Y289088D01* +X910211Y289170D01* +X910232Y289254D01* +X910249Y289338D01* +X910263Y289423D01* +X910272Y289509D01* +X910278Y289595D01* +X910280Y289681D01* +X908361Y287762D02* +X908238Y287764D01* +X908115Y287769D01* +X907992Y287779D01* +X907870Y287792D01* +X907748Y287809D01* +X907626Y287829D01* +X907506Y287853D01* +X907386Y287881D01* +X907267Y287912D01* +X907149Y287947D01* +X907032Y287986D01* +X906916Y288028D01* +X906802Y288074D01* +X906689Y288123D01* +X906578Y288175D01* +X906468Y288231D01* +X906360Y288290D01* +X906254Y288353D01* +X906149Y288418D01* +X906047Y288487D01* +X905947Y288559D01* +X905850Y288634D01* +X905754Y288711D01* +X905661Y288792D01* +X905570Y288875D01* +X905482Y288961D01* +X905722Y294479D02* +X905724Y294565D01* +X905730Y294651D01* +X905739Y294737D01* +X905753Y294822D01* +X905770Y294906D01* +X905791Y294990D01* +X905816Y295072D01* +X905844Y295153D01* +X905876Y295233D01* +X905912Y295312D01* +X905951Y295388D01* +X905994Y295463D01* +X906039Y295536D01* +X906088Y295607D01* +X906141Y295675D01* +X906196Y295742D01* +X906254Y295805D01* +X906315Y295866D01* +X906378Y295924D01* +X906445Y295979D01* +X906513Y296032D01* +X906584Y296081D01* +X906657Y296126D01* +X906732Y296169D01* +X906808Y296208D01* +X906887Y296244D01* +X906967Y296276D01* +X907048Y296304D01* +X907130Y296329D01* +X907214Y296350D01* +X907298Y296367D01* +X907383Y296381D01* +X907469Y296390D01* +X907555Y296396D01* +X907641Y296398D01* +X907757Y296396D01* +X907872Y296391D01* +X907988Y296381D01* +X908103Y296368D01* +X908217Y296352D01* +X908331Y296331D01* +X908445Y296307D01* +X908557Y296279D01* +X908668Y296248D01* +X908779Y296213D01* +X908888Y296175D01* +X908996Y296133D01* +X909102Y296088D01* +X909208Y296039D01* +X909311Y295987D01* +X909413Y295932D01* +X909512Y295873D01* +X909610Y295811D01* +X909706Y295746D01* +X909800Y295678D01* +X906681Y292800D02* +X906607Y292846D01* +X906534Y292896D01* +X906464Y292949D01* +X906396Y293005D01* +X906331Y293064D01* +X906268Y293126D01* +X906209Y293191D01* +X906152Y293258D01* +X906098Y293328D01* +X906048Y293400D01* +X906001Y293474D01* +X905957Y293550D01* +X905917Y293629D01* +X905881Y293709D01* +X905848Y293790D01* +X905819Y293873D01* +X905793Y293958D01* +X905771Y294043D01* +X905754Y294129D01* +X905740Y294216D01* +X905730Y294303D01* +X905724Y294391D01* +X905722Y294479D01* +X909321Y291360D02* +X909395Y291314D01* +X909468Y291264D01* +X909538Y291211D01* +X909606Y291155D01* +X909671Y291096D01* +X909734Y291034D01* +X909793Y290969D01* +X909850Y290902D01* +X909904Y290832D01* +X909954Y290760D01* +X910001Y290686D01* +X910045Y290610D01* +X910085Y290531D01* +X910121Y290451D01* +X910154Y290370D01* +X910183Y290287D01* +X910209Y290202D01* +X910231Y290117D01* +X910248Y290031D01* +X910262Y289944D01* +X910272Y289857D01* +X910278Y289769D01* +X910280Y289681D01* +X909320Y291360D02* +X906681Y292800D01* +X914321Y287762D02* +X916720Y287762D01* +X916817Y287764D01* +X916913Y287770D01* +X917009Y287779D01* +X917105Y287793D01* +X917200Y287810D01* +X917294Y287832D01* +X917387Y287857D01* +X917480Y287885D01* +X917571Y287918D01* +X917660Y287954D01* +X917748Y287994D01* +X917835Y288037D01* +X917920Y288083D01* +X918002Y288133D01* +X918083Y288187D01* +X918161Y288243D01* +X918237Y288303D01* +X918311Y288365D01* +X918382Y288431D01* +X918450Y288499D01* +X918516Y288570D01* +X918578Y288644D01* +X918638Y288720D01* +X918694Y288798D01* +X918748Y288879D01* +X918798Y288962D01* +X918844Y289046D01* +X918887Y289133D01* +X918927Y289221D01* +X918963Y289310D01* +X918996Y289401D01* +X919024Y289494D01* +X919049Y289587D01* +X919071Y289681D01* +X919088Y289776D01* +X919102Y289872D01* +X919111Y289968D01* +X919117Y290064D01* +X919119Y290161D01* +X919117Y290258D01* +X919111Y290354D01* +X919102Y290450D01* +X919088Y290546D01* +X919071Y290641D01* +X919049Y290735D01* +X919024Y290828D01* +X918996Y290921D01* +X918963Y291012D01* +X918927Y291101D01* +X918887Y291189D01* +X918844Y291276D01* +X918798Y291361D01* +X918748Y291443D01* +X918694Y291524D01* +X918638Y291602D01* +X918578Y291678D01* +X918516Y291752D01* +X918450Y291823D01* +X918382Y291891D01* +X918311Y291957D01* +X918237Y292019D01* +X918161Y292079D01* +X918083Y292135D01* +X918002Y292189D01* +X917920Y292239D01* +X917835Y292285D01* +X917748Y292328D01* +X917660Y292368D01* +X917571Y292404D01* +X917480Y292437D01* +X917387Y292465D01* +X917294Y292490D01* +X917200Y292512D01* +X917105Y292529D01* +X917009Y292543D01* +X916913Y292552D01* +X916817Y292558D01* +X916720Y292560D01* +X917200Y296398D02* +X914321Y296398D01* +X917200Y296398D02* +X917286Y296396D01* +X917372Y296390D01* +X917458Y296381D01* +X917543Y296367D01* +X917627Y296350D01* +X917711Y296329D01* +X917793Y296304D01* +X917874Y296276D01* +X917954Y296244D01* +X918033Y296208D01* +X918109Y296169D01* +X918184Y296126D01* +X918257Y296081D01* +X918328Y296032D01* +X918396Y295979D01* +X918463Y295924D01* +X918526Y295866D01* +X918587Y295805D01* +X918645Y295742D01* +X918700Y295675D01* +X918753Y295607D01* +X918802Y295536D01* +X918847Y295463D01* +X918890Y295388D01* +X918929Y295312D01* +X918965Y295233D01* +X918997Y295153D01* +X919025Y295072D01* +X919050Y294990D01* +X919071Y294906D01* +X919088Y294822D01* +X919102Y294737D01* +X919111Y294651D01* +X919117Y294565D01* +X919119Y294479D01* +X919117Y294393D01* +X919111Y294307D01* +X919102Y294221D01* +X919088Y294136D01* +X919071Y294052D01* +X919050Y293968D01* +X919025Y293886D01* +X918997Y293805D01* +X918965Y293725D01* +X918929Y293646D01* +X918890Y293570D01* +X918847Y293495D01* +X918802Y293422D01* +X918753Y293351D01* +X918700Y293283D01* +X918645Y293216D01* +X918587Y293153D01* +X918526Y293092D01* +X918463Y293034D01* +X918396Y292979D01* +X918328Y292926D01* +X918257Y292877D01* +X918184Y292832D01* +X918109Y292789D01* +X918033Y292750D01* +X917954Y292714D01* +X917874Y292682D01* +X917793Y292654D01* +X917711Y292629D01* +X917627Y292608D01* +X917543Y292591D01* +X917458Y292577D01* +X917372Y292568D01* +X917286Y292562D01* +X917200Y292560D01* +X915281Y292560D01* +D20* +X790420Y190020D02* +X790420Y130020D01* +X850420Y130020D02* +X850420Y190020D01* +X790420Y190020D01* +X790420Y130020D02* +X850420Y130020D01* +D25* +X820420Y160020D03* +D14* +X794061Y193782D02* +X794147Y193784D01* +X794233Y193790D01* +X794319Y193799D01* +X794404Y193813D01* +X794488Y193830D01* +X794572Y193851D01* +X794654Y193876D01* +X794735Y193904D01* +X794815Y193936D01* +X794894Y193972D01* +X794970Y194011D01* +X795045Y194054D01* +X795118Y194099D01* +X795189Y194149D01* +X795257Y194201D01* +X795324Y194256D01* +X795387Y194314D01* +X795448Y194375D01* +X795506Y194438D01* +X795561Y194505D01* +X795614Y194573D01* +X795663Y194644D01* +X795708Y194717D01* +X795751Y194792D01* +X795790Y194868D01* +X795826Y194947D01* +X795858Y195027D01* +X795886Y195108D01* +X795911Y195190D01* +X795932Y195274D01* +X795949Y195358D01* +X795963Y195443D01* +X795972Y195529D01* +X795978Y195615D01* +X795980Y195701D01* +X794061Y193782D02* +X793938Y193784D01* +X793815Y193789D01* +X793692Y193799D01* +X793570Y193812D01* +X793448Y193829D01* +X793326Y193849D01* +X793206Y193873D01* +X793086Y193901D01* +X792967Y193932D01* +X792849Y193967D01* +X792732Y194006D01* +X792616Y194048D01* +X792502Y194094D01* +X792389Y194143D01* +X792278Y194195D01* +X792168Y194251D01* +X792060Y194310D01* +X791954Y194373D01* +X791849Y194438D01* +X791747Y194507D01* +X791647Y194579D01* +X791550Y194654D01* +X791454Y194731D01* +X791361Y194812D01* +X791270Y194895D01* +X791182Y194981D01* +X791422Y200499D02* +X791424Y200585D01* +X791430Y200671D01* +X791439Y200757D01* +X791453Y200842D01* +X791470Y200926D01* +X791491Y201010D01* +X791516Y201092D01* +X791544Y201173D01* +X791576Y201253D01* +X791612Y201332D01* +X791651Y201408D01* +X791694Y201483D01* +X791739Y201556D01* +X791788Y201627D01* +X791841Y201695D01* +X791896Y201762D01* +X791954Y201825D01* +X792015Y201886D01* +X792078Y201944D01* +X792145Y201999D01* +X792213Y202052D01* +X792284Y202101D01* +X792357Y202146D01* +X792432Y202189D01* +X792508Y202228D01* +X792587Y202264D01* +X792667Y202296D01* +X792748Y202324D01* +X792830Y202349D01* +X792914Y202370D01* +X792998Y202387D01* +X793083Y202401D01* +X793169Y202410D01* +X793255Y202416D01* +X793341Y202418D01* +X793457Y202416D01* +X793572Y202411D01* +X793688Y202401D01* +X793803Y202388D01* +X793917Y202372D01* +X794031Y202351D01* +X794145Y202327D01* +X794257Y202299D01* +X794368Y202268D01* +X794479Y202233D01* +X794588Y202195D01* +X794696Y202153D01* +X794802Y202108D01* +X794908Y202059D01* +X795011Y202007D01* +X795113Y201952D01* +X795212Y201893D01* +X795310Y201831D01* +X795406Y201766D01* +X795500Y201698D01* +X792381Y198820D02* +X792307Y198866D01* +X792234Y198916D01* +X792164Y198969D01* +X792096Y199025D01* +X792031Y199084D01* +X791968Y199146D01* +X791909Y199211D01* +X791852Y199278D01* +X791798Y199348D01* +X791748Y199420D01* +X791701Y199494D01* +X791657Y199570D01* +X791617Y199649D01* +X791581Y199729D01* +X791548Y199810D01* +X791519Y199893D01* +X791493Y199978D01* +X791471Y200063D01* +X791454Y200149D01* +X791440Y200236D01* +X791430Y200323D01* +X791424Y200411D01* +X791422Y200499D01* +X795021Y197380D02* +X795095Y197334D01* +X795168Y197284D01* +X795238Y197231D01* +X795306Y197175D01* +X795371Y197116D01* +X795434Y197054D01* +X795493Y196989D01* +X795550Y196922D01* +X795604Y196852D01* +X795654Y196780D01* +X795701Y196706D01* +X795745Y196630D01* +X795785Y196551D01* +X795821Y196471D01* +X795854Y196390D01* +X795883Y196307D01* +X795909Y196222D01* +X795931Y196137D01* +X795948Y196051D01* +X795962Y195964D01* +X795972Y195877D01* +X795978Y195789D01* +X795980Y195701D01* +X795020Y197380D02* +X792381Y198820D01* +X800021Y200499D02* +X802420Y202418D01* +X802420Y193782D01* +X800021Y193782D02* +X804819Y193782D01* +D17* +X541020Y180340D03* +D14* +X528338Y166116D02* +X526419Y166116D01* +X526333Y166118D01* +X526247Y166124D01* +X526161Y166133D01* +X526076Y166147D01* +X525992Y166164D01* +X525908Y166185D01* +X525826Y166210D01* +X525745Y166238D01* +X525665Y166270D01* +X525586Y166306D01* +X525510Y166345D01* +X525435Y166388D01* +X525362Y166433D01* +X525291Y166482D01* +X525223Y166535D01* +X525156Y166590D01* +X525093Y166648D01* +X525032Y166709D01* +X524974Y166772D01* +X524919Y166839D01* +X524866Y166907D01* +X524817Y166978D01* +X524772Y167051D01* +X524729Y167126D01* +X524690Y167202D01* +X524654Y167281D01* +X524622Y167361D01* +X524594Y167442D01* +X524569Y167524D01* +X524548Y167608D01* +X524531Y167692D01* +X524517Y167777D01* +X524508Y167863D01* +X524502Y167949D01* +X524500Y168035D01* +X524500Y172833D01* +X524502Y172919D01* +X524508Y173005D01* +X524517Y173091D01* +X524531Y173176D01* +X524548Y173260D01* +X524569Y173344D01* +X524594Y173426D01* +X524622Y173507D01* +X524654Y173587D01* +X524690Y173666D01* +X524729Y173742D01* +X524772Y173817D01* +X524817Y173890D01* +X524866Y173961D01* +X524919Y174029D01* +X524974Y174096D01* +X525032Y174159D01* +X525093Y174220D01* +X525156Y174278D01* +X525223Y174333D01* +X525291Y174385D01* +X525362Y174435D01* +X525435Y174480D01* +X525510Y174523D01* +X525586Y174562D01* +X525665Y174598D01* +X525745Y174630D01* +X525826Y174658D01* +X525908Y174683D01* +X525992Y174704D01* +X526076Y174721D01* +X526161Y174735D01* +X526247Y174744D01* +X526333Y174750D01* +X526419Y174752D01* +X528338Y174752D01* +X534797Y174752D02* +X534889Y174750D01* +X534980Y174744D01* +X535071Y174735D01* +X535162Y174721D01* +X535252Y174704D01* +X535341Y174682D01* +X535429Y174657D01* +X535516Y174629D01* +X535602Y174596D01* +X535686Y174560D01* +X535769Y174521D01* +X535850Y174478D01* +X535929Y174431D01* +X536006Y174382D01* +X536081Y174329D01* +X536153Y174273D01* +X536223Y174214D01* +X536291Y174152D01* +X536356Y174087D01* +X536418Y174019D01* +X536477Y173949D01* +X536533Y173877D01* +X536586Y173802D01* +X536635Y173725D01* +X536682Y173646D01* +X536725Y173565D01* +X536764Y173482D01* +X536800Y173398D01* +X536833Y173312D01* +X536861Y173225D01* +X536886Y173137D01* +X536908Y173048D01* +X536925Y172958D01* +X536939Y172867D01* +X536948Y172776D01* +X536954Y172685D01* +X536956Y172593D01* +X534797Y174752D02* +X534694Y174750D01* +X534592Y174744D01* +X534490Y174735D01* +X534388Y174722D01* +X534287Y174705D01* +X534186Y174684D01* +X534087Y174660D01* +X533988Y174631D01* +X533891Y174600D01* +X533794Y174564D01* +X533699Y174526D01* +X533606Y174483D01* +X533514Y174437D01* +X533424Y174388D01* +X533336Y174336D01* +X533249Y174280D01* +X533165Y174221D01* +X533084Y174160D01* +X533004Y174095D01* +X532927Y174027D01* +X532852Y173956D01* +X532781Y173883D01* +X532712Y173807D01* +X532645Y173729D01* +X532582Y173648D01* +X532522Y173565D01* +X532465Y173480D01* +X532411Y173393D01* +X532360Y173303D01* +X532313Y173212D01* +X532269Y173120D01* +X532228Y173025D01* +X532191Y172930D01* +X532158Y172833D01* +X536236Y170914D02* +X536303Y170980D01* +X536367Y171049D01* +X536428Y171120D01* +X536486Y171194D01* +X536541Y171270D01* +X536593Y171348D01* +X536642Y171428D01* +X536688Y171510D01* +X536730Y171594D01* +X536769Y171680D01* +X536804Y171767D01* +X536835Y171855D01* +X536863Y171945D01* +X536888Y172035D01* +X536909Y172127D01* +X536926Y172219D01* +X536939Y172312D01* +X536948Y172405D01* +X536954Y172499D01* +X536956Y172593D01* +X536236Y170914D02* +X532158Y166116D01* +X536956Y166116D01* +X541302Y172833D02* +X543701Y174752D01* +X543701Y166116D01* +X541302Y166116D02* +X546100Y166116D01* +D13* +X510540Y254000D03* +D14* +X513588Y267462D02* +X504952Y267462D01* +X504952Y269861D01* +X504954Y269958D01* +X504960Y270054D01* +X504969Y270150D01* +X504983Y270246D01* +X505000Y270341D01* +X505022Y270435D01* +X505047Y270528D01* +X505075Y270621D01* +X505108Y270712D01* +X505144Y270801D01* +X505184Y270889D01* +X505227Y270976D01* +X505273Y271061D01* +X505323Y271143D01* +X505377Y271224D01* +X505433Y271302D01* +X505493Y271378D01* +X505555Y271452D01* +X505621Y271523D01* +X505689Y271591D01* +X505760Y271657D01* +X505834Y271719D01* +X505910Y271779D01* +X505988Y271835D01* +X506069Y271889D01* +X506152Y271939D01* +X506236Y271985D01* +X506323Y272028D01* +X506411Y272068D01* +X506500Y272104D01* +X506591Y272137D01* +X506684Y272165D01* +X506777Y272190D01* +X506871Y272212D01* +X506966Y272229D01* +X507062Y272243D01* +X507158Y272252D01* +X507254Y272258D01* +X507351Y272260D01* +X507448Y272258D01* +X507544Y272252D01* +X507640Y272243D01* +X507736Y272229D01* +X507831Y272212D01* +X507925Y272190D01* +X508018Y272165D01* +X508111Y272137D01* +X508202Y272104D01* +X508291Y272068D01* +X508379Y272028D01* +X508466Y271985D01* +X508551Y271939D01* +X508633Y271889D01* +X508714Y271835D01* +X508792Y271779D01* +X508868Y271719D01* +X508942Y271657D01* +X509013Y271591D01* +X509081Y271523D01* +X509147Y271452D01* +X509209Y271378D01* +X509269Y271302D01* +X509325Y271224D01* +X509379Y271143D01* +X509429Y271061D01* +X509475Y270976D01* +X509518Y270889D01* +X509558Y270801D01* +X509594Y270712D01* +X509627Y270621D01* +X509655Y270528D01* +X509680Y270435D01* +X509702Y270341D01* +X509719Y270246D01* +X509733Y270150D01* +X509742Y270054D01* +X509748Y269958D01* +X509750Y269861D01* +X509750Y267462D01* +X509750Y270341D02* +X513588Y272260D01* +X504952Y279160D02* +X504954Y279252D01* +X504960Y279343D01* +X504969Y279434D01* +X504983Y279525D01* +X505000Y279615D01* +X505022Y279704D01* +X505047Y279792D01* +X505075Y279879D01* +X505108Y279965D01* +X505144Y280049D01* +X505183Y280132D01* +X505226Y280213D01* +X505273Y280292D01* +X505322Y280369D01* +X505375Y280444D01* +X505431Y280516D01* +X505490Y280586D01* +X505552Y280654D01* +X505617Y280719D01* +X505685Y280781D01* +X505755Y280840D01* +X505827Y280896D01* +X505902Y280949D01* +X505979Y280998D01* +X506058Y281045D01* +X506139Y281088D01* +X506222Y281127D01* +X506306Y281163D01* +X506392Y281196D01* +X506479Y281224D01* +X506567Y281249D01* +X506656Y281271D01* +X506746Y281288D01* +X506837Y281302D01* +X506928Y281311D01* +X507019Y281317D01* +X507111Y281319D01* +X504952Y279160D02* +X504954Y279057D01* +X504960Y278955D01* +X504969Y278853D01* +X504982Y278751D01* +X504999Y278650D01* +X505020Y278549D01* +X505044Y278450D01* +X505073Y278351D01* +X505104Y278254D01* +X505140Y278157D01* +X505178Y278062D01* +X505221Y277969D01* +X505267Y277877D01* +X505316Y277787D01* +X505368Y277699D01* +X505424Y277612D01* +X505483Y277528D01* +X505544Y277447D01* +X505609Y277367D01* +X505677Y277290D01* +X505748Y277215D01* +X505821Y277144D01* +X505897Y277075D01* +X505975Y277008D01* +X506056Y276945D01* +X506139Y276885D01* +X506224Y276828D01* +X506311Y276774D01* +X506401Y276723D01* +X506492Y276676D01* +X506584Y276632D01* +X506679Y276591D01* +X506774Y276554D01* +X506871Y276521D01* +X508790Y280599D02* +X508724Y280666D01* +X508655Y280730D01* +X508584Y280791D01* +X508510Y280849D01* +X508434Y280904D01* +X508356Y280956D01* +X508276Y281005D01* +X508194Y281051D01* +X508110Y281093D01* +X508024Y281132D01* +X507937Y281167D01* +X507849Y281198D01* +X507759Y281226D01* +X507669Y281251D01* +X507577Y281272D01* +X507485Y281289D01* +X507392Y281302D01* +X507299Y281311D01* +X507205Y281317D01* +X507111Y281319D01* +X508790Y280599D02* +X513588Y276521D01* +X513588Y281319D01* +X508790Y285665D02* +X508790Y288544D01* +X508792Y288630D01* +X508798Y288716D01* +X508807Y288802D01* +X508821Y288887D01* +X508838Y288971D01* +X508859Y289055D01* +X508884Y289137D01* +X508912Y289218D01* +X508944Y289298D01* +X508980Y289377D01* +X509019Y289453D01* +X509062Y289528D01* +X509107Y289601D01* +X509157Y289672D01* +X509209Y289740D01* +X509264Y289807D01* +X509322Y289870D01* +X509383Y289931D01* +X509446Y289989D01* +X509513Y290044D01* +X509581Y290097D01* +X509652Y290146D01* +X509725Y290191D01* +X509800Y290234D01* +X509876Y290273D01* +X509955Y290309D01* +X510035Y290341D01* +X510116Y290369D01* +X510199Y290394D01* +X510282Y290415D01* +X510366Y290432D01* +X510451Y290446D01* +X510537Y290455D01* +X510623Y290461D01* +X510709Y290463D01* +X511189Y290463D01* +X511286Y290461D01* +X511382Y290455D01* +X511478Y290446D01* +X511574Y290432D01* +X511669Y290415D01* +X511763Y290393D01* +X511856Y290368D01* +X511949Y290340D01* +X512040Y290307D01* +X512129Y290271D01* +X512217Y290231D01* +X512304Y290188D01* +X512389Y290142D01* +X512471Y290092D01* +X512552Y290038D01* +X512630Y289982D01* +X512706Y289922D01* +X512780Y289860D01* +X512851Y289794D01* +X512919Y289726D01* +X512985Y289655D01* +X513047Y289581D01* +X513107Y289505D01* +X513163Y289427D01* +X513217Y289346D01* +X513267Y289264D01* +X513313Y289179D01* +X513356Y289092D01* +X513396Y289004D01* +X513432Y288915D01* +X513465Y288824D01* +X513493Y288731D01* +X513518Y288638D01* +X513540Y288544D01* +X513557Y288449D01* +X513571Y288353D01* +X513580Y288257D01* +X513586Y288161D01* +X513588Y288064D01* +X513586Y287967D01* +X513580Y287871D01* +X513571Y287775D01* +X513557Y287679D01* +X513540Y287584D01* +X513518Y287490D01* +X513493Y287397D01* +X513465Y287304D01* +X513432Y287213D01* +X513396Y287124D01* +X513356Y287036D01* +X513313Y286949D01* +X513267Y286865D01* +X513217Y286782D01* +X513163Y286701D01* +X513107Y286623D01* +X513047Y286547D01* +X512985Y286473D01* +X512919Y286402D01* +X512851Y286334D01* +X512780Y286268D01* +X512706Y286206D01* +X512630Y286146D01* +X512552Y286090D01* +X512471Y286036D01* +X512389Y285986D01* +X512304Y285940D01* +X512217Y285897D01* +X512129Y285857D01* +X512040Y285821D01* +X511949Y285788D01* +X511856Y285760D01* +X511763Y285735D01* +X511669Y285713D01* +X511574Y285696D01* +X511478Y285682D01* +X511382Y285673D01* +X511286Y285667D01* +X511189Y285665D01* +X508790Y285665D01* +X508790Y285666D02* +X508667Y285668D01* +X508544Y285674D01* +X508421Y285684D01* +X508299Y285698D01* +X508177Y285715D01* +X508056Y285737D01* +X507936Y285762D01* +X507816Y285792D01* +X507698Y285825D01* +X507581Y285862D01* +X507464Y285902D01* +X507350Y285946D01* +X507236Y285994D01* +X507125Y286046D01* +X507015Y286101D01* +X506907Y286160D01* +X506800Y286222D01* +X506696Y286287D01* +X506594Y286356D01* +X506494Y286428D01* +X506397Y286503D01* +X506302Y286582D01* +X506210Y286663D01* +X506120Y286747D01* +X506033Y286834D01* +X505949Y286924D01* +X505868Y287016D01* +X505789Y287111D01* +X505714Y287208D01* +X505642Y287308D01* +X505573Y287410D01* +X505508Y287514D01* +X505446Y287621D01* +X505387Y287729D01* +X505332Y287839D01* +X505280Y287950D01* +X505233Y288064D01* +X505188Y288178D01* +X505148Y288295D01* +X505111Y288412D01* +X505078Y288530D01* +X505048Y288650D01* +X505023Y288770D01* +X505001Y288891D01* +X504984Y289013D01* +X504970Y289135D01* +X504960Y289258D01* +X504954Y289381D01* +X504952Y289504D01* +D17* +X868680Y55880D03* +D14* +X866676Y61722D02* +X864757Y61722D01* +X864671Y61724D01* +X864585Y61730D01* +X864499Y61739D01* +X864414Y61753D01* +X864330Y61770D01* +X864246Y61791D01* +X864164Y61816D01* +X864083Y61844D01* +X864003Y61876D01* +X863924Y61912D01* +X863848Y61951D01* +X863773Y61994D01* +X863700Y62039D01* +X863629Y62088D01* +X863561Y62141D01* +X863494Y62196D01* +X863431Y62254D01* +X863370Y62315D01* +X863312Y62378D01* +X863257Y62445D01* +X863204Y62513D01* +X863155Y62584D01* +X863110Y62657D01* +X863067Y62732D01* +X863028Y62808D01* +X862992Y62887D01* +X862960Y62967D01* +X862932Y63048D01* +X862907Y63130D01* +X862886Y63214D01* +X862869Y63298D01* +X862855Y63383D01* +X862846Y63469D01* +X862840Y63555D01* +X862838Y63641D01* +X862838Y68439D01* +X862840Y68525D01* +X862846Y68611D01* +X862855Y68697D01* +X862869Y68782D01* +X862886Y68866D01* +X862907Y68950D01* +X862932Y69032D01* +X862960Y69113D01* +X862992Y69193D01* +X863028Y69272D01* +X863067Y69348D01* +X863110Y69423D01* +X863155Y69496D01* +X863204Y69567D01* +X863257Y69635D01* +X863312Y69702D01* +X863370Y69765D01* +X863431Y69826D01* +X863494Y69884D01* +X863561Y69939D01* +X863629Y69991D01* +X863700Y70041D01* +X863773Y70086D01* +X863848Y70129D01* +X863924Y70168D01* +X864003Y70204D01* +X864083Y70236D01* +X864164Y70264D01* +X864246Y70289D01* +X864330Y70310D01* +X864414Y70327D01* +X864499Y70341D01* +X864585Y70350D01* +X864671Y70356D01* +X864757Y70358D01* +X866676Y70358D01* +X870496Y68439D02* +X872895Y70358D01* +X872895Y61722D01* +X870496Y61722D02* +X875294Y61722D01* +D26* +X1029150Y303840D02* +X1029152Y303903D01* +X1029158Y303965D01* +X1029168Y304027D01* +X1029181Y304089D01* +X1029199Y304149D01* +X1029220Y304208D01* +X1029245Y304266D01* +X1029274Y304322D01* +X1029306Y304376D01* +X1029341Y304428D01* +X1029379Y304477D01* +X1029421Y304525D01* +X1029465Y304569D01* +X1029513Y304611D01* +X1029562Y304649D01* +X1029614Y304684D01* +X1029668Y304716D01* +X1029724Y304745D01* +X1029782Y304770D01* +X1029841Y304791D01* +X1029901Y304809D01* +X1029963Y304822D01* +X1030025Y304832D01* +X1030087Y304838D01* +X1030150Y304840D01* +X1030213Y304838D01* +X1030275Y304832D01* +X1030337Y304822D01* +X1030399Y304809D01* +X1030459Y304791D01* +X1030518Y304770D01* +X1030576Y304745D01* +X1030632Y304716D01* +X1030686Y304684D01* +X1030738Y304649D01* +X1030787Y304611D01* +X1030835Y304569D01* +X1030879Y304525D01* +X1030921Y304477D01* +X1030959Y304428D01* +X1030994Y304376D01* +X1031026Y304322D01* +X1031055Y304266D01* +X1031080Y304208D01* +X1031101Y304149D01* +X1031119Y304089D01* +X1031132Y304027D01* +X1031142Y303965D01* +X1031148Y303903D01* +X1031150Y303840D01* +X1031148Y303777D01* +X1031142Y303715D01* +X1031132Y303653D01* +X1031119Y303591D01* +X1031101Y303531D01* +X1031080Y303472D01* +X1031055Y303414D01* +X1031026Y303358D01* +X1030994Y303304D01* +X1030959Y303252D01* +X1030921Y303203D01* +X1030879Y303155D01* +X1030835Y303111D01* +X1030787Y303069D01* +X1030738Y303031D01* +X1030686Y302996D01* +X1030632Y302964D01* +X1030576Y302935D01* +X1030518Y302910D01* +X1030459Y302889D01* +X1030399Y302871D01* +X1030337Y302858D01* +X1030275Y302848D01* +X1030213Y302842D01* +X1030150Y302840D01* +X1030087Y302842D01* +X1030025Y302848D01* +X1029963Y302858D01* +X1029901Y302871D01* +X1029841Y302889D01* +X1029782Y302910D01* +X1029724Y302935D01* +X1029668Y302964D01* +X1029614Y302996D01* +X1029562Y303031D01* +X1029513Y303069D01* +X1029465Y303111D01* +X1029421Y303155D01* +X1029379Y303203D01* +X1029341Y303252D01* +X1029306Y303304D01* +X1029274Y303358D01* +X1029245Y303414D01* +X1029220Y303472D01* +X1029199Y303531D01* +X1029181Y303591D01* +X1029168Y303653D01* +X1029158Y303715D01* +X1029152Y303777D01* +X1029150Y303840D01* +D20* +X1047920Y311460D02* +X1047920Y378960D01* +X1227920Y378960D01* +X1227920Y311460D01* +X1047920Y131460D02* +X1047920Y123960D01* +X1072920Y123960D01* +X1202920Y123960D02* +X1227920Y123960D01* +X1227920Y131460D01* +X1227520Y315960D02* +X1048320Y315960D01* +D14* +X1028925Y339700D02* +X1028925Y345937D01* +X1028925Y339700D02* +X1028927Y339603D01* +X1028933Y339507D01* +X1028942Y339411D01* +X1028956Y339315D01* +X1028973Y339220D01* +X1028995Y339126D01* +X1029020Y339033D01* +X1029048Y338940D01* +X1029081Y338849D01* +X1029117Y338760D01* +X1029157Y338672D01* +X1029200Y338585D01* +X1029246Y338501D01* +X1029296Y338418D01* +X1029350Y338337D01* +X1029406Y338259D01* +X1029466Y338183D01* +X1029528Y338109D01* +X1029594Y338038D01* +X1029662Y337970D01* +X1029733Y337904D01* +X1029807Y337842D01* +X1029883Y337782D01* +X1029961Y337726D01* +X1030042Y337672D01* +X1030125Y337622D01* +X1030209Y337576D01* +X1030296Y337533D01* +X1030384Y337493D01* +X1030473Y337457D01* +X1030564Y337424D01* +X1030657Y337396D01* +X1030750Y337371D01* +X1030844Y337349D01* +X1030939Y337332D01* +X1031035Y337318D01* +X1031131Y337309D01* +X1031227Y337303D01* +X1031324Y337301D01* +X1031421Y337303D01* +X1031517Y337309D01* +X1031613Y337318D01* +X1031709Y337332D01* +X1031804Y337349D01* +X1031898Y337371D01* +X1031991Y337396D01* +X1032084Y337424D01* +X1032175Y337457D01* +X1032264Y337493D01* +X1032352Y337533D01* +X1032439Y337576D01* +X1032524Y337622D01* +X1032606Y337672D01* +X1032687Y337726D01* +X1032765Y337782D01* +X1032841Y337842D01* +X1032915Y337904D01* +X1032986Y337970D01* +X1033054Y338038D01* +X1033120Y338109D01* +X1033182Y338183D01* +X1033242Y338259D01* +X1033298Y338337D01* +X1033352Y338418D01* +X1033402Y338501D01* +X1033448Y338585D01* +X1033491Y338672D01* +X1033531Y338760D01* +X1033567Y338849D01* +X1033600Y338940D01* +X1033628Y339033D01* +X1033653Y339126D01* +X1033675Y339220D01* +X1033692Y339315D01* +X1033706Y339411D01* +X1033715Y339507D01* +X1033721Y339603D01* +X1033723Y339700D01* +X1033723Y345937D01* +X1041013Y345937D02* +X1041105Y345935D01* +X1041196Y345929D01* +X1041287Y345920D01* +X1041378Y345906D01* +X1041468Y345889D01* +X1041557Y345867D01* +X1041645Y345842D01* +X1041732Y345814D01* +X1041818Y345781D01* +X1041902Y345745D01* +X1041985Y345706D01* +X1042066Y345663D01* +X1042145Y345616D01* +X1042222Y345567D01* +X1042297Y345514D01* +X1042369Y345458D01* +X1042439Y345399D01* +X1042507Y345337D01* +X1042572Y345272D01* +X1042634Y345204D01* +X1042693Y345134D01* +X1042749Y345062D01* +X1042802Y344987D01* +X1042851Y344910D01* +X1042898Y344831D01* +X1042941Y344750D01* +X1042980Y344667D01* +X1043016Y344583D01* +X1043049Y344497D01* +X1043077Y344410D01* +X1043102Y344322D01* +X1043124Y344233D01* +X1043141Y344143D01* +X1043155Y344052D01* +X1043164Y343961D01* +X1043170Y343870D01* +X1043172Y343778D01* +X1041013Y345937D02* +X1040910Y345935D01* +X1040808Y345929D01* +X1040706Y345920D01* +X1040604Y345907D01* +X1040503Y345890D01* +X1040402Y345869D01* +X1040303Y345845D01* +X1040204Y345816D01* +X1040107Y345785D01* +X1040010Y345749D01* +X1039915Y345711D01* +X1039822Y345668D01* +X1039730Y345622D01* +X1039640Y345573D01* +X1039552Y345521D01* +X1039465Y345465D01* +X1039381Y345406D01* +X1039300Y345345D01* +X1039220Y345280D01* +X1039143Y345212D01* +X1039068Y345141D01* +X1038997Y345068D01* +X1038928Y344992D01* +X1038861Y344914D01* +X1038798Y344833D01* +X1038738Y344750D01* +X1038681Y344665D01* +X1038627Y344578D01* +X1038576Y344488D01* +X1038529Y344397D01* +X1038485Y344305D01* +X1038444Y344210D01* +X1038407Y344115D01* +X1038374Y344018D01* +X1042452Y342099D02* +X1042519Y342165D01* +X1042583Y342234D01* +X1042644Y342305D01* +X1042702Y342379D01* +X1042757Y342455D01* +X1042809Y342533D01* +X1042858Y342613D01* +X1042904Y342695D01* +X1042946Y342779D01* +X1042985Y342865D01* +X1043020Y342952D01* +X1043051Y343040D01* +X1043079Y343130D01* +X1043104Y343220D01* +X1043125Y343312D01* +X1043142Y343404D01* +X1043155Y343497D01* +X1043164Y343590D01* +X1043170Y343684D01* +X1043172Y343778D01* +X1042452Y342099D02* +X1038374Y337301D01* +X1043172Y337301D01* +D20* +X115100Y362120D02* +X109100Y365120D01* +X115100Y288120D02* +X109100Y285120D01* +X114100Y288120D02* +X114100Y362120D01* +X110100Y358120D02* +X110100Y293120D01* +X110100Y358120D02* +X109100Y365120D01* +X110100Y293120D02* +X109100Y285120D01* +X165100Y341120D02* +X165100Y350120D01* +X165100Y309120D02* +X165100Y301120D01* +X152100Y288120D02* +X148100Y288120D01* +X127100Y288120D02* +X115100Y288120D01* +X115100Y362120D02* +X127100Y362120D01* +X149100Y362120D02* +X152100Y362120D01* +D14* +X170942Y288293D02* +X177659Y288293D01* +X177745Y288291D01* +X177831Y288285D01* +X177917Y288276D01* +X178002Y288262D01* +X178086Y288245D01* +X178170Y288224D01* +X178252Y288199D01* +X178333Y288171D01* +X178413Y288139D01* +X178492Y288103D01* +X178568Y288064D01* +X178643Y288021D01* +X178716Y287976D01* +X178787Y287926D01* +X178855Y287874D01* +X178922Y287819D01* +X178985Y287761D01* +X179046Y287700D01* +X179104Y287637D01* +X179159Y287570D01* +X179212Y287502D01* +X179261Y287431D01* +X179306Y287358D01* +X179349Y287283D01* +X179388Y287207D01* +X179424Y287128D01* +X179456Y287048D01* +X179484Y286967D01* +X179509Y286884D01* +X179530Y286801D01* +X179547Y286717D01* +X179561Y286632D01* +X179570Y286546D01* +X179576Y286460D01* +X179578Y286374D01* +X179578Y285414D01* +X172861Y292890D02* +X170942Y295289D01* +X179578Y295289D01* +X179578Y292890D02* +X179578Y297688D01* +D27* +X482200Y165590D02* +X482202Y165634D01* +X482208Y165678D01* +X482218Y165721D01* +X482231Y165763D01* +X482248Y165804D01* +X482269Y165843D01* +X482293Y165880D01* +X482320Y165915D01* +X482350Y165947D01* +X482383Y165977D01* +X482419Y166003D01* +X482456Y166027D01* +X482496Y166046D01* +X482537Y166063D01* +X482580Y166075D01* +X482623Y166084D01* +X482667Y166089D01* +X482711Y166090D01* +X482755Y166087D01* +X482799Y166080D01* +X482842Y166069D01* +X482884Y166055D01* +X482924Y166037D01* +X482963Y166015D01* +X482999Y165991D01* +X483033Y165963D01* +X483065Y165932D01* +X483094Y165898D01* +X483120Y165862D01* +X483142Y165824D01* +X483161Y165784D01* +X483176Y165742D01* +X483188Y165700D01* +X483196Y165656D01* +X483200Y165612D01* +X483200Y165568D01* +X483196Y165524D01* +X483188Y165480D01* +X483176Y165438D01* +X483161Y165396D01* +X483142Y165356D01* +X483120Y165318D01* +X483094Y165282D01* +X483065Y165248D01* +X483033Y165217D01* +X482999Y165189D01* +X482963Y165165D01* +X482924Y165143D01* +X482884Y165125D01* +X482842Y165111D01* +X482799Y165100D01* +X482755Y165093D01* +X482711Y165090D01* +X482667Y165091D01* +X482623Y165096D01* +X482580Y165105D01* +X482537Y165117D01* +X482496Y165134D01* +X482456Y165153D01* +X482419Y165177D01* +X482383Y165203D01* +X482350Y165233D01* +X482320Y165265D01* +X482293Y165300D01* +X482269Y165337D01* +X482248Y165376D01* +X482231Y165417D01* +X482218Y165459D01* +X482208Y165502D01* +X482202Y165546D01* +X482200Y165590D01* +D20* +X515300Y209540D02* +X515300Y213040D01* +X475300Y213040D02* +X475300Y209540D01* +X515300Y176540D02* +X515300Y173040D01* +X475300Y173040D02* +X475300Y176540D01* +X511800Y213040D02* +X515300Y213040D01* +X478800Y213040D02* +X475300Y213040D01* +X511800Y173040D02* +X515300Y173040D01* +X478800Y173040D02* +X475300Y173040D01* +X473300Y174540D02* +X473300Y171040D01* +X476800Y171040D01* +D14* +X473481Y221611D02* +X473481Y227848D01* +X473481Y221611D02* +X473483Y221514D01* +X473489Y221418D01* +X473498Y221322D01* +X473512Y221226D01* +X473529Y221131D01* +X473551Y221037D01* +X473576Y220944D01* +X473604Y220851D01* +X473637Y220760D01* +X473673Y220671D01* +X473713Y220583D01* +X473756Y220496D01* +X473802Y220412D01* +X473852Y220329D01* +X473906Y220248D01* +X473962Y220170D01* +X474022Y220094D01* +X474084Y220020D01* +X474150Y219949D01* +X474218Y219881D01* +X474289Y219815D01* +X474363Y219753D01* +X474439Y219693D01* +X474517Y219637D01* +X474598Y219583D01* +X474681Y219533D01* +X474765Y219487D01* +X474852Y219444D01* +X474940Y219404D01* +X475029Y219368D01* +X475120Y219335D01* +X475213Y219307D01* +X475306Y219282D01* +X475400Y219260D01* +X475495Y219243D01* +X475591Y219229D01* +X475687Y219220D01* +X475783Y219214D01* +X475880Y219212D01* +X475977Y219214D01* +X476073Y219220D01* +X476169Y219229D01* +X476265Y219243D01* +X476360Y219260D01* +X476454Y219282D01* +X476547Y219307D01* +X476640Y219335D01* +X476731Y219368D01* +X476820Y219404D01* +X476908Y219444D01* +X476995Y219487D01* +X477080Y219533D01* +X477162Y219583D01* +X477243Y219637D01* +X477321Y219693D01* +X477397Y219753D01* +X477471Y219815D01* +X477542Y219881D01* +X477610Y219949D01* +X477676Y220020D01* +X477738Y220094D01* +X477798Y220170D01* +X477854Y220248D01* +X477908Y220329D01* +X477958Y220411D01* +X478004Y220496D01* +X478047Y220583D01* +X478087Y220671D01* +X478123Y220760D01* +X478156Y220851D01* +X478184Y220944D01* +X478209Y221037D01* +X478231Y221131D01* +X478248Y221226D01* +X478262Y221322D01* +X478271Y221418D01* +X478277Y221514D01* +X478279Y221611D01* +X478279Y227848D01* +X482930Y224010D02* +X485809Y224010D01* +X485895Y224008D01* +X485981Y224002D01* +X486067Y223993D01* +X486152Y223979D01* +X486236Y223962D01* +X486320Y223941D01* +X486402Y223916D01* +X486483Y223888D01* +X486563Y223856D01* +X486642Y223820D01* +X486718Y223781D01* +X486793Y223738D01* +X486866Y223693D01* +X486937Y223644D01* +X487005Y223591D01* +X487072Y223536D01* +X487135Y223478D01* +X487196Y223417D01* +X487254Y223354D01* +X487309Y223287D01* +X487362Y223219D01* +X487411Y223148D01* +X487456Y223075D01* +X487499Y223000D01* +X487538Y222924D01* +X487574Y222845D01* +X487606Y222765D01* +X487634Y222684D01* +X487659Y222602D01* +X487680Y222518D01* +X487697Y222434D01* +X487711Y222349D01* +X487720Y222263D01* +X487726Y222177D01* +X487728Y222091D01* +X487728Y221611D01* +X487726Y221514D01* +X487720Y221418D01* +X487711Y221322D01* +X487697Y221226D01* +X487680Y221131D01* +X487658Y221037D01* +X487633Y220944D01* +X487605Y220851D01* +X487572Y220760D01* +X487536Y220671D01* +X487496Y220583D01* +X487453Y220496D01* +X487407Y220411D01* +X487357Y220329D01* +X487303Y220248D01* +X487247Y220170D01* +X487187Y220094D01* +X487125Y220020D01* +X487059Y219949D01* +X486991Y219881D01* +X486920Y219815D01* +X486846Y219753D01* +X486770Y219693D01* +X486692Y219637D01* +X486611Y219583D01* +X486529Y219533D01* +X486444Y219487D01* +X486357Y219444D01* +X486269Y219404D01* +X486180Y219368D01* +X486089Y219335D01* +X485996Y219307D01* +X485903Y219282D01* +X485809Y219260D01* +X485714Y219243D01* +X485618Y219229D01* +X485522Y219220D01* +X485426Y219214D01* +X485329Y219212D01* +X485232Y219214D01* +X485136Y219220D01* +X485040Y219229D01* +X484944Y219243D01* +X484849Y219260D01* +X484755Y219282D01* +X484662Y219307D01* +X484569Y219335D01* +X484478Y219368D01* +X484389Y219404D01* +X484301Y219444D01* +X484214Y219487D01* +X484130Y219533D01* +X484047Y219583D01* +X483966Y219637D01* +X483888Y219693D01* +X483812Y219753D01* +X483738Y219815D01* +X483667Y219881D01* +X483599Y219949D01* +X483533Y220020D01* +X483471Y220094D01* +X483411Y220170D01* +X483355Y220248D01* +X483301Y220329D01* +X483251Y220412D01* +X483205Y220496D01* +X483162Y220583D01* +X483122Y220671D01* +X483086Y220760D01* +X483053Y220851D01* +X483025Y220944D01* +X483000Y221037D01* +X482978Y221131D01* +X482961Y221226D01* +X482947Y221322D01* +X482938Y221418D01* +X482932Y221514D01* +X482930Y221611D01* +X482930Y224010D01* +X482932Y224133D01* +X482938Y224256D01* +X482948Y224379D01* +X482962Y224501D01* +X482979Y224623D01* +X483001Y224744D01* +X483026Y224864D01* +X483056Y224984D01* +X483089Y225102D01* +X483126Y225219D01* +X483166Y225336D01* +X483210Y225450D01* +X483258Y225564D01* +X483310Y225675D01* +X483365Y225785D01* +X483424Y225893D01* +X483486Y226000D01* +X483551Y226104D01* +X483620Y226206D01* +X483692Y226306D01* +X483767Y226403D01* +X483846Y226498D01* +X483927Y226590D01* +X484011Y226680D01* +X484098Y226767D01* +X484188Y226851D01* +X484280Y226932D01* +X484375Y227011D01* +X484472Y227086D01* +X484572Y227158D01* +X484674Y227227D01* +X484778Y227292D01* +X484885Y227354D01* +X484993Y227413D01* +X485103Y227468D01* +X485214Y227520D01* +X485328Y227567D01* +X485442Y227612D01* +X485559Y227652D01* +X485676Y227689D01* +X485794Y227722D01* +X485914Y227752D01* +X486034Y227777D01* +X486155Y227799D01* +X486277Y227816D01* +X486399Y227830D01* +X486522Y227840D01* +X486645Y227846D01* +X486768Y227848D01* +X337500Y271790D02* +X337500Y114290D01* +X274640Y114290D01* +X274540Y271790D02* +X337500Y271790D01* +X243520Y271790D02* +X157700Y271790D01* +X157800Y114290D02* +X243520Y114290D01* +X341763Y259098D02* +X348480Y259098D01* +X348566Y259096D01* +X348652Y259090D01* +X348738Y259081D01* +X348823Y259067D01* +X348907Y259050D01* +X348991Y259029D01* +X349073Y259004D01* +X349154Y258976D01* +X349234Y258944D01* +X349313Y258908D01* +X349389Y258869D01* +X349464Y258826D01* +X349537Y258781D01* +X349608Y258731D01* +X349676Y258679D01* +X349743Y258624D01* +X349806Y258566D01* +X349867Y258505D01* +X349925Y258442D01* +X349980Y258375D01* +X350033Y258307D01* +X350082Y258236D01* +X350127Y258163D01* +X350170Y258088D01* +X350209Y258012D01* +X350245Y257933D01* +X350277Y257853D01* +X350305Y257772D01* +X350330Y257689D01* +X350351Y257606D01* +X350368Y257522D01* +X350382Y257437D01* +X350391Y257351D01* +X350397Y257265D01* +X350399Y257179D01* +X350399Y256219D01* +X350399Y263695D02* +X350399Y266574D01* +X350397Y266660D01* +X350391Y266746D01* +X350382Y266832D01* +X350368Y266917D01* +X350351Y267001D01* +X350330Y267085D01* +X350305Y267167D01* +X350277Y267248D01* +X350245Y267328D01* +X350209Y267407D01* +X350170Y267483D01* +X350127Y267558D01* +X350082Y267631D01* +X350033Y267702D01* +X349980Y267770D01* +X349925Y267837D01* +X349867Y267900D01* +X349806Y267961D01* +X349743Y268019D01* +X349676Y268074D01* +X349608Y268127D01* +X349537Y268176D01* +X349464Y268221D01* +X349389Y268264D01* +X349313Y268303D01* +X349234Y268339D01* +X349154Y268371D01* +X349073Y268399D01* +X348991Y268424D01* +X348907Y268445D01* +X348823Y268462D01* +X348738Y268476D01* +X348652Y268485D01* +X348566Y268491D01* +X348480Y268493D01* +X347520Y268493D01* +X347434Y268491D01* +X347348Y268485D01* +X347262Y268476D01* +X347177Y268462D01* +X347093Y268445D01* +X347009Y268424D01* +X346927Y268399D01* +X346846Y268371D01* +X346766Y268339D01* +X346687Y268303D01* +X346611Y268264D01* +X346536Y268221D01* +X346463Y268176D01* +X346392Y268127D01* +X346324Y268074D01* +X346257Y268019D01* +X346194Y267961D01* +X346133Y267900D01* +X346075Y267837D01* +X346020Y267770D01* +X345968Y267702D01* +X345918Y267631D01* +X345873Y267558D01* +X345830Y267483D01* +X345791Y267407D01* +X345755Y267328D01* +X345723Y267248D01* +X345695Y267167D01* +X345670Y267085D01* +X345649Y267001D01* +X345632Y266917D01* +X345618Y266832D01* +X345609Y266746D01* +X345603Y266660D01* +X345601Y266574D01* +X345601Y263695D01* +X341763Y263695D01* +X341763Y268493D01* +X362461Y19050D02* +X362461Y12333D01* +X362459Y12247D01* +X362453Y12161D01* +X362444Y12075D01* +X362430Y11990D01* +X362413Y11906D01* +X362392Y11822D01* +X362367Y11740D01* +X362339Y11659D01* +X362307Y11579D01* +X362271Y11500D01* +X362232Y11424D01* +X362189Y11349D01* +X362144Y11276D01* +X362094Y11205D01* +X362042Y11137D01* +X361987Y11070D01* +X361929Y11007D01* +X361868Y10946D01* +X361805Y10888D01* +X361738Y10833D01* +X361670Y10780D01* +X361599Y10731D01* +X361526Y10686D01* +X361451Y10643D01* +X361375Y10604D01* +X361296Y10568D01* +X361216Y10536D01* +X361135Y10508D01* +X361052Y10483D01* +X360969Y10462D01* +X360885Y10445D01* +X360800Y10431D01* +X360714Y10422D01* +X360628Y10416D01* +X360542Y10414D01* +X359582Y10414D01* +X367058Y10414D02* +X369457Y10414D01* +X369554Y10416D01* +X369650Y10422D01* +X369746Y10431D01* +X369842Y10445D01* +X369937Y10462D01* +X370031Y10484D01* +X370124Y10509D01* +X370217Y10537D01* +X370308Y10570D01* +X370397Y10606D01* +X370485Y10646D01* +X370572Y10689D01* +X370657Y10735D01* +X370739Y10785D01* +X370820Y10839D01* +X370898Y10895D01* +X370974Y10955D01* +X371048Y11017D01* +X371119Y11083D01* +X371187Y11151D01* +X371253Y11222D01* +X371315Y11296D01* +X371375Y11372D01* +X371431Y11450D01* +X371485Y11531D01* +X371535Y11613D01* +X371581Y11698D01* +X371624Y11785D01* +X371664Y11873D01* +X371700Y11962D01* +X371733Y12053D01* +X371761Y12146D01* +X371786Y12239D01* +X371808Y12333D01* +X371825Y12428D01* +X371839Y12524D01* +X371848Y12620D01* +X371854Y12716D01* +X371856Y12813D01* +X371854Y12910D01* +X371848Y13006D01* +X371839Y13102D01* +X371825Y13198D01* +X371808Y13293D01* +X371786Y13387D01* +X371761Y13480D01* +X371733Y13573D01* +X371700Y13664D01* +X371664Y13753D01* +X371624Y13841D01* +X371581Y13928D01* +X371535Y14012D01* +X371485Y14095D01* +X371431Y14176D01* +X371375Y14254D01* +X371315Y14330D01* +X371253Y14404D01* +X371187Y14475D01* +X371119Y14543D01* +X371048Y14609D01* +X370974Y14671D01* +X370898Y14731D01* +X370820Y14787D01* +X370739Y14841D01* +X370657Y14891D01* +X370572Y14937D01* +X370485Y14980D01* +X370397Y15020D01* +X370308Y15056D01* +X370217Y15089D01* +X370124Y15117D01* +X370031Y15142D01* +X369937Y15164D01* +X369842Y15181D01* +X369746Y15195D01* +X369650Y15204D01* +X369554Y15210D01* +X369457Y15212D01* +X369937Y19050D02* +X367058Y19050D01* +X369937Y19050D02* +X370023Y19048D01* +X370109Y19042D01* +X370195Y19033D01* +X370280Y19019D01* +X370364Y19002D01* +X370448Y18981D01* +X370530Y18956D01* +X370611Y18928D01* +X370691Y18896D01* +X370770Y18860D01* +X370846Y18821D01* +X370921Y18778D01* +X370994Y18733D01* +X371065Y18684D01* +X371133Y18631D01* +X371200Y18576D01* +X371263Y18518D01* +X371324Y18457D01* +X371382Y18394D01* +X371437Y18327D01* +X371490Y18259D01* +X371539Y18188D01* +X371584Y18115D01* +X371627Y18040D01* +X371666Y17964D01* +X371702Y17885D01* +X371734Y17805D01* +X371762Y17724D01* +X371787Y17642D01* +X371808Y17558D01* +X371825Y17474D01* +X371839Y17389D01* +X371848Y17303D01* +X371854Y17217D01* +X371856Y17131D01* +X371854Y17045D01* +X371848Y16959D01* +X371839Y16873D01* +X371825Y16788D01* +X371808Y16704D01* +X371787Y16620D01* +X371762Y16538D01* +X371734Y16457D01* +X371702Y16377D01* +X371666Y16298D01* +X371627Y16222D01* +X371584Y16147D01* +X371539Y16074D01* +X371490Y16003D01* +X371437Y15935D01* +X371382Y15868D01* +X371324Y15805D01* +X371263Y15744D01* +X371200Y15686D01* +X371133Y15631D01* +X371065Y15578D01* +X370994Y15529D01* +X370921Y15484D01* +X370846Y15441D01* +X370770Y15402D01* +X370691Y15366D01* +X370611Y15334D01* +X370530Y15306D01* +X370448Y15281D01* +X370364Y15260D01* +X370280Y15243D01* +X370195Y15229D01* +X370109Y15220D01* +X370023Y15214D01* +X369937Y15212D01* +X368018Y15212D01* +D23* +X716550Y135220D02* +X716552Y135283D01* +X716558Y135345D01* +X716568Y135407D01* +X716581Y135469D01* +X716599Y135529D01* +X716620Y135588D01* +X716645Y135646D01* +X716674Y135702D01* +X716706Y135756D01* +X716741Y135808D01* +X716779Y135857D01* +X716821Y135905D01* +X716865Y135949D01* +X716913Y135991D01* +X716962Y136029D01* +X717014Y136064D01* +X717068Y136096D01* +X717124Y136125D01* +X717182Y136150D01* +X717241Y136171D01* +X717301Y136189D01* +X717363Y136202D01* +X717425Y136212D01* +X717487Y136218D01* +X717550Y136220D01* +X717613Y136218D01* +X717675Y136212D01* +X717737Y136202D01* +X717799Y136189D01* +X717859Y136171D01* +X717918Y136150D01* +X717976Y136125D01* +X718032Y136096D01* +X718086Y136064D01* +X718138Y136029D01* +X718187Y135991D01* +X718235Y135949D01* +X718279Y135905D01* +X718321Y135857D01* +X718359Y135808D01* +X718394Y135756D01* +X718426Y135702D01* +X718455Y135646D01* +X718480Y135588D01* +X718501Y135529D01* +X718519Y135469D01* +X718532Y135407D01* +X718542Y135345D01* +X718548Y135283D01* +X718550Y135220D01* +X718548Y135157D01* +X718542Y135095D01* +X718532Y135033D01* +X718519Y134971D01* +X718501Y134911D01* +X718480Y134852D01* +X718455Y134794D01* +X718426Y134738D01* +X718394Y134684D01* +X718359Y134632D01* +X718321Y134583D01* +X718279Y134535D01* +X718235Y134491D01* +X718187Y134449D01* +X718138Y134411D01* +X718086Y134376D01* +X718032Y134344D01* +X717976Y134315D01* +X717918Y134290D01* +X717859Y134269D01* +X717799Y134251D01* +X717737Y134238D01* +X717675Y134228D01* +X717613Y134222D01* +X717550Y134220D01* +X717487Y134222D01* +X717425Y134228D01* +X717363Y134238D01* +X717301Y134251D01* +X717241Y134269D01* +X717182Y134290D01* +X717124Y134315D01* +X717068Y134344D01* +X717014Y134376D01* +X716962Y134411D01* +X716913Y134449D01* +X716865Y134491D01* +X716821Y134535D01* +X716779Y134583D01* +X716741Y134632D01* +X716706Y134684D01* +X716674Y134738D01* +X716645Y134794D01* +X716620Y134852D01* +X716599Y134911D01* +X716581Y134971D01* +X716568Y135033D01* +X716558Y135095D01* +X716552Y135157D01* +X716550Y135220D01* +D14* +X743703Y142754D02* +X743703Y151390D01* +X746101Y151390D01* +X746198Y151388D01* +X746294Y151382D01* +X746390Y151373D01* +X746486Y151359D01* +X746581Y151342D01* +X746675Y151320D01* +X746768Y151295D01* +X746861Y151267D01* +X746952Y151234D01* +X747041Y151198D01* +X747129Y151158D01* +X747216Y151115D01* +X747301Y151069D01* +X747383Y151019D01* +X747464Y150965D01* +X747542Y150909D01* +X747618Y150849D01* +X747692Y150787D01* +X747763Y150721D01* +X747831Y150653D01* +X747897Y150582D01* +X747959Y150508D01* +X748019Y150432D01* +X748075Y150354D01* +X748129Y150273D01* +X748179Y150191D01* +X748225Y150106D01* +X748268Y150019D01* +X748308Y149931D01* +X748344Y149842D01* +X748377Y149751D01* +X748405Y149658D01* +X748430Y149565D01* +X748452Y149471D01* +X748469Y149376D01* +X748483Y149280D01* +X748492Y149184D01* +X748498Y149088D01* +X748500Y148991D01* +X748500Y145153D01* +X748498Y145056D01* +X748492Y144960D01* +X748483Y144864D01* +X748469Y144768D01* +X748452Y144673D01* +X748430Y144579D01* +X748405Y144486D01* +X748377Y144393D01* +X748344Y144302D01* +X748308Y144213D01* +X748268Y144125D01* +X748225Y144038D01* +X748179Y143954D01* +X748129Y143871D01* +X748075Y143790D01* +X748019Y143712D01* +X747959Y143636D01* +X747897Y143562D01* +X747831Y143491D01* +X747763Y143423D01* +X747692Y143357D01* +X747618Y143295D01* +X747542Y143235D01* +X747464Y143179D01* +X747383Y143125D01* +X747301Y143075D01* +X747216Y143029D01* +X747129Y142986D01* +X747041Y142946D01* +X746952Y142910D01* +X746861Y142877D01* +X746768Y142849D01* +X746675Y142824D01* +X746581Y142802D01* +X746486Y142785D01* +X746390Y142771D01* +X746294Y142762D01* +X746198Y142756D01* +X746101Y142754D01* +X743703Y142754D01* +X753151Y142754D02* +X755550Y142754D01* +X755647Y142756D01* +X755743Y142762D01* +X755839Y142771D01* +X755935Y142785D01* +X756030Y142802D01* +X756124Y142824D01* +X756217Y142849D01* +X756310Y142877D01* +X756401Y142910D01* +X756490Y142946D01* +X756578Y142986D01* +X756665Y143029D01* +X756750Y143075D01* +X756832Y143125D01* +X756913Y143179D01* +X756991Y143235D01* +X757067Y143295D01* +X757141Y143357D01* +X757212Y143423D01* +X757280Y143491D01* +X757346Y143562D01* +X757408Y143636D01* +X757468Y143712D01* +X757524Y143790D01* +X757578Y143871D01* +X757628Y143954D01* +X757674Y144038D01* +X757717Y144125D01* +X757757Y144213D01* +X757793Y144302D01* +X757826Y144393D01* +X757854Y144486D01* +X757879Y144579D01* +X757901Y144673D01* +X757918Y144768D01* +X757932Y144864D01* +X757941Y144960D01* +X757947Y145056D01* +X757949Y145153D01* +X757947Y145250D01* +X757941Y145346D01* +X757932Y145442D01* +X757918Y145538D01* +X757901Y145633D01* +X757879Y145727D01* +X757854Y145820D01* +X757826Y145913D01* +X757793Y146004D01* +X757757Y146093D01* +X757717Y146181D01* +X757674Y146268D01* +X757628Y146352D01* +X757578Y146435D01* +X757524Y146516D01* +X757468Y146594D01* +X757408Y146670D01* +X757346Y146744D01* +X757280Y146815D01* +X757212Y146883D01* +X757141Y146949D01* +X757067Y147011D01* +X756991Y147071D01* +X756913Y147127D01* +X756832Y147181D01* +X756750Y147231D01* +X756665Y147277D01* +X756578Y147320D01* +X756490Y147360D01* +X756401Y147396D01* +X756310Y147429D01* +X756217Y147457D01* +X756124Y147482D01* +X756030Y147504D01* +X755935Y147521D01* +X755839Y147535D01* +X755743Y147544D01* +X755647Y147550D01* +X755550Y147552D01* +X756030Y151390D02* +X753151Y151390D01* +X756030Y151390D02* +X756116Y151388D01* +X756202Y151382D01* +X756288Y151373D01* +X756373Y151359D01* +X756457Y151342D01* +X756541Y151321D01* +X756623Y151296D01* +X756704Y151268D01* +X756784Y151236D01* +X756863Y151200D01* +X756939Y151161D01* +X757014Y151118D01* +X757087Y151073D01* +X757158Y151024D01* +X757226Y150971D01* +X757293Y150916D01* +X757356Y150858D01* +X757417Y150797D01* +X757475Y150734D01* +X757530Y150667D01* +X757583Y150599D01* +X757632Y150528D01* +X757677Y150455D01* +X757720Y150380D01* +X757759Y150304D01* +X757795Y150225D01* +X757827Y150145D01* +X757855Y150064D01* +X757880Y149982D01* +X757901Y149898D01* +X757918Y149814D01* +X757932Y149729D01* +X757941Y149643D01* +X757947Y149557D01* +X757949Y149471D01* +X757947Y149385D01* +X757941Y149299D01* +X757932Y149213D01* +X757918Y149128D01* +X757901Y149044D01* +X757880Y148960D01* +X757855Y148878D01* +X757827Y148797D01* +X757795Y148717D01* +X757759Y148638D01* +X757720Y148562D01* +X757677Y148487D01* +X757632Y148414D01* +X757583Y148343D01* +X757530Y148275D01* +X757475Y148208D01* +X757417Y148145D01* +X757356Y148084D01* +X757293Y148026D01* +X757226Y147971D01* +X757158Y147918D01* +X757087Y147869D01* +X757014Y147824D01* +X756939Y147781D01* +X756863Y147742D01* +X756784Y147706D01* +X756704Y147674D01* +X756623Y147646D01* +X756541Y147621D01* +X756457Y147600D01* +X756373Y147583D01* +X756288Y147569D01* +X756202Y147560D01* +X756116Y147554D01* +X756030Y147552D01* +X754111Y147552D01* +D20* +X815300Y30320D02* +X815300Y10320D01* +D14* +X823045Y11063D02* +X823045Y17780D01* +X823045Y11063D02* +X823043Y10977D01* +X823037Y10891D01* +X823028Y10805D01* +X823014Y10720D01* +X822997Y10636D01* +X822976Y10552D01* +X822951Y10470D01* +X822923Y10389D01* +X822891Y10309D01* +X822855Y10230D01* +X822816Y10154D01* +X822773Y10079D01* +X822728Y10006D01* +X822678Y9935D01* +X822626Y9867D01* +X822571Y9800D01* +X822513Y9737D01* +X822452Y9676D01* +X822389Y9618D01* +X822322Y9563D01* +X822254Y9510D01* +X822183Y9461D01* +X822110Y9416D01* +X822035Y9373D01* +X821959Y9334D01* +X821880Y9298D01* +X821800Y9266D01* +X821719Y9238D01* +X821636Y9213D01* +X821553Y9192D01* +X821469Y9175D01* +X821384Y9161D01* +X821298Y9152D01* +X821212Y9146D01* +X821126Y9144D01* +X820166Y9144D01* +X827642Y11063D02* +X829561Y17780D01* +X827642Y11063D02* +X832440Y11063D01* +X831001Y12982D02* +X831001Y9144D01* +X837946Y101600D02* +X792734Y101600D01* +X792734Y50800D02* +X812292Y50800D01* +X818388Y50800D01* +X837946Y50800D01* +X818388Y50800D02* +X818386Y50909D01* +X818380Y51017D01* +X818371Y51126D01* +X818357Y51234D01* +X818340Y51341D01* +X818318Y51448D01* +X818293Y51554D01* +X818265Y51659D01* +X818232Y51763D01* +X818196Y51865D01* +X818156Y51966D01* +X818113Y52066D01* +X818066Y52164D01* +X818015Y52261D01* +X817961Y52355D01* +X817904Y52448D01* +X817844Y52538D01* +X817780Y52627D01* +X817713Y52713D01* +X817644Y52796D01* +X817571Y52877D01* +X817495Y52955D01* +X817417Y53031D01* +X817336Y53104D01* +X817253Y53173D01* +X817167Y53240D01* +X817078Y53304D01* +X816988Y53364D01* +X816895Y53421D01* +X816801Y53475D01* +X816704Y53526D01* +X816606Y53573D01* +X816506Y53616D01* +X816405Y53656D01* +X816303Y53692D01* +X816199Y53725D01* +X816094Y53753D01* +X815988Y53778D01* +X815881Y53800D01* +X815774Y53817D01* +X815666Y53831D01* +X815557Y53840D01* +X815449Y53846D01* +X815340Y53848D01* +X815231Y53846D01* +X815123Y53840D01* +X815014Y53831D01* +X814906Y53817D01* +X814799Y53800D01* +X814692Y53778D01* +X814586Y53753D01* +X814481Y53725D01* +X814377Y53692D01* +X814275Y53656D01* +X814174Y53616D01* +X814074Y53573D01* +X813976Y53526D01* +X813879Y53475D01* +X813785Y53421D01* +X813692Y53364D01* +X813602Y53304D01* +X813513Y53240D01* +X813427Y53173D01* +X813344Y53104D01* +X813263Y53031D01* +X813185Y52955D01* +X813109Y52877D01* +X813036Y52796D01* +X812967Y52713D01* +X812900Y52627D01* +X812836Y52538D01* +X812776Y52448D01* +X812719Y52355D01* +X812665Y52261D01* +X812614Y52164D01* +X812567Y52066D01* +X812524Y51966D01* +X812484Y51865D01* +X812448Y51763D01* +X812415Y51659D01* +X812387Y51554D01* +X812362Y51448D01* +X812340Y51341D01* +X812323Y51234D01* +X812309Y51126D01* +X812300Y51017D01* +X812294Y50909D01* +X812292Y50800D01* +D28* +X855980Y55880D02* +X855982Y55951D01* +X855988Y56022D01* +X855998Y56093D01* +X856012Y56163D01* +X856030Y56232D01* +X856051Y56299D01* +X856077Y56366D01* +X856106Y56431D01* +X856138Y56494D01* +X856175Y56556D01* +X856214Y56615D01* +X856257Y56672D01* +X856303Y56726D01* +X856352Y56778D01* +X856404Y56827D01* +X856458Y56873D01* +X856515Y56916D01* +X856574Y56955D01* +X856636Y56992D01* +X856699Y57024D01* +X856764Y57053D01* +X856831Y57079D01* +X856898Y57100D01* +X856967Y57118D01* +X857037Y57132D01* +X857108Y57142D01* +X857179Y57148D01* +X857250Y57150D01* +X857321Y57148D01* +X857392Y57142D01* +X857463Y57132D01* +X857533Y57118D01* +X857602Y57100D01* +X857669Y57079D01* +X857736Y57053D01* +X857801Y57024D01* +X857864Y56992D01* +X857926Y56955D01* +X857985Y56916D01* +X858042Y56873D01* +X858096Y56827D01* +X858148Y56778D01* +X858197Y56726D01* +X858243Y56672D01* +X858286Y56615D01* +X858325Y56556D01* +X858362Y56494D01* +X858394Y56431D01* +X858423Y56366D01* +X858449Y56299D01* +X858470Y56232D01* +X858488Y56163D01* +X858502Y56093D01* +X858512Y56022D01* +X858518Y55951D01* +X858520Y55880D01* +X858518Y55809D01* +X858512Y55738D01* +X858502Y55667D01* +X858488Y55597D01* +X858470Y55528D01* +X858449Y55461D01* +X858423Y55394D01* +X858394Y55329D01* +X858362Y55266D01* +X858325Y55204D01* +X858286Y55145D01* +X858243Y55088D01* +X858197Y55034D01* +X858148Y54982D01* +X858096Y54933D01* +X858042Y54887D01* +X857985Y54844D01* +X857926Y54805D01* +X857864Y54768D01* +X857801Y54736D01* +X857736Y54707D01* +X857669Y54681D01* +X857602Y54660D01* +X857533Y54642D01* +X857463Y54628D01* +X857392Y54618D01* +X857321Y54612D01* +X857250Y54610D01* +X857179Y54612D01* +X857108Y54618D01* +X857037Y54628D01* +X856967Y54642D01* +X856898Y54660D01* +X856831Y54681D01* +X856764Y54707D01* +X856699Y54736D01* +X856636Y54768D01* +X856574Y54805D01* +X856515Y54844D01* +X856458Y54887D01* +X856404Y54933D01* +X856352Y54982D01* +X856303Y55034D01* +X856257Y55088D01* +X856214Y55145D01* +X856175Y55204D01* +X856138Y55266D01* +X856106Y55329D01* +X856077Y55394D01* +X856051Y55461D01* +X856030Y55528D01* +X856012Y55597D01* +X855998Y55667D01* +X855988Y55738D01* +X855982Y55809D01* +X855980Y55880D01* +D14* +X799536Y107852D02* +X799536Y114089D01* +X799536Y107852D02* +X799538Y107755D01* +X799544Y107659D01* +X799553Y107563D01* +X799567Y107467D01* +X799584Y107372D01* +X799606Y107278D01* +X799631Y107185D01* +X799659Y107092D01* +X799692Y107001D01* +X799728Y106912D01* +X799768Y106824D01* +X799811Y106737D01* +X799857Y106653D01* +X799907Y106570D01* +X799961Y106489D01* +X800017Y106411D01* +X800077Y106335D01* +X800139Y106261D01* +X800205Y106190D01* +X800273Y106122D01* +X800344Y106056D01* +X800418Y105994D01* +X800494Y105934D01* +X800572Y105878D01* +X800653Y105824D01* +X800736Y105774D01* +X800820Y105728D01* +X800907Y105685D01* +X800995Y105645D01* +X801084Y105609D01* +X801175Y105576D01* +X801268Y105548D01* +X801361Y105523D01* +X801455Y105501D01* +X801550Y105484D01* +X801646Y105470D01* +X801742Y105461D01* +X801838Y105455D01* +X801935Y105453D01* +X802032Y105455D01* +X802128Y105461D01* +X802224Y105470D01* +X802320Y105484D01* +X802415Y105501D01* +X802509Y105523D01* +X802602Y105548D01* +X802695Y105576D01* +X802786Y105609D01* +X802875Y105645D01* +X802963Y105685D01* +X803050Y105728D01* +X803135Y105774D01* +X803217Y105824D01* +X803298Y105878D01* +X803376Y105934D01* +X803452Y105994D01* +X803526Y106056D01* +X803597Y106122D01* +X803665Y106190D01* +X803731Y106261D01* +X803793Y106335D01* +X803853Y106411D01* +X803909Y106489D01* +X803963Y106570D01* +X804013Y106652D01* +X804059Y106737D01* +X804102Y106824D01* +X804142Y106912D01* +X804178Y107001D01* +X804211Y107092D01* +X804239Y107185D01* +X804264Y107278D01* +X804286Y107372D01* +X804303Y107467D01* +X804317Y107563D01* +X804326Y107659D01* +X804332Y107755D01* +X804334Y107852D01* +X804334Y114089D01* +X808985Y112170D02* +X811384Y114089D01* +X811384Y105453D01* +X808985Y105453D02* +X813783Y105453D01* +D18* +X596900Y48260D03* +D14* +X613664Y43688D02* +X613664Y35052D01* +X613664Y43688D02* +X616063Y43688D01* +X616160Y43686D01* +X616256Y43680D01* +X616352Y43671D01* +X616448Y43657D01* +X616543Y43640D01* +X616637Y43618D01* +X616730Y43593D01* +X616823Y43565D01* +X616914Y43532D01* +X617003Y43496D01* +X617091Y43456D01* +X617178Y43413D01* +X617263Y43367D01* +X617345Y43317D01* +X617426Y43263D01* +X617504Y43207D01* +X617580Y43147D01* +X617654Y43085D01* +X617725Y43019D01* +X617793Y42951D01* +X617859Y42880D01* +X617921Y42806D01* +X617981Y42730D01* +X618037Y42652D01* +X618091Y42571D01* +X618141Y42488D01* +X618187Y42404D01* +X618230Y42317D01* +X618270Y42229D01* +X618306Y42140D01* +X618339Y42049D01* +X618367Y41956D01* +X618392Y41863D01* +X618414Y41769D01* +X618431Y41674D01* +X618445Y41578D01* +X618454Y41482D01* +X618460Y41386D01* +X618462Y41289D01* +X618460Y41192D01* +X618454Y41096D01* +X618445Y41000D01* +X618431Y40904D01* +X618414Y40809D01* +X618392Y40715D01* +X618367Y40622D01* +X618339Y40529D01* +X618306Y40438D01* +X618270Y40349D01* +X618230Y40261D01* +X618187Y40174D01* +X618141Y40089D01* +X618091Y40007D01* +X618037Y39926D01* +X617981Y39848D01* +X617921Y39772D01* +X617859Y39698D01* +X617793Y39627D01* +X617725Y39559D01* +X617654Y39493D01* +X617580Y39431D01* +X617504Y39371D01* +X617426Y39315D01* +X617345Y39261D01* +X617263Y39211D01* +X617178Y39165D01* +X617091Y39122D01* +X617003Y39082D01* +X616914Y39046D01* +X616823Y39013D01* +X616730Y38985D01* +X616637Y38960D01* +X616543Y38938D01* +X616448Y38921D01* +X616352Y38907D01* +X616256Y38898D01* +X616160Y38892D01* +X616063Y38890D01* +X613664Y38890D01* +X616543Y38890D02* +X618462Y35052D01* +X622723Y36971D02* +X624642Y43688D01* +X622723Y36971D02* +X627521Y36971D01* +X626082Y38890D02* +X626082Y35052D01* +X631867Y35052D02* +X634266Y35052D01* +X634363Y35054D01* +X634459Y35060D01* +X634555Y35069D01* +X634651Y35083D01* +X634746Y35100D01* +X634840Y35122D01* +X634933Y35147D01* +X635026Y35175D01* +X635117Y35208D01* +X635206Y35244D01* +X635294Y35284D01* +X635381Y35327D01* +X635466Y35373D01* +X635548Y35423D01* +X635629Y35477D01* +X635707Y35533D01* +X635783Y35593D01* +X635857Y35655D01* +X635928Y35721D01* +X635996Y35789D01* +X636062Y35860D01* +X636124Y35934D01* +X636184Y36010D01* +X636240Y36088D01* +X636294Y36169D01* +X636344Y36251D01* +X636390Y36336D01* +X636433Y36423D01* +X636473Y36511D01* +X636509Y36600D01* +X636542Y36691D01* +X636570Y36784D01* +X636595Y36877D01* +X636617Y36971D01* +X636634Y37066D01* +X636648Y37162D01* +X636657Y37258D01* +X636663Y37354D01* +X636665Y37451D01* +X636663Y37548D01* +X636657Y37644D01* +X636648Y37740D01* +X636634Y37836D01* +X636617Y37931D01* +X636595Y38025D01* +X636570Y38118D01* +X636542Y38211D01* +X636509Y38302D01* +X636473Y38391D01* +X636433Y38479D01* +X636390Y38566D01* +X636344Y38650D01* +X636294Y38733D01* +X636240Y38814D01* +X636184Y38892D01* +X636124Y38968D01* +X636062Y39042D01* +X635996Y39113D01* +X635928Y39181D01* +X635857Y39247D01* +X635783Y39309D01* +X635707Y39369D01* +X635629Y39425D01* +X635548Y39479D01* +X635466Y39529D01* +X635381Y39575D01* +X635294Y39618D01* +X635206Y39658D01* +X635117Y39694D01* +X635026Y39727D01* +X634933Y39755D01* +X634840Y39780D01* +X634746Y39802D01* +X634651Y39819D01* +X634555Y39833D01* +X634459Y39842D01* +X634363Y39848D01* +X634266Y39850D01* +X634746Y43688D02* +X631867Y43688D01* +X634746Y43688D02* +X634832Y43686D01* +X634918Y43680D01* +X635004Y43671D01* +X635089Y43657D01* +X635173Y43640D01* +X635257Y43619D01* +X635339Y43594D01* +X635420Y43566D01* +X635500Y43534D01* +X635579Y43498D01* +X635655Y43459D01* +X635730Y43416D01* +X635803Y43371D01* +X635874Y43322D01* +X635942Y43269D01* +X636009Y43214D01* +X636072Y43156D01* +X636133Y43095D01* +X636191Y43032D01* +X636246Y42965D01* +X636299Y42897D01* +X636348Y42826D01* +X636393Y42753D01* +X636436Y42678D01* +X636475Y42602D01* +X636511Y42523D01* +X636543Y42443D01* +X636571Y42362D01* +X636596Y42280D01* +X636617Y42196D01* +X636634Y42112D01* +X636648Y42027D01* +X636657Y41941D01* +X636663Y41855D01* +X636665Y41769D01* +X636663Y41683D01* +X636657Y41597D01* +X636648Y41511D01* +X636634Y41426D01* +X636617Y41342D01* +X636596Y41258D01* +X636571Y41176D01* +X636543Y41095D01* +X636511Y41015D01* +X636475Y40936D01* +X636436Y40860D01* +X636393Y40785D01* +X636348Y40712D01* +X636299Y40641D01* +X636246Y40573D01* +X636191Y40506D01* +X636133Y40443D01* +X636072Y40382D01* +X636009Y40324D01* +X635942Y40269D01* +X635874Y40216D01* +X635803Y40167D01* +X635730Y40122D01* +X635655Y40079D01* +X635579Y40040D01* +X635500Y40004D01* +X635420Y39972D01* +X635339Y39944D01* +X635257Y39919D01* +X635173Y39898D01* +X635089Y39881D01* +X635004Y39867D01* +X634918Y39858D01* +X634832Y39852D01* +X634746Y39850D01* +X632827Y39850D01* +D18* +X726440Y55880D03* +D14* +X746252Y52832D02* +X746252Y61468D01* +X748651Y61468D01* +X748748Y61466D01* +X748844Y61460D01* +X748940Y61451D01* +X749036Y61437D01* +X749131Y61420D01* +X749225Y61398D01* +X749318Y61373D01* +X749411Y61345D01* +X749502Y61312D01* +X749591Y61276D01* +X749679Y61236D01* +X749766Y61193D01* +X749851Y61147D01* +X749933Y61097D01* +X750014Y61043D01* +X750092Y60987D01* +X750168Y60927D01* +X750242Y60865D01* +X750313Y60799D01* +X750381Y60731D01* +X750447Y60660D01* +X750509Y60586D01* +X750569Y60510D01* +X750625Y60432D01* +X750679Y60351D01* +X750729Y60268D01* +X750775Y60184D01* +X750818Y60097D01* +X750858Y60009D01* +X750894Y59920D01* +X750927Y59829D01* +X750955Y59736D01* +X750980Y59643D01* +X751002Y59549D01* +X751019Y59454D01* +X751033Y59358D01* +X751042Y59262D01* +X751048Y59166D01* +X751050Y59069D01* +X751048Y58972D01* +X751042Y58876D01* +X751033Y58780D01* +X751019Y58684D01* +X751002Y58589D01* +X750980Y58495D01* +X750955Y58402D01* +X750927Y58309D01* +X750894Y58218D01* +X750858Y58129D01* +X750818Y58041D01* +X750775Y57954D01* +X750729Y57869D01* +X750679Y57787D01* +X750625Y57706D01* +X750569Y57628D01* +X750509Y57552D01* +X750447Y57478D01* +X750381Y57407D01* +X750313Y57339D01* +X750242Y57273D01* +X750168Y57211D01* +X750092Y57151D01* +X750014Y57095D01* +X749933Y57041D01* +X749851Y56991D01* +X749766Y56945D01* +X749679Y56902D01* +X749591Y56862D01* +X749502Y56826D01* +X749411Y56793D01* +X749318Y56765D01* +X749225Y56740D01* +X749131Y56718D01* +X749036Y56701D01* +X748940Y56687D01* +X748844Y56678D01* +X748748Y56672D01* +X748651Y56670D01* +X746252Y56670D01* +X749131Y56670D02* +X751050Y52832D01* +X755311Y54751D02* +X757230Y61468D01* +X755311Y54751D02* +X760109Y54751D01* +X758670Y56670D02* +X758670Y52832D01* +X764455Y54751D02* +X766374Y61468D01* +X764455Y54751D02* +X769253Y54751D01* +X767814Y56670D02* +X767814Y52832D01* +D20* +X764500Y68740D02* +X764500Y88740D01* +D14* +X730335Y96313D02* +X730335Y103030D01* +X730335Y96313D02* +X730333Y96227D01* +X730327Y96141D01* +X730318Y96055D01* +X730304Y95970D01* +X730287Y95886D01* +X730266Y95802D01* +X730241Y95720D01* +X730213Y95639D01* +X730181Y95559D01* +X730145Y95480D01* +X730106Y95404D01* +X730063Y95329D01* +X730018Y95256D01* +X729968Y95185D01* +X729916Y95117D01* +X729861Y95050D01* +X729803Y94987D01* +X729742Y94926D01* +X729679Y94868D01* +X729612Y94813D01* +X729544Y94760D01* +X729473Y94711D01* +X729400Y94666D01* +X729325Y94623D01* +X729249Y94584D01* +X729170Y94548D01* +X729090Y94516D01* +X729009Y94488D01* +X728926Y94463D01* +X728843Y94442D01* +X728759Y94425D01* +X728674Y94411D01* +X728588Y94402D01* +X728502Y94396D01* +X728416Y94394D01* +X727456Y94394D01* +X734932Y102070D02* +X734932Y103030D01* +X739730Y103030D01* +X737331Y94394D01* +D20* +X699183Y314645D02* +X697915Y317364D01* +X683414Y310602D01* +X684682Y307883D01* +D10* +X695125Y298409D02* +X699729Y300555D01* +D14* +X597308Y304472D02* +X589481Y300822D01* +X597308Y304472D02* +X598322Y302298D01* +X598361Y302209D01* +X598397Y302120D01* +X598429Y302028D01* +X598457Y301936D01* +X598481Y301842D01* +X598502Y301748D01* +X598518Y301653D01* +X598531Y301557D01* +X598540Y301461D01* +X598546Y301364D01* +X598547Y301268D01* +X598544Y301171D01* +X598538Y301075D01* +X598528Y300979D01* +X598513Y300883D01* +X598495Y300788D01* +X598473Y300694D01* +X598448Y300601D01* +X598418Y300509D01* +X598385Y300418D01* +X598349Y300329D01* +X598308Y300241D01* +X598265Y300155D01* +X598217Y300071D01* +X598167Y299988D01* +X598113Y299908D01* +X598056Y299830D01* +X597996Y299754D01* +X597933Y299681D01* +X597867Y299611D01* +X597798Y299543D01* +X597727Y299478D01* +X597653Y299416D01* +X597576Y299356D01* +X597497Y299301D01* +X597417Y299248D01* +X597334Y299198D01* +X597249Y299152D01* +X597162Y299110D01* +X597161Y299110D02* +X593683Y297488D01* +X593594Y297449D01* +X593505Y297413D01* +X593413Y297381D01* +X593321Y297353D01* +X593227Y297329D01* +X593133Y297308D01* +X593038Y297292D01* +X592942Y297279D01* +X592846Y297270D01* +X592750Y297264D01* +X592653Y297263D01* +X592556Y297266D01* +X592460Y297272D01* +X592364Y297282D01* +X592268Y297297D01* +X592173Y297315D01* +X592079Y297337D01* +X591986Y297362D01* +X591894Y297392D01* +X591803Y297425D01* +X591714Y297461D01* +X591626Y297502D01* +X591540Y297545D01* +X591456Y297593D01* +X591373Y297643D01* +X591293Y297697D01* +X591215Y297754D01* +X591139Y297814D01* +X591066Y297877D01* +X590996Y297943D01* +X590928Y298012D01* +X590863Y298083D01* +X590801Y298157D01* +X590742Y298234D01* +X590686Y298312D01* +X590633Y298393D01* +X590583Y298476D01* +X590537Y298561D01* +X590495Y298648D01* +X589481Y300822D01* +X593474Y292259D02* +X594691Y289650D01* +X594729Y289573D01* +X594770Y289497D01* +X594815Y289424D01* +X594864Y289352D01* +X594915Y289283D01* +X594969Y289217D01* +X595027Y289152D01* +X595087Y289091D01* +X595149Y289032D01* +X595215Y288976D01* +X595283Y288923D01* +X595353Y288873D01* +X595425Y288826D01* +X595500Y288783D01* +X595576Y288743D01* +X595654Y288706D01* +X595733Y288673D01* +X595814Y288643D01* +X595896Y288618D01* +X595980Y288596D01* +X596064Y288577D01* +X596149Y288563D01* +X596234Y288552D01* +X596320Y288545D01* +X596406Y288542D01* +X596492Y288543D01* +X596578Y288548D01* +X596664Y288556D01* +X596749Y288569D01* +X596834Y288585D01* +X596917Y288605D01* +X597000Y288629D01* +X597082Y288656D01* +X597162Y288687D01* +X597241Y288722D01* +X598111Y289127D01* +X598188Y289165D01* +X598264Y289206D01* +X598337Y289251D01* +X598409Y289300D01* +X598478Y289351D01* +X598544Y289405D01* +X598609Y289463D01* +X598670Y289523D01* +X598729Y289586D01* +X598785Y289651D01* +X598838Y289719D01* +X598888Y289789D01* +X598935Y289861D01* +X598978Y289936D01* +X599018Y290012D01* +X599055Y290090D01* +X599088Y290169D01* +X599118Y290250D01* +X599143Y290332D01* +X599165Y290416D01* +X599184Y290500D01* +X599198Y290585D01* +X599209Y290670D01* +X599216Y290756D01* +X599219Y290842D01* +X599218Y290928D01* +X599213Y291014D01* +X599205Y291100D01* +X599192Y291185D01* +X599176Y291270D01* +X599156Y291353D01* +X599132Y291436D01* +X599105Y291518D01* +X599074Y291598D01* +X599039Y291677D01* +X599039Y291678D02* +X597822Y294286D01* +X601301Y295909D01* +X603329Y291560D01* +D20* +X778435Y307584D02* +X779703Y310303D01* +X765202Y317065D01* +X763935Y314346D01* +D10* +X763389Y300257D02* +X767993Y298110D01* +D14* +X858975Y299211D02* +X866802Y295561D01* +X858975Y299211D02* +X859989Y301385D01* +X860031Y301472D01* +X860077Y301557D01* +X860127Y301640D01* +X860180Y301720D01* +X860236Y301799D01* +X860295Y301876D01* +X860357Y301950D01* +X860422Y302021D01* +X860490Y302090D01* +X860560Y302156D01* +X860633Y302219D01* +X860709Y302279D01* +X860787Y302336D01* +X860867Y302390D01* +X860950Y302441D01* +X861034Y302488D01* +X861120Y302531D01* +X861208Y302572D01* +X861297Y302608D01* +X861388Y302641D01* +X861480Y302671D01* +X861573Y302696D01* +X861667Y302718D01* +X861762Y302736D01* +X861858Y302751D01* +X861954Y302761D01* +X862050Y302767D01* +X862147Y302770D01* +X862244Y302769D01* +X862340Y302763D01* +X862436Y302754D01* +X862532Y302741D01* +X862627Y302725D01* +X862722Y302704D01* +X862815Y302680D01* +X862908Y302652D01* +X862999Y302620D01* +X863089Y302584D01* +X863177Y302545D01* +X866655Y300923D01* +X866742Y300881D01* +X866827Y300835D01* +X866910Y300785D01* +X866991Y300732D01* +X867069Y300676D01* +X867146Y300617D01* +X867220Y300555D01* +X867291Y300490D01* +X867360Y300422D01* +X867426Y300352D01* +X867489Y300279D01* +X867549Y300203D01* +X867606Y300125D01* +X867660Y300045D01* +X867710Y299962D01* +X867758Y299878D01* +X867801Y299792D01* +X867842Y299704D01* +X867878Y299615D01* +X867911Y299524D01* +X867941Y299432D01* +X867966Y299339D01* +X867988Y299245D01* +X868006Y299150D01* +X868021Y299054D01* +X868031Y298958D01* +X868037Y298862D01* +X868040Y298765D01* +X868039Y298668D01* +X868033Y298572D01* +X868024Y298476D01* +X868011Y298380D01* +X867995Y298285D01* +X867974Y298191D01* +X867950Y298097D01* +X867922Y298005D01* +X867890Y297913D01* +X867854Y297824D01* +X867815Y297735D01* +X867816Y297735D02* +X866802Y295561D01* +X866447Y306152D02* +X867663Y308761D01* +X867701Y308838D01* +X867742Y308914D01* +X867787Y308987D01* +X867836Y309059D01* +X867887Y309128D01* +X867941Y309194D01* +X867999Y309259D01* +X868059Y309320D01* +X868121Y309379D01* +X868187Y309435D01* +X868255Y309488D01* +X868325Y309538D01* +X868397Y309585D01* +X868472Y309628D01* +X868548Y309668D01* +X868626Y309705D01* +X868705Y309738D01* +X868786Y309768D01* +X868868Y309793D01* +X868952Y309815D01* +X869036Y309834D01* +X869121Y309848D01* +X869206Y309859D01* +X869292Y309866D01* +X869378Y309869D01* +X869464Y309868D01* +X869550Y309863D01* +X869636Y309855D01* +X869721Y309842D01* +X869806Y309826D01* +X869889Y309806D01* +X869972Y309782D01* +X870054Y309755D01* +X870134Y309724D01* +X870213Y309689D01* +X870214Y309689D02* +X870648Y309487D01* +X870649Y309486D02* +X870736Y309444D01* +X870821Y309398D01* +X870904Y309348D01* +X870984Y309295D01* +X871063Y309240D01* +X871140Y309180D01* +X871214Y309118D01* +X871285Y309053D01* +X871354Y308985D01* +X871420Y308915D01* +X871483Y308842D01* +X871543Y308766D01* +X871600Y308688D01* +X871654Y308608D01* +X871704Y308525D01* +X871752Y308441D01* +X871795Y308355D01* +X871836Y308267D01* +X871872Y308178D01* +X871905Y308087D01* +X871935Y307995D01* +X871960Y307902D01* +X871982Y307808D01* +X872000Y307713D01* +X872015Y307617D01* +X872025Y307521D01* +X872031Y307425D01* +X872034Y307328D01* +X872033Y307232D01* +X872027Y307135D01* +X872018Y307039D01* +X872005Y306943D01* +X871989Y306848D01* +X871968Y306754D01* +X871944Y306660D01* +X871916Y306568D01* +X871884Y306476D01* +X871848Y306387D01* +X871809Y306298D01* +X871767Y306211D01* +X871721Y306126D01* +X871671Y306043D01* +X871618Y305963D01* +X871563Y305884D01* +X871503Y305807D01* +X871441Y305733D01* +X871376Y305662D01* +X871308Y305593D01* +X871238Y305527D01* +X871165Y305464D01* +X871089Y305404D01* +X871011Y305347D01* +X870931Y305293D01* +X870848Y305243D01* +X870764Y305195D01* +X870678Y305152D01* +X870590Y305111D01* +X870501Y305075D01* +X870410Y305042D01* +X870318Y305012D01* +X870225Y304987D01* +X870131Y304965D01* +X870036Y304947D01* +X869940Y304932D01* +X869844Y304922D01* +X869748Y304916D01* +X869651Y304913D01* +X869554Y304914D01* +X869458Y304920D01* +X869362Y304929D01* +X869266Y304942D01* +X869171Y304958D01* +X869077Y304979D01* +X868983Y305003D01* +X868891Y305031D01* +X868799Y305063D01* +X868710Y305099D01* +X868621Y305138D01* +X866447Y306152D01* +X866447Y306153D02* +X866336Y306206D01* +X866227Y306264D01* +X866120Y306324D01* +X866015Y306389D01* +X865913Y306456D01* +X865812Y306527D01* +X865714Y306601D01* +X865618Y306678D01* +X865524Y306758D01* +X865434Y306841D01* +X865345Y306927D01* +X865260Y307015D01* +X865178Y307107D01* +X865098Y307201D01* +X865022Y307297D01* +X864949Y307396D01* +X864879Y307497D01* +X864812Y307601D01* +X864749Y307706D01* +X864689Y307813D01* +X864632Y307923D01* +X864579Y308034D01* +X864530Y308146D01* +X864484Y308261D01* +X864442Y308376D01* +X864404Y308493D01* +X864369Y308611D01* +X864338Y308730D01* +X864311Y308850D01* +X864288Y308971D01* +X864269Y309093D01* +X864254Y309215D01* +X864242Y309337D01* +X864235Y309460D01* +X864231Y309583D01* +X864232Y309706D01* +X864236Y309829D01* +X864244Y309952D01* +X864257Y310074D01* +X864273Y310196D01* +X864293Y310318D01* +X864317Y310438D01* +X864345Y310558D01* +X864376Y310677D01* +X864412Y310795D01* +X864451Y310911D01* +X864494Y311027D01* +X864540Y311141D01* +X864591Y311253D01* +D17* +X848360Y248920D03* +D14* +X840486Y242570D02* +X840486Y233934D01* +X840486Y242570D02* +X842885Y242570D01* +X842982Y242568D01* +X843078Y242562D01* +X843174Y242553D01* +X843270Y242539D01* +X843365Y242522D01* +X843459Y242500D01* +X843552Y242475D01* +X843645Y242447D01* +X843736Y242414D01* +X843825Y242378D01* +X843913Y242338D01* +X844000Y242295D01* +X844085Y242249D01* +X844167Y242199D01* +X844248Y242145D01* +X844326Y242089D01* +X844402Y242029D01* +X844476Y241967D01* +X844547Y241901D01* +X844615Y241833D01* +X844681Y241762D01* +X844743Y241688D01* +X844803Y241612D01* +X844859Y241534D01* +X844913Y241453D01* +X844963Y241370D01* +X845009Y241286D01* +X845052Y241199D01* +X845092Y241111D01* +X845128Y241022D01* +X845161Y240931D01* +X845189Y240838D01* +X845214Y240745D01* +X845236Y240651D01* +X845253Y240556D01* +X845267Y240460D01* +X845276Y240364D01* +X845282Y240268D01* +X845284Y240171D01* +X845282Y240074D01* +X845276Y239978D01* +X845267Y239882D01* +X845253Y239786D01* +X845236Y239691D01* +X845214Y239597D01* +X845189Y239504D01* +X845161Y239411D01* +X845128Y239320D01* +X845092Y239231D01* +X845052Y239143D01* +X845009Y239056D01* +X844963Y238972D01* +X844913Y238889D01* +X844859Y238808D01* +X844803Y238730D01* +X844743Y238654D01* +X844681Y238580D01* +X844615Y238509D01* +X844547Y238441D01* +X844476Y238375D01* +X844402Y238313D01* +X844326Y238253D01* +X844248Y238197D01* +X844167Y238143D01* +X844085Y238093D01* +X844000Y238047D01* +X843913Y238004D01* +X843825Y237964D01* +X843736Y237928D01* +X843645Y237895D01* +X843552Y237867D01* +X843459Y237842D01* +X843365Y237820D01* +X843270Y237803D01* +X843174Y237789D01* +X843078Y237780D01* +X842982Y237774D01* +X842885Y237772D01* +X840486Y237772D01* +X843365Y237772D02* +X845284Y233934D01* +X849545Y235853D02* +X851464Y242570D01* +X849545Y235853D02* +X854343Y235853D01* +X852904Y237772D02* +X852904Y233934D01* +X858689Y233934D02* +X861568Y233934D01* +X861654Y233936D01* +X861740Y233942D01* +X861826Y233951D01* +X861911Y233965D01* +X861995Y233982D01* +X862079Y234003D01* +X862161Y234028D01* +X862242Y234056D01* +X862322Y234088D01* +X862401Y234124D01* +X862477Y234163D01* +X862552Y234206D01* +X862625Y234251D01* +X862696Y234301D01* +X862764Y234353D01* +X862831Y234408D01* +X862894Y234466D01* +X862955Y234527D01* +X863013Y234590D01* +X863068Y234657D01* +X863121Y234725D01* +X863170Y234796D01* +X863215Y234869D01* +X863258Y234944D01* +X863297Y235020D01* +X863333Y235099D01* +X863365Y235179D01* +X863393Y235260D01* +X863418Y235343D01* +X863439Y235426D01* +X863456Y235510D01* +X863470Y235595D01* +X863479Y235681D01* +X863485Y235767D01* +X863487Y235853D01* +X863487Y236813D01* +X863485Y236899D01* +X863479Y236985D01* +X863470Y237071D01* +X863456Y237156D01* +X863439Y237240D01* +X863418Y237324D01* +X863393Y237406D01* +X863365Y237487D01* +X863333Y237567D01* +X863297Y237646D01* +X863258Y237722D01* +X863215Y237797D01* +X863170Y237870D01* +X863121Y237941D01* +X863068Y238009D01* +X863013Y238076D01* +X862955Y238139D01* +X862894Y238200D01* +X862831Y238258D01* +X862764Y238313D01* +X862696Y238366D01* +X862625Y238415D01* +X862552Y238460D01* +X862477Y238503D01* +X862401Y238542D01* +X862322Y238578D01* +X862242Y238610D01* +X862161Y238638D01* +X862079Y238663D01* +X861995Y238684D01* +X861911Y238701D01* +X861826Y238715D01* +X861740Y238724D01* +X861654Y238730D01* +X861568Y238732D01* +X858689Y238732D01* +X858689Y242570D01* +X863487Y242570D01* +D17* +X855980Y261620D03* +D14* +X847852Y268224D02* +X847852Y276860D01* +X850251Y276860D01* +X850348Y276858D01* +X850444Y276852D01* +X850540Y276843D01* +X850636Y276829D01* +X850731Y276812D01* +X850825Y276790D01* +X850918Y276765D01* +X851011Y276737D01* +X851102Y276704D01* +X851191Y276668D01* +X851279Y276628D01* +X851366Y276585D01* +X851451Y276539D01* +X851533Y276489D01* +X851614Y276435D01* +X851692Y276379D01* +X851768Y276319D01* +X851842Y276257D01* +X851913Y276191D01* +X851981Y276123D01* +X852047Y276052D01* +X852109Y275978D01* +X852169Y275902D01* +X852225Y275824D01* +X852279Y275743D01* +X852329Y275661D01* +X852375Y275576D01* +X852418Y275489D01* +X852458Y275401D01* +X852494Y275312D01* +X852527Y275221D01* +X852555Y275128D01* +X852580Y275035D01* +X852602Y274941D01* +X852619Y274846D01* +X852633Y274750D01* +X852642Y274654D01* +X852648Y274558D01* +X852650Y274461D01* +X852648Y274364D01* +X852642Y274268D01* +X852633Y274172D01* +X852619Y274076D01* +X852602Y273981D01* +X852580Y273887D01* +X852555Y273794D01* +X852527Y273701D01* +X852494Y273610D01* +X852458Y273521D01* +X852418Y273433D01* +X852375Y273346D01* +X852329Y273262D01* +X852279Y273179D01* +X852225Y273098D01* +X852169Y273020D01* +X852109Y272944D01* +X852047Y272870D01* +X851981Y272799D01* +X851913Y272731D01* +X851842Y272665D01* +X851768Y272603D01* +X851692Y272543D01* +X851614Y272487D01* +X851533Y272433D01* +X851451Y272383D01* +X851366Y272337D01* +X851279Y272294D01* +X851191Y272254D01* +X851102Y272218D01* +X851011Y272185D01* +X850918Y272157D01* +X850825Y272132D01* +X850731Y272110D01* +X850636Y272093D01* +X850540Y272079D01* +X850444Y272070D01* +X850348Y272064D01* +X850251Y272062D01* +X847852Y272062D01* +X850731Y272062D02* +X852650Y268224D01* +X856911Y270143D02* +X858830Y276860D01* +X856911Y270143D02* +X861709Y270143D01* +X860270Y272062D02* +X860270Y268224D01* +X866055Y273022D02* +X868934Y273022D01* +X869020Y273020D01* +X869106Y273014D01* +X869192Y273005D01* +X869277Y272991D01* +X869361Y272974D01* +X869445Y272953D01* +X869527Y272928D01* +X869608Y272900D01* +X869688Y272868D01* +X869767Y272832D01* +X869843Y272793D01* +X869918Y272750D01* +X869991Y272705D01* +X870062Y272656D01* +X870130Y272603D01* +X870197Y272548D01* +X870260Y272490D01* +X870321Y272429D01* +X870379Y272366D01* +X870434Y272299D01* +X870487Y272231D01* +X870536Y272160D01* +X870581Y272087D01* +X870624Y272012D01* +X870663Y271936D01* +X870699Y271857D01* +X870731Y271777D01* +X870759Y271696D01* +X870784Y271614D01* +X870805Y271530D01* +X870822Y271446D01* +X870836Y271361D01* +X870845Y271275D01* +X870851Y271189D01* +X870853Y271103D01* +X870853Y270623D01* +X870851Y270526D01* +X870845Y270430D01* +X870836Y270334D01* +X870822Y270238D01* +X870805Y270143D01* +X870783Y270049D01* +X870758Y269956D01* +X870730Y269863D01* +X870697Y269772D01* +X870661Y269683D01* +X870621Y269595D01* +X870578Y269508D01* +X870532Y269424D01* +X870482Y269341D01* +X870428Y269260D01* +X870372Y269182D01* +X870312Y269106D01* +X870250Y269032D01* +X870184Y268961D01* +X870116Y268893D01* +X870045Y268827D01* +X869971Y268765D01* +X869895Y268705D01* +X869817Y268649D01* +X869736Y268595D01* +X869654Y268545D01* +X869569Y268499D01* +X869482Y268456D01* +X869394Y268416D01* +X869305Y268380D01* +X869214Y268347D01* +X869121Y268319D01* +X869028Y268294D01* +X868934Y268272D01* +X868839Y268255D01* +X868743Y268241D01* +X868647Y268232D01* +X868551Y268226D01* +X868454Y268224D01* +X868357Y268226D01* +X868261Y268232D01* +X868165Y268241D01* +X868069Y268255D01* +X867974Y268272D01* +X867880Y268294D01* +X867787Y268319D01* +X867694Y268347D01* +X867603Y268380D01* +X867514Y268416D01* +X867426Y268456D01* +X867339Y268499D01* +X867255Y268545D01* +X867172Y268595D01* +X867091Y268649D01* +X867013Y268705D01* +X866937Y268765D01* +X866863Y268827D01* +X866792Y268893D01* +X866724Y268961D01* +X866658Y269032D01* +X866596Y269106D01* +X866536Y269182D01* +X866480Y269260D01* +X866426Y269341D01* +X866376Y269424D01* +X866330Y269508D01* +X866287Y269595D01* +X866247Y269683D01* +X866211Y269772D01* +X866178Y269863D01* +X866150Y269956D01* +X866125Y270049D01* +X866103Y270143D01* +X866086Y270238D01* +X866072Y270334D01* +X866063Y270430D01* +X866057Y270526D01* +X866055Y270623D01* +X866055Y273022D01* +X866056Y273022D02* +X866058Y273145D01* +X866064Y273268D01* +X866074Y273391D01* +X866088Y273513D01* +X866105Y273635D01* +X866127Y273756D01* +X866152Y273876D01* +X866182Y273996D01* +X866215Y274114D01* +X866252Y274231D01* +X866292Y274348D01* +X866336Y274462D01* +X866384Y274576D01* +X866436Y274687D01* +X866491Y274797D01* +X866550Y274905D01* +X866612Y275012D01* +X866677Y275116D01* +X866746Y275218D01* +X866818Y275318D01* +X866893Y275415D01* +X866972Y275510D01* +X867053Y275602D01* +X867137Y275692D01* +X867224Y275779D01* +X867314Y275863D01* +X867406Y275944D01* +X867501Y276023D01* +X867598Y276098D01* +X867698Y276170D01* +X867800Y276239D01* +X867904Y276304D01* +X868011Y276366D01* +X868119Y276425D01* +X868229Y276480D01* +X868340Y276532D01* +X868454Y276579D01* +X868568Y276624D01* +X868685Y276664D01* +X868802Y276701D01* +X868920Y276734D01* +X869040Y276764D01* +X869160Y276789D01* +X869281Y276811D01* +X869403Y276828D01* +X869525Y276842D01* +X869648Y276852D01* +X869771Y276858D01* +X869894Y276860D01* +D29* +X730809Y168656D03* +D30* +X730453Y169367D03* +D31* +X730453Y170078D03* +D32* +X730809Y170790D03* +D33* +X730453Y171501D03* +D34* +X730453Y172212D03* +D35* +X730453Y172923D03* +D36* +X730453Y173634D03* +X730453Y174346D03* +D37* +X730453Y175057D03* +D36* +X730453Y175768D03* +D38* +X718363Y176479D03* +D37* +X730453Y176479D03* +D39* +X718363Y177190D03* +D36* +X730453Y177190D03* +D40* +X742188Y177190D03* +D41* +X725830Y177902D03* +D42* +X742188Y177902D03* +D43* +X725119Y178613D03* +D44* +X742188Y178613D03* +D45* +X730098Y179324D03* +D46* +X730098Y180035D03* +D47* +X730453Y180746D03* +X730453Y181458D03* +D48* +X730098Y182169D03* +D49* +X730098Y182880D03* +D50* +X730453Y183591D03* +D51* +X706984Y184302D03* +D52* +X730453Y184302D03* +D39* +X706984Y185014D03* +D47* +X730453Y185014D03* +D53* +X753923Y185014D03* +D54* +X706984Y185725D03* +D55* +X730453Y185725D03* +D30* +X753923Y185725D03* +D56* +X730098Y186436D03* +D57* +X730098Y187147D03* +D58* +X730098Y187858D03* +D59* +X730453Y188570D03* +D60* +X730098Y189281D03* +D61* +X730098Y189992D03* +D62* +X730453Y190703D03* +D63* +X730453Y191414D03* +X730453Y192126D03* +D64* +X695604Y192837D03* +D62* +X730453Y192837D03* +D65* +X765302Y192837D03* +D66* +X695249Y193548D03* +D59* +X730453Y193548D03* +D39* +X765302Y193548D03* +D48* +X709473Y194259D03* +D67* +X746455Y194259D03* +D68* +X765302Y194259D03* +D69* +X707339Y194970D03* +D70* +X753212Y194970D03* +D71* +X705917Y195682D03* +D72* +X754634Y195682D03* +D73* +X704850Y196393D03* +X756056Y196393D03* +D74* +X703783Y197104D03* +D75* +X756768Y197104D03* +D76* +X703428Y197815D03* +X757479Y197815D03* +D77* +X702716Y198526D03* +X758190Y198526D03* +D78* +X702361Y199238D03* +D79* +X758546Y199238D03* +D80* +X701650Y199949D03* +X759257Y199949D03* +D81* +X683870Y200660D03* +D82* +X701294Y200660D03* +D53* +X730453Y200660D03* +D82* +X759612Y200660D03* +D83* +X683870Y201371D03* +D84* +X700938Y201371D03* +D54* +X730453Y201371D03* +D84* +X759968Y201371D03* +D64* +X776681Y201371D03* +D85* +X695960Y202082D03* +D86* +X730453Y202082D03* +D87* +X759968Y202082D03* +D66* +X777037Y202082D03* +D71* +X695249Y202794D03* +D36* +X730453Y202794D03* +D72* +X765302Y202794D03* +D88* +X694893Y203505D03* +D89* +X730809Y203505D03* +D90* +X765658Y203505D03* +D91* +X694182Y204216D03* +D92* +X730453Y204216D03* +D71* +X766369Y204216D03* +D90* +X693826Y204927D03* +D30* +X724052Y204927D03* +D93* +X730809Y204927D03* +D30* +X737565Y204927D03* +D94* +X766724Y204927D03* +D71* +X693826Y205638D03* +D95* +X722630Y205638D03* +D96* +X730809Y205638D03* +D97* +X738988Y205638D03* +D72* +X767436Y205638D03* +D98* +X693471Y206350D03* +D99* +X721208Y206350D03* +D96* +X730809Y206350D03* +D99* +X740410Y206350D03* +D72* +X767436Y206350D03* +D94* +X692760Y207061D03* +D93* +X720141Y207061D03* +X730809Y207061D03* +X741477Y207061D03* +D100* +X767791Y207061D03* +D72* +X692760Y207772D03* +D51* +X719074Y207772D03* +D96* +X730809Y207772D03* +D51* +X742544Y207772D03* +D101* +X767791Y207772D03* +D73* +X692760Y208483D03* +D102* +X718363Y208483D03* +D93* +X730809Y208483D03* +D102* +X743255Y208483D03* +D103* +X768147Y208483D03* +D104* +X692760Y209194D03* +D105* +X717652Y209194D03* +D96* +X730809Y209194D03* +D106* +X743966Y209194D03* +D107* +X768147Y209194D03* +D81* +X673202Y209906D03* +D108* +X692404Y209906D03* +D105* +X716940Y209906D03* +D96* +X730809Y209906D03* +D105* +X744677Y209906D03* +D74* +X768502Y209906D03* +D83* +X673202Y210617D03* +D76* +X692760Y210617D03* +D93* +X730809Y210617D03* +D76* +X768147Y210617D03* +D64* +X787349Y210617D03* +D109* +X688137Y211328D03* +D96* +X730809Y211328D03* +D75* +X768147Y211328D03* +D66* +X787705Y211328D03* +D110* +X687426Y212039D03* +D111* +X730809Y212039D03* +D50* +X773125Y212039D03* +D112* +X687070Y212750D03* +D113* +X730809Y212750D03* +D109* +X773481Y212750D03* +D114* +X686714Y213462D03* +D66* +X730809Y213462D03* +D112* +X773836Y213462D03* +D115* +X686714Y214173D03* +D54* +X730453Y214173D03* +D116* +X773836Y214173D03* +D117* +X686359Y214884D03* +D118* +X730809Y214884D03* +D112* +X774548Y214884D03* +D115* +X686003Y215595D03* +D119* +X730453Y215595D03* +D116* +X774548Y215595D03* +D114* +X686003Y216306D03* +D86* +X730453Y216306D03* +D112* +X774548Y216306D03* +D114* +X686003Y217018D03* +D81* +X727253Y217018D03* +D120* +X733654Y217018D03* +D112* +X774548Y217018D03* +D121* +X686359Y217729D03* +D93* +X725830Y217729D03* +X735076Y217729D03* +D116* +X774548Y217729D03* +D117* +X686359Y218440D03* +D122* +X725475Y218440D03* +X736143Y218440D03* +D112* +X774548Y218440D03* +D102* +X662889Y219151D03* +D121* +X686359Y219151D03* +D65* +X724764Y219151D03* +X736854Y219151D03* +D116* +X774548Y219151D03* +D39* +X662889Y219862D03* +D109* +X686714Y219862D03* +D51* +X724052Y219862D03* +D122* +X737565Y219862D03* +D123* +X774548Y219862D03* +D96* +X797662Y219862D03* +D124* +X682092Y220574D03* +D122* +X723341Y220574D03* +X737565Y220574D03* +D123* +X774548Y220574D03* +D39* +X798017Y220574D03* +D125* +X681736Y221285D03* +D65* +X722630Y221285D03* +X738276Y221285D03* +D126* +X778815Y221285D03* +D127* +X681380Y221996D03* +D96* +X722274Y221996D03* +D51* +X738988Y221996D03* +D128* +X779170Y221996D03* +D129* +X680669Y222707D03* +D93* +X721563Y222707D03* +X739343Y222707D03* +D130* +X779882Y222707D03* +D127* +X680669Y223418D03* +D51* +X721208Y223418D03* +D96* +X740054Y223418D03* +D127* +X780237Y223418D03* +D131* +X680314Y224130D03* +D51* +X720496Y224130D03* +D96* +X740766Y224130D03* +D127* +X780237Y224130D03* +D132* +X679958Y224841D03* +D93* +X719430Y224841D03* +X741477Y224841D03* +D130* +X780593Y224841D03* +D133* +X679958Y225552D03* +D81* +X718718Y225552D03* +X742899Y225552D03* +D127* +X780948Y225552D03* +D132* +X679958Y226263D03* +D111* +X718007Y226263D03* +D38* +X743255Y226263D03* +D129* +X780948Y226263D03* +D128* +X679602Y226974D03* +D96* +X717296Y226974D03* +X743610Y226974D03* +D134* +X781304Y226974D03* +D128* +X679602Y227686D03* +D135* +X717296Y227686D03* +D51* +X743966Y227686D03* +D134* +X781304Y227686D03* +D136* +X679958Y228397D03* +X780948Y228397D03* +D97* +X652221Y229108D03* +D124* +X679958Y229108D03* +D137* +X781304Y229108D03* +D138* +X652577Y229819D03* +D139* +X679958Y229819D03* +D140* +X781304Y229819D03* +D141* +X807974Y229819D03* +D142* +X674980Y230530D03* +D143* +X785216Y230530D03* +D142* +X674980Y231242D03* +D144* +X785927Y231242D03* +D145* +X674268Y231953D03* +D146* +X786282Y231953D03* +D147* +X673913Y232664D03* +D148* +X786638Y232664D03* +D149* +X673913Y233375D03* +D150* +X786638Y233375D03* +D142* +X673557Y234086D03* +X787349Y234086D03* +D56* +X673202Y234798D03* +D142* +X787349Y234798D03* +D151* +X673202Y235509D03* +D145* +X787349Y235509D03* +D148* +X672846Y236220D03* +D152* +X787705Y236220D03* +D146* +X673202Y236931D03* +X787705Y236931D03* +D152* +X673202Y237642D03* +X787705Y237642D03* +D143* +X672846Y238354D03* +X788060Y238354D03* +D65* +X642976Y239065D03* +D153* +X673202Y239065D03* +X787705Y239065D03* +D61* +X669646Y239776D03* +D154* +X787705Y239776D03* +D105* +X817220Y239776D03* +D155* +X669290Y240487D03* +D156* +X787705Y240487D03* +D157* +X817575Y240487D03* +D63* +X668579Y241198D03* +D158* +X791616Y241198D03* +D159* +X668223Y241910D03* +D61* +X791972Y241910D03* +D160* +X667868Y242621D03* +D155* +X792328Y242621D03* +D161* +X667512Y243332D03* +D63* +X793039Y243332D03* +D162* +X667512Y244043D03* +D62* +X793039Y244043D03* +D163* +X667156Y244754D03* +D159* +X793394Y244754D03* +X666801Y245466D03* +D164* +X793750Y245466D03* +D165* +X666801Y246177D03* +D155* +X793750Y246177D03* +D159* +X666801Y246888D03* +D164* +X793750Y246888D03* +D62* +X666445Y247599D03* +D60* +X794106Y247599D03* +D61* +X666801Y248310D03* +X794106Y248310D03* +X666801Y249022D03* +X794106Y249022D03* +D166* +X667156Y249733D03* +D167* +X794106Y249733D03* +D29* +X634797Y250444D03* +D58* +X666801Y250444D03* +X794106Y250444D03* +D168* +X663956Y251155D03* +D169* +X793750Y251155D03* +D170* +X825398Y251155D03* +D171* +X663245Y251866D03* +D172* +X796950Y251866D03* +D171* +X662534Y252578D03* +D173* +X797662Y252578D03* +D174* +X662534Y253289D03* +D175* +X798017Y253289D03* +D176* +X662178Y254000D03* +D171* +X798373Y254000D03* +D177* +X661467Y254711D03* +D175* +X798728Y254711D03* +D178* +X661467Y255422D03* +D179* +X799084Y255422D03* +D178* +X661467Y256134D03* +D179* +X799084Y256134D03* +D174* +X661111Y256845D03* +X799795Y256845D03* +D171* +X661111Y257556D03* +X799795Y257556D03* +D174* +X661111Y258267D03* +X799795Y258267D03* +D180* +X660756Y258978D03* +X800151Y258978D03* +X660756Y259690D03* +D181* +X799795Y259690D03* +D182* +X661111Y260401D03* +X799795Y260401D03* +D181* +X661111Y261112D03* +D183* +X800151Y261112D03* +D184* +X626262Y261823D03* +D185* +X661111Y261823D03* +X799795Y261823D03* +D186* +X657911Y262534D03* +D187* +X799795Y262534D03* +D188* +X657555Y263246D03* +D189* +X802640Y263246D03* +D190* +X656844Y263957D03* +D191* +X803351Y263957D03* +D192* +X656488Y264668D03* +D186* +X803707Y264668D03* +D193* +X656133Y265379D03* +D190* +X804062Y265379D03* +D192* +X655777Y266090D03* +D194* +X804418Y266090D03* +D195* +X655422Y266802D03* +D196* +X804774Y266802D03* +D197* +X655422Y267513D03* +D190* +X804774Y267513D03* +D192* +X655066Y268224D03* +D188* +X805485Y268224D03* +D198* +X655066Y268935D03* +D199* +X805485Y268935D03* +D192* +X655066Y269646D03* +D188* +X805485Y269646D03* +D192* +X655066Y270358D03* +D186* +X805840Y270358D03* +D200* +X655066Y271069D03* +D201* +X805840Y271069D03* +D194* +X655066Y271780D03* +D202* +X805485Y271780D03* +D200* +X655066Y272491D03* +D203* +X805840Y272491D03* +D204* +X655066Y273202D03* +X805840Y273202D03* +D189* +X655422Y273914D03* +X805485Y273914D03* +D177* +X655777Y274625D03* +X805129Y274625D03* +D202* +X653999Y275336D03* +D180* +X805129Y275336D03* +D190* +X653288Y276047D03* +D205* +X806196Y276047D03* +D192* +X652932Y276758D03* +D202* +X806907Y276758D03* +D192* +X652221Y277470D03* +D194* +X807974Y277470D03* +D197* +X651866Y278181D03* +D190* +X808330Y278181D03* +D206* +X651510Y278892D03* +D192* +X808685Y278892D03* +D207* +X651510Y279603D03* +D193* +X809041Y279603D03* +D208* +X650799Y280314D03* +D192* +X809396Y280314D03* +D208* +X650799Y281026D03* +D192* +X809396Y281026D03* +D209* +X650799Y281737D03* +D197* +X809752Y281737D03* +D208* +X650799Y282448D03* +D195* +X809752Y282448D03* +D209* +X650799Y283159D03* +D197* +X809752Y283159D03* +D210* +X650443Y283870D03* +D192* +X810108Y283870D03* +X650799Y284582D03* +X810108Y284582D03* +D198* +X650799Y285293D03* +D190* +X809752Y285293D03* +D196* +X651154Y286004D03* +X809752Y286004D03* +D200* +X651510Y286715D03* +D201* +X809396Y286715D03* +D204* +X651510Y287426D03* +D211* +X809752Y287426D03* +D189* +X651866Y288138D03* +D204* +X809396Y288138D03* +D198* +X650088Y288849D03* +D177* +X808685Y288849D03* +D208* +X649376Y289560D03* +D211* +X809752Y289560D03* +D212* +X649021Y290271D03* +D199* +X810463Y290271D03* +D213* +X648665Y290982D03* +D195* +X811174Y290982D03* +D214* +X648310Y291694D03* +D195* +X811886Y291694D03* +D215* +X647954Y292405D03* +D209* +X812241Y292405D03* +D216* +X647954Y293116D03* +D208* +X812241Y293116D03* +D217* +X647598Y293827D03* +D212* +X812597Y293827D03* +D218* +X647598Y294538D03* +D214* +X812597Y294538D03* +D218* +X647598Y295250D03* +D214* +X812597Y295250D03* +D217* +X647598Y295961D03* +D212* +X812597Y295961D03* +D218* +X647598Y296672D03* +D214* +X812597Y296672D03* +D212* +X647598Y297383D03* +D219* +X696316Y297383D03* +X699160Y297383D03* +D220* +X761746Y297383D03* +D184* +X764946Y297383D03* +D209* +X812952Y297383D03* +D214* +X647598Y298094D03* +D97* +X697027Y298094D03* +X763880Y298094D03* +D208* +X812952Y298094D03* +D214* +X647598Y298806D03* +D113* +X696671Y298806D03* +X764235Y298806D03* +D208* +X812952Y298806D03* +D207* +X647954Y299517D03* +D138* +X696671Y299517D03* +D30* +X764591Y299517D03* +D193* +X812597Y299517D03* +D195* +X648310Y300228D03* +D31* +X696316Y300228D03* +D42* +X764946Y300228D03* +D210* +X812597Y300228D03* +D198* +X648665Y300939D03* +D54* +X696316Y300939D03* +D83* +X764946Y300939D03* +D198* +X812241Y300939D03* +D186* +X649376Y301650D03* +D31* +X695604Y301650D03* +D221* +X765302Y301650D03* +D196* +X811886Y301650D03* +D204* +X650088Y302362D03* +D31* +X695604Y302362D03* +D221* +X765302Y302362D03* +D202* +X811174Y302362D03* +D201* +X649376Y303073D03* +D54* +X695604Y303073D03* +D222* +X765658Y303073D03* +D205* +X810463Y303073D03* +D192* +X648665Y303784D03* +D31* +X694893Y303784D03* +X766013Y303784D03* +D223* +X810819Y303784D03* +D197* +X648310Y304495D03* +D54* +X694893Y304495D03* +D224* +X730809Y304495D03* +D54* +X766013Y304495D03* +D200* +X811530Y304495D03* +D206* +X647954Y305206D03* +D31* +X694893Y305206D03* +D47* +X730453Y305206D03* +D66* +X766369Y305206D03* +D196* +X811886Y305206D03* +D214* +X647598Y305918D03* +D42* +X694538Y305918D03* +D52* +X730453Y305918D03* +D39* +X766724Y305918D03* +D192* +X812241Y305918D03* +D209* +X647243Y306629D03* +D30* +X694182Y306629D03* +D121* +X730453Y306629D03* +D30* +X766724Y306629D03* +D198* +X812952Y306629D03* +D214* +X646887Y307340D03* +D120* +X693826Y307340D03* +D225* +X730098Y307340D03* +D120* +X767080Y307340D03* +D192* +X812952Y307340D03* +D212* +X646887Y308051D03* +D111* +X693826Y308051D03* +D226* +X730098Y308051D03* +D227* +X767080Y308051D03* +D197* +X813308Y308051D03* +D214* +X646887Y308762D03* +D96* +X693826Y308762D03* +D228* +X729742Y308762D03* +D99* +X767436Y308762D03* +D195* +X813308Y308762D03* +D214* +X646887Y309474D03* +D124* +X729742Y309474D03* +D195* +X813308Y309474D03* +D229* +X647243Y310185D03* +D230* +X730098Y310185D03* +D197* +X813308Y310185D03* +D213* +X647243Y310896D03* +D231* +X729742Y310896D03* +D195* +X813308Y310896D03* +D229* +X647243Y311607D03* +D232* +X729742Y311607D03* +D209* +X812952Y311607D03* +D214* +X647598Y312318D03* +D152* +X729386Y312318D03* +D208* +X812952Y312318D03* +D214* +X647598Y313030D03* +D56* +X729386Y313030D03* +D208* +X812952Y313030D03* +D207* +X647954Y313741D03* +D167* +X729386Y313741D03* +D193* +X812597Y313741D03* +D195* +X648310Y314452D03* +D63* +X729031Y314452D03* +D210* +X812597Y314452D03* +D198* +X648665Y315163D03* +D160* +X729031Y315163D03* +D198* +X812241Y315163D03* +D196* +X649732Y315874D03* +D180* +X729031Y315874D03* +D196* +X811886Y315874D03* +D189* +X651154Y316586D03* +X728675Y316586D03* +D202* +X811174Y316586D03* +D191* +X650443Y317297D03* +D199* +X728675Y317297D03* +D205* +X809752Y317297D03* +D188* +X650443Y318008D03* +D208* +X728320Y318008D03* +D176* +X809396Y318008D03* +D193* +X650443Y318719D03* +D233* +X727964Y318719D03* +D203* +X809396Y318719D03* +D234* +X690982Y319430D03* +D211* +X809752Y319430D03* +D127* +X637997Y320142D03* +D235* +X720852Y320142D03* +D236* +X781660Y320142D03* +D237* +X822554Y320142D03* +D136* +X637286Y320853D03* +D238* +X730809Y320853D03* +D239* +X823620Y320853D03* +D137* +X636219Y321564D03* +D240* +X730809Y321564D03* +D241* +X824332Y321564D03* +D242* +X635508Y322275D03* +D238* +X730809Y322275D03* +D243* +X825043Y322275D03* +D244* +X634797Y322986D03* +D240* +X730809Y322986D03* +D114* +X826110Y322986D03* +D225* +X634086Y323698D03* +D240* +X730809Y323698D03* +D109* +X826821Y323698D03* +D115* +X633374Y324409D03* +D238* +X730809Y324409D03* +D245* +X827532Y324409D03* +D52* +X633019Y325120D03* +D240* +X730809Y325120D03* +D246* +X827888Y325120D03* +D55* +X632308Y325831D03* +D238* +X730809Y325831D03* +D88* +X828599Y325831D03* +D246* +X631596Y326542D03* +D247* +X731164Y326542D03* +D72* +X829310Y326542D03* +D71* +X631241Y327254D03* +D247* +X731164Y327254D03* +D74* +X829666Y327254D03* +D103* +X630885Y327965D03* +D248* +X731164Y327965D03* +D249* +X830377Y327965D03* +D250* +X630530Y328676D03* +D247* +X731164Y328676D03* +D251* +X830732Y328676D03* +D80* +X630530Y329387D03* +D248* +X731164Y329387D03* +D84* +X831088Y329387D03* +D252* +X631952Y330098D03* +D247* +X731164Y330098D03* +D253* +X831088Y330098D03* +D254* +X630885Y330810D03* +D247* +X731164Y330810D03* +D255* +X829310Y330810D03* +D29* +X838911Y330810D03* +D256* +X629818Y331521D03* +D248* +X731164Y331521D03* +D257* +X830377Y331521D03* +D258* +X629107Y332232D03* +D247* +X731164Y332232D03* +D36* +X831444Y332232D03* +D259* +X628040Y332943D03* +D248* +X731164Y332943D03* +D260* +X831799Y332943D03* +D261* +X627685Y333654D03* +D247* +X731164Y333654D03* +D262* +X832510Y333654D03* +D261* +X627685Y334366D03* +D247* +X731164Y334366D03* +D262* +X832510Y334366D03* +D89* +X627685Y335077D03* +D248* +X731164Y335077D03* +D37* +X832866Y335077D03* +D263* +X627329Y335788D03* +D247* +X731164Y335788D03* +D36* +X832866Y335788D03* +D89* +X627685Y336499D03* +D264* +X730809Y336499D03* +D37* +X832866Y336499D03* +D261* +X627685Y337210D03* +D265* +X730809Y337210D03* +D36* +X832866Y337210D03* +D266* +X628040Y337922D03* +D265* +X730809Y337922D03* +D36* +X832155Y337922D03* +D267* +X729742Y338633D03* +D268* +X729742Y339344D03* +D269* +X729742Y340055D03* +D270* +X729742Y340766D03* +D271* +X729742Y341478D03* +D38* +X625907Y342189D03* +D272* +X732942Y342189D03* +D273* +X729031Y342900D03* +D81* +X832510Y342900D03* +D274* +X729386Y343611D03* +D275* +X729386Y344322D03* +D276* +X729031Y345034D03* +D277* +X729386Y345745D03* +D278* +X729386Y346456D03* +D277* +X729386Y347167D03* +D278* +X729386Y347878D03* +D279* +X729742Y348590D03* +D274* +X729386Y349301D03* +D275* +X729386Y350012D03* +D280* +X729386Y350723D03* +D281* +X729742Y351434D03* +D31* +X635152Y352146D03* +D282* +X684581Y352146D03* +D97* +X734009Y352146D03* +D283* +X783438Y352146D03* +D64* +X635152Y352857D03* +D284* +X679958Y352857D03* +D30* +X724764Y352857D03* +D285* +X778459Y352857D03* +D30* +X823620Y352857D03* +D286* +X679958Y353568D03* +D99* +X724764Y353568D03* +D287* +X778459Y353568D03* +D97* +X823620Y353568D03* +D288* +X679958Y354279D03* +D289* +X778815Y354279D03* +D286* +X679958Y354990D03* +D290* +X778815Y354990D03* +D286* +X679958Y355702D03* +D290* +X778815Y355702D03* +D288* +X679958Y356413D03* +D289* +X778815Y356413D03* +D291* +X679958Y357124D03* +D292* +X778815Y357124D03* +D284* +X679958Y357835D03* +D293* +X778815Y357835D03* +D294* +X680314Y358546D03* +X779170Y358546D03* +D295* +X646532Y359258D03* +D176* +X685648Y359258D03* +D295* +X745388Y359258D03* +D176* +X784504Y359258D03* +D54* +X646532Y359969D03* +D150* +X679958Y359969D03* +D296* +X713384Y359969D03* +D138* +X745033Y359969D03* +D145* +X778815Y359969D03* +D119* +X812241Y359969D03* +D39* +X646532Y360680D03* +D148* +X679958Y360680D03* +D31* +X713384Y360680D03* +D97* +X745388Y360680D03* +D142* +X778815Y360680D03* +D31* +X812241Y360680D03* +D297* +X646532Y361391D03* +D150* +X679958Y361391D03* +D64* +X713384Y361391D03* +D145* +X778815Y361391D03* +D298* +X811886Y361391D03* +D148* +X679958Y362102D03* +D142* +X778815Y362102D03* +D105* +X812241Y362102D03* +D152* +X679602Y362814D03* +X778459Y362814D03* +D299* +X679958Y363525D03* +D300* +X757834Y363525D03* +D243* +X785216Y363525D03* +D301* +X658978Y364236D03* +D79* +X679602Y364236D03* +D34* +X700583Y364236D03* +D301* +X757834Y364236D03* +D302* +X785216Y364236D03* +D33* +X659333Y364947D03* +D303* +X679602Y364947D03* +D33* +X700583Y364947D03* +D304* +X757834Y364947D03* +D303* +X779170Y364947D03* +D305* +X799440Y364947D03* +D306* +X659333Y365658D03* +D79* +X679602Y365658D03* +D306* +X700583Y365658D03* +D118* +X757834Y365658D03* +D34* +X771703Y365658D03* +D307* +X785571Y365658D03* +D32* +X799084Y365658D03* +D31* +X659333Y366370D03* +D308* +X672846Y366370D03* +D301* +X686714Y366370D03* +D31* +X700583Y366370D03* +D39* +X758190Y366370D03* +D301* +X772058Y366370D03* +D307* +X785571Y366370D03* +D31* +X799440Y366370D03* +D64* +X659333Y367081D03* +D309* +X672846Y367081D03* +D300* +X686714Y367081D03* +D64* +X700583Y367081D03* +D93* +X757834Y367081D03* +D33* +X771703Y367081D03* +D35* +X785927Y367081D03* +D30* +X799440Y367081D03* +D310* +X672846Y367792D03* +D32* +X686714Y367792D03* +D306* +X771703Y367792D03* +D301* +X785571Y367792D03* +D99* +X799440Y367792D03* +D304* +X672490Y368503D03* +D222* +X686714Y368503D03* +D83* +X772058Y368503D03* +D304* +X785571Y368503D03* +D118* +X672490Y369214D03* +D120* +X686714Y369214D03* +D81* +X772058Y369214D03* +D118* +X785571Y369214D03* +D39* +X672846Y369926D03* +D96* +X686714Y369926D03* +D39* +X785927Y369926D03* +D297* +X672846Y370637D03* +D38* +X785927Y370637D03* +D18* +X502920Y104140D03* +D14* +X497191Y94488D02* +X497191Y85852D01* +X497191Y94488D02* +X499590Y94488D01* +X499687Y94486D01* +X499783Y94480D01* +X499879Y94471D01* +X499975Y94457D01* +X500070Y94440D01* +X500164Y94418D01* +X500257Y94393D01* +X500350Y94365D01* +X500441Y94332D01* +X500530Y94296D01* +X500618Y94256D01* +X500705Y94213D01* +X500790Y94167D01* +X500872Y94117D01* +X500953Y94063D01* +X501031Y94007D01* +X501107Y93947D01* +X501181Y93885D01* +X501252Y93819D01* +X501320Y93751D01* +X501386Y93680D01* +X501448Y93606D01* +X501508Y93530D01* +X501564Y93452D01* +X501618Y93371D01* +X501668Y93288D01* +X501714Y93204D01* +X501757Y93117D01* +X501797Y93029D01* +X501833Y92940D01* +X501866Y92849D01* +X501894Y92756D01* +X501919Y92663D01* +X501941Y92569D01* +X501958Y92474D01* +X501972Y92378D01* +X501981Y92282D01* +X501987Y92186D01* +X501989Y92089D01* +X501987Y91992D01* +X501981Y91896D01* +X501972Y91800D01* +X501958Y91704D01* +X501941Y91609D01* +X501919Y91515D01* +X501894Y91422D01* +X501866Y91329D01* +X501833Y91238D01* +X501797Y91149D01* +X501757Y91061D01* +X501714Y90974D01* +X501668Y90889D01* +X501618Y90807D01* +X501564Y90726D01* +X501508Y90648D01* +X501448Y90572D01* +X501386Y90498D01* +X501320Y90427D01* +X501252Y90359D01* +X501181Y90293D01* +X501107Y90231D01* +X501031Y90171D01* +X500953Y90115D01* +X500872Y90061D01* +X500790Y90011D01* +X500705Y89965D01* +X500618Y89922D01* +X500530Y89882D01* +X500441Y89846D01* +X500350Y89813D01* +X500257Y89785D01* +X500164Y89760D01* +X500070Y89738D01* +X499975Y89721D01* +X499879Y89707D01* +X499783Y89698D01* +X499687Y89692D01* +X499590Y89690D01* +X497191Y89690D01* +X500070Y89690D02* +X501989Y85852D01* +X506250Y87771D02* +X508169Y94488D01* +X506250Y87771D02* +X511048Y87771D01* +X509609Y89690D02* +X509609Y85852D01* +D11* +X323180Y292200D02* +X271180Y292200D01* +X323180Y292200D02* +X323180Y368200D01* +D20* +X322930Y368200D02* +X322930Y368450D01* +D11* +X322930Y368200D02* +X277530Y368200D01* +X271180Y361850D01* +X271180Y292200D01* +D311* +X266700Y373380D03* +D20* +X305885Y287655D02* +X305885Y281234D01* +X305887Y281136D01* +X305893Y281038D01* +X305903Y280940D01* +X305916Y280843D01* +X305934Y280746D01* +X305955Y280650D01* +X305980Y280556D01* +X306009Y280462D01* +X306041Y280369D01* +X306078Y280278D01* +X306117Y280188D01* +X306161Y280100D01* +X306208Y280014D01* +X306258Y279929D01* +X306311Y279847D01* +X306368Y279767D01* +X306428Y279689D01* +X306491Y279614D01* +X306557Y279541D01* +X306626Y279471D01* +X306697Y279404D01* +X306771Y279339D01* +X306848Y279278D01* +X306927Y279219D01* +X307008Y279164D01* +X307091Y279112D01* +X307177Y279064D01* +X307264Y279019D01* +X307353Y278977D01* +X307443Y278939D01* +X307535Y278905D01* +X307628Y278874D01* +X307723Y278847D01* +X307818Y278824D01* +X307915Y278804D01* +X308011Y278789D01* +X308109Y278777D01* +X308207Y278769D01* +X308305Y278765D01* +X308403Y278765D01* +X308501Y278769D01* +X308599Y278777D01* +X308697Y278789D01* +X308793Y278804D01* +X308890Y278824D01* +X308985Y278847D01* +X309080Y278874D01* +X309173Y278905D01* +X309265Y278939D01* +X309355Y278977D01* +X309444Y279019D01* +X309531Y279064D01* +X309617Y279112D01* +X309700Y279164D01* +X309781Y279219D01* +X309860Y279278D01* +X309937Y279339D01* +X310011Y279404D01* +X310082Y279471D01* +X310151Y279541D01* +X310217Y279614D01* +X310280Y279689D01* +X310340Y279767D01* +X310397Y279847D01* +X310450Y279929D01* +X310500Y280014D01* +X310547Y280100D01* +X310591Y280188D01* +X310630Y280278D01* +X310667Y280369D01* +X310699Y280462D01* +X310728Y280556D01* +X310753Y280650D01* +X310774Y280746D01* +X310792Y280843D01* +X310805Y280940D01* +X310815Y281038D01* +X310821Y281136D01* +X310823Y281234D01* +X310824Y281234D02* +X310824Y287655D01* +X315334Y278765D02* +X317803Y278765D01* +X317901Y278767D01* +X317999Y278773D01* +X318097Y278783D01* +X318194Y278796D01* +X318291Y278814D01* +X318387Y278835D01* +X318481Y278860D01* +X318575Y278889D01* +X318668Y278921D01* +X318759Y278958D01* +X318849Y278997D01* +X318937Y279041D01* +X319023Y279088D01* +X319108Y279138D01* +X319190Y279191D01* +X319270Y279248D01* +X319348Y279308D01* +X319423Y279371D01* +X319496Y279437D01* +X319566Y279506D01* +X319633Y279577D01* +X319698Y279651D01* +X319759Y279728D01* +X319818Y279807D01* +X319873Y279888D01* +X319925Y279971D01* +X319973Y280057D01* +X320018Y280144D01* +X320060Y280233D01* +X320098Y280323D01* +X320132Y280415D01* +X320163Y280508D01* +X320190Y280603D01* +X320213Y280698D01* +X320233Y280795D01* +X320248Y280891D01* +X320260Y280989D01* +X320268Y281087D01* +X320272Y281185D01* +X320272Y281283D01* +X320268Y281381D01* +X320260Y281479D01* +X320248Y281577D01* +X320233Y281673D01* +X320213Y281770D01* +X320190Y281865D01* +X320163Y281960D01* +X320132Y282053D01* +X320098Y282145D01* +X320060Y282235D01* +X320018Y282324D01* +X319973Y282411D01* +X319925Y282497D01* +X319873Y282580D01* +X319818Y282661D01* +X319759Y282740D01* +X319698Y282817D01* +X319633Y282891D01* +X319566Y282962D01* +X319496Y283031D01* +X319423Y283097D01* +X319348Y283160D01* +X319270Y283220D01* +X319190Y283277D01* +X319108Y283330D01* +X319023Y283380D01* +X318937Y283427D01* +X318849Y283471D01* +X318759Y283510D01* +X318668Y283547D01* +X318575Y283579D01* +X318481Y283608D01* +X318387Y283633D01* +X318291Y283654D01* +X318194Y283672D01* +X318097Y283685D01* +X317999Y283695D01* +X317901Y283701D01* +X317803Y283703D01* +X318297Y287655D02* +X315334Y287655D01* +X318297Y287655D02* +X318384Y287653D01* +X318472Y287647D01* +X318559Y287638D01* +X318645Y287624D01* +X318731Y287607D01* +X318815Y287586D01* +X318899Y287561D01* +X318982Y287532D01* +X319063Y287500D01* +X319143Y287465D01* +X319221Y287426D01* +X319298Y287383D01* +X319372Y287337D01* +X319444Y287288D01* +X319514Y287236D01* +X319582Y287180D01* +X319647Y287122D01* +X319710Y287061D01* +X319769Y286997D01* +X319826Y286930D01* +X319880Y286862D01* +X319931Y286790D01* +X319978Y286717D01* +X320023Y286642D01* +X320064Y286564D01* +X320101Y286485D01* +X320135Y286405D01* +X320165Y286323D01* +X320192Y286240D01* +X320215Y286155D01* +X320234Y286070D01* +X320249Y285984D01* +X320261Y285897D01* +X320269Y285810D01* +X320273Y285723D01* +X320273Y285635D01* +X320269Y285548D01* +X320261Y285461D01* +X320249Y285374D01* +X320234Y285288D01* +X320215Y285203D01* +X320192Y285118D01* +X320165Y285035D01* +X320135Y284953D01* +X320101Y284873D01* +X320064Y284794D01* +X320023Y284716D01* +X319978Y284641D01* +X319931Y284568D01* +X319880Y284496D01* +X319826Y284428D01* +X319769Y284361D01* +X319710Y284297D01* +X319647Y284236D01* +X319582Y284178D01* +X319514Y284122D01* +X319444Y284070D01* +X319372Y284021D01* +X319298Y283975D01* +X319221Y283932D01* +X319143Y283893D01* +X319063Y283858D01* +X318982Y283826D01* +X318899Y283797D01* +X318815Y283772D01* +X318731Y283751D01* +X318645Y283734D01* +X318559Y283720D01* +X318472Y283711D01* +X318384Y283705D01* +X318297Y283703D01* +X318297Y283704D02* +X316322Y283704D01* +D17* +X403860Y360680D03* +D14* +X418592Y358902D02* +X418592Y367538D01* +X420991Y367538D01* +X421088Y367536D01* +X421184Y367530D01* +X421280Y367521D01* +X421376Y367507D01* +X421471Y367490D01* +X421565Y367468D01* +X421658Y367443D01* +X421751Y367415D01* +X421842Y367382D01* +X421931Y367346D01* +X422019Y367306D01* +X422106Y367263D01* +X422191Y367217D01* +X422273Y367167D01* +X422354Y367113D01* +X422432Y367057D01* +X422508Y366997D01* +X422582Y366935D01* +X422653Y366869D01* +X422721Y366801D01* +X422787Y366730D01* +X422849Y366656D01* +X422909Y366580D01* +X422965Y366502D01* +X423019Y366421D01* +X423069Y366339D01* +X423115Y366254D01* +X423158Y366167D01* +X423198Y366079D01* +X423234Y365990D01* +X423267Y365899D01* +X423295Y365806D01* +X423320Y365713D01* +X423342Y365619D01* +X423359Y365524D01* +X423373Y365428D01* +X423382Y365332D01* +X423388Y365236D01* +X423390Y365139D01* +X423388Y365042D01* +X423382Y364946D01* +X423373Y364850D01* +X423359Y364754D01* +X423342Y364659D01* +X423320Y364565D01* +X423295Y364472D01* +X423267Y364379D01* +X423234Y364288D01* +X423198Y364199D01* +X423158Y364111D01* +X423115Y364024D01* +X423069Y363940D01* +X423019Y363857D01* +X422965Y363776D01* +X422909Y363698D01* +X422849Y363622D01* +X422787Y363548D01* +X422721Y363477D01* +X422653Y363409D01* +X422582Y363343D01* +X422508Y363281D01* +X422432Y363221D01* +X422354Y363165D01* +X422273Y363111D01* +X422191Y363061D01* +X422106Y363015D01* +X422019Y362972D01* +X421931Y362932D01* +X421842Y362896D01* +X421751Y362863D01* +X421658Y362835D01* +X421565Y362810D01* +X421471Y362788D01* +X421376Y362771D01* +X421280Y362757D01* +X421184Y362748D01* +X421088Y362742D01* +X420991Y362740D01* +X418592Y362740D01* +X421471Y362740D02* +X423390Y358902D01* +X427651Y358902D02* +X430050Y358902D01* +X430147Y358904D01* +X430243Y358910D01* +X430339Y358919D01* +X430435Y358933D01* +X430530Y358950D01* +X430624Y358972D01* +X430717Y358997D01* +X430810Y359025D01* +X430901Y359058D01* +X430990Y359094D01* +X431078Y359134D01* +X431165Y359177D01* +X431250Y359223D01* +X431332Y359273D01* +X431413Y359327D01* +X431491Y359383D01* +X431567Y359443D01* +X431641Y359505D01* +X431712Y359571D01* +X431780Y359639D01* +X431846Y359710D01* +X431908Y359784D01* +X431968Y359860D01* +X432024Y359938D01* +X432078Y360019D01* +X432128Y360102D01* +X432174Y360186D01* +X432217Y360273D01* +X432257Y360361D01* +X432293Y360450D01* +X432326Y360541D01* +X432354Y360634D01* +X432379Y360727D01* +X432401Y360821D01* +X432418Y360916D01* +X432432Y361012D01* +X432441Y361108D01* +X432447Y361204D01* +X432449Y361301D01* +X432447Y361398D01* +X432441Y361494D01* +X432432Y361590D01* +X432418Y361686D01* +X432401Y361781D01* +X432379Y361875D01* +X432354Y361968D01* +X432326Y362061D01* +X432293Y362152D01* +X432257Y362241D01* +X432217Y362329D01* +X432174Y362416D01* +X432128Y362501D01* +X432078Y362583D01* +X432024Y362664D01* +X431968Y362742D01* +X431908Y362818D01* +X431846Y362892D01* +X431780Y362963D01* +X431712Y363031D01* +X431641Y363097D01* +X431567Y363159D01* +X431491Y363219D01* +X431413Y363275D01* +X431332Y363329D01* +X431250Y363379D01* +X431165Y363425D01* +X431078Y363468D01* +X430990Y363508D01* +X430901Y363544D01* +X430810Y363577D01* +X430717Y363605D01* +X430624Y363630D01* +X430530Y363652D01* +X430435Y363669D01* +X430339Y363683D01* +X430243Y363692D01* +X430147Y363698D01* +X430050Y363700D01* +X430530Y367538D02* +X427651Y367538D01* +X430530Y367538D02* +X430616Y367536D01* +X430702Y367530D01* +X430788Y367521D01* +X430873Y367507D01* +X430957Y367490D01* +X431041Y367469D01* +X431123Y367444D01* +X431204Y367416D01* +X431284Y367384D01* +X431363Y367348D01* +X431439Y367309D01* +X431514Y367266D01* +X431587Y367221D01* +X431658Y367172D01* +X431726Y367119D01* +X431793Y367064D01* +X431856Y367006D01* +X431917Y366945D01* +X431975Y366882D01* +X432030Y366815D01* +X432083Y366747D01* +X432132Y366676D01* +X432177Y366603D01* +X432220Y366528D01* +X432259Y366452D01* +X432295Y366373D01* +X432327Y366293D01* +X432355Y366212D01* +X432380Y366130D01* +X432401Y366046D01* +X432418Y365962D01* +X432432Y365877D01* +X432441Y365791D01* +X432447Y365705D01* +X432449Y365619D01* +X432447Y365533D01* +X432441Y365447D01* +X432432Y365361D01* +X432418Y365276D01* +X432401Y365192D01* +X432380Y365108D01* +X432355Y365026D01* +X432327Y364945D01* +X432295Y364865D01* +X432259Y364786D01* +X432220Y364710D01* +X432177Y364635D01* +X432132Y364562D01* +X432083Y364491D01* +X432030Y364423D01* +X431975Y364356D01* +X431917Y364293D01* +X431856Y364232D01* +X431793Y364174D01* +X431726Y364119D01* +X431658Y364066D01* +X431587Y364017D01* +X431514Y363972D01* +X431439Y363929D01* +X431363Y363890D01* +X431284Y363854D01* +X431204Y363822D01* +X431123Y363794D01* +X431041Y363769D01* +X430957Y363748D01* +X430873Y363731D01* +X430788Y363717D01* +X430702Y363708D01* +X430616Y363702D01* +X430530Y363700D01* +X428611Y363700D01* +D17* +X403860Y350520D03* +D14* +X390652Y342138D02* +X390652Y333502D01* +X390652Y342138D02* +X393051Y342138D01* +X393148Y342136D01* +X393244Y342130D01* +X393340Y342121D01* +X393436Y342107D01* +X393531Y342090D01* +X393625Y342068D01* +X393718Y342043D01* +X393811Y342015D01* +X393902Y341982D01* +X393991Y341946D01* +X394079Y341906D01* +X394166Y341863D01* +X394251Y341817D01* +X394333Y341767D01* +X394414Y341713D01* +X394492Y341657D01* +X394568Y341597D01* +X394642Y341535D01* +X394713Y341469D01* +X394781Y341401D01* +X394847Y341330D01* +X394909Y341256D01* +X394969Y341180D01* +X395025Y341102D01* +X395079Y341021D01* +X395129Y340939D01* +X395175Y340854D01* +X395218Y340767D01* +X395258Y340679D01* +X395294Y340590D01* +X395327Y340499D01* +X395355Y340406D01* +X395380Y340313D01* +X395402Y340219D01* +X395419Y340124D01* +X395433Y340028D01* +X395442Y339932D01* +X395448Y339836D01* +X395450Y339739D01* +X395448Y339642D01* +X395442Y339546D01* +X395433Y339450D01* +X395419Y339354D01* +X395402Y339259D01* +X395380Y339165D01* +X395355Y339072D01* +X395327Y338979D01* +X395294Y338888D01* +X395258Y338799D01* +X395218Y338711D01* +X395175Y338624D01* +X395129Y338540D01* +X395079Y338457D01* +X395025Y338376D01* +X394969Y338298D01* +X394909Y338222D01* +X394847Y338148D01* +X394781Y338077D01* +X394713Y338009D01* +X394642Y337943D01* +X394568Y337881D01* +X394492Y337821D01* +X394414Y337765D01* +X394333Y337711D01* +X394251Y337661D01* +X394166Y337615D01* +X394079Y337572D01* +X393991Y337532D01* +X393902Y337496D01* +X393811Y337463D01* +X393718Y337435D01* +X393625Y337410D01* +X393531Y337388D01* +X393436Y337371D01* +X393340Y337357D01* +X393244Y337348D01* +X393148Y337342D01* +X393051Y337340D01* +X390652Y337340D01* +X393531Y337340D02* +X395450Y333502D01* +X399711Y335421D02* +X401630Y342138D01* +X399711Y335421D02* +X404509Y335421D01* +X403070Y337340D02* +X403070Y333502D01* +X408855Y341178D02* +X408855Y342138D01* +X413653Y342138D01* +X411254Y333502D01* +D312* +X213360Y307340D03* +D20* +X210360Y320340D02* +X216360Y320340D01* +X230360Y308340D02* +X230360Y306340D01* +X216360Y294340D02* +X210360Y294340D01* +X196360Y306340D02* +X196360Y308340D01* +D14* +X206282Y325642D02* +X212039Y334278D01* +X206282Y334278D02* +X212039Y325642D01* +X218545Y334278D02* +X218637Y334276D01* +X218728Y334270D01* +X218819Y334261D01* +X218910Y334247D01* +X219000Y334230D01* +X219089Y334208D01* +X219177Y334183D01* +X219264Y334155D01* +X219350Y334122D01* +X219434Y334086D01* +X219517Y334047D01* +X219598Y334004D01* +X219677Y333957D01* +X219754Y333908D01* +X219829Y333855D01* +X219901Y333799D01* +X219971Y333740D01* +X220039Y333678D01* +X220104Y333613D01* +X220166Y333545D01* +X220225Y333475D01* +X220281Y333403D01* +X220334Y333328D01* +X220383Y333251D01* +X220430Y333172D01* +X220473Y333091D01* +X220512Y333008D01* +X220548Y332924D01* +X220581Y332838D01* +X220609Y332751D01* +X220634Y332663D01* +X220656Y332574D01* +X220673Y332484D01* +X220687Y332393D01* +X220696Y332302D01* +X220702Y332211D01* +X220704Y332119D01* +X218545Y334278D02* +X218442Y334276D01* +X218340Y334270D01* +X218238Y334261D01* +X218136Y334248D01* +X218035Y334231D01* +X217934Y334210D01* +X217835Y334186D01* +X217736Y334157D01* +X217639Y334126D01* +X217542Y334090D01* +X217447Y334052D01* +X217354Y334009D01* +X217262Y333963D01* +X217172Y333914D01* +X217084Y333862D01* +X216997Y333806D01* +X216913Y333747D01* +X216832Y333686D01* +X216752Y333621D01* +X216675Y333553D01* +X216600Y333482D01* +X216529Y333409D01* +X216460Y333333D01* +X216393Y333255D01* +X216330Y333174D01* +X216270Y333091D01* +X216213Y333006D01* +X216159Y332919D01* +X216108Y332829D01* +X216061Y332738D01* +X216017Y332646D01* +X215976Y332551D01* +X215939Y332456D01* +X215906Y332359D01* +X219983Y330440D02* +X220050Y330506D01* +X220114Y330575D01* +X220175Y330646D01* +X220233Y330720D01* +X220288Y330796D01* +X220340Y330874D01* +X220389Y330954D01* +X220435Y331036D01* +X220477Y331120D01* +X220516Y331206D01* +X220551Y331293D01* +X220582Y331381D01* +X220610Y331471D01* +X220635Y331561D01* +X220656Y331653D01* +X220673Y331745D01* +X220686Y331838D01* +X220695Y331931D01* +X220701Y332025D01* +X220703Y332119D01* +X219984Y330440D02* +X215906Y325642D01* +X220704Y325642D01* +D13* +X187960Y307340D03* +D14* +X192278Y321451D02* +X192278Y323370D01* +X192278Y321451D02* +X192276Y321365D01* +X192270Y321279D01* +X192261Y321193D01* +X192247Y321108D01* +X192230Y321024D01* +X192209Y320940D01* +X192184Y320858D01* +X192156Y320777D01* +X192124Y320697D01* +X192088Y320618D01* +X192049Y320542D01* +X192006Y320467D01* +X191961Y320394D01* +X191912Y320323D01* +X191859Y320255D01* +X191804Y320188D01* +X191746Y320125D01* +X191685Y320064D01* +X191622Y320006D01* +X191555Y319951D01* +X191487Y319899D01* +X191416Y319849D01* +X191343Y319804D01* +X191268Y319761D01* +X191192Y319722D01* +X191113Y319686D01* +X191033Y319654D01* +X190952Y319626D01* +X190870Y319601D01* +X190786Y319580D01* +X190702Y319563D01* +X190617Y319549D01* +X190531Y319540D01* +X190445Y319534D01* +X190359Y319532D01* +X185561Y319532D01* +X185475Y319534D01* +X185389Y319540D01* +X185303Y319549D01* +X185218Y319563D01* +X185134Y319580D01* +X185050Y319601D01* +X184968Y319626D01* +X184887Y319654D01* +X184807Y319686D01* +X184728Y319722D01* +X184652Y319761D01* +X184577Y319804D01* +X184504Y319849D01* +X184433Y319898D01* +X184365Y319951D01* +X184298Y320006D01* +X184235Y320064D01* +X184174Y320125D01* +X184116Y320188D01* +X184061Y320255D01* +X184009Y320323D01* +X183959Y320394D01* +X183914Y320467D01* +X183871Y320542D01* +X183832Y320618D01* +X183796Y320697D01* +X183764Y320777D01* +X183736Y320858D01* +X183711Y320940D01* +X183690Y321024D01* +X183673Y321108D01* +X183659Y321193D01* +X183650Y321279D01* +X183644Y321365D01* +X183642Y321451D01* +X183642Y323370D01* +X192278Y327190D02* +X192278Y329589D01* +X192276Y329686D01* +X192270Y329782D01* +X192261Y329878D01* +X192247Y329974D01* +X192230Y330069D01* +X192208Y330163D01* +X192183Y330256D01* +X192155Y330349D01* +X192122Y330440D01* +X192086Y330529D01* +X192046Y330617D01* +X192003Y330704D01* +X191957Y330789D01* +X191907Y330871D01* +X191853Y330952D01* +X191797Y331030D01* +X191737Y331106D01* +X191675Y331180D01* +X191609Y331251D01* +X191541Y331319D01* +X191470Y331385D01* +X191396Y331447D01* +X191320Y331507D01* +X191242Y331563D01* +X191161Y331617D01* +X191079Y331667D01* +X190994Y331713D01* +X190907Y331756D01* +X190819Y331796D01* +X190730Y331832D01* +X190639Y331865D01* +X190546Y331893D01* +X190453Y331918D01* +X190359Y331940D01* +X190264Y331957D01* +X190168Y331971D01* +X190072Y331980D01* +X189976Y331986D01* +X189879Y331988D01* +X189782Y331986D01* +X189686Y331980D01* +X189590Y331971D01* +X189494Y331957D01* +X189399Y331940D01* +X189305Y331918D01* +X189212Y331893D01* +X189119Y331865D01* +X189028Y331832D01* +X188939Y331796D01* +X188851Y331756D01* +X188764Y331713D01* +X188680Y331667D01* +X188597Y331617D01* +X188516Y331563D01* +X188438Y331507D01* +X188362Y331447D01* +X188288Y331385D01* +X188217Y331319D01* +X188149Y331251D01* +X188083Y331180D01* +X188021Y331106D01* +X187961Y331030D01* +X187905Y330952D01* +X187851Y330871D01* +X187801Y330789D01* +X187755Y330704D01* +X187712Y330617D01* +X187672Y330529D01* +X187636Y330440D01* +X187603Y330349D01* +X187575Y330256D01* +X187550Y330163D01* +X187528Y330069D01* +X187511Y329974D01* +X187497Y329878D01* +X187488Y329782D01* +X187482Y329686D01* +X187480Y329589D01* +X183642Y330069D02* +X183642Y327190D01* +X183642Y330069D02* +X183644Y330155D01* +X183650Y330241D01* +X183659Y330327D01* +X183673Y330412D01* +X183690Y330496D01* +X183711Y330580D01* +X183736Y330662D01* +X183764Y330743D01* +X183796Y330823D01* +X183832Y330902D01* +X183871Y330978D01* +X183914Y331053D01* +X183959Y331126D01* +X184008Y331197D01* +X184061Y331265D01* +X184116Y331332D01* +X184174Y331395D01* +X184235Y331456D01* +X184298Y331514D01* +X184365Y331569D01* +X184433Y331622D01* +X184504Y331671D01* +X184577Y331716D01* +X184652Y331759D01* +X184728Y331798D01* +X184807Y331834D01* +X184887Y331866D01* +X184968Y331894D01* +X185050Y331919D01* +X185134Y331940D01* +X185218Y331957D01* +X185303Y331971D01* +X185389Y331980D01* +X185475Y331986D01* +X185561Y331988D01* +X185647Y331986D01* +X185733Y331980D01* +X185819Y331971D01* +X185904Y331957D01* +X185988Y331940D01* +X186072Y331919D01* +X186154Y331894D01* +X186235Y331866D01* +X186315Y331834D01* +X186394Y331798D01* +X186470Y331759D01* +X186545Y331716D01* +X186618Y331671D01* +X186689Y331622D01* +X186757Y331569D01* +X186824Y331514D01* +X186887Y331456D01* +X186948Y331395D01* +X187006Y331332D01* +X187061Y331265D01* +X187114Y331197D01* +X187163Y331126D01* +X187208Y331053D01* +X187251Y330978D01* +X187290Y330902D01* +X187326Y330823D01* +X187358Y330743D01* +X187386Y330662D01* +X187411Y330580D01* +X187432Y330496D01* +X187449Y330412D01* +X187463Y330327D01* +X187472Y330241D01* +X187478Y330155D01* +X187480Y330069D01* +X187480Y328150D01* +X187960Y336334D02* +X187790Y336336D01* +X187620Y336342D01* +X187451Y336352D01* +X187281Y336366D01* +X187112Y336385D01* +X186944Y336407D01* +X186776Y336433D01* +X186609Y336463D01* +X186443Y336498D01* +X186277Y336536D01* +X186112Y336578D01* +X185949Y336624D01* +X185787Y336674D01* +X185625Y336728D01* +X185466Y336785D01* +X185307Y336847D01* +X185150Y336912D01* +X184995Y336981D01* +X184841Y337054D01* +X184765Y337082D01* +X184690Y337114D01* +X184616Y337149D01* +X184544Y337187D01* +X184474Y337229D01* +X184406Y337274D01* +X184340Y337322D01* +X184276Y337373D01* +X184215Y337427D01* +X184156Y337483D01* +X184100Y337543D01* +X184047Y337604D01* +X183997Y337668D01* +X183949Y337735D01* +X183905Y337803D01* +X183864Y337874D01* +X183826Y337946D01* +X183792Y338020D01* +X183761Y338095D01* +X183733Y338172D01* +X183709Y338250D01* +X183689Y338329D01* +X183672Y338409D01* +X183659Y338489D01* +X183649Y338570D01* +X183644Y338651D01* +X183642Y338733D01* +X183644Y338815D01* +X183649Y338896D01* +X183659Y338977D01* +X183672Y339057D01* +X183689Y339137D01* +X183709Y339216D01* +X183733Y339294D01* +X183761Y339371D01* +X183792Y339446D01* +X183826Y339520D01* +X183864Y339592D01* +X183905Y339663D01* +X183949Y339731D01* +X183997Y339798D01* +X184047Y339862D01* +X184100Y339923D01* +X184156Y339983D01* +X184215Y340039D01* +X184276Y340093D01* +X184340Y340144D01* +X184406Y340192D01* +X184474Y340237D01* +X184544Y340279D01* +X184616Y340317D01* +X184690Y340352D01* +X184765Y340384D01* +X184841Y340412D01* +X184995Y340485D01* +X185150Y340554D01* +X185307Y340619D01* +X185466Y340681D01* +X185625Y340738D01* +X185787Y340792D01* +X185949Y340842D01* +X186112Y340888D01* +X186277Y340930D01* +X186443Y340968D01* +X186609Y341003D01* +X186776Y341033D01* +X186944Y341059D01* +X187112Y341081D01* +X187281Y341100D01* +X187451Y341114D01* +X187620Y341124D01* +X187790Y341130D01* +X187960Y341132D01* +X187960Y336334D02* +X188130Y336336D01* +X188300Y336342D01* +X188469Y336352D01* +X188639Y336366D01* +X188808Y336385D01* +X188976Y336407D01* +X189144Y336433D01* +X189311Y336463D01* +X189477Y336498D01* +X189643Y336536D01* +X189808Y336578D01* +X189971Y336624D01* +X190133Y336674D01* +X190295Y336728D01* +X190454Y336785D01* +X190613Y336847D01* +X190770Y336912D01* +X190925Y336981D01* +X191079Y337054D01* +X191155Y337082D01* +X191230Y337114D01* +X191304Y337149D01* +X191376Y337187D01* +X191446Y337229D01* +X191514Y337274D01* +X191580Y337322D01* +X191644Y337373D01* +X191705Y337427D01* +X191764Y337483D01* +X191820Y337543D01* +X191873Y337604D01* +X191923Y337668D01* +X191971Y337735D01* +X192015Y337803D01* +X192056Y337874D01* +X192094Y337946D01* +X192128Y338020D01* +X192159Y338095D01* +X192187Y338172D01* +X192211Y338250D01* +X192231Y338329D01* +X192248Y338409D01* +X192261Y338489D01* +X192271Y338570D01* +X192276Y338651D01* +X192278Y338733D01* +X191079Y340412D02* +X190925Y340485D01* +X190770Y340554D01* +X190613Y340619D01* +X190454Y340681D01* +X190295Y340738D01* +X190133Y340792D01* +X189971Y340842D01* +X189808Y340888D01* +X189643Y340930D01* +X189477Y340968D01* +X189311Y341003D01* +X189144Y341033D01* +X188976Y341059D01* +X188808Y341081D01* +X188639Y341100D01* +X188469Y341114D01* +X188300Y341124D01* +X188130Y341130D01* +X187960Y341132D01* +X191079Y340412D02* +X191155Y340384D01* +X191230Y340352D01* +X191304Y340317D01* +X191376Y340279D01* +X191446Y340237D01* +X191514Y340192D01* +X191580Y340144D01* +X191644Y340093D01* +X191705Y340039D01* +X191764Y339983D01* +X191820Y339923D01* +X191873Y339862D01* +X191923Y339798D01* +X191971Y339731D01* +X192015Y339663D01* +X192056Y339592D01* +X192094Y339520D01* +X192128Y339446D01* +X192159Y339371D01* +X192187Y339294D01* +X192211Y339216D01* +X192231Y339137D01* +X192248Y339057D01* +X192261Y338977D01* +X192271Y338896D01* +X192276Y338815D01* +X192278Y338733D01* +X190359Y336814D02* +X185561Y340652D01* +D13* +X238760Y307340D03* +D14* +X243078Y277386D02* +X243078Y275467D01* +X243076Y275381D01* +X243070Y275295D01* +X243061Y275209D01* +X243047Y275124D01* +X243030Y275040D01* +X243009Y274956D01* +X242984Y274874D01* +X242956Y274793D01* +X242924Y274713D01* +X242888Y274634D01* +X242849Y274558D01* +X242806Y274483D01* +X242761Y274410D01* +X242712Y274339D01* +X242659Y274271D01* +X242604Y274204D01* +X242546Y274141D01* +X242485Y274080D01* +X242422Y274022D01* +X242355Y273967D01* +X242287Y273915D01* +X242216Y273865D01* +X242143Y273820D01* +X242068Y273777D01* +X241992Y273738D01* +X241913Y273702D01* +X241833Y273670D01* +X241752Y273642D01* +X241670Y273617D01* +X241586Y273596D01* +X241502Y273579D01* +X241417Y273565D01* +X241331Y273556D01* +X241245Y273550D01* +X241159Y273548D01* +X236361Y273548D01* +X236275Y273550D01* +X236189Y273556D01* +X236103Y273565D01* +X236018Y273579D01* +X235934Y273596D01* +X235850Y273617D01* +X235768Y273642D01* +X235687Y273670D01* +X235607Y273702D01* +X235528Y273738D01* +X235452Y273777D01* +X235377Y273820D01* +X235304Y273865D01* +X235233Y273914D01* +X235165Y273967D01* +X235098Y274022D01* +X235035Y274080D01* +X234974Y274141D01* +X234916Y274204D01* +X234861Y274271D01* +X234809Y274339D01* +X234759Y274410D01* +X234714Y274483D01* +X234671Y274558D01* +X234632Y274634D01* +X234596Y274713D01* +X234564Y274793D01* +X234536Y274874D01* +X234511Y274956D01* +X234490Y275040D01* +X234473Y275124D01* +X234459Y275209D01* +X234450Y275295D01* +X234444Y275381D01* +X234442Y275467D01* +X234442Y277386D01* +X243078Y281206D02* +X243078Y283605D01* +X243076Y283702D01* +X243070Y283798D01* +X243061Y283894D01* +X243047Y283990D01* +X243030Y284085D01* +X243008Y284179D01* +X242983Y284272D01* +X242955Y284365D01* +X242922Y284456D01* +X242886Y284545D01* +X242846Y284633D01* +X242803Y284720D01* +X242757Y284805D01* +X242707Y284887D01* +X242653Y284968D01* +X242597Y285046D01* +X242537Y285122D01* +X242475Y285196D01* +X242409Y285267D01* +X242341Y285335D01* +X242270Y285401D01* +X242196Y285463D01* +X242120Y285523D01* +X242042Y285579D01* +X241961Y285633D01* +X241879Y285683D01* +X241794Y285729D01* +X241707Y285772D01* +X241619Y285812D01* +X241530Y285848D01* +X241439Y285881D01* +X241346Y285909D01* +X241253Y285934D01* +X241159Y285956D01* +X241064Y285973D01* +X240968Y285987D01* +X240872Y285996D01* +X240776Y286002D01* +X240679Y286004D01* +X240582Y286002D01* +X240486Y285996D01* +X240390Y285987D01* +X240294Y285973D01* +X240199Y285956D01* +X240105Y285934D01* +X240012Y285909D01* +X239919Y285881D01* +X239828Y285848D01* +X239739Y285812D01* +X239651Y285772D01* +X239564Y285729D01* +X239480Y285683D01* +X239397Y285633D01* +X239316Y285579D01* +X239238Y285523D01* +X239162Y285463D01* +X239088Y285401D01* +X239017Y285335D01* +X238949Y285267D01* +X238883Y285196D01* +X238821Y285122D01* +X238761Y285046D01* +X238705Y284968D01* +X238651Y284887D01* +X238601Y284805D01* +X238555Y284720D01* +X238512Y284633D01* +X238472Y284545D01* +X238436Y284456D01* +X238403Y284365D01* +X238375Y284272D01* +X238350Y284179D01* +X238328Y284085D01* +X238311Y283990D01* +X238297Y283894D01* +X238288Y283798D01* +X238282Y283702D01* +X238280Y283605D01* +X234442Y284085D02* +X234442Y281206D01* +X234442Y284085D02* +X234444Y284171D01* +X234450Y284257D01* +X234459Y284343D01* +X234473Y284428D01* +X234490Y284512D01* +X234511Y284596D01* +X234536Y284678D01* +X234564Y284759D01* +X234596Y284839D01* +X234632Y284918D01* +X234671Y284994D01* +X234714Y285069D01* +X234759Y285142D01* +X234808Y285213D01* +X234861Y285281D01* +X234916Y285348D01* +X234974Y285411D01* +X235035Y285472D01* +X235098Y285530D01* +X235165Y285585D01* +X235233Y285638D01* +X235304Y285687D01* +X235377Y285732D01* +X235452Y285775D01* +X235528Y285814D01* +X235607Y285850D01* +X235687Y285882D01* +X235768Y285910D01* +X235850Y285935D01* +X235934Y285956D01* +X236018Y285973D01* +X236103Y285987D01* +X236189Y285996D01* +X236275Y286002D01* +X236361Y286004D01* +X236447Y286002D01* +X236533Y285996D01* +X236619Y285987D01* +X236704Y285973D01* +X236788Y285956D01* +X236872Y285935D01* +X236954Y285910D01* +X237035Y285882D01* +X237115Y285850D01* +X237194Y285814D01* +X237270Y285775D01* +X237345Y285732D01* +X237418Y285687D01* +X237489Y285638D01* +X237557Y285585D01* +X237624Y285530D01* +X237687Y285472D01* +X237748Y285411D01* +X237806Y285348D01* +X237861Y285281D01* +X237914Y285213D01* +X237963Y285142D01* +X238008Y285069D01* +X238051Y284994D01* +X238090Y284918D01* +X238126Y284839D01* +X238158Y284759D01* +X238186Y284678D01* +X238211Y284596D01* +X238232Y284512D01* +X238249Y284428D01* +X238263Y284343D01* +X238272Y284257D01* +X238278Y284171D01* +X238280Y284085D01* +X238280Y282166D01* +X236361Y290350D02* +X234442Y292749D01* +X243078Y292749D01* +X243078Y290350D02* +X243078Y295148D01* +D313* +X543560Y91440D03* +D11* +X543856Y71374D02* +X543856Y63669D01* +X543857Y63669D02* +X543859Y63562D01* +X543865Y63455D01* +X543874Y63349D01* +X543888Y63243D01* +X543905Y63137D01* +X543926Y63032D01* +X543951Y62928D01* +X543980Y62825D01* +X544012Y62723D01* +X544048Y62622D01* +X544088Y62523D01* +X544131Y62425D01* +X544178Y62329D01* +X544228Y62234D01* +X544281Y62141D01* +X544338Y62051D01* +X544398Y61962D01* +X544461Y61876D01* +X544527Y61792D01* +X544597Y61710D01* +X544669Y61631D01* +X544744Y61555D01* +X544822Y61481D01* +X544902Y61411D01* +X544985Y61343D01* +X545070Y61278D01* +X545157Y61217D01* +X545247Y61158D01* +X545339Y61103D01* +X545432Y61051D01* +X545528Y61003D01* +X545625Y60958D01* +X545723Y60916D01* +X545823Y60879D01* +X545925Y60844D01* +X546027Y60814D01* +X546131Y60787D01* +X546235Y60764D01* +X546341Y60745D01* +X546447Y60730D01* +X546553Y60718D01* +X546660Y60710D01* +X546767Y60706D01* +X546873Y60706D01* +X546980Y60710D01* +X547087Y60718D01* +X547193Y60730D01* +X547299Y60745D01* +X547405Y60764D01* +X547509Y60787D01* +X547613Y60814D01* +X547715Y60844D01* +X547817Y60879D01* +X547917Y60916D01* +X548015Y60958D01* +X548112Y61003D01* +X548208Y61051D01* +X548302Y61103D01* +X548393Y61158D01* +X548483Y61217D01* +X548570Y61278D01* +X548655Y61343D01* +X548738Y61411D01* +X548818Y61481D01* +X548896Y61555D01* +X548971Y61631D01* +X549043Y61710D01* +X549113Y61792D01* +X549179Y61876D01* +X549242Y61962D01* +X549302Y62051D01* +X549359Y62141D01* +X549412Y62234D01* +X549462Y62329D01* +X549509Y62425D01* +X549552Y62523D01* +X549592Y62622D01* +X549628Y62723D01* +X549660Y62825D01* +X549689Y62928D01* +X549714Y63032D01* +X549735Y63137D01* +X549752Y63243D01* +X549766Y63349D01* +X549775Y63455D01* +X549781Y63562D01* +X549783Y63669D01* +X549783Y71374D01* +X558038Y71374D02* +X555667Y63077D01* +X561594Y63077D01* +X559816Y65447D02* +X559816Y60706D01* +D15* +X703580Y83820D03* +D14* +X709168Y48786D02* +X709168Y46867D01* +X709166Y46781D01* +X709160Y46695D01* +X709151Y46609D01* +X709137Y46524D01* +X709120Y46440D01* +X709099Y46356D01* +X709074Y46274D01* +X709046Y46193D01* +X709014Y46113D01* +X708978Y46034D01* +X708939Y45958D01* +X708896Y45883D01* +X708851Y45810D01* +X708802Y45739D01* +X708749Y45671D01* +X708694Y45604D01* +X708636Y45541D01* +X708575Y45480D01* +X708512Y45422D01* +X708445Y45367D01* +X708377Y45315D01* +X708306Y45265D01* +X708233Y45220D01* +X708158Y45177D01* +X708082Y45138D01* +X708003Y45102D01* +X707923Y45070D01* +X707842Y45042D01* +X707760Y45017D01* +X707676Y44996D01* +X707592Y44979D01* +X707507Y44965D01* +X707421Y44956D01* +X707335Y44950D01* +X707249Y44948D01* +X702451Y44948D01* +X702365Y44950D01* +X702279Y44956D01* +X702193Y44965D01* +X702108Y44979D01* +X702024Y44996D01* +X701940Y45017D01* +X701858Y45042D01* +X701777Y45070D01* +X701697Y45102D01* +X701618Y45138D01* +X701542Y45177D01* +X701467Y45220D01* +X701394Y45265D01* +X701323Y45314D01* +X701255Y45367D01* +X701188Y45422D01* +X701125Y45480D01* +X701064Y45541D01* +X701006Y45604D01* +X700951Y45671D01* +X700899Y45739D01* +X700849Y45810D01* +X700804Y45883D01* +X700761Y45958D01* +X700722Y46034D01* +X700686Y46113D01* +X700654Y46193D01* +X700626Y46274D01* +X700601Y46356D01* +X700580Y46440D01* +X700563Y46524D01* +X700549Y46609D01* +X700540Y46695D01* +X700534Y46781D01* +X700532Y46867D01* +X700532Y48786D01* +X709168Y52606D02* +X709168Y55005D01* +X709166Y55102D01* +X709160Y55198D01* +X709151Y55294D01* +X709137Y55390D01* +X709120Y55485D01* +X709098Y55579D01* +X709073Y55672D01* +X709045Y55765D01* +X709012Y55856D01* +X708976Y55945D01* +X708936Y56033D01* +X708893Y56120D01* +X708847Y56205D01* +X708797Y56287D01* +X708743Y56368D01* +X708687Y56446D01* +X708627Y56522D01* +X708565Y56596D01* +X708499Y56667D01* +X708431Y56735D01* +X708360Y56801D01* +X708286Y56863D01* +X708210Y56923D01* +X708132Y56979D01* +X708051Y57033D01* +X707969Y57083D01* +X707884Y57129D01* +X707797Y57172D01* +X707709Y57212D01* +X707620Y57248D01* +X707529Y57281D01* +X707436Y57309D01* +X707343Y57334D01* +X707249Y57356D01* +X707154Y57373D01* +X707058Y57387D01* +X706962Y57396D01* +X706866Y57402D01* +X706769Y57404D01* +X706672Y57402D01* +X706576Y57396D01* +X706480Y57387D01* +X706384Y57373D01* +X706289Y57356D01* +X706195Y57334D01* +X706102Y57309D01* +X706009Y57281D01* +X705918Y57248D01* +X705829Y57212D01* +X705741Y57172D01* +X705654Y57129D01* +X705570Y57083D01* +X705487Y57033D01* +X705406Y56979D01* +X705328Y56923D01* +X705252Y56863D01* +X705178Y56801D01* +X705107Y56735D01* +X705039Y56667D01* +X704973Y56596D01* +X704911Y56522D01* +X704851Y56446D01* +X704795Y56368D01* +X704741Y56287D01* +X704691Y56205D01* +X704645Y56120D01* +X704602Y56033D01* +X704562Y55945D01* +X704526Y55856D01* +X704493Y55765D01* +X704465Y55672D01* +X704440Y55579D01* +X704418Y55485D01* +X704401Y55390D01* +X704387Y55294D01* +X704378Y55198D01* +X704372Y55102D01* +X704370Y55005D01* +X700532Y55485D02* +X700532Y52606D01* +X700532Y55485D02* +X700534Y55571D01* +X700540Y55657D01* +X700549Y55743D01* +X700563Y55828D01* +X700580Y55912D01* +X700601Y55996D01* +X700626Y56078D01* +X700654Y56159D01* +X700686Y56239D01* +X700722Y56318D01* +X700761Y56394D01* +X700804Y56469D01* +X700849Y56542D01* +X700898Y56613D01* +X700951Y56681D01* +X701006Y56748D01* +X701064Y56811D01* +X701125Y56872D01* +X701188Y56930D01* +X701255Y56985D01* +X701323Y57038D01* +X701394Y57087D01* +X701467Y57132D01* +X701542Y57175D01* +X701618Y57214D01* +X701697Y57250D01* +X701777Y57282D01* +X701858Y57310D01* +X701940Y57335D01* +X702024Y57356D01* +X702108Y57373D01* +X702193Y57387D01* +X702279Y57396D01* +X702365Y57402D01* +X702451Y57404D01* +X702537Y57402D01* +X702623Y57396D01* +X702709Y57387D01* +X702794Y57373D01* +X702878Y57356D01* +X702962Y57335D01* +X703044Y57310D01* +X703125Y57282D01* +X703205Y57250D01* +X703284Y57214D01* +X703360Y57175D01* +X703435Y57132D01* +X703508Y57087D01* +X703579Y57038D01* +X703647Y56985D01* +X703714Y56930D01* +X703777Y56872D01* +X703838Y56811D01* +X703896Y56748D01* +X703951Y56681D01* +X704004Y56613D01* +X704053Y56542D01* +X704098Y56469D01* +X704141Y56394D01* +X704180Y56318D01* +X704216Y56239D01* +X704248Y56159D01* +X704276Y56078D01* +X704301Y55996D01* +X704322Y55912D01* +X704339Y55828D01* +X704353Y55743D01* +X704362Y55657D01* +X704368Y55571D01* +X704370Y55485D01* +X704370Y53566D01* +X700532Y64389D02* +X700534Y64481D01* +X700540Y64572D01* +X700549Y64663D01* +X700563Y64754D01* +X700580Y64844D01* +X700602Y64933D01* +X700627Y65021D01* +X700655Y65108D01* +X700688Y65194D01* +X700724Y65278D01* +X700763Y65361D01* +X700806Y65442D01* +X700853Y65521D01* +X700902Y65598D01* +X700955Y65673D01* +X701011Y65745D01* +X701070Y65815D01* +X701132Y65883D01* +X701197Y65948D01* +X701265Y66010D01* +X701335Y66069D01* +X701407Y66125D01* +X701482Y66178D01* +X701559Y66227D01* +X701638Y66274D01* +X701719Y66317D01* +X701802Y66356D01* +X701886Y66392D01* +X701972Y66425D01* +X702059Y66453D01* +X702147Y66478D01* +X702236Y66500D01* +X702326Y66517D01* +X702417Y66531D01* +X702508Y66540D01* +X702599Y66546D01* +X702691Y66548D01* +X700532Y64389D02* +X700534Y64286D01* +X700540Y64184D01* +X700549Y64082D01* +X700562Y63980D01* +X700579Y63879D01* +X700600Y63778D01* +X700624Y63679D01* +X700653Y63580D01* +X700684Y63483D01* +X700720Y63386D01* +X700758Y63291D01* +X700801Y63198D01* +X700847Y63106D01* +X700896Y63016D01* +X700948Y62928D01* +X701004Y62841D01* +X701063Y62757D01* +X701124Y62676D01* +X701189Y62596D01* +X701257Y62519D01* +X701328Y62444D01* +X701401Y62373D01* +X701477Y62304D01* +X701555Y62237D01* +X701636Y62174D01* +X701719Y62114D01* +X701804Y62057D01* +X701891Y62003D01* +X701981Y61952D01* +X702072Y61905D01* +X702164Y61861D01* +X702259Y61820D01* +X702354Y61783D01* +X702451Y61750D01* +X704370Y65828D02* +X704304Y65895D01* +X704235Y65959D01* +X704164Y66020D01* +X704090Y66078D01* +X704014Y66133D01* +X703936Y66185D01* +X703856Y66234D01* +X703774Y66280D01* +X703690Y66322D01* +X703604Y66361D01* +X703517Y66396D01* +X703429Y66427D01* +X703339Y66455D01* +X703249Y66480D01* +X703157Y66501D01* +X703065Y66518D01* +X702972Y66531D01* +X702879Y66540D01* +X702785Y66546D01* +X702691Y66548D01* +X704370Y65828D02* +X709168Y61750D01* +X709168Y66548D01* +D20* +X1270300Y169800D02* +X1273300Y169800D01* +X1273300Y185800D01* +X1270300Y185800D01* +D10* +X1257300Y180340D02* +X1257300Y175260D01* +D14* +X1248641Y170688D02* +X1248641Y162052D01* +X1248641Y170688D02* +X1251040Y170688D01* +X1251137Y170686D01* +X1251233Y170680D01* +X1251329Y170671D01* +X1251425Y170657D01* +X1251520Y170640D01* +X1251614Y170618D01* +X1251707Y170593D01* +X1251800Y170565D01* +X1251891Y170532D01* +X1251980Y170496D01* +X1252068Y170456D01* +X1252155Y170413D01* +X1252240Y170367D01* +X1252322Y170317D01* +X1252403Y170263D01* +X1252481Y170207D01* +X1252557Y170147D01* +X1252631Y170085D01* +X1252702Y170019D01* +X1252770Y169951D01* +X1252836Y169880D01* +X1252898Y169806D01* +X1252958Y169730D01* +X1253014Y169652D01* +X1253068Y169571D01* +X1253118Y169489D01* +X1253164Y169404D01* +X1253207Y169317D01* +X1253247Y169229D01* +X1253283Y169140D01* +X1253316Y169049D01* +X1253344Y168956D01* +X1253369Y168863D01* +X1253391Y168769D01* +X1253408Y168674D01* +X1253422Y168578D01* +X1253431Y168482D01* +X1253437Y168386D01* +X1253439Y168289D01* +X1253439Y164451D01* +X1253437Y164354D01* +X1253431Y164258D01* +X1253422Y164162D01* +X1253408Y164066D01* +X1253391Y163971D01* +X1253369Y163877D01* +X1253344Y163784D01* +X1253316Y163691D01* +X1253283Y163600D01* +X1253247Y163511D01* +X1253207Y163423D01* +X1253164Y163336D01* +X1253118Y163252D01* +X1253068Y163169D01* +X1253014Y163088D01* +X1252958Y163010D01* +X1252898Y162934D01* +X1252836Y162860D01* +X1252770Y162789D01* +X1252702Y162721D01* +X1252631Y162655D01* +X1252557Y162593D01* +X1252481Y162533D01* +X1252403Y162477D01* +X1252322Y162423D01* +X1252240Y162373D01* +X1252155Y162327D01* +X1252068Y162284D01* +X1251980Y162244D01* +X1251891Y162208D01* +X1251800Y162175D01* +X1251707Y162147D01* +X1251614Y162122D01* +X1251520Y162100D01* +X1251425Y162083D01* +X1251329Y162069D01* +X1251233Y162060D01* +X1251137Y162054D01* +X1251040Y162052D01* +X1248641Y162052D01* +X1258090Y163971D02* +X1260009Y170688D01* +X1258090Y163971D02* +X1262888Y163971D01* +X1261449Y165890D02* +X1261449Y162052D01* +D20* +X1270300Y121540D02* +X1273300Y121540D01* +X1273300Y137540D01* +X1270300Y137540D01* +D10* +X1257300Y132080D02* +X1257300Y127000D01* +D14* +X1248641Y122428D02* +X1248641Y113792D01* +X1248641Y122428D02* +X1251040Y122428D01* +X1251137Y122426D01* +X1251233Y122420D01* +X1251329Y122411D01* +X1251425Y122397D01* +X1251520Y122380D01* +X1251614Y122358D01* +X1251707Y122333D01* +X1251800Y122305D01* +X1251891Y122272D01* +X1251980Y122236D01* +X1252068Y122196D01* +X1252155Y122153D01* +X1252240Y122107D01* +X1252322Y122057D01* +X1252403Y122003D01* +X1252481Y121947D01* +X1252557Y121887D01* +X1252631Y121825D01* +X1252702Y121759D01* +X1252770Y121691D01* +X1252836Y121620D01* +X1252898Y121546D01* +X1252958Y121470D01* +X1253014Y121392D01* +X1253068Y121311D01* +X1253118Y121229D01* +X1253164Y121144D01* +X1253207Y121057D01* +X1253247Y120969D01* +X1253283Y120880D01* +X1253316Y120789D01* +X1253344Y120696D01* +X1253369Y120603D01* +X1253391Y120509D01* +X1253408Y120414D01* +X1253422Y120318D01* +X1253431Y120222D01* +X1253437Y120126D01* +X1253439Y120029D01* +X1253439Y116191D01* +X1253437Y116094D01* +X1253431Y115998D01* +X1253422Y115902D01* +X1253408Y115806D01* +X1253391Y115711D01* +X1253369Y115617D01* +X1253344Y115524D01* +X1253316Y115431D01* +X1253283Y115340D01* +X1253247Y115251D01* +X1253207Y115163D01* +X1253164Y115076D01* +X1253118Y114991D01* +X1253068Y114909D01* +X1253014Y114828D01* +X1252958Y114750D01* +X1252898Y114674D01* +X1252836Y114600D01* +X1252770Y114529D01* +X1252702Y114461D01* +X1252631Y114395D01* +X1252557Y114333D01* +X1252481Y114273D01* +X1252403Y114217D01* +X1252322Y114163D01* +X1252240Y114113D01* +X1252155Y114067D01* +X1252068Y114024D01* +X1251980Y113984D01* +X1251891Y113948D01* +X1251800Y113915D01* +X1251707Y113887D01* +X1251614Y113862D01* +X1251520Y113840D01* +X1251425Y113823D01* +X1251329Y113809D01* +X1251233Y113800D01* +X1251137Y113794D01* +X1251040Y113792D01* +X1248641Y113792D01* +X1258090Y121468D02* +X1258090Y122428D01* +X1262888Y122428D01* +X1260489Y113792D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_soldermask_bottom.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_soldermask_bottom.gbr new file mode 100644 index 0000000000..673882d016 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_soldermask_bottom.gbr @@ -0,0 +1,82 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSoldermask Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,5.283200*% +%ADD11C,3.505200*% +%ADD12C,1.219200*% +%ADD13C,1.981200*% +%ADD14C,1.903200*% +%ADD15C,2.743200*% +%ADD16C,3.503200*% +%ADD17R,4.013200X4.013200*% +%ADD18R,1.981200X1.981200*% +%ADD19C,1.159600*% + + +D10* +X50800Y152400D03* +X1320800Y152400D03* +D11* +X76200Y88900D03* +X76200Y31750D03* +X1295400Y31750D03* +X1295400Y88900D03* +D12* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D13* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D14* +X292090Y237498D03* +D15* +X259090Y271798D03* +X259090Y114298D03* +D16* +X228590Y135898D03* +X228590Y250198D03* +D13* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D17* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D18* +X800100Y20320D03* +D13* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D18* +X749300Y78740D03* +D13* +X723900Y78740D03* +D19* +X490605Y121876D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_soldermask_top.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_soldermask_top.gbr new file mode 100644 index 0000000000..76f400cd22 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_soldermask_top.gbr @@ -0,0 +1,3070 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSoldermask Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,5.283200*% +%ADD11C,3.505200*% +%ADD12C,0.399194*% +%ADD13C,0.553472*% +%ADD14C,0.446600*% +%ADD15C,0.617406*% +%ADD16C,0.525272*% +%ADD17C,0.689375*% +%ADD18C,0.728447*% +%ADD19C,0.518503*% +%ADD20C,1.219200*% +%ADD21C,0.404144*% +%ADD22C,0.897791*% +%ADD23C,1.156759*% +%ADD24C,0.296447*% +%ADD25C,0.702831*% +%ADD26C,1.981200*% +%ADD27C,1.903200*% +%ADD28C,2.743200*% +%ADD29C,3.503200*% +%ADD30R,4.013200X4.013200*% +%ADD31C,0.409631*% +%ADD32R,1.981200X1.981200*% +%ADD33C,0.329691*% +%ADD34C,1.000000*% +%ADD35C,0.343822*% +%ADD36C,0.608938*% +%ADD37C,1.159600*% + + +D10* +X50800Y152400D03* +X1320800Y152400D03* +D11* +X76200Y88900D03* +X76200Y31750D03* +X1295400Y31750D03* +X1295400Y88900D03* +D12* +X248400Y346040D02* +X248400Y349580D01* +X248400Y346040D02* +X244360Y346040D01* +X244360Y349580D01* +X248400Y349580D01* +X248400Y356540D02* +X248400Y360080D01* +X248400Y356540D02* +X244360Y356540D01* +X244360Y360080D01* +X248400Y360080D01* +X345960Y194980D02* +X345960Y191440D01* +X345960Y194980D02* +X350000Y194980D01* +X350000Y191440D01* +X345960Y191440D01* +X345960Y184480D02* +X345960Y180940D01* +X345960Y184480D02* +X350000Y184480D01* +X350000Y180940D01* +X345960Y180940D01* +X499860Y246980D02* +X499860Y250520D01* +X499860Y246980D02* +X495820Y246980D01* +X495820Y250520D01* +X499860Y250520D01* +X499860Y257480D02* +X499860Y261020D01* +X499860Y257480D02* +X495820Y257480D01* +X495820Y261020D01* +X499860Y261020D01* +D13* +X579829Y66869D02* +X579829Y59371D01* +X573331Y59371D01* +X573331Y66869D01* +X579829Y66869D01* +X579829Y64629D02* +X573331Y64629D01* +X579829Y75371D02* +X579829Y82869D01* +X579829Y75371D02* +X573331Y75371D01* +X573331Y82869D01* +X579829Y82869D01* +X579829Y80629D02* +X573331Y80629D01* +X352351Y70169D02* +X352351Y62671D01* +X352351Y70169D02* +X358849Y70169D01* +X358849Y62671D01* +X352351Y62671D01* +X352351Y67929D02* +X358849Y67929D01* +X352351Y54169D02* +X352351Y46671D01* +X352351Y54169D02* +X358849Y54169D01* +X358849Y46671D01* +X352351Y46671D01* +X352351Y51929D02* +X358849Y51929D01* +D12* +X691400Y163500D02* +X691400Y167040D01* +X695440Y167040D01* +X695440Y163500D01* +X691400Y163500D01* +X691400Y156540D02* +X691400Y153000D01* +X691400Y156540D02* +X695440Y156540D01* +X695440Y153000D01* +X691400Y153000D01* +X995160Y272380D02* +X995160Y275920D01* +X995160Y272380D02* +X991120Y272380D01* +X991120Y275920D01* +X995160Y275920D01* +X995160Y282880D02* +X995160Y286420D01* +X995160Y282880D02* +X991120Y282880D01* +X991120Y286420D01* +X995160Y286420D01* +X865620Y156540D02* +X865620Y153000D01* +X861580Y153000D01* +X861580Y156540D01* +X865620Y156540D01* +X865620Y163500D02* +X865620Y167040D01* +X865620Y163500D02* +X861580Y163500D01* +X861580Y167040D01* +X865620Y167040D01* +D13* +X498511Y296471D02* +X498511Y302969D01* +X509009Y302969D01* +X509009Y296471D01* +X498511Y296471D01* +X498511Y301729D02* +X509009Y301729D01* +X476511Y293469D02* +X476511Y286971D01* +X476511Y293469D02* +X487009Y293469D01* +X487009Y286971D01* +X476511Y286971D01* +X476511Y292229D02* +X487009Y292229D01* +X476511Y305971D02* +X476511Y312469D01* +X487009Y312469D01* +X487009Y305971D01* +X476511Y305971D01* +X476511Y311229D02* +X487009Y311229D01* +X457871Y326951D02* +X457871Y333449D01* +X468369Y333449D01* +X468369Y326951D01* +X457871Y326951D01* +X457871Y332209D02* +X468369Y332209D01* +X435871Y323949D02* +X435871Y317451D01* +X435871Y323949D02* +X446369Y323949D01* +X446369Y317451D01* +X435871Y317451D01* +X435871Y322709D02* +X446369Y322709D01* +X435871Y336451D02* +X435871Y342949D01* +X446369Y342949D01* +X446369Y336451D01* +X435871Y336451D01* +X435871Y341709D02* +X446369Y341709D01* +D12* +X1029220Y98460D02* +X1029220Y94920D01* +X1029220Y98460D02* +X1033260Y98460D01* +X1033260Y94920D01* +X1029220Y94920D01* +X1029220Y87960D02* +X1029220Y84420D01* +X1029220Y87960D02* +X1033260Y87960D01* +X1033260Y84420D01* +X1029220Y84420D01* +X704100Y143180D02* +X704100Y146720D01* +X708140Y146720D01* +X708140Y143180D01* +X704100Y143180D01* +X704100Y136220D02* +X704100Y132680D01* +X704100Y136220D02* +X708140Y136220D01* +X708140Y132680D01* +X704100Y132680D01* +X1252820Y191020D02* +X1256360Y191020D01* +X1252820Y191020D02* +X1252820Y195060D01* +X1256360Y195060D01* +X1256360Y191020D01* +X1256360Y194812D02* +X1252820Y194812D01* +X1263320Y191020D02* +X1266860Y191020D01* +X1263320Y191020D02* +X1263320Y195060D01* +X1266860Y195060D01* +X1266860Y191020D01* +X1266860Y194812D02* +X1263320Y194812D01* +X1256360Y140220D02* +X1252820Y140220D01* +X1252820Y144260D01* +X1256360Y144260D01* +X1256360Y140220D01* +X1256360Y144012D02* +X1252820Y144012D01* +X1263320Y140220D02* +X1266860Y140220D01* +X1263320Y140220D02* +X1263320Y144260D01* +X1266860Y144260D01* +X1266860Y140220D01* +X1266860Y144012D02* +X1263320Y144012D01* +X540420Y261100D02* +X536880Y261100D01* +X540420Y261100D02* +X540420Y257060D01* +X536880Y257060D01* +X536880Y261100D01* +X536880Y260852D02* +X540420Y260852D01* +X529920Y261100D02* +X526380Y261100D01* +X529920Y261100D02* +X529920Y257060D01* +X526380Y257060D01* +X526380Y261100D01* +X526380Y260852D02* +X529920Y260852D01* +X676160Y167040D02* +X676160Y163500D01* +X676160Y167040D02* +X680200Y167040D01* +X680200Y163500D01* +X676160Y163500D01* +X676160Y156540D02* +X676160Y153000D01* +X676160Y156540D02* +X680200Y156540D01* +X680200Y153000D01* +X676160Y153000D01* +X1007860Y272380D02* +X1007860Y275920D01* +X1007860Y272380D02* +X1003820Y272380D01* +X1003820Y275920D01* +X1007860Y275920D01* +X1007860Y282880D02* +X1007860Y286420D01* +X1007860Y282880D02* +X1003820Y282880D01* +X1003820Y286420D01* +X1007860Y286420D01* +X874280Y167040D02* +X874280Y163500D01* +X874280Y167040D02* +X878320Y167040D01* +X878320Y163500D01* +X874280Y163500D01* +X874280Y156540D02* +X874280Y153000D01* +X874280Y156540D02* +X878320Y156540D01* +X878320Y153000D01* +X874280Y153000D01* +X1200900Y100660D02* +X1200900Y97120D01* +X1196860Y97120D01* +X1196860Y100660D01* +X1200900Y100660D01* +X1200900Y107620D02* +X1200900Y111160D01* +X1200900Y107620D02* +X1196860Y107620D01* +X1196860Y111160D01* +X1200900Y111160D01* +X968260Y130480D02* +X968260Y134020D01* +X972300Y134020D01* +X972300Y130480D01* +X968260Y130480D01* +X968260Y123520D02* +X968260Y119980D01* +X968260Y123520D02* +X972300Y123520D01* +X972300Y119980D01* +X968260Y119980D01* +X976300Y256020D02* +X979840Y256020D01* +X979840Y251980D01* +X976300Y251980D01* +X976300Y256020D01* +X976300Y255772D02* +X979840Y255772D01* +X969340Y256020D02* +X965800Y256020D01* +X969340Y256020D02* +X969340Y251980D01* +X965800Y251980D01* +X965800Y256020D01* +X965800Y255772D02* +X969340Y255772D01* +X1043420Y87960D02* +X1043420Y84420D01* +X1039380Y84420D01* +X1039380Y87960D01* +X1043420Y87960D01* +X1043420Y94920D02* +X1043420Y98460D01* +X1043420Y94920D02* +X1039380Y94920D01* +X1039380Y98460D01* +X1043420Y98460D01* +X441360Y212840D02* +X437820Y212840D01* +X441360Y212840D02* +X441360Y208800D01* +X437820Y208800D01* +X437820Y212840D01* +X437820Y212592D02* +X441360Y212592D01* +X430860Y212840D02* +X427320Y212840D01* +X430860Y212840D02* +X430860Y208800D01* +X427320Y208800D01* +X427320Y212840D01* +X427320Y212592D02* +X430860Y212592D01* +X437820Y177280D02* +X441360Y177280D01* +X441360Y173240D01* +X437820Y173240D01* +X437820Y177280D01* +X437820Y177032D02* +X441360Y177032D01* +X430860Y177280D02* +X427320Y177280D01* +X430860Y177280D02* +X430860Y173240D01* +X427320Y173240D01* +X427320Y177280D01* +X427320Y177032D02* +X430860Y177032D01* +X430200Y187440D02* +X433740Y187440D01* +X433740Y183400D01* +X430200Y183400D01* +X430200Y187440D01* +X430200Y187192D02* +X433740Y187192D01* +X423240Y187440D02* +X419700Y187440D01* +X423240Y187440D02* +X423240Y183400D01* +X419700Y183400D01* +X419700Y187440D01* +X419700Y187192D02* +X423240Y187192D01* +X430200Y202680D02* +X433740Y202680D01* +X433740Y198640D01* +X430200Y198640D01* +X430200Y202680D01* +X430200Y202432D02* +X433740Y202432D01* +X423240Y202680D02* +X419700Y202680D01* +X423240Y202680D02* +X423240Y198640D01* +X419700Y198640D01* +X419700Y202680D01* +X419700Y202432D02* +X423240Y202432D01* +X526380Y201180D02* +X529920Y201180D01* +X526380Y201180D02* +X526380Y205220D01* +X529920Y205220D01* +X529920Y201180D01* +X529920Y204972D02* +X526380Y204972D01* +X536880Y201180D02* +X540420Y201180D01* +X536880Y201180D02* +X536880Y205220D01* +X540420Y205220D01* +X540420Y201180D01* +X540420Y204972D02* +X536880Y204972D01* +X554320Y152920D02* +X557860Y152920D01* +X554320Y152920D02* +X554320Y156960D01* +X557860Y156960D01* +X557860Y152920D01* +X557860Y156712D02* +X554320Y156712D01* +X564820Y152920D02* +X568360Y152920D01* +X564820Y152920D02* +X564820Y156960D01* +X568360Y156960D01* +X568360Y152920D01* +X568360Y156712D02* +X564820Y156712D01* +X568440Y178400D02* +X568440Y181940D01* +X568440Y178400D02* +X564400Y178400D01* +X564400Y181940D01* +X568440Y181940D01* +X568440Y188900D02* +X568440Y192440D01* +X568440Y188900D02* +X564400Y188900D01* +X564400Y192440D01* +X568440Y192440D01* +X529920Y226580D02* +X526380Y226580D01* +X526380Y230620D01* +X529920Y230620D01* +X529920Y226580D01* +X529920Y230372D02* +X526380Y230372D01* +X536880Y226580D02* +X540420Y226580D01* +X536880Y226580D02* +X536880Y230620D01* +X540420Y230620D01* +X540420Y226580D01* +X540420Y230372D02* +X536880Y230372D01* +X461760Y169240D02* +X461760Y165700D01* +X457720Y165700D01* +X457720Y169240D01* +X461760Y169240D01* +X461760Y176200D02* +X461760Y179740D01* +X461760Y176200D02* +X457720Y176200D01* +X457720Y179740D01* +X461760Y179740D01* +X441360Y141720D02* +X437820Y141720D01* +X441360Y141720D02* +X441360Y137680D01* +X437820Y137680D01* +X437820Y141720D01* +X437820Y141472D02* +X441360Y141472D01* +X430860Y141720D02* +X427320Y141720D01* +X430860Y141720D02* +X430860Y137680D01* +X427320Y137680D01* +X427320Y141720D01* +X427320Y141472D02* +X430860Y141472D01* +X439940Y305740D02* +X439940Y309280D01* +X443980Y309280D01* +X443980Y305740D01* +X439940Y305740D01* +X439940Y298780D02* +X439940Y295240D01* +X439940Y298780D02* +X443980Y298780D01* +X443980Y295240D01* +X439940Y295240D01* +X441360Y129020D02* +X437820Y129020D01* +X441360Y129020D02* +X441360Y124980D01* +X437820Y124980D01* +X437820Y129020D01* +X437820Y128772D02* +X441360Y128772D01* +X430860Y129020D02* +X427320Y129020D01* +X430860Y129020D02* +X430860Y124980D01* +X427320Y124980D01* +X427320Y129020D01* +X427320Y128772D02* +X430860Y128772D01* +X549580Y192520D02* +X553120Y192520D01* +X553120Y188480D01* +X549580Y188480D01* +X549580Y192520D01* +X549580Y192272D02* +X553120Y192272D01* +X542620Y192520D02* +X539080Y192520D01* +X542620Y192520D02* +X542620Y188480D01* +X539080Y188480D01* +X539080Y192520D01* +X539080Y192272D02* +X542620Y192272D01* +X529920Y213880D02* +X526380Y213880D01* +X526380Y217920D01* +X529920Y217920D01* +X529920Y213880D01* +X529920Y217672D02* +X526380Y217672D01* +X536880Y213880D02* +X540420Y213880D01* +X536880Y213880D02* +X536880Y217920D01* +X540420Y217920D01* +X540420Y213880D01* +X540420Y217672D02* +X536880Y217672D01* +X541540Y156880D02* +X541540Y153340D01* +X541540Y156880D02* +X545580Y156880D01* +X545580Y153340D01* +X541540Y153340D01* +X541540Y146380D02* +X541540Y142840D01* +X541540Y146380D02* +X545580Y146380D01* +X545580Y142840D01* +X541540Y142840D01* +X564820Y172200D02* +X568360Y172200D01* +X568360Y168160D01* +X564820Y168160D01* +X564820Y172200D01* +X564820Y171952D02* +X568360Y171952D01* +X557860Y172200D02* +X554320Y172200D01* +X557860Y172200D02* +X557860Y168160D01* +X554320Y168160D01* +X554320Y172200D01* +X554320Y171952D02* +X557860Y171952D01* +X487160Y246980D02* +X487160Y250520D01* +X487160Y246980D02* +X483120Y246980D01* +X483120Y250520D01* +X487160Y250520D01* +X487160Y257480D02* +X487160Y261020D01* +X487160Y257480D02* +X483120Y257480D01* +X483120Y261020D01* +X487160Y261020D01* +X757520Y99580D02* +X761060Y99580D01* +X757520Y99580D02* +X757520Y103620D01* +X761060Y103620D01* +X761060Y99580D01* +X761060Y103372D02* +X757520Y103372D01* +X768020Y99580D02* +X771560Y99580D01* +X768020Y99580D02* +X768020Y103620D01* +X771560Y103620D01* +X771560Y99580D01* +X771560Y103372D02* +X768020Y103372D01* +X464300Y295240D02* +X464300Y298780D01* +X464300Y295240D02* +X460260Y295240D01* +X460260Y298780D01* +X464300Y298780D01* +X464300Y305740D02* +X464300Y309280D01* +X464300Y305740D02* +X460260Y305740D01* +X460260Y309280D01* +X464300Y309280D01* +X352120Y361200D02* +X348580Y361200D01* +X348580Y365240D01* +X352120Y365240D01* +X352120Y361200D01* +X352120Y364992D02* +X348580Y364992D01* +X359080Y361200D02* +X362620Y361200D01* +X359080Y361200D02* +X359080Y365240D01* +X362620Y365240D01* +X362620Y361200D01* +X362620Y364992D02* +X359080Y364992D01* +X1213600Y100660D02* +X1213600Y97120D01* +X1209560Y97120D01* +X1209560Y100660D01* +X1213600Y100660D01* +X1213600Y107620D02* +X1213600Y111160D01* +X1213600Y107620D02* +X1209560Y107620D01* +X1209560Y111160D01* +X1213600Y111160D01* +X751240Y162040D02* +X747700Y162040D01* +X751240Y162040D02* +X751240Y158000D01* +X747700Y158000D01* +X747700Y162040D01* +X747700Y161792D02* +X751240Y161792D01* +X740740Y162040D02* +X737200Y162040D01* +X740740Y162040D02* +X740740Y158000D01* +X737200Y158000D01* +X737200Y162040D01* +X737200Y161792D02* +X740740Y161792D01* +X715340Y158000D02* +X711800Y158000D01* +X711800Y162040D01* +X715340Y162040D01* +X715340Y158000D01* +X715340Y161792D02* +X711800Y161792D01* +X722300Y158000D02* +X725840Y158000D01* +X722300Y158000D02* +X722300Y162040D01* +X725840Y162040D01* +X725840Y158000D01* +X725840Y161792D02* +X722300Y161792D01* +D13* +X456249Y262329D02* +X448751Y262329D01* +X456249Y262329D02* +X456249Y255831D01* +X448751Y255831D01* +X448751Y262329D01* +X448751Y261089D02* +X456249Y261089D01* +X440249Y262329D02* +X432751Y262329D01* +X440249Y262329D02* +X440249Y255831D01* +X432751Y255831D01* +X432751Y262329D01* +X432751Y261089D02* +X440249Y261089D01* +X440249Y225351D02* +X432751Y225351D01* +X432751Y231849D01* +X440249Y231849D01* +X440249Y225351D01* +X440249Y230609D02* +X432751Y230609D01* +X448751Y225351D02* +X456249Y225351D01* +X448751Y225351D02* +X448751Y231849D01* +X456249Y231849D01* +X456249Y225351D01* +X456249Y230609D02* +X448751Y230609D01* +D12* +X1035800Y166700D02* +X1035800Y163160D01* +X1031760Y163160D01* +X1031760Y166700D01* +X1035800Y166700D01* +X1035800Y173660D02* +X1035800Y177200D01* +X1035800Y173660D02* +X1031760Y173660D01* +X1031760Y177200D01* +X1035800Y177200D01* +X464300Y206340D02* +X464300Y209880D01* +X464300Y206340D02* +X460260Y206340D01* +X460260Y209880D01* +X464300Y209880D01* +X464300Y216840D02* +X464300Y220380D01* +X464300Y216840D02* +X460260Y216840D01* +X460260Y220380D01* +X464300Y220380D01* +X470420Y159420D02* +X470420Y155880D01* +X470420Y159420D02* +X474460Y159420D01* +X474460Y155880D01* +X470420Y155880D01* +X470420Y148920D02* +X470420Y145380D01* +X470420Y148920D02* +X474460Y148920D01* +X474460Y145380D01* +X470420Y145380D01* +D13* +X524951Y137869D02* +X532449Y137869D01* +X532449Y131371D01* +X524951Y131371D01* +X524951Y137869D01* +X524951Y136629D02* +X532449Y136629D01* +X516449Y137869D02* +X508951Y137869D01* +X516449Y137869D02* +X516449Y131371D01* +X508951Y131371D01* +X508951Y137869D01* +X508951Y136629D02* +X516449Y136629D01* +X1024329Y282891D02* +X1024329Y290389D01* +X1024329Y282891D02* +X1017831Y282891D01* +X1017831Y290389D01* +X1024329Y290389D01* +X1024329Y288149D02* +X1017831Y288149D01* +X1024329Y298891D02* +X1024329Y306389D01* +X1024329Y298891D02* +X1017831Y298891D01* +X1017831Y306389D01* +X1024329Y306389D01* +X1024329Y304149D02* +X1017831Y304149D01* +D12* +X1035800Y293700D02* +X1035800Y290160D01* +X1031760Y290160D01* +X1031760Y293700D01* +X1035800Y293700D01* +X1035800Y300660D02* +X1035800Y304200D01* +X1035800Y300660D02* +X1031760Y300660D01* +X1031760Y304200D01* +X1035800Y304200D01* +D13* +X1012751Y70169D02* +X1012751Y62671D01* +X1012751Y70169D02* +X1019249Y70169D01* +X1019249Y62671D01* +X1012751Y62671D01* +X1012751Y67929D02* +X1019249Y67929D01* +X1012751Y54169D02* +X1012751Y46671D01* +X1012751Y54169D02* +X1019249Y54169D01* +X1019249Y46671D01* +X1012751Y46671D01* +X1012751Y51929D02* +X1019249Y51929D01* +X685091Y88071D02* +X685091Y95569D01* +X691589Y95569D01* +X691589Y88071D01* +X685091Y88071D01* +X685091Y93329D02* +X691589Y93329D01* +X685091Y79569D02* +X685091Y72071D01* +X685091Y79569D02* +X691589Y79569D01* +X691589Y72071D01* +X685091Y72071D01* +X685091Y77329D02* +X691589Y77329D01* +D12* +X1049540Y94920D02* +X1049540Y98460D01* +X1053580Y98460D01* +X1053580Y94920D01* +X1049540Y94920D01* +X1049540Y87960D02* +X1049540Y84420D01* +X1049540Y87960D02* +X1053580Y87960D01* +X1053580Y84420D01* +X1049540Y84420D01* +X511060Y155880D02* +X511060Y159420D01* +X515100Y159420D01* +X515100Y155880D01* +X511060Y155880D01* +X511060Y148920D02* +X511060Y145380D01* +X511060Y148920D02* +X515100Y148920D01* +X515100Y145380D01* +X511060Y145380D01* +X523760Y155880D02* +X523760Y159420D01* +X527800Y159420D01* +X527800Y155880D01* +X523760Y155880D01* +X523760Y148920D02* +X523760Y145380D01* +X523760Y148920D02* +X527800Y148920D01* +X527800Y145380D01* +X523760Y145380D01* +X348500Y351460D02* +X348500Y355000D01* +X352540Y355000D01* +X352540Y351460D01* +X348500Y351460D01* +X348500Y344500D02* +X348500Y340960D01* +X348500Y344500D02* +X352540Y344500D01* +X352540Y340960D01* +X348500Y340960D01* +X358660Y351460D02* +X358660Y355000D01* +X362700Y355000D01* +X362700Y351460D01* +X358660Y351460D01* +X358660Y344500D02* +X358660Y340960D01* +X358660Y344500D02* +X362700Y344500D01* +X362700Y340960D01* +X358660Y340960D01* +X238240Y346040D02* +X238240Y349580D01* +X238240Y346040D02* +X234200Y346040D01* +X234200Y349580D01* +X238240Y349580D01* +X238240Y356540D02* +X238240Y360080D01* +X238240Y356540D02* +X234200Y356540D01* +X234200Y360080D01* +X238240Y360080D01* +D13* +X516291Y64209D02* +X516291Y57711D01* +X516291Y64209D02* +X526789Y64209D01* +X526789Y57711D01* +X516291Y57711D01* +X516291Y62969D02* +X526789Y62969D01* +X494291Y54709D02* +X494291Y48211D01* +X494291Y54709D02* +X504789Y54709D01* +X504789Y48211D01* +X494291Y48211D01* +X494291Y53469D02* +X504789Y53469D01* +X494291Y67211D02* +X494291Y73709D01* +X504789Y73709D01* +X504789Y67211D01* +X494291Y67211D01* +X494291Y72469D02* +X504789Y72469D01* +D12* +X182360Y340960D02* +X182360Y344500D01* +X182360Y340960D02* +X178320Y340960D01* +X178320Y344500D01* +X182360Y344500D01* +X182360Y351460D02* +X182360Y355000D01* +X182360Y351460D02* +X178320Y351460D01* +X178320Y355000D01* +X182360Y355000D01* +D13* +X448751Y247089D02* +X456249Y247089D01* +X456249Y240591D01* +X448751Y240591D01* +X448751Y247089D01* +X448751Y245849D02* +X456249Y245849D01* +X440249Y247089D02* +X432751Y247089D01* +X440249Y247089D02* +X440249Y240591D01* +X432751Y240591D01* +X432751Y247089D01* +X432751Y245849D02* +X440249Y245849D01* +D14* +X611787Y105683D02* +X611787Y98117D01* +X611787Y105683D02* +X616253Y105683D01* +X616253Y98117D01* +X611787Y98117D01* +X611787Y102360D02* +X616253Y102360D01* +X602287Y105683D02* +X602287Y98117D01* +X602287Y105683D02* +X606753Y105683D01* +X606753Y98117D01* +X602287Y98117D01* +X602287Y102360D02* +X606753Y102360D01* +X592787Y105683D02* +X592787Y98117D01* +X592787Y105683D02* +X597253Y105683D01* +X597253Y98117D01* +X592787Y98117D01* +X592787Y102360D02* +X597253Y102360D01* +X592787Y79683D02* +X592787Y72117D01* +X592787Y79683D02* +X597253Y79683D01* +X597253Y72117D01* +X592787Y72117D01* +X592787Y76360D02* +X597253Y76360D01* +X602287Y79683D02* +X602287Y72117D01* +X602287Y79683D02* +X606753Y79683D01* +X606753Y72117D01* +X602287Y72117D01* +X602287Y76360D02* +X606753Y76360D01* +X611787Y79683D02* +X611787Y72117D01* +X611787Y79683D02* +X616253Y79683D01* +X616253Y72117D01* +X611787Y72117D01* +X611787Y76360D02* +X616253Y76360D01* +D15* +X639931Y77551D02* +X647789Y77551D01* +X639931Y77551D02* +X639931Y110409D01* +X647789Y110409D01* +X647789Y77551D01* +X647789Y83416D02* +X639931Y83416D01* +X639931Y89281D02* +X647789Y89281D01* +X647789Y95146D02* +X639931Y95146D01* +X639931Y101011D02* +X647789Y101011D01* +X647789Y106876D02* +X639931Y106876D01* +X667931Y77551D02* +X675789Y77551D01* +X667931Y77551D02* +X667931Y110409D01* +X675789Y110409D01* +X675789Y77551D01* +X675789Y83416D02* +X667931Y83416D01* +X667931Y89281D02* +X675789Y89281D01* +X675789Y95146D02* +X667931Y95146D01* +X667931Y101011D02* +X675789Y101011D01* +X675789Y106876D02* +X667931Y106876D01* +D12* +X606460Y65520D02* +X602920Y65520D01* +X606460Y65520D02* +X606460Y61480D01* +X602920Y61480D01* +X602920Y65520D01* +X602920Y65272D02* +X606460Y65272D01* +X595960Y65520D02* +X592420Y65520D01* +X595960Y65520D02* +X595960Y61480D01* +X592420Y61480D01* +X592420Y65520D01* +X592420Y65272D02* +X595960Y65272D01* +X627900Y107620D02* +X627900Y111160D01* +X631940Y111160D01* +X631940Y107620D01* +X627900Y107620D01* +X627900Y100660D02* +X627900Y97120D01* +X627900Y100660D02* +X631940Y100660D01* +X631940Y97120D01* +X627900Y97120D01* +X613740Y114820D02* +X610200Y114820D01* +X610200Y118860D01* +X613740Y118860D01* +X613740Y114820D01* +X613740Y118612D02* +X610200Y118612D01* +X620700Y114820D02* +X624240Y114820D01* +X620700Y114820D02* +X620700Y118860D01* +X624240Y118860D01* +X624240Y114820D01* +X624240Y118612D02* +X620700Y118612D01* +X588340Y114820D02* +X584800Y114820D01* +X584800Y118860D01* +X588340Y118860D01* +X588340Y114820D01* +X588340Y118612D02* +X584800Y118612D01* +X595300Y114820D02* +X598840Y114820D01* +X595300Y114820D02* +X595300Y118860D01* +X598840Y118860D01* +X598840Y114820D01* +X598840Y118612D02* +X595300Y118612D01* +D16* +X639359Y62906D02* +X639359Y53934D01* +X633435Y53934D01* +X633435Y62906D01* +X639359Y62906D01* +X639359Y58924D02* +X633435Y58924D01* +X672125Y62906D02* +X672125Y53934D01* +X666201Y53934D01* +X666201Y62906D01* +X672125Y62906D01* +X672125Y58924D02* +X666201Y58924D01* +D12* +X540080Y114820D02* +X536540Y114820D01* +X536540Y118860D01* +X540080Y118860D01* +X540080Y114820D01* +X540080Y118612D02* +X536540Y118612D01* +X547040Y114820D02* +X550580Y114820D01* +X547040Y114820D02* +X547040Y118860D01* +X550580Y118860D01* +X550580Y114820D01* +X550580Y118612D02* +X547040Y118612D01* +D13* +X546929Y60251D02* +X539431Y60251D01* +X539431Y66749D01* +X546929Y66749D01* +X546929Y60251D01* +X546929Y65509D02* +X539431Y65509D01* +X555431Y60251D02* +X562929Y60251D01* +X555431Y60251D02* +X555431Y66749D01* +X562929Y66749D01* +X562929Y60251D01* +X562929Y65509D02* +X555431Y65509D01* +D17* +X581431Y132451D02* +X597569Y132451D01* +X581431Y132451D02* +X581431Y141589D01* +X597569Y141589D01* +X597569Y132451D01* +X597569Y139000D02* +X581431Y139000D01* +X581431Y178451D02* +X597569Y178451D01* +X581431Y178451D02* +X581431Y187589D01* +X597569Y187589D01* +X597569Y178451D01* +X597569Y185000D02* +X581431Y185000D01* +X672431Y178451D02* +X688569Y178451D01* +X672431Y178451D02* +X672431Y187589D01* +X688569Y187589D01* +X688569Y178451D01* +X688569Y185000D02* +X672431Y185000D01* +X672431Y132451D02* +X688569Y132451D01* +X672431Y132451D02* +X672431Y141589D01* +X688569Y141589D01* +X688569Y132451D01* +X688569Y139000D02* +X672431Y139000D01* +X941969Y197891D02* +X941969Y214029D01* +X941969Y197891D02* +X932831Y197891D01* +X932831Y214029D01* +X941969Y214029D01* +X941969Y204440D02* +X932831Y204440D01* +X932831Y210989D02* +X941969Y210989D01* +X895969Y214029D02* +X895969Y197891D01* +X886831Y197891D01* +X886831Y214029D01* +X895969Y214029D01* +X895969Y204440D02* +X886831Y204440D01* +X886831Y210989D02* +X895969Y210989D01* +X895969Y288891D02* +X895969Y305029D01* +X895969Y288891D02* +X886831Y288891D01* +X886831Y305029D01* +X895969Y305029D01* +X895969Y295440D02* +X886831Y295440D01* +X886831Y301989D02* +X895969Y301989D01* +X941969Y305029D02* +X941969Y288891D01* +X932831Y288891D01* +X932831Y305029D01* +X941969Y305029D01* +X941969Y295440D02* +X932831Y295440D01* +X932831Y301989D02* +X941969Y301989D01* +X782989Y132451D02* +X766851Y132451D01* +X766851Y141589D01* +X782989Y141589D01* +X782989Y132451D01* +X782989Y139000D02* +X766851Y139000D01* +X766851Y178451D02* +X782989Y178451D01* +X766851Y178451D02* +X766851Y187589D01* +X782989Y187589D01* +X782989Y178451D01* +X782989Y185000D02* +X766851Y185000D01* +X857851Y178451D02* +X873989Y178451D01* +X857851Y178451D02* +X857851Y187589D01* +X873989Y187589D01* +X873989Y178451D01* +X873989Y185000D02* +X857851Y185000D01* +X857851Y132451D02* +X873989Y132451D01* +X857851Y132451D02* +X857851Y141589D01* +X873989Y141589D01* +X873989Y132451D01* +X873989Y139000D02* +X857851Y139000D01* +D12* +X537540Y178320D02* +X534000Y178320D01* +X534000Y182360D01* +X537540Y182360D01* +X537540Y178320D01* +X537540Y182112D02* +X534000Y182112D01* +X544500Y178320D02* +X548040Y178320D01* +X544500Y178320D02* +X544500Y182360D01* +X548040Y182360D01* +X548040Y178320D01* +X548040Y182112D02* +X544500Y182112D01* +X508520Y257480D02* +X508520Y261020D01* +X512560Y261020D01* +X512560Y257480D01* +X508520Y257480D01* +X508520Y250520D02* +X508520Y246980D01* +X508520Y250520D02* +X512560Y250520D01* +X512560Y246980D01* +X508520Y246980D01* +X861660Y53860D02* +X865200Y53860D01* +X861660Y53860D02* +X861660Y57900D01* +X865200Y57900D01* +X865200Y53860D01* +X865200Y57652D02* +X861660Y57652D01* +X872160Y53860D02* +X875700Y53860D01* +X872160Y53860D02* +X872160Y57900D01* +X875700Y57900D01* +X875700Y53860D01* +X875700Y57652D02* +X872160Y57652D01* +D18* +X1105546Y206686D02* +X1150294Y206686D01* +X1105546Y206686D02* +X1105546Y251434D01* +X1150294Y251434D01* +X1150294Y206686D01* +X1150294Y213606D02* +X1105546Y213606D01* +X1105546Y220526D02* +X1150294Y220526D01* +X1150294Y227446D02* +X1105546Y227446D01* +X1105546Y234366D02* +X1150294Y234366D01* +X1150294Y241286D02* +X1105546Y241286D01* +X1105546Y248206D02* +X1150294Y248206D01* +D19* +X1061344Y301136D02* +X1044496Y301136D01* +X1044496Y306984D01* +X1061344Y306984D01* +X1061344Y301136D01* +X1061344Y306062D02* +X1044496Y306062D01* +X1044496Y288436D02* +X1061344Y288436D01* +X1044496Y288436D02* +X1044496Y294284D01* +X1061344Y294284D01* +X1061344Y288436D01* +X1061344Y293362D02* +X1044496Y293362D01* +X1044496Y275736D02* +X1061344Y275736D01* +X1044496Y275736D02* +X1044496Y281584D01* +X1061344Y281584D01* +X1061344Y275736D01* +X1061344Y280662D02* +X1044496Y280662D01* +X1044496Y263036D02* +X1061344Y263036D01* +X1044496Y263036D02* +X1044496Y268884D01* +X1061344Y268884D01* +X1061344Y263036D01* +X1061344Y267962D02* +X1044496Y267962D01* +X1044496Y250336D02* +X1061344Y250336D01* +X1044496Y250336D02* +X1044496Y256184D01* +X1061344Y256184D01* +X1061344Y250336D01* +X1061344Y255262D02* +X1044496Y255262D01* +X1044496Y237636D02* +X1061344Y237636D01* +X1044496Y237636D02* +X1044496Y243484D01* +X1061344Y243484D01* +X1061344Y237636D01* +X1061344Y242562D02* +X1044496Y242562D01* +X1044496Y224936D02* +X1061344Y224936D01* +X1044496Y224936D02* +X1044496Y230784D01* +X1061344Y230784D01* +X1061344Y224936D01* +X1061344Y229862D02* +X1044496Y229862D01* +X1044496Y212236D02* +X1061344Y212236D01* +X1044496Y212236D02* +X1044496Y218084D01* +X1061344Y218084D01* +X1061344Y212236D01* +X1061344Y217162D02* +X1044496Y217162D01* +X1044496Y199536D02* +X1061344Y199536D01* +X1044496Y199536D02* +X1044496Y205384D01* +X1061344Y205384D01* +X1061344Y199536D01* +X1061344Y204462D02* +X1044496Y204462D01* +X1044496Y186836D02* +X1061344Y186836D01* +X1044496Y186836D02* +X1044496Y192684D01* +X1061344Y192684D01* +X1061344Y186836D01* +X1061344Y191762D02* +X1044496Y191762D01* +X1044496Y174136D02* +X1061344Y174136D01* +X1044496Y174136D02* +X1044496Y179984D01* +X1061344Y179984D01* +X1061344Y174136D01* +X1061344Y179062D02* +X1044496Y179062D01* +X1044496Y161436D02* +X1061344Y161436D01* +X1044496Y161436D02* +X1044496Y167284D01* +X1061344Y167284D01* +X1061344Y161436D01* +X1061344Y166362D02* +X1044496Y166362D01* +X1044496Y148736D02* +X1061344Y148736D01* +X1044496Y148736D02* +X1044496Y154584D01* +X1061344Y154584D01* +X1061344Y148736D01* +X1061344Y153662D02* +X1044496Y153662D01* +X1044496Y136036D02* +X1061344Y136036D01* +X1044496Y136036D02* +X1044496Y141884D01* +X1061344Y141884D01* +X1061344Y136036D01* +X1061344Y140962D02* +X1044496Y140962D01* +X1083694Y137384D02* +X1083694Y120536D01* +X1077846Y120536D01* +X1077846Y137384D01* +X1083694Y137384D01* +X1083694Y125462D02* +X1077846Y125462D01* +X1077846Y130388D02* +X1083694Y130388D01* +X1083694Y135314D02* +X1077846Y135314D01* +X1096394Y137384D02* +X1096394Y120536D01* +X1090546Y120536D01* +X1090546Y137384D01* +X1096394Y137384D01* +X1096394Y125462D02* +X1090546Y125462D01* +X1090546Y130388D02* +X1096394Y130388D01* +X1096394Y135314D02* +X1090546Y135314D01* +X1109094Y137384D02* +X1109094Y120536D01* +X1103246Y120536D01* +X1103246Y137384D01* +X1109094Y137384D01* +X1109094Y125462D02* +X1103246Y125462D01* +X1103246Y130388D02* +X1109094Y130388D01* +X1109094Y135314D02* +X1103246Y135314D01* +X1121794Y137384D02* +X1121794Y120536D01* +X1115946Y120536D01* +X1115946Y137384D01* +X1121794Y137384D01* +X1121794Y125462D02* +X1115946Y125462D01* +X1115946Y130388D02* +X1121794Y130388D01* +X1121794Y135314D02* +X1115946Y135314D01* +X1134494Y137384D02* +X1134494Y120536D01* +X1128646Y120536D01* +X1128646Y137384D01* +X1134494Y137384D01* +X1134494Y125462D02* +X1128646Y125462D01* +X1128646Y130388D02* +X1134494Y130388D01* +X1134494Y135314D02* +X1128646Y135314D01* +X1147194Y137384D02* +X1147194Y120536D01* +X1141346Y120536D01* +X1141346Y137384D01* +X1147194Y137384D01* +X1147194Y125462D02* +X1141346Y125462D01* +X1141346Y130388D02* +X1147194Y130388D01* +X1147194Y135314D02* +X1141346Y135314D01* +X1159894Y137384D02* +X1159894Y120536D01* +X1154046Y120536D01* +X1154046Y137384D01* +X1159894Y137384D01* +X1159894Y125462D02* +X1154046Y125462D01* +X1154046Y130388D02* +X1159894Y130388D01* +X1159894Y135314D02* +X1154046Y135314D01* +X1172594Y137384D02* +X1172594Y120536D01* +X1166746Y120536D01* +X1166746Y137384D01* +X1172594Y137384D01* +X1172594Y125462D02* +X1166746Y125462D01* +X1166746Y130388D02* +X1172594Y130388D01* +X1172594Y135314D02* +X1166746Y135314D01* +X1185294Y137384D02* +X1185294Y120536D01* +X1179446Y120536D01* +X1179446Y137384D01* +X1185294Y137384D01* +X1185294Y125462D02* +X1179446Y125462D01* +X1179446Y130388D02* +X1185294Y130388D01* +X1185294Y135314D02* +X1179446Y135314D01* +X1197994Y137384D02* +X1197994Y120536D01* +X1192146Y120536D01* +X1192146Y137384D01* +X1197994Y137384D01* +X1197994Y125462D02* +X1192146Y125462D01* +X1192146Y130388D02* +X1197994Y130388D01* +X1197994Y135314D02* +X1192146Y135314D01* +X1214496Y141884D02* +X1231344Y141884D01* +X1231344Y136036D01* +X1214496Y136036D01* +X1214496Y141884D01* +X1214496Y140962D02* +X1231344Y140962D01* +X1231344Y154584D02* +X1214496Y154584D01* +X1231344Y154584D02* +X1231344Y148736D01* +X1214496Y148736D01* +X1214496Y154584D01* +X1214496Y153662D02* +X1231344Y153662D01* +X1231344Y167284D02* +X1214496Y167284D01* +X1231344Y167284D02* +X1231344Y161436D01* +X1214496Y161436D01* +X1214496Y167284D01* +X1214496Y166362D02* +X1231344Y166362D01* +X1231344Y179984D02* +X1214496Y179984D01* +X1231344Y179984D02* +X1231344Y174136D01* +X1214496Y174136D01* +X1214496Y179984D01* +X1214496Y179062D02* +X1231344Y179062D01* +X1231344Y192684D02* +X1214496Y192684D01* +X1231344Y192684D02* +X1231344Y186836D01* +X1214496Y186836D01* +X1214496Y192684D01* +X1214496Y191762D02* +X1231344Y191762D01* +X1231344Y205384D02* +X1214496Y205384D01* +X1231344Y205384D02* +X1231344Y199536D01* +X1214496Y199536D01* +X1214496Y205384D01* +X1214496Y204462D02* +X1231344Y204462D01* +X1231344Y218084D02* +X1214496Y218084D01* +X1231344Y218084D02* +X1231344Y212236D01* +X1214496Y212236D01* +X1214496Y218084D01* +X1214496Y217162D02* +X1231344Y217162D01* +X1231344Y230784D02* +X1214496Y230784D01* +X1231344Y230784D02* +X1231344Y224936D01* +X1214496Y224936D01* +X1214496Y230784D01* +X1214496Y229862D02* +X1231344Y229862D01* +X1231344Y243484D02* +X1214496Y243484D01* +X1231344Y243484D02* +X1231344Y237636D01* +X1214496Y237636D01* +X1214496Y243484D01* +X1214496Y242562D02* +X1231344Y242562D01* +X1231344Y256184D02* +X1214496Y256184D01* +X1231344Y256184D02* +X1231344Y250336D01* +X1214496Y250336D01* +X1214496Y256184D01* +X1214496Y255262D02* +X1231344Y255262D01* +X1231344Y268884D02* +X1214496Y268884D01* +X1231344Y268884D02* +X1231344Y263036D01* +X1214496Y263036D01* +X1214496Y268884D01* +X1214496Y267962D02* +X1231344Y267962D01* +X1231344Y281584D02* +X1214496Y281584D01* +X1231344Y281584D02* +X1231344Y275736D01* +X1214496Y275736D01* +X1214496Y281584D01* +X1214496Y280662D02* +X1231344Y280662D01* +X1231344Y294284D02* +X1214496Y294284D01* +X1231344Y294284D02* +X1231344Y288436D01* +X1214496Y288436D01* +X1214496Y294284D01* +X1214496Y293362D02* +X1231344Y293362D01* +X1231344Y306984D02* +X1214496Y306984D01* +X1231344Y306984D02* +X1231344Y301136D01* +X1214496Y301136D01* +X1214496Y306984D01* +X1214496Y306062D02* +X1231344Y306062D01* +D20* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D21* +X169096Y324124D02* +X169096Y326116D01* +X169096Y324124D02* +X156104Y324124D01* +X156104Y326116D01* +X169096Y326116D01* +X169096Y330624D02* +X169096Y332616D01* +X169096Y330624D02* +X156104Y330624D01* +X156104Y332616D01* +X169096Y332616D01* +X169096Y319616D02* +X169096Y317624D01* +X156104Y317624D01* +X156104Y319616D01* +X169096Y319616D01* +X169096Y313116D02* +X169096Y311124D01* +X156104Y311124D01* +X156104Y313116D01* +X169096Y313116D01* +X169096Y337124D02* +X169096Y339116D01* +X169096Y337124D02* +X156104Y337124D01* +X156104Y339116D01* +X169096Y339116D01* +D22* +X164357Y354593D02* +X157303Y354593D01* +X157303Y363647D01* +X164357Y363647D01* +X164357Y354593D01* +X164357Y363122D02* +X157303Y363122D01* +X157303Y286593D02* +X164357Y286593D01* +X157303Y286593D02* +X157303Y295647D01* +X164357Y295647D01* +X164357Y286593D01* +X164357Y295122D02* +X157303Y295122D01* +D23* +X133618Y332388D02* +X133618Y341852D01* +X143082Y341852D01* +X143082Y332388D01* +X133618Y332388D01* +X133618Y317852D02* +X133618Y308388D01* +X133618Y317852D02* +X143082Y317852D01* +X143082Y308388D01* +X133618Y308388D01* +D24* +X510816Y181374D02* +X518484Y181374D01* +X518484Y179706D01* +X510816Y179706D01* +X510816Y181374D01* +X510816Y186374D02* +X518484Y186374D01* +X518484Y184706D01* +X510816Y184706D01* +X510816Y186374D01* +X510816Y191374D02* +X518484Y191374D01* +X518484Y189706D01* +X510816Y189706D01* +X510816Y191374D01* +X510816Y196374D02* +X518484Y196374D01* +X518484Y194706D01* +X510816Y194706D01* +X510816Y196374D01* +X510816Y201374D02* +X518484Y201374D01* +X518484Y199706D01* +X510816Y199706D01* +X510816Y201374D01* +X510816Y206374D02* +X518484Y206374D01* +X518484Y204706D01* +X510816Y204706D01* +X510816Y206374D01* +X479784Y206374D02* +X472116Y206374D01* +X479784Y206374D02* +X479784Y204706D01* +X472116Y204706D01* +X472116Y206374D01* +X472116Y201374D02* +X479784Y201374D01* +X479784Y199706D01* +X472116Y199706D01* +X472116Y201374D01* +X472116Y196374D02* +X479784Y196374D01* +X479784Y194706D01* +X472116Y194706D01* +X472116Y196374D01* +X472116Y191374D02* +X479784Y191374D01* +X479784Y189706D01* +X472116Y189706D01* +X472116Y191374D01* +X472116Y186374D02* +X479784Y186374D01* +X479784Y184706D01* +X472116Y184706D01* +X472116Y186374D01* +X472116Y181374D02* +X479784Y181374D01* +X479784Y179706D01* +X472116Y179706D01* +X472116Y181374D01* +X483634Y177524D02* +X483634Y169856D01* +X481966Y169856D01* +X481966Y177524D01* +X483634Y177524D01* +X483634Y172672D02* +X481966Y172672D01* +X481966Y175488D02* +X483634Y175488D01* +X488634Y177524D02* +X488634Y169856D01* +X486966Y169856D01* +X486966Y177524D01* +X488634Y177524D01* +X488634Y172672D02* +X486966Y172672D01* +X486966Y175488D02* +X488634Y175488D01* +X493634Y177524D02* +X493634Y169856D01* +X491966Y169856D01* +X491966Y177524D01* +X493634Y177524D01* +X493634Y172672D02* +X491966Y172672D01* +X491966Y175488D02* +X493634Y175488D01* +X498634Y177524D02* +X498634Y169856D01* +X496966Y169856D01* +X496966Y177524D01* +X498634Y177524D01* +X498634Y172672D02* +X496966Y172672D01* +X496966Y175488D02* +X498634Y175488D01* +X503634Y177524D02* +X503634Y169856D01* +X501966Y169856D01* +X501966Y177524D01* +X503634Y177524D01* +X503634Y172672D02* +X501966Y172672D01* +X501966Y175488D02* +X503634Y175488D01* +X508634Y177524D02* +X508634Y169856D01* +X506966Y169856D01* +X506966Y177524D01* +X508634Y177524D01* +X508634Y172672D02* +X506966Y172672D01* +X506966Y175488D02* +X508634Y175488D01* +X508634Y208556D02* +X508634Y216224D01* +X508634Y208556D02* +X506966Y208556D01* +X506966Y216224D01* +X508634Y216224D01* +X508634Y211372D02* +X506966Y211372D01* +X506966Y214188D02* +X508634Y214188D01* +X503634Y216224D02* +X503634Y208556D01* +X501966Y208556D01* +X501966Y216224D01* +X503634Y216224D01* +X503634Y211372D02* +X501966Y211372D01* +X501966Y214188D02* +X503634Y214188D01* +X498634Y216224D02* +X498634Y208556D01* +X496966Y208556D01* +X496966Y216224D01* +X498634Y216224D01* +X498634Y211372D02* +X496966Y211372D01* +X496966Y214188D02* +X498634Y214188D01* +X493634Y216224D02* +X493634Y208556D01* +X491966Y208556D01* +X491966Y216224D01* +X493634Y216224D01* +X493634Y211372D02* +X491966Y211372D01* +X491966Y214188D02* +X493634Y214188D01* +X488634Y216224D02* +X488634Y208556D01* +X486966Y208556D01* +X486966Y216224D01* +X488634Y216224D01* +X488634Y211372D02* +X486966Y211372D01* +X486966Y214188D02* +X488634Y214188D01* +X483634Y216224D02* +X483634Y208556D01* +X481966Y208556D01* +X481966Y216224D01* +X483634Y216224D01* +X483634Y211372D02* +X481966Y211372D01* +X481966Y214188D02* +X483634Y214188D01* +D25* +X505302Y203042D02* +X505302Y183038D01* +X485298Y183038D01* +X485298Y203042D01* +X505302Y203042D01* +X505302Y189715D02* +X485298Y189715D01* +X485298Y196392D02* +X505302Y196392D01* +D26* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D27* +X292090Y237498D03* +D28* +X259090Y271798D03* +X259090Y114298D03* +D29* +X228590Y135898D03* +X228590Y250198D03* +D26* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D30* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D31* +X726488Y141982D02* +X722552Y141982D01* +X722552Y146418D01* +X726488Y146418D01* +X726488Y141982D01* +X726488Y145873D02* +X722552Y145873D01* +X736552Y141982D02* +X740488Y141982D01* +X736552Y141982D02* +X736552Y146418D01* +X740488Y146418D01* +X740488Y141982D01* +X740488Y145873D02* +X736552Y145873D01* +X736552Y132982D02* +X740488Y132982D01* +X736552Y132982D02* +X736552Y137418D01* +X740488Y137418D01* +X740488Y132982D01* +X740488Y136873D02* +X736552Y136873D01* +X726488Y132982D02* +X722552Y132982D01* +X722552Y137418D01* +X726488Y137418D01* +X726488Y132982D01* +X726488Y136873D02* +X722552Y136873D01* +D32* +X800100Y20320D03* +D26* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D33* +X837816Y57788D02* +X851284Y57788D01* +X851284Y55496D01* +X837816Y55496D01* +X837816Y57788D01* +X837816Y64392D02* +X851284Y64392D01* +X851284Y62100D01* +X837816Y62100D01* +X837816Y64392D01* +X837816Y70742D02* +X851284Y70742D01* +X851284Y68450D01* +X837816Y68450D01* +X837816Y70742D01* +X837816Y77346D02* +X851284Y77346D01* +X851284Y75054D01* +X837816Y75054D01* +X837816Y77346D01* +X837816Y83950D02* +X851284Y83950D01* +X851284Y81658D01* +X837816Y81658D01* +X837816Y83950D01* +X837816Y90300D02* +X851284Y90300D01* +X851284Y88008D01* +X837816Y88008D01* +X837816Y90300D01* +X837816Y96904D02* +X851284Y96904D01* +X851284Y94612D01* +X837816Y94612D01* +X837816Y96904D01* +X792864Y96904D02* +X779396Y96904D01* +X792864Y96904D02* +X792864Y94612D01* +X779396Y94612D01* +X779396Y96904D01* +X779396Y90300D02* +X792864Y90300D01* +X792864Y88008D01* +X779396Y88008D01* +X779396Y90300D01* +X779396Y83950D02* +X792864Y83950D01* +X792864Y81658D01* +X779396Y81658D01* +X779396Y83950D01* +X779396Y77346D02* +X792864Y77346D01* +X792864Y75054D01* +X779396Y75054D01* +X779396Y77346D01* +X779396Y70742D02* +X792864Y70742D01* +X792864Y68450D01* +X779396Y68450D01* +X779396Y70742D01* +X779396Y64392D02* +X792864Y64392D01* +X792864Y62100D01* +X779396Y62100D01* +X779396Y64392D01* +X779396Y57788D02* +X792864Y57788D01* +X792864Y55496D01* +X779396Y55496D01* +X779396Y57788D01* +D13* +X592649Y45011D02* +X585151Y45011D01* +X585151Y51509D01* +X592649Y51509D01* +X592649Y45011D01* +X592649Y50269D02* +X585151Y50269D01* +X601151Y45011D02* +X608649Y45011D01* +X601151Y45011D02* +X601151Y51509D01* +X608649Y51509D01* +X608649Y45011D01* +X608649Y50269D02* +X601151Y50269D01* +X714691Y52631D02* +X722189Y52631D01* +X714691Y52631D02* +X714691Y59129D01* +X722189Y59129D01* +X722189Y52631D01* +X722189Y57889D02* +X714691Y57889D01* +X730691Y52631D02* +X738189Y52631D01* +X730691Y52631D02* +X730691Y59129D01* +X738189Y59129D01* +X738189Y52631D01* +X738189Y57889D02* +X730691Y57889D01* +D32* +X749300Y78740D03* +D26* +X723900Y78740D03* +D13* +X692686Y301962D02* +X689518Y308756D01* +X695406Y311502D01* +X698574Y304708D01* +X692686Y301962D01* +X690234Y307220D02* +X697403Y307220D01* +X696279Y294256D02* +X699447Y287462D01* +X696279Y294256D02* +X702167Y297002D01* +X705335Y290208D01* +X699447Y287462D01* +X696995Y292720D02* +X704164Y292720D01* +X764544Y304410D02* +X767712Y311204D01* +X773600Y308458D01* +X770432Y301664D01* +X764544Y304410D01* +X765715Y306922D02* +X772884Y306922D01* +X760950Y296703D02* +X757782Y289909D01* +X760950Y296703D02* +X766838Y293957D01* +X763670Y287163D01* +X757782Y289909D01* +X758953Y292421D02* +X766122Y292421D01* +D12* +X841340Y246900D02* +X844880Y246900D01* +X841340Y246900D02* +X841340Y250940D01* +X844880Y250940D01* +X844880Y246900D01* +X844880Y250692D02* +X841340Y250692D01* +X851840Y246900D02* +X855380Y246900D01* +X851840Y246900D02* +X851840Y250940D01* +X855380Y250940D01* +X855380Y246900D01* +X855380Y250692D02* +X851840Y250692D01* +X852500Y259600D02* +X848960Y259600D01* +X848960Y263640D01* +X852500Y263640D01* +X852500Y259600D01* +X852500Y263392D02* +X848960Y263392D01* +X859460Y259600D02* +X863000Y259600D01* +X859460Y259600D02* +X859460Y263640D01* +X863000Y263640D01* +X863000Y259600D01* +X863000Y263392D02* +X859460Y263392D01* +D34* +X447120Y363220D02* +X447122Y363361D01* +X447128Y363502D01* +X447138Y363642D01* +X447152Y363782D01* +X447170Y363922D01* +X447191Y364061D01* +X447217Y364200D01* +X447246Y364338D01* +X447280Y364474D01* +X447317Y364610D01* +X447358Y364745D01* +X447403Y364879D01* +X447452Y365011D01* +X447504Y365142D01* +X447560Y365271D01* +X447620Y365398D01* +X447683Y365524D01* +X447749Y365648D01* +X447820Y365771D01* +X447893Y365891D01* +X447970Y366009D01* +X448050Y366125D01* +X448134Y366238D01* +X448220Y366349D01* +X448310Y366458D01* +X448403Y366564D01* +X448498Y366667D01* +X448597Y366768D01* +X448698Y366866D01* +X448802Y366961D01* +X448909Y367053D01* +X449018Y367142D01* +X449130Y367227D01* +X449244Y367310D01* +X449360Y367390D01* +X449479Y367466D01* +X449600Y367538D01* +X449722Y367608D01* +X449847Y367673D01* +X449973Y367736D01* +X450101Y367794D01* +X450231Y367849D01* +X450362Y367901D01* +X450495Y367948D01* +X450629Y367992D01* +X450764Y368033D01* +X450900Y368069D01* +X451037Y368101D01* +X451175Y368130D01* +X451313Y368155D01* +X451453Y368175D01* +X451593Y368192D01* +X451733Y368205D01* +X451874Y368214D01* +X452014Y368219D01* +X452155Y368220D01* +X452296Y368217D01* +X452437Y368210D01* +X452577Y368199D01* +X452717Y368184D01* +X452857Y368165D01* +X452996Y368143D01* +X453134Y368116D01* +X453272Y368086D01* +X453408Y368051D01* +X453544Y368013D01* +X453678Y367971D01* +X453812Y367925D01* +X453944Y367876D01* +X454074Y367822D01* +X454203Y367765D01* +X454330Y367705D01* +X454456Y367641D01* +X454579Y367573D01* +X454701Y367502D01* +X454821Y367428D01* +X454938Y367350D01* +X455053Y367269D01* +X455166Y367185D01* +X455277Y367098D01* +X455385Y367007D01* +X455490Y366914D01* +X455593Y366817D01* +X455693Y366718D01* +X455790Y366616D01* +X455884Y366511D01* +X455975Y366404D01* +X456063Y366294D01* +X456148Y366182D01* +X456230Y366067D01* +X456309Y365950D01* +X456384Y365831D01* +X456456Y365710D01* +X456524Y365587D01* +X456589Y365462D01* +X456651Y365335D01* +X456708Y365206D01* +X456763Y365076D01* +X456813Y364945D01* +X456860Y364812D01* +X456903Y364678D01* +X456942Y364542D01* +X456977Y364406D01* +X457009Y364269D01* +X457036Y364131D01* +X457060Y363992D01* +X457080Y363852D01* +X457096Y363712D01* +X457108Y363572D01* +X457116Y363431D01* +X457120Y363290D01* +X457120Y363150D01* +X457116Y363009D01* +X457108Y362868D01* +X457096Y362728D01* +X457080Y362588D01* +X457060Y362448D01* +X457036Y362309D01* +X457009Y362171D01* +X456977Y362034D01* +X456942Y361898D01* +X456903Y361762D01* +X456860Y361628D01* +X456813Y361495D01* +X456763Y361364D01* +X456708Y361234D01* +X456651Y361105D01* +X456589Y360978D01* +X456524Y360853D01* +X456456Y360730D01* +X456384Y360609D01* +X456309Y360490D01* +X456230Y360373D01* +X456148Y360258D01* +X456063Y360146D01* +X455975Y360036D01* +X455884Y359929D01* +X455790Y359824D01* +X455693Y359722D01* +X455593Y359623D01* +X455490Y359526D01* +X455385Y359433D01* +X455277Y359342D01* +X455166Y359255D01* +X455053Y359171D01* +X454938Y359090D01* +X454821Y359012D01* +X454701Y358938D01* +X454579Y358867D01* +X454456Y358799D01* +X454330Y358735D01* +X454203Y358675D01* +X454074Y358618D01* +X453944Y358564D01* +X453812Y358515D01* +X453678Y358469D01* +X453544Y358427D01* +X453408Y358389D01* +X453272Y358354D01* +X453134Y358324D01* +X452996Y358297D01* +X452857Y358275D01* +X452717Y358256D01* +X452577Y358241D01* +X452437Y358230D01* +X452296Y358223D01* +X452155Y358220D01* +X452014Y358221D01* +X451874Y358226D01* +X451733Y358235D01* +X451593Y358248D01* +X451453Y358265D01* +X451313Y358285D01* +X451175Y358310D01* +X451037Y358339D01* +X450900Y358371D01* +X450764Y358407D01* +X450629Y358448D01* +X450495Y358492D01* +X450362Y358539D01* +X450231Y358591D01* +X450101Y358646D01* +X449973Y358704D01* +X449847Y358767D01* +X449722Y358832D01* +X449600Y358902D01* +X449479Y358974D01* +X449360Y359050D01* +X449244Y359130D01* +X449130Y359213D01* +X449018Y359298D01* +X448909Y359387D01* +X448802Y359479D01* +X448698Y359574D01* +X448597Y359672D01* +X448498Y359773D01* +X448403Y359876D01* +X448310Y359982D01* +X448220Y360091D01* +X448134Y360202D01* +X448050Y360315D01* +X447970Y360431D01* +X447893Y360549D01* +X447820Y360669D01* +X447749Y360792D01* +X447683Y360916D01* +X447620Y361042D01* +X447560Y361169D01* +X447504Y361298D01* +X447452Y361429D01* +X447403Y361561D01* +X447358Y361695D01* +X447317Y361830D01* +X447280Y361966D01* +X447246Y362102D01* +X447217Y362240D01* +X447191Y362379D01* +X447170Y362518D01* +X447152Y362658D01* +X447138Y362798D01* +X447128Y362938D01* +X447122Y363079D01* +X447120Y363220D01* +X1252300Y96520D02* +X1252302Y96661D01* +X1252308Y96802D01* +X1252318Y96942D01* +X1252332Y97082D01* +X1252350Y97222D01* +X1252371Y97361D01* +X1252397Y97500D01* +X1252426Y97638D01* +X1252460Y97774D01* +X1252497Y97910D01* +X1252538Y98045D01* +X1252583Y98179D01* +X1252632Y98311D01* +X1252684Y98442D01* +X1252740Y98571D01* +X1252800Y98698D01* +X1252863Y98824D01* +X1252929Y98948D01* +X1253000Y99071D01* +X1253073Y99191D01* +X1253150Y99309D01* +X1253230Y99425D01* +X1253314Y99538D01* +X1253400Y99649D01* +X1253490Y99758D01* +X1253583Y99864D01* +X1253678Y99967D01* +X1253777Y100068D01* +X1253878Y100166D01* +X1253982Y100261D01* +X1254089Y100353D01* +X1254198Y100442D01* +X1254310Y100527D01* +X1254424Y100610D01* +X1254540Y100690D01* +X1254659Y100766D01* +X1254780Y100838D01* +X1254902Y100908D01* +X1255027Y100973D01* +X1255153Y101036D01* +X1255281Y101094D01* +X1255411Y101149D01* +X1255542Y101201D01* +X1255675Y101248D01* +X1255809Y101292D01* +X1255944Y101333D01* +X1256080Y101369D01* +X1256217Y101401D01* +X1256355Y101430D01* +X1256493Y101455D01* +X1256633Y101475D01* +X1256773Y101492D01* +X1256913Y101505D01* +X1257054Y101514D01* +X1257194Y101519D01* +X1257335Y101520D01* +X1257476Y101517D01* +X1257617Y101510D01* +X1257757Y101499D01* +X1257897Y101484D01* +X1258037Y101465D01* +X1258176Y101443D01* +X1258314Y101416D01* +X1258452Y101386D01* +X1258588Y101351D01* +X1258724Y101313D01* +X1258858Y101271D01* +X1258992Y101225D01* +X1259124Y101176D01* +X1259254Y101122D01* +X1259383Y101065D01* +X1259510Y101005D01* +X1259636Y100941D01* +X1259759Y100873D01* +X1259881Y100802D01* +X1260001Y100728D01* +X1260118Y100650D01* +X1260233Y100569D01* +X1260346Y100485D01* +X1260457Y100398D01* +X1260565Y100307D01* +X1260670Y100214D01* +X1260773Y100117D01* +X1260873Y100018D01* +X1260970Y99916D01* +X1261064Y99811D01* +X1261155Y99704D01* +X1261243Y99594D01* +X1261328Y99482D01* +X1261410Y99367D01* +X1261489Y99250D01* +X1261564Y99131D01* +X1261636Y99010D01* +X1261704Y98887D01* +X1261769Y98762D01* +X1261831Y98635D01* +X1261888Y98506D01* +X1261943Y98376D01* +X1261993Y98245D01* +X1262040Y98112D01* +X1262083Y97978D01* +X1262122Y97842D01* +X1262157Y97706D01* +X1262189Y97569D01* +X1262216Y97431D01* +X1262240Y97292D01* +X1262260Y97152D01* +X1262276Y97012D01* +X1262288Y96872D01* +X1262296Y96731D01* +X1262300Y96590D01* +X1262300Y96450D01* +X1262296Y96309D01* +X1262288Y96168D01* +X1262276Y96028D01* +X1262260Y95888D01* +X1262240Y95748D01* +X1262216Y95609D01* +X1262189Y95471D01* +X1262157Y95334D01* +X1262122Y95198D01* +X1262083Y95062D01* +X1262040Y94928D01* +X1261993Y94795D01* +X1261943Y94664D01* +X1261888Y94534D01* +X1261831Y94405D01* +X1261769Y94278D01* +X1261704Y94153D01* +X1261636Y94030D01* +X1261564Y93909D01* +X1261489Y93790D01* +X1261410Y93673D01* +X1261328Y93558D01* +X1261243Y93446D01* +X1261155Y93336D01* +X1261064Y93229D01* +X1260970Y93124D01* +X1260873Y93022D01* +X1260773Y92923D01* +X1260670Y92826D01* +X1260565Y92733D01* +X1260457Y92642D01* +X1260346Y92555D01* +X1260233Y92471D01* +X1260118Y92390D01* +X1260001Y92312D01* +X1259881Y92238D01* +X1259759Y92167D01* +X1259636Y92099D01* +X1259510Y92035D01* +X1259383Y91975D01* +X1259254Y91918D01* +X1259124Y91864D01* +X1258992Y91815D01* +X1258858Y91769D01* +X1258724Y91727D01* +X1258588Y91689D01* +X1258452Y91654D01* +X1258314Y91624D01* +X1258176Y91597D01* +X1258037Y91575D01* +X1257897Y91556D01* +X1257757Y91541D01* +X1257617Y91530D01* +X1257476Y91523D01* +X1257335Y91520D01* +X1257194Y91521D01* +X1257054Y91526D01* +X1256913Y91535D01* +X1256773Y91548D01* +X1256633Y91565D01* +X1256493Y91585D01* +X1256355Y91610D01* +X1256217Y91639D01* +X1256080Y91671D01* +X1255944Y91707D01* +X1255809Y91748D01* +X1255675Y91792D01* +X1255542Y91839D01* +X1255411Y91891D01* +X1255281Y91946D01* +X1255153Y92004D01* +X1255027Y92067D01* +X1254902Y92132D01* +X1254780Y92202D01* +X1254659Y92274D01* +X1254540Y92350D01* +X1254424Y92430D01* +X1254310Y92513D01* +X1254198Y92598D01* +X1254089Y92687D01* +X1253982Y92779D01* +X1253878Y92874D01* +X1253777Y92972D01* +X1253678Y93073D01* +X1253583Y93176D01* +X1253490Y93282D01* +X1253400Y93391D01* +X1253314Y93502D01* +X1253230Y93615D01* +X1253150Y93731D01* +X1253073Y93849D01* +X1253000Y93969D01* +X1252929Y94092D01* +X1252863Y94216D01* +X1252800Y94342D01* +X1252740Y94469D01* +X1252684Y94598D01* +X1252632Y94729D01* +X1252583Y94861D01* +X1252538Y94995D01* +X1252497Y95130D01* +X1252460Y95266D01* +X1252426Y95402D01* +X1252397Y95540D01* +X1252371Y95679D01* +X1252350Y95818D01* +X1252332Y95958D01* +X1252318Y96098D01* +X1252308Y96238D01* +X1252302Y96379D01* +X1252300Y96520D01* +X132160Y17780D02* +X132162Y17921D01* +X132168Y18062D01* +X132178Y18202D01* +X132192Y18342D01* +X132210Y18482D01* +X132231Y18621D01* +X132257Y18760D01* +X132286Y18898D01* +X132320Y19034D01* +X132357Y19170D01* +X132398Y19305D01* +X132443Y19439D01* +X132492Y19571D01* +X132544Y19702D01* +X132600Y19831D01* +X132660Y19958D01* +X132723Y20084D01* +X132789Y20208D01* +X132860Y20331D01* +X132933Y20451D01* +X133010Y20569D01* +X133090Y20685D01* +X133174Y20798D01* +X133260Y20909D01* +X133350Y21018D01* +X133443Y21124D01* +X133538Y21227D01* +X133637Y21328D01* +X133738Y21426D01* +X133842Y21521D01* +X133949Y21613D01* +X134058Y21702D01* +X134170Y21787D01* +X134284Y21870D01* +X134400Y21950D01* +X134519Y22026D01* +X134640Y22098D01* +X134762Y22168D01* +X134887Y22233D01* +X135013Y22296D01* +X135141Y22354D01* +X135271Y22409D01* +X135402Y22461D01* +X135535Y22508D01* +X135669Y22552D01* +X135804Y22593D01* +X135940Y22629D01* +X136077Y22661D01* +X136215Y22690D01* +X136353Y22715D01* +X136493Y22735D01* +X136633Y22752D01* +X136773Y22765D01* +X136914Y22774D01* +X137054Y22779D01* +X137195Y22780D01* +X137336Y22777D01* +X137477Y22770D01* +X137617Y22759D01* +X137757Y22744D01* +X137897Y22725D01* +X138036Y22703D01* +X138174Y22676D01* +X138312Y22646D01* +X138448Y22611D01* +X138584Y22573D01* +X138718Y22531D01* +X138852Y22485D01* +X138984Y22436D01* +X139114Y22382D01* +X139243Y22325D01* +X139370Y22265D01* +X139496Y22201D01* +X139619Y22133D01* +X139741Y22062D01* +X139861Y21988D01* +X139978Y21910D01* +X140093Y21829D01* +X140206Y21745D01* +X140317Y21658D01* +X140425Y21567D01* +X140530Y21474D01* +X140633Y21377D01* +X140733Y21278D01* +X140830Y21176D01* +X140924Y21071D01* +X141015Y20964D01* +X141103Y20854D01* +X141188Y20742D01* +X141270Y20627D01* +X141349Y20510D01* +X141424Y20391D01* +X141496Y20270D01* +X141564Y20147D01* +X141629Y20022D01* +X141691Y19895D01* +X141748Y19766D01* +X141803Y19636D01* +X141853Y19505D01* +X141900Y19372D01* +X141943Y19238D01* +X141982Y19102D01* +X142017Y18966D01* +X142049Y18829D01* +X142076Y18691D01* +X142100Y18552D01* +X142120Y18412D01* +X142136Y18272D01* +X142148Y18132D01* +X142156Y17991D01* +X142160Y17850D01* +X142160Y17710D01* +X142156Y17569D01* +X142148Y17428D01* +X142136Y17288D01* +X142120Y17148D01* +X142100Y17008D01* +X142076Y16869D01* +X142049Y16731D01* +X142017Y16594D01* +X141982Y16458D01* +X141943Y16322D01* +X141900Y16188D01* +X141853Y16055D01* +X141803Y15924D01* +X141748Y15794D01* +X141691Y15665D01* +X141629Y15538D01* +X141564Y15413D01* +X141496Y15290D01* +X141424Y15169D01* +X141349Y15050D01* +X141270Y14933D01* +X141188Y14818D01* +X141103Y14706D01* +X141015Y14596D01* +X140924Y14489D01* +X140830Y14384D01* +X140733Y14282D01* +X140633Y14183D01* +X140530Y14086D01* +X140425Y13993D01* +X140317Y13902D01* +X140206Y13815D01* +X140093Y13731D01* +X139978Y13650D01* +X139861Y13572D01* +X139741Y13498D01* +X139619Y13427D01* +X139496Y13359D01* +X139370Y13295D01* +X139243Y13235D01* +X139114Y13178D01* +X138984Y13124D01* +X138852Y13075D01* +X138718Y13029D01* +X138584Y12987D01* +X138448Y12949D01* +X138312Y12914D01* +X138174Y12884D01* +X138036Y12857D01* +X137897Y12835D01* +X137757Y12816D01* +X137617Y12801D01* +X137477Y12790D01* +X137336Y12783D01* +X137195Y12780D01* +X137054Y12781D01* +X136914Y12786D01* +X136773Y12795D01* +X136633Y12808D01* +X136493Y12825D01* +X136353Y12845D01* +X136215Y12870D01* +X136077Y12899D01* +X135940Y12931D01* +X135804Y12967D01* +X135669Y13008D01* +X135535Y13052D01* +X135402Y13099D01* +X135271Y13151D01* +X135141Y13206D01* +X135013Y13264D01* +X134887Y13327D01* +X134762Y13392D01* +X134640Y13462D01* +X134519Y13534D01* +X134400Y13610D01* +X134284Y13690D01* +X134170Y13773D01* +X134058Y13858D01* +X133949Y13947D01* +X133842Y14039D01* +X133738Y14134D01* +X133637Y14232D01* +X133538Y14333D01* +X133443Y14436D01* +X133350Y14542D01* +X133260Y14651D01* +X133174Y14762D01* +X133090Y14875D01* +X133010Y14991D01* +X132933Y15109D01* +X132860Y15229D01* +X132789Y15352D01* +X132723Y15476D01* +X132660Y15602D01* +X132600Y15729D01* +X132544Y15858D01* +X132492Y15989D01* +X132443Y16121D01* +X132398Y16255D01* +X132357Y16390D01* +X132320Y16526D01* +X132286Y16662D01* +X132257Y16800D01* +X132231Y16939D01* +X132210Y17078D01* +X132192Y17218D01* +X132178Y17358D01* +X132168Y17498D01* +X132162Y17639D01* +X132160Y17780D01* +D13* +X507171Y107389D02* +X514669Y107389D01* +X514669Y100891D01* +X507171Y100891D01* +X507171Y107389D01* +X507171Y106149D02* +X514669Y106149D01* +X498669Y107389D02* +X491171Y107389D01* +X498669Y107389D02* +X498669Y100891D01* +X491171Y100891D01* +X491171Y107389D01* +X491171Y106149D02* +X498669Y106149D01* +D35* +X254133Y358153D02* +X254133Y360747D01* +X267727Y360747D01* +X267727Y358153D01* +X254133Y358153D01* +X254133Y354247D02* +X254133Y351653D01* +X254133Y354247D02* +X267727Y354247D01* +X267727Y351653D01* +X254133Y351653D01* +X254133Y347747D02* +X254133Y345153D01* +X254133Y347747D02* +X267727Y347747D01* +X267727Y345153D01* +X254133Y345153D01* +X254133Y341247D02* +X254133Y338653D01* +X254133Y341247D02* +X267727Y341247D01* +X267727Y338653D01* +X254133Y338653D01* +X254133Y334747D02* +X254133Y332153D01* +X254133Y334747D02* +X267727Y334747D01* +X267727Y332153D01* +X254133Y332153D01* +X254133Y328247D02* +X254133Y325653D01* +X254133Y328247D02* +X267727Y328247D01* +X267727Y325653D01* +X254133Y325653D01* +X254133Y321747D02* +X254133Y319153D01* +X254133Y321747D02* +X267727Y321747D01* +X267727Y319153D01* +X254133Y319153D01* +X254133Y315247D02* +X254133Y312653D01* +X254133Y315247D02* +X267727Y315247D01* +X267727Y312653D01* +X254133Y312653D01* +X254133Y308747D02* +X254133Y306153D01* +X254133Y308747D02* +X267727Y308747D01* +X267727Y306153D01* +X254133Y306153D01* +X254133Y302247D02* +X254133Y299653D01* +X254133Y302247D02* +X267727Y302247D01* +X267727Y299653D01* +X254133Y299653D01* +X326633Y299653D02* +X326633Y302247D01* +X340227Y302247D01* +X340227Y299653D01* +X326633Y299653D01* +X326633Y306153D02* +X326633Y308747D01* +X340227Y308747D01* +X340227Y306153D01* +X326633Y306153D01* +X326633Y312653D02* +X326633Y315247D01* +X340227Y315247D01* +X340227Y312653D01* +X326633Y312653D01* +X326633Y319153D02* +X326633Y321747D01* +X340227Y321747D01* +X340227Y319153D01* +X326633Y319153D01* +X326633Y325653D02* +X326633Y328247D01* +X340227Y328247D01* +X340227Y325653D01* +X326633Y325653D01* +X326633Y332153D02* +X326633Y334747D01* +X340227Y334747D01* +X340227Y332153D01* +X326633Y332153D01* +X326633Y338653D02* +X326633Y341247D01* +X340227Y341247D01* +X340227Y338653D01* +X326633Y338653D01* +X326633Y345153D02* +X326633Y347747D01* +X340227Y347747D01* +X340227Y345153D01* +X326633Y345153D01* +X326633Y351653D02* +X326633Y354247D01* +X340227Y354247D01* +X340227Y351653D01* +X326633Y351653D01* +X326633Y358153D02* +X326633Y360747D01* +X340227Y360747D01* +X340227Y358153D01* +X326633Y358153D01* +D12* +X407340Y362700D02* +X410880Y362700D01* +X410880Y358660D01* +X407340Y358660D01* +X407340Y362700D01* +X407340Y362452D02* +X410880Y362452D01* +X400380Y362700D02* +X396840Y362700D01* +X400380Y362700D02* +X400380Y358660D01* +X396840Y358660D01* +X396840Y362700D01* +X396840Y362452D02* +X400380Y362452D01* +X407340Y352540D02* +X410880Y352540D01* +X410880Y348500D01* +X407340Y348500D01* +X407340Y352540D01* +X407340Y352292D02* +X410880Y352292D01* +X400380Y352540D02* +X396840Y352540D01* +X400380Y352540D02* +X400380Y348500D01* +X396840Y348500D01* +X396840Y352540D01* +X396840Y352292D02* +X400380Y352292D01* +D36* +X229332Y303062D02* +X229332Y295618D01* +X219388Y295618D01* +X219388Y303062D01* +X229332Y303062D01* +X229332Y301403D02* +X219388Y301403D01* +X207332Y303062D02* +X207332Y295618D01* +X197388Y295618D01* +X197388Y303062D01* +X207332Y303062D01* +X207332Y301403D02* +X197388Y301403D01* +X207332Y311618D02* +X207332Y319062D01* +X207332Y311618D02* +X197388Y311618D01* +X197388Y319062D01* +X207332Y319062D01* +X207332Y317403D02* +X197388Y317403D01* +X229332Y319062D02* +X229332Y311618D01* +X219388Y311618D01* +X219388Y319062D01* +X229332Y319062D01* +X229332Y317403D02* +X219388Y317403D01* +D12* +X189980Y303860D02* +X189980Y300320D01* +X185940Y300320D01* +X185940Y303860D01* +X189980Y303860D01* +X189980Y310820D02* +X189980Y314360D01* +X189980Y310820D02* +X185940Y310820D01* +X185940Y314360D01* +X189980Y314360D01* +X236740Y314360D02* +X236740Y310820D01* +X236740Y314360D02* +X240780Y314360D01* +X240780Y310820D01* +X236740Y310820D01* +X236740Y303860D02* +X236740Y300320D01* +X236740Y303860D02* +X240780Y303860D01* +X240780Y300320D01* +X236740Y300320D01* +D13* +X540311Y85689D02* +X546809Y85689D01* +X546809Y75191D01* +X540311Y75191D01* +X540311Y85689D01* +X540311Y80449D02* +X546809Y80449D01* +X537309Y107689D02* +X530811Y107689D01* +X537309Y107689D02* +X537309Y97191D01* +X530811Y97191D01* +X530811Y107689D01* +X530811Y102449D02* +X537309Y102449D01* +X549811Y107689D02* +X556309Y107689D01* +X556309Y97191D01* +X549811Y97191D01* +X549811Y107689D01* +X549811Y102449D02* +X556309Y102449D01* +X700331Y95569D02* +X700331Y88071D01* +X700331Y95569D02* +X706829Y95569D01* +X706829Y88071D01* +X700331Y88071D01* +X700331Y93329D02* +X706829Y93329D01* +X700331Y79569D02* +X700331Y72071D01* +X700331Y79569D02* +X706829Y79569D01* +X706829Y72071D01* +X700331Y72071D01* +X700331Y77329D02* +X706829Y77329D01* +X1261551Y181049D02* +X1269049Y181049D01* +X1269049Y174551D01* +X1261551Y174551D01* +X1261551Y181049D01* +X1261551Y179809D02* +X1269049Y179809D01* +X1253049Y181049D02* +X1245551Y181049D01* +X1253049Y181049D02* +X1253049Y174551D01* +X1245551Y174551D01* +X1245551Y181049D01* +X1245551Y179809D02* +X1253049Y179809D01* +X1261551Y132789D02* +X1269049Y132789D01* +X1269049Y126291D01* +X1261551Y126291D01* +X1261551Y132789D01* +X1261551Y131549D02* +X1269049Y131549D01* +X1253049Y132789D02* +X1245551Y132789D01* +X1253049Y132789D02* +X1253049Y126291D01* +X1245551Y126291D01* +X1245551Y132789D01* +X1245551Y131549D02* +X1253049Y131549D01* +D37* +X490605Y121876D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_solderpaste_bottom.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_solderpaste_bottom.gbr new file mode 100644 index 0000000000..c4e40b89b4 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_solderpaste_bottom.gbr @@ -0,0 +1,13 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSolderpaste Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* + + +M02* diff --git a/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_solderpaste_top.gbr b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_solderpaste_top.gbr new file mode 100644 index 0000000000..b2fd3393cd --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-D/files/gerber/BAAAHS-BRN01-D_solderpaste_top.gbr @@ -0,0 +1,2988 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSolderpaste Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.192500*% +%ADD11C,0.350000*% +%ADD12C,0.241500*% +%ADD13C,0.420000*% +%ADD14C,0.320038*% +%ADD15C,0.490000*% +%ADD16R,3.164769X3.166009*% +%ADD17C,0.315000*% +%ADD18C,0.200000*% +%ADD19C,0.700000*% +%ADD20C,0.950000*% +%ADD21R,0.919741X0.919741*% +%ADD22R,0.919894X0.920691*% +%ADD23R,0.921600X0.921600*% +%ADD24R,0.920331X0.919950*% +%ADD25C,0.091000*% +%ADD26C,0.210000*% +%ADD27C,0.124459*% +%ADD28C,0.140000*% +%ADD29C,0.402500*% + + +D10* +X248418Y349598D02* +X248418Y346022D01* +X244342Y346022D01* +X244342Y349598D01* +X248418Y349598D01* +X248418Y347851D02* +X244342Y347851D01* +X248418Y356522D02* +X248418Y360098D01* +X248418Y356522D02* +X244342Y356522D01* +X244342Y360098D01* +X248418Y360098D01* +X248418Y358351D02* +X244342Y358351D01* +X345942Y194998D02* +X345942Y191422D01* +X345942Y194998D02* +X350018Y194998D01* +X350018Y191422D01* +X345942Y191422D01* +X345942Y193251D02* +X350018Y193251D01* +X345942Y184498D02* +X345942Y180922D01* +X345942Y184498D02* +X350018Y184498D01* +X350018Y180922D01* +X345942Y180922D01* +X345942Y182751D02* +X350018Y182751D01* +X499878Y246962D02* +X499878Y250538D01* +X499878Y246962D02* +X495802Y246962D01* +X495802Y250538D01* +X499878Y250538D01* +X499878Y248791D02* +X495802Y248791D01* +X499878Y257462D02* +X499878Y261038D01* +X499878Y257462D02* +X495802Y257462D01* +X495802Y261038D01* +X499878Y261038D01* +X499878Y259291D02* +X495802Y259291D01* +D11* +X579830Y66870D02* +X579830Y59370D01* +X573330Y59370D01* +X573330Y66870D01* +X579830Y66870D01* +X579830Y62695D02* +X573330Y62695D01* +X573330Y66020D02* +X579830Y66020D01* +X579830Y75370D02* +X579830Y82870D01* +X579830Y75370D02* +X573330Y75370D01* +X573330Y82870D01* +X579830Y82870D01* +X579830Y78695D02* +X573330Y78695D01* +X573330Y82020D02* +X579830Y82020D01* +X352350Y70170D02* +X352350Y62670D01* +X352350Y70170D02* +X358850Y70170D01* +X358850Y62670D01* +X352350Y62670D01* +X352350Y65995D02* +X358850Y65995D01* +X358850Y69320D02* +X352350Y69320D01* +X352350Y54170D02* +X352350Y46670D01* +X352350Y54170D02* +X358850Y54170D01* +X358850Y46670D01* +X352350Y46670D01* +X352350Y49995D02* +X358850Y49995D01* +X358850Y53320D02* +X352350Y53320D01* +D10* +X691382Y163482D02* +X691382Y167058D01* +X695458Y167058D01* +X695458Y163482D01* +X691382Y163482D01* +X691382Y165311D02* +X695458Y165311D01* +X691382Y156558D02* +X691382Y152982D01* +X691382Y156558D02* +X695458Y156558D01* +X695458Y152982D01* +X691382Y152982D01* +X691382Y154811D02* +X695458Y154811D01* +X995178Y272362D02* +X995178Y275938D01* +X995178Y272362D02* +X991102Y272362D01* +X991102Y275938D01* +X995178Y275938D01* +X995178Y274191D02* +X991102Y274191D01* +X995178Y282862D02* +X995178Y286438D01* +X995178Y282862D02* +X991102Y282862D01* +X991102Y286438D01* +X995178Y286438D01* +X995178Y284691D02* +X991102Y284691D01* +X865638Y156558D02* +X865638Y152982D01* +X861562Y152982D01* +X861562Y156558D01* +X865638Y156558D01* +X865638Y154811D02* +X861562Y154811D01* +X865638Y163482D02* +X865638Y167058D01* +X865638Y163482D02* +X861562Y163482D01* +X861562Y167058D01* +X865638Y167058D01* +X865638Y165311D02* +X861562Y165311D01* +D11* +X498510Y296470D02* +X498510Y302970D01* +X509010Y302970D01* +X509010Y296470D01* +X498510Y296470D01* +X498510Y299795D02* +X509010Y299795D01* +X476510Y293470D02* +X476510Y286970D01* +X476510Y293470D02* +X487010Y293470D01* +X487010Y286970D01* +X476510Y286970D01* +X476510Y290295D02* +X487010Y290295D01* +X476510Y305970D02* +X476510Y312470D01* +X487010Y312470D01* +X487010Y305970D01* +X476510Y305970D01* +X476510Y309295D02* +X487010Y309295D01* +X457870Y326950D02* +X457870Y333450D01* +X468370Y333450D01* +X468370Y326950D01* +X457870Y326950D01* +X457870Y330275D02* +X468370Y330275D01* +X435870Y323950D02* +X435870Y317450D01* +X435870Y323950D02* +X446370Y323950D01* +X446370Y317450D01* +X435870Y317450D01* +X435870Y320775D02* +X446370Y320775D01* +X435870Y336450D02* +X435870Y342950D01* +X446370Y342950D01* +X446370Y336450D01* +X435870Y336450D01* +X435870Y339775D02* +X446370Y339775D01* +D10* +X1029202Y98478D02* +X1029202Y94902D01* +X1029202Y98478D02* +X1033278Y98478D01* +X1033278Y94902D01* +X1029202Y94902D01* +X1029202Y96731D02* +X1033278Y96731D01* +X1029202Y87978D02* +X1029202Y84402D01* +X1029202Y87978D02* +X1033278Y87978D01* +X1033278Y84402D01* +X1029202Y84402D01* +X1029202Y86231D02* +X1033278Y86231D01* +X704082Y143162D02* +X704082Y146738D01* +X708158Y146738D01* +X708158Y143162D01* +X704082Y143162D01* +X704082Y144991D02* +X708158Y144991D01* +X704082Y136238D02* +X704082Y132662D01* +X704082Y136238D02* +X708158Y136238D01* +X708158Y132662D01* +X704082Y132662D01* +X704082Y134491D02* +X708158Y134491D01* +X1252802Y191002D02* +X1256378Y191002D01* +X1252802Y191002D02* +X1252802Y195078D01* +X1256378Y195078D01* +X1256378Y191002D01* +X1256378Y192831D02* +X1252802Y192831D01* +X1252802Y194660D02* +X1256378Y194660D01* +X1263302Y191002D02* +X1266878Y191002D01* +X1263302Y191002D02* +X1263302Y195078D01* +X1266878Y195078D01* +X1266878Y191002D01* +X1266878Y192831D02* +X1263302Y192831D01* +X1263302Y194660D02* +X1266878Y194660D01* +X1256378Y140202D02* +X1252802Y140202D01* +X1252802Y144278D01* +X1256378Y144278D01* +X1256378Y140202D01* +X1256378Y142031D02* +X1252802Y142031D01* +X1252802Y143860D02* +X1256378Y143860D01* +X1263302Y140202D02* +X1266878Y140202D01* +X1263302Y140202D02* +X1263302Y144278D01* +X1266878Y144278D01* +X1266878Y140202D01* +X1266878Y142031D02* +X1263302Y142031D01* +X1263302Y143860D02* +X1266878Y143860D01* +X540438Y261118D02* +X536862Y261118D01* +X540438Y261118D02* +X540438Y257042D01* +X536862Y257042D01* +X536862Y261118D01* +X536862Y258871D02* +X540438Y258871D01* +X540438Y260700D02* +X536862Y260700D01* +X529938Y261118D02* +X526362Y261118D01* +X529938Y261118D02* +X529938Y257042D01* +X526362Y257042D01* +X526362Y261118D01* +X526362Y258871D02* +X529938Y258871D01* +X529938Y260700D02* +X526362Y260700D01* +X676142Y167058D02* +X676142Y163482D01* +X676142Y167058D02* +X680218Y167058D01* +X680218Y163482D01* +X676142Y163482D01* +X676142Y165311D02* +X680218Y165311D01* +X676142Y156558D02* +X676142Y152982D01* +X676142Y156558D02* +X680218Y156558D01* +X680218Y152982D01* +X676142Y152982D01* +X676142Y154811D02* +X680218Y154811D01* +X1007878Y272362D02* +X1007878Y275938D01* +X1007878Y272362D02* +X1003802Y272362D01* +X1003802Y275938D01* +X1007878Y275938D01* +X1007878Y274191D02* +X1003802Y274191D01* +X1007878Y282862D02* +X1007878Y286438D01* +X1007878Y282862D02* +X1003802Y282862D01* +X1003802Y286438D01* +X1007878Y286438D01* +X1007878Y284691D02* +X1003802Y284691D01* +X874262Y167058D02* +X874262Y163482D01* +X874262Y167058D02* +X878338Y167058D01* +X878338Y163482D01* +X874262Y163482D01* +X874262Y165311D02* +X878338Y165311D01* +X874262Y156558D02* +X874262Y152982D01* +X874262Y156558D02* +X878338Y156558D01* +X878338Y152982D01* +X874262Y152982D01* +X874262Y154811D02* +X878338Y154811D01* +X1200918Y100678D02* +X1200918Y97102D01* +X1196842Y97102D01* +X1196842Y100678D01* +X1200918Y100678D01* +X1200918Y98931D02* +X1196842Y98931D01* +X1200918Y107602D02* +X1200918Y111178D01* +X1200918Y107602D02* +X1196842Y107602D01* +X1196842Y111178D01* +X1200918Y111178D01* +X1200918Y109431D02* +X1196842Y109431D01* +X968242Y130462D02* +X968242Y134038D01* +X972318Y134038D01* +X972318Y130462D01* +X968242Y130462D01* +X968242Y132291D02* +X972318Y132291D01* +X968242Y123538D02* +X968242Y119962D01* +X968242Y123538D02* +X972318Y123538D01* +X972318Y119962D01* +X968242Y119962D01* +X968242Y121791D02* +X972318Y121791D01* +X976282Y256038D02* +X979858Y256038D01* +X979858Y251962D01* +X976282Y251962D01* +X976282Y256038D01* +X976282Y253791D02* +X979858Y253791D01* +X979858Y255620D02* +X976282Y255620D01* +X969358Y256038D02* +X965782Y256038D01* +X969358Y256038D02* +X969358Y251962D01* +X965782Y251962D01* +X965782Y256038D01* +X965782Y253791D02* +X969358Y253791D01* +X969358Y255620D02* +X965782Y255620D01* +X1043438Y87978D02* +X1043438Y84402D01* +X1039362Y84402D01* +X1039362Y87978D01* +X1043438Y87978D01* +X1043438Y86231D02* +X1039362Y86231D01* +X1043438Y94902D02* +X1043438Y98478D01* +X1043438Y94902D02* +X1039362Y94902D01* +X1039362Y98478D01* +X1043438Y98478D01* +X1043438Y96731D02* +X1039362Y96731D01* +X441378Y212858D02* +X437802Y212858D01* +X441378Y212858D02* +X441378Y208782D01* +X437802Y208782D01* +X437802Y212858D01* +X437802Y210611D02* +X441378Y210611D01* +X441378Y212440D02* +X437802Y212440D01* +X430878Y212858D02* +X427302Y212858D01* +X430878Y212858D02* +X430878Y208782D01* +X427302Y208782D01* +X427302Y212858D01* +X427302Y210611D02* +X430878Y210611D01* +X430878Y212440D02* +X427302Y212440D01* +X437802Y177298D02* +X441378Y177298D01* +X441378Y173222D01* +X437802Y173222D01* +X437802Y177298D01* +X437802Y175051D02* +X441378Y175051D01* +X441378Y176880D02* +X437802Y176880D01* +X430878Y177298D02* +X427302Y177298D01* +X430878Y177298D02* +X430878Y173222D01* +X427302Y173222D01* +X427302Y177298D01* +X427302Y175051D02* +X430878Y175051D01* +X430878Y176880D02* +X427302Y176880D01* +X430182Y187458D02* +X433758Y187458D01* +X433758Y183382D01* +X430182Y183382D01* +X430182Y187458D01* +X430182Y185211D02* +X433758Y185211D01* +X433758Y187040D02* +X430182Y187040D01* +X423258Y187458D02* +X419682Y187458D01* +X423258Y187458D02* +X423258Y183382D01* +X419682Y183382D01* +X419682Y187458D01* +X419682Y185211D02* +X423258Y185211D01* +X423258Y187040D02* +X419682Y187040D01* +X430182Y202698D02* +X433758Y202698D01* +X433758Y198622D01* +X430182Y198622D01* +X430182Y202698D01* +X430182Y200451D02* +X433758Y200451D01* +X433758Y202280D02* +X430182Y202280D01* +X423258Y202698D02* +X419682Y202698D01* +X423258Y202698D02* +X423258Y198622D01* +X419682Y198622D01* +X419682Y202698D01* +X419682Y200451D02* +X423258Y200451D01* +X423258Y202280D02* +X419682Y202280D01* +X526362Y201162D02* +X529938Y201162D01* +X526362Y201162D02* +X526362Y205238D01* +X529938Y205238D01* +X529938Y201162D01* +X529938Y202991D02* +X526362Y202991D01* +X526362Y204820D02* +X529938Y204820D01* +X536862Y201162D02* +X540438Y201162D01* +X536862Y201162D02* +X536862Y205238D01* +X540438Y205238D01* +X540438Y201162D01* +X540438Y202991D02* +X536862Y202991D01* +X536862Y204820D02* +X540438Y204820D01* +X554302Y152902D02* +X557878Y152902D01* +X554302Y152902D02* +X554302Y156978D01* +X557878Y156978D01* +X557878Y152902D01* +X557878Y154731D02* +X554302Y154731D01* +X554302Y156560D02* +X557878Y156560D01* +X564802Y152902D02* +X568378Y152902D01* +X564802Y152902D02* +X564802Y156978D01* +X568378Y156978D01* +X568378Y152902D01* +X568378Y154731D02* +X564802Y154731D01* +X564802Y156560D02* +X568378Y156560D01* +X568458Y178382D02* +X568458Y181958D01* +X568458Y178382D02* +X564382Y178382D01* +X564382Y181958D01* +X568458Y181958D01* +X568458Y180211D02* +X564382Y180211D01* +X568458Y188882D02* +X568458Y192458D01* +X568458Y188882D02* +X564382Y188882D01* +X564382Y192458D01* +X568458Y192458D01* +X568458Y190711D02* +X564382Y190711D01* +X529938Y226562D02* +X526362Y226562D01* +X526362Y230638D01* +X529938Y230638D01* +X529938Y226562D01* +X529938Y228391D02* +X526362Y228391D01* +X526362Y230220D02* +X529938Y230220D01* +X536862Y226562D02* +X540438Y226562D01* +X536862Y226562D02* +X536862Y230638D01* +X540438Y230638D01* +X540438Y226562D01* +X540438Y228391D02* +X536862Y228391D01* +X536862Y230220D02* +X540438Y230220D01* +X461778Y169258D02* +X461778Y165682D01* +X457702Y165682D01* +X457702Y169258D01* +X461778Y169258D01* +X461778Y167511D02* +X457702Y167511D01* +X461778Y176182D02* +X461778Y179758D01* +X461778Y176182D02* +X457702Y176182D01* +X457702Y179758D01* +X461778Y179758D01* +X461778Y178011D02* +X457702Y178011D01* +X441378Y141738D02* +X437802Y141738D01* +X441378Y141738D02* +X441378Y137662D01* +X437802Y137662D01* +X437802Y141738D01* +X437802Y139491D02* +X441378Y139491D01* +X441378Y141320D02* +X437802Y141320D01* +X430878Y141738D02* +X427302Y141738D01* +X430878Y141738D02* +X430878Y137662D01* +X427302Y137662D01* +X427302Y141738D01* +X427302Y139491D02* +X430878Y139491D01* +X430878Y141320D02* +X427302Y141320D01* +X439922Y305722D02* +X439922Y309298D01* +X443998Y309298D01* +X443998Y305722D01* +X439922Y305722D01* +X439922Y307551D02* +X443998Y307551D01* +X439922Y298798D02* +X439922Y295222D01* +X439922Y298798D02* +X443998Y298798D01* +X443998Y295222D01* +X439922Y295222D01* +X439922Y297051D02* +X443998Y297051D01* +X441378Y129038D02* +X437802Y129038D01* +X441378Y129038D02* +X441378Y124962D01* +X437802Y124962D01* +X437802Y129038D01* +X437802Y126791D02* +X441378Y126791D01* +X441378Y128620D02* +X437802Y128620D01* +X430878Y129038D02* +X427302Y129038D01* +X430878Y129038D02* +X430878Y124962D01* +X427302Y124962D01* +X427302Y129038D01* +X427302Y126791D02* +X430878Y126791D01* +X430878Y128620D02* +X427302Y128620D01* +X549562Y192538D02* +X553138Y192538D01* +X553138Y188462D01* +X549562Y188462D01* +X549562Y192538D01* +X549562Y190291D02* +X553138Y190291D01* +X553138Y192120D02* +X549562Y192120D01* +X542638Y192538D02* +X539062Y192538D01* +X542638Y192538D02* +X542638Y188462D01* +X539062Y188462D01* +X539062Y192538D01* +X539062Y190291D02* +X542638Y190291D01* +X542638Y192120D02* +X539062Y192120D01* +X529938Y213862D02* +X526362Y213862D01* +X526362Y217938D01* +X529938Y217938D01* +X529938Y213862D01* +X529938Y215691D02* +X526362Y215691D01* +X526362Y217520D02* +X529938Y217520D01* +X536862Y213862D02* +X540438Y213862D01* +X536862Y213862D02* +X536862Y217938D01* +X540438Y217938D01* +X540438Y213862D01* +X540438Y215691D02* +X536862Y215691D01* +X536862Y217520D02* +X540438Y217520D01* +X541522Y156898D02* +X541522Y153322D01* +X541522Y156898D02* +X545598Y156898D01* +X545598Y153322D01* +X541522Y153322D01* +X541522Y155151D02* +X545598Y155151D01* +X541522Y146398D02* +X541522Y142822D01* +X541522Y146398D02* +X545598Y146398D01* +X545598Y142822D01* +X541522Y142822D01* +X541522Y144651D02* +X545598Y144651D01* +X564802Y172218D02* +X568378Y172218D01* +X568378Y168142D01* +X564802Y168142D01* +X564802Y172218D01* +X564802Y169971D02* +X568378Y169971D01* +X568378Y171800D02* +X564802Y171800D01* +X557878Y172218D02* +X554302Y172218D01* +X557878Y172218D02* +X557878Y168142D01* +X554302Y168142D01* +X554302Y172218D01* +X554302Y169971D02* +X557878Y169971D01* +X557878Y171800D02* +X554302Y171800D01* +X487178Y246962D02* +X487178Y250538D01* +X487178Y246962D02* +X483102Y246962D01* +X483102Y250538D01* +X487178Y250538D01* +X487178Y248791D02* +X483102Y248791D01* +X487178Y257462D02* +X487178Y261038D01* +X487178Y257462D02* +X483102Y257462D01* +X483102Y261038D01* +X487178Y261038D01* +X487178Y259291D02* +X483102Y259291D01* +X757502Y99562D02* +X761078Y99562D01* +X757502Y99562D02* +X757502Y103638D01* +X761078Y103638D01* +X761078Y99562D01* +X761078Y101391D02* +X757502Y101391D01* +X757502Y103220D02* +X761078Y103220D01* +X768002Y99562D02* +X771578Y99562D01* +X768002Y99562D02* +X768002Y103638D01* +X771578Y103638D01* +X771578Y99562D01* +X771578Y101391D02* +X768002Y101391D01* +X768002Y103220D02* +X771578Y103220D01* +X464318Y295222D02* +X464318Y298798D01* +X464318Y295222D02* +X460242Y295222D01* +X460242Y298798D01* +X464318Y298798D01* +X464318Y297051D02* +X460242Y297051D01* +X464318Y305722D02* +X464318Y309298D01* +X464318Y305722D02* +X460242Y305722D01* +X460242Y309298D01* +X464318Y309298D01* +X464318Y307551D02* +X460242Y307551D01* +X352138Y361182D02* +X348562Y361182D01* +X348562Y365258D01* +X352138Y365258D01* +X352138Y361182D01* +X352138Y363011D02* +X348562Y363011D01* +X348562Y364840D02* +X352138Y364840D01* +X359062Y361182D02* +X362638Y361182D01* +X359062Y361182D02* +X359062Y365258D01* +X362638Y365258D01* +X362638Y361182D01* +X362638Y363011D02* +X359062Y363011D01* +X359062Y364840D02* +X362638Y364840D01* +X1213618Y100678D02* +X1213618Y97102D01* +X1209542Y97102D01* +X1209542Y100678D01* +X1213618Y100678D01* +X1213618Y98931D02* +X1209542Y98931D01* +X1213618Y107602D02* +X1213618Y111178D01* +X1213618Y107602D02* +X1209542Y107602D01* +X1209542Y111178D01* +X1213618Y111178D01* +X1213618Y109431D02* +X1209542Y109431D01* +X751258Y162058D02* +X747682Y162058D01* +X751258Y162058D02* +X751258Y157982D01* +X747682Y157982D01* +X747682Y162058D01* +X747682Y159811D02* +X751258Y159811D01* +X751258Y161640D02* +X747682Y161640D01* +X740758Y162058D02* +X737182Y162058D01* +X740758Y162058D02* +X740758Y157982D01* +X737182Y157982D01* +X737182Y162058D01* +X737182Y159811D02* +X740758Y159811D01* +X740758Y161640D02* +X737182Y161640D01* +X715358Y157982D02* +X711782Y157982D01* +X711782Y162058D01* +X715358Y162058D01* +X715358Y157982D01* +X715358Y159811D02* +X711782Y159811D01* +X711782Y161640D02* +X715358Y161640D01* +X722282Y157982D02* +X725858Y157982D01* +X722282Y157982D02* +X722282Y162058D01* +X725858Y162058D01* +X725858Y157982D01* +X725858Y159811D02* +X722282Y159811D01* +X722282Y161640D02* +X725858Y161640D01* +D11* +X456250Y262330D02* +X448750Y262330D01* +X456250Y262330D02* +X456250Y255830D01* +X448750Y255830D01* +X448750Y262330D01* +X448750Y259155D02* +X456250Y259155D01* +X440250Y262330D02* +X432750Y262330D01* +X440250Y262330D02* +X440250Y255830D01* +X432750Y255830D01* +X432750Y262330D01* +X432750Y259155D02* +X440250Y259155D01* +X440250Y225350D02* +X432750Y225350D01* +X432750Y231850D01* +X440250Y231850D01* +X440250Y225350D01* +X440250Y228675D02* +X432750Y228675D01* +X448750Y225350D02* +X456250Y225350D01* +X448750Y225350D02* +X448750Y231850D01* +X456250Y231850D01* +X456250Y225350D01* +X456250Y228675D02* +X448750Y228675D01* +D10* +X1035818Y166718D02* +X1035818Y163142D01* +X1031742Y163142D01* +X1031742Y166718D01* +X1035818Y166718D01* +X1035818Y164971D02* +X1031742Y164971D01* +X1035818Y173642D02* +X1035818Y177218D01* +X1035818Y173642D02* +X1031742Y173642D01* +X1031742Y177218D01* +X1035818Y177218D01* +X1035818Y175471D02* +X1031742Y175471D01* +X464318Y206322D02* +X464318Y209898D01* +X464318Y206322D02* +X460242Y206322D01* +X460242Y209898D01* +X464318Y209898D01* +X464318Y208151D02* +X460242Y208151D01* +X464318Y216822D02* +X464318Y220398D01* +X464318Y216822D02* +X460242Y216822D01* +X460242Y220398D01* +X464318Y220398D01* +X464318Y218651D02* +X460242Y218651D01* +X470402Y159438D02* +X470402Y155862D01* +X470402Y159438D02* +X474478Y159438D01* +X474478Y155862D01* +X470402Y155862D01* +X470402Y157691D02* +X474478Y157691D01* +X470402Y148938D02* +X470402Y145362D01* +X470402Y148938D02* +X474478Y148938D01* +X474478Y145362D01* +X470402Y145362D01* +X470402Y147191D02* +X474478Y147191D01* +D11* +X524950Y137870D02* +X532450Y137870D01* +X532450Y131370D01* +X524950Y131370D01* +X524950Y137870D01* +X524950Y134695D02* +X532450Y134695D01* +X516450Y137870D02* +X508950Y137870D01* +X516450Y137870D02* +X516450Y131370D01* +X508950Y131370D01* +X508950Y137870D01* +X508950Y134695D02* +X516450Y134695D01* +X1024330Y282890D02* +X1024330Y290390D01* +X1024330Y282890D02* +X1017830Y282890D01* +X1017830Y290390D01* +X1024330Y290390D01* +X1024330Y286215D02* +X1017830Y286215D01* +X1017830Y289540D02* +X1024330Y289540D01* +X1024330Y298890D02* +X1024330Y306390D01* +X1024330Y298890D02* +X1017830Y298890D01* +X1017830Y306390D01* +X1024330Y306390D01* +X1024330Y302215D02* +X1017830Y302215D01* +X1017830Y305540D02* +X1024330Y305540D01* +D10* +X1035818Y293718D02* +X1035818Y290142D01* +X1031742Y290142D01* +X1031742Y293718D01* +X1035818Y293718D01* +X1035818Y291971D02* +X1031742Y291971D01* +X1035818Y300642D02* +X1035818Y304218D01* +X1035818Y300642D02* +X1031742Y300642D01* +X1031742Y304218D01* +X1035818Y304218D01* +X1035818Y302471D02* +X1031742Y302471D01* +D11* +X1012750Y70170D02* +X1012750Y62670D01* +X1012750Y70170D02* +X1019250Y70170D01* +X1019250Y62670D01* +X1012750Y62670D01* +X1012750Y65995D02* +X1019250Y65995D01* +X1019250Y69320D02* +X1012750Y69320D01* +X1012750Y54170D02* +X1012750Y46670D01* +X1012750Y54170D02* +X1019250Y54170D01* +X1019250Y46670D01* +X1012750Y46670D01* +X1012750Y49995D02* +X1019250Y49995D01* +X1019250Y53320D02* +X1012750Y53320D01* +X685090Y88070D02* +X685090Y95570D01* +X691590Y95570D01* +X691590Y88070D01* +X685090Y88070D01* +X685090Y91395D02* +X691590Y91395D01* +X691590Y94720D02* +X685090Y94720D01* +X685090Y79570D02* +X685090Y72070D01* +X685090Y79570D02* +X691590Y79570D01* +X691590Y72070D01* +X685090Y72070D01* +X685090Y75395D02* +X691590Y75395D01* +X691590Y78720D02* +X685090Y78720D01* +D10* +X1049522Y94902D02* +X1049522Y98478D01* +X1053598Y98478D01* +X1053598Y94902D01* +X1049522Y94902D01* +X1049522Y96731D02* +X1053598Y96731D01* +X1049522Y87978D02* +X1049522Y84402D01* +X1049522Y87978D02* +X1053598Y87978D01* +X1053598Y84402D01* +X1049522Y84402D01* +X1049522Y86231D02* +X1053598Y86231D01* +X511042Y155862D02* +X511042Y159438D01* +X515118Y159438D01* +X515118Y155862D01* +X511042Y155862D01* +X511042Y157691D02* +X515118Y157691D01* +X511042Y148938D02* +X511042Y145362D01* +X511042Y148938D02* +X515118Y148938D01* +X515118Y145362D01* +X511042Y145362D01* +X511042Y147191D02* +X515118Y147191D01* +X523742Y155862D02* +X523742Y159438D01* +X527818Y159438D01* +X527818Y155862D01* +X523742Y155862D01* +X523742Y157691D02* +X527818Y157691D01* +X523742Y148938D02* +X523742Y145362D01* +X523742Y148938D02* +X527818Y148938D01* +X527818Y145362D01* +X523742Y145362D01* +X523742Y147191D02* +X527818Y147191D01* +X348482Y351442D02* +X348482Y355018D01* +X352558Y355018D01* +X352558Y351442D01* +X348482Y351442D01* +X348482Y353271D02* +X352558Y353271D01* +X348482Y344518D02* +X348482Y340942D01* +X348482Y344518D02* +X352558Y344518D01* +X352558Y340942D01* +X348482Y340942D01* +X348482Y342771D02* +X352558Y342771D01* +X358642Y351442D02* +X358642Y355018D01* +X362718Y355018D01* +X362718Y351442D01* +X358642Y351442D01* +X358642Y353271D02* +X362718Y353271D01* +X358642Y344518D02* +X358642Y340942D01* +X358642Y344518D02* +X362718Y344518D01* +X362718Y340942D01* +X358642Y340942D01* +X358642Y342771D02* +X362718Y342771D01* +X238258Y346022D02* +X238258Y349598D01* +X238258Y346022D02* +X234182Y346022D01* +X234182Y349598D01* +X238258Y349598D01* +X238258Y347851D02* +X234182Y347851D01* +X238258Y356522D02* +X238258Y360098D01* +X238258Y356522D02* +X234182Y356522D01* +X234182Y360098D01* +X238258Y360098D01* +X238258Y358351D02* +X234182Y358351D01* +D11* +X516290Y64210D02* +X516290Y57710D01* +X516290Y64210D02* +X526790Y64210D01* +X526790Y57710D01* +X516290Y57710D01* +X516290Y61035D02* +X526790Y61035D01* +X494290Y54710D02* +X494290Y48210D01* +X494290Y54710D02* +X504790Y54710D01* +X504790Y48210D01* +X494290Y48210D01* +X494290Y51535D02* +X504790Y51535D01* +X494290Y67210D02* +X494290Y73710D01* +X504790Y73710D01* +X504790Y67210D01* +X494290Y67210D01* +X494290Y70535D02* +X504790Y70535D01* +D10* +X182378Y340942D02* +X182378Y344518D01* +X182378Y340942D02* +X178302Y340942D01* +X178302Y344518D01* +X182378Y344518D01* +X182378Y342771D02* +X178302Y342771D01* +X182378Y351442D02* +X182378Y355018D01* +X182378Y351442D02* +X178302Y351442D01* +X178302Y355018D01* +X182378Y355018D01* +X182378Y353271D02* +X178302Y353271D01* +D11* +X448750Y247090D02* +X456250Y247090D01* +X456250Y240590D01* +X448750Y240590D01* +X448750Y247090D01* +X448750Y243915D02* +X456250Y243915D01* +X440250Y247090D02* +X432750Y247090D01* +X440250Y247090D02* +X440250Y240590D01* +X432750Y240590D01* +X432750Y247090D01* +X432750Y243915D02* +X440250Y243915D01* +D12* +X611777Y105693D02* +X611777Y98107D01* +X611777Y105693D02* +X616263Y105693D01* +X616263Y98107D01* +X611777Y98107D01* +X611777Y100401D02* +X616263Y100401D01* +X616263Y102695D02* +X611777Y102695D01* +X611777Y104989D02* +X616263Y104989D01* +X602277Y105693D02* +X602277Y98107D01* +X602277Y105693D02* +X606763Y105693D01* +X606763Y98107D01* +X602277Y98107D01* +X602277Y100401D02* +X606763Y100401D01* +X606763Y102695D02* +X602277Y102695D01* +X602277Y104989D02* +X606763Y104989D01* +X592777Y105693D02* +X592777Y98107D01* +X592777Y105693D02* +X597263Y105693D01* +X597263Y98107D01* +X592777Y98107D01* +X592777Y100401D02* +X597263Y100401D01* +X597263Y102695D02* +X592777Y102695D01* +X592777Y104989D02* +X597263Y104989D01* +X592777Y79693D02* +X592777Y72107D01* +X592777Y79693D02* +X597263Y79693D01* +X597263Y72107D01* +X592777Y72107D01* +X592777Y74401D02* +X597263Y74401D01* +X597263Y76695D02* +X592777Y76695D01* +X592777Y78989D02* +X597263Y78989D01* +X602277Y79693D02* +X602277Y72107D01* +X602277Y79693D02* +X606763Y79693D01* +X606763Y72107D01* +X602277Y72107D01* +X602277Y74401D02* +X606763Y74401D01* +X606763Y76695D02* +X602277Y76695D01* +X602277Y78989D02* +X606763Y78989D01* +X611777Y79693D02* +X611777Y72107D01* +X611777Y79693D02* +X616263Y79693D01* +X616263Y72107D01* +X611777Y72107D01* +X611777Y74401D02* +X616263Y74401D01* +X616263Y76695D02* +X611777Y76695D01* +X611777Y78989D02* +X616263Y78989D01* +D13* +X639960Y77580D02* +X647760Y77580D01* +X639960Y77580D02* +X639960Y110380D01* +X647760Y110380D01* +X647760Y77580D01* +X647760Y81570D02* +X639960Y81570D01* +X639960Y85560D02* +X647760Y85560D01* +X647760Y89550D02* +X639960Y89550D01* +X639960Y93540D02* +X647760Y93540D01* +X647760Y97530D02* +X639960Y97530D01* +X639960Y101520D02* +X647760Y101520D01* +X647760Y105510D02* +X639960Y105510D01* +X639960Y109500D02* +X647760Y109500D01* +X667960Y77580D02* +X675760Y77580D01* +X667960Y77580D02* +X667960Y110380D01* +X675760Y110380D01* +X675760Y77580D01* +X675760Y81570D02* +X667960Y81570D01* +X667960Y85560D02* +X675760Y85560D01* +X675760Y89550D02* +X667960Y89550D01* +X667960Y93540D02* +X675760Y93540D01* +X675760Y97530D02* +X667960Y97530D01* +X667960Y101520D02* +X675760Y101520D01* +X675760Y105510D02* +X667960Y105510D01* +X667960Y109500D02* +X675760Y109500D01* +D10* +X606478Y65538D02* +X602902Y65538D01* +X606478Y65538D02* +X606478Y61462D01* +X602902Y61462D01* +X602902Y65538D01* +X602902Y63291D02* +X606478Y63291D01* +X606478Y65120D02* +X602902Y65120D01* +X595978Y65538D02* +X592402Y65538D01* +X595978Y65538D02* +X595978Y61462D01* +X592402Y61462D01* +X592402Y65538D01* +X592402Y63291D02* +X595978Y63291D01* +X595978Y65120D02* +X592402Y65120D01* +X627882Y107602D02* +X627882Y111178D01* +X631958Y111178D01* +X631958Y107602D01* +X627882Y107602D01* +X627882Y109431D02* +X631958Y109431D01* +X627882Y100678D02* +X627882Y97102D01* +X627882Y100678D02* +X631958Y100678D01* +X631958Y97102D01* +X627882Y97102D01* +X627882Y98931D02* +X631958Y98931D01* +X613758Y114802D02* +X610182Y114802D01* +X610182Y118878D01* +X613758Y118878D01* +X613758Y114802D01* +X613758Y116631D02* +X610182Y116631D01* +X610182Y118460D02* +X613758Y118460D01* +X620682Y114802D02* +X624258Y114802D01* +X620682Y114802D02* +X620682Y118878D01* +X624258Y118878D01* +X624258Y114802D01* +X624258Y116631D02* +X620682Y116631D01* +X620682Y118460D02* +X624258Y118460D01* +X588358Y114802D02* +X584782Y114802D01* +X584782Y118878D01* +X588358Y118878D01* +X588358Y114802D01* +X588358Y116631D02* +X584782Y116631D01* +X584782Y118460D02* +X588358Y118460D01* +X595282Y114802D02* +X598858Y114802D01* +X595282Y114802D02* +X595282Y118878D01* +X598858Y118878D01* +X598858Y114802D01* +X598858Y116631D02* +X595282Y116631D01* +X595282Y118460D02* +X598858Y118460D01* +D14* +X639369Y62916D02* +X639369Y53924D01* +X633425Y53924D01* +X633425Y62916D01* +X639369Y62916D01* +X639369Y56964D02* +X633425Y56964D01* +X633425Y60004D02* +X639369Y60004D01* +X672135Y62916D02* +X672135Y53924D01* +X666191Y53924D01* +X666191Y62916D01* +X672135Y62916D01* +X672135Y56964D02* +X666191Y56964D01* +X666191Y60004D02* +X672135Y60004D01* +D10* +X540098Y114802D02* +X536522Y114802D01* +X536522Y118878D01* +X540098Y118878D01* +X540098Y114802D01* +X540098Y116631D02* +X536522Y116631D01* +X536522Y118460D02* +X540098Y118460D01* +X547022Y114802D02* +X550598Y114802D01* +X547022Y114802D02* +X547022Y118878D01* +X550598Y118878D01* +X550598Y114802D01* +X550598Y116631D02* +X547022Y116631D01* +X547022Y118460D02* +X550598Y118460D01* +D11* +X546930Y60250D02* +X539430Y60250D01* +X539430Y66750D01* +X546930Y66750D01* +X546930Y60250D01* +X546930Y63575D02* +X539430Y63575D01* +X555430Y60250D02* +X562930Y60250D01* +X555430Y60250D02* +X555430Y66750D01* +X562930Y66750D01* +X562930Y60250D01* +X562930Y63575D02* +X555430Y63575D01* +D15* +X581450Y132470D02* +X597550Y132470D01* +X581450Y132470D02* +X581450Y141570D01* +X597550Y141570D01* +X597550Y132470D01* +X597550Y137125D02* +X581450Y137125D01* +X581450Y178470D02* +X597550Y178470D01* +X581450Y178470D02* +X581450Y187570D01* +X597550Y187570D01* +X597550Y178470D01* +X597550Y183125D02* +X581450Y183125D01* +X672450Y178470D02* +X688550Y178470D01* +X672450Y178470D02* +X672450Y187570D01* +X688550Y187570D01* +X688550Y178470D01* +X688550Y183125D02* +X672450Y183125D01* +X672450Y132470D02* +X688550Y132470D01* +X672450Y132470D02* +X672450Y141570D01* +X688550Y141570D01* +X688550Y132470D01* +X688550Y137125D02* +X672450Y137125D01* +X941950Y197910D02* +X941950Y214010D01* +X941950Y197910D02* +X932850Y197910D01* +X932850Y214010D01* +X941950Y214010D01* +X941950Y202565D02* +X932850Y202565D01* +X932850Y207220D02* +X941950Y207220D01* +X941950Y211875D02* +X932850Y211875D01* +X895950Y214010D02* +X895950Y197910D01* +X886850Y197910D01* +X886850Y214010D01* +X895950Y214010D01* +X895950Y202565D02* +X886850Y202565D01* +X886850Y207220D02* +X895950Y207220D01* +X895950Y211875D02* +X886850Y211875D01* +X895950Y288910D02* +X895950Y305010D01* +X895950Y288910D02* +X886850Y288910D01* +X886850Y305010D01* +X895950Y305010D01* +X895950Y293565D02* +X886850Y293565D01* +X886850Y298220D02* +X895950Y298220D01* +X895950Y302875D02* +X886850Y302875D01* +X941950Y305010D02* +X941950Y288910D01* +X932850Y288910D01* +X932850Y305010D01* +X941950Y305010D01* +X941950Y293565D02* +X932850Y293565D01* +X932850Y298220D02* +X941950Y298220D01* +X941950Y302875D02* +X932850Y302875D01* +X782970Y132470D02* +X766870Y132470D01* +X766870Y141570D01* +X782970Y141570D01* +X782970Y132470D01* +X782970Y137125D02* +X766870Y137125D01* +X766870Y178470D02* +X782970Y178470D01* +X766870Y178470D02* +X766870Y187570D01* +X782970Y187570D01* +X782970Y178470D01* +X782970Y183125D02* +X766870Y183125D01* +X857870Y178470D02* +X873970Y178470D01* +X857870Y178470D02* +X857870Y187570D01* +X873970Y187570D01* +X873970Y178470D01* +X873970Y183125D02* +X857870Y183125D01* +X857870Y132470D02* +X873970Y132470D01* +X857870Y132470D02* +X857870Y141570D01* +X873970Y141570D01* +X873970Y132470D01* +X873970Y137125D02* +X857870Y137125D01* +D10* +X537558Y178302D02* +X533982Y178302D01* +X533982Y182378D01* +X537558Y182378D01* +X537558Y178302D01* +X537558Y180131D02* +X533982Y180131D01* +X533982Y181960D02* +X537558Y181960D01* +X544482Y178302D02* +X548058Y178302D01* +X544482Y178302D02* +X544482Y182378D01* +X548058Y182378D01* +X548058Y178302D01* +X548058Y180131D02* +X544482Y180131D01* +X544482Y181960D02* +X548058Y181960D01* +X508502Y257462D02* +X508502Y261038D01* +X512578Y261038D01* +X512578Y257462D01* +X508502Y257462D01* +X508502Y259291D02* +X512578Y259291D01* +X508502Y250538D02* +X508502Y246962D01* +X508502Y250538D02* +X512578Y250538D01* +X512578Y246962D01* +X508502Y246962D01* +X508502Y248791D02* +X512578Y248791D01* +X861642Y53842D02* +X865218Y53842D01* +X861642Y53842D02* +X861642Y57918D01* +X865218Y57918D01* +X865218Y53842D01* +X865218Y55671D02* +X861642Y55671D01* +X861642Y57500D02* +X865218Y57500D01* +X872142Y53842D02* +X875718Y53842D01* +X872142Y53842D02* +X872142Y57918D01* +X875718Y57918D01* +X875718Y53842D01* +X875718Y55671D02* +X872142Y55671D01* +X872142Y57500D02* +X875718Y57500D01* +D16* +X1127907Y229041D03* +D17* +X1061345Y301135D02* +X1044495Y301135D01* +X1044495Y306985D01* +X1061345Y306985D01* +X1061345Y301135D01* +X1061345Y304127D02* +X1044495Y304127D01* +X1044495Y288435D02* +X1061345Y288435D01* +X1044495Y288435D02* +X1044495Y294285D01* +X1061345Y294285D01* +X1061345Y288435D01* +X1061345Y291427D02* +X1044495Y291427D01* +X1044495Y275735D02* +X1061345Y275735D01* +X1044495Y275735D02* +X1044495Y281585D01* +X1061345Y281585D01* +X1061345Y275735D01* +X1061345Y278727D02* +X1044495Y278727D01* +X1044495Y263035D02* +X1061345Y263035D01* +X1044495Y263035D02* +X1044495Y268885D01* +X1061345Y268885D01* +X1061345Y263035D01* +X1061345Y266027D02* +X1044495Y266027D01* +X1044495Y250335D02* +X1061345Y250335D01* +X1044495Y250335D02* +X1044495Y256185D01* +X1061345Y256185D01* +X1061345Y250335D01* +X1061345Y253327D02* +X1044495Y253327D01* +X1044495Y237635D02* +X1061345Y237635D01* +X1044495Y237635D02* +X1044495Y243485D01* +X1061345Y243485D01* +X1061345Y237635D01* +X1061345Y240627D02* +X1044495Y240627D01* +X1044495Y224935D02* +X1061345Y224935D01* +X1044495Y224935D02* +X1044495Y230785D01* +X1061345Y230785D01* +X1061345Y224935D01* +X1061345Y227927D02* +X1044495Y227927D01* +X1044495Y212235D02* +X1061345Y212235D01* +X1044495Y212235D02* +X1044495Y218085D01* +X1061345Y218085D01* +X1061345Y212235D01* +X1061345Y215227D02* +X1044495Y215227D01* +X1044495Y199535D02* +X1061345Y199535D01* +X1044495Y199535D02* +X1044495Y205385D01* +X1061345Y205385D01* +X1061345Y199535D01* +X1061345Y202527D02* +X1044495Y202527D01* +X1044495Y186835D02* +X1061345Y186835D01* +X1044495Y186835D02* +X1044495Y192685D01* +X1061345Y192685D01* +X1061345Y186835D01* +X1061345Y189827D02* +X1044495Y189827D01* +X1044495Y174135D02* +X1061345Y174135D01* +X1044495Y174135D02* +X1044495Y179985D01* +X1061345Y179985D01* +X1061345Y174135D01* +X1061345Y177127D02* +X1044495Y177127D01* +X1044495Y161435D02* +X1061345Y161435D01* +X1044495Y161435D02* +X1044495Y167285D01* +X1061345Y167285D01* +X1061345Y161435D01* +X1061345Y164427D02* +X1044495Y164427D01* +X1044495Y148735D02* +X1061345Y148735D01* +X1044495Y148735D02* +X1044495Y154585D01* +X1061345Y154585D01* +X1061345Y148735D01* +X1061345Y151727D02* +X1044495Y151727D01* +X1044495Y136035D02* +X1061345Y136035D01* +X1044495Y136035D02* +X1044495Y141885D01* +X1061345Y141885D01* +X1061345Y136035D01* +X1061345Y139027D02* +X1044495Y139027D01* +X1083695Y137385D02* +X1083695Y120535D01* +X1077845Y120535D01* +X1077845Y137385D01* +X1083695Y137385D01* +X1083695Y123527D02* +X1077845Y123527D01* +X1077845Y126519D02* +X1083695Y126519D01* +X1083695Y129511D02* +X1077845Y129511D01* +X1077845Y132503D02* +X1083695Y132503D01* +X1083695Y135495D02* +X1077845Y135495D01* +X1096395Y137385D02* +X1096395Y120535D01* +X1090545Y120535D01* +X1090545Y137385D01* +X1096395Y137385D01* +X1096395Y123527D02* +X1090545Y123527D01* +X1090545Y126519D02* +X1096395Y126519D01* +X1096395Y129511D02* +X1090545Y129511D01* +X1090545Y132503D02* +X1096395Y132503D01* +X1096395Y135495D02* +X1090545Y135495D01* +X1109095Y137385D02* +X1109095Y120535D01* +X1103245Y120535D01* +X1103245Y137385D01* +X1109095Y137385D01* +X1109095Y123527D02* +X1103245Y123527D01* +X1103245Y126519D02* +X1109095Y126519D01* +X1109095Y129511D02* +X1103245Y129511D01* +X1103245Y132503D02* +X1109095Y132503D01* +X1109095Y135495D02* +X1103245Y135495D01* +X1121795Y137385D02* +X1121795Y120535D01* +X1115945Y120535D01* +X1115945Y137385D01* +X1121795Y137385D01* +X1121795Y123527D02* +X1115945Y123527D01* +X1115945Y126519D02* +X1121795Y126519D01* +X1121795Y129511D02* +X1115945Y129511D01* +X1115945Y132503D02* +X1121795Y132503D01* +X1121795Y135495D02* +X1115945Y135495D01* +X1134495Y137385D02* +X1134495Y120535D01* +X1128645Y120535D01* +X1128645Y137385D01* +X1134495Y137385D01* +X1134495Y123527D02* +X1128645Y123527D01* +X1128645Y126519D02* +X1134495Y126519D01* +X1134495Y129511D02* +X1128645Y129511D01* +X1128645Y132503D02* +X1134495Y132503D01* +X1134495Y135495D02* +X1128645Y135495D01* +X1147195Y137385D02* +X1147195Y120535D01* +X1141345Y120535D01* +X1141345Y137385D01* +X1147195Y137385D01* +X1147195Y123527D02* +X1141345Y123527D01* +X1141345Y126519D02* +X1147195Y126519D01* +X1147195Y129511D02* +X1141345Y129511D01* +X1141345Y132503D02* +X1147195Y132503D01* +X1147195Y135495D02* +X1141345Y135495D01* +X1159895Y137385D02* +X1159895Y120535D01* +X1154045Y120535D01* +X1154045Y137385D01* +X1159895Y137385D01* +X1159895Y123527D02* +X1154045Y123527D01* +X1154045Y126519D02* +X1159895Y126519D01* +X1159895Y129511D02* +X1154045Y129511D01* +X1154045Y132503D02* +X1159895Y132503D01* +X1159895Y135495D02* +X1154045Y135495D01* +X1172595Y137385D02* +X1172595Y120535D01* +X1166745Y120535D01* +X1166745Y137385D01* +X1172595Y137385D01* +X1172595Y123527D02* +X1166745Y123527D01* +X1166745Y126519D02* +X1172595Y126519D01* +X1172595Y129511D02* +X1166745Y129511D01* +X1166745Y132503D02* +X1172595Y132503D01* +X1172595Y135495D02* +X1166745Y135495D01* +X1185295Y137385D02* +X1185295Y120535D01* +X1179445Y120535D01* +X1179445Y137385D01* +X1185295Y137385D01* +X1185295Y123527D02* +X1179445Y123527D01* +X1179445Y126519D02* +X1185295Y126519D01* +X1185295Y129511D02* +X1179445Y129511D01* +X1179445Y132503D02* +X1185295Y132503D01* +X1185295Y135495D02* +X1179445Y135495D01* +X1197995Y137385D02* +X1197995Y120535D01* +X1192145Y120535D01* +X1192145Y137385D01* +X1197995Y137385D01* +X1197995Y123527D02* +X1192145Y123527D01* +X1192145Y126519D02* +X1197995Y126519D01* +X1197995Y129511D02* +X1192145Y129511D01* +X1192145Y132503D02* +X1197995Y132503D01* +X1197995Y135495D02* +X1192145Y135495D01* +X1214495Y141885D02* +X1231345Y141885D01* +X1231345Y136035D01* +X1214495Y136035D01* +X1214495Y141885D01* +X1214495Y139027D02* +X1231345Y139027D01* +X1231345Y154585D02* +X1214495Y154585D01* +X1231345Y154585D02* +X1231345Y148735D01* +X1214495Y148735D01* +X1214495Y154585D01* +X1214495Y151727D02* +X1231345Y151727D01* +X1231345Y167285D02* +X1214495Y167285D01* +X1231345Y167285D02* +X1231345Y161435D01* +X1214495Y161435D01* +X1214495Y167285D01* +X1214495Y164427D02* +X1231345Y164427D01* +X1231345Y179985D02* +X1214495Y179985D01* +X1231345Y179985D02* +X1231345Y174135D01* +X1214495Y174135D01* +X1214495Y179985D01* +X1214495Y177127D02* +X1231345Y177127D01* +X1231345Y192685D02* +X1214495Y192685D01* +X1231345Y192685D02* +X1231345Y186835D01* +X1214495Y186835D01* +X1214495Y192685D01* +X1214495Y189827D02* +X1231345Y189827D01* +X1231345Y205385D02* +X1214495Y205385D01* +X1231345Y205385D02* +X1231345Y199535D01* +X1214495Y199535D01* +X1214495Y205385D01* +X1214495Y202527D02* +X1231345Y202527D01* +X1231345Y218085D02* +X1214495Y218085D01* +X1231345Y218085D02* +X1231345Y212235D01* +X1214495Y212235D01* +X1214495Y218085D01* +X1214495Y215227D02* +X1231345Y215227D01* +X1231345Y230785D02* +X1214495Y230785D01* +X1231345Y230785D02* +X1231345Y224935D01* +X1214495Y224935D01* +X1214495Y230785D01* +X1214495Y227927D02* +X1231345Y227927D01* +X1231345Y243485D02* +X1214495Y243485D01* +X1231345Y243485D02* +X1231345Y237635D01* +X1214495Y237635D01* +X1214495Y243485D01* +X1214495Y240627D02* +X1231345Y240627D01* +X1231345Y256185D02* +X1214495Y256185D01* +X1231345Y256185D02* +X1231345Y250335D01* +X1214495Y250335D01* +X1214495Y256185D01* +X1214495Y253327D02* +X1231345Y253327D01* +X1231345Y268885D02* +X1214495Y268885D01* +X1231345Y268885D02* +X1231345Y263035D01* +X1214495Y263035D01* +X1214495Y268885D01* +X1214495Y266027D02* +X1231345Y266027D01* +X1231345Y281585D02* +X1214495Y281585D01* +X1231345Y281585D02* +X1231345Y275735D01* +X1214495Y275735D01* +X1214495Y281585D01* +X1214495Y278727D02* +X1231345Y278727D01* +X1231345Y294285D02* +X1214495Y294285D01* +X1231345Y294285D02* +X1231345Y288435D01* +X1214495Y288435D01* +X1214495Y294285D01* +X1214495Y291427D02* +X1231345Y291427D01* +X1231345Y306985D02* +X1214495Y306985D01* +X1231345Y306985D02* +X1231345Y301135D01* +X1214495Y301135D01* +X1214495Y306985D01* +X1214495Y304127D02* +X1231345Y304127D01* +D18* +X169100Y324120D02* +X169100Y326120D01* +X169100Y324120D02* +X156100Y324120D01* +X156100Y326120D01* +X169100Y326120D01* +X169100Y326020D02* +X156100Y326020D01* +X169100Y330620D02* +X169100Y332620D01* +X169100Y330620D02* +X156100Y330620D01* +X156100Y332620D01* +X169100Y332620D01* +X169100Y332520D02* +X156100Y332520D01* +X169100Y319620D02* +X169100Y317620D01* +X156100Y317620D01* +X156100Y319620D01* +X169100Y319620D01* +X169100Y319520D02* +X156100Y319520D01* +X169100Y313120D02* +X169100Y311120D01* +X156100Y311120D01* +X156100Y313120D01* +X169100Y313120D01* +X169100Y313020D02* +X156100Y313020D01* +X169100Y337120D02* +X169100Y339120D01* +X169100Y337120D02* +X156100Y337120D01* +X156100Y339120D01* +X169100Y339120D01* +X169100Y339020D02* +X156100Y339020D01* +D19* +X157330Y354620D02* +X164330Y354620D01* +X157330Y354620D02* +X157330Y363620D01* +X164330Y363620D01* +X164330Y354620D01* +X164330Y361270D02* +X157330Y361270D01* +X157330Y286620D02* +X164330Y286620D01* +X157330Y286620D02* +X157330Y295620D01* +X164330Y295620D01* +X164330Y286620D01* +X164330Y293270D02* +X157330Y293270D01* +D20* +X133600Y332370D02* +X133600Y341870D01* +X143100Y341870D01* +X143100Y332370D01* +X133600Y332370D01* +X133600Y341395D02* +X143100Y341395D01* +X133600Y317870D02* +X133600Y308370D01* +X133600Y317870D02* +X143100Y317870D01* +X143100Y308370D01* +X133600Y308370D01* +X133600Y317395D02* +X143100Y317395D01* +D21* +X488999Y199341D03* +D22* +X488999Y186737D03* +D23* +X501608Y186732D03* +D24* +X501602Y199340D03* +D25* +X510805Y181385D02* +X518495Y181385D01* +X518495Y179695D01* +X510805Y179695D01* +X510805Y181385D01* +X510805Y180559D02* +X518495Y180559D01* +X518495Y186385D02* +X510805Y186385D01* +X518495Y186385D02* +X518495Y184695D01* +X510805Y184695D01* +X510805Y186385D01* +X510805Y185559D02* +X518495Y185559D01* +X518495Y191385D02* +X510805Y191385D01* +X518495Y191385D02* +X518495Y189695D01* +X510805Y189695D01* +X510805Y191385D01* +X510805Y190559D02* +X518495Y190559D01* +X518495Y196385D02* +X510805Y196385D01* +X518495Y196385D02* +X518495Y194695D01* +X510805Y194695D01* +X510805Y196385D01* +X510805Y195559D02* +X518495Y195559D01* +X518495Y201385D02* +X510805Y201385D01* +X518495Y201385D02* +X518495Y199695D01* +X510805Y199695D01* +X510805Y201385D01* +X510805Y200559D02* +X518495Y200559D01* +X518495Y206385D02* +X510805Y206385D01* +X518495Y206385D02* +X518495Y204695D01* +X510805Y204695D01* +X510805Y206385D01* +X510805Y205559D02* +X518495Y205559D01* +X479795Y206385D02* +X472105Y206385D01* +X479795Y206385D02* +X479795Y204695D01* +X472105Y204695D01* +X472105Y206385D01* +X472105Y205559D02* +X479795Y205559D01* +X479795Y201385D02* +X472105Y201385D01* +X479795Y201385D02* +X479795Y199695D01* +X472105Y199695D01* +X472105Y201385D01* +X472105Y200559D02* +X479795Y200559D01* +X479795Y196385D02* +X472105Y196385D01* +X479795Y196385D02* +X479795Y194695D01* +X472105Y194695D01* +X472105Y196385D01* +X472105Y195559D02* +X479795Y195559D01* +X479795Y191385D02* +X472105Y191385D01* +X479795Y191385D02* +X479795Y189695D01* +X472105Y189695D01* +X472105Y191385D01* +X472105Y190559D02* +X479795Y190559D01* +X479795Y186385D02* +X472105Y186385D01* +X479795Y186385D02* +X479795Y184695D01* +X472105Y184695D01* +X472105Y186385D01* +X472105Y185559D02* +X479795Y185559D01* +X479795Y181385D02* +X472105Y181385D01* +X479795Y181385D02* +X479795Y179695D01* +X472105Y179695D01* +X472105Y181385D01* +X472105Y180559D02* +X479795Y180559D01* +X483645Y177535D02* +X483645Y169845D01* +X481955Y169845D01* +X481955Y177535D01* +X483645Y177535D01* +X483645Y170709D02* +X481955Y170709D01* +X481955Y171573D02* +X483645Y171573D01* +X483645Y172437D02* +X481955Y172437D01* +X481955Y173301D02* +X483645Y173301D01* +X483645Y174165D02* +X481955Y174165D01* +X481955Y175029D02* +X483645Y175029D01* +X483645Y175893D02* +X481955Y175893D01* +X481955Y176757D02* +X483645Y176757D01* +X488645Y177535D02* +X488645Y169845D01* +X486955Y169845D01* +X486955Y177535D01* +X488645Y177535D01* +X488645Y170709D02* +X486955Y170709D01* +X486955Y171573D02* +X488645Y171573D01* +X488645Y172437D02* +X486955Y172437D01* +X486955Y173301D02* +X488645Y173301D01* +X488645Y174165D02* +X486955Y174165D01* +X486955Y175029D02* +X488645Y175029D01* +X488645Y175893D02* +X486955Y175893D01* +X486955Y176757D02* +X488645Y176757D01* +X493645Y177535D02* +X493645Y169845D01* +X491955Y169845D01* +X491955Y177535D01* +X493645Y177535D01* +X493645Y170709D02* +X491955Y170709D01* +X491955Y171573D02* +X493645Y171573D01* +X493645Y172437D02* +X491955Y172437D01* +X491955Y173301D02* +X493645Y173301D01* +X493645Y174165D02* +X491955Y174165D01* +X491955Y175029D02* +X493645Y175029D01* +X493645Y175893D02* +X491955Y175893D01* +X491955Y176757D02* +X493645Y176757D01* +X498645Y177535D02* +X498645Y169845D01* +X496955Y169845D01* +X496955Y177535D01* +X498645Y177535D01* +X498645Y170709D02* +X496955Y170709D01* +X496955Y171573D02* +X498645Y171573D01* +X498645Y172437D02* +X496955Y172437D01* +X496955Y173301D02* +X498645Y173301D01* +X498645Y174165D02* +X496955Y174165D01* +X496955Y175029D02* +X498645Y175029D01* +X498645Y175893D02* +X496955Y175893D01* +X496955Y176757D02* +X498645Y176757D01* +X503645Y177535D02* +X503645Y169845D01* +X501955Y169845D01* +X501955Y177535D01* +X503645Y177535D01* +X503645Y170709D02* +X501955Y170709D01* +X501955Y171573D02* +X503645Y171573D01* +X503645Y172437D02* +X501955Y172437D01* +X501955Y173301D02* +X503645Y173301D01* +X503645Y174165D02* +X501955Y174165D01* +X501955Y175029D02* +X503645Y175029D01* +X503645Y175893D02* +X501955Y175893D01* +X501955Y176757D02* +X503645Y176757D01* +X508645Y177535D02* +X508645Y169845D01* +X506955Y169845D01* +X506955Y177535D01* +X508645Y177535D01* +X508645Y170709D02* +X506955Y170709D01* +X506955Y171573D02* +X508645Y171573D01* +X508645Y172437D02* +X506955Y172437D01* +X506955Y173301D02* +X508645Y173301D01* +X508645Y174165D02* +X506955Y174165D01* +X506955Y175029D02* +X508645Y175029D01* +X508645Y175893D02* +X506955Y175893D01* +X506955Y176757D02* +X508645Y176757D01* +X508645Y208545D02* +X508645Y216235D01* +X508645Y208545D02* +X506955Y208545D01* +X506955Y216235D01* +X508645Y216235D01* +X508645Y209409D02* +X506955Y209409D01* +X506955Y210273D02* +X508645Y210273D01* +X508645Y211137D02* +X506955Y211137D01* +X506955Y212001D02* +X508645Y212001D01* +X508645Y212865D02* +X506955Y212865D01* +X506955Y213729D02* +X508645Y213729D01* +X508645Y214593D02* +X506955Y214593D01* +X506955Y215457D02* +X508645Y215457D01* +X503645Y216235D02* +X503645Y208545D01* +X501955Y208545D01* +X501955Y216235D01* +X503645Y216235D01* +X503645Y209409D02* +X501955Y209409D01* +X501955Y210273D02* +X503645Y210273D01* +X503645Y211137D02* +X501955Y211137D01* +X501955Y212001D02* +X503645Y212001D01* +X503645Y212865D02* +X501955Y212865D01* +X501955Y213729D02* +X503645Y213729D01* +X503645Y214593D02* +X501955Y214593D01* +X501955Y215457D02* +X503645Y215457D01* +X498645Y216235D02* +X498645Y208545D01* +X496955Y208545D01* +X496955Y216235D01* +X498645Y216235D01* +X498645Y209409D02* +X496955Y209409D01* +X496955Y210273D02* +X498645Y210273D01* +X498645Y211137D02* +X496955Y211137D01* +X496955Y212001D02* +X498645Y212001D01* +X498645Y212865D02* +X496955Y212865D01* +X496955Y213729D02* +X498645Y213729D01* +X498645Y214593D02* +X496955Y214593D01* +X496955Y215457D02* +X498645Y215457D01* +X493645Y216235D02* +X493645Y208545D01* +X491955Y208545D01* +X491955Y216235D01* +X493645Y216235D01* +X493645Y209409D02* +X491955Y209409D01* +X491955Y210273D02* +X493645Y210273D01* +X493645Y211137D02* +X491955Y211137D01* +X491955Y212001D02* +X493645Y212001D01* +X493645Y212865D02* +X491955Y212865D01* +X491955Y213729D02* +X493645Y213729D01* +X493645Y214593D02* +X491955Y214593D01* +X491955Y215457D02* +X493645Y215457D01* +X488645Y216235D02* +X488645Y208545D01* +X486955Y208545D01* +X486955Y216235D01* +X488645Y216235D01* +X488645Y209409D02* +X486955Y209409D01* +X486955Y210273D02* +X488645Y210273D01* +X488645Y211137D02* +X486955Y211137D01* +X486955Y212001D02* +X488645Y212001D01* +X488645Y212865D02* +X486955Y212865D01* +X486955Y213729D02* +X488645Y213729D01* +X488645Y214593D02* +X486955Y214593D01* +X486955Y215457D02* +X488645Y215457D01* +X483645Y216235D02* +X483645Y208545D01* +X481955Y208545D01* +X481955Y216235D01* +X483645Y216235D01* +X483645Y209409D02* +X481955Y209409D01* +X481955Y210273D02* +X483645Y210273D01* +X483645Y211137D02* +X481955Y211137D01* +X481955Y212001D02* +X483645Y212001D01* +X483645Y212865D02* +X481955Y212865D01* +X481955Y213729D02* +X483645Y213729D01* +X483645Y214593D02* +X481955Y214593D01* +X481955Y215457D02* +X483645Y215457D01* +D26* +X722570Y142000D02* +X726470Y142000D01* +X722570Y142000D02* +X722570Y146400D01* +X726470Y146400D01* +X726470Y142000D01* +X726470Y143995D02* +X722570Y143995D01* +X722570Y145990D02* +X726470Y145990D01* +X736570Y142000D02* +X740470Y142000D01* +X736570Y142000D02* +X736570Y146400D01* +X740470Y146400D01* +X740470Y142000D01* +X740470Y143995D02* +X736570Y143995D01* +X736570Y145990D02* +X740470Y145990D01* +X740470Y133000D02* +X736570Y133000D01* +X736570Y137400D01* +X740470Y137400D01* +X740470Y133000D01* +X740470Y134995D02* +X736570Y134995D01* +X736570Y136990D02* +X740470Y136990D01* +X726470Y133000D02* +X722570Y133000D01* +X722570Y137400D01* +X726470Y137400D01* +X726470Y133000D01* +X726470Y134995D02* +X722570Y134995D01* +X722570Y136990D02* +X726470Y136990D01* +D27* +X837806Y57798D02* +X851294Y57798D01* +X851294Y55486D01* +X837806Y55486D01* +X837806Y57798D01* +X837806Y56669D02* +X851294Y56669D01* +X851294Y64402D02* +X837806Y64402D01* +X851294Y64402D02* +X851294Y62090D01* +X837806Y62090D01* +X837806Y64402D01* +X837806Y63273D02* +X851294Y63273D01* +X851294Y70752D02* +X837806Y70752D01* +X851294Y70752D02* +X851294Y68440D01* +X837806Y68440D01* +X837806Y70752D01* +X837806Y69623D02* +X851294Y69623D01* +X851294Y77356D02* +X837806Y77356D01* +X851294Y77356D02* +X851294Y75044D01* +X837806Y75044D01* +X837806Y77356D01* +X837806Y76227D02* +X851294Y76227D01* +X851294Y83960D02* +X837806Y83960D01* +X851294Y83960D02* +X851294Y81648D01* +X837806Y81648D01* +X837806Y83960D01* +X837806Y82831D02* +X851294Y82831D01* +X851294Y90310D02* +X837806Y90310D01* +X851294Y90310D02* +X851294Y87998D01* +X837806Y87998D01* +X837806Y90310D01* +X837806Y89181D02* +X851294Y89181D01* +X851294Y96914D02* +X837806Y96914D01* +X851294Y96914D02* +X851294Y94602D01* +X837806Y94602D01* +X837806Y96914D01* +X837806Y95785D02* +X851294Y95785D01* +X792874Y96914D02* +X779386Y96914D01* +X792874Y96914D02* +X792874Y94602D01* +X779386Y94602D01* +X779386Y96914D01* +X779386Y95785D02* +X792874Y95785D01* +X792874Y90310D02* +X779386Y90310D01* +X792874Y90310D02* +X792874Y87998D01* +X779386Y87998D01* +X779386Y90310D01* +X779386Y89181D02* +X792874Y89181D01* +X792874Y83960D02* +X779386Y83960D01* +X792874Y83960D02* +X792874Y81648D01* +X779386Y81648D01* +X779386Y83960D01* +X779386Y82831D02* +X792874Y82831D01* +X792874Y77356D02* +X779386Y77356D01* +X792874Y77356D02* +X792874Y75044D01* +X779386Y75044D01* +X779386Y77356D01* +X779386Y76227D02* +X792874Y76227D01* +X792874Y70752D02* +X779386Y70752D01* +X792874Y70752D02* +X792874Y68440D01* +X779386Y68440D01* +X779386Y70752D01* +X779386Y69623D02* +X792874Y69623D01* +X792874Y64402D02* +X779386Y64402D01* +X792874Y64402D02* +X792874Y62090D01* +X779386Y62090D01* +X779386Y64402D01* +X779386Y63273D02* +X792874Y63273D01* +X792874Y57798D02* +X779386Y57798D01* +X792874Y57798D02* +X792874Y55486D01* +X779386Y55486D01* +X779386Y57798D01* +X779386Y56669D02* +X792874Y56669D01* +D11* +X592650Y45010D02* +X585150Y45010D01* +X585150Y51510D01* +X592650Y51510D01* +X592650Y45010D01* +X592650Y48335D02* +X585150Y48335D01* +X601150Y45010D02* +X608650Y45010D01* +X601150Y45010D02* +X601150Y51510D01* +X608650Y51510D01* +X608650Y45010D01* +X608650Y48335D02* +X601150Y48335D01* +X714690Y52630D02* +X722190Y52630D01* +X714690Y52630D02* +X714690Y59130D01* +X722190Y59130D01* +X722190Y52630D01* +X722190Y55955D02* +X714690Y55955D01* +X730690Y52630D02* +X738190Y52630D01* +X730690Y52630D02* +X730690Y59130D01* +X738190Y59130D01* +X738190Y52630D01* +X738190Y55955D02* +X730690Y55955D01* +X692686Y301960D02* +X689516Y308757D01* +X695406Y311504D01* +X698576Y304707D01* +X692686Y301960D01* +X691135Y305285D02* +X698306Y305285D01* +X696756Y308610D02* +X689585Y308610D01* +X696277Y294257D02* +X699447Y287460D01* +X696277Y294257D02* +X702167Y297004D01* +X705337Y290207D01* +X699447Y287460D01* +X697896Y290785D02* +X705067Y290785D01* +X703517Y294110D02* +X696346Y294110D01* +X764542Y304409D02* +X767712Y311206D01* +X773602Y308459D01* +X770432Y301662D01* +X764542Y304409D01* +X764812Y304987D02* +X771983Y304987D01* +X773533Y308312D02* +X766362Y308312D01* +X760950Y296705D02* +X757780Y289908D01* +X760950Y296705D02* +X766840Y293958D01* +X763670Y287161D01* +X757780Y289908D01* +X758050Y290486D02* +X765221Y290486D01* +X766771Y293811D02* +X759600Y293811D01* +D10* +X841322Y246882D02* +X844898Y246882D01* +X841322Y246882D02* +X841322Y250958D01* +X844898Y250958D01* +X844898Y246882D01* +X844898Y248711D02* +X841322Y248711D01* +X841322Y250540D02* +X844898Y250540D01* +X851822Y246882D02* +X855398Y246882D01* +X851822Y246882D02* +X851822Y250958D01* +X855398Y250958D01* +X855398Y246882D01* +X855398Y248711D02* +X851822Y248711D01* +X851822Y250540D02* +X855398Y250540D01* +X852518Y259582D02* +X848942Y259582D01* +X848942Y263658D01* +X852518Y263658D01* +X852518Y259582D01* +X852518Y261411D02* +X848942Y261411D01* +X848942Y263240D02* +X852518Y263240D01* +X859442Y259582D02* +X863018Y259582D01* +X859442Y259582D02* +X859442Y263658D01* +X863018Y263658D01* +X863018Y259582D01* +X863018Y261411D02* +X859442Y261411D01* +X859442Y263240D02* +X863018Y263240D01* +D11* +X514670Y107390D02* +X507170Y107390D01* +X514670Y107390D02* +X514670Y100890D01* +X507170Y100890D01* +X507170Y107390D01* +X507170Y104215D02* +X514670Y104215D01* +X498670Y107390D02* +X491170Y107390D01* +X498670Y107390D02* +X498670Y100890D01* +X491170Y100890D01* +X491170Y107390D01* +X491170Y104215D02* +X498670Y104215D01* +D28* +X254130Y358150D02* +X254130Y360750D01* +X267730Y360750D01* +X267730Y358150D01* +X254130Y358150D01* +X254130Y359480D02* +X267730Y359480D01* +X254130Y354250D02* +X254130Y351650D01* +X254130Y354250D02* +X267730Y354250D01* +X267730Y351650D01* +X254130Y351650D01* +X254130Y352980D02* +X267730Y352980D01* +X254130Y347750D02* +X254130Y345150D01* +X254130Y347750D02* +X267730Y347750D01* +X267730Y345150D01* +X254130Y345150D01* +X254130Y346480D02* +X267730Y346480D01* +X254130Y341250D02* +X254130Y338650D01* +X254130Y341250D02* +X267730Y341250D01* +X267730Y338650D01* +X254130Y338650D01* +X254130Y339980D02* +X267730Y339980D01* +X254130Y334750D02* +X254130Y332150D01* +X254130Y334750D02* +X267730Y334750D01* +X267730Y332150D01* +X254130Y332150D01* +X254130Y333480D02* +X267730Y333480D01* +X254130Y328250D02* +X254130Y325650D01* +X254130Y328250D02* +X267730Y328250D01* +X267730Y325650D01* +X254130Y325650D01* +X254130Y326980D02* +X267730Y326980D01* +X254130Y321750D02* +X254130Y319150D01* +X254130Y321750D02* +X267730Y321750D01* +X267730Y319150D01* +X254130Y319150D01* +X254130Y320480D02* +X267730Y320480D01* +X254130Y315250D02* +X254130Y312650D01* +X254130Y315250D02* +X267730Y315250D01* +X267730Y312650D01* +X254130Y312650D01* +X254130Y313980D02* +X267730Y313980D01* +X254130Y308750D02* +X254130Y306150D01* +X254130Y308750D02* +X267730Y308750D01* +X267730Y306150D01* +X254130Y306150D01* +X254130Y307480D02* +X267730Y307480D01* +X254130Y302250D02* +X254130Y299650D01* +X254130Y302250D02* +X267730Y302250D01* +X267730Y299650D01* +X254130Y299650D01* +X254130Y300980D02* +X267730Y300980D01* +X326630Y302250D02* +X326630Y299650D01* +X326630Y302250D02* +X340230Y302250D01* +X340230Y299650D01* +X326630Y299650D01* +X326630Y300980D02* +X340230Y300980D01* +X326630Y306150D02* +X326630Y308750D01* +X340230Y308750D01* +X340230Y306150D01* +X326630Y306150D01* +X326630Y307480D02* +X340230Y307480D01* +X326630Y312650D02* +X326630Y315250D01* +X340230Y315250D01* +X340230Y312650D01* +X326630Y312650D01* +X326630Y313980D02* +X340230Y313980D01* +X326630Y319150D02* +X326630Y321750D01* +X340230Y321750D01* +X340230Y319150D01* +X326630Y319150D01* +X326630Y320480D02* +X340230Y320480D01* +X326630Y325650D02* +X326630Y328250D01* +X340230Y328250D01* +X340230Y325650D01* +X326630Y325650D01* +X326630Y326980D02* +X340230Y326980D01* +X326630Y332150D02* +X326630Y334750D01* +X340230Y334750D01* +X340230Y332150D01* +X326630Y332150D01* +X326630Y333480D02* +X340230Y333480D01* +X326630Y338650D02* +X326630Y341250D01* +X340230Y341250D01* +X340230Y338650D01* +X326630Y338650D01* +X326630Y339980D02* +X340230Y339980D01* +X326630Y345150D02* +X326630Y347750D01* +X340230Y347750D01* +X340230Y345150D01* +X326630Y345150D01* +X326630Y346480D02* +X340230Y346480D01* +X326630Y351650D02* +X326630Y354250D01* +X340230Y354250D01* +X340230Y351650D01* +X326630Y351650D01* +X326630Y352980D02* +X340230Y352980D01* +X326630Y358150D02* +X326630Y360750D01* +X340230Y360750D01* +X340230Y358150D01* +X326630Y358150D01* +X326630Y359480D02* +X340230Y359480D01* +D10* +X407322Y362718D02* +X410898Y362718D01* +X410898Y358642D01* +X407322Y358642D01* +X407322Y362718D01* +X407322Y360471D02* +X410898Y360471D01* +X410898Y362300D02* +X407322Y362300D01* +X400398Y362718D02* +X396822Y362718D01* +X400398Y362718D02* +X400398Y358642D01* +X396822Y358642D01* +X396822Y362718D01* +X396822Y360471D02* +X400398Y360471D01* +X400398Y362300D02* +X396822Y362300D01* +X407322Y352558D02* +X410898Y352558D01* +X410898Y348482D01* +X407322Y348482D01* +X407322Y352558D01* +X407322Y350311D02* +X410898Y350311D01* +X410898Y352140D02* +X407322Y352140D01* +X400398Y352558D02* +X396822Y352558D01* +X400398Y352558D02* +X400398Y348482D01* +X396822Y348482D01* +X396822Y352558D01* +X396822Y350311D02* +X400398Y350311D01* +X400398Y352140D02* +X396822Y352140D01* +D29* +X229348Y303078D02* +X229348Y295602D01* +X219372Y295602D01* +X219372Y303078D01* +X229348Y303078D01* +X229348Y299426D02* +X219372Y299426D01* +X207348Y303078D02* +X207348Y295602D01* +X197372Y295602D01* +X197372Y303078D01* +X207348Y303078D01* +X207348Y299426D02* +X197372Y299426D01* +X207348Y311602D02* +X207348Y319078D01* +X207348Y311602D02* +X197372Y311602D01* +X197372Y319078D01* +X207348Y319078D01* +X207348Y315426D02* +X197372Y315426D01* +X229348Y319078D02* +X229348Y311602D01* +X219372Y311602D01* +X219372Y319078D01* +X229348Y319078D01* +X229348Y315426D02* +X219372Y315426D01* +D10* +X189998Y303878D02* +X189998Y300302D01* +X185922Y300302D01* +X185922Y303878D01* +X189998Y303878D01* +X189998Y302131D02* +X185922Y302131D01* +X189998Y310802D02* +X189998Y314378D01* +X189998Y310802D02* +X185922Y310802D01* +X185922Y314378D01* +X189998Y314378D01* +X189998Y312631D02* +X185922Y312631D01* +X236722Y314378D02* +X236722Y310802D01* +X236722Y314378D02* +X240798Y314378D01* +X240798Y310802D01* +X236722Y310802D01* +X236722Y312631D02* +X240798Y312631D01* +X236722Y303878D02* +X236722Y300302D01* +X236722Y303878D02* +X240798Y303878D01* +X240798Y300302D01* +X236722Y300302D01* +X236722Y302131D02* +X240798Y302131D01* +D11* +X540310Y85690D02* +X546810Y85690D01* +X546810Y75190D01* +X540310Y75190D01* +X540310Y85690D01* +X540310Y78515D02* +X546810Y78515D01* +X546810Y81840D02* +X540310Y81840D01* +X540310Y85165D02* +X546810Y85165D01* +X537310Y107690D02* +X530810Y107690D01* +X537310Y107690D02* +X537310Y97190D01* +X530810Y97190D01* +X530810Y107690D01* +X530810Y100515D02* +X537310Y100515D01* +X537310Y103840D02* +X530810Y103840D01* +X530810Y107165D02* +X537310Y107165D01* +X549810Y107690D02* +X556310Y107690D01* +X556310Y97190D01* +X549810Y97190D01* +X549810Y107690D01* +X549810Y100515D02* +X556310Y100515D01* +X556310Y103840D02* +X549810Y103840D01* +X549810Y107165D02* +X556310Y107165D01* +X700330Y95570D02* +X700330Y88070D01* +X700330Y95570D02* +X706830Y95570D01* +X706830Y88070D01* +X700330Y88070D01* +X700330Y91395D02* +X706830Y91395D01* +X706830Y94720D02* +X700330Y94720D01* +X700330Y79570D02* +X700330Y72070D01* +X700330Y79570D02* +X706830Y79570D01* +X706830Y72070D01* +X700330Y72070D01* +X700330Y75395D02* +X706830Y75395D01* +X706830Y78720D02* +X700330Y78720D01* +X1261550Y181050D02* +X1269050Y181050D01* +X1269050Y174550D01* +X1261550Y174550D01* +X1261550Y181050D01* +X1261550Y177875D02* +X1269050Y177875D01* +X1253050Y181050D02* +X1245550Y181050D01* +X1253050Y181050D02* +X1253050Y174550D01* +X1245550Y174550D01* +X1245550Y181050D01* +X1245550Y177875D02* +X1253050Y177875D01* +X1261550Y132790D02* +X1269050Y132790D01* +X1269050Y126290D01* +X1261550Y126290D01* +X1261550Y132790D01* +X1261550Y129615D02* +X1269050Y129615D01* +X1253050Y132790D02* +X1245550Y132790D01* +X1253050Y132790D02* +X1253050Y126290D01* +X1245550Y126290D01* +X1245550Y132790D01* +X1245550Y129615D02* +X1253050Y129615D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E.brd b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E.brd new file mode 100644 index 0000000000..3bd77f29fd --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E.brd @@ -0,0 +1,10016 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +CH2 +GND +PWR +CH1 +GND + + + + +PWR + + +RESET + + + + +BAAAHS BRAIN +>PART_NUMBER + + + + + + + + + + + + + + +PLATED +SLOTS (x2) + + + + + + + +- +>REV + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + +Chip, 1.68 X 0.80 X 0.95 mm body +<p>Chip package with body size 1.68 X 0.80 X 0.95 mm</p> + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + +<B>DIODE</B> + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + +<B>DIODE</B> + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +<b>SOT-23</b> + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + +Single-row, 10-pin Pin Header (Male) Straight, 2.54 mm (0.10 in) col pitch, 5.84 mm mating length, 25.40 X 2.54 X 8.38 mm body +<p>Single-row (1X10), 10-pin Pin Header (Male) Straight package with 2.54 mm (0.10 in) col pitch, 0.64 mm lead width, 3.00 mm tail length and 5.84 mm mating length with overall size 25.40 X 2.54 X 8.38 mm, pin pattern - clockwise from top left</p> + + + + + +Single-row, 2-pin Pin Header (Male) Straight, 2.54 mm (0.10 in) col pitch, 5.84 mm mating length, 5.08 X 2.54 X 8.38 mm body +<p>Single-row (1X2), 2-pin Pin Header (Male) Straight package with 2.54 mm (0.10 in) col pitch, 0.64 mm lead width, 3.00 mm tail length and 5.84 mm mating length with overall size 5.08 X 2.54 X 8.38 mm, pin pattern - clockwise from top left</p> + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + +20-SOP, 0.65 mm pitch, 7.80 mm span, 7.20 X 5.45 X 2.00 mm body +<p>20-pin SOP package with 0.65 mm pitch, 7.80 mm span with body size 7.20 X 5.45 X 2.00 mm</p> + + + + + +24-QFN, 0.50 mm pitch, 4.00 X 4.00 X 1.00 mm body, 2.50 X 3.00 mm thermal pad +<p>24-pin QFN package with 0.50 mm pitch with body size 4.00 X 4.00 X 1.00 mm and thermal pad size 2.50 X 3.00 mm</p> + + + + + + + + + +>NAME +>NAME +>VALUE + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Solder Mask - Top +Silkscreen - Top +Copper Foil - Component Layer +Prepreg [0.12mm] +Copper Foil - Component Layer +Solder Mask - Bottom +1.6mm +Silkscreen - Bottom +Core [1.2mm] +Prepreg [0.12mm] +Internal Power Plane +Internal Ground Plane +0.12mm +0.12mm +1.2mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(unless otherwise specified) +Inches (in) are the controlling dimensions for the drawings and +1. +Fabricate PCB in accordance with IPC-6012A, Class 2; per IPC-6011 +2. +Materials: +Laminate and Prepreg (B-stage) to be in accordance with IPC-4101/23 +3. +All holes shall be located within 0.008" (0.2mm) Diameter of True +4. +5. +6. +All exposed conductive pattern areas not covered with solder mask +Finish: +Apply liquid photo imageable solder mask (color black) per +Silkscreen shall be white, permanent, organic, non-conductive ink. +Test requirements: +Marking: +Board part number and revision letter is rendered in etch on the +UL logo, manufacturer's identification and date code letter shall +7. +100% netlist electrical verification using customer supplied +HiPot test all prepreg/core material less than 0.004" (0.1mm) +Tolerances: +Warp or twist of board shall not exceed 1%. +Conductor widths and spacing shall be within ± 0.001" (0.03mm) +Remove all burrs and break sharp edges 0.015" (0.4mm) maximum. +Surface Mount Pad plating must be flat to a maximum of 0.003" (0.08mm) +The following guidelines must be adhered to in order to maintain +Thieving: +Supplier may add thieving to compensate for low copper density +0.06" (1.5mm) maximum radius on any inside corner. +Thieving to card edge spacing 0.100" (2.5mm) minimum. +Thieving to Fiducial spacing 0.200" (5mm) minimum. +Thieving to non-plated through holes 0.200" (5mm) minimum. +Thieving to all other features 0.100" (2.5mm) minimum. +There shall be no exposed thieving in any areas free of +8. +9. +Only solder mask images that are the same size as the component +supplied data. Millimeters (mm) dimensions are for reference only. +using customer supplied data files. +Copper foil to be in accordance with IPC-MF-150. Unless otherwise +or IPC-4101/24. Material must meet UL 94V-0 flammability rating. +specified, all copper weight for inner layers to be 18um (0.5 oz) +considered "finished". +Position. Layer to layer registration shall be within 0.005" (0.125mm). +or other plating shall be Electroless Nickel Immersion Gold (ENIG) +pads may be enlarged and shall not be enlarged beyond 0.003" (0.08mm) +per side or 0.006" (0.15mm) overall. All other solder mask +There shall be no silkscreen on any solderable component pad. +bottom side of the board. Revision letter shall be identical to +be rendered in etch on the bottom side of the board approximately +IPC-D-356 netlist for opens and shorts. All nets shall be accessed +thick at 500 Vdc for 30 seconds minimum. Test should be done at +electrical and mechanical integrity of the design: +solder mask or internal copper plane. +NOTES: +and for outer layers 35um (1 oz). Copper weight shall be +A) +B) +plated per IPC-4552. +A) +B) +IPC-SM-840, class H, to both sides of the board over bare copper. +Via holes covered with solder mask do not need to be plugged. +images shall not be enlarged. +C) +A) +B) +this drawing. +where shown. +A) +B) +simultaneously or as otherwise mutually agreed upon. +the layer stage and again prior to packaging. +A) +B) +C) +D) +E) +of Gerber data. +above board surface. +A) +B) +areas on this design. +a. +b. +c. +e. +f. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Standard titleblock for Electrical Alchemy layout drawings. Should be placed on any layout drawing before release. + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Revision: +Title: +Date: +>PART_NUMBER +>ENGINEER +>DATE +>REV +PCB FABRICATION DETAILS +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Revision: +Title: +Date: +>PART_NUMBER +>ENGINEER +>DATE +>REV +TOP PCB ASSEMBLY +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +Oscillator Corner Concave, 3.30 X 2.60 X 0.90 mm body +<p>Oscillator Corner Concave package with body size 3.30 X 2.60 X 0.90 mm</p> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>EAGLE Design Rules</b> +<p> +Die Standard-Design-Rules sind so gewählt, dass sie für +die meisten Anwendungen passen. Sollte ihre Platine +besondere Anforderungen haben, treffen Sie die erforderlichen +Einstellungen hier und speichern die Design Rules unter +einem neuen Namen ab. +<b>EAGLE Design Rules</b> +<p> +The default Design Rules have been set to cover +a wide range of applications. Your particular design +may have different requirements, so please make the +necessary adjustments and save your customized +design rules under a new name. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports Fusion synchronisation. +This feature will not be available in this version and saving +the document will break the link to the Fusion PCB feature. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.4, EAGLE supports the overriding of 3D packages +in schematics and board files. Those overridden 3d packages +will not be understood (or retained) with this version. + + + diff --git a/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E.sch b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E.sch new file mode 100644 index 0000000000..7f06cd4636 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E.sch @@ -0,0 +1,57027 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Engineer: +Part Number: +Rev: +Title: +Date: +Sheet: +>SHEET +>ENGINEER +>PART_NUMBER +>REV +>DATE +ELECTRICAL CIRCUIT SCHEMATIC +Part Name: +>PART_NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ++3V3 + + + + + + + + + + + + ++5V0 + + + + + + +VBUS + + + + + + +VLED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>CAPACITOR</b><p> + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>CAPACITOR</b><p> + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +type 0617, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>RESISTOR</b><p> +type 0617, grid 22.5 mm + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<B>DIODE</B> + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + +<b>SMA</b> CASE 403D-02<p> +Source: http://www.onsemi.com/pub_link/Collateral/MBRA340T3-D.PDF + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +<B>DIODE</B> + + + + + + + + + + +<b>SMA</b> CASE 403D-02<p> +Source: http://www.onsemi.com/pub_link/Collateral/MBRA340T3-D.PDF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +Vishay Dale - Low Profile, High Current IHLP Inductor + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +>NAME +>VALUE +>NAME + + + + + + +>NAME +>VALUE +>NAME + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + +<b>RESISTOR</b><p> +chip + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + +>NAME +>VAL +>NAME + + + + +>NAME +>NAME + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +<b>RESISTOR</b> + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Vishay Dale - Low Profile, High Current IHLP Inductor + + + + + + + + + + + + + + + +Chip, 1.00 X 0.50 X 0.50 mm body +<p>Chip package with body size 1.00 X 0.50 X 0.50 mm</p> + + + + + +Chip, 1.68 X 0.80 X 0.95 mm body +<p>Chip package with body size 1.68 X 0.80 X 0.95 mm</p> + + + + + +Chip, 2.00 X 1.25 X 1.45 mm body +<p>Chip package with body size 2.00 X 1.25 X 1.45 mm</p> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Chip, 3.20 X 1.60 X 1.30 mm body +<p>Chip package with body size 3.20 X 1.60 X 1.30 mm</p> + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +General purpose ferrite bead filter elements + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +General purpose power inductors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + +<B>DIODE</B> + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + +<B>DIODE</B> + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME + + + + + + + + +Momentary Pushbutton Tact Switch - 4 Terminal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>SOT-23</b> + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +<b>SOT-23</b> + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +General Purpose Bipolar NPN Transistors + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IC: SoC; GPIO, I2C, I2S, IR, SD, SDIO, SPI, UART; 2.7÷3.6VDC; 20dBm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + +2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring. + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + +>NAME +>NAME + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Single-row, 10-pin Pin Header (Male) Straight, 2.54 mm (0.10 in) col pitch, 5.84 mm mating length, 25.40 X 2.54 X 8.38 mm body +<p>Single-row (1X10), 10-pin Pin Header (Male) Straight package with 2.54 mm (0.10 in) col pitch, 0.64 mm lead width, 3.00 mm tail length and 5.84 mm mating length with overall size 25.40 X 2.54 X 8.38 mm, pin pattern - clockwise from top left</p> + + + + + + + + + + + + + + + +Single-row, 2-pin Pin Header (Male) Straight, 2.54 mm (0.10 in) col pitch, 5.84 mm mating length, 5.08 X 2.54 X 8.38 mm body +<p>Single-row (1X2), 2-pin Pin Header (Male) Straight package with 2.54 mm (0.10 in) col pitch, 0.64 mm lead width, 3.00 mm tail length and 5.84 mm mating length with overall size 5.08 X 2.54 X 8.38 mm, pin pattern - clockwise from top left</p> + + + + + + + + + + + + + + + + + + + + +2mm SMD side-entry connector. tDocu layer indicates the actual physical plastic housing. +/- indicate SparkFun standard batteries and wiring. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +MICRO USB +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 TX+ +2 TX- +3 RX+ +6 RX- +4 +5 +7 +8 +>NAME +>VALUE +75R +75R +75R +75R +Shield +Yellow Speed +Green Link + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Wiznet RB1-125BAG1A RJ45 1x1 Tab Down Through Hole + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>PIN HEADER</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>Shrink Small Outline Package</b><p> +package type SS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + +20-SOP, 0.65 mm pitch, 7.80 mm span, 7.20 X 5.45 X 2.00 mm body +<p>20-pin SOP package with 0.65 mm pitch, 7.80 mm span with body size 7.20 X 5.45 X 2.00 mm</p> + + + + + +24-QFN, 0.50 mm pitch, 4.00 X 4.00 X 1.00 mm body, 2.50 X 3.00 mm thermal pad +<p>24-pin QFN package with 0.50 mm pitch with body size 4.00 X 4.00 X 1.00 mm and thermal pad size 2.50 X 3.00 mm</p> + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + +LAN8720A Series 3.3 V RMII 10/100 Ethernet Transceiver Surface Mount - QFN-24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +310070026 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME +>VALUE + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +>NAME +>NAME +>VALUE + + + + + + + + + + + + + + + +<b>CHIPLED</b><p> +Source: http://www.osram.convergy.de/ ... LG_LY N971.pdf + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + +<b>RESISTOR</b><p> +chip + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + +<B>LED</B><p> +3 mm, round + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + +<B>LED</B><p> +5 mm, round + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<b>CHIPLED</b><p> +Source: http://www.osram.convergy.de/ ... LG_LY N971.pdf + + + + + + + + + + +<b>RESISTOR</b><p> +chip + + + + + +<B>LED</B><p> +3 mm, round + + + + + +<B>LED</B><p> +5 mm, round + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +R +G +B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + + + + + + + + + + +HELI Colour; 1.6X1.6MM LOW CURRENT RGB SMD LED + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + +Oscillator Corner Concave, 3.30 X 2.60 X 0.90 mm body +<p>Oscillator Corner Concave package with body size 3.30 X 2.60 X 0.90 mm</p> + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE + + + + + + + +<b>Resonator</b> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>NAME +>VALUE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>NAME +>VALUE +>NAME + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +>Name +>Value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Normal booting & resetting requires +IO0 pulled up +IO2 pulled down +MTDI IO12 down +MTDO IO15 up +IO5 up +These pins are connected +to the on-module flash + + + + + + + + + + + + + + + + + + + +CONTROLLER +LEVEL SHIFTER +USB UART +5V SUPPLY +3.3V POWER SUPPLY +EXPANSION HEADER +LED INTERFACE +USER INTERFACE +VOLTAGE MONITOR +LED OUT +LED IN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +These 3 pullup +configure autonegotiation +ETHERNET PYH AND JACK + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Since Version 6.2.2 text objects can contain more than one line, +which will not be processed correctly with this version. + + +Since Version 8.2, EAGLE supports online libraries. The ids +of those online libraries will not be understood (or retained) +with this version. + + +Since Version 8.3, EAGLE supports URNs for individual library +assets (packages, symbols, and devices). The URNs of those assets +will not be understood (or retained) with this version. + + +Since Version 8.3, EAGLE supports the association of 3D packages +with devices in libraries, schematics, and board files. Those 3D +packages will not be understood (or retained) with this version. + + +Since Version 9.4, EAGLE supports the overriding of 3D packages +in schematics and board files. Those overridden 3d packages +will not be understood (or retained) with this version. + + +Since Version 9.0, EAGLE supports the align property for labels. +Labels in schematic will not be understood with this version. Update EAGLE to the latest version +for full support of labels. + + + diff --git a/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E_GerberViewer.cuprumcam b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E_GerberViewer.cuprumcam new file mode 100644 index 0000000000..b6114e5399 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01-E_GerberViewer.cuprumcam @@ -0,0 +1,569 @@ + + + + + displayUnitsMetric + + grid.multiplier + 10 + grid.visible + + grid.xStep + 1.4173199999999997 + grid.yStep + 1.417322834645669 + layers + + + bookmark + + Ym9va9QDAAAAAAQQMAAAAKBBcY3Nu4bv3PrNUE7Hw9Wn+bwTZG51 + W2GnvNVvAxco0AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACAA + AAABAQAAQkFBQUhTLUJSTjAxLUVfY29wcGVyX3RvcF9sMS5nYnIo + AAAAAQYAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAIAAAACYAAAA + qAAAALgAAAAIAAAABAMAAJoqBgAAAAAACAAAAAQDAADYXwkAAAAA + AAgAAAAEAwAAtcrHAQAAAAAIAAAABAMAAIhqSgICAAAACAAAAAQD + AABxcUoCAgAAAAgAAAAEAwAAqnalAwIAAAAIAAAABAMAAF9ZwAMC + AAAACAAAAAQDAAB1WcADAgAAAAgAAAAEAwAAVlTGAwIAAAAIAAAA + BAMAAG5UxgMCAAAAKAAAAAEGAAAQAQAAIAEAADABAABAAQAAUAEA + AGABAABwAQAAgAEAAJABAACgAQAACAAAAAAEAABBwWLpsOhH0xgA + AAABAgAAAQAAAAAAAAAPAAAAAAAAAAAAAAAAAAAACAAAAAQDAAAI + AAAAAAAAAAQAAAADAwAA9QEAAAgAAAABCQAAZmlsZTovLy8MAAAA + AQEAAE1hY2ludG9zaCBIRAgAAAAEAwAAALBgbnQAAAAIAAAAAAQA + AEG70yrhAAAAJAAAAAEBAABFMzcxQTE2MS1CNUU3LTNFNUUtOUI5 + RS0zMzNFNzUyNTRDRDQYAAAAAQIAAIEAAAABAAAA7xMAAAEAAAAA + AAAAAAAAAAEAAAABAQAALwAAAAAAAAABBQAAzAAAAP7///8BAAAA + AAAAABAAAAAEEAAA4AAAAAAAAAAFEAAAsAEAAAAAAAAQEAAA8AEA + AAAAAABAEAAA4AEAAAAAAAACIAAAvAIAAAAAAAAFIAAALAIAAAAA + AAAQIAAAPAIAAAAAAAARIAAAcAIAAAAAAAASIAAAUAIAAAAAAAAT + IAAAYAIAAAAAAAAgIAAAnAIAAAAAAAAwIAAAyAIAAAAAAAABwAAA + EAIAAAAAAAARwAAAIAAAAAAAAAASwAAAIAIAAAAAAAAQ0AAABAAA + AAAAAAA= + + + + bookmark + + Ym9va9ADAAAAAAQQMAAAACLuhLyTcmyL5LEDWovO+PLWuvBoLoES + WT8SY9DRL+nPzAIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAABoA + AAABAQAAQkFBQUhTLUJSTjAxLUVfcHJvZmlsZS5nYnIAACgAAAAB + BgAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAgAAAAJgAAACoAAAA + uAAAAAgAAAAEAwAAmioGAAAAAAAIAAAABAMAANhfCQAAAAAACAAA + AAQDAAC1yscBAAAAAAgAAAAEAwAAiGpKAgIAAAAIAAAABAMAAHFx + SgICAAAACAAAAAQDAACqdqUDAgAAAAgAAAAEAwAAX1nAAwIAAAAI + AAAABAMAAHVZwAMCAAAACAAAAAQDAABWVMYDAgAAAAgAAAAEAwAA + clTGAwIAAAAoAAAAAQYAAAwBAAAcAQAALAEAADwBAABMAQAAXAEA + AGwBAAB8AQAAjAEAAJwBAAAIAAAAAAQAAEHBYumw8JxLGAAAAAEC + AAABAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAIAAAABAMAAAgAAAAA + AAAABAAAAAMDAAD1AQAACAAAAAEJAABmaWxlOi8vLwwAAAABAQAA + TWFjaW50b3NoIEhECAAAAAQDAAAAsGBudAAAAAgAAAAABAAAQbvT + KuEAAAAkAAAAAQEAAEUzNzFBMTYxLUI1RTctM0U1RS05QjlFLTMz + M0U3NTI1NENENBgAAAABAgAAgQAAAAEAAADvEwAAAQAAAAAAAAAA + AAAAAQAAAAEBAAAvAAAAAAAAAAEFAADMAAAA/v///wEAAAAAAAAA + EAAAAAQQAADcAAAAAAAAAAUQAACsAQAAAAAAABAQAADsAQAAAAAA + AEAQAADcAQAAAAAAAAIgAAC4AgAAAAAAAAUgAAAoAgAAAAAAABAg + AAA4AgAAAAAAABEgAABsAgAAAAAAABIgAABMAgAAAAAAABMgAABc + AgAAAAAAACAgAACYAgAAAAAAADAgAADEAgAAAAAAAAHAAAAMAgAA + AAAAABHAAAAgAAAAAAAAABLAAAAcAgAAAAAAABDQAAAEAAAAAAAA + AA== + + + + bookmark + + Ym9va9gDAAAAAAQQMAAAAJXweNIG9unSrRagYr0tmZZ/Mivi7MzV + na2CEcGRn3Q41AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACQA + AAABAQAAQkFBQUhTLUJSTjAxLUVfc29sZGVybWFza19ib3R0b20u + Z2JyKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAAB0VMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDw + 74cYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + + + bookmark + + Ym9va9gDAAAAAAQQMAAAAKSjwkLqksIgXTbH/5AWgjpxiyzc3vVO + kYbtYy072CZ41AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACEA + AAABAQAAQkFBQUhTLUJSTjAxLUVfc2lsa3NjcmVlbl90b3AuZ2Jy + AAAAKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAAB3VMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDx + R1YYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + + + bookmark + + Ym9va9wDAAAAAAQQMAAAAJSd7kylg+zTYzJzUIQCEcLjVfftuJS7 + HHSJS3UZLvcA2AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACUA + AAABAQAAQkFBQUhTLUJSTjAxLUVfc29sZGVycGFzdGVfYm90dG9t + LmdicgAAACgAAAABBgAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAA + gAAAAJgAAACoAAAAuAAAAAgAAAAEAwAAmioGAAAAAAAIAAAABAMA + ANhfCQAAAAAACAAAAAQDAAC1yscBAAAAAAgAAAAEAwAAiGpKAgIA + AAAIAAAABAMAAHFxSgICAAAACAAAAAQDAACqdqUDAgAAAAgAAAAE + AwAAX1nAAwIAAAAIAAAABAMAAHVZwAMCAAAACAAAAAQDAABWVMYD + AgAAAAgAAAAEAwAAdlTGAwIAAAAoAAAAAQYAABgBAAAoAQAAOAEA + AEgBAABYAQAAaAEAAHgBAACIAQAAmAEAAKgBAAAIAAAAAAQAAEHB + Yumw8TO9GAAAAAECAAABAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAI + AAAABAMAAAgAAAAAAAAABAAAAAMDAAD1AQAACAAAAAEJAABmaWxl + Oi8vLwwAAAABAQAATWFjaW50b3NoIEhECAAAAAQDAAAAsGBudAAA + AAgAAAAABAAAQbvTKuEAAAAkAAAAAQEAAEUzNzFBMTYxLUI1RTct + M0U1RS05QjlFLTMzM0U3NTI1NENENBgAAAABAgAAgQAAAAEAAADv + EwAAAQAAAAAAAAAAAAAAAQAAAAEBAAAvAAAAAAAAAAEFAADMAAAA + /v///wEAAAAAAAAAEAAAAAQQAADoAAAAAAAAAAUQAAC4AQAAAAAA + ABAQAAD4AQAAAAAAAEAQAADoAQAAAAAAAAIgAADEAgAAAAAAAAUg + AAA0AgAAAAAAABAgAABEAgAAAAAAABEgAAB4AgAAAAAAABIgAABY + AgAAAAAAABMgAABoAgAAAAAAACAgAACkAgAAAAAAADAgAADQAgAA + AAAAAAHAAAAYAgAAAAAAABHAAAAgAAAAAAAAABLAAAAoAgAAAAAA + ABDQAAAEAAAAAAAAAA== + + + + bookmark + + Ym9va9gDAAAAAAQQMAAAANBDJ6iHnUh5AmnIck6NBecr5Qu1MxqO + W0RWB/FbUhwN1AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACEA + AAABAQAAQkFBQUhTLUJSTjAxLUVfc29sZGVybWFza190b3AuZ2Jy + AAAAKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAABzVMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDw + uX0YAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + + + bookmark + + Ym9va9ADAAAAAAQQMAAAAJV1KsOuCUn20LDvwDAvLbDi5QVZ2WCY + 4R6h2x+opD/qzAIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAABkA + AAABAQAAQkFBQUhTLUJSTjAxLUVfZHJpbGxzLnhsbgAAACgAAAAB + BgAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAgAAAAJgAAACoAAAA + uAAAAAgAAAAEAwAAmioGAAAAAAAIAAAABAMAANhfCQAAAAAACAAA + AAQDAAC1yscBAAAAAAgAAAAEAwAAiGpKAgIAAAAIAAAABAMAAHFx + SgICAAAACAAAAAQDAACqdqUDAgAAAAgAAAAEAwAAX1nAAwIAAAAI + AAAABAMAAHVZwAMCAAAACAAAAAQDAABWVMYDAgAAAAgAAAAEAwAA + eVTGAwIAAAAoAAAAAQYAAAwBAAAcAQAALAEAADwBAABMAQAAXAEA + AGwBAAB8AQAAjAEAAJwBAAAIAAAAAAQAAEHBYumw81q6GAAAAAEC + AAABAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAIAAAABAMAAAgAAAAA + AAAABAAAAAMDAAD1AQAACAAAAAEJAABmaWxlOi8vLwwAAAABAQAA + TWFjaW50b3NoIEhECAAAAAQDAAAAsGBudAAAAAgAAAAABAAAQbvT + KuEAAAAkAAAAAQEAAEUzNzFBMTYxLUI1RTctM0U1RS05QjlFLTMz + M0U3NTI1NENENBgAAAABAgAAgQAAAAEAAADvEwAAAQAAAAAAAAAA + AAAAAQAAAAEBAAAvAAAAAAAAAAEFAADMAAAA/v///wEAAAAAAAAA + EAAAAAQQAADcAAAAAAAAAAUQAACsAQAAAAAAABAQAADsAQAAAAAA + AEAQAADcAQAAAAAAAAIgAAC4AgAAAAAAAAUgAAAoAgAAAAAAABAg + AAA4AgAAAAAAABEgAABsAgAAAAAAABIgAABMAgAAAAAAABMgAABc + AgAAAAAAACAgAACYAgAAAAAAADAgAADEAgAAAAAAAAHAAAAMAgAA + AAAAABHAAAAgAAAAAAAAABLAAAAcAgAAAAAAABDQAAAEAAAAAAAA + AA== + + coordinateFormat + + decimalPositions + 3 + integerPositions + 3 + notation + 1 + zeroOmission + 1 + + + + bookmark + + Ym9va9gDAAAAAAQQMAAAABVnvxGWz2GRh5ALFGnvnJBJhZ36UP+m + A+/ek7U9OqqN1AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACQA + AAABAQAAQkFBQUhTLUJSTjAxLUVfc2lsa3NjcmVlbl9ib3R0b20u + Z2JyKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAAB4VMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDz + OzIYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + + + bookmark + + Ym9va9gDAAAAAAQQMAAAAK/nq/5LpwZN7Nkrg8g8sLJwNrdFOKMg + GdBOPLjiF6eX1AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACIA + AAABAQAAQkFBQUhTLUJSTjAxLUVfc29sZGVycGFzdGVfdG9wLmdi + cgAAKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAAB1VMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDw + +4QYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + + + bookmark + + Ym9va9gDAAAAAAQQMAAAADbbToYIEv4Nsld2WFaBFJMYoa1bj2+t + GOn0sAUKDY6Y1AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACMA + AAABAQAAQkFBQUhTLUJSTjAxLUVfY29wcGVyX2JvdHRvbV9sNC5n + YnIAKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAABxVMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDu + tPcYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + fileFunction + Copper,L4,Bot + + + bookmark + + Ym9va9gDAAAAAAQQMAAAAHY4Vkl3moYP0nwJqPf6BRWkR9gP7PkU + CoWT7W/74fBf1AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACIA + AAABAQAAQkFBQUhTLUJSTjAxLUVfY29wcGVyX2lubmVyX2wzLmdi + cgAAKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAABwVMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDu + Ae8YAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + fileFunction + Copper,L3,Inr + + + bookmark + + Ym9va9gDAAAAAAQQMAAAAE/toQfGkFZeD762PXWiI5nF0sQzfi4D + 7Yx/Ic05XuOm1AIAAAQAAAADAwAAAAgAKAUAAAABAQAAVXNlcnMA + AAAHAAAAAQEAAGJvaWNlYW0ACAAAAAEBAABQcm9qZWN0cwUAAAAB + AQAARWFnbGUAAAAIAAAAAQEAAHByb2plY3RzFwAAAAEBAABCQUFB + SFNfQnJhaW5fQ29udHJvbGxlcgAOAAAAAQEAAEJBQUFIUy1CUk4w + MS1FAAAFAAAAAQEAAGZpbGVzAAAABgAAAAEBAABnZXJiZXIAACIA + AAABAQAAQkFBQUhTLUJSTjAxLUVfY29wcGVyX2lubmVyX2wyLmdi + cgAAKAAAAAEGAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAACAAAAA + mAAAAKgAAAC4AAAACAAAAAQDAACaKgYAAAAAAAgAAAAEAwAA2F8J + AAAAAAAIAAAABAMAALXKxwEAAAAACAAAAAQDAACIakoCAgAAAAgA + AAAEAwAAcXFKAgIAAAAIAAAABAMAAKp2pQMCAAAACAAAAAQDAABf + WcADAgAAAAgAAAAEAwAAdVnAAwIAAAAIAAAABAMAAFZUxgMCAAAA + CAAAAAQDAABvVMYDAgAAACgAAAABBgAAFAEAACQBAAA0AQAARAEA + AFQBAABkAQAAdAEAAIQBAACUAQAApAEAAAgAAAAABAAAQcFi6bDt + UwsYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAE + AwAACAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8v + DAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAACwYG50AAAACAAA + AAAEAABBu9Mq4QAAACQAAAABAQAARTM3MUExNjEtQjVFNy0zRTVF + LTlCOUUtMzMzRTc1MjU0Q0Q0GAAAAAECAACBAAAAAQAAAO8TAAAB + AAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+//// + AQAAAAAAAAAQAAAABBAAAOQAAAAAAAAABRAAALQBAAAAAAAAEBAA + APQBAAAAAAAAQBAAAOQBAAAAAAAAAiAAAMACAAAAAAAABSAAADAC + AAAAAAAAECAAAEACAAAAAAAAESAAAHQCAAAAAAAAEiAAAFQCAAAA + AAAAEyAAAGQCAAAAAAAAICAAAKACAAAAAAAAMCAAAMwCAAAAAAAA + AcAAABQCAAAAAAAAEcAAACAAAAAAAAAAEsAAACQCAAAAAAAAENAA + AAQAAAAAAAAA + + fileFunction + Copper,L2,Inr + + + printInfo + + YnBsaXN0MDDUAAEAAgADAAQABQAGARQBFVgkdmVyc2lvblgkb2JqZWN0c1kkYXJjaGl2 + ZXJUJHRvcBIAAYagrxBUAAcACAANACUAJgAnACgAKQAqACsALAAtAC4AMgBIAEkASgBL + AEwATQBOAE8AUABRAFIAUwBiAGwAbQBuAG8AcAB2AIAAgQCCAIMAjQCOAI8AkACaAJsA + nACdAKcAqACpAKoAtAC1ALYAtwDBAMIAwwDEAM4AzwDQANEA2wDcAN0A3gDoAOkA6gDr + APUA9gD3APgBAgEDAQQBBQEIAQkBCgELAQwBDQEQVSRudWxs0gAJAAoACwAMViRjbGFz + c1xOU0F0dHJpYnV0ZXOAU4AC0wAOAA8ACQAQABoAJFdOUy5rZXlzWk5TLm9iamVjdHOp + ABEAEgATABQAFQAWABcAGAAZgAOABIAFgAaAB4AIgAmACoALqQAbABwAHQAdAB8AHwAc + AB0AHYAMgFCAUYBRgBiAGIBQgFGAUYBSXxAPcGFnZURlZmluaXRpb25zXxAWTlNIb3Jp + em9udGFsbHlDZW50ZXJlZF1OU1JpZ2h0TWFyZ2luXE5TTGVmdE1hcmdpbl8QFU5TSG9y + aXpvbmFsUGFnaW5hdGlvbl8QFE5TVmVydGljYWxQYWdpbmF0aW9uXxAUTlNWZXJ0aWNh + bGx5Q2VudGVyZWRbTlNUb3BNYXJnaW5eTlNCb3R0b21NYXJnaW7SAA8ACQAvADGhADCA + DYBM0wAOAA8ACQAzAD0AR6kANAA1ADYANwA4ADkAOgA7ADyADoAPgBCAEYASgBOAFIAV + gBapAD4AHwBAAEEAQgAfAD4APgBGgBeAGIAZgE2AToAYgBeAF4BPgB9WbWlycm9yWWNv + bG9yTW9kZVZsYXllcnNfEA9iYWNrZ3JvdW5kQ29sb3JVc2NhbGVbc2NhbGluZ01vZGVf + EBBsaW1pdFNjYWxlc1RvSVNPWW11bHRpUGFnZVRuYW1lCBAA0gAPAAkAVAAxrABVAFYA + VwBYAFkAWgBbAFwAXQBeAF8AYIAagCCAJIAogCyAMIA0gDiAPIBAgESASIBM0wAOAA8A + CQBjAGcAR6MAZABlAGaAG4AcgB2jAB8APgBqgBiAF4AegB9VbGF5ZXJaYWxsTWF0Y2hl + ZFxmaWxlRnVuY3Rpb25dQ29wcGVyLEwxLFRvcNIAcQByAHMAdFokY2xhc3NuYW1lWCRj + bGFzc2VzXE5TRGljdGlvbmFyeaIAcwB1WE5TT2JqZWN00wAOAA8ACQB3AHsAR6MAeABl + AGSAIYAcgBujAHwAPgB+gCKAF4AjgB9cZmlsZUZ1bmN0aW9uV1Byb2ZpbGUQAdMADgAP + AAkAhACIAEejAGQAhgBlgBuAJYAcowCJAIoAPoAmgCeAF4AfXGZpbGVGdW5jdGlvbhAC + XxAQU29sZGVybWFzayxCb3QsMdMADgAPAAkAkQCVAEejAJIAZABlgCmAG4AcowCWAJcA + PoAqgCuAF4AfXGZpbGVGdW5jdGlvblxMZWdlbmQsVG9wLDEQA9MADgAPAAkAngCiAEej + AGUAZAChgByAG4AtowA+AKQApYAXgC6AL4AfXGZpbGVGdW5jdGlvbhAEWVBhc3RlLEJv + dNMADgAPAAkAqwCvAEejAGUAZACugByAG4AxowA+ALEAsoAXgDKAM4AfXGZpbGVGdW5j + dGlvbhAFXxAQU29sZGVybWFzayxUb3AsMdMADgAPAAkAuAC8AEejAGQAZQC7gBuAHIA1 + owC9AD4Av4A2gBeAN4AfXGZpbGVGdW5jdGlvbhAGV1Vua25vd27TAA4ADwAJAMUAyQBH + owBkAGUAyIAbgByAOaMAygA+AMyAOoAXgDuAH1xmaWxlRnVuY3Rpb24QB1xMZWdlbmQs + Qm90LDHTAA4ADwAJANIA1gBHowBkANQAZYAbgD2AHKMA1wDYAD6APoA/gBeAH1xmaWxl + RnVuY3Rpb24QCFlQYXN0ZSxUb3DTAA4ADwAJAN8A4wBHowDgAGUAZIBBgByAG6MA5AA+ + AOaAQoAXgEOAH1xmaWxlRnVuY3Rpb25dQ29wcGVyLEw0LEJvdBAJ0wAOAA8ACQDsAPAA + R6MAZADuAGWAG4BFgByjAPEA8gA+gEaAR4AXgB9cZmlsZUZ1bmN0aW9uEApdQ29wcGVy + LEwzLEluctMADgAPAAkA+QD9AEejAGUA+wBkgByASYAbowA+AP8BAIAXgEqAS4AfXGZp + bGVGdW5jdGlvbl1Db3BwZXIsTDIsSW5yEAvSAHEAcgEGAQdXTlNBcnJheaIBBgB1VzEg + MSAxIDEjP/AAAAAAAABWUGFnZSAxCSMAAAAAAAAAANIAcQByAQ4BD18QE05TTXV0YWJs + ZURpY3Rpb25hcnmjAQ4AcwB10gBxAHIBEQESW05TUHJpbnRJbmZvogETAHVbTlNQcmlu + dEluZm9fEA9OU0tleWVkQXJjaGl2ZXLRARYBF1Ryb290gAEACAAZACIAKwA1ADoAPwDq + APAA+QEAAQ0BDwERAR4BJgExAUQBRgFIAUoBTAFOAVABUgFUAVYBaQFrAW0BbwFxAXMB + dQF3AXkBewF9AY8BqAG2AcMB2wHyAgkCFQIkAi0CMAIyAjQCQQJUAlYCWAJaAlwCXgJg + AmICZAJmAnkCewJ9An8CgQKDAoUChwKJAosCjQKUAp4CpQK3Ar0CyQLcAuYC6wLsAu4C + 9wMQAxIDFAMWAxgDGgMcAx4DIAMiAyQDJgMoAyoDNwM+A0ADQgNEA0sDTQNPA1EDUwNZ + A2QDcQN/A4gDkwOcA6kDrgO3A8QDywPNA88D0QPYA9oD3APeA+AD7QP1A/cEBAQLBA0E + DwQRBBgEGgQcBB4EIAQtBC8EQgRPBFYEWARaBFwEYwRlBGcEaQRrBHgEhQSHBJQEmwSd + BJ8EoQSoBKoErASuBLAEvQS/BMkE1gTdBN8E4QTjBOoE7ATuBPAE8gT/BQEFFAUhBSgF + KgUsBS4FNQU3BTkFOwU9BUoFTAVUBWEFaAVqBWwFbgV1BXcFeQV7BX0FigWMBZkFpgWt + Ba8FsQWzBboFvAW+BcAFwgXPBdEF2wXoBe8F8QXzBfUF/AX+BgAGAgYEBhEGHwYhBi4G + NQY3BjkGOwZCBkQGRgZIBkoGVwZZBmcGdAZ7Bn0GfwaBBogGigaMBo4GkAadBqsGrQa2 + Br4GwwbLBtQG2wbcBuUG7gcEBwsHFAcgByUHMQdDB0gHTQAAAAAAAAICAAAAAAAAARgA + AAAAAAAAAAAAAAAAAAdP + + thumbnail + + iVBORw0KGgoAAAANSUhEUgAAASwAAABTCAYAAAAlfjrVAAAEGWlDQ1BrQ0dDb2xvclNw + YWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPrtzZyMkzlNsNIV0qD8NJQ2TVjShtLp/3d02 + bpZJNtoi6GT27s6Yyc44M7v9oU9FUHwx6psUxL+3gCAo9Q/bPrQvlQol2tQgKD60+INQ + 6Ium65k7M5lpurHeZe58853vnnvuuWfvBei5qliWkRQBFpquLRcy4nOHj4g9K5CEh6AX + BqFXUR0rXalMAjZPC3e1W99Dwntf2dXd/p+tt0YdFSBxH2Kz5qgLiI8B8KdVy3YBevqR + Hz/qWh72Yui3MUDEL3q44WPXw3M+fo1pZuQs4tOIBVVTaoiXEI/MxfhGDPsxsNZfoE1q + 66ro5aJim3XdoLFw72H+n23BaIXzbcOnz5mfPoTvYVz7KzUl5+FRxEuqkp9G/Ajia219 + thzg25abkRE/BpDc3pqvphHvRFys2weqvp+krbWKIX7nhDbzLOItiM8358pTwdirqpPF + nMF2xLc1WvLyOwTAibpbmvHHcvttU57y5+XqNZrLe3lE/Pq8eUj2fXKfOe3pfOjzhJYt + B/yll5SDFcSDiH+hRkH25+L+sdxKEAMZahrlSX8ukqMOWy/jXW2m6M9LDBc31B9LFuv6 + gVKg/0Szi3KAr1kGq1GMjU/aLbnq6/lRxc4XfJ98hTargX++DbMJBSiYMIe9Ck1YAxFk + KEAG3xbYaKmDDgYyFK0UGYpfoWYXG+fAPPI6tJnNwb7ClP7IyF+D+bjOtCpkhz6CFrIa + /I6sFtNl8auFXGMTP34sNwI/JhkgEtmDz14ySfaRcTIBInmKPE32kxyyE2Tv+thKbEVe + PDfW/byMM1Kmm0XdObS7oGD/MypMXFPXrCwOtoYjyyn7BV29/MZfsVzpLDdRtuIZnbpX + zvlf+ev8MvYr/Gqk4H/kV/G3csdazLuyTMPsbFhzd1UabQbjFvDRmcWJxR3zcfHkVw9G + fpbJmeev9F08WW8uDkaslwX6avlWGU6NRKz0g/SHtCy9J30o/ca9zX3Kfc19zn3BXQKR + O8ud477hLnAfc1/G9mrzGlrfexZ5GLdn6ZZrrEohI2wVHhZywjbhUWEy8icMCGNCUdiB + lq3r+xafL549HQ5jH+an+1y+LlYBifuxAvRN/lVVVOlwlCkdVm9NOL5BE4wkQ2SMlDZU + 97hX86EilU/lUmkQUztTE6mx1EEPh7OmdqBtAvv8HdWpbrJS6tJj3n0CWdM6busNzRV3 + S9KTYhqvNiqWmuroiKgYhshMjmhTh9ptWhsF7970j/SbMrsPE1suR5z7DMC+P/Hs+y7i + jrQAlhyAgccjbhjPygfeBTjzhNqy28EdkUh8C+DU9+z2v/oyeH791OncxHOs5y2AtTc7 + nb/f73TWPkD/qwBnjX8BoJ98VQNcC+8AABBISURBVHgB7V1NqF5HGT6fFiLiwlWh1GBB + EBduurDLbgp1UdNbiKgBu3UlkiZbl24bg7jqtsIN0oIhuqiQjcu6cONChEAkhkBXLkKx + 1HD9nnP7fHm/yfyfmTlzznkH7p058/POO8/MPOedOXPOtxuG4Wz/18y9eOe1ZnVpRYrA + EhH49w8edK32N/548aDfw0t3D+EWgd2+kmaEBbJCA/97eqdF27QODwJfuXLJk6pJcyJw + dvbtYbf755wqOOs2deOcdhYonPClwvKc4tCwe4+vKlk5EVp2AgYy/uBkeGqrpCwZnipX + y5dBAAZIy1VTdQsLgwwmpFpWZQZIKSklLCz0bYqLsRpqyEzRsYe8wCAGqzl0denWytJq + YmFhTc5l4PUrfz7C+cJPrh9db+HipUffWWwzMWD5l9oIXzlfmq8eloOvbv0IPNe6ie+e + vn5U5We33j26XvsFyOr+C/8Ymwkr5/PhwnB1+Nmh2TeH9w7hmMCT0w9ishXJU4oUIEda + ELXkFmm0CukKgeaE9eUrP3xmgracdHOjT7KCHrA6n+x9SdlPhmNCD+kLPGvjV4pQZFtq + yIR8ypWEKOvV8LIRaE5YmFyhCYpJCPfc2TdHH1YYlo5bs8bGxnv+kazoe7Jq0gIQANkq + 0fo7qjlh+dUZzolpOF/mPLn1NLeS1VMsGAL5k6zoM62UT4ullLxWcpYy+YmvElXcyGiy + 6R6nyjD86Mrvjqwo7Pf0vikPopjTmaRVUhdOppIyW8pauv4tsVpKXd1YWCCr35/+9Ag3 + 7Pf0vhysvX90BIjjwiStmjr5LIFWBNGDDo6uSI6WbZHhZEEbKdCNhWWSFfE3965KnB+i + 7JZ+bb1N0praNhf5IN6VNrXOKeVdesXoKsuGwkynP0VnLZuOQDeERdVhaUln7l3xPJfM + s4Qw9a65hCxNWj5ce5mwMXogT8jBuonNR0uIfki2mS51ZjimblPOFq+7I6y1dwJJpVY7 + KZ9+rXood44Jl1pnDLFAJvNJH2GSCePZ9lxfypHhXHlbKtfNHtYSQc99MkcygV/DSfm5 + OtbQay6ZkoxcOkjikATFsvBlvEtOTDzl0LeV8aXZ8m8lTglrQk9PIRxJKhNUcBalbjH1 + YHLYJqxTeETCye7lMdfF4fnht2cfRZQ4zgJ93hx+PEbePvvbceKEK0kEqIPX9KVoxtFn + Gq/hS9yYHvJDZULpIflrTm/y8jMANPeiXKCam+yufGuJtz0drdG2FpbW1vquRj/ZZLbo + O1u9KXHf+trN8QMHKWVy8na3h/W/3b9y2rHYMng62uKsGS2tmkDF3pRq6tBSdot+Q3to + LbdsW691NScs82sN5vXl4a1esaqmFyd6q6MP1RqyMcHst401e9bmNics82sN5vWsaMxc + OY8+1FSjhaVVU3+VvW0EmhOWaVGZ19vujjatV9Jqg7PWUh6B6oSFJx7yo/WmRWVe46lS + bYdNzK05c7mppLW1EbCO9lYnrFSYUj9glyof+be4iWlbbipp5Yye5ZZZw426O8LiN7CW + OyyWpbmS1rL6a4q26GvT0rbJ6/kT3t0RVs6xBuyD6V6YbejFxW3R4oxDZn25bJa2bCWs + MPlVXJnWQ7g7wkoBBST16lffHv56+/3xD2H8qVMEYhCIsTZi5Cwpj6/NSziguljCAlmB + qGxOSetZVHo285/Vtk1MyNpoo0VeLbn7Ua42L4GsgNRiCctFVnndv/5SMPOVtNbTzyWX + 8UshK/Rely8/w3qSxx3M6/UMu7YtIWn1vEfREhEQ+KN33hjfc8WkvXjj78ODa98dVTAf + /si9VZAFX8tBPMkD74XiRW28+I3jORjDoZsE+4TtfuXaLxkcfcjBk3PqxrqOMk24WBJZ + oZldWliSrKCkeY241g4du3SHNpgTZOltmqI/sMDrNSQflyyTrJDP9loOvyrx4fCHw5hF + HSBB2x/S4GQeEJT8+/DGL8Y8KA/SQh+GSHAsEPFvaWSFJlX/WgMqwc9Y33t8FcGgiwXR + t4eFSv7yqX1/K6hAxxloEUBF24SJwS4mT8cQqGqFECg9Dlp9raHLJWFMn8Dqun4yWDfe + a5BV6Q6OaaOZhxaBGY/rWP2wpEBeOC4zxgvxzxWPLOZSSRTzBqWV4s34RWJOPa46pCzk + 4bUZ9rXb1FnKMNNir1kffDrXkpDp8Jmfy1f+cviD4ROZ7SgMqw0O8yZ2rBwJ6ORisRaW + xI9PBb938vbBFJfpaw/LAYjljc36csWvHRtt3zECcqwcpxxfwZrnkvU4xX6lFpYdF2vs + waI6tSavIpKEIwccBxU3YsePAe5/V5s/5ME9FQDAvRobma0CIG1EFAIcK77MGGP3K32+ + 21dvTNoqLKyYhvrySBLw5espjWRFncxrxquvCKQgkDsXWllY1Z8SYsP94aW7KZg1zyv3 + dZpXnlGhjZxizXcMSHWKgAuBGAvMVhZzHHO9tqtOWGiA63Rt7calyG9NWly2pejIvLHk + xPzSRztDj/Flfg23QyB0MwmlT9V0ivxWc7waYYFtU44zTAW7RPncu0tO3fiWO0lrykBJ + rVvuhSlxpaI3b/7a43PqTRtHlzjvayH1zB5WKbMOJmIO62Ly1u6YWmDmyLUt73LkhMqQ + qJBPhoE3HtHrZnwIwTbp44OT/c1sTjd1DuIF65I8IrE4nMNiBSX2m0aiOo07KCqV2WJ4 + yvKuBF4kq6mDtIQuW5Jh3qh4Tcsb/lxuqsEwzv/HQ9S3t0JtNHlptLAQmWsRhSpMTZ9j + 4mz9XUVOljmwTx0fa8pv4i2vbWMSlkvMqoVy6C8dM1ps4KgDYcW+OlO78WsBuSZONZYN + tglSsw2lZMfuw+FUO0+Ey7pzfpValredrucJduRjONZqkX0rw7LOLYZ5bGK3t67OeiEr + dIQSVvvhqBOjPeas0TbeZX/gRoIXoLF1EGthUfbafJBWtaeEawOrVnuwHIt1GMilnZwc + pWXXlofJ3rsL6WizvLiPhbbJL5XELAd7x2OqfkHCAsPz08PSR3wNxxc7a8ieKjM0+FLl + gyxw54yVW3ojdulkZZvsqX2Qmx99FtNvuTpK0irxYCZGV1seW1wuZiw3hVO8S0K+VMyK + TL/Gy8YAKLeTTf16vp6bLJaMs9Rdhkv0N+XB9zmMUeZFPhn2lctNoyWeQ15SNxmWejOe + fq6eoXIgq9DXgg/vBhvCsCR0ElaIrCirNGnVBox6x/gAV5rkMWVi8szdRnkOK0bfnvJI + 3efGEbiASPiZF6wOcgilJr45GPGpcWm9YsiKddpIC4R1OIfFjKn+yJafvp5abBH510hW + 42Dcf2VzCQ7kZH6z6rPhg1H1nIlYo829EZRsIzGiL9N8YbSpBmmFLCufTkyz7mHFWlcU + on4cAqkDJ05qWq45JhiebuU4nL7H0gs+w5DTA46yPdCRxxcw0aFfrEvJGysT+YgR/ZSy + yEvSSi1XKr+LgyZbWFCw1tIppvHSzCy9PI2pPzZP7sCJld9zvlJPt4DheDL/CyurpzZj + goO47g/nPoiL32HnktGlb+mxQXn0XfWG4tGmqTJYB+bpcJtX+X4Rwsqv3l4ylgBHFhYg + wOR8dXg/63vupTrG1qKasm31rTUOhPDk1jJaZxJYS62BU6kxB1lzPyCS2FmXhLBUUlzp + vZ4YeSNjO5R0mZOO7GM0OqaGKzVwauimMteJAKy7kuO5xHGamDkte8PFQVYLC8JhqfTs + SmzgxbQPhINliO0VDLM89zEQjwEzPtHqcPli6q3X60FgPNtX4cXp1laWi+CshIXuA8PF + kILt8eN6uv+ceMZlSMT34rl/wfbrJ1uIhPqtEChhDdXSFVwRs/oZrSvHfHMSFhjO9TNa + bNBayQpWlXQhC4uWFXzpsI+hThFYAwIf3/jVvhnTx3OItEBWLusKODoPjkqQ5ZM4xIeE + yrKp4djzH6ZOZj2pZGqSlJTnIyySlcyPMMrA8RyR9C8Pb41p/IdfCrY5KbvknoStLo2b + HwF5KHZ+bepqYM7fGE7xnnSvq65besomtdloSs0hKyUEoqf+nAikjP859Zyj7iIn3Usr + Dssk9tH1aDruT9njzgSXs2ckN8Ypx9Ym36a7tIRsZUvE4VtO4zJ9f54FnxvB2R5acVI+ + 9DQtOPw+obTwWO5k9/JYFOkMw9ozy0sLEGVNLCgPwsw0xJnplMF4WYZpKJfqzCX5o3fe + GEXItodksi/ph/LL9BI3vcPDGsfbCFsntKgloeyU2uGWHSKXnzJcu40qXxGIQWDr378y + MYKFZT2HZWZ0XWNJhl3/mJ1/lwzGg6jgcIdhmGk1fElQqE83yGugrDKnIPD5cKHJXJii + Y2xZ8gQ4Y4rLJiwoII89UKFcZSRRyXCuPF85k6xQnzpFoDcEOC4xXpfqaNRQ//FtlD13 + 5LoswvJZVFMYVBKVDOc2zlZuKlm1sP5semvcNhHAPAi9i1gCmRrjGlwgjRqpp49DZD4z + nLWHFaos9SmdqRTA491FAsmNULlZyzBlcIMV13Izl+lSLsNMU18R2CIC5nzDvJBxuZiU + 5onsYw2lFbEBUgIwm1zE1ZTtqpPxuOuYv9RCYpXk+8Kv/zTIp1wsL/MgjmUR5kCTeZDO + eOSBk+nnMU/Pi7muEc8niQjjySHl/Hz3/eHB8Amih4vD84cwruVTRz5t5I0CWNwc3ht/ + zcY8LMg0yKDjDct8iumrE2WlrrjG02SMATjKZFuAF8NI912j3abeKKPuHIHSPNE1YaHJ + HFRyAMjBJONdYTmhmYcThtfqKwKKQHkEahCW89WcXPV97wGlyrQRS+wZrUNdjneSDukb + CcxpVZaGeE1tKY1NT/LABa49rFw9szbdXXtUMcfrcxXVctMQsJH/NInzlZZt8R32nU9D + rRkIYLk8GjAWOFwcYsl6FJW16S4l0OzLVUDK0rAikILA+JaC40R4ihzNWx+BEjxR5NUc + Jar6na012BEY9yd1yW8Hp7PYUjyRtSTsDAtVZ2MI8GGMXBpuDILNNlcJa7Ndv9yGK1Et + t++maq6ENRVBLa8IKALNEMg+1mA7dv/xyX+GUj/p1AwBrUgRUASqIYAvTrxy++tH8qec + JsiysGxkBY2gWO6PZh61SC82gQD3olo1dskvEbfCqGQ9NrKCfJzNAofkuCzC8h0GM9k0 + Rykts34E5jj8yR8GRd28sdJfP+LtW+jjAh+H+DTNIiyfQE2bhgCtDvrTpPVbOmbj3MTA + vE5pHcuiXvxx64J+iizNOx8CSljzYT9rzbkmeSulQTAmqeE6R2/KImm1aoPWUx4BJazy + mE6SmPpyd25ltb8ykEMssi0mWTEtR2/IImlRjvrLRCD71RwetTebXepEqyl3S9f6ysmW + envdbS3JE4dvuudsPNqIyRbXQ3dwKUC/B518OuT8+o9PnqYpAnMhYOMEW1xIP3LUbp/x + 7MU7rw33Hl8NldH0mRAoSbRcauERPz69iw/YXb72m8OH6OSjf/4wB5Z3+GkxXs8EQ1S1 + 8hPYUQUCmXQpGQCoUTKsq4eX7g4jYaFOkBYi9KlJox7QahQBRSCIACwrchMyHwgLF0hQ + pwgoAopATwjAkKL7P/gPL1k2AK8zAAAAAElFTkSuQmCC + + version + 1.7 + + diff --git a/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01_ReleaseNotes.txt b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01_ReleaseNotes.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/BAAAHS-BRN01_ReleaseNotes.txt @@ -0,0 +1 @@ + diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Assembly.zip b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Assembly.zip new file mode 100644 index 0000000000..c5c6883ac5 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Assembly.zip differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BOM.xlsx b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BOM.xlsx new file mode 100644 index 0000000000..eed054f0ec Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BOM.xlsx differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BottomAssembly.pdf b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BottomAssembly.pdf new file mode 100644 index 0000000000..c2dd423f42 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BottomAssembly.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BottomImage.png b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BottomImage.png new file mode 100644 index 0000000000..b4c8f0ca42 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_BottomImage.png differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Fabrication.pdf b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Fabrication.pdf new file mode 100644 index 0000000000..3ef9d6e539 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Fabrication.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Gerbers.zip b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Gerbers.zip new file mode 100644 index 0000000000..36e8b8f919 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Gerbers.zip differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Placement.csv b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Placement.csv new file mode 100644 index 0000000000..b22c6f81d1 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Placement.csv @@ -0,0 +1,104 @@ +designator,x (mm),y (mm),rotation (deg),side,package +C1,85.34, 5.08, 90,top,C0402 +C2,99.31,27.94, 90,top,C0402 +C3,18.03,34.80, 90,top,C0402 +C4,102.11,29.46, 90,top,C0603 +C5,103.38,29.72, 90,top,C0402 +C6,35.05,34.80,270,top,C0402 +C7,36.07,34.80,270,top,C0402 +C8,105.16, 9.14,270,top,C0402 +C9,24.64,35.31, 90,top,C0402 +C10,23.62,35.31, 90,top,C0402 +C11,57.66, 7.11, 90,top,C0603 +C12,55.12, 6.35, 0,top,C0603 +C13,86.36,16.00, 90,top,C0402 +C14,54.36,11.68, 0,top,C0402 +C15,62.99,10.41,270,top,C0402 +C16,68.83, 8.38,270,top,C0603 +C17,69.34,16.00,270,top,C0402 +C18,35.56, 5.84,270,top,C0603 +C19,101.60, 5.84,270,top,C0603 +C20,49.78,25.40, 90,top,C0402 +C21,54.10,18.03, 0,top,C0402 +C22,52.07,13.46,180,top,C0603 +C23,44.45,25.91,180,top,C0603 +C24,51.31,15.24,270,top,C0402 +C25,52.58,15.24,270,top,C0402 +C26,44.45,22.86, 0,top,C0603 +C27,46.23,21.34, 90,top,C0402 +C28,47.24,15.24,270,top,C0402 +C29,34.80,18.80,270,top,C0402 +C30,18.80,30.73, 90,top,C0402 +C31,23.88,30.73,270,top,C0402 +C32,70.36, 8.38,270,top,C0603 +C33,85.34, 8.89, 90,top,C0402 +C34,80.01, 4.83,180,top,C0402 +C35,80.01, 8.64,180,top,C0402 +D2,65.28, 5.84, 0,top,SOD123 +D3,73.15,13.97, 0,top,RGB1616 +D5,69.62,29.97,295,top,D0603 +D6,76.45,29.97,245,top,D0603 +D7,125.73,12.95,180,top,D0603 +J1,15.05,32.51,270,top,USB_MICRO_A_RA +L1,65.79, 9.40, 0,top,NRG4026 +L2,44.45,24.38,180,top,L0603 +Q1,45.21,33.02,270,top,SOT23 +Q2,49.28,29.97,270,top,SOT23 +R1,100.58,27.94, 90,top,R0402 +R2,82.80, 7.37,180,top,R0402 +R3,40.39,36.07,180,top,R0402 +R4,50.29,10.41,180,top,R0603 +R5,103.38,17.02, 90,top,R0402 +R6,35.56,36.32, 0,top,R0402 +R7,46.23,30.23, 90,top,R0402 +R8,44.20,30.23,270,top,R0402 +R9,121.16,10.41, 90,top,R0402 +R10,117.60,10.41, 90,top,R0402 +R11,102.62,13.97,180,top,R0402 +R12,97.28,25.40,180,top,R0402 +R13,103.12, 9.14,270,top,R0402 +R14,104.14, 9.14, 90,top,R0402 +R15,59.94, 6.35,180,top,R0402 +R16,87.63,16.00,270,top,R0402 +R17,74.42,16.00,180,top,R0402 +R18,71.88,16.00, 0,top,R0402 +R19,70.61,13.97,270,top,R0402 +R20,61.72,11.68, 0,top,R0402 +R21,59.18,11.68, 0,top,R0402 +R22,67.82,16.00,270,top,R0402 +R23,119.63,10.41, 90,top,R0402 +R24,125.98,14.22, 0,top,R0402 +R25,53.34,25.91,180,top,R0402 +R26,82.80,11.18,180,top,R0402 +R27,48.51,25.40, 90,top,R0402 +R28,45.97,17.27, 90,top,R0402 +R29,56.13,17.02,180,top,R0402 +R30,54.36,14.99,270,top,R0402 +R31,53.34,21.59, 0,top,R0402 +R32,54.61,19.05,180,top,R0402 +R33,53.34,22.86, 0,top,R0402 +R34,56.64,18.54, 90,top,R0402 +R35,56.13,15.49, 0,top,R0402 +R36,53.34,20.32, 0,top,R0402 +R37,42.67,18.54,180,top,R0402 +R38,43.43,17.53,180,top,R0402 +R39,43.43,21.08,180,top,R0402 +R40,43.43,13.97,180,top,R0402 +R41,43.43,12.70,180,top,R0402 +R42,42.67,20.07,180,top,R0402 +R43,59.69, 4.83, 0,top,R0603 +R44,72.64, 5.59, 0,top,R0603 +R45,85.60,24.64, 0,top,R0402 +R46,85.60,26.67, 0,top,R0402 +R47,40.39,35.05,180,top,R0402 +S1,82.04,16.00, 0,top,SM6MM +S2,63.50,16.00, 0,top,SM6MM +S3,91.44,25.15, 90,top,SM6MM +U1,82.80, 5.59,180,top,DCK6 +U2,113.79,21.65, 0,top,MODULE_ESP32WROOM32D +U3,29.72,33.02,270,top,SSOP20 +U4,54.36, 9.14,180,top,SOT23 +U5,60.45, 8.89,180,top,SOT23_6 +U6,49.53,19.30, 90,top,QFN50P400X400X100-25N +U7,82.80, 9.40,180,top,DCK6 +X2,21.34,30.73, 0,top,3.2X2.5_4P diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Schematic.pdf b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Schematic.pdf new file mode 100644 index 0000000000..21d600ce19 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_Schematic.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_TopAssembly.pdf b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_TopAssembly.pdf new file mode 100644 index 0000000000..d2a64b578d Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_TopAssembly.pdf differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_TopImage.png b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_TopImage.png new file mode 100644 index 0000000000..bb9025823e Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/files/BAAAHS-BRN01-E_TopImage.png differ diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_bottom_l4.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_bottom_l4.gbr new file mode 100644 index 0000000000..0eecb8dcac --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_bottom_l4.gbr @@ -0,0 +1,9756 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INBottom Copper*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,1.016000*% +%ADD11C,1.778000*% +%ADD12C,1.700000*% +%ADD13C,2.540000*% +%ADD14R,3.810000X3.810000*% +%ADD15R,1.778000X1.778000*% +%ADD16C,0.711200*% +%ADD17C,0.756400*% +%ADD18C,0.203200*% +%ADD19C,0.279400*% +%ADD20C,0.609600*% +%ADD21C,0.228600*% +%ADD22C,0.812800*% +%ADD23C,0.956400*% +%ADD24C,2.540000*% +%ADD25C,0.406400*% + +G36* +X379561Y3767D02* +X379561Y3767D01* +X379590Y3764D01* +X379701Y3787D01* +X379813Y3803D01* +X379840Y3815D01* +X379869Y3820D01* +X379969Y3873D01* +X380072Y3919D01* +X380095Y3938D01* +X380121Y3951D01* +X380203Y4029D01* +X380289Y4102D01* +X380306Y4127D01* +X380327Y4147D01* +X380384Y4245D01* +X380447Y4339D01* +X380456Y4367D01* +X380471Y4392D01* +X380499Y4502D01* +X380533Y4610D01* +X380534Y4640D01* +X380541Y4668D01* +X380537Y4781D01* +X380540Y4894D01* +X380533Y4923D01* +X380532Y4952D01* +X380497Y5060D01* +X380468Y5169D01* +X380453Y5195D01* +X380444Y5223D01* +X380399Y5287D01* +X380323Y5414D01* +X380277Y5457D01* +X380249Y5496D01* +X378967Y6778D01* +X378967Y46562D01* +X380158Y47753D01* +X419942Y47753D01* +X421133Y46562D01* +X421133Y6778D01* +X419851Y5496D01* +X419833Y5472D01* +X419811Y5453D01* +X419748Y5359D01* +X419680Y5269D01* +X419669Y5241D01* +X419653Y5217D01* +X419619Y5109D01* +X419578Y5003D01* +X419576Y4974D01* +X419567Y4946D01* +X419564Y4832D01* +X419555Y4720D01* +X419561Y4691D01* +X419560Y4662D01* +X419589Y4552D01* +X419611Y4441D01* +X419624Y4415D01* +X419632Y4387D01* +X419689Y4289D01* +X419742Y4189D01* +X419762Y4167D01* +X419777Y4142D01* +X419859Y4065D01* +X419938Y3983D01* +X419963Y3968D01* +X419984Y3948D01* +X420085Y3896D01* +X420183Y3839D01* +X420211Y3832D01* +X420237Y3818D01* +X420315Y3805D01* +X420458Y3769D01* +X420521Y3771D01* +X420568Y3763D01* +X477155Y3763D01* +X477184Y3767D01* +X477213Y3764D01* +X477324Y3787D01* +X477436Y3803D01* +X477463Y3815D01* +X477492Y3820D01* +X477592Y3873D01* +X477696Y3919D01* +X477718Y3938D01* +X477744Y3951D01* +X477826Y4029D01* +X477913Y4102D01* +X477929Y4127D01* +X477950Y4147D01* +X478007Y4245D01* +X478070Y4339D01* +X478079Y4367D01* +X478094Y4392D01* +X478122Y4502D01* +X478156Y4610D01* +X478157Y4640D01* +X478164Y4668D01* +X478160Y4781D01* +X478163Y4894D01* +X478156Y4923D01* +X478155Y4952D01* +X478120Y5060D01* +X478091Y5169D01* +X478077Y5195D01* +X478067Y5223D01* +X478022Y5287D01* +X477946Y5414D01* +X477901Y5457D01* +X477873Y5496D01* +X476714Y6655D01* +X464617Y18752D01* +X464547Y18804D01* +X464483Y18864D01* +X464433Y18890D01* +X464389Y18923D01* +X464308Y18954D01* +X464230Y18994D01* +X464182Y19002D01* +X464124Y19024D01* +X463976Y19036D01* +X463899Y19049D01* +X462539Y19049D01* +X460672Y19823D01* +X459243Y21252D01* +X458469Y23119D01* +X458469Y36322D01* +X458461Y36380D01* +X458463Y36438D01* +X458441Y36520D01* +X458429Y36604D01* +X458406Y36657D01* +X458391Y36713D01* +X458348Y36786D01* +X458313Y36863D01* +X458275Y36908D01* +X458246Y36958D01* +X458184Y37016D01* +X458130Y37080D01* +X458081Y37112D01* +X458038Y37152D01* +X457963Y37191D01* +X457893Y37238D01* +X457837Y37255D01* +X457785Y37282D01* +X457717Y37293D01* +X457622Y37323D01* +X457522Y37326D01* +X457454Y37337D01* +X443658Y37337D01* +X442467Y38528D01* +X442467Y78312D01* +X443658Y79503D01* +X483442Y79503D01* +X484633Y78312D01* +X484633Y38528D01* +X483442Y37337D01* +X469646Y37337D01* +X469588Y37329D01* +X469530Y37331D01* +X469448Y37309D01* +X469364Y37297D01* +X469311Y37274D01* +X469255Y37259D01* +X469182Y37216D01* +X469105Y37181D01* +X469060Y37143D01* +X469010Y37114D01* +X468952Y37052D01* +X468888Y36998D01* +X468856Y36949D01* +X468816Y36906D01* +X468777Y36831D01* +X468730Y36761D01* +X468713Y36705D01* +X468686Y36653D01* +X468675Y36585D01* +X468645Y36490D01* +X468642Y36390D01* +X468631Y36322D01* +X468631Y23781D01* +X468643Y23695D01* +X468646Y23607D01* +X468663Y23555D01* +X468671Y23500D01* +X468706Y23420D01* +X468733Y23337D01* +X468761Y23298D01* +X468787Y23240D01* +X468883Y23127D01* +X468928Y23063D01* +X481025Y10966D01* +X481095Y10914D01* +X481159Y10854D01* +X481209Y10828D01* +X481253Y10795D01* +X481334Y10764D01* +X481412Y10724D01* +X481460Y10716D01* +X481518Y10694D01* +X481666Y10682D01* +X481743Y10669D01* +X482600Y10669D01* +X482685Y10681D01* +X482771Y10683D01* +X482825Y10701D01* +X482882Y10709D01* +X482960Y10744D01* +X483042Y10770D01* +X483089Y10802D01* +X483141Y10825D01* +X483207Y10880D01* +X483278Y10928D01* +X483315Y10972D01* +X483358Y11008D01* +X483406Y11080D01* +X483461Y11146D01* +X483484Y11198D01* +X483516Y11245D01* +X483542Y11327D01* +X483576Y11406D01* +X483584Y11462D01* +X483601Y11516D01* +X483604Y11602D01* +X483615Y11687D01* +X483607Y11743D01* +X483609Y11800D01* +X483587Y11883D01* +X483575Y11969D01* +X483551Y12020D01* +X483537Y12075D01* +X483493Y12149D01* +X483458Y12228D01* +X483421Y12271D01* +X483392Y12320D01* +X483329Y12379D01* +X483273Y12444D01* +X483231Y12470D01* +X483184Y12514D01* +X483055Y12580D01* +X482989Y12622D01* +X481974Y13042D01* +X480402Y14614D01* +X479551Y16668D01* +X479551Y18892D01* +X480402Y20946D01* +X481974Y22518D01* +X484028Y23369D01* +X486252Y23369D01* +X488306Y22518D01* +X489878Y20946D01* +X490729Y18892D01* +X490729Y16668D01* +X489878Y14614D01* +X488306Y13042D01* +X487291Y12622D01* +X487217Y12578D01* +X487139Y12543D01* +X487096Y12506D01* +X487047Y12477D01* +X486988Y12415D01* +X486922Y12359D01* +X486890Y12312D01* +X486851Y12271D01* +X486812Y12194D01* +X486764Y12123D01* +X486747Y12069D01* +X486721Y12018D01* +X486705Y11934D01* +X486679Y11852D01* +X486677Y11795D01* +X486666Y11739D01* +X486674Y11654D01* +X486671Y11568D01* +X486686Y11513D01* +X486691Y11456D01* +X486721Y11375D01* +X486743Y11293D01* +X486772Y11244D01* +X486793Y11191D01* +X486845Y11122D01* +X486888Y11048D01* +X486930Y11009D01* +X486964Y10964D01* +X487033Y10912D01* +X487096Y10854D01* +X487146Y10828D01* +X487192Y10794D01* +X487272Y10763D01* +X487349Y10724D01* +X487398Y10716D01* +X487458Y10693D01* +X487603Y10682D01* +X487680Y10669D01* +X535940Y10669D01* +X536025Y10681D01* +X536111Y10683D01* +X536165Y10701D01* +X536222Y10709D01* +X536300Y10744D01* +X536382Y10770D01* +X536429Y10802D01* +X536481Y10825D01* +X536547Y10880D01* +X536618Y10928D01* +X536655Y10972D01* +X536698Y11008D01* +X536746Y11080D01* +X536801Y11146D01* +X536824Y11198D01* +X536856Y11245D01* +X536882Y11327D01* +X536916Y11406D01* +X536924Y11462D01* +X536941Y11516D01* +X536944Y11602D01* +X536955Y11687D01* +X536947Y11743D01* +X536949Y11800D01* +X536927Y11883D01* +X536915Y11969D01* +X536891Y12020D01* +X536877Y12075D01* +X536833Y12149D01* +X536798Y12228D01* +X536761Y12271D01* +X536732Y12320D01* +X536669Y12379D01* +X536613Y12444D01* +X536571Y12470D01* +X536524Y12514D01* +X536395Y12580D01* +X536329Y12622D01* +X535314Y13042D01* +X533742Y14614D01* +X532891Y16668D01* +X532891Y18892D01* +X533742Y20946D01* +X535314Y22518D01* +X537368Y23369D01* +X539592Y23369D01* +X541646Y22518D01* +X543218Y20946D01* +X544069Y18892D01* +X544069Y16668D01* +X543218Y14614D01* +X541646Y13042D01* +X540631Y12622D01* +X540557Y12578D01* +X540479Y12543D01* +X540436Y12506D01* +X540387Y12477D01* +X540328Y12415D01* +X540262Y12359D01* +X540230Y12312D01* +X540191Y12271D01* +X540152Y12194D01* +X540104Y12123D01* +X540087Y12069D01* +X540061Y12018D01* +X540045Y11934D01* +X540019Y11852D01* +X540017Y11795D01* +X540006Y11739D01* +X540014Y11654D01* +X540011Y11568D01* +X540026Y11513D01* +X540031Y11456D01* +X540061Y11375D01* +X540083Y11293D01* +X540112Y11244D01* +X540133Y11191D01* +X540185Y11122D01* +X540228Y11048D01* +X540270Y11009D01* +X540304Y10964D01* +X540373Y10912D01* +X540436Y10854D01* +X540486Y10828D01* +X540532Y10794D01* +X540612Y10763D01* +X540689Y10724D01* +X540738Y10716D01* +X540798Y10693D01* +X540943Y10682D01* +X541020Y10669D01* +X563253Y10669D01* +X563282Y10673D01* +X563311Y10670D01* +X563423Y10693D01* +X563535Y10709D01* +X563561Y10721D01* +X563590Y10726D01* +X563691Y10779D01* +X563794Y10825D01* +X563816Y10844D01* +X563843Y10857D01* +X563925Y10935D01* +X564011Y11008D01* +X564027Y11033D01* +X564049Y11053D01* +X564106Y11151D01* +X564169Y11245D01* +X564178Y11273D01* +X564192Y11298D01* +X564220Y11408D01* +X564254Y11516D01* +X564255Y11546D01* +X564262Y11574D01* +X564259Y11687D01* +X564262Y11800D01* +X564254Y11829D01* +X564253Y11858D01* +X564218Y11966D01* +X564190Y12075D01* +X564175Y12101D01* +X564166Y12129D01* +X564120Y12192D01* +X564045Y12320D01* +X563999Y12363D01* +X563971Y12402D01* +X562240Y14133D01* +X560577Y18147D01* +X560577Y22493D01* +X562240Y26507D01* +X565313Y29580D01* +X569327Y31243D01* +X573673Y31243D01* +X577687Y29580D01* +X580760Y26507D01* +X582423Y22493D01* +X582423Y18147D01* +X580760Y14133D01* +X579029Y12402D01* +X579011Y12378D01* +X578989Y12359D01* +X578926Y12265D01* +X578858Y12175D01* +X578848Y12147D01* +X578831Y12123D01* +X578797Y12015D01* +X578757Y11909D01* +X578754Y11880D01* +X578746Y11852D01* +X578743Y11738D01* +X578733Y11626D01* +X578739Y11597D01* +X578738Y11568D01* +X578767Y11458D01* +X578789Y11347D01* +X578803Y11321D01* +X578810Y11293D01* +X578868Y11195D01* +X578920Y11095D01* +X578940Y11073D01* +X578955Y11048D01* +X579038Y10971D01* +X579116Y10889D01* +X579141Y10874D01* +X579163Y10854D01* +X579263Y10802D01* +X579361Y10745D01* +X579390Y10738D01* +X579416Y10724D01* +X579493Y10711D01* +X579637Y10675D01* +X579699Y10677D01* +X579747Y10669D01* +X588653Y10669D01* +X588682Y10673D01* +X588711Y10670D01* +X588823Y10693D01* +X588935Y10709D01* +X588961Y10721D01* +X588990Y10726D01* +X589091Y10779D01* +X589194Y10825D01* +X589216Y10844D01* +X589243Y10857D01* +X589325Y10935D01* +X589411Y11008D01* +X589427Y11033D01* +X589449Y11053D01* +X589506Y11151D01* +X589569Y11245D01* +X589578Y11273D01* +X589592Y11298D01* +X589620Y11408D01* +X589654Y11516D01* +X589655Y11546D01* +X589662Y11574D01* +X589659Y11687D01* +X589662Y11800D01* +X589654Y11829D01* +X589653Y11858D01* +X589618Y11966D01* +X589590Y12075D01* +X589575Y12101D01* +X589566Y12129D01* +X589520Y12192D01* +X589445Y12320D01* +X589399Y12363D01* +X589371Y12402D01* +X587640Y14133D01* +X585977Y18147D01* +X585977Y22493D01* +X587640Y26507D01* +X590713Y29580D01* +X594727Y31243D01* +X599073Y31243D01* +X603087Y29580D01* +X606160Y26507D01* +X607823Y22493D01* +X607823Y18147D01* +X606160Y14133D01* +X604429Y12402D01* +X604411Y12378D01* +X604389Y12359D01* +X604326Y12265D01* +X604258Y12175D01* +X604248Y12147D01* +X604231Y12123D01* +X604197Y12015D01* +X604157Y11909D01* +X604154Y11880D01* +X604146Y11852D01* +X604143Y11738D01* +X604133Y11626D01* +X604139Y11597D01* +X604138Y11568D01* +X604167Y11458D01* +X604189Y11347D01* +X604203Y11321D01* +X604210Y11293D01* +X604268Y11195D01* +X604320Y11095D01* +X604340Y11073D01* +X604355Y11048D01* +X604438Y10971D01* +X604516Y10889D01* +X604541Y10874D01* +X604563Y10854D01* +X604663Y10802D01* +X604761Y10745D01* +X604790Y10738D01* +X604816Y10724D01* +X604893Y10711D01* +X605037Y10675D01* +X605099Y10677D01* +X605147Y10669D01* +X614053Y10669D01* +X614082Y10673D01* +X614111Y10670D01* +X614223Y10693D01* +X614335Y10709D01* +X614361Y10721D01* +X614390Y10726D01* +X614491Y10779D01* +X614594Y10825D01* +X614616Y10844D01* +X614643Y10857D01* +X614725Y10935D01* +X614811Y11008D01* +X614827Y11033D01* +X614849Y11053D01* +X614906Y11151D01* +X614969Y11245D01* +X614978Y11273D01* +X614992Y11298D01* +X615020Y11408D01* +X615054Y11516D01* +X615055Y11546D01* +X615062Y11574D01* +X615059Y11687D01* +X615062Y11800D01* +X615054Y11829D01* +X615053Y11858D01* +X615018Y11966D01* +X614990Y12075D01* +X614975Y12101D01* +X614966Y12129D01* +X614920Y12192D01* +X614845Y12320D01* +X614799Y12363D01* +X614771Y12402D01* +X613040Y14133D01* +X611377Y18147D01* +X611377Y22493D01* +X613040Y26507D01* +X616113Y29580D01* +X620127Y31243D01* +X624473Y31243D01* +X628487Y29580D01* +X631560Y26507D01* +X633223Y22493D01* +X633223Y18147D01* +X631560Y14133D01* +X629829Y12402D01* +X629811Y12378D01* +X629789Y12359D01* +X629726Y12265D01* +X629658Y12175D01* +X629648Y12147D01* +X629631Y12123D01* +X629597Y12015D01* +X629557Y11909D01* +X629554Y11880D01* +X629546Y11852D01* +X629543Y11738D01* +X629533Y11626D01* +X629539Y11597D01* +X629538Y11568D01* +X629567Y11458D01* +X629589Y11347D01* +X629603Y11321D01* +X629610Y11293D01* +X629668Y11195D01* +X629720Y11095D01* +X629740Y11073D01* +X629755Y11048D01* +X629838Y10971D01* +X629916Y10889D01* +X629941Y10874D01* +X629963Y10854D01* +X630063Y10802D01* +X630161Y10745D01* +X630190Y10738D01* +X630216Y10724D01* +X630293Y10711D01* +X630437Y10675D01* +X630499Y10677D01* +X630547Y10669D01* +X633317Y10669D01* +X633403Y10681D01* +X633491Y10684D01* +X633543Y10701D01* +X633598Y10709D01* +X633678Y10744D01* +X633761Y10771D01* +X633800Y10799D01* +X633858Y10825D01* +X633971Y10921D01* +X634035Y10966D01* +X637598Y14529D01* +X637598Y14530D01* +X637600Y14531D01* +X637686Y14647D01* +X637768Y14756D01* +X637769Y14758D01* +X637770Y14759D01* +X637820Y14891D01* +X637870Y15022D01* +X637870Y15024D01* +X637870Y15025D01* +X637882Y15170D01* +X637893Y15305D01* +X637893Y15307D01* +X637893Y15308D01* +X637890Y15324D01* +X637837Y15584D01* +X637823Y15611D01* +X637818Y15636D01* +X636777Y18147D01* +X636777Y22493D01* +X638440Y26507D01* +X641513Y29580D01* +X645527Y31243D01* +X649873Y31243D01* +X653887Y29580D01* +X656960Y26507D01* +X658623Y22493D01* +X658623Y18147D01* +X656960Y14133D01* +X653887Y11060D01* +X649873Y9397D01* +X645527Y9397D01* +X643016Y10438D01* +X643014Y10438D01* +X643013Y10439D01* +X642878Y10473D01* +X642740Y10509D01* +X642739Y10509D01* +X642737Y10509D01* +X642597Y10504D01* +X642456Y10500D01* +X642455Y10500D01* +X642453Y10500D01* +X642320Y10457D01* +X642185Y10414D01* +X642184Y10413D01* +X642183Y10412D01* +X642170Y10404D01* +X641949Y10256D01* +X641929Y10232D01* +X641909Y10218D01* +X638346Y6655D01* +X637187Y5496D01* +X637170Y5472D01* +X637147Y5453D01* +X637085Y5359D01* +X637017Y5269D01* +X637006Y5241D01* +X636990Y5217D01* +X636956Y5109D01* +X636915Y5003D01* +X636913Y4974D01* +X636904Y4946D01* +X636901Y4832D01* +X636892Y4720D01* +X636897Y4691D01* +X636897Y4662D01* +X636925Y4552D01* +X636948Y4441D01* +X636961Y4415D01* +X636969Y4387D01* +X637026Y4289D01* +X637079Y4189D01* +X637099Y4167D01* +X637114Y4142D01* +X637196Y4065D01* +X637274Y3983D01* +X637300Y3968D01* +X637321Y3948D01* +X637422Y3896D01* +X637520Y3839D01* +X637548Y3832D01* +X637574Y3818D01* +X637652Y3805D01* +X637795Y3769D01* +X637858Y3771D01* +X637905Y3763D01* +X951032Y3763D01* +X951061Y3767D01* +X951090Y3764D01* +X951201Y3787D01* +X951313Y3803D01* +X951340Y3815D01* +X951369Y3820D01* +X951469Y3873D01* +X951572Y3919D01* +X951595Y3938D01* +X951621Y3951D01* +X951703Y4029D01* +X951789Y4102D01* +X951806Y4127D01* +X951827Y4147D01* +X951884Y4245D01* +X951947Y4339D01* +X951956Y4367D01* +X951971Y4392D01* +X951999Y4502D01* +X952033Y4610D01* +X952034Y4640D01* +X952041Y4668D01* +X952037Y4781D01* +X952040Y4894D01* +X952033Y4923D01* +X952032Y4952D01* +X951997Y5060D01* +X951968Y5169D01* +X951953Y5195D01* +X951944Y5223D01* +X951899Y5287D01* +X951823Y5414D01* +X951777Y5457D01* +X951749Y5496D01* +X950467Y6778D01* +X950467Y46562D01* +X951658Y47753D01* +X991442Y47753D01* +X992633Y46562D01* +X992633Y6778D01* +X991351Y5496D01* +X991333Y5472D01* +X991311Y5453D01* +X991248Y5359D01* +X991180Y5269D01* +X991169Y5241D01* +X991153Y5217D01* +X991119Y5109D01* +X991078Y5003D01* +X991076Y4974D01* +X991067Y4946D01* +X991064Y4832D01* +X991055Y4720D01* +X991061Y4691D01* +X991060Y4662D01* +X991089Y4552D01* +X991111Y4441D01* +X991124Y4415D01* +X991132Y4387D01* +X991189Y4289D01* +X991242Y4189D01* +X991262Y4167D01* +X991277Y4142D01* +X991359Y4065D01* +X991438Y3983D01* +X991463Y3968D01* +X991484Y3948D01* +X991585Y3896D01* +X991683Y3839D01* +X991711Y3832D01* +X991737Y3818D01* +X991815Y3805D01* +X991958Y3769D01* +X992021Y3771D01* +X992068Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X1212596Y308355D01* +X1212482Y308339D01* +X1212368Y308329D01* +X1212342Y308319D01* +X1212314Y308315D01* +X1212210Y308268D01* +X1212103Y308227D01* +X1212080Y308211D01* +X1212055Y308199D01* +X1211967Y308125D01* +X1211876Y308056D01* +X1211859Y308033D01* +X1211838Y308016D01* +X1211774Y307920D01* +X1211706Y307828D01* +X1211696Y307802D01* +X1211680Y307779D01* +X1211646Y307669D01* +X1211605Y307562D01* +X1211603Y307534D01* +X1211595Y307508D01* +X1211592Y307393D01* +X1211583Y307279D01* +X1211588Y307254D01* +X1211587Y307224D01* +X1211654Y306967D01* +X1211658Y306951D01* +X1212089Y305912D01* +X1212089Y303688D01* +X1211238Y301634D01* +X1209666Y300062D01* +X1207612Y299211D01* +X1205388Y299211D01* +X1203334Y300062D01* +X1201762Y301634D01* +X1200911Y303688D01* +X1200911Y305912D01* +X1201342Y306951D01* +X1201371Y307063D01* +X1201405Y307172D01* +X1201406Y307200D01* +X1201413Y307227D01* +X1201410Y307341D01* +X1201413Y307456D01* +X1201406Y307483D01* +X1201405Y307511D01* +X1201370Y307620D01* +X1201341Y307731D01* +X1201327Y307755D01* +X1201318Y307782D01* +X1201254Y307877D01* +X1201196Y307976D01* +X1201175Y307995D01* +X1201160Y308018D01* +X1201072Y308092D01* +X1200988Y308170D01* +X1200963Y308183D01* +X1200942Y308201D01* +X1200837Y308247D01* +X1200735Y308300D01* +X1200710Y308304D01* +X1200682Y308316D01* +X1200419Y308353D01* +X1200404Y308355D01* +X1076139Y308355D01* +X1076110Y308351D01* +X1076081Y308354D01* +X1075970Y308331D01* +X1075858Y308315D01* +X1075831Y308303D01* +X1075802Y308298D01* +X1075702Y308246D01* +X1075599Y308199D01* +X1075576Y308180D01* +X1075550Y308167D01* +X1075468Y308089D01* +X1075382Y308016D01* +X1075365Y307991D01* +X1075344Y307971D01* +X1075287Y307873D01* +X1075224Y307779D01* +X1075215Y307751D01* +X1075200Y307726D01* +X1075172Y307616D01* +X1075138Y307508D01* +X1075137Y307478D01* +X1075130Y307450D01* +X1075134Y307337D01* +X1075131Y307224D01* +X1075138Y307195D01* +X1075139Y307166D01* +X1075174Y307058D01* +X1075203Y306949D01* +X1075218Y306923D01* +X1075227Y306895D01* +X1075272Y306832D01* +X1075348Y306704D01* +X1075364Y306689D01* +X1075365Y306687D01* +X1075396Y306658D01* +X1075422Y306622D01* +X1076618Y305426D01* +X1077469Y303372D01* +X1077469Y301148D01* +X1076618Y299094D01* +X1075046Y297522D01* +X1072992Y296671D01* +X1070768Y296671D01* +X1068714Y297522D01* +X1067142Y299094D01* +X1066291Y301148D01* +X1066291Y303372D01* +X1067142Y305426D01* +X1068338Y306622D01* +X1068350Y306638D01* +X1068361Y306647D01* +X1068365Y306653D01* +X1068378Y306665D01* +X1068441Y306759D01* +X1068509Y306849D01* +X1068520Y306877D01* +X1068536Y306901D01* +X1068570Y307009D01* +X1068611Y307115D01* +X1068613Y307144D01* +X1068622Y307172D01* +X1068625Y307286D01* +X1068634Y307398D01* +X1068628Y307427D01* +X1068629Y307456D01* +X1068601Y307566D01* +X1068578Y307677D01* +X1068565Y307703D01* +X1068557Y307731D01* +X1068499Y307829D01* +X1068447Y307929D01* +X1068427Y307951D01* +X1068412Y307976D01* +X1068330Y308053D01* +X1068251Y308135D01* +X1068226Y308150D01* +X1068205Y308170D01* +X1068104Y308222D01* +X1068006Y308279D01* +X1067978Y308286D01* +X1067952Y308300D01* +X1067874Y308313D01* +X1067731Y308349D01* +X1067668Y308347D01* +X1067621Y308355D01* +X735779Y308355D01* +X735750Y308351D01* +X735721Y308354D01* +X735610Y308331D01* +X735498Y308315D01* +X735471Y308303D01* +X735442Y308298D01* +X735342Y308246D01* +X735239Y308199D01* +X735216Y308180D01* +X735190Y308167D01* +X735108Y308089D01* +X735022Y308016D01* +X735005Y307991D01* +X734984Y307971D01* +X734927Y307873D01* +X734864Y307779D01* +X734855Y307751D01* +X734840Y307726D01* +X734812Y307616D01* +X734778Y307508D01* +X734777Y307478D01* +X734770Y307450D01* +X734774Y307337D01* +X734771Y307224D01* +X734778Y307195D01* +X734779Y307166D01* +X734814Y307058D01* +X734843Y306949D01* +X734858Y306923D01* +X734867Y306895D01* +X734912Y306832D01* +X734988Y306704D01* +X735004Y306689D01* +X735005Y306687D01* +X735036Y306658D01* +X735062Y306622D01* +X736258Y305426D01* +X737109Y303372D01* +X737109Y301148D01* +X736258Y299094D01* +X734686Y297522D01* +X732632Y296671D01* +X730408Y296671D01* +X728354Y297522D01* +X726782Y299094D01* +X725931Y301148D01* +X725931Y303372D01* +X726782Y305426D01* +X727978Y306622D01* +X727990Y306638D01* +X728001Y306647D01* +X728005Y306653D01* +X728018Y306665D01* +X728081Y306759D01* +X728149Y306849D01* +X728160Y306877D01* +X728176Y306901D01* +X728210Y307009D01* +X728251Y307115D01* +X728253Y307144D01* +X728262Y307172D01* +X728265Y307286D01* +X728274Y307398D01* +X728268Y307427D01* +X728269Y307456D01* +X728241Y307566D01* +X728218Y307677D01* +X728205Y307703D01* +X728197Y307731D01* +X728139Y307829D01* +X728087Y307929D01* +X728067Y307951D01* +X728052Y307976D01* +X727970Y308053D01* +X727891Y308135D01* +X727866Y308150D01* +X727845Y308170D01* +X727744Y308222D01* +X727646Y308279D01* +X727618Y308286D01* +X727592Y308300D01* +X727514Y308313D01* +X727371Y308349D01* +X727308Y308347D01* +X727261Y308355D01* +X682439Y308355D01* +X682410Y308351D01* +X682381Y308354D01* +X682270Y308331D01* +X682158Y308315D01* +X682131Y308303D01* +X682102Y308298D01* +X682002Y308246D01* +X681899Y308199D01* +X681876Y308180D01* +X681850Y308167D01* +X681768Y308089D01* +X681682Y308016D01* +X681665Y307991D01* +X681644Y307971D01* +X681587Y307873D01* +X681524Y307779D01* +X681515Y307751D01* +X681500Y307726D01* +X681472Y307616D01* +X681438Y307508D01* +X681437Y307478D01* +X681430Y307450D01* +X681434Y307337D01* +X681431Y307224D01* +X681438Y307195D01* +X681439Y307166D01* +X681474Y307058D01* +X681503Y306949D01* +X681518Y306923D01* +X681527Y306895D01* +X681572Y306832D01* +X681648Y306704D01* +X681664Y306689D01* +X681665Y306687D01* +X681696Y306658D01* +X681722Y306622D01* +X682918Y305426D01* +X683769Y303372D01* +X683769Y301148D01* +X682918Y299094D01* +X681346Y297522D01* +X679292Y296671D01* +X677068Y296671D01* +X675014Y297522D01* +X673442Y299094D01* +X672591Y301148D01* +X672591Y303372D01* +X673442Y305426D01* +X674638Y306622D01* +X674650Y306638D01* +X674661Y306647D01* +X674665Y306653D01* +X674678Y306665D01* +X674741Y306759D01* +X674809Y306849D01* +X674820Y306877D01* +X674836Y306901D01* +X674870Y307009D01* +X674911Y307115D01* +X674913Y307144D01* +X674922Y307172D01* +X674925Y307286D01* +X674934Y307398D01* +X674928Y307427D01* +X674929Y307456D01* +X674901Y307566D01* +X674878Y307677D01* +X674865Y307703D01* +X674857Y307731D01* +X674799Y307829D01* +X674747Y307929D01* +X674727Y307951D01* +X674712Y307976D01* +X674630Y308053D01* +X674551Y308135D01* +X674526Y308150D01* +X674505Y308170D01* +X674404Y308222D01* +X674306Y308279D01* +X674278Y308286D01* +X674252Y308300D01* +X674174Y308313D01* +X674031Y308349D01* +X673968Y308347D01* +X673921Y308355D01* +X577595Y308355D01* +X577595Y318321D01* +X577591Y318350D01* +X577594Y318379D01* +X577571Y318490D01* +X577555Y318602D01* +X577543Y318629D01* +X577538Y318658D01* +X577486Y318758D01* +X577439Y318861D01* +X577420Y318884D01* +X577407Y318910D01* +X577329Y318992D01* +X577256Y319078D01* +X577231Y319095D01* +X577211Y319116D01* +X577113Y319173D01* +X577019Y319236D01* +X576991Y319245D01* +X576966Y319260D01* +X576856Y319288D01* +X576748Y319322D01* +X576718Y319323D01* +X576690Y319330D01* +X576577Y319326D01* +X576464Y319329D01* +X576435Y319322D01* +X576406Y319321D01* +X576298Y319286D01* +X576189Y319257D01* +X576163Y319242D01* +X576135Y319233D01* +X576072Y319188D01* +X575944Y319112D01* +X575901Y319066D01* +X575862Y319038D01* +X574666Y317842D01* +X572612Y316991D01* +X570388Y316991D01* +X568334Y317842D01* +X566762Y319414D01* +X565911Y321468D01* +X565911Y323692D01* +X566762Y325746D01* +X568334Y327318D01* +X570388Y328169D01* +X572612Y328169D01* +X574666Y327318D01* +X575862Y326122D01* +X575886Y326104D01* +X575905Y326082D01* +X575999Y326019D01* +X576089Y325951D01* +X576117Y325940D01* +X576141Y325924D01* +X576249Y325890D01* +X576355Y325849D01* +X576384Y325847D01* +X576412Y325838D01* +X576526Y325835D01* +X576638Y325826D01* +X576667Y325832D01* +X576696Y325831D01* +X576806Y325859D01* +X576917Y325882D01* +X576943Y325895D01* +X576971Y325903D01* +X577069Y325961D01* +X577169Y326013D01* +X577191Y326033D01* +X577216Y326048D01* +X577293Y326130D01* +X577375Y326209D01* +X577390Y326234D01* +X577410Y326255D01* +X577462Y326356D01* +X577519Y326454D01* +X577526Y326482D01* +X577540Y326508D01* +X577553Y326586D01* +X577589Y326729D01* +X577587Y326792D01* +X577595Y326839D01* +X577595Y366581D01* +X577591Y366610D01* +X577594Y366639D01* +X577571Y366750D01* +X577555Y366862D01* +X577543Y366889D01* +X577538Y366918D01* +X577486Y367018D01* +X577439Y367121D01* +X577420Y367144D01* +X577407Y367170D01* +X577329Y367252D01* +X577256Y367338D01* +X577231Y367355D01* +X577211Y367376D01* +X577113Y367433D01* +X577019Y367496D01* +X576991Y367505D01* +X576966Y367520D01* +X576856Y367548D01* +X576748Y367582D01* +X576718Y367583D01* +X576690Y367590D01* +X576577Y367586D01* +X576464Y367589D01* +X576435Y367582D01* +X576406Y367581D01* +X576298Y367546D01* +X576189Y367517D01* +X576163Y367502D01* +X576135Y367493D01* +X576072Y367448D01* +X575944Y367372D01* +X575901Y367326D01* +X575862Y367298D01* +X574666Y366102D01* +X572612Y365251D01* +X570388Y365251D01* +X568334Y366102D01* +X566762Y367674D01* +X565911Y369728D01* +X565911Y371952D01* +X566762Y374006D01* +X568260Y375504D01* +X568278Y375528D01* +X568301Y375547D01* +X568363Y375641D01* +X568431Y375731D01* +X568442Y375759D01* +X568458Y375783D01* +X568492Y375891D01* +X568533Y375997D01* +X568535Y376026D01* +X568544Y376054D01* +X568547Y376168D01* +X568556Y376280D01* +X568550Y376309D01* +X568551Y376338D01* +X568523Y376448D01* +X568500Y376559D01* +X568487Y376585D01* +X568479Y376613D01* +X568422Y376711D01* +X568369Y376811D01* +X568349Y376833D01* +X568334Y376858D01* +X568252Y376935D01* +X568174Y377017D01* +X568148Y377032D01* +X568127Y377052D01* +X568026Y377104D01* +X567928Y377161D01* +X567900Y377168D01* +X567874Y377182D01* +X567796Y377195D01* +X567653Y377231D01* +X567590Y377229D01* +X567543Y377237D01* +X509417Y377237D01* +X509388Y377233D01* +X509359Y377236D01* +X509248Y377213D01* +X509136Y377197D01* +X509109Y377185D01* +X509080Y377180D01* +X508980Y377127D01* +X508876Y377081D01* +X508854Y377062D01* +X508828Y377049D01* +X508746Y376971D01* +X508659Y376898D01* +X508643Y376873D01* +X508622Y376853D01* +X508565Y376755D01* +X508502Y376661D01* +X508493Y376633D01* +X508478Y376608D01* +X508450Y376498D01* +X508416Y376390D01* +X508415Y376360D01* +X508408Y376332D01* +X508412Y376219D01* +X508409Y376106D01* +X508416Y376077D01* +X508417Y376048D01* +X508452Y375940D01* +X508481Y375831D01* +X508496Y375805D01* +X508505Y375777D01* +X508550Y375713D01* +X508626Y375586D01* +X508672Y375543D01* +X508700Y375504D01* +X510198Y374006D01* +X511049Y371952D01* +X511049Y369728D01* +X510198Y367674D01* +X508626Y366102D01* +X507795Y365758D01* +X507721Y365714D01* +X507642Y365679D01* +X507599Y365642D01* +X507550Y365613D01* +X507491Y365551D01* +X507425Y365495D01* +X507394Y365448D01* +X507355Y365407D01* +X507316Y365330D01* +X507268Y365259D01* +X507251Y365205D01* +X507225Y365154D01* +X507208Y365070D01* +X507182Y364988D01* +X507181Y364931D01* +X507170Y364875D01* +X507177Y364790D01* +X507175Y364704D01* +X507189Y364648D01* +X507194Y364592D01* +X507225Y364512D01* +X507247Y364429D01* +X507276Y364380D01* +X507296Y364327D01* +X507348Y364258D01* +X507392Y364184D01* +X507433Y364145D01* +X507468Y364100D01* +X507537Y364048D01* +X507599Y363990D01* +X507650Y363964D01* +X507695Y363930D01* +X507776Y363899D01* +X507852Y363860D01* +X507901Y363852D01* +X507961Y363829D01* +X508106Y363818D01* +X508183Y363805D01* +X509263Y363805D01* +X596191Y276876D01* +X596261Y276824D01* +X596325Y276764D01* +X596375Y276738D01* +X596419Y276705D01* +X596500Y276674D01* +X596578Y276634D01* +X596626Y276626D01* +X596684Y276604D01* +X596832Y276592D01* +X596909Y276579D01* +X726527Y276579D01* +X726556Y276583D01* +X726585Y276580D01* +X726696Y276603D01* +X726808Y276619D01* +X726835Y276631D01* +X726864Y276636D01* +X726964Y276689D01* +X727068Y276735D01* +X727090Y276754D01* +X727116Y276767D01* +X727198Y276845D01* +X727285Y276918D01* +X727301Y276943D01* +X727322Y276963D01* +X727379Y277061D01* +X727442Y277155D01* +X727451Y277183D01* +X727466Y277208D01* +X727494Y277318D01* +X727528Y277426D01* +X727529Y277456D01* +X727536Y277484D01* +X727532Y277597D01* +X727535Y277710D01* +X727528Y277739D01* +X727527Y277768D01* +X727492Y277876D01* +X727463Y277985D01* +X727448Y278011D01* +X727439Y278039D01* +X727394Y278103D01* +X727318Y278230D01* +X727272Y278273D01* +X727244Y278312D01* +X726782Y278774D01* +X725931Y280828D01* +X725931Y283052D01* +X726782Y285106D01* +X728354Y286678D01* +X730408Y287529D01* +X732632Y287529D01* +X734686Y286678D01* +X736258Y285106D01* +X737109Y283052D01* +X737109Y280828D01* +X736258Y278774D01* +X735796Y278312D01* +X735778Y278288D01* +X735755Y278269D01* +X735693Y278175D01* +X735625Y278085D01* +X735614Y278057D01* +X735598Y278033D01* +X735564Y277925D01* +X735523Y277819D01* +X735521Y277790D01* +X735512Y277762D01* +X735509Y277648D01* +X735500Y277536D01* +X735506Y277507D01* +X735505Y277478D01* +X735533Y277368D01* +X735556Y277257D01* +X735569Y277231D01* +X735577Y277203D01* +X735634Y277105D01* +X735687Y277005D01* +X735707Y276983D01* +X735722Y276958D01* +X735805Y276881D01* +X735882Y276799D01* +X735908Y276784D01* +X735929Y276764D01* +X736030Y276712D01* +X736128Y276655D01* +X736156Y276648D01* +X736182Y276634D01* +X736260Y276621D01* +X736403Y276585D01* +X736466Y276587D01* +X736513Y276579D01* +X947507Y276579D01* +X947536Y276583D01* +X947565Y276580D01* +X947676Y276603D01* +X947788Y276619D01* +X947815Y276631D01* +X947844Y276636D01* +X947944Y276689D01* +X948048Y276735D01* +X948070Y276754D01* +X948096Y276767D01* +X948178Y276845D01* +X948265Y276918D01* +X948281Y276943D01* +X948302Y276963D01* +X948359Y277061D01* +X948422Y277155D01* +X948431Y277183D01* +X948446Y277208D01* +X948474Y277318D01* +X948508Y277426D01* +X948509Y277456D01* +X948516Y277484D01* +X948512Y277597D01* +X948515Y277710D01* +X948508Y277739D01* +X948507Y277768D01* +X948472Y277876D01* +X948443Y277985D01* +X948428Y278011D01* +X948419Y278039D01* +X948374Y278103D01* +X948298Y278230D01* +X948252Y278273D01* +X948224Y278312D01* +X947762Y278774D01* +X946911Y280828D01* +X946911Y283052D01* +X947762Y285106D01* +X949334Y286678D01* +X951388Y287529D01* +X953612Y287529D01* +X955666Y286678D01* +X957238Y285106D01* +X958089Y283052D01* +X958089Y280828D01* +X957238Y278774D01* +X956776Y278312D01* +X956758Y278288D01* +X956735Y278269D01* +X956673Y278175D01* +X956605Y278085D01* +X956594Y278057D01* +X956578Y278033D01* +X956544Y277925D01* +X956503Y277819D01* +X956501Y277790D01* +X956492Y277762D01* +X956489Y277648D01* +X956480Y277536D01* +X956486Y277507D01* +X956485Y277478D01* +X956513Y277368D01* +X956536Y277257D01* +X956549Y277231D01* +X956557Y277203D01* +X956614Y277105D01* +X956667Y277005D01* +X956687Y276983D01* +X956702Y276958D01* +X956785Y276881D01* +X956862Y276799D01* +X956888Y276784D01* +X956909Y276764D01* +X957010Y276712D01* +X957108Y276655D01* +X957136Y276648D01* +X957162Y276634D01* +X957240Y276621D01* +X957383Y276585D01* +X957446Y276587D01* +X957493Y276579D01* +X1120227Y276579D01* +X1120256Y276583D01* +X1120285Y276580D01* +X1120396Y276603D01* +X1120508Y276619D01* +X1120535Y276631D01* +X1120564Y276636D01* +X1120664Y276689D01* +X1120768Y276735D01* +X1120790Y276754D01* +X1120816Y276767D01* +X1120898Y276845D01* +X1120985Y276918D01* +X1121001Y276943D01* +X1121022Y276963D01* +X1121079Y277061D01* +X1121142Y277155D01* +X1121151Y277183D01* +X1121166Y277208D01* +X1121194Y277318D01* +X1121228Y277426D01* +X1121229Y277456D01* +X1121236Y277484D01* +X1121232Y277597D01* +X1121235Y277710D01* +X1121228Y277739D01* +X1121227Y277768D01* +X1121192Y277876D01* +X1121163Y277985D01* +X1121148Y278011D01* +X1121139Y278039D01* +X1121094Y278103D01* +X1121018Y278230D01* +X1120972Y278273D01* +X1120944Y278312D01* +X1120482Y278774D01* +X1119631Y280828D01* +X1119631Y283052D01* +X1120482Y285106D01* +X1122054Y286678D01* +X1124108Y287529D01* +X1126332Y287529D01* +X1128386Y286678D01* +X1129958Y285106D01* +X1130809Y283052D01* +X1130809Y280828D01* +X1129958Y278774D01* +X1129496Y278312D01* +X1129478Y278288D01* +X1129455Y278269D01* +X1129393Y278175D01* +X1129325Y278085D01* +X1129314Y278057D01* +X1129298Y278033D01* +X1129264Y277925D01* +X1129223Y277819D01* +X1129221Y277790D01* +X1129212Y277762D01* +X1129209Y277648D01* +X1129200Y277536D01* +X1129206Y277507D01* +X1129205Y277478D01* +X1129233Y277368D01* +X1129256Y277257D01* +X1129269Y277231D01* +X1129277Y277203D01* +X1129334Y277105D01* +X1129387Y277005D01* +X1129407Y276983D01* +X1129422Y276958D01* +X1129505Y276881D01* +X1129582Y276799D01* +X1129608Y276784D01* +X1129629Y276764D01* +X1129730Y276712D01* +X1129828Y276655D01* +X1129856Y276648D01* +X1129882Y276634D01* +X1129960Y276621D01* +X1130103Y276585D01* +X1130166Y276587D01* +X1130213Y276579D01* +X1148147Y276579D01* +X1148233Y276591D01* +X1148321Y276594D01* +X1148373Y276611D01* +X1148428Y276619D01* +X1148508Y276654D01* +X1148591Y276681D01* +X1148630Y276709D01* +X1148688Y276735D01* +X1148801Y276831D01* +X1148865Y276876D01* +X1151897Y279909D01* +X1160585Y279909D01* +X1160671Y279921D01* +X1160759Y279924D01* +X1160811Y279941D01* +X1160866Y279949D01* +X1160946Y279984D01* +X1161029Y280011D01* +X1161068Y280039D01* +X1161125Y280065D01* +X1161239Y280161D01* +X1161302Y280206D01* +X1162694Y281598D01* +X1164748Y282449D01* +X1166972Y282449D01* +X1169026Y281598D01* +X1170598Y280026D01* +X1171449Y277972D01* +X1171449Y275748D01* +X1170598Y273694D01* +X1169026Y272122D01* +X1166972Y271271D01* +X1164844Y271271D01* +X1164786Y271263D01* +X1164728Y271265D01* +X1164646Y271243D01* +X1164562Y271231D01* +X1164509Y271208D01* +X1164453Y271193D01* +X1164380Y271150D01* +X1164303Y271115D01* +X1164258Y271077D01* +X1164208Y271048D01* +X1164150Y270986D01* +X1164086Y270932D01* +X1164054Y270883D01* +X1164014Y270840D01* +X1163975Y270765D01* +X1163928Y270695D01* +X1163911Y270639D01* +X1163884Y270587D01* +X1163873Y270519D01* +X1163843Y270424D01* +X1163840Y270324D01* +X1163829Y270256D01* +X1163829Y268128D01* +X1162978Y266074D01* +X1161406Y264502D01* +X1159352Y263651D01* +X1157128Y263651D01* +X1155074Y264502D01* +X1153682Y265894D01* +X1153613Y265946D01* +X1153549Y266006D01* +X1153499Y266032D01* +X1153455Y266065D01* +X1153374Y266096D01* +X1153296Y266136D01* +X1153248Y266144D01* +X1153190Y266166D01* +X1153042Y266178D01* +X1152965Y266191D01* +X876895Y266191D01* +X876781Y266175D01* +X876667Y266165D01* +X876641Y266155D01* +X876614Y266151D01* +X876509Y266104D01* +X876402Y266063D01* +X876380Y266047D01* +X876354Y266035D01* +X876267Y265961D01* +X876175Y265892D01* +X876158Y265869D01* +X876137Y265852D01* +X876074Y265756D01* +X876005Y265664D01* +X875995Y265638D01* +X875980Y265615D01* +X875945Y265505D01* +X875904Y265398D01* +X875902Y265370D01* +X875894Y265344D01* +X875891Y265229D01* +X875882Y265115D01* +X875887Y265090D01* +X875887Y265060D01* +X875954Y264803D01* +X875957Y264787D01* +X876809Y262732D01* +X876809Y260763D01* +X876821Y260677D01* +X876824Y260589D01* +X876841Y260537D01* +X876849Y260482D01* +X876884Y260402D01* +X876911Y260319D01* +X876939Y260280D01* +X876965Y260222D01* +X877061Y260109D01* +X877106Y260045D01* +X878789Y258362D01* +X878859Y258310D01* +X878923Y258250D01* +X878973Y258224D01* +X879017Y258191D01* +X879098Y258160D01* +X879176Y258120D01* +X879224Y258112D01* +X879282Y258090D01* +X879430Y258078D01* +X879507Y258065D01* +X882432Y258065D01* +X882519Y258077D01* +X882606Y258080D01* +X882659Y258097D01* +X882714Y258105D01* +X882793Y258140D01* +X882877Y258167D01* +X882916Y258195D01* +X882973Y258221D01* +X883086Y258317D01* +X883150Y258362D01* +X887933Y263145D01* +X1090574Y263145D01* +X1093582Y260137D01* +X1093652Y260084D01* +X1093716Y260024D01* +X1093765Y259999D01* +X1093810Y259966D01* +X1093891Y259935D01* +X1093969Y259895D01* +X1094017Y259887D01* +X1094075Y259864D01* +X1094223Y259852D01* +X1094300Y259839D01* +X1095601Y259839D01* +X1097655Y258988D01* +X1099227Y257416D01* +X1100078Y255362D01* +X1100078Y253139D01* +X1099227Y251085D01* +X1097655Y249513D01* +X1097592Y249486D01* +X1097493Y249428D01* +X1097391Y249375D01* +X1097371Y249356D01* +X1097347Y249342D01* +X1097268Y249258D01* +X1097185Y249179D01* +X1097171Y249155D01* +X1097152Y249135D01* +X1097100Y249033D01* +X1097041Y248934D01* +X1097035Y248907D01* +X1097022Y248883D01* +X1097000Y248770D01* +X1096971Y248659D01* +X1096972Y248631D01* +X1096967Y248604D01* +X1096977Y248489D01* +X1096980Y248374D01* +X1096989Y248348D01* +X1096991Y248320D01* +X1097033Y248213D01* +X1097068Y248104D01* +X1097082Y248084D01* +X1097093Y248055D01* +X1097254Y247842D01* +X1097263Y247831D01* +X1097297Y247796D01* +X1098148Y245742D01* +X1098148Y243518D01* +X1097297Y241464D01* +X1095725Y239892D01* +X1093671Y239041D01* +X1091703Y239041D01* +X1091616Y239029D01* +X1091529Y239026D01* +X1091476Y239009D01* +X1091421Y239001D01* +X1091342Y238966D01* +X1091258Y238939D01* +X1091219Y238911D01* +X1091162Y238885D01* +X1091049Y238789D01* +X1090985Y238744D01* +X1090703Y238462D01* +X1090685Y238438D01* +X1090663Y238419D01* +X1090600Y238325D01* +X1090532Y238235D01* +X1090522Y238207D01* +X1090505Y238183D01* +X1090471Y238075D01* +X1090431Y237969D01* +X1090429Y237940D01* +X1090420Y237912D01* +X1090417Y237799D01* +X1090407Y237686D01* +X1090413Y237657D01* +X1090412Y237628D01* +X1090441Y237518D01* +X1090463Y237407D01* +X1090477Y237381D01* +X1090484Y237353D01* +X1090542Y237255D01* +X1090594Y237155D01* +X1090614Y237133D01* +X1090629Y237108D01* +X1090712Y237031D01* +X1090790Y236949D01* +X1090815Y236934D01* +X1090837Y236914D01* +X1090937Y236862D01* +X1091035Y236805D01* +X1091064Y236798D01* +X1091090Y236784D01* +X1091167Y236771D01* +X1091311Y236735D01* +X1091373Y236737D01* +X1091421Y236729D01* +X1151477Y236729D01* +X1151563Y236741D01* +X1151651Y236744D01* +X1151703Y236761D01* +X1151758Y236769D01* +X1151838Y236804D01* +X1151921Y236831D01* +X1151960Y236859D01* +X1152018Y236885D01* +X1152131Y236981D01* +X1152195Y237026D01* +X1189515Y274346D01* +X1189550Y274393D01* +X1189592Y274433D01* +X1189635Y274506D01* +X1189685Y274573D01* +X1189706Y274628D01* +X1189736Y274678D01* +X1189757Y274760D01* +X1189787Y274839D01* +X1189791Y274897D01* +X1189806Y274954D01* +X1189803Y275038D01* +X1189810Y275122D01* +X1189799Y275180D01* +X1189797Y275238D01* +X1189771Y275318D01* +X1189754Y275401D01* +X1189727Y275453D01* +X1189709Y275509D01* +X1189669Y275565D01* +X1189623Y275653D01* +X1189555Y275726D01* +X1189515Y275782D01* +X1189062Y276234D01* +X1188211Y278288D01* +X1188211Y280512D01* +X1189062Y282566D01* +X1190634Y284138D01* +X1192688Y284989D01* +X1194912Y284989D01* +X1196966Y284138D01* +X1198538Y282566D01* +X1199212Y280938D01* +X1199227Y280913D01* +X1199236Y280885D01* +X1199299Y280791D01* +X1199357Y280693D01* +X1199378Y280673D01* +X1199394Y280649D01* +X1199481Y280576D01* +X1199563Y280498D01* +X1199589Y280485D01* +X1199612Y280466D01* +X1199715Y280420D01* +X1199816Y280368D01* +X1199845Y280362D01* +X1199872Y280350D01* +X1199984Y280335D01* +X1200095Y280313D01* +X1200124Y280316D01* +X1200153Y280312D01* +X1200265Y280328D01* +X1200378Y280337D01* +X1200405Y280348D01* +X1200434Y280352D01* +X1200538Y280399D01* +X1200643Y280439D01* +X1200667Y280457D01* +X1200694Y280469D01* +X1200780Y280543D01* +X1200870Y280611D01* +X1200888Y280635D01* +X1200910Y280654D01* +X1200952Y280720D01* +X1201040Y280839D01* +X1201062Y280897D01* +X1201088Y280938D01* +X1201762Y282566D01* +X1203334Y284138D01* +X1205388Y284989D01* +X1207612Y284989D01* +X1209666Y284138D01* +X1211238Y282566D01* +X1212089Y280512D01* +X1212089Y278288D01* +X1211238Y276234D01* +X1209666Y274662D01* +X1207612Y273811D01* +X1205643Y273811D01* +X1205557Y273799D01* +X1205469Y273796D01* +X1205417Y273779D01* +X1205362Y273771D01* +X1205282Y273736D01* +X1205199Y273709D01* +X1205160Y273681D01* +X1205102Y273655D01* +X1204989Y273559D01* +X1204925Y273514D01* +X1161745Y230334D01* +X1161728Y230310D01* +X1161705Y230291D01* +X1161643Y230197D01* +X1161575Y230107D01* +X1161564Y230079D01* +X1161548Y230055D01* +X1161514Y229947D01* +X1161473Y229841D01* +X1161471Y229812D01* +X1161462Y229784D01* +X1161459Y229670D01* +X1161450Y229558D01* +X1161455Y229529D01* +X1161455Y229500D01* +X1161483Y229390D01* +X1161506Y229279D01* +X1161519Y229253D01* +X1161527Y229225D01* +X1161584Y229127D01* +X1161637Y229027D01* +X1161657Y229005D01* +X1161672Y228980D01* +X1161754Y228903D01* +X1161832Y228821D01* +X1161858Y228806D01* +X1161879Y228786D01* +X1161980Y228734D01* +X1162078Y228677D01* +X1162106Y228670D01* +X1162132Y228656D01* +X1162210Y228643D01* +X1162353Y228607D01* +X1162416Y228609D01* +X1162463Y228601D01* +X1189069Y228601D01* +X1189155Y228613D01* +X1189243Y228616D01* +X1189295Y228633D01* +X1189350Y228641D01* +X1189430Y228676D01* +X1189513Y228703D01* +X1189552Y228731D01* +X1189610Y228757D01* +X1189723Y228853D01* +X1189787Y228898D01* +X1200614Y239725D01* +X1200666Y239795D01* +X1200726Y239859D01* +X1200752Y239909D01* +X1200785Y239953D01* +X1200816Y240034D01* +X1200856Y240112D01* +X1200864Y240160D01* +X1200886Y240218D01* +X1200898Y240366D01* +X1200911Y240443D01* +X1200911Y242412D01* +X1201762Y244466D01* +X1203334Y246038D01* +X1205388Y246889D01* +X1207612Y246889D01* +X1209666Y246038D01* +X1211238Y244466D01* +X1212089Y242412D01* +X1212089Y240188D01* +X1211238Y238134D01* +X1209666Y236562D01* +X1207612Y235711D01* +X1205643Y235711D01* +X1205557Y235699D01* +X1205469Y235696D01* +X1205417Y235679D01* +X1205362Y235671D01* +X1205282Y235636D01* +X1205199Y235609D01* +X1205160Y235581D01* +X1205102Y235555D01* +X1204989Y235459D01* +X1204925Y235414D01* +X1194098Y224587D01* +X1194098Y224586D01* +X1192813Y223302D01* +X1192778Y223255D01* +X1192736Y223215D01* +X1192693Y223142D01* +X1192642Y223074D01* +X1192621Y223020D01* +X1192592Y222969D01* +X1192571Y222888D01* +X1192541Y222809D01* +X1192536Y222750D01* +X1192522Y222694D01* +X1192524Y222610D01* +X1192517Y222525D01* +X1192529Y222468D01* +X1192531Y222410D01* +X1192557Y222329D01* +X1192573Y222247D01* +X1192600Y222195D01* +X1192618Y222139D01* +X1192658Y222083D01* +X1192704Y221994D01* +X1192773Y221922D01* +X1192813Y221866D01* +X1192893Y221786D01* +X1192963Y221734D01* +X1193027Y221674D01* +X1193076Y221648D01* +X1193120Y221615D01* +X1193202Y221584D01* +X1193280Y221544D01* +X1193327Y221536D01* +X1193386Y221514D01* +X1193533Y221502D01* +X1193611Y221489D01* +X1201225Y221489D01* +X1201311Y221501D01* +X1201399Y221504D01* +X1201451Y221521D01* +X1201506Y221529D01* +X1201586Y221564D01* +X1201669Y221591D01* +X1201708Y221619D01* +X1201765Y221645D01* +X1201879Y221741D01* +X1201942Y221786D01* +X1203334Y223178D01* +X1205388Y224029D01* +X1207612Y224029D01* +X1209666Y223178D01* +X1211238Y221606D01* +X1212089Y219552D01* +X1212089Y217328D01* +X1211238Y215274D01* +X1209666Y213702D01* +X1207612Y212851D01* +X1205388Y212851D01* +X1203334Y213702D01* +X1201942Y215094D01* +X1201873Y215146D01* +X1201809Y215206D01* +X1201759Y215232D01* +X1201715Y215265D01* +X1201633Y215296D01* +X1201556Y215336D01* +X1201508Y215344D01* +X1201450Y215366D01* +X1201302Y215378D01* +X1201225Y215391D01* +X1195991Y215391D01* +X1195962Y215387D01* +X1195933Y215390D01* +X1195822Y215367D01* +X1195710Y215351D01* +X1195683Y215339D01* +X1195654Y215334D01* +X1195554Y215282D01* +X1195450Y215235D01* +X1195428Y215216D01* +X1195402Y215203D01* +X1195320Y215125D01* +X1195233Y215052D01* +X1195217Y215027D01* +X1195196Y215007D01* +X1195139Y214909D01* +X1195076Y214815D01* +X1195067Y214787D01* +X1195052Y214762D01* +X1195024Y214652D01* +X1194990Y214544D01* +X1194989Y214514D01* +X1194982Y214486D01* +X1194986Y214373D01* +X1194983Y214260D01* +X1194990Y214231D01* +X1194991Y214202D01* +X1195026Y214094D01* +X1195055Y213985D01* +X1195070Y213959D01* +X1195079Y213931D01* +X1195124Y213868D01* +X1195200Y213740D01* +X1195245Y213697D01* +X1195273Y213658D01* +X1201446Y207485D01* +X1201493Y207450D01* +X1201533Y207408D01* +X1201606Y207365D01* +X1201673Y207315D01* +X1201728Y207294D01* +X1201778Y207264D01* +X1201860Y207243D01* +X1201939Y207213D01* +X1201997Y207209D01* +X1202054Y207194D01* +X1202138Y207197D01* +X1202222Y207190D01* +X1202280Y207201D01* +X1202338Y207203D01* +X1202418Y207229D01* +X1202501Y207246D01* +X1202553Y207273D01* +X1202609Y207291D01* +X1202665Y207331D01* +X1202753Y207377D01* +X1202826Y207445D01* +X1202882Y207485D01* +X1203334Y207938D01* +X1205388Y208789D01* +X1207612Y208789D01* +X1209666Y207938D01* +X1211238Y206366D01* +X1212089Y204312D01* +X1212089Y202088D01* +X1211238Y200034D01* +X1209666Y198462D01* +X1207612Y197611D01* +X1205388Y197611D01* +X1203334Y198462D01* +X1201942Y199854D01* +X1201873Y199906D01* +X1201809Y199966D01* +X1201759Y199992D01* +X1201715Y200025D01* +X1201634Y200056D01* +X1201556Y200096D01* +X1201508Y200104D01* +X1201450Y200126D01* +X1201302Y200138D01* +X1201225Y200151D01* +X1200157Y200151D01* +X1186231Y214078D01* +X1186161Y214130D01* +X1186097Y214190D01* +X1186047Y214216D01* +X1186003Y214249D01* +X1185922Y214280D01* +X1185844Y214320D01* +X1185796Y214328D01* +X1185738Y214350D01* +X1185590Y214362D01* +X1185513Y214375D01* +X1078679Y214375D01* +X1078650Y214371D01* +X1078621Y214374D01* +X1078510Y214351D01* +X1078398Y214335D01* +X1078371Y214323D01* +X1078342Y214318D01* +X1078242Y214265D01* +X1078138Y214219D01* +X1078116Y214200D01* +X1078090Y214187D01* +X1078008Y214109D01* +X1077921Y214036D01* +X1077905Y214011D01* +X1077884Y213991D01* +X1077827Y213893D01* +X1077764Y213799D01* +X1077755Y213771D01* +X1077740Y213746D01* +X1077712Y213636D01* +X1077678Y213528D01* +X1077677Y213498D01* +X1077670Y213470D01* +X1077674Y213357D01* +X1077671Y213244D01* +X1077678Y213215D01* +X1077679Y213186D01* +X1077714Y213078D01* +X1077743Y212969D01* +X1077758Y212943D01* +X1077767Y212915D01* +X1077812Y212851D01* +X1077888Y212724D01* +X1077934Y212681D01* +X1077962Y212642D01* +X1079158Y211446D01* +X1080009Y209392D01* +X1080009Y207168D01* +X1079158Y205114D01* +X1077586Y203542D01* +X1075532Y202691D01* +X1073308Y202691D01* +X1071254Y203542D01* +X1069682Y205114D01* +X1068831Y207168D01* +X1068831Y209392D01* +X1069682Y211446D01* +X1070878Y212642D01* +X1070896Y212666D01* +X1070919Y212685D01* +X1070981Y212779D01* +X1071049Y212869D01* +X1071060Y212897D01* +X1071076Y212921D01* +X1071110Y213029D01* +X1071151Y213135D01* +X1071153Y213164D01* +X1071162Y213192D01* +X1071165Y213306D01* +X1071174Y213418D01* +X1071168Y213447D01* +X1071169Y213476D01* +X1071141Y213586D01* +X1071118Y213697D01* +X1071105Y213723D01* +X1071097Y213751D01* +X1071040Y213849D01* +X1070987Y213949D01* +X1070967Y213971D01* +X1070952Y213996D01* +X1070870Y214073D01* +X1070792Y214155D01* +X1070766Y214170D01* +X1070745Y214190D01* +X1070644Y214242D01* +X1070546Y214299D01* +X1070518Y214306D01* +X1070492Y214320D01* +X1070414Y214333D01* +X1070271Y214369D01* +X1070208Y214367D01* +X1070161Y214375D01* +X1044607Y214375D01* +X1044578Y214371D01* +X1044549Y214374D01* +X1044438Y214351D01* +X1044326Y214335D01* +X1044299Y214323D01* +X1044270Y214318D01* +X1044170Y214266D01* +X1044066Y214219D01* +X1044044Y214200D01* +X1044018Y214187D01* +X1043936Y214109D01* +X1043849Y214036D01* +X1043833Y214011D01* +X1043812Y213991D01* +X1043755Y213893D01* +X1043692Y213799D01* +X1043683Y213771D01* +X1043668Y213746D01* +X1043640Y213636D01* +X1043606Y213528D01* +X1043605Y213498D01* +X1043598Y213470D01* +X1043602Y213357D01* +X1043599Y213244D01* +X1043606Y213215D01* +X1043607Y213186D01* +X1043642Y213078D01* +X1043671Y212969D01* +X1043686Y212943D01* +X1043695Y212915D01* +X1043740Y212852D01* +X1043816Y212724D01* +X1043861Y212681D01* +X1043889Y212642D01* +X1062685Y193846D01* +X1062755Y193794D01* +X1062819Y193734D01* +X1062869Y193708D01* +X1062913Y193675D01* +X1062994Y193644D01* +X1063072Y193604D01* +X1063120Y193596D01* +X1063178Y193574D01* +X1063326Y193562D01* +X1063403Y193549D01* +X1069145Y193549D01* +X1069231Y193561D01* +X1069319Y193564D01* +X1069371Y193581D01* +X1069426Y193589D01* +X1069506Y193624D01* +X1069589Y193651D01* +X1069628Y193679D01* +X1069685Y193705D01* +X1069799Y193801D01* +X1069862Y193846D01* +X1071254Y195238D01* +X1073308Y196089D01* +X1075532Y196089D01* +X1077586Y195238D01* +X1079158Y193666D01* +X1080009Y191612D01* +X1080009Y189388D01* +X1079158Y187334D01* +X1077586Y185762D01* +X1075958Y185088D01* +X1075933Y185073D01* +X1075905Y185064D01* +X1075811Y185001D01* +X1075713Y184943D01* +X1075693Y184922D01* +X1075669Y184906D01* +X1075596Y184819D01* +X1075518Y184737D01* +X1075505Y184711D01* +X1075486Y184688D01* +X1075440Y184585D01* +X1075388Y184484D01* +X1075382Y184455D01* +X1075370Y184428D01* +X1075355Y184316D01* +X1075333Y184205D01* +X1075336Y184176D01* +X1075332Y184147D01* +X1075348Y184035D01* +X1075357Y183922D01* +X1075368Y183895D01* +X1075372Y183865D01* +X1075419Y183762D01* +X1075460Y183657D01* +X1075477Y183633D01* +X1075489Y183606D01* +X1075563Y183520D01* +X1075631Y183430D01* +X1075655Y183412D01* +X1075674Y183390D01* +X1075740Y183348D01* +X1075859Y183260D01* +X1075917Y183238D01* +X1075958Y183212D01* +X1077586Y182538D01* +X1079158Y180966D01* +X1080009Y178912D01* +X1080009Y176688D01* +X1079158Y174634D01* +X1079116Y174592D01* +X1079064Y174523D01* +X1079005Y174461D01* +X1078979Y174410D01* +X1078945Y174365D01* +X1078914Y174285D01* +X1078875Y174208D01* +X1078864Y174152D01* +X1078844Y174099D01* +X1078836Y174014D01* +X1078820Y173929D01* +X1078825Y173873D01* +X1078820Y173816D01* +X1078837Y173732D01* +X1078844Y173646D01* +X1078865Y173593D01* +X1078876Y173537D01* +X1078915Y173461D01* +X1078946Y173381D01* +X1078981Y173335D01* +X1079007Y173285D01* +X1079066Y173223D01* +X1079118Y173154D01* +X1079163Y173120D01* +X1079203Y173079D01* +X1079277Y173035D01* +X1079346Y172984D01* +X1079399Y172964D01* +X1079448Y172935D01* +X1079531Y172914D01* +X1079612Y172883D01* +X1079668Y172879D01* +X1079723Y172865D01* +X1079809Y172868D01* +X1079895Y172861D01* +X1079943Y172872D01* +X1080008Y172874D01* +X1080146Y172919D01* +X1080222Y172936D01* +X1080928Y173229D01* +X1083152Y173229D01* +X1085206Y172378D01* +X1086778Y170806D01* +X1087629Y168752D01* +X1087629Y166528D01* +X1086778Y164474D01* +X1085206Y162902D01* +X1083152Y162051D01* +X1080928Y162051D01* +X1078874Y162902D01* +X1077482Y164294D01* +X1077413Y164346D01* +X1077349Y164406D01* +X1077299Y164432D01* +X1077255Y164465D01* +X1077174Y164496D01* +X1077096Y164536D01* +X1077048Y164544D01* +X1076990Y164566D01* +X1076842Y164578D01* +X1076765Y164591D01* +X1071125Y164591D01* +X1033831Y201886D01* +X1033761Y201938D01* +X1033697Y201998D01* +X1033647Y202024D01* +X1033603Y202057D01* +X1033522Y202088D01* +X1033444Y202128D01* +X1033396Y202136D01* +X1033338Y202158D01* +X1033190Y202170D01* +X1033113Y202183D01* +X1018699Y202183D01* +X1018670Y202179D01* +X1018641Y202182D01* +X1018530Y202159D01* +X1018418Y202143D01* +X1018391Y202131D01* +X1018362Y202126D01* +X1018262Y202074D01* +X1018158Y202027D01* +X1018136Y202008D01* +X1018110Y201995D01* +X1018028Y201917D01* +X1017941Y201844D01* +X1017925Y201819D01* +X1017904Y201799D01* +X1017847Y201701D01* +X1017784Y201607D01* +X1017775Y201579D01* +X1017760Y201554D01* +X1017732Y201444D01* +X1017698Y201336D01* +X1017697Y201306D01* +X1017690Y201278D01* +X1017694Y201165D01* +X1017691Y201052D01* +X1017698Y201023D01* +X1017699Y200994D01* +X1017734Y200886D01* +X1017763Y200777D01* +X1017778Y200751D01* +X1017787Y200723D01* +X1017832Y200660D01* +X1017908Y200532D01* +X1017953Y200489D01* +X1017981Y200450D01* +X1024919Y193512D01* +X1025011Y193443D01* +X1025100Y193369D01* +X1025125Y193358D01* +X1025146Y193341D01* +X1025254Y193300D01* +X1025360Y193254D01* +X1025387Y193250D01* +X1025412Y193240D01* +X1025527Y193231D01* +X1025641Y193215D01* +X1025668Y193219D01* +X1025695Y193217D01* +X1025808Y193239D01* +X1025923Y193256D01* +X1025947Y193267D01* +X1025974Y193273D01* +X1026073Y193324D01* +X1026086Y193328D01* +X1026093Y193333D01* +X1026182Y193373D01* +X1026202Y193391D01* +X1026226Y193404D01* +X1026310Y193483D01* +X1026344Y193512D01* +X1026359Y193523D01* +X1026374Y193537D01* +X1026398Y193558D01* +X1026404Y193567D01* +X1028074Y195238D01* +X1030128Y196089D01* +X1032352Y196089D01* +X1034406Y195238D01* +X1035978Y193666D01* +X1036829Y191612D01* +X1036829Y189388D01* +X1035978Y187334D01* +X1034406Y185762D01* +X1032352Y184911D01* +X1030128Y184911D01* +X1028073Y185763D01* +X1027961Y185791D01* +X1027852Y185826D01* +X1027824Y185827D01* +X1027797Y185834D01* +X1027683Y185830D01* +X1027568Y185833D01* +X1027541Y185826D01* +X1027513Y185826D01* +X1027404Y185791D01* +X1027293Y185762D01* +X1027269Y185747D01* +X1027242Y185739D01* +X1027147Y185675D01* +X1027048Y185616D01* +X1027029Y185596D01* +X1027006Y185581D01* +X1026932Y185493D01* +X1026854Y185409D01* +X1026841Y185384D01* +X1026823Y185363D01* +X1026777Y185258D01* +X1026724Y185156D01* +X1026720Y185131D01* +X1026708Y185103D01* +X1026671Y184840D01* +X1026669Y184825D01* +X1026669Y180535D01* +X1026681Y180449D01* +X1026684Y180361D01* +X1026701Y180309D01* +X1026709Y180254D01* +X1026744Y180174D01* +X1026771Y180091D01* +X1026799Y180052D01* +X1026825Y179995D01* +X1026921Y179881D01* +X1026966Y179818D01* +X1028358Y178426D01* +X1029209Y176372D01* +X1029209Y174148D01* +X1028358Y172094D01* +X1027162Y170898D01* +X1027126Y170851D01* +X1027084Y170811D01* +X1027041Y170738D01* +X1026991Y170671D01* +X1026970Y170616D01* +X1026940Y170566D01* +X1026919Y170484D01* +X1026889Y170405D01* +X1026885Y170347D01* +X1026870Y170290D01* +X1026873Y170206D01* +X1026866Y170122D01* +X1026877Y170064D01* +X1026879Y170006D01* +X1026905Y169926D01* +X1026922Y169843D01* +X1026949Y169791D01* +X1026967Y169735D01* +X1027007Y169679D01* +X1027053Y169591D01* +X1027121Y169518D01* +X1027162Y169462D01* +X1028358Y168266D01* +X1029209Y166212D01* +X1029209Y164243D01* +X1029221Y164157D01* +X1029224Y164069D01* +X1029241Y164017D01* +X1029249Y163962D01* +X1029284Y163882D01* +X1029311Y163799D01* +X1029339Y163760D01* +X1029365Y163702D01* +X1029461Y163589D01* +X1029506Y163525D01* +X1034971Y158060D01* +X1035041Y158008D01* +X1035105Y157948D01* +X1035155Y157922D01* +X1035199Y157889D01* +X1035280Y157858D01* +X1035358Y157818D01* +X1035406Y157810D01* +X1035464Y157788D01* +X1035612Y157776D01* +X1035689Y157763D01* +X1119953Y157763D01* +X1120039Y157775D01* +X1120127Y157778D01* +X1120179Y157795D01* +X1120234Y157803D01* +X1120314Y157838D01* +X1120397Y157865D01* +X1120436Y157893D01* +X1120494Y157919D01* +X1120607Y158015D01* +X1120671Y158060D01* +X1145999Y183389D01* +X1201225Y183389D01* +X1201311Y183401D01* +X1201399Y183404D01* +X1201451Y183421D01* +X1201506Y183429D01* +X1201586Y183464D01* +X1201669Y183491D01* +X1201708Y183519D01* +X1201765Y183545D01* +X1201879Y183641D01* +X1201942Y183686D01* +X1203334Y185078D01* +X1205388Y185929D01* +X1207612Y185929D01* +X1209666Y185078D01* +X1211238Y183506D01* +X1212089Y181452D01* +X1212089Y179228D01* +X1211238Y177174D01* +X1209666Y175602D01* +X1207612Y174751D01* +X1205388Y174751D01* +X1203334Y175602D01* +X1201942Y176994D01* +X1201873Y177046D01* +X1201809Y177106D01* +X1201759Y177132D01* +X1201715Y177165D01* +X1201634Y177196D01* +X1201556Y177236D01* +X1201508Y177244D01* +X1201450Y177266D01* +X1201302Y177278D01* +X1201225Y177291D01* +X1190911Y177291D01* +X1190882Y177287D01* +X1190853Y177290D01* +X1190742Y177267D01* +X1190630Y177251D01* +X1190603Y177239D01* +X1190574Y177234D01* +X1190474Y177182D01* +X1190370Y177135D01* +X1190348Y177116D01* +X1190322Y177103D01* +X1190240Y177025D01* +X1190153Y176952D01* +X1190137Y176927D01* +X1190116Y176907D01* +X1190059Y176809D01* +X1189996Y176715D01* +X1189987Y176687D01* +X1189972Y176662D01* +X1189944Y176552D01* +X1189910Y176444D01* +X1189909Y176414D01* +X1189902Y176386D01* +X1189906Y176273D01* +X1189903Y176160D01* +X1189910Y176131D01* +X1189911Y176102D01* +X1189946Y175994D01* +X1189975Y175885D01* +X1189990Y175859D01* +X1189999Y175831D01* +X1190044Y175768D01* +X1190120Y175640D01* +X1190165Y175597D01* +X1190193Y175558D01* +X1225197Y140555D01* +X1225197Y127195D01* +X1225209Y127109D01* +X1225212Y127021D01* +X1225229Y126969D01* +X1225237Y126914D01* +X1225272Y126834D01* +X1225299Y126751D01* +X1225327Y126712D01* +X1225353Y126655D01* +X1225449Y126541D01* +X1225494Y126478D01* +X1226886Y125086D01* +X1227737Y123032D01* +X1227737Y120808D01* +X1226886Y118754D01* +X1225314Y117182D01* +X1223260Y116331D01* +X1221036Y116331D01* +X1218982Y117182D01* +X1217410Y118754D01* +X1216559Y120808D01* +X1216559Y123032D01* +X1217410Y125086D01* +X1218802Y126478D01* +X1218854Y126547D01* +X1218914Y126611D01* +X1218940Y126661D01* +X1218973Y126705D01* +X1219004Y126786D01* +X1219044Y126864D01* +X1219052Y126912D01* +X1219074Y126970D01* +X1219086Y127118D01* +X1219099Y127195D01* +X1219099Y137609D01* +X1219087Y137695D01* +X1219084Y137783D01* +X1219067Y137835D01* +X1219059Y137890D01* +X1219024Y137970D01* +X1218997Y138053D01* +X1218969Y138092D01* +X1218943Y138150D01* +X1218847Y138263D01* +X1218802Y138327D01* +X1185215Y171914D01* +X1185145Y171966D01* +X1185081Y172026D01* +X1185031Y172052D01* +X1184987Y172085D01* +X1184906Y172116D01* +X1184828Y172156D01* +X1184780Y172164D01* +X1184722Y172186D01* +X1184574Y172198D01* +X1184497Y172211D01* +X1184235Y172211D01* +X1184121Y172195D01* +X1184007Y172185D01* +X1183981Y172175D01* +X1183954Y172171D01* +X1183849Y172124D01* +X1183742Y172083D01* +X1183720Y172067D01* +X1183694Y172055D01* +X1183607Y171981D01* +X1183515Y171912D01* +X1183498Y171889D01* +X1183477Y171872D01* +X1183414Y171776D01* +X1183345Y171684D01* +X1183335Y171658D01* +X1183320Y171635D01* +X1183285Y171525D01* +X1183244Y171418D01* +X1183242Y171390D01* +X1183234Y171364D01* +X1183231Y171249D01* +X1183222Y171135D01* +X1183227Y171110D01* +X1183227Y171080D01* +X1183294Y170822D01* +X1183297Y170807D01* +X1184149Y168752D01* +X1184149Y166528D01* +X1183298Y164474D01* +X1181726Y162902D01* +X1179672Y162051D01* +X1177448Y162051D01* +X1175394Y162902D01* +X1173822Y164474D01* +X1172971Y166528D01* +X1172971Y168752D01* +X1173823Y170807D01* +X1173851Y170919D01* +X1173886Y171028D01* +X1173887Y171056D01* +X1173894Y171083D01* +X1173891Y171197D01* +X1173893Y171312D01* +X1173886Y171339D01* +X1173886Y171367D01* +X1173851Y171476D01* +X1173822Y171587D01* +X1173807Y171611D01* +X1173799Y171638D01* +X1173735Y171733D01* +X1173676Y171832D01* +X1173656Y171851D01* +X1173641Y171874D01* +X1173553Y171948D01* +X1173469Y172026D01* +X1173444Y172039D01* +X1173423Y172057D01* +X1173318Y172103D01* +X1173216Y172156D01* +X1173191Y172160D01* +X1173163Y172172D01* +X1172900Y172209D01* +X1172885Y172211D01* +X1156295Y172211D01* +X1156181Y172195D01* +X1156067Y172185D01* +X1156041Y172175D01* +X1156014Y172171D01* +X1155909Y172124D01* +X1155802Y172083D01* +X1155780Y172067D01* +X1155754Y172055D01* +X1155667Y171981D01* +X1155575Y171912D01* +X1155558Y171889D01* +X1155537Y171872D01* +X1155474Y171776D01* +X1155405Y171684D01* +X1155395Y171658D01* +X1155380Y171635D01* +X1155345Y171525D01* +X1155304Y171418D01* +X1155302Y171390D01* +X1155294Y171364D01* +X1155291Y171249D01* +X1155282Y171135D01* +X1155287Y171110D01* +X1155287Y171080D01* +X1155354Y170822D01* +X1155357Y170807D01* +X1156209Y168752D01* +X1156209Y166528D01* +X1155358Y164474D01* +X1153786Y162902D01* +X1151732Y162051D01* +X1149414Y162051D01* +X1149389Y162058D01* +X1149387Y162058D01* +X1149385Y162058D01* +X1149245Y162054D01* +X1149105Y162050D01* +X1149103Y162049D01* +X1149101Y162049D01* +X1148967Y162006D01* +X1148834Y161963D01* +X1148833Y161962D01* +X1148831Y161962D01* +X1148817Y161952D01* +X1148598Y161805D01* +X1148578Y161781D01* +X1148557Y161767D01* +X1118695Y131905D01* +X1116612Y129821D01* +X963147Y129821D01* +X959155Y133814D01* +X959085Y133866D01* +X959021Y133926D01* +X958971Y133952D01* +X958927Y133985D01* +X958846Y134016D01* +X958768Y134056D01* +X958720Y134064D01* +X958662Y134086D01* +X958514Y134098D01* +X958437Y134111D01* +X956468Y134111D01* +X954414Y134962D01* +X952842Y136534D01* +X951991Y138588D01* +X951991Y140812D01* +X952842Y142866D01* +X954414Y144438D01* +X956468Y145289D01* +X958692Y145289D01* +X960746Y144438D01* +X962318Y142866D01* +X963169Y140812D01* +X963169Y138843D01* +X963181Y138757D01* +X963184Y138669D01* +X963201Y138617D01* +X963209Y138562D01* +X963244Y138482D01* +X963271Y138399D01* +X963299Y138360D01* +X963325Y138302D01* +X963421Y138189D01* +X963445Y138156D01* +X963445Y138155D01* +X963466Y138125D01* +X965375Y136216D01* +X965445Y136164D01* +X965509Y136104D01* +X965559Y136078D01* +X965603Y136045D01* +X965684Y136014D01* +X965762Y135974D01* +X965810Y135966D01* +X965868Y135944D01* +X966016Y135932D01* +X966093Y135919D01* +X1004918Y135919D01* +X1005031Y135935D01* +X1005146Y135945D01* +X1005172Y135955D01* +X1005199Y135959D01* +X1005304Y136006D01* +X1005411Y136047D01* +X1005433Y136063D01* +X1005459Y136075D01* +X1005546Y136149D01* +X1005638Y136218D01* +X1005654Y136241D01* +X1005676Y136258D01* +X1005739Y136354D01* +X1005808Y136446D01* +X1005818Y136472D01* +X1005833Y136495D01* +X1005868Y136604D01* +X1005908Y136712D01* +X1005911Y136740D01* +X1005919Y136766D01* +X1005922Y136881D01* +X1005931Y136995D01* +X1005925Y137020D01* +X1005926Y137050D01* +X1005859Y137307D01* +X1005856Y137323D01* +X1005331Y138588D01* +X1005331Y140812D01* +X1006182Y142866D01* +X1007754Y144438D01* +X1009808Y145289D01* +X1012032Y145289D01* +X1014086Y144438D01* +X1015658Y142866D01* +X1016509Y140812D01* +X1016509Y138588D01* +X1015984Y137323D01* +X1015956Y137211D01* +X1015921Y137102D01* +X1015920Y137074D01* +X1015913Y137047D01* +X1015917Y136933D01* +X1015914Y136818D01* +X1015921Y136791D01* +X1015922Y136763D01* +X1015957Y136654D01* +X1015986Y136543D01* +X1016000Y136519D01* +X1016008Y136492D01* +X1016072Y136397D01* +X1016131Y136298D01* +X1016151Y136279D01* +X1016167Y136256D01* +X1016254Y136182D01* +X1016338Y136104D01* +X1016363Y136091D01* +X1016384Y136073D01* +X1016489Y136027D01* +X1016591Y135974D01* +X1016616Y135970D01* +X1016644Y135958D01* +X1016908Y135921D01* +X1016922Y135919D01* +X1113666Y135919D01* +X1113752Y135931D01* +X1113840Y135934D01* +X1113892Y135951D01* +X1113947Y135959D01* +X1114027Y135994D01* +X1114110Y136021D01* +X1114150Y136049D01* +X1114207Y136075D01* +X1114320Y136171D01* +X1114384Y136216D01* +X1124036Y145868D01* +X1124053Y145892D01* +X1124076Y145911D01* +X1124139Y146005D01* +X1124207Y146095D01* +X1124217Y146123D01* +X1124233Y146147D01* +X1124268Y146255D01* +X1124308Y146361D01* +X1124310Y146390D01* +X1124319Y146418D01* +X1124322Y146532D01* +X1124331Y146644D01* +X1124326Y146673D01* +X1124326Y146702D01* +X1124298Y146812D01* +X1124276Y146923D01* +X1124262Y146949D01* +X1124255Y146977D01* +X1124197Y147075D01* +X1124145Y147175D01* +X1124124Y147197D01* +X1124109Y147222D01* +X1124027Y147299D01* +X1123949Y147381D01* +X1123923Y147396D01* +X1123902Y147416D01* +X1123801Y147468D01* +X1123703Y147525D01* +X1123675Y147532D01* +X1123649Y147546D01* +X1123572Y147559D01* +X1123428Y147595D01* +X1123365Y147593D01* +X1123318Y147601D01* +X960607Y147601D01* +X942895Y165313D01* +X942825Y165366D01* +X942761Y165426D01* +X942712Y165451D01* +X942668Y165484D01* +X942586Y165516D01* +X942508Y165555D01* +X942461Y165563D01* +X942402Y165586D01* +X942254Y165598D01* +X942177Y165611D01* +X908496Y165611D01* +X908409Y165599D01* +X908322Y165596D01* +X908269Y165579D01* +X908214Y165571D01* +X908135Y165535D01* +X908051Y165508D01* +X908012Y165480D01* +X907955Y165455D01* +X907842Y165359D01* +X907778Y165313D01* +X906386Y163922D01* +X904332Y163071D01* +X902109Y163071D01* +X900055Y163922D01* +X898483Y165494D01* +X897632Y167548D01* +X897632Y169771D01* +X898483Y171825D01* +X898885Y172228D01* +X898903Y172252D01* +X898925Y172271D01* +X898988Y172365D01* +X899056Y172455D01* +X899067Y172483D01* +X899083Y172507D01* +X899117Y172615D01* +X899157Y172721D01* +X899160Y172750D01* +X899169Y172778D01* +X899172Y172892D01* +X899181Y173004D01* +X899175Y173033D01* +X899176Y173062D01* +X899147Y173172D01* +X899125Y173283D01* +X899112Y173309D01* +X899104Y173337D01* +X899046Y173435D01* +X898994Y173535D01* +X898974Y173557D01* +X898959Y173582D01* +X898876Y173659D01* +X898798Y173741D01* +X898773Y173756D01* +X898752Y173776D01* +X898651Y173828D01* +X898553Y173885D01* +X898525Y173892D01* +X898499Y173906D01* +X898421Y173919D01* +X898278Y173955D01* +X898215Y173953D01* +X898167Y173961D01* +X811153Y173961D01* +X811067Y173949D01* +X810979Y173946D01* +X810927Y173929D01* +X810872Y173921D01* +X810792Y173886D01* +X810709Y173859D01* +X810670Y173831D01* +X810612Y173805D01* +X810499Y173709D01* +X810435Y173664D01* +X786123Y149351D01* +X708453Y149351D01* +X708423Y149347D01* +X708392Y149349D01* +X708315Y149332D01* +X708172Y149311D01* +X708113Y149285D01* +X708065Y149274D01* +X706511Y148630D01* +X704287Y148630D01* +X702233Y149481D01* +X700661Y151053D01* +X699810Y153107D01* +X699810Y155331D01* +X700661Y157385D01* +X702233Y158957D01* +X704287Y159808D01* +X706511Y159808D01* +X708565Y158957D01* +X710137Y157385D01* +X710679Y156075D01* +X710680Y156074D01* +X710680Y156073D01* +X710750Y155954D01* +X710824Y155831D01* +X710825Y155830D01* +X710826Y155828D01* +X710931Y155729D01* +X711030Y155635D01* +X711032Y155635D01* +X711033Y155634D01* +X711159Y155569D01* +X711283Y155505D01* +X711285Y155505D01* +X711286Y155504D01* +X711301Y155502D01* +X711562Y155450D01* +X711592Y155453D01* +X711617Y155449D01* +X753785Y155449D01* +X753899Y155465D01* +X754013Y155475D01* +X754039Y155485D01* +X754066Y155489D01* +X754171Y155536D01* +X754278Y155577D01* +X754300Y155593D01* +X754326Y155605D01* +X754413Y155679D01* +X754505Y155748D01* +X754522Y155771D01* +X754543Y155788D01* +X754606Y155884D01* +X754675Y155976D01* +X754685Y156002D01* +X754700Y156025D01* +X754735Y156135D01* +X754776Y156242D01* +X754778Y156270D01* +X754786Y156296D01* +X754789Y156411D01* +X754798Y156525D01* +X754793Y156550D01* +X754793Y156580D01* +X754726Y156837D01* +X754723Y156853D01* +X753871Y158908D01* +X753871Y161132D01* +X754723Y163187D01* +X754751Y163299D01* +X754786Y163408D01* +X754787Y163436D01* +X754794Y163463D01* +X754791Y163577D01* +X754793Y163692D01* +X754786Y163719D01* +X754786Y163747D01* +X754751Y163856D01* +X754722Y163967D01* +X754707Y163991D01* +X754699Y164018D01* +X754635Y164113D01* +X754576Y164212D01* +X754556Y164231D01* +X754541Y164254D01* +X754453Y164328D01* +X754369Y164406D01* +X754344Y164419D01* +X754323Y164437D01* +X754218Y164483D01* +X754116Y164536D01* +X754091Y164540D01* +X754063Y164552D01* +X753800Y164589D01* +X753785Y164591D01* +X712628Y164591D01* +X710574Y165442D01* +X709002Y167014D01* +X708151Y169068D01* +X708151Y171292D01* +X709002Y173346D01* +X710574Y174918D01* +X712628Y175769D01* +X714852Y175769D01* +X716906Y174918D01* +X718478Y173346D01* +X719319Y171315D01* +X719320Y171314D01* +X719320Y171313D01* +X719393Y171190D01* +X719463Y171071D01* +X719465Y171070D01* +X719465Y171068D01* +X719571Y170969D01* +X719670Y170875D01* +X719672Y170875D01* +X719673Y170874D01* +X719799Y170809D01* +X719923Y170745D01* +X719924Y170745D01* +X719926Y170744D01* +X719941Y170742D01* +X720202Y170690D01* +X720232Y170693D01* +X720257Y170689D01* +X783177Y170689D01* +X783263Y170701D01* +X783351Y170704D01* +X783403Y170721D01* +X783458Y170729D01* +X783538Y170764D01* +X783621Y170791D01* +X783660Y170819D01* +X783718Y170845D01* +X783831Y170941D01* +X783895Y170986D01* +X803917Y191009D01* +X998025Y191009D01* +X998111Y191021D01* +X998199Y191024D01* +X998251Y191041D01* +X998306Y191049D01* +X998386Y191084D01* +X998469Y191111D01* +X998508Y191139D01* +X998565Y191165D01* +X998679Y191261D01* +X998742Y191306D01* +X1000134Y192698D01* +X1002188Y193549D01* +X1004412Y193549D01* +X1006466Y192698D01* +X1008038Y191126D01* +X1008889Y189072D01* +X1008889Y186848D01* +X1008038Y184794D01* +X1006466Y183222D01* +X1004412Y182371D01* +X1002188Y182371D01* +X1000134Y183222D01* +X998742Y184614D01* +X998673Y184666D01* +X998609Y184726D01* +X998559Y184752D01* +X998515Y184785D01* +X998434Y184816D01* +X998356Y184856D01* +X998308Y184864D01* +X998250Y184886D01* +X998102Y184898D01* +X998025Y184911D01* +X990251Y184911D01* +X990222Y184907D01* +X990193Y184910D01* +X990082Y184887D01* +X989970Y184871D01* +X989943Y184859D01* +X989914Y184854D01* +X989814Y184801D01* +X989710Y184755D01* +X989688Y184736D01* +X989662Y184723D01* +X989580Y184645D01* +X989493Y184572D01* +X989477Y184547D01* +X989456Y184527D01* +X989399Y184429D01* +X989336Y184335D01* +X989327Y184307D01* +X989312Y184282D01* +X989284Y184172D01* +X989250Y184064D01* +X989249Y184034D01* +X989242Y184006D01* +X989246Y183893D01* +X989243Y183780D01* +X989250Y183751D01* +X989251Y183722D01* +X989286Y183614D01* +X989315Y183505D01* +X989330Y183479D01* +X989339Y183451D01* +X989384Y183388D01* +X989460Y183260D01* +X989505Y183217D01* +X989533Y183178D01* +X991565Y181146D01* +X991635Y181094D01* +X991699Y181034D01* +X991749Y181008D01* +X991793Y180975D01* +X991874Y180944D01* +X991952Y180904D01* +X992000Y180896D01* +X992058Y180874D01* +X992206Y180862D01* +X992283Y180849D01* +X994252Y180849D01* +X996306Y179998D01* +X997878Y178426D01* +X998729Y176372D01* +X998729Y174148D01* +X997878Y172094D01* +X996306Y170522D01* +X994252Y169671D01* +X992028Y169671D01* +X989974Y170522D01* +X988402Y172094D01* +X987551Y174148D01* +X987551Y176117D01* +X987539Y176203D01* +X987536Y176291D01* +X987519Y176343D01* +X987511Y176398D01* +X987476Y176478D01* +X987449Y176561D01* +X987421Y176600D01* +X987395Y176658D01* +X987299Y176771D01* +X987254Y176835D01* +X984555Y179534D01* +X984485Y179586D01* +X984421Y179646D01* +X984371Y179672D01* +X984327Y179705D01* +X984246Y179736D01* +X984168Y179776D01* +X984120Y179784D01* +X984062Y179806D01* +X983914Y179818D01* +X983837Y179831D01* +X964851Y179831D01* +X964822Y179827D01* +X964793Y179830D01* +X964682Y179807D01* +X964570Y179791D01* +X964543Y179779D01* +X964514Y179774D01* +X964414Y179721D01* +X964310Y179675D01* +X964288Y179656D01* +X964262Y179643D01* +X964180Y179565D01* +X964093Y179492D01* +X964077Y179467D01* +X964056Y179447D01* +X963999Y179349D01* +X963936Y179255D01* +X963927Y179227D01* +X963912Y179202D01* +X963884Y179092D01* +X963850Y178984D01* +X963849Y178954D01* +X963842Y178926D01* +X963846Y178813D01* +X963843Y178700D01* +X963850Y178671D01* +X963851Y178642D01* +X963886Y178534D01* +X963915Y178425D01* +X963930Y178399D01* +X963939Y178371D01* +X963984Y178308D01* +X964060Y178180D01* +X964105Y178137D01* +X964133Y178098D01* +X966006Y176225D01* +X971245Y170986D01* +X971315Y170934D01* +X971379Y170874D01* +X971429Y170848D01* +X971473Y170815D01* +X971554Y170784D01* +X971632Y170744D01* +X971680Y170736D01* +X971738Y170714D01* +X971886Y170702D01* +X971963Y170689D01* +X973932Y170689D01* +X975986Y169838D01* +X977558Y168266D01* +X978409Y166212D01* +X978409Y163988D01* +X977558Y161934D01* +X976136Y160512D01* +X976118Y160488D01* +X976095Y160469D01* +X976033Y160375D01* +X975965Y160285D01* +X975954Y160257D01* +X975938Y160233D01* +X975904Y160125D01* +X975863Y160019D01* +X975861Y159990D01* +X975852Y159962D01* +X975849Y159848D01* +X975840Y159736D01* +X975846Y159707D01* +X975845Y159678D01* +X975873Y159568D01* +X975896Y159457D01* +X975909Y159431D01* +X975917Y159403D01* +X975974Y159305D01* +X976027Y159205D01* +X976047Y159183D01* +X976062Y159158D01* +X976144Y159081D01* +X976222Y158999D01* +X976248Y158984D01* +X976269Y158964D01* +X976370Y158912D01* +X976468Y158855D01* +X976496Y158848D01* +X976522Y158834D01* +X976600Y158821D01* +X976743Y158785D01* +X976806Y158787D01* +X976853Y158779D01* +X979046Y158779D01* +X979132Y158791D01* +X979220Y158794D01* +X979272Y158811D01* +X979327Y158819D01* +X979407Y158854D01* +X979490Y158881D01* +X979530Y158909D01* +X979587Y158935D01* +X979700Y159031D01* +X979764Y159076D01* +X982790Y162102D01* +X982808Y162127D01* +X982832Y162147D01* +X982873Y162214D01* +X982960Y162329D01* +X982983Y162389D01* +X983010Y162431D01* +X983322Y163186D01* +X984894Y164758D01* +X986948Y165609D01* +X989172Y165609D01* +X991226Y164758D01* +X992798Y163186D01* +X993649Y161132D01* +X993649Y158908D01* +X992798Y156854D01* +X991376Y155432D01* +X991358Y155408D01* +X991335Y155389D01* +X991273Y155295D01* +X991205Y155205D01* +X991194Y155177D01* +X991178Y155153D01* +X991144Y155045D01* +X991103Y154939D01* +X991101Y154910D01* +X991092Y154882D01* +X991089Y154768D01* +X991080Y154656D01* +X991086Y154627D01* +X991085Y154598D01* +X991113Y154488D01* +X991136Y154377D01* +X991149Y154351D01* +X991157Y154323D01* +X991214Y154225D01* +X991267Y154125D01* +X991287Y154103D01* +X991302Y154078D01* +X991384Y154001D01* +X991462Y153919D01* +X991488Y153904D01* +X991509Y153884D01* +X991610Y153832D01* +X991708Y153775D01* +X991736Y153768D01* +X991762Y153754D01* +X991840Y153741D01* +X991983Y153705D01* +X992046Y153707D01* +X992093Y153699D01* +X1028259Y153699D01* +X1028288Y153703D01* +X1028317Y153700D01* +X1028428Y153723D01* +X1028540Y153739D01* +X1028567Y153751D01* +X1028596Y153756D01* +X1028696Y153808D01* +X1028800Y153855D01* +X1028822Y153874D01* +X1028848Y153887D01* +X1028930Y153965D01* +X1029017Y154038D01* +X1029033Y154063D01* +X1029054Y154083D01* +X1029111Y154181D01* +X1029174Y154275D01* +X1029183Y154303D01* +X1029198Y154328D01* +X1029226Y154438D01* +X1029260Y154546D01* +X1029261Y154576D01* +X1029268Y154604D01* +X1029264Y154717D01* +X1029267Y154830D01* +X1029260Y154859D01* +X1029259Y154888D01* +X1029224Y154996D01* +X1029195Y155105D01* +X1029180Y155131D01* +X1029171Y155159D01* +X1029126Y155222D01* +X1029050Y155350D01* +X1029005Y155393D01* +X1028977Y155432D01* +X1025195Y159214D01* +X1025125Y159266D01* +X1025061Y159326D01* +X1025011Y159352D01* +X1024967Y159385D01* +X1024886Y159416D01* +X1024808Y159456D01* +X1024760Y159464D01* +X1024702Y159486D01* +X1024554Y159498D01* +X1024477Y159511D01* +X1022508Y159511D01* +X1020454Y160362D01* +X1018882Y161934D01* +X1018031Y163988D01* +X1018031Y166212D01* +X1018882Y168266D01* +X1020078Y169462D01* +X1020114Y169509D01* +X1020156Y169549D01* +X1020199Y169622D01* +X1020249Y169689D01* +X1020270Y169744D01* +X1020300Y169794D01* +X1020320Y169876D01* +X1020351Y169955D01* +X1020355Y170013D01* +X1020370Y170070D01* +X1020367Y170154D01* +X1020374Y170238D01* +X1020363Y170296D01* +X1020361Y170354D01* +X1020335Y170434D01* +X1020318Y170517D01* +X1020291Y170569D01* +X1020273Y170625D01* +X1020233Y170681D01* +X1020187Y170769D01* +X1020118Y170842D01* +X1020078Y170898D01* +X1018882Y172094D01* +X1018031Y174148D01* +X1018031Y176372D01* +X1018882Y178426D01* +X1020274Y179818D01* +X1020326Y179887D01* +X1020386Y179951D01* +X1020412Y180001D01* +X1020445Y180045D01* +X1020476Y180126D01* +X1020516Y180204D01* +X1020524Y180252D01* +X1020546Y180310D01* +X1020558Y180458D01* +X1020571Y180535D01* +X1020571Y188817D01* +X1020559Y188903D01* +X1020556Y188991D01* +X1020539Y189043D01* +X1020531Y189098D01* +X1020496Y189178D01* +X1020469Y189261D01* +X1020441Y189300D01* +X1020415Y189358D01* +X1020319Y189471D01* +X1020274Y189535D01* +X1011987Y197822D01* +X1011917Y197874D01* +X1011853Y197934D01* +X1011803Y197960D01* +X1011759Y197993D01* +X1011678Y198024D01* +X1011600Y198064D01* +X1011552Y198072D01* +X1011494Y198094D01* +X1011346Y198106D01* +X1011269Y198119D01* +X605187Y198119D01* +X605101Y198107D01* +X605013Y198104D01* +X604961Y198087D01* +X604906Y198079D01* +X604826Y198044D01* +X604743Y198017D01* +X604704Y197989D01* +X604646Y197963D01* +X604533Y197867D01* +X604469Y197822D01* +X566508Y159860D01* +X508075Y159860D01* +X507989Y159848D01* +X507901Y159845D01* +X507849Y159828D01* +X507794Y159820D01* +X507714Y159784D01* +X507631Y159758D01* +X507592Y159730D01* +X507535Y159704D01* +X507421Y159608D01* +X507358Y159563D01* +X505966Y158171D01* +X503912Y157320D01* +X501688Y157320D01* +X499634Y158171D01* +X498062Y159743D01* +X497211Y161797D01* +X497211Y164020D01* +X498062Y166075D01* +X499634Y167647D01* +X501688Y168498D01* +X503912Y168498D01* +X505966Y167647D01* +X507358Y166255D01* +X507427Y166202D01* +X507491Y166142D01* +X507541Y166117D01* +X507585Y166084D01* +X507666Y166053D01* +X507744Y166013D01* +X507792Y166005D01* +X507850Y165983D01* +X507998Y165971D01* +X508075Y165958D01* +X563561Y165958D01* +X563648Y165970D01* +X563735Y165973D01* +X563788Y165990D01* +X563843Y165997D01* +X563923Y166033D01* +X564006Y166060D01* +X564045Y166088D01* +X564102Y166114D01* +X564215Y166209D01* +X564279Y166255D01* +X588315Y190290D01* +X588332Y190314D01* +X588355Y190333D01* +X588417Y190427D01* +X588485Y190517D01* +X588496Y190545D01* +X588512Y190569D01* +X588546Y190677D01* +X588587Y190783D01* +X588589Y190812D01* +X588598Y190840D01* +X588601Y190954D01* +X588610Y191066D01* +X588605Y191095D01* +X588605Y191124D01* +X588577Y191234D01* +X588554Y191345D01* +X588541Y191371D01* +X588533Y191399D01* +X588476Y191497D01* +X588423Y191597D01* +X588403Y191619D01* +X588388Y191644D01* +X588306Y191721D01* +X588228Y191803D01* +X588202Y191818D01* +X588181Y191838D01* +X588080Y191890D01* +X587982Y191947D01* +X587954Y191954D01* +X587928Y191968D01* +X587850Y191981D01* +X587707Y192017D01* +X587644Y192015D01* +X587597Y192023D01* +X560585Y192023D01* +X555295Y197314D01* +X555225Y197366D01* +X555161Y197426D01* +X555111Y197452D01* +X555067Y197485D01* +X554986Y197516D01* +X554908Y197556D01* +X554860Y197564D01* +X554802Y197586D01* +X554654Y197598D01* +X554577Y197611D01* +X552608Y197611D01* +X550554Y198462D01* +X548982Y200034D01* +X548131Y202088D01* +X548131Y204312D01* +X548982Y206366D01* +X550554Y207938D01* +X552608Y208789D01* +X554832Y208789D01* +X556886Y207938D01* +X557487Y207337D01* +X557555Y207286D01* +X557618Y207226D01* +X557668Y207200D01* +X557714Y207166D01* +X557794Y207136D01* +X557870Y207096D01* +X557926Y207085D01* +X557979Y207065D01* +X558065Y207058D01* +X558149Y207041D01* +X558206Y207046D01* +X558263Y207041D01* +X558347Y207058D01* +X558433Y207066D01* +X558486Y207086D01* +X558541Y207097D01* +X558618Y207137D01* +X558698Y207168D01* +X558743Y207202D01* +X558794Y207228D01* +X558856Y207287D01* +X558925Y207339D01* +X558959Y207385D01* +X559000Y207424D01* +X559043Y207498D01* +X559095Y207567D01* +X559115Y207620D01* +X559144Y207669D01* +X559165Y207753D01* +X559195Y207833D01* +X559200Y207890D01* +X559214Y207945D01* +X559211Y208031D01* +X559218Y208116D01* +X559207Y208165D01* +X559205Y208229D01* +X559160Y208367D01* +X559142Y208443D01* +X558291Y210498D01* +X558291Y212722D01* +X559142Y214776D01* +X560714Y216348D01* +X562768Y217199D01* +X564963Y217199D01* +X564992Y217203D01* +X565021Y217200D01* +X565132Y217223D01* +X565244Y217239D01* +X565271Y217251D01* +X565300Y217256D01* +X565400Y217309D01* +X565504Y217355D01* +X565526Y217374D01* +X565552Y217387D01* +X565634Y217465D01* +X565721Y217538D01* +X565737Y217563D01* +X565758Y217583D01* +X565815Y217681D01* +X565878Y217775D01* +X565887Y217803D01* +X565902Y217828D01* +X565930Y217938D01* +X565964Y218046D01* +X565965Y218076D01* +X565972Y218104D01* +X565968Y218217D01* +X565971Y218330D01* +X565964Y218359D01* +X565963Y218388D01* +X565928Y218496D01* +X565899Y218605D01* +X565885Y218631D01* +X565875Y218659D01* +X565830Y218723D01* +X565754Y218850D01* +X565709Y218893D01* +X565681Y218932D01* +X564090Y220523D01* +X557581Y227032D01* +X557511Y227084D01* +X557447Y227144D01* +X557397Y227170D01* +X557353Y227203D01* +X557272Y227234D01* +X557194Y227274D01* +X557146Y227282D01* +X557088Y227304D01* +X556940Y227316D01* +X556863Y227329D01* +X535845Y227329D01* +X535759Y227317D01* +X535671Y227314D01* +X535619Y227297D01* +X535564Y227289D01* +X535484Y227254D01* +X535401Y227227D01* +X535362Y227199D01* +X535304Y227173D01* +X535191Y227077D01* +X535127Y227032D01* +X523487Y215391D01* +X501149Y215391D01* +X491255Y225285D01* +X491185Y225338D01* +X491121Y225398D01* +X491072Y225423D01* +X491028Y225456D01* +X490946Y225487D01* +X490868Y225527D01* +X490821Y225535D01* +X490762Y225558D01* +X490614Y225570D01* +X490537Y225583D01* +X489077Y225583D01* +X487023Y226434D01* +X485451Y228006D01* +X484600Y230060D01* +X484600Y232156D01* +X484592Y232214D01* +X484593Y232272D01* +X484572Y232354D01* +X484560Y232438D01* +X484536Y232491D01* +X484521Y232547D01* +X484478Y232620D01* +X484444Y232697D01* +X484406Y232742D01* +X484376Y232792D01* +X484314Y232850D01* +X484260Y232914D01* +X484211Y232946D01* +X484169Y232986D01* +X484094Y233025D01* +X484023Y233072D01* +X483968Y233089D01* +X483916Y233116D01* +X483847Y233127D01* +X483752Y233157D01* +X483653Y233160D01* +X483584Y233171D01* +X481488Y233171D01* +X479434Y234022D01* +X477862Y235594D01* +X477011Y237648D01* +X477011Y239872D01* +X477862Y241926D01* +X479434Y243498D01* +X481488Y244349D01* +X483712Y244349D01* +X485766Y243498D01* +X487158Y242106D01* +X487227Y242054D01* +X487291Y241994D01* +X487341Y241968D01* +X487385Y241935D01* +X487466Y241904D01* +X487544Y241864D01* +X487592Y241856D01* +X487650Y241834D01* +X487798Y241822D01* +X487875Y241809D01* +X503167Y241809D01* +X514045Y230930D01* +X514115Y230878D01* +X514179Y230818D01* +X514229Y230792D01* +X514273Y230759D01* +X514354Y230728D01* +X514432Y230688D01* +X514480Y230680D01* +X514538Y230658D01* +X514686Y230646D01* +X514763Y230633D01* +X516477Y230633D01* +X516563Y230645D01* +X516651Y230648D01* +X516703Y230665D01* +X516758Y230673D01* +X516838Y230708D01* +X516921Y230735D01* +X516960Y230763D01* +X517018Y230789D01* +X517131Y230885D01* +X517195Y230930D01* +X518437Y232172D01* +X518454Y232196D01* +X518477Y232215D01* +X518539Y232309D01* +X518607Y232399D01* +X518618Y232427D01* +X518634Y232451D01* +X518668Y232559D01* +X518709Y232665D01* +X518711Y232694D01* +X518720Y232722D01* +X518723Y232836D01* +X518732Y232948D01* +X518727Y232977D01* +X518727Y233006D01* +X518699Y233116D01* +X518676Y233227D01* +X518663Y233253D01* +X518655Y233281D01* +X518598Y233379D01* +X518545Y233479D01* +X518525Y233501D01* +X518510Y233526D01* +X518428Y233603D01* +X518350Y233685D01* +X518324Y233700D01* +X518303Y233720D01* +X518202Y233772D01* +X518104Y233829D01* +X518076Y233836D01* +X518050Y233850D01* +X517972Y233863D01* +X517829Y233899D01* +X517766Y233897D01* +X517719Y233905D01* +X517048Y233905D01* +X514994Y234756D01* +X513422Y236328D01* +X512571Y238382D01* +X512571Y240606D01* +X513422Y242660D01* +X514994Y244232D01* +X517048Y245083D01* +X519017Y245083D01* +X519103Y245095D01* +X519191Y245098D01* +X519243Y245115D01* +X519298Y245123D01* +X519378Y245158D01* +X519461Y245185D01* +X519500Y245213D01* +X519558Y245239D01* +X519671Y245335D01* +X519735Y245380D01* +X521977Y247623D01* +X560955Y247623D01* +X560984Y247627D01* +X561013Y247624D01* +X561124Y247647D01* +X561236Y247663D01* +X561263Y247675D01* +X561292Y247680D01* +X561392Y247732D01* +X561496Y247779D01* +X561518Y247798D01* +X561544Y247811D01* +X561626Y247889D01* +X561713Y247962D01* +X561729Y247987D01* +X561750Y248007D01* +X561807Y248105D01* +X561870Y248199D01* +X561879Y248227D01* +X561894Y248252D01* +X561922Y248362D01* +X561956Y248470D01* +X561957Y248500D01* +X561964Y248528D01* +X561960Y248641D01* +X561963Y248754D01* +X561956Y248783D01* +X561955Y248812D01* +X561920Y248920D01* +X561891Y249029D01* +X561876Y249055D01* +X561867Y249083D01* +X561822Y249146D01* +X561746Y249274D01* +X561701Y249317D01* +X561673Y249356D01* +X555295Y255734D01* +X555225Y255786D01* +X555161Y255846D01* +X555111Y255872D01* +X555067Y255905D01* +X554986Y255936D01* +X554908Y255976D01* +X554860Y255984D01* +X554802Y256006D01* +X554654Y256018D01* +X554577Y256031D01* +X553915Y256031D01* +X553829Y256019D01* +X553741Y256016D01* +X553689Y255999D01* +X553634Y255991D01* +X553554Y255956D01* +X553471Y255929D01* +X553432Y255901D01* +X553375Y255875D01* +X553261Y255779D01* +X553198Y255734D01* +X551806Y254342D01* +X549752Y253491D01* +X547528Y253491D01* +X545474Y254342D01* +X543902Y255914D01* +X543051Y257968D01* +X543051Y260192D01* +X543902Y262246D01* +X545474Y263818D01* +X547528Y264669D01* +X549752Y264669D01* +X551806Y263818D01* +X553198Y262426D01* +X553267Y262374D01* +X553331Y262314D01* +X553381Y262288D01* +X553425Y262255D01* +X553507Y262224D01* +X553584Y262184D01* +X553632Y262176D01* +X553690Y262154D01* +X553838Y262142D01* +X553915Y262129D01* +X557523Y262129D01* +X576755Y242896D01* +X576825Y242844D01* +X576889Y242784D01* +X576938Y242758D01* +X576983Y242725D01* +X577064Y242694D01* +X577142Y242654D01* +X577190Y242646D01* +X577248Y242624D01* +X577396Y242612D01* +X577473Y242599D01* +X865892Y242599D01* +X866006Y242615D01* +X866120Y242625D01* +X866146Y242635D01* +X866173Y242639D01* +X866278Y242686D01* +X866385Y242727D01* +X866407Y242743D01* +X866433Y242755D01* +X866520Y242829D01* +X866612Y242898D01* +X866629Y242921D01* +X866650Y242938D01* +X866713Y243034D01* +X866782Y243126D01* +X866792Y243152D01* +X866807Y243175D01* +X866842Y243285D01* +X866883Y243392D01* +X866885Y243420D01* +X866893Y243446D01* +X866896Y243561D01* +X866905Y243675D01* +X866900Y243700D01* +X866900Y243730D01* +X866833Y243987D01* +X866830Y244003D01* +X866305Y245268D01* +X866305Y247492D01* +X867156Y249546D01* +X868728Y251118D01* +X870783Y251969D01* +X873006Y251969D01* +X874357Y251409D01* +X874440Y251388D01* +X874521Y251357D01* +X874577Y251352D01* +X874633Y251338D01* +X874718Y251340D01* +X874804Y251333D01* +X874860Y251345D01* +X874917Y251346D01* +X874998Y251372D01* +X875083Y251389D01* +X875133Y251415D01* +X875187Y251433D01* +X875259Y251481D01* +X875335Y251520D01* +X875376Y251559D01* +X875424Y251591D01* +X875479Y251657D01* +X875541Y251716D01* +X875570Y251765D01* +X875607Y251809D01* +X875641Y251887D01* +X875685Y251961D01* +X875699Y252016D01* +X875722Y252068D01* +X875734Y252154D01* +X875755Y252237D01* +X875753Y252294D01* +X875761Y252350D01* +X875749Y252435D01* +X875746Y252521D01* +X875728Y252575D01* +X875720Y252631D01* +X875685Y252710D01* +X875659Y252791D01* +X875630Y252832D01* +X875603Y252890D01* +X875509Y253001D01* +X875464Y253065D01* +X872795Y255734D01* +X872725Y255786D01* +X872661Y255846D01* +X872611Y255872D01* +X872567Y255905D01* +X872486Y255936D01* +X872408Y255976D01* +X872360Y255984D01* +X872302Y256006D01* +X872154Y256018D01* +X872077Y256031D01* +X870108Y256031D01* +X868054Y256882D01* +X866482Y258454D01* +X865631Y260508D01* +X865631Y262732D01* +X866483Y264787D01* +X866511Y264899D01* +X866546Y265008D01* +X866547Y265036D01* +X866554Y265063D01* +X866550Y265177D01* +X866553Y265292D01* +X866546Y265319D01* +X866546Y265347D01* +X866511Y265456D01* +X866482Y265567D01* +X866467Y265591D01* +X866459Y265618D01* +X866395Y265713D01* +X866336Y265812D01* +X866316Y265831D01* +X866301Y265854D01* +X866213Y265928D01* +X866129Y266006D01* +X866104Y266019D01* +X866083Y266037D01* +X865978Y266083D01* +X865876Y266136D01* +X865851Y266140D01* +X865823Y266152D01* +X865560Y266189D01* +X865545Y266191D01* +X590557Y266191D01* +X507035Y349714D01* +X506965Y349766D01* +X506901Y349826D01* +X506851Y349852D01* +X506807Y349885D01* +X506726Y349916D01* +X506648Y349956D01* +X506600Y349964D01* +X506542Y349986D01* +X506394Y349998D01* +X506317Y350011D01* +X437395Y350011D01* +X437308Y349999D01* +X437221Y349996D01* +X437168Y349979D01* +X437114Y349971D01* +X437034Y349936D01* +X436951Y349909D01* +X436911Y349881D01* +X436854Y349855D01* +X436741Y349759D01* +X436677Y349714D01* +X435094Y348131D01* +X432957Y347245D01* +X430643Y347245D01* +X428506Y348131D01* +X426871Y349766D01* +X426868Y349772D01* +X426824Y349846D01* +X426789Y349925D01* +X426752Y349968D01* +X426724Y350017D01* +X426661Y350076D01* +X426605Y350142D01* +X426558Y350173D01* +X426517Y350212D01* +X426440Y350252D01* +X426369Y350299D01* +X426315Y350317D01* +X426264Y350343D01* +X426180Y350359D01* +X426098Y350385D01* +X426041Y350387D01* +X425985Y350398D01* +X425900Y350390D01* +X425814Y350392D01* +X425759Y350378D01* +X425702Y350373D01* +X425622Y350342D01* +X425539Y350321D01* +X425490Y350292D01* +X425437Y350271D01* +X425368Y350219D01* +X425294Y350175D01* +X425255Y350134D01* +X425210Y350100D01* +X425158Y350031D01* +X425100Y349968D01* +X425074Y349917D01* +X425040Y349872D01* +X425009Y349792D01* +X424970Y349715D01* +X424962Y349666D01* +X424939Y349606D01* +X424929Y349473D01* +X424029Y347302D01* +X422394Y345667D01* +X420257Y344781D01* +X417943Y344781D01* +X415806Y345667D01* +X414171Y347302D01* +X413285Y349439D01* +X413285Y351753D01* +X414171Y353890D01* +X415806Y355525D01* +X417943Y356411D01* +X420183Y356411D01* +X420269Y356423D01* +X420357Y356426D01* +X420409Y356443D01* +X420464Y356451D01* +X420544Y356486D01* +X420627Y356513D01* +X420666Y356541D01* +X420724Y356567D01* +X420837Y356663D01* +X420901Y356708D01* +X427997Y363805D01* +X502737Y363805D01* +X502822Y363817D01* +X502908Y363819D01* +X502962Y363837D01* +X503018Y363845D01* +X503096Y363880D01* +X503178Y363906D01* +X503226Y363938D01* +X503278Y363961D01* +X503343Y364016D01* +X503414Y364064D01* +X503451Y364108D01* +X503495Y364144D01* +X503542Y364216D01* +X503597Y364282D01* +X503621Y364334D01* +X503652Y364381D01* +X503678Y364463D01* +X503713Y364542D01* +X503721Y364598D01* +X503738Y364652D01* +X503740Y364738D01* +X503752Y364823D01* +X503744Y364879D01* +X503745Y364936D01* +X503723Y365019D01* +X503711Y365104D01* +X503688Y365156D01* +X503673Y365211D01* +X503629Y365285D01* +X503594Y365364D01* +X503557Y365407D01* +X503528Y365456D01* +X503465Y365515D01* +X503410Y365580D01* +X503368Y365606D01* +X503321Y365650D01* +X503192Y365716D01* +X503125Y365758D01* +X502294Y366102D01* +X500722Y367674D01* +X499871Y369728D01* +X499871Y371952D01* +X500722Y374006D01* +X502220Y375504D01* +X502238Y375528D01* +X502261Y375547D01* +X502323Y375641D01* +X502391Y375731D01* +X502402Y375759D01* +X502418Y375783D01* +X502452Y375891D01* +X502493Y375997D01* +X502495Y376026D01* +X502504Y376054D01* +X502507Y376168D01* +X502516Y376280D01* +X502510Y376309D01* +X502511Y376338D01* +X502483Y376448D01* +X502460Y376559D01* +X502447Y376585D01* +X502439Y376613D01* +X502382Y376711D01* +X502329Y376811D01* +X502309Y376833D01* +X502294Y376858D01* +X502212Y376935D01* +X502134Y377017D01* +X502108Y377032D01* +X502087Y377052D01* +X501986Y377104D01* +X501888Y377161D01* +X501860Y377168D01* +X501834Y377182D01* +X501756Y377195D01* +X501613Y377231D01* +X501550Y377229D01* +X501503Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X379532Y3763D01* +X379561Y3767D01* +G37* +%LPC*% +G36* +X721727Y67817D02* +X721727Y67817D01* +X717713Y69480D01* +X714640Y72553D01* +X712977Y76567D01* +X712977Y80913D01* +X714640Y84927D01* +X715609Y85896D01* +X715627Y85920D01* +X715649Y85939D01* +X715712Y86033D01* +X715780Y86123D01* +X715790Y86151D01* +X715807Y86175D01* +X715841Y86283D01* +X715881Y86389D01* +X715884Y86418D01* +X715892Y86446D01* +X715895Y86560D01* +X715905Y86672D01* +X715899Y86701D01* +X715900Y86730D01* +X715871Y86840D01* +X715849Y86951D01* +X715835Y86977D01* +X715828Y87005D01* +X715770Y87103D01* +X715718Y87203D01* +X715698Y87225D01* +X715683Y87250D01* +X715600Y87327D01* +X715522Y87409D01* +X715497Y87424D01* +X715475Y87444D01* +X715374Y87496D01* +X715277Y87553D01* +X715248Y87560D01* +X715222Y87574D01* +X715145Y87587D01* +X715001Y87623D01* +X714939Y87621D01* +X714891Y87629D01* +X562251Y87629D01* +X562137Y87613D01* +X562023Y87603D01* +X561997Y87593D01* +X561969Y87589D01* +X561864Y87542D01* +X561757Y87501D01* +X561735Y87485D01* +X561710Y87473D01* +X561622Y87399D01* +X561531Y87330D01* +X561514Y87307D01* +X561493Y87290D01* +X561429Y87194D01* +X561360Y87102D01* +X561351Y87076D01* +X561335Y87053D01* +X561301Y86943D01* +X561260Y86836D01* +X561258Y86808D01* +X561249Y86782D01* +X561247Y86667D01* +X561237Y86553D01* +X561243Y86528D01* +X561242Y86498D01* +X561309Y86241D01* +X561313Y86225D01* +X561849Y84932D01* +X561849Y82804D01* +X561857Y82746D01* +X561855Y82688D01* +X561877Y82606D01* +X561889Y82522D01* +X561912Y82469D01* +X561927Y82413D01* +X561970Y82340D01* +X562005Y82263D01* +X562043Y82218D01* +X562072Y82168D01* +X562134Y82110D01* +X562188Y82046D01* +X562237Y82014D01* +X562280Y81974D01* +X562355Y81935D01* +X562425Y81888D01* +X562481Y81871D01* +X562533Y81844D01* +X562601Y81833D01* +X562696Y81803D01* +X562796Y81800D01* +X562864Y81789D01* +X564992Y81789D01* +X567046Y80938D01* +X568618Y79366D01* +X569469Y77312D01* +X569469Y75088D01* +X568618Y73034D01* +X567046Y71462D01* +X564992Y70611D01* +X562768Y70611D01* +X560714Y71462D01* +X559142Y73034D01* +X558291Y75088D01* +X558291Y77216D01* +X558283Y77274D01* +X558285Y77332D01* +X558263Y77414D01* +X558251Y77498D01* +X558228Y77551D01* +X558213Y77607D01* +X558170Y77680D01* +X558135Y77757D01* +X558097Y77802D01* +X558068Y77852D01* +X558006Y77910D01* +X557952Y77974D01* +X557903Y78006D01* +X557860Y78046D01* +X557785Y78085D01* +X557715Y78132D01* +X557659Y78149D01* +X557607Y78176D01* +X557539Y78187D01* +X557444Y78217D01* +X557344Y78220D01* +X557276Y78231D01* +X555148Y78231D01* +X553094Y79082D01* +X551522Y80654D01* +X550671Y82708D01* +X550671Y84932D01* +X551207Y86225D01* +X551236Y86337D01* +X551271Y86446D01* +X551271Y86474D01* +X551278Y86501D01* +X551275Y86615D01* +X551278Y86730D01* +X551271Y86757D01* +X551270Y86785D01* +X551235Y86894D01* +X551206Y87005D01* +X551192Y87029D01* +X551183Y87056D01* +X551119Y87151D01* +X551061Y87250D01* +X551040Y87269D01* +X551025Y87292D01* +X550937Y87366D01* +X550853Y87444D01* +X550829Y87457D01* +X550807Y87475D01* +X550703Y87521D01* +X550600Y87574D01* +X550576Y87578D01* +X550548Y87590D01* +X550284Y87627D01* +X550269Y87629D01* +X533400Y87629D01* +X533342Y87621D01* +X533284Y87623D01* +X533202Y87601D01* +X533118Y87589D01* +X533065Y87566D01* +X533009Y87551D01* +X532936Y87508D01* +X532859Y87473D01* +X532814Y87435D01* +X532764Y87406D01* +X532706Y87344D01* +X532642Y87290D01* +X532610Y87241D01* +X532570Y87198D01* +X532531Y87123D01* +X532484Y87053D01* +X532467Y86997D01* +X532440Y86945D01* +X532429Y86877D01* +X532399Y86782D01* +X532396Y86682D01* +X532385Y86614D01* +X532385Y85859D01* +X532397Y85772D01* +X532400Y85685D01* +X532417Y85632D01* +X532425Y85578D01* +X532460Y85498D01* +X532487Y85414D01* +X532515Y85375D01* +X532541Y85318D01* +X532637Y85205D01* +X532682Y85141D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X523958Y85141D01* +X524010Y85211D01* +X524070Y85275D01* +X524096Y85324D01* +X524129Y85368D01* +X524160Y85450D01* +X524200Y85528D01* +X524208Y85575D01* +X524230Y85634D01* +X524242Y85782D01* +X524255Y85859D01* +X524255Y86614D01* +X524247Y86672D01* +X524249Y86730D01* +X524227Y86812D01* +X524215Y86896D01* +X524192Y86949D01* +X524177Y87005D01* +X524134Y87078D01* +X524099Y87155D01* +X524061Y87200D01* +X524032Y87250D01* +X523970Y87308D01* +X523916Y87372D01* +X523867Y87404D01* +X523824Y87444D01* +X523749Y87483D01* +X523679Y87530D01* +X523623Y87547D01* +X523571Y87574D01* +X523503Y87585D01* +X523408Y87615D01* +X523308Y87618D01* +X523240Y87629D01* +X422148Y87629D01* +X422090Y87621D01* +X422032Y87623D01* +X421950Y87601D01* +X421866Y87589D01* +X421813Y87566D01* +X421757Y87551D01* +X421684Y87508D01* +X421607Y87473D01* +X421562Y87435D01* +X421512Y87406D01* +X421454Y87344D01* +X421390Y87290D01* +X421358Y87241D01* +X421318Y87198D01* +X421279Y87123D01* +X421232Y87053D01* +X421215Y86997D01* +X421188Y86945D01* +X421177Y86877D01* +X421147Y86782D01* +X421144Y86682D01* +X421133Y86614D01* +X421133Y70278D01* +X419942Y69087D01* +X380158Y69087D01* +X378967Y70278D01* +X378967Y110062D01* +X380158Y111253D01* +X399877Y111253D01* +X399964Y111265D01* +X400051Y111268D01* +X400104Y111285D01* +X400159Y111293D01* +X400238Y111328D01* +X400322Y111355D01* +X400361Y111383D01* +X400418Y111409D01* +X400531Y111505D01* +X400595Y111550D01* +X402750Y113706D01* +X402768Y113729D01* +X402790Y113748D01* +X402853Y113842D01* +X402921Y113933D01* +X402932Y113960D01* +X402948Y113985D01* +X402982Y114093D01* +X403022Y114198D01* +X403025Y114228D01* +X403034Y114256D01* +X403037Y114369D01* +X403046Y114482D01* +X403040Y114510D01* +X403041Y114540D01* +X403012Y114649D01* +X402990Y114760D01* +X402977Y114787D01* +X402969Y114815D01* +X402911Y114912D01* +X402859Y115013D01* +X402839Y115034D01* +X402824Y115059D01* +X402741Y115137D01* +X402663Y115219D01* +X402638Y115234D01* +X402617Y115254D01* +X402516Y115305D01* +X402418Y115363D01* +X402390Y115370D01* +X402364Y115383D01* +X402286Y115396D01* +X402143Y115433D01* +X402080Y115431D01* +X402032Y115439D01* +X308130Y115439D01* +X308044Y115426D01* +X307956Y115424D01* +X307904Y115407D01* +X307849Y115399D01* +X307769Y115363D01* +X307686Y115336D01* +X307647Y115308D01* +X307590Y115283D01* +X307476Y115187D01* +X307413Y115141D01* +X275618Y83347D01* +X273377Y82419D01* +X181667Y82419D01* +X179426Y83347D01* +X154851Y107922D01* +X153923Y110163D01* +X153923Y330011D01* +X154851Y332252D01* +X170668Y348069D01* +X172909Y348997D01* +X191713Y348997D01* +X193954Y348069D01* +X195669Y346354D01* +X196597Y344113D01* +X196597Y341687D01* +X195997Y340241D01* +X195969Y340129D01* +X195934Y340020D01* +X195933Y339992D01* +X195927Y339965D01* +X195930Y339851D01* +X195927Y339736D01* +X195934Y339709D01* +X195935Y339681D01* +X195970Y339572D01* +X195999Y339461D01* +X196013Y339437D01* +X196021Y339410D01* +X196085Y339315D01* +X196144Y339216D01* +X196164Y339197D01* +X196180Y339174D01* +X196267Y339100D01* +X196351Y339022D01* +X196376Y339009D01* +X196397Y338991D01* +X196502Y338945D01* +X196604Y338892D01* +X196629Y338888D01* +X196657Y338876D01* +X196921Y338839D01* +X196935Y338837D01* +X199401Y338837D01* +X201538Y337951D01* +X203174Y336316D01* +X204059Y334179D01* +X204059Y331865D01* +X203174Y329728D01* +X201538Y328093D01* +X199401Y327207D01* +X197087Y327207D01* +X194950Y328093D01* +X193748Y329295D01* +X193678Y329347D01* +X193614Y329407D01* +X193565Y329433D01* +X193521Y329466D01* +X193439Y329497D01* +X193361Y329537D01* +X193313Y329545D01* +X193255Y329567D01* +X193107Y329579D01* +X193030Y329592D01* +X192465Y329592D01* +X192379Y329580D01* +X192291Y329577D01* +X192239Y329560D01* +X192184Y329552D01* +X192104Y329517D01* +X192021Y329490D01* +X191981Y329462D01* +X191924Y329436D01* +X191811Y329340D01* +X191747Y329295D01* +X184143Y321690D01* +X182596Y321690D01* +X182595Y321690D01* +X182593Y321690D01* +X182453Y321670D01* +X182315Y321650D01* +X182314Y321650D01* +X182312Y321650D01* +X182186Y321593D01* +X182056Y321534D01* +X182054Y321533D01* +X182053Y321532D01* +X181946Y321441D01* +X181839Y321351D01* +X181838Y321349D01* +X181836Y321348D01* +X181828Y321335D01* +X181681Y321114D01* +X181672Y321085D01* +X181659Y321064D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +X173217Y318902D01* +X171582Y320537D01* +X170696Y322674D01* +X170696Y324988D01* +X171582Y327125D01* +X173217Y328760D01* +X175354Y329646D01* +X177668Y329646D01* +X179840Y328746D01* +X179852Y328735D01* +X179901Y328709D01* +X179945Y328676D01* +X180027Y328645D01* +X180105Y328605D01* +X180153Y328597D01* +X180211Y328575D01* +X180359Y328563D01* +X180436Y328550D01* +X180881Y328550D01* +X180968Y328562D01* +X181055Y328565D01* +X181108Y328582D01* +X181162Y328590D01* +X181242Y328625D01* +X181325Y328652D01* +X181365Y328680D01* +X181422Y328706D01* +X181535Y328802D01* +X181599Y328847D01* +X187822Y335070D01* +X187839Y335094D01* +X187862Y335113D01* +X187925Y335207D01* +X187993Y335297D01* +X188003Y335325D01* +X188019Y335349D01* +X188054Y335457D01* +X188094Y335563D01* +X188096Y335592D01* +X188105Y335620D01* +X188108Y335734D01* +X188118Y335846D01* +X188112Y335875D01* +X188113Y335904D01* +X188084Y336014D01* +X188062Y336125D01* +X188048Y336151D01* +X188041Y336179D01* +X187983Y336277D01* +X187931Y336377D01* +X187910Y336399D01* +X187895Y336424D01* +X187813Y336501D01* +X187735Y336583D01* +X187710Y336598D01* +X187688Y336618D01* +X187587Y336670D01* +X187490Y336727D01* +X187461Y336734D01* +X187435Y336748D01* +X187358Y336761D01* +X187214Y336797D01* +X187152Y336795D01* +X187104Y336803D01* +X177068Y336803D01* +X176981Y336791D01* +X176893Y336788D01* +X176841Y336771D01* +X176786Y336763D01* +X176706Y336728D01* +X176623Y336701D01* +X176584Y336673D01* +X176527Y336647D01* +X176413Y336551D01* +X176350Y336506D01* +X166414Y326570D01* +X166362Y326501D01* +X166302Y326437D01* +X166276Y326387D01* +X166243Y326343D01* +X166212Y326261D01* +X166172Y326184D01* +X166164Y326136D01* +X166142Y326078D01* +X166130Y325930D01* +X166117Y325852D01* +X166117Y114321D01* +X166129Y114235D01* +X166132Y114147D01* +X166149Y114095D01* +X166157Y114040D01* +X166192Y113960D01* +X166219Y113877D01* +X166247Y113838D01* +X166273Y113780D01* +X166369Y113667D01* +X166414Y113603D01* +X185108Y94910D01* +X185178Y94857D01* +X185242Y94797D01* +X185291Y94772D01* +X185335Y94739D01* +X185417Y94708D01* +X185495Y94668D01* +X185542Y94660D01* +X185601Y94637D01* +X185749Y94625D01* +X185826Y94612D01* +X269219Y94612D01* +X269305Y94624D01* +X269393Y94627D01* +X269445Y94644D01* +X269500Y94652D01* +X269580Y94688D01* +X269663Y94715D01* +X269702Y94743D01* +X269760Y94768D01* +X269873Y94864D01* +X269937Y94910D01* +X301731Y126704D01* +X303972Y127632D01* +X486492Y127632D01* +X486522Y127636D01* +X486553Y127634D01* +X486630Y127652D01* +X486773Y127672D01* +X486832Y127698D01* +X486880Y127709D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496582Y118499D01* +X496553Y118387D01* +X496518Y118278D01* +X496518Y118250D01* +X496511Y118223D01* +X496514Y118109D01* +X496511Y117994D01* +X496518Y117967D01* +X496519Y117939D01* +X496554Y117830D01* +X496583Y117719D01* +X496597Y117695D01* +X496606Y117668D01* +X496670Y117573D01* +X496728Y117474D01* +X496748Y117455D01* +X496764Y117432D01* +X496852Y117358D01* +X496936Y117280D01* +X496960Y117267D01* +X496981Y117249D01* +X497086Y117203D01* +X497189Y117150D01* +X497213Y117146D01* +X497241Y117134D01* +X497505Y117097D01* +X497520Y117095D01* +X902818Y117095D01* +X902903Y117107D01* +X902989Y117109D01* +X903043Y117127D01* +X903099Y117135D01* +X903178Y117170D01* +X903259Y117196D01* +X903307Y117228D01* +X903359Y117251D01* +X903424Y117306D01* +X903496Y117354D01* +X903532Y117398D01* +X903576Y117434D01* +X903623Y117506D01* +X903679Y117572D01* +X903702Y117624D01* +X903733Y117671D01* +X903759Y117753D01* +X903794Y117832D01* +X903802Y117888D01* +X903819Y117942D01* +X903821Y118028D01* +X903833Y118113D01* +X903825Y118169D01* +X903826Y118226D01* +X903805Y118309D01* +X903792Y118395D01* +X903769Y118446D01* +X903755Y118501D01* +X903711Y118575D01* +X903675Y118654D01* +X903638Y118697D01* +X903609Y118746D01* +X903547Y118805D01* +X903491Y118870D01* +X903449Y118896D01* +X903402Y118940D01* +X903273Y119006D01* +X903206Y119048D01* +X901579Y119722D01* +X900007Y121294D01* +X899156Y123348D01* +X899156Y125572D01* +X900007Y127626D01* +X901579Y129198D01* +X903633Y130049D01* +X905856Y130049D01* +X907910Y129198D01* +X909302Y127806D01* +X909372Y127754D01* +X909436Y127694D01* +X909485Y127668D01* +X909529Y127635D01* +X909611Y127604D01* +X909689Y127564D01* +X909736Y127556D01* +X909795Y127534D01* +X909943Y127522D01* +X910020Y127509D01* +X1040123Y127509D01* +X1042206Y125426D01* +X1042206Y125425D01* +X1049575Y118056D01* +X1049667Y117987D01* +X1049755Y117913D01* +X1049780Y117902D01* +X1049802Y117885D01* +X1049910Y117845D01* +X1050015Y117798D01* +X1050042Y117794D01* +X1050068Y117784D01* +X1050182Y117775D01* +X1050296Y117759D01* +X1050324Y117763D01* +X1050351Y117761D01* +X1050464Y117783D01* +X1050578Y117800D01* +X1050603Y117811D01* +X1050630Y117817D01* +X1050732Y117869D01* +X1050837Y117917D01* +X1050858Y117935D01* +X1050882Y117948D01* +X1050966Y118026D01* +X1051053Y118101D01* +X1051066Y118122D01* +X1051089Y118143D01* +X1051223Y118372D01* +X1051231Y118386D01* +X1051902Y120006D01* +X1053474Y121578D01* +X1055528Y122429D01* +X1057752Y122429D01* +X1059806Y121578D01* +X1061378Y120006D01* +X1062229Y117952D01* +X1062229Y115983D01* +X1062241Y115897D01* +X1062244Y115809D01* +X1062261Y115757D01* +X1062269Y115702D01* +X1062304Y115622D01* +X1062331Y115539D01* +X1062359Y115500D01* +X1062385Y115442D01* +X1062481Y115329D01* +X1062526Y115265D01* +X1073456Y104336D01* +X1073457Y104335D01* +X1073458Y104334D01* +X1073571Y104249D01* +X1073683Y104165D01* +X1073684Y104165D01* +X1073686Y104164D01* +X1073817Y104114D01* +X1073948Y104064D01* +X1073950Y104064D01* +X1073951Y104063D01* +X1074091Y104052D01* +X1074232Y104040D01* +X1074233Y104041D01* +X1074235Y104040D01* +X1074249Y104044D01* +X1074510Y104096D01* +X1074538Y104110D01* +X1074562Y104116D01* +X1075848Y104649D01* +X1076960Y104649D01* +X1077045Y104661D01* +X1077131Y104663D01* +X1077185Y104681D01* +X1077242Y104689D01* +X1077320Y104724D01* +X1077402Y104750D01* +X1077449Y104782D01* +X1077501Y104805D01* +X1077567Y104860D01* +X1077638Y104908D01* +X1077675Y104952D01* +X1077718Y104988D01* +X1077766Y105060D01* +X1077821Y105126D01* +X1077844Y105178D01* +X1077876Y105225D01* +X1077902Y105307D01* +X1077936Y105386D01* +X1077944Y105442D01* +X1077961Y105496D01* +X1077964Y105582D01* +X1077975Y105667D01* +X1077967Y105723D01* +X1077969Y105780D01* +X1077947Y105863D01* +X1077935Y105948D01* +X1077911Y106000D01* +X1077897Y106055D01* +X1077853Y106129D01* +X1077818Y106208D01* +X1077781Y106251D01* +X1077752Y106300D01* +X1077689Y106359D01* +X1077633Y106424D01* +X1077591Y106450D01* +X1077544Y106494D01* +X1077415Y106560D01* +X1077349Y106602D01* +X1076334Y107022D01* +X1074762Y108594D01* +X1073911Y110648D01* +X1073911Y112872D01* +X1074762Y114926D01* +X1076334Y116498D01* +X1078388Y117349D01* +X1080612Y117349D01* +X1082666Y116498D01* +X1084238Y114926D01* +X1085089Y112872D01* +X1085089Y110648D01* +X1084238Y108594D01* +X1082666Y107022D01* +X1080612Y106171D01* +X1079500Y106171D01* +X1079415Y106159D01* +X1079329Y106157D01* +X1079275Y106139D01* +X1079218Y106131D01* +X1079140Y106096D01* +X1079058Y106070D01* +X1079011Y106038D01* +X1078959Y106015D01* +X1078893Y105960D01* +X1078822Y105912D01* +X1078785Y105868D01* +X1078742Y105832D01* +X1078694Y105760D01* +X1078639Y105694D01* +X1078616Y105642D01* +X1078584Y105595D01* +X1078558Y105513D01* +X1078524Y105434D01* +X1078516Y105378D01* +X1078499Y105324D01* +X1078496Y105238D01* +X1078485Y105153D01* +X1078493Y105097D01* +X1078491Y105040D01* +X1078513Y104957D01* +X1078525Y104872D01* +X1078549Y104820D01* +X1078563Y104765D01* +X1078607Y104691D01* +X1078642Y104612D01* +X1078679Y104569D01* +X1078708Y104520D01* +X1078771Y104461D01* +X1078827Y104396D01* +X1078869Y104370D01* +X1078916Y104326D01* +X1079045Y104260D01* +X1079111Y104218D01* +X1080126Y103798D01* +X1081698Y102226D01* +X1082549Y100172D01* +X1082549Y97948D01* +X1082118Y96909D01* +X1082089Y96797D01* +X1082055Y96688D01* +X1082054Y96660D01* +X1082047Y96633D01* +X1082050Y96519D01* +X1082047Y96404D01* +X1082054Y96377D01* +X1082055Y96349D01* +X1082090Y96240D01* +X1082119Y96129D01* +X1082133Y96105D01* +X1082142Y96078D01* +X1082206Y95983D01* +X1082264Y95884D01* +X1082285Y95865D01* +X1082300Y95842D01* +X1082388Y95768D01* +X1082472Y95690D01* +X1082497Y95677D01* +X1082518Y95659D01* +X1082623Y95613D01* +X1082725Y95560D01* +X1082750Y95556D01* +X1082778Y95544D01* +X1083041Y95507D01* +X1083056Y95505D01* +X1171992Y95505D01* +X1172079Y95517D01* +X1172166Y95520D01* +X1172219Y95537D01* +X1172274Y95545D01* +X1172353Y95580D01* +X1172437Y95607D01* +X1172476Y95635D01* +X1172533Y95661D01* +X1172646Y95757D01* +X1172710Y95802D01* +X1180294Y103386D01* +X1180346Y103456D01* +X1180406Y103520D01* +X1180432Y103569D01* +X1180465Y103613D01* +X1180496Y103695D01* +X1180536Y103773D01* +X1180544Y103820D01* +X1180566Y103879D01* +X1180578Y104027D01* +X1180591Y104104D01* +X1180591Y105252D01* +X1181442Y107306D01* +X1183014Y108878D01* +X1185068Y109729D01* +X1187292Y109729D01* +X1189346Y108878D01* +X1190918Y107306D01* +X1191769Y105252D01* +X1191769Y103028D01* +X1190918Y100974D01* +X1189346Y99402D01* +X1187292Y98551D01* +X1185068Y98551D01* +X1184998Y98580D01* +X1184996Y98581D01* +X1184995Y98582D01* +X1184862Y98615D01* +X1184723Y98651D01* +X1184721Y98651D01* +X1184719Y98652D01* +X1184579Y98647D01* +X1184438Y98643D01* +X1184437Y98643D01* +X1184435Y98643D01* +X1184302Y98600D01* +X1184168Y98557D01* +X1184166Y98556D01* +X1184165Y98555D01* +X1184153Y98547D01* +X1183931Y98398D01* +X1183912Y98375D01* +X1183891Y98360D01* +X1174938Y89407D01* +X1069601Y89407D01* +X1067518Y91490D01* +X1067518Y91491D01* +X1037895Y121114D01* +X1037825Y121166D01* +X1037761Y121226D01* +X1037711Y121252D01* +X1037667Y121285D01* +X1037586Y121316D01* +X1037508Y121356D01* +X1037460Y121364D01* +X1037402Y121386D01* +X1037254Y121398D01* +X1037177Y121411D01* +X910020Y121411D01* +X909933Y121399D01* +X909846Y121396D01* +X909793Y121379D01* +X909738Y121371D01* +X909659Y121336D01* +X909575Y121309D01* +X909536Y121281D01* +X909479Y121255D01* +X909366Y121159D01* +X909302Y121114D01* +X907910Y119722D01* +X906283Y119048D01* +X906209Y119004D01* +X906130Y118969D01* +X906087Y118932D01* +X906038Y118903D01* +X905979Y118841D01* +X905913Y118785D01* +X905882Y118738D01* +X905843Y118697D01* +X905803Y118620D01* +X905756Y118549D01* +X905738Y118495D01* +X905712Y118444D01* +X905696Y118360D01* +X905670Y118278D01* +X905668Y118221D01* +X905657Y118165D01* +X905665Y118080D01* +X905663Y117994D01* +X905677Y117939D01* +X905682Y117882D01* +X905713Y117802D01* +X905734Y117719D01* +X905763Y117670D01* +X905784Y117617D01* +X905836Y117548D01* +X905880Y117474D01* +X905921Y117435D01* +X905955Y117390D01* +X906024Y117338D01* +X906087Y117280D01* +X906138Y117254D01* +X906183Y117220D01* +X906264Y117189D01* +X906340Y117150D01* +X906389Y117142D01* +X906449Y117119D01* +X906594Y117108D01* +X906671Y117095D01* +X962289Y117095D01* +X967703Y114852D01* +X971005Y111550D01* +X971075Y111498D01* +X971139Y111438D01* +X971188Y111412D01* +X971232Y111379D01* +X971314Y111348D01* +X971392Y111308D01* +X971439Y111300D01* +X971498Y111278D01* +X971646Y111266D01* +X971723Y111253D01* +X991442Y111253D01* +X992633Y110062D01* +X992633Y70278D01* +X991442Y69087D01* +X951658Y69087D01* +X950467Y70278D01* +X950467Y86614D01* +X950459Y86672D01* +X950461Y86730D01* +X950439Y86812D01* +X950427Y86896D01* +X950404Y86949D01* +X950389Y87005D01* +X950346Y87078D01* +X950311Y87155D01* +X950273Y87200D01* +X950244Y87250D01* +X950182Y87308D01* +X950128Y87372D01* +X950079Y87404D01* +X950036Y87444D01* +X949961Y87483D01* +X949891Y87530D01* +X949835Y87547D01* +X949783Y87574D01* +X949715Y87585D01* +X949620Y87615D01* +X949520Y87618D01* +X949452Y87629D01* +X874671Y87629D01* +X874557Y87613D01* +X874443Y87603D01* +X874417Y87593D01* +X874389Y87589D01* +X874284Y87542D01* +X874177Y87501D01* +X874155Y87485D01* +X874130Y87473D01* +X874042Y87399D01* +X873951Y87330D01* +X873934Y87307D01* +X873913Y87290D01* +X873849Y87194D01* +X873780Y87102D01* +X873771Y87076D01* +X873755Y87053D01* +X873721Y86943D01* +X873680Y86836D01* +X873678Y86808D01* +X873669Y86782D01* +X873667Y86667D01* +X873657Y86553D01* +X873663Y86528D01* +X873662Y86498D01* +X873729Y86241D01* +X873733Y86225D01* +X874269Y84932D01* +X874269Y82708D01* +X873418Y80654D01* +X871846Y79082D01* +X869792Y78231D01* +X867568Y78231D01* +X865514Y79082D01* +X863942Y80654D01* +X863091Y82708D01* +X863091Y84932D01* +X863627Y86225D01* +X863656Y86337D01* +X863691Y86446D01* +X863691Y86474D01* +X863698Y86501D01* +X863695Y86615D01* +X863698Y86730D01* +X863691Y86757D01* +X863690Y86785D01* +X863655Y86894D01* +X863626Y87005D01* +X863612Y87029D01* +X863603Y87056D01* +X863539Y87151D01* +X863481Y87250D01* +X863460Y87269D01* +X863445Y87292D01* +X863357Y87366D01* +X863273Y87444D01* +X863249Y87457D01* +X863227Y87475D01* +X863123Y87521D01* +X863020Y87574D01* +X862996Y87578D01* +X862968Y87590D01* +X862704Y87627D01* +X862689Y87629D01* +X761746Y87629D01* +X761688Y87621D01* +X761630Y87623D01* +X761548Y87601D01* +X761464Y87589D01* +X761411Y87566D01* +X761355Y87551D01* +X761282Y87508D01* +X761205Y87473D01* +X761160Y87435D01* +X761110Y87406D01* +X761052Y87344D01* +X760988Y87290D01* +X760956Y87241D01* +X760916Y87198D01* +X760877Y87123D01* +X760830Y87053D01* +X760813Y86997D01* +X760786Y86945D01* +X760775Y86877D01* +X760745Y86782D01* +X760742Y86682D01* +X760731Y86614D01* +X760731Y80771D01* +X750316Y80771D01* +X750258Y80763D01* +X750200Y80765D01* +X750118Y80743D01* +X750035Y80731D01* +X749981Y80707D01* +X749925Y80693D01* +X749852Y80650D01* +X749775Y80615D01* +X749731Y80577D01* +X749680Y80547D01* +X749623Y80486D01* +X749558Y80431D01* +X749526Y80383D01* +X749486Y80340D01* +X749447Y80265D01* +X749401Y80195D01* +X749383Y80139D01* +X749356Y80087D01* +X749345Y80019D01* +X749315Y79924D01* +X749312Y79824D01* +X749301Y79756D01* +X749301Y78739D01* +X749299Y78739D01* +X749299Y79756D01* +X749291Y79814D01* +X749292Y79872D01* +X749271Y79954D01* +X749259Y80037D01* +X749235Y80091D01* +X749221Y80147D01* +X749178Y80220D01* +X749143Y80297D01* +X749105Y80342D01* +X749075Y80392D01* +X749014Y80450D01* +X748959Y80514D01* +X748911Y80546D01* +X748868Y80586D01* +X748793Y80625D01* +X748723Y80671D01* +X748667Y80689D01* +X748615Y80716D01* +X748547Y80727D01* +X748452Y80757D01* +X748352Y80760D01* +X748284Y80771D01* +X737869Y80771D01* +X737869Y86614D01* +X737861Y86672D01* +X737863Y86730D01* +X737841Y86812D01* +X737829Y86896D01* +X737806Y86949D01* +X737791Y87005D01* +X737748Y87078D01* +X737713Y87155D01* +X737675Y87200D01* +X737646Y87250D01* +X737584Y87308D01* +X737530Y87372D01* +X737481Y87404D01* +X737438Y87444D01* +X737363Y87483D01* +X737293Y87530D01* +X737237Y87547D01* +X737185Y87574D01* +X737117Y87585D01* +X737022Y87615D01* +X736922Y87618D01* +X736854Y87629D01* +X732909Y87629D01* +X732880Y87625D01* +X732851Y87628D01* +X732739Y87605D01* +X732627Y87589D01* +X732601Y87577D01* +X732572Y87572D01* +X732471Y87519D01* +X732368Y87473D01* +X732346Y87454D01* +X732319Y87441D01* +X732237Y87363D01* +X732151Y87290D01* +X732135Y87265D01* +X732113Y87245D01* +X732056Y87147D01* +X731993Y87053D01* +X731984Y87025D01* +X731970Y87000D01* +X731942Y86890D01* +X731908Y86782D01* +X731907Y86752D01* +X731900Y86724D01* +X731903Y86611D01* +X731900Y86498D01* +X731908Y86469D01* +X731909Y86440D01* +X731944Y86332D01* +X731972Y86223D01* +X731987Y86197D01* +X731996Y86169D01* +X732042Y86105D01* +X732117Y85978D01* +X732163Y85935D01* +X732191Y85896D01* +X733160Y84927D01* +X734823Y80913D01* +X734823Y76567D01* +X733160Y72553D01* +X730087Y69480D01* +X726073Y67817D01* +X721727Y67817D01* +G37* +%LPD*% +%LPC*% +G36* +X314396Y129666D02* +X314396Y129666D01* +X293984Y150078D01* +X293915Y150130D01* +X293851Y150190D01* +X293801Y150216D01* +X293757Y150249D01* +X293675Y150280D01* +X293597Y150320D01* +X293550Y150328D01* +X293491Y150350D01* +X293344Y150362D01* +X293266Y150375D01* +X289917Y150375D01* +X285902Y152038D01* +X282830Y155111D01* +X281167Y159125D01* +X281167Y163471D01* +X282830Y167485D01* +X285902Y170558D01* +X289917Y172221D01* +X294262Y172221D01* +X298277Y170558D01* +X301349Y167485D01* +X303012Y163471D01* +X303012Y159125D01* +X301349Y155111D01* +X300360Y154121D01* +X300324Y154074D01* +X300282Y154034D01* +X300239Y153961D01* +X300189Y153894D01* +X300168Y153839D01* +X300138Y153788D01* +X300117Y153707D01* +X300087Y153628D01* +X300083Y153570D01* +X300068Y153513D01* +X300071Y153429D01* +X300064Y153345D01* +X300075Y153287D01* +X300077Y153229D01* +X300103Y153149D01* +X300120Y153066D01* +X300147Y153014D01* +X300165Y152958D01* +X300205Y152902D01* +X300251Y152814D01* +X300319Y152741D01* +X300359Y152685D01* +X304834Y148211D01* +X304857Y148193D01* +X304876Y148171D01* +X304928Y148136D01* +X304953Y148113D01* +X304987Y148096D01* +X305061Y148040D01* +X305088Y148029D01* +X305113Y148013D01* +X305221Y147979D01* +X305327Y147939D01* +X305356Y147936D01* +X305384Y147927D01* +X305497Y147924D01* +X305610Y147915D01* +X305639Y147921D01* +X305668Y147920D01* +X305778Y147949D01* +X305889Y147971D01* +X305915Y147984D01* +X305943Y147992D01* +X306040Y148050D01* +X306141Y148102D01* +X306162Y148122D01* +X306187Y148137D01* +X306265Y148220D01* +X306347Y148298D01* +X306362Y148323D01* +X306382Y148344D01* +X306433Y148445D01* +X306491Y148543D01* +X306498Y148571D01* +X306511Y148598D01* +X306524Y148675D01* +X306538Y148728D01* +X306553Y148776D01* +X306553Y148788D01* +X306561Y148819D01* +X306559Y148881D01* +X306567Y148929D01* +X306567Y150771D01* +X308230Y154785D01* +X311302Y157858D01* +X315317Y159521D01* +X319662Y159521D01* +X323677Y157858D01* +X326749Y154785D01* +X328412Y150771D01* +X328412Y146425D01* +X327425Y144040D01* +X327424Y144039D01* +X327423Y144038D01* +X327389Y143905D01* +X327354Y143765D01* +X327354Y143764D01* +X327353Y143762D01* +X327358Y143621D01* +X327362Y143481D01* +X327362Y143480D01* +X327362Y143478D01* +X327406Y143344D01* +X327448Y143210D01* +X327449Y143209D01* +X327450Y143207D01* +X327458Y143195D01* +X327607Y142974D01* +X327630Y142954D01* +X327645Y142934D01* +X329946Y140633D01* +X330015Y140581D01* +X330079Y140521D01* +X330129Y140495D01* +X330173Y140462D01* +X330254Y140431D01* +X330332Y140391D01* +X330380Y140383D01* +X330438Y140361D01* +X330586Y140349D01* +X330663Y140336D01* +X391732Y140336D01* +X391819Y140348D01* +X391906Y140351D01* +X391959Y140368D01* +X392014Y140376D01* +X392094Y140411D01* +X392177Y140438D01* +X392216Y140466D01* +X392273Y140492D01* +X392387Y140588D01* +X392450Y140633D01* +X437228Y185411D01* +X437281Y185481D01* +X437341Y185545D01* +X437366Y185594D01* +X437399Y185638D01* +X437430Y185720D01* +X437470Y185798D01* +X437478Y185845D01* +X437500Y185904D01* +X437512Y186051D01* +X437525Y186129D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193325D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441623Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441515Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y199951D01* +X437513Y200038D01* +X437510Y200125D01* +X437493Y200178D01* +X437486Y200233D01* +X437450Y200313D01* +X437423Y200396D01* +X437395Y200435D01* +X437369Y200492D01* +X437273Y200605D01* +X437228Y200669D01* +X428010Y209887D01* +X427941Y209939D01* +X427877Y209999D01* +X427827Y210025D01* +X427783Y210058D01* +X427701Y210089D01* +X427623Y210129D01* +X427576Y210137D01* +X427517Y210159D01* +X427370Y210171D01* +X427292Y210184D01* +X324601Y210184D01* +X324572Y210180D01* +X324543Y210183D01* +X324432Y210160D01* +X324320Y210144D01* +X324293Y210132D01* +X324264Y210127D01* +X324164Y210074D01* +X324060Y210028D01* +X324038Y210009D01* +X324012Y209996D01* +X323930Y209918D01* +X323843Y209845D01* +X323827Y209820D01* +X323806Y209800D01* +X323749Y209702D01* +X323686Y209608D01* +X323677Y209580D01* +X323662Y209555D01* +X323634Y209445D01* +X323600Y209337D01* +X323599Y209307D01* +X323592Y209279D01* +X323596Y209166D01* +X323593Y209053D01* +X323600Y209024D01* +X323601Y208995D01* +X323636Y208887D01* +X323665Y208778D01* +X323680Y208752D01* +X323689Y208724D01* +X323734Y208661D01* +X323810Y208533D01* +X323855Y208490D01* +X323883Y208451D01* +X326749Y205585D01* +X328412Y201571D01* +X328412Y197225D01* +X326749Y193211D01* +X323677Y190138D01* +X319662Y188475D01* +X315317Y188475D01* +X311302Y190138D01* +X308230Y193211D01* +X306567Y197225D01* +X306567Y201571D01* +X308230Y205585D01* +X310971Y208327D01* +X311006Y208373D01* +X311049Y208414D01* +X311092Y208487D01* +X311142Y208554D01* +X311163Y208609D01* +X311193Y208659D01* +X311213Y208741D01* +X311243Y208820D01* +X311248Y208878D01* +X311263Y208934D01* +X311260Y209019D01* +X311267Y209103D01* +X311255Y209160D01* +X311254Y209219D01* +X311228Y209299D01* +X311211Y209382D01* +X311184Y209433D01* +X311166Y209489D01* +X311126Y209545D01* +X311080Y209634D01* +X311011Y209706D01* +X310971Y209762D01* +X309019Y211715D01* +X304181Y216552D01* +X304113Y216604D01* +X304050Y216663D01* +X304000Y216689D01* +X303954Y216723D01* +X303874Y216754D01* +X303797Y216793D01* +X303742Y216804D01* +X303688Y216825D01* +X303603Y216832D01* +X303519Y216848D01* +X303462Y216843D01* +X303405Y216848D01* +X303321Y216831D01* +X303235Y216824D01* +X303182Y216803D01* +X303126Y216792D01* +X303050Y216753D01* +X302970Y216722D01* +X302925Y216687D01* +X302874Y216661D01* +X302812Y216602D01* +X302743Y216550D01* +X302709Y216505D01* +X302668Y216465D01* +X302624Y216391D01* +X302573Y216323D01* +X302553Y216269D01* +X302524Y216220D01* +X302503Y216137D01* +X302473Y216057D01* +X302468Y216000D01* +X302454Y215945D01* +X302457Y215859D01* +X302450Y215773D01* +X302461Y215725D01* +X302463Y215661D01* +X302508Y215523D01* +X302525Y215446D01* +X303012Y214271D01* +X303012Y209925D01* +X301349Y205911D01* +X298277Y202838D01* +X294262Y201175D01* +X289917Y201175D01* +X285902Y202838D01* +X282830Y205911D01* +X281167Y209925D01* +X281167Y214271D01* +X282830Y218285D01* +X285902Y221358D01* +X289917Y223021D01* +X294262Y223021D01* +X295438Y222534D01* +X295521Y222512D01* +X295601Y222482D01* +X295658Y222477D01* +X295713Y222463D01* +X295799Y222465D01* +X295885Y222458D01* +X295940Y222469D01* +X295997Y222471D01* +X296079Y222497D01* +X296163Y222514D01* +X296214Y222540D01* +X296268Y222558D01* +X296339Y222605D01* +X296416Y222645D01* +X296457Y222684D01* +X296504Y222716D01* +X296559Y222782D01* +X296622Y222841D01* +X296651Y222890D01* +X296687Y222933D01* +X296722Y223012D01* +X296765Y223086D01* +X296779Y223141D01* +X296803Y223193D01* +X296814Y223278D01* +X296836Y223362D01* +X296834Y223418D01* +X296842Y223475D01* +X296829Y223560D01* +X296826Y223646D01* +X296809Y223700D01* +X296801Y223756D01* +X296765Y223835D01* +X296739Y223916D01* +X296710Y223956D01* +X296684Y224015D01* +X296590Y224126D01* +X296544Y224190D01* +X294066Y226668D01* +X293996Y226720D01* +X293932Y226780D01* +X293883Y226806D01* +X293839Y226839D01* +X293757Y226870D01* +X293679Y226910D01* +X293632Y226918D01* +X293573Y226940D01* +X293425Y226952D01* +X293348Y226965D01* +X289995Y226965D01* +X286123Y228569D01* +X283160Y231532D01* +X281557Y235403D01* +X281557Y239593D01* +X283160Y243464D01* +X286123Y246427D01* +X289995Y248031D01* +X294185Y248031D01* +X298056Y246427D01* +X301019Y243464D01* +X302622Y239593D01* +X302622Y235403D01* +X301019Y231532D01* +X300320Y230832D01* +X300284Y230786D01* +X300242Y230745D01* +X300199Y230672D01* +X300149Y230605D01* +X300128Y230550D01* +X300098Y230500D01* +X300078Y230418D01* +X300047Y230339D01* +X300043Y230281D01* +X300028Y230225D01* +X300031Y230140D01* +X300024Y230056D01* +X300035Y229999D01* +X300037Y229940D01* +X300063Y229860D01* +X300080Y229777D01* +X300107Y229725D01* +X300125Y229670D01* +X300165Y229614D01* +X300211Y229525D01* +X300280Y229453D01* +X300320Y229397D01* +X304834Y224882D01* +X304857Y224865D01* +X304876Y224842D01* +X304971Y224779D01* +X305061Y224711D01* +X305088Y224701D01* +X305113Y224685D01* +X305221Y224651D01* +X305327Y224610D01* +X305356Y224608D01* +X305384Y224599D01* +X305497Y224596D01* +X305610Y224587D01* +X305639Y224592D01* +X305668Y224592D01* +X305778Y224620D01* +X305889Y224643D01* +X305915Y224656D01* +X305943Y224663D01* +X306040Y224721D01* +X306141Y224774D01* +X306162Y224794D01* +X306187Y224809D01* +X306265Y224891D01* +X306347Y224969D01* +X306362Y224995D01* +X306382Y225016D01* +X306434Y225117D01* +X306491Y225215D01* +X306498Y225243D01* +X306511Y225269D01* +X306524Y225347D01* +X306561Y225490D01* +X306559Y225553D01* +X306567Y225600D01* +X306567Y226971D01* +X308230Y230985D01* +X311302Y234058D01* +X315317Y235721D01* +X319662Y235721D01* +X323677Y234058D01* +X326749Y230985D01* +X328412Y226971D01* +X328412Y222625D01* +X328260Y222258D01* +X328231Y222147D01* +X328197Y222037D01* +X328196Y222009D01* +X328189Y221982D01* +X328192Y221868D01* +X328189Y221753D01* +X328196Y221726D01* +X328197Y221698D01* +X328232Y221589D01* +X328261Y221478D01* +X328275Y221454D01* +X328284Y221427D01* +X328348Y221332D01* +X328406Y221233D01* +X328427Y221214D01* +X328442Y221191D01* +X328530Y221117D01* +X328614Y221039D01* +X328638Y221026D01* +X328660Y221008D01* +X328765Y220961D01* +X328867Y220909D01* +X328891Y220905D01* +X328919Y220893D01* +X329183Y220856D01* +X329198Y220854D01* +X432607Y220854D01* +X434765Y218696D01* +X443740Y209721D01* +X443810Y209669D01* +X443874Y209609D01* +X443923Y209583D01* +X443967Y209550D01* +X444049Y209519D01* +X444127Y209479D01* +X444174Y209471D01* +X444233Y209449D01* +X444381Y209437D01* +X444458Y209424D01* +X444940Y209424D01* +X445026Y209436D01* +X445114Y209439D01* +X445166Y209456D01* +X445221Y209464D01* +X445301Y209499D01* +X445384Y209526D01* +X445423Y209554D01* +X445480Y209580D01* +X445594Y209676D01* +X445657Y209721D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192756D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444537Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +X446414Y175602D01* +X445657Y176359D01* +X445588Y176411D01* +X445524Y176471D01* +X445474Y176497D01* +X445430Y176530D01* +X445349Y176561D01* +X445271Y176601D01* +X445223Y176609D01* +X445165Y176631D01* +X445017Y176643D01* +X444940Y176656D01* +X444458Y176656D01* +X444371Y176644D01* +X444284Y176641D01* +X444231Y176624D01* +X444176Y176616D01* +X444097Y176581D01* +X444013Y176554D01* +X443974Y176526D01* +X443917Y176500D01* +X443804Y176404D01* +X443740Y176359D01* +X397047Y129666D01* +X314396Y129666D01* +G37* +%LPD*% +%LPC*% +G36* +X721727Y9397D02* +X721727Y9397D01* +X717713Y11060D01* +X714640Y14133D01* +X712977Y18147D01* +X712977Y22493D01* +X714640Y26507D01* +X717713Y29580D01* +X720225Y30620D01* +X720226Y30621D01* +X720227Y30621D01* +X720346Y30692D01* +X720469Y30765D01* +X720470Y30766D01* +X720472Y30767D01* +X720569Y30870D01* +X720665Y30971D01* +X720665Y30973D01* +X720666Y30974D01* +X720731Y31100D01* +X720795Y31224D01* +X720795Y31226D01* +X720796Y31227D01* +X720798Y31242D01* +X720850Y31503D01* +X720847Y31534D01* +X720851Y31558D01* +X720851Y34283D01* +X732797Y46229D01* +X854703Y46229D01* +X862025Y38906D01* +X862095Y38854D01* +X862159Y38794D01* +X862209Y38768D01* +X862253Y38735D01* +X862334Y38704D01* +X862412Y38664D01* +X862460Y38656D01* +X862518Y38634D01* +X862666Y38622D01* +X862743Y38609D01* +X871474Y38609D01* +X871561Y38621D01* +X871648Y38624D01* +X871701Y38641D01* +X871756Y38649D01* +X871835Y38684D01* +X871919Y38711D01* +X871958Y38739D01* +X872015Y38765D01* +X872128Y38861D01* +X872192Y38906D01* +X872652Y39366D01* +X874789Y40251D01* +X877102Y40251D01* +X879239Y39366D01* +X880875Y37730D01* +X881760Y35593D01* +X881760Y33280D01* +X880875Y31142D01* +X879239Y29507D01* +X877102Y28622D01* +X874720Y28622D01* +X874662Y28613D01* +X874604Y28615D01* +X874522Y28594D01* +X874438Y28582D01* +X874385Y28558D01* +X874329Y28543D01* +X874256Y28500D01* +X874179Y28465D01* +X874134Y28428D01* +X874084Y28398D01* +X874026Y28336D01* +X873962Y28282D01* +X873930Y28233D01* +X873890Y28191D01* +X873851Y28115D01* +X873804Y28045D01* +X873787Y27989D01* +X873760Y27937D01* +X873749Y27869D01* +X873719Y27774D01* +X873716Y27674D01* +X873705Y27606D01* +X873705Y26783D01* +X872819Y24646D01* +X871184Y23011D01* +X869047Y22125D01* +X868588Y22125D01* +X868475Y22109D01* +X868360Y22099D01* +X868334Y22089D01* +X868307Y22085D01* +X868202Y22039D01* +X868095Y21997D01* +X868073Y21981D01* +X868047Y21969D01* +X867960Y21895D01* +X867868Y21826D01* +X867851Y21803D01* +X867830Y21786D01* +X867767Y21690D01* +X867698Y21598D01* +X867688Y21572D01* +X867673Y21549D01* +X867638Y21439D01* +X867598Y21332D01* +X867595Y21304D01* +X867587Y21278D01* +X867584Y21163D01* +X867575Y21049D01* +X867580Y21024D01* +X867580Y20994D01* +X867647Y20737D01* +X867650Y20721D01* +X867665Y20687D01* +X867665Y18373D01* +X866779Y16236D01* +X865144Y14601D01* +X863007Y13715D01* +X860693Y13715D01* +X858556Y14601D01* +X856921Y16236D01* +X856035Y18373D01* +X856035Y20025D01* +X856027Y20080D01* +X856029Y20123D01* +X856022Y20149D01* +X856020Y20199D01* +X856003Y20252D01* +X855995Y20306D01* +X855960Y20385D01* +X855957Y20398D01* +X855955Y20402D01* +X855933Y20469D01* +X855905Y20509D01* +X855879Y20566D01* +X855783Y20679D01* +X855738Y20743D01* +X844855Y31626D01* +X844785Y31679D01* +X844721Y31739D01* +X844671Y31764D01* +X844627Y31797D01* +X844546Y31828D01* +X844468Y31868D01* +X844420Y31876D01* +X844362Y31898D01* +X844214Y31911D01* +X844137Y31924D01* +X811602Y31924D01* +X811573Y31919D01* +X811544Y31922D01* +X811433Y31900D01* +X811321Y31884D01* +X811294Y31872D01* +X811265Y31866D01* +X811165Y31814D01* +X811061Y31767D01* +X811039Y31749D01* +X811013Y31735D01* +X810931Y31657D01* +X810844Y31584D01* +X810828Y31559D01* +X810807Y31539D01* +X810749Y31442D01* +X810687Y31347D01* +X810678Y31319D01* +X810663Y31294D01* +X810635Y31184D01* +X810601Y31076D01* +X810600Y31047D01* +X810593Y31018D01* +X810596Y30905D01* +X810594Y30792D01* +X810601Y30764D01* +X810602Y30734D01* +X810637Y30626D01* +X810665Y30517D01* +X810680Y30492D01* +X810689Y30464D01* +X810735Y30400D01* +X810811Y30273D01* +X810856Y30230D01* +X810884Y30190D01* +X811023Y30052D01* +X811023Y10588D01* +X809832Y9397D01* +X790368Y9397D01* +X789177Y10588D01* +X789177Y28035D01* +X789173Y28064D01* +X789176Y28093D01* +X789153Y28204D01* +X789137Y28316D01* +X789125Y28343D01* +X789120Y28372D01* +X789068Y28472D01* +X789021Y28576D01* +X789002Y28598D01* +X788989Y28624D01* +X788911Y28706D01* +X788838Y28793D01* +X788813Y28809D01* +X788793Y28830D01* +X788695Y28887D01* +X788601Y28950D01* +X788573Y28959D01* +X788548Y28974D01* +X788438Y29002D01* +X788330Y29036D01* +X788300Y29037D01* +X788272Y29044D01* +X788159Y29040D01* +X788046Y29043D01* +X788017Y29036D01* +X787988Y29035D01* +X787880Y29000D01* +X787771Y28971D01* +X787745Y28956D01* +X787717Y28947D01* +X787654Y28902D01* +X787526Y28826D01* +X787483Y28781D01* +X787444Y28753D01* +X784802Y26111D01* +X784801Y26110D01* +X784800Y26109D01* +X784714Y25994D01* +X784632Y25884D01* +X784631Y25882D01* +X784630Y25881D01* +X784580Y25747D01* +X784530Y25618D01* +X784530Y25616D01* +X784530Y25615D01* +X784518Y25470D01* +X784507Y25335D01* +X784507Y25333D01* +X784507Y25332D01* +X784510Y25316D01* +X784563Y25056D01* +X784577Y25029D01* +X784582Y25004D01* +X785623Y22493D01* +X785623Y18147D01* +X783960Y14133D01* +X780887Y11060D01* +X776873Y9397D01* +X772527Y9397D01* +X768513Y11060D01* +X765440Y14133D01* +X763777Y18147D01* +X763777Y22493D01* +X765440Y26507D01* +X768513Y29580D01* +X772527Y31243D01* +X776873Y31243D01* +X779384Y30202D01* +X779386Y30202D01* +X779387Y30201D01* +X779522Y30167D01* +X779660Y30131D01* +X779661Y30131D01* +X779663Y30131D01* +X779803Y30136D01* +X779944Y30140D01* +X779945Y30140D01* +X779947Y30140D01* +X780080Y30183D01* +X780215Y30226D01* +X780216Y30227D01* +X780218Y30228D01* +X780230Y30236D01* +X780347Y30315D01* +X780348Y30315D01* +X780350Y30317D01* +X780451Y30384D01* +X780471Y30408D01* +X780491Y30422D01* +X784323Y34254D01* +X784340Y34278D01* +X784363Y34297D01* +X784426Y34391D01* +X784494Y34482D01* +X784504Y34509D01* +X784521Y34533D01* +X784555Y34642D01* +X784595Y34747D01* +X784597Y34777D01* +X784606Y34804D01* +X784609Y34918D01* +X784619Y35031D01* +X784613Y35059D01* +X784614Y35089D01* +X784585Y35198D01* +X784563Y35309D01* +X784549Y35335D01* +X784542Y35364D01* +X784484Y35461D01* +X784432Y35562D01* +X784412Y35583D01* +X784397Y35608D01* +X784314Y35686D01* +X784236Y35768D01* +X784211Y35783D01* +X784189Y35803D01* +X784088Y35854D01* +X783991Y35911D01* +X783962Y35919D01* +X783936Y35932D01* +X783859Y35945D01* +X783715Y35982D01* +X783653Y35980D01* +X783605Y35988D01* +X769700Y35988D01* +X769613Y35975D01* +X769526Y35973D01* +X769473Y35956D01* +X769418Y35948D01* +X769338Y35912D01* +X769255Y35885D01* +X769216Y35857D01* +X769159Y35831D01* +X769046Y35736D01* +X768982Y35690D01* +X759402Y26111D01* +X759401Y26110D01* +X759400Y26109D01* +X759317Y25997D01* +X759232Y25884D01* +X759231Y25882D01* +X759230Y25881D01* +X759180Y25749D01* +X759130Y25618D01* +X759130Y25616D01* +X759130Y25615D01* +X759118Y25470D01* +X759107Y25335D01* +X759107Y25333D01* +X759107Y25332D01* +X759110Y25316D01* +X759163Y25056D01* +X759177Y25029D01* +X759182Y25004D01* +X760223Y22493D01* +X760223Y18147D01* +X758560Y14133D01* +X755487Y11060D01* +X751473Y9397D01* +X747127Y9397D01* +X743113Y11060D01* +X740040Y14133D01* +X738377Y18147D01* +X738377Y22493D01* +X740040Y26507D01* +X743113Y29580D01* +X747127Y31243D01* +X751473Y31243D01* +X753984Y30202D01* +X753986Y30202D01* +X753987Y30201D01* +X754122Y30167D01* +X754260Y30131D01* +X754261Y30131D01* +X754263Y30131D01* +X754403Y30136D01* +X754544Y30140D01* +X754545Y30140D01* +X754547Y30140D01* +X754680Y30183D01* +X754815Y30226D01* +X754816Y30227D01* +X754818Y30228D01* +X754830Y30236D01* +X754947Y30315D01* +X754948Y30315D01* +X754950Y30317D01* +X755051Y30384D01* +X755071Y30408D01* +X755091Y30422D01* +X763067Y38398D01* +X763084Y38422D01* +X763107Y38441D01* +X763170Y38535D01* +X763237Y38625D01* +X763248Y38653D01* +X763264Y38677D01* +X763298Y38785D01* +X763339Y38891D01* +X763341Y38920D01* +X763350Y38948D01* +X763353Y39062D01* +X763362Y39174D01* +X763357Y39203D01* +X763357Y39232D01* +X763329Y39342D01* +X763306Y39453D01* +X763293Y39479D01* +X763285Y39507D01* +X763228Y39605D01* +X763175Y39705D01* +X763155Y39727D01* +X763140Y39752D01* +X763058Y39829D01* +X762980Y39911D01* +X762954Y39926D01* +X762933Y39946D01* +X762832Y39998D01* +X762734Y40055D01* +X762706Y40062D01* +X762680Y40076D01* +X762602Y40089D01* +X762459Y40125D01* +X762396Y40123D01* +X762349Y40131D01* +X735743Y40131D01* +X735657Y40119D01* +X735569Y40116D01* +X735517Y40099D01* +X735462Y40091D01* +X735382Y40056D01* +X735299Y40029D01* +X735260Y40001D01* +X735202Y39975D01* +X735089Y39879D01* +X735025Y39834D01* +X727403Y32211D01* +X727334Y32120D01* +X727260Y32032D01* +X727249Y32006D01* +X727232Y31984D01* +X727191Y31877D01* +X727144Y31772D01* +X727141Y31744D01* +X727131Y31718D01* +X727121Y31604D01* +X727105Y31490D01* +X727109Y31463D01* +X727107Y31435D01* +X727130Y31323D01* +X727146Y31209D01* +X727157Y31184D01* +X727163Y31156D01* +X727216Y31054D01* +X727263Y30950D01* +X727281Y30929D01* +X727294Y30904D01* +X727373Y30821D01* +X727447Y30733D01* +X727469Y30720D01* +X727490Y30698D01* +X727719Y30563D01* +X727732Y30555D01* +X730087Y29580D01* +X733160Y26507D01* +X734823Y22493D01* +X734823Y18147D01* +X733160Y14133D01* +X730087Y11060D01* +X726073Y9397D01* +X721727Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X888158Y37337D02* +X888158Y37337D01* +X886967Y38528D01* +X886967Y78312D01* +X888158Y79503D01* +X927942Y79503D01* +X929133Y78312D01* +X929133Y38528D01* +X927942Y37337D01* +X888158Y37337D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X256159Y99565D02* +X256159Y99565D01* +X250744Y101808D01* +X246600Y105952D01* +X244357Y111367D01* +X244357Y117228D01* +X246600Y122643D01* +X250744Y126788D01* +X256159Y129031D01* +X262020Y129031D01* +X267435Y126788D01* +X271579Y122643D01* +X273822Y117228D01* +X273822Y111367D01* +X271579Y105952D01* +X267435Y101808D01* +X262020Y99565D01* +X256159Y99565D01* +G37* +%LPD*% +%LPC*% +G36* +X256159Y257065D02* +X256159Y257065D01* +X250744Y259308D01* +X246600Y263452D01* +X244357Y268867D01* +X244357Y274728D01* +X246600Y280143D01* +X250744Y284288D01* +X256159Y286531D01* +X262020Y286531D01* +X267435Y284288D01* +X271579Y280143D01* +X273822Y274728D01* +X273822Y268867D01* +X271579Y263452D01* +X267435Y259308D01* +X262020Y257065D01* +X256159Y257065D01* +G37* +%LPD*% +%LPC*% +G36* +X486568Y179831D02* +X486568Y179831D01* +X484514Y180682D01* +X482942Y182254D01* +X482091Y184308D01* +X482091Y186532D01* +X482942Y188586D01* +X484514Y190158D01* +X486568Y191009D01* +X488696Y191009D01* +X488754Y191017D01* +X488812Y191015D01* +X488894Y191037D01* +X488978Y191049D01* +X489031Y191072D01* +X489087Y191087D01* +X489160Y191130D01* +X489237Y191165D01* +X489282Y191203D01* +X489332Y191232D01* +X489390Y191294D01* +X489454Y191348D01* +X489486Y191397D01* +X489526Y191440D01* +X489565Y191515D01* +X489612Y191585D01* +X489629Y191641D01* +X489656Y191693D01* +X489667Y191761D01* +X489697Y191856D01* +X489700Y191956D01* +X489711Y192024D01* +X489711Y194056D01* +X489703Y194114D01* +X489705Y194172D01* +X489683Y194254D01* +X489671Y194338D01* +X489648Y194391D01* +X489633Y194447D01* +X489590Y194520D01* +X489555Y194597D01* +X489517Y194642D01* +X489488Y194692D01* +X489426Y194750D01* +X489372Y194814D01* +X489323Y194846D01* +X489280Y194886D01* +X489205Y194925D01* +X489135Y194972D01* +X489079Y194989D01* +X489027Y195016D01* +X488959Y195027D01* +X488864Y195057D01* +X488764Y195060D01* +X488696Y195071D01* +X486568Y195071D01* +X484514Y195922D01* +X482942Y197494D01* +X482091Y199548D01* +X482091Y201772D01* +X482942Y203826D01* +X484514Y205398D01* +X486568Y206249D01* +X488792Y206249D01* +X490846Y205398D01* +X492418Y203826D01* +X493269Y201772D01* +X493269Y199644D01* +X493276Y199596D01* +X493275Y199590D01* +X493277Y199584D01* +X493275Y199528D01* +X493297Y199446D01* +X493309Y199362D01* +X493332Y199309D01* +X493347Y199253D01* +X493390Y199180D01* +X493425Y199103D01* +X493463Y199058D01* +X493492Y199008D01* +X493554Y198950D01* +X493608Y198886D01* +X493657Y198854D01* +X493700Y198814D01* +X493775Y198775D01* +X493845Y198728D01* +X493901Y198711D01* +X493953Y198684D01* +X494021Y198673D01* +X494116Y198643D01* +X494216Y198640D01* +X494284Y198629D01* +X496316Y198629D01* +X496374Y198637D01* +X496432Y198635D01* +X496514Y198657D01* +X496598Y198669D01* +X496651Y198692D01* +X496707Y198707D01* +X496780Y198750D01* +X496857Y198785D01* +X496902Y198823D01* +X496952Y198852D01* +X497010Y198914D01* +X497074Y198968D01* +X497106Y199017D01* +X497146Y199060D01* +X497185Y199135D01* +X497232Y199205D01* +X497249Y199261D01* +X497276Y199313D01* +X497287Y199381D01* +X497317Y199476D01* +X497320Y199576D01* +X497331Y199644D01* +X497331Y201772D01* +X498182Y203826D01* +X499754Y205398D01* +X501808Y206249D01* +X504032Y206249D01* +X506086Y205398D01* +X507658Y203826D01* +X508509Y201772D01* +X508509Y199548D01* +X507658Y197494D01* +X506086Y195922D01* +X504032Y195071D01* +X501904Y195071D01* +X501846Y195063D01* +X501788Y195065D01* +X501706Y195043D01* +X501622Y195031D01* +X501569Y195008D01* +X501513Y194993D01* +X501440Y194950D01* +X501363Y194915D01* +X501318Y194877D01* +X501268Y194848D01* +X501210Y194786D01* +X501146Y194732D01* +X501114Y194683D01* +X501074Y194640D01* +X501035Y194565D01* +X500988Y194495D01* +X500971Y194439D01* +X500944Y194387D01* +X500933Y194319D01* +X500903Y194224D01* +X500900Y194124D01* +X500889Y194056D01* +X500889Y192024D01* +X500897Y191966D01* +X500895Y191908D01* +X500917Y191826D01* +X500929Y191742D01* +X500952Y191689D01* +X500967Y191633D01* +X501010Y191560D01* +X501045Y191483D01* +X501083Y191438D01* +X501112Y191388D01* +X501174Y191330D01* +X501228Y191266D01* +X501277Y191234D01* +X501320Y191194D01* +X501395Y191155D01* +X501465Y191108D01* +X501521Y191091D01* +X501573Y191064D01* +X501641Y191053D01* +X501736Y191023D01* +X501836Y191020D01* +X501904Y191009D01* +X504032Y191009D01* +X506086Y190158D01* +X507658Y188586D01* +X508509Y186532D01* +X508509Y184308D01* +X507658Y182254D01* +X506086Y180682D01* +X504032Y179831D01* +X501808Y179831D01* +X499754Y180682D01* +X498182Y182254D01* +X497331Y184308D01* +X497331Y186436D01* +X497323Y186494D01* +X497325Y186552D01* +X497303Y186634D01* +X497291Y186718D01* +X497268Y186771D01* +X497253Y186827D01* +X497210Y186900D01* +X497175Y186977D01* +X497137Y187022D01* +X497108Y187072D01* +X497046Y187130D01* +X496992Y187194D01* +X496943Y187226D01* +X496900Y187266D01* +X496825Y187305D01* +X496755Y187352D01* +X496699Y187369D01* +X496647Y187396D01* +X496579Y187407D01* +X496484Y187437D01* +X496384Y187440D01* +X496316Y187451D01* +X494284Y187451D01* +X494226Y187443D01* +X494168Y187445D01* +X494086Y187423D01* +X494002Y187411D01* +X493949Y187388D01* +X493893Y187373D01* +X493820Y187330D01* +X493743Y187295D01* +X493698Y187257D01* +X493648Y187228D01* +X493590Y187166D01* +X493526Y187112D01* +X493494Y187063D01* +X493454Y187020D01* +X493415Y186945D01* +X493368Y186875D01* +X493351Y186819D01* +X493324Y186767D01* +X493313Y186699D01* +X493283Y186604D01* +X493280Y186504D01* +X493269Y186436D01* +X493269Y184308D01* +X492418Y182254D01* +X490846Y180682D01* +X488792Y179831D01* +X486568Y179831D01* +G37* +%LPD*% +%LPC*% +G36* +X804068Y51561D02* +X804068Y51561D01* +X802014Y52412D01* +X800442Y53984D01* +X799591Y56038D01* +X799591Y58262D01* +X800442Y60316D01* +X801834Y61708D01* +X801886Y61777D01* +X801946Y61841D01* +X801972Y61891D01* +X802005Y61935D01* +X802036Y62016D01* +X802076Y62094D01* +X802084Y62142D01* +X802106Y62200D01* +X802118Y62348D01* +X802131Y62425D01* +X802131Y69437D01* +X802119Y69523D01* +X802116Y69611D01* +X802099Y69663D01* +X802091Y69718D01* +X802056Y69798D01* +X802029Y69881D01* +X802001Y69920D01* +X801975Y69978D01* +X801879Y70091D01* +X801834Y70155D01* +X800490Y71499D01* +X800420Y71551D01* +X800356Y71611D01* +X800306Y71637D01* +X800262Y71670D01* +X800181Y71701D01* +X800103Y71741D01* +X800055Y71749D01* +X799997Y71771D01* +X799849Y71783D01* +X799772Y71796D01* +X797803Y71796D01* +X795749Y72647D01* +X794177Y74219D01* +X793764Y75216D01* +X793706Y75314D01* +X793653Y75416D01* +X793634Y75437D01* +X793620Y75460D01* +X793536Y75539D01* +X793457Y75622D01* +X793433Y75637D01* +X793413Y75656D01* +X793311Y75708D01* +X793212Y75766D01* +X793185Y75773D01* +X793161Y75786D01* +X793048Y75808D01* +X792937Y75836D01* +X792909Y75835D01* +X792882Y75841D01* +X792767Y75831D01* +X792652Y75827D01* +X792626Y75819D01* +X792598Y75816D01* +X792491Y75775D01* +X792382Y75740D01* +X792362Y75725D01* +X792333Y75714D01* +X792121Y75554D01* +X792109Y75545D01* +X790566Y74002D01* +X788512Y73151D01* +X786288Y73151D01* +X784234Y74002D01* +X782662Y75574D01* +X781811Y77628D01* +X781811Y79852D01* +X782662Y81906D01* +X784234Y83478D01* +X786288Y84329D01* +X788512Y84329D01* +X790566Y83478D01* +X792138Y81906D01* +X792551Y80909D01* +X792609Y80811D01* +X792662Y80709D01* +X792681Y80688D01* +X792695Y80665D01* +X792779Y80586D01* +X792858Y80503D01* +X792882Y80488D01* +X792902Y80469D01* +X793004Y80417D01* +X793103Y80359D01* +X793130Y80352D01* +X793154Y80339D01* +X793267Y80317D01* +X793378Y80289D01* +X793406Y80290D01* +X793433Y80284D01* +X793548Y80294D01* +X793663Y80298D01* +X793689Y80306D01* +X793717Y80309D01* +X793824Y80350D01* +X793933Y80385D01* +X793953Y80400D01* +X793982Y80411D01* +X794194Y80571D01* +X794206Y80580D01* +X795749Y82123D01* +X797803Y82974D01* +X800027Y82974D01* +X802081Y82123D01* +X803653Y80551D01* +X804504Y78497D01* +X804504Y76528D01* +X804516Y76442D01* +X804519Y76354D01* +X804536Y76302D01* +X804544Y76247D01* +X804579Y76167D01* +X804606Y76084D01* +X804634Y76045D01* +X804660Y75987D01* +X804756Y75874D01* +X804801Y75810D01* +X805478Y75133D01* +X805502Y75116D01* +X805521Y75093D01* +X805615Y75031D01* +X805705Y74963D01* +X805733Y74952D01* +X805757Y74936D01* +X805865Y74902D01* +X805971Y74861D01* +X806000Y74859D01* +X806028Y74850D01* +X806142Y74847D01* +X806254Y74838D01* +X806283Y74843D01* +X806312Y74843D01* +X806422Y74871D01* +X806533Y74894D01* +X806559Y74907D01* +X806587Y74915D01* +X806685Y74972D01* +X806785Y75025D01* +X806807Y75045D01* +X806832Y75060D01* +X806909Y75142D01* +X806991Y75220D01* +X807006Y75246D01* +X807026Y75267D01* +X807078Y75368D01* +X807135Y75466D01* +X807142Y75494D01* +X807156Y75520D01* +X807169Y75598D01* +X807205Y75741D01* +X807203Y75804D01* +X807211Y75851D01* +X807211Y77312D01* +X808062Y79366D01* +X809634Y80938D01* +X811688Y81789D01* +X813912Y81789D01* +X815966Y80938D01* +X817538Y79366D01* +X818389Y77312D01* +X818389Y75088D01* +X817538Y73034D01* +X815966Y71462D01* +X813912Y70611D01* +X811688Y70611D01* +X809633Y71463D01* +X809521Y71491D01* +X809412Y71526D01* +X809384Y71527D01* +X809357Y71534D01* +X809243Y71531D01* +X809128Y71533D01* +X809101Y71526D01* +X809073Y71526D01* +X808964Y71491D01* +X808853Y71462D01* +X808829Y71447D01* +X808802Y71439D01* +X808707Y71375D01* +X808608Y71316D01* +X808589Y71296D01* +X808566Y71281D01* +X808492Y71193D01* +X808414Y71109D01* +X808401Y71084D01* +X808383Y71063D01* +X808337Y70958D01* +X808284Y70856D01* +X808280Y70831D01* +X808268Y70803D01* +X808231Y70540D01* +X808229Y70525D01* +X808229Y62425D01* +X808241Y62339D01* +X808244Y62251D01* +X808261Y62199D01* +X808269Y62144D01* +X808304Y62064D01* +X808331Y61981D01* +X808359Y61942D01* +X808385Y61885D01* +X808481Y61771D01* +X808526Y61708D01* +X809918Y60316D01* +X810769Y58262D01* +X810769Y56038D01* +X809918Y53984D01* +X808346Y52412D01* +X806292Y51561D01* +X804068Y51561D01* +G37* +%LPD*% +%LPC*% +G36* +X450843Y286346D02* +X450843Y286346D01* +X448789Y287197D01* +X447217Y288769D01* +X446366Y290823D01* +X446366Y293122D01* +X446358Y293178D01* +X446359Y293225D01* +X446352Y293252D01* +X446351Y293296D01* +X446334Y293349D01* +X446326Y293404D01* +X446294Y293475D01* +X446287Y293500D01* +X446282Y293510D01* +X446263Y293567D01* +X446235Y293606D01* +X446210Y293663D01* +X446146Y293739D01* +X446142Y293745D01* +X446135Y293752D01* +X446114Y293776D01* +X446068Y293840D01* +X414088Y325820D01* +X414088Y327465D01* +X414076Y327551D01* +X414073Y327639D01* +X414056Y327691D01* +X414048Y327746D01* +X414013Y327826D01* +X413986Y327909D01* +X413958Y327948D01* +X413932Y328005D01* +X413836Y328119D01* +X413791Y328182D01* +X412399Y329574D01* +X411548Y331628D01* +X411548Y333852D01* +X412399Y335906D01* +X413971Y337478D01* +X416025Y338329D01* +X418249Y338329D01* +X420303Y337478D01* +X421875Y335906D01* +X422726Y333852D01* +X422726Y331628D01* +X421875Y329574D01* +X421134Y328833D01* +X421099Y328787D01* +X421056Y328746D01* +X421014Y328674D01* +X420963Y328606D01* +X420942Y328552D01* +X420913Y328501D01* +X420892Y328420D01* +X420862Y328341D01* +X420857Y328282D01* +X420843Y328226D01* +X420845Y328141D01* +X420838Y328057D01* +X420850Y328000D01* +X420852Y327941D01* +X420878Y327861D01* +X420894Y327779D01* +X420921Y327727D01* +X420939Y327671D01* +X420979Y327615D01* +X421025Y327526D01* +X421094Y327454D01* +X421134Y327398D01* +X450711Y297821D01* +X450781Y297768D01* +X450845Y297708D01* +X450894Y297683D01* +X450938Y297650D01* +X451020Y297619D01* +X451098Y297579D01* +X451145Y297571D01* +X451204Y297549D01* +X451351Y297536D01* +X451429Y297523D01* +X453066Y297523D01* +X455120Y296672D01* +X456692Y295100D01* +X457543Y293046D01* +X457543Y290823D01* +X456692Y288769D01* +X455120Y287197D01* +X453066Y286346D01* +X450843Y286346D01* +G37* +%LPD*% +%LPC*% +G36* +X689768Y47751D02* +X689768Y47751D01* +X687714Y48602D01* +X686142Y50174D01* +X685291Y52228D01* +X685291Y52745D01* +X685275Y52859D01* +X685265Y52973D01* +X685255Y52999D01* +X685251Y53026D01* +X685204Y53131D01* +X685163Y53238D01* +X685147Y53260D01* +X685135Y53286D01* +X685061Y53373D01* +X684992Y53465D01* +X684969Y53482D01* +X684952Y53503D01* +X684856Y53566D01* +X684764Y53635D01* +X684738Y53645D01* +X684715Y53660D01* +X684605Y53695D01* +X684498Y53736D01* +X684470Y53738D01* +X684444Y53746D01* +X684329Y53749D01* +X684215Y53758D01* +X684190Y53753D01* +X684160Y53753D01* +X683903Y53686D01* +X683887Y53683D01* +X681832Y52831D01* +X679608Y52831D01* +X677554Y53682D01* +X675982Y55254D01* +X675131Y57308D01* +X675131Y59532D01* +X675982Y61586D01* +X677554Y63158D01* +X679608Y64009D01* +X681832Y64009D01* +X683887Y63157D01* +X683999Y63129D01* +X684108Y63094D01* +X684136Y63093D01* +X684163Y63086D01* +X684277Y63089D01* +X684392Y63087D01* +X684419Y63094D01* +X684447Y63094D01* +X684556Y63129D01* +X684667Y63158D01* +X684691Y63173D01* +X684718Y63181D01* +X684813Y63245D01* +X684912Y63304D01* +X684931Y63324D01* +X684954Y63339D01* +X685028Y63427D01* +X685106Y63511D01* +X685119Y63536D01* +X685137Y63557D01* +X685183Y63661D01* +X685236Y63764D01* +X685240Y63789D01* +X685252Y63817D01* +X685289Y64080D01* +X685291Y64095D01* +X685291Y64612D01* +X686142Y66666D01* +X687714Y68238D01* +X689768Y69089D01* +X691992Y69089D01* +X694046Y68238D01* +X695618Y66666D01* +X696469Y64612D01* +X696469Y64095D01* +X696485Y63981D01* +X696495Y63867D01* +X696505Y63841D01* +X696509Y63814D01* +X696556Y63709D01* +X696597Y63602D01* +X696613Y63580D01* +X696625Y63554D01* +X696699Y63467D01* +X696768Y63375D01* +X696791Y63358D01* +X696808Y63337D01* +X696904Y63274D01* +X696996Y63205D01* +X697022Y63195D01* +X697045Y63180D01* +X697155Y63145D01* +X697262Y63104D01* +X697290Y63102D01* +X697316Y63094D01* +X697431Y63091D01* +X697545Y63082D01* +X697570Y63087D01* +X697600Y63087D01* +X697857Y63154D01* +X697873Y63157D01* +X699928Y64009D01* +X702152Y64009D01* +X704206Y63158D01* +X705778Y61586D01* +X706629Y59532D01* +X706629Y57308D01* +X705778Y55254D01* +X704206Y53682D01* +X702152Y52831D01* +X699928Y52831D01* +X697873Y53683D01* +X697761Y53711D01* +X697652Y53746D01* +X697624Y53747D01* +X697597Y53754D01* +X697483Y53751D01* +X697368Y53753D01* +X697341Y53746D01* +X697313Y53746D01* +X697204Y53711D01* +X697093Y53682D01* +X697069Y53667D01* +X697042Y53659D01* +X696947Y53595D01* +X696848Y53536D01* +X696829Y53516D01* +X696806Y53501D01* +X696732Y53413D01* +X696654Y53329D01* +X696641Y53304D01* +X696623Y53283D01* +X696577Y53178D01* +X696524Y53076D01* +X696520Y53051D01* +X696508Y53023D01* +X696471Y52760D01* +X696469Y52745D01* +X696469Y52228D01* +X695618Y50174D01* +X694046Y48602D01* +X691992Y47751D01* +X689768Y47751D01* +G37* +%LPD*% +%LPC*% +G36* +X670927Y9397D02* +X670927Y9397D01* +X666913Y11060D01* +X663840Y14133D01* +X662177Y18147D01* +X662177Y22493D01* +X663840Y26507D01* +X666913Y29580D01* +X670927Y31243D01* +X675273Y31243D01* +X679287Y29580D01* +X682360Y26507D01* +X684023Y22493D01* +X684023Y18147D01* +X682360Y14133D01* +X679287Y11060D01* +X675273Y9397D01* +X670927Y9397D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y163075D02* +X315317Y163075D01* +X311302Y164738D01* +X308230Y167811D01* +X306567Y171825D01* +X306567Y176171D01* +X308230Y180185D01* +X311302Y183258D01* +X315317Y184921D01* +X319662Y184921D01* +X323677Y183258D01* +X326749Y180185D01* +X328412Y176171D01* +X328412Y171825D01* +X326749Y167811D01* +X323677Y164738D01* +X319662Y163075D01* +X315317Y163075D01* +G37* +%LPD*% +%LPC*% +G36* +X192636Y219981D02* +X192636Y219981D01* +X188621Y221644D01* +X185549Y224717D01* +X183886Y228731D01* +X183886Y233076D01* +X185549Y237091D01* +X188621Y240164D01* +X192636Y241827D01* +X196981Y241827D01* +X200996Y240164D01* +X204069Y237091D01* +X205731Y233076D01* +X205731Y228731D01* +X204069Y224717D01* +X200996Y221644D01* +X196981Y219981D01* +X192636Y219981D01* +G37* +%LPD*% +%LPC*% +G36* +X177431Y245363D02* +X177431Y245363D01* +X173416Y247025D01* +X170344Y250098D01* +X168681Y254113D01* +X168681Y258458D01* +X170344Y262473D01* +X173416Y265545D01* +X177431Y267208D01* +X181776Y267208D01* +X185791Y265545D01* +X188864Y262473D01* +X190526Y258458D01* +X190526Y254113D01* +X188864Y250098D01* +X185791Y247025D01* +X181776Y245363D01* +X177431Y245363D01* +G37* +%LPD*% +%LPC*% +G36* +X177436Y144281D02* +X177436Y144281D01* +X173421Y145944D01* +X170349Y149017D01* +X168686Y153031D01* +X168686Y157376D01* +X170349Y161391D01* +X173421Y164464D01* +X177436Y166127D01* +X181781Y166127D01* +X185796Y164464D01* +X188869Y161391D01* +X190531Y157376D01* +X190531Y153031D01* +X188869Y149017D01* +X185796Y145944D01* +X181781Y144281D01* +X177436Y144281D01* +G37* +%LPD*% +%LPC*% +G36* +X192631Y118863D02* +X192631Y118863D01* +X188616Y120525D01* +X185544Y123598D01* +X183881Y127613D01* +X183881Y131958D01* +X185544Y135973D01* +X188616Y139045D01* +X192631Y140708D01* +X196976Y140708D01* +X200991Y139045D01* +X204064Y135973D01* +X205726Y131958D01* +X205726Y127613D01* +X204064Y123598D01* +X200991Y120525D01* +X196976Y118863D01* +X192631Y118863D01* +G37* +%LPD*% +%LPC*% +G36* +X289917Y175775D02* +X289917Y175775D01* +X285902Y177438D01* +X282830Y180511D01* +X281167Y184525D01* +X281167Y188871D01* +X282830Y192885D01* +X285902Y195958D01* +X289917Y197621D01* +X294262Y197621D01* +X298277Y195958D01* +X301349Y192885D01* +X303012Y188871D01* +X303012Y184525D01* +X301349Y180511D01* +X298277Y177438D01* +X294262Y175775D01* +X289917Y175775D01* +G37* +%LPD*% +%LPC*% +G36* +X532288Y273811D02* +X532288Y273811D01* +X530234Y274662D01* +X528662Y276234D01* +X527811Y278288D01* +X527811Y280512D01* +X528662Y282566D01* +X530234Y284138D01* +X532288Y284989D01* +X534512Y284989D01* +X536566Y284138D01* +X537958Y282746D01* +X538027Y282694D01* +X538091Y282634D01* +X538141Y282608D01* +X538185Y282575D01* +X538266Y282544D01* +X538344Y282504D01* +X538392Y282496D01* +X538450Y282474D01* +X538598Y282462D01* +X538675Y282449D01* +X558605Y282449D01* +X558691Y282461D01* +X558779Y282464D01* +X558831Y282481D01* +X558886Y282489D01* +X558966Y282524D01* +X559049Y282551D01* +X559088Y282579D01* +X559145Y282605D01* +X559259Y282701D01* +X559322Y282746D01* +X560714Y284138D01* +X562768Y284989D01* +X564992Y284989D01* +X567046Y284138D01* +X568618Y282566D01* +X569469Y280512D01* +X569469Y278288D01* +X568618Y276234D01* +X567046Y274662D01* +X564992Y273811D01* +X562768Y273811D01* +X560714Y274662D01* +X559322Y276054D01* +X559253Y276106D01* +X559189Y276166D01* +X559139Y276192D01* +X559095Y276225D01* +X559013Y276256D01* +X558936Y276296D01* +X558888Y276304D01* +X558830Y276326D01* +X558682Y276338D01* +X558605Y276351D01* +X538675Y276351D01* +X538589Y276339D01* +X538501Y276336D01* +X538449Y276319D01* +X538394Y276311D01* +X538314Y276276D01* +X538231Y276249D01* +X538192Y276221D01* +X538135Y276195D01* +X538021Y276099D01* +X537958Y276054D01* +X536566Y274662D01* +X534512Y273811D01* +X532288Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X131855Y351007D02* +X131855Y351007D01* +X129241Y352090D01* +X127240Y354091D01* +X126157Y356705D01* +X126157Y359535D01* +X127240Y362149D01* +X129241Y364150D01* +X131855Y365233D01* +X144845Y365233D01* +X147459Y364150D01* +X149460Y362149D01* +X150543Y359535D01* +X150543Y356705D01* +X149460Y354091D01* +X147459Y352090D01* +X144845Y351007D01* +X131855Y351007D01* +G37* +%LPD*% +%LPC*% +G36* +X131855Y285007D02* +X131855Y285007D01* +X129241Y286090D01* +X127240Y288091D01* +X126157Y290705D01* +X126157Y293535D01* +X127240Y296149D01* +X129241Y298150D01* +X131855Y299233D01* +X144845Y299233D01* +X147459Y298150D01* +X149460Y296149D01* +X150543Y293535D01* +X150543Y290705D01* +X149460Y288091D01* +X147459Y286090D01* +X144845Y285007D01* +X131855Y285007D01* +G37* +%LPD*% +%LPC*% +G36* +X224903Y352325D02* +X224903Y352325D01* +X222766Y353211D01* +X221131Y354846D01* +X220245Y356983D01* +X220245Y359297D01* +X221131Y361434D01* +X222766Y363069D01* +X224903Y363955D01* +X227217Y363955D01* +X229354Y363069D01* +X230989Y361434D01* +X231875Y359297D01* +X231875Y356983D01* +X230989Y354846D01* +X229354Y353211D01* +X227217Y352325D01* +X224903Y352325D01* +G37* +%LPD*% +%LPC*% +G36* +X369683Y354865D02* +X369683Y354865D01* +X367546Y355751D01* +X365911Y357386D01* +X365025Y359523D01* +X365025Y361837D01* +X365911Y363974D01* +X367546Y365609D01* +X369683Y366495D01* +X371997Y366495D01* +X374134Y365609D01* +X375769Y363974D01* +X376655Y361837D01* +X376655Y359523D01* +X375769Y357386D01* +X374134Y355751D01* +X371997Y354865D01* +X369683Y354865D01* +G37* +%LPD*% +%LPC*% +G36* +X369683Y337085D02* +X369683Y337085D01* +X367546Y337971D01* +X365911Y339606D01* +X365025Y341743D01* +X365025Y344057D01* +X365911Y346194D01* +X367546Y347829D01* +X369683Y348715D01* +X371997Y348715D01* +X374134Y347829D01* +X375769Y346194D01* +X376655Y344057D01* +X376655Y341743D01* +X375769Y339606D01* +X374134Y337971D01* +X371997Y337085D01* +X369683Y337085D01* +G37* +%LPD*% +%LPC*% +G36* +X179183Y360001D02* +X179183Y360001D01* +X177046Y360887D01* +X175411Y362522D01* +X174525Y364659D01* +X174525Y366973D01* +X175411Y369110D01* +X177046Y370745D01* +X179183Y371631D01* +X181497Y371631D01* +X183634Y370745D01* +X185269Y369110D01* +X186155Y366973D01* +X186155Y364659D01* +X185269Y362522D01* +X183634Y360887D01* +X181497Y360001D01* +X179183Y360001D01* +G37* +%LPD*% +%LPC*% +G36* +X656703Y136425D02* +X656703Y136425D01* +X654566Y137311D01* +X652931Y138946D01* +X652045Y141083D01* +X652045Y143397D01* +X652931Y145534D01* +X654566Y147169D01* +X656703Y148055D01* +X659017Y148055D01* +X661154Y147169D01* +X662789Y145534D01* +X663675Y143397D01* +X663675Y141083D01* +X662789Y138946D01* +X661154Y137311D01* +X659017Y136425D01* +X656703Y136425D01* +G37* +%LPD*% +%LPC*% +G36* +X176643Y304065D02* +X176643Y304065D01* +X174506Y304951D01* +X172871Y306586D01* +X171985Y308723D01* +X171985Y311037D01* +X172871Y313174D01* +X174506Y314809D01* +X176643Y315695D01* +X178957Y315695D01* +X181094Y314809D01* +X182729Y313174D01* +X183615Y311037D01* +X183615Y308723D01* +X182729Y306586D01* +X181094Y304951D01* +X178957Y304065D01* +X176643Y304065D01* +G37* +%LPD*% +%LPC*% +G36* +X555148Y174751D02* +X555148Y174751D01* +X553094Y175602D01* +X551522Y177174D01* +X550671Y179228D01* +X550671Y181452D01* +X551522Y183506D01* +X553094Y185078D01* +X555148Y185929D01* +X557372Y185929D01* +X559426Y185078D01* +X560998Y183506D01* +X561849Y181452D01* +X561849Y179228D01* +X560998Y177174D01* +X559426Y175602D01* +X557372Y174751D01* +X555148Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X1126648Y192531D02* +X1126648Y192531D01* +X1124594Y193382D01* +X1123022Y194954D01* +X1122171Y197008D01* +X1122171Y199232D01* +X1123022Y201286D01* +X1124594Y202858D01* +X1126648Y203709D01* +X1128872Y203709D01* +X1130926Y202858D01* +X1132498Y201286D01* +X1133349Y199232D01* +X1133349Y197008D01* +X1132498Y194954D01* +X1130926Y193382D01* +X1128872Y192531D01* +X1126648Y192531D01* +G37* +%LPD*% +%LPC*% +G36* +X1164748Y200151D02* +X1164748Y200151D01* +X1162694Y201002D01* +X1161122Y202574D01* +X1160271Y204628D01* +X1160271Y206852D01* +X1161122Y208906D01* +X1162694Y210478D01* +X1164748Y211329D01* +X1166972Y211329D01* +X1169026Y210478D01* +X1170598Y208906D01* +X1171449Y206852D01* +X1171449Y204628D01* +X1170598Y202574D01* +X1169026Y201002D01* +X1166972Y200151D01* +X1164748Y200151D01* +G37* +%LPD*% +%LPC*% +G36* +X346868Y167131D02* +X346868Y167131D01* +X344814Y167982D01* +X343242Y169554D01* +X342391Y171608D01* +X342391Y173832D01* +X343242Y175886D01* +X344814Y177458D01* +X346868Y178309D01* +X349092Y178309D01* +X351146Y177458D01* +X352718Y175886D01* +X353569Y173832D01* +X353569Y171608D01* +X352718Y169554D01* +X351146Y167982D01* +X349092Y167131D01* +X346868Y167131D01* +G37* +%LPD*% +%LPC*% +G36* +X468788Y162051D02* +X468788Y162051D01* +X466734Y162902D01* +X465162Y164474D01* +X464311Y166528D01* +X464311Y168752D01* +X465162Y170806D01* +X466734Y172378D01* +X468788Y173229D01* +X471012Y173229D01* +X473066Y172378D01* +X474638Y170806D01* +X475489Y168752D01* +X475489Y166528D01* +X474638Y164474D01* +X473066Y162902D01* +X471012Y162051D01* +X468788Y162051D01* +G37* +%LPD*% +%LPC*% +G36* +X463708Y223011D02* +X463708Y223011D01* +X461654Y223862D01* +X460082Y225434D01* +X459231Y227488D01* +X459231Y229712D01* +X460082Y231766D01* +X461654Y233338D01* +X463708Y234189D01* +X465932Y234189D01* +X467986Y233338D01* +X469558Y231766D01* +X470409Y229712D01* +X470409Y227488D01* +X469558Y225434D01* +X467986Y223862D01* +X465932Y223011D01* +X463708Y223011D01* +G37* +%LPD*% +%LPC*% +G36* +X1253648Y146811D02* +X1253648Y146811D01* +X1251594Y147662D01* +X1250022Y149234D01* +X1249171Y151288D01* +X1249171Y153512D01* +X1250022Y155566D01* +X1251594Y157138D01* +X1253648Y157989D01* +X1255872Y157989D01* +X1257926Y157138D01* +X1259498Y155566D01* +X1260349Y153512D01* +X1260349Y151288D01* +X1259498Y149234D01* +X1257926Y147662D01* +X1255872Y146811D01* +X1253648Y146811D01* +G37* +%LPD*% +%LPC*% +G36* +X885348Y144271D02* +X885348Y144271D01* +X883294Y145122D01* +X881722Y146694D01* +X880871Y148748D01* +X880871Y150972D01* +X881722Y153026D01* +X883294Y154598D01* +X885348Y155449D01* +X887572Y155449D01* +X889626Y154598D01* +X891198Y153026D01* +X892049Y150972D01* +X892049Y148748D01* +X891198Y146694D01* +X889626Y145122D01* +X887572Y144271D01* +X885348Y144271D01* +G37* +%LPD*% +%LPC*% +G36* +X341788Y235711D02* +X341788Y235711D01* +X339734Y236562D01* +X338162Y238134D01* +X337311Y240188D01* +X337311Y242412D01* +X338162Y244466D01* +X339734Y246038D01* +X341788Y246889D01* +X344012Y246889D01* +X346066Y246038D01* +X347638Y244466D01* +X348489Y242412D01* +X348489Y240188D01* +X347638Y238134D01* +X346066Y236562D01* +X344012Y235711D01* +X341788Y235711D01* +G37* +%LPD*% +%LPC*% +G36* +X461168Y141731D02* +X461168Y141731D01* +X459114Y142582D01* +X457542Y144154D01* +X456691Y146208D01* +X456691Y148432D01* +X457542Y150486D01* +X459114Y152058D01* +X461168Y152909D01* +X463392Y152909D01* +X465446Y152058D01* +X467018Y150486D01* +X467869Y148432D01* +X467869Y146208D01* +X467018Y144154D01* +X465446Y142582D01* +X463392Y141731D01* +X461168Y141731D01* +G37* +%LPD*% +%LPC*% +G36* +X839628Y248411D02* +X839628Y248411D01* +X837574Y249262D01* +X836002Y250834D01* +X835151Y252888D01* +X835151Y255112D01* +X836002Y257166D01* +X837574Y258738D01* +X839628Y259589D01* +X841852Y259589D01* +X843906Y258738D01* +X845478Y257166D01* +X846329Y255112D01* +X846329Y252888D01* +X845478Y250834D01* +X843906Y249262D01* +X841852Y248411D01* +X839628Y248411D01* +G37* +%LPD*% +%LPC*% +G36* +X616108Y248411D02* +X616108Y248411D01* +X614054Y249262D01* +X612482Y250834D01* +X611631Y252888D01* +X611631Y255112D01* +X612482Y257166D01* +X614054Y258738D01* +X616108Y259589D01* +X618332Y259589D01* +X620386Y258738D01* +X621958Y257166D01* +X622809Y255112D01* +X622809Y252888D01* +X621958Y250834D01* +X620386Y249262D01* +X618332Y248411D01* +X616108Y248411D01* +G37* +%LPD*% +%LPC*% +G36* +X499268Y129031D02* +X499268Y129031D01* +X497214Y129882D01* +X495642Y131454D01* +X494791Y133508D01* +X494791Y135732D01* +X495642Y137786D01* +X497214Y139358D01* +X499268Y140209D01* +X501492Y140209D01* +X503546Y139358D01* +X505118Y137786D01* +X505969Y135732D01* +X505969Y133508D01* +X505118Y131454D01* +X503546Y129882D01* +X501492Y129031D01* +X499268Y129031D01* +G37* +%LPD*% +%LPC*% +G36* +X423068Y253491D02* +X423068Y253491D01* +X421014Y254342D01* +X419442Y255914D01* +X418591Y257968D01* +X418591Y260192D01* +X419442Y262246D01* +X421014Y263818D01* +X423068Y264669D01* +X425292Y264669D01* +X427346Y263818D01* +X428918Y262246D01* +X429769Y260192D01* +X429769Y257968D01* +X428918Y255914D01* +X427346Y254342D01* +X425292Y253491D01* +X423068Y253491D01* +G37* +%LPD*% +%LPC*% +G36* +X1157128Y103631D02* +X1157128Y103631D01* +X1155074Y104482D01* +X1153502Y106054D01* +X1152651Y108108D01* +X1152651Y110332D01* +X1153502Y112386D01* +X1155074Y113958D01* +X1157128Y114809D01* +X1159352Y114809D01* +X1161406Y113958D01* +X1162978Y112386D01* +X1163829Y110332D01* +X1163829Y108108D01* +X1162978Y106054D01* +X1161406Y104482D01* +X1159352Y103631D01* +X1157128Y103631D01* +G37* +%LPD*% +%LPC*% +G36* +X496728Y263651D02* +X496728Y263651D01* +X494674Y264502D01* +X493102Y266074D01* +X492251Y268128D01* +X492251Y270352D01* +X493102Y272406D01* +X494674Y273978D01* +X496728Y274829D01* +X498952Y274829D01* +X501006Y273978D01* +X502578Y272406D01* +X503429Y270352D01* +X503429Y268128D01* +X502578Y266074D01* +X501006Y264502D01* +X498952Y263651D01* +X496728Y263651D01* +G37* +%LPD*% +%LPC*% +G36* +X296068Y281431D02* +X296068Y281431D01* +X294014Y282282D01* +X292442Y283854D01* +X291591Y285908D01* +X291591Y288132D01* +X292442Y290186D01* +X294014Y291758D01* +X296068Y292609D01* +X298292Y292609D01* +X300346Y291758D01* +X301918Y290186D01* +X302769Y288132D01* +X302769Y285908D01* +X301918Y283854D01* +X300346Y282282D01* +X298292Y281431D01* +X296068Y281431D01* +G37* +%LPD*% +%LPC*% +G36* +X351948Y96011D02* +X351948Y96011D01* +X349894Y96862D01* +X348322Y98434D01* +X347471Y100488D01* +X347471Y102712D01* +X348322Y104766D01* +X349894Y106338D01* +X351948Y107189D01* +X354172Y107189D01* +X356226Y106338D01* +X357798Y104766D01* +X358649Y102712D01* +X358649Y100488D01* +X357798Y98434D01* +X356226Y96862D01* +X354172Y96011D01* +X351948Y96011D01* +G37* +%LPD*% +%LPC*% +G36* +X1195228Y84891D02* +X1195228Y84891D01* +X1193174Y85742D01* +X1191602Y87314D01* +X1190751Y89368D01* +X1190751Y91592D01* +X1191602Y93646D01* +X1193174Y95218D01* +X1195228Y96069D01* +X1197452Y96069D01* +X1199506Y95218D01* +X1201078Y93646D01* +X1201929Y91592D01* +X1201929Y89368D01* +X1201078Y87314D01* +X1199506Y85742D01* +X1197452Y84891D01* +X1195228Y84891D01* +G37* +%LPD*% +%LPC*% +G36* +X138588Y80771D02* +X138588Y80771D01* +X136534Y81622D01* +X134962Y83194D01* +X134111Y85248D01* +X134111Y87472D01* +X134962Y89526D01* +X136534Y91098D01* +X138588Y91949D01* +X140812Y91949D01* +X142866Y91098D01* +X144438Y89526D01* +X145289Y87472D01* +X145289Y85248D01* +X144438Y83194D01* +X142866Y81622D01* +X140812Y80771D01* +X138588Y80771D01* +G37* +%LPD*% +%LPC*% +G36* +X275748Y281431D02* +X275748Y281431D01* +X273694Y282282D01* +X272122Y283854D01* +X271271Y285908D01* +X271271Y288132D01* +X272122Y290186D01* +X273694Y291758D01* +X275748Y292609D01* +X277972Y292609D01* +X280026Y291758D01* +X281598Y290186D01* +X282449Y288132D01* +X282449Y285908D01* +X281598Y283854D01* +X280026Y282282D01* +X277972Y281431D01* +X275748Y281431D01* +G37* +%LPD*% +%LPC*% +G36* +X506888Y73151D02* +X506888Y73151D01* +X504834Y74002D01* +X503262Y75574D01* +X502411Y77628D01* +X502411Y79852D01* +X503262Y81906D01* +X504834Y83478D01* +X506888Y84329D01* +X509112Y84329D01* +X511166Y83478D01* +X512738Y81906D01* +X513589Y79852D01* +X513589Y77628D01* +X512738Y75574D01* +X511166Y74002D01* +X509112Y73151D01* +X506888Y73151D01* +G37* +%LPD*% +%LPC*% +G36* +X1050448Y70611D02* +X1050448Y70611D01* +X1048394Y71462D01* +X1046822Y73034D01* +X1045971Y75088D01* +X1045971Y77312D01* +X1046822Y79366D01* +X1048394Y80938D01* +X1050448Y81789D01* +X1052672Y81789D01* +X1054726Y80938D01* +X1056298Y79366D01* +X1057149Y77312D01* +X1057149Y75088D01* +X1056298Y73034D01* +X1054726Y71462D01* +X1052672Y70611D01* +X1050448Y70611D01* +G37* +%LPD*% +%LPC*% +G36* +X859948Y283971D02* +X859948Y283971D01* +X857894Y284822D01* +X856322Y286394D01* +X855471Y288448D01* +X855471Y290672D01* +X856322Y292726D01* +X857894Y294298D01* +X859948Y295149D01* +X862172Y295149D01* +X864226Y294298D01* +X865798Y292726D01* +X866649Y290672D01* +X866649Y288448D01* +X865798Y286394D01* +X864226Y284822D01* +X862172Y283971D01* +X859948Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X918368Y9651D02* +X918368Y9651D01* +X916314Y10502D01* +X914742Y12074D01* +X913891Y14128D01* +X913891Y16352D01* +X914742Y18406D01* +X916314Y19978D01* +X918368Y20829D01* +X920592Y20829D01* +X922646Y19978D01* +X924218Y18406D01* +X925069Y16352D01* +X925069Y14128D01* +X924218Y12074D01* +X922646Y10502D01* +X920592Y9651D01* +X918368Y9651D01* +G37* +%LPD*% +%LPC*% +G36* +X826928Y9651D02* +X826928Y9651D01* +X824874Y10502D01* +X823302Y12074D01* +X822451Y14128D01* +X822451Y16352D01* +X823302Y18406D01* +X824874Y19978D01* +X826928Y20829D01* +X829152Y20829D01* +X831206Y19978D01* +X832778Y18406D01* +X833629Y16352D01* +X833629Y14128D01* +X832778Y12074D01* +X831206Y10502D01* +X829152Y9651D01* +X826928Y9651D01* +G37* +%LPD*% +%LPC*% +G36* +X237648Y286703D02* +X237648Y286703D01* +X235594Y287554D01* +X234022Y289126D01* +X233171Y291180D01* +X233171Y293404D01* +X234022Y295458D01* +X235594Y297030D01* +X237648Y297881D01* +X239872Y297881D01* +X241926Y297030D01* +X243498Y295458D01* +X244349Y293404D01* +X244349Y291180D01* +X243498Y289126D01* +X241926Y287554D01* +X239872Y286703D01* +X237648Y286703D01* +G37* +%LPD*% +%LPC*% +G36* +X862488Y52831D02* +X862488Y52831D01* +X860434Y53682D01* +X858862Y55254D01* +X858011Y57308D01* +X858011Y59532D01* +X858862Y61586D01* +X860434Y63158D01* +X862488Y64009D01* +X864712Y64009D01* +X866766Y63158D01* +X868338Y61586D01* +X869189Y59532D01* +X869189Y57308D01* +X868338Y55254D01* +X866766Y53682D01* +X864712Y52831D01* +X862488Y52831D01* +G37* +%LPD*% +%LPC*% +G36* +X788828Y51561D02* +X788828Y51561D01* +X786774Y52412D01* +X785202Y53984D01* +X784351Y56038D01* +X784351Y58262D01* +X785202Y60316D01* +X786774Y61888D01* +X788828Y62739D01* +X791052Y62739D01* +X793106Y61888D01* +X794678Y60316D01* +X795529Y58262D01* +X795529Y56038D01* +X794678Y53984D01* +X793106Y52412D01* +X791052Y51561D01* +X788828Y51561D01* +G37* +%LPD*% +%LPC*% +G36* +X992028Y289051D02* +X992028Y289051D01* +X989974Y289902D01* +X988402Y291474D01* +X987551Y293528D01* +X987551Y295752D01* +X988402Y297806D01* +X989974Y299378D01* +X992028Y300229D01* +X994252Y300229D01* +X996306Y299378D01* +X997878Y297806D01* +X998729Y295752D01* +X998729Y293528D01* +X997878Y291474D01* +X996306Y289902D01* +X994252Y289051D01* +X992028Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X951388Y291591D02* +X951388Y291591D01* +X949334Y292442D01* +X947762Y294014D01* +X946911Y296068D01* +X946911Y298292D01* +X947762Y300346D01* +X949334Y301918D01* +X951388Y302769D01* +X953612Y302769D01* +X955666Y301918D01* +X957238Y300346D01* +X958089Y298292D01* +X958089Y296068D01* +X957238Y294014D01* +X955666Y292442D01* +X953612Y291591D01* +X951388Y291591D01* +G37* +%LPD*% +%LPC*% +G36* +X275748Y306831D02* +X275748Y306831D01* +X273694Y307682D01* +X272122Y309254D01* +X271271Y311308D01* +X271271Y313532D01* +X272122Y315586D01* +X273694Y317158D01* +X275748Y318009D01* +X277972Y318009D01* +X280026Y317158D01* +X281598Y315586D01* +X282449Y313532D01* +X282449Y311308D01* +X281598Y309254D01* +X280026Y307682D01* +X277972Y306831D01* +X275748Y306831D01* +G37* +%LPD*% +%LPC*% +G36* +X265588Y12191D02* +X265588Y12191D01* +X263534Y13042D01* +X261962Y14614D01* +X261111Y16668D01* +X261111Y18892D01* +X261962Y20946D01* +X263534Y22518D01* +X265588Y23369D01* +X267812Y23369D01* +X269866Y22518D01* +X271438Y20946D01* +X272289Y18892D01* +X272289Y16668D01* +X271438Y14614D01* +X269866Y13042D01* +X267812Y12191D01* +X265588Y12191D01* +G37* +%LPD*% +%LPC*% +G36* +X357028Y306831D02* +X357028Y306831D01* +X354974Y307682D01* +X353402Y309254D01* +X352551Y311308D01* +X352551Y313532D01* +X353402Y315586D01* +X354974Y317158D01* +X357028Y318009D01* +X359252Y318009D01* +X361306Y317158D01* +X362878Y315586D01* +X363729Y313532D01* +X363729Y311308D01* +X362878Y309254D01* +X361306Y307682D01* +X359252Y306831D01* +X357028Y306831D01* +G37* +%LPD*% +%LPC*% +G36* +X751331Y67309D02* +X751331Y67309D01* +X751331Y76709D01* +X760731Y76709D01* +X760731Y69516D01* +X760558Y68869D01* +X760223Y68290D01* +X759750Y67817D01* +X759171Y67482D01* +X758524Y67309D01* +X751331Y67309D01* +G37* +%LPD*% +%LPC*% +G36* +X740076Y67309D02* +X740076Y67309D01* +X739429Y67482D01* +X738850Y67817D01* +X738377Y68290D01* +X738042Y68869D01* +X737869Y69516D01* +X737869Y76709D01* +X747269Y76709D01* +X747269Y67309D01* +X740076Y67309D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y22351D02* +X700531Y22351D01* +X700531Y31572D01* +X701177Y31469D01* +X702888Y30913D01* +X704491Y30096D01* +X705947Y29039D01* +X707219Y27767D01* +X708276Y26311D01* +X709093Y24708D01* +X709649Y22997D01* +X709752Y22351D01* +X700531Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X687248Y22351D02* +X687248Y22351D01* +X687351Y22997D01* +X687907Y24708D01* +X688724Y26311D01* +X689781Y27767D01* +X691053Y29039D01* +X692509Y30096D01* +X694112Y30913D01* +X695823Y31469D01* +X696469Y31572D01* +X696469Y22351D01* +X687248Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X700531Y18289D02* +X700531Y18289D01* +X709752Y18289D01* +X709649Y17643D01* +X709093Y15932D01* +X708276Y14329D01* +X707219Y12873D01* +X705947Y11601D01* +X704491Y10544D01* +X702888Y9727D01* +X701177Y9171D01* +X700531Y9068D01* +X700531Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X695823Y9171D02* +X695823Y9171D01* +X694112Y9727D01* +X692509Y10544D01* +X691053Y11601D01* +X689781Y12873D01* +X688724Y14329D01* +X687907Y15932D01* +X687351Y17643D01* +X687248Y18289D01* +X696469Y18289D01* +X696469Y9068D01* +X695823Y9171D01* +G37* +%LPD*% +%LPC*% +G36* +X698499Y20319D02* +X698499Y20319D01* +X698499Y20321D01* +X698501Y20321D01* +X698501Y20319D01* +X698499Y20319D01* +G37* +%LPD*% +D10* +X133270Y358120D02* +X143430Y358120D01* +X143430Y292120D02* +X133270Y292120D01* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D12* +X292090Y237498D03* +D13* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D14* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D15* +X800100Y20320D03* +D11* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D15* +X749300Y78740D03* +D11* +X723900Y78740D03* +D16* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +D17* +X180340Y365816D03* +D16* +X563880Y76200D03* +X464820Y228600D03* +X424180Y259080D03* +X462280Y147320D03* +X469900Y167640D03* +X500380Y134620D03* +X556260Y180340D03* +X1206500Y304800D03* +X1051560Y76200D03* +X863600Y58420D03* +X886460Y149860D03* +X939800Y246380D03* +X1010920Y139700D03* +X1079500Y111760D03* +X1127760Y198120D03* +D17* +X657860Y142240D03* +D16* +X861060Y289560D03* +X952500Y297180D03* +X952500Y281940D03* +X960120Y246380D03* +X1071880Y302260D03* +D17* +X177800Y309880D03* +D16* +X347980Y172720D03* +X497840Y269240D03* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +X993140Y294640D03* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +D17* +X370840Y342900D03* +X370840Y360680D03* +X226060Y358140D03* +D16* +X238760Y292292D03* +X276860Y312420D03* +X556260Y83820D03* +X731520Y281940D03* +X840740Y254000D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X617220Y254000D03* +X1165860Y205740D03* +X1125220Y281940D03* +X1254760Y152400D03* +X1158240Y109220D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1178560Y167640D03* +X1074420Y208280D03* +X1196340Y90480D03* +X868680Y83820D03* +X787400Y78740D03* +X789940Y57150D03* +X812800Y76200D03* +X508000Y78740D03* +X538480Y17780D03* +X485140Y17780D03* +X985520Y246380D03* +X1026160Y246380D03* +X1031240Y190500D03* +X1193800Y279400D03* +D18* +X1193800Y274320D01* +X1153160Y233680D01* +D16* +X518160Y239494D03* +D18* +X573532Y233680D02* +X1153160Y233680D01* +X573532Y233680D02* +X562638Y244574D01* +X523240Y244574D01* +X518160Y239494D01* +D16* +X1206500Y203200D03* +X563880Y211610D03* +D18* +X564162Y211610D02* +X569976Y217424D01* +X564162Y211610D02* +X563880Y211610D01* +X1187196Y217424D02* +X1201420Y203200D01* +X1206500Y203200D01* +X1187196Y217424D02* +X569976Y217424D01* +D16* +X502800Y162909D03* +X1023620Y175260D03* +D18* +X1023620Y190500D01* +X1012952Y201168D01* +X603504Y201168D01* +X565245Y162909D02* +X502800Y162909D01* +X565245Y162909D02* +X603504Y201168D01* +D16* +X1206500Y241300D03* +D18* +X1190752Y225552D01* +D16* +X499816Y231140D03* +D18* +X569468Y225552D02* +X1190752Y225552D01* +X569468Y225552D02* +X558800Y236220D01* +X532892Y236220D01* +X520192Y223520D01* +X507436Y223520D01* +X499816Y231140D01* +D16* +X1206500Y218440D03* +X490188Y231172D03* +D18* +X502412Y218440D02* +X522224Y218440D01* +X502412Y218440D02* +X490188Y230664D01* +X490188Y231172D01* +X522224Y218440D02* +X534162Y230378D01* +X558546Y230378D01* +X567436Y221488D01* +X1188879Y221488D02* +X1191927Y218440D01* +X1188879Y221488D02* +X567436Y221488D01* +X1191927Y218440D02* +X1206500Y218440D01* +D16* +X1206500Y279400D03* +D18* +X1156716Y229616D01* +D16* +X482600Y238760D03* +D18* +X501904Y238760D02* +X513080Y227584D01* +X501904Y238760D02* +X482600Y238760D01* +X571500Y229616D02* +X1156716Y229616D01* +X571500Y229616D02* +X560832Y240284D01* +X530860Y240284D01* +X518160Y227584D01* +X513080Y227584D01* +D16* +X1074420Y190500D03* +X566332Y202014D03* +D18* +X576580Y213360D02* +X1038860Y213360D01* +X1061720Y190500D02* +X1074420Y190500D01* +X1061720Y190500D02* +X1038860Y213360D01* +X576580Y213360D02* +X566332Y203112D01* +X566332Y202014D01* +D16* +X1074420Y177800D03* +D18* +X1068324Y177800D01* +X1036828Y209296D01* +X587756Y209296D01* +X581660Y203200D01* +D16* +X581660Y203200D03* +X1082040Y167640D03* +D18* +X1072388Y167640D01* +X1034796Y205232D01* +D16* +X553720Y203200D03* +D18* +X596392Y205232D02* +X1034796Y205232D01* +X596392Y205232D02* +X586232Y195072D01* +X561848Y195072D01* +X553720Y203200D01* +D16* +X1165860Y276860D03* +D17* +X419100Y350596D03* +D18* +X1153160Y276860D02* +X1165860Y276860D01* +X1153160Y276860D02* +X1149830Y273530D01* +X595226Y273530D01* +X508000Y360756D01* +X429260Y360756D01* +X419100Y350596D01* +D16* +X1158240Y269240D03* +D18* +X591820Y269240D01* +X508000Y353060D01* +X431800Y353060D01* +D17* +X431800Y353060D03* +D16* +X1222148Y121920D03* +D18* +X1222148Y139292D01* +X1186180Y175260D01* +X1148080Y175260D01* +D16* +X903220Y168660D03* +D18* +X943860Y168660D01* +X961870Y150650D02* +X1123470Y150650D01* +X961870Y150650D02* +X943860Y168660D01* +X1123470Y150650D02* +X1148080Y175260D01* +D17* +X198244Y333022D03* +D19* +X190624Y333022D01* +X182722Y325120D01* +X177800Y325120D01* +X176511Y323831D01* +D17* +X176511Y323831D03* +D16* +X993140Y175260D03* +D18* +X985520Y182880D01* +D16* +X759460Y160020D03* +D18* +X784860Y160020D02* +X807720Y182880D01* +X784860Y160020D02* +X759460Y160020D01* +X807720Y182880D02* +X985520Y182880D01* +D16* +X972820Y165100D03* +D18* +X962660Y175260D01* +X955040Y175260D01* +D16* +X955040Y175260D03* +D18* +X723900Y33020D02* +X723900Y20320D01* +X723900Y33020D02* +X734060Y43180D01* +X853440Y43180D01* +X861060Y35560D01* +X874822Y35560D02* +X875945Y34436D01* +X874822Y35560D02* +X861060Y35560D01* +D17* +X875945Y34436D03* +D16* +X1003300Y187960D03* +X713740Y170180D03* +D18* +X716280Y167640D01* +X784860Y167640D01* +X805180Y187960D01* +X1003300Y187960D01* +D16* +X1186180Y104140D03* +D18* +X1185360Y104140D01* +X1173676Y92456D01* +X1070864Y92456D01* +X1038860Y124460D01* +X904744Y124460D01* +D16* +X904744Y124460D03* +X1150620Y167640D03* +X957580Y139700D03* +D18* +X1150119Y167640D02* +X1150620Y167640D01* +X1150119Y167640D02* +X1115349Y132870D01* +X964410Y132870D02* +X957580Y139700D01* +X964410Y132870D02* +X1115349Y132870D01* +X768016Y39036D02* +X749300Y20320D01* +X768016Y39036D02* +X849964Y39036D01* +X861060Y27940D01* +X867890Y27940D01* +D17* +X867890Y27940D03* +D16* +X1084940Y252250D03* +D18* +X1083190Y254000D01* +X889667Y254000D01* +X882047Y246380D01* +D16* +X871894Y246380D03* +D18* +X882047Y246380D01* +D20* +X463550Y58420D02* +X463550Y24130D01* +D18* +X635000Y7620D02* +X647700Y20320D01* +X480060Y7620D02* +X463550Y24130D01* +X480060Y7620D02* +X635000Y7620D01* +D16* +X443114Y186806D03* +D21* +X393468Y137160D01* +X328928Y137160D01* +X317490Y148598D01* +D16* +X449580Y180340D03* +D21* +X449072Y179832D01* +X442722Y179832D01* +X395732Y132842D01* +X292090Y156464D02* +X292090Y161298D01* +X292090Y156464D02* +X315711Y132842D01* +X395732Y132842D01* +D16* +X449580Y205740D03* +D21* +X449072Y206248D01* +X442722Y206248D01* +X431292Y217678D01* +X324610Y217678D02* +X317490Y224798D01* +X324610Y217678D02* +X431292Y217678D01* +D16* +X443114Y199274D03* +D21* +X429028Y213360D01* +X322580Y213360D01* +X292090Y233135D02* +X292090Y237498D01* +X292090Y233135D02* +X312492Y212733D01* +X321953Y212733D01* +X322580Y213360D01* +D16* +X1206500Y180340D03* +X1023620Y165100D03* +D18* +X1034006Y154714D02* +X1121636Y154714D01* +X1147262Y180340D02* +X1206500Y180340D01* +X1147262Y180340D02* +X1121636Y154714D01* +X1034006Y154714D02* +X1023620Y165100D01* +D16* +X406400Y317500D03* +X866140Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +X1221740Y99060D03* +X881380Y261620D03* +D18* +X883920Y264160D01* +X1150620Y264160D01* +X1153160Y261620D01* +X1170273Y261620D01* +X1178560Y269907D01* +X1178560Y289560D01* +D16* +X1178560Y289560D03* +X1005840Y294640D03* +D18* +X1173480Y294640D02* +X1178560Y289560D01* +X1173480Y294640D02* +X1005840Y294640D01* +X541020Y206611D02* +X541020Y170180D01* +X541020Y206611D02* +X548205Y213795D01* +X548205Y221415D01* +X543560Y134620D02* +X513080Y134620D01* +X492760Y154940D01* +X492760Y165100D01* +X497840Y170180D01* +X541020Y170180D01* +X563854Y154914D02* +X668020Y154914D01* +X563854Y154914D02* +X543560Y134620D01* +X467360Y256540D02* +X406400Y317500D01* +X467360Y256540D02* +X469900Y256540D01* +X469900Y238760D01* +X495300Y213360D01* +X532529Y213360D01* +X540585Y221415D01* +X548205Y221415D01* +X1221740Y99060D02* +X1229360Y99060D01* +X1247140Y116840D01* +X1229360Y202184D02* +X1229360Y279400D01* +X1219489Y289271D01* +X1178849Y289271D02* +X1178560Y289560D01* +X1178849Y289271D02* +X1219489Y289271D01* +X1221740Y99060D02* +X1211580Y99060D01* +X1181834Y128806D01* +X910054Y128806D02* +X906780Y132080D01* +X886460Y132080D02* +X866140Y152400D01* +X848360Y152400D01* +X910054Y128806D02* +X1181834Y128806D01* +D16* +X754380Y127000D03* +D18* +X695934Y127000D01* +X668020Y154914D01* +X754380Y127000D02* +X822960Y127000D01* +X848360Y152400D01* +X866140Y48260D02* +X769620Y48260D01* +X749300Y68580D02* +X749300Y78740D01* +X749300Y68580D02* +X769620Y48260D01* +D17* +X386080Y345440D03* +D18* +X406400Y325120D01* +X406400Y317500D01* +D17* +X226060Y347980D03* +D18* +X366261Y347980D01* +X368011Y349730D01* +X381790Y349730D01* +X386080Y345440D01* +D16* +X1247140Y116840D03* +D18* +X1247140Y184404D01* +X1229360Y202184D01* +D17* +X861060Y76200D03* +D18* +X863600Y76200D01* +X872744Y67056D02* +X872744Y54864D01* +X866140Y48260D01* +X872744Y67056D02* +X863600Y76200D01* +X698500Y27940D02* +X698500Y20320D01* +X698500Y27940D02* +X749300Y78740D01* +D16* +X805180Y57150D03* +X798915Y77385D03* +D18* +X805180Y71120D01* +X805180Y57150D01* +D16* +X417137Y332740D03* +D18* +X417137Y327083D02* +X451955Y292265D01* +X417137Y327083D02* +X417137Y332740D01* +X451955Y292265D02* +X451955Y291935D01* +D16* +X451955Y291935D03* +D17* +X190500Y342900D03* +D22* +X174122Y342900D01* +X160020Y328798D01* +X182880Y88515D02* +X272165Y88515D01* +X182880Y88515D02* +X160020Y111375D01* +X160020Y328798D01* +X305185Y121535D02* +X490605Y121535D01* +X305185Y121535D02* +X272165Y88515D01* +X490605Y121535D02* +X490605Y121876D01* +D23* +X490605Y121876D03* +D16* +X563880Y279400D03* +D18* +X533400Y279400D01* +D16* +X533400Y279400D03* +D17* +X528320Y81280D03* +D24* +X959358Y102362D02* +X971550Y90170D01* +X412242Y102362D02* +X400050Y90170D01* +X528320Y102362D02* +X959358Y102362D01* +X528320Y102362D02* +X412242Y102362D01* +D25* +X528320Y102362D02* +X528320Y81280D01* +D16* +X1094490Y254250D03* +D18* +X1094490Y254918D01* +X1089311Y260096D01* +X889196Y260096D02* +X884116Y255016D01* +X877824Y255016D01* +X871220Y261620D01* +D16* +X871220Y261620D03* +D18* +X889196Y260096D02* +X1089311Y260096D01* +D16* +X988060Y160020D03* +D18* +X985019Y160020D01* +X980729Y155730D01* +X962537Y155730D01* +X941257Y177010D01* +X809470Y177010D01* +X784860Y152400D01* +D16* +X705399Y154219D03* +D18* +X705399Y153121D01* +X706120Y152400D01* +X784860Y152400D01* +D16* +X1076960Y99060D03* +D18* +X1074420Y99060D01* +X1056640Y116840D01* +D16* +X1056640Y116840D03* +X1092560Y244630D03* +D18* +X1087480Y239550D02* +X575790Y239550D01* +X1087480Y239550D02* +X1092560Y244630D01* +D16* +X548640Y259080D03* +D18* +X556260Y259080D01* +X575790Y239550D01* +X789352Y34972D02* +X774700Y20320D01* +X789352Y34972D02* +X845820Y34972D01* +X861262Y19530D02* +X861850Y19530D01* +X861262Y19530D02* +X845820Y34972D01* +D17* +X861850Y19530D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_inner_l2.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_inner_l2.gbr new file mode 100644 index 0000000000..8ab71a92bb --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_inner_l2.gbr @@ -0,0 +1,4436 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INCopper Layer 1*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.812800*% +%ADD11C,1.204800*% +%ADD12C,1.920000*% +%ADD13C,1.981200*% +%ADD14C,1.320800*% +%ADD15C,0.711200*% +%ADD16C,0.756400*% +%ADD17C,0.956400*% + +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X969175Y78231D02* +X969175Y78231D01* +X964787Y80049D01* +X961429Y83407D01* +X959611Y87795D01* +X959611Y92545D01* +X961429Y96933D01* +X964787Y100291D01* +X969175Y102109D01* +X973925Y102109D01* +X978313Y100291D01* +X981671Y96933D01* +X983489Y92545D01* +X983489Y87795D01* +X981671Y83407D01* +X978313Y80049D01* +X973925Y78231D01* +X969175Y78231D01* +G37* +%LPD*% +%LPC*% +G36* +X461175Y46481D02* +X461175Y46481D01* +X456787Y48299D01* +X453429Y51657D01* +X451611Y56045D01* +X451611Y60795D01* +X453429Y65183D01* +X456787Y68541D01* +X461175Y70359D01* +X465925Y70359D01* +X470313Y68541D01* +X473671Y65183D01* +X475489Y60795D01* +X475489Y56045D01* +X473671Y51657D01* +X470313Y48299D01* +X465925Y46481D01* +X461175Y46481D01* +G37* +%LPD*% +%LPC*% +G36* +X397675Y78231D02* +X397675Y78231D01* +X393287Y80049D01* +X389929Y83407D01* +X388111Y87795D01* +X388111Y92545D01* +X389929Y96933D01* +X393287Y100291D01* +X397675Y102109D01* +X402425Y102109D01* +X406813Y100291D01* +X410171Y96933D01* +X411989Y92545D01* +X411989Y87795D01* +X410171Y83407D01* +X406813Y80049D01* +X402425Y78231D01* +X397675Y78231D01* +G37* +%LPD*% +%LPC*% +G36* +X905675Y46481D02* +X905675Y46481D01* +X901287Y48299D01* +X897929Y51657D01* +X896111Y56045D01* +X896111Y60795D01* +X897929Y65183D01* +X901287Y68541D01* +X905675Y70359D01* +X910425Y70359D01* +X914813Y68541D01* +X918171Y65183D01* +X919989Y60795D01* +X919989Y56045D01* +X918171Y51657D01* +X914813Y48299D01* +X910425Y46481D01* +X905675Y46481D01* +G37* +%LPD*% +%LPC*% +G36* +X448468Y174751D02* +X448468Y174751D01* +X446414Y175602D01* +X444842Y177174D01* +X443991Y179228D01* +X443991Y180202D01* +X443983Y180260D01* +X443985Y180318D01* +X443963Y180400D01* +X443951Y180483D01* +X443928Y180537D01* +X443913Y180593D01* +X443870Y180666D01* +X443835Y180743D01* +X443797Y180787D01* +X443768Y180838D01* +X443706Y180895D01* +X443652Y180960D01* +X443603Y180992D01* +X443560Y181032D01* +X443485Y181071D01* +X443415Y181117D01* +X443359Y181135D01* +X443307Y181162D01* +X443239Y181173D01* +X443144Y181203D01* +X443044Y181206D01* +X442976Y181217D01* +X442003Y181217D01* +X439948Y182068D01* +X438376Y183640D01* +X437525Y185694D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y200386D01* +X438376Y202440D01* +X439948Y204012D01* +X442003Y204863D01* +X442976Y204863D01* +X443034Y204871D01* +X443092Y204870D01* +X443174Y204891D01* +X443258Y204903D01* +X443311Y204927D01* +X443367Y204941D01* +X443440Y204984D01* +X443517Y205019D01* +X443562Y205057D01* +X443612Y205087D01* +X443670Y205148D01* +X443734Y205203D01* +X443766Y205251D01* +X443806Y205294D01* +X443845Y205369D01* +X443892Y205439D01* +X443909Y205495D01* +X443936Y205547D01* +X443947Y205615D01* +X443977Y205710D01* +X443980Y205810D01* +X443991Y205878D01* +X443991Y206852D01* +X444842Y208906D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X860693Y13715D02* +X860693Y13715D01* +X858556Y14601D01* +X856921Y16236D01* +X856035Y18373D01* +X856035Y20687D01* +X856921Y22824D01* +X858556Y24459D01* +X860693Y25345D01* +X861152Y25345D01* +X861265Y25361D01* +X861380Y25371D01* +X861406Y25381D01* +X861433Y25385D01* +X861538Y25431D01* +X861645Y25473D01* +X861667Y25489D01* +X861693Y25501D01* +X861780Y25575D01* +X861872Y25644D01* +X861889Y25667D01* +X861910Y25684D01* +X861973Y25780D01* +X862042Y25872D01* +X862052Y25898D01* +X862067Y25921D01* +X862102Y26031D01* +X862142Y26138D01* +X862145Y26166D01* +X862153Y26192D01* +X862156Y26307D01* +X862165Y26421D01* +X862160Y26446D01* +X862160Y26476D01* +X862093Y26733D01* +X862090Y26749D01* +X862075Y26783D01* +X862075Y29097D01* +X862961Y31234D01* +X864596Y32869D01* +X866733Y33755D01* +X869115Y33755D01* +X869173Y33763D01* +X869232Y33761D01* +X869313Y33783D01* +X869397Y33795D01* +X869450Y33818D01* +X869507Y33833D01* +X869579Y33876D01* +X869656Y33911D01* +X869701Y33949D01* +X869751Y33978D01* +X869809Y34040D01* +X869873Y34094D01* +X869906Y34143D01* +X869946Y34186D01* +X869984Y34261D01* +X870031Y34331D01* +X870049Y34387D01* +X870075Y34439D01* +X870087Y34507D01* +X870117Y34602D01* +X870119Y34702D01* +X870131Y34770D01* +X870131Y35593D01* +X871016Y37730D01* +X872652Y39366D01* +X874789Y40251D01* +X877102Y40251D01* +X879239Y39366D01* +X880875Y37730D01* +X881760Y35593D01* +X881760Y33280D01* +X880875Y31142D01* +X879239Y29507D01* +X877102Y28622D01* +X874720Y28622D01* +X874662Y28613D01* +X874604Y28615D01* +X874522Y28594D01* +X874438Y28582D01* +X874385Y28558D01* +X874329Y28543D01* +X874256Y28500D01* +X874179Y28465D01* +X874134Y28428D01* +X874084Y28398D01* +X874026Y28336D01* +X873962Y28282D01* +X873930Y28233D01* +X873890Y28191D01* +X873851Y28115D01* +X873804Y28045D01* +X873787Y27989D01* +X873760Y27937D01* +X873749Y27869D01* +X873719Y27774D01* +X873716Y27674D01* +X873705Y27606D01* +X873705Y26783D01* +X872819Y24646D01* +X871184Y23011D01* +X869047Y22125D01* +X868588Y22125D01* +X868475Y22109D01* +X868360Y22099D01* +X868334Y22089D01* +X868307Y22085D01* +X868202Y22039D01* +X868095Y21997D01* +X868073Y21981D01* +X868047Y21969D01* +X867960Y21895D01* +X867868Y21826D01* +X867851Y21803D01* +X867830Y21786D01* +X867767Y21690D01* +X867698Y21598D01* +X867688Y21572D01* +X867673Y21549D01* +X867638Y21439D01* +X867598Y21332D01* +X867595Y21304D01* +X867587Y21278D01* +X867584Y21163D01* +X867575Y21049D01* +X867580Y21024D01* +X867580Y20994D01* +X867647Y20737D01* +X867650Y20721D01* +X867665Y20687D01* +X867665Y18373D01* +X866779Y16236D01* +X865144Y14601D01* +X863007Y13715D01* +X860693Y13715D01* +G37* +%LPD*% +%LPC*% +G36* +X565220Y196425D02* +X565220Y196425D01* +X563166Y197276D01* +X561594Y198848D01* +X560718Y200962D01* +X560703Y200987D01* +X560694Y201015D01* +X560631Y201110D01* +X560574Y201207D01* +X560552Y201227D01* +X560536Y201252D01* +X560449Y201325D01* +X560367Y201402D01* +X560341Y201416D01* +X560318Y201435D01* +X560215Y201481D01* +X560114Y201532D01* +X560086Y201538D01* +X560059Y201550D01* +X559946Y201566D01* +X559835Y201587D01* +X559806Y201585D01* +X559777Y201589D01* +X559665Y201573D01* +X559552Y201563D01* +X559525Y201552D01* +X559496Y201548D01* +X559393Y201502D01* +X559287Y201461D01* +X559263Y201443D01* +X559237Y201431D01* +X559151Y201358D01* +X559060Y201289D01* +X559043Y201266D01* +X559020Y201247D01* +X558979Y201180D01* +X558890Y201062D01* +X558868Y201003D01* +X558842Y200962D01* +X558458Y200034D01* +X556886Y198462D01* +X554832Y197611D01* +X552608Y197611D01* +X550554Y198462D01* +X548982Y200034D01* +X548131Y202088D01* +X548131Y204312D01* +X548982Y206366D01* +X550554Y207938D01* +X552608Y208789D01* +X554832Y208789D01* +X556886Y207938D01* +X557487Y207337D01* +X557555Y207286D01* +X557618Y207226D01* +X557668Y207200D01* +X557714Y207166D01* +X557794Y207136D01* +X557870Y207096D01* +X557926Y207085D01* +X557979Y207065D01* +X558065Y207058D01* +X558149Y207041D01* +X558206Y207046D01* +X558263Y207041D01* +X558347Y207058D01* +X558433Y207066D01* +X558486Y207086D01* +X558541Y207097D01* +X558618Y207137D01* +X558698Y207168D01* +X558743Y207202D01* +X558794Y207228D01* +X558856Y207287D01* +X558925Y207339D01* +X558959Y207385D01* +X559000Y207424D01* +X559043Y207498D01* +X559095Y207567D01* +X559115Y207620D01* +X559144Y207669D01* +X559165Y207753D01* +X559195Y207833D01* +X559200Y207890D01* +X559214Y207945D01* +X559211Y208031D01* +X559218Y208116D01* +X559207Y208165D01* +X559205Y208229D01* +X559160Y208367D01* +X559142Y208443D01* +X558291Y210498D01* +X558291Y212722D01* +X559142Y214776D01* +X560714Y216348D01* +X562768Y217199D01* +X564992Y217199D01* +X567046Y216348D01* +X568618Y214776D01* +X569469Y212722D01* +X569469Y210498D01* +X568541Y208258D01* +X568532Y208223D01* +X568495Y208140D01* +X568491Y208114D01* +X568482Y208089D01* +X568474Y207999D01* +X568470Y207982D01* +X568470Y207963D01* +X568456Y207859D01* +X568460Y207832D01* +X568457Y207806D01* +X568478Y207703D01* +X568478Y207698D01* +X568480Y207691D01* +X568497Y207577D01* +X568508Y207553D01* +X568513Y207527D01* +X568566Y207424D01* +X568614Y207318D01* +X568631Y207298D01* +X568643Y207274D01* +X568723Y207190D01* +X568798Y207102D01* +X568818Y207089D01* +X568839Y207068D01* +X569078Y206926D01* +X569083Y206924D01* +X569498Y206752D01* +X571070Y205180D01* +X571920Y203126D01* +X571920Y200902D01* +X571070Y198848D01* +X569498Y197276D01* +X567443Y196425D01* +X565220Y196425D01* +G37* +%LPD*% +%LPC*% +G36* +X1080928Y162051D02* +X1080928Y162051D01* +X1078874Y162902D01* +X1077302Y164474D01* +X1076451Y166528D01* +X1076451Y168752D01* +X1077302Y170806D01* +X1077344Y170848D01* +X1077396Y170917D01* +X1077455Y170979D01* +X1077481Y171030D01* +X1077515Y171075D01* +X1077546Y171155D01* +X1077585Y171232D01* +X1077596Y171288D01* +X1077616Y171341D01* +X1077624Y171426D01* +X1077640Y171511D01* +X1077635Y171567D01* +X1077640Y171624D01* +X1077623Y171708D01* +X1077616Y171794D01* +X1077595Y171847D01* +X1077584Y171903D01* +X1077544Y171979D01* +X1077514Y172059D01* +X1077479Y172105D01* +X1077453Y172155D01* +X1077394Y172217D01* +X1077342Y172286D01* +X1077297Y172320D01* +X1077257Y172361D01* +X1077183Y172405D01* +X1077114Y172456D01* +X1077061Y172476D01* +X1077012Y172505D01* +X1076929Y172526D01* +X1076848Y172557D01* +X1076792Y172561D01* +X1076737Y172575D01* +X1076651Y172572D01* +X1076565Y172579D01* +X1076517Y172568D01* +X1076452Y172566D01* +X1076314Y172521D01* +X1076238Y172504D01* +X1075532Y172211D01* +X1073308Y172211D01* +X1071254Y173062D01* +X1069682Y174634D01* +X1068831Y176688D01* +X1068831Y178912D01* +X1069682Y180966D01* +X1071254Y182538D01* +X1072882Y183212D01* +X1072907Y183227D01* +X1072935Y183236D01* +X1073029Y183299D01* +X1073127Y183357D01* +X1073147Y183378D01* +X1073171Y183394D01* +X1073244Y183481D01* +X1073322Y183563D01* +X1073335Y183589D01* +X1073354Y183612D01* +X1073400Y183715D01* +X1073452Y183816D01* +X1073458Y183845D01* +X1073470Y183872D01* +X1073485Y183984D01* +X1073507Y184095D01* +X1073504Y184124D01* +X1073508Y184153D01* +X1073492Y184265D01* +X1073483Y184378D01* +X1073472Y184405D01* +X1073468Y184435D01* +X1073421Y184538D01* +X1073380Y184643D01* +X1073363Y184667D01* +X1073351Y184694D01* +X1073277Y184780D01* +X1073209Y184870D01* +X1073185Y184888D01* +X1073166Y184910D01* +X1073100Y184952D01* +X1072981Y185040D01* +X1072923Y185062D01* +X1072882Y185088D01* +X1071254Y185762D01* +X1069682Y187334D01* +X1068831Y189388D01* +X1068831Y191612D01* +X1069682Y193666D01* +X1071254Y195238D01* +X1073308Y196089D01* +X1075532Y196089D01* +X1077586Y195238D01* +X1079158Y193666D01* +X1080009Y191612D01* +X1080009Y189388D01* +X1079158Y187334D01* +X1077586Y185762D01* +X1075958Y185088D01* +X1075933Y185073D01* +X1075905Y185064D01* +X1075811Y185001D01* +X1075713Y184943D01* +X1075693Y184922D01* +X1075669Y184906D01* +X1075596Y184819D01* +X1075518Y184737D01* +X1075505Y184711D01* +X1075486Y184688D01* +X1075440Y184585D01* +X1075388Y184484D01* +X1075382Y184455D01* +X1075370Y184428D01* +X1075355Y184316D01* +X1075333Y184205D01* +X1075336Y184176D01* +X1075332Y184147D01* +X1075348Y184035D01* +X1075357Y183922D01* +X1075368Y183895D01* +X1075372Y183866D01* +X1075419Y183762D01* +X1075459Y183657D01* +X1075477Y183633D01* +X1075489Y183606D01* +X1075563Y183520D01* +X1075631Y183430D01* +X1075655Y183412D01* +X1075674Y183390D01* +X1075740Y183348D01* +X1075859Y183260D01* +X1075917Y183238D01* +X1075958Y183212D01* +X1077586Y182538D01* +X1079158Y180966D01* +X1080009Y178912D01* +X1080009Y176688D01* +X1079158Y174634D01* +X1079116Y174592D01* +X1079064Y174523D01* +X1079005Y174461D01* +X1078979Y174410D01* +X1078945Y174365D01* +X1078914Y174285D01* +X1078875Y174208D01* +X1078864Y174152D01* +X1078844Y174099D01* +X1078836Y174014D01* +X1078820Y173929D01* +X1078825Y173873D01* +X1078820Y173816D01* +X1078837Y173732D01* +X1078844Y173646D01* +X1078865Y173593D01* +X1078876Y173537D01* +X1078916Y173461D01* +X1078946Y173381D01* +X1078981Y173335D01* +X1079007Y173285D01* +X1079066Y173223D01* +X1079118Y173154D01* +X1079163Y173120D01* +X1079203Y173079D01* +X1079277Y173035D01* +X1079346Y172984D01* +X1079399Y172964D01* +X1079448Y172935D01* +X1079531Y172914D01* +X1079612Y172883D01* +X1079668Y172879D01* +X1079723Y172865D01* +X1079809Y172868D01* +X1079895Y172861D01* +X1079943Y172872D01* +X1080008Y172874D01* +X1080146Y172919D01* +X1080222Y172936D01* +X1080928Y173229D01* +X1083152Y173229D01* +X1085206Y172378D01* +X1086778Y170806D01* +X1087629Y168752D01* +X1087629Y166528D01* +X1086778Y164474D01* +X1085206Y162902D01* +X1083152Y162051D01* +X1080928Y162051D01* +G37* +%LPD*% +%LPC*% +G36* +X498704Y225551D02* +X498704Y225551D01* +X496650Y226402D01* +X495704Y227348D01* +X495658Y227383D01* +X495617Y227426D01* +X495545Y227468D01* +X495477Y227519D01* +X495423Y227540D01* +X495372Y227569D01* +X495290Y227590D01* +X495212Y227620D01* +X495153Y227625D01* +X495097Y227639D01* +X495012Y227637D01* +X494928Y227644D01* +X494871Y227632D01* +X494812Y227630D01* +X494732Y227604D01* +X494649Y227588D01* +X494598Y227561D01* +X494542Y227543D01* +X494486Y227503D01* +X494397Y227457D01* +X494325Y227388D01* +X494269Y227348D01* +X493354Y226434D01* +X491300Y225583D01* +X489077Y225583D01* +X487023Y226434D01* +X485451Y228006D01* +X484600Y230060D01* +X484600Y232156D01* +X484592Y232214D01* +X484593Y232272D01* +X484572Y232354D01* +X484560Y232438D01* +X484536Y232491D01* +X484521Y232547D01* +X484478Y232620D01* +X484444Y232697D01* +X484406Y232742D01* +X484376Y232792D01* +X484314Y232850D01* +X484260Y232914D01* +X484211Y232946D01* +X484169Y232986D01* +X484094Y233025D01* +X484023Y233072D01* +X483968Y233089D01* +X483916Y233116D01* +X483847Y233127D01* +X483752Y233157D01* +X483653Y233160D01* +X483584Y233171D01* +X481488Y233171D01* +X479434Y234022D01* +X477862Y235594D01* +X477011Y237648D01* +X477011Y239872D01* +X477862Y241926D01* +X479434Y243498D01* +X481488Y244349D01* +X483712Y244349D01* +X485766Y243498D01* +X487338Y241926D01* +X488189Y239872D01* +X488189Y237776D01* +X488197Y237718D01* +X488195Y237659D01* +X488217Y237578D01* +X488229Y237494D01* +X488252Y237441D01* +X488267Y237384D01* +X488310Y237312D01* +X488345Y237235D01* +X488383Y237190D01* +X488412Y237140D01* +X488474Y237082D01* +X488528Y237018D01* +X488577Y236985D01* +X488620Y236945D01* +X488695Y236907D01* +X488765Y236860D01* +X488821Y236842D01* +X488873Y236816D01* +X488941Y236804D01* +X489036Y236774D01* +X489136Y236772D01* +X489204Y236760D01* +X491300Y236760D01* +X493354Y235909D01* +X494300Y234964D01* +X494347Y234928D01* +X494387Y234886D01* +X494460Y234843D01* +X494527Y234793D01* +X494582Y234772D01* +X494632Y234742D01* +X494714Y234721D01* +X494793Y234691D01* +X494851Y234687D01* +X494908Y234672D01* +X494992Y234675D01* +X495076Y234668D01* +X495134Y234679D01* +X495192Y234681D01* +X495272Y234707D01* +X495355Y234724D01* +X495407Y234751D01* +X495463Y234769D01* +X495519Y234809D01* +X495607Y234855D01* +X495680Y234923D01* +X495736Y234964D01* +X496650Y235878D01* +X498704Y236729D01* +X500928Y236729D01* +X502982Y235878D01* +X504554Y234306D01* +X505405Y232252D01* +X505405Y230028D01* +X504554Y227974D01* +X502982Y226402D01* +X500928Y225551D01* +X498704Y225551D01* +G37* +%LPD*% +%LPC*% +G36* +X1091448Y239041D02* +X1091448Y239041D01* +X1089394Y239892D01* +X1087822Y241464D01* +X1086971Y243518D01* +X1086971Y245646D01* +X1086963Y245704D01* +X1086964Y245762D01* +X1086943Y245844D01* +X1086931Y245928D01* +X1086907Y245981D01* +X1086892Y246037D01* +X1086849Y246110D01* +X1086815Y246187D01* +X1086777Y246232D01* +X1086747Y246282D01* +X1086686Y246340D01* +X1086631Y246404D01* +X1086583Y246436D01* +X1086540Y246476D01* +X1086465Y246515D01* +X1086395Y246562D01* +X1086339Y246579D01* +X1086287Y246606D01* +X1086219Y246617D01* +X1086123Y246647D01* +X1086024Y246650D01* +X1085956Y246661D01* +X1083828Y246661D01* +X1081774Y247512D01* +X1080202Y249084D01* +X1079351Y251138D01* +X1079351Y253362D01* +X1080202Y255416D01* +X1081774Y256988D01* +X1083828Y257839D01* +X1086051Y257839D01* +X1088132Y256977D01* +X1088161Y256955D01* +X1088249Y256881D01* +X1088275Y256869D01* +X1088297Y256853D01* +X1088404Y256812D01* +X1088509Y256765D01* +X1088537Y256761D01* +X1088563Y256752D01* +X1088677Y256742D01* +X1088791Y256726D01* +X1088818Y256730D01* +X1088846Y256728D01* +X1088958Y256751D01* +X1089072Y256767D01* +X1089097Y256778D01* +X1089125Y256784D01* +X1089226Y256837D01* +X1089331Y256884D01* +X1089352Y256902D01* +X1089377Y256915D01* +X1089460Y256994D01* +X1089548Y257068D01* +X1089561Y257090D01* +X1089583Y257111D01* +X1089718Y257341D01* +X1089726Y257353D01* +X1089752Y257416D01* +X1091324Y258988D01* +X1093378Y259839D01* +X1095601Y259839D01* +X1097655Y258988D01* +X1099227Y257416D01* +X1100078Y255362D01* +X1100078Y253139D01* +X1099227Y251085D01* +X1097655Y249513D01* +X1097592Y249486D01* +X1097493Y249428D01* +X1097391Y249375D01* +X1097371Y249356D01* +X1097347Y249342D01* +X1097268Y249258D01* +X1097185Y249179D01* +X1097171Y249155D01* +X1097152Y249135D01* +X1097100Y249033D01* +X1097041Y248934D01* +X1097035Y248907D01* +X1097022Y248883D01* +X1097000Y248770D01* +X1096971Y248659D01* +X1096972Y248631D01* +X1096967Y248604D01* +X1096977Y248489D01* +X1096980Y248374D01* +X1096989Y248348D01* +X1096991Y248320D01* +X1097033Y248213D01* +X1097068Y248104D01* +X1097082Y248084D01* +X1097093Y248055D01* +X1097254Y247842D01* +X1097263Y247831D01* +X1097297Y247796D01* +X1098148Y245742D01* +X1098148Y243518D01* +X1097297Y241464D01* +X1095725Y239892D01* +X1093671Y239041D01* +X1091448Y239041D01* +G37* +%LPD*% +%LPC*% +G36* +X569782Y11683D02* +X569782Y11683D01* +X566608Y12998D01* +X564178Y15428D01* +X562863Y18602D01* +X562863Y22038D01* +X564178Y25212D01* +X566608Y27642D01* +X569782Y28957D01* +X573218Y28957D01* +X576392Y27642D01* +X578822Y25212D01* +X580137Y22038D01* +X580137Y18602D01* +X578822Y15428D01* +X576392Y12998D01* +X573218Y11683D01* +X569782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X722182Y11683D02* +X722182Y11683D01* +X719008Y12998D01* +X716578Y15428D01* +X715263Y18602D01* +X715263Y22038D01* +X716578Y25212D01* +X719008Y27642D01* +X722182Y28957D01* +X725618Y28957D01* +X728792Y27642D01* +X731222Y25212D01* +X732537Y22038D01* +X732537Y18602D01* +X731222Y15428D01* +X728792Y12998D01* +X725618Y11683D01* +X722182Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X722182Y70103D02* +X722182Y70103D01* +X719008Y71418D01* +X716578Y73848D01* +X715263Y77022D01* +X715263Y80458D01* +X716578Y83632D01* +X719008Y86062D01* +X722182Y87377D01* +X725618Y87377D01* +X728792Y86062D01* +X731222Y83632D01* +X732537Y80458D01* +X732537Y77022D01* +X731222Y73848D01* +X728792Y71418D01* +X725618Y70103D01* +X722182Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y70103D02* +X747582Y70103D01* +X744408Y71418D01* +X741978Y73848D01* +X740663Y77022D01* +X740663Y80458D01* +X741978Y83632D01* +X744408Y86062D01* +X747582Y87377D01* +X751018Y87377D01* +X754192Y86062D01* +X756622Y83632D01* +X757937Y80458D01* +X757937Y77022D01* +X756622Y73848D01* +X754192Y71418D01* +X751018Y70103D01* +X747582Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X772982Y11683D02* +X772982Y11683D01* +X769808Y12998D01* +X767378Y15428D01* +X766063Y18602D01* +X766063Y22038D01* +X767378Y25212D01* +X769808Y27642D01* +X772982Y28957D01* +X776418Y28957D01* +X779592Y27642D01* +X782022Y25212D01* +X783337Y22038D01* +X783337Y18602D01* +X782022Y15428D01* +X779592Y12998D01* +X776418Y11683D01* +X772982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X645982Y11683D02* +X645982Y11683D01* +X642808Y12998D01* +X640378Y15428D01* +X639063Y18602D01* +X639063Y22038D01* +X640378Y25212D01* +X642808Y27642D01* +X645982Y28957D01* +X649418Y28957D01* +X652592Y27642D01* +X655022Y25212D01* +X656337Y22038D01* +X656337Y18602D01* +X655022Y15428D01* +X652592Y12998D01* +X649418Y11683D01* +X645982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X671382Y11683D02* +X671382Y11683D01* +X668208Y12998D01* +X665778Y15428D01* +X664463Y18602D01* +X664463Y22038D01* +X665778Y25212D01* +X668208Y27642D01* +X671382Y28957D01* +X674818Y28957D01* +X677992Y27642D01* +X680422Y25212D01* +X681737Y22038D01* +X681737Y18602D01* +X680422Y15428D01* +X677992Y12998D01* +X674818Y11683D01* +X671382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y11683D02* +X747582Y11683D01* +X744408Y12998D01* +X741978Y15428D01* +X740663Y18602D01* +X740663Y22038D01* +X741978Y25212D01* +X744408Y27642D01* +X747582Y28957D01* +X751018Y28957D01* +X754192Y27642D01* +X756622Y25212D01* +X757937Y22038D01* +X757937Y18602D01* +X756622Y15428D01* +X754192Y12998D01* +X751018Y11683D01* +X747582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X696782Y11683D02* +X696782Y11683D01* +X693608Y12998D01* +X691178Y15428D01* +X689863Y18602D01* +X689863Y22038D01* +X691178Y25212D01* +X693608Y27642D01* +X696782Y28957D01* +X700218Y28957D01* +X703392Y27642D01* +X705822Y25212D01* +X707137Y22038D01* +X707137Y18602D01* +X705822Y15428D01* +X703392Y12998D01* +X700218Y11683D01* +X696782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X417943Y344781D02* +X417943Y344781D01* +X415806Y345667D01* +X414171Y347302D01* +X413285Y349439D01* +X413285Y351753D01* +X414171Y353890D01* +X415806Y355525D01* +X417943Y356411D01* +X420257Y356411D01* +X422394Y355525D01* +X424029Y353890D01* +X424032Y353884D01* +X424076Y353810D01* +X424111Y353731D01* +X424148Y353688D01* +X424176Y353639D01* +X424239Y353580D01* +X424295Y353514D01* +X424342Y353483D01* +X424383Y353444D01* +X424460Y353404D01* +X424531Y353357D01* +X424585Y353339D01* +X424636Y353313D01* +X424720Y353297D01* +X424802Y353271D01* +X424859Y353269D01* +X424915Y353258D01* +X425000Y353266D01* +X425086Y353264D01* +X425141Y353278D01* +X425198Y353283D01* +X425278Y353314D01* +X425361Y353335D01* +X425410Y353364D01* +X425463Y353385D01* +X425532Y353437D01* +X425606Y353481D01* +X425645Y353522D01* +X425690Y353556D01* +X425742Y353625D01* +X425800Y353688D01* +X425826Y353739D01* +X425860Y353784D01* +X425891Y353864D01* +X425930Y353941D01* +X425938Y353990D01* +X425961Y354050D01* +X425971Y354183D01* +X426871Y356354D01* +X428506Y357989D01* +X430643Y358875D01* +X432957Y358875D01* +X435094Y357989D01* +X436729Y356354D01* +X437615Y354217D01* +X437615Y351903D01* +X436729Y349766D01* +X435094Y348131D01* +X432957Y347245D01* +X430643Y347245D01* +X428506Y348131D01* +X426871Y349766D01* +X426868Y349772D01* +X426824Y349846D01* +X426789Y349925D01* +X426752Y349968D01* +X426724Y350017D01* +X426661Y350076D01* +X426605Y350142D01* +X426558Y350173D01* +X426517Y350212D01* +X426440Y350252D01* +X426369Y350299D01* +X426315Y350317D01* +X426264Y350343D01* +X426180Y350359D01* +X426098Y350385D01* +X426041Y350387D01* +X425985Y350398D01* +X425900Y350390D01* +X425814Y350392D01* +X425759Y350378D01* +X425702Y350373D01* +X425622Y350342D01* +X425539Y350321D01* +X425490Y350292D01* +X425437Y350271D01* +X425368Y350219D01* +X425294Y350175D01* +X425255Y350134D01* +X425210Y350100D01* +X425158Y350031D01* +X425100Y349968D01* +X425074Y349917D01* +X425040Y349872D01* +X425009Y349792D01* +X424970Y349715D01* +X424962Y349666D01* +X424939Y349606D01* +X424929Y349473D01* +X424029Y347302D01* +X422394Y345667D01* +X420257Y344781D01* +X417943Y344781D01* +G37* +%LPD*% +%LPC*% +G36* +X197087Y327207D02* +X197087Y327207D01* +X194950Y328093D01* +X193315Y329728D01* +X192429Y331865D01* +X192429Y334179D01* +X193105Y335809D01* +X193112Y335838D01* +X193126Y335864D01* +X193147Y335975D01* +X193176Y336084D01* +X193175Y336114D01* +X193181Y336143D01* +X193171Y336256D01* +X193168Y336369D01* +X193159Y336397D01* +X193156Y336426D01* +X193115Y336532D01* +X193081Y336639D01* +X193065Y336664D01* +X193054Y336691D01* +X192986Y336781D01* +X192923Y336876D01* +X192900Y336894D01* +X192882Y336918D01* +X192792Y336986D01* +X192705Y337059D01* +X192678Y337070D01* +X192655Y337088D01* +X192549Y337128D01* +X192445Y337174D01* +X192416Y337178D01* +X192389Y337188D01* +X192276Y337197D01* +X192164Y337213D01* +X192135Y337209D01* +X192105Y337211D01* +X192029Y337193D01* +X191882Y337172D01* +X191825Y337147D01* +X191778Y337136D01* +X191657Y337085D01* +X189343Y337085D01* +X187206Y337971D01* +X185571Y339606D01* +X184685Y341743D01* +X184685Y344057D01* +X185571Y346194D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195639Y340113D01* +X195632Y340084D01* +X195619Y340058D01* +X195597Y339947D01* +X195568Y339838D01* +X195569Y339808D01* +X195564Y339779D01* +X195573Y339667D01* +X195577Y339553D01* +X195585Y339525D01* +X195588Y339496D01* +X195629Y339391D01* +X195663Y339283D01* +X195680Y339258D01* +X195690Y339231D01* +X195758Y339141D01* +X195821Y339046D01* +X195844Y339028D01* +X195862Y339004D01* +X195952Y338936D01* +X196039Y338864D01* +X196066Y338852D01* +X196089Y338834D01* +X196195Y338794D01* +X196299Y338748D01* +X196328Y338744D01* +X196355Y338734D01* +X196468Y338725D01* +X196580Y338709D01* +X196609Y338713D01* +X196639Y338711D01* +X196715Y338729D01* +X196862Y338750D01* +X196919Y338776D01* +X196966Y338786D01* +X197087Y338837D01* +X199401Y338837D01* +X201538Y337951D01* +X203174Y336316D01* +X204059Y334179D01* +X204059Y331865D01* +X203174Y329728D01* +X201538Y328093D01* +X199401Y327207D01* +X197087Y327207D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y178641D02* +X290487Y178641D01* +X287526Y179868D01* +X285259Y182134D01* +X284033Y185095D01* +X284033Y188300D01* +X285259Y191262D01* +X287526Y193528D01* +X290487Y194755D01* +X293692Y194755D01* +X296653Y193528D01* +X298920Y191262D01* +X300146Y188300D01* +X300146Y185095D01* +X298920Y182134D01* +X296653Y179868D01* +X293692Y178641D01* +X290487Y178641D01* +G37* +%LPD*% +%LPC*% +G36* +X193201Y121729D02* +X193201Y121729D01* +X190240Y122955D01* +X187974Y125221D01* +X186747Y128183D01* +X186747Y131388D01* +X187974Y134349D01* +X190240Y136615D01* +X193201Y137842D01* +X196406Y137842D01* +X199368Y136615D01* +X201634Y134349D01* +X202860Y131388D01* +X202860Y128183D01* +X201634Y125221D01* +X199368Y122955D01* +X196406Y121729D01* +X193201Y121729D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y216741D02* +X315887Y216741D01* +X312926Y217968D01* +X310659Y220234D01* +X309433Y223195D01* +X309433Y226400D01* +X310659Y229362D01* +X312926Y231628D01* +X315887Y232855D01* +X319092Y232855D01* +X322053Y231628D01* +X324320Y229362D01* +X325546Y226400D01* +X325546Y223195D01* +X324320Y220234D01* +X322053Y217968D01* +X319092Y216741D01* +X315887Y216741D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y140541D02* +X315887Y140541D01* +X312926Y141768D01* +X310659Y144034D01* +X309433Y146995D01* +X309433Y150200D01* +X310659Y153162D01* +X312926Y155428D01* +X315887Y156655D01* +X319092Y156655D01* +X322053Y155428D01* +X324320Y153162D01* +X325546Y150200D01* +X325546Y146995D01* +X324320Y144034D01* +X322053Y141768D01* +X319092Y140541D01* +X315887Y140541D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y191341D02* +X315887Y191341D01* +X312926Y192568D01* +X310659Y194834D01* +X309433Y197795D01* +X309433Y201000D01* +X310659Y203962D01* +X312926Y206228D01* +X315887Y207455D01* +X319092Y207455D01* +X322053Y206228D01* +X324320Y203962D01* +X325546Y201000D01* +X325546Y197795D01* +X324320Y194834D01* +X322053Y192568D01* +X319092Y191341D01* +X315887Y191341D01* +G37* +%LPD*% +%LPC*% +G36* +X178006Y147147D02* +X178006Y147147D01* +X175045Y148374D01* +X172779Y150640D01* +X171552Y153601D01* +X171552Y156806D01* +X172779Y159768D01* +X175045Y162034D01* +X178006Y163261D01* +X181211Y163261D01* +X184173Y162034D01* +X186439Y159768D01* +X187665Y156806D01* +X187665Y153601D01* +X186439Y150640D01* +X184173Y148374D01* +X181211Y147147D01* +X178006Y147147D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y153241D02* +X290487Y153241D01* +X287526Y154468D01* +X285259Y156734D01* +X284033Y159695D01* +X284033Y162900D01* +X285259Y165862D01* +X287526Y168128D01* +X290487Y169355D01* +X293692Y169355D01* +X296653Y168128D01* +X298920Y165862D01* +X300146Y162900D01* +X300146Y159695D01* +X298920Y156734D01* +X296653Y154468D01* +X293692Y153241D01* +X290487Y153241D01* +G37* +%LPD*% +%LPC*% +G36* +X193206Y222847D02* +X193206Y222847D01* +X190245Y224074D01* +X187979Y226340D01* +X186752Y229301D01* +X186752Y232506D01* +X187979Y235468D01* +X190245Y237734D01* +X193206Y238961D01* +X196411Y238961D01* +X199373Y237734D01* +X201639Y235468D01* +X202865Y232506D01* +X202865Y229301D01* +X201639Y226340D01* +X199373Y224074D01* +X196411Y222847D01* +X193206Y222847D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y204041D02* +X290487Y204041D01* +X287526Y205268D01* +X285259Y207534D01* +X284033Y210495D01* +X284033Y213700D01* +X285259Y216662D01* +X287526Y218928D01* +X290487Y220155D01* +X293692Y220155D01* +X296653Y218928D01* +X298920Y216662D01* +X300146Y213700D01* +X300146Y210495D01* +X298920Y207534D01* +X296653Y205268D01* +X293692Y204041D01* +X290487Y204041D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y165941D02* +X315887Y165941D01* +X312926Y167168D01* +X310659Y169434D01* +X309433Y172395D01* +X309433Y175600D01* +X310659Y178562D01* +X312926Y180828D01* +X315887Y182055D01* +X319092Y182055D01* +X322053Y180828D01* +X324320Y178562D01* +X325546Y175600D01* +X325546Y172395D01* +X324320Y169434D01* +X322053Y167168D01* +X319092Y165941D01* +X315887Y165941D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y229441D02* +X290487Y229441D01* +X287526Y230668D01* +X285259Y232934D01* +X284033Y235895D01* +X284033Y239100D01* +X285259Y242062D01* +X287526Y244328D01* +X290487Y245555D01* +X293692Y245555D01* +X296653Y244328D01* +X298920Y242062D01* +X300146Y239100D01* +X300146Y235895D01* +X298920Y232934D01* +X296653Y230668D01* +X293692Y229441D01* +X290487Y229441D01* +G37* +%LPD*% +%LPC*% +G36* +X1192688Y273811D02* +X1192688Y273811D01* +X1190634Y274662D01* +X1189062Y276234D01* +X1188211Y278288D01* +X1188211Y280512D01* +X1189062Y282566D01* +X1190634Y284138D01* +X1192688Y284989D01* +X1194912Y284989D01* +X1196966Y284138D01* +X1198538Y282566D01* +X1199212Y280938D01* +X1199227Y280913D01* +X1199236Y280885D01* +X1199299Y280791D01* +X1199357Y280693D01* +X1199378Y280673D01* +X1199394Y280649D01* +X1199481Y280576D01* +X1199563Y280498D01* +X1199589Y280485D01* +X1199612Y280466D01* +X1199715Y280420D01* +X1199816Y280368D01* +X1199845Y280362D01* +X1199872Y280350D01* +X1199984Y280335D01* +X1200095Y280313D01* +X1200124Y280316D01* +X1200153Y280312D01* +X1200265Y280328D01* +X1200378Y280337D01* +X1200405Y280348D01* +X1200434Y280352D01* +X1200538Y280399D01* +X1200643Y280439D01* +X1200667Y280457D01* +X1200694Y280469D01* +X1200780Y280543D01* +X1200870Y280611D01* +X1200888Y280635D01* +X1200910Y280654D01* +X1200952Y280720D01* +X1201040Y280839D01* +X1201062Y280897D01* +X1201088Y280938D01* +X1201762Y282566D01* +X1203334Y284138D01* +X1205388Y284989D01* +X1207612Y284989D01* +X1209666Y284138D01* +X1211238Y282566D01* +X1212089Y280512D01* +X1212089Y278288D01* +X1211238Y276234D01* +X1209666Y274662D01* +X1207612Y273811D01* +X1205388Y273811D01* +X1203334Y274662D01* +X1201762Y276234D01* +X1201088Y277862D01* +X1201073Y277887D01* +X1201064Y277915D01* +X1201001Y278009D01* +X1200943Y278107D01* +X1200922Y278127D01* +X1200906Y278151D01* +X1200819Y278224D01* +X1200737Y278302D01* +X1200711Y278315D01* +X1200688Y278334D01* +X1200585Y278380D01* +X1200484Y278432D01* +X1200455Y278438D01* +X1200428Y278450D01* +X1200316Y278465D01* +X1200205Y278487D01* +X1200176Y278484D01* +X1200147Y278488D01* +X1200035Y278472D01* +X1199922Y278463D01* +X1199895Y278452D01* +X1199865Y278448D01* +X1199762Y278401D01* +X1199657Y278360D01* +X1199633Y278343D01* +X1199606Y278331D01* +X1199520Y278257D01* +X1199430Y278189D01* +X1199412Y278165D01* +X1199390Y278146D01* +X1199348Y278080D01* +X1199260Y277961D01* +X1199238Y277903D01* +X1199212Y277862D01* +X1198538Y276234D01* +X1196966Y274662D01* +X1194912Y273811D01* +X1192688Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X1157128Y263651D02* +X1157128Y263651D01* +X1155074Y264502D01* +X1153502Y266074D01* +X1152651Y268128D01* +X1152651Y270352D01* +X1153502Y272406D01* +X1155074Y273978D01* +X1157128Y274829D01* +X1159256Y274829D01* +X1159314Y274837D01* +X1159372Y274835D01* +X1159454Y274857D01* +X1159538Y274869D01* +X1159591Y274892D01* +X1159647Y274907D01* +X1159720Y274950D01* +X1159797Y274985D01* +X1159842Y275023D01* +X1159892Y275052D01* +X1159950Y275114D01* +X1160014Y275168D01* +X1160046Y275217D01* +X1160086Y275260D01* +X1160125Y275335D01* +X1160172Y275405D01* +X1160189Y275461D01* +X1160216Y275513D01* +X1160227Y275581D01* +X1160257Y275676D01* +X1160260Y275776D01* +X1160271Y275844D01* +X1160271Y277972D01* +X1161122Y280026D01* +X1162694Y281598D01* +X1164748Y282449D01* +X1166972Y282449D01* +X1169026Y281598D01* +X1170598Y280026D01* +X1171449Y277972D01* +X1171449Y275748D01* +X1170598Y273694D01* +X1169026Y272122D01* +X1166972Y271271D01* +X1164844Y271271D01* +X1164786Y271263D01* +X1164728Y271265D01* +X1164646Y271243D01* +X1164562Y271231D01* +X1164509Y271208D01* +X1164453Y271193D01* +X1164380Y271150D01* +X1164303Y271115D01* +X1164258Y271077D01* +X1164208Y271048D01* +X1164150Y270986D01* +X1164086Y270932D01* +X1164054Y270883D01* +X1164014Y270840D01* +X1163975Y270765D01* +X1163928Y270695D01* +X1163911Y270639D01* +X1163884Y270587D01* +X1163873Y270519D01* +X1163843Y270424D01* +X1163840Y270324D01* +X1163829Y270256D01* +X1163829Y268128D01* +X1162978Y266074D01* +X1161406Y264502D01* +X1159352Y263651D01* +X1157128Y263651D01* +G37* +%LPD*% +%LPC*% +G36* +X1022508Y159511D02* +X1022508Y159511D01* +X1020454Y160362D01* +X1018882Y161934D01* +X1018031Y163988D01* +X1018031Y166212D01* +X1018882Y168266D01* +X1020078Y169462D01* +X1020114Y169509D01* +X1020156Y169549D01* +X1020199Y169622D01* +X1020249Y169689D01* +X1020270Y169744D01* +X1020300Y169794D01* +X1020321Y169876D01* +X1020351Y169955D01* +X1020355Y170013D01* +X1020370Y170070D01* +X1020367Y170154D01* +X1020374Y170238D01* +X1020363Y170296D01* +X1020361Y170354D01* +X1020335Y170434D01* +X1020318Y170517D01* +X1020291Y170569D01* +X1020273Y170625D01* +X1020233Y170681D01* +X1020187Y170769D01* +X1020119Y170842D01* +X1020078Y170898D01* +X1018882Y172094D01* +X1018031Y174148D01* +X1018031Y176372D01* +X1018882Y178426D01* +X1020454Y179998D01* +X1022508Y180849D01* +X1024732Y180849D01* +X1026786Y179998D01* +X1028358Y178426D01* +X1029209Y176372D01* +X1029209Y174148D01* +X1028358Y172094D01* +X1027162Y170898D01* +X1027126Y170851D01* +X1027084Y170811D01* +X1027041Y170738D01* +X1026991Y170671D01* +X1026970Y170616D01* +X1026940Y170566D01* +X1026920Y170484D01* +X1026889Y170405D01* +X1026885Y170347D01* +X1026870Y170290D01* +X1026873Y170206D01* +X1026866Y170122D01* +X1026877Y170064D01* +X1026879Y170006D01* +X1026905Y169926D01* +X1026922Y169843D01* +X1026949Y169791D01* +X1026967Y169735D01* +X1027007Y169679D01* +X1027053Y169591D01* +X1027122Y169518D01* +X1027162Y169462D01* +X1028358Y168266D01* +X1029209Y166212D01* +X1029209Y163988D01* +X1028358Y161934D01* +X1026786Y160362D01* +X1024732Y159511D01* +X1022508Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X870108Y256031D02* +X870108Y256031D01* +X868054Y256882D01* +X866482Y258454D01* +X865631Y260508D01* +X865631Y262732D01* +X866482Y264786D01* +X868054Y266358D01* +X870108Y267209D01* +X872332Y267209D01* +X874386Y266358D01* +X875582Y265162D01* +X875629Y265126D01* +X875669Y265084D01* +X875742Y265041D01* +X875809Y264991D01* +X875864Y264970D01* +X875914Y264940D01* +X875996Y264920D01* +X876075Y264889D01* +X876133Y264885D01* +X876190Y264870D01* +X876274Y264873D01* +X876358Y264866D01* +X876416Y264877D01* +X876474Y264879D01* +X876554Y264905D01* +X876637Y264922D01* +X876689Y264949D01* +X876745Y264967D01* +X876801Y265007D01* +X876889Y265053D01* +X876962Y265122D01* +X877018Y265162D01* +X878214Y266358D01* +X880268Y267209D01* +X882492Y267209D01* +X884546Y266358D01* +X886118Y264786D01* +X886969Y262732D01* +X886969Y260508D01* +X886118Y258454D01* +X884546Y256882D01* +X882492Y256031D01* +X880268Y256031D01* +X878214Y256882D01* +X877018Y258078D01* +X876971Y258114D01* +X876931Y258156D01* +X876858Y258199D01* +X876791Y258249D01* +X876736Y258270D01* +X876686Y258300D01* +X876604Y258321D01* +X876525Y258351D01* +X876467Y258355D01* +X876410Y258370D01* +X876326Y258367D01* +X876242Y258374D01* +X876184Y258363D01* +X876126Y258361D01* +X876046Y258335D01* +X875963Y258318D01* +X875911Y258291D01* +X875855Y258273D01* +X875799Y258233D01* +X875711Y258187D01* +X875638Y258119D01* +X875582Y258078D01* +X874386Y256882D01* +X872332Y256031D01* +X870108Y256031D01* +G37* +%LPD*% +%LPC*% +G36* +X489249Y115061D02* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496382Y118016D01* +X494465Y116099D01* +X491960Y115061D01* +X489249Y115061D01* +G37* +%LPD*% +%LPC*% +G36* +X224903Y342165D02* +X224903Y342165D01* +X222766Y343051D01* +X221131Y344686D01* +X220245Y346823D01* +X220245Y349137D01* +X221131Y351274D01* +X222766Y352909D01* +X224903Y353795D01* +X227217Y353795D01* +X229354Y352909D01* +X230989Y351274D01* +X231875Y349137D01* +X231875Y346823D01* +X230989Y344686D01* +X229354Y343051D01* +X227217Y342165D01* +X224903Y342165D01* +G37* +%LPD*% +%LPC*% +G36* +X527163Y75465D02* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +G37* +%LPD*% +%LPC*% +G36* +X859903Y70385D02* +X859903Y70385D01* +X857766Y71271D01* +X856131Y72906D01* +X855245Y75043D01* +X855245Y77357D01* +X856131Y79494D01* +X857766Y81129D01* +X859903Y82015D01* +X862217Y82015D01* +X864354Y81129D01* +X865989Y79494D01* +X866875Y77357D01* +X866875Y75043D01* +X865989Y72906D01* +X864354Y71271D01* +X862217Y70385D01* +X859903Y70385D01* +G37* +%LPD*% +%LPC*% +G36* +X384923Y339625D02* +X384923Y339625D01* +X382786Y340511D01* +X381151Y342146D01* +X380265Y344283D01* +X380265Y346597D01* +X381151Y348734D01* +X382786Y350369D01* +X384923Y351255D01* +X387237Y351255D01* +X389374Y350369D01* +X391009Y348734D01* +X391895Y346597D01* +X391895Y344283D01* +X391009Y342146D01* +X389374Y340511D01* +X387237Y339625D01* +X384923Y339625D01* +G37* +%LPD*% +%LPC*% +G36* +X175354Y318016D02* +X175354Y318016D01* +X173217Y318902D01* +X171582Y320537D01* +X170696Y322674D01* +X170696Y324988D01* +X171582Y327125D01* +X173217Y328760D01* +X175354Y329646D01* +X177668Y329646D01* +X179805Y328760D01* +X181440Y327125D01* +X182326Y324988D01* +X182326Y322674D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +G37* +%LPD*% +%LPC*% +G36* +X580548Y197611D02* +X580548Y197611D01* +X578494Y198462D01* +X576922Y200034D01* +X576071Y202088D01* +X576071Y204312D01* +X576922Y206366D01* +X578494Y207938D01* +X580548Y208789D01* +X582772Y208789D01* +X584826Y207938D01* +X586398Y206366D01* +X587249Y204312D01* +X587249Y202088D01* +X586398Y200034D01* +X584826Y198462D01* +X582772Y197611D01* +X580548Y197611D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y197611D02* +X1205388Y197611D01* +X1203334Y198462D01* +X1201762Y200034D01* +X1200911Y202088D01* +X1200911Y204312D01* +X1201762Y206366D01* +X1203334Y207938D01* +X1205388Y208789D01* +X1207612Y208789D01* +X1209666Y207938D01* +X1211238Y206366D01* +X1212089Y204312D01* +X1212089Y202088D01* +X1211238Y200034D01* +X1209666Y198462D01* +X1207612Y197611D01* +X1205388Y197611D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y212851D02* +X1205388Y212851D01* +X1203334Y213702D01* +X1201762Y215274D01* +X1200911Y217328D01* +X1200911Y219552D01* +X1201762Y221606D01* +X1203334Y223178D01* +X1205388Y224029D01* +X1207612Y224029D01* +X1209666Y223178D01* +X1211238Y221606D01* +X1212089Y219552D01* +X1212089Y217328D01* +X1211238Y215274D01* +X1209666Y213702D01* +X1207612Y212851D01* +X1205388Y212851D01* +G37* +%LPD*% +%LPC*% +G36* +X547093Y215827D02* +X547093Y215827D01* +X545039Y216678D01* +X543467Y218250D01* +X542616Y220304D01* +X542616Y222527D01* +X543467Y224581D01* +X545039Y226153D01* +X547093Y227004D01* +X549316Y227004D01* +X551370Y226153D01* +X552942Y224581D01* +X553793Y222527D01* +X553793Y220304D01* +X552942Y218250D01* +X551370Y216678D01* +X549316Y215827D01* +X547093Y215827D01* +G37* +%LPD*% +%LPC*% +G36* +X1002188Y182371D02* +X1002188Y182371D01* +X1000134Y183222D01* +X998562Y184794D01* +X997711Y186848D01* +X997711Y189072D01* +X998562Y191126D01* +X1000134Y192698D01* +X1002188Y193549D01* +X1004412Y193549D01* +X1006466Y192698D01* +X1008038Y191126D01* +X1008889Y189072D01* +X1008889Y186848D01* +X1008038Y184794D01* +X1006466Y183222D01* +X1004412Y182371D01* +X1002188Y182371D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y174751D02* +X1205388Y174751D01* +X1203334Y175602D01* +X1201762Y177174D01* +X1200911Y179228D01* +X1200911Y181452D01* +X1201762Y183506D01* +X1203334Y185078D01* +X1205388Y185929D01* +X1207612Y185929D01* +X1209666Y185078D01* +X1211238Y183506D01* +X1212089Y181452D01* +X1212089Y179228D01* +X1211238Y177174D01* +X1209666Y175602D01* +X1207612Y174751D01* +X1205388Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X517048Y233905D02* +X517048Y233905D01* +X514994Y234756D01* +X513422Y236328D01* +X512571Y238382D01* +X512571Y240606D01* +X513422Y242660D01* +X514994Y244232D01* +X517048Y245083D01* +X519272Y245083D01* +X521326Y244232D01* +X522898Y242660D01* +X523749Y240606D01* +X523749Y238382D01* +X522898Y236328D01* +X521326Y234756D01* +X519272Y233905D01* +X517048Y233905D01* +G37* +%LPD*% +%LPC*% +G36* +X992028Y169671D02* +X992028Y169671D01* +X989974Y170522D01* +X988402Y172094D01* +X987551Y174148D01* +X987551Y176372D01* +X988402Y178426D01* +X989974Y179998D01* +X992028Y180849D01* +X994252Y180849D01* +X996306Y179998D01* +X997878Y178426D01* +X998729Y176372D01* +X998729Y174148D01* +X997878Y172094D01* +X996306Y170522D01* +X994252Y169671D01* +X992028Y169671D01* +G37* +%LPD*% +%LPC*% +G36* +X953928Y169671D02* +X953928Y169671D01* +X951874Y170522D01* +X950302Y172094D01* +X949451Y174148D01* +X949451Y176372D01* +X950302Y178426D01* +X951874Y179998D01* +X953928Y180849D01* +X956152Y180849D01* +X958206Y179998D01* +X959778Y178426D01* +X960629Y176372D01* +X960629Y174148D01* +X959778Y172094D01* +X958206Y170522D01* +X956152Y169671D01* +X953928Y169671D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y235711D02* +X1205388Y235711D01* +X1203334Y236562D01* +X1201762Y238134D01* +X1200911Y240188D01* +X1200911Y242412D01* +X1201762Y244466D01* +X1203334Y246038D01* +X1205388Y246889D01* +X1207612Y246889D01* +X1209666Y246038D01* +X1211238Y244466D01* +X1212089Y242412D01* +X1212089Y240188D01* +X1211238Y238134D01* +X1209666Y236562D01* +X1207612Y235711D01* +X1205388Y235711D01* +G37* +%LPD*% +%LPC*% +G36* +X870783Y240791D02* +X870783Y240791D01* +X868728Y241642D01* +X867156Y243214D01* +X866305Y245268D01* +X866305Y247492D01* +X867156Y249546D01* +X868728Y251118D01* +X870783Y251969D01* +X873006Y251969D01* +X875060Y251118D01* +X876632Y249546D01* +X877483Y247492D01* +X877483Y245268D01* +X876632Y243214D01* +X875060Y241642D01* +X873006Y240791D01* +X870783Y240791D01* +G37* +%LPD*% +%LPC*% +G36* +X562768Y273811D02* +X562768Y273811D01* +X560714Y274662D01* +X559142Y276234D01* +X558291Y278288D01* +X558291Y280512D01* +X559142Y282566D01* +X560714Y284138D01* +X562768Y284989D01* +X564992Y284989D01* +X567046Y284138D01* +X568618Y282566D01* +X569469Y280512D01* +X569469Y278288D01* +X568618Y276234D01* +X567046Y274662D01* +X564992Y273811D01* +X562768Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X712628Y164591D02* +X712628Y164591D01* +X710574Y165442D01* +X709002Y167014D01* +X708151Y169068D01* +X708151Y171292D01* +X709002Y173346D01* +X710574Y174918D01* +X712628Y175769D01* +X714852Y175769D01* +X716906Y174918D01* +X718478Y173346D01* +X719329Y171292D01* +X719329Y169068D01* +X718478Y167014D01* +X716906Y165442D01* +X714852Y164591D01* +X712628Y164591D01* +G37* +%LPD*% +%LPC*% +G36* +X539908Y164591D02* +X539908Y164591D01* +X537854Y165442D01* +X536282Y167014D01* +X535431Y169068D01* +X535431Y171292D01* +X536282Y173346D01* +X537854Y174918D01* +X539908Y175769D01* +X542132Y175769D01* +X544186Y174918D01* +X545758Y173346D01* +X546609Y171292D01* +X546609Y169068D01* +X545758Y167014D01* +X544186Y165442D01* +X542132Y164591D01* +X539908Y164591D01* +G37* +%LPD*% +%LPC*% +G36* +X902109Y163071D02* +X902109Y163071D01* +X900055Y163922D01* +X898483Y165494D01* +X897632Y167548D01* +X897632Y169771D01* +X898483Y171825D01* +X900055Y173397D01* +X902109Y174248D01* +X904332Y174248D01* +X906386Y173397D01* +X907958Y171825D01* +X908809Y169771D01* +X908809Y167548D01* +X907958Y165494D01* +X906386Y163922D01* +X904332Y163071D01* +X902109Y163071D01* +G37* +%LPD*% +%LPC*% +G36* +X1149508Y162051D02* +X1149508Y162051D01* +X1147454Y162902D01* +X1145882Y164474D01* +X1145031Y166528D01* +X1145031Y168752D01* +X1145882Y170806D01* +X1147454Y172378D01* +X1149508Y173229D01* +X1151732Y173229D01* +X1153786Y172378D01* +X1155358Y170806D01* +X1156209Y168752D01* +X1156209Y166528D01* +X1155358Y164474D01* +X1153786Y162902D01* +X1151732Y162051D01* +X1149508Y162051D01* +G37* +%LPD*% +%LPC*% +G36* +X971708Y159511D02* +X971708Y159511D01* +X969654Y160362D01* +X968082Y161934D01* +X967231Y163988D01* +X967231Y166212D01* +X968082Y168266D01* +X969654Y169838D01* +X971708Y170689D01* +X973932Y170689D01* +X975986Y169838D01* +X977558Y168266D01* +X978409Y166212D01* +X978409Y163988D01* +X977558Y161934D01* +X975986Y160362D01* +X973932Y159511D01* +X971708Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X532288Y273811D02* +X532288Y273811D01* +X530234Y274662D01* +X528662Y276234D01* +X527811Y278288D01* +X527811Y280512D01* +X528662Y282566D01* +X530234Y284138D01* +X532288Y284989D01* +X534512Y284989D01* +X536566Y284138D01* +X538138Y282566D01* +X538989Y280512D01* +X538989Y278288D01* +X538138Y276234D01* +X536566Y274662D01* +X534512Y273811D01* +X532288Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X501688Y157320D02* +X501688Y157320D01* +X499634Y158171D01* +X498062Y159743D01* +X497211Y161797D01* +X497211Y164020D01* +X498062Y166075D01* +X499634Y167647D01* +X501688Y168498D01* +X503912Y168498D01* +X505966Y167647D01* +X507538Y166075D01* +X508389Y164020D01* +X508389Y161797D01* +X507538Y159743D01* +X505966Y158171D01* +X503912Y157320D01* +X501688Y157320D01* +G37* +%LPD*% +%LPC*% +G36* +X986948Y154431D02* +X986948Y154431D01* +X984894Y155282D01* +X983322Y156854D01* +X982471Y158908D01* +X982471Y161132D01* +X983322Y163186D01* +X984894Y164758D01* +X986948Y165609D01* +X989172Y165609D01* +X991226Y164758D01* +X992798Y163186D01* +X993649Y161132D01* +X993649Y158908D01* +X992798Y156854D01* +X991226Y155282D01* +X989172Y154431D01* +X986948Y154431D01* +G37* +%LPD*% +%LPC*% +G36* +X758348Y154431D02* +X758348Y154431D01* +X756294Y155282D01* +X754722Y156854D01* +X753871Y158908D01* +X753871Y161132D01* +X754722Y163186D01* +X756294Y164758D01* +X758348Y165609D01* +X760572Y165609D01* +X762626Y164758D01* +X764198Y163186D01* +X765049Y161132D01* +X765049Y158908D01* +X764198Y156854D01* +X762626Y155282D01* +X760572Y154431D01* +X758348Y154431D01* +G37* +%LPD*% +%LPC*% +G36* +X416025Y327151D02* +X416025Y327151D01* +X413971Y328002D01* +X412399Y329574D01* +X411548Y331628D01* +X411548Y333852D01* +X412399Y335906D01* +X413971Y337478D01* +X416025Y338329D01* +X418249Y338329D01* +X420303Y337478D01* +X421875Y335906D01* +X422726Y333852D01* +X422726Y331628D01* +X421875Y329574D01* +X420303Y328002D01* +X418249Y327151D01* +X416025Y327151D01* +G37* +%LPD*% +%LPC*% +G36* +X666908Y149325D02* +X666908Y149325D01* +X664854Y150176D01* +X663282Y151748D01* +X662431Y153802D01* +X662431Y156026D01* +X663282Y158080D01* +X664854Y159652D01* +X666908Y160503D01* +X669132Y160503D01* +X671186Y159652D01* +X672758Y158080D01* +X673609Y156026D01* +X673609Y153802D01* +X672758Y151748D01* +X671186Y150176D01* +X669132Y149325D01* +X666908Y149325D01* +G37* +%LPD*% +%LPC*% +G36* +X704287Y148630D02* +X704287Y148630D01* +X702233Y149481D01* +X700661Y151053D01* +X699810Y153107D01* +X699810Y155331D01* +X700661Y157385D01* +X702233Y158957D01* +X704287Y159808D01* +X706511Y159808D01* +X708565Y158957D01* +X710137Y157385D01* +X710988Y155331D01* +X710988Y153107D01* +X710137Y151053D01* +X708565Y149481D01* +X706511Y148630D01* +X704287Y148630D01* +G37* +%LPD*% +%LPC*% +G36* +X847248Y146811D02* +X847248Y146811D01* +X845194Y147662D01* +X843622Y149234D01* +X842771Y151288D01* +X842771Y153512D01* +X843622Y155566D01* +X845194Y157138D01* +X847248Y157989D01* +X849472Y157989D01* +X851526Y157138D01* +X853098Y155566D01* +X853949Y153512D01* +X853949Y151288D01* +X853098Y149234D01* +X851526Y147662D01* +X849472Y146811D01* +X847248Y146811D01* +G37* +%LPD*% +%LPC*% +G36* +X468788Y250951D02* +X468788Y250951D01* +X466734Y251802D01* +X465162Y253374D01* +X464311Y255428D01* +X464311Y257652D01* +X465162Y259706D01* +X466734Y261278D01* +X468788Y262129D01* +X471012Y262129D01* +X473066Y261278D01* +X474638Y259706D01* +X475489Y257652D01* +X475489Y255428D01* +X474638Y253374D01* +X473066Y251802D01* +X471012Y250951D01* +X468788Y250951D01* +G37* +%LPD*% +%LPC*% +G36* +X797803Y71796D02* +X797803Y71796D01* +X795749Y72647D01* +X794177Y74219D01* +X793326Y76273D01* +X793326Y78497D01* +X794177Y80551D01* +X795749Y82123D01* +X797803Y82974D01* +X800027Y82974D01* +X802081Y82123D01* +X803653Y80551D01* +X804504Y78497D01* +X804504Y76273D01* +X803653Y74219D01* +X802081Y72647D01* +X800027Y71796D01* +X797803Y71796D01* +G37* +%LPD*% +%LPC*% +G36* +X956468Y134111D02* +X956468Y134111D01* +X954414Y134962D01* +X952842Y136534D01* +X951991Y138588D01* +X951991Y140812D01* +X952842Y142866D01* +X954414Y144438D01* +X956468Y145289D01* +X958692Y145289D01* +X960746Y144438D01* +X962318Y142866D01* +X963169Y140812D01* +X963169Y138588D01* +X962318Y136534D01* +X960746Y134962D01* +X958692Y134111D01* +X956468Y134111D01* +G37* +%LPD*% +%LPC*% +G36* +X542448Y129031D02* +X542448Y129031D01* +X540394Y129882D01* +X538822Y131454D01* +X537971Y133508D01* +X537971Y135732D01* +X538822Y137786D01* +X540394Y139358D01* +X542448Y140209D01* +X544672Y140209D01* +X546726Y139358D01* +X548298Y137786D01* +X549149Y135732D01* +X549149Y133508D01* +X548298Y131454D01* +X546726Y129882D01* +X544672Y129031D01* +X542448Y129031D01* +G37* +%LPD*% +%LPC*% +G36* +X405288Y311911D02* +X405288Y311911D01* +X403234Y312762D01* +X401662Y314334D01* +X400811Y316388D01* +X400811Y318612D01* +X401662Y320666D01* +X403234Y322238D01* +X405288Y323089D01* +X407512Y323089D01* +X409566Y322238D01* +X411138Y320666D01* +X411989Y318612D01* +X411989Y316388D01* +X411138Y314334D01* +X409566Y312762D01* +X407512Y311911D01* +X405288Y311911D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751214Y131738D01* +X753268Y132589D01* +X755492Y132589D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X903633Y118871D02* +X903633Y118871D01* +X901579Y119722D01* +X900007Y121294D01* +X899156Y123348D01* +X899156Y125572D01* +X900007Y127626D01* +X901579Y129198D01* +X903633Y130049D01* +X905856Y130049D01* +X907910Y129198D01* +X909482Y127626D01* +X910333Y125572D01* +X910333Y123348D01* +X909482Y121294D01* +X907910Y119722D01* +X905856Y118871D01* +X903633Y118871D01* +G37* +%LPD*% +%LPC*% +G36* +X547528Y253491D02* +X547528Y253491D01* +X545474Y254342D01* +X543902Y255914D01* +X543051Y257968D01* +X543051Y260192D01* +X543902Y262246D01* +X545474Y263818D01* +X547528Y264669D01* +X549752Y264669D01* +X551806Y263818D01* +X553378Y262246D01* +X554229Y260192D01* +X554229Y257968D01* +X553378Y255914D01* +X551806Y254342D01* +X549752Y253491D01* +X547528Y253491D01* +G37* +%LPD*% +%LPC*% +G36* +X1221036Y116331D02* +X1221036Y116331D01* +X1218982Y117182D01* +X1217410Y118754D01* +X1216559Y120808D01* +X1216559Y123032D01* +X1217410Y125086D01* +X1218982Y126658D01* +X1221036Y127509D01* +X1223260Y127509D01* +X1225314Y126658D01* +X1226886Y125086D01* +X1227737Y123032D01* +X1227737Y120808D01* +X1226886Y118754D01* +X1225314Y117182D01* +X1223260Y116331D01* +X1221036Y116331D01* +G37* +%LPD*% +%LPC*% +G36* +X1075848Y93471D02* +X1075848Y93471D01* +X1073794Y94322D01* +X1072222Y95894D01* +X1071371Y97948D01* +X1071371Y100172D01* +X1072222Y102226D01* +X1073794Y103798D01* +X1075848Y104649D01* +X1078072Y104649D01* +X1080126Y103798D01* +X1081698Y102226D01* +X1082549Y100172D01* +X1082549Y97948D01* +X1081698Y95894D01* +X1080126Y94322D01* +X1078072Y93471D01* +X1075848Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X1004728Y289051D02* +X1004728Y289051D01* +X1002674Y289902D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009006Y289902D01* +X1006952Y289051D01* +X1004728Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X1246028Y111251D02* +X1246028Y111251D01* +X1243974Y112102D01* +X1242402Y113674D01* +X1241551Y115728D01* +X1241551Y117952D01* +X1242402Y120006D01* +X1243974Y121578D01* +X1246028Y122429D01* +X1248252Y122429D01* +X1250306Y121578D01* +X1251878Y120006D01* +X1252729Y117952D01* +X1252729Y115728D01* +X1251878Y113674D01* +X1250306Y112102D01* +X1248252Y111251D01* +X1246028Y111251D01* +G37* +%LPD*% +%LPC*% +G36* +X1055528Y111251D02* +X1055528Y111251D01* +X1053474Y112102D01* +X1051902Y113674D01* +X1051051Y115728D01* +X1051051Y117952D01* +X1051902Y120006D01* +X1053474Y121578D01* +X1055528Y122429D01* +X1057752Y122429D01* +X1059806Y121578D01* +X1061378Y120006D01* +X1062229Y117952D01* +X1062229Y115728D01* +X1061378Y113674D01* +X1059806Y112102D01* +X1057752Y111251D01* +X1055528Y111251D01* +G37* +%LPD*% +%LPC*% +G36* +X1220628Y93471D02* +X1220628Y93471D01* +X1218574Y94322D01* +X1217002Y95894D01* +X1216151Y97948D01* +X1216151Y100172D01* +X1217002Y102226D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X450843Y286346D02* +X450843Y286346D01* +X448789Y287197D01* +X447217Y288769D01* +X446366Y290823D01* +X446366Y293046D01* +X447217Y295100D01* +X448789Y296672D01* +X450843Y297523D01* +X453066Y297523D01* +X455120Y296672D01* +X456692Y295100D01* +X457543Y293046D01* +X457543Y290823D01* +X456692Y288769D01* +X455120Y287197D01* +X453066Y286346D01* +X450843Y286346D01* +G37* +%LPD*% +%LPC*% +G36* +X865028Y42671D02* +X865028Y42671D01* +X862974Y43522D01* +X861402Y45094D01* +X860551Y47148D01* +X860551Y49372D01* +X861402Y51426D01* +X862974Y52998D01* +X865028Y53849D01* +X867252Y53849D01* +X869306Y52998D01* +X870878Y51426D01* +X871729Y49372D01* +X871729Y47148D01* +X870878Y45094D01* +X869306Y43522D01* +X867252Y42671D01* +X865028Y42671D01* +G37* +%LPD*% +%LPC*% +G36* +X1185068Y98551D02* +X1185068Y98551D01* +X1183014Y99402D01* +X1181442Y100974D01* +X1180591Y103028D01* +X1180591Y105252D01* +X1181442Y107306D01* +X1183014Y108878D01* +X1185068Y109729D01* +X1187292Y109729D01* +X1189346Y108878D01* +X1190918Y107306D01* +X1191769Y105252D01* +X1191769Y103028D01* +X1190918Y100974D01* +X1189346Y99402D01* +X1187292Y98551D01* +X1185068Y98551D01* +G37* +%LPD*% +%LPC*% +G36* +X804068Y51561D02* +X804068Y51561D01* +X802014Y52412D01* +X800442Y53984D01* +X799591Y56038D01* +X799591Y58262D01* +X800442Y60316D01* +X802014Y61888D01* +X804068Y62739D01* +X806292Y62739D01* +X808346Y61888D01* +X809918Y60316D01* +X810769Y58262D01* +X810769Y56038D01* +X809918Y53984D01* +X808346Y52412D01* +X806292Y51561D01* +X804068Y51561D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y38950D01* +X402965Y38810D01* +X404828Y38205D01* +X406574Y37315D01* +X408159Y36164D01* +X409544Y34779D01* +X410695Y33194D01* +X411585Y31448D01* +X412190Y29585D01* +X412330Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y38950D01* +X974465Y38810D01* +X976328Y38205D01* +X978074Y37315D01* +X979659Y36164D01* +X981044Y34779D01* +X982195Y33194D01* +X983085Y31448D01* +X983690Y29585D01* +X983830Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y24639D02* +X973581Y24639D01* +X983830Y24639D01* +X983690Y23755D01* +X983085Y21892D01* +X982195Y20146D01* +X981044Y18561D01* +X979659Y17176D01* +X978074Y16025D01* +X976328Y15135D01* +X974465Y14530D01* +X973581Y14390D01* +X973581Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y24639D02* +X402081Y24639D01* +X412330Y24639D01* +X412190Y23755D01* +X411585Y21892D01* +X410695Y20146D01* +X409544Y18561D01* +X408159Y17176D01* +X406574Y16025D01* +X404828Y15135D01* +X402965Y14530D01* +X402081Y14390D01* +X402081Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X959270Y28701D02* +X959270Y28701D01* +X959410Y29585D01* +X960015Y31448D01* +X960905Y33194D01* +X962056Y34779D01* +X963441Y36164D01* +X965026Y37315D01* +X966772Y38205D01* +X968635Y38810D01* +X969519Y38950D01* +X969519Y28701D01* +X959270Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X387770Y28701D02* +X387770Y28701D01* +X387910Y29585D01* +X388515Y31448D01* +X389405Y33194D01* +X390556Y34779D01* +X391941Y36164D01* +X393526Y37315D01* +X395272Y38205D01* +X397135Y38810D01* +X398019Y38950D01* +X398019Y28701D01* +X387770Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X397135Y14530D02* +X397135Y14530D01* +X395272Y15135D01* +X393526Y16025D01* +X391941Y17176D01* +X390556Y18561D01* +X389405Y20146D01* +X388515Y21892D01* +X387910Y23755D01* +X387770Y24639D01* +X398019Y24639D01* +X398019Y14390D01* +X397135Y14530D01* +G37* +%LPD*% +%LPC*% +G36* +X968635Y14530D02* +X968635Y14530D01* +X966772Y15135D01* +X965026Y16025D01* +X963441Y17176D01* +X962056Y18561D01* +X960905Y20146D01* +X960015Y21892D01* +X959410Y23755D01* +X959270Y24639D01* +X969519Y24639D01* +X969519Y14390D01* +X968635Y14530D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y283768D01* +X261933Y283640D01* +X263750Y283049D01* +X265453Y282182D01* +X266999Y281058D01* +X268350Y279707D01* +X269473Y278161D01* +X270341Y276458D01* +X270931Y274641D01* +X271060Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y126268D01* +X261933Y126140D01* +X263750Y125549D01* +X265453Y124682D01* +X266999Y123558D01* +X268350Y122207D01* +X269473Y120661D01* +X270341Y118958D01* +X270931Y117141D01* +X271060Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X271060Y269767D01* +X270931Y268955D01* +X270341Y267137D01* +X269473Y265435D01* +X268350Y263889D01* +X266999Y262538D01* +X265453Y261414D01* +X263750Y260547D01* +X261933Y259956D01* +X261121Y259828D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y116329D02* +X247119Y116329D01* +X247248Y117141D01* +X247838Y118958D01* +X248706Y120661D01* +X249829Y122207D01* +X251180Y123558D01* +X252726Y124682D01* +X254429Y125549D01* +X256247Y126140D01* +X257058Y126268D01* +X257058Y116329D01* +X247119Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y112267D02* +X261121Y112267D01* +X271060Y112267D01* +X270931Y111455D01* +X270341Y109637D01* +X269473Y107935D01* +X268350Y106389D01* +X266999Y105038D01* +X265453Y103914D01* +X263750Y103047D01* +X261933Y102456D01* +X261121Y102328D01* +X261121Y112267D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y273829D02* +X247119Y273829D01* +X247248Y274641D01* +X247838Y276458D01* +X248706Y278161D01* +X249829Y279707D01* +X251180Y281058D01* +X252726Y282182D01* +X254429Y283049D01* +X256247Y283640D01* +X257058Y283768D01* +X257058Y273829D01* +X247119Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y259956D02* +X256247Y259956D01* +X254429Y260547D01* +X252726Y261414D01* +X251180Y262538D01* +X249829Y263889D01* +X248706Y265435D01* +X247838Y267137D01* +X247248Y268955D01* +X247119Y269767D01* +X257058Y269767D01* +X257058Y259828D01* +X256247Y259956D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y102456D02* +X256247Y102456D01* +X254429Y103047D01* +X252726Y103914D01* +X251180Y105038D01* +X249829Y106389D01* +X248706Y107935D01* +X247838Y109637D01* +X247248Y111455D01* +X247119Y112267D01* +X257058Y112267D01* +X257058Y102328D01* +X256247Y102456D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y22351D02* +X802131Y22351D01* +X802131Y29240D01* +X802767Y29113D01* +X804432Y28424D01* +X805930Y27423D01* +X807203Y26150D01* +X808204Y24652D01* +X808893Y22987D01* +X809020Y22351D01* +X802131Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X598931Y22351D02* +X598931Y22351D01* +X598931Y29240D01* +X599567Y29113D01* +X601232Y28424D01* +X602730Y27423D01* +X604003Y26150D01* +X605004Y24652D01* +X605693Y22987D01* +X605820Y22351D01* +X598931Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X624331Y22351D02* +X624331Y22351D01* +X624331Y29240D01* +X624967Y29113D01* +X626632Y28424D01* +X628130Y27423D01* +X629403Y26150D01* +X630404Y24652D01* +X631093Y22987D01* +X631220Y22351D01* +X624331Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X624331Y18289D02* +X624331Y18289D01* +X631220Y18289D01* +X631093Y17653D01* +X630404Y15988D01* +X629403Y14490D01* +X628130Y13217D01* +X626632Y12216D01* +X624967Y11527D01* +X624331Y11400D01* +X624331Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X587980Y22351D02* +X587980Y22351D01* +X588107Y22987D01* +X588796Y24652D01* +X589797Y26150D01* +X591070Y27423D01* +X592568Y28424D01* +X594233Y29113D01* +X594869Y29240D01* +X594869Y22351D01* +X587980Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X613380Y22351D02* +X613380Y22351D01* +X613507Y22987D01* +X614196Y24652D01* +X615197Y26150D01* +X616470Y27423D01* +X617968Y28424D01* +X619633Y29113D01* +X620269Y29240D01* +X620269Y22351D01* +X613380Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y18289D02* +X802131Y18289D01* +X809020Y18289D01* +X808893Y17653D01* +X808204Y15988D01* +X807203Y14490D01* +X805930Y13217D01* +X804432Y12216D01* +X802767Y11527D01* +X802131Y11400D01* +X802131Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X791180Y22351D02* +X791180Y22351D01* +X791307Y22987D01* +X791996Y24652D01* +X792997Y26150D01* +X794270Y27423D01* +X795768Y28424D01* +X797433Y29113D01* +X798069Y29240D01* +X798069Y22351D01* +X791180Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X598931Y18289D02* +X598931Y18289D01* +X605820Y18289D01* +X605693Y17653D01* +X605004Y15988D01* +X604003Y14490D01* +X602730Y13217D01* +X601232Y12216D01* +X599567Y11527D01* +X598931Y11400D01* +X598931Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X619633Y11527D02* +X619633Y11527D01* +X617968Y12216D01* +X616470Y13217D01* +X615197Y14490D01* +X614196Y15988D01* +X613507Y17653D01* +X613380Y18289D01* +X620269Y18289D01* +X620269Y11400D01* +X619633Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X797433Y11527D02* +X797433Y11527D01* +X795768Y12216D01* +X794270Y13217D01* +X792997Y14490D01* +X791996Y15988D01* +X791307Y17653D01* +X791180Y18289D01* +X798069Y18289D01* +X798069Y11400D01* +X797433Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X594233Y11527D02* +X594233Y11527D01* +X592568Y12216D01* +X591070Y13217D01* +X589797Y14490D01* +X588796Y15988D01* +X588107Y17653D01* +X587980Y18289D01* +X594869Y18289D01* +X594869Y11400D01* +X594233Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y264614D01* +X182102Y264521D01* +X183661Y263875D01* +X185063Y262938D01* +X186256Y261745D01* +X187194Y260342D01* +X187839Y258784D01* +X187932Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X171275Y258317D02* +X171275Y258317D01* +X171368Y258784D01* +X172014Y260342D01* +X172951Y261745D01* +X174144Y262938D01* +X175547Y263875D01* +X177105Y264521D01* +X177572Y264614D01* +X177572Y258317D01* +X171275Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X187932Y254254D01* +X187839Y253787D01* +X187194Y252228D01* +X186256Y250826D01* +X185063Y249633D01* +X183661Y248695D01* +X182102Y248050D01* +X181635Y247957D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X177105Y248050D02* +X177105Y248050D01* +X175547Y248695D01* +X174144Y249633D01* +X172951Y250826D01* +X172014Y252228D01* +X171368Y253787D01* +X171275Y254254D01* +X177572Y254254D01* +X177572Y247957D01* +X177105Y248050D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y293389D02* +X139619Y293389D01* +X139619Y298602D01* +X140277Y298471D01* +X141479Y297973D01* +X142560Y297250D01* +X143480Y296330D01* +X144203Y295249D01* +X144701Y294047D01* +X144832Y293389D01* +X139619Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y359389D02* +X139619Y359389D01* +X139619Y364602D01* +X140277Y364471D01* +X141479Y363973D01* +X142560Y363250D01* +X143480Y362330D01* +X144203Y361249D01* +X144701Y360047D01* +X144832Y359389D01* +X139619Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y356851D02* +X139619Y356851D01* +X144832Y356851D01* +X144701Y356193D01* +X144203Y354991D01* +X143480Y353910D01* +X142560Y352990D01* +X141479Y352267D01* +X140277Y351769D01* +X139619Y351638D01* +X139619Y356851D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y293389D02* +X131868Y293389D01* +X131999Y294047D01* +X132497Y295249D01* +X133220Y296330D01* +X134140Y297250D01* +X135221Y297973D01* +X136423Y298471D01* +X137081Y298602D01* +X137081Y293389D01* +X131868Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y359389D02* +X131868Y359389D01* +X131999Y360047D01* +X132497Y361249D01* +X133220Y362330D01* +X134140Y363250D01* +X135221Y363973D01* +X136423Y364471D01* +X137081Y364602D01* +X137081Y359389D01* +X131868Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y290851D02* +X139619Y290851D01* +X144832Y290851D01* +X144701Y290193D01* +X144203Y288991D01* +X143480Y287910D01* +X142560Y286990D01* +X141479Y286267D01* +X140277Y285769D01* +X139619Y285638D01* +X139619Y290851D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y285769D02* +X136423Y285769D01* +X135221Y286267D01* +X134140Y286990D01* +X133220Y287910D01* +X132497Y288991D01* +X131999Y290193D01* +X131868Y290851D01* +X137081Y290851D01* +X137081Y285638D01* +X136423Y285769D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y351769D02* +X136423Y351769D01* +X135221Y352267D01* +X134140Y352990D01* +X133220Y353910D01* +X132497Y354991D01* +X131999Y356193D01* +X131868Y356851D01* +X137081Y356851D01* +X137081Y351638D01* +X136423Y351769D01* +G37* +%LPD*% +%LPC*% +G36* +X800099Y20319D02* +X800099Y20319D01* +X800099Y20321D01* +X800101Y20321D01* +X800101Y20319D01* +X800099Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X622299Y20319D02* +X622299Y20319D01* +X622299Y20321D01* +X622301Y20321D01* +X622301Y20319D01* +X622299Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X596899Y20319D02* +X596899Y20319D01* +X596899Y20321D01* +X596901Y20321D01* +X596901Y20319D01* +X596899Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y114297D02* +X259089Y114297D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y114297D01* +X259089Y114297D01* +G37* +%LPD*% +%LPC*% +G36* +X400049Y26669D02* +X400049Y26669D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y26669D01* +X400049Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X971549Y26669D02* +X971549Y26669D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y26669D01* +X971549Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +D10* +X138350Y358120D03* +X138350Y292120D03* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +X292090Y237498D03* +D12* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D13* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D14* +X800100Y20320D03* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +X749300Y78740D03* +X723900Y78740D03* +D15* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +D16* +X180340Y365816D03* +D15* +X563880Y76200D03* +X464820Y228600D03* +X424180Y259080D03* +X462280Y147320D03* +X469900Y167640D03* +X500380Y134620D03* +X556260Y180340D03* +X1206500Y304800D03* +X1051560Y76200D03* +X863600Y58420D03* +X886460Y149860D03* +X939800Y246380D03* +X1010920Y139700D03* +X1079500Y111760D03* +X1127760Y198120D03* +D16* +X657860Y142240D03* +D15* +X861060Y289560D03* +X952500Y297180D03* +X952500Y281940D03* +X960120Y246380D03* +X1071880Y302260D03* +D16* +X177800Y309880D03* +D15* +X347980Y172720D03* +X497840Y269240D03* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +X993140Y294640D03* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +D16* +X370840Y342900D03* +X370840Y360680D03* +X226060Y358140D03* +D15* +X238760Y292292D03* +X276860Y312420D03* +X556260Y83820D03* +X731520Y281940D03* +X840740Y254000D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X617220Y254000D03* +X1165860Y205740D03* +X1125220Y281940D03* +X1254760Y152400D03* +X1158240Y109220D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1178560Y167640D03* +X1074420Y208280D03* +X1196340Y90480D03* +X868680Y83820D03* +X787400Y78740D03* +X789940Y57150D03* +X812800Y76200D03* +X508000Y78740D03* +X538480Y17780D03* +X485140Y17780D03* +X985520Y246380D03* +X1026160Y246380D03* +X1031240Y190500D03* +X1193800Y279400D03* +X518160Y239494D03* +X1206500Y203200D03* +X563880Y211610D03* +X502800Y162909D03* +X1023620Y175260D03* +X1206500Y241300D03* +X499816Y231140D03* +X1206500Y218440D03* +X490188Y231172D03* +X1206500Y279400D03* +X482600Y238760D03* +X1074420Y190500D03* +X566332Y202014D03* +X1074420Y177800D03* +X581660Y203200D03* +X1082040Y167640D03* +X553720Y203200D03* +X1165860Y276860D03* +D16* +X419100Y350596D03* +D15* +X1158240Y269240D03* +D16* +X431800Y353060D03* +D15* +X1222148Y121920D03* +X903220Y168660D03* +D16* +X198244Y333022D03* +X176511Y323831D03* +D15* +X993140Y175260D03* +X759460Y160020D03* +X972820Y165100D03* +X955040Y175260D03* +D16* +X875945Y34436D03* +D15* +X1003300Y187960D03* +X713740Y170180D03* +X1186180Y104140D03* +X904744Y124460D03* +X1150620Y167640D03* +X957580Y139700D03* +D16* +X867890Y27940D03* +D15* +X1084940Y252250D03* +X871894Y246380D03* +X443114Y186806D03* +X449580Y180340D03* +X449580Y205740D03* +X443114Y199274D03* +X1206500Y180340D03* +X1023620Y165100D03* +X406400Y317500D03* +X866140Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +X1221740Y99060D03* +X881380Y261620D03* +X1178560Y289560D03* +X1005840Y294640D03* +X754380Y127000D03* +D16* +X386080Y345440D03* +X226060Y347980D03* +D15* +X1247140Y116840D03* +D16* +X861060Y76200D03* +D15* +X805180Y57150D03* +X798915Y77385D03* +X417137Y332740D03* +X451955Y291935D03* +D16* +X190500Y342900D03* +D17* +X490605Y121876D03* +D15* +X563880Y279400D03* +X533400Y279400D03* +D16* +X528320Y81280D03* +D15* +X1094490Y254250D03* +X871220Y261620D03* +X988060Y160020D03* +X705399Y154219D03* +X1076960Y99060D03* +X1056640Y116840D03* +X1092560Y244630D03* +X548640Y259080D03* +D16* +X861850Y19530D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_inner_l3.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_inner_l3.gbr new file mode 100644 index 0000000000..5520069a81 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_inner_l3.gbr @@ -0,0 +1,4603 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INCopper Layer 2*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.812800*% +%ADD11C,1.204800*% +%ADD12C,1.920000*% +%ADD13C,1.981200*% +%ADD14C,1.320800*% +%ADD15C,0.711200*% +%ADD16C,0.203200*% +%ADD17C,0.756400*% +%ADD18C,0.956400*% + +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X969175Y78231D02* +X969175Y78231D01* +X964787Y80049D01* +X961429Y83407D01* +X959611Y87795D01* +X959611Y92545D01* +X961429Y96933D01* +X964787Y100291D01* +X969175Y102109D01* +X973925Y102109D01* +X978313Y100291D01* +X981671Y96933D01* +X983489Y92545D01* +X983489Y87795D01* +X981671Y83407D01* +X978313Y80049D01* +X973925Y78231D01* +X969175Y78231D01* +G37* +%LPD*% +%LPC*% +G36* +X461175Y46481D02* +X461175Y46481D01* +X456787Y48299D01* +X453429Y51657D01* +X451611Y56045D01* +X451611Y60795D01* +X453429Y65183D01* +X456787Y68541D01* +X461175Y70359D01* +X465925Y70359D01* +X470313Y68541D01* +X473671Y65183D01* +X475489Y60795D01* +X475489Y56045D01* +X473671Y51657D01* +X470313Y48299D01* +X465925Y46481D01* +X461175Y46481D01* +G37* +%LPD*% +%LPC*% +G36* +X397675Y78231D02* +X397675Y78231D01* +X393287Y80049D01* +X389929Y83407D01* +X388111Y87795D01* +X388111Y92545D01* +X389929Y96933D01* +X393287Y100291D01* +X397675Y102109D01* +X402425Y102109D01* +X406813Y100291D01* +X410171Y96933D01* +X411989Y92545D01* +X411989Y87795D01* +X410171Y83407D01* +X406813Y80049D01* +X402425Y78231D01* +X397675Y78231D01* +G37* +%LPD*% +%LPC*% +G36* +X905675Y46481D02* +X905675Y46481D01* +X901287Y48299D01* +X897929Y51657D01* +X896111Y56045D01* +X896111Y60795D01* +X897929Y65183D01* +X901287Y68541D01* +X905675Y70359D01* +X910425Y70359D01* +X914813Y68541D01* +X918171Y65183D01* +X919989Y60795D01* +X919989Y56045D01* +X918171Y51657D01* +X914813Y48299D01* +X910425Y46481D01* +X905675Y46481D01* +G37* +%LPD*% +%LPC*% +G36* +X448468Y174751D02* +X448468Y174751D01* +X446414Y175602D01* +X444842Y177174D01* +X443991Y179228D01* +X443991Y180202D01* +X443983Y180260D01* +X443985Y180318D01* +X443963Y180400D01* +X443951Y180483D01* +X443928Y180537D01* +X443913Y180593D01* +X443870Y180666D01* +X443835Y180743D01* +X443797Y180787D01* +X443768Y180838D01* +X443706Y180895D01* +X443652Y180960D01* +X443603Y180992D01* +X443560Y181032D01* +X443485Y181071D01* +X443415Y181117D01* +X443359Y181135D01* +X443307Y181162D01* +X443239Y181173D01* +X443144Y181203D01* +X443044Y181206D01* +X442976Y181217D01* +X442003Y181217D01* +X439948Y182068D01* +X438376Y183640D01* +X437525Y185694D01* +X437525Y187917D01* +X438376Y189972D01* +X439948Y191544D01* +X441296Y192102D01* +X441322Y192117D01* +X441350Y192126D01* +X441444Y192189D01* +X441541Y192247D01* +X441561Y192268D01* +X441586Y192284D01* +X441659Y192371D01* +X441736Y192453D01* +X441750Y192479D01* +X441769Y192502D01* +X441815Y192605D01* +X441867Y192706D01* +X441872Y192735D01* +X441884Y192762D01* +X441900Y192874D01* +X441922Y192985D01* +X441919Y193014D01* +X441923Y193043D01* +X441907Y193155D01* +X441897Y193268D01* +X441887Y193295D01* +X441882Y193324D01* +X441836Y193428D01* +X441795Y193533D01* +X441777Y193557D01* +X441765Y193584D01* +X441692Y193670D01* +X441624Y193760D01* +X441600Y193778D01* +X441581Y193800D01* +X441514Y193842D01* +X441396Y193930D01* +X441337Y193952D01* +X441296Y193978D01* +X439948Y194536D01* +X438376Y196108D01* +X437525Y198163D01* +X437525Y200386D01* +X438376Y202440D01* +X439948Y204012D01* +X442003Y204863D01* +X442976Y204863D01* +X443034Y204871D01* +X443092Y204870D01* +X443174Y204891D01* +X443258Y204903D01* +X443311Y204927D01* +X443367Y204941D01* +X443440Y204984D01* +X443517Y205019D01* +X443562Y205057D01* +X443612Y205087D01* +X443670Y205148D01* +X443734Y205203D01* +X443766Y205251D01* +X443806Y205294D01* +X443845Y205369D01* +X443892Y205439D01* +X443909Y205495D01* +X443936Y205547D01* +X443947Y205615D01* +X443977Y205710D01* +X443980Y205810D01* +X443991Y205878D01* +X443991Y206852D01* +X444842Y208906D01* +X446414Y210478D01* +X448468Y211329D01* +X450692Y211329D01* +X452746Y210478D01* +X454318Y208906D01* +X455169Y206852D01* +X455169Y204628D01* +X454318Y202574D01* +X452746Y201002D01* +X450692Y200151D01* +X449718Y200151D01* +X449660Y200143D01* +X449602Y200145D01* +X449520Y200123D01* +X449437Y200111D01* +X449383Y200088D01* +X449327Y200073D01* +X449254Y200030D01* +X449177Y199995D01* +X449133Y199957D01* +X449082Y199928D01* +X449025Y199866D01* +X448960Y199812D01* +X448928Y199763D01* +X448888Y199720D01* +X448849Y199645D01* +X448803Y199575D01* +X448785Y199519D01* +X448758Y199467D01* +X448747Y199399D01* +X448717Y199304D01* +X448714Y199204D01* +X448703Y199136D01* +X448703Y198163D01* +X447852Y196108D01* +X446280Y194536D01* +X444932Y193978D01* +X444907Y193963D01* +X444879Y193954D01* +X444785Y193891D01* +X444687Y193833D01* +X444667Y193812D01* +X444643Y193796D01* +X444570Y193709D01* +X444492Y193627D01* +X444479Y193601D01* +X444460Y193578D01* +X444414Y193475D01* +X444362Y193374D01* +X444356Y193345D01* +X444344Y193318D01* +X444329Y193206D01* +X444307Y193095D01* +X444309Y193066D01* +X444305Y193037D01* +X444322Y192925D01* +X444331Y192812D01* +X444342Y192785D01* +X444346Y192755D01* +X444393Y192652D01* +X444433Y192547D01* +X444451Y192523D01* +X444463Y192496D01* +X444536Y192410D01* +X444605Y192320D01* +X444628Y192302D01* +X444647Y192280D01* +X444714Y192238D01* +X444833Y192150D01* +X444891Y192128D01* +X444932Y192102D01* +X446280Y191544D01* +X447852Y189972D01* +X448703Y187917D01* +X448703Y186944D01* +X448711Y186886D01* +X448710Y186828D01* +X448731Y186746D01* +X448743Y186662D01* +X448767Y186609D01* +X448781Y186553D01* +X448824Y186480D01* +X448859Y186403D01* +X448897Y186358D01* +X448927Y186308D01* +X448988Y186250D01* +X449043Y186186D01* +X449091Y186154D01* +X449134Y186114D01* +X449209Y186075D01* +X449279Y186028D01* +X449335Y186011D01* +X449387Y185984D01* +X449455Y185973D01* +X449550Y185943D01* +X449650Y185940D01* +X449718Y185929D01* +X450692Y185929D01* +X452746Y185078D01* +X454318Y183506D01* +X455169Y181452D01* +X455169Y179228D01* +X454318Y177174D01* +X452746Y175602D01* +X450692Y174751D01* +X448468Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X860693Y13715D02* +X860693Y13715D01* +X858556Y14601D01* +X856921Y16236D01* +X856035Y18373D01* +X856035Y20687D01* +X856921Y22824D01* +X858556Y24459D01* +X860693Y25345D01* +X861152Y25345D01* +X861265Y25361D01* +X861380Y25371D01* +X861406Y25381D01* +X861433Y25385D01* +X861538Y25431D01* +X861645Y25473D01* +X861667Y25489D01* +X861693Y25501D01* +X861780Y25575D01* +X861872Y25644D01* +X861889Y25667D01* +X861910Y25684D01* +X861973Y25780D01* +X862042Y25872D01* +X862052Y25898D01* +X862067Y25921D01* +X862102Y26031D01* +X862142Y26138D01* +X862145Y26166D01* +X862153Y26192D01* +X862156Y26307D01* +X862165Y26421D01* +X862160Y26446D01* +X862160Y26476D01* +X862093Y26733D01* +X862090Y26749D01* +X862075Y26783D01* +X862075Y29097D01* +X862961Y31234D01* +X864596Y32869D01* +X866733Y33755D01* +X869115Y33755D01* +X869173Y33763D01* +X869232Y33761D01* +X869313Y33783D01* +X869397Y33795D01* +X869450Y33818D01* +X869507Y33833D01* +X869579Y33876D01* +X869656Y33911D01* +X869701Y33949D01* +X869751Y33978D01* +X869809Y34040D01* +X869873Y34094D01* +X869906Y34143D01* +X869946Y34186D01* +X869984Y34261D01* +X870031Y34331D01* +X870049Y34387D01* +X870075Y34439D01* +X870087Y34507D01* +X870117Y34602D01* +X870119Y34702D01* +X870131Y34770D01* +X870131Y35593D01* +X871016Y37730D01* +X872652Y39366D01* +X874789Y40251D01* +X877102Y40251D01* +X879239Y39366D01* +X880875Y37730D01* +X881760Y35593D01* +X881760Y33280D01* +X880875Y31142D01* +X879239Y29507D01* +X877102Y28622D01* +X874720Y28622D01* +X874662Y28613D01* +X874604Y28615D01* +X874522Y28594D01* +X874438Y28582D01* +X874385Y28558D01* +X874329Y28543D01* +X874256Y28500D01* +X874179Y28465D01* +X874134Y28428D01* +X874084Y28398D01* +X874026Y28336D01* +X873962Y28282D01* +X873930Y28233D01* +X873890Y28191D01* +X873851Y28115D01* +X873804Y28045D01* +X873787Y27989D01* +X873760Y27937D01* +X873749Y27869D01* +X873719Y27774D01* +X873716Y27674D01* +X873705Y27606D01* +X873705Y26783D01* +X872819Y24646D01* +X871184Y23011D01* +X869047Y22125D01* +X868588Y22125D01* +X868475Y22109D01* +X868360Y22099D01* +X868334Y22089D01* +X868307Y22085D01* +X868202Y22039D01* +X868095Y21997D01* +X868073Y21981D01* +X868047Y21969D01* +X867960Y21895D01* +X867868Y21826D01* +X867851Y21803D01* +X867830Y21786D01* +X867767Y21690D01* +X867698Y21598D01* +X867688Y21572D01* +X867673Y21549D01* +X867638Y21439D01* +X867598Y21332D01* +X867595Y21304D01* +X867587Y21278D01* +X867584Y21163D01* +X867575Y21049D01* +X867580Y21024D01* +X867580Y20994D01* +X867647Y20737D01* +X867650Y20721D01* +X867665Y20687D01* +X867665Y18373D01* +X866779Y16236D01* +X865144Y14601D01* +X863007Y13715D01* +X860693Y13715D01* +G37* +%LPD*% +%LPC*% +G36* +X565220Y196425D02* +X565220Y196425D01* +X563166Y197276D01* +X561594Y198848D01* +X560718Y200962D01* +X560703Y200987D01* +X560694Y201015D01* +X560631Y201110D01* +X560574Y201207D01* +X560552Y201227D01* +X560536Y201252D01* +X560449Y201325D01* +X560367Y201402D01* +X560341Y201416D01* +X560318Y201435D01* +X560215Y201481D01* +X560114Y201532D01* +X560086Y201538D01* +X560059Y201550D01* +X559946Y201566D01* +X559835Y201587D01* +X559806Y201585D01* +X559777Y201589D01* +X559665Y201573D01* +X559552Y201563D01* +X559525Y201552D01* +X559496Y201548D01* +X559393Y201502D01* +X559287Y201461D01* +X559263Y201443D01* +X559237Y201431D01* +X559151Y201358D01* +X559060Y201289D01* +X559043Y201266D01* +X559020Y201247D01* +X558979Y201180D01* +X558890Y201062D01* +X558868Y201003D01* +X558842Y200962D01* +X558458Y200034D01* +X556886Y198462D01* +X554832Y197611D01* +X552608Y197611D01* +X550554Y198462D01* +X548982Y200034D01* +X548131Y202088D01* +X548131Y204312D01* +X548982Y206366D01* +X550554Y207938D01* +X552608Y208789D01* +X554832Y208789D01* +X556886Y207938D01* +X557487Y207337D01* +X557555Y207286D01* +X557618Y207226D01* +X557668Y207200D01* +X557714Y207166D01* +X557794Y207136D01* +X557870Y207096D01* +X557926Y207085D01* +X557979Y207065D01* +X558065Y207058D01* +X558149Y207041D01* +X558206Y207046D01* +X558263Y207041D01* +X558347Y207058D01* +X558433Y207066D01* +X558486Y207086D01* +X558541Y207097D01* +X558618Y207137D01* +X558698Y207168D01* +X558743Y207202D01* +X558794Y207228D01* +X558856Y207287D01* +X558925Y207339D01* +X558959Y207385D01* +X559000Y207424D01* +X559043Y207498D01* +X559095Y207567D01* +X559115Y207620D01* +X559144Y207669D01* +X559165Y207753D01* +X559195Y207833D01* +X559200Y207890D01* +X559214Y207945D01* +X559211Y208031D01* +X559218Y208116D01* +X559207Y208165D01* +X559205Y208229D01* +X559160Y208367D01* +X559142Y208443D01* +X558291Y210498D01* +X558291Y212722D01* +X559142Y214776D01* +X560714Y216348D01* +X562768Y217199D01* +X564992Y217199D01* +X567046Y216348D01* +X568618Y214776D01* +X569469Y212722D01* +X569469Y210498D01* +X568541Y208258D01* +X568532Y208223D01* +X568495Y208140D01* +X568491Y208114D01* +X568482Y208089D01* +X568474Y207999D01* +X568470Y207982D01* +X568470Y207963D01* +X568456Y207859D01* +X568460Y207832D01* +X568457Y207806D01* +X568478Y207703D01* +X568478Y207698D01* +X568480Y207691D01* +X568497Y207577D01* +X568508Y207553D01* +X568513Y207527D01* +X568566Y207424D01* +X568614Y207318D01* +X568631Y207298D01* +X568643Y207274D01* +X568723Y207190D01* +X568798Y207102D01* +X568818Y207089D01* +X568839Y207068D01* +X569078Y206926D01* +X569083Y206924D01* +X569498Y206752D01* +X571070Y205180D01* +X571920Y203126D01* +X571920Y200902D01* +X571070Y198848D01* +X569498Y197276D01* +X567443Y196425D01* +X565220Y196425D01* +G37* +%LPD*% +%LPC*% +G36* +X1080928Y162051D02* +X1080928Y162051D01* +X1078874Y162902D01* +X1077302Y164474D01* +X1076451Y166528D01* +X1076451Y168752D01* +X1077302Y170806D01* +X1077344Y170848D01* +X1077396Y170917D01* +X1077455Y170979D01* +X1077481Y171030D01* +X1077515Y171075D01* +X1077546Y171155D01* +X1077585Y171232D01* +X1077596Y171288D01* +X1077616Y171341D01* +X1077624Y171426D01* +X1077640Y171511D01* +X1077635Y171567D01* +X1077640Y171624D01* +X1077623Y171708D01* +X1077616Y171794D01* +X1077595Y171847D01* +X1077584Y171903D01* +X1077544Y171979D01* +X1077514Y172059D01* +X1077479Y172105D01* +X1077453Y172155D01* +X1077394Y172217D01* +X1077342Y172286D01* +X1077297Y172320D01* +X1077257Y172361D01* +X1077183Y172405D01* +X1077114Y172456D01* +X1077061Y172476D01* +X1077012Y172505D01* +X1076929Y172526D01* +X1076848Y172557D01* +X1076792Y172561D01* +X1076737Y172575D01* +X1076651Y172572D01* +X1076565Y172579D01* +X1076517Y172568D01* +X1076452Y172566D01* +X1076314Y172521D01* +X1076238Y172504D01* +X1075532Y172211D01* +X1073308Y172211D01* +X1071254Y173062D01* +X1069682Y174634D01* +X1068831Y176688D01* +X1068831Y178912D01* +X1069682Y180966D01* +X1071254Y182538D01* +X1072882Y183212D01* +X1072907Y183227D01* +X1072935Y183236D01* +X1073029Y183299D01* +X1073127Y183357D01* +X1073147Y183378D01* +X1073171Y183394D01* +X1073244Y183481D01* +X1073322Y183563D01* +X1073335Y183589D01* +X1073354Y183612D01* +X1073400Y183715D01* +X1073452Y183816D01* +X1073458Y183845D01* +X1073470Y183872D01* +X1073485Y183984D01* +X1073507Y184095D01* +X1073504Y184124D01* +X1073508Y184153D01* +X1073492Y184265D01* +X1073483Y184378D01* +X1073472Y184405D01* +X1073468Y184435D01* +X1073421Y184538D01* +X1073380Y184643D01* +X1073363Y184667D01* +X1073351Y184694D01* +X1073277Y184780D01* +X1073209Y184870D01* +X1073185Y184888D01* +X1073166Y184910D01* +X1073100Y184952D01* +X1072981Y185040D01* +X1072923Y185062D01* +X1072882Y185088D01* +X1071254Y185762D01* +X1069682Y187334D01* +X1068831Y189388D01* +X1068831Y191612D01* +X1069682Y193666D01* +X1071254Y195238D01* +X1073308Y196089D01* +X1075532Y196089D01* +X1077586Y195238D01* +X1079158Y193666D01* +X1080009Y191612D01* +X1080009Y189388D01* +X1079158Y187334D01* +X1077586Y185762D01* +X1075958Y185088D01* +X1075933Y185073D01* +X1075905Y185064D01* +X1075811Y185001D01* +X1075713Y184943D01* +X1075693Y184922D01* +X1075669Y184906D01* +X1075596Y184819D01* +X1075518Y184737D01* +X1075505Y184711D01* +X1075486Y184688D01* +X1075440Y184585D01* +X1075388Y184484D01* +X1075382Y184455D01* +X1075370Y184428D01* +X1075355Y184316D01* +X1075333Y184205D01* +X1075336Y184176D01* +X1075332Y184147D01* +X1075348Y184035D01* +X1075357Y183922D01* +X1075368Y183895D01* +X1075372Y183866D01* +X1075419Y183762D01* +X1075459Y183657D01* +X1075477Y183633D01* +X1075489Y183606D01* +X1075563Y183520D01* +X1075631Y183430D01* +X1075655Y183412D01* +X1075674Y183390D01* +X1075740Y183348D01* +X1075859Y183260D01* +X1075917Y183238D01* +X1075958Y183212D01* +X1077586Y182538D01* +X1079158Y180966D01* +X1080009Y178912D01* +X1080009Y176688D01* +X1079158Y174634D01* +X1079116Y174592D01* +X1079064Y174523D01* +X1079005Y174461D01* +X1078979Y174410D01* +X1078945Y174365D01* +X1078914Y174285D01* +X1078875Y174208D01* +X1078864Y174152D01* +X1078844Y174099D01* +X1078836Y174014D01* +X1078820Y173929D01* +X1078825Y173873D01* +X1078820Y173816D01* +X1078837Y173732D01* +X1078844Y173646D01* +X1078865Y173593D01* +X1078876Y173537D01* +X1078916Y173461D01* +X1078946Y173381D01* +X1078981Y173335D01* +X1079007Y173285D01* +X1079066Y173223D01* +X1079118Y173154D01* +X1079163Y173120D01* +X1079203Y173079D01* +X1079277Y173035D01* +X1079346Y172984D01* +X1079399Y172964D01* +X1079448Y172935D01* +X1079531Y172914D01* +X1079612Y172883D01* +X1079668Y172879D01* +X1079723Y172865D01* +X1079809Y172868D01* +X1079895Y172861D01* +X1079943Y172872D01* +X1080008Y172874D01* +X1080146Y172919D01* +X1080222Y172936D01* +X1080928Y173229D01* +X1083152Y173229D01* +X1085206Y172378D01* +X1086778Y170806D01* +X1087629Y168752D01* +X1087629Y166528D01* +X1086778Y164474D01* +X1085206Y162902D01* +X1083152Y162051D01* +X1080928Y162051D01* +G37* +%LPD*% +%LPC*% +G36* +X498704Y225551D02* +X498704Y225551D01* +X496650Y226402D01* +X495704Y227348D01* +X495658Y227383D01* +X495617Y227426D01* +X495545Y227468D01* +X495477Y227519D01* +X495423Y227540D01* +X495372Y227569D01* +X495290Y227590D01* +X495212Y227620D01* +X495153Y227625D01* +X495097Y227639D01* +X495012Y227637D01* +X494928Y227644D01* +X494871Y227632D01* +X494812Y227630D01* +X494732Y227604D01* +X494649Y227588D01* +X494598Y227561D01* +X494542Y227543D01* +X494486Y227503D01* +X494397Y227457D01* +X494325Y227388D01* +X494269Y227348D01* +X493354Y226434D01* +X491300Y225583D01* +X489077Y225583D01* +X487023Y226434D01* +X485451Y228006D01* +X484600Y230060D01* +X484600Y232156D01* +X484592Y232214D01* +X484593Y232272D01* +X484572Y232354D01* +X484560Y232438D01* +X484536Y232491D01* +X484521Y232547D01* +X484478Y232620D01* +X484444Y232697D01* +X484406Y232742D01* +X484376Y232792D01* +X484314Y232850D01* +X484260Y232914D01* +X484211Y232946D01* +X484169Y232986D01* +X484094Y233025D01* +X484023Y233072D01* +X483968Y233089D01* +X483916Y233116D01* +X483847Y233127D01* +X483752Y233157D01* +X483653Y233160D01* +X483584Y233171D01* +X481488Y233171D01* +X479434Y234022D01* +X477862Y235594D01* +X477011Y237648D01* +X477011Y239872D01* +X477862Y241926D01* +X479434Y243498D01* +X481488Y244349D01* +X483712Y244349D01* +X485766Y243498D01* +X487338Y241926D01* +X488189Y239872D01* +X488189Y237776D01* +X488197Y237718D01* +X488195Y237659D01* +X488217Y237578D01* +X488229Y237494D01* +X488252Y237441D01* +X488267Y237384D01* +X488310Y237312D01* +X488345Y237235D01* +X488383Y237190D01* +X488412Y237140D01* +X488474Y237082D01* +X488528Y237018D01* +X488577Y236985D01* +X488620Y236945D01* +X488695Y236907D01* +X488765Y236860D01* +X488821Y236842D01* +X488873Y236816D01* +X488941Y236804D01* +X489036Y236774D01* +X489136Y236772D01* +X489204Y236760D01* +X491300Y236760D01* +X493354Y235909D01* +X494300Y234964D01* +X494347Y234928D01* +X494387Y234886D01* +X494460Y234843D01* +X494527Y234793D01* +X494582Y234772D01* +X494632Y234742D01* +X494714Y234721D01* +X494793Y234691D01* +X494851Y234687D01* +X494908Y234672D01* +X494992Y234675D01* +X495076Y234668D01* +X495134Y234679D01* +X495192Y234681D01* +X495272Y234707D01* +X495355Y234724D01* +X495407Y234751D01* +X495463Y234769D01* +X495519Y234809D01* +X495607Y234855D01* +X495680Y234923D01* +X495736Y234964D01* +X496650Y235878D01* +X498704Y236729D01* +X500928Y236729D01* +X502982Y235878D01* +X504554Y234306D01* +X505405Y232252D01* +X505405Y230028D01* +X504554Y227974D01* +X502982Y226402D01* +X500928Y225551D01* +X498704Y225551D01* +G37* +%LPD*% +%LPC*% +G36* +X1091448Y239041D02* +X1091448Y239041D01* +X1089394Y239892D01* +X1087822Y241464D01* +X1086971Y243518D01* +X1086971Y245646D01* +X1086963Y245704D01* +X1086964Y245762D01* +X1086943Y245844D01* +X1086931Y245928D01* +X1086907Y245981D01* +X1086892Y246037D01* +X1086849Y246110D01* +X1086815Y246187D01* +X1086777Y246232D01* +X1086747Y246282D01* +X1086686Y246340D01* +X1086631Y246404D01* +X1086583Y246436D01* +X1086540Y246476D01* +X1086465Y246515D01* +X1086395Y246562D01* +X1086339Y246579D01* +X1086287Y246606D01* +X1086219Y246617D01* +X1086123Y246647D01* +X1086024Y246650D01* +X1085956Y246661D01* +X1083828Y246661D01* +X1081774Y247512D01* +X1080202Y249084D01* +X1079351Y251138D01* +X1079351Y253362D01* +X1080202Y255416D01* +X1081774Y256988D01* +X1083828Y257839D01* +X1086051Y257839D01* +X1088132Y256977D01* +X1088161Y256955D01* +X1088249Y256881D01* +X1088275Y256869D01* +X1088297Y256853D01* +X1088404Y256812D01* +X1088509Y256765D01* +X1088537Y256761D01* +X1088563Y256752D01* +X1088677Y256742D01* +X1088791Y256726D01* +X1088818Y256730D01* +X1088846Y256728D01* +X1088958Y256751D01* +X1089072Y256767D01* +X1089097Y256778D01* +X1089125Y256784D01* +X1089226Y256837D01* +X1089331Y256884D01* +X1089352Y256902D01* +X1089377Y256915D01* +X1089460Y256994D01* +X1089548Y257068D01* +X1089561Y257090D01* +X1089583Y257111D01* +X1089718Y257341D01* +X1089726Y257353D01* +X1089752Y257416D01* +X1091324Y258988D01* +X1093378Y259839D01* +X1095601Y259839D01* +X1097655Y258988D01* +X1099227Y257416D01* +X1100078Y255362D01* +X1100078Y253139D01* +X1099227Y251085D01* +X1097655Y249513D01* +X1097592Y249486D01* +X1097493Y249428D01* +X1097391Y249375D01* +X1097371Y249356D01* +X1097347Y249342D01* +X1097268Y249258D01* +X1097185Y249179D01* +X1097171Y249155D01* +X1097152Y249135D01* +X1097100Y249033D01* +X1097041Y248934D01* +X1097035Y248907D01* +X1097022Y248883D01* +X1097000Y248770D01* +X1096971Y248659D01* +X1096972Y248631D01* +X1096967Y248604D01* +X1096977Y248489D01* +X1096980Y248374D01* +X1096989Y248348D01* +X1096991Y248320D01* +X1097033Y248213D01* +X1097068Y248104D01* +X1097082Y248084D01* +X1097093Y248055D01* +X1097254Y247842D01* +X1097263Y247831D01* +X1097297Y247796D01* +X1098148Y245742D01* +X1098148Y243518D01* +X1097297Y241464D01* +X1095725Y239892D01* +X1093671Y239041D01* +X1091448Y239041D01* +G37* +%LPD*% +%LPC*% +G36* +X569782Y11683D02* +X569782Y11683D01* +X566608Y12998D01* +X564178Y15428D01* +X562863Y18602D01* +X562863Y22038D01* +X564178Y25212D01* +X566608Y27642D01* +X569782Y28957D01* +X573218Y28957D01* +X576392Y27642D01* +X578822Y25212D01* +X580137Y22038D01* +X580137Y18602D01* +X578822Y15428D01* +X576392Y12998D01* +X573218Y11683D01* +X569782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X722182Y11683D02* +X722182Y11683D01* +X719008Y12998D01* +X716578Y15428D01* +X715263Y18602D01* +X715263Y22038D01* +X716578Y25212D01* +X719008Y27642D01* +X722182Y28957D01* +X725618Y28957D01* +X728792Y27642D01* +X731222Y25212D01* +X732537Y22038D01* +X732537Y18602D01* +X731222Y15428D01* +X728792Y12998D01* +X725618Y11683D01* +X722182Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X722182Y70103D02* +X722182Y70103D01* +X719008Y71418D01* +X716578Y73848D01* +X715263Y77022D01* +X715263Y80458D01* +X716578Y83632D01* +X719008Y86062D01* +X722182Y87377D01* +X725618Y87377D01* +X728792Y86062D01* +X731222Y83632D01* +X732537Y80458D01* +X732537Y77022D01* +X731222Y73848D01* +X728792Y71418D01* +X725618Y70103D01* +X722182Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y70103D02* +X747582Y70103D01* +X744408Y71418D01* +X741978Y73848D01* +X740663Y77022D01* +X740663Y80458D01* +X741978Y83632D01* +X744408Y86062D01* +X747582Y87377D01* +X751018Y87377D01* +X754192Y86062D01* +X756622Y83632D01* +X757937Y80458D01* +X757937Y77022D01* +X756622Y73848D01* +X754192Y71418D01* +X751018Y70103D01* +X747582Y70103D01* +G37* +%LPD*% +%LPC*% +G36* +X772982Y11683D02* +X772982Y11683D01* +X769808Y12998D01* +X767378Y15428D01* +X766063Y18602D01* +X766063Y22038D01* +X767378Y25212D01* +X769808Y27642D01* +X772982Y28957D01* +X776418Y28957D01* +X779592Y27642D01* +X782022Y25212D01* +X783337Y22038D01* +X783337Y18602D01* +X782022Y15428D01* +X779592Y12998D01* +X776418Y11683D01* +X772982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X645982Y11683D02* +X645982Y11683D01* +X642808Y12998D01* +X640378Y15428D01* +X639063Y18602D01* +X639063Y22038D01* +X640378Y25212D01* +X642808Y27642D01* +X645982Y28957D01* +X649418Y28957D01* +X652592Y27642D01* +X655022Y25212D01* +X656337Y22038D01* +X656337Y18602D01* +X655022Y15428D01* +X652592Y12998D01* +X649418Y11683D01* +X645982Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X671382Y11683D02* +X671382Y11683D01* +X668208Y12998D01* +X665778Y15428D01* +X664463Y18602D01* +X664463Y22038D01* +X665778Y25212D01* +X668208Y27642D01* +X671382Y28957D01* +X674818Y28957D01* +X677992Y27642D01* +X680422Y25212D01* +X681737Y22038D01* +X681737Y18602D01* +X680422Y15428D01* +X677992Y12998D01* +X674818Y11683D01* +X671382Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X747582Y11683D02* +X747582Y11683D01* +X744408Y12998D01* +X741978Y15428D01* +X740663Y18602D01* +X740663Y22038D01* +X741978Y25212D01* +X744408Y27642D01* +X747582Y28957D01* +X751018Y28957D01* +X754192Y27642D01* +X756622Y25212D01* +X757937Y22038D01* +X757937Y18602D01* +X756622Y15428D01* +X754192Y12998D01* +X751018Y11683D01* +X747582Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X696782Y11683D02* +X696782Y11683D01* +X693608Y12998D01* +X691178Y15428D01* +X689863Y18602D01* +X689863Y22038D01* +X691178Y25212D01* +X693608Y27642D01* +X696782Y28957D01* +X700218Y28957D01* +X703392Y27642D01* +X705822Y25212D01* +X707137Y22038D01* +X707137Y18602D01* +X705822Y15428D01* +X703392Y12998D01* +X700218Y11683D01* +X696782Y11683D01* +G37* +%LPD*% +%LPC*% +G36* +X417943Y344781D02* +X417943Y344781D01* +X415806Y345667D01* +X414171Y347302D01* +X413285Y349439D01* +X413285Y351753D01* +X414171Y353890D01* +X415806Y355525D01* +X417943Y356411D01* +X420257Y356411D01* +X422394Y355525D01* +X424029Y353890D01* +X424032Y353884D01* +X424076Y353810D01* +X424111Y353731D01* +X424148Y353688D01* +X424176Y353639D01* +X424239Y353580D01* +X424295Y353514D01* +X424342Y353483D01* +X424383Y353444D01* +X424460Y353404D01* +X424531Y353357D01* +X424585Y353339D01* +X424636Y353313D01* +X424720Y353297D01* +X424802Y353271D01* +X424859Y353269D01* +X424915Y353258D01* +X425000Y353266D01* +X425086Y353264D01* +X425141Y353278D01* +X425198Y353283D01* +X425278Y353314D01* +X425361Y353335D01* +X425410Y353364D01* +X425463Y353385D01* +X425532Y353437D01* +X425606Y353481D01* +X425645Y353522D01* +X425690Y353556D01* +X425742Y353625D01* +X425800Y353688D01* +X425826Y353739D01* +X425860Y353784D01* +X425891Y353864D01* +X425930Y353941D01* +X425938Y353990D01* +X425961Y354050D01* +X425971Y354183D01* +X426871Y356354D01* +X428506Y357989D01* +X430643Y358875D01* +X432957Y358875D01* +X435094Y357989D01* +X436729Y356354D01* +X437615Y354217D01* +X437615Y351903D01* +X436729Y349766D01* +X435094Y348131D01* +X432957Y347245D01* +X430643Y347245D01* +X428506Y348131D01* +X426871Y349766D01* +X426868Y349772D01* +X426824Y349846D01* +X426789Y349925D01* +X426752Y349968D01* +X426724Y350017D01* +X426661Y350076D01* +X426605Y350142D01* +X426558Y350173D01* +X426517Y350212D01* +X426440Y350252D01* +X426369Y350299D01* +X426315Y350317D01* +X426264Y350343D01* +X426180Y350359D01* +X426098Y350385D01* +X426041Y350387D01* +X425985Y350398D01* +X425900Y350390D01* +X425814Y350392D01* +X425759Y350378D01* +X425702Y350373D01* +X425622Y350342D01* +X425539Y350321D01* +X425490Y350292D01* +X425437Y350271D01* +X425368Y350219D01* +X425294Y350175D01* +X425255Y350134D01* +X425210Y350100D01* +X425158Y350031D01* +X425100Y349968D01* +X425074Y349917D01* +X425040Y349872D01* +X425009Y349792D01* +X424970Y349715D01* +X424962Y349666D01* +X424939Y349606D01* +X424929Y349473D01* +X424029Y347302D01* +X422394Y345667D01* +X420257Y344781D01* +X417943Y344781D01* +G37* +%LPD*% +%LPC*% +G36* +X197087Y327207D02* +X197087Y327207D01* +X194950Y328093D01* +X193315Y329728D01* +X192429Y331865D01* +X192429Y334179D01* +X193105Y335809D01* +X193112Y335838D01* +X193126Y335864D01* +X193147Y335975D01* +X193176Y336084D01* +X193175Y336114D01* +X193181Y336143D01* +X193171Y336256D01* +X193168Y336369D01* +X193159Y336397D01* +X193156Y336426D01* +X193115Y336532D01* +X193081Y336639D01* +X193065Y336664D01* +X193054Y336691D01* +X192986Y336781D01* +X192923Y336876D01* +X192900Y336894D01* +X192882Y336918D01* +X192792Y336986D01* +X192705Y337059D01* +X192678Y337070D01* +X192655Y337088D01* +X192549Y337128D01* +X192445Y337174D01* +X192416Y337178D01* +X192389Y337188D01* +X192276Y337197D01* +X192164Y337213D01* +X192135Y337209D01* +X192105Y337211D01* +X192029Y337193D01* +X191882Y337172D01* +X191825Y337147D01* +X191778Y337136D01* +X191657Y337085D01* +X189343Y337085D01* +X187206Y337971D01* +X185571Y339606D01* +X184685Y341743D01* +X184685Y344057D01* +X185571Y346194D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195639Y340113D01* +X195632Y340084D01* +X195619Y340058D01* +X195597Y339947D01* +X195568Y339838D01* +X195569Y339808D01* +X195564Y339779D01* +X195573Y339667D01* +X195577Y339553D01* +X195585Y339525D01* +X195588Y339496D01* +X195629Y339391D01* +X195663Y339283D01* +X195680Y339258D01* +X195690Y339231D01* +X195758Y339141D01* +X195821Y339046D01* +X195844Y339028D01* +X195862Y339004D01* +X195952Y338936D01* +X196039Y338864D01* +X196066Y338852D01* +X196089Y338834D01* +X196195Y338794D01* +X196299Y338748D01* +X196328Y338744D01* +X196355Y338734D01* +X196468Y338725D01* +X196580Y338709D01* +X196609Y338713D01* +X196639Y338711D01* +X196715Y338729D01* +X196862Y338750D01* +X196919Y338776D01* +X196966Y338786D01* +X197087Y338837D01* +X199401Y338837D01* +X201538Y337951D01* +X203174Y336316D01* +X204059Y334179D01* +X204059Y331865D01* +X203174Y329728D01* +X201538Y328093D01* +X199401Y327207D01* +X197087Y327207D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y178641D02* +X290487Y178641D01* +X287526Y179868D01* +X285259Y182134D01* +X284033Y185095D01* +X284033Y188300D01* +X285259Y191262D01* +X287526Y193528D01* +X290487Y194755D01* +X293692Y194755D01* +X296653Y193528D01* +X298920Y191262D01* +X300146Y188300D01* +X300146Y185095D01* +X298920Y182134D01* +X296653Y179868D01* +X293692Y178641D01* +X290487Y178641D01* +G37* +%LPD*% +%LPC*% +G36* +X193201Y121729D02* +X193201Y121729D01* +X190240Y122955D01* +X187974Y125221D01* +X186747Y128183D01* +X186747Y131388D01* +X187974Y134349D01* +X190240Y136615D01* +X193201Y137842D01* +X196406Y137842D01* +X199368Y136615D01* +X201634Y134349D01* +X202860Y131388D01* +X202860Y128183D01* +X201634Y125221D01* +X199368Y122955D01* +X196406Y121729D01* +X193201Y121729D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y216741D02* +X315887Y216741D01* +X312926Y217968D01* +X310659Y220234D01* +X309433Y223195D01* +X309433Y226400D01* +X310659Y229362D01* +X312926Y231628D01* +X315887Y232855D01* +X319092Y232855D01* +X322053Y231628D01* +X324320Y229362D01* +X325546Y226400D01* +X325546Y223195D01* +X324320Y220234D01* +X322053Y217968D01* +X319092Y216741D01* +X315887Y216741D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y140541D02* +X315887Y140541D01* +X312926Y141768D01* +X310659Y144034D01* +X309433Y146995D01* +X309433Y150200D01* +X310659Y153162D01* +X312926Y155428D01* +X315887Y156655D01* +X319092Y156655D01* +X322053Y155428D01* +X324320Y153162D01* +X325546Y150200D01* +X325546Y146995D01* +X324320Y144034D01* +X322053Y141768D01* +X319092Y140541D01* +X315887Y140541D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y191341D02* +X315887Y191341D01* +X312926Y192568D01* +X310659Y194834D01* +X309433Y197795D01* +X309433Y201000D01* +X310659Y203962D01* +X312926Y206228D01* +X315887Y207455D01* +X319092Y207455D01* +X322053Y206228D01* +X324320Y203962D01* +X325546Y201000D01* +X325546Y197795D01* +X324320Y194834D01* +X322053Y192568D01* +X319092Y191341D01* +X315887Y191341D01* +G37* +%LPD*% +%LPC*% +G36* +X178006Y147147D02* +X178006Y147147D01* +X175045Y148374D01* +X172779Y150640D01* +X171552Y153601D01* +X171552Y156806D01* +X172779Y159768D01* +X175045Y162034D01* +X178006Y163261D01* +X181211Y163261D01* +X184173Y162034D01* +X186439Y159768D01* +X187665Y156806D01* +X187665Y153601D01* +X186439Y150640D01* +X184173Y148374D01* +X181211Y147147D01* +X178006Y147147D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y153241D02* +X290487Y153241D01* +X287526Y154468D01* +X285259Y156734D01* +X284033Y159695D01* +X284033Y162900D01* +X285259Y165862D01* +X287526Y168128D01* +X290487Y169355D01* +X293692Y169355D01* +X296653Y168128D01* +X298920Y165862D01* +X300146Y162900D01* +X300146Y159695D01* +X298920Y156734D01* +X296653Y154468D01* +X293692Y153241D01* +X290487Y153241D01* +G37* +%LPD*% +%LPC*% +G36* +X193206Y222847D02* +X193206Y222847D01* +X190245Y224074D01* +X187979Y226340D01* +X186752Y229301D01* +X186752Y232506D01* +X187979Y235468D01* +X190245Y237734D01* +X193206Y238961D01* +X196411Y238961D01* +X199373Y237734D01* +X201639Y235468D01* +X202865Y232506D01* +X202865Y229301D01* +X201639Y226340D01* +X199373Y224074D01* +X196411Y222847D01* +X193206Y222847D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y204041D02* +X290487Y204041D01* +X287526Y205268D01* +X285259Y207534D01* +X284033Y210495D01* +X284033Y213700D01* +X285259Y216662D01* +X287526Y218928D01* +X290487Y220155D01* +X293692Y220155D01* +X296653Y218928D01* +X298920Y216662D01* +X300146Y213700D01* +X300146Y210495D01* +X298920Y207534D01* +X296653Y205268D01* +X293692Y204041D01* +X290487Y204041D01* +G37* +%LPD*% +%LPC*% +G36* +X315887Y165941D02* +X315887Y165941D01* +X312926Y167168D01* +X310659Y169434D01* +X309433Y172395D01* +X309433Y175600D01* +X310659Y178562D01* +X312926Y180828D01* +X315887Y182055D01* +X319092Y182055D01* +X322053Y180828D01* +X324320Y178562D01* +X325546Y175600D01* +X325546Y172395D01* +X324320Y169434D01* +X322053Y167168D01* +X319092Y165941D01* +X315887Y165941D01* +G37* +%LPD*% +%LPC*% +G36* +X290487Y229441D02* +X290487Y229441D01* +X287526Y230668D01* +X285259Y232934D01* +X284033Y235895D01* +X284033Y239100D01* +X285259Y242062D01* +X287526Y244328D01* +X290487Y245555D01* +X293692Y245555D01* +X296653Y244328D01* +X298920Y242062D01* +X300146Y239100D01* +X300146Y235895D01* +X298920Y232934D01* +X296653Y230668D01* +X293692Y229441D01* +X290487Y229441D01* +G37* +%LPD*% +%LPC*% +G36* +X1192688Y273811D02* +X1192688Y273811D01* +X1190634Y274662D01* +X1189062Y276234D01* +X1188211Y278288D01* +X1188211Y280512D01* +X1189062Y282566D01* +X1190634Y284138D01* +X1192688Y284989D01* +X1194912Y284989D01* +X1196966Y284138D01* +X1198538Y282566D01* +X1199212Y280938D01* +X1199227Y280913D01* +X1199236Y280885D01* +X1199299Y280791D01* +X1199357Y280693D01* +X1199378Y280673D01* +X1199394Y280649D01* +X1199481Y280576D01* +X1199563Y280498D01* +X1199589Y280485D01* +X1199612Y280466D01* +X1199715Y280420D01* +X1199816Y280368D01* +X1199845Y280362D01* +X1199872Y280350D01* +X1199984Y280335D01* +X1200095Y280313D01* +X1200124Y280316D01* +X1200153Y280312D01* +X1200265Y280328D01* +X1200378Y280337D01* +X1200405Y280348D01* +X1200434Y280352D01* +X1200538Y280399D01* +X1200643Y280439D01* +X1200667Y280457D01* +X1200694Y280469D01* +X1200780Y280543D01* +X1200870Y280611D01* +X1200888Y280635D01* +X1200910Y280654D01* +X1200952Y280720D01* +X1201040Y280839D01* +X1201062Y280897D01* +X1201088Y280938D01* +X1201762Y282566D01* +X1203334Y284138D01* +X1205388Y284989D01* +X1207612Y284989D01* +X1209666Y284138D01* +X1211238Y282566D01* +X1212089Y280512D01* +X1212089Y278288D01* +X1211238Y276234D01* +X1209666Y274662D01* +X1207612Y273811D01* +X1205388Y273811D01* +X1203334Y274662D01* +X1201762Y276234D01* +X1201088Y277862D01* +X1201073Y277887D01* +X1201064Y277915D01* +X1201001Y278009D01* +X1200943Y278107D01* +X1200922Y278127D01* +X1200906Y278151D01* +X1200819Y278224D01* +X1200737Y278302D01* +X1200711Y278315D01* +X1200688Y278334D01* +X1200585Y278380D01* +X1200484Y278432D01* +X1200455Y278438D01* +X1200428Y278450D01* +X1200316Y278465D01* +X1200205Y278487D01* +X1200176Y278484D01* +X1200147Y278488D01* +X1200035Y278472D01* +X1199922Y278463D01* +X1199895Y278452D01* +X1199865Y278448D01* +X1199762Y278401D01* +X1199657Y278360D01* +X1199633Y278343D01* +X1199606Y278331D01* +X1199520Y278257D01* +X1199430Y278189D01* +X1199412Y278165D01* +X1199390Y278146D01* +X1199348Y278080D01* +X1199260Y277961D01* +X1199238Y277903D01* +X1199212Y277862D01* +X1198538Y276234D01* +X1196966Y274662D01* +X1194912Y273811D01* +X1192688Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X1157128Y263651D02* +X1157128Y263651D01* +X1155074Y264502D01* +X1153502Y266074D01* +X1152651Y268128D01* +X1152651Y270352D01* +X1153502Y272406D01* +X1155074Y273978D01* +X1157128Y274829D01* +X1159256Y274829D01* +X1159314Y274837D01* +X1159372Y274835D01* +X1159454Y274857D01* +X1159538Y274869D01* +X1159591Y274892D01* +X1159647Y274907D01* +X1159720Y274950D01* +X1159797Y274985D01* +X1159842Y275023D01* +X1159892Y275052D01* +X1159950Y275114D01* +X1160014Y275168D01* +X1160046Y275217D01* +X1160086Y275260D01* +X1160125Y275335D01* +X1160172Y275405D01* +X1160189Y275461D01* +X1160216Y275513D01* +X1160227Y275581D01* +X1160257Y275676D01* +X1160260Y275776D01* +X1160271Y275844D01* +X1160271Y277972D01* +X1161122Y280026D01* +X1162694Y281598D01* +X1164748Y282449D01* +X1166972Y282449D01* +X1169026Y281598D01* +X1170598Y280026D01* +X1171449Y277972D01* +X1171449Y275748D01* +X1170598Y273694D01* +X1169026Y272122D01* +X1166972Y271271D01* +X1164844Y271271D01* +X1164786Y271263D01* +X1164728Y271265D01* +X1164646Y271243D01* +X1164562Y271231D01* +X1164509Y271208D01* +X1164453Y271193D01* +X1164380Y271150D01* +X1164303Y271115D01* +X1164258Y271077D01* +X1164208Y271048D01* +X1164150Y270986D01* +X1164086Y270932D01* +X1164054Y270883D01* +X1164014Y270840D01* +X1163975Y270765D01* +X1163928Y270695D01* +X1163911Y270639D01* +X1163884Y270587D01* +X1163873Y270519D01* +X1163843Y270424D01* +X1163840Y270324D01* +X1163829Y270256D01* +X1163829Y268128D01* +X1162978Y266074D01* +X1161406Y264502D01* +X1159352Y263651D01* +X1157128Y263651D01* +G37* +%LPD*% +%LPC*% +G36* +X1022508Y159511D02* +X1022508Y159511D01* +X1020454Y160362D01* +X1018882Y161934D01* +X1018031Y163988D01* +X1018031Y166212D01* +X1018882Y168266D01* +X1020078Y169462D01* +X1020114Y169509D01* +X1020156Y169549D01* +X1020199Y169622D01* +X1020249Y169689D01* +X1020270Y169744D01* +X1020300Y169794D01* +X1020321Y169876D01* +X1020351Y169955D01* +X1020355Y170013D01* +X1020370Y170070D01* +X1020367Y170154D01* +X1020374Y170238D01* +X1020363Y170296D01* +X1020361Y170354D01* +X1020335Y170434D01* +X1020318Y170517D01* +X1020291Y170569D01* +X1020273Y170625D01* +X1020233Y170681D01* +X1020187Y170769D01* +X1020119Y170842D01* +X1020078Y170898D01* +X1018882Y172094D01* +X1018031Y174148D01* +X1018031Y176372D01* +X1018882Y178426D01* +X1020454Y179998D01* +X1022508Y180849D01* +X1024732Y180849D01* +X1026786Y179998D01* +X1028358Y178426D01* +X1029209Y176372D01* +X1029209Y174148D01* +X1028358Y172094D01* +X1027162Y170898D01* +X1027126Y170851D01* +X1027084Y170811D01* +X1027041Y170738D01* +X1026991Y170671D01* +X1026970Y170616D01* +X1026940Y170566D01* +X1026920Y170484D01* +X1026889Y170405D01* +X1026885Y170347D01* +X1026870Y170290D01* +X1026873Y170206D01* +X1026866Y170122D01* +X1026877Y170064D01* +X1026879Y170006D01* +X1026905Y169926D01* +X1026922Y169843D01* +X1026949Y169791D01* +X1026967Y169735D01* +X1027007Y169679D01* +X1027053Y169591D01* +X1027122Y169518D01* +X1027162Y169462D01* +X1028358Y168266D01* +X1029209Y166212D01* +X1029209Y163988D01* +X1028358Y161934D01* +X1026786Y160362D01* +X1024732Y159511D01* +X1022508Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X870108Y256031D02* +X870108Y256031D01* +X868054Y256882D01* +X866482Y258454D01* +X865631Y260508D01* +X865631Y262732D01* +X866482Y264786D01* +X868054Y266358D01* +X870108Y267209D01* +X872332Y267209D01* +X874386Y266358D01* +X875582Y265162D01* +X875629Y265126D01* +X875669Y265084D01* +X875742Y265041D01* +X875809Y264991D01* +X875864Y264970D01* +X875914Y264940D01* +X875996Y264920D01* +X876075Y264889D01* +X876133Y264885D01* +X876190Y264870D01* +X876274Y264873D01* +X876358Y264866D01* +X876416Y264877D01* +X876474Y264879D01* +X876554Y264905D01* +X876637Y264922D01* +X876689Y264949D01* +X876745Y264967D01* +X876801Y265007D01* +X876889Y265053D01* +X876962Y265122D01* +X877018Y265162D01* +X878214Y266358D01* +X880268Y267209D01* +X882492Y267209D01* +X884546Y266358D01* +X886118Y264786D01* +X886969Y262732D01* +X886969Y260508D01* +X886118Y258454D01* +X884546Y256882D01* +X882492Y256031D01* +X880268Y256031D01* +X878214Y256882D01* +X877018Y258078D01* +X876971Y258114D01* +X876931Y258156D01* +X876858Y258199D01* +X876791Y258249D01* +X876736Y258270D01* +X876686Y258300D01* +X876604Y258321D01* +X876525Y258351D01* +X876467Y258355D01* +X876410Y258370D01* +X876326Y258367D01* +X876242Y258374D01* +X876184Y258363D01* +X876126Y258361D01* +X876046Y258335D01* +X875963Y258318D01* +X875911Y258291D01* +X875855Y258273D01* +X875799Y258233D01* +X875711Y258187D01* +X875638Y258119D01* +X875582Y258078D01* +X874386Y256882D01* +X872332Y256031D01* +X870108Y256031D01* +G37* +%LPD*% +%LPC*% +G36* +X489249Y115061D02* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X494465Y127653D01* +X496382Y125736D01* +X497419Y123232D01* +X497419Y120520D01* +X496382Y118016D01* +X494465Y116099D01* +X491960Y115061D01* +X489249Y115061D01* +G37* +%LPD*% +%LPC*% +G36* +X224903Y342165D02* +X224903Y342165D01* +X222766Y343051D01* +X221131Y344686D01* +X220245Y346823D01* +X220245Y349137D01* +X221131Y351274D01* +X222766Y352909D01* +X224903Y353795D01* +X227217Y353795D01* +X229354Y352909D01* +X230989Y351274D01* +X231875Y349137D01* +X231875Y346823D01* +X230989Y344686D01* +X229354Y343051D01* +X227217Y342165D01* +X224903Y342165D01* +G37* +%LPD*% +%LPC*% +G36* +X527163Y75465D02* +X527163Y75465D01* +X525026Y76351D01* +X523391Y77986D01* +X522505Y80123D01* +X522505Y82437D01* +X523391Y84574D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533249Y84574D01* +X534135Y82437D01* +X534135Y80123D01* +X533249Y77986D01* +X531614Y76351D01* +X529477Y75465D01* +X527163Y75465D01* +G37* +%LPD*% +%LPC*% +G36* +X859903Y70385D02* +X859903Y70385D01* +X857766Y71271D01* +X856131Y72906D01* +X855245Y75043D01* +X855245Y77357D01* +X856131Y79494D01* +X857766Y81129D01* +X859903Y82015D01* +X862217Y82015D01* +X864354Y81129D01* +X865989Y79494D01* +X866875Y77357D01* +X866875Y75043D01* +X865989Y72906D01* +X864354Y71271D01* +X862217Y70385D01* +X859903Y70385D01* +G37* +%LPD*% +%LPC*% +G36* +X384923Y339625D02* +X384923Y339625D01* +X382786Y340511D01* +X381151Y342146D01* +X380265Y344283D01* +X380265Y346597D01* +X381151Y348734D01* +X382786Y350369D01* +X384923Y351255D01* +X387237Y351255D01* +X389374Y350369D01* +X391009Y348734D01* +X391895Y346597D01* +X391895Y344283D01* +X391009Y342146D01* +X389374Y340511D01* +X387237Y339625D01* +X384923Y339625D01* +G37* +%LPD*% +%LPC*% +G36* +X175354Y318016D02* +X175354Y318016D01* +X173217Y318902D01* +X171582Y320537D01* +X170696Y322674D01* +X170696Y324988D01* +X171582Y327125D01* +X173217Y328760D01* +X175354Y329646D01* +X177668Y329646D01* +X179805Y328760D01* +X181440Y327125D01* +X182326Y324988D01* +X182326Y322674D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +G37* +%LPD*% +%LPC*% +G36* +X580548Y197611D02* +X580548Y197611D01* +X578494Y198462D01* +X576922Y200034D01* +X576071Y202088D01* +X576071Y204312D01* +X576922Y206366D01* +X578494Y207938D01* +X580548Y208789D01* +X582772Y208789D01* +X584826Y207938D01* +X586398Y206366D01* +X587249Y204312D01* +X587249Y202088D01* +X586398Y200034D01* +X584826Y198462D01* +X582772Y197611D01* +X580548Y197611D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y197611D02* +X1205388Y197611D01* +X1203334Y198462D01* +X1201762Y200034D01* +X1200911Y202088D01* +X1200911Y204312D01* +X1201762Y206366D01* +X1203334Y207938D01* +X1205388Y208789D01* +X1207612Y208789D01* +X1209666Y207938D01* +X1211238Y206366D01* +X1212089Y204312D01* +X1212089Y202088D01* +X1211238Y200034D01* +X1209666Y198462D01* +X1207612Y197611D01* +X1205388Y197611D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y212851D02* +X1205388Y212851D01* +X1203334Y213702D01* +X1201762Y215274D01* +X1200911Y217328D01* +X1200911Y219552D01* +X1201762Y221606D01* +X1203334Y223178D01* +X1205388Y224029D01* +X1207612Y224029D01* +X1209666Y223178D01* +X1211238Y221606D01* +X1212089Y219552D01* +X1212089Y217328D01* +X1211238Y215274D01* +X1209666Y213702D01* +X1207612Y212851D01* +X1205388Y212851D01* +G37* +%LPD*% +%LPC*% +G36* +X547093Y215827D02* +X547093Y215827D01* +X545039Y216678D01* +X543467Y218250D01* +X542616Y220304D01* +X542616Y222527D01* +X543467Y224581D01* +X545039Y226153D01* +X547093Y227004D01* +X549316Y227004D01* +X551370Y226153D01* +X552942Y224581D01* +X553793Y222527D01* +X553793Y220304D01* +X552942Y218250D01* +X551370Y216678D01* +X549316Y215827D01* +X547093Y215827D01* +G37* +%LPD*% +%LPC*% +G36* +X1002188Y182371D02* +X1002188Y182371D01* +X1000134Y183222D01* +X998562Y184794D01* +X997711Y186848D01* +X997711Y189072D01* +X998562Y191126D01* +X1000134Y192698D01* +X1002188Y193549D01* +X1004412Y193549D01* +X1006466Y192698D01* +X1008038Y191126D01* +X1008889Y189072D01* +X1008889Y186848D01* +X1008038Y184794D01* +X1006466Y183222D01* +X1004412Y182371D01* +X1002188Y182371D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y174751D02* +X1205388Y174751D01* +X1203334Y175602D01* +X1201762Y177174D01* +X1200911Y179228D01* +X1200911Y181452D01* +X1201762Y183506D01* +X1203334Y185078D01* +X1205388Y185929D01* +X1207612Y185929D01* +X1209666Y185078D01* +X1211238Y183506D01* +X1212089Y181452D01* +X1212089Y179228D01* +X1211238Y177174D01* +X1209666Y175602D01* +X1207612Y174751D01* +X1205388Y174751D01* +G37* +%LPD*% +%LPC*% +G36* +X517048Y233905D02* +X517048Y233905D01* +X514994Y234756D01* +X513422Y236328D01* +X512571Y238382D01* +X512571Y240606D01* +X513422Y242660D01* +X514994Y244232D01* +X517048Y245083D01* +X519272Y245083D01* +X521326Y244232D01* +X522898Y242660D01* +X523749Y240606D01* +X523749Y238382D01* +X522898Y236328D01* +X521326Y234756D01* +X519272Y233905D01* +X517048Y233905D01* +G37* +%LPD*% +%LPC*% +G36* +X992028Y169671D02* +X992028Y169671D01* +X989974Y170522D01* +X988402Y172094D01* +X987551Y174148D01* +X987551Y176372D01* +X988402Y178426D01* +X989974Y179998D01* +X992028Y180849D01* +X994252Y180849D01* +X996306Y179998D01* +X997878Y178426D01* +X998729Y176372D01* +X998729Y174148D01* +X997878Y172094D01* +X996306Y170522D01* +X994252Y169671D01* +X992028Y169671D01* +G37* +%LPD*% +%LPC*% +G36* +X953928Y169671D02* +X953928Y169671D01* +X951874Y170522D01* +X950302Y172094D01* +X949451Y174148D01* +X949451Y176372D01* +X950302Y178426D01* +X951874Y179998D01* +X953928Y180849D01* +X956152Y180849D01* +X958206Y179998D01* +X959778Y178426D01* +X960629Y176372D01* +X960629Y174148D01* +X959778Y172094D01* +X958206Y170522D01* +X956152Y169671D01* +X953928Y169671D01* +G37* +%LPD*% +%LPC*% +G36* +X1205388Y235711D02* +X1205388Y235711D01* +X1203334Y236562D01* +X1201762Y238134D01* +X1200911Y240188D01* +X1200911Y242412D01* +X1201762Y244466D01* +X1203334Y246038D01* +X1205388Y246889D01* +X1207612Y246889D01* +X1209666Y246038D01* +X1211238Y244466D01* +X1212089Y242412D01* +X1212089Y240188D01* +X1211238Y238134D01* +X1209666Y236562D01* +X1207612Y235711D01* +X1205388Y235711D01* +G37* +%LPD*% +%LPC*% +G36* +X870783Y240791D02* +X870783Y240791D01* +X868728Y241642D01* +X867156Y243214D01* +X866305Y245268D01* +X866305Y247492D01* +X867156Y249546D01* +X868728Y251118D01* +X870783Y251969D01* +X873006Y251969D01* +X875060Y251118D01* +X876632Y249546D01* +X877483Y247492D01* +X877483Y245268D01* +X876632Y243214D01* +X875060Y241642D01* +X873006Y240791D01* +X870783Y240791D01* +G37* +%LPD*% +%LPC*% +G36* +X562768Y273811D02* +X562768Y273811D01* +X560714Y274662D01* +X559142Y276234D01* +X558291Y278288D01* +X558291Y280512D01* +X559142Y282566D01* +X560714Y284138D01* +X562768Y284989D01* +X564992Y284989D01* +X567046Y284138D01* +X568618Y282566D01* +X569469Y280512D01* +X569469Y278288D01* +X568618Y276234D01* +X567046Y274662D01* +X564992Y273811D01* +X562768Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X712628Y164591D02* +X712628Y164591D01* +X710574Y165442D01* +X709002Y167014D01* +X708151Y169068D01* +X708151Y171292D01* +X709002Y173346D01* +X710574Y174918D01* +X712628Y175769D01* +X714852Y175769D01* +X716906Y174918D01* +X718478Y173346D01* +X719329Y171292D01* +X719329Y169068D01* +X718478Y167014D01* +X716906Y165442D01* +X714852Y164591D01* +X712628Y164591D01* +G37* +%LPD*% +%LPC*% +G36* +X539908Y164591D02* +X539908Y164591D01* +X537854Y165442D01* +X536282Y167014D01* +X535431Y169068D01* +X535431Y171292D01* +X536282Y173346D01* +X537854Y174918D01* +X539908Y175769D01* +X542132Y175769D01* +X544186Y174918D01* +X545758Y173346D01* +X546609Y171292D01* +X546609Y169068D01* +X545758Y167014D01* +X544186Y165442D01* +X542132Y164591D01* +X539908Y164591D01* +G37* +%LPD*% +%LPC*% +G36* +X902109Y163071D02* +X902109Y163071D01* +X900055Y163922D01* +X898483Y165494D01* +X897632Y167548D01* +X897632Y169771D01* +X898483Y171825D01* +X900055Y173397D01* +X902109Y174248D01* +X904332Y174248D01* +X906386Y173397D01* +X907958Y171825D01* +X908809Y169771D01* +X908809Y167548D01* +X907958Y165494D01* +X906386Y163922D01* +X904332Y163071D01* +X902109Y163071D01* +G37* +%LPD*% +%LPC*% +G36* +X1149508Y162051D02* +X1149508Y162051D01* +X1147454Y162902D01* +X1145882Y164474D01* +X1145031Y166528D01* +X1145031Y168752D01* +X1145882Y170806D01* +X1147454Y172378D01* +X1149508Y173229D01* +X1151732Y173229D01* +X1153786Y172378D01* +X1155358Y170806D01* +X1156209Y168752D01* +X1156209Y166528D01* +X1155358Y164474D01* +X1153786Y162902D01* +X1151732Y162051D01* +X1149508Y162051D01* +G37* +%LPD*% +%LPC*% +G36* +X971708Y159511D02* +X971708Y159511D01* +X969654Y160362D01* +X968082Y161934D01* +X967231Y163988D01* +X967231Y166212D01* +X968082Y168266D01* +X969654Y169838D01* +X971708Y170689D01* +X973932Y170689D01* +X975986Y169838D01* +X977558Y168266D01* +X978409Y166212D01* +X978409Y163988D01* +X977558Y161934D01* +X975986Y160362D01* +X973932Y159511D01* +X971708Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X532288Y273811D02* +X532288Y273811D01* +X530234Y274662D01* +X528662Y276234D01* +X527811Y278288D01* +X527811Y280512D01* +X528662Y282566D01* +X530234Y284138D01* +X532288Y284989D01* +X534512Y284989D01* +X536566Y284138D01* +X538138Y282566D01* +X538989Y280512D01* +X538989Y278288D01* +X538138Y276234D01* +X536566Y274662D01* +X534512Y273811D01* +X532288Y273811D01* +G37* +%LPD*% +%LPC*% +G36* +X501688Y157320D02* +X501688Y157320D01* +X499634Y158171D01* +X498062Y159743D01* +X497211Y161797D01* +X497211Y164020D01* +X498062Y166075D01* +X499634Y167647D01* +X501688Y168498D01* +X503912Y168498D01* +X505966Y167647D01* +X507538Y166075D01* +X508389Y164020D01* +X508389Y161797D01* +X507538Y159743D01* +X505966Y158171D01* +X503912Y157320D01* +X501688Y157320D01* +G37* +%LPD*% +%LPC*% +G36* +X986948Y154431D02* +X986948Y154431D01* +X984894Y155282D01* +X983322Y156854D01* +X982471Y158908D01* +X982471Y161132D01* +X983322Y163186D01* +X984894Y164758D01* +X986948Y165609D01* +X989172Y165609D01* +X991226Y164758D01* +X992798Y163186D01* +X993649Y161132D01* +X993649Y158908D01* +X992798Y156854D01* +X991226Y155282D01* +X989172Y154431D01* +X986948Y154431D01* +G37* +%LPD*% +%LPC*% +G36* +X758348Y154431D02* +X758348Y154431D01* +X756294Y155282D01* +X754722Y156854D01* +X753871Y158908D01* +X753871Y161132D01* +X754722Y163186D01* +X756294Y164758D01* +X758348Y165609D01* +X760572Y165609D01* +X762626Y164758D01* +X764198Y163186D01* +X765049Y161132D01* +X765049Y158908D01* +X764198Y156854D01* +X762626Y155282D01* +X760572Y154431D01* +X758348Y154431D01* +G37* +%LPD*% +%LPC*% +G36* +X416025Y327151D02* +X416025Y327151D01* +X413971Y328002D01* +X412399Y329574D01* +X411548Y331628D01* +X411548Y333852D01* +X412399Y335906D01* +X413971Y337478D01* +X416025Y338329D01* +X418249Y338329D01* +X420303Y337478D01* +X421875Y335906D01* +X422726Y333852D01* +X422726Y331628D01* +X421875Y329574D01* +X420303Y328002D01* +X418249Y327151D01* +X416025Y327151D01* +G37* +%LPD*% +%LPC*% +G36* +X666908Y149325D02* +X666908Y149325D01* +X664854Y150176D01* +X663282Y151748D01* +X662431Y153802D01* +X662431Y156026D01* +X663282Y158080D01* +X664854Y159652D01* +X666908Y160503D01* +X669132Y160503D01* +X671186Y159652D01* +X672758Y158080D01* +X673609Y156026D01* +X673609Y153802D01* +X672758Y151748D01* +X671186Y150176D01* +X669132Y149325D01* +X666908Y149325D01* +G37* +%LPD*% +%LPC*% +G36* +X704287Y148630D02* +X704287Y148630D01* +X702233Y149481D01* +X700661Y151053D01* +X699810Y153107D01* +X699810Y155331D01* +X700661Y157385D01* +X702233Y158957D01* +X704287Y159808D01* +X706511Y159808D01* +X708565Y158957D01* +X710137Y157385D01* +X710988Y155331D01* +X710988Y153107D01* +X710137Y151053D01* +X708565Y149481D01* +X706511Y148630D01* +X704287Y148630D01* +G37* +%LPD*% +%LPC*% +G36* +X847248Y146811D02* +X847248Y146811D01* +X845194Y147662D01* +X843622Y149234D01* +X842771Y151288D01* +X842771Y153512D01* +X843622Y155566D01* +X845194Y157138D01* +X847248Y157989D01* +X849472Y157989D01* +X851526Y157138D01* +X853098Y155566D01* +X853949Y153512D01* +X853949Y151288D01* +X853098Y149234D01* +X851526Y147662D01* +X849472Y146811D01* +X847248Y146811D01* +G37* +%LPD*% +%LPC*% +G36* +X468788Y250951D02* +X468788Y250951D01* +X466734Y251802D01* +X465162Y253374D01* +X464311Y255428D01* +X464311Y257652D01* +X465162Y259706D01* +X466734Y261278D01* +X468788Y262129D01* +X471012Y262129D01* +X473066Y261278D01* +X474638Y259706D01* +X475489Y257652D01* +X475489Y255428D01* +X474638Y253374D01* +X473066Y251802D01* +X471012Y250951D01* +X468788Y250951D01* +G37* +%LPD*% +%LPC*% +G36* +X797803Y71796D02* +X797803Y71796D01* +X795749Y72647D01* +X794177Y74219D01* +X793326Y76273D01* +X793326Y78497D01* +X794177Y80551D01* +X795749Y82123D01* +X797803Y82974D01* +X800027Y82974D01* +X802081Y82123D01* +X803653Y80551D01* +X804504Y78497D01* +X804504Y76273D01* +X803653Y74219D01* +X802081Y72647D01* +X800027Y71796D01* +X797803Y71796D01* +G37* +%LPD*% +%LPC*% +G36* +X956468Y134111D02* +X956468Y134111D01* +X954414Y134962D01* +X952842Y136534D01* +X951991Y138588D01* +X951991Y140812D01* +X952842Y142866D01* +X954414Y144438D01* +X956468Y145289D01* +X958692Y145289D01* +X960746Y144438D01* +X962318Y142866D01* +X963169Y140812D01* +X963169Y138588D01* +X962318Y136534D01* +X960746Y134962D01* +X958692Y134111D01* +X956468Y134111D01* +G37* +%LPD*% +%LPC*% +G36* +X542448Y129031D02* +X542448Y129031D01* +X540394Y129882D01* +X538822Y131454D01* +X537971Y133508D01* +X537971Y135732D01* +X538822Y137786D01* +X540394Y139358D01* +X542448Y140209D01* +X544672Y140209D01* +X546726Y139358D01* +X548298Y137786D01* +X549149Y135732D01* +X549149Y133508D01* +X548298Y131454D01* +X546726Y129882D01* +X544672Y129031D01* +X542448Y129031D01* +G37* +%LPD*% +%LPC*% +G36* +X405288Y311911D02* +X405288Y311911D01* +X403234Y312762D01* +X401662Y314334D01* +X400811Y316388D01* +X400811Y318612D01* +X401662Y320666D01* +X403234Y322238D01* +X405288Y323089D01* +X407512Y323089D01* +X409566Y322238D01* +X411138Y320666D01* +X411989Y318612D01* +X411989Y316388D01* +X411138Y314334D01* +X409566Y312762D01* +X407512Y311911D01* +X405288Y311911D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751214Y131738D01* +X753268Y132589D01* +X755492Y132589D01* +X757546Y131738D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +%LPC*% +G36* +X903633Y118871D02* +X903633Y118871D01* +X901579Y119722D01* +X900007Y121294D01* +X899156Y123348D01* +X899156Y125572D01* +X900007Y127626D01* +X901579Y129198D01* +X903633Y130049D01* +X905856Y130049D01* +X907910Y129198D01* +X909482Y127626D01* +X910333Y125572D01* +X910333Y123348D01* +X909482Y121294D01* +X907910Y119722D01* +X905856Y118871D01* +X903633Y118871D01* +G37* +%LPD*% +%LPC*% +G36* +X547528Y253491D02* +X547528Y253491D01* +X545474Y254342D01* +X543902Y255914D01* +X543051Y257968D01* +X543051Y260192D01* +X543902Y262246D01* +X545474Y263818D01* +X547528Y264669D01* +X549752Y264669D01* +X551806Y263818D01* +X553378Y262246D01* +X554229Y260192D01* +X554229Y257968D01* +X553378Y255914D01* +X551806Y254342D01* +X549752Y253491D01* +X547528Y253491D01* +G37* +%LPD*% +%LPC*% +G36* +X1221036Y116331D02* +X1221036Y116331D01* +X1218982Y117182D01* +X1217410Y118754D01* +X1216559Y120808D01* +X1216559Y123032D01* +X1217410Y125086D01* +X1218982Y126658D01* +X1221036Y127509D01* +X1223260Y127509D01* +X1225314Y126658D01* +X1226886Y125086D01* +X1227737Y123032D01* +X1227737Y120808D01* +X1226886Y118754D01* +X1225314Y117182D01* +X1223260Y116331D01* +X1221036Y116331D01* +G37* +%LPD*% +%LPC*% +G36* +X1075848Y93471D02* +X1075848Y93471D01* +X1073794Y94322D01* +X1072222Y95894D01* +X1071371Y97948D01* +X1071371Y100172D01* +X1072222Y102226D01* +X1073794Y103798D01* +X1075848Y104649D01* +X1078072Y104649D01* +X1080126Y103798D01* +X1081698Y102226D01* +X1082549Y100172D01* +X1082549Y97948D01* +X1081698Y95894D01* +X1080126Y94322D01* +X1078072Y93471D01* +X1075848Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X1004728Y289051D02* +X1004728Y289051D01* +X1002674Y289902D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009006Y289902D01* +X1006952Y289051D01* +X1004728Y289051D01* +G37* +%LPD*% +%LPC*% +G36* +X1246028Y111251D02* +X1246028Y111251D01* +X1243974Y112102D01* +X1242402Y113674D01* +X1241551Y115728D01* +X1241551Y117952D01* +X1242402Y120006D01* +X1243974Y121578D01* +X1246028Y122429D01* +X1248252Y122429D01* +X1250306Y121578D01* +X1251878Y120006D01* +X1252729Y117952D01* +X1252729Y115728D01* +X1251878Y113674D01* +X1250306Y112102D01* +X1248252Y111251D01* +X1246028Y111251D01* +G37* +%LPD*% +%LPC*% +G36* +X1055528Y111251D02* +X1055528Y111251D01* +X1053474Y112102D01* +X1051902Y113674D01* +X1051051Y115728D01* +X1051051Y117952D01* +X1051902Y120006D01* +X1053474Y121578D01* +X1055528Y122429D01* +X1057752Y122429D01* +X1059806Y121578D01* +X1061378Y120006D01* +X1062229Y117952D01* +X1062229Y115728D01* +X1061378Y113674D01* +X1059806Y112102D01* +X1057752Y111251D01* +X1055528Y111251D01* +G37* +%LPD*% +%LPC*% +G36* +X1220628Y93471D02* +X1220628Y93471D01* +X1218574Y94322D01* +X1217002Y95894D01* +X1216151Y97948D01* +X1216151Y100172D01* +X1217002Y102226D01* +X1218574Y103798D01* +X1220628Y104649D01* +X1222852Y104649D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +G37* +%LPD*% +%LPC*% +G36* +X450843Y286346D02* +X450843Y286346D01* +X448789Y287197D01* +X447217Y288769D01* +X446366Y290823D01* +X446366Y293046D01* +X447217Y295100D01* +X448789Y296672D01* +X450843Y297523D01* +X453066Y297523D01* +X455120Y296672D01* +X456692Y295100D01* +X457543Y293046D01* +X457543Y290823D01* +X456692Y288769D01* +X455120Y287197D01* +X453066Y286346D01* +X450843Y286346D01* +G37* +%LPD*% +%LPC*% +G36* +X865028Y42671D02* +X865028Y42671D01* +X862974Y43522D01* +X861402Y45094D01* +X860551Y47148D01* +X860551Y49372D01* +X861402Y51426D01* +X862974Y52998D01* +X865028Y53849D01* +X867252Y53849D01* +X869306Y52998D01* +X870878Y51426D01* +X871729Y49372D01* +X871729Y47148D01* +X870878Y45094D01* +X869306Y43522D01* +X867252Y42671D01* +X865028Y42671D01* +G37* +%LPD*% +%LPC*% +G36* +X1185068Y98551D02* +X1185068Y98551D01* +X1183014Y99402D01* +X1181442Y100974D01* +X1180591Y103028D01* +X1180591Y105252D01* +X1181442Y107306D01* +X1183014Y108878D01* +X1185068Y109729D01* +X1187292Y109729D01* +X1189346Y108878D01* +X1190918Y107306D01* +X1191769Y105252D01* +X1191769Y103028D01* +X1190918Y100974D01* +X1189346Y99402D01* +X1187292Y98551D01* +X1185068Y98551D01* +G37* +%LPD*% +%LPC*% +G36* +X804068Y51561D02* +X804068Y51561D01* +X802014Y52412D01* +X800442Y53984D01* +X799591Y56038D01* +X799591Y58262D01* +X800442Y60316D01* +X802014Y61888D01* +X804068Y62739D01* +X806292Y62739D01* +X808346Y61888D01* +X809918Y60316D01* +X810769Y58262D01* +X810769Y56038D01* +X809918Y53984D01* +X808346Y52412D01* +X806292Y51561D01* +X804068Y51561D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y38950D01* +X402965Y38810D01* +X404828Y38205D01* +X406574Y37315D01* +X408159Y36164D01* +X409544Y34779D01* +X410695Y33194D01* +X411585Y31448D01* +X412190Y29585D01* +X412330Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y38950D01* +X974465Y38810D01* +X976328Y38205D01* +X978074Y37315D01* +X979659Y36164D01* +X981044Y34779D01* +X982195Y33194D01* +X983085Y31448D01* +X983690Y29585D01* +X983830Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y24639D02* +X973581Y24639D01* +X983830Y24639D01* +X983690Y23755D01* +X983085Y21892D01* +X982195Y20146D01* +X981044Y18561D01* +X979659Y17176D01* +X978074Y16025D01* +X976328Y15135D01* +X974465Y14530D01* +X973581Y14390D01* +X973581Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y24639D02* +X402081Y24639D01* +X412330Y24639D01* +X412190Y23755D01* +X411585Y21892D01* +X410695Y20146D01* +X409544Y18561D01* +X408159Y17176D01* +X406574Y16025D01* +X404828Y15135D01* +X402965Y14530D01* +X402081Y14390D01* +X402081Y24639D01* +G37* +%LPD*% +%LPC*% +G36* +X959270Y28701D02* +X959270Y28701D01* +X959410Y29585D01* +X960015Y31448D01* +X960905Y33194D01* +X962056Y34779D01* +X963441Y36164D01* +X965026Y37315D01* +X966772Y38205D01* +X968635Y38810D01* +X969519Y38950D01* +X969519Y28701D01* +X959270Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X387770Y28701D02* +X387770Y28701D01* +X387910Y29585D01* +X388515Y31448D01* +X389405Y33194D01* +X390556Y34779D01* +X391941Y36164D01* +X393526Y37315D01* +X395272Y38205D01* +X397135Y38810D01* +X398019Y38950D01* +X398019Y28701D01* +X387770Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X397135Y14530D02* +X397135Y14530D01* +X395272Y15135D01* +X393526Y16025D01* +X391941Y17176D01* +X390556Y18561D01* +X389405Y20146D01* +X388515Y21892D01* +X387910Y23755D01* +X387770Y24639D01* +X398019Y24639D01* +X398019Y14390D01* +X397135Y14530D01* +G37* +%LPD*% +%LPC*% +G36* +X968635Y14530D02* +X968635Y14530D01* +X966772Y15135D01* +X965026Y16025D01* +X963441Y17176D01* +X962056Y18561D01* +X960905Y20146D01* +X960015Y21892D01* +X959410Y23755D01* +X959270Y24639D01* +X969519Y24639D01* +X969519Y14390D01* +X968635Y14530D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y283768D01* +X261933Y283640D01* +X263750Y283049D01* +X265453Y282182D01* +X266999Y281058D01* +X268350Y279707D01* +X269473Y278161D01* +X270341Y276458D01* +X270931Y274641D01* +X271060Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y126268D01* +X261933Y126140D01* +X263750Y125549D01* +X265453Y124682D01* +X266999Y123558D01* +X268350Y122207D01* +X269473Y120661D01* +X270341Y118958D01* +X270931Y117141D01* +X271060Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X271060Y269767D01* +X270931Y268955D01* +X270341Y267137D01* +X269473Y265435D01* +X268350Y263889D01* +X266999Y262538D01* +X265453Y261414D01* +X263750Y260547D01* +X261933Y259956D01* +X261121Y259828D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y116329D02* +X247119Y116329D01* +X247248Y117141D01* +X247838Y118958D01* +X248706Y120661D01* +X249829Y122207D01* +X251180Y123558D01* +X252726Y124682D01* +X254429Y125549D01* +X256247Y126140D01* +X257058Y126268D01* +X257058Y116329D01* +X247119Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y112267D02* +X261121Y112267D01* +X271060Y112267D01* +X270931Y111455D01* +X270341Y109637D01* +X269473Y107935D01* +X268350Y106389D01* +X266999Y105038D01* +X265453Y103914D01* +X263750Y103047D01* +X261933Y102456D01* +X261121Y102328D01* +X261121Y112267D01* +G37* +%LPD*% +%LPC*% +G36* +X247119Y273829D02* +X247119Y273829D01* +X247248Y274641D01* +X247838Y276458D01* +X248706Y278161D01* +X249829Y279707D01* +X251180Y281058D01* +X252726Y282182D01* +X254429Y283049D01* +X256247Y283640D01* +X257058Y283768D01* +X257058Y273829D01* +X247119Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y259956D02* +X256247Y259956D01* +X254429Y260547D01* +X252726Y261414D01* +X251180Y262538D01* +X249829Y263889D01* +X248706Y265435D01* +X247838Y267137D01* +X247248Y268955D01* +X247119Y269767D01* +X257058Y269767D01* +X257058Y259828D01* +X256247Y259956D01* +G37* +%LPD*% +%LPC*% +G36* +X256247Y102456D02* +X256247Y102456D01* +X254429Y103047D01* +X252726Y103914D01* +X251180Y105038D01* +X249829Y106389D01* +X248706Y107935D01* +X247838Y109637D01* +X247248Y111455D01* +X247119Y112267D01* +X257058Y112267D01* +X257058Y102328D01* +X256247Y102456D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y22351D02* +X802131Y22351D01* +X802131Y29240D01* +X802767Y29113D01* +X804432Y28424D01* +X805930Y27423D01* +X807203Y26150D01* +X808204Y24652D01* +X808893Y22987D01* +X809020Y22351D01* +X802131Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X598931Y22351D02* +X598931Y22351D01* +X598931Y29240D01* +X599567Y29113D01* +X601232Y28424D01* +X602730Y27423D01* +X604003Y26150D01* +X605004Y24652D01* +X605693Y22987D01* +X605820Y22351D01* +X598931Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X624331Y22351D02* +X624331Y22351D01* +X624331Y29240D01* +X624967Y29113D01* +X626632Y28424D01* +X628130Y27423D01* +X629403Y26150D01* +X630404Y24652D01* +X631093Y22987D01* +X631220Y22351D01* +X624331Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X624331Y18289D02* +X624331Y18289D01* +X631220Y18289D01* +X631093Y17653D01* +X630404Y15988D01* +X629403Y14490D01* +X628130Y13217D01* +X626632Y12216D01* +X624967Y11527D01* +X624331Y11400D01* +X624331Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X587980Y22351D02* +X587980Y22351D01* +X588107Y22987D01* +X588796Y24652D01* +X589797Y26150D01* +X591070Y27423D01* +X592568Y28424D01* +X594233Y29113D01* +X594869Y29240D01* +X594869Y22351D01* +X587980Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X613380Y22351D02* +X613380Y22351D01* +X613507Y22987D01* +X614196Y24652D01* +X615197Y26150D01* +X616470Y27423D01* +X617968Y28424D01* +X619633Y29113D01* +X620269Y29240D01* +X620269Y22351D01* +X613380Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X802131Y18289D02* +X802131Y18289D01* +X809020Y18289D01* +X808893Y17653D01* +X808204Y15988D01* +X807203Y14490D01* +X805930Y13217D01* +X804432Y12216D01* +X802767Y11527D01* +X802131Y11400D01* +X802131Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X791180Y22351D02* +X791180Y22351D01* +X791307Y22987D01* +X791996Y24652D01* +X792997Y26150D01* +X794270Y27423D01* +X795768Y28424D01* +X797433Y29113D01* +X798069Y29240D01* +X798069Y22351D01* +X791180Y22351D01* +G37* +%LPD*% +%LPC*% +G36* +X598931Y18289D02* +X598931Y18289D01* +X605820Y18289D01* +X605693Y17653D01* +X605004Y15988D01* +X604003Y14490D01* +X602730Y13217D01* +X601232Y12216D01* +X599567Y11527D01* +X598931Y11400D01* +X598931Y18289D01* +G37* +%LPD*% +%LPC*% +G36* +X619633Y11527D02* +X619633Y11527D01* +X617968Y12216D01* +X616470Y13217D01* +X615197Y14490D01* +X614196Y15988D01* +X613507Y17653D01* +X613380Y18289D01* +X620269Y18289D01* +X620269Y11400D01* +X619633Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X797433Y11527D02* +X797433Y11527D01* +X795768Y12216D01* +X794270Y13217D01* +X792997Y14490D01* +X791996Y15988D01* +X791307Y17653D01* +X791180Y18289D01* +X798069Y18289D01* +X798069Y11400D01* +X797433Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X594233Y11527D02* +X594233Y11527D01* +X592568Y12216D01* +X591070Y13217D01* +X589797Y14490D01* +X588796Y15988D01* +X588107Y17653D01* +X587980Y18289D01* +X594869Y18289D01* +X594869Y11400D01* +X594233Y11527D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y264614D01* +X182102Y264521D01* +X183661Y263875D01* +X185063Y262938D01* +X186256Y261745D01* +X187194Y260342D01* +X187839Y258784D01* +X187932Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X171275Y258317D02* +X171275Y258317D01* +X171368Y258784D01* +X172014Y260342D01* +X172951Y261745D01* +X174144Y262938D01* +X175547Y263875D01* +X177105Y264521D01* +X177572Y264614D01* +X177572Y258317D01* +X171275Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X187932Y254254D01* +X187839Y253787D01* +X187194Y252228D01* +X186256Y250826D01* +X185063Y249633D01* +X183661Y248695D01* +X182102Y248050D01* +X181635Y247957D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X177105Y248050D02* +X177105Y248050D01* +X175547Y248695D01* +X174144Y249633D01* +X172951Y250826D01* +X172014Y252228D01* +X171368Y253787D01* +X171275Y254254D01* +X177572Y254254D01* +X177572Y247957D01* +X177105Y248050D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y293389D02* +X139619Y293389D01* +X139619Y298602D01* +X140277Y298471D01* +X141479Y297973D01* +X142560Y297250D01* +X143480Y296330D01* +X144203Y295249D01* +X144701Y294047D01* +X144832Y293389D01* +X139619Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y359389D02* +X139619Y359389D01* +X139619Y364602D01* +X140277Y364471D01* +X141479Y363973D01* +X142560Y363250D01* +X143480Y362330D01* +X144203Y361249D01* +X144701Y360047D01* +X144832Y359389D01* +X139619Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y356851D02* +X139619Y356851D01* +X144832Y356851D01* +X144701Y356193D01* +X144203Y354991D01* +X143480Y353910D01* +X142560Y352990D01* +X141479Y352267D01* +X140277Y351769D01* +X139619Y351638D01* +X139619Y356851D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y293389D02* +X131868Y293389D01* +X131999Y294047D01* +X132497Y295249D01* +X133220Y296330D01* +X134140Y297250D01* +X135221Y297973D01* +X136423Y298471D01* +X137081Y298602D01* +X137081Y293389D01* +X131868Y293389D01* +G37* +%LPD*% +%LPC*% +G36* +X131868Y359389D02* +X131868Y359389D01* +X131999Y360047D01* +X132497Y361249D01* +X133220Y362330D01* +X134140Y363250D01* +X135221Y363973D01* +X136423Y364471D01* +X137081Y364602D01* +X137081Y359389D01* +X131868Y359389D01* +G37* +%LPD*% +%LPC*% +G36* +X139619Y290851D02* +X139619Y290851D01* +X144832Y290851D01* +X144701Y290193D01* +X144203Y288991D01* +X143480Y287910D01* +X142560Y286990D01* +X141479Y286267D01* +X140277Y285769D01* +X139619Y285638D01* +X139619Y290851D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y285769D02* +X136423Y285769D01* +X135221Y286267D01* +X134140Y286990D01* +X133220Y287910D01* +X132497Y288991D01* +X131999Y290193D01* +X131868Y290851D01* +X137081Y290851D01* +X137081Y285638D01* +X136423Y285769D01* +G37* +%LPD*% +%LPC*% +G36* +X136423Y351769D02* +X136423Y351769D01* +X135221Y352267D01* +X134140Y352990D01* +X133220Y353910D01* +X132497Y354991D01* +X131999Y356193D01* +X131868Y356851D01* +X137081Y356851D01* +X137081Y351638D01* +X136423Y351769D01* +G37* +%LPD*% +%LPC*% +G36* +X800099Y20319D02* +X800099Y20319D01* +X800099Y20321D01* +X800101Y20321D01* +X800101Y20319D01* +X800099Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X622299Y20319D02* +X622299Y20319D01* +X622299Y20321D01* +X622301Y20321D01* +X622301Y20319D01* +X622299Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X596899Y20319D02* +X596899Y20319D01* +X596899Y20321D01* +X596901Y20321D01* +X596901Y20319D01* +X596899Y20319D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y114297D02* +X259089Y114297D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y114297D01* +X259089Y114297D01* +G37* +%LPD*% +%LPC*% +G36* +X400049Y26669D02* +X400049Y26669D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y26669D01* +X400049Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X971549Y26669D02* +X971549Y26669D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y26669D01* +X971549Y26669D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +D10* +X138350Y358120D03* +X138350Y292120D03* +D11* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +X292090Y237498D03* +D12* +X259090Y271798D03* +X259090Y114298D03* +D11* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D13* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D14* +X800100Y20320D03* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +X749300Y78740D03* +X723900Y78740D03* +D15* +X680720Y58420D03* +X276860Y287020D03* +D16* +X259090Y271798D02* +X238760Y271798D01* +X179604Y271798D01* +X177800Y271798D01* +D15* +X297180Y287020D03* +D17* +X180340Y365816D03* +D16* +X172644Y358120D01* +X138350Y358120D01* +X370840Y271798D02* +X393700Y271798D01* +X370840Y271798D02* +X297180Y271798D01* +X276860Y271798D01* +X259090Y271798D01* +D15* +X563880Y76200D03* +D16* +X594360Y76200D02* +X612140Y58420D01* +X594360Y76200D02* +X563880Y76200D01* +X657860Y58420D02* +X680720Y58420D01* +D15* +X464820Y228600D03* +D16* +X393700Y228600D01* +X347980Y228600D01* +D15* +X424180Y259080D03* +X462280Y147320D03* +D16* +X347980Y147320D01* +X347980Y172720D01* +X347980Y228600D01* +X424180Y259080D02* +X424180Y269240D01* +D15* +X469900Y167640D03* +D16* +X462280Y160020D01* +X462280Y147320D01* +D15* +X500380Y134620D03* +D16* +X487680Y147320D01* +X462280Y147320D01* +D15* +X556260Y180340D03* +D16* +X487680Y180340D01* +X482600Y180340D01* +X469900Y167640D01* +D15* +X1206500Y304800D03* +D16* +X1257300Y7620D02* +X1051560Y7620D01* +X1051560Y76200D01* +X1206500Y304800D02* +X1247027Y304800D01* +X1247140Y304687D01* +D15* +X1051560Y76200D03* +D16* +X1247140Y190500D02* +X1257300Y190500D01* +X1247140Y190500D02* +X1135380Y190500D01* +X1127760Y198120D01* +X1257300Y190500D02* +X1257300Y7620D01* +X971550Y7620D02* +X971550Y26670D01* +X971550Y7620D02* +X1051560Y7620D01* +D15* +X863600Y58420D03* +X886460Y149860D03* +D16* +X886460Y81280D01* +X863600Y58420D01* +D15* +X939800Y246380D03* +X1010920Y139700D03* +X1079500Y111760D03* +D16* +X1051560Y139700D01* +X1010920Y139700D01* +X1051560Y83820D02* +X1079500Y111760D01* +X1051560Y83820D02* +X1051560Y76200D01* +D15* +X1127760Y198120D03* +D17* +X657860Y142240D03* +D16* +X657860Y58420D01* +X400050Y7620D02* +X971550Y7620D01* +X400050Y7620D02* +X259090Y7620D01* +X139700Y7620D01* +X139700Y271798D01* +X177800Y271798D01* +X179604Y271798D02* +X179604Y256285D01* +X400050Y26670D02* +X400050Y7620D01* +X259090Y7620D02* +X259090Y114298D01* +X139700Y356770D02* +X138350Y358120D01* +X139700Y356770D02* +X139700Y271798D01* +D15* +X861060Y289560D03* +D16* +X952500Y274320D02* +X960120Y274320D01* +X960120Y246380D01* +D15* +X952500Y297180D03* +D16* +X952500Y281940D01* +X952500Y274320D01* +X883920Y289560D02* +X861060Y289560D01* +X883920Y274320D02* +X952500Y274320D01* +D15* +X952500Y281940D03* +X960120Y246380D03* +D16* +X939800Y246380D01* +D15* +X1071880Y302260D03* +D16* +X957580Y302260D01* +X952500Y297180D01* +D17* +X177800Y309880D03* +D15* +X347980Y172720D03* +X497840Y269240D03* +D16* +X424180Y269240D01* +X1247140Y304687D02* +X1247140Y190500D01* +X657860Y58420D02* +X612140Y58420D01* +X177800Y271798D02* +X177800Y309880D01* +X297180Y287020D02* +X297180Y271798D01* +X393700Y271798D02* +X393700Y269240D01* +X424180Y269240D01* +X393700Y269240D02* +X393700Y228600D01* +D15* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +D16* +X487680Y185420D02* +X487680Y180340D01* +X487680Y185420D02* +X495300Y185420D01* +X502920Y185420D01* +X502920Y200660D01* +X487680Y200660D01* +X495300Y193040D02* +X495300Y185420D01* +X276860Y271798D02* +X276860Y287020D01* +D15* +X993140Y294640D03* +D16* +X883920Y289560D02* +X883920Y274320D01* +D15* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +D17* +X370840Y342900D03* +D16* +X370840Y271798D01* +D17* +X370840Y360680D03* +D16* +X370840Y342900D01* +D17* +X226060Y358140D03* +D16* +X188016Y358140D01* +X180340Y365816D01* +D15* +X238760Y292292D03* +D16* +X238760Y271798D01* +D15* +X276860Y312420D03* +D16* +X276860Y287020D01* +D15* +X556260Y83820D03* +X731520Y281940D03* +X840740Y254000D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X617220Y254000D03* +X1165860Y205740D03* +X1125220Y281940D03* +X1254760Y152400D03* +X1158240Y109220D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1178560Y167640D03* +X1074420Y208280D03* +X1196340Y90480D03* +X868680Y83820D03* +X787400Y78740D03* +X789940Y57150D03* +X812800Y76200D03* +X508000Y78740D03* +X538480Y17780D03* +X485140Y17780D03* +X985520Y246380D03* +X1026160Y246380D03* +X1031240Y190500D03* +X1193800Y279400D03* +X518160Y239494D03* +X1206500Y203200D03* +X563880Y211610D03* +X502800Y162909D03* +X1023620Y175260D03* +X1206500Y241300D03* +X499816Y231140D03* +X1206500Y218440D03* +X490188Y231172D03* +X1206500Y279400D03* +X482600Y238760D03* +X1074420Y190500D03* +X566332Y202014D03* +X1074420Y177800D03* +X581660Y203200D03* +X1082040Y167640D03* +X553720Y203200D03* +X1165860Y276860D03* +D17* +X419100Y350596D03* +D15* +X1158240Y269240D03* +D17* +X431800Y353060D03* +D15* +X1222148Y121920D03* +X903220Y168660D03* +D17* +X198244Y333022D03* +X176511Y323831D03* +D15* +X993140Y175260D03* +X759460Y160020D03* +X972820Y165100D03* +X955040Y175260D03* +D17* +X875945Y34436D03* +D15* +X1003300Y187960D03* +X713740Y170180D03* +X1186180Y104140D03* +X904744Y124460D03* +X1150620Y167640D03* +X957580Y139700D03* +D17* +X867890Y27940D03* +D15* +X1084940Y252250D03* +X871894Y246380D03* +X443114Y186806D03* +X449580Y180340D03* +X449580Y205740D03* +X443114Y199274D03* +X1206500Y180340D03* +X1023620Y165100D03* +X406400Y317500D03* +X866140Y48260D03* +X541020Y170180D03* +X469900Y256540D03* +X548205Y221415D03* +X668020Y154914D03* +X848360Y152400D03* +X543560Y134620D03* +X1221740Y99060D03* +X881380Y261620D03* +X1178560Y289560D03* +X1005840Y294640D03* +X754380Y127000D03* +D17* +X386080Y345440D03* +X226060Y347980D03* +D15* +X1247140Y116840D03* +D17* +X861060Y76200D03* +D15* +X805180Y57150D03* +X798915Y77385D03* +X417137Y332740D03* +X451955Y291935D03* +D17* +X190500Y342900D03* +D18* +X490605Y121876D03* +D15* +X563880Y279400D03* +X533400Y279400D03* +D17* +X528320Y81280D03* +D15* +X1094490Y254250D03* +X871220Y261620D03* +X988060Y160020D03* +X705399Y154219D03* +X1076960Y99060D03* +X1056640Y116840D03* +X1092560Y244630D03* +X548640Y259080D03* +D17* +X861850Y19530D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_top_l1.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_top_l1.gbr new file mode 100644 index 0000000000..f69dc48be0 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_copper_top_l1.gbr @@ -0,0 +1,23667 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INTop Copper*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.192500*% +%ADD11C,0.350000*% +%ADD12C,0.241500*% +%ADD13C,0.420000*% +%ADD14C,0.320038*% +%ADD15C,0.490000*% +%ADD16C,0.500000*% +%ADD17C,0.315000*% +%ADD18C,1.016000*% +%ADD19C,0.200000*% +%ADD20C,0.700000*% +%ADD21C,0.950000*% +%ADD22C,0.091000*% +%ADD23C,1.778000*% +%ADD24C,1.700000*% +%ADD25C,2.540000*% +%ADD26R,3.810000X3.810000*% +%ADD27C,0.210000*% +%ADD28R,1.778000X1.778000*% +%ADD29C,0.140000*% +%ADD30C,0.402500*% +%ADD31C,0.124459*% +%ADD32C,0.406400*% +%ADD33C,0.711200*% +%ADD34C,0.203200*% +%ADD35C,0.756400*% +%ADD36C,0.279400*% +%ADD37C,0.609600*% +%ADD38C,0.228600*% +%ADD39C,0.956400*% +%ADD40C,0.812800*% + +G36* +X581324Y3767D02* +X581324Y3767D01* +X581353Y3764D01* +X581464Y3787D01* +X581576Y3803D01* +X581603Y3815D01* +X581632Y3820D01* +X581732Y3872D01* +X581836Y3919D01* +X581858Y3938D01* +X581884Y3951D01* +X581966Y4029D01* +X582053Y4102D01* +X582069Y4127D01* +X582090Y4147D01* +X582147Y4245D01* +X582210Y4339D01* +X582219Y4367D01* +X582234Y4392D01* +X582262Y4502D01* +X582296Y4610D01* +X582297Y4640D01* +X582304Y4668D01* +X582300Y4781D01* +X582303Y4894D01* +X582296Y4923D01* +X582295Y4952D01* +X582260Y5060D01* +X582231Y5169D01* +X582216Y5195D01* +X582207Y5223D01* +X582162Y5286D01* +X582086Y5414D01* +X582041Y5457D01* +X582013Y5496D01* +X577291Y10218D01* +X577290Y10219D01* +X577289Y10220D01* +X577173Y10306D01* +X577064Y10388D01* +X577062Y10389D01* +X577061Y10390D01* +X576927Y10440D01* +X576798Y10490D01* +X576796Y10490D01* +X576795Y10490D01* +X576650Y10502D01* +X576515Y10513D01* +X576513Y10513D01* +X576512Y10513D01* +X576496Y10510D01* +X576236Y10457D01* +X576209Y10443D01* +X576184Y10438D01* +X573673Y9397D01* +X569327Y9397D01* +X565313Y11060D01* +X562240Y14133D01* +X561621Y15629D01* +X561620Y15630D01* +X561619Y15631D01* +X561549Y15750D01* +X561476Y15873D01* +X561475Y15874D01* +X561474Y15876D01* +X561373Y15970D01* +X561269Y16069D01* +X561268Y16069D01* +X561267Y16070D01* +X561141Y16135D01* +X561017Y16199D01* +X561015Y16199D01* +X561014Y16200D01* +X560999Y16202D01* +X560738Y16254D01* +X560707Y16251D01* +X560683Y16255D01* +X552036Y16255D01* +X514935Y53356D01* +X514935Y96092D01* +X514927Y96150D01* +X514929Y96208D01* +X514907Y96290D01* +X514895Y96374D01* +X514872Y96427D01* +X514857Y96483D01* +X514814Y96556D01* +X514779Y96633D01* +X514741Y96678D01* +X514712Y96728D01* +X514650Y96786D01* +X514596Y96850D01* +X514547Y96882D01* +X514504Y96922D01* +X514429Y96961D01* +X514359Y97008D01* +X514303Y97025D01* +X514251Y97052D01* +X514183Y97063D01* +X514088Y97093D01* +X513988Y97096D01* +X513920Y97107D01* +X505603Y97107D01* +X503638Y99073D01* +X503591Y99108D01* +X503551Y99150D01* +X503478Y99193D01* +X503411Y99243D01* +X503356Y99264D01* +X503306Y99294D01* +X503224Y99315D01* +X503145Y99345D01* +X503087Y99349D01* +X503030Y99364D01* +X502946Y99361D01* +X502862Y99368D01* +X502804Y99357D01* +X502746Y99355D01* +X502666Y99329D01* +X502583Y99312D01* +X502531Y99285D01* +X502475Y99267D01* +X502419Y99227D01* +X502331Y99181D01* +X502258Y99113D01* +X502202Y99073D01* +X500237Y97107D01* +X489603Y97107D01* +X488964Y97746D01* +X488895Y97798D01* +X488831Y97858D01* +X488781Y97884D01* +X488737Y97917D01* +X488656Y97948D01* +X488578Y97988D01* +X488530Y97996D01* +X488472Y98018D01* +X488324Y98030D01* +X488247Y98043D01* +X480086Y98043D01* +X479999Y98031D01* +X479912Y98028D01* +X479859Y98011D01* +X479804Y98003D01* +X479725Y97968D01* +X479641Y97941D01* +X479602Y97913D01* +X479545Y97887D01* +X479432Y97791D01* +X479368Y97746D01* +X467894Y86271D01* +X465653Y85343D01* +X422148Y85343D01* +X422090Y85335D01* +X422032Y85337D01* +X421950Y85315D01* +X421866Y85303D01* +X421813Y85280D01* +X421757Y85265D01* +X421684Y85222D01* +X421607Y85187D01* +X421562Y85149D01* +X421512Y85120D01* +X421454Y85058D01* +X421390Y85004D01* +X421358Y84955D01* +X421318Y84912D01* +X421279Y84837D01* +X421232Y84767D01* +X421215Y84711D01* +X421188Y84659D01* +X421177Y84591D01* +X421147Y84496D01* +X421144Y84396D01* +X421133Y84328D01* +X421133Y70278D01* +X419942Y69087D01* +X380158Y69087D01* +X378967Y70278D01* +X378967Y85090D01* +X378959Y85148D01* +X378961Y85206D01* +X378939Y85288D01* +X378927Y85372D01* +X378904Y85425D01* +X378889Y85481D01* +X378846Y85554D01* +X378811Y85631D01* +X378773Y85676D01* +X378744Y85726D01* +X378682Y85784D01* +X378628Y85848D01* +X378579Y85880D01* +X378536Y85920D01* +X378461Y85959D01* +X378391Y86006D01* +X378335Y86023D01* +X378283Y86050D01* +X378215Y86061D01* +X378120Y86091D01* +X378020Y86094D01* +X377952Y86105D01* +X369134Y86105D01* +X369048Y86093D01* +X368960Y86090D01* +X368908Y86073D01* +X368853Y86065D01* +X368773Y86030D01* +X368690Y86003D01* +X368650Y85975D01* +X368593Y85949D01* +X368480Y85853D01* +X368416Y85808D01* +X359962Y77354D01* +X359910Y77284D01* +X359850Y77220D01* +X359824Y77171D01* +X359791Y77126D01* +X359760Y77045D01* +X359720Y76967D01* +X359712Y76919D01* +X359690Y76861D01* +X359678Y76713D01* +X359665Y76636D01* +X359665Y74968D01* +X359673Y74910D01* +X359671Y74852D01* +X359693Y74770D01* +X359705Y74686D01* +X359728Y74633D01* +X359743Y74577D01* +X359786Y74504D01* +X359821Y74427D01* +X359859Y74382D01* +X359888Y74332D01* +X359950Y74274D01* +X360004Y74210D01* +X360053Y74178D01* +X360096Y74138D01* +X360171Y74099D01* +X360241Y74052D01* +X360297Y74035D01* +X360349Y74008D01* +X360364Y74006D01* +X362633Y71737D01* +X362633Y61103D01* +X360929Y59400D01* +X360900Y59361D01* +X360864Y59328D01* +X360815Y59248D01* +X360758Y59173D01* +X360741Y59127D01* +X360716Y59085D01* +X360691Y58995D01* +X360657Y58907D01* +X360653Y58858D01* +X360640Y58811D01* +X360641Y58717D01* +X360634Y58624D01* +X360643Y58576D01* +X360644Y58527D01* +X360671Y58437D01* +X360690Y58345D01* +X360712Y58302D01* +X360726Y58255D01* +X360777Y58176D01* +X360821Y58093D01* +X360854Y58057D01* +X360881Y58016D01* +X360938Y57969D01* +X361016Y57886D01* +X361091Y57843D01* +X361140Y57803D01* +X361485Y57603D01* +X362283Y56805D01* +X362848Y55826D01* +X363141Y54735D01* +X363141Y52451D01* +X356616Y52451D01* +X356558Y52443D01* +X356500Y52444D01* +X356418Y52423D01* +X356335Y52411D01* +X356281Y52387D01* +X356225Y52373D01* +X356152Y52330D01* +X356075Y52295D01* +X356031Y52257D01* +X355980Y52227D01* +X355923Y52166D01* +X355858Y52111D01* +X355826Y52063D01* +X355786Y52020D01* +X355747Y51945D01* +X355701Y51875D01* +X355683Y51819D01* +X355656Y51767D01* +X355645Y51699D01* +X355615Y51604D01* +X355612Y51504D01* +X355601Y51436D01* +X355601Y50419D01* +X355599Y50419D01* +X355599Y51436D01* +X355591Y51494D01* +X355592Y51552D01* +X355571Y51634D01* +X355559Y51717D01* +X355535Y51771D01* +X355521Y51827D01* +X355478Y51900D01* +X355443Y51977D01* +X355405Y52021D01* +X355375Y52072D01* +X355314Y52129D01* +X355259Y52194D01* +X355211Y52226D01* +X355168Y52266D01* +X355093Y52305D01* +X355023Y52351D01* +X354967Y52369D01* +X354915Y52396D01* +X354847Y52407D01* +X354752Y52437D01* +X354652Y52440D01* +X354584Y52451D01* +X348059Y52451D01* +X348059Y54735D01* +X348352Y55826D01* +X348917Y56805D01* +X349715Y57603D01* +X350060Y57803D01* +X350099Y57833D01* +X350142Y57855D01* +X350210Y57920D01* +X350284Y57978D01* +X350313Y58017D01* +X350348Y58051D01* +X350396Y58132D01* +X350451Y58208D01* +X350467Y58254D01* +X350492Y58296D01* +X350515Y58387D01* +X350547Y58476D01* +X350550Y58525D01* +X350562Y58572D01* +X350559Y58666D01* +X350565Y58759D01* +X350555Y58807D01* +X350553Y58856D01* +X350524Y58945D01* +X350504Y59037D01* +X350481Y59080D01* +X350466Y59126D01* +X350422Y59187D01* +X350368Y59287D01* +X350307Y59349D01* +X350271Y59400D01* +X348567Y61103D01* +X348567Y71737D01* +X350840Y74010D01* +X350855Y74016D01* +X350911Y74031D01* +X350984Y74074D01* +X351061Y74109D01* +X351106Y74147D01* +X351156Y74176D01* +X351214Y74238D01* +X351278Y74292D01* +X351310Y74341D01* +X351350Y74384D01* +X351389Y74459D01* +X351436Y74529D01* +X351453Y74585D01* +X351480Y74637D01* +X351491Y74705D01* +X351521Y74800D01* +X351524Y74900D01* +X351535Y74968D01* +X351535Y80424D01* +X365346Y94235D01* +X377952Y94235D01* +X378010Y94243D01* +X378068Y94241D01* +X378150Y94263D01* +X378234Y94275D01* +X378287Y94298D01* +X378343Y94313D01* +X378416Y94356D01* +X378493Y94391D01* +X378538Y94429D01* +X378588Y94458D01* +X378646Y94520D01* +X378710Y94574D01* +X378742Y94623D01* +X378782Y94666D01* +X378821Y94741D01* +X378868Y94811D01* +X378885Y94867D01* +X378912Y94919D01* +X378923Y94987D01* +X378953Y95082D01* +X378956Y95182D01* +X378967Y95250D01* +X378967Y110062D01* +X380158Y111253D01* +X419942Y111253D01* +X421133Y110062D01* +X421133Y98552D01* +X421141Y98494D01* +X421139Y98436D01* +X421161Y98354D01* +X421173Y98270D01* +X421196Y98217D01* +X421211Y98161D01* +X421254Y98088D01* +X421289Y98011D01* +X421327Y97966D01* +X421356Y97916D01* +X421418Y97858D01* +X421472Y97794D01* +X421521Y97762D01* +X421564Y97722D01* +X421639Y97683D01* +X421709Y97636D01* +X421765Y97619D01* +X421817Y97592D01* +X421885Y97581D01* +X421980Y97551D01* +X422080Y97548D01* +X422148Y97537D01* +X461494Y97537D01* +X461581Y97549D01* +X461668Y97552D01* +X461721Y97569D01* +X461776Y97577D01* +X461855Y97612D01* +X461939Y97639D01* +X461978Y97667D01* +X462035Y97693D01* +X462148Y97789D01* +X462212Y97834D01* +X473686Y109309D01* +X475927Y110237D01* +X488247Y110237D01* +X488333Y110249D01* +X488421Y110252D01* +X488473Y110269D01* +X488528Y110277D01* +X488608Y110312D01* +X488691Y110339D01* +X488730Y110367D01* +X488788Y110393D01* +X488901Y110489D01* +X488964Y110534D01* +X489603Y111173D01* +X500434Y111173D01* +X500463Y111177D01* +X500492Y111174D01* +X500603Y111197D01* +X500716Y111213D01* +X500742Y111225D01* +X500771Y111230D01* +X500872Y111283D01* +X500975Y111329D01* +X500997Y111348D01* +X501024Y111361D01* +X501106Y111439D01* +X501192Y111512D01* +X501208Y111537D01* +X501230Y111557D01* +X501287Y111655D01* +X501350Y111749D01* +X501359Y111777D01* +X501373Y111802D01* +X501401Y111912D01* +X501435Y112020D01* +X501436Y112050D01* +X501443Y112078D01* +X501440Y112191D01* +X501443Y112304D01* +X501435Y112333D01* +X501434Y112362D01* +X501400Y112470D01* +X501371Y112579D01* +X501356Y112605D01* +X501347Y112633D01* +X501301Y112696D01* +X501226Y112824D01* +X501180Y112867D01* +X501152Y112906D01* +X498576Y115482D01* +X498506Y115534D01* +X498442Y115594D01* +X498393Y115620D01* +X498349Y115653D01* +X498267Y115684D01* +X498189Y115724D01* +X498142Y115732D01* +X498083Y115754D01* +X497935Y115766D01* +X497858Y115779D01* +X493895Y115779D01* +X493865Y115775D01* +X493834Y115777D01* +X493757Y115760D01* +X493614Y115739D01* +X493555Y115713D01* +X493507Y115702D01* +X491960Y115061D01* +X489249Y115061D01* +X486744Y116099D01* +X484827Y118016D01* +X483790Y120520D01* +X483790Y123232D01* +X484827Y125736D01* +X486744Y127653D01* +X489249Y128691D01* +X491960Y128691D01* +X493507Y128050D01* +X493537Y128042D01* +X493564Y128028D01* +X493642Y128015D01* +X493782Y127979D01* +X493847Y127981D01* +X493895Y127973D01* +X502017Y127973D01* +X504258Y127045D01* +X516089Y115214D01* +X517017Y112973D01* +X517017Y110813D01* +X517029Y110727D01* +X517032Y110639D01* +X517049Y110587D01* +X517057Y110532D01* +X517092Y110452D01* +X517119Y110369D01* +X517147Y110329D01* +X517173Y110272D01* +X517269Y110159D01* +X517314Y110095D01* +X518453Y108957D01* +X518453Y102472D01* +X518457Y102443D01* +X518454Y102414D01* +X518477Y102303D01* +X518493Y102191D01* +X518505Y102164D01* +X518510Y102135D01* +X518563Y102034D01* +X518609Y101931D01* +X518628Y101909D01* +X518641Y101883D01* +X518719Y101801D01* +X518792Y101714D01* +X518817Y101698D01* +X518837Y101677D01* +X518935Y101620D01* +X519029Y101557D01* +X519057Y101548D01* +X519082Y101533D01* +X519192Y101505D01* +X519300Y101471D01* +X519330Y101470D01* +X519358Y101463D01* +X519471Y101466D01* +X519584Y101464D01* +X519613Y101471D01* +X519642Y101472D01* +X519750Y101507D01* +X519859Y101535D01* +X519885Y101550D01* +X519913Y101559D01* +X519976Y101605D01* +X520104Y101681D01* +X520147Y101726D01* +X520186Y101754D01* +X522258Y103826D01* +X524936Y106505D01* +X526012Y106505D01* +X526070Y106513D01* +X526128Y106511D01* +X526210Y106533D01* +X526294Y106545D01* +X526347Y106568D01* +X526403Y106583D01* +X526476Y106626D01* +X526553Y106661D01* +X526598Y106699D01* +X526648Y106728D01* +X526706Y106790D01* +X526770Y106844D01* +X526802Y106893D01* +X526842Y106936D01* +X526881Y107011D01* +X526928Y107081D01* +X526945Y107137D01* +X526972Y107189D01* +X526983Y107257D01* +X527013Y107352D01* +X527016Y107452D01* +X527027Y107520D01* +X527027Y109257D01* +X529243Y111473D01* +X533165Y111473D01* +X533194Y111477D01* +X533224Y111474D01* +X533335Y111497D01* +X533447Y111513D01* +X533474Y111525D01* +X533502Y111530D01* +X533603Y111583D01* +X533706Y111629D01* +X533729Y111648D01* +X533755Y111661D01* +X533837Y111739D01* +X533923Y111812D01* +X533940Y111837D01* +X533961Y111857D01* +X534018Y111955D01* +X534081Y112049D01* +X534090Y112077D01* +X534105Y112102D01* +X534132Y112212D01* +X534167Y112320D01* +X534167Y112350D01* +X534175Y112378D01* +X534171Y112491D01* +X534174Y112604D01* +X534167Y112633D01* +X534166Y112662D01* +X534131Y112770D01* +X534102Y112879D01* +X534087Y112905D01* +X534078Y112933D01* +X534032Y112997D01* +X533957Y113124D01* +X533911Y113167D01* +X533883Y113206D01* +X533527Y113562D01* +X533527Y120118D01* +X535282Y121873D01* +X541338Y121873D01* +X543093Y120118D01* +X543093Y113562D01* +X542672Y113141D01* +X542620Y113071D01* +X542560Y113008D01* +X542534Y112958D01* +X542501Y112914D01* +X542470Y112832D01* +X542430Y112754D01* +X542422Y112707D01* +X542400Y112648D01* +X542394Y112580D01* +X542389Y112562D01* +X542387Y112497D01* +X542375Y112423D01* +X542375Y105006D01* +X541390Y104022D01* +X541338Y103952D01* +X541278Y103888D01* +X541252Y103839D01* +X541219Y103794D01* +X541188Y103713D01* +X541148Y103635D01* +X541140Y103587D01* +X541118Y103529D01* +X541110Y103436D01* +X541107Y103425D01* +X541106Y103380D01* +X541093Y103304D01* +X541093Y95623D01* +X538877Y93407D01* +X529243Y93407D01* +X527007Y95643D01* +X526961Y95678D01* +X526920Y95721D01* +X526847Y95763D01* +X526780Y95814D01* +X526725Y95835D01* +X526675Y95864D01* +X526593Y95885D01* +X526514Y95915D01* +X526456Y95920D01* +X526400Y95934D01* +X526315Y95932D01* +X526231Y95939D01* +X526174Y95927D01* +X526115Y95925D01* +X526035Y95900D01* +X525952Y95883D01* +X525901Y95856D01* +X525845Y95838D01* +X525789Y95798D01* +X525700Y95752D01* +X525628Y95683D01* +X525572Y95643D01* +X523362Y93434D01* +X523310Y93364D01* +X523250Y93300D01* +X523224Y93251D01* +X523191Y93206D01* +X523160Y93125D01* +X523120Y93047D01* +X523112Y92999D01* +X523090Y92941D01* +X523078Y92793D01* +X523065Y92716D01* +X523065Y86699D01* +X523069Y86670D01* +X523066Y86641D01* +X523089Y86530D01* +X523105Y86418D01* +X523117Y86391D01* +X523122Y86362D01* +X523175Y86261D01* +X523221Y86158D01* +X523240Y86136D01* +X523253Y86110D01* +X523331Y86028D01* +X523404Y85941D01* +X523429Y85925D01* +X523449Y85904D01* +X523547Y85846D01* +X523641Y85784D01* +X523669Y85775D01* +X523694Y85760D01* +X523804Y85732D01* +X523912Y85698D01* +X523941Y85697D01* +X523970Y85690D01* +X524083Y85693D01* +X524196Y85690D01* +X524225Y85698D01* +X524254Y85699D01* +X524362Y85734D01* +X524471Y85762D01* +X524497Y85777D01* +X524525Y85786D01* +X524588Y85832D01* +X524716Y85908D01* +X524759Y85953D01* +X524798Y85981D01* +X525026Y86209D01* +X527163Y87095D01* +X529477Y87095D01* +X531614Y86209D01* +X533021Y84802D01* +X533091Y84750D01* +X533155Y84690D01* +X533204Y84664D01* +X533248Y84631D01* +X533330Y84600D01* +X533408Y84560D01* +X533455Y84552D01* +X533514Y84530D01* +X533662Y84518D01* +X533739Y84505D01* +X535512Y84505D01* +X535570Y84513D01* +X535628Y84511D01* +X535710Y84533D01* +X535794Y84545D01* +X535847Y84568D01* +X535903Y84583D01* +X535976Y84626D01* +X536053Y84661D01* +X536098Y84699D01* +X536148Y84728D01* +X536206Y84790D01* +X536270Y84844D01* +X536302Y84893D01* +X536342Y84936D01* +X536381Y85011D01* +X536428Y85081D01* +X536445Y85137D01* +X536472Y85189D01* +X536483Y85257D01* +X536513Y85352D01* +X536516Y85452D01* +X536527Y85520D01* +X536527Y87257D01* +X538743Y89473D01* +X548377Y89473D01* +X550593Y87257D01* +X550593Y73623D01* +X548717Y71748D01* +X548682Y71701D01* +X548640Y71661D01* +X548597Y71588D01* +X548547Y71521D01* +X548526Y71466D01* +X548496Y71416D01* +X548475Y71334D01* +X548445Y71255D01* +X548441Y71197D01* +X548426Y71140D01* +X548429Y71056D01* +X548422Y70972D01* +X548433Y70914D01* +X548435Y70856D01* +X548461Y70776D01* +X548478Y70693D01* +X548505Y70641D01* +X548523Y70585D01* +X548563Y70529D01* +X548609Y70441D01* +X548677Y70368D01* +X548717Y70312D01* +X550713Y68317D01* +X550713Y58683D01* +X548497Y56467D01* +X548260Y56467D01* +X548202Y56459D01* +X548144Y56461D01* +X548062Y56439D01* +X547978Y56427D01* +X547925Y56404D01* +X547869Y56389D01* +X547796Y56346D01* +X547719Y56311D01* +X547674Y56273D01* +X547624Y56244D01* +X547566Y56182D01* +X547502Y56128D01* +X547472Y56082D01* +X547465Y56075D01* +X547462Y56071D01* +X547430Y56036D01* +X547391Y55961D01* +X547344Y55891D01* +X547330Y55846D01* +X547321Y55830D01* +X547318Y55817D01* +X547300Y55783D01* +X547289Y55715D01* +X547259Y55620D01* +X547258Y55582D01* +X547251Y55554D01* +X547253Y55498D01* +X547245Y55452D01* +X547245Y55444D01* +X547253Y55388D01* +X547251Y55336D01* +X547259Y55308D01* +X547260Y55270D01* +X547277Y55218D01* +X547285Y55163D01* +X547313Y55098D01* +X547323Y55061D01* +X547333Y55045D01* +X547347Y55000D01* +X547375Y54960D01* +X547401Y54903D01* +X547454Y54840D01* +X547468Y54816D01* +X547497Y54789D01* +X547542Y54726D01* +X549646Y52622D01* +X549716Y52570D01* +X549780Y52510D01* +X549829Y52484D01* +X549874Y52451D01* +X549955Y52420D01* +X550033Y52380D01* +X550081Y52372D01* +X550139Y52350D01* +X550287Y52338D01* +X550364Y52325D01* +X571500Y52325D01* +X571558Y52333D01* +X571616Y52331D01* +X571698Y52353D01* +X571782Y52365D01* +X571835Y52388D01* +X571891Y52403D01* +X571964Y52446D01* +X572041Y52481D01* +X572086Y52519D01* +X572136Y52548D01* +X572194Y52610D01* +X572258Y52664D01* +X572290Y52713D01* +X572330Y52756D01* +X572369Y52831D01* +X572416Y52901D01* +X572433Y52957D01* +X572460Y53009D01* +X572471Y53077D01* +X572501Y53172D01* +X572504Y53272D01* +X572515Y53340D01* +X572515Y54572D01* +X572508Y54623D01* +X572509Y54642D01* +X572507Y54646D01* +X572509Y54688D01* +X572487Y54770D01* +X572475Y54854D01* +X572452Y54907D01* +X572437Y54963D01* +X572394Y55036D01* +X572359Y55113D01* +X572321Y55158D01* +X572292Y55208D01* +X572230Y55266D01* +X572176Y55330D01* +X572127Y55362D01* +X572084Y55402D01* +X572009Y55441D01* +X571939Y55488D01* +X571883Y55505D01* +X571831Y55532D01* +X571816Y55534D01* +X569547Y57803D01* +X569547Y68437D01* +X571763Y70653D01* +X581397Y70653D01* +X583613Y68437D01* +X583613Y57803D01* +X582835Y57026D01* +X582818Y57002D01* +X582795Y56983D01* +X582733Y56889D01* +X582665Y56799D01* +X582654Y56771D01* +X582638Y56747D01* +X582604Y56639D01* +X582563Y56533D01* +X582561Y56504D01* +X582552Y56476D01* +X582549Y56362D01* +X582540Y56250D01* +X582546Y56221D01* +X582545Y56192D01* +X582573Y56082D01* +X582596Y55971D01* +X582609Y55945D01* +X582617Y55917D01* +X582674Y55819D01* +X582727Y55719D01* +X582747Y55697D01* +X582762Y55672D01* +X582844Y55595D01* +X582922Y55513D01* +X582948Y55498D01* +X582969Y55478D01* +X583070Y55426D01* +X583168Y55369D01* +X583196Y55362D01* +X583222Y55348D01* +X583300Y55335D01* +X583443Y55299D01* +X583506Y55301D01* +X583553Y55293D01* +X594217Y55293D01* +X596182Y53327D01* +X596229Y53292D01* +X596269Y53250D01* +X596342Y53207D01* +X596409Y53157D01* +X596464Y53136D01* +X596514Y53106D01* +X596596Y53085D01* +X596675Y53055D01* +X596733Y53051D01* +X596790Y53036D01* +X596874Y53039D01* +X596958Y53032D01* +X597016Y53043D01* +X597074Y53045D01* +X597154Y53071D01* +X597237Y53088D01* +X597289Y53115D01* +X597345Y53133D01* +X597401Y53173D01* +X597489Y53219D01* +X597562Y53287D01* +X597618Y53327D01* +X599583Y55293D01* +X599820Y55293D01* +X599878Y55301D01* +X599936Y55299D01* +X600018Y55321D01* +X600102Y55333D01* +X600155Y55356D01* +X600211Y55371D01* +X600284Y55414D01* +X600361Y55449D01* +X600406Y55487D01* +X600456Y55516D01* +X600514Y55578D01* +X600578Y55632D01* +X600610Y55681D01* +X600650Y55724D01* +X600689Y55799D01* +X600736Y55869D01* +X600753Y55925D01* +X600780Y55977D01* +X600791Y56045D01* +X600821Y56140D01* +X600824Y56240D01* +X600835Y56308D01* +X600835Y58873D01* +X600823Y58960D01* +X600820Y59047D01* +X600803Y59100D01* +X600795Y59155D01* +X600760Y59235D01* +X600733Y59318D01* +X600705Y59357D01* +X600679Y59414D01* +X600583Y59527D01* +X600538Y59591D01* +X600158Y59971D01* +X600111Y60006D01* +X600071Y60049D01* +X599998Y60091D01* +X599931Y60142D01* +X599876Y60163D01* +X599826Y60192D01* +X599744Y60213D01* +X599665Y60243D01* +X599607Y60248D01* +X599550Y60263D01* +X599466Y60260D01* +X599382Y60267D01* +X599324Y60255D01* +X599266Y60254D01* +X599186Y60228D01* +X599103Y60211D01* +X599051Y60184D01* +X598995Y60166D01* +X598939Y60126D01* +X598851Y60080D01* +X598778Y60011D01* +X598722Y59971D01* +X597218Y58467D01* +X591162Y58467D01* +X589407Y60222D01* +X589407Y66778D01* +X590748Y68119D01* +X590783Y68166D01* +X590826Y68206D01* +X590868Y68279D01* +X590919Y68346D01* +X590940Y68401D01* +X590969Y68451D01* +X590990Y68533D01* +X591020Y68612D01* +X591025Y68670D01* +X591039Y68727D01* +X591037Y68811D01* +X591044Y68895D01* +X591032Y68952D01* +X591030Y69011D01* +X591004Y69091D01* +X590988Y69174D01* +X590961Y69226D01* +X590943Y69281D01* +X590903Y69338D01* +X590857Y69426D01* +X590788Y69498D01* +X590748Y69555D01* +X589537Y70765D01* +X589537Y81035D01* +X591435Y82933D01* +X598605Y82933D01* +X599052Y82485D01* +X599099Y82450D01* +X599139Y82408D01* +X599212Y82365D01* +X599279Y82314D01* +X599334Y82294D01* +X599384Y82264D01* +X599466Y82243D01* +X599545Y82213D01* +X599603Y82208D01* +X599660Y82194D01* +X599744Y82197D01* +X599828Y82190D01* +X599886Y82201D01* +X599944Y82203D01* +X600024Y82229D01* +X600107Y82245D01* +X600159Y82272D01* +X600215Y82290D01* +X600271Y82330D01* +X600359Y82376D01* +X600432Y82445D01* +X600488Y82485D01* +X600935Y82933D01* +X606521Y82933D01* +X606607Y82945D01* +X606695Y82948D01* +X606747Y82965D01* +X606802Y82973D01* +X606882Y83008D01* +X606965Y83035D01* +X607005Y83063D01* +X607062Y83089D01* +X607175Y83185D01* +X607239Y83230D01* +X608337Y84329D01* +X618236Y84329D01* +X618294Y84337D01* +X618352Y84335D01* +X618434Y84357D01* +X618518Y84369D01* +X618571Y84392D01* +X618627Y84407D01* +X618700Y84450D01* +X618777Y84485D01* +X618822Y84523D01* +X618872Y84552D01* +X618930Y84614D01* +X618994Y84668D01* +X619026Y84717D01* +X619066Y84760D01* +X619105Y84835D01* +X619152Y84905D01* +X619169Y84961D01* +X619196Y85013D01* +X619207Y85081D01* +X619237Y85176D01* +X619240Y85276D01* +X619251Y85344D01* +X619251Y94063D01* +X619247Y94092D01* +X619250Y94121D01* +X619227Y94232D01* +X619211Y94344D01* +X619199Y94371D01* +X619194Y94400D01* +X619141Y94501D01* +X619095Y94604D01* +X619076Y94626D01* +X619063Y94652D01* +X618985Y94734D01* +X618912Y94821D01* +X618887Y94837D01* +X618867Y94858D01* +X618769Y94915D01* +X618675Y94978D01* +X618647Y94987D01* +X618622Y95002D01* +X618512Y95030D01* +X618404Y95064D01* +X618375Y95065D01* +X618346Y95072D01* +X618233Y95069D01* +X618120Y95071D01* +X618091Y95064D01* +X618062Y95063D01* +X617954Y95028D01* +X617845Y95000D01* +X617819Y94985D01* +X617791Y94976D01* +X617728Y94930D01* +X617622Y94867D01* +X610435Y94867D01* +X608537Y96765D01* +X608537Y107035D01* +X610435Y108933D01* +X617605Y108933D01* +X618995Y107542D01* +X619042Y107507D01* +X619082Y107465D01* +X619155Y107422D01* +X619222Y107371D01* +X619277Y107351D01* +X619327Y107321D01* +X619409Y107300D01* +X619488Y107270D01* +X619546Y107265D01* +X619603Y107251D01* +X619687Y107254D01* +X619771Y107247D01* +X619828Y107258D01* +X619887Y107260D01* +X619967Y107286D01* +X620050Y107303D01* +X620102Y107330D01* +X620157Y107347D01* +X620214Y107387D01* +X620302Y107434D01* +X620375Y107502D01* +X620431Y107542D01* +X622963Y110074D01* +X622980Y110098D01* +X623003Y110117D01* +X623066Y110211D01* +X623133Y110301D01* +X623144Y110329D01* +X623160Y110353D01* +X623194Y110461D01* +X623235Y110567D01* +X623237Y110596D01* +X623246Y110624D01* +X623249Y110738D01* +X623258Y110850D01* +X623253Y110879D01* +X623253Y110908D01* +X623225Y111018D01* +X623202Y111129D01* +X623189Y111155D01* +X623181Y111183D01* +X623124Y111281D01* +X623071Y111381D01* +X623051Y111403D01* +X623036Y111428D01* +X622954Y111505D01* +X622876Y111587D01* +X622850Y111602D01* +X622829Y111622D01* +X622728Y111674D01* +X622630Y111731D01* +X622602Y111738D01* +X622576Y111752D01* +X622498Y111765D01* +X622355Y111801D01* +X622292Y111799D01* +X622245Y111807D01* +X619442Y111807D01* +X617938Y113311D01* +X617891Y113346D01* +X617851Y113389D01* +X617778Y113431D01* +X617711Y113482D01* +X617656Y113503D01* +X617606Y113532D01* +X617524Y113553D01* +X617445Y113583D01* +X617387Y113588D01* +X617330Y113603D01* +X617246Y113600D01* +X617162Y113607D01* +X617104Y113595D01* +X617046Y113594D01* +X616966Y113568D01* +X616883Y113551D01* +X616831Y113524D01* +X616775Y113506D01* +X616719Y113466D01* +X616631Y113420D01* +X616558Y113351D01* +X616502Y113311D01* +X614998Y111807D01* +X608942Y111807D01* +X607255Y113494D01* +X607185Y113546D01* +X607122Y113606D01* +X607072Y113632D01* +X607028Y113665D01* +X606946Y113696D01* +X606868Y113736D01* +X606821Y113744D01* +X606762Y113766D01* +X606615Y113778D01* +X606537Y113791D01* +X602503Y113791D01* +X602416Y113779D01* +X602329Y113776D01* +X602276Y113759D01* +X602221Y113751D01* +X602141Y113716D01* +X602058Y113689D01* +X602019Y113661D01* +X601962Y113635D01* +X601848Y113539D01* +X601785Y113494D01* +X600416Y112125D01* +X600364Y112055D01* +X600304Y111992D01* +X600278Y111942D01* +X600245Y111898D01* +X600214Y111816D01* +X600174Y111738D01* +X600166Y111691D01* +X600144Y111632D01* +X600138Y111565D01* +X600133Y111547D01* +X600131Y111480D01* +X600119Y111407D01* +X600119Y107839D01* +X600131Y107753D01* +X600134Y107665D01* +X600151Y107613D01* +X600159Y107558D01* +X600194Y107478D01* +X600221Y107395D01* +X600249Y107355D01* +X600275Y107298D01* +X600371Y107185D01* +X600416Y107121D01* +X600503Y107035D01* +X600503Y96765D01* +X598605Y94867D01* +X591435Y94867D01* +X589537Y96765D01* +X589537Y107035D01* +X591435Y108933D01* +X593006Y108933D01* +X593064Y108941D01* +X593122Y108939D01* +X593204Y108961D01* +X593288Y108973D01* +X593341Y108996D01* +X593397Y109011D01* +X593470Y109054D01* +X593547Y109089D01* +X593592Y109127D01* +X593642Y109156D01* +X593700Y109218D01* +X593764Y109272D01* +X593796Y109321D01* +X593836Y109364D01* +X593875Y109439D01* +X593922Y109509D01* +X593939Y109565D01* +X593966Y109617D01* +X593977Y109685D01* +X594007Y109780D01* +X594010Y109880D01* +X594021Y109948D01* +X594021Y111407D01* +X594014Y111461D01* +X594015Y111496D01* +X594008Y111520D01* +X594006Y111581D01* +X593989Y111634D01* +X593981Y111689D01* +X593946Y111769D01* +X593919Y111852D01* +X593891Y111891D01* +X593865Y111948D01* +X593769Y112061D01* +X593724Y112125D01* +X592287Y113562D01* +X592287Y120118D01* +X594042Y121873D01* +X600098Y121873D01* +X601785Y120186D01* +X601855Y120134D01* +X601918Y120074D01* +X601968Y120048D01* +X602012Y120015D01* +X602094Y119984D01* +X602172Y119944D01* +X602219Y119936D01* +X602278Y119914D01* +X602425Y119902D01* +X602503Y119889D01* +X606537Y119889D01* +X606624Y119901D01* +X606711Y119904D01* +X606764Y119921D01* +X606819Y119929D01* +X606899Y119964D01* +X606982Y119991D01* +X607021Y120019D01* +X607078Y120045D01* +X607191Y120141D01* +X607255Y120186D01* +X608942Y121873D01* +X614998Y121873D01* +X616502Y120369D01* +X616549Y120334D01* +X616589Y120291D01* +X616662Y120249D01* +X616729Y120198D01* +X616784Y120177D01* +X616834Y120148D01* +X616916Y120127D01* +X616995Y120097D01* +X617053Y120092D01* +X617110Y120077D01* +X617194Y120080D01* +X617278Y120073D01* +X617336Y120085D01* +X617394Y120086D01* +X617474Y120112D01* +X617557Y120129D01* +X617609Y120156D01* +X617665Y120174D01* +X617721Y120214D01* +X617809Y120260D01* +X617882Y120329D01* +X617938Y120369D01* +X619442Y121873D01* +X625498Y121873D01* +X627185Y120186D01* +X627255Y120134D01* +X627318Y120074D01* +X627368Y120048D01* +X627412Y120015D01* +X627494Y119984D01* +X627572Y119944D01* +X627619Y119936D01* +X627678Y119914D01* +X627825Y119902D01* +X627903Y119889D01* +X679823Y119889D01* +X691389Y108323D01* +X691389Y100368D01* +X691397Y100310D01* +X691395Y100252D01* +X691417Y100170D01* +X691429Y100086D01* +X691452Y100033D01* +X691467Y99977D01* +X691510Y99904D01* +X691545Y99827D01* +X691583Y99782D01* +X691612Y99732D01* +X691674Y99674D01* +X691728Y99610D01* +X691777Y99578D01* +X691820Y99538D01* +X691895Y99499D01* +X691965Y99452D01* +X692021Y99435D01* +X692073Y99408D01* +X692141Y99397D01* +X692236Y99367D01* +X692336Y99364D01* +X692404Y99353D01* +X693157Y99353D01* +X695242Y97267D01* +X695289Y97232D01* +X695329Y97190D01* +X695402Y97147D01* +X695469Y97097D01* +X695524Y97076D01* +X695574Y97046D01* +X695656Y97025D01* +X695735Y96995D01* +X695793Y96991D01* +X695850Y96976D01* +X695934Y96979D01* +X696018Y96972D01* +X696076Y96983D01* +X696134Y96985D01* +X696214Y97011D01* +X696297Y97028D01* +X696349Y97055D01* +X696405Y97073D01* +X696461Y97113D01* +X696549Y97159D01* +X696622Y97227D01* +X696678Y97267D01* +X698763Y99353D01* +X708397Y99353D01* +X710552Y97198D01* +X710621Y97146D01* +X710685Y97086D01* +X710735Y97060D01* +X710779Y97027D01* +X710860Y96996D01* +X710938Y96956D01* +X710986Y96948D01* +X711044Y96926D01* +X711192Y96914D01* +X711269Y96901D01* +X714751Y96901D01* +X716618Y96127D01* +X718190Y94555D01* +X722785Y89960D01* +X722855Y89908D01* +X722919Y89848D01* +X722968Y89822D01* +X723012Y89789D01* +X723094Y89758D01* +X723172Y89718D01* +X723220Y89710D01* +X723278Y89688D01* +X723426Y89676D01* +X723503Y89663D01* +X726073Y89663D01* +X730087Y88000D01* +X733160Y84927D01* +X734823Y80913D01* +X734823Y76567D01* +X733156Y72544D01* +X733135Y72460D01* +X733104Y72380D01* +X733099Y72323D01* +X733085Y72268D01* +X733088Y72182D01* +X733080Y72097D01* +X733092Y72041D01* +X733093Y71984D01* +X733119Y71902D01* +X733136Y71818D01* +X733163Y71767D01* +X733180Y71713D01* +X733228Y71642D01* +X733267Y71566D01* +X733307Y71524D01* +X733338Y71477D01* +X733404Y71422D01* +X733463Y71360D01* +X733512Y71331D01* +X733556Y71294D01* +X733634Y71259D01* +X733708Y71216D01* +X733763Y71202D01* +X733816Y71179D01* +X733901Y71167D01* +X733984Y71146D01* +X734041Y71148D01* +X734097Y71140D01* +X734182Y71152D01* +X734268Y71155D01* +X734322Y71172D01* +X734378Y71180D01* +X734457Y71216D01* +X734539Y71242D01* +X734579Y71271D01* +X734638Y71298D01* +X734748Y71392D01* +X734812Y71437D01* +X738080Y74705D01* +X738132Y74775D01* +X738192Y74839D01* +X738218Y74888D01* +X738251Y74932D01* +X738282Y75014D01* +X738322Y75092D01* +X738330Y75140D01* +X738352Y75198D01* +X738364Y75346D01* +X738377Y75423D01* +X738377Y88472D01* +X739568Y89663D01* +X759032Y89663D01* +X760223Y88472D01* +X760223Y68739D01* +X760227Y68710D01* +X760224Y68681D01* +X760247Y68570D01* +X760263Y68458D01* +X760275Y68431D01* +X760280Y68402D01* +X760332Y68302D01* +X760379Y68198D01* +X760398Y68176D01* +X760411Y68150D01* +X760489Y68068D01* +X760562Y67981D01* +X760587Y67965D01* +X760607Y67944D01* +X760705Y67887D01* +X760799Y67824D01* +X760827Y67815D01* +X760852Y67800D01* +X760962Y67772D01* +X761070Y67738D01* +X761100Y67737D01* +X761128Y67730D01* +X761241Y67734D01* +X761354Y67731D01* +X761383Y67738D01* +X761412Y67739D01* +X761520Y67774D01* +X761629Y67803D01* +X761655Y67818D01* +X761683Y67827D01* +X761746Y67872D01* +X761874Y67948D01* +X761917Y67993D01* +X761956Y68021D01* +X797463Y103529D01* +X810759Y103529D01* +X810846Y103541D01* +X810933Y103544D01* +X810986Y103561D01* +X811040Y103569D01* +X811120Y103604D01* +X811204Y103631D01* +X811243Y103659D01* +X811300Y103685D01* +X811413Y103781D01* +X811477Y103826D01* +X811941Y104291D01* +X813816Y104291D01* +X813874Y104299D01* +X813932Y104297D01* +X814014Y104319D01* +X814098Y104331D01* +X814151Y104354D01* +X814207Y104369D01* +X814280Y104412D01* +X814357Y104447D01* +X814402Y104485D01* +X814452Y104514D01* +X814510Y104576D01* +X814574Y104630D01* +X814606Y104679D01* +X814646Y104722D01* +X814685Y104797D01* +X814732Y104867D01* +X814749Y104923D01* +X814776Y104975D01* +X814787Y105043D01* +X814817Y105138D01* +X814820Y105238D01* +X814831Y105306D01* +X814831Y108113D01* +X816914Y110196D01* +X816915Y110196D01* +X817710Y110991D01* +X817762Y111061D01* +X817822Y111125D01* +X817848Y111174D01* +X817881Y111219D01* +X817912Y111300D01* +X817952Y111378D01* +X817960Y111426D01* +X817982Y111484D01* +X817994Y111632D01* +X818007Y111709D01* +X818007Y115038D01* +X819762Y116793D01* +X825818Y116793D01* +X827322Y115289D01* +X827369Y115254D01* +X827409Y115211D01* +X827482Y115169D01* +X827549Y115118D01* +X827604Y115097D01* +X827654Y115068D01* +X827736Y115047D01* +X827815Y115017D01* +X827873Y115012D01* +X827930Y114997D01* +X828014Y115000D01* +X828098Y114993D01* +X828156Y115005D01* +X828214Y115006D01* +X828294Y115032D01* +X828377Y115049D01* +X828429Y115076D01* +X828485Y115094D01* +X828541Y115134D01* +X828629Y115180D01* +X828702Y115249D01* +X828758Y115289D01* +X830262Y116793D01* +X836318Y116793D01* +X838073Y115038D01* +X838073Y111709D01* +X838085Y111623D01* +X838088Y111535D01* +X838105Y111483D01* +X838113Y111428D01* +X838148Y111348D01* +X838175Y111265D01* +X838203Y111225D01* +X838229Y111168D01* +X838325Y111055D01* +X838370Y110991D01* +X838784Y110577D01* +X838785Y110577D01* +X840868Y108494D01* +X840868Y105306D01* +X840876Y105248D01* +X840874Y105190D01* +X840896Y105108D01* +X840908Y105024D01* +X840931Y104971D01* +X840946Y104915D01* +X840989Y104842D01* +X841024Y104765D01* +X841062Y104720D01* +X841091Y104670D01* +X841153Y104612D01* +X841207Y104548D01* +X841256Y104516D01* +X841299Y104476D01* +X841374Y104437D01* +X841444Y104390D01* +X841500Y104373D01* +X841552Y104346D01* +X841620Y104335D01* +X841715Y104305D01* +X841815Y104302D01* +X841883Y104291D01* +X844139Y104291D01* +X844603Y103826D01* +X844673Y103774D01* +X844737Y103714D01* +X844786Y103688D01* +X844830Y103655D01* +X844912Y103624D01* +X844990Y103584D01* +X845038Y103576D01* +X845096Y103554D01* +X845244Y103542D01* +X845321Y103529D01* +X883657Y103529D01* +X883743Y103541D01* +X883831Y103544D01* +X883883Y103561D01* +X883938Y103569D01* +X884018Y103604D01* +X884101Y103631D01* +X884140Y103659D01* +X884198Y103685D01* +X884311Y103781D01* +X884375Y103826D01* +X900207Y119658D01* +X900242Y119705D01* +X900284Y119745D01* +X900327Y119818D01* +X900378Y119885D01* +X900398Y119940D01* +X900428Y119991D01* +X900449Y120072D01* +X900479Y120151D01* +X900484Y120209D01* +X900498Y120266D01* +X900495Y120351D01* +X900502Y120434D01* +X900491Y120492D01* +X900489Y120550D01* +X900463Y120631D01* +X900447Y120713D01* +X900420Y120765D01* +X900402Y120821D01* +X900361Y120877D01* +X900316Y120965D01* +X900247Y121038D01* +X900207Y121094D01* +X900007Y121294D01* +X899156Y123348D01* +X899156Y125572D01* +X900007Y127626D01* +X901579Y129198D01* +X903633Y130049D01* +X905856Y130049D01* +X907910Y129198D01* +X909482Y127626D01* +X910333Y125572D01* +X910333Y123348D01* +X909482Y121294D01* +X907909Y119721D01* +X907792Y119651D01* +X907671Y119580D01* +X907670Y119579D01* +X907668Y119578D01* +X907570Y119474D01* +X907475Y119373D01* +X907475Y119372D01* +X907474Y119371D01* +X907410Y119247D01* +X907345Y119120D01* +X907345Y119119D01* +X907344Y119117D01* +X907342Y119103D01* +X907290Y118842D01* +X907293Y118811D01* +X907289Y118786D01* +X907289Y118364D01* +X907293Y118335D01* +X907290Y118306D01* +X907313Y118195D01* +X907329Y118082D01* +X907341Y118056D01* +X907346Y118027D01* +X907398Y117926D01* +X907445Y117823D01* +X907464Y117801D01* +X907477Y117775D01* +X907555Y117692D01* +X907628Y117606D01* +X907653Y117590D01* +X907673Y117568D01* +X907771Y117511D01* +X907865Y117448D01* +X907893Y117440D01* +X907918Y117425D01* +X908028Y117397D01* +X908136Y117363D01* +X908166Y117362D01* +X908194Y117355D01* +X908307Y117358D01* +X908420Y117355D01* +X908449Y117363D01* +X908478Y117364D01* +X908586Y117399D01* +X908695Y117427D01* +X908721Y117442D01* +X908749Y117451D01* +X908812Y117497D01* +X908940Y117572D01* +X908983Y117618D01* +X909022Y117646D01* +X946614Y155238D01* +X946632Y155262D01* +X946654Y155281D01* +X946717Y155375D01* +X946785Y155465D01* +X946795Y155493D01* +X946812Y155517D01* +X946846Y155625D01* +X946886Y155731D01* +X946889Y155760D01* +X946897Y155788D01* +X946900Y155902D01* +X946910Y156014D01* +X946904Y156043D01* +X946905Y156072D01* +X946876Y156182D01* +X946854Y156293D01* +X946840Y156319D01* +X946833Y156347D01* +X946775Y156445D01* +X946723Y156545D01* +X946703Y156567D01* +X946688Y156592D01* +X946605Y156669D01* +X946527Y156751D01* +X946502Y156766D01* +X946480Y156786D01* +X946379Y156838D01* +X946282Y156895D01* +X946253Y156902D01* +X946227Y156916D01* +X946150Y156929D01* +X946006Y156965D01* +X945944Y156963D01* +X945896Y156971D01* +X900437Y156971D01* +X898354Y159054D01* +X898354Y159055D01* +X880186Y177223D01* +X880162Y177240D01* +X880143Y177263D01* +X880049Y177325D01* +X879959Y177393D01* +X879931Y177404D01* +X879907Y177420D01* +X879799Y177454D01* +X879693Y177495D01* +X879664Y177497D01* +X879636Y177506D01* +X879522Y177509D01* +X879410Y177518D01* +X879381Y177513D01* +X879352Y177513D01* +X879242Y177485D01* +X879131Y177462D01* +X879105Y177449D01* +X879077Y177441D01* +X878979Y177384D01* +X878879Y177331D01* +X878857Y177311D01* +X878832Y177296D01* +X878755Y177214D01* +X878673Y177136D01* +X878658Y177110D01* +X878638Y177089D01* +X878586Y176988D01* +X878529Y176890D01* +X878522Y176862D01* +X878508Y176836D01* +X878495Y176758D01* +X878460Y176621D01* +X875827Y173987D01* +X867664Y173987D01* +X867606Y173979D01* +X867548Y173981D01* +X867466Y173959D01* +X867382Y173947D01* +X867329Y173924D01* +X867273Y173909D01* +X867200Y173866D01* +X867123Y173831D01* +X867078Y173793D01* +X867028Y173764D01* +X866970Y173702D01* +X866906Y173648D01* +X866874Y173599D01* +X866834Y173556D01* +X866795Y173481D01* +X866748Y173411D01* +X866731Y173355D01* +X866704Y173303D01* +X866693Y173235D01* +X866663Y173140D01* +X866660Y173040D01* +X866649Y172972D01* +X866649Y170703D01* +X866661Y170616D01* +X866664Y170529D01* +X866681Y170476D01* +X866689Y170421D01* +X866724Y170341D01* +X866751Y170258D01* +X866779Y170219D01* +X866805Y170162D01* +X866901Y170048D01* +X866946Y169985D01* +X868315Y168616D01* +X868385Y168564D01* +X868448Y168504D01* +X868498Y168478D01* +X868542Y168445D01* +X868624Y168414D01* +X868702Y168374D01* +X868749Y168366D01* +X868808Y168344D01* +X868955Y168332D01* +X869033Y168319D01* +X870867Y168319D01* +X870954Y168331D01* +X871041Y168334D01* +X871094Y168351D01* +X871149Y168359D01* +X871229Y168394D01* +X871312Y168421D01* +X871351Y168449D01* +X871408Y168475D01* +X871521Y168571D01* +X871585Y168616D01* +X873022Y170053D01* +X879578Y170053D01* +X881333Y168298D01* +X881333Y162242D01* +X879578Y160487D01* +X873022Y160487D01* +X871585Y161924D01* +X871515Y161976D01* +X871451Y162036D01* +X871402Y162062D01* +X871358Y162095D01* +X871276Y162126D01* +X871198Y162166D01* +X871151Y162174D01* +X871092Y162196D01* +X870945Y162208D01* +X870867Y162221D01* +X869033Y162221D01* +X868946Y162209D01* +X868859Y162206D01* +X868806Y162189D01* +X868751Y162181D01* +X868671Y162146D01* +X868588Y162119D01* +X868549Y162091D01* +X868492Y162065D01* +X868379Y161969D01* +X868315Y161924D01* +X867129Y160738D01* +X867094Y160691D01* +X867051Y160651D01* +X867009Y160578D01* +X866958Y160511D01* +X866937Y160456D01* +X866908Y160406D01* +X866887Y160324D01* +X866857Y160245D01* +X866852Y160187D01* +X866837Y160130D01* +X866840Y160046D01* +X866833Y159962D01* +X866845Y159904D01* +X866846Y159846D01* +X866872Y159766D01* +X866889Y159683D01* +X866916Y159631D01* +X866934Y159575D01* +X866974Y159519D01* +X867020Y159431D01* +X867089Y159358D01* +X867129Y159302D01* +X868633Y157798D01* +X868633Y151742D01* +X866878Y149987D01* +X860322Y149987D01* +X858885Y151424D01* +X858815Y151476D01* +X858751Y151536D01* +X858702Y151562D01* +X858658Y151595D01* +X858576Y151626D01* +X858498Y151666D01* +X858451Y151674D01* +X858392Y151696D01* +X858245Y151708D01* +X858167Y151721D01* +X854806Y151721D01* +X854805Y151721D01* +X854803Y151721D01* +X854663Y151701D01* +X854525Y151681D01* +X854523Y151681D01* +X854522Y151681D01* +X854396Y151624D01* +X854266Y151565D01* +X854264Y151564D01* +X854263Y151563D01* +X854156Y151472D01* +X854049Y151382D01* +X854048Y151380D01* +X854046Y151379D01* +X854038Y151366D01* +X853891Y151145D01* +X853882Y151116D01* +X853868Y151095D01* +X853098Y149234D01* +X851706Y147842D01* +X851654Y147773D01* +X851594Y147709D01* +X851568Y147659D01* +X851535Y147615D01* +X851504Y147533D01* +X851464Y147456D01* +X851456Y147408D01* +X851434Y147350D01* +X851422Y147202D01* +X851409Y147125D01* +X851409Y143899D01* +X851413Y143870D01* +X851410Y143841D01* +X851433Y143730D01* +X851449Y143618D01* +X851461Y143591D01* +X851466Y143562D01* +X851519Y143462D01* +X851565Y143358D01* +X851584Y143336D01* +X851597Y143310D01* +X851675Y143228D01* +X851748Y143141D01* +X851773Y143125D01* +X851793Y143104D01* +X851891Y143047D01* +X851985Y142984D01* +X852013Y142975D01* +X852038Y142960D01* +X852148Y142932D01* +X852256Y142898D01* +X852286Y142897D01* +X852314Y142890D01* +X852427Y142894D01* +X852540Y142891D01* +X852569Y142898D01* +X852598Y142899D01* +X852706Y142934D01* +X852815Y142963D01* +X852841Y142978D01* +X852869Y142987D01* +X852932Y143032D01* +X853060Y143108D01* +X853103Y143153D01* +X853142Y143181D01* +X856013Y146053D01* +X875827Y146053D01* +X878453Y143427D01* +X878453Y130613D01* +X875827Y127987D01* +X856013Y127987D01* +X853387Y130613D01* +X853387Y132956D01* +X853379Y133014D01* +X853381Y133072D01* +X853359Y133154D01* +X853347Y133238D01* +X853324Y133291D01* +X853309Y133347D01* +X853266Y133420D01* +X853231Y133497D01* +X853193Y133542D01* +X853164Y133592D01* +X853102Y133650D01* +X853048Y133714D01* +X852999Y133746D01* +X852956Y133786D01* +X852881Y133825D01* +X852811Y133872D01* +X852755Y133889D01* +X852703Y133916D01* +X852635Y133927D01* +X852540Y133957D01* +X852440Y133960D01* +X852372Y133971D01* +X849777Y133971D01* +X845311Y138437D01* +X845311Y147125D01* +X845299Y147211D01* +X845296Y147299D01* +X845279Y147351D01* +X845271Y147406D01* +X845236Y147486D01* +X845209Y147569D01* +X845181Y147608D01* +X845155Y147665D01* +X845059Y147779D01* +X845014Y147842D01* +X843622Y149234D01* +X842771Y151288D01* +X842771Y153512D01* +X843622Y155566D01* +X845194Y157138D01* +X847248Y157989D01* +X849472Y157989D01* +X849696Y157896D01* +X849725Y157888D01* +X849753Y157874D01* +X849830Y157861D01* +X849971Y157825D01* +X850035Y157827D01* +X850084Y157819D01* +X858167Y157819D01* +X858254Y157831D01* +X858341Y157834D01* +X858394Y157851D01* +X858449Y157859D01* +X858529Y157894D01* +X858612Y157921D01* +X858651Y157949D01* +X858708Y157975D01* +X858821Y158071D01* +X858885Y158116D01* +X860071Y159302D01* +X860106Y159349D01* +X860149Y159389D01* +X860191Y159462D01* +X860242Y159529D01* +X860263Y159584D01* +X860292Y159634D01* +X860313Y159716D01* +X860343Y159795D01* +X860348Y159853D01* +X860363Y159910D01* +X860360Y159994D01* +X860367Y160078D01* +X860355Y160136D01* +X860354Y160194D01* +X860328Y160274D01* +X860311Y160357D01* +X860284Y160409D01* +X860266Y160465D01* +X860226Y160521D01* +X860180Y160609D01* +X860111Y160682D01* +X860071Y160738D01* +X858567Y162242D01* +X858567Y168298D01* +X860254Y169985D01* +X860306Y170055D01* +X860366Y170118D01* +X860392Y170168D01* +X860425Y170212D01* +X860456Y170294D01* +X860496Y170372D01* +X860504Y170419D01* +X860526Y170478D01* +X860538Y170625D01* +X860551Y170703D01* +X860551Y172972D01* +X860543Y173030D01* +X860545Y173088D01* +X860523Y173170D01* +X860511Y173254D01* +X860488Y173307D01* +X860473Y173363D01* +X860430Y173436D01* +X860395Y173513D01* +X860357Y173558D01* +X860328Y173608D01* +X860266Y173666D01* +X860212Y173730D01* +X860163Y173762D01* +X860120Y173802D01* +X860045Y173841D01* +X859975Y173888D01* +X859919Y173905D01* +X859867Y173932D01* +X859799Y173943D01* +X859704Y173973D01* +X859604Y173976D01* +X859536Y173987D01* +X856013Y173987D01* +X853387Y176613D01* +X853387Y178956D01* +X853379Y179014D01* +X853381Y179072D01* +X853359Y179154D01* +X853347Y179238D01* +X853324Y179291D01* +X853309Y179347D01* +X853266Y179420D01* +X853231Y179497D01* +X853193Y179542D01* +X853164Y179592D01* +X853102Y179650D01* +X853048Y179714D01* +X852999Y179746D01* +X852956Y179786D01* +X852881Y179825D01* +X852811Y179872D01* +X852755Y179889D01* +X852703Y179916D01* +X852635Y179927D01* +X852540Y179957D01* +X852440Y179960D01* +X852372Y179971D01* +X788468Y179971D01* +X788410Y179963D01* +X788352Y179965D01* +X788270Y179943D01* +X788186Y179931D01* +X788133Y179908D01* +X788077Y179893D01* +X788004Y179850D01* +X787927Y179815D01* +X787882Y179777D01* +X787832Y179748D01* +X787774Y179686D01* +X787710Y179632D01* +X787678Y179583D01* +X787638Y179540D01* +X787599Y179465D01* +X787552Y179395D01* +X787535Y179339D01* +X787508Y179287D01* +X787497Y179219D01* +X787467Y179124D01* +X787464Y179024D01* +X787453Y178956D01* +X787453Y176613D01* +X784827Y173987D01* +X765013Y173987D01* +X762387Y176613D01* +X762387Y189427D01* +X765013Y192053D01* +X784827Y192053D01* +X787453Y189427D01* +X787453Y187084D01* +X787461Y187026D01* +X787459Y186968D01* +X787481Y186886D01* +X787493Y186802D01* +X787516Y186749D01* +X787531Y186693D01* +X787574Y186620D01* +X787609Y186543D01* +X787647Y186498D01* +X787676Y186448D01* +X787738Y186390D01* +X787792Y186326D01* +X787841Y186294D01* +X787884Y186254D01* +X787959Y186215D01* +X788029Y186168D01* +X788085Y186151D01* +X788137Y186124D01* +X788205Y186113D01* +X788300Y186083D01* +X788400Y186080D01* +X788468Y186069D01* +X852372Y186069D01* +X852430Y186077D01* +X852488Y186075D01* +X852570Y186097D01* +X852654Y186109D01* +X852707Y186132D01* +X852763Y186147D01* +X852836Y186190D01* +X852913Y186225D01* +X852958Y186263D01* +X853008Y186292D01* +X853066Y186354D01* +X853130Y186408D01* +X853162Y186457D01* +X853202Y186500D01* +X853241Y186575D01* +X853288Y186645D01* +X853305Y186701D01* +X853332Y186753D01* +X853343Y186821D01* +X853373Y186916D01* +X853376Y187016D01* +X853387Y187084D01* +X853387Y189427D01* +X856013Y192053D01* +X873351Y192053D01* +X873380Y192057D01* +X873409Y192054D01* +X873520Y192077D01* +X873633Y192093D01* +X873659Y192105D01* +X873688Y192110D01* +X873789Y192162D01* +X873892Y192209D01* +X873914Y192228D01* +X873940Y192241D01* +X874022Y192319D01* +X874109Y192392D01* +X874125Y192417D01* +X874146Y192437D01* +X874204Y192535D01* +X874267Y192629D01* +X874275Y192657D01* +X874290Y192682D01* +X874318Y192792D01* +X874352Y192900D01* +X874353Y192930D01* +X874360Y192958D01* +X874357Y193071D01* +X874360Y193184D01* +X874352Y193213D01* +X874351Y193242D01* +X874316Y193350D01* +X874288Y193459D01* +X874273Y193485D01* +X874264Y193513D01* +X874218Y193576D01* +X874143Y193704D01* +X874097Y193747D01* +X874069Y193786D01* +X870513Y197342D01* +X870443Y197394D01* +X870379Y197454D01* +X870330Y197480D01* +X870286Y197513D01* +X870204Y197544D01* +X870126Y197584D01* +X870078Y197592D01* +X870020Y197614D01* +X869872Y197626D01* +X869795Y197639D01* +X714041Y197639D01* +X713954Y197627D01* +X713867Y197624D01* +X713814Y197607D01* +X713759Y197599D01* +X713680Y197564D01* +X713596Y197537D01* +X713557Y197509D01* +X713500Y197483D01* +X713387Y197387D01* +X713323Y197342D01* +X695952Y179971D01* +X694048Y179971D01* +X693990Y179963D01* +X693932Y179965D01* +X693850Y179943D01* +X693766Y179931D01* +X693713Y179908D01* +X693657Y179893D01* +X693584Y179850D01* +X693507Y179815D01* +X693462Y179777D01* +X693412Y179748D01* +X693354Y179686D01* +X693290Y179632D01* +X693258Y179583D01* +X693218Y179540D01* +X693179Y179465D01* +X693132Y179395D01* +X693115Y179339D01* +X693088Y179287D01* +X693077Y179219D01* +X693047Y179124D01* +X693044Y179024D01* +X693033Y178956D01* +X693033Y176613D01* +X690407Y173987D01* +X682244Y173987D01* +X682186Y173979D01* +X682128Y173981D01* +X682046Y173959D01* +X681962Y173947D01* +X681909Y173924D01* +X681853Y173909D01* +X681780Y173866D01* +X681703Y173831D01* +X681658Y173793D01* +X681608Y173764D01* +X681550Y173702D01* +X681486Y173648D01* +X681454Y173599D01* +X681414Y173556D01* +X681375Y173481D01* +X681328Y173411D01* +X681311Y173355D01* +X681284Y173303D01* +X681273Y173235D01* +X681243Y173140D01* +X681240Y173040D01* +X681229Y172972D01* +X681229Y170703D01* +X681241Y170616D01* +X681244Y170529D01* +X681261Y170476D01* +X681269Y170421D01* +X681304Y170341D01* +X681331Y170258D01* +X681359Y170219D01* +X681385Y170162D01* +X681481Y170049D01* +X681526Y169985D01* +X682895Y168616D01* +X682965Y168564D01* +X683029Y168504D01* +X683078Y168478D01* +X683122Y168445D01* +X683204Y168414D01* +X683282Y168374D01* +X683329Y168366D01* +X683388Y168344D01* +X683535Y168332D01* +X683613Y168319D01* +X687987Y168319D01* +X688074Y168331D01* +X688161Y168334D01* +X688214Y168351D01* +X688269Y168359D01* +X688349Y168394D01* +X688432Y168421D01* +X688471Y168449D01* +X688528Y168475D01* +X688641Y168571D01* +X688705Y168616D01* +X690142Y170053D01* +X696698Y170053D01* +X698453Y168298D01* +X698453Y162242D01* +X696698Y160487D01* +X690142Y160487D01* +X688705Y161924D01* +X688635Y161976D01* +X688572Y162036D01* +X688522Y162062D01* +X688478Y162095D01* +X688396Y162126D01* +X688318Y162166D01* +X688271Y162174D01* +X688212Y162196D01* +X688065Y162208D01* +X687987Y162221D01* +X683613Y162221D01* +X683526Y162209D01* +X683439Y162206D01* +X683386Y162189D01* +X683331Y162181D01* +X683251Y162146D01* +X683168Y162119D01* +X683129Y162091D01* +X683072Y162065D01* +X682959Y161969D01* +X682895Y161924D01* +X681709Y160738D01* +X681674Y160691D01* +X681631Y160651D01* +X681589Y160578D01* +X681538Y160511D01* +X681517Y160456D01* +X681488Y160406D01* +X681467Y160324D01* +X681437Y160245D01* +X681432Y160187D01* +X681417Y160130D01* +X681420Y160046D01* +X681413Y159962D01* +X681425Y159904D01* +X681426Y159846D01* +X681452Y159766D01* +X681469Y159683D01* +X681496Y159631D01* +X681514Y159575D01* +X681554Y159519D01* +X681600Y159431D01* +X681669Y159358D01* +X681709Y159302D01* +X683213Y157798D01* +X683213Y151742D01* +X681458Y149987D01* +X674902Y149987D01* +X673667Y151222D01* +X673621Y151257D01* +X673580Y151299D01* +X673507Y151342D01* +X673440Y151393D01* +X673385Y151414D01* +X673335Y151443D01* +X673253Y151464D01* +X673174Y151494D01* +X673116Y151499D01* +X673059Y151513D01* +X672975Y151511D01* +X672891Y151518D01* +X672834Y151506D01* +X672775Y151504D01* +X672695Y151478D01* +X672612Y151462D01* +X672560Y151435D01* +X672505Y151417D01* +X672448Y151377D01* +X672360Y151331D01* +X672288Y151262D01* +X672231Y151222D01* +X671186Y150176D01* +X669132Y149325D01* +X666908Y149325D01* +X664854Y150176D01* +X663282Y151748D01* +X662431Y153802D01* +X662431Y156026D01* +X663282Y158080D01* +X664854Y159652D01* +X666908Y160503D01* +X669132Y160503D01* +X671186Y159652D01* +X672375Y158462D01* +X672422Y158427D01* +X672462Y158385D01* +X672535Y158342D01* +X672603Y158291D01* +X672657Y158270D01* +X672708Y158241D01* +X672789Y158220D01* +X672868Y158190D01* +X672927Y158185D01* +X672983Y158171D01* +X673068Y158173D01* +X673152Y158166D01* +X673209Y158178D01* +X673267Y158180D01* +X673348Y158206D01* +X673430Y158222D01* +X673482Y158249D01* +X673538Y158267D01* +X673594Y158307D01* +X673683Y158353D01* +X673755Y158422D01* +X673811Y158462D01* +X674651Y159302D01* +X674686Y159349D01* +X674729Y159389D01* +X674771Y159462D01* +X674822Y159529D01* +X674843Y159584D01* +X674872Y159634D01* +X674893Y159716D01* +X674923Y159795D01* +X674928Y159853D01* +X674943Y159910D01* +X674940Y159994D01* +X674947Y160078D01* +X674935Y160136D01* +X674934Y160194D01* +X674908Y160274D01* +X674891Y160357D01* +X674864Y160409D01* +X674846Y160465D01* +X674806Y160521D01* +X674760Y160609D01* +X674691Y160682D01* +X674651Y160738D01* +X673147Y162242D01* +X673147Y168298D01* +X674834Y169985D01* +X674886Y170055D01* +X674946Y170119D01* +X674972Y170168D01* +X675005Y170212D01* +X675036Y170294D01* +X675076Y170372D01* +X675084Y170419D01* +X675106Y170478D01* +X675118Y170625D01* +X675131Y170703D01* +X675131Y172972D01* +X675123Y173030D01* +X675125Y173088D01* +X675103Y173170D01* +X675091Y173254D01* +X675068Y173307D01* +X675053Y173363D01* +X675010Y173436D01* +X674975Y173513D01* +X674937Y173558D01* +X674908Y173608D01* +X674846Y173666D01* +X674792Y173730D01* +X674743Y173762D01* +X674700Y173802D01* +X674625Y173841D01* +X674555Y173888D01* +X674499Y173905D01* +X674447Y173932D01* +X674379Y173943D01* +X674284Y173973D01* +X674184Y173976D01* +X674116Y173987D01* +X670593Y173987D01* +X667967Y176613D01* +X667967Y178956D01* +X667959Y179014D01* +X667961Y179072D01* +X667939Y179154D01* +X667927Y179238D01* +X667904Y179291D01* +X667889Y179347D01* +X667846Y179420D01* +X667811Y179497D01* +X667773Y179542D01* +X667744Y179592D01* +X667682Y179650D01* +X667628Y179714D01* +X667579Y179746D01* +X667536Y179786D01* +X667461Y179825D01* +X667391Y179872D01* +X667335Y179889D01* +X667283Y179916D01* +X667215Y179927D01* +X667120Y179957D01* +X667020Y179960D01* +X666952Y179971D01* +X603048Y179971D01* +X602990Y179963D01* +X602932Y179965D01* +X602850Y179943D01* +X602766Y179931D01* +X602713Y179908D01* +X602657Y179893D01* +X602584Y179850D01* +X602507Y179815D01* +X602462Y179777D01* +X602412Y179748D01* +X602354Y179686D01* +X602290Y179632D01* +X602258Y179583D01* +X602218Y179540D01* +X602179Y179465D01* +X602132Y179395D01* +X602115Y179339D01* +X602088Y179287D01* +X602077Y179219D01* +X602047Y179124D01* +X602044Y179024D01* +X602033Y178956D01* +X602033Y176613D01* +X599407Y173987D01* +X579593Y173987D01* +X578822Y174759D01* +X578798Y174776D01* +X578779Y174799D01* +X578685Y174861D01* +X578595Y174929D01* +X578567Y174940D01* +X578543Y174956D01* +X578435Y174990D01* +X578329Y175031D01* +X578300Y175033D01* +X578272Y175042D01* +X578158Y175045D01* +X578046Y175054D01* +X578017Y175049D01* +X577988Y175049D01* +X577878Y175021D01* +X577767Y174998D01* +X577741Y174985D01* +X577713Y174977D01* +X577615Y174920D01* +X577515Y174867D01* +X577493Y174847D01* +X577468Y174832D01* +X577390Y174749D01* +X577309Y174672D01* +X577294Y174646D01* +X577274Y174625D01* +X577222Y174524D01* +X577165Y174426D01* +X577158Y174398D01* +X577144Y174372D01* +X577131Y174294D01* +X577095Y174151D01* +X577097Y174088D01* +X577089Y174041D01* +X577089Y161127D01* +X571670Y155709D01* +X571618Y155639D01* +X571558Y155575D01* +X571532Y155525D01* +X571499Y155481D01* +X571468Y155400D01* +X571428Y155322D01* +X571420Y155274D01* +X571398Y155216D01* +X571386Y155068D01* +X571373Y154991D01* +X571373Y151662D01* +X569618Y149907D01* +X563562Y149907D01* +X562058Y151411D01* +X562011Y151446D01* +X561971Y151489D01* +X561898Y151531D01* +X561831Y151582D01* +X561776Y151603D01* +X561726Y151632D01* +X561644Y151653D01* +X561565Y151683D01* +X561507Y151688D01* +X561450Y151703D01* +X561366Y151700D01* +X561282Y151707D01* +X561224Y151695D01* +X561166Y151694D01* +X561086Y151668D01* +X561003Y151651D01* +X560951Y151624D01* +X560895Y151606D01* +X560839Y151566D01* +X560751Y151520D01* +X560678Y151451D01* +X560622Y151411D01* +X559118Y149907D01* +X553062Y149907D01* +X551205Y151764D01* +X551135Y151816D01* +X551071Y151876D01* +X551022Y151902D01* +X550978Y151935D01* +X550896Y151966D01* +X550818Y152006D01* +X550771Y152014D01* +X550712Y152036D01* +X550565Y152048D01* +X550487Y152061D01* +X548993Y152061D01* +X548906Y152049D01* +X548819Y152046D01* +X548766Y152029D01* +X548711Y152021D01* +X548631Y151986D01* +X548548Y151959D01* +X548509Y151931D01* +X548452Y151905D01* +X548339Y151809D01* +X548275Y151764D01* +X547089Y150578D01* +X547054Y150531D01* +X547011Y150491D01* +X546969Y150418D01* +X546918Y150351D01* +X546897Y150296D01* +X546868Y150246D01* +X546847Y150164D01* +X546817Y150085D01* +X546812Y150027D01* +X546797Y149970D01* +X546800Y149886D01* +X546793Y149802D01* +X546805Y149744D01* +X546806Y149686D01* +X546832Y149606D01* +X546849Y149523D01* +X546876Y149471D01* +X546894Y149415D01* +X546934Y149359D01* +X546980Y149271D01* +X547049Y149198D01* +X547089Y149142D01* +X548593Y147638D01* +X548593Y141582D01* +X547265Y140254D01* +X547230Y140208D01* +X547188Y140167D01* +X547145Y140094D01* +X547094Y140027D01* +X547073Y139972D01* +X547044Y139922D01* +X547023Y139840D01* +X546993Y139761D01* +X546988Y139703D01* +X546974Y139646D01* +X546976Y139562D01* +X546969Y139478D01* +X546981Y139421D01* +X546983Y139362D01* +X547009Y139282D01* +X547025Y139199D01* +X547052Y139147D01* +X547070Y139092D01* +X547110Y139035D01* +X547156Y138947D01* +X547225Y138875D01* +X547265Y138818D01* +X548298Y137786D01* +X549149Y135732D01* +X549149Y133508D01* +X548298Y131454D01* +X546726Y129882D01* +X544672Y129031D01* +X542448Y129031D01* +X540394Y129882D01* +X538822Y131454D01* +X538186Y132990D01* +X538142Y133064D01* +X538107Y133142D01* +X538070Y133186D01* +X538041Y133235D01* +X537979Y133294D01* +X537923Y133359D01* +X537876Y133391D01* +X537835Y133430D01* +X537758Y133469D01* +X537687Y133517D01* +X537633Y133534D01* +X537582Y133560D01* +X537498Y133577D01* +X537416Y133603D01* +X537359Y133604D01* +X537303Y133615D01* +X537218Y133608D01* +X537132Y133610D01* +X537077Y133596D01* +X537020Y133591D01* +X536940Y133560D01* +X536857Y133538D01* +X536808Y133509D01* +X536755Y133489D01* +X536686Y133437D01* +X536612Y133393D01* +X536573Y133352D01* +X536528Y133317D01* +X536476Y133248D01* +X536418Y133186D01* +X536392Y133135D01* +X536358Y133090D01* +X536327Y133009D01* +X536288Y132933D01* +X536280Y132884D01* +X536257Y132824D01* +X536246Y132679D01* +X536233Y132602D01* +X536233Y129803D01* +X534017Y127587D01* +X523383Y127587D01* +X521167Y129803D01* +X521167Y139437D01* +X523383Y141653D01* +X529716Y141653D01* +X529774Y141661D01* +X529832Y141659D01* +X529914Y141681D01* +X529998Y141693D01* +X530051Y141716D01* +X530107Y141731D01* +X530180Y141774D01* +X530257Y141809D01* +X530302Y141847D01* +X530352Y141876D01* +X530410Y141938D01* +X530474Y141992D01* +X530506Y142041D01* +X530546Y142084D01* +X530585Y142159D01* +X530632Y142229D01* +X530649Y142285D01* +X530676Y142337D01* +X530687Y142405D01* +X530717Y142500D01* +X530720Y142600D01* +X530731Y142668D01* +X530731Y152089D01* +X530727Y152118D01* +X530730Y152148D01* +X530707Y152259D01* +X530691Y152371D01* +X530679Y152398D01* +X530674Y152426D01* +X530622Y152527D01* +X530575Y152630D01* +X530556Y152653D01* +X530543Y152679D01* +X530465Y152761D01* +X530392Y152847D01* +X530367Y152864D01* +X530347Y152885D01* +X530249Y152942D01* +X530155Y153005D01* +X530127Y153014D01* +X530102Y153029D01* +X529992Y153056D01* +X529884Y153091D01* +X529855Y153091D01* +X529826Y153099D01* +X529713Y153095D01* +X529600Y153098D01* +X529571Y153091D01* +X529542Y153090D01* +X529434Y153055D01* +X529325Y153026D01* +X529299Y153011D01* +X529271Y153002D01* +X529208Y152957D01* +X529080Y152881D01* +X529067Y152867D01* +X522502Y152867D01* +X521065Y154304D01* +X520995Y154356D01* +X520931Y154416D01* +X520882Y154442D01* +X520838Y154475D01* +X520756Y154506D01* +X520678Y154546D01* +X520631Y154554D01* +X520572Y154576D01* +X520425Y154588D01* +X520347Y154601D01* +X518513Y154601D01* +X518426Y154589D01* +X518339Y154586D01* +X518286Y154569D01* +X518231Y154561D01* +X518151Y154526D01* +X518068Y154499D01* +X518029Y154471D01* +X517972Y154445D01* +X517859Y154349D01* +X517795Y154304D01* +X516358Y152867D01* +X509802Y152867D01* +X508047Y154622D01* +X508047Y157801D01* +X508043Y157831D01* +X508046Y157860D01* +X508023Y157971D01* +X508007Y158083D01* +X507995Y158110D01* +X507990Y158138D01* +X507937Y158239D01* +X507891Y158342D01* +X507872Y158365D01* +X507859Y158391D01* +X507781Y158473D01* +X507708Y158559D01* +X507683Y158576D01* +X507663Y158597D01* +X507565Y158654D01* +X507471Y158717D01* +X507443Y158726D01* +X507418Y158741D01* +X507308Y158768D01* +X507200Y158803D01* +X507170Y158803D01* +X507142Y158811D01* +X507029Y158807D01* +X506916Y158810D01* +X506887Y158803D01* +X506858Y158802D01* +X506750Y158767D01* +X506641Y158738D01* +X506615Y158723D01* +X506587Y158714D01* +X506523Y158669D01* +X506396Y158593D01* +X506353Y158547D01* +X506314Y158519D01* +X505966Y158171D01* +X503912Y157320D01* +X501688Y157320D01* +X499634Y158171D01* +X498062Y159743D01* +X497802Y160371D01* +X497758Y160445D01* +X497723Y160524D01* +X497686Y160567D01* +X497657Y160616D01* +X497595Y160675D01* +X497539Y160741D01* +X497492Y160772D01* +X497451Y160811D01* +X497374Y160850D01* +X497303Y160898D01* +X497249Y160915D01* +X497198Y160941D01* +X497114Y160958D01* +X497032Y160984D01* +X496975Y160985D01* +X496919Y160996D01* +X496834Y160989D01* +X496748Y160991D01* +X496693Y160977D01* +X496636Y160972D01* +X496556Y160941D01* +X496473Y160919D01* +X496424Y160890D01* +X496371Y160870D01* +X496302Y160818D01* +X496228Y160774D01* +X496189Y160733D01* +X496144Y160698D01* +X496092Y160630D01* +X496034Y160567D01* +X496008Y160516D01* +X495974Y160471D01* +X495943Y160390D01* +X495904Y160314D01* +X495896Y160265D01* +X495873Y160205D01* +X495862Y160060D01* +X495849Y159983D01* +X495849Y148597D01* +X471203Y123951D01* +X445023Y123951D01* +X444936Y123939D01* +X444849Y123936D01* +X444796Y123919D01* +X444741Y123911D01* +X444661Y123876D01* +X444578Y123849D01* +X444539Y123821D01* +X444482Y123795D01* +X444369Y123699D01* +X444305Y123654D01* +X442618Y121967D01* +X436562Y121967D01* +X435058Y123471D01* +X435011Y123506D01* +X434971Y123549D01* +X434898Y123591D01* +X434831Y123642D01* +X434776Y123663D01* +X434726Y123692D01* +X434644Y123713D01* +X434565Y123743D01* +X434507Y123748D01* +X434450Y123763D01* +X434366Y123760D01* +X434282Y123767D01* +X434224Y123755D01* +X434166Y123754D01* +X434086Y123728D01* +X434003Y123711D01* +X433951Y123684D01* +X433895Y123666D01* +X433839Y123626D01* +X433751Y123580D01* +X433678Y123511D01* +X433622Y123471D01* +X432118Y121967D01* +X426062Y121967D01* +X424375Y123654D01* +X424305Y123706D01* +X424241Y123766D01* +X424192Y123792D01* +X424148Y123825D01* +X424066Y123856D01* +X423988Y123896D01* +X423941Y123904D01* +X423882Y123926D01* +X423735Y123938D01* +X423657Y123951D01* +X380313Y123951D01* +X380227Y123939D01* +X380139Y123936D01* +X380087Y123919D01* +X380032Y123911D01* +X379952Y123876D01* +X379869Y123849D01* +X379830Y123821D01* +X379772Y123795D01* +X379768Y123792D01* +X379659Y123699D01* +X379595Y123654D01* +X376039Y120098D01* +X367193Y111251D01* +X298863Y111251D01* +X298777Y111239D01* +X298689Y111236D01* +X298637Y111219D01* +X298582Y111211D01* +X298502Y111176D01* +X298419Y111149D01* +X298380Y111121D01* +X298322Y111095D01* +X298209Y110999D01* +X298145Y110954D01* +X278123Y90931D01* +X199397Y90931D01* +X159511Y130817D01* +X159511Y171443D01* +X191463Y203394D01* +X191515Y203464D01* +X191575Y203528D01* +X191600Y203577D01* +X191633Y203621D01* +X191665Y203703D01* +X191704Y203781D01* +X191712Y203829D01* +X191735Y203887D01* +X191747Y204035D01* +X191760Y204112D01* +X191760Y219666D01* +X191760Y219667D01* +X191760Y219669D01* +X191740Y219809D01* +X191720Y219947D01* +X191719Y219949D01* +X191719Y219950D01* +X191662Y220076D01* +X191604Y220206D01* +X191603Y220208D01* +X191602Y220209D01* +X191511Y220316D01* +X191420Y220423D01* +X191419Y220424D01* +X191418Y220426D01* +X191405Y220434D01* +X191184Y220581D01* +X191154Y220590D01* +X191133Y220604D01* +X188621Y221644D01* +X185549Y224717D01* +X183886Y228731D01* +X183886Y233076D01* +X185549Y237091D01* +X188621Y240164D01* +X192636Y241827D01* +X196981Y241827D01* +X200996Y240164D01* +X204069Y237091D01* +X205731Y233076D01* +X205731Y228731D01* +X204069Y224717D01* +X200996Y221644D01* +X198484Y220604D01* +X198483Y220603D01* +X198481Y220602D01* +X198363Y220532D01* +X198239Y220459D01* +X198238Y220458D01* +X198237Y220457D01* +X198139Y220353D01* +X198044Y220252D01* +X198043Y220251D01* +X198042Y220250D01* +X197978Y220124D01* +X197914Y220000D01* +X197914Y219998D01* +X197913Y219997D01* +X197910Y219982D01* +X197859Y219721D01* +X197862Y219690D01* +X197857Y219666D01* +X197857Y201166D01* +X165906Y169215D01* +X165854Y169145D01* +X165794Y169081D01* +X165768Y169031D01* +X165735Y168987D01* +X165704Y168906D01* +X165664Y168828D01* +X165656Y168780D01* +X165634Y168722D01* +X165622Y168574D01* +X165609Y168497D01* +X165609Y133763D01* +X165621Y133677D01* +X165624Y133589D01* +X165641Y133537D01* +X165649Y133482D01* +X165684Y133402D01* +X165711Y133319D01* +X165739Y133280D01* +X165765Y133222D01* +X165861Y133109D01* +X165875Y133088D01* +X165881Y133079D01* +X165885Y133076D01* +X165906Y133045D01* +X174827Y124125D01* +X174850Y124107D01* +X174869Y124085D01* +X174963Y124022D01* +X175054Y123954D01* +X175081Y123943D01* +X175106Y123927D01* +X175214Y123893D01* +X175320Y123853D01* +X175349Y123850D01* +X175377Y123841D01* +X175490Y123838D01* +X175603Y123829D01* +X175632Y123835D01* +X175661Y123834D01* +X175771Y123863D01* +X175882Y123885D01* +X175908Y123898D01* +X175936Y123906D01* +X176033Y123964D01* +X176134Y124016D01* +X176155Y124036D01* +X176181Y124051D01* +X176258Y124134D01* +X176340Y124212D01* +X176355Y124237D01* +X176375Y124258D01* +X176427Y124359D01* +X176484Y124457D01* +X176491Y124485D01* +X176504Y124512D01* +X176517Y124589D01* +X176554Y124733D01* +X176552Y124795D01* +X176560Y124843D01* +X176560Y143966D01* +X176560Y143967D01* +X176560Y143969D01* +X176540Y144109D01* +X176520Y144247D01* +X176519Y144249D01* +X176519Y144250D01* +X176462Y144376D01* +X176404Y144506D01* +X176403Y144508D01* +X176402Y144509D01* +X176311Y144616D01* +X176220Y144723D01* +X176219Y144724D01* +X176218Y144726D01* +X176205Y144734D01* +X175984Y144881D01* +X175954Y144890D01* +X175933Y144904D01* +X173421Y145944D01* +X170349Y149017D01* +X168686Y153031D01* +X168686Y157376D01* +X170349Y161391D01* +X173421Y164464D01* +X177436Y166127D01* +X181781Y166127D01* +X185796Y164464D01* +X188869Y161391D01* +X190531Y157376D01* +X190531Y153031D01* +X188869Y149017D01* +X185796Y145944D01* +X183284Y144904D01* +X183283Y144903D01* +X183281Y144902D01* +X183163Y144832D01* +X183039Y144759D01* +X183038Y144758D01* +X183037Y144757D01* +X182939Y144653D01* +X182844Y144552D01* +X182843Y144551D01* +X182842Y144550D01* +X182778Y144424D01* +X182714Y144300D01* +X182714Y144298D01* +X182713Y144297D01* +X182710Y144282D01* +X182659Y144021D01* +X182662Y143990D01* +X182657Y143966D01* +X182657Y134108D01* +X182669Y134023D01* +X182672Y133937D01* +X182689Y133883D01* +X182697Y133827D01* +X182732Y133748D01* +X182759Y133666D01* +X182790Y133619D01* +X182814Y133567D01* +X182869Y133502D01* +X182917Y133430D01* +X182960Y133394D01* +X182997Y133350D01* +X183069Y133303D01* +X183134Y133247D01* +X183186Y133224D01* +X183234Y133193D01* +X183316Y133167D01* +X183394Y133132D01* +X183451Y133124D01* +X183505Y133107D01* +X183591Y133105D01* +X183676Y133093D01* +X183732Y133101D01* +X183789Y133100D01* +X183872Y133121D01* +X183957Y133134D01* +X184009Y133157D01* +X184064Y133171D01* +X184138Y133215D01* +X184216Y133251D01* +X184260Y133287D01* +X184308Y133317D01* +X184367Y133379D01* +X184433Y133435D01* +X184459Y133477D01* +X184503Y133524D01* +X184569Y133653D01* +X184611Y133720D01* +X185544Y135973D01* +X188616Y139045D01* +X192631Y140708D01* +X196976Y140708D01* +X198541Y140060D01* +X198652Y140031D01* +X198762Y139997D01* +X198790Y139996D01* +X198816Y139989D01* +X198931Y139992D01* +X199046Y139989D01* +X199073Y139996D01* +X199101Y139997D01* +X199210Y140032D01* +X199321Y140061D01* +X199345Y140075D01* +X199371Y140084D01* +X199467Y140148D01* +X199565Y140206D01* +X199584Y140227D01* +X199607Y140242D01* +X199681Y140330D01* +X199760Y140414D01* +X199773Y140438D01* +X199790Y140460D01* +X199837Y140565D01* +X199889Y140667D01* +X199893Y140691D01* +X199906Y140719D01* +X199942Y140983D01* +X199945Y140998D01* +X199945Y171059D01* +X244033Y215147D01* +X280851Y215147D01* +X280853Y215147D01* +X280855Y215147D01* +X280995Y215167D01* +X281133Y215186D01* +X281134Y215187D01* +X281136Y215187D01* +X281262Y215244D01* +X281392Y215303D01* +X281394Y215304D01* +X281395Y215304D01* +X281502Y215396D01* +X281609Y215486D01* +X281610Y215488D01* +X281611Y215489D01* +X281620Y215502D01* +X281767Y215723D01* +X281776Y215752D01* +X281789Y215773D01* +X282830Y218285D01* +X285902Y221358D01* +X289917Y223021D01* +X294262Y223021D01* +X298277Y221358D01* +X301349Y218285D01* +X303012Y214271D01* +X303012Y209925D01* +X301349Y205911D01* +X299325Y203887D01* +X299290Y203840D01* +X299248Y203800D01* +X299205Y203727D01* +X299154Y203659D01* +X299134Y203605D01* +X299104Y203554D01* +X299083Y203473D01* +X299053Y203394D01* +X299048Y203335D01* +X299034Y203279D01* +X299037Y203194D01* +X299030Y203110D01* +X299041Y203053D01* +X299043Y202995D01* +X299069Y202914D01* +X299086Y202832D01* +X299112Y202780D01* +X299130Y202724D01* +X299171Y202668D01* +X299217Y202579D01* +X299285Y202507D01* +X299325Y202451D01* +X304834Y196942D01* +X304857Y196925D01* +X304876Y196902D01* +X304928Y196868D01* +X304952Y196845D01* +X304986Y196828D01* +X305061Y196771D01* +X305088Y196761D01* +X305113Y196745D01* +X305221Y196711D01* +X305327Y196670D01* +X305356Y196668D01* +X305384Y196659D01* +X305497Y196656D01* +X305610Y196647D01* +X305639Y196652D01* +X305668Y196652D01* +X305778Y196680D01* +X305889Y196703D01* +X305915Y196716D01* +X305943Y196724D01* +X306040Y196781D01* +X306141Y196834D01* +X306162Y196854D01* +X306187Y196869D01* +X306265Y196951D01* +X306347Y197029D01* +X306362Y197055D01* +X306382Y197076D01* +X306434Y197177D01* +X306491Y197275D01* +X306498Y197303D01* +X306511Y197329D01* +X306524Y197407D01* +X306538Y197462D01* +X306553Y197508D01* +X306553Y197520D01* +X306561Y197550D01* +X306559Y197613D01* +X306567Y197660D01* +X306567Y201571D01* +X308230Y205585D01* +X311302Y208658D01* +X315317Y210321D01* +X319662Y210321D01* +X323677Y208658D01* +X326749Y205585D01* +X328412Y201571D01* +X328412Y197274D01* +X328421Y197216D01* +X328419Y197158D01* +X328440Y197076D01* +X328452Y196992D01* +X328476Y196939D01* +X328491Y196883D01* +X328534Y196810D01* +X328568Y196733D01* +X328606Y196688D01* +X328636Y196638D01* +X328698Y196580D01* +X328752Y196516D01* +X328801Y196484D01* +X328843Y196444D01* +X328918Y196405D01* +X328989Y196358D01* +X329045Y196341D01* +X329097Y196314D01* +X329165Y196303D01* +X329260Y196273D01* +X329360Y196270D01* +X329428Y196259D01* +X342547Y196259D01* +X342634Y196271D01* +X342721Y196274D01* +X342774Y196291D01* +X342829Y196299D01* +X342909Y196334D01* +X342992Y196361D01* +X343031Y196389D01* +X343088Y196415D01* +X343201Y196511D01* +X343265Y196556D01* +X344702Y197993D01* +X351258Y197993D01* +X352865Y196386D01* +X352935Y196334D01* +X352998Y196274D01* +X353048Y196248D01* +X353092Y196215D01* +X353174Y196184D01* +X353252Y196144D01* +X353299Y196136D01* +X353358Y196114D01* +X353505Y196102D01* +X353583Y196089D01* +X415672Y196089D01* +X415730Y196097D01* +X415788Y196095D01* +X415870Y196117D01* +X415954Y196129D01* +X416007Y196152D01* +X416063Y196167D01* +X416136Y196210D01* +X416213Y196245D01* +X416258Y196283D01* +X416308Y196312D01* +X416366Y196374D01* +X416430Y196428D01* +X416462Y196477D01* +X416502Y196520D01* +X416541Y196595D01* +X416588Y196665D01* +X416605Y196721D01* +X416632Y196773D01* +X416643Y196841D01* +X416673Y196936D01* +X416676Y197036D01* +X416679Y197055D01* +X416687Y197104D01* +X416687Y203938D01* +X418442Y205693D01* +X419051Y205693D01* +X419138Y205705D01* +X419225Y205708D01* +X419278Y205725D01* +X419333Y205733D01* +X419412Y205768D01* +X419496Y205795D01* +X419535Y205823D01* +X419592Y205849D01* +X419705Y205945D01* +X419769Y205990D01* +X420452Y206673D01* +X424010Y210231D01* +X424062Y210301D01* +X424122Y210365D01* +X424148Y210414D01* +X424181Y210458D01* +X424212Y210540D01* +X424252Y210618D01* +X424260Y210665D01* +X424282Y210724D01* +X424294Y210872D01* +X424307Y210949D01* +X424307Y214098D01* +X425744Y215535D01* +X425796Y215605D01* +X425856Y215668D01* +X425882Y215718D01* +X425915Y215762D01* +X425946Y215844D01* +X425986Y215922D01* +X425994Y215969D01* +X426016Y216028D01* +X426028Y216175D01* +X426041Y216253D01* +X426041Y219087D01* +X426029Y219173D01* +X426026Y219261D01* +X426009Y219313D01* +X426001Y219368D01* +X425966Y219448D01* +X425939Y219531D01* +X425911Y219571D01* +X425885Y219628D01* +X425831Y219691D01* +X425831Y222243D01* +X428670Y225081D01* +X428722Y225151D01* +X428782Y225215D01* +X428808Y225265D01* +X428841Y225309D01* +X428872Y225390D01* +X428912Y225468D01* +X428920Y225516D01* +X428942Y225574D01* +X428954Y225722D01* +X428967Y225799D01* +X428967Y233417D01* +X431053Y235502D01* +X431088Y235549D01* +X431130Y235589D01* +X431173Y235662D01* +X431223Y235729D01* +X431244Y235784D01* +X431274Y235834D01* +X431295Y235916D01* +X431325Y235995D01* +X431329Y236053D01* +X431344Y236110D01* +X431341Y236194D01* +X431348Y236278D01* +X431337Y236336D01* +X431335Y236394D01* +X431309Y236474D01* +X431292Y236557D01* +X431265Y236609D01* +X431247Y236665D01* +X431207Y236721D01* +X431161Y236809D01* +X431103Y236871D01* +X431091Y236891D01* +X431076Y236905D01* +X431053Y236938D01* +X428967Y239023D01* +X428967Y248657D01* +X430823Y250512D01* +X430823Y250513D01* +X431183Y250873D01* +X441817Y250873D01* +X443782Y248907D01* +X443829Y248872D01* +X443869Y248830D01* +X443942Y248787D01* +X444009Y248737D01* +X444064Y248716D01* +X444114Y248686D01* +X444196Y248665D01* +X444275Y248635D01* +X444333Y248631D01* +X444390Y248616D01* +X444474Y248619D01* +X444558Y248612D01* +X444616Y248623D01* +X444674Y248625D01* +X444754Y248651D01* +X444837Y248668D01* +X444889Y248695D01* +X444945Y248713D01* +X445001Y248753D01* +X445089Y248799D01* +X445162Y248867D01* +X445218Y248907D01* +X447053Y250742D01* +X447088Y250789D01* +X447130Y250829D01* +X447173Y250902D01* +X447223Y250969D01* +X447244Y251024D01* +X447274Y251074D01* +X447295Y251156D01* +X447325Y251235D01* +X447329Y251293D01* +X447344Y251350D01* +X447341Y251434D01* +X447348Y251518D01* +X447337Y251576D01* +X447335Y251634D01* +X447309Y251714D01* +X447292Y251797D01* +X447265Y251849D01* +X447247Y251905D01* +X447207Y251961D01* +X447161Y252049D01* +X447115Y252098D01* +X447102Y252120D01* +X447077Y252143D01* +X447053Y252178D01* +X444967Y254263D01* +X444967Y263897D01* +X447183Y266113D01* +X457817Y266113D01* +X460090Y263840D01* +X460096Y263825D01* +X460111Y263769D01* +X460154Y263696D01* +X460189Y263619D01* +X460227Y263574D01* +X460256Y263524D01* +X460318Y263466D01* +X460372Y263402D01* +X460421Y263370D01* +X460464Y263330D01* +X460539Y263291D01* +X460609Y263244D01* +X460665Y263227D01* +X460717Y263200D01* +X460785Y263189D01* +X460880Y263159D01* +X460980Y263156D01* +X461048Y263145D01* +X469044Y263145D01* +X469762Y262426D01* +X469832Y262374D01* +X469896Y262314D01* +X469945Y262288D01* +X469989Y262255D01* +X470071Y262224D01* +X470149Y262184D01* +X470197Y262176D01* +X470255Y262154D01* +X470403Y262142D01* +X470480Y262129D01* +X471012Y262129D01* +X473066Y261278D01* +X474458Y259886D01* +X474527Y259834D01* +X474591Y259774D01* +X474641Y259748D01* +X474685Y259715D01* +X474766Y259684D01* +X474844Y259644D01* +X474892Y259636D01* +X474950Y259614D01* +X475098Y259602D01* +X475175Y259589D01* +X479092Y259589D01* +X479150Y259597D01* +X479208Y259595D01* +X479290Y259617D01* +X479374Y259629D01* +X479427Y259652D01* +X479483Y259667D01* +X479556Y259710D01* +X479633Y259745D01* +X479678Y259783D01* +X479728Y259812D01* +X479786Y259874D01* +X479850Y259928D01* +X479882Y259977D01* +X479922Y260020D01* +X479961Y260095D01* +X480008Y260165D01* +X480025Y260221D01* +X480052Y260273D01* +X480063Y260341D01* +X480093Y260436D01* +X480096Y260536D01* +X480107Y260604D01* +X480107Y262278D01* +X481862Y264033D01* +X488418Y264033D01* +X490173Y262278D01* +X490173Y256222D01* +X488669Y254718D01* +X488634Y254671D01* +X488591Y254631D01* +X488549Y254558D01* +X488498Y254491D01* +X488477Y254436D01* +X488448Y254386D01* +X488427Y254304D01* +X488397Y254225D01* +X488392Y254167D01* +X488377Y254110D01* +X488380Y254026D01* +X488373Y253942D01* +X488385Y253884D01* +X488386Y253826D01* +X488412Y253746D01* +X488429Y253663D01* +X488456Y253611D01* +X488474Y253555D01* +X488514Y253499D01* +X488560Y253411D01* +X488629Y253338D01* +X488669Y253282D01* +X489855Y252096D01* +X489925Y252044D01* +X489989Y251984D01* +X490038Y251958D01* +X490082Y251925D01* +X490164Y251894D01* +X490242Y251854D01* +X490289Y251846D01* +X490348Y251824D01* +X490495Y251812D01* +X490573Y251799D01* +X492407Y251799D01* +X492494Y251811D01* +X492581Y251814D01* +X492634Y251831D01* +X492689Y251839D01* +X492769Y251874D01* +X492852Y251901D01* +X492891Y251929D01* +X492948Y251955D01* +X493061Y252051D01* +X493125Y252096D01* +X494562Y253533D01* +X501118Y253533D01* +X502385Y252266D01* +X502455Y252214D01* +X502518Y252154D01* +X502568Y252128D01* +X502612Y252095D01* +X502694Y252064D01* +X502772Y252024D01* +X502819Y252016D01* +X502878Y251994D01* +X503025Y251982D01* +X503103Y251969D01* +X508857Y251969D01* +X508943Y251981D01* +X509031Y251984D01* +X509083Y252001D01* +X509138Y252009D01* +X509218Y252044D01* +X509301Y252071D01* +X509340Y252099D01* +X509398Y252125D01* +X509511Y252221D01* +X509575Y252266D01* +X519607Y262299D01* +X522887Y262299D01* +X522974Y262311D01* +X523061Y262314D01* +X523114Y262331D01* +X523169Y262339D01* +X523249Y262374D01* +X523332Y262401D01* +X523371Y262429D01* +X523428Y262455D01* +X523541Y262551D01* +X523605Y262596D01* +X525122Y264113D01* +X531178Y264113D01* +X532682Y262609D01* +X532729Y262574D01* +X532769Y262531D01* +X532842Y262489D01* +X532909Y262438D01* +X532964Y262417D01* +X533014Y262388D01* +X533096Y262367D01* +X533175Y262337D01* +X533233Y262332D01* +X533290Y262317D01* +X533374Y262320D01* +X533458Y262313D01* +X533516Y262325D01* +X533574Y262326D01* +X533654Y262352D01* +X533737Y262369D01* +X533789Y262396D01* +X533845Y262414D01* +X533901Y262454D01* +X533989Y262500D01* +X534062Y262569D01* +X534118Y262609D01* +X535622Y264113D01* +X541678Y264113D01* +X543006Y262785D01* +X543052Y262750D01* +X543093Y262708D01* +X543166Y262665D01* +X543233Y262614D01* +X543288Y262593D01* +X543338Y262564D01* +X543420Y262543D01* +X543499Y262513D01* +X543557Y262508D01* +X543614Y262494D01* +X543698Y262496D01* +X543782Y262489D01* +X543839Y262501D01* +X543898Y262503D01* +X543978Y262529D01* +X544061Y262545D01* +X544113Y262572D01* +X544168Y262590D01* +X544225Y262630D01* +X544313Y262676D01* +X544385Y262745D01* +X544442Y262785D01* +X545474Y263818D01* +X547528Y264669D01* +X549752Y264669D01* +X551806Y263818D01* +X553378Y262246D01* +X554229Y260192D01* +X554229Y257968D01* +X553378Y255914D01* +X551806Y254342D01* +X549752Y253491D01* +X547528Y253491D01* +X545474Y254342D01* +X544442Y255375D01* +X544395Y255410D01* +X544355Y255452D01* +X544282Y255495D01* +X544214Y255546D01* +X544160Y255567D01* +X544109Y255596D01* +X544028Y255617D01* +X543949Y255647D01* +X543890Y255652D01* +X543834Y255666D01* +X543749Y255664D01* +X543665Y255671D01* +X543608Y255659D01* +X543550Y255657D01* +X543469Y255631D01* +X543387Y255615D01* +X543335Y255588D01* +X543279Y255570D01* +X543223Y255530D01* +X543134Y255484D01* +X543062Y255415D01* +X543006Y255375D01* +X541678Y254047D01* +X535622Y254047D01* +X534118Y255551D01* +X534071Y255586D01* +X534031Y255629D01* +X533958Y255671D01* +X533891Y255722D01* +X533836Y255743D01* +X533786Y255772D01* +X533704Y255793D01* +X533625Y255823D01* +X533567Y255828D01* +X533510Y255843D01* +X533426Y255840D01* +X533342Y255847D01* +X533284Y255835D01* +X533226Y255834D01* +X533146Y255808D01* +X533063Y255791D01* +X533011Y255764D01* +X532955Y255746D01* +X532899Y255706D01* +X532811Y255660D01* +X532738Y255591D01* +X532682Y255551D01* +X531178Y254047D01* +X525122Y254047D01* +X523268Y255901D01* +X523221Y255936D01* +X523181Y255978D01* +X523108Y256021D01* +X523041Y256072D01* +X522986Y256093D01* +X522936Y256122D01* +X522854Y256143D01* +X522775Y256173D01* +X522717Y256178D01* +X522660Y256192D01* +X522576Y256190D01* +X522492Y256197D01* +X522435Y256185D01* +X522376Y256183D01* +X522296Y256157D01* +X522213Y256141D01* +X522161Y256114D01* +X522106Y256096D01* +X522050Y256056D01* +X521961Y256010D01* +X521889Y255941D01* +X521832Y255901D01* +X513886Y247955D01* +X513834Y247885D01* +X513774Y247821D01* +X513748Y247771D01* +X513715Y247727D01* +X513684Y247646D01* +X513644Y247568D01* +X513636Y247520D01* +X513614Y247462D01* +X513602Y247314D01* +X513589Y247237D01* +X513589Y245169D01* +X513605Y245055D01* +X513615Y244941D01* +X513625Y244915D01* +X513629Y244888D01* +X513676Y244783D01* +X513717Y244676D01* +X513733Y244654D01* +X513745Y244628D01* +X513819Y244541D01* +X513888Y244449D01* +X513911Y244432D01* +X513928Y244411D01* +X514024Y244348D01* +X514116Y244279D01* +X514142Y244269D01* +X514165Y244254D01* +X514275Y244219D01* +X514382Y244178D01* +X514410Y244176D01* +X514436Y244168D01* +X514551Y244165D01* +X514665Y244156D01* +X514690Y244161D01* +X514720Y244161D01* +X514977Y244228D01* +X514993Y244231D01* +X517048Y245083D01* +X519272Y245083D01* +X521326Y244232D01* +X522898Y242660D01* +X523749Y240606D01* +X523749Y238382D01* +X522898Y236328D01* +X521506Y234936D01* +X521490Y234916D01* +X521472Y234900D01* +X521440Y234853D01* +X521394Y234803D01* +X521368Y234753D01* +X521335Y234709D01* +X521322Y234675D01* +X521314Y234663D01* +X521301Y234622D01* +X521264Y234550D01* +X521256Y234502D01* +X521234Y234444D01* +X521230Y234397D01* +X521229Y234392D01* +X521228Y234373D01* +X521222Y234296D01* +X521209Y234219D01* +X521209Y230862D01* +X521213Y230833D01* +X521210Y230803D01* +X521233Y230692D01* +X521249Y230580D01* +X521261Y230554D01* +X521266Y230525D01* +X521319Y230424D01* +X521365Y230321D01* +X521384Y230298D01* +X521397Y230272D01* +X521475Y230190D01* +X521548Y230104D01* +X521573Y230088D01* +X521593Y230066D01* +X521691Y230009D01* +X521785Y229946D01* +X521813Y229937D01* +X521838Y229923D01* +X521948Y229895D01* +X522056Y229861D01* +X522086Y229860D01* +X522114Y229853D01* +X522227Y229856D01* +X522340Y229853D01* +X522369Y229861D01* +X522398Y229862D01* +X522506Y229896D01* +X522615Y229925D01* +X522641Y229940D01* +X522669Y229949D01* +X522733Y229995D01* +X522860Y230070D01* +X522903Y230116D01* +X522942Y230144D01* +X523070Y230272D01* +X523123Y230342D01* +X523182Y230406D01* +X523208Y230455D01* +X523241Y230499D01* +X523272Y230581D01* +X523312Y230659D01* +X523320Y230706D01* +X523342Y230765D01* +X523354Y230913D01* +X523367Y230990D01* +X523367Y231878D01* +X525122Y233633D01* +X525911Y233633D01* +X525997Y233645D01* +X526085Y233648D01* +X526137Y233665D01* +X526192Y233673D01* +X526272Y233708D01* +X526355Y233735D01* +X526394Y233763D01* +X526452Y233789D01* +X526565Y233885D01* +X526629Y233930D01* +X530395Y237697D01* +X546465Y237697D01* +X566929Y217233D01* +X566929Y216885D01* +X566941Y216799D01* +X566944Y216711D01* +X566961Y216659D01* +X566969Y216604D01* +X567004Y216524D01* +X567031Y216441D01* +X567059Y216402D01* +X567085Y216345D01* +X567181Y216231D01* +X567226Y216168D01* +X568618Y214776D01* +X569469Y212722D01* +X569469Y210498D01* +X568541Y208258D01* +X568532Y208223D01* +X568495Y208140D01* +X568491Y208113D01* +X568481Y208087D01* +X568474Y207998D01* +X568470Y207982D01* +X568470Y207962D01* +X568456Y207859D01* +X568460Y207831D01* +X568458Y207803D01* +X568478Y207703D01* +X568478Y207698D01* +X568480Y207691D01* +X568497Y207577D01* +X568508Y207552D01* +X568513Y207525D01* +X568566Y207423D01* +X568614Y207318D01* +X568632Y207297D01* +X568644Y207272D01* +X568724Y207189D01* +X568798Y207102D01* +X568819Y207088D01* +X568840Y207066D01* +X569070Y206932D01* +X569083Y206924D01* +X569498Y206752D01* +X571070Y205180D01* +X571920Y203126D01* +X571920Y200902D01* +X571660Y200274D01* +X571639Y200191D01* +X571608Y200111D01* +X571603Y200054D01* +X571589Y199999D01* +X571592Y199913D01* +X571585Y199827D01* +X571596Y199771D01* +X571597Y199715D01* +X571624Y199633D01* +X571641Y199549D01* +X571667Y199498D01* +X571684Y199444D01* +X571732Y199373D01* +X571772Y199296D01* +X571811Y199255D01* +X571842Y199208D01* +X571908Y199152D01* +X571967Y199090D01* +X572016Y199061D01* +X572060Y199025D01* +X572138Y198990D01* +X572213Y198946D01* +X572268Y198932D01* +X572320Y198909D01* +X572405Y198897D01* +X572488Y198876D01* +X572545Y198878D01* +X572601Y198870D01* +X572686Y198883D01* +X572772Y198885D01* +X572826Y198903D01* +X572883Y198911D01* +X572961Y198946D01* +X573043Y198973D01* +X573083Y199001D01* +X573142Y199028D01* +X573252Y199122D01* +X573316Y199168D01* +X575774Y201625D01* +X575826Y201695D01* +X575886Y201759D01* +X575912Y201809D01* +X575945Y201853D01* +X575976Y201934D01* +X576016Y202012D01* +X576024Y202060D01* +X576046Y202118D01* +X576058Y202266D01* +X576071Y202343D01* +X576071Y204312D01* +X576922Y206366D01* +X578494Y207938D01* +X580548Y208789D01* +X582772Y208789D01* +X584904Y207905D01* +X584945Y207875D01* +X584972Y207864D01* +X584997Y207848D01* +X585105Y207814D01* +X585211Y207773D01* +X585240Y207771D01* +X585268Y207762D01* +X585381Y207759D01* +X585494Y207750D01* +X585523Y207756D01* +X585552Y207755D01* +X585662Y207783D01* +X585773Y207806D01* +X585799Y207819D01* +X585827Y207827D01* +X585924Y207884D01* +X586025Y207936D01* +X586046Y207957D01* +X586072Y207972D01* +X586149Y208054D01* +X586231Y208132D01* +X586246Y208158D01* +X586266Y208179D01* +X586318Y208280D01* +X586375Y208377D01* +X586382Y208406D01* +X586396Y208432D01* +X586409Y208510D01* +X586445Y208653D01* +X586443Y208716D01* +X586451Y208763D01* +X586451Y231777D01* +X586439Y231863D01* +X586436Y231951D01* +X586419Y232003D01* +X586411Y232058D01* +X586376Y232138D01* +X586349Y232221D01* +X586321Y232260D01* +X586295Y232318D01* +X586199Y232431D01* +X586154Y232495D01* +X540465Y278184D01* +X540373Y278252D01* +X540285Y278327D01* +X540260Y278338D01* +X540238Y278355D01* +X540130Y278395D01* +X540025Y278442D01* +X539998Y278446D01* +X539972Y278456D01* +X539858Y278465D01* +X539744Y278481D01* +X539716Y278477D01* +X539689Y278479D01* +X539576Y278457D01* +X539462Y278440D01* +X539437Y278429D01* +X539410Y278423D01* +X539308Y278370D01* +X539203Y278323D01* +X539182Y278305D01* +X539158Y278292D01* +X539074Y278213D01* +X538987Y278139D01* +X538974Y278118D01* +X538951Y278097D01* +X538817Y277867D01* +X538809Y277854D01* +X538138Y276234D01* +X536566Y274662D01* +X534512Y273811D01* +X532288Y273811D01* +X530234Y274662D01* +X528662Y276234D01* +X527811Y278288D01* +X527811Y280257D01* +X527799Y280343D01* +X527796Y280431D01* +X527779Y280483D01* +X527771Y280538D01* +X527736Y280618D01* +X527709Y280701D01* +X527681Y280740D01* +X527655Y280798D01* +X527559Y280911D01* +X527514Y280975D01* +X513907Y294582D01* +X513860Y294617D01* +X513820Y294659D01* +X513747Y294702D01* +X513680Y294752D01* +X513625Y294773D01* +X513575Y294803D01* +X513493Y294824D01* +X513414Y294854D01* +X513356Y294859D01* +X513299Y294873D01* +X513215Y294870D01* +X513131Y294877D01* +X513073Y294866D01* +X513015Y294864D01* +X512935Y294838D01* +X512852Y294821D01* +X512800Y294794D01* +X512744Y294776D01* +X512688Y294736D01* +X512600Y294690D01* +X512527Y294622D01* +X512471Y294582D01* +X510577Y292687D01* +X496943Y292687D01* +X496590Y293041D01* +X496566Y293058D01* +X496547Y293081D01* +X496453Y293143D01* +X496363Y293211D01* +X496335Y293222D01* +X496311Y293238D01* +X496203Y293272D01* +X496097Y293313D01* +X496068Y293315D01* +X496040Y293324D01* +X495926Y293327D01* +X495814Y293336D01* +X495785Y293330D01* +X495756Y293331D01* +X495646Y293303D01* +X495535Y293280D01* +X495509Y293267D01* +X495481Y293259D01* +X495383Y293202D01* +X495283Y293149D01* +X495261Y293129D01* +X495236Y293114D01* +X495159Y293032D01* +X495077Y292954D01* +X495062Y292928D01* +X495042Y292907D01* +X494990Y292806D01* +X494933Y292708D01* +X494926Y292680D01* +X494912Y292654D01* +X494899Y292576D01* +X494863Y292433D01* +X494865Y292370D01* +X494857Y292323D01* +X494857Y282695D01* +X491285Y279123D01* +X450795Y279123D01* +X438911Y291007D01* +X438911Y291577D01* +X438899Y291664D01* +X438896Y291751D01* +X438879Y291804D01* +X438871Y291859D01* +X438836Y291939D01* +X438809Y292022D01* +X438781Y292061D01* +X438755Y292118D01* +X438659Y292231D01* +X438614Y292295D01* +X436927Y293982D01* +X436927Y300038D01* +X438431Y301542D01* +X438444Y301560D01* +X438457Y301571D01* +X438475Y301597D01* +X438509Y301629D01* +X438551Y301702D01* +X438602Y301769D01* +X438623Y301824D01* +X438652Y301874D01* +X438673Y301956D01* +X438703Y302035D01* +X438708Y302093D01* +X438723Y302150D01* +X438720Y302234D01* +X438727Y302318D01* +X438715Y302376D01* +X438714Y302434D01* +X438688Y302514D01* +X438671Y302597D01* +X438644Y302649D01* +X438626Y302705D01* +X438586Y302761D01* +X438540Y302849D01* +X438471Y302922D01* +X438431Y302978D01* +X436927Y304482D01* +X436927Y310538D01* +X437774Y311385D01* +X437826Y311455D01* +X437886Y311519D01* +X437912Y311568D01* +X437945Y311612D01* +X437976Y311694D01* +X438016Y311772D01* +X438024Y311819D01* +X438046Y311878D01* +X438058Y312025D01* +X438071Y312103D01* +X438071Y312652D01* +X438063Y312710D01* +X438065Y312768D01* +X438043Y312850D01* +X438031Y312934D01* +X438008Y312987D01* +X437993Y313043D01* +X437950Y313116D01* +X437915Y313193D01* +X437877Y313238D01* +X437848Y313288D01* +X437786Y313346D01* +X437732Y313410D01* +X437683Y313442D01* +X437640Y313482D01* +X437565Y313521D01* +X437495Y313568D01* +X437439Y313585D01* +X437387Y313612D01* +X437319Y313623D01* +X437224Y313653D01* +X437124Y313656D01* +X437056Y313667D01* +X434303Y313667D01* +X432087Y315883D01* +X432087Y316636D01* +X432079Y316694D01* +X432081Y316752D01* +X432059Y316834D01* +X432047Y316918D01* +X432024Y316971D01* +X432009Y317027D01* +X431966Y317100D01* +X431931Y317177D01* +X431893Y317222D01* +X431864Y317272D01* +X431802Y317330D01* +X431748Y317394D01* +X431699Y317426D01* +X431656Y317466D01* +X431581Y317505D01* +X431511Y317552D01* +X431455Y317569D01* +X431403Y317596D01* +X431335Y317607D01* +X431240Y317637D01* +X431140Y317640D01* +X431072Y317651D01* +X414637Y317651D01* +X413722Y318567D01* +X413698Y318584D01* +X413679Y318607D01* +X413585Y318669D01* +X413495Y318737D01* +X413467Y318748D01* +X413443Y318764D01* +X413335Y318798D01* +X413229Y318839D01* +X413200Y318841D01* +X413172Y318850D01* +X413058Y318853D01* +X412946Y318862D01* +X412917Y318857D01* +X412888Y318857D01* +X412778Y318829D01* +X412667Y318806D01* +X412641Y318793D01* +X412613Y318785D01* +X412515Y318728D01* +X412415Y318675D01* +X412393Y318655D01* +X412368Y318640D01* +X412291Y318558D01* +X412209Y318480D01* +X412194Y318454D01* +X412174Y318433D01* +X412122Y318332D01* +X412065Y318234D01* +X412058Y318206D01* +X412044Y318180D01* +X412031Y318102D01* +X411995Y317959D01* +X411997Y317896D01* +X411989Y317849D01* +X411989Y316388D01* +X411138Y314334D01* +X409566Y312762D01* +X407512Y311911D01* +X405288Y311911D01* +X403234Y312762D01* +X401662Y314334D01* +X400811Y316388D01* +X400811Y318612D01* +X401662Y320666D01* +X403164Y322168D01* +X403182Y322192D01* +X403205Y322211D01* +X403267Y322305D01* +X403335Y322395D01* +X403346Y322423D01* +X403362Y322447D01* +X403396Y322555D01* +X403437Y322661D01* +X403439Y322690D01* +X403448Y322718D01* +X403451Y322832D01* +X403460Y322944D01* +X403454Y322973D01* +X403455Y323002D01* +X403427Y323112D01* +X403404Y323223D01* +X403391Y323249D01* +X403383Y323277D01* +X403326Y323375D01* +X403273Y323475D01* +X403253Y323497D01* +X403238Y323522D01* +X403156Y323599D01* +X403078Y323681D01* +X403052Y323696D01* +X403031Y323716D01* +X402930Y323768D01* +X402832Y323825D01* +X402804Y323832D01* +X402778Y323846D01* +X402700Y323859D01* +X402557Y323895D01* +X402494Y323893D01* +X402447Y323901D01* +X343978Y323901D01* +X343920Y323893D01* +X343862Y323895D01* +X343780Y323873D01* +X343696Y323861D01* +X343643Y323838D01* +X343587Y323823D01* +X343514Y323780D01* +X343437Y323745D01* +X343392Y323707D01* +X343342Y323678D01* +X343284Y323616D01* +X343220Y323562D01* +X343188Y323513D01* +X343148Y323470D01* +X343109Y323395D01* +X343062Y323325D01* +X343045Y323269D01* +X343018Y323217D01* +X343007Y323149D01* +X342977Y323054D01* +X342974Y322954D01* +X342963Y322886D01* +X342963Y318018D01* +X342863Y317918D01* +X342828Y317871D01* +X342785Y317831D01* +X342742Y317758D01* +X342692Y317691D01* +X342671Y317636D01* +X342641Y317586D01* +X342620Y317504D01* +X342590Y317425D01* +X342586Y317367D01* +X342571Y317310D01* +X342574Y317226D01* +X342567Y317142D01* +X342578Y317084D01* +X342580Y317026D01* +X342606Y316946D01* +X342623Y316863D01* +X342650Y316811D01* +X342668Y316755D01* +X342708Y316699D01* +X342754Y316611D01* +X342822Y316538D01* +X342863Y316482D01* +X342963Y316382D01* +X342963Y311518D01* +X342863Y311418D01* +X342828Y311371D01* +X342785Y311331D01* +X342742Y311258D01* +X342692Y311191D01* +X342671Y311136D01* +X342641Y311086D01* +X342620Y311004D01* +X342590Y310925D01* +X342586Y310867D01* +X342571Y310810D01* +X342574Y310726D01* +X342567Y310642D01* +X342578Y310584D01* +X342580Y310526D01* +X342606Y310446D01* +X342623Y310363D01* +X342650Y310311D01* +X342668Y310255D01* +X342708Y310199D01* +X342754Y310111D01* +X342822Y310038D01* +X342863Y309982D01* +X342963Y309882D01* +X342963Y305018D01* +X342863Y304918D01* +X342828Y304871D01* +X342785Y304831D01* +X342742Y304758D01* +X342692Y304691D01* +X342671Y304636D01* +X342641Y304586D01* +X342620Y304504D01* +X342590Y304425D01* +X342586Y304367D01* +X342571Y304310D01* +X342574Y304226D01* +X342567Y304142D01* +X342578Y304084D01* +X342580Y304026D01* +X342606Y303946D01* +X342623Y303863D01* +X342650Y303811D01* +X342668Y303755D01* +X342708Y303699D01* +X342754Y303611D01* +X342822Y303538D01* +X342863Y303482D01* +X342963Y303382D01* +X342963Y298518D01* +X341362Y296917D01* +X325498Y296917D01* +X323897Y298518D01* +X323897Y303382D01* +X323997Y303482D01* +X324033Y303529D01* +X324075Y303569D01* +X324118Y303642D01* +X324168Y303709D01* +X324189Y303764D01* +X324219Y303814D01* +X324239Y303896D01* +X324270Y303975D01* +X324274Y304033D01* +X324289Y304090D01* +X324286Y304174D01* +X324293Y304258D01* +X324282Y304316D01* +X324280Y304374D01* +X324254Y304454D01* +X324237Y304537D01* +X324210Y304589D01* +X324192Y304645D01* +X324152Y304701D01* +X324106Y304789D01* +X324037Y304862D01* +X323997Y304918D01* +X323897Y305018D01* +X323897Y309882D01* +X323997Y309982D01* +X324033Y310029D01* +X324075Y310069D01* +X324118Y310142D01* +X324168Y310209D01* +X324189Y310264D01* +X324219Y310314D01* +X324239Y310396D01* +X324270Y310475D01* +X324274Y310533D01* +X324289Y310590D01* +X324286Y310674D01* +X324293Y310758D01* +X324282Y310816D01* +X324280Y310874D01* +X324254Y310954D01* +X324237Y311037D01* +X324210Y311089D01* +X324192Y311145D01* +X324152Y311201D01* +X324106Y311289D01* +X324037Y311362D01* +X323997Y311418D01* +X323897Y311518D01* +X323897Y316382D01* +X323997Y316482D01* +X324033Y316529D01* +X324075Y316569D01* +X324118Y316642D01* +X324168Y316709D01* +X324189Y316764D01* +X324219Y316814D01* +X324239Y316896D01* +X324270Y316975D01* +X324274Y317033D01* +X324289Y317090D01* +X324286Y317174D01* +X324293Y317258D01* +X324282Y317316D01* +X324280Y317374D01* +X324254Y317454D01* +X324237Y317537D01* +X324210Y317589D01* +X324192Y317645D01* +X324152Y317701D01* +X324106Y317789D01* +X324037Y317862D01* +X323997Y317918D01* +X323897Y318018D01* +X323897Y322882D01* +X323997Y322982D01* +X324033Y323029D01* +X324075Y323069D01* +X324118Y323142D01* +X324168Y323209D01* +X324189Y323264D01* +X324219Y323314D01* +X324239Y323396D01* +X324270Y323475D01* +X324274Y323533D01* +X324289Y323590D01* +X324286Y323674D01* +X324293Y323758D01* +X324282Y323816D01* +X324280Y323874D01* +X324254Y323954D01* +X324237Y324037D01* +X324210Y324089D01* +X324192Y324145D01* +X324152Y324201D01* +X324106Y324289D01* +X324037Y324362D01* +X323997Y324418D01* +X323897Y324518D01* +X323897Y329382D01* +X323997Y329482D01* +X324033Y329529D01* +X324075Y329569D01* +X324118Y329642D01* +X324168Y329709D01* +X324189Y329764D01* +X324219Y329814D01* +X324239Y329896D01* +X324270Y329975D01* +X324274Y330033D01* +X324289Y330090D01* +X324286Y330174D01* +X324293Y330258D01* +X324282Y330316D01* +X324280Y330374D01* +X324254Y330454D01* +X324237Y330537D01* +X324210Y330589D01* +X324192Y330645D01* +X324152Y330701D01* +X324106Y330789D01* +X324037Y330862D01* +X323997Y330918D01* +X323897Y331018D01* +X323897Y335882D01* +X323997Y335982D01* +X324033Y336029D01* +X324075Y336069D01* +X324118Y336142D01* +X324168Y336209D01* +X324189Y336264D01* +X324219Y336314D01* +X324239Y336396D01* +X324270Y336475D01* +X324274Y336533D01* +X324289Y336590D01* +X324286Y336674D01* +X324293Y336758D01* +X324282Y336816D01* +X324280Y336874D01* +X324254Y336954D01* +X324237Y337037D01* +X324210Y337089D01* +X324192Y337145D01* +X324152Y337201D01* +X324106Y337289D01* +X324037Y337362D01* +X323997Y337418D01* +X323897Y337518D01* +X323897Y342382D01* +X323997Y342482D01* +X324033Y342529D01* +X324075Y342569D01* +X324118Y342642D01* +X324168Y342709D01* +X324189Y342764D01* +X324219Y342814D01* +X324239Y342896D01* +X324270Y342975D01* +X324274Y343033D01* +X324289Y343090D01* +X324286Y343174D01* +X324293Y343258D01* +X324282Y343316D01* +X324280Y343374D01* +X324254Y343454D01* +X324237Y343537D01* +X324210Y343589D01* +X324192Y343645D01* +X324152Y343701D01* +X324106Y343789D01* +X324037Y343862D01* +X323997Y343918D01* +X323897Y344018D01* +X323897Y348882D01* +X323997Y348982D01* +X324033Y349029D01* +X324075Y349069D01* +X324118Y349142D01* +X324168Y349209D01* +X324189Y349264D01* +X324219Y349314D01* +X324239Y349396D01* +X324270Y349475D01* +X324274Y349533D01* +X324289Y349590D01* +X324286Y349674D01* +X324293Y349758D01* +X324282Y349816D01* +X324280Y349874D01* +X324254Y349954D01* +X324237Y350037D01* +X324210Y350089D01* +X324192Y350145D01* +X324152Y350201D01* +X324106Y350289D01* +X324037Y350362D01* +X323997Y350418D01* +X323897Y350518D01* +X323897Y355382D01* +X323997Y355482D01* +X324033Y355529D01* +X324075Y355569D01* +X324118Y355642D01* +X324168Y355709D01* +X324189Y355764D01* +X324219Y355814D01* +X324239Y355896D01* +X324270Y355975D01* +X324274Y356033D01* +X324289Y356090D01* +X324286Y356174D01* +X324293Y356258D01* +X324282Y356316D01* +X324280Y356374D01* +X324254Y356454D01* +X324237Y356537D01* +X324210Y356589D01* +X324192Y356645D01* +X324152Y356701D01* +X324106Y356789D01* +X324037Y356862D01* +X323997Y356918D01* +X323897Y357018D01* +X323897Y361882D01* +X325498Y363483D01* +X341362Y363483D01* +X342049Y362796D01* +X342118Y362744D01* +X342182Y362684D01* +X342232Y362658D01* +X342276Y362625D01* +X342357Y362594D01* +X342435Y362554D01* +X342483Y362546D01* +X342541Y362524D01* +X342689Y362512D01* +X342766Y362499D01* +X344552Y362499D01* +X344610Y362507D01* +X344668Y362505D01* +X344750Y362527D01* +X344834Y362539D01* +X344887Y362562D01* +X344943Y362577D01* +X345016Y362620D01* +X345093Y362655D01* +X345138Y362693D01* +X345188Y362722D01* +X345246Y362784D01* +X345310Y362838D01* +X345342Y362887D01* +X345382Y362930D01* +X345421Y363005D01* +X345468Y363075D01* +X345485Y363131D01* +X345512Y363183D01* +X345523Y363251D01* +X345553Y363346D01* +X345556Y363446D01* +X345567Y363514D01* +X345567Y365252D01* +X345560Y365301D01* +X345561Y365308D01* +X345559Y365313D01* +X345561Y365368D01* +X345539Y365450D01* +X345527Y365534D01* +X345504Y365587D01* +X345489Y365643D01* +X345446Y365716D01* +X345411Y365793D01* +X345373Y365838D01* +X345344Y365888D01* +X345282Y365946D01* +X345228Y366010D01* +X345179Y366042D01* +X345136Y366082D01* +X345061Y366121D01* +X344991Y366168D01* +X344935Y366185D01* +X344883Y366212D01* +X344815Y366223D01* +X344720Y366253D01* +X344620Y366256D01* +X344552Y366267D01* +X305627Y366267D01* +X305540Y366255D01* +X305453Y366252D01* +X305400Y366235D01* +X305345Y366227D01* +X305265Y366192D01* +X305182Y366165D01* +X305143Y366137D01* +X305086Y366111D01* +X304973Y366015D01* +X304909Y365970D01* +X275840Y336901D01* +X271478Y336901D01* +X271420Y336893D01* +X271362Y336895D01* +X271280Y336873D01* +X271196Y336861D01* +X271143Y336838D01* +X271087Y336823D01* +X271014Y336780D01* +X270937Y336745D01* +X270892Y336707D01* +X270842Y336678D01* +X270784Y336616D01* +X270720Y336562D01* +X270688Y336513D01* +X270648Y336470D01* +X270609Y336395D01* +X270562Y336325D01* +X270545Y336269D01* +X270518Y336217D01* +X270507Y336149D01* +X270477Y336054D01* +X270474Y335954D01* +X270463Y335886D01* +X270463Y331018D01* +X270363Y330918D01* +X270327Y330871D01* +X270285Y330831D01* +X270242Y330758D01* +X270192Y330691D01* +X270171Y330636D01* +X270141Y330586D01* +X270121Y330504D01* +X270090Y330425D01* +X270086Y330367D01* +X270071Y330310D01* +X270074Y330226D01* +X270067Y330142D01* +X270078Y330084D01* +X270080Y330026D01* +X270106Y329946D01* +X270123Y329863D01* +X270150Y329811D01* +X270168Y329755D01* +X270208Y329699D01* +X270254Y329611D01* +X270323Y329538D01* +X270363Y329482D01* +X270463Y329382D01* +X270463Y324518D01* +X270363Y324418D01* +X270327Y324371D01* +X270285Y324331D01* +X270242Y324258D01* +X270192Y324191D01* +X270171Y324136D01* +X270141Y324086D01* +X270121Y324004D01* +X270090Y323925D01* +X270086Y323867D01* +X270071Y323810D01* +X270074Y323726D01* +X270067Y323642D01* +X270078Y323584D01* +X270080Y323526D01* +X270106Y323446D01* +X270123Y323363D01* +X270150Y323311D01* +X270168Y323255D01* +X270208Y323199D01* +X270254Y323111D01* +X270323Y323038D01* +X270363Y322982D01* +X270463Y322882D01* +X270463Y318018D01* +X268862Y316417D01* +X252998Y316417D01* +X252692Y316723D01* +X252623Y316775D01* +X252559Y316835D01* +X252509Y316861D01* +X252465Y316894D01* +X252384Y316925D01* +X252306Y316965D01* +X252258Y316973D01* +X252200Y316995D01* +X252052Y317007D01* +X251975Y317020D01* +X247962Y317020D01* +X247933Y317016D01* +X247904Y317019D01* +X247793Y316996D01* +X247681Y316980D01* +X247654Y316968D01* +X247625Y316963D01* +X247525Y316910D01* +X247421Y316864D01* +X247399Y316845D01* +X247373Y316832D01* +X247291Y316754D01* +X247204Y316681D01* +X247188Y316656D01* +X247167Y316636D01* +X247110Y316538D01* +X247047Y316444D01* +X247038Y316416D01* +X247023Y316391D01* +X246995Y316281D01* +X246961Y316173D01* +X246960Y316143D01* +X246953Y316115D01* +X246957Y316002D01* +X246954Y315889D01* +X246961Y315860D01* +X246962Y315831D01* +X246997Y315723D01* +X247026Y315614D01* +X247040Y315588D01* +X247050Y315560D01* +X247095Y315496D01* +X247171Y315369D01* +X247216Y315326D01* +X247244Y315287D01* +X249036Y313495D01* +X251306Y311226D01* +X251352Y311191D01* +X251393Y311148D01* +X251465Y311106D01* +X251533Y311055D01* +X251587Y311034D01* +X251638Y311005D01* +X251720Y310984D01* +X251798Y310954D01* +X251857Y310949D01* +X251913Y310935D01* +X251998Y310937D01* +X252082Y310930D01* +X252139Y310942D01* +X252198Y310944D01* +X252278Y310970D01* +X252360Y310986D01* +X252412Y311013D01* +X252468Y311031D01* +X252524Y311071D01* +X252613Y311117D01* +X252685Y311186D01* +X252741Y311226D01* +X252998Y311483D01* +X268862Y311483D01* +X270463Y309882D01* +X270463Y305018D01* +X270363Y304918D01* +X270327Y304871D01* +X270285Y304831D01* +X270242Y304758D01* +X270192Y304691D01* +X270171Y304636D01* +X270141Y304586D01* +X270121Y304504D01* +X270090Y304425D01* +X270086Y304367D01* +X270071Y304310D01* +X270074Y304226D01* +X270067Y304142D01* +X270078Y304084D01* +X270080Y304026D01* +X270106Y303946D01* +X270123Y303863D01* +X270150Y303811D01* +X270168Y303755D01* +X270208Y303699D01* +X270254Y303611D01* +X270323Y303538D01* +X270363Y303482D01* +X270463Y303382D01* +X270463Y298518D01* +X268862Y296917D01* +X252988Y296917D01* +X252979Y296927D01* +X252906Y296969D01* +X252839Y297020D01* +X252785Y297041D01* +X252734Y297070D01* +X252652Y297091D01* +X252574Y297121D01* +X252515Y297126D01* +X252459Y297140D01* +X252374Y297138D01* +X252290Y297145D01* +X252233Y297133D01* +X252174Y297131D01* +X252094Y297105D01* +X252012Y297089D01* +X251959Y297062D01* +X251904Y297044D01* +X251848Y297004D01* +X251759Y296958D01* +X251687Y296889D01* +X251631Y296849D01* +X250956Y296175D01* +X250904Y296105D01* +X250844Y296041D01* +X250818Y295991D01* +X250785Y295947D01* +X250754Y295866D01* +X250714Y295788D01* +X250706Y295740D01* +X250684Y295682D01* +X250672Y295534D01* +X250659Y295457D01* +X250659Y289527D01* +X248576Y287444D01* +X248575Y287444D01* +X244646Y283515D01* +X244646Y283514D01* +X242563Y281431D01* +X208197Y281431D01* +X203871Y285757D01* +X199350Y290278D01* +X199311Y290317D01* +X199311Y290542D01* +X199303Y290600D01* +X199305Y290658D01* +X199283Y290740D01* +X199271Y290824D01* +X199248Y290877D01* +X199233Y290933D01* +X199190Y291006D01* +X199155Y291083D01* +X199117Y291128D01* +X199088Y291178D01* +X199026Y291236D01* +X198972Y291300D01* +X198923Y291332D01* +X198880Y291372D01* +X198805Y291411D01* +X198735Y291458D01* +X198679Y291475D01* +X198627Y291502D01* +X198559Y291513D01* +X198464Y291543D01* +X198364Y291546D01* +X198296Y291557D01* +X195697Y291557D01* +X193327Y293927D01* +X193327Y296945D01* +X193323Y296974D01* +X193326Y297004D01* +X193303Y297114D01* +X193287Y297227D01* +X193275Y297254D01* +X193270Y297282D01* +X193217Y297383D01* +X193171Y297486D01* +X193152Y297509D01* +X193139Y297535D01* +X193061Y297617D01* +X192988Y297703D01* +X192963Y297720D01* +X192943Y297741D01* +X192845Y297798D01* +X192751Y297861D01* +X192723Y297870D01* +X192698Y297885D01* +X192588Y297912D01* +X192480Y297947D01* +X192450Y297947D01* +X192422Y297955D01* +X192309Y297951D01* +X192196Y297954D01* +X192167Y297947D01* +X192138Y297946D01* +X192030Y297911D01* +X191921Y297882D01* +X191895Y297867D01* +X191867Y297858D01* +X191803Y297812D01* +X191676Y297737D01* +X191633Y297691D01* +X191594Y297663D01* +X191238Y297307D01* +X184682Y297307D01* +X182927Y299062D01* +X182927Y305118D01* +X184682Y306873D01* +X191238Y306873D01* +X192625Y305486D01* +X192671Y305451D01* +X192712Y305409D01* +X192785Y305366D01* +X192852Y305315D01* +X192907Y305295D01* +X192957Y305265D01* +X193039Y305244D01* +X193118Y305214D01* +X193176Y305209D01* +X193232Y305195D01* +X193317Y305198D01* +X193401Y305191D01* +X193458Y305202D01* +X193517Y305204D01* +X193597Y305230D01* +X193680Y305246D01* +X193731Y305273D01* +X193787Y305291D01* +X193843Y305331D01* +X193932Y305377D01* +X194004Y305446D01* +X194060Y305486D01* +X195697Y307123D01* +X209023Y307123D01* +X211393Y304753D01* +X211393Y293927D01* +X209005Y291539D01* +X208975Y291533D01* +X208863Y291517D01* +X208837Y291505D01* +X208808Y291500D01* +X208707Y291447D01* +X208604Y291401D01* +X208582Y291382D01* +X208555Y291369D01* +X208473Y291291D01* +X208387Y291218D01* +X208371Y291193D01* +X208349Y291173D01* +X208292Y291075D01* +X208229Y290981D01* +X208220Y290953D01* +X208206Y290928D01* +X208178Y290818D01* +X208144Y290710D01* +X208143Y290680D01* +X208136Y290652D01* +X208139Y290539D01* +X208136Y290426D01* +X208144Y290397D01* +X208145Y290368D01* +X208179Y290260D01* +X208208Y290151D01* +X208223Y290125D01* +X208232Y290097D01* +X208278Y290034D01* +X208353Y289906D01* +X208399Y289863D01* +X208427Y289824D01* +X210425Y287826D01* +X210495Y287774D01* +X210559Y287714D01* +X210562Y287712D01* +X210608Y287688D01* +X210652Y287655D01* +X210734Y287624D01* +X210812Y287584D01* +X210859Y287576D01* +X210918Y287554D01* +X211066Y287542D01* +X211143Y287529D01* +X239617Y287529D01* +X239703Y287541D01* +X239791Y287544D01* +X239843Y287561D01* +X239898Y287569D01* +X239978Y287604D01* +X240061Y287631D01* +X240101Y287659D01* +X240158Y287685D01* +X240271Y287781D01* +X240335Y287826D01* +X241351Y288842D01* +X244264Y291755D01* +X244316Y291825D01* +X244376Y291889D01* +X244402Y291939D01* +X244435Y291983D01* +X244466Y292064D01* +X244506Y292142D01* +X244514Y292190D01* +X244536Y292248D01* +X244548Y292396D01* +X244561Y292473D01* +X244561Y298403D01* +X249316Y303157D01* +X249351Y303204D01* +X249393Y303244D01* +X249436Y303317D01* +X249486Y303384D01* +X249507Y303439D01* +X249537Y303489D01* +X249558Y303571D01* +X249588Y303650D01* +X249593Y303708D01* +X249607Y303765D01* +X249604Y303849D01* +X249611Y303933D01* +X249600Y303991D01* +X249598Y304049D01* +X249572Y304129D01* +X249555Y304212D01* +X249528Y304264D01* +X249510Y304320D01* +X249470Y304376D01* +X249424Y304464D01* +X249356Y304537D01* +X249316Y304593D01* +X244788Y309121D01* +X244741Y309156D01* +X244701Y309198D01* +X244628Y309241D01* +X244560Y309292D01* +X244506Y309313D01* +X244455Y309342D01* +X244374Y309363D01* +X244295Y309393D01* +X244236Y309398D01* +X244180Y309412D01* +X244095Y309410D01* +X244011Y309417D01* +X243954Y309405D01* +X243896Y309403D01* +X243815Y309377D01* +X243733Y309361D01* +X243681Y309334D01* +X243625Y309316D01* +X243569Y309276D01* +X243480Y309230D01* +X243408Y309161D01* +X243352Y309121D01* +X242038Y307807D01* +X235482Y307807D01* +X234095Y309194D01* +X234049Y309229D01* +X234008Y309271D01* +X233935Y309314D01* +X233868Y309365D01* +X233813Y309385D01* +X233763Y309415D01* +X233681Y309436D01* +X233602Y309466D01* +X233544Y309471D01* +X233488Y309485D01* +X233403Y309482D01* +X233319Y309489D01* +X233262Y309478D01* +X233203Y309476D01* +X233123Y309450D01* +X233040Y309434D01* +X232989Y309407D01* +X232933Y309389D01* +X232877Y309349D01* +X232788Y309303D01* +X232716Y309234D01* +X232660Y309194D01* +X231023Y307557D01* +X217697Y307557D01* +X215327Y309927D01* +X215327Y320753D01* +X217697Y323123D01* +X231023Y323123D01* +X233393Y320753D01* +X233393Y317735D01* +X233397Y317706D01* +X233394Y317676D01* +X233417Y317565D01* +X233433Y317453D01* +X233445Y317426D01* +X233450Y317398D01* +X233503Y317297D01* +X233549Y317194D01* +X233568Y317171D01* +X233581Y317145D01* +X233659Y317063D01* +X233732Y316977D01* +X233757Y316960D01* +X233777Y316939D01* +X233875Y316882D01* +X233969Y316819D01* +X233997Y316810D01* +X234022Y316795D01* +X234132Y316768D01* +X234240Y316733D01* +X234270Y316733D01* +X234298Y316725D01* +X234411Y316729D01* +X234524Y316726D01* +X234553Y316733D01* +X234582Y316734D01* +X234690Y316769D01* +X234799Y316798D01* +X234825Y316813D01* +X234853Y316822D01* +X234917Y316868D01* +X235044Y316943D01* +X235087Y316989D01* +X235126Y317017D01* +X235482Y317373D01* +X239206Y317373D01* +X239235Y317377D01* +X239264Y317374D01* +X239375Y317397D01* +X239487Y317413D01* +X239514Y317425D01* +X239543Y317430D01* +X239643Y317482D01* +X239747Y317529D01* +X239769Y317548D01* +X239795Y317561D01* +X239877Y317639D01* +X239964Y317712D01* +X239980Y317737D01* +X240001Y317757D01* +X240059Y317855D01* +X240121Y317949D01* +X240130Y317977D01* +X240145Y318002D01* +X240173Y318112D01* +X240207Y318220D01* +X240208Y318250D01* +X240215Y318278D01* +X240212Y318391D01* +X240214Y318504D01* +X240207Y318533D01* +X240206Y318562D01* +X240171Y318670D01* +X240143Y318779D01* +X240128Y318805D01* +X240119Y318833D01* +X240073Y318896D01* +X239997Y319024D01* +X239952Y319067D01* +X239924Y319106D01* +X229937Y329093D01* +X229867Y329145D01* +X229803Y329205D01* +X229754Y329231D01* +X229710Y329264D01* +X229628Y329295D01* +X229550Y329335D01* +X229502Y329343D01* +X229444Y329365D01* +X229296Y329377D01* +X229219Y329390D01* +X212621Y329390D01* +X212535Y329378D01* +X212447Y329375D01* +X212394Y329358D01* +X212340Y329350D01* +X212260Y329315D01* +X212177Y329288D01* +X212137Y329260D01* +X212080Y329234D01* +X211967Y329138D01* +X211903Y329093D01* +X206807Y323997D01* +X204501Y321690D01* +X186539Y321690D01* +X184233Y323997D01* +X184059Y324171D01* +X184035Y324188D01* +X184017Y324211D01* +X183922Y324274D01* +X183832Y324342D01* +X183804Y324352D01* +X183780Y324368D01* +X183672Y324403D01* +X183566Y324443D01* +X183537Y324445D01* +X183509Y324454D01* +X183396Y324457D01* +X183283Y324466D01* +X183254Y324461D01* +X183225Y324461D01* +X183115Y324433D01* +X183004Y324411D01* +X182978Y324397D01* +X182950Y324390D01* +X182853Y324332D01* +X182752Y324280D01* +X182730Y324259D01* +X182705Y324244D01* +X182628Y324162D01* +X182546Y324084D01* +X182531Y324058D01* +X182511Y324037D01* +X182459Y323936D01* +X182402Y323839D01* +X182395Y323810D01* +X182381Y323784D01* +X182368Y323707D01* +X182332Y323563D01* +X182334Y323500D01* +X182326Y323453D01* +X182326Y322674D01* +X181440Y320537D01* +X179805Y318902D01* +X177668Y318016D01* +X175354Y318016D01* +X173537Y318769D01* +X173425Y318798D01* +X173316Y318833D01* +X173288Y318833D01* +X173261Y318840D01* +X173147Y318837D01* +X173032Y318840D01* +X173005Y318833D01* +X172977Y318832D01* +X172868Y318797D01* +X172757Y318768D01* +X172733Y318754D01* +X172706Y318745D01* +X172611Y318682D01* +X172512Y318623D01* +X172493Y318603D01* +X172470Y318587D01* +X172396Y318499D01* +X172318Y318416D01* +X172305Y318391D01* +X172287Y318370D01* +X172241Y318265D01* +X172188Y318162D01* +X172184Y318138D01* +X172172Y318110D01* +X172135Y317846D01* +X172133Y317831D01* +X172133Y316364D01* +X170356Y314587D01* +X154844Y314587D01* +X154834Y314597D01* +X154810Y314615D01* +X154791Y314637D01* +X154697Y314700D01* +X154607Y314768D01* +X154579Y314779D01* +X154555Y314795D01* +X154447Y314829D01* +X154341Y314869D01* +X154312Y314872D01* +X154284Y314881D01* +X154171Y314884D01* +X154058Y314893D01* +X154029Y314887D01* +X154000Y314888D01* +X153890Y314859D01* +X153779Y314837D01* +X153753Y314823D01* +X153725Y314816D01* +X153627Y314758D01* +X153527Y314706D01* +X153505Y314686D01* +X153480Y314671D01* +X153403Y314588D01* +X153321Y314510D01* +X153306Y314485D01* +X153286Y314464D01* +X153234Y314363D01* +X153177Y314265D01* +X153170Y314236D01* +X153156Y314210D01* +X153143Y314133D01* +X153107Y313989D01* +X153109Y313927D01* +X153101Y313879D01* +X153101Y310120D01* +X153100Y310119D01* +X149100Y310119D01* +X149099Y310120D01* +X149099Y340120D01* +X149100Y340121D01* +X152391Y340121D01* +X152478Y340133D01* +X152565Y340136D01* +X152618Y340153D01* +X152673Y340161D01* +X152753Y340196D01* +X152836Y340223D01* +X152875Y340251D01* +X152932Y340277D01* +X153045Y340373D01* +X153109Y340418D01* +X154844Y342153D01* +X160464Y342153D01* +X160550Y342165D01* +X160638Y342168D01* +X160690Y342185D01* +X173626Y342185D01* +X173712Y342197D01* +X173800Y342200D01* +X173852Y342217D01* +X173907Y342225D01* +X173987Y342260D01* +X174070Y342287D01* +X174110Y342315D01* +X174167Y342341D01* +X174280Y342437D01* +X174344Y342482D01* +X175010Y343148D01* +X175038Y343186D01* +X175050Y343196D01* +X175070Y343226D01* +X175122Y343282D01* +X175148Y343331D01* +X175181Y343376D01* +X175196Y343415D01* +X175208Y343433D01* +X175221Y343475D01* +X175252Y343535D01* +X175260Y343583D01* +X175282Y343641D01* +X175285Y343678D01* +X175293Y343704D01* +X175296Y343797D01* +X175307Y343866D01* +X175307Y345758D01* +X177062Y347513D01* +X183618Y347513D01* +X183869Y347262D01* +X183939Y347210D01* +X184003Y347150D01* +X184052Y347124D01* +X184096Y347091D01* +X184178Y347060D01* +X184256Y347020D01* +X184303Y347012D01* +X184362Y346990D01* +X184509Y346978D01* +X184587Y346965D01* +X185921Y346965D01* +X186008Y346977D01* +X186095Y346980D01* +X186148Y346997D01* +X186202Y347005D01* +X186282Y347040D01* +X186365Y347067D01* +X186405Y347095D01* +X186462Y347121D01* +X186575Y347217D01* +X186639Y347262D01* +X187206Y347829D01* +X189343Y348715D01* +X191657Y348715D01* +X193794Y347829D01* +X195429Y346194D01* +X196315Y344057D01* +X196315Y341743D01* +X195639Y340113D01* +X195632Y340084D01* +X195619Y340058D01* +X195597Y339947D01* +X195568Y339838D01* +X195569Y339808D01* +X195564Y339779D01* +X195573Y339667D01* +X195577Y339553D01* +X195585Y339525D01* +X195588Y339496D01* +X195629Y339391D01* +X195663Y339283D01* +X195680Y339258D01* +X195690Y339231D01* +X195758Y339141D01* +X195821Y339046D01* +X195844Y339028D01* +X195862Y339004D01* +X195952Y338936D01* +X196039Y338864D01* +X196066Y338852D01* +X196089Y338834D01* +X196195Y338794D01* +X196299Y338748D01* +X196328Y338744D01* +X196355Y338734D01* +X196468Y338725D01* +X196580Y338709D01* +X196609Y338713D01* +X196639Y338711D01* +X196715Y338729D01* +X196862Y338750D01* +X196919Y338776D01* +X196966Y338786D01* +X197087Y338837D01* +X199401Y338837D01* +X200434Y338409D01* +X200436Y338408D01* +X200437Y338407D01* +X200576Y338372D01* +X200709Y338338D01* +X200711Y338338D01* +X200713Y338337D01* +X200854Y338342D01* +X200994Y338346D01* +X200995Y338346D01* +X200997Y338346D01* +X201132Y338390D01* +X201264Y338433D01* +X201266Y338433D01* +X201267Y338434D01* +X201280Y338443D01* +X201500Y338591D01* +X201520Y338614D01* +X201541Y338629D01* +X201681Y338769D01* +X203987Y341076D01* +X222430Y341076D01* +X222515Y341088D01* +X222601Y341090D01* +X222655Y341108D01* +X222711Y341116D01* +X222790Y341151D01* +X222872Y341177D01* +X222919Y341209D01* +X222971Y341232D01* +X223036Y341287D01* +X223108Y341335D01* +X223144Y341379D01* +X223188Y341415D01* +X223235Y341487D01* +X223291Y341553D01* +X223314Y341605D01* +X223345Y341652D01* +X223371Y341734D01* +X223406Y341813D01* +X223414Y341869D01* +X223431Y341923D01* +X223433Y342009D01* +X223445Y342094D01* +X223437Y342151D01* +X223438Y342207D01* +X223417Y342290D01* +X223404Y342376D01* +X223381Y342428D01* +X223367Y342482D01* +X223323Y342556D01* +X223287Y342635D01* +X223250Y342678D01* +X223221Y342727D01* +X223159Y342786D01* +X223103Y342851D01* +X223061Y342877D01* +X223014Y342921D01* +X222885Y342987D01* +X222818Y343029D01* +X222766Y343051D01* +X221131Y344686D01* +X220245Y346823D01* +X220245Y349137D01* +X221131Y351274D01* +X222766Y352909D01* +X224903Y353795D01* +X227217Y353795D01* +X229354Y352909D01* +X230588Y351675D01* +X230635Y351640D01* +X230675Y351597D01* +X230748Y351555D01* +X230815Y351504D01* +X230870Y351483D01* +X230921Y351454D01* +X231002Y351433D01* +X231081Y351403D01* +X231139Y351398D01* +X231196Y351384D01* +X231280Y351386D01* +X231364Y351379D01* +X231422Y351391D01* +X231480Y351393D01* +X231560Y351419D01* +X231643Y351435D01* +X231695Y351462D01* +X231751Y351480D01* +X231807Y351520D01* +X231895Y351566D01* +X231968Y351635D01* +X232024Y351675D01* +X232942Y352593D01* +X239498Y352593D01* +X240582Y351509D01* +X240629Y351474D01* +X240669Y351431D01* +X240742Y351389D01* +X240809Y351338D01* +X240864Y351317D01* +X240914Y351288D01* +X240996Y351267D01* +X241075Y351237D01* +X241133Y351232D01* +X241190Y351217D01* +X241274Y351220D01* +X241358Y351213D01* +X241416Y351225D01* +X241474Y351226D01* +X241554Y351252D01* +X241637Y351269D01* +X241689Y351296D01* +X241745Y351314D01* +X241801Y351354D01* +X241889Y351400D01* +X241962Y351469D01* +X242018Y351509D01* +X243102Y352593D01* +X249658Y352593D01* +X249664Y352587D01* +X249688Y352569D01* +X249707Y352547D01* +X249801Y352484D01* +X249891Y352416D01* +X249919Y352405D01* +X249943Y352389D01* +X250051Y352355D01* +X250157Y352315D01* +X250186Y352312D01* +X250214Y352303D01* +X250327Y352300D01* +X250440Y352291D01* +X250469Y352297D01* +X250498Y352296D01* +X250608Y352325D01* +X250719Y352347D01* +X250745Y352360D01* +X250773Y352368D01* +X250871Y352426D01* +X250971Y352478D01* +X250993Y352498D01* +X251018Y352513D01* +X251095Y352596D01* +X251177Y352674D01* +X251192Y352699D01* +X251212Y352720D01* +X251264Y352821D01* +X251321Y352919D01* +X251328Y352947D01* +X251342Y352974D01* +X251355Y353051D01* +X251391Y353194D01* +X251389Y353257D01* +X251397Y353305D01* +X251397Y355382D01* +X251497Y355482D01* +X251532Y355529D01* +X251575Y355569D01* +X251618Y355642D01* +X251668Y355709D01* +X251689Y355764D01* +X251719Y355814D01* +X251740Y355896D01* +X251770Y355975D01* +X251774Y356033D01* +X251789Y356090D01* +X251786Y356174D01* +X251793Y356258D01* +X251782Y356316D01* +X251780Y356374D01* +X251754Y356454D01* +X251737Y356537D01* +X251710Y356589D01* +X251692Y356645D01* +X251652Y356701D01* +X251606Y356789D01* +X251538Y356862D01* +X251497Y356918D01* +X251397Y357018D01* +X251397Y361882D01* +X252998Y363483D01* +X268862Y363483D01* +X270463Y361882D01* +X270463Y357018D01* +X270363Y356918D01* +X270327Y356871D01* +X270285Y356831D01* +X270242Y356758D01* +X270192Y356691D01* +X270171Y356636D01* +X270141Y356586D01* +X270121Y356504D01* +X270090Y356425D01* +X270086Y356367D01* +X270071Y356310D01* +X270074Y356226D01* +X270067Y356142D01* +X270078Y356084D01* +X270080Y356026D01* +X270106Y355946D01* +X270123Y355863D01* +X270150Y355811D01* +X270168Y355755D01* +X270208Y355699D01* +X270254Y355611D01* +X270323Y355538D01* +X270363Y355482D01* +X270463Y355382D01* +X270463Y350514D01* +X270471Y350456D01* +X270469Y350398D01* +X270491Y350316D01* +X270503Y350232D01* +X270526Y350179D01* +X270541Y350123D01* +X270584Y350050D01* +X270619Y349973D01* +X270657Y349928D01* +X270686Y349878D01* +X270748Y349820D01* +X270802Y349756D01* +X270851Y349724D01* +X270894Y349684D01* +X270969Y349645D01* +X271039Y349598D01* +X271095Y349581D01* +X271147Y349554D01* +X271215Y349543D01* +X271310Y349513D01* +X271410Y349510D01* +X271478Y349499D01* +X273647Y349499D01* +X273733Y349511D01* +X273821Y349514D01* +X273873Y349531D01* +X273928Y349539D01* +X274008Y349574D01* +X274091Y349601D01* +X274130Y349629D01* +X274188Y349655D01* +X274301Y349751D01* +X274365Y349796D01* +X298914Y374345D01* +X300073Y375504D01* +X300090Y375528D01* +X300113Y375547D01* +X300175Y375641D01* +X300243Y375731D01* +X300254Y375759D01* +X300270Y375783D01* +X300304Y375891D01* +X300345Y375997D01* +X300347Y376026D01* +X300356Y376054D01* +X300359Y376168D01* +X300368Y376280D01* +X300363Y376309D01* +X300363Y376338D01* +X300335Y376448D01* +X300312Y376559D01* +X300299Y376585D01* +X300291Y376613D01* +X300234Y376711D01* +X300181Y376811D01* +X300161Y376833D01* +X300146Y376858D01* +X300064Y376935D01* +X299986Y377017D01* +X299960Y377032D01* +X299939Y377052D01* +X299838Y377104D01* +X299740Y377161D01* +X299712Y377168D01* +X299686Y377182D01* +X299608Y377195D01* +X299465Y377231D01* +X299402Y377229D01* +X299355Y377237D01* +X139700Y377237D01* +X139656Y377231D01* +X139620Y377234D01* +X136394Y376980D01* +X136236Y376945D01* +X136160Y376934D01* +X130024Y374940D01* +X129769Y374815D01* +X129755Y374803D01* +X129741Y374796D01* +X124521Y371003D01* +X124317Y370806D01* +X124308Y370789D01* +X124297Y370779D01* +X120504Y365559D01* +X120371Y365308D01* +X120367Y365290D01* +X120360Y365276D01* +X118366Y359140D01* +X118338Y358980D01* +X118320Y358906D01* +X118066Y355680D01* +X118069Y355635D01* +X118063Y355600D01* +X118063Y223981D01* +X115208Y215195D01* +X109778Y207722D01* +X102305Y202292D01* +X93519Y199437D01* +X25400Y199437D01* +X25356Y199431D01* +X25320Y199434D01* +X22094Y199180D01* +X21936Y199145D01* +X21860Y199134D01* +X15724Y197140D01* +X15469Y197015D01* +X15455Y197003D01* +X15441Y196996D01* +X10221Y193203D01* +X10017Y193006D01* +X10008Y192989D01* +X9997Y192979D01* +X6204Y187759D01* +X6071Y187508D01* +X6067Y187490D01* +X6060Y187476D01* +X4066Y181340D01* +X4038Y181180D01* +X4020Y181106D01* +X3766Y177880D01* +X3769Y177835D01* +X3763Y177800D01* +X3763Y25400D01* +X3769Y25356D01* +X3766Y25320D01* +X4020Y22094D01* +X4055Y21936D01* +X4066Y21860D01* +X6060Y15724D01* +X6185Y15469D01* +X6197Y15455D01* +X6204Y15441D01* +X9997Y10221D01* +X10194Y10017D01* +X10211Y10008D01* +X10221Y9997D01* +X15441Y6204D01* +X15692Y6071D01* +X15710Y6067D01* +X15724Y6060D01* +X21860Y4066D01* +X22020Y4038D01* +X22094Y4020D01* +X25320Y3766D01* +X25365Y3769D01* +X25400Y3763D01* +X378813Y3763D01* +X378842Y3767D01* +X378871Y3764D01* +X378982Y3787D01* +X379095Y3803D01* +X379121Y3815D01* +X379150Y3820D01* +X379251Y3873D01* +X379354Y3919D01* +X379376Y3938D01* +X379402Y3951D01* +X379485Y4029D01* +X379571Y4102D01* +X379587Y4127D01* +X379609Y4147D01* +X379666Y4245D01* +X379729Y4339D01* +X379737Y4367D01* +X379752Y4392D01* +X379780Y4502D01* +X379814Y4610D01* +X379815Y4640D01* +X379822Y4668D01* +X379819Y4781D01* +X379822Y4894D01* +X379814Y4923D01* +X379813Y4952D01* +X379778Y5060D01* +X379750Y5169D01* +X379735Y5195D01* +X379726Y5223D01* +X379680Y5287D01* +X379605Y5414D01* +X379559Y5457D01* +X379531Y5496D01* +X378967Y6060D01* +X378632Y6639D01* +X378459Y7286D01* +X378459Y24639D01* +X399034Y24639D01* +X399092Y24647D01* +X399150Y24645D01* +X399232Y24667D01* +X399315Y24679D01* +X399369Y24703D01* +X399425Y24717D01* +X399498Y24760D01* +X399575Y24795D01* +X399619Y24833D01* +X399670Y24863D01* +X399727Y24924D01* +X399792Y24979D01* +X399824Y25027D01* +X399864Y25070D01* +X399903Y25145D01* +X399949Y25215D01* +X399967Y25271D01* +X399994Y25323D01* +X400005Y25391D01* +X400035Y25486D01* +X400038Y25586D01* +X400049Y25654D01* +X400049Y26671D01* +X400051Y26671D01* +X400051Y25654D01* +X400059Y25596D01* +X400058Y25538D01* +X400079Y25456D01* +X400091Y25373D01* +X400115Y25319D01* +X400129Y25263D01* +X400172Y25190D01* +X400207Y25113D01* +X400245Y25068D01* +X400275Y25018D01* +X400336Y24960D01* +X400391Y24896D01* +X400439Y24864D01* +X400482Y24824D01* +X400557Y24785D01* +X400627Y24739D01* +X400683Y24721D01* +X400735Y24694D01* +X400803Y24683D01* +X400898Y24653D01* +X400998Y24650D01* +X401066Y24639D01* +X421641Y24639D01* +X421641Y7286D01* +X421468Y6639D01* +X421133Y6060D01* +X420569Y5496D01* +X420551Y5472D01* +X420529Y5453D01* +X420466Y5359D01* +X420398Y5269D01* +X420388Y5241D01* +X420371Y5217D01* +X420337Y5109D01* +X420297Y5003D01* +X420294Y4974D01* +X420286Y4946D01* +X420283Y4832D01* +X420273Y4720D01* +X420279Y4691D01* +X420278Y4662D01* +X420307Y4552D01* +X420329Y4441D01* +X420343Y4415D01* +X420350Y4387D01* +X420408Y4289D01* +X420460Y4189D01* +X420480Y4167D01* +X420495Y4142D01* +X420578Y4065D01* +X420656Y3983D01* +X420681Y3968D01* +X420703Y3948D01* +X420804Y3896D01* +X420901Y3839D01* +X420930Y3832D01* +X420956Y3818D01* +X421033Y3805D01* +X421177Y3769D01* +X421239Y3771D01* +X421287Y3763D01* +X581295Y3763D01* +X581324Y3767D01* +G37* +G36* +X1346244Y3769D02* +X1346244Y3769D01* +X1346280Y3766D01* +X1349506Y4020D01* +X1349664Y4055D01* +X1349740Y4066D01* +X1355876Y6060D01* +X1356131Y6185D01* +X1356145Y6197D01* +X1356159Y6204D01* +X1361379Y9997D01* +X1361583Y10194D01* +X1361592Y10211D01* +X1361603Y10221D01* +X1365396Y15441D01* +X1365529Y15692D01* +X1365533Y15710D01* +X1365540Y15724D01* +X1367534Y21860D01* +X1367562Y22020D01* +X1367580Y22094D01* +X1367834Y25320D01* +X1367831Y25365D01* +X1367837Y25400D01* +X1367837Y177800D01* +X1367831Y177844D01* +X1367834Y177880D01* +X1367580Y181106D01* +X1367545Y181264D01* +X1367534Y181340D01* +X1365540Y187476D01* +X1365415Y187731D01* +X1365403Y187745D01* +X1365396Y187759D01* +X1361603Y192979D01* +X1361406Y193183D01* +X1361389Y193192D01* +X1361379Y193203D01* +X1356159Y196996D01* +X1355908Y197129D01* +X1355890Y197133D01* +X1355876Y197140D01* +X1349740Y199134D01* +X1349580Y199162D01* +X1349506Y199180D01* +X1346280Y199434D01* +X1346235Y199431D01* +X1346200Y199437D01* +X1278081Y199437D01* +X1269295Y202292D01* +X1261822Y207722D01* +X1256392Y215195D01* +X1253537Y223981D01* +X1253537Y307340D01* +X1253529Y307395D01* +X1253531Y307439D01* +X1253530Y307440D01* +X1253531Y307456D01* +X1253509Y307538D01* +X1253497Y307622D01* +X1253474Y307675D01* +X1253459Y307731D01* +X1253416Y307804D01* +X1253381Y307881D01* +X1253343Y307926D01* +X1253314Y307976D01* +X1253252Y308034D01* +X1253198Y308098D01* +X1253149Y308130D01* +X1253106Y308170D01* +X1253031Y308209D01* +X1252961Y308256D01* +X1252905Y308273D01* +X1252853Y308300D01* +X1252785Y308311D01* +X1252690Y308341D01* +X1252590Y308344D01* +X1252522Y308355D01* +X901395Y308355D01* +X901366Y308351D01* +X901337Y308354D01* +X901226Y308331D01* +X901114Y308315D01* +X901087Y308303D01* +X901058Y308298D01* +X900958Y308246D01* +X900854Y308199D01* +X900832Y308180D01* +X900806Y308167D01* +X900724Y308089D01* +X900637Y308016D01* +X900621Y307991D01* +X900600Y307971D01* +X900543Y307873D01* +X900480Y307779D01* +X900471Y307751D01* +X900456Y307726D01* +X900428Y307616D01* +X900394Y307508D01* +X900393Y307478D01* +X900386Y307450D01* +X900390Y307337D01* +X900387Y307224D01* +X900394Y307195D01* +X900395Y307166D01* +X900430Y307058D01* +X900433Y307048D01* +X900433Y287053D01* +X897807Y284427D01* +X895464Y284427D01* +X895406Y284419D01* +X895348Y284421D01* +X895266Y284399D01* +X895182Y284387D01* +X895129Y284364D01* +X895073Y284349D01* +X895000Y284306D01* +X894923Y284271D01* +X894878Y284233D01* +X894828Y284204D01* +X894770Y284142D01* +X894706Y284088D01* +X894674Y284039D01* +X894634Y283996D01* +X894595Y283921D01* +X894548Y283851D01* +X894531Y283795D01* +X894504Y283743D01* +X894493Y283675D01* +X894463Y283580D01* +X894460Y283480D01* +X894449Y283412D01* +X894449Y278214D01* +X894457Y278156D01* +X894455Y278098D01* +X894477Y278016D01* +X894489Y277932D01* +X894512Y277879D01* +X894527Y277823D01* +X894570Y277750D01* +X894605Y277673D01* +X894643Y277628D01* +X894672Y277578D01* +X894734Y277520D01* +X894788Y277456D01* +X894837Y277424D01* +X894880Y277384D01* +X894955Y277345D01* +X895025Y277298D01* +X895081Y277281D01* +X895133Y277254D01* +X895201Y277243D01* +X895296Y277213D01* +X895396Y277210D01* +X895464Y277199D01* +X987707Y277199D01* +X987794Y277211D01* +X987881Y277214D01* +X987934Y277231D01* +X987989Y277239D01* +X988069Y277274D01* +X988152Y277301D01* +X988191Y277329D01* +X988248Y277355D01* +X988361Y277451D01* +X988425Y277496D01* +X989862Y278933D01* +X996418Y278933D01* +X997855Y277496D01* +X997925Y277444D01* +X997988Y277384D01* +X998038Y277358D01* +X998082Y277325D01* +X998164Y277294D01* +X998242Y277254D01* +X998289Y277246D01* +X998348Y277224D01* +X998495Y277212D01* +X998573Y277199D01* +X1000407Y277199D01* +X1000494Y277211D01* +X1000581Y277214D01* +X1000634Y277231D01* +X1000689Y277239D01* +X1000769Y277274D01* +X1000852Y277301D01* +X1000891Y277329D01* +X1000948Y277355D01* +X1001061Y277451D01* +X1001125Y277496D01* +X1002311Y278682D01* +X1002346Y278729D01* +X1002389Y278769D01* +X1002431Y278842D01* +X1002482Y278909D01* +X1002503Y278964D01* +X1002532Y279014D01* +X1002553Y279096D01* +X1002583Y279175D01* +X1002588Y279233D01* +X1002603Y279290D01* +X1002600Y279374D01* +X1002607Y279458D01* +X1002595Y279516D01* +X1002594Y279574D01* +X1002568Y279654D01* +X1002551Y279737D01* +X1002524Y279789D01* +X1002506Y279845D01* +X1002466Y279901D01* +X1002420Y279989D01* +X1002351Y280062D01* +X1002311Y280118D01* +X1000807Y281622D01* +X1000807Y287678D01* +X1002135Y289006D01* +X1002170Y289052D01* +X1002212Y289093D01* +X1002255Y289166D01* +X1002306Y289233D01* +X1002327Y289288D01* +X1002356Y289338D01* +X1002377Y289420D01* +X1002407Y289499D01* +X1002412Y289557D01* +X1002426Y289614D01* +X1002424Y289698D01* +X1002431Y289782D01* +X1002419Y289839D01* +X1002417Y289898D01* +X1002391Y289978D01* +X1002375Y290061D01* +X1002348Y290113D01* +X1002330Y290168D01* +X1002290Y290224D01* +X1002244Y290313D01* +X1002175Y290385D01* +X1002135Y290441D01* +X1001102Y291474D01* +X1000251Y293528D01* +X1000251Y295752D01* +X1001102Y297806D01* +X1002674Y299378D01* +X1004728Y300229D01* +X1006952Y300229D01* +X1009006Y299378D01* +X1010578Y297806D01* +X1011429Y295752D01* +X1011429Y293528D01* +X1010578Y291474D01* +X1009545Y290441D01* +X1009510Y290395D01* +X1009468Y290354D01* +X1009425Y290282D01* +X1009374Y290214D01* +X1009353Y290160D01* +X1009324Y290109D01* +X1009303Y290027D01* +X1009273Y289949D01* +X1009268Y289890D01* +X1009254Y289834D01* +X1009256Y289749D01* +X1009249Y289665D01* +X1009261Y289608D01* +X1009263Y289550D01* +X1009289Y289469D01* +X1009305Y289387D01* +X1009332Y289335D01* +X1009350Y289279D01* +X1009390Y289223D01* +X1009436Y289134D01* +X1009505Y289062D01* +X1009545Y289006D01* +X1010555Y287996D01* +X1010625Y287944D01* +X1010689Y287884D01* +X1010738Y287858D01* +X1010782Y287825D01* +X1010864Y287794D01* +X1010942Y287754D01* +X1010989Y287746D01* +X1011048Y287724D01* +X1011195Y287712D01* +X1011273Y287699D01* +X1013032Y287699D01* +X1013090Y287707D01* +X1013148Y287705D01* +X1013230Y287727D01* +X1013314Y287739D01* +X1013367Y287762D01* +X1013423Y287777D01* +X1013496Y287820D01* +X1013573Y287855D01* +X1013618Y287893D01* +X1013668Y287922D01* +X1013726Y287984D01* +X1013790Y288038D01* +X1013822Y288087D01* +X1013862Y288130D01* +X1013901Y288205D01* +X1013948Y288275D01* +X1013965Y288331D01* +X1013992Y288383D01* +X1014003Y288451D01* +X1014033Y288546D01* +X1014036Y288646D01* +X1014047Y288714D01* +X1014047Y291957D01* +X1016263Y294173D01* +X1025897Y294173D01* +X1027014Y293055D01* +X1027038Y293038D01* +X1027057Y293015D01* +X1027151Y292953D01* +X1027241Y292885D01* +X1027269Y292874D01* +X1027293Y292858D01* +X1027401Y292824D01* +X1027507Y292783D01* +X1027536Y292781D01* +X1027564Y292772D01* +X1027678Y292769D01* +X1027790Y292760D01* +X1027819Y292766D01* +X1027848Y292765D01* +X1027958Y292793D01* +X1028069Y292816D01* +X1028095Y292829D01* +X1028123Y292837D01* +X1028221Y292894D01* +X1028321Y292947D01* +X1028343Y292967D01* +X1028368Y292982D01* +X1028445Y293064D01* +X1028527Y293142D01* +X1028542Y293168D01* +X1028562Y293189D01* +X1028614Y293290D01* +X1028671Y293388D01* +X1028678Y293416D01* +X1028692Y293442D01* +X1028705Y293520D01* +X1028741Y293663D01* +X1028739Y293726D01* +X1028747Y293773D01* +X1028747Y294958D01* +X1030502Y296713D01* +X1037058Y296713D01* +X1039065Y294706D01* +X1039135Y294654D01* +X1039199Y294594D01* +X1039248Y294568D01* +X1039292Y294535D01* +X1039374Y294504D01* +X1039452Y294464D01* +X1039499Y294456D01* +X1039558Y294434D01* +X1039705Y294422D01* +X1039783Y294409D01* +X1039872Y294409D01* +X1039930Y294417D01* +X1039988Y294415D01* +X1040070Y294437D01* +X1040154Y294449D01* +X1040207Y294472D01* +X1040263Y294487D01* +X1040336Y294530D01* +X1040413Y294565D01* +X1040458Y294603D01* +X1040508Y294632D01* +X1040566Y294694D01* +X1040630Y294748D01* +X1040662Y294797D01* +X1040702Y294840D01* +X1040741Y294915D01* +X1040788Y294985D01* +X1040805Y295041D01* +X1040832Y295093D01* +X1040843Y295161D01* +X1040873Y295256D01* +X1040876Y295356D01* +X1040887Y295424D01* +X1040887Y295779D01* +X1043001Y297893D01* +X1062839Y297893D01* +X1064953Y295779D01* +X1064953Y286941D01* +X1063740Y285728D01* +X1063705Y285681D01* +X1063662Y285641D01* +X1063620Y285568D01* +X1063569Y285501D01* +X1063548Y285446D01* +X1063519Y285396D01* +X1063498Y285314D01* +X1063468Y285235D01* +X1063463Y285177D01* +X1063449Y285120D01* +X1063451Y285036D01* +X1063444Y284952D01* +X1063456Y284894D01* +X1063458Y284836D01* +X1063484Y284756D01* +X1063500Y284673D01* +X1063527Y284621D01* +X1063545Y284565D01* +X1063585Y284509D01* +X1063631Y284421D01* +X1063676Y284373D01* +X1063689Y284351D01* +X1063715Y284327D01* +X1063740Y284292D01* +X1064953Y283079D01* +X1064953Y274241D01* +X1063740Y273028D01* +X1063705Y272981D01* +X1063662Y272941D01* +X1063620Y272868D01* +X1063569Y272801D01* +X1063548Y272746D01* +X1063519Y272696D01* +X1063498Y272614D01* +X1063468Y272535D01* +X1063463Y272477D01* +X1063449Y272420D01* +X1063451Y272336D01* +X1063444Y272252D01* +X1063456Y272194D01* +X1063458Y272136D01* +X1063484Y272056D01* +X1063500Y271973D01* +X1063527Y271921D01* +X1063545Y271865D01* +X1063585Y271809D01* +X1063631Y271721D01* +X1063700Y271648D01* +X1063740Y271592D01* +X1064953Y270379D01* +X1064953Y270024D01* +X1064961Y269966D01* +X1064959Y269908D01* +X1064981Y269826D01* +X1064993Y269742D01* +X1065016Y269689D01* +X1065031Y269633D01* +X1065074Y269560D01* +X1065109Y269483D01* +X1065147Y269438D01* +X1065176Y269388D01* +X1065238Y269330D01* +X1065292Y269266D01* +X1065341Y269234D01* +X1065384Y269194D01* +X1065459Y269155D01* +X1065529Y269108D01* +X1065585Y269091D01* +X1065637Y269064D01* +X1065705Y269053D01* +X1065800Y269023D01* +X1065900Y269020D01* +X1065968Y269009D01* +X1069423Y269009D01* +X1078829Y259603D01* +X1078829Y256494D01* +X1078833Y256465D01* +X1078830Y256435D01* +X1078853Y256324D01* +X1078869Y256212D01* +X1078881Y256186D01* +X1078886Y256157D01* +X1078939Y256056D01* +X1078985Y255953D01* +X1079004Y255930D01* +X1079017Y255904D01* +X1079095Y255822D01* +X1079168Y255736D01* +X1079193Y255720D01* +X1079213Y255698D01* +X1079311Y255641D01* +X1079405Y255578D01* +X1079433Y255569D01* +X1079458Y255555D01* +X1079568Y255527D01* +X1079676Y255492D01* +X1079706Y255492D01* +X1079734Y255485D01* +X1079847Y255488D01* +X1079960Y255485D01* +X1079989Y255493D01* +X1080018Y255494D01* +X1080126Y255528D01* +X1080235Y255557D01* +X1080261Y255572D01* +X1080289Y255581D01* +X1080353Y255627D01* +X1080480Y255702D01* +X1080523Y255748D01* +X1080562Y255776D01* +X1081594Y256808D01* +X1081646Y256877D01* +X1081706Y256941D01* +X1081731Y256991D01* +X1081764Y257035D01* +X1081796Y257116D01* +X1081835Y257194D01* +X1081843Y257242D01* +X1081866Y257300D01* +X1081874Y257397D01* +X1081877Y257407D01* +X1081878Y257448D01* +X1081891Y257525D01* +X1081891Y258593D01* +X1088243Y264945D01* +X1152451Y264945D01* +X1152564Y264961D01* +X1152679Y264971D01* +X1152705Y264981D01* +X1152732Y264985D01* +X1152837Y265032D01* +X1152944Y265073D01* +X1152966Y265089D01* +X1152991Y265101D01* +X1153079Y265175D01* +X1153171Y265244D01* +X1153187Y265267D01* +X1153208Y265284D01* +X1153272Y265380D01* +X1153341Y265472D01* +X1153351Y265498D01* +X1153366Y265521D01* +X1153401Y265631D01* +X1153441Y265738D01* +X1153443Y265766D01* +X1153452Y265792D01* +X1153455Y265907D01* +X1153464Y266021D01* +X1153458Y266046D01* +X1153459Y266076D01* +X1153392Y266333D01* +X1153389Y266349D01* +X1152651Y268128D01* +X1152651Y270352D01* +X1153502Y272406D01* +X1155074Y273978D01* +X1157128Y274829D01* +X1159256Y274829D01* +X1159314Y274837D01* +X1159372Y274835D01* +X1159454Y274857D01* +X1159538Y274869D01* +X1159591Y274892D01* +X1159647Y274907D01* +X1159720Y274950D01* +X1159797Y274985D01* +X1159842Y275023D01* +X1159892Y275052D01* +X1159950Y275114D01* +X1160014Y275168D01* +X1160046Y275217D01* +X1160086Y275260D01* +X1160125Y275335D01* +X1160172Y275405D01* +X1160189Y275461D01* +X1160216Y275513D01* +X1160227Y275581D01* +X1160257Y275676D01* +X1160260Y275776D01* +X1160271Y275844D01* +X1160271Y277972D01* +X1161122Y280026D01* +X1162694Y281598D01* +X1164748Y282449D01* +X1166972Y282449D01* +X1169026Y281598D01* +X1170418Y280206D01* +X1170487Y280154D01* +X1170551Y280094D01* +X1170601Y280068D01* +X1170645Y280035D01* +X1170726Y280004D01* +X1170804Y279964D01* +X1170852Y279956D01* +X1170910Y279934D01* +X1171058Y279922D01* +X1171135Y279909D01* +X1184903Y279909D01* +X1186478Y278333D01* +X1186502Y278316D01* +X1186521Y278293D01* +X1186615Y278231D01* +X1186705Y278163D01* +X1186733Y278152D01* +X1186757Y278136D01* +X1186865Y278102D01* +X1186971Y278061D01* +X1187000Y278059D01* +X1187028Y278050D01* +X1187142Y278047D01* +X1187254Y278038D01* +X1187283Y278043D01* +X1187312Y278043D01* +X1187422Y278071D01* +X1187533Y278094D01* +X1187559Y278107D01* +X1187587Y278115D01* +X1187685Y278172D01* +X1187785Y278225D01* +X1187807Y278245D01* +X1187832Y278260D01* +X1187909Y278342D01* +X1187991Y278420D01* +X1188006Y278446D01* +X1188026Y278467D01* +X1188078Y278568D01* +X1188135Y278666D01* +X1188142Y278694D01* +X1188156Y278720D01* +X1188169Y278798D01* +X1188205Y278941D01* +X1188203Y279004D01* +X1188211Y279051D01* +X1188211Y280512D01* +X1189062Y282566D01* +X1190634Y284138D01* +X1192688Y284989D01* +X1194657Y284989D01* +X1194743Y285001D01* +X1194831Y285004D01* +X1194883Y285021D01* +X1194938Y285029D01* +X1195018Y285064D01* +X1195101Y285091D01* +X1195140Y285119D01* +X1195198Y285145D01* +X1195311Y285241D01* +X1195375Y285286D01* +X1204497Y294409D01* +X1209872Y294409D01* +X1209930Y294417D01* +X1209988Y294415D01* +X1210070Y294437D01* +X1210154Y294449D01* +X1210207Y294472D01* +X1210263Y294487D01* +X1210336Y294530D01* +X1210413Y294565D01* +X1210458Y294603D01* +X1210508Y294632D01* +X1210566Y294694D01* +X1210630Y294748D01* +X1210662Y294797D01* +X1210702Y294840D01* +X1210741Y294915D01* +X1210788Y294985D01* +X1210805Y295041D01* +X1210832Y295093D01* +X1210843Y295161D01* +X1210873Y295256D01* +X1210876Y295356D01* +X1210887Y295424D01* +X1210887Y295779D01* +X1213001Y297893D01* +X1232839Y297893D01* +X1234953Y295779D01* +X1234953Y286941D01* +X1233740Y285728D01* +X1233705Y285681D01* +X1233662Y285641D01* +X1233620Y285568D01* +X1233569Y285501D01* +X1233548Y285446D01* +X1233519Y285396D01* +X1233498Y285314D01* +X1233468Y285235D01* +X1233463Y285177D01* +X1233449Y285120D01* +X1233451Y285036D01* +X1233444Y284952D01* +X1233456Y284894D01* +X1233458Y284836D01* +X1233484Y284756D01* +X1233500Y284673D01* +X1233527Y284621D01* +X1233545Y284565D01* +X1233585Y284509D01* +X1233631Y284421D01* +X1233676Y284373D01* +X1233689Y284351D01* +X1233715Y284327D01* +X1233740Y284292D01* +X1234953Y283079D01* +X1234953Y274241D01* +X1233740Y273028D01* +X1233705Y272981D01* +X1233662Y272941D01* +X1233620Y272868D01* +X1233569Y272801D01* +X1233548Y272746D01* +X1233519Y272696D01* +X1233498Y272614D01* +X1233468Y272535D01* +X1233463Y272477D01* +X1233449Y272420D01* +X1233451Y272336D01* +X1233444Y272252D01* +X1233456Y272194D01* +X1233458Y272136D01* +X1233484Y272056D01* +X1233500Y271973D01* +X1233527Y271921D01* +X1233545Y271865D01* +X1233585Y271809D01* +X1233631Y271721D01* +X1233700Y271648D01* +X1233740Y271592D01* +X1234953Y270379D01* +X1234953Y261541D01* +X1233740Y260328D01* +X1233706Y260283D01* +X1233704Y260281D01* +X1233703Y260280D01* +X1233662Y260241D01* +X1233620Y260168D01* +X1233569Y260101D01* +X1233549Y260048D01* +X1233547Y260045D01* +X1233546Y260042D01* +X1233519Y259996D01* +X1233498Y259914D01* +X1233468Y259835D01* +X1233463Y259782D01* +X1233461Y259774D01* +X1233461Y259768D01* +X1233449Y259720D01* +X1233451Y259636D01* +X1233444Y259552D01* +X1233454Y259503D01* +X1233454Y259489D01* +X1233456Y259479D01* +X1233458Y259436D01* +X1233484Y259356D01* +X1233500Y259273D01* +X1233520Y259235D01* +X1233525Y259214D01* +X1233534Y259200D01* +X1233545Y259165D01* +X1233585Y259109D01* +X1233631Y259021D01* +X1233656Y258994D01* +X1233671Y258970D01* +X1233713Y258931D01* +X1233740Y258892D01* +X1234953Y257679D01* +X1234953Y248841D01* +X1233740Y247628D01* +X1233705Y247581D01* +X1233662Y247541D01* +X1233620Y247468D01* +X1233569Y247401D01* +X1233548Y247346D01* +X1233519Y247296D01* +X1233498Y247214D01* +X1233468Y247135D01* +X1233463Y247077D01* +X1233449Y247020D01* +X1233451Y246936D01* +X1233444Y246852D01* +X1233456Y246794D01* +X1233458Y246736D01* +X1233484Y246656D01* +X1233500Y246573D01* +X1233527Y246521D01* +X1233545Y246465D01* +X1233585Y246409D01* +X1233631Y246321D01* +X1233700Y246248D01* +X1233740Y246192D01* +X1234953Y244979D01* +X1234953Y236141D01* +X1233740Y234928D01* +X1233727Y234911D01* +X1233714Y234900D01* +X1233697Y234874D01* +X1233662Y234841D01* +X1233620Y234768D01* +X1233569Y234701D01* +X1233548Y234646D01* +X1233519Y234596D01* +X1233498Y234514D01* +X1233468Y234435D01* +X1233463Y234377D01* +X1233449Y234320D01* +X1233451Y234236D01* +X1233444Y234152D01* +X1233456Y234094D01* +X1233458Y234036D01* +X1233484Y233956D01* +X1233500Y233873D01* +X1233527Y233821D01* +X1233545Y233765D01* +X1233585Y233709D01* +X1233631Y233621D01* +X1233700Y233548D01* +X1233740Y233492D01* +X1234953Y232279D01* +X1234953Y223441D01* +X1233740Y222228D01* +X1233705Y222181D01* +X1233662Y222141D01* +X1233620Y222068D01* +X1233569Y222001D01* +X1233548Y221946D01* +X1233519Y221896D01* +X1233498Y221814D01* +X1233468Y221735D01* +X1233463Y221677D01* +X1233449Y221620D01* +X1233451Y221536D01* +X1233444Y221452D01* +X1233456Y221394D01* +X1233458Y221336D01* +X1233484Y221256D01* +X1233500Y221173D01* +X1233527Y221121D01* +X1233545Y221065D01* +X1233585Y221009D01* +X1233631Y220921D01* +X1233700Y220848D01* +X1233740Y220792D01* +X1234953Y219579D01* +X1234953Y210741D01* +X1233740Y209528D01* +X1233705Y209481D01* +X1233662Y209441D01* +X1233620Y209368D01* +X1233569Y209301D01* +X1233548Y209246D01* +X1233519Y209196D01* +X1233498Y209114D01* +X1233468Y209035D01* +X1233463Y208977D01* +X1233449Y208920D01* +X1233451Y208836D01* +X1233444Y208752D01* +X1233456Y208694D01* +X1233458Y208636D01* +X1233484Y208556D01* +X1233500Y208473D01* +X1233527Y208421D01* +X1233545Y208365D01* +X1233585Y208309D01* +X1233631Y208221D01* +X1233700Y208148D01* +X1233740Y208092D01* +X1234953Y206879D01* +X1234953Y198041D01* +X1233740Y196828D01* +X1233705Y196781D01* +X1233662Y196741D01* +X1233620Y196668D01* +X1233569Y196601D01* +X1233548Y196546D01* +X1233519Y196496D01* +X1233498Y196414D01* +X1233468Y196335D01* +X1233463Y196277D01* +X1233449Y196220D01* +X1233451Y196136D01* +X1233444Y196052D01* +X1233456Y195994D01* +X1233458Y195936D01* +X1233484Y195856D01* +X1233500Y195773D01* +X1233527Y195721D01* +X1233545Y195665D01* +X1233585Y195609D01* +X1233631Y195521D01* +X1233700Y195448D01* +X1233740Y195392D01* +X1234953Y194179D01* +X1234953Y193824D01* +X1234961Y193766D01* +X1234959Y193708D01* +X1234981Y193626D01* +X1234993Y193542D01* +X1235016Y193489D01* +X1235031Y193433D01* +X1235074Y193360D01* +X1235109Y193283D01* +X1235147Y193238D01* +X1235176Y193188D01* +X1235238Y193130D01* +X1235292Y193066D01* +X1235341Y193034D01* +X1235384Y192994D01* +X1235459Y192955D01* +X1235529Y192908D01* +X1235585Y192891D01* +X1235637Y192864D01* +X1235705Y192853D01* +X1235800Y192823D01* +X1235900Y192820D01* +X1235968Y192809D01* +X1236443Y192809D01* +X1242569Y186683D01* +X1242569Y137588D01* +X1242577Y137530D01* +X1242575Y137472D01* +X1242597Y137390D01* +X1242609Y137306D01* +X1242632Y137253D01* +X1242647Y137197D01* +X1242690Y137124D01* +X1242725Y137047D01* +X1242763Y137002D01* +X1242792Y136952D01* +X1242854Y136894D01* +X1242908Y136830D01* +X1242957Y136798D01* +X1243000Y136758D01* +X1243075Y136719D01* +X1243145Y136672D01* +X1243201Y136655D01* +X1243253Y136628D01* +X1243321Y136617D01* +X1243416Y136587D01* +X1243516Y136584D01* +X1243584Y136573D01* +X1254617Y136573D01* +X1256582Y134607D01* +X1256629Y134572D01* +X1256669Y134530D01* +X1256742Y134487D01* +X1256809Y134437D01* +X1256864Y134416D01* +X1256914Y134386D01* +X1256996Y134365D01* +X1257075Y134335D01* +X1257133Y134331D01* +X1257190Y134316D01* +X1257274Y134319D01* +X1257358Y134312D01* +X1257416Y134323D01* +X1257474Y134325D01* +X1257554Y134351D01* +X1257637Y134368D01* +X1257689Y134395D01* +X1257745Y134413D01* +X1257801Y134453D01* +X1257889Y134499D01* +X1257962Y134567D01* +X1258018Y134607D01* +X1259983Y136573D01* +X1260245Y136573D01* +X1260274Y136577D01* +X1260304Y136574D01* +X1260415Y136597D01* +X1260527Y136613D01* +X1260554Y136625D01* +X1260582Y136630D01* +X1260683Y136683D01* +X1260786Y136729D01* +X1260809Y136748D01* +X1260835Y136761D01* +X1260917Y136839D01* +X1261003Y136912D01* +X1261020Y136937D01* +X1261041Y136957D01* +X1261098Y137055D01* +X1261161Y137149D01* +X1261170Y137177D01* +X1261185Y137202D01* +X1261212Y137312D01* +X1261247Y137420D01* +X1261247Y137450D01* +X1261255Y137478D01* +X1261251Y137591D01* +X1261254Y137704D01* +X1261247Y137733D01* +X1261246Y137762D01* +X1261211Y137870D01* +X1261182Y137979D01* +X1261167Y138005D01* +X1261158Y138033D01* +X1261112Y138097D01* +X1261037Y138224D01* +X1260991Y138267D01* +X1260963Y138306D01* +X1260307Y138962D01* +X1260307Y145518D01* +X1262062Y147273D01* +X1268118Y147273D01* +X1269873Y145518D01* +X1269873Y138962D01* +X1269217Y138306D01* +X1269199Y138282D01* +X1269177Y138263D01* +X1269114Y138169D01* +X1269046Y138079D01* +X1269035Y138051D01* +X1269019Y138027D01* +X1268985Y137919D01* +X1268945Y137813D01* +X1268942Y137784D01* +X1268933Y137756D01* +X1268930Y137642D01* +X1268921Y137530D01* +X1268927Y137501D01* +X1268926Y137472D01* +X1268955Y137362D01* +X1268977Y137251D01* +X1268991Y137225D01* +X1268998Y137197D01* +X1269056Y137099D01* +X1269108Y136999D01* +X1269128Y136977D01* +X1269143Y136952D01* +X1269226Y136875D01* +X1269304Y136793D01* +X1269329Y136778D01* +X1269350Y136758D01* +X1269451Y136706D01* +X1269549Y136649D01* +X1269577Y136642D01* +X1269604Y136628D01* +X1269681Y136615D01* +X1269825Y136579D01* +X1269887Y136581D01* +X1269935Y136573D01* +X1270617Y136573D01* +X1272833Y134357D01* +X1272833Y124723D01* +X1270617Y122507D01* +X1259983Y122507D01* +X1258018Y124473D01* +X1257971Y124508D01* +X1257931Y124550D01* +X1257858Y124593D01* +X1257791Y124643D01* +X1257736Y124664D01* +X1257686Y124694D01* +X1257604Y124715D01* +X1257525Y124745D01* +X1257467Y124749D01* +X1257410Y124764D01* +X1257326Y124761D01* +X1257242Y124768D01* +X1257184Y124757D01* +X1257126Y124755D01* +X1257046Y124729D01* +X1256963Y124712D01* +X1256911Y124685D01* +X1256855Y124667D01* +X1256799Y124627D01* +X1256711Y124581D01* +X1256638Y124513D01* +X1256582Y124473D01* +X1254617Y122507D01* +X1253364Y122507D01* +X1253306Y122499D01* +X1253248Y122501D01* +X1253166Y122479D01* +X1253082Y122467D01* +X1253029Y122444D01* +X1252973Y122429D01* +X1252900Y122386D01* +X1252823Y122351D01* +X1252778Y122313D01* +X1252728Y122284D01* +X1252670Y122222D01* +X1252606Y122168D01* +X1252574Y122119D01* +X1252534Y122076D01* +X1252495Y122001D01* +X1252448Y121931D01* +X1252431Y121875D01* +X1252404Y121823D01* +X1252393Y121755D01* +X1252363Y121660D01* +X1252360Y121560D01* +X1252349Y121492D01* +X1252349Y119071D01* +X1252353Y119040D01* +X1252351Y119010D01* +X1252368Y118933D01* +X1252389Y118790D01* +X1252415Y118731D01* +X1252426Y118682D01* +X1252729Y117952D01* +X1252729Y115728D01* +X1251878Y113674D01* +X1250306Y112102D01* +X1248252Y111251D01* +X1246028Y111251D01* +X1243974Y112102D01* +X1242402Y113674D01* +X1241551Y115728D01* +X1241551Y117952D01* +X1242402Y120006D01* +X1243725Y121329D01* +X1243760Y121376D01* +X1243803Y121416D01* +X1243846Y121489D01* +X1243896Y121556D01* +X1243917Y121611D01* +X1243947Y121661D01* +X1243968Y121743D01* +X1243998Y121822D01* +X1244002Y121880D01* +X1244017Y121937D01* +X1244014Y122021D01* +X1244021Y122105D01* +X1244010Y122163D01* +X1244008Y122221D01* +X1243982Y122301D01* +X1243965Y122384D01* +X1243938Y122436D01* +X1243920Y122492D01* +X1243880Y122548D01* +X1243834Y122636D01* +X1243766Y122709D01* +X1243725Y122765D01* +X1243649Y122842D01* +X1243602Y122877D01* +X1243562Y122919D01* +X1243489Y122962D01* +X1243422Y123012D01* +X1243367Y123033D01* +X1243317Y123063D01* +X1243235Y123084D01* +X1243156Y123114D01* +X1243098Y123119D01* +X1243041Y123133D01* +X1242957Y123130D01* +X1242873Y123137D01* +X1242815Y123126D01* +X1242757Y123124D01* +X1242677Y123098D01* +X1242594Y123081D01* +X1242542Y123054D01* +X1242486Y123036D01* +X1242430Y122996D01* +X1242342Y122950D01* +X1242269Y122882D01* +X1242213Y122842D01* +X1225713Y106341D01* +X1223870Y106341D01* +X1223784Y106329D01* +X1223699Y106327D01* +X1223644Y106309D01* +X1223588Y106301D01* +X1223510Y106266D01* +X1223428Y106240D01* +X1223381Y106208D01* +X1223329Y106185D01* +X1223263Y106130D01* +X1223192Y106082D01* +X1223155Y106038D01* +X1223112Y106002D01* +X1223064Y105930D01* +X1223009Y105864D01* +X1222986Y105812D01* +X1222954Y105765D01* +X1222928Y105683D01* +X1222893Y105604D01* +X1222885Y105548D01* +X1222868Y105494D01* +X1222866Y105408D01* +X1222854Y105323D01* +X1222862Y105267D01* +X1222861Y105210D01* +X1222883Y105127D01* +X1222895Y105042D01* +X1222918Y104990D01* +X1222933Y104935D01* +X1222977Y104861D01* +X1223012Y104782D01* +X1223049Y104739D01* +X1223078Y104690D01* +X1223141Y104631D01* +X1223196Y104566D01* +X1223238Y104540D01* +X1223285Y104496D01* +X1223414Y104430D01* +X1223481Y104388D01* +X1224906Y103798D01* +X1226478Y102226D01* +X1227329Y100172D01* +X1227329Y97948D01* +X1226478Y95894D01* +X1224906Y94322D01* +X1222852Y93471D01* +X1220628Y93471D01* +X1218574Y94322D01* +X1217541Y95355D01* +X1217495Y95390D01* +X1217455Y95432D01* +X1217382Y95475D01* +X1217314Y95526D01* +X1217260Y95547D01* +X1217209Y95576D01* +X1217128Y95597D01* +X1217049Y95627D01* +X1216990Y95632D01* +X1216934Y95646D01* +X1216849Y95644D01* +X1216765Y95651D01* +X1216708Y95639D01* +X1216650Y95637D01* +X1216569Y95611D01* +X1216487Y95595D01* +X1216435Y95568D01* +X1216379Y95550D01* +X1216323Y95510D01* +X1216234Y95464D01* +X1216162Y95395D01* +X1216106Y95355D01* +X1214926Y94175D01* +X1214874Y94105D01* +X1214814Y94042D01* +X1214788Y93992D01* +X1214755Y93948D01* +X1214724Y93866D01* +X1214684Y93788D01* +X1214676Y93741D01* +X1214654Y93682D01* +X1214642Y93535D01* +X1214629Y93457D01* +X1214629Y90007D01* +X1205223Y80601D01* +X1182377Y80601D01* +X1172971Y90007D01* +X1172971Y93457D01* +X1172959Y93544D01* +X1172956Y93631D01* +X1172939Y93684D01* +X1172931Y93739D01* +X1172896Y93819D01* +X1172869Y93902D01* +X1172841Y93941D01* +X1172815Y93998D01* +X1172719Y94111D01* +X1172674Y94175D01* +X1170987Y95862D01* +X1170987Y101918D01* +X1172491Y103422D01* +X1172526Y103469D01* +X1172569Y103509D01* +X1172611Y103582D01* +X1172662Y103649D01* +X1172683Y103704D01* +X1172712Y103754D01* +X1172733Y103836D01* +X1172763Y103915D01* +X1172768Y103973D01* +X1172783Y104030D01* +X1172780Y104114D01* +X1172787Y104198D01* +X1172775Y104256D01* +X1172774Y104314D01* +X1172748Y104394D01* +X1172731Y104477D01* +X1172704Y104529D01* +X1172686Y104585D01* +X1172646Y104641D01* +X1172600Y104729D01* +X1172531Y104802D01* +X1172491Y104858D01* +X1170987Y106362D01* +X1170987Y112418D01* +X1172742Y114173D01* +X1176071Y114173D01* +X1176157Y114185D01* +X1176245Y114188D01* +X1176297Y114205D01* +X1176352Y114213D01* +X1176432Y114248D01* +X1176515Y114275D01* +X1176555Y114303D01* +X1176612Y114329D01* +X1176725Y114425D01* +X1176789Y114470D01* +X1177880Y115562D01* +X1177915Y115609D01* +X1177958Y115649D01* +X1178000Y115722D01* +X1178051Y115789D01* +X1178072Y115844D01* +X1178102Y115894D01* +X1178122Y115976D01* +X1178152Y116055D01* +X1178157Y116113D01* +X1178172Y116170D01* +X1178169Y116254D01* +X1178176Y116338D01* +X1178164Y116395D01* +X1178163Y116454D01* +X1178137Y116534D01* +X1178120Y116617D01* +X1178093Y116669D01* +X1178075Y116724D01* +X1178035Y116781D01* +X1177989Y116869D01* +X1177920Y116941D01* +X1177880Y116998D01* +X1176738Y118140D01* +X1176691Y118175D01* +X1176651Y118218D01* +X1176578Y118260D01* +X1176511Y118311D01* +X1176456Y118332D01* +X1176406Y118361D01* +X1176324Y118382D01* +X1176245Y118412D01* +X1176187Y118417D01* +X1176130Y118431D01* +X1176046Y118429D01* +X1175962Y118436D01* +X1175904Y118424D01* +X1175846Y118422D01* +X1175766Y118396D01* +X1175683Y118380D01* +X1175631Y118353D01* +X1175575Y118335D01* +X1175519Y118295D01* +X1175431Y118249D01* +X1175358Y118180D01* +X1175302Y118140D01* +X1174089Y116927D01* +X1165251Y116927D01* +X1164038Y118140D01* +X1163991Y118175D01* +X1163951Y118218D01* +X1163878Y118260D01* +X1163811Y118311D01* +X1163756Y118332D01* +X1163706Y118361D01* +X1163624Y118382D01* +X1163545Y118412D01* +X1163487Y118417D01* +X1163430Y118431D01* +X1163346Y118429D01* +X1163262Y118436D01* +X1163204Y118424D01* +X1163146Y118422D01* +X1163066Y118396D01* +X1162983Y118380D01* +X1162931Y118353D01* +X1162875Y118335D01* +X1162819Y118295D01* +X1162731Y118249D01* +X1162658Y118180D01* +X1162602Y118140D01* +X1161389Y116927D01* +X1152551Y116927D01* +X1151338Y118140D01* +X1151291Y118175D01* +X1151251Y118218D01* +X1151178Y118260D01* +X1151111Y118311D01* +X1151056Y118332D01* +X1151006Y118361D01* +X1150924Y118382D01* +X1150845Y118412D01* +X1150787Y118417D01* +X1150730Y118431D01* +X1150646Y118429D01* +X1150562Y118436D01* +X1150504Y118424D01* +X1150446Y118422D01* +X1150366Y118396D01* +X1150283Y118380D01* +X1150231Y118353D01* +X1150175Y118335D01* +X1150119Y118295D01* +X1150031Y118249D01* +X1149958Y118180D01* +X1149902Y118140D01* +X1148689Y116927D01* +X1139851Y116927D01* +X1138638Y118140D01* +X1138591Y118175D01* +X1138551Y118218D01* +X1138478Y118260D01* +X1138411Y118311D01* +X1138356Y118332D01* +X1138306Y118361D01* +X1138224Y118382D01* +X1138145Y118412D01* +X1138087Y118417D01* +X1138030Y118431D01* +X1137946Y118429D01* +X1137862Y118436D01* +X1137804Y118424D01* +X1137746Y118422D01* +X1137666Y118396D01* +X1137583Y118380D01* +X1137531Y118353D01* +X1137475Y118335D01* +X1137419Y118295D01* +X1137331Y118249D01* +X1137258Y118180D01* +X1137202Y118140D01* +X1135989Y116927D01* +X1127151Y116927D01* +X1125938Y118140D01* +X1125891Y118175D01* +X1125851Y118218D01* +X1125778Y118260D01* +X1125711Y118311D01* +X1125656Y118332D01* +X1125606Y118361D01* +X1125524Y118382D01* +X1125445Y118412D01* +X1125387Y118417D01* +X1125330Y118431D01* +X1125246Y118429D01* +X1125162Y118436D01* +X1125104Y118424D01* +X1125046Y118422D01* +X1124966Y118396D01* +X1124883Y118380D01* +X1124831Y118353D01* +X1124775Y118335D01* +X1124719Y118295D01* +X1124631Y118249D01* +X1124558Y118180D01* +X1124502Y118140D01* +X1123289Y116927D01* +X1114451Y116927D01* +X1113238Y118140D01* +X1113191Y118175D01* +X1113151Y118218D01* +X1113078Y118260D01* +X1113011Y118311D01* +X1112956Y118332D01* +X1112906Y118361D01* +X1112824Y118382D01* +X1112745Y118412D01* +X1112687Y118417D01* +X1112630Y118431D01* +X1112546Y118429D01* +X1112462Y118436D01* +X1112404Y118424D01* +X1112346Y118422D01* +X1112266Y118396D01* +X1112183Y118380D01* +X1112131Y118353D01* +X1112075Y118335D01* +X1112019Y118295D01* +X1111931Y118249D01* +X1111858Y118180D01* +X1111802Y118140D01* +X1110589Y116927D01* +X1101751Y116927D01* +X1100538Y118140D01* +X1100491Y118175D01* +X1100451Y118218D01* +X1100378Y118260D01* +X1100311Y118311D01* +X1100256Y118332D01* +X1100206Y118361D01* +X1100124Y118382D01* +X1100045Y118412D01* +X1099987Y118417D01* +X1099930Y118431D01* +X1099846Y118429D01* +X1099762Y118436D01* +X1099704Y118424D01* +X1099646Y118422D01* +X1099566Y118396D01* +X1099483Y118380D01* +X1099431Y118353D01* +X1099375Y118335D01* +X1099319Y118295D01* +X1099231Y118249D01* +X1099158Y118180D01* +X1099102Y118140D01* +X1097889Y116927D01* +X1097534Y116927D01* +X1097476Y116919D01* +X1097418Y116921D01* +X1097336Y116899D01* +X1097252Y116887D01* +X1097199Y116864D01* +X1097143Y116849D01* +X1097070Y116806D01* +X1096993Y116771D01* +X1096948Y116733D01* +X1096898Y116704D01* +X1096840Y116642D01* +X1096776Y116588D01* +X1096744Y116539D01* +X1096704Y116496D01* +X1096665Y116421D01* +X1096618Y116351D01* +X1096601Y116295D01* +X1096574Y116243D01* +X1096563Y116175D01* +X1096533Y116080D01* +X1096530Y115980D01* +X1096519Y115912D01* +X1096519Y109227D01* +X1083303Y96011D01* +X1082235Y96011D01* +X1082149Y95999D01* +X1082061Y95996D01* +X1082009Y95979D01* +X1081954Y95971D01* +X1081874Y95936D01* +X1081791Y95909D01* +X1081752Y95881D01* +X1081695Y95855D01* +X1081581Y95759D01* +X1081518Y95714D01* +X1080126Y94322D01* +X1078072Y93471D01* +X1075848Y93471D01* +X1073794Y94322D01* +X1072222Y95894D01* +X1071371Y97948D01* +X1071371Y100172D01* +X1072222Y102226D01* +X1073794Y103798D01* +X1075848Y104649D01* +X1078072Y104649D01* +X1080126Y103798D01* +X1080578Y103345D01* +X1080625Y103310D01* +X1080665Y103268D01* +X1080738Y103225D01* +X1080805Y103175D01* +X1080860Y103154D01* +X1080910Y103124D01* +X1080992Y103103D01* +X1081071Y103073D01* +X1081129Y103069D01* +X1081186Y103054D01* +X1081270Y103057D01* +X1081354Y103050D01* +X1081412Y103061D01* +X1081470Y103063D01* +X1081550Y103089D01* +X1081633Y103106D01* +X1081685Y103133D01* +X1081741Y103151D01* +X1081797Y103191D01* +X1081885Y103237D01* +X1081958Y103305D01* +X1082014Y103345D01* +X1090124Y111455D01* +X1090176Y111525D01* +X1090236Y111589D01* +X1090262Y111639D01* +X1090295Y111683D01* +X1090326Y111764D01* +X1090366Y111842D01* +X1090374Y111890D01* +X1090396Y111948D01* +X1090408Y112096D01* +X1090421Y112173D01* +X1090421Y115912D01* +X1090413Y115970D01* +X1090415Y116028D01* +X1090393Y116110D01* +X1090381Y116194D01* +X1090358Y116247D01* +X1090343Y116303D01* +X1090300Y116376D01* +X1090265Y116453D01* +X1090227Y116498D01* +X1090198Y116548D01* +X1090136Y116606D01* +X1090082Y116670D01* +X1090033Y116702D01* +X1089990Y116742D01* +X1089915Y116781D01* +X1089845Y116828D01* +X1089789Y116845D01* +X1089737Y116872D01* +X1089669Y116883D01* +X1089574Y116913D01* +X1089474Y116916D01* +X1089406Y116927D01* +X1089051Y116927D01* +X1086937Y119041D01* +X1086937Y138879D01* +X1089051Y140993D01* +X1097889Y140993D01* +X1099102Y139780D01* +X1099149Y139745D01* +X1099189Y139702D01* +X1099262Y139660D01* +X1099329Y139609D01* +X1099384Y139588D01* +X1099434Y139559D01* +X1099516Y139538D01* +X1099595Y139508D01* +X1099653Y139503D01* +X1099710Y139489D01* +X1099794Y139491D01* +X1099878Y139484D01* +X1099936Y139496D01* +X1099994Y139498D01* +X1100074Y139524D01* +X1100157Y139540D01* +X1100209Y139567D01* +X1100265Y139585D01* +X1100321Y139625D01* +X1100409Y139671D01* +X1100482Y139740D01* +X1100538Y139780D01* +X1101751Y140993D01* +X1110589Y140993D01* +X1111802Y139780D01* +X1111849Y139745D01* +X1111889Y139702D01* +X1111962Y139660D01* +X1112029Y139609D01* +X1112084Y139588D01* +X1112134Y139559D01* +X1112216Y139538D01* +X1112295Y139508D01* +X1112353Y139503D01* +X1112410Y139489D01* +X1112494Y139491D01* +X1112578Y139484D01* +X1112636Y139496D01* +X1112694Y139498D01* +X1112774Y139524D01* +X1112857Y139540D01* +X1112909Y139567D01* +X1112965Y139585D01* +X1113021Y139625D01* +X1113109Y139671D01* +X1113182Y139740D01* +X1113238Y139780D01* +X1114451Y140993D01* +X1122245Y140993D01* +X1122274Y140997D01* +X1122303Y140994D01* +X1122414Y141017D01* +X1122526Y141033D01* +X1122553Y141045D01* +X1122582Y141050D01* +X1122682Y141102D01* +X1122786Y141149D01* +X1122808Y141168D01* +X1122834Y141181D01* +X1122916Y141259D01* +X1123003Y141332D01* +X1123019Y141357D01* +X1123040Y141377D01* +X1123097Y141475D01* +X1123160Y141569D01* +X1123169Y141597D01* +X1123184Y141622D01* +X1123212Y141732D01* +X1123246Y141840D01* +X1123247Y141870D01* +X1123254Y141898D01* +X1123250Y142011D01* +X1123253Y142124D01* +X1123246Y142153D01* +X1123245Y142182D01* +X1123210Y142290D01* +X1123181Y142399D01* +X1123166Y142425D01* +X1123157Y142453D01* +X1123112Y142516D01* +X1123036Y142644D01* +X1122991Y142687D01* +X1122963Y142726D01* +X1094442Y171247D01* +X1094418Y171264D01* +X1094399Y171287D01* +X1094305Y171350D01* +X1094215Y171417D01* +X1094187Y171428D01* +X1094163Y171444D01* +X1094055Y171478D01* +X1093949Y171519D01* +X1093920Y171521D01* +X1093892Y171530D01* +X1093778Y171533D01* +X1093666Y171542D01* +X1093637Y171537D01* +X1093608Y171537D01* +X1093498Y171509D01* +X1093387Y171486D01* +X1093361Y171473D01* +X1093333Y171465D01* +X1093235Y171408D01* +X1093135Y171355D01* +X1093113Y171335D01* +X1093088Y171320D01* +X1093011Y171238D01* +X1092929Y171160D01* +X1092914Y171134D01* +X1092894Y171113D01* +X1092842Y171012D01* +X1092785Y170914D01* +X1092778Y170886D01* +X1092764Y170860D01* +X1092751Y170782D01* +X1092715Y170639D01* +X1092717Y170576D01* +X1092709Y170529D01* +X1092709Y157938D01* +X1074028Y139257D01* +X1073976Y139187D01* +X1073916Y139123D01* +X1073890Y139074D01* +X1073857Y139030D01* +X1073826Y138948D01* +X1073786Y138870D01* +X1073778Y138823D01* +X1073756Y138764D01* +X1073744Y138617D01* +X1073731Y138539D01* +X1073731Y106785D01* +X1060587Y93641D01* +X1056993Y93641D01* +X1056906Y93629D01* +X1056819Y93626D01* +X1056766Y93609D01* +X1056711Y93601D01* +X1056631Y93566D01* +X1056548Y93539D01* +X1056509Y93511D01* +X1056452Y93485D01* +X1056339Y93389D01* +X1056275Y93344D01* +X1054838Y91907D01* +X1048282Y91907D01* +X1047198Y92991D01* +X1047151Y93026D01* +X1047111Y93069D01* +X1047038Y93111D01* +X1046971Y93162D01* +X1046916Y93183D01* +X1046866Y93212D01* +X1046784Y93233D01* +X1046705Y93263D01* +X1046647Y93268D01* +X1046590Y93283D01* +X1046506Y93280D01* +X1046422Y93287D01* +X1046364Y93275D01* +X1046306Y93274D01* +X1046226Y93248D01* +X1046143Y93231D01* +X1046091Y93204D01* +X1046035Y93186D01* +X1045979Y93146D01* +X1045891Y93100D01* +X1045818Y93031D01* +X1045762Y92991D01* +X1044678Y91907D01* +X1038122Y91907D01* +X1037038Y92991D01* +X1036991Y93026D01* +X1036951Y93069D01* +X1036878Y93111D01* +X1036811Y93162D01* +X1036756Y93183D01* +X1036706Y93212D01* +X1036624Y93233D01* +X1036545Y93263D01* +X1036487Y93268D01* +X1036430Y93283D01* +X1036346Y93280D01* +X1036262Y93287D01* +X1036204Y93275D01* +X1036146Y93274D01* +X1036066Y93248D01* +X1035983Y93231D01* +X1035931Y93204D01* +X1035875Y93186D01* +X1035819Y93146D01* +X1035731Y93100D01* +X1035658Y93031D01* +X1035602Y92991D01* +X1034769Y92158D01* +X1034734Y92111D01* +X1034691Y92071D01* +X1034649Y91998D01* +X1034598Y91931D01* +X1034577Y91876D01* +X1034548Y91826D01* +X1034527Y91744D01* +X1034497Y91665D01* +X1034492Y91607D01* +X1034477Y91550D01* +X1034480Y91466D01* +X1034473Y91382D01* +X1034485Y91324D01* +X1034486Y91266D01* +X1034512Y91186D01* +X1034529Y91103D01* +X1034556Y91051D01* +X1034574Y90995D01* +X1034614Y90939D01* +X1034660Y90851D01* +X1034729Y90778D01* +X1034769Y90722D01* +X1036273Y89218D01* +X1036273Y83162D01* +X1035602Y82491D01* +X1035550Y82421D01* +X1035490Y82357D01* +X1035464Y82308D01* +X1035431Y82264D01* +X1035400Y82182D01* +X1035360Y82104D01* +X1035352Y82057D01* +X1035330Y81998D01* +X1035318Y81851D01* +X1035305Y81773D01* +X1035305Y69436D01* +X1027844Y61975D01* +X1024048Y61975D01* +X1023990Y61967D01* +X1023932Y61969D01* +X1023850Y61947D01* +X1023766Y61935D01* +X1023713Y61912D01* +X1023657Y61897D01* +X1023584Y61854D01* +X1023507Y61819D01* +X1023462Y61781D01* +X1023412Y61752D01* +X1023354Y61690D01* +X1023290Y61636D01* +X1023258Y61587D01* +X1023218Y61544D01* +X1023179Y61469D01* +X1023132Y61399D01* +X1023115Y61343D01* +X1023088Y61291D01* +X1023077Y61223D01* +X1023047Y61128D01* +X1023046Y61117D01* +X1020817Y58887D01* +X1011183Y58887D01* +X1008967Y61103D01* +X1008967Y71737D01* +X1009606Y72376D01* +X1009658Y72445D01* +X1009718Y72509D01* +X1009744Y72559D01* +X1009777Y72603D01* +X1009808Y72684D01* +X1009848Y72762D01* +X1009856Y72810D01* +X1009878Y72868D01* +X1009890Y73016D01* +X1009903Y73093D01* +X1009903Y73254D01* +X1009891Y73341D01* +X1009888Y73428D01* +X1009871Y73481D01* +X1009863Y73536D01* +X1009828Y73615D01* +X1009801Y73699D01* +X1009773Y73738D01* +X1009747Y73795D01* +X1009651Y73908D01* +X1009606Y73972D01* +X999802Y83776D01* +X999732Y83828D01* +X999668Y83888D01* +X999619Y83914D01* +X999575Y83947D01* +X999493Y83978D01* +X999415Y84018D01* +X999368Y84026D01* +X999309Y84048D01* +X999161Y84060D01* +X999084Y84073D01* +X993648Y84073D01* +X993590Y84065D01* +X993532Y84067D01* +X993450Y84045D01* +X993366Y84033D01* +X993313Y84010D01* +X993257Y83995D01* +X993184Y83952D01* +X993107Y83917D01* +X993062Y83879D01* +X993012Y83850D01* +X992954Y83788D01* +X992890Y83734D01* +X992858Y83685D01* +X992818Y83642D01* +X992779Y83567D01* +X992732Y83497D01* +X992715Y83441D01* +X992688Y83389D01* +X992677Y83321D01* +X992647Y83226D01* +X992644Y83126D01* +X992633Y83058D01* +X992633Y70278D01* +X991442Y69087D01* +X951658Y69087D01* +X950467Y70278D01* +X950467Y110062D01* +X951658Y111253D01* +X991442Y111253D01* +X992633Y110062D01* +X992633Y97282D01* +X992641Y97224D01* +X992639Y97166D01* +X992661Y97084D01* +X992673Y97000D01* +X992696Y96947D01* +X992711Y96891D01* +X992754Y96818D01* +X992789Y96741D01* +X992827Y96696D01* +X992856Y96646D01* +X992918Y96588D01* +X992972Y96524D01* +X993021Y96492D01* +X993064Y96452D01* +X993139Y96413D01* +X993209Y96366D01* +X993265Y96349D01* +X993317Y96322D01* +X993385Y96311D01* +X993480Y96281D01* +X993580Y96278D01* +X993648Y96267D01* +X1003243Y96267D01* +X1005484Y95339D01* +X1021169Y79654D01* +X1022097Y77413D01* +X1022097Y73093D01* +X1022109Y73007D01* +X1022112Y72919D01* +X1022129Y72867D01* +X1022137Y72812D01* +X1022172Y72732D01* +X1022199Y72649D01* +X1022227Y72610D01* +X1022253Y72552D01* +X1022349Y72439D01* +X1022394Y72376D01* +X1023033Y71737D01* +X1023033Y71120D01* +X1023041Y71062D01* +X1023039Y71004D01* +X1023061Y70922D01* +X1023073Y70838D01* +X1023096Y70785D01* +X1023111Y70729D01* +X1023154Y70656D01* +X1023189Y70579D01* +X1023227Y70534D01* +X1023256Y70484D01* +X1023318Y70426D01* +X1023372Y70362D01* +X1023418Y70332D01* +X1023425Y70325D01* +X1023429Y70322D01* +X1023464Y70290D01* +X1023539Y70251D01* +X1023609Y70204D01* +X1023654Y70190D01* +X1023670Y70181D01* +X1023683Y70178D01* +X1023717Y70160D01* +X1023785Y70149D01* +X1023880Y70119D01* +X1023918Y70118D01* +X1023946Y70111D01* +X1024002Y70113D01* +X1024048Y70105D01* +X1024056Y70105D01* +X1024112Y70113D01* +X1024164Y70111D01* +X1024192Y70119D01* +X1024230Y70120D01* +X1024282Y70137D01* +X1024337Y70145D01* +X1024402Y70173D01* +X1024439Y70183D01* +X1024455Y70193D01* +X1024500Y70207D01* +X1024540Y70235D01* +X1024597Y70261D01* +X1024660Y70314D01* +X1024684Y70328D01* +X1024711Y70357D01* +X1024774Y70402D01* +X1026878Y72506D01* +X1026930Y72576D01* +X1026990Y72640D01* +X1027016Y72689D01* +X1027049Y72734D01* +X1027080Y72815D01* +X1027120Y72893D01* +X1027128Y72941D01* +X1027150Y72999D01* +X1027162Y73147D01* +X1027175Y73224D01* +X1027175Y81773D01* +X1027163Y81860D01* +X1027160Y81947D01* +X1027143Y82000D01* +X1027135Y82055D01* +X1027100Y82135D01* +X1027073Y82218D01* +X1027045Y82257D01* +X1027019Y82314D01* +X1026923Y82427D01* +X1026878Y82491D01* +X1026207Y83162D01* +X1026207Y89218D01* +X1027711Y90722D01* +X1027746Y90769D01* +X1027789Y90809D01* +X1027831Y90882D01* +X1027882Y90949D01* +X1027903Y91004D01* +X1027932Y91054D01* +X1027953Y91136D01* +X1027983Y91215D01* +X1027988Y91273D01* +X1028003Y91330D01* +X1028000Y91414D01* +X1028007Y91498D01* +X1027995Y91555D01* +X1027994Y91614D01* +X1027968Y91694D01* +X1027951Y91777D01* +X1027924Y91829D01* +X1027906Y91885D01* +X1027866Y91941D01* +X1027820Y92029D01* +X1027751Y92102D01* +X1027711Y92158D01* +X1026207Y93662D01* +X1026207Y99718D01* +X1027962Y101473D01* +X1034518Y101473D01* +X1035602Y100389D01* +X1035649Y100354D01* +X1035689Y100311D01* +X1035762Y100269D01* +X1035829Y100218D01* +X1035884Y100197D01* +X1035934Y100168D01* +X1036016Y100147D01* +X1036095Y100117D01* +X1036153Y100112D01* +X1036210Y100097D01* +X1036294Y100100D01* +X1036378Y100093D01* +X1036436Y100105D01* +X1036494Y100106D01* +X1036574Y100132D01* +X1036657Y100149D01* +X1036709Y100176D01* +X1036765Y100194D01* +X1036821Y100234D01* +X1036909Y100280D01* +X1036982Y100349D01* +X1037038Y100389D01* +X1038122Y101473D01* +X1044678Y101473D01* +X1045762Y100389D01* +X1045809Y100354D01* +X1045849Y100311D01* +X1045922Y100269D01* +X1045989Y100218D01* +X1046044Y100197D01* +X1046094Y100168D01* +X1046176Y100147D01* +X1046255Y100117D01* +X1046313Y100112D01* +X1046370Y100097D01* +X1046454Y100100D01* +X1046538Y100093D01* +X1046596Y100105D01* +X1046654Y100106D01* +X1046734Y100132D01* +X1046817Y100149D01* +X1046869Y100176D01* +X1046925Y100194D01* +X1046981Y100234D01* +X1047069Y100280D01* +X1047142Y100349D01* +X1047198Y100389D01* +X1048282Y101473D01* +X1054838Y101473D01* +X1056275Y100036D01* +X1056345Y99984D01* +X1056409Y99924D01* +X1056458Y99898D01* +X1056502Y99865D01* +X1056584Y99834D01* +X1056662Y99794D01* +X1056709Y99786D01* +X1056768Y99764D01* +X1056915Y99752D01* +X1056993Y99739D01* +X1057641Y99739D01* +X1057727Y99751D01* +X1057815Y99754D01* +X1057867Y99771D01* +X1057922Y99779D01* +X1058002Y99814D01* +X1058085Y99841D01* +X1058124Y99869D01* +X1058182Y99895D01* +X1058295Y99991D01* +X1058359Y100036D01* +X1067336Y109013D01* +X1067388Y109083D01* +X1067448Y109147D01* +X1067474Y109197D01* +X1067507Y109241D01* +X1067538Y109322D01* +X1067578Y109400D01* +X1067586Y109448D01* +X1067608Y109506D01* +X1067620Y109654D01* +X1067633Y109731D01* +X1067633Y141485D01* +X1069716Y143568D01* +X1069717Y143569D01* +X1086314Y160166D01* +X1086366Y160236D01* +X1086426Y160300D01* +X1086452Y160349D01* +X1086485Y160393D01* +X1086516Y160475D01* +X1086556Y160553D01* +X1086564Y160600D01* +X1086586Y160659D01* +X1086598Y160807D01* +X1086611Y160884D01* +X1086611Y161965D01* +X1086595Y162079D01* +X1086585Y162193D01* +X1086575Y162219D01* +X1086571Y162246D01* +X1086524Y162351D01* +X1086483Y162458D01* +X1086467Y162480D01* +X1086455Y162506D01* +X1086381Y162593D01* +X1086312Y162685D01* +X1086289Y162702D01* +X1086272Y162723D01* +X1086176Y162786D01* +X1086084Y162855D01* +X1086058Y162865D01* +X1086035Y162880D01* +X1085925Y162915D01* +X1085818Y162956D01* +X1085790Y162958D01* +X1085764Y162966D01* +X1085649Y162969D01* +X1085535Y162978D01* +X1085510Y162973D01* +X1085480Y162973D01* +X1085223Y162906D01* +X1085207Y162903D01* +X1083152Y162051D01* +X1081183Y162051D01* +X1081097Y162039D01* +X1081009Y162036D01* +X1080957Y162019D01* +X1080902Y162011D01* +X1080822Y161976D01* +X1080739Y161949D01* +X1080700Y161921D01* +X1080642Y161895D01* +X1080529Y161799D01* +X1080465Y161754D01* +X1080023Y161311D01* +X1065968Y161311D01* +X1065910Y161303D01* +X1065852Y161305D01* +X1065770Y161283D01* +X1065686Y161271D01* +X1065633Y161248D01* +X1065577Y161233D01* +X1065504Y161190D01* +X1065427Y161155D01* +X1065382Y161117D01* +X1065332Y161088D01* +X1065274Y161026D01* +X1065210Y160972D01* +X1065178Y160923D01* +X1065138Y160880D01* +X1065099Y160805D01* +X1065052Y160735D01* +X1065035Y160679D01* +X1065008Y160627D01* +X1064997Y160559D01* +X1064967Y160464D01* +X1064964Y160364D01* +X1064953Y160296D01* +X1064953Y159941D01* +X1063740Y158728D01* +X1063705Y158681D01* +X1063662Y158641D01* +X1063620Y158568D01* +X1063569Y158501D01* +X1063548Y158446D01* +X1063519Y158396D01* +X1063498Y158314D01* +X1063468Y158235D01* +X1063463Y158177D01* +X1063449Y158120D01* +X1063451Y158036D01* +X1063444Y157952D01* +X1063456Y157894D01* +X1063458Y157836D01* +X1063484Y157756D01* +X1063500Y157673D01* +X1063527Y157621D01* +X1063545Y157565D01* +X1063585Y157509D01* +X1063631Y157421D01* +X1063700Y157348D01* +X1063740Y157292D01* +X1064953Y156079D01* +X1064953Y147241D01* +X1063740Y146028D01* +X1063705Y145981D01* +X1063662Y145941D01* +X1063620Y145868D01* +X1063569Y145801D01* +X1063548Y145746D01* +X1063519Y145696D01* +X1063498Y145614D01* +X1063468Y145535D01* +X1063463Y145477D01* +X1063449Y145420D01* +X1063451Y145336D01* +X1063444Y145252D01* +X1063456Y145194D01* +X1063458Y145136D01* +X1063484Y145056D01* +X1063500Y144973D01* +X1063527Y144921D01* +X1063545Y144865D01* +X1063585Y144809D01* +X1063631Y144721D01* +X1063700Y144648D01* +X1063740Y144592D01* +X1064953Y143379D01* +X1064953Y134541D01* +X1062839Y132427D01* +X1043001Y132427D01* +X1040887Y134541D01* +X1040887Y134896D01* +X1040879Y134954D01* +X1040881Y135012D01* +X1040859Y135094D01* +X1040847Y135178D01* +X1040824Y135231D01* +X1040809Y135287D01* +X1040766Y135360D01* +X1040731Y135437D01* +X1040693Y135482D01* +X1040664Y135532D01* +X1040602Y135590D01* +X1040548Y135654D01* +X1040499Y135686D01* +X1040456Y135726D01* +X1040381Y135765D01* +X1040311Y135812D01* +X1040255Y135829D01* +X1040203Y135856D01* +X1040135Y135867D01* +X1040040Y135897D01* +X1039940Y135900D01* +X1039872Y135911D01* +X1036103Y135911D01* +X1036016Y135899D01* +X1035929Y135896D01* +X1035876Y135879D01* +X1035821Y135871D01* +X1035741Y135836D01* +X1035658Y135809D01* +X1035619Y135781D01* +X1035562Y135755D01* +X1035449Y135659D01* +X1035385Y135614D01* +X1034438Y134667D01* +X1028382Y134667D01* +X1026627Y136422D01* +X1026627Y143256D01* +X1026619Y143314D01* +X1026621Y143372D01* +X1026599Y143454D01* +X1026587Y143538D01* +X1026564Y143591D01* +X1026549Y143647D01* +X1026506Y143720D01* +X1026471Y143797D01* +X1026433Y143842D01* +X1026404Y143892D01* +X1026342Y143950D01* +X1026288Y144014D01* +X1026239Y144046D01* +X1026196Y144086D01* +X1026121Y144125D01* +X1026051Y144172D01* +X1025995Y144189D01* +X1025943Y144216D01* +X1025875Y144227D01* +X1025780Y144257D01* +X1025680Y144260D01* +X1025612Y144271D01* +X1013721Y144271D01* +X1011638Y146354D01* +X1011638Y146355D01* +X994987Y163006D01* +X994918Y163058D01* +X994855Y163117D01* +X994805Y163143D01* +X994759Y163177D01* +X994679Y163207D01* +X994603Y163247D01* +X994547Y163258D01* +X994494Y163278D01* +X994408Y163285D01* +X994324Y163302D01* +X994267Y163297D01* +X994210Y163302D01* +X994126Y163285D01* +X994041Y163277D01* +X993987Y163257D01* +X993932Y163246D01* +X993855Y163206D01* +X993775Y163175D01* +X993730Y163141D01* +X993679Y163115D01* +X993617Y163056D01* +X993549Y163004D01* +X993514Y162958D01* +X993473Y162919D01* +X993430Y162845D01* +X993378Y162776D01* +X993358Y162723D01* +X993329Y162674D01* +X993308Y162590D01* +X993278Y162510D01* +X993273Y162453D01* +X993259Y162398D01* +X993262Y162312D01* +X993255Y162227D01* +X993266Y162178D01* +X993268Y162114D01* +X993313Y161976D01* +X993331Y161900D01* +X993649Y161132D01* +X993649Y158908D01* +X992798Y156854D01* +X991406Y155462D01* +X991354Y155393D01* +X991294Y155329D01* +X991268Y155279D01* +X991235Y155235D01* +X991204Y155153D01* +X991164Y155076D01* +X991156Y155028D01* +X991134Y154970D01* +X991122Y154822D01* +X991109Y154745D01* +X991109Y143923D01* +X991121Y143837D01* +X991124Y143749D01* +X991141Y143697D01* +X991149Y143642D01* +X991184Y143562D01* +X991211Y143479D01* +X991239Y143440D01* +X991265Y143382D01* +X991361Y143269D01* +X991406Y143205D01* +X1004265Y130346D01* +X1004335Y130294D01* +X1004399Y130234D01* +X1004449Y130208D01* +X1004493Y130175D01* +X1004574Y130144D01* +X1004652Y130104D01* +X1004700Y130096D01* +X1004758Y130074D01* +X1004906Y130062D01* +X1004983Y130049D01* +X1047743Y130049D01* +X1055065Y122726D01* +X1055135Y122674D01* +X1055199Y122614D01* +X1055249Y122588D01* +X1055293Y122555D01* +X1055374Y122524D01* +X1055452Y122484D01* +X1055500Y122476D01* +X1055558Y122454D01* +X1055706Y122442D01* +X1055783Y122429D01* +X1057752Y122429D01* +X1059806Y121578D01* +X1061378Y120006D01* +X1062229Y117952D01* +X1062229Y115728D01* +X1061378Y113674D01* +X1059806Y112102D01* +X1057752Y111251D01* +X1055528Y111251D01* +X1053474Y112102D01* +X1051902Y113674D01* +X1051051Y115728D01* +X1051051Y117697D01* +X1051039Y117783D01* +X1051036Y117871D01* +X1051019Y117923D01* +X1051011Y117978D01* +X1050976Y118058D01* +X1050949Y118141D01* +X1050921Y118180D01* +X1050895Y118238D01* +X1050799Y118351D01* +X1050754Y118415D01* +X1045515Y123654D01* +X1045445Y123706D01* +X1045381Y123766D01* +X1045331Y123792D01* +X1045287Y123825D01* +X1045206Y123856D01* +X1045128Y123896D01* +X1045080Y123904D01* +X1045022Y123926D01* +X1044874Y123938D01* +X1044797Y123951D01* +X1002037Y123951D01* +X985011Y140977D01* +X985011Y154745D01* +X984999Y154831D01* +X984996Y154919D01* +X984979Y154971D01* +X984971Y155026D01* +X984936Y155106D01* +X984909Y155189D01* +X984881Y155228D01* +X984855Y155285D01* +X984759Y155399D01* +X984714Y155462D01* +X983698Y156478D01* +X983674Y156496D01* +X983655Y156519D01* +X983561Y156581D01* +X983471Y156649D01* +X983443Y156660D01* +X983419Y156676D01* +X983311Y156710D01* +X983205Y156751D01* +X983176Y156753D01* +X983148Y156762D01* +X983034Y156765D01* +X982922Y156774D01* +X982893Y156768D01* +X982864Y156769D01* +X982754Y156741D01* +X982643Y156718D01* +X982617Y156705D01* +X982589Y156697D01* +X982491Y156640D01* +X982391Y156587D01* +X982369Y156567D01* +X982344Y156552D01* +X982267Y156470D01* +X982185Y156392D01* +X982170Y156366D01* +X982150Y156345D01* +X982098Y156244D01* +X982041Y156146D01* +X982034Y156118D01* +X982020Y156092D01* +X982007Y156014D01* +X981971Y155871D01* +X981973Y155808D01* +X981965Y155761D01* +X981965Y149613D01* +X946702Y114351D01* +X946650Y114281D01* +X946590Y114217D01* +X946564Y114167D01* +X946531Y114123D01* +X946500Y114042D01* +X946460Y113964D01* +X946452Y113916D01* +X946430Y113858D01* +X946418Y113710D01* +X946405Y113633D01* +X946405Y38558D01* +X927150Y19303D01* +X874935Y19303D01* +X874849Y19291D01* +X874761Y19288D01* +X874709Y19271D01* +X874654Y19263D01* +X874574Y19228D01* +X874491Y19201D01* +X874452Y19173D01* +X874394Y19147D01* +X874281Y19051D01* +X874217Y19006D01* +X871693Y16481D01* +X867445Y16481D01* +X867358Y16469D01* +X867271Y16466D01* +X867218Y16449D01* +X867164Y16441D01* +X867084Y16406D01* +X867001Y16379D01* +X866961Y16351D01* +X866904Y16325D01* +X866791Y16229D01* +X866727Y16184D01* +X865144Y14601D01* +X863007Y13715D01* +X860693Y13715D01* +X858556Y14601D01* +X856921Y16236D01* +X856035Y18373D01* +X856035Y19963D01* +X856031Y19992D01* +X856034Y20021D01* +X856011Y20132D01* +X855995Y20244D01* +X855983Y20271D01* +X855978Y20300D01* +X855926Y20400D01* +X855879Y20504D01* +X855860Y20526D01* +X855847Y20552D01* +X855769Y20634D01* +X855696Y20721D01* +X855671Y20737D01* +X855651Y20758D01* +X855553Y20815D01* +X855459Y20878D01* +X855431Y20887D01* +X855406Y20902D01* +X855296Y20930D01* +X855188Y20964D01* +X855158Y20965D01* +X855130Y20972D01* +X855017Y20968D01* +X854904Y20971D01* +X854875Y20964D01* +X854846Y20963D01* +X854738Y20928D01* +X854629Y20899D01* +X854603Y20884D01* +X854575Y20875D01* +X854512Y20830D01* +X854384Y20754D01* +X854341Y20709D01* +X854302Y20681D01* +X839117Y5496D01* +X839100Y5472D01* +X839077Y5453D01* +X839014Y5359D01* +X838947Y5269D01* +X838936Y5241D01* +X838920Y5217D01* +X838886Y5109D01* +X838845Y5003D01* +X838843Y4974D01* +X838834Y4946D01* +X838831Y4832D01* +X838822Y4720D01* +X838827Y4691D01* +X838827Y4662D01* +X838855Y4552D01* +X838878Y4441D01* +X838891Y4415D01* +X838899Y4387D01* +X838956Y4289D01* +X839009Y4189D01* +X839029Y4167D01* +X839044Y4142D01* +X839126Y4065D01* +X839204Y3983D01* +X839230Y3968D01* +X839251Y3948D01* +X839352Y3896D01* +X839450Y3839D01* +X839478Y3832D01* +X839504Y3818D01* +X839582Y3805D01* +X839725Y3769D01* +X839788Y3771D01* +X839835Y3763D01* +X950313Y3763D01* +X950342Y3767D01* +X950371Y3764D01* +X950482Y3787D01* +X950595Y3803D01* +X950621Y3815D01* +X950650Y3820D01* +X950751Y3873D01* +X950854Y3919D01* +X950876Y3938D01* +X950902Y3951D01* +X950985Y4029D01* +X951071Y4102D01* +X951087Y4127D01* +X951109Y4147D01* +X951166Y4245D01* +X951229Y4339D01* +X951237Y4367D01* +X951252Y4392D01* +X951280Y4502D01* +X951314Y4610D01* +X951315Y4640D01* +X951322Y4668D01* +X951319Y4781D01* +X951322Y4894D01* +X951314Y4923D01* +X951313Y4952D01* +X951278Y5060D01* +X951250Y5169D01* +X951235Y5195D01* +X951226Y5223D01* +X951180Y5287D01* +X951105Y5414D01* +X951059Y5457D01* +X951031Y5496D01* +X950467Y6060D01* +X950132Y6639D01* +X949959Y7286D01* +X949959Y24639D01* +X970534Y24639D01* +X970592Y24647D01* +X970650Y24645D01* +X970732Y24667D01* +X970815Y24679D01* +X970869Y24703D01* +X970925Y24717D01* +X970998Y24760D01* +X971075Y24795D01* +X971119Y24833D01* +X971170Y24863D01* +X971227Y24924D01* +X971292Y24979D01* +X971324Y25027D01* +X971364Y25070D01* +X971403Y25145D01* +X971449Y25215D01* +X971467Y25271D01* +X971494Y25323D01* +X971505Y25391D01* +X971535Y25486D01* +X971538Y25586D01* +X971549Y25654D01* +X971549Y26671D01* +X971551Y26671D01* +X971551Y25654D01* +X971559Y25596D01* +X971558Y25538D01* +X971579Y25456D01* +X971591Y25373D01* +X971615Y25319D01* +X971629Y25263D01* +X971672Y25190D01* +X971707Y25113D01* +X971745Y25068D01* +X971775Y25018D01* +X971836Y24960D01* +X971891Y24896D01* +X971939Y24864D01* +X971982Y24824D01* +X972057Y24785D01* +X972127Y24739D01* +X972183Y24721D01* +X972235Y24694D01* +X972303Y24683D01* +X972398Y24653D01* +X972498Y24650D01* +X972566Y24639D01* +X993141Y24639D01* +X993141Y7286D01* +X992968Y6639D01* +X992633Y6060D01* +X992069Y5496D01* +X992051Y5472D01* +X992029Y5453D01* +X991966Y5359D01* +X991898Y5269D01* +X991888Y5241D01* +X991871Y5217D01* +X991837Y5109D01* +X991797Y5003D01* +X991794Y4974D01* +X991786Y4946D01* +X991783Y4832D01* +X991773Y4720D01* +X991779Y4691D01* +X991778Y4662D01* +X991807Y4552D01* +X991829Y4441D01* +X991843Y4415D01* +X991850Y4387D01* +X991908Y4289D01* +X991960Y4189D01* +X991980Y4167D01* +X991995Y4142D01* +X992078Y4065D01* +X992156Y3983D01* +X992181Y3968D01* +X992203Y3948D01* +X992304Y3896D01* +X992401Y3839D01* +X992430Y3832D01* +X992456Y3818D01* +X992533Y3805D01* +X992677Y3769D01* +X992739Y3771D01* +X992787Y3763D01* +X1346200Y3763D01* +X1346244Y3769D01* +G37* +G36* +X667010Y186077D02* +X667010Y186077D01* +X667068Y186075D01* +X667150Y186097D01* +X667234Y186109D01* +X667287Y186132D01* +X667343Y186147D01* +X667416Y186190D01* +X667493Y186225D01* +X667538Y186263D01* +X667588Y186292D01* +X667646Y186354D01* +X667710Y186408D01* +X667742Y186457D01* +X667782Y186500D01* +X667821Y186575D01* +X667868Y186645D01* +X667885Y186701D01* +X667912Y186753D01* +X667923Y186821D01* +X667953Y186916D01* +X667956Y187016D01* +X667967Y187084D01* +X667967Y189427D01* +X670593Y192053D01* +X690407Y192053D01* +X693033Y189427D01* +X693033Y188126D01* +X693037Y188097D01* +X693034Y188068D01* +X693057Y187956D01* +X693073Y187844D01* +X693085Y187818D01* +X693090Y187789D01* +X693142Y187688D01* +X693189Y187585D01* +X693208Y187562D01* +X693221Y187536D01* +X693299Y187454D01* +X693372Y187368D01* +X693397Y187352D01* +X693417Y187330D01* +X693515Y187273D01* +X693609Y187210D01* +X693637Y187201D01* +X693662Y187187D01* +X693772Y187159D01* +X693880Y187125D01* +X693910Y187124D01* +X693938Y187117D01* +X694051Y187120D01* +X694164Y187117D01* +X694193Y187125D01* +X694222Y187126D01* +X694330Y187160D01* +X694439Y187189D01* +X694465Y187204D01* +X694493Y187213D01* +X694556Y187259D01* +X694684Y187334D01* +X694727Y187380D01* +X694766Y187408D01* +X708536Y201178D01* +X708554Y201202D01* +X708576Y201221D01* +X708639Y201315D01* +X708707Y201405D01* +X708717Y201433D01* +X708734Y201457D01* +X708768Y201565D01* +X708808Y201671D01* +X708811Y201700D01* +X708819Y201728D01* +X708822Y201842D01* +X708832Y201954D01* +X708826Y201983D01* +X708827Y202012D01* +X708798Y202122D01* +X708776Y202233D01* +X708762Y202259D01* +X708755Y202287D01* +X708697Y202385D01* +X708645Y202485D01* +X708625Y202507D01* +X708610Y202532D01* +X708527Y202609D01* +X708449Y202691D01* +X708424Y202706D01* +X708402Y202726D01* +X708302Y202778D01* +X708204Y202835D01* +X708175Y202842D01* +X708149Y202856D01* +X708072Y202869D01* +X707928Y202905D01* +X707866Y202903D01* +X707818Y202911D01* +X643677Y202911D01* +X570535Y276054D01* +X570465Y276106D01* +X570401Y276166D01* +X570351Y276192D01* +X570307Y276225D01* +X570226Y276256D01* +X570148Y276296D01* +X570100Y276304D01* +X570042Y276326D01* +X569894Y276338D01* +X569817Y276351D01* +X569155Y276351D01* +X569069Y276339D01* +X568981Y276336D01* +X568929Y276319D01* +X568874Y276311D01* +X568794Y276276D01* +X568711Y276249D01* +X568672Y276221D01* +X568615Y276195D01* +X568501Y276099D01* +X568438Y276054D01* +X567046Y274662D01* +X564992Y273811D01* +X562768Y273811D01* +X560714Y274662D01* +X559142Y276234D01* +X558291Y278288D01* +X558291Y280512D01* +X559142Y282566D01* +X560714Y284138D01* +X562768Y284989D01* +X564992Y284989D01* +X567046Y284138D01* +X568438Y282746D01* +X568507Y282694D01* +X568571Y282634D01* +X568621Y282608D01* +X568665Y282575D01* +X568746Y282544D01* +X568824Y282504D01* +X568872Y282496D01* +X568930Y282474D01* +X569078Y282462D01* +X569155Y282449D01* +X572763Y282449D01* +X645906Y209306D01* +X645975Y209254D01* +X646039Y209194D01* +X646089Y209168D01* +X646133Y209135D01* +X646214Y209104D01* +X646292Y209064D01* +X646340Y209056D01* +X646398Y209034D01* +X646546Y209022D01* +X646623Y209009D01* +X881352Y209009D01* +X881410Y209017D01* +X881468Y209015D01* +X881550Y209037D01* +X881634Y209049D01* +X881687Y209072D01* +X881743Y209087D01* +X881816Y209130D01* +X881893Y209165D01* +X881938Y209203D01* +X881988Y209232D01* +X882046Y209294D01* +X882110Y209348D01* +X882142Y209397D01* +X882182Y209440D01* +X882221Y209515D01* +X882268Y209585D01* +X882285Y209641D01* +X882312Y209693D01* +X882323Y209761D01* +X882353Y209856D01* +X882356Y209956D01* +X882367Y210024D01* +X882367Y215867D01* +X884993Y218493D01* +X887336Y218493D01* +X887394Y218501D01* +X887452Y218499D01* +X887534Y218521D01* +X887618Y218533D01* +X887671Y218556D01* +X887727Y218571D01* +X887800Y218614D01* +X887877Y218649D01* +X887922Y218687D01* +X887972Y218716D01* +X888030Y218778D01* +X888094Y218832D01* +X888126Y218881D01* +X888166Y218924D01* +X888205Y218999D01* +X888252Y219069D01* +X888269Y219125D01* +X888296Y219177D01* +X888307Y219245D01* +X888337Y219340D01* +X888340Y219440D01* +X888351Y219508D01* +X888351Y258742D01* +X888339Y258827D01* +X888337Y258913D01* +X888319Y258967D01* +X888311Y259024D01* +X888276Y259102D01* +X888250Y259184D01* +X888218Y259231D01* +X888195Y259283D01* +X888140Y259349D01* +X888092Y259420D01* +X888048Y259457D01* +X888012Y259500D01* +X887940Y259548D01* +X887874Y259603D01* +X887822Y259626D01* +X887775Y259658D01* +X887693Y259684D01* +X887614Y259718D01* +X887558Y259726D01* +X887504Y259743D01* +X887418Y259746D01* +X887333Y259757D01* +X887277Y259749D01* +X887220Y259751D01* +X887137Y259729D01* +X887052Y259717D01* +X887000Y259693D01* +X886945Y259679D01* +X886871Y259635D01* +X886792Y259600D01* +X886749Y259563D01* +X886700Y259534D01* +X886641Y259471D01* +X886576Y259415D01* +X886550Y259373D01* +X886506Y259326D01* +X886440Y259197D01* +X886398Y259131D01* +X886118Y258454D01* +X884726Y257062D01* +X884674Y256993D01* +X884614Y256929D01* +X884588Y256879D01* +X884555Y256835D01* +X884524Y256754D01* +X884484Y256676D01* +X884476Y256628D01* +X884454Y256570D01* +X884442Y256422D01* +X884429Y256345D01* +X884429Y255277D01* +X880103Y250951D01* +X877569Y250951D01* +X877456Y250935D01* +X877341Y250925D01* +X877315Y250915D01* +X877288Y250911D01* +X877183Y250864D01* +X877076Y250823D01* +X877054Y250807D01* +X877028Y250795D01* +X876941Y250721D01* +X876849Y250652D01* +X876833Y250629D01* +X876811Y250612D01* +X876748Y250516D01* +X876679Y250424D01* +X876669Y250398D01* +X876654Y250375D01* +X876619Y250265D01* +X876579Y250158D01* +X876576Y250130D01* +X876568Y250104D01* +X876565Y249989D01* +X876556Y249875D01* +X876562Y249850D01* +X876561Y249820D01* +X876628Y249563D01* +X876631Y249547D01* +X877483Y247492D01* +X877483Y245268D01* +X876632Y243214D01* +X875060Y241642D01* +X873006Y240791D01* +X870783Y240791D01* +X868728Y241642D01* +X867359Y243012D01* +X867312Y243047D01* +X867272Y243089D01* +X867199Y243132D01* +X867131Y243183D01* +X867077Y243204D01* +X867026Y243233D01* +X866945Y243254D01* +X866866Y243284D01* +X866807Y243289D01* +X866751Y243303D01* +X866667Y243301D01* +X866582Y243308D01* +X866525Y243296D01* +X866467Y243294D01* +X866386Y243268D01* +X866304Y243252D01* +X866252Y243225D01* +X866196Y243207D01* +X866140Y243167D01* +X866051Y243121D01* +X865979Y243052D01* +X865923Y243012D01* +X864258Y241347D01* +X858202Y241347D01* +X856698Y242851D01* +X856651Y242886D01* +X856611Y242929D01* +X856538Y242971D01* +X856471Y243022D01* +X856416Y243043D01* +X856366Y243072D01* +X856284Y243093D01* +X856205Y243123D01* +X856147Y243128D01* +X856090Y243143D01* +X856006Y243140D01* +X855922Y243147D01* +X855864Y243135D01* +X855806Y243134D01* +X855726Y243108D01* +X855643Y243091D01* +X855591Y243064D01* +X855535Y243046D01* +X855479Y243006D01* +X855391Y242960D01* +X855318Y242891D01* +X855262Y242851D01* +X853758Y241347D01* +X847702Y241347D01* +X846015Y243034D01* +X845945Y243086D01* +X845881Y243146D01* +X845832Y243172D01* +X845788Y243205D01* +X845706Y243236D01* +X845628Y243276D01* +X845581Y243284D01* +X845522Y243306D01* +X845375Y243318D01* +X845297Y243331D01* +X727717Y243331D01* +X685291Y285757D01* +X685291Y300983D01* +X686544Y302236D01* +X686558Y302255D01* +X686577Y302270D01* +X686644Y302368D01* +X686715Y302463D01* +X686723Y302485D01* +X686737Y302505D01* +X686774Y302618D01* +X686816Y302728D01* +X686818Y302752D01* +X686826Y302775D01* +X686830Y302894D01* +X686840Y303012D01* +X686835Y303035D01* +X686836Y303059D01* +X686815Y303133D01* +X686784Y303291D01* +X686758Y303340D01* +X686746Y303383D01* +X684701Y307769D01* +X684634Y307871D01* +X684572Y307976D01* +X684557Y307990D01* +X684546Y308007D01* +X684454Y308087D01* +X684365Y308170D01* +X684346Y308180D01* +X684331Y308193D01* +X684220Y308244D01* +X684112Y308300D01* +X684093Y308303D01* +X684073Y308312D01* +X683792Y308355D01* +X683786Y308354D01* +X683781Y308355D01* +X577595Y308355D01* +X577595Y376222D01* +X577587Y376280D01* +X577589Y376338D01* +X577567Y376420D01* +X577555Y376504D01* +X577532Y376557D01* +X577517Y376613D01* +X577474Y376686D01* +X577439Y376763D01* +X577401Y376808D01* +X577372Y376858D01* +X577310Y376916D01* +X577256Y376980D01* +X577207Y377012D01* +X577164Y377052D01* +X577089Y377091D01* +X577019Y377138D01* +X576963Y377155D01* +X576911Y377182D01* +X576843Y377193D01* +X576748Y377223D01* +X576648Y377226D01* +X576580Y377237D01* +X381365Y377237D01* +X381336Y377233D01* +X381307Y377236D01* +X381196Y377213D01* +X381084Y377197D01* +X381057Y377185D01* +X381028Y377180D01* +X380928Y377128D01* +X380824Y377081D01* +X380802Y377062D01* +X380776Y377049D01* +X380694Y376971D01* +X380607Y376898D01* +X380591Y376873D01* +X380570Y376853D01* +X380513Y376755D01* +X380450Y376661D01* +X380441Y376633D01* +X380426Y376608D01* +X380398Y376498D01* +X380364Y376390D01* +X380363Y376360D01* +X380356Y376332D01* +X380360Y376219D01* +X380357Y376106D01* +X380364Y376077D01* +X380365Y376048D01* +X380400Y375940D01* +X380429Y375831D01* +X380444Y375805D01* +X380453Y375777D01* +X380498Y375714D01* +X380574Y375586D01* +X380619Y375543D01* +X380647Y375504D01* +X392125Y364026D01* +X392195Y363974D01* +X392259Y363914D01* +X392309Y363888D01* +X392353Y363855D01* +X392434Y363824D01* +X392512Y363784D01* +X392560Y363776D01* +X392618Y363754D01* +X392766Y363742D01* +X392843Y363729D01* +X393177Y363729D01* +X393264Y363741D01* +X393351Y363744D01* +X393404Y363761D01* +X393459Y363769D01* +X393539Y363804D01* +X393622Y363831D01* +X393661Y363859D01* +X393718Y363885D01* +X393831Y363981D01* +X393895Y364026D01* +X395582Y365713D01* +X401638Y365713D01* +X403142Y364209D01* +X403189Y364174D01* +X403229Y364131D01* +X403302Y364089D01* +X403369Y364038D01* +X403424Y364017D01* +X403474Y363988D01* +X403556Y363967D01* +X403635Y363937D01* +X403693Y363932D01* +X403750Y363917D01* +X403834Y363920D01* +X403918Y363913D01* +X403976Y363925D01* +X404034Y363926D01* +X404114Y363952D01* +X404197Y363969D01* +X404249Y363996D01* +X404305Y364014D01* +X404361Y364054D01* +X404449Y364100D01* +X404522Y364169D01* +X404578Y364209D01* +X406082Y365713D01* +X412138Y365713D01* +X413825Y364026D01* +X413895Y363974D01* +X413958Y363914D01* +X414008Y363888D01* +X414052Y363855D01* +X414134Y363824D01* +X414212Y363784D01* +X414259Y363776D01* +X414318Y363754D01* +X414465Y363742D01* +X414543Y363729D01* +X425443Y363729D01* +X429999Y359172D01* +X430069Y359120D01* +X430133Y359060D01* +X430183Y359034D01* +X430227Y359001D01* +X430308Y358970D01* +X430386Y358930D01* +X430434Y358922D01* +X430492Y358900D01* +X430640Y358888D01* +X430717Y358875D01* +X432957Y358875D01* +X435094Y357989D01* +X436729Y356354D01* +X437615Y354217D01* +X437615Y351903D01* +X436729Y349766D01* +X435429Y348466D01* +X435411Y348442D01* +X435389Y348423D01* +X435326Y348329D01* +X435258Y348239D01* +X435248Y348211D01* +X435232Y348187D01* +X435197Y348079D01* +X435157Y347973D01* +X435155Y347944D01* +X435146Y347916D01* +X435143Y347802D01* +X435133Y347690D01* +X435139Y347661D01* +X435138Y347632D01* +X435167Y347522D01* +X435189Y347411D01* +X435203Y347385D01* +X435210Y347357D01* +X435268Y347259D01* +X435320Y347159D01* +X435341Y347137D01* +X435356Y347112D01* +X435438Y347035D01* +X435516Y346953D01* +X435541Y346938D01* +X435563Y346918D01* +X435664Y346866D01* +X435761Y346809D01* +X435790Y346802D01* +X435816Y346788D01* +X435893Y346775D01* +X436037Y346739D01* +X436099Y346741D01* +X436147Y346733D01* +X447937Y346733D01* +X450153Y344517D01* +X450153Y343019D01* +X450165Y342933D01* +X450168Y342845D01* +X450185Y342793D01* +X450193Y342738D01* +X450228Y342658D01* +X450255Y342575D01* +X450283Y342535D01* +X450309Y342478D01* +X450405Y342365D01* +X450450Y342301D01* +X452086Y340665D01* +X454037Y338714D01* +X454038Y338714D01* +X455221Y337530D01* +X455291Y337478D01* +X455355Y337418D01* +X455404Y337392D01* +X455449Y337359D01* +X455530Y337328D01* +X455608Y337288D01* +X455656Y337280D01* +X455714Y337258D01* +X455862Y337246D01* +X455939Y337233D01* +X469937Y337233D01* +X472153Y335017D01* +X472153Y334264D01* +X472161Y334206D01* +X472159Y334148D01* +X472181Y334066D01* +X472193Y333982D01* +X472216Y333929D01* +X472231Y333873D01* +X472274Y333800D01* +X472309Y333723D01* +X472347Y333678D01* +X472376Y333628D01* +X472438Y333570D01* +X472492Y333506D01* +X472541Y333474D01* +X472584Y333434D01* +X472659Y333395D01* +X472729Y333348D01* +X472785Y333331D01* +X472837Y333304D01* +X472905Y333293D01* +X473000Y333263D01* +X473100Y333260D01* +X473168Y333249D01* +X494023Y333249D01* +X592549Y234723D01* +X592549Y193068D01* +X592557Y193010D01* +X592555Y192952D01* +X592577Y192870D01* +X592589Y192786D01* +X592612Y192733D01* +X592627Y192677D01* +X592670Y192604D01* +X592705Y192527D01* +X592743Y192482D01* +X592772Y192432D01* +X592834Y192374D01* +X592888Y192310D01* +X592937Y192278D01* +X592980Y192238D01* +X593055Y192199D01* +X593125Y192152D01* +X593181Y192135D01* +X593233Y192108D01* +X593301Y192097D01* +X593396Y192067D01* +X593496Y192064D01* +X593564Y192053D01* +X599407Y192053D01* +X602033Y189427D01* +X602033Y187084D01* +X602041Y187026D01* +X602039Y186968D01* +X602061Y186886D01* +X602073Y186802D01* +X602096Y186749D01* +X602111Y186693D01* +X602154Y186620D01* +X602189Y186543D01* +X602227Y186498D01* +X602256Y186448D01* +X602318Y186390D01* +X602372Y186326D01* +X602421Y186294D01* +X602464Y186254D01* +X602539Y186215D01* +X602609Y186168D01* +X602665Y186151D01* +X602717Y186124D01* +X602785Y186113D01* +X602880Y186083D01* +X602980Y186080D01* +X603048Y186069D01* +X666952Y186069D01* +X667010Y186077D01* +G37* +G36* +X434398Y142933D02* +X434398Y142933D01* +X434456Y142945D01* +X434514Y142946D01* +X434594Y142972D01* +X434677Y142989D01* +X434729Y143016D01* +X434785Y143034D01* +X434841Y143074D01* +X434929Y143120D01* +X435002Y143189D01* +X435058Y143229D01* +X436562Y144733D01* +X442618Y144733D01* +X444305Y143046D01* +X444375Y142994D01* +X444438Y142934D01* +X444488Y142908D01* +X444532Y142875D01* +X444614Y142844D01* +X444692Y142804D01* +X444739Y142796D01* +X444798Y142774D01* +X444945Y142762D01* +X445023Y142749D01* +X474687Y142749D01* +X474773Y142761D01* +X474861Y142764D01* +X474913Y142781D01* +X474968Y142789D01* +X475048Y142824D01* +X475131Y142851D01* +X475170Y142879D01* +X475228Y142905D01* +X475341Y143001D01* +X475405Y143046D01* +X484454Y152095D01* +X484506Y152165D01* +X484566Y152229D01* +X484592Y152279D01* +X484625Y152323D01* +X484656Y152404D01* +X484696Y152482D01* +X484704Y152530D01* +X484726Y152588D01* +X484738Y152736D01* +X484751Y152813D01* +X484751Y163199D01* +X484747Y163228D01* +X484750Y163257D01* +X484727Y163368D01* +X484711Y163480D01* +X484699Y163507D01* +X484694Y163536D01* +X484642Y163636D01* +X484595Y163740D01* +X484576Y163762D01* +X484563Y163788D01* +X484485Y163870D01* +X484412Y163957D01* +X484387Y163973D01* +X484367Y163994D01* +X484269Y164051D01* +X484175Y164114D01* +X484147Y164123D01* +X484122Y164138D01* +X484012Y164166D01* +X483904Y164200D01* +X483874Y164201D01* +X483846Y164208D01* +X483733Y164204D01* +X483620Y164207D01* +X483591Y164200D01* +X483562Y164199D01* +X483454Y164164D01* +X483345Y164135D01* +X483319Y164120D01* +X483291Y164111D01* +X483228Y164066D01* +X483100Y163990D01* +X483057Y163945D01* +X483018Y163917D01* +X477770Y158669D01* +X477718Y158599D01* +X477658Y158535D01* +X477632Y158485D01* +X477599Y158441D01* +X477568Y158360D01* +X477528Y158282D01* +X477520Y158234D01* +X477498Y158176D01* +X477486Y158028D01* +X477473Y157951D01* +X477473Y154622D01* +X475718Y152867D01* +X469162Y152867D01* +X467725Y154304D01* +X467655Y154356D01* +X467592Y154416D01* +X467542Y154442D01* +X467498Y154475D01* +X467416Y154506D01* +X467338Y154546D01* +X467291Y154554D01* +X467232Y154576D01* +X467085Y154588D01* +X467007Y154601D01* +X446183Y154601D01* +X446097Y154589D01* +X446009Y154586D01* +X445957Y154569D01* +X445902Y154561D01* +X445822Y154526D01* +X445739Y154499D01* +X445700Y154471D01* +X445642Y154445D01* +X445626Y154431D01* +X443067Y154431D01* +X437598Y159900D01* +X437598Y159901D01* +X427569Y169930D01* +X427499Y169982D01* +X427435Y170042D01* +X427385Y170068D01* +X427341Y170101D01* +X427260Y170132D01* +X427182Y170172D01* +X427134Y170180D01* +X427076Y170202D01* +X426928Y170214D01* +X426851Y170227D01* +X426062Y170227D01* +X424502Y171787D01* +X424432Y171839D01* +X424369Y171899D01* +X424319Y171925D01* +X424275Y171958D01* +X424193Y171989D01* +X424115Y172029D01* +X424068Y172037D01* +X424009Y172059D01* +X423862Y172071D01* +X423784Y172084D01* +X422865Y172084D01* +X420707Y174242D01* +X418294Y176655D01* +X418294Y180114D01* +X418282Y180201D01* +X418279Y180288D01* +X418262Y180341D01* +X418254Y180396D01* +X418219Y180476D01* +X418192Y180559D01* +X418164Y180598D01* +X418138Y180655D01* +X418042Y180768D01* +X417997Y180832D01* +X416687Y182142D01* +X416687Y188976D01* +X416679Y189034D01* +X416681Y189092D01* +X416659Y189174D01* +X416647Y189258D01* +X416624Y189311D01* +X416609Y189367D01* +X416566Y189440D01* +X416531Y189517D01* +X416493Y189562D01* +X416464Y189612D01* +X416402Y189670D01* +X416348Y189734D01* +X416299Y189766D01* +X416256Y189806D01* +X416181Y189845D01* +X416111Y189892D01* +X416055Y189909D01* +X416003Y189936D01* +X415935Y189947D01* +X415840Y189977D01* +X415740Y189980D01* +X415672Y189991D01* +X353243Y189991D01* +X353156Y189979D01* +X353069Y189976D01* +X353016Y189959D01* +X352961Y189951D01* +X352881Y189916D01* +X352798Y189889D01* +X352759Y189861D01* +X352702Y189835D01* +X352589Y189739D01* +X352525Y189694D01* +X351813Y188982D01* +X351258Y188427D01* +X344702Y188427D01* +X343265Y189864D01* +X343195Y189916D01* +X343132Y189976D01* +X343082Y190002D01* +X343038Y190035D01* +X342979Y190057D01* +X342956Y190066D01* +X342878Y190106D01* +X342831Y190114D01* +X342772Y190136D01* +X342699Y190142D01* +X342625Y190148D01* +X342547Y190161D01* +X331883Y190161D01* +X331797Y190149D01* +X331709Y190146D01* +X331657Y190129D01* +X331602Y190121D01* +X331522Y190086D01* +X331439Y190059D01* +X331400Y190031D01* +X331342Y190005D01* +X331229Y189909D01* +X331165Y189864D01* +X325713Y184411D01* +X324974Y184411D01* +X324945Y184407D01* +X324916Y184409D01* +X324805Y184387D01* +X324693Y184371D01* +X324666Y184359D01* +X324637Y184354D01* +X324537Y184301D01* +X324434Y184255D01* +X324411Y184236D01* +X324385Y184223D01* +X324303Y184145D01* +X324217Y184071D01* +X324200Y184047D01* +X324179Y184027D01* +X324122Y183929D01* +X324059Y183835D01* +X324050Y183807D01* +X324035Y183782D01* +X324007Y183672D01* +X323973Y183564D01* +X323972Y183534D01* +X323965Y183506D01* +X323969Y183393D01* +X323966Y183280D01* +X323973Y183251D01* +X323974Y183222D01* +X324009Y183114D01* +X324038Y183005D01* +X324053Y182979D01* +X324062Y182951D01* +X324107Y182888D01* +X324183Y182760D01* +X324229Y182717D01* +X324257Y182678D01* +X326749Y180185D01* +X328412Y176171D01* +X328412Y171825D01* +X326749Y167811D01* +X323677Y164738D01* +X319662Y163075D01* +X315317Y163075D01* +X311302Y164738D01* +X308230Y167811D01* +X306567Y171825D01* +X306567Y176171D01* +X308230Y180185D01* +X310723Y182678D01* +X310740Y182701D01* +X310763Y182720D01* +X310825Y182815D01* +X310894Y182905D01* +X310904Y182933D01* +X310920Y182957D01* +X310954Y183065D01* +X310995Y183171D01* +X310997Y183200D01* +X311006Y183228D01* +X311009Y183341D01* +X311018Y183454D01* +X311013Y183483D01* +X311013Y183512D01* +X310985Y183622D01* +X310962Y183733D01* +X310949Y183759D01* +X310942Y183787D01* +X310884Y183885D01* +X310831Y183985D01* +X310811Y184006D01* +X310796Y184032D01* +X310714Y184109D01* +X310636Y184191D01* +X310610Y184206D01* +X310589Y184226D01* +X310488Y184278D01* +X310390Y184335D01* +X310362Y184342D01* +X310336Y184356D01* +X310258Y184369D01* +X310115Y184405D01* +X310052Y184403D01* +X310005Y184411D01* +X308742Y184411D01* +X304745Y188408D01* +X304722Y188425D01* +X304711Y188438D01* +X304703Y188448D01* +X304609Y188510D01* +X304518Y188578D01* +X304491Y188589D01* +X304466Y188605D01* +X304358Y188639D01* +X304253Y188680D01* +X304223Y188682D01* +X304195Y188691D01* +X304082Y188694D01* +X303969Y188703D01* +X303941Y188697D01* +X303911Y188698D01* +X303802Y188670D01* +X303691Y188647D01* +X303664Y188634D01* +X303636Y188626D01* +X303539Y188569D01* +X303438Y188516D01* +X303417Y188496D01* +X303392Y188481D01* +X303314Y188399D01* +X303232Y188321D01* +X303217Y188295D01* +X303197Y188274D01* +X303146Y188173D01* +X303088Y188075D01* +X303081Y188047D01* +X303068Y188021D01* +X303055Y187943D01* +X303018Y187800D01* +X303020Y187737D01* +X303012Y187690D01* +X303012Y184525D01* +X301349Y180511D01* +X298277Y177438D01* +X294262Y175775D01* +X289917Y175775D01* +X285902Y177438D01* +X282830Y180511D01* +X281167Y184525D01* +X281167Y188871D01* +X282830Y192885D01* +X285902Y195958D01* +X289917Y197621D01* +X293081Y197621D01* +X293110Y197625D01* +X293140Y197622D01* +X293251Y197645D01* +X293363Y197660D01* +X293390Y197672D01* +X293418Y197678D01* +X293519Y197730D01* +X293622Y197777D01* +X293645Y197796D01* +X293671Y197809D01* +X293753Y197887D01* +X293839Y197960D01* +X293855Y197985D01* +X293877Y198005D01* +X293934Y198103D01* +X293997Y198197D01* +X294006Y198225D01* +X294021Y198250D01* +X294048Y198360D01* +X294083Y198468D01* +X294083Y198497D01* +X294091Y198526D01* +X294087Y198639D01* +X294090Y198752D01* +X294083Y198781D01* +X294082Y198810D01* +X294047Y198918D01* +X294018Y199027D01* +X294003Y199052D01* +X293994Y199080D01* +X293949Y199144D01* +X293873Y199272D01* +X293827Y199315D01* +X293799Y199354D01* +X292275Y200878D01* +X292205Y200930D01* +X292142Y200990D01* +X292092Y201016D01* +X292048Y201049D01* +X291966Y201080D01* +X291888Y201120D01* +X291841Y201128D01* +X291782Y201150D01* +X291635Y201162D01* +X291557Y201175D01* +X289917Y201175D01* +X285902Y202838D01* +X282830Y205911D01* +X281789Y208422D01* +X281788Y208424D01* +X281788Y208425D01* +X281718Y208543D01* +X281645Y208667D01* +X281644Y208668D01* +X281643Y208670D01* +X281539Y208767D01* +X281438Y208862D01* +X281437Y208863D01* +X281436Y208864D01* +X281310Y208929D01* +X281185Y208993D01* +X281184Y208993D01* +X281182Y208994D01* +X281167Y208996D01* +X280906Y209048D01* +X280876Y209045D01* +X280851Y209049D01* +X246979Y209049D01* +X246892Y209037D01* +X246805Y209034D01* +X246752Y209017D01* +X246697Y209009D01* +X246618Y208974D01* +X246534Y208947D01* +X246495Y208919D01* +X246438Y208893D01* +X246325Y208797D01* +X246261Y208752D01* +X206340Y168830D01* +X206287Y168761D01* +X206227Y168697D01* +X206202Y168647D01* +X206169Y168603D01* +X206138Y168522D01* +X206098Y168444D01* +X206090Y168396D01* +X206068Y168338D01* +X206055Y168190D01* +X206042Y168113D01* +X206042Y136712D01* +X204906Y135576D01* +X204905Y135575D01* +X204904Y135574D01* +X204815Y135456D01* +X204735Y135349D01* +X204735Y135348D01* +X204734Y135346D01* +X204683Y135213D01* +X204634Y135083D01* +X204634Y135082D01* +X204633Y135080D01* +X204622Y134936D01* +X204610Y134800D01* +X204611Y134799D01* +X204611Y134797D01* +X204614Y134781D01* +X204666Y134521D01* +X204680Y134494D01* +X204686Y134470D01* +X205726Y131958D01* +X205726Y127613D01* +X204064Y123598D01* +X200991Y120525D01* +X196976Y118863D01* +X192631Y118863D01* +X188944Y120390D01* +X188861Y120411D01* +X188781Y120442D01* +X188724Y120447D01* +X188669Y120461D01* +X188583Y120458D01* +X188497Y120465D01* +X188441Y120454D01* +X188385Y120453D01* +X188303Y120426D01* +X188218Y120410D01* +X188168Y120383D01* +X188114Y120366D01* +X188042Y120318D01* +X187966Y120279D01* +X187925Y120239D01* +X187878Y120208D01* +X187822Y120142D01* +X187760Y120083D01* +X187731Y120034D01* +X187695Y119990D01* +X187660Y119912D01* +X187616Y119837D01* +X187602Y119782D01* +X187579Y119730D01* +X187567Y119645D01* +X187546Y119562D01* +X187548Y119505D01* +X187540Y119449D01* +X187553Y119364D01* +X187555Y119278D01* +X187573Y119224D01* +X187581Y119167D01* +X187616Y119089D01* +X187643Y119007D01* +X187671Y118967D01* +X187698Y118908D01* +X187792Y118798D01* +X187838Y118734D01* +X204676Y101896D01* +X204745Y101843D01* +X204809Y101784D01* +X204859Y101758D01* +X204903Y101725D01* +X204984Y101694D01* +X205062Y101654D01* +X205110Y101646D01* +X205168Y101624D01* +X205316Y101612D01* +X205393Y101599D01* +X247784Y101599D01* +X247813Y101603D01* +X247842Y101600D01* +X247954Y101623D01* +X248066Y101638D01* +X248092Y101650D01* +X248121Y101656D01* +X248222Y101708D01* +X248325Y101755D01* +X248347Y101774D01* +X248374Y101787D01* +X248456Y101865D01* +X248542Y101938D01* +X248558Y101963D01* +X248580Y101983D01* +X248637Y102081D01* +X248700Y102175D01* +X248709Y102203D01* +X248723Y102228D01* +X248751Y102338D01* +X248785Y102446D01* +X248786Y102475D01* +X248793Y102504D01* +X248790Y102617D01* +X248793Y102730D01* +X248785Y102759D01* +X248784Y102788D01* +X248750Y102896D01* +X248721Y103005D01* +X248706Y103030D01* +X248697Y103058D01* +X248651Y103122D01* +X248576Y103250D01* +X248530Y103293D01* +X248502Y103332D01* +X247606Y104227D01* +X246390Y105812D01* +X245391Y107543D01* +X244627Y109388D01* +X244110Y111318D01* +X243985Y112267D01* +X258073Y112267D01* +X258131Y112275D01* +X258190Y112273D01* +X258271Y112295D01* +X258355Y112306D01* +X258408Y112330D01* +X258465Y112345D01* +X258537Y112388D01* +X258614Y112423D01* +X258659Y112461D01* +X258709Y112490D01* +X258767Y112552D01* +X258831Y112606D01* +X258864Y112655D01* +X258904Y112698D01* +X258942Y112773D01* +X258989Y112843D01* +X259007Y112899D01* +X259033Y112951D01* +X259045Y113019D01* +X259075Y113114D01* +X259077Y113214D01* +X259089Y113282D01* +X259089Y114299D01* +X259090Y114299D01* +X259090Y113282D01* +X259099Y113224D01* +X259097Y113166D01* +X259118Y113084D01* +X259130Y113000D01* +X259154Y112947D01* +X259169Y112891D01* +X259212Y112818D01* +X259247Y112741D01* +X259284Y112696D01* +X259314Y112646D01* +X259376Y112588D01* +X259430Y112524D01* +X259479Y112492D01* +X259522Y112452D01* +X259597Y112413D01* +X259667Y112366D01* +X259723Y112349D01* +X259775Y112322D01* +X259843Y112311D01* +X259938Y112281D01* +X260038Y112278D01* +X260106Y112267D01* +X274194Y112267D01* +X274070Y111318D01* +X273552Y109388D01* +X272788Y107543D01* +X271789Y105812D01* +X270573Y104227D01* +X269677Y103332D01* +X269659Y103308D01* +X269637Y103289D01* +X269574Y103195D01* +X269506Y103105D01* +X269496Y103077D01* +X269479Y103053D01* +X269445Y102945D01* +X269405Y102839D01* +X269403Y102810D01* +X269394Y102782D01* +X269391Y102668D01* +X269381Y102556D01* +X269387Y102527D01* +X269386Y102498D01* +X269415Y102388D01* +X269437Y102277D01* +X269451Y102251D01* +X269458Y102222D01* +X269516Y102125D01* +X269568Y102025D01* +X269589Y102003D01* +X269603Y101978D01* +X269686Y101901D01* +X269764Y101818D01* +X269789Y101804D01* +X269811Y101784D01* +X269912Y101732D01* +X270009Y101675D01* +X270038Y101668D01* +X270064Y101654D01* +X270141Y101641D01* +X270285Y101605D01* +X270347Y101607D01* +X270395Y101599D01* +X272127Y101599D01* +X272213Y101611D01* +X272301Y101614D01* +X272353Y101631D01* +X272408Y101638D01* +X272488Y101674D01* +X272571Y101701D01* +X272610Y101729D01* +X272667Y101755D01* +X272781Y101851D01* +X272844Y101896D01* +X293377Y122429D01* +X361707Y122429D01* +X361793Y122441D01* +X361881Y122444D01* +X361933Y122461D01* +X361988Y122469D01* +X362068Y122504D01* +X362151Y122531D01* +X362190Y122559D01* +X362248Y122585D01* +X362361Y122681D01* +X362425Y122726D01* +X382447Y142749D01* +X423657Y142749D01* +X423744Y142761D01* +X423831Y142764D01* +X423884Y142781D01* +X423939Y142789D01* +X424019Y142824D01* +X424102Y142851D01* +X424141Y142879D01* +X424198Y142905D01* +X424311Y143001D01* +X424375Y143046D01* +X426062Y144733D01* +X432118Y144733D01* +X433622Y143229D01* +X433669Y143194D01* +X433709Y143151D01* +X433782Y143109D01* +X433849Y143058D01* +X433904Y143037D01* +X433954Y143008D01* +X434036Y142987D01* +X434115Y142957D01* +X434173Y142952D01* +X434230Y142937D01* +X434314Y142940D01* +X434398Y142933D01* +G37* +G36* +X1202363Y86711D02* +X1202363Y86711D01* +X1202451Y86714D01* +X1202503Y86731D01* +X1202558Y86739D01* +X1202638Y86774D01* +X1202721Y86801D01* +X1202760Y86829D01* +X1202818Y86855D01* +X1202931Y86951D01* +X1202995Y86996D01* +X1208234Y92235D01* +X1208286Y92305D01* +X1208346Y92369D01* +X1208372Y92419D01* +X1208405Y92463D01* +X1208436Y92544D01* +X1208476Y92622D01* +X1208484Y92670D01* +X1208506Y92728D01* +X1208518Y92876D01* +X1208531Y92953D01* +X1208531Y93457D01* +X1208519Y93544D01* +X1208516Y93631D01* +X1208499Y93684D01* +X1208491Y93739D01* +X1208456Y93819D01* +X1208429Y93902D01* +X1208401Y93941D01* +X1208375Y93998D01* +X1208279Y94111D01* +X1208234Y94175D01* +X1206547Y95862D01* +X1206547Y101918D01* +X1208051Y103422D01* +X1208086Y103469D01* +X1208129Y103509D01* +X1208171Y103582D01* +X1208222Y103649D01* +X1208243Y103704D01* +X1208272Y103754D01* +X1208293Y103836D01* +X1208323Y103915D01* +X1208328Y103973D01* +X1208343Y104030D01* +X1208340Y104114D01* +X1208347Y104198D01* +X1208335Y104256D01* +X1208334Y104314D01* +X1208308Y104394D01* +X1208291Y104477D01* +X1208264Y104529D01* +X1208246Y104585D01* +X1208206Y104641D01* +X1208160Y104729D01* +X1208091Y104802D01* +X1208051Y104858D01* +X1206547Y106362D01* +X1206547Y109521D01* +X1206535Y109607D01* +X1206532Y109695D01* +X1206515Y109747D01* +X1206507Y109802D01* +X1206472Y109882D01* +X1206445Y109965D01* +X1206417Y110004D01* +X1206391Y110062D01* +X1206295Y110175D01* +X1206250Y110239D01* +X1204937Y111551D01* +X1204937Y142278D01* +X1204925Y142365D01* +X1204922Y142452D01* +X1204905Y142505D01* +X1204897Y142560D01* +X1204861Y142640D01* +X1204835Y142723D01* +X1204807Y142762D01* +X1204781Y142819D01* +X1204685Y142932D01* +X1204640Y142996D01* +X1191978Y155658D01* +X1191908Y155710D01* +X1191844Y155770D01* +X1191795Y155796D01* +X1191751Y155829D01* +X1191669Y155860D01* +X1191591Y155900D01* +X1191544Y155908D01* +X1191485Y155930D01* +X1191337Y155942D01* +X1191260Y155955D01* +X1158163Y155955D01* +X1152365Y161754D01* +X1152295Y161806D01* +X1152231Y161866D01* +X1152181Y161892D01* +X1152137Y161925D01* +X1152056Y161956D01* +X1151978Y161996D01* +X1151930Y162004D01* +X1151872Y162026D01* +X1151724Y162038D01* +X1151647Y162051D01* +X1149508Y162051D01* +X1147454Y162902D01* +X1145882Y164474D01* +X1145031Y166528D01* +X1145031Y168752D01* +X1145882Y170806D01* +X1147454Y172378D01* +X1149508Y173229D01* +X1151732Y173229D01* +X1153786Y172378D01* +X1155358Y170806D01* +X1156209Y168752D01* +X1156209Y166953D01* +X1156221Y166867D01* +X1156224Y166779D01* +X1156241Y166727D01* +X1156249Y166672D01* +X1156284Y166592D01* +X1156311Y166509D01* +X1156339Y166470D01* +X1156365Y166412D01* +X1156461Y166299D01* +X1156506Y166235D01* +X1160391Y162350D01* +X1160461Y162298D01* +X1160525Y162238D01* +X1160575Y162212D01* +X1160619Y162179D01* +X1160700Y162148D01* +X1160778Y162108D01* +X1160826Y162100D01* +X1160884Y162078D01* +X1161032Y162066D01* +X1161109Y162053D01* +X1190085Y162053D01* +X1190114Y162057D01* +X1190143Y162054D01* +X1190254Y162077D01* +X1190366Y162093D01* +X1190393Y162105D01* +X1190422Y162110D01* +X1190522Y162163D01* +X1190626Y162209D01* +X1190648Y162228D01* +X1190674Y162241D01* +X1190756Y162319D01* +X1190843Y162392D01* +X1190859Y162417D01* +X1190880Y162437D01* +X1190937Y162535D01* +X1191000Y162629D01* +X1191009Y162657D01* +X1191024Y162682D01* +X1191052Y162792D01* +X1191086Y162900D01* +X1191087Y162930D01* +X1191094Y162958D01* +X1191090Y163071D01* +X1191093Y163184D01* +X1191086Y163213D01* +X1191085Y163242D01* +X1191050Y163350D01* +X1191021Y163459D01* +X1191007Y163485D01* +X1190997Y163513D01* +X1190952Y163577D01* +X1190876Y163704D01* +X1190831Y163747D01* +X1190803Y163786D01* +X1190295Y164294D01* +X1190294Y164294D01* +X1188211Y166377D01* +X1188211Y242157D01* +X1188199Y242243D01* +X1188196Y242331D01* +X1188179Y242383D01* +X1188171Y242438D01* +X1188136Y242518D01* +X1188109Y242601D01* +X1188081Y242640D01* +X1188055Y242698D01* +X1187959Y242811D01* +X1187914Y242875D01* +X1176303Y254486D01* +X1176233Y254538D01* +X1176169Y254598D01* +X1176120Y254624D01* +X1176075Y254657D01* +X1175994Y254688D01* +X1175916Y254728D01* +X1175868Y254736D01* +X1175810Y254758D01* +X1175662Y254770D01* +X1175585Y254783D01* +X1101094Y254783D01* +X1101036Y254775D01* +X1100977Y254777D01* +X1100896Y254755D01* +X1100812Y254743D01* +X1100759Y254720D01* +X1100702Y254705D01* +X1100630Y254662D01* +X1100553Y254627D01* +X1100508Y254589D01* +X1100458Y254560D01* +X1100400Y254498D01* +X1100336Y254444D01* +X1100303Y254395D01* +X1100263Y254352D01* +X1100225Y254277D01* +X1100178Y254207D01* +X1100160Y254151D01* +X1100134Y254099D01* +X1100122Y254031D01* +X1100092Y253936D01* +X1100090Y253836D01* +X1100078Y253768D01* +X1100078Y253139D01* +X1099227Y251085D01* +X1097655Y249513D01* +X1097592Y249486D01* +X1097493Y249428D01* +X1097391Y249375D01* +X1097371Y249356D01* +X1097347Y249342D01* +X1097268Y249258D01* +X1097185Y249179D01* +X1097171Y249155D01* +X1097152Y249135D01* +X1097099Y249033D01* +X1097041Y248934D01* +X1097035Y248907D01* +X1097022Y248882D01* +X1097000Y248770D01* +X1096971Y248658D01* +X1096972Y248631D01* +X1096967Y248604D01* +X1096977Y248489D01* +X1096980Y248374D01* +X1096989Y248348D01* +X1096991Y248320D01* +X1097032Y248213D01* +X1097068Y248104D01* +X1097082Y248083D01* +X1097093Y248055D01* +X1097254Y247842D01* +X1097263Y247830D01* +X1097298Y247796D01* +X1098148Y245742D01* +X1098148Y243518D01* +X1097866Y242837D01* +X1097858Y242807D01* +X1097844Y242779D01* +X1097831Y242702D01* +X1097795Y242561D01* +X1097797Y242497D01* +X1097789Y242448D01* +X1097789Y176943D01* +X1097801Y176857D01* +X1097804Y176769D01* +X1097821Y176717D01* +X1097829Y176662D01* +X1097864Y176582D01* +X1097891Y176499D01* +X1097919Y176460D01* +X1097945Y176402D01* +X1098041Y176289D01* +X1098086Y176225D01* +X1125169Y149142D01* +X1125239Y149090D01* +X1125303Y149030D01* +X1125353Y149004D01* +X1125397Y148971D01* +X1125478Y148940D01* +X1125556Y148900D01* +X1125604Y148892D01* +X1125662Y148870D01* +X1125810Y148858D01* +X1125887Y148845D01* +X1178807Y148845D01* +X1185419Y142233D01* +X1185419Y142008D01* +X1185427Y141950D01* +X1185425Y141892D01* +X1185447Y141810D01* +X1185459Y141726D01* +X1185482Y141673D01* +X1185497Y141617D01* +X1185540Y141544D01* +X1185575Y141467D01* +X1185613Y141422D01* +X1185642Y141372D01* +X1185704Y141314D01* +X1185758Y141250D01* +X1185807Y141218D01* +X1185850Y141178D01* +X1185925Y141139D01* +X1185995Y141092D01* +X1186051Y141075D01* +X1186103Y141048D01* +X1186171Y141037D01* +X1186266Y141007D01* +X1186366Y141004D01* +X1186434Y140993D01* +X1186789Y140993D01* +X1188002Y139780D01* +X1188049Y139745D01* +X1188089Y139702D01* +X1188162Y139660D01* +X1188229Y139609D01* +X1188284Y139588D01* +X1188334Y139559D01* +X1188416Y139538D01* +X1188495Y139508D01* +X1188553Y139503D01* +X1188610Y139489D01* +X1188694Y139491D01* +X1188778Y139484D01* +X1188836Y139496D01* +X1188894Y139498D01* +X1188974Y139524D01* +X1189057Y139540D01* +X1189109Y139567D01* +X1189165Y139585D01* +X1189221Y139625D01* +X1189309Y139671D01* +X1189382Y139740D01* +X1189438Y139780D01* +X1190651Y140993D01* +X1199489Y140993D01* +X1201603Y138879D01* +X1201603Y119041D01* +X1199686Y117124D01* +X1199634Y117054D01* +X1199574Y116990D01* +X1199548Y116941D01* +X1199515Y116897D01* +X1199484Y116815D01* +X1199444Y116737D01* +X1199436Y116690D01* +X1199414Y116631D01* +X1199402Y116483D01* +X1199389Y116406D01* +X1199389Y114823D01* +X1199401Y114736D01* +X1199404Y114649D01* +X1199421Y114596D01* +X1199429Y114541D01* +X1199464Y114461D01* +X1199491Y114378D01* +X1199519Y114339D01* +X1199545Y114282D01* +X1199641Y114169D01* +X1199686Y114105D01* +X1201373Y112418D01* +X1201373Y106362D01* +X1199618Y104607D01* +X1192784Y104607D01* +X1192726Y104599D01* +X1192668Y104601D01* +X1192586Y104579D01* +X1192502Y104567D01* +X1192449Y104544D01* +X1192393Y104529D01* +X1192320Y104486D01* +X1192243Y104451D01* +X1192198Y104413D01* +X1192148Y104384D01* +X1192090Y104322D01* +X1192026Y104268D01* +X1191994Y104219D01* +X1191954Y104176D01* +X1191915Y104101D01* +X1191868Y104031D01* +X1191851Y103975D01* +X1191824Y103923D01* +X1191813Y103855D01* +X1191783Y103760D01* +X1191780Y103660D01* +X1191769Y103592D01* +X1191769Y103028D01* +X1190918Y100974D01* +X1189346Y99402D01* +X1187292Y98551D01* +X1185068Y98551D01* +X1183014Y99402D01* +X1182786Y99630D01* +X1182762Y99648D01* +X1182743Y99671D01* +X1182649Y99733D01* +X1182559Y99801D01* +X1182531Y99812D01* +X1182507Y99828D01* +X1182399Y99862D01* +X1182293Y99903D01* +X1182264Y99905D01* +X1182236Y99914D01* +X1182123Y99917D01* +X1182010Y99926D01* +X1181981Y99920D01* +X1181952Y99921D01* +X1181842Y99893D01* +X1181731Y99870D01* +X1181705Y99857D01* +X1181677Y99849D01* +X1181579Y99792D01* +X1181479Y99739D01* +X1181457Y99719D01* +X1181432Y99704D01* +X1181355Y99622D01* +X1181273Y99544D01* +X1181258Y99518D01* +X1181238Y99497D01* +X1181186Y99396D01* +X1181129Y99298D01* +X1181122Y99270D01* +X1181108Y99244D01* +X1181095Y99166D01* +X1181059Y99023D01* +X1181061Y98960D01* +X1181053Y98913D01* +X1181053Y95862D01* +X1179366Y94175D01* +X1179314Y94105D01* +X1179254Y94041D01* +X1179228Y93992D01* +X1179195Y93948D01* +X1179164Y93866D01* +X1179124Y93788D01* +X1179116Y93741D01* +X1179094Y93682D01* +X1179082Y93535D01* +X1179069Y93457D01* +X1179069Y92953D01* +X1179081Y92867D01* +X1179084Y92779D01* +X1179101Y92727D01* +X1179109Y92672D01* +X1179144Y92592D01* +X1179171Y92509D01* +X1179199Y92470D01* +X1179225Y92412D01* +X1179321Y92299D01* +X1179366Y92235D01* +X1184605Y86996D01* +X1184675Y86944D01* +X1184739Y86884D01* +X1184789Y86858D01* +X1184833Y86825D01* +X1184914Y86794D01* +X1184992Y86754D01* +X1185040Y86746D01* +X1185098Y86724D01* +X1185246Y86712D01* +X1185323Y86699D01* +X1202277Y86699D01* +X1202363Y86711D01* +G37* +G36* +X947862Y163081D02* +X947862Y163081D01* +X947950Y163084D01* +X948002Y163101D01* +X948057Y163109D01* +X948137Y163144D01* +X948220Y163171D01* +X948260Y163199D01* +X948317Y163225D01* +X948430Y163321D01* +X948494Y163366D01* +X953469Y168342D01* +X953538Y168434D01* +X953612Y168522D01* +X953624Y168547D01* +X953640Y168569D01* +X953681Y168676D01* +X953728Y168781D01* +X953732Y168809D01* +X953742Y168835D01* +X953751Y168949D01* +X953767Y169063D01* +X953763Y169090D01* +X953765Y169118D01* +X953743Y169231D01* +X953726Y169344D01* +X953715Y169370D01* +X953709Y169397D01* +X953656Y169499D01* +X953609Y169603D01* +X953591Y169625D01* +X953578Y169649D01* +X953499Y169732D01* +X953425Y169820D01* +X953404Y169833D01* +X953383Y169855D01* +X953153Y169990D01* +X953140Y169998D01* +X951874Y170522D01* +X950302Y172094D01* +X949451Y174148D01* +X949451Y176372D01* +X950302Y178426D01* +X951874Y179998D01* +X953928Y180849D01* +X956152Y180849D01* +X957438Y180316D01* +X957440Y180315D01* +X957441Y180315D01* +X957574Y180281D01* +X957713Y180245D01* +X957715Y180245D01* +X957716Y180245D01* +X957857Y180249D01* +X957997Y180253D01* +X957999Y180254D01* +X958001Y180254D01* +X958135Y180297D01* +X958268Y180340D01* +X958270Y180341D01* +X958271Y180341D01* +X958284Y180350D01* +X958504Y180498D01* +X958524Y180521D01* +X958544Y180536D01* +X974724Y196715D01* +X974776Y196785D01* +X974836Y196849D01* +X974862Y196899D01* +X974895Y196943D01* +X974926Y197024D01* +X974966Y197102D01* +X974974Y197150D01* +X974996Y197208D01* +X975008Y197356D01* +X975021Y197433D01* +X975021Y248567D01* +X975009Y248654D01* +X975006Y248741D01* +X974989Y248794D01* +X974981Y248849D01* +X974946Y248929D01* +X974919Y249012D01* +X974891Y249051D01* +X974865Y249108D01* +X974769Y249221D01* +X974724Y249285D01* +X973287Y250722D01* +X973287Y257278D01* +X975042Y259033D01* +X981098Y259033D01* +X982853Y257278D01* +X982853Y257252D01* +X982861Y257194D01* +X982859Y257136D01* +X982881Y257054D01* +X982893Y256970D01* +X982916Y256917D01* +X982931Y256861D01* +X982974Y256788D01* +X983009Y256711D01* +X983047Y256666D01* +X983076Y256616D01* +X983138Y256558D01* +X983192Y256494D01* +X983241Y256462D01* +X983284Y256422D01* +X983359Y256383D01* +X983429Y256336D01* +X983485Y256319D01* +X983537Y256292D01* +X983605Y256281D01* +X983700Y256251D01* +X983800Y256248D01* +X983868Y256237D01* +X1039872Y256237D01* +X1039930Y256245D01* +X1039988Y256243D01* +X1040070Y256265D01* +X1040154Y256277D01* +X1040207Y256300D01* +X1040263Y256315D01* +X1040336Y256358D01* +X1040413Y256393D01* +X1040458Y256431D01* +X1040508Y256460D01* +X1040566Y256522D01* +X1040630Y256576D01* +X1040662Y256625D01* +X1040702Y256668D01* +X1040741Y256743D01* +X1040788Y256813D01* +X1040805Y256869D01* +X1040832Y256921D01* +X1040843Y256989D01* +X1040873Y257084D01* +X1040876Y257184D01* +X1040887Y257252D01* +X1040887Y257679D01* +X1042100Y258892D01* +X1042116Y258914D01* +X1042136Y258930D01* +X1042152Y258955D01* +X1042178Y258979D01* +X1042220Y259052D01* +X1042271Y259119D01* +X1042283Y259152D01* +X1042293Y259167D01* +X1042300Y259188D01* +X1042321Y259224D01* +X1042342Y259306D01* +X1042372Y259385D01* +X1042376Y259427D01* +X1042379Y259438D01* +X1042379Y259453D01* +X1042391Y259500D01* +X1042389Y259584D01* +X1042396Y259668D01* +X1042386Y259716D01* +X1042386Y259722D01* +X1042384Y259731D01* +X1042382Y259784D01* +X1042356Y259864D01* +X1042340Y259947D01* +X1042315Y259994D01* +X1042315Y259997D01* +X1042312Y260001D01* +X1042295Y260055D01* +X1042255Y260111D01* +X1042209Y260199D01* +X1042170Y260240D01* +X1042169Y260242D01* +X1042164Y260246D01* +X1042140Y260272D01* +X1042100Y260328D01* +X1040887Y261541D01* +X1040887Y270379D01* +X1042100Y271592D01* +X1042135Y271639D01* +X1042178Y271679D01* +X1042220Y271752D01* +X1042271Y271819D01* +X1042292Y271874D01* +X1042321Y271924D01* +X1042342Y272006D01* +X1042372Y272085D01* +X1042377Y272143D01* +X1042391Y272200D01* +X1042389Y272284D01* +X1042396Y272368D01* +X1042384Y272426D01* +X1042382Y272484D01* +X1042356Y272564D01* +X1042340Y272647D01* +X1042313Y272699D01* +X1042295Y272755D01* +X1042255Y272811D01* +X1042209Y272899D01* +X1042140Y272972D01* +X1042100Y273028D01* +X1040887Y274241D01* +X1040887Y274524D01* +X1040879Y274582D01* +X1040881Y274640D01* +X1040859Y274722D01* +X1040847Y274806D01* +X1040824Y274859D01* +X1040809Y274915D01* +X1040766Y274988D01* +X1040731Y275065D01* +X1040693Y275110D01* +X1040664Y275160D01* +X1040602Y275218D01* +X1040548Y275282D01* +X1040499Y275314D01* +X1040456Y275354D01* +X1040381Y275393D01* +X1040311Y275440D01* +X1040255Y275457D01* +X1040203Y275484D01* +X1040135Y275495D01* +X1040040Y275525D01* +X1039940Y275528D01* +X1039872Y275539D01* +X1036354Y275539D01* +X1036267Y275527D01* +X1036180Y275524D01* +X1036127Y275507D01* +X1036072Y275499D01* +X1035993Y275464D01* +X1035909Y275437D01* +X1035870Y275409D01* +X1035813Y275383D01* +X1035700Y275287D01* +X1035636Y275242D01* +X1031495Y271101D01* +X1011273Y271101D01* +X1011186Y271089D01* +X1011099Y271086D01* +X1011046Y271069D01* +X1010991Y271061D01* +X1010911Y271026D01* +X1010828Y270999D01* +X1010789Y270971D01* +X1010732Y270945D01* +X1010619Y270849D01* +X1010555Y270804D01* +X1009118Y269367D01* +X1002562Y269367D01* +X1001125Y270804D01* +X1001055Y270856D01* +X1000991Y270916D01* +X1000942Y270942D01* +X1000898Y270975D01* +X1000816Y271006D01* +X1000738Y271046D01* +X1000691Y271054D01* +X1000632Y271076D01* +X1000485Y271088D01* +X1000407Y271101D01* +X998573Y271101D01* +X998486Y271089D01* +X998399Y271086D01* +X998346Y271069D01* +X998291Y271061D01* +X998211Y271026D01* +X998128Y270999D01* +X998089Y270971D01* +X998032Y270945D01* +X997919Y270849D01* +X997855Y270804D01* +X996418Y269367D01* +X989862Y269367D01* +X988425Y270804D01* +X988355Y270856D01* +X988292Y270916D01* +X988242Y270942D01* +X988198Y270975D01* +X988116Y271006D01* +X988038Y271046D01* +X987991Y271054D01* +X987932Y271076D01* +X987785Y271088D01* +X987707Y271101D01* +X895464Y271101D01* +X895406Y271093D01* +X895348Y271095D01* +X895266Y271073D01* +X895182Y271061D01* +X895129Y271038D01* +X895073Y271023D01* +X895000Y270980D01* +X894923Y270945D01* +X894878Y270907D01* +X894828Y270878D01* +X894770Y270816D01* +X894706Y270762D01* +X894674Y270713D01* +X894634Y270670D01* +X894595Y270595D01* +X894548Y270525D01* +X894531Y270469D01* +X894504Y270417D01* +X894493Y270349D01* +X894463Y270254D01* +X894460Y270154D01* +X894449Y270086D01* +X894449Y219508D01* +X894457Y219450D01* +X894455Y219392D01* +X894477Y219310D01* +X894489Y219226D01* +X894512Y219173D01* +X894527Y219117D01* +X894570Y219044D01* +X894605Y218967D01* +X894643Y218922D01* +X894672Y218872D01* +X894734Y218814D01* +X894788Y218750D01* +X894837Y218718D01* +X894880Y218678D01* +X894955Y218639D01* +X895025Y218592D01* +X895081Y218575D01* +X895133Y218548D01* +X895201Y218537D01* +X895296Y218507D01* +X895396Y218504D01* +X895464Y218493D01* +X897807Y218493D01* +X900433Y215867D01* +X900433Y196053D01* +X897807Y193427D01* +X885502Y193427D01* +X885473Y193423D01* +X885443Y193426D01* +X885332Y193403D01* +X885220Y193387D01* +X885193Y193375D01* +X885165Y193370D01* +X885064Y193318D01* +X884961Y193271D01* +X884938Y193252D01* +X884912Y193239D01* +X884830Y193161D01* +X884744Y193088D01* +X884727Y193063D01* +X884706Y193043D01* +X884649Y192945D01* +X884586Y192851D01* +X884577Y192823D01* +X884562Y192798D01* +X884535Y192688D01* +X884500Y192580D01* +X884500Y192550D01* +X884492Y192522D01* +X884496Y192409D01* +X884493Y192296D01* +X884500Y192267D01* +X884501Y192238D01* +X884536Y192130D01* +X884565Y192021D01* +X884580Y191995D01* +X884589Y191967D01* +X884634Y191904D01* +X884710Y191776D01* +X884756Y191733D01* +X884784Y191694D01* +X901932Y174546D01* +X902002Y174493D01* +X902066Y174433D01* +X902115Y174408D01* +X902159Y174375D01* +X902241Y174344D01* +X902319Y174304D01* +X902367Y174296D01* +X902425Y174274D01* +X902573Y174261D01* +X902650Y174248D01* +X904332Y174248D01* +X906386Y173397D01* +X907958Y171825D01* +X908809Y169771D01* +X908809Y167548D01* +X907958Y165494D01* +X907266Y164802D01* +X907249Y164778D01* +X907226Y164759D01* +X907164Y164665D01* +X907095Y164575D01* +X907085Y164547D01* +X907069Y164523D01* +X907035Y164415D01* +X906994Y164309D01* +X906992Y164280D01* +X906983Y164252D01* +X906980Y164138D01* +X906971Y164026D01* +X906976Y163997D01* +X906976Y163968D01* +X907004Y163858D01* +X907027Y163747D01* +X907040Y163721D01* +X907048Y163693D01* +X907105Y163595D01* +X907158Y163495D01* +X907178Y163473D01* +X907193Y163448D01* +X907275Y163371D01* +X907353Y163289D01* +X907379Y163274D01* +X907400Y163254D01* +X907501Y163202D01* +X907599Y163145D01* +X907627Y163138D01* +X907653Y163124D01* +X907731Y163111D01* +X907874Y163075D01* +X907937Y163077D01* +X907984Y163069D01* +X947776Y163069D01* +X947862Y163081D01* +G37* +G36* +X639482Y10673D02* +X639482Y10673D01* +X639511Y10670D01* +X639623Y10693D01* +X639735Y10709D01* +X639761Y10721D01* +X639790Y10726D01* +X639891Y10779D01* +X639994Y10825D01* +X640016Y10844D01* +X640043Y10857D01* +X640125Y10935D01* +X640211Y11008D01* +X640227Y11033D01* +X640249Y11053D01* +X640306Y11151D01* +X640369Y11245D01* +X640378Y11273D01* +X640392Y11298D01* +X640420Y11408D01* +X640454Y11516D01* +X640455Y11546D01* +X640462Y11574D01* +X640459Y11687D01* +X640462Y11800D01* +X640454Y11829D01* +X640453Y11858D01* +X640418Y11966D01* +X640390Y12075D01* +X640375Y12101D01* +X640366Y12129D01* +X640320Y12192D01* +X640245Y12320D01* +X640199Y12363D01* +X640171Y12402D01* +X638440Y14133D01* +X636777Y18147D01* +X636777Y22493D01* +X638440Y26507D01* +X641513Y29580D01* +X645527Y31243D01* +X649873Y31243D01* +X652384Y30202D01* +X652386Y30202D01* +X652387Y30201D01* +X652522Y30167D01* +X652660Y30131D01* +X652661Y30131D01* +X652663Y30131D01* +X652803Y30136D01* +X652944Y30140D01* +X652945Y30140D01* +X652947Y30140D01* +X653080Y30183D01* +X653215Y30226D01* +X653216Y30227D01* +X653218Y30228D01* +X653230Y30236D01* +X653347Y30315D01* +X653348Y30315D01* +X653350Y30317D01* +X653451Y30384D01* +X653471Y30408D01* +X653491Y30422D01* +X665690Y42621D01* +X665690Y42622D01* +X667773Y44705D01* +X738219Y44705D01* +X738305Y44717D01* +X738393Y44720D01* +X738445Y44737D01* +X738500Y44745D01* +X738580Y44780D01* +X738663Y44807D01* +X738702Y44835D01* +X738760Y44861D01* +X738873Y44957D01* +X738937Y45002D01* +X760019Y66084D01* +X760036Y66108D01* +X760059Y66127D01* +X760121Y66221D01* +X760189Y66311D01* +X760200Y66339D01* +X760216Y66363D01* +X760250Y66471D01* +X760291Y66577D01* +X760293Y66606D01* +X760302Y66634D01* +X760305Y66748D01* +X760314Y66860D01* +X760309Y66889D01* +X760309Y66918D01* +X760281Y67028D01* +X760258Y67139D01* +X760245Y67165D01* +X760237Y67193D01* +X760180Y67291D01* +X760127Y67391D01* +X760107Y67413D01* +X760092Y67438D01* +X760010Y67515D01* +X759932Y67597D01* +X759906Y67612D01* +X759885Y67632D01* +X759784Y67684D01* +X759686Y67741D01* +X759658Y67748D01* +X759632Y67762D01* +X759554Y67775D01* +X759411Y67811D01* +X759348Y67809D01* +X759301Y67817D01* +X745983Y67817D01* +X745896Y67805D01* +X745809Y67802D01* +X745756Y67785D01* +X745702Y67777D01* +X745622Y67742D01* +X745539Y67715D01* +X745499Y67687D01* +X745442Y67661D01* +X745329Y67565D01* +X745265Y67520D01* +X740925Y63180D01* +X740890Y63133D01* +X740848Y63093D01* +X740805Y63020D01* +X740754Y62953D01* +X740734Y62898D01* +X740704Y62848D01* +X740683Y62766D01* +X740653Y62687D01* +X740648Y62629D01* +X740634Y62572D01* +X740637Y62488D01* +X740630Y62404D01* +X740641Y62347D01* +X740643Y62288D01* +X740669Y62208D01* +X740685Y62125D01* +X740712Y62073D01* +X740730Y62018D01* +X740771Y61961D01* +X740816Y61873D01* +X740885Y61801D01* +X740925Y61744D01* +X741973Y60697D01* +X741973Y51063D01* +X739757Y48847D01* +X729123Y48847D01* +X727158Y50813D01* +X727111Y50848D01* +X727071Y50890D01* +X726998Y50933D01* +X726931Y50983D01* +X726876Y51004D01* +X726826Y51034D01* +X726744Y51055D01* +X726665Y51085D01* +X726607Y51089D01* +X726550Y51104D01* +X726466Y51101D01* +X726382Y51108D01* +X726324Y51097D01* +X726266Y51095D01* +X726186Y51069D01* +X726103Y51052D01* +X726051Y51025D01* +X725995Y51007D01* +X725939Y50967D01* +X725851Y50921D01* +X725778Y50853D01* +X725722Y50813D01* +X723757Y48847D01* +X713123Y48847D01* +X710907Y51063D01* +X710907Y60697D01* +X713062Y62851D01* +X713114Y62921D01* +X713174Y62985D01* +X713200Y63034D01* +X713233Y63079D01* +X713264Y63160D01* +X713304Y63238D01* +X713312Y63286D01* +X713334Y63344D01* +X713346Y63492D01* +X713359Y63569D01* +X713359Y74291D01* +X713479Y74579D01* +X713501Y74664D01* +X713532Y74746D01* +X713536Y74801D01* +X713550Y74855D01* +X713547Y74942D01* +X713554Y75029D01* +X713543Y75076D01* +X713542Y75139D01* +X713497Y75280D01* +X713479Y75356D01* +X712977Y76567D01* +X712977Y80913D01* +X714031Y83457D01* +X714032Y83459D01* +X714032Y83460D01* +X714065Y83588D01* +X714102Y83732D01* +X714102Y83734D01* +X714103Y83736D01* +X714098Y83876D01* +X714094Y84017D01* +X714094Y84018D01* +X714094Y84020D01* +X714050Y84154D01* +X714007Y84287D01* +X714007Y84289D01* +X714006Y84290D01* +X713997Y84303D01* +X713849Y84524D01* +X713826Y84543D01* +X713811Y84564D01* +X711960Y86415D01* +X711913Y86450D01* +X711873Y86492D01* +X711800Y86535D01* +X711733Y86586D01* +X711678Y86606D01* +X711628Y86636D01* +X711546Y86657D01* +X711467Y86687D01* +X711409Y86692D01* +X711352Y86706D01* +X711268Y86703D01* +X711184Y86710D01* +X711127Y86699D01* +X711068Y86697D01* +X710988Y86671D01* +X710905Y86655D01* +X710853Y86628D01* +X710798Y86610D01* +X710741Y86569D01* +X710653Y86524D01* +X710581Y86455D01* +X710524Y86415D01* +X708397Y84287D01* +X698763Y84287D01* +X696678Y86373D01* +X696631Y86408D01* +X696591Y86450D01* +X696518Y86493D01* +X696451Y86543D01* +X696396Y86564D01* +X696346Y86594D01* +X696264Y86615D01* +X696185Y86645D01* +X696127Y86649D01* +X696070Y86664D01* +X695986Y86661D01* +X695902Y86668D01* +X695844Y86657D01* +X695786Y86655D01* +X695706Y86629D01* +X695623Y86612D01* +X695571Y86585D01* +X695515Y86567D01* +X695459Y86527D01* +X695371Y86481D01* +X695298Y86413D01* +X695242Y86373D01* +X693157Y84287D01* +X683523Y84287D01* +X681626Y86185D01* +X681602Y86202D01* +X681583Y86225D01* +X681489Y86287D01* +X681399Y86355D01* +X681371Y86366D01* +X681347Y86382D01* +X681239Y86416D01* +X681133Y86457D01* +X681104Y86459D01* +X681076Y86468D01* +X680962Y86471D01* +X680850Y86480D01* +X680821Y86474D01* +X680792Y86475D01* +X680682Y86447D01* +X680571Y86424D01* +X680545Y86411D01* +X680517Y86403D01* +X680419Y86346D01* +X680319Y86293D01* +X680297Y86273D01* +X680272Y86258D01* +X680195Y86176D01* +X680113Y86098D01* +X680098Y86072D01* +X680078Y86051D01* +X680026Y85950D01* +X679969Y85852D01* +X679962Y85824D01* +X679948Y85798D01* +X679935Y85720D01* +X679899Y85577D01* +X679901Y85514D01* +X679893Y85467D01* +X679893Y75868D01* +X677472Y73447D01* +X666248Y73447D01* +X663827Y75868D01* +X663827Y112095D01* +X663834Y112101D01* +X663896Y112195D01* +X663964Y112285D01* +X663975Y112313D01* +X663991Y112337D01* +X664025Y112445D01* +X664066Y112551D01* +X664068Y112580D01* +X664077Y112608D01* +X664080Y112721D01* +X664089Y112834D01* +X664084Y112863D01* +X664084Y112892D01* +X664056Y113002D01* +X664033Y113113D01* +X664020Y113139D01* +X664012Y113167D01* +X663955Y113265D01* +X663902Y113365D01* +X663882Y113387D01* +X663867Y113412D01* +X663785Y113489D01* +X663707Y113571D01* +X663681Y113586D01* +X663660Y113606D01* +X663559Y113658D01* +X663461Y113715D01* +X663433Y113722D01* +X663407Y113736D01* +X663330Y113749D01* +X663186Y113785D01* +X663123Y113783D01* +X663076Y113791D01* +X659384Y113791D01* +X659326Y113783D01* +X659268Y113785D01* +X659186Y113763D01* +X659102Y113751D01* +X659049Y113728D01* +X658993Y113713D01* +X658920Y113670D01* +X658843Y113635D01* +X658798Y113597D01* +X658748Y113568D01* +X658690Y113506D01* +X658626Y113452D01* +X658594Y113403D01* +X658554Y113360D01* +X658515Y113285D01* +X658468Y113215D01* +X658451Y113159D01* +X658424Y113107D01* +X658413Y113039D01* +X658383Y112944D01* +X658380Y112844D01* +X658369Y112776D01* +X658369Y49537D01* +X656583Y47751D01* +X613448Y47751D01* +X613390Y47743D01* +X613332Y47745D01* +X613250Y47723D01* +X613166Y47711D01* +X613113Y47688D01* +X613057Y47673D01* +X612984Y47630D01* +X612907Y47595D01* +X612862Y47557D01* +X612812Y47528D01* +X612754Y47466D01* +X612690Y47412D01* +X612658Y47363D01* +X612618Y47320D01* +X612579Y47245D01* +X612532Y47175D01* +X612515Y47119D01* +X612488Y47067D01* +X612477Y46999D01* +X612447Y46904D01* +X612444Y46804D01* +X612433Y46736D01* +X612433Y43443D01* +X610217Y41227D01* +X599583Y41227D01* +X597618Y43193D01* +X597571Y43228D01* +X597531Y43270D01* +X597458Y43313D01* +X597391Y43363D01* +X597336Y43384D01* +X597286Y43414D01* +X597204Y43435D01* +X597125Y43465D01* +X597067Y43469D01* +X597010Y43484D01* +X596926Y43481D01* +X596842Y43488D01* +X596784Y43477D01* +X596726Y43475D01* +X596646Y43449D01* +X596563Y43432D01* +X596511Y43405D01* +X596455Y43387D01* +X596399Y43347D01* +X596311Y43301D01* +X596238Y43233D01* +X596182Y43193D01* +X594217Y41227D01* +X583583Y41227D01* +X581310Y43500D01* +X581304Y43515D01* +X581289Y43571D01* +X581246Y43644D01* +X581211Y43721D01* +X581173Y43766D01* +X581144Y43816D01* +X581082Y43874D01* +X581028Y43938D01* +X580979Y43970D01* +X580936Y44010D01* +X580861Y44049D01* +X580791Y44096D01* +X580735Y44113D01* +X580683Y44140D01* +X580615Y44151D01* +X580520Y44181D01* +X580420Y44184D01* +X580352Y44195D01* +X546576Y44195D01* +X539115Y51656D01* +X539115Y55452D01* +X539107Y55510D01* +X539109Y55568D01* +X539087Y55650D01* +X539075Y55734D01* +X539052Y55787D01* +X539037Y55843D01* +X538994Y55916D01* +X538959Y55993D01* +X538921Y56038D01* +X538892Y56088D01* +X538830Y56146D01* +X538776Y56210D01* +X538727Y56242D01* +X538684Y56282D01* +X538609Y56321D01* +X538539Y56368D01* +X538483Y56385D01* +X538431Y56412D01* +X538363Y56423D01* +X538268Y56453D01* +X538168Y56456D01* +X538100Y56467D01* +X537863Y56467D01* +X535647Y58683D01* +X535647Y68317D01* +X538023Y70692D01* +X538058Y70739D01* +X538100Y70779D01* +X538143Y70852D01* +X538193Y70919D01* +X538214Y70974D01* +X538244Y71024D01* +X538265Y71106D01* +X538295Y71185D01* +X538299Y71243D01* +X538314Y71300D01* +X538311Y71384D01* +X538318Y71468D01* +X538307Y71526D01* +X538305Y71584D01* +X538279Y71664D01* +X538262Y71747D01* +X538235Y71799D01* +X538217Y71855D01* +X538177Y71911D01* +X538131Y71999D01* +X538063Y72072D01* +X538023Y72128D01* +X536527Y73623D01* +X536527Y75360D01* +X536519Y75418D01* +X536521Y75476D01* +X536499Y75558D01* +X536487Y75642D01* +X536464Y75695D01* +X536449Y75751D01* +X536406Y75824D01* +X536371Y75901D01* +X536333Y75946D01* +X536304Y75996D01* +X536242Y76054D01* +X536188Y76118D01* +X536139Y76150D01* +X536096Y76190D01* +X536021Y76229D01* +X535951Y76276D01* +X535895Y76293D01* +X535843Y76320D01* +X535775Y76331D01* +X535680Y76361D01* +X535580Y76364D01* +X535512Y76375D01* +X531875Y76375D01* +X531845Y76371D01* +X531814Y76373D01* +X531737Y76356D01* +X531594Y76335D01* +X531535Y76309D01* +X531487Y76298D01* +X529477Y75465D01* +X527163Y75465D01* +X525026Y76351D01* +X524798Y76579D01* +X524774Y76597D01* +X524755Y76619D01* +X524703Y76654D01* +X524680Y76676D01* +X524647Y76693D01* +X524571Y76750D01* +X524543Y76760D01* +X524519Y76776D01* +X524411Y76811D01* +X524305Y76851D01* +X524276Y76853D01* +X524248Y76862D01* +X524135Y76865D01* +X524022Y76875D01* +X523993Y76869D01* +X523964Y76870D01* +X523854Y76841D01* +X523743Y76819D01* +X523717Y76805D01* +X523689Y76798D01* +X523591Y76740D01* +X523491Y76688D01* +X523469Y76667D01* +X523444Y76652D01* +X523367Y76570D01* +X523285Y76492D01* +X523270Y76467D01* +X523250Y76445D01* +X523198Y76344D01* +X523141Y76247D01* +X523134Y76218D01* +X523120Y76192D01* +X523107Y76115D01* +X523093Y76058D01* +X523079Y76013D01* +X523078Y76001D01* +X523071Y75971D01* +X523073Y75909D01* +X523065Y75861D01* +X523065Y57144D01* +X523077Y57058D01* +X523080Y56970D01* +X523097Y56918D01* +X523105Y56863D01* +X523140Y56783D01* +X523167Y56700D01* +X523195Y56660D01* +X523221Y56603D01* +X523317Y56490D01* +X523362Y56426D01* +X555106Y24682D01* +X555176Y24630D01* +X555240Y24570D01* +X555289Y24544D01* +X555334Y24511D01* +X555415Y24480D01* +X555493Y24440D01* +X555541Y24432D01* +X555599Y24410D01* +X555747Y24398D01* +X555824Y24385D01* +X560683Y24385D01* +X560684Y24385D01* +X560686Y24385D01* +X560826Y24405D01* +X560964Y24425D01* +X560966Y24425D01* +X560967Y24425D01* +X561093Y24482D01* +X561224Y24541D01* +X561225Y24542D01* +X561226Y24543D01* +X561333Y24634D01* +X561441Y24724D01* +X561441Y24726D01* +X561443Y24727D01* +X561451Y24740D01* +X561598Y24961D01* +X561607Y24990D01* +X561621Y25011D01* +X562240Y26507D01* +X565313Y29580D01* +X569327Y31243D01* +X573673Y31243D01* +X577687Y29580D01* +X580760Y26507D01* +X582423Y22493D01* +X582423Y18147D01* +X581382Y15636D01* +X581382Y15634D01* +X581381Y15633D01* +X581347Y15498D01* +X581311Y15360D01* +X581311Y15359D01* +X581311Y15357D01* +X581316Y15217D01* +X581320Y15076D01* +X581320Y15075D01* +X581320Y15073D01* +X581363Y14940D01* +X581406Y14805D01* +X581407Y14804D01* +X581408Y14803D01* +X581416Y14790D01* +X581564Y14569D01* +X581588Y14549D01* +X581602Y14529D01* +X585165Y10966D01* +X585235Y10914D01* +X585299Y10854D01* +X585349Y10828D01* +X585393Y10795D01* +X585474Y10764D01* +X585552Y10724D01* +X585600Y10716D01* +X585658Y10694D01* +X585806Y10682D01* +X585883Y10669D01* +X639453Y10669D01* +X639482Y10673D01* +G37* +G36* +X845384Y249441D02* +X845384Y249441D01* +X845471Y249444D01* +X845524Y249461D01* +X845579Y249469D01* +X845659Y249504D01* +X845742Y249531D01* +X845781Y249559D01* +X845838Y249585D01* +X845951Y249681D01* +X846015Y249726D01* +X847702Y251413D01* +X853758Y251413D01* +X855262Y249909D01* +X855309Y249874D01* +X855349Y249831D01* +X855422Y249789D01* +X855489Y249738D01* +X855544Y249717D01* +X855594Y249688D01* +X855676Y249667D01* +X855755Y249637D01* +X855813Y249632D01* +X855870Y249617D01* +X855954Y249620D01* +X856038Y249613D01* +X856096Y249625D01* +X856154Y249626D01* +X856234Y249652D01* +X856317Y249669D01* +X856369Y249696D01* +X856425Y249714D01* +X856481Y249754D01* +X856569Y249800D01* +X856642Y249869D01* +X856698Y249909D01* +X858202Y251413D01* +X864505Y251413D01* +X864534Y251417D01* +X864563Y251414D01* +X864674Y251437D01* +X864786Y251453D01* +X864813Y251465D01* +X864842Y251470D01* +X864942Y251522D01* +X865046Y251569D01* +X865068Y251588D01* +X865094Y251601D01* +X865176Y251679D01* +X865263Y251752D01* +X865279Y251777D01* +X865300Y251797D01* +X865357Y251895D01* +X865420Y251989D01* +X865429Y252017D01* +X865444Y252042D01* +X865472Y252152D01* +X865506Y252260D01* +X865507Y252290D01* +X865514Y252318D01* +X865510Y252431D01* +X865513Y252544D01* +X865506Y252573D01* +X865505Y252602D01* +X865470Y252710D01* +X865441Y252819D01* +X865426Y252845D01* +X865417Y252873D01* +X865372Y252936D01* +X865296Y253064D01* +X865251Y253107D01* +X865223Y253146D01* +X861063Y257306D01* +X860993Y257358D01* +X860929Y257418D01* +X860879Y257444D01* +X860835Y257477D01* +X860754Y257508D01* +X860676Y257548D01* +X860628Y257556D01* +X860570Y257578D01* +X860422Y257590D01* +X860345Y257603D01* +X812553Y257603D01* +X810470Y259686D01* +X810470Y259687D01* +X781033Y289123D01* +X780963Y289176D01* +X780899Y289236D01* +X780850Y289261D01* +X780806Y289294D01* +X780724Y289325D01* +X780646Y289365D01* +X780599Y289373D01* +X780540Y289396D01* +X780392Y289408D01* +X780315Y289421D01* +X768144Y289421D01* +X768023Y289404D01* +X767902Y289392D01* +X767883Y289384D01* +X767862Y289381D01* +X767751Y289331D01* +X767638Y289286D01* +X767622Y289273D01* +X767603Y289265D01* +X767510Y289186D01* +X767414Y289111D01* +X767403Y289096D01* +X767386Y289081D01* +X767228Y288844D01* +X767227Y288839D01* +X767224Y288835D01* +X765286Y284679D01* +X762341Y283607D01* +X753610Y287678D01* +X753219Y288753D01* +X753208Y288774D01* +X753202Y288797D01* +X753141Y288899D01* +X753085Y289004D01* +X753069Y289021D01* +X753056Y289041D01* +X752970Y289123D01* +X752887Y289208D01* +X752867Y289220D01* +X752849Y289236D01* +X752743Y289290D01* +X752640Y289349D01* +X752617Y289354D01* +X752596Y289365D01* +X752520Y289378D01* +X752364Y289416D01* +X752308Y289414D01* +X752265Y289421D01* +X708489Y289421D01* +X708465Y289417D01* +X708442Y289420D01* +X708325Y289398D01* +X708208Y289381D01* +X708186Y289371D01* +X708162Y289367D01* +X708057Y289313D01* +X707948Y289265D01* +X707930Y289249D01* +X707909Y289238D01* +X707822Y289158D01* +X707731Y289081D01* +X707718Y289061D01* +X707700Y289045D01* +X707663Y288978D01* +X707574Y288844D01* +X707557Y288791D01* +X707535Y288753D01* +X707144Y287678D01* +X698126Y283473D01* +X698048Y283422D01* +X697965Y283379D01* +X697929Y283345D01* +X697887Y283318D01* +X697826Y283248D01* +X697759Y283184D01* +X697734Y283141D01* +X697701Y283103D01* +X697662Y283019D01* +X697615Y282938D01* +X697603Y282890D01* +X697582Y282845D01* +X697568Y282753D01* +X697545Y282663D01* +X697547Y282613D01* +X697539Y282564D01* +X697551Y282471D01* +X697554Y282379D01* +X697570Y282331D01* +X697576Y282282D01* +X697613Y282196D01* +X697642Y282108D01* +X697667Y282073D01* +X697690Y282021D01* +X697792Y281897D01* +X697837Y281835D01* +X729945Y249726D01* +X730015Y249674D01* +X730079Y249614D01* +X730129Y249588D01* +X730173Y249555D01* +X730254Y249524D01* +X730332Y249484D01* +X730380Y249476D01* +X730438Y249454D01* +X730586Y249442D01* +X730663Y249429D01* +X845297Y249429D01* +X845384Y249441D01* +G37* +G36* +X766482Y10673D02* +X766482Y10673D01* +X766511Y10670D01* +X766623Y10693D01* +X766735Y10709D01* +X766761Y10721D01* +X766790Y10726D01* +X766891Y10779D01* +X766994Y10825D01* +X767016Y10844D01* +X767043Y10857D01* +X767125Y10935D01* +X767211Y11008D01* +X767227Y11033D01* +X767249Y11053D01* +X767306Y11151D01* +X767369Y11245D01* +X767378Y11273D01* +X767392Y11298D01* +X767420Y11408D01* +X767454Y11516D01* +X767455Y11546D01* +X767462Y11574D01* +X767459Y11687D01* +X767462Y11800D01* +X767454Y11829D01* +X767453Y11858D01* +X767418Y11966D01* +X767390Y12075D01* +X767375Y12101D01* +X767366Y12129D01* +X767320Y12192D01* +X767245Y12320D01* +X767199Y12363D01* +X767171Y12402D01* +X765440Y14133D01* +X763777Y18147D01* +X763777Y22493D01* +X765440Y26507D01* +X768513Y29580D01* +X772527Y31243D01* +X776873Y31243D01* +X780887Y29580D01* +X783960Y26507D01* +X785623Y22493D01* +X785623Y18147D01* +X783960Y14133D01* +X782229Y12402D01* +X782211Y12378D01* +X782189Y12359D01* +X782126Y12265D01* +X782058Y12175D01* +X782048Y12147D01* +X782031Y12123D01* +X781997Y12015D01* +X781957Y11909D01* +X781954Y11880D01* +X781946Y11852D01* +X781943Y11738D01* +X781933Y11626D01* +X781939Y11597D01* +X781938Y11568D01* +X781967Y11458D01* +X781989Y11347D01* +X782003Y11321D01* +X782010Y11293D01* +X782068Y11195D01* +X782120Y11095D01* +X782140Y11073D01* +X782155Y11048D01* +X782238Y10971D01* +X782316Y10889D01* +X782341Y10874D01* +X782363Y10854D01* +X782463Y10802D01* +X782561Y10745D01* +X782590Y10738D01* +X782616Y10724D01* +X782693Y10711D01* +X782837Y10675D01* +X782899Y10677D01* +X782947Y10669D01* +X835247Y10669D01* +X835333Y10681D01* +X835421Y10684D01* +X835473Y10701D01* +X835528Y10709D01* +X835608Y10744D01* +X835691Y10771D01* +X835730Y10799D01* +X835788Y10825D01* +X835901Y10921D01* +X835965Y10966D01* +X865767Y40768D01* +X865784Y40792D01* +X865807Y40811D01* +X865869Y40905D01* +X865937Y40995D01* +X865948Y41023D01* +X865964Y41047D01* +X865998Y41155D01* +X866039Y41261D01* +X866041Y41290D01* +X866050Y41318D01* +X866053Y41432D01* +X866062Y41544D01* +X866057Y41573D01* +X866057Y41602D01* +X866029Y41712D01* +X866006Y41823D01* +X865993Y41849D01* +X865985Y41877D01* +X865928Y41975D01* +X865875Y42075D01* +X865855Y42097D01* +X865840Y42122D01* +X865758Y42199D01* +X865680Y42281D01* +X865654Y42296D01* +X865633Y42316D01* +X865532Y42368D01* +X865434Y42425D01* +X865406Y42432D01* +X865380Y42446D01* +X865302Y42459D01* +X865159Y42495D01* +X865096Y42493D01* +X865049Y42501D01* +X858873Y42501D01* +X858786Y42489D01* +X858699Y42486D01* +X858646Y42469D01* +X858591Y42461D01* +X858511Y42426D01* +X858428Y42399D01* +X858389Y42371D01* +X858332Y42345D01* +X858219Y42249D01* +X858155Y42204D01* +X856718Y40767D01* +X850162Y40767D01* +X848407Y42522D01* +X848407Y45316D01* +X848399Y45374D01* +X848401Y45432D01* +X848379Y45514D01* +X848367Y45598D01* +X848344Y45651D01* +X848329Y45707D01* +X848286Y45780D01* +X848251Y45857D01* +X848213Y45902D01* +X848184Y45952D01* +X848122Y46010D01* +X848068Y46074D01* +X848019Y46106D01* +X847976Y46146D01* +X847901Y46185D01* +X847831Y46232D01* +X847775Y46249D01* +X847723Y46276D01* +X847655Y46287D01* +X847560Y46317D01* +X847460Y46320D01* +X847392Y46331D01* +X845321Y46331D01* +X845234Y46319D01* +X845147Y46316D01* +X845094Y46299D01* +X845039Y46291D01* +X844960Y46256D01* +X844876Y46229D01* +X844837Y46201D01* +X844780Y46175D01* +X844667Y46079D01* +X844603Y46034D01* +X844138Y45569D01* +X831499Y45569D01* +X831035Y46034D01* +X831034Y46035D01* +X827869Y49200D01* +X827845Y49217D01* +X827826Y49240D01* +X827732Y49302D01* +X827642Y49370D01* +X827614Y49381D01* +X827590Y49397D01* +X827482Y49431D01* +X827376Y49472D01* +X827347Y49474D01* +X827319Y49483D01* +X827205Y49486D01* +X827093Y49495D01* +X827064Y49490D01* +X827035Y49490D01* +X826925Y49462D01* +X826814Y49439D01* +X826788Y49426D01* +X826760Y49418D01* +X826662Y49361D01* +X826562Y49308D01* +X826540Y49288D01* +X826515Y49273D01* +X826438Y49191D01* +X826356Y49113D01* +X826341Y49087D01* +X826321Y49066D01* +X826269Y48965D01* +X826212Y48867D01* +X826205Y48839D01* +X826191Y48813D01* +X826178Y48735D01* +X826142Y48592D01* +X826144Y48529D01* +X826136Y48482D01* +X826136Y47124D01* +X824581Y45569D01* +X811942Y45569D01* +X811866Y45645D01* +X811842Y45663D01* +X811823Y45685D01* +X811729Y45748D01* +X811639Y45816D01* +X811611Y45826D01* +X811587Y45843D01* +X811479Y45877D01* +X811373Y45917D01* +X811344Y45919D01* +X811316Y45928D01* +X811203Y45931D01* +X811090Y45941D01* +X811061Y45935D01* +X811032Y45936D01* +X810922Y45907D01* +X810811Y45885D01* +X810785Y45871D01* +X810757Y45864D01* +X810659Y45806D01* +X810559Y45754D01* +X810537Y45734D01* +X810512Y45719D01* +X810435Y45636D01* +X810353Y45558D01* +X810338Y45533D01* +X810318Y45511D01* +X810266Y45410D01* +X810209Y45313D01* +X810202Y45284D01* +X810188Y45258D01* +X810175Y45181D01* +X810139Y45037D01* +X810140Y44989D01* +X808378Y43227D01* +X802322Y43227D01* +X800567Y44982D01* +X800567Y51538D01* +X801010Y51981D01* +X801045Y52027D01* +X801087Y52068D01* +X801130Y52141D01* +X801181Y52208D01* +X801202Y52263D01* +X801231Y52313D01* +X801252Y52395D01* +X801282Y52474D01* +X801287Y52532D01* +X801301Y52589D01* +X801299Y52673D01* +X801306Y52757D01* +X801294Y52814D01* +X801292Y52873D01* +X801266Y52953D01* +X801250Y53036D01* +X801223Y53088D01* +X801205Y53143D01* +X801165Y53199D01* +X801119Y53288D01* +X801050Y53360D01* +X801010Y53416D01* +X800442Y53984D01* +X799591Y56038D01* +X799591Y58262D01* +X800442Y60316D01* +X802014Y61888D01* +X802415Y62054D01* +X802489Y62098D01* +X802568Y62133D01* +X802611Y62170D01* +X802660Y62199D01* +X802719Y62261D01* +X802785Y62317D01* +X802816Y62364D01* +X802855Y62405D01* +X802895Y62482D01* +X802942Y62553D01* +X802960Y62607D01* +X802986Y62658D01* +X803002Y62742D01* +X803028Y62824D01* +X803030Y62881D01* +X803041Y62937D01* +X803033Y63022D01* +X803035Y63108D01* +X803021Y63163D01* +X803016Y63220D01* +X802985Y63300D01* +X802964Y63383D01* +X802935Y63432D01* +X802914Y63485D01* +X802862Y63554D01* +X802818Y63628D01* +X802777Y63667D01* +X802743Y63712D01* +X802674Y63764D01* +X802611Y63822D01* +X802560Y63848D01* +X802515Y63882D01* +X802434Y63913D01* +X802358Y63952D01* +X802309Y63960D01* +X802249Y63983D01* +X802104Y63994D01* +X802027Y64007D01* +X778669Y64007D01* +X778583Y63995D01* +X778495Y63992D01* +X778443Y63975D01* +X778388Y63967D01* +X778308Y63932D01* +X778225Y63905D01* +X778186Y63877D01* +X778128Y63851D01* +X778015Y63755D01* +X777951Y63710D01* +X747217Y32976D01* +X747200Y32952D01* +X747177Y32933D01* +X747115Y32839D01* +X747047Y32749D01* +X747036Y32721D01* +X747020Y32697D01* +X746986Y32589D01* +X746945Y32483D01* +X746943Y32454D01* +X746934Y32426D01* +X746931Y32312D01* +X746922Y32200D01* +X746927Y32171D01* +X746927Y32142D01* +X746955Y32032D01* +X746978Y31921D01* +X746991Y31895D01* +X746999Y31867D01* +X747056Y31769D01* +X747109Y31669D01* +X747129Y31647D01* +X747144Y31622D01* +X747226Y31545D01* +X747304Y31463D01* +X747330Y31448D01* +X747351Y31428D01* +X747452Y31376D01* +X747550Y31319D01* +X747578Y31312D01* +X747604Y31298D01* +X747682Y31285D01* +X747825Y31249D01* +X747888Y31251D01* +X747935Y31243D01* +X751473Y31243D01* +X755487Y29580D01* +X758560Y26507D01* +X760223Y22493D01* +X760223Y18147D01* +X758560Y14133D01* +X756829Y12402D01* +X756811Y12378D01* +X756789Y12359D01* +X756726Y12265D01* +X756658Y12175D01* +X756648Y12147D01* +X756631Y12123D01* +X756597Y12015D01* +X756557Y11909D01* +X756554Y11880D01* +X756546Y11852D01* +X756543Y11738D01* +X756533Y11626D01* +X756539Y11597D01* +X756538Y11568D01* +X756567Y11458D01* +X756589Y11347D01* +X756603Y11321D01* +X756610Y11293D01* +X756668Y11195D01* +X756720Y11095D01* +X756740Y11073D01* +X756755Y11048D01* +X756838Y10971D01* +X756916Y10889D01* +X756941Y10874D01* +X756963Y10854D01* +X757063Y10802D01* +X757161Y10745D01* +X757190Y10738D01* +X757216Y10724D01* +X757293Y10711D01* +X757437Y10675D01* +X757499Y10677D01* +X757547Y10669D01* +X766453Y10669D01* +X766482Y10673D01* +G37* +G36* +X887366Y263492D02* +X887366Y263492D01* +X887452Y263489D01* +X887507Y263504D01* +X887564Y263509D01* +X887644Y263539D01* +X887727Y263561D01* +X887776Y263590D01* +X887829Y263611D01* +X887898Y263663D01* +X887972Y263706D01* +X888011Y263748D01* +X888056Y263782D01* +X888108Y263851D01* +X888166Y263914D01* +X888192Y263964D01* +X888226Y264010D01* +X888257Y264090D01* +X888296Y264167D01* +X888304Y264216D01* +X888327Y264276D01* +X888338Y264421D01* +X888351Y264498D01* +X888351Y283412D01* +X888343Y283470D01* +X888345Y283528D01* +X888323Y283610D01* +X888311Y283694D01* +X888288Y283747D01* +X888273Y283803D01* +X888230Y283876D01* +X888195Y283953D01* +X888157Y283998D01* +X888128Y284048D01* +X888066Y284106D01* +X888012Y284170D01* +X887963Y284202D01* +X887920Y284242D01* +X887845Y284281D01* +X887775Y284328D01* +X887719Y284345D01* +X887667Y284372D01* +X887599Y284383D01* +X887504Y284413D01* +X887404Y284416D01* +X887336Y284427D01* +X884993Y284427D01* +X882367Y287053D01* +X882367Y307043D01* +X882395Y307115D01* +X882397Y307144D01* +X882406Y307172D01* +X882409Y307286D01* +X882418Y307398D01* +X882412Y307427D01* +X882413Y307456D01* +X882385Y307566D01* +X882362Y307677D01* +X882349Y307703D01* +X882341Y307731D01* +X882284Y307829D01* +X882231Y307929D01* +X882211Y307951D01* +X882196Y307976D01* +X882114Y308053D01* +X882036Y308135D01* +X882010Y308150D01* +X881989Y308170D01* +X881888Y308222D01* +X881790Y308279D01* +X881762Y308286D01* +X881736Y308300D01* +X881658Y308313D01* +X881515Y308349D01* +X881452Y308347D01* +X881405Y308355D01* +X780447Y308355D01* +X780418Y308351D01* +X780389Y308354D01* +X780278Y308331D01* +X780166Y308315D01* +X780139Y308303D01* +X780110Y308298D01* +X780010Y308246D01* +X779906Y308199D01* +X779884Y308180D01* +X779858Y308167D01* +X779776Y308089D01* +X779689Y308016D01* +X779673Y307991D01* +X779652Y307971D01* +X779595Y307873D01* +X779532Y307779D01* +X779523Y307751D01* +X779508Y307726D01* +X779480Y307616D01* +X779446Y307508D01* +X779445Y307478D01* +X779438Y307450D01* +X779442Y307337D01* +X779439Y307224D01* +X779446Y307195D01* +X779447Y307166D01* +X779482Y307058D01* +X779511Y306949D01* +X779526Y306923D01* +X779535Y306895D01* +X779580Y306832D01* +X779656Y306704D01* +X779672Y306689D01* +X779673Y306687D01* +X779704Y306658D01* +X779729Y306622D01* +X816305Y270046D01* +X816375Y269994D01* +X816439Y269934D01* +X816489Y269908D01* +X816533Y269875D01* +X816614Y269844D01* +X816692Y269804D01* +X816740Y269796D01* +X816798Y269774D01* +X816946Y269762D01* +X817023Y269749D01* +X845297Y269749D01* +X845384Y269761D01* +X845471Y269764D01* +X845524Y269781D01* +X845579Y269789D01* +X845659Y269824D01* +X845742Y269851D01* +X845781Y269879D01* +X845838Y269905D01* +X845951Y270001D01* +X846015Y270046D01* +X847702Y271733D01* +X853758Y271733D01* +X855262Y270229D01* +X855309Y270194D01* +X855349Y270151D01* +X855422Y270109D01* +X855489Y270058D01* +X855544Y270037D01* +X855594Y270008D01* +X855676Y269987D01* +X855755Y269957D01* +X855813Y269952D01* +X855870Y269937D01* +X855954Y269940D01* +X856038Y269933D01* +X856096Y269945D01* +X856154Y269946D01* +X856234Y269972D01* +X856317Y269989D01* +X856369Y270016D01* +X856425Y270034D01* +X856481Y270074D01* +X856569Y270120D01* +X856642Y270189D01* +X856698Y270229D01* +X858202Y271733D01* +X864258Y271733D01* +X865945Y270046D01* +X866015Y269994D01* +X866078Y269934D01* +X866128Y269908D01* +X866172Y269875D01* +X866254Y269844D01* +X866332Y269804D01* +X866379Y269796D01* +X866438Y269774D01* +X866585Y269762D01* +X866663Y269749D01* +X867403Y269749D01* +X869645Y267506D01* +X869715Y267454D01* +X869779Y267394D01* +X869829Y267368D01* +X869873Y267335D01* +X869954Y267304D01* +X870032Y267264D01* +X870080Y267256D01* +X870138Y267234D01* +X870286Y267222D01* +X870363Y267209D01* +X872332Y267209D01* +X874386Y266358D01* +X875582Y265162D01* +X875629Y265126D01* +X875669Y265084D01* +X875742Y265041D01* +X875809Y264991D01* +X875864Y264970D01* +X875914Y264940D01* +X875996Y264920D01* +X876075Y264889D01* +X876133Y264885D01* +X876190Y264870D01* +X876274Y264873D01* +X876358Y264866D01* +X876416Y264877D01* +X876474Y264879D01* +X876554Y264905D01* +X876637Y264922D01* +X876689Y264949D01* +X876745Y264967D01* +X876801Y265007D01* +X876889Y265053D01* +X876962Y265122D01* +X877018Y265162D01* +X878214Y266358D01* +X880268Y267209D01* +X882492Y267209D01* +X884546Y266358D01* +X886118Y264786D01* +X886398Y264109D01* +X886442Y264035D01* +X886477Y263957D01* +X886514Y263914D01* +X886543Y263865D01* +X886605Y263806D01* +X886661Y263740D01* +X886708Y263708D01* +X886749Y263669D01* +X886826Y263630D01* +X886897Y263582D01* +X886951Y263565D01* +X887002Y263539D01* +X887086Y263523D01* +X887168Y263497D01* +X887225Y263495D01* +X887281Y263484D01* +X887366Y263492D01* +G37* +%LPC*% +G36* +X47061Y123999D02* +X47061Y123999D01* +X39838Y125935D01* +X33361Y129674D01* +X28074Y134961D01* +X24335Y141438D01* +X22399Y148661D01* +X22399Y156139D01* +X24335Y163362D01* +X28074Y169839D01* +X33361Y175126D01* +X39838Y178865D01* +X47061Y180801D01* +X54539Y180801D01* +X61762Y178865D01* +X68239Y175126D01* +X73526Y169839D01* +X77265Y163362D01* +X79201Y156139D01* +X79201Y148661D01* +X77265Y141438D01* +X73526Y134961D01* +X68239Y129674D01* +X61762Y125935D01* +X54539Y123999D01* +X47061Y123999D01* +G37* +%LPD*% +%LPC*% +G36* +X1317061Y123999D02* +X1317061Y123999D01* +X1309838Y125935D01* +X1303361Y129674D01* +X1298074Y134961D01* +X1294335Y141438D01* +X1292399Y148661D01* +X1292399Y156139D01* +X1294335Y163362D01* +X1298074Y169839D01* +X1303361Y175126D01* +X1309838Y178865D01* +X1317061Y180801D01* +X1324539Y180801D01* +X1331762Y178865D01* +X1338239Y175126D01* +X1343526Y169839D01* +X1347265Y163362D01* +X1349201Y156139D01* +X1349201Y148661D01* +X1347265Y141438D01* +X1343526Y134961D01* +X1338239Y129674D01* +X1331762Y125935D01* +X1324539Y123999D01* +X1317061Y123999D01* +G37* +%LPD*% +G36* +X655378Y49793D02* +X655378Y49793D01* +X655436Y49791D01* +X655518Y49813D01* +X655602Y49825D01* +X655655Y49849D01* +X655711Y49863D01* +X655784Y49906D01* +X655861Y49941D01* +X655906Y49979D01* +X655956Y50009D01* +X656014Y50070D01* +X656078Y50125D01* +X656110Y50173D01* +X656150Y50216D01* +X656189Y50291D01* +X656236Y50361D01* +X656253Y50417D01* +X656280Y50469D01* +X656291Y50537D01* +X656321Y50632D01* +X656324Y50732D01* +X656335Y50800D01* +X656335Y112776D01* +X656328Y112827D01* +X656329Y112847D01* +X656328Y112851D01* +X656329Y112892D01* +X656307Y112974D01* +X656295Y113058D01* +X656272Y113111D01* +X656257Y113167D01* +X656214Y113240D01* +X656179Y113317D01* +X656141Y113362D01* +X656112Y113412D01* +X656050Y113470D01* +X655996Y113534D01* +X655947Y113566D01* +X655904Y113606D01* +X655829Y113645D01* +X655759Y113692D01* +X655703Y113709D01* +X655651Y113736D01* +X655583Y113747D01* +X655488Y113777D01* +X655388Y113780D01* +X655320Y113791D01* +X635968Y113791D01* +X635910Y113783D01* +X635852Y113785D01* +X635770Y113763D01* +X635686Y113751D01* +X635633Y113728D01* +X635577Y113713D01* +X635504Y113670D01* +X635427Y113635D01* +X635382Y113597D01* +X635332Y113568D01* +X635274Y113506D01* +X635210Y113452D01* +X635178Y113403D01* +X635138Y113360D01* +X635099Y113285D01* +X635052Y113215D01* +X635035Y113159D01* +X635008Y113107D01* +X634997Y113039D01* +X634967Y112944D01* +X634964Y112844D01* +X634953Y112776D01* +X634953Y106362D01* +X634282Y105691D01* +X634230Y105621D01* +X634170Y105558D01* +X634144Y105508D01* +X634111Y105464D01* +X634080Y105382D01* +X634040Y105304D01* +X634032Y105257D01* +X634010Y105198D01* +X634005Y105141D01* +X633993Y105140D01* +X633940Y105123D01* +X633885Y105115D01* +X633805Y105080D01* +X633722Y105053D01* +X633683Y105025D01* +X633626Y104999D01* +X633513Y104903D01* +X633449Y104858D01* +X633198Y104607D01* +X626539Y104607D01* +X626453Y104595D01* +X626365Y104592D01* +X626313Y104575D01* +X626258Y104567D01* +X626178Y104532D01* +X626095Y104505D01* +X626056Y104477D01* +X625998Y104451D01* +X625885Y104355D01* +X625821Y104310D01* +X622446Y100935D01* +X622446Y100934D01* +X621582Y100071D01* +X621530Y100001D01* +X621470Y99937D01* +X621444Y99887D01* +X621411Y99843D01* +X621380Y99762D01* +X621340Y99684D01* +X621332Y99636D01* +X621310Y99578D01* +X621298Y99430D01* +X621285Y99353D01* +X621285Y82295D01* +X611018Y82295D01* +X610960Y82287D01* +X610902Y82289D01* +X610820Y82267D01* +X610736Y82255D01* +X610683Y82232D01* +X610627Y82217D01* +X610554Y82174D01* +X610477Y82139D01* +X610432Y82101D01* +X610382Y82072D01* +X610324Y82010D01* +X610260Y81956D01* +X610228Y81907D01* +X610188Y81864D01* +X610149Y81789D01* +X610102Y81719D01* +X610085Y81663D01* +X610058Y81611D01* +X610047Y81543D01* +X610017Y81448D01* +X610014Y81348D01* +X610003Y81280D01* +X610003Y70765D01* +X609052Y69815D01* +X609000Y69745D01* +X608940Y69681D01* +X608914Y69632D01* +X608881Y69587D01* +X608850Y69506D01* +X608810Y69428D01* +X608802Y69380D01* +X608780Y69322D01* +X608775Y69262D01* +X608769Y69242D01* +X608767Y69169D01* +X608755Y69097D01* +X608755Y67917D01* +X608767Y67830D01* +X608770Y67743D01* +X608787Y67690D01* +X608795Y67635D01* +X608830Y67555D01* +X608857Y67472D01* +X608885Y67433D01* +X608911Y67376D01* +X609007Y67263D01* +X609052Y67199D01* +X609473Y66778D01* +X609473Y60222D01* +X609262Y60011D01* +X609210Y59941D01* +X609150Y59877D01* +X609124Y59828D01* +X609091Y59784D01* +X609060Y59702D01* +X609020Y59624D01* +X609012Y59577D01* +X608990Y59518D01* +X608978Y59371D01* +X608965Y59293D01* +X608965Y56308D01* +X608973Y56250D01* +X608971Y56192D01* +X608993Y56110D01* +X609005Y56026D01* +X609028Y55973D01* +X609043Y55917D01* +X609086Y55844D01* +X609121Y55767D01* +X609159Y55722D01* +X609188Y55672D01* +X609250Y55614D01* +X609304Y55550D01* +X609353Y55518D01* +X609396Y55478D01* +X609471Y55439D01* +X609541Y55392D01* +X609597Y55375D01* +X609649Y55348D01* +X609717Y55337D01* +X609812Y55307D01* +X609912Y55304D01* +X609980Y55293D01* +X610217Y55293D01* +X612433Y53077D01* +X612433Y50800D01* +X612441Y50742D01* +X612439Y50684D01* +X612461Y50602D01* +X612473Y50519D01* +X612496Y50465D01* +X612511Y50409D01* +X612554Y50336D01* +X612589Y50259D01* +X612627Y50214D01* +X612656Y50164D01* +X612718Y50106D01* +X612772Y50042D01* +X612821Y50010D01* +X612864Y49970D01* +X612939Y49931D01* +X613009Y49885D01* +X613065Y49867D01* +X613117Y49840D01* +X613185Y49829D01* +X613280Y49799D01* +X613380Y49796D01* +X613448Y49785D01* +X655320Y49785D01* +X655378Y49793D01* +G37* +G36* +X859554Y48599D02* +X859554Y48599D01* +X859556Y48599D01* +X859695Y48619D01* +X859834Y48639D01* +X859836Y48639D01* +X859837Y48639D01* +X859963Y48696D01* +X860094Y48755D01* +X860095Y48756D01* +X860096Y48757D01* +X860203Y48847D01* +X860311Y48938D01* +X860312Y48940D01* +X860313Y48941D01* +X860321Y48954D01* +X860468Y49175D01* +X860477Y49204D01* +X860491Y49225D01* +X861402Y51426D01* +X862974Y52998D01* +X865028Y53849D01* +X867252Y53849D01* +X869306Y52998D01* +X870878Y51426D01* +X871170Y50720D01* +X871200Y50669D01* +X871221Y50615D01* +X871272Y50547D01* +X871315Y50475D01* +X871357Y50435D01* +X871393Y50388D01* +X871460Y50337D01* +X871522Y50280D01* +X871574Y50253D01* +X871620Y50218D01* +X871699Y50188D01* +X871774Y50149D01* +X871832Y50138D01* +X871886Y50117D01* +X871970Y50111D01* +X872053Y50094D01* +X872112Y50099D01* +X872170Y50095D01* +X872237Y50110D01* +X872336Y50119D01* +X872430Y50155D01* +X872497Y50170D01* +X874019Y50801D01* +X885952Y50801D01* +X886010Y50809D01* +X886068Y50807D01* +X886150Y50829D01* +X886234Y50841D01* +X886287Y50864D01* +X886343Y50879D01* +X886416Y50922D01* +X886493Y50957D01* +X886538Y50995D01* +X886588Y51024D01* +X886646Y51086D01* +X886710Y51140D01* +X886742Y51189D01* +X886782Y51232D01* +X886821Y51307D01* +X886868Y51377D01* +X886885Y51433D01* +X886912Y51485D01* +X886923Y51553D01* +X886953Y51648D01* +X886956Y51748D01* +X886967Y51816D01* +X886967Y78312D01* +X888158Y79503D01* +X927942Y79503D01* +X929133Y78312D01* +X929133Y66040D01* +X929141Y65982D01* +X929139Y65924D01* +X929161Y65842D01* +X929173Y65759D01* +X929196Y65705D01* +X929211Y65649D01* +X929254Y65576D01* +X929289Y65499D01* +X929327Y65454D01* +X929356Y65404D01* +X929418Y65346D01* +X929472Y65282D01* +X929521Y65250D01* +X929564Y65210D01* +X929639Y65171D01* +X929709Y65125D01* +X929765Y65107D01* +X929817Y65080D01* +X929885Y65069D01* +X929980Y65039D01* +X930080Y65036D01* +X930148Y65025D01* +X931164Y65025D01* +X931222Y65033D01* +X931280Y65031D01* +X931362Y65053D01* +X931446Y65065D01* +X931499Y65089D01* +X931555Y65103D01* +X931628Y65146D01* +X931705Y65181D01* +X931750Y65219D01* +X931800Y65249D01* +X931858Y65310D01* +X931922Y65365D01* +X931954Y65413D01* +X931994Y65456D01* +X932033Y65531D01* +X932080Y65601D01* +X932097Y65657D01* +X932124Y65709D01* +X932135Y65777D01* +X932165Y65872D01* +X932168Y65972D01* +X932179Y66040D01* +X932179Y128771D01* +X966934Y163525D01* +X966986Y163595D01* +X967046Y163659D01* +X967072Y163709D01* +X967105Y163753D01* +X967136Y163834D01* +X967176Y163912D01* +X967184Y163960D01* +X967206Y164018D01* +X967218Y164166D01* +X967231Y164243D01* +X967231Y164781D01* +X967227Y164810D01* +X967230Y164840D01* +X967207Y164951D01* +X967191Y165063D01* +X967179Y165090D01* +X967174Y165118D01* +X967122Y165219D01* +X967075Y165322D01* +X967056Y165345D01* +X967043Y165371D01* +X966965Y165453D01* +X966892Y165539D01* +X966867Y165555D01* +X966847Y165577D01* +X966749Y165634D01* +X966655Y165697D01* +X966627Y165706D01* +X966602Y165720D01* +X966492Y165748D01* +X966384Y165783D01* +X966354Y165783D01* +X966326Y165791D01* +X966213Y165787D01* +X966100Y165790D01* +X966071Y165782D01* +X966042Y165782D01* +X965934Y165747D01* +X965825Y165718D01* +X965799Y165703D01* +X965771Y165694D01* +X965708Y165649D01* +X965580Y165573D01* +X965537Y165527D01* +X965498Y165499D01* +X865961Y65963D01* +X863878Y63879D01* +X853401Y63879D01* +X853314Y63867D01* +X853227Y63864D01* +X853174Y63847D01* +X853119Y63839D01* +X853040Y63804D01* +X852956Y63777D01* +X852917Y63749D01* +X852860Y63723D01* +X852747Y63627D01* +X852683Y63582D01* +X848432Y59331D01* +X845321Y59331D01* +X845234Y59319D01* +X845147Y59316D01* +X845094Y59299D01* +X845040Y59291D01* +X844960Y59256D01* +X844876Y59229D01* +X844837Y59201D01* +X844780Y59175D01* +X844667Y59079D01* +X844603Y59034D01* +X844139Y58569D01* +X831499Y58569D01* +X829944Y60124D01* +X829944Y64636D01* +X831499Y66191D01* +X833755Y66191D01* +X833813Y66199D01* +X833871Y66197D01* +X833953Y66219D01* +X834037Y66231D01* +X834090Y66254D01* +X834146Y66269D01* +X834219Y66312D01* +X834296Y66347D01* +X834341Y66385D01* +X834391Y66414D01* +X834449Y66476D01* +X834513Y66530D01* +X834545Y66579D01* +X834585Y66622D01* +X834624Y66697D01* +X834671Y66767D01* +X834688Y66823D01* +X834715Y66875D01* +X834726Y66943D01* +X834756Y67038D01* +X834759Y67138D01* +X834770Y67206D01* +X834770Y67448D01* +X834758Y67534D01* +X834755Y67622D01* +X834738Y67674D01* +X834730Y67729D01* +X834695Y67809D01* +X834668Y67892D01* +X834640Y67931D01* +X834614Y67989D01* +X834518Y68102D01* +X834473Y68166D01* +X834309Y68330D01* +X834239Y68382D01* +X834175Y68442D01* +X834125Y68468D01* +X834081Y68501D01* +X834000Y68532D01* +X833922Y68572D01* +X833874Y68580D01* +X833816Y68602D01* +X833668Y68614D01* +X833591Y68627D01* +X830262Y68627D01* +X828758Y70131D01* +X828711Y70166D01* +X828671Y70209D01* +X828598Y70251D01* +X828531Y70302D01* +X828476Y70323D01* +X828426Y70352D01* +X828344Y70373D01* +X828265Y70403D01* +X828207Y70408D01* +X828150Y70423D01* +X828066Y70420D01* +X827982Y70427D01* +X827924Y70415D01* +X827866Y70414D01* +X827786Y70388D01* +X827703Y70371D01* +X827651Y70344D01* +X827595Y70326D01* +X827539Y70286D01* +X827451Y70240D01* +X827378Y70171D01* +X827322Y70131D01* +X825818Y68627D01* +X822489Y68627D01* +X822403Y68615D01* +X822315Y68612D01* +X822263Y68595D01* +X822208Y68587D01* +X822128Y68552D01* +X822045Y68525D01* +X822006Y68497D01* +X821948Y68471D01* +X821835Y68375D01* +X821771Y68330D01* +X821607Y68166D01* +X821555Y68096D01* +X821495Y68032D01* +X821469Y67982D01* +X821436Y67938D01* +X821405Y67857D01* +X821365Y67779D01* +X821357Y67731D01* +X821335Y67673D01* +X821323Y67525D01* +X821310Y67448D01* +X821310Y67206D01* +X821318Y67148D01* +X821316Y67090D01* +X821338Y67008D01* +X821350Y66924D01* +X821373Y66871D01* +X821388Y66815D01* +X821431Y66742D01* +X821466Y66665D01* +X821504Y66620D01* +X821533Y66570D01* +X821595Y66512D01* +X821649Y66448D01* +X821698Y66416D01* +X821741Y66376D01* +X821816Y66337D01* +X821886Y66290D01* +X821942Y66273D01* +X821994Y66246D01* +X822062Y66235D01* +X822157Y66205D01* +X822257Y66202D01* +X822325Y66191D01* +X824581Y66191D01* +X826136Y64636D01* +X826136Y59944D01* +X826144Y59886D01* +X826142Y59828D01* +X826164Y59746D01* +X826176Y59662D01* +X826199Y59609D01* +X826214Y59553D01* +X826257Y59480D01* +X826292Y59403D01* +X826330Y59358D01* +X826359Y59308D01* +X826421Y59250D01* +X826475Y59186D01* +X826524Y59154D01* +X826567Y59114D01* +X826590Y59102D01* +X832203Y53488D01* +X832273Y53436D01* +X832337Y53376D01* +X832386Y53350D01* +X832431Y53317D01* +X832512Y53286D01* +X832590Y53246D01* +X832638Y53238D01* +X832696Y53216D01* +X832844Y53204D01* +X832921Y53191D01* +X844138Y53191D01* +X844603Y52726D01* +X844673Y52674D01* +X844737Y52614D01* +X844786Y52588D01* +X844830Y52555D01* +X844912Y52524D01* +X844990Y52484D01* +X845037Y52476D01* +X845096Y52454D01* +X845244Y52442D01* +X845321Y52429D01* +X850873Y52429D01* +X852671Y50630D01* +X852741Y50578D01* +X852805Y50518D01* +X852855Y50492D01* +X852899Y50459D01* +X852980Y50428D01* +X853058Y50388D01* +X853106Y50380D01* +X853164Y50358D01* +X853312Y50346D01* +X853389Y50333D01* +X856718Y50333D01* +X858155Y48896D01* +X858225Y48844D01* +X858288Y48784D01* +X858338Y48758D01* +X858382Y48725D01* +X858464Y48694D01* +X858542Y48654D01* +X858589Y48646D01* +X858648Y48624D01* +X858795Y48612D01* +X858873Y48599D01* +X859553Y48599D01* +X859554Y48599D01* +G37* +G36* +X1039930Y154717D02* +X1039930Y154717D01* +X1039988Y154715D01* +X1040070Y154737D01* +X1040154Y154749D01* +X1040207Y154772D01* +X1040263Y154787D01* +X1040336Y154830D01* +X1040413Y154865D01* +X1040458Y154903D01* +X1040508Y154932D01* +X1040566Y154994D01* +X1040630Y155048D01* +X1040662Y155097D01* +X1040702Y155140D01* +X1040741Y155215D01* +X1040788Y155285D01* +X1040805Y155341D01* +X1040832Y155393D01* +X1040843Y155461D01* +X1040873Y155556D01* +X1040876Y155656D01* +X1040887Y155724D01* +X1040887Y156079D01* +X1042100Y157292D01* +X1042135Y157339D01* +X1042178Y157379D01* +X1042220Y157452D01* +X1042271Y157519D01* +X1042292Y157574D01* +X1042321Y157624D01* +X1042342Y157706D01* +X1042372Y157785D01* +X1042377Y157843D01* +X1042391Y157900D01* +X1042389Y157984D01* +X1042396Y158068D01* +X1042384Y158126D01* +X1042382Y158184D01* +X1042356Y158264D01* +X1042340Y158347D01* +X1042313Y158399D01* +X1042295Y158455D01* +X1042255Y158511D01* +X1042209Y158599D01* +X1042140Y158672D01* +X1042100Y158728D01* +X1040887Y159941D01* +X1040887Y168779D01* +X1042100Y169992D01* +X1042135Y170039D01* +X1042178Y170079D01* +X1042220Y170152D01* +X1042271Y170219D01* +X1042292Y170274D01* +X1042321Y170324D01* +X1042342Y170406D01* +X1042372Y170485D01* +X1042377Y170543D01* +X1042391Y170600D01* +X1042389Y170684D01* +X1042396Y170768D01* +X1042384Y170826D01* +X1042382Y170884D01* +X1042356Y170964D01* +X1042340Y171047D01* +X1042313Y171099D01* +X1042295Y171155D01* +X1042255Y171211D01* +X1042209Y171299D01* +X1042140Y171372D01* +X1042100Y171428D01* +X1040887Y172641D01* +X1040887Y181479D01* +X1042100Y182692D01* +X1042135Y182739D01* +X1042178Y182779D01* +X1042220Y182852D01* +X1042271Y182919D01* +X1042292Y182974D01* +X1042321Y183024D01* +X1042342Y183106D01* +X1042372Y183185D01* +X1042377Y183243D01* +X1042391Y183300D01* +X1042389Y183384D01* +X1042396Y183468D01* +X1042384Y183526D01* +X1042382Y183584D01* +X1042356Y183664D01* +X1042340Y183747D01* +X1042313Y183799D01* +X1042295Y183855D01* +X1042255Y183911D01* +X1042209Y183999D01* +X1042140Y184072D01* +X1042122Y184096D01* +X1042122Y184098D01* +X1042121Y184098D01* +X1042100Y184128D01* +X1040887Y185341D01* +X1040887Y194179D01* +X1042100Y195392D01* +X1042135Y195439D01* +X1042178Y195479D01* +X1042220Y195552D01* +X1042271Y195619D01* +X1042292Y195674D01* +X1042321Y195724D01* +X1042342Y195806D01* +X1042372Y195885D01* +X1042377Y195943D01* +X1042391Y196000D01* +X1042389Y196084D01* +X1042396Y196168D01* +X1042384Y196226D01* +X1042382Y196284D01* +X1042356Y196364D01* +X1042340Y196447D01* +X1042313Y196499D01* +X1042295Y196555D01* +X1042255Y196611D01* +X1042209Y196699D01* +X1042140Y196772D01* +X1042100Y196828D01* +X1040887Y198041D01* +X1040887Y198324D01* +X1040879Y198382D01* +X1040881Y198440D01* +X1040859Y198522D01* +X1040847Y198606D01* +X1040824Y198659D01* +X1040809Y198715D01* +X1040766Y198788D01* +X1040731Y198865D01* +X1040693Y198910D01* +X1040664Y198960D01* +X1040602Y199018D01* +X1040548Y199082D01* +X1040499Y199114D01* +X1040456Y199154D01* +X1040381Y199193D01* +X1040311Y199240D01* +X1040255Y199257D01* +X1040203Y199284D01* +X1040135Y199295D01* +X1040040Y199325D01* +X1039940Y199328D01* +X1039872Y199339D01* +X1019411Y199339D01* +X1019325Y199327D01* +X1019237Y199324D01* +X1019185Y199307D01* +X1019130Y199299D01* +X1019050Y199264D01* +X1018967Y199237D01* +X1018928Y199209D01* +X1018870Y199183D01* +X1018757Y199087D01* +X1018693Y199042D01* +X1009186Y189535D01* +X1009134Y189465D01* +X1009074Y189401D01* +X1009048Y189351D01* +X1009015Y189307D01* +X1008984Y189226D01* +X1008944Y189148D01* +X1008936Y189100D01* +X1008914Y189042D01* +X1008902Y188894D01* +X1008889Y188817D01* +X1008889Y186848D01* +X1008038Y184794D01* +X1006466Y183222D01* +X1004412Y182371D01* +X1002188Y182371D01* +X1000134Y183222D01* +X998562Y184794D01* +X997711Y186848D01* +X997711Y189072D01* +X998562Y191126D01* +X1000134Y192698D01* +X1002188Y193549D01* +X1004157Y193549D01* +X1004243Y193561D01* +X1004331Y193564D01* +X1004383Y193581D01* +X1004438Y193589D01* +X1004518Y193624D01* +X1004601Y193651D01* +X1004640Y193679D01* +X1004698Y193705D01* +X1004811Y193801D01* +X1004875Y193846D01* +X1016465Y205437D01* +X1039872Y205437D01* +X1039930Y205445D01* +X1039988Y205443D01* +X1040070Y205465D01* +X1040154Y205477D01* +X1040207Y205500D01* +X1040263Y205515D01* +X1040336Y205558D01* +X1040413Y205593D01* +X1040458Y205631D01* +X1040508Y205660D01* +X1040566Y205722D01* +X1040630Y205776D01* +X1040662Y205825D01* +X1040702Y205868D01* +X1040741Y205943D01* +X1040788Y206013D01* +X1040805Y206069D01* +X1040832Y206121D01* +X1040843Y206189D01* +X1040873Y206284D01* +X1040876Y206384D01* +X1040887Y206452D01* +X1040887Y206879D01* +X1042100Y208092D01* +X1042135Y208139D01* +X1042178Y208179D01* +X1042220Y208252D01* +X1042271Y208319D01* +X1042292Y208374D01* +X1042321Y208424D01* +X1042342Y208506D01* +X1042372Y208585D01* +X1042377Y208643D01* +X1042391Y208700D01* +X1042389Y208784D01* +X1042396Y208868D01* +X1042384Y208926D01* +X1042382Y208984D01* +X1042356Y209064D01* +X1042340Y209147D01* +X1042313Y209199D01* +X1042295Y209255D01* +X1042255Y209311D01* +X1042209Y209399D01* +X1042153Y209459D01* +X1042140Y209479D01* +X1042124Y209495D01* +X1042100Y209528D01* +X1040887Y210741D01* +X1040887Y211096D01* +X1040879Y211154D01* +X1040881Y211212D01* +X1040859Y211294D01* +X1040847Y211378D01* +X1040824Y211431D01* +X1040809Y211487D01* +X1040766Y211560D01* +X1040731Y211637D01* +X1040693Y211682D01* +X1040664Y211732D01* +X1040602Y211790D01* +X1040548Y211854D01* +X1040499Y211886D01* +X1040456Y211926D01* +X1040381Y211965D01* +X1040311Y212012D01* +X1040255Y212029D01* +X1040203Y212056D01* +X1040135Y212067D01* +X1040040Y212097D01* +X1039940Y212100D01* +X1039872Y212111D01* +X1026261Y212111D01* +X1026175Y212099D01* +X1026087Y212096D01* +X1026035Y212079D01* +X1025980Y212071D01* +X1025908Y212039D01* +X1012459Y212039D01* +X1012372Y212027D01* +X1012285Y212024D01* +X1012232Y212007D01* +X1012177Y211999D01* +X1012097Y211964D01* +X1012014Y211937D01* +X1011975Y211909D01* +X1011918Y211883D01* +X1011805Y211787D01* +X1011741Y211742D01* +X972421Y172422D01* +X972403Y172398D01* +X972381Y172379D01* +X972318Y172285D01* +X972250Y172195D01* +X972239Y172167D01* +X972223Y172143D01* +X972189Y172035D01* +X972149Y171929D01* +X972146Y171900D01* +X972137Y171872D01* +X972134Y171758D01* +X972125Y171646D01* +X972131Y171617D01* +X972130Y171588D01* +X972159Y171478D01* +X972181Y171367D01* +X972195Y171341D01* +X972202Y171313D01* +X972260Y171215D01* +X972312Y171115D01* +X972332Y171093D01* +X972347Y171068D01* +X972430Y170991D01* +X972508Y170909D01* +X972533Y170894D01* +X972554Y170874D01* +X972655Y170822D01* +X972753Y170765D01* +X972781Y170758D01* +X972808Y170744D01* +X972885Y170731D01* +X973029Y170695D01* +X973091Y170697D01* +X973139Y170689D01* +X973932Y170689D01* +X975986Y169838D01* +X977558Y168266D01* +X978469Y166066D01* +X978528Y165966D01* +X978581Y165865D01* +X978600Y165845D01* +X978614Y165821D01* +X978697Y165742D01* +X978776Y165659D01* +X978800Y165645D01* +X978820Y165626D01* +X978923Y165573D01* +X979022Y165515D01* +X979049Y165508D01* +X979073Y165495D01* +X979186Y165473D01* +X979297Y165445D01* +X979325Y165446D01* +X979352Y165440D01* +X979467Y165450D01* +X979581Y165454D01* +X979608Y165462D01* +X979635Y165465D01* +X979742Y165506D01* +X979852Y165541D01* +X979872Y165556D01* +X979901Y165567D01* +X980112Y165727D01* +X980125Y165736D01* +X984062Y169673D01* +X988373Y169673D01* +X988402Y169677D01* +X988431Y169674D01* +X988542Y169697D01* +X988654Y169713D01* +X988681Y169725D01* +X988710Y169730D01* +X988810Y169783D01* +X988914Y169829D01* +X988936Y169848D01* +X988962Y169861D01* +X989044Y169939D01* +X989131Y170012D01* +X989147Y170037D01* +X989168Y170057D01* +X989225Y170155D01* +X989288Y170249D01* +X989297Y170277D01* +X989312Y170302D01* +X989340Y170412D01* +X989374Y170520D01* +X989375Y170550D01* +X989382Y170578D01* +X989378Y170691D01* +X989381Y170804D01* +X989374Y170833D01* +X989373Y170862D01* +X989338Y170970D01* +X989309Y171079D01* +X989294Y171105D01* +X989285Y171133D01* +X989240Y171197D01* +X989164Y171324D01* +X989118Y171367D01* +X989090Y171406D01* +X988402Y172094D01* +X987551Y174148D01* +X987551Y176372D01* +X988402Y178426D01* +X989974Y179998D01* +X992028Y180849D01* +X994252Y180849D01* +X996306Y179998D01* +X997878Y178426D01* +X998729Y176372D01* +X998729Y174403D01* +X998741Y174317D01* +X998744Y174229D01* +X998761Y174177D01* +X998769Y174122D01* +X998804Y174042D01* +X998831Y173959D01* +X998859Y173920D01* +X998885Y173862D01* +X998981Y173749D01* +X999026Y173685D01* +X1017705Y155006D01* +X1017775Y154954D01* +X1017839Y154894D01* +X1017889Y154868D01* +X1017933Y154835D01* +X1018014Y154804D01* +X1018092Y154764D01* +X1018140Y154756D01* +X1018198Y154734D01* +X1018346Y154722D01* +X1018423Y154709D01* +X1039872Y154709D01* +X1039930Y154717D01* +G37* +%LPC*% +G36* +X443658Y37337D02* +X443658Y37337D01* +X442467Y38528D01* +X442467Y78312D01* +X443658Y79503D01* +X483442Y79503D01* +X484633Y78312D01* +X484633Y38528D01* +X483442Y37337D01* +X443658Y37337D01* +G37* +%LPD*% +G36* +X982137Y197437D02* +X982137Y197437D01* +X982250Y197434D01* +X982279Y197441D01* +X982308Y197442D01* +X982416Y197477D01* +X982525Y197505D01* +X982551Y197520D01* +X982579Y197529D01* +X982642Y197575D01* +X982770Y197651D01* +X982813Y197696D01* +X982852Y197724D01* +X1028736Y243609D01* +X1039872Y243609D01* +X1039930Y243617D01* +X1039988Y243615D01* +X1040070Y243637D01* +X1040154Y243649D01* +X1040207Y243672D01* +X1040263Y243687D01* +X1040336Y243730D01* +X1040413Y243765D01* +X1040458Y243803D01* +X1040508Y243832D01* +X1040566Y243894D01* +X1040630Y243948D01* +X1040662Y243997D01* +X1040702Y244040D01* +X1040741Y244115D01* +X1040788Y244185D01* +X1040805Y244241D01* +X1040832Y244293D01* +X1040843Y244361D01* +X1040873Y244456D01* +X1040876Y244556D01* +X1040887Y244624D01* +X1040887Y244979D01* +X1042100Y246192D01* +X1042135Y246239D01* +X1042178Y246279D01* +X1042220Y246352D01* +X1042271Y246419D01* +X1042292Y246474D01* +X1042321Y246524D01* +X1042342Y246606D01* +X1042372Y246685D01* +X1042377Y246743D01* +X1042391Y246800D01* +X1042389Y246884D01* +X1042396Y246968D01* +X1042384Y247026D01* +X1042382Y247084D01* +X1042356Y247164D01* +X1042340Y247247D01* +X1042313Y247299D01* +X1042295Y247355D01* +X1042255Y247411D01* +X1042209Y247499D01* +X1042140Y247572D01* +X1042100Y247628D01* +X1040887Y248841D01* +X1040887Y249124D01* +X1040879Y249182D01* +X1040881Y249240D01* +X1040859Y249322D01* +X1040847Y249406D01* +X1040824Y249459D01* +X1040809Y249515D01* +X1040766Y249588D01* +X1040731Y249665D01* +X1040693Y249710D01* +X1040664Y249760D01* +X1040602Y249818D01* +X1040548Y249882D01* +X1040499Y249914D01* +X1040456Y249954D01* +X1040381Y249993D01* +X1040311Y250040D01* +X1040255Y250057D01* +X1040203Y250084D01* +X1040135Y250095D01* +X1040040Y250125D01* +X1039940Y250128D01* +X1039872Y250139D01* +X982691Y250139D01* +X982604Y250127D01* +X982517Y250124D01* +X982464Y250107D01* +X982409Y250099D01* +X982329Y250064D01* +X982246Y250037D01* +X982207Y250009D01* +X982150Y249983D01* +X982037Y249887D01* +X981973Y249842D01* +X981416Y249285D01* +X981364Y249215D01* +X981304Y249151D01* +X981278Y249102D01* +X981245Y249058D01* +X981214Y248976D01* +X981174Y248898D01* +X981166Y248851D01* +X981144Y248792D01* +X981132Y248645D01* +X981119Y248567D01* +X981119Y198442D01* +X981123Y198413D01* +X981120Y198384D01* +X981143Y198273D01* +X981159Y198161D01* +X981171Y198134D01* +X981176Y198105D01* +X981228Y198005D01* +X981275Y197901D01* +X981294Y197879D01* +X981307Y197853D01* +X981385Y197771D01* +X981458Y197684D01* +X981483Y197668D01* +X981503Y197647D01* +X981601Y197590D01* +X981695Y197527D01* +X981723Y197518D01* +X981748Y197503D01* +X981858Y197475D01* +X981966Y197441D01* +X981996Y197440D01* +X982024Y197433D01* +X982137Y197437D01* +G37* +G36* +X1085597Y172310D02* +X1085597Y172310D01* +X1085712Y172307D01* +X1085739Y172314D01* +X1085767Y172314D01* +X1085876Y172349D01* +X1085987Y172378D01* +X1086011Y172393D01* +X1086038Y172401D01* +X1086133Y172465D01* +X1086232Y172524D01* +X1086251Y172544D01* +X1086274Y172559D01* +X1086348Y172647D01* +X1086426Y172731D01* +X1086439Y172756D01* +X1086457Y172777D01* +X1086503Y172882D01* +X1086556Y172984D01* +X1086560Y173009D01* +X1086572Y173037D01* +X1086609Y173300D01* +X1086611Y173315D01* +X1086611Y235157D01* +X1086599Y235243D01* +X1086596Y235331D01* +X1086579Y235383D01* +X1086571Y235438D01* +X1086536Y235518D01* +X1086509Y235601D01* +X1086481Y235640D01* +X1086455Y235698D01* +X1086359Y235811D01* +X1086314Y235875D01* +X1072731Y249457D01* +X1072731Y256657D01* +X1072719Y256743D01* +X1072716Y256831D01* +X1072699Y256883D01* +X1072691Y256938D01* +X1072656Y257018D01* +X1072629Y257101D01* +X1072601Y257140D01* +X1072575Y257198D01* +X1072479Y257311D01* +X1072434Y257375D01* +X1067195Y262614D01* +X1067125Y262666D01* +X1067061Y262726D01* +X1067011Y262752D01* +X1066967Y262785D01* +X1066886Y262816D01* +X1066808Y262856D01* +X1066760Y262864D01* +X1066702Y262886D01* +X1066554Y262898D01* +X1066477Y262911D01* +X1065968Y262911D01* +X1065910Y262903D01* +X1065852Y262905D01* +X1065770Y262883D01* +X1065686Y262871D01* +X1065633Y262848D01* +X1065577Y262833D01* +X1065504Y262790D01* +X1065427Y262755D01* +X1065382Y262717D01* +X1065332Y262688D01* +X1065274Y262626D01* +X1065210Y262572D01* +X1065178Y262523D01* +X1065138Y262480D01* +X1065099Y262405D01* +X1065052Y262335D01* +X1065035Y262279D01* +X1065008Y262227D01* +X1064997Y262159D01* +X1064967Y262064D01* +X1064964Y261964D01* +X1064953Y261896D01* +X1064953Y261541D01* +X1063740Y260328D01* +X1063706Y260283D01* +X1063704Y260281D01* +X1063703Y260280D01* +X1063662Y260241D01* +X1063620Y260168D01* +X1063569Y260101D01* +X1063549Y260048D01* +X1063547Y260045D01* +X1063546Y260042D01* +X1063519Y259996D01* +X1063498Y259914D01* +X1063468Y259835D01* +X1063463Y259781D01* +X1063461Y259774D01* +X1063461Y259768D01* +X1063449Y259720D01* +X1063451Y259636D01* +X1063444Y259552D01* +X1063454Y259503D01* +X1063454Y259489D01* +X1063456Y259479D01* +X1063458Y259436D01* +X1063484Y259356D01* +X1063500Y259273D01* +X1063520Y259235D01* +X1063525Y259214D01* +X1063534Y259200D01* +X1063545Y259165D01* +X1063585Y259109D01* +X1063631Y259021D01* +X1063656Y258994D01* +X1063671Y258970D01* +X1063713Y258931D01* +X1063740Y258892D01* +X1064953Y257679D01* +X1064953Y248841D01* +X1063740Y247628D01* +X1063705Y247581D01* +X1063662Y247541D01* +X1063620Y247468D01* +X1063569Y247401D01* +X1063548Y247346D01* +X1063519Y247296D01* +X1063498Y247214D01* +X1063468Y247135D01* +X1063463Y247077D01* +X1063449Y247020D01* +X1063451Y246936D01* +X1063444Y246852D01* +X1063456Y246794D01* +X1063458Y246736D01* +X1063484Y246656D01* +X1063500Y246573D01* +X1063527Y246521D01* +X1063545Y246465D01* +X1063585Y246409D01* +X1063631Y246321D01* +X1063700Y246248D01* +X1063740Y246192D01* +X1064953Y244979D01* +X1064953Y236141D01* +X1063740Y234928D01* +X1063727Y234911D01* +X1063714Y234900D01* +X1063697Y234874D01* +X1063662Y234841D01* +X1063620Y234768D01* +X1063569Y234701D01* +X1063548Y234646D01* +X1063519Y234596D01* +X1063498Y234514D01* +X1063468Y234435D01* +X1063463Y234377D01* +X1063449Y234320D01* +X1063451Y234236D01* +X1063444Y234152D01* +X1063456Y234094D01* +X1063458Y234036D01* +X1063484Y233956D01* +X1063500Y233873D01* +X1063527Y233821D01* +X1063545Y233765D01* +X1063585Y233709D01* +X1063631Y233621D01* +X1063700Y233548D01* +X1063740Y233492D01* +X1064953Y232279D01* +X1064953Y223441D01* +X1063740Y222228D01* +X1063705Y222181D01* +X1063662Y222141D01* +X1063620Y222068D01* +X1063569Y222001D01* +X1063548Y221946D01* +X1063519Y221896D01* +X1063498Y221814D01* +X1063468Y221735D01* +X1063463Y221677D01* +X1063449Y221620D01* +X1063451Y221536D01* +X1063444Y221452D01* +X1063456Y221394D01* +X1063458Y221336D01* +X1063484Y221256D01* +X1063500Y221173D01* +X1063527Y221121D01* +X1063545Y221065D01* +X1063585Y221009D01* +X1063631Y220921D01* +X1063700Y220848D01* +X1063740Y220792D01* +X1064953Y219579D01* +X1064953Y210741D01* +X1063740Y209528D01* +X1063705Y209481D01* +X1063662Y209441D01* +X1063620Y209368D01* +X1063569Y209301D01* +X1063548Y209246D01* +X1063519Y209196D01* +X1063498Y209114D01* +X1063468Y209035D01* +X1063463Y208977D01* +X1063449Y208920D01* +X1063451Y208836D01* +X1063444Y208752D01* +X1063456Y208694D01* +X1063458Y208636D01* +X1063484Y208556D01* +X1063500Y208473D01* +X1063527Y208421D01* +X1063545Y208365D01* +X1063585Y208309D01* +X1063631Y208221D01* +X1063700Y208148D01* +X1063740Y208092D01* +X1064953Y206879D01* +X1064953Y198041D01* +X1063740Y196828D01* +X1063705Y196781D01* +X1063662Y196741D01* +X1063620Y196668D01* +X1063569Y196601D01* +X1063548Y196546D01* +X1063519Y196496D01* +X1063498Y196414D01* +X1063468Y196335D01* +X1063463Y196277D01* +X1063449Y196220D01* +X1063451Y196136D01* +X1063444Y196052D01* +X1063456Y195994D01* +X1063458Y195936D01* +X1063484Y195856D01* +X1063500Y195773D01* +X1063527Y195721D01* +X1063545Y195665D01* +X1063585Y195609D01* +X1063631Y195521D01* +X1063700Y195448D01* +X1063740Y195392D01* +X1064953Y194179D01* +X1064953Y193824D01* +X1064961Y193766D01* +X1064959Y193708D01* +X1064981Y193626D01* +X1064993Y193542D01* +X1065016Y193489D01* +X1065031Y193433D01* +X1065074Y193360D01* +X1065109Y193283D01* +X1065147Y193238D01* +X1065176Y193188D01* +X1065238Y193130D01* +X1065292Y193066D01* +X1065341Y193034D01* +X1065384Y192994D01* +X1065459Y192955D01* +X1065529Y192908D01* +X1065585Y192891D01* +X1065637Y192864D01* +X1065705Y192853D01* +X1065800Y192823D01* +X1065900Y192820D01* +X1065968Y192809D01* +X1068649Y192809D01* +X1068650Y192809D01* +X1068652Y192809D01* +X1068793Y192829D01* +X1068930Y192849D01* +X1068932Y192849D01* +X1068933Y192849D01* +X1069063Y192908D01* +X1069190Y192965D01* +X1069191Y192966D01* +X1069192Y192967D01* +X1069302Y193060D01* +X1069407Y193148D01* +X1069408Y193150D01* +X1069409Y193151D01* +X1069417Y193164D01* +X1069564Y193385D01* +X1069574Y193414D01* +X1069587Y193436D01* +X1069682Y193666D01* +X1071254Y195238D01* +X1073308Y196089D01* +X1075532Y196089D01* +X1077586Y195238D01* +X1079158Y193666D01* +X1080009Y191612D01* +X1080009Y189388D01* +X1079158Y187334D01* +X1077586Y185762D01* +X1075958Y185088D01* +X1075933Y185073D01* +X1075905Y185064D01* +X1075811Y185001D01* +X1075713Y184943D01* +X1075693Y184922D01* +X1075669Y184906D01* +X1075596Y184819D01* +X1075518Y184737D01* +X1075505Y184711D01* +X1075486Y184688D01* +X1075440Y184585D01* +X1075388Y184484D01* +X1075382Y184455D01* +X1075370Y184428D01* +X1075355Y184316D01* +X1075333Y184205D01* +X1075336Y184176D01* +X1075332Y184147D01* +X1075348Y184035D01* +X1075357Y183922D01* +X1075368Y183895D01* +X1075372Y183866D01* +X1075419Y183762D01* +X1075459Y183657D01* +X1075477Y183633D01* +X1075489Y183606D01* +X1075563Y183520D01* +X1075631Y183430D01* +X1075655Y183412D01* +X1075674Y183390D01* +X1075740Y183348D01* +X1075859Y183260D01* +X1075917Y183238D01* +X1075958Y183212D01* +X1077586Y182538D01* +X1079158Y180966D01* +X1080009Y178912D01* +X1080009Y176688D01* +X1079158Y174634D01* +X1079116Y174592D01* +X1079064Y174523D01* +X1079005Y174461D01* +X1078979Y174410D01* +X1078945Y174365D01* +X1078914Y174285D01* +X1078875Y174208D01* +X1078864Y174152D01* +X1078844Y174099D01* +X1078836Y174014D01* +X1078820Y173929D01* +X1078825Y173873D01* +X1078820Y173816D01* +X1078837Y173732D01* +X1078844Y173646D01* +X1078865Y173593D01* +X1078876Y173537D01* +X1078916Y173461D01* +X1078946Y173381D01* +X1078981Y173335D01* +X1079007Y173285D01* +X1079066Y173223D01* +X1079118Y173154D01* +X1079163Y173120D01* +X1079203Y173079D01* +X1079277Y173035D01* +X1079346Y172984D01* +X1079399Y172964D01* +X1079448Y172935D01* +X1079531Y172914D01* +X1079612Y172883D01* +X1079668Y172879D01* +X1079723Y172865D01* +X1079809Y172868D01* +X1079895Y172861D01* +X1079943Y172872D01* +X1080008Y172874D01* +X1080146Y172919D01* +X1080222Y172936D01* +X1080928Y173229D01* +X1083152Y173229D01* +X1085207Y172377D01* +X1085319Y172349D01* +X1085428Y172314D01* +X1085456Y172313D01* +X1085483Y172306D01* +X1085597Y172310D01* +G37* +%LPC*% +G36* +X72319Y69389D02* +X72319Y69389D01* +X65148Y72360D01* +X59660Y77848D01* +X56689Y85019D01* +X56689Y92781D01* +X59660Y99952D01* +X65148Y105440D01* +X72319Y108411D01* +X80081Y108411D01* +X87252Y105440D01* +X92740Y99952D01* +X95711Y92781D01* +X95711Y85019D01* +X92740Y77848D01* +X87252Y72360D01* +X80081Y69389D01* +X72319Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y69389D02* +X1291519Y69389D01* +X1284348Y72360D01* +X1278860Y77848D01* +X1275889Y85019D01* +X1275889Y92781D01* +X1278860Y99952D01* +X1284348Y105440D01* +X1291519Y108411D01* +X1299281Y108411D01* +X1306452Y105440D01* +X1311940Y99952D01* +X1314911Y92781D01* +X1314911Y85019D01* +X1311940Y77848D01* +X1306452Y72360D01* +X1299281Y69389D01* +X1291519Y69389D01* +G37* +%LPD*% +%LPC*% +G36* +X1291519Y12239D02* +X1291519Y12239D01* +X1284348Y15210D01* +X1278860Y20698D01* +X1275889Y27869D01* +X1275889Y35631D01* +X1278860Y42802D01* +X1284348Y48290D01* +X1291519Y51261D01* +X1299281Y51261D01* +X1306452Y48290D01* +X1311940Y42802D01* +X1314911Y35631D01* +X1314911Y27869D01* +X1311940Y20698D01* +X1306452Y15210D01* +X1299281Y12239D01* +X1291519Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X72319Y12239D02* +X72319Y12239D01* +X65148Y15210D01* +X59660Y20698D01* +X56689Y27869D01* +X56689Y35631D01* +X59660Y42802D01* +X65148Y48290D01* +X72319Y51261D01* +X80081Y51261D01* +X87252Y48290D01* +X92740Y42802D01* +X95711Y35631D01* +X95711Y27869D01* +X92740Y20698D01* +X87252Y15210D01* +X80081Y12239D01* +X72319Y12239D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y230697D02* +X224711Y230697D01* +X217543Y233666D01* +X212058Y239152D01* +X209089Y246319D01* +X209089Y254077D01* +X212058Y261244D01* +X217543Y266730D01* +X224711Y269699D01* +X232469Y269699D01* +X239636Y266730D01* +X245121Y261244D01* +X248090Y254077D01* +X248090Y246319D01* +X245121Y239152D01* +X239636Y233666D01* +X232469Y230697D01* +X224711Y230697D01* +G37* +%LPD*% +%LPC*% +G36* +X224711Y116397D02* +X224711Y116397D01* +X217543Y119366D01* +X212058Y124852D01* +X209089Y132019D01* +X209089Y139777D01* +X212058Y146944D01* +X217543Y152430D01* +X224711Y155399D01* +X232469Y155399D01* +X239636Y152430D01* +X245121Y146944D01* +X248090Y139777D01* +X248090Y132019D01* +X245121Y124852D01* +X239636Y119366D01* +X232469Y116397D01* +X224711Y116397D01* +G37* +%LPD*% +%LPC*% +G36* +X753268Y121411D02* +X753268Y121411D01* +X751214Y122262D01* +X749642Y123834D01* +X748791Y125888D01* +X748791Y128112D01* +X749642Y130166D01* +X751034Y131558D01* +X751086Y131627D01* +X751146Y131691D01* +X751172Y131741D01* +X751205Y131785D01* +X751236Y131867D01* +X751276Y131944D01* +X751284Y131992D01* +X751306Y132050D01* +X751318Y132198D01* +X751331Y132275D01* +X751331Y132429D01* +X751327Y132458D01* +X751330Y132487D01* +X751307Y132598D01* +X751291Y132710D01* +X751279Y132737D01* +X751274Y132766D01* +X751221Y132866D01* +X751175Y132970D01* +X751156Y132992D01* +X751143Y133018D01* +X751065Y133100D01* +X750992Y133187D01* +X750967Y133203D01* +X750947Y133224D01* +X750849Y133281D01* +X750755Y133344D01* +X750727Y133353D01* +X750702Y133368D01* +X750592Y133396D01* +X750484Y133430D01* +X750454Y133431D01* +X750426Y133438D01* +X750313Y133434D01* +X750200Y133437D01* +X750171Y133430D01* +X750142Y133429D01* +X750034Y133394D01* +X749925Y133365D01* +X749899Y133351D01* +X749871Y133341D01* +X749807Y133296D01* +X749680Y133220D01* +X749637Y133175D01* +X749598Y133147D01* +X748603Y132151D01* +X744401Y132151D01* +X744315Y132139D01* +X744227Y132136D01* +X744175Y132119D01* +X744120Y132111D01* +X744040Y132076D01* +X743957Y132049D01* +X743918Y132021D01* +X743861Y131995D01* +X743747Y131899D01* +X743684Y131854D01* +X741747Y129917D01* +X735293Y129917D01* +X733487Y131723D01* +X733487Y138677D01* +X733792Y138982D01* +X733828Y139029D01* +X733870Y139069D01* +X733913Y139142D01* +X733963Y139209D01* +X733984Y139264D01* +X734014Y139314D01* +X734035Y139396D01* +X734065Y139475D01* +X734069Y139533D01* +X734084Y139590D01* +X734081Y139674D01* +X734088Y139758D01* +X734077Y139816D01* +X734075Y139874D01* +X734049Y139954D01* +X734032Y140037D01* +X734005Y140089D01* +X733987Y140145D01* +X733947Y140201D01* +X733901Y140289D01* +X733833Y140362D01* +X733792Y140418D01* +X733487Y140723D01* +X733487Y147677D01* +X735461Y149651D01* +X735492Y149677D01* +X735542Y149706D01* +X735600Y149768D01* +X735664Y149822D01* +X735696Y149871D01* +X735736Y149914D01* +X735775Y149989D01* +X735822Y150059D01* +X735839Y150115D01* +X735866Y150167D01* +X735877Y150235D01* +X735907Y150330D01* +X735910Y150430D01* +X735921Y150498D01* +X735921Y154587D01* +X735909Y154674D01* +X735906Y154761D01* +X735889Y154814D01* +X735881Y154869D01* +X735846Y154949D01* +X735819Y155032D01* +X735791Y155071D01* +X735765Y155128D01* +X735669Y155241D01* +X735624Y155305D01* +X734187Y156742D01* +X734187Y163298D01* +X735942Y165053D01* +X741998Y165053D01* +X743502Y163549D01* +X743549Y163514D01* +X743589Y163471D01* +X743662Y163429D01* +X743729Y163378D01* +X743784Y163357D01* +X743834Y163328D01* +X743916Y163307D01* +X743995Y163277D01* +X744053Y163272D01* +X744110Y163257D01* +X744194Y163260D01* +X744278Y163253D01* +X744336Y163265D01* +X744394Y163266D01* +X744474Y163292D01* +X744557Y163309D01* +X744609Y163336D01* +X744665Y163354D01* +X744721Y163394D01* +X744809Y163440D01* +X744882Y163509D01* +X744938Y163549D01* +X746442Y165053D01* +X752498Y165053D01* +X753826Y163725D01* +X753872Y163690D01* +X753913Y163648D01* +X753986Y163605D01* +X754053Y163554D01* +X754108Y163533D01* +X754158Y163504D01* +X754240Y163483D01* +X754319Y163453D01* +X754377Y163448D01* +X754434Y163434D01* +X754518Y163436D01* +X754602Y163429D01* +X754659Y163441D01* +X754718Y163443D01* +X754798Y163469D01* +X754881Y163485D01* +X754933Y163512D01* +X754988Y163530D01* +X755044Y163570D01* +X755133Y163616D01* +X755205Y163685D01* +X755261Y163725D01* +X756294Y164758D01* +X758348Y165609D01* +X760572Y165609D01* +X762626Y164758D01* +X764198Y163186D01* +X765049Y161132D01* +X765049Y158908D01* +X764198Y156854D01* +X762626Y155282D01* +X760572Y154431D01* +X758348Y154431D01* +X756294Y155282D01* +X755261Y156315D01* +X755215Y156350D01* +X755174Y156392D01* +X755102Y156435D01* +X755034Y156486D01* +X754980Y156507D01* +X754929Y156536D01* +X754848Y156557D01* +X754769Y156587D01* +X754710Y156592D01* +X754654Y156606D01* +X754569Y156604D01* +X754485Y156611D01* +X754428Y156599D01* +X754370Y156597D01* +X754289Y156571D01* +X754207Y156555D01* +X754155Y156528D01* +X754099Y156510D01* +X754043Y156470D01* +X753954Y156424D01* +X753882Y156355D01* +X753826Y156315D01* +X752498Y154987D01* +X746442Y154987D01* +X744938Y156491D01* +X744891Y156526D01* +X744851Y156569D01* +X744778Y156611D01* +X744711Y156662D01* +X744656Y156683D01* +X744606Y156712D01* +X744524Y156733D01* +X744445Y156763D01* +X744387Y156768D01* +X744330Y156783D01* +X744246Y156780D01* +X744162Y156787D01* +X744104Y156775D01* +X744046Y156774D01* +X743966Y156748D01* +X743883Y156731D01* +X743831Y156704D01* +X743775Y156686D01* +X743719Y156646D01* +X743631Y156600D01* +X743558Y156531D01* +X743502Y156491D01* +X742316Y155305D01* +X742263Y155235D01* +X742204Y155172D01* +X742178Y155122D01* +X742145Y155078D01* +X742114Y154996D01* +X742074Y154918D01* +X742066Y154871D01* +X742044Y154812D01* +X742032Y154665D01* +X742019Y154587D01* +X742019Y149631D01* +X742031Y149545D01* +X742034Y149457D01* +X742051Y149405D01* +X742059Y149350D01* +X742094Y149270D01* +X742121Y149187D01* +X742149Y149148D01* +X742175Y149091D01* +X742271Y148977D01* +X742316Y148914D01* +X743553Y147677D01* +X743553Y140723D01* +X743248Y140418D01* +X743212Y140371D01* +X743170Y140331D01* +X743127Y140258D01* +X743077Y140191D01* +X743056Y140136D01* +X743026Y140086D01* +X743006Y140004D01* +X742975Y139925D01* +X742971Y139867D01* +X742956Y139810D01* +X742959Y139726D01* +X742952Y139642D01* +X742963Y139584D01* +X742965Y139526D01* +X742991Y139446D01* +X743008Y139363D01* +X743035Y139311D01* +X743053Y139255D01* +X743093Y139199D01* +X743139Y139111D01* +X743208Y139038D01* +X743248Y138982D01* +X743684Y138546D01* +X743753Y138494D01* +X743817Y138434D01* +X743867Y138408D01* +X743911Y138375D01* +X743992Y138344D01* +X744070Y138304D01* +X744118Y138296D01* +X744176Y138274D01* +X744324Y138262D01* +X744401Y138249D01* +X745657Y138249D01* +X745743Y138261D01* +X745831Y138264D01* +X745883Y138281D01* +X745938Y138289D01* +X746018Y138324D01* +X746101Y138351D01* +X746140Y138379D01* +X746198Y138405D01* +X746311Y138501D01* +X746375Y138546D01* +X747897Y140069D01* +X761372Y140069D01* +X761430Y140077D01* +X761488Y140075D01* +X761570Y140097D01* +X761654Y140109D01* +X761707Y140132D01* +X761763Y140147D01* +X761836Y140190D01* +X761913Y140225D01* +X761958Y140263D01* +X762008Y140292D01* +X762066Y140354D01* +X762130Y140408D01* +X762162Y140457D01* +X762202Y140500D01* +X762241Y140575D01* +X762288Y140645D01* +X762305Y140701D01* +X762332Y140753D01* +X762343Y140821D01* +X762373Y140916D01* +X762376Y141016D01* +X762387Y141084D01* +X762387Y143427D01* +X765013Y146053D01* +X784827Y146053D01* +X787453Y143427D01* +X787453Y130613D01* +X784827Y127987D01* +X765013Y127987D01* +X762387Y130613D01* +X762387Y132956D01* +X762379Y133014D01* +X762381Y133072D01* +X762359Y133154D01* +X762347Y133238D01* +X762324Y133291D01* +X762309Y133347D01* +X762266Y133420D01* +X762231Y133497D01* +X762193Y133542D01* +X762164Y133592D01* +X762102Y133650D01* +X762048Y133714D01* +X761999Y133746D01* +X761956Y133786D01* +X761881Y133825D01* +X761811Y133872D01* +X761755Y133889D01* +X761703Y133916D01* +X761635Y133927D01* +X761540Y133957D01* +X761440Y133960D01* +X761372Y133971D01* +X758444Y133971D01* +X758386Y133963D01* +X758328Y133965D01* +X758246Y133943D01* +X758162Y133931D01* +X758109Y133908D01* +X758053Y133893D01* +X757980Y133850D01* +X757903Y133815D01* +X757858Y133777D01* +X757808Y133748D01* +X757750Y133686D01* +X757686Y133632D01* +X757654Y133583D01* +X757614Y133540D01* +X757575Y133465D01* +X757528Y133395D01* +X757511Y133339D01* +X757484Y133287D01* +X757473Y133219D01* +X757443Y133124D01* +X757440Y133024D01* +X757429Y132956D01* +X757429Y132275D01* +X757441Y132189D01* +X757444Y132101D01* +X757461Y132049D01* +X757469Y131994D01* +X757504Y131914D01* +X757531Y131831D01* +X757559Y131792D01* +X757585Y131735D01* +X757681Y131621D01* +X757726Y131558D01* +X759118Y130166D01* +X759969Y128112D01* +X759969Y125888D01* +X759118Y123834D01* +X757546Y122262D01* +X755492Y121411D01* +X753268Y121411D01* +G37* +%LPD*% +G36* +X431130Y323757D02* +X431130Y323757D01* +X431188Y323755D01* +X431270Y323777D01* +X431354Y323789D01* +X431407Y323812D01* +X431463Y323827D01* +X431536Y323870D01* +X431613Y323905D01* +X431658Y323943D01* +X431708Y323972D01* +X431766Y324034D01* +X431830Y324088D01* +X431862Y324137D01* +X431902Y324180D01* +X431941Y324255D01* +X431988Y324325D01* +X432005Y324381D01* +X432032Y324433D01* +X432043Y324501D01* +X432073Y324596D01* +X432076Y324696D01* +X432087Y324764D01* +X432087Y325517D01* +X434303Y327733D01* +X447937Y327733D01* +X448290Y327379D01* +X448314Y327362D01* +X448333Y327339D01* +X448427Y327277D01* +X448517Y327209D01* +X448545Y327198D01* +X448569Y327182D01* +X448677Y327148D01* +X448783Y327107D01* +X448812Y327105D01* +X448840Y327096D01* +X448954Y327093D01* +X449066Y327084D01* +X449095Y327090D01* +X449124Y327089D01* +X449234Y327117D01* +X449345Y327140D01* +X449371Y327153D01* +X449399Y327161D01* +X449497Y327218D01* +X449597Y327271D01* +X449619Y327291D01* +X449644Y327306D01* +X449721Y327388D01* +X449803Y327466D01* +X449818Y327492D01* +X449838Y327513D01* +X449890Y327614D01* +X449947Y327712D01* +X449954Y327740D01* +X449968Y327766D01* +X449981Y327844D01* +X450017Y327987D01* +X450015Y328050D01* +X450023Y328097D01* +X450023Y332303D01* +X450019Y332332D01* +X450022Y332361D01* +X449999Y332472D01* +X449983Y332584D01* +X449971Y332611D01* +X449966Y332640D01* +X449913Y332740D01* +X449867Y332844D01* +X449848Y332866D01* +X449835Y332892D01* +X449757Y332974D01* +X449684Y333061D01* +X449659Y333077D01* +X449639Y333098D01* +X449541Y333155D01* +X449447Y333218D01* +X449419Y333227D01* +X449394Y333242D01* +X449284Y333270D01* +X449176Y333304D01* +X449146Y333305D01* +X449118Y333312D01* +X449005Y333308D01* +X448892Y333311D01* +X448863Y333304D01* +X448834Y333303D01* +X448726Y333268D01* +X448617Y333239D01* +X448591Y333224D01* +X448563Y333215D01* +X448499Y333170D01* +X448372Y333094D01* +X448329Y333049D01* +X448290Y333021D01* +X447937Y332667D01* +X434303Y332667D01* +X432087Y334883D01* +X432087Y344517D01* +X433083Y345512D01* +X433100Y345536D01* +X433123Y345555D01* +X433185Y345649D01* +X433253Y345739D01* +X433264Y345767D01* +X433280Y345791D01* +X433314Y345899D01* +X433355Y346005D01* +X433357Y346034D01* +X433366Y346062D01* +X433369Y346176D01* +X433378Y346288D01* +X433372Y346317D01* +X433373Y346346D01* +X433345Y346456D01* +X433322Y346567D01* +X433309Y346593D01* +X433301Y346621D01* +X433244Y346719D01* +X433191Y346819D01* +X433171Y346841D01* +X433156Y346866D01* +X433074Y346943D01* +X432996Y347025D01* +X432970Y347040D01* +X432949Y347060D01* +X432848Y347112D01* +X432750Y347169D01* +X432722Y347176D01* +X432696Y347190D01* +X432618Y347203D01* +X432475Y347239D01* +X432412Y347237D01* +X432365Y347245D01* +X430643Y347245D01* +X428506Y348131D01* +X426871Y349766D01* +X426868Y349772D01* +X426824Y349846D01* +X426789Y349925D01* +X426752Y349968D01* +X426724Y350017D01* +X426661Y350076D01* +X426605Y350142D01* +X426558Y350173D01* +X426517Y350212D01* +X426440Y350252D01* +X426369Y350299D01* +X426315Y350317D01* +X426264Y350343D01* +X426180Y350359D01* +X426098Y350385D01* +X426041Y350387D01* +X425985Y350398D01* +X425900Y350390D01* +X425814Y350393D01* +X425759Y350378D01* +X425702Y350373D01* +X425622Y350342D01* +X425539Y350321D01* +X425490Y350292D01* +X425437Y350271D01* +X425368Y350219D01* +X425294Y350175D01* +X425255Y350134D01* +X425210Y350100D01* +X425158Y350031D01* +X425100Y349968D01* +X425074Y349918D01* +X425040Y349872D01* +X425009Y349792D01* +X424970Y349715D01* +X424962Y349666D01* +X424939Y349606D01* +X424929Y349473D01* +X424029Y347302D01* +X422394Y345667D01* +X420257Y344781D01* +X417943Y344781D01* +X415806Y345667D01* +X414780Y346693D01* +X414733Y346728D01* +X414693Y346771D01* +X414620Y346813D01* +X414552Y346864D01* +X414498Y346885D01* +X414447Y346914D01* +X414366Y346935D01* +X414287Y346965D01* +X414228Y346970D01* +X414172Y346984D01* +X414088Y346982D01* +X414004Y346989D01* +X413946Y346977D01* +X413888Y346975D01* +X413807Y346949D01* +X413725Y346933D01* +X413673Y346906D01* +X413617Y346888D01* +X413561Y346848D01* +X413472Y346802D01* +X413400Y346733D01* +X413344Y346693D01* +X412138Y345487D01* +X406082Y345487D01* +X404578Y346991D01* +X404531Y347026D01* +X404491Y347069D01* +X404418Y347111D01* +X404351Y347162D01* +X404296Y347183D01* +X404246Y347212D01* +X404164Y347233D01* +X404085Y347263D01* +X404027Y347268D01* +X403970Y347283D01* +X403886Y347280D01* +X403802Y347287D01* +X403744Y347275D01* +X403686Y347274D01* +X403606Y347248D01* +X403523Y347231D01* +X403471Y347204D01* +X403415Y347186D01* +X403359Y347146D01* +X403271Y347100D01* +X403198Y347031D01* +X403142Y346991D01* +X401638Y345487D01* +X395582Y345487D01* +X393895Y347174D01* +X393825Y347226D01* +X393762Y347286D01* +X393712Y347312D01* +X393668Y347345D01* +X393586Y347376D01* +X393508Y347416D01* +X393461Y347424D01* +X393402Y347446D01* +X393255Y347458D01* +X393177Y347471D01* +X392910Y347471D01* +X392852Y347463D01* +X392794Y347465D01* +X392712Y347443D01* +X392628Y347431D01* +X392575Y347408D01* +X392519Y347393D01* +X392446Y347350D01* +X392369Y347315D01* +X392324Y347277D01* +X392274Y347248D01* +X392216Y347186D01* +X392152Y347132D01* +X392120Y347083D01* +X392080Y347040D01* +X392041Y346965D01* +X391994Y346895D01* +X391977Y346839D01* +X391950Y346787D01* +X391939Y346719D01* +X391909Y346624D01* +X391906Y346524D01* +X391895Y346456D01* +X391895Y344283D01* +X391009Y342146D01* +X389374Y340511D01* +X387237Y339625D01* +X384923Y339625D01* +X382786Y340511D01* +X381151Y342146D01* +X380265Y344283D01* +X380265Y346523D01* +X380253Y346609D01* +X380250Y346697D01* +X380233Y346749D01* +X380225Y346804D01* +X380190Y346884D01* +X380163Y346967D01* +X380135Y347006D01* +X380109Y347064D01* +X380013Y347177D01* +X379968Y347241D01* +X377325Y349884D01* +X377255Y349936D01* +X377191Y349996D01* +X377141Y350022D01* +X377097Y350055D01* +X377016Y350086D01* +X376938Y350126D01* +X376890Y350134D01* +X376832Y350156D01* +X376684Y350168D01* +X376607Y350181D01* +X366113Y350181D01* +X366026Y350169D01* +X365939Y350166D01* +X365886Y350149D01* +X365831Y350141D01* +X365751Y350106D01* +X365668Y350079D01* +X365629Y350051D01* +X365572Y350025D01* +X365459Y349929D01* +X365395Y349884D01* +X363958Y348447D01* +X357402Y348447D01* +X356318Y349531D01* +X356271Y349566D01* +X356231Y349609D01* +X356158Y349651D01* +X356091Y349702D01* +X356036Y349723D01* +X355986Y349752D01* +X355904Y349773D01* +X355825Y349803D01* +X355767Y349808D01* +X355710Y349823D01* +X355626Y349820D01* +X355542Y349827D01* +X355484Y349815D01* +X355426Y349814D01* +X355346Y349788D01* +X355263Y349771D01* +X355211Y349744D01* +X355155Y349726D01* +X355099Y349686D01* +X355011Y349640D01* +X354938Y349571D01* +X354882Y349531D01* +X353798Y348447D01* +X347242Y348447D01* +X345805Y349884D01* +X345735Y349936D01* +X345671Y349996D01* +X345622Y350022D01* +X345578Y350055D01* +X345496Y350086D01* +X345418Y350126D01* +X345371Y350134D01* +X345312Y350156D01* +X345165Y350168D01* +X345087Y350181D01* +X343978Y350181D01* +X343920Y350173D01* +X343862Y350175D01* +X343780Y350153D01* +X343696Y350141D01* +X343643Y350118D01* +X343587Y350103D01* +X343514Y350060D01* +X343437Y350025D01* +X343392Y349987D01* +X343342Y349958D01* +X343284Y349896D01* +X343220Y349842D01* +X343188Y349793D01* +X343148Y349750D01* +X343109Y349675D01* +X343062Y349605D01* +X343045Y349549D01* +X343018Y349497D01* +X343007Y349429D01* +X342977Y349334D01* +X342974Y349234D01* +X342963Y349166D01* +X342963Y344018D01* +X342863Y343918D01* +X342828Y343871D01* +X342785Y343831D01* +X342742Y343758D01* +X342692Y343691D01* +X342671Y343636D01* +X342641Y343586D01* +X342620Y343504D01* +X342590Y343425D01* +X342586Y343367D01* +X342571Y343310D01* +X342574Y343226D01* +X342567Y343142D01* +X342578Y343084D01* +X342580Y343026D01* +X342606Y342946D01* +X342623Y342863D01* +X342650Y342811D01* +X342668Y342755D01* +X342708Y342699D01* +X342754Y342611D01* +X342822Y342538D01* +X342863Y342482D01* +X342963Y342382D01* +X342963Y337514D01* +X342971Y337456D01* +X342969Y337398D01* +X342991Y337316D01* +X343003Y337232D01* +X343026Y337179D01* +X343041Y337123D01* +X343084Y337050D01* +X343119Y336973D01* +X343157Y336928D01* +X343186Y336878D01* +X343248Y336820D01* +X343302Y336756D01* +X343351Y336724D01* +X343394Y336684D01* +X343469Y336645D01* +X343539Y336598D01* +X343595Y336581D01* +X343647Y336554D01* +X343715Y336543D01* +X343810Y336513D01* +X343910Y336510D01* +X343978Y336499D01* +X412571Y336499D01* +X412658Y336511D01* +X412745Y336514D01* +X412798Y336531D01* +X412853Y336539D01* +X412933Y336574D01* +X413016Y336601D01* +X413055Y336629D01* +X413112Y336655D01* +X413226Y336751D01* +X413289Y336796D01* +X413971Y337478D01* +X416025Y338329D01* +X418249Y338329D01* +X420303Y337478D01* +X421875Y335906D01* +X422726Y333852D01* +X422726Y331628D01* +X421875Y329574D01* +X420303Y328002D01* +X418249Y327151D01* +X416211Y327151D01* +X416182Y327147D01* +X416153Y327150D01* +X416042Y327127D01* +X415930Y327111D01* +X415903Y327099D01* +X415874Y327094D01* +X415774Y327041D01* +X415670Y326995D01* +X415648Y326976D01* +X415622Y326963D01* +X415540Y326885D01* +X415453Y326812D01* +X415437Y326787D01* +X415416Y326767D01* +X415359Y326669D01* +X415296Y326575D01* +X415287Y326547D01* +X415272Y326522D01* +X415244Y326412D01* +X415210Y326304D01* +X415209Y326274D01* +X415202Y326246D01* +X415206Y326133D01* +X415203Y326020D01* +X415210Y325991D01* +X415211Y325962D01* +X415246Y325854D01* +X415275Y325745D01* +X415289Y325719D01* +X415299Y325691D01* +X415344Y325627D01* +X415420Y325500D01* +X415465Y325457D01* +X415493Y325418D01* +X416865Y324046D01* +X416935Y323994D01* +X416999Y323934D01* +X417049Y323908D01* +X417093Y323875D01* +X417174Y323844D01* +X417252Y323804D01* +X417300Y323796D01* +X417358Y323774D01* +X417506Y323762D01* +X417583Y323749D01* +X431072Y323749D01* +X431130Y323757D01* +G37* +G36* +X478510Y208881D02* +X478510Y208881D01* +X478568Y208879D01* +X478650Y208901D01* +X478734Y208913D01* +X478787Y208936D01* +X478843Y208951D01* +X478916Y208994D01* +X478993Y209029D01* +X479038Y209067D01* +X479088Y209096D01* +X479146Y209158D01* +X479210Y209212D01* +X479242Y209261D01* +X479282Y209304D01* +X479321Y209379D01* +X479368Y209449D01* +X479385Y209505D01* +X479412Y209557D01* +X479423Y209625D01* +X479453Y209720D01* +X479456Y209820D01* +X479467Y209888D01* +X479467Y217383D01* +X479496Y217439D01* +X479504Y217486D01* +X479526Y217545D01* +X479538Y217693D01* +X479551Y217770D01* +X479551Y233485D01* +X479539Y233571D01* +X479536Y233659D01* +X479519Y233711D01* +X479511Y233766D01* +X479476Y233846D01* +X479449Y233929D01* +X479421Y233968D01* +X479395Y234025D01* +X479299Y234139D01* +X479254Y234202D01* +X477862Y235594D01* +X477011Y237648D01* +X477011Y239872D01* +X477862Y241926D01* +X479434Y243498D01* +X480079Y243765D01* +X480178Y243823D01* +X480280Y243876D01* +X480300Y243895D01* +X480324Y243909D01* +X480403Y243993D01* +X480486Y244072D01* +X480500Y244096D01* +X480519Y244116D01* +X480571Y244218D01* +X480630Y244317D01* +X480636Y244344D01* +X480649Y244369D01* +X480671Y244482D01* +X480700Y244593D01* +X480699Y244620D01* +X480704Y244648D01* +X480694Y244762D01* +X480691Y244877D01* +X480682Y244903D01* +X480680Y244931D01* +X480638Y245038D01* +X480603Y245147D01* +X480589Y245168D01* +X480578Y245196D01* +X480416Y245409D01* +X480408Y245421D01* +X480406Y245423D01* +X480107Y245722D01* +X480107Y251784D01* +X480127Y251801D01* +X480190Y251895D01* +X480258Y251985D01* +X480269Y252013D01* +X480285Y252037D01* +X480319Y252145D01* +X480359Y252251D01* +X480362Y252280D01* +X480371Y252308D01* +X480374Y252421D01* +X480383Y252534D01* +X480377Y252563D01* +X480378Y252592D01* +X480349Y252702D01* +X480327Y252813D01* +X480314Y252839D01* +X480306Y252867D01* +X480248Y252965D01* +X480196Y253065D01* +X480176Y253087D01* +X480161Y253112D01* +X480078Y253189D01* +X480000Y253271D01* +X479975Y253286D01* +X479954Y253306D01* +X479853Y253358D01* +X479755Y253415D01* +X479727Y253422D01* +X479700Y253436D01* +X479623Y253449D01* +X479480Y253485D01* +X479417Y253483D01* +X479369Y253491D01* +X475175Y253491D01* +X475089Y253479D01* +X475001Y253476D01* +X474949Y253459D01* +X474894Y253451D01* +X474814Y253416D01* +X474731Y253389D01* +X474692Y253361D01* +X474635Y253335D01* +X474521Y253239D01* +X474458Y253194D01* +X473066Y251802D01* +X471012Y250951D01* +X468788Y250951D01* +X466734Y251802D01* +X465162Y253374D01* +X464742Y254389D01* +X464741Y254390D01* +X464741Y254391D01* +X464669Y254512D01* +X464597Y254633D01* +X464596Y254634D01* +X464596Y254636D01* +X464494Y254731D01* +X464391Y254829D01* +X464389Y254829D01* +X464388Y254830D01* +X464263Y254895D01* +X464138Y254959D01* +X464136Y254959D01* +X464135Y254960D01* +X464120Y254962D01* +X463859Y255014D01* +X463829Y255011D01* +X463804Y255015D01* +X461048Y255015D01* +X460990Y255007D01* +X460932Y255009D01* +X460850Y254987D01* +X460766Y254975D01* +X460713Y254952D01* +X460657Y254937D01* +X460584Y254894D01* +X460507Y254859D01* +X460462Y254821D01* +X460412Y254792D01* +X460354Y254730D01* +X460290Y254676D01* +X460258Y254627D01* +X460218Y254584D01* +X460179Y254509D01* +X460132Y254439D01* +X460115Y254383D01* +X460088Y254331D01* +X460086Y254316D01* +X457947Y252178D01* +X457937Y252164D01* +X457931Y252159D01* +X457914Y252133D01* +X457912Y252131D01* +X457870Y252091D01* +X457827Y252018D01* +X457777Y251951D01* +X457756Y251896D01* +X457726Y251846D01* +X457705Y251764D01* +X457675Y251685D01* +X457671Y251627D01* +X457656Y251570D01* +X457659Y251486D01* +X457652Y251402D01* +X457663Y251344D01* +X457665Y251286D01* +X457691Y251206D01* +X457708Y251123D01* +X457735Y251071D01* +X457753Y251015D01* +X457793Y250959D01* +X457839Y250871D01* +X457907Y250798D01* +X457947Y250742D01* +X460033Y248657D01* +X460033Y239023D01* +X457817Y236807D01* +X447183Y236807D01* +X445218Y238773D01* +X445171Y238808D01* +X445131Y238850D01* +X445058Y238893D01* +X444991Y238943D01* +X444936Y238964D01* +X444886Y238994D01* +X444804Y239015D01* +X444725Y239045D01* +X444667Y239049D01* +X444610Y239064D01* +X444526Y239061D01* +X444442Y239068D01* +X444384Y239057D01* +X444326Y239055D01* +X444246Y239029D01* +X444163Y239012D01* +X444111Y238985D01* +X444055Y238967D01* +X443999Y238927D01* +X443911Y238881D01* +X443838Y238813D01* +X443782Y238773D01* +X441947Y236938D01* +X441912Y236891D01* +X441870Y236851D01* +X441827Y236778D01* +X441777Y236711D01* +X441756Y236656D01* +X441726Y236606D01* +X441705Y236524D01* +X441675Y236445D01* +X441671Y236387D01* +X441656Y236330D01* +X441659Y236246D01* +X441652Y236162D01* +X441663Y236104D01* +X441665Y236046D01* +X441691Y235966D01* +X441708Y235883D01* +X441735Y235831D01* +X441753Y235775D01* +X441793Y235719D01* +X441839Y235631D01* +X441907Y235558D01* +X441947Y235502D01* +X444033Y233417D01* +X444033Y226677D01* +X444045Y226590D01* +X444048Y226503D01* +X444065Y226450D01* +X444073Y226395D01* +X444108Y226315D01* +X444135Y226232D01* +X444163Y226193D01* +X444189Y226136D01* +X444285Y226023D01* +X444330Y225959D01* +X457481Y212808D01* +X457528Y212773D01* +X457568Y212730D01* +X457641Y212688D01* +X457708Y212637D01* +X457763Y212616D01* +X457813Y212586D01* +X457895Y212566D01* +X457974Y212536D01* +X458032Y212531D01* +X458089Y212516D01* +X458173Y212519D01* +X458257Y212512D01* +X458315Y212524D01* +X458373Y212525D01* +X458453Y212551D01* +X458536Y212568D01* +X458588Y212595D01* +X458644Y212613D01* +X458700Y212653D01* +X458788Y212699D01* +X458861Y212768D01* +X458917Y212808D01* +X459002Y212893D01* +X465558Y212893D01* +X466995Y211456D01* +X467065Y211404D01* +X467129Y211344D01* +X467178Y211318D01* +X467222Y211285D01* +X467304Y211254D01* +X467382Y211214D01* +X467429Y211206D01* +X467488Y211184D01* +X467635Y211172D01* +X467713Y211159D01* +X468623Y211159D01* +X470611Y209170D01* +X470681Y209118D01* +X470745Y209058D01* +X470794Y209032D01* +X470839Y208999D01* +X470920Y208968D01* +X470998Y208928D01* +X471046Y208920D01* +X471104Y208898D01* +X471252Y208886D01* +X471329Y208873D01* +X478452Y208873D01* +X478510Y208881D01* +G37* +%LPC*% +G36* +X702842Y129667D02* +X702842Y129667D01* +X701087Y131422D01* +X701087Y137478D01* +X702591Y138982D01* +X702626Y139029D01* +X702669Y139069D01* +X702711Y139142D01* +X702762Y139209D01* +X702783Y139264D01* +X702812Y139314D01* +X702833Y139396D01* +X702863Y139475D01* +X702868Y139533D01* +X702883Y139590D01* +X702880Y139674D01* +X702887Y139758D01* +X702875Y139816D01* +X702874Y139874D01* +X702848Y139954D01* +X702831Y140037D01* +X702804Y140089D01* +X702786Y140145D01* +X702746Y140201D01* +X702700Y140289D01* +X702631Y140362D01* +X702591Y140418D01* +X701087Y141922D01* +X701087Y147978D01* +X701694Y148585D01* +X701729Y148631D01* +X701771Y148672D01* +X701814Y148744D01* +X701865Y148812D01* +X701885Y148866D01* +X701915Y148917D01* +X701936Y148998D01* +X701966Y149077D01* +X701971Y149136D01* +X701985Y149192D01* +X701982Y149277D01* +X701989Y149361D01* +X701978Y149418D01* +X701976Y149477D01* +X701950Y149557D01* +X701934Y149639D01* +X701907Y149691D01* +X701889Y149747D01* +X701849Y149803D01* +X701803Y149892D01* +X701734Y149964D01* +X701694Y150020D01* +X700661Y151053D01* +X699810Y153107D01* +X699810Y155331D01* +X700661Y157385D01* +X702233Y158957D01* +X704287Y159808D01* +X706511Y159808D01* +X707383Y159446D01* +X707495Y159417D01* +X707604Y159383D01* +X707632Y159382D01* +X707659Y159375D01* +X707773Y159378D01* +X707888Y159375D01* +X707915Y159382D01* +X707943Y159383D01* +X708052Y159418D01* +X708163Y159447D01* +X708187Y159461D01* +X708214Y159470D01* +X708309Y159534D01* +X708408Y159592D01* +X708427Y159613D01* +X708450Y159628D01* +X708524Y159716D01* +X708602Y159800D01* +X708615Y159825D01* +X708633Y159846D01* +X708679Y159951D01* +X708732Y160053D01* +X708736Y160078D01* +X708748Y160106D01* +X708785Y160369D01* +X708787Y160384D01* +X708787Y163298D01* +X710035Y164546D01* +X710070Y164592D01* +X710112Y164633D01* +X710155Y164706D01* +X710206Y164773D01* +X710227Y164828D01* +X710256Y164878D01* +X710277Y164960D01* +X710307Y165039D01* +X710312Y165097D01* +X710326Y165154D01* +X710324Y165238D01* +X710331Y165322D01* +X710319Y165379D01* +X710317Y165438D01* +X710291Y165518D01* +X710275Y165601D01* +X710248Y165653D01* +X710230Y165708D01* +X710190Y165764D01* +X710144Y165853D01* +X710075Y165925D01* +X710035Y165981D01* +X709002Y167014D01* +X708151Y169068D01* +X708151Y171292D01* +X709002Y173346D01* +X710574Y174918D01* +X712628Y175769D01* +X714852Y175769D01* +X716906Y174918D01* +X718478Y173346D01* +X719329Y171292D01* +X719329Y169068D01* +X718478Y167014D01* +X717275Y165811D01* +X717240Y165765D01* +X717198Y165725D01* +X717155Y165652D01* +X717104Y165584D01* +X717083Y165530D01* +X717054Y165479D01* +X717033Y165398D01* +X717003Y165319D01* +X716998Y165260D01* +X716984Y165204D01* +X716986Y165119D01* +X716979Y165035D01* +X716991Y164978D01* +X716993Y164920D01* +X717019Y164839D01* +X717035Y164757D01* +X717062Y164705D01* +X717080Y164649D01* +X717120Y164593D01* +X717166Y164504D01* +X717235Y164432D01* +X717275Y164376D01* +X718102Y163549D01* +X718149Y163514D01* +X718189Y163471D01* +X718262Y163428D01* +X718329Y163378D01* +X718384Y163357D01* +X718434Y163328D01* +X718516Y163307D01* +X718595Y163277D01* +X718653Y163272D01* +X718710Y163257D01* +X718794Y163260D01* +X718878Y163253D01* +X718936Y163265D01* +X718994Y163266D01* +X719074Y163292D01* +X719157Y163309D01* +X719209Y163336D01* +X719265Y163354D01* +X719321Y163394D01* +X719409Y163440D01* +X719482Y163509D01* +X719538Y163549D01* +X721042Y165053D01* +X727098Y165053D01* +X728853Y163298D01* +X728853Y156742D01* +X727416Y155305D01* +X727363Y155235D01* +X727304Y155172D01* +X727278Y155122D01* +X727245Y155078D01* +X727214Y154996D01* +X727174Y154918D01* +X727166Y154871D01* +X727144Y154812D01* +X727132Y154665D01* +X727119Y154587D01* +X727119Y150498D01* +X727127Y150440D01* +X727125Y150382D01* +X727147Y150300D01* +X727159Y150216D01* +X727182Y150163D01* +X727197Y150107D01* +X727240Y150034D01* +X727275Y149957D01* +X727313Y149912D01* +X727342Y149862D01* +X727404Y149804D01* +X727458Y149740D01* +X727507Y149708D01* +X727550Y149668D01* +X727575Y149655D01* +X729553Y147677D01* +X729553Y140723D01* +X729248Y140418D01* +X729212Y140371D01* +X729170Y140331D01* +X729127Y140258D01* +X729077Y140191D01* +X729056Y140136D01* +X729026Y140086D01* +X729006Y140004D01* +X728975Y139925D01* +X728971Y139867D01* +X728956Y139810D01* +X728959Y139726D01* +X728952Y139642D01* +X728963Y139584D01* +X728965Y139526D01* +X728991Y139446D01* +X729008Y139363D01* +X729035Y139311D01* +X729053Y139255D01* +X729093Y139199D01* +X729139Y139111D01* +X729208Y139038D01* +X729248Y138982D01* +X729553Y138677D01* +X729553Y131723D01* +X727747Y129917D01* +X721293Y129917D01* +X719356Y131854D01* +X719287Y131906D01* +X719223Y131966D01* +X719173Y131992D01* +X719129Y132025D01* +X719048Y132056D01* +X718970Y132096D01* +X718922Y132104D01* +X718864Y132126D01* +X718716Y132138D01* +X718639Y132151D01* +X716003Y132151D01* +X715917Y132139D01* +X715829Y132136D01* +X715777Y132119D01* +X715722Y132111D01* +X715642Y132076D01* +X715559Y132049D01* +X715520Y132021D01* +X715462Y131995D01* +X715349Y131899D01* +X715285Y131854D01* +X714833Y131401D01* +X711553Y131401D01* +X711466Y131389D01* +X711379Y131386D01* +X711326Y131369D01* +X711271Y131361D01* +X711191Y131326D01* +X711108Y131299D01* +X711069Y131271D01* +X711012Y131245D01* +X710899Y131149D01* +X710835Y131104D01* +X709398Y129667D01* +X702842Y129667D01* +G37* +%LPD*% +G36* +X754295Y295535D02* +X754295Y295535D01* +X754416Y295547D01* +X754435Y295555D01* +X754456Y295558D01* +X754567Y295608D01* +X754680Y295653D01* +X754696Y295666D01* +X754715Y295674D01* +X754808Y295753D01* +X754904Y295828D01* +X754915Y295843D01* +X754932Y295858D01* +X755090Y296095D01* +X755091Y296100D01* +X755094Y296104D01* +X757032Y300260D01* +X759644Y301211D01* +X759696Y301238D01* +X759751Y301257D01* +X759820Y301305D01* +X759895Y301345D01* +X759937Y301385D01* +X759985Y301419D01* +X760038Y301484D01* +X760099Y301543D01* +X760128Y301593D01* +X760165Y301639D01* +X760198Y301716D01* +X760240Y301789D01* +X760254Y301846D01* +X760277Y301900D01* +X760287Y301984D01* +X760307Y302066D01* +X760305Y302124D01* +X760312Y302182D01* +X760299Y302250D01* +X760295Y302350D01* +X760263Y302444D01* +X760251Y302512D01* +X759300Y305124D01* +X760133Y306911D01* +X760173Y307040D01* +X760215Y307172D01* +X760215Y307178D01* +X760216Y307183D01* +X760218Y307318D01* +X760222Y307456D01* +X760220Y307462D01* +X760221Y307467D01* +X760184Y307600D01* +X760150Y307731D01* +X760147Y307736D01* +X760146Y307741D01* +X760074Y307860D01* +X760005Y307976D01* +X760001Y307980D01* +X759998Y307984D01* +X759897Y308077D01* +X759798Y308170D01* +X759793Y308173D01* +X759789Y308177D01* +X759666Y308237D01* +X759544Y308300D01* +X759539Y308301D01* +X759534Y308303D01* +X759254Y308354D01* +X759232Y308352D01* +X759213Y308355D01* +X701541Y308355D01* +X701406Y308336D01* +X701270Y308318D01* +X701265Y308316D01* +X701259Y308315D01* +X701134Y308260D01* +X701009Y308205D01* +X701005Y308201D01* +X701000Y308199D01* +X700895Y308111D01* +X700790Y308024D01* +X700787Y308019D01* +X700783Y308016D01* +X700707Y307902D01* +X700630Y307789D01* +X700628Y307783D01* +X700625Y307779D01* +X700583Y307647D01* +X700541Y307519D01* +X700541Y307513D01* +X700539Y307508D01* +X700536Y307372D01* +X700531Y307234D01* +X700532Y307230D01* +X700532Y307224D01* +X700604Y306949D01* +X700610Y306938D01* +X700612Y306931D01* +X700617Y306922D01* +X700621Y306911D01* +X701454Y305124D01* +X700503Y302512D01* +X700491Y302455D01* +X700470Y302401D01* +X700462Y302317D01* +X700444Y302234D01* +X700449Y302176D01* +X700443Y302118D01* +X700459Y302035D01* +X700465Y301951D01* +X700485Y301896D01* +X700496Y301838D01* +X700534Y301763D01* +X700563Y301684D01* +X700598Y301637D01* +X700624Y301585D01* +X700682Y301523D01* +X700732Y301455D01* +X700778Y301419D01* +X700818Y301376D01* +X700878Y301342D01* +X700957Y301282D01* +X701050Y301245D01* +X701110Y301211D01* +X703722Y300260D01* +X705660Y296104D01* +X705726Y296002D01* +X705788Y295898D01* +X705803Y295884D01* +X705815Y295866D01* +X705907Y295786D01* +X705996Y295703D01* +X706014Y295694D01* +X706030Y295680D01* +X706140Y295629D01* +X706249Y295574D01* +X706267Y295571D01* +X706288Y295561D01* +X706569Y295518D01* +X706575Y295519D01* +X706580Y295518D01* +X754174Y295518D01* +X754295Y295535D01* +G37* +G36* +X505416Y179832D02* +X505416Y179832D01* +X505474Y179834D01* +X505554Y179860D01* +X505637Y179876D01* +X505689Y179903D01* +X505745Y179921D01* +X505801Y179961D01* +X505889Y180007D01* +X505906Y180023D01* +X507302Y180023D01* +X507360Y180031D01* +X507418Y180029D01* +X507500Y180051D01* +X507584Y180063D01* +X507637Y180086D01* +X507693Y180101D01* +X507766Y180144D01* +X507843Y180179D01* +X507888Y180217D01* +X507938Y180246D01* +X507996Y180308D01* +X508060Y180362D01* +X508092Y180411D01* +X508132Y180454D01* +X508171Y180529D01* +X508218Y180599D01* +X508235Y180655D01* +X508262Y180707D01* +X508273Y180775D01* +X508303Y180870D01* +X508306Y180970D01* +X508317Y181038D01* +X508317Y182436D01* +X508344Y182482D01* +X508395Y182549D01* +X508416Y182604D01* +X508445Y182654D01* +X508466Y182736D01* +X508496Y182815D01* +X508501Y182873D01* +X508515Y182930D01* +X508513Y183014D01* +X508520Y183098D01* +X508508Y183156D01* +X508506Y183214D01* +X508480Y183294D01* +X508464Y183377D01* +X508437Y183429D01* +X508419Y183485D01* +X508379Y183541D01* +X508333Y183629D01* +X508317Y183646D01* +X508317Y187436D01* +X508344Y187482D01* +X508395Y187549D01* +X508416Y187604D01* +X508445Y187654D01* +X508466Y187736D01* +X508496Y187815D01* +X508501Y187873D01* +X508515Y187930D01* +X508513Y188014D01* +X508520Y188098D01* +X508508Y188156D01* +X508506Y188214D01* +X508480Y188294D01* +X508464Y188377D01* +X508437Y188429D01* +X508419Y188485D01* +X508379Y188541D01* +X508333Y188629D01* +X508317Y188646D01* +X508317Y192436D01* +X508344Y192482D01* +X508395Y192549D01* +X508416Y192604D01* +X508445Y192654D01* +X508466Y192736D01* +X508496Y192815D01* +X508501Y192873D01* +X508515Y192930D01* +X508513Y193014D01* +X508520Y193098D01* +X508508Y193156D01* +X508506Y193214D01* +X508480Y193294D01* +X508464Y193377D01* +X508437Y193429D01* +X508419Y193485D01* +X508379Y193541D01* +X508333Y193629D01* +X508317Y193646D01* +X508317Y197436D01* +X508344Y197482D01* +X508395Y197549D01* +X508416Y197604D01* +X508445Y197654D01* +X508466Y197736D01* +X508496Y197815D01* +X508501Y197873D01* +X508515Y197930D01* +X508513Y198014D01* +X508520Y198098D01* +X508508Y198156D01* +X508506Y198214D01* +X508480Y198294D01* +X508464Y198377D01* +X508437Y198429D01* +X508419Y198485D01* +X508379Y198541D01* +X508333Y198629D01* +X508317Y198646D01* +X508317Y202436D01* +X508344Y202482D01* +X508395Y202549D01* +X508416Y202604D01* +X508445Y202654D01* +X508466Y202736D01* +X508496Y202815D01* +X508501Y202873D01* +X508515Y202930D01* +X508513Y203014D01* +X508520Y203098D01* +X508508Y203156D01* +X508506Y203214D01* +X508480Y203294D01* +X508464Y203377D01* +X508437Y203429D01* +X508419Y203485D01* +X508379Y203541D01* +X508333Y203629D01* +X508317Y203646D01* +X508317Y205042D01* +X508309Y205100D01* +X508311Y205158D01* +X508289Y205240D01* +X508277Y205324D01* +X508254Y205377D01* +X508239Y205433D01* +X508196Y205506D01* +X508161Y205583D01* +X508123Y205628D01* +X508094Y205678D01* +X508032Y205736D01* +X507978Y205800D01* +X507929Y205832D01* +X507886Y205872D01* +X507811Y205911D01* +X507741Y205958D01* +X507685Y205975D01* +X507633Y206002D01* +X507565Y206013D01* +X507470Y206043D01* +X507370Y206046D01* +X507302Y206057D01* +X505904Y206057D01* +X505858Y206084D01* +X505791Y206135D01* +X505736Y206156D01* +X505686Y206185D01* +X505604Y206206D01* +X505525Y206236D01* +X505467Y206241D01* +X505410Y206255D01* +X505326Y206253D01* +X505242Y206260D01* +X505184Y206248D01* +X505126Y206246D01* +X505046Y206220D01* +X504963Y206204D01* +X504911Y206177D01* +X504855Y206159D01* +X504799Y206119D01* +X504711Y206073D01* +X504694Y206057D01* +X500904Y206057D01* +X500858Y206084D01* +X500791Y206135D01* +X500736Y206156D01* +X500686Y206185D01* +X500604Y206206D01* +X500525Y206236D01* +X500467Y206241D01* +X500410Y206255D01* +X500326Y206253D01* +X500242Y206260D01* +X500184Y206248D01* +X500126Y206246D01* +X500046Y206220D01* +X499963Y206204D01* +X499911Y206177D01* +X499855Y206159D01* +X499799Y206119D01* +X499711Y206073D01* +X499694Y206057D01* +X495904Y206057D01* +X495858Y206084D01* +X495791Y206135D01* +X495736Y206156D01* +X495686Y206185D01* +X495604Y206206D01* +X495525Y206236D01* +X495467Y206241D01* +X495410Y206255D01* +X495326Y206253D01* +X495242Y206260D01* +X495184Y206248D01* +X495126Y206246D01* +X495046Y206220D01* +X494963Y206204D01* +X494911Y206177D01* +X494855Y206159D01* +X494799Y206119D01* +X494711Y206073D01* +X494694Y206057D01* +X490904Y206057D01* +X490858Y206084D01* +X490791Y206135D01* +X490736Y206156D01* +X490686Y206185D01* +X490604Y206206D01* +X490525Y206236D01* +X490467Y206241D01* +X490410Y206255D01* +X490326Y206253D01* +X490242Y206260D01* +X490184Y206248D01* +X490126Y206246D01* +X490046Y206220D01* +X489963Y206204D01* +X489911Y206177D01* +X489855Y206159D01* +X489799Y206119D01* +X489711Y206073D01* +X489694Y206057D01* +X485904Y206057D01* +X485858Y206084D01* +X485791Y206135D01* +X485736Y206156D01* +X485686Y206185D01* +X485604Y206206D01* +X485525Y206236D01* +X485467Y206241D01* +X485410Y206255D01* +X485326Y206253D01* +X485242Y206260D01* +X485184Y206248D01* +X485126Y206246D01* +X485046Y206220D01* +X484963Y206204D01* +X484911Y206177D01* +X484855Y206159D01* +X484799Y206119D01* +X484711Y206073D01* +X484694Y206057D01* +X483298Y206057D01* +X483240Y206049D01* +X483182Y206051D01* +X483100Y206029D01* +X483016Y206017D01* +X482963Y205994D01* +X482907Y205979D01* +X482834Y205936D01* +X482757Y205901D01* +X482712Y205863D01* +X482662Y205834D01* +X482604Y205772D01* +X482540Y205718D01* +X482508Y205669D01* +X482468Y205626D01* +X482429Y205551D01* +X482382Y205481D01* +X482365Y205425D01* +X482338Y205373D01* +X482327Y205305D01* +X482297Y205210D01* +X482294Y205110D01* +X482283Y205042D01* +X482283Y203644D01* +X482256Y203598D01* +X482205Y203531D01* +X482184Y203476D01* +X482155Y203426D01* +X482134Y203344D01* +X482104Y203265D01* +X482099Y203207D01* +X482085Y203150D01* +X482087Y203066D01* +X482080Y202982D01* +X482092Y202924D01* +X482094Y202866D01* +X482120Y202786D01* +X482136Y202703D01* +X482163Y202651D01* +X482181Y202595D01* +X482221Y202539D01* +X482267Y202451D01* +X482283Y202434D01* +X482283Y198644D01* +X482256Y198598D01* +X482205Y198531D01* +X482184Y198476D01* +X482155Y198426D01* +X482134Y198344D01* +X482104Y198265D01* +X482099Y198207D01* +X482085Y198150D01* +X482087Y198066D01* +X482080Y197982D01* +X482092Y197924D01* +X482094Y197866D01* +X482120Y197786D01* +X482136Y197703D01* +X482163Y197651D01* +X482181Y197595D01* +X482221Y197539D01* +X482267Y197451D01* +X482283Y197434D01* +X482283Y193644D01* +X482256Y193598D01* +X482205Y193531D01* +X482184Y193476D01* +X482155Y193426D01* +X482134Y193344D01* +X482104Y193265D01* +X482099Y193207D01* +X482085Y193150D01* +X482087Y193066D01* +X482080Y192982D01* +X482092Y192924D01* +X482094Y192866D01* +X482120Y192786D01* +X482136Y192703D01* +X482163Y192651D01* +X482181Y192595D01* +X482221Y192539D01* +X482267Y192451D01* +X482283Y192434D01* +X482283Y188644D01* +X482256Y188598D01* +X482205Y188531D01* +X482184Y188476D01* +X482155Y188426D01* +X482134Y188344D01* +X482104Y188265D01* +X482099Y188207D01* +X482085Y188150D01* +X482087Y188066D01* +X482080Y187982D01* +X482092Y187924D01* +X482094Y187866D01* +X482120Y187786D01* +X482136Y187703D01* +X482163Y187651D01* +X482181Y187595D01* +X482221Y187539D01* +X482267Y187451D01* +X482283Y187434D01* +X482283Y183644D01* +X482256Y183598D01* +X482205Y183531D01* +X482184Y183476D01* +X482155Y183426D01* +X482134Y183344D01* +X482104Y183265D01* +X482099Y183207D01* +X482085Y183150D01* +X482087Y183066D01* +X482080Y182982D01* +X482092Y182924D01* +X482094Y182866D01* +X482120Y182786D01* +X482136Y182703D01* +X482163Y182651D01* +X482181Y182595D01* +X482221Y182539D01* +X482267Y182451D01* +X482283Y182434D01* +X482283Y181038D01* +X482291Y180980D01* +X482289Y180922D01* +X482311Y180840D01* +X482323Y180756D01* +X482346Y180703D01* +X482361Y180647D01* +X482404Y180574D01* +X482439Y180497D01* +X482477Y180452D01* +X482506Y180402D01* +X482568Y180344D01* +X482622Y180280D01* +X482671Y180248D01* +X482714Y180208D01* +X482789Y180169D01* +X482859Y180122D01* +X482915Y180105D01* +X482967Y180078D01* +X483035Y180067D01* +X483130Y180037D01* +X483230Y180034D01* +X483298Y180023D01* +X484696Y180023D01* +X484742Y179996D01* +X484809Y179945D01* +X484864Y179924D01* +X484914Y179895D01* +X484996Y179874D01* +X485075Y179844D01* +X485133Y179839D01* +X485190Y179825D01* +X485274Y179827D01* +X485358Y179820D01* +X485416Y179832D01* +X485474Y179834D01* +X485554Y179860D01* +X485637Y179876D01* +X485689Y179903D01* +X485745Y179921D01* +X485801Y179961D01* +X485889Y180007D01* +X485906Y180023D01* +X489696Y180023D01* +X489742Y179996D01* +X489809Y179945D01* +X489864Y179924D01* +X489914Y179895D01* +X489996Y179874D01* +X490075Y179844D01* +X490133Y179839D01* +X490190Y179825D01* +X490274Y179827D01* +X490358Y179820D01* +X490416Y179832D01* +X490474Y179834D01* +X490554Y179860D01* +X490637Y179876D01* +X490689Y179903D01* +X490745Y179921D01* +X490801Y179961D01* +X490889Y180007D01* +X490906Y180023D01* +X494696Y180023D01* +X494742Y179996D01* +X494809Y179945D01* +X494864Y179924D01* +X494914Y179895D01* +X494996Y179874D01* +X495075Y179844D01* +X495133Y179839D01* +X495190Y179825D01* +X495274Y179827D01* +X495358Y179820D01* +X495416Y179832D01* +X495474Y179834D01* +X495554Y179860D01* +X495637Y179876D01* +X495689Y179903D01* +X495745Y179921D01* +X495801Y179961D01* +X495889Y180007D01* +X495906Y180023D01* +X499696Y180023D01* +X499742Y179996D01* +X499809Y179945D01* +X499864Y179924D01* +X499914Y179895D01* +X499996Y179874D01* +X500075Y179844D01* +X500133Y179839D01* +X500190Y179825D01* +X500274Y179827D01* +X500358Y179820D01* +X500416Y179832D01* +X500474Y179834D01* +X500554Y179860D01* +X500637Y179876D01* +X500689Y179903D01* +X500745Y179921D01* +X500801Y179961D01* +X500889Y180007D01* +X500906Y180023D01* +X504696Y180023D01* +X504742Y179996D01* +X504809Y179945D01* +X504864Y179924D01* +X504914Y179895D01* +X504996Y179874D01* +X505075Y179844D01* +X505133Y179839D01* +X505190Y179825D01* +X505274Y179827D01* +X505358Y179820D01* +X505416Y179832D01* +G37* +G36* +X867835Y76831D02* +X867835Y76831D01* +X867949Y76835D01* +X867976Y76844D01* +X868003Y76846D01* +X868110Y76887D01* +X868220Y76923D01* +X868240Y76937D01* +X868269Y76948D01* +X868481Y77109D01* +X868493Y77117D01* +X887074Y95698D01* +X887092Y95722D01* +X887114Y95741D01* +X887177Y95835D01* +X887245Y95925D01* +X887255Y95953D01* +X887272Y95977D01* +X887306Y96085D01* +X887346Y96191D01* +X887349Y96220D01* +X887357Y96248D01* +X887360Y96362D01* +X887370Y96474D01* +X887364Y96503D01* +X887365Y96532D01* +X887336Y96642D01* +X887314Y96753D01* +X887300Y96779D01* +X887293Y96807D01* +X887235Y96905D01* +X887183Y97005D01* +X887163Y97027D01* +X887148Y97052D01* +X887065Y97129D01* +X886987Y97211D01* +X886962Y97226D01* +X886940Y97246D01* +X886839Y97298D01* +X886742Y97355D01* +X886713Y97362D01* +X886687Y97376D01* +X886610Y97389D01* +X886466Y97425D01* +X886404Y97423D01* +X886356Y97431D01* +X845321Y97431D01* +X845234Y97419D01* +X845147Y97416D01* +X845094Y97399D01* +X845040Y97391D01* +X844960Y97356D01* +X844876Y97329D01* +X844837Y97301D01* +X844780Y97275D01* +X844667Y97179D01* +X844603Y97134D01* +X844139Y96669D01* +X831499Y96669D01* +X829944Y98224D01* +X829944Y102736D01* +X831499Y104291D01* +X833755Y104291D01* +X833813Y104299D01* +X833871Y104297D01* +X833953Y104319D01* +X834037Y104331D01* +X834090Y104354D01* +X834146Y104369D01* +X834219Y104412D01* +X834296Y104447D01* +X834341Y104485D01* +X834391Y104514D01* +X834449Y104576D01* +X834513Y104630D01* +X834545Y104679D01* +X834585Y104722D01* +X834624Y104797D01* +X834671Y104867D01* +X834688Y104923D01* +X834715Y104975D01* +X834726Y105043D01* +X834756Y105138D01* +X834759Y105238D01* +X834770Y105306D01* +X834770Y105548D01* +X834758Y105634D01* +X834755Y105722D01* +X834738Y105774D01* +X834730Y105829D01* +X834695Y105909D01* +X834668Y105992D01* +X834640Y106031D01* +X834614Y106089D01* +X834518Y106202D01* +X834473Y106265D01* +X834309Y106430D01* +X834239Y106482D01* +X834175Y106542D01* +X834126Y106568D01* +X834081Y106601D01* +X834000Y106632D01* +X833922Y106672D01* +X833874Y106680D01* +X833816Y106702D01* +X833668Y106714D01* +X833591Y106727D01* +X830262Y106727D01* +X828758Y108231D01* +X828711Y108266D01* +X828671Y108309D01* +X828598Y108351D01* +X828531Y108402D01* +X828476Y108423D01* +X828426Y108452D01* +X828344Y108473D01* +X828265Y108503D01* +X828207Y108508D01* +X828150Y108523D01* +X828066Y108520D01* +X827982Y108527D01* +X827924Y108515D01* +X827866Y108514D01* +X827786Y108488D01* +X827703Y108471D01* +X827651Y108444D01* +X827595Y108426D01* +X827539Y108386D01* +X827451Y108340D01* +X827378Y108271D01* +X827322Y108231D01* +X825818Y106727D01* +X822489Y106727D01* +X822403Y106715D01* +X822315Y106712D01* +X822263Y106695D01* +X822208Y106687D01* +X822128Y106652D01* +X822045Y106625D01* +X822006Y106597D01* +X821948Y106571D01* +X821835Y106475D01* +X821771Y106430D01* +X821365Y106024D01* +X821348Y106000D01* +X821325Y105981D01* +X821262Y105887D01* +X821195Y105797D01* +X821184Y105769D01* +X821168Y105745D01* +X821134Y105637D01* +X821093Y105531D01* +X821091Y105502D01* +X821082Y105474D01* +X821079Y105360D01* +X821070Y105248D01* +X821075Y105219D01* +X821075Y105190D01* +X821103Y105080D01* +X821126Y104969D01* +X821139Y104943D01* +X821147Y104915D01* +X821204Y104817D01* +X821257Y104717D01* +X821277Y104695D01* +X821292Y104670D01* +X821374Y104593D01* +X821452Y104511D01* +X821478Y104496D01* +X821499Y104476D01* +X821600Y104424D01* +X821698Y104367D01* +X821726Y104360D01* +X821752Y104346D01* +X821830Y104333D01* +X821973Y104297D01* +X822036Y104299D01* +X822083Y104291D01* +X824581Y104291D01* +X826136Y102736D01* +X826136Y98044D01* +X826144Y97986D01* +X826142Y97928D01* +X826164Y97846D01* +X826176Y97762D01* +X826199Y97709D01* +X826214Y97653D01* +X826257Y97580D01* +X826292Y97503D01* +X826330Y97458D01* +X826359Y97408D01* +X826421Y97350D01* +X826475Y97286D01* +X826524Y97254D01* +X826567Y97214D01* +X826590Y97202D01* +X832203Y91588D01* +X832273Y91536D01* +X832337Y91476D01* +X832386Y91450D01* +X832431Y91417D01* +X832512Y91386D01* +X832590Y91346D01* +X832638Y91338D01* +X832696Y91316D01* +X832844Y91304D01* +X832921Y91291D01* +X844138Y91291D01* +X844603Y90826D01* +X844673Y90774D01* +X844737Y90714D01* +X844786Y90688D01* +X844830Y90655D01* +X844912Y90624D01* +X844990Y90584D01* +X845037Y90576D01* +X845096Y90554D01* +X845244Y90542D01* +X845321Y90529D01* +X850873Y90529D01* +X852671Y88730D01* +X852741Y88678D01* +X852805Y88618D01* +X852855Y88592D01* +X852899Y88559D01* +X852980Y88528D01* +X853058Y88488D01* +X853106Y88480D01* +X853164Y88458D01* +X853312Y88446D01* +X853389Y88433D01* +X856718Y88433D01* +X858473Y86678D01* +X858473Y83349D01* +X858485Y83263D01* +X858488Y83175D01* +X858505Y83123D01* +X858513Y83068D01* +X858548Y82988D01* +X858575Y82905D01* +X858603Y82866D01* +X858629Y82808D01* +X858725Y82695D01* +X858770Y82631D01* +X859089Y82312D01* +X859159Y82260D01* +X859223Y82200D01* +X859273Y82174D01* +X859317Y82141D01* +X859398Y82110D01* +X859476Y82070D01* +X859524Y82062D01* +X859582Y82040D01* +X859730Y82028D01* +X859807Y82015D01* +X862217Y82015D01* +X864354Y81129D01* +X865989Y79494D01* +X866837Y77447D01* +X866896Y77348D01* +X866949Y77246D01* +X866968Y77226D01* +X866982Y77202D01* +X867065Y77123D01* +X867144Y77040D01* +X867168Y77026D01* +X867189Y77007D01* +X867291Y76954D01* +X867390Y76896D01* +X867417Y76889D01* +X867441Y76877D01* +X867554Y76854D01* +X867665Y76826D01* +X867693Y76827D01* +X867720Y76822D01* +X867835Y76831D01* +G37* +G36* +X845573Y65441D02* +X845573Y65441D01* +X845660Y65444D01* +X845713Y65461D01* +X845768Y65469D01* +X845847Y65504D01* +X845931Y65531D01* +X845970Y65559D01* +X846027Y65585D01* +X846140Y65681D01* +X846204Y65726D01* +X850455Y69977D01* +X856609Y69977D01* +X856638Y69981D01* +X856667Y69978D01* +X856778Y70001D01* +X856890Y70017D01* +X856917Y70029D01* +X856946Y70034D01* +X857047Y70087D01* +X857150Y70133D01* +X857172Y70152D01* +X857198Y70165D01* +X857280Y70243D01* +X857367Y70316D01* +X857383Y70341D01* +X857404Y70361D01* +X857462Y70459D01* +X857524Y70553D01* +X857533Y70581D01* +X857548Y70606D01* +X857576Y70716D01* +X857610Y70824D01* +X857611Y70854D01* +X857618Y70882D01* +X857615Y70995D01* +X857618Y71108D01* +X857610Y71137D01* +X857609Y71166D01* +X857574Y71274D01* +X857546Y71383D01* +X857531Y71409D01* +X857522Y71437D01* +X857476Y71501D01* +X857400Y71628D01* +X857355Y71671D01* +X857327Y71710D01* +X856131Y72906D01* +X855245Y75043D01* +X855245Y77113D01* +X855233Y77199D01* +X855230Y77287D01* +X855213Y77339D01* +X855205Y77394D01* +X855170Y77474D01* +X855143Y77557D01* +X855115Y77596D01* +X855089Y77654D01* +X854993Y77767D01* +X854948Y77831D01* +X854209Y78570D01* +X854139Y78622D01* +X854075Y78682D01* +X854025Y78708D01* +X853981Y78741D01* +X853900Y78772D01* +X853822Y78812D01* +X853774Y78820D01* +X853716Y78842D01* +X853568Y78854D01* +X853491Y78867D01* +X850162Y78867D01* +X848407Y80622D01* +X848407Y83416D01* +X848399Y83474D01* +X848401Y83532D01* +X848379Y83614D01* +X848367Y83698D01* +X848344Y83751D01* +X848329Y83807D01* +X848286Y83880D01* +X848251Y83957D01* +X848213Y84002D01* +X848184Y84052D01* +X848122Y84110D01* +X848068Y84174D01* +X848019Y84206D01* +X847976Y84246D01* +X847901Y84285D01* +X847831Y84332D01* +X847775Y84349D01* +X847723Y84376D01* +X847655Y84387D01* +X847560Y84417D01* +X847460Y84420D01* +X847392Y84431D01* +X845321Y84431D01* +X845234Y84419D01* +X845147Y84416D01* +X845094Y84399D01* +X845039Y84391D01* +X844960Y84356D01* +X844876Y84329D01* +X844837Y84301D01* +X844780Y84275D01* +X844667Y84179D01* +X844603Y84134D01* +X844138Y83669D01* +X831499Y83669D01* +X831035Y84134D01* +X831034Y84135D01* +X827869Y87300D01* +X827845Y87317D01* +X827826Y87340D01* +X827732Y87402D01* +X827642Y87470D01* +X827614Y87481D01* +X827590Y87497D01* +X827482Y87531D01* +X827376Y87572D01* +X827347Y87574D01* +X827319Y87583D01* +X827205Y87586D01* +X827093Y87595D01* +X827064Y87590D01* +X827035Y87590D01* +X826925Y87562D01* +X826814Y87539D01* +X826788Y87526D01* +X826760Y87518D01* +X826662Y87461D01* +X826562Y87408D01* +X826540Y87388D01* +X826515Y87373D01* +X826438Y87291D01* +X826356Y87213D01* +X826341Y87187D01* +X826321Y87166D01* +X826269Y87065D01* +X826212Y86967D01* +X826205Y86939D01* +X826191Y86913D01* +X826178Y86835D01* +X826142Y86692D01* +X826144Y86629D01* +X826136Y86582D01* +X826136Y85224D01* +X824581Y83669D01* +X811942Y83669D01* +X811866Y83745D01* +X811842Y83763D01* +X811823Y83785D01* +X811729Y83848D01* +X811639Y83916D01* +X811611Y83926D01* +X811587Y83943D01* +X811479Y83977D01* +X811373Y84017D01* +X811344Y84019D01* +X811316Y84028D01* +X811203Y84031D01* +X811090Y84041D01* +X811061Y84035D01* +X811032Y84036D01* +X810922Y84007D01* +X810811Y83985D01* +X810785Y83971D01* +X810757Y83964D01* +X810659Y83906D01* +X810559Y83854D01* +X810537Y83834D01* +X810512Y83819D01* +X810435Y83736D01* +X810353Y83658D01* +X810338Y83633D01* +X810318Y83611D01* +X810266Y83510D01* +X810209Y83413D01* +X810202Y83384D01* +X810188Y83358D01* +X810175Y83281D01* +X810139Y83137D01* +X810140Y83089D01* +X808378Y81327D01* +X807589Y81327D01* +X807503Y81315D01* +X807415Y81312D01* +X807363Y81295D01* +X807308Y81287D01* +X807228Y81252D01* +X807145Y81225D01* +X807106Y81197D01* +X807048Y81171D01* +X806935Y81075D01* +X806871Y81030D01* +X804801Y78960D01* +X804749Y78890D01* +X804689Y78826D01* +X804663Y78777D01* +X804630Y78732D01* +X804599Y78651D01* +X804559Y78573D01* +X804551Y78525D01* +X804529Y78467D01* +X804517Y78319D01* +X804504Y78242D01* +X804504Y76273D01* +X803653Y74219D01* +X802081Y72647D01* +X800658Y72058D01* +X800584Y72014D01* +X800506Y71979D01* +X800463Y71942D01* +X800414Y71913D01* +X800355Y71851D01* +X800289Y71795D01* +X800257Y71748D01* +X800218Y71707D01* +X800179Y71630D01* +X800131Y71559D01* +X800114Y71505D01* +X800088Y71454D01* +X800072Y71370D01* +X800046Y71288D01* +X800044Y71231D01* +X800033Y71175D01* +X800041Y71090D01* +X800038Y71004D01* +X800053Y70949D01* +X800058Y70892D01* +X800088Y70812D01* +X800110Y70729D01* +X800139Y70680D01* +X800160Y70627D01* +X800212Y70558D01* +X800255Y70484D01* +X800297Y70445D01* +X800331Y70400D01* +X800400Y70348D01* +X800463Y70290D01* +X800513Y70264D01* +X800559Y70230D01* +X800639Y70199D01* +X800716Y70160D01* +X800765Y70152D01* +X800825Y70129D01* +X800970Y70118D01* +X801047Y70105D01* +X807967Y70105D01* +X811583Y66488D01* +X811653Y66436D01* +X811717Y66376D01* +X811767Y66350D01* +X811811Y66317D01* +X811892Y66286D01* +X811970Y66246D01* +X812018Y66238D01* +X812076Y66216D01* +X812224Y66204D01* +X812301Y66191D01* +X814197Y66191D01* +X814255Y66199D01* +X814313Y66197D01* +X814395Y66219D01* +X814479Y66231D01* +X814532Y66254D01* +X814588Y66269D01* +X814661Y66312D01* +X814738Y66347D01* +X814783Y66385D01* +X814833Y66414D01* +X814891Y66476D01* +X814955Y66530D01* +X814987Y66579D01* +X815027Y66622D01* +X815066Y66697D01* +X815113Y66767D01* +X815130Y66823D01* +X815157Y66875D01* +X815168Y66943D01* +X815198Y67038D01* +X815201Y67138D01* +X815212Y67206D01* +X815212Y70394D01* +X817710Y72891D01* +X817762Y72961D01* +X817822Y73025D01* +X817848Y73075D01* +X817881Y73119D01* +X817912Y73200D01* +X817952Y73278D01* +X817960Y73326D01* +X817982Y73384D01* +X817994Y73532D01* +X818007Y73609D01* +X818007Y76938D01* +X819762Y78693D01* +X825818Y78693D01* +X827322Y77189D01* +X827369Y77154D01* +X827409Y77111D01* +X827482Y77069D01* +X827549Y77018D01* +X827604Y76997D01* +X827654Y76968D01* +X827736Y76947D01* +X827815Y76917D01* +X827873Y76912D01* +X827930Y76897D01* +X828014Y76900D01* +X828098Y76893D01* +X828156Y76905D01* +X828214Y76906D01* +X828294Y76932D01* +X828377Y76949D01* +X828429Y76976D01* +X828485Y76994D01* +X828541Y77034D01* +X828629Y77080D01* +X828702Y77149D01* +X828758Y77189D01* +X830262Y78693D01* +X836318Y78693D01* +X838073Y76938D01* +X838073Y73609D01* +X838085Y73523D01* +X838088Y73435D01* +X838105Y73383D01* +X838113Y73328D01* +X838148Y73248D01* +X838175Y73165D01* +X838203Y73126D01* +X838229Y73068D01* +X838325Y72955D01* +X838370Y72891D01* +X840868Y70394D01* +X840868Y67206D01* +X840876Y67148D01* +X840874Y67090D01* +X840896Y67008D01* +X840908Y66924D01* +X840931Y66871D01* +X840946Y66815D01* +X840989Y66742D01* +X841024Y66665D01* +X841062Y66620D01* +X841091Y66570D01* +X841153Y66512D01* +X841207Y66448D01* +X841256Y66416D01* +X841299Y66376D01* +X841374Y66337D01* +X841444Y66290D01* +X841500Y66273D01* +X841552Y66246D01* +X841620Y66235D01* +X841715Y66205D01* +X841815Y66202D01* +X841883Y66191D01* +X844139Y66191D01* +X844603Y65726D01* +X844673Y65674D01* +X844737Y65614D01* +X844786Y65588D01* +X844830Y65555D01* +X844912Y65524D01* +X844990Y65484D01* +X845038Y65476D01* +X845096Y65454D01* +X845244Y65442D01* +X845321Y65429D01* +X845486Y65429D01* +X845573Y65441D01* +G37* +G36* +X550744Y173241D02* +X550744Y173241D01* +X550831Y173244D01* +X550884Y173261D01* +X550939Y173269D01* +X551019Y173304D01* +X551102Y173331D01* +X551141Y173359D01* +X551198Y173385D01* +X551311Y173481D01* +X551375Y173526D01* +X553062Y175213D01* +X559118Y175213D01* +X560622Y173709D01* +X560669Y173674D01* +X560709Y173631D01* +X560782Y173589D01* +X560849Y173538D01* +X560904Y173517D01* +X560954Y173487D01* +X561036Y173467D01* +X561115Y173437D01* +X561173Y173432D01* +X561230Y173417D01* +X561314Y173420D01* +X561398Y173413D01* +X561456Y173425D01* +X561514Y173426D01* +X561594Y173452D01* +X561677Y173469D01* +X561729Y173496D01* +X561785Y173514D01* +X561841Y173554D01* +X561929Y173600D01* +X562002Y173669D01* +X562058Y173709D01* +X562721Y174372D01* +X562756Y174419D01* +X562799Y174459D01* +X562841Y174532D01* +X562892Y174599D01* +X562913Y174654D01* +X562942Y174704D01* +X562963Y174786D01* +X562993Y174865D01* +X562998Y174923D01* +X563013Y174980D01* +X563010Y175064D01* +X563017Y175148D01* +X563005Y175206D01* +X563004Y175264D01* +X562978Y175344D01* +X562961Y175427D01* +X562934Y175479D01* +X562916Y175535D01* +X562876Y175591D01* +X562830Y175679D01* +X562761Y175752D01* +X562721Y175808D01* +X561387Y177142D01* +X561387Y183198D01* +X562891Y184702D01* +X562926Y184749D01* +X562969Y184789D01* +X563011Y184862D01* +X563062Y184929D01* +X563083Y184984D01* +X563112Y185034D01* +X563133Y185116D01* +X563163Y185195D01* +X563168Y185253D01* +X563183Y185310D01* +X563180Y185394D01* +X563187Y185478D01* +X563175Y185536D01* +X563174Y185594D01* +X563148Y185674D01* +X563131Y185757D01* +X563104Y185809D01* +X563086Y185865D01* +X563046Y185921D01* +X563000Y186009D01* +X562931Y186082D01* +X562891Y186138D01* +X561387Y187642D01* +X561387Y193698D01* +X563074Y195385D01* +X563126Y195455D01* +X563186Y195518D01* +X563212Y195568D01* +X563245Y195612D01* +X563276Y195694D01* +X563316Y195772D01* +X563324Y195819D01* +X563346Y195878D01* +X563358Y196025D01* +X563371Y196103D01* +X563371Y196650D01* +X563359Y196737D01* +X563356Y196824D01* +X563339Y196877D01* +X563331Y196932D01* +X563296Y197012D01* +X563283Y197050D01* +X563283Y197052D01* +X563269Y197095D01* +X563241Y197134D01* +X563215Y197191D01* +X563164Y197252D01* +X563138Y197296D01* +X563101Y197331D01* +X563074Y197368D01* +X561594Y198848D01* +X560718Y200962D01* +X560703Y200987D01* +X560694Y201015D01* +X560631Y201110D01* +X560574Y201207D01* +X560552Y201227D01* +X560536Y201252D01* +X560449Y201325D01* +X560367Y201402D01* +X560341Y201416D01* +X560318Y201435D01* +X560215Y201481D01* +X560114Y201532D01* +X560086Y201538D01* +X560059Y201550D01* +X559946Y201566D01* +X559835Y201587D01* +X559806Y201585D01* +X559777Y201589D01* +X559665Y201573D01* +X559552Y201563D01* +X559525Y201552D01* +X559496Y201548D01* +X559393Y201502D01* +X559287Y201461D01* +X559263Y201443D01* +X559237Y201431D01* +X559151Y201358D01* +X559060Y201289D01* +X559043Y201266D01* +X559020Y201247D01* +X558979Y201180D01* +X558890Y201062D01* +X558868Y201003D01* +X558842Y200962D01* +X558458Y200034D01* +X556886Y198462D01* +X554832Y197611D01* +X552608Y197611D01* +X550554Y198462D01* +X549162Y199854D01* +X549093Y199906D01* +X549029Y199966D01* +X548979Y199992D01* +X548935Y200025D01* +X548854Y200056D01* +X548776Y200096D01* +X548728Y200104D01* +X548670Y200126D01* +X548522Y200138D01* +X548445Y200151D01* +X544083Y200151D01* +X543996Y200139D01* +X543909Y200136D01* +X543856Y200119D01* +X543801Y200111D01* +X543721Y200076D01* +X543638Y200049D01* +X543599Y200021D01* +X543542Y199995D01* +X543429Y199899D01* +X543365Y199854D01* +X541678Y198167D01* +X535622Y198167D01* +X534118Y199671D01* +X534071Y199706D01* +X534031Y199749D01* +X533958Y199792D01* +X533891Y199842D01* +X533836Y199863D01* +X533786Y199892D01* +X533704Y199913D01* +X533625Y199943D01* +X533567Y199948D01* +X533510Y199963D01* +X533426Y199960D01* +X533342Y199967D01* +X533284Y199955D01* +X533226Y199954D01* +X533146Y199928D01* +X533063Y199911D01* +X533011Y199884D01* +X532955Y199866D01* +X532899Y199826D01* +X532811Y199780D01* +X532738Y199711D01* +X532682Y199671D01* +X531244Y198233D01* +X531209Y198187D01* +X531167Y198146D01* +X531124Y198073D01* +X531073Y198006D01* +X531052Y197951D01* +X531023Y197901D01* +X531002Y197819D01* +X530972Y197740D01* +X530967Y197682D01* +X530953Y197625D01* +X530955Y197541D01* +X530948Y197457D01* +X530960Y197400D01* +X530962Y197341D01* +X530988Y197261D01* +X531004Y197178D01* +X531031Y197126D01* +X531049Y197071D01* +X531089Y197015D01* +X531135Y196926D01* +X531204Y196854D01* +X531244Y196797D01* +X534195Y193846D01* +X534265Y193794D01* +X534329Y193734D01* +X534379Y193708D01* +X534423Y193675D01* +X534504Y193644D01* +X534582Y193604D01* +X534630Y193596D01* +X534688Y193574D01* +X534836Y193562D01* +X534913Y193549D01* +X535417Y193549D01* +X535504Y193561D01* +X535591Y193564D01* +X535644Y193581D01* +X535699Y193589D01* +X535779Y193624D01* +X535862Y193651D01* +X535901Y193679D01* +X535958Y193705D01* +X536071Y193801D01* +X536135Y193846D01* +X537822Y195533D01* +X543878Y195533D01* +X545633Y193778D01* +X545633Y187222D01* +X543878Y185467D01* +X541155Y185467D01* +X541126Y185463D01* +X541096Y185466D01* +X540985Y185443D01* +X540873Y185427D01* +X540846Y185415D01* +X540818Y185410D01* +X540717Y185358D01* +X540614Y185311D01* +X540591Y185292D01* +X540565Y185279D01* +X540483Y185201D01* +X540397Y185128D01* +X540381Y185103D01* +X540359Y185083D01* +X540302Y184985D01* +X540239Y184891D01* +X540230Y184863D01* +X540215Y184838D01* +X540188Y184728D01* +X540153Y184620D01* +X540153Y184591D01* +X540145Y184562D01* +X540149Y184449D01* +X540146Y184336D01* +X540153Y184307D01* +X540154Y184278D01* +X540189Y184170D01* +X540218Y184061D01* +X540233Y184035D01* +X540242Y184007D01* +X540288Y183943D01* +X540363Y183816D01* +X540409Y183773D01* +X540437Y183734D01* +X540553Y183618D01* +X540553Y180289D01* +X540565Y180203D01* +X540568Y180115D01* +X540585Y180063D01* +X540593Y180008D01* +X540628Y179928D01* +X540655Y179845D01* +X540683Y179806D01* +X540709Y179748D01* +X540805Y179635D01* +X540850Y179571D01* +X544069Y176353D01* +X544069Y175455D01* +X544081Y175369D01* +X544084Y175281D01* +X544101Y175229D01* +X544109Y175174D01* +X544144Y175094D01* +X544171Y175011D01* +X544199Y174972D01* +X544225Y174915D01* +X544321Y174801D01* +X544366Y174738D01* +X545578Y173526D01* +X545647Y173474D01* +X545711Y173414D01* +X545761Y173388D01* +X545805Y173355D01* +X545886Y173324D01* +X545964Y173284D01* +X546012Y173276D01* +X546070Y173254D01* +X546218Y173242D01* +X546295Y173229D01* +X550657Y173229D01* +X550744Y173241D01* +G37* +G36* +X467094Y160711D02* +X467094Y160711D01* +X467181Y160714D01* +X467234Y160731D01* +X467289Y160739D01* +X467369Y160774D01* +X467452Y160801D01* +X467491Y160829D01* +X467548Y160855D01* +X467661Y160951D01* +X467725Y160996D01* +X469162Y162433D01* +X472491Y162433D01* +X472577Y162445D01* +X472665Y162448D01* +X472717Y162465D01* +X472772Y162473D01* +X472852Y162508D01* +X472935Y162535D01* +X472974Y162563D01* +X473032Y162589D01* +X473145Y162685D01* +X473209Y162730D01* +X479170Y168691D01* +X479222Y168761D01* +X479282Y168825D01* +X479308Y168874D01* +X479341Y168919D01* +X479372Y169000D01* +X479412Y169078D01* +X479420Y169126D01* +X479442Y169184D01* +X479454Y169332D01* +X479467Y169409D01* +X479467Y176192D01* +X479459Y176250D01* +X479461Y176308D01* +X479439Y176390D01* +X479427Y176474D01* +X479404Y176527D01* +X479389Y176583D01* +X479346Y176656D01* +X479311Y176733D01* +X479273Y176778D01* +X479244Y176828D01* +X479182Y176886D01* +X479128Y176950D01* +X479079Y176982D01* +X479036Y177022D01* +X478961Y177061D01* +X478891Y177108D01* +X478835Y177125D01* +X478783Y177152D01* +X478715Y177163D01* +X478620Y177193D01* +X478520Y177196D01* +X478452Y177207D01* +X471070Y177207D01* +X471018Y177246D01* +X470954Y177306D01* +X470905Y177332D01* +X470861Y177365D01* +X470779Y177396D01* +X470701Y177436D01* +X470654Y177444D01* +X470595Y177466D01* +X470447Y177478D01* +X470370Y177491D01* +X470013Y177491D01* +X469927Y177479D01* +X469839Y177476D01* +X469787Y177459D01* +X469732Y177451D01* +X469652Y177416D01* +X469569Y177389D01* +X469530Y177361D01* +X469472Y177335D01* +X469359Y177239D01* +X469295Y177194D01* +X467579Y175477D01* +X465729Y175477D01* +X465642Y175465D01* +X465555Y175462D01* +X465502Y175445D01* +X465447Y175437D01* +X465367Y175402D01* +X465284Y175375D01* +X465245Y175347D01* +X465188Y175321D01* +X465075Y175225D01* +X465011Y175180D01* +X463018Y173187D01* +X456462Y173187D01* +X454707Y174942D01* +X454707Y175113D01* +X454703Y175142D01* +X454706Y175171D01* +X454683Y175282D01* +X454667Y175394D01* +X454655Y175421D01* +X454650Y175450D01* +X454597Y175550D01* +X454551Y175654D01* +X454532Y175676D01* +X454519Y175702D01* +X454441Y175784D01* +X454368Y175871D01* +X454343Y175887D01* +X454323Y175908D01* +X454225Y175965D01* +X454131Y176028D01* +X454103Y176037D01* +X454078Y176052D01* +X453968Y176080D01* +X453860Y176114D01* +X453831Y176115D01* +X453802Y176122D01* +X453689Y176118D01* +X453576Y176121D01* +X453547Y176114D01* +X453518Y176113D01* +X453410Y176078D01* +X453301Y176049D01* +X453275Y176034D01* +X453247Y176025D01* +X453184Y175980D01* +X453056Y175904D01* +X453013Y175858D01* +X452974Y175830D01* +X452746Y175602D01* +X450692Y174751D01* +X448903Y174751D01* +X448816Y174739D01* +X448729Y174736D01* +X448676Y174719D01* +X448621Y174711D01* +X448542Y174676D01* +X448458Y174649D01* +X448419Y174621D01* +X448362Y174595D01* +X448249Y174499D01* +X448185Y174454D01* +X445815Y172084D01* +X444896Y172084D01* +X444809Y172072D01* +X444722Y172069D01* +X444669Y172052D01* +X444614Y172044D01* +X444534Y172009D01* +X444451Y171982D01* +X444412Y171954D01* +X444355Y171928D01* +X444242Y171832D01* +X444178Y171787D01* +X442618Y170227D01* +X438345Y170227D01* +X438316Y170223D01* +X438287Y170226D01* +X438176Y170203D01* +X438064Y170187D01* +X438037Y170175D01* +X438008Y170170D01* +X437908Y170118D01* +X437804Y170071D01* +X437782Y170052D01* +X437756Y170039D01* +X437674Y169961D01* +X437587Y169888D01* +X437571Y169863D01* +X437550Y169843D01* +X437493Y169745D01* +X437430Y169651D01* +X437421Y169623D01* +X437406Y169598D01* +X437378Y169488D01* +X437344Y169380D01* +X437343Y169350D01* +X437336Y169322D01* +X437340Y169209D01* +X437337Y169096D01* +X437344Y169067D01* +X437345Y169038D01* +X437380Y168930D01* +X437409Y168821D01* +X437424Y168795D01* +X437433Y168767D01* +X437478Y168704D01* +X437554Y168576D01* +X437599Y168533D01* +X437627Y168494D01* +X445125Y160996D01* +X445195Y160944D01* +X445259Y160884D01* +X445309Y160858D01* +X445353Y160825D01* +X445434Y160794D01* +X445512Y160754D01* +X445560Y160746D01* +X445618Y160724D01* +X445766Y160712D01* +X445843Y160699D01* +X467007Y160699D01* +X467094Y160711D01* +G37* +%LPC*% +G36* +X1022508Y159511D02* +X1022508Y159511D01* +X1020454Y160362D01* +X1018882Y161934D01* +X1018031Y163988D01* +X1018031Y166212D01* +X1018882Y168266D01* +X1020078Y169462D01* +X1020114Y169509D01* +X1020156Y169549D01* +X1020199Y169622D01* +X1020249Y169689D01* +X1020270Y169744D01* +X1020300Y169794D01* +X1020320Y169876D01* +X1020351Y169955D01* +X1020355Y170013D01* +X1020370Y170070D01* +X1020367Y170154D01* +X1020374Y170238D01* +X1020363Y170296D01* +X1020361Y170354D01* +X1020335Y170434D01* +X1020318Y170517D01* +X1020291Y170569D01* +X1020273Y170625D01* +X1020233Y170681D01* +X1020187Y170769D01* +X1020118Y170842D01* +X1020078Y170898D01* +X1018882Y172094D01* +X1018031Y174148D01* +X1018031Y176372D01* +X1018882Y178426D01* +X1020454Y179998D01* +X1022508Y180849D01* +X1024732Y180849D01* +X1026786Y179998D01* +X1027819Y178965D01* +X1027865Y178930D01* +X1027906Y178888D01* +X1027978Y178845D01* +X1028046Y178794D01* +X1028100Y178773D01* +X1028151Y178744D01* +X1028232Y178723D01* +X1028311Y178693D01* +X1028370Y178688D01* +X1028426Y178674D01* +X1028511Y178676D01* +X1028595Y178669D01* +X1028652Y178681D01* +X1028710Y178683D01* +X1028791Y178709D01* +X1028873Y178725D01* +X1028925Y178752D01* +X1028981Y178770D01* +X1029037Y178810D01* +X1029126Y178856D01* +X1029198Y178925D01* +X1029254Y178965D01* +X1030502Y180213D01* +X1037058Y180213D01* +X1038813Y178458D01* +X1038813Y172402D01* +X1037309Y170898D01* +X1037274Y170851D01* +X1037231Y170811D01* +X1037189Y170738D01* +X1037138Y170671D01* +X1037117Y170616D01* +X1037088Y170566D01* +X1037067Y170484D01* +X1037037Y170405D01* +X1037032Y170347D01* +X1037017Y170290D01* +X1037020Y170206D01* +X1037013Y170122D01* +X1037025Y170064D01* +X1037026Y170006D01* +X1037052Y169926D01* +X1037069Y169843D01* +X1037096Y169791D01* +X1037114Y169735D01* +X1037154Y169679D01* +X1037200Y169591D01* +X1037269Y169518D01* +X1037309Y169462D01* +X1038813Y167958D01* +X1038813Y161902D01* +X1037058Y160147D01* +X1030502Y160147D01* +X1029254Y161395D01* +X1029208Y161430D01* +X1029167Y161472D01* +X1029094Y161515D01* +X1029027Y161566D01* +X1028972Y161587D01* +X1028922Y161616D01* +X1028840Y161637D01* +X1028761Y161667D01* +X1028703Y161672D01* +X1028646Y161686D01* +X1028562Y161684D01* +X1028478Y161691D01* +X1028421Y161679D01* +X1028362Y161677D01* +X1028282Y161651D01* +X1028199Y161635D01* +X1028147Y161608D01* +X1028092Y161590D01* +X1028036Y161550D01* +X1027947Y161504D01* +X1027875Y161435D01* +X1027819Y161395D01* +X1026786Y160362D01* +X1024732Y159511D01* +X1022508Y159511D01* +G37* +%LPD*% +%LPC*% +G36* +X402081Y28701D02* +X402081Y28701D01* +X402081Y48261D01* +X419434Y48261D01* +X420081Y48088D01* +X420660Y47753D01* +X421133Y47280D01* +X421468Y46701D01* +X421641Y46054D01* +X421641Y28701D01* +X402081Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X973581Y28701D02* +X973581Y28701D01* +X973581Y48261D01* +X990934Y48261D01* +X991581Y48088D01* +X992160Y47753D01* +X992633Y47280D01* +X992968Y46701D01* +X993141Y46054D01* +X993141Y28701D01* +X973581Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X949959Y28701D02* +X949959Y28701D01* +X949959Y46054D01* +X950132Y46701D01* +X950467Y47280D01* +X950940Y47753D01* +X951519Y48088D01* +X952166Y48261D01* +X969519Y48261D01* +X969519Y28701D01* +X949959Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X378459Y28701D02* +X378459Y28701D01* +X378459Y46054D01* +X378632Y46701D01* +X378967Y47280D01* +X379440Y47753D01* +X380019Y48088D01* +X380666Y48261D01* +X398019Y48261D01* +X398019Y28701D01* +X378459Y28701D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y213875D02* +X315317Y213875D01* +X311302Y215538D01* +X308230Y218611D01* +X306567Y222625D01* +X306567Y226971D01* +X308230Y230985D01* +X311302Y234058D01* +X315317Y235721D01* +X319662Y235721D01* +X323677Y234058D01* +X326749Y230985D01* +X328412Y226971D01* +X328412Y222625D01* +X326749Y218611D01* +X323677Y215538D01* +X319662Y213875D01* +X315317Y213875D01* +G37* +%LPD*% +%LPC*% +G36* +X289917Y150375D02* +X289917Y150375D01* +X285902Y152038D01* +X282830Y155111D01* +X281167Y159125D01* +X281167Y163471D01* +X282830Y167485D01* +X285902Y170558D01* +X289917Y172221D01* +X294262Y172221D01* +X298277Y170558D01* +X301349Y167485D01* +X303012Y163471D01* +X303012Y159125D01* +X301349Y155111D01* +X298277Y152038D01* +X294262Y150375D01* +X289917Y150375D01* +G37* +%LPD*% +%LPC*% +G36* +X315317Y137675D02* +X315317Y137675D01* +X311302Y139338D01* +X308230Y142411D01* +X306567Y146425D01* +X306567Y150771D01* +X308230Y154785D01* +X311302Y157858D01* +X315317Y159521D01* +X319662Y159521D01* +X323677Y157858D01* +X326749Y154785D01* +X328412Y150771D01* +X328412Y146425D01* +X326749Y142411D01* +X323677Y139338D01* +X319662Y137675D01* +X315317Y137675D01* +G37* +%LPD*% +%LPC*% +G36* +X289995Y226965D02* +X289995Y226965D01* +X286123Y228569D01* +X283160Y231532D01* +X282878Y232213D01* +X281557Y235403D01* +X281557Y239593D01* +X282878Y242782D01* +X283094Y243303D01* +X283160Y243464D01* +X286123Y246427D01* +X289995Y248031D01* +X294185Y248031D01* +X298056Y246427D01* +X301019Y243464D01* +X302622Y239593D01* +X302622Y235403D01* +X301019Y231532D01* +X298056Y228569D01* +X294185Y226965D01* +X289995Y226965D01* +G37* +%LPD*% +%LPC*% +G36* +X133023Y8722D02* +X133023Y8722D01* +X128783Y12396D01* +X127202Y17780D01* +X128783Y23164D01* +X133023Y26838D01* +X138577Y27637D01* +X143681Y25306D01* +X146715Y20585D01* +X146715Y14975D01* +X143681Y10254D01* +X138577Y7923D01* +X133023Y8722D01* +G37* +%LPD*% +%LPC*% +G36* +X445443Y354162D02* +X445443Y354162D01* +X441203Y357836D01* +X439622Y363220D01* +X441203Y368604D01* +X445443Y372278D01* +X450997Y373077D01* +X456101Y370746D01* +X459135Y366025D01* +X459135Y360415D01* +X456101Y355694D01* +X450997Y353363D01* +X445443Y354162D01* +G37* +%LPD*% +%LPC*% +G36* +X1253163Y87462D02* +X1253163Y87462D01* +X1248923Y91136D01* +X1247342Y96520D01* +X1248923Y101904D01* +X1253163Y105578D01* +X1258717Y106377D01* +X1263821Y104046D01* +X1266855Y99325D01* +X1266855Y93715D01* +X1263821Y88994D01* +X1258717Y86663D01* +X1253163Y87462D01* +G37* +%LPD*% +G36* +X790883Y74181D02* +X790883Y74181D01* +X790971Y74184D01* +X791023Y74201D01* +X791078Y74209D01* +X791158Y74244D01* +X791241Y74271D01* +X791280Y74299D01* +X791338Y74325D01* +X791451Y74421D01* +X791515Y74466D01* +X793029Y75980D01* +X793081Y76050D01* +X793141Y76114D01* +X793167Y76163D01* +X793200Y76208D01* +X793231Y76289D01* +X793271Y76367D01* +X793279Y76415D01* +X793301Y76473D01* +X793313Y76621D01* +X793326Y76698D01* +X793326Y78497D01* +X794177Y80551D01* +X795749Y82123D01* +X797803Y82974D01* +X799552Y82974D01* +X799610Y82982D01* +X799668Y82980D01* +X799750Y83002D01* +X799834Y83014D01* +X799887Y83037D01* +X799943Y83052D01* +X800016Y83095D01* +X800093Y83130D01* +X800138Y83168D01* +X800188Y83197D01* +X800246Y83259D01* +X800310Y83313D01* +X800342Y83362D01* +X800382Y83405D01* +X800421Y83480D01* +X800468Y83550D01* +X800485Y83606D01* +X800512Y83658D01* +X800523Y83726D01* +X800553Y83821D01* +X800556Y83921D01* +X800567Y83989D01* +X800567Y89638D01* +X802322Y91393D01* +X808378Y91393D01* +X808653Y91118D01* +X808677Y91100D01* +X808696Y91078D01* +X808790Y91015D01* +X808880Y90947D01* +X808908Y90936D01* +X808932Y90920D01* +X809040Y90886D01* +X809146Y90846D01* +X809175Y90843D01* +X809203Y90834D01* +X809317Y90831D01* +X809429Y90822D01* +X809458Y90828D01* +X809487Y90827D01* +X809597Y90856D01* +X809708Y90878D01* +X809734Y90891D01* +X809762Y90899D01* +X809860Y90957D01* +X809960Y91009D01* +X809982Y91029D01* +X810007Y91044D01* +X810084Y91127D01* +X810166Y91205D01* +X810181Y91230D01* +X810201Y91251D01* +X810253Y91352D01* +X810310Y91450D01* +X810317Y91478D01* +X810331Y91505D01* +X810344Y91582D01* +X810380Y91726D01* +X810378Y91788D01* +X810386Y91836D01* +X810386Y96416D01* +X810378Y96474D01* +X810380Y96532D01* +X810358Y96614D01* +X810346Y96698D01* +X810323Y96751D01* +X810308Y96807D01* +X810265Y96880D01* +X810230Y96957D01* +X810192Y97002D01* +X810163Y97052D01* +X810101Y97110D01* +X810047Y97174D01* +X809998Y97206D01* +X809955Y97246D01* +X809880Y97285D01* +X809810Y97332D01* +X809754Y97349D01* +X809702Y97376D01* +X809634Y97387D01* +X809539Y97417D01* +X809439Y97420D01* +X809371Y97431D01* +X800409Y97431D01* +X800323Y97419D01* +X800235Y97416D01* +X800183Y97399D01* +X800128Y97391D01* +X800048Y97356D01* +X799965Y97329D01* +X799926Y97301D01* +X799868Y97275D01* +X799755Y97179D01* +X799691Y97134D01* +X778459Y75902D01* +X778442Y75878D01* +X778419Y75859D01* +X778357Y75765D01* +X778289Y75675D01* +X778278Y75647D01* +X778262Y75623D01* +X778228Y75515D01* +X778187Y75409D01* +X778185Y75380D01* +X778176Y75352D01* +X778173Y75238D01* +X778164Y75126D01* +X778169Y75097D01* +X778169Y75068D01* +X778197Y74958D01* +X778220Y74847D01* +X778233Y74821D01* +X778241Y74793D01* +X778298Y74695D01* +X778351Y74595D01* +X778371Y74573D01* +X778386Y74548D01* +X778468Y74471D01* +X778546Y74389D01* +X778572Y74374D01* +X778593Y74354D01* +X778694Y74302D01* +X778792Y74245D01* +X778820Y74238D01* +X778846Y74224D01* +X778924Y74211D01* +X779067Y74175D01* +X779130Y74177D01* +X779177Y74169D01* +X790797Y74169D01* +X790883Y74181D01* +G37* +G36* +X386232Y351259D02* +X386232Y351259D01* +X386261Y351256D01* +X386372Y351279D01* +X386484Y351295D01* +X386511Y351307D01* +X386540Y351312D01* +X386640Y351364D01* +X386744Y351411D01* +X386766Y351430D01* +X386792Y351443D01* +X386874Y351521D01* +X386961Y351594D01* +X386977Y351619D01* +X386998Y351639D01* +X387055Y351737D01* +X387118Y351831D01* +X387127Y351859D01* +X387142Y351884D01* +X387170Y351994D01* +X387204Y352102D01* +X387205Y352132D01* +X387212Y352160D01* +X387208Y352273D01* +X387211Y352386D01* +X387204Y352415D01* +X387203Y352444D01* +X387168Y352552D01* +X387139Y352661D01* +X387124Y352687D01* +X387115Y352715D01* +X387070Y352778D01* +X386994Y352906D01* +X386949Y352949D01* +X386921Y352988D01* +X373939Y365970D01* +X373869Y366022D01* +X373805Y366082D01* +X373755Y366108D01* +X373711Y366141D01* +X373630Y366172D01* +X373552Y366212D01* +X373504Y366220D01* +X373446Y366242D01* +X373298Y366254D01* +X373221Y366267D01* +X356148Y366267D01* +X356090Y366259D01* +X356032Y366261D01* +X355950Y366239D01* +X355866Y366227D01* +X355813Y366204D01* +X355757Y366189D01* +X355684Y366146D01* +X355607Y366111D01* +X355562Y366073D01* +X355512Y366044D01* +X355454Y365982D01* +X355390Y365928D01* +X355358Y365879D01* +X355318Y365836D01* +X355279Y365761D01* +X355232Y365691D01* +X355215Y365635D01* +X355188Y365583D01* +X355177Y365515D01* +X355147Y365420D01* +X355144Y365320D01* +X355133Y365252D01* +X355133Y359942D01* +X354219Y359028D01* +X354184Y358981D01* +X354141Y358941D01* +X354098Y358868D01* +X354048Y358801D01* +X354027Y358746D01* +X353998Y358696D01* +X353977Y358614D01* +X353947Y358535D01* +X353942Y358477D01* +X353927Y358420D01* +X353930Y358336D01* +X353923Y358252D01* +X353935Y358194D01* +X353936Y358136D01* +X353962Y358056D01* +X353979Y357973D01* +X354006Y357921D01* +X354024Y357865D01* +X354064Y357809D01* +X354110Y357721D01* +X354179Y357648D01* +X354219Y357592D01* +X354882Y356929D01* +X354929Y356894D01* +X354969Y356851D01* +X355042Y356808D01* +X355109Y356758D01* +X355164Y356737D01* +X355214Y356708D01* +X355296Y356687D01* +X355375Y356657D01* +X355433Y356652D01* +X355490Y356637D01* +X355574Y356640D01* +X355658Y356633D01* +X355716Y356645D01* +X355774Y356646D01* +X355854Y356672D01* +X355937Y356689D01* +X355989Y356716D01* +X356045Y356734D01* +X356101Y356774D01* +X356189Y356820D01* +X356262Y356889D01* +X356318Y356929D01* +X357402Y358013D01* +X363958Y358013D01* +X365395Y356576D01* +X365465Y356524D01* +X365529Y356464D01* +X365578Y356438D01* +X365622Y356405D01* +X365704Y356374D01* +X365782Y356334D01* +X365829Y356326D01* +X365888Y356304D01* +X366035Y356292D01* +X366113Y356279D01* +X379553Y356279D01* +X384279Y351552D01* +X384349Y351500D01* +X384413Y351440D01* +X384463Y351414D01* +X384507Y351381D01* +X384588Y351350D01* +X384666Y351310D01* +X384714Y351302D01* +X384772Y351280D01* +X384920Y351268D01* +X384997Y351255D01* +X386203Y351255D01* +X386232Y351259D01* +G37* +%LPC*% +G36* +X261121Y273829D02* +X261121Y273829D01* +X261121Y286903D01* +X262069Y286778D01* +X263999Y286261D01* +X265845Y285496D01* +X267575Y284497D01* +X269160Y283281D01* +X270573Y281869D01* +X271789Y280283D01* +X272788Y278553D01* +X273552Y276707D01* +X274070Y274778D01* +X274194Y273829D01* +X261121Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y116329D02* +X261121Y116329D01* +X261121Y129403D01* +X262069Y129278D01* +X263999Y128761D01* +X265845Y127996D01* +X267575Y126997D01* +X269160Y125781D01* +X270573Y124369D01* +X271789Y122783D01* +X272788Y121053D01* +X273552Y119207D01* +X274070Y117278D01* +X274194Y116329D01* +X261121Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X261121Y269767D02* +X261121Y269767D01* +X274194Y269767D01* +X274070Y268818D01* +X273552Y266888D01* +X272788Y265043D01* +X271789Y263312D01* +X270573Y261727D01* +X269160Y260315D01* +X267575Y259099D01* +X265845Y258100D01* +X263999Y257335D01* +X262069Y256818D01* +X261121Y256693D01* +X261121Y269767D01* +G37* +%LPD*% +%LPC*% +G36* +X243985Y273829D02* +X243985Y273829D01* +X244110Y274778D01* +X244627Y276707D01* +X245391Y278553D01* +X246390Y280283D01* +X247607Y281869D01* +X249019Y283281D01* +X250604Y284497D01* +X252334Y285496D01* +X254180Y286261D01* +X256110Y286778D01* +X257058Y286903D01* +X257058Y273829D01* +X243985Y273829D01* +G37* +%LPD*% +%LPC*% +G36* +X243985Y116329D02* +X243985Y116329D01* +X244110Y117278D01* +X244627Y119207D01* +X245391Y121053D01* +X246390Y122783D01* +X247607Y124369D01* +X249019Y125781D01* +X250604Y126997D01* +X252334Y127996D01* +X254180Y128761D01* +X256110Y129278D01* +X257058Y129403D01* +X257058Y116329D01* +X243985Y116329D01* +G37* +%LPD*% +%LPC*% +G36* +X256110Y256818D02* +X256110Y256818D01* +X254180Y257335D01* +X252334Y258100D01* +X250604Y259099D01* +X249019Y260315D01* +X247607Y261727D01* +X246390Y263312D01* +X245391Y265043D01* +X244627Y266888D01* +X244110Y268818D01* +X243985Y269767D01* +X257058Y269767D01* +X257058Y256693D01* +X256110Y256818D01* +G37* +%LPD*% +%LPC*% +G36* +X1177448Y283971D02* +X1177448Y283971D01* +X1175394Y284822D01* +X1173822Y286394D01* +X1172971Y288448D01* +X1172971Y290672D01* +X1173822Y292726D01* +X1175394Y294298D01* +X1177448Y295149D01* +X1179672Y295149D01* +X1181726Y294298D01* +X1183298Y292726D01* +X1184149Y290672D01* +X1184149Y288448D01* +X1183298Y286394D01* +X1181726Y284822D01* +X1179672Y283971D01* +X1177448Y283971D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y258317D02* +X181635Y258317D01* +X181635Y267537D01* +X182280Y267435D01* +X183992Y266879D01* +X185595Y266062D01* +X187050Y265004D01* +X188323Y263732D01* +X189380Y262276D01* +X190197Y260673D01* +X190753Y258962D01* +X190855Y258317D01* +X181635Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X168352Y258317D02* +X168352Y258317D01* +X168454Y258962D01* +X169010Y260673D01* +X169827Y262276D01* +X170885Y263732D01* +X172157Y265004D01* +X173613Y266062D01* +X175216Y266879D01* +X176927Y267435D01* +X177572Y267537D01* +X177572Y258317D01* +X168352Y258317D01* +G37* +%LPD*% +%LPC*% +G36* +X181635Y254254D02* +X181635Y254254D01* +X190855Y254254D01* +X190753Y253609D01* +X190197Y251897D01* +X189380Y250294D01* +X188323Y248839D01* +X187050Y247566D01* +X185595Y246509D01* +X183992Y245692D01* +X182280Y245136D01* +X181635Y245034D01* +X181635Y254254D01* +G37* +%LPD*% +%LPC*% +G36* +X176927Y245136D02* +X176927Y245136D01* +X175216Y245692D01* +X173613Y246509D01* +X172157Y247566D01* +X170885Y248839D01* +X169827Y250294D01* +X169010Y251897D01* +X168454Y253609D01* +X168352Y254254D01* +X177572Y254254D01* +X177572Y245034D01* +X176927Y245136D01* +G37* +%LPD*% +%LPC*% +G36* +X357631Y42379D02* +X357631Y42379D01* +X357631Y48389D01* +X363141Y48389D01* +X363141Y46105D01* +X362848Y45014D01* +X362283Y44035D01* +X361485Y43237D01* +X360506Y42672D01* +X359415Y42379D01* +X357631Y42379D01* +G37* +%LPD*% +%LPC*% +G36* +X351785Y42379D02* +X351785Y42379D01* +X350694Y42672D01* +X349715Y43237D01* +X348917Y44035D01* +X348352Y45014D01* +X348059Y46105D01* +X348059Y48389D01* +X353569Y48389D01* +X353569Y42379D01* +X351785Y42379D01* +G37* +%LPD*% +%LPC*% +G36* +X179603Y256284D02* +X179603Y256284D01* +X179603Y256286D01* +X179605Y256286D01* +X179605Y256284D01* +X179603Y256284D01* +G37* +%LPD*% +%LPC*% +G36* +X259089Y271797D02* +X259089Y271797D01* +X259089Y271799D01* +X259090Y271799D01* +X259090Y271797D01* +X259089Y271797D01* +G37* +%LPD*% +D10* +X248418Y349598D02* +X248418Y346022D01* +X244342Y346022D01* +X244342Y349598D01* +X248418Y349598D01* +X248418Y347851D02* +X244342Y347851D01* +X248418Y356522D02* +X248418Y360098D01* +X248418Y356522D02* +X244342Y356522D01* +X244342Y360098D01* +X248418Y360098D01* +X248418Y358351D02* +X244342Y358351D01* +X345942Y194998D02* +X345942Y191422D01* +X345942Y194998D02* +X350018Y194998D01* +X350018Y191422D01* +X345942Y191422D01* +X345942Y193251D02* +X350018Y193251D01* +X345942Y184498D02* +X345942Y180922D01* +X345942Y184498D02* +X350018Y184498D01* +X350018Y180922D01* +X345942Y180922D01* +X345942Y182751D02* +X350018Y182751D01* +X499878Y246962D02* +X499878Y250538D01* +X499878Y246962D02* +X495802Y246962D01* +X495802Y250538D01* +X499878Y250538D01* +X499878Y248791D02* +X495802Y248791D01* +X499878Y257462D02* +X499878Y261038D01* +X499878Y257462D02* +X495802Y257462D01* +X495802Y261038D01* +X499878Y261038D01* +X499878Y259291D02* +X495802Y259291D01* +D11* +X579830Y66870D02* +X579830Y59370D01* +X573330Y59370D01* +X573330Y66870D01* +X579830Y66870D01* +X579830Y62695D02* +X573330Y62695D01* +X573330Y66020D02* +X579830Y66020D01* +X579830Y75370D02* +X579830Y82870D01* +X579830Y75370D02* +X573330Y75370D01* +X573330Y82870D01* +X579830Y82870D01* +X579830Y78695D02* +X573330Y78695D01* +X573330Y82020D02* +X579830Y82020D01* +X352350Y70170D02* +X352350Y62670D01* +X352350Y70170D02* +X358850Y70170D01* +X358850Y62670D01* +X352350Y62670D01* +X352350Y65995D02* +X358850Y65995D01* +X358850Y69320D02* +X352350Y69320D01* +X352350Y54170D02* +X352350Y46670D01* +X352350Y54170D02* +X358850Y54170D01* +X358850Y46670D01* +X352350Y46670D01* +X352350Y49995D02* +X358850Y49995D01* +X358850Y53320D02* +X352350Y53320D01* +D10* +X691382Y163482D02* +X691382Y167058D01* +X695458Y167058D01* +X695458Y163482D01* +X691382Y163482D01* +X691382Y165311D02* +X695458Y165311D01* +X691382Y156558D02* +X691382Y152982D01* +X691382Y156558D02* +X695458Y156558D01* +X695458Y152982D01* +X691382Y152982D01* +X691382Y154811D02* +X695458Y154811D01* +X995178Y272362D02* +X995178Y275938D01* +X995178Y272362D02* +X991102Y272362D01* +X991102Y275938D01* +X995178Y275938D01* +X995178Y274191D02* +X991102Y274191D01* +X995178Y282862D02* +X995178Y286438D01* +X995178Y282862D02* +X991102Y282862D01* +X991102Y286438D01* +X995178Y286438D01* +X995178Y284691D02* +X991102Y284691D01* +X865638Y156558D02* +X865638Y152982D01* +X861562Y152982D01* +X861562Y156558D01* +X865638Y156558D01* +X865638Y154811D02* +X861562Y154811D01* +X865638Y163482D02* +X865638Y167058D01* +X865638Y163482D02* +X861562Y163482D01* +X861562Y167058D01* +X865638Y167058D01* +X865638Y165311D02* +X861562Y165311D01* +D11* +X498510Y296470D02* +X498510Y302970D01* +X509010Y302970D01* +X509010Y296470D01* +X498510Y296470D01* +X498510Y299795D02* +X509010Y299795D01* +X476510Y293470D02* +X476510Y286970D01* +X476510Y293470D02* +X487010Y293470D01* +X487010Y286970D01* +X476510Y286970D01* +X476510Y290295D02* +X487010Y290295D01* +X476510Y305970D02* +X476510Y312470D01* +X487010Y312470D01* +X487010Y305970D01* +X476510Y305970D01* +X476510Y309295D02* +X487010Y309295D01* +X457870Y326950D02* +X457870Y333450D01* +X468370Y333450D01* +X468370Y326950D01* +X457870Y326950D01* +X457870Y330275D02* +X468370Y330275D01* +X435870Y323950D02* +X435870Y317450D01* +X435870Y323950D02* +X446370Y323950D01* +X446370Y317450D01* +X435870Y317450D01* +X435870Y320775D02* +X446370Y320775D01* +X435870Y336450D02* +X435870Y342950D01* +X446370Y342950D01* +X446370Y336450D01* +X435870Y336450D01* +X435870Y339775D02* +X446370Y339775D01* +D10* +X1029202Y98478D02* +X1029202Y94902D01* +X1029202Y98478D02* +X1033278Y98478D01* +X1033278Y94902D01* +X1029202Y94902D01* +X1029202Y96731D02* +X1033278Y96731D01* +X1029202Y87978D02* +X1029202Y84402D01* +X1029202Y87978D02* +X1033278Y87978D01* +X1033278Y84402D01* +X1029202Y84402D01* +X1029202Y86231D02* +X1033278Y86231D01* +X704082Y143162D02* +X704082Y146738D01* +X708158Y146738D01* +X708158Y143162D01* +X704082Y143162D01* +X704082Y144991D02* +X708158Y144991D01* +X704082Y136238D02* +X704082Y132662D01* +X704082Y136238D02* +X708158Y136238D01* +X708158Y132662D01* +X704082Y132662D01* +X704082Y134491D02* +X708158Y134491D01* +X1252802Y140202D02* +X1256378Y140202D01* +X1252802Y140202D02* +X1252802Y144278D01* +X1256378Y144278D01* +X1256378Y140202D01* +X1256378Y142031D02* +X1252802Y142031D01* +X1252802Y143860D02* +X1256378Y143860D01* +X1263302Y140202D02* +X1266878Y140202D01* +X1263302Y140202D02* +X1263302Y144278D01* +X1266878Y144278D01* +X1266878Y140202D01* +X1266878Y142031D02* +X1263302Y142031D01* +X1263302Y143860D02* +X1266878Y143860D01* +X540438Y261118D02* +X536862Y261118D01* +X540438Y261118D02* +X540438Y257042D01* +X536862Y257042D01* +X536862Y261118D01* +X536862Y258871D02* +X540438Y258871D01* +X540438Y260700D02* +X536862Y260700D01* +X529938Y261118D02* +X526362Y261118D01* +X529938Y261118D02* +X529938Y257042D01* +X526362Y257042D01* +X526362Y261118D01* +X526362Y258871D02* +X529938Y258871D01* +X529938Y260700D02* +X526362Y260700D01* +X676142Y167058D02* +X676142Y163482D01* +X676142Y167058D02* +X680218Y167058D01* +X680218Y163482D01* +X676142Y163482D01* +X676142Y165311D02* +X680218Y165311D01* +X676142Y156558D02* +X676142Y152982D01* +X676142Y156558D02* +X680218Y156558D01* +X680218Y152982D01* +X676142Y152982D01* +X676142Y154811D02* +X680218Y154811D01* +X1007878Y272362D02* +X1007878Y275938D01* +X1007878Y272362D02* +X1003802Y272362D01* +X1003802Y275938D01* +X1007878Y275938D01* +X1007878Y274191D02* +X1003802Y274191D01* +X1007878Y282862D02* +X1007878Y286438D01* +X1007878Y282862D02* +X1003802Y282862D01* +X1003802Y286438D01* +X1007878Y286438D01* +X1007878Y284691D02* +X1003802Y284691D01* +X874262Y167058D02* +X874262Y163482D01* +X874262Y167058D02* +X878338Y167058D01* +X878338Y163482D01* +X874262Y163482D01* +X874262Y165311D02* +X878338Y165311D01* +X874262Y156558D02* +X874262Y152982D01* +X874262Y156558D02* +X878338Y156558D01* +X878338Y152982D01* +X874262Y152982D01* +X874262Y154811D02* +X878338Y154811D01* +X1178058Y100678D02* +X1178058Y97102D01* +X1173982Y97102D01* +X1173982Y100678D01* +X1178058Y100678D01* +X1178058Y98931D02* +X1173982Y98931D01* +X1178058Y107602D02* +X1178058Y111178D01* +X1178058Y107602D02* +X1173982Y107602D01* +X1173982Y111178D01* +X1178058Y111178D01* +X1178058Y109431D02* +X1173982Y109431D01* +X1033198Y141738D02* +X1029622Y141738D01* +X1033198Y141738D02* +X1033198Y137662D01* +X1029622Y137662D01* +X1029622Y141738D01* +X1029622Y139491D02* +X1033198Y139491D01* +X1033198Y141320D02* +X1029622Y141320D01* +X1022698Y141738D02* +X1019122Y141738D01* +X1022698Y141738D02* +X1022698Y137662D01* +X1019122Y137662D01* +X1019122Y141738D01* +X1019122Y139491D02* +X1022698Y139491D01* +X1022698Y141320D02* +X1019122Y141320D01* +X979858Y256038D02* +X976282Y256038D01* +X979858Y256038D02* +X979858Y251962D01* +X976282Y251962D01* +X976282Y256038D01* +X976282Y253791D02* +X979858Y253791D01* +X979858Y255620D02* +X976282Y255620D01* +X969358Y256038D02* +X965782Y256038D01* +X969358Y256038D02* +X969358Y251962D01* +X965782Y251962D01* +X965782Y256038D01* +X965782Y253791D02* +X969358Y253791D01* +X969358Y255620D02* +X965782Y255620D01* +X1043438Y87978D02* +X1043438Y84402D01* +X1039362Y84402D01* +X1039362Y87978D01* +X1043438Y87978D01* +X1043438Y86231D02* +X1039362Y86231D01* +X1043438Y94902D02* +X1043438Y98478D01* +X1043438Y94902D02* +X1039362Y94902D01* +X1039362Y98478D01* +X1043438Y98478D01* +X1043438Y96731D02* +X1039362Y96731D01* +X441378Y212858D02* +X437802Y212858D01* +X441378Y212858D02* +X441378Y208782D01* +X437802Y208782D01* +X437802Y212858D01* +X437802Y210611D02* +X441378Y210611D01* +X441378Y212440D02* +X437802Y212440D01* +X430878Y212858D02* +X427302Y212858D01* +X430878Y212858D02* +X430878Y208782D01* +X427302Y208782D01* +X427302Y212858D01* +X427302Y210611D02* +X430878Y210611D01* +X430878Y212440D02* +X427302Y212440D01* +X437802Y177298D02* +X441378Y177298D01* +X441378Y173222D01* +X437802Y173222D01* +X437802Y177298D01* +X437802Y175051D02* +X441378Y175051D01* +X441378Y176880D02* +X437802Y176880D01* +X430878Y177298D02* +X427302Y177298D01* +X430878Y177298D02* +X430878Y173222D01* +X427302Y173222D01* +X427302Y177298D01* +X427302Y175051D02* +X430878Y175051D01* +X430878Y176880D02* +X427302Y176880D01* +X430182Y187458D02* +X433758Y187458D01* +X433758Y183382D01* +X430182Y183382D01* +X430182Y187458D01* +X430182Y185211D02* +X433758Y185211D01* +X433758Y187040D02* +X430182Y187040D01* +X423258Y187458D02* +X419682Y187458D01* +X423258Y187458D02* +X423258Y183382D01* +X419682Y183382D01* +X419682Y187458D01* +X419682Y185211D02* +X423258Y185211D01* +X423258Y187040D02* +X419682Y187040D01* +X430182Y202698D02* +X433758Y202698D01* +X433758Y198622D01* +X430182Y198622D01* +X430182Y202698D01* +X430182Y200451D02* +X433758Y200451D01* +X433758Y202280D02* +X430182Y202280D01* +X423258Y202698D02* +X419682Y202698D01* +X423258Y202698D02* +X423258Y198622D01* +X419682Y198622D01* +X419682Y202698D01* +X419682Y200451D02* +X423258Y200451D01* +X423258Y202280D02* +X419682Y202280D01* +X526362Y201162D02* +X529938Y201162D01* +X526362Y201162D02* +X526362Y205238D01* +X529938Y205238D01* +X529938Y201162D01* +X529938Y202991D02* +X526362Y202991D01* +X526362Y204820D02* +X529938Y204820D01* +X536862Y201162D02* +X540438Y201162D01* +X536862Y201162D02* +X536862Y205238D01* +X540438Y205238D01* +X540438Y201162D01* +X540438Y202991D02* +X536862Y202991D01* +X536862Y204820D02* +X540438Y204820D01* +X554302Y152902D02* +X557878Y152902D01* +X554302Y152902D02* +X554302Y156978D01* +X557878Y156978D01* +X557878Y152902D01* +X557878Y154731D02* +X554302Y154731D01* +X554302Y156560D02* +X557878Y156560D01* +X564802Y152902D02* +X568378Y152902D01* +X564802Y152902D02* +X564802Y156978D01* +X568378Y156978D01* +X568378Y152902D01* +X568378Y154731D02* +X564802Y154731D01* +X564802Y156560D02* +X568378Y156560D01* +X568458Y178382D02* +X568458Y181958D01* +X568458Y178382D02* +X564382Y178382D01* +X564382Y181958D01* +X568458Y181958D01* +X568458Y180211D02* +X564382Y180211D01* +X568458Y188882D02* +X568458Y192458D01* +X568458Y188882D02* +X564382Y188882D01* +X564382Y192458D01* +X568458Y192458D01* +X568458Y190711D02* +X564382Y190711D01* +X529938Y226562D02* +X526362Y226562D01* +X526362Y230638D01* +X529938Y230638D01* +X529938Y226562D01* +X529938Y228391D02* +X526362Y228391D01* +X526362Y230220D02* +X529938Y230220D01* +X536862Y226562D02* +X540438Y226562D01* +X536862Y226562D02* +X536862Y230638D01* +X540438Y230638D01* +X540438Y226562D01* +X540438Y228391D02* +X536862Y228391D01* +X536862Y230220D02* +X540438Y230220D01* +X461778Y169258D02* +X461778Y165682D01* +X457702Y165682D01* +X457702Y169258D01* +X461778Y169258D01* +X461778Y167511D02* +X457702Y167511D01* +X461778Y176182D02* +X461778Y179758D01* +X461778Y176182D02* +X457702Y176182D01* +X457702Y179758D01* +X461778Y179758D01* +X461778Y178011D02* +X457702Y178011D01* +X441378Y141738D02* +X437802Y141738D01* +X441378Y141738D02* +X441378Y137662D01* +X437802Y137662D01* +X437802Y141738D01* +X437802Y139491D02* +X441378Y139491D01* +X441378Y141320D02* +X437802Y141320D01* +X430878Y141738D02* +X427302Y141738D01* +X430878Y141738D02* +X430878Y137662D01* +X427302Y137662D01* +X427302Y141738D01* +X427302Y139491D02* +X430878Y139491D01* +X430878Y141320D02* +X427302Y141320D01* +X439922Y305722D02* +X439922Y309298D01* +X443998Y309298D01* +X443998Y305722D01* +X439922Y305722D01* +X439922Y307551D02* +X443998Y307551D01* +X439922Y298798D02* +X439922Y295222D01* +X439922Y298798D02* +X443998Y298798D01* +X443998Y295222D01* +X439922Y295222D01* +X439922Y297051D02* +X443998Y297051D01* +X441378Y129038D02* +X437802Y129038D01* +X441378Y129038D02* +X441378Y124962D01* +X437802Y124962D01* +X437802Y129038D01* +X437802Y126791D02* +X441378Y126791D01* +X441378Y128620D02* +X437802Y128620D01* +X430878Y129038D02* +X427302Y129038D01* +X430878Y129038D02* +X430878Y124962D01* +X427302Y124962D01* +X427302Y129038D01* +X427302Y126791D02* +X430878Y126791D01* +X430878Y128620D02* +X427302Y128620D01* +X549562Y192538D02* +X553138Y192538D01* +X553138Y188462D01* +X549562Y188462D01* +X549562Y192538D01* +X549562Y190291D02* +X553138Y190291D01* +X553138Y192120D02* +X549562Y192120D01* +X542638Y192538D02* +X539062Y192538D01* +X542638Y192538D02* +X542638Y188462D01* +X539062Y188462D01* +X539062Y192538D01* +X539062Y190291D02* +X542638Y190291D01* +X542638Y192120D02* +X539062Y192120D01* +X529938Y213862D02* +X526362Y213862D01* +X526362Y217938D01* +X529938Y217938D01* +X529938Y213862D01* +X529938Y215691D02* +X526362Y215691D01* +X526362Y217520D02* +X529938Y217520D01* +X536862Y213862D02* +X540438Y213862D01* +X536862Y213862D02* +X536862Y217938D01* +X540438Y217938D01* +X540438Y213862D01* +X540438Y215691D02* +X536862Y215691D01* +X536862Y217520D02* +X540438Y217520D01* +X541522Y156898D02* +X541522Y153322D01* +X541522Y156898D02* +X545598Y156898D01* +X545598Y153322D01* +X541522Y153322D01* +X541522Y155151D02* +X545598Y155151D01* +X541522Y146398D02* +X541522Y142822D01* +X541522Y146398D02* +X545598Y146398D01* +X545598Y142822D01* +X541522Y142822D01* +X541522Y144651D02* +X545598Y144651D01* +X564802Y172218D02* +X568378Y172218D01* +X568378Y168142D01* +X564802Y168142D01* +X564802Y172218D01* +X564802Y169971D02* +X568378Y169971D01* +X568378Y171800D02* +X564802Y171800D01* +X557878Y172218D02* +X554302Y172218D01* +X557878Y172218D02* +X557878Y168142D01* +X554302Y168142D01* +X554302Y172218D01* +X554302Y169971D02* +X557878Y169971D01* +X557878Y171800D02* +X554302Y171800D01* +X487178Y246962D02* +X487178Y250538D01* +X487178Y246962D02* +X483102Y246962D01* +X483102Y250538D01* +X487178Y250538D01* +X487178Y248791D02* +X483102Y248791D01* +X487178Y257462D02* +X487178Y261038D01* +X487178Y257462D02* +X483102Y257462D01* +X483102Y261038D01* +X487178Y261038D01* +X487178Y259291D02* +X483102Y259291D01* +X464318Y295222D02* +X464318Y298798D01* +X464318Y295222D02* +X460242Y295222D01* +X460242Y298798D01* +X464318Y298798D01* +X464318Y297051D02* +X460242Y297051D01* +X464318Y305722D02* +X464318Y309298D01* +X464318Y305722D02* +X460242Y305722D01* +X460242Y309298D01* +X464318Y309298D01* +X464318Y307551D02* +X460242Y307551D01* +X352138Y361182D02* +X348562Y361182D01* +X348562Y365258D01* +X352138Y365258D01* +X352138Y361182D01* +X352138Y363011D02* +X348562Y363011D01* +X348562Y364840D02* +X352138Y364840D01* +X359062Y361182D02* +X362638Y361182D01* +X359062Y361182D02* +X359062Y365258D01* +X362638Y365258D01* +X362638Y361182D01* +X362638Y363011D02* +X359062Y363011D01* +X359062Y364840D02* +X362638Y364840D01* +X1213618Y100678D02* +X1213618Y97102D01* +X1209542Y97102D01* +X1209542Y100678D01* +X1213618Y100678D01* +X1213618Y98931D02* +X1209542Y98931D01* +X1213618Y107602D02* +X1213618Y111178D01* +X1213618Y107602D02* +X1209542Y107602D01* +X1209542Y111178D01* +X1213618Y111178D01* +X1213618Y109431D02* +X1209542Y109431D01* +X751258Y162058D02* +X747682Y162058D01* +X751258Y162058D02* +X751258Y157982D01* +X747682Y157982D01* +X747682Y162058D01* +X747682Y159811D02* +X751258Y159811D01* +X751258Y161640D02* +X747682Y161640D01* +X740758Y162058D02* +X737182Y162058D01* +X740758Y162058D02* +X740758Y157982D01* +X737182Y157982D01* +X737182Y162058D01* +X737182Y159811D02* +X740758Y159811D01* +X740758Y161640D02* +X737182Y161640D01* +X715358Y157982D02* +X711782Y157982D01* +X711782Y162058D01* +X715358Y162058D01* +X715358Y157982D01* +X715358Y159811D02* +X711782Y159811D01* +X711782Y161640D02* +X715358Y161640D01* +X722282Y157982D02* +X725858Y157982D01* +X722282Y157982D02* +X722282Y162058D01* +X725858Y162058D01* +X725858Y157982D01* +X725858Y159811D02* +X722282Y159811D01* +X722282Y161640D02* +X725858Y161640D01* +D11* +X456250Y262330D02* +X448750Y262330D01* +X456250Y262330D02* +X456250Y255830D01* +X448750Y255830D01* +X448750Y262330D01* +X448750Y259155D02* +X456250Y259155D01* +X440250Y262330D02* +X432750Y262330D01* +X440250Y262330D02* +X440250Y255830D01* +X432750Y255830D01* +X432750Y262330D01* +X432750Y259155D02* +X440250Y259155D01* +X440250Y225350D02* +X432750Y225350D01* +X432750Y231850D01* +X440250Y231850D01* +X440250Y225350D01* +X440250Y228675D02* +X432750Y228675D01* +X448750Y225350D02* +X456250Y225350D01* +X448750Y225350D02* +X448750Y231850D01* +X456250Y231850D01* +X456250Y225350D01* +X456250Y228675D02* +X448750Y228675D01* +D10* +X1035818Y166718D02* +X1035818Y163142D01* +X1031742Y163142D01* +X1031742Y166718D01* +X1035818Y166718D01* +X1035818Y164971D02* +X1031742Y164971D01* +X1035818Y173642D02* +X1035818Y177218D01* +X1035818Y173642D02* +X1031742Y173642D01* +X1031742Y177218D01* +X1035818Y177218D01* +X1035818Y175471D02* +X1031742Y175471D01* +X464318Y206322D02* +X464318Y209898D01* +X464318Y206322D02* +X460242Y206322D01* +X460242Y209898D01* +X464318Y209898D01* +X464318Y208151D02* +X460242Y208151D01* +X464318Y216822D02* +X464318Y220398D01* +X464318Y216822D02* +X460242Y216822D01* +X460242Y220398D01* +X464318Y220398D01* +X464318Y218651D02* +X460242Y218651D01* +X470402Y159438D02* +X470402Y155862D01* +X470402Y159438D02* +X474478Y159438D01* +X474478Y155862D01* +X470402Y155862D01* +X470402Y157691D02* +X474478Y157691D01* +X470402Y148938D02* +X470402Y145362D01* +X470402Y148938D02* +X474478Y148938D01* +X474478Y145362D01* +X470402Y145362D01* +X470402Y147191D02* +X474478Y147191D01* +D11* +X524950Y137870D02* +X532450Y137870D01* +X532450Y131370D01* +X524950Y131370D01* +X524950Y137870D01* +X524950Y134695D02* +X532450Y134695D01* +X516450Y137870D02* +X508950Y137870D01* +X516450Y137870D02* +X516450Y131370D01* +X508950Y131370D01* +X508950Y137870D01* +X508950Y134695D02* +X516450Y134695D01* +X1024330Y282890D02* +X1024330Y290390D01* +X1024330Y282890D02* +X1017830Y282890D01* +X1017830Y290390D01* +X1024330Y290390D01* +X1024330Y286215D02* +X1017830Y286215D01* +X1017830Y289540D02* +X1024330Y289540D01* +X1024330Y298890D02* +X1024330Y306390D01* +X1024330Y298890D02* +X1017830Y298890D01* +X1017830Y306390D01* +X1024330Y306390D01* +X1024330Y302215D02* +X1017830Y302215D01* +X1017830Y305540D02* +X1024330Y305540D01* +D10* +X1035818Y293718D02* +X1035818Y290142D01* +X1031742Y290142D01* +X1031742Y293718D01* +X1035818Y293718D01* +X1035818Y291971D02* +X1031742Y291971D01* +X1035818Y300642D02* +X1035818Y304218D01* +X1035818Y300642D02* +X1031742Y300642D01* +X1031742Y304218D01* +X1035818Y304218D01* +X1035818Y302471D02* +X1031742Y302471D01* +D11* +X1012750Y70170D02* +X1012750Y62670D01* +X1012750Y70170D02* +X1019250Y70170D01* +X1019250Y62670D01* +X1012750Y62670D01* +X1012750Y65995D02* +X1019250Y65995D01* +X1019250Y69320D02* +X1012750Y69320D01* +X1012750Y54170D02* +X1012750Y46670D01* +X1012750Y54170D02* +X1019250Y54170D01* +X1019250Y46670D01* +X1012750Y46670D01* +X1012750Y49995D02* +X1019250Y49995D01* +X1019250Y53320D02* +X1012750Y53320D01* +X685090Y88070D02* +X685090Y95570D01* +X691590Y95570D01* +X691590Y88070D01* +X685090Y88070D01* +X685090Y91395D02* +X691590Y91395D01* +X691590Y94720D02* +X685090Y94720D01* +X685090Y79570D02* +X685090Y72070D01* +X685090Y79570D02* +X691590Y79570D01* +X691590Y72070D01* +X685090Y72070D01* +X685090Y75395D02* +X691590Y75395D01* +X691590Y78720D02* +X685090Y78720D01* +D10* +X1049522Y94902D02* +X1049522Y98478D01* +X1053598Y98478D01* +X1053598Y94902D01* +X1049522Y94902D01* +X1049522Y96731D02* +X1053598Y96731D01* +X1049522Y87978D02* +X1049522Y84402D01* +X1049522Y87978D02* +X1053598Y87978D01* +X1053598Y84402D01* +X1049522Y84402D01* +X1049522Y86231D02* +X1053598Y86231D01* +X511042Y155862D02* +X511042Y159438D01* +X515118Y159438D01* +X515118Y155862D01* +X511042Y155862D01* +X511042Y157691D02* +X515118Y157691D01* +X511042Y148938D02* +X511042Y145362D01* +X511042Y148938D02* +X515118Y148938D01* +X515118Y145362D01* +X511042Y145362D01* +X511042Y147191D02* +X515118Y147191D01* +X523742Y155862D02* +X523742Y159438D01* +X527818Y159438D01* +X527818Y155862D01* +X523742Y155862D01* +X523742Y157691D02* +X527818Y157691D01* +X523742Y148938D02* +X523742Y145362D01* +X523742Y148938D02* +X527818Y148938D01* +X527818Y145362D01* +X523742Y145362D01* +X523742Y147191D02* +X527818Y147191D01* +X348482Y351442D02* +X348482Y355018D01* +X352558Y355018D01* +X352558Y351442D01* +X348482Y351442D01* +X348482Y353271D02* +X352558Y353271D01* +X348482Y344518D02* +X348482Y340942D01* +X348482Y344518D02* +X352558Y344518D01* +X352558Y340942D01* +X348482Y340942D01* +X348482Y342771D02* +X352558Y342771D01* +X358642Y351442D02* +X358642Y355018D01* +X362718Y355018D01* +X362718Y351442D01* +X358642Y351442D01* +X358642Y353271D02* +X362718Y353271D01* +X358642Y344518D02* +X358642Y340942D01* +X358642Y344518D02* +X362718Y344518D01* +X362718Y340942D01* +X358642Y340942D01* +X358642Y342771D02* +X362718Y342771D01* +X238258Y346022D02* +X238258Y349598D01* +X238258Y346022D02* +X234182Y346022D01* +X234182Y349598D01* +X238258Y349598D01* +X238258Y347851D02* +X234182Y347851D01* +X238258Y356522D02* +X238258Y360098D01* +X238258Y356522D02* +X234182Y356522D01* +X234182Y360098D01* +X238258Y360098D01* +X238258Y358351D02* +X234182Y358351D01* +X182378Y344518D02* +X182378Y340942D01* +X178302Y340942D01* +X178302Y344518D01* +X182378Y344518D01* +X182378Y342771D02* +X178302Y342771D01* +X182378Y351442D02* +X182378Y355018D01* +X182378Y351442D02* +X178302Y351442D01* +X178302Y355018D01* +X182378Y355018D01* +X182378Y353271D02* +X178302Y353271D01* +D11* +X448750Y247090D02* +X456250Y247090D01* +X456250Y240590D01* +X448750Y240590D01* +X448750Y247090D01* +X448750Y243915D02* +X456250Y243915D01* +X440250Y247090D02* +X432750Y247090D01* +X440250Y247090D02* +X440250Y240590D01* +X432750Y240590D01* +X432750Y247090D01* +X432750Y243915D02* +X440250Y243915D01* +D12* +X611777Y105693D02* +X611777Y98107D01* +X611777Y105693D02* +X616263Y105693D01* +X616263Y98107D01* +X611777Y98107D01* +X611777Y100401D02* +X616263Y100401D01* +X616263Y102695D02* +X611777Y102695D01* +X611777Y104989D02* +X616263Y104989D01* +X602277Y105693D02* +X602277Y98107D01* +X602277Y105693D02* +X606763Y105693D01* +X606763Y98107D01* +X602277Y98107D01* +X602277Y100401D02* +X606763Y100401D01* +X606763Y102695D02* +X602277Y102695D01* +X602277Y104989D02* +X606763Y104989D01* +X592777Y105693D02* +X592777Y98107D01* +X592777Y105693D02* +X597263Y105693D01* +X597263Y98107D01* +X592777Y98107D01* +X592777Y100401D02* +X597263Y100401D01* +X597263Y102695D02* +X592777Y102695D01* +X592777Y104989D02* +X597263Y104989D01* +X592777Y79693D02* +X592777Y72107D01* +X592777Y79693D02* +X597263Y79693D01* +X597263Y72107D01* +X592777Y72107D01* +X592777Y74401D02* +X597263Y74401D01* +X597263Y76695D02* +X592777Y76695D01* +X592777Y78989D02* +X597263Y78989D01* +X602277Y79693D02* +X602277Y72107D01* +X602277Y79693D02* +X606763Y79693D01* +X606763Y72107D01* +X602277Y72107D01* +X602277Y74401D02* +X606763Y74401D01* +X606763Y76695D02* +X602277Y76695D01* +X602277Y78989D02* +X606763Y78989D01* +X611777Y79693D02* +X611777Y72107D01* +X611777Y79693D02* +X616263Y79693D01* +X616263Y72107D01* +X611777Y72107D01* +X611777Y74401D02* +X616263Y74401D01* +X616263Y76695D02* +X611777Y76695D01* +X611777Y78989D02* +X616263Y78989D01* +D13* +X639960Y77580D02* +X647760Y77580D01* +X639960Y77580D02* +X639960Y110380D01* +X647760Y110380D01* +X647760Y77580D01* +X647760Y81570D02* +X639960Y81570D01* +X639960Y85560D02* +X647760Y85560D01* +X647760Y89550D02* +X639960Y89550D01* +X639960Y93540D02* +X647760Y93540D01* +X647760Y97530D02* +X639960Y97530D01* +X639960Y101520D02* +X647760Y101520D01* +X647760Y105510D02* +X639960Y105510D01* +X639960Y109500D02* +X647760Y109500D01* +X667960Y77580D02* +X675760Y77580D01* +X667960Y77580D02* +X667960Y110380D01* +X675760Y110380D01* +X675760Y77580D01* +X675760Y81570D02* +X667960Y81570D01* +X667960Y85560D02* +X675760Y85560D01* +X675760Y89550D02* +X667960Y89550D01* +X667960Y93540D02* +X675760Y93540D01* +X675760Y97530D02* +X667960Y97530D01* +X667960Y101520D02* +X675760Y101520D01* +X675760Y105510D02* +X667960Y105510D01* +X667960Y109500D02* +X675760Y109500D01* +D10* +X606478Y65538D02* +X602902Y65538D01* +X606478Y65538D02* +X606478Y61462D01* +X602902Y61462D01* +X602902Y65538D01* +X602902Y63291D02* +X606478Y63291D01* +X606478Y65120D02* +X602902Y65120D01* +X595978Y65538D02* +X592402Y65538D01* +X595978Y65538D02* +X595978Y61462D01* +X592402Y61462D01* +X592402Y65538D01* +X592402Y63291D02* +X595978Y63291D01* +X595978Y65120D02* +X592402Y65120D01* +X627882Y107602D02* +X627882Y111178D01* +X631958Y111178D01* +X631958Y107602D01* +X627882Y107602D01* +X627882Y109431D02* +X631958Y109431D01* +X627882Y100678D02* +X627882Y97102D01* +X627882Y100678D02* +X631958Y100678D01* +X631958Y97102D01* +X627882Y97102D01* +X627882Y98931D02* +X631958Y98931D01* +X613758Y114802D02* +X610182Y114802D01* +X610182Y118878D01* +X613758Y118878D01* +X613758Y114802D01* +X613758Y116631D02* +X610182Y116631D01* +X610182Y118460D02* +X613758Y118460D01* +X620682Y114802D02* +X624258Y114802D01* +X620682Y114802D02* +X620682Y118878D01* +X624258Y118878D01* +X624258Y114802D01* +X624258Y116631D02* +X620682Y116631D01* +X620682Y118460D02* +X624258Y118460D01* +X588358Y114802D02* +X584782Y114802D01* +X584782Y118878D01* +X588358Y118878D01* +X588358Y114802D01* +X588358Y116631D02* +X584782Y116631D01* +X584782Y118460D02* +X588358Y118460D01* +X595282Y114802D02* +X598858Y114802D01* +X595282Y114802D02* +X595282Y118878D01* +X598858Y118878D01* +X598858Y114802D01* +X598858Y116631D02* +X595282Y116631D01* +X595282Y118460D02* +X598858Y118460D01* +D14* +X639369Y62916D02* +X639369Y53924D01* +X633425Y53924D01* +X633425Y62916D01* +X639369Y62916D01* +X639369Y56964D02* +X633425Y56964D01* +X633425Y60004D02* +X639369Y60004D01* +X672135Y62916D02* +X672135Y53924D01* +X666191Y53924D01* +X666191Y62916D01* +X672135Y62916D01* +X672135Y56964D02* +X666191Y56964D01* +X666191Y60004D02* +X672135Y60004D01* +D10* +X540098Y114802D02* +X536522Y114802D01* +X536522Y118878D01* +X540098Y118878D01* +X540098Y114802D01* +X540098Y116631D02* +X536522Y116631D01* +X536522Y118460D02* +X540098Y118460D01* +X547022Y114802D02* +X550598Y114802D01* +X547022Y114802D02* +X547022Y118878D01* +X550598Y118878D01* +X550598Y114802D01* +X550598Y116631D02* +X547022Y116631D01* +X547022Y118460D02* +X550598Y118460D01* +D11* +X546930Y60250D02* +X539430Y60250D01* +X539430Y66750D01* +X546930Y66750D01* +X546930Y60250D01* +X546930Y63575D02* +X539430Y63575D01* +X555430Y60250D02* +X562930Y60250D01* +X555430Y60250D02* +X555430Y66750D01* +X562930Y66750D01* +X562930Y60250D01* +X562930Y63575D02* +X555430Y63575D01* +D15* +X581450Y132470D02* +X597550Y132470D01* +X581450Y132470D02* +X581450Y141570D01* +X597550Y141570D01* +X597550Y132470D01* +X597550Y137125D02* +X581450Y137125D01* +X581450Y178470D02* +X597550Y178470D01* +X581450Y178470D02* +X581450Y187570D01* +X597550Y187570D01* +X597550Y178470D01* +X597550Y183125D02* +X581450Y183125D01* +X672450Y178470D02* +X688550Y178470D01* +X672450Y178470D02* +X672450Y187570D01* +X688550Y187570D01* +X688550Y178470D01* +X688550Y183125D02* +X672450Y183125D01* +X672450Y132470D02* +X688550Y132470D01* +X672450Y132470D02* +X672450Y141570D01* +X688550Y141570D01* +X688550Y132470D01* +X688550Y137125D02* +X672450Y137125D01* +X941950Y197910D02* +X941950Y214010D01* +X941950Y197910D02* +X932850Y197910D01* +X932850Y214010D01* +X941950Y214010D01* +X941950Y202565D02* +X932850Y202565D01* +X932850Y207220D02* +X941950Y207220D01* +X941950Y211875D02* +X932850Y211875D01* +X895950Y214010D02* +X895950Y197910D01* +X886850Y197910D01* +X886850Y214010D01* +X895950Y214010D01* +X895950Y202565D02* +X886850Y202565D01* +X886850Y207220D02* +X895950Y207220D01* +X895950Y211875D02* +X886850Y211875D01* +X895950Y288910D02* +X895950Y305010D01* +X895950Y288910D02* +X886850Y288910D01* +X886850Y305010D01* +X895950Y305010D01* +X895950Y293565D02* +X886850Y293565D01* +X886850Y298220D02* +X895950Y298220D01* +X895950Y302875D02* +X886850Y302875D01* +X941950Y305010D02* +X941950Y288910D01* +X932850Y288910D01* +X932850Y305010D01* +X941950Y305010D01* +X941950Y293565D02* +X932850Y293565D01* +X932850Y298220D02* +X941950Y298220D01* +X941950Y302875D02* +X932850Y302875D01* +X782970Y132470D02* +X766870Y132470D01* +X766870Y141570D01* +X782970Y141570D01* +X782970Y132470D01* +X782970Y137125D02* +X766870Y137125D01* +X766870Y178470D02* +X782970Y178470D01* +X766870Y178470D02* +X766870Y187570D01* +X782970Y187570D01* +X782970Y178470D01* +X782970Y183125D02* +X766870Y183125D01* +X857870Y178470D02* +X873970Y178470D01* +X857870Y178470D02* +X857870Y187570D01* +X873970Y187570D01* +X873970Y178470D01* +X873970Y183125D02* +X857870Y183125D01* +X857870Y132470D02* +X873970Y132470D01* +X857870Y132470D02* +X857870Y141570D01* +X873970Y141570D01* +X873970Y132470D01* +X873970Y137125D02* +X857870Y137125D01* +D10* +X537558Y178302D02* +X533982Y178302D01* +X533982Y182378D01* +X537558Y182378D01* +X537558Y178302D01* +X537558Y180131D02* +X533982Y180131D01* +X533982Y181960D02* +X537558Y181960D01* +X544482Y178302D02* +X548058Y178302D01* +X544482Y178302D02* +X544482Y182378D01* +X548058Y182378D01* +X548058Y178302D01* +X548058Y180131D02* +X544482Y180131D01* +X544482Y181960D02* +X548058Y181960D01* +X855478Y47338D02* +X855478Y43762D01* +X851402Y43762D01* +X851402Y47338D01* +X855478Y47338D01* +X855478Y45591D02* +X851402Y45591D01* +X855478Y54262D02* +X855478Y57838D01* +X855478Y54262D02* +X851402Y54262D01* +X851402Y57838D01* +X855478Y57838D01* +X855478Y56091D02* +X851402Y56091D01* +D16* +X1105420Y206560D02* +X1150420Y206560D01* +X1105420Y206560D02* +X1105420Y251560D01* +X1150420Y251560D01* +X1150420Y206560D01* +X1150420Y211310D02* +X1105420Y211310D01* +X1105420Y216060D02* +X1150420Y216060D01* +X1150420Y220810D02* +X1105420Y220810D01* +X1105420Y225560D02* +X1150420Y225560D01* +X1150420Y230310D02* +X1105420Y230310D01* +X1105420Y235060D02* +X1150420Y235060D01* +X1150420Y239810D02* +X1105420Y239810D01* +X1105420Y244560D02* +X1150420Y244560D01* +X1150420Y249310D02* +X1105420Y249310D01* +D17* +X1061345Y301135D02* +X1044495Y301135D01* +X1044495Y306985D01* +X1061345Y306985D01* +X1061345Y301135D01* +X1061345Y304127D02* +X1044495Y304127D01* +X1044495Y288435D02* +X1061345Y288435D01* +X1044495Y288435D02* +X1044495Y294285D01* +X1061345Y294285D01* +X1061345Y288435D01* +X1061345Y291427D02* +X1044495Y291427D01* +X1044495Y275735D02* +X1061345Y275735D01* +X1044495Y275735D02* +X1044495Y281585D01* +X1061345Y281585D01* +X1061345Y275735D01* +X1061345Y278727D02* +X1044495Y278727D01* +X1044495Y263035D02* +X1061345Y263035D01* +X1044495Y263035D02* +X1044495Y268885D01* +X1061345Y268885D01* +X1061345Y263035D01* +X1061345Y266027D02* +X1044495Y266027D01* +X1044495Y250335D02* +X1061345Y250335D01* +X1044495Y250335D02* +X1044495Y256185D01* +X1061345Y256185D01* +X1061345Y250335D01* +X1061345Y253327D02* +X1044495Y253327D01* +X1044495Y237635D02* +X1061345Y237635D01* +X1044495Y237635D02* +X1044495Y243485D01* +X1061345Y243485D01* +X1061345Y237635D01* +X1061345Y240627D02* +X1044495Y240627D01* +X1044495Y224935D02* +X1061345Y224935D01* +X1044495Y224935D02* +X1044495Y230785D01* +X1061345Y230785D01* +X1061345Y224935D01* +X1061345Y227927D02* +X1044495Y227927D01* +X1044495Y212235D02* +X1061345Y212235D01* +X1044495Y212235D02* +X1044495Y218085D01* +X1061345Y218085D01* +X1061345Y212235D01* +X1061345Y215227D02* +X1044495Y215227D01* +X1044495Y199535D02* +X1061345Y199535D01* +X1044495Y199535D02* +X1044495Y205385D01* +X1061345Y205385D01* +X1061345Y199535D01* +X1061345Y202527D02* +X1044495Y202527D01* +X1044495Y186835D02* +X1061345Y186835D01* +X1044495Y186835D02* +X1044495Y192685D01* +X1061345Y192685D01* +X1061345Y186835D01* +X1061345Y189827D02* +X1044495Y189827D01* +X1044495Y174135D02* +X1061345Y174135D01* +X1044495Y174135D02* +X1044495Y179985D01* +X1061345Y179985D01* +X1061345Y174135D01* +X1061345Y177127D02* +X1044495Y177127D01* +X1044495Y161435D02* +X1061345Y161435D01* +X1044495Y161435D02* +X1044495Y167285D01* +X1061345Y167285D01* +X1061345Y161435D01* +X1061345Y164427D02* +X1044495Y164427D01* +X1044495Y148735D02* +X1061345Y148735D01* +X1044495Y148735D02* +X1044495Y154585D01* +X1061345Y154585D01* +X1061345Y148735D01* +X1061345Y151727D02* +X1044495Y151727D01* +X1044495Y136035D02* +X1061345Y136035D01* +X1044495Y136035D02* +X1044495Y141885D01* +X1061345Y141885D01* +X1061345Y136035D01* +X1061345Y139027D02* +X1044495Y139027D01* +X1083695Y137385D02* +X1083695Y120535D01* +X1077845Y120535D01* +X1077845Y137385D01* +X1083695Y137385D01* +X1083695Y123527D02* +X1077845Y123527D01* +X1077845Y126519D02* +X1083695Y126519D01* +X1083695Y129511D02* +X1077845Y129511D01* +X1077845Y132503D02* +X1083695Y132503D01* +X1083695Y135495D02* +X1077845Y135495D01* +X1096395Y137385D02* +X1096395Y120535D01* +X1090545Y120535D01* +X1090545Y137385D01* +X1096395Y137385D01* +X1096395Y123527D02* +X1090545Y123527D01* +X1090545Y126519D02* +X1096395Y126519D01* +X1096395Y129511D02* +X1090545Y129511D01* +X1090545Y132503D02* +X1096395Y132503D01* +X1096395Y135495D02* +X1090545Y135495D01* +X1109095Y137385D02* +X1109095Y120535D01* +X1103245Y120535D01* +X1103245Y137385D01* +X1109095Y137385D01* +X1109095Y123527D02* +X1103245Y123527D01* +X1103245Y126519D02* +X1109095Y126519D01* +X1109095Y129511D02* +X1103245Y129511D01* +X1103245Y132503D02* +X1109095Y132503D01* +X1109095Y135495D02* +X1103245Y135495D01* +X1121795Y137385D02* +X1121795Y120535D01* +X1115945Y120535D01* +X1115945Y137385D01* +X1121795Y137385D01* +X1121795Y123527D02* +X1115945Y123527D01* +X1115945Y126519D02* +X1121795Y126519D01* +X1121795Y129511D02* +X1115945Y129511D01* +X1115945Y132503D02* +X1121795Y132503D01* +X1121795Y135495D02* +X1115945Y135495D01* +X1134495Y137385D02* +X1134495Y120535D01* +X1128645Y120535D01* +X1128645Y137385D01* +X1134495Y137385D01* +X1134495Y123527D02* +X1128645Y123527D01* +X1128645Y126519D02* +X1134495Y126519D01* +X1134495Y129511D02* +X1128645Y129511D01* +X1128645Y132503D02* +X1134495Y132503D01* +X1134495Y135495D02* +X1128645Y135495D01* +X1147195Y137385D02* +X1147195Y120535D01* +X1141345Y120535D01* +X1141345Y137385D01* +X1147195Y137385D01* +X1147195Y123527D02* +X1141345Y123527D01* +X1141345Y126519D02* +X1147195Y126519D01* +X1147195Y129511D02* +X1141345Y129511D01* +X1141345Y132503D02* +X1147195Y132503D01* +X1147195Y135495D02* +X1141345Y135495D01* +X1159895Y137385D02* +X1159895Y120535D01* +X1154045Y120535D01* +X1154045Y137385D01* +X1159895Y137385D01* +X1159895Y123527D02* +X1154045Y123527D01* +X1154045Y126519D02* +X1159895Y126519D01* +X1159895Y129511D02* +X1154045Y129511D01* +X1154045Y132503D02* +X1159895Y132503D01* +X1159895Y135495D02* +X1154045Y135495D01* +X1172595Y137385D02* +X1172595Y120535D01* +X1166745Y120535D01* +X1166745Y137385D01* +X1172595Y137385D01* +X1172595Y123527D02* +X1166745Y123527D01* +X1166745Y126519D02* +X1172595Y126519D01* +X1172595Y129511D02* +X1166745Y129511D01* +X1166745Y132503D02* +X1172595Y132503D01* +X1172595Y135495D02* +X1166745Y135495D01* +X1185295Y137385D02* +X1185295Y120535D01* +X1179445Y120535D01* +X1179445Y137385D01* +X1185295Y137385D01* +X1185295Y123527D02* +X1179445Y123527D01* +X1179445Y126519D02* +X1185295Y126519D01* +X1185295Y129511D02* +X1179445Y129511D01* +X1179445Y132503D02* +X1185295Y132503D01* +X1185295Y135495D02* +X1179445Y135495D01* +X1197995Y137385D02* +X1197995Y120535D01* +X1192145Y120535D01* +X1192145Y137385D01* +X1197995Y137385D01* +X1197995Y123527D02* +X1192145Y123527D01* +X1192145Y126519D02* +X1197995Y126519D01* +X1197995Y129511D02* +X1192145Y129511D01* +X1192145Y132503D02* +X1197995Y132503D01* +X1197995Y135495D02* +X1192145Y135495D01* +X1214495Y141885D02* +X1231345Y141885D01* +X1231345Y136035D01* +X1214495Y136035D01* +X1214495Y141885D01* +X1214495Y139027D02* +X1231345Y139027D01* +X1231345Y154585D02* +X1214495Y154585D01* +X1231345Y154585D02* +X1231345Y148735D01* +X1214495Y148735D01* +X1214495Y154585D01* +X1214495Y151727D02* +X1231345Y151727D01* +X1231345Y167285D02* +X1214495Y167285D01* +X1231345Y167285D02* +X1231345Y161435D01* +X1214495Y161435D01* +X1214495Y167285D01* +X1214495Y164427D02* +X1231345Y164427D01* +X1231345Y179985D02* +X1214495Y179985D01* +X1231345Y179985D02* +X1231345Y174135D01* +X1214495Y174135D01* +X1214495Y179985D01* +X1214495Y177127D02* +X1231345Y177127D01* +X1231345Y192685D02* +X1214495Y192685D01* +X1231345Y192685D02* +X1231345Y186835D01* +X1214495Y186835D01* +X1214495Y192685D01* +X1214495Y189827D02* +X1231345Y189827D01* +X1231345Y205385D02* +X1214495Y205385D01* +X1231345Y205385D02* +X1231345Y199535D01* +X1214495Y199535D01* +X1214495Y205385D01* +X1214495Y202527D02* +X1231345Y202527D01* +X1231345Y218085D02* +X1214495Y218085D01* +X1231345Y218085D02* +X1231345Y212235D01* +X1214495Y212235D01* +X1214495Y218085D01* +X1214495Y215227D02* +X1231345Y215227D01* +X1231345Y230785D02* +X1214495Y230785D01* +X1231345Y230785D02* +X1231345Y224935D01* +X1214495Y224935D01* +X1214495Y230785D01* +X1214495Y227927D02* +X1231345Y227927D01* +X1231345Y243485D02* +X1214495Y243485D01* +X1231345Y243485D02* +X1231345Y237635D01* +X1214495Y237635D01* +X1214495Y243485D01* +X1214495Y240627D02* +X1231345Y240627D01* +X1231345Y256185D02* +X1214495Y256185D01* +X1231345Y256185D02* +X1231345Y250335D01* +X1214495Y250335D01* +X1214495Y256185D01* +X1214495Y253327D02* +X1231345Y253327D01* +X1231345Y268885D02* +X1214495Y268885D01* +X1231345Y268885D02* +X1231345Y263035D01* +X1214495Y263035D01* +X1214495Y268885D01* +X1214495Y266027D02* +X1231345Y266027D01* +X1231345Y281585D02* +X1214495Y281585D01* +X1231345Y281585D02* +X1231345Y275735D01* +X1214495Y275735D01* +X1214495Y281585D01* +X1214495Y278727D02* +X1231345Y278727D01* +X1231345Y294285D02* +X1214495Y294285D01* +X1231345Y294285D02* +X1231345Y288435D01* +X1214495Y288435D01* +X1214495Y294285D01* +X1214495Y291427D02* +X1231345Y291427D01* +X1231345Y306985D02* +X1214495Y306985D01* +X1231345Y306985D02* +X1231345Y301135D01* +X1214495Y301135D01* +X1214495Y306985D01* +X1214495Y304127D02* +X1231345Y304127D01* +D18* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D19* +X169100Y324120D02* +X169100Y326120D01* +X169100Y324120D02* +X156100Y324120D01* +X156100Y326120D01* +X169100Y326120D01* +X169100Y326020D02* +X156100Y326020D01* +X169100Y330620D02* +X169100Y332620D01* +X169100Y330620D02* +X156100Y330620D01* +X156100Y332620D01* +X169100Y332620D01* +X169100Y332520D02* +X156100Y332520D01* +X169100Y319620D02* +X169100Y317620D01* +X156100Y317620D01* +X156100Y319620D01* +X169100Y319620D01* +X169100Y319520D02* +X156100Y319520D01* +X169100Y313120D02* +X169100Y311120D01* +X156100Y311120D01* +X156100Y313120D01* +X169100Y313120D01* +X169100Y313020D02* +X156100Y313020D01* +X169100Y337120D02* +X169100Y339120D01* +X169100Y337120D02* +X156100Y337120D01* +X156100Y339120D01* +X169100Y339120D01* +X169100Y339020D02* +X156100Y339020D01* +D20* +X157330Y354620D02* +X164330Y354620D01* +X157330Y354620D02* +X157330Y363620D01* +X164330Y363620D01* +X164330Y354620D01* +X164330Y361270D02* +X157330Y361270D01* +X157330Y286620D02* +X164330Y286620D01* +X157330Y286620D02* +X157330Y295620D01* +X164330Y295620D01* +X164330Y286620D01* +X164330Y293270D02* +X157330Y293270D01* +D21* +X133600Y332370D02* +X133600Y341870D01* +X143100Y341870D01* +X143100Y332370D01* +X133600Y332370D01* +X133600Y341395D02* +X143100Y341395D01* +X133600Y317870D02* +X133600Y308370D01* +X133600Y317870D02* +X143100Y317870D01* +X143100Y308370D01* +X133600Y308370D01* +X133600Y317395D02* +X143100Y317395D01* +D22* +X510805Y181385D02* +X518495Y181385D01* +X518495Y179695D01* +X510805Y179695D01* +X510805Y181385D01* +X510805Y180559D02* +X518495Y180559D01* +X518495Y186385D02* +X510805Y186385D01* +X518495Y186385D02* +X518495Y184695D01* +X510805Y184695D01* +X510805Y186385D01* +X510805Y185559D02* +X518495Y185559D01* +X518495Y191385D02* +X510805Y191385D01* +X518495Y191385D02* +X518495Y189695D01* +X510805Y189695D01* +X510805Y191385D01* +X510805Y190559D02* +X518495Y190559D01* +X518495Y196385D02* +X510805Y196385D01* +X518495Y196385D02* +X518495Y194695D01* +X510805Y194695D01* +X510805Y196385D01* +X510805Y195559D02* +X518495Y195559D01* +X518495Y201385D02* +X510805Y201385D01* +X518495Y201385D02* +X518495Y199695D01* +X510805Y199695D01* +X510805Y201385D01* +X510805Y200559D02* +X518495Y200559D01* +X518495Y206385D02* +X510805Y206385D01* +X518495Y206385D02* +X518495Y204695D01* +X510805Y204695D01* +X510805Y206385D01* +X510805Y205559D02* +X518495Y205559D01* +X479795Y206385D02* +X472105Y206385D01* +X479795Y206385D02* +X479795Y204695D01* +X472105Y204695D01* +X472105Y206385D01* +X472105Y205559D02* +X479795Y205559D01* +X479795Y201385D02* +X472105Y201385D01* +X479795Y201385D02* +X479795Y199695D01* +X472105Y199695D01* +X472105Y201385D01* +X472105Y200559D02* +X479795Y200559D01* +X479795Y196385D02* +X472105Y196385D01* +X479795Y196385D02* +X479795Y194695D01* +X472105Y194695D01* +X472105Y196385D01* +X472105Y195559D02* +X479795Y195559D01* +X479795Y191385D02* +X472105Y191385D01* +X479795Y191385D02* +X479795Y189695D01* +X472105Y189695D01* +X472105Y191385D01* +X472105Y190559D02* +X479795Y190559D01* +X479795Y186385D02* +X472105Y186385D01* +X479795Y186385D02* +X479795Y184695D01* +X472105Y184695D01* +X472105Y186385D01* +X472105Y185559D02* +X479795Y185559D01* +X479795Y181385D02* +X472105Y181385D01* +X479795Y181385D02* +X479795Y179695D01* +X472105Y179695D01* +X472105Y181385D01* +X472105Y180559D02* +X479795Y180559D01* +X483645Y177535D02* +X483645Y169845D01* +X481955Y169845D01* +X481955Y177535D01* +X483645Y177535D01* +X483645Y170709D02* +X481955Y170709D01* +X481955Y171573D02* +X483645Y171573D01* +X483645Y172437D02* +X481955Y172437D01* +X481955Y173301D02* +X483645Y173301D01* +X483645Y174165D02* +X481955Y174165D01* +X481955Y175029D02* +X483645Y175029D01* +X483645Y175893D02* +X481955Y175893D01* +X481955Y176757D02* +X483645Y176757D01* +X488645Y177535D02* +X488645Y169845D01* +X486955Y169845D01* +X486955Y177535D01* +X488645Y177535D01* +X488645Y170709D02* +X486955Y170709D01* +X486955Y171573D02* +X488645Y171573D01* +X488645Y172437D02* +X486955Y172437D01* +X486955Y173301D02* +X488645Y173301D01* +X488645Y174165D02* +X486955Y174165D01* +X486955Y175029D02* +X488645Y175029D01* +X488645Y175893D02* +X486955Y175893D01* +X486955Y176757D02* +X488645Y176757D01* +X493645Y177535D02* +X493645Y169845D01* +X491955Y169845D01* +X491955Y177535D01* +X493645Y177535D01* +X493645Y170709D02* +X491955Y170709D01* +X491955Y171573D02* +X493645Y171573D01* +X493645Y172437D02* +X491955Y172437D01* +X491955Y173301D02* +X493645Y173301D01* +X493645Y174165D02* +X491955Y174165D01* +X491955Y175029D02* +X493645Y175029D01* +X493645Y175893D02* +X491955Y175893D01* +X491955Y176757D02* +X493645Y176757D01* +X498645Y177535D02* +X498645Y169845D01* +X496955Y169845D01* +X496955Y177535D01* +X498645Y177535D01* +X498645Y170709D02* +X496955Y170709D01* +X496955Y171573D02* +X498645Y171573D01* +X498645Y172437D02* +X496955Y172437D01* +X496955Y173301D02* +X498645Y173301D01* +X498645Y174165D02* +X496955Y174165D01* +X496955Y175029D02* +X498645Y175029D01* +X498645Y175893D02* +X496955Y175893D01* +X496955Y176757D02* +X498645Y176757D01* +X503645Y177535D02* +X503645Y169845D01* +X501955Y169845D01* +X501955Y177535D01* +X503645Y177535D01* +X503645Y170709D02* +X501955Y170709D01* +X501955Y171573D02* +X503645Y171573D01* +X503645Y172437D02* +X501955Y172437D01* +X501955Y173301D02* +X503645Y173301D01* +X503645Y174165D02* +X501955Y174165D01* +X501955Y175029D02* +X503645Y175029D01* +X503645Y175893D02* +X501955Y175893D01* +X501955Y176757D02* +X503645Y176757D01* +X508645Y177535D02* +X508645Y169845D01* +X506955Y169845D01* +X506955Y177535D01* +X508645Y177535D01* +X508645Y170709D02* +X506955Y170709D01* +X506955Y171573D02* +X508645Y171573D01* +X508645Y172437D02* +X506955Y172437D01* +X506955Y173301D02* +X508645Y173301D01* +X508645Y174165D02* +X506955Y174165D01* +X506955Y175029D02* +X508645Y175029D01* +X508645Y175893D02* +X506955Y175893D01* +X506955Y176757D02* +X508645Y176757D01* +X508645Y208545D02* +X508645Y216235D01* +X508645Y208545D02* +X506955Y208545D01* +X506955Y216235D01* +X508645Y216235D01* +X508645Y209409D02* +X506955Y209409D01* +X506955Y210273D02* +X508645Y210273D01* +X508645Y211137D02* +X506955Y211137D01* +X506955Y212001D02* +X508645Y212001D01* +X508645Y212865D02* +X506955Y212865D01* +X506955Y213729D02* +X508645Y213729D01* +X508645Y214593D02* +X506955Y214593D01* +X506955Y215457D02* +X508645Y215457D01* +X503645Y216235D02* +X503645Y208545D01* +X501955Y208545D01* +X501955Y216235D01* +X503645Y216235D01* +X503645Y209409D02* +X501955Y209409D01* +X501955Y210273D02* +X503645Y210273D01* +X503645Y211137D02* +X501955Y211137D01* +X501955Y212001D02* +X503645Y212001D01* +X503645Y212865D02* +X501955Y212865D01* +X501955Y213729D02* +X503645Y213729D01* +X503645Y214593D02* +X501955Y214593D01* +X501955Y215457D02* +X503645Y215457D01* +X498645Y216235D02* +X498645Y208545D01* +X496955Y208545D01* +X496955Y216235D01* +X498645Y216235D01* +X498645Y209409D02* +X496955Y209409D01* +X496955Y210273D02* +X498645Y210273D01* +X498645Y211137D02* +X496955Y211137D01* +X496955Y212001D02* +X498645Y212001D01* +X498645Y212865D02* +X496955Y212865D01* +X496955Y213729D02* +X498645Y213729D01* +X498645Y214593D02* +X496955Y214593D01* +X496955Y215457D02* +X498645Y215457D01* +X493645Y216235D02* +X493645Y208545D01* +X491955Y208545D01* +X491955Y216235D01* +X493645Y216235D01* +X493645Y209409D02* +X491955Y209409D01* +X491955Y210273D02* +X493645Y210273D01* +X493645Y211137D02* +X491955Y211137D01* +X491955Y212001D02* +X493645Y212001D01* +X493645Y212865D02* +X491955Y212865D01* +X491955Y213729D02* +X493645Y213729D01* +X493645Y214593D02* +X491955Y214593D01* +X491955Y215457D02* +X493645Y215457D01* +X488645Y216235D02* +X488645Y208545D01* +X486955Y208545D01* +X486955Y216235D01* +X488645Y216235D01* +X488645Y209409D02* +X486955Y209409D01* +X486955Y210273D02* +X488645Y210273D01* +X488645Y211137D02* +X486955Y211137D01* +X486955Y212001D02* +X488645Y212001D01* +X488645Y212865D02* +X486955Y212865D01* +X486955Y213729D02* +X488645Y213729D01* +X488645Y214593D02* +X486955Y214593D01* +X486955Y215457D02* +X488645Y215457D01* +X483645Y216235D02* +X483645Y208545D01* +X481955Y208545D01* +X481955Y216235D01* +X483645Y216235D01* +X483645Y209409D02* +X481955Y209409D01* +X481955Y210273D02* +X483645Y210273D01* +X483645Y211137D02* +X481955Y211137D01* +X481955Y212001D02* +X483645Y212001D01* +X483645Y212865D02* +X481955Y212865D01* +X481955Y213729D02* +X483645Y213729D01* +X483645Y214593D02* +X481955Y214593D01* +X481955Y215457D02* +X483645Y215457D01* +D16* +X505300Y203040D02* +X505300Y183040D01* +X485300Y183040D01* +X485300Y203040D01* +X505300Y203040D01* +X505300Y187790D02* +X485300Y187790D01* +X485300Y192540D02* +X505300Y192540D01* +X505300Y197290D02* +X485300Y197290D01* +X485300Y202040D02* +X505300Y202040D01* +D23* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D24* +X292090Y237498D03* +D25* +X259090Y271798D03* +X259090Y114298D03* +D23* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D26* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D27* +X726470Y142000D02* +X722570Y142000D01* +X722570Y146400D01* +X726470Y146400D01* +X726470Y142000D01* +X726470Y143995D02* +X722570Y143995D01* +X722570Y145990D02* +X726470Y145990D01* +X736570Y142000D02* +X740470Y142000D01* +X736570Y142000D02* +X736570Y146400D01* +X740470Y146400D01* +X740470Y142000D01* +X740470Y143995D02* +X736570Y143995D01* +X736570Y145990D02* +X740470Y145990D01* +X740470Y133000D02* +X736570Y133000D01* +X736570Y137400D01* +X740470Y137400D01* +X740470Y133000D01* +X740470Y134995D02* +X736570Y134995D01* +X736570Y136990D02* +X740470Y136990D01* +X726470Y133000D02* +X722570Y133000D01* +X722570Y137400D01* +X726470Y137400D01* +X726470Y133000D01* +X726470Y134995D02* +X722570Y134995D01* +X722570Y136990D02* +X726470Y136990D01* +D28* +X800100Y20320D03* +D23* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D11* +X585150Y45010D02* +X592650Y45010D01* +X585150Y45010D02* +X585150Y51510D01* +X592650Y51510D01* +X592650Y45010D01* +X592650Y48335D02* +X585150Y48335D01* +X601150Y45010D02* +X608650Y45010D01* +X601150Y45010D02* +X601150Y51510D01* +X608650Y51510D01* +X608650Y45010D01* +X608650Y48335D02* +X601150Y48335D01* +X714690Y52630D02* +X722190Y52630D01* +X714690Y52630D02* +X714690Y59130D01* +X722190Y59130D01* +X722190Y52630D01* +X722190Y55955D02* +X714690Y55955D01* +X730690Y52630D02* +X738190Y52630D01* +X730690Y52630D02* +X730690Y59130D01* +X738190Y59130D01* +X738190Y52630D01* +X738190Y55955D02* +X730690Y55955D01* +D28* +X749300Y78740D03* +D23* +X723900Y78740D03* +D11* +X691473Y302198D02* +X688303Y308995D01* +X694193Y311742D01* +X697363Y304945D01* +X691473Y302198D01* +X689922Y305523D02* +X697093Y305523D01* +X695543Y308848D02* +X688372Y308848D01* +X695065Y294495D02* +X698235Y287698D01* +X695065Y294495D02* +X700955Y297242D01* +X704125Y290445D01* +X698235Y287698D01* +X696684Y291023D02* +X703855Y291023D01* +X702305Y294348D02* +X695134Y294348D01* +X763391Y304945D02* +X766561Y311742D01* +X772451Y308995D01* +X769281Y302198D01* +X763391Y304945D01* +X763661Y305523D02* +X770832Y305523D01* +X772382Y308848D02* +X765211Y308848D01* +X759799Y297242D02* +X756629Y290445D01* +X759799Y297242D02* +X765689Y294495D01* +X762519Y287698D01* +X756629Y290445D01* +X756899Y291023D02* +X764070Y291023D01* +X765620Y294348D02* +X758449Y294348D01* +D10* +X848942Y244342D02* +X852518Y244342D01* +X848942Y244342D02* +X848942Y248418D01* +X852518Y248418D01* +X852518Y244342D01* +X852518Y246171D02* +X848942Y246171D01* +X848942Y248000D02* +X852518Y248000D01* +X859442Y244342D02* +X863018Y244342D01* +X859442Y244342D02* +X859442Y248418D01* +X863018Y248418D01* +X863018Y244342D01* +X863018Y246171D02* +X859442Y246171D01* +X859442Y248000D02* +X863018Y248000D01* +X852518Y264662D02* +X848942Y264662D01* +X848942Y268738D01* +X852518Y268738D01* +X852518Y264662D01* +X852518Y266491D02* +X848942Y266491D01* +X848942Y268320D02* +X852518Y268320D01* +X859442Y264662D02* +X863018Y264662D01* +X859442Y264662D02* +X859442Y268738D01* +X863018Y268738D01* +X863018Y264662D01* +X863018Y266491D02* +X859442Y266491D01* +X859442Y268320D02* +X863018Y268320D01* +D11* +X514670Y107390D02* +X507170Y107390D01* +X514670Y107390D02* +X514670Y100890D01* +X507170Y100890D01* +X507170Y107390D01* +X507170Y104215D02* +X514670Y104215D01* +X498670Y107390D02* +X491170Y107390D01* +X498670Y107390D02* +X498670Y100890D01* +X491170Y100890D01* +X491170Y107390D01* +X491170Y104215D02* +X498670Y104215D01* +D29* +X254130Y358150D02* +X254130Y360750D01* +X267730Y360750D01* +X267730Y358150D01* +X254130Y358150D01* +X254130Y359480D02* +X267730Y359480D01* +X254130Y354250D02* +X254130Y351650D01* +X254130Y354250D02* +X267730Y354250D01* +X267730Y351650D01* +X254130Y351650D01* +X254130Y352980D02* +X267730Y352980D01* +X254130Y347750D02* +X254130Y345150D01* +X254130Y347750D02* +X267730Y347750D01* +X267730Y345150D01* +X254130Y345150D01* +X254130Y346480D02* +X267730Y346480D01* +X254130Y341250D02* +X254130Y338650D01* +X254130Y341250D02* +X267730Y341250D01* +X267730Y338650D01* +X254130Y338650D01* +X254130Y339980D02* +X267730Y339980D01* +X254130Y334750D02* +X254130Y332150D01* +X254130Y334750D02* +X267730Y334750D01* +X267730Y332150D01* +X254130Y332150D01* +X254130Y333480D02* +X267730Y333480D01* +X254130Y328250D02* +X254130Y325650D01* +X254130Y328250D02* +X267730Y328250D01* +X267730Y325650D01* +X254130Y325650D01* +X254130Y326980D02* +X267730Y326980D01* +X254130Y321750D02* +X254130Y319150D01* +X254130Y321750D02* +X267730Y321750D01* +X267730Y319150D01* +X254130Y319150D01* +X254130Y320480D02* +X267730Y320480D01* +X254130Y315250D02* +X254130Y312650D01* +X254130Y315250D02* +X267730Y315250D01* +X267730Y312650D01* +X254130Y312650D01* +X254130Y313980D02* +X267730Y313980D01* +X254130Y308750D02* +X254130Y306150D01* +X254130Y308750D02* +X267730Y308750D01* +X267730Y306150D01* +X254130Y306150D01* +X254130Y307480D02* +X267730Y307480D01* +X254130Y302250D02* +X254130Y299650D01* +X254130Y302250D02* +X267730Y302250D01* +X267730Y299650D01* +X254130Y299650D01* +X254130Y300980D02* +X267730Y300980D01* +X326630Y302250D02* +X326630Y299650D01* +X326630Y302250D02* +X340230Y302250D01* +X340230Y299650D01* +X326630Y299650D01* +X326630Y300980D02* +X340230Y300980D01* +X326630Y306150D02* +X326630Y308750D01* +X340230Y308750D01* +X340230Y306150D01* +X326630Y306150D01* +X326630Y307480D02* +X340230Y307480D01* +X326630Y312650D02* +X326630Y315250D01* +X340230Y315250D01* +X340230Y312650D01* +X326630Y312650D01* +X326630Y313980D02* +X340230Y313980D01* +X326630Y319150D02* +X326630Y321750D01* +X340230Y321750D01* +X340230Y319150D01* +X326630Y319150D01* +X326630Y320480D02* +X340230Y320480D01* +X326630Y325650D02* +X326630Y328250D01* +X340230Y328250D01* +X340230Y325650D01* +X326630Y325650D01* +X326630Y326980D02* +X340230Y326980D01* +X326630Y332150D02* +X326630Y334750D01* +X340230Y334750D01* +X340230Y332150D01* +X326630Y332150D01* +X326630Y333480D02* +X340230Y333480D01* +X326630Y338650D02* +X326630Y341250D01* +X340230Y341250D01* +X340230Y338650D01* +X326630Y338650D01* +X326630Y339980D02* +X340230Y339980D01* +X326630Y345150D02* +X326630Y347750D01* +X340230Y347750D01* +X340230Y345150D01* +X326630Y345150D01* +X326630Y346480D02* +X340230Y346480D01* +X326630Y351650D02* +X326630Y354250D01* +X340230Y354250D01* +X340230Y351650D01* +X326630Y351650D01* +X326630Y352980D02* +X340230Y352980D01* +X326630Y358150D02* +X326630Y360750D01* +X340230Y360750D01* +X340230Y358150D01* +X326630Y358150D01* +X326630Y359480D02* +X340230Y359480D01* +D10* +X407322Y362718D02* +X410898Y362718D01* +X410898Y358642D01* +X407322Y358642D01* +X407322Y362718D01* +X407322Y360471D02* +X410898Y360471D01* +X410898Y362300D02* +X407322Y362300D01* +X400398Y362718D02* +X396822Y362718D01* +X400398Y362718D02* +X400398Y358642D01* +X396822Y358642D01* +X396822Y362718D01* +X396822Y360471D02* +X400398Y360471D01* +X400398Y362300D02* +X396822Y362300D01* +X407322Y352558D02* +X410898Y352558D01* +X410898Y348482D01* +X407322Y348482D01* +X407322Y352558D01* +X407322Y350311D02* +X410898Y350311D01* +X410898Y352140D02* +X407322Y352140D01* +X400398Y352558D02* +X396822Y352558D01* +X400398Y352558D02* +X400398Y348482D01* +X396822Y348482D01* +X396822Y352558D01* +X396822Y350311D02* +X400398Y350311D01* +X400398Y352140D02* +X396822Y352140D01* +D30* +X229348Y303078D02* +X229348Y295602D01* +X219372Y295602D01* +X219372Y303078D01* +X229348Y303078D01* +X229348Y299426D02* +X219372Y299426D01* +X207348Y303078D02* +X207348Y295602D01* +X197372Y295602D01* +X197372Y303078D01* +X207348Y303078D01* +X207348Y299426D02* +X197372Y299426D01* +X207348Y311602D02* +X207348Y319078D01* +X207348Y311602D02* +X197372Y311602D01* +X197372Y319078D01* +X207348Y319078D01* +X207348Y315426D02* +X197372Y315426D01* +X229348Y319078D02* +X229348Y311602D01* +X219372Y311602D01* +X219372Y319078D01* +X229348Y319078D01* +X229348Y315426D02* +X219372Y315426D01* +D10* +X189998Y303878D02* +X189998Y300302D01* +X185922Y300302D01* +X185922Y303878D01* +X189998Y303878D01* +X189998Y302131D02* +X185922Y302131D01* +X189998Y310802D02* +X189998Y314378D01* +X189998Y310802D02* +X185922Y310802D01* +X185922Y314378D01* +X189998Y314378D01* +X189998Y312631D02* +X185922Y312631D01* +X236722Y314378D02* +X236722Y310802D01* +X236722Y314378D02* +X240798Y314378D01* +X240798Y310802D01* +X236722Y310802D01* +X236722Y312631D02* +X240798Y312631D01* +X236722Y303878D02* +X236722Y300302D01* +X236722Y303878D02* +X240798Y303878D01* +X240798Y300302D01* +X236722Y300302D01* +X236722Y302131D02* +X240798Y302131D01* +D11* +X540310Y85690D02* +X546810Y85690D01* +X546810Y75190D01* +X540310Y75190D01* +X540310Y85690D01* +X540310Y78515D02* +X546810Y78515D01* +X546810Y81840D02* +X540310Y81840D01* +X540310Y85165D02* +X546810Y85165D01* +X537310Y107690D02* +X530810Y107690D01* +X537310Y107690D02* +X537310Y97190D01* +X530810Y97190D01* +X530810Y107690D01* +X530810Y100515D02* +X537310Y100515D01* +X537310Y103840D02* +X530810Y103840D01* +X530810Y107165D02* +X537310Y107165D01* +X549810Y107690D02* +X556310Y107690D01* +X556310Y97190D01* +X549810Y97190D01* +X549810Y107690D01* +X549810Y100515D02* +X556310Y100515D01* +X556310Y103840D02* +X549810Y103840D01* +X549810Y107165D02* +X556310Y107165D01* +X700330Y95570D02* +X700330Y88070D01* +X700330Y95570D02* +X706830Y95570D01* +X706830Y88070D01* +X700330Y88070D01* +X700330Y91395D02* +X706830Y91395D01* +X706830Y94720D02* +X700330Y94720D01* +X700330Y79570D02* +X700330Y72070D01* +X700330Y79570D02* +X706830Y79570D01* +X706830Y72070D01* +X700330Y72070D01* +X700330Y75395D02* +X706830Y75395D01* +X706830Y78720D02* +X700330Y78720D01* +X1261550Y132790D02* +X1269050Y132790D01* +X1269050Y126290D01* +X1261550Y126290D01* +X1261550Y132790D01* +X1261550Y129615D02* +X1269050Y129615D01* +X1253050Y132790D02* +X1245550Y132790D01* +X1253050Y132790D02* +X1253050Y126290D01* +X1245550Y126290D01* +X1245550Y132790D01* +X1245550Y129615D02* +X1253050Y129615D01* +D10* +X1198378Y100678D02* +X1198378Y97102D01* +X1194302Y97102D01* +X1194302Y100678D01* +X1198378Y100678D01* +X1198378Y98931D02* +X1194302Y98931D01* +X1198378Y107602D02* +X1198378Y111178D01* +X1198378Y107602D02* +X1194302Y107602D01* +X1194302Y111178D01* +X1198378Y111178D01* +X1198378Y109431D02* +X1194302Y109431D01* +D31* +X843039Y50536D02* +X832599Y50536D01* +X843039Y50536D02* +X843039Y48224D01* +X832599Y48224D01* +X832599Y50536D01* +X832599Y49407D02* +X843039Y49407D01* +X843039Y57036D02* +X832599Y57036D01* +X843039Y57036D02* +X843039Y54724D01* +X832599Y54724D01* +X832599Y57036D01* +X832599Y55907D02* +X843039Y55907D01* +X843039Y63536D02* +X832599Y63536D01* +X843039Y63536D02* +X843039Y61224D01* +X832599Y61224D01* +X832599Y63536D01* +X832599Y62407D02* +X843039Y62407D01* +X823481Y63536D02* +X813041Y63536D01* +X823481Y63536D02* +X823481Y61224D01* +X813041Y61224D01* +X813041Y63536D01* +X813041Y62407D02* +X823481Y62407D01* +X823481Y57036D02* +X813041Y57036D01* +X823481Y57036D02* +X823481Y54724D01* +X813041Y54724D01* +X813041Y57036D01* +X813041Y55907D02* +X823481Y55907D01* +X823481Y50536D02* +X813041Y50536D01* +X823481Y50536D02* +X823481Y48224D01* +X813041Y48224D01* +X813041Y50536D01* +X813041Y49407D02* +X823481Y49407D01* +X832599Y88636D02* +X843039Y88636D01* +X843039Y86324D01* +X832599Y86324D01* +X832599Y88636D01* +X832599Y87507D02* +X843039Y87507D01* +X843039Y95136D02* +X832599Y95136D01* +X843039Y95136D02* +X843039Y92824D01* +X832599Y92824D01* +X832599Y95136D01* +X832599Y94007D02* +X843039Y94007D01* +X843039Y101636D02* +X832599Y101636D01* +X843039Y101636D02* +X843039Y99324D01* +X832599Y99324D01* +X832599Y101636D01* +X832599Y100507D02* +X843039Y100507D01* +X823481Y101636D02* +X813041Y101636D01* +X823481Y101636D02* +X823481Y99324D01* +X813041Y99324D01* +X813041Y101636D01* +X813041Y100507D02* +X823481Y100507D01* +X823481Y95136D02* +X813041Y95136D01* +X823481Y95136D02* +X823481Y92824D01* +X813041Y92824D01* +X813041Y95136D01* +X813041Y94007D02* +X823481Y94007D01* +X823481Y88636D02* +X813041Y88636D01* +X823481Y88636D02* +X823481Y86324D01* +X813041Y86324D01* +X813041Y88636D01* +X813041Y87507D02* +X823481Y87507D01* +D10* +X855478Y85438D02* +X855478Y81862D01* +X851402Y81862D01* +X851402Y85438D01* +X855478Y85438D01* +X855478Y83691D02* +X851402Y83691D01* +X855478Y92362D02* +X855478Y95938D01* +X855478Y92362D02* +X851402Y92362D01* +X851402Y95938D01* +X855478Y95938D01* +X855478Y94191D02* +X851402Y94191D01* +X807138Y50298D02* +X803562Y50298D01* +X807138Y50298D02* +X807138Y46222D01* +X803562Y46222D01* +X803562Y50298D01* +X803562Y48051D02* +X807138Y48051D01* +X807138Y49880D02* +X803562Y49880D01* +X796638Y50298D02* +X793062Y50298D01* +X796638Y50298D02* +X796638Y46222D01* +X793062Y46222D01* +X793062Y50298D01* +X793062Y48051D02* +X796638Y48051D01* +X796638Y49880D02* +X793062Y49880D01* +X803562Y88398D02* +X807138Y88398D01* +X807138Y84322D01* +X803562Y84322D01* +X803562Y88398D01* +X803562Y86151D02* +X807138Y86151D01* +X807138Y87980D02* +X803562Y87980D01* +X796638Y88398D02* +X793062Y88398D01* +X796638Y88398D02* +X796638Y84322D01* +X793062Y84322D01* +X793062Y88398D01* +X793062Y86151D02* +X796638Y86151D01* +X796638Y87980D02* +X793062Y87980D01* +X831502Y75698D02* +X835078Y75698D01* +X835078Y71622D01* +X831502Y71622D01* +X831502Y75698D01* +X831502Y73451D02* +X835078Y73451D01* +X835078Y75280D02* +X831502Y75280D01* +X824578Y75698D02* +X821002Y75698D01* +X824578Y75698D02* +X824578Y71622D01* +X821002Y71622D01* +X821002Y75698D01* +X821002Y73451D02* +X824578Y73451D01* +X824578Y75280D02* +X821002Y75280D01* +X831502Y113798D02* +X835078Y113798D01* +X835078Y109722D01* +X831502Y109722D01* +X831502Y113798D01* +X831502Y111551D02* +X835078Y111551D01* +X835078Y113380D02* +X831502Y113380D01* +X824578Y113798D02* +X821002Y113798D01* +X824578Y113798D02* +X824578Y109722D01* +X821002Y109722D01* +X821002Y113798D01* +X821002Y111551D02* +X824578Y111551D01* +X824578Y113380D02* +X821002Y113380D01* +D16* +X134660Y17780D02* +X134662Y17879D01* +X134668Y17979D01* +X134678Y18078D01* +X134692Y18176D01* +X134709Y18274D01* +X134731Y18371D01* +X134756Y18467D01* +X134785Y18562D01* +X134818Y18656D01* +X134855Y18748D01* +X134895Y18839D01* +X134939Y18928D01* +X134987Y19016D01* +X135038Y19101D01* +X135092Y19184D01* +X135149Y19266D01* +X135210Y19344D01* +X135274Y19421D01* +X135340Y19494D01* +X135410Y19565D01* +X135482Y19633D01* +X135557Y19699D01* +X135635Y19761D01* +X135715Y19820D01* +X135797Y19876D01* +X135881Y19928D01* +X135968Y19977D01* +X136056Y20023D01* +X136146Y20065D01* +X136238Y20104D01* +X136331Y20139D01* +X136425Y20170D01* +X136521Y20197D01* +X136618Y20220D01* +X136715Y20240D01* +X136813Y20256D01* +X136912Y20268D01* +X137011Y20276D01* +X137110Y20280D01* +X137210Y20280D01* +X137309Y20276D01* +X137408Y20268D01* +X137507Y20256D01* +X137605Y20240D01* +X137702Y20220D01* +X137799Y20197D01* +X137895Y20170D01* +X137989Y20139D01* +X138082Y20104D01* +X138174Y20065D01* +X138264Y20023D01* +X138352Y19977D01* +X138439Y19928D01* +X138523Y19876D01* +X138605Y19820D01* +X138685Y19761D01* +X138763Y19699D01* +X138838Y19633D01* +X138910Y19565D01* +X138980Y19494D01* +X139046Y19421D01* +X139110Y19344D01* +X139171Y19266D01* +X139228Y19184D01* +X139282Y19101D01* +X139333Y19016D01* +X139381Y18928D01* +X139425Y18839D01* +X139465Y18748D01* +X139502Y18656D01* +X139535Y18562D01* +X139564Y18467D01* +X139589Y18371D01* +X139611Y18274D01* +X139628Y18176D01* +X139642Y18078D01* +X139652Y17979D01* +X139658Y17879D01* +X139660Y17780D01* +X139658Y17681D01* +X139652Y17581D01* +X139642Y17482D01* +X139628Y17384D01* +X139611Y17286D01* +X139589Y17189D01* +X139564Y17093D01* +X139535Y16998D01* +X139502Y16904D01* +X139465Y16812D01* +X139425Y16721D01* +X139381Y16632D01* +X139333Y16544D01* +X139282Y16459D01* +X139228Y16376D01* +X139171Y16294D01* +X139110Y16216D01* +X139046Y16139D01* +X138980Y16066D01* +X138910Y15995D01* +X138838Y15927D01* +X138763Y15861D01* +X138685Y15799D01* +X138605Y15740D01* +X138523Y15684D01* +X138439Y15632D01* +X138352Y15583D01* +X138264Y15537D01* +X138174Y15495D01* +X138082Y15456D01* +X137989Y15421D01* +X137895Y15390D01* +X137799Y15363D01* +X137702Y15340D01* +X137605Y15320D01* +X137507Y15304D01* +X137408Y15292D01* +X137309Y15284D01* +X137210Y15280D01* +X137110Y15280D01* +X137011Y15284D01* +X136912Y15292D01* +X136813Y15304D01* +X136715Y15320D01* +X136618Y15340D01* +X136521Y15363D01* +X136425Y15390D01* +X136331Y15421D01* +X136238Y15456D01* +X136146Y15495D01* +X136056Y15537D01* +X135968Y15583D01* +X135881Y15632D01* +X135797Y15684D01* +X135715Y15740D01* +X135635Y15799D01* +X135557Y15861D01* +X135482Y15927D01* +X135410Y15995D01* +X135340Y16066D01* +X135274Y16139D01* +X135210Y16216D01* +X135149Y16294D01* +X135092Y16376D01* +X135038Y16459D01* +X134987Y16544D01* +X134939Y16632D01* +X134895Y16721D01* +X134855Y16812D01* +X134818Y16904D01* +X134785Y16998D01* +X134756Y17093D01* +X134731Y17189D01* +X134709Y17286D01* +X134692Y17384D01* +X134678Y17482D01* +X134668Y17581D01* +X134662Y17681D01* +X134660Y17780D01* +X447080Y363220D02* +X447082Y363319D01* +X447088Y363419D01* +X447098Y363518D01* +X447112Y363616D01* +X447129Y363714D01* +X447151Y363811D01* +X447176Y363907D01* +X447205Y364002D01* +X447238Y364096D01* +X447275Y364188D01* +X447315Y364279D01* +X447359Y364368D01* +X447407Y364456D01* +X447458Y364541D01* +X447512Y364624D01* +X447569Y364706D01* +X447630Y364784D01* +X447694Y364861D01* +X447760Y364934D01* +X447830Y365005D01* +X447902Y365073D01* +X447977Y365139D01* +X448055Y365201D01* +X448135Y365260D01* +X448217Y365316D01* +X448301Y365368D01* +X448388Y365417D01* +X448476Y365463D01* +X448566Y365505D01* +X448658Y365544D01* +X448751Y365579D01* +X448845Y365610D01* +X448941Y365637D01* +X449038Y365660D01* +X449135Y365680D01* +X449233Y365696D01* +X449332Y365708D01* +X449431Y365716D01* +X449530Y365720D01* +X449630Y365720D01* +X449729Y365716D01* +X449828Y365708D01* +X449927Y365696D01* +X450025Y365680D01* +X450122Y365660D01* +X450219Y365637D01* +X450315Y365610D01* +X450409Y365579D01* +X450502Y365544D01* +X450594Y365505D01* +X450684Y365463D01* +X450772Y365417D01* +X450859Y365368D01* +X450943Y365316D01* +X451025Y365260D01* +X451105Y365201D01* +X451183Y365139D01* +X451258Y365073D01* +X451330Y365005D01* +X451400Y364934D01* +X451466Y364861D01* +X451530Y364784D01* +X451591Y364706D01* +X451648Y364624D01* +X451702Y364541D01* +X451753Y364456D01* +X451801Y364368D01* +X451845Y364279D01* +X451885Y364188D01* +X451922Y364096D01* +X451955Y364002D01* +X451984Y363907D01* +X452009Y363811D01* +X452031Y363714D01* +X452048Y363616D01* +X452062Y363518D01* +X452072Y363419D01* +X452078Y363319D01* +X452080Y363220D01* +X452078Y363121D01* +X452072Y363021D01* +X452062Y362922D01* +X452048Y362824D01* +X452031Y362726D01* +X452009Y362629D01* +X451984Y362533D01* +X451955Y362438D01* +X451922Y362344D01* +X451885Y362252D01* +X451845Y362161D01* +X451801Y362072D01* +X451753Y361984D01* +X451702Y361899D01* +X451648Y361816D01* +X451591Y361734D01* +X451530Y361656D01* +X451466Y361579D01* +X451400Y361506D01* +X451330Y361435D01* +X451258Y361367D01* +X451183Y361301D01* +X451105Y361239D01* +X451025Y361180D01* +X450943Y361124D01* +X450859Y361072D01* +X450772Y361023D01* +X450684Y360977D01* +X450594Y360935D01* +X450502Y360896D01* +X450409Y360861D01* +X450315Y360830D01* +X450219Y360803D01* +X450122Y360780D01* +X450025Y360760D01* +X449927Y360744D01* +X449828Y360732D01* +X449729Y360724D01* +X449630Y360720D01* +X449530Y360720D01* +X449431Y360724D01* +X449332Y360732D01* +X449233Y360744D01* +X449135Y360760D01* +X449038Y360780D01* +X448941Y360803D01* +X448845Y360830D01* +X448751Y360861D01* +X448658Y360896D01* +X448566Y360935D01* +X448476Y360977D01* +X448388Y361023D01* +X448301Y361072D01* +X448217Y361124D01* +X448135Y361180D01* +X448055Y361239D01* +X447977Y361301D01* +X447902Y361367D01* +X447830Y361435D01* +X447760Y361506D01* +X447694Y361579D01* +X447630Y361656D01* +X447569Y361734D01* +X447512Y361816D01* +X447458Y361899D01* +X447407Y361984D01* +X447359Y362072D01* +X447315Y362161D01* +X447275Y362252D01* +X447238Y362344D01* +X447205Y362438D01* +X447176Y362533D01* +X447151Y362629D01* +X447129Y362726D01* +X447112Y362824D01* +X447098Y362922D01* +X447088Y363021D01* +X447082Y363121D01* +X447080Y363220D01* +X1254800Y96520D02* +X1254802Y96619D01* +X1254808Y96719D01* +X1254818Y96818D01* +X1254832Y96916D01* +X1254849Y97014D01* +X1254871Y97111D01* +X1254896Y97207D01* +X1254925Y97302D01* +X1254958Y97396D01* +X1254995Y97488D01* +X1255035Y97579D01* +X1255079Y97668D01* +X1255127Y97756D01* +X1255178Y97841D01* +X1255232Y97924D01* +X1255289Y98006D01* +X1255350Y98084D01* +X1255414Y98161D01* +X1255480Y98234D01* +X1255550Y98305D01* +X1255622Y98373D01* +X1255697Y98439D01* +X1255775Y98501D01* +X1255855Y98560D01* +X1255937Y98616D01* +X1256021Y98668D01* +X1256108Y98717D01* +X1256196Y98763D01* +X1256286Y98805D01* +X1256378Y98844D01* +X1256471Y98879D01* +X1256565Y98910D01* +X1256661Y98937D01* +X1256758Y98960D01* +X1256855Y98980D01* +X1256953Y98996D01* +X1257052Y99008D01* +X1257151Y99016D01* +X1257250Y99020D01* +X1257350Y99020D01* +X1257449Y99016D01* +X1257548Y99008D01* +X1257647Y98996D01* +X1257745Y98980D01* +X1257842Y98960D01* +X1257939Y98937D01* +X1258035Y98910D01* +X1258129Y98879D01* +X1258222Y98844D01* +X1258314Y98805D01* +X1258404Y98763D01* +X1258492Y98717D01* +X1258579Y98668D01* +X1258663Y98616D01* +X1258745Y98560D01* +X1258825Y98501D01* +X1258903Y98439D01* +X1258978Y98373D01* +X1259050Y98305D01* +X1259120Y98234D01* +X1259186Y98161D01* +X1259250Y98084D01* +X1259311Y98006D01* +X1259368Y97924D01* +X1259422Y97841D01* +X1259473Y97756D01* +X1259521Y97668D01* +X1259565Y97579D01* +X1259605Y97488D01* +X1259642Y97396D01* +X1259675Y97302D01* +X1259704Y97207D01* +X1259729Y97111D01* +X1259751Y97014D01* +X1259768Y96916D01* +X1259782Y96818D01* +X1259792Y96719D01* +X1259798Y96619D01* +X1259800Y96520D01* +X1259798Y96421D01* +X1259792Y96321D01* +X1259782Y96222D01* +X1259768Y96124D01* +X1259751Y96026D01* +X1259729Y95929D01* +X1259704Y95833D01* +X1259675Y95738D01* +X1259642Y95644D01* +X1259605Y95552D01* +X1259565Y95461D01* +X1259521Y95372D01* +X1259473Y95284D01* +X1259422Y95199D01* +X1259368Y95116D01* +X1259311Y95034D01* +X1259250Y94956D01* +X1259186Y94879D01* +X1259120Y94806D01* +X1259050Y94735D01* +X1258978Y94667D01* +X1258903Y94601D01* +X1258825Y94539D01* +X1258745Y94480D01* +X1258663Y94424D01* +X1258579Y94372D01* +X1258492Y94323D01* +X1258404Y94277D01* +X1258314Y94235D01* +X1258222Y94196D01* +X1258129Y94161D01* +X1258035Y94130D01* +X1257939Y94103D01* +X1257842Y94080D01* +X1257745Y94060D01* +X1257647Y94044D01* +X1257548Y94032D01* +X1257449Y94024D01* +X1257350Y94020D01* +X1257250Y94020D01* +X1257151Y94024D01* +X1257052Y94032D01* +X1256953Y94044D01* +X1256855Y94060D01* +X1256758Y94080D01* +X1256661Y94103D01* +X1256565Y94130D01* +X1256471Y94161D01* +X1256378Y94196D01* +X1256286Y94235D01* +X1256196Y94277D01* +X1256108Y94323D01* +X1256021Y94372D01* +X1255937Y94424D01* +X1255855Y94480D01* +X1255775Y94539D01* +X1255697Y94601D01* +X1255622Y94667D01* +X1255550Y94735D01* +X1255480Y94806D01* +X1255414Y94879D01* +X1255350Y94956D01* +X1255289Y95034D01* +X1255232Y95116D01* +X1255178Y95199D01* +X1255127Y95284D01* +X1255079Y95372D01* +X1255035Y95461D01* +X1254995Y95552D01* +X1254958Y95644D01* +X1254925Y95738D01* +X1254896Y95833D01* +X1254871Y95929D01* +X1254849Y96026D01* +X1254832Y96124D01* +X1254818Y96222D01* +X1254808Y96321D01* +X1254802Y96421D01* +X1254800Y96520D01* +D32* +X680720Y58420D02* +X669163Y58420D01* +D33* +X680720Y58420D03* +X276860Y287020D03* +X297180Y287020D03* +D34* +X160830Y291120D02* +X139350Y291120D01* +X138350Y292120D02* +X138350Y313120D01* +X138350Y292120D02* +X139350Y291120D01* +X138350Y337120D02* +X138350Y358120D01* +X159830Y358120D02* +X160830Y359120D01* +X159830Y358120D02* +X138350Y358120D01* +X180340Y353230D02* +X180340Y365816D01* +D35* +X180340Y365816D03* +D34* +X559180Y71500D02* +X559180Y63500D01* +X559180Y71500D02* +X563880Y76200D01* +D33* +X563880Y76200D03* +D34* +X574040Y79120D02* +X576580Y79120D01* +X574040Y79120D02* +X566800Y79120D01* +X563880Y76200D01* +X548810Y116840D02* +X586570Y116840D01* +D32* +X464820Y228600D02* +X452500Y228600D01* +D33* +X464820Y228600D03* +D32* +X464820Y221150D02* +X462280Y218610D01* +X464820Y221150D02* +X464820Y228600D01* +X436500Y259080D02* +X424180Y259080D01* +D33* +X424180Y259080D03* +D34* +X462450Y147150D02* +X472440Y147150D01* +X462450Y147150D02* +X462280Y147320D01* +D33* +X462280Y147320D03* +D34* +X459740Y167470D02* +X459910Y167640D01* +X469900Y167640D01* +D33* +X469900Y167640D03* +D34* +X500380Y134620D02* +X512700Y134620D01* +D33* +X500380Y134620D03* +D34* +X513080Y147150D02* +X525780Y147150D01* +X513080Y147150D02* +X502750Y147150D01* +X500380Y144780D01* +X500380Y134620D01* +X546270Y180340D02* +X556260Y180340D01* +D33* +X556260Y180340D03* +D34* +X556260Y185590D02* +X551350Y190500D01* +X556260Y185590D02* +X556260Y180340D01* +X1207240Y304060D02* +X1222920Y304060D01* +X1207240Y304060D02* +X1206500Y304800D01* +D33* +X1206500Y304800D03* +X1051560Y76200D03* +D34* +X1051560Y86190D01* +X1041400Y86190D01* +D33* +X863600Y58420D03* +D34* +X881210Y149860D02* +X876300Y154770D01* +X881210Y149860D02* +X886460Y149860D01* +D33* +X886460Y149860D03* +D34* +X937400Y205960D02* +X937400Y243980D01* +X939800Y246380D01* +D33* +X939800Y246380D03* +X1010920Y139700D03* +D34* +X1020910Y139700D01* +X1080770Y128960D02* +X1080770Y113030D01* +X1079500Y111760D01* +D33* +X1079500Y111760D03* +D34* +X1127920Y198280D02* +X1127920Y229060D01* +X1127920Y198280D02* +X1127760Y198120D01* +D33* +X1127760Y198120D03* +D34* +X680500Y137020D02* +X663080Y137020D01* +X657860Y142240D01* +D35* +X657860Y142240D03* +D34* +X680720Y139700D02* +X683260Y142240D01* +X688340Y66040D02* +X680720Y58420D01* +X688340Y66040D02* +X688340Y75820D01* +X652640Y137020D02* +X589500Y137020D01* +X652640Y137020D02* +X657860Y142240D01* +D33* +X861060Y289560D03* +X952500Y297180D03* +D34* +X937620Y297180D02* +X937400Y296960D01* +X937620Y297180D02* +X952500Y297180D01* +D33* +X952500Y281940D03* +D34* +X967570Y254000D02* +X960120Y246550D01* +X960120Y246380D01* +D33* +X960120Y246380D03* +D34* +X1052920Y304060D02* +X1070080Y304060D01* +X1071880Y302260D01* +D33* +X1071880Y302260D03* +D34* +X400050Y26670D02* +X364490Y26670D01* +X355600Y35560D01* +X355600Y50420D01* +D32* +X1016000Y50420D02* +X1016000Y37720D01* +X1004950Y26670D01* +X971550Y26670D01* +X138350Y313120D02* +X138350Y337120D01* +X162600Y312120D02* +X175560Y312120D01* +X177800Y309880D01* +D35* +X177800Y309880D03* +D34* +X347980Y182710D02* +X347980Y172720D01* +D33* +X347980Y172720D03* +D34* +X497840Y259250D02* +X497840Y269240D01* +D33* +X497840Y269240D03* +X495300Y193040D03* +X487680Y185420D03* +X502920Y185420D03* +X502920Y200660D03* +X487680Y200660D03* +D34* +X993140Y284650D02* +X993140Y294640D01* +D33* +X993140Y294640D03* +D34* +X1052920Y302430D02* +X1052920Y304060D01* +X1052920Y302430D02* +X1033780Y302430D01* +X1021080Y302430D02* +X1021080Y302640D01* +X1021080Y302430D02* +X1033780Y302430D01* +X693420Y154770D02* +X693420Y146384D01* +X684056Y137020D01* +X680500Y137020D01* +X1001140Y302640D02* +X1021080Y302640D01* +X1001140Y302640D02* +X993140Y294640D01* +D33* +X690880Y63500D03* +X701040Y58420D03* +X690880Y53340D03* +D34* +X360680Y342730D02* +X350520Y342730D01* +X360680Y342730D02* +X360850Y342900D01* +D35* +X370840Y342900D03* +D34* +X360850Y342900D01* +X360850Y363220D02* +X368300Y363220D01* +X370840Y360680D01* +D35* +X370840Y360680D03* +D34* +X246380Y358310D02* +X236220Y358310D01* +X226230Y358310D01* +X226060Y358140D01* +D35* +X226060Y358140D03* +D34* +X227110Y302090D02* +X238760Y302090D01* +X227110Y302090D02* +X224360Y299340D01* +X199610Y312590D02* +X187960Y312590D01* +X199610Y312590D02* +X202360Y315340D01* +X238760Y302090D02* +X238760Y292292D01* +D33* +X238760Y292292D03* +D34* +X187960Y312590D02* +X180510Y312590D01* +X177800Y309880D01* +X260930Y313950D02* +X275330Y313950D01* +X276860Y312420D01* +D33* +X276860Y312420D03* +D32* +X548810Y116840D02* +X548810Y106690D01* +X553060Y102440D01* +X570660Y102440D01* +X576580Y96520D01* +X576580Y81660D01* +X574040Y79120D01* +D33* +X556260Y83820D03* +D34* +X703580Y75820D02* +X703580Y60960D01* +X701040Y58420D01* +D33* +X731520Y281940D03* +X840740Y254000D03* +X731520Y302260D03* +X678180Y302260D03* +X571500Y370840D03* +X571500Y322580D03* +X505460Y370840D03* +X358140Y312420D03* +X342900Y241300D03* +X617220Y254000D03* +X1165860Y205740D03* +X1125220Y281940D03* +X1254760Y152400D03* +X1158240Y109220D03* +X919480Y15240D03* +X828040Y15240D03* +X266700Y17780D03* +X139700Y86360D03* +X353060Y101600D03* +X1178560Y167640D03* +X1074420Y208280D03* +D34* +X1254590Y152230D02* +X1254590Y142240D01* +X1254590Y152230D02* +X1254760Y152400D01* +D33* +X1196340Y90480D03* +D34* +X1196340Y98890D01* +X837989Y56050D02* +X837819Y55880D01* +X837989Y56050D02* +X853440Y56050D01* +X853270Y93980D02* +X853440Y94150D01* +X853270Y93980D02* +X837819Y93980D01* +D33* +X868680Y83820D03* +X787400Y78740D03* +X789940Y57150D03* +X812800Y76200D03* +X508000Y78740D03* +X538480Y17780D03* +X485140Y17780D03* +X985520Y246380D03* +X1026160Y246380D03* +X1031240Y190500D03* +D34* +X1041400Y96690D02* +X1051560Y96690D01* +X1041400Y96690D02* +X1031240Y96690D01* +X1089660Y159201D02* +X1089660Y236840D01* +X1089660Y159201D02* +X1070682Y140223D01* +X1070682Y108048D02* +X1059324Y96690D01* +X1031240Y96690D01* +X1070682Y108048D02* +X1070682Y140223D01* +X1075780Y258340D02* +X1068160Y265960D01* +X1052920Y265960D01* +X1075780Y258340D02* +X1075780Y250720D01* +X1089660Y236840D01* +X1205760Y291360D02* +X1222920Y291360D01* +X1205760Y291360D02* +X1193800Y279400D01* +D33* +X1193800Y279400D03* +D34* +X507800Y220780D02* +X507800Y212390D01* +X507800Y220780D02* +X518160Y231140D01* +X518160Y239494D01* +D33* +X518160Y239494D03* +D34* +X1207240Y202460D02* +X1222920Y202460D01* +X1207240Y202460D02* +X1206500Y203200D01* +D33* +X1206500Y203200D03* +D34* +X514650Y205540D02* +X514650Y217541D01* +D33* +X563880Y211610D03* +D34* +X563880Y215971D01* +X531658Y234648D02* +X528150Y231140D01* +X528150Y228600D01* +X531658Y234648D02* +X545203Y234648D01* +X563880Y215971D01* +X528150Y228600D02* +X525710Y228600D01* +X514650Y217541D01* +D33* +X502800Y162909D03* +X1023620Y175260D03* +D34* +X502800Y173690D02* +X502800Y162909D01* +X1023620Y175260D02* +X1023790Y175430D01* +X1033780Y175430D01* +X1207240Y240560D02* +X1222920Y240560D01* +X1207240Y240560D02* +X1206500Y241300D01* +D33* +X1206500Y241300D03* +D34* +X492800Y224124D02* +X492800Y212390D01* +X492800Y224124D02* +X499816Y231140D01* +D33* +X499816Y231140D03* +D34* +X1209780Y215160D02* +X1222920Y215160D01* +X1209780Y215160D02* +X1206500Y218440D01* +D33* +X1206500Y218440D03* +D34* +X487800Y212390D02* +X487800Y228720D01* +X490220Y231140D01* +X490188Y231172D01* +D33* +X490188Y231172D03* +D34* +X1207240Y278660D02* +X1222920Y278660D01* +X1207240Y278660D02* +X1206500Y279400D01* +D33* +X1206500Y279400D03* +D34* +X482800Y212390D02* +X482600Y212590D01* +X482600Y238760D01* +D33* +X482600Y238760D03* +D34* +X1052920Y189760D02* +X1073680Y189760D01* +X1074420Y190500D01* +D33* +X1074420Y190500D03* +X566332Y202014D03* +D34* +X566420Y201926D01* +X566420Y190670D01* +X1052920Y177060D02* +X1073680Y177060D01* +X1074420Y177800D01* +D33* +X1074420Y177800D03* +X581660Y203200D03* +D34* +X574040Y195580D01* +X574040Y162390D02* +X566590Y154940D01* +X574040Y162390D02* +X574040Y195580D01* +X1052920Y164360D02* +X1078760Y164360D01* +X1082040Y167640D01* +D33* +X1082040Y167640D03* +X553720Y203200D03* +D34* +X538650Y203200D01* +X1194540Y265960D02* +X1222920Y265960D01* +X1194540Y265960D02* +X1183640Y276860D01* +X1165860Y276860D01* +D33* +X1165860Y276860D03* +D35* +X419100Y350596D03* +D34* +X419024Y350520D02* +X409110Y350520D01* +X419024Y350520D02* +X419100Y350596D01* +X1199620Y253260D02* +X1222920Y253260D01* +D33* +X1158240Y269240D03* +D35* +X431800Y353060D03* +D34* +X1183640Y269240D02* +X1199620Y253260D01* +X1183640Y269240D02* +X1158240Y269240D01* +X424180Y360680D02* +X409110Y360680D01* +X424180Y360680D02* +X431800Y353060D01* +X680500Y183020D02* +X694690Y183020D01* +X712358Y200688D01* +X680500Y183020D02* +X589500Y183020D01* +X678180Y180700D02* +X680500Y183020D01* +X678180Y180700D02* +X678180Y165270D01* +X693420Y165270D01* +X1222148Y121920D02* +X1222920Y122692D01* +X1222920Y138960D01* +D33* +X1222148Y121920D03* +D34* +X492760Y330200D02* +X463120Y330200D01* +X589500Y233460D02* +X589500Y183020D01* +X589500Y233460D02* +X492760Y330200D01* +X903220Y168946D02* +X903220Y168660D01* +X903220Y168946D02* +X871478Y200688D01* +D33* +X903220Y168660D03* +D34* +X871478Y200688D02* +X712358Y200688D01* +X491808Y283958D02* +X491808Y301563D01* +X491808Y283958D02* +X490023Y282172D01* +X452058Y282172D01* +X441960Y292270D02* +X441960Y297010D01* +X441960Y292270D02* +X452058Y282172D01* +X484151Y309220D02* +X491808Y301563D01* +X484151Y309220D02* +X481760Y309220D01* +X462280Y307510D02* +X462280Y312190D01* +X453072Y335368D02* +X448740Y339700D01* +X441120Y339700D01* +X453072Y335368D02* +X453072Y321398D01* +X462280Y312190D01* +D36* +X210780Y332820D02* +X203080Y325120D01* +X243430Y320450D02* +X260930Y320450D01* +X231060Y332820D02* +X210780Y332820D01* +X231060Y332820D02* +X243430Y320450D01* +X181460Y331620D02* +X162600Y331620D01* +X181460Y331620D02* +X187960Y325120D01* +X203080Y325120D01* +X243755Y326950D02* +X260930Y326950D01* +X243755Y326950D02* +X233059Y337646D01* +X205408Y337646D02* +X200784Y333022D01* +X198244Y333022D01* +X205408Y337646D02* +X233059Y337646D01* +D35* +X198244Y333022D03* +X176511Y323831D03* +D36* +X175222Y325120D01* +X162600Y325120D01* +D34* +X738970Y160020D02* +X738970Y144650D01* +X738520Y144200D01* +X724070Y144650D02* +X724070Y160020D01* +X724070Y144650D02* +X724520Y144200D01* +X713570Y134450D02* +X706120Y134450D01* +X714320Y135200D02* +X724520Y135200D01* +X714320Y135200D02* +X713570Y134450D01* +X1265090Y129750D02* +X1265090Y142240D01* +X1265090Y129750D02* +X1265300Y129540D01* +X1052920Y151660D02* +X1016740Y151660D01* +X993140Y175260D01* +D33* +X993140Y175260D03* +X759460Y160020D03* +D34* +X749470Y160020D01* +X1052848Y253188D02* +X1052920Y253260D01* +X978882Y253188D02* +X978070Y254000D01* +X978882Y253188D02* +X1052848Y253188D01* +D33* +X972820Y165100D03* +X955040Y175260D03* +D34* +X957580Y175260D02* +X978070Y195750D01* +X957580Y175260D02* +X955040Y175260D01* +X978070Y195750D02* +X978070Y254000D01* +X935228Y127508D02* +X935228Y43188D01* +X935228Y127508D02* +X972820Y165100D01* +X935228Y43188D02* +X922521Y30480D01* +D35* +X875945Y34436D03* +D34* +X879902Y30480D01* +X922521Y30480D01* +X862615Y66928D02* +X1010775Y215088D01* +X1024578Y215160D02* +X1052920Y215160D01* +X1024578Y215160D02* +X1024506Y215088D01* +X1010775Y215088D01* +X847170Y62380D02* +X837819Y62380D01* +X847170Y62380D02* +X851718Y66928D01* +X862615Y66928D01* +X837819Y69131D02* +X837819Y62380D01* +X837819Y69131D02* +X833290Y73660D01* +X1052848Y202388D02* +X1052920Y202460D01* +X1052848Y202388D02* +X1017728Y202388D01* +X1003300Y187960D01* +D33* +X1003300Y187960D03* +X713740Y170180D03* +D34* +X713570Y170010D01* +X713570Y160020D01* +X1195070Y128960D02* +X1196340Y127690D01* +X1196340Y109390D01* +X1191430Y109390D01* +X1186180Y104140D01* +D33* +X1186180Y104140D03* +D34* +X904240Y119380D02* +X885340Y100480D01* +X904240Y119380D02* +X904240Y124460D01* +X904744Y124460D01* +D33* +X904744Y124460D03* +D34* +X885340Y100480D02* +X837819Y100480D01* +X837819Y107231D02* +X833290Y111760D01* +X837819Y107231D02* +X837819Y100480D01* +D33* +X1150620Y167640D03* +X957580Y139700D03* +D34* +X1211410Y109390D02* +X1211580Y109390D01* +X1211410Y109390D02* +X1207986Y112814D01* +X1207986Y143962D01* +X1159426Y159004D02* +X1150790Y167640D01* +X1150620Y167640D01* +X1192943Y159004D02* +X1207986Y143962D01* +X1192943Y159004D02* +X1159426Y159004D01* +X1222920Y189760D02* +X1235180Y189760D01* +X1239520Y185420D01* +X1239520Y124460D01* +X1224450Y109390D02* +X1211580Y109390D01* +X1224450Y109390D02* +X1239520Y124460D01* +X939292Y41504D02* +X924204Y26416D01* +X939292Y121412D02* +X957580Y139700D01* +X939292Y121412D02* +X939292Y41504D01* +D35* +X867890Y27940D03* +D34* +X869414Y26416D02* +X924204Y26416D01* +X869414Y26416D02* +X867890Y27940D01* +X1222848Y164432D02* +X1222920Y164360D01* +X1222848Y164432D02* +X1202589Y164432D01* +X1196340Y170681D01* +X1196340Y246380D01* +X1180824Y261896D01* +X1089506Y261896D02* +X1084940Y257330D01* +X1084940Y252250D01* +D33* +X1084940Y252250D03* +D34* +X1089506Y261896D02* +X1180824Y261896D01* +D33* +X871894Y246380D03* +D34* +X861230Y246380D01* +X669036Y41656D02* +X647700Y20320D01* +X669036Y41656D02* +X739902Y41656D01* +X817880Y100480D02* +X818261Y100480D01* +X817880Y100480D02* +X798726Y100480D01* +X739902Y41656D01* +X817880Y106850D02* +X822790Y111760D01* +X817880Y106850D02* +X817880Y100480D01* +D37* +X895350Y45720D02* +X908050Y58420D01* +X895350Y45720D02* +X875030Y45720D01* +D34* +X818261Y62380D02* +X811380Y62380D01* +X806704Y67056D01* +X776986Y67056D01* +X743458Y33528D01* +X686308Y33528D01* +X673100Y20320D01* +X685800Y7620D01* +X836930Y7620D01* +X875030Y45720D01* +X822790Y73660D02* +X818261Y69131D01* +X818261Y62380D01* +D38* +X446848Y190540D02* +X443114Y186806D01* +D33* +X443114Y186806D03* +D38* +X446848Y190540D02* +X475950Y190540D01* +X441728Y185420D02* +X431970Y185420D01* +X441728Y185420D02* +X443114Y186806D01* +X449580Y180340D02* +X454780Y185540D01* +D33* +X449580Y180340D03* +D38* +X454780Y185540D02* +X475950Y185540D01* +X444500Y175260D02* +X439590Y175260D01* +X444500Y175260D02* +X449580Y180340D01* +X454780Y200540D02* +X449580Y205740D01* +D33* +X449580Y205740D03* +D38* +X454780Y200540D02* +X475950Y200540D01* +X444500Y210820D02* +X439590Y210820D01* +X444500Y210820D02* +X449580Y205740D01* +X443114Y199274D02* +X446848Y195540D01* +D33* +X443114Y199274D03* +D38* +X446848Y195540D02* +X475950Y195540D01* +X441728Y200660D02* +X431970Y200660D01* +X441728Y200660D02* +X443114Y199274D01* +D34* +X469930Y205540D02* +X475950Y205540D01* +X469930Y205540D02* +X467360Y208110D01* +X462280Y208110D01* +X429090Y220980D02* +X428880Y220980D01* +X436500Y228600D01* +X347980Y193210D02* +X330200Y193210D01* +X324450Y187460D01* +X310005Y187460D01* +X347980Y193210D02* +X348150Y193040D01* +X482800Y173690D02* +X482800Y168010D01* +X472440Y157650D01* +X202994Y137975D02* +X194804Y129785D01* +X202994Y137975D02* +X202994Y169796D01* +X245296Y212098D01* +X292090Y212098D01* +X292090Y205375D01* +X310005Y187460D01* +D32* +X436500Y228600D02* +X436500Y243840D01* +D34* +X457867Y208110D02* +X462280Y208110D01* +X421470Y200660D02* +X421470Y193040D01* +X421470Y185420D01* +X421470Y193040D02* +X348150Y193040D01* +X429090Y210820D02* +X429090Y220980D01* +X436500Y228600D02* +X437377Y228600D01* +X457867Y208110D01* +X444330Y157650D02* +X472440Y157650D01* +X429090Y172720D02* +X429090Y175260D01* +X429090Y172720D02* +X444330Y157480D01* +X444330Y157650D01* +D38* +X429090Y175260D02* +X424180Y175260D01* +X421470Y177970D02* +X421470Y185420D01* +X421470Y177970D02* +X424180Y175260D01* +X421470Y203200D02* +X429090Y210820D01* +X421470Y203200D02* +X421470Y200660D01* +D34* +X514650Y200540D02* +X525490Y200540D01* +X528150Y203200D01* +X528150Y215900D01* +X517890Y180540D02* +X514650Y180540D01* +X517890Y180540D02* +X522506Y175924D01* +X522506Y173288D01* +X540684Y155110D02* +X543560Y155110D01* +X540684Y155110D02* +X522506Y173288D01* +X543560Y155110D02* +X555920Y155110D01* +X556090Y154940D01* +X521177Y185540D02* +X514650Y185540D01* +X521177Y185540D02* +X526570Y180147D01* +X526570Y174971D01* +X538647Y162894D01* +X566590Y165270D02* +X566590Y170180D01* +X564214Y162894D02* +X538647Y162894D01* +X564214Y162894D02* +X566590Y165270D01* +X566590Y170180D02* +X566420Y170350D01* +X566420Y180170D01* +X475950Y180540D02* +X468330Y180540D01* +X466316Y178526D01* +X460296Y178526D01* +X459740Y177970D01* +X492800Y173690D02* +X492800Y149860D01* +X469940Y127000D01* +X439590Y127000D01* +X487800Y151130D02* +X487800Y173690D01* +X487800Y151130D02* +X476370Y139700D01* +X439590Y139700D01* +X179609Y155204D02* +X179609Y122651D01* +X203710Y98550D02* +X273810Y98550D01* +X294640Y119380D01* +X203710Y98550D02* +X179609Y122651D01* +X383710Y139700D02* +X429090Y139700D01* +X383710Y139700D02* +X363390Y119380D01* +X294640Y119380D01* +X514650Y195540D02* +X528190Y195540D01* +X533230Y190500D01* +X540850Y190500D01* +X507800Y173690D02* +X507800Y168610D01* +X513080Y163330D01* +X513080Y157650D01* +X525780Y157650D01* +X530860Y157650D02* +X533780Y154730D01* +X530860Y157650D02* +X525780Y157650D01* +X533780Y154730D02* +X533780Y139700D01* +X528700Y134620D01* +X1209780Y177060D02* +X1222920Y177060D01* +X1209780Y177060D02* +X1206500Y180340D01* +D33* +X1206500Y180340D03* +X1023620Y165100D03* +D34* +X1033610Y165100D02* +X1033780Y164930D01* +X1033610Y165100D02* +X1023620Y165100D01* +D37* +X749300Y78740D02* +X734440Y63880D01* +X734440Y55880D01* +D33* +X406400Y317500D03* +X866140Y48260D03* +D34* +X535770Y180340D02* +X525570Y190540D01* +X541020Y175090D02* +X541020Y170180D01* +X541020Y175090D02* +X535770Y180340D01* +D33* +X541020Y170180D03* +X469900Y256540D03* +D34* +X482430Y256540D02* +X485140Y259250D01* +X482430Y256540D02* +X469900Y256540D01* +X538650Y228600D02* +X538650Y220980D01* +X538650Y215900D01* +X538650Y220980D02* +X548640Y220980D01* +X548205Y221415D01* +D33* +X548205Y221415D03* +D34* +X541020Y170180D02* +X556090Y170180D01* +D33* +X668020Y154914D03* +D34* +X850730Y154770D02* +X863600Y154770D01* +X850730Y154770D02* +X848360Y152400D01* +D33* +X848360Y152400D03* +D34* +X851040Y137020D02* +X865920Y137020D01* +X851040Y137020D02* +X848360Y139700D01* +X848360Y152400D01* +X678180Y154770D02* +X678036Y154914D01* +X668020Y154914D01* +X543560Y144610D02* +X543560Y134620D01* +D33* +X543560Y134620D03* +D32* +X452500Y243840D02* +X452500Y259080D01* +X467360Y259080D02* +X469900Y256540D01* +X467360Y259080D02* +X452500Y259080D01* +D34* +X514650Y190540D02* +X525570Y190540D01* +X1183640Y83650D02* +X1203960Y83650D01* +X1183640Y83650D02* +X1176020Y91270D01* +X1176020Y98890D01* +X1211580Y98890D02* +X1211580Y91270D01* +X1203960Y83650D01* +X1211580Y98890D02* +X1211750Y99060D01* +X1221740Y99060D01* +D33* +X1221740Y99060D03* +D34* +X881380Y256540D02* +X881380Y261620D01* +X881380Y256540D02* +X878840Y254000D01* +X868680Y254000D01* +X862028Y260652D01* +X813816Y260652D01* +D33* +X881380Y261620D03* +X1178560Y289560D03* +X1005840Y294640D03* +D34* +X1005840Y284650D01* +X1028490Y286640D02* +X1033780Y291930D01* +X1028490Y286640D02* +X1021080Y286640D01* +X1021080Y284650D01* +X1005840Y284650D01* +X1033780Y291360D02* +X1052920Y291360D01* +X1033780Y291360D02* +X1033780Y291930D01* +D33* +X754380Y127000D03* +D34* +X333710Y353230D02* +X333430Y352950D01* +X333710Y353230D02* +X350520Y353230D01* +X360680Y353230D01* +X378290Y353230D01* +D35* +X386080Y345440D03* +D34* +X378290Y353230D01* +X260930Y333450D02* +X250750Y333450D01* +X246380Y337820D01* +X246380Y347810D01* +X236220Y347810D01* +X228770Y347810D01* +X228600Y347980D01* +X226060Y347980D01* +D35* +X226060Y347980D03* +D34* +X738520Y135200D02* +X747340Y135200D01* +X749160Y137020D01* +X754380Y137020D02* +X774920Y137020D01* +X754380Y137020D02* +X749160Y137020D01* +X754380Y137020D02* +X754380Y127000D01* +X1249300Y129540D02* +X1249300Y119000D01* +X1247140Y116840D01* +D33* +X1247140Y116840D03* +D34* +X849610Y49380D02* +X837819Y49380D01* +X849610Y49380D02* +X853440Y45550D01* +X863430Y45550D01* +X866140Y48260D01* +X860890Y76200D02* +X853440Y83650D01* +X860890Y76200D02* +X861060Y76200D01* +D35* +X861060Y76200D03* +D34* +X853440Y83650D02* +X849610Y87480D01* +X837819Y87480D01* +X825500Y93980D02* +X818261Y93980D01* +X832000Y87480D02* +X837819Y87480D01* +X832000Y87480D02* +X825500Y93980D01* +X825500Y55880D02* +X818261Y55880D01* +X832000Y49380D02* +X837819Y49380D01* +X832000Y49380D02* +X825500Y55880D01* +X781998Y292470D02* +X761159Y292470D01* +X781998Y292470D02* +X813816Y260652D01* +X761159Y292470D02* +X699595Y292470D01* +D32* +X519000Y55040D02* +X553720Y20320D01* +X571500Y20320D01* +X519000Y94820D02* +X526620Y102440D01* +X534060Y102440D01* +X538310Y106690D02* +X538310Y116840D01* +X538310Y106690D02* +X534060Y102440D01* +D34* +X805180Y87480D02* +X818261Y87480D01* +X805350Y86360D02* +X805180Y86190D01* +X805180Y87480D01* +X805350Y86360D02* +X805350Y83820D01* +X798915Y77385D01* +X798745Y77385D01* +X792480Y71120D01* +X806470Y49380D02* +X805350Y48260D01* +X806470Y49380D02* +X818261Y49380D01* +X654653Y7620D02* +X584200Y7620D01* +X571500Y20320D01* +X654653Y7620D02* +X661162Y14129D01* +X661162Y25265D01* +X673489Y37592D01* +X741680Y37592D01* +X775208Y71120D02* +X792480Y71120D01* +X775208Y71120D02* +X741680Y37592D01* +X805180Y57150D02* +X805350Y56980D01* +X805350Y48260D01* +D33* +X805180Y57150D03* +X798915Y77385D03* +D32* +X519000Y94820D02* +X519000Y55040D01* +D34* +X194809Y202429D02* +X194809Y230904D01* +X194809Y202429D02* +X162560Y170180D01* +X162560Y132080D01* +X200660Y93980D01* +X276860Y93980D01* +X297180Y114300D01* +X378630Y127000D02* +X429090Y127000D01* +X378630Y127000D02* +X365930Y114300D01* +X297180Y114300D01* +X417057Y332660D02* +X417137Y332740D01* +X417057Y332660D02* +X416480Y332660D01* +X462280Y290220D02* +X481760Y290220D01* +X462280Y290220D02* +X462280Y297010D01* +D33* +X417137Y332740D03* +X451955Y291935D03* +D34* +X453669Y290220D01* +X481760Y290220D01* +X415690Y333450D02* +X333430Y333450D01* +X415690Y333450D02* +X416480Y332660D01* +X415900Y320700D02* +X441120Y320700D01* +X441960Y309880D02* +X441960Y307510D01* +X441120Y310720D02* +X441120Y320700D01* +X441120Y310720D02* +X441960Y309880D01* +X409650Y326950D02* +X333430Y326950D01* +X409650Y326950D02* +X415900Y320700D01* +D32* +X175730Y338120D02* +X162600Y338120D01* +X175730Y338120D02* +X180340Y342730D01* +X180510Y342900D01* +X190500Y342900D01* +D35* +X190500Y342900D03* +D39* +X490605Y121876D03* +D40* +X510920Y111760D02* +X510920Y104140D01* +X510920Y111760D02* +X500804Y121876D01* +X490605Y121876D01* +D34* +X594190Y75070D02* +X595020Y75900D01* +X594190Y75070D02* +X594190Y63500D01* +X626237Y68580D02* +X626237Y75900D01* +X626237Y68580D02* +X636397Y58420D01* +X626237Y75900D02* +X614020Y75900D01* +X626237Y75900D02* +X629920Y75900D01* +X629920Y93980D02* +X629920Y98890D01* +X629920Y93980D02* +X643860Y93980D01* +X629920Y93980D02* +X629920Y75900D01* +X629920Y109390D02* +X626590Y109390D01* +X619100Y101900D01* +X614020Y101900D01* +X597070Y103950D02* +X595020Y101900D01* +X597070Y103950D02* +X597070Y116840D01* +X611970Y116840D01* +X1052848Y278588D02* +X1052920Y278660D01* +X1030233Y274150D02* +X993140Y274150D01* +X1034671Y278588D02* +X1052848Y278588D01* +X1034671Y278588D02* +X1030233Y274150D01* +X1005840Y274150D02* +X993140Y274150D01* +X513080Y299720D02* +X503760Y299720D01* +X513080Y299720D02* +X533400Y279400D01* +X891400Y274150D02* +X993140Y274150D01* +X891400Y274150D02* +X891400Y296960D01* +X891400Y205960D01* +X644940Y205960D01* +X571500Y279400D02* +X563880Y279400D01* +X571500Y279400D02* +X644940Y205960D01* +D33* +X563880Y279400D03* +X533400Y279400D03* +D32* +X576580Y48260D02* +X588900Y48260D01* +X576580Y48260D02* +X548260Y48260D01* +X543180Y53340D02* +X543180Y63500D01* +X543180Y53340D02* +X548260Y48260D01* +D35* +X528320Y81280D03* +D32* +X400050Y90170D02* +X367030Y90170D01* +X355600Y78740D01* +X355600Y66420D01* +D40* +X971550Y90170D02* +X1002030Y90170D01* +X1016000Y76200D01* +X1016000Y66420D01* +D32* +X1031240Y71120D02* +X1031240Y86190D01* +X1031240Y71120D02* +X1026160Y66040D01* +X1016380Y66040D01* +X1016000Y66420D01* +X576580Y63120D02* +X576580Y48260D01* +D40* +X494920Y104140D02* +X477140Y104140D01* +X464440Y91440D01* +X400050Y91440D01* +X400050Y90170D01* +D32* +X543180Y80060D02* +X543180Y63500D01* +X543180Y80060D02* +X543560Y80440D01* +X529160Y80440D01* +X528320Y81280D01* +X604520Y75900D02* +X604690Y75730D01* +X604690Y63500D01* +X604900Y63500D02* +X604900Y48260D01* +X604900Y63500D02* +X604690Y63500D01* +D34* +X622470Y116840D02* +X678560Y116840D01* +X688340Y107060D01* +X688340Y91820D01* +D37* +X718440Y73280D02* +X723900Y78740D01* +X718440Y73280D02* +X718440Y55880D01* +X688340Y91820D02* +X674020Y91820D01* +D32* +X671860Y93980D01* +D37* +X713740Y91820D02* +X723900Y81660D01* +X713740Y91820D02* +X703580Y91820D01* +X723900Y81660D02* +X723900Y78740D01* +X703580Y91820D02* +X688340Y91820D01* +D34* +X815340Y266700D02* +X850730Y266700D01* +X775070Y306970D02* +X767921Y306970D01* +X775070Y306970D02* +X815340Y266700D01* +X850730Y246380D02* +X728980Y246380D01* +X688340Y287020D02* +X688340Y299720D01* +X692833Y304213D02* +X692833Y306970D01* +X692833Y304213D02* +X688340Y299720D01* +X688340Y287020D02* +X728980Y246380D01* +X346580Y359450D02* +X333430Y359450D01* +X346580Y359450D02* +X350350Y363220D01* +X275330Y346450D02* +X260930Y346450D01* +X275330Y346450D02* +X302260Y373380D01* +X378460Y373380D01* +X391160Y360680D01* +X398610Y360680D01* +X274577Y339950D02* +X260930Y339950D01* +X274577Y339950D02* +X303943Y369316D01* +X374904Y369316D02* +X393700Y350520D01* +X398610Y350520D01* +X374904Y369316D02* +X303943Y369316D01* +X260930Y307450D02* +X250770Y307450D01* +X245690Y312530D01* +X238820Y312530D01* +X238760Y312590D01* +X227110Y312590D01* +X224360Y315340D01* +X202360Y299340D02* +X202360Y291580D01* +X241300Y284480D02* +X247610Y290790D01* +X251420Y300950D02* +X260930Y300950D01* +X251420Y300950D02* +X247610Y297140D01* +X247610Y290790D01* +X199610Y302090D02* +X187960Y302090D01* +X199610Y302090D02* +X202360Y299340D01* +X209460Y284480D02* +X241300Y284480D01* +X209460Y284480D02* +X202360Y291580D01* +X527980Y259250D02* +X528150Y259080D01* +X497800Y219040D02* +X497800Y212390D01* +X497800Y219040D02* +X510540Y231780D01* +X510540Y248920D01* +X520870Y259250D02* +X527980Y259250D01* +X520870Y259250D02* +X510540Y248920D01* +X497840Y248750D02* +X485140Y248750D01* +X497840Y248750D02* +X498010Y248920D01* +X510540Y248920D01* +X1207240Y151660D02* +X1222920Y151660D01* +X1207240Y151660D02* +X1191260Y167640D01* +X1191260Y243840D01* +X1177268Y257832D01* +X1094990Y254250D02* +X1094490Y254250D01* +X1094990Y254250D02* +X1098572Y257832D01* +D33* +X1094490Y254250D03* +X871220Y261620D03* +D34* +X866140Y266700D01* +X861230Y266700D01* +X1098572Y257832D02* +X1177268Y257832D01* +D33* +X988060Y160020D03* +D34* +X706120Y153498D02* +X705399Y154219D01* +D33* +X705399Y154219D03* +D34* +X706120Y153498D02* +X706120Y144950D01* +X1093470Y128960D02* +X1093470Y110490D01* +X1082040Y99060D01* +X1076960Y99060D01* +D33* +X1076960Y99060D03* +X1056640Y116840D03* +D34* +X1046480Y127000D01* +X1003300Y127000D01* +X988060Y142240D01* +X988060Y160020D01* +D33* +X1092560Y244630D03* +X548640Y259080D03* +D34* +X538650Y259080D01* +X1182370Y140970D02* +X1182370Y128960D01* +X1177544Y145796D02* +X1124204Y145796D01* +X1094740Y175260D01* +X1177544Y145796D02* +X1182370Y140970D01* +X1094740Y242450D02* +X1092560Y244630D01* +X1094740Y242450D02* +X1094740Y175260D01* +X1182370Y128960D02* +X1182370Y115740D01* +X1176020Y109390D01* +X1052920Y138960D02* +X1032150Y138960D01* +X1031410Y139700D01* +X943356Y115316D02* +X943356Y39821D01* +X925887Y22352D01* +X873252Y22352D01* +X1014984Y147320D02* +X995680Y166624D01* +X985325Y166624D01* +X978916Y160216D01* +X978916Y150876D01* +X1031410Y144780D02* +X1031410Y139700D01* +X1031410Y144780D02* +X1028870Y147320D01* +X1014984Y147320D01* +X978916Y150876D02* +X943356Y115316D01* +D35* +X861850Y19530D03* +D34* +X870430Y19530D01* +X873252Y22352D01* +X863600Y183020D02* +X774920Y183020D01* +X863600Y183020D02* +X865920Y183020D01* +X878700Y183020D01* +X863600Y183020D02* +X863600Y165270D01* +X876300Y165270D01* +X878700Y183020D02* +X901700Y160020D01* +X1029999Y240560D02* +X1052920Y240560D01* +X1029999Y240560D02* +X949459Y160020D01* +X901700Y160020D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_drills.xln b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_drills.xln new file mode 100644 index 0000000000..d7dd805986 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_drills.xln @@ -0,0 +1,230 @@ +M48 +;GenerationSoftware,Autodesk,EAGLE,9.4.2*% +;CreationDate,2019-06-28T04:47:29Z*% +FMAT,2 +ICI,OFF +METRIC,TZ,000.000 +T11C0.305 +T10C0.350 +T9C0.508 +T8C0.550 +T7C0.900 +T6C1.016 +T5C1.600 +T4C1.651 +T3C3.300 +T2C3.302 +T1C5.080 +% +G90 +M71 +T1 +X5080Y15240 +X132080Y15240 +T2 +X7620Y8890 +X7620Y3175 +X129540Y3175 +X129540Y8890 +T3 +X22859Y13590 +X22859Y25020 +T4 +X90805Y5842 +X97155Y9017 +X97155Y2667 +X46355Y5842 +X40005Y9017 +X40005Y2667 +T5 +X25909Y11430 +X25909Y27180 +T6 +X72390Y7874 +X74930Y7874 +X57150Y2032 +X59690Y2032 +X62230Y2032 +X64770Y2032 +X67310Y2032 +X69850Y2032 +X72390Y2032 +X74930Y2032 +X77470Y2032 +X80010Y2032 +T7 +X29209Y18670 +X31749Y17400 +X29209Y16130 +X31749Y14860 +X31749Y19940 +X29209Y21210 +X31749Y22480 +X29209Y23750 +X19480Y12979 +X17960Y25629 +X19481Y23090 +X17961Y15520 +T8 +X49060Y12188 +T9 +X13835Y29212 +X13835Y35812 +T10 +X19824Y33302 +X18034Y36582 +X65786Y14224 +X17780Y30988 +X37084Y34290 +X37084Y36068 +X22606Y35814 +X86185Y1953 +X52832Y8128 +X19050Y34290 +X86106Y7620 +X22606Y34798 +X38608Y34544 +X86789Y2794 +X87595Y3444 +X17651Y32383 +X43180Y35306 +X41910Y35060 +T11 +X35306Y10160 +X117856Y16764 +X107442Y20828 +X119634Y9048 +X86868Y8382 +X78740Y7874 +X78994Y5715 +X81280Y7620 +X50800Y7874 +X53848Y1778 +X48514Y1778 +X98552Y24638 +X102616Y24638 +X103124Y19050 +X119380Y27940 +X51816Y23949 +X120650Y20320 +X56388Y21161 +X50280Y16291 +X102362Y17526 +X120650Y24130 +X49982Y23114 +X120650Y21844 +X49019Y23117 +X120650Y27940 +X48260Y23876 +X107442Y19050 +X56633Y20201 +X107442Y17780 +X58166Y20320 +X108204Y16764 +X55372Y20320 +X116586Y27686 +X13970Y8636 +X115824Y26924 +X26670Y1778 +X122215Y12192 +X90322Y16866 +X73152Y28194 +X82804Y1524 +X99314Y17526 +X75946Y16002 +X97282Y16510 +X95504Y17526 +X91948Y1524 +X100330Y18796 +X71374Y17018 +X118618Y10414 +X90474Y12446 +X115062Y16764 +X95758Y13970 +X115824Y10922 +X108494Y25225 +X87189Y24638 +X44311Y18681 +X44958Y18034 +X44958Y20574 +X44311Y19927 +X120650Y18034 +X102362Y16510 +X40640Y31750 +X86614Y4826 +X54102Y17018 +X46990Y25654 +X54820Y22142 +X66802Y15491 +X84836Y15240 +X54356Y13462 +X122174Y9906 +X88138Y26162 +X117856Y28956 +X100584Y29464 +X75438Y12700 +X125476Y15240 +X112522Y28194 +X124714Y11684 +X116586Y20574 +X80518Y5715 +X79892Y7738 +X41714Y33274 +X45195Y29193 +X61722Y25400 +X55626Y8382 +X56388Y27940 +X53340Y27940 +X34290Y24130 +X109449Y25425 +X87122Y26162 +X98806Y16002 +X70540Y15422 +X107696Y9906 +X105664Y11684 +X109256Y24463 +X54864Y25908 +X35814Y31242 +X27686Y31242 +X23876Y29229 +X50546Y37084 +X57150Y32258 +X57150Y37084 +X69088Y5334 +X70104Y5842 +X69088Y6350 +X99314Y29464 +X48768Y20066 +X50292Y20066 +X50292Y18542 +X48768Y18542 +X49530Y19304 +X49784Y26924 +X34798Y17272 +X67818Y30226 +X107188Y30226 +X96012Y24638 +X95250Y28194 +X95250Y29718 +X86106Y28956 +X73152Y30226 +X112776Y19812 +X107950Y11176 +X101092Y13970 +X93980Y24638 +X88646Y14986 +X86360Y5842 +X105156Y7620 +X120650Y30480 +X55626Y18034 +X50038Y13462 +X46990Y16764 +X46228Y14732 +X42418Y25908 +X46482Y22860 +X56388Y7620 +X84074Y25400 +X29718Y28702 +X27686Y28702 +X68072Y5842 +M30 \ No newline at end of file diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_profile.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_profile.gbr new file mode 100644 index 0000000000..013e9cad9c --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_profile.gbr @@ -0,0 +1,982 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%IN*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.508000*% +%ADD11C,0.254000*% + + +D10* +X140970Y358120D02* +X133350Y358120D01* +X133350Y292120D02* +X140970Y292120D01* +D11* +X0Y25400D02* +X97Y23186D01* +X386Y20989D01* +X865Y18826D01* +X1532Y16713D01* +X2380Y14666D01* +X3403Y12700D01* +X4594Y10831D01* +X5942Y9073D01* +X7440Y7440D01* +X9073Y5942D01* +X10831Y4594D01* +X12700Y3403D01* +X14666Y2380D01* +X16713Y1532D01* +X18826Y865D01* +X20989Y386D01* +X23186Y97D01* +X25400Y0D01* +X1346200Y0D01* +X1348414Y97D01* +X1350611Y386D01* +X1352774Y865D01* +X1354887Y1532D01* +X1356935Y2380D01* +X1358900Y3403D01* +X1360769Y4594D01* +X1362527Y5942D01* +X1364161Y7440D01* +X1365658Y9073D01* +X1367006Y10831D01* +X1368197Y12700D01* +X1369220Y14666D01* +X1370068Y16713D01* +X1370735Y18826D01* +X1371214Y20989D01* +X1371503Y23186D01* +X1371600Y25400D01* +X1371600Y177800D01* +X1371503Y180014D01* +X1371214Y182211D01* +X1370735Y184374D01* +X1370068Y186487D01* +X1369220Y188535D01* +X1368197Y190500D01* +X1367006Y192369D01* +X1365658Y194127D01* +X1364161Y195761D01* +X1362527Y197258D01* +X1360769Y198606D01* +X1358900Y199797D01* +X1356935Y200820D01* +X1354887Y201668D01* +X1352774Y202335D01* +X1350611Y202814D01* +X1348414Y203103D01* +X1346200Y203200D01* +X1282700Y203200D01* +X1280486Y203297D01* +X1278289Y203586D01* +X1276126Y204065D01* +X1274013Y204732D01* +X1271966Y205580D01* +X1270000Y206603D01* +X1268131Y207794D01* +X1266373Y209142D01* +X1264740Y210640D01* +X1263242Y212273D01* +X1261894Y214031D01* +X1260703Y215900D01* +X1259680Y217866D01* +X1258832Y219913D01* +X1258165Y222026D01* +X1257686Y224189D01* +X1257397Y226386D01* +X1257300Y228600D01* +X1257300Y355600D01* +X1257203Y357814D01* +X1256914Y360011D01* +X1256435Y362174D01* +X1255768Y364287D01* +X1254920Y366335D01* +X1253897Y368300D01* +X1252706Y370169D01* +X1251358Y371927D01* +X1249861Y373561D01* +X1248227Y375058D01* +X1246469Y376406D01* +X1244600Y377597D01* +X1242635Y378620D01* +X1240587Y379468D01* +X1238474Y380135D01* +X1236311Y380614D01* +X1234114Y380903D01* +X1231900Y381000D01* +X139700Y381000D01* +X137486Y380903D01* +X135289Y380614D01* +X133126Y380135D01* +X131013Y379468D01* +X128966Y378620D01* +X127000Y377597D01* +X125131Y376406D01* +X123373Y375058D01* +X121740Y373561D01* +X120242Y371927D01* +X118894Y370169D01* +X117703Y368300D01* +X116680Y366335D01* +X115832Y364287D01* +X115165Y362174D01* +X114686Y360011D01* +X114397Y357814D01* +X114300Y355600D01* +X114300Y228600D01* +X114203Y226386D01* +X113914Y224189D01* +X113435Y222026D01* +X112768Y219913D01* +X111920Y217866D01* +X110897Y215900D01* +X109706Y214031D01* +X108358Y212273D01* +X106861Y210640D01* +X105227Y209142D01* +X103469Y207794D01* +X101600Y206603D01* +X99635Y205580D01* +X97587Y204732D01* +X95474Y204065D01* +X93311Y203586D01* +X91114Y203297D01* +X88900Y203200D01* +X25400Y203200D01* +X23186Y203103D01* +X20989Y202814D01* +X18826Y202335D01* +X16713Y201668D01* +X14666Y200820D01* +X12700Y199797D01* +X10831Y198606D01* +X9073Y197258D01* +X7440Y195761D01* +X5942Y194127D01* +X4594Y192369D01* +X3403Y190500D01* +X2380Y188535D01* +X1532Y186487D01* +X865Y184374D01* +X386Y182211D01* +X97Y180014D01* +X0Y177800D01* +X0Y25400D01* +X76200Y151687D02* +X76120Y150264D01* +X75961Y148848D01* +X75722Y147443D01* +X75405Y146053D01* +X75010Y144684D01* +X74539Y143338D01* +X73994Y142021D01* +X73375Y140737D01* +X72686Y139490D01* +X71928Y138283D01* +X71103Y137121D01* +X70214Y136006D01* +X69264Y134943D01* +X68257Y133936D01* +X67194Y132986D01* +X66079Y132097D01* +X64917Y131272D01* +X63710Y130514D01* +X62463Y129825D01* +X61179Y129206D01* +X59862Y128661D01* +X58516Y128190D01* +X57147Y127795D01* +X55757Y127478D01* +X54352Y127240D01* +X52936Y127080D01* +X51513Y127000D01* +X50087Y127000D01* +X48664Y127080D01* +X47248Y127240D01* +X45843Y127478D01* +X44453Y127795D01* +X43084Y128190D01* +X41738Y128661D01* +X40421Y129206D01* +X39137Y129825D01* +X37890Y130514D01* +X36683Y131272D01* +X35521Y132097D01* +X34406Y132986D01* +X33343Y133936D01* +X32336Y134943D01* +X31386Y136006D01* +X30497Y137121D01* +X29672Y138283D01* +X28914Y139490D01* +X28225Y140737D01* +X27606Y142021D01* +X27061Y143338D01* +X26590Y144684D01* +X26195Y146053D01* +X25878Y147443D01* +X25640Y148848D01* +X25480Y150264D01* +X25400Y151687D01* +X25400Y153113D01* +X25480Y154536D01* +X25640Y155952D01* +X25878Y157357D01* +X26195Y158747D01* +X26590Y160116D01* +X27061Y161462D01* +X27606Y162779D01* +X28225Y164063D01* +X28914Y165310D01* +X29672Y166517D01* +X30497Y167679D01* +X31386Y168794D01* +X32336Y169857D01* +X33343Y170864D01* +X34406Y171814D01* +X35521Y172703D01* +X36683Y173528D01* +X37890Y174286D01* +X39137Y174975D01* +X40421Y175594D01* +X41738Y176139D01* +X43084Y176610D01* +X44453Y177005D01* +X45843Y177322D01* +X47248Y177561D01* +X48664Y177720D01* +X50087Y177800D01* +X51513Y177800D01* +X52936Y177720D01* +X54352Y177561D01* +X55757Y177322D01* +X57147Y177005D01* +X58516Y176610D01* +X59862Y176139D01* +X61179Y175594D01* +X62463Y174975D01* +X63710Y174286D01* +X64917Y173528D01* +X66079Y172703D01* +X67194Y171814D01* +X68257Y170864D01* +X69264Y169857D01* +X70214Y168794D01* +X71103Y167679D01* +X71928Y166517D01* +X72686Y165310D01* +X73375Y164063D01* +X73994Y162779D01* +X74539Y161462D01* +X75010Y160116D01* +X75405Y158747D01* +X75722Y157357D01* +X75961Y155952D01* +X76120Y154536D01* +X76200Y153113D01* +X76200Y151687D01* +X1346200Y151687D02* +X1346120Y150264D01* +X1345961Y148848D01* +X1345722Y147443D01* +X1345405Y146053D01* +X1345010Y144684D01* +X1344539Y143338D01* +X1343994Y142021D01* +X1343375Y140737D01* +X1342686Y139490D01* +X1341928Y138283D01* +X1341103Y137121D01* +X1340214Y136006D01* +X1339264Y134943D01* +X1338257Y133936D01* +X1337194Y132986D01* +X1336079Y132097D01* +X1334917Y131272D01* +X1333710Y130514D01* +X1332463Y129825D01* +X1331179Y129206D01* +X1329862Y128661D01* +X1328516Y128190D01* +X1327147Y127795D01* +X1325757Y127478D01* +X1324352Y127240D01* +X1322936Y127080D01* +X1321513Y127000D01* +X1320087Y127000D01* +X1318664Y127080D01* +X1317248Y127240D01* +X1315843Y127478D01* +X1314453Y127795D01* +X1313084Y128190D01* +X1311738Y128661D01* +X1310421Y129206D01* +X1309137Y129825D01* +X1307890Y130514D01* +X1306683Y131272D01* +X1305521Y132097D01* +X1304406Y132986D01* +X1303343Y133936D01* +X1302336Y134943D01* +X1301386Y136006D01* +X1300497Y137121D01* +X1299672Y138283D01* +X1298914Y139490D01* +X1298225Y140737D01* +X1297606Y142021D01* +X1297061Y143338D01* +X1296590Y144684D01* +X1296195Y146053D01* +X1295878Y147443D01* +X1295640Y148848D01* +X1295480Y150264D01* +X1295400Y151687D01* +X1295400Y153113D01* +X1295480Y154536D01* +X1295640Y155952D01* +X1295878Y157357D01* +X1296195Y158747D01* +X1296590Y160116D01* +X1297061Y161462D01* +X1297606Y162779D01* +X1298225Y164063D01* +X1298914Y165310D01* +X1299672Y166517D01* +X1300497Y167679D01* +X1301386Y168794D01* +X1302336Y169857D01* +X1303343Y170864D01* +X1304406Y171814D01* +X1305521Y172703D01* +X1306683Y173528D01* +X1307890Y174286D01* +X1309137Y174975D01* +X1310421Y175594D01* +X1311738Y176139D01* +X1313084Y176610D01* +X1314453Y177005D01* +X1315843Y177322D01* +X1317248Y177561D01* +X1318664Y177720D01* +X1320087Y177800D01* +X1321513Y177800D01* +X1322936Y177720D01* +X1324352Y177561D01* +X1325757Y177322D01* +X1327147Y177005D01* +X1328516Y176610D01* +X1329862Y176139D01* +X1331179Y175594D01* +X1332463Y174975D01* +X1333710Y174286D01* +X1334917Y173528D01* +X1336079Y172703D01* +X1337194Y171814D01* +X1338257Y170864D01* +X1339264Y169857D01* +X1340214Y168794D01* +X1341103Y167679D01* +X1341928Y166517D01* +X1342686Y165310D01* +X1343375Y164063D01* +X1343994Y162779D01* +X1344539Y161462D01* +X1345010Y160116D01* +X1345405Y158747D01* +X1345722Y157357D01* +X1345961Y155952D01* +X1346120Y154536D01* +X1346200Y153113D01* +X1346200Y151687D01* +X92710Y88360D02* +X92639Y87281D01* +X92498Y86209D01* +X92287Y85149D01* +X92008Y84105D01* +X91660Y83081D01* +X91246Y82083D01* +X90768Y81113D01* +X90228Y80177D01* +X89627Y79278D01* +X88969Y78421D01* +X88257Y77608D01* +X87492Y76844D01* +X86679Y76131D01* +X85822Y75473D01* +X84923Y74872D01* +X83987Y74332D01* +X83017Y73854D01* +X82019Y73440D01* +X80995Y73092D01* +X79951Y72813D01* +X78891Y72602D01* +X77819Y72461D01* +X76740Y72390D01* +X75660Y72390D01* +X74581Y72461D01* +X73509Y72602D01* +X72449Y72813D01* +X71405Y73092D01* +X70381Y73440D01* +X69383Y73854D01* +X68413Y74332D01* +X67477Y74872D01* +X66578Y75473D01* +X65721Y76131D01* +X64908Y76844D01* +X64144Y77608D01* +X63431Y78421D01* +X62773Y79278D01* +X62172Y80177D01* +X61632Y81113D01* +X61154Y82083D01* +X60740Y83081D01* +X60392Y84105D01* +X60113Y85149D01* +X59902Y86209D01* +X59761Y87281D01* +X59690Y88360D01* +X59690Y89440D01* +X59761Y90519D01* +X59902Y91591D01* +X60113Y92651D01* +X60392Y93695D01* +X60740Y94719D01* +X61154Y95717D01* +X61632Y96687D01* +X62172Y97623D01* +X62773Y98522D01* +X63431Y99379D01* +X64144Y100192D01* +X64908Y100957D01* +X65721Y101669D01* +X66578Y102327D01* +X67477Y102928D01* +X68413Y103468D01* +X69383Y103946D01* +X70381Y104360D01* +X71405Y104708D01* +X72449Y104987D01* +X73509Y105198D01* +X74581Y105339D01* +X75660Y105410D01* +X76740Y105410D01* +X77819Y105339D01* +X78891Y105198D01* +X79951Y104987D01* +X80995Y104708D01* +X82019Y104360D01* +X83017Y103946D01* +X83987Y103468D01* +X84923Y102928D01* +X85822Y102327D01* +X86679Y101669D01* +X87492Y100957D01* +X88257Y100192D01* +X88969Y99379D01* +X89627Y98522D01* +X90228Y97623D01* +X90768Y96687D01* +X91246Y95717D01* +X91660Y94719D01* +X92008Y93695D01* +X92287Y92651D01* +X92498Y91591D01* +X92639Y90519D01* +X92710Y89440D01* +X92710Y88360D01* +X92710Y31210D02* +X92639Y30131D01* +X92498Y29059D01* +X92287Y27999D01* +X92008Y26955D01* +X91660Y25931D01* +X91246Y24933D01* +X90768Y23963D01* +X90228Y23027D01* +X89627Y22128D01* +X88969Y21271D01* +X88257Y20458D01* +X87492Y19694D01* +X86679Y18981D01* +X85822Y18323D01* +X84923Y17722D01* +X83987Y17182D01* +X83017Y16704D01* +X82019Y16290D01* +X80995Y15942D01* +X79951Y15663D01* +X78891Y15452D01* +X77819Y15311D01* +X76740Y15240D01* +X75660Y15240D01* +X74581Y15311D01* +X73509Y15452D01* +X72449Y15663D01* +X71405Y15942D01* +X70381Y16290D01* +X69383Y16704D01* +X68413Y17182D01* +X67477Y17722D01* +X66578Y18323D01* +X65721Y18981D01* +X64908Y19694D01* +X64144Y20458D01* +X63431Y21271D01* +X62773Y22128D01* +X62172Y23027D01* +X61632Y23963D01* +X61154Y24933D01* +X60740Y25931D01* +X60392Y26955D01* +X60113Y27999D01* +X59902Y29059D01* +X59761Y30131D01* +X59690Y31210D01* +X59690Y32290D01* +X59761Y33369D01* +X59902Y34441D01* +X60113Y35501D01* +X60392Y36545D01* +X60740Y37569D01* +X61154Y38567D01* +X61632Y39537D01* +X62172Y40473D01* +X62773Y41372D01* +X63431Y42229D01* +X64144Y43042D01* +X64908Y43807D01* +X65721Y44519D01* +X66578Y45177D01* +X67477Y45778D01* +X68413Y46318D01* +X69383Y46796D01* +X70381Y47210D01* +X71405Y47558D01* +X72449Y47837D01* +X73509Y48048D01* +X74581Y48189D01* +X75660Y48260D01* +X76740Y48260D01* +X77819Y48189D01* +X78891Y48048D01* +X79951Y47837D01* +X80995Y47558D01* +X82019Y47210D01* +X83017Y46796D01* +X83987Y46318D01* +X84923Y45778D01* +X85822Y45177D01* +X86679Y44519D01* +X87492Y43807D01* +X88257Y43042D01* +X88969Y42229D01* +X89627Y41372D01* +X90228Y40473D01* +X90768Y39537D01* +X91246Y38567D01* +X91660Y37569D01* +X92008Y36545D01* +X92287Y35501D01* +X92498Y34441D01* +X92639Y33369D01* +X92710Y32290D01* +X92710Y31210D01* +X1311910Y31210D02* +X1311839Y30131D01* +X1311698Y29059D01* +X1311487Y27999D01* +X1311208Y26955D01* +X1310860Y25931D01* +X1310446Y24933D01* +X1309968Y23963D01* +X1309428Y23027D01* +X1308827Y22128D01* +X1308169Y21271D01* +X1307457Y20458D01* +X1306692Y19694D01* +X1305879Y18981D01* +X1305022Y18323D01* +X1304123Y17722D01* +X1303187Y17182D01* +X1302217Y16704D01* +X1301219Y16290D01* +X1300195Y15942D01* +X1299151Y15663D01* +X1298091Y15452D01* +X1297019Y15311D01* +X1295940Y15240D01* +X1294860Y15240D01* +X1293781Y15311D01* +X1292709Y15452D01* +X1291649Y15663D01* +X1290605Y15942D01* +X1289581Y16290D01* +X1288583Y16704D01* +X1287613Y17182D01* +X1286677Y17722D01* +X1285778Y18323D01* +X1284921Y18981D01* +X1284108Y19694D01* +X1283344Y20458D01* +X1282631Y21271D01* +X1281973Y22128D01* +X1281372Y23027D01* +X1280832Y23963D01* +X1280354Y24933D01* +X1279940Y25931D01* +X1279592Y26955D01* +X1279313Y27999D01* +X1279102Y29059D01* +X1278961Y30131D01* +X1278890Y31210D01* +X1278890Y32290D01* +X1278961Y33369D01* +X1279102Y34441D01* +X1279313Y35501D01* +X1279592Y36545D01* +X1279940Y37569D01* +X1280354Y38567D01* +X1280832Y39537D01* +X1281372Y40473D01* +X1281973Y41372D01* +X1282631Y42229D01* +X1283344Y43042D01* +X1284108Y43807D01* +X1284921Y44519D01* +X1285778Y45177D01* +X1286677Y45778D01* +X1287613Y46318D01* +X1288583Y46796D01* +X1289581Y47210D01* +X1290605Y47558D01* +X1291649Y47837D01* +X1292709Y48048D01* +X1293781Y48189D01* +X1294860Y48260D01* +X1295940Y48260D01* +X1297019Y48189D01* +X1298091Y48048D01* +X1299151Y47837D01* +X1300195Y47558D01* +X1301219Y47210D01* +X1302217Y46796D01* +X1303187Y46318D01* +X1304123Y45778D01* +X1305022Y45177D01* +X1305879Y44519D01* +X1306692Y43807D01* +X1307457Y43042D01* +X1308169Y42229D01* +X1308827Y41372D01* +X1309428Y40473D01* +X1309968Y39537D01* +X1310446Y38567D01* +X1310860Y37569D01* +X1311208Y36545D01* +X1311487Y35501D01* +X1311698Y34441D01* +X1311839Y33369D01* +X1311910Y32290D01* +X1311910Y31210D01* +X1311910Y88360D02* +X1311839Y87281D01* +X1311698Y86209D01* +X1311487Y85149D01* +X1311208Y84105D01* +X1310860Y83081D01* +X1310446Y82083D01* +X1309968Y81113D01* +X1309428Y80177D01* +X1308827Y79278D01* +X1308169Y78421D01* +X1307457Y77608D01* +X1306692Y76844D01* +X1305879Y76131D01* +X1305022Y75473D01* +X1304123Y74872D01* +X1303187Y74332D01* +X1302217Y73854D01* +X1301219Y73440D01* +X1300195Y73092D01* +X1299151Y72813D01* +X1298091Y72602D01* +X1297019Y72461D01* +X1295940Y72390D01* +X1294860Y72390D01* +X1293781Y72461D01* +X1292709Y72602D01* +X1291649Y72813D01* +X1290605Y73092D01* +X1289581Y73440D01* +X1288583Y73854D01* +X1287613Y74332D01* +X1286677Y74872D01* +X1285778Y75473D01* +X1284921Y76131D01* +X1284108Y76844D01* +X1283344Y77608D01* +X1282631Y78421D01* +X1281973Y79278D01* +X1281372Y80177D01* +X1280832Y81113D01* +X1280354Y82083D01* +X1279940Y83081D01* +X1279592Y84105D01* +X1279313Y85149D01* +X1279102Y86209D01* +X1278961Y87281D01* +X1278890Y88360D01* +X1278890Y89440D01* +X1278961Y90519D01* +X1279102Y91591D01* +X1279313Y92651D01* +X1279592Y93695D01* +X1279940Y94719D01* +X1280354Y95717D01* +X1280832Y96687D01* +X1281372Y97623D01* +X1281973Y98522D01* +X1282631Y99379D01* +X1283344Y100192D01* +X1284108Y100957D01* +X1284921Y101669D01* +X1285778Y102327D01* +X1286677Y102928D01* +X1287613Y103468D01* +X1288583Y103946D01* +X1289581Y104360D01* +X1290605Y104708D01* +X1291649Y104987D01* +X1292709Y105198D01* +X1293781Y105339D01* +X1294860Y105410D01* +X1295940Y105410D01* +X1297019Y105339D01* +X1298091Y105198D01* +X1299151Y104987D01* +X1300195Y104708D01* +X1301219Y104360D01* +X1302217Y103946D01* +X1303187Y103468D01* +X1304123Y102928D01* +X1305022Y102327D01* +X1305879Y101669D01* +X1306692Y100957D01* +X1307457Y100192D01* +X1308169Y99379D01* +X1308827Y98522D01* +X1309428Y97623D01* +X1309968Y96687D01* +X1310446Y95717D01* +X1310860Y94719D01* +X1311208Y93695D01* +X1311487Y92651D01* +X1311698Y91591D01* +X1311839Y90519D01* +X1311910Y89440D01* +X1311910Y88360D01* +X228049Y119398D02* +X226971Y119469D01* +X225900Y119610D01* +X224841Y119820D01* +X223797Y120100D01* +X222774Y120447D01* +X221776Y120861D01* +X220807Y121338D01* +X219872Y121879D01* +X218974Y122479D01* +X218117Y123136D01* +X217304Y123849D01* +X216540Y124613D01* +X215828Y125425D01* +X215170Y126282D01* +X214570Y127180D01* +X214030Y128116D01* +X213552Y129085D01* +X213139Y130083D01* +X212792Y131106D01* +X212512Y132149D01* +X212301Y133209D01* +X212160Y134280D01* +X212090Y135358D01* +X212090Y136438D01* +X212160Y137516D01* +X212301Y138587D01* +X212512Y139647D01* +X212792Y140690D01* +X213139Y141713D01* +X213552Y142711D01* +X214030Y143680D01* +X214570Y144616D01* +X215170Y145514D01* +X215828Y146371D01* +X216540Y147183D01* +X217304Y147947D01* +X218117Y148659D01* +X218974Y149317D01* +X219872Y149917D01* +X220807Y150457D01* +X221776Y150935D01* +X222774Y151349D01* +X223797Y151696D01* +X224841Y151976D01* +X225900Y152186D01* +X226971Y152327D01* +X228049Y152398D01* +X229130Y152398D01* +X230208Y152327D01* +X231279Y152186D01* +X232338Y151976D01* +X233382Y151696D01* +X234405Y151349D01* +X235403Y150935D01* +X236372Y150457D01* +X237307Y149917D01* +X238206Y149317D01* +X239063Y148659D01* +X239875Y147947D01* +X240639Y147183D01* +X241351Y146371D01* +X242009Y145514D01* +X242609Y144616D01* +X243149Y143680D01* +X243627Y142711D01* +X244040Y141713D01* +X244388Y140690D01* +X244667Y139647D01* +X244878Y138587D01* +X245019Y137516D01* +X245090Y136438D01* +X245090Y135358D01* +X245019Y134280D01* +X244878Y133209D01* +X244667Y132149D01* +X244388Y131106D01* +X244040Y130083D01* +X243627Y129085D01* +X243149Y128116D01* +X242609Y127180D01* +X242009Y126282D01* +X241351Y125425D01* +X240639Y124613D01* +X239875Y123849D01* +X239063Y123136D01* +X238206Y122479D01* +X237307Y121879D01* +X236372Y121338D01* +X235403Y120861D01* +X234405Y120447D01* +X233382Y120100D01* +X232338Y119820D01* +X231279Y119610D01* +X230208Y119469D01* +X229130Y119398D01* +X228049Y119398D01* +X228049Y233698D02* +X226971Y233769D01* +X225900Y233910D01* +X224841Y234120D01* +X223797Y234400D01* +X222774Y234747D01* +X221776Y235161D01* +X220807Y235638D01* +X219872Y236179D01* +X218974Y236779D01* +X218117Y237436D01* +X217304Y238149D01* +X216540Y238913D01* +X215828Y239725D01* +X215170Y240582D01* +X214570Y241480D01* +X214030Y242416D01* +X213552Y243385D01* +X213139Y244383D01* +X212792Y245406D01* +X212512Y246449D01* +X212301Y247509D01* +X212160Y248580D01* +X212090Y249658D01* +X212090Y250738D01* +X212160Y251816D01* +X212301Y252887D01* +X212512Y253947D01* +X212792Y254990D01* +X213139Y256013D01* +X213552Y257011D01* +X214030Y257980D01* +X214570Y258916D01* +X215170Y259814D01* +X215828Y260671D01* +X216540Y261483D01* +X217304Y262247D01* +X218117Y262959D01* +X218974Y263617D01* +X219872Y264217D01* +X220807Y264757D01* +X221776Y265235D01* +X222774Y265649D01* +X223797Y265996D01* +X224841Y266276D01* +X225900Y266486D01* +X226971Y266627D01* +X228049Y266698D01* +X229130Y266698D01* +X230208Y266627D01* +X231279Y266486D01* +X232338Y266276D01* +X233382Y265996D01* +X234405Y265649D01* +X235403Y265235D01* +X236372Y264757D01* +X237307Y264217D01* +X238206Y263617D01* +X239063Y262959D01* +X239875Y262247D01* +X240639Y261483D01* +X241351Y260671D01* +X242009Y259814D01* +X242609Y258916D01* +X243149Y257980D01* +X243627Y257011D01* +X244040Y256013D01* +X244388Y254990D01* +X244667Y253947D01* +X244878Y252887D01* +X245019Y251816D01* +X245090Y250738D01* +X245090Y249658D01* +X245019Y248580D01* +X244878Y247509D01* +X244667Y246449D01* +X244388Y245406D01* +X244040Y244383D01* +X243627Y243385D01* +X243149Y242416D01* +X242609Y241480D01* +X242009Y240582D01* +X241351Y239725D01* +X240639Y238913D01* +X239875Y238149D01* +X239063Y237436D01* +X238206Y236779D01* +X237307Y236179D01* +X236372Y235638D01* +X235403Y235161D01* +X234405Y234747D01* +X233382Y234400D01* +X232338Y234120D01* +X231279Y233910D01* +X230208Y233769D01* +X229130Y233698D01* +X228049Y233698D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_silkscreen_bottom.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_silkscreen_bottom.gbr new file mode 100644 index 0000000000..8087460d42 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_silkscreen_bottom.gbr @@ -0,0 +1,13 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSilkscreen Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* + + +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_silkscreen_top.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_silkscreen_top.gbr new file mode 100644 index 0000000000..b575aeecce --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_silkscreen_top.gbr @@ -0,0 +1,33053 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSilkscreen Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.279400*% +%ADD11C,0.203200*% +%ADD12C,0.355600*% +%ADD13R,0.508000X0.254000*% +%ADD14C,0.152400*% +%ADD15R,0.762000X0.254000*% +%ADD16R,0.508000X1.270000*% +%ADD17R,0.254000X0.508000*% +%ADD18R,0.254000X0.762000*% +%ADD19C,0.127000*% +%ADD20C,0.508000*% +%ADD21R,0.762000X0.762000*% +%ADD22R,0.600000X1.000000*% +%ADD23C,0.200000*% +%ADD24R,1.016000X1.016000*% +%ADD25C,0.300000*% +%ADD26C,0.254000*% +%ADD27C,0.177800*% +%ADD28C,0.800000*% +%ADD29R,0.400000X0.800000*% +%ADD30R,1.000000X0.400000*% +%ADD31R,0.508000X0.508000*% +%ADD32R,0.155575X0.022225*% +%ADD33R,0.177800X0.022225*% +%ADD34R,0.133350X0.022225*% +%ADD35R,0.200025X0.022225*% +%ADD36R,0.311150X0.022225*% +%ADD37R,0.266700X0.022225*% +%ADD38R,0.333375X0.022225*% +%ADD39R,0.377825X0.022225*% +%ADD40R,0.355600X0.022225*% +%ADD41R,0.422275X0.022225*% +%ADD42R,0.400050X0.022225*% +%ADD43R,0.622300X0.022225*% +%ADD44R,0.488950X0.022225*% +%ADD45R,0.644525X0.022225*% +%ADD46R,0.222250X0.022225*% +%ADD47R,0.555625X0.022225*% +%ADD48R,0.666750X0.022225*% +%ADD49R,0.577850X0.022225*% +%ADD50R,0.688975X0.022225*% +%ADD51R,0.244475X0.022225*% +%ADD52R,0.288925X0.022225*% +%ADD53R,0.088900X0.022225*% +%ADD54R,0.044450X0.022225*% +%ADD55R,0.733425X0.022225*% +%ADD56R,0.600075X0.022225*% +%ADD57R,0.511175X0.022225*% +%ADD58R,0.022225X0.022225*% +%ADD59R,0.066675X0.022225*% +%ADD60R,0.533400X0.022225*% +%ADD61R,0.466725X0.022225*% +%ADD62R,0.444500X0.022225*% +%ADD63R,0.711200X0.022225*% +%ADD64R,0.111125X0.022225*% +%ADD65R,0.777875X0.022225*% +%ADD66R,0.844550X0.022225*% +%ADD67R,0.889000X0.022225*% +%ADD68R,0.955675X0.022225*% +%ADD69R,1.000125X0.022225*% +%ADD70R,1.066800X0.022225*% +%ADD71R,1.111250X0.022225*% +%ADD72R,1.600200X0.022225*% +%ADD73R,1.622425X0.022225*% +%ADD74R,1.666875X0.022225*% +%ADD75R,1.689100X0.022225*% +%ADD76R,1.711325X0.022225*% +%ADD77R,1.755775X0.022225*% +%ADD78R,1.778000X0.022225*% +%ADD79R,1.822450X0.022225*% +%ADD80R,1.800225X0.022225*% +%ADD81R,1.733550X0.022225*% +%ADD82R,1.644650X0.022225*% +%ADD83R,1.844675X0.022225*% +%ADD84R,1.866900X0.022225*% +%ADD85R,1.889125X0.022225*% +%ADD86R,1.911350X0.022225*% +%ADD87R,1.933575X0.022225*% +%ADD88R,1.955800X0.022225*% +%ADD89R,2.044700X0.022225*% +%ADD90R,2.133600X0.022225*% +%ADD91R,2.266950X0.022225*% +%ADD92R,2.355850X0.022225*% +%ADD93R,2.444750X0.022225*% +%ADD94R,2.466975X0.022225*% +%ADD95R,2.422525X0.022225*% +%ADD96R,2.400300X0.022225*% +%ADD97R,2.378075X0.022225*% +%ADD98R,2.489200X0.022225*% +%ADD99R,2.178050X0.022225*% +%ADD100R,2.000250X0.022225*% +%ADD101R,2.155825X0.022225*% +%ADD102R,4.556125X0.022225*% +%ADD103R,4.511675X0.022225*% +%ADD104R,4.467225X0.022225*% +%ADD105R,4.422775X0.022225*% +%ADD106R,4.378325X0.022225*% +%ADD107R,4.333875X0.022225*% +%ADD108R,4.289425X0.022225*% +%ADD109R,4.445000X0.022225*% +%ADD110R,4.600575X0.022225*% +%ADD111R,4.645025X0.022225*% +%ADD112R,4.689475X0.022225*% +%ADD113R,4.733925X0.022225*% +%ADD114R,4.778375X0.022225*% +%ADD115R,4.822825X0.022225*% +%ADD116R,4.867275X0.022225*% +%ADD117R,4.911725X0.022225*% +%ADD118R,4.956175X0.022225*% +%ADD119R,5.000625X0.022225*% +%ADD120R,5.045075X0.022225*% +%ADD121R,5.089525X0.022225*% +%ADD122R,5.133975X0.022225*% +%ADD123R,5.178425X0.022225*% +%ADD124R,5.222875X0.022225*% +%ADD125R,5.267325X0.022225*% +%ADD126R,1.222375X0.022225*% +%ADD127R,1.177925X0.022225*% +%ADD128R,2.289175X0.022225*% +%ADD129R,2.200275X0.022225*% +%ADD130R,2.111375X0.022225*% +%ADD131R,1.978025X0.022225*% +%ADD132R,1.533525X0.022225*% +%ADD133R,1.444625X0.022225*% +%ADD134R,1.311275X0.022225*% +%ADD135R,1.266825X0.022225*% +%ADD136R,1.133475X0.022225*% +%ADD137R,1.089025X0.022225*% +%ADD138R,1.044575X0.022225*% +%ADD139R,0.911225X0.022225*% +%ADD140R,0.866775X0.022225*% +%ADD141R,0.213359X0.071119*% +%ADD142R,0.711200X0.071122*% +%ADD143R,0.853441X0.071119*% +%ADD144R,1.066800X0.071119*% +%ADD145R,1.137922X0.071122*% +%ADD146R,1.280159X0.071119*% +%ADD147R,1.280159X0.071122*% +%ADD148R,1.422400X0.071119*% +%ADD149R,1.422400X0.071122*% +%ADD150R,0.426722X0.071122*% +%ADD151R,0.711200X0.071119*% +%ADD152R,0.497838X0.071119*% +%ADD153R,2.346959X0.071119*% +%ADD154R,0.782319X0.071119*% +%ADD155R,2.346959X0.071122*% +%ADD156R,0.924563X0.071122*% +%ADD157R,3.484881X0.071119*% +%ADD158R,3.627119X0.071122*% +%ADD159R,3.698241X0.071119*% +%ADD160R,3.769359X0.071122*% +%ADD161R,3.769359X0.071119*% +%ADD162R,3.840478X0.071122*% +%ADD163R,0.284481X0.071119*% +%ADD164R,3.840478X0.071119*% +%ADD165R,0.426722X0.071119*% +%ADD166R,0.853441X0.071122*% +%ADD167R,3.698241X0.071122*% +%ADD168R,5.618481X0.071119*% +%ADD169R,5.760719X0.071122*% +%ADD170R,5.902959X0.071119*% +%ADD171R,5.974078X0.071119*% +%ADD172R,6.045200X0.071122*% +%ADD173R,6.045200X0.071119*% +%ADD174R,6.116322X0.071122*% +%ADD175R,6.116322X0.071119*% +%ADD176R,0.568959X0.071122*% +%ADD177R,0.284481X0.071122*% +%ADD178R,0.782322X0.071119*% +%ADD179R,2.773678X0.071122*% +%ADD180R,0.853438X0.071122*% +%ADD181R,3.484878X0.071119*% +%ADD182R,3.413759X0.071119*% +%ADD183R,3.342641X0.071119*% +%ADD184R,3.271519X0.071119*% +%ADD185R,3.129281X0.071122*% +%ADD186R,3.058159X0.071119*% +%ADD187R,2.987041X0.071119*% +%ADD188R,2.987041X0.071122*% +%ADD189R,2.844800X0.071119*% +%ADD190R,2.773678X0.071119*% +%ADD191R,2.773681X0.071119*% +%ADD192R,2.631441X0.071122*% +%ADD193R,0.497841X0.071119*% +%ADD194R,2.560319X0.071119*% +%ADD195R,0.782319X0.071122*% +%ADD196R,2.489200X0.071122*% +%ADD197R,3.342638X0.071119*% +%ADD198R,1.137922X0.071119*% +%ADD199R,2.346963X0.071119*% +%ADD200R,3.413759X0.071122*% +%ADD201R,1.635759X0.071122*% +%ADD202R,3.342641X0.071122*% +%ADD203R,3.413763X0.071119*% +%ADD204R,1.849122X0.071119*% +%ADD205R,0.355600X0.071122*% +%ADD206R,3.271519X0.071122*% +%ADD207R,0.568963X0.071119*% +%ADD208R,0.355600X0.071119*% +%ADD209R,0.568959X0.071119*% +%ADD210R,3.271522X0.071119*% +%ADD211R,0.426719X0.071119*% +%ADD212R,3.200400X0.071122*% +%ADD213R,3.200400X0.071119*% +%ADD214R,0.284478X0.071122*% +%ADD215R,3.129278X0.071122*% +%ADD216R,3.129281X0.071119*% +%ADD217R,0.142241X0.071119*% +%ADD218R,0.142238X0.071119*% +%ADD219R,3.129278X0.071119*% +%ADD220R,3.058163X0.071119*% +%ADD221R,3.911600X0.071119*% +%ADD222R,3.911600X0.071122*% +%ADD223R,0.497841X0.071122*% +%ADD224R,3.982719X0.071119*% +%ADD225R,0.640078X0.071119*% +%ADD226R,4.053841X0.071119*% +%ADD227R,4.053841X0.071122*% +%ADD228R,3.982719X0.071122*% +%ADD229R,3.982722X0.071119*% +%ADD230R,0.924559X0.071119*% +%ADD231R,0.995678X0.071122*% +%ADD232R,0.640081X0.071119*% +%ADD233R,3.982722X0.071122*% +%ADD234R,0.284478X0.071119*% +%ADD235R,3.840481X0.071119*% +%ADD236R,4.693919X0.071119*% +%ADD237R,4.765038X0.071122*% +%ADD238R,4.693922X0.071122*% +%ADD239R,4.836159X0.071119*% +%ADD240R,4.765041X0.071119*% +%ADD241R,4.836159X0.071122*% +%ADD242R,4.765041X0.071122*% +%ADD243R,4.907281X0.071119*% +%ADD244R,4.836163X0.071122*% +%ADD245R,4.836163X0.071119*% +%ADD246R,4.765038X0.071119*% +%ADD247R,0.213363X0.071119*% +%ADD248R,4.693919X0.071122*% +%ADD249R,4.622800X0.071119*% +%ADD250R,0.782322X0.071122*% +%ADD251R,4.551681X0.071122*% +%ADD252R,4.622800X0.071122*% +%ADD253R,0.568963X0.071122*% +%ADD254R,5.547359X0.071119*% +%ADD255R,5.405119X0.071119*% +%ADD256R,5.405122X0.071119*% +%ADD257R,5.547359X0.071122*% +%ADD258R,5.476241X0.071122*% +%ADD259R,5.618478X0.071119*% +%ADD260R,5.547363X0.071119*% +%ADD261R,5.618478X0.071122*% +%ADD262R,5.547363X0.071122*% +%ADD263R,5.618481X0.071122*% +%ADD264R,5.476241X0.071119*% +%ADD265R,5.334000X0.071122*% +%ADD266R,5.334000X0.071119*% +%ADD267R,6.116319X0.071122*% +%ADD268R,5.191759X0.071122*% +%ADD269R,0.640078X0.071122*% +%ADD270R,5.974081X0.071119*% +%ADD271R,6.187441X0.071119*% +%ADD272R,6.258559X0.071122*% +%ADD273R,6.187438X0.071119*% +%ADD274R,6.187438X0.071122*% +%ADD275R,6.258559X0.071119*% +%ADD276R,6.116319X0.071119*% +%ADD277R,6.187441X0.071122*% +%ADD278R,5.974081X0.071122*% +%ADD279R,5.902959X0.071122*% +%ADD280R,6.471919X0.071122*% +%ADD281R,5.831838X0.071122*% +%ADD282R,0.071119X0.071122*% +%ADD283R,6.614159X0.071119*% +%ADD284R,6.329681X0.071119*% +%ADD285R,6.471919X0.071119*% +%ADD286R,6.614159X0.071122*% +%ADD287R,6.543041X0.071122*% +%ADD288R,6.685281X0.071119*% +%ADD289R,6.685278X0.071122*% +%ADD290R,6.685278X0.071119*% +%ADD291R,6.614162X0.071119*% +%ADD292R,6.543041X0.071119*% +%ADD293R,6.471922X0.071119*% +%ADD294R,6.471922X0.071122*% +%ADD295R,6.400800X0.071119*% +%ADD296R,0.213359X0.071122*% +%ADD297R,6.329678X0.071122*% +%ADD298R,6.969759X0.071119*% +%ADD299R,6.329678X0.071119*% +%ADD300R,7.040878X0.071119*% +%ADD301R,6.756400X0.071119*% +%ADD302R,7.040881X0.071122*% +%ADD303R,6.898641X0.071122*% +%ADD304R,7.112000X0.071119*% +%ADD305R,7.183122X0.071122*% +%ADD306R,6.969763X0.071119*% +%ADD307R,7.183119X0.071119*% +%ADD308R,7.040881X0.071119*% +%ADD309R,7.183119X0.071122*% +%ADD310R,7.112000X0.071122*% +%ADD311R,7.040878X0.071122*% +%ADD312R,6.969763X0.071122*% +%ADD313R,6.969759X0.071122*% +%ADD314R,6.898641X0.071119*% +%ADD315R,6.827519X0.071122*% +%ADD316R,6.827519X0.071119*% +%ADD317R,6.756400X0.071122*% +%ADD318R,7.254238X0.071119*% +%ADD319R,7.254238X0.071122*% +%ADD320R,7.254241X0.071119*% +%ADD321R,7.254241X0.071122*% +%ADD322R,7.183122X0.071119*% +%ADD323R,6.898638X0.071119*% +%ADD324R,7.325359X0.071122*% +%ADD325R,7.396478X0.071119*% +%ADD326R,7.325359X0.071119*% +%ADD327R,7.396481X0.071122*% +%ADD328R,7.396481X0.071119*% +%ADD329R,7.467600X0.071122*% +%ADD330R,7.467600X0.071119*% +%ADD331R,0.142241X0.071122*% +%ADD332R,0.142238X0.071122*% +%ADD333R,0.853438X0.071119*% +%ADD334R,0.924559X0.071122*% +%ADD335R,6.827522X0.071119*% +%ADD336R,3.484878X0.071122*% +%ADD337R,4.196081X0.071119*% +%ADD338R,4.338319X0.071122*% +%ADD339R,0.497838X0.071122*% +%ADD340R,4.551681X0.071119*% +%ADD341R,7.396478X0.071122*% +%ADD342R,4.907281X0.071122*% +%ADD343R,5.120637X0.071119*% +%ADD344R,5.262881X0.071122*% +%ADD345R,7.609838X0.071122*% +%ADD346R,15.433041X0.071119*% +%ADD347R,9.743438X0.071119*% +%ADD348R,1.564641X0.071119*% +%ADD349R,4.480559X0.071119*% +%ADD350R,11.734800X0.071122*% +%ADD351R,4.409441X0.071122*% +%ADD352R,11.734800X0.071119*% +%ADD353R,4.267200X0.071119*% +%ADD354R,4.480563X0.071122*% +%ADD355R,4.124959X0.071122*% +%ADD356R,4.338322X0.071119*% +%ADD357R,3.769363X0.071122*% +%ADD358R,3.556000X0.071119*% +%ADD359R,11.805919X0.071119*% +%ADD360R,11.805919X0.071122*% +%ADD361R,2.915922X0.071122*% +%ADD362R,2.915919X0.071119*% +%ADD363R,2.702559X0.071119*% +%ADD364R,2.062481X0.071119*% +%ADD365R,2.204719X0.071119*% +%ADD366R,1.991359X0.071119*% +%ADD367R,1.564638X0.071119*% +%ADD368R,1.920241X0.071122*% +%ADD369R,1.493522X0.071122*% +%ADD370R,1.778000X0.071119*% +%ADD371R,1.706881X0.071122*% +%ADD372R,1.351278X0.071122*% +%ADD373R,1.635759X0.071119*% +%ADD374R,1.351281X0.071119*% +%ADD375R,1.706878X0.071119*% +%ADD376R,11.877041X0.071122*% +%ADD377R,11.877041X0.071119*% +%ADD378R,1.706881X0.071119*% +%ADD379R,21.904962X0.071122*% +%ADD380R,21.904962X0.071119*% +%ADD381R,21.762719X0.071122*% +%ADD382R,21.620481X0.071119*% +%ADD383R,21.478238X0.071119*% +%ADD384R,20.695919X0.071122*% +%ADD385R,20.055841X0.071119*% +%ADD386R,20.126959X0.071122*% +%ADD387R,20.126959X0.071119*% +%ADD388R,20.198078X0.071119*% +%ADD389R,20.269200X0.071122*% +%ADD390R,20.269200X0.071119*% +%ADD391R,20.198081X0.071119*% +%ADD392R,19.984719X0.071122*% +%ADD393R,19.913600X0.071119*% +%ADD394R,8.890000X0.071119*% +%ADD395R,9.032241X0.071119*% +%ADD396R,7.965438X0.071122*% +%ADD397R,8.036559X0.071122*% +%ADD398R,8.107681X0.071119*% +%ADD399R,8.036559X0.071119*% +%ADD400R,8.107681X0.071122*% +%ADD401R,8.107678X0.071122*% +%ADD402R,8.107678X0.071119*% +%ADD403R,7.965438X0.071119*% +%ADD404R,7.965441X0.071119*% +%ADD405R,7.965441X0.071122*% +%ADD406R,7.894319X0.071119*% +%ADD407R,0.995681X0.071119*% +%ADD408R,0.995681X0.071122*% +%ADD409R,0.426719X0.071122*% +%ADD410R,0.640081X0.071122*% +%ADD411R,5.405119X0.071122*% +%ADD412R,1.209041X0.071122*% +%ADD413R,1.209041X0.071119*% +%ADD414R,4.124959X0.071119*% +%ADD415R,2.773681X0.071122*% +%ADD416R,1.066800X0.071122*% +%ADD417R,1.137919X0.071122*% +%ADD418R,0.995678X0.071119*% +%ADD419R,1.351278X0.071119*% +%ADD420R,1.280163X0.071119*% +%ADD421R,1.280163X0.071122*% +%ADD422R,1.137919X0.071119*% + + +D10* +X396677Y50927D02* +X393347Y50927D01* +X393233Y50929D01* +X393120Y50935D01* +X393006Y50944D01* +X392894Y50958D01* +X392781Y50975D01* +X392669Y50997D01* +X392559Y51022D01* +X392449Y51050D01* +X392340Y51083D01* +X392232Y51119D01* +X392125Y51159D01* +X392020Y51203D01* +X391917Y51250D01* +X391815Y51300D01* +X391715Y51354D01* +X391617Y51412D01* +X391521Y51473D01* +X391427Y51536D01* +X391335Y51604D01* +X391245Y51674D01* +X391159Y51747D01* +X391074Y51823D01* +X390992Y51902D01* +X390913Y51984D01* +X390837Y52069D01* +X390764Y52155D01* +X390694Y52245D01* +X390626Y52337D01* +X390563Y52431D01* +X390502Y52527D01* +X390444Y52625D01* +X390390Y52725D01* +X390340Y52827D01* +X390293Y52930D01* +X390249Y53035D01* +X390209Y53142D01* +X390173Y53250D01* +X390140Y53359D01* +X390112Y53469D01* +X390087Y53579D01* +X390065Y53691D01* +X390048Y53804D01* +X390034Y53916D01* +X390025Y54030D01* +X390019Y54143D01* +X390017Y54257D01* +X390017Y62583D01* +X390019Y62697D01* +X390025Y62810D01* +X390034Y62924D01* +X390048Y63036D01* +X390065Y63149D01* +X390087Y63261D01* +X390112Y63371D01* +X390140Y63481D01* +X390173Y63590D01* +X390209Y63698D01* +X390249Y63805D01* +X390293Y63910D01* +X390340Y64013D01* +X390390Y64115D01* +X390444Y64215D01* +X390502Y64313D01* +X390563Y64409D01* +X390626Y64503D01* +X390694Y64595D01* +X390764Y64685D01* +X390837Y64771D01* +X390913Y64856D01* +X390992Y64938D01* +X391074Y65017D01* +X391158Y65093D01* +X391245Y65166D01* +X391335Y65236D01* +X391427Y65303D01* +X391521Y65367D01* +X391617Y65428D01* +X391715Y65486D01* +X391815Y65540D01* +X391917Y65590D01* +X392020Y65637D01* +X392125Y65681D01* +X392232Y65721D01* +X392340Y65757D01* +X392449Y65790D01* +X392559Y65818D01* +X392669Y65843D01* +X392781Y65865D01* +X392894Y65882D01* +X393006Y65896D01* +X393120Y65905D01* +X393233Y65911D01* +X393347Y65913D01* +X396677Y65913D01* +X403624Y65913D02* +X403624Y50927D01* +X403624Y59253D02* +X411949Y59253D01* +X411949Y65913D02* +X411949Y50927D01* +X424355Y65914D02* +X424475Y65912D01* +X424595Y65906D01* +X424715Y65897D01* +X424834Y65883D01* +X424953Y65866D01* +X425071Y65845D01* +X425189Y65820D01* +X425305Y65791D01* +X425421Y65759D01* +X425536Y65723D01* +X425649Y65683D01* +X425761Y65640D01* +X425872Y65593D01* +X425981Y65543D01* +X426088Y65489D01* +X426194Y65432D01* +X426297Y65371D01* +X426399Y65307D01* +X426499Y65240D01* +X426596Y65170D01* +X426691Y65097D01* +X426784Y65020D01* +X426874Y64941D01* +X426962Y64859D01* +X427047Y64774D01* +X427129Y64686D01* +X427208Y64596D01* +X427285Y64503D01* +X427358Y64408D01* +X427428Y64311D01* +X427495Y64211D01* +X427559Y64109D01* +X427620Y64006D01* +X427677Y63900D01* +X427731Y63793D01* +X427781Y63684D01* +X427828Y63573D01* +X427871Y63461D01* +X427911Y63348D01* +X427947Y63233D01* +X427979Y63117D01* +X428008Y63001D01* +X428033Y62883D01* +X428054Y62765D01* +X428071Y62646D01* +X428085Y62527D01* +X428094Y62407D01* +X428100Y62287D01* +X428102Y62167D01* +X424355Y65913D02* +X424217Y65911D01* +X424080Y65905D01* +X423943Y65895D01* +X423806Y65882D01* +X423670Y65864D01* +X423534Y65842D01* +X423398Y65817D01* +X423264Y65788D01* +X423131Y65755D01* +X422998Y65718D01* +X422867Y65677D01* +X422736Y65633D01* +X422608Y65585D01* +X422480Y65533D01* +X422354Y65477D01* +X422230Y65418D01* +X422107Y65356D01* +X421987Y65290D01* +X421868Y65221D01* +X421751Y65148D01* +X421637Y65072D01* +X421524Y64992D01* +X421414Y64910D01* +X421306Y64824D01* +X421201Y64736D01* +X421099Y64644D01* +X420999Y64550D01* +X420901Y64452D01* +X420807Y64352D01* +X420716Y64249D01* +X420627Y64144D01* +X420542Y64036D01* +X420459Y63926D01* +X420380Y63814D01* +X420304Y63699D01* +X420231Y63582D01* +X420162Y63463D01* +X420096Y63343D01* +X420034Y63220D01* +X419975Y63096D01* +X419920Y62970D01* +X419868Y62842D01* +X419820Y62713D01* +X419776Y62583D01* +X426852Y59253D02* +X426942Y59341D01* +X427028Y59432D01* +X427112Y59525D01* +X427193Y59621D01* +X427271Y59719D01* +X427345Y59819D01* +X427417Y59922D01* +X427485Y60027D01* +X427550Y60135D01* +X427612Y60244D01* +X427670Y60355D01* +X427725Y60468D01* +X427776Y60582D01* +X427823Y60698D01* +X427867Y60815D01* +X427907Y60934D01* +X427944Y61054D01* +X427977Y61175D01* +X428006Y61297D01* +X428031Y61419D01* +X428052Y61543D01* +X428070Y61667D01* +X428083Y61792D01* +X428093Y61917D01* +X428099Y62042D01* +X428101Y62167D01* +X426853Y59253D02* +X419776Y50927D01* +X428101Y50927D01* +X443597Y25725D02* +X446095Y25725D01* +X446095Y17399D01* +X441099Y17399D01* +X440985Y17401D01* +X440872Y17407D01* +X440758Y17416D01* +X440646Y17430D01* +X440533Y17447D01* +X440421Y17469D01* +X440311Y17494D01* +X440201Y17522D01* +X440092Y17555D01* +X439984Y17591D01* +X439877Y17631D01* +X439772Y17675D01* +X439669Y17722D01* +X439567Y17772D01* +X439467Y17826D01* +X439369Y17884D01* +X439273Y17945D01* +X439179Y18008D01* +X439087Y18076D01* +X438997Y18146D01* +X438911Y18219D01* +X438826Y18295D01* +X438744Y18374D01* +X438665Y18456D01* +X438589Y18541D01* +X438516Y18627D01* +X438446Y18717D01* +X438378Y18809D01* +X438315Y18903D01* +X438254Y18999D01* +X438196Y19097D01* +X438142Y19197D01* +X438092Y19299D01* +X438045Y19402D01* +X438001Y19507D01* +X437961Y19614D01* +X437925Y19722D01* +X437892Y19831D01* +X437864Y19941D01* +X437839Y20051D01* +X437817Y20163D01* +X437800Y20276D01* +X437786Y20388D01* +X437777Y20502D01* +X437771Y20615D01* +X437769Y20729D01* +X437769Y29055D01* +X437771Y29169D01* +X437777Y29282D01* +X437786Y29396D01* +X437800Y29508D01* +X437817Y29621D01* +X437839Y29733D01* +X437864Y29843D01* +X437892Y29953D01* +X437925Y30062D01* +X437961Y30170D01* +X438001Y30277D01* +X438045Y30382D01* +X438092Y30485D01* +X438142Y30587D01* +X438196Y30687D01* +X438254Y30785D01* +X438315Y30881D01* +X438378Y30975D01* +X438446Y31067D01* +X438516Y31157D01* +X438589Y31243D01* +X438665Y31328D01* +X438744Y31410D01* +X438826Y31489D01* +X438910Y31565D01* +X438997Y31638D01* +X439087Y31708D01* +X439179Y31775D01* +X439273Y31839D01* +X439369Y31900D01* +X439467Y31958D01* +X439567Y32012D01* +X439669Y32062D01* +X439772Y32109D01* +X439877Y32153D01* +X439984Y32193D01* +X440092Y32229D01* +X440201Y32262D01* +X440311Y32290D01* +X440421Y32315D01* +X440533Y32337D01* +X440646Y32354D01* +X440758Y32368D01* +X440872Y32377D01* +X440985Y32383D01* +X441099Y32385D01* +X446095Y32385D01* +X454442Y32385D02* +X454442Y17399D01* +X462768Y17399D02* +X454442Y32385D01* +X462768Y32385D02* +X462768Y17399D01* +X471116Y17399D02* +X471116Y32385D01* +X475278Y32385D01* +X475406Y32383D01* +X475534Y32377D01* +X475662Y32367D01* +X475790Y32353D01* +X475917Y32336D01* +X476043Y32314D01* +X476169Y32289D01* +X476293Y32259D01* +X476417Y32226D01* +X476540Y32189D01* +X476662Y32148D01* +X476782Y32104D01* +X476901Y32056D01* +X477018Y32004D01* +X477134Y31949D01* +X477247Y31890D01* +X477360Y31827D01* +X477470Y31761D01* +X477577Y31692D01* +X477683Y31620D01* +X477787Y31544D01* +X477888Y31465D01* +X477987Y31383D01* +X478083Y31298D01* +X478176Y31211D01* +X478267Y31120D01* +X478354Y31027D01* +X478439Y30931D01* +X478521Y30832D01* +X478600Y30731D01* +X478676Y30627D01* +X478748Y30521D01* +X478817Y30414D01* +X478883Y30304D01* +X478946Y30191D01* +X479005Y30078D01* +X479060Y29962D01* +X479112Y29845D01* +X479160Y29726D01* +X479204Y29606D01* +X479245Y29484D01* +X479282Y29361D01* +X479315Y29237D01* +X479345Y29113D01* +X479370Y28987D01* +X479392Y28861D01* +X479409Y28734D01* +X479423Y28606D01* +X479433Y28478D01* +X479439Y28350D01* +X479441Y28222D01* +X479441Y21562D01* +X479439Y21434D01* +X479433Y21306D01* +X479423Y21178D01* +X479409Y21050D01* +X479392Y20923D01* +X479370Y20797D01* +X479345Y20671D01* +X479315Y20547D01* +X479282Y20423D01* +X479245Y20300D01* +X479204Y20178D01* +X479160Y20058D01* +X479112Y19939D01* +X479060Y19822D01* +X479005Y19706D01* +X478946Y19593D01* +X478883Y19480D01* +X478817Y19370D01* +X478748Y19263D01* +X478676Y19157D01* +X478600Y19053D01* +X478521Y18952D01* +X478439Y18853D01* +X478354Y18757D01* +X478267Y18664D01* +X478176Y18573D01* +X478083Y18486D01* +X477987Y18401D01* +X477888Y18319D01* +X477787Y18240D01* +X477683Y18164D01* +X477577Y18092D01* +X477470Y18023D01* +X477360Y17957D01* +X477247Y17894D01* +X477134Y17835D01* +X477018Y17780D01* +X476901Y17728D01* +X476782Y17680D01* +X476662Y17636D01* +X476540Y17595D01* +X476417Y17558D01* +X476293Y17525D01* +X476169Y17495D01* +X476043Y17470D01* +X475917Y17448D01* +X475790Y17431D01* +X475662Y17417D01* +X475534Y17407D01* +X475406Y17401D01* +X475278Y17399D01* +X471116Y17399D01* +X888365Y83693D02* +X888365Y98679D01* +X892528Y98679D01* +X892656Y98677D01* +X892784Y98671D01* +X892912Y98661D01* +X893040Y98647D01* +X893167Y98630D01* +X893293Y98608D01* +X893419Y98583D01* +X893543Y98553D01* +X893667Y98520D01* +X893790Y98483D01* +X893912Y98442D01* +X894032Y98398D01* +X894151Y98350D01* +X894268Y98298D01* +X894384Y98243D01* +X894497Y98184D01* +X894610Y98121D01* +X894720Y98055D01* +X894827Y97986D01* +X894933Y97914D01* +X895037Y97838D01* +X895138Y97759D01* +X895237Y97677D01* +X895333Y97592D01* +X895426Y97505D01* +X895517Y97414D01* +X895604Y97321D01* +X895689Y97225D01* +X895771Y97126D01* +X895850Y97025D01* +X895926Y96921D01* +X895998Y96815D01* +X896067Y96708D01* +X896133Y96597D01* +X896196Y96485D01* +X896255Y96372D01* +X896310Y96256D01* +X896362Y96139D01* +X896410Y96020D01* +X896454Y95900D01* +X896495Y95778D01* +X896532Y95655D01* +X896565Y95531D01* +X896595Y95407D01* +X896620Y95281D01* +X896642Y95155D01* +X896659Y95028D01* +X896673Y94900D01* +X896683Y94772D01* +X896689Y94644D01* +X896691Y94516D01* +X896689Y94388D01* +X896683Y94260D01* +X896673Y94132D01* +X896659Y94004D01* +X896642Y93877D01* +X896620Y93751D01* +X896595Y93625D01* +X896565Y93501D01* +X896532Y93377D01* +X896495Y93254D01* +X896454Y93132D01* +X896410Y93012D01* +X896362Y92893D01* +X896310Y92776D01* +X896255Y92660D01* +X896196Y92547D01* +X896133Y92434D01* +X896067Y92324D01* +X895998Y92217D01* +X895926Y92111D01* +X895850Y92007D01* +X895771Y91906D01* +X895689Y91807D01* +X895604Y91711D01* +X895517Y91618D01* +X895426Y91527D01* +X895333Y91440D01* +X895237Y91355D01* +X895138Y91273D01* +X895037Y91194D01* +X894933Y91118D01* +X894827Y91046D01* +X894720Y90977D01* +X894610Y90911D01* +X894497Y90848D01* +X894384Y90789D01* +X894268Y90734D01* +X894151Y90682D01* +X894032Y90634D01* +X893912Y90590D01* +X893790Y90549D01* +X893667Y90512D01* +X893543Y90479D01* +X893419Y90449D01* +X893293Y90424D01* +X893167Y90402D01* +X893040Y90385D01* +X892912Y90371D01* +X892784Y90361D01* +X892656Y90355D01* +X892528Y90353D01* +X888365Y90353D01* +X902744Y98679D02* +X906074Y83693D01* +X909404Y93684D01* +X912734Y83693D01* +X916065Y98679D01* +X923616Y98679D02* +X923616Y83693D01* +X923616Y98679D02* +X927779Y98679D01* +X927907Y98677D01* +X928035Y98671D01* +X928163Y98661D01* +X928291Y98647D01* +X928418Y98630D01* +X928544Y98608D01* +X928670Y98583D01* +X928794Y98553D01* +X928918Y98520D01* +X929041Y98483D01* +X929163Y98442D01* +X929283Y98398D01* +X929402Y98350D01* +X929519Y98298D01* +X929635Y98243D01* +X929748Y98184D01* +X929861Y98121D01* +X929971Y98055D01* +X930078Y97986D01* +X930184Y97914D01* +X930288Y97838D01* +X930389Y97759D01* +X930488Y97677D01* +X930584Y97592D01* +X930677Y97505D01* +X930768Y97414D01* +X930855Y97321D01* +X930940Y97225D01* +X931022Y97126D01* +X931101Y97025D01* +X931177Y96921D01* +X931249Y96815D01* +X931318Y96708D01* +X931384Y96597D01* +X931447Y96485D01* +X931506Y96372D01* +X931561Y96256D01* +X931613Y96139D01* +X931661Y96020D01* +X931705Y95900D01* +X931746Y95778D01* +X931783Y95655D01* +X931816Y95531D01* +X931846Y95407D01* +X931871Y95281D01* +X931893Y95155D01* +X931910Y95028D01* +X931924Y94900D01* +X931934Y94772D01* +X931940Y94644D01* +X931942Y94516D01* +X931940Y94388D01* +X931934Y94260D01* +X931924Y94132D01* +X931910Y94004D01* +X931893Y93877D01* +X931871Y93751D01* +X931846Y93625D01* +X931816Y93501D01* +X931783Y93377D01* +X931746Y93254D01* +X931705Y93132D01* +X931661Y93012D01* +X931613Y92893D01* +X931561Y92776D01* +X931506Y92660D01* +X931447Y92547D01* +X931384Y92434D01* +X931318Y92324D01* +X931249Y92217D01* +X931177Y92111D01* +X931101Y92007D01* +X931022Y91906D01* +X930940Y91807D01* +X930855Y91711D01* +X930768Y91618D01* +X930677Y91527D01* +X930584Y91440D01* +X930488Y91355D01* +X930389Y91273D01* +X930288Y91194D01* +X930184Y91118D01* +X930078Y91046D01* +X929971Y90977D01* +X929861Y90911D01* +X929748Y90848D01* +X929635Y90789D01* +X929519Y90734D01* +X929402Y90682D01* +X929283Y90634D01* +X929163Y90590D01* +X929041Y90549D01* +X928918Y90512D01* +X928794Y90479D01* +X928670Y90449D01* +X928544Y90424D01* +X928418Y90402D01* +X928291Y90385D01* +X928163Y90371D01* +X928035Y90361D01* +X927907Y90355D01* +X927779Y90353D01* +X923616Y90353D01* +X928611Y90353D02* +X931941Y83693D01* +X952655Y51181D02* +X955985Y51181D01* +X952655Y51181D02* +X952541Y51183D01* +X952428Y51189D01* +X952314Y51198D01* +X952202Y51212D01* +X952089Y51229D01* +X951977Y51251D01* +X951867Y51276D01* +X951757Y51304D01* +X951648Y51337D01* +X951540Y51373D01* +X951433Y51413D01* +X951328Y51457D01* +X951225Y51504D01* +X951123Y51554D01* +X951023Y51608D01* +X950925Y51666D01* +X950829Y51727D01* +X950735Y51790D01* +X950643Y51858D01* +X950553Y51928D01* +X950467Y52001D01* +X950382Y52077D01* +X950300Y52156D01* +X950221Y52238D01* +X950145Y52323D01* +X950072Y52409D01* +X950002Y52499D01* +X949934Y52591D01* +X949871Y52685D01* +X949810Y52781D01* +X949752Y52879D01* +X949698Y52979D01* +X949648Y53081D01* +X949601Y53184D01* +X949557Y53289D01* +X949517Y53396D01* +X949481Y53504D01* +X949448Y53613D01* +X949420Y53723D01* +X949395Y53833D01* +X949373Y53945D01* +X949356Y54058D01* +X949342Y54170D01* +X949333Y54284D01* +X949327Y54397D01* +X949325Y54511D01* +X949325Y62837D01* +X949327Y62951D01* +X949333Y63064D01* +X949342Y63178D01* +X949356Y63290D01* +X949373Y63403D01* +X949395Y63515D01* +X949420Y63625D01* +X949448Y63735D01* +X949481Y63844D01* +X949517Y63952D01* +X949557Y64059D01* +X949601Y64164D01* +X949648Y64267D01* +X949698Y64369D01* +X949752Y64469D01* +X949810Y64567D01* +X949871Y64663D01* +X949934Y64757D01* +X950002Y64849D01* +X950072Y64939D01* +X950145Y65025D01* +X950221Y65110D01* +X950300Y65192D01* +X950382Y65271D01* +X950466Y65347D01* +X950553Y65420D01* +X950643Y65490D01* +X950735Y65557D01* +X950829Y65621D01* +X950925Y65682D01* +X951023Y65740D01* +X951123Y65794D01* +X951225Y65844D01* +X951328Y65891D01* +X951433Y65935D01* +X951540Y65975D01* +X951648Y66011D01* +X951757Y66044D01* +X951867Y66072D01* +X951977Y66097D01* +X952089Y66119D01* +X952202Y66136D01* +X952314Y66150D01* +X952428Y66159D01* +X952541Y66165D01* +X952655Y66167D01* +X955985Y66167D01* +X962932Y66167D02* +X962932Y51181D01* +X962932Y59507D02* +X971257Y59507D01* +X971257Y66167D02* +X971257Y51181D01* +X979084Y62837D02* +X983247Y66167D01* +X983247Y51181D01* +X987409Y51181D02* +X979084Y51181D01* +X898723Y26487D02* +X896225Y26487D01* +X898723Y26487D02* +X898723Y18161D01* +X893727Y18161D01* +X893613Y18163D01* +X893500Y18169D01* +X893386Y18178D01* +X893274Y18192D01* +X893161Y18209D01* +X893049Y18231D01* +X892939Y18256D01* +X892829Y18284D01* +X892720Y18317D01* +X892612Y18353D01* +X892505Y18393D01* +X892400Y18437D01* +X892297Y18484D01* +X892195Y18534D01* +X892095Y18588D01* +X891997Y18646D01* +X891901Y18707D01* +X891807Y18770D01* +X891715Y18838D01* +X891625Y18908D01* +X891539Y18981D01* +X891454Y19057D01* +X891372Y19136D01* +X891293Y19218D01* +X891217Y19303D01* +X891144Y19389D01* +X891074Y19479D01* +X891006Y19571D01* +X890943Y19665D01* +X890882Y19761D01* +X890824Y19859D01* +X890770Y19959D01* +X890720Y20061D01* +X890673Y20164D01* +X890629Y20269D01* +X890589Y20376D01* +X890553Y20484D01* +X890520Y20593D01* +X890492Y20703D01* +X890467Y20813D01* +X890445Y20925D01* +X890428Y21038D01* +X890414Y21150D01* +X890405Y21264D01* +X890399Y21377D01* +X890397Y21491D01* +X890397Y29817D01* +X890399Y29931D01* +X890405Y30044D01* +X890414Y30158D01* +X890428Y30270D01* +X890445Y30383D01* +X890467Y30495D01* +X890492Y30605D01* +X890520Y30715D01* +X890553Y30824D01* +X890589Y30932D01* +X890629Y31039D01* +X890673Y31144D01* +X890720Y31247D01* +X890770Y31349D01* +X890824Y31449D01* +X890882Y31547D01* +X890943Y31643D01* +X891006Y31737D01* +X891074Y31829D01* +X891144Y31919D01* +X891217Y32005D01* +X891293Y32090D01* +X891372Y32172D01* +X891454Y32251D01* +X891538Y32327D01* +X891625Y32400D01* +X891715Y32470D01* +X891807Y32537D01* +X891901Y32601D01* +X891997Y32662D01* +X892095Y32720D01* +X892195Y32774D01* +X892297Y32824D01* +X892400Y32871D01* +X892505Y32915D01* +X892612Y32955D01* +X892720Y32991D01* +X892829Y33024D01* +X892939Y33052D01* +X893049Y33077D01* +X893161Y33099D01* +X893274Y33116D01* +X893386Y33130D01* +X893500Y33139D01* +X893613Y33145D01* +X893727Y33147D01* +X898723Y33147D01* +X907070Y33147D02* +X907070Y18161D01* +X915396Y18161D02* +X907070Y33147D01* +X915396Y33147D02* +X915396Y18161D01* +X923744Y18161D02* +X923744Y33147D01* +X927906Y33147D01* +X928034Y33145D01* +X928162Y33139D01* +X928290Y33129D01* +X928418Y33115D01* +X928545Y33098D01* +X928671Y33076D01* +X928797Y33051D01* +X928921Y33021D01* +X929045Y32988D01* +X929168Y32951D01* +X929290Y32910D01* +X929410Y32866D01* +X929529Y32818D01* +X929646Y32766D01* +X929762Y32711D01* +X929875Y32652D01* +X929988Y32589D01* +X930098Y32523D01* +X930205Y32454D01* +X930311Y32382D01* +X930415Y32306D01* +X930516Y32227D01* +X930615Y32145D01* +X930711Y32060D01* +X930804Y31973D01* +X930895Y31882D01* +X930982Y31789D01* +X931067Y31693D01* +X931149Y31594D01* +X931228Y31493D01* +X931304Y31389D01* +X931376Y31283D01* +X931445Y31176D01* +X931511Y31066D01* +X931574Y30953D01* +X931633Y30840D01* +X931688Y30724D01* +X931740Y30607D01* +X931788Y30488D01* +X931832Y30368D01* +X931873Y30246D01* +X931910Y30123D01* +X931943Y29999D01* +X931973Y29875D01* +X931998Y29749D01* +X932020Y29623D01* +X932037Y29496D01* +X932051Y29368D01* +X932061Y29240D01* +X932067Y29112D01* +X932069Y28984D01* +X932069Y22324D01* +X932067Y22196D01* +X932061Y22068D01* +X932051Y21940D01* +X932037Y21812D01* +X932020Y21685D01* +X931998Y21559D01* +X931973Y21433D01* +X931943Y21309D01* +X931910Y21185D01* +X931873Y21062D01* +X931832Y20940D01* +X931788Y20820D01* +X931740Y20701D01* +X931688Y20584D01* +X931633Y20468D01* +X931574Y20355D01* +X931511Y20242D01* +X931445Y20132D01* +X931376Y20025D01* +X931304Y19919D01* +X931228Y19815D01* +X931149Y19714D01* +X931067Y19615D01* +X930982Y19519D01* +X930895Y19426D01* +X930804Y19335D01* +X930711Y19248D01* +X930615Y19163D01* +X930516Y19081D01* +X930415Y19002D01* +X930311Y18926D01* +X930205Y18854D01* +X930098Y18785D01* +X929988Y18719D01* +X929875Y18656D01* +X929762Y18597D01* +X929646Y18542D01* +X929529Y18490D01* +X929410Y18442D01* +X929290Y18398D01* +X929168Y18357D01* +X929045Y18320D01* +X928921Y18287D01* +X928797Y18257D01* +X928671Y18232D01* +X928545Y18210D01* +X928418Y18193D01* +X928290Y18179D01* +X928162Y18169D01* +X928034Y18163D01* +X927906Y18161D01* +X923744Y18161D01* +D11* +X939292Y90424D02* +X948436Y90424D01* +X942086Y59182D02* +X932942Y59182D01* +X937260Y26924D02* +X946404Y26924D01* +X433578Y90678D02* +X424434Y90678D01* +D10* +X437769Y84455D02* +X437769Y99441D01* +X441932Y99441D01* +X442060Y99439D01* +X442188Y99433D01* +X442316Y99423D01* +X442444Y99409D01* +X442571Y99392D01* +X442697Y99370D01* +X442823Y99345D01* +X442947Y99315D01* +X443071Y99282D01* +X443194Y99245D01* +X443316Y99204D01* +X443436Y99160D01* +X443555Y99112D01* +X443672Y99060D01* +X443788Y99005D01* +X443901Y98946D01* +X444014Y98883D01* +X444124Y98817D01* +X444231Y98748D01* +X444337Y98676D01* +X444441Y98600D01* +X444542Y98521D01* +X444641Y98439D01* +X444737Y98354D01* +X444830Y98267D01* +X444921Y98176D01* +X445008Y98083D01* +X445093Y97987D01* +X445175Y97888D01* +X445254Y97787D01* +X445330Y97683D01* +X445402Y97577D01* +X445471Y97470D01* +X445537Y97359D01* +X445600Y97247D01* +X445659Y97134D01* +X445714Y97018D01* +X445766Y96901D01* +X445814Y96782D01* +X445858Y96662D01* +X445899Y96540D01* +X445936Y96417D01* +X445969Y96293D01* +X445999Y96169D01* +X446024Y96043D01* +X446046Y95917D01* +X446063Y95790D01* +X446077Y95662D01* +X446087Y95534D01* +X446093Y95406D01* +X446095Y95278D01* +X446093Y95150D01* +X446087Y95022D01* +X446077Y94894D01* +X446063Y94766D01* +X446046Y94639D01* +X446024Y94513D01* +X445999Y94387D01* +X445969Y94263D01* +X445936Y94139D01* +X445899Y94016D01* +X445858Y93894D01* +X445814Y93774D01* +X445766Y93655D01* +X445714Y93538D01* +X445659Y93422D01* +X445600Y93309D01* +X445537Y93196D01* +X445471Y93086D01* +X445402Y92979D01* +X445330Y92873D01* +X445254Y92769D01* +X445175Y92668D01* +X445093Y92569D01* +X445008Y92473D01* +X444921Y92380D01* +X444830Y92289D01* +X444737Y92202D01* +X444641Y92117D01* +X444542Y92035D01* +X444441Y91956D01* +X444337Y91880D01* +X444231Y91808D01* +X444124Y91739D01* +X444014Y91673D01* +X443901Y91610D01* +X443788Y91551D01* +X443672Y91496D01* +X443555Y91444D01* +X443436Y91396D01* +X443316Y91352D01* +X443194Y91311D01* +X443071Y91274D01* +X442947Y91241D01* +X442823Y91211D01* +X442697Y91186D01* +X442571Y91164D01* +X442444Y91147D01* +X442316Y91133D01* +X442188Y91123D01* +X442060Y91117D01* +X441932Y91115D01* +X437769Y91115D01* +X452148Y99441D02* +X455478Y84455D01* +X458808Y94446D01* +X462138Y84455D01* +X465469Y99441D01* +X473020Y99441D02* +X473020Y84455D01* +X473020Y99441D02* +X477183Y99441D01* +X477311Y99439D01* +X477439Y99433D01* +X477567Y99423D01* +X477695Y99409D01* +X477822Y99392D01* +X477948Y99370D01* +X478074Y99345D01* +X478198Y99315D01* +X478322Y99282D01* +X478445Y99245D01* +X478567Y99204D01* +X478687Y99160D01* +X478806Y99112D01* +X478923Y99060D01* +X479039Y99005D01* +X479152Y98946D01* +X479265Y98883D01* +X479375Y98817D01* +X479482Y98748D01* +X479588Y98676D01* +X479692Y98600D01* +X479793Y98521D01* +X479892Y98439D01* +X479988Y98354D01* +X480081Y98267D01* +X480172Y98176D01* +X480259Y98083D01* +X480344Y97987D01* +X480426Y97888D01* +X480505Y97787D01* +X480581Y97683D01* +X480653Y97577D01* +X480722Y97470D01* +X480788Y97359D01* +X480851Y97247D01* +X480910Y97134D01* +X480965Y97018D01* +X481017Y96901D01* +X481065Y96782D01* +X481109Y96662D01* +X481150Y96540D01* +X481187Y96417D01* +X481220Y96293D01* +X481250Y96169D01* +X481275Y96043D01* +X481297Y95917D01* +X481314Y95790D01* +X481328Y95662D01* +X481338Y95534D01* +X481344Y95406D01* +X481346Y95278D01* +X481344Y95150D01* +X481338Y95022D01* +X481328Y94894D01* +X481314Y94766D01* +X481297Y94639D01* +X481275Y94513D01* +X481250Y94387D01* +X481220Y94263D01* +X481187Y94139D01* +X481150Y94016D01* +X481109Y93894D01* +X481065Y93774D01* +X481017Y93655D01* +X480965Y93538D01* +X480910Y93422D01* +X480851Y93309D01* +X480788Y93196D01* +X480722Y93086D01* +X480653Y92979D01* +X480581Y92873D01* +X480505Y92769D01* +X480426Y92668D01* +X480344Y92569D01* +X480259Y92473D01* +X480172Y92380D01* +X480081Y92289D01* +X479988Y92202D01* +X479892Y92117D01* +X479793Y92035D01* +X479692Y91956D01* +X479588Y91880D01* +X479482Y91808D01* +X479375Y91739D01* +X479265Y91673D01* +X479152Y91610D01* +X479039Y91551D01* +X478923Y91496D01* +X478806Y91444D01* +X478687Y91396D01* +X478567Y91352D01* +X478445Y91311D01* +X478322Y91274D01* +X478198Y91241D01* +X478074Y91211D01* +X477948Y91186D01* +X477822Y91164D01* +X477695Y91147D01* +X477567Y91133D01* +X477439Y91123D01* +X477311Y91117D01* +X477183Y91115D01* +X473020Y91115D01* +X478015Y91115D02* +X481345Y84455D01* +D11* +X440944Y58420D02* +X431800Y58420D01* +X432816Y24638D02* +X423672Y24638D01* +D10* +X884047Y315087D02* +X884047Y330073D01* +X888210Y330073D01* +X888338Y330071D01* +X888466Y330065D01* +X888594Y330055D01* +X888722Y330041D01* +X888849Y330024D01* +X888975Y330002D01* +X889101Y329977D01* +X889225Y329947D01* +X889349Y329914D01* +X889472Y329877D01* +X889594Y329836D01* +X889714Y329792D01* +X889833Y329744D01* +X889950Y329692D01* +X890066Y329637D01* +X890179Y329578D01* +X890292Y329515D01* +X890402Y329449D01* +X890509Y329380D01* +X890615Y329308D01* +X890719Y329232D01* +X890820Y329153D01* +X890919Y329071D01* +X891015Y328986D01* +X891108Y328899D01* +X891199Y328808D01* +X891286Y328715D01* +X891371Y328619D01* +X891453Y328520D01* +X891532Y328419D01* +X891608Y328315D01* +X891680Y328209D01* +X891749Y328102D01* +X891815Y327992D01* +X891878Y327879D01* +X891937Y327766D01* +X891992Y327650D01* +X892044Y327533D01* +X892092Y327414D01* +X892136Y327294D01* +X892177Y327172D01* +X892214Y327049D01* +X892247Y326925D01* +X892277Y326801D01* +X892302Y326675D01* +X892324Y326549D01* +X892341Y326422D01* +X892355Y326294D01* +X892365Y326166D01* +X892371Y326038D01* +X892373Y325910D01* +X892371Y325782D01* +X892365Y325654D01* +X892355Y325526D01* +X892341Y325398D01* +X892324Y325271D01* +X892302Y325145D01* +X892277Y325019D01* +X892247Y324895D01* +X892214Y324771D01* +X892177Y324648D01* +X892136Y324526D01* +X892092Y324406D01* +X892044Y324287D01* +X891992Y324170D01* +X891937Y324054D01* +X891878Y323941D01* +X891815Y323829D01* +X891749Y323718D01* +X891680Y323611D01* +X891608Y323505D01* +X891532Y323401D01* +X891453Y323300D01* +X891371Y323201D01* +X891286Y323105D01* +X891199Y323012D01* +X891108Y322921D01* +X891015Y322834D01* +X890919Y322749D01* +X890820Y322667D01* +X890719Y322588D01* +X890615Y322512D01* +X890509Y322440D01* +X890402Y322371D01* +X890292Y322305D01* +X890179Y322242D01* +X890066Y322183D01* +X889950Y322128D01* +X889833Y322076D01* +X889714Y322028D01* +X889594Y321984D01* +X889472Y321943D01* +X889349Y321906D01* +X889225Y321873D01* +X889101Y321843D01* +X888975Y321818D01* +X888849Y321796D01* +X888722Y321779D01* +X888594Y321765D01* +X888466Y321755D01* +X888338Y321749D01* +X888210Y321747D01* +X884047Y321747D01* +X889042Y321747D02* +X892373Y315087D01* +X900106Y315087D02* +X906767Y315087D01* +X900106Y315087D02* +X900106Y330073D01* +X906767Y330073D01* +X905101Y323413D02* +X900106Y323413D01* +X917561Y315087D02* +X917675Y315089D01* +X917788Y315095D01* +X917902Y315104D01* +X918014Y315118D01* +X918127Y315135D01* +X918239Y315157D01* +X918349Y315182D01* +X918459Y315210D01* +X918568Y315243D01* +X918676Y315279D01* +X918783Y315319D01* +X918888Y315363D01* +X918991Y315410D01* +X919093Y315460D01* +X919193Y315514D01* +X919291Y315572D01* +X919387Y315633D01* +X919481Y315697D01* +X919573Y315764D01* +X919663Y315834D01* +X919750Y315907D01* +X919834Y315983D01* +X919916Y316062D01* +X919995Y316144D01* +X920071Y316229D01* +X920144Y316315D01* +X920214Y316405D01* +X920282Y316497D01* +X920345Y316591D01* +X920406Y316687D01* +X920464Y316785D01* +X920518Y316885D01* +X920568Y316987D01* +X920615Y317090D01* +X920659Y317195D01* +X920699Y317302D01* +X920735Y317410D01* +X920768Y317519D01* +X920796Y317629D01* +X920821Y317739D01* +X920843Y317851D01* +X920860Y317964D01* +X920874Y318076D01* +X920883Y318190D01* +X920889Y318303D01* +X920891Y318417D01* +X917561Y315087D02* +X917393Y315089D01* +X917225Y315095D01* +X917057Y315105D01* +X916889Y315119D01* +X916721Y315137D01* +X916555Y315159D01* +X916388Y315185D01* +X916223Y315215D01* +X916058Y315249D01* +X915894Y315287D01* +X915731Y315329D01* +X915569Y315375D01* +X915408Y315425D01* +X915248Y315478D01* +X915090Y315535D01* +X914933Y315596D01* +X914778Y315661D01* +X914624Y315729D01* +X914472Y315802D01* +X914322Y315877D01* +X914173Y315957D01* +X914026Y316039D01* +X913882Y316126D01* +X913740Y316215D01* +X913599Y316309D01* +X913461Y316405D01* +X913326Y316505D01* +X913193Y316608D01* +X913062Y316714D01* +X912934Y316823D01* +X912808Y316935D01* +X912686Y317050D01* +X912566Y317168D01* +X912983Y326743D02* +X912985Y326857D01* +X912991Y326970D01* +X913000Y327084D01* +X913014Y327196D01* +X913031Y327309D01* +X913053Y327421D01* +X913078Y327531D01* +X913106Y327641D01* +X913139Y327750D01* +X913175Y327858D01* +X913215Y327965D01* +X913259Y328070D01* +X913306Y328173D01* +X913356Y328275D01* +X913410Y328375D01* +X913468Y328473D01* +X913529Y328569D01* +X913592Y328663D01* +X913660Y328755D01* +X913730Y328845D01* +X913803Y328931D01* +X913879Y329016D01* +X913958Y329098D01* +X914040Y329177D01* +X914125Y329253D01* +X914211Y329326D01* +X914301Y329396D01* +X914393Y329464D01* +X914487Y329527D01* +X914583Y329588D01* +X914681Y329646D01* +X914781Y329700D01* +X914883Y329750D01* +X914986Y329797D01* +X915091Y329841D01* +X915198Y329881D01* +X915306Y329917D01* +X915415Y329950D01* +X915525Y329978D01* +X915635Y330003D01* +X915747Y330025D01* +X915860Y330042D01* +X915972Y330056D01* +X916086Y330065D01* +X916199Y330071D01* +X916313Y330073D01* +X916468Y330071D01* +X916622Y330065D01* +X916776Y330056D01* +X916930Y330042D01* +X917084Y330025D01* +X917237Y330004D01* +X917389Y329980D01* +X917541Y329951D01* +X917692Y329919D01* +X917843Y329883D01* +X917992Y329843D01* +X918140Y329800D01* +X918288Y329753D01* +X918434Y329702D01* +X918578Y329648D01* +X918722Y329590D01* +X918863Y329528D01* +X919004Y329464D01* +X919142Y329395D01* +X919279Y329324D01* +X919414Y329248D01* +X919547Y329170D01* +X919679Y329088D01* +X919808Y329003D01* +X919935Y328915D01* +X920059Y328824D01* +X914648Y323829D02* +X914551Y323888D01* +X914457Y323951D01* +X914364Y324016D01* +X914274Y324085D01* +X914186Y324156D01* +X914101Y324231D01* +X914018Y324308D01* +X913938Y324388D01* +X913860Y324470D01* +X913786Y324556D01* +X913714Y324643D01* +X913645Y324733D01* +X913579Y324825D01* +X913517Y324920D01* +X913457Y325016D01* +X913401Y325114D01* +X913348Y325215D01* +X913299Y325317D01* +X913253Y325420D01* +X913210Y325525D01* +X913171Y325631D01* +X913135Y325739D01* +X913104Y325848D01* +X913076Y325957D01* +X913051Y326068D01* +X913030Y326179D01* +X913013Y326291D01* +X913000Y326404D01* +X912991Y326517D01* +X912985Y326630D01* +X912983Y326743D01* +X919226Y321331D02* +X919323Y321272D01* +X919417Y321209D01* +X919510Y321144D01* +X919600Y321075D01* +X919688Y321004D01* +X919773Y320929D01* +X919856Y320852D01* +X919936Y320772D01* +X920014Y320690D01* +X920088Y320604D01* +X920160Y320517D01* +X920229Y320427D01* +X920295Y320335D01* +X920357Y320240D01* +X920417Y320144D01* +X920473Y320046D01* +X920526Y319945D01* +X920575Y319843D01* +X920622Y319740D01* +X920664Y319635D01* +X920703Y319529D01* +X920739Y319421D01* +X920770Y319312D01* +X920798Y319203D01* +X920823Y319092D01* +X920844Y318981D01* +X920861Y318869D01* +X920874Y318756D01* +X920883Y318643D01* +X920889Y318530D01* +X920891Y318417D01* +X919227Y321331D02* +X914648Y323829D01* +X928242Y315087D02* +X934903Y315087D01* +X928242Y315087D02* +X928242Y330073D01* +X934903Y330073D01* +X933238Y323413D02* +X928242Y323413D01* +X944344Y330073D02* +X944344Y315087D01* +X940181Y330073D02* +X948507Y330073D01* +D11* +X879856Y311150D02* +X879856Y191770D01* +X948944Y191770D01* +X948944Y311150D01* +X879856Y311150D01* +D12* +X1050798Y41966D02* +X1056160Y41966D01* +X1056305Y41964D01* +X1056450Y41958D01* +X1056595Y41948D01* +X1056740Y41935D01* +X1056884Y41917D01* +X1057027Y41895D01* +X1057170Y41870D01* +X1057313Y41841D01* +X1057454Y41808D01* +X1057594Y41771D01* +X1057734Y41730D01* +X1057872Y41685D01* +X1058009Y41637D01* +X1058145Y41585D01* +X1058279Y41530D01* +X1058411Y41470D01* +X1058542Y41408D01* +X1058672Y41341D01* +X1058799Y41272D01* +X1058924Y41198D01* +X1059048Y41122D01* +X1059169Y41042D01* +X1059288Y40959D01* +X1059405Y40873D01* +X1059519Y40783D01* +X1059631Y40691D01* +X1059741Y40595D01* +X1059847Y40497D01* +X1059952Y40396D01* +X1060053Y40291D01* +X1060151Y40185D01* +X1060247Y40075D01* +X1060339Y39963D01* +X1060429Y39849D01* +X1060515Y39732D01* +X1060598Y39613D01* +X1060678Y39492D01* +X1060754Y39368D01* +X1060828Y39243D01* +X1060897Y39116D01* +X1060964Y38986D01* +X1061026Y38855D01* +X1061086Y38723D01* +X1061141Y38589D01* +X1061193Y38453D01* +X1061241Y38316D01* +X1061286Y38178D01* +X1061327Y38038D01* +X1061364Y37898D01* +X1061397Y37757D01* +X1061426Y37614D01* +X1061451Y37471D01* +X1061473Y37328D01* +X1061491Y37184D01* +X1061504Y37039D01* +X1061514Y36894D01* +X1061520Y36749D01* +X1061522Y36604D01* +X1061520Y36459D01* +X1061514Y36314D01* +X1061504Y36169D01* +X1061491Y36024D01* +X1061473Y35880D01* +X1061451Y35737D01* +X1061426Y35594D01* +X1061397Y35451D01* +X1061364Y35310D01* +X1061327Y35170D01* +X1061286Y35030D01* +X1061241Y34892D01* +X1061193Y34755D01* +X1061141Y34619D01* +X1061086Y34485D01* +X1061026Y34353D01* +X1060964Y34222D01* +X1060897Y34092D01* +X1060828Y33965D01* +X1060754Y33840D01* +X1060678Y33716D01* +X1060598Y33595D01* +X1060515Y33476D01* +X1060429Y33359D01* +X1060339Y33245D01* +X1060247Y33133D01* +X1060151Y33023D01* +X1060053Y32917D01* +X1059952Y32812D01* +X1059847Y32711D01* +X1059741Y32613D01* +X1059631Y32517D01* +X1059519Y32425D01* +X1059405Y32335D01* +X1059288Y32249D01* +X1059169Y32166D01* +X1059048Y32086D01* +X1058924Y32010D01* +X1058799Y31936D01* +X1058672Y31867D01* +X1058542Y31800D01* +X1058411Y31738D01* +X1058279Y31678D01* +X1058145Y31623D01* +X1058009Y31571D01* +X1057872Y31523D01* +X1057734Y31478D01* +X1057594Y31437D01* +X1057454Y31400D01* +X1057313Y31367D01* +X1057170Y31338D01* +X1057027Y31313D01* +X1056884Y31291D01* +X1056740Y31273D01* +X1056595Y31260D01* +X1056450Y31250D01* +X1056305Y31244D01* +X1056160Y31242D01* +X1050798Y31242D01* +X1050798Y50546D01* +X1056160Y50546D01* +X1056290Y50544D01* +X1056419Y50538D01* +X1056548Y50528D01* +X1056677Y50515D01* +X1056805Y50497D01* +X1056933Y50476D01* +X1057060Y50450D01* +X1057187Y50421D01* +X1057312Y50388D01* +X1057436Y50352D01* +X1057559Y50311D01* +X1057681Y50267D01* +X1057802Y50219D01* +X1057921Y50168D01* +X1058038Y50113D01* +X1058154Y50055D01* +X1058267Y49993D01* +X1058379Y49927D01* +X1058489Y49859D01* +X1058597Y49787D01* +X1058703Y49711D01* +X1058806Y49633D01* +X1058907Y49552D01* +X1059005Y49467D01* +X1059100Y49380D01* +X1059193Y49289D01* +X1059284Y49196D01* +X1059371Y49101D01* +X1059456Y49003D01* +X1059537Y48902D01* +X1059615Y48799D01* +X1059691Y48693D01* +X1059763Y48585D01* +X1059831Y48475D01* +X1059897Y48363D01* +X1059959Y48250D01* +X1060017Y48134D01* +X1060072Y48017D01* +X1060123Y47898D01* +X1060171Y47777D01* +X1060215Y47655D01* +X1060256Y47532D01* +X1060292Y47408D01* +X1060325Y47283D01* +X1060354Y47156D01* +X1060380Y47029D01* +X1060401Y46901D01* +X1060419Y46773D01* +X1060432Y46644D01* +X1060442Y46515D01* +X1060448Y46386D01* +X1060450Y46256D01* +X1060448Y46126D01* +X1060442Y45997D01* +X1060432Y45868D01* +X1060419Y45739D01* +X1060401Y45611D01* +X1060380Y45483D01* +X1060354Y45356D01* +X1060325Y45229D01* +X1060292Y45104D01* +X1060256Y44980D01* +X1060215Y44857D01* +X1060171Y44735D01* +X1060123Y44614D01* +X1060072Y44495D01* +X1060017Y44378D01* +X1059959Y44262D01* +X1059897Y44149D01* +X1059831Y44037D01* +X1059763Y43927D01* +X1059691Y43819D01* +X1059615Y43713D01* +X1059537Y43610D01* +X1059456Y43509D01* +X1059371Y43411D01* +X1059284Y43316D01* +X1059193Y43223D01* +X1059100Y43132D01* +X1059005Y43045D01* +X1058907Y42960D01* +X1058806Y42879D01* +X1058703Y42801D01* +X1058597Y42725D01* +X1058489Y42653D01* +X1058379Y42585D01* +X1058267Y42519D01* +X1058154Y42457D01* +X1058038Y42399D01* +X1057921Y42344D01* +X1057802Y42293D01* +X1057681Y42245D01* +X1057559Y42201D01* +X1057436Y42160D01* +X1057312Y42124D01* +X1057187Y42091D01* +X1057060Y42062D01* +X1056933Y42036D01* +X1056805Y42015D01* +X1056677Y41997D01* +X1056548Y41984D01* +X1056419Y41974D01* +X1056290Y41968D01* +X1056160Y41966D01* +X1067986Y31242D02* +X1074420Y50546D01* +X1080855Y31242D01* +X1079246Y36068D02* +X1069594Y36068D01* +X1087212Y31242D02* +X1093647Y50546D01* +X1100081Y31242D01* +X1098473Y36068D02* +X1088821Y36068D01* +X1106438Y31242D02* +X1112873Y50546D01* +X1119308Y31242D01* +X1117699Y36068D02* +X1108047Y36068D01* +X1127378Y31242D02* +X1127378Y50546D01* +X1127378Y41966D02* +X1138102Y41966D01* +X1138102Y50546D02* +X1138102Y31242D01* +X1153039Y31242D02* +X1153169Y31244D01* +X1153298Y31250D01* +X1153427Y31260D01* +X1153556Y31273D01* +X1153684Y31291D01* +X1153812Y31312D01* +X1153939Y31338D01* +X1154066Y31367D01* +X1154191Y31400D01* +X1154315Y31436D01* +X1154438Y31477D01* +X1154560Y31521D01* +X1154681Y31569D01* +X1154800Y31620D01* +X1154917Y31675D01* +X1155033Y31733D01* +X1155146Y31795D01* +X1155258Y31861D01* +X1155368Y31929D01* +X1155476Y32001D01* +X1155582Y32077D01* +X1155685Y32155D01* +X1155786Y32236D01* +X1155884Y32321D01* +X1155979Y32408D01* +X1156072Y32499D01* +X1156163Y32592D01* +X1156250Y32687D01* +X1156335Y32785D01* +X1156416Y32886D01* +X1156494Y32989D01* +X1156570Y33095D01* +X1156642Y33203D01* +X1156710Y33313D01* +X1156776Y33425D01* +X1156838Y33538D01* +X1156896Y33654D01* +X1156951Y33771D01* +X1157002Y33890D01* +X1157050Y34011D01* +X1157094Y34133D01* +X1157135Y34256D01* +X1157171Y34380D01* +X1157204Y34505D01* +X1157233Y34632D01* +X1157259Y34759D01* +X1157280Y34887D01* +X1157298Y35015D01* +X1157311Y35144D01* +X1157321Y35273D01* +X1157327Y35402D01* +X1157329Y35532D01* +X1153039Y31242D02* +X1152822Y31245D01* +X1152606Y31252D01* +X1152389Y31265D01* +X1152173Y31283D01* +X1151957Y31307D01* +X1151743Y31335D01* +X1151528Y31369D01* +X1151315Y31408D01* +X1151103Y31451D01* +X1150891Y31500D01* +X1150681Y31554D01* +X1150473Y31613D01* +X1150266Y31677D01* +X1150060Y31746D01* +X1149856Y31819D01* +X1149654Y31898D01* +X1149454Y31981D01* +X1149256Y32070D01* +X1149060Y32162D01* +X1148866Y32260D01* +X1148675Y32362D01* +X1148486Y32469D01* +X1148300Y32580D01* +X1148117Y32695D01* +X1147936Y32815D01* +X1147758Y32940D01* +X1147584Y33068D01* +X1147412Y33201D01* +X1147244Y33337D01* +X1147079Y33478D01* +X1146917Y33623D01* +X1146759Y33771D01* +X1146604Y33923D01* +X1147140Y46256D02* +X1147142Y46386D01* +X1147148Y46515D01* +X1147158Y46644D01* +X1147171Y46773D01* +X1147189Y46901D01* +X1147210Y47029D01* +X1147236Y47156D01* +X1147265Y47283D01* +X1147298Y47408D01* +X1147334Y47532D01* +X1147375Y47655D01* +X1147419Y47777D01* +X1147467Y47898D01* +X1147518Y48017D01* +X1147573Y48134D01* +X1147631Y48250D01* +X1147693Y48363D01* +X1147759Y48475D01* +X1147827Y48585D01* +X1147899Y48693D01* +X1147975Y48799D01* +X1148053Y48902D01* +X1148134Y49003D01* +X1148219Y49101D01* +X1148306Y49196D01* +X1148397Y49289D01* +X1148490Y49380D01* +X1148585Y49467D01* +X1148684Y49552D01* +X1148784Y49633D01* +X1148887Y49711D01* +X1148993Y49787D01* +X1149101Y49859D01* +X1149211Y49927D01* +X1149323Y49993D01* +X1149436Y50055D01* +X1149552Y50113D01* +X1149669Y50168D01* +X1149788Y50219D01* +X1149909Y50267D01* +X1150031Y50311D01* +X1150154Y50352D01* +X1150278Y50388D01* +X1150403Y50421D01* +X1150530Y50450D01* +X1150657Y50476D01* +X1150785Y50497D01* +X1150913Y50515D01* +X1151042Y50528D01* +X1151171Y50538D01* +X1151300Y50544D01* +X1151430Y50546D01* +X1151622Y50544D01* +X1151813Y50537D01* +X1152005Y50525D01* +X1152196Y50509D01* +X1152386Y50489D01* +X1152576Y50464D01* +X1152766Y50434D01* +X1152954Y50400D01* +X1153142Y50362D01* +X1153329Y50319D01* +X1153515Y50271D01* +X1153699Y50219D01* +X1153882Y50163D01* +X1154064Y50102D01* +X1154245Y50037D01* +X1154423Y49968D01* +X1154600Y49895D01* +X1154776Y49817D01* +X1154949Y49735D01* +X1155120Y49649D01* +X1155290Y49559D01* +X1155457Y49465D01* +X1155621Y49368D01* +X1155784Y49266D01* +X1155944Y49160D01* +X1156101Y49051D01* +X1156256Y48937D01* +X1149285Y42502D02* +X1149175Y42570D01* +X1149066Y42640D01* +X1148960Y42714D01* +X1148856Y42791D01* +X1148755Y42870D01* +X1148655Y42953D01* +X1148559Y43039D01* +X1148464Y43128D01* +X1148373Y43219D01* +X1148284Y43313D01* +X1148198Y43409D01* +X1148115Y43509D01* +X1148035Y43610D01* +X1147958Y43714D01* +X1147885Y43820D01* +X1147814Y43928D01* +X1147747Y44038D01* +X1147682Y44151D01* +X1147622Y44265D01* +X1147564Y44381D01* +X1147510Y44498D01* +X1147460Y44617D01* +X1147413Y44738D01* +X1147370Y44859D01* +X1147330Y44982D01* +X1147294Y45107D01* +X1147262Y45232D01* +X1147234Y45358D01* +X1147209Y45485D01* +X1147188Y45612D01* +X1147171Y45740D01* +X1147157Y45869D01* +X1147148Y45998D01* +X1147142Y46127D01* +X1147140Y46256D01* +X1155184Y39286D02* +X1155294Y39218D01* +X1155403Y39148D01* +X1155509Y39074D01* +X1155613Y38997D01* +X1155714Y38918D01* +X1155814Y38835D01* +X1155910Y38749D01* +X1156005Y38660D01* +X1156096Y38569D01* +X1156185Y38475D01* +X1156271Y38379D01* +X1156354Y38279D01* +X1156434Y38178D01* +X1156511Y38074D01* +X1156584Y37968D01* +X1156655Y37860D01* +X1156722Y37750D01* +X1156787Y37637D01* +X1156847Y37523D01* +X1156905Y37407D01* +X1156959Y37290D01* +X1157009Y37171D01* +X1157056Y37050D01* +X1157099Y36929D01* +X1157139Y36806D01* +X1157175Y36682D01* +X1157207Y36556D01* +X1157235Y36430D01* +X1157260Y36303D01* +X1157281Y36176D01* +X1157298Y36048D01* +X1157312Y35919D01* +X1157321Y35790D01* +X1157327Y35661D01* +X1157329Y35532D01* +X1155184Y39285D02* +X1149285Y42503D01* +X1176410Y41966D02* +X1181772Y41966D01* +X1181917Y41964D01* +X1182062Y41958D01* +X1182207Y41948D01* +X1182352Y41935D01* +X1182496Y41917D01* +X1182639Y41895D01* +X1182782Y41870D01* +X1182925Y41841D01* +X1183066Y41808D01* +X1183206Y41771D01* +X1183346Y41730D01* +X1183484Y41685D01* +X1183621Y41637D01* +X1183757Y41585D01* +X1183891Y41530D01* +X1184023Y41470D01* +X1184154Y41408D01* +X1184284Y41341D01* +X1184411Y41272D01* +X1184536Y41198D01* +X1184660Y41122D01* +X1184781Y41042D01* +X1184900Y40959D01* +X1185017Y40873D01* +X1185131Y40783D01* +X1185243Y40691D01* +X1185353Y40595D01* +X1185459Y40497D01* +X1185564Y40396D01* +X1185665Y40291D01* +X1185763Y40185D01* +X1185859Y40075D01* +X1185951Y39963D01* +X1186041Y39849D01* +X1186127Y39732D01* +X1186210Y39613D01* +X1186290Y39492D01* +X1186366Y39368D01* +X1186440Y39243D01* +X1186509Y39116D01* +X1186576Y38986D01* +X1186638Y38855D01* +X1186698Y38723D01* +X1186753Y38589D01* +X1186805Y38453D01* +X1186853Y38316D01* +X1186898Y38178D01* +X1186939Y38038D01* +X1186976Y37898D01* +X1187009Y37757D01* +X1187038Y37614D01* +X1187063Y37471D01* +X1187085Y37328D01* +X1187103Y37184D01* +X1187116Y37039D01* +X1187126Y36894D01* +X1187132Y36749D01* +X1187134Y36604D01* +X1187132Y36459D01* +X1187126Y36314D01* +X1187116Y36169D01* +X1187103Y36024D01* +X1187085Y35880D01* +X1187063Y35737D01* +X1187038Y35594D01* +X1187009Y35451D01* +X1186976Y35310D01* +X1186939Y35170D01* +X1186898Y35030D01* +X1186853Y34892D01* +X1186805Y34755D01* +X1186753Y34619D01* +X1186698Y34485D01* +X1186638Y34353D01* +X1186576Y34222D01* +X1186509Y34092D01* +X1186440Y33965D01* +X1186366Y33840D01* +X1186290Y33716D01* +X1186210Y33595D01* +X1186127Y33476D01* +X1186041Y33359D01* +X1185951Y33245D01* +X1185859Y33133D01* +X1185763Y33023D01* +X1185665Y32917D01* +X1185564Y32812D01* +X1185459Y32711D01* +X1185353Y32613D01* +X1185243Y32517D01* +X1185131Y32425D01* +X1185017Y32335D01* +X1184900Y32249D01* +X1184781Y32166D01* +X1184660Y32086D01* +X1184536Y32010D01* +X1184411Y31936D01* +X1184284Y31867D01* +X1184154Y31800D01* +X1184023Y31738D01* +X1183891Y31678D01* +X1183757Y31623D01* +X1183621Y31571D01* +X1183484Y31523D01* +X1183346Y31478D01* +X1183206Y31437D01* +X1183066Y31400D01* +X1182925Y31367D01* +X1182782Y31338D01* +X1182639Y31313D01* +X1182496Y31291D01* +X1182352Y31273D01* +X1182207Y31260D01* +X1182062Y31250D01* +X1181917Y31244D01* +X1181772Y31242D01* +X1176410Y31242D01* +X1176410Y50546D01* +X1181772Y50546D01* +X1181902Y50544D01* +X1182031Y50538D01* +X1182160Y50528D01* +X1182289Y50515D01* +X1182417Y50497D01* +X1182545Y50476D01* +X1182672Y50450D01* +X1182799Y50421D01* +X1182924Y50388D01* +X1183048Y50352D01* +X1183171Y50311D01* +X1183293Y50267D01* +X1183414Y50219D01* +X1183533Y50168D01* +X1183650Y50113D01* +X1183766Y50055D01* +X1183879Y49993D01* +X1183991Y49927D01* +X1184101Y49859D01* +X1184209Y49787D01* +X1184315Y49711D01* +X1184418Y49633D01* +X1184519Y49552D01* +X1184617Y49467D01* +X1184712Y49380D01* +X1184805Y49289D01* +X1184896Y49196D01* +X1184983Y49101D01* +X1185068Y49003D01* +X1185149Y48902D01* +X1185227Y48799D01* +X1185303Y48693D01* +X1185375Y48585D01* +X1185443Y48475D01* +X1185509Y48363D01* +X1185571Y48250D01* +X1185629Y48134D01* +X1185684Y48017D01* +X1185735Y47898D01* +X1185783Y47777D01* +X1185827Y47655D01* +X1185868Y47532D01* +X1185904Y47408D01* +X1185937Y47283D01* +X1185966Y47156D01* +X1185992Y47029D01* +X1186013Y46901D01* +X1186031Y46773D01* +X1186044Y46644D01* +X1186054Y46515D01* +X1186060Y46386D01* +X1186062Y46256D01* +X1186060Y46126D01* +X1186054Y45997D01* +X1186044Y45868D01* +X1186031Y45739D01* +X1186013Y45611D01* +X1185992Y45483D01* +X1185966Y45356D01* +X1185937Y45229D01* +X1185904Y45104D01* +X1185868Y44980D01* +X1185827Y44857D01* +X1185783Y44735D01* +X1185735Y44614D01* +X1185684Y44495D01* +X1185629Y44378D01* +X1185571Y44262D01* +X1185509Y44149D01* +X1185443Y44037D01* +X1185375Y43927D01* +X1185303Y43819D01* +X1185227Y43713D01* +X1185149Y43610D01* +X1185068Y43509D01* +X1184983Y43411D01* +X1184896Y43316D01* +X1184805Y43223D01* +X1184712Y43132D01* +X1184617Y43045D01* +X1184519Y42960D01* +X1184418Y42879D01* +X1184315Y42801D01* +X1184209Y42725D01* +X1184101Y42653D01* +X1183991Y42585D01* +X1183879Y42519D01* +X1183766Y42457D01* +X1183650Y42399D01* +X1183533Y42344D01* +X1183414Y42293D01* +X1183293Y42245D01* +X1183171Y42201D01* +X1183048Y42160D01* +X1182924Y42124D01* +X1182799Y42091D01* +X1182672Y42062D01* +X1182545Y42036D01* +X1182417Y42015D01* +X1182289Y41997D01* +X1182160Y41984D01* +X1182031Y41974D01* +X1181902Y41968D01* +X1181772Y41966D01* +X1195452Y50546D02* +X1195452Y31242D01* +X1195452Y50546D02* +X1200814Y50546D01* +X1200959Y50544D01* +X1201104Y50538D01* +X1201249Y50528D01* +X1201394Y50515D01* +X1201538Y50497D01* +X1201681Y50475D01* +X1201824Y50450D01* +X1201967Y50421D01* +X1202108Y50388D01* +X1202248Y50351D01* +X1202388Y50310D01* +X1202526Y50265D01* +X1202663Y50217D01* +X1202799Y50165D01* +X1202933Y50110D01* +X1203065Y50050D01* +X1203196Y49988D01* +X1203326Y49921D01* +X1203453Y49852D01* +X1203578Y49778D01* +X1203702Y49702D01* +X1203823Y49622D01* +X1203942Y49539D01* +X1204059Y49453D01* +X1204173Y49363D01* +X1204285Y49271D01* +X1204395Y49175D01* +X1204501Y49077D01* +X1204606Y48976D01* +X1204707Y48871D01* +X1204805Y48765D01* +X1204901Y48655D01* +X1204993Y48543D01* +X1205083Y48429D01* +X1205169Y48312D01* +X1205252Y48193D01* +X1205332Y48072D01* +X1205408Y47948D01* +X1205482Y47823D01* +X1205551Y47696D01* +X1205618Y47566D01* +X1205680Y47435D01* +X1205740Y47303D01* +X1205795Y47169D01* +X1205847Y47033D01* +X1205895Y46896D01* +X1205940Y46758D01* +X1205981Y46618D01* +X1206018Y46478D01* +X1206051Y46337D01* +X1206080Y46194D01* +X1206105Y46051D01* +X1206127Y45908D01* +X1206145Y45764D01* +X1206158Y45619D01* +X1206168Y45474D01* +X1206174Y45329D01* +X1206176Y45184D01* +X1206174Y45039D01* +X1206168Y44894D01* +X1206158Y44749D01* +X1206145Y44604D01* +X1206127Y44460D01* +X1206105Y44317D01* +X1206080Y44174D01* +X1206051Y44031D01* +X1206018Y43890D01* +X1205981Y43750D01* +X1205940Y43610D01* +X1205895Y43472D01* +X1205847Y43335D01* +X1205795Y43199D01* +X1205740Y43065D01* +X1205680Y42933D01* +X1205618Y42802D01* +X1205551Y42672D01* +X1205482Y42545D01* +X1205408Y42420D01* +X1205332Y42296D01* +X1205252Y42175D01* +X1205169Y42056D01* +X1205083Y41939D01* +X1204993Y41825D01* +X1204901Y41713D01* +X1204805Y41603D01* +X1204707Y41497D01* +X1204606Y41392D01* +X1204501Y41291D01* +X1204395Y41193D01* +X1204285Y41097D01* +X1204173Y41005D01* +X1204059Y40915D01* +X1203942Y40829D01* +X1203823Y40746D01* +X1203702Y40666D01* +X1203578Y40590D01* +X1203453Y40516D01* +X1203326Y40447D01* +X1203196Y40380D01* +X1203065Y40318D01* +X1202933Y40258D01* +X1202799Y40203D01* +X1202663Y40151D01* +X1202526Y40103D01* +X1202388Y40058D01* +X1202248Y40017D01* +X1202108Y39980D01* +X1201967Y39947D01* +X1201824Y39918D01* +X1201681Y39893D01* +X1201538Y39871D01* +X1201394Y39853D01* +X1201249Y39840D01* +X1201104Y39830D01* +X1200959Y39824D01* +X1200814Y39822D01* +X1195452Y39822D01* +X1201887Y39822D02* +X1206176Y31242D01* +X1213465Y31242D02* +X1219900Y50546D01* +X1226334Y31242D01* +X1224726Y36068D02* +X1215074Y36068D01* +X1235281Y31242D02* +X1235281Y50546D01* +X1233136Y31242D02* +X1237426Y31242D01* +X1237426Y50546D02* +X1233136Y50546D01* +X1245940Y50546D02* +X1245940Y31242D01* +X1256665Y31242D02* +X1245940Y50546D01* +X1256665Y50546D02* +X1256665Y31242D01* +D10* +X1054580Y13787D02* +X1050417Y13787D01* +X1054580Y13787D02* +X1054708Y13785D01* +X1054836Y13779D01* +X1054964Y13769D01* +X1055092Y13755D01* +X1055219Y13738D01* +X1055345Y13716D01* +X1055471Y13691D01* +X1055595Y13661D01* +X1055719Y13628D01* +X1055842Y13591D01* +X1055964Y13550D01* +X1056084Y13506D01* +X1056203Y13458D01* +X1056320Y13406D01* +X1056436Y13351D01* +X1056549Y13292D01* +X1056662Y13229D01* +X1056772Y13163D01* +X1056879Y13094D01* +X1056985Y13022D01* +X1057089Y12946D01* +X1057190Y12867D01* +X1057289Y12785D01* +X1057385Y12700D01* +X1057478Y12613D01* +X1057569Y12522D01* +X1057656Y12429D01* +X1057741Y12333D01* +X1057823Y12234D01* +X1057902Y12133D01* +X1057978Y12029D01* +X1058050Y11923D01* +X1058119Y11816D01* +X1058185Y11705D01* +X1058248Y11593D01* +X1058307Y11480D01* +X1058362Y11364D01* +X1058414Y11247D01* +X1058462Y11128D01* +X1058506Y11008D01* +X1058547Y10886D01* +X1058584Y10763D01* +X1058617Y10639D01* +X1058647Y10515D01* +X1058672Y10389D01* +X1058694Y10263D01* +X1058711Y10136D01* +X1058725Y10008D01* +X1058735Y9880D01* +X1058741Y9752D01* +X1058743Y9624D01* +X1058741Y9496D01* +X1058735Y9368D01* +X1058725Y9240D01* +X1058711Y9112D01* +X1058694Y8985D01* +X1058672Y8859D01* +X1058647Y8733D01* +X1058617Y8609D01* +X1058584Y8485D01* +X1058547Y8362D01* +X1058506Y8240D01* +X1058462Y8120D01* +X1058414Y8001D01* +X1058362Y7884D01* +X1058307Y7768D01* +X1058248Y7655D01* +X1058185Y7542D01* +X1058119Y7432D01* +X1058050Y7325D01* +X1057978Y7219D01* +X1057902Y7115D01* +X1057823Y7014D01* +X1057741Y6915D01* +X1057656Y6819D01* +X1057569Y6726D01* +X1057478Y6635D01* +X1057385Y6548D01* +X1057289Y6463D01* +X1057190Y6381D01* +X1057089Y6302D01* +X1056985Y6226D01* +X1056879Y6154D01* +X1056772Y6085D01* +X1056662Y6019D01* +X1056549Y5956D01* +X1056436Y5897D01* +X1056320Y5842D01* +X1056203Y5790D01* +X1056084Y5742D01* +X1055964Y5698D01* +X1055842Y5657D01* +X1055719Y5620D01* +X1055595Y5587D01* +X1055471Y5557D01* +X1055345Y5532D01* +X1055219Y5510D01* +X1055092Y5493D01* +X1054964Y5479D01* +X1054836Y5469D01* +X1054708Y5463D01* +X1054580Y5461D01* +X1050417Y5461D01* +X1050417Y20447D01* +X1054580Y20447D01* +X1054694Y20445D01* +X1054807Y20439D01* +X1054921Y20430D01* +X1055033Y20416D01* +X1055146Y20399D01* +X1055258Y20377D01* +X1055368Y20352D01* +X1055478Y20324D01* +X1055587Y20291D01* +X1055695Y20255D01* +X1055802Y20215D01* +X1055907Y20171D01* +X1056010Y20124D01* +X1056112Y20074D01* +X1056212Y20020D01* +X1056310Y19962D01* +X1056406Y19901D01* +X1056500Y19838D01* +X1056592Y19770D01* +X1056682Y19700D01* +X1056768Y19627D01* +X1056853Y19551D01* +X1056935Y19472D01* +X1057014Y19390D01* +X1057090Y19305D01* +X1057163Y19219D01* +X1057233Y19129D01* +X1057301Y19037D01* +X1057364Y18943D01* +X1057425Y18847D01* +X1057483Y18749D01* +X1057537Y18649D01* +X1057587Y18547D01* +X1057634Y18444D01* +X1057678Y18339D01* +X1057718Y18232D01* +X1057754Y18124D01* +X1057787Y18015D01* +X1057815Y17905D01* +X1057840Y17795D01* +X1057862Y17683D01* +X1057879Y17570D01* +X1057893Y17458D01* +X1057902Y17344D01* +X1057908Y17231D01* +X1057910Y17117D01* +X1057908Y17003D01* +X1057902Y16890D01* +X1057893Y16776D01* +X1057879Y16664D01* +X1057862Y16551D01* +X1057840Y16439D01* +X1057815Y16329D01* +X1057787Y16219D01* +X1057754Y16110D01* +X1057718Y16002D01* +X1057678Y15895D01* +X1057634Y15790D01* +X1057587Y15687D01* +X1057537Y15585D01* +X1057483Y15485D01* +X1057425Y15387D01* +X1057364Y15291D01* +X1057301Y15197D01* +X1057233Y15105D01* +X1057163Y15015D01* +X1057090Y14929D01* +X1057014Y14844D01* +X1056935Y14762D01* +X1056853Y14683D01* +X1056768Y14607D01* +X1056682Y14534D01* +X1056592Y14464D01* +X1056500Y14396D01* +X1056406Y14333D01* +X1056310Y14272D01* +X1056212Y14214D01* +X1056112Y14160D01* +X1056010Y14110D01* +X1055907Y14063D01* +X1055802Y14019D01* +X1055695Y13979D01* +X1055587Y13943D01* +X1055478Y13910D01* +X1055368Y13882D01* +X1055258Y13857D01* +X1055146Y13835D01* +X1055033Y13818D01* +X1054921Y13804D01* +X1054807Y13795D01* +X1054694Y13789D01* +X1054580Y13787D01* +X1064377Y5461D02* +X1069372Y20447D01* +X1074367Y5461D01* +X1073118Y9208D02* +X1065625Y9208D01* +X1080008Y5461D02* +X1085003Y20447D01* +X1089998Y5461D01* +X1088750Y9208D02* +X1081257Y9208D01* +X1095639Y5461D02* +X1100634Y20447D01* +X1105630Y5461D01* +X1104381Y9208D02* +X1096888Y9208D01* +X1112624Y5461D02* +X1112624Y20447D01* +X1112624Y13787D02* +X1120949Y13787D01* +X1120949Y20447D02* +X1120949Y5461D01* +X1133250Y5461D02* +X1133364Y5463D01* +X1133477Y5469D01* +X1133591Y5478D01* +X1133703Y5492D01* +X1133816Y5509D01* +X1133928Y5531D01* +X1134038Y5556D01* +X1134148Y5584D01* +X1134257Y5617D01* +X1134365Y5653D01* +X1134472Y5693D01* +X1134577Y5737D01* +X1134680Y5784D01* +X1134782Y5834D01* +X1134882Y5888D01* +X1134980Y5946D01* +X1135076Y6007D01* +X1135170Y6071D01* +X1135262Y6138D01* +X1135352Y6208D01* +X1135439Y6281D01* +X1135523Y6357D01* +X1135605Y6436D01* +X1135684Y6518D01* +X1135760Y6603D01* +X1135833Y6689D01* +X1135903Y6779D01* +X1135971Y6871D01* +X1136034Y6965D01* +X1136095Y7061D01* +X1136153Y7159D01* +X1136207Y7259D01* +X1136257Y7361D01* +X1136304Y7464D01* +X1136348Y7569D01* +X1136388Y7676D01* +X1136424Y7784D01* +X1136457Y7893D01* +X1136485Y8003D01* +X1136510Y8113D01* +X1136532Y8225D01* +X1136549Y8338D01* +X1136563Y8450D01* +X1136572Y8564D01* +X1136578Y8677D01* +X1136580Y8791D01* +X1133250Y5461D02* +X1133082Y5463D01* +X1132914Y5469D01* +X1132746Y5479D01* +X1132578Y5493D01* +X1132410Y5511D01* +X1132244Y5533D01* +X1132077Y5559D01* +X1131912Y5589D01* +X1131747Y5623D01* +X1131583Y5661D01* +X1131420Y5703D01* +X1131258Y5749D01* +X1131097Y5799D01* +X1130937Y5852D01* +X1130779Y5909D01* +X1130622Y5970D01* +X1130467Y6035D01* +X1130313Y6103D01* +X1130161Y6176D01* +X1130011Y6251D01* +X1129862Y6331D01* +X1129715Y6413D01* +X1129571Y6500D01* +X1129429Y6589D01* +X1129288Y6683D01* +X1129150Y6779D01* +X1129015Y6879D01* +X1128882Y6982D01* +X1128751Y7088D01* +X1128623Y7197D01* +X1128497Y7309D01* +X1128375Y7424D01* +X1128255Y7542D01* +X1128672Y17117D02* +X1128674Y17231D01* +X1128680Y17344D01* +X1128689Y17458D01* +X1128703Y17570D01* +X1128720Y17683D01* +X1128742Y17795D01* +X1128767Y17905D01* +X1128795Y18015D01* +X1128828Y18124D01* +X1128864Y18232D01* +X1128904Y18339D01* +X1128948Y18444D01* +X1128995Y18547D01* +X1129045Y18649D01* +X1129099Y18749D01* +X1129157Y18847D01* +X1129218Y18943D01* +X1129281Y19037D01* +X1129349Y19129D01* +X1129419Y19219D01* +X1129492Y19305D01* +X1129568Y19390D01* +X1129647Y19472D01* +X1129729Y19551D01* +X1129814Y19627D01* +X1129900Y19700D01* +X1129990Y19770D01* +X1130082Y19838D01* +X1130176Y19901D01* +X1130272Y19962D01* +X1130370Y20020D01* +X1130470Y20074D01* +X1130572Y20124D01* +X1130675Y20171D01* +X1130780Y20215D01* +X1130887Y20255D01* +X1130995Y20291D01* +X1131104Y20324D01* +X1131214Y20352D01* +X1131324Y20377D01* +X1131436Y20399D01* +X1131549Y20416D01* +X1131661Y20430D01* +X1131775Y20439D01* +X1131888Y20445D01* +X1132002Y20447D01* +X1132157Y20445D01* +X1132311Y20439D01* +X1132465Y20430D01* +X1132619Y20416D01* +X1132773Y20399D01* +X1132926Y20378D01* +X1133078Y20354D01* +X1133230Y20325D01* +X1133381Y20293D01* +X1133532Y20257D01* +X1133681Y20217D01* +X1133829Y20174D01* +X1133977Y20127D01* +X1134123Y20076D01* +X1134267Y20022D01* +X1134411Y19964D01* +X1134552Y19902D01* +X1134693Y19838D01* +X1134831Y19769D01* +X1134968Y19698D01* +X1135103Y19622D01* +X1135236Y19544D01* +X1135368Y19462D01* +X1135497Y19377D01* +X1135624Y19289D01* +X1135748Y19198D01* +X1130337Y14203D02* +X1130240Y14262D01* +X1130146Y14325D01* +X1130053Y14390D01* +X1129963Y14459D01* +X1129875Y14530D01* +X1129790Y14605D01* +X1129707Y14682D01* +X1129627Y14762D01* +X1129549Y14844D01* +X1129475Y14930D01* +X1129403Y15017D01* +X1129334Y15107D01* +X1129268Y15199D01* +X1129206Y15294D01* +X1129146Y15390D01* +X1129090Y15488D01* +X1129037Y15589D01* +X1128988Y15691D01* +X1128942Y15794D01* +X1128899Y15899D01* +X1128860Y16005D01* +X1128824Y16113D01* +X1128793Y16222D01* +X1128765Y16331D01* +X1128740Y16442D01* +X1128719Y16553D01* +X1128702Y16665D01* +X1128689Y16778D01* +X1128680Y16891D01* +X1128674Y17004D01* +X1128672Y17117D01* +X1134915Y11705D02* +X1135012Y11646D01* +X1135106Y11583D01* +X1135199Y11518D01* +X1135289Y11449D01* +X1135377Y11378D01* +X1135462Y11303D01* +X1135545Y11226D01* +X1135625Y11146D01* +X1135703Y11064D01* +X1135777Y10978D01* +X1135849Y10891D01* +X1135918Y10801D01* +X1135984Y10709D01* +X1136046Y10614D01* +X1136106Y10518D01* +X1136162Y10420D01* +X1136215Y10319D01* +X1136264Y10217D01* +X1136311Y10114D01* +X1136353Y10009D01* +X1136392Y9903D01* +X1136428Y9795D01* +X1136459Y9686D01* +X1136487Y9577D01* +X1136512Y9466D01* +X1136533Y9355D01* +X1136550Y9243D01* +X1136563Y9130D01* +X1136572Y9017D01* +X1136578Y8904D01* +X1136580Y8791D01* +X1134916Y11705D02* +X1130336Y14203D01* +X1143575Y11289D02* +X1153565Y11289D01* +X1161920Y13787D02* +X1166083Y13787D01* +X1166211Y13785D01* +X1166339Y13779D01* +X1166467Y13769D01* +X1166595Y13755D01* +X1166722Y13738D01* +X1166848Y13716D01* +X1166974Y13691D01* +X1167098Y13661D01* +X1167222Y13628D01* +X1167345Y13591D01* +X1167467Y13550D01* +X1167587Y13506D01* +X1167706Y13458D01* +X1167823Y13406D01* +X1167939Y13351D01* +X1168052Y13292D01* +X1168165Y13229D01* +X1168275Y13163D01* +X1168382Y13094D01* +X1168488Y13022D01* +X1168592Y12946D01* +X1168693Y12867D01* +X1168792Y12785D01* +X1168888Y12700D01* +X1168981Y12613D01* +X1169072Y12522D01* +X1169159Y12429D01* +X1169244Y12333D01* +X1169326Y12234D01* +X1169405Y12133D01* +X1169481Y12029D01* +X1169553Y11923D01* +X1169622Y11816D01* +X1169688Y11705D01* +X1169751Y11593D01* +X1169810Y11480D01* +X1169865Y11364D01* +X1169917Y11247D01* +X1169965Y11128D01* +X1170009Y11008D01* +X1170050Y10886D01* +X1170087Y10763D01* +X1170120Y10639D01* +X1170150Y10515D01* +X1170175Y10389D01* +X1170197Y10263D01* +X1170214Y10136D01* +X1170228Y10008D01* +X1170238Y9880D01* +X1170244Y9752D01* +X1170246Y9624D01* +X1170244Y9496D01* +X1170238Y9368D01* +X1170228Y9240D01* +X1170214Y9112D01* +X1170197Y8985D01* +X1170175Y8859D01* +X1170150Y8733D01* +X1170120Y8609D01* +X1170087Y8485D01* +X1170050Y8362D01* +X1170009Y8240D01* +X1169965Y8120D01* +X1169917Y8001D01* +X1169865Y7884D01* +X1169810Y7768D01* +X1169751Y7655D01* +X1169688Y7542D01* +X1169622Y7432D01* +X1169553Y7325D01* +X1169481Y7219D01* +X1169405Y7115D01* +X1169326Y7014D01* +X1169244Y6915D01* +X1169159Y6819D01* +X1169072Y6726D01* +X1168981Y6635D01* +X1168888Y6548D01* +X1168792Y6463D01* +X1168693Y6381D01* +X1168592Y6302D01* +X1168488Y6226D01* +X1168382Y6154D01* +X1168275Y6085D01* +X1168165Y6019D01* +X1168052Y5956D01* +X1167939Y5897D01* +X1167823Y5842D01* +X1167706Y5790D01* +X1167587Y5742D01* +X1167467Y5698D01* +X1167345Y5657D01* +X1167222Y5620D01* +X1167098Y5587D01* +X1166974Y5557D01* +X1166848Y5532D01* +X1166722Y5510D01* +X1166595Y5493D01* +X1166467Y5479D01* +X1166339Y5469D01* +X1166211Y5463D01* +X1166083Y5461D01* +X1161920Y5461D01* +X1161920Y20447D01* +X1166083Y20447D01* +X1166197Y20445D01* +X1166310Y20439D01* +X1166424Y20430D01* +X1166536Y20416D01* +X1166649Y20399D01* +X1166761Y20377D01* +X1166871Y20352D01* +X1166981Y20324D01* +X1167090Y20291D01* +X1167198Y20255D01* +X1167305Y20215D01* +X1167410Y20171D01* +X1167513Y20124D01* +X1167615Y20074D01* +X1167715Y20020D01* +X1167813Y19962D01* +X1167909Y19901D01* +X1168003Y19838D01* +X1168095Y19770D01* +X1168185Y19700D01* +X1168271Y19627D01* +X1168356Y19551D01* +X1168438Y19472D01* +X1168517Y19390D01* +X1168593Y19305D01* +X1168666Y19219D01* +X1168736Y19129D01* +X1168804Y19037D01* +X1168867Y18943D01* +X1168928Y18847D01* +X1168986Y18749D01* +X1169040Y18649D01* +X1169090Y18547D01* +X1169137Y18444D01* +X1169181Y18339D01* +X1169221Y18232D01* +X1169257Y18124D01* +X1169290Y18015D01* +X1169318Y17905D01* +X1169343Y17795D01* +X1169365Y17683D01* +X1169382Y17570D01* +X1169396Y17458D01* +X1169405Y17344D01* +X1169411Y17231D01* +X1169413Y17117D01* +X1169411Y17003D01* +X1169405Y16890D01* +X1169396Y16776D01* +X1169382Y16664D01* +X1169365Y16551D01* +X1169343Y16439D01* +X1169318Y16329D01* +X1169290Y16219D01* +X1169257Y16110D01* +X1169221Y16002D01* +X1169181Y15895D01* +X1169137Y15790D01* +X1169090Y15687D01* +X1169040Y15585D01* +X1168986Y15485D01* +X1168928Y15387D01* +X1168867Y15291D01* +X1168804Y15197D01* +X1168736Y15105D01* +X1168666Y15015D01* +X1168593Y14929D01* +X1168517Y14844D01* +X1168438Y14762D01* +X1168356Y14683D01* +X1168271Y14607D01* +X1168185Y14534D01* +X1168095Y14464D01* +X1168003Y14396D01* +X1167909Y14333D01* +X1167813Y14272D01* +X1167715Y14214D01* +X1167615Y14160D01* +X1167513Y14110D01* +X1167410Y14063D01* +X1167305Y14019D01* +X1167198Y13979D01* +X1167090Y13943D01* +X1166981Y13910D01* +X1166871Y13882D01* +X1166761Y13857D01* +X1166649Y13835D01* +X1166536Y13818D01* +X1166424Y13804D01* +X1166310Y13795D01* +X1166197Y13789D01* +X1166083Y13787D01* +X1177371Y20447D02* +X1177371Y5461D01* +X1177371Y20447D02* +X1181534Y20447D01* +X1181662Y20445D01* +X1181790Y20439D01* +X1181918Y20429D01* +X1182046Y20415D01* +X1182173Y20398D01* +X1182299Y20376D01* +X1182425Y20351D01* +X1182549Y20321D01* +X1182673Y20288D01* +X1182796Y20251D01* +X1182918Y20210D01* +X1183038Y20166D01* +X1183157Y20118D01* +X1183274Y20066D01* +X1183390Y20011D01* +X1183503Y19952D01* +X1183616Y19889D01* +X1183726Y19823D01* +X1183833Y19754D01* +X1183939Y19682D01* +X1184043Y19606D01* +X1184144Y19527D01* +X1184243Y19445D01* +X1184339Y19360D01* +X1184432Y19273D01* +X1184523Y19182D01* +X1184610Y19089D01* +X1184695Y18993D01* +X1184777Y18894D01* +X1184856Y18793D01* +X1184932Y18689D01* +X1185004Y18583D01* +X1185073Y18476D01* +X1185139Y18365D01* +X1185202Y18253D01* +X1185261Y18140D01* +X1185316Y18024D01* +X1185368Y17907D01* +X1185416Y17788D01* +X1185460Y17668D01* +X1185501Y17546D01* +X1185538Y17423D01* +X1185571Y17299D01* +X1185601Y17175D01* +X1185626Y17049D01* +X1185648Y16923D01* +X1185665Y16796D01* +X1185679Y16668D01* +X1185689Y16540D01* +X1185695Y16412D01* +X1185697Y16284D01* +X1185695Y16156D01* +X1185689Y16028D01* +X1185679Y15900D01* +X1185665Y15772D01* +X1185648Y15645D01* +X1185626Y15519D01* +X1185601Y15393D01* +X1185571Y15269D01* +X1185538Y15145D01* +X1185501Y15022D01* +X1185460Y14900D01* +X1185416Y14780D01* +X1185368Y14661D01* +X1185316Y14544D01* +X1185261Y14428D01* +X1185202Y14315D01* +X1185139Y14202D01* +X1185073Y14092D01* +X1185004Y13985D01* +X1184932Y13879D01* +X1184856Y13775D01* +X1184777Y13674D01* +X1184695Y13575D01* +X1184610Y13479D01* +X1184523Y13386D01* +X1184432Y13295D01* +X1184339Y13208D01* +X1184243Y13123D01* +X1184144Y13041D01* +X1184043Y12962D01* +X1183939Y12886D01* +X1183833Y12814D01* +X1183726Y12745D01* +X1183616Y12679D01* +X1183503Y12616D01* +X1183390Y12557D01* +X1183274Y12502D01* +X1183157Y12450D01* +X1183038Y12402D01* +X1182918Y12358D01* +X1182796Y12317D01* +X1182673Y12280D01* +X1182549Y12247D01* +X1182425Y12217D01* +X1182299Y12192D01* +X1182173Y12170D01* +X1182046Y12153D01* +X1181918Y12139D01* +X1181790Y12129D01* +X1181662Y12123D01* +X1181534Y12121D01* +X1177371Y12121D01* +X1182366Y12121D02* +X1185697Y5461D01* +X1193385Y5461D02* +X1193385Y20447D01* +X1201711Y5461D01* +X1201711Y20447D01* +X1210786Y18366D02* +X1210660Y18099D01* +X1210540Y17830D01* +X1210427Y17557D01* +X1210320Y17283D01* +X1210220Y17005D01* +X1210127Y16726D01* +X1210040Y16444D01* +X1209960Y16160D01* +X1209887Y15874D01* +X1209821Y15587D01* +X1209762Y15298D01* +X1209709Y15008D01* +X1209663Y14717D01* +X1209625Y14425D01* +X1209593Y14132D01* +X1209569Y13838D01* +X1209551Y13543D01* +X1209541Y13249D01* +X1209537Y12954D01* +X1210786Y18366D02* +X1210824Y18469D01* +X1210865Y18570D01* +X1210909Y18669D01* +X1210957Y18768D01* +X1211008Y18864D01* +X1211063Y18958D01* +X1211121Y19051D01* +X1211182Y19141D01* +X1211247Y19229D01* +X1211314Y19315D01* +X1211385Y19398D01* +X1211458Y19479D01* +X1211534Y19557D01* +X1211613Y19633D01* +X1211695Y19705D01* +X1211779Y19775D01* +X1211866Y19841D01* +X1211954Y19905D01* +X1212045Y19965D01* +X1212139Y20022D01* +X1212234Y20076D01* +X1212331Y20126D01* +X1212429Y20173D01* +X1212529Y20216D01* +X1212631Y20256D01* +X1212734Y20292D01* +X1212838Y20324D01* +X1212944Y20353D01* +X1213050Y20378D01* +X1213157Y20399D01* +X1213265Y20416D01* +X1213373Y20430D01* +X1213482Y20439D01* +X1213591Y20445D01* +X1213700Y20447D01* +X1213809Y20445D01* +X1213918Y20439D01* +X1214027Y20430D01* +X1214135Y20416D01* +X1214243Y20399D01* +X1214350Y20378D01* +X1214456Y20353D01* +X1214562Y20324D01* +X1214666Y20292D01* +X1214769Y20256D01* +X1214871Y20216D01* +X1214971Y20173D01* +X1215069Y20126D01* +X1215166Y20076D01* +X1215261Y20022D01* +X1215355Y19965D01* +X1215446Y19905D01* +X1215534Y19841D01* +X1215621Y19775D01* +X1215705Y19705D01* +X1215787Y19633D01* +X1215866Y19557D01* +X1215942Y19479D01* +X1216015Y19398D01* +X1216086Y19315D01* +X1216153Y19229D01* +X1216218Y19141D01* +X1216279Y19051D01* +X1216337Y18958D01* +X1216392Y18864D01* +X1216443Y18768D01* +X1216491Y18669D01* +X1216535Y18570D01* +X1216576Y18469D01* +X1216614Y18366D01* +X1216740Y18099D01* +X1216860Y17830D01* +X1216973Y17557D01* +X1217080Y17283D01* +X1217180Y17005D01* +X1217273Y16726D01* +X1217360Y16444D01* +X1217440Y16160D01* +X1217513Y15874D01* +X1217579Y15587D01* +X1217638Y15298D01* +X1217691Y15008D01* +X1217737Y14717D01* +X1217775Y14425D01* +X1217807Y14132D01* +X1217831Y13838D01* +X1217849Y13543D01* +X1217859Y13249D01* +X1217863Y12954D01* +X1209537Y12954D02* +X1209541Y12659D01* +X1209551Y12365D01* +X1209569Y12070D01* +X1209593Y11776D01* +X1209625Y11483D01* +X1209663Y11191D01* +X1209709Y10900D01* +X1209762Y10610D01* +X1209821Y10321D01* +X1209887Y10034D01* +X1209960Y9748D01* +X1210040Y9464D01* +X1210127Y9182D01* +X1210220Y8903D01* +X1210320Y8625D01* +X1210427Y8351D01* +X1210540Y8078D01* +X1210660Y7809D01* +X1210786Y7542D01* +X1210824Y7439D01* +X1210865Y7338D01* +X1210909Y7239D01* +X1210957Y7140D01* +X1211008Y7044D01* +X1211063Y6950D01* +X1211121Y6857D01* +X1211182Y6767D01* +X1211247Y6679D01* +X1211314Y6593D01* +X1211385Y6510D01* +X1211458Y6429D01* +X1211534Y6351D01* +X1211613Y6275D01* +X1211695Y6203D01* +X1211779Y6133D01* +X1211866Y6067D01* +X1211954Y6003D01* +X1212045Y5943D01* +X1212139Y5886D01* +X1212234Y5832D01* +X1212331Y5782D01* +X1212429Y5735D01* +X1212529Y5692D01* +X1212631Y5652D01* +X1212734Y5616D01* +X1212838Y5584D01* +X1212944Y5555D01* +X1213050Y5530D01* +X1213157Y5509D01* +X1213265Y5492D01* +X1213373Y5478D01* +X1213482Y5469D01* +X1213591Y5463D01* +X1213700Y5461D01* +X1216614Y7542D02* +X1216740Y7809D01* +X1216860Y8078D01* +X1216973Y8351D01* +X1217080Y8625D01* +X1217180Y8903D01* +X1217273Y9182D01* +X1217360Y9464D01* +X1217440Y9748D01* +X1217513Y10034D01* +X1217579Y10321D01* +X1217638Y10610D01* +X1217691Y10900D01* +X1217737Y11191D01* +X1217775Y11483D01* +X1217807Y11776D01* +X1217831Y12070D01* +X1217849Y12365D01* +X1217859Y12659D01* +X1217863Y12954D01* +X1216614Y7542D02* +X1216576Y7439D01* +X1216535Y7338D01* +X1216491Y7239D01* +X1216443Y7140D01* +X1216392Y7044D01* +X1216337Y6950D01* +X1216279Y6857D01* +X1216218Y6767D01* +X1216153Y6679D01* +X1216086Y6593D01* +X1216015Y6510D01* +X1215942Y6429D01* +X1215866Y6351D01* +X1215787Y6275D01* +X1215705Y6203D01* +X1215621Y6133D01* +X1215534Y6067D01* +X1215446Y6003D01* +X1215354Y5943D01* +X1215261Y5886D01* +X1215166Y5832D01* +X1215069Y5782D01* +X1214971Y5735D01* +X1214871Y5692D01* +X1214769Y5652D01* +X1214666Y5616D01* +X1214562Y5584D01* +X1214456Y5555D01* +X1214350Y5530D01* +X1214243Y5509D01* +X1214135Y5492D01* +X1214027Y5478D01* +X1213918Y5469D01* +X1213809Y5463D01* +X1213700Y5461D01* +X1210370Y8791D02* +X1217031Y17117D01* +X1225169Y17117D02* +X1229332Y20447D01* +X1229332Y5461D01* +X1233494Y5461D02* +X1225169Y5461D01* +D11* +X557022Y197104D02* +X554736Y194818D01* +X557022Y197104D02* +X573786Y197104D01* +X573786Y220980D01* +X578866Y226060D01* +X579628Y193802D02* +X577596Y191770D01* +X572008Y191770D01* +X714502Y154178D02* +X714502Y122682D01* +X725932Y111252D01* +X629158Y194818D02* +X629158Y197612D01* +X629158Y194818D02* +X659384Y194818D01* +X659384Y197358D01* +X643890Y194564D02* +X643890Y184150D01* +X668274Y159766D01* +X671576Y159766D01* +D10* +X1240917Y11289D02* +X1250908Y11289D01* +X1258697Y5461D02* +X1265357Y5461D01* +X1258697Y5461D02* +X1258697Y20447D01* +X1265357Y20447D01* +X1263692Y13787D02* +X1258697Y13787D01* +D13* +X246380Y353060D03* +D14* +X251968Y331996D02* +X251968Y330077D01* +X251966Y329991D01* +X251960Y329905D01* +X251951Y329819D01* +X251937Y329734D01* +X251920Y329650D01* +X251899Y329566D01* +X251874Y329484D01* +X251846Y329403D01* +X251814Y329323D01* +X251778Y329244D01* +X251739Y329168D01* +X251696Y329093D01* +X251651Y329020D01* +X251602Y328949D01* +X251549Y328881D01* +X251494Y328814D01* +X251436Y328751D01* +X251375Y328690D01* +X251312Y328632D01* +X251245Y328577D01* +X251177Y328525D01* +X251106Y328475D01* +X251033Y328430D01* +X250958Y328387D01* +X250882Y328348D01* +X250803Y328312D01* +X250723Y328280D01* +X250642Y328252D01* +X250560Y328227D01* +X250476Y328206D01* +X250392Y328189D01* +X250307Y328175D01* +X250221Y328166D01* +X250135Y328160D01* +X250049Y328158D01* +X245251Y328158D01* +X245165Y328160D01* +X245079Y328166D01* +X244993Y328175D01* +X244908Y328189D01* +X244824Y328206D01* +X244740Y328227D01* +X244658Y328252D01* +X244577Y328280D01* +X244497Y328312D01* +X244418Y328348D01* +X244342Y328387D01* +X244267Y328430D01* +X244194Y328475D01* +X244123Y328524D01* +X244055Y328577D01* +X243988Y328632D01* +X243925Y328690D01* +X243864Y328751D01* +X243806Y328814D01* +X243751Y328881D01* +X243699Y328949D01* +X243649Y329020D01* +X243604Y329093D01* +X243561Y329168D01* +X243522Y329244D01* +X243486Y329323D01* +X243454Y329403D01* +X243426Y329484D01* +X243401Y329566D01* +X243380Y329650D01* +X243363Y329734D01* +X243349Y329819D01* +X243340Y329905D01* +X243334Y329991D01* +X243332Y330077D01* +X243332Y331996D01* +X248130Y337735D02* +X248130Y340614D01* +X248130Y337735D02* +X248128Y337649D01* +X248122Y337563D01* +X248113Y337477D01* +X248099Y337392D01* +X248082Y337308D01* +X248061Y337224D01* +X248036Y337142D01* +X248008Y337061D01* +X247976Y336981D01* +X247940Y336902D01* +X247901Y336826D01* +X247858Y336751D01* +X247813Y336678D01* +X247764Y336607D01* +X247711Y336539D01* +X247656Y336472D01* +X247598Y336409D01* +X247537Y336348D01* +X247474Y336290D01* +X247407Y336235D01* +X247339Y336183D01* +X247268Y336133D01* +X247195Y336088D01* +X247120Y336045D01* +X247044Y336006D01* +X246965Y335970D01* +X246885Y335938D01* +X246804Y335910D01* +X246722Y335885D01* +X246638Y335864D01* +X246554Y335847D01* +X246469Y335833D01* +X246383Y335824D01* +X246297Y335818D01* +X246211Y335816D01* +X245731Y335816D01* +X245634Y335818D01* +X245538Y335824D01* +X245442Y335833D01* +X245346Y335847D01* +X245251Y335864D01* +X245157Y335886D01* +X245064Y335911D01* +X244971Y335939D01* +X244880Y335972D01* +X244791Y336008D01* +X244703Y336048D01* +X244616Y336091D01* +X244531Y336137D01* +X244449Y336187D01* +X244368Y336241D01* +X244290Y336297D01* +X244214Y336357D01* +X244140Y336419D01* +X244069Y336485D01* +X244001Y336553D01* +X243935Y336624D01* +X243873Y336698D01* +X243813Y336774D01* +X243757Y336852D01* +X243703Y336933D01* +X243653Y337016D01* +X243607Y337100D01* +X243564Y337187D01* +X243524Y337275D01* +X243488Y337364D01* +X243455Y337455D01* +X243427Y337548D01* +X243402Y337641D01* +X243380Y337735D01* +X243363Y337830D01* +X243349Y337926D01* +X243340Y338022D01* +X243334Y338118D01* +X243332Y338215D01* +X243334Y338312D01* +X243340Y338408D01* +X243349Y338504D01* +X243363Y338600D01* +X243380Y338695D01* +X243402Y338789D01* +X243427Y338882D01* +X243455Y338975D01* +X243488Y339066D01* +X243524Y339155D01* +X243564Y339243D01* +X243607Y339330D01* +X243653Y339415D01* +X243703Y339497D01* +X243757Y339578D01* +X243813Y339656D01* +X243873Y339732D01* +X243935Y339806D01* +X244001Y339877D01* +X244069Y339945D01* +X244140Y340011D01* +X244214Y340073D01* +X244290Y340133D01* +X244368Y340189D01* +X244449Y340243D01* +X244532Y340293D01* +X244616Y340339D01* +X244703Y340382D01* +X244791Y340422D01* +X244880Y340458D01* +X244971Y340491D01* +X245064Y340519D01* +X245157Y340544D01* +X245251Y340566D01* +X245346Y340583D01* +X245442Y340597D01* +X245538Y340606D01* +X245634Y340612D01* +X245731Y340614D01* +X248130Y340614D01* +X248253Y340612D01* +X248376Y340606D01* +X248499Y340596D01* +X248621Y340582D01* +X248743Y340565D01* +X248864Y340543D01* +X248984Y340518D01* +X249104Y340488D01* +X249222Y340455D01* +X249339Y340418D01* +X249456Y340378D01* +X249570Y340334D01* +X249684Y340286D01* +X249795Y340234D01* +X249905Y340179D01* +X250013Y340120D01* +X250120Y340058D01* +X250224Y339993D01* +X250326Y339924D01* +X250426Y339852D01* +X250523Y339777D01* +X250618Y339698D01* +X250710Y339617D01* +X250800Y339533D01* +X250887Y339446D01* +X250971Y339356D01* +X251052Y339264D01* +X251131Y339169D01* +X251206Y339072D01* +X251278Y338972D01* +X251347Y338870D01* +X251412Y338766D01* +X251474Y338659D01* +X251533Y338551D01* +X251588Y338441D01* +X251640Y338330D01* +X251688Y338216D01* +X251732Y338102D01* +X251772Y337985D01* +X251809Y337868D01* +X251842Y337750D01* +X251872Y337630D01* +X251897Y337510D01* +X251919Y337389D01* +X251936Y337267D01* +X251950Y337145D01* +X251960Y337022D01* +X251966Y336899D01* +X251968Y336776D01* +D13* +X347980Y187960D03* +D14* +X363728Y183660D02* +X363728Y181741D01* +X363726Y181655D01* +X363720Y181569D01* +X363711Y181483D01* +X363697Y181398D01* +X363680Y181314D01* +X363659Y181230D01* +X363634Y181148D01* +X363606Y181067D01* +X363574Y180987D01* +X363538Y180908D01* +X363499Y180832D01* +X363456Y180757D01* +X363411Y180684D01* +X363362Y180613D01* +X363309Y180545D01* +X363254Y180478D01* +X363196Y180415D01* +X363135Y180354D01* +X363072Y180296D01* +X363005Y180241D01* +X362937Y180189D01* +X362866Y180139D01* +X362793Y180094D01* +X362718Y180051D01* +X362642Y180012D01* +X362563Y179976D01* +X362483Y179944D01* +X362402Y179916D01* +X362320Y179891D01* +X362236Y179870D01* +X362152Y179853D01* +X362067Y179839D01* +X361981Y179830D01* +X361895Y179824D01* +X361809Y179822D01* +X357011Y179822D01* +X356925Y179824D01* +X356839Y179830D01* +X356753Y179839D01* +X356668Y179853D01* +X356584Y179870D01* +X356500Y179891D01* +X356418Y179916D01* +X356337Y179944D01* +X356257Y179976D01* +X356178Y180012D01* +X356102Y180051D01* +X356027Y180094D01* +X355954Y180139D01* +X355883Y180188D01* +X355815Y180241D01* +X355748Y180296D01* +X355685Y180354D01* +X355624Y180415D01* +X355566Y180478D01* +X355511Y180545D01* +X355459Y180613D01* +X355409Y180684D01* +X355364Y180757D01* +X355321Y180832D01* +X355282Y180908D01* +X355246Y180987D01* +X355214Y181067D01* +X355186Y181148D01* +X355161Y181230D01* +X355140Y181314D01* +X355123Y181398D01* +X355109Y181483D01* +X355100Y181569D01* +X355094Y181655D01* +X355092Y181741D01* +X355092Y183660D01* +X355092Y190119D02* +X355094Y190211D01* +X355100Y190302D01* +X355109Y190393D01* +X355123Y190484D01* +X355140Y190574D01* +X355162Y190663D01* +X355187Y190751D01* +X355215Y190838D01* +X355248Y190924D01* +X355284Y191008D01* +X355323Y191091D01* +X355366Y191172D01* +X355413Y191251D01* +X355462Y191328D01* +X355515Y191403D01* +X355571Y191475D01* +X355630Y191545D01* +X355692Y191613D01* +X355757Y191678D01* +X355825Y191740D01* +X355895Y191799D01* +X355967Y191855D01* +X356042Y191908D01* +X356119Y191957D01* +X356198Y192004D01* +X356279Y192047D01* +X356362Y192086D01* +X356446Y192122D01* +X356532Y192155D01* +X356619Y192183D01* +X356707Y192208D01* +X356796Y192230D01* +X356886Y192247D01* +X356977Y192261D01* +X357068Y192270D01* +X357159Y192276D01* +X357251Y192278D01* +X355092Y190119D02* +X355094Y190016D01* +X355100Y189914D01* +X355109Y189812D01* +X355122Y189710D01* +X355139Y189609D01* +X355160Y189508D01* +X355184Y189409D01* +X355213Y189310D01* +X355244Y189213D01* +X355280Y189116D01* +X355318Y189021D01* +X355361Y188928D01* +X355407Y188836D01* +X355456Y188746D01* +X355508Y188658D01* +X355564Y188571D01* +X355623Y188487D01* +X355684Y188406D01* +X355749Y188326D01* +X355817Y188249D01* +X355888Y188174D01* +X355961Y188103D01* +X356037Y188034D01* +X356115Y187967D01* +X356196Y187904D01* +X356279Y187844D01* +X356364Y187787D01* +X356451Y187733D01* +X356541Y187682D01* +X356632Y187635D01* +X356724Y187591D01* +X356819Y187550D01* +X356914Y187513D01* +X357011Y187480D01* +X358930Y191558D02* +X358864Y191625D01* +X358795Y191689D01* +X358724Y191750D01* +X358650Y191808D01* +X358574Y191863D01* +X358496Y191915D01* +X358416Y191964D01* +X358334Y192010D01* +X358250Y192052D01* +X358164Y192091D01* +X358077Y192126D01* +X357989Y192157D01* +X357899Y192185D01* +X357809Y192210D01* +X357717Y192231D01* +X357625Y192248D01* +X357532Y192261D01* +X357439Y192270D01* +X357345Y192276D01* +X357251Y192278D01* +X358930Y191558D02* +X363728Y187480D01* +X363728Y192278D01* +X359890Y198543D02* +X359890Y201422D01* +X359890Y198543D02* +X359888Y198457D01* +X359882Y198371D01* +X359873Y198285D01* +X359859Y198200D01* +X359842Y198116D01* +X359821Y198032D01* +X359796Y197950D01* +X359768Y197869D01* +X359736Y197789D01* +X359700Y197710D01* +X359661Y197634D01* +X359618Y197559D01* +X359573Y197486D01* +X359524Y197415D01* +X359471Y197347D01* +X359416Y197280D01* +X359358Y197217D01* +X359297Y197156D01* +X359234Y197098D01* +X359167Y197043D01* +X359099Y196991D01* +X359028Y196941D01* +X358955Y196896D01* +X358880Y196853D01* +X358804Y196814D01* +X358725Y196778D01* +X358645Y196746D01* +X358564Y196718D01* +X358482Y196693D01* +X358398Y196672D01* +X358314Y196655D01* +X358229Y196641D01* +X358143Y196632D01* +X358057Y196626D01* +X357971Y196624D01* +X357491Y196624D01* +X357394Y196626D01* +X357298Y196632D01* +X357202Y196641D01* +X357106Y196655D01* +X357011Y196672D01* +X356917Y196694D01* +X356824Y196719D01* +X356731Y196747D01* +X356640Y196780D01* +X356551Y196816D01* +X356463Y196856D01* +X356376Y196899D01* +X356292Y196945D01* +X356209Y196995D01* +X356128Y197049D01* +X356050Y197105D01* +X355974Y197165D01* +X355900Y197227D01* +X355829Y197293D01* +X355761Y197361D01* +X355695Y197432D01* +X355633Y197506D01* +X355573Y197582D01* +X355517Y197660D01* +X355463Y197741D01* +X355413Y197824D01* +X355367Y197908D01* +X355324Y197995D01* +X355284Y198083D01* +X355248Y198172D01* +X355215Y198263D01* +X355187Y198356D01* +X355162Y198449D01* +X355140Y198543D01* +X355123Y198638D01* +X355109Y198734D01* +X355100Y198830D01* +X355094Y198926D01* +X355092Y199023D01* +X355094Y199120D01* +X355100Y199216D01* +X355109Y199312D01* +X355123Y199408D01* +X355140Y199503D01* +X355162Y199597D01* +X355187Y199690D01* +X355215Y199783D01* +X355248Y199874D01* +X355284Y199963D01* +X355324Y200051D01* +X355367Y200138D01* +X355413Y200223D01* +X355463Y200305D01* +X355517Y200386D01* +X355573Y200464D01* +X355633Y200540D01* +X355695Y200614D01* +X355761Y200685D01* +X355829Y200753D01* +X355900Y200819D01* +X355974Y200881D01* +X356050Y200941D01* +X356128Y200997D01* +X356209Y201051D01* +X356292Y201101D01* +X356376Y201147D01* +X356463Y201190D01* +X356551Y201230D01* +X356640Y201266D01* +X356731Y201299D01* +X356824Y201327D01* +X356917Y201352D01* +X357011Y201374D01* +X357106Y201391D01* +X357202Y201405D01* +X357298Y201414D01* +X357394Y201420D01* +X357491Y201422D01* +X359890Y201422D01* +X360013Y201420D01* +X360136Y201414D01* +X360259Y201404D01* +X360381Y201390D01* +X360503Y201373D01* +X360624Y201351D01* +X360744Y201326D01* +X360864Y201296D01* +X360982Y201263D01* +X361099Y201226D01* +X361216Y201186D01* +X361330Y201142D01* +X361444Y201094D01* +X361555Y201042D01* +X361665Y200987D01* +X361773Y200928D01* +X361880Y200866D01* +X361984Y200801D01* +X362086Y200732D01* +X362186Y200660D01* +X362283Y200585D01* +X362378Y200506D01* +X362470Y200425D01* +X362560Y200341D01* +X362647Y200254D01* +X362731Y200164D01* +X362812Y200072D01* +X362891Y199977D01* +X362966Y199880D01* +X363038Y199780D01* +X363107Y199678D01* +X363172Y199574D01* +X363234Y199467D01* +X363293Y199359D01* +X363348Y199249D01* +X363400Y199138D01* +X363448Y199024D01* +X363492Y198910D01* +X363532Y198793D01* +X363569Y198676D01* +X363602Y198558D01* +X363632Y198438D01* +X363657Y198318D01* +X363679Y198197D01* +X363696Y198075D01* +X363710Y197953D01* +X363720Y197830D01* +X363726Y197707D01* +X363728Y197584D01* +D13* +X497840Y254000D03* +D14* +X502158Y225316D02* +X502158Y223397D01* +X502156Y223311D01* +X502150Y223225D01* +X502141Y223139D01* +X502127Y223054D01* +X502110Y222970D01* +X502089Y222886D01* +X502064Y222804D01* +X502036Y222723D01* +X502004Y222643D01* +X501968Y222564D01* +X501929Y222488D01* +X501886Y222413D01* +X501841Y222340D01* +X501792Y222269D01* +X501739Y222201D01* +X501684Y222134D01* +X501626Y222071D01* +X501565Y222010D01* +X501502Y221952D01* +X501435Y221897D01* +X501367Y221845D01* +X501296Y221795D01* +X501223Y221750D01* +X501148Y221707D01* +X501072Y221668D01* +X500993Y221632D01* +X500913Y221600D01* +X500832Y221572D01* +X500750Y221547D01* +X500666Y221526D01* +X500582Y221509D01* +X500497Y221495D01* +X500411Y221486D01* +X500325Y221480D01* +X500239Y221478D01* +X495441Y221478D01* +X495355Y221480D01* +X495269Y221486D01* +X495183Y221495D01* +X495098Y221509D01* +X495014Y221526D01* +X494930Y221547D01* +X494848Y221572D01* +X494767Y221600D01* +X494687Y221632D01* +X494608Y221668D01* +X494532Y221707D01* +X494457Y221750D01* +X494384Y221795D01* +X494313Y221844D01* +X494245Y221897D01* +X494178Y221952D01* +X494115Y222010D01* +X494054Y222071D01* +X493996Y222134D01* +X493941Y222201D01* +X493889Y222269D01* +X493839Y222340D01* +X493794Y222413D01* +X493751Y222488D01* +X493712Y222564D01* +X493676Y222643D01* +X493644Y222723D01* +X493616Y222804D01* +X493591Y222886D01* +X493570Y222970D01* +X493553Y223054D01* +X493539Y223139D01* +X493530Y223225D01* +X493524Y223311D01* +X493522Y223397D01* +X493522Y225316D01* +X493522Y231775D02* +X493524Y231867D01* +X493530Y231958D01* +X493539Y232049D01* +X493553Y232140D01* +X493570Y232230D01* +X493592Y232319D01* +X493617Y232407D01* +X493645Y232494D01* +X493678Y232580D01* +X493714Y232664D01* +X493753Y232747D01* +X493796Y232828D01* +X493843Y232907D01* +X493892Y232984D01* +X493945Y233059D01* +X494001Y233131D01* +X494060Y233201D01* +X494122Y233269D01* +X494187Y233334D01* +X494255Y233396D01* +X494325Y233455D01* +X494397Y233511D01* +X494472Y233564D01* +X494549Y233613D01* +X494628Y233660D01* +X494709Y233703D01* +X494792Y233742D01* +X494876Y233778D01* +X494962Y233811D01* +X495049Y233839D01* +X495137Y233864D01* +X495226Y233886D01* +X495316Y233903D01* +X495407Y233917D01* +X495498Y233926D01* +X495589Y233932D01* +X495681Y233934D01* +X493522Y231775D02* +X493524Y231672D01* +X493530Y231570D01* +X493539Y231468D01* +X493552Y231366D01* +X493569Y231265D01* +X493590Y231164D01* +X493614Y231065D01* +X493643Y230966D01* +X493674Y230869D01* +X493710Y230772D01* +X493748Y230677D01* +X493791Y230584D01* +X493837Y230492D01* +X493886Y230402D01* +X493938Y230314D01* +X493994Y230227D01* +X494053Y230143D01* +X494114Y230062D01* +X494179Y229982D01* +X494247Y229905D01* +X494318Y229830D01* +X494391Y229759D01* +X494467Y229690D01* +X494545Y229623D01* +X494626Y229560D01* +X494709Y229500D01* +X494794Y229443D01* +X494881Y229389D01* +X494971Y229338D01* +X495062Y229291D01* +X495154Y229247D01* +X495249Y229206D01* +X495344Y229169D01* +X495441Y229136D01* +X497360Y233214D02* +X497294Y233281D01* +X497225Y233345D01* +X497154Y233406D01* +X497080Y233464D01* +X497004Y233519D01* +X496926Y233571D01* +X496846Y233620D01* +X496764Y233666D01* +X496680Y233708D01* +X496594Y233747D01* +X496507Y233782D01* +X496419Y233813D01* +X496329Y233841D01* +X496239Y233866D01* +X496147Y233887D01* +X496055Y233904D01* +X495962Y233917D01* +X495869Y233926D01* +X495775Y233932D01* +X495681Y233934D01* +X497360Y233214D02* +X502158Y229136D01* +X502158Y233934D01* +X497840Y238280D02* +X497670Y238282D01* +X497500Y238288D01* +X497331Y238298D01* +X497161Y238312D01* +X496992Y238331D01* +X496824Y238353D01* +X496656Y238379D01* +X496489Y238409D01* +X496323Y238444D01* +X496157Y238482D01* +X495992Y238524D01* +X495829Y238570D01* +X495667Y238620D01* +X495505Y238674D01* +X495346Y238731D01* +X495187Y238793D01* +X495030Y238858D01* +X494875Y238927D01* +X494721Y239000D01* +X494645Y239028D01* +X494570Y239060D01* +X494496Y239095D01* +X494424Y239133D01* +X494354Y239175D01* +X494286Y239220D01* +X494220Y239268D01* +X494156Y239319D01* +X494095Y239373D01* +X494036Y239429D01* +X493980Y239489D01* +X493927Y239550D01* +X493877Y239614D01* +X493829Y239681D01* +X493785Y239749D01* +X493744Y239820D01* +X493706Y239892D01* +X493672Y239966D01* +X493641Y240041D01* +X493613Y240118D01* +X493589Y240196D01* +X493569Y240275D01* +X493552Y240355D01* +X493539Y240435D01* +X493529Y240516D01* +X493524Y240597D01* +X493522Y240679D01* +X493524Y240761D01* +X493529Y240842D01* +X493539Y240923D01* +X493552Y241003D01* +X493569Y241083D01* +X493589Y241162D01* +X493613Y241240D01* +X493641Y241317D01* +X493672Y241392D01* +X493706Y241466D01* +X493744Y241538D01* +X493785Y241609D01* +X493829Y241677D01* +X493877Y241744D01* +X493927Y241808D01* +X493980Y241869D01* +X494036Y241929D01* +X494095Y241985D01* +X494156Y242039D01* +X494220Y242090D01* +X494286Y242138D01* +X494354Y242183D01* +X494424Y242225D01* +X494496Y242263D01* +X494570Y242298D01* +X494645Y242330D01* +X494721Y242358D01* +X494875Y242431D01* +X495030Y242500D01* +X495187Y242565D01* +X495346Y242627D01* +X495505Y242684D01* +X495667Y242738D01* +X495829Y242788D01* +X495992Y242834D01* +X496157Y242876D01* +X496323Y242914D01* +X496489Y242949D01* +X496656Y242979D01* +X496824Y243005D01* +X496992Y243027D01* +X497161Y243046D01* +X497331Y243060D01* +X497500Y243070D01* +X497670Y243076D01* +X497840Y243078D01* +X497840Y238280D02* +X498010Y238282D01* +X498180Y238288D01* +X498349Y238298D01* +X498519Y238312D01* +X498688Y238331D01* +X498856Y238353D01* +X499024Y238379D01* +X499191Y238409D01* +X499357Y238444D01* +X499523Y238482D01* +X499688Y238524D01* +X499851Y238570D01* +X500013Y238620D01* +X500175Y238674D01* +X500334Y238731D01* +X500493Y238793D01* +X500650Y238858D01* +X500805Y238927D01* +X500959Y239000D01* +X501035Y239028D01* +X501110Y239060D01* +X501184Y239095D01* +X501256Y239133D01* +X501326Y239175D01* +X501394Y239220D01* +X501460Y239268D01* +X501524Y239319D01* +X501585Y239373D01* +X501644Y239429D01* +X501700Y239489D01* +X501753Y239550D01* +X501803Y239614D01* +X501851Y239681D01* +X501895Y239749D01* +X501936Y239820D01* +X501974Y239892D01* +X502008Y239966D01* +X502039Y240041D01* +X502067Y240118D01* +X502091Y240196D01* +X502111Y240275D01* +X502128Y240355D01* +X502141Y240435D01* +X502151Y240516D01* +X502156Y240597D01* +X502158Y240679D01* +X500959Y242358D02* +X500805Y242431D01* +X500650Y242500D01* +X500493Y242565D01* +X500334Y242627D01* +X500175Y242684D01* +X500013Y242738D01* +X499851Y242788D01* +X499688Y242834D01* +X499523Y242876D01* +X499357Y242914D01* +X499191Y242949D01* +X499024Y242979D01* +X498856Y243005D01* +X498688Y243027D01* +X498519Y243046D01* +X498349Y243060D01* +X498180Y243070D01* +X498010Y243076D01* +X497840Y243078D01* +X500959Y242358D02* +X501035Y242330D01* +X501110Y242298D01* +X501184Y242263D01* +X501256Y242225D01* +X501326Y242183D01* +X501394Y242138D01* +X501460Y242090D01* +X501524Y242039D01* +X501585Y241985D01* +X501644Y241929D01* +X501700Y241869D01* +X501753Y241808D01* +X501803Y241744D01* +X501851Y241677D01* +X501895Y241609D01* +X501936Y241538D01* +X501974Y241466D01* +X502008Y241392D01* +X502039Y241317D01* +X502067Y241240D01* +X502091Y241162D01* +X502111Y241083D01* +X502128Y241003D01* +X502141Y240923D01* +X502151Y240842D01* +X502156Y240761D01* +X502158Y240679D01* +X500239Y238760D02* +X495441Y242598D01* +D15* +X576580Y71120D03* +D14* +X580644Y38118D02* +X580644Y36199D01* +X580642Y36113D01* +X580636Y36027D01* +X580627Y35941D01* +X580613Y35856D01* +X580596Y35772D01* +X580575Y35688D01* +X580550Y35606D01* +X580522Y35525D01* +X580490Y35445D01* +X580454Y35366D01* +X580415Y35290D01* +X580372Y35215D01* +X580327Y35142D01* +X580278Y35071D01* +X580225Y35003D01* +X580170Y34936D01* +X580112Y34873D01* +X580051Y34812D01* +X579988Y34754D01* +X579921Y34699D01* +X579853Y34647D01* +X579782Y34597D01* +X579709Y34552D01* +X579634Y34509D01* +X579558Y34470D01* +X579479Y34434D01* +X579399Y34402D01* +X579318Y34374D01* +X579236Y34349D01* +X579152Y34328D01* +X579068Y34311D01* +X578983Y34297D01* +X578897Y34288D01* +X578811Y34282D01* +X578725Y34280D01* +X573927Y34280D01* +X573841Y34282D01* +X573755Y34288D01* +X573669Y34297D01* +X573584Y34311D01* +X573500Y34328D01* +X573416Y34349D01* +X573334Y34374D01* +X573253Y34402D01* +X573173Y34434D01* +X573094Y34470D01* +X573018Y34509D01* +X572943Y34552D01* +X572870Y34597D01* +X572799Y34646D01* +X572731Y34699D01* +X572664Y34754D01* +X572601Y34812D01* +X572540Y34873D01* +X572482Y34936D01* +X572427Y35003D01* +X572375Y35071D01* +X572325Y35142D01* +X572280Y35215D01* +X572237Y35290D01* +X572198Y35366D01* +X572162Y35445D01* +X572130Y35525D01* +X572102Y35606D01* +X572077Y35688D01* +X572056Y35772D01* +X572039Y35856D01* +X572025Y35941D01* +X572016Y36027D01* +X572010Y36113D01* +X572008Y36199D01* +X572008Y38118D01* +X573927Y41938D02* +X572008Y44337D01* +X580644Y44337D01* +X580644Y41938D02* +X580644Y46736D01* +X573927Y51082D02* +X572008Y53481D01* +X580644Y53481D01* +X580644Y51082D02* +X580644Y55880D01* +D15* +X355600Y58420D03* +D14* +X345948Y49050D02* +X345948Y47131D01* +X345946Y47045D01* +X345940Y46959D01* +X345931Y46873D01* +X345917Y46788D01* +X345900Y46704D01* +X345879Y46620D01* +X345854Y46538D01* +X345826Y46457D01* +X345794Y46377D01* +X345758Y46298D01* +X345719Y46222D01* +X345676Y46147D01* +X345631Y46074D01* +X345582Y46003D01* +X345529Y45935D01* +X345474Y45868D01* +X345416Y45805D01* +X345355Y45744D01* +X345292Y45686D01* +X345225Y45631D01* +X345157Y45579D01* +X345086Y45529D01* +X345013Y45484D01* +X344938Y45441D01* +X344862Y45402D01* +X344783Y45366D01* +X344703Y45334D01* +X344622Y45306D01* +X344540Y45281D01* +X344456Y45260D01* +X344372Y45243D01* +X344287Y45229D01* +X344201Y45220D01* +X344115Y45214D01* +X344029Y45212D01* +X339231Y45212D01* +X339145Y45214D01* +X339059Y45220D01* +X338973Y45229D01* +X338888Y45243D01* +X338804Y45260D01* +X338720Y45281D01* +X338638Y45306D01* +X338557Y45334D01* +X338477Y45366D01* +X338398Y45402D01* +X338322Y45441D01* +X338247Y45484D01* +X338174Y45529D01* +X338103Y45578D01* +X338035Y45631D01* +X337968Y45686D01* +X337905Y45744D01* +X337844Y45805D01* +X337786Y45868D01* +X337731Y45935D01* +X337679Y46003D01* +X337629Y46074D01* +X337584Y46147D01* +X337541Y46222D01* +X337502Y46298D01* +X337466Y46377D01* +X337434Y46457D01* +X337406Y46538D01* +X337381Y46620D01* +X337360Y46704D01* +X337343Y46788D01* +X337329Y46873D01* +X337320Y46959D01* +X337314Y47045D01* +X337312Y47131D01* +X337312Y49050D01* +X339231Y52870D02* +X337312Y55269D01* +X345948Y55269D01* +X345948Y52870D02* +X345948Y57668D01* +X343549Y62014D02* +X343452Y62016D01* +X343356Y62022D01* +X343260Y62031D01* +X343164Y62045D01* +X343069Y62062D01* +X342975Y62084D01* +X342882Y62109D01* +X342789Y62137D01* +X342698Y62170D01* +X342609Y62206D01* +X342521Y62246D01* +X342434Y62289D01* +X342350Y62335D01* +X342267Y62385D01* +X342186Y62439D01* +X342108Y62495D01* +X342032Y62555D01* +X341958Y62617D01* +X341887Y62683D01* +X341819Y62751D01* +X341753Y62822D01* +X341691Y62896D01* +X341631Y62972D01* +X341575Y63050D01* +X341521Y63131D01* +X341471Y63214D01* +X341425Y63298D01* +X341382Y63385D01* +X341342Y63473D01* +X341306Y63562D01* +X341273Y63653D01* +X341245Y63746D01* +X341220Y63839D01* +X341198Y63933D01* +X341181Y64028D01* +X341167Y64124D01* +X341158Y64220D01* +X341152Y64316D01* +X341150Y64413D01* +X341152Y64510D01* +X341158Y64606D01* +X341167Y64702D01* +X341181Y64798D01* +X341198Y64893D01* +X341220Y64987D01* +X341245Y65080D01* +X341273Y65173D01* +X341306Y65264D01* +X341342Y65353D01* +X341382Y65441D01* +X341425Y65528D01* +X341471Y65613D01* +X341521Y65695D01* +X341575Y65776D01* +X341631Y65854D01* +X341691Y65930D01* +X341753Y66004D01* +X341819Y66075D01* +X341887Y66143D01* +X341958Y66209D01* +X342032Y66271D01* +X342108Y66331D01* +X342186Y66387D01* +X342267Y66441D01* +X342350Y66491D01* +X342434Y66537D01* +X342521Y66580D01* +X342609Y66620D01* +X342698Y66656D01* +X342789Y66689D01* +X342882Y66717D01* +X342975Y66742D01* +X343069Y66764D01* +X343164Y66781D01* +X343260Y66795D01* +X343356Y66804D01* +X343452Y66810D01* +X343549Y66812D01* +X343646Y66810D01* +X343742Y66804D01* +X343838Y66795D01* +X343934Y66781D01* +X344029Y66764D01* +X344123Y66742D01* +X344216Y66717D01* +X344309Y66689D01* +X344400Y66656D01* +X344489Y66620D01* +X344577Y66580D01* +X344664Y66537D01* +X344749Y66491D01* +X344831Y66441D01* +X344912Y66387D01* +X344990Y66331D01* +X345066Y66271D01* +X345140Y66209D01* +X345211Y66143D01* +X345279Y66075D01* +X345345Y66004D01* +X345407Y65930D01* +X345467Y65854D01* +X345523Y65776D01* +X345577Y65695D01* +X345627Y65612D01* +X345673Y65528D01* +X345716Y65441D01* +X345756Y65353D01* +X345792Y65264D01* +X345825Y65173D01* +X345853Y65080D01* +X345878Y64987D01* +X345900Y64893D01* +X345917Y64798D01* +X345931Y64702D01* +X345940Y64606D01* +X345946Y64510D01* +X345948Y64413D01* +X345946Y64316D01* +X345940Y64220D01* +X345931Y64124D01* +X345917Y64028D01* +X345900Y63933D01* +X345878Y63839D01* +X345853Y63746D01* +X345825Y63653D01* +X345792Y63562D01* +X345756Y63473D01* +X345716Y63385D01* +X345673Y63298D01* +X345627Y63213D01* +X345577Y63131D01* +X345523Y63050D01* +X345467Y62972D01* +X345407Y62896D01* +X345345Y62822D01* +X345279Y62751D01* +X345211Y62683D01* +X345140Y62617D01* +X345066Y62555D01* +X344990Y62495D01* +X344912Y62439D01* +X344831Y62385D01* +X344749Y62335D01* +X344664Y62289D01* +X344577Y62246D01* +X344489Y62206D01* +X344400Y62170D01* +X344309Y62137D01* +X344216Y62109D01* +X344123Y62084D01* +X344029Y62062D01* +X343934Y62045D01* +X343838Y62031D01* +X343742Y62022D01* +X343646Y62016D01* +X343549Y62014D01* +X339231Y62494D02* +X339145Y62496D01* +X339059Y62502D01* +X338973Y62511D01* +X338888Y62525D01* +X338804Y62542D01* +X338720Y62563D01* +X338638Y62588D01* +X338557Y62616D01* +X338477Y62648D01* +X338398Y62684D01* +X338322Y62723D01* +X338247Y62766D01* +X338174Y62811D01* +X338103Y62860D01* +X338035Y62913D01* +X337968Y62968D01* +X337905Y63026D01* +X337844Y63087D01* +X337786Y63150D01* +X337731Y63217D01* +X337678Y63285D01* +X337629Y63356D01* +X337584Y63429D01* +X337541Y63504D01* +X337502Y63580D01* +X337466Y63659D01* +X337434Y63739D01* +X337406Y63820D01* +X337381Y63902D01* +X337360Y63986D01* +X337343Y64070D01* +X337329Y64155D01* +X337320Y64241D01* +X337314Y64327D01* +X337312Y64413D01* +X337314Y64499D01* +X337320Y64585D01* +X337329Y64671D01* +X337343Y64756D01* +X337360Y64840D01* +X337381Y64924D01* +X337406Y65006D01* +X337434Y65087D01* +X337466Y65167D01* +X337502Y65246D01* +X337541Y65322D01* +X337584Y65397D01* +X337629Y65470D01* +X337678Y65541D01* +X337731Y65609D01* +X337786Y65676D01* +X337844Y65739D01* +X337905Y65800D01* +X337968Y65858D01* +X338035Y65913D01* +X338103Y65966D01* +X338174Y66015D01* +X338247Y66060D01* +X338322Y66103D01* +X338398Y66142D01* +X338477Y66178D01* +X338557Y66210D01* +X338638Y66238D01* +X338720Y66263D01* +X338804Y66284D01* +X338888Y66301D01* +X338973Y66315D01* +X339059Y66324D01* +X339145Y66330D01* +X339231Y66332D01* +X339317Y66330D01* +X339403Y66324D01* +X339489Y66315D01* +X339574Y66301D01* +X339658Y66284D01* +X339742Y66263D01* +X339824Y66238D01* +X339905Y66210D01* +X339985Y66178D01* +X340064Y66142D01* +X340140Y66103D01* +X340215Y66060D01* +X340288Y66015D01* +X340359Y65966D01* +X340427Y65913D01* +X340494Y65858D01* +X340557Y65800D01* +X340618Y65739D01* +X340676Y65676D01* +X340731Y65609D01* +X340784Y65541D01* +X340833Y65470D01* +X340878Y65397D01* +X340921Y65322D01* +X340960Y65246D01* +X340996Y65167D01* +X341028Y65087D01* +X341056Y65006D01* +X341081Y64924D01* +X341102Y64840D01* +X341119Y64756D01* +X341133Y64671D01* +X341142Y64585D01* +X341148Y64499D01* +X341150Y64413D01* +X341148Y64327D01* +X341142Y64241D01* +X341133Y64155D01* +X341119Y64070D01* +X341102Y63986D01* +X341081Y63902D01* +X341056Y63820D01* +X341028Y63739D01* +X340996Y63659D01* +X340960Y63580D01* +X340921Y63504D01* +X340878Y63429D01* +X340833Y63356D01* +X340784Y63285D01* +X340731Y63217D01* +X340676Y63150D01* +X340618Y63087D01* +X340557Y63026D01* +X340494Y62968D01* +X340427Y62913D01* +X340359Y62860D01* +X340288Y62811D01* +X340215Y62766D01* +X340140Y62723D01* +X340064Y62684D01* +X339985Y62648D01* +X339905Y62616D01* +X339824Y62588D01* +X339742Y62563D01* +X339658Y62542D01* +X339574Y62525D01* +X339489Y62511D01* +X339403Y62502D01* +X339317Y62496D01* +X339231Y62494D01* +D13* +X693420Y160020D03* +D14* +X656336Y201299D02* +X656336Y203218D01* +X656336Y201299D02* +X656334Y201213D01* +X656328Y201127D01* +X656319Y201041D01* +X656305Y200956D01* +X656288Y200872D01* +X656267Y200788D01* +X656242Y200706D01* +X656214Y200625D01* +X656182Y200545D01* +X656146Y200466D01* +X656107Y200390D01* +X656064Y200315D01* +X656019Y200242D01* +X655970Y200171D01* +X655917Y200103D01* +X655862Y200036D01* +X655804Y199973D01* +X655743Y199912D01* +X655680Y199854D01* +X655613Y199799D01* +X655545Y199747D01* +X655474Y199697D01* +X655401Y199652D01* +X655326Y199609D01* +X655250Y199570D01* +X655171Y199534D01* +X655091Y199502D01* +X655010Y199474D01* +X654928Y199449D01* +X654844Y199428D01* +X654760Y199411D01* +X654675Y199397D01* +X654589Y199388D01* +X654503Y199382D01* +X654417Y199380D01* +X649619Y199380D01* +X649533Y199382D01* +X649447Y199388D01* +X649361Y199397D01* +X649276Y199411D01* +X649192Y199428D01* +X649108Y199449D01* +X649026Y199474D01* +X648945Y199502D01* +X648865Y199534D01* +X648786Y199570D01* +X648710Y199609D01* +X648635Y199652D01* +X648562Y199697D01* +X648491Y199746D01* +X648423Y199799D01* +X648356Y199854D01* +X648293Y199912D01* +X648232Y199973D01* +X648174Y200036D01* +X648119Y200103D01* +X648067Y200171D01* +X648017Y200242D01* +X647972Y200315D01* +X647929Y200390D01* +X647890Y200466D01* +X647854Y200545D01* +X647822Y200625D01* +X647794Y200706D01* +X647769Y200788D01* +X647748Y200872D01* +X647731Y200956D01* +X647717Y201041D01* +X647708Y201127D01* +X647702Y201213D01* +X647700Y201299D01* +X647700Y203218D01* +X649619Y207038D02* +X647700Y209437D01* +X656336Y209437D01* +X656336Y207038D02* +X656336Y211836D01* +X648660Y216182D02* +X647700Y216182D01* +X647700Y220980D01* +X656336Y218581D01* +D13* +X993140Y279400D03* +D14* +X992632Y292749D02* +X992632Y294668D01* +X992632Y292749D02* +X992630Y292663D01* +X992624Y292577D01* +X992615Y292491D01* +X992601Y292406D01* +X992584Y292322D01* +X992563Y292238D01* +X992538Y292156D01* +X992510Y292075D01* +X992478Y291995D01* +X992442Y291916D01* +X992403Y291840D01* +X992360Y291765D01* +X992315Y291692D01* +X992266Y291621D01* +X992213Y291553D01* +X992158Y291486D01* +X992100Y291423D01* +X992039Y291362D01* +X991976Y291304D01* +X991909Y291249D01* +X991841Y291197D01* +X991770Y291147D01* +X991697Y291102D01* +X991622Y291059D01* +X991546Y291020D01* +X991467Y290984D01* +X991387Y290952D01* +X991306Y290924D01* +X991224Y290899D01* +X991140Y290878D01* +X991056Y290861D01* +X990971Y290847D01* +X990885Y290838D01* +X990799Y290832D01* +X990713Y290830D01* +X985915Y290830D01* +X985829Y290832D01* +X985743Y290838D01* +X985657Y290847D01* +X985572Y290861D01* +X985488Y290878D01* +X985404Y290899D01* +X985322Y290924D01* +X985241Y290952D01* +X985161Y290984D01* +X985082Y291020D01* +X985006Y291059D01* +X984931Y291102D01* +X984858Y291147D01* +X984787Y291196D01* +X984719Y291249D01* +X984652Y291304D01* +X984589Y291362D01* +X984528Y291423D01* +X984470Y291486D01* +X984415Y291553D01* +X984363Y291621D01* +X984313Y291692D01* +X984268Y291765D01* +X984225Y291840D01* +X984186Y291916D01* +X984150Y291995D01* +X984118Y292075D01* +X984090Y292156D01* +X984065Y292238D01* +X984044Y292322D01* +X984027Y292406D01* +X984013Y292491D01* +X984004Y292577D01* +X983998Y292663D01* +X983996Y292749D01* +X983996Y294668D01* +X983996Y301127D02* +X983998Y301219D01* +X984004Y301310D01* +X984013Y301401D01* +X984027Y301492D01* +X984044Y301582D01* +X984066Y301671D01* +X984091Y301759D01* +X984119Y301846D01* +X984152Y301932D01* +X984188Y302016D01* +X984227Y302099D01* +X984270Y302180D01* +X984317Y302259D01* +X984366Y302336D01* +X984419Y302411D01* +X984475Y302483D01* +X984534Y302553D01* +X984596Y302621D01* +X984661Y302686D01* +X984729Y302748D01* +X984799Y302807D01* +X984871Y302863D01* +X984946Y302916D01* +X985023Y302965D01* +X985102Y303012D01* +X985183Y303055D01* +X985266Y303094D01* +X985350Y303130D01* +X985436Y303163D01* +X985523Y303191D01* +X985611Y303216D01* +X985700Y303238D01* +X985790Y303255D01* +X985881Y303269D01* +X985972Y303278D01* +X986063Y303284D01* +X986155Y303286D01* +X983996Y301127D02* +X983998Y301024D01* +X984004Y300922D01* +X984013Y300820D01* +X984026Y300718D01* +X984043Y300617D01* +X984064Y300516D01* +X984088Y300417D01* +X984117Y300318D01* +X984148Y300221D01* +X984184Y300124D01* +X984222Y300029D01* +X984265Y299936D01* +X984311Y299844D01* +X984360Y299754D01* +X984412Y299666D01* +X984468Y299579D01* +X984527Y299495D01* +X984588Y299414D01* +X984653Y299334D01* +X984721Y299257D01* +X984792Y299182D01* +X984865Y299111D01* +X984941Y299042D01* +X985019Y298975D01* +X985100Y298912D01* +X985183Y298852D01* +X985268Y298795D01* +X985355Y298741D01* +X985445Y298690D01* +X985536Y298643D01* +X985628Y298599D01* +X985723Y298558D01* +X985818Y298521D01* +X985915Y298488D01* +X987834Y302566D02* +X987768Y302633D01* +X987699Y302697D01* +X987628Y302758D01* +X987554Y302816D01* +X987478Y302871D01* +X987400Y302923D01* +X987320Y302972D01* +X987238Y303018D01* +X987154Y303060D01* +X987068Y303099D01* +X986981Y303134D01* +X986893Y303165D01* +X986803Y303193D01* +X986713Y303218D01* +X986621Y303239D01* +X986529Y303256D01* +X986436Y303269D01* +X986343Y303278D01* +X986249Y303284D01* +X986155Y303286D01* +X987834Y302566D02* +X992632Y298488D01* +X992632Y303286D01* +D13* +X863600Y160020D03* +D14* +X894334Y152164D02* +X894334Y150245D01* +X894332Y150159D01* +X894326Y150073D01* +X894317Y149987D01* +X894303Y149902D01* +X894286Y149818D01* +X894265Y149734D01* +X894240Y149652D01* +X894212Y149571D01* +X894180Y149491D01* +X894144Y149412D01* +X894105Y149336D01* +X894062Y149261D01* +X894017Y149188D01* +X893968Y149117D01* +X893915Y149049D01* +X893860Y148982D01* +X893802Y148919D01* +X893741Y148858D01* +X893678Y148800D01* +X893611Y148745D01* +X893543Y148693D01* +X893472Y148643D01* +X893399Y148598D01* +X893324Y148555D01* +X893248Y148516D01* +X893169Y148480D01* +X893089Y148448D01* +X893008Y148420D01* +X892926Y148395D01* +X892842Y148374D01* +X892758Y148357D01* +X892673Y148343D01* +X892587Y148334D01* +X892501Y148328D01* +X892415Y148326D01* +X887617Y148326D01* +X887531Y148328D01* +X887445Y148334D01* +X887359Y148343D01* +X887274Y148357D01* +X887190Y148374D01* +X887106Y148395D01* +X887024Y148420D01* +X886943Y148448D01* +X886863Y148480D01* +X886784Y148516D01* +X886708Y148555D01* +X886633Y148598D01* +X886560Y148643D01* +X886489Y148692D01* +X886421Y148745D01* +X886354Y148800D01* +X886291Y148858D01* +X886230Y148919D01* +X886172Y148982D01* +X886117Y149049D01* +X886065Y149117D01* +X886015Y149188D01* +X885970Y149261D01* +X885927Y149336D01* +X885888Y149412D01* +X885852Y149491D01* +X885820Y149571D01* +X885792Y149652D01* +X885767Y149734D01* +X885746Y149818D01* +X885729Y149902D01* +X885715Y149987D01* +X885706Y150073D01* +X885700Y150159D01* +X885698Y150245D01* +X885698Y152164D01* +X887617Y155984D02* +X885698Y158383D01* +X894334Y158383D01* +X894334Y155984D02* +X894334Y160782D01* +X894334Y165128D02* +X894334Y167527D01* +X894332Y167624D01* +X894326Y167720D01* +X894317Y167816D01* +X894303Y167912D01* +X894286Y168007D01* +X894264Y168101D01* +X894239Y168194D01* +X894211Y168287D01* +X894178Y168378D01* +X894142Y168467D01* +X894102Y168555D01* +X894059Y168642D01* +X894013Y168727D01* +X893963Y168809D01* +X893909Y168890D01* +X893853Y168968D01* +X893793Y169044D01* +X893731Y169118D01* +X893665Y169189D01* +X893597Y169257D01* +X893526Y169323D01* +X893452Y169385D01* +X893376Y169445D01* +X893298Y169501D01* +X893217Y169555D01* +X893135Y169605D01* +X893050Y169651D01* +X892963Y169694D01* +X892875Y169734D01* +X892786Y169770D01* +X892695Y169803D01* +X892602Y169831D01* +X892509Y169856D01* +X892415Y169878D01* +X892320Y169895D01* +X892224Y169909D01* +X892128Y169918D01* +X892032Y169924D01* +X891935Y169926D01* +X891838Y169924D01* +X891742Y169918D01* +X891646Y169909D01* +X891550Y169895D01* +X891455Y169878D01* +X891361Y169856D01* +X891268Y169831D01* +X891175Y169803D01* +X891084Y169770D01* +X890995Y169734D01* +X890907Y169694D01* +X890820Y169651D01* +X890736Y169605D01* +X890653Y169555D01* +X890572Y169501D01* +X890494Y169445D01* +X890418Y169385D01* +X890344Y169323D01* +X890273Y169257D01* +X890205Y169189D01* +X890139Y169118D01* +X890077Y169044D01* +X890017Y168968D01* +X889961Y168890D01* +X889907Y168809D01* +X889857Y168727D01* +X889811Y168642D01* +X889768Y168555D01* +X889728Y168467D01* +X889692Y168378D01* +X889659Y168287D01* +X889631Y168194D01* +X889606Y168101D01* +X889584Y168007D01* +X889567Y167912D01* +X889553Y167816D01* +X889544Y167720D01* +X889538Y167624D01* +X889536Y167527D01* +X885698Y168007D02* +X885698Y165128D01* +X885698Y168007D02* +X885700Y168093D01* +X885706Y168179D01* +X885715Y168265D01* +X885729Y168350D01* +X885746Y168434D01* +X885767Y168518D01* +X885792Y168600D01* +X885820Y168681D01* +X885852Y168761D01* +X885888Y168840D01* +X885927Y168916D01* +X885970Y168991D01* +X886015Y169064D01* +X886064Y169135D01* +X886117Y169203D01* +X886172Y169270D01* +X886230Y169333D01* +X886291Y169394D01* +X886354Y169452D01* +X886421Y169507D01* +X886489Y169560D01* +X886560Y169609D01* +X886633Y169654D01* +X886708Y169697D01* +X886784Y169736D01* +X886863Y169772D01* +X886943Y169804D01* +X887024Y169832D01* +X887106Y169857D01* +X887190Y169878D01* +X887274Y169895D01* +X887359Y169909D01* +X887445Y169918D01* +X887531Y169924D01* +X887617Y169926D01* +X887703Y169924D01* +X887789Y169918D01* +X887875Y169909D01* +X887960Y169895D01* +X888044Y169878D01* +X888128Y169857D01* +X888210Y169832D01* +X888291Y169804D01* +X888371Y169772D01* +X888450Y169736D01* +X888526Y169697D01* +X888601Y169654D01* +X888674Y169609D01* +X888745Y169560D01* +X888813Y169507D01* +X888880Y169452D01* +X888943Y169394D01* +X889004Y169333D01* +X889062Y169270D01* +X889117Y169203D01* +X889170Y169135D01* +X889219Y169064D01* +X889264Y168991D01* +X889307Y168916D01* +X889346Y168840D01* +X889382Y168761D01* +X889414Y168681D01* +X889442Y168600D01* +X889467Y168518D01* +X889488Y168434D01* +X889505Y168350D01* +X889519Y168265D01* +X889528Y168179D01* +X889534Y168093D01* +X889536Y168007D01* +X889536Y166088D01* +D16* +X492760Y299720D03* +D14* +X506081Y308864D02* +X509919Y308864D01* +X506081Y308864D02* +X505984Y308866D01* +X505888Y308872D01* +X505792Y308881D01* +X505696Y308895D01* +X505601Y308912D01* +X505507Y308934D01* +X505414Y308959D01* +X505321Y308987D01* +X505230Y309020D01* +X505141Y309056D01* +X505053Y309096D01* +X504966Y309139D01* +X504882Y309185D01* +X504799Y309235D01* +X504718Y309289D01* +X504640Y309345D01* +X504564Y309405D01* +X504490Y309467D01* +X504419Y309533D01* +X504351Y309601D01* +X504285Y309672D01* +X504223Y309746D01* +X504163Y309822D01* +X504107Y309900D01* +X504053Y309981D01* +X504003Y310064D01* +X503957Y310148D01* +X503914Y310235D01* +X503874Y310323D01* +X503838Y310412D01* +X503805Y310503D01* +X503777Y310596D01* +X503752Y310689D01* +X503730Y310783D01* +X503713Y310878D01* +X503699Y310974D01* +X503690Y311070D01* +X503684Y311166D01* +X503682Y311263D01* +X503684Y311360D01* +X503690Y311456D01* +X503699Y311552D01* +X503713Y311648D01* +X503730Y311743D01* +X503752Y311837D01* +X503777Y311930D01* +X503805Y312023D01* +X503838Y312114D01* +X503874Y312203D01* +X503914Y312291D01* +X503957Y312378D01* +X504003Y312463D01* +X504053Y312545D01* +X504107Y312626D01* +X504163Y312704D01* +X504223Y312780D01* +X504285Y312854D01* +X504351Y312925D01* +X504419Y312993D01* +X504490Y313059D01* +X504564Y313121D01* +X504640Y313181D01* +X504718Y313237D01* +X504799Y313291D01* +X504882Y313341D01* +X504966Y313387D01* +X505053Y313430D01* +X505141Y313470D01* +X505230Y313506D01* +X505321Y313539D01* +X505414Y313567D01* +X505507Y313592D01* +X505601Y313614D01* +X505696Y313631D01* +X505792Y313645D01* +X505888Y313654D01* +X505984Y313660D01* +X506081Y313662D01* +X509919Y313662D01* +X510016Y313660D01* +X510112Y313654D01* +X510208Y313645D01* +X510304Y313631D01* +X510399Y313614D01* +X510493Y313592D01* +X510586Y313567D01* +X510679Y313539D01* +X510770Y313506D01* +X510859Y313470D01* +X510947Y313430D01* +X511034Y313387D01* +X511119Y313341D01* +X511201Y313291D01* +X511282Y313237D01* +X511360Y313181D01* +X511436Y313121D01* +X511510Y313059D01* +X511581Y312993D01* +X511649Y312925D01* +X511715Y312854D01* +X511777Y312780D01* +X511837Y312704D01* +X511893Y312626D01* +X511947Y312545D01* +X511997Y312463D01* +X512043Y312378D01* +X512086Y312291D01* +X512126Y312203D01* +X512162Y312114D01* +X512195Y312023D01* +X512223Y311930D01* +X512248Y311837D01* +X512270Y311743D01* +X512287Y311648D01* +X512301Y311552D01* +X512310Y311456D01* +X512316Y311360D01* +X512318Y311263D01* +X512316Y311166D01* +X512310Y311070D01* +X512301Y310974D01* +X512287Y310878D01* +X512270Y310783D01* +X512248Y310689D01* +X512223Y310596D01* +X512195Y310503D01* +X512162Y310412D01* +X512126Y310323D01* +X512086Y310235D01* +X512043Y310148D01* +X511997Y310064D01* +X511947Y309981D01* +X511893Y309900D01* +X511837Y309822D01* +X511777Y309746D01* +X511715Y309672D01* +X511649Y309601D01* +X511581Y309533D01* +X511510Y309467D01* +X511436Y309405D01* +X511360Y309345D01* +X511282Y309289D01* +X511201Y309235D01* +X511119Y309185D01* +X511034Y309139D01* +X510947Y309096D01* +X510859Y309056D01* +X510770Y309020D01* +X510679Y308987D01* +X510586Y308959D01* +X510493Y308934D01* +X510399Y308912D01* +X510304Y308895D01* +X510208Y308881D01* +X510112Y308872D01* +X510016Y308866D01* +X509919Y308864D01* +X510399Y312702D02* +X512318Y314621D01* +X505841Y322343D02* +X505749Y322341D01* +X505658Y322335D01* +X505567Y322326D01* +X505476Y322312D01* +X505386Y322295D01* +X505297Y322273D01* +X505209Y322248D01* +X505122Y322220D01* +X505036Y322187D01* +X504952Y322151D01* +X504869Y322112D01* +X504788Y322069D01* +X504709Y322022D01* +X504632Y321973D01* +X504557Y321920D01* +X504485Y321864D01* +X504415Y321805D01* +X504347Y321743D01* +X504282Y321678D01* +X504220Y321610D01* +X504161Y321540D01* +X504105Y321468D01* +X504052Y321393D01* +X504003Y321316D01* +X503956Y321237D01* +X503913Y321156D01* +X503874Y321073D01* +X503838Y320989D01* +X503805Y320903D01* +X503777Y320816D01* +X503752Y320728D01* +X503730Y320639D01* +X503713Y320549D01* +X503699Y320458D01* +X503690Y320367D01* +X503684Y320276D01* +X503682Y320184D01* +X503684Y320081D01* +X503690Y319979D01* +X503699Y319877D01* +X503712Y319775D01* +X503729Y319674D01* +X503750Y319573D01* +X503774Y319474D01* +X503803Y319375D01* +X503834Y319278D01* +X503870Y319181D01* +X503908Y319086D01* +X503951Y318993D01* +X503997Y318901D01* +X504046Y318811D01* +X504098Y318723D01* +X504154Y318636D01* +X504213Y318552D01* +X504274Y318471D01* +X504339Y318391D01* +X504407Y318314D01* +X504478Y318239D01* +X504551Y318168D01* +X504627Y318099D01* +X504705Y318032D01* +X504786Y317969D01* +X504869Y317909D01* +X504954Y317852D01* +X505041Y317798D01* +X505131Y317747D01* +X505222Y317700D01* +X505314Y317656D01* +X505409Y317615D01* +X505504Y317578D01* +X505601Y317545D01* +X507520Y321623D02* +X507454Y321690D01* +X507385Y321754D01* +X507314Y321815D01* +X507240Y321873D01* +X507164Y321928D01* +X507086Y321980D01* +X507006Y322029D01* +X506924Y322075D01* +X506840Y322117D01* +X506754Y322156D01* +X506667Y322191D01* +X506579Y322222D01* +X506489Y322250D01* +X506399Y322275D01* +X506307Y322296D01* +X506215Y322313D01* +X506122Y322326D01* +X506029Y322335D01* +X505935Y322341D01* +X505841Y322343D01* +X507520Y321624D02* +X512318Y317546D01* +X512318Y322343D01* +D16* +X452120Y330200D03* +D14* +X464171Y339852D02* +X468009Y339852D01* +X464171Y339852D02* +X464074Y339854D01* +X463978Y339860D01* +X463882Y339869D01* +X463786Y339883D01* +X463691Y339900D01* +X463597Y339922D01* +X463504Y339947D01* +X463411Y339975D01* +X463320Y340008D01* +X463231Y340044D01* +X463143Y340084D01* +X463056Y340127D01* +X462972Y340173D01* +X462889Y340223D01* +X462808Y340277D01* +X462730Y340333D01* +X462654Y340393D01* +X462580Y340455D01* +X462509Y340521D01* +X462441Y340589D01* +X462375Y340660D01* +X462313Y340734D01* +X462253Y340810D01* +X462197Y340888D01* +X462143Y340969D01* +X462093Y341052D01* +X462047Y341136D01* +X462004Y341223D01* +X461964Y341311D01* +X461928Y341400D01* +X461895Y341491D01* +X461867Y341584D01* +X461842Y341677D01* +X461820Y341771D01* +X461803Y341866D01* +X461789Y341962D01* +X461780Y342058D01* +X461774Y342154D01* +X461772Y342251D01* +X461774Y342348D01* +X461780Y342444D01* +X461789Y342540D01* +X461803Y342636D01* +X461820Y342731D01* +X461842Y342825D01* +X461867Y342918D01* +X461895Y343011D01* +X461928Y343102D01* +X461964Y343191D01* +X462004Y343279D01* +X462047Y343366D01* +X462093Y343451D01* +X462143Y343533D01* +X462197Y343614D01* +X462253Y343692D01* +X462313Y343768D01* +X462375Y343842D01* +X462441Y343913D01* +X462509Y343981D01* +X462580Y344047D01* +X462654Y344109D01* +X462730Y344169D01* +X462808Y344225D01* +X462889Y344279D01* +X462972Y344329D01* +X463056Y344375D01* +X463143Y344418D01* +X463231Y344458D01* +X463320Y344494D01* +X463411Y344527D01* +X463504Y344555D01* +X463597Y344580D01* +X463691Y344602D01* +X463786Y344619D01* +X463882Y344633D01* +X463978Y344642D01* +X464074Y344648D01* +X464171Y344650D01* +X468009Y344650D01* +X468106Y344648D01* +X468202Y344642D01* +X468298Y344633D01* +X468394Y344619D01* +X468489Y344602D01* +X468583Y344580D01* +X468676Y344555D01* +X468769Y344527D01* +X468860Y344494D01* +X468949Y344458D01* +X469037Y344418D01* +X469124Y344375D01* +X469209Y344329D01* +X469291Y344279D01* +X469372Y344225D01* +X469450Y344169D01* +X469526Y344109D01* +X469600Y344047D01* +X469671Y343981D01* +X469739Y343913D01* +X469805Y343842D01* +X469867Y343768D01* +X469927Y343692D01* +X469983Y343614D01* +X470037Y343533D01* +X470087Y343451D01* +X470133Y343366D01* +X470176Y343279D01* +X470216Y343191D01* +X470252Y343102D01* +X470285Y343011D01* +X470313Y342918D01* +X470338Y342825D01* +X470360Y342731D01* +X470377Y342636D01* +X470391Y342540D01* +X470400Y342444D01* +X470406Y342348D01* +X470408Y342251D01* +X470406Y342154D01* +X470400Y342058D01* +X470391Y341962D01* +X470377Y341866D01* +X470360Y341771D01* +X470338Y341677D01* +X470313Y341584D01* +X470285Y341491D01* +X470252Y341400D01* +X470216Y341311D01* +X470176Y341223D01* +X470133Y341136D01* +X470087Y341052D01* +X470037Y340969D01* +X469983Y340888D01* +X469927Y340810D01* +X469867Y340734D01* +X469805Y340660D01* +X469739Y340589D01* +X469671Y340521D01* +X469600Y340455D01* +X469526Y340393D01* +X469450Y340333D01* +X469372Y340277D01* +X469291Y340223D01* +X469209Y340173D01* +X469124Y340127D01* +X469037Y340084D01* +X468949Y340044D01* +X468860Y340008D01* +X468769Y339975D01* +X468676Y339947D01* +X468583Y339922D01* +X468489Y339900D01* +X468394Y339883D01* +X468298Y339869D01* +X468202Y339860D01* +X468106Y339854D01* +X468009Y339852D01* +X468489Y343690D02* +X470408Y345609D01* +X463691Y348534D02* +X461772Y350933D01* +X470408Y350933D01* +X470408Y353331D02* +X470408Y348534D01* +D13* +X1031240Y91440D03* +D14* +X1031494Y102616D02* +X1022858Y102616D01* +X1022858Y105015D01* +X1022860Y105112D01* +X1022866Y105208D01* +X1022875Y105304D01* +X1022889Y105400D01* +X1022906Y105495D01* +X1022928Y105589D01* +X1022953Y105682D01* +X1022981Y105775D01* +X1023014Y105866D01* +X1023050Y105955D01* +X1023090Y106043D01* +X1023133Y106130D01* +X1023179Y106215D01* +X1023229Y106297D01* +X1023283Y106378D01* +X1023339Y106456D01* +X1023399Y106532D01* +X1023461Y106606D01* +X1023527Y106677D01* +X1023595Y106745D01* +X1023666Y106811D01* +X1023740Y106873D01* +X1023816Y106933D01* +X1023894Y106989D01* +X1023975Y107043D01* +X1024058Y107093D01* +X1024142Y107139D01* +X1024229Y107182D01* +X1024317Y107222D01* +X1024406Y107258D01* +X1024497Y107291D01* +X1024590Y107319D01* +X1024683Y107344D01* +X1024777Y107366D01* +X1024872Y107383D01* +X1024968Y107397D01* +X1025064Y107406D01* +X1025160Y107412D01* +X1025257Y107414D01* +X1025354Y107412D01* +X1025450Y107406D01* +X1025546Y107397D01* +X1025642Y107383D01* +X1025737Y107366D01* +X1025831Y107344D01* +X1025924Y107319D01* +X1026017Y107291D01* +X1026108Y107258D01* +X1026197Y107222D01* +X1026285Y107182D01* +X1026372Y107139D01* +X1026457Y107093D01* +X1026539Y107043D01* +X1026620Y106989D01* +X1026698Y106933D01* +X1026774Y106873D01* +X1026848Y106811D01* +X1026919Y106745D01* +X1026987Y106677D01* +X1027053Y106606D01* +X1027115Y106532D01* +X1027175Y106456D01* +X1027231Y106378D01* +X1027285Y106297D01* +X1027335Y106215D01* +X1027381Y106130D01* +X1027424Y106043D01* +X1027464Y105955D01* +X1027500Y105866D01* +X1027533Y105775D01* +X1027561Y105682D01* +X1027586Y105589D01* +X1027608Y105495D01* +X1027625Y105400D01* +X1027639Y105304D01* +X1027648Y105208D01* +X1027654Y105112D01* +X1027656Y105015D01* +X1027656Y102616D01* +X1027656Y105495D02* +X1031494Y107414D01* +X1024777Y111675D02* +X1022858Y114074D01* +X1031494Y114074D01* +X1031494Y111675D02* +X1031494Y116473D01* +X1031494Y120819D02* +X1031494Y123218D01* +X1031492Y123315D01* +X1031486Y123411D01* +X1031477Y123507D01* +X1031463Y123603D01* +X1031446Y123698D01* +X1031424Y123792D01* +X1031399Y123885D01* +X1031371Y123978D01* +X1031338Y124069D01* +X1031302Y124158D01* +X1031262Y124246D01* +X1031219Y124333D01* +X1031173Y124418D01* +X1031123Y124500D01* +X1031069Y124581D01* +X1031013Y124659D01* +X1030953Y124735D01* +X1030891Y124809D01* +X1030825Y124880D01* +X1030757Y124948D01* +X1030686Y125014D01* +X1030612Y125076D01* +X1030536Y125136D01* +X1030458Y125192D01* +X1030377Y125246D01* +X1030295Y125296D01* +X1030210Y125342D01* +X1030123Y125385D01* +X1030035Y125425D01* +X1029946Y125461D01* +X1029855Y125494D01* +X1029762Y125522D01* +X1029669Y125547D01* +X1029575Y125569D01* +X1029480Y125586D01* +X1029384Y125600D01* +X1029288Y125609D01* +X1029192Y125615D01* +X1029095Y125617D01* +X1028998Y125615D01* +X1028902Y125609D01* +X1028806Y125600D01* +X1028710Y125586D01* +X1028615Y125569D01* +X1028521Y125547D01* +X1028428Y125522D01* +X1028335Y125494D01* +X1028244Y125461D01* +X1028155Y125425D01* +X1028067Y125385D01* +X1027980Y125342D01* +X1027896Y125296D01* +X1027813Y125246D01* +X1027732Y125192D01* +X1027654Y125136D01* +X1027578Y125076D01* +X1027504Y125014D01* +X1027433Y124948D01* +X1027365Y124880D01* +X1027299Y124809D01* +X1027237Y124735D01* +X1027177Y124659D01* +X1027121Y124581D01* +X1027067Y124500D01* +X1027017Y124418D01* +X1026971Y124333D01* +X1026928Y124246D01* +X1026888Y124158D01* +X1026852Y124069D01* +X1026819Y123978D01* +X1026791Y123885D01* +X1026766Y123792D01* +X1026744Y123698D01* +X1026727Y123603D01* +X1026713Y123507D01* +X1026704Y123411D01* +X1026698Y123315D01* +X1026696Y123218D01* +X1022858Y123698D02* +X1022858Y120819D01* +X1022858Y123698D02* +X1022860Y123784D01* +X1022866Y123870D01* +X1022875Y123956D01* +X1022889Y124041D01* +X1022906Y124125D01* +X1022927Y124209D01* +X1022952Y124291D01* +X1022980Y124372D01* +X1023012Y124452D01* +X1023048Y124531D01* +X1023087Y124607D01* +X1023130Y124682D01* +X1023175Y124755D01* +X1023224Y124826D01* +X1023277Y124894D01* +X1023332Y124961D01* +X1023390Y125024D01* +X1023451Y125085D01* +X1023514Y125143D01* +X1023581Y125198D01* +X1023649Y125251D01* +X1023720Y125300D01* +X1023793Y125345D01* +X1023868Y125388D01* +X1023944Y125427D01* +X1024023Y125463D01* +X1024103Y125495D01* +X1024184Y125523D01* +X1024266Y125548D01* +X1024350Y125569D01* +X1024434Y125586D01* +X1024519Y125600D01* +X1024605Y125609D01* +X1024691Y125615D01* +X1024777Y125617D01* +X1024863Y125615D01* +X1024949Y125609D01* +X1025035Y125600D01* +X1025120Y125586D01* +X1025204Y125569D01* +X1025288Y125548D01* +X1025370Y125523D01* +X1025451Y125495D01* +X1025531Y125463D01* +X1025610Y125427D01* +X1025686Y125388D01* +X1025761Y125345D01* +X1025834Y125300D01* +X1025905Y125251D01* +X1025973Y125198D01* +X1026040Y125143D01* +X1026103Y125085D01* +X1026164Y125024D01* +X1026222Y124961D01* +X1026277Y124894D01* +X1026330Y124826D01* +X1026379Y124755D01* +X1026424Y124682D01* +X1026467Y124607D01* +X1026506Y124531D01* +X1026542Y124452D01* +X1026574Y124372D01* +X1026602Y124291D01* +X1026627Y124209D01* +X1026648Y124125D01* +X1026665Y124041D01* +X1026679Y123956D01* +X1026688Y123870D01* +X1026694Y123784D01* +X1026696Y123698D01* +X1026696Y121779D01* +D13* +X706120Y139700D03* +D14* +X709930Y105269D02* +X701294Y105269D01* +X701294Y107668D01* +X701296Y107765D01* +X701302Y107861D01* +X701311Y107957D01* +X701325Y108053D01* +X701342Y108148D01* +X701364Y108242D01* +X701389Y108335D01* +X701417Y108428D01* +X701450Y108519D01* +X701486Y108608D01* +X701526Y108696D01* +X701569Y108783D01* +X701615Y108868D01* +X701665Y108950D01* +X701719Y109031D01* +X701775Y109109D01* +X701835Y109185D01* +X701897Y109259D01* +X701963Y109330D01* +X702031Y109398D01* +X702102Y109464D01* +X702176Y109526D01* +X702252Y109586D01* +X702330Y109642D01* +X702411Y109696D01* +X702494Y109746D01* +X702578Y109792D01* +X702665Y109835D01* +X702753Y109875D01* +X702842Y109911D01* +X702933Y109944D01* +X703026Y109972D01* +X703119Y109997D01* +X703213Y110019D01* +X703308Y110036D01* +X703404Y110050D01* +X703500Y110059D01* +X703596Y110065D01* +X703693Y110067D01* +X703790Y110065D01* +X703886Y110059D01* +X703982Y110050D01* +X704078Y110036D01* +X704173Y110019D01* +X704267Y109997D01* +X704360Y109972D01* +X704453Y109944D01* +X704544Y109911D01* +X704633Y109875D01* +X704721Y109835D01* +X704808Y109792D01* +X704893Y109746D01* +X704975Y109696D01* +X705056Y109642D01* +X705134Y109586D01* +X705210Y109526D01* +X705284Y109464D01* +X705355Y109398D01* +X705423Y109330D01* +X705489Y109259D01* +X705551Y109185D01* +X705611Y109109D01* +X705667Y109031D01* +X705721Y108950D01* +X705771Y108868D01* +X705817Y108783D01* +X705860Y108696D01* +X705900Y108608D01* +X705936Y108519D01* +X705969Y108428D01* +X705997Y108335D01* +X706022Y108242D01* +X706044Y108148D01* +X706061Y108053D01* +X706075Y107957D01* +X706084Y107861D01* +X706090Y107765D01* +X706092Y107668D01* +X706092Y105269D01* +X706092Y108148D02* +X709930Y110067D01* +X703213Y114328D02* +X701294Y116727D01* +X709930Y116727D01* +X709930Y114328D02* +X709930Y119126D01* +X706092Y125391D02* +X706092Y128270D01* +X706092Y125391D02* +X706090Y125305D01* +X706084Y125219D01* +X706075Y125133D01* +X706061Y125048D01* +X706044Y124964D01* +X706023Y124880D01* +X705998Y124798D01* +X705970Y124717D01* +X705938Y124637D01* +X705902Y124558D01* +X705863Y124482D01* +X705820Y124407D01* +X705775Y124334D01* +X705726Y124263D01* +X705673Y124195D01* +X705618Y124128D01* +X705560Y124065D01* +X705499Y124004D01* +X705436Y123946D01* +X705369Y123891D01* +X705301Y123839D01* +X705230Y123789D01* +X705157Y123744D01* +X705082Y123701D01* +X705006Y123662D01* +X704927Y123626D01* +X704847Y123594D01* +X704766Y123566D01* +X704684Y123541D01* +X704600Y123520D01* +X704516Y123503D01* +X704431Y123489D01* +X704345Y123480D01* +X704259Y123474D01* +X704173Y123472D01* +X703693Y123472D01* +X703596Y123474D01* +X703500Y123480D01* +X703404Y123489D01* +X703308Y123503D01* +X703213Y123520D01* +X703119Y123542D01* +X703026Y123567D01* +X702933Y123595D01* +X702842Y123628D01* +X702753Y123664D01* +X702665Y123704D01* +X702578Y123747D01* +X702494Y123793D01* +X702411Y123843D01* +X702330Y123897D01* +X702252Y123953D01* +X702176Y124013D01* +X702102Y124075D01* +X702031Y124141D01* +X701963Y124209D01* +X701897Y124280D01* +X701835Y124354D01* +X701775Y124430D01* +X701719Y124508D01* +X701665Y124589D01* +X701615Y124672D01* +X701569Y124756D01* +X701526Y124843D01* +X701486Y124931D01* +X701450Y125020D01* +X701417Y125111D01* +X701389Y125204D01* +X701364Y125297D01* +X701342Y125391D01* +X701325Y125486D01* +X701311Y125582D01* +X701302Y125678D01* +X701296Y125774D01* +X701294Y125871D01* +X701296Y125968D01* +X701302Y126064D01* +X701311Y126160D01* +X701325Y126256D01* +X701342Y126351D01* +X701364Y126445D01* +X701389Y126538D01* +X701417Y126631D01* +X701450Y126722D01* +X701486Y126811D01* +X701526Y126899D01* +X701569Y126986D01* +X701615Y127071D01* +X701665Y127153D01* +X701719Y127234D01* +X701775Y127312D01* +X701835Y127388D01* +X701897Y127462D01* +X701963Y127533D01* +X702031Y127601D01* +X702102Y127667D01* +X702176Y127729D01* +X702252Y127789D01* +X702330Y127845D01* +X702411Y127899D01* +X702494Y127949D01* +X702578Y127995D01* +X702665Y128038D01* +X702753Y128078D01* +X702842Y128114D01* +X702933Y128147D01* +X703026Y128175D01* +X703119Y128200D01* +X703213Y128222D01* +X703308Y128239D01* +X703404Y128253D01* +X703500Y128262D01* +X703596Y128268D01* +X703693Y128270D01* +X706092Y128270D01* +X706215Y128268D01* +X706338Y128262D01* +X706461Y128252D01* +X706583Y128238D01* +X706705Y128221D01* +X706826Y128199D01* +X706946Y128174D01* +X707066Y128144D01* +X707184Y128111D01* +X707301Y128074D01* +X707418Y128034D01* +X707532Y127990D01* +X707646Y127942D01* +X707757Y127890D01* +X707867Y127835D01* +X707975Y127776D01* +X708082Y127714D01* +X708186Y127649D01* +X708288Y127580D01* +X708388Y127508D01* +X708485Y127433D01* +X708580Y127354D01* +X708672Y127273D01* +X708762Y127189D01* +X708849Y127102D01* +X708933Y127012D01* +X709014Y126920D01* +X709093Y126825D01* +X709168Y126728D01* +X709240Y126628D01* +X709309Y126526D01* +X709374Y126422D01* +X709436Y126315D01* +X709495Y126207D01* +X709550Y126097D01* +X709602Y125986D01* +X709650Y125872D01* +X709694Y125758D01* +X709734Y125641D01* +X709771Y125524D01* +X709804Y125406D01* +X709834Y125286D01* +X709859Y125166D01* +X709881Y125045D01* +X709898Y124923D01* +X709912Y124801D01* +X709922Y124678D01* +X709928Y124555D01* +X709930Y124432D01* +D17* +X1259840Y142240D03* +D14* +X1248156Y147828D02* +X1248156Y156464D01* +X1250555Y156464D01* +X1250652Y156462D01* +X1250748Y156456D01* +X1250844Y156447D01* +X1250940Y156433D01* +X1251035Y156416D01* +X1251129Y156394D01* +X1251222Y156369D01* +X1251315Y156341D01* +X1251406Y156308D01* +X1251495Y156272D01* +X1251583Y156232D01* +X1251670Y156189D01* +X1251755Y156143D01* +X1251837Y156093D01* +X1251918Y156039D01* +X1251996Y155983D01* +X1252072Y155923D01* +X1252146Y155861D01* +X1252217Y155795D01* +X1252285Y155727D01* +X1252351Y155656D01* +X1252413Y155582D01* +X1252473Y155506D01* +X1252529Y155428D01* +X1252583Y155347D01* +X1252633Y155264D01* +X1252679Y155180D01* +X1252722Y155093D01* +X1252762Y155005D01* +X1252798Y154916D01* +X1252831Y154825D01* +X1252859Y154732D01* +X1252884Y154639D01* +X1252906Y154545D01* +X1252923Y154450D01* +X1252937Y154354D01* +X1252946Y154258D01* +X1252952Y154162D01* +X1252954Y154065D01* +X1252952Y153968D01* +X1252946Y153872D01* +X1252937Y153776D01* +X1252923Y153680D01* +X1252906Y153585D01* +X1252884Y153491D01* +X1252859Y153398D01* +X1252831Y153305D01* +X1252798Y153214D01* +X1252762Y153125D01* +X1252722Y153037D01* +X1252679Y152950D01* +X1252633Y152866D01* +X1252583Y152783D01* +X1252529Y152702D01* +X1252473Y152624D01* +X1252413Y152548D01* +X1252351Y152474D01* +X1252285Y152403D01* +X1252217Y152335D01* +X1252146Y152269D01* +X1252072Y152207D01* +X1251996Y152147D01* +X1251918Y152091D01* +X1251837Y152037D01* +X1251755Y151987D01* +X1251670Y151941D01* +X1251583Y151898D01* +X1251495Y151858D01* +X1251406Y151822D01* +X1251315Y151789D01* +X1251222Y151761D01* +X1251129Y151736D01* +X1251035Y151714D01* +X1250940Y151697D01* +X1250844Y151683D01* +X1250748Y151674D01* +X1250652Y151668D01* +X1250555Y151666D01* +X1248156Y151666D01* +X1251035Y151666D02* +X1252954Y147828D01* +X1259854Y156464D02* +X1259946Y156462D01* +X1260037Y156456D01* +X1260128Y156447D01* +X1260219Y156433D01* +X1260309Y156416D01* +X1260398Y156394D01* +X1260486Y156369D01* +X1260573Y156341D01* +X1260659Y156308D01* +X1260743Y156272D01* +X1260826Y156233D01* +X1260907Y156190D01* +X1260986Y156143D01* +X1261063Y156094D01* +X1261138Y156041D01* +X1261210Y155985D01* +X1261280Y155926D01* +X1261348Y155864D01* +X1261413Y155799D01* +X1261475Y155731D01* +X1261534Y155661D01* +X1261590Y155589D01* +X1261643Y155514D01* +X1261692Y155437D01* +X1261739Y155358D01* +X1261782Y155277D01* +X1261821Y155194D01* +X1261857Y155110D01* +X1261890Y155024D01* +X1261918Y154937D01* +X1261943Y154849D01* +X1261965Y154760D01* +X1261982Y154670D01* +X1261996Y154579D01* +X1262005Y154488D01* +X1262011Y154397D01* +X1262013Y154305D01* +X1259854Y156464D02* +X1259751Y156462D01* +X1259649Y156456D01* +X1259547Y156447D01* +X1259445Y156434D01* +X1259344Y156417D01* +X1259243Y156396D01* +X1259144Y156372D01* +X1259045Y156343D01* +X1258948Y156312D01* +X1258851Y156276D01* +X1258756Y156238D01* +X1258663Y156195D01* +X1258571Y156149D01* +X1258481Y156100D01* +X1258393Y156048D01* +X1258306Y155992D01* +X1258222Y155933D01* +X1258141Y155872D01* +X1258061Y155807D01* +X1257984Y155739D01* +X1257909Y155668D01* +X1257838Y155595D01* +X1257769Y155519D01* +X1257702Y155441D01* +X1257639Y155360D01* +X1257579Y155277D01* +X1257522Y155192D01* +X1257468Y155105D01* +X1257417Y155015D01* +X1257370Y154924D01* +X1257326Y154832D01* +X1257285Y154737D01* +X1257248Y154642D01* +X1257215Y154545D01* +X1261293Y152626D02* +X1261360Y152692D01* +X1261424Y152761D01* +X1261485Y152832D01* +X1261543Y152906D01* +X1261598Y152982D01* +X1261650Y153060D01* +X1261699Y153140D01* +X1261745Y153222D01* +X1261787Y153306D01* +X1261826Y153392D01* +X1261861Y153479D01* +X1261892Y153567D01* +X1261920Y153657D01* +X1261945Y153747D01* +X1261966Y153839D01* +X1261983Y153931D01* +X1261996Y154024D01* +X1262005Y154117D01* +X1262011Y154211D01* +X1262013Y154305D01* +X1261293Y152626D02* +X1257215Y147828D01* +X1262013Y147828D01* +X1266359Y149747D02* +X1268278Y156464D01* +X1266359Y149747D02* +X1271157Y149747D01* +X1269718Y151666D02* +X1269718Y147828D01* +D17* +X533400Y259080D03* +D14* +X524256Y252984D02* +X524256Y244348D01* +X524256Y252984D02* +X526655Y252984D01* +X526752Y252982D01* +X526848Y252976D01* +X526944Y252967D01* +X527040Y252953D01* +X527135Y252936D01* +X527229Y252914D01* +X527322Y252889D01* +X527415Y252861D01* +X527506Y252828D01* +X527595Y252792D01* +X527683Y252752D01* +X527770Y252709D01* +X527855Y252663D01* +X527937Y252613D01* +X528018Y252559D01* +X528096Y252503D01* +X528172Y252443D01* +X528246Y252381D01* +X528317Y252315D01* +X528385Y252247D01* +X528451Y252176D01* +X528513Y252102D01* +X528573Y252026D01* +X528629Y251948D01* +X528683Y251867D01* +X528733Y251784D01* +X528779Y251700D01* +X528822Y251613D01* +X528862Y251525D01* +X528898Y251436D01* +X528931Y251345D01* +X528959Y251252D01* +X528984Y251159D01* +X529006Y251065D01* +X529023Y250970D01* +X529037Y250874D01* +X529046Y250778D01* +X529052Y250682D01* +X529054Y250585D01* +X529052Y250488D01* +X529046Y250392D01* +X529037Y250296D01* +X529023Y250200D01* +X529006Y250105D01* +X528984Y250011D01* +X528959Y249918D01* +X528931Y249825D01* +X528898Y249734D01* +X528862Y249645D01* +X528822Y249557D01* +X528779Y249470D01* +X528733Y249386D01* +X528683Y249303D01* +X528629Y249222D01* +X528573Y249144D01* +X528513Y249068D01* +X528451Y248994D01* +X528385Y248923D01* +X528317Y248855D01* +X528246Y248789D01* +X528172Y248727D01* +X528096Y248667D01* +X528018Y248611D01* +X527937Y248557D01* +X527855Y248507D01* +X527770Y248461D01* +X527683Y248418D01* +X527595Y248378D01* +X527506Y248342D01* +X527415Y248309D01* +X527322Y248281D01* +X527229Y248256D01* +X527135Y248234D01* +X527040Y248217D01* +X526944Y248203D01* +X526848Y248194D01* +X526752Y248188D01* +X526655Y248186D01* +X524256Y248186D01* +X527135Y248186D02* +X529054Y244348D01* +X535954Y252984D02* +X536046Y252982D01* +X536137Y252976D01* +X536228Y252967D01* +X536319Y252953D01* +X536409Y252936D01* +X536498Y252914D01* +X536586Y252889D01* +X536673Y252861D01* +X536759Y252828D01* +X536843Y252792D01* +X536926Y252753D01* +X537007Y252710D01* +X537086Y252663D01* +X537163Y252614D01* +X537238Y252561D01* +X537310Y252505D01* +X537380Y252446D01* +X537448Y252384D01* +X537513Y252319D01* +X537575Y252251D01* +X537634Y252181D01* +X537690Y252109D01* +X537743Y252034D01* +X537792Y251957D01* +X537839Y251878D01* +X537882Y251797D01* +X537921Y251714D01* +X537957Y251630D01* +X537990Y251544D01* +X538018Y251457D01* +X538043Y251369D01* +X538065Y251280D01* +X538082Y251190D01* +X538096Y251099D01* +X538105Y251008D01* +X538111Y250917D01* +X538113Y250825D01* +X535954Y252984D02* +X535851Y252982D01* +X535749Y252976D01* +X535647Y252967D01* +X535545Y252954D01* +X535444Y252937D01* +X535343Y252916D01* +X535244Y252892D01* +X535145Y252863D01* +X535048Y252832D01* +X534951Y252796D01* +X534856Y252758D01* +X534763Y252715D01* +X534671Y252669D01* +X534581Y252620D01* +X534493Y252568D01* +X534406Y252512D01* +X534322Y252453D01* +X534241Y252392D01* +X534161Y252327D01* +X534084Y252259D01* +X534009Y252188D01* +X533938Y252115D01* +X533869Y252039D01* +X533802Y251961D01* +X533739Y251880D01* +X533679Y251797D01* +X533622Y251712D01* +X533568Y251625D01* +X533517Y251535D01* +X533470Y251444D01* +X533426Y251352D01* +X533385Y251257D01* +X533348Y251162D01* +X533315Y251065D01* +X537393Y249146D02* +X537460Y249212D01* +X537524Y249281D01* +X537585Y249352D01* +X537643Y249426D01* +X537698Y249502D01* +X537750Y249580D01* +X537799Y249660D01* +X537845Y249742D01* +X537887Y249826D01* +X537926Y249912D01* +X537961Y249999D01* +X537992Y250087D01* +X538020Y250177D01* +X538045Y250267D01* +X538066Y250359D01* +X538083Y250451D01* +X538096Y250544D01* +X538105Y250637D01* +X538111Y250731D01* +X538113Y250825D01* +X537393Y249146D02* +X533315Y244348D01* +X538113Y244348D01* +X542459Y244348D02* +X545338Y244348D01* +X545424Y244350D01* +X545510Y244356D01* +X545596Y244365D01* +X545681Y244379D01* +X545765Y244396D01* +X545849Y244417D01* +X545931Y244442D01* +X546012Y244470D01* +X546092Y244502D01* +X546171Y244538D01* +X546247Y244577D01* +X546322Y244620D01* +X546395Y244665D01* +X546466Y244715D01* +X546534Y244767D01* +X546601Y244822D01* +X546664Y244880D01* +X546725Y244941D01* +X546783Y245004D01* +X546838Y245071D01* +X546891Y245139D01* +X546940Y245210D01* +X546985Y245283D01* +X547028Y245358D01* +X547067Y245434D01* +X547103Y245513D01* +X547135Y245593D01* +X547163Y245674D01* +X547188Y245757D01* +X547209Y245840D01* +X547226Y245924D01* +X547240Y246009D01* +X547249Y246095D01* +X547255Y246181D01* +X547257Y246267D01* +X547257Y247227D01* +X547255Y247313D01* +X547249Y247399D01* +X547240Y247485D01* +X547226Y247570D01* +X547209Y247654D01* +X547188Y247738D01* +X547163Y247820D01* +X547135Y247901D01* +X547103Y247981D01* +X547067Y248060D01* +X547028Y248136D01* +X546985Y248211D01* +X546940Y248284D01* +X546891Y248355D01* +X546838Y248423D01* +X546783Y248490D01* +X546725Y248553D01* +X546664Y248614D01* +X546601Y248672D01* +X546534Y248727D01* +X546466Y248780D01* +X546395Y248829D01* +X546322Y248874D01* +X546247Y248917D01* +X546171Y248956D01* +X546092Y248992D01* +X546012Y249024D01* +X545931Y249052D01* +X545849Y249077D01* +X545765Y249098D01* +X545681Y249115D01* +X545596Y249129D01* +X545510Y249138D01* +X545424Y249144D01* +X545338Y249146D01* +X542459Y249146D01* +X542459Y252984D01* +X547257Y252984D01* +D13* +X678180Y160020D03* +D14* +X641350Y200011D02* +X632714Y200011D01* +X632714Y202410D01* +X632716Y202507D01* +X632722Y202603D01* +X632731Y202699D01* +X632745Y202795D01* +X632762Y202890D01* +X632784Y202984D01* +X632809Y203077D01* +X632837Y203170D01* +X632870Y203261D01* +X632906Y203350D01* +X632946Y203438D01* +X632989Y203525D01* +X633035Y203610D01* +X633085Y203692D01* +X633139Y203773D01* +X633195Y203851D01* +X633255Y203927D01* +X633317Y204001D01* +X633383Y204072D01* +X633451Y204140D01* +X633522Y204206D01* +X633596Y204268D01* +X633672Y204328D01* +X633750Y204384D01* +X633831Y204438D01* +X633914Y204488D01* +X633998Y204534D01* +X634085Y204577D01* +X634173Y204617D01* +X634262Y204653D01* +X634353Y204686D01* +X634446Y204714D01* +X634539Y204739D01* +X634633Y204761D01* +X634728Y204778D01* +X634824Y204792D01* +X634920Y204801D01* +X635016Y204807D01* +X635113Y204809D01* +X635210Y204807D01* +X635306Y204801D01* +X635402Y204792D01* +X635498Y204778D01* +X635593Y204761D01* +X635687Y204739D01* +X635780Y204714D01* +X635873Y204686D01* +X635964Y204653D01* +X636053Y204617D01* +X636141Y204577D01* +X636228Y204534D01* +X636313Y204488D01* +X636395Y204438D01* +X636476Y204384D01* +X636554Y204328D01* +X636630Y204268D01* +X636704Y204206D01* +X636775Y204140D01* +X636843Y204072D01* +X636909Y204001D01* +X636971Y203927D01* +X637031Y203851D01* +X637087Y203773D01* +X637141Y203692D01* +X637191Y203610D01* +X637237Y203525D01* +X637280Y203438D01* +X637320Y203350D01* +X637356Y203261D01* +X637389Y203170D01* +X637417Y203077D01* +X637442Y202984D01* +X637464Y202890D01* +X637481Y202795D01* +X637495Y202699D01* +X637504Y202603D01* +X637510Y202507D01* +X637512Y202410D01* +X637512Y200011D01* +X637512Y202890D02* +X641350Y204809D01* +X632714Y211709D02* +X632716Y211801D01* +X632722Y211892D01* +X632731Y211983D01* +X632745Y212074D01* +X632762Y212164D01* +X632784Y212253D01* +X632809Y212341D01* +X632837Y212428D01* +X632870Y212514D01* +X632906Y212598D01* +X632945Y212681D01* +X632988Y212762D01* +X633035Y212841D01* +X633084Y212918D01* +X633137Y212993D01* +X633193Y213065D01* +X633252Y213135D01* +X633314Y213203D01* +X633379Y213268D01* +X633447Y213330D01* +X633517Y213389D01* +X633589Y213445D01* +X633664Y213498D01* +X633741Y213547D01* +X633820Y213594D01* +X633901Y213637D01* +X633984Y213676D01* +X634068Y213712D01* +X634154Y213745D01* +X634241Y213773D01* +X634329Y213798D01* +X634418Y213820D01* +X634508Y213837D01* +X634599Y213851D01* +X634690Y213860D01* +X634781Y213866D01* +X634873Y213868D01* +X632714Y211709D02* +X632716Y211606D01* +X632722Y211504D01* +X632731Y211402D01* +X632744Y211300D01* +X632761Y211199D01* +X632782Y211098D01* +X632806Y210999D01* +X632835Y210900D01* +X632866Y210803D01* +X632902Y210706D01* +X632940Y210611D01* +X632983Y210518D01* +X633029Y210426D01* +X633078Y210336D01* +X633130Y210248D01* +X633186Y210161D01* +X633245Y210077D01* +X633306Y209996D01* +X633371Y209916D01* +X633439Y209839D01* +X633510Y209764D01* +X633583Y209693D01* +X633659Y209624D01* +X633737Y209557D01* +X633818Y209494D01* +X633901Y209434D01* +X633986Y209377D01* +X634073Y209323D01* +X634163Y209272D01* +X634254Y209225D01* +X634346Y209181D01* +X634441Y209140D01* +X634536Y209103D01* +X634633Y209070D01* +X636552Y213148D02* +X636486Y213215D01* +X636417Y213279D01* +X636346Y213340D01* +X636272Y213398D01* +X636196Y213453D01* +X636118Y213505D01* +X636038Y213554D01* +X635956Y213600D01* +X635872Y213642D01* +X635786Y213681D01* +X635699Y213716D01* +X635611Y213747D01* +X635521Y213775D01* +X635431Y213800D01* +X635339Y213821D01* +X635247Y213838D01* +X635154Y213851D01* +X635061Y213860D01* +X634967Y213866D01* +X634873Y213868D01* +X636552Y213148D02* +X641350Y209070D01* +X641350Y213868D01* +X632714Y220853D02* +X632716Y220945D01* +X632722Y221036D01* +X632731Y221127D01* +X632745Y221218D01* +X632762Y221308D01* +X632784Y221397D01* +X632809Y221485D01* +X632837Y221572D01* +X632870Y221658D01* +X632906Y221742D01* +X632945Y221825D01* +X632988Y221906D01* +X633035Y221985D01* +X633084Y222062D01* +X633137Y222137D01* +X633193Y222209D01* +X633252Y222279D01* +X633314Y222347D01* +X633379Y222412D01* +X633447Y222474D01* +X633517Y222533D01* +X633589Y222589D01* +X633664Y222642D01* +X633741Y222691D01* +X633820Y222738D01* +X633901Y222781D01* +X633984Y222820D01* +X634068Y222856D01* +X634154Y222889D01* +X634241Y222917D01* +X634329Y222942D01* +X634418Y222964D01* +X634508Y222981D01* +X634599Y222995D01* +X634690Y223004D01* +X634781Y223010D01* +X634873Y223012D01* +X632714Y220853D02* +X632716Y220750D01* +X632722Y220648D01* +X632731Y220546D01* +X632744Y220444D01* +X632761Y220343D01* +X632782Y220242D01* +X632806Y220143D01* +X632835Y220044D01* +X632866Y219947D01* +X632902Y219850D01* +X632940Y219755D01* +X632983Y219662D01* +X633029Y219570D01* +X633078Y219480D01* +X633130Y219392D01* +X633186Y219305D01* +X633245Y219221D01* +X633306Y219140D01* +X633371Y219060D01* +X633439Y218983D01* +X633510Y218908D01* +X633583Y218837D01* +X633659Y218768D01* +X633737Y218701D01* +X633818Y218638D01* +X633901Y218578D01* +X633986Y218521D01* +X634073Y218467D01* +X634163Y218416D01* +X634254Y218369D01* +X634346Y218325D01* +X634441Y218284D01* +X634536Y218247D01* +X634633Y218214D01* +X636552Y222292D02* +X636486Y222359D01* +X636417Y222423D01* +X636346Y222484D01* +X636272Y222542D01* +X636196Y222597D01* +X636118Y222649D01* +X636038Y222698D01* +X635956Y222744D01* +X635872Y222786D01* +X635786Y222825D01* +X635699Y222860D01* +X635611Y222891D01* +X635521Y222919D01* +X635431Y222944D01* +X635339Y222965D01* +X635247Y222982D01* +X635154Y222995D01* +X635061Y223004D01* +X634967Y223010D01* +X634873Y223012D01* +X636552Y222292D02* +X641350Y218214D01* +X641350Y223012D01* +D13* +X1005840Y279400D03* +D14* +X1009142Y291592D02* +X1000506Y291592D01* +X1000506Y293991D01* +X1000508Y294088D01* +X1000514Y294184D01* +X1000523Y294280D01* +X1000537Y294376D01* +X1000554Y294471D01* +X1000576Y294565D01* +X1000601Y294658D01* +X1000629Y294751D01* +X1000662Y294842D01* +X1000698Y294931D01* +X1000738Y295019D01* +X1000781Y295106D01* +X1000827Y295191D01* +X1000877Y295273D01* +X1000931Y295354D01* +X1000987Y295432D01* +X1001047Y295508D01* +X1001109Y295582D01* +X1001175Y295653D01* +X1001243Y295721D01* +X1001314Y295787D01* +X1001388Y295849D01* +X1001464Y295909D01* +X1001542Y295965D01* +X1001623Y296019D01* +X1001706Y296069D01* +X1001790Y296115D01* +X1001877Y296158D01* +X1001965Y296198D01* +X1002054Y296234D01* +X1002145Y296267D01* +X1002238Y296295D01* +X1002331Y296320D01* +X1002425Y296342D01* +X1002520Y296359D01* +X1002616Y296373D01* +X1002712Y296382D01* +X1002808Y296388D01* +X1002905Y296390D01* +X1003002Y296388D01* +X1003098Y296382D01* +X1003194Y296373D01* +X1003290Y296359D01* +X1003385Y296342D01* +X1003479Y296320D01* +X1003572Y296295D01* +X1003665Y296267D01* +X1003756Y296234D01* +X1003845Y296198D01* +X1003933Y296158D01* +X1004020Y296115D01* +X1004105Y296069D01* +X1004187Y296019D01* +X1004268Y295965D01* +X1004346Y295909D01* +X1004422Y295849D01* +X1004496Y295787D01* +X1004567Y295721D01* +X1004635Y295653D01* +X1004701Y295582D01* +X1004763Y295508D01* +X1004823Y295432D01* +X1004879Y295354D01* +X1004933Y295273D01* +X1004983Y295191D01* +X1005029Y295106D01* +X1005072Y295019D01* +X1005112Y294931D01* +X1005148Y294842D01* +X1005181Y294751D01* +X1005209Y294658D01* +X1005234Y294565D01* +X1005256Y294471D01* +X1005273Y294376D01* +X1005287Y294280D01* +X1005296Y294184D01* +X1005302Y294088D01* +X1005304Y293991D01* +X1005304Y291592D01* +X1005304Y294471D02* +X1009142Y296390D01* +X1002425Y300651D02* +X1000506Y303050D01* +X1009142Y303050D01* +X1009142Y300651D02* +X1009142Y305449D01* +D13* +X876300Y160020D03* +D14* +X899160Y147687D02* +X907796Y147687D01* +X899160Y147687D02* +X899160Y150086D01* +X899162Y150183D01* +X899168Y150279D01* +X899177Y150375D01* +X899191Y150471D01* +X899208Y150566D01* +X899230Y150660D01* +X899255Y150753D01* +X899283Y150846D01* +X899316Y150937D01* +X899352Y151026D01* +X899392Y151114D01* +X899435Y151201D01* +X899481Y151286D01* +X899531Y151368D01* +X899585Y151449D01* +X899641Y151527D01* +X899701Y151603D01* +X899763Y151677D01* +X899829Y151748D01* +X899897Y151816D01* +X899968Y151882D01* +X900042Y151944D01* +X900118Y152004D01* +X900196Y152060D01* +X900277Y152114D01* +X900360Y152164D01* +X900444Y152210D01* +X900531Y152253D01* +X900619Y152293D01* +X900708Y152329D01* +X900799Y152362D01* +X900892Y152390D01* +X900985Y152415D01* +X901079Y152437D01* +X901174Y152454D01* +X901270Y152468D01* +X901366Y152477D01* +X901462Y152483D01* +X901559Y152485D01* +X901656Y152483D01* +X901752Y152477D01* +X901848Y152468D01* +X901944Y152454D01* +X902039Y152437D01* +X902133Y152415D01* +X902226Y152390D01* +X902319Y152362D01* +X902410Y152329D01* +X902499Y152293D01* +X902587Y152253D01* +X902674Y152210D01* +X902759Y152164D01* +X902841Y152114D01* +X902922Y152060D01* +X903000Y152004D01* +X903076Y151944D01* +X903150Y151882D01* +X903221Y151816D01* +X903289Y151748D01* +X903355Y151677D01* +X903417Y151603D01* +X903477Y151527D01* +X903533Y151449D01* +X903587Y151368D01* +X903637Y151286D01* +X903683Y151201D01* +X903726Y151114D01* +X903766Y151026D01* +X903802Y150937D01* +X903835Y150846D01* +X903863Y150753D01* +X903888Y150660D01* +X903910Y150566D01* +X903927Y150471D01* +X903941Y150375D01* +X903950Y150279D01* +X903956Y150183D01* +X903958Y150086D01* +X903958Y147687D01* +X903958Y150566D02* +X907796Y152485D01* +X901079Y156746D02* +X899160Y159145D01* +X907796Y159145D01* +X907796Y156746D02* +X907796Y161544D01* +X902998Y165890D02* +X902998Y168769D01* +X903000Y168855D01* +X903006Y168941D01* +X903015Y169027D01* +X903029Y169112D01* +X903046Y169196D01* +X903067Y169280D01* +X903092Y169362D01* +X903120Y169443D01* +X903152Y169523D01* +X903188Y169602D01* +X903227Y169678D01* +X903270Y169753D01* +X903315Y169826D01* +X903365Y169897D01* +X903417Y169965D01* +X903472Y170032D01* +X903530Y170095D01* +X903591Y170156D01* +X903654Y170214D01* +X903721Y170269D01* +X903789Y170322D01* +X903860Y170371D01* +X903933Y170416D01* +X904008Y170459D01* +X904084Y170498D01* +X904163Y170534D01* +X904243Y170566D01* +X904324Y170594D01* +X904407Y170619D01* +X904490Y170640D01* +X904574Y170657D01* +X904659Y170671D01* +X904745Y170680D01* +X904831Y170686D01* +X904917Y170688D01* +X905397Y170688D01* +X905494Y170686D01* +X905590Y170680D01* +X905686Y170671D01* +X905782Y170657D01* +X905877Y170640D01* +X905971Y170618D01* +X906064Y170593D01* +X906157Y170565D01* +X906248Y170532D01* +X906337Y170496D01* +X906425Y170456D01* +X906512Y170413D01* +X906597Y170367D01* +X906679Y170317D01* +X906760Y170263D01* +X906838Y170207D01* +X906914Y170147D01* +X906988Y170085D01* +X907059Y170019D01* +X907127Y169951D01* +X907193Y169880D01* +X907255Y169806D01* +X907315Y169730D01* +X907371Y169652D01* +X907425Y169571D01* +X907475Y169488D01* +X907521Y169404D01* +X907564Y169317D01* +X907604Y169229D01* +X907640Y169140D01* +X907673Y169049D01* +X907701Y168956D01* +X907726Y168863D01* +X907748Y168769D01* +X907765Y168674D01* +X907779Y168578D01* +X907788Y168482D01* +X907794Y168386D01* +X907796Y168289D01* +X907794Y168192D01* +X907788Y168096D01* +X907779Y168000D01* +X907765Y167904D01* +X907748Y167809D01* +X907726Y167715D01* +X907701Y167622D01* +X907673Y167529D01* +X907640Y167438D01* +X907604Y167349D01* +X907564Y167261D01* +X907521Y167174D01* +X907475Y167090D01* +X907425Y167007D01* +X907371Y166926D01* +X907315Y166848D01* +X907255Y166772D01* +X907193Y166698D01* +X907127Y166627D01* +X907059Y166559D01* +X906988Y166493D01* +X906914Y166431D01* +X906838Y166371D01* +X906760Y166315D01* +X906679Y166261D01* +X906597Y166211D01* +X906512Y166165D01* +X906425Y166122D01* +X906337Y166082D01* +X906248Y166046D01* +X906157Y166013D01* +X906064Y165985D01* +X905971Y165960D01* +X905877Y165938D01* +X905782Y165921D01* +X905686Y165907D01* +X905590Y165898D01* +X905494Y165892D01* +X905397Y165890D01* +X902998Y165890D01* +X902998Y165891D02* +X902875Y165893D01* +X902752Y165899D01* +X902629Y165909D01* +X902507Y165923D01* +X902385Y165940D01* +X902264Y165962D01* +X902144Y165987D01* +X902024Y166017D01* +X901906Y166050D01* +X901789Y166087D01* +X901672Y166127D01* +X901558Y166171D01* +X901444Y166219D01* +X901333Y166271D01* +X901223Y166326D01* +X901115Y166385D01* +X901008Y166447D01* +X900904Y166512D01* +X900802Y166581D01* +X900702Y166653D01* +X900605Y166728D01* +X900510Y166807D01* +X900418Y166888D01* +X900328Y166972D01* +X900241Y167059D01* +X900157Y167149D01* +X900076Y167241D01* +X899997Y167336D01* +X899922Y167433D01* +X899850Y167533D01* +X899781Y167635D01* +X899716Y167739D01* +X899654Y167846D01* +X899595Y167954D01* +X899540Y168064D01* +X899488Y168175D01* +X899441Y168289D01* +X899396Y168403D01* +X899356Y168520D01* +X899319Y168637D01* +X899286Y168755D01* +X899256Y168875D01* +X899231Y168995D01* +X899209Y169116D01* +X899192Y169238D01* +X899178Y169360D01* +X899168Y169483D01* +X899162Y169606D01* +X899160Y169729D01* +D13* +X1176020Y104140D03* +D14* +X1180084Y68185D02* +X1171448Y68185D01* +X1171448Y70584D01* +X1171450Y70681D01* +X1171456Y70777D01* +X1171465Y70873D01* +X1171479Y70969D01* +X1171496Y71064D01* +X1171518Y71158D01* +X1171543Y71251D01* +X1171571Y71344D01* +X1171604Y71435D01* +X1171640Y71524D01* +X1171680Y71612D01* +X1171723Y71699D01* +X1171769Y71784D01* +X1171819Y71866D01* +X1171873Y71947D01* +X1171929Y72025D01* +X1171989Y72101D01* +X1172051Y72175D01* +X1172117Y72246D01* +X1172185Y72314D01* +X1172256Y72380D01* +X1172330Y72442D01* +X1172406Y72502D01* +X1172484Y72558D01* +X1172565Y72612D01* +X1172648Y72662D01* +X1172732Y72708D01* +X1172819Y72751D01* +X1172907Y72791D01* +X1172996Y72827D01* +X1173087Y72860D01* +X1173180Y72888D01* +X1173273Y72913D01* +X1173367Y72935D01* +X1173462Y72952D01* +X1173558Y72966D01* +X1173654Y72975D01* +X1173750Y72981D01* +X1173847Y72983D01* +X1173944Y72981D01* +X1174040Y72975D01* +X1174136Y72966D01* +X1174232Y72952D01* +X1174327Y72935D01* +X1174421Y72913D01* +X1174514Y72888D01* +X1174607Y72860D01* +X1174698Y72827D01* +X1174787Y72791D01* +X1174875Y72751D01* +X1174962Y72708D01* +X1175047Y72662D01* +X1175129Y72612D01* +X1175210Y72558D01* +X1175288Y72502D01* +X1175364Y72442D01* +X1175438Y72380D01* +X1175509Y72314D01* +X1175577Y72246D01* +X1175643Y72175D01* +X1175705Y72101D01* +X1175765Y72025D01* +X1175821Y71947D01* +X1175875Y71866D01* +X1175925Y71784D01* +X1175971Y71699D01* +X1176014Y71612D01* +X1176054Y71524D01* +X1176090Y71435D01* +X1176123Y71344D01* +X1176151Y71251D01* +X1176176Y71158D01* +X1176198Y71064D01* +X1176215Y70969D01* +X1176229Y70873D01* +X1176238Y70777D01* +X1176244Y70681D01* +X1176246Y70584D01* +X1176246Y68185D01* +X1176246Y71064D02* +X1180084Y72983D01* +X1173367Y77244D02* +X1171448Y79643D01* +X1180084Y79643D01* +X1180084Y77244D02* +X1180084Y82042D01* +X1175766Y86388D02* +X1175596Y86390D01* +X1175426Y86396D01* +X1175257Y86406D01* +X1175087Y86420D01* +X1174918Y86439D01* +X1174750Y86461D01* +X1174582Y86487D01* +X1174415Y86517D01* +X1174249Y86552D01* +X1174083Y86590D01* +X1173918Y86632D01* +X1173755Y86678D01* +X1173593Y86728D01* +X1173431Y86782D01* +X1173272Y86839D01* +X1173113Y86901D01* +X1172956Y86966D01* +X1172801Y87035D01* +X1172647Y87108D01* +X1172571Y87136D01* +X1172496Y87168D01* +X1172422Y87203D01* +X1172350Y87241D01* +X1172280Y87283D01* +X1172212Y87328D01* +X1172146Y87376D01* +X1172082Y87427D01* +X1172021Y87481D01* +X1171962Y87537D01* +X1171906Y87597D01* +X1171853Y87658D01* +X1171803Y87722D01* +X1171755Y87789D01* +X1171711Y87857D01* +X1171670Y87928D01* +X1171632Y88000D01* +X1171598Y88074D01* +X1171567Y88149D01* +X1171539Y88226D01* +X1171515Y88304D01* +X1171495Y88383D01* +X1171478Y88463D01* +X1171465Y88543D01* +X1171455Y88624D01* +X1171450Y88705D01* +X1171448Y88787D01* +X1171450Y88869D01* +X1171455Y88950D01* +X1171465Y89031D01* +X1171478Y89111D01* +X1171495Y89191D01* +X1171515Y89270D01* +X1171539Y89348D01* +X1171567Y89425D01* +X1171598Y89500D01* +X1171632Y89574D01* +X1171670Y89646D01* +X1171711Y89717D01* +X1171755Y89785D01* +X1171803Y89852D01* +X1171853Y89916D01* +X1171906Y89977D01* +X1171962Y90037D01* +X1172021Y90093D01* +X1172082Y90147D01* +X1172146Y90198D01* +X1172212Y90246D01* +X1172280Y90291D01* +X1172350Y90333D01* +X1172422Y90371D01* +X1172496Y90406D01* +X1172571Y90438D01* +X1172647Y90466D01* +X1172801Y90539D01* +X1172956Y90608D01* +X1173113Y90673D01* +X1173272Y90735D01* +X1173431Y90792D01* +X1173593Y90846D01* +X1173755Y90896D01* +X1173918Y90942D01* +X1174083Y90984D01* +X1174249Y91022D01* +X1174415Y91057D01* +X1174582Y91087D01* +X1174750Y91113D01* +X1174918Y91135D01* +X1175087Y91154D01* +X1175257Y91168D01* +X1175426Y91178D01* +X1175596Y91184D01* +X1175766Y91186D01* +X1175766Y86388D02* +X1175936Y86390D01* +X1176106Y86396D01* +X1176275Y86406D01* +X1176445Y86420D01* +X1176614Y86439D01* +X1176782Y86461D01* +X1176950Y86487D01* +X1177117Y86517D01* +X1177283Y86552D01* +X1177449Y86590D01* +X1177614Y86632D01* +X1177777Y86678D01* +X1177939Y86728D01* +X1178101Y86782D01* +X1178260Y86839D01* +X1178419Y86901D01* +X1178576Y86966D01* +X1178731Y87035D01* +X1178885Y87108D01* +X1178961Y87136D01* +X1179036Y87168D01* +X1179110Y87203D01* +X1179182Y87241D01* +X1179252Y87283D01* +X1179320Y87328D01* +X1179386Y87376D01* +X1179450Y87427D01* +X1179511Y87481D01* +X1179570Y87537D01* +X1179626Y87597D01* +X1179679Y87658D01* +X1179729Y87722D01* +X1179777Y87789D01* +X1179821Y87857D01* +X1179862Y87928D01* +X1179900Y88000D01* +X1179934Y88074D01* +X1179965Y88149D01* +X1179993Y88226D01* +X1180017Y88304D01* +X1180037Y88383D01* +X1180054Y88463D01* +X1180067Y88543D01* +X1180077Y88624D01* +X1180082Y88705D01* +X1180084Y88787D01* +X1178885Y90466D02* +X1178731Y90539D01* +X1178576Y90608D01* +X1178419Y90673D01* +X1178260Y90735D01* +X1178101Y90792D01* +X1177939Y90846D01* +X1177777Y90896D01* +X1177614Y90942D01* +X1177449Y90984D01* +X1177283Y91022D01* +X1177117Y91057D01* +X1176950Y91087D01* +X1176782Y91113D01* +X1176614Y91135D01* +X1176445Y91154D01* +X1176275Y91168D01* +X1176106Y91178D01* +X1175936Y91184D01* +X1175766Y91186D01* +X1178885Y90466D02* +X1178961Y90438D01* +X1179036Y90406D01* +X1179110Y90371D01* +X1179182Y90333D01* +X1179252Y90291D01* +X1179320Y90246D01* +X1179386Y90198D01* +X1179450Y90147D01* +X1179511Y90093D01* +X1179570Y90037D01* +X1179626Y89977D01* +X1179679Y89916D01* +X1179729Y89852D01* +X1179777Y89785D01* +X1179821Y89717D01* +X1179862Y89646D01* +X1179900Y89574D01* +X1179934Y89500D01* +X1179965Y89425D01* +X1179993Y89348D01* +X1180017Y89270D01* +X1180037Y89191D01* +X1180054Y89111D01* +X1180067Y89031D01* +X1180077Y88950D01* +X1180082Y88869D01* +X1180084Y88787D01* +X1178165Y86868D02* +X1173367Y90706D01* +D17* +X1026160Y139700D03* +D14* +X992745Y143510D02* +X992745Y134874D01* +X992745Y143510D02* +X995144Y143510D01* +X995241Y143508D01* +X995337Y143502D01* +X995433Y143493D01* +X995529Y143479D01* +X995624Y143462D01* +X995718Y143440D01* +X995811Y143415D01* +X995904Y143387D01* +X995995Y143354D01* +X996084Y143318D01* +X996172Y143278D01* +X996259Y143235D01* +X996344Y143189D01* +X996426Y143139D01* +X996507Y143085D01* +X996585Y143029D01* +X996661Y142969D01* +X996735Y142907D01* +X996806Y142841D01* +X996874Y142773D01* +X996940Y142702D01* +X997002Y142628D01* +X997062Y142552D01* +X997118Y142474D01* +X997172Y142393D01* +X997222Y142310D01* +X997268Y142226D01* +X997311Y142139D01* +X997351Y142051D01* +X997387Y141962D01* +X997420Y141871D01* +X997448Y141778D01* +X997473Y141685D01* +X997495Y141591D01* +X997512Y141496D01* +X997526Y141400D01* +X997535Y141304D01* +X997541Y141208D01* +X997543Y141111D01* +X997541Y141014D01* +X997535Y140918D01* +X997526Y140822D01* +X997512Y140726D01* +X997495Y140631D01* +X997473Y140537D01* +X997448Y140444D01* +X997420Y140351D01* +X997387Y140260D01* +X997351Y140171D01* +X997311Y140083D01* +X997268Y139996D01* +X997222Y139912D01* +X997172Y139829D01* +X997118Y139748D01* +X997062Y139670D01* +X997002Y139594D01* +X996940Y139520D01* +X996874Y139449D01* +X996806Y139381D01* +X996735Y139315D01* +X996661Y139253D01* +X996585Y139193D01* +X996507Y139137D01* +X996426Y139083D01* +X996344Y139033D01* +X996259Y138987D01* +X996172Y138944D01* +X996084Y138904D01* +X995995Y138868D01* +X995904Y138835D01* +X995811Y138807D01* +X995718Y138782D01* +X995624Y138760D01* +X995529Y138743D01* +X995433Y138729D01* +X995337Y138720D01* +X995241Y138714D01* +X995144Y138712D01* +X992745Y138712D01* +X995624Y138712D02* +X997543Y134874D01* +X1001804Y141591D02* +X1004203Y143510D01* +X1004203Y134874D01* +X1001804Y134874D02* +X1006602Y134874D01* +X1010948Y141591D02* +X1013347Y143510D01* +X1013347Y134874D01* +X1010948Y134874D02* +X1015746Y134874D01* +D17* +X972820Y254000D03* +D14* +X962152Y248158D02* +X962152Y239522D01* +X962152Y248158D02* +X964551Y248158D01* +X964648Y248156D01* +X964744Y248150D01* +X964840Y248141D01* +X964936Y248127D01* +X965031Y248110D01* +X965125Y248088D01* +X965218Y248063D01* +X965311Y248035D01* +X965402Y248002D01* +X965491Y247966D01* +X965579Y247926D01* +X965666Y247883D01* +X965751Y247837D01* +X965833Y247787D01* +X965914Y247733D01* +X965992Y247677D01* +X966068Y247617D01* +X966142Y247555D01* +X966213Y247489D01* +X966281Y247421D01* +X966347Y247350D01* +X966409Y247276D01* +X966469Y247200D01* +X966525Y247122D01* +X966579Y247041D01* +X966629Y246958D01* +X966675Y246874D01* +X966718Y246787D01* +X966758Y246699D01* +X966794Y246610D01* +X966827Y246519D01* +X966855Y246426D01* +X966880Y246333D01* +X966902Y246239D01* +X966919Y246144D01* +X966933Y246048D01* +X966942Y245952D01* +X966948Y245856D01* +X966950Y245759D01* +X966948Y245662D01* +X966942Y245566D01* +X966933Y245470D01* +X966919Y245374D01* +X966902Y245279D01* +X966880Y245185D01* +X966855Y245092D01* +X966827Y244999D01* +X966794Y244908D01* +X966758Y244819D01* +X966718Y244731D01* +X966675Y244644D01* +X966629Y244560D01* +X966579Y244477D01* +X966525Y244396D01* +X966469Y244318D01* +X966409Y244242D01* +X966347Y244168D01* +X966281Y244097D01* +X966213Y244029D01* +X966142Y243963D01* +X966068Y243901D01* +X965992Y243841D01* +X965914Y243785D01* +X965833Y243731D01* +X965751Y243681D01* +X965666Y243635D01* +X965579Y243592D01* +X965491Y243552D01* +X965402Y243516D01* +X965311Y243483D01* +X965218Y243455D01* +X965125Y243430D01* +X965031Y243408D01* +X964936Y243391D01* +X964840Y243377D01* +X964744Y243368D01* +X964648Y243362D01* +X964551Y243360D01* +X962152Y243360D01* +X965031Y243360D02* +X966950Y239522D01* +X971211Y246239D02* +X973610Y248158D01* +X973610Y239522D01* +X971211Y239522D02* +X976009Y239522D01* +X982994Y248158D02* +X983086Y248156D01* +X983177Y248150D01* +X983268Y248141D01* +X983359Y248127D01* +X983449Y248110D01* +X983538Y248088D01* +X983626Y248063D01* +X983713Y248035D01* +X983799Y248002D01* +X983883Y247966D01* +X983966Y247927D01* +X984047Y247884D01* +X984126Y247837D01* +X984203Y247788D01* +X984278Y247735D01* +X984350Y247679D01* +X984420Y247620D01* +X984488Y247558D01* +X984553Y247493D01* +X984615Y247425D01* +X984674Y247355D01* +X984730Y247283D01* +X984783Y247208D01* +X984832Y247131D01* +X984879Y247052D01* +X984922Y246971D01* +X984961Y246888D01* +X984997Y246804D01* +X985030Y246718D01* +X985058Y246631D01* +X985083Y246543D01* +X985105Y246454D01* +X985122Y246364D01* +X985136Y246273D01* +X985145Y246182D01* +X985151Y246091D01* +X985153Y245999D01* +X982994Y248158D02* +X982891Y248156D01* +X982789Y248150D01* +X982687Y248141D01* +X982585Y248128D01* +X982484Y248111D01* +X982383Y248090D01* +X982284Y248066D01* +X982185Y248037D01* +X982088Y248006D01* +X981991Y247970D01* +X981896Y247932D01* +X981803Y247889D01* +X981711Y247843D01* +X981621Y247794D01* +X981533Y247742D01* +X981446Y247686D01* +X981362Y247627D01* +X981281Y247566D01* +X981201Y247501D01* +X981124Y247433D01* +X981049Y247362D01* +X980978Y247289D01* +X980909Y247213D01* +X980842Y247135D01* +X980779Y247054D01* +X980719Y246971D01* +X980662Y246886D01* +X980608Y246799D01* +X980557Y246709D01* +X980510Y246618D01* +X980466Y246526D01* +X980425Y246431D01* +X980388Y246336D01* +X980355Y246239D01* +X984433Y244320D02* +X984500Y244386D01* +X984564Y244455D01* +X984625Y244526D01* +X984683Y244600D01* +X984738Y244676D01* +X984790Y244754D01* +X984839Y244834D01* +X984885Y244916D01* +X984927Y245000D01* +X984966Y245086D01* +X985001Y245173D01* +X985032Y245261D01* +X985060Y245351D01* +X985085Y245441D01* +X985106Y245533D01* +X985123Y245625D01* +X985136Y245718D01* +X985145Y245811D01* +X985151Y245905D01* +X985153Y245999D01* +X984433Y244320D02* +X980355Y239522D01* +X985153Y239522D01* +D13* +X1041400Y91440D03* +D14* +X1044702Y102362D02* +X1036066Y102362D01* +X1036066Y104761D01* +X1036068Y104858D01* +X1036074Y104954D01* +X1036083Y105050D01* +X1036097Y105146D01* +X1036114Y105241D01* +X1036136Y105335D01* +X1036161Y105428D01* +X1036189Y105521D01* +X1036222Y105612D01* +X1036258Y105701D01* +X1036298Y105789D01* +X1036341Y105876D01* +X1036387Y105961D01* +X1036437Y106043D01* +X1036491Y106124D01* +X1036547Y106202D01* +X1036607Y106278D01* +X1036669Y106352D01* +X1036735Y106423D01* +X1036803Y106491D01* +X1036874Y106557D01* +X1036948Y106619D01* +X1037024Y106679D01* +X1037102Y106735D01* +X1037183Y106789D01* +X1037266Y106839D01* +X1037350Y106885D01* +X1037437Y106928D01* +X1037525Y106968D01* +X1037614Y107004D01* +X1037705Y107037D01* +X1037798Y107065D01* +X1037891Y107090D01* +X1037985Y107112D01* +X1038080Y107129D01* +X1038176Y107143D01* +X1038272Y107152D01* +X1038368Y107158D01* +X1038465Y107160D01* +X1038562Y107158D01* +X1038658Y107152D01* +X1038754Y107143D01* +X1038850Y107129D01* +X1038945Y107112D01* +X1039039Y107090D01* +X1039132Y107065D01* +X1039225Y107037D01* +X1039316Y107004D01* +X1039405Y106968D01* +X1039493Y106928D01* +X1039580Y106885D01* +X1039665Y106839D01* +X1039747Y106789D01* +X1039828Y106735D01* +X1039906Y106679D01* +X1039982Y106619D01* +X1040056Y106557D01* +X1040127Y106491D01* +X1040195Y106423D01* +X1040261Y106352D01* +X1040323Y106278D01* +X1040383Y106202D01* +X1040439Y106124D01* +X1040493Y106043D01* +X1040543Y105961D01* +X1040589Y105876D01* +X1040632Y105789D01* +X1040672Y105701D01* +X1040708Y105612D01* +X1040741Y105521D01* +X1040769Y105428D01* +X1040794Y105335D01* +X1040816Y105241D01* +X1040833Y105146D01* +X1040847Y105050D01* +X1040856Y104954D01* +X1040862Y104858D01* +X1040864Y104761D01* +X1040864Y102362D01* +X1040864Y105241D02* +X1044702Y107160D01* +X1037985Y111421D02* +X1036066Y113820D01* +X1044702Y113820D01* +X1044702Y111421D02* +X1044702Y116219D01* +X1042783Y120565D02* +X1036066Y122484D01* +X1042783Y120565D02* +X1042783Y125363D01* +X1040864Y123924D02* +X1044702Y123924D01* +D17* +X434340Y210820D03* +D14* +X399401Y209042D02* +X399401Y217678D01* +X401800Y217678D01* +X401897Y217676D01* +X401993Y217670D01* +X402089Y217661D01* +X402185Y217647D01* +X402280Y217630D01* +X402374Y217608D01* +X402467Y217583D01* +X402560Y217555D01* +X402651Y217522D01* +X402740Y217486D01* +X402828Y217446D01* +X402915Y217403D01* +X403000Y217357D01* +X403082Y217307D01* +X403163Y217253D01* +X403241Y217197D01* +X403317Y217137D01* +X403391Y217075D01* +X403462Y217009D01* +X403530Y216941D01* +X403596Y216870D01* +X403658Y216796D01* +X403718Y216720D01* +X403774Y216642D01* +X403828Y216561D01* +X403878Y216478D01* +X403924Y216394D01* +X403967Y216307D01* +X404007Y216219D01* +X404043Y216130D01* +X404076Y216039D01* +X404104Y215946D01* +X404129Y215853D01* +X404151Y215759D01* +X404168Y215664D01* +X404182Y215568D01* +X404191Y215472D01* +X404197Y215376D01* +X404199Y215279D01* +X404197Y215182D01* +X404191Y215086D01* +X404182Y214990D01* +X404168Y214894D01* +X404151Y214799D01* +X404129Y214705D01* +X404104Y214612D01* +X404076Y214519D01* +X404043Y214428D01* +X404007Y214339D01* +X403967Y214251D01* +X403924Y214164D01* +X403878Y214080D01* +X403828Y213997D01* +X403774Y213916D01* +X403718Y213838D01* +X403658Y213762D01* +X403596Y213688D01* +X403530Y213617D01* +X403462Y213549D01* +X403391Y213483D01* +X403317Y213421D01* +X403241Y213361D01* +X403163Y213305D01* +X403082Y213251D01* +X403000Y213201D01* +X402915Y213155D01* +X402828Y213112D01* +X402740Y213072D01* +X402651Y213036D01* +X402560Y213003D01* +X402467Y212975D01* +X402374Y212950D01* +X402280Y212928D01* +X402185Y212911D01* +X402089Y212897D01* +X401993Y212888D01* +X401897Y212882D01* +X401800Y212880D01* +X399401Y212880D01* +X402280Y212880D02* +X404199Y209042D01* +X408460Y209042D02* +X410859Y209042D01* +X410956Y209044D01* +X411052Y209050D01* +X411148Y209059D01* +X411244Y209073D01* +X411339Y209090D01* +X411433Y209112D01* +X411526Y209137D01* +X411619Y209165D01* +X411710Y209198D01* +X411799Y209234D01* +X411887Y209274D01* +X411974Y209317D01* +X412059Y209363D01* +X412141Y209413D01* +X412222Y209467D01* +X412300Y209523D01* +X412376Y209583D01* +X412450Y209645D01* +X412521Y209711D01* +X412589Y209779D01* +X412655Y209850D01* +X412717Y209924D01* +X412777Y210000D01* +X412833Y210078D01* +X412887Y210159D01* +X412937Y210242D01* +X412983Y210326D01* +X413026Y210413D01* +X413066Y210501D01* +X413102Y210590D01* +X413135Y210681D01* +X413163Y210774D01* +X413188Y210867D01* +X413210Y210961D01* +X413227Y211056D01* +X413241Y211152D01* +X413250Y211248D01* +X413256Y211344D01* +X413258Y211441D01* +X413256Y211538D01* +X413250Y211634D01* +X413241Y211730D01* +X413227Y211826D01* +X413210Y211921D01* +X413188Y212015D01* +X413163Y212108D01* +X413135Y212201D01* +X413102Y212292D01* +X413066Y212381D01* +X413026Y212469D01* +X412983Y212556D01* +X412937Y212640D01* +X412887Y212723D01* +X412833Y212804D01* +X412777Y212882D01* +X412717Y212958D01* +X412655Y213032D01* +X412589Y213103D01* +X412521Y213171D01* +X412450Y213237D01* +X412376Y213299D01* +X412300Y213359D01* +X412222Y213415D01* +X412141Y213469D01* +X412059Y213519D01* +X411974Y213565D01* +X411887Y213608D01* +X411799Y213648D01* +X411710Y213684D01* +X411619Y213717D01* +X411526Y213745D01* +X411433Y213770D01* +X411339Y213792D01* +X411244Y213809D01* +X411148Y213823D01* +X411052Y213832D01* +X410956Y213838D01* +X410859Y213840D01* +X411339Y217678D02* +X408460Y217678D01* +X411339Y217678D02* +X411425Y217676D01* +X411511Y217670D01* +X411597Y217661D01* +X411682Y217647D01* +X411766Y217630D01* +X411850Y217609D01* +X411932Y217584D01* +X412013Y217556D01* +X412093Y217524D01* +X412172Y217488D01* +X412248Y217449D01* +X412323Y217406D01* +X412396Y217361D01* +X412467Y217312D01* +X412535Y217259D01* +X412602Y217204D01* +X412665Y217146D01* +X412726Y217085D01* +X412784Y217022D01* +X412839Y216955D01* +X412892Y216887D01* +X412941Y216816D01* +X412986Y216743D01* +X413029Y216668D01* +X413068Y216592D01* +X413104Y216513D01* +X413136Y216433D01* +X413164Y216352D01* +X413189Y216270D01* +X413210Y216186D01* +X413227Y216102D01* +X413241Y216017D01* +X413250Y215931D01* +X413256Y215845D01* +X413258Y215759D01* +X413256Y215673D01* +X413250Y215587D01* +X413241Y215501D01* +X413227Y215416D01* +X413210Y215332D01* +X413189Y215248D01* +X413164Y215166D01* +X413136Y215085D01* +X413104Y215005D01* +X413068Y214926D01* +X413029Y214850D01* +X412986Y214775D01* +X412941Y214702D01* +X412892Y214631D01* +X412839Y214563D01* +X412784Y214496D01* +X412726Y214433D01* +X412665Y214372D01* +X412602Y214314D01* +X412535Y214259D01* +X412467Y214206D01* +X412396Y214157D01* +X412323Y214112D01* +X412248Y214069D01* +X412172Y214030D01* +X412093Y213994D01* +X412013Y213962D01* +X411932Y213934D01* +X411850Y213909D01* +X411766Y213888D01* +X411682Y213871D01* +X411597Y213857D01* +X411511Y213848D01* +X411425Y213842D01* +X411339Y213840D01* +X409420Y213840D01* +X419523Y212880D02* +X422402Y212880D01* +X419523Y212880D02* +X419437Y212882D01* +X419351Y212888D01* +X419265Y212897D01* +X419180Y212911D01* +X419096Y212928D01* +X419012Y212949D01* +X418930Y212974D01* +X418849Y213002D01* +X418769Y213034D01* +X418690Y213070D01* +X418614Y213109D01* +X418539Y213152D01* +X418466Y213197D01* +X418395Y213246D01* +X418327Y213299D01* +X418260Y213354D01* +X418197Y213412D01* +X418136Y213473D01* +X418078Y213536D01* +X418023Y213603D01* +X417970Y213671D01* +X417921Y213742D01* +X417876Y213815D01* +X417833Y213890D01* +X417794Y213966D01* +X417758Y214045D01* +X417726Y214125D01* +X417698Y214206D01* +X417673Y214288D01* +X417652Y214372D01* +X417635Y214456D01* +X417621Y214541D01* +X417612Y214627D01* +X417606Y214713D01* +X417604Y214799D01* +X417604Y215279D01* +X417606Y215376D01* +X417612Y215472D01* +X417621Y215568D01* +X417635Y215664D01* +X417652Y215759D01* +X417674Y215853D01* +X417699Y215946D01* +X417727Y216039D01* +X417760Y216130D01* +X417796Y216219D01* +X417836Y216307D01* +X417879Y216394D01* +X417925Y216479D01* +X417975Y216561D01* +X418029Y216642D01* +X418085Y216720D01* +X418145Y216796D01* +X418207Y216870D01* +X418273Y216941D01* +X418341Y217009D01* +X418412Y217075D01* +X418486Y217137D01* +X418562Y217197D01* +X418640Y217253D01* +X418721Y217307D01* +X418804Y217357D01* +X418888Y217403D01* +X418975Y217446D01* +X419063Y217486D01* +X419152Y217522D01* +X419243Y217555D01* +X419336Y217583D01* +X419429Y217608D01* +X419523Y217630D01* +X419618Y217647D01* +X419714Y217661D01* +X419810Y217670D01* +X419906Y217676D01* +X420003Y217678D01* +X420100Y217676D01* +X420196Y217670D01* +X420292Y217661D01* +X420388Y217647D01* +X420483Y217630D01* +X420577Y217608D01* +X420670Y217583D01* +X420763Y217555D01* +X420854Y217522D01* +X420943Y217486D01* +X421031Y217446D01* +X421118Y217403D01* +X421203Y217357D01* +X421285Y217307D01* +X421366Y217253D01* +X421444Y217197D01* +X421520Y217137D01* +X421594Y217075D01* +X421665Y217009D01* +X421733Y216941D01* +X421799Y216870D01* +X421861Y216796D01* +X421921Y216720D01* +X421977Y216642D01* +X422031Y216561D01* +X422081Y216479D01* +X422127Y216394D01* +X422170Y216307D01* +X422210Y216219D01* +X422246Y216130D01* +X422279Y216039D01* +X422307Y215946D01* +X422332Y215853D01* +X422354Y215759D01* +X422371Y215664D01* +X422385Y215568D01* +X422394Y215472D01* +X422400Y215376D01* +X422402Y215279D01* +X422402Y212880D01* +X422400Y212757D01* +X422394Y212634D01* +X422384Y212511D01* +X422370Y212389D01* +X422353Y212267D01* +X422331Y212146D01* +X422306Y212026D01* +X422276Y211906D01* +X422243Y211788D01* +X422206Y211671D01* +X422166Y211554D01* +X422122Y211440D01* +X422074Y211326D01* +X422022Y211215D01* +X421967Y211105D01* +X421908Y210997D01* +X421846Y210890D01* +X421781Y210786D01* +X421712Y210684D01* +X421640Y210584D01* +X421565Y210487D01* +X421486Y210392D01* +X421405Y210300D01* +X421321Y210210D01* +X421234Y210123D01* +X421144Y210039D01* +X421052Y209958D01* +X420957Y209879D01* +X420860Y209804D01* +X420760Y209732D01* +X420658Y209663D01* +X420554Y209598D01* +X420447Y209536D01* +X420339Y209477D01* +X420229Y209422D01* +X420118Y209370D01* +X420004Y209323D01* +X419890Y209278D01* +X419773Y209238D01* +X419656Y209201D01* +X419538Y209168D01* +X419418Y209138D01* +X419298Y209113D01* +X419177Y209091D01* +X419055Y209074D01* +X418933Y209060D01* +X418810Y209050D01* +X418687Y209044D01* +X418564Y209042D01* +D17* +X434340Y175260D03* +D14* +X399147Y175006D02* +X399147Y166370D01* +X399147Y175006D02* +X401546Y175006D01* +X401643Y175004D01* +X401739Y174998D01* +X401835Y174989D01* +X401931Y174975D01* +X402026Y174958D01* +X402120Y174936D01* +X402213Y174911D01* +X402306Y174883D01* +X402397Y174850D01* +X402486Y174814D01* +X402574Y174774D01* +X402661Y174731D01* +X402746Y174685D01* +X402828Y174635D01* +X402909Y174581D01* +X402987Y174525D01* +X403063Y174465D01* +X403137Y174403D01* +X403208Y174337D01* +X403276Y174269D01* +X403342Y174198D01* +X403404Y174124D01* +X403464Y174048D01* +X403520Y173970D01* +X403574Y173889D01* +X403624Y173806D01* +X403670Y173722D01* +X403713Y173635D01* +X403753Y173547D01* +X403789Y173458D01* +X403822Y173367D01* +X403850Y173274D01* +X403875Y173181D01* +X403897Y173087D01* +X403914Y172992D01* +X403928Y172896D01* +X403937Y172800D01* +X403943Y172704D01* +X403945Y172607D01* +X403943Y172510D01* +X403937Y172414D01* +X403928Y172318D01* +X403914Y172222D01* +X403897Y172127D01* +X403875Y172033D01* +X403850Y171940D01* +X403822Y171847D01* +X403789Y171756D01* +X403753Y171667D01* +X403713Y171579D01* +X403670Y171492D01* +X403624Y171408D01* +X403574Y171325D01* +X403520Y171244D01* +X403464Y171166D01* +X403404Y171090D01* +X403342Y171016D01* +X403276Y170945D01* +X403208Y170877D01* +X403137Y170811D01* +X403063Y170749D01* +X402987Y170689D01* +X402909Y170633D01* +X402828Y170579D01* +X402746Y170529D01* +X402661Y170483D01* +X402574Y170440D01* +X402486Y170400D01* +X402397Y170364D01* +X402306Y170331D01* +X402213Y170303D01* +X402120Y170278D01* +X402026Y170256D01* +X401931Y170239D01* +X401835Y170225D01* +X401739Y170216D01* +X401643Y170210D01* +X401546Y170208D01* +X399147Y170208D01* +X402026Y170208D02* +X403945Y166370D01* +X408206Y166370D02* +X410605Y166370D01* +X410702Y166372D01* +X410798Y166378D01* +X410894Y166387D01* +X410990Y166401D01* +X411085Y166418D01* +X411179Y166440D01* +X411272Y166465D01* +X411365Y166493D01* +X411456Y166526D01* +X411545Y166562D01* +X411633Y166602D01* +X411720Y166645D01* +X411805Y166691D01* +X411887Y166741D01* +X411968Y166795D01* +X412046Y166851D01* +X412122Y166911D01* +X412196Y166973D01* +X412267Y167039D01* +X412335Y167107D01* +X412401Y167178D01* +X412463Y167252D01* +X412523Y167328D01* +X412579Y167406D01* +X412633Y167487D01* +X412683Y167570D01* +X412729Y167654D01* +X412772Y167741D01* +X412812Y167829D01* +X412848Y167918D01* +X412881Y168009D01* +X412909Y168102D01* +X412934Y168195D01* +X412956Y168289D01* +X412973Y168384D01* +X412987Y168480D01* +X412996Y168576D01* +X413002Y168672D01* +X413004Y168769D01* +X413002Y168866D01* +X412996Y168962D01* +X412987Y169058D01* +X412973Y169154D01* +X412956Y169249D01* +X412934Y169343D01* +X412909Y169436D01* +X412881Y169529D01* +X412848Y169620D01* +X412812Y169709D01* +X412772Y169797D01* +X412729Y169884D01* +X412683Y169968D01* +X412633Y170051D01* +X412579Y170132D01* +X412523Y170210D01* +X412463Y170286D01* +X412401Y170360D01* +X412335Y170431D01* +X412267Y170499D01* +X412196Y170565D01* +X412122Y170627D01* +X412046Y170687D01* +X411968Y170743D01* +X411887Y170797D01* +X411805Y170847D01* +X411720Y170893D01* +X411633Y170936D01* +X411545Y170976D01* +X411456Y171012D01* +X411365Y171045D01* +X411272Y171073D01* +X411179Y171098D01* +X411085Y171120D01* +X410990Y171137D01* +X410894Y171151D01* +X410798Y171160D01* +X410702Y171166D01* +X410605Y171168D01* +X411085Y175006D02* +X408206Y175006D01* +X411085Y175006D02* +X411171Y175004D01* +X411257Y174998D01* +X411343Y174989D01* +X411428Y174975D01* +X411512Y174958D01* +X411596Y174937D01* +X411678Y174912D01* +X411759Y174884D01* +X411839Y174852D01* +X411918Y174816D01* +X411994Y174777D01* +X412069Y174734D01* +X412142Y174689D01* +X412213Y174640D01* +X412281Y174587D01* +X412348Y174532D01* +X412411Y174474D01* +X412472Y174413D01* +X412530Y174350D01* +X412585Y174283D01* +X412638Y174215D01* +X412687Y174144D01* +X412732Y174071D01* +X412775Y173996D01* +X412814Y173920D01* +X412850Y173841D01* +X412882Y173761D01* +X412910Y173680D01* +X412935Y173598D01* +X412956Y173514D01* +X412973Y173430D01* +X412987Y173345D01* +X412996Y173259D01* +X413002Y173173D01* +X413004Y173087D01* +X413002Y173001D01* +X412996Y172915D01* +X412987Y172829D01* +X412973Y172744D01* +X412956Y172660D01* +X412935Y172576D01* +X412910Y172494D01* +X412882Y172413D01* +X412850Y172333D01* +X412814Y172254D01* +X412775Y172178D01* +X412732Y172103D01* +X412687Y172030D01* +X412638Y171959D01* +X412585Y171891D01* +X412530Y171824D01* +X412472Y171761D01* +X412411Y171700D01* +X412348Y171642D01* +X412281Y171587D01* +X412213Y171534D01* +X412142Y171485D01* +X412069Y171440D01* +X411994Y171397D01* +X411918Y171358D01* +X411839Y171322D01* +X411759Y171290D01* +X411678Y171262D01* +X411596Y171237D01* +X411512Y171216D01* +X411428Y171199D01* +X411343Y171185D01* +X411257Y171176D01* +X411171Y171170D01* +X411085Y171168D01* +X409166Y171168D01* +X417350Y168769D02* +X417352Y168866D01* +X417358Y168962D01* +X417367Y169058D01* +X417381Y169154D01* +X417398Y169249D01* +X417420Y169343D01* +X417445Y169436D01* +X417473Y169529D01* +X417506Y169620D01* +X417542Y169709D01* +X417582Y169797D01* +X417625Y169884D01* +X417671Y169969D01* +X417721Y170051D01* +X417775Y170132D01* +X417831Y170210D01* +X417891Y170286D01* +X417953Y170360D01* +X418019Y170431D01* +X418087Y170499D01* +X418158Y170565D01* +X418232Y170627D01* +X418308Y170687D01* +X418386Y170743D01* +X418467Y170797D01* +X418550Y170847D01* +X418634Y170893D01* +X418721Y170936D01* +X418809Y170976D01* +X418898Y171012D01* +X418989Y171045D01* +X419082Y171073D01* +X419175Y171098D01* +X419269Y171120D01* +X419364Y171137D01* +X419460Y171151D01* +X419556Y171160D01* +X419652Y171166D01* +X419749Y171168D01* +X419846Y171166D01* +X419942Y171160D01* +X420038Y171151D01* +X420134Y171137D01* +X420229Y171120D01* +X420323Y171098D01* +X420416Y171073D01* +X420509Y171045D01* +X420600Y171012D01* +X420689Y170976D01* +X420777Y170936D01* +X420864Y170893D01* +X420949Y170847D01* +X421031Y170797D01* +X421112Y170743D01* +X421190Y170687D01* +X421266Y170627D01* +X421340Y170565D01* +X421411Y170499D01* +X421479Y170431D01* +X421545Y170360D01* +X421607Y170286D01* +X421667Y170210D01* +X421723Y170132D01* +X421777Y170051D01* +X421827Y169969D01* +X421873Y169884D01* +X421916Y169797D01* +X421956Y169709D01* +X421992Y169620D01* +X422025Y169529D01* +X422053Y169436D01* +X422078Y169343D01* +X422100Y169249D01* +X422117Y169154D01* +X422131Y169058D01* +X422140Y168962D01* +X422146Y168866D01* +X422148Y168769D01* +X422146Y168672D01* +X422140Y168576D01* +X422131Y168480D01* +X422117Y168384D01* +X422100Y168289D01* +X422078Y168195D01* +X422053Y168102D01* +X422025Y168009D01* +X421992Y167918D01* +X421956Y167829D01* +X421916Y167741D01* +X421873Y167654D01* +X421827Y167569D01* +X421777Y167487D01* +X421723Y167406D01* +X421667Y167328D01* +X421607Y167252D01* +X421545Y167178D01* +X421479Y167107D01* +X421411Y167039D01* +X421340Y166973D01* +X421266Y166911D01* +X421190Y166851D01* +X421112Y166795D01* +X421031Y166741D01* +X420949Y166691D01* +X420864Y166645D01* +X420777Y166602D01* +X420689Y166562D01* +X420600Y166526D01* +X420509Y166493D01* +X420416Y166465D01* +X420323Y166440D01* +X420229Y166418D01* +X420134Y166401D01* +X420038Y166387D01* +X419942Y166378D01* +X419846Y166372D01* +X419749Y166370D01* +X419652Y166372D01* +X419556Y166378D01* +X419460Y166387D01* +X419364Y166401D01* +X419269Y166418D01* +X419175Y166440D01* +X419082Y166465D01* +X418989Y166493D01* +X418898Y166526D01* +X418809Y166562D01* +X418721Y166602D01* +X418634Y166645D01* +X418550Y166691D01* +X418467Y166741D01* +X418386Y166795D01* +X418308Y166851D01* +X418232Y166911D01* +X418158Y166973D01* +X418087Y167039D01* +X418019Y167107D01* +X417953Y167178D01* +X417891Y167252D01* +X417831Y167328D01* +X417775Y167406D01* +X417721Y167487D01* +X417671Y167570D01* +X417625Y167654D01* +X417582Y167741D01* +X417542Y167829D01* +X417506Y167918D01* +X417473Y168009D01* +X417445Y168102D01* +X417420Y168195D01* +X417398Y168289D01* +X417381Y168384D01* +X417367Y168480D01* +X417358Y168576D01* +X417352Y168672D01* +X417350Y168769D01* +X417830Y173087D02* +X417832Y173173D01* +X417838Y173259D01* +X417847Y173345D01* +X417861Y173430D01* +X417878Y173514D01* +X417899Y173598D01* +X417924Y173680D01* +X417952Y173761D01* +X417984Y173841D01* +X418020Y173920D01* +X418059Y173996D01* +X418102Y174071D01* +X418147Y174144D01* +X418196Y174215D01* +X418249Y174283D01* +X418304Y174350D01* +X418362Y174413D01* +X418423Y174474D01* +X418486Y174532D01* +X418553Y174587D01* +X418621Y174640D01* +X418692Y174689D01* +X418765Y174734D01* +X418840Y174777D01* +X418916Y174816D01* +X418995Y174852D01* +X419075Y174884D01* +X419156Y174912D01* +X419238Y174937D01* +X419322Y174958D01* +X419406Y174975D01* +X419491Y174989D01* +X419577Y174998D01* +X419663Y175004D01* +X419749Y175006D01* +X419835Y175004D01* +X419921Y174998D01* +X420007Y174989D01* +X420092Y174975D01* +X420176Y174958D01* +X420260Y174937D01* +X420342Y174912D01* +X420423Y174884D01* +X420503Y174852D01* +X420582Y174816D01* +X420658Y174777D01* +X420733Y174734D01* +X420806Y174689D01* +X420877Y174640D01* +X420945Y174587D01* +X421012Y174532D01* +X421075Y174474D01* +X421136Y174413D01* +X421194Y174350D01* +X421249Y174283D01* +X421302Y174215D01* +X421351Y174144D01* +X421396Y174071D01* +X421439Y173996D01* +X421478Y173920D01* +X421514Y173841D01* +X421546Y173761D01* +X421574Y173680D01* +X421599Y173598D01* +X421620Y173514D01* +X421637Y173430D01* +X421651Y173345D01* +X421660Y173259D01* +X421666Y173173D01* +X421668Y173087D01* +X421666Y173001D01* +X421660Y172915D01* +X421651Y172829D01* +X421637Y172744D01* +X421620Y172660D01* +X421599Y172576D01* +X421574Y172494D01* +X421546Y172413D01* +X421514Y172333D01* +X421478Y172254D01* +X421439Y172178D01* +X421396Y172103D01* +X421351Y172030D01* +X421302Y171959D01* +X421249Y171891D01* +X421194Y171824D01* +X421136Y171761D01* +X421075Y171700D01* +X421012Y171642D01* +X420945Y171587D01* +X420877Y171534D01* +X420806Y171485D01* +X420733Y171440D01* +X420658Y171397D01* +X420582Y171358D01* +X420503Y171322D01* +X420423Y171290D01* +X420342Y171262D01* +X420260Y171237D01* +X420176Y171216D01* +X420092Y171199D01* +X420007Y171185D01* +X419921Y171176D01* +X419835Y171170D01* +X419749Y171168D01* +X419663Y171170D01* +X419577Y171176D01* +X419491Y171185D01* +X419406Y171199D01* +X419322Y171216D01* +X419238Y171237D01* +X419156Y171262D01* +X419075Y171290D01* +X418995Y171322D01* +X418916Y171358D01* +X418840Y171397D01* +X418765Y171440D01* +X418692Y171485D01* +X418621Y171534D01* +X418553Y171587D01* +X418486Y171642D01* +X418423Y171700D01* +X418362Y171761D01* +X418304Y171824D01* +X418249Y171891D01* +X418196Y171959D01* +X418147Y172030D01* +X418102Y172103D01* +X418059Y172178D01* +X418020Y172254D01* +X417984Y172333D01* +X417952Y172413D01* +X417924Y172494D01* +X417899Y172576D01* +X417878Y172660D01* +X417861Y172744D01* +X417847Y172829D01* +X417838Y172915D01* +X417832Y173001D01* +X417830Y173087D01* +D17* +X426720Y185420D03* +D14* +X392289Y188722D02* +X392289Y180086D01* +X392289Y188722D02* +X394688Y188722D01* +X394785Y188720D01* +X394881Y188714D01* +X394977Y188705D01* +X395073Y188691D01* +X395168Y188674D01* +X395262Y188652D01* +X395355Y188627D01* +X395448Y188599D01* +X395539Y188566D01* +X395628Y188530D01* +X395716Y188490D01* +X395803Y188447D01* +X395888Y188401D01* +X395970Y188351D01* +X396051Y188297D01* +X396129Y188241D01* +X396205Y188181D01* +X396279Y188119D01* +X396350Y188053D01* +X396418Y187985D01* +X396484Y187914D01* +X396546Y187840D01* +X396606Y187764D01* +X396662Y187686D01* +X396716Y187605D01* +X396766Y187522D01* +X396812Y187438D01* +X396855Y187351D01* +X396895Y187263D01* +X396931Y187174D01* +X396964Y187083D01* +X396992Y186990D01* +X397017Y186897D01* +X397039Y186803D01* +X397056Y186708D01* +X397070Y186612D01* +X397079Y186516D01* +X397085Y186420D01* +X397087Y186323D01* +X397085Y186226D01* +X397079Y186130D01* +X397070Y186034D01* +X397056Y185938D01* +X397039Y185843D01* +X397017Y185749D01* +X396992Y185656D01* +X396964Y185563D01* +X396931Y185472D01* +X396895Y185383D01* +X396855Y185295D01* +X396812Y185208D01* +X396766Y185124D01* +X396716Y185041D01* +X396662Y184960D01* +X396606Y184882D01* +X396546Y184806D01* +X396484Y184732D01* +X396418Y184661D01* +X396350Y184593D01* +X396279Y184527D01* +X396205Y184465D01* +X396129Y184405D01* +X396051Y184349D01* +X395970Y184295D01* +X395888Y184245D01* +X395803Y184199D01* +X395716Y184156D01* +X395628Y184116D01* +X395539Y184080D01* +X395448Y184047D01* +X395355Y184019D01* +X395262Y183994D01* +X395168Y183972D01* +X395073Y183955D01* +X394977Y183941D01* +X394881Y183932D01* +X394785Y183926D01* +X394688Y183924D01* +X392289Y183924D01* +X395168Y183924D02* +X397087Y180086D01* +X401348Y180086D02* +X403747Y180086D01* +X403844Y180088D01* +X403940Y180094D01* +X404036Y180103D01* +X404132Y180117D01* +X404227Y180134D01* +X404321Y180156D01* +X404414Y180181D01* +X404507Y180209D01* +X404598Y180242D01* +X404687Y180278D01* +X404775Y180318D01* +X404862Y180361D01* +X404947Y180407D01* +X405029Y180457D01* +X405110Y180511D01* +X405188Y180567D01* +X405264Y180627D01* +X405338Y180689D01* +X405409Y180755D01* +X405477Y180823D01* +X405543Y180894D01* +X405605Y180968D01* +X405665Y181044D01* +X405721Y181122D01* +X405775Y181203D01* +X405825Y181286D01* +X405871Y181370D01* +X405914Y181457D01* +X405954Y181545D01* +X405990Y181634D01* +X406023Y181725D01* +X406051Y181818D01* +X406076Y181911D01* +X406098Y182005D01* +X406115Y182100D01* +X406129Y182196D01* +X406138Y182292D01* +X406144Y182388D01* +X406146Y182485D01* +X406144Y182582D01* +X406138Y182678D01* +X406129Y182774D01* +X406115Y182870D01* +X406098Y182965D01* +X406076Y183059D01* +X406051Y183152D01* +X406023Y183245D01* +X405990Y183336D01* +X405954Y183425D01* +X405914Y183513D01* +X405871Y183600D01* +X405825Y183684D01* +X405775Y183767D01* +X405721Y183848D01* +X405665Y183926D01* +X405605Y184002D01* +X405543Y184076D01* +X405477Y184147D01* +X405409Y184215D01* +X405338Y184281D01* +X405264Y184343D01* +X405188Y184403D01* +X405110Y184459D01* +X405029Y184513D01* +X404947Y184563D01* +X404862Y184609D01* +X404775Y184652D01* +X404687Y184692D01* +X404598Y184728D01* +X404507Y184761D01* +X404414Y184789D01* +X404321Y184814D01* +X404227Y184836D01* +X404132Y184853D01* +X404036Y184867D01* +X403940Y184876D01* +X403844Y184882D01* +X403747Y184884D01* +X404227Y188722D02* +X401348Y188722D01* +X404227Y188722D02* +X404313Y188720D01* +X404399Y188714D01* +X404485Y188705D01* +X404570Y188691D01* +X404654Y188674D01* +X404738Y188653D01* +X404820Y188628D01* +X404901Y188600D01* +X404981Y188568D01* +X405060Y188532D01* +X405136Y188493D01* +X405211Y188450D01* +X405284Y188405D01* +X405355Y188356D01* +X405423Y188303D01* +X405490Y188248D01* +X405553Y188190D01* +X405614Y188129D01* +X405672Y188066D01* +X405727Y187999D01* +X405780Y187931D01* +X405829Y187860D01* +X405874Y187787D01* +X405917Y187712D01* +X405956Y187636D01* +X405992Y187557D01* +X406024Y187477D01* +X406052Y187396D01* +X406077Y187314D01* +X406098Y187230D01* +X406115Y187146D01* +X406129Y187061D01* +X406138Y186975D01* +X406144Y186889D01* +X406146Y186803D01* +X406144Y186717D01* +X406138Y186631D01* +X406129Y186545D01* +X406115Y186460D01* +X406098Y186376D01* +X406077Y186292D01* +X406052Y186210D01* +X406024Y186129D01* +X405992Y186049D01* +X405956Y185970D01* +X405917Y185894D01* +X405874Y185819D01* +X405829Y185746D01* +X405780Y185675D01* +X405727Y185607D01* +X405672Y185540D01* +X405614Y185477D01* +X405553Y185416D01* +X405490Y185358D01* +X405423Y185303D01* +X405355Y185250D01* +X405284Y185201D01* +X405211Y185156D01* +X405136Y185113D01* +X405060Y185074D01* +X404981Y185038D01* +X404901Y185006D01* +X404820Y184978D01* +X404738Y184953D01* +X404654Y184932D01* +X404570Y184915D01* +X404485Y184901D01* +X404399Y184892D01* +X404313Y184886D01* +X404227Y184884D01* +X402308Y184884D01* +X410492Y187762D02* +X410492Y188722D01* +X415290Y188722D01* +X412891Y180086D01* +D17* +X426720Y200660D03* +D14* +X392543Y203454D02* +X392543Y194818D01* +X392543Y203454D02* +X394942Y203454D01* +X395039Y203452D01* +X395135Y203446D01* +X395231Y203437D01* +X395327Y203423D01* +X395422Y203406D01* +X395516Y203384D01* +X395609Y203359D01* +X395702Y203331D01* +X395793Y203298D01* +X395882Y203262D01* +X395970Y203222D01* +X396057Y203179D01* +X396142Y203133D01* +X396224Y203083D01* +X396305Y203029D01* +X396383Y202973D01* +X396459Y202913D01* +X396533Y202851D01* +X396604Y202785D01* +X396672Y202717D01* +X396738Y202646D01* +X396800Y202572D01* +X396860Y202496D01* +X396916Y202418D01* +X396970Y202337D01* +X397020Y202254D01* +X397066Y202170D01* +X397109Y202083D01* +X397149Y201995D01* +X397185Y201906D01* +X397218Y201815D01* +X397246Y201722D01* +X397271Y201629D01* +X397293Y201535D01* +X397310Y201440D01* +X397324Y201344D01* +X397333Y201248D01* +X397339Y201152D01* +X397341Y201055D01* +X397339Y200958D01* +X397333Y200862D01* +X397324Y200766D01* +X397310Y200670D01* +X397293Y200575D01* +X397271Y200481D01* +X397246Y200388D01* +X397218Y200295D01* +X397185Y200204D01* +X397149Y200115D01* +X397109Y200027D01* +X397066Y199940D01* +X397020Y199856D01* +X396970Y199773D01* +X396916Y199692D01* +X396860Y199614D01* +X396800Y199538D01* +X396738Y199464D01* +X396672Y199393D01* +X396604Y199325D01* +X396533Y199259D01* +X396459Y199197D01* +X396383Y199137D01* +X396305Y199081D01* +X396224Y199027D01* +X396142Y198977D01* +X396057Y198931D01* +X395970Y198888D01* +X395882Y198848D01* +X395793Y198812D01* +X395702Y198779D01* +X395609Y198751D01* +X395516Y198726D01* +X395422Y198704D01* +X395327Y198687D01* +X395231Y198673D01* +X395135Y198664D01* +X395039Y198658D01* +X394942Y198656D01* +X392543Y198656D01* +X395422Y198656D02* +X397341Y194818D01* +X401602Y196737D02* +X403521Y203454D01* +X401602Y196737D02* +X406400Y196737D01* +X404961Y198656D02* +X404961Y194818D01* +X413385Y203454D02* +X413477Y203452D01* +X413568Y203446D01* +X413659Y203437D01* +X413750Y203423D01* +X413840Y203406D01* +X413929Y203384D01* +X414017Y203359D01* +X414104Y203331D01* +X414190Y203298D01* +X414274Y203262D01* +X414357Y203223D01* +X414438Y203180D01* +X414517Y203133D01* +X414594Y203084D01* +X414669Y203031D01* +X414741Y202975D01* +X414811Y202916D01* +X414879Y202854D01* +X414944Y202789D01* +X415006Y202721D01* +X415065Y202651D01* +X415121Y202579D01* +X415174Y202504D01* +X415223Y202427D01* +X415270Y202348D01* +X415313Y202267D01* +X415352Y202184D01* +X415388Y202100D01* +X415421Y202014D01* +X415449Y201927D01* +X415474Y201839D01* +X415496Y201750D01* +X415513Y201660D01* +X415527Y201569D01* +X415536Y201478D01* +X415542Y201387D01* +X415544Y201295D01* +X413385Y203454D02* +X413282Y203452D01* +X413180Y203446D01* +X413078Y203437D01* +X412976Y203424D01* +X412875Y203407D01* +X412774Y203386D01* +X412675Y203362D01* +X412576Y203333D01* +X412479Y203302D01* +X412382Y203266D01* +X412287Y203228D01* +X412194Y203185D01* +X412102Y203139D01* +X412012Y203090D01* +X411924Y203038D01* +X411837Y202982D01* +X411753Y202923D01* +X411672Y202862D01* +X411592Y202797D01* +X411515Y202729D01* +X411440Y202658D01* +X411369Y202585D01* +X411300Y202509D01* +X411233Y202431D01* +X411170Y202350D01* +X411110Y202267D01* +X411053Y202182D01* +X410999Y202095D01* +X410948Y202005D01* +X410901Y201914D01* +X410857Y201822D01* +X410816Y201727D01* +X410779Y201632D01* +X410746Y201535D01* +X414824Y199616D02* +X414891Y199682D01* +X414955Y199751D01* +X415016Y199822D01* +X415074Y199896D01* +X415129Y199972D01* +X415181Y200050D01* +X415230Y200130D01* +X415276Y200212D01* +X415318Y200296D01* +X415357Y200382D01* +X415392Y200469D01* +X415423Y200557D01* +X415451Y200647D01* +X415476Y200737D01* +X415497Y200829D01* +X415514Y200921D01* +X415527Y201014D01* +X415536Y201107D01* +X415542Y201201D01* +X415544Y201295D01* +X414824Y199616D02* +X410746Y194818D01* +X415544Y194818D01* +D17* +X533400Y203200D03* +D14* +X546354Y200152D02* +X546354Y208788D01* +X548753Y208788D01* +X548850Y208786D01* +X548946Y208780D01* +X549042Y208771D01* +X549138Y208757D01* +X549233Y208740D01* +X549327Y208718D01* +X549420Y208693D01* +X549513Y208665D01* +X549604Y208632D01* +X549693Y208596D01* +X549781Y208556D01* +X549868Y208513D01* +X549953Y208467D01* +X550035Y208417D01* +X550116Y208363D01* +X550194Y208307D01* +X550270Y208247D01* +X550344Y208185D01* +X550415Y208119D01* +X550483Y208051D01* +X550549Y207980D01* +X550611Y207906D01* +X550671Y207830D01* +X550727Y207752D01* +X550781Y207671D01* +X550831Y207588D01* +X550877Y207504D01* +X550920Y207417D01* +X550960Y207329D01* +X550996Y207240D01* +X551029Y207149D01* +X551057Y207056D01* +X551082Y206963D01* +X551104Y206869D01* +X551121Y206774D01* +X551135Y206678D01* +X551144Y206582D01* +X551150Y206486D01* +X551152Y206389D01* +X551150Y206292D01* +X551144Y206196D01* +X551135Y206100D01* +X551121Y206004D01* +X551104Y205909D01* +X551082Y205815D01* +X551057Y205722D01* +X551029Y205629D01* +X550996Y205538D01* +X550960Y205449D01* +X550920Y205361D01* +X550877Y205274D01* +X550831Y205190D01* +X550781Y205107D01* +X550727Y205026D01* +X550671Y204948D01* +X550611Y204872D01* +X550549Y204798D01* +X550483Y204727D01* +X550415Y204659D01* +X550344Y204593D01* +X550270Y204531D01* +X550194Y204471D01* +X550116Y204415D01* +X550035Y204361D01* +X549953Y204311D01* +X549868Y204265D01* +X549781Y204222D01* +X549693Y204182D01* +X549604Y204146D01* +X549513Y204113D01* +X549420Y204085D01* +X549327Y204060D01* +X549233Y204038D01* +X549138Y204021D01* +X549042Y204007D01* +X548946Y203998D01* +X548850Y203992D01* +X548753Y203990D01* +X546354Y203990D01* +X549233Y203990D02* +X551152Y200152D01* +X555413Y200152D02* +X557812Y200152D01* +X557909Y200154D01* +X558005Y200160D01* +X558101Y200169D01* +X558197Y200183D01* +X558292Y200200D01* +X558386Y200222D01* +X558479Y200247D01* +X558572Y200275D01* +X558663Y200308D01* +X558752Y200344D01* +X558840Y200384D01* +X558927Y200427D01* +X559012Y200473D01* +X559094Y200523D01* +X559175Y200577D01* +X559253Y200633D01* +X559329Y200693D01* +X559403Y200755D01* +X559474Y200821D01* +X559542Y200889D01* +X559608Y200960D01* +X559670Y201034D01* +X559730Y201110D01* +X559786Y201188D01* +X559840Y201269D01* +X559890Y201352D01* +X559936Y201436D01* +X559979Y201523D01* +X560019Y201611D01* +X560055Y201700D01* +X560088Y201791D01* +X560116Y201884D01* +X560141Y201977D01* +X560163Y202071D01* +X560180Y202166D01* +X560194Y202262D01* +X560203Y202358D01* +X560209Y202454D01* +X560211Y202551D01* +X560209Y202648D01* +X560203Y202744D01* +X560194Y202840D01* +X560180Y202936D01* +X560163Y203031D01* +X560141Y203125D01* +X560116Y203218D01* +X560088Y203311D01* +X560055Y203402D01* +X560019Y203491D01* +X559979Y203579D01* +X559936Y203666D01* +X559890Y203750D01* +X559840Y203833D01* +X559786Y203914D01* +X559730Y203992D01* +X559670Y204068D01* +X559608Y204142D01* +X559542Y204213D01* +X559474Y204281D01* +X559403Y204347D01* +X559329Y204409D01* +X559253Y204469D01* +X559175Y204525D01* +X559094Y204579D01* +X559012Y204629D01* +X558927Y204675D01* +X558840Y204718D01* +X558752Y204758D01* +X558663Y204794D01* +X558572Y204827D01* +X558479Y204855D01* +X558386Y204880D01* +X558292Y204902D01* +X558197Y204919D01* +X558101Y204933D01* +X558005Y204942D01* +X557909Y204948D01* +X557812Y204950D01* +X558292Y208788D02* +X555413Y208788D01* +X558292Y208788D02* +X558378Y208786D01* +X558464Y208780D01* +X558550Y208771D01* +X558635Y208757D01* +X558719Y208740D01* +X558803Y208719D01* +X558885Y208694D01* +X558966Y208666D01* +X559046Y208634D01* +X559125Y208598D01* +X559201Y208559D01* +X559276Y208516D01* +X559349Y208471D01* +X559420Y208422D01* +X559488Y208369D01* +X559555Y208314D01* +X559618Y208256D01* +X559679Y208195D01* +X559737Y208132D01* +X559792Y208065D01* +X559845Y207997D01* +X559894Y207926D01* +X559939Y207853D01* +X559982Y207778D01* +X560021Y207702D01* +X560057Y207623D01* +X560089Y207543D01* +X560117Y207462D01* +X560142Y207380D01* +X560163Y207296D01* +X560180Y207212D01* +X560194Y207127D01* +X560203Y207041D01* +X560209Y206955D01* +X560211Y206869D01* +X560209Y206783D01* +X560203Y206697D01* +X560194Y206611D01* +X560180Y206526D01* +X560163Y206442D01* +X560142Y206358D01* +X560117Y206276D01* +X560089Y206195D01* +X560057Y206115D01* +X560021Y206036D01* +X559982Y205960D01* +X559939Y205885D01* +X559894Y205812D01* +X559845Y205741D01* +X559792Y205673D01* +X559737Y205606D01* +X559679Y205543D01* +X559618Y205482D01* +X559555Y205424D01* +X559488Y205369D01* +X559420Y205316D01* +X559349Y205267D01* +X559276Y205222D01* +X559201Y205179D01* +X559125Y205140D01* +X559046Y205104D01* +X558966Y205072D01* +X558885Y205044D01* +X558803Y205019D01* +X558719Y204998D01* +X558635Y204981D01* +X558550Y204967D01* +X558464Y204958D01* +X558378Y204952D01* +X558292Y204950D01* +X556373Y204950D01* +X564557Y204950D02* +X567436Y204950D01* +X567522Y204948D01* +X567608Y204942D01* +X567694Y204933D01* +X567779Y204919D01* +X567863Y204902D01* +X567947Y204881D01* +X568029Y204856D01* +X568110Y204828D01* +X568190Y204796D01* +X568269Y204760D01* +X568345Y204721D01* +X568420Y204678D01* +X568493Y204633D01* +X568564Y204584D01* +X568632Y204531D01* +X568699Y204476D01* +X568762Y204418D01* +X568823Y204357D01* +X568881Y204294D01* +X568936Y204227D01* +X568989Y204159D01* +X569038Y204088D01* +X569083Y204015D01* +X569126Y203940D01* +X569165Y203864D01* +X569201Y203785D01* +X569233Y203705D01* +X569261Y203624D01* +X569286Y203542D01* +X569307Y203458D01* +X569324Y203374D01* +X569338Y203289D01* +X569347Y203203D01* +X569353Y203117D01* +X569355Y203031D01* +X569355Y202551D01* +X569353Y202454D01* +X569347Y202358D01* +X569338Y202262D01* +X569324Y202166D01* +X569307Y202071D01* +X569285Y201977D01* +X569260Y201884D01* +X569232Y201791D01* +X569199Y201700D01* +X569163Y201611D01* +X569123Y201523D01* +X569080Y201436D01* +X569034Y201351D01* +X568984Y201269D01* +X568930Y201188D01* +X568874Y201110D01* +X568814Y201034D01* +X568752Y200960D01* +X568686Y200889D01* +X568618Y200821D01* +X568547Y200755D01* +X568473Y200693D01* +X568397Y200633D01* +X568319Y200577D01* +X568238Y200523D01* +X568156Y200473D01* +X568071Y200427D01* +X567984Y200384D01* +X567896Y200344D01* +X567807Y200308D01* +X567716Y200275D01* +X567623Y200247D01* +X567530Y200222D01* +X567436Y200200D01* +X567341Y200183D01* +X567245Y200169D01* +X567149Y200160D01* +X567053Y200154D01* +X566956Y200152D01* +X566859Y200154D01* +X566763Y200160D01* +X566667Y200169D01* +X566571Y200183D01* +X566476Y200200D01* +X566382Y200222D01* +X566289Y200247D01* +X566196Y200275D01* +X566105Y200308D01* +X566016Y200344D01* +X565928Y200384D01* +X565841Y200427D01* +X565757Y200473D01* +X565674Y200523D01* +X565593Y200577D01* +X565515Y200633D01* +X565439Y200693D01* +X565365Y200755D01* +X565294Y200821D01* +X565226Y200889D01* +X565160Y200960D01* +X565098Y201034D01* +X565038Y201110D01* +X564982Y201188D01* +X564928Y201269D01* +X564878Y201352D01* +X564832Y201436D01* +X564789Y201523D01* +X564749Y201611D01* +X564713Y201700D01* +X564680Y201791D01* +X564652Y201884D01* +X564627Y201977D01* +X564605Y202071D01* +X564588Y202166D01* +X564574Y202262D01* +X564565Y202358D01* +X564559Y202454D01* +X564557Y202551D01* +X564557Y204950D01* +X564558Y204950D02* +X564560Y205073D01* +X564566Y205196D01* +X564576Y205319D01* +X564590Y205441D01* +X564607Y205563D01* +X564629Y205684D01* +X564654Y205804D01* +X564684Y205924D01* +X564717Y206042D01* +X564754Y206159D01* +X564794Y206276D01* +X564838Y206390D01* +X564886Y206504D01* +X564938Y206615D01* +X564993Y206725D01* +X565052Y206833D01* +X565114Y206940D01* +X565179Y207044D01* +X565248Y207146D01* +X565320Y207246D01* +X565395Y207343D01* +X565474Y207438D01* +X565555Y207530D01* +X565639Y207620D01* +X565726Y207707D01* +X565816Y207791D01* +X565908Y207872D01* +X566003Y207951D01* +X566100Y208026D01* +X566200Y208098D01* +X566302Y208167D01* +X566406Y208232D01* +X566513Y208294D01* +X566621Y208353D01* +X566731Y208408D01* +X566842Y208460D01* +X566956Y208507D01* +X567070Y208552D01* +X567187Y208592D01* +X567304Y208629D01* +X567422Y208662D01* +X567542Y208692D01* +X567662Y208717D01* +X567783Y208739D01* +X567905Y208756D01* +X568027Y208770D01* +X568150Y208780D01* +X568273Y208786D01* +X568396Y208788D01* +D17* +X561340Y154940D03* +D14* +X573786Y156210D02* +X573786Y147574D01* +X573786Y156210D02* +X576185Y156210D01* +X576282Y156208D01* +X576378Y156202D01* +X576474Y156193D01* +X576570Y156179D01* +X576665Y156162D01* +X576759Y156140D01* +X576852Y156115D01* +X576945Y156087D01* +X577036Y156054D01* +X577125Y156018D01* +X577213Y155978D01* +X577300Y155935D01* +X577385Y155889D01* +X577467Y155839D01* +X577548Y155785D01* +X577626Y155729D01* +X577702Y155669D01* +X577776Y155607D01* +X577847Y155541D01* +X577915Y155473D01* +X577981Y155402D01* +X578043Y155328D01* +X578103Y155252D01* +X578159Y155174D01* +X578213Y155093D01* +X578263Y155010D01* +X578309Y154926D01* +X578352Y154839D01* +X578392Y154751D01* +X578428Y154662D01* +X578461Y154571D01* +X578489Y154478D01* +X578514Y154385D01* +X578536Y154291D01* +X578553Y154196D01* +X578567Y154100D01* +X578576Y154004D01* +X578582Y153908D01* +X578584Y153811D01* +X578582Y153714D01* +X578576Y153618D01* +X578567Y153522D01* +X578553Y153426D01* +X578536Y153331D01* +X578514Y153237D01* +X578489Y153144D01* +X578461Y153051D01* +X578428Y152960D01* +X578392Y152871D01* +X578352Y152783D01* +X578309Y152696D01* +X578263Y152612D01* +X578213Y152529D01* +X578159Y152448D01* +X578103Y152370D01* +X578043Y152294D01* +X577981Y152220D01* +X577915Y152149D01* +X577847Y152081D01* +X577776Y152015D01* +X577702Y151953D01* +X577626Y151893D01* +X577548Y151837D01* +X577467Y151783D01* +X577385Y151733D01* +X577300Y151687D01* +X577213Y151644D01* +X577125Y151604D01* +X577036Y151568D01* +X576945Y151535D01* +X576852Y151507D01* +X576759Y151482D01* +X576665Y151460D01* +X576570Y151443D01* +X576474Y151429D01* +X576378Y151420D01* +X576282Y151414D01* +X576185Y151412D01* +X573786Y151412D01* +X576665Y151412D02* +X578584Y147574D01* +X582845Y147574D02* +X585244Y147574D01* +X585341Y147576D01* +X585437Y147582D01* +X585533Y147591D01* +X585629Y147605D01* +X585724Y147622D01* +X585818Y147644D01* +X585911Y147669D01* +X586004Y147697D01* +X586095Y147730D01* +X586184Y147766D01* +X586272Y147806D01* +X586359Y147849D01* +X586444Y147895D01* +X586526Y147945D01* +X586607Y147999D01* +X586685Y148055D01* +X586761Y148115D01* +X586835Y148177D01* +X586906Y148243D01* +X586974Y148311D01* +X587040Y148382D01* +X587102Y148456D01* +X587162Y148532D01* +X587218Y148610D01* +X587272Y148691D01* +X587322Y148774D01* +X587368Y148858D01* +X587411Y148945D01* +X587451Y149033D01* +X587487Y149122D01* +X587520Y149213D01* +X587548Y149306D01* +X587573Y149399D01* +X587595Y149493D01* +X587612Y149588D01* +X587626Y149684D01* +X587635Y149780D01* +X587641Y149876D01* +X587643Y149973D01* +X587641Y150070D01* +X587635Y150166D01* +X587626Y150262D01* +X587612Y150358D01* +X587595Y150453D01* +X587573Y150547D01* +X587548Y150640D01* +X587520Y150733D01* +X587487Y150824D01* +X587451Y150913D01* +X587411Y151001D01* +X587368Y151088D01* +X587322Y151172D01* +X587272Y151255D01* +X587218Y151336D01* +X587162Y151414D01* +X587102Y151490D01* +X587040Y151564D01* +X586974Y151635D01* +X586906Y151703D01* +X586835Y151769D01* +X586761Y151831D01* +X586685Y151891D01* +X586607Y151947D01* +X586526Y152001D01* +X586444Y152051D01* +X586359Y152097D01* +X586272Y152140D01* +X586184Y152180D01* +X586095Y152216D01* +X586004Y152249D01* +X585911Y152277D01* +X585818Y152302D01* +X585724Y152324D01* +X585629Y152341D01* +X585533Y152355D01* +X585437Y152364D01* +X585341Y152370D01* +X585244Y152372D01* +X585724Y156210D02* +X582845Y156210D01* +X585724Y156210D02* +X585810Y156208D01* +X585896Y156202D01* +X585982Y156193D01* +X586067Y156179D01* +X586151Y156162D01* +X586235Y156141D01* +X586317Y156116D01* +X586398Y156088D01* +X586478Y156056D01* +X586557Y156020D01* +X586633Y155981D01* +X586708Y155938D01* +X586781Y155893D01* +X586852Y155844D01* +X586920Y155791D01* +X586987Y155736D01* +X587050Y155678D01* +X587111Y155617D01* +X587169Y155554D01* +X587224Y155487D01* +X587277Y155419D01* +X587326Y155348D01* +X587371Y155275D01* +X587414Y155200D01* +X587453Y155124D01* +X587489Y155045D01* +X587521Y154965D01* +X587549Y154884D01* +X587574Y154802D01* +X587595Y154718D01* +X587612Y154634D01* +X587626Y154549D01* +X587635Y154463D01* +X587641Y154377D01* +X587643Y154291D01* +X587641Y154205D01* +X587635Y154119D01* +X587626Y154033D01* +X587612Y153948D01* +X587595Y153864D01* +X587574Y153780D01* +X587549Y153698D01* +X587521Y153617D01* +X587489Y153537D01* +X587453Y153458D01* +X587414Y153382D01* +X587371Y153307D01* +X587326Y153234D01* +X587277Y153163D01* +X587224Y153095D01* +X587169Y153028D01* +X587111Y152965D01* +X587050Y152904D01* +X586987Y152846D01* +X586920Y152791D01* +X586852Y152738D01* +X586781Y152689D01* +X586708Y152644D01* +X586633Y152601D01* +X586557Y152562D01* +X586478Y152526D01* +X586398Y152494D01* +X586317Y152466D01* +X586235Y152441D01* +X586151Y152420D01* +X586067Y152403D01* +X585982Y152389D01* +X585896Y152380D01* +X585810Y152374D01* +X585724Y152372D01* +X583805Y152372D01* +X591989Y147574D02* +X594868Y147574D01* +X594954Y147576D01* +X595040Y147582D01* +X595126Y147591D01* +X595211Y147605D01* +X595295Y147622D01* +X595379Y147643D01* +X595461Y147668D01* +X595542Y147696D01* +X595622Y147728D01* +X595701Y147764D01* +X595777Y147803D01* +X595852Y147846D01* +X595925Y147891D01* +X595996Y147941D01* +X596064Y147993D01* +X596131Y148048D01* +X596194Y148106D01* +X596255Y148167D01* +X596313Y148230D01* +X596368Y148297D01* +X596421Y148365D01* +X596470Y148436D01* +X596515Y148509D01* +X596558Y148584D01* +X596597Y148660D01* +X596633Y148739D01* +X596665Y148819D01* +X596693Y148900D01* +X596718Y148983D01* +X596739Y149066D01* +X596756Y149150D01* +X596770Y149235D01* +X596779Y149321D01* +X596785Y149407D01* +X596787Y149493D01* +X596787Y150453D01* +X596785Y150539D01* +X596779Y150625D01* +X596770Y150711D01* +X596756Y150796D01* +X596739Y150880D01* +X596718Y150964D01* +X596693Y151046D01* +X596665Y151127D01* +X596633Y151207D01* +X596597Y151286D01* +X596558Y151362D01* +X596515Y151437D01* +X596470Y151510D01* +X596421Y151581D01* +X596368Y151649D01* +X596313Y151716D01* +X596255Y151779D01* +X596194Y151840D01* +X596131Y151898D01* +X596064Y151953D01* +X595996Y152006D01* +X595925Y152055D01* +X595852Y152100D01* +X595777Y152143D01* +X595701Y152182D01* +X595622Y152218D01* +X595542Y152250D01* +X595461Y152278D01* +X595379Y152303D01* +X595295Y152324D01* +X595211Y152341D01* +X595126Y152355D01* +X595040Y152364D01* +X594954Y152370D01* +X594868Y152372D01* +X591989Y152372D01* +X591989Y156210D01* +X596787Y156210D01* +D13* +X566420Y185420D03* +D14* +X581914Y195326D02* +X590550Y195326D01* +X581914Y195326D02* +X581914Y197725D01* +X581916Y197822D01* +X581922Y197918D01* +X581931Y198014D01* +X581945Y198110D01* +X581962Y198205D01* +X581984Y198299D01* +X582009Y198392D01* +X582037Y198485D01* +X582070Y198576D01* +X582106Y198665D01* +X582146Y198753D01* +X582189Y198840D01* +X582235Y198925D01* +X582285Y199007D01* +X582339Y199088D01* +X582395Y199166D01* +X582455Y199242D01* +X582517Y199316D01* +X582583Y199387D01* +X582651Y199455D01* +X582722Y199521D01* +X582796Y199583D01* +X582872Y199643D01* +X582950Y199699D01* +X583031Y199753D01* +X583114Y199803D01* +X583198Y199849D01* +X583285Y199892D01* +X583373Y199932D01* +X583462Y199968D01* +X583553Y200001D01* +X583646Y200029D01* +X583739Y200054D01* +X583833Y200076D01* +X583928Y200093D01* +X584024Y200107D01* +X584120Y200116D01* +X584216Y200122D01* +X584313Y200124D01* +X584410Y200122D01* +X584506Y200116D01* +X584602Y200107D01* +X584698Y200093D01* +X584793Y200076D01* +X584887Y200054D01* +X584980Y200029D01* +X585073Y200001D01* +X585164Y199968D01* +X585253Y199932D01* +X585341Y199892D01* +X585428Y199849D01* +X585513Y199803D01* +X585595Y199753D01* +X585676Y199699D01* +X585754Y199643D01* +X585830Y199583D01* +X585904Y199521D01* +X585975Y199455D01* +X586043Y199387D01* +X586109Y199316D01* +X586171Y199242D01* +X586231Y199166D01* +X586287Y199088D01* +X586341Y199007D01* +X586391Y198925D01* +X586437Y198840D01* +X586480Y198753D01* +X586520Y198665D01* +X586556Y198576D01* +X586589Y198485D01* +X586617Y198392D01* +X586642Y198299D01* +X586664Y198205D01* +X586681Y198110D01* +X586695Y198014D01* +X586704Y197918D01* +X586710Y197822D01* +X586712Y197725D01* +X586712Y195326D01* +X586712Y198205D02* +X590550Y200124D01* +X590550Y204385D02* +X590550Y206784D01* +X590548Y206881D01* +X590542Y206977D01* +X590533Y207073D01* +X590519Y207169D01* +X590502Y207264D01* +X590480Y207358D01* +X590455Y207451D01* +X590427Y207544D01* +X590394Y207635D01* +X590358Y207724D01* +X590318Y207812D01* +X590275Y207899D01* +X590229Y207984D01* +X590179Y208066D01* +X590125Y208147D01* +X590069Y208225D01* +X590009Y208301D01* +X589947Y208375D01* +X589881Y208446D01* +X589813Y208514D01* +X589742Y208580D01* +X589668Y208642D01* +X589592Y208702D01* +X589514Y208758D01* +X589433Y208812D01* +X589351Y208862D01* +X589266Y208908D01* +X589179Y208951D01* +X589091Y208991D01* +X589002Y209027D01* +X588911Y209060D01* +X588818Y209088D01* +X588725Y209113D01* +X588631Y209135D01* +X588536Y209152D01* +X588440Y209166D01* +X588344Y209175D01* +X588248Y209181D01* +X588151Y209183D01* +X588054Y209181D01* +X587958Y209175D01* +X587862Y209166D01* +X587766Y209152D01* +X587671Y209135D01* +X587577Y209113D01* +X587484Y209088D01* +X587391Y209060D01* +X587300Y209027D01* +X587211Y208991D01* +X587123Y208951D01* +X587036Y208908D01* +X586952Y208862D01* +X586869Y208812D01* +X586788Y208758D01* +X586710Y208702D01* +X586634Y208642D01* +X586560Y208580D01* +X586489Y208514D01* +X586421Y208446D01* +X586355Y208375D01* +X586293Y208301D01* +X586233Y208225D01* +X586177Y208147D01* +X586123Y208066D01* +X586073Y207984D01* +X586027Y207899D01* +X585984Y207812D01* +X585944Y207724D01* +X585908Y207635D01* +X585875Y207544D01* +X585847Y207451D01* +X585822Y207358D01* +X585800Y207264D01* +X585783Y207169D01* +X585769Y207073D01* +X585760Y206977D01* +X585754Y206881D01* +X585752Y206784D01* +X581914Y207264D02* +X581914Y204385D01* +X581914Y207264D02* +X581916Y207350D01* +X581922Y207436D01* +X581931Y207522D01* +X581945Y207607D01* +X581962Y207691D01* +X581983Y207775D01* +X582008Y207857D01* +X582036Y207938D01* +X582068Y208018D01* +X582104Y208097D01* +X582143Y208173D01* +X582186Y208248D01* +X582231Y208321D01* +X582280Y208392D01* +X582333Y208460D01* +X582388Y208527D01* +X582446Y208590D01* +X582507Y208651D01* +X582570Y208709D01* +X582637Y208764D01* +X582705Y208817D01* +X582776Y208866D01* +X582849Y208911D01* +X582924Y208954D01* +X583000Y208993D01* +X583079Y209029D01* +X583159Y209061D01* +X583240Y209089D01* +X583322Y209114D01* +X583406Y209135D01* +X583490Y209152D01* +X583575Y209166D01* +X583661Y209175D01* +X583747Y209181D01* +X583833Y209183D01* +X583919Y209181D01* +X584005Y209175D01* +X584091Y209166D01* +X584176Y209152D01* +X584260Y209135D01* +X584344Y209114D01* +X584426Y209089D01* +X584507Y209061D01* +X584587Y209029D01* +X584666Y208993D01* +X584742Y208954D01* +X584817Y208911D01* +X584890Y208866D01* +X584961Y208817D01* +X585029Y208764D01* +X585096Y208709D01* +X585159Y208651D01* +X585220Y208590D01* +X585278Y208527D01* +X585333Y208460D01* +X585386Y208392D01* +X585435Y208321D01* +X585480Y208248D01* +X585523Y208173D01* +X585562Y208097D01* +X585598Y208018D01* +X585630Y207938D01* +X585658Y207857D01* +X585683Y207775D01* +X585704Y207691D01* +X585721Y207607D01* +X585735Y207522D01* +X585744Y207436D01* +X585750Y207350D01* +X585752Y207264D01* +X585752Y205345D01* +X588631Y213529D02* +X581914Y215448D01* +X588631Y213529D02* +X588631Y218327D01* +X586712Y216888D02* +X590550Y216888D01* +D17* +X533400Y228600D03* +D14* +X545846Y226060D02* +X545846Y234696D01* +X548245Y234696D01* +X548342Y234694D01* +X548438Y234688D01* +X548534Y234679D01* +X548630Y234665D01* +X548725Y234648D01* +X548819Y234626D01* +X548912Y234601D01* +X549005Y234573D01* +X549096Y234540D01* +X549185Y234504D01* +X549273Y234464D01* +X549360Y234421D01* +X549445Y234375D01* +X549527Y234325D01* +X549608Y234271D01* +X549686Y234215D01* +X549762Y234155D01* +X549836Y234093D01* +X549907Y234027D01* +X549975Y233959D01* +X550041Y233888D01* +X550103Y233814D01* +X550163Y233738D01* +X550219Y233660D01* +X550273Y233579D01* +X550323Y233496D01* +X550369Y233412D01* +X550412Y233325D01* +X550452Y233237D01* +X550488Y233148D01* +X550521Y233057D01* +X550549Y232964D01* +X550574Y232871D01* +X550596Y232777D01* +X550613Y232682D01* +X550627Y232586D01* +X550636Y232490D01* +X550642Y232394D01* +X550644Y232297D01* +X550642Y232200D01* +X550636Y232104D01* +X550627Y232008D01* +X550613Y231912D01* +X550596Y231817D01* +X550574Y231723D01* +X550549Y231630D01* +X550521Y231537D01* +X550488Y231446D01* +X550452Y231357D01* +X550412Y231269D01* +X550369Y231182D01* +X550323Y231098D01* +X550273Y231015D01* +X550219Y230934D01* +X550163Y230856D01* +X550103Y230780D01* +X550041Y230706D01* +X549975Y230635D01* +X549907Y230567D01* +X549836Y230501D01* +X549762Y230439D01* +X549686Y230379D01* +X549608Y230323D01* +X549527Y230269D01* +X549445Y230219D01* +X549360Y230173D01* +X549273Y230130D01* +X549185Y230090D01* +X549096Y230054D01* +X549005Y230021D01* +X548912Y229993D01* +X548819Y229968D01* +X548725Y229946D01* +X548630Y229929D01* +X548534Y229915D01* +X548438Y229906D01* +X548342Y229900D01* +X548245Y229898D01* +X545846Y229898D01* +X548725Y229898D02* +X550644Y226060D01* +X554905Y226060D02* +X557304Y226060D01* +X557401Y226062D01* +X557497Y226068D01* +X557593Y226077D01* +X557689Y226091D01* +X557784Y226108D01* +X557878Y226130D01* +X557971Y226155D01* +X558064Y226183D01* +X558155Y226216D01* +X558244Y226252D01* +X558332Y226292D01* +X558419Y226335D01* +X558504Y226381D01* +X558586Y226431D01* +X558667Y226485D01* +X558745Y226541D01* +X558821Y226601D01* +X558895Y226663D01* +X558966Y226729D01* +X559034Y226797D01* +X559100Y226868D01* +X559162Y226942D01* +X559222Y227018D01* +X559278Y227096D01* +X559332Y227177D01* +X559382Y227260D01* +X559428Y227344D01* +X559471Y227431D01* +X559511Y227519D01* +X559547Y227608D01* +X559580Y227699D01* +X559608Y227792D01* +X559633Y227885D01* +X559655Y227979D01* +X559672Y228074D01* +X559686Y228170D01* +X559695Y228266D01* +X559701Y228362D01* +X559703Y228459D01* +X559701Y228556D01* +X559695Y228652D01* +X559686Y228748D01* +X559672Y228844D01* +X559655Y228939D01* +X559633Y229033D01* +X559608Y229126D01* +X559580Y229219D01* +X559547Y229310D01* +X559511Y229399D01* +X559471Y229487D01* +X559428Y229574D01* +X559382Y229658D01* +X559332Y229741D01* +X559278Y229822D01* +X559222Y229900D01* +X559162Y229976D01* +X559100Y230050D01* +X559034Y230121D01* +X558966Y230189D01* +X558895Y230255D01* +X558821Y230317D01* +X558745Y230377D01* +X558667Y230433D01* +X558586Y230487D01* +X558504Y230537D01* +X558419Y230583D01* +X558332Y230626D01* +X558244Y230666D01* +X558155Y230702D01* +X558064Y230735D01* +X557971Y230763D01* +X557878Y230788D01* +X557784Y230810D01* +X557689Y230827D01* +X557593Y230841D01* +X557497Y230850D01* +X557401Y230856D01* +X557304Y230858D01* +X557784Y234696D02* +X554905Y234696D01* +X557784Y234696D02* +X557870Y234694D01* +X557956Y234688D01* +X558042Y234679D01* +X558127Y234665D01* +X558211Y234648D01* +X558295Y234627D01* +X558377Y234602D01* +X558458Y234574D01* +X558538Y234542D01* +X558617Y234506D01* +X558693Y234467D01* +X558768Y234424D01* +X558841Y234379D01* +X558912Y234330D01* +X558980Y234277D01* +X559047Y234222D01* +X559110Y234164D01* +X559171Y234103D01* +X559229Y234040D01* +X559284Y233973D01* +X559337Y233905D01* +X559386Y233834D01* +X559431Y233761D01* +X559474Y233686D01* +X559513Y233610D01* +X559549Y233531D01* +X559581Y233451D01* +X559609Y233370D01* +X559634Y233288D01* +X559655Y233204D01* +X559672Y233120D01* +X559686Y233035D01* +X559695Y232949D01* +X559701Y232863D01* +X559703Y232777D01* +X559701Y232691D01* +X559695Y232605D01* +X559686Y232519D01* +X559672Y232434D01* +X559655Y232350D01* +X559634Y232266D01* +X559609Y232184D01* +X559581Y232103D01* +X559549Y232023D01* +X559513Y231944D01* +X559474Y231868D01* +X559431Y231793D01* +X559386Y231720D01* +X559337Y231649D01* +X559284Y231581D01* +X559229Y231514D01* +X559171Y231451D01* +X559110Y231390D01* +X559047Y231332D01* +X558980Y231277D01* +X558912Y231224D01* +X558841Y231175D01* +X558768Y231130D01* +X558693Y231087D01* +X558617Y231048D01* +X558538Y231012D01* +X558458Y230980D01* +X558377Y230952D01* +X558295Y230927D01* +X558211Y230906D01* +X558127Y230889D01* +X558042Y230875D01* +X557956Y230866D01* +X557870Y230860D01* +X557784Y230858D01* +X555865Y230858D01* +X564049Y226060D02* +X566448Y226060D01* +X566545Y226062D01* +X566641Y226068D01* +X566737Y226077D01* +X566833Y226091D01* +X566928Y226108D01* +X567022Y226130D01* +X567115Y226155D01* +X567208Y226183D01* +X567299Y226216D01* +X567388Y226252D01* +X567476Y226292D01* +X567563Y226335D01* +X567648Y226381D01* +X567730Y226431D01* +X567811Y226485D01* +X567889Y226541D01* +X567965Y226601D01* +X568039Y226663D01* +X568110Y226729D01* +X568178Y226797D01* +X568244Y226868D01* +X568306Y226942D01* +X568366Y227018D01* +X568422Y227096D01* +X568476Y227177D01* +X568526Y227260D01* +X568572Y227344D01* +X568615Y227431D01* +X568655Y227519D01* +X568691Y227608D01* +X568724Y227699D01* +X568752Y227792D01* +X568777Y227885D01* +X568799Y227979D01* +X568816Y228074D01* +X568830Y228170D01* +X568839Y228266D01* +X568845Y228362D01* +X568847Y228459D01* +X568845Y228556D01* +X568839Y228652D01* +X568830Y228748D01* +X568816Y228844D01* +X568799Y228939D01* +X568777Y229033D01* +X568752Y229126D01* +X568724Y229219D01* +X568691Y229310D01* +X568655Y229399D01* +X568615Y229487D01* +X568572Y229574D01* +X568526Y229658D01* +X568476Y229741D01* +X568422Y229822D01* +X568366Y229900D01* +X568306Y229976D01* +X568244Y230050D01* +X568178Y230121D01* +X568110Y230189D01* +X568039Y230255D01* +X567965Y230317D01* +X567889Y230377D01* +X567811Y230433D01* +X567730Y230487D01* +X567648Y230537D01* +X567563Y230583D01* +X567476Y230626D01* +X567388Y230666D01* +X567299Y230702D01* +X567208Y230735D01* +X567115Y230763D01* +X567022Y230788D01* +X566928Y230810D01* +X566833Y230827D01* +X566737Y230841D01* +X566641Y230850D01* +X566545Y230856D01* +X566448Y230858D01* +X566928Y234696D02* +X564049Y234696D01* +X566928Y234696D02* +X567014Y234694D01* +X567100Y234688D01* +X567186Y234679D01* +X567271Y234665D01* +X567355Y234648D01* +X567439Y234627D01* +X567521Y234602D01* +X567602Y234574D01* +X567682Y234542D01* +X567761Y234506D01* +X567837Y234467D01* +X567912Y234424D01* +X567985Y234379D01* +X568056Y234330D01* +X568124Y234277D01* +X568191Y234222D01* +X568254Y234164D01* +X568315Y234103D01* +X568373Y234040D01* +X568428Y233973D01* +X568481Y233905D01* +X568530Y233834D01* +X568575Y233761D01* +X568618Y233686D01* +X568657Y233610D01* +X568693Y233531D01* +X568725Y233451D01* +X568753Y233370D01* +X568778Y233288D01* +X568799Y233204D01* +X568816Y233120D01* +X568830Y233035D01* +X568839Y232949D01* +X568845Y232863D01* +X568847Y232777D01* +X568845Y232691D01* +X568839Y232605D01* +X568830Y232519D01* +X568816Y232434D01* +X568799Y232350D01* +X568778Y232266D01* +X568753Y232184D01* +X568725Y232103D01* +X568693Y232023D01* +X568657Y231944D01* +X568618Y231868D01* +X568575Y231793D01* +X568530Y231720D01* +X568481Y231649D01* +X568428Y231581D01* +X568373Y231514D01* +X568315Y231451D01* +X568254Y231390D01* +X568191Y231332D01* +X568124Y231277D01* +X568056Y231224D01* +X567985Y231175D01* +X567912Y231130D01* +X567837Y231087D01* +X567761Y231048D01* +X567682Y231012D01* +X567602Y230980D01* +X567521Y230952D01* +X567439Y230927D01* +X567355Y230906D01* +X567271Y230889D01* +X567186Y230875D01* +X567100Y230866D01* +X567014Y230860D01* +X566928Y230858D01* +X565009Y230858D01* +D13* +X459740Y172720D03* +D14* +X454406Y159258D02* +X445770Y159258D01* +X445770Y161657D01* +X445772Y161754D01* +X445778Y161850D01* +X445787Y161946D01* +X445801Y162042D01* +X445818Y162137D01* +X445840Y162231D01* +X445865Y162324D01* +X445893Y162417D01* +X445926Y162508D01* +X445962Y162597D01* +X446002Y162685D01* +X446045Y162772D01* +X446091Y162857D01* +X446141Y162939D01* +X446195Y163020D01* +X446251Y163098D01* +X446311Y163174D01* +X446373Y163248D01* +X446439Y163319D01* +X446507Y163387D01* +X446578Y163453D01* +X446652Y163515D01* +X446728Y163575D01* +X446806Y163631D01* +X446887Y163685D01* +X446970Y163735D01* +X447054Y163781D01* +X447141Y163824D01* +X447229Y163864D01* +X447318Y163900D01* +X447409Y163933D01* +X447502Y163961D01* +X447595Y163986D01* +X447689Y164008D01* +X447784Y164025D01* +X447880Y164039D01* +X447976Y164048D01* +X448072Y164054D01* +X448169Y164056D01* +X448266Y164054D01* +X448362Y164048D01* +X448458Y164039D01* +X448554Y164025D01* +X448649Y164008D01* +X448743Y163986D01* +X448836Y163961D01* +X448929Y163933D01* +X449020Y163900D01* +X449109Y163864D01* +X449197Y163824D01* +X449284Y163781D01* +X449369Y163735D01* +X449451Y163685D01* +X449532Y163631D01* +X449610Y163575D01* +X449686Y163515D01* +X449760Y163453D01* +X449831Y163387D01* +X449899Y163319D01* +X449965Y163248D01* +X450027Y163174D01* +X450087Y163098D01* +X450143Y163020D01* +X450197Y162939D01* +X450247Y162857D01* +X450293Y162772D01* +X450336Y162685D01* +X450376Y162597D01* +X450412Y162508D01* +X450445Y162417D01* +X450473Y162324D01* +X450498Y162231D01* +X450520Y162137D01* +X450537Y162042D01* +X450551Y161946D01* +X450560Y161850D01* +X450566Y161754D01* +X450568Y161657D01* +X450568Y159258D01* +X450568Y162137D02* +X454406Y164056D01* +X445770Y170956D02* +X445772Y171048D01* +X445778Y171139D01* +X445787Y171230D01* +X445801Y171321D01* +X445818Y171411D01* +X445840Y171500D01* +X445865Y171588D01* +X445893Y171675D01* +X445926Y171761D01* +X445962Y171845D01* +X446001Y171928D01* +X446044Y172009D01* +X446091Y172088D01* +X446140Y172165D01* +X446193Y172240D01* +X446249Y172312D01* +X446308Y172382D01* +X446370Y172450D01* +X446435Y172515D01* +X446503Y172577D01* +X446573Y172636D01* +X446645Y172692D01* +X446720Y172745D01* +X446797Y172794D01* +X446876Y172841D01* +X446957Y172884D01* +X447040Y172923D01* +X447124Y172959D01* +X447210Y172992D01* +X447297Y173020D01* +X447385Y173045D01* +X447474Y173067D01* +X447564Y173084D01* +X447655Y173098D01* +X447746Y173107D01* +X447837Y173113D01* +X447929Y173115D01* +X445770Y170956D02* +X445772Y170853D01* +X445778Y170751D01* +X445787Y170649D01* +X445800Y170547D01* +X445817Y170446D01* +X445838Y170345D01* +X445862Y170246D01* +X445891Y170147D01* +X445922Y170050D01* +X445958Y169953D01* +X445996Y169858D01* +X446039Y169765D01* +X446085Y169673D01* +X446134Y169583D01* +X446186Y169495D01* +X446242Y169408D01* +X446301Y169324D01* +X446362Y169243D01* +X446427Y169163D01* +X446495Y169086D01* +X446566Y169011D01* +X446639Y168940D01* +X446715Y168871D01* +X446793Y168804D01* +X446874Y168741D01* +X446957Y168681D01* +X447042Y168624D01* +X447129Y168570D01* +X447219Y168519D01* +X447310Y168472D01* +X447402Y168428D01* +X447497Y168387D01* +X447592Y168350D01* +X447689Y168317D01* +X449608Y172395D02* +X449542Y172462D01* +X449473Y172526D01* +X449402Y172587D01* +X449328Y172645D01* +X449252Y172700D01* +X449174Y172752D01* +X449094Y172801D01* +X449012Y172847D01* +X448928Y172889D01* +X448842Y172928D01* +X448755Y172963D01* +X448667Y172994D01* +X448577Y173022D01* +X448487Y173047D01* +X448395Y173068D01* +X448303Y173085D01* +X448210Y173098D01* +X448117Y173107D01* +X448023Y173113D01* +X447929Y173115D01* +X449608Y172395D02* +X454406Y168317D01* +X454406Y173115D01* +X452007Y177461D02* +X451910Y177463D01* +X451814Y177469D01* +X451718Y177478D01* +X451622Y177492D01* +X451527Y177509D01* +X451433Y177531D01* +X451340Y177556D01* +X451247Y177584D01* +X451156Y177617D01* +X451067Y177653D01* +X450979Y177693D01* +X450892Y177736D01* +X450808Y177782D01* +X450725Y177832D01* +X450644Y177886D01* +X450566Y177942D01* +X450490Y178002D01* +X450416Y178064D01* +X450345Y178130D01* +X450277Y178198D01* +X450211Y178269D01* +X450149Y178343D01* +X450089Y178419D01* +X450033Y178497D01* +X449979Y178578D01* +X449929Y178661D01* +X449883Y178745D01* +X449840Y178832D01* +X449800Y178920D01* +X449764Y179009D01* +X449731Y179100D01* +X449703Y179193D01* +X449678Y179286D01* +X449656Y179380D01* +X449639Y179475D01* +X449625Y179571D01* +X449616Y179667D01* +X449610Y179763D01* +X449608Y179860D01* +X449610Y179957D01* +X449616Y180053D01* +X449625Y180149D01* +X449639Y180245D01* +X449656Y180340D01* +X449678Y180434D01* +X449703Y180527D01* +X449731Y180620D01* +X449764Y180711D01* +X449800Y180800D01* +X449840Y180888D01* +X449883Y180975D01* +X449929Y181060D01* +X449979Y181142D01* +X450033Y181223D01* +X450089Y181301D01* +X450149Y181377D01* +X450211Y181451D01* +X450277Y181522D01* +X450345Y181590D01* +X450416Y181656D01* +X450490Y181718D01* +X450566Y181778D01* +X450644Y181834D01* +X450725Y181888D01* +X450808Y181938D01* +X450892Y181984D01* +X450979Y182027D01* +X451067Y182067D01* +X451156Y182103D01* +X451247Y182136D01* +X451340Y182164D01* +X451433Y182189D01* +X451527Y182211D01* +X451622Y182228D01* +X451718Y182242D01* +X451814Y182251D01* +X451910Y182257D01* +X452007Y182259D01* +X452104Y182257D01* +X452200Y182251D01* +X452296Y182242D01* +X452392Y182228D01* +X452487Y182211D01* +X452581Y182189D01* +X452674Y182164D01* +X452767Y182136D01* +X452858Y182103D01* +X452947Y182067D01* +X453035Y182027D01* +X453122Y181984D01* +X453207Y181938D01* +X453289Y181888D01* +X453370Y181834D01* +X453448Y181778D01* +X453524Y181718D01* +X453598Y181656D01* +X453669Y181590D01* +X453737Y181522D01* +X453803Y181451D01* +X453865Y181377D01* +X453925Y181301D01* +X453981Y181223D01* +X454035Y181142D01* +X454085Y181059D01* +X454131Y180975D01* +X454174Y180888D01* +X454214Y180800D01* +X454250Y180711D01* +X454283Y180620D01* +X454311Y180527D01* +X454336Y180434D01* +X454358Y180340D01* +X454375Y180245D01* +X454389Y180149D01* +X454398Y180053D01* +X454404Y179957D01* +X454406Y179860D01* +X454404Y179763D01* +X454398Y179667D01* +X454389Y179571D01* +X454375Y179475D01* +X454358Y179380D01* +X454336Y179286D01* +X454311Y179193D01* +X454283Y179100D01* +X454250Y179009D01* +X454214Y178920D01* +X454174Y178832D01* +X454131Y178745D01* +X454085Y178661D01* +X454035Y178578D01* +X453981Y178497D01* +X453925Y178419D01* +X453865Y178343D01* +X453803Y178269D01* +X453737Y178198D01* +X453669Y178130D01* +X453598Y178064D01* +X453524Y178002D01* +X453448Y177942D01* +X453370Y177886D01* +X453289Y177832D01* +X453207Y177782D01* +X453122Y177736D01* +X453035Y177693D01* +X452947Y177653D01* +X452858Y177617D01* +X452767Y177584D01* +X452674Y177556D01* +X452581Y177531D01* +X452487Y177509D01* +X452392Y177492D01* +X452296Y177478D01* +X452200Y177469D01* +X452104Y177463D01* +X452007Y177461D01* +X447689Y177941D02* +X447603Y177943D01* +X447517Y177949D01* +X447431Y177958D01* +X447346Y177972D01* +X447262Y177989D01* +X447178Y178010D01* +X447096Y178035D01* +X447015Y178063D01* +X446935Y178095D01* +X446856Y178131D01* +X446780Y178170D01* +X446705Y178213D01* +X446632Y178258D01* +X446561Y178307D01* +X446493Y178360D01* +X446426Y178415D01* +X446363Y178473D01* +X446302Y178534D01* +X446244Y178597D01* +X446189Y178664D01* +X446136Y178732D01* +X446087Y178803D01* +X446042Y178876D01* +X445999Y178951D01* +X445960Y179027D01* +X445924Y179106D01* +X445892Y179186D01* +X445864Y179267D01* +X445839Y179349D01* +X445818Y179433D01* +X445801Y179517D01* +X445787Y179602D01* +X445778Y179688D01* +X445772Y179774D01* +X445770Y179860D01* +X445772Y179946D01* +X445778Y180032D01* +X445787Y180118D01* +X445801Y180203D01* +X445818Y180287D01* +X445839Y180371D01* +X445864Y180453D01* +X445892Y180534D01* +X445924Y180614D01* +X445960Y180693D01* +X445999Y180769D01* +X446042Y180844D01* +X446087Y180917D01* +X446136Y180988D01* +X446189Y181056D01* +X446244Y181123D01* +X446302Y181186D01* +X446363Y181247D01* +X446426Y181305D01* +X446493Y181360D01* +X446561Y181413D01* +X446632Y181462D01* +X446705Y181507D01* +X446780Y181550D01* +X446856Y181589D01* +X446935Y181625D01* +X447015Y181657D01* +X447096Y181685D01* +X447178Y181710D01* +X447262Y181731D01* +X447346Y181748D01* +X447431Y181762D01* +X447517Y181771D01* +X447603Y181777D01* +X447689Y181779D01* +X447775Y181777D01* +X447861Y181771D01* +X447947Y181762D01* +X448032Y181748D01* +X448116Y181731D01* +X448200Y181710D01* +X448282Y181685D01* +X448363Y181657D01* +X448443Y181625D01* +X448522Y181589D01* +X448598Y181550D01* +X448673Y181507D01* +X448746Y181462D01* +X448817Y181413D01* +X448885Y181360D01* +X448952Y181305D01* +X449015Y181247D01* +X449076Y181186D01* +X449134Y181123D01* +X449189Y181056D01* +X449242Y180988D01* +X449291Y180917D01* +X449336Y180844D01* +X449379Y180769D01* +X449418Y180693D01* +X449454Y180614D01* +X449486Y180534D01* +X449514Y180453D01* +X449539Y180371D01* +X449560Y180287D01* +X449577Y180203D01* +X449591Y180118D01* +X449600Y180032D01* +X449606Y179946D01* +X449608Y179860D01* +X449606Y179774D01* +X449600Y179688D01* +X449591Y179602D01* +X449577Y179517D01* +X449560Y179433D01* +X449539Y179349D01* +X449514Y179267D01* +X449486Y179186D01* +X449454Y179106D01* +X449418Y179027D01* +X449379Y178951D01* +X449336Y178876D01* +X449291Y178803D01* +X449242Y178732D01* +X449189Y178664D01* +X449134Y178597D01* +X449076Y178534D01* +X449015Y178473D01* +X448952Y178415D01* +X448885Y178360D01* +X448817Y178307D01* +X448746Y178258D01* +X448673Y178213D01* +X448598Y178170D01* +X448522Y178131D01* +X448443Y178095D01* +X448363Y178063D01* +X448282Y178035D01* +X448200Y178010D01* +X448116Y177989D01* +X448032Y177972D01* +X447947Y177958D01* +X447861Y177949D01* +X447775Y177943D01* +X447689Y177941D01* +D17* +X434340Y139700D03* +D14* +X396607Y135382D02* +X396607Y144018D01* +X399006Y144018D01* +X399103Y144016D01* +X399199Y144010D01* +X399295Y144001D01* +X399391Y143987D01* +X399486Y143970D01* +X399580Y143948D01* +X399673Y143923D01* +X399766Y143895D01* +X399857Y143862D01* +X399946Y143826D01* +X400034Y143786D01* +X400121Y143743D01* +X400206Y143697D01* +X400288Y143647D01* +X400369Y143593D01* +X400447Y143537D01* +X400523Y143477D01* +X400597Y143415D01* +X400668Y143349D01* +X400736Y143281D01* +X400802Y143210D01* +X400864Y143136D01* +X400924Y143060D01* +X400980Y142982D01* +X401034Y142901D01* +X401084Y142818D01* +X401130Y142734D01* +X401173Y142647D01* +X401213Y142559D01* +X401249Y142470D01* +X401282Y142379D01* +X401310Y142286D01* +X401335Y142193D01* +X401357Y142099D01* +X401374Y142004D01* +X401388Y141908D01* +X401397Y141812D01* +X401403Y141716D01* +X401405Y141619D01* +X401403Y141522D01* +X401397Y141426D01* +X401388Y141330D01* +X401374Y141234D01* +X401357Y141139D01* +X401335Y141045D01* +X401310Y140952D01* +X401282Y140859D01* +X401249Y140768D01* +X401213Y140679D01* +X401173Y140591D01* +X401130Y140504D01* +X401084Y140420D01* +X401034Y140337D01* +X400980Y140256D01* +X400924Y140178D01* +X400864Y140102D01* +X400802Y140028D01* +X400736Y139957D01* +X400668Y139889D01* +X400597Y139823D01* +X400523Y139761D01* +X400447Y139701D01* +X400369Y139645D01* +X400288Y139591D01* +X400206Y139541D01* +X400121Y139495D01* +X400034Y139452D01* +X399946Y139412D01* +X399857Y139376D01* +X399766Y139343D01* +X399673Y139315D01* +X399580Y139290D01* +X399486Y139268D01* +X399391Y139251D01* +X399295Y139237D01* +X399199Y139228D01* +X399103Y139222D01* +X399006Y139220D01* +X396607Y139220D01* +X399486Y139220D02* +X401405Y135382D01* +X405666Y137301D02* +X407585Y144018D01* +X405666Y137301D02* +X410464Y137301D01* +X409025Y139220D02* +X409025Y135382D01* +X414810Y139700D02* +X414812Y139870D01* +X414818Y140040D01* +X414828Y140209D01* +X414842Y140379D01* +X414861Y140548D01* +X414883Y140716D01* +X414909Y140884D01* +X414939Y141051D01* +X414974Y141217D01* +X415012Y141383D01* +X415054Y141548D01* +X415100Y141711D01* +X415150Y141874D01* +X415204Y142035D01* +X415261Y142195D01* +X415323Y142353D01* +X415388Y142510D01* +X415457Y142665D01* +X415530Y142819D01* +X415558Y142895D01* +X415590Y142970D01* +X415625Y143044D01* +X415663Y143116D01* +X415705Y143186D01* +X415750Y143254D01* +X415798Y143320D01* +X415849Y143384D01* +X415903Y143445D01* +X415959Y143504D01* +X416019Y143560D01* +X416080Y143613D01* +X416144Y143663D01* +X416211Y143711D01* +X416279Y143755D01* +X416350Y143796D01* +X416422Y143834D01* +X416496Y143868D01* +X416571Y143899D01* +X416648Y143927D01* +X416726Y143951D01* +X416805Y143971D01* +X416885Y143988D01* +X416965Y144001D01* +X417046Y144011D01* +X417127Y144016D01* +X417209Y144018D01* +X417291Y144016D01* +X417372Y144011D01* +X417453Y144001D01* +X417533Y143988D01* +X417613Y143971D01* +X417692Y143951D01* +X417770Y143927D01* +X417847Y143899D01* +X417922Y143868D01* +X417996Y143834D01* +X418068Y143796D01* +X418139Y143755D01* +X418207Y143711D01* +X418274Y143663D01* +X418338Y143613D01* +X418399Y143560D01* +X418459Y143504D01* +X418515Y143445D01* +X418569Y143384D01* +X418620Y143320D01* +X418668Y143254D01* +X418713Y143186D01* +X418755Y143116D01* +X418793Y143044D01* +X418828Y142970D01* +X418860Y142895D01* +X418888Y142819D01* +X418961Y142665D01* +X419030Y142510D01* +X419095Y142353D01* +X419157Y142195D01* +X419214Y142035D01* +X419268Y141874D01* +X419318Y141711D01* +X419364Y141548D01* +X419406Y141383D01* +X419444Y141217D01* +X419479Y141051D01* +X419509Y140884D01* +X419535Y140716D01* +X419557Y140548D01* +X419576Y140379D01* +X419590Y140209D01* +X419600Y140040D01* +X419606Y139870D01* +X419608Y139700D01* +X414810Y139700D02* +X414812Y139530D01* +X414818Y139360D01* +X414828Y139191D01* +X414842Y139021D01* +X414861Y138852D01* +X414883Y138684D01* +X414909Y138516D01* +X414939Y138349D01* +X414974Y138183D01* +X415012Y138017D01* +X415054Y137852D01* +X415100Y137689D01* +X415150Y137527D01* +X415204Y137365D01* +X415261Y137206D01* +X415323Y137047D01* +X415388Y136890D01* +X415457Y136735D01* +X415530Y136581D01* +X415558Y136505D01* +X415590Y136430D01* +X415625Y136356D01* +X415663Y136284D01* +X415705Y136214D01* +X415750Y136146D01* +X415798Y136080D01* +X415849Y136016D01* +X415903Y135955D01* +X415959Y135896D01* +X416019Y135840D01* +X416080Y135787D01* +X416144Y135737D01* +X416211Y135689D01* +X416279Y135645D01* +X416350Y135604D01* +X416422Y135566D01* +X416496Y135532D01* +X416571Y135501D01* +X416648Y135473D01* +X416726Y135449D01* +X416805Y135429D01* +X416885Y135412D01* +X416965Y135399D01* +X417046Y135389D01* +X417127Y135384D01* +X417209Y135382D01* +X418888Y136581D02* +X418961Y136735D01* +X419030Y136890D01* +X419095Y137047D01* +X419157Y137206D01* +X419214Y137365D01* +X419268Y137527D01* +X419318Y137689D01* +X419364Y137852D01* +X419406Y138017D01* +X419444Y138183D01* +X419479Y138349D01* +X419509Y138516D01* +X419535Y138684D01* +X419557Y138852D01* +X419576Y139021D01* +X419590Y139191D01* +X419600Y139360D01* +X419606Y139530D01* +X419608Y139700D01* +X418888Y136581D02* +X418860Y136505D01* +X418828Y136430D01* +X418793Y136356D01* +X418755Y136284D01* +X418713Y136214D01* +X418668Y136146D01* +X418620Y136080D01* +X418569Y136016D01* +X418515Y135955D01* +X418459Y135896D01* +X418399Y135840D01* +X418338Y135787D01* +X418274Y135737D01* +X418207Y135689D01* +X418139Y135645D01* +X418068Y135604D01* +X417996Y135566D01* +X417922Y135532D01* +X417847Y135501D01* +X417770Y135473D01* +X417692Y135449D01* +X417613Y135429D01* +X417533Y135412D01* +X417453Y135399D01* +X417372Y135389D01* +X417291Y135384D01* +X417209Y135382D01* +X415290Y137301D02* +X419128Y142099D01* +D13* +X441960Y302260D03* +D14* +X446024Y276211D02* +X437388Y276211D01* +X437388Y278610D01* +X437390Y278707D01* +X437396Y278803D01* +X437405Y278899D01* +X437419Y278995D01* +X437436Y279090D01* +X437458Y279184D01* +X437483Y279277D01* +X437511Y279370D01* +X437544Y279461D01* +X437580Y279550D01* +X437620Y279638D01* +X437663Y279725D01* +X437709Y279810D01* +X437759Y279892D01* +X437813Y279973D01* +X437869Y280051D01* +X437929Y280127D01* +X437991Y280201D01* +X438057Y280272D01* +X438125Y280340D01* +X438196Y280406D01* +X438270Y280468D01* +X438346Y280528D01* +X438424Y280584D01* +X438505Y280638D01* +X438588Y280688D01* +X438672Y280734D01* +X438759Y280777D01* +X438847Y280817D01* +X438936Y280853D01* +X439027Y280886D01* +X439120Y280914D01* +X439213Y280939D01* +X439307Y280961D01* +X439402Y280978D01* +X439498Y280992D01* +X439594Y281001D01* +X439690Y281007D01* +X439787Y281009D01* +X439884Y281007D01* +X439980Y281001D01* +X440076Y280992D01* +X440172Y280978D01* +X440267Y280961D01* +X440361Y280939D01* +X440454Y280914D01* +X440547Y280886D01* +X440638Y280853D01* +X440727Y280817D01* +X440815Y280777D01* +X440902Y280734D01* +X440987Y280688D01* +X441069Y280638D01* +X441150Y280584D01* +X441228Y280528D01* +X441304Y280468D01* +X441378Y280406D01* +X441449Y280340D01* +X441517Y280272D01* +X441583Y280201D01* +X441645Y280127D01* +X441705Y280051D01* +X441761Y279973D01* +X441815Y279892D01* +X441865Y279810D01* +X441911Y279725D01* +X441954Y279638D01* +X441994Y279550D01* +X442030Y279461D01* +X442063Y279370D01* +X442091Y279277D01* +X442116Y279184D01* +X442138Y279090D01* +X442155Y278995D01* +X442169Y278899D01* +X442178Y278803D01* +X442184Y278707D01* +X442186Y278610D01* +X442186Y276211D01* +X442186Y279090D02* +X446024Y281009D01* +X443625Y285270D02* +X443528Y285272D01* +X443432Y285278D01* +X443336Y285287D01* +X443240Y285301D01* +X443145Y285318D01* +X443051Y285340D01* +X442958Y285365D01* +X442865Y285393D01* +X442774Y285426D01* +X442685Y285462D01* +X442597Y285502D01* +X442510Y285545D01* +X442426Y285591D01* +X442343Y285641D01* +X442262Y285695D01* +X442184Y285751D01* +X442108Y285811D01* +X442034Y285873D01* +X441963Y285939D01* +X441895Y286007D01* +X441829Y286078D01* +X441767Y286152D01* +X441707Y286228D01* +X441651Y286306D01* +X441597Y286387D01* +X441547Y286470D01* +X441501Y286554D01* +X441458Y286641D01* +X441418Y286729D01* +X441382Y286818D01* +X441349Y286909D01* +X441321Y287002D01* +X441296Y287095D01* +X441274Y287189D01* +X441257Y287284D01* +X441243Y287380D01* +X441234Y287476D01* +X441228Y287572D01* +X441226Y287669D01* +X441228Y287766D01* +X441234Y287862D01* +X441243Y287958D01* +X441257Y288054D01* +X441274Y288149D01* +X441296Y288243D01* +X441321Y288336D01* +X441349Y288429D01* +X441382Y288520D01* +X441418Y288609D01* +X441458Y288697D01* +X441501Y288784D01* +X441547Y288869D01* +X441597Y288951D01* +X441651Y289032D01* +X441707Y289110D01* +X441767Y289186D01* +X441829Y289260D01* +X441895Y289331D01* +X441963Y289399D01* +X442034Y289465D01* +X442108Y289527D01* +X442184Y289587D01* +X442262Y289643D01* +X442343Y289697D01* +X442426Y289747D01* +X442510Y289793D01* +X442597Y289836D01* +X442685Y289876D01* +X442774Y289912D01* +X442865Y289945D01* +X442958Y289973D01* +X443051Y289998D01* +X443145Y290020D01* +X443240Y290037D01* +X443336Y290051D01* +X443432Y290060D01* +X443528Y290066D01* +X443625Y290068D01* +X443722Y290066D01* +X443818Y290060D01* +X443914Y290051D01* +X444010Y290037D01* +X444105Y290020D01* +X444199Y289998D01* +X444292Y289973D01* +X444385Y289945D01* +X444476Y289912D01* +X444565Y289876D01* +X444653Y289836D01* +X444740Y289793D01* +X444825Y289747D01* +X444907Y289697D01* +X444988Y289643D01* +X445066Y289587D01* +X445142Y289527D01* +X445216Y289465D01* +X445287Y289399D01* +X445355Y289331D01* +X445421Y289260D01* +X445483Y289186D01* +X445543Y289110D01* +X445599Y289032D01* +X445653Y288951D01* +X445703Y288869D01* +X445749Y288784D01* +X445792Y288697D01* +X445832Y288609D01* +X445868Y288520D01* +X445901Y288429D01* +X445929Y288336D01* +X445954Y288243D01* +X445976Y288149D01* +X445993Y288054D01* +X446007Y287958D01* +X446016Y287862D01* +X446022Y287766D01* +X446024Y287669D01* +X446022Y287572D01* +X446016Y287476D01* +X446007Y287380D01* +X445993Y287284D01* +X445976Y287189D01* +X445954Y287095D01* +X445929Y287002D01* +X445901Y286909D01* +X445868Y286818D01* +X445832Y286729D01* +X445792Y286641D01* +X445749Y286554D01* +X445703Y286470D01* +X445653Y286387D01* +X445599Y286306D01* +X445543Y286228D01* +X445483Y286152D01* +X445421Y286078D01* +X445355Y286007D01* +X445287Y285939D01* +X445216Y285873D01* +X445142Y285811D01* +X445066Y285751D01* +X444988Y285695D01* +X444907Y285641D01* +X444825Y285591D01* +X444740Y285545D01* +X444653Y285502D01* +X444565Y285462D01* +X444476Y285426D01* +X444385Y285393D01* +X444292Y285365D01* +X444199Y285340D01* +X444105Y285318D01* +X444010Y285301D01* +X443914Y285287D01* +X443818Y285278D01* +X443722Y285272D01* +X443625Y285270D01* +X439307Y285750D02* +X439221Y285752D01* +X439135Y285758D01* +X439049Y285767D01* +X438964Y285781D01* +X438880Y285798D01* +X438796Y285819D01* +X438714Y285844D01* +X438633Y285872D01* +X438553Y285904D01* +X438474Y285940D01* +X438398Y285979D01* +X438323Y286022D01* +X438250Y286067D01* +X438179Y286116D01* +X438111Y286169D01* +X438044Y286224D01* +X437981Y286282D01* +X437920Y286343D01* +X437862Y286406D01* +X437807Y286473D01* +X437754Y286541D01* +X437705Y286612D01* +X437660Y286685D01* +X437617Y286760D01* +X437578Y286836D01* +X437542Y286915D01* +X437510Y286995D01* +X437482Y287076D01* +X437457Y287158D01* +X437436Y287242D01* +X437419Y287326D01* +X437405Y287411D01* +X437396Y287497D01* +X437390Y287583D01* +X437388Y287669D01* +X437390Y287755D01* +X437396Y287841D01* +X437405Y287927D01* +X437419Y288012D01* +X437436Y288096D01* +X437457Y288180D01* +X437482Y288262D01* +X437510Y288343D01* +X437542Y288423D01* +X437578Y288502D01* +X437617Y288578D01* +X437660Y288653D01* +X437705Y288726D01* +X437754Y288797D01* +X437807Y288865D01* +X437862Y288932D01* +X437920Y288995D01* +X437981Y289056D01* +X438044Y289114D01* +X438111Y289169D01* +X438179Y289222D01* +X438250Y289271D01* +X438323Y289316D01* +X438398Y289359D01* +X438474Y289398D01* +X438553Y289434D01* +X438633Y289466D01* +X438714Y289494D01* +X438796Y289519D01* +X438880Y289540D01* +X438964Y289557D01* +X439049Y289571D01* +X439135Y289580D01* +X439221Y289586D01* +X439307Y289588D01* +X439393Y289586D01* +X439479Y289580D01* +X439565Y289571D01* +X439650Y289557D01* +X439734Y289540D01* +X439818Y289519D01* +X439900Y289494D01* +X439981Y289466D01* +X440061Y289434D01* +X440140Y289398D01* +X440216Y289359D01* +X440291Y289316D01* +X440364Y289271D01* +X440435Y289222D01* +X440503Y289169D01* +X440570Y289114D01* +X440633Y289056D01* +X440694Y288995D01* +X440752Y288932D01* +X440807Y288865D01* +X440860Y288797D01* +X440909Y288726D01* +X440954Y288653D01* +X440997Y288578D01* +X441036Y288502D01* +X441072Y288423D01* +X441104Y288343D01* +X441132Y288262D01* +X441157Y288180D01* +X441178Y288096D01* +X441195Y288012D01* +X441209Y287927D01* +X441218Y287841D01* +X441224Y287755D01* +X441226Y287669D01* +X441224Y287583D01* +X441218Y287497D01* +X441209Y287411D01* +X441195Y287326D01* +X441178Y287242D01* +X441157Y287158D01* +X441132Y287076D01* +X441104Y286995D01* +X441072Y286915D01* +X441036Y286836D01* +X440997Y286760D01* +X440954Y286685D01* +X440909Y286612D01* +X440860Y286541D01* +X440807Y286473D01* +X440752Y286406D01* +X440694Y286343D01* +X440633Y286282D01* +X440570Y286224D01* +X440503Y286169D01* +X440435Y286116D01* +X440364Y286067D01* +X440291Y286022D01* +X440216Y285979D01* +X440140Y285940D01* +X440061Y285904D01* +X439981Y285872D01* +X439900Y285844D01* +X439818Y285819D01* +X439734Y285798D01* +X439650Y285781D01* +X439565Y285767D01* +X439479Y285758D01* +X439393Y285752D01* +X439307Y285750D01* +D17* +X434340Y127000D03* +D14* +X396607Y128778D02* +X396607Y120142D01* +X396607Y128778D02* +X399006Y128778D01* +X399103Y128776D01* +X399199Y128770D01* +X399295Y128761D01* +X399391Y128747D01* +X399486Y128730D01* +X399580Y128708D01* +X399673Y128683D01* +X399766Y128655D01* +X399857Y128622D01* +X399946Y128586D01* +X400034Y128546D01* +X400121Y128503D01* +X400206Y128457D01* +X400288Y128407D01* +X400369Y128353D01* +X400447Y128297D01* +X400523Y128237D01* +X400597Y128175D01* +X400668Y128109D01* +X400736Y128041D01* +X400802Y127970D01* +X400864Y127896D01* +X400924Y127820D01* +X400980Y127742D01* +X401034Y127661D01* +X401084Y127578D01* +X401130Y127494D01* +X401173Y127407D01* +X401213Y127319D01* +X401249Y127230D01* +X401282Y127139D01* +X401310Y127046D01* +X401335Y126953D01* +X401357Y126859D01* +X401374Y126764D01* +X401388Y126668D01* +X401397Y126572D01* +X401403Y126476D01* +X401405Y126379D01* +X401403Y126282D01* +X401397Y126186D01* +X401388Y126090D01* +X401374Y125994D01* +X401357Y125899D01* +X401335Y125805D01* +X401310Y125712D01* +X401282Y125619D01* +X401249Y125528D01* +X401213Y125439D01* +X401173Y125351D01* +X401130Y125264D01* +X401084Y125179D01* +X401034Y125097D01* +X400980Y125016D01* +X400924Y124938D01* +X400864Y124862D01* +X400802Y124788D01* +X400736Y124717D01* +X400668Y124649D01* +X400597Y124583D01* +X400523Y124521D01* +X400447Y124461D01* +X400369Y124405D01* +X400288Y124351D01* +X400206Y124301D01* +X400121Y124255D01* +X400034Y124212D01* +X399946Y124172D01* +X399857Y124136D01* +X399766Y124103D01* +X399673Y124075D01* +X399580Y124050D01* +X399486Y124028D01* +X399391Y124011D01* +X399295Y123997D01* +X399199Y123988D01* +X399103Y123982D01* +X399006Y123980D01* +X396607Y123980D01* +X399486Y123980D02* +X401405Y120142D01* +X405666Y122061D02* +X407585Y128778D01* +X405666Y122061D02* +X410464Y122061D01* +X409025Y123980D02* +X409025Y120142D01* +X414810Y126859D02* +X417209Y128778D01* +X417209Y120142D01* +X414810Y120142D02* +X419608Y120142D01* +D17* +X546100Y190500D03* +D14* +X582422Y225044D02* +X582422Y233680D01* +X584821Y233680D01* +X584918Y233678D01* +X585014Y233672D01* +X585110Y233663D01* +X585206Y233649D01* +X585301Y233632D01* +X585395Y233610D01* +X585488Y233585D01* +X585581Y233557D01* +X585672Y233524D01* +X585761Y233488D01* +X585849Y233448D01* +X585936Y233405D01* +X586021Y233359D01* +X586103Y233309D01* +X586184Y233255D01* +X586262Y233199D01* +X586338Y233139D01* +X586412Y233077D01* +X586483Y233011D01* +X586551Y232943D01* +X586617Y232872D01* +X586679Y232798D01* +X586739Y232722D01* +X586795Y232644D01* +X586849Y232563D01* +X586899Y232480D01* +X586945Y232396D01* +X586988Y232309D01* +X587028Y232221D01* +X587064Y232132D01* +X587097Y232041D01* +X587125Y231948D01* +X587150Y231855D01* +X587172Y231761D01* +X587189Y231666D01* +X587203Y231570D01* +X587212Y231474D01* +X587218Y231378D01* +X587220Y231281D01* +X587218Y231184D01* +X587212Y231088D01* +X587203Y230992D01* +X587189Y230896D01* +X587172Y230801D01* +X587150Y230707D01* +X587125Y230614D01* +X587097Y230521D01* +X587064Y230430D01* +X587028Y230341D01* +X586988Y230253D01* +X586945Y230166D01* +X586899Y230082D01* +X586849Y229999D01* +X586795Y229918D01* +X586739Y229840D01* +X586679Y229764D01* +X586617Y229690D01* +X586551Y229619D01* +X586483Y229551D01* +X586412Y229485D01* +X586338Y229423D01* +X586262Y229363D01* +X586184Y229307D01* +X586103Y229253D01* +X586021Y229203D01* +X585936Y229157D01* +X585849Y229114D01* +X585761Y229074D01* +X585672Y229038D01* +X585581Y229005D01* +X585488Y228977D01* +X585395Y228952D01* +X585301Y228930D01* +X585206Y228913D01* +X585110Y228899D01* +X585014Y228890D01* +X584918Y228884D01* +X584821Y228882D01* +X582422Y228882D01* +X585301Y228882D02* +X587220Y225044D01* +X591481Y225044D02* +X593880Y225044D01* +X593977Y225046D01* +X594073Y225052D01* +X594169Y225061D01* +X594265Y225075D01* +X594360Y225092D01* +X594454Y225114D01* +X594547Y225139D01* +X594640Y225167D01* +X594731Y225200D01* +X594820Y225236D01* +X594908Y225276D01* +X594995Y225319D01* +X595080Y225365D01* +X595162Y225415D01* +X595243Y225469D01* +X595321Y225525D01* +X595397Y225585D01* +X595471Y225647D01* +X595542Y225713D01* +X595610Y225781D01* +X595676Y225852D01* +X595738Y225926D01* +X595798Y226002D01* +X595854Y226080D01* +X595908Y226161D01* +X595958Y226244D01* +X596004Y226328D01* +X596047Y226415D01* +X596087Y226503D01* +X596123Y226592D01* +X596156Y226683D01* +X596184Y226776D01* +X596209Y226869D01* +X596231Y226963D01* +X596248Y227058D01* +X596262Y227154D01* +X596271Y227250D01* +X596277Y227346D01* +X596279Y227443D01* +X596277Y227540D01* +X596271Y227636D01* +X596262Y227732D01* +X596248Y227828D01* +X596231Y227923D01* +X596209Y228017D01* +X596184Y228110D01* +X596156Y228203D01* +X596123Y228294D01* +X596087Y228383D01* +X596047Y228471D01* +X596004Y228558D01* +X595958Y228642D01* +X595908Y228725D01* +X595854Y228806D01* +X595798Y228884D01* +X595738Y228960D01* +X595676Y229034D01* +X595610Y229105D01* +X595542Y229173D01* +X595471Y229239D01* +X595397Y229301D01* +X595321Y229361D01* +X595243Y229417D01* +X595162Y229471D01* +X595080Y229521D01* +X594995Y229567D01* +X594908Y229610D01* +X594820Y229650D01* +X594731Y229686D01* +X594640Y229719D01* +X594547Y229747D01* +X594454Y229772D01* +X594360Y229794D01* +X594265Y229811D01* +X594169Y229825D01* +X594073Y229834D01* +X593977Y229840D01* +X593880Y229842D01* +X594360Y233680D02* +X591481Y233680D01* +X594360Y233680D02* +X594446Y233678D01* +X594532Y233672D01* +X594618Y233663D01* +X594703Y233649D01* +X594787Y233632D01* +X594871Y233611D01* +X594953Y233586D01* +X595034Y233558D01* +X595114Y233526D01* +X595193Y233490D01* +X595269Y233451D01* +X595344Y233408D01* +X595417Y233363D01* +X595488Y233314D01* +X595556Y233261D01* +X595623Y233206D01* +X595686Y233148D01* +X595747Y233087D01* +X595805Y233024D01* +X595860Y232957D01* +X595913Y232889D01* +X595962Y232818D01* +X596007Y232745D01* +X596050Y232670D01* +X596089Y232594D01* +X596125Y232515D01* +X596157Y232435D01* +X596185Y232354D01* +X596210Y232272D01* +X596231Y232188D01* +X596248Y232104D01* +X596262Y232019D01* +X596271Y231933D01* +X596277Y231847D01* +X596279Y231761D01* +X596277Y231675D01* +X596271Y231589D01* +X596262Y231503D01* +X596248Y231418D01* +X596231Y231334D01* +X596210Y231250D01* +X596185Y231168D01* +X596157Y231087D01* +X596125Y231007D01* +X596089Y230928D01* +X596050Y230852D01* +X596007Y230777D01* +X595962Y230704D01* +X595913Y230633D01* +X595860Y230565D01* +X595805Y230498D01* +X595747Y230435D01* +X595686Y230374D01* +X595623Y230316D01* +X595556Y230261D01* +X595488Y230208D01* +X595417Y230159D01* +X595344Y230114D01* +X595269Y230071D01* +X595193Y230032D01* +X595114Y229996D01* +X595034Y229964D01* +X594953Y229936D01* +X594871Y229911D01* +X594787Y229890D01* +X594703Y229873D01* +X594618Y229859D01* +X594532Y229850D01* +X594446Y229844D01* +X594360Y229842D01* +X592441Y229842D01* +X603264Y233680D02* +X603356Y233678D01* +X603447Y233672D01* +X603538Y233663D01* +X603629Y233649D01* +X603719Y233632D01* +X603808Y233610D01* +X603896Y233585D01* +X603983Y233557D01* +X604069Y233524D01* +X604153Y233488D01* +X604236Y233449D01* +X604317Y233406D01* +X604396Y233359D01* +X604473Y233310D01* +X604548Y233257D01* +X604620Y233201D01* +X604690Y233142D01* +X604758Y233080D01* +X604823Y233015D01* +X604885Y232947D01* +X604944Y232877D01* +X605000Y232805D01* +X605053Y232730D01* +X605102Y232653D01* +X605149Y232574D01* +X605192Y232493D01* +X605231Y232410D01* +X605267Y232326D01* +X605300Y232240D01* +X605328Y232153D01* +X605353Y232065D01* +X605375Y231976D01* +X605392Y231886D01* +X605406Y231795D01* +X605415Y231704D01* +X605421Y231613D01* +X605423Y231521D01* +X603264Y233680D02* +X603161Y233678D01* +X603059Y233672D01* +X602957Y233663D01* +X602855Y233650D01* +X602754Y233633D01* +X602653Y233612D01* +X602554Y233588D01* +X602455Y233559D01* +X602358Y233528D01* +X602261Y233492D01* +X602166Y233454D01* +X602073Y233411D01* +X601981Y233365D01* +X601891Y233316D01* +X601803Y233264D01* +X601716Y233208D01* +X601632Y233149D01* +X601551Y233088D01* +X601471Y233023D01* +X601394Y232955D01* +X601319Y232884D01* +X601248Y232811D01* +X601179Y232735D01* +X601112Y232657D01* +X601049Y232576D01* +X600989Y232493D01* +X600932Y232408D01* +X600878Y232321D01* +X600827Y232231D01* +X600780Y232140D01* +X600736Y232048D01* +X600695Y231953D01* +X600658Y231858D01* +X600625Y231761D01* +X604703Y229842D02* +X604770Y229908D01* +X604834Y229977D01* +X604895Y230048D01* +X604953Y230122D01* +X605008Y230198D01* +X605060Y230276D01* +X605109Y230356D01* +X605155Y230438D01* +X605197Y230522D01* +X605236Y230608D01* +X605271Y230695D01* +X605302Y230783D01* +X605330Y230873D01* +X605355Y230963D01* +X605376Y231055D01* +X605393Y231147D01* +X605406Y231240D01* +X605415Y231333D01* +X605421Y231427D01* +X605423Y231521D01* +X604703Y229842D02* +X600625Y225044D01* +X605423Y225044D01* +D17* +X533400Y215900D03* +D14* +X545592Y213360D02* +X545592Y221996D01* +X547991Y221996D01* +X548088Y221994D01* +X548184Y221988D01* +X548280Y221979D01* +X548376Y221965D01* +X548471Y221948D01* +X548565Y221926D01* +X548658Y221901D01* +X548751Y221873D01* +X548842Y221840D01* +X548931Y221804D01* +X549019Y221764D01* +X549106Y221721D01* +X549191Y221675D01* +X549273Y221625D01* +X549354Y221571D01* +X549432Y221515D01* +X549508Y221455D01* +X549582Y221393D01* +X549653Y221327D01* +X549721Y221259D01* +X549787Y221188D01* +X549849Y221114D01* +X549909Y221038D01* +X549965Y220960D01* +X550019Y220879D01* +X550069Y220796D01* +X550115Y220712D01* +X550158Y220625D01* +X550198Y220537D01* +X550234Y220448D01* +X550267Y220357D01* +X550295Y220264D01* +X550320Y220171D01* +X550342Y220077D01* +X550359Y219982D01* +X550373Y219886D01* +X550382Y219790D01* +X550388Y219694D01* +X550390Y219597D01* +X550388Y219500D01* +X550382Y219404D01* +X550373Y219308D01* +X550359Y219212D01* +X550342Y219117D01* +X550320Y219023D01* +X550295Y218930D01* +X550267Y218837D01* +X550234Y218746D01* +X550198Y218657D01* +X550158Y218569D01* +X550115Y218482D01* +X550069Y218398D01* +X550019Y218315D01* +X549965Y218234D01* +X549909Y218156D01* +X549849Y218080D01* +X549787Y218006D01* +X549721Y217935D01* +X549653Y217867D01* +X549582Y217801D01* +X549508Y217739D01* +X549432Y217679D01* +X549354Y217623D01* +X549273Y217569D01* +X549191Y217519D01* +X549106Y217473D01* +X549019Y217430D01* +X548931Y217390D01* +X548842Y217354D01* +X548751Y217321D01* +X548658Y217293D01* +X548565Y217268D01* +X548471Y217246D01* +X548376Y217229D01* +X548280Y217215D01* +X548184Y217206D01* +X548088Y217200D01* +X547991Y217198D01* +X545592Y217198D01* +X548471Y217198D02* +X550390Y213360D01* +X554651Y213360D02* +X557050Y213360D01* +X557147Y213362D01* +X557243Y213368D01* +X557339Y213377D01* +X557435Y213391D01* +X557530Y213408D01* +X557624Y213430D01* +X557717Y213455D01* +X557810Y213483D01* +X557901Y213516D01* +X557990Y213552D01* +X558078Y213592D01* +X558165Y213635D01* +X558250Y213681D01* +X558332Y213731D01* +X558413Y213785D01* +X558491Y213841D01* +X558567Y213901D01* +X558641Y213963D01* +X558712Y214029D01* +X558780Y214097D01* +X558846Y214168D01* +X558908Y214242D01* +X558968Y214318D01* +X559024Y214396D01* +X559078Y214477D01* +X559128Y214560D01* +X559174Y214644D01* +X559217Y214731D01* +X559257Y214819D01* +X559293Y214908D01* +X559326Y214999D01* +X559354Y215092D01* +X559379Y215185D01* +X559401Y215279D01* +X559418Y215374D01* +X559432Y215470D01* +X559441Y215566D01* +X559447Y215662D01* +X559449Y215759D01* +X559447Y215856D01* +X559441Y215952D01* +X559432Y216048D01* +X559418Y216144D01* +X559401Y216239D01* +X559379Y216333D01* +X559354Y216426D01* +X559326Y216519D01* +X559293Y216610D01* +X559257Y216699D01* +X559217Y216787D01* +X559174Y216874D01* +X559128Y216958D01* +X559078Y217041D01* +X559024Y217122D01* +X558968Y217200D01* +X558908Y217276D01* +X558846Y217350D01* +X558780Y217421D01* +X558712Y217489D01* +X558641Y217555D01* +X558567Y217617D01* +X558491Y217677D01* +X558413Y217733D01* +X558332Y217787D01* +X558250Y217837D01* +X558165Y217883D01* +X558078Y217926D01* +X557990Y217966D01* +X557901Y218002D01* +X557810Y218035D01* +X557717Y218063D01* +X557624Y218088D01* +X557530Y218110D01* +X557435Y218127D01* +X557339Y218141D01* +X557243Y218150D01* +X557147Y218156D01* +X557050Y218158D01* +X557530Y221996D02* +X554651Y221996D01* +X557530Y221996D02* +X557616Y221994D01* +X557702Y221988D01* +X557788Y221979D01* +X557873Y221965D01* +X557957Y221948D01* +X558041Y221927D01* +X558123Y221902D01* +X558204Y221874D01* +X558284Y221842D01* +X558363Y221806D01* +X558439Y221767D01* +X558514Y221724D01* +X558587Y221679D01* +X558658Y221630D01* +X558726Y221577D01* +X558793Y221522D01* +X558856Y221464D01* +X558917Y221403D01* +X558975Y221340D01* +X559030Y221273D01* +X559083Y221205D01* +X559132Y221134D01* +X559177Y221061D01* +X559220Y220986D01* +X559259Y220910D01* +X559295Y220831D01* +X559327Y220751D01* +X559355Y220670D01* +X559380Y220588D01* +X559401Y220504D01* +X559418Y220420D01* +X559432Y220335D01* +X559441Y220249D01* +X559447Y220163D01* +X559449Y220077D01* +X559447Y219991D01* +X559441Y219905D01* +X559432Y219819D01* +X559418Y219734D01* +X559401Y219650D01* +X559380Y219566D01* +X559355Y219484D01* +X559327Y219403D01* +X559295Y219323D01* +X559259Y219244D01* +X559220Y219168D01* +X559177Y219093D01* +X559132Y219020D01* +X559083Y218949D01* +X559030Y218881D01* +X558975Y218814D01* +X558917Y218751D01* +X558856Y218690D01* +X558793Y218632D01* +X558726Y218577D01* +X558658Y218524D01* +X558587Y218475D01* +X558514Y218430D01* +X558439Y218387D01* +X558363Y218348D01* +X558284Y218312D01* +X558204Y218280D01* +X558123Y218252D01* +X558041Y218227D01* +X557957Y218206D01* +X557873Y218189D01* +X557788Y218175D01* +X557702Y218166D01* +X557616Y218160D01* +X557530Y218158D01* +X555611Y218158D01* +X563795Y220077D02* +X566194Y221996D01* +X566194Y213360D01* +X563795Y213360D02* +X568593Y213360D01* +D13* +X543560Y149860D03* +D14* +X549402Y126351D02* +X558038Y126351D01* +X549402Y126351D02* +X549402Y128750D01* +X549404Y128847D01* +X549410Y128943D01* +X549419Y129039D01* +X549433Y129135D01* +X549450Y129230D01* +X549472Y129324D01* +X549497Y129417D01* +X549525Y129510D01* +X549558Y129601D01* +X549594Y129690D01* +X549634Y129778D01* +X549677Y129865D01* +X549723Y129950D01* +X549773Y130032D01* +X549827Y130113D01* +X549883Y130191D01* +X549943Y130267D01* +X550005Y130341D01* +X550071Y130412D01* +X550139Y130480D01* +X550210Y130546D01* +X550284Y130608D01* +X550360Y130668D01* +X550438Y130724D01* +X550519Y130778D01* +X550602Y130828D01* +X550686Y130874D01* +X550773Y130917D01* +X550861Y130957D01* +X550950Y130993D01* +X551041Y131026D01* +X551134Y131054D01* +X551227Y131079D01* +X551321Y131101D01* +X551416Y131118D01* +X551512Y131132D01* +X551608Y131141D01* +X551704Y131147D01* +X551801Y131149D01* +X551898Y131147D01* +X551994Y131141D01* +X552090Y131132D01* +X552186Y131118D01* +X552281Y131101D01* +X552375Y131079D01* +X552468Y131054D01* +X552561Y131026D01* +X552652Y130993D01* +X552741Y130957D01* +X552829Y130917D01* +X552916Y130874D01* +X553001Y130828D01* +X553083Y130778D01* +X553164Y130724D01* +X553242Y130668D01* +X553318Y130608D01* +X553392Y130546D01* +X553463Y130480D01* +X553531Y130412D01* +X553597Y130341D01* +X553659Y130267D01* +X553719Y130191D01* +X553775Y130113D01* +X553829Y130032D01* +X553879Y129950D01* +X553925Y129865D01* +X553968Y129778D01* +X554008Y129690D01* +X554044Y129601D01* +X554077Y129510D01* +X554105Y129417D01* +X554130Y129324D01* +X554152Y129230D01* +X554169Y129135D01* +X554183Y129039D01* +X554192Y128943D01* +X554198Y128847D01* +X554200Y128750D01* +X554200Y126351D01* +X554200Y129230D02* +X558038Y131149D01* +X558038Y135410D02* +X558038Y137809D01* +X558036Y137906D01* +X558030Y138002D01* +X558021Y138098D01* +X558007Y138194D01* +X557990Y138289D01* +X557968Y138383D01* +X557943Y138476D01* +X557915Y138569D01* +X557882Y138660D01* +X557846Y138749D01* +X557806Y138837D01* +X557763Y138924D01* +X557717Y139009D01* +X557667Y139091D01* +X557613Y139172D01* +X557557Y139250D01* +X557497Y139326D01* +X557435Y139400D01* +X557369Y139471D01* +X557301Y139539D01* +X557230Y139605D01* +X557156Y139667D01* +X557080Y139727D01* +X557002Y139783D01* +X556921Y139837D01* +X556839Y139887D01* +X556754Y139933D01* +X556667Y139976D01* +X556579Y140016D01* +X556490Y140052D01* +X556399Y140085D01* +X556306Y140113D01* +X556213Y140138D01* +X556119Y140160D01* +X556024Y140177D01* +X555928Y140191D01* +X555832Y140200D01* +X555736Y140206D01* +X555639Y140208D01* +X555542Y140206D01* +X555446Y140200D01* +X555350Y140191D01* +X555254Y140177D01* +X555159Y140160D01* +X555065Y140138D01* +X554972Y140113D01* +X554879Y140085D01* +X554788Y140052D01* +X554699Y140016D01* +X554611Y139976D01* +X554524Y139933D01* +X554440Y139887D01* +X554357Y139837D01* +X554276Y139783D01* +X554198Y139727D01* +X554122Y139667D01* +X554048Y139605D01* +X553977Y139539D01* +X553909Y139471D01* +X553843Y139400D01* +X553781Y139326D01* +X553721Y139250D01* +X553665Y139172D01* +X553611Y139091D01* +X553561Y139009D01* +X553515Y138924D01* +X553472Y138837D01* +X553432Y138749D01* +X553396Y138660D01* +X553363Y138569D01* +X553335Y138476D01* +X553310Y138383D01* +X553288Y138289D01* +X553271Y138194D01* +X553257Y138098D01* +X553248Y138002D01* +X553242Y137906D01* +X553240Y137809D01* +X549402Y138289D02* +X549402Y135410D01* +X549402Y138289D02* +X549404Y138375D01* +X549410Y138461D01* +X549419Y138547D01* +X549433Y138632D01* +X549450Y138716D01* +X549471Y138800D01* +X549496Y138882D01* +X549524Y138963D01* +X549556Y139043D01* +X549592Y139122D01* +X549631Y139198D01* +X549674Y139273D01* +X549719Y139346D01* +X549768Y139417D01* +X549821Y139485D01* +X549876Y139552D01* +X549934Y139615D01* +X549995Y139676D01* +X550058Y139734D01* +X550125Y139789D01* +X550193Y139842D01* +X550264Y139891D01* +X550337Y139936D01* +X550412Y139979D01* +X550488Y140018D01* +X550567Y140054D01* +X550647Y140086D01* +X550728Y140114D01* +X550810Y140139D01* +X550894Y140160D01* +X550978Y140177D01* +X551063Y140191D01* +X551149Y140200D01* +X551235Y140206D01* +X551321Y140208D01* +X551407Y140206D01* +X551493Y140200D01* +X551579Y140191D01* +X551664Y140177D01* +X551748Y140160D01* +X551832Y140139D01* +X551914Y140114D01* +X551995Y140086D01* +X552075Y140054D01* +X552154Y140018D01* +X552230Y139979D01* +X552305Y139936D01* +X552378Y139891D01* +X552449Y139842D01* +X552517Y139789D01* +X552584Y139734D01* +X552647Y139676D01* +X552708Y139615D01* +X552766Y139552D01* +X552821Y139485D01* +X552874Y139417D01* +X552923Y139346D01* +X552968Y139273D01* +X553011Y139198D01* +X553050Y139122D01* +X553086Y139043D01* +X553118Y138963D01* +X553146Y138882D01* +X553171Y138800D01* +X553192Y138716D01* +X553209Y138632D01* +X553223Y138547D01* +X553232Y138461D01* +X553238Y138375D01* +X553240Y138289D01* +X553240Y136370D01* +X553720Y144554D02* +X553550Y144556D01* +X553380Y144562D01* +X553211Y144572D01* +X553041Y144586D01* +X552872Y144605D01* +X552704Y144627D01* +X552536Y144653D01* +X552369Y144683D01* +X552203Y144718D01* +X552037Y144756D01* +X551872Y144798D01* +X551709Y144844D01* +X551547Y144894D01* +X551385Y144948D01* +X551226Y145005D01* +X551067Y145067D01* +X550910Y145132D01* +X550755Y145201D01* +X550601Y145274D01* +X550525Y145302D01* +X550450Y145334D01* +X550376Y145369D01* +X550304Y145407D01* +X550234Y145449D01* +X550166Y145494D01* +X550100Y145542D01* +X550036Y145593D01* +X549975Y145647D01* +X549916Y145703D01* +X549860Y145763D01* +X549807Y145824D01* +X549757Y145888D01* +X549709Y145955D01* +X549665Y146023D01* +X549624Y146094D01* +X549586Y146166D01* +X549552Y146240D01* +X549521Y146315D01* +X549493Y146392D01* +X549469Y146470D01* +X549449Y146549D01* +X549432Y146629D01* +X549419Y146709D01* +X549409Y146790D01* +X549404Y146871D01* +X549402Y146953D01* +X549404Y147035D01* +X549409Y147116D01* +X549419Y147197D01* +X549432Y147277D01* +X549449Y147357D01* +X549469Y147436D01* +X549493Y147514D01* +X549521Y147591D01* +X549552Y147666D01* +X549586Y147740D01* +X549624Y147812D01* +X549665Y147883D01* +X549709Y147951D01* +X549757Y148018D01* +X549807Y148082D01* +X549860Y148143D01* +X549916Y148203D01* +X549975Y148259D01* +X550036Y148313D01* +X550100Y148364D01* +X550166Y148412D01* +X550234Y148457D01* +X550304Y148499D01* +X550376Y148537D01* +X550450Y148572D01* +X550525Y148604D01* +X550601Y148632D01* +X550755Y148705D01* +X550910Y148774D01* +X551067Y148839D01* +X551226Y148901D01* +X551385Y148958D01* +X551547Y149012D01* +X551709Y149062D01* +X551872Y149108D01* +X552037Y149150D01* +X552203Y149188D01* +X552369Y149223D01* +X552536Y149253D01* +X552704Y149279D01* +X552872Y149301D01* +X553041Y149320D01* +X553211Y149334D01* +X553380Y149344D01* +X553550Y149350D01* +X553720Y149352D01* +X553720Y144554D02* +X553890Y144556D01* +X554060Y144562D01* +X554229Y144572D01* +X554399Y144586D01* +X554568Y144605D01* +X554736Y144627D01* +X554904Y144653D01* +X555071Y144683D01* +X555237Y144718D01* +X555403Y144756D01* +X555568Y144798D01* +X555731Y144844D01* +X555893Y144894D01* +X556055Y144948D01* +X556214Y145005D01* +X556373Y145067D01* +X556530Y145132D01* +X556685Y145201D01* +X556839Y145274D01* +X556915Y145302D01* +X556990Y145334D01* +X557064Y145369D01* +X557136Y145407D01* +X557206Y145449D01* +X557274Y145494D01* +X557340Y145542D01* +X557404Y145593D01* +X557465Y145647D01* +X557524Y145703D01* +X557580Y145763D01* +X557633Y145824D01* +X557683Y145888D01* +X557731Y145955D01* +X557775Y146023D01* +X557816Y146094D01* +X557854Y146166D01* +X557888Y146240D01* +X557919Y146315D01* +X557947Y146392D01* +X557971Y146470D01* +X557991Y146549D01* +X558008Y146629D01* +X558021Y146709D01* +X558031Y146790D01* +X558036Y146871D01* +X558038Y146953D01* +X556839Y148632D02* +X556685Y148705D01* +X556530Y148774D01* +X556373Y148839D01* +X556214Y148901D01* +X556055Y148958D01* +X555893Y149012D01* +X555731Y149062D01* +X555568Y149108D01* +X555403Y149150D01* +X555237Y149188D01* +X555071Y149223D01* +X554904Y149253D01* +X554736Y149279D01* +X554568Y149301D01* +X554399Y149320D01* +X554229Y149334D01* +X554060Y149344D01* +X553890Y149350D01* +X553720Y149352D01* +X556839Y148632D02* +X556915Y148604D01* +X556990Y148572D01* +X557064Y148537D01* +X557136Y148499D01* +X557206Y148457D01* +X557274Y148412D01* +X557340Y148364D01* +X557404Y148313D01* +X557465Y148259D01* +X557524Y148203D01* +X557580Y148143D01* +X557633Y148082D01* +X557683Y148018D01* +X557731Y147951D01* +X557775Y147883D01* +X557816Y147812D01* +X557854Y147740D01* +X557888Y147666D01* +X557919Y147591D01* +X557947Y147514D01* +X557971Y147436D01* +X557991Y147357D01* +X558008Y147277D01* +X558021Y147197D01* +X558031Y147116D01* +X558036Y147035D01* +X558038Y146953D01* +X556119Y145034D02* +X551321Y148872D01* +D17* +X561340Y170180D03* +D14* +X573278Y169672D02* +X573278Y161036D01* +X573278Y169672D02* +X575677Y169672D01* +X575774Y169670D01* +X575870Y169664D01* +X575966Y169655D01* +X576062Y169641D01* +X576157Y169624D01* +X576251Y169602D01* +X576344Y169577D01* +X576437Y169549D01* +X576528Y169516D01* +X576617Y169480D01* +X576705Y169440D01* +X576792Y169397D01* +X576877Y169351D01* +X576959Y169301D01* +X577040Y169247D01* +X577118Y169191D01* +X577194Y169131D01* +X577268Y169069D01* +X577339Y169003D01* +X577407Y168935D01* +X577473Y168864D01* +X577535Y168790D01* +X577595Y168714D01* +X577651Y168636D01* +X577705Y168555D01* +X577755Y168472D01* +X577801Y168388D01* +X577844Y168301D01* +X577884Y168213D01* +X577920Y168124D01* +X577953Y168033D01* +X577981Y167940D01* +X578006Y167847D01* +X578028Y167753D01* +X578045Y167658D01* +X578059Y167562D01* +X578068Y167466D01* +X578074Y167370D01* +X578076Y167273D01* +X578074Y167176D01* +X578068Y167080D01* +X578059Y166984D01* +X578045Y166888D01* +X578028Y166793D01* +X578006Y166699D01* +X577981Y166606D01* +X577953Y166513D01* +X577920Y166422D01* +X577884Y166333D01* +X577844Y166245D01* +X577801Y166158D01* +X577755Y166074D01* +X577705Y165991D01* +X577651Y165910D01* +X577595Y165832D01* +X577535Y165756D01* +X577473Y165682D01* +X577407Y165611D01* +X577339Y165543D01* +X577268Y165477D01* +X577194Y165415D01* +X577118Y165355D01* +X577040Y165299D01* +X576959Y165245D01* +X576877Y165195D01* +X576792Y165149D01* +X576705Y165106D01* +X576617Y165066D01* +X576528Y165030D01* +X576437Y164997D01* +X576344Y164969D01* +X576251Y164944D01* +X576157Y164922D01* +X576062Y164905D01* +X575966Y164891D01* +X575870Y164882D01* +X575774Y164876D01* +X575677Y164874D01* +X573278Y164874D01* +X576157Y164874D02* +X578076Y161036D01* +X584976Y169672D02* +X585068Y169670D01* +X585159Y169664D01* +X585250Y169655D01* +X585341Y169641D01* +X585431Y169624D01* +X585520Y169602D01* +X585608Y169577D01* +X585695Y169549D01* +X585781Y169516D01* +X585865Y169480D01* +X585948Y169441D01* +X586029Y169398D01* +X586108Y169351D01* +X586185Y169302D01* +X586260Y169249D01* +X586332Y169193D01* +X586402Y169134D01* +X586470Y169072D01* +X586535Y169007D01* +X586597Y168939D01* +X586656Y168869D01* +X586712Y168797D01* +X586765Y168722D01* +X586814Y168645D01* +X586861Y168566D01* +X586904Y168485D01* +X586943Y168402D01* +X586979Y168318D01* +X587012Y168232D01* +X587040Y168145D01* +X587065Y168057D01* +X587087Y167968D01* +X587104Y167878D01* +X587118Y167787D01* +X587127Y167696D01* +X587133Y167605D01* +X587135Y167513D01* +X584976Y169672D02* +X584873Y169670D01* +X584771Y169664D01* +X584669Y169655D01* +X584567Y169642D01* +X584466Y169625D01* +X584365Y169604D01* +X584266Y169580D01* +X584167Y169551D01* +X584070Y169520D01* +X583973Y169484D01* +X583878Y169446D01* +X583785Y169403D01* +X583693Y169357D01* +X583603Y169308D01* +X583515Y169256D01* +X583428Y169200D01* +X583344Y169141D01* +X583263Y169080D01* +X583183Y169015D01* +X583106Y168947D01* +X583031Y168876D01* +X582960Y168803D01* +X582891Y168727D01* +X582824Y168649D01* +X582761Y168568D01* +X582701Y168485D01* +X582644Y168400D01* +X582590Y168313D01* +X582539Y168223D01* +X582492Y168132D01* +X582448Y168040D01* +X582407Y167945D01* +X582370Y167850D01* +X582337Y167753D01* +X586415Y165834D02* +X586482Y165900D01* +X586546Y165969D01* +X586607Y166040D01* +X586665Y166114D01* +X586720Y166190D01* +X586772Y166268D01* +X586821Y166348D01* +X586867Y166430D01* +X586909Y166514D01* +X586948Y166600D01* +X586983Y166687D01* +X587014Y166775D01* +X587042Y166865D01* +X587067Y166955D01* +X587088Y167047D01* +X587105Y167139D01* +X587118Y167232D01* +X587127Y167325D01* +X587133Y167419D01* +X587135Y167513D01* +X586415Y165834D02* +X582337Y161036D01* +X587135Y161036D01* +X593400Y164874D02* +X596279Y164874D01* +X593400Y164874D02* +X593314Y164876D01* +X593228Y164882D01* +X593142Y164891D01* +X593057Y164905D01* +X592973Y164922D01* +X592889Y164943D01* +X592807Y164968D01* +X592726Y164996D01* +X592646Y165028D01* +X592567Y165064D01* +X592491Y165103D01* +X592416Y165146D01* +X592343Y165191D01* +X592272Y165240D01* +X592204Y165293D01* +X592137Y165348D01* +X592074Y165406D01* +X592013Y165467D01* +X591955Y165530D01* +X591900Y165597D01* +X591847Y165665D01* +X591798Y165736D01* +X591753Y165809D01* +X591710Y165884D01* +X591671Y165960D01* +X591635Y166039D01* +X591603Y166119D01* +X591575Y166200D01* +X591550Y166282D01* +X591529Y166366D01* +X591512Y166450D01* +X591498Y166535D01* +X591489Y166621D01* +X591483Y166707D01* +X591481Y166793D01* +X591481Y167273D01* +X591483Y167370D01* +X591489Y167466D01* +X591498Y167562D01* +X591512Y167658D01* +X591529Y167753D01* +X591551Y167847D01* +X591576Y167940D01* +X591604Y168033D01* +X591637Y168124D01* +X591673Y168213D01* +X591713Y168301D01* +X591756Y168388D01* +X591802Y168473D01* +X591852Y168555D01* +X591906Y168636D01* +X591962Y168714D01* +X592022Y168790D01* +X592084Y168864D01* +X592150Y168935D01* +X592218Y169003D01* +X592289Y169069D01* +X592363Y169131D01* +X592439Y169191D01* +X592517Y169247D01* +X592598Y169301D01* +X592681Y169351D01* +X592765Y169397D01* +X592852Y169440D01* +X592940Y169480D01* +X593029Y169516D01* +X593120Y169549D01* +X593213Y169577D01* +X593306Y169602D01* +X593400Y169624D01* +X593495Y169641D01* +X593591Y169655D01* +X593687Y169664D01* +X593783Y169670D01* +X593880Y169672D01* +X593977Y169670D01* +X594073Y169664D01* +X594169Y169655D01* +X594265Y169641D01* +X594360Y169624D01* +X594454Y169602D01* +X594547Y169577D01* +X594640Y169549D01* +X594731Y169516D01* +X594820Y169480D01* +X594908Y169440D01* +X594995Y169397D01* +X595080Y169351D01* +X595162Y169301D01* +X595243Y169247D01* +X595321Y169191D01* +X595397Y169131D01* +X595471Y169069D01* +X595542Y169003D01* +X595610Y168935D01* +X595676Y168864D01* +X595738Y168790D01* +X595798Y168714D01* +X595854Y168636D01* +X595908Y168555D01* +X595958Y168473D01* +X596004Y168388D01* +X596047Y168301D01* +X596087Y168213D01* +X596123Y168124D01* +X596156Y168033D01* +X596184Y167940D01* +X596209Y167847D01* +X596231Y167753D01* +X596248Y167658D01* +X596262Y167562D01* +X596271Y167466D01* +X596277Y167370D01* +X596279Y167273D01* +X596279Y164874D01* +X596277Y164751D01* +X596271Y164628D01* +X596261Y164505D01* +X596247Y164383D01* +X596230Y164261D01* +X596208Y164140D01* +X596183Y164020D01* +X596153Y163900D01* +X596120Y163782D01* +X596083Y163665D01* +X596043Y163548D01* +X595999Y163434D01* +X595951Y163320D01* +X595899Y163209D01* +X595844Y163099D01* +X595785Y162991D01* +X595723Y162884D01* +X595658Y162780D01* +X595589Y162678D01* +X595517Y162578D01* +X595442Y162481D01* +X595363Y162386D01* +X595282Y162294D01* +X595198Y162204D01* +X595111Y162117D01* +X595021Y162033D01* +X594929Y161952D01* +X594834Y161873D01* +X594737Y161798D01* +X594637Y161726D01* +X594535Y161657D01* +X594431Y161592D01* +X594324Y161530D01* +X594216Y161471D01* +X594106Y161416D01* +X593995Y161364D01* +X593881Y161317D01* +X593767Y161272D01* +X593650Y161232D01* +X593533Y161195D01* +X593415Y161162D01* +X593295Y161132D01* +X593175Y161107D01* +X593054Y161085D01* +X592932Y161068D01* +X592810Y161054D01* +X592687Y161044D01* +X592564Y161038D01* +X592441Y161036D01* +D13* +X485140Y254000D03* +D14* +X478028Y244856D02* +X469392Y244856D01* +X469392Y247255D01* +X469394Y247352D01* +X469400Y247448D01* +X469409Y247544D01* +X469423Y247640D01* +X469440Y247735D01* +X469462Y247829D01* +X469487Y247922D01* +X469515Y248015D01* +X469548Y248106D01* +X469584Y248195D01* +X469624Y248283D01* +X469667Y248370D01* +X469713Y248455D01* +X469763Y248537D01* +X469817Y248618D01* +X469873Y248696D01* +X469933Y248772D01* +X469995Y248846D01* +X470061Y248917D01* +X470129Y248985D01* +X470200Y249051D01* +X470274Y249113D01* +X470350Y249173D01* +X470428Y249229D01* +X470509Y249283D01* +X470592Y249333D01* +X470676Y249379D01* +X470763Y249422D01* +X470851Y249462D01* +X470940Y249498D01* +X471031Y249531D01* +X471124Y249559D01* +X471217Y249584D01* +X471311Y249606D01* +X471406Y249623D01* +X471502Y249637D01* +X471598Y249646D01* +X471694Y249652D01* +X471791Y249654D01* +X471888Y249652D01* +X471984Y249646D01* +X472080Y249637D01* +X472176Y249623D01* +X472271Y249606D01* +X472365Y249584D01* +X472458Y249559D01* +X472551Y249531D01* +X472642Y249498D01* +X472731Y249462D01* +X472819Y249422D01* +X472906Y249379D01* +X472991Y249333D01* +X473073Y249283D01* +X473154Y249229D01* +X473232Y249173D01* +X473308Y249113D01* +X473382Y249051D01* +X473453Y248985D01* +X473521Y248917D01* +X473587Y248846D01* +X473649Y248772D01* +X473709Y248696D01* +X473765Y248618D01* +X473819Y248537D01* +X473869Y248455D01* +X473915Y248370D01* +X473958Y248283D01* +X473998Y248195D01* +X474034Y248106D01* +X474067Y248015D01* +X474095Y247922D01* +X474120Y247829D01* +X474142Y247735D01* +X474159Y247640D01* +X474173Y247544D01* +X474182Y247448D01* +X474188Y247352D01* +X474190Y247255D01* +X474190Y244856D01* +X474190Y247735D02* +X478028Y249654D01* +X469392Y256554D02* +X469394Y256646D01* +X469400Y256737D01* +X469409Y256828D01* +X469423Y256919D01* +X469440Y257009D01* +X469462Y257098D01* +X469487Y257186D01* +X469515Y257273D01* +X469548Y257359D01* +X469584Y257443D01* +X469623Y257526D01* +X469666Y257607D01* +X469713Y257686D01* +X469762Y257763D01* +X469815Y257838D01* +X469871Y257910D01* +X469930Y257980D01* +X469992Y258048D01* +X470057Y258113D01* +X470125Y258175D01* +X470195Y258234D01* +X470267Y258290D01* +X470342Y258343D01* +X470419Y258392D01* +X470498Y258439D01* +X470579Y258482D01* +X470662Y258521D01* +X470746Y258557D01* +X470832Y258590D01* +X470919Y258618D01* +X471007Y258643D01* +X471096Y258665D01* +X471186Y258682D01* +X471277Y258696D01* +X471368Y258705D01* +X471459Y258711D01* +X471551Y258713D01* +X469392Y256554D02* +X469394Y256451D01* +X469400Y256349D01* +X469409Y256247D01* +X469422Y256145D01* +X469439Y256044D01* +X469460Y255943D01* +X469484Y255844D01* +X469513Y255745D01* +X469544Y255648D01* +X469580Y255551D01* +X469618Y255456D01* +X469661Y255363D01* +X469707Y255271D01* +X469756Y255181D01* +X469808Y255093D01* +X469864Y255006D01* +X469923Y254922D01* +X469984Y254841D01* +X470049Y254761D01* +X470117Y254684D01* +X470188Y254609D01* +X470261Y254538D01* +X470337Y254469D01* +X470415Y254402D01* +X470496Y254339D01* +X470579Y254279D01* +X470664Y254222D01* +X470751Y254168D01* +X470841Y254117D01* +X470932Y254070D01* +X471024Y254026D01* +X471119Y253985D01* +X471214Y253948D01* +X471311Y253915D01* +X473230Y257993D02* +X473164Y258060D01* +X473095Y258124D01* +X473024Y258185D01* +X472950Y258243D01* +X472874Y258298D01* +X472796Y258350D01* +X472716Y258399D01* +X472634Y258445D01* +X472550Y258487D01* +X472464Y258526D01* +X472377Y258561D01* +X472289Y258592D01* +X472199Y258620D01* +X472109Y258645D01* +X472017Y258666D01* +X471925Y258683D01* +X471832Y258696D01* +X471739Y258705D01* +X471645Y258711D01* +X471551Y258713D01* +X473230Y257993D02* +X478028Y253915D01* +X478028Y258713D01* +X470352Y263059D02* +X469392Y263059D01* +X469392Y267857D01* +X478028Y265458D01* +D13* +X462280Y302260D03* +D14* +X465328Y277735D02* +X456692Y277735D01* +X456692Y280134D01* +X456694Y280231D01* +X456700Y280327D01* +X456709Y280423D01* +X456723Y280519D01* +X456740Y280614D01* +X456762Y280708D01* +X456787Y280801D01* +X456815Y280894D01* +X456848Y280985D01* +X456884Y281074D01* +X456924Y281162D01* +X456967Y281249D01* +X457013Y281334D01* +X457063Y281416D01* +X457117Y281497D01* +X457173Y281575D01* +X457233Y281651D01* +X457295Y281725D01* +X457361Y281796D01* +X457429Y281864D01* +X457500Y281930D01* +X457574Y281992D01* +X457650Y282052D01* +X457728Y282108D01* +X457809Y282162D01* +X457892Y282212D01* +X457976Y282258D01* +X458063Y282301D01* +X458151Y282341D01* +X458240Y282377D01* +X458331Y282410D01* +X458424Y282438D01* +X458517Y282463D01* +X458611Y282485D01* +X458706Y282502D01* +X458802Y282516D01* +X458898Y282525D01* +X458994Y282531D01* +X459091Y282533D01* +X459188Y282531D01* +X459284Y282525D01* +X459380Y282516D01* +X459476Y282502D01* +X459571Y282485D01* +X459665Y282463D01* +X459758Y282438D01* +X459851Y282410D01* +X459942Y282377D01* +X460031Y282341D01* +X460119Y282301D01* +X460206Y282258D01* +X460291Y282212D01* +X460373Y282162D01* +X460454Y282108D01* +X460532Y282052D01* +X460608Y281992D01* +X460682Y281930D01* +X460753Y281864D01* +X460821Y281796D01* +X460887Y281725D01* +X460949Y281651D01* +X461009Y281575D01* +X461065Y281497D01* +X461119Y281416D01* +X461169Y281334D01* +X461215Y281249D01* +X461258Y281162D01* +X461298Y281074D01* +X461334Y280985D01* +X461367Y280894D01* +X461395Y280801D01* +X461420Y280708D01* +X461442Y280614D01* +X461459Y280519D01* +X461473Y280423D01* +X461482Y280327D01* +X461488Y280231D01* +X461490Y280134D01* +X461490Y277735D01* +X461490Y280614D02* +X465328Y282533D01* +X457652Y286794D02* +X456692Y286794D01* +X456692Y291592D01* +X465328Y289193D01* +D17* +X355600Y363220D03* +D14* +X370332Y361442D02* +X370332Y370078D01* +X372731Y370078D01* +X372828Y370076D01* +X372924Y370070D01* +X373020Y370061D01* +X373116Y370047D01* +X373211Y370030D01* +X373305Y370008D01* +X373398Y369983D01* +X373491Y369955D01* +X373582Y369922D01* +X373671Y369886D01* +X373759Y369846D01* +X373846Y369803D01* +X373931Y369757D01* +X374013Y369707D01* +X374094Y369653D01* +X374172Y369597D01* +X374248Y369537D01* +X374322Y369475D01* +X374393Y369409D01* +X374461Y369341D01* +X374527Y369270D01* +X374589Y369196D01* +X374649Y369120D01* +X374705Y369042D01* +X374759Y368961D01* +X374809Y368879D01* +X374855Y368794D01* +X374898Y368707D01* +X374938Y368619D01* +X374974Y368530D01* +X375007Y368439D01* +X375035Y368346D01* +X375060Y368253D01* +X375082Y368159D01* +X375099Y368064D01* +X375113Y367968D01* +X375122Y367872D01* +X375128Y367776D01* +X375130Y367679D01* +X375128Y367582D01* +X375122Y367486D01* +X375113Y367390D01* +X375099Y367294D01* +X375082Y367199D01* +X375060Y367105D01* +X375035Y367012D01* +X375007Y366919D01* +X374974Y366828D01* +X374938Y366739D01* +X374898Y366651D01* +X374855Y366564D01* +X374809Y366480D01* +X374759Y366397D01* +X374705Y366316D01* +X374649Y366238D01* +X374589Y366162D01* +X374527Y366088D01* +X374461Y366017D01* +X374393Y365949D01* +X374322Y365883D01* +X374248Y365821D01* +X374172Y365761D01* +X374094Y365705D01* +X374013Y365651D01* +X373931Y365601D01* +X373846Y365555D01* +X373759Y365512D01* +X373671Y365472D01* +X373582Y365436D01* +X373491Y365403D01* +X373398Y365375D01* +X373305Y365350D01* +X373211Y365328D01* +X373116Y365311D01* +X373020Y365297D01* +X372924Y365288D01* +X372828Y365282D01* +X372731Y365280D01* +X370332Y365280D01* +X373211Y365280D02* +X375130Y361442D01* +X379391Y366240D02* +X382270Y366240D01* +X382356Y366238D01* +X382442Y366232D01* +X382528Y366223D01* +X382613Y366209D01* +X382697Y366192D01* +X382781Y366171D01* +X382863Y366146D01* +X382944Y366118D01* +X383024Y366086D01* +X383103Y366050D01* +X383179Y366011D01* +X383254Y365968D01* +X383327Y365923D01* +X383398Y365874D01* +X383466Y365821D01* +X383533Y365766D01* +X383596Y365708D01* +X383657Y365647D01* +X383715Y365584D01* +X383770Y365517D01* +X383823Y365449D01* +X383872Y365378D01* +X383917Y365305D01* +X383960Y365230D01* +X383999Y365154D01* +X384035Y365075D01* +X384067Y364995D01* +X384095Y364914D01* +X384120Y364832D01* +X384141Y364748D01* +X384158Y364664D01* +X384172Y364579D01* +X384181Y364493D01* +X384187Y364407D01* +X384189Y364321D01* +X384189Y363841D01* +X384187Y363744D01* +X384181Y363648D01* +X384172Y363552D01* +X384158Y363456D01* +X384141Y363361D01* +X384119Y363267D01* +X384094Y363174D01* +X384066Y363081D01* +X384033Y362990D01* +X383997Y362901D01* +X383957Y362813D01* +X383914Y362726D01* +X383868Y362642D01* +X383818Y362559D01* +X383764Y362478D01* +X383708Y362400D01* +X383648Y362324D01* +X383586Y362250D01* +X383520Y362179D01* +X383452Y362111D01* +X383381Y362045D01* +X383307Y361983D01* +X383231Y361923D01* +X383153Y361867D01* +X383072Y361813D01* +X382990Y361763D01* +X382905Y361717D01* +X382818Y361674D01* +X382730Y361634D01* +X382641Y361598D01* +X382550Y361565D01* +X382457Y361537D01* +X382364Y361512D01* +X382270Y361490D01* +X382175Y361473D01* +X382079Y361459D01* +X381983Y361450D01* +X381887Y361444D01* +X381790Y361442D01* +X381693Y361444D01* +X381597Y361450D01* +X381501Y361459D01* +X381405Y361473D01* +X381310Y361490D01* +X381216Y361512D01* +X381123Y361537D01* +X381030Y361565D01* +X380939Y361598D01* +X380850Y361634D01* +X380762Y361674D01* +X380675Y361717D01* +X380591Y361763D01* +X380508Y361813D01* +X380427Y361867D01* +X380349Y361923D01* +X380273Y361983D01* +X380199Y362045D01* +X380128Y362111D01* +X380060Y362179D01* +X379994Y362250D01* +X379932Y362324D01* +X379872Y362400D01* +X379816Y362478D01* +X379762Y362559D01* +X379712Y362642D01* +X379666Y362726D01* +X379623Y362813D01* +X379583Y362901D01* +X379547Y362990D01* +X379514Y363081D01* +X379486Y363174D01* +X379461Y363267D01* +X379439Y363361D01* +X379422Y363456D01* +X379408Y363552D01* +X379399Y363648D01* +X379393Y363744D01* +X379391Y363841D01* +X379391Y366240D01* +X379392Y366240D02* +X379394Y366363D01* +X379400Y366486D01* +X379410Y366609D01* +X379424Y366731D01* +X379441Y366853D01* +X379463Y366974D01* +X379488Y367094D01* +X379518Y367214D01* +X379551Y367332D01* +X379588Y367449D01* +X379628Y367566D01* +X379672Y367680D01* +X379720Y367794D01* +X379772Y367905D01* +X379827Y368015D01* +X379886Y368123D01* +X379948Y368230D01* +X380013Y368334D01* +X380082Y368436D01* +X380154Y368536D01* +X380229Y368633D01* +X380308Y368728D01* +X380389Y368820D01* +X380473Y368910D01* +X380560Y368997D01* +X380650Y369081D01* +X380742Y369162D01* +X380837Y369241D01* +X380934Y369316D01* +X381034Y369388D01* +X381136Y369457D01* +X381240Y369522D01* +X381347Y369584D01* +X381455Y369643D01* +X381565Y369698D01* +X381676Y369750D01* +X381790Y369797D01* +X381904Y369842D01* +X382021Y369882D01* +X382138Y369919D01* +X382256Y369952D01* +X382376Y369982D01* +X382496Y370007D01* +X382617Y370029D01* +X382739Y370046D01* +X382861Y370060D01* +X382984Y370070D01* +X383107Y370076D01* +X383230Y370078D01* +D13* +X1211580Y104140D03* +D14* +X1208278Y77075D02* +X1216914Y77075D01* +X1208278Y77075D02* +X1208278Y79474D01* +X1208280Y79571D01* +X1208286Y79667D01* +X1208295Y79763D01* +X1208309Y79859D01* +X1208326Y79954D01* +X1208348Y80048D01* +X1208373Y80141D01* +X1208401Y80234D01* +X1208434Y80325D01* +X1208470Y80414D01* +X1208510Y80502D01* +X1208553Y80589D01* +X1208599Y80674D01* +X1208649Y80756D01* +X1208703Y80837D01* +X1208759Y80915D01* +X1208819Y80991D01* +X1208881Y81065D01* +X1208947Y81136D01* +X1209015Y81204D01* +X1209086Y81270D01* +X1209160Y81332D01* +X1209236Y81392D01* +X1209314Y81448D01* +X1209395Y81502D01* +X1209478Y81552D01* +X1209562Y81598D01* +X1209649Y81641D01* +X1209737Y81681D01* +X1209826Y81717D01* +X1209917Y81750D01* +X1210010Y81778D01* +X1210103Y81803D01* +X1210197Y81825D01* +X1210292Y81842D01* +X1210388Y81856D01* +X1210484Y81865D01* +X1210580Y81871D01* +X1210677Y81873D01* +X1210774Y81871D01* +X1210870Y81865D01* +X1210966Y81856D01* +X1211062Y81842D01* +X1211157Y81825D01* +X1211251Y81803D01* +X1211344Y81778D01* +X1211437Y81750D01* +X1211528Y81717D01* +X1211617Y81681D01* +X1211705Y81641D01* +X1211792Y81598D01* +X1211877Y81552D01* +X1211959Y81502D01* +X1212040Y81448D01* +X1212118Y81392D01* +X1212194Y81332D01* +X1212268Y81270D01* +X1212339Y81204D01* +X1212407Y81136D01* +X1212473Y81065D01* +X1212535Y80991D01* +X1212595Y80915D01* +X1212651Y80837D01* +X1212705Y80756D01* +X1212755Y80674D01* +X1212801Y80589D01* +X1212844Y80502D01* +X1212884Y80414D01* +X1212920Y80325D01* +X1212953Y80234D01* +X1212981Y80141D01* +X1213006Y80048D01* +X1213028Y79954D01* +X1213045Y79859D01* +X1213059Y79763D01* +X1213068Y79667D01* +X1213074Y79571D01* +X1213076Y79474D01* +X1213076Y77075D01* +X1213076Y79954D02* +X1216914Y81873D01* +X1213076Y88053D02* +X1213076Y90932D01* +X1213076Y88053D02* +X1213074Y87967D01* +X1213068Y87881D01* +X1213059Y87795D01* +X1213045Y87710D01* +X1213028Y87626D01* +X1213007Y87542D01* +X1212982Y87460D01* +X1212954Y87379D01* +X1212922Y87299D01* +X1212886Y87220D01* +X1212847Y87144D01* +X1212804Y87069D01* +X1212759Y86996D01* +X1212710Y86925D01* +X1212657Y86857D01* +X1212602Y86790D01* +X1212544Y86727D01* +X1212483Y86666D01* +X1212420Y86608D01* +X1212353Y86553D01* +X1212285Y86501D01* +X1212214Y86451D01* +X1212141Y86406D01* +X1212066Y86363D01* +X1211990Y86324D01* +X1211911Y86288D01* +X1211831Y86256D01* +X1211750Y86228D01* +X1211668Y86203D01* +X1211584Y86182D01* +X1211500Y86165D01* +X1211415Y86151D01* +X1211329Y86142D01* +X1211243Y86136D01* +X1211157Y86134D01* +X1210677Y86134D01* +X1210580Y86136D01* +X1210484Y86142D01* +X1210388Y86151D01* +X1210292Y86165D01* +X1210197Y86182D01* +X1210103Y86204D01* +X1210010Y86229D01* +X1209917Y86257D01* +X1209826Y86290D01* +X1209737Y86326D01* +X1209649Y86366D01* +X1209562Y86409D01* +X1209478Y86455D01* +X1209395Y86505D01* +X1209314Y86559D01* +X1209236Y86615D01* +X1209160Y86675D01* +X1209086Y86737D01* +X1209015Y86803D01* +X1208947Y86871D01* +X1208881Y86942D01* +X1208819Y87016D01* +X1208759Y87092D01* +X1208703Y87170D01* +X1208649Y87251D01* +X1208599Y87334D01* +X1208553Y87418D01* +X1208510Y87505D01* +X1208470Y87593D01* +X1208434Y87682D01* +X1208401Y87773D01* +X1208373Y87866D01* +X1208348Y87959D01* +X1208326Y88053D01* +X1208309Y88148D01* +X1208295Y88244D01* +X1208286Y88340D01* +X1208280Y88436D01* +X1208278Y88533D01* +X1208280Y88630D01* +X1208286Y88726D01* +X1208295Y88822D01* +X1208309Y88918D01* +X1208326Y89013D01* +X1208348Y89107D01* +X1208373Y89200D01* +X1208401Y89293D01* +X1208434Y89384D01* +X1208470Y89473D01* +X1208510Y89561D01* +X1208553Y89648D01* +X1208599Y89733D01* +X1208649Y89815D01* +X1208703Y89896D01* +X1208759Y89974D01* +X1208819Y90050D01* +X1208881Y90124D01* +X1208947Y90195D01* +X1209015Y90263D01* +X1209086Y90329D01* +X1209160Y90391D01* +X1209236Y90451D01* +X1209314Y90507D01* +X1209395Y90561D01* +X1209478Y90611D01* +X1209562Y90657D01* +X1209649Y90700D01* +X1209737Y90740D01* +X1209826Y90776D01* +X1209917Y90809D01* +X1210010Y90837D01* +X1210103Y90862D01* +X1210197Y90884D01* +X1210292Y90901D01* +X1210388Y90915D01* +X1210484Y90924D01* +X1210580Y90930D01* +X1210677Y90932D01* +X1213076Y90932D01* +X1213199Y90930D01* +X1213322Y90924D01* +X1213445Y90914D01* +X1213567Y90900D01* +X1213689Y90883D01* +X1213810Y90861D01* +X1213930Y90836D01* +X1214050Y90806D01* +X1214168Y90773D01* +X1214285Y90736D01* +X1214402Y90696D01* +X1214516Y90652D01* +X1214630Y90604D01* +X1214741Y90552D01* +X1214851Y90497D01* +X1214959Y90438D01* +X1215066Y90376D01* +X1215170Y90311D01* +X1215272Y90242D01* +X1215372Y90170D01* +X1215469Y90095D01* +X1215564Y90016D01* +X1215656Y89935D01* +X1215746Y89851D01* +X1215833Y89764D01* +X1215917Y89674D01* +X1215998Y89582D01* +X1216077Y89487D01* +X1216152Y89390D01* +X1216224Y89290D01* +X1216293Y89188D01* +X1216358Y89084D01* +X1216420Y88977D01* +X1216479Y88869D01* +X1216534Y88759D01* +X1216586Y88648D01* +X1216634Y88534D01* +X1216678Y88420D01* +X1216718Y88303D01* +X1216755Y88186D01* +X1216788Y88068D01* +X1216818Y87948D01* +X1216843Y87828D01* +X1216865Y87707D01* +X1216882Y87585D01* +X1216896Y87463D01* +X1216906Y87340D01* +X1216912Y87217D01* +X1216914Y87094D01* +D17* +X744220Y160020D03* +D14* +X756666Y155702D02* +X756666Y164338D01* +X759065Y164338D01* +X759162Y164336D01* +X759258Y164330D01* +X759354Y164321D01* +X759450Y164307D01* +X759545Y164290D01* +X759639Y164268D01* +X759732Y164243D01* +X759825Y164215D01* +X759916Y164182D01* +X760005Y164146D01* +X760093Y164106D01* +X760180Y164063D01* +X760265Y164017D01* +X760347Y163967D01* +X760428Y163913D01* +X760506Y163857D01* +X760582Y163797D01* +X760656Y163735D01* +X760727Y163669D01* +X760795Y163601D01* +X760861Y163530D01* +X760923Y163456D01* +X760983Y163380D01* +X761039Y163302D01* +X761093Y163221D01* +X761143Y163138D01* +X761189Y163054D01* +X761232Y162967D01* +X761272Y162879D01* +X761308Y162790D01* +X761341Y162699D01* +X761369Y162606D01* +X761394Y162513D01* +X761416Y162419D01* +X761433Y162324D01* +X761447Y162228D01* +X761456Y162132D01* +X761462Y162036D01* +X761464Y161939D01* +X761462Y161842D01* +X761456Y161746D01* +X761447Y161650D01* +X761433Y161554D01* +X761416Y161459D01* +X761394Y161365D01* +X761369Y161272D01* +X761341Y161179D01* +X761308Y161088D01* +X761272Y160999D01* +X761232Y160911D01* +X761189Y160824D01* +X761143Y160740D01* +X761093Y160657D01* +X761039Y160576D01* +X760983Y160498D01* +X760923Y160422D01* +X760861Y160348D01* +X760795Y160277D01* +X760727Y160209D01* +X760656Y160143D01* +X760582Y160081D01* +X760506Y160021D01* +X760428Y159965D01* +X760347Y159911D01* +X760265Y159861D01* +X760180Y159815D01* +X760093Y159772D01* +X760005Y159732D01* +X759916Y159696D01* +X759825Y159663D01* +X759732Y159635D01* +X759639Y159610D01* +X759545Y159588D01* +X759450Y159571D01* +X759354Y159557D01* +X759258Y159548D01* +X759162Y159542D01* +X759065Y159540D01* +X756666Y159540D01* +X759545Y159540D02* +X761464Y155702D01* +X765725Y162419D02* +X768124Y164338D01* +X768124Y155702D01* +X765725Y155702D02* +X770523Y155702D01* +X774869Y163378D02* +X774869Y164338D01* +X779667Y164338D01* +X777268Y155702D01* +D17* +X718820Y160020D03* +D14* +X729742Y115824D02* +X729742Y107188D01* +X729742Y115824D02* +X732141Y115824D01* +X732238Y115822D01* +X732334Y115816D01* +X732430Y115807D01* +X732526Y115793D01* +X732621Y115776D01* +X732715Y115754D01* +X732808Y115729D01* +X732901Y115701D01* +X732992Y115668D01* +X733081Y115632D01* +X733169Y115592D01* +X733256Y115549D01* +X733341Y115503D01* +X733423Y115453D01* +X733504Y115399D01* +X733582Y115343D01* +X733658Y115283D01* +X733732Y115221D01* +X733803Y115155D01* +X733871Y115087D01* +X733937Y115016D01* +X733999Y114942D01* +X734059Y114866D01* +X734115Y114788D01* +X734169Y114707D01* +X734219Y114624D01* +X734265Y114540D01* +X734308Y114453D01* +X734348Y114365D01* +X734384Y114276D01* +X734417Y114185D01* +X734445Y114092D01* +X734470Y113999D01* +X734492Y113905D01* +X734509Y113810D01* +X734523Y113714D01* +X734532Y113618D01* +X734538Y113522D01* +X734540Y113425D01* +X734538Y113328D01* +X734532Y113232D01* +X734523Y113136D01* +X734509Y113040D01* +X734492Y112945D01* +X734470Y112851D01* +X734445Y112758D01* +X734417Y112665D01* +X734384Y112574D01* +X734348Y112485D01* +X734308Y112397D01* +X734265Y112310D01* +X734219Y112225D01* +X734169Y112143D01* +X734115Y112062D01* +X734059Y111984D01* +X733999Y111908D01* +X733937Y111834D01* +X733871Y111763D01* +X733803Y111695D01* +X733732Y111629D01* +X733658Y111567D01* +X733582Y111507D01* +X733504Y111451D01* +X733423Y111397D01* +X733341Y111347D01* +X733256Y111301D01* +X733169Y111258D01* +X733081Y111218D01* +X732992Y111182D01* +X732901Y111149D01* +X732808Y111121D01* +X732715Y111096D01* +X732621Y111074D01* +X732526Y111057D01* +X732430Y111043D01* +X732334Y111034D01* +X732238Y111028D01* +X732141Y111026D01* +X729742Y111026D01* +X732621Y111026D02* +X734540Y107188D01* +X738801Y113905D02* +X741200Y115824D01* +X741200Y107188D01* +X738801Y107188D02* +X743599Y107188D01* +X747945Y109587D02* +X747947Y109684D01* +X747953Y109780D01* +X747962Y109876D01* +X747976Y109972D01* +X747993Y110067D01* +X748015Y110161D01* +X748040Y110254D01* +X748068Y110347D01* +X748101Y110438D01* +X748137Y110527D01* +X748177Y110615D01* +X748220Y110702D01* +X748266Y110787D01* +X748316Y110869D01* +X748370Y110950D01* +X748426Y111028D01* +X748486Y111104D01* +X748548Y111178D01* +X748614Y111249D01* +X748682Y111317D01* +X748753Y111383D01* +X748827Y111445D01* +X748903Y111505D01* +X748981Y111561D01* +X749062Y111615D01* +X749145Y111665D01* +X749229Y111711D01* +X749316Y111754D01* +X749404Y111794D01* +X749493Y111830D01* +X749584Y111863D01* +X749677Y111891D01* +X749770Y111916D01* +X749864Y111938D01* +X749959Y111955D01* +X750055Y111969D01* +X750151Y111978D01* +X750247Y111984D01* +X750344Y111986D01* +X750441Y111984D01* +X750537Y111978D01* +X750633Y111969D01* +X750729Y111955D01* +X750824Y111938D01* +X750918Y111916D01* +X751011Y111891D01* +X751104Y111863D01* +X751195Y111830D01* +X751284Y111794D01* +X751372Y111754D01* +X751459Y111711D01* +X751544Y111665D01* +X751626Y111615D01* +X751707Y111561D01* +X751785Y111505D01* +X751861Y111445D01* +X751935Y111383D01* +X752006Y111317D01* +X752074Y111249D01* +X752140Y111178D01* +X752202Y111104D01* +X752262Y111028D01* +X752318Y110950D01* +X752372Y110869D01* +X752422Y110787D01* +X752468Y110702D01* +X752511Y110615D01* +X752551Y110527D01* +X752587Y110438D01* +X752620Y110347D01* +X752648Y110254D01* +X752673Y110161D01* +X752695Y110067D01* +X752712Y109972D01* +X752726Y109876D01* +X752735Y109780D01* +X752741Y109684D01* +X752743Y109587D01* +X752741Y109490D01* +X752735Y109394D01* +X752726Y109298D01* +X752712Y109202D01* +X752695Y109107D01* +X752673Y109013D01* +X752648Y108920D01* +X752620Y108827D01* +X752587Y108736D01* +X752551Y108647D01* +X752511Y108559D01* +X752468Y108472D01* +X752422Y108387D01* +X752372Y108305D01* +X752318Y108224D01* +X752262Y108146D01* +X752202Y108070D01* +X752140Y107996D01* +X752074Y107925D01* +X752006Y107857D01* +X751935Y107791D01* +X751861Y107729D01* +X751785Y107669D01* +X751707Y107613D01* +X751626Y107559D01* +X751544Y107509D01* +X751459Y107463D01* +X751372Y107420D01* +X751284Y107380D01* +X751195Y107344D01* +X751104Y107311D01* +X751011Y107283D01* +X750918Y107258D01* +X750824Y107236D01* +X750729Y107219D01* +X750633Y107205D01* +X750537Y107196D01* +X750441Y107190D01* +X750344Y107188D01* +X750247Y107190D01* +X750151Y107196D01* +X750055Y107205D01* +X749959Y107219D01* +X749864Y107236D01* +X749770Y107258D01* +X749677Y107283D01* +X749584Y107311D01* +X749493Y107344D01* +X749404Y107380D01* +X749316Y107420D01* +X749229Y107463D01* +X749145Y107509D01* +X749062Y107559D01* +X748981Y107613D01* +X748903Y107669D01* +X748827Y107729D01* +X748753Y107791D01* +X748682Y107857D01* +X748614Y107925D01* +X748548Y107996D01* +X748486Y108070D01* +X748426Y108146D01* +X748370Y108224D01* +X748316Y108305D01* +X748266Y108388D01* +X748220Y108472D01* +X748177Y108559D01* +X748137Y108647D01* +X748101Y108736D01* +X748068Y108827D01* +X748040Y108920D01* +X748015Y109013D01* +X747993Y109107D01* +X747976Y109202D01* +X747962Y109298D01* +X747953Y109394D01* +X747947Y109490D01* +X747945Y109587D01* +X748425Y113905D02* +X748427Y113991D01* +X748433Y114077D01* +X748442Y114163D01* +X748456Y114248D01* +X748473Y114332D01* +X748494Y114416D01* +X748519Y114498D01* +X748547Y114579D01* +X748579Y114659D01* +X748615Y114738D01* +X748654Y114814D01* +X748697Y114889D01* +X748742Y114962D01* +X748791Y115033D01* +X748844Y115101D01* +X748899Y115168D01* +X748957Y115231D01* +X749018Y115292D01* +X749081Y115350D01* +X749148Y115405D01* +X749216Y115458D01* +X749287Y115507D01* +X749360Y115552D01* +X749435Y115595D01* +X749511Y115634D01* +X749590Y115670D01* +X749670Y115702D01* +X749751Y115730D01* +X749833Y115755D01* +X749917Y115776D01* +X750001Y115793D01* +X750086Y115807D01* +X750172Y115816D01* +X750258Y115822D01* +X750344Y115824D01* +X750430Y115822D01* +X750516Y115816D01* +X750602Y115807D01* +X750687Y115793D01* +X750771Y115776D01* +X750855Y115755D01* +X750937Y115730D01* +X751018Y115702D01* +X751098Y115670D01* +X751177Y115634D01* +X751253Y115595D01* +X751328Y115552D01* +X751401Y115507D01* +X751472Y115458D01* +X751540Y115405D01* +X751607Y115350D01* +X751670Y115292D01* +X751731Y115231D01* +X751789Y115168D01* +X751844Y115101D01* +X751897Y115033D01* +X751946Y114962D01* +X751991Y114889D01* +X752034Y114814D01* +X752073Y114738D01* +X752109Y114659D01* +X752141Y114579D01* +X752169Y114498D01* +X752194Y114416D01* +X752215Y114332D01* +X752232Y114248D01* +X752246Y114163D01* +X752255Y114077D01* +X752261Y113991D01* +X752263Y113905D01* +X752261Y113819D01* +X752255Y113733D01* +X752246Y113647D01* +X752232Y113562D01* +X752215Y113478D01* +X752194Y113394D01* +X752169Y113312D01* +X752141Y113231D01* +X752109Y113151D01* +X752073Y113072D01* +X752034Y112996D01* +X751991Y112921D01* +X751946Y112848D01* +X751897Y112777D01* +X751844Y112709D01* +X751789Y112642D01* +X751731Y112579D01* +X751670Y112518D01* +X751607Y112460D01* +X751540Y112405D01* +X751472Y112352D01* +X751401Y112303D01* +X751328Y112258D01* +X751253Y112215D01* +X751177Y112176D01* +X751098Y112140D01* +X751018Y112108D01* +X750937Y112080D01* +X750855Y112055D01* +X750771Y112034D01* +X750687Y112017D01* +X750602Y112003D01* +X750516Y111994D01* +X750430Y111988D01* +X750344Y111986D01* +X750258Y111988D01* +X750172Y111994D01* +X750086Y112003D01* +X750001Y112017D01* +X749917Y112034D01* +X749833Y112055D01* +X749751Y112080D01* +X749670Y112108D01* +X749590Y112140D01* +X749511Y112176D01* +X749435Y112215D01* +X749360Y112258D01* +X749287Y112303D01* +X749216Y112352D01* +X749148Y112405D01* +X749081Y112460D01* +X749018Y112518D01* +X748957Y112579D01* +X748899Y112642D01* +X748844Y112709D01* +X748791Y112777D01* +X748742Y112848D01* +X748697Y112921D01* +X748654Y112996D01* +X748615Y113072D01* +X748579Y113151D01* +X748547Y113231D01* +X748519Y113312D01* +X748494Y113394D01* +X748473Y113478D01* +X748456Y113562D01* +X748442Y113647D01* +X748433Y113733D01* +X748427Y113819D01* +X748425Y113905D01* +D18* +X444500Y259080D03* +D14* +X408196Y255778D02* +X406277Y255778D01* +X406191Y255780D01* +X406105Y255786D01* +X406019Y255795D01* +X405934Y255809D01* +X405850Y255826D01* +X405766Y255847D01* +X405684Y255872D01* +X405603Y255900D01* +X405523Y255932D01* +X405444Y255968D01* +X405368Y256007D01* +X405293Y256050D01* +X405220Y256095D01* +X405149Y256144D01* +X405081Y256197D01* +X405014Y256252D01* +X404951Y256310D01* +X404890Y256371D01* +X404832Y256434D01* +X404777Y256501D01* +X404724Y256569D01* +X404675Y256640D01* +X404630Y256713D01* +X404587Y256788D01* +X404548Y256864D01* +X404512Y256943D01* +X404480Y257023D01* +X404452Y257104D01* +X404427Y257186D01* +X404406Y257270D01* +X404389Y257354D01* +X404375Y257439D01* +X404366Y257525D01* +X404360Y257611D01* +X404358Y257697D01* +X404358Y262495D01* +X404360Y262581D01* +X404366Y262667D01* +X404375Y262753D01* +X404389Y262838D01* +X404406Y262922D01* +X404427Y263006D01* +X404452Y263088D01* +X404480Y263169D01* +X404512Y263249D01* +X404548Y263328D01* +X404587Y263404D01* +X404630Y263479D01* +X404675Y263552D01* +X404724Y263623D01* +X404777Y263691D01* +X404832Y263758D01* +X404890Y263821D01* +X404951Y263882D01* +X405014Y263940D01* +X405081Y263995D01* +X405149Y264047D01* +X405220Y264097D01* +X405293Y264142D01* +X405368Y264185D01* +X405444Y264224D01* +X405523Y264260D01* +X405603Y264292D01* +X405684Y264320D01* +X405766Y264345D01* +X405850Y264366D01* +X405934Y264383D01* +X406019Y264397D01* +X406105Y264406D01* +X406191Y264412D01* +X406277Y264414D01* +X408196Y264414D01* +X414655Y264414D02* +X414747Y264412D01* +X414838Y264406D01* +X414929Y264397D01* +X415020Y264383D01* +X415110Y264366D01* +X415199Y264344D01* +X415287Y264319D01* +X415374Y264291D01* +X415460Y264258D01* +X415544Y264222D01* +X415627Y264183D01* +X415708Y264140D01* +X415787Y264093D01* +X415864Y264044D01* +X415939Y263991D01* +X416011Y263935D01* +X416081Y263876D01* +X416149Y263814D01* +X416214Y263749D01* +X416276Y263681D01* +X416335Y263611D01* +X416391Y263539D01* +X416444Y263464D01* +X416493Y263387D01* +X416540Y263308D01* +X416583Y263227D01* +X416622Y263144D01* +X416658Y263060D01* +X416691Y262974D01* +X416719Y262887D01* +X416744Y262799D01* +X416766Y262710D01* +X416783Y262620D01* +X416797Y262529D01* +X416806Y262438D01* +X416812Y262347D01* +X416814Y262255D01* +X414655Y264414D02* +X414552Y264412D01* +X414450Y264406D01* +X414348Y264397D01* +X414246Y264384D01* +X414145Y264367D01* +X414044Y264346D01* +X413945Y264322D01* +X413846Y264293D01* +X413749Y264262D01* +X413652Y264226D01* +X413557Y264188D01* +X413464Y264145D01* +X413372Y264099D01* +X413282Y264050D01* +X413194Y263998D01* +X413107Y263942D01* +X413023Y263883D01* +X412942Y263822D01* +X412862Y263757D01* +X412785Y263689D01* +X412710Y263618D01* +X412639Y263545D01* +X412570Y263469D01* +X412503Y263391D01* +X412440Y263310D01* +X412380Y263227D01* +X412323Y263142D01* +X412269Y263055D01* +X412218Y262965D01* +X412171Y262874D01* +X412127Y262782D01* +X412086Y262687D01* +X412049Y262592D01* +X412016Y262495D01* +X416094Y260576D02* +X416161Y260642D01* +X416225Y260711D01* +X416286Y260782D01* +X416344Y260856D01* +X416399Y260932D01* +X416451Y261010D01* +X416500Y261090D01* +X416546Y261172D01* +X416588Y261256D01* +X416627Y261342D01* +X416662Y261429D01* +X416693Y261517D01* +X416721Y261607D01* +X416746Y261697D01* +X416767Y261789D01* +X416784Y261881D01* +X416797Y261974D01* +X416806Y262067D01* +X416812Y262161D01* +X416814Y262255D01* +X416094Y260576D02* +X412016Y255778D01* +X416814Y255778D01* +X421160Y255778D02* +X423559Y255778D01* +X423656Y255780D01* +X423752Y255786D01* +X423848Y255795D01* +X423944Y255809D01* +X424039Y255826D01* +X424133Y255848D01* +X424226Y255873D01* +X424319Y255901D01* +X424410Y255934D01* +X424499Y255970D01* +X424587Y256010D01* +X424674Y256053D01* +X424759Y256099D01* +X424841Y256149D01* +X424922Y256203D01* +X425000Y256259D01* +X425076Y256319D01* +X425150Y256381D01* +X425221Y256447D01* +X425289Y256515D01* +X425355Y256586D01* +X425417Y256660D01* +X425477Y256736D01* +X425533Y256814D01* +X425587Y256895D01* +X425637Y256978D01* +X425683Y257062D01* +X425726Y257149D01* +X425766Y257237D01* +X425802Y257326D01* +X425835Y257417D01* +X425863Y257510D01* +X425888Y257603D01* +X425910Y257697D01* +X425927Y257792D01* +X425941Y257888D01* +X425950Y257984D01* +X425956Y258080D01* +X425958Y258177D01* +X425956Y258274D01* +X425950Y258370D01* +X425941Y258466D01* +X425927Y258562D01* +X425910Y258657D01* +X425888Y258751D01* +X425863Y258844D01* +X425835Y258937D01* +X425802Y259028D01* +X425766Y259117D01* +X425726Y259205D01* +X425683Y259292D01* +X425637Y259376D01* +X425587Y259459D01* +X425533Y259540D01* +X425477Y259618D01* +X425417Y259694D01* +X425355Y259768D01* +X425289Y259839D01* +X425221Y259907D01* +X425150Y259973D01* +X425076Y260035D01* +X425000Y260095D01* +X424922Y260151D01* +X424841Y260205D01* +X424759Y260255D01* +X424674Y260301D01* +X424587Y260344D01* +X424499Y260384D01* +X424410Y260420D01* +X424319Y260453D01* +X424226Y260481D01* +X424133Y260506D01* +X424039Y260528D01* +X423944Y260545D01* +X423848Y260559D01* +X423752Y260568D01* +X423656Y260574D01* +X423559Y260576D01* +X424039Y264414D02* +X421160Y264414D01* +X424039Y264414D02* +X424125Y264412D01* +X424211Y264406D01* +X424297Y264397D01* +X424382Y264383D01* +X424466Y264366D01* +X424550Y264345D01* +X424632Y264320D01* +X424713Y264292D01* +X424793Y264260D01* +X424872Y264224D01* +X424948Y264185D01* +X425023Y264142D01* +X425096Y264097D01* +X425167Y264048D01* +X425235Y263995D01* +X425302Y263940D01* +X425365Y263882D01* +X425426Y263821D01* +X425484Y263758D01* +X425539Y263691D01* +X425592Y263623D01* +X425641Y263552D01* +X425686Y263479D01* +X425729Y263404D01* +X425768Y263328D01* +X425804Y263249D01* +X425836Y263169D01* +X425864Y263088D01* +X425889Y263006D01* +X425910Y262922D01* +X425927Y262838D01* +X425941Y262753D01* +X425950Y262667D01* +X425956Y262581D01* +X425958Y262495D01* +X425956Y262409D01* +X425950Y262323D01* +X425941Y262237D01* +X425927Y262152D01* +X425910Y262068D01* +X425889Y261984D01* +X425864Y261902D01* +X425836Y261821D01* +X425804Y261741D01* +X425768Y261662D01* +X425729Y261586D01* +X425686Y261511D01* +X425641Y261438D01* +X425592Y261367D01* +X425539Y261299D01* +X425484Y261232D01* +X425426Y261169D01* +X425365Y261108D01* +X425302Y261050D01* +X425235Y260995D01* +X425167Y260942D01* +X425096Y260893D01* +X425023Y260848D01* +X424948Y260805D01* +X424872Y260766D01* +X424793Y260730D01* +X424713Y260698D01* +X424632Y260670D01* +X424550Y260645D01* +X424466Y260624D01* +X424382Y260607D01* +X424297Y260593D01* +X424211Y260584D01* +X424125Y260578D01* +X424039Y260576D01* +X422120Y260576D01* +D18* +X444500Y228600D03* +D14* +X407942Y224282D02* +X406023Y224282D01* +X405937Y224284D01* +X405851Y224290D01* +X405765Y224299D01* +X405680Y224313D01* +X405596Y224330D01* +X405512Y224351D01* +X405430Y224376D01* +X405349Y224404D01* +X405269Y224436D01* +X405190Y224472D01* +X405114Y224511D01* +X405039Y224554D01* +X404966Y224599D01* +X404895Y224648D01* +X404827Y224701D01* +X404760Y224756D01* +X404697Y224814D01* +X404636Y224875D01* +X404578Y224938D01* +X404523Y225005D01* +X404470Y225073D01* +X404421Y225144D01* +X404376Y225217D01* +X404333Y225292D01* +X404294Y225368D01* +X404258Y225447D01* +X404226Y225527D01* +X404198Y225608D01* +X404173Y225690D01* +X404152Y225774D01* +X404135Y225858D01* +X404121Y225943D01* +X404112Y226029D01* +X404106Y226115D01* +X404104Y226201D01* +X404104Y230999D01* +X404106Y231085D01* +X404112Y231171D01* +X404121Y231257D01* +X404135Y231342D01* +X404152Y231426D01* +X404173Y231510D01* +X404198Y231592D01* +X404226Y231673D01* +X404258Y231753D01* +X404294Y231832D01* +X404333Y231908D01* +X404376Y231983D01* +X404421Y232056D01* +X404470Y232127D01* +X404523Y232195D01* +X404578Y232262D01* +X404636Y232325D01* +X404697Y232386D01* +X404760Y232444D01* +X404827Y232499D01* +X404895Y232551D01* +X404966Y232601D01* +X405039Y232646D01* +X405114Y232689D01* +X405190Y232728D01* +X405269Y232764D01* +X405349Y232796D01* +X405430Y232824D01* +X405512Y232849D01* +X405596Y232870D01* +X405680Y232887D01* +X405765Y232901D01* +X405851Y232910D01* +X405937Y232916D01* +X406023Y232918D01* +X407942Y232918D01* +X414401Y232918D02* +X414493Y232916D01* +X414584Y232910D01* +X414675Y232901D01* +X414766Y232887D01* +X414856Y232870D01* +X414945Y232848D01* +X415033Y232823D01* +X415120Y232795D01* +X415206Y232762D01* +X415290Y232726D01* +X415373Y232687D01* +X415454Y232644D01* +X415533Y232597D01* +X415610Y232548D01* +X415685Y232495D01* +X415757Y232439D01* +X415827Y232380D01* +X415895Y232318D01* +X415960Y232253D01* +X416022Y232185D01* +X416081Y232115D01* +X416137Y232043D01* +X416190Y231968D01* +X416239Y231891D01* +X416286Y231812D01* +X416329Y231731D01* +X416368Y231648D01* +X416404Y231564D01* +X416437Y231478D01* +X416465Y231391D01* +X416490Y231303D01* +X416512Y231214D01* +X416529Y231124D01* +X416543Y231033D01* +X416552Y230942D01* +X416558Y230851D01* +X416560Y230759D01* +X414401Y232918D02* +X414298Y232916D01* +X414196Y232910D01* +X414094Y232901D01* +X413992Y232888D01* +X413891Y232871D01* +X413790Y232850D01* +X413691Y232826D01* +X413592Y232797D01* +X413495Y232766D01* +X413398Y232730D01* +X413303Y232692D01* +X413210Y232649D01* +X413118Y232603D01* +X413028Y232554D01* +X412940Y232502D01* +X412853Y232446D01* +X412769Y232387D01* +X412688Y232326D01* +X412608Y232261D01* +X412531Y232193D01* +X412456Y232122D01* +X412385Y232049D01* +X412316Y231973D01* +X412249Y231895D01* +X412186Y231814D01* +X412126Y231731D01* +X412069Y231646D01* +X412015Y231559D01* +X411964Y231469D01* +X411917Y231378D01* +X411873Y231286D01* +X411832Y231191D01* +X411795Y231096D01* +X411762Y230999D01* +X415840Y229080D02* +X415907Y229146D01* +X415971Y229215D01* +X416032Y229286D01* +X416090Y229360D01* +X416145Y229436D01* +X416197Y229514D01* +X416246Y229594D01* +X416292Y229676D01* +X416334Y229760D01* +X416373Y229846D01* +X416408Y229933D01* +X416439Y230021D01* +X416467Y230111D01* +X416492Y230201D01* +X416513Y230293D01* +X416530Y230385D01* +X416543Y230478D01* +X416552Y230571D01* +X416558Y230665D01* +X416560Y230759D01* +X415840Y229080D02* +X411762Y224282D01* +X416560Y224282D01* +X420906Y229080D02* +X423785Y229080D01* +X423871Y229078D01* +X423957Y229072D01* +X424043Y229063D01* +X424128Y229049D01* +X424212Y229032D01* +X424296Y229011D01* +X424378Y228986D01* +X424459Y228958D01* +X424539Y228926D01* +X424618Y228890D01* +X424694Y228851D01* +X424769Y228808D01* +X424842Y228763D01* +X424913Y228714D01* +X424981Y228661D01* +X425048Y228606D01* +X425111Y228548D01* +X425172Y228487D01* +X425230Y228424D01* +X425285Y228357D01* +X425338Y228289D01* +X425387Y228218D01* +X425432Y228145D01* +X425475Y228070D01* +X425514Y227994D01* +X425550Y227915D01* +X425582Y227835D01* +X425610Y227754D01* +X425635Y227672D01* +X425656Y227588D01* +X425673Y227504D01* +X425687Y227419D01* +X425696Y227333D01* +X425702Y227247D01* +X425704Y227161D01* +X425704Y226681D01* +X425702Y226584D01* +X425696Y226488D01* +X425687Y226392D01* +X425673Y226296D01* +X425656Y226201D01* +X425634Y226107D01* +X425609Y226014D01* +X425581Y225921D01* +X425548Y225830D01* +X425512Y225741D01* +X425472Y225653D01* +X425429Y225566D01* +X425383Y225481D01* +X425333Y225399D01* +X425279Y225318D01* +X425223Y225240D01* +X425163Y225164D01* +X425101Y225090D01* +X425035Y225019D01* +X424967Y224951D01* +X424896Y224885D01* +X424822Y224823D01* +X424746Y224763D01* +X424668Y224707D01* +X424587Y224653D01* +X424505Y224603D01* +X424420Y224557D01* +X424333Y224514D01* +X424245Y224474D01* +X424156Y224438D01* +X424065Y224405D01* +X423972Y224377D01* +X423879Y224352D01* +X423785Y224330D01* +X423690Y224313D01* +X423594Y224299D01* +X423498Y224290D01* +X423402Y224284D01* +X423305Y224282D01* +X423208Y224284D01* +X423112Y224290D01* +X423016Y224299D01* +X422920Y224313D01* +X422825Y224330D01* +X422731Y224352D01* +X422638Y224377D01* +X422545Y224405D01* +X422454Y224438D01* +X422365Y224474D01* +X422277Y224514D01* +X422190Y224557D01* +X422106Y224603D01* +X422023Y224653D01* +X421942Y224707D01* +X421864Y224763D01* +X421788Y224823D01* +X421714Y224885D01* +X421643Y224951D01* +X421575Y225019D01* +X421509Y225090D01* +X421447Y225164D01* +X421387Y225240D01* +X421331Y225318D01* +X421277Y225399D01* +X421227Y225482D01* +X421181Y225566D01* +X421138Y225653D01* +X421098Y225741D01* +X421062Y225830D01* +X421029Y225921D01* +X421001Y226014D01* +X420976Y226107D01* +X420954Y226201D01* +X420937Y226296D01* +X420923Y226392D01* +X420914Y226488D01* +X420908Y226584D01* +X420906Y226681D01* +X420906Y229080D01* +X420907Y229080D02* +X420909Y229203D01* +X420915Y229326D01* +X420925Y229449D01* +X420939Y229571D01* +X420956Y229693D01* +X420978Y229814D01* +X421003Y229934D01* +X421033Y230054D01* +X421066Y230172D01* +X421103Y230289D01* +X421143Y230406D01* +X421187Y230520D01* +X421235Y230634D01* +X421287Y230745D01* +X421342Y230855D01* +X421401Y230963D01* +X421463Y231070D01* +X421528Y231174D01* +X421597Y231276D01* +X421669Y231376D01* +X421744Y231473D01* +X421823Y231568D01* +X421904Y231660D01* +X421988Y231750D01* +X422075Y231837D01* +X422165Y231921D01* +X422257Y232002D01* +X422352Y232081D01* +X422449Y232156D01* +X422549Y232228D01* +X422651Y232297D01* +X422755Y232362D01* +X422862Y232424D01* +X422970Y232483D01* +X423080Y232538D01* +X423191Y232590D01* +X423305Y232637D01* +X423419Y232682D01* +X423536Y232722D01* +X423653Y232759D01* +X423771Y232792D01* +X423891Y232822D01* +X424011Y232847D01* +X424132Y232869D01* +X424254Y232886D01* +X424376Y232900D01* +X424499Y232910D01* +X424622Y232916D01* +X424745Y232918D01* +D13* +X1033780Y170180D03* +D14* +X1025906Y160782D02* +X1017270Y160782D01* +X1017270Y163181D01* +X1017272Y163278D01* +X1017278Y163374D01* +X1017287Y163470D01* +X1017301Y163566D01* +X1017318Y163661D01* +X1017340Y163755D01* +X1017365Y163848D01* +X1017393Y163941D01* +X1017426Y164032D01* +X1017462Y164121D01* +X1017502Y164209D01* +X1017545Y164296D01* +X1017591Y164381D01* +X1017641Y164463D01* +X1017695Y164544D01* +X1017751Y164622D01* +X1017811Y164698D01* +X1017873Y164772D01* +X1017939Y164843D01* +X1018007Y164911D01* +X1018078Y164977D01* +X1018152Y165039D01* +X1018228Y165099D01* +X1018306Y165155D01* +X1018387Y165209D01* +X1018470Y165259D01* +X1018554Y165305D01* +X1018641Y165348D01* +X1018729Y165388D01* +X1018818Y165424D01* +X1018909Y165457D01* +X1019002Y165485D01* +X1019095Y165510D01* +X1019189Y165532D01* +X1019284Y165549D01* +X1019380Y165563D01* +X1019476Y165572D01* +X1019572Y165578D01* +X1019669Y165580D01* +X1019766Y165578D01* +X1019862Y165572D01* +X1019958Y165563D01* +X1020054Y165549D01* +X1020149Y165532D01* +X1020243Y165510D01* +X1020336Y165485D01* +X1020429Y165457D01* +X1020520Y165424D01* +X1020609Y165388D01* +X1020697Y165348D01* +X1020784Y165305D01* +X1020869Y165259D01* +X1020951Y165209D01* +X1021032Y165155D01* +X1021110Y165099D01* +X1021186Y165039D01* +X1021260Y164977D01* +X1021331Y164911D01* +X1021399Y164843D01* +X1021465Y164772D01* +X1021527Y164698D01* +X1021587Y164622D01* +X1021643Y164544D01* +X1021697Y164463D01* +X1021747Y164381D01* +X1021793Y164296D01* +X1021836Y164209D01* +X1021876Y164121D01* +X1021912Y164032D01* +X1021945Y163941D01* +X1021973Y163848D01* +X1021998Y163755D01* +X1022020Y163661D01* +X1022037Y163566D01* +X1022051Y163470D01* +X1022060Y163374D01* +X1022066Y163278D01* +X1022068Y163181D01* +X1022068Y160782D01* +X1022068Y163661D02* +X1025906Y165580D01* +X1025906Y169841D02* +X1025906Y172720D01* +X1025904Y172806D01* +X1025898Y172892D01* +X1025889Y172978D01* +X1025875Y173063D01* +X1025858Y173147D01* +X1025837Y173231D01* +X1025812Y173313D01* +X1025784Y173394D01* +X1025752Y173474D01* +X1025716Y173553D01* +X1025677Y173629D01* +X1025634Y173704D01* +X1025589Y173777D01* +X1025540Y173848D01* +X1025487Y173916D01* +X1025432Y173983D01* +X1025374Y174046D01* +X1025313Y174107D01* +X1025250Y174165D01* +X1025183Y174220D01* +X1025115Y174273D01* +X1025044Y174322D01* +X1024971Y174367D01* +X1024896Y174410D01* +X1024820Y174449D01* +X1024741Y174485D01* +X1024661Y174517D01* +X1024580Y174545D01* +X1024498Y174570D01* +X1024414Y174591D01* +X1024330Y174608D01* +X1024245Y174622D01* +X1024159Y174631D01* +X1024073Y174637D01* +X1023987Y174639D01* +X1023027Y174639D01* +X1022941Y174637D01* +X1022855Y174631D01* +X1022769Y174622D01* +X1022684Y174608D01* +X1022600Y174591D01* +X1022516Y174570D01* +X1022434Y174545D01* +X1022353Y174517D01* +X1022273Y174485D01* +X1022194Y174449D01* +X1022118Y174410D01* +X1022043Y174367D01* +X1021970Y174322D01* +X1021899Y174273D01* +X1021831Y174220D01* +X1021764Y174165D01* +X1021701Y174107D01* +X1021640Y174046D01* +X1021582Y173983D01* +X1021527Y173916D01* +X1021475Y173848D01* +X1021425Y173777D01* +X1021380Y173704D01* +X1021337Y173629D01* +X1021298Y173553D01* +X1021262Y173474D01* +X1021230Y173394D01* +X1021202Y173313D01* +X1021177Y173231D01* +X1021156Y173147D01* +X1021139Y173063D01* +X1021125Y172978D01* +X1021116Y172892D01* +X1021110Y172806D01* +X1021108Y172720D01* +X1021108Y169841D01* +X1017270Y169841D01* +X1017270Y174639D01* +D13* +X462280Y213360D03* +D14* +X456946Y202974D02* +X456946Y201055D01* +X456944Y200969D01* +X456938Y200883D01* +X456929Y200797D01* +X456915Y200712D01* +X456898Y200628D01* +X456877Y200544D01* +X456852Y200462D01* +X456824Y200381D01* +X456792Y200301D01* +X456756Y200222D01* +X456717Y200146D01* +X456674Y200071D01* +X456629Y199998D01* +X456580Y199927D01* +X456527Y199859D01* +X456472Y199792D01* +X456414Y199729D01* +X456353Y199668D01* +X456290Y199610D01* +X456223Y199555D01* +X456155Y199503D01* +X456084Y199453D01* +X456011Y199408D01* +X455936Y199365D01* +X455860Y199326D01* +X455781Y199290D01* +X455701Y199258D01* +X455620Y199230D01* +X455538Y199205D01* +X455454Y199184D01* +X455370Y199167D01* +X455285Y199153D01* +X455199Y199144D01* +X455113Y199138D01* +X455027Y199136D01* +X450229Y199136D01* +X450143Y199138D01* +X450057Y199144D01* +X449971Y199153D01* +X449886Y199167D01* +X449802Y199184D01* +X449718Y199205D01* +X449636Y199230D01* +X449555Y199258D01* +X449475Y199290D01* +X449396Y199326D01* +X449320Y199365D01* +X449245Y199408D01* +X449172Y199453D01* +X449101Y199502D01* +X449033Y199555D01* +X448966Y199610D01* +X448903Y199668D01* +X448842Y199729D01* +X448784Y199792D01* +X448729Y199859D01* +X448677Y199927D01* +X448627Y199998D01* +X448582Y200071D01* +X448539Y200146D01* +X448500Y200222D01* +X448464Y200301D01* +X448432Y200381D01* +X448404Y200462D01* +X448379Y200544D01* +X448358Y200628D01* +X448341Y200712D01* +X448327Y200797D01* +X448318Y200883D01* +X448312Y200969D01* +X448310Y201055D01* +X448310Y202974D01* +X448310Y209433D02* +X448312Y209525D01* +X448318Y209616D01* +X448327Y209707D01* +X448341Y209798D01* +X448358Y209888D01* +X448380Y209977D01* +X448405Y210065D01* +X448433Y210152D01* +X448466Y210238D01* +X448502Y210322D01* +X448541Y210405D01* +X448584Y210486D01* +X448631Y210565D01* +X448680Y210642D01* +X448733Y210717D01* +X448789Y210789D01* +X448848Y210859D01* +X448910Y210927D01* +X448975Y210992D01* +X449043Y211054D01* +X449113Y211113D01* +X449185Y211169D01* +X449260Y211222D01* +X449337Y211271D01* +X449416Y211318D01* +X449497Y211361D01* +X449580Y211400D01* +X449664Y211436D01* +X449750Y211469D01* +X449837Y211497D01* +X449925Y211522D01* +X450014Y211544D01* +X450104Y211561D01* +X450195Y211575D01* +X450286Y211584D01* +X450377Y211590D01* +X450469Y211592D01* +X448310Y209433D02* +X448312Y209330D01* +X448318Y209228D01* +X448327Y209126D01* +X448340Y209024D01* +X448357Y208923D01* +X448378Y208822D01* +X448402Y208723D01* +X448431Y208624D01* +X448462Y208527D01* +X448498Y208430D01* +X448536Y208335D01* +X448579Y208242D01* +X448625Y208150D01* +X448674Y208060D01* +X448726Y207972D01* +X448782Y207885D01* +X448841Y207801D01* +X448902Y207720D01* +X448967Y207640D01* +X449035Y207563D01* +X449106Y207488D01* +X449179Y207417D01* +X449255Y207348D01* +X449333Y207281D01* +X449414Y207218D01* +X449497Y207158D01* +X449582Y207101D01* +X449669Y207047D01* +X449759Y206996D01* +X449850Y206949D01* +X449942Y206905D01* +X450037Y206864D01* +X450132Y206827D01* +X450229Y206794D01* +X452148Y210872D02* +X452082Y210939D01* +X452013Y211003D01* +X451942Y211064D01* +X451868Y211122D01* +X451792Y211177D01* +X451714Y211229D01* +X451634Y211278D01* +X451552Y211324D01* +X451468Y211366D01* +X451382Y211405D01* +X451295Y211440D01* +X451207Y211471D01* +X451117Y211499D01* +X451027Y211524D01* +X450935Y211545D01* +X450843Y211562D01* +X450750Y211575D01* +X450657Y211584D01* +X450563Y211590D01* +X450469Y211592D01* +X452148Y210872D02* +X456946Y206794D01* +X456946Y211592D01* +X449270Y215938D02* +X448310Y215938D01* +X448310Y220736D01* +X456946Y218337D01* +D13* +X472440Y152400D03* +D14* +X476504Y123970D02* +X476504Y122051D01* +X476502Y121965D01* +X476496Y121879D01* +X476487Y121793D01* +X476473Y121708D01* +X476456Y121624D01* +X476435Y121540D01* +X476410Y121458D01* +X476382Y121377D01* +X476350Y121297D01* +X476314Y121218D01* +X476275Y121142D01* +X476232Y121067D01* +X476187Y120994D01* +X476138Y120923D01* +X476085Y120855D01* +X476030Y120788D01* +X475972Y120725D01* +X475911Y120664D01* +X475848Y120606D01* +X475781Y120551D01* +X475713Y120499D01* +X475642Y120449D01* +X475569Y120404D01* +X475494Y120361D01* +X475418Y120322D01* +X475339Y120286D01* +X475259Y120254D01* +X475178Y120226D01* +X475096Y120201D01* +X475012Y120180D01* +X474928Y120163D01* +X474843Y120149D01* +X474757Y120140D01* +X474671Y120134D01* +X474585Y120132D01* +X469787Y120132D01* +X469701Y120134D01* +X469615Y120140D01* +X469529Y120149D01* +X469444Y120163D01* +X469360Y120180D01* +X469276Y120201D01* +X469194Y120226D01* +X469113Y120254D01* +X469033Y120286D01* +X468954Y120322D01* +X468878Y120361D01* +X468803Y120404D01* +X468730Y120449D01* +X468659Y120498D01* +X468591Y120551D01* +X468524Y120606D01* +X468461Y120664D01* +X468400Y120725D01* +X468342Y120788D01* +X468287Y120855D01* +X468235Y120923D01* +X468185Y120994D01* +X468140Y121067D01* +X468097Y121142D01* +X468058Y121218D01* +X468022Y121297D01* +X467990Y121377D01* +X467962Y121458D01* +X467937Y121540D01* +X467916Y121624D01* +X467899Y121708D01* +X467885Y121793D01* +X467876Y121879D01* +X467870Y121965D01* +X467868Y122051D01* +X467868Y123970D01* +X467868Y130429D02* +X467870Y130521D01* +X467876Y130612D01* +X467885Y130703D01* +X467899Y130794D01* +X467916Y130884D01* +X467938Y130973D01* +X467963Y131061D01* +X467991Y131148D01* +X468024Y131234D01* +X468060Y131318D01* +X468099Y131401D01* +X468142Y131482D01* +X468189Y131561D01* +X468238Y131638D01* +X468291Y131713D01* +X468347Y131785D01* +X468406Y131855D01* +X468468Y131923D01* +X468533Y131988D01* +X468601Y132050D01* +X468671Y132109D01* +X468743Y132165D01* +X468818Y132218D01* +X468895Y132267D01* +X468974Y132314D01* +X469055Y132357D01* +X469138Y132396D01* +X469222Y132432D01* +X469308Y132465D01* +X469395Y132493D01* +X469483Y132518D01* +X469572Y132540D01* +X469662Y132557D01* +X469753Y132571D01* +X469844Y132580D01* +X469935Y132586D01* +X470027Y132588D01* +X467868Y130429D02* +X467870Y130326D01* +X467876Y130224D01* +X467885Y130122D01* +X467898Y130020D01* +X467915Y129919D01* +X467936Y129818D01* +X467960Y129719D01* +X467989Y129620D01* +X468020Y129523D01* +X468056Y129426D01* +X468094Y129331D01* +X468137Y129238D01* +X468183Y129146D01* +X468232Y129056D01* +X468284Y128968D01* +X468340Y128881D01* +X468399Y128797D01* +X468460Y128716D01* +X468525Y128636D01* +X468593Y128559D01* +X468664Y128484D01* +X468737Y128413D01* +X468813Y128344D01* +X468891Y128277D01* +X468972Y128214D01* +X469055Y128154D01* +X469140Y128097D01* +X469227Y128043D01* +X469317Y127992D01* +X469408Y127945D01* +X469500Y127901D01* +X469595Y127860D01* +X469690Y127823D01* +X469787Y127790D01* +X471706Y131868D02* +X471640Y131935D01* +X471571Y131999D01* +X471500Y132060D01* +X471426Y132118D01* +X471350Y132173D01* +X471272Y132225D01* +X471192Y132274D01* +X471110Y132320D01* +X471026Y132362D01* +X470940Y132401D01* +X470853Y132436D01* +X470765Y132467D01* +X470675Y132495D01* +X470585Y132520D01* +X470493Y132541D01* +X470401Y132558D01* +X470308Y132571D01* +X470215Y132580D01* +X470121Y132586D01* +X470027Y132588D01* +X471706Y131868D02* +X476504Y127790D01* +X476504Y132588D01* +X474105Y136934D02* +X474008Y136936D01* +X473912Y136942D01* +X473816Y136951D01* +X473720Y136965D01* +X473625Y136982D01* +X473531Y137004D01* +X473438Y137029D01* +X473345Y137057D01* +X473254Y137090D01* +X473165Y137126D01* +X473077Y137166D01* +X472990Y137209D01* +X472906Y137255D01* +X472823Y137305D01* +X472742Y137359D01* +X472664Y137415D01* +X472588Y137475D01* +X472514Y137537D01* +X472443Y137603D01* +X472375Y137671D01* +X472309Y137742D01* +X472247Y137816D01* +X472187Y137892D01* +X472131Y137970D01* +X472077Y138051D01* +X472027Y138134D01* +X471981Y138218D01* +X471938Y138305D01* +X471898Y138393D01* +X471862Y138482D01* +X471829Y138573D01* +X471801Y138666D01* +X471776Y138759D01* +X471754Y138853D01* +X471737Y138948D01* +X471723Y139044D01* +X471714Y139140D01* +X471708Y139236D01* +X471706Y139333D01* +X471708Y139430D01* +X471714Y139526D01* +X471723Y139622D01* +X471737Y139718D01* +X471754Y139813D01* +X471776Y139907D01* +X471801Y140000D01* +X471829Y140093D01* +X471862Y140184D01* +X471898Y140273D01* +X471938Y140361D01* +X471981Y140448D01* +X472027Y140533D01* +X472077Y140615D01* +X472131Y140696D01* +X472187Y140774D01* +X472247Y140850D01* +X472309Y140924D01* +X472375Y140995D01* +X472443Y141063D01* +X472514Y141129D01* +X472588Y141191D01* +X472664Y141251D01* +X472742Y141307D01* +X472823Y141361D01* +X472906Y141411D01* +X472990Y141457D01* +X473077Y141500D01* +X473165Y141540D01* +X473254Y141576D01* +X473345Y141609D01* +X473438Y141637D01* +X473531Y141662D01* +X473625Y141684D01* +X473720Y141701D01* +X473816Y141715D01* +X473912Y141724D01* +X474008Y141730D01* +X474105Y141732D01* +X474202Y141730D01* +X474298Y141724D01* +X474394Y141715D01* +X474490Y141701D01* +X474585Y141684D01* +X474679Y141662D01* +X474772Y141637D01* +X474865Y141609D01* +X474956Y141576D01* +X475045Y141540D01* +X475133Y141500D01* +X475220Y141457D01* +X475305Y141411D01* +X475387Y141361D01* +X475468Y141307D01* +X475546Y141251D01* +X475622Y141191D01* +X475696Y141129D01* +X475767Y141063D01* +X475835Y140995D01* +X475901Y140924D01* +X475963Y140850D01* +X476023Y140774D01* +X476079Y140696D01* +X476133Y140615D01* +X476183Y140532D01* +X476229Y140448D01* +X476272Y140361D01* +X476312Y140273D01* +X476348Y140184D01* +X476381Y140093D01* +X476409Y140000D01* +X476434Y139907D01* +X476456Y139813D01* +X476473Y139718D01* +X476487Y139622D01* +X476496Y139526D01* +X476502Y139430D01* +X476504Y139333D01* +X476502Y139236D01* +X476496Y139140D01* +X476487Y139044D01* +X476473Y138948D01* +X476456Y138853D01* +X476434Y138759D01* +X476409Y138666D01* +X476381Y138573D01* +X476348Y138482D01* +X476312Y138393D01* +X476272Y138305D01* +X476229Y138218D01* +X476183Y138134D01* +X476133Y138051D01* +X476079Y137970D01* +X476023Y137892D01* +X475963Y137816D01* +X475901Y137742D01* +X475835Y137671D01* +X475767Y137603D01* +X475696Y137537D01* +X475622Y137475D01* +X475546Y137415D01* +X475468Y137359D01* +X475387Y137305D01* +X475305Y137255D01* +X475220Y137209D01* +X475133Y137166D01* +X475045Y137126D01* +X474956Y137090D01* +X474865Y137057D01* +X474772Y137029D01* +X474679Y137004D01* +X474585Y136982D01* +X474490Y136965D01* +X474394Y136951D01* +X474298Y136942D01* +X474202Y136936D01* +X474105Y136934D01* +X469787Y137414D02* +X469701Y137416D01* +X469615Y137422D01* +X469529Y137431D01* +X469444Y137445D01* +X469360Y137462D01* +X469276Y137483D01* +X469194Y137508D01* +X469113Y137536D01* +X469033Y137568D01* +X468954Y137604D01* +X468878Y137643D01* +X468803Y137686D01* +X468730Y137731D01* +X468659Y137780D01* +X468591Y137833D01* +X468524Y137888D01* +X468461Y137946D01* +X468400Y138007D01* +X468342Y138070D01* +X468287Y138137D01* +X468234Y138205D01* +X468185Y138276D01* +X468140Y138349D01* +X468097Y138424D01* +X468058Y138500D01* +X468022Y138579D01* +X467990Y138659D01* +X467962Y138740D01* +X467937Y138822D01* +X467916Y138906D01* +X467899Y138990D01* +X467885Y139075D01* +X467876Y139161D01* +X467870Y139247D01* +X467868Y139333D01* +X467870Y139419D01* +X467876Y139505D01* +X467885Y139591D01* +X467899Y139676D01* +X467916Y139760D01* +X467937Y139844D01* +X467962Y139926D01* +X467990Y140007D01* +X468022Y140087D01* +X468058Y140166D01* +X468097Y140242D01* +X468140Y140317D01* +X468185Y140390D01* +X468234Y140461D01* +X468287Y140529D01* +X468342Y140596D01* +X468400Y140659D01* +X468461Y140720D01* +X468524Y140778D01* +X468591Y140833D01* +X468659Y140886D01* +X468730Y140935D01* +X468803Y140980D01* +X468878Y141023D01* +X468954Y141062D01* +X469033Y141098D01* +X469113Y141130D01* +X469194Y141158D01* +X469276Y141183D01* +X469360Y141204D01* +X469444Y141221D01* +X469529Y141235D01* +X469615Y141244D01* +X469701Y141250D01* +X469787Y141252D01* +X469873Y141250D01* +X469959Y141244D01* +X470045Y141235D01* +X470130Y141221D01* +X470214Y141204D01* +X470298Y141183D01* +X470380Y141158D01* +X470461Y141130D01* +X470541Y141098D01* +X470620Y141062D01* +X470696Y141023D01* +X470771Y140980D01* +X470844Y140935D01* +X470915Y140886D01* +X470983Y140833D01* +X471050Y140778D01* +X471113Y140720D01* +X471174Y140659D01* +X471232Y140596D01* +X471287Y140529D01* +X471340Y140461D01* +X471389Y140390D01* +X471434Y140317D01* +X471477Y140242D01* +X471516Y140166D01* +X471552Y140087D01* +X471584Y140007D01* +X471612Y139926D01* +X471637Y139844D01* +X471658Y139760D01* +X471675Y139676D01* +X471689Y139591D01* +X471698Y139505D01* +X471704Y139419D01* +X471706Y139333D01* +X471704Y139247D01* +X471698Y139161D01* +X471689Y139075D01* +X471675Y138990D01* +X471658Y138906D01* +X471637Y138822D01* +X471612Y138740D01* +X471584Y138659D01* +X471552Y138579D01* +X471516Y138500D01* +X471477Y138424D01* +X471434Y138349D01* +X471389Y138276D01* +X471340Y138205D01* +X471287Y138137D01* +X471232Y138070D01* +X471174Y138007D01* +X471113Y137946D01* +X471050Y137888D01* +X470983Y137833D01* +X470915Y137780D01* +X470844Y137731D01* +X470771Y137686D01* +X470696Y137643D01* +X470620Y137604D01* +X470541Y137568D01* +X470461Y137536D01* +X470380Y137508D01* +X470298Y137483D01* +X470214Y137462D01* +X470130Y137445D01* +X470045Y137431D01* +X469959Y137422D01* +X469873Y137416D01* +X469787Y137414D01* +D18* +X520700Y134620D03* +D14* +X511066Y116332D02* +X509147Y116332D01* +X509061Y116334D01* +X508975Y116340D01* +X508889Y116349D01* +X508804Y116363D01* +X508720Y116380D01* +X508636Y116401D01* +X508554Y116426D01* +X508473Y116454D01* +X508393Y116486D01* +X508314Y116522D01* +X508238Y116561D01* +X508163Y116604D01* +X508090Y116649D01* +X508019Y116698D01* +X507951Y116751D01* +X507884Y116806D01* +X507821Y116864D01* +X507760Y116925D01* +X507702Y116988D01* +X507647Y117055D01* +X507594Y117123D01* +X507545Y117194D01* +X507500Y117267D01* +X507457Y117342D01* +X507418Y117418D01* +X507382Y117497D01* +X507350Y117577D01* +X507322Y117658D01* +X507297Y117740D01* +X507276Y117824D01* +X507259Y117908D01* +X507245Y117993D01* +X507236Y118079D01* +X507230Y118165D01* +X507228Y118251D01* +X507228Y123049D01* +X507230Y123135D01* +X507236Y123221D01* +X507245Y123307D01* +X507259Y123392D01* +X507276Y123476D01* +X507297Y123560D01* +X507322Y123642D01* +X507350Y123723D01* +X507382Y123803D01* +X507418Y123882D01* +X507457Y123958D01* +X507500Y124033D01* +X507545Y124106D01* +X507594Y124177D01* +X507647Y124245D01* +X507702Y124312D01* +X507760Y124375D01* +X507821Y124436D01* +X507884Y124494D01* +X507951Y124549D01* +X508019Y124601D01* +X508090Y124651D01* +X508163Y124696D01* +X508238Y124739D01* +X508314Y124778D01* +X508393Y124814D01* +X508473Y124846D01* +X508554Y124874D01* +X508636Y124899D01* +X508720Y124920D01* +X508804Y124937D01* +X508889Y124951D01* +X508975Y124960D01* +X509061Y124966D01* +X509147Y124968D01* +X511066Y124968D01* +X517525Y124968D02* +X517617Y124966D01* +X517708Y124960D01* +X517799Y124951D01* +X517890Y124937D01* +X517980Y124920D01* +X518069Y124898D01* +X518157Y124873D01* +X518244Y124845D01* +X518330Y124812D01* +X518414Y124776D01* +X518497Y124737D01* +X518578Y124694D01* +X518657Y124647D01* +X518734Y124598D01* +X518809Y124545D01* +X518881Y124489D01* +X518951Y124430D01* +X519019Y124368D01* +X519084Y124303D01* +X519146Y124235D01* +X519205Y124165D01* +X519261Y124093D01* +X519314Y124018D01* +X519363Y123941D01* +X519410Y123862D01* +X519453Y123781D01* +X519492Y123698D01* +X519528Y123614D01* +X519561Y123528D01* +X519589Y123441D01* +X519614Y123353D01* +X519636Y123264D01* +X519653Y123174D01* +X519667Y123083D01* +X519676Y122992D01* +X519682Y122901D01* +X519684Y122809D01* +X517525Y124968D02* +X517422Y124966D01* +X517320Y124960D01* +X517218Y124951D01* +X517116Y124938D01* +X517015Y124921D01* +X516914Y124900D01* +X516815Y124876D01* +X516716Y124847D01* +X516619Y124816D01* +X516522Y124780D01* +X516427Y124742D01* +X516334Y124699D01* +X516242Y124653D01* +X516152Y124604D01* +X516064Y124552D01* +X515977Y124496D01* +X515893Y124437D01* +X515812Y124376D01* +X515732Y124311D01* +X515655Y124243D01* +X515580Y124172D01* +X515509Y124099D01* +X515440Y124023D01* +X515373Y123945D01* +X515310Y123864D01* +X515250Y123781D01* +X515193Y123696D01* +X515139Y123609D01* +X515088Y123519D01* +X515041Y123428D01* +X514997Y123336D01* +X514956Y123241D01* +X514919Y123146D01* +X514886Y123049D01* +X518964Y121130D02* +X519031Y121196D01* +X519095Y121265D01* +X519156Y121336D01* +X519214Y121410D01* +X519269Y121486D01* +X519321Y121564D01* +X519370Y121644D01* +X519416Y121726D01* +X519458Y121810D01* +X519497Y121896D01* +X519532Y121983D01* +X519563Y122071D01* +X519591Y122161D01* +X519616Y122251D01* +X519637Y122343D01* +X519654Y122435D01* +X519667Y122528D01* +X519676Y122621D01* +X519682Y122715D01* +X519684Y122809D01* +X518964Y121130D02* +X514886Y116332D01* +X519684Y116332D01* +X526669Y124968D02* +X526761Y124966D01* +X526852Y124960D01* +X526943Y124951D01* +X527034Y124937D01* +X527124Y124920D01* +X527213Y124898D01* +X527301Y124873D01* +X527388Y124845D01* +X527474Y124812D01* +X527558Y124776D01* +X527641Y124737D01* +X527722Y124694D01* +X527801Y124647D01* +X527878Y124598D01* +X527953Y124545D01* +X528025Y124489D01* +X528095Y124430D01* +X528163Y124368D01* +X528228Y124303D01* +X528290Y124235D01* +X528349Y124165D01* +X528405Y124093D01* +X528458Y124018D01* +X528507Y123941D01* +X528554Y123862D01* +X528597Y123781D01* +X528636Y123698D01* +X528672Y123614D01* +X528705Y123528D01* +X528733Y123441D01* +X528758Y123353D01* +X528780Y123264D01* +X528797Y123174D01* +X528811Y123083D01* +X528820Y122992D01* +X528826Y122901D01* +X528828Y122809D01* +X526669Y124968D02* +X526566Y124966D01* +X526464Y124960D01* +X526362Y124951D01* +X526260Y124938D01* +X526159Y124921D01* +X526058Y124900D01* +X525959Y124876D01* +X525860Y124847D01* +X525763Y124816D01* +X525666Y124780D01* +X525571Y124742D01* +X525478Y124699D01* +X525386Y124653D01* +X525296Y124604D01* +X525208Y124552D01* +X525121Y124496D01* +X525037Y124437D01* +X524956Y124376D01* +X524876Y124311D01* +X524799Y124243D01* +X524724Y124172D01* +X524653Y124099D01* +X524584Y124023D01* +X524517Y123945D01* +X524454Y123864D01* +X524394Y123781D01* +X524337Y123696D01* +X524283Y123609D01* +X524232Y123519D01* +X524185Y123428D01* +X524141Y123336D01* +X524100Y123241D01* +X524063Y123146D01* +X524030Y123049D01* +X528108Y121130D02* +X528175Y121196D01* +X528239Y121265D01* +X528300Y121336D01* +X528358Y121410D01* +X528413Y121486D01* +X528465Y121564D01* +X528514Y121644D01* +X528560Y121726D01* +X528602Y121810D01* +X528641Y121896D01* +X528676Y121983D01* +X528707Y122071D01* +X528735Y122161D01* +X528760Y122251D01* +X528781Y122343D01* +X528798Y122435D01* +X528811Y122528D01* +X528820Y122621D01* +X528826Y122715D01* +X528828Y122809D01* +X528108Y121130D02* +X524030Y116332D01* +X528828Y116332D01* +D15* +X1021080Y294640D03* +D14* +X1020572Y315355D02* +X1020572Y317274D01* +X1020572Y315355D02* +X1020570Y315269D01* +X1020564Y315183D01* +X1020555Y315097D01* +X1020541Y315012D01* +X1020524Y314928D01* +X1020503Y314844D01* +X1020478Y314762D01* +X1020450Y314681D01* +X1020418Y314601D01* +X1020382Y314522D01* +X1020343Y314446D01* +X1020300Y314371D01* +X1020255Y314298D01* +X1020206Y314227D01* +X1020153Y314159D01* +X1020098Y314092D01* +X1020040Y314029D01* +X1019979Y313968D01* +X1019916Y313910D01* +X1019849Y313855D01* +X1019781Y313803D01* +X1019710Y313753D01* +X1019637Y313708D01* +X1019562Y313665D01* +X1019486Y313626D01* +X1019407Y313590D01* +X1019327Y313558D01* +X1019246Y313530D01* +X1019164Y313505D01* +X1019080Y313484D01* +X1018996Y313467D01* +X1018911Y313453D01* +X1018825Y313444D01* +X1018739Y313438D01* +X1018653Y313436D01* +X1013855Y313436D01* +X1013769Y313438D01* +X1013683Y313444D01* +X1013597Y313453D01* +X1013512Y313467D01* +X1013428Y313484D01* +X1013344Y313505D01* +X1013262Y313530D01* +X1013181Y313558D01* +X1013101Y313590D01* +X1013022Y313626D01* +X1012946Y313665D01* +X1012871Y313708D01* +X1012798Y313753D01* +X1012727Y313802D01* +X1012659Y313855D01* +X1012592Y313910D01* +X1012529Y313968D01* +X1012468Y314029D01* +X1012410Y314092D01* +X1012355Y314159D01* +X1012303Y314227D01* +X1012253Y314298D01* +X1012208Y314371D01* +X1012165Y314446D01* +X1012126Y314522D01* +X1012090Y314601D01* +X1012058Y314681D01* +X1012030Y314762D01* +X1012005Y314844D01* +X1011984Y314928D01* +X1011967Y315012D01* +X1011953Y315097D01* +X1011944Y315183D01* +X1011938Y315269D01* +X1011936Y315355D01* +X1011936Y317274D01* +X1011936Y323013D02* +X1018653Y321094D01* +X1018653Y325892D01* +X1016734Y324453D02* +X1020572Y324453D01* +D13* +X1033780Y297180D03* +D14* +X1036828Y315355D02* +X1036828Y317274D01* +X1036828Y315355D02* +X1036826Y315269D01* +X1036820Y315183D01* +X1036811Y315097D01* +X1036797Y315012D01* +X1036780Y314928D01* +X1036759Y314844D01* +X1036734Y314762D01* +X1036706Y314681D01* +X1036674Y314601D01* +X1036638Y314522D01* +X1036599Y314446D01* +X1036556Y314371D01* +X1036511Y314298D01* +X1036462Y314227D01* +X1036409Y314159D01* +X1036354Y314092D01* +X1036296Y314029D01* +X1036235Y313968D01* +X1036172Y313910D01* +X1036105Y313855D01* +X1036037Y313803D01* +X1035966Y313753D01* +X1035893Y313708D01* +X1035818Y313665D01* +X1035742Y313626D01* +X1035663Y313590D01* +X1035583Y313558D01* +X1035502Y313530D01* +X1035420Y313505D01* +X1035336Y313484D01* +X1035252Y313467D01* +X1035167Y313453D01* +X1035081Y313444D01* +X1034995Y313438D01* +X1034909Y313436D01* +X1030111Y313436D01* +X1030025Y313438D01* +X1029939Y313444D01* +X1029853Y313453D01* +X1029768Y313467D01* +X1029684Y313484D01* +X1029600Y313505D01* +X1029518Y313530D01* +X1029437Y313558D01* +X1029357Y313590D01* +X1029278Y313626D01* +X1029202Y313665D01* +X1029127Y313708D01* +X1029054Y313753D01* +X1028983Y313802D01* +X1028915Y313855D01* +X1028848Y313910D01* +X1028785Y313968D01* +X1028724Y314029D01* +X1028666Y314092D01* +X1028611Y314159D01* +X1028559Y314227D01* +X1028509Y314298D01* +X1028464Y314371D01* +X1028421Y314446D01* +X1028382Y314522D01* +X1028346Y314601D01* +X1028314Y314681D01* +X1028286Y314762D01* +X1028261Y314844D01* +X1028240Y314928D01* +X1028223Y315012D01* +X1028209Y315097D01* +X1028200Y315183D01* +X1028194Y315269D01* +X1028192Y315355D01* +X1028192Y317274D01* +X1036828Y321094D02* +X1036828Y323973D01* +X1036826Y324059D01* +X1036820Y324145D01* +X1036811Y324231D01* +X1036797Y324316D01* +X1036780Y324400D01* +X1036759Y324484D01* +X1036734Y324566D01* +X1036706Y324647D01* +X1036674Y324727D01* +X1036638Y324806D01* +X1036599Y324882D01* +X1036556Y324957D01* +X1036511Y325030D01* +X1036462Y325101D01* +X1036409Y325169D01* +X1036354Y325236D01* +X1036296Y325299D01* +X1036235Y325360D01* +X1036172Y325418D01* +X1036105Y325473D01* +X1036037Y325526D01* +X1035966Y325575D01* +X1035893Y325620D01* +X1035818Y325663D01* +X1035742Y325702D01* +X1035663Y325738D01* +X1035583Y325770D01* +X1035502Y325798D01* +X1035420Y325823D01* +X1035336Y325844D01* +X1035252Y325861D01* +X1035167Y325875D01* +X1035081Y325884D01* +X1034995Y325890D01* +X1034909Y325892D01* +X1033949Y325892D01* +X1033863Y325890D01* +X1033777Y325884D01* +X1033691Y325875D01* +X1033606Y325861D01* +X1033522Y325844D01* +X1033438Y325823D01* +X1033356Y325798D01* +X1033275Y325770D01* +X1033195Y325738D01* +X1033116Y325702D01* +X1033040Y325663D01* +X1032965Y325620D01* +X1032892Y325575D01* +X1032821Y325526D01* +X1032753Y325473D01* +X1032686Y325418D01* +X1032623Y325360D01* +X1032562Y325299D01* +X1032504Y325236D01* +X1032449Y325169D01* +X1032397Y325101D01* +X1032347Y325030D01* +X1032302Y324957D01* +X1032259Y324882D01* +X1032220Y324806D01* +X1032184Y324727D01* +X1032152Y324647D01* +X1032124Y324566D01* +X1032099Y324484D01* +X1032078Y324400D01* +X1032061Y324316D01* +X1032047Y324231D01* +X1032038Y324145D01* +X1032032Y324059D01* +X1032030Y323973D01* +X1032030Y321094D01* +X1028192Y321094D01* +X1028192Y325892D01* +D15* +X1016000Y58420D03* +D14* +X1019810Y77103D02* +X1019810Y79022D01* +X1019810Y77103D02* +X1019808Y77017D01* +X1019802Y76931D01* +X1019793Y76845D01* +X1019779Y76760D01* +X1019762Y76676D01* +X1019741Y76592D01* +X1019716Y76510D01* +X1019688Y76429D01* +X1019656Y76349D01* +X1019620Y76270D01* +X1019581Y76194D01* +X1019538Y76119D01* +X1019493Y76046D01* +X1019444Y75975D01* +X1019391Y75907D01* +X1019336Y75840D01* +X1019278Y75777D01* +X1019217Y75716D01* +X1019154Y75658D01* +X1019087Y75603D01* +X1019019Y75551D01* +X1018948Y75501D01* +X1018875Y75456D01* +X1018800Y75413D01* +X1018724Y75374D01* +X1018645Y75338D01* +X1018565Y75306D01* +X1018484Y75278D01* +X1018402Y75253D01* +X1018318Y75232D01* +X1018234Y75215D01* +X1018149Y75201D01* +X1018063Y75192D01* +X1017977Y75186D01* +X1017891Y75184D01* +X1013093Y75184D01* +X1013007Y75186D01* +X1012921Y75192D01* +X1012835Y75201D01* +X1012750Y75215D01* +X1012666Y75232D01* +X1012582Y75253D01* +X1012500Y75278D01* +X1012419Y75306D01* +X1012339Y75338D01* +X1012260Y75374D01* +X1012184Y75413D01* +X1012109Y75456D01* +X1012036Y75501D01* +X1011965Y75550D01* +X1011897Y75603D01* +X1011830Y75658D01* +X1011767Y75716D01* +X1011706Y75777D01* +X1011648Y75840D01* +X1011593Y75907D01* +X1011541Y75975D01* +X1011491Y76046D01* +X1011446Y76119D01* +X1011403Y76194D01* +X1011364Y76270D01* +X1011328Y76349D01* +X1011296Y76429D01* +X1011268Y76510D01* +X1011243Y76592D01* +X1011222Y76676D01* +X1011205Y76760D01* +X1011191Y76845D01* +X1011182Y76931D01* +X1011176Y77017D01* +X1011174Y77103D01* +X1011174Y79022D01* +X1013093Y82842D02* +X1011174Y85241D01* +X1019810Y85241D01* +X1019810Y82842D02* +X1019810Y87640D01* +X1015972Y93905D02* +X1015972Y96784D01* +X1015972Y93905D02* +X1015970Y93819D01* +X1015964Y93733D01* +X1015955Y93647D01* +X1015941Y93562D01* +X1015924Y93478D01* +X1015903Y93394D01* +X1015878Y93312D01* +X1015850Y93231D01* +X1015818Y93151D01* +X1015782Y93072D01* +X1015743Y92996D01* +X1015700Y92921D01* +X1015655Y92848D01* +X1015606Y92777D01* +X1015553Y92709D01* +X1015498Y92642D01* +X1015440Y92579D01* +X1015379Y92518D01* +X1015316Y92460D01* +X1015249Y92405D01* +X1015181Y92353D01* +X1015110Y92303D01* +X1015037Y92258D01* +X1014962Y92215D01* +X1014886Y92176D01* +X1014807Y92140D01* +X1014727Y92108D01* +X1014646Y92080D01* +X1014564Y92055D01* +X1014480Y92034D01* +X1014396Y92017D01* +X1014311Y92003D01* +X1014225Y91994D01* +X1014139Y91988D01* +X1014053Y91986D01* +X1013573Y91986D01* +X1013476Y91988D01* +X1013380Y91994D01* +X1013284Y92003D01* +X1013188Y92017D01* +X1013093Y92034D01* +X1012999Y92056D01* +X1012906Y92081D01* +X1012813Y92109D01* +X1012722Y92142D01* +X1012633Y92178D01* +X1012545Y92218D01* +X1012458Y92261D01* +X1012374Y92307D01* +X1012291Y92357D01* +X1012210Y92411D01* +X1012132Y92467D01* +X1012056Y92527D01* +X1011982Y92589D01* +X1011911Y92655D01* +X1011843Y92723D01* +X1011777Y92794D01* +X1011715Y92868D01* +X1011655Y92944D01* +X1011599Y93022D01* +X1011545Y93103D01* +X1011495Y93186D01* +X1011449Y93270D01* +X1011406Y93357D01* +X1011366Y93445D01* +X1011330Y93534D01* +X1011297Y93625D01* +X1011269Y93718D01* +X1011244Y93811D01* +X1011222Y93905D01* +X1011205Y94000D01* +X1011191Y94096D01* +X1011182Y94192D01* +X1011176Y94288D01* +X1011174Y94385D01* +X1011176Y94482D01* +X1011182Y94578D01* +X1011191Y94674D01* +X1011205Y94770D01* +X1011222Y94865D01* +X1011244Y94959D01* +X1011269Y95052D01* +X1011297Y95145D01* +X1011330Y95236D01* +X1011366Y95325D01* +X1011406Y95413D01* +X1011449Y95500D01* +X1011495Y95585D01* +X1011545Y95667D01* +X1011599Y95748D01* +X1011655Y95826D01* +X1011715Y95902D01* +X1011777Y95976D01* +X1011843Y96047D01* +X1011911Y96115D01* +X1011982Y96181D01* +X1012056Y96243D01* +X1012132Y96303D01* +X1012210Y96359D01* +X1012291Y96413D01* +X1012374Y96463D01* +X1012458Y96509D01* +X1012545Y96552D01* +X1012633Y96592D01* +X1012722Y96628D01* +X1012813Y96661D01* +X1012906Y96689D01* +X1012999Y96714D01* +X1013093Y96736D01* +X1013188Y96753D01* +X1013284Y96767D01* +X1013380Y96776D01* +X1013476Y96782D01* +X1013573Y96784D01* +X1015972Y96784D01* +X1016095Y96782D01* +X1016218Y96776D01* +X1016341Y96766D01* +X1016463Y96752D01* +X1016585Y96735D01* +X1016706Y96713D01* +X1016826Y96688D01* +X1016946Y96658D01* +X1017064Y96625D01* +X1017181Y96588D01* +X1017298Y96548D01* +X1017412Y96504D01* +X1017526Y96456D01* +X1017637Y96404D01* +X1017747Y96349D01* +X1017855Y96290D01* +X1017962Y96228D01* +X1018066Y96163D01* +X1018168Y96094D01* +X1018268Y96022D01* +X1018365Y95947D01* +X1018460Y95868D01* +X1018552Y95787D01* +X1018642Y95703D01* +X1018729Y95616D01* +X1018813Y95526D01* +X1018894Y95434D01* +X1018973Y95339D01* +X1019048Y95242D01* +X1019120Y95142D01* +X1019189Y95040D01* +X1019254Y94936D01* +X1019316Y94829D01* +X1019375Y94721D01* +X1019430Y94611D01* +X1019482Y94500D01* +X1019530Y94386D01* +X1019574Y94272D01* +X1019614Y94155D01* +X1019651Y94038D01* +X1019684Y93920D01* +X1019714Y93800D01* +X1019739Y93680D01* +X1019761Y93559D01* +X1019778Y93437D01* +X1019792Y93315D01* +X1019802Y93192D01* +X1019808Y93069D01* +X1019810Y92946D01* +D15* +X688340Y83820D03* +D14* +X691896Y49040D02* +X691896Y47121D01* +X691894Y47035D01* +X691888Y46949D01* +X691879Y46863D01* +X691865Y46778D01* +X691848Y46694D01* +X691827Y46610D01* +X691802Y46528D01* +X691774Y46447D01* +X691742Y46367D01* +X691706Y46288D01* +X691667Y46212D01* +X691624Y46137D01* +X691579Y46064D01* +X691530Y45993D01* +X691477Y45925D01* +X691422Y45858D01* +X691364Y45795D01* +X691303Y45734D01* +X691240Y45676D01* +X691173Y45621D01* +X691105Y45569D01* +X691034Y45519D01* +X690961Y45474D01* +X690886Y45431D01* +X690810Y45392D01* +X690731Y45356D01* +X690651Y45324D01* +X690570Y45296D01* +X690488Y45271D01* +X690404Y45250D01* +X690320Y45233D01* +X690235Y45219D01* +X690149Y45210D01* +X690063Y45204D01* +X689977Y45202D01* +X685179Y45202D01* +X685093Y45204D01* +X685007Y45210D01* +X684921Y45219D01* +X684836Y45233D01* +X684752Y45250D01* +X684668Y45271D01* +X684586Y45296D01* +X684505Y45324D01* +X684425Y45356D01* +X684346Y45392D01* +X684270Y45431D01* +X684195Y45474D01* +X684122Y45519D01* +X684051Y45568D01* +X683983Y45621D01* +X683916Y45676D01* +X683853Y45734D01* +X683792Y45795D01* +X683734Y45858D01* +X683679Y45925D01* +X683627Y45993D01* +X683577Y46064D01* +X683532Y46137D01* +X683489Y46212D01* +X683450Y46288D01* +X683414Y46367D01* +X683382Y46447D01* +X683354Y46528D01* +X683329Y46610D01* +X683308Y46694D01* +X683291Y46778D01* +X683277Y46863D01* +X683268Y46949D01* +X683262Y47035D01* +X683260Y47121D01* +X683260Y49040D01* +X685179Y52860D02* +X683260Y55259D01* +X691896Y55259D01* +X691896Y52860D02* +X691896Y57658D01* +X687098Y62004D02* +X687098Y64883D01* +X687100Y64969D01* +X687106Y65055D01* +X687115Y65141D01* +X687129Y65226D01* +X687146Y65310D01* +X687167Y65394D01* +X687192Y65476D01* +X687220Y65557D01* +X687252Y65637D01* +X687288Y65716D01* +X687327Y65792D01* +X687370Y65867D01* +X687415Y65940D01* +X687465Y66011D01* +X687517Y66079D01* +X687572Y66146D01* +X687630Y66209D01* +X687691Y66270D01* +X687754Y66328D01* +X687821Y66383D01* +X687889Y66436D01* +X687960Y66485D01* +X688033Y66530D01* +X688108Y66573D01* +X688184Y66612D01* +X688263Y66648D01* +X688343Y66680D01* +X688424Y66708D01* +X688507Y66733D01* +X688590Y66754D01* +X688674Y66771D01* +X688759Y66785D01* +X688845Y66794D01* +X688931Y66800D01* +X689017Y66802D01* +X689497Y66802D01* +X689594Y66800D01* +X689690Y66794D01* +X689786Y66785D01* +X689882Y66771D01* +X689977Y66754D01* +X690071Y66732D01* +X690164Y66707D01* +X690257Y66679D01* +X690348Y66646D01* +X690437Y66610D01* +X690525Y66570D01* +X690612Y66527D01* +X690697Y66481D01* +X690779Y66431D01* +X690860Y66377D01* +X690938Y66321D01* +X691014Y66261D01* +X691088Y66199D01* +X691159Y66133D01* +X691227Y66065D01* +X691293Y65994D01* +X691355Y65920D01* +X691415Y65844D01* +X691471Y65766D01* +X691525Y65685D01* +X691575Y65602D01* +X691621Y65518D01* +X691664Y65431D01* +X691704Y65343D01* +X691740Y65254D01* +X691773Y65163D01* +X691801Y65070D01* +X691826Y64977D01* +X691848Y64883D01* +X691865Y64788D01* +X691879Y64692D01* +X691888Y64596D01* +X691894Y64500D01* +X691896Y64403D01* +X691894Y64306D01* +X691888Y64210D01* +X691879Y64114D01* +X691865Y64018D01* +X691848Y63923D01* +X691826Y63829D01* +X691801Y63736D01* +X691773Y63643D01* +X691740Y63552D01* +X691704Y63463D01* +X691664Y63375D01* +X691621Y63288D01* +X691575Y63203D01* +X691525Y63121D01* +X691471Y63040D01* +X691415Y62962D01* +X691355Y62886D01* +X691293Y62812D01* +X691227Y62741D01* +X691159Y62673D01* +X691088Y62607D01* +X691014Y62545D01* +X690938Y62485D01* +X690860Y62429D01* +X690779Y62375D01* +X690697Y62325D01* +X690612Y62279D01* +X690525Y62236D01* +X690437Y62196D01* +X690348Y62160D01* +X690257Y62127D01* +X690164Y62099D01* +X690071Y62074D01* +X689977Y62052D01* +X689882Y62035D01* +X689786Y62021D01* +X689690Y62012D01* +X689594Y62006D01* +X689497Y62004D01* +X687098Y62004D01* +X687098Y62005D02* +X686975Y62007D01* +X686852Y62013D01* +X686729Y62023D01* +X686607Y62037D01* +X686485Y62054D01* +X686364Y62076D01* +X686244Y62101D01* +X686124Y62131D01* +X686006Y62164D01* +X685889Y62201D01* +X685772Y62241D01* +X685658Y62285D01* +X685544Y62333D01* +X685433Y62385D01* +X685323Y62440D01* +X685215Y62499D01* +X685108Y62561D01* +X685004Y62626D01* +X684902Y62695D01* +X684802Y62767D01* +X684705Y62842D01* +X684610Y62921D01* +X684518Y63002D01* +X684428Y63086D01* +X684341Y63173D01* +X684257Y63263D01* +X684176Y63355D01* +X684097Y63450D01* +X684022Y63547D01* +X683950Y63647D01* +X683881Y63749D01* +X683816Y63853D01* +X683754Y63960D01* +X683695Y64068D01* +X683640Y64178D01* +X683588Y64289D01* +X683541Y64403D01* +X683496Y64517D01* +X683456Y64634D01* +X683419Y64751D01* +X683386Y64869D01* +X683356Y64989D01* +X683331Y65109D01* +X683309Y65230D01* +X683292Y65352D01* +X683278Y65474D01* +X683268Y65597D01* +X683262Y65720D01* +X683260Y65843D01* +D13* +X1051560Y91440D03* +D14* +X1056640Y105043D02* +X1056640Y106962D01* +X1056640Y105043D02* +X1056638Y104957D01* +X1056632Y104871D01* +X1056623Y104785D01* +X1056609Y104700D01* +X1056592Y104616D01* +X1056571Y104532D01* +X1056546Y104450D01* +X1056518Y104369D01* +X1056486Y104289D01* +X1056450Y104210D01* +X1056411Y104134D01* +X1056368Y104059D01* +X1056323Y103986D01* +X1056274Y103915D01* +X1056221Y103847D01* +X1056166Y103780D01* +X1056108Y103717D01* +X1056047Y103656D01* +X1055984Y103598D01* +X1055917Y103543D01* +X1055849Y103491D01* +X1055778Y103441D01* +X1055705Y103396D01* +X1055630Y103353D01* +X1055554Y103314D01* +X1055475Y103278D01* +X1055395Y103246D01* +X1055314Y103218D01* +X1055232Y103193D01* +X1055148Y103172D01* +X1055064Y103155D01* +X1054979Y103141D01* +X1054893Y103132D01* +X1054807Y103126D01* +X1054721Y103124D01* +X1049923Y103124D01* +X1049837Y103126D01* +X1049751Y103132D01* +X1049665Y103141D01* +X1049580Y103155D01* +X1049496Y103172D01* +X1049412Y103193D01* +X1049330Y103218D01* +X1049249Y103246D01* +X1049169Y103278D01* +X1049090Y103314D01* +X1049014Y103353D01* +X1048939Y103396D01* +X1048866Y103441D01* +X1048795Y103490D01* +X1048727Y103543D01* +X1048660Y103598D01* +X1048597Y103656D01* +X1048536Y103717D01* +X1048478Y103780D01* +X1048423Y103847D01* +X1048371Y103915D01* +X1048321Y103986D01* +X1048276Y104059D01* +X1048233Y104134D01* +X1048194Y104210D01* +X1048158Y104289D01* +X1048126Y104369D01* +X1048098Y104450D01* +X1048073Y104532D01* +X1048052Y104616D01* +X1048035Y104700D01* +X1048021Y104785D01* +X1048012Y104871D01* +X1048006Y104957D01* +X1048004Y105043D01* +X1048004Y106962D01* +X1054241Y110782D02* +X1054144Y110784D01* +X1054048Y110790D01* +X1053952Y110799D01* +X1053856Y110813D01* +X1053761Y110830D01* +X1053667Y110852D01* +X1053574Y110877D01* +X1053481Y110905D01* +X1053390Y110938D01* +X1053301Y110974D01* +X1053213Y111014D01* +X1053126Y111057D01* +X1053042Y111103D01* +X1052959Y111153D01* +X1052878Y111207D01* +X1052800Y111263D01* +X1052724Y111323D01* +X1052650Y111385D01* +X1052579Y111451D01* +X1052511Y111519D01* +X1052445Y111590D01* +X1052383Y111664D01* +X1052323Y111740D01* +X1052267Y111818D01* +X1052213Y111899D01* +X1052163Y111982D01* +X1052117Y112066D01* +X1052074Y112153D01* +X1052034Y112241D01* +X1051998Y112330D01* +X1051965Y112421D01* +X1051937Y112514D01* +X1051912Y112607D01* +X1051890Y112701D01* +X1051873Y112796D01* +X1051859Y112892D01* +X1051850Y112988D01* +X1051844Y113084D01* +X1051842Y113181D01* +X1051844Y113278D01* +X1051850Y113374D01* +X1051859Y113470D01* +X1051873Y113566D01* +X1051890Y113661D01* +X1051912Y113755D01* +X1051937Y113848D01* +X1051965Y113941D01* +X1051998Y114032D01* +X1052034Y114121D01* +X1052074Y114209D01* +X1052117Y114296D01* +X1052163Y114381D01* +X1052213Y114463D01* +X1052267Y114544D01* +X1052323Y114622D01* +X1052383Y114698D01* +X1052445Y114772D01* +X1052511Y114843D01* +X1052579Y114911D01* +X1052650Y114977D01* +X1052724Y115039D01* +X1052800Y115099D01* +X1052878Y115155D01* +X1052959Y115209D01* +X1053042Y115259D01* +X1053126Y115305D01* +X1053213Y115348D01* +X1053301Y115388D01* +X1053390Y115424D01* +X1053481Y115457D01* +X1053574Y115485D01* +X1053667Y115510D01* +X1053761Y115532D01* +X1053856Y115549D01* +X1053952Y115563D01* +X1054048Y115572D01* +X1054144Y115578D01* +X1054241Y115580D01* +X1054338Y115578D01* +X1054434Y115572D01* +X1054530Y115563D01* +X1054626Y115549D01* +X1054721Y115532D01* +X1054815Y115510D01* +X1054908Y115485D01* +X1055001Y115457D01* +X1055092Y115424D01* +X1055181Y115388D01* +X1055269Y115348D01* +X1055356Y115305D01* +X1055441Y115259D01* +X1055523Y115209D01* +X1055604Y115155D01* +X1055682Y115099D01* +X1055758Y115039D01* +X1055832Y114977D01* +X1055903Y114911D01* +X1055971Y114843D01* +X1056037Y114772D01* +X1056099Y114698D01* +X1056159Y114622D01* +X1056215Y114544D01* +X1056269Y114463D01* +X1056319Y114380D01* +X1056365Y114296D01* +X1056408Y114209D01* +X1056448Y114121D01* +X1056484Y114032D01* +X1056517Y113941D01* +X1056545Y113848D01* +X1056570Y113755D01* +X1056592Y113661D01* +X1056609Y113566D01* +X1056623Y113470D01* +X1056632Y113374D01* +X1056638Y113278D01* +X1056640Y113181D01* +X1056638Y113084D01* +X1056632Y112988D01* +X1056623Y112892D01* +X1056609Y112796D01* +X1056592Y112701D01* +X1056570Y112607D01* +X1056545Y112514D01* +X1056517Y112421D01* +X1056484Y112330D01* +X1056448Y112241D01* +X1056408Y112153D01* +X1056365Y112066D01* +X1056319Y111981D01* +X1056269Y111899D01* +X1056215Y111818D01* +X1056159Y111740D01* +X1056099Y111664D01* +X1056037Y111590D01* +X1055971Y111519D01* +X1055903Y111451D01* +X1055832Y111385D01* +X1055758Y111323D01* +X1055682Y111263D01* +X1055604Y111207D01* +X1055523Y111153D01* +X1055441Y111103D01* +X1055356Y111057D01* +X1055269Y111014D01* +X1055181Y110974D01* +X1055092Y110938D01* +X1055001Y110905D01* +X1054908Y110877D01* +X1054815Y110852D01* +X1054721Y110830D01* +X1054626Y110813D01* +X1054530Y110799D01* +X1054434Y110790D01* +X1054338Y110784D01* +X1054241Y110782D01* +X1049923Y111262D02* +X1049837Y111264D01* +X1049751Y111270D01* +X1049665Y111279D01* +X1049580Y111293D01* +X1049496Y111310D01* +X1049412Y111331D01* +X1049330Y111356D01* +X1049249Y111384D01* +X1049169Y111416D01* +X1049090Y111452D01* +X1049014Y111491D01* +X1048939Y111534D01* +X1048866Y111579D01* +X1048795Y111628D01* +X1048727Y111681D01* +X1048660Y111736D01* +X1048597Y111794D01* +X1048536Y111855D01* +X1048478Y111918D01* +X1048423Y111985D01* +X1048370Y112053D01* +X1048321Y112124D01* +X1048276Y112197D01* +X1048233Y112272D01* +X1048194Y112348D01* +X1048158Y112427D01* +X1048126Y112507D01* +X1048098Y112588D01* +X1048073Y112670D01* +X1048052Y112754D01* +X1048035Y112838D01* +X1048021Y112923D01* +X1048012Y113009D01* +X1048006Y113095D01* +X1048004Y113181D01* +X1048006Y113267D01* +X1048012Y113353D01* +X1048021Y113439D01* +X1048035Y113524D01* +X1048052Y113608D01* +X1048073Y113692D01* +X1048098Y113774D01* +X1048126Y113855D01* +X1048158Y113935D01* +X1048194Y114014D01* +X1048233Y114090D01* +X1048276Y114165D01* +X1048321Y114238D01* +X1048370Y114309D01* +X1048423Y114377D01* +X1048478Y114444D01* +X1048536Y114507D01* +X1048597Y114568D01* +X1048660Y114626D01* +X1048727Y114681D01* +X1048795Y114734D01* +X1048866Y114783D01* +X1048939Y114828D01* +X1049014Y114871D01* +X1049090Y114910D01* +X1049169Y114946D01* +X1049249Y114978D01* +X1049330Y115006D01* +X1049412Y115031D01* +X1049496Y115052D01* +X1049580Y115069D01* +X1049665Y115083D01* +X1049751Y115092D01* +X1049837Y115098D01* +X1049923Y115100D01* +X1050009Y115098D01* +X1050095Y115092D01* +X1050181Y115083D01* +X1050266Y115069D01* +X1050350Y115052D01* +X1050434Y115031D01* +X1050516Y115006D01* +X1050597Y114978D01* +X1050677Y114946D01* +X1050756Y114910D01* +X1050832Y114871D01* +X1050907Y114828D01* +X1050980Y114783D01* +X1051051Y114734D01* +X1051119Y114681D01* +X1051186Y114626D01* +X1051249Y114568D01* +X1051310Y114507D01* +X1051368Y114444D01* +X1051423Y114377D01* +X1051476Y114309D01* +X1051525Y114238D01* +X1051570Y114165D01* +X1051613Y114090D01* +X1051652Y114014D01* +X1051688Y113935D01* +X1051720Y113855D01* +X1051748Y113774D01* +X1051773Y113692D01* +X1051794Y113608D01* +X1051811Y113524D01* +X1051825Y113439D01* +X1051834Y113353D01* +X1051840Y113267D01* +X1051842Y113181D01* +X1051840Y113095D01* +X1051834Y113009D01* +X1051825Y112923D01* +X1051811Y112838D01* +X1051794Y112754D01* +X1051773Y112670D01* +X1051748Y112588D01* +X1051720Y112507D01* +X1051688Y112427D01* +X1051652Y112348D01* +X1051613Y112272D01* +X1051570Y112197D01* +X1051525Y112124D01* +X1051476Y112053D01* +X1051423Y111985D01* +X1051368Y111918D01* +X1051310Y111855D01* +X1051249Y111794D01* +X1051186Y111736D01* +X1051119Y111681D01* +X1051051Y111628D01* +X1050980Y111579D01* +X1050907Y111534D01* +X1050832Y111491D01* +X1050756Y111452D01* +X1050677Y111416D01* +X1050597Y111384D01* +X1050516Y111356D01* +X1050434Y111331D01* +X1050350Y111310D01* +X1050266Y111293D01* +X1050181Y111279D01* +X1050095Y111270D01* +X1050009Y111264D01* +X1049923Y111262D01* +D13* +X513080Y152400D03* +D14* +X506984Y147602D02* +X506984Y145683D01* +X506982Y145597D01* +X506976Y145511D01* +X506967Y145425D01* +X506953Y145340D01* +X506936Y145256D01* +X506915Y145172D01* +X506890Y145090D01* +X506862Y145009D01* +X506830Y144929D01* +X506794Y144850D01* +X506755Y144774D01* +X506712Y144699D01* +X506667Y144626D01* +X506618Y144555D01* +X506565Y144487D01* +X506510Y144420D01* +X506452Y144357D01* +X506391Y144296D01* +X506328Y144238D01* +X506261Y144183D01* +X506193Y144131D01* +X506122Y144081D01* +X506049Y144036D01* +X505974Y143993D01* +X505898Y143954D01* +X505819Y143918D01* +X505739Y143886D01* +X505658Y143858D01* +X505576Y143833D01* +X505492Y143812D01* +X505408Y143795D01* +X505323Y143781D01* +X505237Y143772D01* +X505151Y143766D01* +X505065Y143764D01* +X500267Y143764D01* +X500181Y143766D01* +X500095Y143772D01* +X500009Y143781D01* +X499924Y143795D01* +X499840Y143812D01* +X499756Y143833D01* +X499674Y143858D01* +X499593Y143886D01* +X499513Y143918D01* +X499434Y143954D01* +X499358Y143993D01* +X499283Y144036D01* +X499210Y144081D01* +X499139Y144130D01* +X499071Y144183D01* +X499004Y144238D01* +X498941Y144296D01* +X498880Y144357D01* +X498822Y144420D01* +X498767Y144487D01* +X498715Y144555D01* +X498665Y144626D01* +X498620Y144699D01* +X498577Y144774D01* +X498538Y144850D01* +X498502Y144929D01* +X498470Y145009D01* +X498442Y145090D01* +X498417Y145172D01* +X498396Y145256D01* +X498379Y145340D01* +X498365Y145425D01* +X498356Y145511D01* +X498350Y145597D01* +X498348Y145683D01* +X498348Y147602D01* +X498348Y154061D02* +X498350Y154153D01* +X498356Y154244D01* +X498365Y154335D01* +X498379Y154426D01* +X498396Y154516D01* +X498418Y154605D01* +X498443Y154693D01* +X498471Y154780D01* +X498504Y154866D01* +X498540Y154950D01* +X498579Y155033D01* +X498622Y155114D01* +X498669Y155193D01* +X498718Y155270D01* +X498771Y155345D01* +X498827Y155417D01* +X498886Y155487D01* +X498948Y155555D01* +X499013Y155620D01* +X499081Y155682D01* +X499151Y155741D01* +X499223Y155797D01* +X499298Y155850D01* +X499375Y155899D01* +X499454Y155946D01* +X499535Y155989D01* +X499618Y156028D01* +X499702Y156064D01* +X499788Y156097D01* +X499875Y156125D01* +X499963Y156150D01* +X500052Y156172D01* +X500142Y156189D01* +X500233Y156203D01* +X500324Y156212D01* +X500415Y156218D01* +X500507Y156220D01* +X498348Y154061D02* +X498350Y153958D01* +X498356Y153856D01* +X498365Y153754D01* +X498378Y153652D01* +X498395Y153551D01* +X498416Y153450D01* +X498440Y153351D01* +X498469Y153252D01* +X498500Y153155D01* +X498536Y153058D01* +X498574Y152963D01* +X498617Y152870D01* +X498663Y152778D01* +X498712Y152688D01* +X498764Y152600D01* +X498820Y152513D01* +X498879Y152429D01* +X498940Y152348D01* +X499005Y152268D01* +X499073Y152191D01* +X499144Y152116D01* +X499217Y152045D01* +X499293Y151976D01* +X499371Y151909D01* +X499452Y151846D01* +X499535Y151786D01* +X499620Y151729D01* +X499707Y151675D01* +X499797Y151624D01* +X499888Y151577D01* +X499980Y151533D01* +X500075Y151492D01* +X500170Y151455D01* +X500267Y151422D01* +X502186Y155500D02* +X502120Y155567D01* +X502051Y155631D01* +X501980Y155692D01* +X501906Y155750D01* +X501830Y155805D01* +X501752Y155857D01* +X501672Y155906D01* +X501590Y155952D01* +X501506Y155994D01* +X501420Y156033D01* +X501333Y156068D01* +X501245Y156099D01* +X501155Y156127D01* +X501065Y156152D01* +X500973Y156173D01* +X500881Y156190D01* +X500788Y156203D01* +X500695Y156212D01* +X500601Y156218D01* +X500507Y156220D01* +X502186Y155500D02* +X506984Y151422D01* +X506984Y156220D01* +X505065Y160566D02* +X498348Y162485D01* +X505065Y160566D02* +X505065Y165364D01* +X503146Y163925D02* +X506984Y163925D01* +D13* +X525780Y152400D03* +D14* +X538988Y145560D02* +X538988Y143641D01* +X538986Y143555D01* +X538980Y143469D01* +X538971Y143383D01* +X538957Y143298D01* +X538940Y143214D01* +X538919Y143130D01* +X538894Y143048D01* +X538866Y142967D01* +X538834Y142887D01* +X538798Y142808D01* +X538759Y142732D01* +X538716Y142657D01* +X538671Y142584D01* +X538622Y142513D01* +X538569Y142445D01* +X538514Y142378D01* +X538456Y142315D01* +X538395Y142254D01* +X538332Y142196D01* +X538265Y142141D01* +X538197Y142089D01* +X538126Y142039D01* +X538053Y141994D01* +X537978Y141951D01* +X537902Y141912D01* +X537823Y141876D01* +X537743Y141844D01* +X537662Y141816D01* +X537580Y141791D01* +X537496Y141770D01* +X537412Y141753D01* +X537327Y141739D01* +X537241Y141730D01* +X537155Y141724D01* +X537069Y141722D01* +X532271Y141722D01* +X532185Y141724D01* +X532099Y141730D01* +X532013Y141739D01* +X531928Y141753D01* +X531844Y141770D01* +X531760Y141791D01* +X531678Y141816D01* +X531597Y141844D01* +X531517Y141876D01* +X531438Y141912D01* +X531362Y141951D01* +X531287Y141994D01* +X531214Y142039D01* +X531143Y142088D01* +X531075Y142141D01* +X531008Y142196D01* +X530945Y142254D01* +X530884Y142315D01* +X530826Y142378D01* +X530771Y142445D01* +X530719Y142513D01* +X530669Y142584D01* +X530624Y142657D01* +X530581Y142732D01* +X530542Y142808D01* +X530506Y142887D01* +X530474Y142967D01* +X530446Y143048D01* +X530421Y143130D01* +X530400Y143214D01* +X530383Y143298D01* +X530369Y143383D01* +X530360Y143469D01* +X530354Y143555D01* +X530352Y143641D01* +X530352Y145560D01* +X530352Y152019D02* +X530354Y152111D01* +X530360Y152202D01* +X530369Y152293D01* +X530383Y152384D01* +X530400Y152474D01* +X530422Y152563D01* +X530447Y152651D01* +X530475Y152738D01* +X530508Y152824D01* +X530544Y152908D01* +X530583Y152991D01* +X530626Y153072D01* +X530673Y153151D01* +X530722Y153228D01* +X530775Y153303D01* +X530831Y153375D01* +X530890Y153445D01* +X530952Y153513D01* +X531017Y153578D01* +X531085Y153640D01* +X531155Y153699D01* +X531227Y153755D01* +X531302Y153808D01* +X531379Y153857D01* +X531458Y153904D01* +X531539Y153947D01* +X531622Y153986D01* +X531706Y154022D01* +X531792Y154055D01* +X531879Y154083D01* +X531967Y154108D01* +X532056Y154130D01* +X532146Y154147D01* +X532237Y154161D01* +X532328Y154170D01* +X532419Y154176D01* +X532511Y154178D01* +X530352Y152019D02* +X530354Y151916D01* +X530360Y151814D01* +X530369Y151712D01* +X530382Y151610D01* +X530399Y151509D01* +X530420Y151408D01* +X530444Y151309D01* +X530473Y151210D01* +X530504Y151113D01* +X530540Y151016D01* +X530578Y150921D01* +X530621Y150828D01* +X530667Y150736D01* +X530716Y150646D01* +X530768Y150558D01* +X530824Y150471D01* +X530883Y150387D01* +X530944Y150306D01* +X531009Y150226D01* +X531077Y150149D01* +X531148Y150074D01* +X531221Y150003D01* +X531297Y149934D01* +X531375Y149867D01* +X531456Y149804D01* +X531539Y149744D01* +X531624Y149687D01* +X531711Y149633D01* +X531801Y149582D01* +X531892Y149535D01* +X531984Y149491D01* +X532079Y149450D01* +X532174Y149413D01* +X532271Y149380D01* +X534190Y153458D02* +X534124Y153525D01* +X534055Y153589D01* +X533984Y153650D01* +X533910Y153708D01* +X533834Y153763D01* +X533756Y153815D01* +X533676Y153864D01* +X533594Y153910D01* +X533510Y153952D01* +X533424Y153991D01* +X533337Y154026D01* +X533249Y154057D01* +X533159Y154085D01* +X533069Y154110D01* +X532977Y154131D01* +X532885Y154148D01* +X532792Y154161D01* +X532699Y154170D01* +X532605Y154176D01* +X532511Y154178D01* +X534190Y153458D02* +X538988Y149380D01* +X538988Y154178D01* +X538988Y158524D02* +X538988Y161403D01* +X538986Y161489D01* +X538980Y161575D01* +X538971Y161661D01* +X538957Y161746D01* +X538940Y161830D01* +X538919Y161914D01* +X538894Y161996D01* +X538866Y162077D01* +X538834Y162157D01* +X538798Y162236D01* +X538759Y162312D01* +X538716Y162387D01* +X538671Y162460D01* +X538622Y162531D01* +X538569Y162599D01* +X538514Y162666D01* +X538456Y162729D01* +X538395Y162790D01* +X538332Y162848D01* +X538265Y162903D01* +X538197Y162956D01* +X538126Y163005D01* +X538053Y163050D01* +X537978Y163093D01* +X537902Y163132D01* +X537823Y163168D01* +X537743Y163200D01* +X537662Y163228D01* +X537580Y163253D01* +X537496Y163274D01* +X537412Y163291D01* +X537327Y163305D01* +X537241Y163314D01* +X537155Y163320D01* +X537069Y163322D01* +X536109Y163322D01* +X536023Y163320D01* +X535937Y163314D01* +X535851Y163305D01* +X535766Y163291D01* +X535682Y163274D01* +X535598Y163253D01* +X535516Y163228D01* +X535435Y163200D01* +X535355Y163168D01* +X535276Y163132D01* +X535200Y163093D01* +X535125Y163050D01* +X535052Y163005D01* +X534981Y162956D01* +X534913Y162903D01* +X534846Y162848D01* +X534783Y162790D01* +X534722Y162729D01* +X534664Y162666D01* +X534609Y162599D01* +X534557Y162531D01* +X534507Y162460D01* +X534462Y162387D01* +X534419Y162312D01* +X534380Y162236D01* +X534344Y162157D01* +X534312Y162077D01* +X534284Y161996D01* +X534259Y161914D01* +X534238Y161830D01* +X534221Y161746D01* +X534207Y161661D01* +X534198Y161575D01* +X534192Y161489D01* +X534190Y161403D01* +X534190Y158524D01* +X530352Y158524D01* +X530352Y163322D01* +D13* +X350520Y347980D03* +D14* +X356362Y326662D02* +X356362Y324743D01* +X356360Y324657D01* +X356354Y324571D01* +X356345Y324485D01* +X356331Y324400D01* +X356314Y324316D01* +X356293Y324232D01* +X356268Y324150D01* +X356240Y324069D01* +X356208Y323989D01* +X356172Y323910D01* +X356133Y323834D01* +X356090Y323759D01* +X356045Y323686D01* +X355996Y323615D01* +X355943Y323547D01* +X355888Y323480D01* +X355830Y323417D01* +X355769Y323356D01* +X355706Y323298D01* +X355639Y323243D01* +X355571Y323191D01* +X355500Y323141D01* +X355427Y323096D01* +X355352Y323053D01* +X355276Y323014D01* +X355197Y322978D01* +X355117Y322946D01* +X355036Y322918D01* +X354954Y322893D01* +X354870Y322872D01* +X354786Y322855D01* +X354701Y322841D01* +X354615Y322832D01* +X354529Y322826D01* +X354443Y322824D01* +X349645Y322824D01* +X349559Y322826D01* +X349473Y322832D01* +X349387Y322841D01* +X349302Y322855D01* +X349218Y322872D01* +X349134Y322893D01* +X349052Y322918D01* +X348971Y322946D01* +X348891Y322978D01* +X348812Y323014D01* +X348736Y323053D01* +X348661Y323096D01* +X348588Y323141D01* +X348517Y323190D01* +X348449Y323243D01* +X348382Y323298D01* +X348319Y323356D01* +X348258Y323417D01* +X348200Y323480D01* +X348145Y323547D01* +X348093Y323615D01* +X348043Y323686D01* +X347998Y323759D01* +X347955Y323834D01* +X347916Y323910D01* +X347880Y323989D01* +X347848Y324069D01* +X347820Y324150D01* +X347795Y324232D01* +X347774Y324316D01* +X347757Y324400D01* +X347743Y324485D01* +X347734Y324571D01* +X347728Y324657D01* +X347726Y324743D01* +X347726Y326662D01* +X351564Y330482D02* +X351564Y333361D01* +X351566Y333447D01* +X351572Y333533D01* +X351581Y333619D01* +X351595Y333704D01* +X351612Y333788D01* +X351633Y333872D01* +X351658Y333954D01* +X351686Y334035D01* +X351718Y334115D01* +X351754Y334194D01* +X351793Y334270D01* +X351836Y334345D01* +X351881Y334418D01* +X351931Y334489D01* +X351983Y334557D01* +X352038Y334624D01* +X352096Y334687D01* +X352157Y334748D01* +X352220Y334806D01* +X352287Y334861D01* +X352355Y334914D01* +X352426Y334963D01* +X352499Y335008D01* +X352574Y335051D01* +X352650Y335090D01* +X352729Y335126D01* +X352809Y335158D01* +X352890Y335186D01* +X352973Y335211D01* +X353056Y335232D01* +X353140Y335249D01* +X353225Y335263D01* +X353311Y335272D01* +X353397Y335278D01* +X353483Y335280D01* +X353963Y335280D01* +X354060Y335278D01* +X354156Y335272D01* +X354252Y335263D01* +X354348Y335249D01* +X354443Y335232D01* +X354537Y335210D01* +X354630Y335185D01* +X354723Y335157D01* +X354814Y335124D01* +X354903Y335088D01* +X354991Y335048D01* +X355078Y335005D01* +X355163Y334959D01* +X355245Y334909D01* +X355326Y334855D01* +X355404Y334799D01* +X355480Y334739D01* +X355554Y334677D01* +X355625Y334611D01* +X355693Y334543D01* +X355759Y334472D01* +X355821Y334398D01* +X355881Y334322D01* +X355937Y334244D01* +X355991Y334163D01* +X356041Y334081D01* +X356087Y333996D01* +X356130Y333909D01* +X356170Y333821D01* +X356206Y333732D01* +X356239Y333641D01* +X356267Y333548D01* +X356292Y333455D01* +X356314Y333361D01* +X356331Y333266D01* +X356345Y333170D01* +X356354Y333074D01* +X356360Y332978D01* +X356362Y332881D01* +X356360Y332784D01* +X356354Y332688D01* +X356345Y332592D01* +X356331Y332496D01* +X356314Y332401D01* +X356292Y332307D01* +X356267Y332214D01* +X356239Y332121D01* +X356206Y332030D01* +X356170Y331941D01* +X356130Y331853D01* +X356087Y331766D01* +X356041Y331682D01* +X355991Y331599D01* +X355937Y331518D01* +X355881Y331440D01* +X355821Y331364D01* +X355759Y331290D01* +X355693Y331219D01* +X355625Y331151D01* +X355554Y331085D01* +X355480Y331023D01* +X355404Y330963D01* +X355326Y330907D01* +X355245Y330853D01* +X355163Y330803D01* +X355078Y330757D01* +X354991Y330714D01* +X354903Y330674D01* +X354814Y330638D01* +X354723Y330605D01* +X354630Y330577D01* +X354537Y330552D01* +X354443Y330530D01* +X354348Y330513D01* +X354252Y330499D01* +X354156Y330490D01* +X354060Y330484D01* +X353963Y330482D01* +X351564Y330482D01* +X351564Y330483D02* +X351441Y330485D01* +X351318Y330491D01* +X351195Y330501D01* +X351073Y330515D01* +X350951Y330532D01* +X350830Y330554D01* +X350710Y330579D01* +X350590Y330609D01* +X350472Y330642D01* +X350355Y330679D01* +X350238Y330719D01* +X350124Y330763D01* +X350010Y330811D01* +X349899Y330863D01* +X349789Y330918D01* +X349681Y330977D01* +X349574Y331039D01* +X349470Y331104D01* +X349368Y331173D01* +X349268Y331245D01* +X349171Y331320D01* +X349076Y331399D01* +X348984Y331480D01* +X348894Y331564D01* +X348807Y331651D01* +X348723Y331741D01* +X348642Y331833D01* +X348563Y331928D01* +X348488Y332025D01* +X348416Y332125D01* +X348347Y332227D01* +X348282Y332331D01* +X348220Y332438D01* +X348161Y332546D01* +X348106Y332656D01* +X348054Y332767D01* +X348007Y332881D01* +X347962Y332995D01* +X347922Y333112D01* +X347885Y333229D01* +X347852Y333347D01* +X347822Y333467D01* +X347797Y333587D01* +X347775Y333708D01* +X347758Y333830D01* +X347744Y333952D01* +X347734Y334075D01* +X347728Y334198D01* +X347726Y334321D01* +D13* +X360680Y347980D03* +D14* +X369062Y326662D02* +X369062Y324743D01* +X369060Y324657D01* +X369054Y324571D01* +X369045Y324485D01* +X369031Y324400D01* +X369014Y324316D01* +X368993Y324232D01* +X368968Y324150D01* +X368940Y324069D01* +X368908Y323989D01* +X368872Y323910D01* +X368833Y323834D01* +X368790Y323759D01* +X368745Y323686D01* +X368696Y323615D01* +X368643Y323547D01* +X368588Y323480D01* +X368530Y323417D01* +X368469Y323356D01* +X368406Y323298D01* +X368339Y323243D01* +X368271Y323191D01* +X368200Y323141D01* +X368127Y323096D01* +X368052Y323053D01* +X367976Y323014D01* +X367897Y322978D01* +X367817Y322946D01* +X367736Y322918D01* +X367654Y322893D01* +X367570Y322872D01* +X367486Y322855D01* +X367401Y322841D01* +X367315Y322832D01* +X367229Y322826D01* +X367143Y322824D01* +X362345Y322824D01* +X362259Y322826D01* +X362173Y322832D01* +X362087Y322841D01* +X362002Y322855D01* +X361918Y322872D01* +X361834Y322893D01* +X361752Y322918D01* +X361671Y322946D01* +X361591Y322978D01* +X361512Y323014D01* +X361436Y323053D01* +X361361Y323096D01* +X361288Y323141D01* +X361217Y323190D01* +X361149Y323243D01* +X361082Y323298D01* +X361019Y323356D01* +X360958Y323417D01* +X360900Y323480D01* +X360845Y323547D01* +X360793Y323615D01* +X360743Y323686D01* +X360698Y323759D01* +X360655Y323834D01* +X360616Y323910D01* +X360580Y323989D01* +X360548Y324069D01* +X360520Y324150D01* +X360495Y324232D01* +X360474Y324316D01* +X360457Y324400D01* +X360443Y324485D01* +X360434Y324571D01* +X360428Y324657D01* +X360426Y324743D01* +X360426Y326662D01* +X360426Y330482D02* +X361386Y330482D01* +X360426Y330482D02* +X360426Y335280D01* +X369062Y332881D01* +D13* +X236220Y353060D03* +D14* +X241046Y322852D02* +X241046Y320933D01* +X241044Y320847D01* +X241038Y320761D01* +X241029Y320675D01* +X241015Y320590D01* +X240998Y320506D01* +X240977Y320422D01* +X240952Y320340D01* +X240924Y320259D01* +X240892Y320179D01* +X240856Y320100D01* +X240817Y320024D01* +X240774Y319949D01* +X240729Y319876D01* +X240680Y319805D01* +X240627Y319737D01* +X240572Y319670D01* +X240514Y319607D01* +X240453Y319546D01* +X240390Y319488D01* +X240323Y319433D01* +X240255Y319381D01* +X240184Y319331D01* +X240111Y319286D01* +X240036Y319243D01* +X239960Y319204D01* +X239881Y319168D01* +X239801Y319136D01* +X239720Y319108D01* +X239638Y319083D01* +X239554Y319062D01* +X239470Y319045D01* +X239385Y319031D01* +X239299Y319022D01* +X239213Y319016D01* +X239127Y319014D01* +X234329Y319014D01* +X234243Y319016D01* +X234157Y319022D01* +X234071Y319031D01* +X233986Y319045D01* +X233902Y319062D01* +X233818Y319083D01* +X233736Y319108D01* +X233655Y319136D01* +X233575Y319168D01* +X233496Y319204D01* +X233420Y319243D01* +X233345Y319286D01* +X233272Y319331D01* +X233201Y319380D01* +X233133Y319433D01* +X233066Y319488D01* +X233003Y319546D01* +X232942Y319607D01* +X232884Y319670D01* +X232829Y319737D01* +X232777Y319805D01* +X232727Y319876D01* +X232682Y319949D01* +X232639Y320024D01* +X232600Y320100D01* +X232564Y320179D01* +X232532Y320259D01* +X232504Y320340D01* +X232479Y320422D01* +X232458Y320506D01* +X232441Y320590D01* +X232427Y320675D01* +X232418Y320761D01* +X232412Y320847D01* +X232410Y320933D01* +X232410Y322852D01* +X234329Y326672D02* +X232410Y329071D01* +X241046Y329071D01* +X241046Y326672D02* +X241046Y331470D01* +X236728Y335816D02* +X236558Y335818D01* +X236388Y335824D01* +X236219Y335834D01* +X236049Y335848D01* +X235880Y335867D01* +X235712Y335889D01* +X235544Y335915D01* +X235377Y335945D01* +X235211Y335980D01* +X235045Y336018D01* +X234880Y336060D01* +X234717Y336106D01* +X234555Y336156D01* +X234393Y336210D01* +X234234Y336267D01* +X234075Y336329D01* +X233918Y336394D01* +X233763Y336463D01* +X233609Y336536D01* +X233533Y336564D01* +X233458Y336596D01* +X233384Y336631D01* +X233312Y336669D01* +X233242Y336711D01* +X233174Y336756D01* +X233108Y336804D01* +X233044Y336855D01* +X232983Y336909D01* +X232924Y336965D01* +X232868Y337025D01* +X232815Y337086D01* +X232765Y337150D01* +X232717Y337217D01* +X232673Y337285D01* +X232632Y337356D01* +X232594Y337428D01* +X232560Y337502D01* +X232529Y337577D01* +X232501Y337654D01* +X232477Y337732D01* +X232457Y337811D01* +X232440Y337891D01* +X232427Y337971D01* +X232417Y338052D01* +X232412Y338133D01* +X232410Y338215D01* +X232412Y338297D01* +X232417Y338378D01* +X232427Y338459D01* +X232440Y338539D01* +X232457Y338619D01* +X232477Y338698D01* +X232501Y338776D01* +X232529Y338853D01* +X232560Y338928D01* +X232594Y339002D01* +X232632Y339074D01* +X232673Y339145D01* +X232717Y339213D01* +X232765Y339280D01* +X232815Y339344D01* +X232868Y339405D01* +X232924Y339465D01* +X232983Y339521D01* +X233044Y339575D01* +X233108Y339626D01* +X233174Y339674D01* +X233242Y339719D01* +X233312Y339761D01* +X233384Y339799D01* +X233458Y339834D01* +X233533Y339866D01* +X233609Y339894D01* +X233763Y339967D01* +X233918Y340036D01* +X234075Y340101D01* +X234234Y340163D01* +X234393Y340220D01* +X234555Y340274D01* +X234717Y340324D01* +X234880Y340370D01* +X235045Y340412D01* +X235211Y340450D01* +X235377Y340485D01* +X235544Y340515D01* +X235712Y340541D01* +X235880Y340563D01* +X236049Y340582D01* +X236219Y340596D01* +X236388Y340606D01* +X236558Y340612D01* +X236728Y340614D01* +X236728Y335816D02* +X236898Y335818D01* +X237068Y335824D01* +X237237Y335834D01* +X237407Y335848D01* +X237576Y335867D01* +X237744Y335889D01* +X237912Y335915D01* +X238079Y335945D01* +X238245Y335980D01* +X238411Y336018D01* +X238576Y336060D01* +X238739Y336106D01* +X238901Y336156D01* +X239063Y336210D01* +X239222Y336267D01* +X239381Y336329D01* +X239538Y336394D01* +X239693Y336463D01* +X239847Y336536D01* +X239923Y336564D01* +X239998Y336596D01* +X240072Y336631D01* +X240144Y336669D01* +X240214Y336711D01* +X240282Y336756D01* +X240348Y336804D01* +X240412Y336855D01* +X240473Y336909D01* +X240532Y336965D01* +X240588Y337025D01* +X240641Y337086D01* +X240691Y337150D01* +X240739Y337217D01* +X240783Y337285D01* +X240824Y337356D01* +X240862Y337428D01* +X240896Y337502D01* +X240927Y337577D01* +X240955Y337654D01* +X240979Y337732D01* +X240999Y337811D01* +X241016Y337891D01* +X241029Y337971D01* +X241039Y338052D01* +X241044Y338133D01* +X241046Y338215D01* +X239847Y339894D02* +X239693Y339967D01* +X239538Y340036D01* +X239381Y340101D01* +X239222Y340163D01* +X239063Y340220D01* +X238901Y340274D01* +X238739Y340324D01* +X238576Y340370D01* +X238411Y340412D01* +X238245Y340450D01* +X238079Y340485D01* +X237912Y340515D01* +X237744Y340541D01* +X237576Y340563D01* +X237407Y340582D01* +X237237Y340596D01* +X237068Y340606D01* +X236898Y340612D01* +X236728Y340614D01* +X239847Y339894D02* +X239923Y339866D01* +X239998Y339834D01* +X240072Y339799D01* +X240144Y339761D01* +X240214Y339719D01* +X240282Y339674D01* +X240348Y339626D01* +X240412Y339575D01* +X240473Y339521D01* +X240532Y339465D01* +X240588Y339405D01* +X240641Y339344D01* +X240691Y339280D01* +X240739Y339213D01* +X240783Y339145D01* +X240824Y339074D01* +X240862Y339002D01* +X240896Y338928D01* +X240927Y338853D01* +X240955Y338776D01* +X240979Y338698D01* +X240999Y338619D01* +X241016Y338539D01* +X241029Y338459D01* +X241039Y338378D01* +X241044Y338297D01* +X241046Y338215D01* +X239127Y336296D02* +X234329Y340134D01* +D13* +X180340Y347980D03* +D14* +X194818Y348111D02* +X194818Y350030D01* +X194818Y348111D02* +X194816Y348025D01* +X194810Y347939D01* +X194801Y347853D01* +X194787Y347768D01* +X194770Y347684D01* +X194749Y347600D01* +X194724Y347518D01* +X194696Y347437D01* +X194664Y347357D01* +X194628Y347278D01* +X194589Y347202D01* +X194546Y347127D01* +X194501Y347054D01* +X194452Y346983D01* +X194399Y346915D01* +X194344Y346848D01* +X194286Y346785D01* +X194225Y346724D01* +X194162Y346666D01* +X194095Y346611D01* +X194027Y346559D01* +X193956Y346509D01* +X193883Y346464D01* +X193808Y346421D01* +X193732Y346382D01* +X193653Y346346D01* +X193573Y346314D01* +X193492Y346286D01* +X193410Y346261D01* +X193326Y346240D01* +X193242Y346223D01* +X193157Y346209D01* +X193071Y346200D01* +X192985Y346194D01* +X192899Y346192D01* +X188101Y346192D01* +X188015Y346194D01* +X187929Y346200D01* +X187843Y346209D01* +X187758Y346223D01* +X187674Y346240D01* +X187590Y346261D01* +X187508Y346286D01* +X187427Y346314D01* +X187347Y346346D01* +X187268Y346382D01* +X187192Y346421D01* +X187117Y346464D01* +X187044Y346509D01* +X186973Y346558D01* +X186905Y346611D01* +X186838Y346666D01* +X186775Y346724D01* +X186714Y346785D01* +X186656Y346848D01* +X186601Y346915D01* +X186549Y346983D01* +X186499Y347054D01* +X186454Y347127D01* +X186411Y347202D01* +X186372Y347278D01* +X186336Y347357D01* +X186304Y347437D01* +X186276Y347518D01* +X186251Y347600D01* +X186230Y347684D01* +X186213Y347768D01* +X186199Y347853D01* +X186190Y347939D01* +X186184Y348025D01* +X186182Y348111D01* +X186182Y350030D01* +X194818Y353850D02* +X194818Y356249D01* +X194816Y356346D01* +X194810Y356442D01* +X194801Y356538D01* +X194787Y356634D01* +X194770Y356729D01* +X194748Y356823D01* +X194723Y356916D01* +X194695Y357009D01* +X194662Y357100D01* +X194626Y357189D01* +X194586Y357277D01* +X194543Y357364D01* +X194497Y357449D01* +X194447Y357531D01* +X194393Y357612D01* +X194337Y357690D01* +X194277Y357766D01* +X194215Y357840D01* +X194149Y357911D01* +X194081Y357979D01* +X194010Y358045D01* +X193936Y358107D01* +X193860Y358167D01* +X193782Y358223D01* +X193701Y358277D01* +X193619Y358327D01* +X193534Y358373D01* +X193447Y358416D01* +X193359Y358456D01* +X193270Y358492D01* +X193179Y358525D01* +X193086Y358553D01* +X192993Y358578D01* +X192899Y358600D01* +X192804Y358617D01* +X192708Y358631D01* +X192612Y358640D01* +X192516Y358646D01* +X192419Y358648D01* +X192322Y358646D01* +X192226Y358640D01* +X192130Y358631D01* +X192034Y358617D01* +X191939Y358600D01* +X191845Y358578D01* +X191752Y358553D01* +X191659Y358525D01* +X191568Y358492D01* +X191479Y358456D01* +X191391Y358416D01* +X191304Y358373D01* +X191220Y358327D01* +X191137Y358277D01* +X191056Y358223D01* +X190978Y358167D01* +X190902Y358107D01* +X190828Y358045D01* +X190757Y357979D01* +X190689Y357911D01* +X190623Y357840D01* +X190561Y357766D01* +X190501Y357690D01* +X190445Y357612D01* +X190391Y357531D01* +X190341Y357449D01* +X190295Y357364D01* +X190252Y357277D01* +X190212Y357189D01* +X190176Y357100D01* +X190143Y357009D01* +X190115Y356916D01* +X190090Y356823D01* +X190068Y356729D01* +X190051Y356634D01* +X190037Y356538D01* +X190028Y356442D01* +X190022Y356346D01* +X190020Y356249D01* +X186182Y356729D02* +X186182Y353850D01* +X186182Y356729D02* +X186184Y356815D01* +X186190Y356901D01* +X186199Y356987D01* +X186213Y357072D01* +X186230Y357156D01* +X186251Y357240D01* +X186276Y357322D01* +X186304Y357403D01* +X186336Y357483D01* +X186372Y357562D01* +X186411Y357638D01* +X186454Y357713D01* +X186499Y357786D01* +X186548Y357857D01* +X186601Y357925D01* +X186656Y357992D01* +X186714Y358055D01* +X186775Y358116D01* +X186838Y358174D01* +X186905Y358229D01* +X186973Y358282D01* +X187044Y358331D01* +X187117Y358376D01* +X187192Y358419D01* +X187268Y358458D01* +X187347Y358494D01* +X187427Y358526D01* +X187508Y358554D01* +X187590Y358579D01* +X187674Y358600D01* +X187758Y358617D01* +X187843Y358631D01* +X187929Y358640D01* +X188015Y358646D01* +X188101Y358648D01* +X188187Y358646D01* +X188273Y358640D01* +X188359Y358631D01* +X188444Y358617D01* +X188528Y358600D01* +X188612Y358579D01* +X188694Y358554D01* +X188775Y358526D01* +X188855Y358494D01* +X188934Y358458D01* +X189010Y358419D01* +X189085Y358376D01* +X189158Y358331D01* +X189229Y358282D01* +X189297Y358229D01* +X189364Y358174D01* +X189427Y358116D01* +X189488Y358055D01* +X189546Y357992D01* +X189601Y357925D01* +X189654Y357857D01* +X189703Y357786D01* +X189748Y357713D01* +X189791Y357638D01* +X189830Y357562D01* +X189866Y357483D01* +X189898Y357403D01* +X189926Y357322D01* +X189951Y357240D01* +X189972Y357156D01* +X189989Y357072D01* +X190003Y356987D01* +X190012Y356901D01* +X190018Y356815D01* +X190020Y356729D01* +X190020Y354810D01* +D18* +X444500Y243840D03* +D14* +X412042Y240538D02* +X412042Y249174D01* +X412042Y240538D02* +X415880Y240538D01* +X424434Y247015D02* +X424432Y247107D01* +X424426Y247198D01* +X424417Y247289D01* +X424403Y247380D01* +X424386Y247470D01* +X424364Y247559D01* +X424339Y247647D01* +X424311Y247734D01* +X424278Y247820D01* +X424242Y247904D01* +X424203Y247987D01* +X424160Y248068D01* +X424113Y248147D01* +X424064Y248224D01* +X424011Y248299D01* +X423955Y248371D01* +X423896Y248441D01* +X423834Y248509D01* +X423769Y248574D01* +X423701Y248636D01* +X423631Y248695D01* +X423559Y248751D01* +X423484Y248804D01* +X423407Y248853D01* +X423328Y248900D01* +X423247Y248943D01* +X423164Y248982D01* +X423080Y249018D01* +X422994Y249051D01* +X422907Y249079D01* +X422819Y249104D01* +X422730Y249126D01* +X422640Y249143D01* +X422549Y249157D01* +X422458Y249166D01* +X422367Y249172D01* +X422275Y249174D01* +X422172Y249172D01* +X422070Y249166D01* +X421968Y249157D01* +X421866Y249144D01* +X421765Y249127D01* +X421664Y249106D01* +X421565Y249082D01* +X421466Y249053D01* +X421369Y249022D01* +X421272Y248986D01* +X421177Y248948D01* +X421084Y248905D01* +X420992Y248859D01* +X420902Y248810D01* +X420814Y248758D01* +X420727Y248702D01* +X420643Y248643D01* +X420562Y248582D01* +X420482Y248517D01* +X420405Y248449D01* +X420330Y248378D01* +X420259Y248305D01* +X420190Y248229D01* +X420123Y248151D01* +X420060Y248070D01* +X420000Y247987D01* +X419943Y247902D01* +X419889Y247815D01* +X419838Y247725D01* +X419791Y247634D01* +X419747Y247542D01* +X419706Y247447D01* +X419669Y247352D01* +X419636Y247255D01* +X423714Y245336D02* +X423781Y245402D01* +X423845Y245471D01* +X423906Y245542D01* +X423964Y245616D01* +X424019Y245692D01* +X424071Y245770D01* +X424120Y245850D01* +X424166Y245932D01* +X424208Y246016D01* +X424247Y246102D01* +X424282Y246189D01* +X424313Y246277D01* +X424341Y246367D01* +X424366Y246457D01* +X424387Y246549D01* +X424404Y246641D01* +X424417Y246734D01* +X424426Y246827D01* +X424432Y246921D01* +X424434Y247015D01* +X423714Y245336D02* +X419636Y240538D01* +X424434Y240538D01* +D19* +X589620Y97200D02* +X589620Y80600D01* +X617118Y97200D02* +X619420Y94898D01* +X619420Y80600D01* +D20* +X623570Y95250D03* +D21* +X604520Y88900D03* +D20* +X623570Y95250D03* +D14* +X573763Y96774D02* +X573763Y90537D01* +X573765Y90440D01* +X573771Y90344D01* +X573780Y90248D01* +X573794Y90152D01* +X573811Y90057D01* +X573833Y89963D01* +X573858Y89870D01* +X573886Y89777D01* +X573919Y89686D01* +X573955Y89597D01* +X573995Y89509D01* +X574038Y89422D01* +X574084Y89338D01* +X574134Y89255D01* +X574188Y89174D01* +X574244Y89096D01* +X574304Y89020D01* +X574366Y88946D01* +X574432Y88875D01* +X574500Y88807D01* +X574571Y88741D01* +X574645Y88679D01* +X574721Y88619D01* +X574799Y88563D01* +X574880Y88509D01* +X574963Y88459D01* +X575047Y88413D01* +X575134Y88370D01* +X575222Y88330D01* +X575311Y88294D01* +X575402Y88261D01* +X575495Y88233D01* +X575588Y88208D01* +X575682Y88186D01* +X575777Y88169D01* +X575873Y88155D01* +X575969Y88146D01* +X576065Y88140D01* +X576162Y88138D01* +X576259Y88140D01* +X576355Y88146D01* +X576451Y88155D01* +X576547Y88169D01* +X576642Y88186D01* +X576736Y88208D01* +X576829Y88233D01* +X576922Y88261D01* +X577013Y88294D01* +X577102Y88330D01* +X577190Y88370D01* +X577277Y88413D01* +X577362Y88459D01* +X577444Y88509D01* +X577525Y88563D01* +X577603Y88619D01* +X577679Y88679D01* +X577753Y88741D01* +X577824Y88807D01* +X577892Y88875D01* +X577958Y88946D01* +X578020Y89020D01* +X578080Y89096D01* +X578136Y89174D01* +X578190Y89255D01* +X578240Y89337D01* +X578286Y89422D01* +X578329Y89509D01* +X578369Y89597D01* +X578405Y89686D01* +X578438Y89777D01* +X578466Y89870D01* +X578491Y89963D01* +X578513Y90057D01* +X578530Y90152D01* +X578544Y90248D01* +X578553Y90344D01* +X578559Y90440D01* +X578561Y90537D01* +X578561Y96774D01* +X583212Y88138D02* +X586091Y88138D01* +X586177Y88140D01* +X586263Y88146D01* +X586349Y88155D01* +X586434Y88169D01* +X586518Y88186D01* +X586602Y88207D01* +X586684Y88232D01* +X586765Y88260D01* +X586845Y88292D01* +X586924Y88328D01* +X587000Y88367D01* +X587075Y88410D01* +X587148Y88455D01* +X587219Y88505D01* +X587287Y88557D01* +X587354Y88612D01* +X587417Y88670D01* +X587478Y88731D01* +X587536Y88794D01* +X587591Y88861D01* +X587644Y88929D01* +X587693Y89000D01* +X587738Y89073D01* +X587781Y89148D01* +X587820Y89224D01* +X587856Y89303D01* +X587888Y89383D01* +X587916Y89464D01* +X587941Y89547D01* +X587962Y89630D01* +X587979Y89714D01* +X587993Y89799D01* +X588002Y89885D01* +X588008Y89971D01* +X588010Y90057D01* +X588010Y91017D01* +X588008Y91103D01* +X588002Y91189D01* +X587993Y91275D01* +X587979Y91360D01* +X587962Y91444D01* +X587941Y91528D01* +X587916Y91610D01* +X587888Y91691D01* +X587856Y91771D01* +X587820Y91850D01* +X587781Y91926D01* +X587738Y92001D01* +X587693Y92074D01* +X587644Y92145D01* +X587591Y92213D01* +X587536Y92280D01* +X587478Y92343D01* +X587417Y92404D01* +X587354Y92462D01* +X587287Y92517D01* +X587219Y92570D01* +X587148Y92619D01* +X587075Y92664D01* +X587000Y92707D01* +X586924Y92746D01* +X586845Y92782D01* +X586765Y92814D01* +X586684Y92842D01* +X586602Y92867D01* +X586518Y92888D01* +X586434Y92905D01* +X586349Y92919D01* +X586263Y92928D01* +X586177Y92934D01* +X586091Y92936D01* +X583212Y92936D01* +X583212Y96774D01* +X588010Y96774D01* +D22* +X657860Y93980D03* +D14* +X666086Y117234D02* +X666086Y125870D01* +X666086Y117234D02* +X669924Y117234D01* +X673680Y123951D02* +X676079Y125870D01* +X676079Y117234D01* +X673680Y117234D02* +X678478Y117234D01* +D17* +X599440Y63500D03* +D14* +X610108Y66802D02* +X610108Y58166D01* +X610108Y66802D02* +X612507Y66802D01* +X612604Y66800D01* +X612700Y66794D01* +X612796Y66785D01* +X612892Y66771D01* +X612987Y66754D01* +X613081Y66732D01* +X613174Y66707D01* +X613267Y66679D01* +X613358Y66646D01* +X613447Y66610D01* +X613535Y66570D01* +X613622Y66527D01* +X613707Y66481D01* +X613789Y66431D01* +X613870Y66377D01* +X613948Y66321D01* +X614024Y66261D01* +X614098Y66199D01* +X614169Y66133D01* +X614237Y66065D01* +X614303Y65994D01* +X614365Y65920D01* +X614425Y65844D01* +X614481Y65766D01* +X614535Y65685D01* +X614585Y65602D01* +X614631Y65518D01* +X614674Y65431D01* +X614714Y65343D01* +X614750Y65254D01* +X614783Y65163D01* +X614811Y65070D01* +X614836Y64977D01* +X614858Y64883D01* +X614875Y64788D01* +X614889Y64692D01* +X614898Y64596D01* +X614904Y64500D01* +X614906Y64403D01* +X614904Y64306D01* +X614898Y64210D01* +X614889Y64114D01* +X614875Y64018D01* +X614858Y63923D01* +X614836Y63829D01* +X614811Y63736D01* +X614783Y63643D01* +X614750Y63552D01* +X614714Y63463D01* +X614674Y63375D01* +X614631Y63288D01* +X614585Y63203D01* +X614535Y63121D01* +X614481Y63040D01* +X614425Y62962D01* +X614365Y62886D01* +X614303Y62812D01* +X614237Y62741D01* +X614169Y62673D01* +X614098Y62607D01* +X614024Y62545D01* +X613948Y62485D01* +X613870Y62429D01* +X613789Y62375D01* +X613707Y62325D01* +X613622Y62279D01* +X613535Y62236D01* +X613447Y62196D01* +X613358Y62160D01* +X613267Y62127D01* +X613174Y62099D01* +X613081Y62074D01* +X612987Y62052D01* +X612892Y62035D01* +X612796Y62021D01* +X612700Y62012D01* +X612604Y62006D01* +X612507Y62004D01* +X610108Y62004D01* +X612987Y62004D02* +X614906Y58166D01* +X619167Y64883D02* +X621566Y66802D01* +X621566Y58166D01* +X619167Y58166D02* +X623965Y58166D01* +X628311Y58166D02* +X631190Y58166D01* +X631276Y58168D01* +X631362Y58174D01* +X631448Y58183D01* +X631533Y58197D01* +X631617Y58214D01* +X631701Y58235D01* +X631783Y58260D01* +X631864Y58288D01* +X631944Y58320D01* +X632023Y58356D01* +X632099Y58395D01* +X632174Y58438D01* +X632247Y58483D01* +X632318Y58533D01* +X632386Y58585D01* +X632453Y58640D01* +X632516Y58698D01* +X632577Y58759D01* +X632635Y58822D01* +X632690Y58889D01* +X632743Y58957D01* +X632792Y59028D01* +X632837Y59101D01* +X632880Y59176D01* +X632919Y59252D01* +X632955Y59331D01* +X632987Y59411D01* +X633015Y59492D01* +X633040Y59575D01* +X633061Y59658D01* +X633078Y59742D01* +X633092Y59827D01* +X633101Y59913D01* +X633107Y59999D01* +X633109Y60085D01* +X633109Y61045D01* +X633107Y61131D01* +X633101Y61217D01* +X633092Y61303D01* +X633078Y61388D01* +X633061Y61472D01* +X633040Y61556D01* +X633015Y61638D01* +X632987Y61719D01* +X632955Y61799D01* +X632919Y61878D01* +X632880Y61954D01* +X632837Y62029D01* +X632792Y62102D01* +X632743Y62173D01* +X632690Y62241D01* +X632635Y62308D01* +X632577Y62371D01* +X632516Y62432D01* +X632453Y62490D01* +X632386Y62545D01* +X632318Y62598D01* +X632247Y62647D01* +X632174Y62692D01* +X632099Y62735D01* +X632023Y62774D01* +X631944Y62810D01* +X631864Y62842D01* +X631783Y62870D01* +X631701Y62895D01* +X631617Y62916D01* +X631533Y62933D01* +X631448Y62947D01* +X631362Y62956D01* +X631276Y62962D01* +X631190Y62964D01* +X628311Y62964D01* +X628311Y66802D01* +X633109Y66802D01* +D13* +X629920Y104140D03* +D14* +X634746Y75202D02* +X634746Y73283D01* +X634744Y73197D01* +X634738Y73111D01* +X634729Y73025D01* +X634715Y72940D01* +X634698Y72856D01* +X634677Y72772D01* +X634652Y72690D01* +X634624Y72609D01* +X634592Y72529D01* +X634556Y72450D01* +X634517Y72374D01* +X634474Y72299D01* +X634429Y72226D01* +X634380Y72155D01* +X634327Y72087D01* +X634272Y72020D01* +X634214Y71957D01* +X634153Y71896D01* +X634090Y71838D01* +X634023Y71783D01* +X633955Y71731D01* +X633884Y71681D01* +X633811Y71636D01* +X633736Y71593D01* +X633660Y71554D01* +X633581Y71518D01* +X633501Y71486D01* +X633420Y71458D01* +X633338Y71433D01* +X633254Y71412D01* +X633170Y71395D01* +X633085Y71381D01* +X632999Y71372D01* +X632913Y71366D01* +X632827Y71364D01* +X628029Y71364D01* +X627943Y71366D01* +X627857Y71372D01* +X627771Y71381D01* +X627686Y71395D01* +X627602Y71412D01* +X627518Y71433D01* +X627436Y71458D01* +X627355Y71486D01* +X627275Y71518D01* +X627196Y71554D01* +X627120Y71593D01* +X627045Y71636D01* +X626972Y71681D01* +X626901Y71730D01* +X626833Y71783D01* +X626766Y71838D01* +X626703Y71896D01* +X626642Y71957D01* +X626584Y72020D01* +X626529Y72087D01* +X626477Y72155D01* +X626427Y72226D01* +X626382Y72299D01* +X626339Y72374D01* +X626300Y72450D01* +X626264Y72529D01* +X626232Y72609D01* +X626204Y72690D01* +X626179Y72772D01* +X626158Y72856D01* +X626141Y72940D01* +X626127Y73025D01* +X626118Y73111D01* +X626112Y73197D01* +X626110Y73283D01* +X626110Y75202D01* +X628029Y79022D02* +X626110Y81421D01* +X634746Y81421D01* +X634746Y79022D02* +X634746Y83820D01* +X634746Y88166D02* +X634746Y91045D01* +X634744Y91131D01* +X634738Y91217D01* +X634729Y91303D01* +X634715Y91388D01* +X634698Y91472D01* +X634677Y91556D01* +X634652Y91638D01* +X634624Y91719D01* +X634592Y91799D01* +X634556Y91878D01* +X634517Y91954D01* +X634474Y92029D01* +X634429Y92102D01* +X634380Y92173D01* +X634327Y92241D01* +X634272Y92308D01* +X634214Y92371D01* +X634153Y92432D01* +X634090Y92490D01* +X634023Y92545D01* +X633955Y92598D01* +X633884Y92647D01* +X633811Y92692D01* +X633736Y92735D01* +X633660Y92774D01* +X633581Y92810D01* +X633501Y92842D01* +X633420Y92870D01* +X633338Y92895D01* +X633254Y92916D01* +X633170Y92933D01* +X633085Y92947D01* +X632999Y92956D01* +X632913Y92962D01* +X632827Y92964D01* +X631867Y92964D01* +X631781Y92962D01* +X631695Y92956D01* +X631609Y92947D01* +X631524Y92933D01* +X631440Y92916D01* +X631356Y92895D01* +X631274Y92870D01* +X631193Y92842D01* +X631113Y92810D01* +X631034Y92774D01* +X630958Y92735D01* +X630883Y92692D01* +X630810Y92647D01* +X630739Y92598D01* +X630671Y92545D01* +X630604Y92490D01* +X630541Y92432D01* +X630480Y92371D01* +X630422Y92308D01* +X630367Y92241D01* +X630315Y92173D01* +X630265Y92102D01* +X630220Y92029D01* +X630177Y91954D01* +X630138Y91878D01* +X630102Y91799D01* +X630070Y91719D01* +X630042Y91638D01* +X630017Y91556D01* +X629996Y91472D01* +X629979Y91388D01* +X629965Y91303D01* +X629956Y91217D01* +X629950Y91131D01* +X629948Y91045D01* +X629948Y88166D01* +X626110Y88166D01* +X626110Y92964D01* +D17* +X617220Y116840D03* +D14* +X630428Y118364D02* +X630428Y127000D01* +X632827Y127000D01* +X632924Y126998D01* +X633020Y126992D01* +X633116Y126983D01* +X633212Y126969D01* +X633307Y126952D01* +X633401Y126930D01* +X633494Y126905D01* +X633587Y126877D01* +X633678Y126844D01* +X633767Y126808D01* +X633855Y126768D01* +X633942Y126725D01* +X634027Y126679D01* +X634109Y126629D01* +X634190Y126575D01* +X634268Y126519D01* +X634344Y126459D01* +X634418Y126397D01* +X634489Y126331D01* +X634557Y126263D01* +X634623Y126192D01* +X634685Y126118D01* +X634745Y126042D01* +X634801Y125964D01* +X634855Y125883D01* +X634905Y125800D01* +X634951Y125716D01* +X634994Y125629D01* +X635034Y125541D01* +X635070Y125452D01* +X635103Y125361D01* +X635131Y125268D01* +X635156Y125175D01* +X635178Y125081D01* +X635195Y124986D01* +X635209Y124890D01* +X635218Y124794D01* +X635224Y124698D01* +X635226Y124601D01* +X635224Y124504D01* +X635218Y124408D01* +X635209Y124312D01* +X635195Y124216D01* +X635178Y124121D01* +X635156Y124027D01* +X635131Y123934D01* +X635103Y123841D01* +X635070Y123750D01* +X635034Y123661D01* +X634994Y123573D01* +X634951Y123486D01* +X634905Y123401D01* +X634855Y123319D01* +X634801Y123238D01* +X634745Y123160D01* +X634685Y123084D01* +X634623Y123010D01* +X634557Y122939D01* +X634489Y122871D01* +X634418Y122805D01* +X634344Y122743D01* +X634268Y122683D01* +X634190Y122627D01* +X634109Y122573D01* +X634027Y122523D01* +X633942Y122477D01* +X633855Y122434D01* +X633767Y122394D01* +X633678Y122358D01* +X633587Y122325D01* +X633494Y122297D01* +X633401Y122272D01* +X633307Y122250D01* +X633212Y122233D01* +X633116Y122219D01* +X633020Y122210D01* +X632924Y122204D01* +X632827Y122202D01* +X630428Y122202D01* +X633307Y122202D02* +X635226Y118364D01* +X642126Y127000D02* +X642218Y126998D01* +X642309Y126992D01* +X642400Y126983D01* +X642491Y126969D01* +X642581Y126952D01* +X642670Y126930D01* +X642758Y126905D01* +X642845Y126877D01* +X642931Y126844D01* +X643015Y126808D01* +X643098Y126769D01* +X643179Y126726D01* +X643258Y126679D01* +X643335Y126630D01* +X643410Y126577D01* +X643482Y126521D01* +X643552Y126462D01* +X643620Y126400D01* +X643685Y126335D01* +X643747Y126267D01* +X643806Y126197D01* +X643862Y126125D01* +X643915Y126050D01* +X643964Y125973D01* +X644011Y125894D01* +X644054Y125813D01* +X644093Y125730D01* +X644129Y125646D01* +X644162Y125560D01* +X644190Y125473D01* +X644215Y125385D01* +X644237Y125296D01* +X644254Y125206D01* +X644268Y125115D01* +X644277Y125024D01* +X644283Y124933D01* +X644285Y124841D01* +X642126Y127000D02* +X642023Y126998D01* +X641921Y126992D01* +X641819Y126983D01* +X641717Y126970D01* +X641616Y126953D01* +X641515Y126932D01* +X641416Y126908D01* +X641317Y126879D01* +X641220Y126848D01* +X641123Y126812D01* +X641028Y126774D01* +X640935Y126731D01* +X640843Y126685D01* +X640753Y126636D01* +X640665Y126584D01* +X640578Y126528D01* +X640494Y126469D01* +X640413Y126408D01* +X640333Y126343D01* +X640256Y126275D01* +X640181Y126204D01* +X640110Y126131D01* +X640041Y126055D01* +X639974Y125977D01* +X639911Y125896D01* +X639851Y125813D01* +X639794Y125728D01* +X639740Y125641D01* +X639689Y125551D01* +X639642Y125460D01* +X639598Y125368D01* +X639557Y125273D01* +X639520Y125178D01* +X639487Y125081D01* +X643565Y123162D02* +X643632Y123228D01* +X643696Y123297D01* +X643757Y123368D01* +X643815Y123442D01* +X643870Y123518D01* +X643922Y123596D01* +X643971Y123676D01* +X644017Y123758D01* +X644059Y123842D01* +X644098Y123928D01* +X644133Y124015D01* +X644164Y124103D01* +X644192Y124193D01* +X644217Y124283D01* +X644238Y124375D01* +X644255Y124467D01* +X644268Y124560D01* +X644277Y124653D01* +X644283Y124747D01* +X644285Y124841D01* +X643565Y123162D02* +X639487Y118364D01* +X644285Y118364D01* +X648631Y122682D02* +X648633Y122852D01* +X648639Y123022D01* +X648649Y123191D01* +X648663Y123361D01* +X648682Y123530D01* +X648704Y123698D01* +X648730Y123866D01* +X648760Y124033D01* +X648795Y124199D01* +X648833Y124365D01* +X648875Y124530D01* +X648921Y124693D01* +X648971Y124856D01* +X649025Y125017D01* +X649082Y125177D01* +X649144Y125335D01* +X649209Y125492D01* +X649278Y125647D01* +X649351Y125801D01* +X649379Y125877D01* +X649411Y125952D01* +X649446Y126026D01* +X649484Y126098D01* +X649526Y126168D01* +X649571Y126236D01* +X649619Y126302D01* +X649670Y126366D01* +X649724Y126427D01* +X649780Y126486D01* +X649840Y126542D01* +X649901Y126595D01* +X649965Y126645D01* +X650032Y126693D01* +X650100Y126737D01* +X650171Y126778D01* +X650243Y126816D01* +X650317Y126850D01* +X650392Y126881D01* +X650469Y126909D01* +X650547Y126933D01* +X650626Y126953D01* +X650706Y126970D01* +X650786Y126983D01* +X650867Y126993D01* +X650948Y126998D01* +X651030Y127000D01* +X651112Y126998D01* +X651193Y126993D01* +X651274Y126983D01* +X651354Y126970D01* +X651434Y126953D01* +X651513Y126933D01* +X651591Y126909D01* +X651668Y126881D01* +X651743Y126850D01* +X651817Y126816D01* +X651889Y126778D01* +X651960Y126737D01* +X652028Y126693D01* +X652095Y126645D01* +X652159Y126595D01* +X652220Y126542D01* +X652280Y126486D01* +X652336Y126427D01* +X652390Y126366D01* +X652441Y126302D01* +X652489Y126236D01* +X652534Y126168D01* +X652576Y126098D01* +X652614Y126026D01* +X652649Y125952D01* +X652681Y125877D01* +X652709Y125801D01* +X652782Y125647D01* +X652851Y125492D01* +X652916Y125335D01* +X652978Y125177D01* +X653035Y125017D01* +X653089Y124856D01* +X653139Y124693D01* +X653185Y124530D01* +X653227Y124365D01* +X653265Y124199D01* +X653300Y124033D01* +X653330Y123866D01* +X653356Y123698D01* +X653378Y123530D01* +X653397Y123361D01* +X653411Y123191D01* +X653421Y123022D01* +X653427Y122852D01* +X653429Y122682D01* +X648631Y122682D02* +X648633Y122512D01* +X648639Y122342D01* +X648649Y122173D01* +X648663Y122003D01* +X648682Y121834D01* +X648704Y121666D01* +X648730Y121498D01* +X648760Y121331D01* +X648795Y121165D01* +X648833Y120999D01* +X648875Y120834D01* +X648921Y120671D01* +X648971Y120509D01* +X649025Y120347D01* +X649082Y120188D01* +X649144Y120029D01* +X649209Y119872D01* +X649278Y119717D01* +X649351Y119563D01* +X649379Y119487D01* +X649411Y119412D01* +X649446Y119338D01* +X649484Y119266D01* +X649526Y119196D01* +X649571Y119128D01* +X649619Y119062D01* +X649670Y118998D01* +X649724Y118937D01* +X649780Y118878D01* +X649840Y118822D01* +X649901Y118769D01* +X649965Y118719D01* +X650032Y118671D01* +X650100Y118627D01* +X650171Y118586D01* +X650243Y118548D01* +X650317Y118514D01* +X650392Y118483D01* +X650469Y118455D01* +X650547Y118431D01* +X650626Y118411D01* +X650706Y118394D01* +X650786Y118381D01* +X650867Y118371D01* +X650948Y118366D01* +X651030Y118364D01* +X652709Y119563D02* +X652782Y119717D01* +X652851Y119872D01* +X652916Y120029D01* +X652978Y120188D01* +X653035Y120347D01* +X653089Y120509D01* +X653139Y120671D01* +X653185Y120834D01* +X653227Y120999D01* +X653265Y121165D01* +X653300Y121331D01* +X653330Y121498D01* +X653356Y121666D01* +X653378Y121834D01* +X653397Y122003D01* +X653411Y122173D01* +X653421Y122342D01* +X653427Y122512D01* +X653429Y122682D01* +X652709Y119563D02* +X652681Y119487D01* +X652649Y119412D01* +X652614Y119338D01* +X652576Y119266D01* +X652534Y119196D01* +X652489Y119128D01* +X652441Y119062D01* +X652390Y118998D01* +X652336Y118937D01* +X652280Y118878D01* +X652220Y118822D01* +X652159Y118769D01* +X652095Y118719D01* +X652028Y118671D01* +X651960Y118627D01* +X651889Y118586D01* +X651817Y118548D01* +X651743Y118514D01* +X651668Y118483D01* +X651591Y118455D01* +X651513Y118431D01* +X651434Y118411D01* +X651354Y118394D01* +X651274Y118381D01* +X651193Y118371D01* +X651112Y118366D01* +X651030Y118364D01* +X649111Y120283D02* +X652949Y125081D01* +D17* +X591820Y116840D03* +D14* +X563993Y111506D02* +X563993Y102870D01* +X563993Y111506D02* +X566392Y111506D01* +X566489Y111504D01* +X566585Y111498D01* +X566681Y111489D01* +X566777Y111475D01* +X566872Y111458D01* +X566966Y111436D01* +X567059Y111411D01* +X567152Y111383D01* +X567243Y111350D01* +X567332Y111314D01* +X567420Y111274D01* +X567507Y111231D01* +X567592Y111185D01* +X567674Y111135D01* +X567755Y111081D01* +X567833Y111025D01* +X567909Y110965D01* +X567983Y110903D01* +X568054Y110837D01* +X568122Y110769D01* +X568188Y110698D01* +X568250Y110624D01* +X568310Y110548D01* +X568366Y110470D01* +X568420Y110389D01* +X568470Y110306D01* +X568516Y110222D01* +X568559Y110135D01* +X568599Y110047D01* +X568635Y109958D01* +X568668Y109867D01* +X568696Y109774D01* +X568721Y109681D01* +X568743Y109587D01* +X568760Y109492D01* +X568774Y109396D01* +X568783Y109300D01* +X568789Y109204D01* +X568791Y109107D01* +X568789Y109010D01* +X568783Y108914D01* +X568774Y108818D01* +X568760Y108722D01* +X568743Y108627D01* +X568721Y108533D01* +X568696Y108440D01* +X568668Y108347D01* +X568635Y108256D01* +X568599Y108167D01* +X568559Y108079D01* +X568516Y107992D01* +X568470Y107907D01* +X568420Y107825D01* +X568366Y107744D01* +X568310Y107666D01* +X568250Y107590D01* +X568188Y107516D01* +X568122Y107445D01* +X568054Y107377D01* +X567983Y107311D01* +X567909Y107249D01* +X567833Y107189D01* +X567755Y107133D01* +X567674Y107079D01* +X567592Y107029D01* +X567507Y106983D01* +X567420Y106940D01* +X567332Y106900D01* +X567243Y106864D01* +X567152Y106831D01* +X567059Y106803D01* +X566966Y106778D01* +X566872Y106756D01* +X566777Y106739D01* +X566681Y106725D01* +X566585Y106716D01* +X566489Y106710D01* +X566392Y106708D01* +X563993Y106708D01* +X566872Y106708D02* +X568791Y102870D01* +X575691Y111506D02* +X575783Y111504D01* +X575874Y111498D01* +X575965Y111489D01* +X576056Y111475D01* +X576146Y111458D01* +X576235Y111436D01* +X576323Y111411D01* +X576410Y111383D01* +X576496Y111350D01* +X576580Y111314D01* +X576663Y111275D01* +X576744Y111232D01* +X576823Y111185D01* +X576900Y111136D01* +X576975Y111083D01* +X577047Y111027D01* +X577117Y110968D01* +X577185Y110906D01* +X577250Y110841D01* +X577312Y110773D01* +X577371Y110703D01* +X577427Y110631D01* +X577480Y110556D01* +X577529Y110479D01* +X577576Y110400D01* +X577619Y110319D01* +X577658Y110236D01* +X577694Y110152D01* +X577727Y110066D01* +X577755Y109979D01* +X577780Y109891D01* +X577802Y109802D01* +X577819Y109712D01* +X577833Y109621D01* +X577842Y109530D01* +X577848Y109439D01* +X577850Y109347D01* +X575691Y111506D02* +X575588Y111504D01* +X575486Y111498D01* +X575384Y111489D01* +X575282Y111476D01* +X575181Y111459D01* +X575080Y111438D01* +X574981Y111414D01* +X574882Y111385D01* +X574785Y111354D01* +X574688Y111318D01* +X574593Y111280D01* +X574500Y111237D01* +X574408Y111191D01* +X574318Y111142D01* +X574230Y111090D01* +X574143Y111034D01* +X574059Y110975D01* +X573978Y110914D01* +X573898Y110849D01* +X573821Y110781D01* +X573746Y110710D01* +X573675Y110637D01* +X573606Y110561D01* +X573539Y110483D01* +X573476Y110402D01* +X573416Y110319D01* +X573359Y110234D01* +X573305Y110147D01* +X573254Y110057D01* +X573207Y109966D01* +X573163Y109874D01* +X573122Y109779D01* +X573085Y109684D01* +X573052Y109587D01* +X577130Y107668D02* +X577197Y107734D01* +X577261Y107803D01* +X577322Y107874D01* +X577380Y107948D01* +X577435Y108024D01* +X577487Y108102D01* +X577536Y108182D01* +X577582Y108264D01* +X577624Y108348D01* +X577663Y108434D01* +X577698Y108521D01* +X577729Y108609D01* +X577757Y108699D01* +X577782Y108789D01* +X577803Y108881D01* +X577820Y108973D01* +X577833Y109066D01* +X577842Y109159D01* +X577848Y109253D01* +X577850Y109347D01* +X577130Y107668D02* +X573052Y102870D01* +X577850Y102870D01* +X582196Y109587D02* +X584595Y111506D01* +X584595Y102870D01* +X582196Y102870D02* +X586994Y102870D01* +D23* +X628400Y47960D02* +X632400Y47960D01* +X628400Y47960D02* +X628400Y68880D01* +X632400Y68880D01* +D21* +X652780Y58420D03* +D14* +X646164Y48400D02* +X646164Y39764D01* +X646164Y48400D02* +X648563Y48400D01* +X648660Y48398D01* +X648756Y48392D01* +X648852Y48383D01* +X648948Y48369D01* +X649043Y48352D01* +X649137Y48330D01* +X649230Y48305D01* +X649323Y48277D01* +X649414Y48244D01* +X649503Y48208D01* +X649591Y48168D01* +X649678Y48125D01* +X649763Y48079D01* +X649845Y48029D01* +X649926Y47975D01* +X650004Y47919D01* +X650080Y47859D01* +X650154Y47797D01* +X650225Y47731D01* +X650293Y47663D01* +X650359Y47592D01* +X650421Y47518D01* +X650481Y47442D01* +X650537Y47364D01* +X650591Y47283D01* +X650641Y47201D01* +X650687Y47116D01* +X650730Y47029D01* +X650770Y46941D01* +X650806Y46852D01* +X650839Y46761D01* +X650867Y46668D01* +X650892Y46575D01* +X650914Y46481D01* +X650931Y46386D01* +X650945Y46290D01* +X650954Y46194D01* +X650960Y46098D01* +X650962Y46001D01* +X650962Y42163D01* +X650960Y42066D01* +X650954Y41970D01* +X650945Y41874D01* +X650931Y41778D01* +X650914Y41683D01* +X650892Y41589D01* +X650867Y41496D01* +X650839Y41403D01* +X650806Y41312D01* +X650770Y41223D01* +X650730Y41135D01* +X650687Y41048D01* +X650641Y40963D01* +X650591Y40881D01* +X650537Y40800D01* +X650481Y40722D01* +X650421Y40646D01* +X650359Y40572D01* +X650293Y40501D01* +X650225Y40433D01* +X650154Y40367D01* +X650080Y40305D01* +X650004Y40245D01* +X649926Y40189D01* +X649845Y40135D01* +X649763Y40085D01* +X649678Y40039D01* +X649591Y39996D01* +X649503Y39956D01* +X649414Y39920D01* +X649323Y39887D01* +X649230Y39859D01* +X649137Y39834D01* +X649043Y39812D01* +X648948Y39795D01* +X648852Y39781D01* +X648756Y39772D01* +X648660Y39766D01* +X648563Y39764D01* +X646164Y39764D01* +X658252Y48400D02* +X658344Y48398D01* +X658435Y48392D01* +X658526Y48383D01* +X658617Y48369D01* +X658707Y48352D01* +X658796Y48330D01* +X658884Y48305D01* +X658971Y48277D01* +X659057Y48244D01* +X659141Y48208D01* +X659224Y48169D01* +X659305Y48126D01* +X659384Y48079D01* +X659461Y48030D01* +X659536Y47977D01* +X659608Y47921D01* +X659678Y47862D01* +X659746Y47800D01* +X659811Y47735D01* +X659873Y47667D01* +X659932Y47597D01* +X659988Y47525D01* +X660041Y47450D01* +X660090Y47373D01* +X660137Y47294D01* +X660180Y47213D01* +X660219Y47130D01* +X660255Y47046D01* +X660288Y46960D01* +X660316Y46873D01* +X660341Y46785D01* +X660363Y46696D01* +X660380Y46606D01* +X660394Y46515D01* +X660403Y46424D01* +X660409Y46333D01* +X660411Y46241D01* +X658252Y48400D02* +X658149Y48398D01* +X658047Y48392D01* +X657945Y48383D01* +X657843Y48370D01* +X657742Y48353D01* +X657641Y48332D01* +X657542Y48308D01* +X657443Y48279D01* +X657346Y48248D01* +X657249Y48212D01* +X657154Y48174D01* +X657061Y48131D01* +X656969Y48085D01* +X656879Y48036D01* +X656791Y47984D01* +X656704Y47928D01* +X656620Y47869D01* +X656539Y47808D01* +X656459Y47743D01* +X656382Y47675D01* +X656307Y47604D01* +X656236Y47531D01* +X656167Y47455D01* +X656100Y47377D01* +X656037Y47296D01* +X655977Y47213D01* +X655920Y47128D01* +X655866Y47041D01* +X655815Y46951D01* +X655768Y46860D01* +X655724Y46768D01* +X655683Y46673D01* +X655646Y46578D01* +X655613Y46481D01* +X659691Y44562D02* +X659758Y44628D01* +X659822Y44697D01* +X659883Y44768D01* +X659941Y44842D01* +X659996Y44918D01* +X660048Y44996D01* +X660097Y45076D01* +X660143Y45158D01* +X660185Y45242D01* +X660224Y45328D01* +X660259Y45415D01* +X660290Y45503D01* +X660318Y45593D01* +X660343Y45683D01* +X660364Y45775D01* +X660381Y45867D01* +X660394Y45960D01* +X660403Y46053D01* +X660409Y46147D01* +X660411Y46241D01* +X659691Y44562D02* +X655613Y39764D01* +X660411Y39764D01* +D17* +X543560Y116840D03* +D14* +X557925Y114046D02* +X559844Y114046D01* +X557925Y114046D02* +X557839Y114048D01* +X557753Y114054D01* +X557667Y114063D01* +X557582Y114077D01* +X557498Y114094D01* +X557414Y114115D01* +X557332Y114140D01* +X557251Y114168D01* +X557171Y114200D01* +X557092Y114236D01* +X557016Y114275D01* +X556941Y114318D01* +X556868Y114363D01* +X556797Y114412D01* +X556729Y114465D01* +X556662Y114520D01* +X556599Y114578D01* +X556538Y114639D01* +X556480Y114702D01* +X556425Y114769D01* +X556372Y114837D01* +X556323Y114908D01* +X556278Y114981D01* +X556235Y115056D01* +X556196Y115132D01* +X556160Y115211D01* +X556128Y115291D01* +X556100Y115372D01* +X556075Y115454D01* +X556054Y115538D01* +X556037Y115622D01* +X556023Y115707D01* +X556014Y115793D01* +X556008Y115879D01* +X556006Y115965D01* +X556006Y120763D01* +X556008Y120849D01* +X556014Y120935D01* +X556023Y121021D01* +X556037Y121106D01* +X556054Y121190D01* +X556075Y121274D01* +X556100Y121356D01* +X556128Y121437D01* +X556160Y121517D01* +X556196Y121596D01* +X556235Y121672D01* +X556278Y121747D01* +X556323Y121820D01* +X556372Y121891D01* +X556425Y121959D01* +X556480Y122026D01* +X556538Y122089D01* +X556599Y122150D01* +X556662Y122208D01* +X556729Y122263D01* +X556797Y122315D01* +X556868Y122365D01* +X556941Y122410D01* +X557016Y122453D01* +X557092Y122492D01* +X557171Y122528D01* +X557251Y122560D01* +X557332Y122588D01* +X557414Y122613D01* +X557498Y122634D01* +X557582Y122651D01* +X557667Y122665D01* +X557753Y122674D01* +X557839Y122680D01* +X557925Y122682D01* +X559844Y122682D01* +X563664Y120763D02* +X566063Y122682D01* +X566063Y114046D01* +X563664Y114046D02* +X568462Y114046D01* +X572808Y115965D02* +X574727Y122682D01* +X572808Y115965D02* +X577606Y115965D01* +X576167Y117884D02* +X576167Y114046D01* +D18* +X551180Y63500D03* +D14* +X543324Y46228D02* +X541405Y46228D01* +X541319Y46230D01* +X541233Y46236D01* +X541147Y46245D01* +X541062Y46259D01* +X540978Y46276D01* +X540894Y46297D01* +X540812Y46322D01* +X540731Y46350D01* +X540651Y46382D01* +X540572Y46418D01* +X540496Y46457D01* +X540421Y46500D01* +X540348Y46545D01* +X540277Y46594D01* +X540209Y46647D01* +X540142Y46702D01* +X540079Y46760D01* +X540018Y46821D01* +X539960Y46884D01* +X539905Y46951D01* +X539852Y47019D01* +X539803Y47090D01* +X539758Y47163D01* +X539715Y47238D01* +X539676Y47314D01* +X539640Y47393D01* +X539608Y47473D01* +X539580Y47554D01* +X539555Y47636D01* +X539534Y47720D01* +X539517Y47804D01* +X539503Y47889D01* +X539494Y47975D01* +X539488Y48061D01* +X539486Y48147D01* +X539486Y52945D01* +X539488Y53031D01* +X539494Y53117D01* +X539503Y53203D01* +X539517Y53288D01* +X539534Y53372D01* +X539555Y53456D01* +X539580Y53538D01* +X539608Y53619D01* +X539640Y53699D01* +X539676Y53778D01* +X539715Y53854D01* +X539758Y53929D01* +X539803Y54002D01* +X539852Y54073D01* +X539905Y54141D01* +X539960Y54208D01* +X540018Y54271D01* +X540079Y54332D01* +X540142Y54390D01* +X540209Y54445D01* +X540277Y54497D01* +X540348Y54547D01* +X540421Y54592D01* +X540496Y54635D01* +X540572Y54674D01* +X540651Y54710D01* +X540731Y54742D01* +X540812Y54770D01* +X540894Y54795D01* +X540978Y54816D01* +X541062Y54833D01* +X541147Y54847D01* +X541233Y54856D01* +X541319Y54862D01* +X541405Y54864D01* +X543324Y54864D01* +X547144Y52945D02* +X549543Y54864D01* +X549543Y46228D01* +X547144Y46228D02* +X551942Y46228D01* +X558927Y54864D02* +X559019Y54862D01* +X559110Y54856D01* +X559201Y54847D01* +X559292Y54833D01* +X559382Y54816D01* +X559471Y54794D01* +X559559Y54769D01* +X559646Y54741D01* +X559732Y54708D01* +X559816Y54672D01* +X559899Y54633D01* +X559980Y54590D01* +X560059Y54543D01* +X560136Y54494D01* +X560211Y54441D01* +X560283Y54385D01* +X560353Y54326D01* +X560421Y54264D01* +X560486Y54199D01* +X560548Y54131D01* +X560607Y54061D01* +X560663Y53989D01* +X560716Y53914D01* +X560765Y53837D01* +X560812Y53758D01* +X560855Y53677D01* +X560894Y53594D01* +X560930Y53510D01* +X560963Y53424D01* +X560991Y53337D01* +X561016Y53249D01* +X561038Y53160D01* +X561055Y53070D01* +X561069Y52979D01* +X561078Y52888D01* +X561084Y52797D01* +X561086Y52705D01* +X558927Y54864D02* +X558824Y54862D01* +X558722Y54856D01* +X558620Y54847D01* +X558518Y54834D01* +X558417Y54817D01* +X558316Y54796D01* +X558217Y54772D01* +X558118Y54743D01* +X558021Y54712D01* +X557924Y54676D01* +X557829Y54638D01* +X557736Y54595D01* +X557644Y54549D01* +X557554Y54500D01* +X557466Y54448D01* +X557379Y54392D01* +X557295Y54333D01* +X557214Y54272D01* +X557134Y54207D01* +X557057Y54139D01* +X556982Y54068D01* +X556911Y53995D01* +X556842Y53919D01* +X556775Y53841D01* +X556712Y53760D01* +X556652Y53677D01* +X556595Y53592D01* +X556541Y53505D01* +X556490Y53415D01* +X556443Y53324D01* +X556399Y53232D01* +X556358Y53137D01* +X556321Y53042D01* +X556288Y52945D01* +X560366Y51026D02* +X560433Y51092D01* +X560497Y51161D01* +X560558Y51232D01* +X560616Y51306D01* +X560671Y51382D01* +X560723Y51460D01* +X560772Y51540D01* +X560818Y51622D01* +X560860Y51706D01* +X560899Y51792D01* +X560934Y51879D01* +X560965Y51967D01* +X560993Y52057D01* +X561018Y52147D01* +X561039Y52239D01* +X561056Y52331D01* +X561069Y52424D01* +X561078Y52517D01* +X561084Y52611D01* +X561086Y52705D01* +X560366Y51026D02* +X556288Y46228D01* +X561086Y46228D01* +D19* +X605000Y130020D02* +X605000Y190020D01* +X665000Y190020D02* +X665000Y130020D01* +X665000Y190020D02* +X605000Y190020D01* +X605000Y130020D02* +X665000Y130020D01* +D24* +X635000Y160020D03* +D14* +X608641Y193782D02* +X608727Y193784D01* +X608813Y193790D01* +X608899Y193799D01* +X608984Y193813D01* +X609068Y193830D01* +X609152Y193851D01* +X609234Y193876D01* +X609315Y193904D01* +X609395Y193936D01* +X609474Y193972D01* +X609550Y194011D01* +X609625Y194054D01* +X609698Y194099D01* +X609769Y194149D01* +X609837Y194201D01* +X609904Y194256D01* +X609967Y194314D01* +X610028Y194375D01* +X610086Y194438D01* +X610141Y194505D01* +X610194Y194573D01* +X610243Y194644D01* +X610288Y194717D01* +X610331Y194792D01* +X610370Y194868D01* +X610406Y194947D01* +X610438Y195027D01* +X610466Y195108D01* +X610491Y195190D01* +X610512Y195274D01* +X610529Y195358D01* +X610543Y195443D01* +X610552Y195529D01* +X610558Y195615D01* +X610560Y195701D01* +X608641Y193782D02* +X608518Y193784D01* +X608395Y193789D01* +X608272Y193799D01* +X608150Y193812D01* +X608028Y193829D01* +X607906Y193849D01* +X607786Y193873D01* +X607666Y193901D01* +X607547Y193932D01* +X607429Y193967D01* +X607312Y194006D01* +X607196Y194048D01* +X607082Y194094D01* +X606969Y194143D01* +X606858Y194195D01* +X606748Y194251D01* +X606640Y194310D01* +X606534Y194373D01* +X606429Y194438D01* +X606327Y194507D01* +X606227Y194579D01* +X606130Y194654D01* +X606034Y194731D01* +X605941Y194812D01* +X605850Y194895D01* +X605762Y194981D01* +X606002Y200499D02* +X606004Y200585D01* +X606010Y200671D01* +X606019Y200757D01* +X606033Y200842D01* +X606050Y200926D01* +X606071Y201010D01* +X606096Y201092D01* +X606124Y201173D01* +X606156Y201253D01* +X606192Y201332D01* +X606231Y201408D01* +X606274Y201483D01* +X606319Y201556D01* +X606368Y201627D01* +X606421Y201695D01* +X606476Y201762D01* +X606534Y201825D01* +X606595Y201886D01* +X606658Y201944D01* +X606725Y201999D01* +X606793Y202052D01* +X606864Y202101D01* +X606937Y202146D01* +X607012Y202189D01* +X607088Y202228D01* +X607167Y202264D01* +X607247Y202296D01* +X607328Y202324D01* +X607410Y202349D01* +X607494Y202370D01* +X607578Y202387D01* +X607663Y202401D01* +X607749Y202410D01* +X607835Y202416D01* +X607921Y202418D01* +X608037Y202416D01* +X608152Y202411D01* +X608268Y202401D01* +X608383Y202388D01* +X608497Y202372D01* +X608611Y202351D01* +X608725Y202327D01* +X608837Y202299D01* +X608948Y202268D01* +X609059Y202233D01* +X609168Y202195D01* +X609276Y202153D01* +X609382Y202108D01* +X609488Y202059D01* +X609591Y202007D01* +X609693Y201952D01* +X609792Y201893D01* +X609890Y201831D01* +X609986Y201766D01* +X610080Y201698D01* +X606961Y198820D02* +X606887Y198866D01* +X606814Y198916D01* +X606744Y198969D01* +X606676Y199025D01* +X606611Y199084D01* +X606548Y199146D01* +X606489Y199211D01* +X606432Y199278D01* +X606378Y199348D01* +X606328Y199420D01* +X606281Y199494D01* +X606237Y199570D01* +X606197Y199649D01* +X606161Y199729D01* +X606128Y199810D01* +X606099Y199893D01* +X606073Y199978D01* +X606051Y200063D01* +X606034Y200149D01* +X606020Y200236D01* +X606010Y200323D01* +X606004Y200411D01* +X606002Y200499D01* +X609601Y197380D02* +X609675Y197334D01* +X609748Y197284D01* +X609818Y197231D01* +X609886Y197175D01* +X609951Y197116D01* +X610014Y197054D01* +X610073Y196989D01* +X610130Y196922D01* +X610184Y196852D01* +X610234Y196780D01* +X610281Y196706D01* +X610325Y196630D01* +X610365Y196551D01* +X610401Y196471D01* +X610434Y196390D01* +X610463Y196307D01* +X610489Y196222D01* +X610511Y196137D01* +X610528Y196051D01* +X610542Y195964D01* +X610552Y195877D01* +X610558Y195789D01* +X610560Y195701D01* +X609600Y197380D02* +X606961Y198820D01* +X617240Y202418D02* +X617332Y202416D01* +X617423Y202410D01* +X617514Y202401D01* +X617605Y202387D01* +X617695Y202370D01* +X617784Y202348D01* +X617872Y202323D01* +X617959Y202295D01* +X618045Y202262D01* +X618129Y202226D01* +X618212Y202187D01* +X618293Y202144D01* +X618372Y202097D01* +X618449Y202048D01* +X618524Y201995D01* +X618596Y201939D01* +X618666Y201880D01* +X618734Y201818D01* +X618799Y201753D01* +X618861Y201685D01* +X618920Y201615D01* +X618976Y201543D01* +X619029Y201468D01* +X619078Y201391D01* +X619125Y201312D01* +X619168Y201231D01* +X619207Y201148D01* +X619243Y201064D01* +X619276Y200978D01* +X619304Y200891D01* +X619329Y200803D01* +X619351Y200714D01* +X619368Y200624D01* +X619382Y200533D01* +X619391Y200442D01* +X619397Y200351D01* +X619399Y200259D01* +X617240Y202418D02* +X617137Y202416D01* +X617035Y202410D01* +X616933Y202401D01* +X616831Y202388D01* +X616730Y202371D01* +X616629Y202350D01* +X616530Y202326D01* +X616431Y202297D01* +X616334Y202266D01* +X616237Y202230D01* +X616142Y202192D01* +X616049Y202149D01* +X615957Y202103D01* +X615867Y202054D01* +X615779Y202002D01* +X615692Y201946D01* +X615608Y201887D01* +X615527Y201826D01* +X615447Y201761D01* +X615370Y201693D01* +X615295Y201622D01* +X615224Y201549D01* +X615155Y201473D01* +X615088Y201395D01* +X615025Y201314D01* +X614965Y201231D01* +X614908Y201146D01* +X614854Y201059D01* +X614803Y200969D01* +X614756Y200878D01* +X614712Y200786D01* +X614671Y200691D01* +X614634Y200596D01* +X614601Y200499D01* +X618679Y198580D02* +X618746Y198646D01* +X618810Y198715D01* +X618871Y198786D01* +X618929Y198860D01* +X618984Y198936D01* +X619036Y199014D01* +X619085Y199094D01* +X619131Y199176D01* +X619173Y199260D01* +X619212Y199346D01* +X619247Y199433D01* +X619278Y199521D01* +X619306Y199611D01* +X619331Y199701D01* +X619352Y199793D01* +X619369Y199885D01* +X619382Y199978D01* +X619391Y200071D01* +X619397Y200165D01* +X619399Y200259D01* +X618679Y198580D02* +X614601Y193782D01* +X619399Y193782D01* +D19* +X884400Y221460D02* +X944400Y221460D01* +X944400Y281460D02* +X884400Y281460D01* +X884400Y221460D01* +X944400Y221460D02* +X944400Y281460D01* +D24* +X914400Y251460D03* +D14* +X908361Y287762D02* +X908447Y287764D01* +X908533Y287770D01* +X908619Y287779D01* +X908704Y287793D01* +X908788Y287810D01* +X908872Y287831D01* +X908954Y287856D01* +X909035Y287884D01* +X909115Y287916D01* +X909194Y287952D01* +X909270Y287991D01* +X909345Y288034D01* +X909418Y288079D01* +X909489Y288129D01* +X909557Y288181D01* +X909624Y288236D01* +X909687Y288294D01* +X909748Y288355D01* +X909806Y288418D01* +X909861Y288485D01* +X909914Y288553D01* +X909963Y288624D01* +X910008Y288697D01* +X910051Y288772D01* +X910090Y288848D01* +X910126Y288927D01* +X910158Y289007D01* +X910186Y289088D01* +X910211Y289170D01* +X910232Y289254D01* +X910249Y289338D01* +X910263Y289423D01* +X910272Y289509D01* +X910278Y289595D01* +X910280Y289681D01* +X908361Y287762D02* +X908238Y287764D01* +X908115Y287769D01* +X907992Y287779D01* +X907870Y287792D01* +X907748Y287809D01* +X907626Y287829D01* +X907506Y287853D01* +X907386Y287881D01* +X907267Y287912D01* +X907149Y287947D01* +X907032Y287986D01* +X906916Y288028D01* +X906802Y288074D01* +X906689Y288123D01* +X906578Y288175D01* +X906468Y288231D01* +X906360Y288290D01* +X906254Y288353D01* +X906149Y288418D01* +X906047Y288487D01* +X905947Y288559D01* +X905850Y288634D01* +X905754Y288711D01* +X905661Y288792D01* +X905570Y288875D01* +X905482Y288961D01* +X905722Y294479D02* +X905724Y294565D01* +X905730Y294651D01* +X905739Y294737D01* +X905753Y294822D01* +X905770Y294906D01* +X905791Y294990D01* +X905816Y295072D01* +X905844Y295153D01* +X905876Y295233D01* +X905912Y295312D01* +X905951Y295388D01* +X905994Y295463D01* +X906039Y295536D01* +X906088Y295607D01* +X906141Y295675D01* +X906196Y295742D01* +X906254Y295805D01* +X906315Y295866D01* +X906378Y295924D01* +X906445Y295979D01* +X906513Y296032D01* +X906584Y296081D01* +X906657Y296126D01* +X906732Y296169D01* +X906808Y296208D01* +X906887Y296244D01* +X906967Y296276D01* +X907048Y296304D01* +X907130Y296329D01* +X907214Y296350D01* +X907298Y296367D01* +X907383Y296381D01* +X907469Y296390D01* +X907555Y296396D01* +X907641Y296398D01* +X907757Y296396D01* +X907872Y296391D01* +X907988Y296381D01* +X908103Y296368D01* +X908217Y296352D01* +X908331Y296331D01* +X908445Y296307D01* +X908557Y296279D01* +X908668Y296248D01* +X908779Y296213D01* +X908888Y296175D01* +X908996Y296133D01* +X909102Y296088D01* +X909208Y296039D01* +X909311Y295987D01* +X909413Y295932D01* +X909512Y295873D01* +X909610Y295811D01* +X909706Y295746D01* +X909800Y295678D01* +X906681Y292800D02* +X906607Y292846D01* +X906534Y292896D01* +X906464Y292949D01* +X906396Y293005D01* +X906331Y293064D01* +X906268Y293126D01* +X906209Y293191D01* +X906152Y293258D01* +X906098Y293328D01* +X906048Y293400D01* +X906001Y293474D01* +X905957Y293550D01* +X905917Y293629D01* +X905881Y293709D01* +X905848Y293790D01* +X905819Y293873D01* +X905793Y293958D01* +X905771Y294043D01* +X905754Y294129D01* +X905740Y294216D01* +X905730Y294303D01* +X905724Y294391D01* +X905722Y294479D01* +X909321Y291360D02* +X909395Y291314D01* +X909468Y291264D01* +X909538Y291211D01* +X909606Y291155D01* +X909671Y291096D01* +X909734Y291034D01* +X909793Y290969D01* +X909850Y290902D01* +X909904Y290832D01* +X909954Y290760D01* +X910001Y290686D01* +X910045Y290610D01* +X910085Y290531D01* +X910121Y290451D01* +X910154Y290370D01* +X910183Y290287D01* +X910209Y290202D01* +X910231Y290117D01* +X910248Y290031D01* +X910262Y289944D01* +X910272Y289857D01* +X910278Y289769D01* +X910280Y289681D01* +X909320Y291360D02* +X906681Y292800D01* +X914321Y287762D02* +X916720Y287762D01* +X916817Y287764D01* +X916913Y287770D01* +X917009Y287779D01* +X917105Y287793D01* +X917200Y287810D01* +X917294Y287832D01* +X917387Y287857D01* +X917480Y287885D01* +X917571Y287918D01* +X917660Y287954D01* +X917748Y287994D01* +X917835Y288037D01* +X917920Y288083D01* +X918002Y288133D01* +X918083Y288187D01* +X918161Y288243D01* +X918237Y288303D01* +X918311Y288365D01* +X918382Y288431D01* +X918450Y288499D01* +X918516Y288570D01* +X918578Y288644D01* +X918638Y288720D01* +X918694Y288798D01* +X918748Y288879D01* +X918798Y288962D01* +X918844Y289046D01* +X918887Y289133D01* +X918927Y289221D01* +X918963Y289310D01* +X918996Y289401D01* +X919024Y289494D01* +X919049Y289587D01* +X919071Y289681D01* +X919088Y289776D01* +X919102Y289872D01* +X919111Y289968D01* +X919117Y290064D01* +X919119Y290161D01* +X919117Y290258D01* +X919111Y290354D01* +X919102Y290450D01* +X919088Y290546D01* +X919071Y290641D01* +X919049Y290735D01* +X919024Y290828D01* +X918996Y290921D01* +X918963Y291012D01* +X918927Y291101D01* +X918887Y291189D01* +X918844Y291276D01* +X918798Y291361D01* +X918748Y291443D01* +X918694Y291524D01* +X918638Y291602D01* +X918578Y291678D01* +X918516Y291752D01* +X918450Y291823D01* +X918382Y291891D01* +X918311Y291957D01* +X918237Y292019D01* +X918161Y292079D01* +X918083Y292135D01* +X918002Y292189D01* +X917920Y292239D01* +X917835Y292285D01* +X917748Y292328D01* +X917660Y292368D01* +X917571Y292404D01* +X917480Y292437D01* +X917387Y292465D01* +X917294Y292490D01* +X917200Y292512D01* +X917105Y292529D01* +X917009Y292543D01* +X916913Y292552D01* +X916817Y292558D01* +X916720Y292560D01* +X917200Y296398D02* +X914321Y296398D01* +X917200Y296398D02* +X917286Y296396D01* +X917372Y296390D01* +X917458Y296381D01* +X917543Y296367D01* +X917627Y296350D01* +X917711Y296329D01* +X917793Y296304D01* +X917874Y296276D01* +X917954Y296244D01* +X918033Y296208D01* +X918109Y296169D01* +X918184Y296126D01* +X918257Y296081D01* +X918328Y296032D01* +X918396Y295979D01* +X918463Y295924D01* +X918526Y295866D01* +X918587Y295805D01* +X918645Y295742D01* +X918700Y295675D01* +X918753Y295607D01* +X918802Y295536D01* +X918847Y295463D01* +X918890Y295388D01* +X918929Y295312D01* +X918965Y295233D01* +X918997Y295153D01* +X919025Y295072D01* +X919050Y294990D01* +X919071Y294906D01* +X919088Y294822D01* +X919102Y294737D01* +X919111Y294651D01* +X919117Y294565D01* +X919119Y294479D01* +X919117Y294393D01* +X919111Y294307D01* +X919102Y294221D01* +X919088Y294136D01* +X919071Y294052D01* +X919050Y293968D01* +X919025Y293886D01* +X918997Y293805D01* +X918965Y293725D01* +X918929Y293646D01* +X918890Y293570D01* +X918847Y293495D01* +X918802Y293422D01* +X918753Y293351D01* +X918700Y293283D01* +X918645Y293216D01* +X918587Y293153D01* +X918526Y293092D01* +X918463Y293034D01* +X918396Y292979D01* +X918328Y292926D01* +X918257Y292877D01* +X918184Y292832D01* +X918109Y292789D01* +X918033Y292750D01* +X917954Y292714D01* +X917874Y292682D01* +X917793Y292654D01* +X917711Y292629D01* +X917627Y292608D01* +X917543Y292591D01* +X917458Y292577D01* +X917372Y292568D01* +X917286Y292562D01* +X917200Y292560D01* +X915281Y292560D01* +D19* +X790420Y190020D02* +X790420Y130020D01* +X850420Y130020D02* +X850420Y190020D01* +X790420Y190020D01* +X790420Y130020D02* +X850420Y130020D01* +D24* +X820420Y160020D03* +D14* +X794061Y193782D02* +X794147Y193784D01* +X794233Y193790D01* +X794319Y193799D01* +X794404Y193813D01* +X794488Y193830D01* +X794572Y193851D01* +X794654Y193876D01* +X794735Y193904D01* +X794815Y193936D01* +X794894Y193972D01* +X794970Y194011D01* +X795045Y194054D01* +X795118Y194099D01* +X795189Y194149D01* +X795257Y194201D01* +X795324Y194256D01* +X795387Y194314D01* +X795448Y194375D01* +X795506Y194438D01* +X795561Y194505D01* +X795614Y194573D01* +X795663Y194644D01* +X795708Y194717D01* +X795751Y194792D01* +X795790Y194868D01* +X795826Y194947D01* +X795858Y195027D01* +X795886Y195108D01* +X795911Y195190D01* +X795932Y195274D01* +X795949Y195358D01* +X795963Y195443D01* +X795972Y195529D01* +X795978Y195615D01* +X795980Y195701D01* +X794061Y193782D02* +X793938Y193784D01* +X793815Y193789D01* +X793692Y193799D01* +X793570Y193812D01* +X793448Y193829D01* +X793326Y193849D01* +X793206Y193873D01* +X793086Y193901D01* +X792967Y193932D01* +X792849Y193967D01* +X792732Y194006D01* +X792616Y194048D01* +X792502Y194094D01* +X792389Y194143D01* +X792278Y194195D01* +X792168Y194251D01* +X792060Y194310D01* +X791954Y194373D01* +X791849Y194438D01* +X791747Y194507D01* +X791647Y194579D01* +X791550Y194654D01* +X791454Y194731D01* +X791361Y194812D01* +X791270Y194895D01* +X791182Y194981D01* +X791422Y200499D02* +X791424Y200585D01* +X791430Y200671D01* +X791439Y200757D01* +X791453Y200842D01* +X791470Y200926D01* +X791491Y201010D01* +X791516Y201092D01* +X791544Y201173D01* +X791576Y201253D01* +X791612Y201332D01* +X791651Y201408D01* +X791694Y201483D01* +X791739Y201556D01* +X791788Y201627D01* +X791841Y201695D01* +X791896Y201762D01* +X791954Y201825D01* +X792015Y201886D01* +X792078Y201944D01* +X792145Y201999D01* +X792213Y202052D01* +X792284Y202101D01* +X792357Y202146D01* +X792432Y202189D01* +X792508Y202228D01* +X792587Y202264D01* +X792667Y202296D01* +X792748Y202324D01* +X792830Y202349D01* +X792914Y202370D01* +X792998Y202387D01* +X793083Y202401D01* +X793169Y202410D01* +X793255Y202416D01* +X793341Y202418D01* +X793457Y202416D01* +X793572Y202411D01* +X793688Y202401D01* +X793803Y202388D01* +X793917Y202372D01* +X794031Y202351D01* +X794145Y202327D01* +X794257Y202299D01* +X794368Y202268D01* +X794479Y202233D01* +X794588Y202195D01* +X794696Y202153D01* +X794802Y202108D01* +X794908Y202059D01* +X795011Y202007D01* +X795113Y201952D01* +X795212Y201893D01* +X795310Y201831D01* +X795406Y201766D01* +X795500Y201698D01* +X792381Y198820D02* +X792307Y198866D01* +X792234Y198916D01* +X792164Y198969D01* +X792096Y199025D01* +X792031Y199084D01* +X791968Y199146D01* +X791909Y199211D01* +X791852Y199278D01* +X791798Y199348D01* +X791748Y199420D01* +X791701Y199494D01* +X791657Y199570D01* +X791617Y199649D01* +X791581Y199729D01* +X791548Y199810D01* +X791519Y199893D01* +X791493Y199978D01* +X791471Y200063D01* +X791454Y200149D01* +X791440Y200236D01* +X791430Y200323D01* +X791424Y200411D01* +X791422Y200499D01* +X795021Y197380D02* +X795095Y197334D01* +X795168Y197284D01* +X795238Y197231D01* +X795306Y197175D01* +X795371Y197116D01* +X795434Y197054D01* +X795493Y196989D01* +X795550Y196922D01* +X795604Y196852D01* +X795654Y196780D01* +X795701Y196706D01* +X795745Y196630D01* +X795785Y196551D01* +X795821Y196471D01* +X795854Y196390D01* +X795883Y196307D01* +X795909Y196222D01* +X795931Y196137D01* +X795948Y196051D01* +X795962Y195964D01* +X795972Y195877D01* +X795978Y195789D01* +X795980Y195701D01* +X795020Y197380D02* +X792381Y198820D01* +X800021Y200499D02* +X802420Y202418D01* +X802420Y193782D01* +X800021Y193782D02* +X804819Y193782D01* +D17* +X541020Y180340D03* +D14* +X528338Y166116D02* +X526419Y166116D01* +X526333Y166118D01* +X526247Y166124D01* +X526161Y166133D01* +X526076Y166147D01* +X525992Y166164D01* +X525908Y166185D01* +X525826Y166210D01* +X525745Y166238D01* +X525665Y166270D01* +X525586Y166306D01* +X525510Y166345D01* +X525435Y166388D01* +X525362Y166433D01* +X525291Y166482D01* +X525223Y166535D01* +X525156Y166590D01* +X525093Y166648D01* +X525032Y166709D01* +X524974Y166772D01* +X524919Y166839D01* +X524866Y166907D01* +X524817Y166978D01* +X524772Y167051D01* +X524729Y167126D01* +X524690Y167202D01* +X524654Y167281D01* +X524622Y167361D01* +X524594Y167442D01* +X524569Y167524D01* +X524548Y167608D01* +X524531Y167692D01* +X524517Y167777D01* +X524508Y167863D01* +X524502Y167949D01* +X524500Y168035D01* +X524500Y172833D01* +X524502Y172919D01* +X524508Y173005D01* +X524517Y173091D01* +X524531Y173176D01* +X524548Y173260D01* +X524569Y173344D01* +X524594Y173426D01* +X524622Y173507D01* +X524654Y173587D01* +X524690Y173666D01* +X524729Y173742D01* +X524772Y173817D01* +X524817Y173890D01* +X524866Y173961D01* +X524919Y174029D01* +X524974Y174096D01* +X525032Y174159D01* +X525093Y174220D01* +X525156Y174278D01* +X525223Y174333D01* +X525291Y174385D01* +X525362Y174435D01* +X525435Y174480D01* +X525510Y174523D01* +X525586Y174562D01* +X525665Y174598D01* +X525745Y174630D01* +X525826Y174658D01* +X525908Y174683D01* +X525992Y174704D01* +X526076Y174721D01* +X526161Y174735D01* +X526247Y174744D01* +X526333Y174750D01* +X526419Y174752D01* +X528338Y174752D01* +X534797Y174752D02* +X534889Y174750D01* +X534980Y174744D01* +X535071Y174735D01* +X535162Y174721D01* +X535252Y174704D01* +X535341Y174682D01* +X535429Y174657D01* +X535516Y174629D01* +X535602Y174596D01* +X535686Y174560D01* +X535769Y174521D01* +X535850Y174478D01* +X535929Y174431D01* +X536006Y174382D01* +X536081Y174329D01* +X536153Y174273D01* +X536223Y174214D01* +X536291Y174152D01* +X536356Y174087D01* +X536418Y174019D01* +X536477Y173949D01* +X536533Y173877D01* +X536586Y173802D01* +X536635Y173725D01* +X536682Y173646D01* +X536725Y173565D01* +X536764Y173482D01* +X536800Y173398D01* +X536833Y173312D01* +X536861Y173225D01* +X536886Y173137D01* +X536908Y173048D01* +X536925Y172958D01* +X536939Y172867D01* +X536948Y172776D01* +X536954Y172685D01* +X536956Y172593D01* +X534797Y174752D02* +X534694Y174750D01* +X534592Y174744D01* +X534490Y174735D01* +X534388Y174722D01* +X534287Y174705D01* +X534186Y174684D01* +X534087Y174660D01* +X533988Y174631D01* +X533891Y174600D01* +X533794Y174564D01* +X533699Y174526D01* +X533606Y174483D01* +X533514Y174437D01* +X533424Y174388D01* +X533336Y174336D01* +X533249Y174280D01* +X533165Y174221D01* +X533084Y174160D01* +X533004Y174095D01* +X532927Y174027D01* +X532852Y173956D01* +X532781Y173883D01* +X532712Y173807D01* +X532645Y173729D01* +X532582Y173648D01* +X532522Y173565D01* +X532465Y173480D01* +X532411Y173393D01* +X532360Y173303D01* +X532313Y173212D01* +X532269Y173120D01* +X532228Y173025D01* +X532191Y172930D01* +X532158Y172833D01* +X536236Y170914D02* +X536303Y170980D01* +X536367Y171049D01* +X536428Y171120D01* +X536486Y171194D01* +X536541Y171270D01* +X536593Y171348D01* +X536642Y171428D01* +X536688Y171510D01* +X536730Y171594D01* +X536769Y171680D01* +X536804Y171767D01* +X536835Y171855D01* +X536863Y171945D01* +X536888Y172035D01* +X536909Y172127D01* +X536926Y172219D01* +X536939Y172312D01* +X536948Y172405D01* +X536954Y172499D01* +X536956Y172593D01* +X536236Y170914D02* +X532158Y166116D01* +X536956Y166116D01* +X541302Y172833D02* +X543701Y174752D01* +X543701Y166116D01* +X541302Y166116D02* +X546100Y166116D01* +D13* +X853440Y50800D03* +D14* +X870458Y48796D02* +X870458Y46877D01* +X870456Y46791D01* +X870450Y46705D01* +X870441Y46619D01* +X870427Y46534D01* +X870410Y46450D01* +X870389Y46366D01* +X870364Y46284D01* +X870336Y46203D01* +X870304Y46123D01* +X870268Y46044D01* +X870229Y45968D01* +X870186Y45893D01* +X870141Y45820D01* +X870092Y45749D01* +X870039Y45681D01* +X869984Y45614D01* +X869926Y45551D01* +X869865Y45490D01* +X869802Y45432D01* +X869735Y45377D01* +X869667Y45325D01* +X869596Y45275D01* +X869523Y45230D01* +X869448Y45187D01* +X869372Y45148D01* +X869293Y45112D01* +X869213Y45080D01* +X869132Y45052D01* +X869050Y45027D01* +X868966Y45006D01* +X868882Y44989D01* +X868797Y44975D01* +X868711Y44966D01* +X868625Y44960D01* +X868539Y44958D01* +X863741Y44958D01* +X863655Y44960D01* +X863569Y44966D01* +X863483Y44975D01* +X863398Y44989D01* +X863314Y45006D01* +X863230Y45027D01* +X863148Y45052D01* +X863067Y45080D01* +X862987Y45112D01* +X862908Y45148D01* +X862832Y45187D01* +X862757Y45230D01* +X862684Y45275D01* +X862613Y45324D01* +X862545Y45377D01* +X862478Y45432D01* +X862415Y45490D01* +X862354Y45551D01* +X862296Y45614D01* +X862241Y45681D01* +X862189Y45749D01* +X862139Y45820D01* +X862094Y45893D01* +X862051Y45968D01* +X862012Y46044D01* +X861976Y46123D01* +X861944Y46203D01* +X861916Y46284D01* +X861891Y46366D01* +X861870Y46450D01* +X861853Y46534D01* +X861839Y46619D01* +X861830Y46705D01* +X861824Y46791D01* +X861822Y46877D01* +X861822Y48796D01* +X863741Y52616D02* +X861822Y55015D01* +X870458Y55015D01* +X870458Y52616D02* +X870458Y57414D01* +D25* +X1029150Y303840D02* +X1029152Y303903D01* +X1029158Y303965D01* +X1029168Y304027D01* +X1029181Y304089D01* +X1029199Y304149D01* +X1029220Y304208D01* +X1029245Y304266D01* +X1029274Y304322D01* +X1029306Y304376D01* +X1029341Y304428D01* +X1029379Y304477D01* +X1029421Y304525D01* +X1029465Y304569D01* +X1029513Y304611D01* +X1029562Y304649D01* +X1029614Y304684D01* +X1029668Y304716D01* +X1029724Y304745D01* +X1029782Y304770D01* +X1029841Y304791D01* +X1029901Y304809D01* +X1029963Y304822D01* +X1030025Y304832D01* +X1030087Y304838D01* +X1030150Y304840D01* +X1030213Y304838D01* +X1030275Y304832D01* +X1030337Y304822D01* +X1030399Y304809D01* +X1030459Y304791D01* +X1030518Y304770D01* +X1030576Y304745D01* +X1030632Y304716D01* +X1030686Y304684D01* +X1030738Y304649D01* +X1030787Y304611D01* +X1030835Y304569D01* +X1030879Y304525D01* +X1030921Y304477D01* +X1030959Y304428D01* +X1030994Y304376D01* +X1031026Y304322D01* +X1031055Y304266D01* +X1031080Y304208D01* +X1031101Y304149D01* +X1031119Y304089D01* +X1031132Y304027D01* +X1031142Y303965D01* +X1031148Y303903D01* +X1031150Y303840D01* +X1031148Y303777D01* +X1031142Y303715D01* +X1031132Y303653D01* +X1031119Y303591D01* +X1031101Y303531D01* +X1031080Y303472D01* +X1031055Y303414D01* +X1031026Y303358D01* +X1030994Y303304D01* +X1030959Y303252D01* +X1030921Y303203D01* +X1030879Y303155D01* +X1030835Y303111D01* +X1030787Y303069D01* +X1030738Y303031D01* +X1030686Y302996D01* +X1030632Y302964D01* +X1030576Y302935D01* +X1030518Y302910D01* +X1030459Y302889D01* +X1030399Y302871D01* +X1030337Y302858D01* +X1030275Y302848D01* +X1030213Y302842D01* +X1030150Y302840D01* +X1030087Y302842D01* +X1030025Y302848D01* +X1029963Y302858D01* +X1029901Y302871D01* +X1029841Y302889D01* +X1029782Y302910D01* +X1029724Y302935D01* +X1029668Y302964D01* +X1029614Y302996D01* +X1029562Y303031D01* +X1029513Y303069D01* +X1029465Y303111D01* +X1029421Y303155D01* +X1029379Y303203D01* +X1029341Y303252D01* +X1029306Y303304D01* +X1029274Y303358D01* +X1029245Y303414D01* +X1029220Y303472D01* +X1029199Y303531D01* +X1029181Y303591D01* +X1029168Y303653D01* +X1029158Y303715D01* +X1029152Y303777D01* +X1029150Y303840D01* +D19* +X1047920Y311460D02* +X1047920Y378960D01* +X1227920Y378960D01* +X1227920Y311460D01* +X1047920Y131460D02* +X1047920Y123960D01* +X1072920Y123960D01* +X1202920Y123960D02* +X1227920Y123960D01* +X1227920Y131460D01* +X1227520Y315960D02* +X1048320Y315960D01* +D14* +X1028925Y339700D02* +X1028925Y345937D01* +X1028925Y339700D02* +X1028927Y339603D01* +X1028933Y339507D01* +X1028942Y339411D01* +X1028956Y339315D01* +X1028973Y339220D01* +X1028995Y339126D01* +X1029020Y339033D01* +X1029048Y338940D01* +X1029081Y338849D01* +X1029117Y338760D01* +X1029157Y338672D01* +X1029200Y338585D01* +X1029246Y338501D01* +X1029296Y338418D01* +X1029350Y338337D01* +X1029406Y338259D01* +X1029466Y338183D01* +X1029528Y338109D01* +X1029594Y338038D01* +X1029662Y337970D01* +X1029733Y337904D01* +X1029807Y337842D01* +X1029883Y337782D01* +X1029961Y337726D01* +X1030042Y337672D01* +X1030125Y337622D01* +X1030209Y337576D01* +X1030296Y337533D01* +X1030384Y337493D01* +X1030473Y337457D01* +X1030564Y337424D01* +X1030657Y337396D01* +X1030750Y337371D01* +X1030844Y337349D01* +X1030939Y337332D01* +X1031035Y337318D01* +X1031131Y337309D01* +X1031227Y337303D01* +X1031324Y337301D01* +X1031421Y337303D01* +X1031517Y337309D01* +X1031613Y337318D01* +X1031709Y337332D01* +X1031804Y337349D01* +X1031898Y337371D01* +X1031991Y337396D01* +X1032084Y337424D01* +X1032175Y337457D01* +X1032264Y337493D01* +X1032352Y337533D01* +X1032439Y337576D01* +X1032524Y337622D01* +X1032606Y337672D01* +X1032687Y337726D01* +X1032765Y337782D01* +X1032841Y337842D01* +X1032915Y337904D01* +X1032986Y337970D01* +X1033054Y338038D01* +X1033120Y338109D01* +X1033182Y338183D01* +X1033242Y338259D01* +X1033298Y338337D01* +X1033352Y338418D01* +X1033402Y338501D01* +X1033448Y338585D01* +X1033491Y338672D01* +X1033531Y338760D01* +X1033567Y338849D01* +X1033600Y338940D01* +X1033628Y339033D01* +X1033653Y339126D01* +X1033675Y339220D01* +X1033692Y339315D01* +X1033706Y339411D01* +X1033715Y339507D01* +X1033721Y339603D01* +X1033723Y339700D01* +X1033723Y345937D01* +X1041013Y345937D02* +X1041105Y345935D01* +X1041196Y345929D01* +X1041287Y345920D01* +X1041378Y345906D01* +X1041468Y345889D01* +X1041557Y345867D01* +X1041645Y345842D01* +X1041732Y345814D01* +X1041818Y345781D01* +X1041902Y345745D01* +X1041985Y345706D01* +X1042066Y345663D01* +X1042145Y345616D01* +X1042222Y345567D01* +X1042297Y345514D01* +X1042369Y345458D01* +X1042439Y345399D01* +X1042507Y345337D01* +X1042572Y345272D01* +X1042634Y345204D01* +X1042693Y345134D01* +X1042749Y345062D01* +X1042802Y344987D01* +X1042851Y344910D01* +X1042898Y344831D01* +X1042941Y344750D01* +X1042980Y344667D01* +X1043016Y344583D01* +X1043049Y344497D01* +X1043077Y344410D01* +X1043102Y344322D01* +X1043124Y344233D01* +X1043141Y344143D01* +X1043155Y344052D01* +X1043164Y343961D01* +X1043170Y343870D01* +X1043172Y343778D01* +X1041013Y345937D02* +X1040910Y345935D01* +X1040808Y345929D01* +X1040706Y345920D01* +X1040604Y345907D01* +X1040503Y345890D01* +X1040402Y345869D01* +X1040303Y345845D01* +X1040204Y345816D01* +X1040107Y345785D01* +X1040010Y345749D01* +X1039915Y345711D01* +X1039822Y345668D01* +X1039730Y345622D01* +X1039640Y345573D01* +X1039552Y345521D01* +X1039465Y345465D01* +X1039381Y345406D01* +X1039300Y345345D01* +X1039220Y345280D01* +X1039143Y345212D01* +X1039068Y345141D01* +X1038997Y345068D01* +X1038928Y344992D01* +X1038861Y344914D01* +X1038798Y344833D01* +X1038738Y344750D01* +X1038681Y344665D01* +X1038627Y344578D01* +X1038576Y344488D01* +X1038529Y344397D01* +X1038485Y344305D01* +X1038444Y344210D01* +X1038407Y344115D01* +X1038374Y344018D01* +X1042452Y342099D02* +X1042519Y342165D01* +X1042583Y342234D01* +X1042644Y342305D01* +X1042702Y342379D01* +X1042757Y342455D01* +X1042809Y342533D01* +X1042858Y342613D01* +X1042904Y342695D01* +X1042946Y342779D01* +X1042985Y342865D01* +X1043020Y342952D01* +X1043051Y343040D01* +X1043079Y343130D01* +X1043104Y343220D01* +X1043125Y343312D01* +X1043142Y343404D01* +X1043155Y343497D01* +X1043164Y343590D01* +X1043170Y343684D01* +X1043172Y343778D01* +X1042452Y342099D02* +X1038374Y337301D01* +X1043172Y337301D01* +D19* +X115100Y362120D02* +X109100Y365120D01* +X115100Y288120D02* +X109100Y285120D01* +X114100Y288120D02* +X114100Y362120D01* +X110100Y358120D02* +X110100Y293120D01* +X110100Y358120D02* +X109100Y365120D01* +X110100Y293120D02* +X109100Y285120D01* +X165100Y341120D02* +X165100Y350120D01* +X165100Y309120D02* +X165100Y301120D01* +X152100Y288120D02* +X148100Y288120D01* +X127100Y288120D02* +X115100Y288120D01* +X115100Y362120D02* +X127100Y362120D01* +X149100Y362120D02* +X152100Y362120D01* +D14* +X170942Y288293D02* +X177659Y288293D01* +X177745Y288291D01* +X177831Y288285D01* +X177917Y288276D01* +X178002Y288262D01* +X178086Y288245D01* +X178170Y288224D01* +X178252Y288199D01* +X178333Y288171D01* +X178413Y288139D01* +X178492Y288103D01* +X178568Y288064D01* +X178643Y288021D01* +X178716Y287976D01* +X178787Y287926D01* +X178855Y287874D01* +X178922Y287819D01* +X178985Y287761D01* +X179046Y287700D01* +X179104Y287637D01* +X179159Y287570D01* +X179212Y287502D01* +X179261Y287431D01* +X179306Y287358D01* +X179349Y287283D01* +X179388Y287207D01* +X179424Y287128D01* +X179456Y287048D01* +X179484Y286967D01* +X179509Y286884D01* +X179530Y286801D01* +X179547Y286717D01* +X179561Y286632D01* +X179570Y286546D01* +X179576Y286460D01* +X179578Y286374D01* +X179578Y285414D01* +X172861Y292890D02* +X170942Y295289D01* +X179578Y295289D01* +X179578Y292890D02* +X179578Y297688D01* +D26* +X481430Y165590D02* +X481432Y165661D01* +X481438Y165732D01* +X481448Y165803D01* +X481462Y165873D01* +X481480Y165942D01* +X481501Y166009D01* +X481527Y166076D01* +X481556Y166141D01* +X481588Y166204D01* +X481625Y166266D01* +X481664Y166325D01* +X481707Y166382D01* +X481753Y166436D01* +X481802Y166488D01* +X481854Y166537D01* +X481908Y166583D01* +X481965Y166626D01* +X482024Y166665D01* +X482086Y166702D01* +X482149Y166734D01* +X482214Y166763D01* +X482281Y166789D01* +X482348Y166810D01* +X482417Y166828D01* +X482487Y166842D01* +X482558Y166852D01* +X482629Y166858D01* +X482700Y166860D01* +X482771Y166858D01* +X482842Y166852D01* +X482913Y166842D01* +X482983Y166828D01* +X483052Y166810D01* +X483119Y166789D01* +X483186Y166763D01* +X483251Y166734D01* +X483314Y166702D01* +X483376Y166665D01* +X483435Y166626D01* +X483492Y166583D01* +X483546Y166537D01* +X483598Y166488D01* +X483647Y166436D01* +X483693Y166382D01* +X483736Y166325D01* +X483775Y166266D01* +X483812Y166204D01* +X483844Y166141D01* +X483873Y166076D01* +X483899Y166009D01* +X483920Y165942D01* +X483938Y165873D01* +X483952Y165803D01* +X483962Y165732D01* +X483968Y165661D01* +X483970Y165590D01* +X483968Y165519D01* +X483962Y165448D01* +X483952Y165377D01* +X483938Y165307D01* +X483920Y165238D01* +X483899Y165171D01* +X483873Y165104D01* +X483844Y165039D01* +X483812Y164976D01* +X483775Y164914D01* +X483736Y164855D01* +X483693Y164798D01* +X483647Y164744D01* +X483598Y164692D01* +X483546Y164643D01* +X483492Y164597D01* +X483435Y164554D01* +X483376Y164515D01* +X483314Y164478D01* +X483251Y164446D01* +X483186Y164417D01* +X483119Y164391D01* +X483052Y164370D01* +X482983Y164352D01* +X482913Y164338D01* +X482842Y164328D01* +X482771Y164322D01* +X482700Y164320D01* +X482629Y164322D01* +X482558Y164328D01* +X482487Y164338D01* +X482417Y164352D01* +X482348Y164370D01* +X482281Y164391D01* +X482214Y164417D01* +X482149Y164446D01* +X482086Y164478D01* +X482024Y164515D01* +X481965Y164554D01* +X481908Y164597D01* +X481854Y164643D01* +X481802Y164692D01* +X481753Y164744D01* +X481707Y164798D01* +X481664Y164855D01* +X481625Y164914D01* +X481588Y164976D01* +X481556Y165039D01* +X481527Y165104D01* +X481501Y165171D01* +X481480Y165238D01* +X481462Y165307D01* +X481448Y165377D01* +X481438Y165448D01* +X481432Y165519D01* +X481430Y165590D01* +D19* +X515300Y209540D02* +X515300Y213040D01* +X475300Y213040D02* +X475300Y209540D01* +X515300Y176540D02* +X515300Y173040D01* +X475300Y173040D02* +X475300Y176540D01* +X511800Y213040D02* +X515300Y213040D01* +X478800Y213040D02* +X475300Y213040D01* +X511800Y173040D02* +X515300Y173040D01* +X478800Y173040D02* +X475300Y173040D01* +X473300Y171040D02* +X473300Y177080D01* +X473300Y171040D02* +X479340Y171040D01* +D14* +X473481Y221611D02* +X473481Y227848D01* +X473481Y221611D02* +X473483Y221514D01* +X473489Y221418D01* +X473498Y221322D01* +X473512Y221226D01* +X473529Y221131D01* +X473551Y221037D01* +X473576Y220944D01* +X473604Y220851D01* +X473637Y220760D01* +X473673Y220671D01* +X473713Y220583D01* +X473756Y220496D01* +X473802Y220412D01* +X473852Y220329D01* +X473906Y220248D01* +X473962Y220170D01* +X474022Y220094D01* +X474084Y220020D01* +X474150Y219949D01* +X474218Y219881D01* +X474289Y219815D01* +X474363Y219753D01* +X474439Y219693D01* +X474517Y219637D01* +X474598Y219583D01* +X474681Y219533D01* +X474765Y219487D01* +X474852Y219444D01* +X474940Y219404D01* +X475029Y219368D01* +X475120Y219335D01* +X475213Y219307D01* +X475306Y219282D01* +X475400Y219260D01* +X475495Y219243D01* +X475591Y219229D01* +X475687Y219220D01* +X475783Y219214D01* +X475880Y219212D01* +X475977Y219214D01* +X476073Y219220D01* +X476169Y219229D01* +X476265Y219243D01* +X476360Y219260D01* +X476454Y219282D01* +X476547Y219307D01* +X476640Y219335D01* +X476731Y219368D01* +X476820Y219404D01* +X476908Y219444D01* +X476995Y219487D01* +X477080Y219533D01* +X477162Y219583D01* +X477243Y219637D01* +X477321Y219693D01* +X477397Y219753D01* +X477471Y219815D01* +X477542Y219881D01* +X477610Y219949D01* +X477676Y220020D01* +X477738Y220094D01* +X477798Y220170D01* +X477854Y220248D01* +X477908Y220329D01* +X477958Y220411D01* +X478004Y220496D01* +X478047Y220583D01* +X478087Y220671D01* +X478123Y220760D01* +X478156Y220851D01* +X478184Y220944D01* +X478209Y221037D01* +X478231Y221131D01* +X478248Y221226D01* +X478262Y221322D01* +X478271Y221418D01* +X478277Y221514D01* +X478279Y221611D01* +X478279Y227848D01* +X482930Y224010D02* +X485809Y224010D01* +X485895Y224008D01* +X485981Y224002D01* +X486067Y223993D01* +X486152Y223979D01* +X486236Y223962D01* +X486320Y223941D01* +X486402Y223916D01* +X486483Y223888D01* +X486563Y223856D01* +X486642Y223820D01* +X486718Y223781D01* +X486793Y223738D01* +X486866Y223693D01* +X486937Y223644D01* +X487005Y223591D01* +X487072Y223536D01* +X487135Y223478D01* +X487196Y223417D01* +X487254Y223354D01* +X487309Y223287D01* +X487362Y223219D01* +X487411Y223148D01* +X487456Y223075D01* +X487499Y223000D01* +X487538Y222924D01* +X487574Y222845D01* +X487606Y222765D01* +X487634Y222684D01* +X487659Y222602D01* +X487680Y222518D01* +X487697Y222434D01* +X487711Y222349D01* +X487720Y222263D01* +X487726Y222177D01* +X487728Y222091D01* +X487728Y221611D01* +X487726Y221514D01* +X487720Y221418D01* +X487711Y221322D01* +X487697Y221226D01* +X487680Y221131D01* +X487658Y221037D01* +X487633Y220944D01* +X487605Y220851D01* +X487572Y220760D01* +X487536Y220671D01* +X487496Y220583D01* +X487453Y220496D01* +X487407Y220411D01* +X487357Y220329D01* +X487303Y220248D01* +X487247Y220170D01* +X487187Y220094D01* +X487125Y220020D01* +X487059Y219949D01* +X486991Y219881D01* +X486920Y219815D01* +X486846Y219753D01* +X486770Y219693D01* +X486692Y219637D01* +X486611Y219583D01* +X486529Y219533D01* +X486444Y219487D01* +X486357Y219444D01* +X486269Y219404D01* +X486180Y219368D01* +X486089Y219335D01* +X485996Y219307D01* +X485903Y219282D01* +X485809Y219260D01* +X485714Y219243D01* +X485618Y219229D01* +X485522Y219220D01* +X485426Y219214D01* +X485329Y219212D01* +X485232Y219214D01* +X485136Y219220D01* +X485040Y219229D01* +X484944Y219243D01* +X484849Y219260D01* +X484755Y219282D01* +X484662Y219307D01* +X484569Y219335D01* +X484478Y219368D01* +X484389Y219404D01* +X484301Y219444D01* +X484214Y219487D01* +X484130Y219533D01* +X484047Y219583D01* +X483966Y219637D01* +X483888Y219693D01* +X483812Y219753D01* +X483738Y219815D01* +X483667Y219881D01* +X483599Y219949D01* +X483533Y220020D01* +X483471Y220094D01* +X483411Y220170D01* +X483355Y220248D01* +X483301Y220329D01* +X483251Y220412D01* +X483205Y220496D01* +X483162Y220583D01* +X483122Y220671D01* +X483086Y220760D01* +X483053Y220851D01* +X483025Y220944D01* +X483000Y221037D01* +X482978Y221131D01* +X482961Y221226D01* +X482947Y221322D01* +X482938Y221418D01* +X482932Y221514D01* +X482930Y221611D01* +X482930Y224010D01* +X482932Y224133D01* +X482938Y224256D01* +X482948Y224379D01* +X482962Y224501D01* +X482979Y224623D01* +X483001Y224744D01* +X483026Y224864D01* +X483056Y224984D01* +X483089Y225102D01* +X483126Y225219D01* +X483166Y225336D01* +X483210Y225450D01* +X483258Y225564D01* +X483310Y225675D01* +X483365Y225785D01* +X483424Y225893D01* +X483486Y226000D01* +X483551Y226104D01* +X483620Y226206D01* +X483692Y226306D01* +X483767Y226403D01* +X483846Y226498D01* +X483927Y226590D01* +X484011Y226680D01* +X484098Y226767D01* +X484188Y226851D01* +X484280Y226932D01* +X484375Y227011D01* +X484472Y227086D01* +X484572Y227158D01* +X484674Y227227D01* +X484778Y227292D01* +X484885Y227354D01* +X484993Y227413D01* +X485103Y227468D01* +X485214Y227520D01* +X485328Y227567D01* +X485442Y227612D01* +X485559Y227652D01* +X485676Y227689D01* +X485794Y227722D01* +X485914Y227752D01* +X486034Y227777D01* +X486155Y227799D01* +X486277Y227816D01* +X486399Y227830D01* +X486522Y227840D01* +X486645Y227846D01* +X486768Y227848D01* +X337500Y271790D02* +X337500Y114290D01* +X274640Y114290D01* +X274540Y271790D02* +X337500Y271790D01* +X243520Y271790D02* +X157700Y271790D01* +X157800Y114290D02* +X243520Y114290D01* +X341763Y259098D02* +X348480Y259098D01* +X348566Y259096D01* +X348652Y259090D01* +X348738Y259081D01* +X348823Y259067D01* +X348907Y259050D01* +X348991Y259029D01* +X349073Y259004D01* +X349154Y258976D01* +X349234Y258944D01* +X349313Y258908D01* +X349389Y258869D01* +X349464Y258826D01* +X349537Y258781D01* +X349608Y258731D01* +X349676Y258679D01* +X349743Y258624D01* +X349806Y258566D01* +X349867Y258505D01* +X349925Y258442D01* +X349980Y258375D01* +X350033Y258307D01* +X350082Y258236D01* +X350127Y258163D01* +X350170Y258088D01* +X350209Y258012D01* +X350245Y257933D01* +X350277Y257853D01* +X350305Y257772D01* +X350330Y257689D01* +X350351Y257606D01* +X350368Y257522D01* +X350382Y257437D01* +X350391Y257351D01* +X350397Y257265D01* +X350399Y257179D01* +X350399Y256219D01* +X350399Y263695D02* +X350399Y266574D01* +X350397Y266660D01* +X350391Y266746D01* +X350382Y266832D01* +X350368Y266917D01* +X350351Y267001D01* +X350330Y267085D01* +X350305Y267167D01* +X350277Y267248D01* +X350245Y267328D01* +X350209Y267407D01* +X350170Y267483D01* +X350127Y267558D01* +X350082Y267631D01* +X350033Y267702D01* +X349980Y267770D01* +X349925Y267837D01* +X349867Y267900D01* +X349806Y267961D01* +X349743Y268019D01* +X349676Y268074D01* +X349608Y268127D01* +X349537Y268176D01* +X349464Y268221D01* +X349389Y268264D01* +X349313Y268303D01* +X349234Y268339D01* +X349154Y268371D01* +X349073Y268399D01* +X348991Y268424D01* +X348907Y268445D01* +X348823Y268462D01* +X348738Y268476D01* +X348652Y268485D01* +X348566Y268491D01* +X348480Y268493D01* +X347520Y268493D01* +X347434Y268491D01* +X347348Y268485D01* +X347262Y268476D01* +X347177Y268462D01* +X347093Y268445D01* +X347009Y268424D01* +X346927Y268399D01* +X346846Y268371D01* +X346766Y268339D01* +X346687Y268303D01* +X346611Y268264D01* +X346536Y268221D01* +X346463Y268176D01* +X346392Y268127D01* +X346324Y268074D01* +X346257Y268019D01* +X346194Y267961D01* +X346133Y267900D01* +X346075Y267837D01* +X346020Y267770D01* +X345968Y267702D01* +X345918Y267631D01* +X345873Y267558D01* +X345830Y267483D01* +X345791Y267407D01* +X345755Y267328D01* +X345723Y267248D01* +X345695Y267167D01* +X345670Y267085D01* +X345649Y267001D01* +X345632Y266917D01* +X345618Y266832D01* +X345609Y266746D01* +X345603Y266660D01* +X345601Y266574D01* +X345601Y263695D01* +X341763Y263695D01* +X341763Y268493D01* +X362461Y19050D02* +X362461Y12333D01* +X362459Y12247D01* +X362453Y12161D01* +X362444Y12075D01* +X362430Y11990D01* +X362413Y11906D01* +X362392Y11822D01* +X362367Y11740D01* +X362339Y11659D01* +X362307Y11579D01* +X362271Y11500D01* +X362232Y11424D01* +X362189Y11349D01* +X362144Y11276D01* +X362094Y11205D01* +X362042Y11137D01* +X361987Y11070D01* +X361929Y11007D01* +X361868Y10946D01* +X361805Y10888D01* +X361738Y10833D01* +X361670Y10780D01* +X361599Y10731D01* +X361526Y10686D01* +X361451Y10643D01* +X361375Y10604D01* +X361296Y10568D01* +X361216Y10536D01* +X361135Y10508D01* +X361052Y10483D01* +X360969Y10462D01* +X360885Y10445D01* +X360800Y10431D01* +X360714Y10422D01* +X360628Y10416D01* +X360542Y10414D01* +X359582Y10414D01* +X367058Y10414D02* +X369457Y10414D01* +X369554Y10416D01* +X369650Y10422D01* +X369746Y10431D01* +X369842Y10445D01* +X369937Y10462D01* +X370031Y10484D01* +X370124Y10509D01* +X370217Y10537D01* +X370308Y10570D01* +X370397Y10606D01* +X370485Y10646D01* +X370572Y10689D01* +X370657Y10735D01* +X370739Y10785D01* +X370820Y10839D01* +X370898Y10895D01* +X370974Y10955D01* +X371048Y11017D01* +X371119Y11083D01* +X371187Y11151D01* +X371253Y11222D01* +X371315Y11296D01* +X371375Y11372D01* +X371431Y11450D01* +X371485Y11531D01* +X371535Y11613D01* +X371581Y11698D01* +X371624Y11785D01* +X371664Y11873D01* +X371700Y11962D01* +X371733Y12053D01* +X371761Y12146D01* +X371786Y12239D01* +X371808Y12333D01* +X371825Y12428D01* +X371839Y12524D01* +X371848Y12620D01* +X371854Y12716D01* +X371856Y12813D01* +X371854Y12910D01* +X371848Y13006D01* +X371839Y13102D01* +X371825Y13198D01* +X371808Y13293D01* +X371786Y13387D01* +X371761Y13480D01* +X371733Y13573D01* +X371700Y13664D01* +X371664Y13753D01* +X371624Y13841D01* +X371581Y13928D01* +X371535Y14012D01* +X371485Y14095D01* +X371431Y14176D01* +X371375Y14254D01* +X371315Y14330D01* +X371253Y14404D01* +X371187Y14475D01* +X371119Y14543D01* +X371048Y14609D01* +X370974Y14671D01* +X370898Y14731D01* +X370820Y14787D01* +X370739Y14841D01* +X370657Y14891D01* +X370572Y14937D01* +X370485Y14980D01* +X370397Y15020D01* +X370308Y15056D01* +X370217Y15089D01* +X370124Y15117D01* +X370031Y15142D01* +X369937Y15164D01* +X369842Y15181D01* +X369746Y15195D01* +X369650Y15204D01* +X369554Y15210D01* +X369457Y15212D01* +X369937Y19050D02* +X367058Y19050D01* +X369937Y19050D02* +X370023Y19048D01* +X370109Y19042D01* +X370195Y19033D01* +X370280Y19019D01* +X370364Y19002D01* +X370448Y18981D01* +X370530Y18956D01* +X370611Y18928D01* +X370691Y18896D01* +X370770Y18860D01* +X370846Y18821D01* +X370921Y18778D01* +X370994Y18733D01* +X371065Y18684D01* +X371133Y18631D01* +X371200Y18576D01* +X371263Y18518D01* +X371324Y18457D01* +X371382Y18394D01* +X371437Y18327D01* +X371490Y18259D01* +X371539Y18188D01* +X371584Y18115D01* +X371627Y18040D01* +X371666Y17964D01* +X371702Y17885D01* +X371734Y17805D01* +X371762Y17724D01* +X371787Y17642D01* +X371808Y17558D01* +X371825Y17474D01* +X371839Y17389D01* +X371848Y17303D01* +X371854Y17217D01* +X371856Y17131D01* +X371854Y17045D01* +X371848Y16959D01* +X371839Y16873D01* +X371825Y16788D01* +X371808Y16704D01* +X371787Y16620D01* +X371762Y16538D01* +X371734Y16457D01* +X371702Y16377D01* +X371666Y16298D01* +X371627Y16222D01* +X371584Y16147D01* +X371539Y16074D01* +X371490Y16003D01* +X371437Y15935D01* +X371382Y15868D01* +X371324Y15805D01* +X371263Y15744D01* +X371200Y15686D01* +X371133Y15631D01* +X371065Y15578D01* +X370994Y15529D01* +X370921Y15484D01* +X370846Y15441D01* +X370770Y15402D01* +X370691Y15366D01* +X370611Y15334D01* +X370530Y15306D01* +X370448Y15281D01* +X370364Y15260D01* +X370280Y15243D01* +X370195Y15229D01* +X370109Y15220D01* +X370023Y15214D01* +X369937Y15212D01* +X368018Y15212D01* +D27* +X1000824Y19431D02* +X1000824Y10936D01* +X1000822Y10838D01* +X1000816Y10741D01* +X1000806Y10643D01* +X1000793Y10547D01* +X1000775Y10451D01* +X1000753Y10355D01* +X1000728Y10261D01* +X1000699Y10167D01* +X1000666Y10075D01* +X1000630Y9985D01* +X1000590Y9896D01* +X1000546Y9808D01* +X1000499Y9722D01* +X1000448Y9639D01* +X1000394Y9557D01* +X1000337Y9478D01* +X1000277Y9401D01* +X1000214Y9327D01* +X1000147Y9255D01* +X1000078Y9186D01* +X1000006Y9119D01* +X999932Y9056D01* +X999855Y8996D01* +X999776Y8939D01* +X999694Y8885D01* +X999610Y8834D01* +X999525Y8787D01* +X999437Y8743D01* +X999348Y8703D01* +X999258Y8667D01* +X999166Y8634D01* +X999072Y8605D01* +X998978Y8580D01* +X998882Y8558D01* +X998786Y8540D01* +X998690Y8527D01* +X998592Y8517D01* +X998495Y8511D01* +X998397Y8509D01* +X997183Y8509D01* +X1009841Y19432D02* +X1009943Y19430D01* +X1010045Y19424D01* +X1010147Y19415D01* +X1010248Y19401D01* +X1010349Y19384D01* +X1010449Y19364D01* +X1010548Y19339D01* +X1010646Y19311D01* +X1010743Y19279D01* +X1010839Y19243D01* +X1010933Y19204D01* +X1011026Y19162D01* +X1011117Y19116D01* +X1011207Y19066D01* +X1011294Y19013D01* +X1011379Y18957D01* +X1011463Y18898D01* +X1011544Y18836D01* +X1011622Y18771D01* +X1011699Y18703D01* +X1011772Y18632D01* +X1011843Y18559D01* +X1011911Y18482D01* +X1011976Y18404D01* +X1012038Y18323D01* +X1012097Y18239D01* +X1012153Y18154D01* +X1012206Y18067D01* +X1012256Y17977D01* +X1012302Y17886D01* +X1012344Y17793D01* +X1012383Y17699D01* +X1012419Y17603D01* +X1012451Y17506D01* +X1012479Y17408D01* +X1012504Y17309D01* +X1012524Y17209D01* +X1012541Y17108D01* +X1012555Y17007D01* +X1012564Y16905D01* +X1012570Y16803D01* +X1012572Y16701D01* +X1009841Y19431D02* +X1009725Y19429D01* +X1009609Y19423D01* +X1009493Y19414D01* +X1009378Y19400D01* +X1009263Y19383D01* +X1009149Y19362D01* +X1009036Y19337D01* +X1008923Y19309D01* +X1008812Y19277D01* +X1008701Y19241D01* +X1008592Y19201D01* +X1008484Y19158D01* +X1008378Y19111D01* +X1008273Y19061D01* +X1008170Y19008D01* +X1008069Y18951D01* +X1007970Y18890D01* +X1007873Y18827D01* +X1007778Y18760D01* +X1007685Y18690D01* +X1007595Y18617D01* +X1007507Y18542D01* +X1007421Y18463D01* +X1007339Y18381D01* +X1007259Y18297D01* +X1007181Y18211D01* +X1007107Y18121D01* +X1007036Y18030D01* +X1006968Y17936D01* +X1006903Y17839D01* +X1006841Y17741D01* +X1006782Y17641D01* +X1006727Y17539D01* +X1006675Y17435D01* +X1006627Y17329D01* +X1006582Y17222D01* +X1006541Y17114D01* +X1006504Y17004D01* +X1011661Y14577D02* +X1011734Y14650D01* +X1011805Y14725D01* +X1011873Y14802D01* +X1011939Y14882D01* +X1012001Y14964D01* +X1012061Y15048D01* +X1012118Y15135D01* +X1012171Y15223D01* +X1012222Y15313D01* +X1012269Y15405D01* +X1012313Y15498D01* +X1012354Y15593D01* +X1012391Y15690D01* +X1012425Y15787D01* +X1012455Y15886D01* +X1012482Y15985D01* +X1012506Y16086D01* +X1012526Y16187D01* +X1012542Y16289D01* +X1012555Y16392D01* +X1012564Y16495D01* +X1012569Y16598D01* +X1012571Y16701D01* +X1011661Y14577D02* +X1006503Y8509D01* +X1012571Y8509D01* +D23* +X717820Y130140D02* +X717822Y130203D01* +X717828Y130265D01* +X717838Y130327D01* +X717851Y130389D01* +X717869Y130449D01* +X717890Y130508D01* +X717915Y130566D01* +X717944Y130622D01* +X717976Y130676D01* +X718011Y130728D01* +X718049Y130777D01* +X718091Y130825D01* +X718135Y130869D01* +X718183Y130911D01* +X718232Y130949D01* +X718284Y130984D01* +X718338Y131016D01* +X718394Y131045D01* +X718452Y131070D01* +X718511Y131091D01* +X718571Y131109D01* +X718633Y131122D01* +X718695Y131132D01* +X718757Y131138D01* +X718820Y131140D01* +X718883Y131138D01* +X718945Y131132D01* +X719007Y131122D01* +X719069Y131109D01* +X719129Y131091D01* +X719188Y131070D01* +X719246Y131045D01* +X719302Y131016D01* +X719356Y130984D01* +X719408Y130949D01* +X719457Y130911D01* +X719505Y130869D01* +X719549Y130825D01* +X719591Y130777D01* +X719629Y130728D01* +X719664Y130676D01* +X719696Y130622D01* +X719725Y130566D01* +X719750Y130508D01* +X719771Y130449D01* +X719789Y130389D01* +X719802Y130327D01* +X719812Y130265D01* +X719818Y130203D01* +X719820Y130140D01* +X719818Y130077D01* +X719812Y130015D01* +X719802Y129953D01* +X719789Y129891D01* +X719771Y129831D01* +X719750Y129772D01* +X719725Y129714D01* +X719696Y129658D01* +X719664Y129604D01* +X719629Y129552D01* +X719591Y129503D01* +X719549Y129455D01* +X719505Y129411D01* +X719457Y129369D01* +X719408Y129331D01* +X719356Y129296D01* +X719302Y129264D01* +X719246Y129235D01* +X719188Y129210D01* +X719129Y129189D01* +X719069Y129171D01* +X719007Y129158D01* +X718945Y129148D01* +X718883Y129142D01* +X718820Y129140D01* +X718757Y129142D01* +X718695Y129148D01* +X718633Y129158D01* +X718571Y129171D01* +X718511Y129189D01* +X718452Y129210D01* +X718394Y129235D01* +X718338Y129264D01* +X718284Y129296D01* +X718232Y129331D01* +X718183Y129369D01* +X718135Y129411D01* +X718091Y129455D01* +X718049Y129503D01* +X718011Y129552D01* +X717976Y129604D01* +X717944Y129658D01* +X717915Y129714D01* +X717890Y129772D01* +X717869Y129831D01* +X717851Y129891D01* +X717838Y129953D01* +X717828Y130015D01* +X717822Y130077D01* +X717820Y130140D01* +D17* +X731520Y139700D03* +D14* +X743703Y142754D02* +X743703Y151390D01* +X746101Y151390D01* +X746198Y151388D01* +X746294Y151382D01* +X746390Y151373D01* +X746486Y151359D01* +X746581Y151342D01* +X746675Y151320D01* +X746768Y151295D01* +X746861Y151267D01* +X746952Y151234D01* +X747041Y151198D01* +X747129Y151158D01* +X747216Y151115D01* +X747301Y151069D01* +X747383Y151019D01* +X747464Y150965D01* +X747542Y150909D01* +X747618Y150849D01* +X747692Y150787D01* +X747763Y150721D01* +X747831Y150653D01* +X747897Y150582D01* +X747959Y150508D01* +X748019Y150432D01* +X748075Y150354D01* +X748129Y150273D01* +X748179Y150191D01* +X748225Y150106D01* +X748268Y150019D01* +X748308Y149931D01* +X748344Y149842D01* +X748377Y149751D01* +X748405Y149658D01* +X748430Y149565D01* +X748452Y149471D01* +X748469Y149376D01* +X748483Y149280D01* +X748492Y149184D01* +X748498Y149088D01* +X748500Y148991D01* +X748500Y145153D01* +X748498Y145056D01* +X748492Y144960D01* +X748483Y144864D01* +X748469Y144768D01* +X748452Y144673D01* +X748430Y144579D01* +X748405Y144486D01* +X748377Y144393D01* +X748344Y144302D01* +X748308Y144213D01* +X748268Y144125D01* +X748225Y144038D01* +X748179Y143954D01* +X748129Y143871D01* +X748075Y143790D01* +X748019Y143712D01* +X747959Y143636D01* +X747897Y143562D01* +X747831Y143491D01* +X747763Y143423D01* +X747692Y143357D01* +X747618Y143295D01* +X747542Y143235D01* +X747464Y143179D01* +X747383Y143125D01* +X747301Y143075D01* +X747216Y143029D01* +X747129Y142986D01* +X747041Y142946D01* +X746952Y142910D01* +X746861Y142877D01* +X746768Y142849D01* +X746675Y142824D01* +X746581Y142802D01* +X746486Y142785D01* +X746390Y142771D01* +X746294Y142762D01* +X746198Y142756D01* +X746101Y142754D01* +X743703Y142754D01* +X753151Y142754D02* +X755550Y142754D01* +X755647Y142756D01* +X755743Y142762D01* +X755839Y142771D01* +X755935Y142785D01* +X756030Y142802D01* +X756124Y142824D01* +X756217Y142849D01* +X756310Y142877D01* +X756401Y142910D01* +X756490Y142946D01* +X756578Y142986D01* +X756665Y143029D01* +X756750Y143075D01* +X756832Y143125D01* +X756913Y143179D01* +X756991Y143235D01* +X757067Y143295D01* +X757141Y143357D01* +X757212Y143423D01* +X757280Y143491D01* +X757346Y143562D01* +X757408Y143636D01* +X757468Y143712D01* +X757524Y143790D01* +X757578Y143871D01* +X757628Y143954D01* +X757674Y144038D01* +X757717Y144125D01* +X757757Y144213D01* +X757793Y144302D01* +X757826Y144393D01* +X757854Y144486D01* +X757879Y144579D01* +X757901Y144673D01* +X757918Y144768D01* +X757932Y144864D01* +X757941Y144960D01* +X757947Y145056D01* +X757949Y145153D01* +X757947Y145250D01* +X757941Y145346D01* +X757932Y145442D01* +X757918Y145538D01* +X757901Y145633D01* +X757879Y145727D01* +X757854Y145820D01* +X757826Y145913D01* +X757793Y146004D01* +X757757Y146093D01* +X757717Y146181D01* +X757674Y146268D01* +X757628Y146352D01* +X757578Y146435D01* +X757524Y146516D01* +X757468Y146594D01* +X757408Y146670D01* +X757346Y146744D01* +X757280Y146815D01* +X757212Y146883D01* +X757141Y146949D01* +X757067Y147011D01* +X756991Y147071D01* +X756913Y147127D01* +X756832Y147181D01* +X756750Y147231D01* +X756665Y147277D01* +X756578Y147320D01* +X756490Y147360D01* +X756401Y147396D01* +X756310Y147429D01* +X756217Y147457D01* +X756124Y147482D01* +X756030Y147504D01* +X755935Y147521D01* +X755839Y147535D01* +X755743Y147544D01* +X755647Y147550D01* +X755550Y147552D01* +X756030Y151390D02* +X753151Y151390D01* +X756030Y151390D02* +X756116Y151388D01* +X756202Y151382D01* +X756288Y151373D01* +X756373Y151359D01* +X756457Y151342D01* +X756541Y151321D01* +X756623Y151296D01* +X756704Y151268D01* +X756784Y151236D01* +X756863Y151200D01* +X756939Y151161D01* +X757014Y151118D01* +X757087Y151073D01* +X757158Y151024D01* +X757226Y150971D01* +X757293Y150916D01* +X757356Y150858D01* +X757417Y150797D01* +X757475Y150734D01* +X757530Y150667D01* +X757583Y150599D01* +X757632Y150528D01* +X757677Y150455D01* +X757720Y150380D01* +X757759Y150304D01* +X757795Y150225D01* +X757827Y150145D01* +X757855Y150064D01* +X757880Y149982D01* +X757901Y149898D01* +X757918Y149814D01* +X757932Y149729D01* +X757941Y149643D01* +X757947Y149557D01* +X757949Y149471D01* +X757947Y149385D01* +X757941Y149299D01* +X757932Y149213D01* +X757918Y149128D01* +X757901Y149044D01* +X757880Y148960D01* +X757855Y148878D01* +X757827Y148797D01* +X757795Y148717D01* +X757759Y148638D01* +X757720Y148562D01* +X757677Y148487D01* +X757632Y148414D01* +X757583Y148343D01* +X757530Y148275D01* +X757475Y148208D01* +X757417Y148145D01* +X757356Y148084D01* +X757293Y148026D01* +X757226Y147971D01* +X757158Y147918D01* +X757087Y147869D01* +X757014Y147824D01* +X756939Y147781D01* +X756863Y147742D01* +X756784Y147706D01* +X756704Y147674D01* +X756623Y147646D01* +X756541Y147621D01* +X756457Y147600D01* +X756373Y147583D01* +X756288Y147569D01* +X756202Y147560D01* +X756116Y147554D01* +X756030Y147552D01* +X754111Y147552D01* +D19* +X815300Y30320D02* +X815300Y10320D01* +D14* +X823045Y11063D02* +X823045Y17780D01* +X823045Y11063D02* +X823043Y10977D01* +X823037Y10891D01* +X823028Y10805D01* +X823014Y10720D01* +X822997Y10636D01* +X822976Y10552D01* +X822951Y10470D01* +X822923Y10389D01* +X822891Y10309D01* +X822855Y10230D01* +X822816Y10154D01* +X822773Y10079D01* +X822728Y10006D01* +X822678Y9935D01* +X822626Y9867D01* +X822571Y9800D01* +X822513Y9737D01* +X822452Y9676D01* +X822389Y9618D01* +X822322Y9563D01* +X822254Y9510D01* +X822183Y9461D01* +X822110Y9416D01* +X822035Y9373D01* +X821959Y9334D01* +X821880Y9298D01* +X821800Y9266D01* +X821719Y9238D01* +X821636Y9213D01* +X821553Y9192D01* +X821469Y9175D01* +X821384Y9161D01* +X821298Y9152D01* +X821212Y9146D01* +X821126Y9144D01* +X820166Y9144D01* +X827642Y11063D02* +X829561Y17780D01* +X827642Y11063D02* +X832440Y11063D01* +X831001Y12982D02* +X831001Y9144D01* +D18* +X596900Y48260D03* +D14* +X613664Y43688D02* +X613664Y35052D01* +X613664Y43688D02* +X616063Y43688D01* +X616160Y43686D01* +X616256Y43680D01* +X616352Y43671D01* +X616448Y43657D01* +X616543Y43640D01* +X616637Y43618D01* +X616730Y43593D01* +X616823Y43565D01* +X616914Y43532D01* +X617003Y43496D01* +X617091Y43456D01* +X617178Y43413D01* +X617263Y43367D01* +X617345Y43317D01* +X617426Y43263D01* +X617504Y43207D01* +X617580Y43147D01* +X617654Y43085D01* +X617725Y43019D01* +X617793Y42951D01* +X617859Y42880D01* +X617921Y42806D01* +X617981Y42730D01* +X618037Y42652D01* +X618091Y42571D01* +X618141Y42488D01* +X618187Y42404D01* +X618230Y42317D01* +X618270Y42229D01* +X618306Y42140D01* +X618339Y42049D01* +X618367Y41956D01* +X618392Y41863D01* +X618414Y41769D01* +X618431Y41674D01* +X618445Y41578D01* +X618454Y41482D01* +X618460Y41386D01* +X618462Y41289D01* +X618460Y41192D01* +X618454Y41096D01* +X618445Y41000D01* +X618431Y40904D01* +X618414Y40809D01* +X618392Y40715D01* +X618367Y40622D01* +X618339Y40529D01* +X618306Y40438D01* +X618270Y40349D01* +X618230Y40261D01* +X618187Y40174D01* +X618141Y40089D01* +X618091Y40007D01* +X618037Y39926D01* +X617981Y39848D01* +X617921Y39772D01* +X617859Y39698D01* +X617793Y39627D01* +X617725Y39559D01* +X617654Y39493D01* +X617580Y39431D01* +X617504Y39371D01* +X617426Y39315D01* +X617345Y39261D01* +X617263Y39211D01* +X617178Y39165D01* +X617091Y39122D01* +X617003Y39082D01* +X616914Y39046D01* +X616823Y39013D01* +X616730Y38985D01* +X616637Y38960D01* +X616543Y38938D01* +X616448Y38921D01* +X616352Y38907D01* +X616256Y38898D01* +X616160Y38892D01* +X616063Y38890D01* +X613664Y38890D01* +X616543Y38890D02* +X618462Y35052D01* +X622723Y36971D02* +X624642Y43688D01* +X622723Y36971D02* +X627521Y36971D01* +X626082Y38890D02* +X626082Y35052D01* +X631867Y35052D02* +X634266Y35052D01* +X634363Y35054D01* +X634459Y35060D01* +X634555Y35069D01* +X634651Y35083D01* +X634746Y35100D01* +X634840Y35122D01* +X634933Y35147D01* +X635026Y35175D01* +X635117Y35208D01* +X635206Y35244D01* +X635294Y35284D01* +X635381Y35327D01* +X635466Y35373D01* +X635548Y35423D01* +X635629Y35477D01* +X635707Y35533D01* +X635783Y35593D01* +X635857Y35655D01* +X635928Y35721D01* +X635996Y35789D01* +X636062Y35860D01* +X636124Y35934D01* +X636184Y36010D01* +X636240Y36088D01* +X636294Y36169D01* +X636344Y36251D01* +X636390Y36336D01* +X636433Y36423D01* +X636473Y36511D01* +X636509Y36600D01* +X636542Y36691D01* +X636570Y36784D01* +X636595Y36877D01* +X636617Y36971D01* +X636634Y37066D01* +X636648Y37162D01* +X636657Y37258D01* +X636663Y37354D01* +X636665Y37451D01* +X636663Y37548D01* +X636657Y37644D01* +X636648Y37740D01* +X636634Y37836D01* +X636617Y37931D01* +X636595Y38025D01* +X636570Y38118D01* +X636542Y38211D01* +X636509Y38302D01* +X636473Y38391D01* +X636433Y38479D01* +X636390Y38566D01* +X636344Y38650D01* +X636294Y38733D01* +X636240Y38814D01* +X636184Y38892D01* +X636124Y38968D01* +X636062Y39042D01* +X635996Y39113D01* +X635928Y39181D01* +X635857Y39247D01* +X635783Y39309D01* +X635707Y39369D01* +X635629Y39425D01* +X635548Y39479D01* +X635466Y39529D01* +X635381Y39575D01* +X635294Y39618D01* +X635206Y39658D01* +X635117Y39694D01* +X635026Y39727D01* +X634933Y39755D01* +X634840Y39780D01* +X634746Y39802D01* +X634651Y39819D01* +X634555Y39833D01* +X634459Y39842D01* +X634363Y39848D01* +X634266Y39850D01* +X634746Y43688D02* +X631867Y43688D01* +X634746Y43688D02* +X634832Y43686D01* +X634918Y43680D01* +X635004Y43671D01* +X635089Y43657D01* +X635173Y43640D01* +X635257Y43619D01* +X635339Y43594D01* +X635420Y43566D01* +X635500Y43534D01* +X635579Y43498D01* +X635655Y43459D01* +X635730Y43416D01* +X635803Y43371D01* +X635874Y43322D01* +X635942Y43269D01* +X636009Y43214D01* +X636072Y43156D01* +X636133Y43095D01* +X636191Y43032D01* +X636246Y42965D01* +X636299Y42897D01* +X636348Y42826D01* +X636393Y42753D01* +X636436Y42678D01* +X636475Y42602D01* +X636511Y42523D01* +X636543Y42443D01* +X636571Y42362D01* +X636596Y42280D01* +X636617Y42196D01* +X636634Y42112D01* +X636648Y42027D01* +X636657Y41941D01* +X636663Y41855D01* +X636665Y41769D01* +X636663Y41683D01* +X636657Y41597D01* +X636648Y41511D01* +X636634Y41426D01* +X636617Y41342D01* +X636596Y41258D01* +X636571Y41176D01* +X636543Y41095D01* +X636511Y41015D01* +X636475Y40936D01* +X636436Y40860D01* +X636393Y40785D01* +X636348Y40712D01* +X636299Y40641D01* +X636246Y40573D01* +X636191Y40506D01* +X636133Y40443D01* +X636072Y40382D01* +X636009Y40324D01* +X635942Y40269D01* +X635874Y40216D01* +X635803Y40167D01* +X635730Y40122D01* +X635655Y40079D01* +X635579Y40040D01* +X635500Y40004D01* +X635420Y39972D01* +X635339Y39944D01* +X635257Y39919D01* +X635173Y39898D01* +X635089Y39881D01* +X635004Y39867D01* +X634918Y39858D01* +X634832Y39852D01* +X634746Y39850D01* +X632827Y39850D01* +D18* +X726440Y55880D03* +D14* +X746252Y52832D02* +X746252Y61468D01* +X748651Y61468D01* +X748748Y61466D01* +X748844Y61460D01* +X748940Y61451D01* +X749036Y61437D01* +X749131Y61420D01* +X749225Y61398D01* +X749318Y61373D01* +X749411Y61345D01* +X749502Y61312D01* +X749591Y61276D01* +X749679Y61236D01* +X749766Y61193D01* +X749851Y61147D01* +X749933Y61097D01* +X750014Y61043D01* +X750092Y60987D01* +X750168Y60927D01* +X750242Y60865D01* +X750313Y60799D01* +X750381Y60731D01* +X750447Y60660D01* +X750509Y60586D01* +X750569Y60510D01* +X750625Y60432D01* +X750679Y60351D01* +X750729Y60268D01* +X750775Y60184D01* +X750818Y60097D01* +X750858Y60009D01* +X750894Y59920D01* +X750927Y59829D01* +X750955Y59736D01* +X750980Y59643D01* +X751002Y59549D01* +X751019Y59454D01* +X751033Y59358D01* +X751042Y59262D01* +X751048Y59166D01* +X751050Y59069D01* +X751048Y58972D01* +X751042Y58876D01* +X751033Y58780D01* +X751019Y58684D01* +X751002Y58589D01* +X750980Y58495D01* +X750955Y58402D01* +X750927Y58309D01* +X750894Y58218D01* +X750858Y58129D01* +X750818Y58041D01* +X750775Y57954D01* +X750729Y57869D01* +X750679Y57787D01* +X750625Y57706D01* +X750569Y57628D01* +X750509Y57552D01* +X750447Y57478D01* +X750381Y57407D01* +X750313Y57339D01* +X750242Y57273D01* +X750168Y57211D01* +X750092Y57151D01* +X750014Y57095D01* +X749933Y57041D01* +X749851Y56991D01* +X749766Y56945D01* +X749679Y56902D01* +X749591Y56862D01* +X749502Y56826D01* +X749411Y56793D01* +X749318Y56765D01* +X749225Y56740D01* +X749131Y56718D01* +X749036Y56701D01* +X748940Y56687D01* +X748844Y56678D01* +X748748Y56672D01* +X748651Y56670D01* +X746252Y56670D01* +X749131Y56670D02* +X751050Y52832D01* +X755311Y54751D02* +X757230Y61468D01* +X755311Y54751D02* +X760109Y54751D01* +X758670Y56670D02* +X758670Y52832D01* +X764455Y54751D02* +X766374Y61468D01* +X764455Y54751D02* +X769253Y54751D01* +X767814Y56670D02* +X767814Y52832D01* +D19* +X764500Y68740D02* +X764500Y88740D01* +D14* +X730335Y96313D02* +X730335Y103030D01* +X730335Y96313D02* +X730333Y96227D01* +X730327Y96141D01* +X730318Y96055D01* +X730304Y95970D01* +X730287Y95886D01* +X730266Y95802D01* +X730241Y95720D01* +X730213Y95639D01* +X730181Y95559D01* +X730145Y95480D01* +X730106Y95404D01* +X730063Y95329D01* +X730018Y95256D01* +X729968Y95185D01* +X729916Y95117D01* +X729861Y95050D01* +X729803Y94987D01* +X729742Y94926D01* +X729679Y94868D01* +X729612Y94813D01* +X729544Y94760D01* +X729473Y94711D01* +X729400Y94666D01* +X729325Y94623D01* +X729249Y94584D01* +X729170Y94548D01* +X729090Y94516D01* +X729009Y94488D01* +X728926Y94463D01* +X728843Y94442D01* +X728759Y94425D01* +X728674Y94411D01* +X728588Y94402D01* +X728502Y94396D01* +X728416Y94394D01* +X727456Y94394D01* +X734932Y102070D02* +X734932Y103030D01* +X739730Y103030D01* +X737331Y94394D01* +D19* +X697970Y314883D02* +X696703Y317602D01* +X682202Y310840D01* +X683470Y308121D01* +D10* +X693912Y298647D02* +X698516Y300793D01* +D14* +X593555Y309790D02* +X585729Y306140D01* +X593555Y309790D02* +X594569Y307616D01* +X594608Y307527D01* +X594644Y307438D01* +X594676Y307346D01* +X594704Y307254D01* +X594728Y307160D01* +X594749Y307066D01* +X594765Y306971D01* +X594778Y306875D01* +X594787Y306779D01* +X594793Y306682D01* +X594794Y306586D01* +X594791Y306489D01* +X594785Y306393D01* +X594775Y306297D01* +X594760Y306201D01* +X594742Y306106D01* +X594720Y306012D01* +X594695Y305919D01* +X594665Y305827D01* +X594632Y305736D01* +X594596Y305647D01* +X594555Y305559D01* +X594512Y305473D01* +X594464Y305389D01* +X594414Y305306D01* +X594360Y305226D01* +X594303Y305148D01* +X594243Y305072D01* +X594180Y304999D01* +X594114Y304929D01* +X594045Y304861D01* +X593974Y304796D01* +X593900Y304734D01* +X593823Y304674D01* +X593744Y304619D01* +X593664Y304566D01* +X593581Y304516D01* +X593496Y304470D01* +X593409Y304428D01* +X589930Y302806D01* +X589841Y302767D01* +X589752Y302731D01* +X589660Y302699D01* +X589568Y302671D01* +X589474Y302647D01* +X589380Y302626D01* +X589285Y302610D01* +X589189Y302597D01* +X589093Y302588D01* +X588997Y302582D01* +X588900Y302581D01* +X588803Y302584D01* +X588707Y302590D01* +X588611Y302600D01* +X588515Y302615D01* +X588420Y302633D01* +X588326Y302655D01* +X588233Y302680D01* +X588141Y302710D01* +X588050Y302743D01* +X587961Y302779D01* +X587873Y302820D01* +X587787Y302863D01* +X587703Y302911D01* +X587620Y302961D01* +X587540Y303015D01* +X587462Y303072D01* +X587386Y303132D01* +X587313Y303195D01* +X587243Y303261D01* +X587175Y303330D01* +X587110Y303401D01* +X587048Y303475D01* +X586989Y303552D01* +X586933Y303630D01* +X586880Y303711D01* +X586830Y303794D01* +X586784Y303879D01* +X586742Y303966D01* +X585729Y306140D01* +X589722Y297577D02* +X590938Y294968D01* +X590939Y294968D02* +X590977Y294891D01* +X591018Y294815D01* +X591063Y294742D01* +X591112Y294670D01* +X591163Y294601D01* +X591217Y294535D01* +X591275Y294470D01* +X591335Y294409D01* +X591397Y294350D01* +X591463Y294294D01* +X591531Y294241D01* +X591601Y294191D01* +X591673Y294144D01* +X591748Y294101D01* +X591824Y294061D01* +X591902Y294024D01* +X591981Y293991D01* +X592062Y293961D01* +X592144Y293936D01* +X592228Y293914D01* +X592312Y293895D01* +X592397Y293881D01* +X592482Y293870D01* +X592568Y293863D01* +X592654Y293860D01* +X592740Y293861D01* +X592826Y293866D01* +X592912Y293874D01* +X592997Y293887D01* +X593082Y293903D01* +X593165Y293923D01* +X593248Y293947D01* +X593330Y293974D01* +X593410Y294005D01* +X593489Y294040D01* +X594358Y294445D01* +X594435Y294483D01* +X594511Y294524D01* +X594584Y294569D01* +X594656Y294618D01* +X594725Y294669D01* +X594791Y294723D01* +X594856Y294781D01* +X594917Y294841D01* +X594976Y294904D01* +X595032Y294969D01* +X595085Y295037D01* +X595135Y295107D01* +X595182Y295179D01* +X595225Y295254D01* +X595265Y295330D01* +X595302Y295408D01* +X595335Y295487D01* +X595365Y295568D01* +X595390Y295650D01* +X595412Y295734D01* +X595431Y295818D01* +X595445Y295903D01* +X595456Y295988D01* +X595463Y296074D01* +X595466Y296160D01* +X595465Y296246D01* +X595460Y296332D01* +X595452Y296418D01* +X595439Y296503D01* +X595423Y296588D01* +X595403Y296671D01* +X595379Y296754D01* +X595352Y296836D01* +X595321Y296916D01* +X595286Y296995D01* +X595287Y296996D02* +X594070Y299604D01* +X597549Y301227D01* +X599576Y296878D01* +D19* +X777284Y308121D02* +X778552Y310840D01* +X764051Y317602D01* +X762784Y314883D01* +D10* +X762238Y300793D02* +X766842Y298647D01* +D14* +X857824Y299748D02* +X865651Y296098D01* +X857824Y299748D02* +X858838Y301922D01* +X858880Y302009D01* +X858926Y302094D01* +X858976Y302177D01* +X859029Y302257D01* +X859085Y302336D01* +X859144Y302413D01* +X859206Y302487D01* +X859271Y302558D01* +X859339Y302627D01* +X859409Y302693D01* +X859482Y302756D01* +X859558Y302816D01* +X859636Y302873D01* +X859716Y302927D01* +X859799Y302978D01* +X859883Y303025D01* +X859969Y303068D01* +X860057Y303109D01* +X860146Y303145D01* +X860237Y303178D01* +X860329Y303208D01* +X860422Y303233D01* +X860516Y303255D01* +X860611Y303273D01* +X860707Y303288D01* +X860803Y303298D01* +X860899Y303304D01* +X860996Y303307D01* +X861093Y303306D01* +X861189Y303300D01* +X861285Y303291D01* +X861381Y303278D01* +X861476Y303262D01* +X861571Y303241D01* +X861664Y303217D01* +X861757Y303189D01* +X861848Y303157D01* +X861938Y303121D01* +X862026Y303082D01* +X865504Y301460D01* +X865591Y301418D01* +X865676Y301372D01* +X865759Y301322D01* +X865840Y301269D01* +X865918Y301213D01* +X865995Y301154D01* +X866069Y301092D01* +X866140Y301027D01* +X866209Y300959D01* +X866275Y300889D01* +X866338Y300816D01* +X866398Y300740D01* +X866455Y300662D01* +X866509Y300582D01* +X866559Y300499D01* +X866607Y300415D01* +X866650Y300329D01* +X866691Y300241D01* +X866727Y300152D01* +X866760Y300061D01* +X866790Y299969D01* +X866815Y299876D01* +X866837Y299782D01* +X866855Y299687D01* +X866870Y299591D01* +X866880Y299495D01* +X866886Y299399D01* +X866889Y299302D01* +X866888Y299205D01* +X866882Y299109D01* +X866873Y299013D01* +X866860Y298917D01* +X866844Y298822D01* +X866823Y298728D01* +X866799Y298634D01* +X866771Y298542D01* +X866739Y298450D01* +X866703Y298361D01* +X866664Y298272D01* +X866665Y298272D02* +X865651Y296098D01* +X865296Y306689D02* +X866512Y309298D01* +X866550Y309375D01* +X866591Y309451D01* +X866636Y309524D01* +X866685Y309596D01* +X866736Y309665D01* +X866790Y309731D01* +X866848Y309796D01* +X866908Y309857D01* +X866970Y309916D01* +X867036Y309972D01* +X867104Y310025D01* +X867174Y310075D01* +X867246Y310122D01* +X867321Y310165D01* +X867397Y310205D01* +X867475Y310242D01* +X867554Y310275D01* +X867635Y310305D01* +X867717Y310330D01* +X867801Y310352D01* +X867885Y310371D01* +X867970Y310385D01* +X868055Y310396D01* +X868141Y310403D01* +X868227Y310406D01* +X868313Y310405D01* +X868399Y310400D01* +X868485Y310392D01* +X868570Y310379D01* +X868655Y310363D01* +X868738Y310343D01* +X868821Y310319D01* +X868903Y310292D01* +X868983Y310261D01* +X869062Y310226D01* +X869063Y310226D02* +X869497Y310023D01* +X869498Y310023D02* +X869585Y309981D01* +X869670Y309935D01* +X869753Y309885D01* +X869833Y309832D01* +X869912Y309777D01* +X869989Y309717D01* +X870063Y309655D01* +X870134Y309590D01* +X870203Y309522D01* +X870269Y309452D01* +X870332Y309379D01* +X870392Y309303D01* +X870449Y309225D01* +X870503Y309145D01* +X870553Y309062D01* +X870601Y308978D01* +X870644Y308892D01* +X870685Y308804D01* +X870721Y308715D01* +X870754Y308624D01* +X870784Y308532D01* +X870809Y308439D01* +X870831Y308345D01* +X870849Y308250D01* +X870864Y308154D01* +X870874Y308058D01* +X870880Y307962D01* +X870883Y307865D01* +X870882Y307769D01* +X870876Y307672D01* +X870867Y307576D01* +X870854Y307480D01* +X870838Y307385D01* +X870817Y307291D01* +X870793Y307197D01* +X870765Y307105D01* +X870733Y307013D01* +X870697Y306924D01* +X870658Y306835D01* +X870616Y306748D01* +X870570Y306663D01* +X870520Y306580D01* +X870467Y306500D01* +X870412Y306421D01* +X870352Y306344D01* +X870290Y306270D01* +X870225Y306199D01* +X870157Y306130D01* +X870087Y306064D01* +X870014Y306001D01* +X869938Y305941D01* +X869860Y305884D01* +X869780Y305830D01* +X869697Y305780D01* +X869613Y305732D01* +X869527Y305689D01* +X869439Y305648D01* +X869350Y305612D01* +X869259Y305579D01* +X869167Y305549D01* +X869074Y305524D01* +X868980Y305502D01* +X868885Y305484D01* +X868789Y305469D01* +X868693Y305459D01* +X868597Y305453D01* +X868500Y305450D01* +X868403Y305451D01* +X868307Y305457D01* +X868211Y305466D01* +X868115Y305479D01* +X868020Y305495D01* +X867926Y305516D01* +X867832Y305540D01* +X867740Y305568D01* +X867648Y305600D01* +X867559Y305636D01* +X867470Y305675D01* +X865296Y306689D01* +X865296Y306690D02* +X865185Y306743D01* +X865076Y306801D01* +X864969Y306861D01* +X864864Y306926D01* +X864762Y306993D01* +X864661Y307064D01* +X864563Y307138D01* +X864467Y307215D01* +X864373Y307295D01* +X864283Y307378D01* +X864194Y307464D01* +X864109Y307552D01* +X864027Y307644D01* +X863947Y307738D01* +X863871Y307834D01* +X863798Y307933D01* +X863728Y308034D01* +X863661Y308138D01* +X863598Y308243D01* +X863538Y308350D01* +X863481Y308460D01* +X863428Y308571D01* +X863379Y308683D01* +X863333Y308798D01* +X863291Y308913D01* +X863253Y309030D01* +X863218Y309148D01* +X863187Y309267D01* +X863160Y309387D01* +X863137Y309508D01* +X863118Y309630D01* +X863103Y309752D01* +X863091Y309874D01* +X863084Y309997D01* +X863080Y310120D01* +X863081Y310243D01* +X863085Y310366D01* +X863093Y310489D01* +X863106Y310611D01* +X863122Y310733D01* +X863142Y310855D01* +X863166Y310975D01* +X863194Y311095D01* +X863225Y311214D01* +X863261Y311332D01* +X863300Y311448D01* +X863343Y311564D01* +X863389Y311678D01* +X863440Y311790D01* +D17* +X855980Y246380D03* +D14* +X848106Y240030D02* +X848106Y231394D01* +X848106Y240030D02* +X850505Y240030D01* +X850602Y240028D01* +X850698Y240022D01* +X850794Y240013D01* +X850890Y239999D01* +X850985Y239982D01* +X851079Y239960D01* +X851172Y239935D01* +X851265Y239907D01* +X851356Y239874D01* +X851445Y239838D01* +X851533Y239798D01* +X851620Y239755D01* +X851705Y239709D01* +X851787Y239659D01* +X851868Y239605D01* +X851946Y239549D01* +X852022Y239489D01* +X852096Y239427D01* +X852167Y239361D01* +X852235Y239293D01* +X852301Y239222D01* +X852363Y239148D01* +X852423Y239072D01* +X852479Y238994D01* +X852533Y238913D01* +X852583Y238830D01* +X852629Y238746D01* +X852672Y238659D01* +X852712Y238571D01* +X852748Y238482D01* +X852781Y238391D01* +X852809Y238298D01* +X852834Y238205D01* +X852856Y238111D01* +X852873Y238016D01* +X852887Y237920D01* +X852896Y237824D01* +X852902Y237728D01* +X852904Y237631D01* +X852902Y237534D01* +X852896Y237438D01* +X852887Y237342D01* +X852873Y237246D01* +X852856Y237151D01* +X852834Y237057D01* +X852809Y236964D01* +X852781Y236871D01* +X852748Y236780D01* +X852712Y236691D01* +X852672Y236603D01* +X852629Y236516D01* +X852583Y236432D01* +X852533Y236349D01* +X852479Y236268D01* +X852423Y236190D01* +X852363Y236114D01* +X852301Y236040D01* +X852235Y235969D01* +X852167Y235901D01* +X852096Y235835D01* +X852022Y235773D01* +X851946Y235713D01* +X851868Y235657D01* +X851787Y235603D01* +X851705Y235553D01* +X851620Y235507D01* +X851533Y235464D01* +X851445Y235424D01* +X851356Y235388D01* +X851265Y235355D01* +X851172Y235327D01* +X851079Y235302D01* +X850985Y235280D01* +X850890Y235263D01* +X850794Y235249D01* +X850698Y235240D01* +X850602Y235234D01* +X850505Y235232D01* +X848106Y235232D01* +X850985Y235232D02* +X852904Y231394D01* +X857165Y233313D02* +X859084Y240030D01* +X857165Y233313D02* +X861963Y233313D01* +X860524Y235232D02* +X860524Y231394D01* +X866309Y231394D02* +X869188Y231394D01* +X869274Y231396D01* +X869360Y231402D01* +X869446Y231411D01* +X869531Y231425D01* +X869615Y231442D01* +X869699Y231463D01* +X869781Y231488D01* +X869862Y231516D01* +X869942Y231548D01* +X870021Y231584D01* +X870097Y231623D01* +X870172Y231666D01* +X870245Y231711D01* +X870316Y231761D01* +X870384Y231813D01* +X870451Y231868D01* +X870514Y231926D01* +X870575Y231987D01* +X870633Y232050D01* +X870688Y232117D01* +X870741Y232185D01* +X870790Y232256D01* +X870835Y232329D01* +X870878Y232404D01* +X870917Y232480D01* +X870953Y232559D01* +X870985Y232639D01* +X871013Y232720D01* +X871038Y232803D01* +X871059Y232886D01* +X871076Y232970D01* +X871090Y233055D01* +X871099Y233141D01* +X871105Y233227D01* +X871107Y233313D01* +X871107Y234273D01* +X871105Y234359D01* +X871099Y234445D01* +X871090Y234531D01* +X871076Y234616D01* +X871059Y234700D01* +X871038Y234784D01* +X871013Y234866D01* +X870985Y234947D01* +X870953Y235027D01* +X870917Y235106D01* +X870878Y235182D01* +X870835Y235257D01* +X870790Y235330D01* +X870741Y235401D01* +X870688Y235469D01* +X870633Y235536D01* +X870575Y235599D01* +X870514Y235660D01* +X870451Y235718D01* +X870384Y235773D01* +X870316Y235826D01* +X870245Y235875D01* +X870172Y235920D01* +X870097Y235963D01* +X870021Y236002D01* +X869942Y236038D01* +X869862Y236070D01* +X869781Y236098D01* +X869699Y236123D01* +X869615Y236144D01* +X869531Y236161D01* +X869446Y236175D01* +X869360Y236184D01* +X869274Y236190D01* +X869188Y236192D01* +X866309Y236192D01* +X866309Y240030D01* +X871107Y240030D01* +D17* +X855980Y266700D03* +D14* +X847852Y273304D02* +X847852Y281940D01* +X850251Y281940D01* +X850348Y281938D01* +X850444Y281932D01* +X850540Y281923D01* +X850636Y281909D01* +X850731Y281892D01* +X850825Y281870D01* +X850918Y281845D01* +X851011Y281817D01* +X851102Y281784D01* +X851191Y281748D01* +X851279Y281708D01* +X851366Y281665D01* +X851451Y281619D01* +X851533Y281569D01* +X851614Y281515D01* +X851692Y281459D01* +X851768Y281399D01* +X851842Y281337D01* +X851913Y281271D01* +X851981Y281203D01* +X852047Y281132D01* +X852109Y281058D01* +X852169Y280982D01* +X852225Y280904D01* +X852279Y280823D01* +X852329Y280741D01* +X852375Y280656D01* +X852418Y280569D01* +X852458Y280481D01* +X852494Y280392D01* +X852527Y280301D01* +X852555Y280208D01* +X852580Y280115D01* +X852602Y280021D01* +X852619Y279926D01* +X852633Y279830D01* +X852642Y279734D01* +X852648Y279638D01* +X852650Y279541D01* +X852648Y279444D01* +X852642Y279348D01* +X852633Y279252D01* +X852619Y279156D01* +X852602Y279061D01* +X852580Y278967D01* +X852555Y278874D01* +X852527Y278781D01* +X852494Y278690D01* +X852458Y278601D01* +X852418Y278513D01* +X852375Y278426D01* +X852329Y278342D01* +X852279Y278259D01* +X852225Y278178D01* +X852169Y278100D01* +X852109Y278024D01* +X852047Y277950D01* +X851981Y277879D01* +X851913Y277811D01* +X851842Y277745D01* +X851768Y277683D01* +X851692Y277623D01* +X851614Y277567D01* +X851533Y277513D01* +X851451Y277463D01* +X851366Y277417D01* +X851279Y277374D01* +X851191Y277334D01* +X851102Y277298D01* +X851011Y277265D01* +X850918Y277237D01* +X850825Y277212D01* +X850731Y277190D01* +X850636Y277173D01* +X850540Y277159D01* +X850444Y277150D01* +X850348Y277144D01* +X850251Y277142D01* +X847852Y277142D01* +X850731Y277142D02* +X852650Y273304D01* +X856911Y275223D02* +X858830Y281940D01* +X856911Y275223D02* +X861709Y275223D01* +X860270Y277142D02* +X860270Y273304D01* +X866055Y278102D02* +X868934Y278102D01* +X869020Y278100D01* +X869106Y278094D01* +X869192Y278085D01* +X869277Y278071D01* +X869361Y278054D01* +X869445Y278033D01* +X869527Y278008D01* +X869608Y277980D01* +X869688Y277948D01* +X869767Y277912D01* +X869843Y277873D01* +X869918Y277830D01* +X869991Y277785D01* +X870062Y277736D01* +X870130Y277683D01* +X870197Y277628D01* +X870260Y277570D01* +X870321Y277509D01* +X870379Y277446D01* +X870434Y277379D01* +X870487Y277311D01* +X870536Y277240D01* +X870581Y277167D01* +X870624Y277092D01* +X870663Y277016D01* +X870699Y276937D01* +X870731Y276857D01* +X870759Y276776D01* +X870784Y276694D01* +X870805Y276610D01* +X870822Y276526D01* +X870836Y276441D01* +X870845Y276355D01* +X870851Y276269D01* +X870853Y276183D01* +X870853Y275703D01* +X870851Y275606D01* +X870845Y275510D01* +X870836Y275414D01* +X870822Y275318D01* +X870805Y275223D01* +X870783Y275129D01* +X870758Y275036D01* +X870730Y274943D01* +X870697Y274852D01* +X870661Y274763D01* +X870621Y274675D01* +X870578Y274588D01* +X870532Y274504D01* +X870482Y274421D01* +X870428Y274340D01* +X870372Y274262D01* +X870312Y274186D01* +X870250Y274112D01* +X870184Y274041D01* +X870116Y273973D01* +X870045Y273907D01* +X869971Y273845D01* +X869895Y273785D01* +X869817Y273729D01* +X869736Y273675D01* +X869654Y273625D01* +X869569Y273579D01* +X869482Y273536D01* +X869394Y273496D01* +X869305Y273460D01* +X869214Y273427D01* +X869121Y273399D01* +X869028Y273374D01* +X868934Y273352D01* +X868839Y273335D01* +X868743Y273321D01* +X868647Y273312D01* +X868551Y273306D01* +X868454Y273304D01* +X868357Y273306D01* +X868261Y273312D01* +X868165Y273321D01* +X868069Y273335D01* +X867974Y273352D01* +X867880Y273374D01* +X867787Y273399D01* +X867694Y273427D01* +X867603Y273460D01* +X867514Y273496D01* +X867426Y273536D01* +X867339Y273579D01* +X867255Y273625D01* +X867172Y273675D01* +X867091Y273729D01* +X867013Y273785D01* +X866937Y273845D01* +X866863Y273907D01* +X866792Y273973D01* +X866724Y274041D01* +X866658Y274112D01* +X866596Y274186D01* +X866536Y274262D01* +X866480Y274340D01* +X866426Y274421D01* +X866376Y274504D01* +X866330Y274588D01* +X866287Y274675D01* +X866247Y274763D01* +X866211Y274852D01* +X866178Y274943D01* +X866150Y275036D01* +X866125Y275129D01* +X866103Y275223D01* +X866086Y275318D01* +X866072Y275414D01* +X866063Y275510D01* +X866057Y275606D01* +X866055Y275703D01* +X866055Y278102D01* +X866056Y278102D02* +X866058Y278225D01* +X866064Y278348D01* +X866074Y278471D01* +X866088Y278593D01* +X866105Y278715D01* +X866127Y278836D01* +X866152Y278956D01* +X866182Y279076D01* +X866215Y279194D01* +X866252Y279311D01* +X866292Y279428D01* +X866336Y279542D01* +X866384Y279656D01* +X866436Y279767D01* +X866491Y279877D01* +X866550Y279985D01* +X866612Y280092D01* +X866677Y280196D01* +X866746Y280298D01* +X866818Y280398D01* +X866893Y280495D01* +X866972Y280590D01* +X867053Y280682D01* +X867137Y280772D01* +X867224Y280859D01* +X867314Y280943D01* +X867406Y281024D01* +X867501Y281103D01* +X867598Y281178D01* +X867698Y281250D01* +X867800Y281319D01* +X867904Y281384D01* +X868011Y281446D01* +X868119Y281505D01* +X868229Y281560D01* +X868340Y281612D01* +X868454Y281659D01* +X868568Y281704D01* +X868685Y281744D01* +X868802Y281781D01* +X868920Y281814D01* +X869040Y281844D01* +X869160Y281869D01* +X869281Y281891D01* +X869403Y281908D01* +X869525Y281922D01* +X869648Y281932D01* +X869771Y281938D01* +X869894Y281940D01* +D18* +X502920Y104140D03* +D14* +X497191Y94488D02* +X497191Y85852D01* +X497191Y94488D02* +X499590Y94488D01* +X499687Y94486D01* +X499783Y94480D01* +X499879Y94471D01* +X499975Y94457D01* +X500070Y94440D01* +X500164Y94418D01* +X500257Y94393D01* +X500350Y94365D01* +X500441Y94332D01* +X500530Y94296D01* +X500618Y94256D01* +X500705Y94213D01* +X500790Y94167D01* +X500872Y94117D01* +X500953Y94063D01* +X501031Y94007D01* +X501107Y93947D01* +X501181Y93885D01* +X501252Y93819D01* +X501320Y93751D01* +X501386Y93680D01* +X501448Y93606D01* +X501508Y93530D01* +X501564Y93452D01* +X501618Y93371D01* +X501668Y93288D01* +X501714Y93204D01* +X501757Y93117D01* +X501797Y93029D01* +X501833Y92940D01* +X501866Y92849D01* +X501894Y92756D01* +X501919Y92663D01* +X501941Y92569D01* +X501958Y92474D01* +X501972Y92378D01* +X501981Y92282D01* +X501987Y92186D01* +X501989Y92089D01* +X501987Y91992D01* +X501981Y91896D01* +X501972Y91800D01* +X501958Y91704D01* +X501941Y91609D01* +X501919Y91515D01* +X501894Y91422D01* +X501866Y91329D01* +X501833Y91238D01* +X501797Y91149D01* +X501757Y91061D01* +X501714Y90974D01* +X501668Y90889D01* +X501618Y90807D01* +X501564Y90726D01* +X501508Y90648D01* +X501448Y90572D01* +X501386Y90498D01* +X501320Y90427D01* +X501252Y90359D01* +X501181Y90293D01* +X501107Y90231D01* +X501031Y90171D01* +X500953Y90115D01* +X500872Y90061D01* +X500790Y90011D01* +X500705Y89965D01* +X500618Y89922D01* +X500530Y89882D01* +X500441Y89846D01* +X500350Y89813D01* +X500257Y89785D01* +X500164Y89760D01* +X500070Y89738D01* +X499975Y89721D01* +X499879Y89707D01* +X499783Y89698D01* +X499687Y89692D01* +X499590Y89690D01* +X497191Y89690D01* +X500070Y89690D02* +X501989Y85852D01* +X506250Y87771D02* +X508169Y94488D01* +X506250Y87771D02* +X511048Y87771D01* +X509609Y89690D02* +X509609Y85852D01* +D11* +X323180Y292200D02* +X271180Y292200D01* +X323180Y292200D02* +X323180Y368200D01* +D19* +X322930Y368200D02* +X322930Y368450D01* +D11* +X322930Y368200D02* +X277530Y368200D01* +X271180Y361850D01* +X271180Y292200D01* +D28* +X266700Y373380D03* +D24* +X297180Y330200D03* +D19* +X305885Y287655D02* +X305885Y281234D01* +X305887Y281136D01* +X305893Y281038D01* +X305903Y280940D01* +X305916Y280843D01* +X305934Y280746D01* +X305955Y280650D01* +X305980Y280556D01* +X306009Y280462D01* +X306041Y280369D01* +X306078Y280278D01* +X306117Y280188D01* +X306161Y280100D01* +X306208Y280014D01* +X306258Y279929D01* +X306311Y279847D01* +X306368Y279767D01* +X306428Y279689D01* +X306491Y279614D01* +X306557Y279541D01* +X306626Y279471D01* +X306697Y279404D01* +X306771Y279339D01* +X306848Y279278D01* +X306927Y279219D01* +X307008Y279164D01* +X307091Y279112D01* +X307177Y279064D01* +X307264Y279019D01* +X307353Y278977D01* +X307443Y278939D01* +X307535Y278905D01* +X307628Y278874D01* +X307723Y278847D01* +X307818Y278824D01* +X307915Y278804D01* +X308011Y278789D01* +X308109Y278777D01* +X308207Y278769D01* +X308305Y278765D01* +X308403Y278765D01* +X308501Y278769D01* +X308599Y278777D01* +X308697Y278789D01* +X308793Y278804D01* +X308890Y278824D01* +X308985Y278847D01* +X309080Y278874D01* +X309173Y278905D01* +X309265Y278939D01* +X309355Y278977D01* +X309444Y279019D01* +X309531Y279064D01* +X309617Y279112D01* +X309700Y279164D01* +X309781Y279219D01* +X309860Y279278D01* +X309937Y279339D01* +X310011Y279404D01* +X310082Y279471D01* +X310151Y279541D01* +X310217Y279614D01* +X310280Y279689D01* +X310340Y279767D01* +X310397Y279847D01* +X310450Y279929D01* +X310500Y280014D01* +X310547Y280100D01* +X310591Y280188D01* +X310630Y280278D01* +X310667Y280369D01* +X310699Y280462D01* +X310728Y280556D01* +X310753Y280650D01* +X310774Y280746D01* +X310792Y280843D01* +X310805Y280940D01* +X310815Y281038D01* +X310821Y281136D01* +X310823Y281234D01* +X310824Y281234D02* +X310824Y287655D01* +X315334Y278765D02* +X317803Y278765D01* +X317901Y278767D01* +X317999Y278773D01* +X318097Y278783D01* +X318194Y278796D01* +X318291Y278814D01* +X318387Y278835D01* +X318481Y278860D01* +X318575Y278889D01* +X318668Y278921D01* +X318759Y278958D01* +X318849Y278997D01* +X318937Y279041D01* +X319023Y279088D01* +X319108Y279138D01* +X319190Y279191D01* +X319270Y279248D01* +X319348Y279308D01* +X319423Y279371D01* +X319496Y279437D01* +X319566Y279506D01* +X319633Y279577D01* +X319698Y279651D01* +X319759Y279728D01* +X319818Y279807D01* +X319873Y279888D01* +X319925Y279971D01* +X319973Y280057D01* +X320018Y280144D01* +X320060Y280233D01* +X320098Y280323D01* +X320132Y280415D01* +X320163Y280508D01* +X320190Y280603D01* +X320213Y280698D01* +X320233Y280795D01* +X320248Y280891D01* +X320260Y280989D01* +X320268Y281087D01* +X320272Y281185D01* +X320272Y281283D01* +X320268Y281381D01* +X320260Y281479D01* +X320248Y281577D01* +X320233Y281673D01* +X320213Y281770D01* +X320190Y281865D01* +X320163Y281960D01* +X320132Y282053D01* +X320098Y282145D01* +X320060Y282235D01* +X320018Y282324D01* +X319973Y282411D01* +X319925Y282497D01* +X319873Y282580D01* +X319818Y282661D01* +X319759Y282740D01* +X319698Y282817D01* +X319633Y282891D01* +X319566Y282962D01* +X319496Y283031D01* +X319423Y283097D01* +X319348Y283160D01* +X319270Y283220D01* +X319190Y283277D01* +X319108Y283330D01* +X319023Y283380D01* +X318937Y283427D01* +X318849Y283471D01* +X318759Y283510D01* +X318668Y283547D01* +X318575Y283579D01* +X318481Y283608D01* +X318387Y283633D01* +X318291Y283654D01* +X318194Y283672D01* +X318097Y283685D01* +X317999Y283695D01* +X317901Y283701D01* +X317803Y283703D01* +X318297Y287655D02* +X315334Y287655D01* +X318297Y287655D02* +X318384Y287653D01* +X318472Y287647D01* +X318559Y287638D01* +X318645Y287624D01* +X318731Y287607D01* +X318815Y287586D01* +X318899Y287561D01* +X318982Y287532D01* +X319063Y287500D01* +X319143Y287465D01* +X319221Y287426D01* +X319298Y287383D01* +X319372Y287337D01* +X319444Y287288D01* +X319514Y287236D01* +X319582Y287180D01* +X319647Y287122D01* +X319710Y287061D01* +X319769Y286997D01* +X319826Y286930D01* +X319880Y286862D01* +X319931Y286790D01* +X319978Y286717D01* +X320023Y286642D01* +X320064Y286564D01* +X320101Y286485D01* +X320135Y286405D01* +X320165Y286323D01* +X320192Y286240D01* +X320215Y286155D01* +X320234Y286070D01* +X320249Y285984D01* +X320261Y285897D01* +X320269Y285810D01* +X320273Y285723D01* +X320273Y285635D01* +X320269Y285548D01* +X320261Y285461D01* +X320249Y285374D01* +X320234Y285288D01* +X320215Y285203D01* +X320192Y285118D01* +X320165Y285035D01* +X320135Y284953D01* +X320101Y284873D01* +X320064Y284794D01* +X320023Y284716D01* +X319978Y284641D01* +X319931Y284568D01* +X319880Y284496D01* +X319826Y284428D01* +X319769Y284361D01* +X319710Y284297D01* +X319647Y284236D01* +X319582Y284178D01* +X319514Y284122D01* +X319444Y284070D01* +X319372Y284021D01* +X319298Y283975D01* +X319221Y283932D01* +X319143Y283893D01* +X319063Y283858D01* +X318982Y283826D01* +X318899Y283797D01* +X318815Y283772D01* +X318731Y283751D01* +X318645Y283734D01* +X318559Y283720D01* +X318472Y283711D01* +X318384Y283705D01* +X318297Y283703D01* +X318297Y283704D02* +X316322Y283704D01* +D17* +X403860Y360680D03* +D14* +X418592Y358902D02* +X418592Y367538D01* +X420991Y367538D01* +X421088Y367536D01* +X421184Y367530D01* +X421280Y367521D01* +X421376Y367507D01* +X421471Y367490D01* +X421565Y367468D01* +X421658Y367443D01* +X421751Y367415D01* +X421842Y367382D01* +X421931Y367346D01* +X422019Y367306D01* +X422106Y367263D01* +X422191Y367217D01* +X422273Y367167D01* +X422354Y367113D01* +X422432Y367057D01* +X422508Y366997D01* +X422582Y366935D01* +X422653Y366869D01* +X422721Y366801D01* +X422787Y366730D01* +X422849Y366656D01* +X422909Y366580D01* +X422965Y366502D01* +X423019Y366421D01* +X423069Y366339D01* +X423115Y366254D01* +X423158Y366167D01* +X423198Y366079D01* +X423234Y365990D01* +X423267Y365899D01* +X423295Y365806D01* +X423320Y365713D01* +X423342Y365619D01* +X423359Y365524D01* +X423373Y365428D01* +X423382Y365332D01* +X423388Y365236D01* +X423390Y365139D01* +X423388Y365042D01* +X423382Y364946D01* +X423373Y364850D01* +X423359Y364754D01* +X423342Y364659D01* +X423320Y364565D01* +X423295Y364472D01* +X423267Y364379D01* +X423234Y364288D01* +X423198Y364199D01* +X423158Y364111D01* +X423115Y364024D01* +X423069Y363940D01* +X423019Y363857D01* +X422965Y363776D01* +X422909Y363698D01* +X422849Y363622D01* +X422787Y363548D01* +X422721Y363477D01* +X422653Y363409D01* +X422582Y363343D01* +X422508Y363281D01* +X422432Y363221D01* +X422354Y363165D01* +X422273Y363111D01* +X422191Y363061D01* +X422106Y363015D01* +X422019Y362972D01* +X421931Y362932D01* +X421842Y362896D01* +X421751Y362863D01* +X421658Y362835D01* +X421565Y362810D01* +X421471Y362788D01* +X421376Y362771D01* +X421280Y362757D01* +X421184Y362748D01* +X421088Y362742D01* +X420991Y362740D01* +X418592Y362740D01* +X421471Y362740D02* +X423390Y358902D01* +X427651Y358902D02* +X430050Y358902D01* +X430147Y358904D01* +X430243Y358910D01* +X430339Y358919D01* +X430435Y358933D01* +X430530Y358950D01* +X430624Y358972D01* +X430717Y358997D01* +X430810Y359025D01* +X430901Y359058D01* +X430990Y359094D01* +X431078Y359134D01* +X431165Y359177D01* +X431250Y359223D01* +X431332Y359273D01* +X431413Y359327D01* +X431491Y359383D01* +X431567Y359443D01* +X431641Y359505D01* +X431712Y359571D01* +X431780Y359639D01* +X431846Y359710D01* +X431908Y359784D01* +X431968Y359860D01* +X432024Y359938D01* +X432078Y360019D01* +X432128Y360102D01* +X432174Y360186D01* +X432217Y360273D01* +X432257Y360361D01* +X432293Y360450D01* +X432326Y360541D01* +X432354Y360634D01* +X432379Y360727D01* +X432401Y360821D01* +X432418Y360916D01* +X432432Y361012D01* +X432441Y361108D01* +X432447Y361204D01* +X432449Y361301D01* +X432447Y361398D01* +X432441Y361494D01* +X432432Y361590D01* +X432418Y361686D01* +X432401Y361781D01* +X432379Y361875D01* +X432354Y361968D01* +X432326Y362061D01* +X432293Y362152D01* +X432257Y362241D01* +X432217Y362329D01* +X432174Y362416D01* +X432128Y362501D01* +X432078Y362583D01* +X432024Y362664D01* +X431968Y362742D01* +X431908Y362818D01* +X431846Y362892D01* +X431780Y362963D01* +X431712Y363031D01* +X431641Y363097D01* +X431567Y363159D01* +X431491Y363219D01* +X431413Y363275D01* +X431332Y363329D01* +X431250Y363379D01* +X431165Y363425D01* +X431078Y363468D01* +X430990Y363508D01* +X430901Y363544D01* +X430810Y363577D01* +X430717Y363605D01* +X430624Y363630D01* +X430530Y363652D01* +X430435Y363669D01* +X430339Y363683D01* +X430243Y363692D01* +X430147Y363698D01* +X430050Y363700D01* +X430530Y367538D02* +X427651Y367538D01* +X430530Y367538D02* +X430616Y367536D01* +X430702Y367530D01* +X430788Y367521D01* +X430873Y367507D01* +X430957Y367490D01* +X431041Y367469D01* +X431123Y367444D01* +X431204Y367416D01* +X431284Y367384D01* +X431363Y367348D01* +X431439Y367309D01* +X431514Y367266D01* +X431587Y367221D01* +X431658Y367172D01* +X431726Y367119D01* +X431793Y367064D01* +X431856Y367006D01* +X431917Y366945D01* +X431975Y366882D01* +X432030Y366815D01* +X432083Y366747D01* +X432132Y366676D01* +X432177Y366603D01* +X432220Y366528D01* +X432259Y366452D01* +X432295Y366373D01* +X432327Y366293D01* +X432355Y366212D01* +X432380Y366130D01* +X432401Y366046D01* +X432418Y365962D01* +X432432Y365877D01* +X432441Y365791D01* +X432447Y365705D01* +X432449Y365619D01* +X432447Y365533D01* +X432441Y365447D01* +X432432Y365361D01* +X432418Y365276D01* +X432401Y365192D01* +X432380Y365108D01* +X432355Y365026D01* +X432327Y364945D01* +X432295Y364865D01* +X432259Y364786D01* +X432220Y364710D01* +X432177Y364635D01* +X432132Y364562D01* +X432083Y364491D01* +X432030Y364423D01* +X431975Y364356D01* +X431917Y364293D01* +X431856Y364232D01* +X431793Y364174D01* +X431726Y364119D01* +X431658Y364066D01* +X431587Y364017D01* +X431514Y363972D01* +X431439Y363929D01* +X431363Y363890D01* +X431284Y363854D01* +X431204Y363822D01* +X431123Y363794D01* +X431041Y363769D01* +X430957Y363748D01* +X430873Y363731D01* +X430788Y363717D01* +X430702Y363708D01* +X430616Y363702D01* +X430530Y363700D01* +X428611Y363700D01* +D17* +X403860Y350520D03* +D14* +X390652Y342138D02* +X390652Y333502D01* +X390652Y342138D02* +X393051Y342138D01* +X393148Y342136D01* +X393244Y342130D01* +X393340Y342121D01* +X393436Y342107D01* +X393531Y342090D01* +X393625Y342068D01* +X393718Y342043D01* +X393811Y342015D01* +X393902Y341982D01* +X393991Y341946D01* +X394079Y341906D01* +X394166Y341863D01* +X394251Y341817D01* +X394333Y341767D01* +X394414Y341713D01* +X394492Y341657D01* +X394568Y341597D01* +X394642Y341535D01* +X394713Y341469D01* +X394781Y341401D01* +X394847Y341330D01* +X394909Y341256D01* +X394969Y341180D01* +X395025Y341102D01* +X395079Y341021D01* +X395129Y340939D01* +X395175Y340854D01* +X395218Y340767D01* +X395258Y340679D01* +X395294Y340590D01* +X395327Y340499D01* +X395355Y340406D01* +X395380Y340313D01* +X395402Y340219D01* +X395419Y340124D01* +X395433Y340028D01* +X395442Y339932D01* +X395448Y339836D01* +X395450Y339739D01* +X395448Y339642D01* +X395442Y339546D01* +X395433Y339450D01* +X395419Y339354D01* +X395402Y339259D01* +X395380Y339165D01* +X395355Y339072D01* +X395327Y338979D01* +X395294Y338888D01* +X395258Y338799D01* +X395218Y338711D01* +X395175Y338624D01* +X395129Y338540D01* +X395079Y338457D01* +X395025Y338376D01* +X394969Y338298D01* +X394909Y338222D01* +X394847Y338148D01* +X394781Y338077D01* +X394713Y338009D01* +X394642Y337943D01* +X394568Y337881D01* +X394492Y337821D01* +X394414Y337765D01* +X394333Y337711D01* +X394251Y337661D01* +X394166Y337615D01* +X394079Y337572D01* +X393991Y337532D01* +X393902Y337496D01* +X393811Y337463D01* +X393718Y337435D01* +X393625Y337410D01* +X393531Y337388D01* +X393436Y337371D01* +X393340Y337357D01* +X393244Y337348D01* +X393148Y337342D01* +X393051Y337340D01* +X390652Y337340D01* +X393531Y337340D02* +X395450Y333502D01* +X399711Y335421D02* +X401630Y342138D01* +X399711Y335421D02* +X404509Y335421D01* +X403070Y337340D02* +X403070Y333502D01* +X408855Y341178D02* +X408855Y342138D01* +X413653Y342138D01* +X411254Y333502D01* +D19* +X216360Y320340D02* +X210360Y320340D01* +X230360Y308340D02* +X230360Y306340D01* +X216360Y294340D02* +X210360Y294340D01* +X196360Y306340D02* +X196360Y308340D01* +D29* +X213360Y307340D03* +D19* +X192532Y297180D02* +X192532Y290830D01* +X198628Y290830D01* +D14* +X206282Y325642D02* +X212039Y334278D01* +X206282Y334278D02* +X212039Y325642D01* +X218545Y334278D02* +X218637Y334276D01* +X218728Y334270D01* +X218819Y334261D01* +X218910Y334247D01* +X219000Y334230D01* +X219089Y334208D01* +X219177Y334183D01* +X219264Y334155D01* +X219350Y334122D01* +X219434Y334086D01* +X219517Y334047D01* +X219598Y334004D01* +X219677Y333957D01* +X219754Y333908D01* +X219829Y333855D01* +X219901Y333799D01* +X219971Y333740D01* +X220039Y333678D01* +X220104Y333613D01* +X220166Y333545D01* +X220225Y333475D01* +X220281Y333403D01* +X220334Y333328D01* +X220383Y333251D01* +X220430Y333172D01* +X220473Y333091D01* +X220512Y333008D01* +X220548Y332924D01* +X220581Y332838D01* +X220609Y332751D01* +X220634Y332663D01* +X220656Y332574D01* +X220673Y332484D01* +X220687Y332393D01* +X220696Y332302D01* +X220702Y332211D01* +X220704Y332119D01* +X218545Y334278D02* +X218442Y334276D01* +X218340Y334270D01* +X218238Y334261D01* +X218136Y334248D01* +X218035Y334231D01* +X217934Y334210D01* +X217835Y334186D01* +X217736Y334157D01* +X217639Y334126D01* +X217542Y334090D01* +X217447Y334052D01* +X217354Y334009D01* +X217262Y333963D01* +X217172Y333914D01* +X217084Y333862D01* +X216997Y333806D01* +X216913Y333747D01* +X216832Y333686D01* +X216752Y333621D01* +X216675Y333553D01* +X216600Y333482D01* +X216529Y333409D01* +X216460Y333333D01* +X216393Y333255D01* +X216330Y333174D01* +X216270Y333091D01* +X216213Y333006D01* +X216159Y332919D01* +X216108Y332829D01* +X216061Y332738D01* +X216017Y332646D01* +X215976Y332551D01* +X215939Y332456D01* +X215906Y332359D01* +X219983Y330440D02* +X220050Y330506D01* +X220114Y330575D01* +X220175Y330646D01* +X220233Y330720D01* +X220288Y330796D01* +X220340Y330874D01* +X220389Y330954D01* +X220435Y331036D01* +X220477Y331120D01* +X220516Y331206D01* +X220551Y331293D01* +X220582Y331381D01* +X220610Y331471D01* +X220635Y331561D01* +X220656Y331653D01* +X220673Y331745D01* +X220686Y331838D01* +X220695Y331931D01* +X220701Y332025D01* +X220703Y332119D01* +X219984Y330440D02* +X215906Y325642D01* +X220704Y325642D01* +D13* +X187960Y307340D03* +D14* +X192278Y318911D02* +X192278Y320830D01* +X192278Y318911D02* +X192276Y318825D01* +X192270Y318739D01* +X192261Y318653D01* +X192247Y318568D01* +X192230Y318484D01* +X192209Y318400D01* +X192184Y318318D01* +X192156Y318237D01* +X192124Y318157D01* +X192088Y318078D01* +X192049Y318002D01* +X192006Y317927D01* +X191961Y317854D01* +X191912Y317783D01* +X191859Y317715D01* +X191804Y317648D01* +X191746Y317585D01* +X191685Y317524D01* +X191622Y317466D01* +X191555Y317411D01* +X191487Y317359D01* +X191416Y317309D01* +X191343Y317264D01* +X191268Y317221D01* +X191192Y317182D01* +X191113Y317146D01* +X191033Y317114D01* +X190952Y317086D01* +X190870Y317061D01* +X190786Y317040D01* +X190702Y317023D01* +X190617Y317009D01* +X190531Y317000D01* +X190445Y316994D01* +X190359Y316992D01* +X185561Y316992D01* +X185475Y316994D01* +X185389Y317000D01* +X185303Y317009D01* +X185218Y317023D01* +X185134Y317040D01* +X185050Y317061D01* +X184968Y317086D01* +X184887Y317114D01* +X184807Y317146D01* +X184728Y317182D01* +X184652Y317221D01* +X184577Y317264D01* +X184504Y317309D01* +X184433Y317358D01* +X184365Y317411D01* +X184298Y317466D01* +X184235Y317524D01* +X184174Y317585D01* +X184116Y317648D01* +X184061Y317715D01* +X184009Y317783D01* +X183959Y317854D01* +X183914Y317927D01* +X183871Y318002D01* +X183832Y318078D01* +X183796Y318157D01* +X183764Y318237D01* +X183736Y318318D01* +X183711Y318400D01* +X183690Y318484D01* +X183673Y318568D01* +X183659Y318653D01* +X183650Y318739D01* +X183644Y318825D01* +X183642Y318911D01* +X183642Y320830D01* +X192278Y324650D02* +X192278Y327049D01* +X192276Y327146D01* +X192270Y327242D01* +X192261Y327338D01* +X192247Y327434D01* +X192230Y327529D01* +X192208Y327623D01* +X192183Y327716D01* +X192155Y327809D01* +X192122Y327900D01* +X192086Y327989D01* +X192046Y328077D01* +X192003Y328164D01* +X191957Y328249D01* +X191907Y328331D01* +X191853Y328412D01* +X191797Y328490D01* +X191737Y328566D01* +X191675Y328640D01* +X191609Y328711D01* +X191541Y328779D01* +X191470Y328845D01* +X191396Y328907D01* +X191320Y328967D01* +X191242Y329023D01* +X191161Y329077D01* +X191079Y329127D01* +X190994Y329173D01* +X190907Y329216D01* +X190819Y329256D01* +X190730Y329292D01* +X190639Y329325D01* +X190546Y329353D01* +X190453Y329378D01* +X190359Y329400D01* +X190264Y329417D01* +X190168Y329431D01* +X190072Y329440D01* +X189976Y329446D01* +X189879Y329448D01* +X189782Y329446D01* +X189686Y329440D01* +X189590Y329431D01* +X189494Y329417D01* +X189399Y329400D01* +X189305Y329378D01* +X189212Y329353D01* +X189119Y329325D01* +X189028Y329292D01* +X188939Y329256D01* +X188851Y329216D01* +X188764Y329173D01* +X188680Y329127D01* +X188597Y329077D01* +X188516Y329023D01* +X188438Y328967D01* +X188362Y328907D01* +X188288Y328845D01* +X188217Y328779D01* +X188149Y328711D01* +X188083Y328640D01* +X188021Y328566D01* +X187961Y328490D01* +X187905Y328412D01* +X187851Y328331D01* +X187801Y328249D01* +X187755Y328164D01* +X187712Y328077D01* +X187672Y327989D01* +X187636Y327900D01* +X187603Y327809D01* +X187575Y327716D01* +X187550Y327623D01* +X187528Y327529D01* +X187511Y327434D01* +X187497Y327338D01* +X187488Y327242D01* +X187482Y327146D01* +X187480Y327049D01* +X183642Y327529D02* +X183642Y324650D01* +X183642Y327529D02* +X183644Y327615D01* +X183650Y327701D01* +X183659Y327787D01* +X183673Y327872D01* +X183690Y327956D01* +X183711Y328040D01* +X183736Y328122D01* +X183764Y328203D01* +X183796Y328283D01* +X183832Y328362D01* +X183871Y328438D01* +X183914Y328513D01* +X183959Y328586D01* +X184008Y328657D01* +X184061Y328725D01* +X184116Y328792D01* +X184174Y328855D01* +X184235Y328916D01* +X184298Y328974D01* +X184365Y329029D01* +X184433Y329082D01* +X184504Y329131D01* +X184577Y329176D01* +X184652Y329219D01* +X184728Y329258D01* +X184807Y329294D01* +X184887Y329326D01* +X184968Y329354D01* +X185050Y329379D01* +X185134Y329400D01* +X185218Y329417D01* +X185303Y329431D01* +X185389Y329440D01* +X185475Y329446D01* +X185561Y329448D01* +X185647Y329446D01* +X185733Y329440D01* +X185819Y329431D01* +X185904Y329417D01* +X185988Y329400D01* +X186072Y329379D01* +X186154Y329354D01* +X186235Y329326D01* +X186315Y329294D01* +X186394Y329258D01* +X186470Y329219D01* +X186545Y329176D01* +X186618Y329131D01* +X186689Y329082D01* +X186757Y329029D01* +X186824Y328974D01* +X186887Y328916D01* +X186948Y328855D01* +X187006Y328792D01* +X187061Y328725D01* +X187114Y328657D01* +X187163Y328586D01* +X187208Y328513D01* +X187251Y328438D01* +X187290Y328362D01* +X187326Y328283D01* +X187358Y328203D01* +X187386Y328122D01* +X187411Y328040D01* +X187432Y327956D01* +X187449Y327872D01* +X187463Y327787D01* +X187472Y327701D01* +X187478Y327615D01* +X187480Y327529D01* +X187480Y325610D01* +X187960Y333794D02* +X187790Y333796D01* +X187620Y333802D01* +X187451Y333812D01* +X187281Y333826D01* +X187112Y333845D01* +X186944Y333867D01* +X186776Y333893D01* +X186609Y333923D01* +X186443Y333958D01* +X186277Y333996D01* +X186112Y334038D01* +X185949Y334084D01* +X185787Y334134D01* +X185625Y334188D01* +X185466Y334245D01* +X185307Y334307D01* +X185150Y334372D01* +X184995Y334441D01* +X184841Y334514D01* +X184765Y334542D01* +X184690Y334574D01* +X184616Y334609D01* +X184544Y334647D01* +X184474Y334689D01* +X184406Y334734D01* +X184340Y334782D01* +X184276Y334833D01* +X184215Y334887D01* +X184156Y334943D01* +X184100Y335003D01* +X184047Y335064D01* +X183997Y335128D01* +X183949Y335195D01* +X183905Y335263D01* +X183864Y335334D01* +X183826Y335406D01* +X183792Y335480D01* +X183761Y335555D01* +X183733Y335632D01* +X183709Y335710D01* +X183689Y335789D01* +X183672Y335869D01* +X183659Y335949D01* +X183649Y336030D01* +X183644Y336111D01* +X183642Y336193D01* +X183644Y336275D01* +X183649Y336356D01* +X183659Y336437D01* +X183672Y336517D01* +X183689Y336597D01* +X183709Y336676D01* +X183733Y336754D01* +X183761Y336831D01* +X183792Y336906D01* +X183826Y336980D01* +X183864Y337052D01* +X183905Y337123D01* +X183949Y337191D01* +X183997Y337258D01* +X184047Y337322D01* +X184100Y337383D01* +X184156Y337443D01* +X184215Y337499D01* +X184276Y337553D01* +X184340Y337604D01* +X184406Y337652D01* +X184474Y337697D01* +X184544Y337739D01* +X184616Y337777D01* +X184690Y337812D01* +X184765Y337844D01* +X184841Y337872D01* +X184995Y337945D01* +X185150Y338014D01* +X185307Y338079D01* +X185466Y338141D01* +X185625Y338198D01* +X185787Y338252D01* +X185949Y338302D01* +X186112Y338348D01* +X186277Y338390D01* +X186443Y338428D01* +X186609Y338463D01* +X186776Y338493D01* +X186944Y338519D01* +X187112Y338541D01* +X187281Y338560D01* +X187451Y338574D01* +X187620Y338584D01* +X187790Y338590D01* +X187960Y338592D01* +X187960Y333794D02* +X188130Y333796D01* +X188300Y333802D01* +X188469Y333812D01* +X188639Y333826D01* +X188808Y333845D01* +X188976Y333867D01* +X189144Y333893D01* +X189311Y333923D01* +X189477Y333958D01* +X189643Y333996D01* +X189808Y334038D01* +X189971Y334084D01* +X190133Y334134D01* +X190295Y334188D01* +X190454Y334245D01* +X190613Y334307D01* +X190770Y334372D01* +X190925Y334441D01* +X191079Y334514D01* +X191155Y334542D01* +X191230Y334574D01* +X191304Y334609D01* +X191376Y334647D01* +X191446Y334689D01* +X191514Y334734D01* +X191580Y334782D01* +X191644Y334833D01* +X191705Y334887D01* +X191764Y334943D01* +X191820Y335003D01* +X191873Y335064D01* +X191923Y335128D01* +X191971Y335195D01* +X192015Y335263D01* +X192056Y335334D01* +X192094Y335406D01* +X192128Y335480D01* +X192159Y335555D01* +X192187Y335632D01* +X192211Y335710D01* +X192231Y335789D01* +X192248Y335869D01* +X192261Y335949D01* +X192271Y336030D01* +X192276Y336111D01* +X192278Y336193D01* +X191079Y337872D02* +X190925Y337945D01* +X190770Y338014D01* +X190613Y338079D01* +X190454Y338141D01* +X190295Y338198D01* +X190133Y338252D01* +X189971Y338302D01* +X189808Y338348D01* +X189643Y338390D01* +X189477Y338428D01* +X189311Y338463D01* +X189144Y338493D01* +X188976Y338519D01* +X188808Y338541D01* +X188639Y338560D01* +X188469Y338574D01* +X188300Y338584D01* +X188130Y338590D01* +X187960Y338592D01* +X191079Y337872D02* +X191155Y337844D01* +X191230Y337812D01* +X191304Y337777D01* +X191376Y337739D01* +X191446Y337697D01* +X191514Y337652D01* +X191580Y337604D01* +X191644Y337553D01* +X191705Y337499D01* +X191764Y337443D01* +X191820Y337383D01* +X191873Y337322D01* +X191923Y337258D01* +X191971Y337191D01* +X192015Y337123D01* +X192056Y337052D01* +X192094Y336980D01* +X192128Y336906D01* +X192159Y336831D01* +X192187Y336754D01* +X192211Y336676D01* +X192231Y336597D01* +X192248Y336517D01* +X192261Y336437D01* +X192271Y336356D01* +X192276Y336275D01* +X192278Y336193D01* +X190359Y334274D02* +X185561Y338112D01* +D13* +X238760Y307340D03* +D14* +X243078Y277386D02* +X243078Y275467D01* +X243076Y275381D01* +X243070Y275295D01* +X243061Y275209D01* +X243047Y275124D01* +X243030Y275040D01* +X243009Y274956D01* +X242984Y274874D01* +X242956Y274793D01* +X242924Y274713D01* +X242888Y274634D01* +X242849Y274558D01* +X242806Y274483D01* +X242761Y274410D01* +X242712Y274339D01* +X242659Y274271D01* +X242604Y274204D01* +X242546Y274141D01* +X242485Y274080D01* +X242422Y274022D01* +X242355Y273967D01* +X242287Y273915D01* +X242216Y273865D01* +X242143Y273820D01* +X242068Y273777D01* +X241992Y273738D01* +X241913Y273702D01* +X241833Y273670D01* +X241752Y273642D01* +X241670Y273617D01* +X241586Y273596D01* +X241502Y273579D01* +X241417Y273565D01* +X241331Y273556D01* +X241245Y273550D01* +X241159Y273548D01* +X236361Y273548D01* +X236275Y273550D01* +X236189Y273556D01* +X236103Y273565D01* +X236018Y273579D01* +X235934Y273596D01* +X235850Y273617D01* +X235768Y273642D01* +X235687Y273670D01* +X235607Y273702D01* +X235528Y273738D01* +X235452Y273777D01* +X235377Y273820D01* +X235304Y273865D01* +X235233Y273914D01* +X235165Y273967D01* +X235098Y274022D01* +X235035Y274080D01* +X234974Y274141D01* +X234916Y274204D01* +X234861Y274271D01* +X234809Y274339D01* +X234759Y274410D01* +X234714Y274483D01* +X234671Y274558D01* +X234632Y274634D01* +X234596Y274713D01* +X234564Y274793D01* +X234536Y274874D01* +X234511Y274956D01* +X234490Y275040D01* +X234473Y275124D01* +X234459Y275209D01* +X234450Y275295D01* +X234444Y275381D01* +X234442Y275467D01* +X234442Y277386D01* +X243078Y281206D02* +X243078Y283605D01* +X243076Y283702D01* +X243070Y283798D01* +X243061Y283894D01* +X243047Y283990D01* +X243030Y284085D01* +X243008Y284179D01* +X242983Y284272D01* +X242955Y284365D01* +X242922Y284456D01* +X242886Y284545D01* +X242846Y284633D01* +X242803Y284720D01* +X242757Y284805D01* +X242707Y284887D01* +X242653Y284968D01* +X242597Y285046D01* +X242537Y285122D01* +X242475Y285196D01* +X242409Y285267D01* +X242341Y285335D01* +X242270Y285401D01* +X242196Y285463D01* +X242120Y285523D01* +X242042Y285579D01* +X241961Y285633D01* +X241879Y285683D01* +X241794Y285729D01* +X241707Y285772D01* +X241619Y285812D01* +X241530Y285848D01* +X241439Y285881D01* +X241346Y285909D01* +X241253Y285934D01* +X241159Y285956D01* +X241064Y285973D01* +X240968Y285987D01* +X240872Y285996D01* +X240776Y286002D01* +X240679Y286004D01* +X240582Y286002D01* +X240486Y285996D01* +X240390Y285987D01* +X240294Y285973D01* +X240199Y285956D01* +X240105Y285934D01* +X240012Y285909D01* +X239919Y285881D01* +X239828Y285848D01* +X239739Y285812D01* +X239651Y285772D01* +X239564Y285729D01* +X239480Y285683D01* +X239397Y285633D01* +X239316Y285579D01* +X239238Y285523D01* +X239162Y285463D01* +X239088Y285401D01* +X239017Y285335D01* +X238949Y285267D01* +X238883Y285196D01* +X238821Y285122D01* +X238761Y285046D01* +X238705Y284968D01* +X238651Y284887D01* +X238601Y284805D01* +X238555Y284720D01* +X238512Y284633D01* +X238472Y284545D01* +X238436Y284456D01* +X238403Y284365D01* +X238375Y284272D01* +X238350Y284179D01* +X238328Y284085D01* +X238311Y283990D01* +X238297Y283894D01* +X238288Y283798D01* +X238282Y283702D01* +X238280Y283605D01* +X234442Y284085D02* +X234442Y281206D01* +X234442Y284085D02* +X234444Y284171D01* +X234450Y284257D01* +X234459Y284343D01* +X234473Y284428D01* +X234490Y284512D01* +X234511Y284596D01* +X234536Y284678D01* +X234564Y284759D01* +X234596Y284839D01* +X234632Y284918D01* +X234671Y284994D01* +X234714Y285069D01* +X234759Y285142D01* +X234808Y285213D01* +X234861Y285281D01* +X234916Y285348D01* +X234974Y285411D01* +X235035Y285472D01* +X235098Y285530D01* +X235165Y285585D01* +X235233Y285638D01* +X235304Y285687D01* +X235377Y285732D01* +X235452Y285775D01* +X235528Y285814D01* +X235607Y285850D01* +X235687Y285882D01* +X235768Y285910D01* +X235850Y285935D01* +X235934Y285956D01* +X236018Y285973D01* +X236103Y285987D01* +X236189Y285996D01* +X236275Y286002D01* +X236361Y286004D01* +X236447Y286002D01* +X236533Y285996D01* +X236619Y285987D01* +X236704Y285973D01* +X236788Y285956D01* +X236872Y285935D01* +X236954Y285910D01* +X237035Y285882D01* +X237115Y285850D01* +X237194Y285814D01* +X237270Y285775D01* +X237345Y285732D01* +X237418Y285687D01* +X237489Y285638D01* +X237557Y285585D01* +X237624Y285530D01* +X237687Y285472D01* +X237748Y285411D01* +X237806Y285348D01* +X237861Y285281D01* +X237914Y285213D01* +X237963Y285142D01* +X238008Y285069D01* +X238051Y284994D01* +X238090Y284918D01* +X238126Y284839D01* +X238158Y284759D01* +X238186Y284678D01* +X238211Y284596D01* +X238232Y284512D01* +X238249Y284428D01* +X238263Y284343D01* +X238272Y284257D01* +X238278Y284171D01* +X238280Y284085D01* +X238280Y282166D01* +X236361Y290350D02* +X234442Y292749D01* +X243078Y292749D01* +X243078Y290350D02* +X243078Y295148D01* +D30* +X543560Y91440D03* +D14* +X522201Y84328D02* +X522201Y78091D01* +X522203Y77994D01* +X522209Y77898D01* +X522218Y77802D01* +X522232Y77706D01* +X522249Y77611D01* +X522271Y77517D01* +X522296Y77424D01* +X522324Y77331D01* +X522357Y77240D01* +X522393Y77151D01* +X522433Y77063D01* +X522476Y76976D01* +X522522Y76892D01* +X522572Y76809D01* +X522626Y76728D01* +X522682Y76650D01* +X522742Y76574D01* +X522804Y76500D01* +X522870Y76429D01* +X522938Y76361D01* +X523009Y76295D01* +X523083Y76233D01* +X523159Y76173D01* +X523237Y76117D01* +X523318Y76063D01* +X523401Y76013D01* +X523485Y75967D01* +X523572Y75924D01* +X523660Y75884D01* +X523749Y75848D01* +X523840Y75815D01* +X523933Y75787D01* +X524026Y75762D01* +X524120Y75740D01* +X524215Y75723D01* +X524311Y75709D01* +X524407Y75700D01* +X524503Y75694D01* +X524600Y75692D01* +X524697Y75694D01* +X524793Y75700D01* +X524889Y75709D01* +X524985Y75723D01* +X525080Y75740D01* +X525174Y75762D01* +X525267Y75787D01* +X525360Y75815D01* +X525451Y75848D01* +X525540Y75884D01* +X525628Y75924D01* +X525715Y75967D01* +X525800Y76013D01* +X525882Y76063D01* +X525963Y76117D01* +X526041Y76173D01* +X526117Y76233D01* +X526191Y76295D01* +X526262Y76361D01* +X526330Y76429D01* +X526396Y76500D01* +X526458Y76574D01* +X526518Y76650D01* +X526574Y76728D01* +X526628Y76809D01* +X526678Y76891D01* +X526724Y76976D01* +X526767Y77063D01* +X526807Y77151D01* +X526843Y77240D01* +X526876Y77331D01* +X526904Y77424D01* +X526929Y77517D01* +X526951Y77611D01* +X526968Y77706D01* +X526982Y77802D01* +X526991Y77898D01* +X526997Y77994D01* +X526999Y78091D01* +X526999Y84328D01* +X533569Y84328D02* +X531650Y77611D01* +X536448Y77611D01* +X535009Y79530D02* +X535009Y75692D01* +D15* +X703580Y83820D03* +D14* +X709168Y48786D02* +X709168Y46867D01* +X709166Y46781D01* +X709160Y46695D01* +X709151Y46609D01* +X709137Y46524D01* +X709120Y46440D01* +X709099Y46356D01* +X709074Y46274D01* +X709046Y46193D01* +X709014Y46113D01* +X708978Y46034D01* +X708939Y45958D01* +X708896Y45883D01* +X708851Y45810D01* +X708802Y45739D01* +X708749Y45671D01* +X708694Y45604D01* +X708636Y45541D01* +X708575Y45480D01* +X708512Y45422D01* +X708445Y45367D01* +X708377Y45315D01* +X708306Y45265D01* +X708233Y45220D01* +X708158Y45177D01* +X708082Y45138D01* +X708003Y45102D01* +X707923Y45070D01* +X707842Y45042D01* +X707760Y45017D01* +X707676Y44996D01* +X707592Y44979D01* +X707507Y44965D01* +X707421Y44956D01* +X707335Y44950D01* +X707249Y44948D01* +X702451Y44948D01* +X702365Y44950D01* +X702279Y44956D01* +X702193Y44965D01* +X702108Y44979D01* +X702024Y44996D01* +X701940Y45017D01* +X701858Y45042D01* +X701777Y45070D01* +X701697Y45102D01* +X701618Y45138D01* +X701542Y45177D01* +X701467Y45220D01* +X701394Y45265D01* +X701323Y45314D01* +X701255Y45367D01* +X701188Y45422D01* +X701125Y45480D01* +X701064Y45541D01* +X701006Y45604D01* +X700951Y45671D01* +X700899Y45739D01* +X700849Y45810D01* +X700804Y45883D01* +X700761Y45958D01* +X700722Y46034D01* +X700686Y46113D01* +X700654Y46193D01* +X700626Y46274D01* +X700601Y46356D01* +X700580Y46440D01* +X700563Y46524D01* +X700549Y46609D01* +X700540Y46695D01* +X700534Y46781D01* +X700532Y46867D01* +X700532Y48786D01* +X709168Y52606D02* +X709168Y55005D01* +X709166Y55102D01* +X709160Y55198D01* +X709151Y55294D01* +X709137Y55390D01* +X709120Y55485D01* +X709098Y55579D01* +X709073Y55672D01* +X709045Y55765D01* +X709012Y55856D01* +X708976Y55945D01* +X708936Y56033D01* +X708893Y56120D01* +X708847Y56205D01* +X708797Y56287D01* +X708743Y56368D01* +X708687Y56446D01* +X708627Y56522D01* +X708565Y56596D01* +X708499Y56667D01* +X708431Y56735D01* +X708360Y56801D01* +X708286Y56863D01* +X708210Y56923D01* +X708132Y56979D01* +X708051Y57033D01* +X707969Y57083D01* +X707884Y57129D01* +X707797Y57172D01* +X707709Y57212D01* +X707620Y57248D01* +X707529Y57281D01* +X707436Y57309D01* +X707343Y57334D01* +X707249Y57356D01* +X707154Y57373D01* +X707058Y57387D01* +X706962Y57396D01* +X706866Y57402D01* +X706769Y57404D01* +X706672Y57402D01* +X706576Y57396D01* +X706480Y57387D01* +X706384Y57373D01* +X706289Y57356D01* +X706195Y57334D01* +X706102Y57309D01* +X706009Y57281D01* +X705918Y57248D01* +X705829Y57212D01* +X705741Y57172D01* +X705654Y57129D01* +X705570Y57083D01* +X705487Y57033D01* +X705406Y56979D01* +X705328Y56923D01* +X705252Y56863D01* +X705178Y56801D01* +X705107Y56735D01* +X705039Y56667D01* +X704973Y56596D01* +X704911Y56522D01* +X704851Y56446D01* +X704795Y56368D01* +X704741Y56287D01* +X704691Y56205D01* +X704645Y56120D01* +X704602Y56033D01* +X704562Y55945D01* +X704526Y55856D01* +X704493Y55765D01* +X704465Y55672D01* +X704440Y55579D01* +X704418Y55485D01* +X704401Y55390D01* +X704387Y55294D01* +X704378Y55198D01* +X704372Y55102D01* +X704370Y55005D01* +X700532Y55485D02* +X700532Y52606D01* +X700532Y55485D02* +X700534Y55571D01* +X700540Y55657D01* +X700549Y55743D01* +X700563Y55828D01* +X700580Y55912D01* +X700601Y55996D01* +X700626Y56078D01* +X700654Y56159D01* +X700686Y56239D01* +X700722Y56318D01* +X700761Y56394D01* +X700804Y56469D01* +X700849Y56542D01* +X700898Y56613D01* +X700951Y56681D01* +X701006Y56748D01* +X701064Y56811D01* +X701125Y56872D01* +X701188Y56930D01* +X701255Y56985D01* +X701323Y57038D01* +X701394Y57087D01* +X701467Y57132D01* +X701542Y57175D01* +X701618Y57214D01* +X701697Y57250D01* +X701777Y57282D01* +X701858Y57310D01* +X701940Y57335D01* +X702024Y57356D01* +X702108Y57373D01* +X702193Y57387D01* +X702279Y57396D01* +X702365Y57402D01* +X702451Y57404D01* +X702537Y57402D01* +X702623Y57396D01* +X702709Y57387D01* +X702794Y57373D01* +X702878Y57356D01* +X702962Y57335D01* +X703044Y57310D01* +X703125Y57282D01* +X703205Y57250D01* +X703284Y57214D01* +X703360Y57175D01* +X703435Y57132D01* +X703508Y57087D01* +X703579Y57038D01* +X703647Y56985D01* +X703714Y56930D01* +X703777Y56872D01* +X703838Y56811D01* +X703896Y56748D01* +X703951Y56681D01* +X704004Y56613D01* +X704053Y56542D01* +X704098Y56469D01* +X704141Y56394D01* +X704180Y56318D01* +X704216Y56239D01* +X704248Y56159D01* +X704276Y56078D01* +X704301Y55996D01* +X704322Y55912D01* +X704339Y55828D01* +X704353Y55743D01* +X704362Y55657D01* +X704368Y55571D01* +X704370Y55485D01* +X704370Y53566D01* +X700532Y64389D02* +X700534Y64481D01* +X700540Y64572D01* +X700549Y64663D01* +X700563Y64754D01* +X700580Y64844D01* +X700602Y64933D01* +X700627Y65021D01* +X700655Y65108D01* +X700688Y65194D01* +X700724Y65278D01* +X700763Y65361D01* +X700806Y65442D01* +X700853Y65521D01* +X700902Y65598D01* +X700955Y65673D01* +X701011Y65745D01* +X701070Y65815D01* +X701132Y65883D01* +X701197Y65948D01* +X701265Y66010D01* +X701335Y66069D01* +X701407Y66125D01* +X701482Y66178D01* +X701559Y66227D01* +X701638Y66274D01* +X701719Y66317D01* +X701802Y66356D01* +X701886Y66392D01* +X701972Y66425D01* +X702059Y66453D01* +X702147Y66478D01* +X702236Y66500D01* +X702326Y66517D01* +X702417Y66531D01* +X702508Y66540D01* +X702599Y66546D01* +X702691Y66548D01* +X700532Y64389D02* +X700534Y64286D01* +X700540Y64184D01* +X700549Y64082D01* +X700562Y63980D01* +X700579Y63879D01* +X700600Y63778D01* +X700624Y63679D01* +X700653Y63580D01* +X700684Y63483D01* +X700720Y63386D01* +X700758Y63291D01* +X700801Y63198D01* +X700847Y63106D01* +X700896Y63016D01* +X700948Y62928D01* +X701004Y62841D01* +X701063Y62757D01* +X701124Y62676D01* +X701189Y62596D01* +X701257Y62519D01* +X701328Y62444D01* +X701401Y62373D01* +X701477Y62304D01* +X701555Y62237D01* +X701636Y62174D01* +X701719Y62114D01* +X701804Y62057D01* +X701891Y62003D01* +X701981Y61952D01* +X702072Y61905D01* +X702164Y61861D01* +X702259Y61820D01* +X702354Y61783D01* +X702451Y61750D01* +X704370Y65828D02* +X704304Y65895D01* +X704235Y65959D01* +X704164Y66020D01* +X704090Y66078D01* +X704014Y66133D01* +X703936Y66185D01* +X703856Y66234D01* +X703774Y66280D01* +X703690Y66322D01* +X703604Y66361D01* +X703517Y66396D01* +X703429Y66427D01* +X703339Y66455D01* +X703249Y66480D01* +X703157Y66501D01* +X703065Y66518D01* +X702972Y66531D01* +X702879Y66540D01* +X702785Y66546D01* +X702691Y66548D01* +X704370Y65828D02* +X709168Y61750D01* +X709168Y66548D01* +D19* +X1270300Y121540D02* +X1273300Y121540D01* +X1273300Y137540D01* +X1270300Y137540D01* +D10* +X1257300Y132080D02* +X1257300Y127000D01* +D14* +X1251181Y119888D02* +X1251181Y111252D01* +X1251181Y119888D02* +X1253580Y119888D01* +X1253677Y119886D01* +X1253773Y119880D01* +X1253869Y119871D01* +X1253965Y119857D01* +X1254060Y119840D01* +X1254154Y119818D01* +X1254247Y119793D01* +X1254340Y119765D01* +X1254431Y119732D01* +X1254520Y119696D01* +X1254608Y119656D01* +X1254695Y119613D01* +X1254780Y119567D01* +X1254862Y119517D01* +X1254943Y119463D01* +X1255021Y119407D01* +X1255097Y119347D01* +X1255171Y119285D01* +X1255242Y119219D01* +X1255310Y119151D01* +X1255376Y119080D01* +X1255438Y119006D01* +X1255498Y118930D01* +X1255554Y118852D01* +X1255608Y118771D01* +X1255658Y118689D01* +X1255704Y118604D01* +X1255747Y118517D01* +X1255787Y118429D01* +X1255823Y118340D01* +X1255856Y118249D01* +X1255884Y118156D01* +X1255909Y118063D01* +X1255931Y117969D01* +X1255948Y117874D01* +X1255962Y117778D01* +X1255971Y117682D01* +X1255977Y117586D01* +X1255979Y117489D01* +X1255979Y113651D01* +X1255977Y113554D01* +X1255971Y113458D01* +X1255962Y113362D01* +X1255948Y113266D01* +X1255931Y113171D01* +X1255909Y113077D01* +X1255884Y112984D01* +X1255856Y112891D01* +X1255823Y112800D01* +X1255787Y112711D01* +X1255747Y112623D01* +X1255704Y112536D01* +X1255658Y112451D01* +X1255608Y112369D01* +X1255554Y112288D01* +X1255498Y112210D01* +X1255438Y112134D01* +X1255376Y112060D01* +X1255310Y111989D01* +X1255242Y111921D01* +X1255171Y111855D01* +X1255097Y111793D01* +X1255021Y111733D01* +X1254943Y111677D01* +X1254862Y111623D01* +X1254780Y111573D01* +X1254695Y111527D01* +X1254608Y111484D01* +X1254520Y111444D01* +X1254431Y111408D01* +X1254340Y111375D01* +X1254247Y111347D01* +X1254154Y111322D01* +X1254060Y111300D01* +X1253965Y111283D01* +X1253869Y111269D01* +X1253773Y111260D01* +X1253677Y111254D01* +X1253580Y111252D01* +X1251181Y111252D01* +X1260630Y118928D02* +X1260630Y119888D01* +X1265428Y119888D01* +X1263029Y111252D01* +D13* +X1196340Y104140D03* +D14* +X1200658Y68947D02* +X1192022Y68947D01* +X1192022Y71346D01* +X1192024Y71443D01* +X1192030Y71539D01* +X1192039Y71635D01* +X1192053Y71731D01* +X1192070Y71826D01* +X1192092Y71920D01* +X1192117Y72013D01* +X1192145Y72106D01* +X1192178Y72197D01* +X1192214Y72286D01* +X1192254Y72374D01* +X1192297Y72461D01* +X1192343Y72546D01* +X1192393Y72628D01* +X1192447Y72709D01* +X1192503Y72787D01* +X1192563Y72863D01* +X1192625Y72937D01* +X1192691Y73008D01* +X1192759Y73076D01* +X1192830Y73142D01* +X1192904Y73204D01* +X1192980Y73264D01* +X1193058Y73320D01* +X1193139Y73374D01* +X1193222Y73424D01* +X1193306Y73470D01* +X1193393Y73513D01* +X1193481Y73553D01* +X1193570Y73589D01* +X1193661Y73622D01* +X1193754Y73650D01* +X1193847Y73675D01* +X1193941Y73697D01* +X1194036Y73714D01* +X1194132Y73728D01* +X1194228Y73737D01* +X1194324Y73743D01* +X1194421Y73745D01* +X1194518Y73743D01* +X1194614Y73737D01* +X1194710Y73728D01* +X1194806Y73714D01* +X1194901Y73697D01* +X1194995Y73675D01* +X1195088Y73650D01* +X1195181Y73622D01* +X1195272Y73589D01* +X1195361Y73553D01* +X1195449Y73513D01* +X1195536Y73470D01* +X1195621Y73424D01* +X1195703Y73374D01* +X1195784Y73320D01* +X1195862Y73264D01* +X1195938Y73204D01* +X1196012Y73142D01* +X1196083Y73076D01* +X1196151Y73008D01* +X1196217Y72937D01* +X1196279Y72863D01* +X1196339Y72787D01* +X1196395Y72709D01* +X1196449Y72628D01* +X1196499Y72546D01* +X1196545Y72461D01* +X1196588Y72374D01* +X1196628Y72286D01* +X1196664Y72197D01* +X1196697Y72106D01* +X1196725Y72013D01* +X1196750Y71920D01* +X1196772Y71826D01* +X1196789Y71731D01* +X1196803Y71635D01* +X1196812Y71539D01* +X1196818Y71443D01* +X1196820Y71346D01* +X1196820Y68947D01* +X1196820Y71826D02* +X1200658Y73745D01* +X1192022Y80645D02* +X1192024Y80737D01* +X1192030Y80828D01* +X1192039Y80919D01* +X1192053Y81010D01* +X1192070Y81100D01* +X1192092Y81189D01* +X1192117Y81277D01* +X1192145Y81364D01* +X1192178Y81450D01* +X1192214Y81534D01* +X1192253Y81617D01* +X1192296Y81698D01* +X1192343Y81777D01* +X1192392Y81854D01* +X1192445Y81929D01* +X1192501Y82001D01* +X1192560Y82071D01* +X1192622Y82139D01* +X1192687Y82204D01* +X1192755Y82266D01* +X1192825Y82325D01* +X1192897Y82381D01* +X1192972Y82434D01* +X1193049Y82483D01* +X1193128Y82530D01* +X1193209Y82573D01* +X1193292Y82612D01* +X1193376Y82648D01* +X1193462Y82681D01* +X1193549Y82709D01* +X1193637Y82734D01* +X1193726Y82756D01* +X1193816Y82773D01* +X1193907Y82787D01* +X1193998Y82796D01* +X1194089Y82802D01* +X1194181Y82804D01* +X1192022Y80645D02* +X1192024Y80542D01* +X1192030Y80440D01* +X1192039Y80338D01* +X1192052Y80236D01* +X1192069Y80135D01* +X1192090Y80034D01* +X1192114Y79935D01* +X1192143Y79836D01* +X1192174Y79739D01* +X1192210Y79642D01* +X1192248Y79547D01* +X1192291Y79454D01* +X1192337Y79362D01* +X1192386Y79272D01* +X1192438Y79184D01* +X1192494Y79097D01* +X1192553Y79013D01* +X1192614Y78932D01* +X1192679Y78852D01* +X1192747Y78775D01* +X1192818Y78700D01* +X1192891Y78629D01* +X1192967Y78560D01* +X1193045Y78493D01* +X1193126Y78430D01* +X1193209Y78370D01* +X1193294Y78313D01* +X1193381Y78259D01* +X1193471Y78208D01* +X1193562Y78161D01* +X1193654Y78117D01* +X1193749Y78076D01* +X1193844Y78039D01* +X1193941Y78006D01* +X1195860Y82084D02* +X1195794Y82151D01* +X1195725Y82215D01* +X1195654Y82276D01* +X1195580Y82334D01* +X1195504Y82389D01* +X1195426Y82441D01* +X1195346Y82490D01* +X1195264Y82536D01* +X1195180Y82578D01* +X1195094Y82617D01* +X1195007Y82652D01* +X1194919Y82683D01* +X1194829Y82711D01* +X1194739Y82736D01* +X1194647Y82757D01* +X1194555Y82774D01* +X1194462Y82787D01* +X1194369Y82796D01* +X1194275Y82802D01* +X1194181Y82804D01* +X1195860Y82084D02* +X1200658Y78006D01* +X1200658Y82804D01* +X1200658Y87150D02* +X1200658Y89549D01* +X1200656Y89646D01* +X1200650Y89742D01* +X1200641Y89838D01* +X1200627Y89934D01* +X1200610Y90029D01* +X1200588Y90123D01* +X1200563Y90216D01* +X1200535Y90309D01* +X1200502Y90400D01* +X1200466Y90489D01* +X1200426Y90577D01* +X1200383Y90664D01* +X1200337Y90749D01* +X1200287Y90831D01* +X1200233Y90912D01* +X1200177Y90990D01* +X1200117Y91066D01* +X1200055Y91140D01* +X1199989Y91211D01* +X1199921Y91279D01* +X1199850Y91345D01* +X1199776Y91407D01* +X1199700Y91467D01* +X1199622Y91523D01* +X1199541Y91577D01* +X1199459Y91627D01* +X1199374Y91673D01* +X1199287Y91716D01* +X1199199Y91756D01* +X1199110Y91792D01* +X1199019Y91825D01* +X1198926Y91853D01* +X1198833Y91878D01* +X1198739Y91900D01* +X1198644Y91917D01* +X1198548Y91931D01* +X1198452Y91940D01* +X1198356Y91946D01* +X1198259Y91948D01* +X1198162Y91946D01* +X1198066Y91940D01* +X1197970Y91931D01* +X1197874Y91917D01* +X1197779Y91900D01* +X1197685Y91878D01* +X1197592Y91853D01* +X1197499Y91825D01* +X1197408Y91792D01* +X1197319Y91756D01* +X1197231Y91716D01* +X1197144Y91673D01* +X1197060Y91627D01* +X1196977Y91577D01* +X1196896Y91523D01* +X1196818Y91467D01* +X1196742Y91407D01* +X1196668Y91345D01* +X1196597Y91279D01* +X1196529Y91211D01* +X1196463Y91140D01* +X1196401Y91066D01* +X1196341Y90990D01* +X1196285Y90912D01* +X1196231Y90831D01* +X1196181Y90749D01* +X1196135Y90664D01* +X1196092Y90577D01* +X1196052Y90489D01* +X1196016Y90400D01* +X1195983Y90309D01* +X1195955Y90216D01* +X1195930Y90123D01* +X1195908Y90029D01* +X1195891Y89934D01* +X1195877Y89838D01* +X1195868Y89742D01* +X1195862Y89646D01* +X1195860Y89549D01* +X1192022Y90029D02* +X1192022Y87150D01* +X1192022Y90029D02* +X1192024Y90115D01* +X1192030Y90201D01* +X1192039Y90287D01* +X1192053Y90372D01* +X1192070Y90456D01* +X1192091Y90540D01* +X1192116Y90622D01* +X1192144Y90703D01* +X1192176Y90783D01* +X1192212Y90862D01* +X1192251Y90938D01* +X1192294Y91013D01* +X1192339Y91086D01* +X1192388Y91157D01* +X1192441Y91225D01* +X1192496Y91292D01* +X1192554Y91355D01* +X1192615Y91416D01* +X1192678Y91474D01* +X1192745Y91529D01* +X1192813Y91582D01* +X1192884Y91631D01* +X1192957Y91676D01* +X1193032Y91719D01* +X1193108Y91758D01* +X1193187Y91794D01* +X1193267Y91826D01* +X1193348Y91854D01* +X1193430Y91879D01* +X1193514Y91900D01* +X1193598Y91917D01* +X1193683Y91931D01* +X1193769Y91940D01* +X1193855Y91946D01* +X1193941Y91948D01* +X1194027Y91946D01* +X1194113Y91940D01* +X1194199Y91931D01* +X1194284Y91917D01* +X1194368Y91900D01* +X1194452Y91879D01* +X1194534Y91854D01* +X1194615Y91826D01* +X1194695Y91794D01* +X1194774Y91758D01* +X1194850Y91719D01* +X1194925Y91676D01* +X1194998Y91631D01* +X1195069Y91582D01* +X1195137Y91529D01* +X1195204Y91474D01* +X1195267Y91416D01* +X1195328Y91355D01* +X1195386Y91292D01* +X1195441Y91225D01* +X1195494Y91157D01* +X1195543Y91086D01* +X1195588Y91013D01* +X1195631Y90938D01* +X1195670Y90862D01* +X1195706Y90783D01* +X1195738Y90703D01* +X1195766Y90622D01* +X1195791Y90540D01* +X1195812Y90456D01* +X1195829Y90372D01* +X1195843Y90287D01* +X1195852Y90201D01* +X1195858Y90115D01* +X1195860Y90029D01* +X1195860Y88110D01* +X836422Y68072D02* +X819658Y68072D01* +X819658Y43688D02* +X836422Y43688D01* +D31* +X828040Y55880D03* +D26* +X847090Y45720D02* +X847092Y45791D01* +X847098Y45862D01* +X847108Y45933D01* +X847122Y46003D01* +X847140Y46072D01* +X847161Y46139D01* +X847187Y46206D01* +X847216Y46271D01* +X847248Y46334D01* +X847285Y46396D01* +X847324Y46455D01* +X847367Y46512D01* +X847413Y46566D01* +X847462Y46618D01* +X847514Y46667D01* +X847568Y46713D01* +X847625Y46756D01* +X847684Y46795D01* +X847746Y46832D01* +X847809Y46864D01* +X847874Y46893D01* +X847941Y46919D01* +X848008Y46940D01* +X848077Y46958D01* +X848147Y46972D01* +X848218Y46982D01* +X848289Y46988D01* +X848360Y46990D01* +X848431Y46988D01* +X848502Y46982D01* +X848573Y46972D01* +X848643Y46958D01* +X848712Y46940D01* +X848779Y46919D01* +X848846Y46893D01* +X848911Y46864D01* +X848974Y46832D01* +X849036Y46795D01* +X849095Y46756D01* +X849152Y46713D01* +X849206Y46667D01* +X849258Y46618D01* +X849307Y46566D01* +X849353Y46512D01* +X849396Y46455D01* +X849435Y46396D01* +X849472Y46334D01* +X849504Y46271D01* +X849533Y46206D01* +X849559Y46139D01* +X849580Y46072D01* +X849598Y46003D01* +X849612Y45933D01* +X849622Y45862D01* +X849628Y45791D01* +X849630Y45720D01* +X849628Y45649D01* +X849622Y45578D01* +X849612Y45507D01* +X849598Y45437D01* +X849580Y45368D01* +X849559Y45301D01* +X849533Y45234D01* +X849504Y45169D01* +X849472Y45106D01* +X849435Y45044D01* +X849396Y44985D01* +X849353Y44928D01* +X849307Y44874D01* +X849258Y44822D01* +X849206Y44773D01* +X849152Y44727D01* +X849095Y44684D01* +X849036Y44645D01* +X848974Y44608D01* +X848911Y44576D01* +X848846Y44547D01* +X848779Y44521D01* +X848712Y44500D01* +X848643Y44482D01* +X848573Y44468D01* +X848502Y44458D01* +X848431Y44452D01* +X848360Y44450D01* +X848289Y44452D01* +X848218Y44458D01* +X848147Y44468D01* +X848077Y44482D01* +X848008Y44500D01* +X847941Y44521D01* +X847874Y44547D01* +X847809Y44576D01* +X847746Y44608D01* +X847684Y44645D01* +X847625Y44684D01* +X847568Y44727D01* +X847514Y44773D01* +X847462Y44822D01* +X847413Y44874D01* +X847367Y44928D01* +X847324Y44985D01* +X847285Y45044D01* +X847248Y45106D01* +X847216Y45169D01* +X847187Y45234D01* +X847161Y45301D01* +X847140Y45368D01* +X847122Y45437D01* +X847108Y45507D01* +X847098Y45578D01* +X847092Y45649D01* +X847090Y45720D01* +D14* +X831596Y38608D02* +X831596Y32371D01* +X831598Y32274D01* +X831604Y32178D01* +X831613Y32082D01* +X831627Y31986D01* +X831644Y31891D01* +X831666Y31797D01* +X831691Y31704D01* +X831719Y31611D01* +X831752Y31520D01* +X831788Y31431D01* +X831828Y31343D01* +X831871Y31256D01* +X831917Y31172D01* +X831967Y31089D01* +X832021Y31008D01* +X832077Y30930D01* +X832137Y30854D01* +X832199Y30780D01* +X832265Y30709D01* +X832333Y30641D01* +X832404Y30575D01* +X832478Y30513D01* +X832554Y30453D01* +X832632Y30397D01* +X832713Y30343D01* +X832796Y30293D01* +X832880Y30247D01* +X832967Y30204D01* +X833055Y30164D01* +X833144Y30128D01* +X833235Y30095D01* +X833328Y30067D01* +X833421Y30042D01* +X833515Y30020D01* +X833610Y30003D01* +X833706Y29989D01* +X833802Y29980D01* +X833898Y29974D01* +X833995Y29972D01* +X834092Y29974D01* +X834188Y29980D01* +X834284Y29989D01* +X834380Y30003D01* +X834475Y30020D01* +X834569Y30042D01* +X834662Y30067D01* +X834755Y30095D01* +X834846Y30128D01* +X834935Y30164D01* +X835023Y30204D01* +X835110Y30247D01* +X835195Y30293D01* +X835277Y30343D01* +X835358Y30397D01* +X835436Y30453D01* +X835512Y30513D01* +X835586Y30575D01* +X835657Y30641D01* +X835725Y30709D01* +X835791Y30780D01* +X835853Y30854D01* +X835913Y30930D01* +X835969Y31008D01* +X836023Y31089D01* +X836073Y31171D01* +X836119Y31256D01* +X836162Y31343D01* +X836202Y31431D01* +X836238Y31520D01* +X836271Y31611D01* +X836299Y31704D01* +X836324Y31797D01* +X836346Y31891D01* +X836363Y31986D01* +X836377Y32082D01* +X836386Y32178D01* +X836392Y32274D01* +X836394Y32371D01* +X836394Y38608D01* +X841045Y36689D02* +X843444Y38608D01* +X843444Y29972D01* +X841045Y29972D02* +X845843Y29972D01* +X836422Y106172D02* +X819658Y106172D01* +X819658Y81788D02* +X836422Y81788D01* +D31* +X828040Y93980D03* +D26* +X847090Y83820D02* +X847092Y83891D01* +X847098Y83962D01* +X847108Y84033D01* +X847122Y84103D01* +X847140Y84172D01* +X847161Y84239D01* +X847187Y84306D01* +X847216Y84371D01* +X847248Y84434D01* +X847285Y84496D01* +X847324Y84555D01* +X847367Y84612D01* +X847413Y84666D01* +X847462Y84718D01* +X847514Y84767D01* +X847568Y84813D01* +X847625Y84856D01* +X847684Y84895D01* +X847746Y84932D01* +X847809Y84964D01* +X847874Y84993D01* +X847941Y85019D01* +X848008Y85040D01* +X848077Y85058D01* +X848147Y85072D01* +X848218Y85082D01* +X848289Y85088D01* +X848360Y85090D01* +X848431Y85088D01* +X848502Y85082D01* +X848573Y85072D01* +X848643Y85058D01* +X848712Y85040D01* +X848779Y85019D01* +X848846Y84993D01* +X848911Y84964D01* +X848974Y84932D01* +X849036Y84895D01* +X849095Y84856D01* +X849152Y84813D01* +X849206Y84767D01* +X849258Y84718D01* +X849307Y84666D01* +X849353Y84612D01* +X849396Y84555D01* +X849435Y84496D01* +X849472Y84434D01* +X849504Y84371D01* +X849533Y84306D01* +X849559Y84239D01* +X849580Y84172D01* +X849598Y84103D01* +X849612Y84033D01* +X849622Y83962D01* +X849628Y83891D01* +X849630Y83820D01* +X849628Y83749D01* +X849622Y83678D01* +X849612Y83607D01* +X849598Y83537D01* +X849580Y83468D01* +X849559Y83401D01* +X849533Y83334D01* +X849504Y83269D01* +X849472Y83206D01* +X849435Y83144D01* +X849396Y83085D01* +X849353Y83028D01* +X849307Y82974D01* +X849258Y82922D01* +X849206Y82873D01* +X849152Y82827D01* +X849095Y82784D01* +X849036Y82745D01* +X848974Y82708D01* +X848911Y82676D01* +X848846Y82647D01* +X848779Y82621D01* +X848712Y82600D01* +X848643Y82582D01* +X848573Y82568D01* +X848502Y82558D01* +X848431Y82552D01* +X848360Y82550D01* +X848289Y82552D01* +X848218Y82558D01* +X848147Y82568D01* +X848077Y82582D01* +X848008Y82600D01* +X847941Y82621D01* +X847874Y82647D01* +X847809Y82676D01* +X847746Y82708D01* +X847684Y82745D01* +X847625Y82784D01* +X847568Y82827D01* +X847514Y82873D01* +X847462Y82922D01* +X847413Y82974D01* +X847367Y83028D01* +X847324Y83085D01* +X847285Y83144D01* +X847248Y83206D01* +X847216Y83269D01* +X847187Y83334D01* +X847161Y83401D01* +X847140Y83468D01* +X847122Y83537D01* +X847108Y83607D01* +X847098Y83678D01* +X847092Y83749D01* +X847090Y83820D01* +D14* +X796036Y103491D02* +X796036Y109728D01* +X796036Y103491D02* +X796038Y103394D01* +X796044Y103298D01* +X796053Y103202D01* +X796067Y103106D01* +X796084Y103011D01* +X796106Y102917D01* +X796131Y102824D01* +X796159Y102731D01* +X796192Y102640D01* +X796228Y102551D01* +X796268Y102463D01* +X796311Y102376D01* +X796357Y102292D01* +X796407Y102209D01* +X796461Y102128D01* +X796517Y102050D01* +X796577Y101974D01* +X796639Y101900D01* +X796705Y101829D01* +X796773Y101761D01* +X796844Y101695D01* +X796918Y101633D01* +X796994Y101573D01* +X797072Y101517D01* +X797153Y101463D01* +X797236Y101413D01* +X797320Y101367D01* +X797407Y101324D01* +X797495Y101284D01* +X797584Y101248D01* +X797675Y101215D01* +X797768Y101187D01* +X797861Y101162D01* +X797955Y101140D01* +X798050Y101123D01* +X798146Y101109D01* +X798242Y101100D01* +X798338Y101094D01* +X798435Y101092D01* +X798532Y101094D01* +X798628Y101100D01* +X798724Y101109D01* +X798820Y101123D01* +X798915Y101140D01* +X799009Y101162D01* +X799102Y101187D01* +X799195Y101215D01* +X799286Y101248D01* +X799375Y101284D01* +X799463Y101324D01* +X799550Y101367D01* +X799635Y101413D01* +X799717Y101463D01* +X799798Y101517D01* +X799876Y101573D01* +X799952Y101633D01* +X800026Y101695D01* +X800097Y101761D01* +X800165Y101829D01* +X800231Y101900D01* +X800293Y101974D01* +X800353Y102050D01* +X800409Y102128D01* +X800463Y102209D01* +X800513Y102291D01* +X800559Y102376D01* +X800602Y102463D01* +X800642Y102551D01* +X800678Y102640D01* +X800711Y102731D01* +X800739Y102824D01* +X800764Y102917D01* +X800786Y103011D01* +X800803Y103106D01* +X800817Y103202D01* +X800826Y103298D01* +X800832Y103394D01* +X800834Y103491D01* +X800834Y109728D01* +X805485Y109728D02* +X805485Y108768D01* +X805485Y109728D02* +X810283Y109728D01* +X807884Y101092D01* +D13* +X853440Y88900D03* +D14* +X867918Y81806D02* +X867918Y79887D01* +X867916Y79801D01* +X867910Y79715D01* +X867901Y79629D01* +X867887Y79544D01* +X867870Y79460D01* +X867849Y79376D01* +X867824Y79294D01* +X867796Y79213D01* +X867764Y79133D01* +X867728Y79054D01* +X867689Y78978D01* +X867646Y78903D01* +X867601Y78830D01* +X867552Y78759D01* +X867499Y78691D01* +X867444Y78624D01* +X867386Y78561D01* +X867325Y78500D01* +X867262Y78442D01* +X867195Y78387D01* +X867127Y78335D01* +X867056Y78285D01* +X866983Y78240D01* +X866908Y78197D01* +X866832Y78158D01* +X866753Y78122D01* +X866673Y78090D01* +X866592Y78062D01* +X866510Y78037D01* +X866426Y78016D01* +X866342Y77999D01* +X866257Y77985D01* +X866171Y77976D01* +X866085Y77970D01* +X865999Y77968D01* +X861201Y77968D01* +X861115Y77970D01* +X861029Y77976D01* +X860943Y77985D01* +X860858Y77999D01* +X860774Y78016D01* +X860690Y78037D01* +X860608Y78062D01* +X860527Y78090D01* +X860447Y78122D01* +X860368Y78158D01* +X860292Y78197D01* +X860217Y78240D01* +X860144Y78285D01* +X860073Y78334D01* +X860005Y78387D01* +X859938Y78442D01* +X859875Y78500D01* +X859814Y78561D01* +X859756Y78624D01* +X859701Y78691D01* +X859649Y78759D01* +X859599Y78830D01* +X859554Y78903D01* +X859511Y78978D01* +X859472Y79054D01* +X859436Y79133D01* +X859404Y79213D01* +X859376Y79294D01* +X859351Y79376D01* +X859330Y79460D01* +X859313Y79544D01* +X859299Y79629D01* +X859290Y79715D01* +X859284Y79801D01* +X859282Y79887D01* +X859282Y81806D01* +X867918Y85626D02* +X867918Y88025D01* +X867916Y88122D01* +X867910Y88218D01* +X867901Y88314D01* +X867887Y88410D01* +X867870Y88505D01* +X867848Y88599D01* +X867823Y88692D01* +X867795Y88785D01* +X867762Y88876D01* +X867726Y88965D01* +X867686Y89053D01* +X867643Y89140D01* +X867597Y89225D01* +X867547Y89307D01* +X867493Y89388D01* +X867437Y89466D01* +X867377Y89542D01* +X867315Y89616D01* +X867249Y89687D01* +X867181Y89755D01* +X867110Y89821D01* +X867036Y89883D01* +X866960Y89943D01* +X866882Y89999D01* +X866801Y90053D01* +X866719Y90103D01* +X866634Y90149D01* +X866547Y90192D01* +X866459Y90232D01* +X866370Y90268D01* +X866279Y90301D01* +X866186Y90329D01* +X866093Y90354D01* +X865999Y90376D01* +X865904Y90393D01* +X865808Y90407D01* +X865712Y90416D01* +X865616Y90422D01* +X865519Y90424D01* +X865422Y90422D01* +X865326Y90416D01* +X865230Y90407D01* +X865134Y90393D01* +X865039Y90376D01* +X864945Y90354D01* +X864852Y90329D01* +X864759Y90301D01* +X864668Y90268D01* +X864579Y90232D01* +X864491Y90192D01* +X864404Y90149D01* +X864320Y90103D01* +X864237Y90053D01* +X864156Y89999D01* +X864078Y89943D01* +X864002Y89883D01* +X863928Y89821D01* +X863857Y89755D01* +X863789Y89687D01* +X863723Y89616D01* +X863661Y89542D01* +X863601Y89466D01* +X863545Y89388D01* +X863491Y89307D01* +X863441Y89225D01* +X863395Y89140D01* +X863352Y89053D01* +X863312Y88965D01* +X863276Y88876D01* +X863243Y88785D01* +X863215Y88692D01* +X863190Y88599D01* +X863168Y88505D01* +X863151Y88410D01* +X863137Y88314D01* +X863128Y88218D01* +X863122Y88122D01* +X863120Y88025D01* +X859282Y88505D02* +X859282Y85626D01* +X859282Y88505D02* +X859284Y88591D01* +X859290Y88677D01* +X859299Y88763D01* +X859313Y88848D01* +X859330Y88932D01* +X859351Y89016D01* +X859376Y89098D01* +X859404Y89179D01* +X859436Y89259D01* +X859472Y89338D01* +X859511Y89414D01* +X859554Y89489D01* +X859599Y89562D01* +X859648Y89633D01* +X859701Y89701D01* +X859756Y89768D01* +X859814Y89831D01* +X859875Y89892D01* +X859938Y89950D01* +X860005Y90005D01* +X860073Y90058D01* +X860144Y90107D01* +X860217Y90152D01* +X860292Y90195D01* +X860368Y90234D01* +X860447Y90270D01* +X860527Y90302D01* +X860608Y90330D01* +X860690Y90355D01* +X860774Y90376D01* +X860858Y90393D01* +X860943Y90407D01* +X861029Y90416D01* +X861115Y90422D01* +X861201Y90424D01* +X861287Y90422D01* +X861373Y90416D01* +X861459Y90407D01* +X861544Y90393D01* +X861628Y90376D01* +X861712Y90355D01* +X861794Y90330D01* +X861875Y90302D01* +X861955Y90270D01* +X862034Y90234D01* +X862110Y90195D01* +X862185Y90152D01* +X862258Y90107D01* +X862329Y90058D01* +X862397Y90005D01* +X862464Y89950D01* +X862527Y89892D01* +X862588Y89831D01* +X862646Y89768D01* +X862701Y89701D01* +X862754Y89633D01* +X862803Y89562D01* +X862848Y89489D01* +X862891Y89414D01* +X862930Y89338D01* +X862966Y89259D01* +X862998Y89179D01* +X863026Y89098D01* +X863051Y89016D01* +X863072Y88932D01* +X863089Y88848D01* +X863103Y88763D01* +X863112Y88677D01* +X863118Y88591D01* +X863120Y88505D01* +X863120Y86586D01* +X867918Y94770D02* +X867918Y97169D01* +X867916Y97266D01* +X867910Y97362D01* +X867901Y97458D01* +X867887Y97554D01* +X867870Y97649D01* +X867848Y97743D01* +X867823Y97836D01* +X867795Y97929D01* +X867762Y98020D01* +X867726Y98109D01* +X867686Y98197D01* +X867643Y98284D01* +X867597Y98369D01* +X867547Y98451D01* +X867493Y98532D01* +X867437Y98610D01* +X867377Y98686D01* +X867315Y98760D01* +X867249Y98831D01* +X867181Y98899D01* +X867110Y98965D01* +X867036Y99027D01* +X866960Y99087D01* +X866882Y99143D01* +X866801Y99197D01* +X866719Y99247D01* +X866634Y99293D01* +X866547Y99336D01* +X866459Y99376D01* +X866370Y99412D01* +X866279Y99445D01* +X866186Y99473D01* +X866093Y99498D01* +X865999Y99520D01* +X865904Y99537D01* +X865808Y99551D01* +X865712Y99560D01* +X865616Y99566D01* +X865519Y99568D01* +X865422Y99566D01* +X865326Y99560D01* +X865230Y99551D01* +X865134Y99537D01* +X865039Y99520D01* +X864945Y99498D01* +X864852Y99473D01* +X864759Y99445D01* +X864668Y99412D01* +X864579Y99376D01* +X864491Y99336D01* +X864404Y99293D01* +X864320Y99247D01* +X864237Y99197D01* +X864156Y99143D01* +X864078Y99087D01* +X864002Y99027D01* +X863928Y98965D01* +X863857Y98899D01* +X863789Y98831D01* +X863723Y98760D01* +X863661Y98686D01* +X863601Y98610D01* +X863545Y98532D01* +X863491Y98451D01* +X863441Y98369D01* +X863395Y98284D01* +X863352Y98197D01* +X863312Y98109D01* +X863276Y98020D01* +X863243Y97929D01* +X863215Y97836D01* +X863190Y97743D01* +X863168Y97649D01* +X863151Y97554D01* +X863137Y97458D01* +X863128Y97362D01* +X863122Y97266D01* +X863120Y97169D01* +X859282Y97649D02* +X859282Y94770D01* +X859282Y97649D02* +X859284Y97735D01* +X859290Y97821D01* +X859299Y97907D01* +X859313Y97992D01* +X859330Y98076D01* +X859351Y98160D01* +X859376Y98242D01* +X859404Y98323D01* +X859436Y98403D01* +X859472Y98482D01* +X859511Y98558D01* +X859554Y98633D01* +X859599Y98706D01* +X859648Y98777D01* +X859701Y98845D01* +X859756Y98912D01* +X859814Y98975D01* +X859875Y99036D01* +X859938Y99094D01* +X860005Y99149D01* +X860073Y99202D01* +X860144Y99251D01* +X860217Y99296D01* +X860292Y99339D01* +X860368Y99378D01* +X860447Y99414D01* +X860527Y99446D01* +X860608Y99474D01* +X860690Y99499D01* +X860774Y99520D01* +X860858Y99537D01* +X860943Y99551D01* +X861029Y99560D01* +X861115Y99566D01* +X861201Y99568D01* +X861287Y99566D01* +X861373Y99560D01* +X861459Y99551D01* +X861544Y99537D01* +X861628Y99520D01* +X861712Y99499D01* +X861794Y99474D01* +X861875Y99446D01* +X861955Y99414D01* +X862034Y99378D01* +X862110Y99339D01* +X862185Y99296D01* +X862258Y99251D01* +X862329Y99202D01* +X862397Y99149D01* +X862464Y99094D01* +X862527Y99036D01* +X862588Y98975D01* +X862646Y98912D01* +X862701Y98845D01* +X862754Y98777D01* +X862803Y98706D01* +X862848Y98633D01* +X862891Y98558D01* +X862930Y98482D01* +X862966Y98403D01* +X862998Y98323D01* +X863026Y98242D01* +X863051Y98160D01* +X863072Y98076D01* +X863089Y97992D01* +X863103Y97907D01* +X863112Y97821D01* +X863118Y97735D01* +X863120Y97649D01* +X863120Y95730D01* +D17* +X800100Y48260D03* +D14* +X790730Y54102D02* +X788811Y54102D01* +X788725Y54104D01* +X788639Y54110D01* +X788553Y54119D01* +X788468Y54133D01* +X788384Y54150D01* +X788300Y54171D01* +X788218Y54196D01* +X788137Y54224D01* +X788057Y54256D01* +X787978Y54292D01* +X787902Y54331D01* +X787827Y54374D01* +X787754Y54419D01* +X787683Y54468D01* +X787615Y54521D01* +X787548Y54576D01* +X787485Y54634D01* +X787424Y54695D01* +X787366Y54758D01* +X787311Y54825D01* +X787258Y54893D01* +X787209Y54964D01* +X787164Y55037D01* +X787121Y55112D01* +X787082Y55188D01* +X787046Y55267D01* +X787014Y55347D01* +X786986Y55428D01* +X786961Y55510D01* +X786940Y55594D01* +X786923Y55678D01* +X786909Y55763D01* +X786900Y55849D01* +X786894Y55935D01* +X786892Y56021D01* +X786892Y60819D01* +X786894Y60905D01* +X786900Y60991D01* +X786909Y61077D01* +X786923Y61162D01* +X786940Y61246D01* +X786961Y61330D01* +X786986Y61412D01* +X787014Y61493D01* +X787046Y61573D01* +X787082Y61652D01* +X787121Y61728D01* +X787164Y61803D01* +X787209Y61876D01* +X787258Y61947D01* +X787311Y62015D01* +X787366Y62082D01* +X787424Y62145D01* +X787485Y62206D01* +X787548Y62264D01* +X787615Y62319D01* +X787683Y62371D01* +X787754Y62421D01* +X787827Y62466D01* +X787902Y62509D01* +X787978Y62548D01* +X788057Y62584D01* +X788137Y62616D01* +X788218Y62644D01* +X788300Y62669D01* +X788384Y62690D01* +X788468Y62707D01* +X788553Y62721D01* +X788639Y62730D01* +X788725Y62736D01* +X788811Y62738D01* +X790730Y62738D01* +X794550Y54102D02* +X796949Y54102D01* +X797046Y54104D01* +X797142Y54110D01* +X797238Y54119D01* +X797334Y54133D01* +X797429Y54150D01* +X797523Y54172D01* +X797616Y54197D01* +X797709Y54225D01* +X797800Y54258D01* +X797889Y54294D01* +X797977Y54334D01* +X798064Y54377D01* +X798149Y54423D01* +X798231Y54473D01* +X798312Y54527D01* +X798390Y54583D01* +X798466Y54643D01* +X798540Y54705D01* +X798611Y54771D01* +X798679Y54839D01* +X798745Y54910D01* +X798807Y54984D01* +X798867Y55060D01* +X798923Y55138D01* +X798977Y55219D01* +X799027Y55301D01* +X799073Y55386D01* +X799116Y55473D01* +X799156Y55561D01* +X799192Y55650D01* +X799225Y55741D01* +X799253Y55834D01* +X799278Y55927D01* +X799300Y56021D01* +X799317Y56116D01* +X799331Y56212D01* +X799340Y56308D01* +X799346Y56404D01* +X799348Y56501D01* +X799346Y56598D01* +X799340Y56694D01* +X799331Y56790D01* +X799317Y56886D01* +X799300Y56981D01* +X799278Y57075D01* +X799253Y57168D01* +X799225Y57261D01* +X799192Y57352D01* +X799156Y57441D01* +X799116Y57529D01* +X799073Y57616D01* +X799027Y57700D01* +X798977Y57783D01* +X798923Y57864D01* +X798867Y57942D01* +X798807Y58018D01* +X798745Y58092D01* +X798679Y58163D01* +X798611Y58231D01* +X798540Y58297D01* +X798466Y58359D01* +X798390Y58419D01* +X798312Y58475D01* +X798231Y58529D01* +X798149Y58579D01* +X798064Y58625D01* +X797977Y58668D01* +X797889Y58708D01* +X797800Y58744D01* +X797709Y58777D01* +X797616Y58805D01* +X797523Y58830D01* +X797429Y58852D01* +X797334Y58869D01* +X797238Y58883D01* +X797142Y58892D01* +X797046Y58898D01* +X796949Y58900D01* +X797429Y62738D02* +X794550Y62738D01* +X797429Y62738D02* +X797515Y62736D01* +X797601Y62730D01* +X797687Y62721D01* +X797772Y62707D01* +X797856Y62690D01* +X797940Y62669D01* +X798022Y62644D01* +X798103Y62616D01* +X798183Y62584D01* +X798262Y62548D01* +X798338Y62509D01* +X798413Y62466D01* +X798486Y62421D01* +X798557Y62372D01* +X798625Y62319D01* +X798692Y62264D01* +X798755Y62206D01* +X798816Y62145D01* +X798874Y62082D01* +X798929Y62015D01* +X798982Y61947D01* +X799031Y61876D01* +X799076Y61803D01* +X799119Y61728D01* +X799158Y61652D01* +X799194Y61573D01* +X799226Y61493D01* +X799254Y61412D01* +X799279Y61330D01* +X799300Y61246D01* +X799317Y61162D01* +X799331Y61077D01* +X799340Y60991D01* +X799346Y60905D01* +X799348Y60819D01* +X799346Y60733D01* +X799340Y60647D01* +X799331Y60561D01* +X799317Y60476D01* +X799300Y60392D01* +X799279Y60308D01* +X799254Y60226D01* +X799226Y60145D01* +X799194Y60065D01* +X799158Y59986D01* +X799119Y59910D01* +X799076Y59835D01* +X799031Y59762D01* +X798982Y59691D01* +X798929Y59623D01* +X798874Y59556D01* +X798816Y59493D01* +X798755Y59432D01* +X798692Y59374D01* +X798625Y59319D01* +X798557Y59266D01* +X798486Y59217D01* +X798413Y59172D01* +X798338Y59129D01* +X798262Y59090D01* +X798183Y59054D01* +X798103Y59022D01* +X798022Y58994D01* +X797940Y58969D01* +X797856Y58948D01* +X797772Y58931D01* +X797687Y58917D01* +X797601Y58908D01* +X797515Y58902D01* +X797429Y58900D01* +X795510Y58900D01* +X803694Y56021D02* +X805613Y62738D01* +X803694Y56021D02* +X808492Y56021D01* +X807053Y57940D02* +X807053Y54102D01* +D17* +X800100Y86360D03* +D14* +X790466Y69342D02* +X788547Y69342D01* +X788461Y69344D01* +X788375Y69350D01* +X788289Y69359D01* +X788204Y69373D01* +X788120Y69390D01* +X788036Y69411D01* +X787954Y69436D01* +X787873Y69464D01* +X787793Y69496D01* +X787714Y69532D01* +X787638Y69571D01* +X787563Y69614D01* +X787490Y69659D01* +X787419Y69708D01* +X787351Y69761D01* +X787284Y69816D01* +X787221Y69874D01* +X787160Y69935D01* +X787102Y69998D01* +X787047Y70065D01* +X786994Y70133D01* +X786945Y70204D01* +X786900Y70277D01* +X786857Y70352D01* +X786818Y70428D01* +X786782Y70507D01* +X786750Y70587D01* +X786722Y70668D01* +X786697Y70750D01* +X786676Y70834D01* +X786659Y70918D01* +X786645Y71003D01* +X786636Y71089D01* +X786630Y71175D01* +X786628Y71261D01* +X786628Y76059D01* +X786630Y76145D01* +X786636Y76231D01* +X786645Y76317D01* +X786659Y76402D01* +X786676Y76486D01* +X786697Y76570D01* +X786722Y76652D01* +X786750Y76733D01* +X786782Y76813D01* +X786818Y76892D01* +X786857Y76968D01* +X786900Y77043D01* +X786945Y77116D01* +X786994Y77187D01* +X787047Y77255D01* +X787102Y77322D01* +X787160Y77385D01* +X787221Y77446D01* +X787284Y77504D01* +X787351Y77559D01* +X787419Y77611D01* +X787490Y77661D01* +X787563Y77706D01* +X787638Y77749D01* +X787714Y77788D01* +X787793Y77824D01* +X787873Y77856D01* +X787954Y77884D01* +X788036Y77909D01* +X788120Y77930D01* +X788204Y77947D01* +X788289Y77961D01* +X788375Y77970D01* +X788461Y77976D01* +X788547Y77978D01* +X790466Y77978D01* +X794286Y69342D02* +X796685Y69342D01* +X796782Y69344D01* +X796878Y69350D01* +X796974Y69359D01* +X797070Y69373D01* +X797165Y69390D01* +X797259Y69412D01* +X797352Y69437D01* +X797445Y69465D01* +X797536Y69498D01* +X797625Y69534D01* +X797713Y69574D01* +X797800Y69617D01* +X797885Y69663D01* +X797967Y69713D01* +X798048Y69767D01* +X798126Y69823D01* +X798202Y69883D01* +X798276Y69945D01* +X798347Y70011D01* +X798415Y70079D01* +X798481Y70150D01* +X798543Y70224D01* +X798603Y70300D01* +X798659Y70378D01* +X798713Y70459D01* +X798763Y70541D01* +X798809Y70626D01* +X798852Y70713D01* +X798892Y70801D01* +X798928Y70890D01* +X798961Y70981D01* +X798989Y71074D01* +X799014Y71167D01* +X799036Y71261D01* +X799053Y71356D01* +X799067Y71452D01* +X799076Y71548D01* +X799082Y71644D01* +X799084Y71741D01* +X799082Y71838D01* +X799076Y71934D01* +X799067Y72030D01* +X799053Y72126D01* +X799036Y72221D01* +X799014Y72315D01* +X798989Y72408D01* +X798961Y72501D01* +X798928Y72592D01* +X798892Y72681D01* +X798852Y72769D01* +X798809Y72856D01* +X798763Y72940D01* +X798713Y73023D01* +X798659Y73104D01* +X798603Y73182D01* +X798543Y73258D01* +X798481Y73332D01* +X798415Y73403D01* +X798347Y73471D01* +X798276Y73537D01* +X798202Y73599D01* +X798126Y73659D01* +X798048Y73715D01* +X797967Y73769D01* +X797885Y73819D01* +X797800Y73865D01* +X797713Y73908D01* +X797625Y73948D01* +X797536Y73984D01* +X797445Y74017D01* +X797352Y74045D01* +X797259Y74070D01* +X797165Y74092D01* +X797070Y74109D01* +X796974Y74123D01* +X796878Y74132D01* +X796782Y74138D01* +X796685Y74140D01* +X797165Y77978D02* +X794286Y77978D01* +X797165Y77978D02* +X797251Y77976D01* +X797337Y77970D01* +X797423Y77961D01* +X797508Y77947D01* +X797592Y77930D01* +X797676Y77909D01* +X797758Y77884D01* +X797839Y77856D01* +X797919Y77824D01* +X797998Y77788D01* +X798074Y77749D01* +X798149Y77706D01* +X798222Y77661D01* +X798293Y77612D01* +X798361Y77559D01* +X798428Y77504D01* +X798491Y77446D01* +X798552Y77385D01* +X798610Y77322D01* +X798665Y77255D01* +X798718Y77187D01* +X798767Y77116D01* +X798812Y77043D01* +X798855Y76968D01* +X798894Y76892D01* +X798930Y76813D01* +X798962Y76733D01* +X798990Y76652D01* +X799015Y76570D01* +X799036Y76486D01* +X799053Y76402D01* +X799067Y76317D01* +X799076Y76231D01* +X799082Y76145D01* +X799084Y76059D01* +X799082Y75973D01* +X799076Y75887D01* +X799067Y75801D01* +X799053Y75716D01* +X799036Y75632D01* +X799015Y75548D01* +X798990Y75466D01* +X798962Y75385D01* +X798930Y75305D01* +X798894Y75226D01* +X798855Y75150D01* +X798812Y75075D01* +X798767Y75002D01* +X798718Y74931D01* +X798665Y74863D01* +X798610Y74796D01* +X798552Y74733D01* +X798491Y74672D01* +X798428Y74614D01* +X798361Y74559D01* +X798293Y74506D01* +X798222Y74457D01* +X798149Y74412D01* +X798074Y74369D01* +X797998Y74330D01* +X797919Y74294D01* +X797839Y74262D01* +X797758Y74234D01* +X797676Y74209D01* +X797592Y74188D01* +X797508Y74171D01* +X797423Y74157D01* +X797337Y74148D01* +X797251Y74142D01* +X797165Y74140D01* +X795246Y74140D01* +X803430Y69342D02* +X806309Y69342D01* +X806395Y69344D01* +X806481Y69350D01* +X806567Y69359D01* +X806652Y69373D01* +X806736Y69390D01* +X806820Y69411D01* +X806902Y69436D01* +X806983Y69464D01* +X807063Y69496D01* +X807142Y69532D01* +X807218Y69571D01* +X807293Y69614D01* +X807366Y69659D01* +X807437Y69709D01* +X807505Y69761D01* +X807572Y69816D01* +X807635Y69874D01* +X807696Y69935D01* +X807754Y69998D01* +X807809Y70065D01* +X807862Y70133D01* +X807911Y70204D01* +X807956Y70277D01* +X807999Y70352D01* +X808038Y70428D01* +X808074Y70507D01* +X808106Y70587D01* +X808134Y70668D01* +X808159Y70751D01* +X808180Y70834D01* +X808197Y70918D01* +X808211Y71003D01* +X808220Y71089D01* +X808226Y71175D01* +X808228Y71261D01* +X808228Y72221D01* +X808226Y72307D01* +X808220Y72393D01* +X808211Y72479D01* +X808197Y72564D01* +X808180Y72648D01* +X808159Y72732D01* +X808134Y72814D01* +X808106Y72895D01* +X808074Y72975D01* +X808038Y73054D01* +X807999Y73130D01* +X807956Y73205D01* +X807911Y73278D01* +X807862Y73349D01* +X807809Y73417D01* +X807754Y73484D01* +X807696Y73547D01* +X807635Y73608D01* +X807572Y73666D01* +X807505Y73721D01* +X807437Y73774D01* +X807366Y73823D01* +X807293Y73868D01* +X807218Y73911D01* +X807142Y73950D01* +X807063Y73986D01* +X806983Y74018D01* +X806902Y74046D01* +X806820Y74071D01* +X806736Y74092D01* +X806652Y74109D01* +X806567Y74123D01* +X806481Y74132D01* +X806395Y74138D01* +X806309Y74140D01* +X803430Y74140D01* +X803430Y77978D01* +X808228Y77978D01* +D17* +X828040Y73660D03* +D14* +X840232Y76708D02* +X840232Y68072D01* +X840232Y76708D02* +X842631Y76708D01* +X842728Y76706D01* +X842824Y76700D01* +X842920Y76691D01* +X843016Y76677D01* +X843111Y76660D01* +X843205Y76638D01* +X843298Y76613D01* +X843391Y76585D01* +X843482Y76552D01* +X843571Y76516D01* +X843659Y76476D01* +X843746Y76433D01* +X843831Y76387D01* +X843913Y76337D01* +X843994Y76283D01* +X844072Y76227D01* +X844148Y76167D01* +X844222Y76105D01* +X844293Y76039D01* +X844361Y75971D01* +X844427Y75900D01* +X844489Y75826D01* +X844549Y75750D01* +X844605Y75672D01* +X844659Y75591D01* +X844709Y75508D01* +X844755Y75424D01* +X844798Y75337D01* +X844838Y75249D01* +X844874Y75160D01* +X844907Y75069D01* +X844935Y74976D01* +X844960Y74883D01* +X844982Y74789D01* +X844999Y74694D01* +X845013Y74598D01* +X845022Y74502D01* +X845028Y74406D01* +X845030Y74309D01* +X845028Y74212D01* +X845022Y74116D01* +X845013Y74020D01* +X844999Y73924D01* +X844982Y73829D01* +X844960Y73735D01* +X844935Y73642D01* +X844907Y73549D01* +X844874Y73458D01* +X844838Y73369D01* +X844798Y73281D01* +X844755Y73194D01* +X844709Y73109D01* +X844659Y73027D01* +X844605Y72946D01* +X844549Y72868D01* +X844489Y72792D01* +X844427Y72718D01* +X844361Y72647D01* +X844293Y72579D01* +X844222Y72513D01* +X844148Y72451D01* +X844072Y72391D01* +X843994Y72335D01* +X843913Y72281D01* +X843831Y72231D01* +X843746Y72185D01* +X843659Y72142D01* +X843571Y72102D01* +X843482Y72066D01* +X843391Y72033D01* +X843298Y72005D01* +X843205Y71980D01* +X843111Y71958D01* +X843016Y71941D01* +X842920Y71927D01* +X842824Y71918D01* +X842728Y71912D01* +X842631Y71910D01* +X840232Y71910D01* +X843111Y71910D02* +X845030Y68072D01* +X851930Y76708D02* +X852022Y76706D01* +X852113Y76700D01* +X852204Y76691D01* +X852295Y76677D01* +X852385Y76660D01* +X852474Y76638D01* +X852562Y76613D01* +X852649Y76585D01* +X852735Y76552D01* +X852819Y76516D01* +X852902Y76477D01* +X852983Y76434D01* +X853062Y76387D01* +X853139Y76338D01* +X853214Y76285D01* +X853286Y76229D01* +X853356Y76170D01* +X853424Y76108D01* +X853489Y76043D01* +X853551Y75975D01* +X853610Y75905D01* +X853666Y75833D01* +X853719Y75758D01* +X853768Y75681D01* +X853815Y75602D01* +X853858Y75521D01* +X853897Y75438D01* +X853933Y75354D01* +X853966Y75268D01* +X853994Y75181D01* +X854019Y75093D01* +X854041Y75004D01* +X854058Y74914D01* +X854072Y74823D01* +X854081Y74732D01* +X854087Y74641D01* +X854089Y74549D01* +X851930Y76708D02* +X851827Y76706D01* +X851725Y76700D01* +X851623Y76691D01* +X851521Y76678D01* +X851420Y76661D01* +X851319Y76640D01* +X851220Y76616D01* +X851121Y76587D01* +X851024Y76556D01* +X850927Y76520D01* +X850832Y76482D01* +X850739Y76439D01* +X850647Y76393D01* +X850557Y76344D01* +X850469Y76292D01* +X850382Y76236D01* +X850298Y76177D01* +X850217Y76116D01* +X850137Y76051D01* +X850060Y75983D01* +X849985Y75912D01* +X849914Y75839D01* +X849845Y75763D01* +X849778Y75685D01* +X849715Y75604D01* +X849655Y75521D01* +X849598Y75436D01* +X849544Y75349D01* +X849493Y75259D01* +X849446Y75168D01* +X849402Y75076D01* +X849361Y74981D01* +X849324Y74886D01* +X849291Y74789D01* +X853369Y72870D02* +X853436Y72936D01* +X853500Y73005D01* +X853561Y73076D01* +X853619Y73150D01* +X853674Y73226D01* +X853726Y73304D01* +X853775Y73384D01* +X853821Y73466D01* +X853863Y73550D01* +X853902Y73636D01* +X853937Y73723D01* +X853968Y73811D01* +X853996Y73901D01* +X854021Y73991D01* +X854042Y74083D01* +X854059Y74175D01* +X854072Y74268D01* +X854081Y74361D01* +X854087Y74455D01* +X854089Y74549D01* +X853369Y72870D02* +X849291Y68072D01* +X854089Y68072D01* +D17* +X828040Y111760D03* +D14* +X840232Y108712D02* +X840232Y117348D01* +X842631Y117348D01* +X842728Y117346D01* +X842824Y117340D01* +X842920Y117331D01* +X843016Y117317D01* +X843111Y117300D01* +X843205Y117278D01* +X843298Y117253D01* +X843391Y117225D01* +X843482Y117192D01* +X843571Y117156D01* +X843659Y117116D01* +X843746Y117073D01* +X843831Y117027D01* +X843913Y116977D01* +X843994Y116923D01* +X844072Y116867D01* +X844148Y116807D01* +X844222Y116745D01* +X844293Y116679D01* +X844361Y116611D01* +X844427Y116540D01* +X844489Y116466D01* +X844549Y116390D01* +X844605Y116312D01* +X844659Y116231D01* +X844709Y116148D01* +X844755Y116064D01* +X844798Y115977D01* +X844838Y115889D01* +X844874Y115800D01* +X844907Y115709D01* +X844935Y115616D01* +X844960Y115523D01* +X844982Y115429D01* +X844999Y115334D01* +X845013Y115238D01* +X845022Y115142D01* +X845028Y115046D01* +X845030Y114949D01* +X845028Y114852D01* +X845022Y114756D01* +X845013Y114660D01* +X844999Y114564D01* +X844982Y114469D01* +X844960Y114375D01* +X844935Y114282D01* +X844907Y114189D01* +X844874Y114098D01* +X844838Y114009D01* +X844798Y113921D01* +X844755Y113834D01* +X844709Y113749D01* +X844659Y113667D01* +X844605Y113586D01* +X844549Y113508D01* +X844489Y113432D01* +X844427Y113358D01* +X844361Y113287D01* +X844293Y113219D01* +X844222Y113153D01* +X844148Y113091D01* +X844072Y113031D01* +X843994Y112975D01* +X843913Y112921D01* +X843831Y112871D01* +X843746Y112825D01* +X843659Y112782D01* +X843571Y112742D01* +X843482Y112706D01* +X843391Y112673D01* +X843298Y112645D01* +X843205Y112620D01* +X843111Y112598D01* +X843016Y112581D01* +X842920Y112567D01* +X842824Y112558D01* +X842728Y112552D01* +X842631Y112550D01* +X840232Y112550D01* +X843111Y112550D02* +X845030Y108712D01* +X851930Y117348D02* +X852022Y117346D01* +X852113Y117340D01* +X852204Y117331D01* +X852295Y117317D01* +X852385Y117300D01* +X852474Y117278D01* +X852562Y117253D01* +X852649Y117225D01* +X852735Y117192D01* +X852819Y117156D01* +X852902Y117117D01* +X852983Y117074D01* +X853062Y117027D01* +X853139Y116978D01* +X853214Y116925D01* +X853286Y116869D01* +X853356Y116810D01* +X853424Y116748D01* +X853489Y116683D01* +X853551Y116615D01* +X853610Y116545D01* +X853666Y116473D01* +X853719Y116398D01* +X853768Y116321D01* +X853815Y116242D01* +X853858Y116161D01* +X853897Y116078D01* +X853933Y115994D01* +X853966Y115908D01* +X853994Y115821D01* +X854019Y115733D01* +X854041Y115644D01* +X854058Y115554D01* +X854072Y115463D01* +X854081Y115372D01* +X854087Y115281D01* +X854089Y115189D01* +X851930Y117348D02* +X851827Y117346D01* +X851725Y117340D01* +X851623Y117331D01* +X851521Y117318D01* +X851420Y117301D01* +X851319Y117280D01* +X851220Y117256D01* +X851121Y117227D01* +X851024Y117196D01* +X850927Y117160D01* +X850832Y117122D01* +X850739Y117079D01* +X850647Y117033D01* +X850557Y116984D01* +X850469Y116932D01* +X850382Y116876D01* +X850298Y116817D01* +X850217Y116756D01* +X850137Y116691D01* +X850060Y116623D01* +X849985Y116552D01* +X849914Y116479D01* +X849845Y116403D01* +X849778Y116325D01* +X849715Y116244D01* +X849655Y116161D01* +X849598Y116076D01* +X849544Y115989D01* +X849493Y115899D01* +X849446Y115808D01* +X849402Y115716D01* +X849361Y115621D01* +X849324Y115526D01* +X849291Y115429D01* +X853369Y113510D02* +X853436Y113576D01* +X853500Y113645D01* +X853561Y113716D01* +X853619Y113790D01* +X853674Y113866D01* +X853726Y113944D01* +X853775Y114024D01* +X853821Y114106D01* +X853863Y114190D01* +X853902Y114276D01* +X853937Y114363D01* +X853968Y114451D01* +X853996Y114541D01* +X854021Y114631D01* +X854042Y114723D01* +X854059Y114815D01* +X854072Y114908D01* +X854081Y115001D01* +X854087Y115095D01* +X854089Y115189D01* +X853369Y113510D02* +X849291Y108712D01* +X854089Y108712D01* +X858435Y113510D02* +X861314Y113510D01* +X861400Y113508D01* +X861486Y113502D01* +X861572Y113493D01* +X861657Y113479D01* +X861741Y113462D01* +X861825Y113441D01* +X861907Y113416D01* +X861988Y113388D01* +X862068Y113356D01* +X862147Y113320D01* +X862223Y113281D01* +X862298Y113238D01* +X862371Y113193D01* +X862442Y113144D01* +X862510Y113091D01* +X862577Y113036D01* +X862640Y112978D01* +X862701Y112917D01* +X862759Y112854D01* +X862814Y112787D01* +X862867Y112719D01* +X862916Y112648D01* +X862961Y112575D01* +X863004Y112500D01* +X863043Y112424D01* +X863079Y112345D01* +X863111Y112265D01* +X863139Y112184D01* +X863164Y112102D01* +X863185Y112018D01* +X863202Y111934D01* +X863216Y111849D01* +X863225Y111763D01* +X863231Y111677D01* +X863233Y111591D01* +X863233Y111111D01* +X863231Y111014D01* +X863225Y110918D01* +X863216Y110822D01* +X863202Y110726D01* +X863185Y110631D01* +X863163Y110537D01* +X863138Y110444D01* +X863110Y110351D01* +X863077Y110260D01* +X863041Y110171D01* +X863001Y110083D01* +X862958Y109996D01* +X862912Y109911D01* +X862862Y109829D01* +X862808Y109748D01* +X862752Y109670D01* +X862692Y109594D01* +X862630Y109520D01* +X862564Y109449D01* +X862496Y109381D01* +X862425Y109315D01* +X862351Y109253D01* +X862275Y109193D01* +X862197Y109137D01* +X862116Y109083D01* +X862034Y109033D01* +X861949Y108987D01* +X861862Y108944D01* +X861774Y108904D01* +X861685Y108868D01* +X861594Y108835D01* +X861501Y108807D01* +X861408Y108782D01* +X861314Y108760D01* +X861219Y108743D01* +X861123Y108729D01* +X861027Y108720D01* +X860931Y108714D01* +X860834Y108712D01* +X860737Y108714D01* +X860641Y108720D01* +X860545Y108729D01* +X860449Y108743D01* +X860354Y108760D01* +X860260Y108782D01* +X860167Y108807D01* +X860074Y108835D01* +X859983Y108868D01* +X859894Y108904D01* +X859806Y108944D01* +X859719Y108987D01* +X859635Y109033D01* +X859552Y109083D01* +X859471Y109137D01* +X859393Y109193D01* +X859317Y109253D01* +X859243Y109315D01* +X859172Y109381D01* +X859104Y109449D01* +X859038Y109520D01* +X858976Y109594D01* +X858916Y109670D01* +X858860Y109748D01* +X858806Y109829D01* +X858756Y109912D01* +X858710Y109996D01* +X858667Y110083D01* +X858627Y110171D01* +X858591Y110260D01* +X858558Y110351D01* +X858530Y110444D01* +X858505Y110537D01* +X858483Y110631D01* +X858466Y110726D01* +X858452Y110822D01* +X858443Y110918D01* +X858437Y111014D01* +X858435Y111111D01* +X858435Y113510D01* +X858436Y113510D02* +X858438Y113633D01* +X858444Y113756D01* +X858454Y113879D01* +X858468Y114001D01* +X858485Y114123D01* +X858507Y114244D01* +X858532Y114364D01* +X858562Y114484D01* +X858595Y114602D01* +X858632Y114719D01* +X858672Y114836D01* +X858716Y114950D01* +X858764Y115064D01* +X858816Y115175D01* +X858871Y115285D01* +X858930Y115393D01* +X858992Y115500D01* +X859057Y115604D01* +X859126Y115706D01* +X859198Y115806D01* +X859273Y115903D01* +X859352Y115998D01* +X859433Y116090D01* +X859517Y116180D01* +X859604Y116267D01* +X859694Y116351D01* +X859786Y116432D01* +X859881Y116511D01* +X859978Y116586D01* +X860078Y116658D01* +X860180Y116727D01* +X860284Y116792D01* +X860391Y116854D01* +X860499Y116913D01* +X860609Y116968D01* +X860720Y117020D01* +X860834Y117067D01* +X860948Y117112D01* +X861065Y117152D01* +X861182Y117189D01* +X861300Y117222D01* +X861420Y117252D01* +X861540Y117277D01* +X861661Y117299D01* +X861783Y117316D01* +X861905Y117330D01* +X862028Y117340D01* +X862151Y117346D01* +X862274Y117348D01* +D32* +X194977Y12700D03* +X200311Y12700D03* +D33* +X205534Y12700D03* +D32* +X208534Y12700D03* +X212312Y12700D03* +X220313Y12700D03* +X223647Y12700D03* +D34* +X229092Y12700D03* +D32* +X234315Y12700D03* +D35* +X241205Y12700D03* +D32* +X244316Y12700D03* +X248095Y12700D03* +D35* +X256985Y12700D03* +D33* +X195088Y12922D03* +X200200Y12922D03* +D36* +X205534Y12922D03* +D33* +X208645Y12922D03* +X212423Y12922D03* +D37* +X220424Y12922D03* +D33* +X223536Y12922D03* +X229092Y12922D03* +D32* +X234315Y12922D03* +D38* +X241205Y12922D03* +D33* +X244205Y12922D03* +X247983Y12922D03* +D38* +X256985Y12922D03* +D33* +X195088Y13145D03* +X200200Y13145D03* +D39* +X205423Y13145D03* +D33* +X208645Y13145D03* +X212423Y13145D03* +D40* +X220424Y13145D03* +D33* +X223536Y13145D03* +X229092Y13145D03* +D35* +X234315Y13145D03* +D39* +X241205Y13145D03* +D33* +X244205Y13145D03* +X247983Y13145D03* +D41* +X256985Y13145D03* +D33* +X195088Y13367D03* +X200200Y13367D03* +D41* +X205423Y13367D03* +D33* +X208645Y13367D03* +X212423Y13367D03* +D42* +X220424Y13367D03* +D33* +X223536Y13367D03* +D35* +X228981Y13367D03* +X234315Y13367D03* +D43* +X241983Y13367D03* +D33* +X247983Y13367D03* +D44* +X257096Y13367D03* +D33* +X195088Y13589D03* +X200200Y13589D03* +D45* +X206312Y13589D03* +D33* +X212423Y13589D03* +D43* +X221313Y13589D03* +D46* +X229092Y13589D03* +D35* +X234315Y13589D03* +D45* +X241872Y13589D03* +D33* +X247983Y13589D03* +D47* +X256985Y13589D03* +D33* +X195088Y13811D03* +X200200Y13811D03* +D48* +X206200Y13811D03* +D33* +X212423Y13811D03* +D45* +X221202Y13811D03* +D46* +X229092Y13811D03* +X234426Y13811D03* +D48* +X241760Y13811D03* +D33* +X247983Y13811D03* +D49* +X257096Y13811D03* +D33* +X195088Y14034D03* +X200200Y14034D03* +D50* +X206089Y14034D03* +D33* +X212423Y14034D03* +D45* +X221202Y14034D03* +D51* +X228981Y14034D03* +X234315Y14034D03* +D48* +X241760Y14034D03* +D33* +X247983Y14034D03* +D43* +X257096Y14034D03* +D33* +X195088Y14256D03* +X200200Y14256D03* +D50* +X206089Y14256D03* +D33* +X212423Y14256D03* +D48* +X221091Y14256D03* +D51* +X228981Y14256D03* +X234315Y14256D03* +D50* +X241649Y14256D03* +D33* +X247983Y14256D03* +D43* +X256873Y14256D03* +D33* +X195088Y14478D03* +X200200Y14478D03* +D35* +X203645Y14478D03* +D51* +X208312Y14478D03* +D33* +X212423Y14478D03* +D51* +X218980Y14478D03* +D52* +X222980Y14478D03* +D37* +X229092Y14478D03* +X234426Y14478D03* +D46* +X239316Y14478D03* +X243983Y14478D03* +D33* +X247983Y14478D03* +D46* +X254873Y14478D03* +D33* +X258874Y14478D03* +X195088Y14700D03* +X200200Y14700D03* +D35* +X203422Y14700D03* +X208534Y14700D03* +D33* +X212423Y14700D03* +D51* +X218758Y14700D03* +X223203Y14700D03* +D52* +X228981Y14700D03* +X234315Y14700D03* +D33* +X239093Y14700D03* +D35* +X244094Y14700D03* +D33* +X247983Y14700D03* +D46* +X254651Y14700D03* +D53* +X258874Y14700D03* +D33* +X195088Y14923D03* +X200200Y14923D03* +X203311Y14923D03* +D35* +X208534Y14923D03* +D33* +X212423Y14923D03* +D46* +X218646Y14923D03* +X223314Y14923D03* +D52* +X228981Y14923D03* +X234315Y14923D03* +D33* +X239093Y14923D03* +X244205Y14923D03* +X247983Y14923D03* +X254429Y14923D03* +D54* +X258874Y14923D03* +D33* +X195088Y15145D03* +X200200Y15145D03* +X203311Y15145D03* +X208645Y15145D03* +X212423Y15145D03* +D35* +X218535Y15145D03* +X223425Y15145D03* +D36* +X229092Y15145D03* +X234426Y15145D03* +D32* +X238982Y15145D03* +D33* +X244205Y15145D03* +X247983Y15145D03* +D35* +X254318Y15145D03* +D33* +X195088Y15367D03* +X200200Y15367D03* +D32* +X203200Y15367D03* +D33* +X208645Y15367D03* +X212423Y15367D03* +D35* +X218535Y15367D03* +X223425Y15367D03* +D38* +X228981Y15367D03* +X234315Y15367D03* +D32* +X238982Y15367D03* +D33* +X244205Y15367D03* +X247983Y15367D03* +X254206Y15367D03* +X195088Y15589D03* +X200200Y15589D03* +X203311Y15589D03* +X208645Y15589D03* +X212423Y15589D03* +X218424Y15589D03* +X223536Y15589D03* +D32* +X228092Y15589D03* +X229870Y15589D03* +X233426Y15589D03* +X235204Y15589D03* +X238982Y15589D03* +D33* +X244205Y15589D03* +X247983Y15589D03* +X254206Y15589D03* +X195088Y15812D03* +X200200Y15812D03* +X203311Y15812D03* +X208645Y15812D03* +X212423Y15812D03* +X218424Y15812D03* +X223536Y15812D03* +D32* +X228092Y15812D03* +X230092Y15812D03* +X233426Y15812D03* +D33* +X235315Y15812D03* +D32* +X238982Y15812D03* +D33* +X244205Y15812D03* +X247983Y15812D03* +X254206Y15812D03* +X195088Y16034D03* +X200200Y16034D03* +X203533Y16034D03* +X208645Y16034D03* +X212423Y16034D03* +X218424Y16034D03* +X223536Y16034D03* +X227981Y16034D03* +D32* +X230092Y16034D03* +X233426Y16034D03* +X235426Y16034D03* +D33* +X239093Y16034D03* +X244205Y16034D03* +X247983Y16034D03* +D32* +X254095Y16034D03* +D33* +X195088Y16256D03* +X200200Y16256D03* +D35* +X203645Y16256D03* +D33* +X208645Y16256D03* +X212423Y16256D03* +X218424Y16256D03* +X223536Y16256D03* +X227981Y16256D03* +D32* +X230092Y16256D03* +X233204Y16256D03* +X235426Y16256D03* +D46* +X239316Y16256D03* +D33* +X244205Y16256D03* +X247983Y16256D03* +X253984Y16256D03* +X195088Y16478D03* +X200200Y16478D03* +D50* +X206089Y16478D03* +D33* +X212423Y16478D03* +X218424Y16478D03* +X223536Y16478D03* +D32* +X227870Y16478D03* +X230092Y16478D03* +X233204Y16478D03* +D33* +X235537Y16478D03* +D48* +X241760Y16478D03* +D33* +X247983Y16478D03* +D55* +X256762Y16478D03* +D33* +X195088Y16701D03* +X200200Y16701D03* +D48* +X206200Y16701D03* +D33* +X212423Y16701D03* +X218424Y16701D03* +X223536Y16701D03* +D32* +X227870Y16701D03* +X230315Y16701D03* +X233204Y16701D03* +D33* +X235537Y16701D03* +D48* +X241760Y16701D03* +D33* +X247983Y16701D03* +D55* +X256762Y16701D03* +D33* +X195088Y16923D03* +X200200Y16923D03* +D45* +X206312Y16923D03* +D33* +X212423Y16923D03* +X218424Y16923D03* +X223536Y16923D03* +X227759Y16923D03* +D32* +X230315Y16923D03* +X232982Y16923D03* +X235649Y16923D03* +D45* +X241872Y16923D03* +D33* +X247983Y16923D03* +D55* +X256762Y16923D03* +D33* +X195088Y17145D03* +X200200Y17145D03* +D45* +X206312Y17145D03* +D33* +X212423Y17145D03* +X218424Y17145D03* +X223536Y17145D03* +D32* +X227648Y17145D03* +X230315Y17145D03* +X232982Y17145D03* +D33* +X235760Y17145D03* +D43* +X241983Y17145D03* +D33* +X247983Y17145D03* +D55* +X256762Y17145D03* +D33* +X195088Y17367D03* +X200200Y17367D03* +D56* +X206534Y17367D03* +D33* +X212423Y17367D03* +X218424Y17367D03* +X223536Y17367D03* +D32* +X227648Y17367D03* +X230537Y17367D03* +X232982Y17367D03* +D33* +X235760Y17367D03* +D56* +X242094Y17367D03* +D33* +X247983Y17367D03* +D55* +X256762Y17367D03* +D33* +X195088Y17590D03* +X200200Y17590D03* +D49* +X206645Y17590D03* +D33* +X212423Y17590D03* +X218424Y17590D03* +X223536Y17590D03* +X227536Y17590D03* +D32* +X230537Y17590D03* +D34* +X232870Y17590D03* +D32* +X235871Y17590D03* +D47* +X242316Y17590D03* +D33* +X247983Y17590D03* +D55* +X256762Y17590D03* +D33* +X195088Y17812D03* +X200200Y17812D03* +D57* +X206978Y17812D03* +D33* +X212423Y17812D03* +X218424Y17812D03* +X223536Y17812D03* +X227536Y17812D03* +D32* +X230537Y17812D03* +X232759Y17812D03* +D33* +X235982Y17812D03* +D44* +X242649Y17812D03* +D33* +X247983Y17812D03* +D55* +X256762Y17812D03* +D33* +X195088Y18034D03* +X200200Y18034D03* +X208645Y18034D03* +X212423Y18034D03* +X218424Y18034D03* +X223536Y18034D03* +D32* +X227425Y18034D03* +X230759Y18034D03* +X232759Y18034D03* +D33* +X235982Y18034D03* +X244205Y18034D03* +X247983Y18034D03* +X253984Y18034D03* +X259540Y18034D03* +X195088Y18256D03* +X200200Y18256D03* +X208645Y18256D03* +X212423Y18256D03* +X218424Y18256D03* +X223536Y18256D03* +X227314Y18256D03* +D32* +X230759Y18256D03* +D34* +X232648Y18256D03* +D33* +X235982Y18256D03* +X244205Y18256D03* +X247983Y18256D03* +D32* +X254095Y18256D03* +D33* +X259540Y18256D03* +X195088Y18479D03* +X200200Y18479D03* +X208645Y18479D03* +X212423Y18479D03* +X218424Y18479D03* +X223536Y18479D03* +X227314Y18479D03* +D32* +X230759Y18479D03* +X232537Y18479D03* +X236093Y18479D03* +D33* +X244205Y18479D03* +D35* +X248095Y18479D03* +D33* +X254206Y18479D03* +D35* +X259429Y18479D03* +D33* +X195088Y18701D03* +X200200Y18701D03* +X208645Y18701D03* +X212423Y18701D03* +X218424Y18701D03* +D35* +X223425Y18701D03* +D33* +X227314Y18701D03* +D34* +X230870Y18701D03* +D32* +X232537Y18701D03* +D33* +X236204Y18701D03* +X244205Y18701D03* +D35* +X248095Y18701D03* +D33* +X254206Y18701D03* +D35* +X259429Y18701D03* +X195199Y18923D03* +X200089Y18923D03* +D33* +X208645Y18923D03* +D35* +X212535Y18923D03* +X218535Y18923D03* +X223425Y18923D03* +D33* +X227092Y18923D03* +D52* +X231648Y18923D03* +D33* +X236204Y18923D03* +X244205Y18923D03* +D35* +X248095Y18923D03* +D33* +X254206Y18923D03* +X259318Y18923D03* +D35* +X195199Y19145D03* +X200089Y19145D03* +D33* +X208645Y19145D03* +D35* +X212535Y19145D03* +X218535Y19145D03* +X223425Y19145D03* +D33* +X227092Y19145D03* +D52* +X231648Y19145D03* +D33* +X236204Y19145D03* +X244205Y19145D03* +D46* +X248206Y19145D03* +D33* +X254429Y19145D03* +D35* +X259207Y19145D03* +D46* +X195310Y19368D03* +X199977Y19368D03* +D58* +X204311Y19368D03* +D35* +X208534Y19368D03* +D46* +X212646Y19368D03* +X218646Y19368D03* +X223314Y19368D03* +D33* +X227092Y19368D03* +D37* +X231759Y19368D03* +D33* +X236426Y19368D03* +D58* +X239871Y19368D03* +D33* +X244205Y19368D03* +D51* +X248317Y19368D03* +D33* +X254429Y19368D03* +D35* +X259207Y19368D03* +D51* +X195421Y19590D03* +X199644Y19590D03* +D59* +X204089Y19590D03* +D35* +X208312Y19590D03* +D51* +X212757Y19590D03* +D54* +X215979Y19590D03* +D51* +X218758Y19590D03* +X223203Y19590D03* +D33* +X226870Y19590D03* +D51* +X231648Y19590D03* +D33* +X236426Y19590D03* +D59* +X239871Y19590D03* +D35* +X244094Y19590D03* +D37* +X248428Y19590D03* +D54* +X251762Y19590D03* +D46* +X254651Y19590D03* +X258874Y19590D03* +D38* +X195866Y19812D03* +D36* +X199311Y19812D03* +D34* +X204200Y19812D03* +D51* +X208090Y19812D03* +D36* +X213090Y19812D03* +D34* +X215757Y19812D03* +D52* +X219202Y19812D03* +D36* +X222869Y19812D03* +D33* +X226870Y19812D03* +D51* +X231648Y19812D03* +D33* +X236426Y19812D03* +D34* +X239982Y19812D03* +D51* +X243872Y19812D03* +D38* +X248761Y19812D03* +D34* +X251539Y19812D03* +D46* +X254873Y19812D03* +D51* +X258763Y19812D03* +D48* +X197533Y20034D03* +D56* +X206312Y20034D03* +D57* +X214090Y20034D03* +D48* +X221091Y20034D03* +D33* +X226870Y20034D03* +D46* +X231759Y20034D03* +D33* +X236649Y20034D03* +D56* +X241872Y20034D03* +D60* +X249761Y20034D03* +D56* +X256762Y20034D03* +D45* +X197422Y20257D03* +D43* +X205978Y20257D03* +D60* +X214201Y20257D03* +D45* +X221202Y20257D03* +D35* +X226759Y20257D03* +X231648Y20257D03* +D33* +X236649Y20257D03* +D43* +X241760Y20257D03* +D60* +X249761Y20257D03* +D47* +X256762Y20257D03* +D43* +X197310Y20479D03* +D56* +X206089Y20479D03* +D47* +X214313Y20479D03* +D45* +X221202Y20479D03* +D33* +X226647Y20479D03* +D35* +X231648Y20479D03* +D33* +X236649Y20479D03* +D56* +X241649Y20479D03* +D47* +X249873Y20479D03* +D60* +X256873Y20479D03* +D43* +X197310Y20701D03* +D49* +X205978Y20701D03* +X214424Y20701D03* +D43* +X221313Y20701D03* +D33* +X226647Y20701D03* +X231759Y20701D03* +D35* +X236760Y20701D03* +D47* +X241649Y20701D03* +D33* +X247983Y20701D03* +D39* +X250984Y20701D03* +D61* +X256762Y20701D03* +D33* +X195088Y20923D03* +D39* +X198088Y20923D03* +D57* +X206089Y20923D03* +D33* +X212423Y20923D03* +D39* +X215424Y20923D03* +X220313Y20923D03* +D33* +X223536Y20923D03* +D35* +X226536Y20923D03* +D32* +X231648Y20923D03* +D33* +X236871Y20923D03* +D57* +X241649Y20923D03* +D33* +X247983Y20923D03* +D39* +X251206Y20923D03* +D41* +X256762Y20923D03* +D33* +X195088Y21146D03* +D36* +X198199Y21146D03* +D62* +X205978Y21146D03* +D33* +X212423Y21146D03* +D36* +X215535Y21146D03* +X220424Y21146D03* +D33* +X223536Y21146D03* +D35* +X226536Y21146D03* +D32* +X231648Y21146D03* +D33* +X236871Y21146D03* +D41* +X241649Y21146D03* +D33* +X247983Y21146D03* +D36* +X251095Y21146D03* +D40* +X256873Y21146D03* +D33* +X195088Y21368D03* +D51* +X198088Y21368D03* +D38* +X205867Y21368D03* +D33* +X212423Y21368D03* +D46* +X215535Y21368D03* +X220424Y21368D03* +D33* +X223536Y21368D03* +X226425Y21368D03* +D34* +X231759Y21368D03* +D35* +X236982Y21368D03* +D38* +X241649Y21368D03* +D33* +X247983Y21368D03* +D51* +X251206Y21368D03* +D37* +X256873Y21368D03* +D33* +X195088Y21590D03* +D54* +X198199Y21590D03* +D59* +X205867Y21590D03* +D54* +X215535Y21590D03* +X220424Y21590D03* +D33* +X223536Y21590D03* +D59* +X241427Y21590D03* +D54* +X251095Y21590D03* +D59* +X256762Y21590D03* +D33* +X195088Y21812D03* +X223536Y21812D03* +X195088Y22035D03* +X223536Y22035D03* +X195088Y22257D03* +X223536Y22257D03* +X195088Y22479D03* +X223536Y22479D03* +X195088Y22701D03* +X223536Y22701D03* +X195088Y22924D03* +X223536Y22924D03* +X195088Y23146D03* +X223536Y23146D03* +X195088Y23368D03* +X223536Y23368D03* +X195088Y23590D03* +X223536Y23590D03* +X195088Y23813D03* +X223536Y23813D03* +X195088Y24035D03* +X223536Y24035D03* +X195088Y24257D03* +X223536Y24257D03* +X195088Y24479D03* +X223536Y24479D03* +X195088Y24702D03* +X223536Y24702D03* +X195088Y24924D03* +X223536Y24924D03* +X195088Y25146D03* +X195088Y25368D03* +X195088Y25591D03* +X195088Y25813D03* +X195088Y26035D03* +X195088Y26257D03* +X195088Y26480D03* +D51* +X188976Y26702D03* +D33* +X195088Y26702D03* +X198199Y26702D03* +D37* +X206200Y26702D03* +D33* +X211979Y26702D03* +X217313Y26702D03* +D37* +X226870Y26702D03* +D51* +X235204Y26702D03* +D35* +X243427Y26702D03* +D33* +X246428Y26702D03* +X250206Y26702D03* +D51* +X258985Y26702D03* +X266541Y26702D03* +D38* +X188976Y26924D03* +D33* +X195088Y26924D03* +D52* +X198311Y26924D03* +D39* +X206312Y26924D03* +D33* +X211979Y26924D03* +X217313Y26924D03* +D42* +X226870Y26924D03* +D38* +X235204Y26924D03* +D52* +X243427Y26924D03* +D33* +X246428Y26924D03* +X250206Y26924D03* +D40* +X259096Y26924D03* +D39* +X266541Y26924D03* +D41* +X188976Y27146D03* +D33* +X195088Y27146D03* +D40* +X198199Y27146D03* +D62* +X206200Y27146D03* +D33* +X211979Y27146D03* +X217313Y27146D03* +D44* +X226870Y27146D03* +D41* +X235204Y27146D03* +D40* +X243316Y27146D03* +D33* +X246428Y27146D03* +X250206Y27146D03* +D41* +X258985Y27146D03* +D62* +X266652Y27146D03* +D61* +X188976Y27369D03* +D33* +X195088Y27369D03* +D42* +X198199Y27369D03* +D57* +X206312Y27369D03* +D33* +X211979Y27369D03* +X217313Y27369D03* +D47* +X226759Y27369D03* +D61* +X235204Y27369D03* +D42* +X243316Y27369D03* +D33* +X246428Y27369D03* +X250206Y27369D03* +D44* +X259096Y27369D03* +D57* +X266541Y27369D03* +X188976Y27591D03* +D43* +X197310Y27591D03* +D47* +X206312Y27591D03* +D33* +X211979Y27591D03* +X217313Y27591D03* +D43* +X226870Y27591D03* +D57* +X235204Y27591D03* +D43* +X244205Y27591D03* +D33* +X250206Y27591D03* +D47* +X258985Y27591D03* +X266541Y27591D03* +X188976Y27813D03* +D45* +X197422Y27813D03* +D56* +X206312Y27813D03* +D33* +X211979Y27813D03* +X217313Y27813D03* +D48* +X226647Y27813D03* +D47* +X235204Y27813D03* +D45* +X244094Y27813D03* +D33* +X250206Y27813D03* +D49* +X259096Y27813D03* +D43* +X266652Y27813D03* +D56* +X188976Y28035D03* +D48* +X197533Y28035D03* +D43* +X206200Y28035D03* +D33* +X211979Y28035D03* +X217313Y28035D03* +D63* +X226647Y28035D03* +D56* +X235204Y28035D03* +D48* +X243983Y28035D03* +D33* +X250206Y28035D03* +D43* +X259096Y28035D03* +X266652Y28035D03* +X188865Y28258D03* +D48* +X197533Y28258D03* +D37* +X204422Y28258D03* +D51* +X207867Y28258D03* +D33* +X211979Y28258D03* +X217313Y28258D03* +D36* +X224647Y28258D03* +D37* +X229092Y28258D03* +D43* +X235093Y28258D03* +D48* +X243983Y28258D03* +D33* +X250206Y28258D03* +D43* +X258874Y28258D03* +D52* +X264763Y28258D03* +D37* +X268208Y28258D03* +D51* +X186976Y28480D03* +X190976Y28480D03* +D37* +X195532Y28480D03* +D51* +X199644Y28480D03* +D46* +X203978Y28480D03* +D32* +X208090Y28480D03* +D33* +X211979Y28480D03* +X217313Y28480D03* +D46* +X224425Y28480D03* +X229314Y28480D03* +D51* +X233204Y28480D03* +X237204Y28480D03* +D37* +X241760Y28480D03* +X245983Y28480D03* +D33* +X250206Y28480D03* +D51* +X256985Y28480D03* +D33* +X260874Y28480D03* +D46* +X264430Y28480D03* +D34* +X268430Y28480D03* +D46* +X186642Y28702D03* +X191087Y28702D03* +X195310Y28702D03* +X199977Y28702D03* +X203756Y28702D03* +D53* +X208201Y28702D03* +D33* +X211979Y28702D03* +X217313Y28702D03* +D32* +X224314Y28702D03* +D35* +X229426Y28702D03* +D46* +X232870Y28702D03* +X237315Y28702D03* +X241538Y28702D03* +D51* +X246094Y28702D03* +D33* +X250206Y28702D03* +D46* +X256651Y28702D03* +D64* +X260985Y28702D03* +D35* +X264097Y28702D03* +D53* +X268430Y28702D03* +D35* +X186531Y28924D03* +X191421Y28924D03* +X195199Y28924D03* +X200089Y28924D03* +X203645Y28924D03* +D58* +X208090Y28924D03* +D33* +X211979Y28924D03* +X217313Y28924D03* +D53* +X224203Y28924D03* +D33* +X229537Y28924D03* +D35* +X232759Y28924D03* +X237649Y28924D03* +X241427Y28924D03* +D46* +X246205Y28924D03* +D33* +X250206Y28924D03* +D35* +X256540Y28924D03* +D59* +X260985Y28924D03* +D33* +X263985Y28924D03* +D58* +X268542Y28924D03* +D35* +X186531Y29147D03* +X191421Y29147D03* +X195199Y29147D03* +X200089Y29147D03* +D33* +X203533Y29147D03* +X211979Y29147D03* +X217313Y29147D03* +D54* +X224203Y29147D03* +D33* +X229537Y29147D03* +D35* +X232759Y29147D03* +X237649Y29147D03* +X241427Y29147D03* +X246317Y29147D03* +D33* +X250206Y29147D03* +D35* +X256318Y29147D03* +D58* +X260985Y29147D03* +D35* +X263874Y29147D03* +D33* +X186420Y29369D03* +X191532Y29369D03* +X195088Y29369D03* +D35* +X200089Y29369D03* +D33* +X203533Y29369D03* +X211979Y29369D03* +X217313Y29369D03* +X229537Y29369D03* +X232648Y29369D03* +X237760Y29369D03* +X241316Y29369D03* +X246428Y29369D03* +X250206Y29369D03* +D35* +X256318Y29369D03* +D33* +X263763Y29369D03* +D35* +X186309Y29591D03* +D33* +X191532Y29591D03* +X195088Y29591D03* +X200200Y29591D03* +X203311Y29591D03* +X211979Y29591D03* +X217313Y29591D03* +X229537Y29591D03* +D35* +X232537Y29591D03* +D33* +X237760Y29591D03* +X241316Y29591D03* +X246428Y29591D03* +X250206Y29591D03* +X256207Y29591D03* +X263763Y29591D03* +X186198Y29813D03* +X191532Y29813D03* +X195088Y29813D03* +X200200Y29813D03* +X203311Y29813D03* +X211979Y29813D03* +X217313Y29813D03* +X229537Y29813D03* +X232426Y29813D03* +D35* +X237871Y29813D03* +D33* +X241316Y29813D03* +X246428Y29813D03* +X250206Y29813D03* +D35* +X256096Y29813D03* +D33* +X263763Y29813D03* +X186198Y30036D03* +D35* +X191643Y30036D03* +D33* +X195088Y30036D03* +X200200Y30036D03* +X203311Y30036D03* +X211979Y30036D03* +X217313Y30036D03* +D46* +X229314Y30036D03* +D33* +X232426Y30036D03* +D35* +X237871Y30036D03* +D33* +X241316Y30036D03* +X246428Y30036D03* +X250206Y30036D03* +X255984Y30036D03* +D32* +X263652Y30036D03* +D33* +X186198Y30258D03* +X191754Y30258D03* +X195088Y30258D03* +X200200Y30258D03* +X203311Y30258D03* +X211979Y30258D03* +X217313Y30258D03* +D40* +X228648Y30258D03* +D33* +X232426Y30258D03* +X237982Y30258D03* +X241316Y30258D03* +X246428Y30258D03* +X250206Y30258D03* +X255984Y30258D03* +D32* +X263652Y30258D03* +D33* +X186198Y30480D03* +X191754Y30480D03* +X195088Y30480D03* +X200200Y30480D03* +D63* +X205978Y30480D03* +D33* +X211979Y30480D03* +X217313Y30480D03* +D61* +X227870Y30480D03* +D33* +X232426Y30480D03* +X237982Y30480D03* +X241316Y30480D03* +X246428Y30480D03* +X250206Y30480D03* +X255984Y30480D03* +D55* +X266319Y30480D03* +D33* +X186198Y30702D03* +X191754Y30702D03* +X195088Y30702D03* +X200200Y30702D03* +D63* +X205978Y30702D03* +D33* +X211979Y30702D03* +X217313Y30702D03* +D60* +X227536Y30702D03* +D33* +X232426Y30702D03* +X237982Y30702D03* +X241316Y30702D03* +X246428Y30702D03* +X250206Y30702D03* +X255984Y30702D03* +D55* +X266319Y30702D03* +D33* +X186198Y30925D03* +X191754Y30925D03* +X195088Y30925D03* +X200200Y30925D03* +D63* +X205978Y30925D03* +D33* +X211979Y30925D03* +X217313Y30925D03* +D47* +X227203Y30925D03* +D33* +X232426Y30925D03* +X237982Y30925D03* +X241316Y30925D03* +X246428Y30925D03* +X250206Y30925D03* +X255984Y30925D03* +D55* +X266319Y30925D03* +D33* +X186198Y31147D03* +X191754Y31147D03* +X195088Y31147D03* +X200200Y31147D03* +D63* +X205978Y31147D03* +D33* +X211979Y31147D03* +X217313Y31147D03* +D47* +X226981Y31147D03* +D33* +X232426Y31147D03* +X237982Y31147D03* +X241316Y31147D03* +X246428Y31147D03* +X250206Y31147D03* +X255984Y31147D03* +D55* +X266319Y31147D03* +D33* +X186198Y31369D03* +X191754Y31369D03* +X195088Y31369D03* +X200200Y31369D03* +D63* +X205978Y31369D03* +D33* +X211979Y31369D03* +X217313Y31369D03* +D47* +X226759Y31369D03* +D33* +X232426Y31369D03* +X237982Y31369D03* +X241316Y31369D03* +X246428Y31369D03* +X250206Y31369D03* +X255984Y31369D03* +D55* +X266319Y31369D03* +D33* +X186198Y31591D03* +X191754Y31591D03* +X195088Y31591D03* +X200200Y31591D03* +D63* +X205978Y31591D03* +D33* +X211979Y31591D03* +X217313Y31591D03* +D57* +X226536Y31591D03* +D33* +X232426Y31591D03* +X237982Y31591D03* +X241316Y31591D03* +X246428Y31591D03* +X250206Y31591D03* +X255984Y31591D03* +D55* +X266319Y31591D03* +D33* +X186198Y31814D03* +X191754Y31814D03* +X195088Y31814D03* +X200200Y31814D03* +D63* +X205978Y31814D03* +D33* +X211979Y31814D03* +X217313Y31814D03* +D62* +X225981Y31814D03* +D33* +X232426Y31814D03* +X237982Y31814D03* +X241316Y31814D03* +X246428Y31814D03* +X250206Y31814D03* +X255984Y31814D03* +D63* +X266430Y31814D03* +D33* +X186198Y32036D03* +D35* +X191643Y32036D03* +D33* +X195088Y32036D03* +X200200Y32036D03* +X203311Y32036D03* +X208645Y32036D03* +X211979Y32036D03* +X217313Y32036D03* +D51* +X224981Y32036D03* +D33* +X232426Y32036D03* +D35* +X237871Y32036D03* +D33* +X241316Y32036D03* +X246428Y32036D03* +X250206Y32036D03* +X255984Y32036D03* +D32* +X263652Y32036D03* +D33* +X269097Y32036D03* +X186198Y32258D03* +X191532Y32258D03* +X195088Y32258D03* +X200200Y32258D03* +X203311Y32258D03* +X208645Y32258D03* +D35* +X212090Y32258D03* +D33* +X217313Y32258D03* +D35* +X224758Y32258D03* +D33* +X232426Y32258D03* +D35* +X237871Y32258D03* +D33* +X241316Y32258D03* +X246428Y32258D03* +X250206Y32258D03* +D35* +X256096Y32258D03* +D33* +X263763Y32258D03* +X269097Y32258D03* +D35* +X186309Y32480D03* +D33* +X191532Y32480D03* +X195088Y32480D03* +X200200Y32480D03* +X203311Y32480D03* +X208645Y32480D03* +D35* +X212090Y32480D03* +D33* +X217313Y32480D03* +D35* +X224536Y32480D03* +X232537Y32480D03* +D33* +X237760Y32480D03* +X241316Y32480D03* +X246428Y32480D03* +D35* +X250317Y32480D03* +D33* +X256207Y32480D03* +X263763Y32480D03* +D35* +X268986Y32480D03* +D33* +X186420Y32703D03* +X191532Y32703D03* +X195088Y32703D03* +D35* +X200089Y32703D03* +D32* +X203422Y32703D03* +D33* +X208645Y32703D03* +D35* +X212090Y32703D03* +X217202Y32703D03* +D33* +X224425Y32703D03* +X232648Y32703D03* +X237760Y32703D03* +X241316Y32703D03* +X246428Y32703D03* +D35* +X250317Y32703D03* +X256318Y32703D03* +D33* +X263763Y32703D03* +D35* +X268986Y32703D03* +X186531Y32925D03* +X191421Y32925D03* +X195199Y32925D03* +X200089Y32925D03* +D33* +X203533Y32925D03* +D35* +X208534Y32925D03* +D46* +X212201Y32925D03* +D35* +X217202Y32925D03* +D33* +X224425Y32925D03* +D35* +X232759Y32925D03* +X237649Y32925D03* +D33* +X241316Y32925D03* +X246428Y32925D03* +D35* +X250317Y32925D03* +X256318Y32925D03* +D58* +X260985Y32925D03* +D35* +X263874Y32925D03* +D33* +X268875Y32925D03* +D35* +X186531Y33147D03* +X191421Y33147D03* +X195199Y33147D03* +X200089Y33147D03* +X203645Y33147D03* +D33* +X208423Y33147D03* +D46* +X212201Y33147D03* +X217091Y33147D03* +D33* +X224425Y33147D03* +D58* +X229203Y33147D03* +D35* +X232759Y33147D03* +X237649Y33147D03* +D33* +X241316Y33147D03* +X246428Y33147D03* +D46* +X250428Y33147D03* +D35* +X256540Y33147D03* +D59* +X260985Y33147D03* +D33* +X263985Y33147D03* +D35* +X268764Y33147D03* +D46* +X186642Y33369D03* +X191087Y33369D03* +X195310Y33369D03* +X199977Y33369D03* +D33* +X203756Y33369D03* +D35* +X208312Y33369D03* +D51* +X212312Y33369D03* +D46* +X216868Y33369D03* +D35* +X224536Y33369D03* +D53* +X229092Y33369D03* +D46* +X232870Y33369D03* +X237315Y33369D03* +D33* +X241316Y33369D03* +X246428Y33369D03* +D51* +X250539Y33369D03* +D46* +X256651Y33369D03* +D64* +X260985Y33369D03* +D35* +X264097Y33369D03* +D46* +X268653Y33369D03* +D51* +X186976Y33592D03* +X190976Y33592D03* +D37* +X195532Y33592D03* +D51* +X199644Y33592D03* +D46* +X203978Y33592D03* +D51* +X208090Y33592D03* +D52* +X212535Y33592D03* +D51* +X216757Y33592D03* +D35* +X224758Y33592D03* +D32* +X228981Y33592D03* +D51* +X233204Y33592D03* +X237204Y33592D03* +D33* +X241316Y33592D03* +X246428Y33592D03* +D37* +X250650Y33592D03* +D59* +X253873Y33592D03* +D51* +X256985Y33592D03* +D33* +X260874Y33592D03* +D35* +X264319Y33592D03* +D46* +X268430Y33592D03* +D43* +X188865Y33814D03* +D48* +X197533Y33814D03* +D37* +X204422Y33814D03* +X207756Y33814D03* +D50* +X214535Y33814D03* +D51* +X224981Y33814D03* +X228759Y33814D03* +D43* +X235093Y33814D03* +D33* +X241316Y33814D03* +X246428Y33814D03* +D57* +X251873Y33814D03* +D43* +X258874Y33814D03* +D37* +X264652Y33814D03* +D52* +X268097Y33814D03* +D56* +X188976Y34036D03* +D45* +X197422Y34036D03* +D49* +X205978Y34036D03* +D48* +X214424Y34036D03* +D43* +X226870Y34036D03* +D56* +X235204Y34036D03* +D33* +X241316Y34036D03* +X246428Y34036D03* +D60* +X251984Y34036D03* +D43* +X259096Y34036D03* +D49* +X266430Y34036D03* +D47* +X188976Y34258D03* +D45* +X197422Y34258D03* +D47* +X206089Y34258D03* +D48* +X214424Y34258D03* +D43* +X227092Y34258D03* +D47* +X235204Y34258D03* +D33* +X241316Y34258D03* +X246428Y34258D03* +D47* +X252095Y34258D03* +D49* +X259096Y34258D03* +D47* +X266319Y34258D03* +D57* +X188976Y34481D03* +D43* +X197310Y34481D03* +D57* +X206089Y34481D03* +D45* +X214313Y34481D03* +D56* +X227203Y34481D03* +D57* +X235204Y34481D03* +D33* +X241316Y34481D03* +X246428Y34481D03* +D47* +X252095Y34481D03* +X258985Y34481D03* +D57* +X266319Y34481D03* +D61* +X188976Y34703D03* +D56* +X197199Y34703D03* +D61* +X206089Y34703D03* +D33* +X211979Y34703D03* +D41* +X215202Y34703D03* +D60* +X227092Y34703D03* +D61* +X235204Y34703D03* +D33* +X241316Y34703D03* +X246428Y34703D03* +X250206Y34703D03* +D39* +X253206Y34703D03* +D44* +X259096Y34703D03* +D61* +X266319Y34703D03* +D41* +X188976Y34925D03* +D33* +X195088Y34925D03* +D40* +X198199Y34925D03* +D42* +X205978Y34925D03* +D33* +X211979Y34925D03* +D39* +X215202Y34925D03* +D44* +X227092Y34925D03* +D41* +X235204Y34925D03* +D33* +X241316Y34925D03* +X246428Y34925D03* +X250206Y34925D03* +D40* +X253317Y34925D03* +D41* +X258985Y34925D03* +D42* +X266430Y34925D03* +D38* +X188976Y35147D03* +D33* +X195088Y35147D03* +D36* +X198199Y35147D03* +D38* +X206089Y35147D03* +D33* +X211979Y35147D03* +D52* +X215202Y35147D03* +D42* +X227092Y35147D03* +D38* +X235204Y35147D03* +D33* +X241316Y35147D03* +X246428Y35147D03* +X250206Y35147D03* +D52* +X253429Y35147D03* +D40* +X259096Y35147D03* +D38* +X266319Y35147D03* +D51* +X188976Y35370D03* +D32* +X194977Y35370D03* +D35* +X198088Y35370D03* +D46* +X205978Y35370D03* +D33* +X211979Y35370D03* +D35* +X215202Y35370D03* +D37* +X226870Y35370D03* +D51* +X235204Y35370D03* +D33* +X241316Y35370D03* +X246428Y35370D03* +X250206Y35370D03* +D35* +X253429Y35370D03* +D46* +X259096Y35370D03* +X266430Y35370D03* +D59* +X207645Y42482D03* +X247650Y42482D03* +D34* +X207756Y42704D03* +X247539Y42704D03* +D33* +X207756Y42926D03* +X247539Y42926D03* +D51* +X207867Y43148D03* +X247428Y43148D03* +D52* +X207867Y43371D03* +X247428Y43371D03* +D40* +X207978Y43593D03* +X247317Y43593D03* +D42* +X207978Y43815D03* +X247317Y43815D03* +D62* +X207978Y44037D03* +X247317Y44037D03* +D57* +X208090Y44260D03* +X247206Y44260D03* +D47* +X208090Y44482D03* +X247206Y44482D03* +D43* +X208201Y44704D03* +X247094Y44704D03* +D48* +X208201Y44926D03* +X247094Y44926D03* +D55* +X208312Y45149D03* +X246983Y45149D03* +D65* +X208312Y45371D03* +D59* +X217869Y45371D03* +X237427Y45371D03* +D65* +X246983Y45371D03* +D66* +X208423Y45593D03* +D64* +X217646Y45593D03* +X237649Y45593D03* +D66* +X246872Y45593D03* +D67* +X208423Y45815D03* +D33* +X217535Y45815D03* +X237760Y45815D03* +D67* +X246872Y45815D03* +D68* +X208534Y46038D03* +D46* +X217313Y46038D03* +X237982Y46038D03* +D68* +X246761Y46038D03* +D69* +X208534Y46260D03* +D51* +X217202Y46260D03* +X238093Y46260D03* +D69* +X246761Y46260D03* +D70* +X208645Y46482D03* +D36* +X217091Y46482D03* +X238204Y46482D03* +D70* +X246650Y46482D03* +D71* +X208645Y46704D03* +D40* +X216868Y46704D03* +X238427Y46704D03* +D71* +X246650Y46704D03* +D72* +X210868Y46927D03* +X244427Y46927D03* +D73* +X210757Y47149D03* +X244539Y47149D03* +D74* +X210757Y47371D03* +X244539Y47371D03* +D75* +X210645Y47593D03* +X244650Y47593D03* +D76* +X210534Y47816D03* +X244761Y47816D03* +D77* +X210534Y48038D03* +X244761Y48038D03* +D78* +X210423Y48260D03* +X244872Y48260D03* +D79* +X210423Y48482D03* +X244872Y48482D03* +X210423Y48705D03* +X244872Y48705D03* +D80* +X210534Y48927D03* +X244761Y48927D03* +D79* +X210645Y49149D03* +X244650Y49149D03* +D80* +X210757Y49371D03* +X244539Y49371D03* +X210979Y49594D03* +X244316Y49594D03* +X210979Y49816D03* +X244316Y49816D03* +X211201Y50038D03* +X244094Y50038D03* +D78* +X211312Y50260D03* +X243983Y50260D03* +X211312Y50483D03* +X243983Y50483D03* +X211534Y50705D03* +X243761Y50705D03* +D77* +X211646Y50927D03* +X243650Y50927D03* +D78* +X211757Y51149D03* +X243538Y51149D03* +D77* +X211868Y51372D03* +X243427Y51372D03* +D81* +X211979Y51594D03* +X243316Y51594D03* +D77* +X212090Y51816D03* +X243205Y51816D03* +D81* +X212201Y52038D03* +X243094Y52038D03* +X212423Y52261D03* +X242872Y52261D03* +D76* +X212535Y52483D03* +X242761Y52483D03* +X212535Y52705D03* +X242761Y52705D03* +X212757Y52927D03* +X242538Y52927D03* +D75* +X212868Y53150D03* +X242427Y53150D03* +D76* +X212979Y53372D03* +X242316Y53372D03* +D75* +X213090Y53594D03* +X242205Y53594D03* +X213312Y53816D03* +X241983Y53816D03* +X213312Y54039D03* +X241983Y54039D03* +D74* +X213424Y54261D03* +X241872Y54261D03* +X213646Y54483D03* +X241649Y54483D03* +X213646Y54705D03* +X241649Y54705D03* +X213868Y54928D03* +X241427Y54928D03* +D82* +X213979Y55150D03* +X241316Y55150D03* +X213979Y55372D03* +X241316Y55372D03* +X214201Y55594D03* +X241094Y55594D03* +X214201Y55817D03* +X241094Y55817D03* +D74* +X214313Y56039D03* +X240983Y56039D03* +D75* +X214201Y56261D03* +X241094Y56261D03* +D76* +X214313Y56483D03* +X240983Y56483D03* +D81* +X214201Y56706D03* +X241094Y56706D03* +X214201Y56928D03* +X241094Y56928D03* +D77* +X214313Y57150D03* +X240983Y57150D03* +D78* +X214201Y57372D03* +X241094Y57372D03* +D80* +X214313Y57595D03* +X240983Y57595D03* +D79* +X214201Y57817D03* +X241094Y57817D03* +X214201Y58039D03* +X241094Y58039D03* +D83* +X214313Y58261D03* +X240983Y58261D03* +D84* +X214201Y58484D03* +X241094Y58484D03* +D85* +X214313Y58706D03* +X240983Y58706D03* +D86* +X214201Y58928D03* +X241094Y58928D03* +D87* +X214313Y59150D03* +X240983Y59150D03* +X214313Y59373D03* +X240983Y59373D03* +D88* +X214201Y59595D03* +X241094Y59595D03* +X214201Y59817D03* +X241094Y59817D03* +X213979Y60039D03* +X241316Y60039D03* +D87* +X213868Y60262D03* +X241427Y60262D03* +D85* +X213646Y60484D03* +X241649Y60484D03* +X213424Y60706D03* +X241872Y60706D03* +D84* +X213312Y60928D03* +X241983Y60928D03* +D83* +X212979Y61151D03* +X242316Y61151D03* +D79* +X212868Y61373D03* +X242427Y61373D03* +D80* +X212757Y61595D03* +X242538Y61595D03* +X212535Y61817D03* +X242761Y61817D03* +D77* +X212312Y62040D03* +X242983Y62040D03* +X212090Y62262D03* +X243205Y62262D03* +D78* +X211979Y62484D03* +X243316Y62484D03* +D83* +X211423Y62706D03* +X243872Y62706D03* +D88* +X210645Y62929D03* +X244650Y62929D03* +D89* +X209979Y63151D03* +X245316Y63151D03* +D90* +X209312Y63373D03* +X245983Y63373D03* +D91* +X208645Y63595D03* +X246650Y63595D03* +D92* +X207978Y63818D03* +X247317Y63818D03* +D93* +X207312Y64040D03* +X247983Y64040D03* +D94* +X207201Y64262D03* +X248095Y64262D03* +X206978Y64484D03* +X248317Y64484D03* +X206978Y64707D03* +X248317Y64707D03* +X206978Y64929D03* +X248317Y64929D03* +D93* +X206867Y65151D03* +X248428Y65151D03* +X206867Y65373D03* +X248428Y65373D03* +D95* +X206756Y65596D03* +X248539Y65596D03* +X206756Y65818D03* +X248539Y65818D03* +X206756Y66040D03* +X248539Y66040D03* +D96* +X206645Y66262D03* +X248650Y66262D03* +X206645Y66485D03* +X248650Y66485D03* +X206645Y66707D03* +X248650Y66707D03* +X206645Y66929D03* +X248650Y66929D03* +X206645Y67151D03* +X248650Y67151D03* +D97* +X206534Y67374D03* +X248761Y67374D03* +X206534Y67596D03* +X248761Y67596D03* +X206534Y67818D03* +X248761Y67818D03* +X206534Y68040D03* +X248761Y68040D03* +X206534Y68263D03* +X248761Y68263D03* +X206534Y68485D03* +X248761Y68485D03* +X206534Y68707D03* +X248761Y68707D03* +X206534Y68929D03* +X248761Y68929D03* +X206534Y69152D03* +X248761Y69152D03* +X206534Y69374D03* +X248761Y69374D03* +D96* +X206645Y69596D03* +X248650Y69596D03* +X206645Y69818D03* +X248650Y69818D03* +X206645Y70041D03* +X248650Y70041D03* +X206645Y70263D03* +X248650Y70263D03* +X206645Y70485D03* +X248650Y70485D03* +X206645Y70707D03* +X248650Y70707D03* +D95* +X206756Y70930D03* +X248539Y70930D03* +X206756Y71152D03* +X248539Y71152D03* +X206756Y71374D03* +X248539Y71374D03* +D93* +X206867Y71596D03* +X248428Y71596D03* +X206867Y71819D03* +X248428Y71819D03* +X206867Y72041D03* +X248428Y72041D03* +D94* +X206978Y72263D03* +X248317Y72263D03* +X206978Y72485D03* +X248317Y72485D03* +D98* +X207089Y72708D03* +X248206Y72708D03* +D94* +X207201Y72930D03* +X248095Y72930D03* +X207423Y73152D03* +X247872Y73152D03* +D97* +X207867Y73374D03* +X247428Y73374D03* +D91* +X208645Y73597D03* +X246650Y73597D03* +D99* +X209312Y73819D03* +X245983Y73819D03* +D89* +X209979Y74041D03* +X245316Y74041D03* +D88* +X210645Y74263D03* +X244650Y74263D03* +D84* +X211312Y74486D03* +X243983Y74486D03* +D78* +X211979Y74708D03* +X243316Y74708D03* +D77* +X212312Y74930D03* +X242983Y74930D03* +X212535Y75152D03* +X242761Y75152D03* +D78* +X212646Y75375D03* +X242649Y75375D03* +D80* +X212757Y75597D03* +X242538Y75597D03* +X212979Y75819D03* +X242316Y75819D03* +D83* +X213201Y76041D03* +X242094Y76041D03* +X213424Y76264D03* +X241872Y76264D03* +D85* +X213646Y76486D03* +X241649Y76486D03* +D86* +X213979Y76708D03* +X241316Y76708D03* +D88* +X214201Y76930D03* +X241094Y76930D03* +D100* +X214424Y77153D03* +X240871Y77153D03* +D89* +X214868Y77375D03* +X240427Y77375D03* +D101* +X215424Y77597D03* +X239871Y77597D03* +D102* +X227648Y77819D03* +X227648Y78042D03* +D103* +X227648Y78264D03* +X227648Y78486D03* +X227648Y78708D03* +D104* +X227648Y78931D03* +X227648Y79153D03* +D105* +X227648Y79375D03* +X227648Y79597D03* +D106* +X227648Y79820D03* +X227648Y80042D03* +X227648Y80264D03* +D107* +X227648Y80486D03* +X227648Y80709D03* +D108* +X227648Y80931D03* +X227648Y81153D03* +X227648Y81375D03* +D107* +X227648Y81598D03* +X227648Y81820D03* +D106* +X227648Y82042D03* +D105* +X227648Y82264D03* +D109* +X227759Y82487D03* +D104* +X227648Y82709D03* +D103* +X227648Y82931D03* +D102* +X227648Y83153D03* +X227648Y83376D03* +D110* +X227648Y83598D03* +D111* +X227648Y83820D03* +X227648Y84042D03* +D112* +X227648Y84265D03* +D113* +X227648Y84487D03* +X227648Y84709D03* +D114* +X227648Y84931D03* +D115* +X227648Y85154D03* +X227648Y85376D03* +D116* +X227648Y85598D03* +D117* +X227648Y85820D03* +D118* +X227648Y86043D03* +X227648Y86265D03* +D119* +X227648Y86487D03* +D120* +X227648Y86709D03* +X227648Y86932D03* +D121* +X227648Y87154D03* +D122* +X227648Y87376D03* +X227648Y87598D03* +D123* +X227648Y87821D03* +D124* +X227648Y88043D03* +X227648Y88265D03* +D125* +X227648Y88487D03* +X227648Y88710D03* +D124* +X227648Y88932D03* +D123* +X227648Y89154D03* +D122* +X227648Y89376D03* +D121* +X227648Y89599D03* +D120* +X227648Y89821D03* +D126* +X208756Y90043D03* +D95* +X227648Y90043D03* +D126* +X246539Y90043D03* +D127* +X208756Y90265D03* +D128* +X227648Y90265D03* +D127* +X246539Y90265D03* +D71* +X208645Y90488D03* +D129* +X227648Y90488D03* +D71* +X246650Y90488D03* +D70* +X208645Y90710D03* +D130* +X227648Y90710D03* +D70* +X246650Y90710D03* +D69* +X208534Y90932D03* +D131* +X227648Y90932D03* +D69* +X246761Y90932D03* +D68* +X208534Y91154D03* +D85* +X227648Y91154D03* +D68* +X246761Y91154D03* +D67* +X208423Y91377D03* +D77* +X227648Y91377D03* +D67* +X246872Y91377D03* +D66* +X208423Y91599D03* +D74* +X227648Y91599D03* +D66* +X246872Y91599D03* +D65* +X208312Y91821D03* +D132* +X227648Y91821D03* +D65* +X246983Y91821D03* +D55* +X208312Y92043D03* +D133* +X227648Y92043D03* +D55* +X246983Y92043D03* +D50* +X208312Y92266D03* +D134* +X227648Y92266D03* +D48* +X247094Y92266D03* +D43* +X208201Y92488D03* +D135* +X227648Y92488D03* +D43* +X247094Y92488D03* +D49* +X208201Y92710D03* +D126* +X227648Y92710D03* +D49* +X247094Y92710D03* +D57* +X208090Y92932D03* +D126* +X227648Y92932D03* +D57* +X247206Y92932D03* +D61* +X208090Y93155D03* +D126* +X227648Y93155D03* +D61* +X247206Y93155D03* +D42* +X207978Y93377D03* +D126* +X227648Y93377D03* +D42* +X247317Y93377D03* +D40* +X207978Y93599D03* +D127* +X227648Y93599D03* +D40* +X247317Y93599D03* +D52* +X207867Y93821D03* +D127* +X227648Y93821D03* +D52* +X247428Y93821D03* +D51* +X207867Y94044D03* +D127* +X227648Y94044D03* +D51* +X247428Y94044D03* +D33* +X207756Y94266D03* +D127* +X227648Y94266D03* +D33* +X247539Y94266D03* +D34* +X207756Y94488D03* +D127* +X227648Y94488D03* +D34* +X247539Y94488D03* +D59* +X207645Y94710D03* +D127* +X227648Y94710D03* +D59* +X247650Y94710D03* +D136* +X227648Y94933D03* +X227648Y95155D03* +X227648Y95377D03* +X227648Y95599D03* +X227648Y95822D03* +D137* +X227648Y96044D03* +X227648Y96266D03* +X227648Y96488D03* +X227648Y96711D03* +X227648Y96933D03* +D138* +X227648Y97155D03* +X227648Y97377D03* +X227648Y97600D03* +X227648Y97822D03* +X227648Y98044D03* +X227648Y98266D03* +D69* +X227648Y98489D03* +X227648Y98711D03* +X227648Y98933D03* +X227648Y99155D03* +X227648Y99378D03* +D68* +X227648Y99600D03* +X227648Y99822D03* +X227648Y100044D03* +X227648Y100267D03* +X227648Y100489D03* +X227648Y100711D03* +D139* +X227648Y100933D03* +X227648Y101156D03* +D140* +X227648Y101378D03* +D141* +X730809Y168656D03* +D142* +X730453Y169367D03* +D143* +X730453Y170078D03* +D144* +X730809Y170790D03* +D145* +X730453Y171501D03* +D146* +X730453Y172212D03* +D147* +X730453Y172923D03* +D148* +X730453Y173634D03* +X730453Y174346D03* +D149* +X730453Y175057D03* +D148* +X730453Y175768D03* +D150* +X718363Y176479D03* +D149* +X730453Y176479D03* +D151* +X718363Y177190D03* +D148* +X730453Y177190D03* +D152* +X742188Y177190D03* +D153* +X725830Y177902D03* +D154* +X742188Y177902D03* +D155* +X725119Y178613D03* +D156* +X742188Y178613D03* +D157* +X730098Y179324D03* +D158* +X730098Y180035D03* +D159* +X730453Y180746D03* +X730453Y181458D03* +D160* +X730098Y182169D03* +D161* +X730098Y182880D03* +D162* +X730453Y183591D03* +D163* +X706984Y184302D03* +D164* +X730453Y184302D03* +D151* +X706984Y185014D03* +D159* +X730453Y185014D03* +D165* +X753923Y185014D03* +D166* +X706984Y185725D03* +D167* +X730453Y185725D03* +D142* +X753923Y185725D03* +D168* +X730098Y186436D03* +D169* +X730098Y187147D03* +D170* +X730098Y187858D03* +D171* +X730453Y188570D03* +D172* +X730098Y189281D03* +D173* +X730098Y189992D03* +D174* +X730453Y190703D03* +D175* +X730453Y191414D03* +X730453Y192126D03* +D176* +X695604Y192837D03* +D174* +X730453Y192837D03* +D177* +X765302Y192837D03* +D178* +X695249Y193548D03* +D171* +X730453Y193548D03* +D151* +X765302Y193548D03* +D160* +X709473Y194259D03* +D179* +X746455Y194259D03* +D180* +X765302Y194259D03* +D181* +X707339Y194970D03* +D182* +X753212Y194970D03* +D183* +X705917Y195682D03* +D184* +X754634Y195682D03* +D185* +X704850Y196393D03* +X756056Y196393D03* +D186* +X703783Y197104D03* +D187* +X756768Y197104D03* +D188* +X703428Y197815D03* +X757479Y197815D03* +D189* +X702716Y198526D03* +X758190Y198526D03* +D190* +X702361Y199238D03* +D191* +X758546Y199238D03* +D192* +X701650Y199949D03* +X759257Y199949D03* +D193* +X683870Y200660D03* +D194* +X701294Y200660D03* +D165* +X730453Y200660D03* +D194* +X759612Y200660D03* +D195* +X683870Y201371D03* +D196* +X700938Y201371D03* +D166* +X730453Y201371D03* +D196* +X759968Y201371D03* +D176* +X776681Y201371D03* +D197* +X695960Y202082D03* +D198* +X730453Y202082D03* +D199* +X759968Y202082D03* +D178* +X777037Y202082D03* +D183* +X695249Y202794D03* +D148* +X730453Y202794D03* +D184* +X765302Y202794D03* +D200* +X694893Y203505D03* +D201* +X730809Y203505D03* +D202* +X765658Y203505D03* +D203* +X694182Y204216D03* +D204* +X730453Y204216D03* +D183* +X766369Y204216D03* +D202* +X693826Y204927D03* +D142* +X724052Y204927D03* +D205* +X730809Y204927D03* +D142* +X737565Y204927D03* +D206* +X766724Y204927D03* +D183* +X693826Y205638D03* +D207* +X722630Y205638D03* +D208* +X730809Y205638D03* +D209* +X738988Y205638D03* +D184* +X767436Y205638D03* +D210* +X693471Y206350D03* +D211* +X721208Y206350D03* +D208* +X730809Y206350D03* +D211* +X740410Y206350D03* +D184* +X767436Y206350D03* +D206* +X692760Y207061D03* +D205* +X720141Y207061D03* +X730809Y207061D03* +X741477Y207061D03* +D212* +X767791Y207061D03* +D184* +X692760Y207772D03* +D163* +X719074Y207772D03* +D208* +X730809Y207772D03* +D163* +X742544Y207772D03* +D213* +X767791Y207772D03* +D185* +X692760Y208483D03* +D214* +X718363Y208483D03* +D205* +X730809Y208483D03* +D214* +X743255Y208483D03* +D215* +X768147Y208483D03* +D216* +X692760Y209194D03* +D217* +X717652Y209194D03* +D208* +X730809Y209194D03* +D218* +X743966Y209194D03* +D219* +X768147Y209194D03* +D193* +X673202Y209906D03* +D220* +X692404Y209906D03* +D217* +X716940Y209906D03* +D208* +X730809Y209906D03* +D217* +X744677Y209906D03* +D186* +X768502Y209906D03* +D195* +X673202Y210617D03* +D188* +X692760Y210617D03* +D205* +X730809Y210617D03* +D188* +X768147Y210617D03* +D176* +X787349Y210617D03* +D221* +X688137Y211328D03* +D208* +X730809Y211328D03* +D187* +X768147Y211328D03* +D178* +X787705Y211328D03* +D222* +X687426Y212039D03* +D223* +X730809Y212039D03* +D162* +X773125Y212039D03* +D224* +X687070Y212750D03* +D225* +X730809Y212750D03* +D221* +X773481Y212750D03* +D226* +X686714Y213462D03* +D178* +X730809Y213462D03* +D224* +X773836Y213462D03* +D227* +X686714Y214173D03* +D166* +X730453Y214173D03* +D228* +X773836Y214173D03* +D229* +X686359Y214884D03* +D230* +X730809Y214884D03* +D224* +X774548Y214884D03* +D227* +X686003Y215595D03* +D231* +X730453Y215595D03* +D228* +X774548Y215595D03* +D226* +X686003Y216306D03* +D198* +X730453Y216306D03* +D224* +X774548Y216306D03* +D226* +X686003Y217018D03* +D193* +X727253Y217018D03* +D232* +X733654Y217018D03* +D224* +X774548Y217018D03* +D233* +X686359Y217729D03* +D205* +X725830Y217729D03* +X735076Y217729D03* +D228* +X774548Y217729D03* +D229* +X686359Y218440D03* +D234* +X725475Y218440D03* +X736143Y218440D03* +D224* +X774548Y218440D03* +D214* +X662889Y219151D03* +D233* +X686359Y219151D03* +D177* +X724764Y219151D03* +X736854Y219151D03* +D228* +X774548Y219151D03* +D151* +X662889Y219862D03* +D221* +X686714Y219862D03* +D163* +X724052Y219862D03* +D234* +X737565Y219862D03* +D235* +X774548Y219862D03* +D208* +X797662Y219862D03* +D236* +X682092Y220574D03* +D234* +X723341Y220574D03* +X737565Y220574D03* +D235* +X774548Y220574D03* +D151* +X798017Y220574D03* +D237* +X681736Y221285D03* +D177* +X722630Y221285D03* +X738276Y221285D03* +D238* +X778815Y221285D03* +D239* +X681380Y221996D03* +D208* +X722274Y221996D03* +D163* +X738988Y221996D03* +D240* +X779170Y221996D03* +D241* +X680669Y222707D03* +D205* +X721563Y222707D03* +X739343Y222707D03* +D242* +X779882Y222707D03* +D239* +X680669Y223418D03* +D163* +X721208Y223418D03* +D208* +X740054Y223418D03* +D239* +X780237Y223418D03* +D243* +X680314Y224130D03* +D163* +X720496Y224130D03* +D208* +X740766Y224130D03* +D239* +X780237Y224130D03* +D244* +X679958Y224841D03* +D205* +X719430Y224841D03* +X741477Y224841D03* +D242* +X780593Y224841D03* +D245* +X679958Y225552D03* +D193* +X718718Y225552D03* +X742899Y225552D03* +D239* +X780948Y225552D03* +D244* +X679958Y226263D03* +D223* +X718007Y226263D03* +D150* +X743255Y226263D03* +D241* +X780948Y226263D03* +D240* +X679602Y226974D03* +D208* +X717296Y226974D03* +X743610Y226974D03* +D246* +X781304Y226974D03* +D240* +X679602Y227686D03* +D247* +X717296Y227686D03* +D163* +X743966Y227686D03* +D246* +X781304Y227686D03* +D248* +X679958Y228397D03* +X780948Y228397D03* +D209* +X652221Y229108D03* +D236* +X679958Y229108D03* +D249* +X781304Y229108D03* +D250* +X652577Y229819D03* +D251* +X679958Y229819D03* +D252* +X781304Y229819D03* +D253* +X807974Y229819D03* +D254* +X674980Y230530D03* +D255* +X785216Y230530D03* +D254* +X674980Y231242D03* +D256* +X785927Y231242D03* +D257* +X674268Y231953D03* +D258* +X786282Y231953D03* +D259* +X673913Y232664D03* +D260* +X786638Y232664D03* +D261* +X673913Y233375D03* +D262* +X786638Y233375D03* +D254* +X673557Y234086D03* +X787349Y234086D03* +D168* +X673202Y234798D03* +D254* +X787349Y234798D03* +D263* +X673202Y235509D03* +D257* +X787349Y235509D03* +D260* +X672846Y236220D03* +D264* +X787705Y236220D03* +D258* +X673202Y236931D03* +X787705Y236931D03* +D264* +X673202Y237642D03* +X787705Y237642D03* +D255* +X672846Y238354D03* +X788060Y238354D03* +D177* +X642976Y239065D03* +D265* +X673202Y239065D03* +X787705Y239065D03* +D173* +X669646Y239776D03* +D266* +X787705Y239776D03* +D217* +X817220Y239776D03* +D267* +X669290Y240487D03* +D268* +X787705Y240487D03* +D269* +X817575Y240487D03* +D175* +X668579Y241198D03* +D270* +X791616Y241198D03* +D271* +X668223Y241910D03* +D173* +X791972Y241910D03* +D272* +X667868Y242621D03* +D267* +X792328Y242621D03* +D273* +X667512Y243332D03* +D175* +X793039Y243332D03* +D274* +X667512Y244043D03* +D174* +X793039Y244043D03* +D275* +X667156Y244754D03* +D271* +X793394Y244754D03* +X666801Y245466D03* +D276* +X793750Y245466D03* +D277* +X666801Y246177D03* +D267* +X793750Y246177D03* +D271* +X666801Y246888D03* +D276* +X793750Y246888D03* +D174* +X666445Y247599D03* +D172* +X794106Y247599D03* +D173* +X666801Y248310D03* +X794106Y248310D03* +X666801Y249022D03* +X794106Y249022D03* +D278* +X667156Y249733D03* +D279* +X794106Y249733D03* +D141* +X634797Y250444D03* +D170* +X666801Y250444D03* +X794106Y250444D03* +D280* +X663956Y251155D03* +D281* +X793750Y251155D03* +D282* +X825398Y251155D03* +D283* +X663245Y251866D03* +D284* +X796950Y251866D03* +D283* +X662534Y252578D03* +D285* +X797662Y252578D03* +D286* +X662534Y253289D03* +D287* +X798017Y253289D03* +D288* +X662178Y254000D03* +D283* +X798373Y254000D03* +D289* +X661467Y254711D03* +D287* +X798728Y254711D03* +D290* +X661467Y255422D03* +D291* +X799084Y255422D03* +D290* +X661467Y256134D03* +D291* +X799084Y256134D03* +D286* +X661111Y256845D03* +X799795Y256845D03* +D283* +X661111Y257556D03* +X799795Y257556D03* +D286* +X661111Y258267D03* +X799795Y258267D03* +D292* +X660756Y258978D03* +X800151Y258978D03* +X660756Y259690D03* +D293* +X799795Y259690D03* +D294* +X661111Y260401D03* +X799795Y260401D03* +D293* +X661111Y261112D03* +D295* +X800151Y261112D03* +D296* +X626262Y261823D03* +D297* +X661111Y261823D03* +X799795Y261823D03* +D298* +X657911Y262534D03* +D299* +X799795Y262534D03* +D300* +X657555Y263246D03* +D301* +X802640Y263246D03* +D302* +X656844Y263957D03* +D303* +X803351Y263957D03* +D304* +X656488Y264668D03* +D298* +X803707Y264668D03* +D305* +X656133Y265379D03* +D302* +X804062Y265379D03* +D304* +X655777Y266090D03* +D306* +X804418Y266090D03* +D307* +X655422Y266802D03* +D308* +X804774Y266802D03* +D309* +X655422Y267513D03* +D302* +X804774Y267513D03* +D304* +X655066Y268224D03* +D300* +X805485Y268224D03* +D310* +X655066Y268935D03* +D311* +X805485Y268935D03* +D304* +X655066Y269646D03* +D300* +X805485Y269646D03* +D304* +X655066Y270358D03* +D298* +X805840Y270358D03* +D312* +X655066Y271069D03* +D313* +X805840Y271069D03* +D306* +X655066Y271780D03* +D314* +X805485Y271780D03* +D312* +X655066Y272491D03* +D315* +X805840Y272491D03* +D316* +X655066Y273202D03* +X805840Y273202D03* +D301* +X655422Y273914D03* +X805485Y273914D03* +D289* +X655777Y274625D03* +X805129Y274625D03* +D314* +X653999Y275336D03* +D292* +X805129Y275336D03* +D302* +X653288Y276047D03* +D317* +X806196Y276047D03* +D304* +X652932Y276758D03* +D314* +X806907Y276758D03* +D304* +X652221Y277470D03* +D306* +X807974Y277470D03* +D309* +X651866Y278181D03* +D302* +X808330Y278181D03* +D318* +X651510Y278892D03* +D304* +X808685Y278892D03* +D319* +X651510Y279603D03* +D305* +X809041Y279603D03* +D320* +X650799Y280314D03* +D304* +X809396Y280314D03* +D320* +X650799Y281026D03* +D304* +X809396Y281026D03* +D321* +X650799Y281737D03* +D309* +X809752Y281737D03* +D320* +X650799Y282448D03* +D307* +X809752Y282448D03* +D321* +X650799Y283159D03* +D309* +X809752Y283159D03* +D322* +X650443Y283870D03* +D304* +X810108Y283870D03* +X650799Y284582D03* +X810108Y284582D03* +D310* +X650799Y285293D03* +D302* +X809752Y285293D03* +D308* +X651154Y286004D03* +X809752Y286004D03* +D312* +X651510Y286715D03* +D313* +X809396Y286715D03* +D316* +X651510Y287426D03* +D323* +X809752Y287426D03* +D301* +X651866Y288138D03* +D316* +X809396Y288138D03* +D310* +X650088Y288849D03* +D289* +X808685Y288849D03* +D320* +X649376Y289560D03* +D323* +X809752Y289560D03* +D324* +X649021Y290271D03* +D311* +X810463Y290271D03* +D325* +X648665Y290982D03* +D307* +X811174Y290982D03* +D326* +X648310Y291694D03* +D307* +X811886Y291694D03* +D327* +X647954Y292405D03* +D321* +X812241Y292405D03* +D328* +X647954Y293116D03* +D320* +X812241Y293116D03* +D329* +X647598Y293827D03* +D324* +X812597Y293827D03* +D330* +X647598Y294538D03* +D326* +X812597Y294538D03* +D330* +X647598Y295250D03* +D326* +X812597Y295250D03* +D329* +X647598Y295961D03* +D324* +X812597Y295961D03* +D330* +X647598Y296672D03* +D326* +X812597Y296672D03* +D324* +X647598Y297383D03* +D331* +X696316Y297383D03* +X699160Y297383D03* +D332* +X761746Y297383D03* +D296* +X764946Y297383D03* +D321* +X812952Y297383D03* +D326* +X647598Y298094D03* +D209* +X697027Y298094D03* +X763880Y298094D03* +D320* +X812952Y298094D03* +D326* +X647598Y298806D03* +D225* +X696671Y298806D03* +X764235Y298806D03* +D320* +X812952Y298806D03* +D319* +X647954Y299517D03* +D250* +X696671Y299517D03* +D142* +X764591Y299517D03* +D305* +X812597Y299517D03* +D307* +X648310Y300228D03* +D143* +X696316Y300228D03* +D154* +X764946Y300228D03* +D322* +X812597Y300228D03* +D310* +X648665Y300939D03* +D166* +X696316Y300939D03* +D195* +X764946Y300939D03* +D310* +X812241Y300939D03* +D298* +X649376Y301650D03* +D143* +X695604Y301650D03* +D333* +X765302Y301650D03* +D308* +X811886Y301650D03* +D316* +X650088Y302362D03* +D143* +X695604Y302362D03* +D333* +X765302Y302362D03* +D314* +X811174Y302362D03* +D313* +X649376Y303073D03* +D166* +X695604Y303073D03* +D334* +X765658Y303073D03* +D317* +X810463Y303073D03* +D304* +X648665Y303784D03* +D143* +X694893Y303784D03* +X766013Y303784D03* +D335* +X810819Y303784D03* +D309* +X648310Y304495D03* +D166* +X694893Y304495D03* +D336* +X730809Y304495D03* +D166* +X766013Y304495D03* +D312* +X811530Y304495D03* +D318* +X647954Y305206D03* +D143* +X694893Y305206D03* +D159* +X730453Y305206D03* +D178* +X766369Y305206D03* +D308* +X811886Y305206D03* +D326* +X647598Y305918D03* +D154* +X694538Y305918D03* +D164* +X730453Y305918D03* +D151* +X766724Y305918D03* +D304* +X812241Y305918D03* +D321* +X647243Y306629D03* +D142* +X694182Y306629D03* +D233* +X730453Y306629D03* +D142* +X766724Y306629D03* +D310* +X812952Y306629D03* +D326* +X646887Y307340D03* +D232* +X693826Y307340D03* +D337* +X730098Y307340D03* +D232* +X767080Y307340D03* +D304* +X812952Y307340D03* +D324* +X646887Y308051D03* +D223* +X693826Y308051D03* +D338* +X730098Y308051D03* +D339* +X767080Y308051D03* +D309* +X813308Y308051D03* +D326* +X646887Y308762D03* +D208* +X693826Y308762D03* +D340* +X729742Y308762D03* +D211* +X767436Y308762D03* +D307* +X813308Y308762D03* +D326* +X646887Y309474D03* +D236* +X729742Y309474D03* +D307* +X813308Y309474D03* +D341* +X647243Y310185D03* +D342* +X730098Y310185D03* +D309* +X813308Y310185D03* +D325* +X647243Y310896D03* +D343* +X729742Y310896D03* +D307* +X813308Y310896D03* +D341* +X647243Y311607D03* +D344* +X729742Y311607D03* +D321* +X812952Y311607D03* +D326* +X647598Y312318D03* +D264* +X729386Y312318D03* +D320* +X812952Y312318D03* +D326* +X647598Y313030D03* +D168* +X729386Y313030D03* +D320* +X812952Y313030D03* +D319* +X647954Y313741D03* +D279* +X729386Y313741D03* +D305* +X812597Y313741D03* +D307* +X648310Y314452D03* +D175* +X729031Y314452D03* +D322* +X812597Y314452D03* +D310* +X648665Y315163D03* +D272* +X729031Y315163D03* +D310* +X812241Y315163D03* +D308* +X649732Y315874D03* +D292* +X729031Y315874D03* +D308* +X811886Y315874D03* +D301* +X651154Y316586D03* +X728675Y316586D03* +D314* +X811174Y316586D03* +D303* +X650443Y317297D03* +D311* +X728675Y317297D03* +D317* +X809752Y317297D03* +D300* +X650443Y318008D03* +D320* +X728320Y318008D03* +D288* +X809396Y318008D03* +D305* +X650443Y318719D03* +D345* +X727964Y318719D03* +D315* +X809396Y318719D03* +D346* +X690982Y319430D03* +D323* +X809752Y319430D03* +D239* +X637997Y320142D03* +D347* +X720852Y320142D03* +D348* +X781660Y320142D03* +D349* +X822554Y320142D03* +D248* +X637286Y320853D03* +D350* +X730809Y320853D03* +D351* +X823620Y320853D03* +D249* +X636219Y321564D03* +D352* +X730809Y321564D03* +D353* +X824332Y321564D03* +D354* +X635508Y322275D03* +D350* +X730809Y322275D03* +D355* +X825043Y322275D03* +D356* +X634797Y322986D03* +D352* +X730809Y322986D03* +D226* +X826110Y322986D03* +D337* +X634086Y323698D03* +D352* +X730809Y323698D03* +D221* +X826821Y323698D03* +D227* +X633374Y324409D03* +D350* +X730809Y324409D03* +D357* +X827532Y324409D03* +D164* +X633019Y325120D03* +D352* +X730809Y325120D03* +D358* +X827888Y325120D03* +D167* +X632308Y325831D03* +D350* +X730809Y325831D03* +D200* +X828599Y325831D03* +D358* +X631596Y326542D03* +D359* +X731164Y326542D03* +D184* +X829310Y326542D03* +D183* +X631241Y327254D03* +D359* +X731164Y327254D03* +D186* +X829666Y327254D03* +D215* +X630885Y327965D03* +D360* +X731164Y327965D03* +D361* +X830377Y327965D03* +D362* +X630530Y328676D03* +D359* +X731164Y328676D03* +D363* +X830732Y328676D03* +D192* +X630530Y329387D03* +D360* +X731164Y329387D03* +D196* +X831088Y329387D03* +D364* +X631952Y330098D03* +D359* +X731164Y330098D03* +D365* +X831088Y330098D03* +D366* +X630885Y330810D03* +D359* +X731164Y330810D03* +D367* +X829310Y330810D03* +D141* +X838911Y330810D03* +D368* +X629818Y331521D03* +D360* +X731164Y331521D03* +D369* +X830377Y331521D03* +D370* +X629107Y332232D03* +D359* +X731164Y332232D03* +D148* +X831444Y332232D03* +D371* +X628040Y332943D03* +D360* +X731164Y332943D03* +D372* +X831799Y332943D03* +D373* +X627685Y333654D03* +D359* +X731164Y333654D03* +D374* +X832510Y333654D03* +D373* +X627685Y334366D03* +D359* +X731164Y334366D03* +D374* +X832510Y334366D03* +D201* +X627685Y335077D03* +D360* +X731164Y335077D03* +D149* +X832866Y335077D03* +D375* +X627329Y335788D03* +D359* +X731164Y335788D03* +D148* +X832866Y335788D03* +D201* +X627685Y336499D03* +D376* +X730809Y336499D03* +D149* +X832866Y336499D03* +D373* +X627685Y337210D03* +D377* +X730809Y337210D03* +D148* +X832866Y337210D03* +D378* +X628040Y337922D03* +D377* +X730809Y337922D03* +D148* +X832155Y337922D03* +D379* +X729742Y338633D03* +D380* +X729742Y339344D03* +D381* +X729742Y340055D03* +D382* +X729742Y340766D03* +D383* +X729742Y341478D03* +D150* +X625907Y342189D03* +D384* +X732942Y342189D03* +D385* +X729031Y342900D03* +D193* +X832510Y342900D03* +D386* +X729386Y343611D03* +D387* +X729386Y344322D03* +D388* +X729031Y345034D03* +D389* +X729386Y345745D03* +D390* +X729386Y346456D03* +D389* +X729386Y347167D03* +D390* +X729386Y347878D03* +D391* +X729742Y348590D03* +D386* +X729386Y349301D03* +D387* +X729386Y350012D03* +D392* +X729386Y350723D03* +D393* +X729742Y351434D03* +D143* +X635152Y352146D03* +D394* +X684581Y352146D03* +D209* +X734009Y352146D03* +D395* +X783438Y352146D03* +D176* +X635152Y352857D03* +D396* +X679958Y352857D03* +D142* +X724764Y352857D03* +D397* +X778459Y352857D03* +D142* +X823620Y352857D03* +D398* +X679958Y353568D03* +D211* +X724764Y353568D03* +D399* +X778459Y353568D03* +D209* +X823620Y353568D03* +D400* +X679958Y354279D03* +D401* +X778815Y354279D03* +D398* +X679958Y354990D03* +D402* +X778815Y354990D03* +D398* +X679958Y355702D03* +D402* +X778815Y355702D03* +D400* +X679958Y356413D03* +D401* +X778815Y356413D03* +D403* +X679958Y357124D03* +D404* +X778815Y357124D03* +D396* +X679958Y357835D03* +D405* +X778815Y357835D03* +D406* +X680314Y358546D03* +X779170Y358546D03* +D407* +X646532Y359258D03* +D288* +X685648Y359258D03* +D407* +X745388Y359258D03* +D288* +X784504Y359258D03* +D166* +X646532Y359969D03* +D262* +X679958Y359969D03* +D408* +X713384Y359969D03* +D250* +X745033Y359969D03* +D257* +X778815Y359969D03* +D231* +X812241Y359969D03* +D151* +X646532Y360680D03* +D260* +X679958Y360680D03* +D143* +X713384Y360680D03* +D209* +X745388Y360680D03* +D254* +X778815Y360680D03* +D143* +X812241Y360680D03* +D409* +X646532Y361391D03* +D262* +X679958Y361391D03* +D176* +X713384Y361391D03* +D257* +X778815Y361391D03* +D410* +X811886Y361391D03* +D260* +X679958Y362102D03* +D254* +X778815Y362102D03* +D217* +X812241Y362102D03* +D264* +X679602Y362814D03* +X778459Y362814D03* +D411* +X679958Y363525D03* +D412* +X757834Y363525D03* +D355* +X785216Y363525D03* +D413* +X658978Y364236D03* +D191* +X679602Y364236D03* +D146* +X700583Y364236D03* +D413* +X757834Y364236D03* +D414* +X785216Y364236D03* +D145* +X659333Y364947D03* +D415* +X679602Y364947D03* +D145* +X700583Y364947D03* +D416* +X757834Y364947D03* +D415* +X779170Y364947D03* +D417* +X799440Y364947D03* +D418* +X659333Y365658D03* +D191* +X679602Y365658D03* +D418* +X700583Y365658D03* +D230* +X757834Y365658D03* +D146* +X771703Y365658D03* +D419* +X785571Y365658D03* +D144* +X799084Y365658D03* +D143* +X659333Y366370D03* +D420* +X672846Y366370D03* +D413* +X686714Y366370D03* +D143* +X700583Y366370D03* +D151* +X758190Y366370D03* +D413* +X772058Y366370D03* +D419* +X785571Y366370D03* +D143* +X799440Y366370D03* +D176* +X659333Y367081D03* +D421* +X672846Y367081D03* +D412* +X686714Y367081D03* +D176* +X700583Y367081D03* +D205* +X757834Y367081D03* +D145* +X771703Y367081D03* +D147* +X785927Y367081D03* +D142* +X799440Y367081D03* +D422* +X672846Y367792D03* +D144* +X686714Y367792D03* +D418* +X771703Y367792D03* +D413* +X785571Y367792D03* +D211* +X799440Y367792D03* +D416* +X672490Y368503D03* +D334* +X686714Y368503D03* +D195* +X772058Y368503D03* +D416* +X785571Y368503D03* +D230* +X672490Y369214D03* +D232* +X686714Y369214D03* +D193* +X772058Y369214D03* +D230* +X785571Y369214D03* +D151* +X672846Y369926D03* +D208* +X686714Y369926D03* +D151* +X785927Y369926D03* +D409* +X672846Y370637D03* +D150* +X785927Y370637D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_soldermask_bottom.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_soldermask_bottom.gbr new file mode 100644 index 0000000000..2e28ac5a25 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_soldermask_bottom.gbr @@ -0,0 +1,82 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSoldermask Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,5.334000*% +%ADD11C,3.556000*% +%ADD12C,1.270000*% +%ADD13C,2.032000*% +%ADD14C,1.954000*% +%ADD15C,2.794000*% +%ADD16C,3.554000*% +%ADD17R,4.064000X4.064000*% +%ADD18R,2.032000X2.032000*% +%ADD19C,1.210400*% + + +D10* +X50800Y152400D03* +X1320800Y152400D03* +D11* +X76200Y88900D03* +X76200Y31750D03* +X1295400Y31750D03* +X1295400Y88900D03* +D12* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D13* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D14* +X292090Y237498D03* +D15* +X259090Y271798D03* +X259090Y114298D03* +D13* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D16* +X228590Y135898D03* +X228590Y250198D03* +D17* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D18* +X800100Y20320D03* +D13* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D18* +X749300Y78740D03* +D13* +X723900Y78740D03* +D19* +X490605Y121876D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_soldermask_top.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_soldermask_top.gbr new file mode 100644 index 0000000000..c9adfc3929 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_soldermask_top.gbr @@ -0,0 +1,2934 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSoldermask Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,5.334000*% +%ADD11C,3.556000*% +%ADD12C,0.450238*% +%ADD13C,0.601919*% +%ADD14C,0.490878*% +%ADD15C,0.668838*% +%ADD16C,0.572516*% +%ADD17C,0.744300*% +%ADD18C,0.735559*% +%ADD19C,0.565459*% +%ADD20C,1.270000*% +%ADD21C,0.451259*% +%ADD22C,0.959319*% +%ADD23C,1.206238*% +%ADD24C,0.344378*% +%ADD25C,0.743578*% +%ADD26C,2.032000*% +%ADD27C,1.954000*% +%ADD28C,2.794000*% +%ADD29C,3.554000*% +%ADD30R,4.064000X4.064000*% +%ADD31C,0.461159*% +%ADD32R,2.032000X2.032000*% +%ADD33C,0.392400*% +%ADD34C,0.659878*% +%ADD35C,0.377950*% +%ADD36C,1.000000*% +%ADD37C,1.210400*% + + +D10* +X50800Y152400D03* +X1320800Y152400D03* +D11* +X76200Y88900D03* +X76200Y31750D03* +X1295400Y31750D03* +X1295400Y88900D03* +D12* +X248399Y346041D02* +X248399Y349579D01* +X248399Y346041D02* +X244361Y346041D01* +X244361Y349579D01* +X248399Y349579D01* +X248399Y356541D02* +X248399Y360079D01* +X248399Y356541D02* +X244361Y356541D01* +X244361Y360079D01* +X248399Y360079D01* +X345961Y194979D02* +X345961Y191441D01* +X345961Y194979D02* +X349999Y194979D01* +X349999Y191441D01* +X345961Y191441D01* +X345961Y184479D02* +X345961Y180941D01* +X345961Y184479D02* +X349999Y184479D01* +X349999Y180941D01* +X345961Y180941D01* +X499859Y246981D02* +X499859Y250519D01* +X499859Y246981D02* +X495821Y246981D01* +X495821Y250519D01* +X499859Y250519D01* +X499859Y257481D02* +X499859Y261019D01* +X499859Y257481D02* +X495821Y257481D01* +X495821Y261019D01* +X499859Y261019D01* +D13* +X579841Y66881D02* +X579841Y59359D01* +X573319Y59359D01* +X573319Y66881D01* +X579841Y66881D01* +X579841Y65077D02* +X573319Y65077D01* +X579841Y75359D02* +X579841Y82881D01* +X579841Y75359D02* +X573319Y75359D01* +X573319Y82881D01* +X579841Y82881D01* +X579841Y81077D02* +X573319Y81077D01* +X352339Y70181D02* +X352339Y62659D01* +X352339Y70181D02* +X358861Y70181D01* +X358861Y62659D01* +X352339Y62659D01* +X352339Y68377D02* +X358861Y68377D01* +X352339Y54181D02* +X352339Y46659D01* +X352339Y54181D02* +X358861Y54181D01* +X358861Y46659D01* +X352339Y46659D01* +X352339Y52377D02* +X358861Y52377D01* +D12* +X691401Y163501D02* +X691401Y167039D01* +X695439Y167039D01* +X695439Y163501D01* +X691401Y163501D01* +X691401Y156539D02* +X691401Y153001D01* +X691401Y156539D02* +X695439Y156539D01* +X695439Y153001D01* +X691401Y153001D01* +X995159Y272381D02* +X995159Y275919D01* +X995159Y272381D02* +X991121Y272381D01* +X991121Y275919D01* +X995159Y275919D01* +X995159Y282881D02* +X995159Y286419D01* +X995159Y282881D02* +X991121Y282881D01* +X991121Y286419D01* +X995159Y286419D01* +X865619Y156539D02* +X865619Y153001D01* +X861581Y153001D01* +X861581Y156539D01* +X865619Y156539D01* +X865619Y163501D02* +X865619Y167039D01* +X865619Y163501D02* +X861581Y163501D01* +X861581Y167039D01* +X865619Y167039D01* +D13* +X498499Y296459D02* +X498499Y302981D01* +X509021Y302981D01* +X509021Y296459D01* +X498499Y296459D01* +X498499Y302177D02* +X509021Y302177D01* +X476499Y293481D02* +X476499Y286959D01* +X476499Y293481D02* +X487021Y293481D01* +X487021Y286959D01* +X476499Y286959D01* +X476499Y292677D02* +X487021Y292677D01* +X476499Y305959D02* +X476499Y312481D01* +X487021Y312481D01* +X487021Y305959D01* +X476499Y305959D01* +X476499Y311677D02* +X487021Y311677D01* +X457859Y326939D02* +X457859Y333461D01* +X468381Y333461D01* +X468381Y326939D01* +X457859Y326939D01* +X457859Y332657D02* +X468381Y332657D01* +X435859Y323961D02* +X435859Y317439D01* +X435859Y323961D02* +X446381Y323961D01* +X446381Y317439D01* +X435859Y317439D01* +X435859Y323157D02* +X446381Y323157D01* +X435859Y336439D02* +X435859Y342961D01* +X446381Y342961D01* +X446381Y336439D01* +X435859Y336439D01* +X435859Y342157D02* +X446381Y342157D01* +D12* +X1029221Y98459D02* +X1029221Y94921D01* +X1029221Y98459D02* +X1033259Y98459D01* +X1033259Y94921D01* +X1029221Y94921D01* +X1029221Y87959D02* +X1029221Y84421D01* +X1029221Y87959D02* +X1033259Y87959D01* +X1033259Y84421D01* +X1029221Y84421D01* +X704101Y143181D02* +X704101Y146719D01* +X708139Y146719D01* +X708139Y143181D01* +X704101Y143181D01* +X704101Y136219D02* +X704101Y132681D01* +X704101Y136219D02* +X708139Y136219D01* +X708139Y132681D01* +X704101Y132681D01* +X1252821Y140221D02* +X1256359Y140221D01* +X1252821Y140221D02* +X1252821Y144259D01* +X1256359Y144259D01* +X1256359Y140221D01* +X1263321Y140221D02* +X1266859Y140221D01* +X1263321Y140221D02* +X1263321Y144259D01* +X1266859Y144259D01* +X1266859Y140221D01* +X540419Y261099D02* +X536881Y261099D01* +X540419Y261099D02* +X540419Y257061D01* +X536881Y257061D01* +X536881Y261099D01* +X529919Y261099D02* +X526381Y261099D01* +X529919Y261099D02* +X529919Y257061D01* +X526381Y257061D01* +X526381Y261099D01* +X676161Y167039D02* +X676161Y163501D01* +X676161Y167039D02* +X680199Y167039D01* +X680199Y163501D01* +X676161Y163501D01* +X676161Y156539D02* +X676161Y153001D01* +X676161Y156539D02* +X680199Y156539D01* +X680199Y153001D01* +X676161Y153001D01* +X1007859Y272381D02* +X1007859Y275919D01* +X1007859Y272381D02* +X1003821Y272381D01* +X1003821Y275919D01* +X1007859Y275919D01* +X1007859Y282881D02* +X1007859Y286419D01* +X1007859Y282881D02* +X1003821Y282881D01* +X1003821Y286419D01* +X1007859Y286419D01* +X874281Y167039D02* +X874281Y163501D01* +X874281Y167039D02* +X878319Y167039D01* +X878319Y163501D01* +X874281Y163501D01* +X874281Y156539D02* +X874281Y153001D01* +X874281Y156539D02* +X878319Y156539D01* +X878319Y153001D01* +X874281Y153001D01* +X1178039Y100659D02* +X1178039Y97121D01* +X1174001Y97121D01* +X1174001Y100659D01* +X1178039Y100659D01* +X1178039Y107621D02* +X1178039Y111159D01* +X1178039Y107621D02* +X1174001Y107621D01* +X1174001Y111159D01* +X1178039Y111159D01* +X1033179Y141719D02* +X1029641Y141719D01* +X1033179Y141719D02* +X1033179Y137681D01* +X1029641Y137681D01* +X1029641Y141719D01* +X1022679Y141719D02* +X1019141Y141719D01* +X1022679Y141719D02* +X1022679Y137681D01* +X1019141Y137681D01* +X1019141Y141719D01* +X979839Y256019D02* +X976301Y256019D01* +X979839Y256019D02* +X979839Y251981D01* +X976301Y251981D01* +X976301Y256019D01* +X969339Y256019D02* +X965801Y256019D01* +X969339Y256019D02* +X969339Y251981D01* +X965801Y251981D01* +X965801Y256019D01* +X1043419Y87959D02* +X1043419Y84421D01* +X1039381Y84421D01* +X1039381Y87959D01* +X1043419Y87959D01* +X1043419Y94921D02* +X1043419Y98459D01* +X1043419Y94921D02* +X1039381Y94921D01* +X1039381Y98459D01* +X1043419Y98459D01* +X441359Y212839D02* +X437821Y212839D01* +X441359Y212839D02* +X441359Y208801D01* +X437821Y208801D01* +X437821Y212839D01* +X430859Y212839D02* +X427321Y212839D01* +X430859Y212839D02* +X430859Y208801D01* +X427321Y208801D01* +X427321Y212839D01* +X437821Y177279D02* +X441359Y177279D01* +X441359Y173241D01* +X437821Y173241D01* +X437821Y177279D01* +X430859Y177279D02* +X427321Y177279D01* +X430859Y177279D02* +X430859Y173241D01* +X427321Y173241D01* +X427321Y177279D01* +X430201Y187439D02* +X433739Y187439D01* +X433739Y183401D01* +X430201Y183401D01* +X430201Y187439D01* +X423239Y187439D02* +X419701Y187439D01* +X423239Y187439D02* +X423239Y183401D01* +X419701Y183401D01* +X419701Y187439D01* +X430201Y202679D02* +X433739Y202679D01* +X433739Y198641D01* +X430201Y198641D01* +X430201Y202679D01* +X423239Y202679D02* +X419701Y202679D01* +X423239Y202679D02* +X423239Y198641D01* +X419701Y198641D01* +X419701Y202679D01* +X526381Y201181D02* +X529919Y201181D01* +X526381Y201181D02* +X526381Y205219D01* +X529919Y205219D01* +X529919Y201181D01* +X536881Y201181D02* +X540419Y201181D01* +X536881Y201181D02* +X536881Y205219D01* +X540419Y205219D01* +X540419Y201181D01* +X554321Y152921D02* +X557859Y152921D01* +X554321Y152921D02* +X554321Y156959D01* +X557859Y156959D01* +X557859Y152921D01* +X564821Y152921D02* +X568359Y152921D01* +X564821Y152921D02* +X564821Y156959D01* +X568359Y156959D01* +X568359Y152921D01* +X568439Y178401D02* +X568439Y181939D01* +X568439Y178401D02* +X564401Y178401D01* +X564401Y181939D01* +X568439Y181939D01* +X568439Y188901D02* +X568439Y192439D01* +X568439Y188901D02* +X564401Y188901D01* +X564401Y192439D01* +X568439Y192439D01* +X529919Y226581D02* +X526381Y226581D01* +X526381Y230619D01* +X529919Y230619D01* +X529919Y226581D01* +X536881Y226581D02* +X540419Y226581D01* +X536881Y226581D02* +X536881Y230619D01* +X540419Y230619D01* +X540419Y226581D01* +X461759Y169239D02* +X461759Y165701D01* +X457721Y165701D01* +X457721Y169239D01* +X461759Y169239D01* +X461759Y176201D02* +X461759Y179739D01* +X461759Y176201D02* +X457721Y176201D01* +X457721Y179739D01* +X461759Y179739D01* +X441359Y141719D02* +X437821Y141719D01* +X441359Y141719D02* +X441359Y137681D01* +X437821Y137681D01* +X437821Y141719D01* +X430859Y141719D02* +X427321Y141719D01* +X430859Y141719D02* +X430859Y137681D01* +X427321Y137681D01* +X427321Y141719D01* +X439941Y305741D02* +X439941Y309279D01* +X443979Y309279D01* +X443979Y305741D01* +X439941Y305741D01* +X439941Y298779D02* +X439941Y295241D01* +X439941Y298779D02* +X443979Y298779D01* +X443979Y295241D01* +X439941Y295241D01* +X441359Y129019D02* +X437821Y129019D01* +X441359Y129019D02* +X441359Y124981D01* +X437821Y124981D01* +X437821Y129019D01* +X430859Y129019D02* +X427321Y129019D01* +X430859Y129019D02* +X430859Y124981D01* +X427321Y124981D01* +X427321Y129019D01* +X549581Y192519D02* +X553119Y192519D01* +X553119Y188481D01* +X549581Y188481D01* +X549581Y192519D01* +X542619Y192519D02* +X539081Y192519D01* +X542619Y192519D02* +X542619Y188481D01* +X539081Y188481D01* +X539081Y192519D01* +X529919Y213881D02* +X526381Y213881D01* +X526381Y217919D01* +X529919Y217919D01* +X529919Y213881D01* +X536881Y213881D02* +X540419Y213881D01* +X536881Y213881D02* +X536881Y217919D01* +X540419Y217919D01* +X540419Y213881D01* +X541541Y156879D02* +X541541Y153341D01* +X541541Y156879D02* +X545579Y156879D01* +X545579Y153341D01* +X541541Y153341D01* +X541541Y146379D02* +X541541Y142841D01* +X541541Y146379D02* +X545579Y146379D01* +X545579Y142841D01* +X541541Y142841D01* +X564821Y172199D02* +X568359Y172199D01* +X568359Y168161D01* +X564821Y168161D01* +X564821Y172199D01* +X557859Y172199D02* +X554321Y172199D01* +X557859Y172199D02* +X557859Y168161D01* +X554321Y168161D01* +X554321Y172199D01* +X487159Y246981D02* +X487159Y250519D01* +X487159Y246981D02* +X483121Y246981D01* +X483121Y250519D01* +X487159Y250519D01* +X487159Y257481D02* +X487159Y261019D01* +X487159Y257481D02* +X483121Y257481D01* +X483121Y261019D01* +X487159Y261019D01* +X464299Y295241D02* +X464299Y298779D01* +X464299Y295241D02* +X460261Y295241D01* +X460261Y298779D01* +X464299Y298779D01* +X464299Y305741D02* +X464299Y309279D01* +X464299Y305741D02* +X460261Y305741D01* +X460261Y309279D01* +X464299Y309279D01* +X352119Y361201D02* +X348581Y361201D01* +X348581Y365239D01* +X352119Y365239D01* +X352119Y361201D01* +X359081Y361201D02* +X362619Y361201D01* +X359081Y361201D02* +X359081Y365239D01* +X362619Y365239D01* +X362619Y361201D01* +X1213599Y100659D02* +X1213599Y97121D01* +X1209561Y97121D01* +X1209561Y100659D01* +X1213599Y100659D01* +X1213599Y107621D02* +X1213599Y111159D01* +X1213599Y107621D02* +X1209561Y107621D01* +X1209561Y111159D01* +X1213599Y111159D01* +X751239Y162039D02* +X747701Y162039D01* +X751239Y162039D02* +X751239Y158001D01* +X747701Y158001D01* +X747701Y162039D01* +X740739Y162039D02* +X737201Y162039D01* +X740739Y162039D02* +X740739Y158001D01* +X737201Y158001D01* +X737201Y162039D01* +X715339Y158001D02* +X711801Y158001D01* +X711801Y162039D01* +X715339Y162039D01* +X715339Y158001D01* +X722301Y158001D02* +X725839Y158001D01* +X722301Y158001D02* +X722301Y162039D01* +X725839Y162039D01* +X725839Y158001D01* +D13* +X456261Y262341D02* +X448739Y262341D01* +X456261Y262341D02* +X456261Y255819D01* +X448739Y255819D01* +X448739Y262341D01* +X448739Y261537D02* +X456261Y261537D01* +X440261Y262341D02* +X432739Y262341D01* +X440261Y262341D02* +X440261Y255819D01* +X432739Y255819D01* +X432739Y262341D01* +X432739Y261537D02* +X440261Y261537D01* +X440261Y225339D02* +X432739Y225339D01* +X432739Y231861D01* +X440261Y231861D01* +X440261Y225339D01* +X440261Y231057D02* +X432739Y231057D01* +X448739Y225339D02* +X456261Y225339D01* +X448739Y225339D02* +X448739Y231861D01* +X456261Y231861D01* +X456261Y225339D01* +X456261Y231057D02* +X448739Y231057D01* +D12* +X1035799Y166699D02* +X1035799Y163161D01* +X1031761Y163161D01* +X1031761Y166699D01* +X1035799Y166699D01* +X1035799Y173661D02* +X1035799Y177199D01* +X1035799Y173661D02* +X1031761Y173661D01* +X1031761Y177199D01* +X1035799Y177199D01* +X464299Y206341D02* +X464299Y209879D01* +X464299Y206341D02* +X460261Y206341D01* +X460261Y209879D01* +X464299Y209879D01* +X464299Y216841D02* +X464299Y220379D01* +X464299Y216841D02* +X460261Y216841D01* +X460261Y220379D01* +X464299Y220379D01* +X470421Y159419D02* +X470421Y155881D01* +X470421Y159419D02* +X474459Y159419D01* +X474459Y155881D01* +X470421Y155881D01* +X470421Y148919D02* +X470421Y145381D01* +X470421Y148919D02* +X474459Y148919D01* +X474459Y145381D01* +X470421Y145381D01* +D13* +X524939Y137881D02* +X532461Y137881D01* +X532461Y131359D01* +X524939Y131359D01* +X524939Y137881D01* +X524939Y137077D02* +X532461Y137077D01* +X516461Y137881D02* +X508939Y137881D01* +X516461Y137881D02* +X516461Y131359D01* +X508939Y131359D01* +X508939Y137881D01* +X508939Y137077D02* +X516461Y137077D01* +X1024341Y282879D02* +X1024341Y290401D01* +X1024341Y282879D02* +X1017819Y282879D01* +X1017819Y290401D01* +X1024341Y290401D01* +X1024341Y288597D02* +X1017819Y288597D01* +X1024341Y298879D02* +X1024341Y306401D01* +X1024341Y298879D02* +X1017819Y298879D01* +X1017819Y306401D01* +X1024341Y306401D01* +X1024341Y304597D02* +X1017819Y304597D01* +D12* +X1035799Y293699D02* +X1035799Y290161D01* +X1031761Y290161D01* +X1031761Y293699D01* +X1035799Y293699D01* +X1035799Y300661D02* +X1035799Y304199D01* +X1035799Y300661D02* +X1031761Y300661D01* +X1031761Y304199D01* +X1035799Y304199D01* +D13* +X1012739Y70181D02* +X1012739Y62659D01* +X1012739Y70181D02* +X1019261Y70181D01* +X1019261Y62659D01* +X1012739Y62659D01* +X1012739Y68377D02* +X1019261Y68377D01* +X1012739Y54181D02* +X1012739Y46659D01* +X1012739Y54181D02* +X1019261Y54181D01* +X1019261Y46659D01* +X1012739Y46659D01* +X1012739Y52377D02* +X1019261Y52377D01* +X685079Y88059D02* +X685079Y95581D01* +X691601Y95581D01* +X691601Y88059D01* +X685079Y88059D01* +X685079Y93777D02* +X691601Y93777D01* +X685079Y79581D02* +X685079Y72059D01* +X685079Y79581D02* +X691601Y79581D01* +X691601Y72059D01* +X685079Y72059D01* +X685079Y77777D02* +X691601Y77777D01* +D12* +X1049541Y94921D02* +X1049541Y98459D01* +X1053579Y98459D01* +X1053579Y94921D01* +X1049541Y94921D01* +X1049541Y87959D02* +X1049541Y84421D01* +X1049541Y87959D02* +X1053579Y87959D01* +X1053579Y84421D01* +X1049541Y84421D01* +X511061Y155881D02* +X511061Y159419D01* +X515099Y159419D01* +X515099Y155881D01* +X511061Y155881D01* +X511061Y148919D02* +X511061Y145381D01* +X511061Y148919D02* +X515099Y148919D01* +X515099Y145381D01* +X511061Y145381D01* +X523761Y155881D02* +X523761Y159419D01* +X527799Y159419D01* +X527799Y155881D01* +X523761Y155881D01* +X523761Y148919D02* +X523761Y145381D01* +X523761Y148919D02* +X527799Y148919D01* +X527799Y145381D01* +X523761Y145381D01* +X348501Y351461D02* +X348501Y354999D01* +X352539Y354999D01* +X352539Y351461D01* +X348501Y351461D01* +X348501Y344499D02* +X348501Y340961D01* +X348501Y344499D02* +X352539Y344499D01* +X352539Y340961D01* +X348501Y340961D01* +X358661Y351461D02* +X358661Y354999D01* +X362699Y354999D01* +X362699Y351461D01* +X358661Y351461D01* +X358661Y344499D02* +X358661Y340961D01* +X358661Y344499D02* +X362699Y344499D01* +X362699Y340961D01* +X358661Y340961D01* +X238239Y346041D02* +X238239Y349579D01* +X238239Y346041D02* +X234201Y346041D01* +X234201Y349579D01* +X238239Y349579D01* +X238239Y356541D02* +X238239Y360079D01* +X238239Y356541D02* +X234201Y356541D01* +X234201Y360079D01* +X238239Y360079D01* +X182359Y344499D02* +X182359Y340961D01* +X178321Y340961D01* +X178321Y344499D01* +X182359Y344499D01* +X182359Y351461D02* +X182359Y354999D01* +X182359Y351461D02* +X178321Y351461D01* +X178321Y354999D01* +X182359Y354999D01* +D13* +X448739Y247101D02* +X456261Y247101D01* +X456261Y240579D01* +X448739Y240579D01* +X448739Y247101D01* +X448739Y246297D02* +X456261Y246297D01* +X440261Y247101D02* +X432739Y247101D01* +X440261Y247101D02* +X440261Y240579D01* +X432739Y240579D01* +X432739Y247101D01* +X432739Y246297D02* +X440261Y246297D01* +D14* +X611754Y105716D02* +X611754Y98084D01* +X611754Y105716D02* +X616286Y105716D01* +X616286Y98084D01* +X611754Y98084D01* +X611754Y102748D02* +X616286Y102748D01* +X602254Y105716D02* +X602254Y98084D01* +X602254Y105716D02* +X606786Y105716D01* +X606786Y98084D01* +X602254Y98084D01* +X602254Y102748D02* +X606786Y102748D01* +X592754Y105716D02* +X592754Y98084D01* +X592754Y105716D02* +X597286Y105716D01* +X597286Y98084D01* +X592754Y98084D01* +X592754Y102748D02* +X597286Y102748D01* +X592754Y79716D02* +X592754Y72084D01* +X592754Y79716D02* +X597286Y79716D01* +X597286Y72084D01* +X592754Y72084D01* +X592754Y76748D02* +X597286Y76748D01* +X602254Y79716D02* +X602254Y72084D01* +X602254Y79716D02* +X606786Y79716D01* +X606786Y72084D01* +X602254Y72084D01* +X602254Y76748D02* +X606786Y76748D01* +X611754Y79716D02* +X611754Y72084D01* +X611754Y79716D02* +X616286Y79716D01* +X616286Y72084D01* +X611754Y72084D01* +X611754Y76748D02* +X616286Y76748D01* +D15* +X639934Y77554D02* +X647786Y77554D01* +X639934Y77554D02* +X639934Y110406D01* +X647786Y110406D01* +X647786Y77554D01* +X647786Y83908D02* +X639934Y83908D01* +X639934Y90262D02* +X647786Y90262D01* +X647786Y96616D02* +X639934Y96616D01* +X639934Y102970D02* +X647786Y102970D01* +X647786Y109324D02* +X639934Y109324D01* +X667934Y77554D02* +X675786Y77554D01* +X667934Y77554D02* +X667934Y110406D01* +X675786Y110406D01* +X675786Y77554D01* +X675786Y83908D02* +X667934Y83908D01* +X667934Y90262D02* +X675786Y90262D01* +X675786Y96616D02* +X667934Y96616D01* +X667934Y102970D02* +X675786Y102970D01* +X675786Y109324D02* +X667934Y109324D01* +D12* +X606459Y65519D02* +X602921Y65519D01* +X606459Y65519D02* +X606459Y61481D01* +X602921Y61481D01* +X602921Y65519D01* +X595959Y65519D02* +X592421Y65519D01* +X595959Y65519D02* +X595959Y61481D01* +X592421Y61481D01* +X592421Y65519D01* +X627901Y107621D02* +X627901Y111159D01* +X631939Y111159D01* +X631939Y107621D01* +X627901Y107621D01* +X627901Y100659D02* +X627901Y97121D01* +X627901Y100659D02* +X631939Y100659D01* +X631939Y97121D01* +X627901Y97121D01* +X613739Y114821D02* +X610201Y114821D01* +X610201Y118859D01* +X613739Y118859D01* +X613739Y114821D01* +X620701Y114821D02* +X624239Y114821D01* +X620701Y114821D02* +X620701Y118859D01* +X624239Y118859D01* +X624239Y114821D01* +X588339Y114821D02* +X584801Y114821D01* +X584801Y118859D01* +X588339Y118859D01* +X588339Y114821D01* +X595301Y114821D02* +X598839Y114821D01* +X595301Y114821D02* +X595301Y118859D01* +X598839Y118859D01* +X598839Y114821D01* +D16* +X639377Y62924D02* +X639377Y53916D01* +X633417Y53916D01* +X633417Y62924D01* +X639377Y62924D01* +X639377Y59355D02* +X633417Y59355D01* +X672143Y62924D02* +X672143Y53916D01* +X666183Y53916D01* +X666183Y62924D01* +X672143Y62924D01* +X672143Y59355D02* +X666183Y59355D01* +D12* +X540079Y114821D02* +X536541Y114821D01* +X536541Y118859D01* +X540079Y118859D01* +X540079Y114821D01* +X547041Y114821D02* +X550579Y114821D01* +X547041Y114821D02* +X547041Y118859D01* +X550579Y118859D01* +X550579Y114821D01* +D13* +X546941Y60239D02* +X539419Y60239D01* +X539419Y66761D01* +X546941Y66761D01* +X546941Y60239D01* +X546941Y65957D02* +X539419Y65957D01* +X555419Y60239D02* +X562941Y60239D01* +X555419Y60239D02* +X555419Y66761D01* +X562941Y66761D01* +X562941Y60239D01* +X562941Y65957D02* +X555419Y65957D01* +D17* +X581451Y132471D02* +X597549Y132471D01* +X581451Y132471D02* +X581451Y141569D01* +X597549Y141569D01* +X597549Y132471D01* +X597549Y139542D02* +X581451Y139542D01* +X581451Y178471D02* +X597549Y178471D01* +X581451Y178471D02* +X581451Y187569D01* +X597549Y187569D01* +X597549Y178471D01* +X597549Y185542D02* +X581451Y185542D01* +X672451Y178471D02* +X688549Y178471D01* +X672451Y178471D02* +X672451Y187569D01* +X688549Y187569D01* +X688549Y178471D01* +X688549Y185542D02* +X672451Y185542D01* +X672451Y132471D02* +X688549Y132471D01* +X672451Y132471D02* +X672451Y141569D01* +X688549Y141569D01* +X688549Y132471D01* +X688549Y139542D02* +X672451Y139542D01* +X941949Y197911D02* +X941949Y214009D01* +X941949Y197911D02* +X932851Y197911D01* +X932851Y214009D01* +X941949Y214009D01* +X941949Y204982D02* +X932851Y204982D01* +X932851Y212053D02* +X941949Y212053D01* +X895949Y214009D02* +X895949Y197911D01* +X886851Y197911D01* +X886851Y214009D01* +X895949Y214009D01* +X895949Y204982D02* +X886851Y204982D01* +X886851Y212053D02* +X895949Y212053D01* +X895949Y288911D02* +X895949Y305009D01* +X895949Y288911D02* +X886851Y288911D01* +X886851Y305009D01* +X895949Y305009D01* +X895949Y295982D02* +X886851Y295982D01* +X886851Y303053D02* +X895949Y303053D01* +X941949Y305009D02* +X941949Y288911D01* +X932851Y288911D01* +X932851Y305009D01* +X941949Y305009D01* +X941949Y295982D02* +X932851Y295982D01* +X932851Y303053D02* +X941949Y303053D01* +X782969Y132471D02* +X766871Y132471D01* +X766871Y141569D01* +X782969Y141569D01* +X782969Y132471D01* +X782969Y139542D02* +X766871Y139542D01* +X766871Y178471D02* +X782969Y178471D01* +X766871Y178471D02* +X766871Y187569D01* +X782969Y187569D01* +X782969Y178471D01* +X782969Y185542D02* +X766871Y185542D01* +X857871Y178471D02* +X873969Y178471D01* +X857871Y178471D02* +X857871Y187569D01* +X873969Y187569D01* +X873969Y178471D01* +X873969Y185542D02* +X857871Y185542D01* +X857871Y132471D02* +X873969Y132471D01* +X857871Y132471D02* +X857871Y141569D01* +X873969Y141569D01* +X873969Y132471D01* +X873969Y139542D02* +X857871Y139542D01* +D12* +X537539Y178321D02* +X534001Y178321D01* +X534001Y182359D01* +X537539Y182359D01* +X537539Y178321D01* +X544501Y178321D02* +X548039Y178321D01* +X544501Y178321D02* +X544501Y182359D01* +X548039Y182359D01* +X548039Y178321D01* +X855459Y47319D02* +X855459Y43781D01* +X851421Y43781D01* +X851421Y47319D01* +X855459Y47319D01* +X855459Y54281D02* +X855459Y57819D01* +X855459Y54281D02* +X851421Y54281D01* +X851421Y57819D01* +X855459Y57819D01* +D18* +X1105328Y206468D02* +X1150512Y206468D01* +X1105328Y206468D02* +X1105328Y251652D01* +X1150512Y251652D01* +X1150512Y206468D01* +X1150512Y213456D02* +X1105328Y213456D01* +X1105328Y220444D02* +X1150512Y220444D01* +X1150512Y227432D02* +X1105328Y227432D01* +X1105328Y234420D02* +X1150512Y234420D01* +X1150512Y241408D02* +X1105328Y241408D01* +X1105328Y248396D02* +X1150512Y248396D01* +D19* +X1061363Y301117D02* +X1044477Y301117D01* +X1044477Y307003D01* +X1061363Y307003D01* +X1061363Y301117D01* +X1061363Y306489D02* +X1044477Y306489D01* +X1044477Y288417D02* +X1061363Y288417D01* +X1044477Y288417D02* +X1044477Y294303D01* +X1061363Y294303D01* +X1061363Y288417D01* +X1061363Y293789D02* +X1044477Y293789D01* +X1044477Y275717D02* +X1061363Y275717D01* +X1044477Y275717D02* +X1044477Y281603D01* +X1061363Y281603D01* +X1061363Y275717D01* +X1061363Y281089D02* +X1044477Y281089D01* +X1044477Y263017D02* +X1061363Y263017D01* +X1044477Y263017D02* +X1044477Y268903D01* +X1061363Y268903D01* +X1061363Y263017D01* +X1061363Y268389D02* +X1044477Y268389D01* +X1044477Y250317D02* +X1061363Y250317D01* +X1044477Y250317D02* +X1044477Y256203D01* +X1061363Y256203D01* +X1061363Y250317D01* +X1061363Y255689D02* +X1044477Y255689D01* +X1044477Y237617D02* +X1061363Y237617D01* +X1044477Y237617D02* +X1044477Y243503D01* +X1061363Y243503D01* +X1061363Y237617D01* +X1061363Y242989D02* +X1044477Y242989D01* +X1044477Y224917D02* +X1061363Y224917D01* +X1044477Y224917D02* +X1044477Y230803D01* +X1061363Y230803D01* +X1061363Y224917D01* +X1061363Y230289D02* +X1044477Y230289D01* +X1044477Y212217D02* +X1061363Y212217D01* +X1044477Y212217D02* +X1044477Y218103D01* +X1061363Y218103D01* +X1061363Y212217D01* +X1061363Y217589D02* +X1044477Y217589D01* +X1044477Y199517D02* +X1061363Y199517D01* +X1044477Y199517D02* +X1044477Y205403D01* +X1061363Y205403D01* +X1061363Y199517D01* +X1061363Y204889D02* +X1044477Y204889D01* +X1044477Y186817D02* +X1061363Y186817D01* +X1044477Y186817D02* +X1044477Y192703D01* +X1061363Y192703D01* +X1061363Y186817D01* +X1061363Y192189D02* +X1044477Y192189D01* +X1044477Y174117D02* +X1061363Y174117D01* +X1044477Y174117D02* +X1044477Y180003D01* +X1061363Y180003D01* +X1061363Y174117D01* +X1061363Y179489D02* +X1044477Y179489D01* +X1044477Y161417D02* +X1061363Y161417D01* +X1044477Y161417D02* +X1044477Y167303D01* +X1061363Y167303D01* +X1061363Y161417D01* +X1061363Y166789D02* +X1044477Y166789D01* +X1044477Y148717D02* +X1061363Y148717D01* +X1044477Y148717D02* +X1044477Y154603D01* +X1061363Y154603D01* +X1061363Y148717D01* +X1061363Y154089D02* +X1044477Y154089D01* +X1044477Y136017D02* +X1061363Y136017D01* +X1044477Y136017D02* +X1044477Y141903D01* +X1061363Y141903D01* +X1061363Y136017D01* +X1061363Y141389D02* +X1044477Y141389D01* +X1083713Y137403D02* +X1083713Y120517D01* +X1077827Y120517D01* +X1077827Y137403D01* +X1083713Y137403D01* +X1083713Y125889D02* +X1077827Y125889D01* +X1077827Y131261D02* +X1083713Y131261D01* +X1083713Y136633D02* +X1077827Y136633D01* +X1096413Y137403D02* +X1096413Y120517D01* +X1090527Y120517D01* +X1090527Y137403D01* +X1096413Y137403D01* +X1096413Y125889D02* +X1090527Y125889D01* +X1090527Y131261D02* +X1096413Y131261D01* +X1096413Y136633D02* +X1090527Y136633D01* +X1109113Y137403D02* +X1109113Y120517D01* +X1103227Y120517D01* +X1103227Y137403D01* +X1109113Y137403D01* +X1109113Y125889D02* +X1103227Y125889D01* +X1103227Y131261D02* +X1109113Y131261D01* +X1109113Y136633D02* +X1103227Y136633D01* +X1121813Y137403D02* +X1121813Y120517D01* +X1115927Y120517D01* +X1115927Y137403D01* +X1121813Y137403D01* +X1121813Y125889D02* +X1115927Y125889D01* +X1115927Y131261D02* +X1121813Y131261D01* +X1121813Y136633D02* +X1115927Y136633D01* +X1134513Y137403D02* +X1134513Y120517D01* +X1128627Y120517D01* +X1128627Y137403D01* +X1134513Y137403D01* +X1134513Y125889D02* +X1128627Y125889D01* +X1128627Y131261D02* +X1134513Y131261D01* +X1134513Y136633D02* +X1128627Y136633D01* +X1147213Y137403D02* +X1147213Y120517D01* +X1141327Y120517D01* +X1141327Y137403D01* +X1147213Y137403D01* +X1147213Y125889D02* +X1141327Y125889D01* +X1141327Y131261D02* +X1147213Y131261D01* +X1147213Y136633D02* +X1141327Y136633D01* +X1159913Y137403D02* +X1159913Y120517D01* +X1154027Y120517D01* +X1154027Y137403D01* +X1159913Y137403D01* +X1159913Y125889D02* +X1154027Y125889D01* +X1154027Y131261D02* +X1159913Y131261D01* +X1159913Y136633D02* +X1154027Y136633D01* +X1172613Y137403D02* +X1172613Y120517D01* +X1166727Y120517D01* +X1166727Y137403D01* +X1172613Y137403D01* +X1172613Y125889D02* +X1166727Y125889D01* +X1166727Y131261D02* +X1172613Y131261D01* +X1172613Y136633D02* +X1166727Y136633D01* +X1185313Y137403D02* +X1185313Y120517D01* +X1179427Y120517D01* +X1179427Y137403D01* +X1185313Y137403D01* +X1185313Y125889D02* +X1179427Y125889D01* +X1179427Y131261D02* +X1185313Y131261D01* +X1185313Y136633D02* +X1179427Y136633D01* +X1198013Y137403D02* +X1198013Y120517D01* +X1192127Y120517D01* +X1192127Y137403D01* +X1198013Y137403D01* +X1198013Y125889D02* +X1192127Y125889D01* +X1192127Y131261D02* +X1198013Y131261D01* +X1198013Y136633D02* +X1192127Y136633D01* +X1214477Y141903D02* +X1231363Y141903D01* +X1231363Y136017D01* +X1214477Y136017D01* +X1214477Y141903D01* +X1214477Y141389D02* +X1231363Y141389D01* +X1231363Y154603D02* +X1214477Y154603D01* +X1231363Y154603D02* +X1231363Y148717D01* +X1214477Y148717D01* +X1214477Y154603D01* +X1214477Y154089D02* +X1231363Y154089D01* +X1231363Y167303D02* +X1214477Y167303D01* +X1231363Y167303D02* +X1231363Y161417D01* +X1214477Y161417D01* +X1214477Y167303D01* +X1214477Y166789D02* +X1231363Y166789D01* +X1231363Y180003D02* +X1214477Y180003D01* +X1231363Y180003D02* +X1231363Y174117D01* +X1214477Y174117D01* +X1214477Y180003D01* +X1214477Y179489D02* +X1231363Y179489D01* +X1231363Y192703D02* +X1214477Y192703D01* +X1231363Y192703D02* +X1231363Y186817D01* +X1214477Y186817D01* +X1214477Y192703D01* +X1214477Y192189D02* +X1231363Y192189D01* +X1231363Y205403D02* +X1214477Y205403D01* +X1231363Y205403D02* +X1231363Y199517D01* +X1214477Y199517D01* +X1214477Y205403D01* +X1214477Y204889D02* +X1231363Y204889D01* +X1231363Y218103D02* +X1214477Y218103D01* +X1231363Y218103D02* +X1231363Y212217D01* +X1214477Y212217D01* +X1214477Y218103D01* +X1214477Y217589D02* +X1231363Y217589D01* +X1231363Y230803D02* +X1214477Y230803D01* +X1231363Y230803D02* +X1231363Y224917D01* +X1214477Y224917D01* +X1214477Y230803D01* +X1214477Y230289D02* +X1231363Y230289D01* +X1231363Y243503D02* +X1214477Y243503D01* +X1231363Y243503D02* +X1231363Y237617D01* +X1214477Y237617D01* +X1214477Y243503D01* +X1214477Y242989D02* +X1231363Y242989D01* +X1231363Y256203D02* +X1214477Y256203D01* +X1231363Y256203D02* +X1231363Y250317D01* +X1214477Y250317D01* +X1214477Y256203D01* +X1214477Y255689D02* +X1231363Y255689D01* +X1231363Y268903D02* +X1214477Y268903D01* +X1231363Y268903D02* +X1231363Y263017D01* +X1214477Y263017D01* +X1214477Y268903D01* +X1214477Y268389D02* +X1231363Y268389D01* +X1231363Y281603D02* +X1214477Y281603D01* +X1231363Y281603D02* +X1231363Y275717D01* +X1214477Y275717D01* +X1214477Y281603D01* +X1214477Y281089D02* +X1231363Y281089D01* +X1231363Y294303D02* +X1214477Y294303D01* +X1231363Y294303D02* +X1231363Y288417D01* +X1214477Y288417D01* +X1214477Y294303D01* +X1214477Y293789D02* +X1231363Y293789D01* +X1231363Y307003D02* +X1214477Y307003D01* +X1231363Y307003D02* +X1231363Y301117D01* +X1214477Y301117D01* +X1214477Y307003D01* +X1214477Y306489D02* +X1231363Y306489D01* +D20* +X143430Y358120D02* +X133270Y358120D01* +X133270Y292120D02* +X143430Y292120D01* +D21* +X169114Y324106D02* +X169114Y326134D01* +X169114Y324106D02* +X156086Y324106D01* +X156086Y326134D01* +X169114Y326134D01* +X169114Y330606D02* +X169114Y332634D01* +X169114Y330606D02* +X156086Y330606D01* +X156086Y332634D01* +X169114Y332634D01* +X169114Y319634D02* +X169114Y317606D01* +X156086Y317606D01* +X156086Y319634D01* +X169114Y319634D01* +X169114Y313134D02* +X169114Y311106D01* +X156086Y311106D01* +X156086Y313134D01* +X169114Y313134D01* +X169114Y337106D02* +X169114Y339134D01* +X169114Y337106D02* +X156086Y337106D01* +X156086Y339134D01* +X169114Y339134D01* +D22* +X164304Y354646D02* +X157356Y354646D01* +X157356Y363594D01* +X164304Y363594D01* +X164304Y354646D01* +X164304Y286646D02* +X157356Y286646D01* +X157356Y295594D01* +X164304Y295594D01* +X164304Y286646D01* +D23* +X133611Y332381D02* +X133611Y341859D01* +X143089Y341859D01* +X143089Y332381D01* +X133611Y332381D01* +X133611Y317859D02* +X133611Y308381D01* +X133611Y317859D02* +X143089Y317859D01* +X143089Y308381D01* +X133611Y308381D01* +D24* +X510802Y181388D02* +X518498Y181388D01* +X518498Y179692D01* +X510802Y179692D01* +X510802Y181388D01* +X510802Y186388D02* +X518498Y186388D01* +X518498Y184692D01* +X510802Y184692D01* +X510802Y186388D01* +X510802Y191388D02* +X518498Y191388D01* +X518498Y189692D01* +X510802Y189692D01* +X510802Y191388D01* +X510802Y196388D02* +X518498Y196388D01* +X518498Y194692D01* +X510802Y194692D01* +X510802Y196388D01* +X510802Y201388D02* +X518498Y201388D01* +X518498Y199692D01* +X510802Y199692D01* +X510802Y201388D01* +X510802Y206388D02* +X518498Y206388D01* +X518498Y204692D01* +X510802Y204692D01* +X510802Y206388D01* +X479798Y206388D02* +X472102Y206388D01* +X479798Y206388D02* +X479798Y204692D01* +X472102Y204692D01* +X472102Y206388D01* +X472102Y201388D02* +X479798Y201388D01* +X479798Y199692D01* +X472102Y199692D01* +X472102Y201388D01* +X472102Y196388D02* +X479798Y196388D01* +X479798Y194692D01* +X472102Y194692D01* +X472102Y196388D01* +X472102Y191388D02* +X479798Y191388D01* +X479798Y189692D01* +X472102Y189692D01* +X472102Y191388D01* +X472102Y186388D02* +X479798Y186388D01* +X479798Y184692D01* +X472102Y184692D01* +X472102Y186388D01* +X472102Y181388D02* +X479798Y181388D01* +X479798Y179692D01* +X472102Y179692D01* +X472102Y181388D01* +X483648Y177538D02* +X483648Y169842D01* +X481952Y169842D01* +X481952Y177538D01* +X483648Y177538D01* +X483648Y173114D02* +X481952Y173114D01* +X481952Y176386D02* +X483648Y176386D01* +X488648Y177538D02* +X488648Y169842D01* +X486952Y169842D01* +X486952Y177538D01* +X488648Y177538D01* +X488648Y173114D02* +X486952Y173114D01* +X486952Y176386D02* +X488648Y176386D01* +X493648Y177538D02* +X493648Y169842D01* +X491952Y169842D01* +X491952Y177538D01* +X493648Y177538D01* +X493648Y173114D02* +X491952Y173114D01* +X491952Y176386D02* +X493648Y176386D01* +X498648Y177538D02* +X498648Y169842D01* +X496952Y169842D01* +X496952Y177538D01* +X498648Y177538D01* +X498648Y173114D02* +X496952Y173114D01* +X496952Y176386D02* +X498648Y176386D01* +X503648Y177538D02* +X503648Y169842D01* +X501952Y169842D01* +X501952Y177538D01* +X503648Y177538D01* +X503648Y173114D02* +X501952Y173114D01* +X501952Y176386D02* +X503648Y176386D01* +X508648Y177538D02* +X508648Y169842D01* +X506952Y169842D01* +X506952Y177538D01* +X508648Y177538D01* +X508648Y173114D02* +X506952Y173114D01* +X506952Y176386D02* +X508648Y176386D01* +X508648Y208542D02* +X508648Y216238D01* +X508648Y208542D02* +X506952Y208542D01* +X506952Y216238D01* +X508648Y216238D01* +X508648Y211814D02* +X506952Y211814D01* +X506952Y215086D02* +X508648Y215086D01* +X503648Y216238D02* +X503648Y208542D01* +X501952Y208542D01* +X501952Y216238D01* +X503648Y216238D01* +X503648Y211814D02* +X501952Y211814D01* +X501952Y215086D02* +X503648Y215086D01* +X498648Y216238D02* +X498648Y208542D01* +X496952Y208542D01* +X496952Y216238D01* +X498648Y216238D01* +X498648Y211814D02* +X496952Y211814D01* +X496952Y215086D02* +X498648Y215086D01* +X493648Y216238D02* +X493648Y208542D01* +X491952Y208542D01* +X491952Y216238D01* +X493648Y216238D01* +X493648Y211814D02* +X491952Y211814D01* +X491952Y215086D02* +X493648Y215086D01* +X488648Y216238D02* +X488648Y208542D01* +X486952Y208542D01* +X486952Y216238D01* +X488648Y216238D01* +X488648Y211814D02* +X486952Y211814D01* +X486952Y215086D02* +X488648Y215086D01* +X483648Y216238D02* +X483648Y208542D01* +X481952Y208542D01* +X481952Y216238D01* +X483648Y216238D01* +X483648Y211814D02* +X481952Y211814D01* +X481952Y215086D02* +X483648Y215086D01* +D25* +X505352Y203092D02* +X505352Y182988D01* +X485248Y182988D01* +X485248Y203092D01* +X505352Y203092D01* +X505352Y190052D02* +X485248Y190052D01* +X485248Y197116D02* +X505352Y197116D01* +D26* +X317490Y148598D03* +X292090Y161298D03* +X317490Y173998D03* +X292090Y186698D03* +X317490Y199398D03* +X292090Y212098D03* +X317490Y224798D03* +D27* +X292090Y237498D03* +D28* +X259090Y271798D03* +X259090Y114298D03* +D26* +X194804Y129785D03* +X179604Y256285D03* +X194809Y230904D03* +X179609Y155204D03* +D29* +X228590Y135898D03* +X228590Y250198D03* +D30* +X400050Y26670D03* +X400050Y90170D03* +X463550Y58420D03* +X971550Y26670D03* +X971550Y90170D03* +X908050Y58420D03* +D31* +X726484Y141986D02* +X722556Y141986D01* +X722556Y146414D01* +X726484Y146414D01* +X726484Y141986D01* +X726484Y146367D02* +X722556Y146367D01* +X736556Y141986D02* +X740484Y141986D01* +X736556Y141986D02* +X736556Y146414D01* +X740484Y146414D01* +X740484Y141986D01* +X740484Y146367D02* +X736556Y146367D01* +X736556Y132986D02* +X740484Y132986D01* +X736556Y132986D02* +X736556Y137414D01* +X740484Y137414D01* +X740484Y132986D01* +X740484Y137367D02* +X736556Y137367D01* +X726484Y132986D02* +X722556Y132986D01* +X722556Y137414D01* +X726484Y137414D01* +X726484Y132986D01* +X726484Y137367D02* +X722556Y137367D01* +D32* +X800100Y20320D03* +D26* +X774700Y20320D03* +X749300Y20320D03* +X723900Y20320D03* +X698500Y20320D03* +X673100Y20320D03* +X647700Y20320D03* +X622300Y20320D03* +X596900Y20320D03* +X571500Y20320D03* +D13* +X585139Y44999D02* +X592661Y44999D01* +X585139Y44999D02* +X585139Y51521D01* +X592661Y51521D01* +X592661Y44999D01* +X592661Y50717D02* +X585139Y50717D01* +X601139Y44999D02* +X608661Y44999D01* +X601139Y44999D02* +X601139Y51521D01* +X608661Y51521D01* +X608661Y44999D01* +X608661Y50717D02* +X601139Y50717D01* +X714679Y52619D02* +X722201Y52619D01* +X714679Y52619D02* +X714679Y59141D01* +X722201Y59141D01* +X722201Y52619D01* +X722201Y58337D02* +X714679Y58337D01* +X730679Y52619D02* +X738201Y52619D01* +X730679Y52619D02* +X730679Y59141D01* +X738201Y59141D01* +X738201Y52619D01* +X738201Y58337D02* +X730679Y58337D01* +D32* +X749300Y78740D03* +D26* +X723900Y78740D03* +D13* +X691467Y302184D02* +X688289Y309000D01* +X694199Y311756D01* +X697377Y304940D01* +X691467Y302184D01* +X688801Y307902D02* +X695996Y307902D01* +X695051Y294500D02* +X698229Y287684D01* +X695051Y294500D02* +X700961Y297256D01* +X704139Y290440D01* +X698229Y287684D01* +X695563Y293402D02* +X702758Y293402D01* +X763377Y304940D02* +X766555Y311756D01* +X772465Y309000D01* +X769287Y302184D01* +X763377Y304940D01* +X764758Y307902D02* +X771953Y307902D01* +X759793Y297256D02* +X756615Y290440D01* +X759793Y297256D02* +X765703Y294500D01* +X762525Y287684D01* +X756615Y290440D01* +X757996Y293402D02* +X765191Y293402D01* +D12* +X848961Y244361D02* +X852499Y244361D01* +X848961Y244361D02* +X848961Y248399D01* +X852499Y248399D01* +X852499Y244361D01* +X859461Y244361D02* +X862999Y244361D01* +X859461Y244361D02* +X859461Y248399D01* +X862999Y248399D01* +X862999Y244361D01* +X852499Y264681D02* +X848961Y264681D01* +X848961Y268719D01* +X852499Y268719D01* +X852499Y264681D01* +X859461Y264681D02* +X862999Y264681D01* +X859461Y264681D02* +X859461Y268719D01* +X862999Y268719D01* +X862999Y264681D01* +D13* +X514681Y107401D02* +X507159Y107401D01* +X514681Y107401D02* +X514681Y100879D01* +X507159Y100879D01* +X507159Y107401D01* +X507159Y106597D02* +X514681Y106597D01* +X498681Y107401D02* +X491159Y107401D01* +X498681Y107401D02* +X498681Y100879D01* +X491159Y100879D01* +X491159Y107401D01* +X491159Y106597D02* +X498681Y106597D01* +D33* +X254122Y358142D02* +X254122Y360758D01* +X267738Y360758D01* +X267738Y358142D01* +X254122Y358142D01* +X254122Y354258D02* +X254122Y351642D01* +X254122Y354258D02* +X267738Y354258D01* +X267738Y351642D01* +X254122Y351642D01* +X254122Y347758D02* +X254122Y345142D01* +X254122Y347758D02* +X267738Y347758D01* +X267738Y345142D01* +X254122Y345142D01* +X254122Y341258D02* +X254122Y338642D01* +X254122Y341258D02* +X267738Y341258D01* +X267738Y338642D01* +X254122Y338642D01* +X254122Y334758D02* +X254122Y332142D01* +X254122Y334758D02* +X267738Y334758D01* +X267738Y332142D01* +X254122Y332142D01* +X254122Y328258D02* +X254122Y325642D01* +X254122Y328258D02* +X267738Y328258D01* +X267738Y325642D01* +X254122Y325642D01* +X254122Y321758D02* +X254122Y319142D01* +X254122Y321758D02* +X267738Y321758D01* +X267738Y319142D01* +X254122Y319142D01* +X254122Y315258D02* +X254122Y312642D01* +X254122Y315258D02* +X267738Y315258D01* +X267738Y312642D01* +X254122Y312642D01* +X254122Y308758D02* +X254122Y306142D01* +X254122Y308758D02* +X267738Y308758D01* +X267738Y306142D01* +X254122Y306142D01* +X254122Y302258D02* +X254122Y299642D01* +X254122Y302258D02* +X267738Y302258D01* +X267738Y299642D01* +X254122Y299642D01* +X326622Y299642D02* +X326622Y302258D01* +X340238Y302258D01* +X340238Y299642D01* +X326622Y299642D01* +X326622Y306142D02* +X326622Y308758D01* +X340238Y308758D01* +X340238Y306142D01* +X326622Y306142D01* +X326622Y312642D02* +X326622Y315258D01* +X340238Y315258D01* +X340238Y312642D01* +X326622Y312642D01* +X326622Y319142D02* +X326622Y321758D01* +X340238Y321758D01* +X340238Y319142D01* +X326622Y319142D01* +X326622Y325642D02* +X326622Y328258D01* +X340238Y328258D01* +X340238Y325642D01* +X326622Y325642D01* +X326622Y332142D02* +X326622Y334758D01* +X340238Y334758D01* +X340238Y332142D01* +X326622Y332142D01* +X326622Y338642D02* +X326622Y341258D01* +X340238Y341258D01* +X340238Y338642D01* +X326622Y338642D01* +X326622Y345142D02* +X326622Y347758D01* +X340238Y347758D01* +X340238Y345142D01* +X326622Y345142D01* +X326622Y351642D02* +X326622Y354258D01* +X340238Y354258D01* +X340238Y351642D01* +X326622Y351642D01* +X326622Y358142D02* +X326622Y360758D01* +X340238Y360758D01* +X340238Y358142D01* +X326622Y358142D01* +D12* +X407341Y362699D02* +X410879Y362699D01* +X410879Y358661D01* +X407341Y358661D01* +X407341Y362699D01* +X400379Y362699D02* +X396841Y362699D01* +X400379Y362699D02* +X400379Y358661D01* +X396841Y358661D01* +X396841Y362699D01* +X407341Y352539D02* +X410879Y352539D01* +X410879Y348501D01* +X407341Y348501D01* +X407341Y352539D01* +X400379Y352539D02* +X396841Y352539D01* +X400379Y352539D02* +X400379Y348501D01* +X396841Y348501D01* +X396841Y352539D01* +D34* +X229331Y303061D02* +X229331Y295619D01* +X219389Y295619D01* +X219389Y303061D01* +X229331Y303061D01* +X229331Y301888D02* +X219389Y301888D01* +X207331Y303061D02* +X207331Y295619D01* +X197389Y295619D01* +X197389Y303061D01* +X207331Y303061D01* +X207331Y301888D02* +X197389Y301888D01* +X207331Y311619D02* +X207331Y319061D01* +X207331Y311619D02* +X197389Y311619D01* +X197389Y319061D01* +X207331Y319061D01* +X207331Y317888D02* +X197389Y317888D01* +X229331Y319061D02* +X229331Y311619D01* +X219389Y311619D01* +X219389Y319061D01* +X229331Y319061D01* +X229331Y317888D02* +X219389Y317888D01* +D12* +X189979Y303859D02* +X189979Y300321D01* +X185941Y300321D01* +X185941Y303859D01* +X189979Y303859D01* +X189979Y310821D02* +X189979Y314359D01* +X189979Y310821D02* +X185941Y310821D01* +X185941Y314359D01* +X189979Y314359D01* +X236741Y314359D02* +X236741Y310821D01* +X236741Y314359D02* +X240779Y314359D01* +X240779Y310821D01* +X236741Y310821D01* +X236741Y303859D02* +X236741Y300321D01* +X236741Y303859D02* +X240779Y303859D01* +X240779Y300321D01* +X236741Y300321D01* +D13* +X540299Y85701D02* +X546821Y85701D01* +X546821Y75179D01* +X540299Y75179D01* +X540299Y85701D01* +X540299Y80897D02* +X546821Y80897D01* +X537321Y107701D02* +X530799Y107701D01* +X537321Y107701D02* +X537321Y97179D01* +X530799Y97179D01* +X530799Y107701D01* +X530799Y102897D02* +X537321Y102897D01* +X549799Y107701D02* +X556321Y107701D01* +X556321Y97179D01* +X549799Y97179D01* +X549799Y107701D01* +X549799Y102897D02* +X556321Y102897D01* +X700319Y95581D02* +X700319Y88059D01* +X700319Y95581D02* +X706841Y95581D01* +X706841Y88059D01* +X700319Y88059D01* +X700319Y93777D02* +X706841Y93777D01* +X700319Y79581D02* +X700319Y72059D01* +X700319Y79581D02* +X706841Y79581D01* +X706841Y72059D01* +X700319Y72059D01* +X700319Y77777D02* +X706841Y77777D01* +X1261539Y132801D02* +X1269061Y132801D01* +X1269061Y126279D01* +X1261539Y126279D01* +X1261539Y132801D01* +X1261539Y131997D02* +X1269061Y131997D01* +X1253061Y132801D02* +X1245539Y132801D01* +X1253061Y132801D02* +X1253061Y126279D01* +X1245539Y126279D01* +X1245539Y132801D01* +X1245539Y131997D02* +X1253061Y131997D01* +D12* +X1198359Y100659D02* +X1198359Y97121D01* +X1194321Y97121D01* +X1194321Y100659D01* +X1198359Y100659D01* +X1198359Y107621D02* +X1198359Y111159D01* +X1198359Y107621D02* +X1194321Y107621D01* +X1194321Y111159D01* +X1198359Y111159D01* +D35* +X843041Y50538D02* +X832597Y50538D01* +X843041Y50538D02* +X843041Y48222D01* +X832597Y48222D01* +X832597Y50538D01* +X832597Y57038D02* +X843041Y57038D01* +X843041Y54722D01* +X832597Y54722D01* +X832597Y57038D01* +X832597Y63538D02* +X843041Y63538D01* +X843041Y61222D01* +X832597Y61222D01* +X832597Y63538D01* +X823483Y63538D02* +X813039Y63538D01* +X823483Y63538D02* +X823483Y61222D01* +X813039Y61222D01* +X813039Y63538D01* +X813039Y57038D02* +X823483Y57038D01* +X823483Y54722D01* +X813039Y54722D01* +X813039Y57038D01* +X813039Y50538D02* +X823483Y50538D01* +X823483Y48222D01* +X813039Y48222D01* +X813039Y50538D01* +X832597Y88638D02* +X843041Y88638D01* +X843041Y86322D01* +X832597Y86322D01* +X832597Y88638D01* +X832597Y95138D02* +X843041Y95138D01* +X843041Y92822D01* +X832597Y92822D01* +X832597Y95138D01* +X832597Y101638D02* +X843041Y101638D01* +X843041Y99322D01* +X832597Y99322D01* +X832597Y101638D01* +X823483Y101638D02* +X813039Y101638D01* +X823483Y101638D02* +X823483Y99322D01* +X813039Y99322D01* +X813039Y101638D01* +X813039Y95138D02* +X823483Y95138D01* +X823483Y92822D01* +X813039Y92822D01* +X813039Y95138D01* +X813039Y88638D02* +X823483Y88638D01* +X823483Y86322D01* +X813039Y86322D01* +X813039Y88638D01* +D12* +X855459Y85419D02* +X855459Y81881D01* +X851421Y81881D01* +X851421Y85419D01* +X855459Y85419D01* +X855459Y92381D02* +X855459Y95919D01* +X855459Y92381D02* +X851421Y92381D01* +X851421Y95919D01* +X855459Y95919D01* +X807119Y50279D02* +X803581Y50279D01* +X807119Y50279D02* +X807119Y46241D01* +X803581Y46241D01* +X803581Y50279D01* +X796619Y50279D02* +X793081Y50279D01* +X796619Y50279D02* +X796619Y46241D01* +X793081Y46241D01* +X793081Y50279D01* +X803581Y88379D02* +X807119Y88379D01* +X807119Y84341D01* +X803581Y84341D01* +X803581Y88379D01* +X796619Y88379D02* +X793081Y88379D01* +X796619Y88379D02* +X796619Y84341D01* +X793081Y84341D01* +X793081Y88379D01* +X831521Y75679D02* +X835059Y75679D01* +X835059Y71641D01* +X831521Y71641D01* +X831521Y75679D01* +X824559Y75679D02* +X821021Y75679D01* +X824559Y75679D02* +X824559Y71641D01* +X821021Y71641D01* +X821021Y75679D01* +X831521Y113779D02* +X835059Y113779D01* +X835059Y109741D01* +X831521Y109741D01* +X831521Y113779D01* +X824559Y113779D02* +X821021Y113779D01* +X824559Y113779D02* +X824559Y109741D01* +X821021Y109741D01* +X821021Y113779D01* +D36* +X132160Y17780D02* +X132162Y17921D01* +X132168Y18062D01* +X132178Y18202D01* +X132192Y18342D01* +X132210Y18482D01* +X132231Y18621D01* +X132257Y18760D01* +X132286Y18898D01* +X132320Y19034D01* +X132357Y19170D01* +X132398Y19305D01* +X132443Y19439D01* +X132492Y19571D01* +X132544Y19702D01* +X132600Y19831D01* +X132660Y19958D01* +X132723Y20084D01* +X132789Y20208D01* +X132860Y20331D01* +X132933Y20451D01* +X133010Y20569D01* +X133090Y20685D01* +X133174Y20798D01* +X133260Y20909D01* +X133350Y21018D01* +X133443Y21124D01* +X133538Y21227D01* +X133637Y21328D01* +X133738Y21426D01* +X133842Y21521D01* +X133949Y21613D01* +X134058Y21702D01* +X134170Y21787D01* +X134284Y21870D01* +X134400Y21950D01* +X134519Y22026D01* +X134640Y22098D01* +X134762Y22168D01* +X134887Y22233D01* +X135013Y22296D01* +X135141Y22354D01* +X135271Y22409D01* +X135402Y22461D01* +X135535Y22508D01* +X135669Y22552D01* +X135804Y22593D01* +X135940Y22629D01* +X136077Y22661D01* +X136215Y22690D01* +X136353Y22715D01* +X136493Y22735D01* +X136633Y22752D01* +X136773Y22765D01* +X136914Y22774D01* +X137054Y22779D01* +X137195Y22780D01* +X137336Y22777D01* +X137477Y22770D01* +X137617Y22759D01* +X137757Y22744D01* +X137897Y22725D01* +X138036Y22703D01* +X138174Y22676D01* +X138312Y22646D01* +X138448Y22611D01* +X138584Y22573D01* +X138718Y22531D01* +X138852Y22485D01* +X138984Y22436D01* +X139114Y22382D01* +X139243Y22325D01* +X139370Y22265D01* +X139496Y22201D01* +X139619Y22133D01* +X139741Y22062D01* +X139861Y21988D01* +X139978Y21910D01* +X140093Y21829D01* +X140206Y21745D01* +X140317Y21658D01* +X140425Y21567D01* +X140530Y21474D01* +X140633Y21377D01* +X140733Y21278D01* +X140830Y21176D01* +X140924Y21071D01* +X141015Y20964D01* +X141103Y20854D01* +X141188Y20742D01* +X141270Y20627D01* +X141349Y20510D01* +X141424Y20391D01* +X141496Y20270D01* +X141564Y20147D01* +X141629Y20022D01* +X141691Y19895D01* +X141748Y19766D01* +X141803Y19636D01* +X141853Y19505D01* +X141900Y19372D01* +X141943Y19238D01* +X141982Y19102D01* +X142017Y18966D01* +X142049Y18829D01* +X142076Y18691D01* +X142100Y18552D01* +X142120Y18412D01* +X142136Y18272D01* +X142148Y18132D01* +X142156Y17991D01* +X142160Y17850D01* +X142160Y17710D01* +X142156Y17569D01* +X142148Y17428D01* +X142136Y17288D01* +X142120Y17148D01* +X142100Y17008D01* +X142076Y16869D01* +X142049Y16731D01* +X142017Y16594D01* +X141982Y16458D01* +X141943Y16322D01* +X141900Y16188D01* +X141853Y16055D01* +X141803Y15924D01* +X141748Y15794D01* +X141691Y15665D01* +X141629Y15538D01* +X141564Y15413D01* +X141496Y15290D01* +X141424Y15169D01* +X141349Y15050D01* +X141270Y14933D01* +X141188Y14818D01* +X141103Y14706D01* +X141015Y14596D01* +X140924Y14489D01* +X140830Y14384D01* +X140733Y14282D01* +X140633Y14183D01* +X140530Y14086D01* +X140425Y13993D01* +X140317Y13902D01* +X140206Y13815D01* +X140093Y13731D01* +X139978Y13650D01* +X139861Y13572D01* +X139741Y13498D01* +X139619Y13427D01* +X139496Y13359D01* +X139370Y13295D01* +X139243Y13235D01* +X139114Y13178D01* +X138984Y13124D01* +X138852Y13075D01* +X138718Y13029D01* +X138584Y12987D01* +X138448Y12949D01* +X138312Y12914D01* +X138174Y12884D01* +X138036Y12857D01* +X137897Y12835D01* +X137757Y12816D01* +X137617Y12801D01* +X137477Y12790D01* +X137336Y12783D01* +X137195Y12780D01* +X137054Y12781D01* +X136914Y12786D01* +X136773Y12795D01* +X136633Y12808D01* +X136493Y12825D01* +X136353Y12845D01* +X136215Y12870D01* +X136077Y12899D01* +X135940Y12931D01* +X135804Y12967D01* +X135669Y13008D01* +X135535Y13052D01* +X135402Y13099D01* +X135271Y13151D01* +X135141Y13206D01* +X135013Y13264D01* +X134887Y13327D01* +X134762Y13392D01* +X134640Y13462D01* +X134519Y13534D01* +X134400Y13610D01* +X134284Y13690D01* +X134170Y13773D01* +X134058Y13858D01* +X133949Y13947D01* +X133842Y14039D01* +X133738Y14134D01* +X133637Y14232D01* +X133538Y14333D01* +X133443Y14436D01* +X133350Y14542D01* +X133260Y14651D01* +X133174Y14762D01* +X133090Y14875D01* +X133010Y14991D01* +X132933Y15109D01* +X132860Y15229D01* +X132789Y15352D01* +X132723Y15476D01* +X132660Y15602D01* +X132600Y15729D01* +X132544Y15858D01* +X132492Y15989D01* +X132443Y16121D01* +X132398Y16255D01* +X132357Y16390D01* +X132320Y16526D01* +X132286Y16662D01* +X132257Y16800D01* +X132231Y16939D01* +X132210Y17078D01* +X132192Y17218D01* +X132178Y17358D01* +X132168Y17498D01* +X132162Y17639D01* +X132160Y17780D01* +X444580Y363220D02* +X444582Y363361D01* +X444588Y363502D01* +X444598Y363642D01* +X444612Y363782D01* +X444630Y363922D01* +X444651Y364061D01* +X444677Y364200D01* +X444706Y364338D01* +X444740Y364474D01* +X444777Y364610D01* +X444818Y364745D01* +X444863Y364879D01* +X444912Y365011D01* +X444964Y365142D01* +X445020Y365271D01* +X445080Y365398D01* +X445143Y365524D01* +X445209Y365648D01* +X445280Y365771D01* +X445353Y365891D01* +X445430Y366009D01* +X445510Y366125D01* +X445594Y366238D01* +X445680Y366349D01* +X445770Y366458D01* +X445863Y366564D01* +X445958Y366667D01* +X446057Y366768D01* +X446158Y366866D01* +X446262Y366961D01* +X446369Y367053D01* +X446478Y367142D01* +X446590Y367227D01* +X446704Y367310D01* +X446820Y367390D01* +X446939Y367466D01* +X447060Y367538D01* +X447182Y367608D01* +X447307Y367673D01* +X447433Y367736D01* +X447561Y367794D01* +X447691Y367849D01* +X447822Y367901D01* +X447955Y367948D01* +X448089Y367992D01* +X448224Y368033D01* +X448360Y368069D01* +X448497Y368101D01* +X448635Y368130D01* +X448773Y368155D01* +X448913Y368175D01* +X449053Y368192D01* +X449193Y368205D01* +X449334Y368214D01* +X449474Y368219D01* +X449615Y368220D01* +X449756Y368217D01* +X449897Y368210D01* +X450037Y368199D01* +X450177Y368184D01* +X450317Y368165D01* +X450456Y368143D01* +X450594Y368116D01* +X450732Y368086D01* +X450868Y368051D01* +X451004Y368013D01* +X451138Y367971D01* +X451272Y367925D01* +X451404Y367876D01* +X451534Y367822D01* +X451663Y367765D01* +X451790Y367705D01* +X451916Y367641D01* +X452039Y367573D01* +X452161Y367502D01* +X452281Y367428D01* +X452398Y367350D01* +X452513Y367269D01* +X452626Y367185D01* +X452737Y367098D01* +X452845Y367007D01* +X452950Y366914D01* +X453053Y366817D01* +X453153Y366718D01* +X453250Y366616D01* +X453344Y366511D01* +X453435Y366404D01* +X453523Y366294D01* +X453608Y366182D01* +X453690Y366067D01* +X453769Y365950D01* +X453844Y365831D01* +X453916Y365710D01* +X453984Y365587D01* +X454049Y365462D01* +X454111Y365335D01* +X454168Y365206D01* +X454223Y365076D01* +X454273Y364945D01* +X454320Y364812D01* +X454363Y364678D01* +X454402Y364542D01* +X454437Y364406D01* +X454469Y364269D01* +X454496Y364131D01* +X454520Y363992D01* +X454540Y363852D01* +X454556Y363712D01* +X454568Y363572D01* +X454576Y363431D01* +X454580Y363290D01* +X454580Y363150D01* +X454576Y363009D01* +X454568Y362868D01* +X454556Y362728D01* +X454540Y362588D01* +X454520Y362448D01* +X454496Y362309D01* +X454469Y362171D01* +X454437Y362034D01* +X454402Y361898D01* +X454363Y361762D01* +X454320Y361628D01* +X454273Y361495D01* +X454223Y361364D01* +X454168Y361234D01* +X454111Y361105D01* +X454049Y360978D01* +X453984Y360853D01* +X453916Y360730D01* +X453844Y360609D01* +X453769Y360490D01* +X453690Y360373D01* +X453608Y360258D01* +X453523Y360146D01* +X453435Y360036D01* +X453344Y359929D01* +X453250Y359824D01* +X453153Y359722D01* +X453053Y359623D01* +X452950Y359526D01* +X452845Y359433D01* +X452737Y359342D01* +X452626Y359255D01* +X452513Y359171D01* +X452398Y359090D01* +X452281Y359012D01* +X452161Y358938D01* +X452039Y358867D01* +X451916Y358799D01* +X451790Y358735D01* +X451663Y358675D01* +X451534Y358618D01* +X451404Y358564D01* +X451272Y358515D01* +X451138Y358469D01* +X451004Y358427D01* +X450868Y358389D01* +X450732Y358354D01* +X450594Y358324D01* +X450456Y358297D01* +X450317Y358275D01* +X450177Y358256D01* +X450037Y358241D01* +X449897Y358230D01* +X449756Y358223D01* +X449615Y358220D01* +X449474Y358221D01* +X449334Y358226D01* +X449193Y358235D01* +X449053Y358248D01* +X448913Y358265D01* +X448773Y358285D01* +X448635Y358310D01* +X448497Y358339D01* +X448360Y358371D01* +X448224Y358407D01* +X448089Y358448D01* +X447955Y358492D01* +X447822Y358539D01* +X447691Y358591D01* +X447561Y358646D01* +X447433Y358704D01* +X447307Y358767D01* +X447182Y358832D01* +X447060Y358902D01* +X446939Y358974D01* +X446820Y359050D01* +X446704Y359130D01* +X446590Y359213D01* +X446478Y359298D01* +X446369Y359387D01* +X446262Y359479D01* +X446158Y359574D01* +X446057Y359672D01* +X445958Y359773D01* +X445863Y359876D01* +X445770Y359982D01* +X445680Y360091D01* +X445594Y360202D01* +X445510Y360315D01* +X445430Y360431D01* +X445353Y360549D01* +X445280Y360669D01* +X445209Y360792D01* +X445143Y360916D01* +X445080Y361042D01* +X445020Y361169D01* +X444964Y361298D01* +X444912Y361429D01* +X444863Y361561D01* +X444818Y361695D01* +X444777Y361830D01* +X444740Y361966D01* +X444706Y362102D01* +X444677Y362240D01* +X444651Y362379D01* +X444630Y362518D01* +X444612Y362658D01* +X444598Y362798D01* +X444588Y362938D01* +X444582Y363079D01* +X444580Y363220D01* +X1252300Y96520D02* +X1252302Y96661D01* +X1252308Y96802D01* +X1252318Y96942D01* +X1252332Y97082D01* +X1252350Y97222D01* +X1252371Y97361D01* +X1252397Y97500D01* +X1252426Y97638D01* +X1252460Y97774D01* +X1252497Y97910D01* +X1252538Y98045D01* +X1252583Y98179D01* +X1252632Y98311D01* +X1252684Y98442D01* +X1252740Y98571D01* +X1252800Y98698D01* +X1252863Y98824D01* +X1252929Y98948D01* +X1253000Y99071D01* +X1253073Y99191D01* +X1253150Y99309D01* +X1253230Y99425D01* +X1253314Y99538D01* +X1253400Y99649D01* +X1253490Y99758D01* +X1253583Y99864D01* +X1253678Y99967D01* +X1253777Y100068D01* +X1253878Y100166D01* +X1253982Y100261D01* +X1254089Y100353D01* +X1254198Y100442D01* +X1254310Y100527D01* +X1254424Y100610D01* +X1254540Y100690D01* +X1254659Y100766D01* +X1254780Y100838D01* +X1254902Y100908D01* +X1255027Y100973D01* +X1255153Y101036D01* +X1255281Y101094D01* +X1255411Y101149D01* +X1255542Y101201D01* +X1255675Y101248D01* +X1255809Y101292D01* +X1255944Y101333D01* +X1256080Y101369D01* +X1256217Y101401D01* +X1256355Y101430D01* +X1256493Y101455D01* +X1256633Y101475D01* +X1256773Y101492D01* +X1256913Y101505D01* +X1257054Y101514D01* +X1257194Y101519D01* +X1257335Y101520D01* +X1257476Y101517D01* +X1257617Y101510D01* +X1257757Y101499D01* +X1257897Y101484D01* +X1258037Y101465D01* +X1258176Y101443D01* +X1258314Y101416D01* +X1258452Y101386D01* +X1258588Y101351D01* +X1258724Y101313D01* +X1258858Y101271D01* +X1258992Y101225D01* +X1259124Y101176D01* +X1259254Y101122D01* +X1259383Y101065D01* +X1259510Y101005D01* +X1259636Y100941D01* +X1259759Y100873D01* +X1259881Y100802D01* +X1260001Y100728D01* +X1260118Y100650D01* +X1260233Y100569D01* +X1260346Y100485D01* +X1260457Y100398D01* +X1260565Y100307D01* +X1260670Y100214D01* +X1260773Y100117D01* +X1260873Y100018D01* +X1260970Y99916D01* +X1261064Y99811D01* +X1261155Y99704D01* +X1261243Y99594D01* +X1261328Y99482D01* +X1261410Y99367D01* +X1261489Y99250D01* +X1261564Y99131D01* +X1261636Y99010D01* +X1261704Y98887D01* +X1261769Y98762D01* +X1261831Y98635D01* +X1261888Y98506D01* +X1261943Y98376D01* +X1261993Y98245D01* +X1262040Y98112D01* +X1262083Y97978D01* +X1262122Y97842D01* +X1262157Y97706D01* +X1262189Y97569D01* +X1262216Y97431D01* +X1262240Y97292D01* +X1262260Y97152D01* +X1262276Y97012D01* +X1262288Y96872D01* +X1262296Y96731D01* +X1262300Y96590D01* +X1262300Y96450D01* +X1262296Y96309D01* +X1262288Y96168D01* +X1262276Y96028D01* +X1262260Y95888D01* +X1262240Y95748D01* +X1262216Y95609D01* +X1262189Y95471D01* +X1262157Y95334D01* +X1262122Y95198D01* +X1262083Y95062D01* +X1262040Y94928D01* +X1261993Y94795D01* +X1261943Y94664D01* +X1261888Y94534D01* +X1261831Y94405D01* +X1261769Y94278D01* +X1261704Y94153D01* +X1261636Y94030D01* +X1261564Y93909D01* +X1261489Y93790D01* +X1261410Y93673D01* +X1261328Y93558D01* +X1261243Y93446D01* +X1261155Y93336D01* +X1261064Y93229D01* +X1260970Y93124D01* +X1260873Y93022D01* +X1260773Y92923D01* +X1260670Y92826D01* +X1260565Y92733D01* +X1260457Y92642D01* +X1260346Y92555D01* +X1260233Y92471D01* +X1260118Y92390D01* +X1260001Y92312D01* +X1259881Y92238D01* +X1259759Y92167D01* +X1259636Y92099D01* +X1259510Y92035D01* +X1259383Y91975D01* +X1259254Y91918D01* +X1259124Y91864D01* +X1258992Y91815D01* +X1258858Y91769D01* +X1258724Y91727D01* +X1258588Y91689D01* +X1258452Y91654D01* +X1258314Y91624D01* +X1258176Y91597D01* +X1258037Y91575D01* +X1257897Y91556D01* +X1257757Y91541D01* +X1257617Y91530D01* +X1257476Y91523D01* +X1257335Y91520D01* +X1257194Y91521D01* +X1257054Y91526D01* +X1256913Y91535D01* +X1256773Y91548D01* +X1256633Y91565D01* +X1256493Y91585D01* +X1256355Y91610D01* +X1256217Y91639D01* +X1256080Y91671D01* +X1255944Y91707D01* +X1255809Y91748D01* +X1255675Y91792D01* +X1255542Y91839D01* +X1255411Y91891D01* +X1255281Y91946D01* +X1255153Y92004D01* +X1255027Y92067D01* +X1254902Y92132D01* +X1254780Y92202D01* +X1254659Y92274D01* +X1254540Y92350D01* +X1254424Y92430D01* +X1254310Y92513D01* +X1254198Y92598D01* +X1254089Y92687D01* +X1253982Y92779D01* +X1253878Y92874D01* +X1253777Y92972D01* +X1253678Y93073D01* +X1253583Y93176D01* +X1253490Y93282D01* +X1253400Y93391D01* +X1253314Y93502D01* +X1253230Y93615D01* +X1253150Y93731D01* +X1253073Y93849D01* +X1253000Y93969D01* +X1252929Y94092D01* +X1252863Y94216D01* +X1252800Y94342D01* +X1252740Y94469D01* +X1252684Y94598D01* +X1252632Y94729D01* +X1252583Y94861D01* +X1252538Y94995D01* +X1252497Y95130D01* +X1252460Y95266D01* +X1252426Y95402D01* +X1252397Y95540D01* +X1252371Y95679D01* +X1252350Y95818D01* +X1252332Y95958D01* +X1252318Y96098D01* +X1252308Y96238D01* +X1252302Y96379D01* +X1252300Y96520D01* +D37* +X490605Y121876D03* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_solderpaste_bottom.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_solderpaste_bottom.gbr new file mode 100644 index 0000000000..c4e40b89b4 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_solderpaste_bottom.gbr @@ -0,0 +1,13 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSolderpaste Bottom*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* + + +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_solderpaste_top.gbr b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_solderpaste_top.gbr new file mode 100644 index 0000000000..a73d2f6322 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/files/gerber/BAAAHS-BRN01-E_solderpaste_top.gbr @@ -0,0 +1,2987 @@ +G04 EAGLE Gerber RS-274X export* +G75* +%MOMM*% +%FSLAX34Y34*% +%LPD*% +%INSolderpaste Top*% +%IPPOS*% +%AMOC8* +5,1,8,0,0,1.08239X$1,22.5*% +G01* +%ADD10C,0.192500*% +%ADD11C,0.350000*% +%ADD12C,0.241500*% +%ADD13C,0.420000*% +%ADD14C,0.320038*% +%ADD15C,0.490000*% +%ADD16R,3.164769X3.166009*% +%ADD17C,0.315000*% +%ADD18C,0.200000*% +%ADD19C,0.700000*% +%ADD20C,0.950000*% +%ADD21R,0.919741X0.919741*% +%ADD22R,0.919894X0.920691*% +%ADD23R,0.921600X0.921600*% +%ADD24R,0.920331X0.919950*% +%ADD25C,0.091000*% +%ADD26C,0.210000*% +%ADD27C,0.140000*% +%ADD28C,0.402500*% +%ADD29C,0.124459*% + + +D10* +X248418Y349598D02* +X248418Y346022D01* +X244342Y346022D01* +X244342Y349598D01* +X248418Y349598D01* +X248418Y347851D02* +X244342Y347851D01* +X248418Y356522D02* +X248418Y360098D01* +X248418Y356522D02* +X244342Y356522D01* +X244342Y360098D01* +X248418Y360098D01* +X248418Y358351D02* +X244342Y358351D01* +X345942Y194998D02* +X345942Y191422D01* +X345942Y194998D02* +X350018Y194998D01* +X350018Y191422D01* +X345942Y191422D01* +X345942Y193251D02* +X350018Y193251D01* +X345942Y184498D02* +X345942Y180922D01* +X345942Y184498D02* +X350018Y184498D01* +X350018Y180922D01* +X345942Y180922D01* +X345942Y182751D02* +X350018Y182751D01* +X499878Y246962D02* +X499878Y250538D01* +X499878Y246962D02* +X495802Y246962D01* +X495802Y250538D01* +X499878Y250538D01* +X499878Y248791D02* +X495802Y248791D01* +X499878Y257462D02* +X499878Y261038D01* +X499878Y257462D02* +X495802Y257462D01* +X495802Y261038D01* +X499878Y261038D01* +X499878Y259291D02* +X495802Y259291D01* +D11* +X579830Y66870D02* +X579830Y59370D01* +X573330Y59370D01* +X573330Y66870D01* +X579830Y66870D01* +X579830Y62695D02* +X573330Y62695D01* +X573330Y66020D02* +X579830Y66020D01* +X579830Y75370D02* +X579830Y82870D01* +X579830Y75370D02* +X573330Y75370D01* +X573330Y82870D01* +X579830Y82870D01* +X579830Y78695D02* +X573330Y78695D01* +X573330Y82020D02* +X579830Y82020D01* +X352350Y70170D02* +X352350Y62670D01* +X352350Y70170D02* +X358850Y70170D01* +X358850Y62670D01* +X352350Y62670D01* +X352350Y65995D02* +X358850Y65995D01* +X358850Y69320D02* +X352350Y69320D01* +X352350Y54170D02* +X352350Y46670D01* +X352350Y54170D02* +X358850Y54170D01* +X358850Y46670D01* +X352350Y46670D01* +X352350Y49995D02* +X358850Y49995D01* +X358850Y53320D02* +X352350Y53320D01* +D10* +X691382Y163482D02* +X691382Y167058D01* +X695458Y167058D01* +X695458Y163482D01* +X691382Y163482D01* +X691382Y165311D02* +X695458Y165311D01* +X691382Y156558D02* +X691382Y152982D01* +X691382Y156558D02* +X695458Y156558D01* +X695458Y152982D01* +X691382Y152982D01* +X691382Y154811D02* +X695458Y154811D01* +X995178Y272362D02* +X995178Y275938D01* +X995178Y272362D02* +X991102Y272362D01* +X991102Y275938D01* +X995178Y275938D01* +X995178Y274191D02* +X991102Y274191D01* +X995178Y282862D02* +X995178Y286438D01* +X995178Y282862D02* +X991102Y282862D01* +X991102Y286438D01* +X995178Y286438D01* +X995178Y284691D02* +X991102Y284691D01* +X865638Y156558D02* +X865638Y152982D01* +X861562Y152982D01* +X861562Y156558D01* +X865638Y156558D01* +X865638Y154811D02* +X861562Y154811D01* +X865638Y163482D02* +X865638Y167058D01* +X865638Y163482D02* +X861562Y163482D01* +X861562Y167058D01* +X865638Y167058D01* +X865638Y165311D02* +X861562Y165311D01* +D11* +X498510Y296470D02* +X498510Y302970D01* +X509010Y302970D01* +X509010Y296470D01* +X498510Y296470D01* +X498510Y299795D02* +X509010Y299795D01* +X476510Y293470D02* +X476510Y286970D01* +X476510Y293470D02* +X487010Y293470D01* +X487010Y286970D01* +X476510Y286970D01* +X476510Y290295D02* +X487010Y290295D01* +X476510Y305970D02* +X476510Y312470D01* +X487010Y312470D01* +X487010Y305970D01* +X476510Y305970D01* +X476510Y309295D02* +X487010Y309295D01* +X457870Y326950D02* +X457870Y333450D01* +X468370Y333450D01* +X468370Y326950D01* +X457870Y326950D01* +X457870Y330275D02* +X468370Y330275D01* +X435870Y323950D02* +X435870Y317450D01* +X435870Y323950D02* +X446370Y323950D01* +X446370Y317450D01* +X435870Y317450D01* +X435870Y320775D02* +X446370Y320775D01* +X435870Y336450D02* +X435870Y342950D01* +X446370Y342950D01* +X446370Y336450D01* +X435870Y336450D01* +X435870Y339775D02* +X446370Y339775D01* +D10* +X1029202Y98478D02* +X1029202Y94902D01* +X1029202Y98478D02* +X1033278Y98478D01* +X1033278Y94902D01* +X1029202Y94902D01* +X1029202Y96731D02* +X1033278Y96731D01* +X1029202Y87978D02* +X1029202Y84402D01* +X1029202Y87978D02* +X1033278Y87978D01* +X1033278Y84402D01* +X1029202Y84402D01* +X1029202Y86231D02* +X1033278Y86231D01* +X704082Y143162D02* +X704082Y146738D01* +X708158Y146738D01* +X708158Y143162D01* +X704082Y143162D01* +X704082Y144991D02* +X708158Y144991D01* +X704082Y136238D02* +X704082Y132662D01* +X704082Y136238D02* +X708158Y136238D01* +X708158Y132662D01* +X704082Y132662D01* +X704082Y134491D02* +X708158Y134491D01* +X1252802Y140202D02* +X1256378Y140202D01* +X1252802Y140202D02* +X1252802Y144278D01* +X1256378Y144278D01* +X1256378Y140202D01* +X1256378Y142031D02* +X1252802Y142031D01* +X1252802Y143860D02* +X1256378Y143860D01* +X1263302Y140202D02* +X1266878Y140202D01* +X1263302Y140202D02* +X1263302Y144278D01* +X1266878Y144278D01* +X1266878Y140202D01* +X1266878Y142031D02* +X1263302Y142031D01* +X1263302Y143860D02* +X1266878Y143860D01* +X540438Y261118D02* +X536862Y261118D01* +X540438Y261118D02* +X540438Y257042D01* +X536862Y257042D01* +X536862Y261118D01* +X536862Y258871D02* +X540438Y258871D01* +X540438Y260700D02* +X536862Y260700D01* +X529938Y261118D02* +X526362Y261118D01* +X529938Y261118D02* +X529938Y257042D01* +X526362Y257042D01* +X526362Y261118D01* +X526362Y258871D02* +X529938Y258871D01* +X529938Y260700D02* +X526362Y260700D01* +X676142Y167058D02* +X676142Y163482D01* +X676142Y167058D02* +X680218Y167058D01* +X680218Y163482D01* +X676142Y163482D01* +X676142Y165311D02* +X680218Y165311D01* +X676142Y156558D02* +X676142Y152982D01* +X676142Y156558D02* +X680218Y156558D01* +X680218Y152982D01* +X676142Y152982D01* +X676142Y154811D02* +X680218Y154811D01* +X1007878Y272362D02* +X1007878Y275938D01* +X1007878Y272362D02* +X1003802Y272362D01* +X1003802Y275938D01* +X1007878Y275938D01* +X1007878Y274191D02* +X1003802Y274191D01* +X1007878Y282862D02* +X1007878Y286438D01* +X1007878Y282862D02* +X1003802Y282862D01* +X1003802Y286438D01* +X1007878Y286438D01* +X1007878Y284691D02* +X1003802Y284691D01* +X874262Y167058D02* +X874262Y163482D01* +X874262Y167058D02* +X878338Y167058D01* +X878338Y163482D01* +X874262Y163482D01* +X874262Y165311D02* +X878338Y165311D01* +X874262Y156558D02* +X874262Y152982D01* +X874262Y156558D02* +X878338Y156558D01* +X878338Y152982D01* +X874262Y152982D01* +X874262Y154811D02* +X878338Y154811D01* +X1178058Y100678D02* +X1178058Y97102D01* +X1173982Y97102D01* +X1173982Y100678D01* +X1178058Y100678D01* +X1178058Y98931D02* +X1173982Y98931D01* +X1178058Y107602D02* +X1178058Y111178D01* +X1178058Y107602D02* +X1173982Y107602D01* +X1173982Y111178D01* +X1178058Y111178D01* +X1178058Y109431D02* +X1173982Y109431D01* +X1033198Y141738D02* +X1029622Y141738D01* +X1033198Y141738D02* +X1033198Y137662D01* +X1029622Y137662D01* +X1029622Y141738D01* +X1029622Y139491D02* +X1033198Y139491D01* +X1033198Y141320D02* +X1029622Y141320D01* +X1022698Y141738D02* +X1019122Y141738D01* +X1022698Y141738D02* +X1022698Y137662D01* +X1019122Y137662D01* +X1019122Y141738D01* +X1019122Y139491D02* +X1022698Y139491D01* +X1022698Y141320D02* +X1019122Y141320D01* +X979858Y256038D02* +X976282Y256038D01* +X979858Y256038D02* +X979858Y251962D01* +X976282Y251962D01* +X976282Y256038D01* +X976282Y253791D02* +X979858Y253791D01* +X979858Y255620D02* +X976282Y255620D01* +X969358Y256038D02* +X965782Y256038D01* +X969358Y256038D02* +X969358Y251962D01* +X965782Y251962D01* +X965782Y256038D01* +X965782Y253791D02* +X969358Y253791D01* +X969358Y255620D02* +X965782Y255620D01* +X1043438Y87978D02* +X1043438Y84402D01* +X1039362Y84402D01* +X1039362Y87978D01* +X1043438Y87978D01* +X1043438Y86231D02* +X1039362Y86231D01* +X1043438Y94902D02* +X1043438Y98478D01* +X1043438Y94902D02* +X1039362Y94902D01* +X1039362Y98478D01* +X1043438Y98478D01* +X1043438Y96731D02* +X1039362Y96731D01* +X441378Y212858D02* +X437802Y212858D01* +X441378Y212858D02* +X441378Y208782D01* +X437802Y208782D01* +X437802Y212858D01* +X437802Y210611D02* +X441378Y210611D01* +X441378Y212440D02* +X437802Y212440D01* +X430878Y212858D02* +X427302Y212858D01* +X430878Y212858D02* +X430878Y208782D01* +X427302Y208782D01* +X427302Y212858D01* +X427302Y210611D02* +X430878Y210611D01* +X430878Y212440D02* +X427302Y212440D01* +X437802Y177298D02* +X441378Y177298D01* +X441378Y173222D01* +X437802Y173222D01* +X437802Y177298D01* +X437802Y175051D02* +X441378Y175051D01* +X441378Y176880D02* +X437802Y176880D01* +X430878Y177298D02* +X427302Y177298D01* +X430878Y177298D02* +X430878Y173222D01* +X427302Y173222D01* +X427302Y177298D01* +X427302Y175051D02* +X430878Y175051D01* +X430878Y176880D02* +X427302Y176880D01* +X430182Y187458D02* +X433758Y187458D01* +X433758Y183382D01* +X430182Y183382D01* +X430182Y187458D01* +X430182Y185211D02* +X433758Y185211D01* +X433758Y187040D02* +X430182Y187040D01* +X423258Y187458D02* +X419682Y187458D01* +X423258Y187458D02* +X423258Y183382D01* +X419682Y183382D01* +X419682Y187458D01* +X419682Y185211D02* +X423258Y185211D01* +X423258Y187040D02* +X419682Y187040D01* +X430182Y202698D02* +X433758Y202698D01* +X433758Y198622D01* +X430182Y198622D01* +X430182Y202698D01* +X430182Y200451D02* +X433758Y200451D01* +X433758Y202280D02* +X430182Y202280D01* +X423258Y202698D02* +X419682Y202698D01* +X423258Y202698D02* +X423258Y198622D01* +X419682Y198622D01* +X419682Y202698D01* +X419682Y200451D02* +X423258Y200451D01* +X423258Y202280D02* +X419682Y202280D01* +X526362Y201162D02* +X529938Y201162D01* +X526362Y201162D02* +X526362Y205238D01* +X529938Y205238D01* +X529938Y201162D01* +X529938Y202991D02* +X526362Y202991D01* +X526362Y204820D02* +X529938Y204820D01* +X536862Y201162D02* +X540438Y201162D01* +X536862Y201162D02* +X536862Y205238D01* +X540438Y205238D01* +X540438Y201162D01* +X540438Y202991D02* +X536862Y202991D01* +X536862Y204820D02* +X540438Y204820D01* +X554302Y152902D02* +X557878Y152902D01* +X554302Y152902D02* +X554302Y156978D01* +X557878Y156978D01* +X557878Y152902D01* +X557878Y154731D02* +X554302Y154731D01* +X554302Y156560D02* +X557878Y156560D01* +X564802Y152902D02* +X568378Y152902D01* +X564802Y152902D02* +X564802Y156978D01* +X568378Y156978D01* +X568378Y152902D01* +X568378Y154731D02* +X564802Y154731D01* +X564802Y156560D02* +X568378Y156560D01* +X568458Y178382D02* +X568458Y181958D01* +X568458Y178382D02* +X564382Y178382D01* +X564382Y181958D01* +X568458Y181958D01* +X568458Y180211D02* +X564382Y180211D01* +X568458Y188882D02* +X568458Y192458D01* +X568458Y188882D02* +X564382Y188882D01* +X564382Y192458D01* +X568458Y192458D01* +X568458Y190711D02* +X564382Y190711D01* +X529938Y226562D02* +X526362Y226562D01* +X526362Y230638D01* +X529938Y230638D01* +X529938Y226562D01* +X529938Y228391D02* +X526362Y228391D01* +X526362Y230220D02* +X529938Y230220D01* +X536862Y226562D02* +X540438Y226562D01* +X536862Y226562D02* +X536862Y230638D01* +X540438Y230638D01* +X540438Y226562D01* +X540438Y228391D02* +X536862Y228391D01* +X536862Y230220D02* +X540438Y230220D01* +X461778Y169258D02* +X461778Y165682D01* +X457702Y165682D01* +X457702Y169258D01* +X461778Y169258D01* +X461778Y167511D02* +X457702Y167511D01* +X461778Y176182D02* +X461778Y179758D01* +X461778Y176182D02* +X457702Y176182D01* +X457702Y179758D01* +X461778Y179758D01* +X461778Y178011D02* +X457702Y178011D01* +X441378Y141738D02* +X437802Y141738D01* +X441378Y141738D02* +X441378Y137662D01* +X437802Y137662D01* +X437802Y141738D01* +X437802Y139491D02* +X441378Y139491D01* +X441378Y141320D02* +X437802Y141320D01* +X430878Y141738D02* +X427302Y141738D01* +X430878Y141738D02* +X430878Y137662D01* +X427302Y137662D01* +X427302Y141738D01* +X427302Y139491D02* +X430878Y139491D01* +X430878Y141320D02* +X427302Y141320D01* +X439922Y305722D02* +X439922Y309298D01* +X443998Y309298D01* +X443998Y305722D01* +X439922Y305722D01* +X439922Y307551D02* +X443998Y307551D01* +X439922Y298798D02* +X439922Y295222D01* +X439922Y298798D02* +X443998Y298798D01* +X443998Y295222D01* +X439922Y295222D01* +X439922Y297051D02* +X443998Y297051D01* +X441378Y129038D02* +X437802Y129038D01* +X441378Y129038D02* +X441378Y124962D01* +X437802Y124962D01* +X437802Y129038D01* +X437802Y126791D02* +X441378Y126791D01* +X441378Y128620D02* +X437802Y128620D01* +X430878Y129038D02* +X427302Y129038D01* +X430878Y129038D02* +X430878Y124962D01* +X427302Y124962D01* +X427302Y129038D01* +X427302Y126791D02* +X430878Y126791D01* +X430878Y128620D02* +X427302Y128620D01* +X549562Y192538D02* +X553138Y192538D01* +X553138Y188462D01* +X549562Y188462D01* +X549562Y192538D01* +X549562Y190291D02* +X553138Y190291D01* +X553138Y192120D02* +X549562Y192120D01* +X542638Y192538D02* +X539062Y192538D01* +X542638Y192538D02* +X542638Y188462D01* +X539062Y188462D01* +X539062Y192538D01* +X539062Y190291D02* +X542638Y190291D01* +X542638Y192120D02* +X539062Y192120D01* +X529938Y213862D02* +X526362Y213862D01* +X526362Y217938D01* +X529938Y217938D01* +X529938Y213862D01* +X529938Y215691D02* +X526362Y215691D01* +X526362Y217520D02* +X529938Y217520D01* +X536862Y213862D02* +X540438Y213862D01* +X536862Y213862D02* +X536862Y217938D01* +X540438Y217938D01* +X540438Y213862D01* +X540438Y215691D02* +X536862Y215691D01* +X536862Y217520D02* +X540438Y217520D01* +X541522Y156898D02* +X541522Y153322D01* +X541522Y156898D02* +X545598Y156898D01* +X545598Y153322D01* +X541522Y153322D01* +X541522Y155151D02* +X545598Y155151D01* +X541522Y146398D02* +X541522Y142822D01* +X541522Y146398D02* +X545598Y146398D01* +X545598Y142822D01* +X541522Y142822D01* +X541522Y144651D02* +X545598Y144651D01* +X564802Y172218D02* +X568378Y172218D01* +X568378Y168142D01* +X564802Y168142D01* +X564802Y172218D01* +X564802Y169971D02* +X568378Y169971D01* +X568378Y171800D02* +X564802Y171800D01* +X557878Y172218D02* +X554302Y172218D01* +X557878Y172218D02* +X557878Y168142D01* +X554302Y168142D01* +X554302Y172218D01* +X554302Y169971D02* +X557878Y169971D01* +X557878Y171800D02* +X554302Y171800D01* +X487178Y246962D02* +X487178Y250538D01* +X487178Y246962D02* +X483102Y246962D01* +X483102Y250538D01* +X487178Y250538D01* +X487178Y248791D02* +X483102Y248791D01* +X487178Y257462D02* +X487178Y261038D01* +X487178Y257462D02* +X483102Y257462D01* +X483102Y261038D01* +X487178Y261038D01* +X487178Y259291D02* +X483102Y259291D01* +X464318Y295222D02* +X464318Y298798D01* +X464318Y295222D02* +X460242Y295222D01* +X460242Y298798D01* +X464318Y298798D01* +X464318Y297051D02* +X460242Y297051D01* +X464318Y305722D02* +X464318Y309298D01* +X464318Y305722D02* +X460242Y305722D01* +X460242Y309298D01* +X464318Y309298D01* +X464318Y307551D02* +X460242Y307551D01* +X352138Y361182D02* +X348562Y361182D01* +X348562Y365258D01* +X352138Y365258D01* +X352138Y361182D01* +X352138Y363011D02* +X348562Y363011D01* +X348562Y364840D02* +X352138Y364840D01* +X359062Y361182D02* +X362638Y361182D01* +X359062Y361182D02* +X359062Y365258D01* +X362638Y365258D01* +X362638Y361182D01* +X362638Y363011D02* +X359062Y363011D01* +X359062Y364840D02* +X362638Y364840D01* +X1213618Y100678D02* +X1213618Y97102D01* +X1209542Y97102D01* +X1209542Y100678D01* +X1213618Y100678D01* +X1213618Y98931D02* +X1209542Y98931D01* +X1213618Y107602D02* +X1213618Y111178D01* +X1213618Y107602D02* +X1209542Y107602D01* +X1209542Y111178D01* +X1213618Y111178D01* +X1213618Y109431D02* +X1209542Y109431D01* +X751258Y162058D02* +X747682Y162058D01* +X751258Y162058D02* +X751258Y157982D01* +X747682Y157982D01* +X747682Y162058D01* +X747682Y159811D02* +X751258Y159811D01* +X751258Y161640D02* +X747682Y161640D01* +X740758Y162058D02* +X737182Y162058D01* +X740758Y162058D02* +X740758Y157982D01* +X737182Y157982D01* +X737182Y162058D01* +X737182Y159811D02* +X740758Y159811D01* +X740758Y161640D02* +X737182Y161640D01* +X715358Y157982D02* +X711782Y157982D01* +X711782Y162058D01* +X715358Y162058D01* +X715358Y157982D01* +X715358Y159811D02* +X711782Y159811D01* +X711782Y161640D02* +X715358Y161640D01* +X722282Y157982D02* +X725858Y157982D01* +X722282Y157982D02* +X722282Y162058D01* +X725858Y162058D01* +X725858Y157982D01* +X725858Y159811D02* +X722282Y159811D01* +X722282Y161640D02* +X725858Y161640D01* +D11* +X456250Y262330D02* +X448750Y262330D01* +X456250Y262330D02* +X456250Y255830D01* +X448750Y255830D01* +X448750Y262330D01* +X448750Y259155D02* +X456250Y259155D01* +X440250Y262330D02* +X432750Y262330D01* +X440250Y262330D02* +X440250Y255830D01* +X432750Y255830D01* +X432750Y262330D01* +X432750Y259155D02* +X440250Y259155D01* +X440250Y225350D02* +X432750Y225350D01* +X432750Y231850D01* +X440250Y231850D01* +X440250Y225350D01* +X440250Y228675D02* +X432750Y228675D01* +X448750Y225350D02* +X456250Y225350D01* +X448750Y225350D02* +X448750Y231850D01* +X456250Y231850D01* +X456250Y225350D01* +X456250Y228675D02* +X448750Y228675D01* +D10* +X1035818Y166718D02* +X1035818Y163142D01* +X1031742Y163142D01* +X1031742Y166718D01* +X1035818Y166718D01* +X1035818Y164971D02* +X1031742Y164971D01* +X1035818Y173642D02* +X1035818Y177218D01* +X1035818Y173642D02* +X1031742Y173642D01* +X1031742Y177218D01* +X1035818Y177218D01* +X1035818Y175471D02* +X1031742Y175471D01* +X464318Y206322D02* +X464318Y209898D01* +X464318Y206322D02* +X460242Y206322D01* +X460242Y209898D01* +X464318Y209898D01* +X464318Y208151D02* +X460242Y208151D01* +X464318Y216822D02* +X464318Y220398D01* +X464318Y216822D02* +X460242Y216822D01* +X460242Y220398D01* +X464318Y220398D01* +X464318Y218651D02* +X460242Y218651D01* +X470402Y159438D02* +X470402Y155862D01* +X470402Y159438D02* +X474478Y159438D01* +X474478Y155862D01* +X470402Y155862D01* +X470402Y157691D02* +X474478Y157691D01* +X470402Y148938D02* +X470402Y145362D01* +X470402Y148938D02* +X474478Y148938D01* +X474478Y145362D01* +X470402Y145362D01* +X470402Y147191D02* +X474478Y147191D01* +D11* +X524950Y137870D02* +X532450Y137870D01* +X532450Y131370D01* +X524950Y131370D01* +X524950Y137870D01* +X524950Y134695D02* +X532450Y134695D01* +X516450Y137870D02* +X508950Y137870D01* +X516450Y137870D02* +X516450Y131370D01* +X508950Y131370D01* +X508950Y137870D01* +X508950Y134695D02* +X516450Y134695D01* +X1024330Y282890D02* +X1024330Y290390D01* +X1024330Y282890D02* +X1017830Y282890D01* +X1017830Y290390D01* +X1024330Y290390D01* +X1024330Y286215D02* +X1017830Y286215D01* +X1017830Y289540D02* +X1024330Y289540D01* +X1024330Y298890D02* +X1024330Y306390D01* +X1024330Y298890D02* +X1017830Y298890D01* +X1017830Y306390D01* +X1024330Y306390D01* +X1024330Y302215D02* +X1017830Y302215D01* +X1017830Y305540D02* +X1024330Y305540D01* +D10* +X1035818Y293718D02* +X1035818Y290142D01* +X1031742Y290142D01* +X1031742Y293718D01* +X1035818Y293718D01* +X1035818Y291971D02* +X1031742Y291971D01* +X1035818Y300642D02* +X1035818Y304218D01* +X1035818Y300642D02* +X1031742Y300642D01* +X1031742Y304218D01* +X1035818Y304218D01* +X1035818Y302471D02* +X1031742Y302471D01* +D11* +X1012750Y70170D02* +X1012750Y62670D01* +X1012750Y70170D02* +X1019250Y70170D01* +X1019250Y62670D01* +X1012750Y62670D01* +X1012750Y65995D02* +X1019250Y65995D01* +X1019250Y69320D02* +X1012750Y69320D01* +X1012750Y54170D02* +X1012750Y46670D01* +X1012750Y54170D02* +X1019250Y54170D01* +X1019250Y46670D01* +X1012750Y46670D01* +X1012750Y49995D02* +X1019250Y49995D01* +X1019250Y53320D02* +X1012750Y53320D01* +X685090Y88070D02* +X685090Y95570D01* +X691590Y95570D01* +X691590Y88070D01* +X685090Y88070D01* +X685090Y91395D02* +X691590Y91395D01* +X691590Y94720D02* +X685090Y94720D01* +X685090Y79570D02* +X685090Y72070D01* +X685090Y79570D02* +X691590Y79570D01* +X691590Y72070D01* +X685090Y72070D01* +X685090Y75395D02* +X691590Y75395D01* +X691590Y78720D02* +X685090Y78720D01* +D10* +X1049522Y94902D02* +X1049522Y98478D01* +X1053598Y98478D01* +X1053598Y94902D01* +X1049522Y94902D01* +X1049522Y96731D02* +X1053598Y96731D01* +X1049522Y87978D02* +X1049522Y84402D01* +X1049522Y87978D02* +X1053598Y87978D01* +X1053598Y84402D01* +X1049522Y84402D01* +X1049522Y86231D02* +X1053598Y86231D01* +X511042Y155862D02* +X511042Y159438D01* +X515118Y159438D01* +X515118Y155862D01* +X511042Y155862D01* +X511042Y157691D02* +X515118Y157691D01* +X511042Y148938D02* +X511042Y145362D01* +X511042Y148938D02* +X515118Y148938D01* +X515118Y145362D01* +X511042Y145362D01* +X511042Y147191D02* +X515118Y147191D01* +X523742Y155862D02* +X523742Y159438D01* +X527818Y159438D01* +X527818Y155862D01* +X523742Y155862D01* +X523742Y157691D02* +X527818Y157691D01* +X523742Y148938D02* +X523742Y145362D01* +X523742Y148938D02* +X527818Y148938D01* +X527818Y145362D01* +X523742Y145362D01* +X523742Y147191D02* +X527818Y147191D01* +X348482Y351442D02* +X348482Y355018D01* +X352558Y355018D01* +X352558Y351442D01* +X348482Y351442D01* +X348482Y353271D02* +X352558Y353271D01* +X348482Y344518D02* +X348482Y340942D01* +X348482Y344518D02* +X352558Y344518D01* +X352558Y340942D01* +X348482Y340942D01* +X348482Y342771D02* +X352558Y342771D01* +X358642Y351442D02* +X358642Y355018D01* +X362718Y355018D01* +X362718Y351442D01* +X358642Y351442D01* +X358642Y353271D02* +X362718Y353271D01* +X358642Y344518D02* +X358642Y340942D01* +X358642Y344518D02* +X362718Y344518D01* +X362718Y340942D01* +X358642Y340942D01* +X358642Y342771D02* +X362718Y342771D01* +X238258Y346022D02* +X238258Y349598D01* +X238258Y346022D02* +X234182Y346022D01* +X234182Y349598D01* +X238258Y349598D01* +X238258Y347851D02* +X234182Y347851D01* +X238258Y356522D02* +X238258Y360098D01* +X238258Y356522D02* +X234182Y356522D01* +X234182Y360098D01* +X238258Y360098D01* +X238258Y358351D02* +X234182Y358351D01* +X182378Y344518D02* +X182378Y340942D01* +X178302Y340942D01* +X178302Y344518D01* +X182378Y344518D01* +X182378Y342771D02* +X178302Y342771D01* +X182378Y351442D02* +X182378Y355018D01* +X182378Y351442D02* +X178302Y351442D01* +X178302Y355018D01* +X182378Y355018D01* +X182378Y353271D02* +X178302Y353271D01* +D11* +X448750Y247090D02* +X456250Y247090D01* +X456250Y240590D01* +X448750Y240590D01* +X448750Y247090D01* +X448750Y243915D02* +X456250Y243915D01* +X440250Y247090D02* +X432750Y247090D01* +X440250Y247090D02* +X440250Y240590D01* +X432750Y240590D01* +X432750Y247090D01* +X432750Y243915D02* +X440250Y243915D01* +D12* +X611777Y105693D02* +X611777Y98107D01* +X611777Y105693D02* +X616263Y105693D01* +X616263Y98107D01* +X611777Y98107D01* +X611777Y100401D02* +X616263Y100401D01* +X616263Y102695D02* +X611777Y102695D01* +X611777Y104989D02* +X616263Y104989D01* +X602277Y105693D02* +X602277Y98107D01* +X602277Y105693D02* +X606763Y105693D01* +X606763Y98107D01* +X602277Y98107D01* +X602277Y100401D02* +X606763Y100401D01* +X606763Y102695D02* +X602277Y102695D01* +X602277Y104989D02* +X606763Y104989D01* +X592777Y105693D02* +X592777Y98107D01* +X592777Y105693D02* +X597263Y105693D01* +X597263Y98107D01* +X592777Y98107D01* +X592777Y100401D02* +X597263Y100401D01* +X597263Y102695D02* +X592777Y102695D01* +X592777Y104989D02* +X597263Y104989D01* +X592777Y79693D02* +X592777Y72107D01* +X592777Y79693D02* +X597263Y79693D01* +X597263Y72107D01* +X592777Y72107D01* +X592777Y74401D02* +X597263Y74401D01* +X597263Y76695D02* +X592777Y76695D01* +X592777Y78989D02* +X597263Y78989D01* +X602277Y79693D02* +X602277Y72107D01* +X602277Y79693D02* +X606763Y79693D01* +X606763Y72107D01* +X602277Y72107D01* +X602277Y74401D02* +X606763Y74401D01* +X606763Y76695D02* +X602277Y76695D01* +X602277Y78989D02* +X606763Y78989D01* +X611777Y79693D02* +X611777Y72107D01* +X611777Y79693D02* +X616263Y79693D01* +X616263Y72107D01* +X611777Y72107D01* +X611777Y74401D02* +X616263Y74401D01* +X616263Y76695D02* +X611777Y76695D01* +X611777Y78989D02* +X616263Y78989D01* +D13* +X639960Y77580D02* +X647760Y77580D01* +X639960Y77580D02* +X639960Y110380D01* +X647760Y110380D01* +X647760Y77580D01* +X647760Y81570D02* +X639960Y81570D01* +X639960Y85560D02* +X647760Y85560D01* +X647760Y89550D02* +X639960Y89550D01* +X639960Y93540D02* +X647760Y93540D01* +X647760Y97530D02* +X639960Y97530D01* +X639960Y101520D02* +X647760Y101520D01* +X647760Y105510D02* +X639960Y105510D01* +X639960Y109500D02* +X647760Y109500D01* +X667960Y77580D02* +X675760Y77580D01* +X667960Y77580D02* +X667960Y110380D01* +X675760Y110380D01* +X675760Y77580D01* +X675760Y81570D02* +X667960Y81570D01* +X667960Y85560D02* +X675760Y85560D01* +X675760Y89550D02* +X667960Y89550D01* +X667960Y93540D02* +X675760Y93540D01* +X675760Y97530D02* +X667960Y97530D01* +X667960Y101520D02* +X675760Y101520D01* +X675760Y105510D02* +X667960Y105510D01* +X667960Y109500D02* +X675760Y109500D01* +D10* +X606478Y65538D02* +X602902Y65538D01* +X606478Y65538D02* +X606478Y61462D01* +X602902Y61462D01* +X602902Y65538D01* +X602902Y63291D02* +X606478Y63291D01* +X606478Y65120D02* +X602902Y65120D01* +X595978Y65538D02* +X592402Y65538D01* +X595978Y65538D02* +X595978Y61462D01* +X592402Y61462D01* +X592402Y65538D01* +X592402Y63291D02* +X595978Y63291D01* +X595978Y65120D02* +X592402Y65120D01* +X627882Y107602D02* +X627882Y111178D01* +X631958Y111178D01* +X631958Y107602D01* +X627882Y107602D01* +X627882Y109431D02* +X631958Y109431D01* +X627882Y100678D02* +X627882Y97102D01* +X627882Y100678D02* +X631958Y100678D01* +X631958Y97102D01* +X627882Y97102D01* +X627882Y98931D02* +X631958Y98931D01* +X613758Y114802D02* +X610182Y114802D01* +X610182Y118878D01* +X613758Y118878D01* +X613758Y114802D01* +X613758Y116631D02* +X610182Y116631D01* +X610182Y118460D02* +X613758Y118460D01* +X620682Y114802D02* +X624258Y114802D01* +X620682Y114802D02* +X620682Y118878D01* +X624258Y118878D01* +X624258Y114802D01* +X624258Y116631D02* +X620682Y116631D01* +X620682Y118460D02* +X624258Y118460D01* +X588358Y114802D02* +X584782Y114802D01* +X584782Y118878D01* +X588358Y118878D01* +X588358Y114802D01* +X588358Y116631D02* +X584782Y116631D01* +X584782Y118460D02* +X588358Y118460D01* +X595282Y114802D02* +X598858Y114802D01* +X595282Y114802D02* +X595282Y118878D01* +X598858Y118878D01* +X598858Y114802D01* +X598858Y116631D02* +X595282Y116631D01* +X595282Y118460D02* +X598858Y118460D01* +D14* +X639369Y62916D02* +X639369Y53924D01* +X633425Y53924D01* +X633425Y62916D01* +X639369Y62916D01* +X639369Y56964D02* +X633425Y56964D01* +X633425Y60004D02* +X639369Y60004D01* +X672135Y62916D02* +X672135Y53924D01* +X666191Y53924D01* +X666191Y62916D01* +X672135Y62916D01* +X672135Y56964D02* +X666191Y56964D01* +X666191Y60004D02* +X672135Y60004D01* +D10* +X540098Y114802D02* +X536522Y114802D01* +X536522Y118878D01* +X540098Y118878D01* +X540098Y114802D01* +X540098Y116631D02* +X536522Y116631D01* +X536522Y118460D02* +X540098Y118460D01* +X547022Y114802D02* +X550598Y114802D01* +X547022Y114802D02* +X547022Y118878D01* +X550598Y118878D01* +X550598Y114802D01* +X550598Y116631D02* +X547022Y116631D01* +X547022Y118460D02* +X550598Y118460D01* +D11* +X546930Y60250D02* +X539430Y60250D01* +X539430Y66750D01* +X546930Y66750D01* +X546930Y60250D01* +X546930Y63575D02* +X539430Y63575D01* +X555430Y60250D02* +X562930Y60250D01* +X555430Y60250D02* +X555430Y66750D01* +X562930Y66750D01* +X562930Y60250D01* +X562930Y63575D02* +X555430Y63575D01* +D15* +X581450Y132470D02* +X597550Y132470D01* +X581450Y132470D02* +X581450Y141570D01* +X597550Y141570D01* +X597550Y132470D01* +X597550Y137125D02* +X581450Y137125D01* +X581450Y178470D02* +X597550Y178470D01* +X581450Y178470D02* +X581450Y187570D01* +X597550Y187570D01* +X597550Y178470D01* +X597550Y183125D02* +X581450Y183125D01* +X672450Y178470D02* +X688550Y178470D01* +X672450Y178470D02* +X672450Y187570D01* +X688550Y187570D01* +X688550Y178470D01* +X688550Y183125D02* +X672450Y183125D01* +X672450Y132470D02* +X688550Y132470D01* +X672450Y132470D02* +X672450Y141570D01* +X688550Y141570D01* +X688550Y132470D01* +X688550Y137125D02* +X672450Y137125D01* +X941950Y197910D02* +X941950Y214010D01* +X941950Y197910D02* +X932850Y197910D01* +X932850Y214010D01* +X941950Y214010D01* +X941950Y202565D02* +X932850Y202565D01* +X932850Y207220D02* +X941950Y207220D01* +X941950Y211875D02* +X932850Y211875D01* +X895950Y214010D02* +X895950Y197910D01* +X886850Y197910D01* +X886850Y214010D01* +X895950Y214010D01* +X895950Y202565D02* +X886850Y202565D01* +X886850Y207220D02* +X895950Y207220D01* +X895950Y211875D02* +X886850Y211875D01* +X895950Y288910D02* +X895950Y305010D01* +X895950Y288910D02* +X886850Y288910D01* +X886850Y305010D01* +X895950Y305010D01* +X895950Y293565D02* +X886850Y293565D01* +X886850Y298220D02* +X895950Y298220D01* +X895950Y302875D02* +X886850Y302875D01* +X941950Y305010D02* +X941950Y288910D01* +X932850Y288910D01* +X932850Y305010D01* +X941950Y305010D01* +X941950Y293565D02* +X932850Y293565D01* +X932850Y298220D02* +X941950Y298220D01* +X941950Y302875D02* +X932850Y302875D01* +X782970Y132470D02* +X766870Y132470D01* +X766870Y141570D01* +X782970Y141570D01* +X782970Y132470D01* +X782970Y137125D02* +X766870Y137125D01* +X766870Y178470D02* +X782970Y178470D01* +X766870Y178470D02* +X766870Y187570D01* +X782970Y187570D01* +X782970Y178470D01* +X782970Y183125D02* +X766870Y183125D01* +X857870Y178470D02* +X873970Y178470D01* +X857870Y178470D02* +X857870Y187570D01* +X873970Y187570D01* +X873970Y178470D01* +X873970Y183125D02* +X857870Y183125D01* +X857870Y132470D02* +X873970Y132470D01* +X857870Y132470D02* +X857870Y141570D01* +X873970Y141570D01* +X873970Y132470D01* +X873970Y137125D02* +X857870Y137125D01* +D10* +X537558Y178302D02* +X533982Y178302D01* +X533982Y182378D01* +X537558Y182378D01* +X537558Y178302D01* +X537558Y180131D02* +X533982Y180131D01* +X533982Y181960D02* +X537558Y181960D01* +X544482Y178302D02* +X548058Y178302D01* +X544482Y178302D02* +X544482Y182378D01* +X548058Y182378D01* +X548058Y178302D01* +X548058Y180131D02* +X544482Y180131D01* +X544482Y181960D02* +X548058Y181960D01* +X855478Y47338D02* +X855478Y43762D01* +X851402Y43762D01* +X851402Y47338D01* +X855478Y47338D01* +X855478Y45591D02* +X851402Y45591D01* +X855478Y54262D02* +X855478Y57838D01* +X855478Y54262D02* +X851402Y54262D01* +X851402Y57838D01* +X855478Y57838D01* +X855478Y56091D02* +X851402Y56091D01* +D16* +X1127907Y229041D03* +D17* +X1061345Y301135D02* +X1044495Y301135D01* +X1044495Y306985D01* +X1061345Y306985D01* +X1061345Y301135D01* +X1061345Y304127D02* +X1044495Y304127D01* +X1044495Y288435D02* +X1061345Y288435D01* +X1044495Y288435D02* +X1044495Y294285D01* +X1061345Y294285D01* +X1061345Y288435D01* +X1061345Y291427D02* +X1044495Y291427D01* +X1044495Y275735D02* +X1061345Y275735D01* +X1044495Y275735D02* +X1044495Y281585D01* +X1061345Y281585D01* +X1061345Y275735D01* +X1061345Y278727D02* +X1044495Y278727D01* +X1044495Y263035D02* +X1061345Y263035D01* +X1044495Y263035D02* +X1044495Y268885D01* +X1061345Y268885D01* +X1061345Y263035D01* +X1061345Y266027D02* +X1044495Y266027D01* +X1044495Y250335D02* +X1061345Y250335D01* +X1044495Y250335D02* +X1044495Y256185D01* +X1061345Y256185D01* +X1061345Y250335D01* +X1061345Y253327D02* +X1044495Y253327D01* +X1044495Y237635D02* +X1061345Y237635D01* +X1044495Y237635D02* +X1044495Y243485D01* +X1061345Y243485D01* +X1061345Y237635D01* +X1061345Y240627D02* +X1044495Y240627D01* +X1044495Y224935D02* +X1061345Y224935D01* +X1044495Y224935D02* +X1044495Y230785D01* +X1061345Y230785D01* +X1061345Y224935D01* +X1061345Y227927D02* +X1044495Y227927D01* +X1044495Y212235D02* +X1061345Y212235D01* +X1044495Y212235D02* +X1044495Y218085D01* +X1061345Y218085D01* +X1061345Y212235D01* +X1061345Y215227D02* +X1044495Y215227D01* +X1044495Y199535D02* +X1061345Y199535D01* +X1044495Y199535D02* +X1044495Y205385D01* +X1061345Y205385D01* +X1061345Y199535D01* +X1061345Y202527D02* +X1044495Y202527D01* +X1044495Y186835D02* +X1061345Y186835D01* +X1044495Y186835D02* +X1044495Y192685D01* +X1061345Y192685D01* +X1061345Y186835D01* +X1061345Y189827D02* +X1044495Y189827D01* +X1044495Y174135D02* +X1061345Y174135D01* +X1044495Y174135D02* +X1044495Y179985D01* +X1061345Y179985D01* +X1061345Y174135D01* +X1061345Y177127D02* +X1044495Y177127D01* +X1044495Y161435D02* +X1061345Y161435D01* +X1044495Y161435D02* +X1044495Y167285D01* +X1061345Y167285D01* +X1061345Y161435D01* +X1061345Y164427D02* +X1044495Y164427D01* +X1044495Y148735D02* +X1061345Y148735D01* +X1044495Y148735D02* +X1044495Y154585D01* +X1061345Y154585D01* +X1061345Y148735D01* +X1061345Y151727D02* +X1044495Y151727D01* +X1044495Y136035D02* +X1061345Y136035D01* +X1044495Y136035D02* +X1044495Y141885D01* +X1061345Y141885D01* +X1061345Y136035D01* +X1061345Y139027D02* +X1044495Y139027D01* +X1083695Y137385D02* +X1083695Y120535D01* +X1077845Y120535D01* +X1077845Y137385D01* +X1083695Y137385D01* +X1083695Y123527D02* +X1077845Y123527D01* +X1077845Y126519D02* +X1083695Y126519D01* +X1083695Y129511D02* +X1077845Y129511D01* +X1077845Y132503D02* +X1083695Y132503D01* +X1083695Y135495D02* +X1077845Y135495D01* +X1096395Y137385D02* +X1096395Y120535D01* +X1090545Y120535D01* +X1090545Y137385D01* +X1096395Y137385D01* +X1096395Y123527D02* +X1090545Y123527D01* +X1090545Y126519D02* +X1096395Y126519D01* +X1096395Y129511D02* +X1090545Y129511D01* +X1090545Y132503D02* +X1096395Y132503D01* +X1096395Y135495D02* +X1090545Y135495D01* +X1109095Y137385D02* +X1109095Y120535D01* +X1103245Y120535D01* +X1103245Y137385D01* +X1109095Y137385D01* +X1109095Y123527D02* +X1103245Y123527D01* +X1103245Y126519D02* +X1109095Y126519D01* +X1109095Y129511D02* +X1103245Y129511D01* +X1103245Y132503D02* +X1109095Y132503D01* +X1109095Y135495D02* +X1103245Y135495D01* +X1121795Y137385D02* +X1121795Y120535D01* +X1115945Y120535D01* +X1115945Y137385D01* +X1121795Y137385D01* +X1121795Y123527D02* +X1115945Y123527D01* +X1115945Y126519D02* +X1121795Y126519D01* +X1121795Y129511D02* +X1115945Y129511D01* +X1115945Y132503D02* +X1121795Y132503D01* +X1121795Y135495D02* +X1115945Y135495D01* +X1134495Y137385D02* +X1134495Y120535D01* +X1128645Y120535D01* +X1128645Y137385D01* +X1134495Y137385D01* +X1134495Y123527D02* +X1128645Y123527D01* +X1128645Y126519D02* +X1134495Y126519D01* +X1134495Y129511D02* +X1128645Y129511D01* +X1128645Y132503D02* +X1134495Y132503D01* +X1134495Y135495D02* +X1128645Y135495D01* +X1147195Y137385D02* +X1147195Y120535D01* +X1141345Y120535D01* +X1141345Y137385D01* +X1147195Y137385D01* +X1147195Y123527D02* +X1141345Y123527D01* +X1141345Y126519D02* +X1147195Y126519D01* +X1147195Y129511D02* +X1141345Y129511D01* +X1141345Y132503D02* +X1147195Y132503D01* +X1147195Y135495D02* +X1141345Y135495D01* +X1159895Y137385D02* +X1159895Y120535D01* +X1154045Y120535D01* +X1154045Y137385D01* +X1159895Y137385D01* +X1159895Y123527D02* +X1154045Y123527D01* +X1154045Y126519D02* +X1159895Y126519D01* +X1159895Y129511D02* +X1154045Y129511D01* +X1154045Y132503D02* +X1159895Y132503D01* +X1159895Y135495D02* +X1154045Y135495D01* +X1172595Y137385D02* +X1172595Y120535D01* +X1166745Y120535D01* +X1166745Y137385D01* +X1172595Y137385D01* +X1172595Y123527D02* +X1166745Y123527D01* +X1166745Y126519D02* +X1172595Y126519D01* +X1172595Y129511D02* +X1166745Y129511D01* +X1166745Y132503D02* +X1172595Y132503D01* +X1172595Y135495D02* +X1166745Y135495D01* +X1185295Y137385D02* +X1185295Y120535D01* +X1179445Y120535D01* +X1179445Y137385D01* +X1185295Y137385D01* +X1185295Y123527D02* +X1179445Y123527D01* +X1179445Y126519D02* +X1185295Y126519D01* +X1185295Y129511D02* +X1179445Y129511D01* +X1179445Y132503D02* +X1185295Y132503D01* +X1185295Y135495D02* +X1179445Y135495D01* +X1197995Y137385D02* +X1197995Y120535D01* +X1192145Y120535D01* +X1192145Y137385D01* +X1197995Y137385D01* +X1197995Y123527D02* +X1192145Y123527D01* +X1192145Y126519D02* +X1197995Y126519D01* +X1197995Y129511D02* +X1192145Y129511D01* +X1192145Y132503D02* +X1197995Y132503D01* +X1197995Y135495D02* +X1192145Y135495D01* +X1214495Y141885D02* +X1231345Y141885D01* +X1231345Y136035D01* +X1214495Y136035D01* +X1214495Y141885D01* +X1214495Y139027D02* +X1231345Y139027D01* +X1231345Y154585D02* +X1214495Y154585D01* +X1231345Y154585D02* +X1231345Y148735D01* +X1214495Y148735D01* +X1214495Y154585D01* +X1214495Y151727D02* +X1231345Y151727D01* +X1231345Y167285D02* +X1214495Y167285D01* +X1231345Y167285D02* +X1231345Y161435D01* +X1214495Y161435D01* +X1214495Y167285D01* +X1214495Y164427D02* +X1231345Y164427D01* +X1231345Y179985D02* +X1214495Y179985D01* +X1231345Y179985D02* +X1231345Y174135D01* +X1214495Y174135D01* +X1214495Y179985D01* +X1214495Y177127D02* +X1231345Y177127D01* +X1231345Y192685D02* +X1214495Y192685D01* +X1231345Y192685D02* +X1231345Y186835D01* +X1214495Y186835D01* +X1214495Y192685D01* +X1214495Y189827D02* +X1231345Y189827D01* +X1231345Y205385D02* +X1214495Y205385D01* +X1231345Y205385D02* +X1231345Y199535D01* +X1214495Y199535D01* +X1214495Y205385D01* +X1214495Y202527D02* +X1231345Y202527D01* +X1231345Y218085D02* +X1214495Y218085D01* +X1231345Y218085D02* +X1231345Y212235D01* +X1214495Y212235D01* +X1214495Y218085D01* +X1214495Y215227D02* +X1231345Y215227D01* +X1231345Y230785D02* +X1214495Y230785D01* +X1231345Y230785D02* +X1231345Y224935D01* +X1214495Y224935D01* +X1214495Y230785D01* +X1214495Y227927D02* +X1231345Y227927D01* +X1231345Y243485D02* +X1214495Y243485D01* +X1231345Y243485D02* +X1231345Y237635D01* +X1214495Y237635D01* +X1214495Y243485D01* +X1214495Y240627D02* +X1231345Y240627D01* +X1231345Y256185D02* +X1214495Y256185D01* +X1231345Y256185D02* +X1231345Y250335D01* +X1214495Y250335D01* +X1214495Y256185D01* +X1214495Y253327D02* +X1231345Y253327D01* +X1231345Y268885D02* +X1214495Y268885D01* +X1231345Y268885D02* +X1231345Y263035D01* +X1214495Y263035D01* +X1214495Y268885D01* +X1214495Y266027D02* +X1231345Y266027D01* +X1231345Y281585D02* +X1214495Y281585D01* +X1231345Y281585D02* +X1231345Y275735D01* +X1214495Y275735D01* +X1214495Y281585D01* +X1214495Y278727D02* +X1231345Y278727D01* +X1231345Y294285D02* +X1214495Y294285D01* +X1231345Y294285D02* +X1231345Y288435D01* +X1214495Y288435D01* +X1214495Y294285D01* +X1214495Y291427D02* +X1231345Y291427D01* +X1231345Y306985D02* +X1214495Y306985D01* +X1231345Y306985D02* +X1231345Y301135D01* +X1214495Y301135D01* +X1214495Y306985D01* +X1214495Y304127D02* +X1231345Y304127D01* +D18* +X169100Y324120D02* +X169100Y326120D01* +X169100Y324120D02* +X156100Y324120D01* +X156100Y326120D01* +X169100Y326120D01* +X169100Y326020D02* +X156100Y326020D01* +X169100Y330620D02* +X169100Y332620D01* +X169100Y330620D02* +X156100Y330620D01* +X156100Y332620D01* +X169100Y332620D01* +X169100Y332520D02* +X156100Y332520D01* +X169100Y319620D02* +X169100Y317620D01* +X156100Y317620D01* +X156100Y319620D01* +X169100Y319620D01* +X169100Y319520D02* +X156100Y319520D01* +X169100Y313120D02* +X169100Y311120D01* +X156100Y311120D01* +X156100Y313120D01* +X169100Y313120D01* +X169100Y313020D02* +X156100Y313020D01* +X169100Y337120D02* +X169100Y339120D01* +X169100Y337120D02* +X156100Y337120D01* +X156100Y339120D01* +X169100Y339120D01* +X169100Y339020D02* +X156100Y339020D01* +D19* +X157330Y354620D02* +X164330Y354620D01* +X157330Y354620D02* +X157330Y363620D01* +X164330Y363620D01* +X164330Y354620D01* +X164330Y361270D02* +X157330Y361270D01* +X157330Y286620D02* +X164330Y286620D01* +X157330Y286620D02* +X157330Y295620D01* +X164330Y295620D01* +X164330Y286620D01* +X164330Y293270D02* +X157330Y293270D01* +D20* +X133600Y332370D02* +X133600Y341870D01* +X143100Y341870D01* +X143100Y332370D01* +X133600Y332370D01* +X133600Y341395D02* +X143100Y341395D01* +X133600Y317870D02* +X133600Y308370D01* +X133600Y317870D02* +X143100Y317870D01* +X143100Y308370D01* +X133600Y308370D01* +X133600Y317395D02* +X143100Y317395D01* +D21* +X488999Y199341D03* +D22* +X488999Y186737D03* +D23* +X501608Y186732D03* +D24* +X501602Y199340D03* +D25* +X510805Y181385D02* +X518495Y181385D01* +X518495Y179695D01* +X510805Y179695D01* +X510805Y181385D01* +X510805Y180559D02* +X518495Y180559D01* +X518495Y186385D02* +X510805Y186385D01* +X518495Y186385D02* +X518495Y184695D01* +X510805Y184695D01* +X510805Y186385D01* +X510805Y185559D02* +X518495Y185559D01* +X518495Y191385D02* +X510805Y191385D01* +X518495Y191385D02* +X518495Y189695D01* +X510805Y189695D01* +X510805Y191385D01* +X510805Y190559D02* +X518495Y190559D01* +X518495Y196385D02* +X510805Y196385D01* +X518495Y196385D02* +X518495Y194695D01* +X510805Y194695D01* +X510805Y196385D01* +X510805Y195559D02* +X518495Y195559D01* +X518495Y201385D02* +X510805Y201385D01* +X518495Y201385D02* +X518495Y199695D01* +X510805Y199695D01* +X510805Y201385D01* +X510805Y200559D02* +X518495Y200559D01* +X518495Y206385D02* +X510805Y206385D01* +X518495Y206385D02* +X518495Y204695D01* +X510805Y204695D01* +X510805Y206385D01* +X510805Y205559D02* +X518495Y205559D01* +X479795Y206385D02* +X472105Y206385D01* +X479795Y206385D02* +X479795Y204695D01* +X472105Y204695D01* +X472105Y206385D01* +X472105Y205559D02* +X479795Y205559D01* +X479795Y201385D02* +X472105Y201385D01* +X479795Y201385D02* +X479795Y199695D01* +X472105Y199695D01* +X472105Y201385D01* +X472105Y200559D02* +X479795Y200559D01* +X479795Y196385D02* +X472105Y196385D01* +X479795Y196385D02* +X479795Y194695D01* +X472105Y194695D01* +X472105Y196385D01* +X472105Y195559D02* +X479795Y195559D01* +X479795Y191385D02* +X472105Y191385D01* +X479795Y191385D02* +X479795Y189695D01* +X472105Y189695D01* +X472105Y191385D01* +X472105Y190559D02* +X479795Y190559D01* +X479795Y186385D02* +X472105Y186385D01* +X479795Y186385D02* +X479795Y184695D01* +X472105Y184695D01* +X472105Y186385D01* +X472105Y185559D02* +X479795Y185559D01* +X479795Y181385D02* +X472105Y181385D01* +X479795Y181385D02* +X479795Y179695D01* +X472105Y179695D01* +X472105Y181385D01* +X472105Y180559D02* +X479795Y180559D01* +X483645Y177535D02* +X483645Y169845D01* +X481955Y169845D01* +X481955Y177535D01* +X483645Y177535D01* +X483645Y170709D02* +X481955Y170709D01* +X481955Y171573D02* +X483645Y171573D01* +X483645Y172437D02* +X481955Y172437D01* +X481955Y173301D02* +X483645Y173301D01* +X483645Y174165D02* +X481955Y174165D01* +X481955Y175029D02* +X483645Y175029D01* +X483645Y175893D02* +X481955Y175893D01* +X481955Y176757D02* +X483645Y176757D01* +X488645Y177535D02* +X488645Y169845D01* +X486955Y169845D01* +X486955Y177535D01* +X488645Y177535D01* +X488645Y170709D02* +X486955Y170709D01* +X486955Y171573D02* +X488645Y171573D01* +X488645Y172437D02* +X486955Y172437D01* +X486955Y173301D02* +X488645Y173301D01* +X488645Y174165D02* +X486955Y174165D01* +X486955Y175029D02* +X488645Y175029D01* +X488645Y175893D02* +X486955Y175893D01* +X486955Y176757D02* +X488645Y176757D01* +X493645Y177535D02* +X493645Y169845D01* +X491955Y169845D01* +X491955Y177535D01* +X493645Y177535D01* +X493645Y170709D02* +X491955Y170709D01* +X491955Y171573D02* +X493645Y171573D01* +X493645Y172437D02* +X491955Y172437D01* +X491955Y173301D02* +X493645Y173301D01* +X493645Y174165D02* +X491955Y174165D01* +X491955Y175029D02* +X493645Y175029D01* +X493645Y175893D02* +X491955Y175893D01* +X491955Y176757D02* +X493645Y176757D01* +X498645Y177535D02* +X498645Y169845D01* +X496955Y169845D01* +X496955Y177535D01* +X498645Y177535D01* +X498645Y170709D02* +X496955Y170709D01* +X496955Y171573D02* +X498645Y171573D01* +X498645Y172437D02* +X496955Y172437D01* +X496955Y173301D02* +X498645Y173301D01* +X498645Y174165D02* +X496955Y174165D01* +X496955Y175029D02* +X498645Y175029D01* +X498645Y175893D02* +X496955Y175893D01* +X496955Y176757D02* +X498645Y176757D01* +X503645Y177535D02* +X503645Y169845D01* +X501955Y169845D01* +X501955Y177535D01* +X503645Y177535D01* +X503645Y170709D02* +X501955Y170709D01* +X501955Y171573D02* +X503645Y171573D01* +X503645Y172437D02* +X501955Y172437D01* +X501955Y173301D02* +X503645Y173301D01* +X503645Y174165D02* +X501955Y174165D01* +X501955Y175029D02* +X503645Y175029D01* +X503645Y175893D02* +X501955Y175893D01* +X501955Y176757D02* +X503645Y176757D01* +X508645Y177535D02* +X508645Y169845D01* +X506955Y169845D01* +X506955Y177535D01* +X508645Y177535D01* +X508645Y170709D02* +X506955Y170709D01* +X506955Y171573D02* +X508645Y171573D01* +X508645Y172437D02* +X506955Y172437D01* +X506955Y173301D02* +X508645Y173301D01* +X508645Y174165D02* +X506955Y174165D01* +X506955Y175029D02* +X508645Y175029D01* +X508645Y175893D02* +X506955Y175893D01* +X506955Y176757D02* +X508645Y176757D01* +X508645Y208545D02* +X508645Y216235D01* +X508645Y208545D02* +X506955Y208545D01* +X506955Y216235D01* +X508645Y216235D01* +X508645Y209409D02* +X506955Y209409D01* +X506955Y210273D02* +X508645Y210273D01* +X508645Y211137D02* +X506955Y211137D01* +X506955Y212001D02* +X508645Y212001D01* +X508645Y212865D02* +X506955Y212865D01* +X506955Y213729D02* +X508645Y213729D01* +X508645Y214593D02* +X506955Y214593D01* +X506955Y215457D02* +X508645Y215457D01* +X503645Y216235D02* +X503645Y208545D01* +X501955Y208545D01* +X501955Y216235D01* +X503645Y216235D01* +X503645Y209409D02* +X501955Y209409D01* +X501955Y210273D02* +X503645Y210273D01* +X503645Y211137D02* +X501955Y211137D01* +X501955Y212001D02* +X503645Y212001D01* +X503645Y212865D02* +X501955Y212865D01* +X501955Y213729D02* +X503645Y213729D01* +X503645Y214593D02* +X501955Y214593D01* +X501955Y215457D02* +X503645Y215457D01* +X498645Y216235D02* +X498645Y208545D01* +X496955Y208545D01* +X496955Y216235D01* +X498645Y216235D01* +X498645Y209409D02* +X496955Y209409D01* +X496955Y210273D02* +X498645Y210273D01* +X498645Y211137D02* +X496955Y211137D01* +X496955Y212001D02* +X498645Y212001D01* +X498645Y212865D02* +X496955Y212865D01* +X496955Y213729D02* +X498645Y213729D01* +X498645Y214593D02* +X496955Y214593D01* +X496955Y215457D02* +X498645Y215457D01* +X493645Y216235D02* +X493645Y208545D01* +X491955Y208545D01* +X491955Y216235D01* +X493645Y216235D01* +X493645Y209409D02* +X491955Y209409D01* +X491955Y210273D02* +X493645Y210273D01* +X493645Y211137D02* +X491955Y211137D01* +X491955Y212001D02* +X493645Y212001D01* +X493645Y212865D02* +X491955Y212865D01* +X491955Y213729D02* +X493645Y213729D01* +X493645Y214593D02* +X491955Y214593D01* +X491955Y215457D02* +X493645Y215457D01* +X488645Y216235D02* +X488645Y208545D01* +X486955Y208545D01* +X486955Y216235D01* +X488645Y216235D01* +X488645Y209409D02* +X486955Y209409D01* +X486955Y210273D02* +X488645Y210273D01* +X488645Y211137D02* +X486955Y211137D01* +X486955Y212001D02* +X488645Y212001D01* +X488645Y212865D02* +X486955Y212865D01* +X486955Y213729D02* +X488645Y213729D01* +X488645Y214593D02* +X486955Y214593D01* +X486955Y215457D02* +X488645Y215457D01* +X483645Y216235D02* +X483645Y208545D01* +X481955Y208545D01* +X481955Y216235D01* +X483645Y216235D01* +X483645Y209409D02* +X481955Y209409D01* +X481955Y210273D02* +X483645Y210273D01* +X483645Y211137D02* +X481955Y211137D01* +X481955Y212001D02* +X483645Y212001D01* +X483645Y212865D02* +X481955Y212865D01* +X481955Y213729D02* +X483645Y213729D01* +X483645Y214593D02* +X481955Y214593D01* +X481955Y215457D02* +X483645Y215457D01* +D26* +X722570Y142000D02* +X726470Y142000D01* +X722570Y142000D02* +X722570Y146400D01* +X726470Y146400D01* +X726470Y142000D01* +X726470Y143995D02* +X722570Y143995D01* +X722570Y145990D02* +X726470Y145990D01* +X736570Y142000D02* +X740470Y142000D01* +X736570Y142000D02* +X736570Y146400D01* +X740470Y146400D01* +X740470Y142000D01* +X740470Y143995D02* +X736570Y143995D01* +X736570Y145990D02* +X740470Y145990D01* +X740470Y133000D02* +X736570Y133000D01* +X736570Y137400D01* +X740470Y137400D01* +X740470Y133000D01* +X740470Y134995D02* +X736570Y134995D01* +X736570Y136990D02* +X740470Y136990D01* +X726470Y133000D02* +X722570Y133000D01* +X722570Y137400D01* +X726470Y137400D01* +X726470Y133000D01* +X726470Y134995D02* +X722570Y134995D01* +X722570Y136990D02* +X726470Y136990D01* +D11* +X592650Y45010D02* +X585150Y45010D01* +X585150Y51510D01* +X592650Y51510D01* +X592650Y45010D01* +X592650Y48335D02* +X585150Y48335D01* +X601150Y45010D02* +X608650Y45010D01* +X601150Y45010D02* +X601150Y51510D01* +X608650Y51510D01* +X608650Y45010D01* +X608650Y48335D02* +X601150Y48335D01* +X714690Y52630D02* +X722190Y52630D01* +X714690Y52630D02* +X714690Y59130D01* +X722190Y59130D01* +X722190Y52630D01* +X722190Y55955D02* +X714690Y55955D01* +X730690Y52630D02* +X738190Y52630D01* +X730690Y52630D02* +X730690Y59130D01* +X738190Y59130D01* +X738190Y52630D01* +X738190Y55955D02* +X730690Y55955D01* +X691473Y302198D02* +X688303Y308995D01* +X694193Y311742D01* +X697363Y304945D01* +X691473Y302198D01* +X689922Y305523D02* +X697093Y305523D01* +X695543Y308848D02* +X688372Y308848D01* +X695065Y294495D02* +X698235Y287698D01* +X695065Y294495D02* +X700955Y297242D01* +X704125Y290445D01* +X698235Y287698D01* +X696684Y291023D02* +X703855Y291023D01* +X702305Y294348D02* +X695134Y294348D01* +X763391Y304945D02* +X766561Y311742D01* +X772451Y308995D01* +X769281Y302198D01* +X763391Y304945D01* +X763661Y305523D02* +X770832Y305523D01* +X772382Y308848D02* +X765211Y308848D01* +X759799Y297242D02* +X756629Y290445D01* +X759799Y297242D02* +X765689Y294495D01* +X762519Y287698D01* +X756629Y290445D01* +X756899Y291023D02* +X764070Y291023D01* +X765620Y294348D02* +X758449Y294348D01* +D10* +X848942Y244342D02* +X852518Y244342D01* +X848942Y244342D02* +X848942Y248418D01* +X852518Y248418D01* +X852518Y244342D01* +X852518Y246171D02* +X848942Y246171D01* +X848942Y248000D02* +X852518Y248000D01* +X859442Y244342D02* +X863018Y244342D01* +X859442Y244342D02* +X859442Y248418D01* +X863018Y248418D01* +X863018Y244342D01* +X863018Y246171D02* +X859442Y246171D01* +X859442Y248000D02* +X863018Y248000D01* +X852518Y264662D02* +X848942Y264662D01* +X848942Y268738D01* +X852518Y268738D01* +X852518Y264662D01* +X852518Y266491D02* +X848942Y266491D01* +X848942Y268320D02* +X852518Y268320D01* +X859442Y264662D02* +X863018Y264662D01* +X859442Y264662D02* +X859442Y268738D01* +X863018Y268738D01* +X863018Y264662D01* +X863018Y266491D02* +X859442Y266491D01* +X859442Y268320D02* +X863018Y268320D01* +D11* +X514670Y107390D02* +X507170Y107390D01* +X514670Y107390D02* +X514670Y100890D01* +X507170Y100890D01* +X507170Y107390D01* +X507170Y104215D02* +X514670Y104215D01* +X498670Y107390D02* +X491170Y107390D01* +X498670Y107390D02* +X498670Y100890D01* +X491170Y100890D01* +X491170Y107390D01* +X491170Y104215D02* +X498670Y104215D01* +D27* +X254130Y358150D02* +X254130Y360750D01* +X267730Y360750D01* +X267730Y358150D01* +X254130Y358150D01* +X254130Y359480D02* +X267730Y359480D01* +X254130Y354250D02* +X254130Y351650D01* +X254130Y354250D02* +X267730Y354250D01* +X267730Y351650D01* +X254130Y351650D01* +X254130Y352980D02* +X267730Y352980D01* +X254130Y347750D02* +X254130Y345150D01* +X254130Y347750D02* +X267730Y347750D01* +X267730Y345150D01* +X254130Y345150D01* +X254130Y346480D02* +X267730Y346480D01* +X254130Y341250D02* +X254130Y338650D01* +X254130Y341250D02* +X267730Y341250D01* +X267730Y338650D01* +X254130Y338650D01* +X254130Y339980D02* +X267730Y339980D01* +X254130Y334750D02* +X254130Y332150D01* +X254130Y334750D02* +X267730Y334750D01* +X267730Y332150D01* +X254130Y332150D01* +X254130Y333480D02* +X267730Y333480D01* +X254130Y328250D02* +X254130Y325650D01* +X254130Y328250D02* +X267730Y328250D01* +X267730Y325650D01* +X254130Y325650D01* +X254130Y326980D02* +X267730Y326980D01* +X254130Y321750D02* +X254130Y319150D01* +X254130Y321750D02* +X267730Y321750D01* +X267730Y319150D01* +X254130Y319150D01* +X254130Y320480D02* +X267730Y320480D01* +X254130Y315250D02* +X254130Y312650D01* +X254130Y315250D02* +X267730Y315250D01* +X267730Y312650D01* +X254130Y312650D01* +X254130Y313980D02* +X267730Y313980D01* +X254130Y308750D02* +X254130Y306150D01* +X254130Y308750D02* +X267730Y308750D01* +X267730Y306150D01* +X254130Y306150D01* +X254130Y307480D02* +X267730Y307480D01* +X254130Y302250D02* +X254130Y299650D01* +X254130Y302250D02* +X267730Y302250D01* +X267730Y299650D01* +X254130Y299650D01* +X254130Y300980D02* +X267730Y300980D01* +X326630Y302250D02* +X326630Y299650D01* +X326630Y302250D02* +X340230Y302250D01* +X340230Y299650D01* +X326630Y299650D01* +X326630Y300980D02* +X340230Y300980D01* +X326630Y306150D02* +X326630Y308750D01* +X340230Y308750D01* +X340230Y306150D01* +X326630Y306150D01* +X326630Y307480D02* +X340230Y307480D01* +X326630Y312650D02* +X326630Y315250D01* +X340230Y315250D01* +X340230Y312650D01* +X326630Y312650D01* +X326630Y313980D02* +X340230Y313980D01* +X326630Y319150D02* +X326630Y321750D01* +X340230Y321750D01* +X340230Y319150D01* +X326630Y319150D01* +X326630Y320480D02* +X340230Y320480D01* +X326630Y325650D02* +X326630Y328250D01* +X340230Y328250D01* +X340230Y325650D01* +X326630Y325650D01* +X326630Y326980D02* +X340230Y326980D01* +X326630Y332150D02* +X326630Y334750D01* +X340230Y334750D01* +X340230Y332150D01* +X326630Y332150D01* +X326630Y333480D02* +X340230Y333480D01* +X326630Y338650D02* +X326630Y341250D01* +X340230Y341250D01* +X340230Y338650D01* +X326630Y338650D01* +X326630Y339980D02* +X340230Y339980D01* +X326630Y345150D02* +X326630Y347750D01* +X340230Y347750D01* +X340230Y345150D01* +X326630Y345150D01* +X326630Y346480D02* +X340230Y346480D01* +X326630Y351650D02* +X326630Y354250D01* +X340230Y354250D01* +X340230Y351650D01* +X326630Y351650D01* +X326630Y352980D02* +X340230Y352980D01* +X326630Y358150D02* +X326630Y360750D01* +X340230Y360750D01* +X340230Y358150D01* +X326630Y358150D01* +X326630Y359480D02* +X340230Y359480D01* +D10* +X407322Y362718D02* +X410898Y362718D01* +X410898Y358642D01* +X407322Y358642D01* +X407322Y362718D01* +X407322Y360471D02* +X410898Y360471D01* +X410898Y362300D02* +X407322Y362300D01* +X400398Y362718D02* +X396822Y362718D01* +X400398Y362718D02* +X400398Y358642D01* +X396822Y358642D01* +X396822Y362718D01* +X396822Y360471D02* +X400398Y360471D01* +X400398Y362300D02* +X396822Y362300D01* +X407322Y352558D02* +X410898Y352558D01* +X410898Y348482D01* +X407322Y348482D01* +X407322Y352558D01* +X407322Y350311D02* +X410898Y350311D01* +X410898Y352140D02* +X407322Y352140D01* +X400398Y352558D02* +X396822Y352558D01* +X400398Y352558D02* +X400398Y348482D01* +X396822Y348482D01* +X396822Y352558D01* +X396822Y350311D02* +X400398Y350311D01* +X400398Y352140D02* +X396822Y352140D01* +D28* +X229348Y303078D02* +X229348Y295602D01* +X219372Y295602D01* +X219372Y303078D01* +X229348Y303078D01* +X229348Y299426D02* +X219372Y299426D01* +X207348Y303078D02* +X207348Y295602D01* +X197372Y295602D01* +X197372Y303078D01* +X207348Y303078D01* +X207348Y299426D02* +X197372Y299426D01* +X207348Y311602D02* +X207348Y319078D01* +X207348Y311602D02* +X197372Y311602D01* +X197372Y319078D01* +X207348Y319078D01* +X207348Y315426D02* +X197372Y315426D01* +X229348Y319078D02* +X229348Y311602D01* +X219372Y311602D01* +X219372Y319078D01* +X229348Y319078D01* +X229348Y315426D02* +X219372Y315426D01* +D10* +X189998Y303878D02* +X189998Y300302D01* +X185922Y300302D01* +X185922Y303878D01* +X189998Y303878D01* +X189998Y302131D02* +X185922Y302131D01* +X189998Y310802D02* +X189998Y314378D01* +X189998Y310802D02* +X185922Y310802D01* +X185922Y314378D01* +X189998Y314378D01* +X189998Y312631D02* +X185922Y312631D01* +X236722Y314378D02* +X236722Y310802D01* +X236722Y314378D02* +X240798Y314378D01* +X240798Y310802D01* +X236722Y310802D01* +X236722Y312631D02* +X240798Y312631D01* +X236722Y303878D02* +X236722Y300302D01* +X236722Y303878D02* +X240798Y303878D01* +X240798Y300302D01* +X236722Y300302D01* +X236722Y302131D02* +X240798Y302131D01* +D11* +X540310Y85690D02* +X546810Y85690D01* +X546810Y75190D01* +X540310Y75190D01* +X540310Y85690D01* +X540310Y78515D02* +X546810Y78515D01* +X546810Y81840D02* +X540310Y81840D01* +X540310Y85165D02* +X546810Y85165D01* +X537310Y107690D02* +X530810Y107690D01* +X537310Y107690D02* +X537310Y97190D01* +X530810Y97190D01* +X530810Y107690D01* +X530810Y100515D02* +X537310Y100515D01* +X537310Y103840D02* +X530810Y103840D01* +X530810Y107165D02* +X537310Y107165D01* +X549810Y107690D02* +X556310Y107690D01* +X556310Y97190D01* +X549810Y97190D01* +X549810Y107690D01* +X549810Y100515D02* +X556310Y100515D01* +X556310Y103840D02* +X549810Y103840D01* +X549810Y107165D02* +X556310Y107165D01* +X700330Y95570D02* +X700330Y88070D01* +X700330Y95570D02* +X706830Y95570D01* +X706830Y88070D01* +X700330Y88070D01* +X700330Y91395D02* +X706830Y91395D01* +X706830Y94720D02* +X700330Y94720D01* +X700330Y79570D02* +X700330Y72070D01* +X700330Y79570D02* +X706830Y79570D01* +X706830Y72070D01* +X700330Y72070D01* +X700330Y75395D02* +X706830Y75395D01* +X706830Y78720D02* +X700330Y78720D01* +X1261550Y132790D02* +X1269050Y132790D01* +X1269050Y126290D01* +X1261550Y126290D01* +X1261550Y132790D01* +X1261550Y129615D02* +X1269050Y129615D01* +X1253050Y132790D02* +X1245550Y132790D01* +X1253050Y132790D02* +X1253050Y126290D01* +X1245550Y126290D01* +X1245550Y132790D01* +X1245550Y129615D02* +X1253050Y129615D01* +D10* +X1198378Y100678D02* +X1198378Y97102D01* +X1194302Y97102D01* +X1194302Y100678D01* +X1198378Y100678D01* +X1198378Y98931D02* +X1194302Y98931D01* +X1198378Y107602D02* +X1198378Y111178D01* +X1198378Y107602D02* +X1194302Y107602D01* +X1194302Y111178D01* +X1198378Y111178D01* +X1198378Y109431D02* +X1194302Y109431D01* +D29* +X843039Y50536D02* +X832599Y50536D01* +X843039Y50536D02* +X843039Y48224D01* +X832599Y48224D01* +X832599Y50536D01* +X832599Y49407D02* +X843039Y49407D01* +X843039Y57036D02* +X832599Y57036D01* +X843039Y57036D02* +X843039Y54724D01* +X832599Y54724D01* +X832599Y57036D01* +X832599Y55907D02* +X843039Y55907D01* +X843039Y63536D02* +X832599Y63536D01* +X843039Y63536D02* +X843039Y61224D01* +X832599Y61224D01* +X832599Y63536D01* +X832599Y62407D02* +X843039Y62407D01* +X823481Y63536D02* +X813041Y63536D01* +X823481Y63536D02* +X823481Y61224D01* +X813041Y61224D01* +X813041Y63536D01* +X813041Y62407D02* +X823481Y62407D01* +X823481Y57036D02* +X813041Y57036D01* +X823481Y57036D02* +X823481Y54724D01* +X813041Y54724D01* +X813041Y57036D01* +X813041Y55907D02* +X823481Y55907D01* +X823481Y50536D02* +X813041Y50536D01* +X823481Y50536D02* +X823481Y48224D01* +X813041Y48224D01* +X813041Y50536D01* +X813041Y49407D02* +X823481Y49407D01* +X832599Y88636D02* +X843039Y88636D01* +X843039Y86324D01* +X832599Y86324D01* +X832599Y88636D01* +X832599Y87507D02* +X843039Y87507D01* +X843039Y95136D02* +X832599Y95136D01* +X843039Y95136D02* +X843039Y92824D01* +X832599Y92824D01* +X832599Y95136D01* +X832599Y94007D02* +X843039Y94007D01* +X843039Y101636D02* +X832599Y101636D01* +X843039Y101636D02* +X843039Y99324D01* +X832599Y99324D01* +X832599Y101636D01* +X832599Y100507D02* +X843039Y100507D01* +X823481Y101636D02* +X813041Y101636D01* +X823481Y101636D02* +X823481Y99324D01* +X813041Y99324D01* +X813041Y101636D01* +X813041Y100507D02* +X823481Y100507D01* +X823481Y95136D02* +X813041Y95136D01* +X823481Y95136D02* +X823481Y92824D01* +X813041Y92824D01* +X813041Y95136D01* +X813041Y94007D02* +X823481Y94007D01* +X823481Y88636D02* +X813041Y88636D01* +X823481Y88636D02* +X823481Y86324D01* +X813041Y86324D01* +X813041Y88636D01* +X813041Y87507D02* +X823481Y87507D01* +D10* +X855478Y85438D02* +X855478Y81862D01* +X851402Y81862D01* +X851402Y85438D01* +X855478Y85438D01* +X855478Y83691D02* +X851402Y83691D01* +X855478Y92362D02* +X855478Y95938D01* +X855478Y92362D02* +X851402Y92362D01* +X851402Y95938D01* +X855478Y95938D01* +X855478Y94191D02* +X851402Y94191D01* +X807138Y50298D02* +X803562Y50298D01* +X807138Y50298D02* +X807138Y46222D01* +X803562Y46222D01* +X803562Y50298D01* +X803562Y48051D02* +X807138Y48051D01* +X807138Y49880D02* +X803562Y49880D01* +X796638Y50298D02* +X793062Y50298D01* +X796638Y50298D02* +X796638Y46222D01* +X793062Y46222D01* +X793062Y50298D01* +X793062Y48051D02* +X796638Y48051D01* +X796638Y49880D02* +X793062Y49880D01* +X803562Y88398D02* +X807138Y88398D01* +X807138Y84322D01* +X803562Y84322D01* +X803562Y88398D01* +X803562Y86151D02* +X807138Y86151D01* +X807138Y87980D02* +X803562Y87980D01* +X796638Y88398D02* +X793062Y88398D01* +X796638Y88398D02* +X796638Y84322D01* +X793062Y84322D01* +X793062Y88398D01* +X793062Y86151D02* +X796638Y86151D01* +X796638Y87980D02* +X793062Y87980D01* +X831502Y75698D02* +X835078Y75698D01* +X835078Y71622D01* +X831502Y71622D01* +X831502Y75698D01* +X831502Y73451D02* +X835078Y73451D01* +X835078Y75280D02* +X831502Y75280D01* +X824578Y75698D02* +X821002Y75698D01* +X824578Y75698D02* +X824578Y71622D01* +X821002Y71622D01* +X821002Y75698D01* +X821002Y73451D02* +X824578Y73451D01* +X824578Y75280D02* +X821002Y75280D01* +X831502Y113798D02* +X835078Y113798D01* +X835078Y109722D01* +X831502Y109722D01* +X831502Y113798D01* +X831502Y111551D02* +X835078Y111551D01* +X835078Y113380D02* +X831502Y113380D01* +X824578Y113798D02* +X821002Y113798D01* +X824578Y113798D02* +X824578Y109722D01* +X821002Y109722D01* +X821002Y113798D01* +X821002Y111551D02* +X824578Y111551D01* +X824578Y113380D02* +X821002Y113380D01* +M02* diff --git a/brain/hw/BAAAHS-BRN01-E/oshw-logo-400-px.bmp b/brain/hw/BAAAHS-BRN01-E/oshw-logo-400-px.bmp new file mode 100644 index 0000000000..25309cf7ad Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/oshw-logo-400-px.bmp differ diff --git a/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Assembly.zip b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Assembly.zip new file mode 100644 index 0000000000..c5c6883ac5 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Assembly.zip differ diff --git a/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_BOM.xlsx b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_BOM.xlsx new file mode 100644 index 0000000000..2aac0ecacf Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_BOM.xlsx differ diff --git a/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Gerbers.zip b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Gerbers.zip new file mode 100644 index 0000000000..36e8b8f919 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Gerbers.zip differ diff --git a/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Placement.csv b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Placement.csv new file mode 100644 index 0000000000..b22c6f81d1 --- /dev/null +++ b/brain/hw/BAAAHS-BRN01-E/release/BAAAHS-BRN01-E_Placement.csv @@ -0,0 +1,104 @@ +designator,x (mm),y (mm),rotation (deg),side,package +C1,85.34, 5.08, 90,top,C0402 +C2,99.31,27.94, 90,top,C0402 +C3,18.03,34.80, 90,top,C0402 +C4,102.11,29.46, 90,top,C0603 +C5,103.38,29.72, 90,top,C0402 +C6,35.05,34.80,270,top,C0402 +C7,36.07,34.80,270,top,C0402 +C8,105.16, 9.14,270,top,C0402 +C9,24.64,35.31, 90,top,C0402 +C10,23.62,35.31, 90,top,C0402 +C11,57.66, 7.11, 90,top,C0603 +C12,55.12, 6.35, 0,top,C0603 +C13,86.36,16.00, 90,top,C0402 +C14,54.36,11.68, 0,top,C0402 +C15,62.99,10.41,270,top,C0402 +C16,68.83, 8.38,270,top,C0603 +C17,69.34,16.00,270,top,C0402 +C18,35.56, 5.84,270,top,C0603 +C19,101.60, 5.84,270,top,C0603 +C20,49.78,25.40, 90,top,C0402 +C21,54.10,18.03, 0,top,C0402 +C22,52.07,13.46,180,top,C0603 +C23,44.45,25.91,180,top,C0603 +C24,51.31,15.24,270,top,C0402 +C25,52.58,15.24,270,top,C0402 +C26,44.45,22.86, 0,top,C0603 +C27,46.23,21.34, 90,top,C0402 +C28,47.24,15.24,270,top,C0402 +C29,34.80,18.80,270,top,C0402 +C30,18.80,30.73, 90,top,C0402 +C31,23.88,30.73,270,top,C0402 +C32,70.36, 8.38,270,top,C0603 +C33,85.34, 8.89, 90,top,C0402 +C34,80.01, 4.83,180,top,C0402 +C35,80.01, 8.64,180,top,C0402 +D2,65.28, 5.84, 0,top,SOD123 +D3,73.15,13.97, 0,top,RGB1616 +D5,69.62,29.97,295,top,D0603 +D6,76.45,29.97,245,top,D0603 +D7,125.73,12.95,180,top,D0603 +J1,15.05,32.51,270,top,USB_MICRO_A_RA +L1,65.79, 9.40, 0,top,NRG4026 +L2,44.45,24.38,180,top,L0603 +Q1,45.21,33.02,270,top,SOT23 +Q2,49.28,29.97,270,top,SOT23 +R1,100.58,27.94, 90,top,R0402 +R2,82.80, 7.37,180,top,R0402 +R3,40.39,36.07,180,top,R0402 +R4,50.29,10.41,180,top,R0603 +R5,103.38,17.02, 90,top,R0402 +R6,35.56,36.32, 0,top,R0402 +R7,46.23,30.23, 90,top,R0402 +R8,44.20,30.23,270,top,R0402 +R9,121.16,10.41, 90,top,R0402 +R10,117.60,10.41, 90,top,R0402 +R11,102.62,13.97,180,top,R0402 +R12,97.28,25.40,180,top,R0402 +R13,103.12, 9.14,270,top,R0402 +R14,104.14, 9.14, 90,top,R0402 +R15,59.94, 6.35,180,top,R0402 +R16,87.63,16.00,270,top,R0402 +R17,74.42,16.00,180,top,R0402 +R18,71.88,16.00, 0,top,R0402 +R19,70.61,13.97,270,top,R0402 +R20,61.72,11.68, 0,top,R0402 +R21,59.18,11.68, 0,top,R0402 +R22,67.82,16.00,270,top,R0402 +R23,119.63,10.41, 90,top,R0402 +R24,125.98,14.22, 0,top,R0402 +R25,53.34,25.91,180,top,R0402 +R26,82.80,11.18,180,top,R0402 +R27,48.51,25.40, 90,top,R0402 +R28,45.97,17.27, 90,top,R0402 +R29,56.13,17.02,180,top,R0402 +R30,54.36,14.99,270,top,R0402 +R31,53.34,21.59, 0,top,R0402 +R32,54.61,19.05,180,top,R0402 +R33,53.34,22.86, 0,top,R0402 +R34,56.64,18.54, 90,top,R0402 +R35,56.13,15.49, 0,top,R0402 +R36,53.34,20.32, 0,top,R0402 +R37,42.67,18.54,180,top,R0402 +R38,43.43,17.53,180,top,R0402 +R39,43.43,21.08,180,top,R0402 +R40,43.43,13.97,180,top,R0402 +R41,43.43,12.70,180,top,R0402 +R42,42.67,20.07,180,top,R0402 +R43,59.69, 4.83, 0,top,R0603 +R44,72.64, 5.59, 0,top,R0603 +R45,85.60,24.64, 0,top,R0402 +R46,85.60,26.67, 0,top,R0402 +R47,40.39,35.05,180,top,R0402 +S1,82.04,16.00, 0,top,SM6MM +S2,63.50,16.00, 0,top,SM6MM +S3,91.44,25.15, 90,top,SM6MM +U1,82.80, 5.59,180,top,DCK6 +U2,113.79,21.65, 0,top,MODULE_ESP32WROOM32D +U3,29.72,33.02,270,top,SSOP20 +U4,54.36, 9.14,180,top,SOT23 +U5,60.45, 8.89,180,top,SOT23_6 +U6,49.53,19.30, 90,top,QFN50P400X400X100-25N +U7,82.80, 9.40,180,top,DCK6 +X2,21.34,30.73, 0,top,3.2X2.5_4P diff --git a/brain/hw/BAAAHS-BRN01-E/release/~$BAAAHS-BRN01-E_BOM.xlsx b/brain/hw/BAAAHS-BRN01-E/release/~$BAAAHS-BRN01-E_BOM.xlsx new file mode 100644 index 0000000000..a743c73ac1 Binary files /dev/null and b/brain/hw/BAAAHS-BRN01-E/release/~$BAAAHS-BRN01-E_BOM.xlsx differ diff --git a/brain/sw/README.md b/brain/sw/README.md new file mode 100644 index 0000000000..1463c1d3ad --- /dev/null +++ b/brain/sw/README.md @@ -0,0 +1,101 @@ +Firmware Directories +==================== + +`playa` is the first and main firmware intended for use at the 2019 burn. + +`components` contains various components that are useful in the mix and match world of +applications supported by the firmware. + +This directory structure is likely to evolve over time. + +Build Environment Setup +======================= + +The basic thing is to follow the [Get Started (CMake)](https://docs.espressif.com/projects/esp-idf/en/latest/get-started-cmake/index.html) section of the Espressif ESP-IDF. + +The highlights are +* Previously you would have installed a pre-built version of the xtensa toolchain. In the page referenced above you will need to click on a link to go to a second page with detailed instructions for your OS: Mac, Windows, or Linux. Follow the instructions. I think the xtensa toolchain is now installed/compiled when you run the `install` script mentioned on the Get Started page. Haven't had a chance to test this though. +* We're using the latest version on master until we find a reason not to. The bleeding edge is where it's at. Basically this is v4. We're also using the CMake build system which is officially in Preview at the moment, but again, why not? See below for info about staying up to date. +* Clone the IDF into a suitable directory. Their examples use `~/esp/esp-idf` so unless you are particular about your machine that's probably a reasonable thing to do. +* Note that they use git submodules so you either need to use `--recursive` when you clone the repo (recommended) or you need to do a `git submodule update --init` after you have cloned it. +* The `IDF_PATH` environment variable needs to be set to the root of the idf. +* You also want to add `IDF_PATH/tools` to your system `PATH` +* The build tools are written in python. Check `${IDF_PATH}/requirements.txt` for details +* I think I also installed the `ninja` build tool per the Get Started directions. That might be a thing also. +* They recommend installing `ccache` - I have little to say about whether this is awesome or lame. I'm pretty sure I installed it. + +Assuming all that is done you should be able to cd into one of the firmware directories (right now that means the `playa` directory) and run `idf.py build`. + +On an earlier version of the v4 master branch the `storage.bin` file which contains the SPIFFS filesystem image which is flashed to the board wasn't building. The solution was to cd into `playa\build` and run either `ninja spiffs_storage_bin` or `make spiffs_storage_bin` depending on which build system you were using. As of 2019-05-21 it seems that whatever was causing an issue is now fixed so if you are up to date with the IDF this should just build automagically. For the moment I'm leaving these instructions here but I don't know, may delete later. + +Updating the IDF +================ + +**NEW INSTRUCTIONS!** Run this: + + ./brain/sw/sync-idf.sh + +**OLD INSTRUCTIONS** are below: + +If you are updating from a version of the IDF prior to about July 1 you will have installed the xtensa toolchain manually in something like `~/esp/xtensa-esp32-elf` and will have likely added it to your path. *You need to remove this old method of installing the toolchain.* Renaming or deleting this directory should be fine. You may also want to cleanup your `.profile` or `.bashrc` script. + +The IDF now includes a `install.sh` script which installs and updates the toolchain. This script also generates an `export.sh` file which should be sourced to setup appropriate paths. As a result of these changes my `.profile` now contains the following lines related to the IDF: + + ###### + # For ESP32 development + export IDF_PATH=~/esp/esp-idf + . ${IDF_PATH}/export.sh > /dev/null + ###### + +Not that the `export.sh` file both needs to be sourced, hence the leading `.` and it generates a bunch of garbage that I don't want to see everytime I open a new shell, hence the redirection to `/dev/null`. + +Since we are using a clone of master you need to do the following to stay up to date with the core IDF. (Note that this assumes Mac or Linux and the default installation location of your home directory.) + + cd ~/esp/esp-idf + git pull + git submodule update --init --recursive + ./install.sh + +Because of the vagaries of the universe you may periodically have to entirely remove the IDF and re-install it though. When v4 is released we'll probably stabilize on that version for some period of time, but for now it seems like we need to stay in this world. + +Flashing the Board +================== + +The Brain boards use the CH340T USB to UART serial chip. This means that when you connect the board to your machine via the micro USB connector, your machine will see this chip and if all goes well will present it as a serial port in your operating system. How this happens is going to be OS dependent. + +Speaking about Macs: In the olden days of 2018, you needed to find a driver for this thing and install it. There seems to be evidence that as of Mojave, maybe this driver is already included and with a stock Apple system you're going to be okay. We probably need to understand this a little bit better. Also, it seems that if you had installed the driver in the Sierra days and still have it on your machine, weirdness is going to happen and you won't be able to actually flash the board. + +But why would you have installed it previously? Well, the CH340T or it's predecessor has been a pretty common chip for various "maker"-ish boards out there. I installed the drivers because of previous things I did with ESP 8266 based boards like the WeMOS D1 and clone boards. So anyway, it's 2019, we have Mojave, how do we nuke the old driver? + +Here is a [webpage](https://sparks.gogo.co.nz/ch340.html) with some information that might help, look at the bottom of it. You're going to `rm -rf` a Mac kernel extension and then a couple of receipts files. Yes this is dark magic Mac driver things you shouldn't ever have to know about, but most of you aren't in this situation are you and it all just worked magically. Well aren't you amazing for having a machine that hasn't been corrupted by the the dark codes of past times? + +For the rest of me, now it's time for a reboot because deleting files from disk doesn't remove them from the running kernel on my Mac. After a reboot - Yay! + +On my Mac that is fairly stock at 10.14.5 Mojave (although upgraded over the years) after nuking the older driver doing a `ls /dev/tty.*` results in + + /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbserial-142120 + +The Bluetooh thing is ignorable, and the `tty.usbserial-142120` seems to be our happy happy, the driver is magically already there, serial port that the idf.py flasher will find on it's own. + +So now, presuming the build has worked (i.e. deal with any errors or warnings. We're running a clean codebase here so if you have any, then something isn't right and you really can't proceed until you figure out what's going on), you should be able to magically flash the firmware to the brain using the IDF tool. So + + idf.py flash + +That should/maybe/might get the firmware down to the board. If that step works, you'll be ready to do + + idf.py monitor + +to get the serial console back from the board. This console is going to include debuggging output from both our code and the Espressif IDF code. Look at `main.cpp` in the `playa/main` directory to adjust how much debugging output you want to see on the console. + +From here you hopefully have a working board in front of you. Do magic with it! + +OTA with Pinky +============== + +Brain should've been flashed once already with `idf.py flash`. + +Run: + + cd brain/sw/playa + idf.py app + ./deploy_firmware.sh \ No newline at end of file diff --git a/brain/sw/components/brain-common/CMakeLists.txt b/brain/sw/components/brain-common/CMakeLists.txt new file mode 100644 index 0000000000..3018265ae4 --- /dev/null +++ b/brain/sw/components/brain-common/CMakeLists.txt @@ -0,0 +1,11 @@ +set(COMPONENT_ADD_INCLUDEDIRS . "include") + +set(COMPONENT_SRCS + "common.cpp" + "tasks.cpp" + "config.cpp" + ) + +set(COMPONENT_REQUIRES spiffs jsmn driver app_update) + +register_component() diff --git a/brain/sw/components/brain-common/common.cpp b/brain/sw/components/brain-common/common.cpp new file mode 100644 index 0000000000..fd4805e66e --- /dev/null +++ b/brain/sw/components/brain-common/common.cpp @@ -0,0 +1,74 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#include "brain_common.h" + +#define TAG TAG_COMMON + +#include + +/* Function to initialize SPIFFS */ +esp_err_t brain_init_spiffs() { + ESP_LOGI(TAG, "Initializing SPIFFS"); + + esp_vfs_spiffs_conf_t conf = { + .base_path = "/spiffs", + .partition_label = NULL, + .max_files = 5, // Maximum number of simultaneously open files + .format_if_mount_failed = true + }; + + esp_err_t ret = esp_vfs_spiffs_register(&conf); + if (ret != ESP_OK) { + if (ret == ESP_FAIL) { + ESP_LOGE(TAG, "Failed to mount or format filesystem"); + } else if (ret == ESP_ERR_NOT_FOUND) { + ESP_LOGE(TAG, "Failed to find SPIFFS partition"); + } else { + ESP_LOGE(TAG, "Failed to initialize SPIFFS (%s)", esp_err_to_name(ret)); + } + return ret; + } + + size_t total = 0, used = 0; + ret = esp_spiffs_info(NULL, &total, &used); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to get SPIFFS partition information (%s)", esp_err_to_name(ret)); + return ret; + } + + ESP_LOGI(TAG, "Partition size: total: %d, used: %d", total, used); + return ESP_OK; +} + +static void restart_task(void* pParam) { + uint32_t millis = (uint32_t)pParam; + + TickType_t xLastWakeTime = xTaskGetTickCount(); + auto delayTime = pdMS_TO_TICKS(millis); + + ESP_LOGE(TAG, "Delaying restart by %d ms", millis); + vTaskDelayUntil(&xLastWakeTime, delayTime); + + ESP_LOGE(TAG, "Time is up! Restart!!!!"); + esp_restart(); + + // Unnecessary but for completeness... + vTaskDelete(nullptr); +} + +void brain_restart(uint32_t delayMillis) { + if (!delayMillis) { + ESP_LOGE(TAG, "Restarting without delay"); + esp_restart(); + return; // yeah right.... + } + + // If the task creation fails just restart right away. Oh well we tried! + auto result = xTaskCreate(restart_task, "restart", 4096, (void*)delayMillis, TaskDef::MAX_PRIORITY, nullptr); + if (result != pdPASS) { + ESP_LOGE(TAG, "Delayed restart task creation failed. Restarting immediately"); + esp_restart(); + } +} \ No newline at end of file diff --git a/brain/sw/components/brain-common/config.cpp b/brain/sw/components/brain-common/config.cpp new file mode 100644 index 0000000000..6959d3103b --- /dev/null +++ b/brain/sw/components/brain-common/config.cpp @@ -0,0 +1,290 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#include "brain_common.h" + +#include +#include + +#include "esp_ota_ops.h" + + +#define TAG TAG_COMMON + +BrainConfig GlobalConfig; + +BrainConfig::BrainConfig() { + setStaSsid(DEFAULT_STA_SSID); + setStaPass(DEFAULT_STA_PASS); +} + +esp_err_t BrainConfig::load(const char* filename) { + ESP_LOGI(TAG, "Loading config from %s", filename); + + struct stat st; + if (stat(filename, &st) != 0) { + ESP_LOGE(TAG, "Could not stat config file %s", filename); + return ESP_ERR_NOT_FOUND; + } + + char* contents = (char*)malloc(st.st_size+1); + if (!contents) { + ESP_LOGE(TAG, "Could not malloc %ld bytes to read config file %s", st.st_size, filename); + return ESP_ERR_NO_MEM; + } + + FILE* f = fopen(filename, "r"); + if (!f) { + ESP_LOGE(TAG, "Could not open config file %s", filename); + free(contents); + return ESP_FAIL; + } + + size_t num = fread(contents, st.st_size, 1, f); + if (num != 1) { + ESP_LOGE(TAG, "Failed to read file contents from %s: ferror=%d", filename, ferror(f)); + fclose(f); + free(contents); + return ESP_FAIL; + } + // Make sure it's nicely null terminated + contents[st.st_size] = 0; + + // Don't need the file anymore + fclose(f); + + // Parse the data +// ESP_LOGD(TAG, "Parsing config content '%s'", contents); + auto ret = parseFrom(contents, st.st_size); + + free(contents); + return ret; +} + +#define TOKEN_COUNT 200 + +esp_err_t BrainConfig::parseFrom(char* szBuf, size_t len) { + if (!szBuf) { + return ESP_FAIL; + } + + jsmn_parser parser; + jsmn_init(&parser); + + jsmntok_t tokens[TOKEN_COUNT]; + int r = jsmn_parse(&parser, szBuf, len, tokens, TOKEN_COUNT); + if (r<0) { + if (r == JSMN_ERROR_INVAL) { + ESP_LOGE(TAG, "Invalid token in config file"); + } else if (r == JSMN_ERROR_NOMEM) { + ESP_LOGE(TAG, "Config file is too large"); + } else if (r == JSMN_ERROR_PART) { + ESP_LOGE(TAG, "Expected more data in config file"); + } else { + ESP_LOGE(TAG, "Failed to parse config file. r=%d", r); + } + return ESP_FAIL; + } + + // Dump the parsed contents +// for (int i=0; itype, pKey->start, pKey->end, szBuf + pKey->start); +// ESP_LOGD(TAG, "Value %d, type=%d, start=%d, end=%d, content='%s'", +// ix, pVal->type, pVal->start, pVal->end, szBuf + pVal->start); + + if (strncmp(szBuf + pKey->start, KEY_STA_SSID, sizeof(KEY_STA_SSID)) == 0) { + if (pVal->type != JSMN_STRING) { + ESP_LOGE(TAG, "Value of key %s must be a string not type=%d", szBuf + pKey->start, pVal->type); + } else { + szBuf[pVal->end] = 0; + setStaSsid(szBuf + pVal->start); + } + } + else if (strncmp(szBuf + pKey->start, KEY_STA_PASS, sizeof(KEY_STA_PASS)) == 0) { + if (pVal->type != JSMN_STRING) { + ESP_LOGE(TAG, "Value of key %s must be a string not type=%d", szBuf + pKey->start, pVal->type); + } else { + szBuf[pVal->end] = 0; + setStaPass(szBuf + pVal->start); + } + } + + +} + +#define SAVE_BUF_SIZE 1024 + +esp_err_t BrainConfig::save(const char* filename) { + ESP_LOGI(TAG, "Saving config to %s", filename); + + // Get the config into a buffer + char* szBuf = (char*)malloc(SAVE_BUF_SIZE); + if (!szBuf) { + return ESP_ERR_NO_MEM; + } + + esp_err_t result = ESP_OK; + + result = printTo(szBuf, SAVE_BUF_SIZE); + if (result != ESP_OK) { + ESP_LOGE(TAG, "Printing the current config failed %d", result); + free(szBuf); + return result; + } + + ESP_LOGD(TAG, "Saving config data: %s", szBuf); + + FILE* f = fopen(filename, "w"); + if (!f) { + ESP_LOGE(TAG, "Could not open config file %s", filename); + free(szBuf); + return ESP_FAIL; + } + + auto toWrite = strlen(szBuf); + auto recordsWritten = fwrite(szBuf, toWrite, 1, f); + + if (recordsWritten != 1) { + ESP_LOGE(TAG, "ERROR Writing to the config file: ferror = %d", ferror(f)); + result = ESP_FAIL; + } + + fclose(f); + + free(szBuf); + return result; +} + +void BrainConfig::setStaSsid(const char* val) { + if (!val) val = ""; + ESP_LOGI(TAG, "Setting sta ssid to '%s'", val); + setString(m_staSsid, STA_SSID_MAX_LEN, val); +} + +void BrainConfig::setStaPass(const char* val) { + if (!val) val = ""; + ESP_LOGI(TAG, "Setting sta pass to '%s'", val); + setString(m_staPass, STA_PASS_MAX_LEN, val); +} + +void BrainConfig::setString(char* szBuf, size_t size, const char* val) { + if (!szBuf) return; + + if (!val) { + szBuf[0] = 0; + return; + } + + strncpy(szBuf, val, size); +} + +uint8_t* BrainConfig::mac() { + ESP_ERROR_CHECK_WITHOUT_ABORT(esp_efuse_mac_get_default(m_mac)); + + return m_mac; +} + +const char* BrainConfig::macStr() { + if (!m_mac[0]) { + // Aack, we don't have the mac yet, so fetch it + mac(); + sprintf(m_macStr, MACSTR, MAC2STR(m_mac)); + } // else just give them what we already constructed + + return m_macStr; +} + +// Some stupid thing I found at https://stackoverflow.com/questions/8317508/hash-function-for-a-string +#define A 54059 /* a prime */ +#define B 76963 /* another prime */ +#define C 86969 /* yet another prime */ +#define FIRSTH 37 /* also prime */ + +uint32_t hashStr(const char* s) { + uint32_t h = FIRSTH; + + while (*s) { + h = (h * A) ^ (s[0] * B); + s++; + } + return h; // or return h % C; +} + +uint32_t BrainConfig::versionHash() { + auto desc = esp_ota_get_app_description(); + if (!desc) { + ESP_LOGE(TAG, "Couldn't get a real version hash. Odd"); + return 0xFEEDFACE; + } + + // desc->secure_version is 0 so we have to do + // our own hash. We just want entropy! + + uint32_t ret = hashStr(desc->idf_ver); + ret += hashStr(desc->version); + ret += hashStr(desc->date); + ret += hashStr(desc->time); + + return ret; +} \ No newline at end of file diff --git a/brain/sw/components/brain-common/include/brain_common.h b/brain/sw/components/brain-common/include/brain_common.h new file mode 100644 index 0000000000..fe5c912152 --- /dev/null +++ b/brain/sw/components/brain-common/include/brain_common.h @@ -0,0 +1,39 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#pragma once + +#include "freertos/FreeRTOS.h" + +#include "esp_err.h" +#include "esp_log.h" + +#include "brain_hardware.h" +#include "brain_tasks.h" +#include "brain_tags.h" +#include "brain_config.h" + +#define DEFAULT_STA_SSID "sparklemotion" +#define DEFAULT_STA_PASS "sparklemotion" + +/** + * If using the configuration or the web server or anything else that + * needs files from SPIFFS this should be called first. Likely you want + * this to be called right after initializing logging in app_main() + * + * @return + */ +extern esp_err_t brain_init_spiffs(); + +/** + * Restart the whole show, optionally after a delay. It makes sense for + * a component which has received a restart request from the outside + * world to want to acknowledge that request and THEN restart the system. + * Thus this function. + * + * If you pass 0 this will immediately call esp_restart() + * + * @param delayMillis + */ +extern void brain_restart(uint32_t delayMillis); diff --git a/brain/sw/components/brain-common/include/brain_config.h b/brain/sw/components/brain-common/include/brain_config.h new file mode 100644 index 0000000000..8799b14db8 --- /dev/null +++ b/brain/sw/components/brain-common/include/brain_config.h @@ -0,0 +1,146 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#pragma once + +#include + +#define STA_SSID_MAX_LEN 32 +#define STA_PASS_MAX_LEN 32 + +#define DEFAULT_CONFIG_FILE "/spiffs/config.json" + +#define KEY_STA_SSID "sta_ssid" +#define KEY_STA_PASS "sta_pass" + + +class BrainConfig { +public: + BrainConfig(); + + /** + * Load the configuration from a named file or the default + * specified by DEFAULT_CONFIG_FILE. + * + * @param filename + * @return ESP_OK if it happened or the underlying error code + */ + esp_err_t load(const char* filename = DEFAULT_CONFIG_FILE); + + /** + * Save this configuration to a named file or the default + * specified by DEFAULT_CONFIG_FILE if a name is given. + * + * @param filename + * @return ESP_OK if it happened or the underlying error code + */ + esp_err_t save(const char* filename = DEFAULT_CONFIG_FILE); + + /** + * @return The SSID that the STA interface should connect to. + */ + const char* staSsid() { return m_staSsid; } + + /** + * Set the staSsid value for this config. The string is copied + * into internal storage. + * + * @param val + */ + void setStaSsid(const char* val); + + /** + * @return The password that the STA interface should use + */ + const char* staPass() { return m_staPass; } + + /** + * Sets the staPass value for this config. The string is copied + * into internal storage. + * + * @param val + */ + void setStaPass(const char* val); + + /** + * This is the base mac address of the system. Any place + * that we want to identify a board uniquely should use + * this address. The returned address comes from EFUSE + * which is set by Espressif when they manufacture the + * ESP32 module - so that's the thing we want. + * + * Because there are actually multiple network interfaces, + * each of which needs it's own address, a brain board ends + * up with several MACs. + * + * The point of having this method in the brain-common + * component is to promote standardization and remove + * opportunities to get confused about _which_ MAC + * address should be used. + * + * @return a pointer to an array of length 6 which contains + * the system mac address. + */ + uint8_t* mac(); + + /** + * A convenience function to get the system's base mac + * address as a string. + * + * @return a pointer to the internally held buffer which + * contains the null terminated mac address. + */ + const char* macStr(); + + /** + * A integer based on the system version string plus build + * date and time strings. This is an attempt at creating + * not a monotonically increasing but a kind of hash code + * of this changing date. The idea is to then use this + * to identify one firmware from another for things like + * the UI state. + */ + uint32_t versionHash(); + + /** + * Parse this configuration from a buffer containing valid + * JSON configuration data. This **WILL** modify the buffer + * passed to it by inserting convenient nulls as it reads + * keys and values. It could be nice and not do that, but + * it's not. + * + * Basically, once you've sent a buffer into this parse method + * consider it scrambled up a bit. That means log it before + * parsing it. + * + * @param szBuf + * @param len + * @return + */ + esp_err_t parseFrom(char* szBuf, size_t len); + + /** + * Print/Output this configuration to a buffer as a JSON + * string. Useful for things such as sending to a web + * client, but it's also probably useful for logging + * as well. + * @param szBuf + * @param len + * @return + */ + esp_err_t printTo(char* szBuf, size_t len); + +private: + uint8_t m_mac[6]; + char m_macStr[18]; // 6 * 2 + 5 + \0 + + char m_staSsid[STA_SSID_MAX_LEN+1]; + char m_staPass[STA_PASS_MAX_LEN+1]; + + void setString(char* szBuf, size_t size, const char* val); + + void handleValue(char *szBuf, jsmntok_t *pTokens, int ix); +}; + +extern BrainConfig GlobalConfig; \ No newline at end of file diff --git a/brain/sw/components/brain-common/include/brain_hardware.h b/brain/sw/components/brain-common/include/brain_hardware.h new file mode 100644 index 0000000000..1c74c8339e --- /dev/null +++ b/brain/sw/components/brain-common/include/brain_hardware.h @@ -0,0 +1,342 @@ +/** + * This file collects hardware dependent things, like pinouts, that + * need to be baked into the firmware for boot time. In general it + * would be nice if pins can be defined after boot, but some don't + * make much sense like leds and buttons. + * + * The layout of this file is that the default values, along + * with their documentation, is at the end. Each default #define is + * protected by a #ifndef so that variants can get in there + * first and change just a couple things but then get the rest + * of the default values. + */ + +#pragma once + +#include + +/** + * Uncomment one of the following if you are building a variant + * of the hardware. The Rev D before being reworked serves as our + * base for all the definitions from this file. So for a plain + * Rev D, the variants should all be commented out. + * + * Once we have Rev E boards in hand that will become the default + * on main, and we should leave things checked in that way. At + * that point we might make all the Rev D stuff a variant of Rev E + * defaults but whatever. If someone gets to it, great. + * + * If you have a derivative project, feel free to define an + * additional variant following this pattern. These can be + * safely stored on the main branch without conflict. + */ +#define BRAIN_VARIANT_REV_E +//#define BRAIN_VARIANT_REV_D_REWORKED +//#define BRAIN_VARIANT_PANEL_TESTER +//#define BRAIN_VARIANT_GLAMSIGN +//#define BRAIN_VARIANT_GLAMSIGN_MINI + +//#define BRAIN_DEFAULT_BRIGHTNESS 16 + + +/******************************************************************** + * The Panel Testers are two boxes built by Tom S. that have + * Rev D boards in them with an additional external button and an + * I2C connected display. + ********************************************************************/ +#ifdef BRAIN_VARIANT_PANEL_TESTER +#define BRAIN_GPIO_LED_LEFT_EYE GPIO_NUM_32 +#define BRAIN_GPIO_BUTTON_LEFT GPIO_NUM_39 +#define BRAIN_GPIO_PIXEL_CH1 GPIO_NUM_12 + +#define BRAIN_VARIANT_REV_D +#endif + +/******************************************************************** + * The Panel Testers are two boxes built by Tom S. that have + * Rev D boards in them with an additional external button and an + * I2C connected display. + ********************************************************************/ +#ifdef BRAIN_VARIANT_GLAMSIGN_MINI + +// The Pico doesn't have the ethernet MAC so you have to disable +// it or crashie crashie +#define BRAIN_ETHERNET_ENABLED false + +#define BRAIN_GPIO_BUTTON_LEFT GPIO_NUM_35 +#define BRAIN_GPIO_BUTTON_RIGHT GPIO_NUM_34 +#define BRAIN_BUTTON_LEFT_ACTIVELOW false +#define BRAIN_BUTTON_RIGHT_ACTIVELOW false + +#define BRAIN_GPIO_LED_LEFT_EYE GPIO_NUM_NC +#define BRAIN_GPIO_LED_RIGHT_EYE GPIO_NUM_NC + +#define BRAIN_GPIO_LED_RED GPIO_NUM_21 +#define BRAIN_GPIO_LED_GREEN GPIO_NUM_19 +#define BRAIN_GPIO_LED_BLUE GPIO_NUM_22 + +#define BRAIN_GPIO_DISP_CLK GPIO_NUM_14 +#define BRAIN_GPIO_DISP_DATA GPIO_NUM_27 + +#define BRAIN_GPIO_PIXEL_CH1 GPIO_NUM_25 +#define BRAIN_DEFAULT_BRIGHTNESS 255 + +#endif + +/******************************************************************** + * This is the variant for boards which Andrew did rework on. They + * can be identified as the ones which have a couple tiny little + * wires around the ESP32 module. + * + * The rework involves adding two wires which make the following + * bonds: + * + * GPIO34 <-> GPIO12 + * GPIO35 <-> GPIO15 + * + * The first one makes the RED led emitter drivable on channel 12. + * The second connection allows output of the second led channel, + * marked CH2 on the board, from GPIO15. + ********************************************************************/ +#ifdef BRAIN_VARIANT_REV_D_REWORKED +#define BRAIN_GPIO_LED_RED GPIO_NUM_12 +#define BRAIN_GPIO_PIXEL_CH2 GPIO_NUM_15 + +#define BRAIN_VARIANT_REV_D +#endif + +/******************************************************************** + * Rev E boards are the 2019 production boards for the sheep and + * for bikes. There are a lot of these and this is probably the + * hardware variant you want to be using. + ********************************************************************/ +#ifdef BRAIN_VARIANT_REV_E +#define BRAIN_GPIO_LED_RED GPIO_NUM_13 +#define BRAIN_GPIO_PIXEL_CH2 GPIO_NUM_2 +#define BRAIN_GPIO_BUTTON_RIGHT GPIO_NUM_34 + +#define BRAIN_VARIANT_REV_D +#endif + + +// End of variant definition. Defaults Below. + + +/******************************************************************** + * Rev D boards were the first prototypes we ordered. We made some + * mistakes with a couple of pins and then did some rework on a + * few of the boards, which should probably get defined as it's own + * variant here as well. + * + * They also have the TI 4 channel 3.3V to 5V level converter which + * we discovered isn't really suitable as a line driver for the + * LEDs so their expansion header has a significantly different + * pinout as well. + ********************************************************************/ + +/** + * The pin for the the left LED emitter. The brain boards have + * two LEDs positioned within the BAAAHS logo. This is the pin + * that the left one is connected to. + */ +#ifndef BRAIN_GPIO_LED_LEFT_EYE +#define BRAIN_GPIO_LED_LEFT_EYE GPIO_NUM_16 +#endif + +/** + * Pin for the right LED. + */ +#ifndef BRAIN_GPIO_LED_RIGHT_EYE +#define BRAIN_GPIO_LED_RIGHT_EYE GPIO_NUM_4 +#endif + +/** + * The red emitter of a 3 element LED packaged onto the board + */ +#ifndef BRAIN_GPIO_LED_RED +#define BRAIN_GPIO_LED_RED GPIO_NUM_34 // Invalid output +#endif + +/** + * The green emitter of a 3 element LED packaged onto the board + */ +#ifndef BRAIN_GPIO_LED_GREEN +#define BRAIN_GPIO_LED_GREEN GPIO_NUM_33 +#endif + +/** + * The blue emitter of a 3 element LED packaged onto the board + */ +#ifndef BRAIN_GPIO_LED_BLUE +#define BRAIN_GPIO_LED_BLUE GPIO_NUM_14 +#endif + +/** + * Pin for the "left" button of the board. This is probably + * going to be used in the UI for things like "select" + */ +#ifndef BRAIN_GPIO_BUTTON_LEFT +#define BRAIN_GPIO_BUTTON_LEFT GPIO_NUM_0 +#endif + +/** + * Ping for the "right" button of the board. This is probably + * going to be used as the enter or confirmation button, but + * the UI hasn't been designed yet so it's hard to say. + */ +#ifndef BRAIN_GPIO_BUTTON_RIGHT +#define BRAIN_GPIO_BUTTON_RIGHT GPIO_NUM_2 +#endif + +/** + * This is the primary pixel data output pin. On a Brain it + * is goes through a level converter and then to a pad + * marked as CH1. This is on the right hand side of the brain + * board. + */ +#ifndef BRAIN_GPIO_PIXEL_CH1 +#define BRAIN_GPIO_PIXEL_CH1 GPIO_NUM_32 +#endif + +/** + * Brains have a second channel that they can output pixel data + * on. This is the "input" side of the board from a power + * perspective and is marked as CH2 on the board. + * + * For 2019 it doesn't look like we're going to use this + * second channel on the production sheep boards but it's there + * for you to use. At the moment the codebase doesn't do + * anything with this channel, but it likely will at somepoint. + */ +#ifndef BRAIN_GPIO_PIXEL_CH2 +#define BRAIN_GPIO_PIXEL_CH2 GPIO_NUM_35 // Invalid output +#endif + +/** + * In addition to defining the GPIO pin for the two interface + * buttons we need to declare whether the are active, that is + * "pressed", when the signal is low or high. When the hardware + * data line has a pull up resistor on it and the button + * connects the data line to ground this should be set to true. + * + * Conversely, if the data line has a pulldown resistor + * connecting it to ground and the physical switch then connects + * the data line to 3.3V then this should be set to false. + * + * Some of the ESP32 pins have default pull up or pull down + * resistors on them for bootstrapping purposes so that's why + * we support both modalities. + */ +#ifndef BRAIN_BUTTON_LEFT_ACTIVELOW +#define BRAIN_BUTTON_LEFT_ACTIVELOW true +#endif + +/** + * The active low definition for the right button. + */ +#ifndef BRAIN_BUTTON_RIGHT_ACTIVELOW +#define BRAIN_BUTTON_RIGHT_ACTIVELOW false +#endif + +/** + * While it should be safe to always enable ethernet on a + * Brain even if it doesn't have it's Ethernet jack added to + * it (a common scenario for bike applications), this will + * let you disable ethernet for situations where it either + * makes no sense or flat out doesn't exist, such as when + * using an ESP pico board. + */ +#ifndef BRAIN_ETHERNET_ENABLED +#define BRAIN_ETHERNET_ENABLED true +#endif + +/** + * The NeoBuffer library we use for rendering pixel data is + * heavily C++ template based so the type of pixels that + * we are rendering to is set statically. + * + * This should be either NeoGrbFeature or NeoRgbFeature + * depending on what type of pixel you are talking to. + * + * For the BAAAHS Sparkle Motion strands this should be set + * to NeoGrbFeature. + * + * For ws2812 or ws2812b led strips it should also be set + * to NeoGrbFeature. + * + * However, for the very common "bullet" leds used in sign + * making this should be set to NeoRgbFeature. These + * leds use the ws2811 driver chip which is separate from + * the led emitter and this ws2811 driver expects the + * pixel data in a slightly different format for whatever + * reason. + * + * In terms of supporting other leds from this codebase, + * that should be pretty straightforward because the + * underlying NeoBuffer library supports quite a lot. + * However we're just not focusing on that right now. + * + * The other thing we can add at some point is RGBW support + * but we arem't there yet. + */ +#ifndef BRAIN_NEO_COLORFEATURE +#define BRAIN_NEO_COLORFEATURE NeoGrbFeature +#endif + +/** + * The default pixel count is how many pixels are expected + * to be connected to this board by default. This is likely + * to be changed by board configuration, but because the + * number of pixels is pretty closely tied to the hardware + * configuration that's the reason this number is is + * defined along with the hardware details. + * + * Be sure to check brain_config.h for any comments about + * how this number can be overwritten through the configuration + * infrastructure. + */ +#ifndef BRAIN_DEFAULT_PIXEL_COUNT +#define BRAIN_DEFAULT_PIXEL_COUNT 1000 +#endif + +/** + * The FPS value for the default timebase + */ +#ifndef BRAIN_DEFAULT_FPS +#define BRAIN_DEFAULT_FPS 30 +#endif + +/** + * Default brightness value for the led renderer + */ +#ifndef BRAIN_DEFAULT_BRIGHTNESS +#define BRAIN_DEFAULT_BRIGHTNESS 255 +#endif + +/** + * Default power on color that is used if no shaders ever + * come online. Usually a local shader will overwrite this + * right away, but a default is good. + * + * This should be specified as a NeoBuffer color because + * it is used like so: + * + * m_buffer.ClearTo(BRAIN_POWER_ON_COLOR); + * + */ +#ifndef BRAIN_POWER_ON_COLOR +#define BRAIN_POWER_ON_COLOR RgbColor(255, 255, 255) +#endif + + +/** + * SysMon is a component which periodically logs interesting + * information about the state of the system to the standard + * serial output. Things like the amount of free memory etc. + * This defines how frequently it does that. + */ +#ifndef BRAIN_SYSMON_SECONDS +#define BRAIN_SYSMON_SECONDS 10 +#endif + + diff --git a/brain/sw/components/brain-common/include/brain_tags.h b/brain/sw/components/brain-common/include/brain_tags.h new file mode 100644 index 0000000000..b3373a8c5f --- /dev/null +++ b/brain/sw/components/brain-common/include/brain_tags.h @@ -0,0 +1,44 @@ +/** + * This file collects all of the logging tag values used + * throughout the project. It is not generally included + * directly, but comes along for the ride when other + * components include brain_common.h + * + * The ESP32 code base standard is to use a statement like + * + * ESP_LOGD(TAG, "One = %d", 1) + * + * where TAG is a locally defined string. To stay inline + * with that yet also have some slightly upgraded logging + * and centralness each .cpp should have brain_common.h in + * its include structure and should then locally define + * TAG near the top of the file by doing something like + * + * #define TAG TAG_BRAIN + * + * Then you can cut and past ESP example code into your + * module without any hassle. + * + * Our tags have additional internal structure so that the + * log output remains easily readable. The start with a + * # character which gives us some separation from the + * stuff that ESP has added at th beginning of the log line + * and then they are always only 6 characters long so that + * the log output lines up nicely. + */ + +#pragma once + + +#define TAG_NET "# net" +#define TAG_MAIN "# main" +#define TAG_BRAIN "# brain" +#define TAG_COMMON "#common" +#define TAG_HTTPD "# httpd" +#define TAG_LEDREN "#ledren" +#define TAG_SYSMON "#sysmon" +#define TAG_MSG "# msg" +#define TAG_SHADER "#shader" +#define TAG_SHDTREE "#shdtre" +#define TAG_UI "# ui" +#define TAG_OTA "# ota" diff --git a/brain/sw/components/brain-common/include/brain_tasks.h b/brain/sw/components/brain-common/include/brain_tasks.h new file mode 100644 index 0000000000..affc4d2bd2 --- /dev/null +++ b/brain/sw/components/brain-common/include/brain_tasks.h @@ -0,0 +1,181 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#pragma once + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +/** + * This is our definition structure for task creation. Generally when a singleton object + * is going to create OS tasks it will have a start() method that takes one or more of + * these structures. + */ +struct TaskDef { + /** + * No task should ever be defined with a priority higher than this. It's + * an arbitrary number but serves as documentation for the system more + * than anything else. We don't want it to be too large because of the + * memory allocation thing. Also, we only need a couple of priorities + * anyway. + */ + static const UBaseType_t MAX_PRIORITY = 10; + + const char* name; + uint32_t stack; + UBaseType_t priority; + BaseType_t coreId; // Generally should be tskNO_AFFINITY; + + BaseType_t createTask(TaskFunction_t fn, void * const parameters, TaskHandle_t * const taskHandle); +}; + +/** + * This structure holds our global definitions of tasks so that we can easily look + * in the one file to see what all is going on. + * + * The stack size is defined in bytes. We generally use 10k but this should be + * tuned at some point. + * + * The priorities range from 0 - the lowest, up to whatever. Higher numbers mean + * higher priority. A higher priority task will be chosen to run over a lower + * priority task if both are in a runnable state. Priorities should not be set + * arbitrarily high because an array from lowest to highest is created in the + * system so these should stay fairly packed together. + * + * Multiple tasks can have the same priority, so think of this as a Unix "nice" + * level more than anything. We should group similar tasks at the same priority + * level. + */ +struct BrainTasks { + BrainTasks() { } + + /** + * The net task doesn't actually do anything right now. The idea was that + * it might need to handle interface changes, but honestly it looks like + * all of that is inside the apis. Keeping it for the moment though as the + * network stuff is still a little in flux. + */ + TaskDef net = { + .name = "net", + .stack = 10240, + .priority = 0, + .coreId = tskNO_AFFINITY, + }; + + /** + * The netInput task reads messages from the network and dispatches them + * through the message handler hierarchy. + */ + TaskDef netInput = { + .name = "netInput", + .stack = 10240, + .priority = 2, + .coreId = tskNO_AFFINITY, + }; + + /** + * The netOutput task accepts outgoing messages and sends them over the + * transport layer one at a time. + */ + TaskDef netOutput = { + .name = "netOutput", + .stack = 10240, + .priority = 1, + .coreId = tskNO_AFFINITY, + }; + + /** + * The httpd server which is really only used for OTA configuration. The + * default priority is tskIDLE_PRIORITY+5 which seems really way to high. + * Default stack is 4096 with no core affinity. + */ + TaskDef httpd = { + .name = "httpd", + .stack = 10240, + .priority = 0, + .coreId = tskNO_AFFINITY, + }; + + /** + * SysMon hangs out in the background and periodically prints interesting + * data to the console like memory usage. It doesn't actually need much + * of a stack other than that it's going to do a lot printf stuff. + */ + TaskDef sysmon = { + .name = "sysmon", + .stack = 3024, + .priority = 0, + .coreId = tskNO_AFFINITY, + }; + + /** + * The UI task processes button presses and turns them into key events. + * It also drives the on-board leds like the eyes and the tri-color + * led. + */ + TaskDef ui = { + .name = "ui", + .stack = 3000, + .priority = 0, + .coreId = tskNO_AFFINITY, + }; + + /** + * The show task takes the rendered pixel data and pushes it out to the + * pixels on a set schedule. It's pretty important thus a high priority. + */ + TaskDef show = { + .name = "show", + .stack = 10240, + .priority = 4, + .coreId = APP_CPU_NUM, + }; + + /** + * The render task is responsible for parsing the "shade" messages, + * and doing what they say to do. It's decoupled from the act of + * actually pushing the pixels out to the strand for flexibility. + * Ultimately we may not need this much flexibility, but for the + * moment it's there. + */ + TaskDef render = { + .name = "render", + .stack = 10240, + .priority = 5, + .coreId = APP_CPU_NUM, + }; + + /** + * The long term poll task is started by the STA interface when it + * hits it's max number of immediate reconnects. We don't want to + * keep reconnecting ALL the time, so this lets us drop from an + * immediate attempt to a slow poll. It comes and goes in the system + * based on how connections go. + * + * Since it's about networking we put it on the protocol CPU. + */ + TaskDef longTermSTAPoll = { + .name = "staLTP", + .stack = 4096, + .priority = 1, + .coreId = PRO_CPU_NUM, + }; + + /** + * The ota fetcher will go download stuff from a URL and write it + * to the next ota partition. It seems to conflict with other + * things so it gets a nice high priority. + */ + TaskDef otaFetcher = { + .name = "otaFetcher", + .stack = 10240, + .priority = 10, + .coreId = APP_CPU_NUM, + }; +}; + +/** + * This global constant holds the actual instance of the BrainTasks structure. + */ +extern const BrainTasks DefaultBrainTasks; diff --git a/brain/sw/components/brain-common/readme.md b/brain/sw/components/brain-common/readme.md new file mode 100644 index 0000000000..45ecea6e68 --- /dev/null +++ b/brain/sw/components/brain-common/readme.md @@ -0,0 +1,4 @@ +#Brain Common + +This component contains header and constant information needed by more than one component. A good example is all the data related to tasks. + diff --git a/brain/sw/components/brain-common/tasks.cpp b/brain/sw/components/brain-common/tasks.cpp new file mode 100644 index 0000000000..bbcf4419bf --- /dev/null +++ b/brain/sw/components/brain-common/tasks.cpp @@ -0,0 +1,13 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#include "brain_common.h" + +const BrainTasks DefaultBrainTasks; + +BaseType_t +TaskDef::createTask(TaskFunction_t fn, void * const parameters, TaskHandle_t * const taskHandle) { + return xTaskCreate(fn, name, stack, parameters, priority, taskHandle); +} + diff --git a/brain/sw/components/brain-httpd/CMakeLists.txt b/brain/sw/components/brain-httpd/CMakeLists.txt new file mode 100644 index 0000000000..dd83fe4582 --- /dev/null +++ b/brain/sw/components/brain-httpd/CMakeLists.txt @@ -0,0 +1,12 @@ +set(COMPONENT_ADD_INCLUDEDIRS . "include") + +set(COMPONENT_SRCS + "http_server.cpp" + "spiffs_handler.cpp" + "firmware_handler.cpp" + "config_handler.cpp" + ) + +set(COMPONENT_REQUIRES brain-common spiffs esp_http_server app_update) + +register_component() diff --git a/brain/sw/components/brain-httpd/config_handler.cpp b/brain/sw/components/brain-httpd/config_handler.cpp new file mode 100644 index 0000000000..18a46809f8 --- /dev/null +++ b/brain/sw/components/brain-httpd/config_handler.cpp @@ -0,0 +1,172 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#include "config_handler.h" +#include "http_server.h" + +#define TAG TAG_HTTPD + +#define OK_FALSE_JSON "{\"ok\":false}" +#define OK_TRUE_JSON "{\"ok\":true}" + +static esp_err_t glue_getSysData(httpd_req_t *req) { + if (!req) return ESP_ERR_INVALID_ARG; + + return ((ConfigHandler *) (req->user_ctx))->_getSysData(req); +} + +static esp_err_t glue_putConfig(httpd_req_t *req) { + if (!req) return ESP_ERR_INVALID_ARG; + + return ((ConfigHandler *) (req->user_ctx))->_putConfig(req); +} + +static esp_err_t glue_delLife(httpd_req_t *req) { + if (!req) return ESP_ERR_INVALID_ARG; + + return ((ConfigHandler *) (req->user_ctx))->_delLife(req); +} + +esp_err_t ConfigHandler::registerHandlers(HttpServer &server) { + + ///// + httpd_uri_t getConfig = { + .uri = "/sysdata.json", + .method = HTTP_GET, + .handler = glue_getSysData, + .user_ctx = this, + }; + + auto err = httpd_register_uri_handler(server.m_hServer, &getConfig); + if (ESP_OK != err) { + ESP_LOGE(TAG, "Failed to register GET /sysdata.json uri handler %d", err); + return err; + } + + //// + httpd_uri_t putConfig = { + .uri = "/config.json", + .method = HTTP_PUT, + .handler = glue_putConfig, + .user_ctx = this, + }; + + err = httpd_register_uri_handler(server.m_hServer, &putConfig); + if (ESP_OK != err) { + ESP_LOGE(TAG, "Failed to register PUT /config.json uri handler %d", err); + return err; + } + + //// + httpd_uri_t delLife = { + .uri = "/life", + .method = HTTP_DELETE, + .handler = glue_delLife, + .user_ctx = this, + }; + + err = httpd_register_uri_handler(server.m_hServer, &delLife); + if (ESP_OK != err) { + ESP_LOGE(TAG, "Failed to register DELETE /life uri handler %d", err); + return err; + } + + return ESP_OK; +} + +#define TMP_BUFFER_SIZE 500 +esp_err_t ConfigHandler::_getSysData(httpd_req_t *req) { + ESP_LOGD(TAG, "_getSysData()"); + // Need a buffer, this seems reasonable + char* szBuf = (char*)malloc(TMP_BUFFER_SIZE); + if (!szBuf) { + ESP_LOGE(TAG, "OOM allocating response buffer"); + return ESP_FAIL; + } + + sprintf(szBuf, "{" + "\"mac\":\"%s\"," + "\"rando\":\"Hello 3\"," + "\"config\":", + GlobalConfig.macStr()); + + size_t used = strlen(szBuf); + ESP_ERROR_CHECK_WITHOUT_ABORT(GlobalConfig.printTo(szBuf + used, TMP_BUFFER_SIZE - used)); + strcat(szBuf, "}"); + ESP_LOGD(TAG, "Config string: '%s'", szBuf); + + httpd_resp_set_type(req, "application/json"); + httpd_resp_sendstr(req, szBuf); + + free(szBuf); + + return ESP_OK; +} + +esp_err_t ConfigHandler::_putConfig(httpd_req_t *req) { + ESP_LOGD(TAG, "_putConfig()"); + + esp_err_t result = ESP_FAIL; + + // Need a buffer, this seems reasonable + char* szBuf = (char*)malloc(TMP_BUFFER_SIZE); + if (!szBuf) { + ESP_LOGE(TAG, "OOM allocating receive buffer"); + return ESP_FAIL; + } + + auto read = httpd_req_recv(req, szBuf, TMP_BUFFER_SIZE); + if (read > 0) { + // Have to print this before we parse it because parsing will + // munge up the string. However, it's not null terminated, so um, + // this is a little complex + { + char* szTemp = (char*)malloc(read + 1); + if (szTemp) { + memcpy(szTemp, szBuf, read); + szTemp[read] = 0; + ESP_LOGD(TAG, "setting config to %s", szTemp); + free(szTemp); + } + } + + httpd_resp_set_type(req, "application/json"); + auto parseResult = GlobalConfig.parseFrom(szBuf, read); + if (parseResult != ESP_OK) { + ESP_LOGE(TAG, "Error parsing attempted config %d", parseResult); + httpd_resp_set_status(req, "400 Bad JSON Data"); + httpd_resp_sendstr(req, OK_FALSE_JSON); + } else { + auto saveResult = GlobalConfig.save(); + if (saveResult != ESP_OK) { + ESP_LOGE(TAG, "Error saving new config %d", saveResult); + httpd_resp_set_status(req, "500 Error saving config"); + httpd_resp_sendstr(req, OK_FALSE_JSON); + } else { + httpd_resp_sendstr(req, OK_FALSE_JSON); + } + } + } else if (read == 0) { + ESP_LOGW(TAG, "_putConfig connection closed by peer"); + } else { + ESP_LOGE(TAG, "_putConfig error reading config %d", read); + } + + free(szBuf); + + return result; +} + + +esp_err_t ConfigHandler::_delLife(httpd_req_t *req) { + ESP_LOGD(TAG, "_delLife()"); + + // 500 Milliseconds seems like a long enough time to get a response + // back to a browser saying we heard them and we're going to do it. + brain_restart(500); + + httpd_resp_sendstr(req, OK_TRUE_JSON); + + return ESP_OK; +} \ No newline at end of file diff --git a/brain/sw/components/brain-httpd/firmware_handler.cpp b/brain/sw/components/brain-httpd/firmware_handler.cpp new file mode 100644 index 0000000000..7d3273f11e --- /dev/null +++ b/brain/sw/components/brain-httpd/firmware_handler.cpp @@ -0,0 +1,196 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#include "firmware_handler.h" +#include "http_server.h" + +#include +#include +#include + +/* Max length a file path can have on storage */ +//#define FILE_PATH_MAX (ESP_VFS_PATH_MAX + CONFIG_SPIFFS_OBJ_NAME_LEN) + +#define SCRATCH_BUFSIZE 8192 + +#define TAG TAG_HTTPD + +static esp_err_t glue_putHandler(httpd_req_t *req) { + if (!req) return ESP_ERR_INVALID_ARG; + + return ((FirmwareHandler*)(req->user_ctx))->_putHandler(req); +} + +esp_err_t FirmwareHandler::registerHandlers(HttpServer &server) { + // Also do the equivalent initialization stuff - maybe want to come up with + // a scheme for doing this better elsewhere + //strcpy(this->basePath, "/spiffs/www"); + + httpd_uri_t firmwareHandler = { + .uri = "/firmware", + .method = HTTP_POST, + .handler = glue_putHandler, + .user_ctx = this, + }; + + esp_err_t err; + err = httpd_register_uri_handler(server.m_hServer, &firmwareHandler); + if (ESP_OK != err) { + ESP_LOGE(TAG, "Failed to register PUT uri handler %d", err); + return err; + } + + return ESP_OK; +} + +// #define IS_FILE_EXT(filename, ext) \ // +// (strcasecmp(&filename[strlen(filename) - sizeof(ext) + 1], ext) == 0) + +/* Set HTTP response content type according to file extension */ +//static esp_err_t set_content_type_from_file(httpd_req_t *req, const char *filename) +//{ +// if (IS_FILE_EXT(filename, ".pdf")) { +// return httpd_resp_set_type(req, "application/pdf"); +// } else if (IS_FILE_EXT(filename, ".html")) { +// return httpd_resp_set_type(req, "text/html"); +// } else if (IS_FILE_EXT(filename, ".jpeg")) { +// return httpd_resp_set_type(req, "image/jpeg"); +// } else if (IS_FILE_EXT(filename, ".ico")) { +// return httpd_resp_set_type(req, "image/x-icon"); +// } +// /* This is a limited set only */ +// /* For any other type always set as plain text */ +// return httpd_resp_set_type(req, "text/plain"); +//} +// +///* Copies the full path into destination buffer and returns +// * pointer to path (skipping the preceding base path) */ +//static const char* get_path_from_uri(char *dest, const char *base_path, const char *uri, size_t destsize) +//{ +// const size_t base_pathlen = strlen(base_path); +// size_t pathlen = strlen(uri); +// +// const char *quest = strchr(uri, '?'); +// if (quest) { +// pathlen = MIN(pathlen, quest - uri); +// } +// const char *hash = strchr(uri, '#'); +// if (hash) { +// pathlen = MIN(pathlen, hash - uri); +// } +// +// if (base_pathlen + pathlen + 1 > destsize) { +// /* Full path string won't fit into destination buffer */ +// return NULL; +// } +// +// /* Construct full path (base + path) */ +// strcpy(dest, base_path); +// strlcpy(dest + base_pathlen, uri, pathlen + 1); +// +// /* Return pointer to path, skipping the base */ +// return dest + base_pathlen; +//} + +static void logFree(void *ctx) { + ESP_LOGI(TAG, "Freeing a ctx"); + free(ctx); +} + +esp_err_t FirmwareHandler::_putHandler(httpd_req_t *req) { + ESP_LOGE(TAG, "==== OTA via HTTP PUT Started ===="); + + // Could check filesize, but don't really care + // req->content_len + + const esp_partition_t* updatePartition = esp_ota_get_next_update_partition(nullptr); + if (!updatePartition) { + ESP_LOGE(TAG, "Unable to get a next ota update partition"); + return ESP_FAIL; + } + + esp_ota_handle_t otaHandle; + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_ota_begin(updatePartition, OTA_SIZE_UNKNOWN, &otaHandle)) != ESP_OK) { + return ESP_FAIL; + } + ESP_LOGE(TAG, "ota_begin() call succeeded."); + + ESP_LOGI(TAG, " type = %d", updatePartition->type); + ESP_LOGI(TAG, " subtype = %d", updatePartition->subtype); + ESP_LOGI(TAG, " address = 0x%x", updatePartition->address); + ESP_LOGI(TAG, " size = %d", updatePartition->size); + ESP_LOGI(TAG, " label = %s", updatePartition->label); + + if (!req->sess_ctx) { + ESP_LOGI(TAG, "Creating a new session context"); + req->sess_ctx = malloc(SCRATCH_BUFSIZE); + if (!req->sess_ctx) { + ESP_LOGE(TAG, "Failed to create session chunk buffer"); + return ESP_FAIL; + } + req->free_ctx = logFree; + } + + int received; + int remaining = req->content_len; + char* buf = (char*)req->sess_ctx; + + while (remaining > 0) { + ESP_LOGI(TAG, "Remaining OTA size : %d", remaining); + /* Receive the file part by part into a buffer */ + if ((received = httpd_req_recv(req, buf, MIN(remaining, SCRATCH_BUFSIZE))) <= 0) { + if (received == HTTPD_SOCK_ERR_TIMEOUT) { + /* Retry if timeout occurred */ + continue; + } + + /* In case of unrecoverable error, + * close and delete the unfinished file*/ + esp_ota_end(otaHandle); + + ESP_LOGE(TAG, "Firmware reception failed!"); + /* Respond with 500 Internal Server Error */ + httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Failed to receive firmware"); + return ESP_FAIL; + } + + /* Write buffer content to file on storage */ + if (esp_ota_write(otaHandle, buf, received) != ESP_OK) { + esp_ota_end(otaHandle); + ESP_LOGE(TAG, "Firmware write failed!"); + /* Respond with 500 Internal Server Error */ + httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Failed to write file to storage"); + return ESP_FAIL; + } + + /* Keep track of remaining size of + * the file left to be uploaded */ + remaining -= received; + } + + auto endResult = esp_ota_end(otaHandle); + if (endResult != ESP_OK) { + ESP_LOGE(TAG, "OTA Failed with %d", endResult); + + /* Respond with an empty chunk to signal HTTP response completion */ + httpd_resp_send_chunk(req, NULL, 0); + return ESP_OK; + } + + ESP_LOGE(TAG, "==== Valid OTA received ===="); + auto setResult = esp_ota_set_boot_partition(updatePartition); + if (setResult != ESP_OK) { + ESP_LOGE(TAG, "Setting the OTA boot partition failed: %d", endResult); + + /* Respond with an empty chunk to signal HTTP response completion */ + httpd_resp_send_chunk(req, NULL, 0); + return ESP_OK; + } + + ESP_LOGE(TAG, "Boot partition set, Triggering restart"); + brain_restart(500); + + httpd_resp_send_chunk(req, NULL, 0); + return ESP_OK; +} diff --git a/brain/sw/components/brain-httpd/http_server.cpp b/brain/sw/components/brain-httpd/http_server.cpp new file mode 100644 index 0000000000..3a631ebdd7 --- /dev/null +++ b/brain/sw/components/brain-httpd/http_server.cpp @@ -0,0 +1,27 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include "http_server.h" + +#define TAG TAG_HTTPD + +void HttpServer::start() { + m_hServer = nullptr; + httpd_config_t config = HTTPD_DEFAULT_CONFIG(); + config.uri_match_fn = httpd_uri_match_wildcard; + config.task_priority = DefaultBrainTasks.httpd.priority; + config.core_id = DefaultBrainTasks.httpd.coreId; + config.stack_size = DefaultBrainTasks.httpd.stack; + + ESP_LOGI(TAG, "Starting HTTP Server"); + if (ESP_ERROR_CHECK_WITHOUT_ABORT(httpd_start(&m_hServer, &config)) != ESP_OK) return; + + ESP_LOGI(TAG, "Registering handlers"); + ESP_ERROR_CHECK_WITHOUT_ABORT(m_firmware.registerHandlers(*this)); + ESP_ERROR_CHECK_WITHOUT_ABORT(m_config.registerHandlers(*this)); + + // Because SPIFFS registers /* it has to be last or the other + // registrations will fail. + ESP_ERROR_CHECK_WITHOUT_ABORT(m_spiffs.registerHandlers(*this)); +} \ No newline at end of file diff --git a/brain/sw/components/brain-httpd/include/config_handler.h b/brain/sw/components/brain-httpd/include/config_handler.h new file mode 100644 index 0000000000..6d32b96daf --- /dev/null +++ b/brain/sw/components/brain-httpd/include/config_handler.h @@ -0,0 +1,24 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#pragma once + +#include "brain_common.h" + +#include "esp_vfs.h" +#include "esp_http_server.h" + +class HttpServer; + +class ConfigHandler { +public: + esp_err_t registerHandlers(HttpServer& server); + + esp_err_t _getSysData(httpd_req_t *req); + esp_err_t _putConfig(httpd_req_t *req); + esp_err_t _delLife(httpd_req_t *req); + +private: +}; + diff --git a/brain/sw/components/brain-httpd/include/firmware_handler.h b/brain/sw/components/brain-httpd/include/firmware_handler.h new file mode 100644 index 0000000000..54521c1db3 --- /dev/null +++ b/brain/sw/components/brain-httpd/include/firmware_handler.h @@ -0,0 +1,24 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#pragma once + +#include "brain_common.h" + +#include "esp_vfs.h" +#include "esp_http_server.h" + +class HttpServer; + +class FirmwareHandler { +public: + esp_err_t registerHandlers(HttpServer& server); + + esp_err_t _putHandler(httpd_req_t *req); + +private: + /* Base path of file storage */ + char m_basePath[ESP_VFS_PATH_MAX + 1]; +}; + diff --git a/brain/sw/components/brain-httpd/include/http_server.h b/brain/sw/components/brain-httpd/include/http_server.h new file mode 100644 index 0000000000..8396ca41c4 --- /dev/null +++ b/brain/sw/components/brain-httpd/include/http_server.h @@ -0,0 +1,23 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#pragma once + +#include "brain_common.h" + +#include "spiffs_handler.h" +#include "firmware_handler.h" +#include "config_handler.h" + +class HttpServer { +public: + httpd_handle_t m_hServer; + + void start(); + +private: + SpiffsHandler m_spiffs; + FirmwareHandler m_firmware; + ConfigHandler m_config; +}; diff --git a/brain/sw/components/brain-httpd/include/spiffs_handler.h b/brain/sw/components/brain-httpd/include/spiffs_handler.h new file mode 100644 index 0000000000..2642415042 --- /dev/null +++ b/brain/sw/components/brain-httpd/include/spiffs_handler.h @@ -0,0 +1,24 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#pragma once + +#include "brain_common.h" + +#include "esp_vfs.h" +#include "esp_http_server.h" + +class HttpServer; + +class SpiffsHandler { +public: + esp_err_t registerHandlers(HttpServer& server); + + esp_err_t getHandler(httpd_req_t *req); + +private: + /* Base path of file storage */ + char basePath[ESP_VFS_PATH_MAX + 1]; +}; + diff --git a/brain/sw/components/brain-httpd/readme.md b/brain/sw/components/brain-httpd/readme.md new file mode 100644 index 0000000000..45ecea6e68 --- /dev/null +++ b/brain/sw/components/brain-httpd/readme.md @@ -0,0 +1,4 @@ +#Brain Common + +This component contains header and constant information needed by more than one component. A good example is all the data related to tasks. + diff --git a/brain/sw/components/brain-httpd/spiffs_handler.cpp b/brain/sw/components/brain-httpd/spiffs_handler.cpp new file mode 100644 index 0000000000..3da8c63f9c --- /dev/null +++ b/brain/sw/components/brain-httpd/spiffs_handler.cpp @@ -0,0 +1,187 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include "spiffs_handler.h" +#include "http_server.h" + +#include +#include +#include "esp_spiffs.h" + +/* Max length a file path can have on storage */ +#define FILE_PATH_MAX (ESP_VFS_PATH_MAX + CONFIG_SPIFFS_OBJ_NAME_LEN) + +#define SCRATCH_BUFSIZE 8192 + +#define TAG TAG_HTTPD + +static esp_err_t sGetHandler(httpd_req_t *req) { + if (!req) return ESP_ERR_INVALID_ARG; + + return ((SpiffsHandler*)(req->user_ctx))->getHandler(req); +} + +esp_err_t SpiffsHandler::registerHandlers(HttpServer &server) { + // Also do the equivalent initialization stuff - maybe want to come up with + // a scheme for doing this better elsewhere + strcpy(this->basePath, "/spiffs/www"); + + httpd_uri_t fileDownload = { + .uri = "/*", + .method = HTTP_GET, + .handler = sGetHandler, + .user_ctx = this, + }; + + esp_err_t err; + err = httpd_register_uri_handler(server.m_hServer, &fileDownload); + if (ESP_OK != err) { + ESP_LOGE(TAG, "Failed to register GET uri handler %d", err); + return err; + } + + return ESP_OK; +} + +#define IS_FILE_EXT(filename, ext) \ + (strcasecmp(&filename[strlen(filename) - sizeof(ext) + 1], ext) == 0) + +/* Set HTTP response content type according to file extension */ +static esp_err_t set_content_type_from_file(httpd_req_t *req, const char *filename) +{ + if (IS_FILE_EXT(filename, ".pdf")) { + return httpd_resp_set_type(req, "application/pdf"); + } else if (IS_FILE_EXT(filename, ".html")) { + return httpd_resp_set_type(req, "text/html"); + } else if (IS_FILE_EXT(filename, ".jpeg")) { + return httpd_resp_set_type(req, "image/jpeg"); + } else if (IS_FILE_EXT(filename, ".ico")) { + return httpd_resp_set_type(req, "image/x-icon"); + } + /* This is a limited set only */ + /* For any other type always set as plain text */ + return httpd_resp_set_type(req, "text/plain"); +} + +/* Copies the full path into destination buffer and returns + * pointer to path (skipping the preceding base path) */ +static const char* get_path_from_uri(char *dest, const char *base_path, const char *uri, size_t destsize) +{ + const size_t base_pathlen = strlen(base_path); + size_t pathlen = strlen(uri); + + const char *quest = strchr(uri, '?'); + if (quest) { + pathlen = MIN(pathlen, quest - uri); + } + const char *hash = strchr(uri, '#'); + if (hash) { + pathlen = MIN(pathlen, hash - uri); + } + + if (base_pathlen + pathlen + 1 > destsize) { + /* Full path string won't fit into destination buffer */ + return NULL; + } + + /* Construct full path (base + path) */ + strcpy(dest, base_path); + strlcpy(dest + base_pathlen, uri, pathlen + 1); + + /* Return pointer to path, skipping the base */ + return dest + base_pathlen; +} + +static void logFree(void *ctx) { + ESP_LOGI(TAG, "Freeing a ctx"); + free(ctx); +} + +esp_err_t SpiffsHandler::getHandler(httpd_req_t *req) { + char filepath[FILE_PATH_MAX]; + FILE *fd = NULL; + struct stat file_stat; + + const char *filename = get_path_from_uri(filepath, this->basePath, + req->uri, sizeof(filepath)); + if (!filename) { + ESP_LOGE(TAG, "Filename is too long"); + /* Respond with 500 Internal Server Error */ + httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Filename too long"); + return ESP_FAIL; + } + + /* If name has trailing '/', respond with directory contents */ +// if (filename[strlen(filename) - 1] == '/') { +// return http_resp_dir_html(req, filepath); +// } + // When the filename ends with a trailing / we append index.html + if (filename[strlen(filename) - 1] == '/') { + strcat(filepath, "index.html"); + } + + if (stat(filepath, &file_stat) == -1) { + /* If file not present on SPIFFS check if URI + * corresponds to one of the hardcoded paths */ +// if (strcmp(filename, "/index.html") == 0) { +// return index_html_get_handler(req); +// } else if (strcmp(filename, "/favicon.ico") == 0) { +// return favicon_get_handler(req); +// } + ESP_LOGE(TAG, "Failed to stat file : %s", filepath); + /* Respond with 404 Not Found */ + httpd_resp_send_err(req, HTTPD_404_NOT_FOUND, "File does not exist"); + return ESP_FAIL; + } + + fd = fopen(filepath, "r"); + if (!fd) { + ESP_LOGE(TAG, "Failed to read existing file : %s", filepath); + /* Respond with 500 Internal Server Error */ + httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Failed to read existing file"); + return ESP_FAIL; + } + + ESP_LOGI(TAG, "Sending file : %s (%ld bytes)...", filename, file_stat.st_size); + set_content_type_from_file(req, filename); + + if (!req->sess_ctx) { + ESP_LOGI(TAG, "Creating a new session context"); + req->sess_ctx = malloc(SCRATCH_BUFSIZE); + if (!req->sess_ctx) { + ESP_LOGE(TAG, "Failed to create session chunk buffer"); + return ESP_FAIL; + } + req->free_ctx = logFree; + } + + /* Retrieve the pointer to scratch buffer for temporary storage */ + char *chunk = (char*)req->sess_ctx; + size_t chunksize; + do { + /* Read file in chunks into the scratch buffer */ + chunksize = fread(chunk, 1, SCRATCH_BUFSIZE, fd); + + /* Send the buffer contents as HTTP response chunk */ + if (httpd_resp_send_chunk(req, chunk, chunksize) != ESP_OK) { + fclose(fd); + ESP_LOGE(TAG, "File sending failed!"); + /* Abort sending file */ + httpd_resp_sendstr_chunk(req, NULL); + /* Respond with 500 Internal Server Error */ + httpd_resp_send_err(req, HTTPD_500_INTERNAL_SERVER_ERROR, "Failed to send file"); + return ESP_FAIL; + } + + /* Keep looping till the whole file is sent */ + } while (chunksize != 0); + + /* Close file after sending complete */ + fclose(fd); + ESP_LOGI(TAG, "File sending complete"); + + /* Respond with an empty chunk to signal HTTP response completion */ + httpd_resp_send_chunk(req, NULL, 0); + return ESP_OK; +} \ No newline at end of file diff --git a/brain/sw/components/brain-ui/CMakeLists.txt b/brain/sw/components/brain-ui/CMakeLists.txt new file mode 100644 index 0000000000..80082c21bc --- /dev/null +++ b/brain/sw/components/brain-ui/CMakeLists.txt @@ -0,0 +1,13 @@ +set(COMPONENT_ADD_INCLUDEDIRS . "include") + +set(COMPONENT_SRCS + "brain-ui.cpp" + "brain-led.cpp" + "brain-button.cpp" + "brain-ui-events.cpp" + ) + + +set(COMPONENT_REQUIRES brain-common) + +register_component() diff --git a/brain/sw/components/brain-ui/brain-button.cpp b/brain/sw/components/brain-ui/brain-button.cpp new file mode 100644 index 0000000000..7d87790f47 --- /dev/null +++ b/brain/sw/components/brain-ui/brain-button.cpp @@ -0,0 +1,122 @@ +// +// Created by Tom Seago on 2019-07-10. +// + +#include "brain-button.h" +#include "brain-ui-priv.h" + +const uint32_t LONG_PRESS_MS = 1000; + +void glue_isr(void *pArg) { + ((BrainButton*)pArg)->_isr(); +} + +void glue_callListener(void *pArg, uint32_t pArg2) { + ((BrainButton*)pArg)->_callListener(); +} + +void glue_longPressTimer(TimerHandle_t xTimer) { + void* pArg = pvTimerGetTimerID(xTimer); + ((BrainButton*)pArg)->_longPressTimer(); +} + +BrainButton::BrainButton(gpio_num_t gpioNum, bool activeLow, BrainButtonListener &listener) : + m_gpioNum(gpioNum), + m_listener(listener), + m_activeLow(activeLow), + m_Down(false) +{ +} + +void +BrainButton::start() { + // This will cause an error to be printed the second time it is called but we don't + // really care and it's easier than adding a guard bit. + gpio_install_isr_service(0); + + gpio_config_t config; + config.pin_bit_mask = (uint64_t)1 << m_gpioNum; + config.mode = GPIO_MODE_INPUT; + config.pull_up_en = m_activeLow ? GPIO_PULLUP_ENABLE : GPIO_PULLUP_DISABLE; + config.pull_down_en = m_activeLow ? GPIO_PULLDOWN_DISABLE : GPIO_PULLDOWN_ENABLE; + config.intr_type = GPIO_INTR_ANYEDGE; + + if (ESP_OK != gpio_config(&config)) { + ESP_LOGE(TAG, "Failed to configure button %d", m_gpioNum); + return; + } + + // We're going to also need a timer to handle long press situations + m_hLongPressTimer = xTimerCreate("Button", + pdMS_TO_TICKS(LONG_PRESS_MS), + pdFALSE, // No auto reloading + this, // A timer ID equal to us + glue_longPressTimer); + + m_Down = readDown(); + m_ChangeAt = esp_timer_get_time(); + + gpio_isr_handler_add(m_gpioNum, glue_isr, this); + ESP_LOGI(TAG, "Button (%d) configured and m_Down=%s", m_gpioNum, m_Down ? "true" : "false"); +} + +bool +BrainButton::readDown() { + bool down = (bool)gpio_get_level(m_gpioNum); + if (m_activeLow) { + down = !down; + } + return down; +} + +void BrainButton::_isr() { + bool nextState = readDown(); + if (nextState == m_Down) { + return; + } + + // State change! + m_Down = nextState; + m_ChangeAt = esp_timer_get_time(); + + BaseType_t xHigherPriorityTaskWoken; + xTimerPendFunctionCallFromISR(glue_callListener, this, 0, &xHigherPriorityTaskWoken); + + // Might need the currently interrupted task to yield, which we force here. + if (xHigherPriorityTaskWoken) { + portYIELD_FROM_ISR(); + } +} + +void BrainButton::_callListener() { + if (m_Down) { + if (m_longPressEnabled) { + m_longPressPending = true; + // Start the timer. The period is set when the timer was created. The 0 here + // just means don't wait around in case the timer queue itself is blocked + xTimerStart(m_hLongPressTimer, 0); + } else { + // Dispatch immediately + m_listener.buttonDown(*this, false); + } + } else { + if (m_longPressPending) { + // Make sure the timer doesn't fire! + m_longPressPending = false; + + // Long press was pending, but UP happened first + xTimerStop(m_hLongPressTimer, 0); + m_listener.buttonDown(*this, false); + } + m_listener.buttonUp(*this); + } +} + +void BrainButton::_longPressTimer() { + // Oh hey we expired! + m_longPressPending = false; + if (m_Down) { + // Only send this if we are _still_ actually down + m_listener.buttonDown(*this, true); + } +} \ No newline at end of file diff --git a/brain/sw/components/brain-ui/brain-led.cpp b/brain/sw/components/brain-ui/brain-led.cpp new file mode 100644 index 0000000000..74826f77c6 --- /dev/null +++ b/brain/sw/components/brain-ui/brain-led.cpp @@ -0,0 +1,73 @@ +// +// Created by Tom Seago on 2019-06-20. +// + +#include "brain-ui-priv.h" +#include "brain-led.h" + +#define TAG TAG_UI + +bool BrainLed::initDone; + +BrainLed::BrainLed(ledc_channel_t channel, gpio_num_t gpio, ledc_mode_t speed) { + m_config.channel = channel; + m_config.gpio_num = gpio; + m_config.speed_mode = speed; + m_config.duty = 0; + m_config.hpoint = 0; + m_config.timer_sel = speed == LEDC_HIGH_SPEED_MODE ? LEDC_TIMER_0 : LEDC_TIMER_1; +} + +void +BrainLed::start() { + BrainLed::checkInit(); + + ESP_LOGD(TAG, "BrainLed::Start gpio=%d", m_config.gpio_num); + ledc_channel_config(&m_config); +} + +void +BrainLed::setValue(uint8_t val) { + m_val = val; + ledc_set_duty(m_config.speed_mode, m_config.channel, 256 - val); + ledc_update_duty(m_config.speed_mode, m_config.channel); +} + +void +BrainLed::checkInit() { + if (BrainLed::initDone) return; + + /* + * Prepare and set configuration of timers + * that will be used by LED Controller + */ + ledc_timer_config_t ledc_timer; + ledc_timer.duty_resolution = LEDC_TIMER_8_BIT; // resolution of PWM duty + ledc_timer.freq_hz = 5000; // frequency of PWM signal + ledc_timer.speed_mode = LEDC_HIGH_SPEED_MODE; // timer mode + ledc_timer.timer_num = LEDC_TIMER_0; // timer index + + // Set configuration of timer0 for high speed channels + ledc_timer_config(&ledc_timer); + + // Prepare and set configuration of timer1 for low speed channels + ledc_timer.speed_mode = LEDC_LOW_SPEED_MODE; + ledc_timer.timer_num = LEDC_TIMER_1; + ledc_timer_config(&ledc_timer); + + // Initialize fade service. + ledc_fade_func_install(0); + + ESP_LOGD(TAG, "checkInit completed"); + + BrainLed::initDone = true; +} + +uint8_t BrainLed::incrementBy(uint8_t val) { + uint16_t next = (uint16_t)val + (uint16_t)m_val; + if (next > 255) { + next -= 255; + } + setValue(next); + return m_val; +} diff --git a/brain/sw/components/brain-ui/brain-ui-events.cpp b/brain/sw/components/brain-ui/brain-ui-events.cpp new file mode 100644 index 0000000000..4d1e51cb14 --- /dev/null +++ b/brain/sw/components/brain-ui/brain-ui-events.cpp @@ -0,0 +1,15 @@ +// +// Created by Tom Seago on 2019-07-30. +// + +#include +#include "brain-ui-events.h" +#include "brain-ui-priv.h" + +void +BrainUiEvent::post() { + auto err = esp_event_post(BRAIN_UI_BASE, id, this, sizeof(BrainUiEvent), 2); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Unable to post UI event %d key=%d mods=%d", id, code, modifiers); + } +} \ No newline at end of file diff --git a/brain/sw/components/brain-ui/brain-ui-priv.h b/brain/sw/components/brain-ui/brain-ui-priv.h new file mode 100644 index 0000000000..09efce6419 --- /dev/null +++ b/brain/sw/components/brain-ui/brain-ui-priv.h @@ -0,0 +1,9 @@ +// +// Created by Tom Seago on 2019-06-20. +// + +#pragma once + +#include + +#define TAG TAG_UI diff --git a/brain/sw/components/brain-ui/brain-ui.cpp b/brain/sw/components/brain-ui/brain-ui.cpp new file mode 100644 index 0000000000..a77c9a618a --- /dev/null +++ b/brain/sw/components/brain-ui/brain-ui.cpp @@ -0,0 +1,136 @@ +#include +#include "brain_common.h" +#include "brain-ui-priv.h" +#include "brain-ui.h" +#include "brain-ui-events.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +ESP_EVENT_DEFINE_BASE(BRAIN_UI_BASE); + +BrainUI::BrainUI() : + leftEye(LEDC_CHANNEL_1, BRAIN_GPIO_LED_LEFT_EYE), // Left Eye + rightEye(LEDC_CHANNEL_0, BRAIN_GPIO_LED_RIGHT_EYE), // Right Eye + rgbR(LEDC_CHANNEL_2, BRAIN_GPIO_LED_RED), // 34 is bad Rev D, 12 is Rev D rework, 13 is Rev E + rgbG(LEDC_CHANNEL_3, BRAIN_GPIO_LED_GREEN), + rgbB(LEDC_CHANNEL_4, BRAIN_GPIO_LED_BLUE), + + btnLeft(BRAIN_GPIO_BUTTON_LEFT, BRAIN_BUTTON_LEFT_ACTIVELOW, *this), + btnRight(BRAIN_GPIO_BUTTON_RIGHT, BRAIN_BUTTON_RIGHT_ACTIVELOW, *this) // Rev D this is IO2, Rev E is IO34, both are low default +{ + +} + +void static task_brainui(void* pvParameters) { + ((BrainUI*)pvParameters)->_task(); +} + + +void +BrainUI::_task() { + TickType_t xLastWakeTime = xTaskGetTickCount(); + const TickType_t xFrequency = pdMS_TO_TICKS(500); + + uint8_t val = 32; + while(1) { + vTaskDelayUntil( &xLastWakeTime, xFrequency ); + + val += 16; + // if (val > 255) val = 0; + +// if (!val) { +// ESP_LOGI(TAG, "Left Button %s", btnLeft.readDown() ? "down" : "up"); +// ESP_LOGI(TAG, "Right Button %s", btnRight.readDown() ? "down" : "up"); +// } + + // ESP_LOGI(TAG, "Update LEDs to %d", val); +// leftEye.setValue(val); +// rightEye.setValue((uint8_t)255-val); + +// rgbR.setValue(val); +// rgbG.setValue(val); +// rgbB.setValue((uint8_t)255-val); +// rgbR.incrementBy(val); +// rgbG.incrementBy(val); +// rgbB.incrementBy(val); + + // TODO: Start showing status using the RGB leds, at least until a user interaction + } + + // Just in case we ever exit, we're supposed to do this. + // This seems to _work_ more or less, but sure doesn't seem like + // the safest thing because like, there are callbacks bro! + vTaskDelete(nullptr); +} + +void +BrainUI::start(TaskDef taskDef) { + // Start all the LEDs first + leftEye.start(); + rightEye.start(); + rgbR.start(); + rgbG.start(); + rgbB.start(); + + // Also some buttons + btnLeft.start(); + btnRight.start(); + + // Then we can do stuff + leftEye.setValue(255); + rightEye.setValue(128); + + rgbR.setValue(0); + rgbG.setValue(0); + rgbB.setValue(0); + + // Let's go nuts balls and try to create a unique UI state + // based on the build string plus date and time. + auto verNum = GlobalConfig.versionHash(); + + leftEye.setValue((verNum >> 24) & 0x00ff); + rightEye.setValue((verNum >> 16) & 0x00ff); + rgbR.setValue((verNum >> 7) & 0x00ff); + rgbG.setValue((verNum >> 15) & 0x00ff); + rgbB.setValue((verNum >> 23) & 0x00ff); + + TaskHandle_t tHandle = NULL; + + BaseType_t tcResult; + + ESP_LOGI(TAG, "Starting brainui task..."); + // vTaskDelay(5 * xPortGetTickRateHz()); + + tcResult = taskDef.createTask(task_brainui, this, &tHandle); + + if (tcResult != pdPASS) { + ESP_LOGE(TAG, "Failed to create brainui task = %d", tcResult); + } else { + ESP_LOGI(TAG, "BrainUI task started"); + } +} + +void +BrainUI::buttonDown(BrainButton& sw, bool longPress) { + bool isLeft = (&sw == &btnLeft); + + ESP_LOGI(TAG, "%s Button V isLong=%d", isLeft ? "Left " : "Right", longPress); + + if (isLeft) { + leftEye.setValue(leftEye.getValue() ? 0 : 255); + BrainUiEvent evt(BrainUiEvent::KeyPress, BrainUiEvent::Left, longPress ? 0 : BrainUiEvent::Long); + evt.post(); + } else { + rightEye.setValue(rightEye.getValue() ? 0 : 255); + BrainUiEvent evt(BrainUiEvent::KeyPress, BrainUiEvent::Right, longPress ? 0 : BrainUiEvent::Long); + evt.post(); + } +}; + +void +BrainUI::buttonUp(BrainButton& sw) { + bool isLeft = (&sw == &btnLeft); + + ESP_LOGI(TAG, "%s Button ^", isLeft ? "Left " : "Right"); +}; diff --git a/brain/sw/components/brain-ui/include/brain-button.h b/brain/sw/components/brain-ui/include/brain-button.h new file mode 100644 index 0000000000..1dd120ab26 --- /dev/null +++ b/brain/sw/components/brain-ui/include/brain-button.h @@ -0,0 +1,47 @@ +// +// Created by Tom Seago on 2019-07-10. +// + +#pragma once + +#include +#include +#include +#include + +class BrainButton; + +class BrainButtonListener { +public: + virtual void buttonDown(BrainButton& sw, bool longPress) = 0; + virtual void buttonUp(BrainButton& sw) = 0; +}; + +class BrainButton { +public: + BrainButton(gpio_num_t gpioNum, bool activeLow, BrainButtonListener& listener); + + gpio_num_t gpioNum() { return m_gpioNum; } + bool readDown(); + + void enableLongPress(bool enable) { m_longPressEnabled = enable; } + + void start(); + + void _isr(); + void _callListener(); + void _longPressTimer(); + +private: + gpio_num_t m_gpioNum; + BrainButtonListener& m_listener; + + bool m_activeLow; + bool m_Down; + uint64_t m_ChangeAt; + + bool m_longPressEnabled = true; + + TimerHandle_t m_hLongPressTimer; + bool m_longPressPending; +}; \ No newline at end of file diff --git a/brain/sw/components/brain-ui/include/brain-led.h b/brain/sw/components/brain-ui/include/brain-led.h new file mode 100644 index 0000000000..f0a929d0fb --- /dev/null +++ b/brain/sw/components/brain-ui/include/brain-led.h @@ -0,0 +1,26 @@ +// +// Created by Tom Seago on 2019-06-20. +// + +#pragma once + +#include + +class BrainLed { +public: + BrainLed(ledc_channel_t channel, gpio_num_t gpio, ledc_mode_t speed = LEDC_HIGH_SPEED_MODE); + + void start(); + void setValue(uint8_t val); + uint8_t getValue() { return m_val; } + + uint8_t incrementBy(uint8_t val); +private: + ledc_channel_config_t m_config; + uint8_t m_val; + + static bool initDone; + static void checkInit(); +}; + + diff --git a/brain/sw/components/brain-ui/include/brain-ui-events.h b/brain/sw/components/brain-ui/include/brain-ui-events.h new file mode 100644 index 0000000000..8623c3d20c --- /dev/null +++ b/brain/sw/components/brain-ui/include/brain-ui-events.h @@ -0,0 +1,37 @@ +// +// Created by Tom Seago on 2019-07-30. +// + +#include +#include + +ESP_EVENT_DECLARE_BASE(BRAIN_UI_BASE); + +struct BrainUiEvent{ + enum EventId { + KeyPress, + }; + + enum KeyCode { + Left, + Right, + }; + + EventId id; + KeyCode code; + + // Modifiers indicate variations in which key was pressed. They are + // or'ed together into the modifiers value + static const uint8_t Long = 1; + uint8_t modifiers; + + BrainUiEvent(EventId id, KeyCode code, uint8_t mods) : + id(id), + code(code), + modifiers(mods) + { + + } + + void post(); +}; \ No newline at end of file diff --git a/brain/sw/components/brain-ui/include/brain-ui.h b/brain/sw/components/brain-ui/include/brain-ui.h new file mode 100644 index 0000000000..fbfbf09dcd --- /dev/null +++ b/brain/sw/components/brain-ui/include/brain-ui.h @@ -0,0 +1,27 @@ +#pragma once + +#include +#include +#include + +class BrainUI : public BrainButtonListener { +public: + BrainUI(); + + void start(TaskDef taskDef); + void _task(); + + void buttonDown(BrainButton& sw, bool longPress) override; + void buttonUp(BrainButton& sw) override; + +private: + BrainLed leftEye; + BrainLed rightEye; + + BrainLed rgbR; + BrainLed rgbG; + BrainLed rgbB; + + BrainButton btnLeft; + BrainButton btnRight; +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/CMakeLists.txt b/brain/sw/components/led-renderer/CMakeLists.txt new file mode 100644 index 0000000000..ef8a46d113 --- /dev/null +++ b/brain/sw/components/led-renderer/CMakeLists.txt @@ -0,0 +1,22 @@ +set(COMPONENT_ADD_INCLUDEDIRS "include" "neopixel") + +set(COMPONENT_SRCS "led-renderer.cpp" + "neopixel/internal/Esp32_i2s.c" + "neopixel/internal/HsbColor.cpp" + "neopixel/internal/HslColor.cpp" + "neopixel/internal/HtmlColor.cpp" + "neopixel/internal/HtmlColorNames.cpp" + "neopixel/internal/HtmlColorNameStrings.cpp" + "neopixel/internal/HtmlColorShortNames.cpp" + "neopixel/internal/NeoGamma.cpp" + "neopixel/internal/NeoPixelAnimator.cpp" + "neopixel/internal/NeoPixelEsp.c" + "neopixel/internal/RgbColor.cpp" + "neopixel/internal/RgbwColor.cpp" + "esp32-hal.c" + "esp32-hal-gpio.c" + ) + +set(COMPONENT_REQUIRES nvs_flash sysmon) + +register_component() diff --git a/brain/sw/components/led-renderer/esp32-hal-gpio.c b/brain/sw/components/led-renderer/esp32-hal-gpio.c new file mode 100644 index 0000000000..ea6be80448 --- /dev/null +++ b/brain/sw/components/led-renderer/esp32-hal-gpio.c @@ -0,0 +1,285 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "esp32-hal-gpio.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +//#include "rom/ets_sys.h" +#include "esp32/rom/ets_sys.h" +#include "esp_attr.h" +//#include "esp_intr.h" +#include "esp_intr_alloc.h" +//#include "rom/gpio.h" +#include "esp32/rom/gpio.h" +#include "soc/gpio_reg.h" +#include "soc/io_mux_reg.h" +#include "soc/gpio_struct.h" +#include "soc/rtc_io_reg.h" + +const int8_t esp32_adc2gpio[20] = {36, 37, 38, 39, 32, 33, 34, 35, -1, -1, 4, 0, 2, 15, 13, 12, 14, 27, 25, 26}; + +const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[GPIO_PIN_COUNT]={ + {0x44, 11, 11, 1}, + {0x88, -1, -1, -1}, + {0x40, 12, 12, 2}, + {0x84, -1, -1, -1}, + {0x48, 10, 10, 0}, + {0x6c, -1, -1, -1}, + {0x60, -1, -1, -1}, + {0x64, -1, -1, -1}, + {0x68, -1, -1, -1}, + {0x54, -1, -1, -1}, + {0x58, -1, -1, -1}, + {0x5c, -1, -1, -1}, + {0x34, 15, 15, 5}, + {0x38, 14, 14, 4}, + {0x30, 16, 16, 6}, + {0x3c, 13, 13, 3}, + {0x4c, -1, -1, -1}, + {0x50, -1, -1, -1}, + {0x70, -1, -1, -1}, + {0x74, -1, -1, -1}, + {0x78, -1, -1, -1}, + {0x7c, -1, -1, -1}, + {0x80, -1, -1, -1}, + {0x8c, -1, -1, -1}, + {0, -1, -1, -1}, + {0x24, 6, 18, -1}, //DAC1 + {0x28, 7, 19, -1}, //DAC2 + {0x2c, 17, 17, 7}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0, -1, -1, -1}, + {0x1c, 9, 4, 9}, + {0x20, 8, 5, 8}, + {0x14, 4, 6, -1}, + {0x18, 5, 7, -1}, + {0x04, 0, 0, -1}, + {0x08, 1, 1, -1}, + {0x0c, 2, 2, -1}, + {0x10, 3, 3, -1} +}; + +typedef void (*voidFuncPtr)(void); +typedef void (*voidFuncPtrArg)(void*); +typedef struct { + voidFuncPtr fn; + void* arg; +} InterruptHandle_t; +static InterruptHandle_t __pinInterruptHandlers[GPIO_PIN_COUNT] = {0,}; + +#include "driver/rtc_io.h" + +extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode) +{ + + if(!digitalPinIsValid(pin)) { + return; + } + + uint32_t rtc_reg = rtc_gpio_desc[pin].reg; + if(mode == ANALOG) { + if(!rtc_reg) { + return;//not rtc pin + } + //lock rtc + uint32_t reg_val = ESP_REG(rtc_reg); + if(reg_val & rtc_gpio_desc[pin].mux){ + return;//already in adc mode + } + reg_val &= ~( + (RTC_IO_TOUCH_PAD1_FUN_SEL_V << rtc_gpio_desc[pin].func) + |rtc_gpio_desc[pin].ie + |rtc_gpio_desc[pin].pullup + |rtc_gpio_desc[pin].pulldown); + ESP_REG(RTC_GPIO_ENABLE_W1TC_REG) = (1 << (rtc_gpio_desc[pin].rtc_num + RTC_GPIO_ENABLE_W1TC_S)); + ESP_REG(rtc_reg) = reg_val | rtc_gpio_desc[pin].mux; + //unlock rtc + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = ((uint32_t)2 << MCU_SEL_S) | ((uint32_t)2 << FUN_DRV_S) | FUN_IE; + return; + } + + //RTC pins PULL settings + if(rtc_reg) { + //lock rtc + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); + if(mode & PULLUP) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pullup) & ~(rtc_gpio_desc[pin].pulldown); + } else if(mode & PULLDOWN) { + ESP_REG(rtc_reg) = (ESP_REG(rtc_reg) | rtc_gpio_desc[pin].pulldown) & ~(rtc_gpio_desc[pin].pullup); + } else { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); + } + //unlock rtc + } + + uint32_t pinFunction = 0, pinControl = 0; + + //lock gpio + if(mode & INPUT) { + if(pin < 32) { + GPIO.enable_w1tc = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } else if(mode & OUTPUT) { + if(pin > 33){ + //unlock gpio + return;//pins above 33 can be only inputs + } else if(pin < 32) { + GPIO.enable_w1ts = ((uint32_t)1 << pin); + } else { + GPIO.enable1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } + + if(mode & PULLUP) { + pinFunction |= FUN_PU; + } else if(mode & PULLDOWN) { + pinFunction |= FUN_PD; + } + + pinFunction |= ((uint32_t)2 << FUN_DRV_S);//what are the drivers? + pinFunction |= FUN_IE;//input enable but required for output as well? + + if(mode & (INPUT | OUTPUT)) { + pinFunction |= ((uint32_t)2 << MCU_SEL_S); + } else if(mode == SPECIAL) { + pinFunction |= ((uint32_t)(((pin)==1||(pin)==3)?0:1) << MCU_SEL_S); + } else { + pinFunction |= ((uint32_t)(mode >> 5) << MCU_SEL_S); + } + + ESP_REG(DR_REG_IO_MUX_BASE + esp32_gpioMux[pin].reg) = pinFunction; + + if(mode & OPEN_DRAIN) { + pinControl = (1 << GPIO_PIN0_PAD_DRIVER_S); + } + + GPIO.pin[pin].val = pinControl; + //unlock gpio +} + +extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) +{ + if(val) { + if(pin < 32) { + GPIO.out_w1ts = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32)); + } + } else { + if(pin < 32) { + GPIO.out_w1tc = ((uint32_t)1 << pin); + } else if(pin < 34) { + GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32)); + } + } +} + +extern int IRAM_ATTR __digitalRead(uint8_t pin) +{ + if(pin < 32) { + return (GPIO.in >> pin) & 0x1; + } else if(pin < 40) { + return (GPIO.in1.val >> (pin - 32)) & 0x1; + } + return 0; +} + +static intr_handle_t gpio_intr_handle = NULL; + +static void IRAM_ATTR __onPinInterrupt() +{ + uint32_t gpio_intr_status_l=0; + uint32_t gpio_intr_status_h=0; + + gpio_intr_status_l = GPIO.status; + gpio_intr_status_h = GPIO.status1.val; + GPIO.status_w1tc = gpio_intr_status_l;//Clear intr for gpio0-gpio31 + GPIO.status1_w1tc.val = gpio_intr_status_h;//Clear intr for gpio32-39 + + uint8_t pin=0; + if(gpio_intr_status_l) { + do { + if(gpio_intr_status_l & ((uint32_t)1 << pin)) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin<32); + } + if(gpio_intr_status_h) { + pin=32; + do { + if(gpio_intr_status_h & ((uint32_t)1 << (pin - 32))) { + if(__pinInterruptHandlers[pin].fn) { + if(__pinInterruptHandlers[pin].arg){ + ((voidFuncPtrArg)__pinInterruptHandlers[pin].fn)(__pinInterruptHandlers[pin].arg); + } else { + __pinInterruptHandlers[pin].fn(); + } + } + } + } while(++pin +//#include "esp32-hal.h" +#define NOP() asm volatile ("nop") + + +//Undocumented!!! Get chip temperature in Farenheit +//Source: https://github.com/pcbreflux/espressif/blob/master/esp32/arduino/sketchbook/ESP32_int_temp_sensor/ESP32_int_temp_sensor.ino +uint8_t temprature_sens_read(); + +float temperatureRead() { + return (temprature_sens_read() - 32) / 1.8; +} + +void yield() { + vPortYield(); +} + +unsigned long IRAM_ATTR micros() { + return (unsigned long) esp_timer_get_time(); +} + +unsigned long IRAM_ATTR millis() { + return (unsigned long) (esp_timer_get_time() / 1000); +} + +void delay(uint32_t ms) { + vTaskDelay(ms / portTICK_PERIOD_MS); +} + +void IRAM_ATTR delayMicroseconds(uint32_t us) { + uint32_t m = micros(); + if (us) { + uint32_t e = (m + us); + if (m > e) { //overflow + while (micros() > e) { + NOP(); + } + } + while (micros() < e) { + NOP(); + } + } +} + +void initVariant() __attribute__((weak)); + +void initVariant() {} + +void init() __attribute__((weak)); + +void init() {} +// +//#ifdef CONFIG_BT_ENABLED +////overwritten in esp32-hal-bt.c +//bool btInUse() __attribute__((weak)); +//bool btInUse(){ return false; } +//#endif +// +//void initArduino() +//{ +//#if CONFIG_SPIRAM_SUPPORT +// psramInit(); +//#endif +// esp_log_level_set("*", CONFIG_LOG_DEFAULT_LEVEL); +// esp_err_t err = nvs_flash_init(); +// if(err == ESP_ERR_NVS_NO_FREE_PAGES){ +// const esp_partition_t* partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS, NULL); +// if (partition != NULL) { +// err = esp_partition_erase_range(partition, 0, partition->size); +// if(!err){ +// err = nvs_flash_init(); +// } else { +// log_e("Failed to format the broken NVS partition!"); +// } +// } +// } +// if(err) { +// log_e("Failed to initialize NVS! Error: %u", err); +// } +//#ifdef CONFIG_BT_ENABLED +// if(!btInUse()){ +// esp_bt_controller_mem_release(ESP_BT_MODE_BTDM); +// } +//#endif +// init(); +// initVariant(); +//} +// +////used by hal log +//const char * IRAM_ATTR pathToFileName(const char * path) +//{ +// size_t i = 0; +// size_t pos = 0; +// char * p = (char *)path; +// while(*p){ +// i++; +// if(*p == '/' || *p == '\\'){ +// pos = i; +// } +// p++; +// } +// return path+pos; +//} +// + diff --git a/brain/sw/components/led-renderer/include/Arduino.h b/brain/sw/components/led-renderer/include/Arduino.h new file mode 100644 index 0000000000..7f3b929100 --- /dev/null +++ b/brain/sw/components/led-renderer/include/Arduino.h @@ -0,0 +1,61 @@ +// +// Created by Tom Seago on 2019-06-07. +// + +#ifndef BRAIN_ARDUINO_H +#define BRAIN_ARDUINO_H + +// Fake out the Arduino includes... + +// For things like uint8_t +#include + +// For size_t and mem functions +#include + +// For the C++ String + +#include +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 + + +////////// +// A little spray and pray +#include +// #include +#include +#include +#include +#include +// #include +#include + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +//#include "esp32-hal.h" +//#include "esp8266-compat.h" +#include "soc/gpio_reg.h" + +//#include "stdlib_noniso.h" +//#include "binary.h" + +//uint8_t pgm_read_byte(const uint8_t *pAddr); +//uint32_t pgm_read_dword(const uint32_t *pAddr); +#include "pgmspace.h" +#include "esp32-hal.h" + + + // For pointers +//typedef uint8_t * PGM_P; + +////// +// From esp32-hal.h and friends +#ifndef F_CPU +#define F_CPU (CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ * 1000000U) +#endif + + +#endif //BRAIN_ARDUINO_H diff --git a/brain/sw/components/led-renderer/include/esp32-hal-gpio.h b/brain/sw/components/led-renderer/include/esp32-hal-gpio.h new file mode 100644 index 0000000000..977bfe8f5e --- /dev/null +++ b/brain/sw/components/led-renderer/include/esp32-hal-gpio.h @@ -0,0 +1,89 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef MAIN_ESP32_HAL_GPIO_H_ +#define MAIN_ESP32_HAL_GPIO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "esp32-hal.h" + +#define LOW 0x0 +#define HIGH 0x1 + +//GPIO FUNCTIONS +#define INPUT 0x01 +#define OUTPUT 0x02 +#define PULLUP 0x04 +#define INPUT_PULLUP 0x05 +#define PULLDOWN 0x08 +#define INPUT_PULLDOWN 0x09 +#define OPEN_DRAIN 0x10 +#define OUTPUT_OPEN_DRAIN 0x12 +#define SPECIAL 0xF0 +#define FUNCTION_1 0x00 +#define FUNCTION_2 0x20 +#define FUNCTION_3 0x40 +#define FUNCTION_4 0x60 +#define FUNCTION_5 0x80 +#define FUNCTION_6 0xA0 +#define ANALOG 0xC0 + +//Interrupt Modes +#define DISABLED 0x00 +#define RISING 0x01 +#define FALLING 0x02 +#define CHANGE 0x03 +#define ONLOW 0x04 +#define ONHIGH 0x05 +#define ONLOW_WE 0x0C +#define ONHIGH_WE 0x0D + +typedef struct { + uint8_t reg; /*!< GPIO register offset from DR_REG_IO_MUX_BASE */ + int8_t rtc; /*!< RTC GPIO number (-1 if not RTC GPIO pin) */ + int8_t adc; /*!< ADC Channel number (-1 if not ADC pin) */ + int8_t touch; /*!< Touch Channel number (-1 if not Touch pin) */ +} esp32_gpioMux_t; + +extern const esp32_gpioMux_t esp32_gpioMux[40]; +extern const int8_t esp32_adc2gpio[20]; + +#define digitalPinIsValid(pin) ((pin) < 40 && esp32_gpioMux[(pin)].reg) +#define digitalPinCanOutput(pin) ((pin) < 34 && esp32_gpioMux[(pin)].reg) +#define digitalPinToRtcPin(pin) (((pin) < 40)?esp32_gpioMux[(pin)].rtc:-1) +#define digitalPinToAnalogChannel(pin) (((pin) < 40)?esp32_gpioMux[(pin)].adc:-1) +#define digitalPinToTouchChannel(pin) (((pin) < 40)?esp32_gpioMux[(pin)].touch:-1) +#define digitalPinToDacChannel(pin) (((pin) == 25)?0:((pin) == 26)?1:-1) + +void pinMode(uint8_t pin, uint8_t mode); +void digitalWrite(uint8_t pin, uint8_t val); +int digitalRead(uint8_t pin); + +void attachInterrupt(uint8_t pin, void (*)(void), int mode); +void attachInterruptArg(uint8_t pin, void (*)(void), void * arg, int mode); +void detachInterrupt(uint8_t pin); + +#ifdef __cplusplus +} +#endif + +#endif /* MAIN_ESP32_HAL_GPIO_H_ */ diff --git a/brain/sw/components/led-renderer/include/esp32-hal.h b/brain/sw/components/led-renderer/include/esp32-hal.h new file mode 100644 index 0000000000..b3d0648e71 --- /dev/null +++ b/brain/sw/components/led-renderer/include/esp32-hal.h @@ -0,0 +1,44 @@ +// +// Created by Tom Seago on 2019-06-07. +// + +#ifndef BRAIN_ESP32_HAL_H +#define BRAIN_ESP32_HAL_H + +#include "esp_log.h" + +#define log_v(format, ...) ESP_LOGV( "HAL", format, ##__VA_ARGS__ ) +#define log_d(format, ...) ESP_LOGD( "HAL", format, ##__VA_ARGS__ ) +#define log_i(format, ...) ESP_LOGI( "HAL", format, ##__VA_ARGS__ ) +#define log_w(format, ...) ESP_LOGW( "HAL", format, ##__VA_ARGS__ ) +#define log_e(format, ...) ESP_LOGE( "HAL", format, ##__VA_ARGS__ ) + +#ifdef __cplusplus +extern "C" { +#endif + +void yield(); + +//void pinMode(uint8_t pin, uint8_t mode); +//void digitalWrite(uint8_t pin, uint8_t val); +// +//#define INPUT 0 +//#define OUTPUT 1 +//#define LOW 0 +//#define HIGH 0 + +#define ESP_REG(addr) *((volatile uint32_t *)(addr)) +#define NOP() asm volatile ("nop") + +#define GPIO_PIN_COUNT 40 +#include "esp32-hal-gpio.h" + +uint32_t millis(); +uint32_t micros(); +void delay(uint32_t amt); + +#ifdef __cplusplus +} +#endif + +#endif //BRAIN_ESP32_HAL_H diff --git a/brain/sw/components/led-renderer/include/gamma.h b/brain/sw/components/led-renderer/include/gamma.h new file mode 100644 index 0000000000..8901208c48 --- /dev/null +++ b/brain/sw/components/led-renderer/include/gamma.h @@ -0,0 +1,61 @@ +#pragma once + +typedef struct GammaData { + uint8_t value; // The gamma-corrected value, rounded down. + uint8_t dither; // Bit-packed dithering data; for a 1-bit we add 1 to value on that frame. +} GammaData; + +class Gamma { +public: + static uint8_t CorrectNoDither(uint8_t value) { + return _table2_2[value].value; + } + + static uint8_t Correct(uint8_t value, uint32_t frameNumber, uint32_t pixelIndex) { + uint8_t baseValue = _table2_2[value].value; + uint8_t dither = _table2_2[value].dither; + uint8_t ditherOffset = (frameNumber + pixelIndex) % 8; + if (dither & (1u << ditherOffset)) + return baseValue + 1; + else + return baseValue; + } + +private: + static const GammaData _table2_2[256]; +}; + +const GammaData Gamma::_table2_2[] = { + {0,0b0},{0,0b0},{0,0b0},{0,0b0},{0,0b0},{0,0b0},{0,0b10000000},{0,0b10000000}, + {0,0b10000000},{0,0b10000000},{0,0b10001000},{0,0b10001000},{0,0b10001000},{0,0b10101000},{0,0b10101000},{0,0b10101010}, + {0,0b11101010},{0,0b11101010},{0,0b11101010},{0,0b11111110},{0,0b11111111},{1,0b0},{1,0b10000000},{1,0b10001000}, + {1,0b10101000},{1,0b10101010},{1,0b11101010},{1,0b11111110},{1,0b11111111},{2,0b10000000},{2,0b10001000},{2,0b10101010}, + {2,0b11101010},{2,0b11111110},{3,0b0},{3,0b10001000},{3,0b10101000},{3,0b11101010},{3,0b11111110},{4,0b10000000}, + {4,0b10101000},{4,0b11101010},{4,0b11111110},{5,0b10000000},{5,0b10101000},{5,0b11101010},{5,0b11111110},{6,0b10000000}, + {6,0b10101010},{6,0b11101010},{7,0b10000000},{7,0b10101000},{7,0b11101010},{8,0b0},{8,0b10101000},{8,0b11101010}, + {9,0b10000000},{9,0b10101010},{9,0b11101010},{10,0b10000000},{10,0b11101010},{10,0b11111111},{11,0b10101000},{11,0b11101010}, + {12,0b10000000},{12,0b11101010},{13,0b0},{13,0b10101010},{13,0b11111110},{14,0b10101000},{14,0b11111110},{15,0b10001000}, + {15,0b11101010},{16,0b10001000},{16,0b11101010},{17,0b10001000},{17,0b11101010},{18,0b10001000},{18,0b11111110},{19,0b10101000}, + {19,0b11111110},{20,0b10101010},{21,0b0},{21,0b11101010},{22,0b10000000},{22,0b11101010},{23,0b10101000},{23,0b11111111}, + {24,0b10101010},{25,0b10000000},{25,0b11101010},{26,0b10101000},{27,0b10000000},{27,0b11101010},{28,0b10101000},{29,0b0}, + {29,0b11101010},{30,0b10101000},{31,0b10000000},{31,0b11101010},{32,0b10101010},{33,0b10001000},{33,0b11111111},{34,0b11101010}, + {35,0b10101010},{36,0b10001000},{36,0b11111111},{37,0b11101010},{38,0b10101010},{39,0b10001000},{40,0b10000000},{40,0b11111110}, + {41,0b11101010},{42,0b10101010},{43,0b10101000},{44,0b10001000},{45,0b10000000},{45,0b11111110},{46,0b11101010},{47,0b11101010}, + {48,0b11101010},{49,0b10101010},{50,0b10101000},{51,0b10001000},{52,0b10001000},{53,0b10000000},{54,0b10000000},{55,0b0}, + {55,0b11111111},{56,0b11111111},{57,0b11111110},{58,0b11111110},{59,0b11111110},{60,0b11111110},{61,0b11111110},{62,0b11111110}, + {63,0b11111111},{65,0b0},{66,0b0},{67,0b10000000},{68,0b10000000},{69,0b10001000},{70,0b10101000},{71,0b10101000}, + {72,0b10101010},{73,0b11101010},{74,0b11101010},{75,0b11111110},{77,0b0},{78,0b10001000},{79,0b10101000},{80,0b10101010}, + {81,0b11101010},{82,0b11111110},{84,0b10000000},{85,0b10001000},{86,0b10101010},{87,0b11101010},{88,0b11111111},{90,0b10001000}, + {91,0b10101010},{92,0b11101010},{93,0b11111111},{95,0b10001000},{96,0b10101010},{97,0b11111110},{99,0b10000000},{100,0b10101010}, + {101,0b11111110},{103,0b10000000},{104,0b10101010},{105,0b11111110},{107,0b10001000},{108,0b11101010},{109,0b11111111},{111,0b10101000}, + {112,0b11101010},{114,0b10001000},{115,0b11101010},{117,0b10000000},{118,0b10101010},{119,0b11111111},{121,0b10101000},{122,0b11111110}, + {124,0b10101000},{125,0b11111110},{127,0b10101000},{128,0b11111110},{130,0b10101000},{131,0b11111110},{133,0b10101010},{135,0b0}, + {136,0b11101010},{138,0b10000000},{139,0b11101010},{141,0b10101000},{142,0b11111110},{144,0b10101010},{146,0b10000000},{147,0b11101010}, + {149,0b10101000},{151,0b10000000},{152,0b11101010},{154,0b10101000},{156,0b10000000},{157,0b11101010},{159,0b10101010},{161,0b10000000}, + {162,0b11111110},{164,0b11101010},{166,0b10101000},{168,0b10000000},{169,0b11111110},{171,0b11101010},{173,0b10101000},{175,0b10001000}, + {176,0b11111111},{178,0b11101010},{180,0b11101010},{182,0b10101010},{184,0b10001000},{186,0b10000000},{187,0b11111111},{189,0b11111110}, + {191,0b11101010},{193,0b11101010},{195,0b10101010},{197,0b10101000},{199,0b10101000},{201,0b10001000},{203,0b10001000},{205,0b10000000}, + {207,0b10000000},{209,0b10000000},{211,0b10000000},{213,0b0},{215,0b0},{217,0b10000000},{219,0b10000000},{221,0b10000000}, + {223,0b10000000},{225,0b10001000},{227,0b10001000},{229,0b10101000},{231,0b10101000},{233,0b10101010},{235,0b11101010},{237,0b11101010}, + {239,0b11111110},{241,0b11111111},{244,0b10000000},{246,0b10001000},{248,0b10101010},{250,0b11101010},{252,0b11101010},{255,0b0} +}; diff --git a/brain/sw/components/led-renderer/include/led-renderer.h b/brain/sw/components/led-renderer/include/led-renderer.h new file mode 100644 index 0000000000..25f061a40b --- /dev/null +++ b/brain/sw/components/led-renderer/include/led-renderer.h @@ -0,0 +1,105 @@ + +// We need this not really ported to plain IDF library +// so we pretend that we are in the arduino world +#define ARDUINO_ARCH_ESP32 +#include "NeoPixelBus.h" + +#include "brain_common.h" +#include "freertos/semphr.h" + +#include "time-base.h" +#include "esp_log.h" + +#include "led-shader.h" + + +class LEDShaderFiller : public LEDShader { +public: + LEDShaderFiller() : + m_pos(0), + m_colorPrimary(255, 255, 0), + m_colorSecondary(0, 255, 255) + { } + + void beginShade(LEDShaderContext* pCtx) override { + m_pCtx = pCtx; + + // m_pos = m_timeBase.posInInterval(m_timeBase.currentTime(), m_timeBase.duration(4), m_numPixels + 1); + // ESP_LOGI("#filler", "Render begin, m_pos=%d", m_pos); +// m_pos++; +// if (m_pos >= pCtx->numPixels) { +// m_pos = 0; +// } + m_pos = pCtx->progress * pCtx->numPixels; + } + + void Apply(uint16_t indexPixel, uint8_t *color, uint8_t *currentColor) override { + if (indexPixel < m_pos) { + memcpy((void*)color, (void*)&m_colorPrimary, 3); + } else { + memcpy((void*)color, (void*)&m_colorSecondary, 3); + } + // ESP_LOGI("#filler", "%d = %d %d %d", indexPixel, color[0], color[1], color[2]); + } + + void endShade() override { + + } + +private: + LEDShaderContext* m_pCtx; + uint16_t m_pos; + + RgbColor m_colorPrimary; + RgbColor m_colorSecondary; +}; + +class LEDRenderer { +public: + LEDRenderer(TimeBase& timeBase, uint16_t pixelCount); + + void start(TaskDef show, TaskDef render); + void stop() { m_timeToDie = true; } +// /** +// * This task does not depend on network events to render. It should NOT +// * be used if the network is going to be driving the rendering. +// */ +// void startLocalRenderTask(); + + void setShader(LEDShader* shader) { m_shader = shader; } + void render(); + + void enableLocalRenderLoop(bool enable) { m_localRenderEnabled = enable; } + + void setBrightness(uint8_t brightness) { m_nBrightness = brightness; } + uint16_t getNumPixels() { return m_pixels.PixelCount(); } + + /** + * Private function to be called only be a the local glue function + */ + void _showTask(); + + /** + * Private function to be called only be a the local glue function + */ + void _renderTask(); + + void logPixels(); + +private: + bool m_timeToDie = false; + + uint8_t m_nBrightness; + bool m_localRenderEnabled = true; + + NeoPixelBus m_pixels; + NeoBuffer> m_buffer; + + SemaphoreHandle_t m_hPixelsAccess; + LEDShader* m_shader; + + LEDShaderContext m_context; + TimeBase& m_timeBase; + + uint32_t m_frameNumber; +}; diff --git a/brain/sw/components/led-renderer/include/led-renderer_private.h b/brain/sw/components/led-renderer/include/led-renderer_private.h new file mode 100644 index 0000000000..13765bba8d --- /dev/null +++ b/brain/sw/components/led-renderer/include/led-renderer_private.h @@ -0,0 +1,13 @@ +// +// Created by Tom Seago on 2019-06-07. +// + +#pragma once + +#include +#include +#include +#include +#include + +#define TAG TAG_LEDREN diff --git a/brain/sw/components/led-renderer/include/led-shader.h b/brain/sw/components/led-renderer/include/led-shader.h new file mode 100644 index 0000000000..bb09cf3861 --- /dev/null +++ b/brain/sw/components/led-renderer/include/led-shader.h @@ -0,0 +1,40 @@ +// +// Created by Tom Seago on 2019-06-18. +// + +#pragma once + +#include "time-base.h" + +/** + * An LEDShaderContext pointer is passed to the current LEDShader at the beginning of + * the shading cycle. In particular it contains timing information about the frame that + * is currently being rendered. Shaders should not themselves be inspecting the system + * time, but need to use the information passed in via the shader context so that the + * underlying infrastructure can do things like predictively calculate future frames + * if it so desires. + */ +struct LEDShaderContext { + uint16_t numPixels; + float progress; + braintime_t now; +}; + +/** + * An instance of LEDShader is what drives the output to the pixel buffer. + * At the start of frame rendering Begin() will be called. This will be + * followed by several calls to Apply(...) during which the LEDShader is + * responsible for generating the output color for a given pixel. After + * that End() is called to complete the rendering cycle for a single frame. + * + * This algorithm could potentially be optimized to avoid the "function call + * per pixel" cost, but let's wait and see if that makes sense or not. + * Conceptually this more granular approach might let us even run across + * both cores though, so let's keep this as long as we can. + */ +class LEDShader { +public: + virtual void beginShade(LEDShaderContext* pCtx) = 0; + virtual void Apply(uint16_t indexPixel, uint8_t *color, uint8_t *currentColor) = 0; + virtual void endShade() = 0; +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/include/pgmspace.h b/brain/sw/components/led-renderer/include/pgmspace.h new file mode 100644 index 0000000000..c4414a53fb --- /dev/null +++ b/brain/sw/components/led-renderer/include/pgmspace.h @@ -0,0 +1,88 @@ +/* + Copyright (c) 2015 Hristo Gochkov. All rights reserved. + This file is part of the RaspberryPi core for Arduino environment. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#ifndef PGMSPACE_INCLUDE +#define PGMSPACE_INCLUDE + +typedef void prog_void; +typedef char prog_char; +typedef unsigned char prog_uchar; +typedef char prog_int8_t; +typedef unsigned char prog_uint8_t; +typedef short prog_int16_t; +typedef unsigned short prog_uint16_t; +typedef long prog_int32_t; +typedef unsigned long prog_uint32_t; + +#define PROGMEM +#define PGM_P const char * +#define PGM_VOID_P const void * +#define FPSTR(p) ((const char *)(p)) +#define PSTR(s) (s) +#define _SFR_BYTE(n) (n) + +#define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#define pgm_read_word(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const unsigned short *)(_addr); \ +}) +#define pgm_read_dword(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const unsigned long *)(_addr); \ +}) +#define pgm_read_float(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(const float *)(_addr); \ +}) +#define pgm_read_ptr(addr) ({ \ + typeof(addr) _addr = (addr); \ + *(void * const *)(_addr); \ +}) + +#define pgm_read_byte_near(addr) pgm_read_byte(addr) +#define pgm_read_word_near(addr) pgm_read_word(addr) +#define pgm_read_dword_near(addr) pgm_read_dword(addr) +#define pgm_read_float_near(addr) pgm_read_float(addr) +#define pgm_read_ptr_near(addr) pgm_read_ptr(addr) +#define pgm_read_byte_far(addr) pgm_read_byte(addr) +#define pgm_read_word_far(addr) pgm_read_word(addr) +#define pgm_read_dword_far(addr) pgm_read_dword(addr) +#define pgm_read_float_far(addr) pgm_read_float(addr) +#define pgm_read_ptr_far(addr) pgm_read_ptr(addr) + +#define memcmp_P memcmp +#define memccpy_P memccpy +#define memmem_P memmem +#define memcpy_P memcpy +#define strcpy_P strcpy +#define strncpy_P strncpy +#define strcat_P strcat +#define strncat_P strncat +#define strcmp_P strcmp +#define strncmp_P strncmp +#define strcasecmp_P strcasecmp +#define strncasecmp_P strncasecmp +#define strlen_P strlen +#define strnlen_P strnlen +#define strstr_P strstr +#define printf_P printf +#define sprintf_P sprintf +#define snprintf_P snprintf +#define vsnprintf_P vsnprintf + +#endif diff --git a/brain/sw/components/led-renderer/include/time-base.h b/brain/sw/components/led-renderer/include/time-base.h new file mode 100644 index 0000000000..be56abe286 --- /dev/null +++ b/brain/sw/components/led-renderer/include/time-base.h @@ -0,0 +1,100 @@ +// +// Created by Tom Seago on 2019-06-08. +// + +#pragma once + +#include +#include +#include + +typedef struct timeval timeval; + +/** + * We're going to define the type braintime_t to be the number of microseconds since + * June 1, 2019 UTC. This way we can do simpler calculations at a pretty high resolution + * without complexity. Does this mean that you can't use the firmware in some number + * of years - sure. Do I care? Nope. Not at all. + */ +typedef int32_t braintime_t; + +#define BRAIN_TIME_EPOCH_SEC 1559347200 + +#define USEC_IN_SEC 1000000 + +class TimeBase { +public: + void setFPS(uint16_t fps) { + m_fps = fps; + m_frameDuration = USEC_IN_SEC / (braintime_t)m_fps; + } + + void setDuration(braintime_t duration) { + m_fps = USEC_IN_SEC / duration; + m_frameDuration = duration; + } + + uint16_t getFPS() { return m_fps; } + + braintime_t getFrameDuration() { return m_frameDuration; } + + braintime_t currentTime() { + timeval tv; + gettimeofday(&tv, nullptr); + + braintime_t out; + if (tv.tv_sec > BRAIN_TIME_EPOCH_SEC) { + // If we have a synced clock (probably via SNTP) then remove + // the epoch time + out = (tv.tv_sec - BRAIN_TIME_EPOCH_SEC) * USEC_IN_SEC; + } else { + // If we don't have a synced clock, assume the clock began at the epoch + out = tv.tv_sec * USEC_IN_SEC; + } + + out += tv.tv_usec; + + return out; + } + + TickType_t ticksToNextFrame() { + braintime_t now = currentTime(); + return toTicks(nextFrameFrom(now) - now); + } + + braintime_t nextFrameFrom(braintime_t now) { + return ((now / m_frameDuration) + 1) * m_frameDuration; + } + + TickType_t toTicks(braintime_t t) { return t * xPortGetTickRateHz() / USEC_IN_SEC; } + + /** + * Do integer math to find the location in an interval, such as how far along a count of + * leds the given time represents. + * + * @param at + * @param duration + * @param intervalSize + * @return + */ + uint16_t posInInterval(braintime_t at, braintime_t duration, uint16_t intervalSize) { + return ((at % duration) * intervalSize) / duration; + } + + /** + * Return an braintime_t representing the given duration specified in more convenient + * units. Handy for use with `posInInterval` for example. + * + * @param seconds + * @param millis + * @param usec + * @return + */ + braintime_t duration(braintime_t seconds, braintime_t millis = 0, braintime_t usec = 0) { + return (seconds * USEC_IN_SEC) + (millis * 1000) + usec; + } + +private: + uint16_t m_fps = BRAIN_DEFAULT_FPS; + braintime_t m_frameDuration = (USEC_IN_SEC / (braintime_t)BRAIN_DEFAULT_FPS); +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/led-renderer.cpp b/brain/sw/components/led-renderer/led-renderer.cpp new file mode 100644 index 0000000000..5d2b458a85 --- /dev/null +++ b/brain/sw/components/led-renderer/led-renderer.cpp @@ -0,0 +1,251 @@ +#include "led-renderer.h" +#include "gamma.h" + +#include "sysmon.h" + +#include "led-renderer_private.h" +#include +#include + +LEDRenderer::LEDRenderer(TimeBase& timeBase, uint16_t pixelCount) : + m_pixels(pixelCount, BRAIN_GPIO_PIXEL_CH1), + m_buffer(pixelCount, 1, nullptr), + m_timeBase(timeBase) +{ + // Start with an empty buffer + m_buffer.ClearTo(BRAIN_POWER_ON_COLOR); + + m_pixels.Begin(); + + m_nBrightness = BRAIN_DEFAULT_BRIGHTNESS; +} + +void static glue_showTask(void* pvParameters) { + ((LEDRenderer*)pvParameters)->_showTask(); +} + +void static glue_renderTask(void* pvParameters) { + ((LEDRenderer*)pvParameters)->_renderTask(); +} + + +void +LEDRenderer::start(TaskDef show, TaskDef render) { + TaskHandle_t tHandle = nullptr; + BaseType_t tcResult; + + ESP_LOGI(TAG, "Starting ledren task..."); + + // Create our frame blt lock + m_hPixelsAccess = xSemaphoreCreateBinary(); + if (!m_hPixelsAccess) { + ESP_LOGE(TAG, "ERROR: Unable to alloocate the m_hPixelsAccess semaphore"); + return; + } + // Must always give to begin with. + xSemaphoreGive(m_hPixelsAccess); + + ////////////////////////////////////////// + // The show task + tcResult = show.createTask(glue_showTask, this, &tHandle); + + if (tcResult != pdPASS) { + ESP_LOGE(TAG, "Failed to create led show task = %d", tcResult); + } else { + ESP_LOGI(TAG, "LED show task started"); + } + + ////////////////////////////////////////// + // The render task + tcResult = render.createTask(glue_renderTask, this, &tHandle); + + if (tcResult != pdPASS) { + ESP_LOGE(TAG, "Failed to create led render task = %d", tcResult); + } else { + ESP_LOGI(TAG, "LED render task started"); + } +} + +//void +//LEDRenderer::startLocalRenderTask() { +// TaskHandle_t tHandle = nullptr; +// BaseType_t tcResult; +// +// ESP_LOGI(TAG, "Starting local render task..."); +// +// tcResult = xTaskCreate(task_local_render, "ledren-local", TASK_LEDREN_STACK_SIZE, +// this, TASK_LEDREN_PRIORITY, &tHandle); +// +// if (tcResult != pdPASS) { +// ESP_LOGE(TAG, "Failed to create local render task = %d", tcResult); +// } else { +// ESP_LOGI(TAG, "LED local render task started"); +// } +// +//} + +/** + * The job of the show task is to periodically blit the pixel data from the internal + * buffer out to the output strand. The frequency of this is determined by the + * m_timeBase component and in general should be fairly stable. The only thing that will + * interrupt it is if it's time to blit, but rendering of the current frame is in + * progress. In this case this task will block until the completion of the render + * task. + */ +void +LEDRenderer::_showTask() { + while(!m_timeToDie) { + TickType_t toDelay = m_timeBase.ticksToNextFrame(); + if (!toDelay) { + // We presumably _JUST_ did this frame, so delay by 1 tick + // and try again + // ESP_LOGE(TAG, "Delaying Show only 1 to advance to next frame"); + + // TODO: Change this to a yield loop because 1 tick is 10ms which may be + // way longer than we really want to be delaying... + vTaskDelay(1); + continue; + } + // ESP_LOGE(TAG, "Delaying Show for %d", toDelay); + vTaskDelay(toDelay); + + + // ESP_LOGI(TAG, "Getting pixel access to show"); + if (xSemaphoreTake(m_hPixelsAccess, portMAX_DELAY) != pdTRUE) { + // Aack! + continue; + } + + // Show waits for any pending DMA to finish, copies the values from the + // pixel buffer into the DMA buffer, and then starts a new DMA + // ESP_LOGI(TAG, "Show!"); + gSysMon.endTiming(TIMING_SHOW_OUTPUTS); + gSysMon.startTiming(TIMING_SHOW_OUTPUTS); + m_pixels.Show(); + + xSemaphoreGive(m_hPixelsAccess); + } + + // Just in case we ever exit, we're supposed to do this + ESP_LOGE(TAG, "LEDRenderer::_showTask exiting"); + vTaskDelete(nullptr); +} + +void +LEDRenderer::render() { + + gSysMon.startTiming(TIMING_RENDER); + + // Not that this should change, but maybe??? + m_context.numPixels = m_buffer.PixelCount(); + + // The current time, which probably shouldn't be used in favor of .progress but still, be nice + m_context.now = m_timeBase.currentTime(); + + // Render into all the pixels + if (m_shader) { + // The NeoBuffer concept of a renderer allows a buffer to be filtered + // through the shader function to end up in a different destination + // buffer. Thus we could be a whole tree out of these to match our + // shader concept, but it means each shader would have it's own + // buffer that is the full size of the output - something we can avoid + // by using our own functional approach to shaders where we loop + // through a tree structure to calculate each output value + + // Rather than forcing the shader to detect the beginning by indexPixel == 0 + const uint16_t INTERVAL_BASE = 1000; + uint16_t intPos = m_timeBase.posInInterval(m_timeBase.currentTime()/1000, 1 * USEC_IN_SEC/1000, INTERVAL_BASE); + m_context.progress = ((float)intPos) / (float)INTERVAL_BASE; + + m_shader->beginShade(&m_context); + // ESP_LOGI(TAG, "time=%d, intPos = %d progress=%f", m_timeBase.currentTime(), intPos, progress); + + m_buffer.Render(m_buffer, *m_shader); + + // We used to implement brightness by calling Render a second time on the same buffer. + // However, that is inefficient because if you are using a non-RGB color feature you would + // have to un-apply the feature since Rendering automatically applies it back. That's a waste + // so we do this more efficient thing instead. + if (m_nBrightness != 255) { + NeoBufferContext context = m_buffer; + uint8_t* pCursor = context.Pixels; + uint8_t* pEnd = pCursor + context.SizePixels; + while(pCursor != pEnd) { + uint16_t value = *pCursor; + *(pCursor++) = (value * m_nBrightness) >> 8; + } + } + + // Apply gamma correction. + { + NeoBufferContext buf = m_buffer; + uint8_t *pCursor = buf.Pixels; + uint8_t *pEnd = pCursor + buf.SizePixels; + uint32_t pixelIndex = 0; + while (pCursor != pEnd) { + for (int i = 0; i < BRAIN_NEO_COLORFEATURE::PixelSize; i++) { + uint8_t corrected = Gamma::Correct(*pCursor, m_frameNumber, pixelIndex); + *(pCursor++) = corrected; + } + pixelIndex++; + } + } + + m_shader->endShade(); + + m_frameNumber++; + } else { + ESP_LOGE(TAG, "Nothing to render!!!!"); + } + + gSysMon.endTiming(TIMING_RENDER); + + // Don't want to block a rendering task in case the blitter task has gone upside down + // ESP_LOGI(TAG, "Getting pixel access to blt"); + if (xSemaphoreTake(m_hPixelsAccess, pdMS_TO_TICKS(500)) != pdTRUE) { + ESP_LOGE(TAG, "Failed to get pixel access semaphore in render."); + return; + } + + // ESP_LOGI(TAG, "Doing Blt"); + m_buffer.Blt(m_pixels, 0); + // logPixels(); + xSemaphoreGive(m_hPixelsAccess); +} + +/** + * The render task will periodically call the render function in order to render a new + * frame of pixel values. In a scenario where renders are to be driven solely by the network, + * a different approach would be used where this task wouldn't be invoked. + * + * As things stand at the moment, the ShadeTree component holds on to the last shader message + * from the network until a new one is received. That "last" shader message might get + * used to render multiple frames. + */ +void +LEDRenderer::_renderTask() { + while(!m_timeToDie) { + // Render a frame + if (m_localRenderEnabled) { + render(); + } + // Could we stop this task? Yes. However, it's easier to leave it running and only consuming + // a tiny amount of resources. + + // Delay until 1/4 frame duration into the next frame + TickType_t toDelay = m_timeBase.ticksToNextFrame() + + m_timeBase.toTicks(m_timeBase.getFrameDuration() / 4); + // ESP_LOGW(TAG, "Rendered a frame. toDelay=%d", toDelay); + vTaskDelay(toDelay); + } + + // Just in case we ever exit, we're supposed to do this + ESP_LOGE(TAG, "LEDRenderer::_renderTask exiting"); + vTaskDelete(nullptr); +} + +void +LEDRenderer::logPixels() { + ESP_LOG_BUFFER_HEXDUMP(TAG, m_pixels.Pixels(), 6, ESP_LOG_INFO); + // ESP_LOG_BUFFER_HEXDUMP(TAG, m_pixels.Pixels(), m_pixels.PixelsSize(), ESP_LOG_INFO); +} \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/NeoPixelAnimator.h b/brain/sw/components/led-renderer/neopixel/NeoPixelAnimator.h new file mode 100644 index 0000000000..c49d9ec485 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/NeoPixelAnimator.h @@ -0,0 +1,181 @@ +/*------------------------------------------------------------------------- +NeoPixelAnimator provides animation timing support. + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#include +#include "internal/NeoEase.h" + +enum AnimationState +{ + AnimationState_Started, + AnimationState_Progress, + AnimationState_Completed +}; + +struct AnimationParam +{ + float progress; + uint16_t index; + AnimationState state; +}; + +#ifdef ARDUINO_ARCH_AVR + +typedef void(*AnimUpdateCallback)(const AnimationParam& param); + +#else + +#undef max +#undef min +#include +typedef std::function AnimUpdateCallback; + +#endif + + +#define NEO_MILLISECONDS 1 // ~65 seconds max duration, ms updates +#define NEO_CENTISECONDS 10 // ~10.9 minutes max duration, centisecond updates +#define NEO_DECISECONDS 100 // ~1.8 hours max duration, decisecond updates +#define NEO_SECONDS 1000 // ~18.2 hours max duration, second updates +#define NEO_DECASECONDS 10000 // ~7.5 days, 10 second updates + +class NeoPixelAnimator +{ +public: + NeoPixelAnimator(uint16_t countAnimations, uint16_t timeScale = NEO_MILLISECONDS); + ~NeoPixelAnimator(); + + bool IsAnimating() const + { + return _activeAnimations > 0; + } + + + bool NextAvailableAnimation(uint16_t* indexAvailable, uint16_t indexStart = 0); + + void StartAnimation(uint16_t indexAnimation, uint16_t duration, AnimUpdateCallback animUpdate); + void StopAnimation(uint16_t indexAnimation); + void StopAll(); + + void RestartAnimation(uint16_t indexAnimation) + { + if (indexAnimation >= _countAnimations || _animations[indexAnimation]._duration == 0) + { + return; + } + + StartAnimation(indexAnimation, _animations[indexAnimation]._duration, (_animations[indexAnimation]._fnCallback)); + } + + bool IsAnimationActive(uint16_t indexAnimation) const + { + if (indexAnimation >= _countAnimations) + { + return false; + } + return (IsAnimating() && _animations[indexAnimation]._remaining != 0); + } + + uint16_t AnimationDuration(uint16_t indexAnimation) + { + if (indexAnimation >= _countAnimations) + { + return 0; + } + return _animations[indexAnimation]._duration; + } + + void ChangeAnimationDuration(uint16_t indexAnimation, uint16_t newDuration); + + void UpdateAnimations(); + + bool IsPaused() + { + return (!_isRunning); + } + + void Pause() + { + _isRunning = false; + } + + void Resume() + { + _isRunning = true; + _animationLastTick = millis(); + } + + uint16_t getTimeScale() + { + return _timeScale; + } + + void setTimeScale(uint16_t timeScale) + { + _timeScale = (timeScale < 1) ? (1) : (timeScale > 32768) ? 32768 : timeScale; + } + +private: + struct AnimationContext + { + AnimationContext() : + _duration(0), + _remaining(0), + _fnCallback(NULL) + {} + + void StartAnimation(uint16_t duration, AnimUpdateCallback animUpdate) + { + _duration = duration; + _remaining = duration; + _fnCallback = animUpdate; + + } + + void StopAnimation() + { + _remaining = 0; + } + + float CurrentProgress() + { + return (float)(_duration - _remaining) / (float)_duration; + } + + uint16_t _duration; + uint16_t _remaining; + + AnimUpdateCallback _fnCallback; + }; + + uint16_t _countAnimations; + AnimationContext* _animations; + uint32_t _animationLastTick; + uint16_t _activeAnimations; + uint16_t _timeScale; + bool _isRunning; +}; diff --git a/brain/sw/components/led-renderer/neopixel/NeoPixelBrightnessBus.h b/brain/sw/components/led-renderer/neopixel/NeoPixelBrightnessBus.h new file mode 100644 index 0000000000..0ff1d52211 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/NeoPixelBrightnessBus.h @@ -0,0 +1,161 @@ +/*------------------------------------------------------------------------- +NeoPixelBus library wrapper template class that provides overall brightness control + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#include "NeoPixelBus.h" + +template class NeoPixelBrightnessBus : + public NeoPixelBus +{ +private: + void ConvertColor(typename T_COLOR_FEATURE::ColorObject* color) + { + if (_brightness) + { + uint8_t* ptr = (uint8_t*) color; + uint8_t* ptrEnd = ptr + T_COLOR_FEATURE::PixelSize; + + while (ptr != ptrEnd) + { + uint16_t value = *ptr; + *ptr++ = (value * _brightness) >> 8; + } + } + } + + void RecoverColor(typename T_COLOR_FEATURE::ColorObject* color) const + { + if (_brightness) + { + uint8_t* ptr = (uint8_t*) color; + uint8_t* ptrEnd = ptr + T_COLOR_FEATURE::PixelSize; + + while (ptr != ptrEnd) + { + uint16_t value = *ptr; + *ptr++ = (value << 8) / _brightness; + } + } + } + +public: + NeoPixelBrightnessBus(uint16_t countPixels, uint8_t pin) : + NeoPixelBus(countPixels, pin), + _brightness(0) + { + } + + NeoPixelBrightnessBus(uint16_t countPixels, uint8_t pinClock, uint8_t pinData) : + NeoPixelBus(countPixels, pinClock, pinData), + _brightness(0) + { + } + + NeoPixelBrightnessBus(uint16_t countPixels) : + NeoPixelBus(countPixels), + _brightness(0) + { + } + + void SetBrightness(uint8_t brightness) + { + // Due to using fixed point math, we modifiy the brightness + // before storing making the math faster + uint8_t newBrightness = brightness + 1; + + // Only update if there is a change + if (newBrightness != _brightness) + { + // calculate a scale to modify from old brightness to new brightness + // + uint8_t oldBrightness = _brightness - 1; // unmodify brightness value + uint16_t scale; + + if (oldBrightness == 0) + { + scale = 0; // Avoid divide by 0 + } + else if (brightness == 255) + { + scale = 65535 / oldBrightness; + } + else + { + scale = (((uint16_t)newBrightness << 8) - 1) / oldBrightness; + } + + // re-scale existing pixels + // + uint8_t* ptr = this->Pixels(); + uint8_t* ptrEnd = ptr + this->PixelsSize(); + while (ptr != ptrEnd) + { + uint16_t value = *ptr; + *ptr++ = (value * scale) >> 8; + } + + _brightness = newBrightness; + this->Dirty(); + } + } + + uint8_t GetBrightness() const + { + return _brightness - 1; + } + + void SetPixelColor(uint16_t indexPixel, typename T_COLOR_FEATURE::ColorObject color) + { + ConvertColor(&color); + NeoPixelBus::SetPixelColor(indexPixel, color); + } + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(uint16_t indexPixel) const + { + typename T_COLOR_FEATURE::ColorObject color = NeoPixelBus::GetPixelColor(indexPixel); + RecoverColor(&color); + return color; + } + + void ClearTo(typename T_COLOR_FEATURE::ColorObject color) + { + ConvertColor(&color); + NeoPixelBus::ClearTo(color); + }; + + void ClearTo(typename T_COLOR_FEATURE::ColorObject color, uint16_t first, uint16_t last) + { + ConvertColor(&color); + NeoPixelBus::ClearTo(color, first, last); + } + + +protected: + uint8_t _brightness; +}; + + diff --git a/brain/sw/components/led-renderer/neopixel/NeoPixelBus.h b/brain/sw/components/led-renderer/neopixel/NeoPixelBus.h new file mode 100644 index 0000000000..9d76407656 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/NeoPixelBus.h @@ -0,0 +1,410 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +#include + +// some platforms do not define this standard progmem type for some reason +// +#ifndef PGM_VOID_P +#define PGM_VOID_P const void * +#endif + +// '_state' flags for internal state +#define NEO_DIRTY 0x80 // a change was made to pixel data that requires a show + +#include "internal/NeoHueBlend.h" + +#include "internal/RgbColor.h" +#include "internal/HslColor.h" +#include "internal/HsbColor.h" +#include "internal/HtmlColor.h" +#include "internal/RgbwColor.h" + +#include "internal/NeoColorFeatures.h" +#include "internal/DotStarColorFeatures.h" + +#include "internal/Layouts.h" +#include "internal/NeoTopology.h" +#include "internal/NeoRingTopology.h" +#include "internal/NeoTiles.h" +#include "internal/NeoMosaic.h" + +#include "internal/NeoBufferContext.h" +#include "internal/NeoBufferMethods.h" +#include "internal/NeoBuffer.h" +#include "internal/NeoSpriteSheet.h" +#include "internal/NeoBitmapFile.h" +#include "internal/NeoDib.h" +#include "internal/NeoEase.h" +#include "internal/NeoGamma.h" + +#if defined(ARDUINO_ARCH_ESP8266) + +#include "internal/NeoEsp8266DmaMethod.h" +#include "internal/NeoEsp8266UartMethod.h" +#include "internal/NeoEspBitBangMethod.h" +#include "internal/DotStarGenericMethod.h" + +#elif defined(ARDUINO_ARCH_ESP32) + +#include "internal/NeoEsp32I2sMethod.h" +#include "internal/NeoEspBitBangMethod.h" +// TS: Because we just don't care +//#include "internal/DotStarGenericMethod.h" + +#elif defined(__arm__) // must be before ARDUINO_ARCH_AVR due to Teensy incorrectly having it set + +#include "internal/NeoArmMethod.h" +#include "internal/DotStarGenericMethod.h" + +#elif defined(ARDUINO_ARCH_AVR) + +#include "internal/NeoAvrMethod.h" +#include "internal/DotStarAvrMethod.h" + +#else +#error "Platform Currently Not Supported, please add an Issue at Github/Makuna/NeoPixelBus" +#endif + +// TS: Because it's not important +//#if !defined(__AVR_ATtiny85__) +//#include "internal/DotStarSpiMethod.h" +//#endif + + +template class NeoPixelBus +{ +public: + // Constructor: number of LEDs, pin number + // NOTE: Pin Number maybe ignored due to hardware limitations of the method. + + NeoPixelBus(uint16_t countPixels, uint8_t pin) : + _countPixels(countPixels), + _state(0), + _method(pin, countPixels, T_COLOR_FEATURE::PixelSize) + { + } + + NeoPixelBus(uint16_t countPixels, uint8_t pinClock, uint8_t pinData) : + _countPixels(countPixels), + _state(0), + _method(pinClock, pinData, countPixels, T_COLOR_FEATURE::PixelSize) + { + } + + NeoPixelBus(uint16_t countPixels) : + _countPixels(countPixels), + _state(0), + _method(countPixels, T_COLOR_FEATURE::PixelSize) + { + } + + ~NeoPixelBus() + { + } + + operator NeoBufferContext() + { + Dirty(); // we assume you are playing with bits + return NeoBufferContext(_method.getPixels(), _method.getPixelsSize()); + } + + void Begin() + { + _method.Initialize(); + Dirty(); + } + + void Show() + { + if (!IsDirty()) + { + return; + } + + _method.Update(); + + ResetDirty(); + } + + inline bool CanShow() const + { + return _method.IsReadyToUpdate(); + }; + + bool IsDirty() const + { + return (_state & NEO_DIRTY); + }; + + void Dirty() + { + _state |= NEO_DIRTY; + }; + + void ResetDirty() + { + _state &= ~NEO_DIRTY; + }; + + uint8_t* Pixels() + { + return _method.getPixels(); + }; + + size_t PixelsSize() const + { + return _method.getPixelsSize(); + }; + + size_t PixelSize() const + { + return T_COLOR_FEATURE::PixelSize; + }; + + uint16_t PixelCount() const + { + return _countPixels; + }; + + void SetPixelColor(uint16_t indexPixel, typename T_COLOR_FEATURE::ColorObject color) + { + if (indexPixel < _countPixels) + { + T_COLOR_FEATURE::applyPixelColor(_method.getPixels(), indexPixel, color); + Dirty(); + } + }; + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(uint16_t indexPixel) const + { + if (indexPixel < _countPixels) + { + return T_COLOR_FEATURE::retrievePixelColor(_method.getPixels(), indexPixel); + } + else + { + // Pixel # is out of bounds, this will get converted to a + // color object type initialized to 0 (black) + return 0; + } + }; + + void ClearTo(typename T_COLOR_FEATURE::ColorObject color) + { + uint8_t temp[T_COLOR_FEATURE::PixelSize]; + uint8_t* pixels = _method.getPixels(); + + T_COLOR_FEATURE::applyPixelColor(temp, 0, color); + + T_COLOR_FEATURE::replicatePixel(pixels, temp, _countPixels); + + Dirty(); + }; + + void ClearTo(typename T_COLOR_FEATURE::ColorObject color, uint16_t first, uint16_t last) + { + if (first < _countPixels && + last < _countPixels && + first <= last) + { + uint8_t temp[T_COLOR_FEATURE::PixelSize]; + uint8_t* pixels = _method.getPixels(); + uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, first); + + T_COLOR_FEATURE::applyPixelColor(temp, 0, color); + + T_COLOR_FEATURE::replicatePixel(pFront, temp, last - first + 1); + + Dirty(); + } + } + + void RotateLeft(uint16_t rotationCount) + { + if ((_countPixels - 1) >= rotationCount) + { + _rotateLeft(rotationCount, 0, _countPixels - 1); + } + } + + void RotateLeft(uint16_t rotationCount, uint16_t first, uint16_t last) + { + if (first < _countPixels && + last < _countPixels && + first < last && + (last - first) >= rotationCount) + { + _rotateLeft(rotationCount, first, last); + } + } + + void ShiftLeft(uint16_t shiftCount) + { + if ((_countPixels - 1) >= shiftCount) + { + _shiftLeft(shiftCount, 0, _countPixels - 1); + Dirty(); + } + } + + void ShiftLeft(uint16_t shiftCount, uint16_t first, uint16_t last) + { + if (first < _countPixels && + last < _countPixels && + first < last && + (last - first) >= shiftCount) + { + _shiftLeft(shiftCount, first, last); + Dirty(); + } + } + + void RotateRight(uint16_t rotationCount) + { + if ((_countPixels - 1) >= rotationCount) + { + _rotateRight(rotationCount, 0, _countPixels - 1); + } + } + + void RotateRight(uint16_t rotationCount, uint16_t first, uint16_t last) + { + if (first < _countPixels && + last < _countPixels && + first < last && + (last - first) >= rotationCount) + { + _rotateRight(rotationCount, first, last); + } + } + + void ShiftRight(uint16_t shiftCount) + { + if ((_countPixels - 1) >= shiftCount) + { + _shiftRight(shiftCount, 0, _countPixels - 1); + Dirty(); + } + } + + void ShiftRight(uint16_t shiftCount, uint16_t first, uint16_t last) + { + if (first < _countPixels && + last < _countPixels && + first < last && + (last - first) >= shiftCount) + { + _shiftRight(shiftCount, first, last); + Dirty(); + } + } + + void SwapPixelColor(uint16_t indexPixelOne, uint16_t indexPixelTwo) + { + auto colorOne = GetPixelColor(indexPixelOne); + auto colorTwo = GetPixelColor(indexPixelTwo); + + SetPixelColor(indexPixelOne, colorTwo); + SetPixelColor(indexPixelTwo, colorOne); + }; + +protected: + const uint16_t _countPixels; // Number of RGB LEDs in strip + + uint8_t _state; // internal state + T_METHOD _method; + + void _rotateLeft(uint16_t rotationCount, uint16_t first, uint16_t last) + { + // store in temp + uint8_t temp[rotationCount * T_COLOR_FEATURE::PixelSize]; + uint8_t* pixels = _method.getPixels(); + + uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, first); + + T_COLOR_FEATURE::movePixelsInc(temp, pFront, rotationCount); + + // shift data + _shiftLeft(rotationCount, first, last); + + // move temp back + pFront = T_COLOR_FEATURE::getPixelAddress(pixels, last - (rotationCount - 1)); + T_COLOR_FEATURE::movePixelsInc(pFront, temp, rotationCount); + + Dirty(); + } + + void _shiftLeft(uint16_t shiftCount, uint16_t first, uint16_t last) + { + uint16_t front = first + shiftCount; + uint16_t count = last - front + 1; + + uint8_t* pixels = _method.getPixels(); + uint8_t* pFirst = T_COLOR_FEATURE::getPixelAddress(pixels, first); + uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, front); + + T_COLOR_FEATURE::movePixelsInc(pFirst, pFront, count); + + // intentional no dirty + } + + void _rotateRight(uint16_t rotationCount, uint16_t first, uint16_t last) + { + // store in temp + uint8_t temp[rotationCount * T_COLOR_FEATURE::PixelSize]; + uint8_t* pixels = _method.getPixels(); + + uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, last - (rotationCount - 1)); + + T_COLOR_FEATURE::movePixelsDec(temp, pFront, rotationCount); + + // shift data + _shiftRight(rotationCount, first, last); + + // move temp back + pFront = T_COLOR_FEATURE::getPixelAddress(pixels, first); + T_COLOR_FEATURE::movePixelsDec(pFront, temp, rotationCount); + + Dirty(); + } + + void _shiftRight(uint16_t shiftCount, uint16_t first, uint16_t last) + { + uint16_t front = first + shiftCount; + uint16_t count = last - front + 1; + + uint8_t* pixels = _method.getPixels(); + uint8_t* pFirst = T_COLOR_FEATURE::getPixelAddress(pixels, first); + uint8_t* pFront = T_COLOR_FEATURE::getPixelAddress(pixels, front); + + T_COLOR_FEATURE::movePixelsDec(pFront, pFirst, count); + // intentional no dirty + } +}; + + diff --git a/brain/sw/components/led-renderer/neopixel/internal/DotStarAvrMethod.h b/brain/sw/components/led-renderer/neopixel/internal/DotStarAvrMethod.h new file mode 100644 index 0000000000..66bd00b0b4 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/DotStarAvrMethod.h @@ -0,0 +1,153 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for DotStars on AVR (APA102). + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +// must also check for arm due to Teensy incorrectly having ARDUINO_ARCH_AVR set +#if defined(ARDUINO_ARCH_AVR) && !defined(__arm__) + +class DotStarAvrMethod +{ +public: + DotStarAvrMethod(uint8_t pinClock, uint8_t pinData, uint16_t pixelCount, size_t elementSize) : + _pinClock(pinClock), + _pinData(pinData), + _sizePixels(pixelCount * elementSize) + { + pinMode(pinClock, OUTPUT); + pinMode(pinData, OUTPUT); + + _pixels = (uint8_t*)malloc(_sizePixels); + memset(_pixels, 0, _sizePixels); + + _portClock = portOutputRegister(digitalPinToPort(_pinClock)); + _pinMaskClock = digitalPinToBitMask(_pinClock); + _portData = portOutputRegister(digitalPinToPort(_pinData)); + _pinMaskData = digitalPinToBitMask(_pinData); + } + + ~DotStarAvrMethod() + { + pinMode(_pinClock, INPUT); + pinMode(_pinData, INPUT); + + free(_pixels); + } + + bool IsReadyToUpdate() const + { + return true; // dot stars don't have a required delay + } + + void Initialize() + { + digitalWrite(_pinClock, LOW); + digitalWrite(_pinData, LOW); + } + + void Update() + { + // start frame + for (int startFrameByte = 0; startFrameByte < 4; startFrameByte++) + { + _transmitByte(0x00); + } + + // data + uint8_t* data = _pixels; + const uint8_t* endData = _pixels + _sizePixels; + while (data < endData) + { + _transmitByte(*data++); + } + + // end frame + // one bit for every two pixels with no less than 1 byte + const uint16_t countEndFrameBytes = ((_sizePixels / 4) + 15) / 16; + for (uint16_t endFrameByte = 0; endFrameByte < countEndFrameBytes; endFrameByte++) + { + _transmitByte(0xff); + } + + // set clock and data back to low between updates + digitalWrite(_pinData, LOW); + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _sizePixels; + }; + +private: + const uint8_t _pinClock; // output pin number for clock line + const uint8_t _pinData; // output pin number for data line + const size_t _sizePixels; // Size of '_pixels' buffer below + + uint8_t* _pixels; // Holds LED color values + + volatile uint8_t* _portData; // Output PORT register + uint8_t _pinMaskData; // Output PORT bitmask + volatile uint8_t* _portClock; // Output PORT register + uint8_t _pinMaskClock; // Output PORT bitmask + + void _transmitByte(uint8_t data) + { + for (int bit = 7; bit >= 0; bit--) + { + // set data bit on pin + // digitalWrite(_pinData, (data & 0x80) == 0x80 ? HIGH : LOW); + if (data & 0x80) + { + *_portData |= _pinMaskData; + } + else + { + *_portData &= ~_pinMaskData; + } + + + // set clock high as data is ready + // digitalWrite(_pinClock, HIGH); + *_portClock |= _pinMaskClock; + + // done between clock toggle to give a little time + data <<= 1; + + // set clock low as data pin is changed + // digitalWrite(_pinClock, LOW); + *_portClock &= ~_pinMaskClock; + } + } +}; + +typedef DotStarAvrMethod DotStarMethod; + +#endif diff --git a/brain/sw/components/led-renderer/neopixel/internal/DotStarColorFeatures.h b/brain/sw/components/led-renderer/neopixel/internal/DotStarColorFeatures.h new file mode 100644 index 0000000000..3719d6fc11 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/DotStarColorFeatures.h @@ -0,0 +1,326 @@ +/*------------------------------------------------------------------------- +DotStarColorFeatures provides feature classes to describe color order and +color depth for NeoPixelBus template class when used with DotStars + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +class DotStar3Elements +{ +public: + static const size_t PixelSize = 4; // still requires 4 to be sent + + static uint8_t* getPixelAddress(uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + static const uint8_t* getPixelAddress(const uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + + static void replicatePixel(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + while (pPixelDest < pEnd) + { + *pPixelDest++ = pPixelSrc[0]; + *pPixelDest++ = pPixelSrc[1]; + *pPixelDest++ = pPixelSrc[2]; + *pPixelDest++ = pPixelSrc[3]; + } + } + + static void movePixelsInc(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + while (pPixelDest < pEnd) + { + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + } + } + + static void movePixelsInc_P(uint8_t* pPixelDest, PGM_VOID_P pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + const uint8_t* pSrc = (const uint8_t*)pPixelSrc; + while (pPixelDest < pEnd) + { + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + } + } + + static void movePixelsDec(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pDestBack = pPixelDest + (count * PixelSize); + const uint8_t* pSrcBack = pPixelSrc + (count * PixelSize); + while (pDestBack > pPixelDest) + { + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + } + } + + typedef RgbColor ColorObject; +}; + +class DotStar4Elements +{ +public: + static const size_t PixelSize = 4; + + static uint8_t* getPixelAddress(uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + static const uint8_t* getPixelAddress(const uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + + static void replicatePixel(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + while (pPixelDest < pEnd) + { + *pPixelDest++ = pPixelSrc[0]; + *pPixelDest++ = pPixelSrc[1]; + *pPixelDest++ = pPixelSrc[2]; + *pPixelDest++ = pPixelSrc[3]; + } + } + + static void movePixelsInc(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + while (pPixelDest < pEnd) + { + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + } + } + + static void movePixelsInc_P(uint8_t* pPixelDest, PGM_VOID_P pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + const uint8_t* pSrc = (const uint8_t*)pPixelSrc; + while (pPixelDest < pEnd) + { + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + } + } + + static void movePixelsDec(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pDestBack = pPixelDest + (count * PixelSize); + const uint8_t* pSrcBack = pPixelSrc + (count * PixelSize); + while (pDestBack > pPixelDest) + { + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + } + } + + typedef RgbwColor ColorObject; +}; + +class DotStarBgrFeature : public DotStar3Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = 0xff; // upper three bits are always 111 and brightness at max + *p++ = color.B; + *p++ = color.G; + *p = color.R; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + p++; // ignore the first byte + color.B = *p++; + color.G = *p++; + color.R = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + pgm_read_byte(p++); // ignore the first byte + color.B = pgm_read_byte(p++); + color.G = pgm_read_byte(p++); + color.R = pgm_read_byte(p); + + return color; + } + +}; + +class DotStarLbgrFeature : public DotStar4Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = 0xE0 | (color.W < 31 ? color.W : 31); // upper three bits are always 111 + *p++ = color.B; + *p++ = color.G; + *p = color.R; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.W = (*p++) & 0x1F; // mask out upper three bits + color.B = *p++; + color.G = *p++; + color.R = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.W = pgm_read_byte(p++) & 0x1F; // mask out upper three bits + color.B = pgm_read_byte(p++); + color.G = pgm_read_byte(p++); + color.R = pgm_read_byte(p); + + return color; + } + +}; + +class DotStarGrbFeature : public DotStar3Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = 0xff; // upper three bits are always 111 and brightness at max + *p++ = color.G; + *p++ = color.R; + *p = color.B; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + p++; // ignore the first byte + color.G = *p++; + color.R = *p++; + color.B = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + pgm_read_byte(p++); // ignore the first byte + color.G = pgm_read_byte(p++); + color.R = pgm_read_byte(p++); + color.B = pgm_read_byte(p); + + return color; + } + +}; + +class DotStarLgrbFeature : public DotStar4Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = 0xE0 | (color.W < 31 ? color.W : 31); // upper three bits are always 111 + *p++ = color.G; + *p++ = color.R; + *p = color.B; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.W = (*p++) & 0x1F; // mask out upper three bits + color.G = *p++; + color.R = *p++; + color.B = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.W = pgm_read_byte(p++) & 0x1F; // mask out upper three bits + color.G = pgm_read_byte(p++); + color.R = pgm_read_byte(p++); + color.B = pgm_read_byte(p); + + return color; + } + +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/DotStarGenericMethod.h b/brain/sw/components/led-renderer/neopixel/internal/DotStarGenericMethod.h new file mode 100644 index 0000000000..d59d0e0dd9 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/DotStarGenericMethod.h @@ -0,0 +1,128 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for DotStars using general Pins (APA102). + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +class DotStarGenericMethod +{ +public: + DotStarGenericMethod(uint8_t pinClock, uint8_t pinData, uint16_t pixelCount, size_t elementSize) : + _pinClock(pinClock), + _pinData(pinData), + _sizePixels(pixelCount * elementSize) + { + pinMode(pinClock, OUTPUT); + pinMode(pinData, OUTPUT); + + _pixels = (uint8_t*)malloc(_sizePixels); + memset(_pixels, 0, _sizePixels); + } + + ~DotStarGenericMethod() + { + pinMode(_pinClock, INPUT); + pinMode(_pinData, INPUT); + + free(_pixels); + } + + bool IsReadyToUpdate() const + { + return true; // dot stars don't have a required delay + } + + void Initialize() + { + digitalWrite(_pinClock, LOW); + digitalWrite(_pinData, LOW); + } + + void Update() + { + // start frame + for (int startFrameByte = 0; startFrameByte < 4; startFrameByte++) + { + _transmitByte(0x00); + } + + // data + uint8_t* data = _pixels; + const uint8_t* endData = _pixels + _sizePixels; + while (data < endData) + { + _transmitByte(*data++); + } + + // end frame + // one bit for every two pixels with no less than 1 byte + const uint16_t countEndFrameBytes = ((_sizePixels / 4) + 15) / 16; + for (uint16_t endFrameByte = 0; endFrameByte < countEndFrameBytes; endFrameByte++) + { + _transmitByte(0xff); + } + + // set clock and data back to low between updates + digitalWrite(_pinData, LOW); + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _sizePixels; + }; + +private: + const uint8_t _pinClock; // output pin number for clock line + const uint8_t _pinData; // output pin number for data line + const size_t _sizePixels; // Size of '_pixels' buffer below + + uint8_t* _pixels; // Holds LED color values + + void _transmitByte(uint8_t data) + { + for (int bit = 7; bit >= 0; bit--) + { + // set data bit on pin + digitalWrite(_pinData, (data & 0x80) == 0x80 ? HIGH : LOW); + + // set clock high as data is ready + digitalWrite(_pinClock, HIGH); + + data <<= 1; + + // set clock low as data pin is changed + digitalWrite(_pinClock, LOW); + } + } +}; + +typedef DotStarGenericMethod DotStarMethod; + + diff --git a/brain/sw/components/led-renderer/neopixel/internal/DotStarSpiMethod.h b/brain/sw/components/led-renderer/neopixel/internal/DotStarSpiMethod.h new file mode 100644 index 0000000000..4aabc29c29 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/DotStarSpiMethod.h @@ -0,0 +1,125 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for DotStars using SPI hardware (APA102). + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#include + +class DotStarSpiMethod +{ +public: + DotStarSpiMethod(uint16_t pixelCount, size_t elementSize) : + _sizeData(pixelCount * elementSize), + _sizeSendBuffer(calcBufferSize(pixelCount * elementSize)) + { + _sendBuffer = (uint8_t*)malloc(_sizeSendBuffer); + memset(_sendBuffer, 0, _sizeSendBuffer); + setEndFrameBytes(); + } + + ~DotStarSpiMethod() + { + SPI.end(); + free(_sendBuffer); + } + + bool IsReadyToUpdate() const + { + return true; // dot stars don't have a required delay + } + + void Initialize() + { + SPI.begin(); + +#if defined(ARDUINO_ARCH_ESP8266) + SPI.setFrequency(20000000L); +#elif defined(ARDUINO_ARCH_AVR) + SPI.setClockDivider(SPI_CLOCK_DIV2); // 8 MHz (6 MHz on Pro Trinket 3V) +#else + SPI.setClockDivider((F_CPU + 4000000L) / 8000000L); // 8-ish MHz on Due +#endif + SPI.setBitOrder(MSBFIRST); + SPI.setDataMode(SPI_MODE0); + } + + void Update() + { + // due to API inconsistencies need to call different methods on SPI +#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) + SPI.writeBytes(_sendBuffer, _sizeSendBuffer); +#else + SPI.transfer(_sendBuffer, _sizeSendBuffer); +#endif + } + + uint8_t* getPixels() const + { + return _sendBuffer + _countStartFrame; + }; + + size_t getPixelsSize() const + { + return _sizeData; + }; + +private: + const size_t _countStartFrame = 4; + const size_t _sizeData; // size of actuall pixel data within _sendBuffer + const size_t _sizeSendBuffer; // Size of '_sendBuffer' buffer below + + uint8_t* _sendBuffer; // Holds SPI send Buffer, including LED color values + + size_t calcBufferSize(size_t sizePixels) const + { + const size_t countEndFrameBytes = calcEndFrameSize(sizePixels); + + // start frame + data + end frame + const size_t bufferSize = _countStartFrame + sizePixels + countEndFrameBytes; + return bufferSize; + } + + size_t calcEndFrameSize(size_t sizePixels) const + { + // end frame + // one bit for every two pixels with no less than 1 byte + return ((sizePixels / 4) + 15) / 16; + } + + void setEndFrameBytes() + { + uint8_t* pEndFrame = _sendBuffer + _countStartFrame + _sizeData; + uint8_t* pEndFrameStop = pEndFrame + calcEndFrameSize(_sizeData); + while (pEndFrame != pEndFrameStop) + { + *pEndFrame++ = 0xff; + } + } +}; + + + + diff --git a/brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.c b/brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.c new file mode 100644 index 0000000000..0db1174eda --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.c @@ -0,0 +1,488 @@ +// WARNING: This file contains code that is more than likely already +// exposed from the Esp32 Arduino API. It will be removed once integration is complete. +// +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#define ARDUINO_ARCH_ESP32 1 + +#if defined(ARDUINO_ARCH_ESP32) + +#include +#include +#include "stdlib.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +#include "freertos/queue.h" + +//#include "esp_intr.h" +#include "esp_intr_alloc.h" +//#include "rom/ets_sys.h" +#include "esp32/rom/ets_sys.h" +#include "soc/gpio_reg.h" +#include "soc/gpio_sig_map.h" +#include "soc/io_mux_reg.h" +#include "soc/rtc_cntl_reg.h" +#include "soc/i2s_struct.h" +#include "soc/dport_reg.h" +#include "soc/sens_reg.h" +#include "driver/gpio.h" +#include "driver/i2s.h" +#include "driver/dac.h" +#include "Esp32_i2s.h" +#include "esp32-hal.h" + +#define I2S_BASE_CLK (160000000L) +#define ESP32_REG(addr) (*((volatile uint32_t*)(0x3FF00000+(addr)))) + +#define I2S_DMA_QUEUE_SIZE 16 +#define I2S_DMA_MAX_DATA_LEN 4092// maximum bytes in one dma item +#define I2S_DMA_SILENCE_LEN 256 // bytes + +typedef struct i2s_dma_item_s { + uint32_t blocksize: 12; // datalen + uint32_t datalen : 12; // len*(bits_per_sample/8)*2 => max 2047*8bit/1023*16bit samples + uint32_t unused : 5; // 0 + uint32_t sub_sof : 1; // 0 + uint32_t eof : 1; // 1 => last? + uint32_t owner : 1; // 1 + + void* data; // malloc(datalen) + struct i2s_dma_item_s* next; + + // if this pointer is not null, it will be freed + void* free_ptr; + + // if DMA buffers are preallocated + uint8_t* buf; +} i2s_dma_item_t; + +typedef struct { + i2s_dev_t* bus; + int8_t ws; + int8_t bck; + int8_t out; + int8_t in; + uint32_t rate; + intr_handle_t isr_handle; + xQueueHandle tx_queue; + + uint8_t* silence_buf; + size_t silence_len; + + i2s_dma_item_t* dma_items; + size_t dma_count; + uint32_t dma_buf_len :12; + uint32_t unused :20; +} i2s_bus_t; + +static uint8_t i2s_silence_buf[I2S_DMA_SILENCE_LEN]; + +static i2s_bus_t I2S[2] = { + {&I2S0, -1, -1, -1, -1, 0, NULL, NULL, i2s_silence_buf, I2S_DMA_SILENCE_LEN, NULL, I2S_DMA_QUEUE_SIZE, 0, 0}, + {&I2S1, -1, -1, -1, -1, 0, NULL, NULL, i2s_silence_buf, I2S_DMA_SILENCE_LEN, NULL, I2S_DMA_QUEUE_SIZE, 0, 0} +}; + +void IRAM_ATTR i2sDmaISR(void* arg); +bool i2sInitDmaItems(uint8_t bus_num); + +bool i2sInitDmaItems(uint8_t bus_num) { + if (bus_num > 1) { + return false; + } + if (I2S[bus_num].tx_queue) {// already set + return true; + } + + if (I2S[bus_num].dma_items == NULL) { + I2S[bus_num].dma_items = (i2s_dma_item_t*)malloc(I2S[bus_num].dma_count* sizeof(i2s_dma_item_t)); + if (I2S[bus_num].dma_items == NULL) { + log_e("MEM ERROR!"); + return false; + } + } + + int i, i2, a; + i2s_dma_item_t* item; + + for(i=0; ieof = 1; + item->owner = 1; + item->sub_sof = 0; + item->unused = 0; + item->data = I2S[bus_num].silence_buf; + item->blocksize = I2S[bus_num].silence_len; + item->datalen = I2S[bus_num].silence_len; + item->next = &I2S[bus_num].dma_items[i2]; + item->free_ptr = NULL; + if (I2S[bus_num].dma_buf_len) { + item->buf = (uint8_t*)malloc(I2S[bus_num].dma_buf_len); + if (item->buf == NULL) { + log_e("MEM ERROR!"); + for(a=0; abuf = NULL; + } + } + + I2S[bus_num].tx_queue = xQueueCreate(I2S[bus_num].dma_count - 3, sizeof(i2s_dma_item_t*)); + if (I2S[bus_num].tx_queue == NULL) {// memory error + log_e("MEM ERROR!"); + free(I2S[bus_num].dma_items); + I2S[bus_num].dma_items = NULL; + return false; + } + return true; +} + +void i2sSetSilenceBuf(uint8_t bus_num, uint8_t* data, size_t len) { + if (bus_num > 1 || !data || !len) { + return; + } + I2S[bus_num].silence_buf = data; + I2S[bus_num].silence_len = len; +} + +esp_err_t i2sSetClock(uint8_t bus_num, uint8_t div_num, uint8_t div_b, uint8_t div_a, uint8_t bck, uint8_t bits) { + if (bus_num > 1 || div_a > 63 || div_b > 63 || bck > 63) { + return ESP_FAIL; + } + i2s_dev_t* i2s = I2S[bus_num].bus; + i2s->clkm_conf.clka_en = 0; + i2s->clkm_conf.clkm_div_a = div_a; + i2s->clkm_conf.clkm_div_b = div_b; + i2s->clkm_conf.clkm_div_num = div_num; + i2s->sample_rate_conf.tx_bck_div_num = bck; + i2s->sample_rate_conf.rx_bck_div_num = bck; + i2s->sample_rate_conf.tx_bits_mod = bits; + i2s->sample_rate_conf.rx_bits_mod = bits; + return ESP_OK; +} + +void i2sSetTxDataMode(uint8_t bus_num, i2s_tx_chan_mod_t chan_mod, i2s_tx_fifo_mod_t fifo_mod) { + if (bus_num > 1) { + return; + } + + I2S[bus_num].bus->conf_chan.tx_chan_mod = chan_mod; // 0:dual channel; 1:right channel; 2:left channel; 3:left channel constant; 4:right channel constant; (channels flipped if tx_msb_right == 1) + I2S[bus_num].bus->fifo_conf.tx_fifo_mod = fifo_mod; // 0:16-bit dual channel; 1:16-bit single channel; 2:32-bit dual channel; 3:32-bit single channel data +} + +void i2sSetDac(uint8_t bus_num, bool right, bool left) { + if (bus_num > 1) { + return; + } + + if (!right && !left) { + dac_output_disable(1); + dac_output_disable(2); + dac_i2s_disable(); + I2S[bus_num].bus->conf2.lcd_en = 0; + I2S[bus_num].bus->conf.tx_right_first = 0; + I2S[bus_num].bus->conf2.camera_en = 0; + I2S[bus_num].bus->conf.tx_msb_shift = 1;// I2S signaling + return; + } + + i2sSetPins(bus_num, -1, -1, -1, -1); + I2S[bus_num].bus->conf2.lcd_en = 1; + I2S[bus_num].bus->conf.tx_right_first = 0; + I2S[bus_num].bus->conf2.camera_en = 0; + I2S[bus_num].bus->conf.tx_msb_shift = 0; + dac_i2s_enable(); + + if (right) {// DAC1, right channel, GPIO25 + dac_output_enable(1); + } + if (left) { // DAC2, left channel, GPIO26 + dac_output_enable(2); + } +} + +void i2sSetPins(uint8_t bus_num, int8_t out, int8_t ws, int8_t bck, int8_t in) { + if (bus_num > 1) { + return; + } + + if ((ws >= 0 && I2S[bus_num].ws == -1) || (bck >= 0 && I2S[bus_num].bck == -1) || (out >= 0 && I2S[bus_num].out == -1)) { + i2sSetDac(bus_num, false, false); + } + + if (ws >= 0) { + if (I2S[bus_num].ws != ws) { + if (I2S[bus_num].ws >= 0) { + gpio_matrix_out(I2S[bus_num].ws, 0x100, false, false); + } + I2S[bus_num].ws = ws; + pinMode(ws, OUTPUT); + gpio_matrix_out(ws, bus_num?I2S1O_WS_OUT_IDX:I2S0O_WS_OUT_IDX, false, false); + } + } else if (I2S[bus_num].ws >= 0) { + gpio_matrix_out(I2S[bus_num].ws, 0x100, false, false); + I2S[bus_num].ws = -1; + } + + if (bck >= 0) { + if (I2S[bus_num].bck != bck) { + if (I2S[bus_num].bck >= 0) { + gpio_matrix_out(I2S[bus_num].bck, 0x100, false, false); + } + I2S[bus_num].bck = bck; + pinMode(bck, OUTPUT); + gpio_matrix_out(bck, bus_num?I2S1O_BCK_OUT_IDX:I2S0O_BCK_OUT_IDX, false, false); + } + } else if (I2S[bus_num].bck >= 0) { + gpio_matrix_out(I2S[bus_num].bck, 0x100, false, false); + I2S[bus_num].bck = -1; + } + + if (out >= 0) { + if (I2S[bus_num].out != out) { + if (I2S[bus_num].out >= 0) { + gpio_matrix_out(I2S[bus_num].out, 0x100, false, false); + } + I2S[bus_num].out = out; + pinMode(out, OUTPUT); + gpio_matrix_out(out, bus_num?I2S1O_DATA_OUT23_IDX:I2S0O_DATA_OUT23_IDX, false, false); + } + } else if (I2S[bus_num].out >= 0) { + gpio_matrix_out(I2S[bus_num].out, 0x100, false, false); + I2S[bus_num].out = -1; + } + +} + +bool i2sWriteDone(uint8_t bus_num) { + if (bus_num > 1) { + return false; + } + return (I2S[bus_num].dma_items[0].data == I2S[bus_num].silence_buf && I2S[bus_num].dma_items[1].data == I2S[bus_num].silence_buf); +} + +void i2sInit(uint8_t bus_num, uint32_t bits_per_sample, uint32_t sample_rate, i2s_tx_chan_mod_t chan_mod, i2s_tx_fifo_mod_t fifo_mod, size_t dma_count, size_t dma_len) { + if (bus_num > 1) { + return; + } + + I2S[bus_num].dma_count = dma_count; + I2S[bus_num].dma_buf_len = dma_len & 0xFFF; + + if (!i2sInitDmaItems(bus_num)) { + return; + } + + if (bus_num) { + periph_module_enable(PERIPH_I2S1_MODULE); + } else { + periph_module_enable(PERIPH_I2S0_MODULE); + } + + esp_intr_disable(I2S[bus_num].isr_handle); + i2s_dev_t* i2s = I2S[bus_num].bus; + i2s->out_link.stop = 1; + i2s->conf.tx_start = 0; + i2s->int_ena.val = 0; + i2s->int_clr.val = 0xFFFFFFFF; + i2s->fifo_conf.dscr_en = 0; + + // reset fifo + i2s->conf.rx_fifo_reset = 1; + i2s->conf.rx_fifo_reset = 0; + i2s->conf.tx_fifo_reset = 1; + i2s->conf.tx_fifo_reset = 0; + + // reset i2s + i2s->conf.tx_reset = 1; + i2s->conf.tx_reset = 0; + i2s->conf.rx_reset = 1; + i2s->conf.rx_reset = 0; + + // reset dma + i2s->lc_conf.in_rst = 1; + i2s->lc_conf.in_rst = 0; + i2s->lc_conf.out_rst = 1; + i2s->lc_conf.out_rst = 0; + + // Enable and configure DMA + i2s->lc_conf.check_owner = 0; + i2s->lc_conf.out_loop_test = 0; + i2s->lc_conf.out_auto_wrback = 0; + i2s->lc_conf.out_data_burst_en = 0; + i2s->lc_conf.outdscr_burst_en = 0; + i2s->lc_conf.out_no_restart_clr = 0; + i2s->lc_conf.indscr_burst_en = 0; + i2s->lc_conf.out_eof_mode = 1; + + i2s->pdm_conf.pcm2pdm_conv_en = 0; + i2s->pdm_conf.pdm2pcm_conv_en = 0; + // SET_PERI_REG_BITS(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_SOC_CLK_SEL, 0x1, RTC_CNTL_SOC_CLK_SEL_S); + + + i2s->conf_chan.tx_chan_mod = chan_mod; // 0-two channel;1-right;2-left;3-righ;4-left + i2s->conf_chan.rx_chan_mod = chan_mod; // 0-two channel;1-right;2-left;3-righ;4-left + i2s->fifo_conf.tx_fifo_mod = fifo_mod; // 0-right&left channel;1-one channel + i2s->fifo_conf.rx_fifo_mod = fifo_mod; // 0-right&left channel;1-one channel + + i2s->conf.tx_mono = 0; + i2s->conf.rx_mono = 0; + + i2s->conf.tx_start = 0; + i2s->conf.rx_start = 0; + + i2s->conf.tx_short_sync = 0; + i2s->conf.rx_short_sync = 0; + i2s->conf.tx_msb_shift = (bits_per_sample != 8);// 0:DAC/PCM, 1:I2S + i2s->conf.rx_msb_shift = 0; + + i2s->conf.tx_slave_mod = 0; // Master + + i2s->conf.tx_msb_right = 0; + i2s->conf.tx_right_first = (bits_per_sample == 8); + i2s->conf2.lcd_en = (bits_per_sample == 8); + i2s->conf2.camera_en = 0; + + i2s->fifo_conf.tx_fifo_mod_force_en = 1; + + i2s->pdm_conf.rx_pdm_en = 0; + i2s->pdm_conf.tx_pdm_en = 0; + + i2sSetSampleRate(bus_num, sample_rate, bits_per_sample); + + // enable intr in cpu // + esp_intr_alloc(bus_num?ETS_I2S1_INTR_SOURCE:ETS_I2S0_INTR_SOURCE, ESP_INTR_FLAG_IRAM | ESP_INTR_FLAG_LEVEL1, &i2sDmaISR, &I2S[bus_num], &I2S[bus_num].isr_handle); + // enable send intr + i2s->int_ena.out_eof = 1; + i2s->int_ena.out_dscr_err = 1; + + i2s->fifo_conf.dscr_en = 1;// enable dma + i2s->out_link.start = 0; + i2s->out_link.addr = (uint32_t)(&I2S[bus_num].dma_items[0]); // loads dma_struct to dma + i2s->out_link.start = 1; // starts dma + i2s->conf.tx_start = 1;// Start I2s module + + esp_intr_enable(I2S[bus_num].isr_handle); +} + +esp_err_t i2sSetSampleRate(uint8_t bus_num, uint32_t rate, uint8_t bits) { + if (bus_num > 1) { + return ESP_FAIL; + } + + if (I2S[bus_num].rate == rate) { + return ESP_OK; + } + + int clkmInteger, clkmDecimals, bck = 0; + double denom = (double)1 / 63; + int channel = 2; + +// double mclk; + double clkmdiv; + + int factor; + + if (bits == 8) { + factor = 120; + } else { + factor = (256 % bits) ? 384 : 256; + } + + clkmdiv = (double)I2S_BASE_CLK / (rate* factor); + if (clkmdiv > 256) { + log_e("rate is too low"); + return ESP_FAIL; + } + I2S[bus_num].rate = rate; + + clkmInteger = clkmdiv; + clkmDecimals = ((clkmdiv - clkmInteger) / denom); + + if (bits == 8) { +// mclk = rate* factor; + bck = 60; + bits = 16; + } else { +// mclk = (double)clkmInteger + (denom* clkmDecimals); + bck = factor/(bits* channel); + } + + i2sSetClock(bus_num, clkmInteger, clkmDecimals, 63, bck, bits); + + return ESP_OK; +} + +void IRAM_ATTR i2sDmaISR(void* arg) +{ + i2s_dma_item_t* dummy = NULL; + i2s_bus_t* dev = (i2s_bus_t*)arg; + portBASE_TYPE hpTaskAwoken = 0; + + if (dev->bus->int_st.out_eof) { + i2s_dma_item_t* item = (i2s_dma_item_t*)dev->bus->out_eof_des_addr; + item->data = dev->silence_buf; + item->blocksize = dev->silence_len; + item->datalen = dev->silence_len; + if (xQueueIsQueueFullFromISR(dev->tx_queue) == pdTRUE) { + xQueueReceiveFromISR(dev->tx_queue, &dummy, &hpTaskAwoken); + } + xQueueSendFromISR(dev->tx_queue, (void*)&item, &hpTaskAwoken); + } + dev->bus->int_clr.val = dev->bus->int_st.val; + if (hpTaskAwoken == pdTRUE) { + portYIELD_FROM_ISR(); + } +} + +size_t i2sWrite(uint8_t bus_num, uint8_t* data, size_t len, bool copy, bool free_when_sent) { + if (bus_num > 1 || !I2S[bus_num].tx_queue) { + return 0; + } + size_t index = 0; + size_t toSend = len; + size_t limit = I2S_DMA_MAX_DATA_LEN; + i2s_dma_item_t* item = NULL; + + while (len) { + toSend = len; + if (toSend > limit) { + toSend = limit; + } + + if (xQueueReceive(I2S[bus_num].tx_queue, &item, portMAX_DELAY) == pdFALSE) { + log_e("xQueueReceive failed\n"); + break; + } + // data is constant. no need to copy + item->data = data + index; + item->blocksize = toSend; + item->datalen = toSend; + + len -= toSend; + index += toSend; + } + return index; +} + + +#endif diff --git a/brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.h b/brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.h new file mode 100644 index 0000000000..a779e8cfe4 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/Esp32_i2s.h @@ -0,0 +1,38 @@ +#pragma once + +#if defined(ARDUINO_ARCH_ESP32) + +#ifdef __cplusplus +extern "C" { +#endif + +#include "esp_err.h" + +typedef enum { + I2S_CHAN_STEREO, I2S_CHAN_RIGHT_TO_LEFT, I2S_CHAN_LEFT_TO_RIGHT, I2S_CHAN_RIGHT_ONLY, I2S_CHAN_LEFT_ONLY +} i2s_tx_chan_mod_t; + +typedef enum { + I2S_FIFO_16BIT_DUAL, I2S_FIFO_16BIT_SINGLE, I2S_FIFO_32BIT_DUAL, I2S_FIFO_32BIT_SINGLE +} i2s_tx_fifo_mod_t; + +void i2sInit(uint8_t bus_num, uint32_t bits_per_sample, uint32_t sample_rate, i2s_tx_chan_mod_t chan_mod, i2s_tx_fifo_mod_t fifo_mod, size_t dma_count, size_t dma_len); + +void i2sSetPins(uint8_t bus_num, int8_t out, int8_t ws, int8_t bck, int8_t in); +void i2sSetDac(uint8_t bus_num, bool right, bool left); + +esp_err_t i2sSetClock(uint8_t bus_num, uint8_t div_num, uint8_t div_b, uint8_t div_a, uint8_t bck, uint8_t bits_per_sample); +esp_err_t i2sSetSampleRate(uint8_t bus_num, uint32_t sample_rate, uint8_t bits_per_sample); + +void i2sSetTxDataMode(uint8_t bus_num, i2s_tx_chan_mod_t chan_mod, i2s_tx_fifo_mod_t fifo_mod); + +void i2sSetSilenceBuf(uint8_t bus_num, uint8_t* data, size_t len); + +size_t i2sWrite(uint8_t bus_num, uint8_t* data, size_t len, bool copy, bool free_when_sent); +bool i2sWriteDone(uint8_t bus_num); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/brain/sw/components/led-renderer/neopixel/internal/HsbColor.cpp b/brain/sw/components/led-renderer/neopixel/internal/HsbColor.cpp new file mode 100644 index 0000000000..e47912fa98 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HsbColor.cpp @@ -0,0 +1,68 @@ +/*------------------------------------------------------------------------- +HsbColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "RgbColor.h" +#include "HsbColor.h" + + +HsbColor::HsbColor(const RgbColor& color) +{ + // convert colors to float between (0.0 - 1.0) + float r = color.R / 255.0f; + float g = color.G / 255.0f; + float b = color.B / 255.0f; + + float max = (r > g && r > b) ? r : (g > b) ? g : b; + float min = (r < g && r < b) ? r : (g < b) ? g : b; + + float d = max - min; + + float h = 0.0; + float v = max; + float s = (v == 0.0f) ? 0 : (d / v); + + if (d != 0.0f) + { + if (r == max) + { + h = (g - b) / d + (g < b ? 6.0f : 0.0f); + } + else if (g == max) + { + h = (b - r) / d + 2.0f; + } + else + { + h = (r - g) / d + 4.0f; + } + h /= 6.0f; + } + + + H = h; + S = s; + B = v; +} diff --git a/brain/sw/components/led-renderer/neopixel/internal/HsbColor.h b/brain/sw/components/led-renderer/neopixel/internal/HsbColor.h new file mode 100644 index 0000000000..4d0bdfaa9b --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HsbColor.h @@ -0,0 +1,113 @@ + +/*------------------------------------------------------------------------- +HsbColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +#include + +// ------------------------------------------------------------------------ +// HsbColor represents a color object that is represented by Hue, Saturation, Brightness +// component values. It contains helpful color routines to manipulate the +// color. +// ------------------------------------------------------------------------ +struct HsbColor +{ + // ------------------------------------------------------------------------ + // Construct a HsbColor using H, S, B values (0.0 - 1.0) + // ------------------------------------------------------------------------ + HsbColor(float h, float s, float b) : + H(h), S(s), B(b) + { + }; + + // ------------------------------------------------------------------------ + // Construct a HsbColor using RgbColor + // ------------------------------------------------------------------------ + HsbColor(const RgbColor& color); + + // ------------------------------------------------------------------------ + // Construct a HsbColor that will have its values set in latter operations + // CAUTION: The H,S,B members are not initialized and may not be consistent + // ------------------------------------------------------------------------ + HsbColor() + { + }; + + // ------------------------------------------------------------------------ + // LinearBlend between two colors by the amount defined by progress variable + // left - the color to start the blend at + // right - the color to end the blend at + // progress - (0.0 - 1.0) value where 0.0 will return left and 1.0 will return right + // and a value between will blend the color weighted linearly between them + // ------------------------------------------------------------------------ + template static HsbColor LinearBlend(const HsbColor& left, + const HsbColor& right, + float progress) + { + return HsbColor(T_NEOHUEBLEND::HueBlend(left.H, right.H, progress), + left.S + ((right.S - left.S) * progress), + left.B + ((right.B - left.B) * progress)); + } + + // ------------------------------------------------------------------------ + // BilinearBlend between four colors by the amount defined by 2d variable + // c00 - upper left quadrant color + // c01 - upper right quadrant color + // c10 - lower left quadrant color + // c11 - lower right quadrant color + // x - unit value (0.0 - 1.0) that defines the blend progress in horizontal space + // y - unit value (0.0 - 1.0) that defines the blend progress in vertical space + // ------------------------------------------------------------------------ + template static HsbColor BilinearBlend(const HsbColor& c00, + const HsbColor& c01, + const HsbColor& c10, + const HsbColor& c11, + float x, + float y) + { + float v00 = (1.0f - x) * (1.0f - y); + float v10 = x * (1.0f - y); + float v01 = (1.0f - x) * y; + float v11 = x * y; + + return HsbColor( + T_NEOHUEBLEND::HueBlend( + T_NEOHUEBLEND::HueBlend(c00.H, c10.H, x), + T_NEOHUEBLEND::HueBlend(c01.H, c11.H, x), + y), + c00.S * v00 + c10.S * v10 + c01.S * v01 + c11.S * v11, + c00.B * v00 + c10.B * v10 + c01.B * v01 + c11.B * v11); + }; + + // ------------------------------------------------------------------------ + // Hue, Saturation, Brightness color members + // ------------------------------------------------------------------------ + + float H; + float S; + float B; +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/HslColor.cpp b/brain/sw/components/led-renderer/neopixel/internal/HslColor.cpp new file mode 100644 index 0000000000..ce9b2388b1 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HslColor.cpp @@ -0,0 +1,72 @@ +/*------------------------------------------------------------------------- +HslColor provides a color object that can be directly consumed by NeoPixelBus + + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "RgbColor.h" +#include "HslColor.h" + + +HslColor::HslColor(const RgbColor& color) +{ + // convert colors to float between (0.0 - 1.0) + float r = color.R / 255.0f; + float g = color.G / 255.0f; + float b = color.B / 255.0f; + + float max = (r > g && r > b) ? r : (g > b) ? g : b; + float min = (r < g && r < b) ? r : (g < b) ? g : b; + + float h, s, l; + l = (max + min) / 2.0f; + + if (max == min) + { + h = s = 0.0f; + } + else + { + float d = max - min; + s = (l > 0.5f) ? d / (2.0f - (max + min)) : d / (max + min); + + if (r > g && r > b) + { + h = (g - b) / d + (g < b ? 6.0f : 0.0f); + } + else if (g > b) + { + h = (b - r) / d + 2.0f; + } + else + { + h = (r - g) / d + 4.0f; + } + h /= 6.0f; + } + + H = h; + S = s; + L = l; +} diff --git a/brain/sw/components/led-renderer/neopixel/internal/HslColor.h b/brain/sw/components/led-renderer/neopixel/internal/HslColor.h new file mode 100644 index 0000000000..f6988bd574 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HslColor.h @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------------- +HslColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +#include + +// ------------------------------------------------------------------------ +// HslColor represents a color object that is represented by Hue, Saturation, Lightness +// component values. It contains helpful color routines to manipulate the +// color. +// ------------------------------------------------------------------------ +struct HslColor +{ + + // ------------------------------------------------------------------------ + // Construct a HslColor using H, S, L values (0.0 - 1.0) + // L should be limited to between (0.0 - 0.5) + // ------------------------------------------------------------------------ + HslColor(float h, float s, float l) : + H(h), S(s), L(l) + { + }; + + // ------------------------------------------------------------------------ + // Construct a HslColor using RgbColor + // ------------------------------------------------------------------------ + HslColor(const RgbColor& color); + + // ------------------------------------------------------------------------ + // Construct a HslColor that will have its values set in latter operations + // CAUTION: The H,S,L members are not initialized and may not be consistent + // ------------------------------------------------------------------------ + HslColor() + { + }; + + // ------------------------------------------------------------------------ + // LinearBlend between two colors by the amount defined by progress variable + // left - the color to start the blend at + // right - the color to end the blend at + // progress - (0.0 - 1.0) value where 0.0 will return left and 1.0 will return right + // and a value between will blend the color weighted linearly between them + // ------------------------------------------------------------------------ + template static HslColor LinearBlend(const HslColor& left, + const HslColor& right, + float progress) + { + return HslColor(T_NEOHUEBLEND::HueBlend(left.H, right.H, progress), + left.S + ((right.S - left.S) * progress), + left.L + ((right.L - left.L) * progress)); + }; + + // ------------------------------------------------------------------------ + // BilinearBlend between four colors by the amount defined by 2d variable + // c00 - upper left quadrant color + // c01 - upper right quadrant color + // c10 - lower left quadrant color + // c11 - lower right quadrant color + // x - unit value (0.0 - 1.0) that defines the blend progress in horizontal space + // y - unit value (0.0 - 1.0) that defines the blend progress in vertical space + // ------------------------------------------------------------------------ + template static HslColor BilinearBlend(const HslColor& c00, + const HslColor& c01, + const HslColor& c10, + const HslColor& c11, + float x, + float y) + { + float v00 = (1.0f - x) * (1.0f - y); + float v10 = x * (1.0f - y); + float v01 = (1.0f - x) * y; + float v11 = x * y; + + return HslColor( + T_NEOHUEBLEND::HueBlend( + T_NEOHUEBLEND::HueBlend(c00.H, c10.H, x), + T_NEOHUEBLEND::HueBlend(c01.H, c11.H, x), + y), + c00.S * v00 + c10.S * v10 + c01.S * v01 + c11.S * v11, + c00.L * v00 + c10.L * v10 + c01.L * v01 + c11.L * v11); + }; + + // ------------------------------------------------------------------------ + // Hue, Saturation, Lightness color members + // ------------------------------------------------------------------------ + float H; + float S; + float L; +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/HtmlColor.cpp b/brain/sw/components/led-renderer/neopixel/internal/HtmlColor.cpp new file mode 100644 index 0000000000..018d58f561 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HtmlColor.cpp @@ -0,0 +1,58 @@ +/*------------------------------------------------------------------------- +This file contains the HtmlColor implementation + +Written by Unai Uribarri + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#include "HtmlColor.h" + +static inline char hexdigit(uint8_t v) +{ + return v + (v < 10 ? '0' : 'a' - 10); +} + + +size_t HtmlColor::ToNumericalString(char* buf, size_t bufSize) const +{ + size_t bufLen = bufSize - 1; + + if (bufLen-- > 0) + { + if (bufLen > 0) + { + buf[0] = '#'; + } + + uint32_t color = Color; + for (uint8_t indexDigit = 6; indexDigit > 0; indexDigit--) + { + if (bufLen > indexDigit) + { + buf[indexDigit] = hexdigit(color & 0x0000000f); + } + color >>= 4; + } + + buf[(bufLen < 7 ? bufLen : 7)] = 0; + } + return 7; +} diff --git a/brain/sw/components/led-renderer/neopixel/internal/HtmlColor.h b/brain/sw/components/led-renderer/neopixel/internal/HtmlColor.h new file mode 100644 index 0000000000..d03234f795 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HtmlColor.h @@ -0,0 +1,343 @@ +/*------------------------------------------------------------------------- +HtmlColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +#include +#include "RgbColor.h" + +#define MAX_HTML_COLOR_NAME_LEN 21 + +#ifndef pgm_read_ptr +// ESP8266 doesn't define this macro +#define pgm_read_ptr(addr) (*reinterpret_cast(addr)) +#endif + +#ifndef countof +#define countof(array) (sizeof(array)/sizeof(array[0])) +#endif + +// ------------------------------------------------------------------------ +// HtmlColorPair represents an association between a name and a HTML color code +// ------------------------------------------------------------------------ +struct HtmlColorPair +{ + PGM_P Name; + uint32_t Color; +}; + +// ------------------------------------------------------------------------ +// HtmlShortColorNames is a template class used for Parse and ToString +// ------------------------------------------------------------------------ +class HtmlShortColorNames +{ +public: + static const HtmlColorPair* Pair(uint8_t index); + static uint8_t Count(); +}; + +// ------------------------------------------------------------------------ +// HtmlColorNames is a template class used for Parse and ToString +// ------------------------------------------------------------------------ +class HtmlColorNames +{ +public: + static const HtmlColorPair* Pair(uint8_t index); + static uint8_t Count(); +}; + +// ------------------------------------------------------------------------ +// HtmlColor represents a color object that is represented by a single uint32 +// value. It contains minimal routines and used primarily as a helper to +// initialize other color objects +// ------------------------------------------------------------------------ +struct HtmlColor +{ + // ------------------------------------------------------------------------ + // Construct a HtmlColor using a single value (0-0xffffff) + // This works well for hexidecimal color definitions + // 0xff0000 = red, 0x00ff00 = green, and 0x0000ff = blue + // ------------------------------------------------------------------------ + HtmlColor(uint32_t color) : + Color(color) + { + }; + + // ------------------------------------------------------------------------ + // Construct a HtmlColor using RgbColor + // ------------------------------------------------------------------------ + HtmlColor(const RgbColor& color) + { + Color = (uint32_t)color.R << 16 | (uint32_t)color.G << 8 | (uint32_t)color.B; + } + + // ------------------------------------------------------------------------ + // Construct a HtmlColor that will have its values set in latter operations + // CAUTION: The Color member is not initialized and may not be consistent + // ------------------------------------------------------------------------ + HtmlColor() + { + }; + + // ------------------------------------------------------------------------ + // Comparison operators + // ------------------------------------------------------------------------ + bool operator==(const HtmlColor& other) const + { + return (Color == other.Color); + }; + + bool operator!=(const HtmlColor& other) const + { + return !(*this == other); + }; + + // ------------------------------------------------------------------------ + // Parse a HTML4/CSS3 color name + // T_HTMLCOLORNAMES - template class that defines the collection of names + // name - the color name + // nameSize - the max size of name to check + // + // returns - zero if failed, or the number of chars parsed + // + // It will stop parsing name when a null terminator is reached, + // nameSize is reached, no match is found in the name/color pair table, or + // a non-alphanumeric is read like seperators or whitespace. + // + // It also accepts 3 or 6 digit hexadecimal notation (#rgb or #rrggbb), + // but it doesn't accept RGB, RGBA nor HSL values. + // + // See https://www.w3.org/TR/css3-color/#SRGB + // + // name must point to the first non-whitespace character to be parsed + // parsing will stop at the first non-alpha numeric + // + // Name MUST NOT be a PROGMEM pointer + // + // examples: + // Parse(buff, buffSize); + // Parse(buff, buffSize); + // ------------------------------------------------------------------------ + + template size_t Parse(const char* name, size_t nameSize) + { + // TS: Disabled because not interesting +// if (nameSize > 0) +// { +// if (name[0] == '#') +// { +// // Parse an hexadecimal notation "#rrbbgg" or "#rgb" +// // +// uint8_t temp[6]; // stores preconverted chars to hex values +// uint8_t tempSize = 0; +// +// for (uint8_t indexChar = 1; indexChar < nameSize && indexChar < 8; ++indexChar) +// { +// char c = name[indexChar]; +// if (c >= '0' && c <= '9') +// { +// c -= '0'; +// } +// else +// { +// // Convert a letter to lower case (only for ASCII letters) +// // It's faster & smaller than tolower() +// c |= 32; +// if (c >= 'a' && c <= 'f') +// { +// c = c - 'a' + 10; +// } +// else +// { +// // we found an non hexidecimal char +// // which could be null, deliminator, or other spacing +// break; +// } +// } +// +// temp[tempSize] = c; +// tempSize++; +// } +// +// if (tempSize != 3 && tempSize != 6) +// { +// // invalid count of numerical chars +// return 0; +// } +// else +// { +// uint32_t color = 0; +// for (uint8_t indexChar = 0; indexChar < tempSize; ++indexChar) +// { +// color = color * 16 + temp[indexChar]; +// if (tempSize == 3) +// { +// // 3 digit hexadecimal notation can be supported easily +// // duplicating digits. +// color = color * 16 + temp[indexChar]; +// } +// } +// +// Color = color; +// return tempSize; +// } +// } +// else +// { +// // parse a standard name for the color +// // +// +// // the normal list is small enough a binary search isn't interesting, +// for (uint8_t indexName = 0; indexName < T_HTMLCOLORNAMES::Count(); ++indexName) +// { +// const HtmlColorPair* colorPair = T_HTMLCOLORNAMES::Pair(indexName); +// PGM_P searchName = (PGM_P)pgm_read_ptr(&colorPair->Name); +// size_t str1Size = nameSize; +// const char* str1 = name; +// const char* str2P = searchName; +// +// uint16_t result; +// +// while (str1Size > 0) +// { +// char ch1 = tolower(*str1++); +// char ch2 = tolower(pgm_read_byte(str2P++)); +// result = ch1 - ch2; +// if (result != 0 || ch2 == '\0') +// { +// if (ch2 == '\0' && !isalnum(ch1)) +// { +// // the string continues but is not part of a +// // valid color name, +// // ends in white space, deliminator, etc +// result = 0; +// } +// break; +// } +// result = -1; // have not reached the end of searchName; +// str1Size--; +// } +// +// if (result == 0) +// { +// Color = pgm_read_dword(&colorPair->Color); +// return nameSize - str1Size; +// } +// } +// } +// } + + return 0; + } + + template size_t Parse(const char* name) + { + return Parse(name, MAX_HTML_COLOR_NAME_LEN + 1); + } + +// TS: Disabled to remove Arduino String concept +// template size_t Parse(String const &name) +// { +// return Parse(name.c_str(), name.length() + 1); +// } + + // ------------------------------------------------------------------------ + // Converts this color code to its HTML4/CSS3 name + // T_HTMLCOLORNAMES - template class that defines the collection of names + // buf - buffer to write the string + // bufSize - actual size of buf array + // + // It returns the number of chars required not including the NUL terminator. + // + // If there is not enough space in the buffer, it will write as many + // characters as allowed and will always finish the buffer with a NUL char + // + // examples: + // ToString(buf, bufSize); + // ToString(buf, bufSize); + // ------------------------------------------------------------------------ + + template size_t ToString(char* buf, size_t bufSize) const + { + // TS: Disabled as uninteresting +// // search for a color value/name pairs first +// for (uint8_t indexName = 0; indexName < T_HTMLCOLORNAMES::Count(); ++indexName) +// { +// const HtmlColorPair* colorPair = T_HTMLCOLORNAMES::Pair(indexName); +// if (pgm_read_dword(&colorPair->Color) == Color) +// { +// PGM_P name = (PGM_P)pgm_read_ptr(&colorPair->Name); +// strncpy_P(buf, name, bufSize); +// return strlen_P(name); +// } +// } + + // no color name pair match, convert using numerical format + return ToNumericalString(buf, bufSize); + } + + // ------------------------------------------------------------------------ + // Converts this color code to its HTML4/CSS3 numerical name + // + // buf - buffer to write the string + // bufSize - actual size of buf array + // + // It returns the number of chars required not including the NUL terminator. + // + // If there is not enough space in the buffer, it will write as many + // characters as allowed and will always finish the buffer with a NUL char + // ------------------------------------------------------------------------ + + size_t ToNumericalString(char* buf, size_t bufSize) const; + + // ------------------------------------------------------------------------ + // BilinearBlend between four colors by the amount defined by 2d variable + // c00 - upper left quadrant color + // c01 - upper right quadrant color + // c10 - lower left quadrant color + // c11 - lower right quadrant color + // x - unit value (0.0 - 1.0) that defines the blend progress in horizontal space + // y - unit value (0.0 - 1.0) that defines the blend progress in vertical space + // ------------------------------------------------------------------------ + + static HtmlColor BilinearBlend(const HtmlColor& c00, + const HtmlColor& c01, + const HtmlColor& c10, + const HtmlColor& c11, + float x, + float y) + { + return RgbColor::BilinearBlend(c00, c01, c10, c11, x, y); + } + + // ------------------------------------------------------------------------ + // Color member (0-0xffffff) where + // 0xff0000 is red + // 0x00ff00 is green + // 0x0000ff is blue + // ------------------------------------------------------------------------ + uint32_t Color; +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.cpp b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.cpp new file mode 100644 index 0000000000..87dda4b3d8 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.cpp @@ -0,0 +1,178 @@ +/*------------------------------------------------------------------------- +HtmlColorNameStrings provides the implemenation of the color string names + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "HtmlColorNameStrings.h" + +/* HTML4 color names */ +const char c_HtmlNameAqua[] PROGMEM = "aqua"; +const char c_HtmlNameBlack[] PROGMEM = "black"; +const char c_HtmlNameBlue[] PROGMEM = "blue"; +const char c_HtmlNameFuchsia[] PROGMEM = "fuchsia"; +const char c_HtmlNameGray[] PROGMEM = "gray"; +const char c_HtmlNameGreen[] PROGMEM = "green"; +const char c_HtmlNameLime[] PROGMEM = "lime"; +const char c_HtmlNameMaroon[] PROGMEM = "maroon"; +const char c_HtmlNameNavy[] PROGMEM = "navy"; +const char c_HtmlNameOlive[] PROGMEM = "olive"; +const char c_HtmlNameOrange[] PROGMEM = "orange"; +const char c_HtmlNamePurple[] PROGMEM = "purple"; +const char c_HtmlNameRed[] PROGMEM = "red"; +const char c_HtmlNameSilver[] PROGMEM = "silver"; +const char c_HtmlNameTeal[] PROGMEM = "teal"; +const char c_HtmlNameWhite[] PROGMEM = "white"; +const char c_HtmlNameYellow[] PROGMEM = "yellow"; + +/* Additional CSS3 color names */ +const char c_HtmlNameAliceBlue[] PROGMEM = "aliceblue"; +const char c_HtmlNameAntiqueWhite[] PROGMEM = "antiquewhite"; +const char c_HtmlNameAquamarine[] PROGMEM = "aquamarine"; +const char c_HtmlNameAzure[] PROGMEM = "azure"; +const char c_HtmlNameBeige[] PROGMEM = "beige"; +const char c_HtmlNameBisque[] PROGMEM = "bisque"; +const char c_HtmlNameBlanchedAlmond[] PROGMEM = "blanchedalmond"; +const char c_HtmlNameBlueViolet[] PROGMEM = "blueviolet"; +const char c_HtmlNameBrown[] PROGMEM = "brown"; +const char c_HtmlNameBurlyWood[] PROGMEM = "burlywood"; +const char c_HtmlNameCadetBlue[] PROGMEM = "cadetblue"; +const char c_HtmlNameChartreuse[] PROGMEM = "chartreuse"; +const char c_HtmlNameChocolate[] PROGMEM = "chocolate"; +const char c_HtmlNameCoral[] PROGMEM = "coral"; +const char c_HtmlNameCornflowerBlue[] PROGMEM = "cornflowerblue"; +const char c_HtmlNameCornsilk[] PROGMEM = "cornsilk"; +const char c_HtmlNameCrimson[] PROGMEM = "crimson"; +const char c_HtmlNameCyan[] PROGMEM = "cyan"; +const char c_HtmlNameDarkBlue[] PROGMEM = "darkblue"; +const char c_HtmlNameDarkCyan[] PROGMEM = "darkcyan"; +const char c_HtmlNameDarkGoldenrod[] PROGMEM = "darkgoldenrod"; +const char c_HtmlNameDarkGray[] PROGMEM = "darkgray"; +const char c_HtmlNameDarkGreen[] PROGMEM = "darkgreen"; +const char c_HtmlNameDarkGrey[] PROGMEM = "darkgrey"; +const char c_HtmlNameDarkKhaki[] PROGMEM = "darkkhaki"; +const char c_HtmlNameDarkMagenta[] PROGMEM = "darkmagenta"; +const char c_HtmlNameDarkOliveGreen[] PROGMEM = "darkolivegreen"; +const char c_HtmlNameDarkOrange[] PROGMEM = "darkorange"; +const char c_HtmlNameDarkOrchid[] PROGMEM = "darkorchid"; +const char c_HtmlNameDarkRed[] PROGMEM = "darkred"; +const char c_HtmlNameDarkSalmon[] PROGMEM = "darksalmon"; +const char c_HtmlNameDarkSeaGreen[] PROGMEM = "darkseagreen"; +const char c_HtmlNameDarkSlateBlue[] PROGMEM = "darkslateblue"; +const char c_HtmlNameDarkSlateGray[] PROGMEM = "darkslategray"; +const char c_HtmlNameDarkSlateGrey[] PROGMEM = "darkslategrey"; +const char c_HtmlNameDarkTurquoise[] PROGMEM = "darkturquoise"; +const char c_HtmlNameDarkViolet[] PROGMEM = "darkviolet"; +const char c_HtmlNameDeepPink[] PROGMEM = "deeppink"; +const char c_HtmlNameDeepSkyBlue[] PROGMEM = "deepskyblue"; +const char c_HtmlNameDimGray[] PROGMEM = "dimgray"; +const char c_HtmlNameDimGrey[] PROGMEM = "dimgrey"; +const char c_HtmlNameDodgerBlue[] PROGMEM = "dodgerblue"; +const char c_HtmlNameFirebrick[] PROGMEM = "firebrick"; +const char c_HtmlNameFloralWhite[] PROGMEM = "floralwhite"; +const char c_HtmlNameForestGreen[] PROGMEM = "forestgreen"; +const char c_HtmlNameGainsboro[] PROGMEM = "gainsboro"; +const char c_HtmlNameGhostWhite[] PROGMEM = "ghostwhite"; +const char c_HtmlNameGold[] PROGMEM = "gold"; +const char c_HtmlNameGoldenrod[] PROGMEM = "goldenrod"; +const char c_HtmlNameGreenYellow[] PROGMEM = "greenyellow"; +const char c_HtmlNameGrey[] PROGMEM = "grey"; +const char c_HtmlNameHoneydew[] PROGMEM = "honeydew"; +const char c_HtmlNameHotPink[] PROGMEM = "hotpink"; +const char c_HtmlNameIndianRed[] PROGMEM = "indianred"; +const char c_HtmlNameIndigo[] PROGMEM = "indigo"; +const char c_HtmlNameIvory[] PROGMEM = "ivory"; +const char c_HtmlNameKhaki[] PROGMEM = "khaki"; +const char c_HtmlNameLavender[] PROGMEM = "lavender"; +const char c_HtmlNameLavenderBlush[] PROGMEM = "lavenderblush"; +const char c_HtmlNameLawnGreen[] PROGMEM = "lawngreen"; +const char c_HtmlNameLemonChiffon[] PROGMEM = "lemonchiffon"; +const char c_HtmlNameLightBlue[] PROGMEM = "lightblue"; +const char c_HtmlNameLightCoral[] PROGMEM = "lightcoral"; +const char c_HtmlNameLightCyan[] PROGMEM = "lightcyan"; +const char c_HtmlNameLightGoldenrodYellow[] PROGMEM = "lightgoldenrodyellow"; +const char c_HtmlNameLightGray[] PROGMEM = "lightgray"; +const char c_HtmlNameLightGreen[] PROGMEM = "lightgreen"; +const char c_HtmlNameLightGrey[] PROGMEM = "lightgrey"; +const char c_HtmlNameLightPink[] PROGMEM = "lightpink"; +const char c_HtmlNameLightSalmon[] PROGMEM = "lightsalmon"; +const char c_HtmlNameLightSeaGreen[] PROGMEM = "lightseagreen"; +const char c_HtmlNameLightSkyBlue[] PROGMEM = "lightskyblue"; +const char c_HtmlNameLightSlateGray[] PROGMEM = "lightslategray"; +const char c_HtmlNameLightSlateGrey[] PROGMEM = "lightslategrey"; +const char c_HtmlNameLightSteelBlue[] PROGMEM = "lightsteelblue"; +const char c_HtmlNameLightYellow[] PROGMEM = "lightyellow"; +const char c_HtmlNameLimeGreen[] PROGMEM = "limegreen"; +const char c_HtmlNameLinen[] PROGMEM = "linen"; +const char c_HtmlNameMagenta[] PROGMEM = "magenta"; +const char c_HtmlNameMediumAquamarine[] PROGMEM = "mediumaquamarine"; +const char c_HtmlNameMediumBlue[] PROGMEM = "mediumblue"; +const char c_HtmlNameMediumOrchid[] PROGMEM = "mediumorchid"; +const char c_HtmlNameMediumPurple[] PROGMEM = "mediumpurple"; +const char c_HtmlNameMediumSeagreen[] PROGMEM = "mediumseagreen"; +const char c_HtmlNameMediumSlateBlue[] PROGMEM = "mediumslateblue"; +const char c_HtmlNameMediumSpringGreen[] PROGMEM = "mediumspringgreen"; +const char c_HtmlNameMediumTurquoise[] PROGMEM = "mediumturquoise"; +const char c_HtmlNameMediumVioletRed[] PROGMEM = "mediumvioletred"; +const char c_HtmlNameMidnightBlue[] PROGMEM = "midnightblue"; +const char c_HtmlNameMintCream[] PROGMEM = "mintcream"; +const char c_HtmlNameMistyRose[] PROGMEM = "mistyrose"; +const char c_HtmlNameMoccasin[] PROGMEM = "moccasin"; +const char c_HtmlNameNavajoWhite[] PROGMEM = "navajowhite"; +const char c_HtmlNameOldLace[] PROGMEM = "oldlace"; +const char c_HtmlNameOliveDrab[] PROGMEM = "olivedrab"; +const char c_HtmlNameOrangeRed[] PROGMEM = "orangered"; +const char c_HtmlNameOrchid[] PROGMEM = "orchid"; +const char c_HtmlNamePaleGoldenrod[] PROGMEM = "palegoldenrod"; +const char c_HtmlNamePaleGreen[] PROGMEM = "palegreen"; +const char c_HtmlNamePaleTurquoise[] PROGMEM = "paleturquoise"; +const char c_HtmlNamePaleVioletRed[] PROGMEM = "palevioletred"; +const char c_HtmlNamePapayaWhip[] PROGMEM = "papayawhip"; +const char c_HtmlNamePeachPuff[] PROGMEM = "peachpuff"; +const char c_HtmlNamePeru[] PROGMEM = "peru"; +const char c_HtmlNamePink[] PROGMEM = "pink"; +const char c_HtmlNamePlum[] PROGMEM = "plum"; +const char c_HtmlNamePowderBlue[] PROGMEM = "powderblue"; +const char c_HtmlNameRosyBrown[] PROGMEM = "rosybrown"; +const char c_HtmlNameRoyalBlue[] PROGMEM = "royalblue"; +const char c_HtmlNameSaddleBrown[] PROGMEM = "saddlebrown"; +const char c_HtmlNameSalmon[] PROGMEM = "salmon"; +const char c_HtmlNameSandyBrown[] PROGMEM = "sandybrown"; +const char c_HtmlNameSeaGreen[] PROGMEM = "seagreen"; +const char c_HtmlNameSeaShell[] PROGMEM = "seashell"; +const char c_HtmlNameSienna[] PROGMEM = "sienna"; +const char c_HtmlNameSkyBlue[] PROGMEM = "skyblue"; +const char c_HtmlNameSlateBlue[] PROGMEM = "slateblue"; +const char c_HtmlNameSlateGray[] PROGMEM = "slategray"; +const char c_HtmlNameSlateGrey[] PROGMEM = "slategrey"; +const char c_HtmlNameSnow[] PROGMEM = "snow"; +const char c_HtmlNameSpringGreen[] PROGMEM = "springgreen"; +const char c_HtmlNameSteelBlue[] PROGMEM = "steelblue"; +const char c_HtmlNameTan[] PROGMEM = "tan"; +const char c_HtmlNameThistle[] PROGMEM = "thistle"; +const char c_HtmlNameTomato[] PROGMEM = "tomato"; +const char c_HtmlNameTurquoise[] PROGMEM = "turquoise"; +const char c_HtmlNameViolet[] PROGMEM = "violet"; +const char c_HtmlNameWheat[] PROGMEM = "wheat"; +const char c_HtmlNameWhiteSmoke[] PROGMEM = "whitesmoke"; +const char c_HtmlNameYellowGreen[] PROGMEM = "yellowgreen"; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.h b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.h new file mode 100644 index 0000000000..86ffcf4f23 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNameStrings.h @@ -0,0 +1,180 @@ +/*------------------------------------------------------------------------- +HtmlColorNameStrings provides the declaration of the color string names + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#include + +/* HTML4 color names */ +extern const char c_HtmlNameAqua[] PROGMEM; +extern const char c_HtmlNameBlack[] PROGMEM; +extern const char c_HtmlNameBlue[] PROGMEM; +extern const char c_HtmlNameFuchsia[] PROGMEM; +extern const char c_HtmlNameGray[] PROGMEM; +extern const char c_HtmlNameGreen[] PROGMEM; +extern const char c_HtmlNameLime[] PROGMEM; +extern const char c_HtmlNameMaroon[] PROGMEM; +extern const char c_HtmlNameNavy[] PROGMEM; +extern const char c_HtmlNameOlive[] PROGMEM; +extern const char c_HtmlNameOrange[] PROGMEM; +extern const char c_HtmlNamePurple[] PROGMEM; +extern const char c_HtmlNameRed[] PROGMEM; +extern const char c_HtmlNameSilver[] PROGMEM; +extern const char c_HtmlNameTeal[] PROGMEM; +extern const char c_HtmlNameWhite[] PROGMEM; +extern const char c_HtmlNameYellow[] PROGMEM; + +/* Additional CSS3 color names */ +extern const char c_HtmlNameAliceBlue[] PROGMEM; +extern const char c_HtmlNameAntiqueWhite[] PROGMEM; +extern const char c_HtmlNameAquamarine[] PROGMEM; +extern const char c_HtmlNameAzure[] PROGMEM; +extern const char c_HtmlNameBeige[] PROGMEM; +extern const char c_HtmlNameBisque[] PROGMEM; +extern const char c_HtmlNameBlanchedAlmond[] PROGMEM; +extern const char c_HtmlNameBlueViolet[] PROGMEM; +extern const char c_HtmlNameBrown[] PROGMEM; +extern const char c_HtmlNameBurlyWood[] PROGMEM; +extern const char c_HtmlNameCadetBlue[] PROGMEM; +extern const char c_HtmlNameChartreuse[] PROGMEM; +extern const char c_HtmlNameChocolate[] PROGMEM; +extern const char c_HtmlNameCoral[] PROGMEM; +extern const char c_HtmlNameCornflowerBlue[] PROGMEM; +extern const char c_HtmlNameCornsilk[] PROGMEM; +extern const char c_HtmlNameCrimson[] PROGMEM; +extern const char c_HtmlNameCyan[] PROGMEM; +extern const char c_HtmlNameDarkBlue[] PROGMEM; +extern const char c_HtmlNameDarkCyan[] PROGMEM; +extern const char c_HtmlNameDarkGoldenrod[] PROGMEM; +extern const char c_HtmlNameDarkGray[] PROGMEM; +extern const char c_HtmlNameDarkGreen[] PROGMEM; +extern const char c_HtmlNameDarkGrey[] PROGMEM; +extern const char c_HtmlNameDarkKhaki[] PROGMEM; +extern const char c_HtmlNameDarkMagenta[] PROGMEM; +extern const char c_HtmlNameDarkOliveGreen[] PROGMEM; +extern const char c_HtmlNameDarkOrange[] PROGMEM; +extern const char c_HtmlNameDarkOrchid[] PROGMEM; +extern const char c_HtmlNameDarkRed[] PROGMEM; +extern const char c_HtmlNameDarkSalmon[] PROGMEM; +extern const char c_HtmlNameDarkSeaGreen[] PROGMEM; +extern const char c_HtmlNameDarkSlateBlue[] PROGMEM; +extern const char c_HtmlNameDarkSlateGray[] PROGMEM; +extern const char c_HtmlNameDarkSlateGrey[] PROGMEM; +extern const char c_HtmlNameDarkTurquoise[] PROGMEM; +extern const char c_HtmlNameDarkViolet[] PROGMEM; +extern const char c_HtmlNameDeepPink[] PROGMEM; +extern const char c_HtmlNameDeepSkyBlue[] PROGMEM; +extern const char c_HtmlNameDimGray[] PROGMEM; +extern const char c_HtmlNameDimGrey[] PROGMEM; +extern const char c_HtmlNameDodgerBlue[] PROGMEM; +extern const char c_HtmlNameFirebrick[] PROGMEM; +extern const char c_HtmlNameFloralWhite[] PROGMEM; +extern const char c_HtmlNameForestGreen[] PROGMEM; +extern const char c_HtmlNameGainsboro[] PROGMEM; +extern const char c_HtmlNameGhostWhite[] PROGMEM; +extern const char c_HtmlNameGold[] PROGMEM; +extern const char c_HtmlNameGoldenrod[] PROGMEM; +extern const char c_HtmlNameGreenYellow[] PROGMEM; +extern const char c_HtmlNameGrey[] PROGMEM; +extern const char c_HtmlNameHoneydew[] PROGMEM; +extern const char c_HtmlNameHotPink[] PROGMEM; +extern const char c_HtmlNameIndianRed[] PROGMEM; +extern const char c_HtmlNameIndigo[] PROGMEM; +extern const char c_HtmlNameIvory[] PROGMEM; +extern const char c_HtmlNameKhaki[] PROGMEM; +extern const char c_HtmlNameLavender[] PROGMEM; +extern const char c_HtmlNameLavenderBlush[] PROGMEM; +extern const char c_HtmlNameLawnGreen[] PROGMEM; +extern const char c_HtmlNameLemonChiffon[] PROGMEM; +extern const char c_HtmlNameLightBlue[] PROGMEM; +extern const char c_HtmlNameLightCoral[] PROGMEM; +extern const char c_HtmlNameLightCyan[] PROGMEM; +extern const char c_HtmlNameLightGoldenrodYellow[] PROGMEM; +extern const char c_HtmlNameLightGray[] PROGMEM; +extern const char c_HtmlNameLightGreen[] PROGMEM; +extern const char c_HtmlNameLightGrey[] PROGMEM; +extern const char c_HtmlNameLightPink[] PROGMEM; +extern const char c_HtmlNameLightSalmon[] PROGMEM; +extern const char c_HtmlNameLightSeaGreen[] PROGMEM; +extern const char c_HtmlNameLightSkyBlue[] PROGMEM; +extern const char c_HtmlNameLightSlateGray[] PROGMEM; +extern const char c_HtmlNameLightSlateGrey[] PROGMEM; +extern const char c_HtmlNameLightSteelBlue[] PROGMEM; +extern const char c_HtmlNameLightYellow[] PROGMEM; +extern const char c_HtmlNameLimeGreen[] PROGMEM; +extern const char c_HtmlNameLinen[] PROGMEM; +extern const char c_HtmlNameMagenta[] PROGMEM; +extern const char c_HtmlNameMediumAquamarine[] PROGMEM; +extern const char c_HtmlNameMediumBlue[] PROGMEM; +extern const char c_HtmlNameMediumOrchid[] PROGMEM; +extern const char c_HtmlNameMediumPurple[] PROGMEM; +extern const char c_HtmlNameMediumSeagreen[] PROGMEM; +extern const char c_HtmlNameMediumSlateBlue[] PROGMEM; +extern const char c_HtmlNameMediumSpringGreen[] PROGMEM; +extern const char c_HtmlNameMediumTurquoise[] PROGMEM; +extern const char c_HtmlNameMediumVioletRed[] PROGMEM; +extern const char c_HtmlNameMidnightBlue[] PROGMEM; +extern const char c_HtmlNameMintCream[] PROGMEM; +extern const char c_HtmlNameMistyRose[] PROGMEM; +extern const char c_HtmlNameMoccasin[] PROGMEM; +extern const char c_HtmlNameNavajoWhite[] PROGMEM; +extern const char c_HtmlNameOldLace[] PROGMEM; +extern const char c_HtmlNameOliveDrab[] PROGMEM; +extern const char c_HtmlNameOrangeRed[] PROGMEM; +extern const char c_HtmlNameOrchid[] PROGMEM; +extern const char c_HtmlNamePaleGoldenrod[] PROGMEM; +extern const char c_HtmlNamePaleGreen[] PROGMEM; +extern const char c_HtmlNamePaleTurquoise[] PROGMEM; +extern const char c_HtmlNamePaleVioletRed[] PROGMEM; +extern const char c_HtmlNamePapayaWhip[] PROGMEM; +extern const char c_HtmlNamePeachPuff[] PROGMEM; +extern const char c_HtmlNamePeru[] PROGMEM; +extern const char c_HtmlNamePink[] PROGMEM; +extern const char c_HtmlNamePlum[] PROGMEM; +extern const char c_HtmlNamePowderBlue[] PROGMEM; +extern const char c_HtmlNameRosyBrown[] PROGMEM; +extern const char c_HtmlNameRoyalBlue[] PROGMEM; +extern const char c_HtmlNameSaddleBrown[] PROGMEM; +extern const char c_HtmlNameSalmon[] PROGMEM; +extern const char c_HtmlNameSandyBrown[] PROGMEM; +extern const char c_HtmlNameSeaGreen[] PROGMEM; +extern const char c_HtmlNameSeaShell[] PROGMEM; +extern const char c_HtmlNameSienna[] PROGMEM; +extern const char c_HtmlNameSkyBlue[] PROGMEM; +extern const char c_HtmlNameSlateBlue[] PROGMEM; +extern const char c_HtmlNameSlateGray[] PROGMEM; +extern const char c_HtmlNameSlateGrey[] PROGMEM; +extern const char c_HtmlNameSnow[] PROGMEM; +extern const char c_HtmlNameSpringGreen[] PROGMEM; +extern const char c_HtmlNameSteelBlue[] PROGMEM; +extern const char c_HtmlNameTan[] PROGMEM; +extern const char c_HtmlNameThistle[] PROGMEM; +extern const char c_HtmlNameTomato[] PROGMEM; +extern const char c_HtmlNameTurquoise[] PROGMEM; +extern const char c_HtmlNameViolet[] PROGMEM; +extern const char c_HtmlNameWheat[] PROGMEM; +extern const char c_HtmlNameWhiteSmoke[] PROGMEM; +extern const char c_HtmlNameYellowGreen[] PROGMEM; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNames.cpp b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNames.cpp new file mode 100644 index 0000000000..b1098eaae4 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorNames.cpp @@ -0,0 +1,188 @@ +/*------------------------------------------------------------------------- +HtmlColorNames provides a template class for access to the full name table + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "HtmlColor.h" +#include "HtmlColorNameStrings.h" + +static const HtmlColorPair c_ColorNames[] PROGMEM = { + { c_HtmlNameAliceBlue, 0xf0f8ff }, + { c_HtmlNameAntiqueWhite, 0xfaebd7 }, + { c_HtmlNameAqua, 0xffff }, + { c_HtmlNameAquamarine, 0x7fffd4 }, + { c_HtmlNameAzure, 0xf0ffff }, + { c_HtmlNameBeige, 0xf5f5dc }, + { c_HtmlNameBisque, 0xffe4c4 }, + { c_HtmlNameBlack, 0x0 }, + { c_HtmlNameBlanchedAlmond, 0xffebcd }, + { c_HtmlNameBlue, 0xff }, + { c_HtmlNameBlueViolet, 0x8a2be2 }, + { c_HtmlNameBrown, 0xa52a2a }, + { c_HtmlNameBurlyWood, 0xdeb887 }, + { c_HtmlNameCadetBlue, 0x5f9ea0 }, + { c_HtmlNameChartreuse, 0x7fff00 }, + { c_HtmlNameChocolate, 0xd2691e }, + { c_HtmlNameCoral, 0xff7f50 }, + { c_HtmlNameCornflowerBlue, 0x6495ed }, + { c_HtmlNameCornsilk, 0xfff8dc }, + { c_HtmlNameCrimson, 0xdc143c }, + { c_HtmlNameCyan, 0xffff }, + { c_HtmlNameDarkBlue, 0x8b }, + { c_HtmlNameDarkCyan, 0x8b8b }, + { c_HtmlNameDarkGoldenrod, 0xb8860b }, + { c_HtmlNameDarkGray, 0xa9a9a9 }, + { c_HtmlNameDarkGreen, 0x6400 }, + { c_HtmlNameDarkGrey, 0xa9a9a9 }, + { c_HtmlNameDarkKhaki, 0xbdb76b }, + { c_HtmlNameDarkMagenta, 0x8b008b }, + { c_HtmlNameDarkOliveGreen, 0x556b2f }, + { c_HtmlNameDarkOrange, 0xff8c00 }, + { c_HtmlNameDarkOrchid, 0x9932cc }, + { c_HtmlNameDarkRed, 0x8b0000 }, + { c_HtmlNameDarkSalmon, 0xe9967a }, + { c_HtmlNameDarkSeaGreen, 0x8fbc8f }, + { c_HtmlNameDarkSlateBlue, 0x483d8b }, + { c_HtmlNameDarkSlateGray, 0x2f4f4f }, + { c_HtmlNameDarkSlateGrey, 0x2f4f4f }, + { c_HtmlNameDarkTurquoise, 0xced1 }, + { c_HtmlNameDarkViolet, 0x9400d3 }, + { c_HtmlNameDeepPink, 0xff1493 }, + { c_HtmlNameDeepSkyBlue, 0xbfff }, + { c_HtmlNameDimGray, 0x696969 }, + { c_HtmlNameDimGrey, 0x696969 }, + { c_HtmlNameDodgerBlue, 0x1e90ff }, + { c_HtmlNameFirebrick, 0xb22222 }, + { c_HtmlNameFloralWhite, 0xfffaf0 }, + { c_HtmlNameForestGreen, 0x228b22 }, + { c_HtmlNameFuchsia, 0xff00ff }, + { c_HtmlNameGainsboro, 0xdcdcdc }, + { c_HtmlNameGhostWhite, 0xf8f8ff }, + { c_HtmlNameGold, 0xffd700 }, + { c_HtmlNameGoldenrod, 0xdaa520 }, + { c_HtmlNameGray, 0x808080 }, + { c_HtmlNameGreen, 0x8000 }, + { c_HtmlNameGreenYellow, 0xadff2f }, + { c_HtmlNameGrey, 0x808080 }, + { c_HtmlNameHoneydew, 0xf0fff0 }, + { c_HtmlNameHotPink, 0xff69b4 }, + { c_HtmlNameIndianRed, 0xcd5c5c }, + { c_HtmlNameIndigo, 0x4b0082 }, + { c_HtmlNameIvory, 0xfffff0 }, + { c_HtmlNameKhaki, 0xf0e68c }, + { c_HtmlNameLavender, 0xe6e6fa }, + { c_HtmlNameLavenderBlush, 0xfff0f5 }, + { c_HtmlNameLawnGreen, 0x7cfc00 }, + { c_HtmlNameLemonChiffon, 0xfffacd }, + { c_HtmlNameLightBlue, 0xadd8e6 }, + { c_HtmlNameLightCoral, 0xf08080 }, + { c_HtmlNameLightCyan, 0xe0ffff }, + { c_HtmlNameLightGoldenrodYellow, 0xfafad2 }, + { c_HtmlNameLightGray, 0xd3d3d3 }, + { c_HtmlNameLightGreen, 0x90ee90 }, + { c_HtmlNameLightGrey, 0xd3d3d3 }, + { c_HtmlNameLightPink, 0xffb6c1 }, + { c_HtmlNameLightSalmon, 0xffa07a }, + { c_HtmlNameLightSeaGreen, 0x20b2aa }, + { c_HtmlNameLightSkyBlue, 0x87cefa }, + { c_HtmlNameLightSlateGray, 0x778899 }, + { c_HtmlNameLightSlateGrey, 0x778899 }, + { c_HtmlNameLightSteelBlue, 0xb0c4de }, + { c_HtmlNameLightYellow, 0xffffe0 }, + { c_HtmlNameLime, 0xff00 }, + { c_HtmlNameLimeGreen, 0x32cd32 }, + { c_HtmlNameLinen, 0xfaf0e6 }, + { c_HtmlNameMagenta, 0xff00ff }, + { c_HtmlNameMaroon, 0x800000 }, + { c_HtmlNameMediumAquamarine, 0x66cdaa }, + { c_HtmlNameMediumBlue, 0xcd }, + { c_HtmlNameMediumOrchid, 0xba55d3 }, + { c_HtmlNameMediumPurple, 0x9370d8 }, + { c_HtmlNameMediumSeagreen, 0x3cb371 }, + { c_HtmlNameMediumSlateBlue, 0x7b68ee }, + { c_HtmlNameMediumSpringGreen, 0xfa9a }, + { c_HtmlNameMediumTurquoise, 0x48d1cc }, + { c_HtmlNameMediumVioletRed, 0xc71585 }, + { c_HtmlNameMidnightBlue, 0x191970 }, + { c_HtmlNameMintCream, 0xf5fffa }, + { c_HtmlNameMistyRose, 0xffe4e1 }, + { c_HtmlNameMoccasin, 0xffe4b5 }, + { c_HtmlNameNavajoWhite, 0xffdead }, + { c_HtmlNameNavy, 0x80 }, + { c_HtmlNameOldLace, 0xfdf5e6 }, + { c_HtmlNameOlive, 0x808000 }, + { c_HtmlNameOliveDrab, 0x6b8e23 }, + { c_HtmlNameOrange, 0xffa500 }, + { c_HtmlNameOrangeRed, 0xff4500 }, + { c_HtmlNameOrchid, 0xda70d6 }, + { c_HtmlNamePaleGoldenrod, 0xeee8aa }, + { c_HtmlNamePaleGreen, 0x98fb98 }, + { c_HtmlNamePaleTurquoise, 0xafeeee }, + { c_HtmlNamePaleVioletRed, 0xd87093 }, + { c_HtmlNamePapayaWhip, 0xffefd5 }, + { c_HtmlNamePeachPuff, 0xffdab9 }, + { c_HtmlNamePeru, 0xcd853f }, + { c_HtmlNamePink, 0xffc0cb }, + { c_HtmlNamePlum, 0xdda0dd }, + { c_HtmlNamePowderBlue, 0xb0e0e6 }, + { c_HtmlNamePurple, 0x800080 }, + { c_HtmlNameRed, 0xff0000 }, + { c_HtmlNameRosyBrown, 0xbc8f8f }, + { c_HtmlNameRoyalBlue, 0x4169e1 }, + { c_HtmlNameSaddleBrown, 0x8b4513 }, + { c_HtmlNameSalmon, 0xfa8072 }, + { c_HtmlNameSandyBrown, 0xf4a460 }, + { c_HtmlNameSeaGreen, 0x2e8b57 }, + { c_HtmlNameSeaShell, 0xfff5ee }, + { c_HtmlNameSienna, 0xa0522d }, + { c_HtmlNameSilver, 0xc0c0c0 }, + { c_HtmlNameSkyBlue, 0x87ceeb }, + { c_HtmlNameSlateBlue, 0x6a5acd }, + { c_HtmlNameSlateGray, 0x708090 }, + { c_HtmlNameSlateGrey, 0x708090 }, + { c_HtmlNameSnow, 0xfffafa }, + { c_HtmlNameSpringGreen, 0xff7f }, + { c_HtmlNameSteelBlue, 0x4682b4 }, + { c_HtmlNameTan, 0xd2b48c }, + { c_HtmlNameTeal, 0x8080 }, + { c_HtmlNameThistle, 0xd8bfd8 }, + { c_HtmlNameTomato, 0xff6347 }, + { c_HtmlNameTurquoise, 0x40e0d0 }, + { c_HtmlNameViolet, 0xee82ee }, + { c_HtmlNameWheat, 0xf5deb3 }, + { c_HtmlNameWhite, 0xffffff }, + { c_HtmlNameWhiteSmoke, 0xf5f5f5 }, + { c_HtmlNameYellow, 0xffff00 }, + { c_HtmlNameYellowGreen, 0x9acd32 }, +}; + +const HtmlColorPair* HtmlColorNames::Pair(uint8_t index) +{ + return &c_ColorNames[index]; +} + +uint8_t HtmlColorNames::Count() +{ + return countof(c_ColorNames); +} diff --git a/brain/sw/components/led-renderer/neopixel/internal/HtmlColorShortNames.cpp b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorShortNames.cpp new file mode 100644 index 0000000000..3c4e27c3eb --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/HtmlColorShortNames.cpp @@ -0,0 +1,59 @@ +/*------------------------------------------------------------------------- +HtmlShortColorNames provides a template class for access to the short name table + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "HtmlColor.h" +#include "HtmlColorNameStrings.h" + +static const HtmlColorPair c_ShortColorNames[] PROGMEM = { + { c_HtmlNameAqua, 0xffff }, + { c_HtmlNameBlack, 0x0 }, + { c_HtmlNameBlue, 0xff }, + { c_HtmlNameFuchsia, 0xff00ff }, + { c_HtmlNameGray, 0x808080 }, + { c_HtmlNameGreen, 0x8000 }, + { c_HtmlNameLime, 0xff00 }, + { c_HtmlNameMaroon, 0x800000 }, + { c_HtmlNameNavy, 0x80 }, + { c_HtmlNameOlive, 0x808000 }, + { c_HtmlNameOrange, 0xffa500 }, + { c_HtmlNamePurple, 0x800080 }, + { c_HtmlNameRed, 0xff0000 }, + { c_HtmlNameSilver, 0xc0c0c0 }, + { c_HtmlNameTeal, 0x8080 }, + { c_HtmlNameWhite, 0xffffff }, + { c_HtmlNameYellow, 0xffff00 }, +}; + + +const HtmlColorPair* HtmlShortColorNames::Pair(uint8_t index) +{ + return &c_ShortColorNames[index]; +} + +uint8_t HtmlShortColorNames::Count() +{ + return countof(c_ShortColorNames); +} \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/Layouts.h b/brain/sw/components/led-renderer/neopixel/internal/Layouts.h new file mode 100644 index 0000000000..0df0049d7d --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/Layouts.h @@ -0,0 +1,426 @@ +#pragma once +/*------------------------------------------------------------------------- +Layout provides a collection of class objects that are used with NeoTopology +object. +They define the specific layout of pixels and do the math to change the 2d +cordinate space to 1d cordinate space + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +const uint16_t PixelIndex_OutOfBounds = 0xffff; + +//----------------------------------------------------------------------------- +// RowMajor +//----------------------------------------------------------------------------- + +class RowMajorLayout; +class RowMajor90Layout; +class RowMajor180Layout; +class RowMajor270Layout; + +class RowMajorTilePreference +{ +public: + typedef RowMajorLayout EvenRowEvenColumnLayout; + typedef RowMajor270Layout EvenRowOddColumnLayout; + typedef RowMajor90Layout OddRowEvenColumnLayout; + typedef RowMajor180Layout OddRowOddColumnLayout; +}; + +// layout example of 4x4 +// 00 01 02 03 +// 04 05 06 07 +// 08 09 10 11 +// 12 13 14 15 +// +class RowMajorLayout : public RowMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return x + y * width; + } +}; + +// layout example of 4x4 +// 12 08 04 00 +// 13 09 05 01 +// 14 10 06 02 +// 15 11 07 03 +// +class RowMajor90Layout : public RowMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return (width - 1 - x) * height + y; + } +}; + +// layout example of 4x4 +// 15 14 13 12 +// 11 10 09 08 +// 07 06 05 04 +// 03 02 01 00 +// +class RowMajor180Layout : public RowMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return (width - 1 - x) + (height - 1 - y) * width; + } +}; + +// layout example of 4x4 +// 03 07 11 15 +// 02 06 10 14 +// 01 05 09 13 +// 00 04 08 12 +// +class RowMajor270Layout : public RowMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return x * height + (height - 1 - y); + } +}; + + +//----------------------------------------------------------------------------- +// ColumnMajor +//----------------------------------------------------------------------------- + +class ColumnMajorLayout; +class ColumnMajor90Layout; +class ColumnMajor180Layout; +class ColumnMajor270Layout; + +class ColumnMajorTilePreference +{ +public: + typedef ColumnMajorLayout EvenRowEvenColumnLayout; + typedef ColumnMajor270Layout EvenRowOddColumnLayout; + typedef ColumnMajor90Layout OddRowEvenColumnLayout; + typedef ColumnMajor180Layout OddRowOddColumnLayout; +}; + +// layout example of 4x4 +// 00 04 08 12 +// 01 05 09 13 +// 02 06 10 14 +// 03 07 11 15 +// +class ColumnMajorLayout : public ColumnMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return x * height + y; + } +}; + +// layout example of 4x4 +// 03 02 01 00 +// 07 06 05 04 +// 11 10 09 08 +// 15 14 13 12 +// +class ColumnMajor90Layout : public ColumnMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return (width - 1 - x) + y * width; + } +}; + +// layout example of 4x4 +// 15 11 07 03 +// 14 10 06 02 +// 13 09 05 01 +// 12 08 04 00 +// +class ColumnMajor180Layout : public ColumnMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return (width - 1 - x) * height + (height - 1 - y); + } +}; + +// layout example of 4x4 +// 12 13 14 15 +// 08 09 10 11 +// 04 05 06 07 +// 00 01 02 03 +// +class ColumnMajor270Layout : public ColumnMajorTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + return x + (height - 1 - y) * width; + } +}; + + +//----------------------------------------------------------------------------- +// RowMajorAlternating +//----------------------------------------------------------------------------- + +class RowMajorAlternating270Layout; +class RowMajorAlternating90Layout; + +class RowMajorAlternatingTilePreference +{ +public: + typedef RowMajorAlternating270Layout EvenRowEvenColumnLayout; + typedef RowMajorAlternating270Layout EvenRowOddColumnLayout; + typedef RowMajorAlternating90Layout OddRowEvenColumnLayout; + typedef RowMajorAlternating90Layout OddRowOddColumnLayout; +}; + +// layout example of 4x4 +// 00 01 02 03 +// 07 06 05 04 +// 08 09 10 11 +// 15 14 13 12 +// +class RowMajorAlternatingLayout : public RowMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t index = y * width; + + if (y & 0x0001) + { + index += ((width - 1) - x); + } + else + { + index += x; + } + return index; + } +}; + +// layout example of 4x4 +// 15 08 07 00 +// 14 09 06 01 +// 13 10 05 02 +// 12 11 04 03 +// +class RowMajorAlternating90Layout : public RowMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t mx = ((width - 1) - x); + uint16_t index = mx * height; + + if (mx & 0x0001) + { + index += ((height - 1) - y); + } + else + { + index += y; + } + return index; + } +}; + +// layout example of 4x4 +// 12 13 14 15 +// 11 10 09 08 +// 04 05 06 07 +// 03 02 01 00 +// +class RowMajorAlternating180Layout : public RowMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t my = ((height - 1) - y); + uint16_t index = my * width; + + if (my & 0x0001) + { + index += x; + } + else + { + index += ((width - 1) - x); + } + return index; + } +}; + +// layout example of 4x4 +// 03 04 11 12 +// 02 05 10 13 +// 01 06 09 14 +// 00 07 08 15 +// +class RowMajorAlternating270Layout : public RowMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t index = x * height; + + if (x & 0x0001) + { + index += y; + } + else + { + index += ((height - 1) - y); + } + return index; + } +}; + + +//----------------------------------------------------------------------------- +// ColumnMajorAlternating +//----------------------------------------------------------------------------- + +class ColumnMajorAlternatingLayout; +class ColumnMajorAlternating180Layout; + +class ColumnMajorAlternatingTilePreference +{ +public: + typedef ColumnMajorAlternatingLayout EvenRowEvenColumnLayout; + typedef ColumnMajorAlternatingLayout EvenRowOddColumnLayout; + typedef ColumnMajorAlternating180Layout OddRowEvenColumnLayout; + typedef ColumnMajorAlternating180Layout OddRowOddColumnLayout; +}; + +// layout example of 4x4 +// 00 07 08 15 +// 01 06 09 14 +// 02 05 10 13 +// 03 04 11 12 +// +class ColumnMajorAlternatingLayout : public ColumnMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t index = x * height; + + if (x & 0x0001) + { + index += ((height - 1) - y); + } + else + { + index += y; + } + return index; + } +}; + +// layout example of 4x4 +// 03 02 01 00 +// 04 05 06 07 +// 11 10 09 08 +// 12 13 14 15 +// +class ColumnMajorAlternating90Layout : public ColumnMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t index = y * width; + + if (y & 0x0001) + { + index += x; + } + else + { + index += ((width - 1) - x); + } + return index; + } +}; + +// layout example of 4x4 +// 12 11 04 03 +// 13 10 05 02 +// 14 09 06 01 +// 15 08 07 00 +// +class ColumnMajorAlternating180Layout : public ColumnMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t mx = ((width - 1) - x); + uint16_t index = mx * height; + + if (mx & 0x0001) + { + index += y; + } + else + { + index += ((height - 1) - y); + } + return index; + } +}; + +// layout example of 4x4 +// 15 14 13 12 +// 08 09 10 11 +// 07 06 05 04 +// 00 01 02 03 +// +class ColumnMajorAlternating270Layout : public ColumnMajorAlternatingTilePreference +{ +public: + static uint16_t Map(uint16_t width, uint16_t height, uint16_t x, uint16_t y) + { + uint16_t my = ((height - 1) - y); + uint16_t index = my * width; + + if (my & 0x0001) + { + index += ((width - 1) - x); + } + else + { + index += x; + } + return index; + } +}; diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoArmMethod.h b/brain/sw/components/led-renderer/neopixel/internal/NeoArmMethod.h new file mode 100644 index 0000000000..7af07d3164 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoArmMethod.h @@ -0,0 +1,740 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for ARM MCUs. +Teensy 3.0, 3.1, LC, Arduino Due + +Written by Michael C. Miller. +Some work taken from the Adafruit NeoPixel library. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. +The contents of this file were taken from the Adafruit NeoPixel library +and modified only to fit within individual calling functions. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#if defined(__arm__) + +template class NeoArmMethodBase +{ +public: + NeoArmMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize) : + _pin(pin) + { + pinMode(pin, OUTPUT); + + _sizePixels = pixelCount * elementSize; + _pixels = (uint8_t*)malloc(_sizePixels); + memset(_pixels, 0, _sizePixels); + } + + ~NeoArmMethodBase() + { + pinMode(_pin, INPUT); + + free(_pixels); + } + + bool IsReadyToUpdate() const + { + uint32_t delta = micros() - _endTime; + + return (delta >= T_SPEED::ResetTimeUs); + } + + void Initialize() + { + digitalWrite(_pin, LOW); + + _endTime = micros(); + } + + void Update() + { + // Data latch = 50+ microsecond pause in the output stream. Rather than + // put a delay at the end of the function, the ending time is noted and + // the function will simply hold off (if needed) on issuing the + // subsequent round of data until the latch time has elapsed. This + // allows the mainline code to start generating the next frame of data + // rather than stalling for the latch. + while (!IsReadyToUpdate()) + { + yield(); // allows for system yield if needed + } + + noInterrupts(); // Need 100% focus on instruction timing + + T_SPEED::send_pixels(_pixels, _sizePixels, _pin); + + interrupts(); + + // save EOD time for latch on next call + _endTime = micros(); + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _sizePixels; + }; + +private: + uint32_t _endTime; // Latch timing reference + size_t _sizePixels; // Size of '_pixels' buffer below + uint8_t* _pixels; // Holds LED color values + uint8_t _pin; // output pin number +}; + + +#if defined(__MK20DX128__) || defined(__MK20DX256__) // Teensy 3.0 & 3.1 + +class NeoArmMk20dxSpeedProps800KbpsBase +{ +public: + static const uint32_t CyclesT0h = (F_CPU / 4000000); + static const uint32_t CyclesT1h = (F_CPU / 1250000); + static const uint32_t Cycles = (F_CPU / 800000); +}; + +class NeoArmMk20dxSpeedPropsWs2812x : public NeoArmMk20dxSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmMk20dxSpeedPropsSk6812 : public NeoArmMk20dxSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoArmMk20dxSpeedProps800Kbps : public NeoArmMk20dxSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 50; +}; + +class NeoArmMk20dxSpeedProps400Kbps +{ +public: + static const uint32_t CyclesT0h = (F_CPU / 2000000); + static const uint32_t CyclesT1h = (F_CPU / 833333); + static const uint32_t Cycles = (F_CPU / 400000); + static const uint32_t ResetTimeUs = 50; +}; + +template class NeoArmMk20dxSpeedBase +{ +public: + static const uint32_t ResetTimeUs = T_SPEEDPROPS::ResetTimeUs; + + static void send_pixels(uint8_t* pixels, size_t sizePixels, uint8_t pin) + { + uint8_t* p = pixels; + uint8_t* end = p + sizePixels; + uint8_t pix; + uint8_t mask; + + volatile uint8_t* set = portSetRegister(pin); + volatile uint8_t* clr = portClearRegister(pin); + + uint32_t cyc; + + ARM_DEMCR |= ARM_DEMCR_TRCENA; + ARM_DWT_CTRL |= ARM_DWT_CTRL_CYCCNTENA; + + cyc = ARM_DWT_CYCCNT + T_SPEEDPROPS::Cycles; + while (p < end) + { + pix = *p++; + for (mask = 0x80; mask; mask >>= 1) + { + while (ARM_DWT_CYCCNT - cyc < T_SPEEDPROPS::Cycles); + + cyc = ARM_DWT_CYCCNT; + *set = 1; + if (pix & mask) + { + while (ARM_DWT_CYCCNT - cyc < T_SPEEDPROPS::CyclesT1h); + } + else + { + while (ARM_DWT_CYCCNT - cyc < T_SPEEDPROPS::CyclesT0h); + } + *clr = 1; + } + } + } +}; + +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; +typedef NeoArmMethodBase> NeoArm800KbpsMethod; +typedef NeoArmMethodBase> NeoArm400KbpsMethod; + +#elif defined(__MKL26Z64__) // Teensy-LC + +#if F_CPU == 48000000 + + + +class NeoArmMk26z64Speed800KbpsBase +{ +public: + static void send_pixels(uint8_t* pixels, size_t sizePixels, uint8_t pin) + { + uint8_t* p = pixels; + uint8_t pix; + uint8_t count; + uint8_t dly; + uint8_t bitmask = digitalPinToBitMask(pin); + volatile uint8_t* reg = portSetRegister(pin); + uint32_t num = sizePixels; + + asm volatile( + "L%=_begin:" "\n\t" + "ldrb %[pix], [%[p], #0]" "\n\t" + "lsl %[pix], #24" "\n\t" + "movs %[count], #7" "\n\t" + "L%=_loop:" "\n\t" + "lsl %[pix], #1" "\n\t" + "bcs L%=_loop_one" "\n\t" + "L%=_loop_zero:" + "strb %[bitmask], [%[reg], #0]" "\n\t" + "movs %[dly], #4" "\n\t" + "L%=_loop_delay_T0H:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_loop_delay_T0H" "\n\t" + "strb %[bitmask], [%[reg], #4]" "\n\t" + "movs %[dly], #13" "\n\t" + "L%=_loop_delay_T0L:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_loop_delay_T0L" "\n\t" + "b L%=_next" "\n\t" + "L%=_loop_one:" + "strb %[bitmask], [%[reg], #0]" "\n\t" + "movs %[dly], #13" "\n\t" + "L%=_loop_delay_T1H:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_loop_delay_T1H" "\n\t" + "strb %[bitmask], [%[reg], #4]" "\n\t" + "movs %[dly], #4" "\n\t" + "L%=_loop_delay_T1L:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_loop_delay_T1L" "\n\t" + "nop" "\n\t" + "L%=_next:" "\n\t" + "sub %[count], #1" "\n\t" + "bne L%=_loop" "\n\t" + "lsl %[pix], #1" "\n\t" + "bcs L%=_last_one" "\n\t" + "L%=_last_zero:" + "strb %[bitmask], [%[reg], #0]" "\n\t" + "movs %[dly], #4" "\n\t" + "L%=_last_delay_T0H:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_last_delay_T0H" "\n\t" + "strb %[bitmask], [%[reg], #4]" "\n\t" + "movs %[dly], #10" "\n\t" + "L%=_last_delay_T0L:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_last_delay_T0L" "\n\t" + "b L%=_repeat" "\n\t" + "L%=_last_one:" + "strb %[bitmask], [%[reg], #0]" "\n\t" + "movs %[dly], #13" "\n\t" + "L%=_last_delay_T1H:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_last_delay_T1H" "\n\t" + "strb %[bitmask], [%[reg], #4]" "\n\t" + "movs %[dly], #1" "\n\t" + "L%=_last_delay_T1L:" "\n\t" + "sub %[dly], #1" "\n\t" + "bne L%=_last_delay_T1L" "\n\t" + "nop" "\n\t" + "L%=_repeat:" "\n\t" + "add %[p], #1" "\n\t" + "sub %[num], #1" "\n\t" + "bne L%=_begin" "\n\t" + "L%=_done:" "\n\t" + : [p] "+r" (p), + [pix] "=&r" (pix), + [count] "=&r" (count), + [dly] "=&r" (dly), + [num] "+r" (num) + : [bitmask] "r" (bitmask), + [reg] "r" (reg) + ); + } +}; + +class NeoArmMk26z64SpeedWs2812x : public NeoArmMk26z64Speed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 300; +}; + +class NeoArmMk26z64SpeedSk6812 : public NeoArmMk26z64Speed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 80; +}; + +class NeoArmMk26z64Speed800Kbps : public NeoArmMk26z64Speed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 50; +}; + +typedef NeoArmMethodBase NeoArmWs2812xMethod; +typedef NeoArmMethodBase NeoArmSk6812Method; +typedef NeoArmMethodBase NeoArm800KbpsMethod; + +#else +#error "Teensy-LC: Sorry, only 48 MHz is supported, please set Tools > CPU Speed to 48 MHz" +#endif // F_CPU == 48000000 + +#elif defined(__SAMD21G18A__) // Arduino Zero + + +class NeoArmSamd21g18aSpeedProps800KbpsBase +{ +public: + static void BitPreWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;"); + } + static void BitT1hWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop;"); + } + static void BitT0lWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop;"); + } + static void BitPostWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop; nop;"); + } +}; + +class NeoArmSamd21g18aSpeedPropsWs2812x : public NeoArmSamd21g18aSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmSamd21g18aSpeedPropsSk6812 : public NeoArmSamd21g18aSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoArmSamd21g18aSpeedProps800Kbps : public NeoArmSamd21g18aSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 50; +}; + + +class NeoArmSamd21g18aSpeedProps400Kbps +{ +public: + static void BitPreWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"); + } + static void BitT1hWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop;"); + } + static void BitT0lWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop;"); + } + static void BitPostWait() + { + asm("nop; nop; nop; nop; nop; nop; nop;"); + } + static const uint32_t ResetTimeUs = 50; +}; + +template class NeoArmSamd21g18aSpeedBase +{ +public: + static const uint32_t ResetTimeUs = T_SPEEDPROPS::ResetTimeUs; + + static void send_pixels(uint8_t* pixels, size_t sizePixels, uint8_t pin) + { + // Tried this with a timer/counter, couldn't quite get adequate + // resolution. So yay, you get a load of goofball NOPs... + uint8_t* ptr = pixels; + uint8_t* end = ptr + sizePixels;; + uint8_t p = *ptr++; + uint8_t bitMask = 0x80; + uint8_t portNum = g_APinDescription[pin].ulPort; + uint32_t pinMask = 1ul << g_APinDescription[pin].ulPin; + + volatile uint32_t* set = &(PORT->Group[portNum].OUTSET.reg); + volatile uint32_t* clr = &(PORT->Group[portNum].OUTCLR.reg); + + for (;;) + { + *set = pinMask; + T_SPEEDPROPS::BitPreWait(); + + if (p & bitMask) + { + T_SPEEDPROPS::BitT1hWait(); + *clr = pinMask; + } + else + { + *clr = pinMask; + T_SPEEDPROPS::BitT0lWait(); + } + if (bitMask >>= 1) + { + T_SPEEDPROPS::BitPostWait(); + } + else + { + if (ptr >= end) + { + break; + } + p = *ptr++; + bitMask = 0x80; + } + } + } +}; + +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; +typedef NeoArmMethodBase> NeoArm800KbpsMethod; +typedef NeoArmMethodBase> NeoArm400KbpsMethod; + +#elif defined (ARDUINO_STM32_FEATHER) // FEATHER WICED (120MHz) + +class NeoArmStm32SpeedProps800KbpsBase +{ +public: + static void BitT1hWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop;"); + } + static void BitT1lWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop;"); + } + static void BitT0hWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop;"); + } + static void BitT0lWait() + { + asm("nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop; nop; nop; nop; nop;" + "nop; nop; nop; nop;"); + } +}; + +class NeoArmStm32SpeedPropsWs2812x : public NeoArmStm32SpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmStm32SpeedPropsSk6812 : public NeoArmStm32SpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoArmStm32SpeedProps800Kbps : public NeoArmStm32SpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 50; +}; + +/* TODO - not found in Adafruit library +class NeoArmStm32SpeedProps400Kbps +{ +static void BitT1hWait() +{ +} +static void BitT1lWait() +{ +} +static void BitT0hWait() +{ +} +static void BitT0lWait() +{ +} +}; +*/ + +template class NeoArmStm32SpeedBase +{ +public: + static const uint32_t ResetTimeUs = T_SPEEDPROPS::ResetTimeUs; + + static void send_pixels(uint8_t* pixels, size_t sizePixels, uint8_t pin) + { + // Tried this with a timer/counter, couldn't quite get adequate + // resolution. So yay, you get a load of goofball NOPs... + + uint8_t* ptr = pixels; + uint8_t* end = ptr + sizePixels; + uint8_t p = *ptr++; + uint8_t bitMask = 0x80; + uint32_t pinMask = BIT(PIN_MAP[pin].gpio_bit); + + volatile uint16_t* set = &(PIN_MAP[pin].gpio_device->regs->BSRRL); + volatile uint16_t* clr = &(PIN_MAP[pin].gpio_device->regs->BSRRH); + + for (;;) + { + if (p & bitMask) + { + // ONE + // High 800ns + *set = pinMask; + T_SPEEDPROPS::BitT1hWait(); + // Low 450ns + *clr = pinMask; + T_SPEEDPROPS::BitT1lWait(); + } + else + { + // ZERO + // High 400ns + *set = pinMask; + T_SPEEDPROPS::BitT0hWait(); + // Low 850ns + *clr = pinMask; + T_SPEEDPROPS::BitT0lWait(); + } + if (bitMask >>= 1) + { + // Move on to the next pixel + asm("nop;"); + } + else + { + if (ptr >= end) + { + break; + } + + p = *ptr++; + bitMask = 0x80; + } + } + } +}; + +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; +typedef NeoArmMethodBase> NeoArm800KbpsMethod; + +#else // Other ARM architecture -- Presumed Arduino Due + + +#define ARM_OTHER_SCALE VARIANT_MCK / 2UL / 1000000UL +#define ARM_OTHER_INST (2UL * F_CPU / VARIANT_MCK) + +class NeoArmOtherSpeedProps800KbpsBase +{ +public: + static const uint32_t CyclesT0h = ((uint32_t)(0.40 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t CyclesT1h = ((uint32_t)(0.80 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t Cycles = ((uint32_t)(1.25 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); +}; + +class NeoArmOtherSpeedPropsWs2812x : public NeoArmOtherSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoArmOtherSpeedPropsSk6812 : public NeoArmOtherSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoArmOtherSpeedProps800Kbps : public NeoArmOtherSpeedProps800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 50; +}; + +class NeoArmOtherSpeedProps400Kbps +{ +public: + static const uint32_t CyclesT0h = ((uint32_t)(0.50 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t CyclesT1h = ((uint32_t)(1.20 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t Cycles = ((uint32_t)(2.50 * ARM_OTHER_SCALE + 0.5) - (5 * ARM_OTHER_INST)); + static const uint32_t ResetTimeUs = 50; +}; + +template class NeoArmOtherSpeedBase +{ +public: + static const uint32_t ResetTimeUs = T_SPEEDPROPS::ResetTimeUs; + + static void send_pixels(uint8_t* pixels, size_t sizePixels, uint8_t pin) + { + uint32_t pinMask; + uint32_t t; + Pio* port; + volatile WoReg* portSet; + volatile WoReg* portClear; + volatile WoReg* timeValue; + volatile WoReg* timeReset; + uint8_t* p; + uint8_t* end; + uint8_t pix; + uint8_t mask; + + pmc_set_writeprotect(false); + pmc_enable_periph_clk((uint32_t)TC3_IRQn); + + TC_Configure(TC1, 0, + TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1); + TC_Start(TC1, 0); + + pinMask = g_APinDescription[pin].ulPin; // Don't 'optimize' these into + port = g_APinDescription[pin].pPort; // declarations above. Want to + portSet = &(port->PIO_SODR); // burn a few cycles after + portClear = &(port->PIO_CODR); // starting timer to minimize + timeValue = &(TC1->TC_CHANNEL[0].TC_CV); // the initial 'while'. + timeReset = &(TC1->TC_CHANNEL[0].TC_CCR); + p = pixels; + end = p + sizePixels; + pix = *p++; + mask = 0x80; + + for (;;) + { + if (pix & mask) + { + t = T_SPEEDPROPS::CyclesT1h; + } + else + { + t = T_SPEEDPROPS::CyclesT0h; + } + + // wait for the end of the previous cycle + while (*timeValue < T_SPEEDPROPS::Cycles); + + *portSet = pinMask; + *timeReset = TC_CCR_CLKEN | TC_CCR_SWTRG; + + while (*timeValue < t); + + *portClear = pinMask; + if (!(mask >>= 1)) + { + // This 'inside-out' loop logic utilizes + if (p >= end) + { + break; // idle time to minimize inter-byte delays. + } + pix = *p++; + mask = 0x80; + } + } + + // not really needed as the wait for latch does this and + // while (*timeValue < T_SPEEDPROPS::Cycles); // Wait for last bit + + TC_Stop(TC1, 0); + } +}; + +typedef NeoArmMethodBase> NeoArmWs2812xMethod; +typedef NeoArmMethodBase> NeoArmSk6812Method; +typedef NeoArmMethodBase> NeoArm800KbpsMethod; +typedef NeoArmMethodBase> NeoArm400KbpsMethod; + +#endif + + +// Arm doesn't have alternatives methods yet, so only one to make the default +typedef NeoArmWs2812xMethod NeoWs2813Method; +typedef NeoArmWs2812xMethod NeoWs2812xMethod; +typedef NeoArmSk6812Method NeoSk6812Method; +typedef NeoArmSk6812Method NeoLc8812Method; +typedef NeoArm800KbpsMethod NeoWs2812Method; +typedef NeoArmWs2812xMethod Neo800KbpsMethod; +#ifdef NeoArm400KbpsMethod // this is needed due to missing 400Kbps for some platforms +typedef NeoArm400KbpsMethod Neo400KbpsMethod; +#endif + +#endif // defined(__arm__) + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoAvrMethod.h b/brain/sw/components/led-renderer/neopixel/internal/NeoAvrMethod.h new file mode 100644 index 0000000000..f8dc7db701 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoAvrMethod.h @@ -0,0 +1,212 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Atmel AVR. + +Written by Michael C. Miller. +Some work taken from the Adafruit NeoPixel library. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#ifdef ARDUINO_ARCH_AVR + +extern "C" +{ + void send_pixels_8mhz_800_PortD(uint8_t* pixels, size_t sizePixels, uint8_t pinMask); + void send_pixels_8mhz_800_PortB(uint8_t* pixels, size_t sizePixels, uint8_t pinMask); + void send_pixels_8mhz_400(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask); + void send_pixels_12mhz_800_PortD(uint8_t* pixels, size_t sizePixels, uint8_t pinMask); + void send_pixels_12mhz_800_PortB(uint8_t* pixels, size_t sizePixels, uint8_t pinMask); + void send_pixels_12mhz_400(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask); + void send_pixels_16mhz_800(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask); + void send_pixels_16mhz_400(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask); +} + +class NeoAvrSpeed800KbpsBase +{ +public: + static void send_pixels(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask) + { +#if (F_CPU >= 7400000UL) && (F_CPU <= 9500000UL) // 8Mhz CPU +#ifdef PORTD // PORTD isn't present on ATtiny85, etc. + if (port == &PORTD) + send_pixels_8mhz_800_PortD(pixels, sizePixels, pinMask); + else if (port == &PORTB) +#endif // PORTD + send_pixels_8mhz_800_PortB(pixels, sizePixels, pinMask); + +#elif (F_CPU >= 11100000UL) && (F_CPU <= 14300000UL) // 12Mhz CPU +#ifdef PORTD // PORTD + if (port == &PORTD) + send_pixels_12mhz_800_PortD(pixels, sizePixels, pinMask); + else if (port == &PORTB) +#endif // PORTD + send_pixels_12mhz_800_PortB(pixels, sizePixels, pinMask); + +#elif (F_CPU >= 15400000UL) && (F_CPU <= 19000000L) // 16Mhz CPU + send_pixels_16mhz_800(pixels, sizePixels, port, pinMask); +#else +#error "CPU SPEED NOT SUPPORTED" +#endif + } + +}; + +class NeoAvrSpeedWs2812x : public NeoAvrSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; +}; + +class NeoAvrSpeedSk6812 : public NeoAvrSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; +}; + +class NeoAvrSpeed800Kbps: public NeoAvrSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 50; +}; + +class NeoAvrSpeed400Kbps +{ +public: + static void send_pixels(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask) + { +#if (F_CPU >= 7400000UL) && (F_CPU <= 9500000UL) // 8Mhz CPU + send_pixels_8mhz_400(pixels, sizePixels, port, pinMask); + +#elif (F_CPU >= 11100000UL) && (F_CPU <= 14300000UL) // 12Mhz CPU + send_pixels_12mhz_400(pixels, sizePixels, port, pinMask); + +#elif (F_CPU >= 15400000UL) && (F_CPU <= 19000000L) // 16Mhz CPU + send_pixels_16mhz_400(pixels, sizePixels, port, pinMask); +#else +#error "CPU SPEED NOT SUPPORTED" +#endif + } + static const uint32_t ResetTimeUs = 50; +}; + +template class NeoAvrMethodBase +{ +public: + NeoAvrMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize) : + _pin(pin), + _port(NULL), + _pinMask(0) + { + pinMode(pin, OUTPUT); + + _sizePixels = pixelCount * elementSize; + _pixels = (uint8_t*)malloc(_sizePixels); + memset(_pixels, 0, _sizePixels); + + _port = portOutputRegister(digitalPinToPort(pin)); + _pinMask = digitalPinToBitMask(pin); + } + + ~NeoAvrMethodBase() + { + pinMode(_pin, INPUT); + + free(_pixels); + } + + bool IsReadyToUpdate() const + { + uint32_t delta = micros() - _endTime; + + return (delta >= T_SPEED::ResetTimeUs); + } + + void Initialize() + { + digitalWrite(_pin, LOW); + + _endTime = micros(); + } + + void Update() + { + // Data latch = 50+ microsecond pause in the output stream. Rather than + // put a delay at the end of the function, the ending time is noted and + // the function will simply hold off (if needed) on issuing the + // subsequent round of data until the latch time has elapsed. This + // allows the mainline code to start generating the next frame of data + // rather than stalling for the latch. + while (!IsReadyToUpdate()) + { +#if !defined(ARDUINO_TEEONARDU_LEO) && !defined(ARDUINO_TEEONARDU_FLORA) + yield(); // allows for system yield if needed +#endif + } + + noInterrupts(); // Need 100% focus on instruction timing + + T_SPEED::send_pixels(_pixels, _sizePixels, _port, _pinMask); + + interrupts(); + + // save EOD time for latch on next call + _endTime = micros(); + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _sizePixels; + }; + +private: + uint32_t _endTime; // Latch timing reference + size_t _sizePixels; // Size of '_pixels' buffer below + uint8_t* _pixels; // Holds LED color values + uint8_t _pin; // output pin number + + volatile uint8_t* _port; // Output PORT register + uint8_t _pinMask; // Output PORT bitmask +}; + + +typedef NeoAvrMethodBase NeoAvrWs2812xMethod; +typedef NeoAvrMethodBase NeoAvrSk6812Method; +typedef NeoAvrMethodBase NeoAvr800KbpsMethod; +typedef NeoAvrMethodBase NeoAvr400KbpsMethod; + +// AVR doesn't have alternatives yet, so there is just the default +typedef NeoAvrWs2812xMethod NeoWs2813Method; +typedef NeoAvrWs2812xMethod NeoWs2812xMethod; +typedef NeoAvr800KbpsMethod NeoWs2812Method; +typedef NeoAvrSk6812Method NeoSk6812Method; +typedef NeoAvrSk6812Method NeoLc8812Method; +typedef NeoAvrWs2812xMethod Neo800KbpsMethod; +typedef NeoAvr400KbpsMethod Neo400KbpsMethod; + +#endif + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoBitmapFile.h b/brain/sw/components/led-renderer/neopixel/internal/NeoBitmapFile.h new file mode 100644 index 0000000000..cef8c3c625 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoBitmapFile.h @@ -0,0 +1,350 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +const uint16_t c_BitmapFileId = 0x4d42; // "BM" + +#pragma pack(push, 2) +struct BitmapFileHeader +{ + uint16_t FileId; // only c_BitmapFileId is supported + uint32_t FileSize; + uint16_t Reserved0; + uint16_t Reserved1; + uint32_t PixelAddress; +}; + +struct BitmapInfoHeader +{ + uint32_t Size; + int32_t Width; + int32_t Height; + uint16_t Planes; // only support 1 + uint16_t BitsPerPixel; // only support 24 and 32 + uint32_t Compression; // only support BI_Rgb + uint32_t RawDateSize; // can be zero + int32_t XPpm; + int32_t YPpm; + uint32_t PaletteLength; + uint32_t ImportantColorCount; +}; +#pragma pack(pop) + +enum BmpCompression +{ + BI_Rgb, + BI_Rle8, + BI_Rle4, + BI_Bitfields, + BI_Jpeg, + BI_Png, + BI_AlphaBitfields, + BI_Cmyk = 11, + BI_CmykRle8, + BI_CmykRle4 +}; + +template class NeoBitmapFile +{ +public: + NeoBitmapFile() : + _fileAddressPixels(0), + _width(0), + _height(0), + _sizeRow(0), + _bytesPerPixel(0), + _bottomToTop(true) + { + } + + ~NeoBitmapFile() + { + _file.close(); + } + + bool Begin(T_FILE_METHOD file) + { + if (_file) + { + _file.close(); + } + + if (!file || !file.seek(0)) + { + goto error; + } + + _file = file; + + BitmapFileHeader bmpHeader; + BitmapInfoHeader bmpInfoHeader; + size_t result; + + result = _file.read((uint8_t*)(&bmpHeader), sizeof(bmpHeader)); + + if (result != sizeof(bmpHeader) || + bmpHeader.FileId != c_BitmapFileId || + bmpHeader.FileSize != _file.size()) + { + goto error; + } + + result = _file.read((uint8_t*)(&bmpInfoHeader), sizeof(bmpInfoHeader)); + + if (result != sizeof(bmpInfoHeader) || + result != bmpInfoHeader.Size || + 1 != bmpInfoHeader.Planes || + BI_Rgb != bmpInfoHeader.Compression) + { + goto error; + } + + if (!(24 == bmpInfoHeader.BitsPerPixel || + 32 == bmpInfoHeader.BitsPerPixel)) + { + goto error; + } + + // save the interesting information + _width = abs(bmpInfoHeader.Width); + _height = abs(bmpInfoHeader.Height); + _fileAddressPixels = bmpHeader.PixelAddress; + // negative height means rows are top to bottom + _bottomToTop = (bmpInfoHeader.Height > 0); + // rows are 32 bit aligned so they may have padding on each row + _sizeRow = (bmpInfoHeader.BitsPerPixel * _width + 31) / 32 * 4; + _bytesPerPixel = bmpInfoHeader.BitsPerPixel / 8; + + return true; + + error: + _fileAddressPixels = 0; + _width = 0; + _height = 0; + _sizeRow = 0; + _bytesPerPixel = 0; + + _file.close(); + return false; + }; + + size_t PixelSize() const + { + return T_COLOR_FEATURE::PixelSize; + }; + + uint16_t PixelCount() const + { + return _width * _height; + }; + + uint16_t Width() const + { + return _width; + }; + + uint16_t Height() const + { + return _height; + }; + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(int16_t x, int16_t y) + { + if (x < 0 || x >= _width || y < 0 || y >= _height) + { + // Pixel # is out of bounds, this will get converted to a + // color object type initialized to 0 (black) + return 0; + } + + typename T_COLOR_FEATURE::ColorObject color; + if (!seek(x, y) || !readPixel(&color)) + { + return 0; + } + + return color; + }; + + void Blt(NeoBufferContext destBuffer, + uint16_t indexPixel, + int16_t xSrc, + int16_t ySrc, + int16_t wSrc) + { + const uint16_t destPixelCount = destBuffer.PixelCount(); + typename T_COLOR_FEATURE::ColorObject color(0); + xSrc = constrainX(xSrc); + ySrc = constrainY(ySrc); + + if (seek(xSrc, ySrc)) + { + for (int16_t x = 0; x < wSrc && indexPixel < destPixelCount; x++, indexPixel++) + { + if ((uint16_t)xSrc < _width) + { + if (readPixel(&color)) + { + xSrc++; + } + } + + T_COLOR_FEATURE::applyPixelColor(destBuffer.Pixels, indexPixel, color); + } + } + } + + void Blt(NeoBufferContext destBuffer, + int16_t xDest, + int16_t yDest, + int16_t xSrc, + int16_t ySrc, + int16_t wSrc, + int16_t hSrc, + LayoutMapCallback layoutMap) + { + const uint16_t destPixelCount = destBuffer.PixelCount(); + typename T_COLOR_FEATURE::ColorObject color(0); + + for (int16_t y = 0; y < hSrc; y++) + { + int16_t xFile = constrainX(xSrc); + int16_t yFile = constrainY(ySrc + y); + + if (seek(xFile, yFile)) + { + for (int16_t x = 0; x < wSrc; x++) + { + if ((uint16_t)xFile < _width) + { + if (readPixel(&color)) + { + xFile++; + } + } + + uint16_t indexDest = layoutMap(xDest + x, yDest + y); + + if (indexDest < destPixelCount) + { + T_COLOR_FEATURE::applyPixelColor(destBuffer.Pixels, indexDest, color); + } + } + } + } + }; + + +private: + T_FILE_METHOD _file; + uint32_t _fileAddressPixels; + uint16_t _width; + uint16_t _height; + uint32_t _sizeRow; + uint8_t _bytesPerPixel; + bool _bottomToTop; + + int16_t constrainX(int16_t x) const + { + if (x < 0) + { + x = 0; + } + else if ((uint16_t)x >= _width) + { + x = _width - 1; + } + return x; + }; + + int16_t constrainY(int16_t y) const + { + if (y < 0) + { + y = 0; + } + else if ((uint16_t)y >= _height) + { + y = _height - 1; + } + return y; + }; + + bool seek(int16_t x, int16_t y) + { + if (_bottomToTop) + { + y = (_height - 1) - y; + } + + uint32_t pos = y * _sizeRow + x * _bytesPerPixel; + pos += _fileAddressPixels; + + return _file.seek(pos); + }; + + bool readPixel(RgbColor* color) + { + uint8_t bgr[4]; + int result; + + result = _file.read(bgr, _bytesPerPixel); + + if (result != _bytesPerPixel) + { + *color = 0; + return false; + } + + color->B = bgr[0]; + color->G = bgr[1]; + color->R = bgr[2]; + + return true; + }; + + bool readPixel(RgbwColor* color) + { + uint8_t bgr[4]; + int result; + + bgr[3] = 0; // init white channel as read maybe only 3 bytes + result = _file.read(bgr, _bytesPerPixel); + + if (result != _bytesPerPixel) + { + *color = 0; + return false; + } + + color->B = bgr[0]; + color->G = bgr[1]; + color->R = bgr[2]; + color->W = bgr[3]; + + return true; + }; +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoBuffer.h b/brain/sw/components/led-renderer/neopixel/internal/NeoBuffer.h new file mode 100644 index 0000000000..996a778203 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoBuffer.h @@ -0,0 +1,173 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +template class NeoBuffer +{ +public: + NeoBuffer(uint16_t width, + uint16_t height, + PGM_VOID_P pixels) : + _method(width, height, pixels) + { + } + + operator NeoBufferContext() + { + return _method; + } + + uint16_t PixelCount() const + { + return _method.PixelCount(); + }; + + uint16_t Width() const + { + return _method.Width(); + }; + + uint16_t Height() const + { + return _method.Height(); + }; + + void SetPixelColor( + int16_t x, + int16_t y, + typename T_BUFFER_METHOD::ColorObject color) + { + _method.SetPixelColor(pixelIndex(x, y), color); + }; + + typename T_BUFFER_METHOD::ColorObject GetPixelColor( + int16_t x, + int16_t y) const + { + return _method.GetPixelColor(pixelIndex(x, y)); + }; + + void ClearTo(typename T_BUFFER_METHOD::ColorObject color) + { + _method.ClearTo(color); + }; + + void Blt(NeoBufferContext destBuffer, + uint16_t indexPixel) + { + uint16_t destPixelCount = destBuffer.PixelCount(); + // validate indexPixel + if (indexPixel >= destPixelCount) + { + return; + } + + // calc how many we can copy + uint16_t copyCount = destPixelCount - indexPixel; + uint16_t srcPixelCount = PixelCount(); + if (copyCount > srcPixelCount) + { + copyCount = srcPixelCount; + } + + uint8_t* pDest = T_BUFFER_METHOD::ColorFeature::getPixelAddress(destBuffer.Pixels, indexPixel); + _method.CopyPixels(pDest, _method.Pixels(), copyCount); + } + + void Blt(NeoBufferContext destBuffer, + int16_t xDest, + int16_t yDest, + int16_t xSrc, + int16_t ySrc, + int16_t wSrc, + int16_t hSrc, + LayoutMapCallback layoutMap) + { + uint16_t destPixelCount = destBuffer.PixelCount(); + + for (int16_t y = 0; y < hSrc; y++) + { + for (int16_t x = 0; x < wSrc; x++) + { + uint16_t indexDest = layoutMap(xDest + x, yDest + y); + + if (indexDest < destPixelCount) + { + const uint8_t* pSrc = T_BUFFER_METHOD::ColorFeature::getPixelAddress(_method.Pixels(), pixelIndex(xSrc + x, ySrc + y)); + uint8_t* pDest = T_BUFFER_METHOD::ColorFeature::getPixelAddress(destBuffer.Pixels, indexDest); + + _method.CopyPixels(pDest, pSrc, 1); + } + } + } + } + + void Blt(NeoBufferContext destBuffer, + int16_t xDest, + int16_t yDest, + LayoutMapCallback layoutMap) + { + Blt(destBuffer, xDest, yDest, 0, 0, Width(), Height(), layoutMap); + } + + template void Render(NeoBufferContext destBuffer, T_SHADER& shader) + { + uint16_t countPixels = destBuffer.PixelCount(); + + if (countPixels > _method.PixelCount()) + { + countPixels = _method.PixelCount(); + } + + for (uint16_t indexPixel = 0; indexPixel < countPixels; indexPixel++) + { + typename T_BUFFER_METHOD::ColorObject color; + + shader.Apply(indexPixel, (uint8_t*)(&color), _method.Pixels() + (indexPixel * _method.PixelSize())); + + T_BUFFER_METHOD::ColorFeature::applyPixelColor(destBuffer.Pixels, indexPixel, color); + } + } + +private: + T_BUFFER_METHOD _method; + + uint16_t pixelIndex( + int16_t x, + int16_t y) const + { + uint16_t result = PixelIndex_OutOfBounds; + + if (x >= 0 && + (uint16_t)x < Width() && + y >= 0 && + (uint16_t)y < Height()) + { + result = x + y * Width(); + } + return result; + } +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoBufferContext.h b/brain/sw/components/led-renderer/neopixel/internal/NeoBufferContext.h new file mode 100644 index 0000000000..8b57344961 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoBufferContext.h @@ -0,0 +1,48 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +// This is used to allow a template classes that share common buffer concept to +// be able to pass that common information to functions +// The template classes just need to expose a conversion operator to this type +template struct NeoBufferContext +{ + NeoBufferContext(uint8_t* pixels, + size_t sizePixels) : + Pixels(pixels), + SizePixels(sizePixels) + { + } + + uint16_t PixelCount() const + { + return SizePixels / T_COLOR_FEATURE::PixelSize; + }; + + uint8_t* Pixels; + const size_t SizePixels; + +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoBufferMethods.h b/brain/sw/components/led-renderer/neopixel/internal/NeoBufferMethods.h new file mode 100644 index 0000000000..4bd531ff35 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoBufferMethods.h @@ -0,0 +1,263 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + + +#ifdef ARDUINO_ARCH_AVR + +typedef uint16_t(*LayoutMapCallback)(int16_t x, int16_t y); + +#else + +#undef max +#undef min +#include +typedef std::function LayoutMapCallback; + +#endif + +template class NeoBufferMethod +{ +public: + NeoBufferMethod(uint16_t width, uint16_t height, PGM_VOID_P pixels = NULL) : + _width(width), + _height(height) + { + _pixels = (uint8_t*)malloc(PixelsSize()); + if (pixels) + { + // copy from progmem to initialize + T_COLOR_FEATURE::movePixelsInc_P(_pixels, pixels, PixelCount()); + } + } + + ~NeoBufferMethod() + { + free(_pixels); + } + + operator NeoBufferContext() + { + return NeoBufferContext(Pixels(), PixelsSize()); + } + + uint8_t* Pixels() const + { + return _pixels; + }; + + size_t PixelsSize() const + { + return PixelSize() * PixelCount(); + }; + + size_t PixelSize() const + { + return T_COLOR_FEATURE::PixelSize; + }; + + uint16_t PixelCount() const + { + return _width * _height; + }; + + uint16_t Width() const + { + return _width; + }; + + uint16_t Height() const + { + return _height; + }; + + void SetPixelColor(uint16_t indexPixel, typename T_COLOR_FEATURE::ColorObject color) + { + if (indexPixel < PixelCount()) + { + T_COLOR_FEATURE::applyPixelColor(_pixels, indexPixel, color); + } + }; + + void SetPixelColor(int16_t x, int16_t y, typename T_COLOR_FEATURE::ColorObject color) + { + if (x < 0 || x >= _width || y < 0 || y >= _height) + { + return; + } + + uint16_t indexPixel = x + y * _width; + T_COLOR_FEATURE::applyPixelColor(_pixels, indexPixel, color); + }; + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(uint16_t indexPixel) const + { + if (indexPixel >= PixelCount()) + { + // Pixel # is out of bounds, this will get converted to a + // color object type initialized to 0 (black) + return 0; + } + + return T_COLOR_FEATURE::retrievePixelColor(_pixels, indexPixel); + }; + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(int16_t x, int16_t y) const + { + if (x < 0 || x >= _width || y < 0 || y >= _height) + { + // Pixel # is out of bounds, this will get converted to a + // color object type initialized to 0 (black) + return 0; + } + + uint16_t indexPixel = x + y * _width; + return T_COLOR_FEATURE::retrievePixelColor(_pixels, indexPixel); + }; + + void ClearTo(typename T_COLOR_FEATURE::ColorObject color) + { + uint8_t temp[T_COLOR_FEATURE::PixelSize]; + + T_COLOR_FEATURE::applyPixelColor(temp, 0, color); + + T_COLOR_FEATURE::replicatePixel(_pixels, temp, PixelCount()); + }; + + void CopyPixels(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + T_COLOR_FEATURE::movePixelsInc(pPixelDest, pPixelSrc, count); + } + + typedef typename T_COLOR_FEATURE::ColorObject ColorObject; + typedef T_COLOR_FEATURE ColorFeature; + +private: + const uint16_t _width; + const uint16_t _height; + uint8_t* _pixels; +}; + +template class NeoBufferProgmemMethod +{ +public: + NeoBufferProgmemMethod(uint16_t width, uint16_t height, PGM_VOID_P pixels) : + _width(width), + _height(height), + _pixels(pixels) + { + } + + operator NeoBufferContext() + { + return NeoBufferContext(Pixels(), PixelsSize()); + } + + uint8_t* Pixels() const + { + return (uint8_t*)_pixels; + }; + + size_t PixelsSize() const + { + return PixelSize() * PixelCount(); + }; + + size_t PixelSize() const + { + return T_COLOR_FEATURE::PixelSize; + }; + + uint16_t PixelCount() const + { + return _width * _height; + }; + + uint16_t Width() const + { + return _width; + }; + + uint16_t Height() const + { + return _height; + }; + + void SetPixelColor(uint16_t indexPixel, typename T_COLOR_FEATURE::ColorObject color) + { + // PROGMEM is read only, this will do nothing + }; + + void SetPixelColor(uint16_t x, uint16_t y, typename T_COLOR_FEATURE::ColorObject color) + { + // PROGMEM is read only, this will do nothing + }; + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(uint16_t indexPixel) const + { + if (indexPixel >= PixelCount()) + { + // Pixel # is out of bounds, this will get converted to a + // color object type initialized to 0 (black) + return 0; + } + + return T_COLOR_FEATURE::retrievePixelColor_P(_pixels, indexPixel); + }; + + typename T_COLOR_FEATURE::ColorObject GetPixelColor(int16_t x, int16_t y) const + { + if (x < 0 || x >= _width || y < 0 || y >= _height) + { + // Pixel # is out of bounds, this will get converted to a + // color object type initialized to 0 (black) + return 0; + } + + uint16_t indexPixel = x + y * _width; + return T_COLOR_FEATURE::retrievePixelColor_P(_pixels, indexPixel); + }; + + void ClearTo(typename T_COLOR_FEATURE::ColorObject color) + { + // PROGMEM is read only, this will do nothing + }; + + void CopyPixels(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + T_COLOR_FEATURE::movePixelsInc_P(pPixelDest, pPixelSrc, count); + } + + typedef typename T_COLOR_FEATURE::ColorObject ColorObject; + typedef T_COLOR_FEATURE ColorFeature; + +private: + const uint16_t _width; + const uint16_t _height; + PGM_VOID_P _pixels; +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoColorFeatures.h b/brain/sw/components/led-renderer/neopixel/internal/NeoColorFeatures.h new file mode 100644 index 0000000000..9922363eba --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoColorFeatures.h @@ -0,0 +1,389 @@ +/*------------------------------------------------------------------------- +NeoPixelFeatures provides feature classes to describe color order and +color depth for NeoPixelBus template class + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +class Neo3Elements +{ +public: + static const size_t PixelSize = 3; + + static uint8_t* getPixelAddress(uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + static const uint8_t* getPixelAddress(const uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + + static void replicatePixel(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + while (pPixelDest < pEnd) + { + *pPixelDest++ = pPixelSrc[0]; + *pPixelDest++ = pPixelSrc[1]; + *pPixelDest++ = pPixelSrc[2]; + } + } + + static void movePixelsInc(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + while (pPixelDest < pEnd) + { + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + *pPixelDest++ = *pPixelSrc++; + } + } + + static void movePixelsInc_P(uint8_t* pPixelDest, PGM_VOID_P pPixelSrc, uint16_t count) + { + uint8_t* pEnd = pPixelDest + (count * PixelSize); + const uint8_t* pSrc = (const uint8_t*)pPixelSrc; + while (pPixelDest < pEnd) + { + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + *pPixelDest++ = pgm_read_byte(pSrc++); + } + } + + static void movePixelsDec(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint8_t* pDestBack = pPixelDest + (count * PixelSize); + const uint8_t* pSrcBack = pPixelSrc + (count * PixelSize); + while (pDestBack > pPixelDest) + { + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + *--pDestBack = *--pSrcBack; + } + } + + typedef RgbColor ColorObject; +}; + +class Neo4Elements +{ +public: + static const size_t PixelSize = 4; + + static uint8_t* getPixelAddress(uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + static const uint8_t* getPixelAddress(const uint8_t* pPixels, uint16_t indexPixel) + { + return pPixels + indexPixel * PixelSize; + } + + static void replicatePixel(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint32_t* pDest = (uint32_t*)pPixelDest; + const uint32_t* pSrc = (const uint32_t*)pPixelSrc; + + uint32_t* pEnd = pDest + count; + while (pDest < pEnd) + { + *pDest++ = *pSrc; + } + } + + static void movePixelsInc(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint32_t* pDest = (uint32_t*)pPixelDest; + const uint32_t* pSrc = (uint32_t*)pPixelSrc; + uint32_t* pEnd = pDest + count; + while (pDest < pEnd) + { + *pDest++ = *pSrc++; + } + } + + static void movePixelsInc_P(uint8_t* pPixelDest, PGM_VOID_P pPixelSrc, uint16_t count) + { + uint32_t* pDest = (uint32_t*)pPixelDest; + const uint32_t* pSrc = (const uint32_t*)pPixelSrc; + uint32_t* pEnd = pDest + count; + while (pDest < pEnd) + { + *pDest++ = pgm_read_dword(pSrc++); + } + } + + static void movePixelsDec(uint8_t* pPixelDest, const uint8_t* pPixelSrc, uint16_t count) + { + uint32_t* pDest = (uint32_t*)pPixelDest; + const uint32_t* pSrc = (uint32_t*)pPixelSrc; + uint32_t* pDestBack = pDest + count; + const uint32_t* pSrcBack = pSrc + count; + while (pDestBack > pDest) + { + *--pDestBack = *--pSrcBack; + } + } + + typedef RgbwColor ColorObject; +}; + +class NeoGrbFeature : public Neo3Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = color.G; + *p++ = color.R; + *p = color.B; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.G = *p++; + color.R = *p++; + color.B = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.G = pgm_read_byte(p++); + color.R = pgm_read_byte(p++); + color.B = pgm_read_byte(p); + + return color; + } + +}; + +class NeoGrbwFeature : public Neo4Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = color.G; + *p++ = color.R; + *p++ = color.B; + *p = color.W; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.G = *p++; + color.R = *p++; + color.B = *p++; + color.W = *p; + + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.G = pgm_read_byte(p++); + color.R = pgm_read_byte(p++); + color.B = pgm_read_byte(p++); + color.W = pgm_read_byte(p); + + return color; + } + +}; + +class NeoRgbwFeature : public Neo4Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = color.R; + *p++ = color.G; + *p++ = color.B; + *p = color.W; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.R = *p++; + color.G = *p++; + color.B = *p++; + color.W = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.R = pgm_read_byte(p++); + color.G = pgm_read_byte(p++); + color.B = pgm_read_byte(p++); + color.W = pgm_read_byte(p); + + return color; + } + +}; + +class NeoRgbFeature : public Neo3Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = color.R; + *p++ = color.G; + *p = color.B; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.R = *p++; + color.G = *p++; + color.B = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.R = pgm_read_byte(p++); + color.G = pgm_read_byte(p++); + color.B = pgm_read_byte(p); + + return color; + } + +}; + +class NeoBrgFeature : public Neo3Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = color.B; + *p++ = color.R; + *p = color.G; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.B = *p++; + color.R = *p++; + color.G = *p; + + return color; + } + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.B = pgm_read_byte(p++); + color.R = pgm_read_byte(p++); + color.G = pgm_read_byte(p); + + return color; + } + +}; + +class NeoRbgFeature : public Neo3Elements +{ +public: + static void applyPixelColor(uint8_t* pPixels, uint16_t indexPixel, ColorObject color) + { + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + *p++ = color.R; + *p++ = color.B; + *p = color.G; + } + + static ColorObject retrievePixelColor(uint8_t* pPixels, uint16_t indexPixel) + { + ColorObject color; + uint8_t* p = getPixelAddress(pPixels, indexPixel); + + color.R = *p++; + color.B = *p++; + color.G = *p; + + return color; + } + + + static ColorObject retrievePixelColor_P(PGM_VOID_P pPixels, uint16_t indexPixel) + { + ColorObject color; + const uint8_t* p = getPixelAddress((const uint8_t*)pPixels, indexPixel); + + color.R = pgm_read_byte(p++); + color.B = pgm_read_byte(p++); + color.G = pgm_read_byte(p); + + return color; + } + +}; diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoDib.h b/brain/sw/components/led-renderer/neopixel/internal/NeoDib.h new file mode 100644 index 0000000000..732706165f --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoDib.h @@ -0,0 +1,162 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +class NeoShaderBase +{ +public: + NeoShaderBase() : + _state(0) + { + } + + bool IsDirty() const + { + return (_state & NEO_DIRTY); + }; + + void Dirty() + { + _state |= NEO_DIRTY; + }; + + void ResetDirty() + { + _state &= ~NEO_DIRTY; + }; + +protected: + uint8_t _state; // internal state +}; + +template class NeoDib +{ +public: + NeoDib(uint16_t countPixels) : + _countPixels(countPixels), + _state(0) + { + _pixels = (T_COLOR_OBJECT*)malloc(PixelsSize()); + ResetDirty(); + } + + ~NeoDib() + { + free((uint8_t*)_pixels); + } + + T_COLOR_OBJECT* Pixels() const + { + return _pixels; + }; + + uint16_t PixelCount() const + { + return _countPixels; + }; + + size_t PixelsSize() const + { + return _countPixels * PixelSize(); + }; + + size_t PixelSize() const + { + return sizeof(T_COLOR_OBJECT); + }; + + void SetPixelColor( + uint16_t indexPixel, + T_COLOR_OBJECT color) + { + if (indexPixel < PixelCount()) + { + _pixels[indexPixel] = color; + Dirty(); + } + }; + + T_COLOR_OBJECT GetPixelColor( + uint16_t indexPixel) const + { + if (indexPixel >= PixelCount()) + { + return 0; + } + return _pixels[indexPixel]; + }; + + void ClearTo(T_COLOR_OBJECT color) + { + for (uint16_t pixel = 0; pixel < PixelCount(); pixel++) + { + _pixels[pixel] = color; + } + Dirty(); + }; + + template void Render(NeoBufferContext destBuffer, T_SHADER& shader) + { + if (IsDirty() || shader.IsDirty()) + { + uint16_t countPixels = destBuffer.PixelCount(); + + if (countPixels > _countPixels) + { + countPixels = _countPixels; + } + + for (uint16_t indexPixel = 0; indexPixel < countPixels; indexPixel++) + { + T_COLOR_OBJECT color = shader.Apply(indexPixel, _pixels[indexPixel]); + T_COLOR_FEATURE::applyPixelColor(destBuffer.Pixels, indexPixel, color); + } + + shader.ResetDirty(); + ResetDirty(); + } + } + + bool IsDirty() const + { + return (_state & NEO_DIRTY); + }; + + void Dirty() + { + _state |= NEO_DIRTY; + }; + + void ResetDirty() + { + _state &= ~NEO_DIRTY; + }; + +private: + const uint16_t _countPixels; // Number of RGB LEDs in strip + T_COLOR_OBJECT* _pixels; + uint8_t _state; // internal state +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoEase.h b/brain/sw/components/led-renderer/neopixel/internal/NeoEase.h new file mode 100644 index 0000000000..b7b5df9641 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoEase.h @@ -0,0 +1,312 @@ +/*------------------------------------------------------------------------- +NeoEase provides animation curve equations for animation support. + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#ifdef ARDUINO_ARCH_AVR + +typedef float(*AnimEaseFunction)(float unitValue); + +#else + +#undef max +#undef min +#include +typedef std::function AnimEaseFunction; + +#endif + +class NeoEase +{ +public: + static float Linear(float unitValue) + { + return unitValue; + } + + static float QuadraticIn(float unitValue) + { + return unitValue * unitValue; + } + + static float QuadraticOut(float unitValue) + { + return (-unitValue * (unitValue - 2.0f)); + } + + static float QuadraticInOut(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (0.5f * unitValue * unitValue); + } + else + { + unitValue -= 1.0f; + return (-0.5f * (unitValue * (unitValue - 2.0f) - 1.0f)); + } + } + + static float QuadraticCenter(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (-0.5f * (unitValue * unitValue - 2.0f)); + } + else + { + unitValue -= 1.0f; + return (0.5f * (unitValue * unitValue + 1.0f)); + } + } + + static float CubicIn(float unitValue) + { + return (unitValue * unitValue * unitValue); + } + + static float CubicOut(float unitValue) + { + unitValue -= 1.0f; + return (unitValue * unitValue * unitValue + 1); + } + + static float CubicInOut(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (0.5f * unitValue * unitValue * unitValue); + } + else + { + unitValue -= 2.0f; + return (0.5f * (unitValue * unitValue * unitValue + 2.0f)); + } + } + + static float CubicCenter(float unitValue) + { + unitValue *= 2.0f; + unitValue -= 1.0f; + return (0.5f * (unitValue * unitValue * unitValue) + 1); + } + + static float QuarticIn(float unitValue) + { + return (unitValue * unitValue * unitValue * unitValue); + } + + static float QuarticOut(float unitValue) + { + unitValue -= 1.0f; + return -(unitValue * unitValue * unitValue * unitValue - 1); + } + + static float QuarticInOut(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (0.5f * unitValue * unitValue * unitValue * unitValue); + } + else + { + unitValue -= 2.0f; + return (-0.5f * (unitValue * unitValue * unitValue * unitValue - 2.0f)); + } + } + + static float QuarticCenter(float unitValue) + { + unitValue *= 2.0f; + unitValue -= 1.0f; + if (unitValue < 0.0f) + { + return (-0.5f * (unitValue * unitValue * unitValue * unitValue - 1.0f)); + } + else + { + return (0.5f * (unitValue * unitValue * unitValue * unitValue + 1.0f)); + } + } + + static float QuinticIn(float unitValue) + { + return (unitValue * unitValue * unitValue * unitValue * unitValue); + } + + static float QuinticOut(float unitValue) + { + unitValue -= 1.0f; + return (unitValue * unitValue * unitValue * unitValue * unitValue + 1.0f); + } + + static float QuinticInOut(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (0.5f * unitValue * unitValue * unitValue * unitValue * unitValue); + } + else + { + unitValue -= 2.0f; + return (0.5f * (unitValue * unitValue * unitValue * unitValue * unitValue + 2.0f)); + } + } + + static float QuinticCenter(float unitValue) + { + unitValue *= 2.0f; + unitValue -= 1.0f; + return (0.5f * (unitValue * unitValue * unitValue * unitValue * unitValue + 1.0f)); + } + + static float SinusoidalIn(float unitValue) + { + return (-cos(unitValue * HALF_PI) + 1.0f); + } + + static float SinusoidalOut(float unitValue) + { + return (sin(unitValue * HALF_PI)); + } + + static float SinusoidalInOut(float unitValue) + { + return -0.5 * (cos(PI * unitValue) - 1.0f); + } + + static float SinusoidalCenter(float unitValue) + { + if (unitValue < 0.5f) + { + return (0.5 * sin(PI * unitValue)); + } + else + { + return (-0.5 * (cos(PI * (unitValue-0.5f)) + 1.0f)); + } + + } + + static float ExponentialIn(float unitValue) + { + return (pow(2, 10.0f * (unitValue - 1.0f))); + } + + static float ExponentialOut(float unitValue) + { + return (-pow(2, -10.0f * unitValue) + 1.0f); + } + + static float ExponentialInOut(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (0.5f * pow(2, 10.0f * (unitValue - 1.0f))); + } + else + { + unitValue -= 1.0f; + return (0.5f * (-pow(2, -10.0f * unitValue) + 2.0f)); + } + } + + static float ExponentialCenter(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (0.5f * (-pow(2, -10.0f * unitValue) + 1.0f)); + } + else + { + unitValue -= 2.0f; + return (0.5f * (pow(2, 10.0f * unitValue) + 1.0f)); + } + } + + static float CircularIn(float unitValue) + { + if (unitValue == 1.0f) + { + return 1.0f; + } + else + { + return (-(sqrt(1.0f - unitValue * unitValue) - 1.0f)); + } + } + + static float CircularOut(float unitValue) + { + unitValue -= 1.0f; + return (sqrt(1.0f - unitValue * unitValue)); + } + + static float CircularInOut(float unitValue) + { + unitValue *= 2.0f; + if (unitValue < 1.0f) + { + return (-0.5f * (sqrt(1.0f - unitValue * unitValue) - 1)); + } + else + { + unitValue -= 2.0f; + return (0.5f * (sqrt(1.0f - unitValue * unitValue) + 1.0f)); + } + } + + static float CircularCenter(float unitValue) + { + unitValue *= 2.0f; + unitValue -= 1.0f; + if (unitValue == 0.0f) + { + return 1.0f; + } + else if (unitValue < 0.0f) + { + return (0.5f * sqrt(1.0f - unitValue * unitValue)); + } + else + { + unitValue -= 2.0f; + return (-0.5f * (sqrt(1.0f - unitValue * unitValue) - 1.0f ) + 0.5f); + } + } + + static float Gamma(float unitValue) + { + return pow(unitValue, 1.0f / 0.45f); + } +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoEsp32I2sMethod.h b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp32I2sMethod.h new file mode 100644 index 0000000000..2918de7c8d --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp32I2sMethod.h @@ -0,0 +1,203 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Esp32. + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#ifdef ARDUINO_ARCH_ESP32 + +extern "C" +{ +#include +#include "Esp32_i2s.h" +} + +const uint16_t c_dmaBytesPerPixelBytes = 4; +const uint16_t c_dmaBytesPer50us = 20; +const uint32_t c_dmaI2sSampleRate = 100000; + +class NeoEsp32I2sSpeedWs2812x +{ +public: + const static uint16_t I2sSampleRateDiv = 1; + const static uint16_t ResetTimeUs = 300; +}; + +class NeoEsp32I2sSpeedSk6812 +{ +public: + const static uint16_t I2sSampleRateDiv = 1; + const static uint16_t ResetTimeUs = 80; +}; + +class NeoEsp32I2sSpeed800Kbps +{ +public: + const static uint16_t I2sSampleRateDiv = 1; + const static uint16_t ResetTimeUs = 50; +}; + +class NeoEsp32I2sSpeed400Kbps +{ +public: + const static uint16_t I2sSampleRateDiv = 2; + const static uint16_t ResetTimeUs = 50; +}; + +class NeoEsp32I2sBusZero +{ +public: + const static uint8_t I2sBusNumber = 0; +}; + +class NeoEsp32I2sBusOne +{ +public: + const static uint8_t I2sBusNumber = 1; +}; + +template class NeoEsp32I2sMethodBase +{ +public: + NeoEsp32I2sMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize) : + _pin(pin) + { + uint16_t dmaPixelSize = c_dmaBytesPerPixelBytes * elementSize; + uint16_t resetSize = (c_dmaBytesPer50us * T_SPEED::ResetTimeUs / 50 / T_SPEED::I2sSampleRateDiv); + + _pixelsSize = pixelCount * elementSize; + _i2sBufferSize = pixelCount * dmaPixelSize + resetSize; + + // must have a 4 byte aligned buffer for i2s + uint32_t alignment = _i2sBufferSize % 4; + if (alignment) + { + _i2sBufferSize += 4 - alignment; + } + + _pixels = (uint8_t*)malloc(_pixelsSize); + memset(_pixels, 0x00, _pixelsSize); + + _i2sBuffer = (uint8_t*)malloc(_i2sBufferSize); + memset(_i2sBuffer, 0x00, _i2sBufferSize); + } + + ~NeoEsp32I2sMethodBase() + { + while (!IsReadyToUpdate()) + { + yield(); + } + + pinMode(_pin, INPUT); + + free(_pixels); + free(_i2sBuffer); + } + + bool IsReadyToUpdate() const + { + return (i2sWriteDone(T_BUS::I2sBusNumber)); + } + + void Initialize() + { + i2sInit(T_BUS::I2sBusNumber, 16, c_dmaI2sSampleRate / T_SPEED::I2sSampleRateDiv, I2S_CHAN_STEREO, I2S_FIFO_16BIT_DUAL, 4, 0); + i2sSetPins(T_BUS::I2sBusNumber, _pin, -1, -1, -1); + } + + void Update() + { + // wait for not actively sending data + while (!IsReadyToUpdate()) + { + yield(); + } + + FillBuffers(); + + i2sWrite(T_BUS::I2sBusNumber, _i2sBuffer, _i2sBufferSize, false, false); + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _pixelsSize; + } + +private: + const uint8_t _pin; // output pin number + + size_t _pixelsSize; // Size of '_pixels' buffer + uint8_t* _pixels; // Holds LED color values + + uint32_t _i2sBufferSize; // total size of _i2sBuffer + uint8_t* _i2sBuffer; // holds the DMA buffer that is referenced by _i2sBufDesc + + void FillBuffers() + { + const uint16_t bitpatterns[16] = + { + 0b1000100010001000, 0b1000100010001110, 0b1000100011101000, 0b1000100011101110, + 0b1000111010001000, 0b1000111010001110, 0b1000111011101000, 0b1000111011101110, + 0b1110100010001000, 0b1110100010001110, 0b1110100011101000, 0b1110100011101110, + 0b1110111010001000, 0b1110111010001110, 0b1110111011101000, 0b1110111011101110, + }; + + uint16_t* pDma = (uint16_t*)_i2sBuffer; + uint8_t* pPixelsEnd = _pixels + _pixelsSize; + for (uint8_t* pPixel = _pixels; pPixel < pPixelsEnd; pPixel++) + { + *(pDma++) = bitpatterns[((*pPixel) & 0x0f)]; + *(pDma++) = bitpatterns[((*pPixel) >> 4) & 0x0f]; + } + } +}; + +typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Ws2812xMethod; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s0Sk6812Method; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s0800KbpsMethod; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s0400KbpsMethod; + +typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Ws2812xMethod; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s1Sk6812Method; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s1800KbpsMethod; +typedef NeoEsp32I2sMethodBase NeoEsp32I2s1400KbpsMethod; + +// I2s Bus 1 method is the default method for Esp32 +typedef NeoEsp32I2s1Ws2812xMethod NeoWs2813Method; +typedef NeoEsp32I2s1Ws2812xMethod NeoWs2812xMethod; +typedef NeoEsp32I2s1800KbpsMethod NeoWs2812Method; +typedef NeoEsp32I2s1Sk6812Method NeoSk6812Method; +typedef NeoEsp32I2s1Sk6812Method NeoLc8812Method; + +typedef NeoEsp32I2s1Ws2812xMethod Neo800KbpsMethod; +typedef NeoEsp32I2s1400KbpsMethod Neo400KbpsMethod; + +#endif \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266DmaMethod.h b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266DmaMethod.h new file mode 100644 index 0000000000..d6ab58273b --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266DmaMethod.h @@ -0,0 +1,447 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Esp8266. + + +Written by Michael C. Miller. +Thanks to g3gg0.de for porting the initial DMA support which lead to this. +Thanks to github/cnlohr for the original work on DMA support, which opend +all our minds to a better way (located at https://github.com/cnlohr/esp8266ws2812i2s). + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#ifdef ARDUINO_ARCH_ESP8266 + +extern "C" +{ +#include "Arduino.h" +#include "osapi.h" +#include "ets_sys.h" + +#include "i2s_reg.h" +#include "i2s.h" +#include "eagle_soc.h" +#include "esp8266_peri.h" +#include "slc_register.h" + +#include "osapi.h" +#include "ets_sys.h" +#include "user_interface.h" + + void rom_i2c_writeReg_Mask(uint32_t block, uint32_t host_id, uint32_t reg_add, uint32_t Msb, uint32_t Lsb, uint32_t indata); +} + +struct slc_queue_item +{ + uint32 blocksize : 12; + uint32 datalen : 12; + uint32 unused : 5; + uint32 sub_sof : 1; + uint32 eof : 1; + uint32 owner : 1; + uint32 buf_ptr; + uint32 next_link_ptr; +}; + +class NeoEsp8266DmaSpeed800KbpsBase +{ +public: + const static uint32_t I2sClockDivisor = 3; + const static uint32_t I2sBaseClockDivisor = 16; + const static uint32_t ByteSendTimeUs = 10; // us it takes to send a single pixel element at 800khz speed +}; + +class NeoEsp8266DmaSpeedWs2812x : public NeoEsp8266DmaSpeed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 300; +}; + +class NeoEsp8266DmaSpeedSk6812 : public NeoEsp8266DmaSpeed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 80; +}; + +class NeoEsp8266DmaSpeed800Kbps : public NeoEsp8266DmaSpeed800KbpsBase +{ +public: + const static uint32_t ResetTimeUs = 50; +}; + +class NeoEsp8266DmaSpeed400Kbps +{ +public: + const static uint32_t I2sClockDivisor = 6; + const static uint32_t I2sBaseClockDivisor = 16; + const static uint32_t ByteSendTimeUs = 20; // us it takes to send a single pixel element at 400khz speed + const static uint32_t ResetTimeUs = 50; +}; + +enum NeoDmaState +{ + NeoDmaState_Idle, + NeoDmaState_Pending, + NeoDmaState_Sending, + NeoDmaState_Zeroing, +}; +const uint16_t c_maxDmaBlockSize = 4095; +const uint16_t c_dmaBytesPerPixelBytes = 4; +const uint8_t c_I2sPin = 3; // due to I2S hardware, the pin used is restricted to this + +template class NeoEsp8266DmaMethodBase +{ +public: + NeoEsp8266DmaMethodBase(uint16_t pixelCount, size_t elementSize) + { + uint16_t dmaPixelSize = c_dmaBytesPerPixelBytes * elementSize; + + _pixelsSize = pixelCount * elementSize; + _i2sBufferSize = pixelCount * dmaPixelSize; + + _pixels = (uint8_t*)malloc(_pixelsSize); + memset(_pixels, 0x00, _pixelsSize); + + _i2sBuffer = (uint8_t*)malloc(_i2sBufferSize); + memset(_i2sBuffer, 0x00, _i2sBufferSize); + + // _i2sBuffer[0] = 0b11101000; // debug, 1 bit then 0 bit + + memset(_i2sZeroes, 0x00, sizeof(_i2sZeroes)); + + _is2BufMaxBlockSize = (c_maxDmaBlockSize / dmaPixelSize) * dmaPixelSize; + + _i2sBufDescCount = (_i2sBufferSize / _is2BufMaxBlockSize) + 1 + 2; // need two more for state/latch blocks + _i2sBufDesc = (slc_queue_item*)malloc(_i2sBufDescCount * sizeof(slc_queue_item)); + + s_this = this; // store this for the ISR + } + + NeoEsp8266DmaMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize) : NeoEsp8266DmaMethodBase(pixelCount, elementSize) + { + } + + ~NeoEsp8266DmaMethodBase() + { + uint8_t waits = 1; + while (!IsReadyToUpdate()) + { + waits = 2; + yield(); + } + + // wait for any pending sends to complete + // due to internal i2s caching/send delays, this can more that once the data size + uint32_t time = micros(); + while ((micros() - time) < ((getPixelTime() + T_SPEED::ResetTimeUs) * waits)) + { + yield(); + } + + StopDma(); + + s_this = nullptr; + pinMode(c_I2sPin, INPUT); + + free(_pixels); + free(_i2sBuffer); + free(_i2sBufDesc); + } + + bool IsReadyToUpdate() + { + return (_dmaState == NeoDmaState_Idle); + } + + void Initialize() + { + StopDma(); + + pinMode(c_I2sPin, FUNCTION_1); // I2S0_DATA + + uint8_t* is2Buffer = _i2sBuffer; + uint32_t is2BufferSize = _i2sBufferSize; + uint16_t indexDesc; + + // prepare main data block decriptors that point into our one static dma buffer + for (indexDesc = 0; indexDesc < (_i2sBufDescCount - 2); indexDesc++) + { + uint32_t blockSize = (is2BufferSize > _is2BufMaxBlockSize) ? _is2BufMaxBlockSize : is2BufferSize; + + _i2sBufDesc[indexDesc].owner = 1; + _i2sBufDesc[indexDesc].eof = 0; // no need to trigger interrupt generally + _i2sBufDesc[indexDesc].sub_sof = 0; + _i2sBufDesc[indexDesc].datalen = blockSize; + _i2sBufDesc[indexDesc].blocksize = blockSize; + _i2sBufDesc[indexDesc].buf_ptr = (uint32_t)is2Buffer; + _i2sBufDesc[indexDesc].unused = 0; + _i2sBufDesc[indexDesc].next_link_ptr = (uint32_t)&(_i2sBufDesc[indexDesc + 1]); + + is2Buffer += blockSize; + is2BufferSize -= blockSize; + } + + // prepare the two state/latch descriptors + for (; indexDesc < _i2sBufDescCount; indexDesc++) + { + _i2sBufDesc[indexDesc].owner = 1; + _i2sBufDesc[indexDesc].eof = 0; // no need to trigger interrupt generally + _i2sBufDesc[indexDesc].sub_sof = 0; + _i2sBufDesc[indexDesc].datalen = sizeof(_i2sZeroes); + _i2sBufDesc[indexDesc].blocksize = sizeof(_i2sZeroes); + _i2sBufDesc[indexDesc].buf_ptr = (uint32_t)_i2sZeroes; + _i2sBufDesc[indexDesc].unused = 0; + _i2sBufDesc[indexDesc].next_link_ptr = (uint32_t)&(_i2sBufDesc[indexDesc + 1]); + } + + // the first state block will trigger the interrupt + _i2sBufDesc[indexDesc - 2].eof = 1; + // the last state block will loop to the first state block by defualt + _i2sBufDesc[indexDesc - 1].next_link_ptr = (uint32_t)&(_i2sBufDesc[indexDesc - 2]); + + // setup the rest of i2s DMA + // + ETS_SLC_INTR_DISABLE(); + + // start off in sending state as that is what it will be all setup to be + // for the interrupt + _dmaState = NeoDmaState_Sending; + + SLCC0 |= SLCRXLR | SLCTXLR; + SLCC0 &= ~(SLCRXLR | SLCTXLR); + SLCIC = 0xFFFFFFFF; + + // Configure DMA + SLCC0 &= ~(SLCMM << SLCM); // clear DMA MODE + SLCC0 |= (1 << SLCM); // set DMA MODE to 1 + SLCRXDC |= SLCBINR | SLCBTNR; // enable INFOR_NO_REPLACE and TOKEN_NO_REPLACE + SLCRXDC &= ~(SLCBRXFE | SLCBRXEM | SLCBRXFM); // disable RX_FILL, RX_EOF_MODE and RX_FILL_MODE + + // Feed DMA the 1st buffer desc addr + // To send data to the I2S subsystem, counter-intuitively we use the RXLINK part, not the TXLINK as you might + // expect. The TXLINK part still needs a valid DMA descriptor, even if it's unused: the DMA engine will throw + // an error at us otherwise. Just feed it any random descriptor. + SLCTXL &= ~(SLCTXLAM << SLCTXLA); // clear TX descriptor address + // set TX descriptor address. any random desc is OK, we don't use TX but it needs to be valid + SLCTXL |= (uint32)&(_i2sBufDesc[_i2sBufDescCount-1]) << SLCTXLA; + SLCRXL &= ~(SLCRXLAM << SLCRXLA); // clear RX descriptor address + // set RX descriptor address. use first of the data addresses + SLCRXL |= (uint32)&(_i2sBufDesc[0]) << SLCRXLA; + + ETS_SLC_INTR_ATTACH(i2s_slc_isr, NULL); + SLCIE = SLCIRXEOF; // Enable only for RX EOF interrupt + + ETS_SLC_INTR_ENABLE(); + + //Start transmission + SLCTXL |= SLCTXLS; + SLCRXL |= SLCRXLS; + + I2S_CLK_ENABLE(); + I2SIC = 0x3F; + I2SIE = 0; + + //Reset I2S + I2SC &= ~(I2SRST); + I2SC |= I2SRST; + I2SC &= ~(I2SRST); + + // Set RX/TX FIFO_MOD=0 and disable DMA (FIFO only) + I2SFC &= ~(I2SDE | (I2STXFMM << I2STXFM) | (I2SRXFMM << I2SRXFM)); + I2SFC |= I2SDE; //Enable DMA + // Set RX/TX CHAN_MOD=0 + I2SCC &= ~((I2STXCMM << I2STXCM) | (I2SRXCMM << I2SRXCM)); + + // set the rate + uint32_t i2s_clock_div = T_SPEED::I2sClockDivisor & I2SCDM; + uint8_t i2s_bck_div = T_SPEED::I2sBaseClockDivisor & I2SBDM; + + //!trans master, !bits mod, rece slave mod, rece msb shift, right first, msb right + I2SC &= ~(I2STSM | I2SRSM | (I2SBMM << I2SBM) | (I2SBDM << I2SBD) | (I2SCDM << I2SCD)); + I2SC |= I2SRF | I2SMR | I2SRSM | I2SRMS | (i2s_bck_div << I2SBD) | (i2s_clock_div << I2SCD); + + I2SC |= I2STXS; // Start transmission + } + + void ICACHE_RAM_ATTR Update() + { + // wait for not actively sending data + while (!IsReadyToUpdate()) + { + yield(); + } + FillBuffers(); + + // toggle state so the ISR reacts + _dmaState = NeoDmaState_Pending; + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _pixelsSize; + } + +private: + static NeoEsp8266DmaMethodBase* s_this; // for the ISR + + size_t _pixelsSize; // Size of '_pixels' buffer + uint8_t* _pixels; // Holds LED color values + + uint32_t _i2sBufferSize; // total size of _i2sBuffer + uint8_t* _i2sBuffer; // holds the DMA buffer that is referenced by _i2sBufDesc + + // normally 24 bytes creates the minimum 50us latch per spec, but + // with the new logic, this latch is used to space between mulitple states + // buffer size = (24 * (reset time / 50)) / 6 + uint8_t _i2sZeroes[(24L * (T_SPEED::ResetTimeUs / 50L)) / 6L]; + + slc_queue_item* _i2sBufDesc; // dma block descriptors + uint16_t _i2sBufDescCount; // count of block descriptors in _i2sBufDesc + uint16_t _is2BufMaxBlockSize; // max size based on size of a pixel of a single block + + volatile NeoDmaState _dmaState; + + // This routine is called as soon as the DMA routine has something to tell us. All we + // handle here is the RX_EOF_INT status, which indicate the DMA has sent a buffer whose + // descriptor has the 'EOF' field set to 1. + // in the case of this code, the second to last state descriptor + volatile static void ICACHE_RAM_ATTR i2s_slc_isr(void) + { + ETS_SLC_INTR_DISABLE(); + + uint32_t slc_intr_status = SLCIS; + + SLCIC = 0xFFFFFFFF; + + if ((slc_intr_status & SLCIRXEOF) && s_this) + { + switch (s_this->_dmaState) + { + case NeoDmaState_Idle: + break; + + case NeoDmaState_Pending: + { + slc_queue_item* finished_item = (slc_queue_item*)SLCRXEDA; + + // data block has pending data waiting to send, prepare it + // point last state block to top + (finished_item + 1)->next_link_ptr = (uint32_t)(s_this->_i2sBufDesc); + + s_this->_dmaState = NeoDmaState_Sending; + } + break; + + case NeoDmaState_Sending: + { + slc_queue_item* finished_item = (slc_queue_item*)SLCRXEDA; + + // the data block had actual data sent + // point last state block to first state block thus + // just looping and not sending the data blocks + (finished_item + 1)->next_link_ptr = (uint32_t)(finished_item); + + s_this->_dmaState = NeoDmaState_Zeroing; + } + break; + + case NeoDmaState_Zeroing: + s_this->_dmaState = NeoDmaState_Idle; + break; + } + } + + ETS_SLC_INTR_ENABLE(); + } + + void FillBuffers() + { + const uint16_t bitpatterns[16] = + { + 0b1000100010001000, 0b1000100010001110, 0b1000100011101000, 0b1000100011101110, + 0b1000111010001000, 0b1000111010001110, 0b1000111011101000, 0b1000111011101110, + 0b1110100010001000, 0b1110100010001110, 0b1110100011101000, 0b1110100011101110, + 0b1110111010001000, 0b1110111010001110, 0b1110111011101000, 0b1110111011101110, + }; + + uint16_t* pDma = (uint16_t*)_i2sBuffer; + uint8_t* pPixelsEnd = _pixels + _pixelsSize; + for (uint8_t* pPixel = _pixels; pPixel < pPixelsEnd; pPixel++) + { + *(pDma++) = bitpatterns[((*pPixel) & 0x0f)]; + *(pDma++) = bitpatterns[((*pPixel) >> 4) & 0x0f]; + } + } + + void StopDma() + { + ETS_SLC_INTR_DISABLE(); + + // Disable any I2S send or receive + I2SC &= ~(I2STXS | I2SRXS); + + // Reset I2S + I2SC &= ~(I2SRST); + I2SC |= I2SRST; + I2SC &= ~(I2SRST); + + + SLCIC = 0xFFFFFFFF; + SLCIE = 0; + SLCTXL &= ~(SLCTXLAM << SLCTXLA); // clear TX descriptor address + SLCRXL &= ~(SLCRXLAM << SLCRXLA); // clear RX descriptor address + + pinMode(c_I2sPin, INPUT); + } + + uint32_t getPixelTime() const + { + return (T_SPEED::ByteSendTimeUs * this->_pixelsSize); + }; + +}; + +template +NeoEsp8266DmaMethodBase* NeoEsp8266DmaMethodBase::s_this; + +typedef NeoEsp8266DmaMethodBase NeoEsp8266DmaWs2812xMethod; +typedef NeoEsp8266DmaMethodBase NeoEsp8266DmaSk6812Method; +typedef NeoEsp8266DmaMethodBase NeoEsp8266Dma800KbpsMethod; +typedef NeoEsp8266DmaMethodBase NeoEsp8266Dma400KbpsMethod; + +// Dma method is the default method for Esp8266 +typedef NeoEsp8266DmaWs2812xMethod NeoWs2813Method; +typedef NeoEsp8266DmaWs2812xMethod NeoWs2812xMethod; +typedef NeoEsp8266Dma800KbpsMethod NeoWs2812Method; +typedef NeoEsp8266DmaSk6812Method NeoSk6812Method; +typedef NeoEsp8266DmaSk6812Method NeoLc8812Method; + +typedef NeoEsp8266DmaWs2812xMethod Neo800KbpsMethod; +typedef NeoEsp8266Dma400KbpsMethod Neo400KbpsMethod; + +#endif \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.cpp b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.cpp new file mode 100644 index 0000000000..eb06812e6e --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.cpp @@ -0,0 +1,171 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Esp8266 UART hardware + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#ifdef ARDUINO_ARCH_ESP8266 +#include "NeoEsp8266UartMethod.h" +#include +extern "C" +{ + #include +} + +const volatile uint8_t* ICACHE_RAM_ATTR NeoEsp8266UartContext::FillUartFifo(uint8_t uartNum, + const volatile uint8_t* pixels, + const volatile uint8_t* end) +{ + // Remember: UARTs send less significant bit (LSB) first so + // pushing ABCDEF byte will generate a 0FEDCBA1 signal, + // including a LOW(0) start & a HIGH(1) stop bits. + // Also, we have configured UART to invert logic levels, so: + const uint8_t _uartData[4] = { + 0b110111, // On wire: 1 000 100 0 [Neopixel reads 00] + 0b000111, // On wire: 1 000 111 0 [Neopixel reads 01] + 0b110100, // On wire: 1 110 100 0 [Neopixel reads 10] + 0b000100, // On wire: 1 110 111 0 [NeoPixel reads 11] + }; + uint8_t avail = (UART_TX_FIFO_SIZE - GetTxFifoLength(uartNum)) / 4; + if (end - pixels > avail) + { + end = pixels + avail; + } + while (pixels < end) + { + uint8_t subpix = *pixels++; + Enqueue(uartNum, _uartData[(subpix >> 6) & 0x3]); + Enqueue(uartNum, _uartData[(subpix >> 4) & 0x3]); + Enqueue(uartNum, _uartData[(subpix >> 2) & 0x3]); + Enqueue(uartNum, _uartData[subpix & 0x3]); + } + return pixels; +} + +volatile NeoEsp8266UartInterruptContext* NeoEsp8266UartInterruptContext::s_uartInteruptContext[] = { nullptr, nullptr }; + +void NeoEsp8266UartInterruptContext::StartSending(uint8_t uartNum, uint8_t* start, uint8_t* end) +{ + // send the pixels asynchronously + _asyncBuff = start; + _asyncBuffEnd = end; + + // enable the transmit interrupt + USIE(uartNum) |= (1 << UIFE); +} + +void NeoEsp8266UartInterruptContext::Attach(uint8_t uartNum) +{ + // Disable all interrupts + ETS_UART_INTR_DISABLE(); + + // Clear the RX & TX FIFOS + const uint32_t fifoResetFlags = (1 << UCTXRST) | (1 << UCRXRST); + USC0(uartNum) |= fifoResetFlags; + USC0(uartNum) &= ~(fifoResetFlags); + + // attach the ISR if needed + if (s_uartInteruptContext[0] == nullptr && + s_uartInteruptContext[1] == nullptr) + { + ETS_UART_INTR_ATTACH(Isr, s_uartInteruptContext); + } + + // attach the context + s_uartInteruptContext[uartNum] = this; + + // Set tx fifo trigger. 80 bytes gives us 200 microsecs to refill the FIFO + USC1(uartNum) = (80 << UCFET); + + // Disable RX & TX interrupts. It maybe still enabled by uart.c in the SDK + USIE(uartNum) &= ~((1 << UIFF) | (1 << UIFE)); + + // Clear all pending interrupts in UART1 + USIC(uartNum) = 0xffff; + + // Reenable interrupts + ETS_UART_INTR_ENABLE(); +} + +void NeoEsp8266UartInterruptContext::Detach(uint8_t uartNum) +{ + // Disable interrupts + ETS_UART_INTR_DISABLE(); + + if (s_uartInteruptContext[uartNum] != nullptr) + { + // turn off uart + USC1(uartNum) = 0; + USIC(uartNum) = 0xffff; + USIE(uartNum) = 0; + + s_uartInteruptContext[uartNum] = nullptr; + + if (s_uartInteruptContext[0] == nullptr && + s_uartInteruptContext[1] == nullptr) + { + // detach our ISR + ETS_UART_INTR_ATTACH(NULL, NULL); + + // return so we don't enable interrupts since there is no ISR anymore + return; + } + } + + // Reenable interrupts + ETS_UART_INTR_ENABLE(); +} + +void ICACHE_RAM_ATTR NeoEsp8266UartInterruptContext::Isr(void* param) +{ + // make sure this is for us + if (param == s_uartInteruptContext) + { + // Interrupt handler is shared between UART0 & UART1 + // so we need to test for both + for (uint8_t uartNum = 0; uartNum < 2; uartNum++) + { + if (USIS(uartNum) && s_uartInteruptContext[uartNum] != nullptr) + { + // Fill the FIFO with new data + s_uartInteruptContext[uartNum]->_asyncBuff = FillUartFifo( + uartNum, + s_uartInteruptContext[uartNum]->_asyncBuff, + s_uartInteruptContext[uartNum]->_asyncBuffEnd); + + // Disable TX interrupt when done + if (s_uartInteruptContext[uartNum]->_asyncBuff == s_uartInteruptContext[uartNum]->_asyncBuffEnd) + { + // clear the TX FIFO Empty + USIE(uartNum) &= ~(1 << UIFE); + } + + // Clear all interrupts flags (just in case) + USIC(uartNum) = 0xffff; + } + } + } +} + +#endif + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.h b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.h new file mode 100644 index 0000000000..2c88a7ff97 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoEsp8266UartMethod.h @@ -0,0 +1,410 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Esp8266 UART hardware + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#ifdef ARDUINO_ARCH_ESP8266 +#include + +// this template method class is used to track the data being sent on the uart +// when using the default serial ISR installed by the core +// used with NeoEsp8266Uart and NeoEsp8266AsyncUart classes +// +class NeoEsp8266UartContext +{ +public: + // Gets the number of bytes waiting in the TX FIFO + static inline uint8_t ICACHE_RAM_ATTR GetTxFifoLength(uint8_t uartNum) + { + return (USS(uartNum) >> USTXC) & 0xff; + } + // Append a byte to the TX FIFO + static inline void ICACHE_RAM_ATTR Enqueue(uint8_t uartNum, uint8_t value) + { + USF(uartNum) = value; + } + + static const volatile uint8_t* ICACHE_RAM_ATTR FillUartFifo(uint8_t uartNum, + const volatile uint8_t* pixels, + const volatile uint8_t* end); +}; + +// this template method class is used to track the data being sent on the uart +// when using our own UART ISR +// used with NeoEsp8266Uart and NeoEsp8266AsyncUart classes +// +class NeoEsp8266UartInterruptContext : NeoEsp8266UartContext +{ +public: + NeoEsp8266UartInterruptContext() : + _asyncBuff(nullptr), + _asyncBuffEnd(nullptr) + { + } + + bool IsSending() + { + return (_asyncBuff != _asyncBuffEnd); + } + + void StartSending(uint8_t uartNum, uint8_t* start, uint8_t* end); + void Attach(uint8_t uartNum); + void Detach(uint8_t uartNum); + +private: + volatile const uint8_t* _asyncBuff; + volatile const uint8_t* _asyncBuffEnd; + volatile static NeoEsp8266UartInterruptContext* s_uartInteruptContext[2]; + + static void ICACHE_RAM_ATTR Isr(void* param); +}; + +// this template feature class is used a base for all others and contains +// common methods +// +class UartFeatureBase +{ +protected: + static void ConfigUart(uint8_t uartNum) + { + // clear all invert bits + USC0(uartNum) &= ~((1 << UCDTRI) | (1 << UCRTSI) | (1 << UCTXI) | (1 << UCDSRI) | (1 << UCCTSI) | (1 << UCRXI)); + // Invert the TX voltage associated with logic level so: + // - A logic level 0 will generate a Vcc signal + // - A logic level 1 will generate a Gnd signal + USC0(uartNum) |= (1 << UCTXI); + } +}; + +// this template feature class is used to define the specifics for uart0 +// used with NeoEsp8266Uart and NeoEsp8266AsyncUart classes +// +class UartFeature0 : UartFeatureBase +{ +public: + static const uint32_t Index = 0; + static void Init(uint32_t baud) + { + // Configure the serial line with 1 start bit (0), 6 data bits and 1 stop bit (1) + Serial.begin(baud, SERIAL_6N1, SERIAL_TX_ONLY); + ConfigUart(Index); + } +}; + +// this template feature class is used to define the specifics for uart1 +// used with NeoEsp8266Uart and NeoEsp8266AsyncUart classes +// +class UartFeature1 : UartFeatureBase +{ +public: + static const uint32_t Index = 1; + static void Init(uint32_t baud) + { + // Configure the serial line with 1 start bit (0), 6 data bits and 1 stop bit (1) + Serial1.begin(baud, SERIAL_6N1, SERIAL_TX_ONLY); + ConfigUart(Index); + } +}; + +// this template method class is used a base for all others and contains +// common properties and methods +// +// used by NeoEsp8266Uart and NeoEsp8266AsyncUart +// +class NeoEsp8266UartBase +{ +protected: + size_t _sizePixels; // Size of '_pixels' buffer below + uint8_t* _pixels; // Holds LED color values + uint32_t _startTime; // Microsecond count when last update started + + NeoEsp8266UartBase(uint16_t pixelCount, size_t elementSize) + { + _sizePixels = pixelCount * elementSize; + _pixels = (uint8_t*)malloc(_sizePixels); + memset(_pixels, 0x00, _sizePixels); + } + + ~NeoEsp8266UartBase() + { + free(_pixels); + } + +}; + +// this template method class is used to glue uart feature and context for +// synchronous uart method +// +// used by NeoEsp8266UartMethodBase +// +template class NeoEsp8266Uart : public NeoEsp8266UartBase +{ +protected: + + NeoEsp8266Uart(uint16_t pixelCount, size_t elementSize) : + NeoEsp8266UartBase(pixelCount, elementSize) + { + } + + ~NeoEsp8266Uart() + { + // Wait until the TX fifo is empty. This way we avoid broken frames + // when destroying & creating a NeoPixelBus to change its length. + while (T_UARTCONTEXT::GetTxFifoLength(T_UARTFEATURE::Index) > 0) + { + yield(); + } + } + + void InitializeUart(uint32_t uartBaud) + { + T_UARTFEATURE::Init(uartBaud); + } + + void UpdateUart() + { + // Since the UART can finish sending queued bytes in the FIFO in + // the background, instead of waiting for the FIFO to flush + // we annotate the start time of the frame so we can calculate + // when it will finish. + _startTime = micros(); + + // Then keep filling the FIFO until done + const uint8_t* ptr = _pixels; + const uint8_t* end = ptr + _sizePixels; + while (ptr != end) + { + ptr = const_cast(T_UARTCONTEXT::FillUartFifo(T_UARTFEATURE::Index, ptr, end)); + } + } +}; + +// this template method class is used to glue uart feature and context for +// asynchronously uart method +// +// This UART controller uses two buffers that are swapped in every call to +// NeoPixelBus.Show(). One buffer contains the data that is being sent +// asynchronosly and another buffer contains the data that will be send +// in the next call to NeoPixelBus.Show(). +// +// Therefore, the result of NeoPixelBus.Pixels() is invalidated after +// every call to NeoPixelBus.Show() and must not be cached. +// +// used by NeoEsp8266UartMethodBase +// +template class NeoEsp8266AsyncUart : public NeoEsp8266UartBase +{ +protected: + NeoEsp8266AsyncUart(uint16_t pixelCount, size_t elementSize) : + NeoEsp8266UartBase(pixelCount, elementSize) + { + _asyncPixels = (uint8_t*)malloc(_sizePixels); + } + + ~NeoEsp8266AsyncUart() + { + // Remember: the UART interrupt can be sending data from _asyncPixels in the background + while (_context.IsSending()) + { + yield(); + } + // detach context, which will disable intr, may disable ISR + _context.Detach(T_UARTFEATURE::Index); + + free(_asyncPixels); + } + + void ICACHE_RAM_ATTR InitializeUart(uint32_t uartBaud) + { + T_UARTFEATURE::Init(uartBaud); + + // attach the context, which will enable the ISR + _context.Attach(T_UARTFEATURE::Index); + } + + void UpdateUart() + { + // Instruct ESP8266 hardware uart to send the pixels asynchronously + _context.StartSending(T_UARTFEATURE::Index, + _pixels, + _pixels + _sizePixels); + + // Annotate when we started to send bytes, so we can calculate when we are ready to send again + _startTime = micros(); + + // Copy the pixels to the idle buffer and swap them + memcpy(_asyncPixels, _pixels, _sizePixels); + std::swap(_asyncPixels, _pixels); + } + +private: + T_UARTCONTEXT _context; + + uint8_t* _asyncPixels; // Holds a copy of LED color values taken when UpdateUart began +}; + +class NeoEsp8266UartSpeed800KbpsBase +{ +public: + static const uint32_t ByteSendTimeUs = 10; // us it takes to send a single pixel element at 800khz speed + static const uint32_t UartBaud = 3200000; // 800mhz, 4 serial bytes per NeoByte +}; + +// NeoEsp8266UartSpeedWs2813 contains the timing constants used to get NeoPixelBus running with the Ws2813 +class NeoEsp8266UartSpeedWs2812x : public NeoEsp8266UartSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 300; // us between data send bursts to reset for next update +}; + +class NeoEsp8266UartSpeedSk6812 : public NeoEsp8266UartSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 80; // us between data send bursts to reset for next update +}; + +// NeoEsp8266UartSpeed800Kbps contains the timing constant used to get NeoPixelBus running at 800Khz +class NeoEsp8266UartSpeed800Kbps : public NeoEsp8266UartSpeed800KbpsBase +{ +public: + static const uint32_t ResetTimeUs = 50; // us between data send bursts to reset for next update +}; + +// NeoEsp8266UartSpeed400Kbps contains the timing constant used to get NeoPixelBus running at 400Khz +class NeoEsp8266UartSpeed400Kbps +{ +public: + static const uint32_t ByteSendTimeUs = 20; // us it takes to send a single pixel element at 400khz speed + static const uint32_t UartBaud = 1600000; // 400mhz, 4 serial bytes per NeoByte + static const uint32_t ResetTimeUs = 50; // us between data send bursts to reset for next update +}; + +// NeoEsp8266UartMethodBase is a light shell arround NeoEsp8266Uart or NeoEsp8266AsyncUart that +// implements the methods needed to operate as a NeoPixelBus method. +template +class NeoEsp8266UartMethodBase: public T_BASE +{ +public: + NeoEsp8266UartMethodBase(uint16_t pixelCount, size_t elementSize) + : T_BASE(pixelCount, elementSize) + { + } + NeoEsp8266UartMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize) + : T_BASE(pixelCount, elementSize) + { + } + + bool IsReadyToUpdate() const + { + uint32_t delta = micros() - this->_startTime; + return delta >= getPixelTime() + T_SPEED::ResetTimeUs; + } + + void Initialize() + { + this->InitializeUart(T_SPEED::UartBaud); + + // Inverting logic levels can generate a phantom bit in the led strip bus + // We need to delay 50+ microseconds the output stream to force a data + // latch and discard this bit. Otherwise, that bit would be prepended to + // the first frame corrupting it. + this->_startTime = micros() - getPixelTime(); + } + + void Update() + { + // Data latch = 50+ microsecond pause in the output stream. Rather than + // put a delay at the end of the function, the ending time is noted and + // the function will simply hold off (if needed) on issuing the + // subsequent round of data until the latch time has elapsed. This + // allows the mainline code to start generating the next frame of data + // rather than stalling for the latch. + while (!this->IsReadyToUpdate()) + { + yield(); + } + this->UpdateUart(); + } + + uint8_t* getPixels() const + { + return this->_pixels; + }; + + size_t getPixelsSize() const + { + return this->_sizePixels; + }; + +private: + uint32_t getPixelTime() const + { + return (T_SPEED::ByteSendTimeUs * this->_sizePixels); + }; +}; + +// uart 0 +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart0Ws2812xMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart0Sk6812Method; +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart0800KbpsMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart0400KbpsMethod; + +typedef NeoEsp8266Uart0Ws2812xMethod NeoEsp8266Uart0Ws2813Method; +typedef NeoEsp8266Uart0800KbpsMethod NeoEsp8266Uart0Ws2812Method; +typedef NeoEsp8266Uart0Sk6812Method NeoEsp8266Uart0Lc8812Method; + +// uart 1 +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart1Ws2812xMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart1Sk6812Method; +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart1800KbpsMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266Uart1400KbpsMethod; + +typedef NeoEsp8266Uart1Ws2812xMethod NeoEsp8266Uart1Ws2813Method; +typedef NeoEsp8266Uart1800KbpsMethod NeoEsp8266Uart1Ws2812Method; +typedef NeoEsp8266Uart1Sk6812Method NeoEsp8266Uart1Lc8812Method; + +// uart 0 async +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart0Ws2812xMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart0Sk6812Method; +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart0800KbpsMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart0400KbpsMethod; + +typedef NeoEsp8266AsyncUart0Ws2812xMethod NeoEsp8266AsyncUart0Ws2813Method; +typedef NeoEsp8266AsyncUart0800KbpsMethod NeoEsp8266AsyncUart0Ws2812Method; +typedef NeoEsp8266AsyncUart0Sk6812Method NeoEsp8266AsyncUart0Lc8812Method; + +// uart 1 async +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart1Ws2812xMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart1Sk6812Method; +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart1800KbpsMethod; +typedef NeoEsp8266UartMethodBase> NeoEsp8266AsyncUart1400KbpsMethod; + +typedef NeoEsp8266AsyncUart1Ws2812xMethod NeoEsp8266AsyncUart1Ws2813Method; +typedef NeoEsp8266AsyncUart1800KbpsMethod NeoEsp8266AsyncUart1Ws2812Method; +typedef NeoEsp8266AsyncUart1Sk6812Method NeoEsp8266AsyncUart1Lc8812Method; + +#endif + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoEspBitBangMethod.h b/brain/sw/components/led-renderer/neopixel/internal/NeoEspBitBangMethod.h new file mode 100644 index 0000000000..df8ab8009e --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoEspBitBangMethod.h @@ -0,0 +1,193 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Esp8266 and Esp32 + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#pragma once + +#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) + +// ESP32 doesn't define ICACHE_RAM_ATTR +#ifndef ICACHE_RAM_ATTR +#define ICACHE_RAM_ATTR IRAM_ATTR +#endif + +// for esp8266, due to linker overriding the ICACHE_RAM_ATTR for cpp files, these methods are +// moved into a C file so the attribute will be applied correctly +// >> this may have been fixed and is no longer a requirement << +extern "C" void ICACHE_RAM_ATTR bitbang_send_pixels_800(uint8_t* pixels, uint8_t* end, uint8_t pin); +extern "C" void ICACHE_RAM_ATTR bitbang_send_pixels_400(uint8_t* pixels, uint8_t* end, uint8_t pin); + +class NeoEspBitBangSpeedWs2812x +{ +public: + static void send_pixels(uint8_t* pixels, uint8_t* end, uint8_t pin) + { + bitbang_send_pixels_800(pixels, end, pin); + } + static const uint32_t ResetTimeUs = 300; +}; + +class NeoEspBitBangSpeedSk6812 +{ +public: + static void send_pixels(uint8_t* pixels, uint8_t* end, uint8_t pin) + { + bitbang_send_pixels_800(pixels, end, pin); + } + static const uint32_t ResetTimeUs = 80; +}; + +class NeoEspBitBangSpeed800Kbps +{ +public: + static void send_pixels(uint8_t* pixels, uint8_t* end, uint8_t pin) + { + bitbang_send_pixels_800(pixels, end, pin); + } + static const uint32_t ResetTimeUs = 50; +}; + +class NeoEspBitBangSpeed400Kbps +{ +public: + static void send_pixels(uint8_t* pixels, uint8_t* end, uint8_t pin) + { + bitbang_send_pixels_400(pixels, end, pin); + } + static const uint32_t ResetTimeUs = 50; +}; + +template class NeoEspBitBangMethodBase +{ +public: + NeoEspBitBangMethodBase(uint8_t pin, uint16_t pixelCount, size_t elementSize) : + _pin(pin) + { + pinMode(pin, OUTPUT); + + _sizePixels = pixelCount * elementSize; + _pixels = (uint8_t*)malloc(_sizePixels); + memset(_pixels, 0, _sizePixels); + } + + ~NeoEspBitBangMethodBase() + { + pinMode(_pin, INPUT); + + free(_pixels); + } + + bool IsReadyToUpdate() const + { + uint32_t delta = micros() - _endTime; + + return (delta >= T_SPEED::ResetTimeUs); + } + + void Initialize() + { + digitalWrite(_pin, LOW); + + _endTime = micros(); + } + + void Update() + { + // Data latch = 50+ microsecond pause in the output stream. Rather than + // put a delay at the end of the function, the ending time is noted and + // the function will simply hold off (if needed) on issuing the + // subsequent round of data until the latch time has elapsed. This + // allows the mainline code to start generating the next frame of data + // rather than stalling for the latch. + while (!IsReadyToUpdate()) + { + yield(); // allows for system yield if needed + } + + // Need 100% focus on instruction timing +#if defined(ARDUINO_ARCH_ESP32) + delay(1); // required + portMUX_TYPE updateMux = portMUX_INITIALIZER_UNLOCKED; + + portENTER_CRITICAL(&updateMux); +#else + noInterrupts(); +#endif + + T_SPEED::send_pixels(_pixels, _pixels + _sizePixels, _pin); + +#if defined(ARDUINO_ARCH_ESP32) + portEXIT_CRITICAL(&updateMux); +#else + interrupts(); +#endif + + // save EOD time for latch on next call + _endTime = micros(); + } + + uint8_t* getPixels() const + { + return _pixels; + }; + + size_t getPixelsSize() const + { + return _sizePixels; + }; + +private: + uint32_t _endTime; // Latch timing reference + size_t _sizePixels; // Size of '_pixels' buffer below + uint8_t* _pixels; // Holds LED color values + uint8_t _pin; // output pin number +}; + + +#if defined(ARDUINO_ARCH_ESP32) + +typedef NeoEspBitBangMethodBase NeoEsp32BitBangWs2812xMethod; +typedef NeoEspBitBangMethodBase NeoEsp32BitBangSk6812Method; +typedef NeoEspBitBangMethodBase NeoEsp32BitBang800KbpsMethod; +typedef NeoEspBitBangMethodBase NeoEsp32BitBang400KbpsMethod; + +typedef NeoEsp32BitBangWs2812xMethod NeoEsp32BitBangWs2813Method; +typedef NeoEsp32BitBang800KbpsMethod NeoEsp32BitBangWs2812Method; +typedef NeoEsp32BitBangSk6812Method NeoEsp32BitBangLc8812Method; + +#else + +typedef NeoEspBitBangMethodBase NeoEsp8266BitBangWs2812xMethod; +typedef NeoEspBitBangMethodBase NeoEsp8266BitBangSk6812Method; +typedef NeoEspBitBangMethodBase NeoEsp8266BitBang800KbpsMethod; +typedef NeoEspBitBangMethodBase NeoEsp8266BitBang400KbpsMethod; + +typedef NeoEsp8266BitBangWs2812xMethod NeoEsp32BitBangWs2813Method; +typedef NeoEsp8266BitBang800KbpsMethod NeoEsp32BitBangWs2812Method; +typedef NeoEsp8266BitBangSk6812Method NeoEsp32BitBangLc8812Method; +#endif + +// ESP bitbang doesn't have defaults and should avoided except for testing +#endif \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoGamma.cpp b/brain/sw/components/led-renderer/neopixel/internal/NeoGamma.cpp new file mode 100644 index 0000000000..f33cbfbd95 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoGamma.cpp @@ -0,0 +1,50 @@ +/*------------------------------------------------------------------------- +NeoPixelGamma class is used to correct RGB colors for human eye gamma levels + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include +#include "RgbColor.h" +#include "RgbwColor.h" +#include "NeoEase.h" +#include "NeoGamma.h" + +const uint8_t NeoGammaTableMethod::_table[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, + 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 11, 11, 11, + 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, + 19, 20, 20, 21, 22, 22, 23, 23, 24, 25, 25, 26, 26, 27, 28, 28, + 29, 30, 30, 31, 32, 33, 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, + 41, 42, 43, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 71, + 72, 73, 74, 75, 76, 77, 78, 80, 81, 82, 83, 84, 86, 87, 88, 89, + 91, 92, 93, 94, 96, 97, 98, 100, 101, 102, 104, 105, 106, 108, 109, 110, + 112, 113, 115, 116, 118, 119, 121, 122, 123, 125, 126, 128, 130, 131, 133, 134, + 136, 137, 139, 140, 142, 144, 145, 147, 149, 150, 152, 154, 155, 157, 159, 160, + 162, 164, 166, 167, 169, 171, 173, 175, 176, 178, 180, 182, 184, 186, 187, 189, + 191, 193, 195, 197, 199, 201, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, + 223, 225, 227, 229, 231, 233, 235, 238, 240, 242, 244, 246, 248, 251, 253, 255 +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoGamma.h b/brain/sw/components/led-renderer/neopixel/internal/NeoGamma.h new file mode 100644 index 0000000000..9b94e24191 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoGamma.h @@ -0,0 +1,73 @@ +/*------------------------------------------------------------------------- +NeoPixelGamma class is used to correct RGB colors for human eye gamma levels + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +// NeoGammaEquationMethod uses no memory but is slower than NeoGammaTableMethod +class NeoGammaEquationMethod +{ +public: + static uint8_t Correct(uint8_t value) + { + return static_cast(255.0f * NeoEase::Gamma(value / 255.0f) + 0.5f); + } +}; + +// NeoGammaTableMethod uses 256 bytes of memory, but is significantly faster +class NeoGammaTableMethod +{ +public: + static uint8_t Correct(uint8_t value) + { + return _table[value]; + } + +private: + static const uint8_t _table[256]; +}; + + +// use one of the method classes above as a converter for this template class +template class NeoGamma +{ +public: + RgbColor Correct(const RgbColor& original) + { + return RgbColor(T_METHOD::Correct(original.R), + T_METHOD::Correct(original.G), + T_METHOD::Correct(original.B)); + } + + RgbwColor Correct(const RgbwColor& original) + { + return RgbwColor(T_METHOD::Correct(original.R), + T_METHOD::Correct(original.G), + T_METHOD::Correct(original.B), + T_METHOD::Correct(original.W) ); + } +}; + + + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoHueBlend.h b/brain/sw/components/led-renderer/neopixel/internal/NeoHueBlend.h new file mode 100644 index 0000000000..d77a58fb1d --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoHueBlend.h @@ -0,0 +1,118 @@ +/*------------------------------------------------------------------------- +NeoHueBlend provides method objects that can be directly consumed by +blend template functions in HslColor and HsbColor + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +class NeoHueBlendBase +{ +protected: + static float FixWrap(float value) + { + if (value < 0.0f) + { + value += 1.0f; + } + else if (value > 1.0f) + { + value -= 1.0f; + } + return value; + } +}; + +class NeoHueBlendShortestDistance : NeoHueBlendBase +{ +public: + static float HueBlend(float left, float right, float progress) + { + float delta = right - left; + float base = left; + if (delta > 0.5f) + { + base = right; + delta = 1.0f - delta; + progress = 1.0f - progress; + } + else if (delta < -0.5f) + { + delta = 1.0f + delta; + } + return FixWrap(base + (delta) * progress); + }; +}; + +class NeoHueBlendLongestDistance : NeoHueBlendBase +{ +public: + static float HueBlend(float left, float right, float progress) + { + float delta = right - left; + float base = left; + if (delta < 0.5f && delta >= 0.0f) + { + base = right; + delta = 1.0f - delta; + progress = 1.0f - progress; + } + else if (delta > -0.5f && delta < 0.0f) + { + delta = 1.0f + delta; + } + return FixWrap(base + delta * progress); + }; +}; + +class NeoHueBlendClockwiseDirection : NeoHueBlendBase +{ +public: + static float HueBlend(float left, float right, float progress) + { + float delta = right - left; + float base = left; + if (delta < 0.0f) + { + delta = 1.0f + delta; + } + + return FixWrap(base + delta * progress); + }; +}; + +class NeoHueBlendCounterClockwiseDirection : NeoHueBlendBase +{ +public: + static float HueBlend(float left, float right, float progress) + { + float delta = right - left; + float base = left; + if (delta > 0.0f) + { + delta = delta - 1.0f; + } + + return FixWrap(base + delta * progress); + }; +}; diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoMosaic.h b/brain/sw/components/led-renderer/neopixel/internal/NeoMosaic.h new file mode 100644 index 0000000000..551bd53773 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoMosaic.h @@ -0,0 +1,191 @@ +#pragma once + +/*------------------------------------------------------------------------- +Mosiac provides a mapping feature of a 2d cordinate to linear 1d cordinate +It is used to map tiles of matricies of NeoPixels to a index on the NeoPixelBus +where the the matricies use a set of prefered topology and the tiles of +those matricies use the RowMajorAlternating layout + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + + +//----------------------------------------------------------------------------- +// class NeoMosaic +// Complex Tile layout class that reduces distance of the interconnects between +// the tiles by using different rotations of the layout at specific locations +// +// T_LAYOUT = the layout used for matrix panel (rotation is ignored) +// +// NOTE: The tiles in the mosaic are always laid out using RowMajorAlternating +// +//----------------------------------------------------------------------------- + +template class NeoMosaic +{ +public: + NeoMosaic(uint16_t topoWidth, uint16_t topoHeight, + uint16_t mosaicWidth, uint16_t mosaicHeight) : + _topoWidth(topoWidth), + _topoHeight(topoHeight), + _mosaicWidth(mosaicWidth), + _mosaicHeight(mosaicHeight) + { + } + + uint16_t Map(int16_t x, int16_t y) const + { + uint16_t totalWidth = getWidth(); + uint16_t totalHeight = getHeight(); + + if (x >= totalWidth) + { + x = totalWidth - 1; + } + else if (x < 0) + { + x = 0; + } + + if (y >= totalHeight) + { + y = totalHeight - 1; + } + else if (y < 0) + { + y = 0; + } + + uint16_t localIndex; + uint16_t tileOffset; + + calculate(x, y, &localIndex, &tileOffset); + + return localIndex + tileOffset; + } + + uint16_t MapProbe(int16_t x, int16_t y) const + { + uint16_t totalWidth = getWidth(); + uint16_t totalHeight = getHeight(); + + if (x < 0 || x >= totalWidth || y < 0 || y >= totalHeight) + { + return totalWidth * totalHeight; // count, out of bounds + } + + uint16_t localIndex; + uint16_t tileOffset; + + calculate(x, y, &localIndex, &tileOffset); + + return localIndex + tileOffset; + } + + NeoTopologyHint TopologyHint(int16_t x, int16_t y) const + { + uint16_t totalWidth = getWidth(); + uint16_t totalHeight = getHeight(); + + if (x < 0 || x >= totalWidth || y < 0 || y >= totalHeight) + { + return NeoTopologyHint_OutOfBounds; + } + + uint16_t localIndex; + uint16_t tileOffset; + NeoTopologyHint result; + + calculate(x, y, &localIndex, &tileOffset); + + if (localIndex == 0) + { + result = NeoTopologyHint_FirstOnPanel; + } + else if (localIndex == (_topoWidth * _topoHeight - 1)) + { + result = NeoTopologyHint_LastOnPanel; + } + else + { + result = NeoTopologyHint_InPanel; + } + + return result; + } + + uint16_t getWidth() const + { + return _topoWidth * _mosaicWidth; + } + + uint16_t getHeight() const + { + return _topoHeight * _mosaicHeight; + } + +private: + const uint16_t _topoWidth; + const uint16_t _topoHeight; + const uint16_t _mosaicWidth; + const uint16_t _mosaicHeight; + + void calculate(uint16_t x, uint16_t y, uint16_t* pLocalIndex, uint16_t* pTileOffset) const + { + uint16_t tileX = x / _topoWidth; + uint16_t topoX = x % _topoWidth; + + uint16_t tileY = y / _topoHeight; + uint16_t topoY = y % _topoHeight; + + *pTileOffset = RowMajorAlternatingLayout::Map(_mosaicWidth, + _mosaicHeight, + tileX, + tileY) * _topoWidth * _topoHeight; + + if (tileX & 0x0001) + { + // odd columns + if (tileY & 0x0001) + { + *pLocalIndex = T_LAYOUT::OddRowOddColumnLayout::Map(_topoWidth, _topoHeight, topoX, topoY); + } + else + { + *pLocalIndex = T_LAYOUT::EvenRowOddColumnLayout::Map(_topoWidth, _topoHeight, topoX, topoY); + } + } + else + { + // even columns + if (tileY & 0x0001) + { + *pLocalIndex = T_LAYOUT::OddRowEvenColumnLayout::Map(_topoWidth, _topoHeight, topoX, topoY); + } + else + { + *pLocalIndex = T_LAYOUT::EvenRowEvenColumnLayout::Map(_topoWidth, _topoHeight, topoX, topoY); + } + } + } +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoPixelAnimator.cpp b/brain/sw/components/led-renderer/neopixel/internal/NeoPixelAnimator.cpp new file mode 100644 index 0000000000..d535316f6f --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoPixelAnimator.cpp @@ -0,0 +1,196 @@ +/*------------------------------------------------------------------------- +NeoPixelAnimator provides animation timing support. + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "NeoPixelAnimator.h" + +NeoPixelAnimator::NeoPixelAnimator(uint16_t countAnimations, uint16_t timeScale) : + _countAnimations(countAnimations), + _animationLastTick(0), + _activeAnimations(0), + _isRunning(true) +{ + setTimeScale(timeScale); + _animations = new AnimationContext[_countAnimations]; +} + +NeoPixelAnimator::~NeoPixelAnimator() +{ + delete[] _animations; +} + +bool NeoPixelAnimator::NextAvailableAnimation(uint16_t* indexAvailable, uint16_t indexStart) +{ + if (indexStart >= _countAnimations) + { + // last one + indexStart = _countAnimations - 1; + } + + uint16_t next = indexStart; + + do + { + if (!IsAnimationActive(next)) + { + if (indexAvailable) + { + *indexAvailable = next; + } + return true; + } + next = (next + 1) % _countAnimations; + } while (next != indexStart); + return false; +} + +void NeoPixelAnimator::StartAnimation(uint16_t indexAnimation, + uint16_t duration, + AnimUpdateCallback animUpdate) +{ + if (indexAnimation >= _countAnimations || animUpdate == NULL) + { + return; + } + + if (_activeAnimations == 0) + { + _animationLastTick = millis(); + } + + StopAnimation(indexAnimation); + + // all animations must have at least non zero duration, otherwise + // they are considered stopped + if (duration == 0) + { + duration = 1; + } + + _animations[indexAnimation].StartAnimation(duration, animUpdate); + + _activeAnimations++; +} + +void NeoPixelAnimator::StopAnimation(uint16_t indexAnimation) +{ + if (indexAnimation >= _countAnimations) + { + return; + } + + if (IsAnimationActive(indexAnimation)) + { + _activeAnimations--; + _animations[indexAnimation].StopAnimation(); + } +} + +void NeoPixelAnimator::StopAll() +{ + for (uint16_t indexAnimation = 0; indexAnimation < _countAnimations; ++indexAnimation) + { + _animations[indexAnimation].StopAnimation(); + } + _activeAnimations = 0; +} + + +void NeoPixelAnimator::UpdateAnimations() +{ + if (_isRunning) + { + uint32_t currentTick = millis(); + uint32_t delta = currentTick - _animationLastTick; + + if (delta >= _timeScale) + { + AnimationContext* pAnim; + + delta /= _timeScale; // scale delta into animation time + + for (uint16_t iAnim = 0; iAnim < _countAnimations; iAnim++) + { + pAnim = &_animations[iAnim]; + AnimUpdateCallback fnUpdate = pAnim->_fnCallback; + AnimationParam param; + + param.index = iAnim; + + if (pAnim->_remaining > delta) + { + param.state = (pAnim->_remaining == pAnim->_duration) ? AnimationState_Started : AnimationState_Progress; + param.progress = pAnim->CurrentProgress(); + + fnUpdate(param); + + pAnim->_remaining -= delta; + } + else if (pAnim->_remaining > 0) + { + param.state = AnimationState_Completed; + param.progress = 1.0f; + + _activeAnimations--; + pAnim->StopAnimation(); + + fnUpdate(param); + } + } + + _animationLastTick = currentTick; + } + } +} + +void NeoPixelAnimator::ChangeAnimationDuration(uint16_t indexAnimation, uint16_t newDuration) +{ + if (indexAnimation >= _countAnimations) + { + return; + } + + AnimationContext* pAnim = &_animations[indexAnimation]; + + // calc the current animation progress + float progress = pAnim->CurrentProgress(); + + // keep progress in range just in case + if (progress < 0.0f) + { + progress = 0.0f; + } + else if (progress > 1.0f) + { + progress = 1.0f; + } + + // change the duration + pAnim->_duration = newDuration; + + // _remaining time must also be reset after a duration change; + // use the progress to recalculate it + pAnim->_remaining = uint16_t(pAnim->_duration * (1.0f - progress)); +} \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoPixelAvr.c b/brain/sw/components/led-renderer/neopixel/internal/NeoPixelAvr.c new file mode 100644 index 0000000000..761fa7eb10 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoPixelAvr.c @@ -0,0 +1,648 @@ +/*------------------------------------------------------------------------- +Arduino library to control a wide variety of WS2811- and WS2812-based RGB +LED devices such as Adafruit FLORA RGB Smart Pixels and NeoPixel strips. +Currently handles 400 and 800 KHz bitstreams on 8, 12 and 16 MHz ATmega +MCUs, with LEDs wired for various color orders. 8 MHz MCUs provide +output on PORTB and PORTD, while 16 MHz chips can handle most output pins +(possible exception with upper PORT registers on the Arduino Mega). + +Written by Phil Burgess / Paint Your Dragon for Adafruit Industries, +contributions by PJRC, Michael Miller and other members of the open +source community. + +Adafruit invests time and resources providing this open source code, +please support Adafruit and open-source hardware by purchasing products +from Adafruit! + +------------------------------------------------------------------------- +The contents of this file were taken from the Adafruit NeoPixel library +and modified only to fit within individual calling functions. + +NeoPixel is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixel is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +// must also check for arm due to Teensy incorrectly having ARDUINO_ARCH_AVR set +#if defined(ARDUINO_ARCH_AVR) && !defined(__arm__) + +#include + +// Hand-tuned assembly code issues data to the LED drivers at a specific +// rate. There's separate code for different CPU speeds (8, 12, 16 MHz) +// for both the WS2811 (400 KHz) and WS2812 (800 KHz) drivers. The +// datastream timing for the LED drivers allows a little wiggle room each +// way (listed in the datasheets), so the conditions for compiling each +// case are set up for a range of frequencies rather than just the exact +// 8, 12 or 16 MHz values, permitting use with some close-but-not-spot-on +// devices (e.g. 16.5 MHz DigiSpark). The ranges were arrived at based +// on the datasheet figures and have not been extensively tested outside +// the canonical 8/12/16 MHz speeds; there's no guarantee these will work +// close to the extremes (or possibly they could be pushed further). +// Keep in mind only one CPU speed case actually gets compiled; the +// resulting program isn't as massive as it might look from source here. + +#if (F_CPU >= 7400000UL) && (F_CPU <= 9500000UL) // 8Mhz CPU + +#ifdef PORTD // PORTD isn't present on ATtiny85, etc. +void send_pixels_8mhz_800_PortD(uint8_t* pixels, size_t sizePixels, uint8_t pinMask) +{ + volatile size_t i = sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + volatile uint8_t n1; + volatile uint8_t n2 = 0; // First, next bits out + + // Squeezing an 800 KHz stream out of an 8 MHz chip requires code + // specific to each PORT register. At present this is only written + // to work with pins on PORTD or PORTB, the most likely use case -- + // this covers all the pins on the Adafruit Flora and the bulk of + // digital pins on the Arduino Pro 8 MHz (keep in mind, this code + // doesn't even get compiled for 16 MHz boards like the Uno, Mega, + // Leonardo, etc., so don't bother extending this out of hand). + // Additional PORTs could be added if you really need them, just + // duplicate the else and loop and change the PORT. Each add'l + // PORT will require about 150(ish) bytes of program space. + + // 10 instruction clocks per bit: HHxxxxxLLL + // OUT instructions: ^ ^ ^ (T=0,2,7) + + hi = PORTD | pinMask; + lo = PORTD & ~pinMask; + n1 = lo; + + if (b & 0x80) + { + n1 = hi; + } + + // Dirty trick: RJMPs proceeding to the next instruction are used + // to delay two clock cycles in one instruction word (rather than + // using two NOPs). This was necessary in order to squeeze the + // loop down to exactly 64 words -- the maximum possible for a + // relative branch. + + asm volatile( + "headD:" "\n\t" // Clk Pseudocode + // Bit 7: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n2] , %[lo]" "\n\t" // 1 n2 = lo + "out %[port] , %[n1]" "\n\t" // 1 PORT = n1 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 6" "\n\t" // 1-2 if(b & 0x40) + "mov %[n2] , %[hi]" "\n\t" // 0-1 n2 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "rjmp .+0" "\n\t" // 2 nop nop + // Bit 6: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n1] , %[lo]" "\n\t" // 1 n1 = lo + "out %[port] , %[n2]" "\n\t" // 1 PORT = n2 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 5" "\n\t" // 1-2 if(b & 0x20) + "mov %[n1] , %[hi]" "\n\t" // 0-1 n1 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "rjmp .+0" "\n\t" // 2 nop nop + // Bit 5: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n2] , %[lo]" "\n\t" // 1 n2 = lo + "out %[port] , %[n1]" "\n\t" // 1 PORT = n1 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 4" "\n\t" // 1-2 if(b & 0x10) + "mov %[n2] , %[hi]" "\n\t" // 0-1 n2 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "rjmp .+0" "\n\t" // 2 nop nop + // Bit 4: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n1] , %[lo]" "\n\t" // 1 n1 = lo + "out %[port] , %[n2]" "\n\t" // 1 PORT = n2 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 3" "\n\t" // 1-2 if(b & 0x08) + "mov %[n1] , %[hi]" "\n\t" // 0-1 n1 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "rjmp .+0" "\n\t" // 2 nop nop + // Bit 3: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n2] , %[lo]" "\n\t" // 1 n2 = lo + "out %[port] , %[n1]" "\n\t" // 1 PORT = n1 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 2" "\n\t" // 1-2 if(b & 0x04) + "mov %[n2] , %[hi]" "\n\t" // 0-1 n2 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "rjmp .+0" "\n\t" // 2 nop nop + // Bit 2: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n1] , %[lo]" "\n\t" // 1 n1 = lo + "out %[port] , %[n2]" "\n\t" // 1 PORT = n2 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 1" "\n\t" // 1-2 if(b & 0x02) + "mov %[n1] , %[hi]" "\n\t" // 0-1 n1 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "rjmp .+0" "\n\t" // 2 nop nop + // Bit 1: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n2] , %[lo]" "\n\t" // 1 n2 = lo + "out %[port] , %[n1]" "\n\t" // 1 PORT = n1 + "rjmp .+0" "\n\t" // 2 nop nop + "sbrc %[byte] , 0" "\n\t" // 1-2 if(b & 0x01) + "mov %[n2] , %[hi]" "\n\t" // 0-1 n2 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "sbiw %[count], 1" "\n\t" // 2 i-- (don't act on Z flag yet) + // Bit 0: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi + "mov %[n1] , %[lo]" "\n\t" // 1 n1 = lo + "out %[port] , %[n2]" "\n\t" // 1 PORT = n2 + "ld %[byte] , %a[ptr]+" "\n\t" // 2 b = *ptr++ + "sbrc %[byte] , 7" "\n\t" // 1-2 if(b & 0x80) + "mov %[n1] , %[hi]" "\n\t" // 0-1 n1 = hi + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo + "brne headD" "\n" // 2 while(i) (Z flag set above) + : [byte] "+r" (b), + [n1] "+r" (n1), + [n2] "+r" (n2), + [count] "+w" (i) + : [port] "I" (_SFR_IO_ADDR(PORTD)), + [ptr] "e" (ptr), + [hi] "r" (hi), + [lo] "r" (lo) ); +} +#endif + +void send_pixels_8mhz_800_PortB(uint8_t* pixels, size_t sizePixels, uint8_t pinMask) +{ + volatile size_t i = sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + volatile uint8_t n1; + volatile uint8_t n2 = 0; // First, next bits out + + // Same as above, just switched to PORTB and stripped of comments. + hi = PORTB | pinMask; + lo = PORTB & ~pinMask; + n1 = lo; + if (b & 0x80) + { + n1 = hi; + } + + asm volatile( + "headB:" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n2] , %[lo]" "\n\t" + "out %[port] , %[n1]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 6" "\n\t" + "mov %[n2] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "rjmp .+0" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n1] , %[lo]" "\n\t" + "out %[port] , %[n2]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 5" "\n\t" + "mov %[n1] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "rjmp .+0" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n2] , %[lo]" "\n\t" + "out %[port] , %[n1]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 4" "\n\t" + "mov %[n2] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "rjmp .+0" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n1] , %[lo]" "\n\t" + "out %[port] , %[n2]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 3" "\n\t" + "mov %[n1] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "rjmp .+0" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n2] , %[lo]" "\n\t" + "out %[port] , %[n1]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 2" "\n\t" + "mov %[n2] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "rjmp .+0" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n1] , %[lo]" "\n\t" + "out %[port] , %[n2]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 1" "\n\t" + "mov %[n1] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "rjmp .+0" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n2] , %[lo]" "\n\t" + "out %[port] , %[n1]" "\n\t" + "rjmp .+0" "\n\t" + "sbrc %[byte] , 0" "\n\t" + "mov %[n2] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "sbiw %[count], 1" "\n\t" + "out %[port] , %[hi]" "\n\t" + "mov %[n1] , %[lo]" "\n\t" + "out %[port] , %[n2]" "\n\t" + "ld %[byte] , %a[ptr]+" "\n\t" + "sbrc %[byte] , 7" "\n\t" + "mov %[n1] , %[hi]" "\n\t" + "out %[port] , %[lo]" "\n\t" + "brne headB" "\n" + : [byte] "+r" (b), [n1] "+r" (n1), [n2] "+r" (n2), [count] "+w" (i) + : [port] "I" (_SFR_IO_ADDR(PORTB)), [ptr] "e" (ptr), [hi] "r" (hi), + [lo] "r" (lo)); +} + +void send_pixels_8mhz_400(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask) +{ + volatile size_t i = sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + // Timing is more relaxed; unrolling the inner loop for each bit is + // not necessary. Still using the peculiar RJMPs as 2X NOPs, not out + // of need but just to trim the code size down a little. + // This 400-KHz-datastream-on-8-MHz-CPU code is not quite identical + // to the 800-on-16 code later -- the hi/lo timing between WS2811 and + // WS2812 is not simply a 2:1 scale! + + // 20 inst. clocks per bit: HHHHxxxxxxLLLLLLLLLL + // ST instructions: ^ ^ ^ (T=0,4,10) + + volatile uint8_t next, bit; + + hi = *port | pinMask; + lo = *port & ~pinMask; + next = lo; + bit = 8; + + asm volatile( + "head20:" "\n\t" // Clk Pseudocode (T = 0) + "st %a[port], %[hi]" "\n\t" // 2 PORT = hi (T = 2) + "sbrc %[byte] , 7" "\n\t" // 1-2 if(b & 128) + "mov %[next], %[hi]" "\n\t" // 0-1 next = hi (T = 4) + "st %a[port], %[next]" "\n\t" // 2 PORT = next (T = 6) + "mov %[next] , %[lo]" "\n\t" // 1 next = lo (T = 7) + "dec %[bit]" "\n\t" // 1 bit-- (T = 8) + "breq nextbyte20" "\n\t" // 1-2 if(bit == 0) + "rol %[byte]" "\n\t" // 1 b <<= 1 (T = 10) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 12) + "rjmp .+0" "\n\t" // 2 nop nop (T = 14) + "rjmp .+0" "\n\t" // 2 nop nop (T = 16) + "rjmp .+0" "\n\t" // 2 nop nop (T = 18) + "rjmp head20" "\n\t" // 2 -> head20 (next bit out) + "nextbyte20:" "\n\t" // (T = 10) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 12) + "nop" "\n\t" // 1 nop (T = 13) + "ldi %[bit] , 8" "\n\t" // 1 bit = 8 (T = 14) + "ld %[byte] , %a[ptr]+" "\n\t" // 2 b = *ptr++ (T = 16) + "sbiw %[count], 1" "\n\t" // 2 i-- (T = 18) + "brne head20" "\n" // 2 if(i != 0) -> (next byte) + : [port] "+e" (port), + [byte] "+r" (b), + [bit] "+r" (bit), + [next] "+r" (next), + [count] "+w" (i) + : [hi] "r" (hi), + [lo] "r" (lo), + [ptr] "e" (ptr)); +} + +#elif (F_CPU >= 11100000UL) && (F_CPU <= 14300000UL) // 12Mhz CPU + +#ifdef PORTD // PORTD isn't present on ATtiny85, etc. +void send_pixels_12mhz_800_PortD(uint8_t* pixels, size_t sizePixels, uint8_t pinMask) +{ + volatile size_t i = sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + // In the 12 MHz case, an optimized 800 KHz datastream (no dead time + // between bytes) requires a PORT-specific loop similar to the 8 MHz + // code (but a little more relaxed in this case). + + // 15 instruction clocks per bit: HHHHxxxxxxLLLLL + // OUT instructions: ^ ^ ^ (T=0,4,10) + + volatile uint8_t next; + + hi = PORTD | pinMask; + lo = PORTD & ~pinMask; + next = lo; + if (b & 0x80) next = hi; + + // Don't "optimize" the OUT calls into the bitTime subroutine; + // we're exploiting the RCALL and RET as 3- and 4-cycle NOPs! + asm volatile( + "headD:" "\n\t" // (T = 0) + "out %[port], %[hi]" "\n\t" // (T = 1) + "rcall bitTimeD" "\n\t" // Bit 7 (T = 15) + "out %[port], %[hi]" "\n\t" + "rcall bitTimeD" "\n\t" // Bit 6 + "out %[port], %[hi]" "\n\t" + "rcall bitTimeD" "\n\t" // Bit 5 + "out %[port], %[hi]" "\n\t" + "rcall bitTimeD" "\n\t" // Bit 4 + "out %[port], %[hi]" "\n\t" + "rcall bitTimeD" "\n\t" // Bit 3 + "out %[port], %[hi]" "\n\t" + "rcall bitTimeD" "\n\t" // Bit 2 + "out %[port], %[hi]" "\n\t" + "rcall bitTimeD" "\n\t" // Bit 1 + // Bit 0: + "out %[port] , %[hi]" "\n\t" // 1 PORT = hi (T = 1) + "rjmp .+0" "\n\t" // 2 nop nop (T = 3) + "ld %[byte] , %a[ptr]+" "\n\t" // 2 b = *ptr++ (T = 5) + "out %[port] , %[next]" "\n\t" // 1 PORT = next (T = 6) + "mov %[next] , %[lo]" "\n\t" // 1 next = lo (T = 7) + "sbrc %[byte] , 7" "\n\t" // 1-2 if(b & 0x80) (T = 8) + "mov %[next] , %[hi]" "\n\t" // 0-1 next = hi (T = 9) + "nop" "\n\t" // 1 (T = 10) + "out %[port] , %[lo]" "\n\t" // 1 PORT = lo (T = 11) + "sbiw %[count], 1" "\n\t" // 2 i-- (T = 13) + "brne headD" "\n\t" // 2 if(i != 0) -> (next byte) + "rjmp doneD" "\n\t" + "bitTimeD:" "\n\t" // nop nop nop (T = 4) + "out %[port], %[next]" "\n\t" // 1 PORT = next (T = 5) + "mov %[next], %[lo]" "\n\t" // 1 next = lo (T = 6) + "rol %[byte]" "\n\t" // 1 b <<= 1 (T = 7) + "sbrc %[byte], 7" "\n\t" // 1-2 if(b & 0x80) (T = 8) + "mov %[next], %[hi]" "\n\t" // 0-1 next = hi (T = 9) + "nop" "\n\t" // 1 (T = 10) + "out %[port], %[lo]" "\n\t" // 1 PORT = lo (T = 11) + "ret" "\n\t" // 4 nop nop nop nop (T = 15) + "doneD:" "\n" + : [byte] "+r" (b), + [next] "+r" (next), + [count] "+w" (i) + : [port] "I" (_SFR_IO_ADDR(PORTD)), + [ptr] "e" (ptr), + [hi] "r" (hi), + [lo] "r" (lo)); +} +#endif + +void send_pixels_12mhz_800_PortB(uint8_t* pixels, size_t sizePixels, uint8_t pinMask) +{ + volatile uint16_t i = (uint16_t)sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + volatile uint8_t next; + + hi = PORTB | pinMask; + lo = PORTB & ~pinMask; + next = lo; + if (b & 0x80) + { + next = hi; + } + + // Same as above, just set for PORTB & stripped of comments + asm volatile( + "headB:" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port], %[hi]" "\n\t" + "rcall bitTimeB" "\n\t" + "out %[port] , %[hi]" "\n\t" + "rjmp .+0" "\n\t" + "ld %[byte] , %a[ptr]+" "\n\t" + "out %[port] , %[next]" "\n\t" + "mov %[next] , %[lo]" "\n\t" + "sbrc %[byte] , 7" "\n\t" + "mov %[next] , %[hi]" "\n\t" + "nop" "\n\t" + "out %[port] , %[lo]" "\n\t" + "sbiw %[count], 1" "\n\t" + "brne headB" "\n\t" + "rjmp doneB" "\n\t" + "bitTimeB:" "\n\t" + "out %[port], %[next]" "\n\t" + "mov %[next], %[lo]" "\n\t" + "rol %[byte]" "\n\t" + "sbrc %[byte], 7" "\n\t" + "mov %[next], %[hi]" "\n\t" + "nop" "\n\t" + "out %[port], %[lo]" "\n\t" + "ret" "\n\t" + "doneB:" "\n" + : [byte] "+r" (b), [next] "+r" (next), [count] "+w" (i) + : [port] "I" (_SFR_IO_ADDR(PORTB)), [ptr] "e" (ptr), [hi] "r" (hi), + [lo] "r" (lo)); +} + +void send_pixels_12mhz_400(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask) +{ + volatile uint16_t i = (uint16_t)sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + // 30 instruction clocks per bit: HHHHHHxxxxxxxxxLLLLLLLLLLLLLLL + // ST instructions: ^ ^ ^ (T=0,6,15) + + volatile uint8_t next, bit; + + hi = *port | pinMask; + lo = *port & ~pinMask; + next = lo; + bit = 8; + + asm volatile( + "head30:" "\n\t" // Clk Pseudocode (T = 0) + "st %a[port], %[hi]" "\n\t" // 2 PORT = hi (T = 2) + "sbrc %[byte] , 7" "\n\t" // 1-2 if(b & 128) + "mov %[next], %[hi]" "\n\t" // 0-1 next = hi (T = 4) + "rjmp .+0" "\n\t" // 2 nop nop (T = 6) + "st %a[port], %[next]" "\n\t" // 2 PORT = next (T = 8) + "rjmp .+0" "\n\t" // 2 nop nop (T = 10) + "rjmp .+0" "\n\t" // 2 nop nop (T = 12) + "rjmp .+0" "\n\t" // 2 nop nop (T = 14) + "nop" "\n\t" // 1 nop (T = 15) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 17) + "rjmp .+0" "\n\t" // 2 nop nop (T = 19) + "dec %[bit]" "\n\t" // 1 bit-- (T = 20) + "breq nextbyte30" "\n\t" // 1-2 if(bit == 0) + "rol %[byte]" "\n\t" // 1 b <<= 1 (T = 22) + "rjmp .+0" "\n\t" // 2 nop nop (T = 24) + "rjmp .+0" "\n\t" // 2 nop nop (T = 26) + "rjmp .+0" "\n\t" // 2 nop nop (T = 28) + "rjmp head30" "\n\t" // 2 -> head30 (next bit out) + "nextbyte30:" "\n\t" // (T = 22) + "nop" "\n\t" // 1 nop (T = 23) + "ldi %[bit] , 8" "\n\t" // 1 bit = 8 (T = 24) + "ld %[byte] , %a[ptr]+" "\n\t" // 2 b = *ptr++ (T = 26) + "sbiw %[count], 1" "\n\t" // 2 i-- (T = 28) + "brne head30" "\n" // 1-2 if(i != 0) -> (next byte) + : [port] "+e" (port), + [byte] "+r" (b), + [bit] "+r" (bit), + [next] "+r" (next), + [count] "+w" (i) + : [hi] "r" (hi), + [lo] "r" (lo), + [ptr] "e" (ptr)); +} + +#elif (F_CPU >= 15400000UL) && (F_CPU <= 19000000L) // 16Mhz CPU + +void send_pixels_16mhz_800(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask) +{ + volatile uint16_t i = (uint16_t)sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + // WS2811 and WS2812 have different hi/lo duty cycles; this is + // similar but NOT an exact copy of the prior 400-on-8 code. + + // 20 inst. clocks per bit: HHHHHxxxxxxxxLLLLLLL + // ST instructions: ^ ^ ^ (T=0,5,13) + + volatile uint8_t next; + volatile uint8_t bit; + + hi = *port | pinMask; + lo = *port & ~pinMask; + next = lo; + bit = 8; + + asm volatile( + "head20:" "\n\t" // Clk Pseudocode (T = 0) + "st %a[port], %[hi]" "\n\t" // 2 PORT = hi (T = 2) + "sbrc %[byte], 7" "\n\t" // 1-2 if(b & 128) + "mov %[next], %[hi]" "\n\t" // 0-1 next = hi (T = 4) + "dec %[bit]" "\n\t" // 1 bit-- (T = 5) + "st %a[port], %[next]" "\n\t" // 2 PORT = next (T = 7) + "mov %[next] , %[lo]" "\n\t" // 1 next = lo (T = 8) + "breq nextbyte20" "\n\t" // 1-2 if(bit == 0) (from dec above) + "rol %[byte]" "\n\t" // 1 b <<= 1 (T = 10) + "rjmp .+0" "\n\t" // 2 nop nop (T = 12) + "nop" "\n\t" // 1 nop (T = 13) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 15) + "nop" "\n\t" // 1 nop (T = 16) + "rjmp .+0" "\n\t" // 2 nop nop (T = 18) + "rjmp head20" "\n\t" // 2 -> head20 (next bit out) + "nextbyte20:" "\n\t" // (T = 10) + "ldi %[bit] , 8" "\n\t" // 1 bit = 8 (T = 11) + "ld %[byte] , %a[ptr]+" "\n\t" // 2 b = *ptr++ (T = 13) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 15) + "nop" "\n\t" // 1 nop (T = 16) + "sbiw %[count], 1" "\n\t" // 2 i-- (T = 18) + "brne head20" "\n" // 2 if(i != 0) -> (next byte) + : [port] "+e" (port), + [byte] "+r" (b), + [bit] "+r" (bit), + [next] "+r" (next), + [count] "+w" (i) + : [ptr] "e" (ptr), + [hi] "r" (hi), + [lo] "r" (lo)); +} + +void send_pixels_16mhz_400(uint8_t* pixels, size_t sizePixels, volatile uint8_t* port, uint8_t pinMask) +{ + volatile size_t i = sizePixels; // Loop counter + volatile uint8_t* ptr = pixels; // Pointer to next byte + volatile uint8_t b = *ptr++; // Current byte value + volatile uint8_t hi; // PORT w/output bit set high + volatile uint8_t lo; // PORT w/output bit set low + + // The 400 KHz clock on 16 MHz MCU is the most 'relaxed' version. + + // 40 inst. clocks per bit: HHHHHHHHxxxxxxxxxxxxLLLLLLLLLLLLLLLLLLLL + // ST instructions: ^ ^ ^ (T=0,8,20) + + volatile uint8_t next, bit; + + hi = *port | pinMask; + lo = *port & ~pinMask; + next = lo; + bit = 8; + + asm volatile( + "head40:" "\n\t" // Clk Pseudocode (T = 0) + "st %a[port], %[hi]" "\n\t" // 2 PORT = hi (T = 2) + "sbrc %[byte] , 7" "\n\t" // 1-2 if(b & 128) + "mov %[next] , %[hi]" "\n\t" // 0-1 next = hi (T = 4) + "rjmp .+0" "\n\t" // 2 nop nop (T = 6) + "rjmp .+0" "\n\t" // 2 nop nop (T = 8) + "st %a[port], %[next]" "\n\t" // 2 PORT = next (T = 10) + "rjmp .+0" "\n\t" // 2 nop nop (T = 12) + "rjmp .+0" "\n\t" // 2 nop nop (T = 14) + "rjmp .+0" "\n\t" // 2 nop nop (T = 16) + "rjmp .+0" "\n\t" // 2 nop nop (T = 18) + "rjmp .+0" "\n\t" // 2 nop nop (T = 20) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 22) + "nop" "\n\t" // 1 nop (T = 23) + "mov %[next] , %[lo]" "\n\t" // 1 next = lo (T = 24) + "dec %[bit]" "\n\t" // 1 bit-- (T = 25) + "breq nextbyte40" "\n\t" // 1-2 if(bit == 0) + "rol %[byte]" "\n\t" // 1 b <<= 1 (T = 27) + "nop" "\n\t" // 1 nop (T = 28) + "rjmp .+0" "\n\t" // 2 nop nop (T = 30) + "rjmp .+0" "\n\t" // 2 nop nop (T = 32) + "rjmp .+0" "\n\t" // 2 nop nop (T = 34) + "rjmp .+0" "\n\t" // 2 nop nop (T = 36) + "rjmp .+0" "\n\t" // 2 nop nop (T = 38) + "rjmp head40" "\n\t" // 2 -> head40 (next bit out) + "nextbyte40:" "\n\t" // (T = 27) + "ldi %[bit] , 8" "\n\t" // 1 bit = 8 (T = 28) + "ld %[byte] , %a[ptr]+" "\n\t" // 2 b = *ptr++ (T = 30) + "rjmp .+0" "\n\t" // 2 nop nop (T = 32) + "st %a[port], %[lo]" "\n\t" // 2 PORT = lo (T = 34) + "rjmp .+0" "\n\t" // 2 nop nop (T = 36) + "sbiw %[count], 1" "\n\t" // 2 i-- (T = 38) + "brne head40" "\n" // 1-2 if(i != 0) -> (next byte) + : [port] "+e" (port), + [byte] "+r" (b), + [bit] "+r" (bit), + [next] "+r" (next), + [count] "+w" (i) + : [ptr] "e" (ptr), + [hi] "r" (hi), + [lo] "r" (lo)); +} + +#else +#error "CPU SPEED NOT SUPPORTED" +#endif + +#endif diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoPixelEsp.c b/brain/sw/components/led-renderer/neopixel/internal/NeoPixelEsp.c new file mode 100644 index 0000000000..52415ff427 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoPixelEsp.c @@ -0,0 +1,151 @@ +/*------------------------------------------------------------------------- +NeoPixel library helper functions for Esp8266 and Esp32. + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) + +#include +#if defined(ARDUINO_ARCH_ESP8266) +#include +#endif + +// ESP32 doesn't define ICACHE_RAM_ATTR +#ifndef ICACHE_RAM_ATTR +#define ICACHE_RAM_ATTR IRAM_ATTR +#endif + +inline uint32_t _getCycleCount() +{ + uint32_t ccount; + __asm__ __volatile__("rsr %0,ccount":"=a" (ccount)); + return ccount; +} + +#define CYCLES_800_T0H (F_CPU / 2500000) // 0.4us +#define CYCLES_800_T1H (F_CPU / 1250000) // 0.8us +#define CYCLES_800 (F_CPU / 800000) // 1.25us per bit +#define CYCLES_400_T0H (F_CPU / 2000000) +#define CYCLES_400_T1H (F_CPU / 833333) +#define CYCLES_400 (F_CPU / 400000) + +void ICACHE_RAM_ATTR bitbang_send_pixels_800(uint8_t* pixels, uint8_t* end, uint8_t pin) +{ + const uint32_t pinRegister = _BV(pin); + uint8_t mask; + uint8_t subpix; + uint32_t cyclesStart; + + // trigger emediately + cyclesStart = _getCycleCount() - CYCLES_800; + do + { + subpix = *pixels++; + for (mask = 0x80; mask != 0; mask >>= 1) + { + // do the checks here while we are waiting on time to pass + uint32_t cyclesBit = ((subpix & mask)) ? CYCLES_800_T1H : CYCLES_800_T0H; + uint32_t cyclesNext = cyclesStart; + + // after we have done as much work as needed for this next bit + // now wait for the HIGH + do + { + // cache and use this count so we don't incur another + // instruction before we turn the bit high + cyclesStart = _getCycleCount(); + } while ((cyclesStart - cyclesNext) < CYCLES_800); + + // set high +#if defined(ARDUINO_ARCH_ESP32) + GPIO.out_w1ts = pinRegister; +#else + GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, pinRegister); +#endif + + // wait for the LOW + do + { + cyclesNext = _getCycleCount(); + } while ((cyclesNext - cyclesStart) < cyclesBit); + + // set low +#if defined(ARDUINO_ARCH_ESP32) + GPIO.out_w1tc = pinRegister; +#else + GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, pinRegister); +#endif + } + } while (pixels < end); +} + +void ICACHE_RAM_ATTR bitbang_send_pixels_400(uint8_t* pixels, uint8_t* end, uint8_t pin) +{ + const uint32_t pinRegister = _BV(pin); + uint8_t mask; + uint8_t subpix; + uint32_t cyclesStart; + + // trigger emediately + cyclesStart = _getCycleCount() - CYCLES_400; + do + { + subpix = *pixels++; + for (mask = 0x80; mask; mask >>= 1) + { + uint32_t cyclesBit = ((subpix & mask)) ? CYCLES_400_T1H : CYCLES_400_T0H; + uint32_t cyclesNext = cyclesStart; + + // after we have done as much work as needed for this next bit + // now wait for the HIGH + do + { + // cache and use this count so we don't incur another + // instruction before we turn the bit high + cyclesStart = _getCycleCount(); + } while ((cyclesStart - cyclesNext) < CYCLES_400); + +#if defined(ARDUINO_ARCH_ESP32) + GPIO.out_w1ts = pinRegister; +#else + GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, pinRegister); +#endif + + // wait for the LOW + do + { + cyclesNext = _getCycleCount(); + } while ((cyclesNext - cyclesStart) < cyclesBit); + + // set low +#if defined(ARDUINO_ARCH_ESP32) + GPIO.out_w1tc = pinRegister; +#else + GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, pinRegister); +#endif + } + } while (pixels < end); +} + +#endif diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoRingTopology.h b/brain/sw/components/led-renderer/neopixel/internal/NeoRingTopology.h new file mode 100644 index 0000000000..e598fa462d --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoRingTopology.h @@ -0,0 +1,116 @@ +#pragma once + +/*------------------------------------------------------------------------- +NeoRingTopology provides a mapping feature of a 2d polar cordinate to a +linear 1d cordinate. +It is used to map a series of concentric rings of NeoPixels to a index on +the NeoPixelBus. + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +template class NeoRingTopology : protected T_LAYOUT +{ +public: + NeoRingTopology() + { + } + + uint16_t Map(uint8_t ring, uint16_t pixel) const + { + if (pixel >= getPixelCountAtRing(ring)) + { + return 0; // invalid ring and/or pixel argument, always return a valid value, the first one + } + + return _map(ring, pixel); + } + + uint16_t MapProbe(uint8_t ring, uint16_t pixel) const + { + if (pixel >= getPixelCountAtRing(ring)) + { + return getPixelCount(); // total count, out of bounds + } + + return _map(ring, pixel); + } + + uint16_t RingPixelShift(uint8_t ring, uint16_t pixel, int16_t shift) + { + int32_t ringPixel = pixel; + ringPixel += shift; + + if (ringPixel < 0) + { + ringPixel = 0; + } + else + { + uint16_t count = getPixelCountAtRing(ring); + if (ringPixel >= count) + { + ringPixel = count - 1; + } + } + return ringPixel; + } + + uint16_t RingPixelRotate(uint8_t ring, uint16_t pixel, int16_t rotate) + { + int32_t ringPixel = pixel; + ringPixel += rotate; + return ringPixel % getPixelCountAtRing(ring); + } + + uint8_t getCountOfRings() const + { + return _ringCount() - 1; // minus one as the Rings includes the extra value + } + + uint16_t getPixelCountAtRing(uint8_t ring) const + { + if (ring >= getCountOfRings()) + { + return 0; // invalid, no pixels + } + + return T_LAYOUT::Rings[ring + 1] - T_LAYOUT::Rings[ring]; // using the extra value for count calc + } + + uint16_t getPixelCount() const + { + return T_LAYOUT::Rings[_ringCount() - 1]; // the last entry is the total count + } + +private: + uint16_t _map(uint8_t ring, uint16_t pixel) const + { + return T_LAYOUT::Rings[ring] + pixel; + } + + uint8_t _ringCount() const + { + return sizeof(T_LAYOUT::Rings) / sizeof(T_LAYOUT::Rings[0]); + } +}; diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoSpriteSheet.h b/brain/sw/components/led-renderer/neopixel/internal/NeoSpriteSheet.h new file mode 100644 index 0000000000..83fb978d3d --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoSpriteSheet.h @@ -0,0 +1,163 @@ +/*------------------------------------------------------------------------- +NeoPixel library + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + + +template class NeoVerticalSpriteSheet +{ +public: + NeoVerticalSpriteSheet(uint16_t width, + uint16_t height, + uint16_t spriteHeight, + PGM_VOID_P pixels) : + _method(width, height, pixels), + _spriteHeight(spriteHeight), + _spriteCount(height / spriteHeight) + { + } + + operator NeoBufferContext() + { + return _method; + } + + uint16_t SpriteWidth() const + { + return _method.Width(); + }; + + uint16_t SpriteHeight() const + { + return _spriteHeight; + }; + + uint16_t SpriteCount() const + { + return _spriteCount; + } + + void SetPixelColor(uint16_t indexSprite, + int16_t x, + int16_t y, + typename T_BUFFER_METHOD::ColorObject color) + { + _method.SetPixelColor(pixelIndex(indexSprite, x, y), color); + }; + + typename T_BUFFER_METHOD::ColorObject GetPixelColor(uint16_t indexSprite, + int16_t x, + int16_t y) const + { + return _method.GetPixelColor(pixelIndex(indexSprite, x, y)); + }; + + void ClearTo(typename T_BUFFER_METHOD::ColorObject color) + { + _method.ClearTo(color); + }; + + void Blt(NeoBufferContext destBuffer, + uint16_t indexPixel, + uint16_t indexSprite) + { + uint16_t destPixelCount = destBuffer.PixelCount(); + // validate indexPixel + if (indexPixel >= destPixelCount) + { + return; + } + + // validate indexSprite + if (indexSprite >= _spriteCount) + { + return; + } + // calc how many we can copy + uint16_t copyCount = destPixelCount - indexPixel; + + if (copyCount > SpriteWidth()) + { + copyCount = SpriteWidth(); + } + + uint8_t* pDest = T_BUFFER_METHOD::ColorFeature::getPixelAddress(destBuffer.Pixels, indexPixel); + const uint8_t* pSrc = T_BUFFER_METHOD::ColorFeature::getPixelAddress(_method.Pixels(), pixelIndex(indexSprite, 0, 0)); + _method.CopyPixels(pDest, pSrc, copyCount); + } + + void Blt(NeoBufferContext destBuffer, + int16_t x, + int16_t y, + uint16_t indexSprite, + LayoutMapCallback layoutMap) + { + if (indexSprite >= _spriteCount) + { + return; + } + uint16_t destPixelCount = destBuffer.PixelCount(); + + for (int16_t srcY = 0; srcY < SpriteHeight(); srcY++) + { + for (int16_t srcX = 0; srcX < SpriteWidth(); srcX++) + { + uint16_t indexDest = layoutMap(srcX + x, srcY + y); + + if (indexDest < destPixelCount) + { + const uint8_t* pSrc = T_BUFFER_METHOD::ColorFeature::getPixelAddress(_method.Pixels(), pixelIndex(indexSprite, srcX, srcY)); + uint8_t* pDest = T_BUFFER_METHOD::ColorFeature::getPixelAddress(destBuffer.Pixels, indexDest); + + _method.CopyPixels(pDest, pSrc, 1); + } + } + } + + } + +private: + T_BUFFER_METHOD _method; + + const uint16_t _spriteHeight; + const uint16_t _spriteCount; + + uint16_t pixelIndex(uint16_t indexSprite, + int16_t x, + int16_t y) const + { + uint16_t result = PixelIndex_OutOfBounds; + + if (indexSprite < _spriteCount && + x >= 0 && + (uint16_t)x < SpriteWidth() && + y >= 0 && + (uint16_t)y < SpriteHeight()) + { + result = x + y * SpriteWidth() + indexSprite * _spriteHeight * SpriteWidth(); + } + return result; + } +}; \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoTiles.h b/brain/sw/components/led-renderer/neopixel/internal/NeoTiles.h new file mode 100644 index 0000000000..2c0ca8338d --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoTiles.h @@ -0,0 +1,158 @@ +#pragma once + +/*------------------------------------------------------------------------- +NeoTiles provides a mapping feature of a 2d cordinate to linear 1d cordinate +It is used to map tiles of matricies of NeoPixels to a index on the NeoPixelBus +where the the matricies use one topology and the tiles of those matricies can +use another + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +//----------------------------------------------------------------------------- +// class NeoTiles +// Simple template Tile layout class +// T_MATRIX_LAYOUT = the layout used on the pixel matrix panel (a tile) +// T_TILE_LAYOUT = the layout used for the tiles. +// +//----------------------------------------------------------------------------- +template class NeoTiles +{ +public: + NeoTiles(uint16_t topoWidth, uint16_t topoHeight, + uint16_t tilesWidth, uint16_t tilesHeight) : + _topo(topoWidth, topoHeight), + _width(tilesWidth), + _height(tilesHeight) + { + } + + uint16_t Map(int16_t x, int16_t y) const + { + uint16_t totalWidth = getWidth(); + uint16_t totalHeight = getHeight(); + + if (x >= totalWidth) + { + x = totalWidth - 1; + } + else if (x < 0) + { + x = 0; + } + + if (y >= totalHeight) + { + y = totalHeight - 1; + } + else if (y < 0) + { + y = 0; + } + + uint16_t localIndex; + uint16_t tileOffset; + + calculate(x, y, &localIndex, &tileOffset); + + return localIndex + tileOffset; + } + + uint16_t MapProbe(int16_t x, int16_t y) const + { + uint16_t totalWidth = getWidth(); + uint16_t totalHeight = getHeight(); + + if (x < 0 || x >= totalWidth || y < 0 || y >= totalHeight) + { + return totalWidth * totalHeight; // count, out of bounds + } + + uint16_t localIndex; + uint16_t tileOffset; + + calculate(x, y, &localIndex, &tileOffset); + + return localIndex + tileOffset; + } + + NeoTopologyHint TopologyHint(int16_t x, int16_t y) const + { + uint16_t totalWidth = getWidth(); + uint16_t totalHeight = getHeight(); + + if (x < 0 || x >= totalWidth || y < 0 || y >= totalHeight) + { + return NeoTopologyHint_OutOfBounds; + } + + uint16_t localIndex; + uint16_t tileOffset; + NeoTopologyHint result; + + calculate(x, y, &localIndex, &tileOffset); + + if (localIndex == 0) + { + result = NeoTopologyHint_FirstOnPanel; + } + else if (localIndex == (_topo.getWidth() * _topo.getHeight() - 1)) + { + result = NeoTopologyHint_LastOnPanel; + } + else + { + result = NeoTopologyHint_InPanel; + } + + return result; + } + + uint16_t getWidth() const + { + return _width * _topo.getWidth(); + } + + uint16_t getHeight() const + { + return _height * _topo.getHeight(); + } + +private: + const NeoTopology _topo; + const uint16_t _width; + const uint16_t _height; + + void calculate(uint16_t x, uint16_t y, uint16_t* pLocalIndex, uint16_t* pTileOffset) const + { + uint16_t tileX = x / _topo.getWidth(); + uint16_t topoX = x % _topo.getWidth(); + + uint16_t tileY = y / _topo.getHeight(); + uint16_t topoY = y % _topo.getHeight(); + + *pTileOffset = T_TILE_LAYOUT::Map(_width, _height, tileX, tileY) * _topo.getWidth() * _topo.getHeight(); + *pLocalIndex = _topo.Map(topoX, topoY); + } +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/NeoTopology.h b/brain/sw/components/led-renderer/neopixel/internal/NeoTopology.h new file mode 100644 index 0000000000..224c1dbdf6 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/NeoTopology.h @@ -0,0 +1,91 @@ +#pragma once + +/*------------------------------------------------------------------------- +NeoTopology provides a mapping feature of a 2d cordinate to linear 1d cordinate +It is used to map a matrix of NeoPixels to a index on the NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +enum NeoTopologyHint +{ + NeoTopologyHint_FirstOnPanel, + NeoTopologyHint_InPanel, + NeoTopologyHint_LastOnPanel, + NeoTopologyHint_OutOfBounds +}; + +template class NeoTopology +{ +public: + NeoTopology(uint16_t width, uint16_t height) : + _width(width), + _height(height) + { + + } + + uint16_t Map(int16_t x, int16_t y) const + { + if (x >= _width) + { + x = _width - 1; + } + else if (x < 0) + { + x = 0; + } + if (y >= _height) + { + y = _height - 1; + } + else if (y < 0) + { + y = 0; + } + return T_LAYOUT::Map(_width, _height, x, y); + } + + uint16_t MapProbe(int16_t x, int16_t y) const + { + if (x < 0 || x >= _width || y < 0 || y >= _height) + { + return _width * _height; // count, out of bounds + } + return T_LAYOUT::Map(_width, _height, x, y); + } + + uint16_t getWidth() const + { + return _width; + } + + uint16_t getHeight() const + { + return _height; + } + +private: + const uint16_t _width; + const uint16_t _height; +}; diff --git a/brain/sw/components/led-renderer/neopixel/internal/RgbColor.cpp b/brain/sw/components/led-renderer/neopixel/internal/RgbColor.cpp new file mode 100644 index 0000000000..29ae4343b3 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/RgbColor.cpp @@ -0,0 +1,249 @@ +/*------------------------------------------------------------------------- +RgbColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "RgbColor.h" +#include "HslColor.h" +#include "HsbColor.h" +#include "HtmlColor.h" + +static float _CalcColor(float p, float q, float t) +{ + if (t < 0.0f) + t += 1.0f; + if (t > 1.0f) + t -= 1.0f; + + if (t < 1.0f / 6.0f) + return p + (q - p) * 6.0f * t; + + if (t < 0.5f) + return q; + + if (t < 2.0f / 3.0f) + return p + ((q - p) * (2.0f / 3.0f - t) * 6.0f); + + return p; +} + +RgbColor::RgbColor(const HtmlColor& color) +{ + uint32_t temp = color.Color; + + B = (temp & 0xff); + temp = temp >> 8; + G = (temp & 0xff); + temp = temp >> 8; + R = (temp & 0xff); +}; + +RgbColor::RgbColor(const HslColor& color) +{ + float r; + float g; + float b; + + float h = color.H; + float s = color.S; + float l = color.L; + + + if (color.S == 0.0f || color.L == 0.0f) + { + r = g = b = l; // achromatic or black + } + else + { + float q = l < 0.5f ? l * (1.0f + s) : l + s - (l * s); + float p = 2.0f * l - q; + r = _CalcColor(p, q, h + 1.0f / 3.0f); + g = _CalcColor(p, q, h); + b = _CalcColor(p, q, h - 1.0f / 3.0f); + } + + R = (uint8_t)(r * 255.0f); + G = (uint8_t)(g * 255.0f); + B = (uint8_t)(b * 255.0f); +} + +RgbColor::RgbColor(const HsbColor& color) +{ + float r; + float g; + float b; + + float h = color.H; + float s = color.S; + float v = color.B; + + if (color.S == 0.0f) + { + r = g = b = v; // achromatic or black + } + else + { + if (h < 0.0f) + { + h += 1.0f; + } + else if (h >= 1.0f) + { + h -= 1.0f; + } + h *= 6.0f; + int i = (int)h; + float f = h - i; + float q = v * (1.0f - s * f); + float p = v * (1.0f - s); + float t = v * (1.0f - s * (1.0f - f)); + switch (i) + { + case 0: + r = v; + g = t; + b = p; + break; + case 1: + r = q; + g = v; + b = p; + break; + case 2: + r = p; + g = v; + b = t; + break; + case 3: + r = p; + g = q; + b = v; + break; + case 4: + r = t; + g = p; + b = v; + break; + default: + r = v; + g = p; + b = q; + break; + } + } + + R = (uint8_t)(r * 255.0f); + G = (uint8_t)(g * 255.0f); + B = (uint8_t)(b * 255.0f); +} + +uint8_t RgbColor::CalculateBrightness() const +{ + return (uint8_t)(((uint16_t)R + (uint16_t)G + (uint16_t)B) / 3); +} + +void RgbColor::Darken(uint8_t delta) +{ + if (R > delta) + { + R -= delta; + } + else + { + R = 0; + } + + if (G > delta) + { + G -= delta; + } + else + { + G = 0; + } + + if (B > delta) + { + B -= delta; + } + else + { + B = 0; + } +} + +void RgbColor::Lighten(uint8_t delta) +{ + if (R < 255 - delta) + { + R += delta; + } + else + { + R = 255; + } + + if (G < 255 - delta) + { + G += delta; + } + else + { + G = 255; + } + + if (B < 255 - delta) + { + B += delta; + } + else + { + B = 255; + } +} + +RgbColor RgbColor::LinearBlend(const RgbColor& left, const RgbColor& right, float progress) +{ + return RgbColor( left.R + ((right.R - left.R) * progress), + left.G + ((right.G - left.G) * progress), + left.B + ((right.B - left.B) * progress)); +} + +RgbColor RgbColor::BilinearBlend(const RgbColor& c00, + const RgbColor& c01, + const RgbColor& c10, + const RgbColor& c11, + float x, + float y) +{ + float v00 = (1.0f - x) * (1.0f - y); + float v10 = x * (1.0f - y); + float v01 = (1.0f - x) * y; + float v11 = x * y; + + return RgbColor( + c00.R * v00 + c10.R * v10 + c01.R * v01 + c11.R * v11, + c00.G * v00 + c10.G * v10 + c01.G * v01 + c11.G * v11, + c00.B * v00 + c10.B * v10 + c01.B * v01 + c11.B * v11); +} \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/RgbColor.h b/brain/sw/components/led-renderer/neopixel/internal/RgbColor.h new file mode 100644 index 0000000000..516112319b --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/RgbColor.h @@ -0,0 +1,148 @@ +/*------------------------------------------------------------------------- +RgbColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +#include + +struct HslColor; +struct HsbColor; +struct HtmlColor; + +// ------------------------------------------------------------------------ +// RgbColor represents a color object that is represented by Red, Green, Blue +// component values. It contains helpful color routines to manipulate the +// color. +// ------------------------------------------------------------------------ +struct RgbColor +{ + // ------------------------------------------------------------------------ + // Construct a RgbColor using R, G, B values (0-255) + // ------------------------------------------------------------------------ + RgbColor(uint8_t r, uint8_t g, uint8_t b) : + R(r), G(g), B(b) + { + }; + + // ------------------------------------------------------------------------ + // Construct a RgbColor using a single brightness value (0-255) + // This works well for creating gray tone colors + // (0) = black, (255) = white, (128) = gray + // ------------------------------------------------------------------------ + RgbColor(uint8_t brightness) : + R(brightness), G(brightness), B(brightness) + { + }; + + // ------------------------------------------------------------------------ + // Construct a RgbColor using HtmlColor + // ------------------------------------------------------------------------ + RgbColor(const HtmlColor& color); + + // ------------------------------------------------------------------------ + // Construct a RgbColor using HslColor + // ------------------------------------------------------------------------ + RgbColor(const HslColor& color); + + // ------------------------------------------------------------------------ + // Construct a RgbColor using HsbColor + // ------------------------------------------------------------------------ + RgbColor(const HsbColor& color); + + // ------------------------------------------------------------------------ + // Construct a RgbColor that will have its values set in latter operations + // CAUTION: The R,G,B members are not initialized and may not be consistent + // ------------------------------------------------------------------------ + RgbColor() + { + }; + + // ------------------------------------------------------------------------ + // Comparison operators + // ------------------------------------------------------------------------ + bool operator==(const RgbColor& other) const + { + return (R == other.R && G == other.G && B == other.B); + }; + + bool operator!=(const RgbColor& other) const + { + return !(*this == other); + }; + + // ------------------------------------------------------------------------ + // CalculateBrightness will calculate the overall brightness + // NOTE: This is a simple linear brightness + // ------------------------------------------------------------------------ + uint8_t CalculateBrightness() const; + + // ------------------------------------------------------------------------ + // Darken will adjust the color by the given delta toward black + // NOTE: This is a simple linear change + // delta - (0-255) the amount to dim the color + // ------------------------------------------------------------------------ + void Darken(uint8_t delta); + + // ------------------------------------------------------------------------ + // Lighten will adjust the color by the given delta toward white + // NOTE: This is a simple linear change + // delta - (0-255) the amount to lighten the color + // ------------------------------------------------------------------------ + void Lighten(uint8_t delta); + + // ------------------------------------------------------------------------ + // LinearBlend between two colors by the amount defined by progress variable + // left - the color to start the blend at + // right - the color to end the blend at + // progress - (0.0 - 1.0) value where 0 will return left and 1.0 will return right + // and a value between will blend the color weighted linearly between them + // ------------------------------------------------------------------------ + static RgbColor LinearBlend(const RgbColor& left, const RgbColor& right, float progress); + + // ------------------------------------------------------------------------ + // BilinearBlend between four colors by the amount defined by 2d variable + // c00 - upper left quadrant color + // c01 - upper right quadrant color + // c10 - lower left quadrant color + // c11 - lower right quadrant color + // x - unit value (0.0 - 1.0) that defines the blend progress in horizontal space + // y - unit value (0.0 - 1.0) that defines the blend progress in vertical space + // ------------------------------------------------------------------------ + static RgbColor BilinearBlend(const RgbColor& c00, + const RgbColor& c01, + const RgbColor& c10, + const RgbColor& c11, + float x, + float y); + + // ------------------------------------------------------------------------ + // Red, Green, Blue color members (0-255) where + // (0,0,0) is black and (255,255,255) is white + // ------------------------------------------------------------------------ + uint8_t R; + uint8_t G; + uint8_t B; +}; + diff --git a/brain/sw/components/led-renderer/neopixel/internal/RgbwColor.cpp b/brain/sw/components/led-renderer/neopixel/internal/RgbwColor.cpp new file mode 100644 index 0000000000..062834d038 --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/RgbwColor.cpp @@ -0,0 +1,178 @@ +/*------------------------------------------------------------------------- +RgbwColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ + +#include "RgbColor.h" +#include "HslColor.h" +#include "HsbColor.h" +#include "RgbwColor.h" +#include "HtmlColor.h" + +RgbwColor::RgbwColor(const HtmlColor& color) +{ + uint32_t temp = color.Color; + B = (temp & 0xff); + temp = temp >> 8; + G = (temp & 0xff); + temp = temp >> 8; + R = (temp & 0xff); + temp = temp >> 8; + W = (temp & 0xff); +}; + +RgbwColor::RgbwColor(const HslColor& color) +{ + RgbColor rgbColor(color); + *this = rgbColor; +} + +RgbwColor::RgbwColor(const HsbColor& color) +{ + RgbColor rgbColor(color); + *this = rgbColor; +} + +uint8_t RgbwColor::CalculateBrightness() const +{ + uint8_t colorB = (uint8_t)(((uint16_t)R + (uint16_t)G + (uint16_t)B) / 3); + if (W > colorB) + { + return W; + } + else + { + return colorB; + } +} + +void RgbwColor::Darken(uint8_t delta) +{ + if (R > delta) + { + R -= delta; + } + else + { + R = 0; + } + + if (G > delta) + { + G -= delta; + } + else + { + G = 0; + } + + if (B > delta) + { + B -= delta; + } + else + { + B = 0; + } + + if (W > delta) + { + W -= delta; + } + else + { + W = 0; + } +} + +void RgbwColor::Lighten(uint8_t delta) +{ + if (IsColorLess()) + { + if (W < 255 - delta) + { + W += delta; + } + else + { + W = 255; + } + } + else + { + if (R < 255 - delta) + { + R += delta; + } + else + { + R = 255; + } + + if (G < 255 - delta) + { + G += delta; + } + else + { + G = 255; + } + + if (B < 255 - delta) + { + B += delta; + } + else + { + B = 255; + } + } +} + +RgbwColor RgbwColor::LinearBlend(const RgbwColor& left, const RgbwColor& right, float progress) +{ + return RgbwColor( left.R + ((right.R - left.R) * progress), + left.G + ((right.G - left.G) * progress), + left.B + ((right.B - left.B) * progress), + left.W + ((right.W - left.W) * progress) ); +} + +RgbwColor RgbwColor::BilinearBlend(const RgbwColor& c00, + const RgbwColor& c01, + const RgbwColor& c10, + const RgbwColor& c11, + float x, + float y) +{ + float v00 = (1.0f - x) * (1.0f - y); + float v10 = x * (1.0f - y); + float v01 = (1.0f - x) * y; + float v11 = x * y; + + return RgbwColor( + c00.R * v00 + c10.R * v10 + c01.R * v01 + c11.R * v11, + c00.G * v00 + c10.G * v10 + c01.G * v01 + c11.G * v11, + c00.B * v00 + c10.B * v10 + c01.B * v01 + c11.B * v11, + c00.W * v00 + c10.W * v10 + c01.W * v01 + c11.W * v11 ); +} \ No newline at end of file diff --git a/brain/sw/components/led-renderer/neopixel/internal/RgbwColor.h b/brain/sw/components/led-renderer/neopixel/internal/RgbwColor.h new file mode 100644 index 0000000000..38f25302be --- /dev/null +++ b/brain/sw/components/led-renderer/neopixel/internal/RgbwColor.h @@ -0,0 +1,178 @@ +/*------------------------------------------------------------------------- +RgbwColor provides a color object that can be directly consumed by NeoPixelBus + +Written by Michael C. Miller. + +I invest time and resources providing this open source code, +please support me by dontating (see https://github.com/Makuna/NeoPixelBus) + +------------------------------------------------------------------------- +This file is part of the Makuna/NeoPixelBus library. + +NeoPixelBus is free software: you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as +published by the Free Software Foundation, either version 3 of +the License, or (at your option) any later version. + +NeoPixelBus is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with NeoPixel. If not, see +. +-------------------------------------------------------------------------*/ +#pragma once + +#include + +struct RgbColor; +struct HslColor; +struct HsbColor; + +// ------------------------------------------------------------------------ +// RgbwColor represents a color object that is represented by Red, Green, Blue +// component values and an extra White component. It contains helpful color +// routines to manipulate the color. +// ------------------------------------------------------------------------ +struct RgbwColor +{ + // ------------------------------------------------------------------------ + // Construct a RgbwColor using R, G, B, W values (0-255) + // ------------------------------------------------------------------------ + RgbwColor(uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0) : + R(r), G(g), B(b), W(w) + { + }; + + // ------------------------------------------------------------------------ + // Construct a RgbColor using a single brightness value (0-255) + // This works well for creating gray tone colors + // (0) = black, (255) = white, (128) = gray + // ------------------------------------------------------------------------ + RgbwColor(uint8_t brightness) : + R(0), G(0), B(0), W(brightness) + { + }; + + // ------------------------------------------------------------------------ + // Construct a RgbwColor using RgbColor + // ------------------------------------------------------------------------ + RgbwColor(const RgbColor& color) : + R(color.R), + G(color.G), + B(color.B), + W(0) + { + }; + + // ------------------------------------------------------------------------ + // Construct a RgbwColor using HtmlColor + // ------------------------------------------------------------------------ + RgbwColor(const HtmlColor& color); + + // ------------------------------------------------------------------------ + // Construct a RgbwColor using HslColor + // ------------------------------------------------------------------------ + RgbwColor(const HslColor& color); + + // ------------------------------------------------------------------------ + // Construct a RgbwColor using HsbColor + // ------------------------------------------------------------------------ + RgbwColor(const HsbColor& color); + + // ------------------------------------------------------------------------ + // Construct a RgbwColor that will have its values set in latter operations + // CAUTION: The R,G,B, W members are not initialized and may not be consistent + // ------------------------------------------------------------------------ + RgbwColor() + { + }; + + // ------------------------------------------------------------------------ + // Comparison operators + // ------------------------------------------------------------------------ + bool operator==(const RgbwColor& other) const + { + return (R == other.R && G == other.G && B == other.B && W == other.W); + }; + + bool operator!=(const RgbwColor& other) const + { + return !(*this == other); + }; + + // ------------------------------------------------------------------------ + // Returns if the color is grey, all values are equal other than white + // ------------------------------------------------------------------------ + bool IsMonotone() const + { + return (R == B && R == G); + }; + + // ------------------------------------------------------------------------ + // Returns if the color components are all zero, the white component maybe + // anything + // ------------------------------------------------------------------------ + bool IsColorLess() const + { + return (R == 0 && B == 0 && G == 0); + }; + + // ------------------------------------------------------------------------ + // CalculateBrightness will calculate the overall brightness + // NOTE: This is a simple linear brightness + // ------------------------------------------------------------------------ + uint8_t CalculateBrightness() const; + + // ------------------------------------------------------------------------ + // Darken will adjust the color by the given delta toward black + // NOTE: This is a simple linear change + // delta - (0-255) the amount to dim the color + // ------------------------------------------------------------------------ + void Darken(uint8_t delta); + + // ------------------------------------------------------------------------ + // Lighten will adjust the color by the given delta toward white + // NOTE: This is a simple linear change + // delta - (0-255) the amount to lighten the color + // ------------------------------------------------------------------------ + void Lighten(uint8_t delta); + + // ------------------------------------------------------------------------ + // LinearBlend between two colors by the amount defined by progress variable + // left - the color to start the blend at + // right - the color to end the blend at + // progress - (0.0 - 1.0) value where 0 will return left and 1.0 will return right + // and a value between will blend the color weighted linearly between them + // ------------------------------------------------------------------------ + static RgbwColor LinearBlend(const RgbwColor& left, const RgbwColor& right, float progress); + + // ------------------------------------------------------------------------ + // BilinearBlend between four colors by the amount defined by 2d variable + // c00 - upper left quadrant color + // c01 - upper right quadrant color + // c10 - lower left quadrant color + // c11 - lower right quadrant color + // x - unit value (0.0 - 1.0) that defines the blend progress in horizontal space + // y - unit value (0.0 - 1.0) that defines the blend progress in vertical space + // ------------------------------------------------------------------------ + static RgbwColor BilinearBlend(const RgbwColor& c00, + const RgbwColor& c01, + const RgbwColor& c10, + const RgbwColor& c11, + float x, + float y); + + // ------------------------------------------------------------------------ + // Red, Green, Blue, White color members (0-255) where + // (0,0,0,0) is black and (255,255,255, 0) and (0,0,0,255) is white + // Note (255,255,255,255) is extreme bright white + // ------------------------------------------------------------------------ + uint8_t R; + uint8_t G; + uint8_t B; + uint8_t W; +}; + diff --git a/brain/sw/components/net/CMakeLists.txt b/brain/sw/components/net/CMakeLists.txt new file mode 100644 index 0000000000..03b3017723 --- /dev/null +++ b/brain/sw/components/net/CMakeLists.txt @@ -0,0 +1,16 @@ +set(COMPONENT_SRCS + "net_transport.cpp" + "eth_interface.cpp" + "wifi_sta_interface.cpp" + "wifi_ap_interface.cpp" + "ip_port.cpp" + "msg.cpp" + "msg_handler.cpp" + "msg_slinger.cpp" + "ota_fetcher.cpp" + ) +set(COMPONENT_ADD_INCLUDEDIRS "include") + +set(COMPONENT_REQUIRES brain-common nvs_flash led-renderer app_update esp_http_client) + +register_component() diff --git a/brain/sw/components/net/eth_interface.cpp b/brain/sw/components/net/eth_interface.cpp new file mode 100644 index 0000000000..41505b2c70 --- /dev/null +++ b/brain/sw/components/net/eth_interface.cpp @@ -0,0 +1,109 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#include +#include "eth_interface.h" +#include "net_priv.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_err.h" +#include "esp_log.h" +#include "tcpip_adapter.h" +#include "sdkconfig.h" + +//////////////////////////////////////////////////////////// +// Glue functions that let us use C++ functions with the IDF +// C apis. + +static void glue_evtHandler(void* pArg, esp_event_base_t evBase, int32_t evId, void* evData) { + ((EthInterface *) pArg)->_evtHandler(evBase, evId, evData); +} + +//////////////////////////////////////////////////////////// + +bool EthInterface::init() { + if (!NetInterface::init()) return false; + + ESP_LOGD(TAG, "EthInterface init begin"); + + if (ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_set_default_eth_handlers()) != ESP_OK) return false; + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, glue_evtHandler, this)) != ESP_OK) return false; + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, glue_evtHandler, this)) != ESP_OK) return false; + + eth_mac_config_t macConfig = ETH_MAC_DEFAULT_CONFIG(); + macConfig.sw_reset_timeout_ms = 300; + esp_eth_mac_t *mac = esp_eth_mac_new_esp32(&macConfig); + + eth_phy_config_t phyConfig = ETH_PHY_DEFAULT_CONFIG(); + + // Because the default example is assuming one of those 8720 breakout boards that + // has the address set to 1 we have to be sure to set it to 0 + phyConfig.phy_addr = 0; + + esp_eth_phy_t *phy = esp_eth_phy_new_lan8720(&phyConfig); + + m_config = ETH_DEFAULT_CONFIG(mac, phy); + + ESP_LOGD(TAG, "EthInterface init done"); + + return true; +} + +void EthInterface::enableChanged() { + if (m_isEnabled) { + // The esp_eth_driver_install call will send the START event, which the + // tcpip adapter will be listening to as long as the default eth handlers + // have been set. When the tcpip adapter sees the start event, it looks at + // the ip configuration it has for the eth driver and uses that to configure + // it's eth interface. + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_eth_driver_install(&m_config, &m_hDriver)) != ESP_OK) { + ESP_LOGE(TAG, "EthInterface attempt to enable failed"); + m_isEnabled = false; + } + } else { + ESP_ERROR_CHECK_WITHOUT_ABORT(esp_eth_driver_uninstall(&m_hDriver)); + } +} + +void EthInterface::addressingChanged() { + if (m_dhcpEnabled) { + if (ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_ETH)) != ESP_OK) { + m_dhcpEnabled = false; + } + } else { + // Stop DHCP first or else you can't set the static ip + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH)); + + // Now set the info. Hopefully it's already been configured properly eh? + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_ETH, &m_staticIp)); + } +} + +void +EthInterface::_evtHandler(esp_event_base_t evBase, int32_t evId, void *evData) { + if (evBase == ETH_EVENT) { + switch (evId) { + case ETHERNET_EVENT_CONNECTED: + tellListenerIntLinkUp(); + break; + case ETHERNET_EVENT_DISCONNECTED: + tellListenerLinkDown(); + break; + case ETHERNET_EVENT_START: + tellListenerStart(); + break; + case ETHERNET_EVENT_STOP: + tellListenerStop(); + break; + default: + break; + } + } else if (evBase == IP_EVENT) { + ip_event_got_ip_t *event = (ip_event_got_ip_t *) evData; + const tcpip_adapter_ip_info_t *ip_info = &event->ip_info; + + tellListenerGotAddr(ip_info); + } +} diff --git a/brain/sw/components/net/include/eth_interface.h b/brain/sw/components/net/include/eth_interface.h new file mode 100644 index 0000000000..b28516fc09 --- /dev/null +++ b/brain/sw/components/net/include/eth_interface.h @@ -0,0 +1,28 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#pragma once + +#include +#include "esp_event.h" + +#include "net_interface.h" + +class EthInterface : public NetInterface { +public: + void _evtHandler(esp_event_base_t evBase, int32_t evId, void *evData); + + const char *name() override { return "eth"; } + +protected: + bool init() override; + + void enableChanged() override; + + void addressingChanged() override; + +private: + esp_eth_config_t m_config; + esp_eth_handle_t m_hDriver; +}; \ No newline at end of file diff --git a/brain/sw/components/net/include/ip_port.h b/brain/sw/components/net/include/ip_port.h new file mode 100644 index 0000000000..653e139d7b --- /dev/null +++ b/brain/sw/components/net/include/ip_port.h @@ -0,0 +1,53 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#ifndef BRAIN_IP_PORT_H +#define BRAIN_IP_PORT_H + +#include +#include +#include + +#include "lwip/sockets.h" + +/** + * This class normalizes handling of an IP and Port tuple, what the + * socket layer would call an address and what the LWIP library has + * a handful of macros around. It's just a bit easier to deal with in + * full on C++ using this sort of a wrapper. + */ +class IpPort { +public: + + IpPort() { + } + + IpPort(uint16_t port) { + m_addr.sin_port = htons(port); + m_addr.sin_family = AF_INET; + m_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST); + } + + IpPort(struct sockaddr_in *pOther) { + memcpy(&m_addr, pOther, sizeof(m_addr)); + } + + struct sockaddr * addr() { return (struct sockaddr *)&m_addr; } + struct sockaddr_in * addr_in() { return &m_addr; } + + size_t size() { return sizeof(m_addr); } + + const char * toString(); + + static const IpPort BroadcastPinky; + + friend std::ostream &operator<<(std::ostream &os, const IpPort &port); + + +private: + struct sockaddr_in m_addr; +}; + + +#endif //PLAYA_IP_PORT_H diff --git a/brain/sw/components/net/include/msg.h b/brain/sw/components/net/include/msg.h new file mode 100644 index 0000000000..69b542c233 --- /dev/null +++ b/brain/sw/components/net/include/msg.h @@ -0,0 +1,494 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#ifndef BRAIN_MSG_H +#define BRAIN_MSG_H + +#include "esp_log.h" +#include "freertos/FreeRTOS.h" + +#include +#include +#include +#include +#include +#include + +#include "ip_port.h" +#include + +class BrainHelloMsg; +class BrainShaderMsg; +class PingMsg; + +/** + * A Msg is our base construct in the Pinky/Brain protocol. It is + * transmitted in one or more UDP datagrams which have a 12 byte header + * that is used to reassemble the full message buffer. + * + * Instead of having separate classes for reading and writing the bytes + * in a message as a stream all that functionality is including in this + * class directly. + * + */ +class Msg { +public: + + // A convenience association for the slinger + IpPort dest; + + enum class Type : uint8_t { + BRAIN_HELLO, // Brain -> Pinky|Mapper + BRAIN_PANEL_SHADE, // Pinky -> Brain + MAPPER_HELLO, // Mapper -> Pinky + BRAIN_ID_REQUEST, // Mapper -> Brain + BRAIN_MAPPING, + PING, + USE_FIRMWARE, + }; + + /** + * The maximum size of a single message. + */ + static const size_t FRAGMENT_MAX = 1500; + static const size_t HEADER_SIZE = 12; + + struct Header { + int16_t id; + int16_t frameSize; + int32_t msgSize; + int32_t frameOffset; + }; + + /** + * This is how you get a new message instead of creating one on the + * heap by yourself. The idea is that we might want to pool these to + * save memory allocations since they're very similarly sized. Right now + * we don't actually do that, but having everything go through this + * method will save future time if we need to implement that. + * + * This method will block until a free buffer becomes available. The returned + * Msg will have a refCount of 1. + * + * @return A ready to use instance + */ + static Msg* obtain() { + auto m = new Msg(); + return m; + } + + /** + * This should only be used to initialize a Msg that was created on the stack + * using an existing buffer. Don't call `release()`! + * + * TODO: refactor to extract buffer streaming. + */ + void reuse(uint8_t* buf, size_t capacity, size_t used, size_t cursor = 0) { + m_buf = buf; + m_capacity = capacity; + m_used = used; + m_cursor = cursor; + } + + /** + * Adds one more to the ref count. Must be paired with an eventual release(). + * Since obtain() returns a message with a ref count of 1 this is only needed + * when a message is being passed around elsewhere. + */ + void addRef() { m_refCount++; } + + /** + * Cast your lightly used message back towards the pool of availability. It + * doesn't actually re-enter the pool until the refCount hits 0. + */ + void release() { + m_refCount--; + if (!m_refCount) { + if (m_buf) { + free(m_buf); + } + + delete this; + } + } + + bool prepCapacity(size_t atLeast); + + char* buffer() { return (char*)m_buf; } + size_t capacity() { return m_capacity; } + size_t used() { return m_used; } + + void setUsed(int used) { m_used = MIN(used, m_capacity); } + + void rewind(int pos = 0) { m_cursor = pos; } + void skip(int amt) { m_cursor += amt; } + size_t pos() { return m_cursor; } + + ////////////////// + + void writeBoolean(bool b) { + if (prepCapacity(m_used + 1)) { + m_buf[m_cursor++] = (uint8_t)(b ? 1 : 0); + if (m_cursor > m_used) m_used = m_cursor; + } + } + + void writeByte(int8_t v) { + if (prepCapacity(m_used + 1)) { + m_buf[m_cursor++] = (uint8_t)v; + if (m_cursor > m_used) m_used = m_cursor; + } + } + + void writeShort(int16_t i) { + auto ui = (uint16_t)i; + if (prepCapacity(m_used + 2)) { + m_buf[m_cursor++] = (uint8_t)((ui >> 8) & 0x000000ff); + m_buf[m_cursor++] = (uint8_t)((ui ) & 0x000000ff); + if (m_cursor > m_used) m_used = m_cursor; + } + } + + void writeInt(int32_t i) { + auto ui = (uint32_t)i; + if (prepCapacity(m_used + 4)) { + m_buf[m_cursor++] = (uint8_t)((ui >> 24) & 0x000000ff); + m_buf[m_cursor++] = (uint8_t)((ui >> 16) & 0x000000ff); + m_buf[m_cursor++] = (uint8_t)((ui >> 8) & 0x000000ff); + m_buf[m_cursor++] = (uint8_t)((ui ) & 0x000000ff); + if (m_cursor > m_used) m_used = m_cursor; + } + } + + void writeBytes(const uint8_t *bytes, size_t len) { + if (prepCapacity(4 + len)) { + writeInt(len); + + for (int i = 0; i < len; i++) { + writeByte(bytes[i]); + } + } + } + + void writeFloat(float d) { + + } + + void writeNullableString(const char* sz) { + writeBoolean(sz); + writeString(sz); + } + + void writeString(const char* sz) { + if (!sz) return; + + size_t len = strlen(sz); + size_t xtra = capFor(sz); + if (prepCapacity(m_used + xtra)) { + writeInt(len); + for ( int i = 0; i < len; i++ ) { + m_buf[m_cursor++] = (uint8_t)sz[i]; + } + if (m_cursor > m_used) m_used = m_cursor; + } + } + + // writeNullableString + // writeBytes + // writeNBytes??? + + /** + * Returns the capacity required for a given null terminated C string + * + * @param sz + * @return + */ + size_t capFor(const char* sz) { + if (!sz) return 0; + + return 4 + strlen(sz); + } + + + /** + * Returns the capacity required for a nullable C string + * + * @param sz + * @return + */ + size_t capForNullable(const char* sz) { + if (!sz) return 1; + + return 5 + strlen(sz); + } + + inline bool available(size_t len) const { return m_cursor + len <= m_used; } + + bool readBoolean() { + if (!available(1)) { + return false; + } + return m_buf[m_cursor++]; + } + + int8_t readByte() { + if (!available(1)) { + return false; + } + return (int8_t)m_buf[m_cursor++]; + } + + int16_t readShort() { + if (!available(2)) { + return 0; + } + int16_t out = m_buf[m_cursor++] << 8; + out |= m_buf[m_cursor++]; + + return out; + } + + int32_t readInt() { + if (!available(4)) { + return 0; + } + int32_t out = m_buf[m_cursor++] << 24; + out |= m_buf[m_cursor++] << 16; + out |= m_buf[m_cursor++] << 8; + out |= m_buf[m_cursor++]; + return out; + } + + float readFloat() { + if (!available(4)) { + return 0; + } + int32_t bits = m_buf[m_cursor++] << 24; + bits |= m_buf[m_cursor++] << 16; + bits |= m_buf[m_cursor++] << 8; + bits |= m_buf[m_cursor++]; + + // Hey, maybe this will work... + return *((float*)(&bits)); + } + + size_t readString(char* sz, uint32_t max) { + if (!sz) return 0; + + auto len = (size_t)readInt(); + if (!available(len)) { + return 0; + } + for (int i=0; i m_used) { + return; + } + + memcpy(dest, m_buf + m_cursor, len); + m_cursor += len; + } + + /** + * Reads a 4 byte color value, ARGB, discarding the first byte + * + * @return + */ + RgbColor readColor() { + RgbColor out(0,0,0); + + if (!available(4)) { + return out; + } + + // Ignore Alpha + m_cursor++; + + // Get the RGB + memcpy((void*)&out, m_buf + m_cursor, 3); + m_cursor += 3; + + return out; + } + + + Header readHeader() { + Header h = {}; + h.id = readShort(); + h.frameSize = readShort(); + h.msgSize = readInt(); + h.frameOffset = readInt(); + return h; + } + + ////////////////// + void injectFragmentingHeader(); + void rewindToPostFragmentingHeader(); + bool isSingleFragmentMessage(); + + /** + * Adds a fragment to a message of the same id. The data from the + * fragment is copied into the internal storage of the receiving + * message so the fragment can disappear without worries. + * + * In normal circumstances we think the fragments will be in order. + * If that is not the case then a system wide counter is incremented + * just so that the condition is visible externally, but the data + * is still dutifully copied in at the proper location. Presuming the + * world is a happy place where packets arrive in order, the return + * value for this function indicates that the packet filled the + * last position in the message and thus we can sort of assume + * that the message is maybe probably all here and ready for dispatch. + * + * As the subsequent fragments are copied in the internal cursor + * position isn't changed. + * + * @param pFragment + * @return + */ + bool addFragment(Msg* pFragment); + ////////////////// + + // Msg* parse(); + + virtual void log(const char* name = "Unknown") { + ESP_LOGD(TAG_MSG, "%s Msg cap=%d used=%d cursor=%d type=%d dest=%s msgId=%d", name, m_capacity, m_used, + m_cursor, m_capacity > 13 ? m_buf[13] : -1, dest.toString(), + (((int) m_buf[0]) & 0xff) * 256 + ((int) m_buf[1] & 0xff)); + ESP_LOG_BUFFER_HEXDUMP(TAG_MSG, m_buf, m_used, ESP_LOG_VERBOSE); + } + + virtual ~Msg() { } + + uint8_t* cursor() { return m_buf + m_cursor; } + +private: + uint8_t m_refCount = 1; + uint8_t* m_buf = nullptr; + + size_t m_capacity = 0; + size_t m_used = 0; + size_t m_cursor = 0; +}; + + +class BrainHelloMsg : public Msg { +public: + BrainHelloMsg(const char *brainId, + const char *panelName, + const char *firmwareVersion, + const char *idfVersion) { + // Need capacity for: + // id byte + // brainId string + // panelName NullableString (adds 1 byte boolean) + // firmwareVersion string + // idfVersion string + if (prepCapacity( + 1 + + capFor(brainId) + + capForNullable(panelName) + + capForNullable(firmwareVersion) + + capForNullable(idfVersion) + )) { + writeByte(static_cast(Msg::Type::BRAIN_HELLO)); + + writeString(brainId); + writeNullableString(panelName); + writeNullableString(firmwareVersion); + writeNullableString(idfVersion); + } + } + + virtual void log(const char* name = "") { + Msg::log("BrainHelloMsg"); + } +}; + +class PingMsg : public Msg { +public: + PingMsg(const uint8_t* data, size_t dataLen, bool isPong = false) { + if (prepCapacity(1 + 4 + dataLen)) { + writeByte(static_cast(Msg::Type::PING)); + writeBoolean(isPong); + writeBytes(data, dataLen); + } + } + + virtual void log(const char* name = "") { + Msg::log("PingMsg"); + } +}; + + +#endif //BRAIN_MSG_H diff --git a/brain/sw/components/net/include/msg_handler.h b/brain/sw/components/net/include/msg_handler.h new file mode 100644 index 0000000000..e5a6de3a88 --- /dev/null +++ b/brain/sw/components/net/include/msg_handler.h @@ -0,0 +1,24 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#ifndef BRAIN_MSG_HANDLER_H +#define BRAIN_MSG_HANDLER_H + +#include "msg.h" + +/** + * Interface class for things that can handle messages - probably just the Brain + * class. + */ +class MsgHandler { +public: + /** + * Subclasses need to implement this method. + */ + virtual void handleMsg(Msg* pMsg) = 0; + +}; + + +#endif //PLAYA_MSG_HANDLER_H diff --git a/brain/sw/components/net/include/msg_slinger.h b/brain/sw/components/net/include/msg_slinger.h new file mode 100644 index 0000000000..5152c87145 --- /dev/null +++ b/brain/sw/components/net/include/msg_slinger.h @@ -0,0 +1,73 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#ifndef BRAIN_MSG_SLINGER_H +#define BRAIN_MSG_SLINGER_H + +#include "brain_common.h" + +#include "esp_event.h" + +#include "msg.h" +#include "msg_handler.h" + +#include "tcpip_adapter.h" + +class IpPort; + +class MsgSlinger { +public: + void start(uint16_t port, TaskDef input, TaskDef output); + + /** + * Will cause all tasks to exit. They can't be restarted. + */ + void stop() { m_timeToDie = true; } + + /** + * Sends a message to a given address and port. A reference is added to the message. + * + * @param ipPort + * @param msg + * @return + */ + esp_err_t sendMsg(Msg* msg); + + /** + * Registers a handler which will receive messages as they arrive. + * + * @param handler + */ + void registerHandler(MsgHandler* handler) { m_handler = handler; } + + void _gotIp(int32_t id, void* data); + void _inputPump(); + void _handleNetOut(Msg *pMsg); + +private: + bool m_timeToDie = false; + + uint16_t m_port; + int m_sock = -1; + + ip4_addr_t m_broadcastEth; + ip4_addr_t m_broadcastSta; + + esp_event_loop_args_t m_argsOutputLoop; + esp_event_loop_handle_t m_hOutputLoop; + + // There can be only one (for now) + MsgHandler* m_handler; + Msg* m_pFraggedMsg; + int16_t m_nFraggedMsgId; + + void bindSocket(); + void updateBroadcasts(); + + void handleNetIn(Msg *pMsg); + void dispatch(Msg* pMsg); +}; + + +#endif //BRAIN_MSG_SLINGER_H diff --git a/brain/sw/components/net/include/net_interface.h b/brain/sw/components/net/include/net_interface.h new file mode 100644 index 0000000000..8aa93bc015 --- /dev/null +++ b/brain/sw/components/net/include/net_interface.h @@ -0,0 +1,128 @@ +// +// Created by Tom Seago on 2019-07-11. +// + +#pragma once + +#include +#include + +class NetInterface; + +#define TAG_NET_INTERFACE "#netint" + +class NetInterfaceListener { +public: + virtual void netIntLinkUp(NetInterface* interface) = 0; + virtual void netIntLinkDown(NetInterface* interface) = 0; + virtual void netIntStart(NetInterface* interface) = 0; + virtual void netIntStop(NetInterface* interface) = 0; + + virtual void netIntGotAddr(NetInterface* interface, const tcpip_adapter_ip_info_t* info) = 0; +}; + +class NetInterface { +public: + virtual const char* name() = 0; + + NetInterfaceListener* listener() { return m_listener; } + void setListener(NetInterfaceListener* listener) { m_listener = listener; } + + virtual void setEnabled(bool enabled) { + if (!ensureInited()) return; + if (enabled == m_isEnabled) return; + + m_isEnabled = enabled; + enableChanged(); + } + virtual bool isEnabled() { return m_isEnabled; } + + virtual void enableDHCP() { + if (!ensureInited()) return; + if (m_dhcpEnabled) return; + + m_dhcpEnabled = true; + addressingChanged(); + }; + virtual bool isDHCPEnabled() { return m_dhcpEnabled; } + + virtual void staticIP(tcpip_adapter_ip_info_t* info) { + if (!ensureInited()) return; + if (!m_dhcpEnabled && + info->ip.addr == m_staticIp.ip.addr && + info->netmask.addr == m_staticIp.netmask.addr && + info->gw.addr == m_staticIp.gw.addr) { + return; + } + + m_dhcpEnabled = false; + m_staticIp = *info; + + addressingChanged(); + } + +protected: + bool m_isInited = false; + bool m_isEnabled = false; + + bool m_dhcpEnabled = true; + + tcpip_adapter_ip_info_t m_staticIp; + + NetInterfaceListener* m_listener = nullptr; + + /** + * Subclasses should override this allocate their initial resources. They + * should do very little memory allocation or resource configuration until + * this method is called. This lets interfaces be lazily initialized. + * + * If an error occurs during initialization they should return false. Otherwise + * true. + * + * This method will only be called once. Right now we're not bothering with + * the notion of de-allocating interfaces, but will probably add that in the + * future. + * + * @return success or failure of resource allocation. + */ + virtual bool init() { return true; } + + bool ensureInited() { + if (m_isInited) return true; + + if (init()) { + m_isInited = true; + } + + return m_isInited; + } + + virtual void enableChanged() = 0; + virtual void addressingChanged() = 0; + + void tellListenerIntLinkUp() { + if (!m_listener) return; + m_listener->netIntLinkUp(this); + } + + void tellListenerLinkDown() { + if (!m_listener) return; + m_listener->netIntLinkDown(this); + } + + void tellListenerStart() { + if (!m_listener) return; + m_listener->netIntStart(this); + } + + void tellListenerStop() { + if (!m_listener) return; + m_listener->netIntStop(this); + } + + void tellListenerGotAddr(const tcpip_adapter_ip_info_t* info) { + if (!m_listener) return; + m_listener->netIntGotAddr(this, info); + }; + +}; \ No newline at end of file diff --git a/brain/sw/components/net/include/net_priv.h b/brain/sw/components/net/include/net_priv.h new file mode 100644 index 0000000000..ec3d85d60a --- /dev/null +++ b/brain/sw/components/net/include/net_priv.h @@ -0,0 +1,17 @@ +// +// Created by Tom Seago on 2019-06-03. +// + +#ifndef NET_PRIV_H +#define NET_PRIV_H + +#include +#include +#include +#include + +#include + +#define TAG TAG_NET + +#endif // NET_PRIV_H diff --git a/brain/sw/components/net/include/net_transport.h b/brain/sw/components/net/include/net_transport.h new file mode 100644 index 0000000000..8658466d1b --- /dev/null +++ b/brain/sw/components/net/include/net_transport.h @@ -0,0 +1,108 @@ +// +// Created by Tom Seago on 2019-08-05. +// +#pragma once + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "brain_common.h" +#include "eth_interface.h" +#include "wifi_sta_interface.h" +#include "wifi_ap_interface.h" + +class NetTransport : public NetInterfaceListener { +public: + NetTransport(); + + /** + * Initializes the transport layer. Should be called at initial boot + * before anything that will want to use the tcpip adapter is started + * so that it can start the adapter itself. + * + * It should be called after the default event loop has been created. + * + * It does not bring up any interfaces. That can happen manually by + * getting each interface through the various accessor methods, or + * an entire configuration of interfaces can be set using the + * reconfigure() function. + */ + void start(TaskDef taskDef); + + /** + * Get the ethernet interface. + * + * @return + */ + NetInterface* eth() { + if (!m_pEth) { + m_pEth = new EthInterface(); + m_pEth->setListener(this); + } + return m_pEth; + } + + /** + * Get the wifi STA interface. + * + * @return + */ + NetInterface* wifiSta() { + if (!m_pWifiSta) { + m_pWifiSta = new WifiStaInterface(); + m_pWifiSta->setListener(this); + } + return m_pWifiSta; + } + + /** + * Get the wifi AP interface. + * + * @return + */ + NetInterface* wifiAp() { + if (!m_pWifiAp) { + m_pWifiAp = new WifiApInterface(); + m_pWifiAp->setListener(this); + } + return m_pWifiAp; + } + + /** + * Disables all interfaces. + */ + void stopAll(); + + /** + * Reconfigures all of the interfaces using the supplied JSON data. + * + * TODO: Figure out how to supply JSON data from one of the IDF JSON parsers + */ + void reconfigure(); + + /** + * Internal task method. Provides a task context for the handling of + * various interface change related events. + */ + void _interfaceTask(); + + void netIntLinkUp(NetInterface *interface) override; + + void netIntLinkDown(NetInterface *interface) override; + + void netIntStart(NetInterface *interface) override; + + void netIntStop(NetInterface *interface) override; + + void netIntGotAddr(NetInterface *interface, const tcpip_adapter_ip_info_t *info) override; + +private: + TaskHandle_t m_hInterfaceTask = nullptr; + + EthInterface* m_pEth = nullptr; + WifiStaInterface* m_pWifiSta = nullptr; + WifiApInterface* m_pWifiAp = nullptr; + + bool m_ethUp = false; + +}; \ No newline at end of file diff --git a/brain/sw/components/net/include/ota_fetcher.h b/brain/sw/components/net/include/ota_fetcher.h new file mode 100644 index 0000000000..927eb485b1 --- /dev/null +++ b/brain/sw/components/net/include/ota_fetcher.h @@ -0,0 +1,41 @@ +// +// Created by Tom Seago on 2019-08-15. +// + +#pragma once + +#include + +#include "brain_common.h" +#include +#include + +/** + * Uses the lower level http client to go out and fetch a new + * image. This is basically what esp_https_ota is supposed to + * do but we have found it to generate a lot of seemingly + * incorrect errors. Uploaded via the httpd seems more + * reliable, so hence doing this ourselves. + */ +class OtaFetcher { +public: + void fetchFromUrl(const char* szBuf, bool fakeWrites = false); + + void _fetchTask(); + esp_err_t _httpEvent(esp_http_client_event_t* evt); + +private: + bool m_fakeWrites; + char *m_szUrl; + char *m_scratch; + int m_contentLength; + const esp_partition_t* m_updatePartition; + + timeval m_startTime; + timeval m_endTime; + + esp_ota_handle_t m_otaHandle; + esp_http_client_handle_t m_httpHandle; + + void cleanup(); +}; \ No newline at end of file diff --git a/brain/sw/components/net/include/wifi_ap_interface.h b/brain/sw/components/net/include/wifi_ap_interface.h new file mode 100644 index 0000000000..858d1e7349 --- /dev/null +++ b/brain/sw/components/net/include/wifi_ap_interface.h @@ -0,0 +1,35 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#pragma once + +#include "brain_common.h" + +#include +#include +#include + +#include "net_interface.h" +#include "esp_event.h" + +#include "lwip/err.h" +#include "lwip/sys.h" + + +class WifiApInterface : public NetInterface { +public: + void _evtHandler(esp_event_base_t evBase, int32_t evId, void *evData); + + const char *name() override { return "wifiAP"; } + +protected: + bool init() override; + + void enableChanged() override; + + void addressingChanged() override; + +private: + wifi_config_t m_wifiConfig; +}; \ No newline at end of file diff --git a/brain/sw/components/net/include/wifi_sta_interface.h b/brain/sw/components/net/include/wifi_sta_interface.h new file mode 100644 index 0000000000..c9f51acbed --- /dev/null +++ b/brain/sw/components/net/include/wifi_sta_interface.h @@ -0,0 +1,47 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#pragma once + +#include "brain_common.h" + +#include +#include +#include + +#include "net_interface.h" +#include "esp_event.h" + +#include "lwip/err.h" +#include "lwip/sys.h" + + +class WifiStaInterface : public NetInterface { +public: + void _evtHandler(esp_event_base_t evBase, int32_t evId, void *evData); + + const char *name() override { return "wifiSta"; } + + void setCredentials(const char* ssid, const char* password); + + void _taskLongPoll(); + +protected: + bool init() override; + + void enableChanged() override; + + void addressingChanged() override; + + void startLongTermPoll(); + +private: + wifi_config_t m_wifiConfig; + bool m_started = false; + bool m_connected = false; + int m_numFailedConnects; + + bool m_haveLTPTask = false; + TaskHandle_t m_hLTPTask; +}; \ No newline at end of file diff --git a/brain/sw/components/net/ip_port.cpp b/brain/sw/components/net/ip_port.cpp new file mode 100644 index 0000000000..c3959388b5 --- /dev/null +++ b/brain/sw/components/net/ip_port.cpp @@ -0,0 +1,30 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include "ip_port.h" + +#include "net_priv.h" + +// #include "lwip/sys.h" +#include + +const IpPort IpPort::BroadcastPinky(8002); + +std::ostream &operator<<(std::ostream &os, const IpPort &port) { + os << "m_addr: " << port.m_addr.sin_addr.s_addr; + return os; +} + + +const char* +IpPort::toString() +{ + static char addr[128]; + + inet_ntoa_r(m_addr.sin_addr.s_addr, addr, sizeof(addr) - 1); + int len = strlen(addr); + sprintf(&addr[len], ":%d", ntohs(m_addr.sin_port)); + + return addr; +} diff --git a/brain/sw/components/net/msg.cpp b/brain/sw/components/net/msg.cpp new file mode 100644 index 0000000000..bd71a52fad --- /dev/null +++ b/brain/sw/components/net/msg.cpp @@ -0,0 +1,107 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include "msg.h" + +#include "net_priv.h" + +#undef TAG +#define TAG TAG_MSG + +bool +Msg::prepCapacity(size_t atLeast) { + if (!m_capacity || !m_buf) { + m_buf = (uint8_t*)malloc(atLeast); + if (!m_buf) { + ESP_LOGE(TAG, "OOM in prepCapacity"); + } else { + m_capacity = atLeast; + + } + } else if (m_capacity < atLeast) { + uint8_t* newBuf = (uint8_t *)realloc(m_buf, atLeast); + if (newBuf) { + m_buf = newBuf; + m_capacity = atLeast; + } else { + ESP_LOGE(TAG, "OOM in prepCapacity 2"); + } + } // else it is fine + + return m_capacity >= atLeast; +} + +void Msg::injectFragmentingHeader() { + static uint8_t messageId = 0; + + if (prepCapacity(m_used + 12)) { + size_t msgUsed = m_used; + memmove(m_buf + 12, m_buf, msgUsed); + + rewind(); + writeShort(messageId++); + writeShort(msgUsed); + writeInt(msgUsed); + writeInt(0); + + m_used = msgUsed + 12; + } +} + +void Msg::rewindToPostFragmentingHeader() { + m_cursor = 12; +} + +bool Msg::isSingleFragmentMessage() { + m_cursor = 2; + auto frameSize = readShort(); + auto totalSize = readInt(); + auto offset = readInt(); + + return ( offset == 0 && frameSize == totalSize ); +} + +bool Msg::addFragment(Msg* pFragment) { + if (!pFragment) { + return false; + } + + // Slightly inefficient but let's grab the header of this new guy + pFragment->m_cursor = 0; + auto head = pFragment->readHeader(); + + size_t newCap = m_used + pFragment->m_used + 1; + if (!prepCapacity(newCap)) { + ESP_LOGE(TAG, "Unable to increase message cap for new fragment from %d to %d", + m_capacity, newCap); + return false; + } + + // A little bit of safety never hurts + if (head.frameOffset < 0 || + head.frameOffset + head.frameSize > m_capacity) { + // Crazy pants. Don't do it. + return false; + } + + // Seems legit, let's copy the memory + uint8_t* dest = m_buf + head.frameOffset; + uint8_t* src = pFragment->m_buf + pFragment->m_cursor; + + // We can't use head.frameSize directly because that came from the network + // and therefore might be a lie. Thus we need to use the amount of + // data that we received in the fragment directly. + size_t len = pFragment->m_used - pFragment->m_cursor; + + memcpy(dest, src, len); + m_used += len; + + // Now does that packet represent itself as the last? + if (head.frameOffset + head.frameSize == head.msgSize) { + // Sure, it's the last + return true; + } + + return false; +} \ No newline at end of file diff --git a/brain/sw/components/net/msg_handler.cpp b/brain/sw/components/net/msg_handler.cpp new file mode 100644 index 0000000000..633c9cb5e6 --- /dev/null +++ b/brain/sw/components/net/msg_handler.cpp @@ -0,0 +1,7 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include "msg_handler.h" + +#include "net_priv.h" diff --git a/brain/sw/components/net/msg_slinger.cpp b/brain/sw/components/net/msg_slinger.cpp new file mode 100644 index 0000000000..97cf03529c --- /dev/null +++ b/brain/sw/components/net/msg_slinger.cpp @@ -0,0 +1,379 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include +#include "msg_slinger.h" + +#include "net_priv.h" + +#include "lwip/sockets.h" +#include "lwip/ip_addr.h" + +void msg_slinger_input_pump(void* pParam) { + ((MsgSlinger *) pParam)->_inputPump(); +} + +ESP_EVENT_DEFINE_BASE(BRAIN_NETOUT); +static const int32_t NETOUT_READY = 1; + +// Glue is good +void got_ip_address(void *arg, esp_event_base_t base, int32_t id, void *data) { + ((MsgSlinger *) arg)->_gotIp(id, data); +} + +// Glue function FTW +void handle_net_out(void *arg, esp_event_base_t base, int32_t id, void *data) { + ESP_LOGD(TAG, "handle_net_out arg=%p data=%p", arg, data); + if (data) { + Msg** ppMsg = (Msg**)data; + ESP_LOGD(TAG, " *ppMsg=%p ", *ppMsg); + + ((MsgSlinger *) arg)->_handleNetOut(*ppMsg); + } else { + ESP_LOGE(TAG, "Got a data out event with invalid data parameter"); + } +} + +void +MsgSlinger::start(uint16_t port, TaskDef input, TaskDef output) { + m_port = port; + + //////////////// + bindSocket(); + + _gotIp(0, nullptr); + // Whenever our IP changes we need to re-bind (I think?) + ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, got_ip_address, this)); + ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, got_ip_address, this)); + + + //////////////// + ESP_LOGD(TAG, "Creating input pump task"); + auto result = input.createTask(msg_slinger_input_pump, this, nullptr); + if (result != pdPASS) { + ESP_LOGE(TAG, "Failure starting input pump task %d", result); + } + + //////////////// + m_argsOutputLoop.queue_size = 10; + m_argsOutputLoop.task_name = output.name; + m_argsOutputLoop.task_priority = output.priority; + m_argsOutputLoop.task_stack_size = output.stack; + // Not setting a core id at this time... + + m_hOutputLoop = nullptr; + esp_err_t err = esp_event_loop_create(&m_argsOutputLoop, &m_hOutputLoop); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Failed starting output event loop"); + return; + } + + err = esp_event_handler_register_with(m_hOutputLoop, BRAIN_NETOUT, NETOUT_READY, handle_net_out, this); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Failed to register handler"); + return; + } +} + +void +MsgSlinger::_gotIp(int32_t id, void* data) { + + ESP_LOGI(TAG, "gotIP(%d, %p)", id, data); + + tcpip_adapter_ip_info_t ethInfo = {}; + tcpip_adapter_ip_info_t staInfo = {}; + + if (data) { + // It's a valid system event + auto event = (ip_event_got_ip_t *) data; + + if (id == IP_EVENT_ETH_GOT_IP) { + ethInfo = event->ip_info; + } + if (id == IP_EVENT_STA_GOT_IP) { + staInfo = event->ip_info; + } + } else { + ESP_LOGI(TAG, "Startup - getting info for any interfaces already up"); + if (tcpip_adapter_is_netif_up(TCPIP_ADAPTER_IF_ETH)) { + tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_ETH, ðInfo); + } + + if (tcpip_adapter_is_netif_up(TCPIP_ADAPTER_IF_STA)) { + tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_STA, &staInfo); + } + } + + ESP_LOGW(TAG, "Ethernet " IPSTR " " IPSTR " " IPSTR, + IP2STR(ðInfo.ip), IP2STR(ðInfo.netmask), IP2STR(ðInfo.gw) ); + + ESP_LOGW(TAG, "Wifi " IPSTR " " IPSTR " " IPSTR, + IP2STR(&staInfo.ip), IP2STR(&staInfo.netmask), IP2STR(&staInfo.gw) ); + + if (ethInfo.netmask.addr) { + // An updated address on the ethernet interface + m_broadcastEth.addr = ~ethInfo.netmask.addr | ethInfo.ip.addr; + ESP_LOGI(TAG, "Updated broadcast address for ethernet to " IPSTR, IP2STR(&m_broadcastEth)); + } + + if (staInfo.netmask.addr) { + // An updated address on the STA interface + m_broadcastSta.addr = ~staInfo.netmask.addr | staInfo.ip.addr; + ESP_LOGI(TAG, "Updated broadcast address for sta to " IPSTR, IP2STR(&m_broadcastSta)); + } +} + +void +MsgSlinger::bindSocket() { + ESP_LOGW(TAG, "Binding socket. m_sock=%d", m_sock); + if (m_sock) { + close(m_sock); + m_sock = 0; + } + + ESP_LOGI(TAG, "Creating socket"); + m_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); + if (m_sock < 0) { + ESP_LOGE(TAG, "Unable to create socket: errno=%d", errno); + return; + } + + struct sockaddr_in addr = {}; + addr.sin_family = AF_INET; + addr.sin_port = htons(m_port); +// addr.sin_addr.s_addr = htonl(INADDR_BROADCAST); + addr.sin_addr.s_addr = htonl(INADDR_ANY); + + ESP_LOGD(TAG, "Socket created"); + + int err = bind(m_sock, (struct sockaddr *)&addr, sizeof(addr)); + if (err < 0) { + ESP_LOGE(TAG, "Unable to create socket: errno=%d", errno); + return; + } + + char addr_str[128]; + inet_ntoa_r(addr.sin_addr, addr_str, sizeof(addr_str) - 1); + ESP_LOGD(TAG, "Socket %d bound to %s:%d", m_sock, addr_str, m_port); +} + +void +MsgSlinger::_inputPump() { + ESP_LOGI(TAG, "_inputPump starting"); + + while(!m_timeToDie) { + ESP_LOGD(TAG, "Waiting for data in _inputPump m_sock=%d", m_sock); + + // Get a new input buffer message and make sure it has a reasonable + // capacity. + Msg* pMsg = Msg::obtain(); + pMsg->prepCapacity(Msg::FRAGMENT_MAX); + + socklen_t socklen = pMsg->dest.size(); + + // Because of the IN/OUT nature of the address field, we must make + // sure that we always reset it such that we are receiving packets + // from all senders + pMsg->dest.addr_in()->sin_addr.s_addr = htonl(INADDR_ANY); + + int len = recvfrom(m_sock, pMsg->buffer(), pMsg->capacity() - 1, 0, + pMsg->dest.addr(), &socklen); + + if (!m_timeToDie) { + if (len < 0) { + ESP_LOGE(TAG, "recvfrom failed: %d %s", errno, strerror(errno)); + // Delay at least a little bit so the rest of the system isn't horribly + // gunked up on an endless error scenario. Presumably the socket + // will get re-bound at some point because an interface comes back up. + vTaskDelay(pdMS_TO_TICKS(100)); + break; + } else { + pMsg->setUsed(len); + + // inet_ntoa_r(pMsg->dest.addr_in()->sin_addr.s_addr, addr_str, sizeof(addr_str) - 1); + + //ESP_LOGI(TAG, "Received %d bytes from %s:", len, addr_str); + ESP_LOGI(TAG, "Received %d bytes from %s:", len, pMsg->dest.toString()); + gSysMon.increment(COUNTER_UDP_RECV); + + handleNetIn(pMsg); + } + } + pMsg->release(); + } + + // Delete ourself! + vTaskDelete(nullptr); +} + +void +MsgSlinger::handleNetIn(Msg *pMsg) { + if (!pMsg) return; + + // This message contains a header, so let's parse it + auto header = pMsg->readHeader(); + ESP_LOGD(TAG, "Read a msg header msgId=%d", header.id); + + ESP_LOGD(TAG, "id=( %d ).size=%d frameOffset=%d frameSize=%d", + header.id, header.msgSize, header.frameOffset, header.frameSize); + + if (header.frameOffset == 0) { + // It is a new message + if (header.frameSize == header.msgSize) { + // It is a single message so we can dispatch it as is + ESP_LOGD(TAG, "Dispatching single fragment message"); + gSysMon.increment(COUNTER_MSG_SINGLE_OK); + dispatch(pMsg); + ESP_LOGD(TAG, "Dispatch complete for single fragment message"); + } else { + // It is merely the first fragment, so prepare ourselves + // for that. + + // Allocate space for the whole message + if (!pMsg->prepCapacity(header.msgSize + Msg::HEADER_SIZE)) { + ESP_LOGE(TAG, "Unable to prep a fragged message of size %d, dropping it", header.msgSize); + gSysMon.increment(COUNTER_MSG_LOST); + return; + } + ESP_LOGD(TAG, "Got first segment of a fragmented message"); + + // Cool, we hold onto this message then (making sure not to leak + // anything that was previously hanging around) + if (m_pFraggedMsg) { + ESP_LOGW(TAG, "Dropping old message ( %d ) and replacing with new one ( %d)", + m_nFraggedMsgId, header.id); + gSysMon.increment(COUNTER_MSG_LOST); + m_pFraggedMsg->release(); + } + m_pFraggedMsg = pMsg; + m_pFraggedMsg->addRef(); + + m_nFraggedMsgId = header.id; + } + } else { + // It is a continuing fragment of an old message + if (!m_pFraggedMsg) { + ESP_LOGW(TAG, "Got continuation fragment for ( %d ) but am waiting for ( %d )", header.id, m_nFraggedMsgId); + gSysMon.increment(COUNTER_MSG_BAD_ID); + return; + } + + if (header.id != m_nFraggedMsgId) { + ESP_LOGW(TAG, "Got continuation of %d but have %d, dropping both", header.id, m_nFraggedMsgId); + gSysMon.increment(COUNTER_MSG_BAD_ID); + m_pFraggedMsg->release(); + m_pFraggedMsg = nullptr; + return; + } + + // Add this fragment, which is presumably the next fragment, and + // if it happens to be the last fragment, then we dispatch + ESP_LOGD(TAG, "Adding a fragment to an existing message"); + if (m_pFraggedMsg->addFragment(pMsg)) { + // Oh hey, we should dispatch it! + ESP_LOGD(TAG, "Dispatching fragmented message %d", m_pFraggedMsg->used()); + gSysMon.increment(COUNTER_MSG_FRAG_OK); + dispatch(m_pFraggedMsg); + m_pFraggedMsg->release(); + m_pFraggedMsg = nullptr; + } + } +} + +void +MsgSlinger::dispatch(Msg *pMsg) { + if (m_handler) { + m_handler->handleMsg(pMsg); + } else { + ESP_LOGW(TAG, "Got input but no handler registered"); + } +} + + +void +MsgSlinger::_handleNetOut(Msg *pMsg) { + if (!pMsg) return; + + if (m_timeToDie) return; + + ESP_LOGI(TAG, "Sending this message msgId=%d", (((int) pMsg->buffer()[0]) & 0xff) * 256 + ((int) pMsg->buffer()[1] & 0xff)); + pMsg->log(); + + if (m_sock < 0) { + ESP_LOGE(TAG, "Can not send this message because m_sock(%d) is < 0", m_sock); + pMsg->release(); + return; + } + + ESP_LOGI(TAG, "Message len=%d to %s", pMsg->used(), pMsg->dest.toString()); +// if (pMsg->dest.addr_in()->sin_addr.s_addr == INADDR_BROADCAST) { +// // Send it on each interface using that interface's appropriate address +// bool sentOnEth = false; +// if (m_broadcastEth.addr) { +// pMsg->dest.addr_in()->sin_addr.s_addr = m_broadcastEth.addr; +// ESP_LOGD(TAG, "Eth sending to %s", pMsg->dest.toString()); +// auto err = sendto(m_sock, pMsg->buffer(), pMsg->used(), 0, +// pMsg->dest.addr(), pMsg->dest.size()); +// if (err < 0) { +// ESP_LOGE(TAG, "Eth error occurred sending to %s : m_sock=%d %d %s", +// pMsg->dest.toString(), m_sock, errno, strerror(errno)); +// } else { +// ESP_LOGD(TAG, "Eth broadcast success to %s", pMsg->dest.toString()); +// sentOnEth = true; +// } +// } +// +// if (m_broadcastSta.addr && (m_broadcastSta.addr != m_broadcastEth.addr || !sentOnEth)) { +// // Sta has a different address so we need to send it there +//// ESP_LOGD(TAG, "Wifi sending to " IPSTR, IP2STR(&m_broadcastSta)); +// pMsg->dest.addr_in()->sin_addr.s_addr = m_broadcastSta.addr; +//// pMsg->dest.addr_in()->sin_addr.s_addr &= 0x0affffff; +// ESP_LOGD(TAG, "Wifi sending to %s", pMsg->dest.toString()); +// auto err = sendto(m_sock, pMsg->buffer(), pMsg->used(), 0, +// pMsg->dest.addr(), pMsg->dest.size()); +// if (err < 0) { +// ESP_LOGE(TAG, "Wifi error occurred sending to %s : m_sock=%d %d %s", +// pMsg->dest.toString(), m_sock, errno, strerror(errno)); +// } else { +// ESP_LOGD(TAG, "Wifi broadcast success to %s", pMsg->dest.toString()); +// } +// } +// } else { + // It's not a broadcast so we don't have to do that funny business + // of figuring out which address to send it to. + ESP_LOGD(TAG, "Sending to %s", pMsg->dest.toString() ); + auto err = sendto(m_sock, pMsg->buffer(), pMsg->used(), 0, + pMsg->dest.addr(), pMsg->dest.size()); + if (err < 0) { + ESP_LOGE(TAG, "Error occurred sending to %s : m_sock=%d %d %s", + pMsg->dest.toString(), m_sock, errno, strerror(errno)); + } else { + gSysMon.increment(COUNTER_MSG_SENT); + ESP_LOGD(TAG, "Message sent to %s", pMsg->dest.toString() ); + } +// } + + pMsg->release(); +} + +esp_err_t +MsgSlinger::sendMsg(Msg *pMsg) { + if (m_timeToDie) return ESP_FAIL; + + if (!pMsg) { + ESP_LOGW(TAG, "sendMsg this=%p pMsg=%p len=%d dest=%s", this, pMsg, pMsg->used(), pMsg->dest.toString()); + return ESP_FAIL; + } + + // We just fire an event so that the output pump will take care + // of it later and the sending task doesn't block + + pMsg->addRef(); // Will be released on the other side of the event. + + ESP_LOGI(TAG, "sendMsg this=%p pMsg=%p len=%d dest=%s", this, pMsg, pMsg->used(), pMsg->dest.toString()); + + esp_event_post_to(m_hOutputLoop, BRAIN_NETOUT, NETOUT_READY, &pMsg, sizeof(pMsg), pdMS_TO_TICKS(500)); + + return ESP_OK; +} diff --git a/brain/sw/components/net/net_transport.cpp b/brain/sw/components/net/net_transport.cpp new file mode 100644 index 0000000000..0beb2959fc --- /dev/null +++ b/brain/sw/components/net/net_transport.cpp @@ -0,0 +1,193 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#include "net_transport.h" +#include "net_priv.h" + +#include +#include +#include +#include +#include + + +//////////////////////////////////////////////////////////// +// Glue functions that let us use C++ functions with the IDF +// C apis. + +void +glue_interfaceTask(void *pArg) { + ((NetTransport*)pArg)->_interfaceTask(); +} + +//////////////////////////////////////////////////////////// + +NetTransport::NetTransport() { + +} + +void +NetTransport::start(TaskDef taskDef) { + // Initialize the tcpip adapter before anyone else does. + tcpip_adapter_init(); + + // Create our task which will register various event listeners + auto result = taskDef.createTask(glue_interfaceTask, this, &m_hInterfaceTask); + if (result != pdPASS) { + ESP_LOGE(TAG, "Failed to create network interface task: %d", result); + } else { + ESP_LOGI(TAG, "Created network interface task"); + } +} + + +void +NetTransport::_interfaceTask() { + // TODO: Register interest in IP related events + // TODO: Register interest in interface control events + +// vTaskDelay(pdMS_TO_TICKS(100)); +// +// ESP_LOGE(TAG, "Doing forced 1s after boot reconfiguration"); +// // reconfigure(); +// +// vTaskDelay(pdMS_TO_TICKS(500)); +// +// gpio_config_t config; +// config.pin_bit_mask = (uint64_t)1 << 15; +// config.mode = GPIO_MODE_OUTPUT; +// config.pull_up_en = GPIO_PULLUP_ENABLE; +// config.pull_down_en = GPIO_PULLDOWN_DISABLE; +// config.intr_type = GPIO_INTR_DISABLE; +// +// ESP_ERROR_CHECK_WITHOUT_ABORT(gpio_config(&config)); +// +// ESP_LOGE(TAG, "Resetting phy power"); +// +// ESP_ERROR_CHECK_WITHOUT_ABORT(gpio_set_level(GPIO_NUM_15, 0)); +// +// vTaskDelay(pdMS_TO_TICKS(200)); +// +// ESP_ERROR_CHECK_WITHOUT_ABORT(gpio_set_level(GPIO_NUM_15, 1)); +// +// vTaskDelay(pdMS_TO_TICKS(200)); +// +// ESP_LOGE(TAG, "Reset of phy power done, re-init of driver "); + + // Turn on the clock +// periph_module_enable(PERIPH_EMAC_MODULE); +// emac_ext_dev_t extRegs; +// emac_hal_context_t context; +// context.ext_regs = &extRegs; +// emac_hal_lowlevel_init(&context); +// +// ESP_LOGE(TAG, "Setting pin %d to low", CONFIG_ETH_PHY_RST_GPIO); +// gpio_pad_select_gpio(CONFIG_ETH_PHY_RST_GPIO); +// gpio_set_direction((gpio_num_t)CONFIG_ETH_PHY_RST_GPIO, GPIO_MODE_OUTPUT); +// gpio_set_level((gpio_num_t)CONFIG_ETH_PHY_RST_GPIO, 0); +// +// vTaskDelay(pdMS_TO_TICKS(500)); +// + ESP_LOGE(TAG, "Starting network drivers"); + reconfigure(); + + vTaskDelay(pdMS_TO_TICKS(20000)); + + ESP_LOGE(TAG, "Checking for ethernet link up"); + if (!m_ethUp) { + ESP_LOGE(TAG, "Ethernet link not up, restarting"); + +// ESP_LOGE(TAG, "========= Ethernet restart disabled for testing wifi ==========="); + brain_restart(30); + } else { + ESP_LOGE(TAG, "Ethernet up - cool"); + } + +// vTaskDelay(pdMS_TO_TICKS(1000)); +// +// ESP_LOGE(TAG, "Doing network drivers again"); +// reconfigure(); + + // if (m_pEth) { +// ESP_LOGE(TAG, "Disabling eth driver"); +// m_pEth->setEnabled(false); +// +// vTaskDelay(pdMS_TO_TICKS(200)); +// ESP_LOGE(TAG, "Re-enabling eth driver"); +// +// m_pEth->setEnabled(true); +// } else { +// ESP_LOGE(TAG, "No eth driver"); +// } + + // Just in case we ever exit, we're supposed to do this + vTaskDelete(NULL); +} + + +void +NetTransport::netIntLinkUp(NetInterface *interface) { + ESP_LOGI(TAG, "(task=%s) (%s) Link up", pcTaskGetTaskName(nullptr), interface->name()); + + if (interface == m_pEth) { + m_ethUp = true; + } +} + +void +NetTransport::netIntLinkDown(NetInterface *interface) { + ESP_LOGI(TAG, "(task=%s) (%s) Link down", pcTaskGetTaskName(nullptr), interface->name()); + + if (interface == m_pEth) { + m_ethUp = false; + } +} + +void +NetTransport::netIntStart(NetInterface *interface) { + ESP_LOGI(TAG, "(task=%s) (%s) Start", pcTaskGetTaskName(nullptr), interface->name()); +} + +void +NetTransport::netIntStop(NetInterface *interface) { + ESP_LOGI(TAG, "(task=%s) (%s) Stop", pcTaskGetTaskName(nullptr), interface->name()); +} + +void +NetTransport::netIntGotAddr(NetInterface *interface, const tcpip_adapter_ip_info_t *info) { + ESP_LOGI(TAG, "(task=%s) (%s) Got address, ip " IPSTR ", mask " IPSTR ", gw " IPSTR, + pcTaskGetTaskName(nullptr), interface->name(), + IP2STR(&info->ip), IP2STR(&info->ip), IP2STR(&info->ip)); +} + +void +NetTransport::stopAll() { + if (m_pEth) { + m_pEth->setEnabled(false); + } + if (m_pWifiSta) { + m_pWifiSta->setEnabled(false); + } + if (m_pWifiAp) { + m_pWifiAp->setEnabled(false); + } +} + +void +NetTransport::reconfigure() { + ESP_LOGI(TAG, "Reconfiguring network"); + stopAll(); + +#if BRAIN_ETHERNET_ENABLED + eth(); + m_pEth->setEnabled(true); +#endif + +// wifiSta(); +// m_pWifiSta->setCredentials(GlobalConfig.staSsid(), GlobalConfig.staPass()); +// m_pWifiSta->setEnabled(true); +// +// wifiAp(); +// m_pWifiAp->setEnabled(true); +} diff --git a/brain/sw/components/net/ota_fetcher.cpp b/brain/sw/components/net/ota_fetcher.cpp new file mode 100644 index 0000000000..a8887bd490 --- /dev/null +++ b/brain/sw/components/net/ota_fetcher.cpp @@ -0,0 +1,253 @@ +// +// Created by Tom Seago on 2019-08-15. +// + +#include +#include + +#include +#include +#include "errno.h" +#include + + +//#define SCRATCH_BUFSIZE 8192 +#define SCRATCH_BUFSIZE 1024 + +#define TAG TAG_OTA + +//////////////////////////////////////////////////////////// +// Glue functions that let us use C++ functions with the IDF +// C apis. + +void glue_fetchTask(void *pArg) { + ((OtaFetcher*)pArg)->_fetchTask(); +} + +esp_err_t glue_httpEvent(esp_http_client_event_t *evt) { + return ((OtaFetcher*)evt->user_data)->_httpEvent(evt); +} + +//////////////////////////////////////////////////////////// + + +void OtaFetcher::fetchFromUrl(const char *szBuf, bool fakeWrites) { + + gettimeofday(&m_startTime, nullptr); + + if (!szBuf || strlen(szBuf) == 0) { + ESP_LOGE(TAG, "No buffer supplied"); + return; + } + + if (m_szUrl) { + ESP_LOGE(TAG, "Looks like we have already started OTA. Not doing it again"); + return; + } + + m_szUrl = strdup(szBuf); + if (!m_szUrl) { + ESP_LOGE(TAG, "Unable to duplicate szBuf. No ota"); + return; + } + + m_fakeWrites = fakeWrites; + + TaskDef def = DefaultBrainTasks.otaFetcher; + auto tcResult = def.createTask(glue_fetchTask, this, nullptr); + if (tcResult != pdPASS) { + ESP_LOGE(TAG, "Failed to create otaFetcher %d", tcResult); + return; + } + +} + +void OtaFetcher::_fetchTask() { + + esp_err_t err = ESP_OK; + esp_http_client_config_t httpCfg{}; + + if (!m_szUrl) { + ESP_LOGE(TAG, "Trying to start ota fetch but url is null"); + cleanup(); + return; + } + ESP_LOGE(TAG, "Starting OTA fetch from URL %s", m_szUrl); + + m_scratch = (char *) malloc(SCRATCH_BUFSIZE); + if (!m_scratch) { + ESP_LOGE(TAG, "OTA OOM allocating scratch"); + cleanup(); + return; + } + + if (m_fakeWrites) { + ESP_LOGE(TAG, "Fake writes are enabled. Not starting OTA api"); + } else { + m_updatePartition = esp_ota_get_next_update_partition(nullptr); + if (!m_updatePartition) { + ESP_LOGE(TAG, "Unable to get a next ota update partition"); + cleanup(); + return; + } + + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_ota_begin(m_updatePartition, OTA_SIZE_UNKNOWN, &m_otaHandle)) != ESP_OK) { + cleanup(); + return; + } + ESP_LOGE(TAG, "ota_begin() call succeeded."); + + ESP_LOGI(TAG, " type = %d", m_updatePartition->type); + ESP_LOGI(TAG, " subtype = %d", m_updatePartition->subtype); + ESP_LOGI(TAG, " address = 0x%x", m_updatePartition->address); + ESP_LOGI(TAG, " size = %d", m_updatePartition->size); + ESP_LOGI(TAG, " label = %s", m_updatePartition->label); + } + + // Get our http client setup + httpCfg.url = m_szUrl; + httpCfg.event_handler = glue_httpEvent; + httpCfg.user_data = this; + + m_httpHandle = esp_http_client_init(&httpCfg); + if (!m_httpHandle) { + ESP_LOGE(TAG, "Failed to create http client"); + cleanup(); + return; + } + + err = esp_http_client_open(m_httpHandle, 0); + if (err != ESP_OK) { + ESP_LOGE(TAG, "OTA failed to open client: %s", esp_err_to_name(err)); + cleanup(); + return; + } + + int m_contentLength = esp_http_client_fetch_headers(m_httpHandle); + + // I feel like we should be looking for a 200 status code at this point... + + int total = 0; + int readLen = 0; + err = ESP_OK; + ESP_LOGI(TAG, "OTA m_contentLength = %d", m_contentLength); + + while (err == ESP_OK && total < m_contentLength) { + // Read some more...] + int toRead = MIN(SCRATCH_BUFSIZE, m_contentLength - total); + + gSysMon.startTiming(TIMING_OTA_HTTP_READ); + readLen = esp_http_client_read(m_httpHandle, m_scratch, toRead); + gSysMon.endTiming(TIMING_OTA_HTTP_READ); + + ESP_LOGW(TAG, "toRead=%d total=%d m_contentLength=%d readLen=%d", + toRead, total, m_contentLength, readLen); + if (readLen > 0) { + // Write this to ota + if (!m_fakeWrites) { + gSysMon.startTiming(TIMING_OTA_WRITE); + err = esp_ota_write(m_otaHandle, m_scratch, readLen); + gSysMon.endTiming(TIMING_OTA_WRITE); + + if (err != ESP_OK) { + ESP_LOGE(TAG, "OTA Write error %s", esp_err_to_name(err)); + } + } + total += readLen; + } else if (readLen == 0) { + ESP_LOGE(TAG, "Got readLen=0, errno=%d %s", errno, strerror(errno)); + if (errno != 0) { + err = ESP_FAIL; + } + } else { + ESP_LOGE(TAG, "Seems like the server closed the connection. readLen was 0. errno=%d : %s", + errno, strerror(errno)); + err = ESP_FAIL; + } + } + + gettimeofday(&m_endTime, nullptr); + + time_t elapsed = m_endTime.tv_sec - m_startTime.tv_sec; + ESP_LOGE(TAG, "Read complete. %d bytes in %ld seconds = %ld bytes/sec", + total, elapsed, total / elapsed); + + esp_http_client_close(m_httpHandle); + esp_http_client_cleanup(m_httpHandle); + + cleanup(); +} + +void OtaFetcher::cleanup() { + if (m_szUrl) { + free(m_szUrl); + m_szUrl = nullptr; + } + + if (m_scratch) { + free(m_scratch); + m_scratch = nullptr; + } + + if (m_otaHandle) { + ESP_LOGW(TAG, "OTA Done. End it"); + auto err = esp_ota_end(m_otaHandle); + if (err != ESP_OK) { + ESP_LOGE(TAG, "OTA End error result = %d", err); + } else { + ESP_LOGE(TAG, "==== Valid OTA received ===="); + auto setResult = esp_ota_set_boot_partition(m_updatePartition); + if (setResult != ESP_OK) { + ESP_LOGE(TAG, "Setting the OTA boot partition failed: %d", setResult); + } else { + ESP_LOGE(TAG, "Boot partition updated! Awesome-sauce"); + } + } + } + + // Always restart here + gSysMon.outputToLog(); // Make sure we get our log + ESP_LOGE(TAG, "Always restart after OTA stuff"); + brain_restart(100); + + vTaskDelete(nullptr); +} + +esp_err_t OtaFetcher::_httpEvent(esp_http_client_event_t* evt) { + switch(evt->event_id) { + case HTTP_EVENT_ERROR: + ESP_LOGE(TAG, "OTA HTTP_EVENT_ERROR"); + break; + + case HTTP_EVENT_ON_CONNECTED: + ESP_LOGI(TAG, "OTA HTTP_EVENT_ON_CONNECTED"); + break; + case HTTP_EVENT_ON_HEADER: + ESP_LOGD(TAG, "OTA HTTP_EVENT_ON_HEADER key='%s' value='%s'", evt->header_key, evt->header_value); + break; + + case HTTP_EVENT_ON_DATA: { +// ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA data_len=%d", evt->data_len); +// auto err = esp_ota_write(m_otaHandle, evt->data, evt->data_len); +// if (err != ESP_OK) { +// ESP_LOGE(TAG, "Error during ota write %d", err); +// // TODO: Cleanup +// } + } + break; + + case HTTP_EVENT_ON_FINISH: + ESP_LOGD(TAG, "OTA HTTP_EVENT_ON_FINISH"); + break; + + case HTTP_EVENT_DISCONNECTED: + ESP_LOGD(TAG, "OTA HTTP_EVENT_DISCONNECTED"); + break; + + default: + ESP_LOGD(TAG, "OTA http event other"); + break; + } + + return ESP_OK; +} diff --git a/brain/sw/components/net/readme.md b/brain/sw/components/net/readme.md new file mode 100644 index 0000000000..0258c35aaa --- /dev/null +++ b/brain/sw/components/net/readme.md @@ -0,0 +1,3 @@ +# Network Component + +The network component consists of two logical parts. The low level system handles the network interfaces and addressing. The message handling sits on top of that and is largely agnostic about interfaces although it does make some attempt to find a reasonable broadcast address. \ No newline at end of file diff --git a/brain/sw/components/net/wifi_ap_interface.cpp b/brain/sw/components/net/wifi_ap_interface.cpp new file mode 100644 index 0000000000..dd70a8aa53 --- /dev/null +++ b/brain/sw/components/net/wifi_ap_interface.cpp @@ -0,0 +1,197 @@ +// +// Created by Tom Seago on 2019-08-07. +// + +#include "wifi_ap_interface.h" +#include + +#define TAG TAG_NET + +//////////////////////////////////////////////////////////// +// Glue functions that let us use C++ functions with the IDF +// C apis. + +static void glue_evtHandler(void* pArg, esp_event_base_t evBase, int32_t evId, void* evData) { + ((WifiApInterface *) pArg)->_evtHandler(evBase, evId, evData); +} + +//////////////////////////////////////////////////////////// + +bool WifiApInterface::init() { + if (!NetInterface::init()) return false; + + ESP_LOGD(TAG, "WifiApInterface init start"); + + + // Since it's not cool to call esp_wifi_init() more than once we use get_mode + // as a check to see if we need to init or not. + wifi_mode_t mode; + auto modeGetResult = esp_wifi_get_mode(&mode); + if (modeGetResult == ESP_ERR_WIFI_NOT_INIT) { + // We can fix this! + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + // This will call the tcpip_adapter init as well as the supplicant init + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_init(&cfg)) != ESP_OK) return false; + } + + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, glue_evtHandler, this)) != ESP_OK) return false; + // There is also a LOST_IP event + + // Set our static IP address + m_staticIp.ip.addr = 0x0A0A0A0A; // 10.10.10.10 + m_staticIp.netmask.addr = 0x0AFFFFFF; // 255.255.255.10 - because various bits of the esp code assume this. Also, LSB not FTW :( + m_staticIp.gw.addr = 0x0A0A0A0A; + m_dhcpEnabled = false; +// addressingChanged(); + + ESP_LOGD(TAG, "WifiApInterface init done"); + + return true; +} + +void WifiApInterface::enableChanged() { + if (m_isEnabled) { + // Get the existing mode and add STA to it if necessary + wifi_mode_t mode; + auto result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_get_mode(&mode)); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + + if (mode != WIFI_MODE_AP && mode != WIFI_MODE_APSTA) { + if (mode == WIFI_MODE_STA) { + mode = WIFI_MODE_APSTA; + } else { + mode = WIFI_MODE_AP; + } + + result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_set_mode(mode)); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + } + + // Always setup our config here because it's pretty darn static. We might want + // to make something like the IP range a configurable value in the future. For now + // don't worry about it. + m_wifiConfig = {}; + uint8_t* mac = GlobalConfig.mac(); + snprintf((char*)m_wifiConfig.ap.ssid, sizeof(m_wifiConfig.ap.ssid)-1, "brain_%2x%2x%2x", mac[3], mac[4], mac[5]); + m_wifiConfig.ap.ssid_len = strlen((char*)m_wifiConfig.ap.ssid); + m_wifiConfig.ap.authmode = WIFI_AUTH_OPEN; + m_wifiConfig.ap.max_connection = 4; + + result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_set_config(ESP_IF_WIFI_AP, &m_wifiConfig)); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + +// ESP_LOGI(TAG, "Connecting to SSID:%s PASS:%s", m_wifiConfig.sta.ssid, m_wifiConfig.sta.password); +// + result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_start()); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + + // I think we also need to set the static info after the start? + ESP_LOGI(TAG, "Calling addressingChanged to set the static IP info after the wifi start call"); + addressingChanged(); + + } else { + // TODO: Implement this better + ESP_LOGE(TAG, "Disabling wifi probably isn't really implemented properly yet"); + esp_wifi_stop(); + } +} + +void WifiApInterface::addressingChanged() { + if (m_dhcpEnabled) { +// if (ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_STA)) != ESP_OK) { +// m_dhcpEnabled = false; +// } + ESP_LOGE(TAG, "Can not enable DHCP on the AP interface. Ignoring"); + m_dhcpEnabled = false; + } else { + tcpip_adapter_dhcp_status_t status; + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcps_get_status(TCPIP_ADAPTER_IF_AP, &status)); + ESP_LOGI(TAG, "AP dhcps status = %d", status); + + // Stop DHCP server first or else you can't set the static ip + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP)); + + // Now set the info. Hopefully it's already been configured properly eh? + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_AP, &m_staticIp)); + + // Now off course you need to restart that server + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP)); + } +} + +void +WifiApInterface::_evtHandler(esp_event_base_t evBase, int32_t evId, void *evData) { + if (evBase == WIFI_EVENT) { + switch (evId) { + case WIFI_EVENT_AP_START: + tellListenerStart(); + + // Do we need to start the dhcp server or does that happen automatically? + + break; + + case WIFI_EVENT_AP_STOP: + tellListenerStop(); + break; + + case WIFI_EVENT_AP_PROBEREQRECVED: + ESP_LOGI(TAG, "AP probe req received"); + break; + + case WIFI_EVENT_AP_STACONNECTED: { + wifi_event_ap_staconnected_t *event = (wifi_event_ap_staconnected_t *) evData; + ESP_LOGI(TAG, "Station connected to AP " MACSTR " join, AID=%d", + MAC2STR(event->mac), event->aid); + } + break; + + case WIFI_EVENT_AP_STADISCONNECTED: { + wifi_event_ap_stadisconnected_t *event = (wifi_event_ap_stadisconnected_t *) evData; + ESP_LOGI(TAG, "Station disconnected from AP " MACSTR " leave, AID=%d", + MAC2STR(event->mac), event->aid); + } + break; + +// case WIFI_EVENT_AP_DISCONNECTED: +// tellListenerLinkDown(); +// +// m_numFailedConnects++; +// // TODO: Add a maximum number of retries. +// // The connect method itself should have take some time so it's "okay" to +// // simply reconnect immediately. However, after some max number of retries +// // we should probably backoff and add a non-trivial (30 seconds?) delay +// // before we try to connect again so that we aren't always hammering the +// // connect process. I think it will slow down a board more than we would like. +// +// ESP_LOGE(TAG, "Failed to connect to wifi ssid '%s', Failure #%d. Retrying.", m_wifiConfig.sta.ssid, m_numFailedConnects); +// esp_wifi_connect(); +// break; +// +// case WIFI_EVENT_STA_CONNECTED: +// m_numFailedConnects = 0; +// +// tellListenerIntLinkUp(); +// break; + + default: + break; + } +// } else if (evBase == IP_EVENT) { +// ip_event_got_ip_t *event = (ip_event_got_ip_t *) evData; +// const tcpip_adapter_ip_info_t *ip_info = &event->ip_info; +// +// tellListenerGotAddr(ip_info); + } +} diff --git a/brain/sw/components/net/wifi_sta_interface.cpp b/brain/sw/components/net/wifi_sta_interface.cpp new file mode 100644 index 0000000000..11b0ae1661 --- /dev/null +++ b/brain/sw/components/net/wifi_sta_interface.cpp @@ -0,0 +1,245 @@ +// +// Created by Tom Seago on 2019-08-05. +// + +#include "wifi_sta_interface.h" +#include +#include + +#define TAG TAG_NET + +#define MAX_IMMEDIATE_RECONNECTS 2 +#define LONG_TERM_POLL_INTERVAL_SECS 30 + +//////////////////////////////////////////////////////////// +// Glue functions that let us use C++ functions with the IDF +// C apis. + +static void glue_evtHandler(void* pArg, esp_event_base_t evBase, int32_t evId, void* evData) { + ((WifiStaInterface *) pArg)->_evtHandler(evBase, evId, evData); +} + +static void glue_longPoll(void* pArg) { + ((WifiStaInterface*)pArg)->_taskLongPoll(); +} + +//////////////////////////////////////////////////////////// + +void +WifiStaInterface::setCredentials(const char* ssid, const char* password) { + bool wasEnabled = m_isEnabled; + + if (m_isEnabled) { + setEnabled(false); + } + + strncpy((char*)m_wifiConfig.sta.ssid, ssid, sizeof(m_wifiConfig.sta.ssid) - 1); + strncpy((char*)m_wifiConfig.sta.password, password, sizeof(m_wifiConfig.sta.ssid) - 1); + + if (wasEnabled) { + setEnabled(true); + } +} + + +bool WifiStaInterface::init() { + if (!NetInterface::init()) return false; + + ESP_LOGD(TAG, "WifiStaInterface init start"); + + //Initialize NVS + + // Because of a bug in the IDF as of July 3, we ALWAYS erase the flash right now. This seems to be + // related to refactorings where they moved the wap supplicant code around and probably didn't + // update nvs_flash_init properly. + // TODO: Try to remove this sometime after about July 7 or so. Test with changing wifi credentials + if (ESP_ERROR_CHECK_WITHOUT_ABORT(nvs_flash_erase()) != ESP_OK) return false; + + ESP_LOGI(TAG, "calling nvs_flash_init()"); + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK_WITHOUT_ABORT(nvs_flash_erase()); + ret = nvs_flash_init(); + } + if (ESP_ERROR_CHECK_WITHOUT_ABORT(ret) != ESP_OK) return false; + + ////////////////////// + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + // This will call the tcpip_adapter init as well as the supplicant init + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_init(&cfg)) != ESP_OK) return false; + + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, glue_evtHandler, this)) != ESP_OK) return false; + if (ESP_ERROR_CHECK_WITHOUT_ABORT(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, glue_evtHandler, this)) != ESP_OK) return false; + // There is also a LOST_IP event + + ESP_LOGD(TAG, "WifiStaInterface init done"); + + return true; +} + +void WifiStaInterface::enableChanged() { + if (m_isEnabled) { + // Get the existing mode and add STA to it if necessary + wifi_mode_t mode; + auto result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_get_mode(&mode)); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + + if (mode != WIFI_MODE_STA && mode != WIFI_MODE_APSTA) { + if (mode == WIFI_MODE_AP) { + mode = WIFI_MODE_APSTA; + } else { + mode = WIFI_MODE_STA; + } + + result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_set_mode(mode)); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + } + + // Presume that the credentials have been set + result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_set_config(ESP_IF_WIFI_STA, &m_wifiConfig)); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + + ESP_LOGI(TAG, "Connecting to SSID:%s PASS:%s", m_wifiConfig.sta.ssid, m_wifiConfig.sta.password); + + result = ESP_ERROR_CHECK_WITHOUT_ABORT(esp_wifi_start()); + if (result != ESP_OK) { + m_isEnabled = false; + return; + } + } else { + // TODO: Implement this better + ESP_LOGE(TAG, "Disabling wifi probably isn't really implemented properly yet"); + esp_wifi_stop(); + } +} + +void WifiStaInterface::addressingChanged() { + if (m_dhcpEnabled) { + if (ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_STA)) != ESP_OK) { + m_dhcpEnabled = false; + } + } else { + // Stop DHCP first or else you can't set the static ip + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_STA)); + + // Now set the info. Hopefully it's already been configured properly eh? + ESP_ERROR_CHECK_WITHOUT_ABORT(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_STA, &m_staticIp)); + } +} + +void +WifiStaInterface::_evtHandler(esp_event_base_t evBase, int32_t evId, void *evData) { + if (evBase == WIFI_EVENT) { + switch (evId) { + case WIFI_EVENT_STA_START: + tellListenerStart(); + + // Attempt to connect + m_numFailedConnects = 0; + m_connected = false; + m_started = true; + esp_wifi_connect(); + break; + + case WIFI_EVENT_STA_STOP: + m_connected = false; + m_started = false; + tellListenerStop(); + break; + + case WIFI_EVENT_STA_DISCONNECTED: + m_connected = false; + tellListenerLinkDown(); + + m_numFailedConnects++; + ESP_LOGE(TAG, "Failed to connect to wifi ssid '%s', Failure #%d. Retrying.", m_wifiConfig.sta.ssid, m_numFailedConnects); + if (m_numFailedConnects < MAX_IMMEDIATE_RECONNECTS) { + ESP_LOGE(TAG, "Will try again..."); + esp_wifi_connect(); + } else { + if (!m_haveLTPTask) { + ESP_LOGE(TAG, "That's it. No more immediate retries. Need some better credentials"); + ESP_LOGW(TAG, "Starting the long term poll task."); + startLongTermPoll(); + } else { + ESP_LOGW(TAG, "Wifi long term poll task is running. It will manage the connect attempt"); + } + } + break; + + case WIFI_EVENT_STA_CONNECTED: + m_numFailedConnects = 0; + m_connected = true; + + tellListenerIntLinkUp(); + break; + + default: + break; + } + } else if (evBase == IP_EVENT) { + ip_event_got_ip_t *event = (ip_event_got_ip_t *) evData; + const tcpip_adapter_ip_info_t *ip_info = &event->ip_info; + + tellListenerGotAddr(ip_info); + } +} + +void WifiStaInterface::startLongTermPoll() { + + if (m_haveLTPTask) { + ESP_LOGE(TAG, "Attempting to start LTP task when it already exists (supposedly). Not starting"); + return; + } + + auto def = DefaultBrainTasks.longTermSTAPoll; + auto tcResult =def.createTask(glue_longPoll, this, &m_hLTPTask); + if (tcResult != pdPASS) { + ESP_LOGE(TAG, "Failed to create long term poll task %d", tcResult); + return; + } + m_haveLTPTask = true; +} + +void WifiStaInterface::_taskLongPoll() { + + m_haveLTPTask = false; + + // m_connected and m_started should really be semaphores but whatever + + while(true) { + vTaskDelay(pdMS_TO_TICKS(LONG_TERM_POLL_INTERVAL_SECS * 1000)); + + if (m_connected) { + ESP_LOGW(TAG, "Wifi STA long poll task expired and we are connected. Exiting task"); + break; + } + + if (!m_started) { + ESP_LOGW(TAG, "Wifi STA long poll task, not started. Exiting"); + break; + } + + // We are started but not connected + + // We can go ahead and start a connect attempt + ESP_LOGW(TAG, "Wifi STA long poll task starting a connect to '%s', Failure #%d.", m_wifiConfig.sta.ssid, m_numFailedConnects); + esp_wifi_connect(); + + // Just loop, which will be some sort of long delay. + } + + // Clean up when we exit + m_haveLTPTask = false; + vTaskDelete(nullptr); +} diff --git a/brain/sw/components/shaders/CMakeLists.txt b/brain/sw/components/shaders/CMakeLists.txt new file mode 100644 index 0000000000..ad947ad287 --- /dev/null +++ b/brain/sw/components/shaders/CMakeLists.txt @@ -0,0 +1,18 @@ +set(COMPONENT_ADD_INCLUDEDIRS . "include") + +set(COMPONENT_SRCS + "shade-tree.cpp" + "shader.cpp" + "default-shader.cpp" + "compositor-shader.cpp" + "pixel-shader.cpp" + "solid-shader.cpp" + "sine-wave-shader.cpp" + "sparkle-shader.cpp" + "rainbow-shader.cpp" + ) + + +set(COMPONENT_REQUIRES net led-renderer brain-ui) + +register_component() diff --git a/brain/sw/components/shaders/compositor-shader.cpp b/brain/sw/components/shaders/compositor-shader.cpp new file mode 100644 index 0000000000..5f70928b3c --- /dev/null +++ b/brain/sw/components/shaders/compositor-shader.cpp @@ -0,0 +1,89 @@ +#include "compositor-shader.h" + +#include "esp_log.h" +#define TAG TAG_SHADER + +CompositorShader::CompositorShader(Surface *surface, Msg *config) : Shader(surface, config) { + m_shaderA = Shader::createShaderFromDescrip(surface, config); + m_shaderB = Shader::createShaderFromDescrip(surface, config); + + if (!m_shaderA || !m_shaderB) { + ESP_LOGE(TAG, "A shader couldn't be created, the shader tree is probably broken!"); + } +} + +CompositorShader::~CompositorShader() { + if (m_shaderA) { + delete m_shaderA; + } + + if (m_shaderB) { + delete m_shaderB; + } +} + +void +CompositorShader::begin(Msg *pMsg, LEDShaderContext* pCtx) { + if (m_shaderA) { + m_shaderA->begin(pMsg, 0); + + if (m_shaderB) { + m_shaderB->begin(pMsg, 0); + + m_mode = pMsg->readByte(); + m_fade = pMsg->readFloat(); + +// ESP_LOGI(TAG, "Compositor mode=%d fade=%f", m_mode, m_fade); + } + } +} + +void +CompositorShader::apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) { + RgbColor clrA; + RgbColor clrB; + + if (m_shaderA) { + m_shaderA->apply(pixelIndex, (uint8_t*)&clrA, colorIn); + } + if (m_shaderB) { + m_shaderB->apply(pixelIndex, (uint8_t*)&clrB, colorIn); + } + + // Because we might want to add values which could overflow we have to upgrade + // the storage for the composite result. + uint16_t compR = clrB.R; + uint16_t compG = clrB.G; + uint16_t compB = clrB.B; + + if (m_mode) { + // Add A and B into B before fading + compR = MIN(255, compR + clrA.R); + compG = MIN(255, compG + clrA.G); + compB = MIN(255, compB + clrA.B); + } + + // Use the fade value to take some from A and some from B + float aFactor = 1.0f - m_fade; + colorOut[0] = (aFactor * clrA.R) + (m_fade * compR); + colorOut[1] = (aFactor * clrA.G) + (m_fade * compG); + colorOut[2] = (aFactor * clrA.B) + (m_fade * compB); + +// if (pixelIndex == 1) { +// ESP_LOGI(TAG, "a=%2x%2x%2x b=%2x%2x%2x out=%2x%2x%2x", +// clrA.R, clrA.G, clrA.B, +// clrB.R, clrB.G, clrB.B, +// colorOut[0], colorOut[1], colorOut[2] +// ); +// } +} + +void +CompositorShader::end() { + if (m_shaderB) { + m_shaderB->end(); + } + if (m_shaderA) { + m_shaderA->end(); + } +} diff --git a/brain/sw/components/shaders/compositor-shader.h b/brain/sw/components/shaders/compositor-shader.h new file mode 100644 index 0000000000..352ea7a196 --- /dev/null +++ b/brain/sw/components/shaders/compositor-shader.h @@ -0,0 +1,20 @@ +#pragma once + +#include "shader.h" + +class CompositorShader : public Shader { +private: + Shader* m_shaderA; + Shader* m_shaderB; + + int8_t m_mode; + float m_fade; + +public: + CompositorShader(Surface *surface, Msg *config); + ~CompositorShader(); + + void begin(Msg *pMsg, LEDShaderContext* pCtx) override; + void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) override; + void end() override; +}; \ No newline at end of file diff --git a/brain/sw/components/shaders/default-shader.cpp b/brain/sw/components/shaders/default-shader.cpp new file mode 100644 index 0000000000..3fb867d0d7 --- /dev/null +++ b/brain/sw/components/shaders/default-shader.cpp @@ -0,0 +1,16 @@ +#include "default-shader.h" + +DefaultShader::DefaultShader(Surface *surface, Msg *config) : Shader(surface, config) { + +} + +DefaultShader::~DefaultShader() { + +} + +void +DefaultShader::apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) { + colorOut[0] = 0x10; + colorOut[1] = 0x20; + colorOut[2] = 0x30; +} diff --git a/brain/sw/components/shaders/default-shader.h b/brain/sw/components/shaders/default-shader.h new file mode 100644 index 0000000000..e4f8c71db5 --- /dev/null +++ b/brain/sw/components/shaders/default-shader.h @@ -0,0 +1,11 @@ +#pragma once + +#include "shader.h" + +class DefaultShader : public Shader { +public: + DefaultShader(Surface *surface, Msg *config); + ~DefaultShader(); + + void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) override; +}; \ No newline at end of file diff --git a/brain/sw/components/shaders/include/shade-tree.h b/brain/sw/components/shaders/include/shade-tree.h new file mode 100644 index 0000000000..3cadf8edd6 --- /dev/null +++ b/brain/sw/components/shaders/include/shade-tree.h @@ -0,0 +1,52 @@ + +#pragma once + +#include "freertos/FreeRTOS.h" +#include "freertos/semphr.h" +#include + +#include +#include + +#include "shader-desc.h" +#include "shader.h" + +class ShadeTree : public LEDShader { +public: + ShadeTree(Surface *surface); + + void start(); + void stop() { m_timeToDie = true; } + + void beginShade(LEDShaderContext* pCtx) override; + + void Apply(uint16_t indexPixel, uint8_t *color, uint8_t *currentColor) override; + + void endShade() override; + + void handleMessage(Msg* pMsg); + + /** + * Advance to the next local shader + */ + void nextLocalShader(); + + void _handleEvent(esp_event_base_t base, int32_t id, void* event_data); + +private: + bool m_timeToDie = false; + + Surface *m_surface; + + SemaphoreHandle_t m_hMsgAccess; + Msg* m_pMsg; + + ShaderDesc* m_pCurrentShaderDesc; + Shader* m_pCurrentShader; + Shader* m_pLocalShader; + + uint8_t m_localShaderIndex = -1; + + void checkForShaderChanges(); + void buildNewTree(); +}; diff --git a/brain/sw/components/shaders/include/shader-desc.h b/brain/sw/components/shaders/include/shader-desc.h new file mode 100644 index 0000000000..efcd3ccb6f --- /dev/null +++ b/brain/sw/components/shaders/include/shader-desc.h @@ -0,0 +1,73 @@ +// +// Created by Tom Seago on 2019-06-18. +// + +#pragma once + +#include "msg.h" +#include + +class ShaderDesc { +public: + uint8_t* m_pBuf; + size_t m_len; + + ShaderDesc(Msg* pMsg) { + m_len = pMsg->copyBytes(&m_pBuf); + } + + ~ShaderDesc() { + if (m_pBuf) { + free(m_pBuf); + } + } + + /** + * Compares this saved description to a description in a freshly + * received message. The message read cursor must be at the start + * position for the description (the beginning of the message). + * + * The cursor for the message is not updated regardless of whether + * the check succeeds or fails. + * + * @param msg + * @return + */ + bool isSameAs(Msg* pMsg) { + size_t rewindPos = pMsg->pos(); + + // Do this as a peek + size_t dLen = pMsg->readInt(); + + // ESP_LOGI(MSG_TAG, "Start isSameAs dLen=%d m_len=%d m_pBuf=%p", dLen, m_len, m_pBuf); + // Have to be the same length for sure + if (dLen != m_len) { + pMsg->rewind(rewindPos); + return false; + } + + // Then we just check byte by byte + uint8_t* pMe = m_pBuf; + + for(int i = 0; i < dLen; i++) { + int8_t byte = pMsg->readByte(); + if (*pMe != byte) { + pMsg->rewind(rewindPos); + return false; + } + pMe++; + } + + // It's okay, they are the same + // pMsg->log("Same Message??"); + pMsg->rewind(rewindPos); + return true; + } + + void log(const char* tag) { + ESP_LOGI(tag, "Shader Desc: m_len=%d", m_len); + ESP_LOG_BUFFER_HEX(tag, m_pBuf, m_len); + } +}; + + diff --git a/brain/sw/components/shaders/include/shader.h b/brain/sw/components/shaders/include/shader.h new file mode 100644 index 0000000000..7f867d83af --- /dev/null +++ b/brain/sw/components/shaders/include/shader.h @@ -0,0 +1,77 @@ +// +// Created by Tom Seago on 2019-06-18. +// + +#pragma once + +#include +#include "led-shader.h" +#include "shader-desc.h" + +#define ARDUINO_ARCH_ESP32 +#include "NeoPixelBus.h" + +typedef union Color { + uint32_t argb; + + // esp32 is little-endian, so reversed: + struct channel { + uint8_t b; + uint8_t g; + uint8_t r; + uint8_t a; + } channel; +} Color; + +class Surface { +public: + Surface(uint16_t pixelCount) { + m_pixelCount = pixelCount; + }; + + ~Surface() { + }; + + uint16_t pixelCount() { + return m_pixelCount; + } + +private: + uint16_t m_pixelCount; +}; + +class Shader { +public: + enum class Type : uint8_t { + SOLID = 0, + PIXEL, + SINE_WAVE, + COMPOSITOR, + SPARKLE, + SIMPLE_SPATIAL, + HEART, + RANDOM, + }; + + /** + * Creates a new shader using the description found at *ppCursor. *ppCursor + * will be advanced by at least one byte and possibly more depending on what + * type of shader(s) get created. + * + * @param ppCursor + * @param pEnd + * @return + */ + static Shader* createShaderFromDescrip(Surface *surface, Msg *config); + + Shader(Surface* surface, Msg* config) { + m_surface = surface; + }; + virtual ~Shader() { }; + + virtual void begin(Msg *pMsg, LEDShaderContext* pCtx) {}; + virtual void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) {}; + virtual void end() {}; + + Surface *m_surface; +}; diff --git a/brain/sw/components/shaders/pixel-shader.cpp b/brain/sw/components/shaders/pixel-shader.cpp new file mode 100644 index 0000000000..7150552d9d --- /dev/null +++ b/brain/sw/components/shaders/pixel-shader.cpp @@ -0,0 +1,205 @@ +#include "pixel-shader.h" + +#include "esp_log.h" +#include "brain_common.h" +#include "sysmon.h" + +#define TAG TAG_SHADER + +PixelShader::PixelShader(Surface *surface, Msg *config) : Shader(surface, config) { + if (!config->available(1)) { + ESP_LOGE(TAG, "invalid config"); + m_disabled = 1; + } + + m_encoding = static_cast(config->readByte()); + uint16_t pixelCount = surface->pixelCount(); + m_dataBufSize = bufferSizeFor(m_encoding, pixelCount); + m_dataBuf = static_cast(malloc(m_dataBufSize)); + + uint8_t paletteCount = paletteCountFor(m_encoding); + size_t paletteSize = sizeof(Color) * paletteCount; + m_palette = paletteCount > 0 ? static_cast(malloc(paletteSize)) : nullptr; + + ESP_LOGD(TAG, "PixelShader: encoding=%d pixelCount=%d paletteCount=%d", + static_cast(m_encoding), pixelCount, paletteCount); + + if (!m_dataBuf || (paletteSize > 0 && !m_palette)) { + if (m_dataBuf) { + free(m_dataBuf); + m_dataBuf = nullptr; + } else { + ESP_LOGE(TAG, "Failed to malloc %d bytes for data buffer", m_dataBufSize); + } + + if (paletteSize > 0) { + if (m_palette) { + free(m_palette); + m_palette = nullptr; + } else { + ESP_LOGE(TAG, "Failed to malloc %d bytes for palette", paletteSize); + } + } + m_disabled = 1; + } +} + +PixelShader::~PixelShader() { + if (m_dataBuf) { + free(m_dataBuf); + m_dataBuf = nullptr; + } + if (m_palette) { + free(m_palette); + m_palette = nullptr; + } +} + +void +PixelShader::begin(Msg *pMsg, LEDShaderContext* pCtx) { + uint16_t pixelCount = pMsg->readShort(); + + uint8_t paletteCount = paletteCountFor(m_encoding); + for (int i = 0; i < paletteCount; i++) { + const RgbColor color = pMsg->readColor(); + if (!m_disabled) { + m_palette[i].channel.a = 0xff; + m_palette[i].channel.r = color.R; + m_palette[i].channel.g = color.G; + m_palette[i].channel.b = color.B; + } + } + + size_t dataBufLen = bufferSizeFor(m_encoding, pixelCount); + if (m_disabled) { + // We still need to skip bytes in the buffer intended for us before bailing. + pMsg->skip(dataBufLen); + return; + } + + size_t readLen = MIN(m_dataBufSize, dataBufLen); + m_dataBufRead = pMsg->readBytes(m_dataBuf, readLen); + + ESP_LOGI(TAG, "PixelShader::begin m_dataBufSize=%d dataBufLen=%d m_dataBufRead=%d readLen=%d", + m_dataBufSize, dataBufLen, m_dataBufRead, readLen); + // If we received data for more pixels than we have, skip those bytes. + if (readLen < m_dataBufRead) { + pMsg->skip(m_dataBufRead - readLen); + } + + m_pixelsToShade = pCtx->numPixels; + m_pixelsShaded = 0; +} + +uint8_t +PixelShader::paletteIndex(uint16_t pixelIndex, uint8_t pixelsPerByte, uint8_t bitsPerPixel, uint8_t mask) { + // Offset is modulo m_dataBufRead so we wrap around and repeat any missing pixels. + size_t bufOffset = pixelIndex / pixelsPerByte % m_dataBufRead; + uint8_t positionInByte = pixelsPerByte - pixelIndex % pixelsPerByte - 1; + uint8_t bitShift = positionInByte * bitsPerPixel; + return m_dataBuf[bufOffset] >> bitShift & mask; +} + +void +PixelShader::apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) { + if (m_disabled || m_dataBufRead == 0) { + // TODO: colorOut should have alpha channel set explicitly to zero. + return; + } + + uint16_t bufOffset; + Color color = {0}; + color.channel.r = 255; + color.channel.b = 255; + + switch (m_encoding) { + case Encoding::DIRECT_ARGB: + // Offset is modulo m_dataBufRead so we wrap around and repeat any missing pixels. + bufOffset = pixelIndex * 4; + if (bufOffset + 3 < m_dataBufRead) { + color.channel.a = m_dataBuf[bufOffset++]; + color.channel.r = m_dataBuf[bufOffset++]; + color.channel.g = m_dataBuf[bufOffset++]; + color.channel.b = m_dataBuf[bufOffset]; + } else { + gSysMon.increment(COUNTER_PIXEL_UNDERFLOW); + } + break; + + case Encoding::DIRECT_RGB: + // Offset is modulo m_dataBufRead so we wrap around and repeat any missing pixels. + bufOffset = pixelIndex * 3; + if (bufOffset + 2 < m_dataBufRead) { + color.channel.a = 0xff; + color.channel.r = m_dataBuf[bufOffset++]; + color.channel.g = m_dataBuf[bufOffset++]; + color.channel.b = m_dataBuf[bufOffset]; + } else { + ESP_LOGD(TAG, "Asked to shade pixel %d but my buffer only has up to %d", + pixelIndex, + (m_dataBufRead-2) / 3); + gSysMon.increment(COUNTER_PIXEL_UNDERFLOW); + } + break; + + case Encoding::INDEXED_2: + color = m_palette[paletteIndex(pixelIndex, 8, 1, 0x01)]; + break; + + case Encoding::INDEXED_4: + color = m_palette[paletteIndex(pixelIndex, 4, 2, 0x03)]; + break; + + case Encoding::INDEXED_16: + color = m_palette[paletteIndex(pixelIndex, 2, 4, 0x0F)]; + break; + } + + *colorOut++ = color.channel.r; + *colorOut++ = color.channel.g; + *colorOut = color.channel.b; + + m_pixelsShaded++; +} + +void +PixelShader::end() { +// if (m_pixelsShaded < m_pixelsToShade) { +// gSysMon.increment(COUNTER_PIXEL_UNDERFLOW); +// ESP_LOGE(TAG, "Pixel underflow needed to shade %d but only shaded %d", m_pixelsToShade, m_pixelsShaded); +// } +} + +size_t PixelShader::bufferSizeFor(PixelShader::Encoding encoding, uint16_t pixelCount) { + switch (encoding) { + case Encoding::DIRECT_ARGB: + return pixelCount * 4; + case Encoding::DIRECT_RGB: + return pixelCount * 3; + case Encoding::INDEXED_2: + return (pixelCount + 7) / 8; + case Encoding::INDEXED_4: + return (pixelCount + 3) / 4; + case Encoding::INDEXED_16: + return (pixelCount + 1) / 2; + default: + return -1; + } +} + +size_t PixelShader::paletteCountFor(PixelShader::Encoding encoding) { + switch (encoding) { + case Encoding::DIRECT_ARGB: + return 0; + case Encoding::DIRECT_RGB: + return 0; + case Encoding::INDEXED_2: + return 2; + case Encoding::INDEXED_4: + return 4; + case Encoding::INDEXED_16: + return 16; + default: + return -1; + } +} diff --git a/brain/sw/components/shaders/pixel-shader.h b/brain/sw/components/shaders/pixel-shader.h new file mode 100644 index 0000000000..ac50bb3baa --- /dev/null +++ b/brain/sw/components/shaders/pixel-shader.h @@ -0,0 +1,44 @@ +#pragma once + +#include "shader.h" +#include + +class PixelShader : public Shader { + enum class Encoding : uint8_t { + DIRECT_ARGB = 0, + DIRECT_RGB, + INDEXED_2, + INDEXED_4, + INDEXED_16 + }; + +private: + Encoding m_encoding; + Color *m_palette; + size_t m_dataBufSize; + uint8_t *m_dataBuf; + size_t m_dataBufRead; + + /** Shader construction failed, we'll render nothing. */ + bool m_disabled = false; + + size_t bufferSizeFor(PixelShader::Encoding encoding, uint16_t pixelCount); + + size_t paletteCountFor(PixelShader::Encoding encoding); + + uint8_t paletteIndex(uint16_t pixelIndex, uint8_t pixelsPerByte, uint8_t bitsPerPixel, uint8_t mask); + +public: + PixelShader(Surface* surface, Msg* config); + + ~PixelShader(); + + void begin(Msg *pMsg, LEDShaderContext* pCtx) override; + + void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) override; + + void end() override; + + uint16_t m_pixelsToShade; + uint16_t m_pixelsShaded; +}; diff --git a/brain/sw/components/shaders/rainbow-shader.cpp b/brain/sw/components/shaders/rainbow-shader.cpp new file mode 100644 index 0000000000..01c446ab7d --- /dev/null +++ b/brain/sw/components/shaders/rainbow-shader.cpp @@ -0,0 +1,91 @@ +#include "rainbow-shader.h" + +#include "esp_log.h" +#define TAG "#shader" + +const RgbColor Palette_RYB[] = { + RgbColor(255, 0, 0), + RgbColor(255, 64, 0), + RgbColor(255, 128, 0), + RgbColor(255, 191, 0), + RgbColor(255, 255, 0), + RgbColor(128, 212, 25), + RgbColor(0, 168, 51), + RgbColor(21, 132, 102), + RgbColor(42, 95, 153), + RgbColor(85, 48, 140), + RgbColor(128, 0, 128), + RgbColor(191, 0, 64), +}; + +// This is a "Red" palette that is useful for making sure you don't have +// an Grb vs. Rgb color swap issue occurring +//const RgbColor Palette_RYB[] = { +// RgbColor(255, 0, 0), +// RgbColor(255, 0, 0), +// RgbColor(255, 0, 0), +// RgbColor(255, 0, 0), +// RgbColor(255, 0, 0), +// RgbColor(128, 0, 25), +// RgbColor(0, 0, 51), +// RgbColor(21, 0, 102), +// RgbColor(42, 0, 153), +// RgbColor(85, 0, 140), +// RgbColor(128, 0, 128), +// RgbColor(191, 0, 64), +//}; +#define RYB_LEN 12 + +RgbColor +colorInPalette(float progress) { + if (progress > 1.0f) { + float iPart; + progress = modf(progress, &iPart); + } + + if (progress == 1.0f ) { + progress = 0.0f; + } + + float pos = progress * (float)RYB_LEN; + uint8_t lowIx = floor(pos); + uint8_t highIx = lowIx + 1; + if (highIx >= RYB_LEN) highIx = 0; + + float intervalDistance = pos - (float)lowIx; + + RgbColor color = RgbColor::LinearBlend(Palette_RYB[lowIx], Palette_RYB[highIx], intervalDistance); + + return color; +} + +RainbowShader::RainbowShader(Surface* surface, Msg* config) : Shader(surface, config) { + // No additional bytes of configuration +} + +RainbowShader::~RainbowShader() { + +} + +void +RainbowShader::begin(Msg *pMsg, LEDShaderContext* pCtx) { + m_pCtx = pCtx; +} + +void +RainbowShader::apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) { +// memcpy((void*)colorOut, (void*)&m_color, 3); + float paletteProgress = m_pCtx->progress + (pixelIndex / 32.0f); + if (paletteProgress > 1.0f) { + paletteProgress -= 1.0f; + } + // ESP_LOGW(TAG, "progress=%f paletteProgress=%f", m_progress, paletteProgress); + RgbColor color = colorInPalette(paletteProgress); + + memcpy((void*)colorOut, (void*)&color, 3); +} + +void +RainbowShader::end() { + +} diff --git a/brain/sw/components/shaders/rainbow-shader.h b/brain/sw/components/shaders/rainbow-shader.h new file mode 100644 index 0000000000..b838ffcafa --- /dev/null +++ b/brain/sw/components/shaders/rainbow-shader.h @@ -0,0 +1,15 @@ +#pragma once + +#include "shader.h" + +class RainbowShader : public Shader { + LEDShaderContext* m_pCtx; + +public: + RainbowShader(Surface* pSurface, Msg* config); + ~RainbowShader(); + + void begin(Msg *pMsg, LEDShaderContext* pCtx) override; + void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) override; + void end() override; +}; \ No newline at end of file diff --git a/brain/sw/components/shaders/shade-tree.cpp b/brain/sw/components/shaders/shade-tree.cpp new file mode 100644 index 0000000000..bf44b447a3 --- /dev/null +++ b/brain/sw/components/shaders/shade-tree.cpp @@ -0,0 +1,258 @@ +#include "shade-tree.h" + +#include +#include + +#include "brain-ui-events.h" +#include "default-shader.h" +#include "solid-shader.h" +#include "rainbow-shader.h" + +#define TAG TAG_SHDTREE + +void glue_handleEvent(void* arg, esp_event_base_t base, int32_t id, void* data) { + ((ShadeTree*)arg)->_handleEvent(base, id, data); +} + + +ShadeTree::ShadeTree(Surface *surface) { + m_surface = surface; +} + +void +ShadeTree::start() { + m_hMsgAccess = xSemaphoreCreateBinary(); + if (!m_hMsgAccess) { + ESP_LOGE(TAG, "ERROR: Unable to create m_hMsgAccess semaphore"); + return; + } + + // Always start with a give + xSemaphoreGive(m_hMsgAccess); + + + // Start with a local shader + // Important to do AFTER the semaphore has been initialized! + nextLocalShader(); + + esp_event_handler_register(BRAIN_UI_BASE, BrainUiEvent::KeyPress, glue_handleEvent, this); +} + +void +ShadeTree::beginShade(LEDShaderContext* pCtx) { + if (m_timeToDie) return; + + xSemaphoreTake(m_hMsgAccess, portMAX_DELAY); + // Assume success + ESP_LOGD(TAG, "beginShade got semaphore"); + + if (m_pCurrentShader && m_pMsg) { + m_pCurrentShader->begin(m_pMsg, pCtx); + } else if (m_pLocalShader) { + ESP_LOGI(TAG, "beginShade with localShader"); + m_pLocalShader->begin(nullptr, pCtx); + } else { + //ESP_LOGW(TAG, "beginShade but don't have a message and a current shader"); + } +} + +void +ShadeTree::Apply(uint16_t indexPixel, uint8_t *color, uint8_t *currentColor) { + if (m_timeToDie) return; + + // If we don't have a pNextMsg set, we don't want to change anything + // about the pixels + if (!(m_pCurrentShader || m_pLocalShader)) { + // However, because the color OUT parameter will absolutely be set as + // the value of the pixel, we DO have to copy the current color + // into the output. + // However However, the pixels are going through a color feature so we + // have to do this swap on the first two bytes. + color[0] = currentColor[1]; + color[1] = currentColor[0]; + color[2] = currentColor[2]; + return; + } + + if (m_pCurrentShader) { + m_pCurrentShader->apply(indexPixel, color, currentColor); + } else if (m_pLocalShader) { + m_pLocalShader->apply(indexPixel, color, currentColor); + } +} + +void +ShadeTree::endShade() { + + if (m_pCurrentShader) { + m_pCurrentShader->end(); + } else if (m_pLocalShader) { + m_pLocalShader->end(); + } + + if (m_pMsg) { + // We done did this one so let it go + m_pMsg->release(); + m_pMsg = nullptr; + } + + // Be nice and give it back + // ESP_LOGW(TAG, "endShade giving semaphore"); + xSemaphoreGive(m_hMsgAccess); +} + +void +ShadeTree::handleMessage(Msg* pMsg){ + // ESP_LOGW(TAG, "handleMessage pMsg=%p", pMsg); + if (!pMsg) return; + if (m_timeToDie) return; + + // Wait, but not forever so that the network task keeps running just in + // case rendering explodes somehow. + // ESP_LOGW(TAG, "handleMessage pMsg=%p waiting", pMsg); + if (xSemaphoreTake(m_hMsgAccess, pdMS_TO_TICKS(3000)) == pdFALSE) { + ESP_LOGE(TAG, "Dropping a shader message because we couldn't get the semaphore"); + return; + }; + // ESP_LOGW(TAG, "handleMessage pMsg=%p got semaphore", pMsg); + + if (m_pMsg) { + m_pMsg->release(); + } + + // All we need to do is set this message in + m_pMsg = pMsg; + m_pMsg->addRef(); + m_pMsg->log("BrainShader"); + + // Now we do any setup or massive shader switch a roo sort of stuff here + // in the network task rather than leaving it for the render task to + // stumble over. It _probably_ doesn't make much difference if we do + // it here or during say, beginShade(), but this feels a little bit + // more appropriate. + checkForShaderChanges(); + + // And that's it! + // ESP_LOGW(TAG, "handleMessage pMsg=%p give semaphore back", pMsg); + xSemaphoreGive(m_hMsgAccess); +} + +void +ShadeTree::checkForShaderChanges() { + if (!m_pMsg) return; + + // Assume that shader messages always have a description, so if we + // don't have a description, we need to build a new tree. + if (!m_pCurrentShaderDesc) { + buildNewTree(); + return; + } + + // Okay, we have a description, check the length and then do a + // byte by byte comparison. Any differences and we just bail out to + // creating a new tree. + if (!m_pCurrentShaderDesc->isSameAs(m_pMsg)) { + buildNewTree(); + return; + } else { + // Skip to the good parts of the message + int32_t shaderDescLen = m_pMsg->readInt(); + m_pMsg->skip(shaderDescLen); + } + + // The current tree is valid. Let rendering proceed using the current message +} + +void +ShadeTree::buildNewTree() { + if (m_pCurrentShader) { + delete m_pCurrentShader; + } + if (m_pCurrentShaderDesc) { + delete m_pCurrentShaderDesc; + } + + ESP_LOGI(TAG, "buildNewTree"); + m_pCurrentShaderDesc = new ShaderDesc(m_pMsg); + if (!m_pCurrentShaderDesc) { + ESP_LOGE(TAG, "Error: Did not get a shader desc."); + } else { + uint8_t * pCursor = m_pCurrentShaderDesc->m_pBuf; + uint8_t * pEnd = pCursor + m_pCurrentShaderDesc->m_len; + + m_pCurrentShaderDesc->log(TAG); + + // Shaders are expressed in a tree structure so we actually only need to + // read a single root. However, that root might be a composite that + // goes on to read further branches. + + // TODO: refactor to extract buffer streaming from Msg. + Msg shaderConfig; + shaderConfig.reuse(pCursor, pEnd - pCursor, pEnd - pCursor); + + m_pCurrentShader = Shader::createShaderFromDescrip(m_surface, &shaderConfig); + } + + if (!m_pCurrentShader) { + // Aack! Always want a current shader + ESP_LOGW(TAG, "No current shader. Creating default shader"); + m_pCurrentShader = new DefaultShader(nullptr, nullptr); + } +} + +void +ShadeTree::nextLocalShader() { + xSemaphoreTake(m_hMsgAccess, portMAX_DELAY); + + if (m_pLocalShader) { + delete m_pLocalShader; + m_pLocalShader = nullptr; + } + + m_localShaderIndex++; + + switch (m_localShaderIndex % 5) { + case 0: // Everything is just white + m_pLocalShader = new SolidShader(RgbColor(255)); + break; + + case 1: // Rainbow! + m_pLocalShader = new RainbowShader(nullptr, nullptr); + break; + + case 2: // Red! + m_pLocalShader = new SolidShader(RgbColor(255, 0, 0)); + break; + + case 3: // Green! + m_pLocalShader = new SolidShader(RgbColor(0, 255, 0)); + break; + + case 4: // Blue! + m_pLocalShader = new SolidShader(RgbColor(0, 0, 255)); + break; + } + + xSemaphoreGive(m_hMsgAccess); +} + +void +ShadeTree::_handleEvent(esp_event_base_t base, int32_t id, void* data) { + + if (!data) return; + if (m_timeToDie) return; + + auto evt = (BrainUiEvent*)data; + + if (evt->id == BrainUiEvent::KeyPress) { + switch(evt->code) { + case BrainUiEvent::Left : + ESP_LOGI(TAG, "Key press: nextLocalShader()"); + nextLocalShader(); + break; + + default: + break; + } + } +} diff --git a/brain/sw/components/shaders/shader.cpp b/brain/sw/components/shaders/shader.cpp new file mode 100644 index 0000000000..b63cfba2ac --- /dev/null +++ b/brain/sw/components/shaders/shader.cpp @@ -0,0 +1,58 @@ +// +// Created by Tom Seago on 2019-06-18. +// + +#include "include/shader.h" + +#include "solid-shader.h" +#include "compositor-shader.h" +#include "sine-wave-shader.h" +#include "pixel-shader.h" + +/** + * Creates a shader based on the given configuration bytes. + * + * On return, `config`'s position will be moved past this shader's configuration bytes. + * + * If the requested shader is of an unknown type, or it can't be allocated, `nullptr` + * will be returned and subsequent shaders in the tree will probably be invalid. + * + * @param surface The surface the shader will be shading. + * @param config A buffer containing the specification for the shader. + * @return The shader, or `nullptr` if the shader couldn't be created. + */ +Shader * +Shader::createShaderFromDescrip(Surface *surface, Msg *config) { + if (!config->available(1)) return nullptr; + + uint8_t shaderType = config->readByte(); + + switch(shaderType) { + case static_cast(Shader::Type::SOLID): + return new SolidShader(surface, config); + + case static_cast(Shader::Type::PIXEL): + return new PixelShader(surface, config); + + case static_cast(Shader::Type::SINE_WAVE): + return new SineWaveShader(surface, config); + + case static_cast(Shader::Type::COMPOSITOR): + return new CompositorShader(surface, config); + +// case static_cast(Shader::Type::SPARKLE): +// return new NoOpShader(surface, config); +// +// case static_cast(Shader::Type::SIMPLE_SPATIAL): +// return new NoOpShader(surface, config); +// +// case static_cast(Shader::Type::HEART): +// return new NoOpShader(surface, config); +// +// case static_cast(Shader::Type::RANDOM): +// return new NoOpShader(surface, config); + } + + // Failsafe + return nullptr; +} diff --git a/brain/sw/components/shaders/sine-wave-shader.cpp b/brain/sw/components/shaders/sine-wave-shader.cpp new file mode 100644 index 0000000000..fe7250843e --- /dev/null +++ b/brain/sw/components/shaders/sine-wave-shader.cpp @@ -0,0 +1,49 @@ +#include "sine-wave-shader.h" + +#include "math.h" + +#include "esp_log.h" +#define TAG "#shader" + +SineWaveShader::SineWaveShader(Surface *surface, Msg *msg) : Shader(surface, msg) { + // No additional bytes of configuration +} + +SineWaveShader::~SineWaveShader() { + +} + +void +SineWaveShader::begin(Msg *pMsg, LEDShaderContext* pCtx) { + m_pCtx = pCtx; + m_color = pMsg->readColor(); + m_theta = pMsg->readFloat(); + m_density = pMsg->readFloat(); + +// m_density = 1; +} + +float last_theta = 0; + +void +SineWaveShader::apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) { + float v = sinf(m_theta + 2 * PI * ( ( float)pixelIndex / m_surface->pixelCount() * m_density) ) / 2.0 + 0.5; + + colorOut[0] = (float)m_color.R * v; + colorOut[1] = (float)m_color.G * v; + colorOut[2] = (float)m_color.B * v; + +// if (pixelIndex == 1 && m_theta != last_theta) { +// last_theta = m_theta; +// ESP_LOGD(TAG, "theta=%f density=%f v=%f", m_theta, m_density, v); +// int32_t val = *((int32_t*)&m_theta); +// ESP_LOGD(TAG, " bits=%x Color($%2x%2x%2x)", val, +// colorOut[0], colorOut[1], colorOut[2]); +// } + +} + +void +SineWaveShader::end() { + +} diff --git a/brain/sw/components/shaders/sine-wave-shader.h b/brain/sw/components/shaders/sine-wave-shader.h new file mode 100644 index 0000000000..dfce5da527 --- /dev/null +++ b/brain/sw/components/shaders/sine-wave-shader.h @@ -0,0 +1,18 @@ +#pragma once + +#include "shader.h" + +class SineWaveShader : public Shader { + LEDShaderContext* m_pCtx; + RgbColor m_color; + float m_theta; + float m_density; + +public: + SineWaveShader(Surface *surface, Msg *msg); + ~SineWaveShader(); + + void begin(Msg *pMsg, LEDShaderContext* pCtx) override; + void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) override; + void end() override; +}; \ No newline at end of file diff --git a/brain/sw/components/shaders/solid-shader.cpp b/brain/sw/components/shaders/solid-shader.cpp new file mode 100644 index 0000000000..63d66e6d6d --- /dev/null +++ b/brain/sw/components/shaders/solid-shader.cpp @@ -0,0 +1,45 @@ +#include "solid-shader.h" + +#include "esp_log.h" +#define TAG "#shader" + +SolidShader::SolidShader(RgbColor color) : + Shader(nullptr, nullptr), + m_color(color) +{ + +} + +SolidShader::SolidShader(Surface *surface, Msg *msg) : Shader(surface, msg) { + // No additional bytes of configuration +} + +SolidShader::~SolidShader() { + +} + +void +SolidShader::begin(Msg *pMsg, LEDShaderContext* pCtx) { + + // Only change the color if we have an actual message. Otherwise + // continue to use the last one. + if (pMsg) { + int32_t argb = 0x00ffffff; + argb = pMsg->readInt(); + // ESP_LOGD(TAG, "argb = %x", argb); + + m_color.R = (argb >> 16) & 0xff; + m_color.G = (argb >> 8) & 0x11; + m_color.B = (argb ) & 0xaa; + } +} + +void +SolidShader::apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) { + memcpy((void*)colorOut, (void*)&m_color, 3); +} + +void +SolidShader::end() { + +} diff --git a/brain/sw/components/shaders/solid-shader.h b/brain/sw/components/shaders/solid-shader.h new file mode 100644 index 0000000000..3af3630e6f --- /dev/null +++ b/brain/sw/components/shaders/solid-shader.h @@ -0,0 +1,18 @@ +#pragma once + +#include "shader.h" + +class SolidShader : public Shader { + RgbColor m_color; + +public: + // Create a solid shader with a default color + SolidShader(RgbColor color); + + SolidShader(Surface *surface, Msg *msg); + ~SolidShader(); + + void begin(Msg *pMsg, LEDShaderContext* pCtx) override; + void apply(uint16_t pixelIndex, uint8_t *colorOut, uint8_t *colorIn) override; + void end() override; +}; \ No newline at end of file diff --git a/brain/sw/components/shaders/sparkle-shader.cpp b/brain/sw/components/shaders/sparkle-shader.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/brain/sw/components/shaders/sparkle-shader.h b/brain/sw/components/shaders/sparkle-shader.h new file mode 100644 index 0000000000..e69de29bb2 diff --git a/brain/sw/components/sysmon/CMakeLists.txt b/brain/sw/components/sysmon/CMakeLists.txt new file mode 100644 index 0000000000..821f84a52c --- /dev/null +++ b/brain/sw/components/sysmon/CMakeLists.txt @@ -0,0 +1,10 @@ +set(COMPONENT_ADD_INCLUDEDIRS . "include") + +set(COMPONENT_SRCS + "sysmon.cpp" + ) + + +set(COMPONENT_REQUIRES brain-common app_update) + +register_component() diff --git a/brain/sw/components/sysmon/include/sysmon.h b/brain/sw/components/sysmon/include/sysmon.h new file mode 100644 index 0000000000..27156ca6a9 --- /dev/null +++ b/brain/sw/components/sysmon/include/sysmon.h @@ -0,0 +1,134 @@ + +#pragma once + +#include "brain_common.h" +#include "freertos/semphr.h" + +// The TIMING_ and COUNTER_ stuff is done as #defines to avoid a +// bunch of C++ typecasting that is just not really very useful. + +// Keep the counter timings at the beginning of the list so counter +// ids are always valid timing ids as well. + +// After defining a new counter or timing here you also need to +// add it's name to SysMon::getInfo(). + +#define COUNTER_UDP_RECV 0 +#define COUNTER_MSG_LOST 1 +#define COUNTER_MSG_BAD_ID 2 +#define COUNTER_MSG_FRAG_OK 3 +#define COUNTER_MSG_SINGLE_OK 4 +#define COUNTER_MSG_SENT 5 +#define COUNTER_PIXEL_UNDERFLOW 6 + +#define COUNTER_LAST 7 + +#define TIMING_RENDER COUNTER_LAST +#define TIMING_SHOW_OUTPUTS (COUNTER_LAST + 1) +#define TIMING_OTA_HTTP_READ (COUNTER_LAST + 2) +#define TIMING_OTA_WRITE (COUNTER_LAST + 3) + +#define TIMING_LAST (COUNTER_LAST + 4) + +#define HISTORY_COUNT 21 + +class SysMon { +public: + + /** + * Initializes SysMon and will start it's task running using the provided + * definition. It is recommended that it be a pretty low priority, but it + * does need a non-trivial stack because it does large log output. + * + * @param taskDef + */ + void start(TaskDef taskDef); + + /** + * The internal task which waits on a timer to periodically output stats. + * @private + */ + void _task(); + + /** + * To time a section of code call this with one of the predefined + * TIMINIG_xxxx values. + * + * @param timing + */ + void startTiming(uint8_t timing); + + /** + * End the timing of a section of code. There should be one end for + * every call to startTiming(). + * + * @param timing + */ + void endTiming(uint8_t timing); + + /** + * Data that is retained for each named type of code section. + */ + struct TimingInfo { + public: + char name[32]; + uint8_t historyCount = 0; + int64_t average = 0; + int64_t max = 0; + int64_t min = 0; + uint64_t value = 0; + }; + + /** + * Get timing info for one of the named timing sections. + * @param timing + * @return + */ + TimingInfo getInfo(uint8_t timing); + + /** + * Increment a named counter. This will also cause the associated + * timer to be recorded so that the time between events can be + * shown in the regular timing output. + * + * @returns The new value of the counter. + */ + uint64_t increment(uint8_t counter); + + // TODO: Reset counters? + + /** + * Outputs to the log immediately. Useful if you are about to reboot + * or something like that and you want the latest data. + */ + void outputToLog(); + +private: + // Timing stuff + int64_t m_starts[TIMING_LAST]; + int64_t m_history[TIMING_LAST][HISTORY_COUNT]; + int64_t* m_firstHistory[TIMING_LAST]; + int64_t* m_nextHistory[TIMING_LAST]; + + // Counter stuff + int64_t m_values[TIMING_LAST]; + + void addMac(); + void addAppDesc(); + void addMemInfo(); + + void addTimeValue(int64_t t, const char* spacing); + void addMetrics(); + + + void addTestVal(int64_t v); + void outputTestVals(); + + // A place to build up our log messages + char m_szTmp[2000]; + char* m_tmpHead; + char* m_tmpEnd; + size_t m_tmpRemaining; +}; + +extern SysMon gSysMon; \ No newline at end of file diff --git a/brain/sw/components/sysmon/sysmon.cpp b/brain/sw/components/sysmon/sysmon.cpp new file mode 100644 index 0000000000..cbf4d4eda4 --- /dev/null +++ b/brain/sw/components/sysmon/sysmon.cpp @@ -0,0 +1,406 @@ +// +// Created by Tom Seago on 2019-06-18. +// + +#include "sysmon.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_log.h" +#include "esp_heap_caps.h" +#include "esp_ota_ops.h" +#include +#include + +#define TAG TAG_SYSMON + +SysMon gSysMon; + +static void glue_task(void* pvParameters) { + ((SysMon*)pvParameters)->_task(); +} + + +void +SysMon::start(TaskDef taskDef) { + for(uint8_t i = 0; i < TIMING_LAST; i++) { + m_nextHistory[i] = m_firstHistory[i] = &(m_history[i][0]); + } + + // Start all the counter timers so that when an event occurs + // they can be ended and restarted + for (uint8_t i = 0; i < COUNTER_LAST; i++) { + startTiming(i); + } + auto tcResult = taskDef.createTask(glue_task, this, nullptr); + + if (tcResult != pdPASS) { + ESP_LOGE(TAG, "Failed to create sysmon task = %d", tcResult); + } else { + ESP_LOGI(TAG, "Sysmon task started"); + } +} + +void +SysMon::_task() { + // Initialization + // Task actions + TickType_t xLastWakeTime = xTaskGetTickCount(); + const TickType_t xFrequency = BRAIN_SYSMON_SECONDS * xPortGetTickRateHz(); + +// outputTestVals(); + + while(1) { + outputToLog(); + vTaskDelayUntil( &xLastWakeTime, xFrequency ); + } + + // Just in case we ever exit, we're supposed to do this. + // This seems to _work_ more or less, but sure doesn't seem like + // the safest thing because like, there are callbacks bro! + vTaskDelete(nullptr); +} + +void +SysMon::startTiming(uint8_t timing) { + m_starts[timing] = esp_timer_get_time(); +} + +void +SysMon::endTiming(uint8_t timing) { + int64_t duration = esp_timer_get_time() - m_starts[timing]; + + // Always store it in "next" + *(m_nextHistory[timing]) = duration; + + // Advance "next" by one + m_nextHistory[timing] += 1; + + // Figure out if this wraps etc. + int64_t* pEnd = &(m_history[timing][HISTORY_COUNT]); + if (m_nextHistory[timing] == pEnd) { + m_nextHistory[timing] = &(m_history[timing][0]); + } + + // When next and first meet after advancement, push first + // to be one further along. This means in effect that next + // always points at an unused location, which means that we have + // HISTORY_COUNT-1 actual values stored. + if (m_nextHistory[timing] == m_firstHistory[timing]) { + m_firstHistory[timing] += 1; + + if (m_firstHistory[timing] == pEnd) { + m_firstHistory[timing] = &(m_history[timing][0]); + } + } + + // Increment the value + m_values[timing] += 1; + +} + +SysMon::TimingInfo +SysMon::getInfo(uint8_t timing) { + TimingInfo info; + info.min = INT64_MAX; + + switch(timing) { + case COUNTER_UDP_RECV: + strncpy(info.name, "UdpRecv", sizeof(info.name)-1); + break; + + case COUNTER_MSG_LOST: + strncpy(info.name, "MsgLost", sizeof(info.name)-1); + break; + + case COUNTER_MSG_BAD_ID: + strncpy(info.name, "MsgBdId", sizeof(info.name)-1); + break; + + case COUNTER_MSG_FRAG_OK: + strncpy(info.name, "MsgFgOk", sizeof(info.name)-1); + break; + + case COUNTER_MSG_SINGLE_OK: + strncpy(info.name, "MsgSgOk", sizeof(info.name)-1); + break; + + case COUNTER_MSG_SENT: + strncpy(info.name, "MsgSent", sizeof(info.name)-1); + break; + + case COUNTER_PIXEL_UNDERFLOW: + strncpy(info.name, "PxUndFl", sizeof(info.name)-1); + break; + + case TIMING_RENDER: + strncpy(info.name, "Render ", sizeof(info.name)-1); + break; + + case TIMING_SHOW_OUTPUTS: + strncpy(info.name, "ShowOut", sizeof(info.name)-1); + break; + + case TIMING_OTA_HTTP_READ: + strncpy(info.name, "OtaRead", sizeof(info.name)-1); + break; + + case TIMING_OTA_WRITE: + strncpy(info.name, "OtaWrte", sizeof(info.name)-1); + break; + + default: + strncpy(info.name, "Unknown", sizeof(info.name)-1); + break; + } + + int64_t* pCursor = m_firstHistory[timing]; + int64_t* pEnd = &(m_history[timing][HISTORY_COUNT]); + while(pCursor != m_nextHistory[timing]) { + info.historyCount++; + info.average += *pCursor; + + if (*pCursor < info.min) { + info.min = *pCursor; + } + if (*pCursor > info.max) { + info.max = *pCursor; + } + + pCursor++; + if (pCursor == pEnd) { + pCursor = &(m_history[timing][0]); + } + } + + if (info.historyCount > 0) { + info.average = info.average / info.historyCount; + } else { + // Fix this up for things that haven't happened so the display is nice + info.min = 0; + } + + info.value = m_values[timing]; + + return info; +} + +uint64_t SysMon::increment(uint8_t counter) { + if (counter > TIMING_LAST) return 0; + + // Stop and restart the timer associated with it + endTiming(counter); + startTiming(counter); + + return m_values[counter]; +} + +/** + * Outputs a time value and suffix, always occupying 5 digits + * plus 2 characters for units prior to the suffix. So 7 characters + * of width total not counting suffix. + * + * @param microSeconds - The time value to add to the output buffer + * @param spacing - A suffix to append after the time value, like spaces or a newline + */ +void SysMon::addTimeValue(int64_t microSeconds, const char* spacing) { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + + // Let's try to keep this to 4 digits of precision + if (microSeconds < 1000) { + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "%5lldus%s", + microSeconds, spacing); + } else if (microSeconds < 1000000) { + // Keep everything integer so we don't get pinned to a core + // by the floating point unit. Unfortunately that means this + // gets a little verbose. + int64_t whole = microSeconds / 1000; + int64_t frac = microSeconds % 1000; + uint8_t wholeWidth = 0; + uint8_t fracWidth = 0; + if (microSeconds < 10000) { + wholeWidth = 1; + fracWidth = 3; + } else if (microSeconds < 100000) { + wholeWidth = 2; + fracWidth = 2; + frac /= 10; + } else { + wholeWidth = 3; + fracWidth = 1; + frac /= 100; + } + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "%*lld.%0*lldms%s", + wholeWidth, whole, fracWidth, frac, spacing); + } else { + // We're getting lazy, just do seconds + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "%5llds %s", + microSeconds / 1000000, spacing); + } +} + +void SysMon::addMetrics() { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + " Name Count Avg Min Max perSec\n" + "-------- ------- ------- ------- ------- --------\n"); + // 123 /s + // 1 2 3 4 + // 1234567890123456789012345678901234567890 + + for(uint8_t i = 0; i < TIMING_LAST; i++) { + TimingInfo info = getInfo(i); + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "%.7s %7llu ", + info.name, info.value); + + addTimeValue(info.average, " "); + addTimeValue(info.min, " "); + addTimeValue(info.max, " "); + + if (info.average == 0) { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + " 0 /s\n"); + } else if (info.average > 1000000) { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + " <1 /s\n"); + } else { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + " %3lld /s\n", + 1000000 / info.average); + + } +// "%7s %5d %lluS %lluS %lluS\n", +// info.name, info.value, info.average, info.min, info.max); + } +} + +void SysMon::addMemInfo() { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + " Memory = free( %6d ) largest( %6d )\n", + xPortGetFreeHeapSize(), + heap_caps_get_largest_free_block(MALLOC_CAP_DEFAULT)); + +} + +void SysMon::addAppDesc() { + auto desc = esp_ota_get_app_description(); + if (!desc) { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, "Unable to get ota app description\n"); + } else { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " version = %s\n", + desc->version); + + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " idf_ver = %s\n", + desc->idf_ver); + + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " built = %s %s\n", + desc->time, desc->date); + + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " ver hash = 0x%08x\n", + GlobalConfig.versionHash()); + + // m_tmpHead = m_tmpEnd - m_tmpRemaining; +// m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " name = %s\n", desc->project_name); +// +// m_tmpHead = m_tmpEnd - m_tmpRemaining; +// m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " time = %s\n", desc->time); +// +// m_tmpHead = m_tmpEnd - m_tmpRemaining; +// m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, " date = %s\n", desc->date); +// + } +} + + +void SysMon::addMac() { + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + " %s\n", GlobalConfig.macStr()); +} + +void SysMon::outputToLog() { + m_szTmp[0] = 0; + m_tmpRemaining = sizeof(m_szTmp) - 1; + + m_tmpEnd = m_szTmp + m_tmpRemaining; + + // Use the next two lines as the template for printing into the output buffer + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, "\n" + "====================== SysMon =======================\n"); + + // An easy to see tag for debugging OTA +// m_tmpHead = m_tmpEnd - m_tmpRemaining; +// m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, +// " George \n"); + + addMac(); + addAppDesc(); + addMemInfo(); + addMetrics(); + + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "=====================================================\n"); + + ESP_LOGE(TAG, "%s", m_szTmp); +} + +void SysMon::addTestVal(int64_t v) { + addTimeValue(v, " = "); + + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "%lld\n", v); +} + +void SysMon::outputTestVals() { + m_szTmp[0] = 0; + m_tmpRemaining = sizeof(m_szTmp) - 1; + + m_tmpEnd = m_szTmp + m_tmpRemaining; + + // Use the next two lines as the template for printing into the output buffer + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "\n" + "== SysMon Test ==\n"); + + addTestVal(0); + addTestVal(1); + addTestVal(21); + addTestVal(321); + addTestVal(4321); + addTestVal(54321); + addTestVal(50021); + addTestVal(654321); + addTestVal(7654321); + addTestVal(87654321); + addTestVal(987654321); + addTestVal(1000); + addTestVal(10000); + addTestVal(100000); + addTestVal(1000000); + addTestVal(10000000); + + m_tmpHead = m_tmpEnd - m_tmpRemaining; + m_tmpRemaining -= snprintf(m_tmpHead, m_tmpRemaining, + "=================================================\n"); + + ESP_LOGE(TAG, "%s", m_szTmp); +} diff --git a/brain/sw/playa/.gitignore b/brain/sw/playa/.gitignore new file mode 100644 index 0000000000..223425d84d --- /dev/null +++ b/brain/sw/playa/.gitignore @@ -0,0 +1,11 @@ +build/* +cmake-build-debug + +sdkconfig.old + +# Ignore local config files. Defaults are in code so you can override +# them by using this file if desired. +spiffs/config.json + +# Local firmwares +*.bin diff --git a/brain/sw/playa/CMakeLists.txt b/brain/sw/playa/CMakeLists.txt new file mode 100644 index 0000000000..ff210e51d9 --- /dev/null +++ b/brain/sw/playa/CMakeLists.txt @@ -0,0 +1,8 @@ +# The following lines of boilerplate have to be in your project's CMakeLists +# in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +set(EXTRA_COMPONENT_DIRS ../components) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(brain) diff --git a/brain/sw/playa/deploy_firmware.sh b/brain/sw/playa/deploy_firmware.sh new file mode 100755 index 0000000000..95e6882401 --- /dev/null +++ b/brain/sw/playa/deploy_firmware.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -e + +# This _should_ be what the idf does but pay attention in case +# they change it. To see what they are doing look in +# ~/esp/esp-idf/tools/cmake/third_party/GetGitRevisionDescription.cmake + +VER=`git describe --always --tags --dirty` + +FWDIR=~/sparklemotion/fw +echo FWDIR is \'${FWDIR}\' +mkdir -p ${FWDIR} + +OUTPUT="${FWDIR}/${VER}.bin" + +cp build/brain.bin "${OUTPUT}" + +echo Deployed firmware to ${OUTPUT} diff --git a/brain/sw/playa/main/CMakeLists.txt b/brain/sw/playa/main/CMakeLists.txt new file mode 100644 index 0000000000..a5e42b4d42 --- /dev/null +++ b/brain/sw/playa/main/CMakeLists.txt @@ -0,0 +1,17 @@ +set(COMPONENT_SRCS + "main.cpp" + "brain.cpp" +) + +set(COMPONENT_ADD_INCLUDEDIRS ".") +set(COMPONENT_REQUIRES brain-common led-renderer + spiffs brain-httpd net shaders sysmon brain-ui esp_https_ota + ) + +register_component() + +# Create a SPIFFS image from the contents of the 'spiffs_image' directory +# that fits the partition named 'storage'. FLASH_IN_PROJECT indicates that +# the generated image should be flashed when the entire project is flashed to +# the target with 'idf.py flash'. +spiffs_create_partition_image(storage ../spiffs FLASH_IN_PROJECT) diff --git a/brain/sw/playa/main/Kconfig.projbuild b/brain/sw/playa/main/Kconfig.projbuild new file mode 100644 index 0000000000..9c6cae1f73 --- /dev/null +++ b/brain/sw/playa/main/Kconfig.projbuild @@ -0,0 +1,99 @@ +menu "Example Configuration" + choice EXAMPLE_USE_ETHERNET + prompt "Ethernet Type" + default EXAMPLE_USE_INTERNAL_ETHERNET if IDF_TARGET_ESP32 + default EXAMPLE_USE_SPI_ETHERNET if !IDF_TARGET_ESP32 + help + Select which kind of Ethernet will be used in the example. + + config EXAMPLE_USE_INTERNAL_ETHERNET + depends on IDF_TARGET_ESP32 + select ETH_USE_ESP32_EMAC + bool "Internal EMAC" + help + Select internal Ethernet MAC controller. + + config EXAMPLE_USE_SPI_ETHERNET + bool "SPI Ethernet Module" + select ETH_USE_SPI_ETHERNET + help + Select external SPI-Ethernet module. + endchoice + + if EXAMPLE_USE_INTERNAL_ETHERNET + choice EXAMPLE_ETH_PHY_MODEL + prompt "Ethernet PHY Device" + default EXAMPLE_ETH_PHY_IP101 + help + Select the Ethernet PHY device to use in the example. + + config EXAMPLE_ETH_PHY_IP101 + bool "IP101" + help + IP101 is a single port 10/100 MII/RMII/TP/Fiber Fast Ethernet Transceiver. + Goto http://www.icplus.com.tw/pp-IP101G.html for more information about it. + + config EXAMPLE_ETH_PHY_RTL8201 + bool "RTL8201/SR8201" + help + RTL8201F/SR8201F is a single port 10/100Mb Ethernet Transceiver with auto MDIX. + Goto http://www.corechip-sz.com/productsview.asp?id=22 for more information about it. + + config EXAMPLE_ETH_PHY_LAN8720 + bool "LAN8720" + help + LAN8720A is a small footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX Support. + Goto https://www.microchip.com/LAN8720A for more information about it. + + config EXAMPLE_ETH_PHY_DP83848 + bool "DP83848" + help + DP83848 is a single port 10/100Mb/s Ethernet Physical Layer Transceiver. + Goto http://www.ti.com/product/DP83848J for more information about it. + endchoice + endif + + if EXAMPLE_USE_SPI_ETHERNET + config EXAMPLE_ETH_SPI_HOST + int "SPI Host Number" + range 0 2 + default 1 + help + Set the SPI host used to communicate with DM9051. + + config EXAMPLE_ETH_SCLK_GPIO + int "SPI SCLK GPIO number" + range 0 33 + default 19 + help + Set the GPIO number used by SPI SCLK. + + config EXAMPLE_ETH_MOSI_GPIO + int "SPI MOSI GPIO number" + range 0 33 + default 23 + help + Set the GPIO number used by SPI MOSI. + + config EXAMPLE_ETH_MISO_GPIO + int "SPI MISO GPIO number" + range 0 33 + default 25 + help + Set the GPIO number used by SPI MISO. + + config EXAMPLE_ETH_CS_GPIO + int "SPI CS GPIO number" + range 0 33 + default 22 + help + Set the GPIO number used by SPI CS. + + config EXAMPLE_ETH_SPI_CLOCK_MHZ + int "SPI clock speed (MHz)" + range 20 80 + default 20 + help + Set the clock speed (MHz) of SPI interface. + endif +endmenu diff --git a/brain/sw/playa/main/brain.cpp b/brain/sw/playa/main/brain.cpp new file mode 100644 index 0000000000..1eca280dea --- /dev/null +++ b/brain/sw/playa/main/brain.cpp @@ -0,0 +1,368 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#include +#include "brain.h" +#include "brain_common.h" + +#include "esp_log.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/timers.h" +#include "esp_https_ota.h" + +#define MAX_URL_SIZE 512 +#define MAX_OTA_SECONDS 300 + +static const uint16_t BRAIN_PORT = 8003; + +static const char* TAG = TAG_BRAIN; + +Brain::Brain() : + m_ledRenderer(m_timeBase, m_pixelCount) +{ + uint8_t mac[6]; + esp_read_mac(mac, ESP_MAC_WIFI_STA); + if (-1 == snprintf((char*) &m_brainId, sizeof(m_brainId), "%02X%02X%02X", mac[3], mac[4], mac[5])) { + abort(); + } +} + +void +Brain::handleMsg(Msg* pMsg) +{ + if (!pMsg) return; + + ESP_LOGD(TAG, "Brain::handleMsg with length=%d", pMsg->used()); + + // The first byte of the message tells us the type + auto nMsgType = pMsg->readByte(); + + switch (nMsgType) { + case static_cast(Msg::Type::BRAIN_PANEL_SHADE): + msgBrainPanelShade(pMsg); + break; + + case static_cast(Msg::Type::BRAIN_ID_REQUEST): + msgBrainIdRequest(pMsg); + break; + + case static_cast(Msg::Type::BRAIN_MAPPING): + msgBrainMapping(pMsg); + break; + + case static_cast(Msg::Type::PING): + msgPing(pMsg); + break; + + case static_cast(Msg::Type::USE_FIRMWARE): + msgUseFirmware(pMsg); + break; + + default: + ESP_LOGW(TAG, "Unknown message type %d", nMsgType); + break; + } +} + +void +Brain::msgBrainPanelShade(Msg* pMsg) { + if (!pMsg) return; + + ESP_LOGD(TAG, "MSG: BrainPanelShade"); + + bool havePongData = pMsg->readBoolean(); + uint8_t *data = nullptr; + size_t pongDataLen = 0; + if (havePongData) { + pongDataLen = pMsg->copyBytes(&data); + ESP_LOGD(TAG, "Read %d bytes for pong", pongDataLen); + } + + m_shadeTree.handleMessage(pMsg); + + // Always force a render immediately after receipt of a panel shade message. + // While this _does_ tie the network processing to the rendering process, this + // is likely what we want??? Time based rendering still should be looked at, but + // this approach should get us the highest interactive responsiveness. + // + // We also turn off local rendering. + // TODO: Implement a thing where if we haven't heard from Pinky in some time we turn local rendering back on + m_ledRenderer.enableLocalRenderLoop(false); + m_ledRenderer.render(); + + if (havePongData) { + sendPong(pMsg->dest, data, pongDataLen); + } + if (data) { + free(data); + } +} + +void +Brain::msgBrainIdRequest(Msg* pMsg) { + if (!pMsg) return; + + ESP_LOGE(TAG, "MSG: BrainIdRequest"); + + sendHello(pMsg->dest); +} + +void +Brain::msgBrainMapping(Msg* pMsg) { + if (!pMsg) return; + + ESP_LOGD(TAG, "MSG: BrainMapping"); +} + +void +Brain::msgPing(Msg* pMsg) { + if (!pMsg) return; + + ESP_LOGD(TAG, "MSG: Ping"); + + bool isPong = pMsg->readBoolean(); + if (!isPong) { + uint8_t* data; + size_t pongDataLen = pMsg->copyBytes(&data); + sendPong(pMsg->dest, data, pongDataLen); + free(data); + } +} + +esp_err_t ota_event(esp_http_client_event_t *evt) +{ + switch (evt->event_id) { + case HTTP_EVENT_ERROR: + ESP_LOGD(TAG, "HTTP_EVENT_ERROR"); + break; + case HTTP_EVENT_ON_CONNECTED: + ESP_LOGD(TAG, "HTTP_EVENT_ON_CONNECTED"); + break; + case HTTP_EVENT_HEADER_SENT: + ESP_LOGD(TAG, "HTTP_EVENT_HEADER_SENT"); + break; + case HTTP_EVENT_ON_HEADER: + ESP_LOGD(TAG, "HTTP_EVENT_ON_HEADER, key=%s, value=%s", evt->header_key, evt->header_value); + break; + case HTTP_EVENT_ON_DATA: + ESP_LOGD(TAG, "HTTP_EVENT_ON_DATA, len=%d", evt->data_len); + break; + case HTTP_EVENT_ON_FINISH: + ESP_LOGD(TAG, "HTTP_EVENT_ON_FINISH"); + break; + case HTTP_EVENT_DISCONNECTED: + ESP_LOGD(TAG, "HTTP_EVENT_DISCONNECTED"); + break; + } + return ESP_OK; +} + + +void +Brain::msgUseFirmware(Msg *pMsg){ + if (!pMsg) return; + + ESP_LOGD(TAG, "MSG: Use Firmware"); + + timeval now; + gettimeofday(&now, nullptr); + + if (m_otaStartedAt.tv_sec > 0) { + auto diff = now.tv_sec - m_otaStartedAt.tv_sec; + ESP_LOGW(TAG, "Got additional OTA request but already in progress for %ld secs", diff); + + if (diff < MAX_OTA_SECONDS) { + ESP_LOGW(TAG, "Max allowable OTA seconds is %d so we will ignore this new request", MAX_OTA_SECONDS); + return; + } + + ESP_LOGW(TAG, "It's been more than %d seconds, so we will start a new OTA process...", MAX_OTA_SECONDS); + } + m_otaStartedAt = now; + stopEverythingForOTA(); + + char* szBuf = (char*)malloc(MAX_URL_SIZE); + if (!szBuf) { + ESP_LOGE(TAG, "Unable to allocate a scratch buffer for the url"); + return; + } + // Start out nice just in case + szBuf[0] = 0; + + auto read = pMsg->readString(szBuf, MAX_URL_SIZE-1); + if (!read) { + ESP_LOGE(TAG, "Firmware URL was empty"); + free(szBuf); + return; + } + // Gotta keep 'er terminated + szBuf[read] = 0; + + ESP_LOGE(TAG, "Was told to use a new firmware %s", szBuf); + + m_otaFetcher.fetchFromUrl(szBuf); + + /* + esp_http_client_config_t clientCfg{}; + clientCfg.url = szBuf; + clientCfg.event_handler = ota_event; + + ESP_LOGE(TAG, "Starting the ota download..."); + + esp_https_ota_handle_t hOta; + esp_https_ota_config_t otaConfig; + otaConfig.http_config = &clientCfg; + + auto err = esp_https_ota_begin(&otaConfig, &hOta); + if (err != ESP_OK || hOta == nullptr) { + ESP_LOGE(TAG, "Failed to start OTA: err=%d", err); + return; + } + + while(1) { + err = esp_https_ota_perform(hOta); + if (err == ESP_OK) break; + + if (err != ESP_ERR_HTTPS_OTA_IN_PROGRESS) { + ESP_LOGE(TAG, "Error during OTA %d", err); + break; + } else { + // ESP_LOGE(TAG, "OTA chunk"); + } + } + + auto finishErr = esp_https_ota_finish(hOta); + if (finishErr != ESP_OK) { + ESP_LOGE(TAG, "Error at OTA finish %d", finishErr); + } else { + ESP_LOGE(TAG, "Hey! That was a good OTA"); + } +// auto err = esp_https_ota(&clientCfg); +// if (err != ESP_OK) { +// ESP_LOGE(TAG, "Failed to do OTA %d", err); +// } else { +// ESP_LOGE(TAG, "OTA Success!!!!!!"); +// } + + // Always restart after OTA because we stopped everything so + // that nothing else interferred with the OTA process +// ESP_LOGE(TAG, "Always reboot at the end of OTA"); +// brain_restart(10); +// +// // Important in case the OTA failed so that we can try again. +// m_otaStartedAt.tv_sec = 0; +// m_otaStartedAt.tv_usec = 0; + */ + + free(szBuf); +} + + +void +Brain::sendPong(const IpPort &port, const uint8_t *data, size_t dataLen) { + Msg *pong = new PingMsg(data, dataLen, true); + pong->dest = port; + + pong->injectFragmentingHeader(); + m_msgSlinger.sendMsg(pong); + pong->release(); +} + + +void maybe_send_hello(TimerHandle_t hTimer) +{ + ((Brain*)pvTimerGetTimerID(hTimer))->maybeSendHello(); +} + +void +Brain::maybeSendHello() +{ + if (otaStarted()) { + ESP_LOGW(TAG, "No more hello because OTA started"); + return; + } + + sendHello(IpPort::BroadcastPinky); +} + +void +Brain::sendHello(const IpPort &port) { + ESP_LOGW(TAG, "Send hello from %s", m_brainId); + auto desc = esp_ota_get_app_description(); + + Msg *pHello = new BrainHelloMsg(m_brainId, nullptr, desc->version, desc->idf_ver); + pHello->dest = port; + + pHello->injectFragmentingHeader(); // Because hatefulness + m_msgSlinger.sendMsg(pHello); + + pHello->release(); +} + +void +Brain::start() { + gSysMon.start(DefaultBrainTasks.sysmon); + m_brainUI.start(DefaultBrainTasks.ui); + + // TODO: Check with the UI to see if the user is holding down a button so that we enter config mode instead of regular boot + + startSecondStageBoot(); +} + +void Brain::startSecondStageBoot() { + GlobalConfig.load(); + + m_netTransport.start(DefaultBrainTasks.net); +// m_netTransport.reconfigure(); + + m_msgSlinger.registerHandler(this); + m_msgSlinger.start(BRAIN_PORT, DefaultBrainTasks.netInput, DefaultBrainTasks.netOutput); + + TimerHandle_t hTimer = xTimerCreate("say hello", pdMS_TO_TICKS(5000), pdTRUE, this, maybe_send_hello); + if (!hTimer) { + ESP_LOGE(TAG, "Failed to create hello timer"); + return; + } + + if (xTimerStart(hTimer, 0) != pdPASS) { + ESP_LOGE(TAG, "failed to start timer"); + return; + } + + m_shadeTree.start(); + ESP_LOGE(TAG, "m_shadeTree started"); + + m_ledRenderer.setShader(&m_shadeTree); +// LEDShaderFiller* filler = new LEDShaderFiller(); +// m_ledRenderer.setShader(filler); + + // Start talking to the pixels + m_ledRenderer.start(DefaultBrainTasks.show, DefaultBrainTasks.render); + + // Some initial debugging stuff + ESP_LOGE(TAG, "------- Brain Start ---------"); + ESP_LOGE(TAG, "id = %s", m_brainId); + ESP_LOGE(TAG, "xPortGetTickRateHz = %d", xPortGetTickRateHz()); + ESP_LOGE(TAG, "pdMS_TO_TICKS(1000) = %d", pdMS_TO_TICKS(1000)); + ESP_LOGE(TAG, "getFPS() = %d", m_timeBase.getFPS()); + ESP_LOGE(TAG, "getFrameDuration() = %d", m_timeBase.getFrameDuration()); + + // Do this last! + m_httpServer.start(); +} + +bool Brain::otaStarted() { + return m_otaStartedAt.tv_sec != 0; +} + +void Brain::stopEverythingForOTA() { + m_msgSlinger.stop(); + m_shadeTree.stop(); + m_ledRenderer.stop(); + // m_httpServer.stop(); + +} + + diff --git a/brain/sw/playa/main/brain.h b/brain/sw/playa/main/brain.h new file mode 100644 index 0000000000..e89113bca7 --- /dev/null +++ b/brain/sw/playa/main/brain.h @@ -0,0 +1,65 @@ +// +// Created by Tom Seago on 2019-06-02. +// + +#pragma once + +#include + +#include "net_transport.h" +#include "msg_handler.h" +#include "msg_slinger.h" + +#include "led-renderer.h" +#include "shade-tree.h" +#include "sysmon.h" +#include "brain-ui.h" +#include "http_server.h" +#include "ota_fetcher.h" + +class Brain : public MsgHandler { +public: + Brain(); + + virtual void handleMsg(Msg* pMsg); + + void start(); + + void maybeSendHello(); + +private: + char m_brainId[8]; + + NetTransport m_netTransport; + MsgSlinger m_msgSlinger; + + TimeBase m_timeBase; + + uint16_t m_pixelCount = BRAIN_DEFAULT_PIXEL_COUNT; + LEDRenderer m_ledRenderer; + + Surface m_surface = Surface(m_pixelCount); + ShadeTree m_shadeTree = ShadeTree(&m_surface); + + BrainUI m_brainUI; + HttpServer m_httpServer; + + OtaFetcher m_otaFetcher; + + timeval m_otaStartedAt{}; + + void startSecondStageBoot(); + + void msgBrainPanelShade(Msg* pMsg); + void msgBrainIdRequest(Msg* pMsg); + void msgBrainMapping(Msg* pMsg); + void msgPing(Msg* pMsg); + void msgUseFirmware(Msg* pMsg); + + void sendHello(const IpPort &port); + void sendPong(const IpPort &port, const uint8_t *data, size_t dataLen); + + bool otaStarted(); + void stopEverythingForOTA(); +}; + diff --git a/brain/sw/playa/main/main.cpp b/brain/sw/playa/main/main.cpp new file mode 100644 index 0000000000..ad10f4bb22 --- /dev/null +++ b/brain/sw/playa/main/main.cpp @@ -0,0 +1,75 @@ +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_event.h" +#include "esp_log.h" + +#include "brain_common.h" +#include "brain.h" + +static Brain brain; + +extern "C" void app_main() +{ + // Basic setup + + // Before anything else we configure logging. Logging starts with a master level set + // for the * tag and is then overridden for subsequent tags. As a general rule, + // the code which is checked in should have a minimal amount of debugging output + // turned on - i.e. the values for all the tags should usually be ESP_LOG_NONE. + // + // Feel free to set higher amounts of debugging locally, but try not to check these + // in without at least adding comments here explaining why the levels are set higher + // for a specific tag. + // + // Yes, we probably want to have a little more centralization of tags but for now we + // do not. + // + // Our standard for tags is to start with a # and then 6 characters right aligned. + // This produces a generally pleasing output that is distinct from the IDF generated + // log messages. + // + // Which brings us to the point - the IDF will generate a lot of logging messages if + // you let it! At a gross level we control these by setting the * tag to NONE and then + // only enabling higher level for our specific tags of interest. From time to time it + // is interesting to see what the IDF is up to though so setting * to a higher level + // can be nice - but again let's try not to check that in. + // + // It's also worth noting that there is a menuconfig setting which will remove logging + // at a preprocessor level. For now we're letting that stuff be really general (i.e. + // we are keeping it set to DEBUG), but there is almost certainly an optimization to + // be had at release time by changing that build setting. + + // Set the basic level for both us and the entire IDF + esp_log_level_set("*", ESP_LOG_WARN); + + // Enable logging for certain IDF components +// esp_log_level_set("ledc", ESP_LOG_DEBUG); + + // Enable logging for our components +// esp_log_level_set(TAG_COMMON, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_SYSMON, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_BRAIN, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_LEDREN, ESP_LOG_DEBUG); +// +// esp_log_level_set(TAG_NET, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_HTTPD, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_MSG, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_SHADER, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_SHDTREE, ESP_LOG_DEBUG); +// esp_log_level_set(TAG_UI, ESP_LOG_DEBUG); + + esp_log_level_set(TAG_OTA, ESP_LOG_DEBUG); +// esp_log_level_set("HTTP_CLIENT", ESP_LOG_DEBUG); + + // Configure the default event loop before anything else happens + ESP_LOGD(TAG_MAIN, "Main task name = %s", pcTaskGetTaskName(nullptr)); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + // SPIFFS is also a very basic thing + ESP_ERROR_CHECK(brain_init_spiffs()); + + // And now we are ready to boot into our happy happy + // C++ componentized world. + brain.start(); +} diff --git a/brain/sw/playa/partitions.csv b/brain/sw/playa/partitions.csv new file mode 100644 index 0000000000..d4cc6adbc0 --- /dev/null +++ b/brain/sw/playa/partitions.csv @@ -0,0 +1,11 @@ +# Name, Type, SubType, Offset, Size +# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild +nvs, data, nvs, , 0x4000 +otadata, data, ota, , 0x2000 +phy_init, data, phy, , 0x1000 +factory, 0, 0, , 1M +coredump, data, coredump,, 64K +ota_0, 0, ota_0, , 1M +ota_1, 0, ota_1, , 1M +# Note that storage has to be in a real hex offset +storage, data, spiffs, , 0xE0000 diff --git a/brain/sw/playa/readme.md b/brain/sw/playa/readme.md new file mode 100644 index 0000000000..a06d81c9a4 --- /dev/null +++ b/brain/sw/playa/readme.md @@ -0,0 +1,25 @@ +## Local Config + +Configuration parameters are now read from SPIFFS at boot from a file named `config.json`. The JSON parsing might be a little fragile so don't get to crazy. + +The default values, key names, and parsing can be found in `brain_config.h` in the `brain_common` component. + +Example config file + + { + "sta_ssid": "Haus", + "sta_pass": "SuperSecret" + } + +Parameters that can be set + + - `sta_ssid` - The SSID for the wifi station interface. Default = `sparklemotion` + - `sta_pass` - The password for the wifi station interface. Default = `sparklemotion` + + +## TODOs + +TODO: Check all code which is called in a timer. I'm seeing stack overflows in the timer service, and a quick google shows that it only has a 512 byte stack so a regular printf will overflow it. + +Update on that TODO - I've changed the size of the high resolution timer task via menuconfig to be 10k, so maybe that fixes it. Knowing what is called from a timer is still a good plan though. + diff --git a/brain/sw/playa/sdkconfig b/brain/sw/playa/sdkconfig new file mode 100644 index 0000000000..26d9033d8a --- /dev/null +++ b/brain/sw/playa/sdkconfig @@ -0,0 +1,668 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) Project Configuration +# +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_TARGET="esp32" + +# +# SDK tool configuration +# +CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +CONFIG_BOOTLOADER_LOG_LEVEL_ERROR=y +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_INFO is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=1 +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT_ENABLED is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" +CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set +CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y +# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set +# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set +CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# CONFIG_PARTITION_TABLE_SINGLE_APP is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +CONFIG_EXAMPLE_USE_INTERNAL_ETHERNET=y +# CONFIG_EXAMPLE_USE_SPI_ETHERNET is not set +# CONFIG_EXAMPLE_ETH_PHY_IP101 is not set +# CONFIG_EXAMPLE_ETH_PHY_RTL8201 is not set +CONFIG_EXAMPLE_ETH_PHY_LAN8720=y +# CONFIG_EXAMPLE_ETH_PHY_DP83848 is not set +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_STACK_CHECK is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +# CONFIG_ESP32_APPTRACE_ENABLE is not set +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +# CONFIG_BT_ENABLED is not set +CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 +CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 +CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 +CONFIG_BT_RESERVE_DRAM=0 +# CONFIG_ADC_FORCE_XPD_FSM is not set +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# CONFIG_ESP_TLS_SERVER is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_MEMMAP_TRACEMEM is not set +# CONFIG_ESP32_MEMMAP_TRACEMEM_TWOBANKS is not set +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_ESP32_DEBUG_STUBS_ENABLE=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_26 is not set +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set +# CONFIG_PM_ENABLE is not set +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=10240 +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_TIMER_TASK_STACK_SIZE=10240 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +# CONFIG_ETH_PHY_INTERFACE_MII is not set +# CONFIG_ETH_RMII_CLK_INPUT is not set +CONFIG_ETH_RMII_CLK_OUTPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT_GPIO0 is not set +CONFIG_ETH_RMII_CLK_OUT_GPIO=17 +CONFIG_ETH_SMI_MDC_GPIO=23 +CONFIG_ETH_SMI_MDIO_GPIO=18 +CONFIG_ETH_PHY_USE_RST=y +CONFIG_ETH_PHY_RST_GPIO=15 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +CONFIG_ETH_USE_SPI_ETHERNET=y +CONFIG_ETH_SPI_ETHERNET_DM9051=y +CONFIG_ETH_DM9051_INT_GPIO=4 +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +CONFIG_OTA_ALLOW_HTTP=y +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_DEBUG_LOG_ENABLE=y +CONFIG_ESP32_WIFI_DEBUG_LOG_DEBUG=y +# CONFIG_ESP32_WIFI_DEBUG_LOG_VERBOSE is not set +# CONFIG_ESP32_WIFI_DEBUG_LOG_MODULE_ALL is not set +CONFIG_ESP32_WIFI_DEBUG_LOG_MODULE_WIFI=y +# CONFIG_ESP32_WIFI_DEBUG_LOG_MODULE_COEX is not set +# CONFIG_ESP32_WIFI_DEBUG_LOG_MODULE_MESH is not set +# CONFIG_ESP32_WIFI_DEBUG_LOG_SUBMODULE is not set +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +# CONFIG_ESP32_ENABLE_COREDUMP is not set +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 +CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 +CONFIG_FMB_QUEUE_LENGTH=20 +CONFIG_FMB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_FMB_SERIAL_BUF_SIZE=256 +CONFIG_FMB_SERIAL_TASK_PRIO=10 +# CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT is not set +CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 +CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_FMB_TIMER_PORT_ENABLED=y +CONFIG_FMB_TIMER_GROUP=0 +CONFIG_FMB_TIMER_INDEX=0 +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_HZ=100 +CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y +# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set +# CONFIG_FREERTOS_ASSERT_DISABLE is not set +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +# CONFIG_FREERTOS_LEGACY_HOOKS is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION is not set +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_DEBUG_INTERNALS is not set +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_TRACING is not set +CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +# CONFIG_LOG_DEFAULT_LEVEL_INFO is not set +CONFIG_LOG_DEFAULT_LEVEL_DEBUG=y +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=4 +CONFIG_LOG_COLORS=y +CONFIG_LWIP_LOCAL_HOSTNAME="brain" +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_IP_FRAG is not set +# CONFIG_LWIP_IP_REASSEMBLY is not set +# CONFIG_LWIP_STATS is not set +# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=6 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 +CONFIG_LWIP_TCP_WND_DEFAULT=5744 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +CONFIG_LWIP_MAX_RAW_PCBS=16 +CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 +# CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN is not set +# CONFIG_MBEDTLS_DEBUG is not set +CONFIG_MBEDTLS_HARDWARE_AES=y +# CONFIG_MBEDTLS_HARDWARE_MPI is not set +# CONFIG_MBEDTLS_HARDWARE_SHA is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set +CONFIG_MBEDTLS_SSL_PROTO_TLS1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +CONFIG_MBEDTLS_RC4_DISABLED=y +# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set +# CONFIG_MBEDTLS_RC4_ENABLED is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_RIPEMD160_C is not set +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +CONFIG_MBEDTLS_ECP_C=y +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +CONFIG_MDNS_MAX_SERVICES=10 +CONFIG_MQTT_PROTOCOL_311=y +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +# CONFIG_OPENSSL_DEBUG is not set +CONFIG_OPENSSL_ASSERT_DO_NOTHING=y +# CONFIG_OPENSSL_ASSERT_EXIT is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPIFFS_MAX_PARTITIONS=3 +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +CONFIG_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_TCPIP_LWIP=y +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WPA_MBEDTLS_CRYPTO=y +# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set + +# Deprecated options for backward compatibility +CONFIG_TOOLPREFIX="xtensa-esp32-elf-" +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +CONFIG_LOG_BOOTLOADER_LEVEL_ERROR=y +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_INFO is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=1 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +# CONFIG_MONITOR_BAUD_9600B is not set +# CONFIG_MONITOR_BAUD_57600B is not set +CONFIG_MONITOR_BAUD_115200B=y +# CONFIG_MONITOR_BAUD_230400B is not set +# CONFIG_MONITOR_BAUD_921600B is not set +# CONFIG_MONITOR_BAUD_2MB is not set +# CONFIG_MONITOR_BAUD_OTHER is not set +CONFIG_MONITOR_BAUD_OTHER_VAL=115200 +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_STACK_CHECK is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_DISABLE_GCC8_WARNINGS is not set +CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 +CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_MEMMAP_TRACEMEM is not set +# CONFIG_MEMMAP_TRACEMEM_TWOBANKS is not set +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +# CONFIG_ULP_COPROC_ENABLED is not set +CONFIG_ULP_COPROC_RESERVE_MEM=0 +CONFIG_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_REDUCE_PHY_TX_POWER=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +# CONFIG_NO_BLOBS is not set +# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=10240 +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=10240 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 +CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 +CONFIG_MB_QUEUE_LENGTH=20 +CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 +CONFIG_MB_SERIAL_BUF_SIZE=256 +CONFIG_MB_SERIAL_TASK_PRIO=10 +# CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT is not set +CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 +CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 +CONFIG_MB_CONTROLLER_STACK_SIZE=4096 +CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 +CONFIG_MB_TIMER_PORT_ENABLED=y +CONFIG_MB_TIMER_GROUP=0 +CONFIG_MB_TIMER_INDEX=0 +# CONFIG_SUPPORT_STATIC_ALLOCATION is not set +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_L2_TO_L3_COPY is not set +# CONFIG_USE_ONLY_LWIP_SELECT is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=6 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5744 +CONFIG_TCP_WND_DEFAULT=5744 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +CONFIG_IP_LOST_TIMER_INTERVAL=120 +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +# End of deprecated options diff --git a/brain/sw/playa/sdkconfig.defaults b/brain/sw/playa/sdkconfig.defaults new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/brain/sw/playa/sdkconfig.defaults @@ -0,0 +1 @@ + diff --git a/brain/sw/playa/spiffs/www/hi.html b/brain/sw/playa/spiffs/www/hi.html new file mode 100644 index 0000000000..5f2e182b5d --- /dev/null +++ b/brain/sw/playa/spiffs/www/hi.html @@ -0,0 +1,11 @@ + + + + + Hi + + +

Hi There!

+

I came from SPIFFS!

+ + \ No newline at end of file diff --git a/brain/sw/playa/spiffs/www/index.html b/brain/sw/playa/spiffs/www/index.html new file mode 100644 index 0000000000..f6086bf0de --- /dev/null +++ b/brain/sw/playa/spiffs/www/index.html @@ -0,0 +1,226 @@ + + + + + BAAAHS Brain + + + + +

Brain Configuration

+ + + + + + + + + + +
MAC Address00:00:00:00:00:00
Rando Message
+ +
Current Config
+ + + + + + + + + + +
SSID
Password
+ + +
New Config
+ +
+ + + + + + + + + +
SSID
Password
+ +
+ + +
+ +

Firmware Update

+ +
+ + +
+ + + +
+
+ + + + + \ No newline at end of file diff --git a/brain/sw/sync-idf.sh b/brain/sw/sync-idf.sh new file mode 100755 index 0000000000..a2e234e78f --- /dev/null +++ b/brain/sw/sync-idf.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +IDF_REV=v4.0-beta2 + +if [ "x${IDF_PATH}x" == "xx" ]; then + echo 'IDF_PATH isn'\''t set. Fix it!' + exit 1 +fi + +set -x + +( + cd $IDF_PATH + git fetch + git checkout $IDF_REV + git submodule update --init +) diff --git a/brc-2019.gif b/brc-2019.gif new file mode 100644 index 0000000000..931ab1f19a Binary files /dev/null and b/brc-2019.gif differ diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 394f02ce46..0000000000 --- a/build.gradle +++ /dev/null @@ -1,92 +0,0 @@ -plugins { - id 'kotlin-multiplatform' version '1.3.21' -} - -repositories { - mavenCentral() -} -group 'com.example' -version '0.0.1' - -apply plugin: 'maven-publish' - -kotlin { - jvm() - js() - // For ARM, should be changed to iosArm32 or iosArm64 - // For Linux, should be changed to e.g. linuxX64 - // For MacOS, should be changed to e.g. macosX64 - // For Windows, should be changed to e.g. mingwX64 -// linuxX64("linux") - sourceSets { - commonMain { - dependencies { - implementation kotlin('stdlib-common') - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.1.1' - } - } - commonTest { - dependencies { - implementation kotlin('test-common') - implementation kotlin('test-annotations-common') - } - } - - jvmMain { - dependencies { - implementation kotlin('stdlib-jdk8') - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1' - } - } - jvmTest { - dependencies { - implementation kotlin('test') - implementation kotlin('test-junit') - } - } - - jsMain { - dependencies { - implementation kotlin('stdlib-js') - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.1.1' - } - } - jsTest { - dependencies { - implementation kotlin('test-js') - } - } - -// linuxMain { -// } -// linuxTest { -// } - } -} - -//task assembleWeb(type: Sync) { -// configurations.each { Configuration c -> -// println(c) -// if (c.isCanBeResolved()) { -// c.each { File file -> -// println "file = $file" -// from(zipTree(file.absolutePath), { -// includeEmptyDirs = false -// include { fileTreeElement -> -// println "fileTreeElement = $fileTreeElement" -// def path = fileTreeElement.path -// path.endsWith(".js") && (path.startsWith("META-INF/resources/") || -// !path.startsWith("META-INF/")) -// } -// }) -// } -// } -// } -// from compileKotlin2Js.destinationDir -// into "${projectDir}/web" -// -// dependsOn classes -//} -// -//assemble.dependsOn assembleWeb \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000000..2f5ab910f9 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,387 @@ +import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import org.gradle.internal.os.OperatingSystem +import org.jetbrains.dokka.gradle.DokkaTask +import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationToRunnableFiles +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack +import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +buildscript { + repositories { + jcenter() + maven("https://kotlin.bintray.com/kotlinx") + maven("https://plugins.gradle.org/m2/") + maven("https://dl.bintray.com/kotlin/kotlin-eap") + } + + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}") + classpath("org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlin}") + classpath("org.jetbrains.dokka:dokka-gradle-plugin:0.10.1") + classpath("com.github.jengelman.gradle.plugins:shadow:5.2.0") + } +} + +val os = OperatingSystem.current() +val lwjglNatives = when { + os.isLinux -> "natives-linux" + os.isMacOsX -> "natives-macos" + else -> throw IllegalArgumentException() +} + +plugins { + kotlin("multiplatform") version Versions.kotlin + kotlin("plugin.serialization") version Versions.kotlin + id("org.jetbrains.dokka") version "0.10.1" + id("com.github.johnrengelman.shadow") version "5.2.0" + id("com.github.ben-manes.versions") version "0.29.0" + id("maven-publish") + id("name.remal.check-dependency-updates") version "1.0.211" +} + +repositories { + jcenter() + maven("https://kotlin.bintray.com/kotlinx") + maven("https://kotlin.bintray.com/ktor") + maven("https://kotlin.bintray.com/kotlin-js-wrappers") + maven("https://dl.bintray.com/kotlin/kotlin-eap") + maven("https://jitpack.io") + maven("https://dl.bintray.com/fabmax/kool") + maven("https://raw.githubusercontent.com/baaahs/kgl/mvnrepo") + maven("https://raw.githubusercontent.com/robolectric/spek/mvnrepo/") + maven("https://dl.bintray.com/subroh0508/maven") // for material-ui +// maven("https://maven.danielgergely.com/repository/releases") TODO when next kgl is released +} + +group = "org.baaahs" +version = "0.0.1" + +kotlin { + jvm() + js { + browser { + useCommonJs() + + webpackTask { + report = true + sourceMaps = true + } + } + } + + sourceSets { + @Suppress("UNUSED_VARIABLE") + val commonMain by getting { + dependencies { + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:${Versions.serializationRuntime}") + implementation("com.soywiz.korlibs.klock:klock:1.12.0") + api("com.danielgergely.kgl:kgl-metadata:${Versions.kgl}") + } + } + @Suppress("UNUSED_VARIABLE") + val commonTest by getting { + dependencies { + implementation(kotlin("test-common")) + implementation(kotlin("test-annotations-common")) + implementation("spek:spek-dsl:${Versions.spek}") + implementation("ch.tutteli.atrium:${Versions.atriumApi}-common:${Versions.atrium}") + } + } + + @Suppress("UNUSED_VARIABLE") + val jvmMain by getting { + dependencies { + implementation("io.ktor:ktor-server-core:${Versions.ktor}") + implementation("io.ktor:ktor-server-netty:${Versions.ktor}") + implementation("io.ktor:ktor-server-host-common:${Versions.ktor}") + implementation("io.ktor:ktor-websockets:${Versions.ktor}") + implementation("ch.qos.logback:logback-classic:1.2.3") + implementation("com.xenomachina:kotlin-argparser:2.0.7") + implementation("org.deepsymmetry:beat-link:0.6.1") + + implementation(files("src/jvmMain/lib/ftd2xxj-2.1.jar")) + implementation(files("src/jvmMain/lib/javax.util.property-2_0.jar")) // required by ftd2xxj + implementation(files("src/jvmMain/lib/TarsosDSP-2.4-bin.jar")) // sound analysis + + implementation("org.joml:joml:1.9.25") + + implementation("com.danielgergely.kgl:kgl-jvm:${Versions.kgl}") + + // GLSL support via LWJGL: + implementation("org.lwjgl:lwjgl-glfw:${Versions.lwjgl}") + implementation("org.lwjgl:lwjgl-opengl:${Versions.lwjgl}") + runtimeOnly("org.lwjgl:lwjgl:${Versions.lwjgl}:$lwjglNatives") + runtimeOnly("org.lwjgl:lwjgl-glfw:${Versions.lwjgl}:$lwjglNatives") + runtimeOnly("org.lwjgl:lwjgl-opengl:${Versions.lwjgl}:$lwjglNatives") + implementation("com.danielgergely.kgl:kgl-lwjgl:${Versions.kgl}") + + // GLSL support via JOGL: + implementation("org.jogamp.gluegen:gluegen-rt-main:${Versions.jogl}") + implementation("org.jogamp.jogl:jogl-all-main:${Versions.jogl}") + implementation("com.danielgergely.kgl:kgl-jogl:${Versions.kgl}") + } + } + @Suppress("UNUSED_VARIABLE") + val jvmTest by getting { + dependencies { + implementation(kotlin("test")) + implementation(kotlin("test-junit")) + implementation(kotlin("test-junit5")) + + runtimeOnly("org.junit.vintage:junit-vintage-engine:${Versions.junit}") + runtimeOnly("org.spekframework.spek2:spek-runner-junit5:${Versions.spek}") + runtimeOnly("org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}") + + implementation("io.mockk:mockk:${Versions.mockk}") + implementation("ch.tutteli.atrium:${Versions.atriumApi}:${Versions.atrium}") + + // For RunOpenGLTests: + implementation("org.junit.platform:junit-platform-launcher:1.6.2") + } + } + + @Suppress("UNUSED_VARIABLE") + val jsMain by getting { + kotlin.srcDir("src/jsMain/js") + + dependencies { + implementation("org.jetbrains.kotlinx:kotlinx-html-js:${Versions.kotlinxHtml}") + + implementation("com.danielgergely.kgl:kgl-js:${Versions.kgl}") + + // kotlin react: + implementation("org.jetbrains:kotlin-react:${Versions.kotlinReact}") + implementation("org.jetbrains:kotlin-react-dom:${Versions.kotlinReact}") + implementation("org.jetbrains:kotlin-styled:${Versions.kotlinStyled}") + implementation(npm("styled-components", Versions.styledComponents)) + implementation(npm("inline-style-prefixer", "^6.0.0")) + + implementation(npm("babel-loader", "^8.0.6")) + implementation(npm("@babel/core", "^7.4.5")) + implementation(npm("@babel/plugin-proposal-class-properties", "^7.4.4")) + implementation(npm("@babel/plugin-proposal-object-rest-spread", "^7.4.4")) + implementation(npm("@babel/preset-env", "^7.4.5")) + implementation(npm("@babel/preset-react", "^7.0.0")) +// implementation(npm("prettier", "1.19.1")) + + implementation(npm("camera-controls", "^1.25.3")) + implementation(npm("chroma-js", "^2.0.3")) + implementation(npm("css-loader", "^2.1.1")) + + implementation("net.subroh0508.kotlinmaterialui:core:${Versions.kotlinMaterialUi}") + implementation("net.subroh0508.kotlinmaterialui:lab:${Versions.kotlinMaterialUi}") + implementation(npm("@material-ui/core", "~4.11")) + implementation(npm("@material-ui/icons", "~4.9.1")) + + implementation(npm("node-sass", "^4.12.0")) + implementation(npm("react", "^16.13.1")) + + // TODO: re-enable when https://github.com/atlassian/react-beautiful-dnd/pull/1890 is addressed +// implementation(npm("react-beautiful-dnd", "^13.0.0")) + // + implementation(npm("css-box-model", "^1.2.0")) + implementation(npm("raf-schd", "^4.0.2")) + implementation(npm("react-redux", "^7.2.0")) + implementation(npm("use-memo-one", "^1.1.1")) + implementation(npm("memoize-one", "^5.1.1")) + // + + implementation(npm("react-compound-slider", "^2.0.0")) + implementation(npm("react-dom", "^16.13.1")) + implementation(npm("react-draggable", "^3.3.0")) + implementation(npm("react-hot-loader", "^4.11.0")) + implementation(npm("sass-loader", "^7.1.0")) + implementation(npm("style-loader", "^0.23.1")) + implementation(npm("three", "^0.120.0", generateExternals = false)) + implementation(npm("@fortawesome/fontawesome-free", "^5.12.1")) + implementation(npm("react-mosaic-component", "^4.0.0")) + implementation(npm("react-error-boundary", "^2.2.2")) + implementation(npm("resize-observer-polyfill", "^1.5.1")) + implementation(npm("react-ace", "^9.0.0")) + implementation(npm("ace-builds", "^1.4.11")) + implementation(npm("markdown-it", "~11.0.0")) + implementation(npm("normalize.css", "^7.0.0")) + implementation(npm("@blueprintjs/core", "^3.24.0")) + implementation(npm("@blueprintjs/icons", "^3.14.0")) + } + } + @Suppress("UNUSED_VARIABLE") + val jsTest by getting { + dependencies { + implementation(kotlin("test-js")) + implementation("ch.tutteli.atrium:${Versions.atriumApi}-js:${Versions.atrium}") + } + } + + sourceSets.all { + languageSettings.apply { + progressiveMode = true + useExperimentalAnnotation("kotlin.ExperimentalStdlibApi") + } + } + } +} + +// workaround for https://youtrack.jetbrains.com/issue/KT-24463: +tasks.named("compileKotlinJvm") { + dependsOn(":copySheepModel") +} + +tasks.create("copySheepModel") { + from("src/commonMain/resources") + into("build/classes/kotlin/jvm/main") +} + +tasks.withType(Kotlin2JsCompile::class) { + kotlinOptions.sourceMap = true + kotlinOptions.sourceMapEmbedSources = "always" +} + +// see https://discuss.kotlinlang.org/t/kotlin-js-react-unstable-building/15582/6 +tasks.named("compileKotlinJs") { + val outDir = outputFile.parent + val tempOutDir = "$outDir/kotlin-out" + kotlinOptions.outputFile = "$tempOutDir/${outputFile.name}" + doLast { + copy { + from(tempOutDir) + into(outDir) + } + } +} + +tasks.withType(KotlinWebpack::class) { + sourceMaps = true + inputs.dir("src/jsMain/js") +} + +tasks.withType(KotlinCompile::class) { + kotlinOptions.jvmTarget = "1.8" +} + +tasks.named("jsProcessResources") { + dependsOn("kotlinNpmInstall") // for node_modules stuff + + from("build/js/node_modules/requirejs") { include("require.js") } + from("build/js/node_modules/three/build") { include("three.js") } + from("build/js/node_modules/@fortawesome") { + include("fontawesome-free/css/all.min.css") + include("fontawesome-free/webfonts/*") + } + from("build/js/node_modules/normalize.css") { + include("normalize.css") + } + from("build/js/node_modules/@blueprintjs") { + into("blueprintjs") + include("core/lib/css/blueprint.css") + include("icons/lib/css/blueprint-icons.css") + } + + doLast { + createResourceFilesList(File(buildDir, "processedResources/js/main")) + } +} + +tasks.named("jvmProcessResources") { + from("build/distributions") { include("sparklemotion.js") } + + doLast { + createResourceFilesList(File(buildDir, "processedResources/jvm/main")) + } +} + +val dokka by tasks.getting(DokkaTask::class) { + outputFormat = "html" + outputDirectory = "$buildDir/javadoc" + + configuration { + jdkVersion = 8 + reportUndocumented = true + } +} + +tasks.create("runPinkyJvm") { + dependsOn("compileKotlinJvm") + dependsOn("jsBrowserDevelopmentWebpack") + main = "baaahs.PinkyMainKt" + + systemProperties["java.library.path"] = file("src/jvmMain/jni") + + val jvmMain = kotlin.targets["jvm"].compilations["main"] as KotlinCompilationToRunnableFiles + classpath = files(jvmMain.output) + jvmMain.runtimeDependencyFiles + if (isMac()) { + jvmArgs = listOf( + "-XstartOnFirstThread", // required for OpenGL: https://github.com/LWJGL/lwjgl3/issues/311 + "-Djava.awt.headless=true" // required for Beat Link; otherwise we get this: https://jogamp.org/bugzilla/show_bug.cgi?id=485 + ) + } +} + +tasks.create("runBrainJvm") { + dependsOn("compileKotlinJvm") + main = "baaahs.BrainMainKt" + + val jvmMain = kotlin.targets["jvm"].compilations["main"] as KotlinCompilationToRunnableFiles + classpath = files(jvmMain.output) + jvmMain.runtimeDependencyFiles +} + +tasks.create("runBridgeJvm") { + dependsOn("compileKotlinJvm") + main = "baaahs.SimulatorBridgeKt" + + val jvmMain = kotlin.targets["jvm"].compilations["main"] as KotlinCompilationToRunnableFiles + classpath = files(jvmMain.output) + jvmMain.runtimeDependencyFiles +} + +tasks.create("runGlslJvmTests") { + dependsOn("compileTestKotlinJvm") + main = "baaahs.RunOpenGLTestsKt" + + val jvmTest = kotlin.targets["jvm"].compilations["test"] as KotlinCompilationToRunnableFiles + classpath = files(jvmTest.output) + jvmTest.runtimeDependencyFiles + if (isMac()) { + jvmArgs = listOf("-XstartOnFirstThread") // required for OpenGL: https://github.com/LWJGL/lwjgl3/issues/311 + } +} + +tasks.create("packageClientResources") { + dependsOn("jsProcessResources", "jsBrowserWebpack") + from(project.file("build/processedResources/js/main")) + from(project.file("build/distributions")) + into("build/classes/kotlin/jvm/main/htdocs") +} + +tasks.named("jvmJar") { + dependsOn("packageClientResources") +} + +tasks.create("shadowJar") { + dependsOn("jvmJar") + from(tasks.named("jvmJar").get().archiveFile) + configurations = listOf(project.configurations["jvmRuntimeClasspath"]) + manifest { + attributes["Main-Class"] = "baaahs.PinkyMainKt" + } +} + +tasks.withType(Test::class) { + useJUnitPlatform { + includeEngines.add("junit-vintage") + includeEngines.add("spek2") + } +} + +tasks.named("jvmTest") { +// dependsOn("runGlslJvmTests") +} + +tasks.withType { + fun isNonStable(version: String): Boolean = + "eap|alpha|beta|rc".toRegex().containsMatchIn(version.toLowerCase()) + + rejectVersionIf { + isNonStable(candidate.version) && !isNonStable(currentVersion) + } +} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 0000000000..c39a297b0f --- /dev/null +++ b/buildSrc/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + `kotlin-dsl` +} + +repositories { + jcenter() +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt new file mode 100644 index 0000000000..aaf9cb5020 --- /dev/null +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -0,0 +1,27 @@ +object Versions { + const val kotlin = "1.4.10" + const val coroutines = "1.4.1" + const val serializationRuntime = "1.0.1" + const val ktor = "1.4.1" + + // GL: + const val kgl = "0.3-baaahs" + const val jogl = "2.3.2" + const val lwjgl = "3.2.3" + + // JS: + const val wrappersBuild = "pre.121-kotlin-$kotlin" + const val kotlinReact = "16.13.1-$wrappersBuild" + const val kotlinxHtml = "0.7.2" + const val styledComponents = "5.2.0" + const val kotlinStyled = "$styledComponents-$wrappersBuild" + const val kotlinMaterialUi = "0.5.3" + + // Test: + const val junit = "5.7.0" + const val spek = "2.0.11-rc.1" // custom build with LetValues enabled + const val mockk = "1.10.2" + const val atrium = "0.14.0" + const val atriumApi = "atrium-fluent-en_GB" + const val coroutinesTest = "1.4.1" +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/util.kt b/buildSrc/src/main/kotlin/util.kt new file mode 100644 index 0000000000..5c1eaf3b1a --- /dev/null +++ b/buildSrc/src/main/kotlin/util.kt @@ -0,0 +1,24 @@ +import org.gradle.internal.os.OperatingSystem +import java.io.File +import java.nio.file.* +import java.nio.file.attribute.BasicFileAttributes + +fun createResourceFilesList(baseDir: File) { + val basePath = baseDir.toPath() + val list = mutableListOf() + Files.walkFileTree(basePath, object : SimpleFileVisitor() { + override fun visitFile(file: Path, attrs: BasicFileAttributes?): FileVisitResult { + val path = basePath.relativize(file) + if (path.toString() != "_RESOURCE_FILES_") { + list.add(path.toString()) + } + return FileVisitResult.CONTINUE + } + }) + + list.sort() + val outFile = File(baseDir, "_RESOURCE_FILES_") + Files.write(outFile.toPath(), list, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING) +} + +fun isMac(): Boolean = OperatingSystem.current().isMacOsX \ No newline at end of file diff --git a/data/BeachRave.sparkle b/data/BeachRave.sparkle new file mode 100644 index 0000000000..e8c0df6960 --- /dev/null +++ b/data/BeachRave.sparkle @@ -0,0 +1 @@ +{"title":"Beach Rave","patches":[{"shaderInstanceIds":["cylindricalProjection-inst","darkness-inst","brightness-inst","saturation-inst","flipY-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Scenes":["control"],"Patches":["control2"],"More Controls":["colorColorPickerControl","brightnessSliderControl","saturationSliderControl"]},"scenes":[{"title":"Pleistocene","patches":[],"eventBindings":[],"controlLayout":{},"patchSets":[{"title":"Red Yellow Green","patches":[{"shaderInstanceIds":["glslHueTestPattern-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Fire","patches":[{"shaderInstanceIds":["fireBall-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Patches":["intensitySliderControl"]}},{"title":"Checkerboard","patches":[{"shaderInstanceIds":["checkerboard-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Patches":["checkerboardSizeSliderControl"]}},{"title":"Wobbly Checkerboard","patches":[{"shaderInstanceIds":["checkerboard-inst","ripple-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Patches":["checkerboardSizeSliderControl"]}},{"title":"White","patches":[{"shaderInstanceIds":["untitledPaintShader-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}}]},{"title":"Beotch","patches":[],"eventBindings":[],"controlLayout":{},"patchSets":[{"title":"Blue Aqua Green","patches":[{"shaderInstanceIds":["anotherGlslHueTestPattern-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Gaia's Orgasm","patches":[{"shaderInstanceIds":["untitledPaintShader2-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Fire Dancer","patches":[{"shaderInstanceIds":["untitledPaintShader3-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Circular Dependency","patches":[{"shaderInstanceIds":["untitledPaintShader4-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Huenami","patches":[{"shaderInstanceIds":["huenami-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Sunset","patches":[{"shaderInstanceIds":["sunset-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}}]}],"layouts":{"panelNames":["Scenes","Patches","More Controls","Preview","Controls"],"map":{"default":{"rootNode":{"direction":"row","splitPercentage":70,"first":{"direction":"column","splitPercentage":20,"first":"Scenes","second":{"direction":"column","splitPercentage":60,"first":"Patches","second":"More Controls"}},"second":{"direction":"column","splitPercentage":20,"first":"Preview","second":"Controls"}}}}},"shaders":{"cylindricalProjection":{"title":"Cylindrical Projection","type":"Projection","src":"// Cylindrical Projection\n// !SparkleMotion:internal\n\nuniform sampler2D pixelCoordsTexture;\n\nstruct ModelInfo {\n vec3 center;\n vec3 extents;\n};\nuniform ModelInfo modelInfo;\n\nconst float PI = 3.141592654;\n\nvec2 project(vec3 pixelLocation) {\n vec3 pixelOffset = pixelLocation - modelInfo.center;\n vec3 normalDelta = normalize(pixelOffset);\n float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π]\n if (theta < 0.0) theta += (2.0f * PI); // theta in range [0,2π)\n float u = theta / (2.0f * PI); // u in range [0,1)\n float v = (pixelOffset.y + modelInfo.extents.y / 2.0f) / modelInfo.extents.y;\n return vec2(u, v);\n}\n\nvec2 main(vec2 rasterCoord) {\n int rasterX = int(rasterCoord.x);\n int rasterY = int(rasterCoord.y);\n \n vec3 pixelCoord = texelFetch(pixelCoordsTexture, ivec2(rasterX, rasterY), 0).xyz;\n return project(pixelCoord);\n}"},"darkness":{"title":"Darkness","type":"Paint","src":"void main(void) {\n gl_FragColor = vec4(0., 0., 0., 1.);\n}"},"brightness":{"title":"Brightness","type":"Filter","src":"uniform float brightness; // @@Slider min=0 max=1.25 default=1\n\nvec4 main(vec4 inColor) {\n vec4 clampedColor = clamp(inColor, 0., 1.);\n return vec4(clampedColor.rgb * brightness, clampedColor.a);\n}"},"saturation":{"title":"Saturation","type":"Filter","src":"uniform float saturation; // @@Slider min=0 max=1.25 default=1\n\n// All components are in the range [0…1], including hue.\nvec3 rgb2hsv(vec3 c)\n{\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n \n\n// All components are in the range [0…1], including hue.\nvec3 hsv2rgb(vec3 c)\n{\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\nvec4 main(vec4 inColor) {\n if (saturation == 1.) return inColor;\n\n vec4 clampedColor = clamp(inColor, 0., 1.);\n vec3 hsv = rgb2hsv(clampedColor.rgb);\n hsv.y *= saturation;\n return vec4(hsv2rgb(hsv), clampedColor.a);\n}"},"flipY":{"title":"Flip Y","type":"Distortion","src":"vec2 main(vec2 uvIn) {\n return vec2(uvIn.x, 1. - uvIn.y);\n}"},"glslHueTestPattern":{"title":"GLSL Hue Test Pattern","type":"Paint","src":"uniform vec2 resolution;\nvoid main(void) {\n gl_FragColor = vec4(gl_FragCoord.xy / resolution, 0.0, 1.0);\n}"},"fireBall":{"title":"Fire Ball","type":"Paint","src":"// Fire Ball\n// From http://glslsandbox.com/e#61108.0\n\n// Fire ball by David Robles\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\n//#extension GL_OES_standard_derivatives : enable\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\nuniform float time;\nuniform vec2 resolution;\n\nconst float PI = 3.141592;\n\nvec2 hash( vec2 p ) // replace this by something better\n{\n p = vec2( dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)) );\n return -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p )\n{\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\n vec2 i = floor( p + (p.x+p.y)*K1 );\n vec2 a = p - i + (i.x+i.y)*K2;\n float m = step(a.y,a.x);\n vec2 o = vec2(m,1.0-m);\n vec2 b = a - o + K2;\n vec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot( n, vec3(70.0) );\n}\n\nfloat circleShape(vec2 coord, vec2 pos){\n float dist = distance(coord, pos);\n return clamp( log(dist*(15.+4.*noise(vec2(time*.8)))) ,0.,1.);\n}\n\nvec2 sineWave(vec2 p){\n float Ax = .05;\n float wx = 1.50 * PI;\n float x = sin(wx * p.x) * Ax * sin(noise(vec2(time)));\n\n float Ay = .05;\n float wy = PI * 10.;\n float y = sin(wy*p.y) * Ay * noise(vec2(time));\n\n return vec2(p.x + x, p.y + y);\n}\n\nvoid main( void ) {\n\n vec2 pos = gl_FragCoord.xy / resolution.xy;\n vec2 uv = pos;\n\n uv += vec2(-.5, -.5);\n uv *= vec2(2.3, 1.3);\n\n float luz = clamp(1.05 - (pow(uv.x, 2.) + pow(uv.y * 1.6, 6.))*2., 0., 1.);\n //vec3 color = vec3(0.3059, 0.1922, 0.0431);\n vec3 color = vec3(0.7333, 0.2902, 0.0314);\n //vec3 color = vec3(0.3882, 0.1686, 0.251);\n float grad = circleShape(sineWave(pos), vec2(.5, .32));\n\n float ruido = 0.;\n\n pos *= 5.0;\n float xoff = 1.05;\n float yoff = 2.1;\n mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\n ruido = 0.7500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n\n\n ruido = 0.5 + 0.5*ruido;\n ruido = clamp(ruido, 0., 1.);\n\n /////////////////////////////////////////////////////////////\n pos = uv;\n pos *= 3.0;\n float ruido2 = 0.;\n xoff = 1.5;\n yoff = 1.5;\n m = mat2( -2.1, .5, -.5, 2.1 );\n ruido2 = 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.0625*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n\n ruido2 = 0.5 + 0.5*ruido2;\n ruido2 = clamp(ruido2, 0., 1.);\n\n float f = 0.;\n f += 1.0 - ( (1.0-luz) / (ruido2 + 0.001) );\n f /= grad;\n f /= ruido;\n\n gl_FragColor = vec4(f*color*luz*(.5-.5*noise(vec2(time*.8))), 1.);\n //gl_FragColor = vec4(color/grad, 1.);\n\n}"},"checkerboard":{"title":"Checkerboard","type":"Paint","src":"uniform float checkerboardSize = 10.0; // @@Slider min=.001 max=1 default=.1\nuniform float beat;\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 pos = floor(fragCoord / checkerboardSize + beat);\n vec3 patternMask = vec3(mod(pos.x + mod(pos.y, 2.0), 2.0));\n fragColor = vec4(patternMask.x + beat, patternMask.yz, 1.);\n}"},"ripple":{"title":"Ripple","type":"Distortion","src":"uniform float time;\n\nvec2 main(vec2 uvIn) {\n vec2 p = -1.0 + 2.0 * uvIn;\n float len = length(p);\n return uvIn + (p/len)*cos(len*12.0-time*4.0)*0.03;\n}"},"untitledPaintShader":{"title":"Untitled Paint Shader","type":"Paint","src":"uniform float time;\n\nvoid main(void) {\n gl_FragColor = vec4(gl_FragCoord.x, gl_FragCoord.y, mod(time, 1.), 1.);\n}"},"anotherGlslHueTestPattern":{"title":"Another GLSL Hue Test Pattern","type":"Paint","src":"uniform vec2 resolution;\nuniform float redness;\nvoid main(void) {\n gl_FragColor = vec4(redness, gl_FragCoord.xy / resolution, 1.0);\n}"},"untitledPaintShader2":{"title":"Untitled Paint Shader","type":"Paint","src":"// Gaia's Orgasm\n// From http://glslsandbox.com/e#46597\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\nuniform float time;\nuniform vec2 resolution;\n//from https://www.shadertoy.com/view/4dl3zn\n\nvoid main( void ) {\n\n\tvec2 uv = -1.0 + 2.0*gl_FragCoord.xy / resolution.xy;\n\tuv.x *= resolution.x / resolution.y;\n\n // background\n\tvec3 color = vec3(0.8 + 0.2*uv.y);\n\n // bubbles\n\tfor( int i=0; i<40; i++ )\n\t{\n // bubble seeds\n\t\tfloat pha = sin(float(i)*546.13+1.0)*0.5 + 0.5;\n\t\tfloat siz = pow( sin(float(i)*651.74+5.0)*0.5 + 0.5, 4.0 );\n\t\tfloat pox = sin(float(i)*321.55+4.1) * resolution.x / resolution.y;\n\n // buble size, position and color\n\t\tfloat rad = 0.1 + 0.5*siz;\n\t\tvec2 pos = vec2( pox, -1.0-rad + (2.0+2.0*rad)*mod(pha+0.1*time*(0.2+0.8*siz),1.0));\n\t\tfloat dis = length( uv - pos );\n\t\tvec3 col = mix( vec3(0.94,0.3,0.0), vec3(0.1,0.4,0.8), 0.5+0.5*sin(float(i)*1.2+1.9));\n\t\t// col+= 8.0*smoothstep( rad*0.95, rad, dis );\n\n // render\n\t\tfloat f = length(uv-pos)/rad;\n\t\tf = sqrt(clamp(1.0-f*f,0.0,1.0));\n\t\tcolor -= col.zyx *(1.0-smoothstep( rad*0.95, rad, dis )) * f;\n\t}\n\n // vigneting\n\tcolor *= sqrt(1.5-0.5*length(uv));\n\n\tgl_FragColor = vec4(color,1.0);\n}\n"},"untitledPaintShader3":{"title":"Untitled Paint Shader","type":"Paint","src":"// Fire Dancer\n// From http://glslsandbox.com/e#55301\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\n// SPARKLEMOTION GADGET: Slider {name: \"Scale\", initialValue: 10.0, minValue: 0.0, maxValue: 100.0}\nuniform float scale;\n\nuniform float time;\nuniform vec2 resolution;\nuniform float beat;\n\n#define N 6\n\nvoid main( void ) {\n\tvec2 v= (gl_FragCoord.xy-(resolution*0.5))/min(resolution.y,resolution.x)*scale;\n\tfloat t=time * 0.4,r=0.0;\n\tfor (int i=0;i 0.0) return tx; \n float hm = map(ray.origin + ray.direction * tm); \n float tmid = 0.0;\n for(int i = 0; i < NUM_STEPS; i++) {\n tmid = mix(tm,tx, hm/(hm-hx)); \n p = ray.origin + ray.direction * tmid; \n \tfloat hmid = map(p);\n\t\tif(hmid < 0.0) {\n \ttx = tmid;\n hx = hmid;\n } else {\n tm = tmid;\n hm = hmid;\n }\n }\n return tmid;\n}\n\nfloat diffuse(vec3 n,vec3 l,float p) {\n return pow(dot(n,l) * 0.4 + 0.6,p);\n}\nfloat specular(vec3 n,vec3 l,vec3 e,float s) { \n float nrm = (s + 8.0) / (PI * 8.0);\n return pow(max(dot(reflect(e,n),l),0.0),s) * nrm;\n}\n\n\nbool solveQuadratic(float a, float b, float c, out float t0, out float t1){\n\tfloat discrim = b * b - 4.0 * a * c;\n\tif (discrim < 0.0) return false;\n\tfloat rootDiscrim = sqrt(discrim);\n\tfloat q = (b > 0.0) ? -0.5 * (b + rootDiscrim) : -0.5 * (b - rootDiscrim); \n\tt1 = q / a; \n\tt0 = c / q;\n\treturn true;\n}\n\nbool PlanetSphereIntersect( Ray ray, float rad, vec3 pos, inout float t0, inout float t1 ) {\n\tvec3 L = ray.origin - pos;\n\tfloat a = dot( ray.direction, ray.direction );\n\tfloat b = 2.0 * dot( ray.direction, L );\n\tfloat c = dot( L, L ) - (rad * rad);\n\n\tif (!solveQuadratic( a, b, c, t0, t1))\n\t\treturn false;\n\t\n\tfloat temp;\n\tif (t0 > t1)\n\t{\n\t\ttemp = t0;\n\t\tt0 = t1;\n\t\tt1 = temp;\n\t}\n\treturn true;\n}\n\nvec3 calculateSkySphereColor(Ray r, float tmin, float tmax, vec3 sunDirection){ \n vec3 earthCenter = vec3(0, -1.0 * EARTH_RADIUS, 0);\n\tvec3 betaR = vec3(3.8e-6, 13.5e-6, 33.1e-6); \n\tvec3 betaM = vec3(21e-6); \n\tfloat Hr = 7994.0;\n\tfloat Hm = 1200.0;\n\tfloat t0, t1; \n\tif (!PlanetSphereIntersect(r, ATMOSPHERE_RADIUS, earthCenter, t0, t1) || t1 < 0.0) return vec3(0); \n\tif (t0 > tmin && t0 > 0.0) tmin = t0; \n\tif (t1 < tmax) tmax = t1; \n float segmentLength = (tmax - tmin) / float(SKY_SAMPLES); \n\tfloat tCurrent = tmin; \n\tvec3 sumR = vec3(0); // rayleigh contribution\n\tvec3 sumM = vec3(0); // mie contribution \n\tfloat opticalDepthR = 0.0;\n\tfloat opticalDepthM = 0.0; \n\tfloat mu = dot(r.direction, sunDirection); // mu in the paper which is the cosine of the angle between the sun direction and the ray direction \n\tfloat phaseR = 3.0 / (16.0 * PI) * (1.0 + mu * mu); \n\tfloat g = 0.76; \n\tfloat phaseM = 3.0 / (8.0 * PI) * ((1.0 - g * g) * (1.0 + mu * mu)) / ((2.0 + g * g) * pow(max(0.0, 1.0 + g * g - 2.0 * g * mu), 1.5)); \n\n for (int i = 0; i < SKY_SAMPLES; ++i) { \n\t\tvec3 samplePosition = r.origin + (tCurrent) * r.direction; \n\t\tfloat height = length(samplePosition - earthCenter) - EARTH_RADIUS; \n\n\t\t// compute optical depth for light\n\t\tfloat hr = exp(-height / Hr) * segmentLength; \n\t\tfloat hm = exp(-height / Hm) * segmentLength; \n\t\topticalDepthR += hr; \n\t\topticalDepthM += hm; \n\n\t\t// light optical depth\n\t\tfloat t0Light, t1Light; \n\t\tPlanetSphereIntersect(Ray(samplePosition, sunDirection), ATMOSPHERE_RADIUS, earthCenter, t0Light, t1Light); \n\t\tfloat segmentLengthLight = t1Light / float(SUN_SAMPLES);\n\t\tfloat tCurrentLight = 0.0; \n\t\tfloat opticalDepthLightR = 0.0;\n\t\tfloat opticalDepthLightM = 0.0; \n\t\tint jCounter = 0; \n for (int j = 0; j < SUN_SAMPLES; ++j) { \n\t\t\tvec3 samplePositionLight = samplePosition + (tCurrentLight) * sunDirection; \n\t\t\tfloat heightLight = length(samplePositionLight - earthCenter) - EARTH_RADIUS; \n\t\t\tif (heightLight < 0.0) break;\n\t\t\tjCounter += 1;\n\t\t\topticalDepthLightR += exp(-heightLight / Hr) * segmentLengthLight; \n\t\t\topticalDepthLightM += exp(-heightLight / Hm) * segmentLengthLight; \n\t\t\ttCurrentLight += segmentLengthLight; \n\t\t} \n\t\tif (jCounter == SUN_SAMPLES) { \n\t\t\tvec3 tau = betaR * (opticalDepthR + opticalDepthLightR) + betaM * 1.1 * (opticalDepthM + opticalDepthLightM); \n\t\t\tvec3 attenuation = vec3(exp(-tau.x), exp(-tau.y), exp(-tau.z)); \n\t\t\tsumR += attenuation * hr; \n\t\t\tsumM += attenuation * hm; \n\t\t} \n\t\ttCurrent += segmentLength; \n } \n\n vec3 attenuate_vec = (sumR * betaR * phaseR + sumM * betaM * phaseM) * SUN_POWER;\n //return attenuate_vec;\n // color map\n if (attenuate_vec.x < 1.413) { \n attenuate_vec.x = pow(attenuate_vec.x * 0.38317, 1.0 / 2.2); \n } else { \n attenuate_vec.x = 1.0 - exp(-attenuate_vec.x);\n } \n if (attenuate_vec.y < 1.413){\n attenuate_vec.y = pow(attenuate_vec.y * 0.38317, 1.0 / 2.2); \n } else { \n attenuate_vec.y = 1.0 - exp(-attenuate_vec.y);\n } \n if (attenuate_vec.z < 1.413){\n attenuate_vec.z = pow(attenuate_vec.z * 0.38317, 1.0 / 2.2); \n } else { \n attenuate_vec.z = 1.0 - exp(-attenuate_vec.z);\n }\n return attenuate_vec;\n} \n\nvec3 calculateSkyColor(Ray r, float tmin, float tmax, vec3 sunDirection){\n return calculateSkySphereColor(r, tmin, tmax, sunDirection);\n}\n\nvec3 perspectiveCameraRayDirection(in vec2 pixelCoord) {\n vec2 pixelPos = (pixelCoord) * 2.0 - 1.0;\n vec3 camRight = vec3( 1.0, 0.0, 0.0);\n vec3 camUp = vec3( 0.0, 1.0, 0.0);\n vec3 camForward = vec3(0.0, 0.0, 1.0);\n return normalize( pixelPos.x * camRight + pixelPos.y * camUp + camForward );\n}\n\n\nvec3 getSeaColor(vec3 p, vec3 n, vec3 l, vec3 eye, vec3 dist) { \n float fresnel = clamp(1.0 - dot(n,-eye), 0.0, 1.0);\n fresnel = pow(fresnel,3.0) * 0.5;\n \n vec3 reflected = calculateSkyColor(Ray(vec3(0), reflect(eye,n)), 0.0, INFINITY, l); \n vec3 base = SEA_BASE * calculateSkyColor(Ray(vec3(0), vec3(1.0)), 0.0, INFINITY, l); // SEA_BASE\n vec3 refracted = base + diffuse(n,l,80.0) * SEA_WATER_COLOR * 0.12; \n\n vec3 color = mix(refracted,reflected,fresnel);\n \n float atten = max(1.0 - dot(dist,dist) * 0.01, 0.0);\n color += SEA_WATER_COLOR * (p.y - SEA_HEIGHT) * 0.18 * atten;\n color += vec3(specular(n,l,eye,20.0))* 0.8 * reflected;\n return color;\n}\n\nvec4 pixel(in vec2 uv ) {\n Ray r = Ray( vec3(0.0, 3.0, -15.0), perspectiveCameraRayDirection(uv));\n vec3 sunDir = normalize(vec3(0,abs(cos(SUNTIME))/2.0 - 0.2, abs(sin(SUNTIME)) * 2.0));\n vec3 sky = calculateSkyColor(r, 0.0, INFINITY, sunDir);\n vec3 p;\n heightMapTracing(r,p);\n vec3 dist = p - r.origin;\n vec3 n = getNormal(p, dot(dist,dist) * EPSILON_NRM);\n\n vec3 waves = mix(\n sky,\n getSeaColor(p,n, sunDir, r.direction, dist),\n \tpow(smoothstep(0.0,-0.5,r.direction.y),0.5));\n\n return vec4(waves, 1);\n}\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord ) {\n vec2 uv = fragCoord.xy / iResolution.xy;\n vec2 aa = 0.25 / iResolution.xy;\n fragColor = pixel(uv); \n fragColor += pixel(uv + aa);\n fragColor *= 0.5; \n}\n"}},"shaderInstances":{"cylindricalProjection-inst":{"shaderId":"cylindricalProjection","incomingLinks":{"pixelCoordsTexture":{"type":"datasource","dataSourceId":"pixelCoordsTexture"},"modelInfo":{"type":"datasource","dataSourceId":"modelInfo"}},"shaderChannel":"main","priority":0.0},"darkness-inst":{"shaderId":"darkness","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"brightness-inst":{"shaderId":"brightness","incomingLinks":{"gl_FragColor":{"type":"shader-channel","shaderChannel":"main"},"brightness":{"type":"datasource","dataSourceId":"brightnessSlider"}},"shaderChannel":"main","priority":0.0},"saturation-inst":{"shaderId":"saturation","incomingLinks":{"gl_FragColor":{"type":"shader-channel","shaderChannel":"main"},"saturation":{"type":"datasource","dataSourceId":"saturationSlider"}},"shaderChannel":"main","priority":0.0},"flipY-inst":{"shaderId":"flipY","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"glslHueTestPattern-inst":{"shaderId":"glslHueTestPattern","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"fireBall-inst":{"shaderId":"fireBall","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"checkerboard-inst":{"shaderId":"checkerboard","incomingLinks":{"beat":{"type":"datasource","dataSourceId":"beatLink"},"sm_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"checkerboardSize":{"type":"datasource","dataSourceId":"checkerboardSizeSlider"}},"shaderChannel":"main","priority":0.0},"ripple-inst":{"shaderId":"ripple","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader-inst":{"shaderId":"untitledPaintShader","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"anotherGlslHueTestPattern-inst":{"shaderId":"anotherGlslHueTestPattern","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"redness":{"type":"datasource","dataSourceId":"rednessSlider"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader2-inst":{"shaderId":"untitledPaintShader2","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader3-inst":{"shaderId":"untitledPaintShader3","incomingLinks":{"beat":{"type":"datasource","dataSourceId":"beatLink"},"time":{"type":"datasource","dataSourceId":"time"},"scale":{"type":"datasource","dataSourceId":"beatLink"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader4-inst":{"shaderId":"untitledPaintShader4","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"mouse":{"type":"datasource","dataSourceId":"mouseXyPad"},"timeAdjust":{"type":"datasource","dataSourceId":"beatLink"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"huenami-inst":{"shaderId":"huenami","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"timeAdjust":{"type":"datasource","dataSourceId":"beatLink"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"sunset-inst":{"shaderId":"sunset","incomingLinks":{"iTime":{"type":"datasource","dataSourceId":"time"},"sm_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"iResolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0}},"controls":{"control":{"type":"baaahs.Core:ButtonGroup","title":"Scenes"},"control2":{"type":"baaahs.Core:ButtonGroup","title":"Patches"},"colorColorPickerControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:ColorPicker","title":"Color","initialValue":-1},"controlledDataSourceId":"colorColorPicker"},"brightnessSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Brightness","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"controlledDataSourceId":"brightnessSlider"},"saturationSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Saturation","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"controlledDataSourceId":"saturationSlider"},"intensitySliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Intensity","initialValue":1.0,"minValue":0.0,"maxValue":1.0,"stepValue":null},"controlledDataSourceId":"intensitySlider"},"checkerboardSizeSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Checkerboard Size","initialValue":0.1,"minValue":0.001,"maxValue":1.0,"stepValue":null},"controlledDataSourceId":"checkerboardSizeSlider"}},"dataSources":{"pixelCoordsTexture":{"type":"baaahs.Core:PixelCoordsTexture"},"modelInfo":{"type":"baaahs.Core:ModelInfo"},"brightnessSlider":{"type":"baaahs.Core:Slider","title":"Brightness","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"saturationSlider":{"type":"baaahs.Core:Slider","title":"Saturation","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"colorColorPicker":{"type":"baaahs.Core:ColorPicker","title":"Color","initialValue":-1},"resolution":{"type":"baaahs.Core:Resolution"},"time":{"type":"baaahs.Core:Time"},"intensitySlider":{"type":"baaahs.Core:Slider","title":"Intensity","initialValue":1.0,"minValue":0.0,"maxValue":1.0,"stepValue":null},"beatLink":{"type":"baaahs.BeatLink:BeatLink"},"checkerboardSizeSlider":{"type":"baaahs.Core:Slider","title":"Checkerboard Size","initialValue":0.1,"minValue":0.001,"maxValue":1.0,"stepValue":null},"rednessSlider":{"type":"baaahs.Core:Slider","title":"Redness","initialValue":1.0,"minValue":0.0,"maxValue":1.0,"stepValue":null},"mouseXyPad":{"type":"baaahs.Core:XyPad","title":"Mouse","varPrefix":"mouseVec2"}}} \ No newline at end of file diff --git a/data/config.json b/data/config.json new file mode 100644 index 0000000000..8ce7dfc0cb --- /dev/null +++ b/data/config.json @@ -0,0 +1 @@ +{"runningShowPath":"BeachRave.sparkle"} \ No newline at end of file diff --git a/data/mapping-sessions/afikmapping.zip b/data/mapping-sessions/afikmapping.zip new file mode 100755 index 0000000000..8074ca7b72 Binary files /dev/null and b/data/mapping-sessions/afikmapping.zip differ diff --git a/data/mapping-sessions/images/20200214-045123/base.webp b/data/mapping-sessions/images/20200214-045123/base.webp new file mode 100644 index 0000000000..3612ddf682 Binary files /dev/null and b/data/mapping-sessions/images/20200214-045123/base.webp differ diff --git a/data/mapping-sessions/images/20200214-045123/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-045123/brain-CAD878-0.webp new file mode 100644 index 0000000000..8cdedc7f72 Binary files /dev/null and b/data/mapping-sessions/images/20200214-045123/brain-CAD878-0.webp differ diff --git a/data/mapping-sessions/images/20200214-051632/base.webp b/data/mapping-sessions/images/20200214-051632/base.webp new file mode 100644 index 0000000000..58e375ba96 Binary files /dev/null and b/data/mapping-sessions/images/20200214-051632/base.webp differ diff --git a/data/mapping-sessions/images/20200214-051632/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-051632/brain-CAD878-0.webp new file mode 100644 index 0000000000..6f7174298a Binary files /dev/null and b/data/mapping-sessions/images/20200214-051632/brain-CAD878-0.webp differ diff --git a/data/mapping-sessions/images/20200214-053100/base.webp b/data/mapping-sessions/images/20200214-053100/base.webp new file mode 100644 index 0000000000..99aab84c78 Binary files /dev/null and b/data/mapping-sessions/images/20200214-053100/base.webp differ diff --git a/data/mapping-sessions/images/20200214-053100/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-053100/brain-CAD878-0.webp new file mode 100644 index 0000000000..9eb27e780c Binary files /dev/null and b/data/mapping-sessions/images/20200214-053100/brain-CAD878-0.webp differ diff --git a/data/mapping-sessions/images/20200214-054505/base.webp b/data/mapping-sessions/images/20200214-054505/base.webp new file mode 100644 index 0000000000..d95237d00c Binary files /dev/null and b/data/mapping-sessions/images/20200214-054505/base.webp differ diff --git a/data/mapping-sessions/images/20200214-054505/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-054505/brain-CAD878-0.webp new file mode 100644 index 0000000000..9486300e20 Binary files /dev/null and b/data/mapping-sessions/images/20200214-054505/brain-CAD878-0.webp differ diff --git a/data/mapping-sessions/images/20200214-054650/base.webp b/data/mapping-sessions/images/20200214-054650/base.webp new file mode 100644 index 0000000000..0bb0f030a6 Binary files /dev/null and b/data/mapping-sessions/images/20200214-054650/base.webp differ diff --git a/data/mapping-sessions/images/20200214-054650/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-054650/brain-CAD878-0.webp new file mode 100644 index 0000000000..872826a760 Binary files /dev/null and b/data/mapping-sessions/images/20200214-054650/brain-CAD878-0.webp differ diff --git a/data/mapping-sessions/images/20200214-054958/base.webp b/data/mapping-sessions/images/20200214-054958/base.webp new file mode 100644 index 0000000000..1bf5b3b54e Binary files /dev/null and b/data/mapping-sessions/images/20200214-054958/base.webp differ diff --git a/data/mapping-sessions/images/20200214-054958/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-054958/brain-CAD878-0.webp new file mode 100644 index 0000000000..cfff4b3746 Binary files /dev/null and b/data/mapping-sessions/images/20200214-054958/brain-CAD878-0.webp differ diff --git a/data/mapping-sessions/images/20200214-055417/base.webp b/data/mapping-sessions/images/20200214-055417/base.webp new file mode 100644 index 0000000000..c5c5e1a10e Binary files /dev/null and b/data/mapping-sessions/images/20200214-055417/base.webp differ diff --git a/data/mapping-sessions/images/20200214-055417/brain-CAD878-0.webp b/data/mapping-sessions/images/20200214-055417/brain-CAD878-0.webp new file mode 100644 index 0000000000..77c23e3dd1 Binary files /dev/null and b/data/mapping-sessions/images/20200214-055417/brain-CAD878-0.webp differ diff --git a/data/mapping/BAAAHS/afik/20190824-074407-v0.json b/data/mapping/BAAAHS/afik/20190824-074407-v0.json new file mode 100644 index 0000000000..05861253ae --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190824-074407-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566632647614E12,"surfaces":[{"brainId":"CBDC38","panelName":"9D","pixels":[{"modelPosition":{"x":-124.57215,"y":85.80452,"z":-104.3657},"screenPosition":{"x":0.12708162,"y":0.83957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.29433,"y":83.9259,"z":-103.63634},"screenPosition":{"x":0.15113766,"y":0.870963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.57788,"y":82.91934,"z":-103.777176},"screenPosition":{"x":0.16711019,"y":0.80107063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.68341,"y":81.40286,"z":-103.75484},"screenPosition":{"x":0.19354346,"y":0.7756472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.99916,"y":78.262764,"z":-102.94942},"screenPosition":{"x":0.23400874,"y":0.73672783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.32426,"y":76.088905,"z":-102.22528},"screenPosition":{"x":0.26486942,"y":0.7651095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.834305,"y":74.65347,"z":-100.405594},"screenPosition":{"x":0.27424914,"y":0.88969225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.522446,"y":77.203156,"z":-100.95086},"screenPosition":{"x":0.23782818,"y":0.9162297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.07313,"y":78.96104,"z":-101.53475},"screenPosition":{"x":0.21419924,"y":0.9153862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.215546,"y":81.7522,"z":-102.370964},"screenPosition":{"x":0.17603359,"y":0.92241323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.620766,"y":79.89999,"z":-103.117226},"screenPosition":{"x":0.2106295,"y":0.7979979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.884285,"y":78.81301,"z":-102.890465},"screenPosition":{"x":0.22619693,"y":0.7861601},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-116.98437,"y":75.73988,"z":-102.52668},"screenPosition":{"x":0.27073577,"y":0.7014039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.35002,"y":73.284134,"z":-102.00436},"screenPosition":{"x":0.30728474,"y":0.70134735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.2076,"y":70.49297,"z":-101.168144},"screenPosition":{"x":0.34549698,"y":0.6942804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.980675,"y":68.413284,"z":-99.65509},"screenPosition":{"x":0.36760327,"y":0.77091163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.081955,"y":68.45385,"z":-98.6211},"screenPosition":{"x":0.35967338,"y":0.8671082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.57446,"y":71.15092,"z":-99.97562},"screenPosition":{"x":0.32655433,"y":0.8238722},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-120.537224,"y":67.809906,"z":-97.84526},"screenPosition":{"x":0.36419278,"y":0.9194058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.95716,"y":65.00539,"z":-96.81248},"screenPosition":{"x":0.4011693,"y":0.93006855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.37661,"y":62.64357,"z":-96.31309},"screenPosition":{"x":0.43494722,"y":0.90496206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.234276,"y":63.3276,"z":-97.67866},"screenPosition":{"x":0.4338902,"y":0.7997805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.5654,"y":65.74286,"z":-98.964355},"screenPosition":{"x":0.4048407,"y":0.75421286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.12931,"y":67.87656,"z":-99.36938},"screenPosition":{"x":0.37399662,"y":0.78114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.06532,"y":68.22574,"z":-98.52674},"screenPosition":{"x":0.36256707,"y":0.8690057},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-117.715515,"y":63.878006,"z":-97.07847},"screenPosition":{"x":0.42088568,"y":0.8716652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.74235,"y":63.66301,"z":-97.99254},"screenPosition":{"x":0.4307959,"y":0.78107023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.29983,"y":65.12548,"z":-99.1229},"screenPosition":{"x":0.41573143,"y":0.7210409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.11509,"y":68.38616,"z":-100.615036},"screenPosition":{"x":0.374837,"y":0.6818099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.517624,"y":70.23805,"z":-100.95125},"screenPosition":{"x":0.3479687,"y":0.70658004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.21843,"y":70.13108,"z":-99.64926},"screenPosition":{"x":0.34035107,"y":0.8232207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.978264,"y":67.67557,"z":-98.31507},"screenPosition":{"x":0.36966327,"y":0.87212473},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-118.48031,"y":63.421852,"z":-96.61912},"screenPosition":{"x":0.4249002,"y":0.89992654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.13546,"y":61.073483,"z":-96.045685},"screenPosition":{"x":0.4578622,"y":0.8823279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.843414,"y":59.704464,"z":-96.56197},"screenPosition":{"x":0.48318148,"y":0.79361767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.57891,"y":61.676857,"z":-97.855515},"screenPosition":{"x":0.46121684,"y":0.7339171},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.87542,"y":65.48794,"z":-98.74745},"screenPosition":{"x":0.40733737,"y":0.76648045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.28193,"y":70.22461,"z":-101.02529},"screenPosition":{"x":0.34867498,"y":0.69939286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.38746,"y":68.70813,"z":-101.00295},"screenPosition":{"x":0.37248832,"y":0.6558172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.64552,"y":66.064514,"z":-100.43475},"screenPosition":{"x":0.41023082,"y":0.62856424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.35836,"y":63.21966,"z":-99.62409},"screenPosition":{"x":0.44945112,"y":0.6175451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.45214,"y":59.99923,"z":-98.18045},"screenPosition":{"x":0.49005148,"y":0.65353113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.100494,"y":57.946266,"z":-97.06055},"screenPosition":{"x":0.5145268,"y":0.6948265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.338165,"y":56.188866,"z":-94.85294},"screenPosition":{"x":0.52658117,"y":0.845122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.047325,"y":57.933544,"z":-94.69902},"screenPosition":{"x":0.49790493,"y":0.9117855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.02836,"y":60.4429,"z":-95.466415},"screenPosition":{"x":0.46370384,"y":0.91666603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.02531,"y":47.70784,"z":-92.93666},"screenPosition":{"x":0.64699775,"y":0.7662891},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.58122,"y":47.023254,"z":-93.46542},"screenPosition":{"x":0.66158646,"y":0.69702536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.63403,"y":48.00261,"z":-94.555145},"screenPosition":{"x":0.6538678,"y":0.6262026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.100555,"y":49.505325,"z":-95.734},"screenPosition":{"x":0.6384948,"y":0.56292236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.91037,"y":51.209354,"z":-96.88469},"screenPosition":{"x":0.6197653,"y":0.5082985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.79996,"y":54.20167,"z":-98.23396},"screenPosition":{"x":0.58206445,"y":0.47417393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.18586,"y":55.825447,"z":-98.475815},"screenPosition":{"x":0.5581345,"y":0.5007576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.83832,"y":57.181183,"z":-97.49233},"screenPosition":{"x":0.5296961,"y":0.6320593},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-111.57735,"y":59.529797,"z":-97.25391},"screenPosition":{"x":0.49088177,"y":0.724614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.045845,"y":59.261673,"z":-96.299194},"screenPosition":{"x":0.488315,"y":0.8044272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.87271,"y":57.275917,"z":-94.80908},"screenPosition":{"x":0.50908464,"y":0.88186836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.09411,"y":54.323772,"z":-93.778915},"screenPosition":{"x":0.5484134,"y":0.8878483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.46763,"y":54.162384,"z":-94.93805},"screenPosition":{"x":0.559222,"y":0.77631193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.01732,"y":56.805683,"z":-96.58872},"screenPosition":{"x":0.52919585,"y":0.7039302},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-116.98186,"y":59.610847,"z":-95.45656},"screenPosition":{"x":0.47678664,"y":0.8925368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.5021,"y":57.73231,"z":-94.45657},"screenPosition":{"x":0.49937046,"y":0.92780465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.33916,"y":55.303448,"z":-93.786156},"screenPosition":{"x":0.53297836,"y":0.9166602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.569405,"y":53.760242,"z":-93.37067},"screenPosition":{"x":0.55438006,"y":0.90813303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-107.925385,"y":57.73135,"z":-97.704},"screenPosition":{"x":0.5225079,"y":0.6291402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.40125,"y":60.200302,"z":-98.96414},"screenPosition":{"x":0.49245575,"y":0.5874551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.81653,"y":62.870724,"z":-99.65488},"screenPosition":{"x":0.4551737,"y":0.60422695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.950096,"y":64.252945,"z":-99.8764},"screenPosition":{"x":0.43489048,"y":0.62544054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.42794,"y":64.95106,"z":-99.00298},"screenPosition":{"x":0.41763273,"y":0.7268319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-110.99836,"y":59.31504,"z":-97.35612},"screenPosition":{"x":0.49499476,"y":0.7088107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.17432,"y":58.120613,"z":-97.45109},"screenPosition":{"x":0.51455307,"y":0.66411906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.31702,"y":56.46995,"z":-97.35732},"screenPosition":{"x":0.5399768,"y":0.6230849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.72819,"y":55.731674,"z":-97.91164},"screenPosition":{"x":0.55559784,"y":0.5498594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.20745,"y":58.05292,"z":-99.445015},"screenPosition":{"x":0.52600306,"y":0.45588872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.19287,"y":59.529156,"z":-99.41886},"screenPosition":{"x":0.5063053,"y":0.52541167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.938614,"y":58.10717,"z":-97.52513},"screenPosition":{"x":0.5152927,"y":0.65691084},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-108.4573,"y":54.081573,"z":-95.92354},"screenPosition":{"x":0.5675199,"y":0.6831807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.5394,"y":52.63238,"z":-95.26037},"screenPosition":{"x":0.5857044,"y":0.7006086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.033165,"y":50.002205,"z":-94.618126},"screenPosition":{"x":0.6227069,"y":0.68057466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.64337,"y":48.96884,"z":-94.63643},"screenPosition":{"x":0.6391727,"y":0.6477955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.25698,"y":47.787773,"z":-94.92797},"screenPosition":{"x":0.6599198,"y":0.58542496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.899956,"y":47.65335,"z":-95.6684},"screenPosition":{"x":0.66731936,"y":0.5132352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.82465,"y":48.807137,"z":-96.878044},"screenPosition":{"x":0.65762174,"y":0.43668398},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.254234,"y":54.44315,"z":-98.5249},"screenPosition":{"x":0.5803145,"y":0.45467663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.68557,"y":54.309208,"z":-97.64162},"screenPosition":{"x":0.5761606,"y":0.531908},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.63814,"y":51.41131,"z":-94.69157},"screenPosition":{"x":0.600955,"y":0.71621585},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.851814,"y":41.199047,"z":-92.85516},"screenPosition":{"x":0.7493079,"y":0.57793844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.8562,"y":40.165924,"z":-92.061615},"screenPosition":{"x":0.75965905,"y":0.6197859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.99747,"y":36.892128,"z":-89.56105},"screenPosition":{"x":0.7939251,"y":0.7515138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.13542,"y":37.241222,"z":-88.98903},"screenPosition":{"x":0.7843317,"y":0.8146638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.59614,"y":38.153927,"z":-88.55463},"screenPosition":{"x":0.76659095,"y":0.88181263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.2549,"y":39.656963,"z":-88.65101},"screenPosition":{"x":0.7437358,"y":0.9184635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.51765,"y":43.45453,"z":-89.88761},"screenPosition":{"x":0.69251335,"y":0.9189231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.17981,"y":44.80986,"z":-90.257225},"screenPosition":{"x":0.67372125,"y":0.9256883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.81755,"y":47.11791,"z":-91.05279},"screenPosition":{"x":0.6429032,"y":0.92191887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.293915,"y":49.14415,"z":-91.77954},"screenPosition":{"x":0.61604965,"y":0.9160029},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.17501,"y":49.760887,"z":-93.78594},"screenPosition":{"x":0.6205934,"y":0.7499024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.445816,"y":47.9358,"z":-93.572266},"screenPosition":{"x":0.6479221,"y":0.71465105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.67996,"y":45.802177,"z":-92.89662},"screenPosition":{"x":0.67683715,"y":0.71263254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.6721,"y":43.507816,"z":-91.21516},"screenPosition":{"x":0.701128,"y":0.798347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.61696,"y":45.265934,"z":-90.9872},"screenPosition":{"x":0.6717118,"y":0.8722295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.74772,"y":61.74447,"z":-96.1322},"screenPosition":{"x":0.44793338,"y":0.8942483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.24253,"y":49.78793,"z":-93.09662},"screenPosition":{"x":0.6152553,"y":0.8141577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.52715,"y":51.371143,"z":-94.37246},"screenPosition":{"x":0.5992761,"y":0.7442775},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-103.99842,"y":50.874104,"z":-96.02957},"screenPosition":{"x":0.61897874,"y":0.57690877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.724,"y":48.847782,"z":-95.57344},"screenPosition":{"x":0.64766353,"y":0.5579074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.53713,"y":46.928917,"z":-94.79558},"screenPosition":{"x":0.67252815,"y":0.5717623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.69745,"y":44.620953,"z":-93.7294},"screenPosition":{"x":0.7014424,"y":0.6004446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.077324,"y":41.6556,"z":-91.96142},"screenPosition":{"x":0.7357239,"y":0.6739316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.83326,"y":39.790504,"z":-90.88739},"screenPosition":{"x":0.75755614,"y":0.71665794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.35944,"y":39.025906,"z":-89.69546},"screenPosition":{"x":0.76107675,"y":0.8032703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.38203,"y":40.367958,"z":-89.59788},"screenPosition":{"x":0.73924166,"y":0.8527133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.131744,"y":41.83075,"z":-89.64577},"screenPosition":{"x":0.71645904,"y":0.89232165},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-112.3407,"y":45.534378,"z":-90.85943},"screenPosition":{"x":0.66652423,"y":0.89198697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.0694,"y":47.802177,"z":-91.60651},"screenPosition":{"x":0.6360308,"y":0.891548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-107.303894,"y":44.701923,"z":-92.20267},"screenPosition":{"x":0.68928635,"y":0.7433932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.74104,"y":45.157997,"z":-92.93263},"screenPosition":{"x":0.6872769,"y":0.6899344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.614845,"y":46.51285,"z":-94.92596},"screenPosition":{"x":0.6800594,"y":0.5472476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.16504,"y":48.71344,"z":-96.04325},"screenPosition":{"x":0.65316564,"y":0.5106525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.80766,"y":49.545654,"z":-95.51187},"screenPosition":{"x":0.63629085,"y":0.5845815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.00174,"y":47.25121,"z":-94.10103},"screenPosition":{"x":0.6623684,"y":0.6452898},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.92388,"y":47.143353,"z":-95.77585},"screenPosition":{"x":0.67614686,"y":0.48800078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.45695,"y":49.558533,"z":-97.33216},"screenPosition":{"x":0.6490545,"y":0.4174398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.34908,"y":53.81249,"z":-98.216255},"screenPosition":{"x":0.58808124,"y":0.46410453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.50989,"y":51.061813,"z":-96.616684},"screenPosition":{"x":0.6201939,"y":0.52852243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.07069,"y":48.90139,"z":-95.818504},"screenPosition":{"x":0.6486473,"y":0.5369755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.49997,"y":47.0631,"z":-94.867004},"screenPosition":{"x":0.6709411,"y":0.56923026},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.53776,"y":47.01013,"z":-92.45699},"screenPosition":{"x":0.65444106,"y":0.78914064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.805664,"y":44.890034,"z":-91.43668},"screenPosition":{"x":0.68085605,"y":0.81955016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.45741,"y":42.689365,"z":-90.59001},"screenPosition":{"x":0.70961267,"y":0.8312541},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.0536,"y":34.24859,"z":-88.72223},"screenPosition":{"x":0.8297385,"y":0.7491695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.21292,"y":32.826042,"z":-88.722824},"screenPosition":{"x":0.8522303,"y":0.70630944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.65303,"y":30.625853,"z":-86.25244},"screenPosition":{"x":0.8694124,"y":0.8674654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.58912,"y":34.45022,"z":-87.61158},"screenPosition":{"x":0.81863916,"y":0.8574542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.26148,"y":35.362442,"z":-88.800896},"screenPosition":{"x":0.81269115,"y":0.7754452},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-102.658844,"y":31.215866,"z":-87.86569},"screenPosition":{"x":0.8715779,"y":0.7367443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.50574,"y":29.310524,"z":-86.74318},"screenPosition":{"x":0.89339375,"y":0.78252923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.13427,"y":31.17626,"z":-85.65225},"screenPosition":{"x":0.856436,"y":0.9392654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.28943,"y":34.785954,"z":-86.84299},"screenPosition":{"x":0.8078566,"y":0.93829393},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-108.76092,"y":38.28803,"z":-88.896675},"screenPosition":{"x":0.7671259,"y":0.854662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.41664,"y":38.972137,"z":-89.99163},"screenPosition":{"x":0.76411176,"y":0.7744737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.843735,"y":34.90557,"z":-90.77712},"screenPosition":{"x":0.83399147,"y":0.57981735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.41785,"y":36.596157,"z":-92.00185},"screenPosition":{"x":0.8159914,"y":0.5179703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.840416,"y":38.528465,"z":-92.705666},"screenPosition":{"x":0.7904594,"y":0.51133883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.37107,"y":40.205933,"z":-92.92196},"screenPosition":{"x":0.7654255,"y":0.54190856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.906105,"y":40.850273,"z":-92.34471},"screenPosition":{"x":0.751185,"y":0.61442304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.40631,"y":38.891323,"z":-90.97712},"screenPosition":{"x":0.7724097,"y":0.68134254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.98374,"y":36.959015,"z":-90.27331},"screenPosition":{"x":0.7979417,"y":0.68797404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.396255,"y":34.368687,"z":-91.032646},"screenPosition":{"x":0.84429884,"y":0.540145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.00597,"y":33.77803,"z":-91.58434},"screenPosition":{"x":0.85756606,"y":0.4715967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.52133,"y":33.375328,"z":-91.9113},"screenPosition":{"x":0.8662611,"y":0.42938808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.42882,"y":31.268515,"z":-91.35819},"screenPosition":{"x":0.8956253,"y":0.41689885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.92513,"y":29.899977,"z":-90.25076},"screenPosition":{"x":0.90937006,"y":0.47764063},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.90442,"y":55.58509,"z":-94.39621},"screenPosition":{"x":0.532859,"y":0.868711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.48524,"y":36.09928,"z":-93.11772},"screenPosition":{"x":0.8316494,"y":0.40038806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.399734,"y":37.696175,"z":-93.50766},"screenPosition":{"x":0.8091219,"y":0.41257903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.00421,"y":39.547985,"z":-94.114494},"screenPosition":{"x":0.78420216,"y":0.41244462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.174446,"y":41.238735,"z":-94.79798},"screenPosition":{"x":0.76252073,"y":0.40032598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.39847,"y":43.02342,"z":-95.50442},"screenPosition":{"x":0.73934096,"y":0.3890118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.25868,"y":44.969086,"z":-96.4048},"screenPosition":{"x":0.71499807,"y":0.36469066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.809364,"y":46.726967,"z":-96.9887},"screenPosition":{"x":0.6912862,"y":0.36393446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.29888,"y":45.653835,"z":-95.3348},"screenPosition":{"x":0.6965512,"y":0.48377177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.69101,"y":43.949726,"z":-94.454735},"screenPosition":{"x":0.7172203,"y":0.51349115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.92175,"y":41.96381,"z":-93.50586},"screenPosition":{"x":0.74185395,"y":0.541064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.84247,"y":40.232815,"z":-92.77387},"screenPosition":{"x":0.764003,"y":0.55634546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.48877,"y":36.4755,"z":-91.58576},"screenPosition":{"x":0.8149347,"y":0.5526342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.2295,"y":36.005424,"z":-92.824165},"screenPosition":{"x":0.83118767,"y":0.42451337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.74303,"y":37.897484,"z":-93.47949},"screenPosition":{"x":0.80594647,"y":0.42113364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.43845,"y":39.709053,"z":-94.037834},"screenPosition":{"x":0.78099865,"y":0.424391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.358406,"y":42.86259,"z":-94.76922},"screenPosition":{"x":0.73664594,"y":0.4518361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.67388,"y":44.164318,"z":-94.89376},"screenPosition":{"x":0.71695554,"y":0.47954276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.19149,"y":37.54895,"z":-92.15718},"screenPosition":{"x":0.8020363,"y":0.5323443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.930305,"y":35.89845,"z":-91.52218},"screenPosition":{"x":0.82311344,"y":0.5411307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.36299,"y":33.912453,"z":-90.84392},"screenPosition":{"x":0.8497802,"y":0.5437895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.883224,"y":32.033916,"z":-89.84393},"screenPosition":{"x":0.87185675,"y":0.5792121},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-98.593155,"y":28.894058,"z":-88.226654},"screenPosition":{"x":0.9108523,"y":0.6336601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.58919,"y":26.009281,"z":-86.285034},"screenPosition":{"x":0.94262314,"y":0.72555226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.01118,"y":24.909105,"z":-85.32046},"screenPosition":{"x":0.9531433,"y":0.78122157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.169655,"y":24.895905,"z":-84.58264},"screenPosition":{"x":0.948096,"y":0.8487286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.70858,"y":24.949833,"z":-83.74523},"screenPosition":{"x":0.9405052,"y":0.92672646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-104.32043,"y":29.538721,"z":-86.566925},"screenPosition":{"x":0.8887235,"y":0.8057302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.407,"y":30.531597,"z":-87.31198},"screenPosition":{"x":0.8784503,"y":0.7671152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.07207,"y":32.18194,"z":-88.48822},"screenPosition":{"x":0.86013603,"y":0.7082339},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-97.94976,"y":32.94638,"z":-90.22139},"screenPosition":{"x":0.8609355,"y":0.5720058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.043625,"y":33.20114,"z":-90.97953},"screenPosition":{"x":0.8623769,"y":0.50990206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.07484,"y":31.953022,"z":-91.100044},"screenPosition":{"x":0.8829657,"y":0.46125394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.13932,"y":31.161137,"z":-91.409294},"screenPosition":{"x":0.8974732,"y":0.40904164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.71675,"y":29.22883,"z":-90.70548},"screenPosition":{"x":0.9231631,"y":0.4156138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.38174,"y":27.40398,"z":-89.67994},"screenPosition":{"x":0.94476026,"y":0.4550704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.03653,"y":26.022242,"z":-87.8347},"screenPosition":{"x":0.9534577,"y":0.58331925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.79792,"y":25.713793,"z":-87.10212},"screenPosition":{"x":0.9531149,"y":0.6414608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.26409,"y":28.183146,"z":-87.00916},"screenPosition":{"x":0.91341734,"y":0.72431904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.54191,"y":30.061764,"z":-87.73853},"screenPosition":{"x":0.8889161,"y":0.7137204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.454926,"y":32.986786,"z":-89.728645},"screenPosition":{"x":0.85648346,"y":0.6184975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.491104,"y":33.738026,"z":-90.724},"screenPosition":{"x":0.8515511,"y":0.54956955},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-93.61617,"y":32.744667,"z":-91.60265},"screenPosition":{"x":0.87348527,"y":0.43898267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.42832,"y":31.711224,"z":-91.89158},"screenPosition":{"x":0.8924267,"y":0.3811297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.983665,"y":27.994154,"z":-90.75195},"screenPosition":{"x":0.9429035,"y":0.37423316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.008575,"y":26.598734,"z":-89.79262},"screenPosition":{"x":0.95742726,"y":0.42071787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.753334,"y":26.062168,"z":-88.96567},"screenPosition":{"x":0.96088326,"y":0.48043284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.77167,"y":28.961267,"z":-87.85644},"screenPosition":{"x":0.90715253,"y":0.669755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.74435,"y":29.618973,"z":-87.47576},"screenPosition":{"x":0.89354974,"y":0.7243469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.902824,"y":29.60577,"z":-86.737946},"screenPosition":{"x":0.8889964,"y":0.79208785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.92044,"y":28.948467,"z":-85.765526},"screenPosition":{"x":0.8924598,"y":0.8618054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.65246,"y":27.593372,"z":-84.58406},"screenPosition":{"x":0.9054646,"y":0.9297661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.79565,"y":25.5,"z":-83.9569},"screenPosition":{"x":0.9340888,"y":0.9244959},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-102.5608,"y":24.077213,"z":-84.76936},"screenPosition":{"x":0.9623679,"y":0.80690974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.63802,"y":24.103859,"z":-85.43313},"screenPosition":{"x":0.9666752,"y":0.74662167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.76904,"y":24.224438,"z":-86.11984},"screenPosition":{"x":0.96966106,"y":0.68704915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.06144,"y":24.626822,"z":-86.87536},"screenPosition":{"x":0.96868235,"y":0.62962306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.95676,"y":24.733957,"z":-87.63611},"screenPosition":{"x":0.9724081,"y":0.5628315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.286316,"y":25.002161,"z":-88.320206},"screenPosition":{"x":0.9730417,"y":0.5079417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.974815,"y":26.58521,"z":-90.137276},"screenPosition":{"x":0.9609613,"y":0.3883429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.48919,"y":27.067928,"z":-91.53101},"screenPosition":{"x":0.96325916,"y":0.274596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.63295,"y":28.007036,"z":-92.57224},"screenPosition":{"x":0.9558312,"y":0.20702499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.18095,"y":33.46902,"z":-92.74609},"screenPosition":{"x":0.8707269,"y":0.35537755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.3574,"y":31.831882,"z":-92.30767},"screenPosition":{"x":0.89348346,"y":0.34646583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.678604,"y":30.248432,"z":-91.84369},"screenPosition":{"x":0.91520554,"y":0.34152326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.7646,"y":28.208828,"z":-90.920364},"screenPosition":{"x":0.94087374,"y":0.36512697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.51325,"y":27.08185,"z":-89.83326},"screenPosition":{"x":0.9501722,"y":0.4314724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.89079,"y":26.853973,"z":-88.92704},"screenPosition":{"x":0.94809127,"y":0.50781375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.789154,"y":27.78004,"z":-88.68922},"screenPosition":{"x":0.93175787,"y":0.5575671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.356964,"y":29.323326,"z":-88.83408},"screenPosition":{"x":0.9083937,"y":0.590672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.28809,"y":31.148335,"z":-89.31838},"screenPosition":{"x":0.88299406,"y":0.60101473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.51212,"y":32.933018,"z":-90.02482},"screenPosition":{"x":0.8592945,"y":0.5896347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.24479,"y":38.085594,"z":-92.71351},"screenPosition":{"x":0.7971611,"y":0.49735302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.182724,"y":39.615196,"z":-93.74428},"screenPosition":{"x":0.7804871,"y":0.44852215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.07025,"y":40.90316,"z":-95.025345},"screenPosition":{"x":0.7694451,"y":0.36930358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.575775,"y":39.976936,"z":-95.804405},"screenPosition":{"x":0.7896367,"y":0.26973292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.78189,"y":34.94462,"z":-94.884895},"screenPosition":{"x":0.862637,"y":0.20293558},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-88.00038,"y":31.697462,"z":-93.048096},"screenPosition":{"x":0.900883,"y":0.27427605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.40575,"y":30.369171,"z":-91.98916},"screenPosition":{"x":0.914337,"y":0.3317661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.26198,"y":29.430063,"z":-90.94793},"screenPosition":{"x":0.9217649,"y":0.3993371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.3833,"y":29.55104,"z":-90.28155},"screenPosition":{"x":0.9145388,"y":0.464425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.389244,"y":30.664978,"z":-90.0896},"screenPosition":{"x":0.89612883,"y":0.51549226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.159485,"y":31.765472,"z":-89.971695},"screenPosition":{"x":0.8775074,"y":0.55944365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.92584,"y":33.456383,"z":-90.11395},"screenPosition":{"x":0.85217595,"y":0.5972453},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.9514,"y":38.56863,"z":-93.02477},"screenPosition":{"x":0.7919735,"y":0.48320708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.889336,"y":40.098232,"z":-94.05554},"screenPosition":{"x":0.77526075,"y":0.43433836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.08349,"y":41.27898,"z":-94.84647},"screenPosition":{"x":0.76222855,"y":0.3970751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.65371,"y":43.559982,"z":-96.33136},"screenPosition":{"x":0.73674995,"y":0.3290495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.564316,"y":45.74729,"z":-96.98145},"screenPosition":{"x":0.70680416,"y":0.33503526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.56977,"y":47.303936,"z":-97.3229},"screenPosition":{"x":0.68462914,"y":0.3504505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.666176,"y":48.820335,"z":-97.61585},"screenPosition":{"x":0.6627449,"y":0.36911744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.99828,"y":50.35018,"z":-97.83477},"screenPosition":{"x":0.6401207,"y":0.39500335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.35092,"y":51.517723,"z":-97.887886},"screenPosition":{"x":0.6220426,"y":0.42524627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.241,"y":54.06733,"z":-98.70377},"screenPosition":{"x":0.5826512,"y":0.40140474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.70511,"y":54.83233,"z":-98.54261},"screenPosition":{"x":0.5743095,"y":0.4647267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.9743,"y":59.30112,"z":-99.05388},"screenPosition":{"x":0.5073093,"y":0.55213964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.34357,"y":60.69678,"z":-99.20136},"screenPosition":{"x":0.48630047,"y":0.5805585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.14708,"y":62.25351,"z":-99.27219},"screenPosition":{"x":0.46219322,"y":0.6208857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.94565,"y":73.727005,"z":-101.996506},"screenPosition":{"x":0.3004874,"y":0.71519417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.81959,"y":75.60578,"z":-102.18464},"screenPosition":{"x":0.27202243,"y":0.75448394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.923775,"y":75.94136,"z":-101.957275},"screenPosition":{"x":0.26505095,"y":0.7855356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.03682,"y":77.685875,"z":-102.3446},"screenPosition":{"x":0.24012607,"y":0.80248284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.947914,"y":79.43047,"z":-102.461296},"screenPosition":{"x":0.2133789,"y":0.8442377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.188576,"y":81.44327,"z":-103.26209},"screenPosition":{"x":0.18726532,"y":0.8311028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.40531,"y":83.96607,"z":-103.955444},"screenPosition":{"x":0.15192623,"y":0.81567454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.700264,"y":85.6301,"z":-104.24578},"screenPosition":{"x":0.12791778,"y":0.8387658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.660934,"y":56.752476,"z":-94.99056},"screenPosition":{"x":0.51865196,"y":0.84937495},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-074407/brain-CBDC38-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.8219879198465029,0.3637229769779626,-0.4382253480170991,0.0,0.4861584632080637,-0.8489280981671872,0.2072945556289795,0.0,-0.2966240183761134,-0.3834405823077819,-0.8746356450327621,0.0,-135.8924173551844,19.318711410742353,-188.35691223985356,1.0]},"baseImage":"20190824-074407/base.webp","version":0,"savedAt":1.566632834813E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190824-075726-v0.json b/data/mapping/BAAAHS/afik/20190824-075726-v0.json new file mode 100644 index 0000000000..d3ac2bd4d9 --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190824-075726-v0.json @@ -0,0 +1,6287 @@ +{ + "startedAt": 1.566633446661E12, + "surfaces": [ + { + "brainId": "C78370", + "panelName": "3D", + "pixels": [ + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -24.239208, + "y": 83.05481, + "z": -72.64703 + }, + "screenPosition": { + "x": 0.2149893, + "y": 0.8917517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.8439, + "y": 82.02546, + "z": -74.01032 + }, + "screenPosition": { + "x": 0.2479707, + "y": 0.87032807 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.770704, + "y": 81.49228, + "z": -75.89812 + }, + "screenPosition": { + "x": 0.2912748, + "y": 0.84729713 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.288786, + "y": 80.082954, + "z": -77.03238 + }, + "screenPosition": { + "x": 0.30963734, + "y": 0.819869 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.737291, + "y": 79.01027, + "z": -78.21175 + }, + "screenPosition": { + "x": 0.3314911, + "y": 0.79625064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -33.567158, + "y": 77.3039, + "z": -80.65477 + }, + "screenPosition": { + "x": 0.38038582, + "y": 0.75376165 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.09254, + "y": 76.20169, + "z": -81.90652 + }, + "screenPosition": { + "x": 0.4038361, + "y": 0.7291471 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.377556, + "y": 74.77854, + "z": -82.78448 + }, + "screenPosition": { + "x": 0.41571325, + "y": 0.7037698 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.73945, + "y": 73.32588, + "z": -83.73481 + }, + "screenPosition": { + "x": 0.42918688, + "y": 0.6773963 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.026897, + "y": 72.005104, + "z": -84.65193 + }, + "screenPosition": { + "x": 0.44264802, + "y": 0.65280026 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.78048, + "y": 70.711975, + "z": -86.08166 + }, + "screenPosition": { + "x": 0.4691728, + "y": 0.6242929 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.286392, + "y": 68.79078, + "z": -87.02009 + }, + "screenPosition": { + "x": 0.47918677, + "y": 0.59229815 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.531483, + "y": 62.424202, + "z": -86.09053 + }, + "screenPosition": { + "x": 0.41123846, + "y": 0.5209009 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.958084, + "y": 60.430153, + "z": -86.91742 + }, + "screenPosition": { + "x": 0.41784728, + "y": 0.48884824 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.57008, + "y": 59.70792, + "z": -88.39821 + }, + "screenPosition": { + "x": 0.44967768, + "y": 0.4669888 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.953873, + "y": 59.176617, + "z": -89.70102 + }, + "screenPosition": { + "x": 0.4784145, + "y": 0.44905603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.467087, + "y": 57.562542, + "z": -90.75695 + }, + "screenPosition": { + "x": 0.4932711, + "y": 0.41980138 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.52291, + "y": 53.024857, + "z": -90.27605 + }, + "screenPosition": { + "x": 0.44949615, + "y": 0.36729372 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.80727, + "y": 52.650497, + "z": -88.292076 + }, + "screenPosition": { + "x": 0.3973892, + "y": 0.3798728 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -49.058365, + "y": 56.686398, + "z": -90.00341 + }, + "screenPosition": { + "x": 0.46844366, + "y": 0.41535485 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.648457, + "y": 55.042805, + "z": -91.13172 + }, + "screenPosition": { + "x": 0.48501086, + "y": 0.38505468 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.60163, + "y": 52.713993, + "z": -91.328514 + }, + "screenPosition": { + "x": 0.47354293, + "y": 0.35428387 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.971016, + "y": 49.03043, + "z": -89.33361 + }, + "screenPosition": { + "x": 0.39792287, + "y": 0.325619 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.614838, + "y": 47.101032, + "z": -88.26081 + }, + "screenPosition": { + "x": 0.35759404, + "y": 0.310994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.80594, + "y": 44.990788, + "z": -88.79224 + }, + "screenPosition": { + "x": 0.35602725, + "y": 0.2799064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.648567, + "y": 44.180004, + "z": -90.49016 + }, + "screenPosition": { + "x": 0.39256176, + "y": 0.2553644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.855263, + "y": 45.989464, + "z": -92.437454 + }, + "screenPosition": { + "x": 0.45390528, + "y": 0.2607416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.752613, + "y": 48.198334, + "z": -93.11515 + }, + "screenPosition": { + "x": 0.48632643, + "y": 0.2824292 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.419327, + "y": 50.495758, + "z": -93.575714 + }, + "screenPosition": { + "x": 0.513904, + "y": 0.30715904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.5333, + "y": 52.385563, + "z": -93.29464 + }, + "screenPosition": { + "x": 0.52009606, + "y": 0.3332459 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.33733, + "y": 54.29106, + "z": -92.68488 + }, + "screenPosition": { + "x": 0.5182929, + "y": 0.36229694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.290245, + "y": 55.932777, + "z": -92.141556 + }, + "screenPosition": { + "x": 0.5164136, + "y": 0.38741434 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.928352, + "y": 57.38544, + "z": -91.19122 + }, + "screenPosition": { + "x": 0.5028507, + "y": 0.41382468 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.219444, + "y": 66.69177, + "z": -84.04164 + }, + "screenPosition": { + "x": 0.39019248, + "y": 0.59194094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.02385, + "y": 61.76172, + "z": -91.77771 + }, + "screenPosition": { + "x": 0.54835033, + "y": 0.46330255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.877586, + "y": 59.589855, + "z": -88.68772 + }, + "screenPosition": { + "x": 0.45603186, + "y": 0.46301076 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.29689, + "y": 57.288685, + "z": -89.39712 + }, + "screenPosition": { + "x": 0.45753652, + "y": 0.42814565 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.06264, + "y": 56.507423, + "z": -91.02266 + }, + "screenPosition": { + "x": 0.49255353, + "y": 0.40429828 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.213367, + "y": 55.962296, + "z": -92.069176 + }, + "screenPosition": { + "x": 0.5148413, + "y": 0.38839728 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.508118, + "y": 54.94864, + "z": -93.10379 + }, + "screenPosition": { + "x": 0.53329176, + "y": 0.3668987 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.175087, + "y": 53.27553, + "z": -94.304474 + }, + "screenPosition": { + "x": 0.55166584, + "y": 0.33547503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.34975, + "y": 50.832397, + "z": -93.62083 + }, + "screenPosition": { + "x": 0.5174493, + "y": 0.31091544 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.006332, + "y": 49.798584, + "z": -91.802925 + }, + "screenPosition": { + "x": 0.46487033, + "y": 0.31378403 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.617672, + "y": 50.125145, + "z": -90.42178 + }, + "screenPosition": { + "x": 0.43261424, + "y": 0.33003643 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.470562, + "y": 51.54009, + "z": -87.532585 + }, + "screenPosition": { + "x": 0.37067735, + "y": 0.37256366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.36408, + "y": 47.419384, + "z": -84.86843 + }, + "screenPosition": { + "x": 0.27530286, + "y": 0.34424925 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.718674, + "y": 45.6596, + "z": -85.70127 + }, + "screenPosition": { + "x": 0.28368878, + "y": 0.31506214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.355656, + "y": 44.91231, + "z": -90.43563 + }, + "screenPosition": { + "x": 0.39643738, + "y": 0.26466486 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.796013, + "y": 47.119312, + "z": -91.69831 + }, + "screenPosition": { + "x": 0.44342577, + "y": 0.28125432 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.56024, + "y": 42.97587, + "z": -82.41545 + }, + "screenPosition": { + "x": 0.18300726, + "y": 0.3101804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.27766, + "y": 44.50139, + "z": -81.57666 + }, + "screenPosition": { + "x": 0.17274131, + "y": 0.33638915 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.235443, + "y": 46.34785, + "z": -81.111664 + }, + "screenPosition": { + "x": 0.17413318, + "y": 0.36346692 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.116753, + "y": 51.145573, + "z": -82.69609 + }, + "screenPosition": { + "x": 0.24735561, + "y": 0.4095973 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.62182, + "y": 52.81119, + "z": -83.83533 + }, + "screenPosition": { + "x": 0.2874792, + "y": 0.4205336 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.859562, + "y": 55.56778, + "z": -87.23268 + }, + "screenPosition": { + "x": 0.3915196, + "y": 0.42543092 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.581505, + "y": 52.943798, + "z": -88.15327 + }, + "screenPosition": { + "x": 0.3960166, + "y": 0.38469747 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.318645, + "y": 51.317776, + "z": -88.36792 + }, + "screenPosition": { + "x": 0.38988426, + "y": 0.36264637 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.156006, + "y": 47.380505, + "z": -87.8657 + }, + "screenPosition": { + "x": 0.34973568, + "y": 0.31776232 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.873676, + "y": 44.935497, + "z": -87.76704 + }, + "screenPosition": { + "x": 0.33008456, + "y": 0.28824508 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.30758, + "y": 43.24857, + "z": -88.71142 + }, + "screenPosition": { + "x": 0.34176475, + "y": 0.2588591 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.256287, + "y": 43.63675, + "z": -90.9517 + }, + "screenPosition": { + "x": 0.40020666, + "y": 0.24469365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.21775, + "y": 44.920517, + "z": -92.44687 + }, + "screenPosition": { + "x": 0.44662452, + "y": 0.24731952 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.50192, + "y": 47.08418, + "z": -93.52563 + }, + "screenPosition": { + "x": 0.48872405, + "y": 0.26496366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.706776, + "y": 49.174984, + "z": -94.492836 + }, + "screenPosition": { + "x": 0.52753115, + "y": 0.2826662 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.291748, + "y": 51.29718, + "z": -94.80269 + }, + "screenPosition": { + "x": 0.55006266, + "y": 0.30655602 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.39658, + "y": 53.16121, + "z": -93.424034 + }, + "screenPosition": { + "x": 0.52891725, + "y": 0.34168625 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.827396, + "y": 52.420696, + "z": -91.46732 + }, + "screenPosition": { + "x": 0.47487152, + "y": 0.3494858 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.925774, + "y": 50.390797, + "z": -89.77037 + }, + "screenPosition": { + "x": 0.41830662, + "y": 0.33891916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.3335, + "y": 47.961483, + "z": -89.343025 + }, + "screenPosition": { + "x": 0.39064214, + "y": 0.31219694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.609375, + "y": 46.51256, + "z": -89.123405 + }, + "screenPosition": { + "x": 0.37498125, + "y": 0.2960197 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.20512, + "y": 42.919422, + "z": -86.326385 + }, + "screenPosition": { + "x": 0.28001958, + "y": 0.27551073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.645668, + "y": 42.5884, + "z": -84.52634 + }, + "screenPosition": { + "x": 0.23282242, + "y": 0.28695005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.188618, + "y": 44.01904, + "z": -81.308464 + }, + "screenPosition": { + "x": 0.16278197, + "y": 0.3328086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.05492, + "y": 45.28078, + "z": -80.536095 + }, + "screenPosition": { + "x": 0.15238412, + "y": 0.35522 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.17376, + "y": 47.375328, + "z": -80.33335 + }, + "screenPosition": { + "x": 0.16195777, + "y": 0.3830418 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.225456, + "y": 49.90889, + "z": -80.21488 + }, + "screenPosition": { + "x": 0.17681752, + "y": 0.4156883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.038628, + "y": 51.84016, + "z": -80.702705 + }, + "screenPosition": { + "x": 0.20260772, + "y": 0.43558246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.08486, + "y": 53.78525, + "z": -81.44683 + }, + "screenPosition": { + "x": 0.23478863, + "y": 0.45338282 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.44104, + "y": 55.71465, + "z": -82.51964 + }, + "screenPosition": { + "x": 0.27508092, + "y": 0.4681501 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.79479, + "y": 57.54167, + "z": -83.553276 + }, + "screenPosition": { + "x": 0.3136892, + "y": 0.4819844 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.4542, + "y": 59.531975, + "z": -83.89634 + }, + "screenPosition": { + "x": 0.33623314, + "y": 0.50384724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.587643, + "y": 62.240765, + "z": -83.92858 + }, + "screenPosition": { + "x": 0.3560769, + "y": 0.53736633 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.01215, + "y": 64.4986, + "z": -83.03526 + }, + "screenPosition": { + "x": 0.34968945, + "y": 0.57330054 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.08778, + "y": 65.13415, + "z": -81.18663 + }, + "screenPosition": { + "x": 0.30808127, + "y": 0.5972693 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -35.32019, + "y": 66.196754, + "z": -78.581 + }, + "screenPosition": { + "x": 0.25066274, + "y": 0.633033 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.686295, + "y": 65.99763, + "z": -76.747734 + }, + "screenPosition": { + "x": 0.20353091, + "y": 0.6465323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.16335, + "y": 67.20221, + "z": -75.53515 + }, + "screenPosition": { + "x": 0.18175963, + "y": 0.67210597 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.128431, + "y": 69.35579, + "z": -75.187645 + }, + "screenPosition": { + "x": 0.16919076, + "y": 0.70178455 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.093515, + "y": 71.50938, + "z": -74.84014 + }, + "screenPosition": { + "x": 0.17631651, + "y": 0.73134136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.133045, + "y": 73.53107, + "z": -74.52585 + }, + "screenPosition": { + "x": 0.18298778, + "y": 0.759013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.319427, + "y": 78.108345, + "z": -76.36063 + }, + "screenPosition": { + "x": 0.27901152, + "y": 0.80105335 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.821468, + "y": 79.28787, + "z": -78.40162 + }, + "screenPosition": { + "x": 0.33817163, + "y": 0.7979626 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.50304, + "y": 78.229004, + "z": -79.837296 + }, + "screenPosition": { + "x": 0.36647904, + "y": 0.77214414 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.367165, + "y": 75.41784, + "z": -79.765884 + }, + "screenPosition": { + "x": 0.34497052, + "y": 0.7379348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.852959, + "y": 73.726456, + "z": -77.529076 + }, + "screenPosition": { + "x": 0.27732715, + "y": 0.7362309 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.084776, + "y": 74.40534, + "z": -75.864365 + }, + "screenPosition": { + "x": 0.24066564, + "y": 0.7589667 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.27135, + "y": 76.4446, + "z": -74.63642 + }, + "screenPosition": { + "x": 0.22455445, + "y": 0.79461193 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.378023, + "y": 78.02728, + "z": -74.23785 + }, + "screenPosition": { + "x": 0.22553195, + "y": 0.81845707 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.246761, + "y": 79.3914, + "z": -73.50465 + }, + "screenPosition": { + "x": 0.20248646, + "y": 0.8398913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.90677, + "y": 81.76543, + "z": -72.90679 + }, + "screenPosition": { + "x": 0.21065104, + "y": 0.87375706 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.07068, + "y": 83.3919, + "z": -73.02054 + }, + "screenPosition": { + "x": 0.21809718, + "y": 0.9046428 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.007729, + "y": 86.73017, + "z": -72.63069 + }, + "screenPosition": { + "x": 0.24666092, + "y": 0.94101125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.579346, + "y": 87.57306, + "z": -74.62657 + }, + "screenPosition": { + "x": 0.3023335, + "y": 0.934216 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.27065, + "y": 86.92368, + "z": -76.2189 + }, + "screenPosition": { + "x": 0.3374516, + "y": 0.9121023 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.625244, + "y": 85.163895, + "z": -77.05174 + }, + "screenPosition": { + "x": 0.3458422, + "y": 0.88311106 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -30.594263, + "y": 82.784256, + "z": -79.40453 + }, + "screenPosition": { + "x": 0.38769877, + "y": 0.8326876 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.555984, + "y": 80.097496, + "z": -81.63983 + }, + "screenPosition": { + "x": 0.42457893, + "y": 0.78008014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.340797, + "y": 77.21348, + "z": -81.45689 + }, + "screenPosition": { + "x": 0.39974254, + "y": 0.7456747 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -34.632713, + "y": 73.175705, + "z": -80.33053 + }, + "screenPosition": { + "x": 0.3432804, + "y": 0.7050547 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.57431, + "y": 70.71875, + "z": -79.39058 + }, + "screenPosition": { + "x": 0.30261073, + "y": 0.68229777 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.920357, + "y": 69.31691, + "z": -78.18492 + }, + "screenPosition": { + "x": 0.26268002, + "y": 0.67548764 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.11692, + "y": 67.795135, + "z": -77.85375 + }, + "screenPosition": { + "x": 0.24371874, + "y": 0.6593915 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.763172, + "y": 65.96811, + "z": -76.820114 + }, + "screenPosition": { + "x": 0.20511048, + "y": 0.6455572 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -34.826298, + "y": 61.737545, + "z": -76.45671 + }, + "screenPosition": { + "x": 0.16646133, + "y": 0.5958137 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.863647, + "y": 59.686337, + "z": -76.843376 + }, + "screenPosition": { + "x": 0.16152544, + "y": 0.56695896 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.90343, + "y": 57.7375, + "z": -77.26921 + }, + "screenPosition": { + "x": 0.15843765, + "y": 0.53894335 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.18358, + "y": 56.109604, + "z": -78.06884 + }, + "screenPosition": { + "x": 0.16692299, + "y": 0.5116904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.699226, + "y": 54.597904, + "z": -79.16393 + }, + "screenPosition": { + "x": 0.18358961, + "y": 0.4833243 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.243484, + "y": 53.93096, + "z": -81.669914 + }, + "screenPosition": { + "x": 0.24136154, + "y": 0.45326114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.56172, + "y": 57.52785, + "z": -83.296974 + }, + "screenPosition": { + "x": 0.3072042, + "y": 0.48403546 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.99294, + "y": 59.70908, + "z": -83.462074 + }, + "screenPosition": { + "x": 0.32665426, + "y": 0.5098235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.568768, + "y": 61.8055, + "z": -82.67435 + }, + "screenPosition": { + "x": 0.32175952, + "y": 0.54282176 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.822487, + "y": 63.40575, + "z": -81.362114 + }, + "screenPosition": { + "x": 0.30031922, + "y": 0.5741283 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.65959, + "y": 63.43901, + "z": -80.11978 + }, + "screenPosition": { + "x": 0.2695724, + "y": 0.5853691 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.8048, + "y": 63.737926, + "z": -78.226036 + }, + "screenPosition": { + "x": 0.22447298, + "y": 0.60552806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.44862, + "y": 61.80853, + "z": -77.15323 + }, + "screenPosition": { + "x": 0.1841688, + "y": 0.5907559 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.65826, + "y": 55.7793, + "z": -80.61994 + }, + "screenPosition": { + "x": 0.22818616, + "y": 0.48543704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.0433, + "y": 54.582924, + "z": -83.843765 + }, + "screenPosition": { + "x": 0.30012769, + "y": 0.44253924 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.696663, + "y": 55.60104, + "z": -85.99035 + }, + "screenPosition": { + "x": 0.36078858, + "y": 0.43662345 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.628674, + "y": 59.62686, + "z": -86.27542 + }, + "screenPosition": { + "x": 0.3961981, + "y": 0.48439255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.57245, + "y": 61.242805, + "z": -84.63452 + }, + "screenPosition": { + "x": 0.36666012, + "y": 0.5187946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.72699, + "y": 59.029472, + "z": -80.77563 + }, + "screenPosition": { + "x": 0.2549173, + "y": 0.5246486 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.741188, + "y": 56.72197, + "z": -78.8888 + }, + "screenPosition": { + "x": 0.19166571, + "y": 0.51221937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.848114, + "y": 54.33412, + "z": -79.23036 + }, + "screenPosition": { + "x": 0.1833958, + "y": 0.47945645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.349163, + "y": 52.208183, + "z": -80.09046 + }, + "screenPosition": { + "x": 0.18994494, + "y": 0.4454839 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.261364, + "y": 51.06077, + "z": -81.74327 + }, + "screenPosition": { + "x": 0.22301057, + "y": 0.41680476 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.20317, + "y": 54.06357, + "z": -85.98786 + }, + "screenPosition": { + "x": 0.34991717, + "y": 0.4174574 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.10052, + "y": 56.27244, + "z": -86.66556 + }, + "screenPosition": { + "x": 0.38233274, + "y": 0.4391503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.738373, + "y": 61.695637, + "z": -84.9751 + }, + "screenPosition": { + "x": 0.37832355, + "y": 0.521486 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.211994, + "y": 59.492382, + "z": -82.542465 + }, + "screenPosition": { + "x": 0.30220973, + "y": 0.51509815 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.925392, + "y": 57.22635, + "z": -81.424545 + }, + "screenPosition": { + "x": 0.2584143, + "y": 0.49651614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.148388, + "y": 52.476425, + "z": -83.20523 + }, + "screenPosition": { + "x": 0.26941225, + "y": 0.42180127 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.876194, + "y": 53.36265, + "z": -85.38503 + }, + "screenPosition": { + "x": 0.3299635, + "y": 0.41395184 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.162205, + "y": 55.244965, + "z": -87.44387 + }, + "screenPosition": { + "x": 0.39449325, + "y": 0.41959205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.533577, + "y": 58.17232, + "z": -87.81074 + }, + "screenPosition": { + "x": 0.424239, + "y": 0.45292088 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.667015, + "y": 60.88111, + "z": -87.84298 + }, + "screenPosition": { + "x": 0.4440341, + "y": 0.48644912 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.920734, + "y": 62.48136, + "z": -86.530754 + }, + "screenPosition": { + "x": 0.42261362, + "y": 0.51779693 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.53419, + "y": 68.31333, + "z": -80.64579 + }, + "screenPosition": { + "x": 0.31695274, + "y": 0.6416374 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.51195, + "y": 63.037724, + "z": -81.97436 + }, + "screenPosition": { + "x": 0.3129826, + "y": 0.5642386 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.73768, + "y": 44.989353, + "z": -80.08993 + }, + "screenPosition": { + "x": 0.13932036, + "y": 0.3555246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.472385, + "y": 43.26096, + "z": -80.26541 + }, + "screenPosition": { + "x": 0.13133773, + "y": 0.33228388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.889847, + "y": 41.24114, + "z": -79.99472 + }, + "screenPosition": { + "x": 0.110390276, + "y": 0.30942482 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.93936, + "y": 39.701794, + "z": -80.57721 + }, + "screenPosition": { + "x": 0.114086136, + "y": 0.28516063 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.6692, + "y": 37.768654, + "z": -80.67436 + }, + "screenPosition": { + "x": 0.10291647, + "y": 0.26019222 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.44369, + "y": 34.09142, + "z": -81.27568 + }, + "screenPosition": { + "x": 0.09205084, + "y": 0.20908388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.478607, + "y": 31.937836, + "z": -81.623184 + }, + "screenPosition": { + "x": 0.08557123, + "y": 0.17919254 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.3261, + "y": 31.331802, + "z": -83.39944 + }, + "screenPosition": { + "x": 0.12558293, + "y": 0.15622005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.851482, + "y": 30.229595, + "z": -84.65119 + }, + "screenPosition": { + "x": 0.14950183, + "y": 0.13255103 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.48051, + "y": 30.223978, + "z": -86.40613 + }, + "screenPosition": { + "x": 0.19292967, + "y": 0.11685353 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.005047, + "y": 32.708584, + "z": -87.85867 + }, + "screenPosition": { + "x": 0.25796315, + "y": 0.13028197 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.43626, + "y": 34.88981, + "z": -88.02377 + }, + "screenPosition": { + "x": 0.265858, + "y": 0.1605073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.85347, + "y": 36.84052, + "z": -87.01296 + }, + "screenPosition": { + "x": 0.25437853, + "y": 0.19362105 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.313488, + "y": 37.328487, + "z": -85.52622 + }, + "screenPosition": { + "x": 0.22075279, + "y": 0.2126085 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.05628, + "y": 33.75291, + "z": -81.815544 + }, + "screenPosition": { + "x": 0.10335564, + "y": 0.20047306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.33156, + "y": 31.920269, + "z": -82.53684 + }, + "screenPosition": { + "x": 0.10822037, + "y": 0.17104721 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.13584, + "y": 29.855236, + "z": -82.66721 + }, + "screenPosition": { + "x": 0.09695128, + "y": 0.14414465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.208702, + "y": 26.034164, + "z": -82.460464 + }, + "screenPosition": { + "x": 0.06493359, + "y": 0.09825128 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.81096, + "y": 24.902441, + "z": -83.78459 + }, + "screenPosition": { + "x": 0.090218216, + "y": 0.07306005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.448875, + "y": 28.893126, + "z": -85.89699 + }, + "screenPosition": { + "x": 0.1710913, + "y": 0.10511553 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.9448, + "y": 30.53297, + "z": -85.938644 + }, + "screenPosition": { + "x": 0.18325545, + "y": 0.124222755 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.05634, + "y": 32.3204, + "z": -85.6184 + }, + "screenPosition": { + "x": 0.18784031, + "y": 0.14930798 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.708454, + "y": 34.003586, + "z": -85.84397 + }, + "screenPosition": { + "x": 0.20545794, + "y": 0.16878445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.444748, + "y": 35.96437, + "z": -86.25942 + }, + "screenPosition": { + "x": 0.22963528, + "y": 0.18983583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.875965, + "y": 38.1456, + "z": -86.424515 + }, + "screenPosition": { + "x": 0.24888733, + "y": 0.21501325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.915493, + "y": 40.167294, + "z": -86.11023 + }, + "screenPosition": { + "x": 0.25526753, + "y": 0.24297047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.39741, + "y": 41.57662, + "z": -84.97597 + }, + "screenPosition": { + "x": 0.23698011, + "y": 0.27058223 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.996155, + "y": 57.657154, + "z": -79.49758 + }, + "screenPosition": { + "x": 0.2134143, + "y": 0.51860917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.380566, + "y": 38.321987, + "z": -81.63909 + }, + "screenPosition": { + "x": 0.13117506, + "y": 0.25911105 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.956203, + "y": 71.9013, + "z": -75.91045 + }, + "screenPosition": { + "x": 0.22417979, + "y": 0.72743034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.2368, + "y": 34.819984, + "z": -82.39111 + }, + "screenPosition": { + "x": 0.12497486, + "y": 0.20849983 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -50.496487, + "y": 29.06764, + "z": -81.69654 + }, + "screenPosition": { + "x": 0.06722025, + "y": 0.14273617 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.377647, + "y": 26.973091, + "z": -81.89929 + }, + "screenPosition": { + "x": 0.057547655, + "y": 0.11483736 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.05376, + "y": 25.325756, + "z": -84.197556 + }, + "screenPosition": { + "x": 0.10324938, + "y": 0.07434092 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.25375, + "y": 27.211815, + "z": -85.08643 + }, + "screenPosition": { + "x": 0.13866468, + "y": 0.090167746 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.002213, + "y": 29.684467, + "z": -85.6977 + }, + "screenPosition": { + "x": 0.1716269, + "y": 0.11654746 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.56344, + "y": 31.16665, + "z": -84.67499 + }, + "screenPosition": { + "x": 0.15621452, + "y": 0.14309338 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.588367, + "y": 32.574104, + "z": -84.12571 + }, + "screenPosition": { + "x": 0.15241925, + "y": 0.16542344 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.78165, + "y": 34.536762, + "z": -83.95618 + }, + "screenPosition": { + "x": 0.16199242, + "y": 0.19138813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.66884, + "y": 52.601982, + "z": -80.5758 + }, + "screenPosition": { + "x": 0.20474745, + "y": 0.44616708 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.933903, + "y": 39.113327, + "z": -81.439804 + }, + "screenPosition": { + "x": 0.1314487, + "y": 0.27033347 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.28094, + "y": 41.016953, + "z": -81.41503 + }, + "screenPosition": { + "x": 0.14421485, + "y": 0.29430562 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.024536, + "y": 43.28486, + "z": -81.94797 + }, + "screenPosition": { + "x": 0.17344302, + "y": 0.31798574 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.15008, + "y": 45.302807, + "z": -82.803635 + }, + "screenPosition": { + "x": 0.20895773, + "y": 0.3357467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.73446, + "y": 47.04128, + "z": -84.05441 + }, + "screenPosition": { + "x": 0.2523555, + "y": 0.3465922 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.698357, + "y": 48.42742, + "z": -85.58875 + }, + "screenPosition": { + "x": 0.30034384, + "y": 0.35058066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.10892, + "y": 49.022224, + "z": -87.32237 + }, + "screenPosition": { + "x": 0.34773573, + "y": 0.34296435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.820286, + "y": 49.575558, + "z": -88.2871 + }, + "screenPosition": { + "x": 0.37567142, + "y": 0.34150085 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.6499, + "y": 51.839718, + "z": -89.99 + }, + "screenPosition": { + "x": 0.4340341, + "y": 0.35498473 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.08414, + "y": 54.507042, + "z": -89.253334 + }, + "screenPosition": { + "x": 0.434426, + "y": 0.3946635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.580257, + "y": 53.608864, + "z": -86.23226 + }, + "screenPosition": { + "x": 0.3528014, + "y": 0.4096962 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.54606, + "y": 53.28115, + "z": -92.54954 + }, + "screenPosition": { + "x": 0.507964, + "y": 0.35076943 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.969975, + "y": 55.15526, + "z": -92.597145 + }, + "screenPosition": { + "x": 0.52232665, + "y": 0.37374532 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.908886, + "y": 56.566456, + "z": -90.87791 + }, + "screenPosition": { + "x": 0.48939687, + "y": 0.40627164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.128536, + "y": 56.73348, + "z": -89.01737 + }, + "screenPosition": { + "x": 0.44419804, + "y": 0.42449644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.290375, + "y": 54.827267, + "z": -85.27597 + }, + "screenPosition": { + "x": 0.33754292, + "y": 0.43316403 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.32891, + "y": 53.5435, + "z": -83.7808 + }, + "screenPosition": { + "x": 0.29125047, + "y": 0.43011343 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.31634, + "y": 50.10989, + "z": -81.46317 + }, + "screenPosition": { + "x": 0.20944265, + "y": 0.40743813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.064655, + "y": 45.690273, + "z": -80.69276 + }, + "screenPosition": { + "x": 0.1592219, + "y": 0.35901496 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.344803, + "y": 44.062378, + "z": -81.492386 + }, + "screenPosition": { + "x": 0.16765626, + "y": 0.33174354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.18743, + "y": 43.2516, + "z": -83.19031 + }, + "screenPosition": { + "x": 0.20417403, + "y": 0.3067932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.80429, + "y": 42.734116, + "z": -84.74942 + }, + "screenPosition": { + "x": 0.23939626, + "y": 0.2868095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.001255, + "y": 44.13408, + "z": -86.54006 + }, + "screenPosition": { + "x": 0.29387003, + "y": 0.28874704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -50.03875, + "y": 48.97514, + "z": -88.30841 + }, + "screenPosition": { + "x": 0.3719497, + "y": 0.33393452 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.602413, + "y": 50.559692, + "z": -87.32487 + }, + "screenPosition": { + "x": 0.3586071, + "y": 0.3621304 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.421043, + "y": 53.07943, + "z": -86.950096 + }, + "screenPosition": { + "x": 0.36698148, + "y": 0.39682785 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.868893, + "y": 53.05553, + "z": -85.26753 + }, + "screenPosition": { + "x": 0.32487655, + "y": 0.4111375 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.530933, + "y": 52.610188, + "z": -82.587036 + }, + "screenPosition": { + "x": 0.2549346, + "y": 0.42882174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.095444, + "y": 50.607933, + "z": -81.402695 + }, + "screenPosition": { + "x": 0.2113867, + "y": 0.41414043 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.734398, + "y": 48.47379, + "z": -80.25156 + }, + "screenPosition": { + "x": 0.16764203, + "y": 0.39746013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.993237, + "y": 46.308258, + "z": -79.75778 + }, + "screenPosition": { + "x": 0.14010976, + "y": 0.37471786 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.78779, + "y": 43.833733, + "z": -79.73149 + }, + "screenPosition": { + "x": 0.12205704, + "y": 0.34406385 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.310738, + "y": 42.629154, + "z": -80.94408 + }, + "screenPosition": { + "x": 0.1438114, + "y": 0.3185114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -48.728855, + "y": 39.560543, + "z": -83.535324 + }, + "screenPosition": { + "x": 0.18682301, + "y": 0.25773585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.968628, + "y": 39.497765, + "z": -84.85004 + }, + "screenPosition": { + "x": 0.21915051, + "y": 0.24554704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.547546, + "y": 40.64777, + "z": -86.96341 + }, + "screenPosition": { + "x": 0.2799949, + "y": 0.24200816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -50.88828, + "y": 45.549736, + "z": -88.00202 + }, + "screenPosition": { + "x": 0.3402619, + "y": 0.29373175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -49.01789, + "y": 41.92895, + "z": -84.692406 + }, + "screenPosition": { + "x": 0.23244563, + "y": 0.2775515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.10308, + "y": 55.269306, + "z": -79.83914 + }, + "screenPosition": { + "x": 0.2051898, + "y": 0.48584816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.08588, + "y": 37.90313, + "z": -84.407326 + }, + "screenPosition": { + "x": 0.19690484, + "y": 0.2294866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.264816, + "y": 35.28102, + "z": -84.742935 + }, + "screenPosition": { + "x": 0.18683457, + "y": 0.19385128 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.36768, + "y": 38.53191, + "z": -89.24977 + }, + "screenPosition": { + "x": 0.3220219, + "y": 0.19532496 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.48895, + "y": 40.728832, + "z": -89.08619 + }, + "screenPosition": { + "x": 0.33338684, + "y": 0.22431964 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.77818, + "y": 40.55922, + "z": -87.18054 + }, + "screenPosition": { + "x": 0.28471786, + "y": 0.23868062 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.739834, + "y": 39.304966, + "z": -85.61299 + }, + "screenPosition": { + "x": 0.23684132, + "y": 0.23660663 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.918774, + "y": 36.682858, + "z": -85.94859 + }, + "screenPosition": { + "x": 0.22693162, + "y": 0.20143713 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.843143, + "y": 36.047306, + "z": -87.797226 + }, + "screenPosition": { + "x": 0.26847294, + "y": 0.17757733 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.399315, + "y": 39.862762, + "z": -89.75891 + }, + "screenPosition": { + "x": 0.34406874, + "y": 0.20751715 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.967842, + "y": 41.65206, + "z": -88.85369 + }, + "screenPosition": { + "x": 0.3340785, + "y": 0.23799607 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.18019, + "y": 41.511967, + "z": -86.87566 + }, + "screenPosition": { + "x": 0.28379974, + "y": 0.25311172 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.194393, + "y": 39.204468, + "z": -84.988846 + }, + "screenPosition": { + "x": 0.220623, + "y": 0.2408582 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.648525, + "y": 55.369804, + "z": -80.46328 + }, + "screenPosition": { + "x": 0.22142132, + "y": 0.4816873 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.487556, + "y": 34.50163, + "z": -85.78349 + }, + "screenPosition": { + "x": 0.2072907, + "y": 0.17509745 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.237858, + "y": 36.692936, + "z": -87.374855 + }, + "screenPosition": { + "x": 0.26241198, + "y": 0.18887734 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.974148, + "y": 38.65372, + "z": -87.7903 + }, + "screenPosition": { + "x": 0.2865014, + "y": 0.20950629 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.008217, + "y": 40.08695, + "z": -88.3386 + }, + "screenPosition": { + "x": 0.31024417, + "y": 0.22263633 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.74938, + "y": 42.25248, + "z": -88.832375 + }, + "screenPosition": { + "x": 0.33777642, + "y": 0.24537861 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.40695, + "y": 44.52413, + "z": -88.19536 + }, + "screenPosition": { + "x": 0.33785787, + "y": 0.27950072 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.895176, + "y": 42.935116, + "z": -85.99771 + }, + "screenPosition": { + "x": 0.2719226, + "y": 0.27848896 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.53051, + "y": 39.931156, + "z": -86.689255 + }, + "screenPosition": { + "x": 0.26810798, + "y": 0.23529656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.498684, + "y": 41.138325, + "z": -89.24284 + }, + "screenPosition": { + "x": 0.34015405, + "y": 0.22832425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.85772, + "y": 55.84913, + "z": -86.2526 + }, + "screenPosition": { + "x": 0.36906734, + "y": 0.437447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.239483, + "y": 58.137188, + "z": -89.638054 + }, + "screenPosition": { + "x": 0.46952555, + "y": 0.43663475 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.022263, + "y": 58.072536, + "z": -91.53775 + }, + "screenPosition": { + "x": 0.51637626, + "y": 0.41936457 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.9369, + "y": 57.027493, + "z": -93.22972 + }, + "screenPosition": { + "x": 0.5512566, + "y": 0.39162308 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -53.377113, + "y": 52.342224, + "z": -93.11072 + }, + "screenPosition": { + "x": 0.5152689, + "y": 0.33425114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.17528, + "y": 50.73751, + "z": -91.241745 + }, + "screenPosition": { + "x": 0.4574844, + "y": 0.33037013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.546253, + "y": 50.74313, + "z": -89.48681 + }, + "screenPosition": { + "x": 0.4137826, + "y": 0.34566453 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.703625, + "y": 51.55391, + "z": -87.78889 + }, + "screenPosition": { + "x": 0.37715164, + "y": 0.37053964 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.06099, + "y": 54.250748, + "z": -86.97984 + }, + "screenPosition": { + "x": 0.37595814, + "y": 0.4111878 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.429337, + "y": 56.692013, + "z": -88.248474 + }, + "screenPosition": { + "x": 0.42474186, + "y": 0.43064925 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.162605, + "y": 58.166706, + "z": -89.565674 + }, + "screenPosition": { + "x": 0.46794078, + "y": 0.43762648 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.66767, + "y": 59.83232, + "z": -90.70491 + }, + "screenPosition": { + "x": 0.50804615, + "y": 0.4485304 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.105595, + "y": 61.93695, + "z": -91.92842 + }, + "screenPosition": { + "x": 0.5532877, + "y": 0.46418816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.44474, + "y": 63.149734, + "z": -92.72707 + }, + "screenPosition": { + "x": 0.5815602, + "y": 0.47240493 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.329327, + "y": 64.46302, + "z": -94.14987 + }, + "screenPosition": { + "x": 0.6263528, + "y": 0.47644174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.828682, + "y": 69.5107, + "z": -95.411575 + }, + "screenPosition": { + "x": 0.693291, + "y": 0.5284742 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.74082, + "y": 69.79579, + "z": -93.26153 + }, + "screenPosition": { + "x": 0.64181846, + "y": 0.5506954 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.392536, + "y": 68.557236, + "z": -91.365295 + }, + "screenPosition": { + "x": 0.5858476, + "y": 0.5516883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.42049, + "y": 70.45078, + "z": -89.91426 + }, + "screenPosition": { + "x": 0.5629939, + "y": 0.5879077 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.563072, + "y": 73.18534, + "z": -91.044075 + }, + "screenPosition": { + "x": 0.6103329, + "y": 0.61221355 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.2359, + "y": 75.022446, + "z": -93.503975 + }, + "screenPosition": { + "x": 0.68460816, + "y": 0.61382073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.16027, + "y": 74.386894, + "z": -95.35261 + }, + "screenPosition": { + "x": 0.72591364, + "y": 0.58977723 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.945087, + "y": 71.50288, + "z": -95.16966 + }, + "screenPosition": { + "x": 0.70137995, + "y": 0.5554465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.886684, + "y": 69.04591, + "z": -94.22971 + }, + "screenPosition": { + "x": 0.6606781, + "y": 0.5329379 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.755676, + "y": 66.4395, + "z": -94.23664 + }, + "screenPosition": { + "x": 0.642526, + "y": 0.50034976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.932583, + "y": 66.63676, + "z": -96.654884 + }, + "screenPosition": { + "x": 0.704038, + "y": 0.4818367 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.677166, + "y": 72.21013, + "z": -98.368706 + }, + "screenPosition": { + "x": 0.78608763, + "y": 0.5365209 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.034534, + "y": 74.90697, + "z": -97.55967 + }, + "screenPosition": { + "x": 0.7848831, + "y": 0.57719594 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.98015, + "y": 76.24156, + "z": -96.89885 + }, + "screenPosition": { + "x": 0.7777954, + "y": 0.5995844 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.93182, + "y": 78.54835, + "z": -94.43451 + }, + "screenPosition": { + "x": 0.73259073, + "y": 0.6497514 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.550457, + "y": 79.18203, + "z": -93.17086 + }, + "screenPosition": { + "x": 0.70513546, + "y": 0.66842794 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.940895, + "y": 80.00663, + "z": -91.72924 + }, + "screenPosition": { + "x": 0.6749328, + "y": 0.6911421 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.095837, + "y": 80.71504, + "z": -89.99215 + }, + "screenPosition": { + "x": 0.63709956, + "y": 0.7153297 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.454643, + "y": 80.208786, + "z": -88.04139 + }, + "screenPosition": { + "x": 0.5849182, + "y": 0.7259348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.698883, + "y": 77.429016, + "z": -87.31263 + }, + "screenPosition": { + "x": 0.5470897, + "y": 0.6974521 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.999344, + "y": 73.033295, + "z": -88.22478 + }, + "screenPosition": { + "x": 0.53880346, + "y": 0.6346332 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.19269, + "y": 73.563446, + "z": -91.85809 + }, + "screenPosition": { + "x": 0.63289607, + "y": 0.6097237 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.76892, + "y": 78.58161, + "z": -93.19218 + }, + "screenPosition": { + "x": 0.7018598, + "y": 0.660944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.77254, + "y": 79.45142, + "z": -91.349495 + }, + "screenPosition": { + "x": 0.6620469, + "y": 0.68778473 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.57458, + "y": 74.746, + "z": -88.37797 + }, + "screenPosition": { + "x": 0.55490047, + "y": 0.6548394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.251286, + "y": 73.48238, + "z": -89.73531 + }, + "screenPosition": { + "x": 0.5795085, + "y": 0.6271118 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.173225, + "y": 72.74446, + "z": -91.54478 + }, + "screenPosition": { + "x": 0.6197601, + "y": 0.6023878 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.781937, + "y": 75.50667, + "z": -93.1872 + }, + "screenPosition": { + "x": 0.6799881, + "y": 0.62256396 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.656136, + "y": 77.45925, + "z": -91.59141 + }, + "screenPosition": { + "x": 0.6540702, + "y": 0.66082376 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.534206, + "y": 76.31112, + "z": -88.89306 + }, + "screenPosition": { + "x": 0.5783782, + "y": 0.66964483 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.15494, + "y": 72.69292, + "z": -89.34962 + }, + "screenPosition": { + "x": 0.56468403, + "y": 0.6207878 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.14159, + "y": 71.41361, + "z": -91.03564 + }, + "screenPosition": { + "x": 0.59771323, + "y": 0.5901956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.509342, + "y": 73.47115, + "z": -93.245186 + }, + "screenPosition": { + "x": 0.66725135, + "y": 0.5967056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.77161, + "y": 74.713455, + "z": -93.971466 + }, + "screenPosition": { + "x": 0.6940228, + "y": 0.6058887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.066822, + "y": 75.189026, + "z": -100.93074 + }, + "screenPosition": { + "x": 0.87088895, + "y": 0.55147165 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.678818, + "y": 74.4668, + "z": -102.41152 + }, + "screenPosition": { + "x": 0.9027194, + "y": 0.5296122 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.182297, + "y": 72.44324, + "z": -103.31079 + }, + "screenPosition": { + "x": 0.91090643, + "y": 0.49655685 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.74135, + "y": 69.852516, + "z": -102.98904 + }, + "screenPosition": { + "x": 0.8846724, + "y": 0.46701595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.61337, + "y": 67.73219, + "z": -102.09421 + }, + "screenPosition": { + "x": 0.8465718, + "y": 0.4483909 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.8655, + "y": 65.64326, + "z": -100.542015 + }, + "screenPosition": { + "x": 0.7940874, + "y": 0.43571272 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.592842, + "y": 65.04025, + "z": -96.79715 + }, + "screenPosition": { + "x": 0.6965084, + "y": 0.46067435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.6135, + "y": 66.62668, + "z": -95.22862 + }, + "screenPosition": { + "x": 0.66856694, + "y": 0.49408013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.001904, + "y": 70.27065, + "z": -95.869644 + }, + "screenPosition": { + "x": 0.70959646, + "y": 0.53393286 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.462383, + "y": 72.24785, + "z": -100.30757 + }, + "screenPosition": { + "x": 0.83467835, + "y": 0.5201718 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.7109, + "y": 69.2891, + "z": -100.59806 + }, + "screenPosition": { + "x": 0.8211168, + "y": 0.48072666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.731804, + "y": 66.905, + "z": -99.76965 + }, + "screenPosition": { + "x": 0.7837074, + "y": 0.4581596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.839916, + "y": 65.28459, + "z": -98.22936 + }, + "screenPosition": { + "x": 0.7339237, + "y": 0.45129913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.950462, + "y": 63.766563, + "z": -96.72824 + }, + "screenPosition": { + "x": 0.68583584, + "y": 0.44537657 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.54233, + "y": 63.274136, + "z": -95.033775 + }, + "screenPosition": { + "x": 0.640074, + "y": 0.45393863 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -48.625854, + "y": 64.600525, + "z": -92.36172 + }, + "screenPosition": { + "x": 0.58286506, + "y": 0.49366453 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.90575, + "y": 66.94316, + "z": -92.42122 + }, + "screenPosition": { + "x": 0.60081834, + "y": 0.5223844 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.255222, + "y": 68.94916, + "z": -92.43561 + }, + "screenPosition": { + "x": 0.61528045, + "y": 0.5472944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.00855, + "y": 71.626564, + "z": -93.125206 + }, + "screenPosition": { + "x": 0.6512922, + "y": 0.574726 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.37874, + "y": 73.786476, + "z": -95.373924 + }, + "screenPosition": { + "x": 0.72252625, + "y": 0.5821739 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.849144, + "y": 73.63515, + "z": -96.90577 + }, + "screenPosition": { + "x": 0.75964326, + "y": 0.5669963 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.1506, + "y": 72.54489, + "z": -98.9988 + }, + "screenPosition": { + "x": 0.8033194, + "y": 0.5351566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.428314, + "y": 70.81462, + "z": -99.75926 + }, + "screenPosition": { + "x": 0.81093556, + "y": 0.50704175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.291256, + "y": 67.23602, + "z": -101.5697 + }, + "screenPosition": { + "x": 0.8309004, + "y": 0.44667503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.384174, + "y": 64.61765, + "z": -100.73535 + }, + "screenPosition": { + "x": 0.7916956, + "y": 0.42123598 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.414818, + "y": 62.643044, + "z": -100.06361 + }, + "screenPosition": { + "x": 0.7610698, + "y": 0.40242037 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.205685, + "y": 60.731213, + "z": -98.07714 + }, + "screenPosition": { + "x": 0.6981164, + "y": 0.39579353 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.59126, + "y": 61.35107, + "z": -96.55719 + }, + "screenPosition": { + "x": 0.6644823, + "y": 0.416739 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.830376, + "y": 62.337082, + "z": -95.00998 + }, + "screenPosition": { + "x": 0.6329586, + "y": 0.44244277 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.39404, + "y": 63.92164, + "z": -94.02643 + }, + "screenPosition": { + "x": 0.61957866, + "y": 0.47075084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.1786, + "y": 65.00815, + "z": -93.103355 + }, + "screenPosition": { + "x": 0.604216, + "y": 0.49231783 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.25463, + "y": 68.56544, + "z": -93.37653 + }, + "screenPosition": { + "x": 0.6360348, + "y": 0.53434294 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.275345, + "y": 68.71936, + "z": -95.610855 + }, + "screenPosition": { + "x": 0.6928068, + "y": 0.5168808 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.70195, + "y": 66.72531, + "z": -96.43775 + }, + "screenPosition": { + "x": 0.6993974, + "y": 0.48482174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.644794, + "y": 63.603283, + "z": -97.41881 + }, + "screenPosition": { + "x": 0.70133096, + "y": 0.43743023 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.891468, + "y": 60.925884, + "z": -96.72921 + }, + "screenPosition": { + "x": 0.6656282, + "y": 0.4099791 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.38153, + "y": 59.05552, + "z": -95.51165 + }, + "screenPosition": { + "x": 0.6223912, + "y": 0.39713684 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.256577, + "y": 57.42129, + "z": -93.71506 + }, + "screenPosition": { + "x": 0.5659529, + "y": 0.39239755 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.007072, + "y": 57.074577, + "z": -92.24368 + }, + "screenPosition": { + "x": 0.527011, + "y": 0.40076467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.931377, + "y": 57.871536, + "z": -90.28947 + }, + "screenPosition": { + "x": 0.48377487, + "y": 0.42771712 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.31492, + "y": 61.31076, + "z": -90.85216 + }, + "screenPosition": { + "x": 0.5221105, + "y": 0.4657039 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.976173, + "y": 63.01972, + "z": -92.17531 + }, + "screenPosition": { + "x": 0.56710476, + "y": 0.47555315 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.68938, + "y": 63.291702, + "z": -94.12012 + }, + "screenPosition": { + "x": 0.6174828, + "y": 0.46207687 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -52.561653, + "y": 57.20085, + "z": -93.96541 + }, + "screenPosition": { + "x": 0.57050157, + "y": 0.38753712 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.141613, + "y": 52.22603, + "z": -92.815254 + }, + "screenPosition": { + "x": 0.50716865, + "y": 0.33529642 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.15016, + "y": 51.86808, + "z": -94.85375 + }, + "screenPosition": { + "x": 0.5554611, + "y": 0.31314498 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.118927, + "y": 53.458965, + "z": -96.46642 + }, + "screenPosition": { + "x": 0.6172573, + "y": 0.31174025 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.033081, + "y": 71.87178, + "z": -75.982834 + }, + "screenPosition": { + "x": 0.22575797, + "y": 0.7264757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.442623, + "y": 57.64432, + "z": -97.23089 + }, + "screenPosition": { + "x": 0.655321, + "y": 0.36461052 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.36549, + "y": 61.644367, + "z": -96.41838 + }, + "screenPosition": { + "x": 0.6631925, + "y": 0.42157963 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.176228, + "y": 63.473267, + "z": -96.86704 + }, + "screenPosition": { + "x": 0.6871415, + "y": 0.44052505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.05919, + "y": 72.28717, + "z": -88.023 + }, + "screenPosition": { + "x": 0.52876586, + "y": 0.6272326 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.762005, + "y": 73.19845, + "z": -86.94923 + }, + "screenPosition": { + "x": 0.50840914, + "y": 0.64792055 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.390377, + "y": 74.24162, + "z": -85.84223 + }, + "screenPosition": { + "x": 0.48815188, + "y": 0.67054266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.70394, + "y": 75.09574, + "z": -84.32823 + }, + "screenPosition": { + "x": 0.45642087, + "y": 0.6943362 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.930893, + "y": 75.569885, + "z": -82.58519 + }, + "screenPosition": { + "x": 0.41616896, + "y": 0.71502006 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.27996, + "y": 74.654144, + "z": -80.477776 + }, + "screenPosition": { + "x": 0.3573147, + "y": 0.7219968 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.68585, + "y": 72.50618, + "z": -79.07034 + }, + "screenPosition": { + "x": 0.3071634, + "y": 0.7076313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.798237, + "y": 70.706795, + "z": -78.5493 + }, + "screenPosition": { + "x": 0.28155166, + "y": 0.68958354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.785076, + "y": 66.88947, + "z": -77.17259 + }, + "screenPosition": { + "x": 0.22042672, + "y": 0.6539174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.53379, + "y": 65.391594, + "z": -78.52399 + }, + "screenPosition": { + "x": 0.24352568, + "y": 0.623581 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -38.86286, + "y": 61.840633, + "z": -80.84703 + }, + "screenPosition": { + "x": 0.27646124, + "y": 0.5591124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.55114, + "y": 60.705166, + "z": -83.34112 + }, + "screenPosition": { + "x": 0.33064255, + "y": 0.5233053 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.948944, + "y": 60.40438, + "z": -85.81984 + }, + "screenPosition": { + "x": 0.39029527, + "y": 0.49804676 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.215485, + "y": 61.46771, + "z": -87.56536 + }, + "screenPosition": { + "x": 0.44129175, + "y": 0.49617592 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.90897, + "y": 64.891235, + "z": -88.45673 + }, + "screenPosition": { + "x": 0.48757845, + "y": 0.53116876 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.9558, + "y": 67.22005, + "z": -88.25994 + }, + "screenPosition": { + "x": 0.49899027, + "y": 0.56191653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.911148, + "y": 68.96414, + "z": -87.755775 + }, + "screenPosition": { + "x": 0.49866313, + "y": 0.5880348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.32349, + "y": 70.710106, + "z": -86.66663 + }, + "screenPosition": { + "x": 0.4838303, + "y": 0.6192842 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.018944, + "y": 72.74677, + "z": -81.67251 + }, + "screenPosition": { + "x": 0.37371314, + "y": 0.6880598 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.18203, + "y": 70.17549, + "z": -79.85212 + }, + "screenPosition": { + "x": 0.31026274, + "y": 0.67176235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.65447, + "y": 67.204796, + "z": -79.30132 + }, + "screenPosition": { + "x": 0.27564856, + "y": 0.6394662 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.37523, + "y": 63.81337, + "z": -82.10375 + }, + "screenPosition": { + "x": 0.32165673, + "y": 0.5727955 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.93995, + "y": 67.27088, + "z": -86.10394 + }, + "screenPosition": { + "x": 0.44566622, + "y": 0.58127743 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.1454, + "y": 69.74541, + "z": -86.13023 + }, + "screenPosition": { + "x": 0.46371895, + "y": 0.61193144 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.399117, + "y": 71.34566, + "z": -84.818 + }, + "screenPosition": { + "x": 0.44225335, + "y": 0.6432737 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -35.83112, + "y": 71.37258, + "z": -80.97945 + }, + "screenPosition": { + "x": 0.3467774, + "y": 0.67692226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.616528, + "y": 68.872284, + "z": -79.855576 + }, + "screenPosition": { + "x": 0.30118665, + "y": 0.6554683 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.334198, + "y": 66.42728, + "z": -79.75691 + }, + "screenPosition": { + "x": 0.28153744, + "y": 0.62581056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -39.673008, + "y": 63.28581, + "z": -82.23661 + }, + "screenPosition": { + "x": 0.32125962, + "y": 0.56505775 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.232456, + "y": 63.61683, + "z": -84.03667 + }, + "screenPosition": { + "x": 0.3684497, + "y": 0.55360883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.89312, + "y": 64.94206, + "z": -86.30074 + }, + "screenPosition": { + "x": 0.4341983, + "y": 0.55050665 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.41154, + "y": 67.88699, + "z": -85.75395 + }, + "screenPosition": { + "x": 0.4412105, + "y": 0.5919463 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.53038, + "y": 69.98154, + "z": -85.5512 + }, + "screenPosition": { + "x": 0.4509105, + "y": 0.61986357 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.774364, + "y": 71.172295, + "z": -84.08231 + }, + "screenPosition": { + "x": 0.4227064, + "y": 0.6475035 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.87577, + "y": 69.628494, + "z": -81.48361 + }, + "screenPosition": { + "x": 0.34708145, + "y": 0.65078235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.43482, + "y": 67.03777, + "z": -81.16186 + }, + "screenPosition": { + "x": 0.32084742, + "y": 0.62124145 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.240032, + "y": 69.71071, + "z": -78.67026 + }, + "screenPosition": { + "x": 0.27753755, + "y": 0.67621464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.97808, + "y": 63.06537, + "z": -82.48696 + }, + "screenPosition": { + "x": 0.32594705, + "y": 0.5601539 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.046474, + "y": 61.96129, + "z": -84.32369 + }, + "screenPosition": { + "x": 0.3639546, + "y": 0.5304475 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.307556, + "y": 62.43615, + "z": -86.93181 + }, + "screenPosition": { + "x": 0.4322923, + "y": 0.5137546 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33591, + "y": 67.25144, + "z": -87.60258 + }, + "screenPosition": { + "x": 0.48288262, + "y": 0.568034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.613564, + "y": 66.95368, + "z": -84.56019 + }, + "screenPosition": { + "x": 0.40494543, + "y": 0.59069425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.922512, + "y": 63.632523, + "z": -83.707985 + }, + "screenPosition": { + "x": 0.3603656, + "y": 0.5566517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.98604, + "y": 62.3237, + "z": -85.466385 + }, + "screenPosition": { + "x": 0.39497203, + "y": 0.5250569 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.569824, + "y": 63.67845, + "z": -87.65808 + }, + "screenPosition": { + "x": 0.45914564, + "y": 0.5229616 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.171238, + "y": 66.13354, + "z": -89.18301 + }, + "screenPosition": { + "x": 0.5144148, + "y": 0.5403722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.45113, + "y": 68.47617, + "z": -89.242516 + }, + "screenPosition": { + "x": 0.53236806, + "y": 0.56909204 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.272194, + "y": 71.09828, + "z": -88.906906 + }, + "screenPosition": { + "x": 0.5424383, + "y": 0.6047273 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.318623, + "y": 70.505356, + "z": -86.5883 + }, + "screenPosition": { + "x": 0.4803303, + "y": 0.6173192 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.509327, + "y": 65.47337, + "z": -84.997925 + }, + "screenPosition": { + "x": 0.40546146, + "y": 0.5684394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.859646, + "y": 63.89256, + "z": -84.811516 + }, + "screenPosition": { + "x": 0.38970116, + "y": 0.550328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.693214, + "y": 71.38079, + "z": -82.990685 + }, + "screenPosition": { + "x": 0.39696458, + "y": 0.65957695 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.53906, + "y": 68.51808, + "z": -80.72412 + }, + "screenPosition": { + "x": 0.32034576, + "y": 0.64348716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.405617, + "y": 65.80929, + "z": -80.69189 + }, + "screenPosition": { + "x": 0.3004965, + "y": 0.60998714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.676033, + "y": 63.771904, + "z": -81.334854 + }, + "screenPosition": { + "x": 0.30220452, + "y": 0.5789607 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.042793, + "y": 62.523987, + "z": -82.36352 + }, + "screenPosition": { + "x": 0.31906748, + "y": 0.5544557 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.666954, + "y": 62.31362, + "z": -84.04012 + }, + "screenPosition": { + "x": 0.35936832, + "y": 0.5373072 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.552387, + "y": 60.040096, + "z": -85.26212 + }, + "screenPosition": { + "x": 0.37384722, + "y": 0.49834025 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.26803, + "y": 60.414455, + "z": -87.2461 + }, + "screenPosition": { + "x": 0.4259112, + "y": 0.48580205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.616314, + "y": 61.653015, + "z": -89.142334 + }, + "screenPosition": { + "x": 0.48189998, + "y": 0.48480815 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.210426, + "y": 63.80098, + "z": -90.54977 + }, + "screenPosition": { + "x": 0.53208137, + "y": 0.4994051 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.47428, + "y": 68.73247, + "z": -91.516 + }, + "screenPosition": { + "x": 0.59075385, + "y": 0.5525487 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.040375, + "y": 70.419395, + "z": -90.57162 + }, + "screenPosition": { + "x": 0.5790258, + "y": 0.58176595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.837105, + "y": 72.01777, + "z": -89.84437 + }, + "screenPosition": { + "x": 0.5722688, + "y": 0.60806996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.713142, + "y": 73.689, + "z": -89.22866 + }, + "screenPosition": { + "x": 0.5686627, + "y": 0.63426256 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.584316, + "y": 75.155495, + "z": -88.53463 + }, + "screenPosition": { + "x": 0.5615169, + "y": 0.6584715 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.23459, + "y": 77.120026, + "z": -87.78011 + }, + "screenPosition": { + "x": 0.55669004, + "y": 0.6896537 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.415707, + "y": 78.570816, + "z": -87.41476 + }, + "screenPosition": { + "x": 0.55778366, + "y": 0.71092904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.259262, + "y": 82.49801, + "z": -86.490715 + }, + "screenPosition": { + "x": 0.56236273, + "y": 0.76795655 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.030647, + "y": 71.76941, + "z": -75.94367 + }, + "screenPosition": { + "x": 0.2240522, + "y": 0.72556067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.865334, + "y": 79.69808, + "z": -82.90943 + }, + "screenPosition": { + "x": 0.4534152, + "y": 0.76408154 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.847115, + "y": 78.21403, + "z": -84.51713 + }, + "screenPosition": { + "x": 0.48305258, + "y": 0.7316136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.099056, + "y": 78.66311, + "z": -86.027664 + }, + "screenPosition": { + "x": 0.5238596, + "y": 0.7241141 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.284107, + "y": 75.58068, + "z": -88.36261 + }, + "screenPosition": { + "x": 0.5600643, + "y": 0.6651494 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.30074, + "y": 73.37555, + "z": -86.51495 + }, + "screenPosition": { + "x": 0.49878785, + "y": 0.653858 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.33005, + "y": 63.74123, + "z": -86.34337 + }, + "screenPosition": { + "x": 0.42681813, + "y": 0.53515047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -36.15765, + "y": 78.582054, + "z": -83.904884 + }, + "screenPosition": { + "x": 0.47022152, + "y": 0.7412406 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.194744, + "y": 80.50137, + "z": -83.55143 + }, + "screenPosition": { + "x": 0.47506437, + "y": 0.7685372 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.712574, + "y": 83.06258, + "z": -83.945564 + }, + "screenPosition": { + "x": 0.5028949, + "y": 0.7970819 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.958992, + "y": 84.355705, + "z": -82.51584 + }, + "screenPosition": { + "x": 0.47635102, + "y": 0.8256231 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.89934, + "y": 82.56381, + "z": -79.654884 + }, + "screenPosition": { + "x": 0.3924445, + "y": 0.82807946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.15759, + "y": 80.014565, + "z": -80.10203 + }, + "screenPosition": { + "x": 0.3856666, + "y": 0.79238576 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.043617, + "y": 78.124756, + "z": -80.38311 + }, + "screenPosition": { + "x": 0.37927893, + "y": 0.7657977 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.8479, + "y": 76.05972, + "z": -80.51347 + }, + "screenPosition": { + "x": 0.36811677, + "y": 0.7394601 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.183617, + "y": 73.86468, + "z": -80.09208 + }, + "screenPosition": { + "x": 0.34215957, + "y": 0.7153973 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.34611, + "y": 70.909676, + "z": -79.21261 + }, + "screenPosition": { + "x": 0.2994985, + "y": 0.686378 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.14731, + "y": 69.79105, + "z": -76.44188 + }, + "screenPosition": { + "x": 0.22256091, + "y": 0.69654876 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.177694, + "y": 71.78698, + "z": -75.030014 + }, + "screenPosition": { + "x": 0.2014144, + "y": 0.7336842 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.478897, + "y": 74.66725, + "z": -76.38292 + }, + "screenPosition": { + "x": 0.25539297, + "y": 0.7578448 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.980938, + "y": 75.84677, + "z": -78.423904 + }, + "screenPosition": { + "x": 0.3145378, + "y": 0.7549297 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.44851, + "y": 72.67133, + "z": -77.79479 + }, + "screenPosition": { + "x": 0.27653182, + "y": 0.7207579 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.15192, + "y": 73.96633, + "z": -75.78009 + }, + "screenPosition": { + "x": 0.2354207, + "y": 0.75439733 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.87907, + "y": 75.901344, + "z": -75.09795 + }, + "screenPosition": { + "x": 0.2320231, + "y": 0.7844639 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.146797, + "y": 77.73212, + "z": -74.96163 + }, + "screenPosition": { + "x": 0.24149686, + "y": 0.80849445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.895258, + "y": 80.20477, + "z": -75.57291 + }, + "screenPosition": { + "x": 0.27411684, + "y": 0.8340503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.014097, + "y": 82.29932, + "z": -75.370155 + }, + "screenPosition": { + "x": 0.28378946, + "y": 0.8619491 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.447746, + "y": 84.58292, + "z": -75.57442 + }, + "screenPosition": { + "x": 0.30493572, + "y": 0.88867646 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.424406, + "y": 86.86465, + "z": -76.363655 + }, + "screenPosition": { + "x": 0.34064928, + "y": 0.9103056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -30.362192, + "y": 86.0759, + "z": -80.32912 + }, + "screenPosition": { + "x": 0.44310847, + "y": 0.86824244 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.247627, + "y": 83.80237, + "z": -81.55112 + }, + "screenPosition": { + "x": 0.44841534, + "y": 0.8270866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.329563, + "y": 81.43958, + "z": -78.63909 + }, + "screenPosition": { + "x": 0.3592222, + "y": 0.82286114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.412493, + "y": 82.382256, + "z": -76.90796 + }, + "screenPosition": { + "x": 0.32270175, + "y": 0.8496435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.12261, + "y": 83.600655, + "z": -75.951675 + }, + "screenPosition": { + "x": 0.30743277, + "y": 0.87314504 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.604528, + "y": 85.00998, + "z": -74.81741 + }, + "screenPosition": { + "x": 0.28907025, + "y": 0.9005732 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.235334, + "y": 86.155525, + "z": -73.74959 + }, + "screenPosition": { + "x": 0.27050886, + "y": 0.9241332 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.467152, + "y": 86.83442, + "z": -72.08488 + }, + "screenPosition": { + "x": 0.22741748, + "y": 0.9433024 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190824-075726/brain-C78370-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + 0.7012061815594721, + 0.269226977456727, + 0.6601717394377765, + 0.0, + 0.02219589566095713, + -0.9337555071580186, + 0.3572226127611178, + 0.0, + 0.7126129616829829, + -0.23583360121404787, + -0.6607308675851469, + 0.0, + 29.500829120487587, + 34.585082682326885, + -150.81450664593328, + 1.0 + ] + }, + "baseImage": "20190824-075726/base.webp", + "version": 0, + "savedAt": 1.56663367687E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190824-085503-v0.json b/data/mapping/BAAAHS/afik/20190824-085503-v0.json new file mode 100644 index 0000000000..5b6d211cda --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190824-085503-v0.json @@ -0,0 +1,8193 @@ +{ + "startedAt": 1.566636903953E12, + "surfaces": [ + { + "brainId": "C784B0", + "panelName": "31D", + "pixels": [ + { + "modelPosition": { + "x": -247.83435, + "y": 30.36012, + "z": -72.47275 + }, + "screenPosition": { + "x": 0.523451, + "y": 0.8770582 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.83032, + "y": 31.336027, + "z": -73.05918 + }, + "screenPosition": { + "x": 0.5080672, + "y": 0.84862036 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.232, + "y": 33.05976, + "z": -73.89971 + }, + "screenPosition": { + "x": 0.50243455, + "y": 0.8128645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.28282, + "y": 34.085155, + "z": -74.41967 + }, + "screenPosition": { + "x": 0.49688187, + "y": 0.78928703 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.36325, + "y": 35.88989, + "z": -75.26411 + }, + "screenPosition": { + "x": 0.49491164, + "y": 0.75531757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.8875, + "y": 37.425354, + "z": -76.03818 + }, + "screenPosition": { + "x": 0.48709834, + "y": 0.7215883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.18347, + "y": 38.074207, + "z": -76.425224 + }, + "screenPosition": { + "x": 0.47724822, + "y": 0.7011618 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.04324, + "y": 37.825943, + "z": -76.40178 + }, + "screenPosition": { + "x": 0.4672294, + "y": 0.70080733 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.31226, + "y": 38.13503, + "z": -76.738014 + }, + "screenPosition": { + "x": 0.4457559, + "y": 0.6806454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.03516, + "y": 39.77776, + "z": -77.574646 + }, + "screenPosition": { + "x": 0.4365142, + "y": 0.6435254 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.4917, + "y": 41.550976, + "z": -78.3487 + }, + "screenPosition": { + "x": 0.44066125, + "y": 0.61386466 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.49246, + "y": 43.25066, + "z": -78.95855 + }, + "screenPosition": { + "x": 0.45926452, + "y": 0.5947733 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.27026, + "y": 44.942875, + "z": -79.7287 + }, + "screenPosition": { + "x": 0.45979688, + "y": 0.56381166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.7082, + "y": 46.90962, + "z": -80.58095 + }, + "screenPosition": { + "x": 0.46514857, + "y": 0.53092957 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.85278, + "y": 48.66708, + "z": -81.31982 + }, + "screenPosition": { + "x": 0.4724802, + "y": 0.50259197 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.4116, + "y": 49.375923, + "z": -81.66385 + }, + "screenPosition": { + "x": 0.47031733, + "y": 0.48838452 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -262.333, + "y": 53.455658, + "z": -83.34096 + }, + "screenPosition": { + "x": 0.49140707, + "y": 0.42716125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.0431, + "y": 55.38563, + "z": -84.1111 + }, + "screenPosition": { + "x": 0.50395787, + "y": 0.39979857 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -259.51886, + "y": 60.994743, + "z": -86.19475 + }, + "screenPosition": { + "x": 0.5574703, + "y": 0.33168778 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.11177, + "y": 60.721603, + "z": -85.584816 + }, + "screenPosition": { + "x": 0.6109681, + "y": 0.37273553 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.91559, + "y": 63.383644, + "z": -86.57386 + }, + "screenPosition": { + "x": 0.6363554, + "y": 0.34042034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.15656, + "y": 66.312744, + "z": -87.80531 + }, + "screenPosition": { + "x": 0.6484967, + "y": 0.29425114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.60472, + "y": 67.55267, + "z": -88.45038 + }, + "screenPosition": { + "x": 0.6399834, + "y": 0.26553306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.4392, + "y": 68.03426, + "z": -88.81789 + }, + "screenPosition": { + "x": 0.62377596, + "y": 0.24571 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.7293, + "y": 70.919136, + "z": -90.12753 + }, + "screenPosition": { + "x": 0.6250567, + "y": 0.19306345 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.08234, + "y": 71.90168, + "z": -90.19785 + }, + "screenPosition": { + "x": 0.66681314, + "y": 0.20296562 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.23514, + "y": 69.377594, + "z": -88.98592 + }, + "screenPosition": { + "x": 0.67310303, + "y": 0.25394022 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.09055, + "y": 67.62013, + "z": -88.247055 + }, + "screenPosition": { + "x": 0.6658183, + "y": 0.28164175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.85129, + "y": 65.76065, + "z": -87.45736 + }, + "screenPosition": { + "x": 0.65898585, + "y": 0.31153932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -252.36436, + "y": 61.50841, + "z": -85.748985 + }, + "screenPosition": { + "x": 0.63260823, + "y": 0.37268338 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.42775, + "y": 59.76145, + "z": -85.03357 + }, + "screenPosition": { + "x": 0.62323, + "y": 0.39874518 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.80045, + "y": 57.590683, + "z": -84.07968 + }, + "screenPosition": { + "x": 0.61871177, + "y": 0.43585804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.39922, + "y": 56.02232, + "z": -83.76307 + }, + "screenPosition": { + "x": 0.5744617, + "y": 0.43523836 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.99026, + "y": 57.95008, + "z": -84.70525 + }, + "screenPosition": { + "x": 0.56797355, + "y": 0.39525 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.26004, + "y": 59.958847, + "z": -85.65133 + }, + "screenPosition": { + "x": 0.56500566, + "y": 0.3558264 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.2365, + "y": 61.758327, + "z": -86.48404 + }, + "screenPosition": { + "x": 0.5641549, + "y": 0.3220505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.16382, + "y": 63.602047, + "z": -87.23854 + }, + "screenPosition": { + "x": 0.5740727, + "y": 0.2945184 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.64825, + "y": 65.084984, + "z": -87.895325 + }, + "screenPosition": { + "x": 0.5765438, + "y": 0.2686741 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.76587, + "y": 66.50267, + "z": -88.58338 + }, + "screenPosition": { + "x": 0.5722681, + "y": 0.2395064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -260.81158, + "y": 71.46376, + "z": -90.635796 + }, + "screenPosition": { + "x": 0.59649146, + "y": 0.16378133 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.13638, + "y": 71.192276, + "z": -90.73747 + }, + "screenPosition": { + "x": 0.5687551, + "y": 0.14060773 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.54486, + "y": 70.04994, + "z": -90.487305 + }, + "screenPosition": { + "x": 0.5403955, + "y": 0.1498544 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.1959, + "y": 68.09149, + "z": -89.83056 + }, + "screenPosition": { + "x": 0.512561, + "y": 0.15892985 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -263.8633, + "y": 64.71452, + "z": -88.129944 + }, + "screenPosition": { + "x": 0.53194946, + "y": 0.24557981 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.307, + "y": 66.77499, + "z": -88.83752 + }, + "screenPosition": { + "x": 0.55799377, + "y": 0.22486392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.22766, + "y": 69.15504, + "z": -89.904785 + }, + "screenPosition": { + "x": 0.56050766, + "y": 0.18240912 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.4781, + "y": 69.657646, + "z": -90.31921 + }, + "screenPosition": { + "x": 0.5381545, + "y": 0.1505851 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.17557, + "y": 67.215385, + "z": -89.46699 + }, + "screenPosition": { + "x": 0.5108092, + "y": 0.1849897 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.03766, + "y": 64.92159, + "z": -88.41536 + }, + "screenPosition": { + "x": 0.5109283, + "y": 0.22761393 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.15143, + "y": 64.04466, + "z": -87.695984 + }, + "screenPosition": { + "x": 0.5459763, + "y": 0.2674295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.8057, + "y": 66.5552, + "z": -88.700676 + }, + "screenPosition": { + "x": 0.5619592, + "y": 0.23160268 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.00684, + "y": 69.43178, + "z": -89.814835 + }, + "screenPosition": { + "x": 0.5844094, + "y": 0.1933372 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.86893, + "y": 67.13798, + "z": -88.7632 + }, + "screenPosition": { + "x": 0.5845285, + "y": 0.23596142 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.3453, + "y": 69.631935, + "z": -89.37691 + }, + "screenPosition": { + "x": 0.6428259, + "y": 0.22887793 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.04947, + "y": 66.65334, + "z": -88.21193 + }, + "screenPosition": { + "x": 0.62078196, + "y": 0.26930833 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.24472, + "y": 64.62136, + "z": -87.39097 + }, + "screenPosition": { + "x": 0.60875404, + "y": 0.298917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.82709, + "y": 63.53072, + "z": -86.90229 + }, + "screenPosition": { + "x": 0.60755897, + "y": 0.31834257 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.91168, + "y": 62.029816, + "z": -86.38236 + }, + "screenPosition": { + "x": 0.5890331, + "y": 0.33368167 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -257.34528, + "y": 55.34278, + "z": -83.66145 + }, + "screenPosition": { + "x": 0.55139, + "y": 0.43246558 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.02094, + "y": 55.769634, + "z": -84.0837 + }, + "screenPosition": { + "x": 0.5263788, + "y": 0.40774214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.96265, + "y": 53.580894, + "z": -83.26666 + }, + "screenPosition": { + "x": 0.50592774, + "y": 0.43456224 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.92468, + "y": 52.268257, + "z": -82.813194 + }, + "screenPosition": { + "x": 0.48963588, + "y": 0.4479944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.70663, + "y": 50.65483, + "z": -82.21898 + }, + "screenPosition": { + "x": 0.47367126, + "y": 0.46719193 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.9899, + "y": 49.261192, + "z": -81.761604 + }, + "screenPosition": { + "x": 0.45371664, + "y": 0.4796319 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.22498, + "y": 47.281734, + "z": -81.05794 + }, + "screenPosition": { + "x": 0.43133375, + "y": 0.5013057 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -263.44724, + "y": 52.734093, + "z": -83.14551 + }, + "screenPosition": { + "x": 0.4765137, + "y": 0.4305368 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.3976, + "y": 53.56375, + "z": -83.75932 + }, + "screenPosition": { + "x": 0.4507217, + "y": 0.39781767 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -268.40118, + "y": 53.373272, + "z": -83.8649 + }, + "screenPosition": { + "x": 0.42945296, + "y": 0.387059 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -270.13928, + "y": 52.683224, + "z": -83.73983 + }, + "screenPosition": { + "x": 0.40838894, + "y": 0.3857036 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.61627, + "y": 53.00281, + "z": -84.099525 + }, + "screenPosition": { + "x": 0.38485858, + "y": 0.3639647 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -268.84253, + "y": 57.479267, + "z": -85.60066 + }, + "screenPosition": { + "x": 0.44547415, + "y": 0.32149014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -270.8943, + "y": 57.874607, + "z": -85.95253 + }, + "screenPosition": { + "x": 0.42658183, + "y": 0.30164114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.0483, + "y": 57.20557, + "z": -85.874374 + }, + "screenPosition": { + "x": 0.40140405, + "y": 0.29713178 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -274.46347, + "y": 55.5269, + "z": -85.31145 + }, + "screenPosition": { + "x": 0.3787285, + "y": 0.3129657 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -274.1853, + "y": 52.984844, + "z": -84.236374 + }, + "screenPosition": { + "x": 0.36905852, + "y": 0.3532704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -269.00308, + "y": 51.459057, + "z": -83.12995 + }, + "screenPosition": { + "x": 0.41381687, + "y": 0.4120562 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -265.417, + "y": 55.069912, + "z": -84.29098 + }, + "screenPosition": { + "x": 0.46816713, + "y": 0.38160467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.823, + "y": 58.302845, + "z": -85.84694 + }, + "screenPosition": { + "x": 0.45986336, + "y": 0.31606203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -269.48672, + "y": 58.386887, + "z": -86.03461 + }, + "screenPosition": { + "x": 0.44340888, + "y": 0.30344474 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.32214, + "y": 58.23843, + "z": -86.234024 + }, + "screenPosition": { + "x": 0.413912, + "y": 0.28637958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -274.64352, + "y": 55.82769, + "z": -85.45219 + }, + "screenPosition": { + "x": 0.37836412, + "y": 0.30720627 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -272.273, + "y": 51.138084, + "z": -83.2981 + }, + "screenPosition": { + "x": 0.37905458, + "y": 0.39465076 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -269.5323, + "y": 51.388557, + "z": -83.149506 + }, + "screenPosition": { + "x": 0.40811253, + "y": 0.40948498 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.1424, + "y": 52.33737, + "z": -83.32148 + }, + "screenPosition": { + "x": 0.43706155, + "y": 0.41138497 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -275.27844, + "y": 56.832073, + "z": -85.92523 + }, + "screenPosition": { + "x": 0.37692618, + "y": 0.28761125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -277.51956, + "y": 57.43144, + "z": -86.378746 + }, + "screenPosition": { + "x": 0.35718104, + "y": 0.26322666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -279.31345, + "y": 56.160824, + "z": -86.01911 + }, + "screenPosition": { + "x": 0.33266032, + "y": 0.2703166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -278.97778, + "y": 53.129707, + "z": -84.73684 + }, + "screenPosition": { + "x": 0.32097137, + "y": 0.31868187 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -276.18713, + "y": 51.724735, + "z": -83.9002 + }, + "screenPosition": { + "x": 0.34227824, + "y": 0.35905787 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.89365, + "y": 53.84519, + "z": -84.56475 + }, + "screenPosition": { + "x": 0.37609777, + "y": 0.34245384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.28247, + "y": 55.856167, + "z": -85.3388 + }, + "screenPosition": { + "x": 0.39230996, + "y": 0.3160491 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -271.37872, + "y": 59.35754, + "z": -86.609314 + }, + "screenPosition": { + "x": 0.42905292, + "y": 0.27579683 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -271.95782, + "y": 60.942493, + "z": -87.31691 + }, + "screenPosition": { + "x": 0.4310717, + "y": 0.24775645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -269.7979, + "y": 63.84754, + "z": -88.31768 + }, + "screenPosition": { + "x": 0.46744326, + "y": 0.21831499 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -268.0987, + "y": 65.22017, + "z": -88.728134 + }, + "screenPosition": { + "x": 0.49151164, + "y": 0.20902899 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.22873, + "y": 66.19525, + "z": -88.95876 + }, + "screenPosition": { + "x": 0.51533246, + "y": 0.2069502 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -272.8859, + "y": 50.196735, + "z": -82.96581 + }, + "screenPosition": { + "x": 0.3681512, + "y": 0.40478387 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -279.87967, + "y": 43.743862, + "z": -80.94478 + }, + "screenPosition": { + "x": 0.26508805, + "y": 0.45521498 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -281.61777, + "y": 43.053818, + "z": -80.8197 + }, + "screenPosition": { + "x": 0.24402404, + "y": 0.4538596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -283.36517, + "y": 42.26701, + "z": -80.65553 + }, + "screenPosition": { + "x": 0.22238392, + "y": 0.45391175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -285.19794, + "y": 41.678974, + "z": -80.58128 + }, + "screenPosition": { + "x": 0.20086758, + "y": 0.4503603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -291.00995, + "y": 41.000263, + "z": -80.83547 + }, + "screenPosition": { + "x": 0.1385421, + "y": 0.42106888 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -292.86987, + "y": 45.566845, + "z": -82.89182 + }, + "screenPosition": { + "x": 0.14241773, + "y": 0.3389744 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -292.0693, + "y": 47.37379, + "z": -83.56422 + }, + "screenPosition": { + "x": 0.1595346, + "y": 0.31696174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -287.35803, + "y": 50.733345, + "z": -84.518036 + }, + "screenPosition": { + "x": 0.22408302, + "y": 0.2979826 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -284.26553, + "y": 43.770954, + "z": -81.35923 + }, + "screenPosition": { + "x": 0.22074124, + "y": 0.42491347 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -286.40097, + "y": 43.29544, + "z": -81.35926 + }, + "screenPosition": { + "x": 0.1967157, + "y": 0.41758898 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -288.462, + "y": 43.59402, + "z": -81.67204 + }, + "screenPosition": { + "x": 0.1772991, + "y": 0.39900404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -291.31183, + "y": 46.55768, + "z": -83.15764 + }, + "screenPosition": { + "x": 0.1631532, + "y": 0.33453014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -290.27542, + "y": 48.644405, + "z": -83.92385 + }, + "screenPosition": { + "x": 0.18405531, + "y": 0.3098718 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -288.78418, + "y": 50.02754, + "z": -84.35777 + }, + "screenPosition": { + "x": 0.20606682, + "y": 0.2990088 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -286.8753, + "y": 50.320034, + "z": -84.30301 + }, + "screenPosition": { + "x": 0.22688323, + "y": 0.3075714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -284.74918, + "y": 50.698788, + "z": -84.263885 + }, + "screenPosition": { + "x": 0.25033265, + "y": 0.31630343 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -282.9037, + "y": 49.244328, + "z": -83.49372 + }, + "screenPosition": { + "x": 0.2622761, + "y": 0.35065094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -285.6486, + "y": 45.68821, + "z": -82.27795 + }, + "screenPosition": { + "x": 0.21702763, + "y": 0.3857804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -287.6277, + "y": 47.927265, + "z": -83.38432 + }, + "screenPosition": { + "x": 0.20733811, + "y": 0.3388179 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -284.00613, + "y": 52.994793, + "z": -85.143486 + }, + "screenPosition": { + "x": 0.26930168, + "y": 0.2864645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -281.60352, + "y": 51.901115, + "z": -84.47104 + }, + "screenPosition": { + "x": 0.28822312, + "y": 0.31946388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -280.88153, + "y": 49.62833, + "z": -83.466324 + }, + "screenPosition": { + "x": 0.2842284, + "y": 0.35893413 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -281.66348, + "y": 48.014904, + "z": -82.872116 + }, + "screenPosition": { + "x": 0.2682638, + "y": 0.37813166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -282.7667, + "y": 46.320477, + "z": -82.274 + }, + "screenPosition": { + "x": 0.2486377, + "y": 0.3963713 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -281.42688, + "y": 53.73958, + "z": -85.21381 + }, + "screenPosition": { + "x": 0.29916933, + "y": 0.2927203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -278.9305, + "y": 59.05841, + "z": -87.18018 + }, + "screenPosition": { + "x": 0.35097227, + "y": 0.22887836 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -274.87692, + "y": 59.92318, + "z": -87.16449 + }, + "screenPosition": { + "x": 0.39639035, + "y": 0.24335788 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.79727, + "y": 59.818127, + "z": -86.9299 + }, + "screenPosition": { + "x": 0.41701022, + "y": 0.2590775 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -268.99814, + "y": 60.209595, + "z": -86.742195 + }, + "screenPosition": { + "x": 0.4574398, + "y": 0.27906805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.60825, + "y": 61.15841, + "z": -86.91417 + }, + "screenPosition": { + "x": 0.48640284, + "y": 0.2809317 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -284.1938, + "y": 52.129196, + "z": -84.803375 + }, + "screenPosition": { + "x": 0.26349688, + "y": 0.29813856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -285.47705, + "y": 50.735558, + "z": -84.34599 + }, + "screenPosition": { + "x": 0.24342243, + "y": 0.310636 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -285.0543, + "y": 46.43604, + "z": -82.53205 + }, + "screenPosition": { + "x": 0.22601198, + "y": 0.37902448 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -283.2646, + "y": 44.40101, + "z": -81.52732 + }, + "screenPosition": { + "x": 0.23403004, + "y": 0.422157 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -280.9195, + "y": 43.79639, + "z": -81.06207 + }, + "screenPosition": { + "x": 0.25480363, + "y": 0.44733006 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -277.8761, + "y": 43.934345, + "z": -80.839195 + }, + "screenPosition": { + "x": 0.2863568, + "y": 0.46597365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -276.8008, + "y": 45.33849, + "z": -81.32003 + }, + "screenPosition": { + "x": 0.30425453, + "y": 0.4519567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -275.30957, + "y": 46.721622, + "z": -81.753944 + }, + "screenPosition": { + "x": 0.32626602, + "y": 0.4410937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -274.0745, + "y": 48.701084, + "z": -82.45761 + }, + "screenPosition": { + "x": 0.3486489, + "y": 0.41941988 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -275.08054, + "y": 51.279907, + "z": -83.6148 + }, + "screenPosition": { + "x": 0.35128662, + "y": 0.3733615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -276.67157, + "y": 53.20767, + "z": -84.55698 + }, + "screenPosition": { + "x": 0.34474933, + "y": 0.33321354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -279.67776, + "y": 53.45676, + "z": -84.936226 + }, + "screenPosition": { + "x": 0.3155482, + "y": 0.30890608 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -282.42267, + "y": 49.900646, + "z": -83.72045 + }, + "screenPosition": { + "x": 0.26995403, + "y": 0.34429166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -280.68704, + "y": 46.215424, + "z": -82.039406 + }, + "screenPosition": { + "x": 0.26920655, + "y": 0.4121411 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -278.32333, + "y": 45.804325, + "z": -81.65235 + }, + "screenPosition": { + "x": 0.29113236, + "y": 0.43449908 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -276.16003, + "y": 46.57012, + "z": -81.7696 + }, + "screenPosition": { + "x": 0.31705812, + "y": 0.43735504 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -275.8236, + "y": 48.983902, + "z": -82.73521 + }, + "screenPosition": { + "x": 0.33231762, + "y": 0.40320042 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -276.58276, + "y": 50.86964, + "z": -83.58354 + }, + "screenPosition": { + "x": 0.33432028, + "y": 0.36899778 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -278.6607, + "y": 49.905067, + "z": -83.37638 + }, + "screenPosition": { + "x": 0.30813017, + "y": 0.36986223 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -279.36658, + "y": 47.996105, + "z": -82.65316 + }, + "screenPosition": { + "x": 0.29146564, + "y": 0.39407092 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -279.43927, + "y": 46.15239, + "z": -81.89865 + }, + "screenPosition": { + "x": 0.28154784, + "y": 0.42160302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -278.77475, + "y": 44.368664, + "z": -81.101135 + }, + "screenPosition": { + "x": 0.2794053, + "y": 0.45324698 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -278.09167, + "y": 42.77846, + "z": -80.381805 + }, + "screenPosition": { + "x": 0.27841496, + "y": 0.48207584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -276.30954, + "y": 39.577045, + "z": -78.896225 + }, + "screenPosition": { + "x": 0.28054807, + "y": 0.5428875 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -275.02115, + "y": 37.761803, + "z": -78.02833 + }, + "screenPosition": { + "x": 0.2848788, + "y": 0.57869303 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.78003, + "y": 37.162437, + "z": -77.574814 + }, + "screenPosition": { + "x": 0.30432132, + "y": 0.60364705 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -268.9454, + "y": 39.01058, + "z": -77.98524 + }, + "screenPosition": { + "x": 0.35241523, + "y": 0.6016855 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.1684, + "y": 39.018044, + "z": -77.82493 + }, + "screenPosition": { + "x": 0.37047487, + "y": 0.6136823 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.19275, + "y": 38.91824, + "z": -77.602066 + }, + "screenPosition": { + "x": 0.39001527, + "y": 0.62866366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.0184, + "y": 38.71117, + "z": -77.31665 + }, + "screenPosition": { + "x": 0.41103643, + "y": 0.6466295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.10953, + "y": 39.003666, + "z": -77.261894 + }, + "screenPosition": { + "x": 0.43200704, + "y": 0.6540556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.26917, + "y": 40.758087, + "z": -77.817 + }, + "screenPosition": { + "x": 0.45925415, + "y": 0.6410644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.37918, + "y": 43.342167, + "z": -78.98591 + }, + "screenPosition": { + "x": 0.46086344, + "y": 0.5942175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.50702, + "y": 44.033043, + "z": -79.46679 + }, + "screenPosition": { + "x": 0.44272286, + "y": 0.5692138 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.19012, + "y": 45.623245, + "z": -80.18613 + }, + "screenPosition": { + "x": 0.44380033, + "y": 0.5397882 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.90112, + "y": 46.923164, + "z": -80.78818 + }, + "screenPosition": { + "x": 0.4430045, + "y": 0.51559436 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.2081, + "y": 48.544884, + "z": -81.57788 + }, + "screenPosition": { + "x": 0.43779483, + "y": 0.48221898 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -267.33005, + "y": 51.471775, + "z": -82.98137 + }, + "screenPosition": { + "x": 0.43095168, + "y": 0.42288038 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -268.33438, + "y": 52.980972, + "z": -83.6968 + }, + "screenPosition": { + "x": 0.42822245, + "y": 0.39333564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -269.38693, + "y": 55.075993, + "z": -84.658516 + }, + "screenPosition": { + "x": 0.42793408, + "y": 0.3544571 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.2227, + "y": 56.471844, + "z": -84.943855 + }, + "screenPosition": { + "x": 0.46697676, + "y": 0.35480243 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.47946, + "y": 53.95301, + "z": -83.74365 + }, + "screenPosition": { + "x": 0.47211426, + "y": 0.4049727 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -266.09326, + "y": 52.381607, + "z": -83.24328 + }, + "screenPosition": { + "x": 0.44792208, + "y": 0.41786233 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.80753, + "y": 51.005936, + "z": -82.649055 + }, + "screenPosition": { + "x": 0.4439702, + "y": 0.4407221 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -267.81696, + "y": 48.57944, + "z": -81.83203 + }, + "screenPosition": { + "x": 0.41150767, + "y": 0.46391425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.73746, + "y": 46.14465, + "z": -80.8195 + }, + "screenPosition": { + "x": 0.4001901, + "y": 0.50146866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -268.28354, + "y": 44.811005, + "z": -80.319115 + }, + "screenPosition": { + "x": 0.388167, + "y": 0.5175336 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -268.82794, + "y": 42.40773, + "z": -79.37697 + }, + "screenPosition": { + "x": 0.3707981, + "y": 0.55003285 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.36786, + "y": 40.82499, + "z": -78.49733 + }, + "screenPosition": { + "x": 0.38783094, + "y": 0.5907652 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -280.35327, + "y": 56.213352, + "z": -86.136406 + }, + "screenPosition": { + "x": 0.3223759, + "y": 0.26243168 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -281.73123, + "y": 54.921726, + "z": -85.72985 + }, + "screenPosition": { + "x": 0.30196896, + "y": 0.2726756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -282.53177, + "y": 53.114777, + "z": -85.05746 + }, + "screenPosition": { + "x": 0.2848521, + "y": 0.29468825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -276.0587, + "y": 54.149017, + "z": -84.88926 + }, + "screenPosition": { + "x": 0.3556527, + "y": 0.32308042 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.87164, + "y": 51.899456, + "z": -83.75943 + }, + "screenPosition": { + "x": 0.3666323, + "y": 0.37218198 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.81912, + "y": 49.80444, + "z": -82.79771 + }, + "screenPosition": { + "x": 0.36697513, + "y": 0.41102475 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.44797, + "y": 48.229992, + "z": -82.11357 + }, + "screenPosition": { + "x": 0.3627995, + "y": 0.437666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -271.6609, + "y": 46.634537, + "z": -81.38251 + }, + "screenPosition": { + "x": 0.3628376, + "y": 0.46728334 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -271.11896, + "y": 44.662544, + "z": -80.51853 + }, + "screenPosition": { + "x": 0.35879108, + "y": 0.5003111 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -270.00134, + "y": 43.24485, + "z": -79.83047 + }, + "screenPosition": { + "x": 0.36279005, + "y": 0.5301216 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -269.68088, + "y": 37.88096, + "z": -77.586494 + }, + "screenPosition": { + "x": 0.33933118, + "y": 0.6138453 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.18405, + "y": 36.840637, + "z": -77.38715 + }, + "screenPosition": { + "x": 0.30893788, + "y": 0.6121995 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -274.56805, + "y": 38.12784, + "z": -78.13779 + }, + "screenPosition": { + "x": 0.2909944, + "y": 0.57678616 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -274.7701, + "y": 40.37436, + "z": -79.08385 + }, + "screenPosition": { + "x": 0.30013132, + "y": 0.5412584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.847, + "y": 42.369576, + "z": -79.82271 + }, + "screenPosition": { + "x": 0.31942886, + "y": 0.5172191 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -272.677, + "y": 43.671707, + "z": -80.252716 + }, + "screenPosition": { + "x": 0.33777893, + "y": 0.5053982 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -269.59985, + "y": 46.33596, + "z": -81.06973 + }, + "screenPosition": { + "x": 0.38225424, + "y": 0.48586828 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -267.92853, + "y": 47.418304, + "z": -81.36291 + }, + "screenPosition": { + "x": 0.40459427, + "y": 0.48080495 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.73297, + "y": 46.965187, + "z": -80.88201 + }, + "screenPosition": { + "x": 0.43480766, + "y": 0.50914985 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -263.82748, + "y": 42.252357, + "z": -78.85304 + }, + "screenPosition": { + "x": 0.42056817, + "y": 0.586724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.7187, + "y": 41.52333, + "z": -78.8179 + }, + "screenPosition": { + "x": 0.38751078, + "y": 0.57866275 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -268.75357, + "y": 43.18182, + "z": -79.68971 + }, + "screenPosition": { + "x": 0.37513137, + "y": 0.53958356 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -269.0689, + "y": 45.33683, + "z": -80.60842 + }, + "screenPosition": { + "x": 0.38266373, + "y": 0.5046748 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -262.58655, + "y": 46.467834, + "z": -80.47932 + }, + "screenPosition": { + "x": 0.45406073, + "y": 0.5314906 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.27026, + "y": 44.942875, + "z": -79.7287 + }, + "screenPosition": { + "x": 0.45979688, + "y": 0.56381166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.41638, + "y": 42.955124, + "z": -78.82954 + }, + "screenPosition": { + "x": 0.4585984, + "y": 0.59940875 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.29303, + "y": 41.44371, + "z": -78.28615 + }, + "screenPosition": { + "x": 0.4421677, + "y": 0.6166421 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.45465, + "y": 39.608288, + "z": -77.72714 + }, + "screenPosition": { + "x": 0.41120133, + "y": 0.6293751 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.92233, + "y": 40.024635, + "z": -78.12593 + }, + "screenPosition": { + "x": 0.38840815, + "y": 0.60575694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.1819, + "y": 42.760216, + "z": -79.2792 + }, + "screenPosition": { + "x": 0.39911407, + "y": 0.56351846 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.75482, + "y": 44.096077, + "z": -79.607544 + }, + "screenPosition": { + "x": 0.43038154, + "y": 0.5597519 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.16284, + "y": 42.79837, + "z": -78.83346 + }, + "screenPosition": { + "x": 0.450267, + "y": 0.59660614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.7249, + "y": 40.831627, + "z": -77.98121 + }, + "screenPosition": { + "x": 0.44497526, + "y": 0.62898195 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.65735, + "y": 38.739647, + "z": -77.20326 + }, + "screenPosition": { + "x": 0.42501265, + "y": 0.6552701 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.63394, + "y": 38.209396, + "z": -77.25803 + }, + "screenPosition": { + "x": 0.3924205, + "y": 0.6420595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.9612, + "y": 40.70722, + "z": -78.411316 + }, + "screenPosition": { + "x": 0.39118138, + "y": 0.59602565 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.20624, + "y": 42.660416, + "z": -79.056335 + }, + "screenPosition": { + "x": 0.41865447, + "y": 0.5784998 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.65488, + "y": 43.114918, + "z": -79.009384 + }, + "screenPosition": { + "x": 0.4467938, + "y": 0.5889783 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -257.60544, + "y": 40.674046, + "z": -77.629326 + }, + "screenPosition": { + "x": 0.47572887, + "y": 0.6532263 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.48102, + "y": 42.12242, + "z": -78.03196 + }, + "screenPosition": { + "x": 0.5044675, + "y": 0.64614064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.60872, + "y": 45.143032, + "z": -79.29077 + }, + "screenPosition": { + "x": 0.51821333, + "y": 0.59935236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.67984, + "y": 47.044533, + "z": -80.1743 + }, + "screenPosition": { + "x": 0.5168183, + "y": 0.5631469 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -262.85028, + "y": 45.89777, + "z": -80.26821 + }, + "screenPosition": { + "x": 0.4485864, + "y": 0.5380811 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.81372, + "y": 43.169655, + "z": -78.95464 + }, + "screenPosition": { + "x": 0.45562032, + "y": 0.59364575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.5574, + "y": 44.903065, + "z": -79.46283 + }, + "screenPosition": { + "x": 0.48713335, + "y": 0.58197916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.6375, + "y": 37.078117, + "z": -76.14768 + }, + "screenPosition": { + "x": 0.45754868, + "y": 0.70716584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.75003, + "y": 35.28693, + "z": -75.51047 + }, + "screenPosition": { + "x": 0.43727604, + "y": 0.72777253 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.5532, + "y": 33.91955, + "z": -75.11174 + }, + "screenPosition": { + "x": 0.41217923, + "y": 0.73627007 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.80362, + "y": 34.422157, + "z": -75.52617 + }, + "screenPosition": { + "x": 0.3918659, + "y": 0.7132525 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.34647, + "y": 35.7641, + "z": -76.22205 + }, + "screenPosition": { + "x": 0.38299686, + "y": 0.68191665 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -264.11743, + "y": 40.322384, + "z": -78.0829 + }, + "screenPosition": { + "x": 0.407913, + "y": 0.6146467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.00726, + "y": 40.068043, + "z": -77.691925 + }, + "screenPosition": { + "x": 0.43831274, + "y": 0.6387392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -257.97736, + "y": 36.803593, + "z": -76.06559 + }, + "screenPosition": { + "x": 0.4526884, + "y": 0.70969284 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.9124, + "y": 35.151184, + "z": -75.56131 + }, + "screenPosition": { + "x": 0.42481095, + "y": 0.72191423 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.05716, + "y": 34.57891, + "z": -75.52225 + }, + "screenPosition": { + "x": 0.40020928, + "y": 0.71599734 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.2146, + "y": 36.04913, + "z": -76.32761 + }, + "screenPosition": { + "x": 0.3856492, + "y": 0.6789447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.7565, + "y": 38.021126, + "z": -77.19158 + }, + "screenPosition": { + "x": 0.39003173, + "y": 0.645015 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.15463, + "y": 39.93534, + "z": -77.92653 + }, + "screenPosition": { + "x": 0.40571508, + "y": 0.6197603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.35144, + "y": 41.302715, + "z": -78.32526 + }, + "screenPosition": { + "x": 0.4307141, + "y": 0.61172193 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.216, + "y": 41.77823, + "z": -78.325226 + }, + "screenPosition": { + "x": 0.4547309, + "y": 0.6191039 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.11606, + "y": 40.79707, + "z": -77.727066 + }, + "screenPosition": { + "x": 0.47114313, + "y": 0.6483302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.45157, + "y": 39.013344, + "z": -76.92955 + }, + "screenPosition": { + "x": 0.46900058, + "y": 0.6799742 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -255.66016, + "y": 35.908688, + "z": -75.48306 + }, + "screenPosition": { + "x": 0.47170982, + "y": 0.73937833 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.71997, + "y": 34.352215, + "z": -74.66207 + }, + "screenPosition": { + "x": 0.4836369, + "y": 0.7762615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.97925, + "y": 34.602688, + "z": -74.51347 + }, + "screenPosition": { + "x": 0.5126809, + "y": 0.79113203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.35612, + "y": 36.270855, + "z": -75.05294 + }, + "screenPosition": { + "x": 0.5373282, + "y": 0.77508956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.11438, + "y": 38.786648, + "z": -76.069374 + }, + "screenPosition": { + "x": 0.5524282, + "y": 0.74023837 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.75099, + "y": 40.860657, + "z": -76.98417 + }, + "screenPosition": { + "x": 0.5562991, + "y": 0.70437175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.08588, + "y": 42.192093, + "z": -77.6566 + }, + "screenPosition": { + "x": 0.54938924, + "y": 0.6750237 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.99553, + "y": 43.599277, + "z": -78.3212 + }, + "screenPosition": { + "x": 0.54717165, + "y": 0.6474439 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.27461, + "y": 45.51128, + "z": -79.22819 + }, + "screenPosition": { + "x": 0.54371965, + "y": 0.6096614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.15546, + "y": 47.838802, + "z": -80.17816 + }, + "screenPosition": { + "x": 0.556413, + "y": 0.574406 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.60316, + "y": 48.92336, + "z": -80.2993 + }, + "screenPosition": { + "x": 0.5979461, + "y": 0.58281344 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.92581, + "y": 47.426876, + "z": -79.435295 + }, + "screenPosition": { + "x": 0.6176484, + "y": 0.62380856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.06357, + "y": 44.90583, + "z": -78.407135 + }, + "screenPosition": { + "x": 0.60364246, + "y": 0.6609464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.0053, + "y": 42.71709, + "z": -77.590096 + }, + "screenPosition": { + "x": 0.5832481, + "y": 0.68804795 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.48987, + "y": 41.870293, + "z": -77.46894 + }, + "screenPosition": { + "x": 0.5537171, + "y": 0.68297994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.5297, + "y": 41.922817, + "z": -77.586235 + }, + "screenPosition": { + "x": 0.5435481, + "y": 0.6761012 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.75052, + "y": 41.64608, + "z": -77.676186 + }, + "screenPosition": { + "x": 0.5196465, + "y": 0.6651752 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.98993, + "y": 41.17582, + "z": -77.68794 + }, + "screenPosition": { + "x": 0.49459258, + "y": 0.65706223 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.733, + "y": 38.879814, + "z": -76.80835 + }, + "screenPosition": { + "x": 0.47565043, + "y": 0.68623924 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.28577, + "y": 37.009834, + "z": -75.99519 + }, + "screenPosition": { + "x": 0.470848, + "y": 0.71837574 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -249.68079, + "y": 38.329105, + "z": -75.93255 + }, + "screenPosition": { + "x": 0.54438615, + "y": 0.7431095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.57155, + "y": 37.444706, + "z": -75.37348 + }, + "screenPosition": { + "x": 0.56139374, + "y": 0.7711525 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.16057, + "y": 35.817734, + "z": -74.572044 + }, + "screenPosition": { + "x": 0.56759626, + "y": 0.8054463 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.35582, + "y": 33.785748, + "z": -73.75108 + }, + "screenPosition": { + "x": 0.555277, + "y": 0.8325572 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.67628, + "y": 32.005062, + "z": -73.13734 + }, + "screenPosition": { + "x": 0.53324497, + "y": 0.8531297 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.5413, + "y": 32.63595, + "z": -73.66123 + }, + "screenPosition": { + "x": 0.5072984, + "y": 0.82224315 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.46289, + "y": 34.385944, + "z": -74.56041 + }, + "screenPosition": { + "x": 0.49655432, + "y": 0.7843158 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.07735, + "y": 36.843956, + "z": -75.447815 + }, + "screenPosition": { + "x": 0.5228462, + "y": 0.7563927 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.9622, + "y": 38.195576, + "z": -75.811356 + }, + "screenPosition": { + "x": 0.550909, + "y": 0.74902225 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.25867, + "y": 38.059002, + "z": -75.506386 + }, + "screenPosition": { + "x": 0.5774703, + "y": 0.76861155 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.6853, + "y": 36.567772, + "z": -74.654106 + }, + "screenPosition": { + "x": 0.59644175, + "y": 0.81096804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.97523, + "y": 34.637802, + "z": -73.88397 + }, + "screenPosition": { + "x": 0.5838543, + "y": 0.8380561 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.39705, + "y": 32.422794, + "z": -73.00828 + }, + "screenPosition": { + "x": 0.56858337, + "y": 0.8691276 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.34048, + "y": 31.303682, + "z": -72.632996 + }, + "screenPosition": { + "x": 0.5534425, + "y": 0.8797103 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.73611, + "y": 30.44859, + "z": -72.316345 + }, + "screenPosition": { + "x": 0.5450547, + "y": 0.88831526 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.84273, + "y": 30.893414, + "z": -72.60174 + }, + "screenPosition": { + "x": 0.5361637, + "y": 0.87570924 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.01613, + "y": 31.730537, + "z": -73.055244 + }, + "screenPosition": { + "x": 0.52841973, + "y": 0.8547455 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -244.41983, + "y": 28.923632, + "z": -71.56573 + }, + "screenPosition": { + "x": 0.54638505, + "y": 0.9231294 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -241.58952, + "y": 32.28097, + "z": -72.69158 + }, + "screenPosition": { + "x": 0.5963513, + "y": 0.89041686 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.12308, + "y": 33.719673, + "z": -73.42656 + }, + "screenPosition": { + "x": 0.5879619, + "y": 0.85809517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.73938, + "y": 34.91758, + "z": -73.97779 + }, + "screenPosition": { + "x": 0.58767617, + "y": 0.835685 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.49019, + "y": 36.270023, + "z": -74.697136 + }, + "screenPosition": { + "x": 0.5766537, + "y": 0.8031939 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.03474, + "y": 38.68159, + "z": -75.83478 + }, + "screenPosition": { + "x": 0.57299703, + "y": 0.7560082 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.1508, + "y": 36.69992, + "z": -75.303154 + }, + "screenPosition": { + "x": 0.5314498, + "y": 0.7636379 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -247.1319, + "y": 34.408337, + "z": -74.07948 + }, + "screenPosition": { + "x": 0.5507332, + "y": 0.82030624 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.64066, + "y": 35.79147, + "z": -74.5134 + }, + "screenPosition": { + "x": 0.57264674, + "y": 0.8086396 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.61354, + "y": 37.781437, + "z": -75.240524 + }, + "screenPosition": { + "x": 0.5930707, + "y": 0.7861925 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.7183, + "y": 39.48637, + "z": -75.8621 + }, + "screenPosition": { + "x": 0.6106399, + "y": 0.76637584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.45363, + "y": 40.686485, + "z": -76.24129 + }, + "screenPosition": { + "x": 0.6294423, + "y": 0.756751 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.18895, + "y": 41.886604, + "z": -76.620476 + }, + "screenPosition": { + "x": 0.6482447, + "y": 0.74712616 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.49239, + "y": 43.698803, + "z": -77.3046 + }, + "screenPosition": { + "x": 0.6643331, + "y": 0.724325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.05197, + "y": 46.10733, + "z": -78.258484 + }, + "screenPosition": { + "x": 0.68079287, + "y": 0.69071305 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.75537, + "y": 48.57364, + "z": -79.341385 + }, + "screenPosition": { + "x": 0.68593985, + "y": 0.64842767 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.05399, + "y": 49.662064, + "z": -80.0021 + }, + "screenPosition": { + "x": 0.66804683, + "y": 0.6162168 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.19965, + "y": 48.459736, + "z": -79.794945 + }, + "screenPosition": { + "x": 0.63015634, + "y": 0.61305636 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.37459, + "y": 45.551643, + "z": -78.61041 + }, + "screenPosition": { + "x": 0.6139013, + "y": 0.6560716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.9813, + "y": 44.361202, + "z": -77.89888 + }, + "screenPosition": { + "x": 0.6322466, + "y": 0.6904785 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.88213, + "y": 45.079727, + "z": -77.91056 + }, + "screenPosition": { + "x": 0.66725653, + "y": 0.70067674 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.36563, + "y": 47.192715, + "z": -78.73543 + }, + "screenPosition": { + "x": 0.6830164, + "y": 0.6720759 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -239.89561, + "y": 48.8219, + "z": -79.36483 + }, + "screenPosition": { + "x": 0.69552296, + "y": 0.64963704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -239.76715, + "y": 51.246185, + "z": -80.35389 + }, + "screenPosition": { + "x": 0.7092702, + "y": 0.61453545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.31837, + "y": 53.121418, + "z": -81.17877 + }, + "screenPosition": { + "x": 0.7130173, + "y": 0.5822724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.20369, + "y": 54.628407, + "z": -82.06624 + }, + "screenPosition": { + "x": 0.69125813, + "y": 0.5397004 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.74312, + "y": 53.831093, + "z": -81.87861 + }, + "screenPosition": { + "x": 0.6716749, + "y": 0.5413295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -248.68004, + "y": 50.91858, + "z": -81.038155 + }, + "screenPosition": { + "x": 0.61724365, + "y": 0.5587742 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.80354, + "y": 50.100254, + "z": -80.80361 + }, + "screenPosition": { + "x": 0.6017742, + "y": 0.56355727 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.10541, + "y": 48.513092, + "z": -80.26805 + }, + "screenPosition": { + "x": 0.5806674, + "y": 0.57881236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.67537, + "y": 47.865067, + "z": -80.23681 + }, + "screenPosition": { + "x": 0.5513287, + "y": 0.5708164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.65103, + "y": 47.96487, + "z": -80.45967 + }, + "screenPosition": { + "x": 0.5318354, + "y": 0.5561677 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -259.87122, + "y": 50.80329, + "z": -82.01956 + }, + "screenPosition": { + "x": 0.5031675, + "y": 0.48425853 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.1765, + "y": 51.355385, + "z": -82.367516 + }, + "screenPosition": { + "x": 0.49267837, + "y": 0.46697035 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.88934, + "y": 51.395195, + "z": -82.63339 + }, + "screenPosition": { + "x": 0.46536848, + "y": 0.4478276 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -265.52936, + "y": 48.46388, + "z": -81.573975 + }, + "screenPosition": { + "x": 0.43413708, + "y": 0.48124322 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.4463, + "y": 46.21957, + "z": -80.45587 + }, + "screenPosition": { + "x": 0.4441886, + "y": 0.5288781 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.79498, + "y": 45.692913, + "z": -79.81076 + }, + "screenPosition": { + "x": 0.4886361, + "y": 0.5692789 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.91074, + "y": 48.370712, + "z": -80.835 + }, + "screenPosition": { + "x": 0.51091045, + "y": 0.5339392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.09424, + "y": 50.810757, + "z": -81.85925 + }, + "screenPosition": { + "x": 0.5212272, + "y": 0.49625534 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.4866, + "y": 52.631252, + "z": -82.73888 + }, + "screenPosition": { + "x": 0.5161518, + "y": 0.45882967 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.2839, + "y": 53.49989, + "z": -83.26276 + }, + "screenPosition": { + "x": 0.5022676, + "y": 0.4336386 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.0203, + "y": 51.74022, + "z": -82.69593 + }, + "screenPosition": { + "x": 0.47589475, + "y": 0.44855484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.69565, + "y": 49.68197, + "z": -81.816315 + }, + "screenPosition": { + "x": 0.46893853, + "y": 0.48205602 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -258.7054, + "y": 48.79978, + "z": -81.08521 + }, + "screenPosition": { + "x": 0.50501496, + "y": 0.5226601 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.21246, + "y": 49.11329, + "z": -81.07737 + }, + "screenPosition": { + "x": 0.521691, + "y": 0.52770746 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.34079, + "y": 49.018738, + "z": -80.86624 + }, + "screenPosition": { + "x": 0.54021055, + "y": 0.5421058 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.52489, + "y": 48.34362, + "z": -80.42055 + }, + "screenPosition": { + "x": 0.55528486, + "y": 0.56489974 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.43332, + "y": 47.895756, + "z": -79.95138 + }, + "screenPosition": { + "x": 0.58417654, + "y": 0.59168947 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -246.21576, + "y": 52.641483, + "z": -81.52288 + }, + "screenPosition": { + "x": 0.6508156, + "y": 0.5493774 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -244.41599, + "y": 56.148113, + "z": -82.80512 + }, + "screenPosition": { + "x": 0.6865301, + "y": 0.5083366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.34178, + "y": 68.88162, + "z": -88.05539 + }, + "screenPosition": { + "x": 0.7503585, + "y": 0.3150992 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.95064, + "y": 68.916176, + "z": -88.30953 + }, + "screenPosition": { + "x": 0.7241664, + "y": 0.2968492 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.87903, + "y": 67.8001, + "z": -88.11802 + }, + "screenPosition": { + "x": 0.6890118, + "y": 0.29390016 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.53934, + "y": 65.744896, + "z": -87.42217 + }, + "screenPosition": { + "x": 0.66197914, + "y": 0.31383115 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.31029, + "y": 63.158604, + "z": -86.4253 + }, + "screenPosition": { + "x": 0.64120764, + "y": 0.34777552 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.38033, + "y": 60.875313, + "z": -85.397125 + }, + "screenPosition": { + "x": 0.63943595, + "y": 0.38901365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -249.79689, + "y": 57.781166, + "z": -83.9741 + }, + "screenPosition": { + "x": 0.6400883, + "y": 0.44684076 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -246.663, + "y": 54.511463, + "z": -82.33604 + }, + "screenPosition": { + "x": 0.6555912, + "y": 0.51790285 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.33649, + "y": 53.71332, + "z": -81.7926 + }, + "screenPosition": { + "x": 0.6750015, + "y": 0.5454612 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.74794, + "y": 54.554867, + "z": -81.90202 + }, + "screenPosition": { + "x": 0.7056563, + "y": 0.5507392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -243.3255, + "y": 59.885033, + "z": -84.24766 + }, + "screenPosition": { + "x": 0.71584046, + "y": 0.4585102 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -244.71028, + "y": 62.871914, + "z": -85.60814 + }, + "screenPosition": { + "x": 0.7170262, + "y": 0.4041187 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.83054, + "y": 64.72918, + "z": -86.56987 + }, + "screenPosition": { + "x": 0.70477057, + "y": 0.36143583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.6827, + "y": 65.64731, + "z": -87.027275 + }, + "screenPosition": { + "x": 0.7006996, + "y": 0.3416714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.7727, + "y": 62.69581, + "z": -86.27675 + }, + "screenPosition": { + "x": 0.6342926, + "y": 0.35174295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.645, + "y": 59.675198, + "z": -85.01794 + }, + "screenPosition": { + "x": 0.6206336, + "y": 0.3986385 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.52213, + "y": 57.37836, + "z": -83.78253 + }, + "screenPosition": { + "x": 0.6407207, + "y": 0.45455575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.30968, + "y": 58.188393, + "z": -83.82159 + }, + "screenPosition": { + "x": 0.6774836, + "y": 0.46441564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.09056, + "y": 59.534756, + "z": -84.17339 + }, + "screenPosition": { + "x": 0.7066942, + "y": 0.45907208 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -246.98953, + "y": 69.59876, + "z": -88.59492 + }, + "screenPosition": { + "x": 0.7271564, + "y": 0.2862136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.48233, + "y": 71.61499, + "z": -89.38069 + }, + "screenPosition": { + "x": 0.7422936, + "y": 0.25904012 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.61406, + "y": 73.65969, + "z": -90.05307 + }, + "screenPosition": { + "x": 0.77171916, + "y": 0.24078333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.0441, + "y": 74.30772, + "z": -90.08431 + }, + "screenPosition": { + "x": 0.80085427, + "y": 0.24841213 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.67778, + "y": 73.45705, + "z": -89.423584 + }, + "screenPosition": { + "x": 0.83091646, + "y": 0.2843198 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.04117, + "y": 71.38304, + "z": -88.50878 + }, + "screenPosition": { + "x": 0.82704556, + "y": 0.32018644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.72673, + "y": 68.59797, + "z": -87.42199 + }, + "screenPosition": { + "x": 0.8062244, + "y": 0.35785165 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.92725, + "y": 67.44513, + "z": -87.14837 + }, + "screenPosition": { + "x": 0.777506, + "y": 0.3599606 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.968, + "y": 66.86761, + "z": -87.09757 + }, + "screenPosition": { + "x": 0.75459284, + "y": 0.35525164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.87688, + "y": 66.57511, + "z": -87.152336 + }, + "screenPosition": { + "x": 0.7337764, + "y": 0.34668905 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.99371, + "y": 66.29312, + "z": -87.23055 + }, + "screenPosition": { + "x": 0.71059895, + "y": 0.33632937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.95837, + "y": 65.42005, + "z": -87.05075 + }, + "screenPosition": { + "x": 0.68662995, + "y": 0.3364322 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.1014, + "y": 63.778152, + "z": -86.56993 + }, + "screenPosition": { + "x": 0.65671945, + "y": 0.3467869 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.8189, + "y": 59.7269, + "z": -84.77943 + }, + "screenPosition": { + "x": 0.6495538, + "y": 0.41711262 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.73662, + "y": 59.18227, + "z": -84.271164 + }, + "screenPosition": { + "x": 0.67810255, + "y": 0.4463976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.73476, + "y": 60.44238, + "z": -84.60734 + }, + "screenPosition": { + "x": 0.70468014, + "y": 0.44088462 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.42856, + "y": 60.52034, + "z": -84.427475 + }, + "screenPosition": { + "x": 0.7284581, + "y": 0.45541632 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -239.93222, + "y": 65.83917, + "z": -86.393845 + }, + "screenPosition": { + "x": 0.78026104, + "y": 0.3915744 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.54185, + "y": 67.57341, + "z": -87.257835 + }, + "screenPosition": { + "x": 0.77239215, + "y": 0.35412923 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.66891, + "y": 66.564606, + "z": -87.128876 + }, + "screenPosition": { + "x": 0.7357128, + "y": 0.348182 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -271.35654, + "y": 45.452393, + "z": -80.86647 + }, + "screenPosition": { + "x": 0.36003798, + "y": 0.487328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -246.36299, + "y": 61.983093, + "z": -85.39314 + }, + "screenPosition": { + "x": 0.6958384, + "y": 0.4063669 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.97356, + "y": 63.087276, + "z": -86.08905 + }, + "screenPosition": { + "x": 0.67486006, + "y": 0.37179056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.4792, + "y": 64.81626, + "z": -86.94131 + }, + "screenPosition": { + "x": 0.6679215, + "y": 0.33499768 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.91714, + "y": 66.783005, + "z": -87.79356 + }, + "screenPosition": { + "x": 0.67355067, + "y": 0.3023641 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.44266, + "y": 69.23273, + "z": -88.48546 + }, + "screenPosition": { + "x": 0.7209875, + "y": 0.28880328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.87099, + "y": 68.81113, + "z": -88.07494 + }, + "screenPosition": { + "x": 0.7446012, + "y": 0.31254306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.787, + "y": 67.19687, + "z": -87.12492 + }, + "screenPosition": { + "x": 0.7682102, + "y": 0.3582948 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.43538, + "y": 64.79885, + "z": -86.1945 + }, + "screenPosition": { + "x": 0.7496935, + "y": 0.3903298 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.44759, + "y": 68.56756, + "z": -88.94688 + }, + "screenPosition": { + "x": 0.6364886, + "y": 0.24436107 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.29214, + "y": 70.65208, + "z": -89.88514 + }, + "screenPosition": { + "x": 0.6383026, + "y": 0.20691745 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.76372, + "y": 72.42226, + "z": -90.475426 + }, + "screenPosition": { + "x": 0.66261864, + "y": 0.19042422 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.60303, + "y": 73.627625, + "z": -90.86635 + }, + "screenPosition": { + "x": 0.68039256, + "y": 0.18001089 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.18524, + "y": 74.86672, + "z": -91.1556 + }, + "screenPosition": { + "x": 0.7110839, + "y": 0.17765188 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.11661, + "y": 75.73453, + "z": -91.32368 + }, + "screenPosition": { + "x": 0.73638546, + "y": 0.17855763 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.23563, + "y": 75.73674, + "z": -91.151634 + }, + "screenPosition": { + "x": 0.75547355, + "y": 0.19134292 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.56432, + "y": 76.819084, + "z": -91.44482 + }, + "screenPosition": { + "x": 0.7778136, + "y": 0.18627958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.05945, + "y": 76.78978, + "z": -91.2024 + }, + "screenPosition": { + "x": 0.80307233, + "y": 0.20379582 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.039, + "y": 78.243416, + "z": -91.61676 + }, + "screenPosition": { + "x": 0.8307013, + "y": 0.19546342 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.01251, + "y": 77.11822, + "z": -90.87394 + }, + "screenPosition": { + "x": 0.8557108, + "y": 0.23317151 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.21443, + "y": 74.5499, + "z": -89.74022 + }, + "screenPosition": { + "x": 0.8506206, + "y": 0.27752206 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.315, + "y": 72.41589, + "z": -88.86843 + }, + "screenPosition": { + "x": 0.83955353, + "y": 0.30943424 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.94478, + "y": 70.211395, + "z": -88.016205 + }, + "screenPosition": { + "x": 0.82218903, + "y": 0.3386541 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.62276, + "y": 68.59272, + "z": -87.41026 + }, + "screenPosition": { + "x": 0.8071585, + "y": 0.3585863 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.69899, + "y": 66.55852, + "z": -86.76134 + }, + "screenPosition": { + "x": 0.775855, + "y": 0.3752669 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -243.37292, + "y": 65.91575, + "z": -86.74183 + }, + "screenPosition": { + "x": 0.7457464, + "y": 0.36696175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.45598, + "y": 68.16006, + "z": -87.85993 + }, + "screenPosition": { + "x": 0.7357952, + "y": 0.31864867 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.79257, + "y": 70.56112, + "z": -88.97412 + }, + "screenPosition": { + "x": 0.73419535, + "y": 0.2730399 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.0503, + "y": 74.55681, + "z": -90.46356 + }, + "screenPosition": { + "x": 0.771762, + "y": 0.22417286 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.01451, + "y": 73.52837, + "z": -89.759834 + }, + "screenPosition": { + "x": 0.7974302, + "y": 0.2604956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -237.66756, + "y": 74.18386, + "z": -89.63076 + }, + "screenPosition": { + "x": 0.8447814, + "y": 0.28015572 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.0497, + "y": 76.73117, + "z": -90.71757 + }, + "screenPosition": { + "x": 0.8535898, + "y": 0.23882827 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.88683, + "y": 77.65234, + "z": -91.35874 + }, + "screenPosition": { + "x": 0.8294023, + "y": 0.20549005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -245.5626, + "y": 75.74946, + "z": -91.00306 + }, + "screenPosition": { + "x": 0.77250475, + "y": 0.20255122 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.1459, + "y": 74.02877, + "z": -90.3463 + }, + "screenPosition": { + "x": 0.7580209, + "y": 0.2247333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.15442, + "y": 72.23232, + "z": -89.69736 + }, + "screenPosition": { + "x": 0.73884714, + "y": 0.24516897 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.93637, + "y": 70.618904, + "z": -89.10314 + }, + "screenPosition": { + "x": 0.7228825, + "y": 0.2643665 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.34222, + "y": 69.036995, + "z": -88.579315 + }, + "screenPosition": { + "x": 0.7007472, + "y": 0.2788331 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.22816, + "y": 67.42882, + "z": -87.99683 + }, + "screenPosition": { + "x": 0.6835107, + "y": 0.2970915 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.28317, + "y": 65.14857, + "z": -87.15243 + }, + "screenPosition": { + "x": 0.66150284, + "y": 0.32454482 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.7651, + "y": 63.862198, + "z": -86.7576 + }, + "screenPosition": { + "x": 0.6402582, + "y": 0.3341644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.83376, + "y": 62.994385, + "z": -86.58953 + }, + "screenPosition": { + "x": 0.6149628, + "y": 0.33326527 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.62933, + "y": 62.7934, + "z": -86.67165 + }, + "screenPosition": { + "x": 0.59571075, + "y": 0.32402593 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.4502, + "y": 61.862556, + "z": -86.36282 + }, + "screenPosition": { + "x": 0.5827907, + "y": 0.33263975 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -260.75223, + "y": 57.94566, + "z": -85.049324 + }, + "screenPosition": { + "x": 0.52977675, + "y": 0.36956364 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.05005, + "y": 57.334404, + "z": -85.1002 + }, + "screenPosition": { + "x": 0.4933068, + "y": 0.35649666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -271.83014, + "y": 57.92188, + "z": -86.0581 + }, + "screenPosition": { + "x": 0.41734555, + "y": 0.29451638 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.40256, + "y": 60.043163, + "z": -87.07846 + }, + "screenPosition": { + "x": 0.41195056, + "y": 0.25157347 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -273.48038, + "y": 61.40833, + "z": -87.64923 + }, + "screenPosition": { + "x": 0.41794953, + "y": 0.23029885 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -272.31378, + "y": 64.84972, + "z": -88.96275 + }, + "screenPosition": { + "x": 0.44648242, + "y": 0.18047485 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -272.42953, + "y": 60.382935, + "z": -87.12927 + }, + "screenPosition": { + "x": 0.42354697, + "y": 0.25300255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -268.96683, + "y": 58.360626, + "z": -85.97596 + }, + "screenPosition": { + "x": 0.44855133, + "y": 0.30738643 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -266.04602, + "y": 58.31031, + "z": -85.68663 + }, + "screenPosition": { + "x": 0.47792298, + "y": 0.3280588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -264.81683, + "y": 58.053753, + "z": -85.46769 + }, + "screenPosition": { + "x": 0.48911205, + "y": 0.34033585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.42694, + "y": 59.002567, + "z": -85.63966 + }, + "screenPosition": { + "x": 0.51807505, + "y": 0.3421995 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.13004, + "y": 58.98377, + "z": -85.42071 + }, + "screenPosition": { + "x": 0.54126287, + "y": 0.35808352 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.4096, + "y": 60.110348, + "z": -85.63568 + }, + "screenPosition": { + "x": 0.5744085, + "y": 0.3593956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.56024, + "y": 64.44663, + "z": -87.53174 + }, + "screenPosition": { + "x": 0.5843863, + "y": 0.28577664 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.15234, + "y": 63.414604, + "z": -87.52789 + }, + "screenPosition": { + "x": 0.53267676, + "y": 0.27015987 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.47455, + "y": 68.90733, + "z": -88.99769 + }, + "screenPosition": { + "x": 0.64804906, + "y": 0.24582726 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.40637, + "y": 69.93051, + "z": -89.68968 + }, + "screenPosition": { + "x": 0.6234093, + "y": 0.210293 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.7431, + "y": 70.00184, + "z": -90.02593 + }, + "screenPosition": { + "x": 0.58988404, + "y": 0.18646663 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.2715, + "y": 68.23166, + "z": -89.435646 + }, + "screenPosition": { + "x": 0.5656071, + "y": 0.20296206 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.28934, + "y": 66.338455, + "z": -88.74761 + }, + "screenPosition": { + "x": 0.5458572, + "y": 0.22480528 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -263.20053, + "y": 64.00043, + "z": -87.774185 + }, + "screenPosition": { + "x": 0.5351157, + "y": 0.26095214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -262.744, + "y": 62.227207, + "z": -87.00012 + }, + "screenPosition": { + "x": 0.5309163, + "y": 0.29101914 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -261.76755, + "y": 60.427723, + "z": -86.16742 + }, + "screenPosition": { + "x": 0.53185904, + "y": 0.3250286 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.55527, + "y": 58.908016, + "z": -85.42853 + }, + "screenPosition": { + "x": 0.53658706, + "y": 0.35639235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.2407, + "y": 58.452686, + "z": -85.119675 + }, + "screenPosition": { + "x": 0.5476523, + "y": 0.37227297 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.8297, + "y": 56.825714, + "z": -84.31824 + }, + "screenPosition": { + "x": 0.5538611, + "y": 0.40662125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.5802, + "y": 55.693054, + "z": -83.735725 + }, + "screenPosition": { + "x": 0.5608618, + "y": 0.43223178 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.49127, + "y": 55.68476, + "z": -83.54023 + }, + "screenPosition": { + "x": 0.5818817, + "y": 0.44623223 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.8793, + "y": 55.996056, + "z": -83.70442 + }, + "screenPosition": { + "x": 0.5795343, + "y": 0.43897307 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.30269, + "y": 57.180416, + "z": -84.04842 + }, + "screenPosition": { + "x": 0.6013726, + "y": 0.43168053 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.45657, + "y": 58.841114, + "z": -84.7482 + }, + "screenPosition": { + "x": 0.6082494, + "y": 0.40578708 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.4981, + "y": 59.96327, + "z": -85.30726 + }, + "screenPosition": { + "x": 0.60326266, + "y": 0.38160953 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -256.94128, + "y": 62.80916, + "z": -86.70684 + }, + "screenPosition": { + "x": 0.5926656, + "y": 0.32171813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.79608, + "y": 64.166855, + "z": -87.43791 + }, + "screenPosition": { + "x": 0.5806004, + "y": 0.2884203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.61368, + "y": 65.9116, + "z": -88.32536 + }, + "screenPosition": { + "x": 0.57085204, + "y": 0.24951379 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -261.2943, + "y": 71.877075, + "z": -90.850815 + }, + "screenPosition": { + "x": 0.5936701, + "y": 0.1542058 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -258.15207, + "y": 75.21865, + "z": -91.94148 + }, + "screenPosition": { + "x": 0.6393175, + "y": 0.11760079 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.56613, + "y": 76.49977, + "z": -92.32458 + }, + "screenPosition": { + "x": 0.66176885, + "y": 0.110280514 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.52539, + "y": 77.0773, + "z": -92.37537 + }, + "screenPosition": { + "x": 0.6882153, + "y": 0.12128446 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -249.44467, + "y": 79.93204, + "z": -93.0868 + }, + "screenPosition": { + "x": 0.7539594, + "y": 0.1125132 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.3827, + "y": 80.26351, + "z": -92.94211 + }, + "screenPosition": { + "x": 0.7866648, + "y": 0.12834165 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.17552, + "y": 81.95269, + "z": -93.528496 + }, + "screenPosition": { + "x": 0.80731934, + "y": 0.11089052 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.42145, + "y": 83.27583, + "z": -94.005424 + }, + "screenPosition": { + "x": 0.8215556, + "y": 0.09591565 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.9488, + "y": 84.46544, + "z": -94.36116 + }, + "screenPosition": { + "x": 0.84241486, + "y": 0.08786779 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.2682, + "y": 85.64455, + "z": -94.69343 + }, + "screenPosition": { + "x": 0.86533105, + "y": 0.0813969 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -237.29999, + "y": 86.70809, + "z": -94.76765 + }, + "screenPosition": { + "x": 0.9099352, + "y": 0.09247381 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -236.0632, + "y": 87.61793, + "z": -95.02956 + }, + "screenPosition": { + "x": 0.9279469, + "y": 0.08687064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -235.36246, + "y": 92.73577, + "z": -97.07805 + }, + "screenPosition": { + "x": 0.95555973, + "y": 0.0144897355 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.71283, + "y": 90.6125, + "z": -97.503334 + }, + "screenPosition": { + "x": 0.92590535, + "y": 0.016529065 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.9755, + "y": 89.46468, + "z": -95.967834 + }, + "screenPosition": { + "x": 0.9177482, + "y": 0.045764774 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.8884, + "y": 88.19628, + "z": -95.43616 + }, + "screenPosition": { + "x": 0.91231555, + "y": 0.06564001 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.7624, + "y": 86.2453, + "z": -94.6191 + }, + "screenPosition": { + "x": 0.90387857, + "y": 0.09615664 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -237.88158, + "y": 83.91777, + "z": -93.66913 + }, + "screenPosition": { + "x": 0.8910802, + "y": 0.13072653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -238.7861, + "y": 82.11608, + "z": -93.00846 + }, + "screenPosition": { + "x": 0.8729349, + "y": 0.15195069 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -239.88, + "y": 80.51841, + "z": -92.44944 + }, + "screenPosition": { + "x": 0.85388494, + "y": 0.16878276 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -240.88853, + "y": 78.72197, + "z": -91.8005 + }, + "screenPosition": { + "x": 0.83437425, + "y": 0.18921041 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.32227, + "y": 76.84978, + "z": -91.159386 + }, + "screenPosition": { + "x": 0.81023514, + "y": 0.20785564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.82544, + "y": 75.809456, + "z": -90.960045 + }, + "screenPosition": { + "x": 0.7797729, + "y": 0.20661758 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.32101, + "y": 75.93552, + "z": -91.241554 + }, + "screenPosition": { + "x": 0.7555933, + "y": 0.18773921 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.55284, + "y": 76.631645, + "z": -91.73416 + }, + "screenPosition": { + "x": 0.7364283, + "y": 0.16194715 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.67479, + "y": 79.55854, + "z": -93.13766 + }, + "screenPosition": { + "x": 0.72463655, + "y": 0.08978245 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.02953, + "y": 81.61071, + "z": -93.64973 + }, + "screenPosition": { + "x": 0.7766708, + "y": 0.096639045 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -244.82126, + "y": 79.1151, + "z": -92.32441 + }, + "screenPosition": { + "x": 0.7967826, + "y": 0.15644065 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -242.69171, + "y": 77.35459, + "z": -91.40177 + }, + "screenPosition": { + "x": 0.8091278, + "y": 0.19769023 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -241.53442, + "y": 80.69922, + "z": -92.67621 + }, + "screenPosition": { + "x": 0.83800596, + "y": 0.15475935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.3498, + "y": 75.95598, + "z": -92.17213 + }, + "screenPosition": { + "x": 0.651312, + "y": 0.11368998 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.4623, + "y": 74.16479, + "z": -91.53491 + }, + "screenPosition": { + "x": 0.6337841, + "y": 0.13872913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.82166, + "y": 73.06668, + "z": -91.20655 + }, + "screenPosition": { + "x": 0.61452943, + "y": 0.14615792 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.36606, + "y": 70.66341, + "z": -90.264404 + }, + "screenPosition": { + "x": 0.59698, + "y": 0.17898272 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.89093, + "y": 69.08371, + "z": -89.56853 + }, + "screenPosition": { + "x": 0.59399396, + "y": 0.20623328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.04544, + "y": 67.62925, + "z": -88.79836 + }, + "screenPosition": { + "x": 0.60546875, + "y": 0.24092042 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.5026, + "y": 66.28731, + "z": -88.10247 + }, + "screenPosition": { + "x": 0.6144343, + "y": 0.27183452 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.685, + "y": 64.542564, + "z": -87.21503 + }, + "screenPosition": { + "x": 0.6241807, + "y": 0.31074435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.34918, + "y": 63.841187, + "z": -86.710686 + }, + "screenPosition": { + "x": 0.64426535, + "y": 0.33720613 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -251.80214, + "y": 58.66031, + "z": -84.52144 + }, + "screenPosition": { + "x": 0.6241284, + "y": 0.41981047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.1505, + "y": 56.58934, + "z": -83.790405 + }, + "screenPosition": { + "x": 0.6000357, + "y": 0.44183916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.72542, + "y": 54.335358, + "z": -83.00465 + }, + "screenPosition": { + "x": 0.5729444, + "y": 0.46563438 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -257.54053, + "y": 53.31079, + "z": -82.84049 + }, + "screenPosition": { + "x": 0.53929156, + "y": 0.4620243 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.2458, + "y": 54.51699, + "z": -83.58722 + }, + "screenPosition": { + "x": 0.5178609, + "y": 0.4252519 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.98636, + "y": 56.596252, + "z": -84.51375 + }, + "screenPosition": { + "x": 0.5207034, + "y": 0.38859674 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.58316, + "y": 58.617733, + "z": -85.31125 + }, + "screenPosition": { + "x": 0.53484786, + "y": 0.3605648 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.0454, + "y": 60.484673, + "z": -85.940636 + }, + "screenPosition": { + "x": 0.5596933, + "y": 0.34256813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -256.79672, + "y": 61.051697, + "z": -85.96797 + }, + "screenPosition": { + "x": 0.58538085, + "y": 0.34941965 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.5201, + "y": 61.909, + "z": -86.11258 + }, + "screenPosition": { + "x": 0.6127393, + "y": 0.3519024 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -251.24333, + "y": 57.951466, + "z": -84.17741 + }, + "screenPosition": { + "x": 0.62603, + "y": 0.4339346 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.43596, + "y": 55.479904, + "z": -83.08277 + }, + "screenPosition": { + "x": 0.62214774, + "y": 0.4774682 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -250.96176, + "y": 53.270153, + "z": -82.21881 + }, + "screenPosition": { + "x": 0.6058117, + "y": 0.50747657 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.4809, + "y": 51.596737, + "z": -81.66762 + }, + "screenPosition": { + "x": 0.5820719, + "y": 0.5225622 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.88673, + "y": 50.014828, + "z": -81.14378 + }, + "screenPosition": { + "x": 0.5599366, + "y": 0.5370288 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.766, + "y": 48.94299, + "z": -80.87406 + }, + "screenPosition": { + "x": 0.5355397, + "y": 0.5405152 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -258.1576, + "y": 49.0638, + "z": -81.143845 + }, + "screenPosition": { + "x": 0.5118848, + "y": 0.5223643 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.66327, + "y": 50.792786, + "z": -81.9961 + }, + "screenPosition": { + "x": 0.5052224, + "y": 0.48576778 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -260.20517, + "y": 52.764782, + "z": -82.86008 + }, + "screenPosition": { + "x": 0.50954765, + "y": 0.45216492 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -259.27274, + "y": 54.856762, + "z": -83.63803 + }, + "screenPosition": { + "x": 0.5294213, + "y": 0.4267181 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.466, + "y": 56.41462, + "z": -83.931175 + }, + "screenPosition": { + "x": 0.5757869, + "y": 0.42897922 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -254.11595, + "y": 57.41596, + "z": -84.22045 + }, + "screenPosition": { + "x": 0.5944655, + "y": 0.422958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -251.71677, + "y": 58.461536, + "z": -84.43152 + }, + "screenPosition": { + "x": 0.62395805, + "y": 0.42332584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.02252, + "y": 58.228203, + "z": -84.087456 + }, + "screenPosition": { + "x": 0.650003, + "y": 0.4450394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.99525, + "y": 55.403324, + "z": -82.734795 + }, + "screenPosition": { + "x": 0.65666246, + "y": 0.50208086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.87949, + "y": 52.725525, + "z": -81.710556 + }, + "screenPosition": { + "x": 0.63436055, + "y": 0.5367615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.47607, + "y": 50.87296, + "z": -81.6442 + }, + "screenPosition": { + "x": 0.54809046, + "y": 0.5131525 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.10323, + "y": 48.22889, + "z": -80.5183 + }, + "screenPosition": { + "x": 0.5386165, + "y": 0.5550991 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -255.0812, + "y": 46.283157, + "z": -79.712975 + }, + "screenPosition": { + "x": 0.5292405, + "y": 0.58561563 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -253.79282, + "y": 44.46792, + "z": -78.84508 + }, + "screenPosition": { + "x": 0.53326863, + "y": 0.62199056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -252.01411, + "y": 43.405754, + "z": -78.24301 + }, + "screenPosition": { + "x": 0.5459947, + "y": 0.65002674 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -249.91417, + "y": 42.424595, + "z": -77.64485 + }, + "screenPosition": { + "x": 0.56243163, + "y": 0.6794853 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.58937, + "y": 42.69608, + "z": -77.543175 + }, + "screenPosition": { + "x": 0.58727753, + "y": 0.6907306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -245.36096, + "y": 44.139206, + "z": -77.93408 + }, + "screenPosition": { + "x": 0.6171485, + "y": 0.6844508 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.00856, + "y": 47.18608, + "z": -79.25154 + }, + "screenPosition": { + "x": 0.6254125, + "y": 0.6325338 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -247.72466, + "y": 44.550304, + "z": -78.321144 + }, + "screenPosition": { + "x": 0.5952227, + "y": 0.6620928 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -248.0146, + "y": 42.62033, + "z": -77.551 + }, + "screenPosition": { + "x": 0.5826504, + "y": 0.6893289 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -246.36777, + "y": 41.273136, + "z": -76.84338 + }, + "screenPosition": { + "x": 0.592666, + "y": 0.7211581 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -244.48508, + "y": 40.205723, + "z": -76.22959 + }, + "screenPosition": { + "x": 0.6064452, + "y": 0.750215 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.52599, + "y": 59.672985, + "z": -85.18997 + }, + "screenPosition": { + "x": 0.6015207, + "y": 0.385805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.52599, + "y": 59.672985, + "z": -85.18997 + }, + "screenPosition": { + "x": 0.6015207, + "y": 0.385805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.52599, + "y": 59.672985, + "z": -85.18997 + }, + "screenPosition": { + "x": 0.6015207, + "y": 0.385805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.4127, + "y": 59.764496, + "z": -85.21734 + }, + "screenPosition": { + "x": 0.60311574, + "y": 0.38516867 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.42201, + "y": 59.667732, + "z": -85.178246 + }, + "screenPosition": { + "x": 0.60253173, + "y": 0.38656014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.4127, + "y": 59.764496, + "z": -85.21734 + }, + "screenPosition": { + "x": 0.60311574, + "y": 0.38516867 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.42201, + "y": 59.667732, + "z": -85.178246 + }, + "screenPosition": { + "x": 0.60253173, + "y": 0.38656014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.42201, + "y": 59.667732, + "z": -85.178246 + }, + "screenPosition": { + "x": 0.60253173, + "y": 0.38656014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.42201, + "y": 59.667732, + "z": -85.178246 + }, + "screenPosition": { + "x": 0.60253173, + "y": 0.38656014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.4127, + "y": 59.764496, + "z": -85.21734 + }, + "screenPosition": { + "x": 0.60311574, + "y": 0.38516867 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.4127, + "y": 59.764496, + "z": -85.21734 + }, + "screenPosition": { + "x": 0.60311574, + "y": 0.38516867 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.42201, + "y": 59.667732, + "z": -85.178246 + }, + "screenPosition": { + "x": 0.60253173, + "y": 0.38656014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.42201, + "y": 59.667732, + "z": -85.178246 + }, + "screenPosition": { + "x": 0.60253173, + "y": 0.38656014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -251.30254, + "y": 59.51015, + "z": -84.826355 + }, + "screenPosition": { + "x": 0.6334272, + "y": 0.41029644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.5167, + "y": 59.76975, + "z": -85.229065 + }, + "screenPosition": { + "x": 0.6021048, + "y": 0.38441327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.52599, + "y": 59.672985, + "z": -85.18997 + }, + "screenPosition": { + "x": 0.6015207, + "y": 0.385805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62067, + "y": 59.775, + "z": -85.2408 + }, + "screenPosition": { + "x": 0.6010932, + "y": 0.38365716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -254.62997, + "y": 59.678238, + "z": -85.201706 + }, + "screenPosition": { + "x": 0.6005091, + "y": 0.38504916 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190824-085503/brain-C784B0-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + -0.0887422185034561, + -0.9235280169897585, + 0.373123063465727, + 0.0, + -0.9924481991923596, + 0.05013424944186262, + -0.11195145801973053, + 0.0, + 0.08468406328777126, + -0.3802401331630647, + -0.9210027418836533, + 0.0, + -260.25651665176684, + 30.05439825780286, + -178.67645484091048, + 1.0 + ] + }, + "baseImage": "20190824-085503/base.webp", + "version": 0, + "savedAt": 1.566637251387E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190824-091034-v0.json b/data/mapping/BAAAHS/afik/20190824-091034-v0.json new file mode 100644 index 0000000000..95cfeb072d --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190824-091034-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566637834202E12,"surfaces":[{"brainId":"C79338","panelName":"26D","pixels":[{"modelPosition":{"x":-281.03128,"y":144.63187,"z":-82.591385},"screenPosition":{"x":0.69754755,"y":0.214899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.94467,"y":144.91534,"z":-82.55906},"screenPosition":{"x":0.68498224,"y":0.22617911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.42694,"y":146.07605,"z":-82.26999},"screenPosition":{"x":0.6458728,"y":0.24163367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.18137,"y":147.32562,"z":-81.9698},"screenPosition":{"x":0.6019082,"y":0.26106247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.87363,"y":147.17828,"z":-82.20643},"screenPosition":{"x":0.58525485,"y":0.30192363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.5764,"y":145.14323,"z":-82.942406},"screenPosition":{"x":0.6283847,"y":0.32433328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.55624,"y":143.21794,"z":-83.521736},"screenPosition":{"x":0.6822856,"y":0.32021594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.61487,"y":142.04054,"z":-83.715164},"screenPosition":{"x":0.7330266,"y":0.28298151},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-280.59958,"y":144.00992,"z":-82.77144},"screenPosition":{"x":0.7159932,"y":0.21186723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.0295,"y":145.40437,"z":-82.19158},"screenPosition":{"x":0.69575524,"y":0.17961843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.31583,"y":148.25844,"z":-81.17828},"screenPosition":{"x":0.6331431,"y":0.152272},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-281.61688,"y":150.64435,"z":-80.60172},"screenPosition":{"x":0.55079406,"y":0.18785061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.0624,"y":151.74236,"z":-80.331276},"screenPosition":{"x":0.5133406,"y":0.20323347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.55905,"y":153.57191,"z":-79.81735},"screenPosition":{"x":0.45828256,"y":0.21488932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.20334,"y":155.02632,"z":-79.30153},"screenPosition":{"x":0.42631423,"y":0.2010733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.15552,"y":157.51637,"z":-78.45737},"screenPosition":{"x":0.36721638,"y":0.1859018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.97623,"y":158.6789,"z":-78.05236},"screenPosition":{"x":0.34090132,"y":0.17636469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.15405,"y":160.30875,"z":-77.37551},"screenPosition":{"x":0.3160363,"y":0.13953817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.42834,"y":160.5995,"z":-77.15755},"screenPosition":{"x":0.32238346,"y":0.11196799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.44626,"y":160.58618,"z":-77.024475},"screenPosition":{"x":0.33796093,"y":0.0823275},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-275.98987,"y":156.12543,"z":-78.3603},"screenPosition":{"x":0.46331945,"y":0.07151435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.00195,"y":154.8507,"z":-78.79159},"screenPosition":{"x":0.4936455,"y":0.07913016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.09464,"y":154.68169,"z":-78.993904},"screenPosition":{"x":0.48156738,"y":0.11149245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.4589,"y":154.59726,"z":-79.186516},"screenPosition":{"x":0.46538058,"y":0.14743315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.78857,"y":155.28197,"z":-79.117004},"screenPosition":{"x":0.43059292,"y":0.17899989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.6717,"y":155.49702,"z":-79.10568},"screenPosition":{"x":0.41885552,"y":0.19075173},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-291.5542,"y":158.22684,"z":-79.68319},"screenPosition":{"x":0.29716897,"y":0.2972041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.16333,"y":159.63966,"z":-79.32582},"screenPosition":{"x":0.26732835,"y":0.2834975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.86603,"y":161.45712,"z":-78.913605},"screenPosition":{"x":0.22750816,"y":0.26887926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.2066,"y":162.76492,"z":-78.514},"screenPosition":{"x":0.20177162,"y":0.25172454},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-283.87363,"y":162.8336,"z":-77.03691},"screenPosition":{"x":0.24432336,"y":0.15221235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.37213,"y":161.39111,"z":-77.025154},"screenPosition":{"x":0.2885289,"y":0.13649508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.7569,"y":159.961,"z":-77.46537},"screenPosition":{"x":0.3272771,"y":0.13583903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.67496,"y":158.28117,"z":-78.02693},"screenPosition":{"x":0.36810887,"y":0.14418021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.3142,"y":157.16965,"z":-78.51605},"screenPosition":{"x":0.38160208,"y":0.17583905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.17746,"y":156.2719,"z":-78.94853},"screenPosition":{"x":0.38894808,"y":0.20860103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.54523,"y":156.99982,"z":-78.98825},"screenPosition":{"x":0.35396382,"y":0.24026676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.7619,"y":158.36401,"z":-79.242905},"screenPosition":{"x":0.30659696,"y":0.26828188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.3146,"y":159.91234,"z":-79.07807},"screenPosition":{"x":0.26683983,"y":0.26896197},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-287.2935,"y":162.85513,"z":-77.82348},"screenPosition":{"x":0.21998523,"y":0.20564392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.5405,"y":162.86469,"z":-77.4164},"screenPosition":{"x":0.23198305,"y":0.17814796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.69717,"y":163.13872,"z":-76.93845},"screenPosition":{"x":0.23841229,"y":0.14805926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.20953,"y":163.25041,"z":-76.57342},"screenPosition":{"x":0.24625525,"y":0.123981416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.4463,"y":162.57858,"z":-76.42108},"screenPosition":{"x":0.28271732,"y":0.08570078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.4866,"y":161.10316,"z":-76.85269},"screenPosition":{"x":0.32523528,"y":0.08009251},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-276.49185,"y":158.43033,"z":-77.61681},"screenPosition":{"x":0.4044527,"y":0.06559759},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-279.03577,"y":157.84155,"z":-77.9922},"screenPosition":{"x":0.3989177,"y":0.107173935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.89166,"y":159.72878,"z":-77.34492},"screenPosition":{"x":0.3549923,"y":0.094006404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.8477,"y":149.83452,"z":-80.96062},"screenPosition":{"x":0.5602142,"y":0.21137612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.84552,"y":148.10872,"z":-81.47383},"screenPosition":{"x":0.6094708,"y":0.20612009},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-278.50638,"y":145.869,"z":-81.998375},"screenPosition":{"x":0.68827003,"y":0.16936514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.18665,"y":145.52477,"z":-81.8842},"screenPosition":{"x":0.7224675,"y":0.12129834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.3142,"y":147.79053,"z":-80.98913},"screenPosition":{"x":0.6828151,"y":0.08000919},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-275.6879,"y":151.42593,"z":-79.92627},"screenPosition":{"x":0.57674766,"y":0.09546469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.32617,"y":152.69041,"z":-79.54358},"screenPosition":{"x":0.5426181,"y":0.09668155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.96558,"y":154.42664,"z":-79.07108},"screenPosition":{"x":0.48854268,"y":0.111173056},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-282.0388,"y":155.32397,"z":-79.05078},"screenPosition":{"x":0.4354022,"y":0.16747236},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-283.24017,"y":151.01973,"z":-80.58763},"screenPosition":{"x":0.5293391,"y":0.20999978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.97278,"y":149.20482,"z":-81.112526},"screenPosition":{"x":0.5824056,"y":0.2015825},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-277.17532,"y":149.86212,"z":-80.55758},"screenPosition":{"x":0.60365444,"y":0.12581855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.55273,"y":151.6341,"z":-79.91601},"screenPosition":{"x":0.566163,"y":0.10614888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.36108,"y":153.62122,"z":-79.23169},"screenPosition":{"x":0.52021986,"y":0.09168578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.95917,"y":155.27719,"z":-78.78342},"screenPosition":{"x":0.4682472,"y":0.106186874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.40887,"y":155.79199,"z":-78.77961},"screenPosition":{"x":0.43725562,"y":0.13971522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.25702,"y":155.9661,"z":-78.8491},"screenPosition":{"x":0.41850364,"y":0.16689472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.02386,"y":156.61305,"z":-78.75326},"screenPosition":{"x":0.38983163,"y":0.18912774},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-289.3193,"y":159.01463,"z":-79.017624},"screenPosition":{"x":0.2944906,"y":0.25817624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.29422,"y":159.24347,"z":-79.430954},"screenPosition":{"x":0.2758634,"y":0.2871501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.48926,"y":159.70575,"z":-79.85106},"screenPosition":{"x":0.24984384,"y":0.3190976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.3107,"y":158.54291,"z":-80.49192},"screenPosition":{"x":0.26411802,"y":0.35368887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.23804,"y":157.11372,"z":-80.9764},"screenPosition":{"x":0.29080233,"y":0.3756719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.70026,"y":155.66599,"z":-81.58805},"screenPosition":{"x":0.31418845,"y":0.40612665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.42285,"y":153.7709,"z":-81.882065},"screenPosition":{"x":0.36005345,"y":0.41169593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.92142,"y":151.85966,"z":-82.12734},"screenPosition":{"x":0.407169,"y":0.4142178},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-296.0521,"y":148.52605,"z":-82.55637},"screenPosition":{"x":0.49127933,"y":0.41761237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.58398,"y":146.0956,"z":-83.10719},"screenPosition":{"x":0.55181295,"y":0.4237957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.04465,"y":144.49545,"z":-83.54069},"screenPosition":{"x":0.60184777,"y":0.41004845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.47156,"y":143.03271,"z":-83.925446},"screenPosition":{"x":0.6488641,"y":0.3949935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.25952,"y":140.98631,"z":-84.53235},"screenPosition":{"x":0.70702857,"y":0.3887565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.90848,"y":138.4722,"z":-85.21815},"screenPosition":{"x":0.7846111,"y":0.3683312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.19016,"y":139.18338,"z":-84.789314},"screenPosition":{"x":0.7890798,"y":0.32326433},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-281.91528,"y":141.07794,"z":-83.852844},"screenPosition":{"x":0.7767807,"y":0.24811955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.00192,"y":142.22621,"z":-83.33228},"screenPosition":{"x":0.7641098,"y":0.2127345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.7359,"y":143.98906,"z":-82.64913},"screenPosition":{"x":0.73178947,"y":0.18347074},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-280.96686,"y":149.16821,"z":-81.05507},"screenPosition":{"x":0.5900475,"y":0.18750492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.28836,"y":149.19753,"z":-81.20631},"screenPosition":{"x":0.57245153,"y":0.22135036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.4893,"y":149.39734,"z":-81.291595},"screenPosition":{"x":0.55073917,"y":0.25318444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.86002,"y":149.90001,"z":-81.21699},"screenPosition":{"x":0.52819073,"y":0.2708047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.0587,"y":150.49068,"z":-81.10073},"screenPosition":{"x":0.5048677,"y":0.2853317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.01862,"y":152.32692,"z":-80.47788},"screenPosition":{"x":0.4611239,"y":0.27422205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.4238,"y":153.95488,"z":-79.956276},"screenPosition":{"x":0.41939035,"y":0.27060124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.42438,"y":154.16959,"z":-79.88381},"screenPosition":{"x":0.41426027,"y":0.26935977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.00064,"y":155.09958,"z":-79.91503},"screenPosition":{"x":0.38099608,"y":0.2885343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.1222,"y":156.50745,"z":-80.13944},"screenPosition":{"x":0.33315107,"y":0.31486464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.87756,"y":157.84758,"z":-80.292},"screenPosition":{"x":0.28999943,"y":0.33519185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.1349,"y":160.0907,"z":-79.69638},"screenPosition":{"x":0.24330948,"y":0.31168407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.21497,"y":158.83372,"z":-79.25888},"screenPosition":{"x":0.2928928,"y":0.27238742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.4994,"y":149.7939,"z":-83.11374},"screenPosition":{"x":0.43784326,"y":0.46496382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.2833,"y":150.56358,"z":-83.3807},"screenPosition":{"x":0.4075567,"y":0.48887423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.33035,"y":152.33041,"z":-83.52005},"screenPosition":{"x":0.35197675,"y":0.5117919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.9107,"y":154.63982,"z":-83.217766},"screenPosition":{"x":0.29464868,"y":0.5087406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.66504,"y":156.41652,"z":-83.05639},"screenPosition":{"x":0.24823214,"y":0.5112523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.3149,"y":158.3566,"z":-82.608795},"screenPosition":{"x":0.2056746,"y":0.49563807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.12665,"y":160.12038,"z":-82.000755},"screenPosition":{"x":0.17304869,"y":0.467822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.27246,"y":160.74277,"z":-81.45446},"screenPosition":{"x":0.17153797,"y":0.43554056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.2823,"y":161.31543,"z":-80.88613},"screenPosition":{"x":0.17212816,"y":0.4013903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.46353,"y":161.36371,"z":-80.45653},"screenPosition":{"x":0.18368639,"y":0.37266234},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-291.52777,"y":160.37193,"z":-79.27168},"screenPosition":{"x":0.24806516,"y":0.28490773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.15158,"y":158.29688,"z":-79.57687},"screenPosition":{"x":0.29855603,"y":0.29024163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.0292,"y":156.09921,"z":-80.1951},"screenPosition":{"x":0.34349084,"y":0.31527302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.75885,"y":156.10072,"z":-80.825874},"screenPosition":{"x":0.32444957,"y":0.35796392},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-298.55002,"y":156.51314,"z":-81.62441},"screenPosition":{"x":0.28861606,"y":0.4150069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.32822,"y":156.82466,"z":-81.97663},"screenPosition":{"x":0.26899585,"y":0.44122037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.49973,"y":156.84322,"z":-82.47515},"screenPosition":{"x":0.25321892,"y":0.4752719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.40167,"y":157.4271,"z":-82.80452},"screenPosition":{"x":0.2264986,"y":0.5019359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.21002,"y":157.82733,"z":-83.14696},"screenPosition":{"x":0.2047405,"y":0.5280736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.0138,"y":158.22653,"z":-83.48852},"screenPosition":{"x":0.18290797,"y":0.5542297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.98843,"y":158.54471,"z":-83.8849},"screenPosition":{"x":0.16176398,"y":0.5834843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.0911,"y":158.02785,"z":-84.4687},"screenPosition":{"x":0.15909518,"y":0.6191046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.71146,"y":156.95708,"z":-85.04566},"screenPosition":{"x":0.17263557,"y":0.6500664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.67877,"y":155.18929,"z":-85.603386},"screenPosition":{"x":0.20689473,"y":0.6744441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.9051,"y":153.20377,"z":-86.030945},"screenPosition":{"x":0.2512382,"y":0.6882669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.22043,"y":150.95212,"z":-86.52938},"screenPosition":{"x":0.301225,"y":0.7049518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.17792,"y":148.75502,"z":-86.70359},"screenPosition":{"x":0.35962108,"y":0.7002073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.58603,"y":149.14915,"z":-86.029884},"screenPosition":{"x":0.36809722,"y":0.6574447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.61426,"y":151.37456,"z":-85.38465},"screenPosition":{"x":0.32344612,"y":0.6306762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.3915,"y":153.14609,"z":-84.99836},"screenPosition":{"x":0.284169,"y":0.61799103},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-309.0702,"y":155.52576,"z":-84.24315},"screenPosition":{"x":0.2380051,"y":0.58487344},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-305.41345,"y":154.62732,"z":-83.56755},"screenPosition":{"x":0.28451344,"y":0.53231484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.1724,"y":152.50874,"z":-83.681015},"screenPosition":{"x":0.3423022,"y":0.5239487},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-307.3542,"y":147.707,"z":-85.32407},"screenPosition":{"x":0.4314941,"y":0.59884334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.078,"y":146.81566,"z":-85.89105},"screenPosition":{"x":0.44015163,"y":0.6304882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.0652,"y":145.58122,"z":-86.58376},"screenPosition":{"x":0.45467165,"y":0.66798663},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-314.4583,"y":144.15996,"z":-87.63682},"screenPosition":{"x":0.4642437,"y":0.7285963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.04007,"y":141.54327,"z":-88.26583},"screenPosition":{"x":0.52087975,"y":0.751371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.84082,"y":140.73663,"z":-87.90983},"screenPosition":{"x":0.5544246,"y":0.7210015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.41315,"y":139.688,"z":-87.54676},"screenPosition":{"x":0.59461725,"y":0.68829197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.84097,"y":137.11856,"z":-87.90007},"screenPosition":{"x":0.65974647,"y":0.6930795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.99857,"y":134.33234,"z":-88.69425},"screenPosition":{"x":0.7163004,"y":0.7257554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.71075,"y":133.10527,"z":-89.0908},"screenPosition":{"x":0.7386416,"y":0.7430265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.05145,"y":129.32158,"z":-90.11582},"screenPosition":{"x":0.8182094,"y":0.7840669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.09177,"y":128.86543,"z":-90.67373},"screenPosition":{"x":0.81377846,"y":0.8181352},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-319.2614,"y":133.0036,"z":-90.855644},"screenPosition":{"x":0.68952227,"y":0.8620641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.1605,"y":135.07832,"z":-90.440216},"screenPosition":{"x":0.6421047,"y":0.8496484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.9299,"y":136.86996,"z":-90.0483},"screenPosition":{"x":0.60215724,"y":0.8366804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.70264,"y":139.43999,"z":-89.74126},"screenPosition":{"x":0.53716224,"y":0.83535635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.00998,"y":140.74734,"z":-90.02761},"screenPosition":{"x":0.49006808,"y":0.86415845},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-309.44217,"y":136.73108,"z":-87.8811},"screenPosition":{"x":0.6706855,"y":0.6887072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.3754,"y":138.79544,"z":-87.24433},"screenPosition":{"x":0.6310691,"y":0.66137534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.576,"y":140.28587,"z":-86.77785},"screenPosition":{"x":0.6020726,"y":0.641075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.24463,"y":142.46672,"z":-86.0579},"screenPosition":{"x":0.56077075,"y":0.6088403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.71344,"y":144.51128,"z":-85.548706},"screenPosition":{"x":0.51605535,"y":0.58983123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.44885,"y":146.2076,"z":-85.166954},"screenPosition":{"x":0.47955242,"y":0.5768432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.18573,"y":148.79947,"z":-84.616295},"screenPosition":{"x":0.4212712,"y":0.5591869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.23196,"y":150.46103,"z":-84.312965},"screenPosition":{"x":0.38241097,"y":0.5512329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.7205,"y":152.36632,"z":-84.065834},"screenPosition":{"x":0.3348145,"y":0.54893076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.2514,"y":153.4659,"z":-83.98077},"screenPosition":{"x":0.30561027,"y":0.5514999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.75085,"y":154.34586,"z":-84.161125},"screenPosition":{"x":0.27465725,"y":0.57038784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.98148,"y":156.45453,"z":-84.04712},"screenPosition":{"x":0.21726234,"y":0.57863516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.1642,"y":158.24321,"z":-83.98251},"screenPosition":{"x":0.1675132,"y":0.5878097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.93433,"y":160.35292,"z":-83.29948},"screenPosition":{"x":0.12717251,"y":0.55753624},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-305.02283,"y":160.03337,"z":-82.455574},"screenPosition":{"x":0.16184911,"y":0.49796435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.99356,"y":159.84764,"z":-82.02153},"screenPosition":{"x":0.18026869,"y":0.4672119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.00208,"y":159.30771,"z":-81.66316},"screenPosition":{"x":0.206707,"y":0.4388025},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-297.66342,"y":157.1393,"z":-81.3011},"screenPosition":{"x":0.28027305,"y":0.39785534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.89145,"y":154.46092,"z":-81.62881},"screenPosition":{"x":0.34777513,"y":0.3997579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.99368,"y":152.05067,"z":-82.33914},"screenPosition":{"x":0.39598283,"y":0.42960978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.75275,"y":151.4778,"z":-83.085266},"screenPosition":{"x":0.38954008,"y":0.4759839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.79892,"y":152.57115,"z":-83.35169},"screenPosition":{"x":0.3503243,"y":0.50215304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.3367,"y":155.23538,"z":-82.97252},"screenPosition":{"x":0.28488624,"y":0.49662396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.20834,"y":157.19012,"z":-82.57342},"screenPosition":{"x":0.24044302,"y":0.484405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.13132,"y":158.24586,"z":-81.893715},"screenPosition":{"x":0.23043436,"y":0.4463718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.7807,"y":158.30965,"z":-81.33822},"screenPosition":{"x":0.24534038,"y":0.40923554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.04547,"y":158.09135,"z":-80.97832},"screenPosition":{"x":0.26249877,"y":0.38320795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.6337,"y":157.39256,"z":-80.5528},"screenPosition":{"x":0.29551816,"y":0.3490969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.53015,"y":157.11017,"z":-80.11986},"screenPosition":{"x":0.3167304,"y":0.31763747},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-289.3603,"y":153.61078,"z":-80.13747},"screenPosition":{"x":0.4203917,"y":0.28664958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.63986,"y":151.5984,"z":-80.76701},"screenPosition":{"x":0.47395954,"y":0.28758496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.3005,"y":149.46223,"z":-81.53421},"screenPosition":{"x":0.51952124,"y":0.3101636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.4062,"y":147.7535,"z":-82.187965},"screenPosition":{"x":0.55189043,"y":0.33661476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.18237,"y":146.4651,"z":-82.746315},"screenPosition":{"x":0.56883734,"y":0.3707962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.4123,"y":145.59555,"z":-83.194725},"screenPosition":{"x":0.57239074,"y":0.4092835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.5665,"y":145.4051,"z":-83.408554},"screenPosition":{"x":0.560726,"y":0.44255406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.72446,"y":146.19087,"z":-83.61551},"screenPosition":{"x":0.5263506,"y":0.47177088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.74072,"y":148.10648,"z":-83.71963},"screenPosition":{"x":0.4674812,"y":0.49342158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.63712,"y":149.95392,"z":-83.57771},"screenPosition":{"x":0.41899097,"y":0.49766287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.15796,"y":152.9781,"z":-82.89542},"screenPosition":{"x":0.35242838,"y":0.4743014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.69696,"y":154.97368,"z":-82.64288},"screenPosition":{"x":0.30238634,"y":0.4723177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.56635,"y":155.61452,"z":-81.566826},"screenPosition":{"x":0.3162463,"y":0.4043568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.38083,"y":155.59431,"z":-81.06538},"screenPosition":{"x":0.33147094,"y":0.37069273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.10046,"y":155.61446,"z":-80.53438},"screenPosition":{"x":0.3474466,"y":0.3343784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.84183,"y":153.70299,"z":-80.37344},"screenPosition":{"x":0.40752494,"y":0.30899844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.79938,"y":151.68057,"z":-80.81974},"screenPosition":{"x":0.46307173,"y":0.30449092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.8804,"y":149.71498,"z":-81.48911},"screenPosition":{"x":0.5092134,"y":0.31726095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.80777,"y":147.87825,"z":-82.17371},"screenPosition":{"x":0.54604393,"y":0.34178647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.63196,"y":146.88646,"z":-82.63523},"screenPosition":{"x":0.5555582,"y":0.37497187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.9996,"y":146.05814,"z":-83.07928},"screenPosition":{"x":0.55705553,"y":0.41530776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.29492,"y":146.60793,"z":-83.2062},"screenPosition":{"x":0.5271048,"y":0.44708893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.73703,"y":148.89758,"z":-83.10688},"screenPosition":{"x":0.4631918,"y":0.45797148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.97144,"y":151.38364,"z":-82.691246},"screenPosition":{"x":0.40465143,"y":0.448395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.5362,"y":153.60403,"z":-82.17099},"screenPosition":{"x":0.35618576,"y":0.4299837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.22458,"y":154.87518,"z":-81.39635},"screenPosition":{"x":0.3426352,"y":0.38730004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.17255,"y":155.35434,"z":-80.83138},"screenPosition":{"x":0.34543732,"y":0.35305953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.52933,"y":155.31123,"z":-80.228455},"screenPosition":{"x":0.36482203,"y":0.31199098},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-287.87408,"y":147.39,"z":-82.134964},"screenPosition":{"x":0.5802803,"y":0.3006483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.93024,"y":147.48904,"z":-81.9666},"screenPosition":{"x":0.59288216,"y":0.2709257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.90695,"y":147.20876,"z":-81.920815},"screenPosition":{"x":0.61485684,"y":0.2424176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.79733,"y":149.29027,"z":-81.071495},"screenPosition":{"x":0.58158034,"y":0.19856359},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-283.1041,"y":152.67815,"z":-80.018166},"screenPosition":{"x":0.49081168,"y":0.19828707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.0269,"y":154.68375,"z":-79.40497},"screenPosition":{"x":0.4357604,"y":0.20052572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.4884,"y":156.22954,"z":-78.98442},"screenPosition":{"x":0.3877086,"y":0.21332288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.46042,"y":157.48973,"z":-78.87606},"screenPosition":{"x":0.3432662,"y":0.23627977},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-292.3626,"y":158.53445,"z":-79.81195},"screenPosition":{"x":0.284864,"y":0.30757532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.96014,"y":156.91191,"z":-80.48792},"screenPosition":{"x":0.31091914,"y":0.34157175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.05475,"y":156.29959,"z":-81.08789},"screenPosition":{"x":0.310667,"y":0.3773456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.4916,"y":154.75429,"z":-81.48093},"screenPosition":{"x":0.34366968,"y":0.39203557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.6388,"y":152.43619,"z":-82.184235},"screenPosition":{"x":0.38952804,"y":0.42203298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.46527,"y":150.26112,"z":-82.32399},"screenPosition":{"x":0.44783413,"y":0.41517627},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-291.0398,"y":149.58116,"z":-81.61478},"screenPosition":{"x":0.50362056,"y":0.33533368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.83905,"y":150.4833,"z":-81.22679},"screenPosition":{"x":0.4913371,"y":0.3120684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.79294,"y":150.8328,"z":-80.96676},"screenPosition":{"x":0.4986636,"y":0.2794179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.84296,"y":151.56404,"z":-80.58448},"screenPosition":{"x":0.49631193,"y":0.24585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.1974,"y":150.5108,"z":-80.75652},"screenPosition":{"x":0.541694,"y":0.21242724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.66782,"y":148.82666,"z":-81.21906},"screenPosition":{"x":0.5933867,"y":0.19952108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.24063,"y":146.5151,"z":-81.96998},"screenPosition":{"x":0.652227,"y":0.20629276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.9496,"y":144.52797,"z":-82.75961},"screenPosition":{"x":0.68648934,"y":0.24350567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.78903,"y":142.99979,"z":-83.40333},"screenPosition":{"x":0.7087954,"y":0.27999792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.85046,"y":142.09471,"z":-83.85204},"screenPosition":{"x":0.71452296,"y":0.3161849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.23135,"y":142.60938,"z":-83.8435},"screenPosition":{"x":0.68391174,"y":0.34888074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.44852,"y":143.0029,"z":-83.86451},"screenPosition":{"x":0.6574516,"y":0.3798288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.3919,"y":143.26337,"z":-83.98085},"screenPosition":{"x":0.62847835,"y":0.42247105},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-299.2166,"y":146.30873,"z":-83.707016},"screenPosition":{"x":0.5206489,"y":0.47873867},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-303.636,"y":150.0615,"z":-84.01951},"screenPosition":{"x":0.40280247,"y":0.52833194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.3227,"y":152.43486,"z":-83.960915},"screenPosition":{"x":0.3359373,"y":0.54235524},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-310.08545,"y":152.0603,"z":-85.1328},"screenPosition":{"x":0.311486,"y":0.61886984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.3205,"y":149.93912,"z":-85.81921},"screenPosition":{"x":0.35207552,"y":0.6492851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.9735,"y":147.41475,"z":-86.21606},"screenPosition":{"x":0.41276184,"y":0.6569707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.69772,"y":145.41368,"z":-86.29928},"screenPosition":{"x":0.46777058,"y":0.64741284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.04395,"y":144.58748,"z":-85.8419},"screenPosition":{"x":0.5060103,"y":0.61027896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.47205,"y":145.97255,"z":-84.98554},"screenPosition":{"x":0.49181286,"y":0.5627772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.63147,"y":147.81566,"z":-84.442894},"screenPosition":{"x":0.45492342,"y":0.5399905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.37006,"y":150.18176,"z":-83.935295},"screenPosition":{"x":0.40184665,"y":0.52354395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.28635,"y":152.46237,"z":-83.48493},"screenPosition":{"x":0.34927103,"y":0.51040196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.26425,"y":154.47935,"z":-83.329834},"screenPosition":{"x":0.29595578,"y":0.51509494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.3852,"y":155.96854,"z":-83.538734},"screenPosition":{"x":0.24663198,"y":0.5405239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.11444,"y":155.17226,"z":-84.3202},"screenPosition":{"x":0.24599533,"y":0.5874122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.65533,"y":153.02623,"z":-85.082},"screenPosition":{"x":0.28508708,"y":0.62274253},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-308.14926,"y":149.14056,"z":-85.23697},"screenPosition":{"x":0.3927022,"y":0.6038048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.04446,"y":147.28578,"z":-85.33208},"screenPosition":{"x":0.44300744,"y":0.5961795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.62555,"y":145.45235,"z":-85.35053},"screenPosition":{"x":0.49514344,"y":0.58355504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.2685,"y":144.37123,"z":-85.009926},"screenPosition":{"x":0.53671974,"y":0.5523421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.04788,"y":146.72684,"z":-84.05137},"screenPosition":{"x":0.49815178,"y":0.5052337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.11517,"y":147.71173,"z":-83.649605},"screenPosition":{"x":0.48114938,"y":0.48565954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.3463,"y":146.99452,"z":-82.02365},"screenPosition":{"x":0.61604416,"y":0.2506002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.9739,"y":146.30637,"z":-82.368996},"screenPosition":{"x":0.62076813,"y":0.2784784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.55948,"y":144.90039,"z":-82.95383},"screenPosition":{"x":0.64211226,"y":0.31045187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.19434,"y":144.63066,"z":-83.15838},"screenPosition":{"x":0.6359625,"y":0.3365369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.4996,"y":144.14174,"z":-83.48348},"screenPosition":{"x":0.629882,"y":0.37395257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.63617,"y":143.73752,"z":-83.76828},"screenPosition":{"x":0.62246114,"y":0.4085524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.46744,"y":143.37778,"z":-84.01687},"screenPosition":{"x":0.6169925,"y":0.43806165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.35553,"y":143.52562,"z":-84.09799},"screenPosition":{"x":0.5995018,"y":0.46534666},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-301.62112,"y":144.77379,"z":-84.55299},"screenPosition":{"x":0.53948957,"y":0.5244021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.0253,"y":144.59503,"z":-85.14259},"screenPosition":{"x":0.5268768,"y":0.5629772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.97772,"y":141.90895,"z":-86.10161},"screenPosition":{"x":0.574706,"y":0.6075318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.73203,"y":139.8732,"z":-86.66073},"screenPosition":{"x":0.61657304,"y":0.62993187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.73138,"y":138.06056,"z":-87.00314},"screenPosition":{"x":0.6595735,"y":0.63947386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.01788,"y":136.10901,"z":-87.20701},"screenPosition":{"x":0.7098107,"y":0.63849545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.25168,"y":134.14192,"z":-87.814766},"screenPosition":{"x":0.7626356,"y":0.63846636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.84357,"y":131.80225,"z":-88.5765},"screenPosition":{"x":0.82160914,"y":0.6459934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.78717,"y":129.23169,"z":-89.510025},"screenPosition":{"x":0.87568605,"y":0.6751339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.3861,"y":127.81402,"z":-90.09973},"screenPosition":{"x":0.8972063,"y":0.7073758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.6927,"y":127.34627,"z":-90.48718},"screenPosition":{"x":0.8829119,"y":0.75968075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.93954,"y":130.15991,"z":-89.700325},"screenPosition":{"x":0.8065158,"y":0.7622797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.13467,"y":132.79514,"z":-89.01623},"screenPosition":{"x":0.74904364,"y":0.73545635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.44464,"y":134.4607,"z":-88.310745},"screenPosition":{"x":0.724155,"y":0.7007557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.06577,"y":135.64629,"z":-87.7679},"screenPosition":{"x":0.7062681,"y":0.67297506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.24182,"y":137.93982,"z":-86.91278},"screenPosition":{"x":0.6653658,"y":0.6324036},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-310.45578,"y":140.68419,"z":-87.368355},"screenPosition":{"x":0.5727603,"y":0.68408304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.66605,"y":140.13992,"z":-87.98219},"screenPosition":{"x":0.5691101,"y":0.7212767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.95358,"y":137.64459,"z":-88.75145},"screenPosition":{"x":0.61887836,"y":0.75472224},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-311.08868,"y":133.61092,"z":-88.851425},"screenPosition":{"x":0.73075444,"y":0.73055017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.0522,"y":131.11455,"z":-89.10084},"screenPosition":{"x":0.80561894,"y":0.71310586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.41513,"y":131.1368,"z":-88.91029},"screenPosition":{"x":0.8253898,"y":0.67343765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.415,"y":132.71413,"z":-88.16942},"screenPosition":{"x":0.8108469,"y":0.6192558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.2703,"y":134.33098,"z":-87.54398},"screenPosition":{"x":0.7802999,"y":0.5926527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.35428,"y":135.58633,"z":-86.98708},"screenPosition":{"x":0.7658711,"y":0.55661297},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-301.16354,"y":141.35443,"z":-85.09547},"screenPosition":{"x":0.62199587,"y":0.53510517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.48682,"y":142.3505,"z":-85.44229},"screenPosition":{"x":0.581995,"y":0.56629455},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-307.30975,"y":143.79184,"z":-86.05373},"screenPosition":{"x":0.5217756,"y":0.6185276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.81445,"y":144.9138,"z":-86.18955},"screenPosition":{"x":0.4861002,"y":0.636295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.27075,"y":145.9402,"z":-86.33226},"screenPosition":{"x":0.45214278,"y":0.65373516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.25052,"y":147.17242,"z":-86.557076},"screenPosition":{"x":0.40953237,"y":0.6782254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.16913,"y":148.65489,"z":-86.48929},"screenPosition":{"x":0.36850858,"y":0.68475974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.17065,"y":150.76212,"z":-86.322586},"screenPosition":{"x":0.3127747,"y":0.6894388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.32935,"y":153.47711,"z":-85.61499},"screenPosition":{"x":0.25601286,"y":0.66225886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.34772,"y":153.05472,"z":-85.0055},"screenPosition":{"x":0.28656086,"y":0.6177766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.9115,"y":150.57793,"z":-85.372734},"screenPosition":{"x":0.34708023,"y":0.62388855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.84064,"y":147.81052,"z":-86.11054},"screenPosition":{"x":0.40479073,"y":0.6528893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.9993,"y":146.72174,"z":-86.81536},"screenPosition":{"x":0.41443866,"y":0.69218045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.06342,"y":146.56929,"z":-87.32138},"screenPosition":{"x":0.40403053,"y":0.7254338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.20596,"y":147.27069,"z":-87.68415},"screenPosition":{"x":0.37284306,"y":0.75530666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.2597,"y":147.11804,"z":-88.187805},"screenPosition":{"x":0.36167458,"y":0.7879365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.90527,"y":148.59096,"z":-88.28988},"screenPosition":{"x":0.31627718,"y":0.8061287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.07318,"y":149.15514,"z":-88.68445},"screenPosition":{"x":0.28797385,"y":0.8368984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.53076,"y":150.9202,"z":-88.68785},"screenPosition":{"x":0.23696285,"y":0.8504523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.98523,"y":152.45807,"z":-88.733475},"screenPosition":{"x":0.19142963,"y":0.86573064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.4828,"y":154.4261,"z":-88.47657},"screenPosition":{"x":0.14229424,"y":0.86310124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.89255,"y":157.4332,"z":-87.77181},"screenPosition":{"x":0.076724894,"y":0.83785945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.46222,"y":147.27374,"z":-87.511635},"screenPosition":{"x":0.378055,"y":0.7437083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.58304,"y":146.005,"z":-87.31696},"screenPosition":{"x":0.420037,"y":0.72068006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.10855,"y":143.6459,"z":-87.6531},"screenPosition":{"x":0.4780847,"y":0.72560954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.69107,"y":140.80234,"z":-88.32517},"screenPosition":{"x":0.53953904,"y":0.7494152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.28058,"y":139.41182,"z":-88.95544},"screenPosition":{"x":0.56087714,"y":0.78158545},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-320.8569,"y":137.12549,"z":-90.44552},"screenPosition":{"x":0.58279824,"y":0.8655166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.43173,"y":137.64587,"z":-90.942444},"screenPosition":{"x":0.55278057,"y":0.90311193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.8226,"y":138.24335,"z":-91.38227},"screenPosition":{"x":0.5222572,"y":0.93742484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.97037,"y":140.7328,"z":-91.17715},"screenPosition":{"x":0.45651639,"y":0.94239306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.68585,"y":142.74107,"z":-90.96302},"screenPosition":{"x":0.40494996,"y":0.9431062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.7438,"y":145.37285,"z":-90.47905},"screenPosition":{"x":0.34350502,"y":0.9302685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.6377,"y":147.75432,"z":-89.77326},"screenPosition":{"x":0.2959796,"y":0.90051246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.50253,"y":149.27817,"z":-88.99165},"screenPosition":{"x":0.2753882,"y":0.8589178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.63397,"y":149.7972,"z":-88.46157},"screenPosition":{"x":0.27619493,"y":0.82672805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.55447,"y":148.97206,"z":-88.13675},"screenPosition":{"x":0.31013912,"y":0.7989092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.8194,"y":147.76244,"z":-87.964226},"screenPosition":{"x":0.35028952,"y":0.7780613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.296,"y":146.78442,"z":-87.79686},"screenPosition":{"x":0.3831368,"y":0.7590354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.58047,"y":146.67633,"z":-87.18949},"screenPosition":{"x":0.405028,"y":0.71736634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.90598,"y":148.55101,"z":-86.448074},"screenPosition":{"x":0.37315273,"y":0.68133426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.8689,"y":151.334,"z":-86.37594},"screenPosition":{"x":0.29461128,"y":0.69733536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.09973,"y":150.87502,"z":-86.978424},"screenPosition":{"x":0.29008368,"y":0.7348809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.6323,"y":149.84567,"z":-87.52727},"screenPosition":{"x":0.30327535,"y":0.7642516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.4175,"y":149.71051,"z":-87.734344},"screenPosition":{"x":0.30076402,"y":0.7770844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.7148,"y":150.76819,"z":-88.06557},"screenPosition":{"x":0.26029208,"y":0.8075563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.28406,"y":149.48804,"z":-88.90148},"screenPosition":{"x":0.2717972,"y":0.8540119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.61612,"y":146.35104,"z":-89.5711},"screenPosition":{"x":0.34261855,"y":0.8761902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.0249,"y":144.41866,"z":-89.337234},"screenPosition":{"x":0.40550026,"y":0.84571314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.74756,"y":145.89584,"z":-88.53156},"screenPosition":{"x":0.3871129,"y":0.80234206},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-319.75812,"y":150.88469,"z":-87.59118},"screenPosition":{"x":0.27101982,"y":0.77610254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.53067,"y":151.83179,"z":-88.05318},"screenPosition":{"x":0.22976397,"y":0.8144283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.48627,"y":151.05069,"z":-88.65291},"screenPosition":{"x":0.23429626,"y":0.8491658},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-328.46063,"y":150.77873,"z":-89.62312},"screenPosition":{"x":0.21312499,"y":0.9132577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.7827,"y":148.1963,"z":-90.416824},"screenPosition":{"x":0.26380548,"y":0.94744503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.08112,"y":145.53867,"z":-90.75688},"screenPosition":{"x":0.33033705,"y":0.95034057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.06387,"y":143.78873,"z":-90.852425},"screenPosition":{"x":0.37801555,"y":0.9435535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.12964,"y":142.33636,"z":-90.679726},"screenPosition":{"x":0.4251843,"y":0.9208547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.1392,"y":141.45758,"z":-90.38564},"screenPosition":{"x":0.45944116,"y":0.894281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.70084,"y":141.22205,"z":-89.86643},"screenPosition":{"x":0.4819007,"y":0.8573344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.42615,"y":141.57959,"z":-89.27297},"screenPosition":{"x":0.48946375,"y":0.81985265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.53638,"y":142.76898,"z":-88.611305},"screenPosition":{"x":0.47505018,"y":0.7840533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.95624,"y":143.03531,"z":-88.19566},"screenPosition":{"x":0.47988752,"y":0.7579226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.02203,"y":143.23662,"z":-87.71046},"screenPosition":{"x":0.4877166,"y":0.7262262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.306,"y":142.7766,"z":-87.400665},"screenPosition":{"x":0.511332,"y":0.7021233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.4077,"y":143.07072,"z":-86.90621},"screenPosition":{"x":0.5177422,"y":0.6708661},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-306.02222,"y":142.00194,"z":-86.09432},"screenPosition":{"x":0.5723886,"y":0.60774976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.62054,"y":142.40355,"z":-85.46319},"screenPosition":{"x":0.57998,"y":0.5681041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.41397,"y":141.24611,"z":-85.40298},"screenPosition":{"x":0.61578315,"y":0.55524004},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-298.49008,"y":140.62953,"z":-85.15469},"screenPosition":{"x":0.65980995,"y":0.49925855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.51346,"y":140.53168,"z":-85.050545},"screenPosition":{"x":0.677429,"y":0.4701828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.18497,"y":139.9771,"z":-85.076195},"screenPosition":{"x":0.70858955,"y":0.43850496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.04865,"y":139.54872,"z":-85.07258},"screenPosition":{"x":0.73491144,"y":0.40906867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.74448,"y":138.37462,"z":-85.30912},"screenPosition":{"x":0.7810155,"y":0.38127312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.41614,"y":138.78876,"z":-85.00767},"screenPosition":{"x":0.78905815,"y":0.34394792},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-296.94684,"y":143.19083,"z":-84.18268},"screenPosition":{"x":0.6103576,"y":0.4612388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.28125,"y":141.9022,"z":-84.71044},"screenPosition":{"x":0.6311145,"y":0.48869437},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-300.79123,"y":140.6809,"z":-85.29707},"screenPosition":{"x":0.64038354,"y":0.5335026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.12604,"y":140.47261,"z":-85.71378},"screenPosition":{"x":0.62871253,"y":0.5704296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.3508,"y":137.65814,"z":-86.76002},"screenPosition":{"x":0.67758024,"y":0.619901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.73938,"y":135.8172,"z":-87.2829},"screenPosition":{"x":0.7186148,"y":0.6359834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.05554,"y":133.38991,"z":-88.05509},"screenPosition":{"x":0.7809479,"y":0.6398179},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-304.84988,"y":129.79785,"z":-89.253784},"screenPosition":{"x":0.8693915,"y":0.65777844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.40903,"y":128.85512,"z":-89.74976},"screenPosition":{"x":0.87218606,"y":0.70164746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.57507,"y":128.21228,"z":-90.11718},"screenPosition":{"x":0.8708503,"y":0.73787326},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-314.63504,"y":132.47643,"z":-89.885704},"screenPosition":{"x":0.7339977,"y":0.7923839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.77396,"y":134.68187,"z":-89.73221},"screenPosition":{"x":0.6749062,"y":0.7986967},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-315.53094,"y":139.86198,"z":-88.69706},"screenPosition":{"x":0.5564536,"y":0.76783764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.54507,"y":141.09415,"z":-88.00508},"screenPosition":{"x":0.54171777,"y":0.73030996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.3824,"y":141.50621,"z":-87.42722},"screenPosition":{"x":0.5472353,"y":0.69429743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.03806,"y":141.99892,"z":-86.79212},"screenPosition":{"x":0.5521489,"y":0.6550197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.68832,"y":141.81526,"z":-86.2836},"screenPosition":{"x":0.5720456,"y":0.6191342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.99933,"y":141.67044,"z":-85.920494},"screenPosition":{"x":0.5879196,"y":0.593502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.76944,"y":140.63269,"z":-85.60109},"screenPosition":{"x":0.626786,"y":0.5640376},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-299.29822,"y":140.44856,"z":-85.2719},"screenPosition":{"x":0.65740204,"y":0.5124939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.54782,"y":140.76994,"z":-85.041885},"screenPosition":{"x":0.6637802,"y":0.48430195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.642,"y":141.23308,"z":-84.6838},"screenPosition":{"x":0.6746025,"y":0.43815842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.65292,"y":140.05771,"z":-84.87324},"screenPosition":{"x":0.72615933,"y":0.40007114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.20062,"y":135.70631,"z":-86.38064},"screenPosition":{"x":0.8257806,"y":0.43366185},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-296.44733,"y":134.45383,"z":-87.09834},"screenPosition":{"x":0.8229745,"y":0.5046398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.62445,"y":133.69835,"z":-87.50456},"screenPosition":{"x":0.8242415,"y":0.5416887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.46576,"y":134.72513,"z":-87.35505},"screenPosition":{"x":0.777865,"y":0.57830095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.8773,"y":135.7692,"z":-87.16987},"screenPosition":{"x":0.7343849,"y":0.6083686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.70242,"y":138.73802,"z":-86.17485},"screenPosition":{"x":0.6649742,"y":0.58851194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.4132,"y":139.95135,"z":-85.58659},"screenPosition":{"x":0.65281135,"y":0.54708123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.98364,"y":141.07385,"z":-85.10832},"screenPosition":{"x":0.6377755,"y":0.5190504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.5498,"y":141.77153,"z":-84.77321},"screenPosition":{"x":0.6320792,"y":0.49349806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.71744,"y":142.7696,"z":-84.30899},"screenPosition":{"x":0.6221234,"y":0.46026736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.29718,"y":144.31255,"z":-83.68939},"screenPosition":{"x":0.59656984,"y":0.42989483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.78598,"y":145.68634,"z":-83.1206},"screenPosition":{"x":0.57527685,"y":0.3992806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.2784,"y":147.48485,"z":-82.40863},"screenPosition":{"x":0.54410964,"y":0.36613098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.2046,"y":149.87448,"z":-81.59657},"screenPosition":{"x":0.4876539,"y":0.3510869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.76764,"y":150.80116,"z":-81.82945},"screenPosition":{"x":0.44746402,"y":0.38561946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.1349,"y":150.07185,"z":-82.514565},"screenPosition":{"x":0.44787863,"y":0.42649183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.31946,"y":149.42432,"z":-83.14198},"screenPosition":{"x":0.4473059,"y":0.46420252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.24915,"y":147.76418,"z":-83.67067},"screenPosition":{"x":0.47912702,"y":0.48744845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.8929,"y":146.2331,"z":-84.34004},"screenPosition":{"x":0.50368494,"y":0.5210457},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-304.2442,"y":142.57564,"z":-85.574844},"screenPosition":{"x":0.5721884,"y":0.5769517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.73093,"y":140.65892,"z":-86.04961},"screenPosition":{"x":0.61243486,"y":0.59456563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.45477,"y":137.46436,"z":-86.568115},"screenPosition":{"x":0.69718593,"y":0.5921467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.44275,"y":136.11096,"z":-86.885475},"screenPosition":{"x":0.744972,"y":0.56987303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.5666,"y":134.8476,"z":-87.04306},"screenPosition":{"x":0.8049612,"y":0.5191247},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-294.6174,"y":138.50105,"z":-85.60465},"screenPosition":{"x":0.74048346,"y":0.45359764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.33545,"y":141.91202,"z":-84.43326},"screenPosition":{"x":0.66125804,"y":0.4294762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.8287,"y":143.62793,"z":-83.957466},"screenPosition":{"x":0.6084928,"y":0.44194728},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-313.35138,"y":146.56241,"z":-86.92687},"screenPosition":{"x":0.4155483,"y":0.6984669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.26825,"y":148.04521,"z":-86.85861},"screenPosition":{"x":0.3749995,"y":0.7051271},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-312.84406,"y":154.69609,"z":-85.27243},"screenPosition":{"x":0.23112285,"y":0.6482943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.81732,"y":155.29692,"z":-84.45913},"screenPosition":{"x":0.23828375,"y":0.5977674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.8829,"y":154.61987,"z":-84.13987},"screenPosition":{"x":0.26747274,"y":0.57101715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.08954,"y":152.30417,"z":-84.39409},"screenPosition":{"x":0.32671276,"y":0.57069016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.88406,"y":150.15587,"z":-84.98378},"screenPosition":{"x":0.37076265,"y":0.5943407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.04572,"y":149.065,"z":-85.68968},"screenPosition":{"x":0.3812354,"y":0.6338916},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-313.9975,"y":150.17325,"z":-86.393845},"screenPosition":{"x":0.3277083,"y":0.6898463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.74725,"y":150.4906,"z":-86.738396},"screenPosition":{"x":0.30819726,"y":0.71556747},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-319.22162,"y":153.11911,"z":-87.044876},"screenPosition":{"x":0.22324406,"y":0.75638205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.30032,"y":153.93614,"z":-87.37104},"screenPosition":{"x":0.18972623,"y":0.7844851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.75754,"y":156.47708,"z":-86.996544},"screenPosition":{"x":0.12768291,"y":0.77854854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.58148,"y":157.91158,"z":-86.22236},"screenPosition":{"x":0.10957976,"y":0.73698616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.06287,"y":157.9635,"z":-85.630264},"screenPosition":{"x":0.12593165,"y":0.6972818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.0647,"y":156.89189,"z":-85.370834},"screenPosition":{"x":0.16471478,"y":0.671594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.41876,"y":154.64372,"z":-85.64638},"screenPosition":{"x":0.22125934,"y":0.67314744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.69006,"y":152.30344,"z":-86.15138},"screenPosition":{"x":0.2734661,"y":0.6895195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.01013,"y":150.37119,"z":-86.82174},"screenPosition":{"x":0.3092949,"y":0.72040725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.24203,"y":149.4683,"z":-87.50836},"screenPosition":{"x":0.31462145,"y":0.760008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.8036,"y":150.6302,"z":-87.88098},"screenPosition":{"x":0.2699439,"y":0.7941498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.8736,"y":152.68274,"z":-87.74045},"screenPosition":{"x":0.2146928,"y":0.7998287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.25018,"y":154.38332,"z":-87.50613},"screenPosition":{"x":0.17273585,"y":0.7969734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.70184,"y":157.36176,"z":-87.04766},"screenPosition":{"x":0.100581564,"y":0.78860795},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-318.10602,"y":157.92679,"z":-85.87837},"screenPosition":{"x":0.11951174,"y":0.71380603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.19714,"y":157.03693,"z":-85.60523},"screenPosition":{"x":0.15345699,"y":0.6885668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.33438,"y":155.00111,"z":-85.79052},"screenPosition":{"x":0.20664236,"y":0.68564665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.81577,"y":153.6877,"z":-85.91884},"screenPosition":{"x":0.24076766,"y":0.6844313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.90503,"y":151.54976,"z":-86.11233},"screenPosition":{"x":0.29670286,"y":0.6813385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.43,"y":149.42851,"z":-86.4034},"screenPosition":{"x":0.34881598,"y":0.6848178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.12894,"y":147.44527,"z":-86.708595},"screenPosition":{"x":0.39731154,"y":0.69062394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.94522,"y":146.07976,"z":-86.693},"screenPosition":{"x":0.43723416,"y":0.67922264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.50882,"y":144.25917,"z":-86.93618},"screenPosition":{"x":0.48250252,"y":0.6818989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.23257,"y":142.02423,"z":-87.06349},"screenPosition":{"x":0.5432353,"y":0.67358947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.66458,"y":141.37602,"z":-86.59231},"screenPosition":{"x":0.5761701,"y":0.6367689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.95413,"y":141.12488,"z":-86.013145},"screenPosition":{"x":0.6000654,"y":0.59562445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.99634,"y":142.2313,"z":-85.351425},"screenPosition":{"x":0.5882951,"y":0.5592416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.28857,"y":144.36026,"z":-84.78545},"screenPosition":{"x":0.5438835,"y":0.5370697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.31488,"y":146.60649,"z":-84.13584},"screenPosition":{"x":0.49911654,"y":0.5100358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.4552,"y":148.6856,"z":-83.77535},"screenPosition":{"x":0.4499162,"y":0.50137365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.35043,"y":150.75517,"z":-83.5912},"screenPosition":{"x":0.3956742,"y":0.5045815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.34824,"y":151.75735,"z":-83.86367},"screenPosition":{"x":0.35819316,"y":0.53069067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.22177,"y":150.79141,"z":-84.710556},"screenPosition":{"x":0.36087763,"y":0.5806613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.76736,"y":148.8608,"z":-85.43273},"screenPosition":{"x":0.3947965,"y":0.61493397},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-308.37268,"y":143.98834,"z":-86.262314},"screenPosition":{"x":0.50952476,"y":0.6340743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.5553,"y":142.21397,"z":-86.17749},"screenPosition":{"x":0.5642371,"y":0.615009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.53107,"y":142.21738,"z":-85.477684},"screenPosition":{"x":0.5846112,"y":0.5676863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.88626,"y":143.97575,"z":-84.765114},"screenPosition":{"x":0.55534476,"y":0.53281206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.77682,"y":145.71922,"z":-84.17913},"screenPosition":{"x":0.522207,"y":0.50647354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.78403,"y":147.7486,"z":-83.797264},"screenPosition":{"x":0.47604856,"y":0.49582458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.96973,"y":149.918,"z":-83.430214},"screenPosition":{"x":0.42414817,"y":0.4875058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.2437,"y":152.04176,"z":-83.09219},"screenPosition":{"x":0.37312323,"y":0.48069525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.66916,"y":153.86156,"z":-83.07782},"screenPosition":{"x":0.3214039,"y":0.49334756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.8223,"y":154.67995,"z":-83.18975},"screenPosition":{"x":0.2943284,"y":0.50714976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.96948,"y":151.36627,"z":-87.08666},"screenPosition":{"x":0.2726269,"y":0.7459326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.88235,"y":151.82361,"z":-87.44246},"screenPosition":{"x":0.24843222,"y":0.7731681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.8667,"y":153.56755,"z":-87.57164},"screenPosition":{"x":0.19429164,"y":0.7951968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.36078,"y":156.07321,"z":-87.44352},"screenPosition":{"x":0.12587449,"y":0.8057593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.44266,"y":158.04774,"z":-86.62691},"screenPosition":{"x":0.093447864,"y":0.7654153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.02225,"y":157.17801,"z":-86.231705},"screenPosition":{"x":0.13047431,"y":0.7319728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.64716,"y":154.5953,"z":-86.63309},"screenPosition":{"x":0.19300945,"y":0.7396782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.00644,"y":152.76146,"z":-87.29391},"screenPosition":{"x":0.2259089,"y":0.77029985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.5841,"y":150.59334,"z":-88.29958},"screenPosition":{"x":0.25818086,"y":0.8219062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.05963,"y":150.36288,"z":-88.684265},"screenPosition":{"x":0.25331032,"y":0.8462887},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-328.1836,"y":152.44235,"z":-89.24468},"screenPosition":{"x":0.17647035,"y":0.90023166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.63556,"y":154.31764,"z":-88.99477},"screenPosition":{"x":0.12982486,"y":0.89751387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.14487,"y":156.96863,"z":-88.14913},"screenPosition":{"x":0.07872912,"y":0.8603288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.4115,"y":158.20018,"z":-87.51565},"screenPosition":{"x":0.062247373,"y":0.8267579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.65576,"y":157.71169,"z":-86.97087},"screenPosition":{"x":0.09278667,"y":0.78616345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.77118,"y":154.71207,"z":-87.33326},"screenPosition":{"x":0.16852514,"y":0.78798026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.2199,"y":152.7453,"z":-87.80869},"screenPosition":{"x":0.21080723,"y":0.804862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.83344,"y":151.4585,"z":-88.424904},"screenPosition":{"x":0.22961292,"y":0.83726096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.76083,"y":152.5434,"z":-88.89666},"screenPosition":{"x":0.18395591,"y":0.8771168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.73563,"y":154.96796,"z":-88.43262},"screenPosition":{"x":0.12798493,"y":0.86437064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.234,"y":157.71388,"z":-87.79771},"screenPosition":{"x":0.067854896,"y":0.8416935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.02625,"y":158.85574,"z":-87.996254},"screenPosition":{"x":0.023850579,"y":0.8607797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.9056,"y":158.07806,"z":-88.80891},"screenPosition":{"x":0.015971867,"y":0.90889764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.31955,"y":155.81897,"z":-89.33154},"screenPosition":{"x":0.07629408,"y":0.9316952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.0121,"y":154.12521,"z":-89.34937},"screenPosition":{"x":0.12469259,"y":0.92007077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.69766,"y":152.64615,"z":-89.32501},"screenPosition":{"x":0.16812377,"y":0.90704006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.59207,"y":151.3949,"z":-89.305885},"screenPosition":{"x":0.20488822,"y":0.8964413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.57535,"y":150.2237,"z":-89.060974},"screenPosition":{"x":0.24611063,"y":0.8709825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.98254,"y":149.29396,"z":-88.86845},"screenPosition":{"x":0.27862898,"y":0.85067725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.56854,"y":147.17026,"z":-88.942894},"screenPosition":{"x":0.3378906,"y":0.83985335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.1569,"y":144.2476,"z":-89.40008},"screenPosition":{"x":0.408362,"y":0.8485134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.07602,"y":143.36009,"z":-90.47386},"screenPosition":{"x":0.40181392,"y":0.91466874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.1765,"y":146.30626,"z":-89.94031},"screenPosition":{"x":0.3327803,"y":0.9008549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.8183,"y":147.91907,"z":-89.32151},"screenPosition":{"x":0.30484065,"y":0.87116665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.46692,"y":148.98846,"z":-88.57579},"screenPosition":{"x":0.29610905,"y":0.8283677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.60834,"y":147.50574,"z":-88.42632},"screenPosition":{"x":0.34377322,"y":0.8074112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.05414,"y":145.09656,"z":-88.522316},"screenPosition":{"x":0.41048494,"y":0.79566014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.33545,"y":143.39499,"z":-89.3713},"screenPosition":{"x":0.434049,"y":0.84026486},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-324.9275,"y":140.87814,"z":-90.67738},"screenPosition":{"x":0.46635413,"y":0.9087324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.95682,"y":137.74066,"z":-91.277115},"screenPosition":{"x":0.5399514,"y":0.92649484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.02,"y":135.25206,"z":-91.530846},"screenPosition":{"x":0.6042018,"y":0.9248248},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-325.1315,"y":133.06833,"z":-92.20051},"screenPosition":{"x":0.6471029,"y":0.95363235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.63406,"y":129.34903,"z":-92.55721},"screenPosition":{"x":0.7438058,"y":0.9496124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.30637,"y":129.60117,"z":-91.97143},"screenPosition":{"x":0.7541834,"y":0.9118514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.61847,"y":132.16599,"z":-91.09649},"screenPosition":{"x":0.70438355,"y":0.87104106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.46948,"y":134.82681,"z":-90.55918},"screenPosition":{"x":0.6451711,"y":0.85549366},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-316.0245,"y":137.72742,"z":-89.21457},"screenPosition":{"x":0.60252196,"y":0.7867136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.29517,"y":136.47278,"z":-88.82068},"screenPosition":{"x":0.6506469,"y":0.7505335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.01837,"y":134.21568,"z":-88.952065},"screenPosition":{"x":0.7118976,"y":0.74233174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.75363,"y":131.50955,"z":-89.86466},"screenPosition":{"x":0.7625672,"y":0.7836337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.55945,"y":129.10329,"z":-90.50571},"screenPosition":{"x":0.81276107,"y":0.8088172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.03506,"y":129.36035,"z":-91.02946},"screenPosition":{"x":0.7895419,"y":0.84623474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.8045,"y":128.56898,"z":-91.5881},"screenPosition":{"x":0.79556286,"y":0.8780716},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-321.43167,"y":124.55615,"z":-92.953835},"screenPosition":{"x":0.870323,"y":0.9401624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.83386,"y":121.86183,"z":-93.32482},"screenPosition":{"x":0.93698156,"y":0.9448746},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-091034/brain-C79338-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.8785344167460292,-0.4063063189466085,-0.25118211277232944,0.0,-0.4474986618365616,0.8840006749438326,0.1352322237979363,0.0,0.16709945017025365,0.2312098222024862,-0.9584465513892226,0.0,-293.5372584753057,184.82592329883607,-171.54433474786575,1.0]},"baseImage":"20190824-091034/base.webp","version":0,"savedAt":1.566638108495E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190824-092945-v0.json b/data/mapping/BAAAHS/afik/20190824-092945-v0.json new file mode 100644 index 0000000000..cd74fe0353 --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190824-092945-v0.json @@ -0,0 +1,4849 @@ +{ + "startedAt": 1.566638985789E12, + "surfaces": [ + { + "brainId": "CB6EF8", + "panelName": "43D", + "pixels": [ + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -388.85065, + "y": 19.714016, + "z": -71.41108 + }, + "screenPosition": { + "x": 0.978536, + "y": 0.9259815 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.1543, + "y": 20.033936, + "z": -71.98713 + }, + "screenPosition": { + "x": 0.9737693, + "y": 0.875558 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.8478, + "y": 20.4484, + "z": -72.764854 + }, + "screenPosition": { + "x": 0.9674817, + "y": 0.80697536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.28732, + "y": 21.057907, + "z": -73.379425 + }, + "screenPosition": { + "x": 0.9601232, + "y": 0.7609377 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.97906, + "y": 21.823826, + "z": -74.25205 + }, + "screenPosition": { + "x": 0.95051837, + "y": 0.69269025 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.03177, + "y": 22.516138, + "z": -75.000626 + }, + "screenPosition": { + "x": 0.94197994, + "y": 0.63516533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.07578, + "y": 23.211548, + "z": -75.75254 + }, + "screenPosition": { + "x": 0.93199235, + "y": 0.5774141 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -373.57028, + "y": 25.583023, + "z": -77.40232 + }, + "screenPosition": { + "x": 0.9074181, + "y": 0.47506797 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.90967, + "y": 26.415842, + "z": -78.105804 + }, + "screenPosition": { + "x": 0.89784974, + "y": 0.4262788 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -367.54114, + "y": 35.416054, + "z": -81.785355 + }, + "screenPosition": { + "x": 0.8084421, + "y": 0.3054323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.15878, + "y": 41.485256, + "z": -83.81489 + }, + "screenPosition": { + "x": 0.7497627, + "y": 0.27074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.0829, + "y": 50.916683, + "z": -85.50324 + }, + "screenPosition": { + "x": 0.66380495, + "y": 0.36865357 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.3181, + "y": 53.68665, + "z": -85.89035 + }, + "screenPosition": { + "x": 0.6389476, + "y": 0.40867755 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -374.64734, + "y": 56.76854, + "z": -85.46729 + }, + "screenPosition": { + "x": 0.61433727, + "y": 0.5416568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.5697, + "y": 56.796993, + "z": -84.6306 + }, + "screenPosition": { + "x": 0.6170814, + "y": 0.62916106 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -380.24896, + "y": 48.04251, + "z": -81.50512 + }, + "screenPosition": { + "x": 0.702284, + "y": 0.69963354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.43475, + "y": 45.71314, + "z": -80.82579 + }, + "screenPosition": { + "x": 0.72442985, + "y": 0.7026245 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.74976, + "y": 43.17016, + "z": -80.340675 + }, + "screenPosition": { + "x": 0.7478787, + "y": 0.67940575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.97018, + "y": 40.169064, + "z": -80.33769 + }, + "screenPosition": { + "x": 0.7733244, + "y": 0.59290135 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.74026, + "y": 45.258434, + "z": -83.79356 + }, + "screenPosition": { + "x": 0.71786016, + "y": 0.38209772 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.61954, + "y": 54.4747, + "z": -86.30384 + }, + "screenPosition": { + "x": 0.63079333, + "y": 0.38863614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.7381, + "y": 57.69254, + "z": -86.267105 + }, + "screenPosition": { + "x": 0.6036524, + "y": 0.48552588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.57404, + "y": 58.489464, + "z": -85.66178 + }, + "screenPosition": { + "x": 0.59905803, + "y": 0.57128966 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -378.6629, + "y": 54.555084, + "z": -83.71259 + }, + "screenPosition": { + "x": 0.63935757, + "y": 0.65941364 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.8418, + "y": 50.750156, + "z": -82.350006 + }, + "screenPosition": { + "x": 0.676467, + "y": 0.69050974 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.11615, + "y": 48.76245, + "z": -82.02579 + }, + "screenPosition": { + "x": 0.6944701, + "y": 0.6665999 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.78574, + "y": 47.288055, + "z": -82.59202 + }, + "screenPosition": { + "x": 0.7049457, + "y": 0.5652885 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.25192, + "y": 47.696136, + "z": -83.72262 + }, + "screenPosition": { + "x": 0.69745314, + "y": 0.4599634 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -372.65323, + "y": 56.7365, + "z": -86.03484 + }, + "screenPosition": { + "x": 0.61246413, + "y": 0.4820444 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.5005, + "y": 55.600925, + "z": -84.61827 + }, + "screenPosition": { + "x": 0.62726235, + "y": 0.5958395 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.6122, + "y": 54.973118, + "z": -84.12844 + }, + "screenPosition": { + "x": 0.6343309, + "y": 0.6284241 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -380.68848, + "y": 48.55007, + "z": -81.51446 + }, + "screenPosition": { + "x": 0.6980945, + "y": 0.7134296 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.5585, + "y": 46.102383, + "z": -80.894585 + }, + "screenPosition": { + "x": 0.721051, + "y": 0.70684284 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -378.64008, + "y": 41.720287, + "z": -80.271866 + }, + "screenPosition": { + "x": 0.7599817, + "y": 0.6444979 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.14383, + "y": 40.159786, + "z": -79.99611 + }, + "screenPosition": { + "x": 0.7746217, + "y": 0.62802064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.05984, + "y": 33.573704, + "z": -76.51786 + }, + "screenPosition": { + "x": 0.8425043, + "y": 0.7976332 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -377.90085, + "y": 32.30492, + "z": -77.95656 + }, + "screenPosition": { + "x": 0.8474868, + "y": 0.6120249 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -376.8672, + "y": 38.871212, + "z": -80.01886 + }, + "screenPosition": { + "x": 0.7848134, + "y": 0.5883851 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -379.03244, + "y": 52.39728, + "z": -83.02626 + }, + "screenPosition": { + "x": 0.6600943, + "y": 0.6680977 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.2548, + "y": 50.82092, + "z": -83.11646 + }, + "screenPosition": { + "x": 0.6731326, + "y": 0.61315274 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.42456, + "y": 48.13027, + "z": -82.34473 + }, + "screenPosition": { + "x": 0.69869006, + "y": 0.6152708 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.11237, + "y": 46.09621, + "z": -81.59967 + }, + "screenPosition": { + "x": 0.7185876, + "y": 0.6336181 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.37354, + "y": 44.512638, + "z": -80.80995 + }, + "screenPosition": { + "x": 0.73482645, + "y": 0.66962343 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.9458, + "y": 43.054058, + "z": -79.96393 + }, + "screenPosition": { + "x": 0.7502069, + "y": 0.71507853 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -381.0727, + "y": 35.13289, + "z": -77.799706 + }, + "screenPosition": { + "x": 0.8250627, + "y": 0.710152 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -378.14877, + "y": 33.08547, + "z": -78.094574 + }, + "screenPosition": { + "x": 0.8411705, + "y": 0.62035793 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.53024, + "y": 30.515102, + "z": -77.87183 + }, + "screenPosition": { + "x": 0.86394227, + "y": 0.5690991 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.81256, + "y": 28.879997, + "z": -78.21786 + }, + "screenPosition": { + "x": 0.87595254, + "y": 0.4861161 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.71762, + "y": 28.7472, + "z": -78.78747 + }, + "screenPosition": { + "x": 0.8756587, + "y": 0.42309856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.18402, + "y": 28.446228, + "z": -79.43865 + }, + "screenPosition": { + "x": 0.87588614, + "y": 0.3469304 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.5446, + "y": 28.179762, + "z": -80.418594 + }, + "screenPosition": { + "x": 0.8746481, + "y": 0.23770048 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.56573, + "y": 33.23507, + "z": -82.05923 + }, + "screenPosition": { + "x": 0.8259493, + "y": 0.21396866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.7533, + "y": 35.50715, + "z": -82.6153 + }, + "screenPosition": { + "x": 0.80470884, + "y": 0.22208527 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.59143, + "y": 38.026875, + "z": -83.04992 + }, + "screenPosition": { + "x": 0.7818028, + "y": 0.24994795 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.14188, + "y": 41.169563, + "z": -82.29036 + }, + "screenPosition": { + "x": 0.7576918, + "y": 0.41966838 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.67325, + "y": 40.368713, + "z": -81.632805 + }, + "screenPosition": { + "x": 0.76701134, + "y": 0.46450377 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.3937, + "y": 39.300606, + "z": -80.84885 + }, + "screenPosition": { + "x": 0.77833295, + "y": 0.5149605 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.24237, + "y": 38.17418, + "z": -80.01217 + }, + "screenPosition": { + "x": 0.79090273, + "y": 0.5689484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.4359, + "y": 38.517395, + "z": -79.759514 + }, + "screenPosition": { + "x": 0.7890634, + "y": 0.60500145 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -378.6925, + "y": 39.45589, + "z": -79.64852 + }, + "screenPosition": { + "x": 0.7812549, + "y": 0.6435533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.12015, + "y": 42.322784, + "z": -80.58391 + }, + "screenPosition": { + "x": 0.75419253, + "y": 0.6296945 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -383.60162, + "y": 36.45507, + "z": -77.42416 + }, + "screenPosition": { + "x": 0.8151968, + "y": 0.78730536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.07843, + "y": 33.92071, + "z": -76.60569 + }, + "screenPosition": { + "x": 0.8395964, + "y": 0.79878545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.88492, + "y": 31.860453, + "z": -75.81931 + }, + "screenPosition": { + "x": 0.8598634, + "y": 0.8206563 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.54843, + "y": 29.072203, + "z": -74.87871 + }, + "screenPosition": { + "x": 0.8868506, + "y": 0.83744574 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -377.65305, + "y": 26.96795, + "z": -76.59469 + }, + "screenPosition": { + "x": 0.8985621, + "y": 0.59880036 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.45505, + "y": 29.73711, + "z": -77.39567 + }, + "screenPosition": { + "x": 0.8722349, + "y": 0.5959238 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.98788, + "y": 31.996922, + "z": -77.84869 + }, + "screenPosition": { + "x": 0.8511234, + "y": 0.61433524 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.64166, + "y": 34.008003, + "z": -77.911026 + }, + "screenPosition": { + "x": 0.8341992, + "y": 0.6660789 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.46274, + "y": 35.559093, + "z": -77.512566 + }, + "screenPosition": { + "x": 0.822475, + "y": 0.75222814 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.87003, + "y": 33.839283, + "z": -76.644035 + }, + "screenPosition": { + "x": 0.8397798, + "y": 0.79223365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -387.12244, + "y": 27.555595, + "z": -74.01659 + }, + "screenPosition": { + "x": 0.90278023, + "y": 0.882889 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.81845, + "y": 25.47085, + "z": -73.255554 + }, + "screenPosition": { + "x": 0.92316437, + "y": 0.90142566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.13046, + "y": 27.56897, + "z": -77.484955 + }, + "screenPosition": { + "x": 0.89029187, + "y": 0.5239549 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.28915, + "y": 37.238018, + "z": -81.76967 + }, + "screenPosition": { + "x": 0.7930564, + "y": 0.3597615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -374.96564, + "y": 38.945534, + "z": -80.58823 + }, + "screenPosition": { + "x": 0.78252316, + "y": 0.5316064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.73996, + "y": 39.73787, + "z": -80.2884 + }, + "screenPosition": { + "x": 0.77687156, + "y": 0.58553636 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.1772, + "y": 39.568523, + "z": -79.24982 + }, + "screenPosition": { + "x": 0.7822956, + "y": 0.68823266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.31604, + "y": 38.569443, + "z": -78.3635 + }, + "screenPosition": { + "x": 0.7939254, + "y": 0.75115323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -383.97424, + "y": 33.88, + "z": -76.62486 + }, + "screenPosition": { + "x": 0.83986413, + "y": 0.7956164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -384.11203, + "y": 28.84217, + "z": -75.23193 + }, + "screenPosition": { + "x": 0.88753986, + "y": 0.79419714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.0563, + "y": 26.669237, + "z": -75.24225 + }, + "screenPosition": { + "x": 0.90591925, + "y": 0.7302711 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -372.66727, + "y": 26.256142, + "z": -77.84402 + }, + "screenPosition": { + "x": 0.8999215, + "y": 0.4488544 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.89615, + "y": 27.049192, + "z": -78.56875 + }, + "screenPosition": { + "x": 0.89083016, + "y": 0.3966393 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.2536, + "y": 25.466364, + "z": -80.92958 + }, + "screenPosition": { + "x": 0.89781517, + "y": 0.104169235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -358.82574, + "y": 30.45, + "z": -82.969604 + }, + "screenPosition": { + "x": 0.8463053, + "y": 0.039089862 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -359.38617, + "y": 41.50562, + "z": -85.77713 + }, + "screenPosition": { + "x": 0.7421287, + "y": 0.069028005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.1838, + "y": 43.787888, + "z": -86.159676 + }, + "screenPosition": { + "x": 0.7218812, + "y": 0.0944306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.63312, + "y": 47.691906, + "z": -87.078445 + }, + "screenPosition": { + "x": 0.6855155, + "y": 0.11217965 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.70297, + "y": 42.5337, + "z": -82.494644 + }, + "screenPosition": { + "x": 0.7454504, + "y": 0.4379283 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.32477, + "y": 40.156475, + "z": -81.387566 + }, + "screenPosition": { + "x": 0.769549, + "y": 0.48382306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.80978, + "y": 36.973213, + "z": -80.68136 + }, + "screenPosition": { + "x": 0.7991838, + "y": 0.46484986 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.11887, + "y": 34.222874, + "z": -79.85334 + }, + "screenPosition": { + "x": 0.825448, + "y": 0.47107214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.0526, + "y": 32.73558, + "z": -80.05086 + }, + "screenPosition": { + "x": 0.83679837, + "y": 0.4078789 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.3754, + "y": 31.965675, + "z": -81.19542 + }, + "screenPosition": { + "x": 0.8397898, + "y": 0.26673836 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.5868, + "y": 33.855988, + "z": -81.064224 + }, + "screenPosition": { + "x": 0.8234409, + "y": 0.33563146 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.8308, + "y": 31.218023, + "z": -80.86303 + }, + "screenPosition": { + "x": 0.84660625, + "y": 0.28017172 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -360.1036, + "y": 32.33668, + "z": -83.10715 + }, + "screenPosition": { + "x": 0.82982445, + "y": 0.07941724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.19342, + "y": 36.485718, + "z": -82.75098 + }, + "screenPosition": { + "x": 0.7959311, + "y": 0.23633707 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.03485, + "y": 32.2627, + "z": -78.48435 + }, + "screenPosition": { + "x": 0.84694546, + "y": 0.5561958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.534, + "y": 33.188404, + "z": -78.29984 + }, + "screenPosition": { + "x": 0.8397582, + "y": 0.6020887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -382.92102, + "y": 33.922077, + "z": -76.94046 + }, + "screenPosition": { + "x": 0.83839035, + "y": 0.76414317 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.12125, + "y": 31.840326, + "z": -75.74562 + }, + "screenPosition": { + "x": 0.8601903, + "y": 0.8276367 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.19, + "y": 28.704367, + "z": -74.88347 + }, + "screenPosition": { + "x": 0.8896225, + "y": 0.8261097 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.37576, + "y": 26.515017, + "z": -74.81961 + }, + "screenPosition": { + "x": 0.90873426, + "y": 0.7695955 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.11685, + "y": 25.049566, + "z": -75.07864 + }, + "screenPosition": { + "x": 0.9202301, + "y": 0.70036757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -376.7087, + "y": 24.08945, + "z": -76.09439 + }, + "screenPosition": { + "x": 0.9247432, + "y": 0.5673635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.54822, + "y": 25.055954, + "z": -76.9782 + }, + "screenPosition": { + "x": 0.9133984, + "y": 0.50375944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.7738, + "y": 26.298115, + "z": -77.82451 + }, + "screenPosition": { + "x": 0.8996892, + "y": 0.4520699 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.26364, + "y": 30.750065, + "z": -79.45659 + }, + "screenPosition": { + "x": 0.85629654, + "y": 0.41171598 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.2554, + "y": 33.27359, + "z": -80.136765 + }, + "screenPosition": { + "x": 0.83248216, + "y": 0.4142491 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.2614, + "y": 35.15482, + "z": -80.35139 + }, + "screenPosition": { + "x": 0.8157725, + "y": 0.44643316 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.8332, + "y": 38.323826, + "z": -81.32629 + }, + "screenPosition": { + "x": 0.785436, + "y": 0.43710592 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -379.11185, + "y": 40.872124, + "z": -79.90775 + }, + "screenPosition": { + "x": 0.76889974, + "y": 0.65778005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -375.1727, + "y": 33.642685, + "z": -79.1041 + }, + "screenPosition": { + "x": 0.83280045, + "y": 0.5319484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.45178, + "y": 43.763706, + "z": -83.47543 + }, + "screenPosition": { + "x": 0.73166347, + "y": 0.37181666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.59238, + "y": 45.523743, + "z": -84.19647 + }, + "screenPosition": { + "x": 0.7137507, + "y": 0.3485038 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.7646, + "y": 50.958153, + "z": -86.76205 + }, + "screenPosition": { + "x": 0.65896213, + "y": 0.23944251 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.70633, + "y": 52.55295, + "z": -87.496155 + }, + "screenPosition": { + "x": 0.6428265, + "y": 0.20952217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -362.645, + "y": 60.468708, + "z": -89.92891 + }, + "screenPosition": { + "x": 0.5670104, + "y": 0.18676126 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -373.38788, + "y": 62.09233, + "z": -87.261116 + }, + "screenPosition": { + "x": 0.56281644, + "y": 0.5098213 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -373.1996, + "y": 56.472702, + "z": -85.80613 + }, + "screenPosition": { + "x": 0.6156108, + "y": 0.49801528 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.22607, + "y": 54.249954, + "z": -85.77931 + }, + "screenPosition": { + "x": 0.63456964, + "y": 0.43647566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.18015, + "y": 53.2535, + "z": -86.391716 + }, + "screenPosition": { + "x": 0.6408298, + "y": 0.3442065 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.18848, + "y": 53.675198, + "z": -87.36935 + }, + "screenPosition": { + "x": 0.6337676, + "y": 0.2551229 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -363.22214, + "y": 60.557114, + "z": -89.7859 + }, + "screenPosition": { + "x": 0.5668194, + "y": 0.2038458 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -372.18713, + "y": 59.229416, + "z": -86.83909 + }, + "screenPosition": { + "x": 0.58858615, + "y": 0.47072676 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.58682, + "y": 52.55544, + "z": -86.66458 + }, + "screenPosition": { + "x": 0.6457725, + "y": 0.29574507 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.35934, + "y": 57.70022, + "z": -88.40107 + }, + "screenPosition": { + "x": 0.59597343, + "y": 0.2646703 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.16174, + "y": 62.18228, + "z": -89.662 + }, + "screenPosition": { + "x": 0.5534878, + "y": 0.2636932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.14145, + "y": 63.473446, + "z": -89.14789 + }, + "screenPosition": { + "x": 0.5443792, + "y": 0.3543051 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.08948, + "y": 63.126156, + "z": -88.20285 + }, + "screenPosition": { + "x": 0.55069035, + "y": 0.44217566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.76434, + "y": 63.26879, + "z": -87.46833 + }, + "screenPosition": { + "x": 0.5521063, + "y": 0.52238613 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.40295, + "y": 56.977116, + "z": -86.4607 + }, + "screenPosition": { + "x": 0.60902506, + "y": 0.4447741 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -372.238, + "y": 42.735523, + "z": -82.394264 + }, + "screenPosition": { + "x": 0.74423516, + "y": 0.45408282 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.29697, + "y": 41.458675, + "z": -82.323204 + }, + "screenPosition": { + "x": 0.7553103, + "y": 0.4245088 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.21045, + "y": 39.43347, + "z": -82.09317 + }, + "screenPosition": { + "x": 0.7729077, + "y": 0.39003575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.45615, + "y": 34.728172, + "z": -81.33623 + }, + "screenPosition": { + "x": 0.8158745, + "y": 0.33206272 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.5368, + "y": 30.988907, + "z": -80.88644 + }, + "screenPosition": { + "x": 0.8481633, + "y": 0.27140713 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.6967, + "y": 27.93637, + "z": -80.020355 + }, + "screenPosition": { + "x": 0.8781318, + "y": 0.27191716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.98297, + "y": 27.81946, + "z": -78.461624 + }, + "screenPosition": { + "x": 0.88352126, + "y": 0.43049362 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.31723, + "y": 29.372746, + "z": -78.49332 + }, + "screenPosition": { + "x": 0.8714066, + "y": 0.4716682 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -374.52457, + "y": 33.8495, + "z": -79.34692 + }, + "screenPosition": { + "x": 0.83041936, + "y": 0.51273686 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.00424, + "y": 36.513447, + "z": -80.21276 + }, + "screenPosition": { + "x": 0.8047524, + "y": 0.50009656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.22177, + "y": 38.85354, + "z": -81.06737 + }, + "screenPosition": { + "x": 0.7818703, + "y": 0.4792529 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.658, + "y": 39.949123, + "z": -82.10237 + }, + "screenPosition": { + "x": 0.7688921, + "y": 0.40371948 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.85666, + "y": 40.157803, + "z": -82.96779 + }, + "screenPosition": { + "x": 0.76403564, + "y": 0.3200993 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -362.6938, + "y": 37.624577, + "z": -83.77906 + }, + "screenPosition": { + "x": 0.7826108, + "y": 0.16277198 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -362.42154, + "y": 32.29613, + "z": -82.42655 + }, + "screenPosition": { + "x": 0.8325965, + "y": 0.14875352 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -367.57257, + "y": 29.890913, + "z": -80.292274 + }, + "screenPosition": { + "x": 0.86059636, + "y": 0.3002868 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.7458, + "y": 29.814915, + "z": -79.64396 + }, + "screenPosition": { + "x": 0.86355364, + "y": 0.3652529 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -374.39713, + "y": 38.04018, + "z": -80.509315 + }, + "screenPosition": { + "x": 0.79075485, + "y": 0.51353794 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.8853, + "y": 40.061565, + "z": -80.91119 + }, + "screenPosition": { + "x": 0.7721892, + "y": 0.53037757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.31018, + "y": 42.093563, + "z": -81.04529 + }, + "screenPosition": { + "x": 0.75448906, + "y": 0.5752656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.00543, + "y": 50.00507, + "z": -84.70293 + }, + "screenPosition": { + "x": 0.6743866, + "y": 0.42519554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.926, + "y": 52.193512, + "z": -85.02475 + }, + "screenPosition": { + "x": 0.65469074, + "y": 0.4551605 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.4706, + "y": 59.26519, + "z": -88.500336 + }, + "screenPosition": { + "x": 0.5823557, + "y": 0.29965752 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.29605, + "y": 61.665207, + "z": -88.617546 + }, + "screenPosition": { + "x": 0.5615739, + "y": 0.3570261 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.3159, + "y": 62.74256, + "z": -88.03441 + }, + "screenPosition": { + "x": 0.5545356, + "y": 0.44854558 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.3343, + "y": 63.097317, + "z": -88.124374 + }, + "screenPosition": { + "x": 0.55121887, + "y": 0.44946018 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.90454, + "y": 65.27322, + "z": -88.544044 + }, + "screenPosition": { + "x": 0.53128016, + "y": 0.4689253 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.2439, + "y": 68.067276, + "z": -88.90754 + }, + "screenPosition": { + "x": 0.50630283, + "y": 0.5120929 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -375.37305, + "y": 61.301872, + "z": -86.47524 + }, + "screenPosition": { + "x": 0.5723198, + "y": 0.5683718 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.42734, + "y": 60.47401, + "z": -87.10397 + }, + "screenPosition": { + "x": 0.5770928, + "y": 0.47928765 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.4377, + "y": 64.41106, + "z": -88.44735 + }, + "screenPosition": { + "x": 0.5389126, + "y": 0.45407054 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.92374, + "y": 62.2636, + "z": -87.73014 + }, + "screenPosition": { + "x": 0.5596845, + "y": 0.46619904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -373.8902, + "y": 67.01979, + "z": -88.43946 + }, + "screenPosition": { + "x": 0.51685065, + "y": 0.5302843 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.01593, + "y": 64.03626, + "z": -88.17963 + }, + "screenPosition": { + "x": 0.54306394, + "y": 0.47089726 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.02084, + "y": 56.331932, + "z": -87.26458 + }, + "screenPosition": { + "x": 0.6116048, + "y": 0.34287316 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.37308, + "y": 54.252636, + "z": -86.60433 + }, + "screenPosition": { + "x": 0.63160324, + "y": 0.35108203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.20013, + "y": 52.082344, + "z": -86.360306 + }, + "screenPosition": { + "x": 0.6508248, + "y": 0.3136601 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.5116, + "y": 47.51057, + "z": -85.620224 + }, + "screenPosition": { + "x": 0.69225526, + "y": 0.25800472 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.0601, + "y": 46.39236, + "z": -84.29464 + }, + "screenPosition": { + "x": 0.706462, + "y": 0.3629878 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.2805, + "y": 46.5265, + "z": -83.68913 + }, + "screenPosition": { + "x": 0.70748556, + "y": 0.42959774 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.83124, + "y": 46.067997, + "z": -83.11794 + }, + "screenPosition": { + "x": 0.7134095, + "y": 0.4755096 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -378.23404, + "y": 47.74535, + "z": -82.00746 + }, + "screenPosition": { + "x": 0.70294744, + "y": 0.63902235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.92114, + "y": 50.29311, + "z": -82.49325 + }, + "screenPosition": { + "x": 0.6798295, + "y": 0.6624489 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.83737, + "y": 53.332752, + "z": -83.622795 + }, + "screenPosition": { + "x": 0.6500376, + "y": 0.63335764 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.97977, + "y": 54.94984, + "z": -84.59384 + }, + "screenPosition": { + "x": 0.6327655, + "y": 0.57954156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.66046, + "y": 55.254574, + "z": -85.345795 + }, + "screenPosition": { + "x": 0.627602, + "y": 0.51044893 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.38367, + "y": 55.597687, + "z": -85.80685 + }, + "screenPosition": { + "x": 0.623049, + "y": 0.4726094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.64484, + "y": 55.64362, + "z": -86.6105 + }, + "screenPosition": { + "x": 0.61979234, + "y": 0.39068085 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.82285, + "y": 56.609043, + "z": -87.39622 + }, + "screenPosition": { + "x": 0.60880667, + "y": 0.3372076 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.46167, + "y": 56.92078, + "z": -88.162155 + }, + "screenPosition": { + "x": 0.60335845, + "y": 0.26710263 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -359.95474, + "y": 51.30368, + "z": -88.24453 + }, + "screenPosition": { + "x": 0.6507442, + "y": 0.095852785 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.73605, + "y": 49.11678, + "z": -87.72034 + }, + "screenPosition": { + "x": 0.6711491, + "y": 0.08689814 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -359.4393, + "y": 44.67991, + "z": -86.614365 + }, + "screenPosition": { + "x": 0.71239185, + "y": 0.07387159 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.6725, + "y": 42.196358, + "z": -85.87993 + }, + "screenPosition": { + "x": 0.73636794, + "y": 0.077373095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.3381, + "y": 42.651955, + "z": -83.4986 + }, + "screenPosition": { + "x": 0.74100316, + "y": 0.33725694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.59964, + "y": 44.54848, + "z": -84.51027 + }, + "screenPosition": { + "x": 0.72132003, + "y": 0.2873098 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.48538, + "y": 46.89832, + "z": -85.75228 + }, + "screenPosition": { + "x": 0.69677097, + "y": 0.22698359 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -359.9272, + "y": 45.094337, + "z": -86.58472 + }, + "screenPosition": { + "x": 0.7092922, + "y": 0.08818841 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.6512, + "y": 37.462383, + "z": -84.03672 + }, + "screenPosition": { + "x": 0.7830661, + "y": 0.13138689 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.2594, + "y": 37.637497, + "z": -83.330185 + }, + "screenPosition": { + "x": 0.78410286, + "y": 0.20964903 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.96802, + "y": 38.66483, + "z": -82.82354 + }, + "screenPosition": { + "x": 0.7772037, + "y": 0.29185575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.90598, + "y": 44.315098, + "z": -84.35908 + }, + "screenPosition": { + "x": 0.7237705, + "y": 0.2963095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.3483, + "y": 46.404278, + "z": -85.37026 + }, + "screenPosition": { + "x": 0.70252323, + "y": 0.2518983 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.16525, + "y": 47.59445, + "z": -86.031746 + }, + "screenPosition": { + "x": 0.69007605, + "y": 0.2177975 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.66037, + "y": 53.795506, + "z": -88.42101 + }, + "screenPosition": { + "x": 0.62899566, + "y": 0.14965105 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -370.48514, + "y": 53.516083, + "z": -85.79628 + }, + "screenPosition": { + "x": 0.640705, + "y": 0.41351837 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.1281, + "y": 48.826164, + "z": -85.217606 + }, + "screenPosition": { + "x": 0.6825418, + "y": 0.3377722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.8334, + "y": 60.65285, + "z": -89.92393 + }, + "screenPosition": { + "x": 0.5654912, + "y": 0.19246292 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.544, + "y": 61.958878, + "z": -90.0694 + }, + "screenPosition": { + "x": 0.5539276, + "y": 0.21502438 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.8114, + "y": 64.39484, + "z": -90.64642 + }, + "screenPosition": { + "x": 0.5312235, + "y": 0.22571139 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.10303, + "y": 66.60483, + "z": -90.86683 + }, + "screenPosition": { + "x": 0.5117029, + "y": 0.26691765 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -369.24115, + "y": 69.687996, + "z": -90.499344 + }, + "screenPosition": { + "x": 0.48688737, + "y": 0.394066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.4891, + "y": 69.07892, + "z": -89.39733 + }, + "screenPosition": { + "x": 0.49598137, + "y": 0.49061456 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -362.54758, + "y": 64.18391, + "z": -90.95492 + }, + "screenPosition": { + "x": 0.5319104, + "y": 0.18764958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.7718, + "y": 71.99552, + "z": -92.41042 + }, + "screenPosition": { + "x": 0.46051174, + "y": 0.26282972 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.90002, + "y": 74.503296, + "z": -93.04694 + }, + "screenPosition": { + "x": 0.43698665, + "y": 0.26943013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -372.4123, + "y": 62.20645, + "z": -87.57363 + }, + "screenPosition": { + "x": 0.5607342, + "y": 0.48074585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.22458, + "y": 62.338284, + "z": -88.81898 + }, + "screenPosition": { + "x": 0.5551735, + "y": 0.35554233 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.37115, + "y": 64.24597, + "z": -89.86686 + }, + "screenPosition": { + "x": 0.5352665, + "y": 0.30216688 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.46008, + "y": 66.61307, + "z": -90.765884 + }, + "screenPosition": { + "x": 0.51199716, + "y": 0.27750278 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.4501, + "y": 71.29225, + "z": -92.02555 + }, + "screenPosition": { + "x": 0.46786815, + "y": 0.28257114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.35272, + "y": 73.59527, + "z": -92.38334 + }, + "screenPosition": { + "x": 0.4470628, + "y": 0.3119772 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -372.81824, + "y": 73.377464, + "z": -90.45679 + }, + "screenPosition": { + "x": 0.45576996, + "y": 0.5052012 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.59872, + "y": 70.16441, + "z": -89.368286 + }, + "screenPosition": { + "x": 0.4868852, + "y": 0.5250242 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.98352, + "y": 68.55074, + "z": -89.69047 + }, + "screenPosition": { + "x": 0.49941188, + "y": 0.44496667 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.27197, + "y": 68.066124, + "z": -90.343735 + }, + "screenPosition": { + "x": 0.50118834, + "y": 0.36327028 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.64868, + "y": 68.90214, + "z": -91.32622 + }, + "screenPosition": { + "x": 0.49059743, + "y": 0.28566965 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.29114, + "y": 71.70042, + "z": -91.89219 + }, + "screenPosition": { + "x": 0.464871, + "y": 0.30805323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.2084, + "y": 74.95174, + "z": -92.78937 + }, + "screenPosition": { + "x": 0.43410507, + "y": 0.30908695 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.9844, + "y": 76.26251, + "z": -92.6283 + }, + "screenPosition": { + "x": 0.4235706, + "y": 0.36369032 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.6303, + "y": 77.40095, + "z": -92.16961 + }, + "screenPosition": { + "x": 0.4155586, + "y": 0.44414237 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.64008, + "y": 77.389046, + "z": -91.58575 + }, + "screenPosition": { + "x": 0.41774276, + "y": 0.50428635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.4353, + "y": 70.346054, + "z": -91.48676 + }, + "screenPosition": { + "x": 0.47778705, + "y": 0.3108059 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.12848, + "y": 72.6981, + "z": -92.207146 + }, + "screenPosition": { + "x": 0.45528257, + "y": 0.3042125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -367.2927, + "y": 78.7206, + "z": -93.48837 + }, + "screenPosition": { + "x": 0.39978796, + "y": 0.345978 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.42084, + "y": 80.02765, + "z": -93.22456 + }, + "screenPosition": { + "x": 0.38953263, + "y": 0.41083372 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.26926, + "y": 80.18677, + "z": -92.733246 + }, + "screenPosition": { + "x": 0.38993704, + "y": 0.46633655 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -373.76886, + "y": 72.08104, + "z": -89.83392 + }, + "screenPosition": { + "x": 0.46897984, + "y": 0.532227 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.37332, + "y": 70.54983, + "z": -89.536934 + }, + "screenPosition": { + "x": 0.48301893, + "y": 0.51870877 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.22726, + "y": 71.66346, + "z": -90.74502 + }, + "screenPosition": { + "x": 0.4692682, + "y": 0.42575917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.68005, + "y": 74.26823, + "z": -91.31381 + }, + "screenPosition": { + "x": 0.44516268, + "y": 0.44218114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.4586, + "y": 75.92942, + "z": -91.24614 + }, + "screenPosition": { + "x": 0.43132514, + "y": 0.49724635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.18353, + "y": 61.35607, + "z": -90.58949 + }, + "screenPosition": { + "x": 0.5571809, + "y": 0.14370577 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.20654, + "y": 66.765915, + "z": -92.03589 + }, + "screenPosition": { + "x": 0.5061704, + "y": 0.15035275 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.89365, + "y": 81.72409, + "z": -95.855 + }, + "screenPosition": { + "x": 0.36576948, + "y": 0.18739532 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.5621, + "y": 77.663704, + "z": -93.70451 + }, + "screenPosition": { + "x": 0.40795547, + "y": 0.29304707 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.0339, + "y": 75.72285, + "z": -93.33582 + }, + "screenPosition": { + "x": 0.4256367, + "y": 0.27485043 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.61746, + "y": 71.81333, + "z": -91.82823 + }, + "screenPosition": { + "x": 0.46413308, + "y": 0.31787392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.55847, + "y": 68.5221, + "z": -91.53913 + }, + "screenPosition": { + "x": 0.49305868, + "y": 0.25261825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.70642, + "y": 68.82069, + "z": -92.44335 + }, + "screenPosition": { + "x": 0.48730183, + "y": 0.16757914 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.05716, + "y": 78.32828, + "z": -94.317825 + }, + "screenPosition": { + "x": 0.4000345, + "y": 0.24841423 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.81955, + "y": 75.77823, + "z": -93.70155 + }, + "screenPosition": { + "x": 0.42384568, + "y": 0.2384932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.35727, + "y": 74.70267, + "z": -94.124084 + }, + "screenPosition": { + "x": 0.43145373, + "y": 0.16360623 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.43167, + "y": 69.7837, + "z": -92.781395 + }, + "screenPosition": { + "x": 0.47793394, + "y": 0.16041522 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.9036, + "y": 70.40495, + "z": -92.234055 + }, + "screenPosition": { + "x": 0.47462156, + "y": 0.23509072 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.8387, + "y": 72.60502, + "z": -92.554794 + }, + "screenPosition": { + "x": 0.4548391, + "y": 0.26556116 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.51895, + "y": 76.1232, + "z": -93.30321 + }, + "screenPosition": { + "x": 0.4223432, + "y": 0.28974044 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.36963, + "y": 76.754906, + "z": -92.93817 + }, + "screenPosition": { + "x": 0.41836444, + "y": 0.34604487 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.65558, + "y": 78.94898, + "z": -93.155945 + }, + "screenPosition": { + "x": 0.3989194, + "y": 0.3867394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.35913, + "y": 84.1582, + "z": -95.2186 + }, + "screenPosition": { + "x": 0.34741044, + "y": 0.32373935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.93903, + "y": 81.5663, + "z": -94.93274 + }, + "screenPosition": { + "x": 0.37048402, + "y": 0.2785825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.66574, + "y": 78.99045, + "z": -94.030914 + }, + "screenPosition": { + "x": 0.39544615, + "y": 0.29729223 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.85928, + "y": 77.975845, + "z": -93.12463 + }, + "screenPosition": { + "x": 0.40727875, + "y": 0.3618328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.92236, + "y": 84.69857, + "z": -95.201004 + }, + "screenPosition": { + "x": 0.34293884, + "y": 0.34126404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.73376, + "y": 81.71556, + "z": -94.74321 + }, + "screenPosition": { + "x": 0.36980864, + "y": 0.3023298 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.12027, + "y": 79.49648, + "z": -94.035515 + }, + "screenPosition": { + "x": 0.3911502, + "y": 0.31147766 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.18005, + "y": 79.37307, + "z": -93.40724 + }, + "screenPosition": { + "x": 0.39451197, + "y": 0.3731416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.95294, + "y": 81.27398, + "z": -93.6945 + }, + "screenPosition": { + "x": 0.3772929, + "y": 0.39820123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -363.95483, + "y": 83.35615, + "z": -95.69783 + }, + "screenPosition": { + "x": 0.3524982, + "y": 0.25088918 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -361.69302, + "y": 75.64192, + "z": -94.27935 + }, + "screenPosition": { + "x": 0.42293933, + "y": 0.17469124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.1007, + "y": 77.0255, + "z": -93.37748 + }, + "screenPosition": { + "x": 0.414431, + "y": 0.3081472 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.11996, + "y": 79.58697, + "z": -93.482056 + }, + "screenPosition": { + "x": 0.3924636, + "y": 0.3716393 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.03824, + "y": 82.2396, + "z": -93.92922 + }, + "screenPosition": { + "x": 0.3684231, + "y": 0.40203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.80957, + "y": 72.2671, + "z": -93.339226 + }, + "screenPosition": { + "x": 0.45489615, + "y": 0.17446247 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -368.33334, + "y": 88.57339, + "z": -95.834076 + }, + "screenPosition": { + "x": 0.30779463, + "y": 0.38769516 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.38388, + "y": 90.94023, + "z": -96.4552 + }, + "screenPosition": { + "x": 0.28551888, + "y": 0.39181435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.98514, + "y": 96.37404, + "z": -98.3188 + }, + "screenPosition": { + "x": 0.2328167, + "y": 0.35593164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.52887, + "y": 97.32358, + "z": -98.99459 + }, + "screenPosition": { + "x": 0.2223579, + "y": 0.31338856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.7503, + "y": 97.701416, + "z": -99.60995 + }, + "screenPosition": { + "x": 0.21731071, + "y": 0.26097155 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -365.6025, + "y": 98.76558, + "z": -99.36062 + }, + "screenPosition": { + "x": 0.20883055, + "y": 0.31718123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.84998, + "y": 104.44755, + "z": -101.10418 + }, + "screenPosition": { + "x": 0.15445343, + "y": 0.30091384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.0604, + "y": 101.86934, + "z": -100.92875 + }, + "screenPosition": { + "x": 0.1769304, + "y": 0.24450777 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.60153, + "y": 99.23235, + "z": -100.35305 + }, + "screenPosition": { + "x": 0.20173728, + "y": 0.22835279 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.87225, + "y": 97.26672, + "z": -99.457954 + }, + "screenPosition": { + "x": 0.22118646, + "y": 0.26373968 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.9328, + "y": 94.91923, + "z": -98.809944 + }, + "screenPosition": { + "x": 0.24339421, + "y": 0.262966 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.26144, + "y": 92.89721, + "z": -98.17189 + }, + "screenPosition": { + "x": 0.26280788, + "y": 0.27057615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.68082, + "y": 90.55361, + "z": -97.42126 + }, + "screenPosition": { + "x": 0.28549364, + "y": 0.28075388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -367.94333, + "y": 84.451965, + "z": -94.83978 + }, + "screenPosition": { + "x": 0.34627235, + "y": 0.3714818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -362.5286, + "y": 85.005135, + "z": -96.55281 + }, + "screenPosition": { + "x": 0.33547205, + "y": 0.21001463 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.7239, + "y": 88.14109, + "z": -97.33867 + }, + "screenPosition": { + "x": 0.30609012, + "y": 0.21931548 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.145, + "y": 89.90627, + "z": -97.4022 + }, + "screenPosition": { + "x": 0.29090306, + "y": 0.26379588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.95117, + "y": 91.55801, + "z": -97.324 + }, + "screenPosition": { + "x": 0.27718318, + "y": 0.3196782 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -366.46164, + "y": 93.138855, + "z": -97.60111 + }, + "screenPosition": { + "x": 0.26279643, + "y": 0.33669898 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.64545, + "y": 94.08502, + "z": -98.37998 + }, + "screenPosition": { + "x": 0.25228423, + "y": 0.2837275 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.04785, + "y": 95.936905, + "z": -99.33897 + }, + "screenPosition": { + "x": 0.23288158, + "y": 0.23759818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.83398, + "y": 98.8317, + "z": -100.178276 + }, + "screenPosition": { + "x": 0.20535277, + "y": 0.23438534 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.69632, + "y": 100.72598, + "z": -100.148994 + }, + "screenPosition": { + "x": 0.18940274, + "y": 0.29221585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.6236, + "y": 99.7998, + "z": -99.34339 + }, + "screenPosition": { + "x": 0.20012677, + "y": 0.34888372 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.20996, + "y": 97.27196, + "z": -98.49501 + }, + "screenPosition": { + "x": 0.22513442, + "y": 0.3641013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.2872, + "y": 95.29223, + "z": -97.940956 + }, + "screenPosition": { + "x": 0.24333341, + "y": 0.36378238 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.8766, + "y": 93.68718, + "z": -98.206345 + }, + "screenPosition": { + "x": 0.25625047, + "y": 0.29017538 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.86838, + "y": 104.80899, + "z": -101.19594 + }, + "screenPosition": { + "x": 0.15143357, + "y": 0.30216572 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.00763, + "y": 102.76051, + "z": -100.894424 + }, + "screenPosition": { + "x": 0.16949987, + "y": 0.27384275 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.3965, + "y": 100.67035, + "z": -100.50959 + }, + "screenPosition": { + "x": 0.1885877, + "y": 0.2532485 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -364.0938, + "y": 105.872475, + "z": -101.705376 + }, + "screenPosition": { + "x": 0.1402318, + "y": 0.2798496 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.01483, + "y": 107.86682, + "z": -102.263855 + }, + "screenPosition": { + "x": 0.12133656, + "y": 0.27968246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.94794, + "y": 109.39104, + "z": -102.69258 + }, + "screenPosition": { + "x": 0.10688872, + "y": 0.27935863 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.5569, + "y": 111.65001, + "z": -103.41231 + }, + "screenPosition": { + "x": 0.08517541, + "y": 0.27014175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.0365, + "y": 113.51608, + "z": -104.063866 + }, + "screenPosition": { + "x": 0.06703524, + "y": 0.2566211 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190824-092945/brain-CB6EF8-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + 0.24187802417899895, + 0.9005768459124095, + -0.36118743890910704, + 0.0, + 0.8962263419929009, + -0.35001009871329036, + -0.2725275668932167, + 0.0, + -0.3718512677634533, + -0.25778726773285215, + -0.8917804434150503, + 0.0, + -404.59897799362494, + 42.10489945076343, + -188.42932761351778, + 1.0 + ] + }, + "baseImage": "20190824-092945/base.webp", + "version": 0, + "savedAt": 1.566639234132E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190825-044530-v0.json b/data/mapping/BAAAHS/afik/20190825-044530-v0.json new file mode 100644 index 0000000000..4dce90519f --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190825-044530-v0.json @@ -0,0 +1,6182 @@ +{ + "startedAt": 1.566708330811E12, + "surfaces": [ + { + "brainId": "C784BC", + "panelName": "F3D", + "pixels": [ + { + "modelPosition": { + "x": -12.151161, + "y": 122.05961, + "z": -29.543768 + }, + "screenPosition": { + "x": 0.17089573, + "y": 0.30333433 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -12.868335, + "y": 123.9822, + "z": -30.472828 + }, + "screenPosition": { + "x": 0.17955233, + "y": 0.32957792 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.58266, + "y": 125.177376, + "z": -31.810493 + }, + "screenPosition": { + "x": 0.19626048, + "y": 0.34790468 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.359706, + "y": 126.39955, + "z": -33.310253 + }, + "screenPosition": { + "x": 0.21543136, + "y": 0.36711308 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.177934, + "y": 127.478096, + "z": -35.00888 + }, + "screenPosition": { + "x": 0.23814453, + "y": 0.38520777 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.930592, + "y": 127.8022, + "z": -36.954014 + }, + "screenPosition": { + "x": 0.2669321, + "y": 0.39467835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.51093, + "y": 126.76109, + "z": -39.19331 + }, + "screenPosition": { + "x": 0.3045174, + "y": 0.38781255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.923693, + "y": 125.56713, + "z": -41.04575 + }, + "screenPosition": { + "x": 0.33704343, + "y": 0.3777969 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.169832, + "y": 124.4628, + "z": -42.375137 + }, + "screenPosition": { + "x": 0.3614026, + "y": 0.36733848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.368143, + "y": 121.804794, + "z": -44.459072 + }, + "screenPosition": { + "x": 0.40291697, + "y": 0.3386652 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.088121, + "y": 119.58632, + "z": -44.93708 + }, + "screenPosition": { + "x": 0.41744033, + "y": 0.31098494 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.748481, + "y": 118.606, + "z": -41.706062 + }, + "screenPosition": { + "x": 0.36799493, + "y": 0.2898655 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.093122, + "y": 121.33643, + "z": -41.11775 + }, + "screenPosition": { + "x": 0.35053557, + "y": 0.32368293 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.185675, + "y": 123.17861, + "z": -43.15558 + }, + "screenPosition": { + "x": 0.37771642, + "y": 0.35293296 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.290842, + "y": 107.865944, + "z": -49.39343 + }, + "screenPosition": { + "x": 0.52918416, + "y": 0.16549973 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.514492, + "y": 106.34848, + "z": -50.89579 + }, + "screenPosition": { + "x": 0.5602087, + "y": 0.1481488 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.71755, + "y": 104.90285, + "z": -52.298717 + }, + "screenPosition": { + "x": 0.5896437, + "y": 0.13134722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.046053, + "y": 103.51122, + "z": -54.025833 + }, + "screenPosition": { + "x": 0.62504387, + "y": 0.1157656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.479406, + "y": 102.245445, + "z": -55.977707 + }, + "screenPosition": { + "x": 0.6645946, + "y": 0.102181904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.061642, + "y": 101.689285, + "z": -57.944595 + }, + "screenPosition": { + "x": 0.7035845, + "y": 0.10105928 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.83679, + "y": 102.42652, + "z": -59.71676 + }, + "screenPosition": { + "x": 0.7343564, + "y": 0.11731164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.927444, + "y": 103.783745, + "z": -62.026993 + }, + "screenPosition": { + "x": 0.7731499, + "y": 0.14422764 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.41812, + "y": 106.496376, + "z": -61.8623 + }, + "screenPosition": { + "x": 0.75980645, + "y": 0.18037298 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.14599, + "y": 111.62393, + "z": -58.15482 + }, + "screenPosition": { + "x": 0.67116034, + "y": 0.23774955 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.107403, + "y": 111.957245, + "z": -60.68567 + }, + "screenPosition": { + "x": 0.7168592, + "y": 0.24994789 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.013311, + "y": 127.733315, + "z": -68.368805 + }, + "screenPosition": { + "x": 0.80377644, + "y": 0.49283123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.178583, + "y": 104.42953, + "z": -59.53705 + }, + "screenPosition": { + "x": 0.72370857, + "y": 0.1445348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.044596, + "y": 102.19325, + "z": -60.43868 + }, + "screenPosition": { + "x": 0.74923635, + "y": 0.11769652 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.43487, + "y": 100.58617, + "z": -62.46409 + }, + "screenPosition": { + "x": 0.7935033, + "y": 0.10253765 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.523624, + "y": 101.45844, + "z": -65.04673 + }, + "screenPosition": { + "x": 0.83944917, + "y": 0.12461717 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.077023, + "y": 104.19808, + "z": -65.04413 + }, + "screenPosition": { + "x": 0.82901865, + "y": 0.16123353 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.981665, + "y": 106.49698, + "z": -63.45735 + }, + "screenPosition": { + "x": 0.7901644, + "y": 0.18640266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.746876, + "y": 105.64251, + "z": -60.451096 + }, + "screenPosition": { + "x": 0.7361591, + "y": 0.16347222 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.445312, + "y": 103.25338, + "z": -60.96587 + }, + "screenPosition": { + "x": 0.7549485, + "y": 0.1330332 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.06044, + "y": 100.90906, + "z": -61.21912 + }, + "screenPosition": { + "x": 0.76859134, + "y": 0.10221429 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.28409, + "y": 99.3916, + "z": -62.721478 + }, + "screenPosition": { + "x": 0.802898, + "y": 0.08731814 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.403835, + "y": 97.990776, + "z": -63.862877 + }, + "screenPosition": { + "x": 0.8298952, + "y": 0.07264019 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.669617, + "y": 96.57214, + "z": -65.4279 + }, + "screenPosition": { + "x": 0.8650226, + "y": 0.05932014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.123562, + "y": 95.23454, + "z": -67.4792 + }, + "screenPosition": { + "x": 0.90910095, + "y": 0.048934087 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.0251, + "y": 96.26827, + "z": -69.439354 + }, + "screenPosition": { + "x": 0.94252014, + "y": 0.07034495 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.762865, + "y": 98.11904, + "z": -70.46785 + }, + "screenPosition": { + "x": 0.95513123, + "y": 0.099313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.418266, + "y": 100.2571, + "z": -71.09861 + }, + "screenPosition": { + "x": 0.9590909, + "y": 0.13067348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.677696, + "y": 102.5474, + "z": -70.52118 + }, + "screenPosition": { + "x": 0.93948066, + "y": 0.15953639 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.909195, + "y": 103.507484, + "z": -67.7956 + }, + "screenPosition": { + "x": 0.883989, + "y": 0.16226012 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.837233, + "y": 101.59349, + "z": -65.8572 + }, + "screenPosition": { + "x": 0.8542967, + "y": 0.12900019 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.597443, + "y": 98.98889, + "z": -66.67027 + }, + "screenPosition": { + "x": 0.8795747, + "y": 0.09676684 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.198372, + "y": 97.87596, + "z": -69.008995 + }, + "screenPosition": { + "x": 0.9282783, + "y": 0.090511 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.249743, + "y": 99.86178, + "z": -70.84796 + }, + "screenPosition": { + "x": 0.9557529, + "y": 0.124886125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.175924, + "y": 102.33133, + "z": -69.22442 + }, + "screenPosition": { + "x": 0.91560656, + "y": 0.15192662 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.001009, + "y": 100.77644, + "z": -66.78886 + }, + "screenPosition": { + "x": 0.8751047, + "y": 0.121442996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.536453, + "y": 108.646065, + "z": -69.45899 + }, + "screenPosition": { + "x": 0.8963116, + "y": 0.23818806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.458838, + "y": 110.14572, + "z": -68.38026 + }, + "screenPosition": { + "x": 0.8701351, + "y": 0.2544421 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.46738, + "y": 112.32799, + "z": -67.15444 + }, + "screenPosition": { + "x": 0.8385903, + "y": 0.27939302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.845863, + "y": 113.51274, + "z": -64.716286 + }, + "screenPosition": { + "x": 0.7879005, + "y": 0.28671443 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.799238, + "y": 112.73929, + "z": -62.19631 + }, + "screenPosition": { + "x": 0.74282175, + "y": 0.26656067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.747868, + "y": 110.75347, + "z": -60.35734 + }, + "screenPosition": { + "x": 0.7151401, + "y": 0.23239249 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.113056, + "y": 108.543594, + "z": -59.82601 + }, + "screenPosition": { + "x": 0.7133434, + "y": 0.2004339 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.353498, + "y": 105.98442, + "z": -61.97261 + }, + "screenPosition": { + "x": 0.763966, + "y": 0.17424922 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.419765, + "y": 106.44357, + "z": -64.72822 + }, + "screenPosition": { + "x": 0.8146938, + "y": 0.19109818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.386875, + "y": 108.23173, + "z": -66.44186 + }, + "screenPosition": { + "x": 0.84044284, + "y": 0.22118217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.939322, + "y": 110.72889, + "z": -66.57546 + }, + "screenPosition": { + "x": 0.8336134, + "y": 0.25565383 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.759703, + "y": 112.83013, + "z": -64.86336 + }, + "screenPosition": { + "x": 0.7932015, + "y": 0.27786148 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.94717, + "y": 113.206436, + "z": -62.347527 + }, + "screenPosition": { + "x": 0.74397135, + "y": 0.27351782 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.320906, + "y": 113.17882, + "z": -60.590378 + }, + "screenPosition": { + "x": 0.7104482, + "y": 0.2661454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.548605, + "y": 113.16901, + "z": -58.409607 + }, + "screenPosition": { + "x": 0.67035943, + "y": 0.2597689 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.964472, + "y": 113.24022, + "z": -56.715122 + }, + "screenPosition": { + "x": 0.6395979, + "y": 0.25638488 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.21371, + "y": 113.40106, + "z": -54.49758 + }, + "screenPosition": { + "x": 0.59965456, + "y": 0.2529402 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.439514, + "y": 112.9063, + "z": -52.589214 + }, + "screenPosition": { + "x": 0.56786066, + "y": 0.24141411 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.748627, + "y": 112.36673, + "z": -50.942375 + }, + "screenPosition": { + "x": 0.5410911, + "y": 0.23005141 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.100822, + "y": 112.16846, + "z": -49.222 + }, + "screenPosition": { + "x": 0.5122331, + "y": 0.22322634 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.26485, + "y": 111.88917, + "z": -47.015335 + }, + "screenPosition": { + "x": 0.4757603, + "y": 0.2142472 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.6160965, + "y": 111.448425, + "z": -45.43116 + }, + "screenPosition": { + "x": 0.450637, + "y": 0.20467521 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.739894, + "y": 111.555244, + "z": -42.88943 + }, + "screenPosition": { + "x": 0.4083472, + "y": 0.20028318 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.378502, + "y": 114.735016, + "z": -42.875954 + }, + "screenPosition": { + "x": 0.39849395, + "y": 0.24217628 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.04215, + "y": 113.64909, + "z": -45.376774 + }, + "screenPosition": { + "x": 0.44290674, + "y": 0.23382632 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.24521, + "y": 112.20346, + "z": -46.7797 + }, + "screenPosition": { + "x": 0.470814, + "y": 0.21789879 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.468859, + "y": 110.686005, + "z": -48.282063 + }, + "screenPosition": { + "x": 0.5009887, + "y": 0.20103948 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.028606, + "y": 109.71671, + "z": -50.42192 + }, + "screenPosition": { + "x": 0.540815, + "y": 0.1929218 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.906708, + "y": 110.09484, + "z": -52.691246 + }, + "screenPosition": { + "x": 0.5790258, + "y": 0.20337656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.897255, + "y": 112.5386, + "z": -54.095715 + }, + "screenPosition": { + "x": 0.5954693, + "y": 0.2401416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.240948, + "y": 115.02656, + "z": -53.6436 + }, + "screenPosition": { + "x": 0.5792318, + "y": 0.27289835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.14464, + "y": 117.08298, + "z": -52.193027 + }, + "screenPosition": { + "x": 0.5472707, + "y": 0.29690185 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.627024, + "y": 118.1511, + "z": -50.11583 + }, + "screenPosition": { + "x": 0.508269, + "y": 0.30570173 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.10751, + "y": 118.73427, + "z": -48.311035 + }, + "screenPosition": { + "x": 0.47597063, + "y": 0.30866516 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.525274, + "y": 119.29043, + "z": -46.344147 + }, + "screenPosition": { + "x": 0.44149622, + "y": 0.31080642 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.13405, + "y": 120.655045, + "z": -44.454933 + }, + "screenPosition": { + "x": 0.40632287, + "y": 0.32367548 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.691246, + "y": 124.36458, + "z": -43.907528 + }, + "screenPosition": { + "x": 0.3862977, + "y": 0.3703401 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.857616, + "y": 123.7372, + "z": -47.568905 + }, + "screenPosition": { + "x": 0.44802493, + "y": 0.37250096 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.889303, + "y": 121.168816, + "z": -49.129787 + }, + "screenPosition": { + "x": 0.48204583, + "y": 0.34310123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.500631, + "y": 117.85461, + "z": -49.92784 + }, + "screenPosition": { + "x": 0.5060255, + "y": 0.30124754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.389133, + "y": 116.03145, + "z": -50.656498 + }, + "screenPosition": { + "x": 0.52429235, + "y": 0.27874935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.486391, + "y": 114.2175, + "z": -51.97087 + }, + "screenPosition": { + "x": 0.5528072, + "y": 0.25765383 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.478796, + "y": 112.27771, + "z": -53.060486 + }, + "screenPosition": { + "x": 0.57817125, + "y": 0.23401824 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.662214, + "y": 111.14637, + "z": -54.227776 + }, + "screenPosition": { + "x": 0.60250795, + "y": 0.22143365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.865273, + "y": 109.70073, + "z": -55.630703 + }, + "screenPosition": { + "x": 0.63239795, + "y": 0.20497498 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.088923, + "y": 108.18327, + "z": -57.133064 + }, + "screenPosition": { + "x": 0.66471165, + "y": 0.18754813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.22831, + "y": 106.468155, + "z": -58.510098 + }, + "screenPosition": { + "x": 0.6961776, + "y": 0.16748084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.4735, + "y": 105.121346, + "z": -59.97569 + }, + "screenPosition": { + "x": 0.7293782, + "y": 0.15538424 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.360102, + "y": 102.81324, + "z": -60.976746 + }, + "screenPosition": { + "x": 0.75695956, + "y": 0.12757602 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.250757, + "y": 102.01279, + "z": -58.294678 + }, + "screenPosition": { + "x": 0.7087739, + "y": 0.106134236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.555166, + "y": 105.12933, + "z": -57.371296 + }, + "screenPosition": { + "x": 0.6797868, + "y": 0.14552604 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.126307, + "y": 107.06973, + "z": -57.876736 + }, + "screenPosition": { + "x": 0.6821468, + "y": 0.1737805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.19447, + "y": 108.01383, + "z": -60.35994 + }, + "screenPosition": { + "x": 0.7255632, + "y": 0.19541085 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.88156, + "y": 107.58351, + "z": -62.551586 + }, + "screenPosition": { + "x": 0.76883507, + "y": 0.19771017 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.548056, + "y": 107.225006, + "z": -64.6438 + }, + "screenPosition": { + "x": 0.81000733, + "y": 0.20074931 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.855967, + "y": 105.90521, + "z": -66.271484 + }, + "screenPosition": { + "x": 0.84595555, + "y": 0.18900536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.186367, + "y": 104.99854, + "z": -67.7262 + }, + "screenPosition": { + "x": 0.8770566, + "y": 0.18220796 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.913689, + "y": 104.1821, + "z": -70.252914 + }, + "screenPosition": { + "x": 0.92822254, + "y": 0.18068044 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.859259, + "y": 105.79961, + "z": -72.00332 + }, + "screenPosition": { + "x": 0.9553842, + "y": 0.20974441 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.573097, + "y": 102.95931, + "z": -67.1581 + }, + "screenPosition": { + "x": 0.8739726, + "y": 0.15319534 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.364088, + "y": 102.41235, + "z": -69.7107 + }, + "screenPosition": { + "x": 0.9245478, + "y": 0.15498702 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.161726, + "y": 103.56271, + "z": -71.3099 + }, + "screenPosition": { + "x": 0.9506721, + "y": 0.17627548 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.02873, + "y": 106.4374, + "z": -72.11777 + }, + "screenPosition": { + "x": 0.95523065, + "y": 0.21828881 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.200102, + "y": 107.56014, + "z": -71.959816 + }, + "screenPosition": { + "x": 0.9479988, + "y": 0.23291022 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.596285, + "y": 131.75037, + "z": -73.380264 + }, + "screenPosition": { + "x": 0.88399863, + "y": 0.56614745 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.1131, + "y": 134.62833, + "z": -81.11938 + }, + "screenPosition": { + "x": 1.0316571, + "y": 0.642041 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.848942, + "y": 117.73787, + "z": -73.62889 + }, + "screenPosition": { + "x": 0.9414653, + "y": 0.3771603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.857487, + "y": 119.920135, + "z": -72.403076 + }, + "screenPosition": { + "x": 0.90992045, + "y": 0.4021112 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.235968, + "y": 121.10489, + "z": -69.96491 + }, + "screenPosition": { + "x": 0.859054, + "y": 0.40896517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.189344, + "y": 120.331436, + "z": -67.44494 + }, + "screenPosition": { + "x": 0.81399965, + "y": 0.38896874 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.60133, + "y": 138.36897, + "z": -69.60338 + }, + "screenPosition": { + "x": 0.7872013, + "y": 0.6415983 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.839767, + "y": 138.39507, + "z": -83.336205 + }, + "screenPosition": { + "x": 1.0657916, + "y": 0.70562047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.814175, + "y": 116.081116, + "z": -63.1554 + }, + "screenPosition": { + "x": 0.7483483, + "y": 0.3151664 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.281368, + "y": 113.26965, + "z": -63.25743 + }, + "screenPosition": { + "x": 0.76087093, + "y": 0.27744496 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.377676, + "y": 111.213234, + "z": -64.70801 + }, + "screenPosition": { + "x": 0.7962202, + "y": 0.25504816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.064766, + "y": 110.78291, + "z": -66.89965 + }, + "screenPosition": { + "x": 0.8395554, + "y": 0.25748917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.074005, + "y": 112.6699, + "z": -68.67596 + }, + "screenPosition": { + "x": 0.86626405, + "y": 0.28977114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.456032, + "y": 114.28679, + "z": -68.831314 + }, + "screenPosition": { + "x": 0.8631361, + "y": 0.31227306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.818415, + "y": 116.21799, + "z": -68.75104 + }, + "screenPosition": { + "x": 0.8543629, + "y": 0.33826014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.285652, + "y": 118.27502, + "z": -68.895515 + }, + "screenPosition": { + "x": 0.84934896, + "y": 0.36657193 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.23407, + "y": 120.61994, + "z": -70.23732 + }, + "screenPosition": { + "x": 0.86607885, + "y": 0.403494 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.07194, + "y": 121.384186, + "z": -72.17158 + }, + "screenPosition": { + "x": 0.90000445, + "y": 0.42108104 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.706663, + "y": 113.85708, + "z": -72.61801 + }, + "screenPosition": { + "x": 0.93682915, + "y": 0.32074377 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.871643, + "y": 113.82026, + "z": -70.27515 + }, + "screenPosition": { + "x": 0.89237374, + "y": 0.3114002 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.227634, + "y": 114.59188, + "z": -68.009964 + }, + "screenPosition": { + "x": 0.84635985, + "y": 0.31333402 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.919724, + "y": 115.91168, + "z": -66.38228 + }, + "screenPosition": { + "x": 0.8104062, + "y": 0.32505155 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.5285, + "y": 117.27629, + "z": -64.493065 + }, + "screenPosition": { + "x": 0.7693115, + "y": 0.3364156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.621307, + "y": 119.65621, + "z": -63.392574 + }, + "screenPosition": { + "x": 0.7394082, + "y": 0.36451873 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.09139, + "y": 122.44067, + "z": -63.12845 + }, + "screenPosition": { + "x": 0.7239019, + "y": 0.4012622 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.56991, + "y": 165.56203, + "z": -53.632023 + }, + "screenPosition": { + "x": 0.452503, + "y": 0.99171835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.05445, + "y": 122.721176, + "z": -68.525215 + }, + "screenPosition": { + "x": 0.8255881, + "y": 0.42548046 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.276201, + "y": 120.71877, + "z": -70.29998 + }, + "screenPosition": { + "x": 0.86689425, + "y": 0.40504396 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.17597, + "y": 135.87303, + "z": -72.65988 + }, + "screenPosition": { + "x": 0.85477185, + "y": 0.6193066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.985989, + "y": 116.370834, + "z": -69.137886 + }, + "screenPosition": { + "x": 0.8611284, + "y": 0.34167755 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.956158, + "y": 114.55567, + "z": -67.26215 + }, + "screenPosition": { + "x": 0.83230066, + "y": 0.31016585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.140778, + "y": 114.20455, + "z": -65.15492 + }, + "screenPosition": { + "x": 0.7934693, + "y": 0.29727972 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.349787, + "y": 114.75151, + "z": -62.602314 + }, + "screenPosition": { + "x": 0.7428247, + "y": 0.2950569 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.147678, + "y": 116.43962, + "z": -61.063187 + }, + "screenPosition": { + "x": 0.70723844, + "y": 0.31221727 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.263924, + "y": 119.47514, + "z": -59.653522 + }, + "screenPosition": { + "x": 0.67092276, + "y": 0.3500653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.046665, + "y": 122.15217, + "z": -60.33607 + }, + "screenPosition": { + "x": 0.6739511, + "y": 0.38872054 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.243122, + "y": 123.87771, + "z": -62.73486 + }, + "screenPosition": { + "x": 0.7115333, + "y": 0.41974208 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.620632, + "y": 162.088, + "z": -55.091736 + }, + "screenPosition": { + "x": 0.46626997, + "y": 0.93605447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.607065, + "y": 116.01911, + "z": -65.4356 + }, + "screenPosition": { + "x": 0.7920595, + "y": 0.32311937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.772045, + "y": 115.982285, + "z": -63.09274 + }, + "screenPosition": { + "x": 0.7475599, + "y": 0.3136486 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.214197, + "y": 117.43652, + "z": -60.680473 + }, + "screenPosition": { + "x": 0.69671124, + "y": 0.3249419 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.346285, + "y": 119.18786, + "z": -60.05125 + }, + "screenPosition": { + "x": 0.6791214, + "y": 0.34727255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.584177, + "y": 121.3075, + "z": -59.510582 + }, + "screenPosition": { + "x": 0.6619947, + "y": 0.37471268 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.591772, + "y": 123.24729, + "z": -58.420967 + }, + "screenPosition": { + "x": 0.63583624, + "y": 0.3978182 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.117235, + "y": 124.656715, + "z": -56.27023 + }, + "screenPosition": { + "x": 0.59312665, + "y": 0.41027856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.967657, + "y": 124.24238, + "z": -53.253094 + }, + "screenPosition": { + "x": 0.5422016, + "y": 0.39566937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.226097, + "y": 121.421715, + "z": -52.76941 + }, + "screenPosition": { + "x": 0.5430584, + "y": 0.3566655 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.469387, + "y": 119.58996, + "z": -54.5074 + }, + "screenPosition": { + "x": 0.5791687, + "y": 0.33698216 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.934725, + "y": 121.16204, + "z": -54.924286 + }, + "screenPosition": { + "x": 0.5812276, + "y": 0.35934246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.094704, + "y": 119.3751, + "z": -56.40075 + }, + "screenPosition": { + "x": 0.6131343, + "y": 0.33939987 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.320251, + "y": 118.34259, + "z": -57.630707 + }, + "screenPosition": { + "x": 0.6384931, + "y": 0.32880577 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.91289, + "y": 115.585144, + "z": -58.056927 + }, + "screenPosition": { + "x": 0.65561074, + "y": 0.29218283 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.718332, + "y": 114.34455, + "z": -55.385735 + }, + "screenPosition": { + "x": 0.61216754, + "y": 0.2681134 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.94983, + "y": 115.304634, + "z": -52.660156 + }, + "screenPosition": { + "x": 0.5611828, + "y": 0.2741252 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.70654, + "y": 117.13639, + "z": -50.922165 + }, + "screenPosition": { + "x": 0.52526975, + "y": 0.29426387 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.862066, + "y": 119.54333, + "z": -49.98377 + }, + "screenPosition": { + "x": 0.50158775, + "y": 0.32389113 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.909895, + "y": 121.097, + "z": -49.229218 + }, + "screenPosition": { + "x": 0.4839418, + "y": 0.3424266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.980211, + "y": 123.0638, + "z": -48.301697 + }, + "screenPosition": { + "x": 0.46227196, + "y": 0.3657505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.988565, + "y": 137.40526, + "z": -62.758636 + }, + "screenPosition": { + "x": 0.6647755, + "y": 0.6026163 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.886751, + "y": 125.84764, + "z": -46.44252 + }, + "screenPosition": { + "x": 0.4230192, + "y": 0.39677086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.595633, + "y": 126.125725, + "z": -45.459076 + }, + "screenPosition": { + "x": 0.4061377, + "y": 0.39752427 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.779305, + "y": 125.532135, + "z": -43.488045 + }, + "screenPosition": { + "x": 0.37606758, + "y": 0.3842184 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.924643, + "y": 125.80961, + "z": -40.909546 + }, + "screenPosition": { + "x": 0.33418736, + "y": 0.38051364 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.294622, + "y": 129.68059, + "z": -39.739655 + }, + "screenPosition": { + "x": 0.3047117, + "y": 0.42631426 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.365635, + "y": 131.35211, + "z": -41.814255 + }, + "screenPosition": { + "x": 0.33240223, + "y": 0.4536136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.092005, + "y": 130.2932, + "z": -44.47717 + }, + "screenPosition": { + "x": 0.37781826, + "y": 0.4482099 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.06192, + "y": 127.94028, + "z": -45.739758 + }, + "screenPosition": { + "x": 0.40522602, + "y": 0.42178503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.055275, + "y": 126.242966, + "z": -46.69317 + }, + "screenPosition": { + "x": 0.42591837, + "y": 0.40263236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.237743, + "y": 124.86915, + "z": -47.996666 + }, + "screenPosition": { + "x": 0.4516054, + "y": 0.38852853 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.231096, + "y": 123.17183, + "z": -48.950077 + }, + "screenPosition": { + "x": 0.47274658, + "y": 0.36900806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.59983, + "y": 121.3941, + "z": -51.01226 + }, + "screenPosition": { + "x": 0.51312, + "y": 0.35133237 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.741117, + "y": 120.163925, + "z": -52.11689 + }, + "screenPosition": { + "x": 0.5359384, + "y": 0.33802256 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.923586, + "y": 118.79011, + "z": -53.420383 + }, + "screenPosition": { + "x": 0.56290376, + "y": 0.32319224 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.31386, + "y": 117.18302, + "z": -55.445797 + }, + "screenPosition": { + "x": 0.60366046, + "y": 0.30697817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.894197, + "y": 116.141914, + "z": -57.68509 + }, + "screenPosition": { + "x": 0.64701277, + "y": 0.29882887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.026031, + "y": 117.3555, + "z": -60.194187 + }, + "screenPosition": { + "x": 0.6881297, + "y": 0.32245326 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.764746, + "y": 119.448746, + "z": -61.08648 + }, + "screenPosition": { + "x": 0.6970355, + "y": 0.35386816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.813435, + "y": 160.28035, + "z": -59.858444 + }, + "screenPosition": { + "x": 0.53572905, + "y": 0.91305983 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.167933, + "y": 134.76627, + "z": -67.609055 + }, + "screenPosition": { + "x": 0.76279974, + "y": 0.58523834 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.418543, + "y": 126.508095, + "z": -58.893776 + }, + "screenPosition": { + "x": 0.6331438, + "y": 0.44333193 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.581625, + "y": 125.98633, + "z": -56.823315 + }, + "screenPosition": { + "x": 0.59837717, + "y": 0.4298066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.55749, + "y": 125.62601, + "z": -54.130367 + }, + "screenPosition": { + "x": 0.55278116, + "y": 0.41670632 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.80483, + "y": 125.301895, + "z": -52.18523 + }, + "screenPosition": { + "x": 0.52053714, + "y": 0.40653902 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.219748, + "y": 125.13064, + "z": -50.62695 + }, + "screenPosition": { + "x": 0.49470925, + "y": 0.39964712 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.42306, + "y": 124.222755, + "z": -48.891552 + }, + "screenPosition": { + "x": 0.4684838, + "y": 0.38264796 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.944725, + "y": 124.662285, + "z": -47.28562 + }, + "screenPosition": { + "x": 0.4404952, + "y": 0.38377824 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.404621, + "y": 125.317276, + "z": -45.381397 + }, + "screenPosition": { + "x": 0.40731496, + "y": 0.38683566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.674452, + "y": 125.406296, + "z": -43.26329 + }, + "screenPosition": { + "x": 0.37283292, + "y": 0.3819625 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.964874, + "y": 125.42349, + "z": -41.244614 + }, + "screenPosition": { + "x": 0.3406079, + "y": 0.3765153 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.274937, + "y": 125.12639, + "z": -39.461575 + }, + "screenPosition": { + "x": 0.31338543, + "y": 0.36778772 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.944537, + "y": 126.033066, + "z": -38.00686 + }, + "screenPosition": { + "x": 0.28813985, + "y": 0.3752931 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.32017, + "y": 126.490395, + "z": -35.977306 + }, + "screenPosition": { + "x": 0.25562006, + "y": 0.3754859 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.421478, + "y": 126.18409, + "z": -33.60855 + }, + "screenPosition": { + "x": 0.22050694, + "y": 0.36522576 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.51709, + "y": 124.42294, + "z": -32.057003 + }, + "screenPosition": { + "x": 0.20197289, + "y": 0.33914635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.026415, + "y": 121.71031, + "z": -32.2217 + }, + "screenPosition": { + "x": 0.21177484, + "y": 0.3056259 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.373609, + "y": 119.761925, + "z": -34.320652 + }, + "screenPosition": { + "x": 0.24895215, + "y": 0.28625876 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.102827, + "y": 119.430435, + "z": -36.57496 + }, + "screenPosition": { + "x": 0.2846065, + "y": 0.28761333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.814304, + "y": 119.898186, + "z": -38.32123 + }, + "screenPosition": { + "x": 0.3105142, + "y": 0.297975 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.544473, + "y": 119.809166, + "z": -40.43934 + }, + "screenPosition": { + "x": 0.34421334, + "y": 0.30221885 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.21287, + "y": 119.93561, + "z": -42.259148 + }, + "screenPosition": { + "x": 0.37293714, + "y": 0.30854583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.879368, + "y": 119.57711, + "z": -44.351364 + }, + "screenPosition": { + "x": 0.4078968, + "y": 0.3093291 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.079578, + "y": 117.40405, + "z": -46.162895 + }, + "screenPosition": { + "x": 0.44432175, + "y": 0.28547603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.593502, + "y": 132.93147, + "z": -61.371784 + }, + "screenPosition": { + "x": 0.6553456, + "y": 0.53787214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.236265, + "y": 115.72272, + "z": -41.907528 + }, + "screenPosition": { + "x": 0.37982032, + "y": 0.2527887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.866582, + "y": 117.25798, + "z": -39.981544 + }, + "screenPosition": { + "x": 0.34439662, + "y": 0.26807693 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.642933, + "y": 118.77544, + "z": -38.479187 + }, + "screenPosition": { + "x": 0.3162227, + "y": 0.28395328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.378102, + "y": 120.43654, + "z": -36.77796 + }, + "screenPosition": { + "x": 0.28491023, + "y": 0.3009599 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.113271, + "y": 122.09764, + "z": -35.07674 + }, + "screenPosition": { + "x": 0.25403818, + "y": 0.31772727 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.071669, + "y": 130.90277, + "z": -41.239418 + }, + "screenPosition": { + "x": 0.32466263, + "y": 0.44619724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.848715, + "y": 132.12495, + "z": -42.739178 + }, + "screenPosition": { + "x": 0.34475514, + "y": 0.46622136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -19.625761, + "y": 133.34714, + "z": -44.238937 + }, + "screenPosition": { + "x": 0.36499077, + "y": 0.4863881 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.444939, + "y": 134.66814, + "z": -45.80136 + }, + "screenPosition": { + "x": 0.3860837, + "y": 0.5081585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.094643, + "y": 135.35136, + "z": -47.249336 + }, + "screenPosition": { + "x": 0.40739644, + "y": 0.52157825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.85015, + "y": 136.4029, + "z": -48.785866 + }, + "screenPosition": { + "x": 0.42920536, + "y": 0.54011357 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.835001, + "y": 137.3918, + "z": -51.007545 + }, + "screenPosition": { + "x": 0.46268556, + "y": 0.5603459 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.54268, + "y": 136.88965, + "z": -53.298622 + }, + "screenPosition": { + "x": 0.5024556, + "y": 0.56179726 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.934853, + "y": 135.76752, + "z": -55.051632 + }, + "screenPosition": { + "x": 0.5356953, + "y": 0.5533013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.305485, + "y": 134.47473, + "z": -56.84141 + }, + "screenPosition": { + "x": 0.5705981, + "y": 0.54256815 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.4005, + "y": 140.55113, + "z": -84.6051 + }, + "screenPosition": { + "x": 1.0850941, + "y": 0.74184287 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.1131, + "y": 134.62833, + "z": -81.11938 + }, + "screenPosition": { + "x": 1.0316571, + "y": 0.642041 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.798248, + "y": 136.30153, + "z": -65.683075 + }, + "screenPosition": { + "x": 0.72151214, + "y": 0.59877205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.556286, + "y": 124.84578, + "z": -57.404892 + }, + "screenPosition": { + "x": 0.61242336, + "y": 0.4162937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.596771, + "y": 124.99741, + "z": -54.601635 + }, + "screenPosition": { + "x": 0.56297094, + "y": 0.40976703 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.459282, + "y": 127.19748, + "z": -52.952198 + }, + "screenPosition": { + "x": 0.5275056, + "y": 0.43391895 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.822617, + "y": 129.37115, + "z": -52.735718 + }, + "screenPosition": { + "x": 0.51685524, + "y": 0.46186817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.611893, + "y": 135.11897, + "z": -81.541985 + }, + "screenPosition": { + "x": 1.0388907, + "y": 0.6510611 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.965515, + "y": 160.33745, + "z": -60.71522 + }, + "screenPosition": { + "x": 0.5509929, + "y": 0.9165013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.716604, + "y": 133.33357, + "z": -55.827934 + }, + "screenPosition": { + "x": 0.5568627, + "y": 0.524084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.35327, + "y": 131.15991, + "z": -56.044415 + }, + "screenPosition": { + "x": 0.56769985, + "y": 0.4961532 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.677279, + "y": 129.09367, + "z": -55.314217 + }, + "screenPosition": { + "x": 0.56185967, + "y": 0.4664304 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.857151, + "y": 127.53019, + "z": -53.887997 + }, + "screenPosition": { + "x": 0.5424244, + "y": 0.44121802 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.448936, + "y": 162.74265, + "z": -53.517635 + }, + "screenPosition": { + "x": 0.43838677, + "y": 0.944794 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.716858, + "y": 133.87132, + "z": -52.689613 + }, + "screenPosition": { + "x": 0.5017635, + "y": 0.520543 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.532236, + "y": 134.22244, + "z": -54.796844 + }, + "screenPosition": { + "x": 0.5363297, + "y": 0.5322364 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.323229, + "y": 133.67549, + "z": -57.34945 + }, + "screenPosition": { + "x": 0.58202535, + "y": 0.53378904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.862385, + "y": 132.77802, + "z": -59.389877 + }, + "screenPosition": { + "x": 0.6207062, + "y": 0.528928 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.248438, + "y": 138.86252, + "z": -68.32164 + }, + "screenPosition": { + "x": 0.7609472, + "y": 0.6434492 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.32643, + "y": 164.56163, + "z": -56.31504 + }, + "screenPosition": { + "x": 0.49256766, + "y": 0.9853283 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.619957, + "y": 125.115265, + "z": -57.430782 + }, + "screenPosition": { + "x": 0.61197305, + "y": 0.41999865 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.12231, + "y": 138.78539, + "z": -83.56592 + }, + "screenPosition": { + "x": 1.0690991, + "y": 0.7120512 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.620632, + "y": 162.088, + "z": -55.091736 + }, + "screenPosition": { + "x": 0.46626997, + "y": 0.93605447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.157574, + "y": 141.83604, + "z": -69.19218 + }, + "screenPosition": { + "x": 0.76632655, + "y": 0.6870386 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.441975, + "y": 166.09775, + "z": -54.762154 + }, + "screenPosition": { + "x": 0.46926466, + "y": 1.0085148 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.117218, + "y": 163.05226, + "z": -56.216175 + }, + "screenPosition": { + "x": 0.48680788, + "y": 0.9579624 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.512363, + "y": 141.82744, + "z": -70.201515 + }, + "screenPosition": { + "x": 0.7855706, + "y": 0.6907324 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.1131, + "y": 134.62833, + "z": -81.11938 + }, + "screenPosition": { + "x": 1.0316571, + "y": 0.642041 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.117218, + "y": 163.05226, + "z": -56.216175 + }, + "screenPosition": { + "x": 0.48680788, + "y": 0.9579624 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.328228, + "y": 135.42561, + "z": -53.530117 + }, + "screenPosition": { + "x": 0.51099485, + "y": 0.54360026 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.504347, + "y": 137.76073, + "z": -52.691154 + }, + "screenPosition": { + "x": 0.4895301, + "y": 0.5709391 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.50057, + "y": 144.61928, + "z": -65.737946 + }, + "screenPosition": { + "x": 0.6901044, + "y": 0.71172273 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.712578, + "y": 167.02795, + "z": -53.6915 + }, + "screenPosition": { + "x": 0.45851913, + "y": 1.0168813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.106962, + "y": 141.46347, + "z": -57.938244 + }, + "screenPosition": { + "x": 0.56199586, + "y": 0.6385066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.4005, + "y": 140.55113, + "z": -84.6051 + }, + "screenPosition": { + "x": 1.0850941, + "y": 0.74184287 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.22097, + "y": 133.73932, + "z": -59.85441 + }, + "screenPosition": { + "x": 0.6256582, + "y": 0.5433339 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.12557, + "y": 131.16972, + "z": -58.22518 + }, + "screenPosition": { + "x": 0.6056291, + "y": 0.5035567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.64154, + "y": 130.1544, + "z": -57.436462 + }, + "screenPosition": { + "x": 0.59521085, + "y": 0.48742077 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -23.134071, + "y": 128.48349, + "z": -56.956917 + }, + "screenPosition": { + "x": 0.59239244, + "y": 0.4636041 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.68654, + "y": 138.80911, + "z": -69.59251 + }, + "screenPosition": { + "x": 0.78535813, + "y": 0.64751446 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -20.951815, + "y": 125.526566, + "z": -52.472652 + }, + "screenPosition": { + "x": 0.52470833, + "y": 0.41037303 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -21.969599, + "y": 129.59583, + "z": -53.02314 + }, + "screenPosition": { + "x": 0.52101344, + "y": 0.46573222 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.492912, + "y": 129.98254, + "z": -54.283127 + }, + "screenPosition": { + "x": 0.5412475, + "y": 0.47485772 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -22.999432, + "y": 131.41098, + "z": -54.898872 + }, + "screenPosition": { + "x": 0.54716474, + "y": 0.49568135 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.41941, + "y": 145.68678, + "z": -62.065693 + }, + "screenPosition": { + "x": 0.6161895, + "y": 0.7123288 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.258228, + "y": 146.69351, + "z": -63.863747 + }, + "screenPosition": { + "x": 0.646625, + "y": 0.7327616 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.241182, + "y": 147.19746, + "z": -66.357834 + }, + "screenPosition": { + "x": 0.6923201, + "y": 0.74892324 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.780338, + "y": 146.3, + "z": -68.39826 + }, + "screenPosition": { + "x": 0.7344422, + "y": 0.74452347 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.04422, + "y": 144.39642, + "z": -70.23569 + }, + "screenPosition": { + "x": 0.7765529, + "y": 0.72568154 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.014135, + "y": 142.04352, + "z": -71.49827 + }, + "screenPosition": { + "x": 0.809442, + "y": 0.69855416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.629261, + "y": 139.69919, + "z": -71.75152 + }, + "screenPosition": { + "x": 0.82308275, + "y": 0.6677375 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.328903, + "y": 138.09029, + "z": -68.99177 + }, + "screenPosition": { + "x": 0.776635, + "y": 0.6355045 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.772953, + "y": 140.02948, + "z": -66.307106 + }, + "screenPosition": { + "x": 0.71834284, + "y": 0.65162325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.264578, + "y": 142.98457, + "z": -66.00621 + }, + "screenPosition": { + "x": 0.70136255, + "y": 0.6905787 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.274769, + "y": 145.11404, + "z": -67.64631 + }, + "screenPosition": { + "x": 0.7245662, + "y": 0.72563297 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.968502, + "y": 146.38103, + "z": -68.884544 + }, + "screenPosition": { + "x": 0.74336654, + "y": 0.7474802 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.785782, + "y": 147.2171, + "z": -70.71937 + }, + "screenPosition": { + "x": 0.77514416, + "y": 0.7657389 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.545086, + "y": 149.23853, + "z": -71.71109 + }, + "screenPosition": { + "x": 0.7864132, + "y": 0.79688114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.198586, + "y": 150.89163, + "z": -72.61426 + }, + "screenPosition": { + "x": 0.7973828, + "y": 0.822697 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.80996, + "y": 152.4459, + "z": -73.454765 + }, + "screenPosition": { + "x": 0.80765164, + "y": 0.8466319 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.433167, + "y": 156.07684, + "z": -78.80129 + }, + "screenPosition": { + "x": 0.8956325, + "y": 0.91633403 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.251698, + "y": 134.8198, + "z": -81.232056 + }, + "screenPosition": { + "x": 1.0333128, + "y": 0.6452421 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.935844, + "y": 151.6669, + "z": -79.919395 + }, + "screenPosition": { + "x": 0.9479703, + "y": 0.8590076 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.586964, + "y": 148.7996, + "z": -74.91208 + }, + "screenPosition": { + "x": 0.8489975, + "y": 0.8029976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.46152, + "y": 148.74557, + "z": -74.58789 + }, + "screenPosition": { + "x": 0.8430251, + "y": 0.80105996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.493504, + "y": 151.58345, + "z": -73.052895 + }, + "screenPosition": { + "x": 0.8032223, + "y": 0.83351326 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.572067, + "y": 150.32626, + "z": -73.99543 + }, + "screenPosition": { + "x": 0.82579964, + "y": 0.820248 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.508186, + "y": 154.38753, + "z": -77.150314 + }, + "screenPosition": { + "x": 0.8705654, + "y": 0.8872043 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.78849, + "y": 165.33292, + "z": -60.513496 + }, + "screenPosition": { + "x": 0.56993484, + "y": 1.009466 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.099033, + "y": 168.66066, + "z": -53.757744 + }, + "screenPosition": { + "x": 0.45836774, + "y": 1.051675 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.099033, + "y": 168.66066, + "z": -53.757744 + }, + "screenPosition": { + "x": 0.45836774, + "y": 1.051675 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.146667, + "y": 142.96182, + "z": -77.00949 + }, + "screenPosition": { + "x": 0.91088426, + "y": 0.7318084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.225487, + "y": 142.24239, + "z": -74.813705 + }, + "screenPosition": { + "x": 0.87179726, + "y": 0.71376795 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.392363, + "y": 142.69052, + "z": -72.19843 + }, + "screenPosition": { + "x": 0.82036006, + "y": 0.70993197 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.61251, + "y": 145.6094, + "z": -71.14973 + }, + "screenPosition": { + "x": 0.789386, + "y": 0.7455728 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.64519, + "y": 148.152, + "z": -72.61686 + }, + "screenPosition": { + "x": 0.80774254, + "y": 0.78557366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.435234, + "y": 147.36256, + "z": -75.305664 + }, + "screenPosition": { + "x": 0.8618921, + "y": 0.7850241 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.741245, + "y": 145.55782, + "z": -77.20576 + }, + "screenPosition": { + "x": 0.90485024, + "y": 0.76773554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.188797, + "y": 143.06065, + "z": -77.07215 + }, + "screenPosition": { + "x": 0.9117045, + "y": 0.73337257 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.343334, + "y": 140.35661, + "z": -76.22751 + }, + "screenPosition": { + "x": 0.9058044, + "y": 0.6935454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.420252, + "y": 139.15224, + "z": -74.30412 + }, + "screenPosition": { + "x": 0.8737273, + "y": 0.6699603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.608671, + "y": 139.77101, + "z": -71.652084 + }, + "screenPosition": { + "x": 0.8209247, + "y": 0.66833156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.744556, + "y": 142.49225, + "z": -70.47806 + }, + "screenPosition": { + "x": 0.78837365, + "y": 0.700751 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.733208, + "y": 144.45105, + "z": -72.15493 + }, + "screenPosition": { + "x": 0.8128782, + "y": 0.7336672 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.570126, + "y": 144.97282, + "z": -74.22539 + }, + "screenPosition": { + "x": 0.8503236, + "y": 0.7485554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.084896, + "y": 143.17728, + "z": -76.71119 + }, + "screenPosition": { + "x": 0.90439576, + "y": 0.73358905 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.117218, + "y": 163.05226, + "z": -56.216175 + }, + "screenPosition": { + "x": 0.48680788, + "y": 0.9579624 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.512531, + "y": 132.6282, + "z": -66.978294 + }, + "screenPosition": { + "x": 0.75884014, + "y": 0.55387783 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.881266, + "y": 130.85046, + "z": -69.040474 + }, + "screenPosition": { + "x": 0.8047951, + "y": 0.5375751 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.265884, + "y": 132.65704, + "z": -71.92555 + }, + "screenPosition": { + "x": 0.8528975, + "y": 0.5729449 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.611477, + "y": 135.62994, + "z": -71.201035 + }, + "screenPosition": { + "x": 0.82791895, + "y": 0.6105046 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.102194, + "y": 143.21107, + "z": -71.07879 + }, + "screenPosition": { + "x": 0.7970615, + "y": 0.71279794 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.076857, + "y": 142.07053, + "z": -71.66036 + }, + "screenPosition": { + "x": 0.8124235, + "y": 0.6995344 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.712578, + "y": 167.02795, + "z": -53.6915 + }, + "screenPosition": { + "x": 0.45851913, + "y": 1.0168813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.045612, + "y": 143.80588, + "z": -76.23992 + }, + "screenPosition": { + "x": 0.89306515, + "y": 0.7402835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.011078, + "y": 145.64684, + "z": -75.08765 + }, + "screenPosition": { + "x": 0.8641993, + "y": 0.7609461 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.725655, + "y": 147.37976, + "z": -73.286995 + }, + "screenPosition": { + "x": 0.823404, + "y": 0.7776365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.081646, + "y": 148.15138, + "z": -71.021805 + }, + "screenPosition": { + "x": 0.77738464, + "y": 0.77954394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.268166, + "y": 148.28522, + "z": -68.64217 + }, + "screenPosition": { + "x": 0.7315871, + "y": 0.77237463 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.428398, + "y": 147.03603, + "z": -66.980316 + }, + "screenPosition": { + "x": 0.7046566, + "y": 0.7491694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.565191, + "y": 145.13124, + "z": -65.62763 + }, + "screenPosition": { + "x": 0.68618953, + "y": 0.71818435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.722574, + "y": 143.15462, + "z": -64.37438 + }, + "screenPosition": { + "x": 0.6697006, + "y": 0.6867089 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.999409, + "y": 134.37094, + "z": -67.358406 + }, + "screenPosition": { + "x": 0.75953907, + "y": 0.5789368 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.26519, + "y": 132.95232, + "z": -68.92343 + }, + "screenPosition": { + "x": 0.79464406, + "y": 0.5656138 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.53097, + "y": 131.53369, + "z": -70.48845 + }, + "screenPosition": { + "x": 0.82977146, + "y": 0.5522938 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.880062, + "y": 130.07025, + "z": -72.315 + }, + "screenPosition": { + "x": 0.87004536, + "y": 0.5393536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.608332, + "y": 129.49628, + "z": -74.70551 + }, + "screenPosition": { + "x": 0.9177063, + "y": 0.54059845 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.90424, + "y": 135.29906, + "z": -75.05039 + }, + "screenPosition": { + "x": 0.9024328, + "y": 0.62055147 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.28272, + "y": 136.48381, + "z": -72.612236 + }, + "screenPosition": { + "x": 0.85157365, + "y": 0.6274014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.839767, + "y": 138.39507, + "z": -83.336205 + }, + "screenPosition": { + "x": 1.0657916, + "y": 0.70562047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.273523, + "y": 139.46532, + "z": -70.87838 + }, + "screenPosition": { + "x": 0.8073603, + "y": 0.6612607 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.293293, + "y": 161.83513, + "z": -55.607647 + }, + "screenPosition": { + "x": 0.47283626, + "y": 0.93440354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.224915, + "y": 128.46994, + "z": -68.54591 + }, + "screenPosition": { + "x": 0.8043273, + "y": 0.5034344 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.025232, + "y": 139.54695, + "z": -72.959724 + }, + "screenPosition": { + "x": 0.84665257, + "y": 0.67023504 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.669704, + "y": 162.3919, + "z": -62.634655 + }, + "screenPosition": { + "x": 0.5982613, + "y": 0.9642176 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.611893, + "y": 135.11897, + "z": -81.541985 + }, + "screenPosition": { + "x": 1.0388907, + "y": 0.6510611 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -30.18042, + "y": 131.67915, + "z": -75.074745 + }, + "screenPosition": { + "x": 0.9165194, + "y": 0.57157904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.747066, + "y": 132.94493, + "z": -73.12287 + }, + "screenPosition": { + "x": 0.8746039, + "y": 0.58136696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.912994, + "y": 133.15059, + "z": -70.64381 + }, + "screenPosition": { + "x": 0.8266435, + "y": 0.5747957 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.82424, + "y": 132.2783, + "z": -68.06117 + }, + "screenPosition": { + "x": 0.7807684, + "y": 0.5532232 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.88502, + "y": 126.95187, + "z": -68.45322 + }, + "screenPosition": { + "x": 0.80831385, + "y": 0.48255354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.636728, + "y": 127.03351, + "z": -70.53455 + }, + "screenPosition": { + "x": 0.8475849, + "y": 0.49147227 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.305124, + "y": 127.15995, + "z": -72.35437 + }, + "screenPosition": { + "x": 0.88174725, + "y": 0.5000561 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.75907, + "y": 125.82235, + "z": -74.40567 + }, + "screenPosition": { + "x": 0.9258256, + "y": 0.48967 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.53063, + "y": 121.25895, + "z": -73.54188 + }, + "screenPosition": { + "x": 0.9265579, + "y": 0.4245566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.58791, + "y": 120.368866, + "z": -71.38286 + }, + "screenPosition": { + "x": 0.888813, + "y": 0.40434197 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.816559, + "y": 120.60153, + "z": -69.06589 + }, + "screenPosition": { + "x": 0.84383625, + "y": 0.39874873 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.467466, + "y": 122.06497, + "z": -67.23934 + }, + "screenPosition": { + "x": 0.80356234, + "y": 0.4116889 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.93021, + "y": 123.44739, + "z": -64.926506 + }, + "screenPosition": { + "x": 0.75433743, + "y": 0.42169505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.1867, + "y": 140.25577, + "z": -84.43128 + }, + "screenPosition": { + "x": 1.0826178, + "y": 0.73701525 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.1131, + "y": 134.62833, + "z": -81.11938 + }, + "screenPosition": { + "x": 1.0316571, + "y": 0.642041 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.065886, + "y": 130.49936, + "z": -66.93324 + }, + "screenPosition": { + "x": 0.7660215, + "y": 0.5248675 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.8081, + "y": 128.15625, + "z": -70.3766 + }, + "screenPosition": { + "x": 0.8403531, + "y": 0.5060937 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.08523, + "y": 124.77882, + "z": -70.264755 + }, + "screenPosition": { + "x": 0.8509347, + "y": 0.45989358 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.138712, + "y": 122.91884, + "z": -68.65054 + }, + "screenPosition": { + "x": 0.8272097, + "y": 0.42858964 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.228928, + "y": 164.63455, + "z": -53.77702 + }, + "screenPosition": { + "x": 0.44799563, + "y": 0.9794776 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -33.935116, + "y": 160.32603, + "z": -60.54397 + }, + "screenPosition": { + "x": 0.5495181, + "y": 0.9127412 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.080294, + "y": 124.937225, + "z": -61.667 + }, + "screenPosition": { + "x": 0.6883392, + "y": 0.4308535 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -24.50825, + "y": 127.62285, + "z": -61.34021 + }, + "screenPosition": { + "x": 0.67307884, + "y": 0.46629056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.311583, + "y": 130.22806, + "z": -62.122192 + }, + "screenPosition": { + "x": 0.6781381, + "y": 0.5041273 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.12231, + "y": 138.78539, + "z": -83.56592 + }, + "screenPosition": { + "x": 1.0690991, + "y": 0.7120512 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.300928, + "y": 131.89159, + "z": -66.801186 + }, + "screenPosition": { + "x": 0.75827926, + "y": 0.5432391 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.56386, + "y": 129.74553, + "z": -68.77481 + }, + "screenPosition": { + "x": 0.80388355, + "y": 0.52158797 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.675316, + "y": 126.700195, + "z": -68.00371 + }, + "screenPosition": { + "x": 0.8007117, + "y": 0.47745162 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.033237, + "y": 165.13449, + "z": -54.713432 + }, + "screenPosition": { + "x": 0.4658424, + "y": 0.9910907 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.72633, + "y": 139.25603, + "z": -63.78713 + }, + "screenPosition": { + "x": 0.6742514, + "y": 0.6315062 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.629072, + "y": 141.06998, + "z": -62.472755 + }, + "screenPosition": { + "x": 0.6414199, + "y": 0.6512674 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.26863, + "y": 144.49222, + "z": -62.32308 + }, + "screenPosition": { + "x": 0.6257247, + "y": 0.6970596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.611893, + "y": 135.11897, + "z": -81.541985 + }, + "screenPosition": { + "x": 1.0388907, + "y": 0.6510611 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.962345, + "y": 165.45146, + "z": -60.52573 + }, + "screenPosition": { + "x": 0.57088506, + "y": 1.0110999 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.408802, + "y": 166.80989, + "z": -53.86891 + }, + "screenPosition": { + "x": 0.45981455, + "y": 1.014653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.008904, + "y": 136.79568, + "z": -65.99639 + }, + "screenPosition": { + "x": 0.7254943, + "y": 0.6066083 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.84507, + "y": 164.91597, + "z": -56.33825 + }, + "screenPosition": { + "x": 0.49543902, + "y": 0.99029976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.761372, + "y": 138.49057, + "z": -58.66276 + }, + "screenPosition": { + "x": 0.5889237, + "y": 0.6018205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -25.666014, + "y": 140.78947, + "z": -57.075985 + }, + "screenPosition": { + "x": 0.5517743, + "y": 0.6261505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.537512, + "y": 144.33878, + "z": -60.341175 + }, + "screenPosition": { + "x": 0.5884382, + "y": 0.6875475 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.20401, + "y": 143.98027, + "z": -62.433388 + }, + "screenPosition": { + "x": 0.6296105, + "y": 0.6905866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.658903, + "y": 142.88515, + "z": -64.348495 + }, + "screenPosition": { + "x": 0.6701839, + "y": 0.6829729 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.15498, + "y": 141.64638, + "z": -66.46246 + }, + "screenPosition": { + "x": 0.71508306, + "y": 0.6741629 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.270927, + "y": 139.27565, + "z": -68.14867 + }, + "screenPosition": { + "x": 0.7561389, + "y": 0.64838266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.63327, + "y": 136.33835, + "z": -68.02594 + }, + "screenPosition": { + "x": 0.7648184, + "y": 0.60812014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.812193, + "y": 134.5324, + "z": -66.73592 + }, + "screenPosition": { + "x": 0.7471645, + "y": 0.5787848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.701899, + "y": 133.48946, + "z": -64.190056 + }, + "screenPosition": { + "x": 0.7041998, + "y": 0.5553798 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.12231, + "y": 138.78539, + "z": -83.56592 + }, + "screenPosition": { + "x": 1.0690991, + "y": 0.7120512 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.26916, + "y": 164.97884, + "z": -60.476955 + }, + "screenPosition": { + "x": 0.56708634, + "y": 1.0045556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -28.40232, + "y": 141.32227, + "z": -64.51733 + }, + "screenPosition": { + "x": 0.67927915, + "y": 0.66242695 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -29.00135, + "y": 139.72438, + "z": -67.128456 + }, + "screenPosition": { + "x": 0.7349927, + "y": 0.6506265 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.072784, + "y": 132.73442, + "z": -62.84151 + }, + "screenPosition": { + "x": 0.68240833, + "y": 0.5404002 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -26.714893, + "y": 131.47784, + "z": -65.379105 + }, + "screenPosition": { + "x": 0.73307145, + "y": 0.5323786 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.215717, + "y": 131.45145, + "z": -66.81206 + }, + "screenPosition": { + "x": 0.76011753, + "y": 0.5373058 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -27.963627, + "y": 130.56319, + "z": -69.4382 + }, + "screenPosition": { + "x": 0.81343347, + "y": 0.5351748 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -31.800455, + "y": 155.80849, + "z": -53.940975 + }, + "screenPosition": { + "x": 0.4449481, + "y": 0.8335428 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.416727, + "y": 107.08693, + "z": -55.85806 + }, + "screenPosition": { + "x": 0.6455238, + "y": 0.16937767 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.475904, + "y": 106.68179, + "z": -53.42664 + }, + "screenPosition": { + "x": 0.6035267, + "y": 0.15829471 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.850588, + "y": 106.89665, + "z": -51.53329 + }, + "screenPosition": { + "x": 0.56949764, + "y": 0.15704073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.184092, + "y": 107.25516, + "z": -49.441074 + }, + "screenPosition": { + "x": 0.5320117, + "y": 0.15731803 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.707657, + "y": 108.17963, + "z": -47.56274 + }, + "screenPosition": { + "x": 0.49687302, + "y": 0.16568689 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.189092, + "y": 109.00527, + "z": -45.621746 + }, + "screenPosition": { + "x": 0.46149415, + "y": 0.17247762 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.818459, + "y": 110.298065, + "z": -43.831966 + }, + "screenPosition": { + "x": 0.42768332, + "y": 0.18572737 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.532088, + "y": 111.78851, + "z": -42.16751 + }, + "screenPosition": { + "x": 0.3958525, + "y": 0.20172696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.286899, + "y": 113.13532, + "z": -40.701923 + }, + "screenPosition": { + "x": 0.36808777, + "y": 0.21608232 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.893776, + "y": 114.014984, + "z": -39.085117 + }, + "screenPosition": { + "x": 0.33962235, + "y": 0.22383577 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.563375, + "y": 114.92165, + "z": -37.6304 + }, + "screenPosition": { + "x": 0.3139743, + "y": 0.23222086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.171203, + "y": 116.04379, + "z": -35.877396 + }, + "screenPosition": { + "x": 0.28336123, + "y": 0.24258094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -12.758439, + "y": 117.23775, + "z": -34.024952 + }, + "screenPosition": { + "x": 0.25143248, + "y": 0.2534826 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -12.367216, + "y": 118.602356, + "z": -32.135742 + }, + "screenPosition": { + "x": 0.21892966, + "y": 0.26629883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.97463, + "y": 134.43704, + "z": -81.0068 + }, + "screenPosition": { + "x": 1.0299999, + "y": 0.6388388 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-044530/brain-C784BC-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + 0.16555374880897333, + 0.5774613409704747, + 0.7994562876980057, + 0.0, + 0.3387409020620814, + -0.7946193581616292, + 0.5038200838642379, + 0.0, + 0.926200063444968, + 0.18739924044504946, + -0.3271619891661557, + 0.0, + 75.99294065968485, + 155.23351147665662, + -112.51942551984841, + 1.0 + ] + }, + "baseImage": "20190825-044530/base.webp", + "version": 0, + "savedAt": 1.566709073179E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190825-060411-v0.json b/data/mapping/BAAAHS/afik/20190825-060411-v0.json new file mode 100644 index 0000000000..4758702acb --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190825-060411-v0.json @@ -0,0 +1,3987 @@ +{ + "startedAt": 1.566713051517E12, + "surfaces": [ + { + "brainId": "CAD7F8", + "panelName": "F1D", + "pixels": [ + { + "modelPosition": { + "x": -39.677597, + "y": 162.19856, + "z": -78.693985 + }, + "screenPosition": { + "x": 0.9447395, + "y": 0.74145097 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.300198, + "y": 163.35487, + "z": -77.90018 + }, + "screenPosition": { + "x": 0.90674615, + "y": 0.7528091 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.277336, + "y": 164.14268, + "z": -75.7612 + }, + "screenPosition": { + "x": 0.86601853, + "y": 0.7273014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -39.415882, + "y": 162.34341, + "z": -72.80538 + }, + "screenPosition": { + "x": 0.8861635, + "y": 0.6224506 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.199265, + "y": 161.42224, + "z": -74.38433 + }, + "screenPosition": { + "x": 0.9252533, + "y": 0.6330863 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.076054, + "y": 161.75645, + "z": -76.37032 + }, + "screenPosition": { + "x": 0.95626384, + "y": 0.66165245 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.528854, + "y": 161.92644, + "z": -78.921265 + }, + "screenPosition": { + "x": 0.97545326, + "y": 0.7188168 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.549152, + "y": 163.50655, + "z": -78.24579 + }, + "screenPosition": { + "x": 0.9059109, + "y": 0.7636313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.68275, + "y": 164.37729, + "z": -76.54893 + }, + "screenPosition": { + "x": 0.8670726, + "y": 0.74929535 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.336506, + "y": 164.9803, + "z": -73.73922 + }, + "screenPosition": { + "x": 0.82505846, + "y": 0.705428 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.614426, + "y": 163.95572, + "z": -70.902695 + }, + "screenPosition": { + "x": 0.825848, + "y": 0.6217234 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.860302, + "y": 162.03592, + "z": -71.47166 + }, + "screenPosition": { + "x": 0.8819716, + "y": 0.5872849 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.208942, + "y": 161.44055, + "z": -74.17231 + }, + "screenPosition": { + "x": 0.9228192, + "y": 0.6291158 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.344788, + "y": 162.10149, + "z": -76.31326 + }, + "screenPosition": { + "x": 0.9252003, + "y": 0.6895848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.94922, + "y": 163.1162, + "z": -77.864174 + }, + "screenPosition": { + "x": 0.91270643, + "y": 0.7462896 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.810894, + "y": 164.4057, + "z": -77.62846 + }, + "screenPosition": { + "x": 0.87639505, + "y": 0.7724857 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.368237, + "y": 166.99507, + "z": -74.90184 + }, + "screenPosition": { + "x": 0.782501, + "y": 0.77817804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.41516, + "y": 167.197, + "z": -71.81945 + }, + "screenPosition": { + "x": 0.7485267, + "y": 0.71892273 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.110954, + "y": 166.43306, + "z": -69.453224 + }, + "screenPosition": { + "x": 0.7467823, + "y": 0.6512837 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.608772, + "y": 164.77824, + "z": -68.34744 + }, + "screenPosition": { + "x": 0.78033334, + "y": 0.58839625 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.30368, + "y": 163.17557, + "z": -68.749115 + }, + "screenPosition": { + "x": 0.8264823, + "y": 0.5581489 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.7028, + "y": 162.56784, + "z": -72.30265 + }, + "screenPosition": { + "x": 0.8756029, + "y": 0.6173934 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.36741, + "y": 164.3154, + "z": -73.74643 + }, + "screenPosition": { + "x": 0.8427329, + "y": 0.6895515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.293026, + "y": 165.73042, + "z": -72.02778 + }, + "screenPosition": { + "x": 0.78929937, + "y": 0.687906 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.85752, + "y": 166.27242, + "z": -69.21478 + }, + "screenPosition": { + "x": 0.74882203, + "y": 0.6424515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.181805, + "y": 165.95325, + "z": -66.59709 + }, + "screenPosition": { + "x": 0.73296267, + "y": 0.5803028 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.594376, + "y": 164.96718, + "z": -64.737595 + }, + "screenPosition": { + "x": 0.741806, + "y": 0.5178517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.790222, + "y": 163.05435, + "z": -64.55732 + }, + "screenPosition": { + "x": 0.7907786, + "y": 0.46804047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.71247, + "y": 162.18118, + "z": -66.99351 + }, + "screenPosition": { + "x": 0.83653533, + "y": 0.49762756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.142925, + "y": 163.08379, + "z": -68.41399 + }, + "screenPosition": { + "x": 0.8258131, + "y": 0.54895073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.691612, + "y": 164.82874, + "z": -68.46213 + }, + "screenPosition": { + "x": 0.78006244, + "y": 0.5919967 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.679943, + "y": 164.69789, + "z": -70.69272 + }, + "screenPosition": { + "x": 0.8042438, + "y": 0.63524467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.893658, + "y": 164.05772, + "z": -72.52698 + }, + "screenPosition": { + "x": 0.83823156, + "y": 0.6579721 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.01906, + "y": 163.35742, + "z": -74.353745 + }, + "screenPosition": { + "x": 0.8737424, + "y": 0.6790941 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.467587, + "y": 164.90514, + "z": -76.73602 + }, + "screenPosition": { + "x": 0.85488087, + "y": 0.76595855 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.683136, + "y": 165.82567, + "z": -75.15531 + }, + "screenPosition": { + "x": 0.81582296, + "y": 0.7552637 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.842754, + "y": 166.74915, + "z": -72.824905 + }, + "screenPosition": { + "x": 0.7697247, + "y": 0.72904384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.38822, + "y": 166.02347, + "z": -67.89212 + }, + "screenPosition": { + "x": 0.74313045, + "y": 0.60893553 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.405582, + "y": 163.2624, + "z": -68.44084 + }, + "screenPosition": { + "x": 0.82134414, + "y": 0.5537984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.349293, + "y": 165.83899, + "z": -70.757195 + }, + "screenPosition": { + "x": 0.7746244, + "y": 0.6640909 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.705513, + "y": 166.81398, + "z": -69.93915 + }, + "screenPosition": { + "x": 0.7412097, + "y": 0.6705707 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.504635, + "y": 168.71167, + "z": -70.33175 + }, + "screenPosition": { + "x": 0.69459945, + "y": 0.72448325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.309914, + "y": 169.50494, + "z": -65.95367 + }, + "screenPosition": { + "x": 0.63293177, + "y": 0.65252745 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.560925, + "y": 167.08386, + "z": -63.238323 + }, + "screenPosition": { + "x": 0.6718283, + "y": 0.5376829 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -42.849106, + "y": 165.45537, + "z": -59.04478 + }, + "screenPosition": { + "x": 0.6760076, + "y": 0.41119167 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.602753, + "y": 166.76443, + "z": -57.109024 + }, + "screenPosition": { + "x": 0.6233637, + "y": 0.40247568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -47.788765, + "y": 169.09402, + "z": -54.47626 + }, + "screenPosition": { + "x": 0.537221, + "y": 0.40385887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.25861, + "y": 170.18661, + "z": -52.937656 + }, + "screenPosition": { + "x": 0.49399808, + "y": 0.398187 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.773735, + "y": 168.55475, + "z": -51.6308 + }, + "screenPosition": { + "x": 0.52507573, + "y": 0.3316661 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.621502, + "y": 168.25949, + "z": -55.096428 + }, + "screenPosition": { + "x": 0.56508034, + "y": 0.39664468 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.958595, + "y": 177.17264, + "z": -59.306896 + }, + "screenPosition": { + "x": 0.36814788, + "y": 0.69907683 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.594814, + "y": 177.75667, + "z": -56.623547 + }, + "screenPosition": { + "x": 0.32776096, + "y": 0.6573326 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -56.56614, + "y": 175.1215, + "z": -54.31344 + }, + "screenPosition": { + "x": 0.37609062, + "y": 0.5457576 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.44394, + "y": 174.37573, + "z": -53.88282 + }, + "screenPosition": { + "x": 0.39184037, + "y": 0.5188237 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.706352, + "y": 173.20564, + "z": -53.495205 + }, + "screenPosition": { + "x": 0.41922662, + "y": 0.4825564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.400364, + "y": 171.5909, + "z": -54.10481 + }, + "screenPosition": { + "x": 0.46797058, + "y": 0.45652217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -52.09837, + "y": 171.61145, + "z": -62.42199 + }, + "screenPosition": { + "x": 0.5443485, + "y": 0.6298333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.31518, + "y": 168.39355, + "z": -61.298885 + }, + "screenPosition": { + "x": 0.61913383, + "y": 0.5289053 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -47.4625, + "y": 168.79074, + "z": -55.92113 + }, + "screenPosition": { + "x": 0.55886316, + "y": 0.4268136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.530483, + "y": 170.27272, + "z": -54.758945 + }, + "screenPosition": { + "x": 0.5086323, + "y": 0.43815085 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.286022, + "y": 171.47826, + "z": -54.726387 + }, + "screenPosition": { + "x": 0.47640505, + "y": 0.46653178 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.220757, + "y": 172.81148, + "z": -54.6065 + }, + "screenPosition": { + "x": 0.44036528, + "y": 0.49634862 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.714096, + "y": 174.45483, + "z": -55.8102 + }, + "screenPosition": { + "x": 0.40764585, + "y": 0.56082535 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.790703, + "y": 173.64644, + "z": -58.99212 + }, + "screenPosition": { + "x": 0.4586046, + "y": 0.6075331 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.58725, + "y": 172.12462, + "z": -59.190727 + }, + "screenPosition": { + "x": 0.5007494, + "y": 0.57498306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.700268, + "y": 170.88792, + "z": -58.152637 + }, + "screenPosition": { + "x": 0.5238625, + "y": 0.5235804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.647034, + "y": 170.16582, + "z": -58.151104 + }, + "screenPosition": { + "x": 0.5429668, + "y": 0.50614095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.811844, + "y": 169.02832, + "z": -55.956676 + }, + "screenPosition": { + "x": 0.55273885, + "y": 0.43310156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.839222, + "y": 169.19226, + "z": -53.32075 + }, + "screenPosition": { + "x": 0.5238881, + "y": 0.38218874 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.9841, + "y": 170.71484, + "z": -52.37868 + }, + "screenPosition": { + "x": 0.47481796, + "y": 0.39929137 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.584732, + "y": 172.46028, + "z": -53.064777 + }, + "screenPosition": { + "x": 0.4349679, + "y": 0.4556358 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.44268, + "y": 172.91008, + "z": -55.57915 + }, + "screenPosition": { + "x": 0.44640768, + "y": 0.5187843 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.26616, + "y": 172.67368, + "z": -57.67396 + }, + "screenPosition": { + "x": 0.47212312, + "y": 0.55666417 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.533493, + "y": 172.01816, + "z": -60.454777 + }, + "screenPosition": { + "x": 0.5154776, + "y": 0.5987434 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.389584, + "y": 170.50185, + "z": -61.294716 + }, + "screenPosition": { + "x": 0.5632636, + "y": 0.5796369 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.922695, + "y": 168.80087, + "z": -61.4667 + }, + "screenPosition": { + "x": 0.60993403, + "y": 0.5422335 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.106243, + "y": 167.8102, + "z": -56.839428 + }, + "screenPosition": { + "x": 0.59331024, + "y": 0.4222668 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.644585, + "y": 168.30426, + "z": -54.57098 + }, + "screenPosition": { + "x": 0.55917674, + "y": 0.3870005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.04909, + "y": 166.56816, + "z": -53.779377 + }, + "screenPosition": { + "x": 0.597638, + "y": 0.32847857 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.354736, + "y": 166.61322, + "z": -56.766785 + }, + "screenPosition": { + "x": 0.6242488, + "y": 0.39182186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.828106, + "y": 168.33022, + "z": -56.38468 + }, + "screenPosition": { + "x": 0.575337, + "y": 0.4253448 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.96839, + "y": 169.00093, + "z": -58.403046 + }, + "screenPosition": { + "x": 0.57615507, + "y": 0.48330358 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.977787, + "y": 168.90828, + "z": -60.20215 + }, + "screenPosition": { + "x": 0.5953457, + "y": 0.51851904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.179726, + "y": 169.58574, + "z": -62.86583 + }, + "screenPosition": { + "x": 0.60211504, + "y": 0.5902388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.543777, + "y": 171.08253, + "z": -65.121025 + }, + "screenPosition": { + "x": 0.5834217, + "y": 0.6732321 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.79827, + "y": 172.08743, + "z": -62.493362 + }, + "screenPosition": { + "x": 0.53259516, + "y": 0.6427914 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -55.110424, + "y": 173.93956, + "z": -57.650326 + }, + "screenPosition": { + "x": 0.43838066, + "y": 0.5866853 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -56.801495, + "y": 174.78072, + "z": -63.431366 + }, + "screenPosition": { + "x": 0.46979496, + "y": 0.7272232 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.732044, + "y": 173.4142, + "z": -62.47872 + }, + "screenPosition": { + "x": 0.4971705, + "y": 0.6744625 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.249126, + "y": 172.41154, + "z": -62.221592 + }, + "screenPosition": { + "x": 0.52149266, + "y": 0.6449483 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -54.106445, + "y": 172.62654, + "z": -68.99167 + }, + "screenPosition": { + "x": 0.578481, + "y": 0.7909695 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.44394, + "y": 171.38474, + "z": -70.84101 + }, + "screenPosition": { + "x": 0.6285414, + "y": 0.7995089 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -49.20188, + "y": 169.06868, + "z": -72.53027 + }, + "screenPosition": { + "x": 0.7055633, + "y": 0.77882445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.56728, + "y": 167.27116, + "z": -72.36699 + }, + "screenPosition": { + "x": 0.75164956, + "y": 0.7320825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.936512, + "y": 167.04129, + "z": -68.68765 + }, + "screenPosition": { + "x": 0.72356486, + "y": 0.65001863 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.40241, + "y": 168.84688, + "z": -66.603745 + }, + "screenPosition": { + "x": 0.65639585, + "y": 0.6501891 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.512897, + "y": 170.29384, + "z": -66.60707 + }, + "screenPosition": { + "x": 0.61810905, + "y": 0.6851354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.726936, + "y": 171.71765, + "z": -68.31957 + }, + "screenPosition": { + "x": 0.5964374, + "y": 0.754991 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.767647, + "y": 171.56973, + "z": -71.512184 + }, + "screenPosition": { + "x": 0.6299418, + "y": 0.8178407 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -53.83329, + "y": 172.65706, + "z": -65.03658 + }, + "screenPosition": { + "x": 0.5409411, + "y": 0.7094279 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.967995, + "y": 173.53966, + "z": -63.138397 + }, + "screenPosition": { + "x": 0.49993977, + "y": 0.6912139 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.696594, + "y": 174.80272, + "z": -61.725906 + }, + "screenPosition": { + "x": 0.45337352, + "y": 0.6922748 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.591984, + "y": 174.94131, + "z": -57.90683 + }, + "screenPosition": { + "x": 0.4142346, + "y": 0.6161676 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.582767, + "y": 173.69125, + "z": -55.58953 + }, + "screenPosition": { + "x": 0.4258174, + "y": 0.53782946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.123455, + "y": 172.00127, + "z": -55.656136 + }, + "screenPosition": { + "x": 0.47118962, + "y": 0.49847978 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.23485, + "y": 170.64706, + "z": -56.731403 + }, + "screenPosition": { + "x": 0.5170376, + "y": 0.48820692 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.979885, + "y": 169.75285, + "z": -57.3433 + }, + "screenPosition": { + "x": 0.5464006, + "y": 0.47938213 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.370445, + "y": 168.50108, + "z": -60.034443 + }, + "screenPosition": { + "x": 0.604674, + "y": 0.50531024 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.25223, + "y": 170.34428, + "z": -62.445557 + }, + "screenPosition": { + "x": 0.5781242, + "y": 0.59977984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.22178, + "y": 171.74203, + "z": -61.587376 + }, + "screenPosition": { + "x": 0.5333307, + "y": 0.61564183 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -52.982758, + "y": 171.99686, + "z": -66.43485 + }, + "screenPosition": { + "x": 0.5715779, + "y": 0.7225314 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.663277, + "y": 173.04617, + "z": -68.305046 + }, + "screenPosition": { + "x": 0.5611821, + "y": 0.7866621 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.83626, + "y": 174.50052, + "z": -68.95198 + }, + "screenPosition": { + "x": 0.5286065, + "y": 0.8352137 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.803463, + "y": 175.89098, + "z": -68.1971 + }, + "screenPosition": { + "x": 0.48469818, + "y": 0.8530917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.620613, + "y": 177.21445, + "z": -66.79034 + }, + "screenPosition": { + "x": 0.43676078, + "y": 0.8556168 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.460926, + "y": 177.24603, + "z": -64.228584 + }, + "screenPosition": { + "x": 0.41204417, + "y": 0.8031707 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.787895, + "y": 176.21329, + "z": -62.150875 + }, + "screenPosition": { + "x": 0.41996595, + "y": 0.73511565 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.957073, + "y": 174.2473, + "z": -62.603638 + }, + "screenPosition": { + "x": 0.47623357, + "y": 0.6971465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.835136, + "y": 173.27412, + "z": -66.30569 + }, + "screenPosition": { + "x": 0.536447, + "y": 0.7506733 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.512085, + "y": 174.31516, + "z": -68.28156 + }, + "screenPosition": { + "x": 0.5271685, + "y": 0.81689966 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.6586, + "y": 175.83339, + "z": -67.43908 + }, + "screenPosition": { + "x": 0.47913882, + "y": 0.83596873 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.4196, + "y": 177.04266, + "z": -67.40663 + }, + "screenPosition": { + "x": 0.4473691, + "y": 0.86404806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.402695, + "y": 178.46727, + "z": -66.22952 + }, + "screenPosition": { + "x": 0.3988982, + "y": 0.8738172 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.275772, + "y": 179.17783, + "z": -64.19773 + }, + "screenPosition": { + "x": 0.36046925, + "y": 0.8491533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.048252, + "y": 179.19226, + "z": -61.102863 + }, + "screenPosition": { + "x": 0.3322499, + "y": 0.78481805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.120617, + "y": 177.26535, + "z": -59.640705 + }, + "screenPosition": { + "x": 0.36880305, + "y": 0.70825404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.580265, + "y": 175.41534, + "z": -61.604225 + }, + "screenPosition": { + "x": 0.43629414, + "y": 0.7044579 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.049175, + "y": 175.54166, + "z": -65.14874 + }, + "screenPosition": { + "x": 0.4655937, + "y": 0.781291 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.63535, + "y": 176.51518, + "z": -67.22039 + }, + "screenPosition": { + "x": 0.45905292, + "y": 0.84785306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.855743, + "y": 178.0661, + "z": -66.70421 + }, + "screenPosition": { + "x": 0.41333902, + "y": 0.87439716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.846638, + "y": 179.50766, + "z": -65.316185 + }, + "screenPosition": { + "x": 0.3624528, + "y": 0.88017285 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -64.527, + "y": 180.06377, + "z": -63.689457 + }, + "screenPosition": { + "x": 0.33260262, + "y": 0.8597742 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -62.051075, + "y": 178.70631, + "z": -57.51128 + }, + "screenPosition": { + "x": 0.31126848, + "y": 0.6986392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.422977, + "y": 178.74954, + "z": -61.356705 + }, + "screenPosition": { + "x": 0.34551075, + "y": 0.7797002 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.13448, + "y": 179.12843, + "z": -63.335533 + }, + "screenPosition": { + "x": 0.35385212, + "y": 0.8299884 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.504707, + "y": 179.2868, + "z": -65.069214 + }, + "screenPosition": { + "x": 0.36574957, + "y": 0.86986756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -67.62102, + "y": 182.20876, + "z": -63.263245 + }, + "screenPosition": { + "x": 0.27152607, + "y": 0.9027706 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -68.72107, + "y": 183.02687, + "z": -62.104374 + }, + "screenPosition": { + "x": 0.3992536, + "y": 0.82330835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -69.47665, + "y": 183.74466, + "z": -58.47832 + }, + "screenPosition": { + "x": 0.37099373, + "y": 0.77694535 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -68.38451, + "y": 183.06593, + "z": -57.2047 + }, + "screenPosition": { + "x": 0.35931283, + "y": 0.75778174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -65.16581, + "y": 180.90022, + "z": -56.45476 + }, + "screenPosition": { + "x": 0.24294649, + "y": 0.7295935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -64.91115, + "y": 180.49414, + "z": -60.65765 + }, + "screenPosition": { + "x": 0.2927605, + "y": 0.8072281 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -67.53661, + "y": 182.27966, + "z": -60.925095 + }, + "screenPosition": { + "x": 0.2479337, + "y": 0.85583913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -69.44405, + "y": 183.6759, + "z": -59.32086 + }, + "screenPosition": { + "x": 0.3777818, + "y": 0.7880819 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -70.54269, + "y": 184.49294, + "z": -58.163986 + }, + "screenPosition": { + "x": 0.36795264, + "y": 0.7801332 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -73.059975, + "y": 186.17578, + "z": -58.94872 + }, + "screenPosition": { + "x": 0.43059975, + "y": 0.7821588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -72.080605, + "y": 185.35825, + "z": -61.59968 + }, + "screenPosition": { + "x": 0.44440606, + "y": 0.808887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -68.06999, + "y": 182.65405, + "z": -60.76777 + }, + "screenPosition": { + "x": 0.3687729, + "y": 0.8114279 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -69.48072, + "y": 183.75325, + "z": -58.373028 + }, + "screenPosition": { + "x": 0.3701414, + "y": 0.775547 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -70.916855, + "y": 184.78232, + "z": -57.567966 + }, + "screenPosition": { + "x": 0.37085652, + "y": 0.77270615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -59.53614, + "y": 177.14136, + "z": -54.61538 + }, + "screenPosition": { + "x": 0.3256299, + "y": 0.60074717 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.339767, + "y": 176.24632, + "z": -55.971684 + }, + "screenPosition": { + "x": 0.36170372, + "y": 0.60736656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.907627, + "y": 175.84187, + "z": -57.935055 + }, + "screenPosition": { + "x": 0.39064834, + "y": 0.6384618 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -58.622322, + "y": 175.99565, + "z": -64.041016 + }, + "screenPosition": { + "x": 0.44328323, + "y": 0.7691904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.584538, + "y": 177.26003, + "z": -65.51355 + }, + "screenPosition": { + "x": 0.42347637, + "y": 0.8302996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.69098, + "y": 178.69838, + "z": -65.622475 + }, + "screenPosition": { + "x": 0.38678393, + "y": 0.8670031 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -64.264305, + "y": 179.88512, + "z": -63.662666 + }, + "screenPosition": { + "x": 0.33676973, + "y": 0.8550708 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -65.06526, + "y": 180.56981, + "z": -61.202522 + }, + "screenPosition": { + "x": 0.2957901, + "y": 0.82039636 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.07071, + "y": 179.35901, + "z": -58.3549 + }, + "screenPosition": { + "x": 0.30140787, + "y": 0.73197234 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.709686, + "y": 177.75333, + "z": -58.11458 + }, + "screenPosition": { + "x": 0.3416972, + "y": 0.68826973 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.778385, + "y": 176.31175, + "z": -60.244534 + }, + "screenPosition": { + "x": 0.39993656, + "y": 0.69778854 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.560818, + "y": 175.98885, + "z": -63.398884 + }, + "screenPosition": { + "x": 0.43759674, + "y": 0.7556342 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.514133, + "y": 177.2355, + "z": -65.08217 + }, + "screenPosition": { + "x": 0.42013687, + "y": 0.8207253 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.400097, + "y": 178.5823, + "z": -64.108406 + }, + "screenPosition": { + "x": 0.37561038, + "y": 0.83284163 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.414486, + "y": 178.7321, + "z": -61.567566 + }, + "screenPosition": { + "x": 0.3478458, + "y": 0.78369457 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.549374, + "y": 177.54529, + "z": -59.895943 + }, + "screenPosition": { + "x": 0.36406475, + "y": 0.72025144 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.590435, + "y": 176.16646, + "z": -60.54283 + }, + "screenPosition": { + "x": 0.40630305, + "y": 0.70052963 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.18659, + "y": 175.0893, + "z": -62.623085 + }, + "screenPosition": { + "x": 0.45452294, + "y": 0.7177467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.565018, + "y": 174.53818, + "z": -64.891235 + }, + "screenPosition": { + "x": 0.48995957, + "y": 0.7516722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -57.804665, + "y": 175.16493, + "z": -68.94472 + }, + "screenPosition": { + "x": 0.5108238, + "y": 0.8511783 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.051888, + "y": 176.76921, + "z": -67.793724 + }, + "screenPosition": { + "x": 0.45789635, + "y": 0.8657213 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.680515, + "y": 177.94693, + "z": -66.68632 + }, + "screenPosition": { + "x": 0.41617757, + "y": 0.8712537 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.370354, + "y": 178.52121, + "z": -64.847435 + }, + "screenPosition": { + "x": 0.3838915, + "y": 0.8468421 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.072315, + "y": 179.12115, + "z": -62.69357 + }, + "screenPosition": { + "x": 0.34812686, + "y": 0.816443 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.907104, + "y": 179.1429, + "z": -60.241886 + }, + "screenPosition": { + "x": 0.324857, + "y": 0.76596117 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.942375, + "y": 178.60329, + "z": -58.028645 + }, + "screenPosition": { + "x": 0.31839043, + "y": 0.7069696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.149166, + "y": 178.1744, + "z": -55.94063 + }, + "screenPosition": { + "x": 0.31138584, + "y": 0.65317166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.44016, + "y": 177.06445, + "z": -54.8167 + }, + "screenPosition": { + "x": 0.3293117, + "y": 0.60305965 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.44396, + "y": 175.7243, + "z": -54.297157 + }, + "screenPosition": { + "x": 0.3599761, + "y": 0.5599488 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.775177, + "y": 173.84537, + "z": -55.18679 + }, + "screenPosition": { + "x": 0.41830003, + "y": 0.5332642 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -55.287964, + "y": 173.83308, + "z": -61.79408 + }, + "screenPosition": { + "x": 0.4800946, + "y": 0.6702811 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.74806, + "y": 176.25034, + "z": -60.982227 + }, + "screenPosition": { + "x": 0.4081314, + "y": 0.7116973 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.720425, + "y": 176.42957, + "z": -57.383682 + }, + "screenPosition": { + "x": 0.36996454, + "y": 0.64115727 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.959175, + "y": 175.33066, + "z": -55.408905 + }, + "screenPosition": { + "x": 0.38072535, + "y": 0.57358825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.840427, + "y": 173.86067, + "z": -55.721333 + }, + "screenPosition": { + "x": 0.42262772, + "y": 0.5446762 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -51.123707, + "y": 171.15843, + "z": -58.512928 + }, + "screenPosition": { + "x": 0.5200465, + "y": 0.537596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.88759, + "y": 170.1896, + "z": -60.71428 + }, + "screenPosition": { + "x": 0.5661638, + "y": 0.5600453 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.954567, + "y": 169.98425, + "z": -65.276955 + }, + "screenPosition": { + "x": 0.6139543, + "y": 0.65000284 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.35631, + "y": 171.55331, + "z": -66.68923 + }, + "screenPosition": { + "x": 0.58551896, + "y": 0.7172029 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.734257, + "y": 173.18799, + "z": -66.61372 + }, + "screenPosition": { + "x": 0.541766, + "y": 0.75491196 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.36355, + "y": 174.36612, + "z": -65.506966 + }, + "screenPosition": { + "x": 0.5000509, + "y": 0.76040816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.221554, + "y": 175.15973, + "z": -61.77942 + }, + "screenPosition": { + "x": 0.44471627, + "y": 0.7019372 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.623547, + "y": 173.42787, + "z": -60.879436 + }, + "screenPosition": { + "x": 0.48192036, + "y": 0.6415267 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.291298, + "y": 171.76599, + "z": -62.01802 + }, + "screenPosition": { + "x": 0.5366273, + "y": 0.62516445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.442135, + "y": 170.38007, + "z": -64.160355 + }, + "screenPosition": { + "x": 0.5931257, + "y": 0.636316 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.844135, + "y": 169.26413, + "z": -64.52734 + }, + "screenPosition": { + "x": 0.6260627, + "y": 0.617051 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.444847, + "y": 169.433, + "z": -68.94009 + }, + "screenPosition": { + "x": 0.6625726, + "y": 0.7129196 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.10471, + "y": 171.2828, + "z": -68.4684 + }, + "screenPosition": { + "x": 0.60920584, + "y": 0.7476946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.508183, + "y": 172.35419, + "z": -66.48851 + }, + "screenPosition": { + "x": 0.562583, + "y": 0.7322694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.296432, + "y": 172.3912, + "z": -63.179806 + }, + "screenPosition": { + "x": 0.5307823, + "y": 0.6643891 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.92137, + "y": 171.60187, + "z": -60.3924 + }, + "screenPosition": { + "x": 0.5258631, + "y": 0.587407 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.842903, + "y": 169.48497, + "z": -60.501965 + }, + "screenPosition": { + "x": 0.58282983, + "y": 0.53863466 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -50.350086, + "y": 170.31161, + "z": -64.25697 + }, + "screenPosition": { + "x": 0.59581214, + "y": 0.6366753 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.675755, + "y": 169.54906, + "z": -69.70749 + }, + "screenPosition": { + "x": 0.6666424, + "y": 0.7316657 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.243954, + "y": 171.33069, + "z": -69.3325 + }, + "screenPosition": { + "x": 0.61597955, + "y": 0.7668101 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.10341, + "y": 172.7356, + "z": -66.97381 + }, + "screenPosition": { + "x": 0.5569975, + "y": 0.751543 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.956448, + "y": 172.78754, + "z": -64.20096 + }, + "screenPosition": { + "x": 0.5298771, + "y": 0.6951548 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.567097, + "y": 171.3551, + "z": -60.462116 + }, + "screenPosition": { + "x": 0.5329354, + "y": 0.5828832 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.608566, + "y": 169.24982, + "z": -61.854298 + }, + "screenPosition": { + "x": 0.60163724, + "y": 0.5611096 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.333607, + "y": 168.4294, + "z": -60.877323 + }, + "screenPosition": { + "x": 0.61432546, + "y": 0.5210472 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.43413, + "y": 164.36488, + "z": -61.228577 + }, + "screenPosition": { + "x": 0.72516716, + "y": 0.43033585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.413055, + "y": 166.18063, + "z": -65.34752 + }, + "screenPosition": { + "x": 0.7153367, + "y": 0.55978984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.41856, + "y": 167.0279, + "z": -62.482166 + }, + "screenPosition": { + "x": 0.666337, + "y": 0.5206684 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.453293, + "y": 166.47641, + "z": -60.477867 + }, + "screenPosition": { + "x": 0.662278, + "y": 0.46561515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.87737, + "y": 165.50954, + "z": -58.41316 + }, + "screenPosition": { + "x": 0.66877115, + "y": 0.3995308 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.172947, + "y": 164.4028, + "z": -57.28818 + }, + "screenPosition": { + "x": 0.687637, + "y": 0.34956437 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.630875, + "y": 162.66235, + "z": -57.240677 + }, + "screenPosition": { + "x": 0.7332166, + "y": 0.30633825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.913647, + "y": 161.42465, + "z": -58.334282 + }, + "screenPosition": { + "x": 0.77614766, + "y": 0.29929554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.22437, + "y": 161.48445, + "z": -61.116875 + }, + "screenPosition": { + "x": 0.80040836, + "y": 0.3585827 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.62347, + "y": 162.33093, + "z": -63.166187 + }, + "screenPosition": { + "x": 0.797009, + "y": 0.42170686 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.057426, + "y": 163.2419, + "z": -64.47857 + }, + "screenPosition": { + "x": 0.7850888, + "y": 0.47087714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.055244, + "y": 164.58302, + "z": -65.00069 + }, + "screenPosition": { + "x": 0.7544234, + "y": 0.51408464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.620792, + "y": 165.636, + "z": -65.37269 + }, + "screenPosition": { + "x": 0.72999495, + "y": 0.54719263 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.905445, + "y": 167.20139, + "z": -65.393845 + }, + "screenPosition": { + "x": 0.688735, + "y": 0.5853568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.95723, + "y": 167.41173, + "z": -62.21934 + }, + "screenPosition": { + "x": 0.6537175, + "y": 0.52442735 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.394985, + "y": 165.74503, + "z": -60.581657 + }, + "screenPosition": { + "x": 0.6826102, + "y": 0.4501451 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.809612, + "y": 164.5444, + "z": -62.643665 + }, + "screenPosition": { + "x": 0.73355526, + "y": 0.46410114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.948795, + "y": 164.48726, + "z": -65.41408 + }, + "screenPosition": { + "x": 0.76079774, + "y": 0.52035654 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.36108, + "y": 165.35419, + "z": -67.256256 + }, + "screenPosition": { + "x": 0.7549486, + "y": 0.57957554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.720295, + "y": 166.95274, + "z": -67.60352 + }, + "screenPosition": { + "x": 0.71584135, + "y": 0.6253311 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.26889, + "y": 168.08186, + "z": -66.381836 + }, + "screenPosition": { + "x": 0.6745939, + "y": 0.62713295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.125404, + "y": 168.8629, + "z": -62.864223 + }, + "screenPosition": { + "x": 0.6212423, + "y": 0.57278204 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.572876, + "y": 168.6737, + "z": -59.420303 + }, + "screenPosition": { + "x": 0.5943906, + "y": 0.4966874 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -42.605846, + "y": 165.31323, + "z": -58.596977 + }, + "screenPosition": { + "x": 0.6756592, + "y": 0.39858654 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.365715, + "y": 164.34167, + "z": -60.798153 + }, + "screenPosition": { + "x": 0.7217995, + "y": 0.42091388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.920918, + "y": 163.92253, + "z": -62.87083 + }, + "screenPosition": { + "x": 0.7521333, + "y": 0.45383722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.45337, + "y": 163.3534, + "z": -67.38376 + }, + "screenPosition": { + "x": 0.8091174, + "y": 0.53400093 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.79565, + "y": 163.46916, + "z": -69.54323 + }, + "screenPosition": { + "x": 0.826107, + "y": 0.5817147 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.078632, + "y": 165.75443, + "z": -68.92264 + }, + "screenPosition": { + "x": 0.7598256, + "y": 0.6238899 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.292374, + "y": 165.33086, + "z": -66.82462 + }, + "screenPosition": { + "x": 0.751559, + "y": 0.5700435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.681553, + "y": 164.29968, + "z": -65.49286 + }, + "screenPosition": { + "x": 0.76649636, + "y": 0.5174838 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.576916, + "y": 162.86256, + "z": -65.38398 + }, + "screenPosition": { + "x": 0.80354327, + "y": 0.48056868 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.983334, + "y": 161.65024, + "z": -67.55599 + }, + "screenPosition": { + "x": 0.8558193, + "y": 0.49653128 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.402317, + "y": 163.14899, + "z": -70.45967 + }, + "screenPosition": { + "x": 0.843097, + "y": 0.593062 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.68216, + "y": 164.81061, + "z": -68.673615 + }, + "screenPosition": { + "x": 0.782507, + "y": 0.5959583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.44578, + "y": 165.51698, + "z": -65.35481 + }, + "screenPosition": { + "x": 0.73297924, + "y": 0.54394734 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -42.043816, + "y": 164.88441, + "z": -59.385822 + }, + "screenPosition": { + "x": 0.69429487, + "y": 0.40452406 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.047596, + "y": 164.27098, + "z": -58.12104 + }, + "screenPosition": { + "x": 0.6987935, + "y": 0.3634266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.04062, + "y": 167.17273, + "z": -55.146748 + }, + "screenPosition": { + "x": 0.594378, + "y": 0.37158066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.816376, + "y": 167.57814, + "z": -57.443943 + }, + "screenPosition": { + "x": 0.6049255, + "y": 0.4290568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.346058, + "y": 167.10687, + "z": -60.145565 + }, + "screenPosition": { + "x": 0.6424963, + "y": 0.47389877 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.158997, + "y": 165.50874, + "z": -61.933933 + }, + "screenPosition": { + "x": 0.7014264, + "y": 0.472581 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.888893, + "y": 164.07568, + "z": -59.691288 + }, + "screenPosition": { + "x": 0.71854854, + "y": 0.39138484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.594963, + "y": 164.05046, + "z": -56.489685 + }, + "screenPosition": { + "x": 0.6894825, + "y": 0.32417428 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.096073, + "y": 165.19926, + "z": -54.31942 + }, + "screenPosition": { + "x": 0.6389569, + "y": 0.30686492 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.11862, + "y": 167.21416, + "z": -55.365845 + }, + "screenPosition": { + "x": 0.5952649, + "y": 0.37705258 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.412407, + "y": 162.25783, + "z": -49.41564 + }, + "screenPosition": { + "x": 0.6712567, + "y": 0.13380378 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.591595, + "y": 163.73987, + "z": -49.636944 + }, + "screenPosition": { + "x": 0.6342596, + "y": 0.17486419 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.485905, + "y": 164.99916, + "z": -50.355995 + }, + "screenPosition": { + "x": 0.6073943, + "y": 0.21944313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.525326, + "y": 165.58997, + "z": -52.569633 + }, + "screenPosition": { + "x": 0.61230725, + "y": 0.27973393 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.945374, + "y": 165.7478, + "z": -54.933582 + }, + "screenPosition": { + "x": 0.6300822, + "y": 0.33271527 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.420353, + "y": 165.9021, + "z": -58.04556 + }, + "screenPosition": { + "x": 0.6549356, + "y": 0.4012614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -38.024456, + "y": 162.25577, + "z": -57.073242 + }, + "screenPosition": { + "x": 0.74244124, + "y": 0.29332232 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.4116, + "y": 162.67027, + "z": -54.366783 + }, + "screenPosition": { + "x": 0.7063164, + "y": 0.24674381 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -39.732517, + "y": 163.7951, + "z": -50.38859 + }, + "screenPosition": { + "x": 0.63965887, + "y": 0.19138734 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.436554, + "y": 162.30324, + "z": -48.891624 + }, + "screenPosition": { + "x": 0.6652838, + "y": 0.12453322 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.906425, + "y": 161.20462, + "z": -49.789272 + }, + "screenPosition": { + "x": 0.7026174, + "y": 0.11619007 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.07233, + "y": 160.47484, + "z": -52.65559 + }, + "screenPosition": { + "x": 0.7485634, + "y": 0.15822716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.074787, + "y": 160.99965, + "z": -55.607048 + }, + "screenPosition": { + "x": 0.762076, + "y": 0.23227642 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.048576, + "y": 162.30127, + "z": -56.547382 + }, + "screenPosition": { + "x": 0.73637205, + "y": 0.28372568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.260017, + "y": 163.84012, + "z": -56.13868 + }, + "screenPosition": { + "x": 0.6918374, + "y": 0.3120235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.994614, + "y": 165.11282, + "z": -54.625736 + }, + "screenPosition": { + "x": 0.6440382, + "y": 0.31100604 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.754326, + "y": 165.08304, + "z": -52.17493 + }, + "screenPosition": { + "x": 0.6221953, + "y": 0.25966775 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.539017, + "y": 163.64029, + "z": -50.79038 + }, + "screenPosition": { + "x": 0.64741385, + "y": 0.19572537 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.42538, + "y": 162.80165, + "z": -52.15287 + }, + "screenPosition": { + "x": 0.68227625, + "y": 0.20385465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.71011, + "y": 161.56543, + "z": -53.24405 + }, + "screenPosition": { + "x": 0.7251478, + "y": 0.1967564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.31863, + "y": 160.5203, + "z": -54.89655 + }, + "screenPosition": { + "x": 0.76817167, + "y": 0.20594162 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.13355, + "y": 160.27809, + "z": -56.990185 + }, + "screenPosition": { + "x": 0.7940298, + "y": 0.24365719 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.958096, + "y": 160.05397, + "z": -58.875275 + }, + "screenPosition": { + "x": 0.8265622, + "y": 0.27527678 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.564003, + "y": 160.3553, + "z": -60.94754 + }, + "screenPosition": { + "x": 0.8423647, + "y": 0.32235172 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -38.75583, + "y": 162.26328, + "z": -66.042755 + }, + "screenPosition": { + "x": 0.82551247, + "y": 0.4798744 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.1035, + "y": 164.16335, + "z": -60.771416 + }, + "screenPosition": { + "x": 0.72627664, + "y": 0.41609612 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -36.8166, + "y": 161.347, + "z": -58.535877 + }, + "screenPosition": { + "x": 0.7800782, + "y": 0.30157718 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.423473, + "y": 160.30054, + "z": -60.19228 + }, + "screenPosition": { + "x": 0.8367267, + "y": 0.3055564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -34.683285, + "y": 160.85817, + "z": -62.89027 + }, + "screenPosition": { + "x": 0.85486025, + "y": 0.3595754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.24788, + "y": 160.59277, + "z": -65.15003 + }, + "screenPosition": { + "x": 0.86047894, + "y": 0.42315084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.007046, + "y": 161.8008, + "z": -65.11758 + }, + "screenPosition": { + "x": 0.82918644, + "y": 0.4494339 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.561375, + "y": 162.93959, + "z": -63.791836 + }, + "screenPosition": { + "x": 0.78669566, + "y": 0.44945022 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.10865, + "y": 163.44597, + "z": -61.411037 + }, + "screenPosition": { + "x": 0.75119615, + "y": 0.41198212 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.07369, + "y": 162.13783, + "z": -59.827553 + }, + "screenPosition": { + "x": 0.77113163, + "y": 0.34750986 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.947628, + "y": 161.27876, + "z": -61.40629 + }, + "screenPosition": { + "x": 0.8085397, + "y": 0.3596658 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.98241, + "y": 161.85995, + "z": -63.736656 + }, + "screenPosition": { + "x": 0.8147605, + "y": 0.4222682 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.0568, + "y": 162.5147, + "z": -65.224785 + }, + "screenPosition": { + "x": 0.8112513, + "y": 0.468957 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.83586, + "y": 162.92761, + "z": -67.42681 + }, + "screenPosition": { + "x": 0.8207665, + "y": 0.5246838 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.886356, + "y": 162.80981, + "z": -70.19425 + }, + "screenPosition": { + "x": 0.84958285, + "y": 0.57938683 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -35.202877, + "y": 161.05322, + "z": -65.81748 + }, + "screenPosition": { + "x": 0.87688017, + "y": 0.4251718 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.92821, + "y": 161.03207, + "z": -65.643845 + }, + "screenPosition": { + "x": 0.85436285, + "y": 0.4419962 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.483692, + "y": 162.06651, + "z": -66.22717 + }, + "screenPosition": { + "x": 0.83242166, + "y": 0.47899556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.709545, + "y": 163.62697, + "z": -65.60575 + }, + "screenPosition": { + "x": 0.7853598, + "y": 0.50360745 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.207043, + "y": 163.41954, + "z": -63.115864 + }, + "screenPosition": { + "x": 0.7677263, + "y": 0.44686714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.405193, + "y": 162.12996, + "z": -64.09783 + }, + "screenPosition": { + "x": 0.81099904, + "y": 0.43615454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.5406, + "y": 161.44853, + "z": -65.706406 + }, + "screenPosition": { + "x": 0.84396076, + "y": 0.45324302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -35.46947, + "y": 161.15332, + "z": -67.31938 + }, + "screenPosition": { + "x": 0.8881782, + "y": 0.45882827 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.933083, + "y": 160.83072, + "z": -69.36067 + }, + "screenPosition": { + "x": 0.90486073, + "y": 0.5085248 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.01976, + "y": 162.74236, + "z": -73.08011 + }, + "screenPosition": { + "x": 0.87819254, + "y": 0.6377739 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.876465, + "y": 161.85344, + "z": -74.98637 + }, + "screenPosition": { + "x": 0.9194459, + "y": 0.65600264 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.51196, + "y": 161.48227, + "z": -77.187485 + }, + "screenPosition": { + "x": 0.9634911, + "y": 0.683182 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-060411/brain-CAD7F8-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + 0.8222655061699404, + -0.5628101680023845, + 0.08440469273813742, + 0.0, + 0.056603798716205134, + -0.06669703330600574, + -0.9961664096520585, + 0.0, + 0.5662821269773459, + 0.8238909033004947, + -0.022985476386355508, + 0.0, + 11.034189467937395, + 247.02269802200078, + -74.00648543434227, + 1.0 + ] + }, + "baseImage": "20190825-060411/base.webp", + "version": 0, + "savedAt": 1.566713342712E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190825-062528-v0.json b/data/mapping/BAAAHS/afik/20190825-062528-v0.json new file mode 100644 index 0000000000..ce4cca40fe --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190825-062528-v0.json @@ -0,0 +1,1342 @@ +{ + "startedAt": 1.566714328112E12, + "surfaces": [ + { + "brainId": "CBD528", + "panelName": "F10D", + "pixels": [ + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -13.466825, + "y": 115.139366, + "z": -20.700773 + }, + "screenPosition": { + "x": 0.8139917, + "y": 0.87018335 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.545983, + "y": 114.90706, + "z": -19.170261 + }, + "screenPosition": { + "x": 0.7829014, + "y": 0.8717722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -13.725849, + "y": 114.379196, + "z": -14.735985 + }, + "screenPosition": { + "x": 0.6842961, + "y": 0.88108915 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.892795, + "y": 113.88928, + "z": -12.560472 + }, + "screenPosition": { + "x": 0.62546074, + "y": 0.87936825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -14.063812, + "y": 113.38738, + "z": -8.008484 + }, + "screenPosition": { + "x": 0.5165609, + "y": 0.8989177 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.413628, + "y": 112.360855, + "z": -6.2291617 + }, + "screenPosition": { + "x": 0.4692522, + "y": 0.8861549 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.498805, + "y": 112.110886, + "z": -4.34412 + }, + "screenPosition": { + "x": 0.42342496, + "y": 0.89426774 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.787012, + "y": 111.26514, + "z": -2.276558 + }, + "screenPosition": { + "x": 0.36861637, + "y": 0.8882559 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.25038, + "y": 109.90539, + "z": 0.28975326 + }, + "screenPosition": { + "x": 0.2972256, + "y": 0.87235546 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.859707, + "y": 108.1174, + "z": -2.0002267 + }, + "screenPosition": { + "x": 0.34320664, + "y": 0.80792564 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -15.688894, + "y": 108.61871, + "z": -7.8112903 + }, + "screenPosition": { + "x": 0.48276958, + "y": 0.77931386 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.776327, + "y": 108.36218, + "z": -9.994227 + }, + "screenPosition": { + "x": 0.5301986, + "y": 0.7580333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -15.40616, + "y": 109.44846, + "z": -14.383727 + }, + "screenPosition": { + "x": 0.6318842, + "y": 0.7554234 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -13.898429, + "y": 113.87279, + "z": -15.034531 + }, + "screenPosition": { + "x": 0.68315333, + "y": 0.86473 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.439878, + "y": 115.21834, + "z": -13.1856365 + }, + "screenPosition": { + "x": 0.6628033, + "y": 0.9136105 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.289783, + "y": 115.658745, + "z": -10.725584 + }, + "screenPosition": { + "x": 0.6136589, + "y": 0.94119066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.567185, + "y": 114.8447, + "z": -8.561777 + }, + "screenPosition": { + "x": 0.5435426, + "y": 0.93326384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.925996, + "y": 113.79178, + "z": -6.888222 + }, + "screenPosition": { + "x": 0.49336636, + "y": 0.91808254 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.223055, + "y": 112.92006, + "z": -4.928759 + }, + "screenPosition": { + "x": 0.4422149, + "y": 0.91083366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.428504, + "y": 112.31716, + "z": -3.162086 + }, + "screenPosition": { + "x": 0.3963938, + "y": 0.90901047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.682881, + "y": 111.57069, + "z": -1.1236593 + }, + "screenPosition": { + "x": 0.3422039, + "y": 0.9055116 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -15.776118, + "y": 108.36266, + "z": -0.2611575 + }, + "screenPosition": { + "x": 0.30193436, + "y": 0.8272542 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.940899, + "y": 107.87916, + "z": -2.4944575 + }, + "screenPosition": { + "x": 0.3537781, + "y": 0.79814816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.24671, + "y": 106.981804, + "z": -4.261383 + }, + "screenPosition": { + "x": 0.3906939, + "y": 0.7625951 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.422392, + "y": 106.4663, + "z": -5.803715 + }, + "screenPosition": { + "x": 0.42374945, + "y": 0.7390127 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.630236, + "y": 105.85643, + "z": -8.108913 + }, + "screenPosition": { + "x": 0.47287032, + "y": 0.7086148 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.807932, + "y": 105.33504, + "z": -10.891383 + }, + "screenPosition": { + "x": 0.5315682, + "y": 0.6782801 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.013998, + "y": 107.66478, + "z": -11.817369 + }, + "screenPosition": { + "x": 0.5659097, + "y": 0.7289124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.3664255, + "y": 109.565, + "z": -9.904649 + }, + "screenPosition": { + "x": 0.5355821, + "y": 0.7884523 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.134137, + "y": 110.246605, + "z": -7.7375517 + }, + "screenPosition": { + "x": 0.4910055, + "y": 0.8208473 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.775945, + "y": 111.29766, + "z": -5.7942877 + }, + "screenPosition": { + "x": 0.45261523, + "y": 0.86201936 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.050834, + "y": 110.49099, + "z": -3.173721 + }, + "screenPosition": { + "x": 0.3856689, + "y": 0.8609806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.952707, + "y": 107.84452, + "z": -3.8432178 + }, + "screenPosition": { + "x": 0.38589233, + "y": 0.7875669 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.365686, + "y": 106.63269, + "z": -5.174804 + }, + "screenPosition": { + "x": 0.41009286, + "y": 0.74746394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.502428, + "y": 106.23148, + "z": -9.126574 + }, + "screenPosition": { + "x": 0.49797237, + "y": 0.7112733 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.026627, + "y": 107.6277, + "z": -10.337996 + }, + "screenPosition": { + "x": 0.5333176, + "y": 0.7376627 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -14.347469, + "y": 112.55506, + "z": -11.14388 + }, + "screenPosition": { + "x": 0.58152586, + "y": 0.85429025 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.969682, + "y": 113.663666, + "z": -12.605342 + }, + "screenPosition": { + "x": 0.6223997, + "y": 0.8722653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.490049, + "y": 115.07114, + "z": -14.943687 + }, + "screenPosition": { + "x": 0.6991388, + "y": 0.8991608 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.677754, + "y": 114.52037, + "z": -17.81753 + }, + "screenPosition": { + "x": 0.7516949, + "y": 0.86827797 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.439236, + "y": 112.28589, + "z": -19.399511 + }, + "screenPosition": { + "x": 0.7563281, + "y": 0.7945019 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.1891985, + "y": 110.08519, + "z": -19.64291 + }, + "screenPosition": { + "x": 0.74387544, + "y": 0.736814 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.952537, + "y": 107.84522, + "z": -18.41184 + }, + "screenPosition": { + "x": 0.7050401, + "y": 0.6919384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.337132, + "y": 106.71664, + "z": -16.610033 + }, + "screenPosition": { + "x": 0.66130006, + "y": 0.6763454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.486885, + "y": 106.27717, + "z": -14.222893 + }, + "screenPosition": { + "x": 0.60886735, + "y": 0.68040466 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.472998, + "y": 106.31788, + "z": -11.638583 + }, + "screenPosition": { + "x": 0.55380523, + "y": 0.6973844 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.81411, + "y": 108.25132, + "z": -10.4127035 + }, + "screenPosition": { + "x": 0.5387729, + "y": 0.75249803 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.973094, + "y": 110.719185, + "z": -8.7841625 + }, + "screenPosition": { + "x": 0.51761806, + "y": 0.8252494 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.286694, + "y": 112.73338, + "z": -10.069148 + }, + "screenPosition": { + "x": 0.55888295, + "y": 0.8666821 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.532712, + "y": 114.94591, + "z": -12.20205 + }, + "screenPosition": { + "x": 0.6357402, + "y": 0.91217023 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.970608, + "y": 104.857864, + "z": -24.837788 + }, + "screenPosition": { + "x": 0.81157, + "y": 0.5876087 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.20516, + "y": 107.10403, + "z": -26.850613 + }, + "screenPosition": { + "x": 0.86326116, + "y": 0.62664616 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.410476, + "y": 109.435974, + "z": -27.315691 + }, + "screenPosition": { + "x": 0.88674104, + "y": 0.6759662 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.720667, + "y": 111.460144, + "z": -26.119495 + }, + "screenPosition": { + "x": 0.8802119, + "y": 0.7422405 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.12685, + "y": 113.20264, + "z": -25.17742 + }, + "screenPosition": { + "x": 0.8771244, + "y": 0.79762846 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.475553, + "y": 115.1138, + "z": -24.398483 + }, + "screenPosition": { + "x": 0.8782709, + "y": 0.8520846 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -12.843584, + "y": 116.968254, + "z": -23.827991 + }, + "screenPosition": { + "x": 0.88222384, + "y": 0.89930874 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -12.159652, + "y": 118.97519, + "z": -23.079426 + }, + "screenPosition": { + "x": 0.8841365, + "y": 0.9464242 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -11.639592, + "y": 120.501236, + "z": -21.73965 + }, + "screenPosition": { + "x": 0.8741677, + "y": 0.98360854 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -12.426025, + "y": 118.19346, + "z": -17.230536 + }, + "screenPosition": { + "x": 0.78184104, + "y": 0.96203077 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.199456, + "y": 115.92388, + "z": -16.550232 + }, + "screenPosition": { + "x": 0.74362594, + "y": 0.91235214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.952547, + "y": 113.714005, + "z": -17.238653 + }, + "screenPosition": { + "x": 0.7291985, + "y": 0.84835464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -14.656213, + "y": 111.649216, + "z": -21.795784 + }, + "screenPosition": { + "x": 0.7986314, + "y": 0.76410717 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.740466, + "y": 114.336426, + "z": -23.718487 + }, + "screenPosition": { + "x": 0.8606794, + "y": 0.83492005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.061003, + "y": 116.330246, + "z": -22.628078 + }, + "screenPosition": { + "x": 0.85804135, + "y": 0.8902941 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -13.034238, + "y": 116.40872, + "z": -17.932793 + }, + "screenPosition": { + "x": 0.7758532, + "y": 0.91667205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.889258, + "y": 113.89973, + "z": -17.74434 + }, + "screenPosition": { + "x": 0.74232566, + "y": 0.8511626 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.622625, + "y": 111.74774, + "z": -19.013863 + }, + "screenPosition": { + "x": 0.7418665, + "y": 0.7801094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.135133, + "y": 110.24385, + "z": -20.252743 + }, + "screenPosition": { + "x": 0.7570153, + "y": 0.7367048 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -16.228191, + "y": 107.03639, + "z": -22.672783 + }, + "screenPosition": { + "x": 0.78401655, + "y": 0.6483391 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.89914, + "y": 105.06757, + "z": -24.450193 + }, + "screenPosition": { + "x": 0.8055738, + "y": 0.5943192 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.151178, + "y": 104.32801, + "z": -26.02982 + }, + "screenPosition": { + "x": 0.8305449, + "y": 0.5697091 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.617357, + "y": 102.96005, + "z": -26.749414 + }, + "screenPosition": { + "x": 0.8353182, + "y": 0.5361794 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.40347, + "y": 100.653305, + "z": -28.990637 + }, + "screenPosition": { + "x": 0.86180884, + "y": 0.4759786 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.405378, + "y": 103.582146, + "z": -30.862823 + }, + "screenPosition": { + "x": 0.913487, + "y": 0.5295634 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.937569, + "y": 104.954865, + "z": -28.910418 + }, + "screenPosition": { + "x": 0.8872502, + "y": 0.5687079 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.710056, + "y": 105.62246, + "z": -27.198786 + }, + "screenPosition": { + "x": 0.86028856, + "y": 0.59209234 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.309706, + "y": 106.797226, + "z": -25.187315 + }, + "screenPosition": { + "x": 0.83034873, + "y": 0.6289119 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.108004, + "y": 107.38907, + "z": -22.552614 + }, + "screenPosition": { + "x": 0.78392184, + "y": 0.6570411 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.8645, + "y": 105.16917, + "z": -20.429794 + }, + "screenPosition": { + "x": 0.72860646, + "y": 0.618454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.84856, + "y": 102.281555, + "z": -22.837042 + }, + "screenPosition": { + "x": 0.7575528, + "y": 0.5407914 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -16.24606, + "y": 106.984, + "z": -25.692009 + }, + "screenPosition": { + "x": 0.8409837, + "y": 0.6303095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.624354, + "y": 108.80831, + "z": -23.648571 + }, + "screenPosition": { + "x": 0.8139694, + "y": 0.68300474 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.654816, + "y": 108.71889, + "z": -20.360903 + }, + "screenPosition": { + "x": 0.74948514, + "y": 0.7005018 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.416462, + "y": 106.483864, + "z": -17.892939 + }, + "screenPosition": { + "x": 0.68605286, + "y": 0.6632665 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.37025, + "y": 103.68506, + "z": -18.748789 + }, + "screenPosition": { + "x": 0.6860261, + "y": 0.5938324 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.679102, + "y": 102.77879, + "z": -20.957867 + }, + "screenPosition": { + "x": 0.72420806, + "y": 0.5615208 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.96902, + "y": 101.92808, + "z": -22.957384 + }, + "screenPosition": { + "x": 0.75768334, + "y": 0.53236127 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.292734, + "y": 100.978195, + "z": -24.92687 + }, + "screenPosition": { + "x": 0.78916484, + "y": 0.5019011 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.557985, + "y": 100.19987, + "z": -27.058838 + }, + "screenPosition": { + "x": 0.8239165, + "y": 0.4751171 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.644304, + "y": 99.946594, + "z": -29.232002 + }, + "screenPosition": { + "x": 0.8617783, + "y": 0.4599108 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.422085, + "y": 100.59871, + "z": -31.22045 + }, + "screenPosition": { + "x": 0.90114754, + "y": 0.46480927 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -17.901356, + "y": 102.12677, + "z": -33.12734 + }, + "screenPosition": { + "x": 0.94393754, + "y": 0.48827142 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.498777, + "y": 100.37372, + "z": -35.304546 + }, + "screenPosition": { + "x": 0.9701851, + "y": 0.4424222 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -18.720879, + "y": 99.72195, + "z": -33.319736 + }, + "screenPosition": { + "x": 0.932258, + "y": 0.43743098 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -17.5932, + "y": 103.031, + "z": -30.925158 + }, + "screenPosition": { + "x": 0.91112536, + "y": 0.51753396 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.930277, + "y": 104.97628, + "z": -30.038935 + }, + "screenPosition": { + "x": 0.90764314, + "y": 0.5634883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -16.252874, + "y": 106.96406, + "z": -29.390596 + }, + "screenPosition": { + "x": 0.9086521, + "y": 0.60994804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -15.5422945, + "y": 109.04918, + "z": -28.77197 + }, + "screenPosition": { + "x": 0.9108422, + "y": 0.65914226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.927917, + "y": 110.85201, + "z": -28.40735 + }, + "screenPosition": { + "x": 0.9165972, + "y": 0.7156686 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -14.261544, + "y": 112.80743, + "z": -27.86437 + }, + "screenPosition": { + "x": 0.9200498, + "y": 0.77619064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -13.508439, + "y": 115.01735, + "z": -27.958035 + }, + "screenPosition": { + "x": 0.934449, + "y": 0.8343784 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-062528/brain-CBD528-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + -0.09852178110090115, + -0.25341295907345757, + -0.9623280785794105, + 0.0, + 0.2831228105674461, + 0.9199312454549099, + -0.27123417515528614, + 0.0, + 0.954009922791737, + -0.2991795043271055, + -0.018886275585497492, + 0.0, + 83.73145596209137, + 91.18757287936643, + -24.793896756484994, + 1.0 + ] + }, + "baseImage": "20190825-062528/base.webp", + "version": 0, + "savedAt": 1.566714624686E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190825-070850-v0.json b/data/mapping/BAAAHS/afik/20190825-070850-v0.json new file mode 100644 index 0000000000..ef0af839d0 --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190825-070850-v0.json @@ -0,0 +1,4368 @@ +{ + "startedAt": 1.566716930663E12, + "surfaces": [ + { + "brainId": "CAFABC", + "panelName": "R4D", + "pixels": [ + { + "modelPosition": { + "x": -398.24872, + "y": 155.32043, + "z": -30.7149 + }, + "screenPosition": { + "x": 0.7449092, + "y": 0.87418073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -398.35275, + "y": 153.23882, + "z": -30.759392 + }, + "screenPosition": { + "x": 0.7488531, + "y": 0.8564439 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.49222, + "y": 151.24417, + "z": -31.779959 + }, + "screenPosition": { + "x": 0.71788013, + "y": 0.8417325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.89188, + "y": 150.12054, + "z": -33.06759 + }, + "screenPosition": { + "x": 0.67368764, + "y": 0.8349905 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.31122, + "y": 148.94719, + "z": -34.372433 + }, + "screenPosition": { + "x": 0.62764734, + "y": 0.8276387 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.2996, + "y": 147.79987, + "z": -35.27261 + }, + "screenPosition": { + "x": 0.5959476, + "y": 0.8193407 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.20694, + "y": 146.40291, + "z": -36.0902 + }, + "screenPosition": { + "x": 0.56744003, + "y": 0.8083407 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.89526, + "y": 144.85182, + "z": -36.69783 + }, + "screenPosition": { + "x": 0.547145, + "y": 0.79517573 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.7117, + "y": 143.10791, + "z": -37.420994 + }, + "screenPosition": { + "x": 0.51086074, + "y": 0.7785845 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.5791, + "y": 141.53409, + "z": -38.196495 + }, + "screenPosition": { + "x": 0.462344, + "y": 0.762376 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.89474, + "y": 139.71068, + "z": -38.446648 + }, + "screenPosition": { + "x": 0.45132706, + "y": 0.74479836 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.0657, + "y": 138.65268, + "z": -39.52082 + }, + "screenPosition": { + "x": 0.38667378, + "y": 0.7337959 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.84018, + "y": 136.7467, + "z": -40.2004 + }, + "screenPosition": { + "x": 0.34625873, + "y": 0.7147703 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.8034, + "y": 135.03957, + "z": -41.062576 + }, + "screenPosition": { + "x": 0.30356073, + "y": 0.69847316 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.40338, + "y": 133.40453, + "z": -39.703957 + }, + "screenPosition": { + "x": 0.3761617, + "y": 0.6820128 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.37375, + "y": 132.11206, + "z": -38.70244 + }, + "screenPosition": { + "x": 0.421776, + "y": 0.66851634 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.9662, + "y": 132.65158, + "z": -36.45192 + }, + "screenPosition": { + "x": 0.5531669, + "y": 0.67414975 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.8636, + "y": 134.89926, + "z": -35.47252 + }, + "screenPosition": { + "x": 0.5994554, + "y": 0.6957667 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.10532, + "y": 137.1586, + "z": -34.817226 + }, + "screenPosition": { + "x": 0.6427582, + "y": 0.7185654 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.753, + "y": 138.69751, + "z": -34.525303 + }, + "screenPosition": { + "x": 0.64987963, + "y": 0.7328572 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.58627, + "y": 139.96278, + "z": -34.400913 + }, + "screenPosition": { + "x": 0.6511757, + "y": 0.74465716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.1782, + "y": 141.46036, + "z": -34.055485 + }, + "screenPosition": { + "x": 0.660341, + "y": 0.75813985 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.00668, + "y": 142.56516, + "z": -32.98198 + }, + "screenPosition": { + "x": 0.6980815, + "y": 0.76645505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.69, + "y": 144.1342, + "z": -31.783815 + }, + "screenPosition": { + "x": 0.7380911, + "y": 0.77852565 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.03726, + "y": 146.14162, + "z": -31.221355 + }, + "screenPosition": { + "x": 0.7527447, + "y": 0.79542744 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -398.9803, + "y": 148.16797, + "z": -31.219683 + }, + "screenPosition": { + "x": 0.7469238, + "y": 0.81339633 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.25903, + "y": 149.43916, + "z": -32.454926 + }, + "screenPosition": { + "x": 0.6982692, + "y": 0.82746875 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.55112, + "y": 147.78384, + "z": -35.50876 + }, + "screenPosition": { + "x": 0.586764, + "y": 0.8197515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.40262, + "y": 146.34789, + "z": -36.27281 + }, + "screenPosition": { + "x": 0.5603193, + "y": 0.8082448 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.76, + "y": 144.32089, + "z": -36.557014 + }, + "screenPosition": { + "x": 0.5541833, + "y": 0.78986853 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.82526, + "y": 142.36903, + "z": -36.568367 + }, + "screenPosition": { + "x": 0.5567161, + "y": 0.77112037 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.89914, + "y": 140.52902, + "z": -35.650192 + }, + "screenPosition": { + "x": 0.6004939, + "y": 0.75215656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.42426, + "y": 140.40552, + "z": -33.31936 + }, + "screenPosition": { + "x": 0.69149894, + "y": 0.747022 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.22714, + "y": 143.46602, + "z": -32.27188 + }, + "screenPosition": { + "x": 0.7220231, + "y": 0.7733882 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.65634, + "y": 145.67065, + "z": -33.672543 + }, + "screenPosition": { + "x": 0.6632408, + "y": 0.7962891 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.1978, + "y": 145.55298, + "z": -36.059834 + }, + "screenPosition": { + "x": 0.57085806, + "y": 0.8003554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.95486, + "y": 143.8338, + "z": -37.668297 + }, + "screenPosition": { + "x": 0.4976613, + "y": 0.7857933 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -405.07635, + "y": 138.01492, + "z": -36.692963 + }, + "screenPosition": { + "x": 0.54546237, + "y": 0.72768974 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.19867, + "y": 136.19203, + "z": -38.64231 + }, + "screenPosition": { + "x": 0.43704087, + "y": 0.7097114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.19424, + "y": 136.4477, + "z": -40.525734 + }, + "screenPosition": { + "x": 0.33240828, + "y": 0.7122652 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.6481, + "y": 138.96532, + "z": -40.076603 + }, + "screenPosition": { + "x": 0.36146447, + "y": 0.737537 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.07315, + "y": 141.74782, + "z": -38.666634 + }, + "screenPosition": { + "x": 0.4413799, + "y": 0.76514816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -399.69333, + "y": 143.48138, + "z": -31.770224 + }, + "screenPosition": { + "x": 0.7404935, + "y": 0.7725887 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.16446, + "y": 145.69281, + "z": -31.32948 + }, + "screenPosition": { + "x": 0.7501339, + "y": 0.79164237 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.48114, + "y": 147.67313, + "z": -31.678053 + }, + "screenPosition": { + "x": 0.73173195, + "y": 0.81002396 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.48755, + "y": 148.9645, + "z": -32.65768 + }, + "screenPosition": { + "x": 0.6921084, + "y": 0.82372653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.15274, + "y": 148.18991, + "z": -34.203976 + }, + "screenPosition": { + "x": 0.63612163, + "y": 0.8203842 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.14993, + "y": 146.41393, + "z": -35.096344 + }, + "screenPosition": { + "x": 0.60648954, + "y": 0.80620044 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.8588, + "y": 144.4814, + "z": -34.773003 + }, + "screenPosition": { + "x": 0.62426233, + "y": 0.7876443 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.47867, + "y": 143.26892, + "z": -33.443924 + }, + "screenPosition": { + "x": 0.6786277, + "y": 0.7738013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.48804, + "y": 144.3043, + "z": -31.59822 + }, + "screenPosition": { + "x": 0.74439436, + "y": 0.77970535 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.88266, + "y": 147.22134, + "z": -32.984627 + }, + "screenPosition": { + "x": 0.6848213, + "y": 0.8088603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -400.09903, + "y": 130.41463, + "z": -31.816988 + }, + "screenPosition": { + "x": 0.77812606, + "y": 0.65031886 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.80173, + "y": 128.06522, + "z": -35.239235 + }, + "screenPosition": { + "x": 0.6073775, + "y": 0.62804824 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.15298, + "y": 129.46298, + "z": -36.545914 + }, + "screenPosition": { + "x": 0.5447753, + "y": 0.642345 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.4937, + "y": 131.62837, + "z": -36.92186 + }, + "screenPosition": { + "x": 0.5211964, + "y": 0.66370195 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.74173, + "y": 133.99701, + "z": -33.453773 + }, + "screenPosition": { + "x": 0.7049866, + "y": 0.68640304 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.484, + "y": 131.88712, + "z": -33.157307 + }, + "screenPosition": { + "x": 0.7226792, + "y": 0.6656811 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -400.71994, + "y": 127.94773, + "z": -32.337757 + }, + "screenPosition": { + "x": 0.7660978, + "y": 0.62659556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.86484, + "y": 126.2177, + "z": -33.370228 + }, + "screenPosition": { + "x": 0.7150638, + "y": 0.60962224 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.23178, + "y": 124.96621, + "z": -34.6238 + }, + "screenPosition": { + "x": 0.64526016, + "y": 0.59727025 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.85114, + "y": 124.124535, + "z": -36.125248 + }, + "screenPosition": { + "x": 0.55221933, + "y": 0.58900994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.99796, + "y": 123.40718, + "z": -37.18547 + }, + "screenPosition": { + "x": 0.50363505, + "y": 0.58199066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.35938, + "y": 122.12944, + "z": -37.49265 + }, + "screenPosition": { + "x": 0.4822311, + "y": 0.5693139 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.99594, + "y": 120.59522, + "z": -38.05203 + }, + "screenPosition": { + "x": 0.4482315, + "y": 0.55414796 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.7898, + "y": 119.35329, + "z": -38.766846 + }, + "screenPosition": { + "x": 0.4130526, + "y": 0.5417124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.2197, + "y": 117.735146, + "z": -39.129704 + }, + "screenPosition": { + "x": 0.38961273, + "y": 0.5256972 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.14032, + "y": 116.44883, + "z": -39.962612 + }, + "screenPosition": { + "x": 0.3447222, + "y": 0.5128614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.39005, + "y": 115.45354, + "z": -41.112488 + }, + "screenPosition": { + "x": 0.28084862, + "y": 0.50305444 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.88385, + "y": 116.07419, + "z": -42.53334 + }, + "screenPosition": { + "x": 0.20221849, + "y": 0.50951064 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.80515, + "y": 117.44717, + "z": -43.434994 + }, + "screenPosition": { + "x": 0.13519281, + "y": 0.5219497 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -413.2382, + "y": 118.99887, + "z": -43.882046 + }, + "screenPosition": { + "x": 0.11750068, + "y": 0.53775615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -413.48132, + "y": 120.32611, + "z": -44.144726 + }, + "screenPosition": { + "x": 0.102801, + "y": 0.55088913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -415.0284, + "y": 121.43508, + "z": -44.96295 + }, + "screenPosition": { + "x": 0.07277326, + "y": 0.56442684 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -414.37292, + "y": 123.40298, + "z": -45.062126 + }, + "screenPosition": { + "x": 0.062291797, + "y": 0.582828 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -413.6942, + "y": 125.36006, + "z": -44.47394 + }, + "screenPosition": { + "x": 0.10564934, + "y": 0.6022353 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.9689, + "y": 126.02983, + "z": -42.868412 + }, + "screenPosition": { + "x": 0.1945982, + "y": 0.60874856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.23294, + "y": 124.953964, + "z": -41.208164 + }, + "screenPosition": { + "x": 0.28531158, + "y": 0.5978575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.68295, + "y": 123.41848, + "z": -40.651535 + }, + "screenPosition": { + "x": 0.31417322, + "y": 0.58247685 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.04886, + "y": 121.34949, + "z": -40.002163 + }, + "screenPosition": { + "x": 0.34249017, + "y": 0.5618602 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.295, + "y": 119.123566, + "z": -40.176643 + }, + "screenPosition": { + "x": 0.33500203, + "y": 0.5396002 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.46954, + "y": 117.70942, + "z": -41.245068 + }, + "screenPosition": { + "x": 0.27548686, + "y": 0.52559865 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.11807, + "y": 117.94624, + "z": -42.80161 + }, + "screenPosition": { + "x": 0.19105566, + "y": 0.528108 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.89816, + "y": 120.09551, + "z": -43.590343 + }, + "screenPosition": { + "x": 0.14566281, + "y": 0.5497915 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.86456, + "y": 121.59964, + "z": -42.65678 + }, + "screenPosition": { + "x": 0.20270017, + "y": 0.564545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.34442, + "y": 121.2302, + "z": -41.217594 + }, + "screenPosition": { + "x": 0.28099686, + "y": 0.56070375 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.1954, + "y": 120.64095, + "z": -40.121822 + }, + "screenPosition": { + "x": 0.33624327, + "y": 0.5548076 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.6338, + "y": 119.953545, + "z": -38.635506 + }, + "screenPosition": { + "x": 0.4197206, + "y": 0.54771984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.26324, + "y": 119.82538, + "z": -37.343197 + }, + "screenPosition": { + "x": 0.48338327, + "y": 0.5464956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.57523, + "y": 124.51292, + "z": -35.8757 + }, + "screenPosition": { + "x": 0.5727937, + "y": 0.5928646 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.02032, + "y": 124.11891, + "z": -38.16524 + }, + "screenPosition": { + "x": 0.44167146, + "y": 0.58917296 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.17203, + "y": 121.875, + "z": -38.25043 + }, + "screenPosition": { + "x": 0.44150305, + "y": 0.56685066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.28906, + "y": 119.43579, + "z": -35.476467 + }, + "screenPosition": { + "x": 0.59300625, + "y": 0.54218113 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.76904, + "y": 121.16064, + "z": -33.150566 + }, + "screenPosition": { + "x": 0.7203737, + "y": 0.5591657 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.97427, + "y": 122.93005, + "z": -31.50788 + }, + "screenPosition": { + "x": 0.81351525, + "y": 0.5766184 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -405.05963, + "y": 126.531975, + "z": -36.38301 + }, + "screenPosition": { + "x": 0.546432, + "y": 0.6130014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.61865, + "y": 124.69202, + "z": -37.802147 + }, + "screenPosition": { + "x": 0.46656388, + "y": 0.59484494 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.34708, + "y": 123.1473, + "z": -38.447674 + }, + "screenPosition": { + "x": 0.43437123, + "y": 0.57953364 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.4174, + "y": 121.14739, + "z": -38.46255 + }, + "screenPosition": { + "x": 0.43151754, + "y": 0.55958074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.5876, + "y": 120.9536, + "z": -40.4987 + }, + "screenPosition": { + "x": 0.31264853, + "y": 0.5580344 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -405.3861, + "y": 126.19484, + "z": -36.681446 + }, + "screenPosition": { + "x": 0.534032, + "y": 0.60975087 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.34967, + "y": 127.92935, + "z": -35.751106 + }, + "screenPosition": { + "x": 0.586659, + "y": 0.6269571 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.7816, + "y": 127.25887, + "z": -33.31861 + }, + "screenPosition": { + "x": 0.70668167, + "y": 0.6197432 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.34293, + "y": 114.714005, + "z": -36.346664 + }, + "screenPosition": { + "x": 0.54061896, + "y": 0.49516222 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.6188, + "y": 112.76286, + "z": -36.55615 + }, + "screenPosition": { + "x": 0.5271766, + "y": 0.47571677 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.46094, + "y": 113.923294, + "z": -34.556385 + }, + "screenPosition": { + "x": 0.6376782, + "y": 0.4870798 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.23422, + "y": 113.01546, + "z": -36.200897 + }, + "screenPosition": { + "x": 0.5428011, + "y": 0.4785008 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -407.77835, + "y": 108.69012, + "z": -38.482876 + }, + "screenPosition": { + "x": 0.4124624, + "y": 0.4358872 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.19965, + "y": 106.82554, + "z": -38.83133 + }, + "screenPosition": { + "x": 0.39099577, + "y": 0.41747296 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.94424, + "y": 104.93905, + "z": -38.542797 + }, + "screenPosition": { + "x": 0.41059327, + "y": 0.39786696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.6182, + "y": 103.22598, + "z": -37.25174 + }, + "screenPosition": { + "x": 0.47440454, + "y": 0.38138384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.8917, + "y": 102.88677, + "z": -35.619244 + }, + "screenPosition": { + "x": 0.56831634, + "y": 0.37707487 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.57425, + "y": 106.67739, + "z": -35.41781 + }, + "screenPosition": { + "x": 0.5764222, + "y": 0.4156575 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.79538, + "y": 107.629395, + "z": -36.590687 + }, + "screenPosition": { + "x": 0.5121392, + "y": 0.42540124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.39844, + "y": 108.02052, + "z": -38.108406 + }, + "screenPosition": { + "x": 0.43112192, + "y": 0.42931622 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.90564, + "y": 107.442505, + "z": -39.511143 + }, + "screenPosition": { + "x": 0.36021268, + "y": 0.42295003 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.87885, + "y": 106.268974, + "z": -40.396393 + }, + "screenPosition": { + "x": 0.30867207, + "y": 0.41161838 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -408.76865, + "y": 102.54805, + "z": -39.256893 + }, + "screenPosition": { + "x": 0.36911756, + "y": 0.3740871 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -406.57904, + "y": 104.209854, + "z": -37.240116 + }, + "screenPosition": { + "x": 0.4795866, + "y": 0.39066005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.90363, + "y": 106.30633, + "z": -37.59911 + }, + "screenPosition": { + "x": 0.46357524, + "y": 0.41140762 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.4858, + "y": 107.61505, + "z": -39.12071 + }, + "screenPosition": { + "x": 0.37818253, + "y": 0.42507732 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.90546, + "y": 106.746826, + "z": -40.433647 + }, + "screenPosition": { + "x": 0.30907393, + "y": 0.4161081 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.37317, + "y": 103.97116, + "z": -39.86191 + }, + "screenPosition": { + "x": 0.33749613, + "y": 0.38835174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -407.5627, + "y": 97.605606, + "z": -37.996044 + }, + "screenPosition": { + "x": 0.4312391, + "y": 0.324983 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.5019, + "y": 96.37603, + "z": -36.966846 + }, + "screenPosition": { + "x": 0.4880063, + "y": 0.31225765 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.05194, + "y": 97.363686, + "z": -35.628452 + }, + "screenPosition": { + "x": 0.5621775, + "y": 0.32196802 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.55627, + "y": 99.216866, + "z": -35.209747 + }, + "screenPosition": { + "x": 0.586957, + "y": 0.34041348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.7895, + "y": 100.85961, + "z": -32.649635 + }, + "screenPosition": { + "x": 0.7285824, + "y": 0.35652855 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.70813, + "y": 99.22786, + "z": -31.590786 + }, + "screenPosition": { + "x": 0.78479975, + "y": 0.3401333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.61395, + "y": 95.145134, + "z": -32.33813 + }, + "screenPosition": { + "x": 0.73384506, + "y": 0.30051666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.78244, + "y": 95.19243, + "z": -34.378826 + }, + "screenPosition": { + "x": 0.62827337, + "y": 0.30016923 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.5057, + "y": 100.53109, + "z": -34.25534 + }, + "screenPosition": { + "x": 0.64047074, + "y": 0.3534236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -402.85535, + "y": 104.10971, + "z": -33.735363 + }, + "screenPosition": { + "x": 0.66195405, + "y": 0.39040262 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.5516, + "y": 105.96308, + "z": -34.437687 + }, + "screenPosition": { + "x": 0.6360451, + "y": 0.4076422 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.7492, + "y": 106.08954, + "z": -36.50781 + }, + "screenPosition": { + "x": 0.52301043, + "y": 0.40912697 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.4256, + "y": 104.94194, + "z": -37.11455 + }, + "screenPosition": { + "x": 0.48867163, + "y": 0.3977419 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.62448, + "y": 103.13455, + "z": -34.43375 + }, + "screenPosition": { + "x": 0.63337433, + "y": 0.37941948 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.90054, + "y": 105.56544, + "z": -33.815166 + }, + "screenPosition": { + "x": 0.65922236, + "y": 0.4048231 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.91943, + "y": 107.30512, + "z": -35.758526 + }, + "screenPosition": { + "x": 0.56521034, + "y": 0.42117503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -407.02155, + "y": 103.369736, + "z": -37.634773 + }, + "screenPosition": { + "x": 0.45862946, + "y": 0.38211095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.59528, + "y": 104.26778, + "z": -34.43533 + }, + "screenPosition": { + "x": 0.63444436, + "y": 0.39072663 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -406.5302, + "y": 107.458626, + "z": -37.27744 + }, + "screenPosition": { + "x": 0.4823352, + "y": 0.42287028 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.29834, + "y": 106.04254, + "z": -38.904102 + }, + "screenPosition": { + "x": 0.38998237, + "y": 0.40918896 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.92377, + "y": 110.06915, + "z": -41.47651 + }, + "screenPosition": { + "x": 0.21848059, + "y": 0.44753897 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.56012, + "y": 111.69816, + "z": -42.116745 + }, + "screenPosition": { + "x": 0.19948094, + "y": 0.4645136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.1637, + "y": 113.70771, + "z": -42.73592 + }, + "screenPosition": { + "x": 0.14520541, + "y": 0.4844427 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.82898, + "y": 115.04318, + "z": -42.455322 + }, + "screenPosition": { + "x": 0.2056443, + "y": 0.499213 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.765, + "y": 117.22645, + "z": -42.451088 + }, + "screenPosition": { + "x": 0.20566654, + "y": 0.5211119 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.39432, + "y": 118.73857, + "z": -42.141197 + }, + "screenPosition": { + "x": 0.22796562, + "y": 0.5359425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.282, + "y": 120.51758, + "z": -40.200123 + }, + "screenPosition": { + "x": 0.33259726, + "y": 0.5535697 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.3529, + "y": 120.09389, + "z": -38.374916 + }, + "screenPosition": { + "x": 0.4311123, + "y": 0.5491728 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.1203, + "y": 119.12141, + "z": -37.190716 + }, + "screenPosition": { + "x": 0.4964768, + "y": 0.53931206 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.87515, + "y": 117.58261, + "z": -35.98023 + }, + "screenPosition": { + "x": 0.5635772, + "y": 0.5237449 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.99976, + "y": 115.07125, + "z": -35.092556 + }, + "screenPosition": { + "x": 0.59871185, + "y": 0.49921784 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.91696, + "y": 113.0481, + "z": -34.962833 + }, + "screenPosition": { + "x": 0.6145667, + "y": 0.47839114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.7982, + "y": 111.8315, + "z": -37.641518 + }, + "screenPosition": { + "x": 0.4668945, + "y": 0.4665408 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.57755, + "y": 113.28857, + "z": -39.35234 + }, + "screenPosition": { + "x": 0.37309346, + "y": 0.48140845 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.59747, + "y": 116.065506, + "z": -39.442238 + }, + "screenPosition": { + "x": 0.36663517, + "y": 0.50935185 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.1476, + "y": 117.32733, + "z": -39.051464 + }, + "screenPosition": { + "x": 0.39211005, + "y": 0.52169335 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.97525, + "y": 119.47388, + "z": -38.00385 + }, + "screenPosition": { + "x": 0.44587985, + "y": 0.54311866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.02927, + "y": 120.02239, + "z": -37.128174 + }, + "screenPosition": { + "x": 0.49573183, + "y": 0.54841465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.1706, + "y": 120.31072, + "z": -34.44695 + }, + "screenPosition": { + "x": 0.65017766, + "y": 0.5508 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.44644, + "y": 118.09851, + "z": -32.76868 + }, + "screenPosition": { + "x": 0.73966354, + "y": 0.52854645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.34183, + "y": 115.81963, + "z": -33.552437 + }, + "screenPosition": { + "x": 0.689122, + "y": 0.5061622 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.77997, + "y": 115.34399, + "z": -35.83334 + }, + "screenPosition": { + "x": 0.56353194, + "y": 0.5017257 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.10596, + "y": 117.32909, + "z": -37.131313 + }, + "screenPosition": { + "x": 0.5000046, + "y": 0.52135724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.66843, + "y": 120.0308, + "z": -37.729546 + }, + "screenPosition": { + "x": 0.46257174, + "y": 0.5485754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.91132, + "y": 121.40011, + "z": -35.171528 + }, + "screenPosition": { + "x": 0.6116799, + "y": 0.5617477 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.8516, + "y": 121.583084, + "z": -33.239014 + }, + "screenPosition": { + "x": 0.7175081, + "y": 0.5633652 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.17294, + "y": 120.488335, + "z": -31.632183 + }, + "screenPosition": { + "x": 0.8042289, + "y": 0.5522689 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -400.8131, + "y": 115.9518, + "z": -32.118034 + }, + "screenPosition": { + "x": 0.77304107, + "y": 0.507057 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -406.08307, + "y": 117.74963, + "z": -37.120556 + }, + "screenPosition": { + "x": 0.5014113, + "y": 0.5255342 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.9853, + "y": 120.0454, + "z": -36.146915 + }, + "screenPosition": { + "x": 0.5569778, + "y": 0.54833585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.56158, + "y": 122.27787, + "z": -34.865105 + }, + "screenPosition": { + "x": 0.6250086, + "y": 0.57051545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.11078, + "y": 122.32677, + "z": -32.561337 + }, + "screenPosition": { + "x": 0.75531214, + "y": 0.57071245 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.9267, + "y": 120.81979, + "z": -31.409079 + }, + "screenPosition": { + "x": 0.81313074, + "y": 0.55561584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.13013, + "y": 118.1798, + "z": -30.592249 + }, + "screenPosition": { + "x": 0.85872173, + "y": 0.52912307 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.6407, + "y": 116.36161, + "z": -33.847385 + }, + "screenPosition": { + "x": 0.6789237, + "y": 0.5113323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.9143, + "y": 119.16018, + "z": -35.116955 + }, + "screenPosition": { + "x": 0.6070753, + "y": 0.5395549 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.44333, + "y": 122.04718, + "z": -34.74797 + }, + "screenPosition": { + "x": 0.62947047, + "y": 0.5682269 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -408.42712, + "y": 125.981285, + "z": -39.536076 + }, + "screenPosition": { + "x": 0.37628573, + "y": 0.60790163 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -408.39917, + "y": 130.22527, + "z": -39.618538 + }, + "screenPosition": { + "x": 0.3775873, + "y": 0.6502817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.86685, + "y": 132.36737, + "z": -39.172752 + }, + "screenPosition": { + "x": 0.4011947, + "y": 0.6714117 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.4908, + "y": 134.16464, + "z": -37.92463 + }, + "screenPosition": { + "x": 0.47420463, + "y": 0.6894053 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.55115, + "y": 134.6506, + "z": -36.112812 + }, + "screenPosition": { + "x": 0.5737439, + "y": 0.69405895 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.4609, + "y": 133.86583, + "z": -34.126797 + }, + "screenPosition": { + "x": 0.6792509, + "y": 0.68587065 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.76474, + "y": 132.14005, + "z": -33.42781 + }, + "screenPosition": { + "x": 0.71149254, + "y": 0.6683865 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.61923, + "y": 130.12106, + "z": -33.239243 + }, + "screenPosition": { + "x": 0.7248372, + "y": 0.6485015 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.62546, + "y": 127.38846, + "z": -34.115585 + }, + "screenPosition": { + "x": 0.6755132, + "y": 0.6213841 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.4483, + "y": 134.2896, + "z": -33.1853 + }, + "screenPosition": { + "x": 0.71444154, + "y": 0.6889226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.28986, + "y": 135.82689, + "z": -32.135128 + }, + "screenPosition": { + "x": 0.7496434, + "y": 0.7023305 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.31927, + "y": 137.224, + "z": -31.258093 + }, + "screenPosition": { + "x": 0.7779585, + "y": 0.71430045 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -398.66104, + "y": 138.56892, + "z": -30.673477 + }, + "screenPosition": { + "x": 0.79520255, + "y": 0.725931 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -410.7946, + "y": 134.83876, + "z": -41.98967 + }, + "screenPosition": { + "x": 0.25267592, + "y": 0.6965694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.62204, + "y": 133.5724, + "z": -42.735443 + }, + "screenPosition": { + "x": 0.21061595, + "y": 0.6840144 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.98502, + "y": 132.07347, + "z": -43.03841 + }, + "screenPosition": { + "x": 0.19252492, + "y": 0.6690911 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.62927, + "y": 129.64612, + "z": -42.641655 + }, + "screenPosition": { + "x": 0.21090278, + "y": 0.64478415 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.786, + "y": 128.26935, + "z": -41.813274 + }, + "screenPosition": { + "x": 0.25039288, + "y": 0.63079613 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.6656, + "y": 127.131584, + "z": -40.730354 + }, + "screenPosition": { + "x": 0.31365317, + "y": 0.61953366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.57806, + "y": 126.134415, + "z": -39.681965 + }, + "screenPosition": { + "x": 0.3699462, + "y": 0.60947126 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.3117, + "y": 126.01866, + "z": -37.54746 + }, + "screenPosition": { + "x": 0.48651138, + "y": 0.60808635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.6352, + "y": 129.18826, + "z": -36.05188 + }, + "screenPosition": { + "x": 0.56525815, + "y": 0.63932055 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.94315, + "y": 131.7262, + "z": -37.347073 + }, + "screenPosition": { + "x": 0.503289, + "y": 0.665013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.0063, + "y": 131.54512, + "z": -39.282837 + }, + "screenPosition": { + "x": 0.3972852, + "y": 0.6634147 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.62573, + "y": 129.63107, + "z": -40.756897 + }, + "screenPosition": { + "x": 0.31187475, + "y": 0.64433557 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -409.33945, + "y": 125.52097, + "z": -40.382328 + }, + "screenPosition": { + "x": 0.3280898, + "y": 0.60338295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.83682, + "y": 124.0853, + "z": -38.932323 + }, + "screenPosition": { + "x": 0.40883467, + "y": 0.5889449 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.65063, + "y": 124.15451, + "z": -36.877956 + }, + "screenPosition": { + "x": 0.5170045, + "y": 0.58940274 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.07, + "y": 126.77907, + "z": -35.45859 + }, + "screenPosition": { + "x": 0.60147566, + "y": 0.6154484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.62604, + "y": 129.2202, + "z": -35.103596 + }, + "screenPosition": { + "x": 0.62337244, + "y": 0.6397671 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.84375, + "y": 131.56294, + "z": -36.308876 + }, + "screenPosition": { + "x": 0.5518865, + "y": 0.66284513 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.97076, + "y": 132.58455, + "z": -38.335552 + }, + "screenPosition": { + "x": 0.4447971, + "y": 0.6733343 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.9385, + "y": 131.38474, + "z": -40.15549 + }, + "screenPosition": { + "x": 0.34941763, + "y": 0.66190845 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.962, + "y": 129.85931, + "z": -41.07901 + }, + "screenPosition": { + "x": 0.29083645, + "y": 0.64645165 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.8529, + "y": 128.65196, + "z": -41.885998 + }, + "screenPosition": { + "x": 0.24702096, + "y": 0.63461274 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.7833, + "y": 130.00941, + "z": -42.79581 + }, + "screenPosition": { + "x": 0.2036807, + "y": 0.64847034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.88873, + "y": 128.34135, + "z": -43.792747 + }, + "screenPosition": { + "x": 0.14748083, + "y": 0.6319343 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -413.93835, + "y": 126.757484, + "z": -44.739365 + }, + "screenPosition": { + "x": 0.093719915, + "y": 0.61622053 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -415.4393, + "y": 123.38841, + "z": -45.399437 + }, + "screenPosition": { + "x": 0.03529775, + "y": 0.5826361 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -415.12814, + "y": 121.90918, + "z": -45.068893 + }, + "screenPosition": { + "x": 0.051857736, + "y": 0.5678411 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -411.5961, + "y": 121.62548, + "z": -42.404945 + }, + "screenPosition": { + "x": 0.21430667, + "y": 0.56481653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.98718, + "y": 123.72985, + "z": -41.88617 + }, + "screenPosition": { + "x": 0.24527405, + "y": 0.58571637 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -410.86182, + "y": 127.1905, + "z": -41.856934 + }, + "screenPosition": { + "x": 0.24676292, + "y": 0.62008053 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.52786, + "y": 129.00424, + "z": -43.47032 + }, + "screenPosition": { + "x": 0.16242373, + "y": 0.63834584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -414.13364, + "y": 128.91464, + "z": -44.978302 + }, + "screenPosition": { + "x": 0.08085955, + "y": 0.63765407 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -416.32224, + "y": 127.58597, + "z": -46.337406 + }, + "screenPosition": { + "x": 2.4876723E-4, + "y": 0.625568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -415.84567, + "y": 125.320274, + "z": -45.831123 + }, + "screenPosition": { + "x": 0.029707903, + "y": 0.60323226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -413.40674, + "y": 124.84373, + "z": -44.190342 + }, + "screenPosition": { + "x": 0.12024012, + "y": 0.5970568 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.0575, + "y": 126.01809, + "z": -42.951427 + }, + "screenPosition": { + "x": 0.19075726, + "y": 0.60865545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.35385, + "y": 127.90498, + "z": -42.337994 + }, + "screenPosition": { + "x": 0.22498818, + "y": 0.6273649 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.6264, + "y": 129.47205, + "z": -41.69397 + }, + "screenPosition": { + "x": 0.26047245, + "y": 0.6428464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.3174, + "y": 131.30841, + "z": -42.390926 + }, + "screenPosition": { + "x": 0.22713903, + "y": 0.66138774 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.7888, + "y": 132.25519, + "z": -43.79903 + }, + "screenPosition": { + "x": 0.15113066, + "y": 0.6709862 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -413.84586, + "y": 130.86655, + "z": -44.75765 + }, + "screenPosition": { + "x": 0.09731088, + "y": 0.657234 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -414.5956, + "y": 129.60005, + "z": -45.430355 + }, + "screenPosition": { + "x": 0.059245016, + "y": 0.6446697 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -415.19977, + "y": 128.0969, + "z": -45.960045 + }, + "screenPosition": { + "x": -0.013998303, + "y": 0.62667805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -413.95087, + "y": 126.15189, + "z": -44.735596 + }, + "screenPosition": { + "x": 0.0937059, + "y": 0.6101901 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.72052, + "y": 126.818054, + "z": -43.595528 + }, + "screenPosition": { + "x": 0.15670773, + "y": 0.616714 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.5201, + "y": 127.65706, + "z": -42.488014 + }, + "screenPosition": { + "x": 0.21810639, + "y": 0.624966 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -406.6284, + "y": 122.51624, + "z": -37.755566 + }, + "screenPosition": { + "x": 0.46557182, + "y": 0.5732169 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.3609, + "y": 121.70402, + "z": -39.364204 + }, + "screenPosition": { + "x": 0.375897, + "y": 0.56534153 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.62003, + "y": 124.74289, + "z": -40.6263 + }, + "screenPosition": { + "x": 0.31114137, + "y": 0.5956405 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -400.45395, + "y": 107.15439, + "z": -31.55484 + }, + "screenPosition": { + "x": 0.79485214, + "y": 0.41921818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.46576, + "y": 103.92135, + "z": -32.423626 + }, + "screenPosition": { + "x": 0.744061, + "y": 0.38705337 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.82703, + "y": 102.90325, + "z": -33.677826 + }, + "screenPosition": { + "x": 0.6627595, + "y": 0.37858585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.02112, + "y": 102.08396, + "z": -34.77988 + }, + "screenPosition": { + "x": 0.6133812, + "y": 0.36897427 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.30557, + "y": 101.41019, + "z": -35.97066 + }, + "screenPosition": { + "x": 0.5475994, + "y": 0.36237982 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -407.6684, + "y": 97.73973, + "z": -38.098885 + }, + "screenPosition": { + "x": 0.42751452, + "y": 0.32598624 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -405.84344, + "y": 92.12642, + "z": -36.23869 + }, + "screenPosition": { + "x": 0.5234753, + "y": 0.2697778 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.33173, + "y": 90.3915, + "z": -35.71295 + }, + "screenPosition": { + "x": 0.54482496, + "y": 0.25370663 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.7292, + "y": 89.50029, + "z": -34.182888 + }, + "screenPosition": { + "x": 0.6252494, + "y": 0.24512967 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -402.40628, + "y": 92.63217, + "z": -33.018936 + }, + "screenPosition": { + "x": 0.6999999, + "y": 0.27447718 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.39554, + "y": 92.63441, + "z": -34.88991 + }, + "screenPosition": { + "x": 0.59772485, + "y": 0.27470106 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.33212, + "y": 91.22457, + "z": -35.734657 + }, + "screenPosition": { + "x": 0.5386601, + "y": 0.26329994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.38782, + "y": 87.59247, + "z": -34.753468 + }, + "screenPosition": { + "x": 0.6000392, + "y": 0.2243792 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.73636, + "y": 85.51707, + "z": -34.087597 + }, + "screenPosition": { + "x": 0.6343218, + "y": 0.2035997 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.4368, + "y": 83.285995, + "z": -33.748676 + }, + "screenPosition": { + "x": 0.6505726, + "y": 0.18130216 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.05554, + "y": 82.27995, + "z": -33.36432 + }, + "screenPosition": { + "x": 0.6581607, + "y": 0.17450543 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.50128, + "y": 80.29256, + "z": -32.792126 + }, + "screenPosition": { + "x": 0.6998085, + "y": 0.15133138 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.25378, + "y": 78.96064, + "z": -32.525215 + }, + "screenPosition": { + "x": 0.71304023, + "y": 0.13801312 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -402.05875, + "y": 82.53895, + "z": -32.433475 + }, + "screenPosition": { + "x": 0.72170615, + "y": 0.17370667 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.02972, + "y": 90.13059, + "z": -34.48171 + }, + "screenPosition": { + "x": 0.6143563, + "y": 0.25036988 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.64468, + "y": 89.242, + "z": -32.215767 + }, + "screenPosition": { + "x": 0.7404463, + "y": 0.2405644 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.58344, + "y": 85.11636, + "z": -32.052464 + }, + "screenPosition": { + "x": 0.74516386, + "y": 0.19938236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.49017, + "y": 84.945076, + "z": -33.841404 + }, + "screenPosition": { + "x": 0.6400275, + "y": 0.1996693 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.77307, + "y": 90.9998, + "z": -34.26258 + }, + "screenPosition": { + "x": 0.6303502, + "y": 0.25832382 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.4523, + "y": 91.72472, + "z": -33.03898 + }, + "screenPosition": { + "x": 0.6922674, + "y": 0.26657334 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.1528, + "y": 93.1266, + "z": -31.852697 + }, + "screenPosition": { + "x": 0.752393, + "y": 0.28147593 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.18893, + "y": 95.228966, + "z": -31.940535 + }, + "screenPosition": { + "x": 0.7503411, + "y": 0.30221114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.29272, + "y": 97.29161, + "z": -33.031506 + }, + "screenPosition": { + "x": 0.7040668, + "y": 0.3209691 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -406.0607, + "y": 96.51837, + "z": -36.555527 + }, + "screenPosition": { + "x": 0.50672436, + "y": 0.31439087 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -405.82758, + "y": 94.346344, + "z": -36.280617 + }, + "screenPosition": { + "x": 0.5234483, + "y": 0.2919321 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.7321, + "y": 93.72244, + "z": -32.41277 + }, + "screenPosition": { + "x": 0.7342486, + "y": 0.2852903 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.85657, + "y": 95.56237, + "z": -32.57699 + }, + "screenPosition": { + "x": 0.72714883, + "y": 0.30366623 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.84253, + "y": 96.92778, + "z": -34.479816 + }, + "screenPosition": { + "x": 0.62452334, + "y": 0.31749493 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.79355, + "y": 92.94194, + "z": -34.33161 + }, + "screenPosition": { + "x": 0.6234781, + "y": 0.2787365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.36652, + "y": 92.2995, + "z": -32.03249 + }, + "screenPosition": { + "x": 0.7506512, + "y": 0.27161154 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.21442, + "y": 106.46854, + "z": -32.25249 + }, + "screenPosition": { + "x": 0.75601506, + "y": 0.41245008 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.95898, + "y": 108.18404, + "z": -32.05619 + }, + "screenPosition": { + "x": 0.76849633, + "y": 0.42954567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -401.55045, + "y": 112.79328, + "z": -32.730583 + }, + "screenPosition": { + "x": 0.73633325, + "y": 0.47560817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -403.06445, + "y": 114.183, + "z": -34.190132 + }, + "screenPosition": { + "x": 0.65315384, + "y": 0.48992893 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.9034, + "y": 114.91319, + "z": -35.93841 + }, + "screenPosition": { + "x": 0.55807185, + "y": 0.49741325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -407.96472, + "y": 114.257866, + "z": -38.8008 + }, + "screenPosition": { + "x": 0.40599757, + "y": 0.49087533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.8788, + "y": 112.747475, + "z": -39.621838 + }, + "screenPosition": { + "x": 0.35957435, + "y": 0.47589347 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -408.2234, + "y": 108.87442, + "z": -38.90615 + }, + "screenPosition": { + "x": 0.3947458, + "y": 0.43717209 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.8624, + "y": 108.86424, + "z": -37.625854 + }, + "screenPosition": { + "x": 0.4647232, + "y": 0.43693262 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -404.42554, + "y": 112.23769, + "z": -35.420403 + }, + "screenPosition": { + "x": 0.5887267, + "y": 0.47035447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -404.70886, + "y": 114.25032, + "z": -35.73845 + }, + "screenPosition": { + "x": 0.5643124, + "y": 0.49105856 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -406.0306, + "y": 116.132996, + "z": -37.02979 + }, + "screenPosition": { + "x": 0.50472355, + "y": 0.50939405 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.41782, + "y": 117.19292, + "z": -38.361637 + }, + "screenPosition": { + "x": 0.42484584, + "y": 0.52051526 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.0133, + "y": 117.50985, + "z": -39.870346 + }, + "screenPosition": { + "x": 0.35084862, + "y": 0.523438 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.4824, + "y": 117.93962, + "z": -41.263035 + }, + "screenPosition": { + "x": 0.27515548, + "y": 0.5278761 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.9264, + "y": 116.87363, + "z": -42.593838 + }, + "screenPosition": { + "x": 0.20131913, + "y": 0.5173833 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.08047, + "y": 114.68797, + "z": -42.682747 + }, + "screenPosition": { + "x": 0.16644904, + "y": 0.49402484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.76083, + "y": 112.91157, + "z": -42.3366 + }, + "screenPosition": { + "x": 0.20638634, + "y": 0.47830588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -410.90186, + "y": 111.357574, + "z": -41.488907 + }, + "screenPosition": { + "x": 0.24964394, + "y": 0.46291804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.2124, + "y": 111.14151, + "z": -39.89442 + }, + "screenPosition": { + "x": 0.34303498, + "y": 0.459899 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -407.6135, + "y": 112.417885, + "z": -38.423325 + }, + "screenPosition": { + "x": 0.4247551, + "y": 0.47247583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -408.07748, + "y": 116.15049, + "z": -38.955357 + }, + "screenPosition": { + "x": 0.394204, + "y": 0.51008517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.40973, + "y": 117.72321, + "z": -39.308147 + }, + "screenPosition": { + "x": 0.37591654, + "y": 0.5257831 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.32178, + "y": 119.586296, + "z": -40.213673 + }, + "screenPosition": { + "x": 0.3336892, + "y": 0.5442104 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -410.4085, + "y": 122.368904, + "z": -41.307037 + }, + "screenPosition": { + "x": 0.27726918, + "y": 0.572075 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -411.18622, + "y": 124.04681, + "z": -42.08148 + }, + "screenPosition": { + "x": 0.23664618, + "y": 0.58890015 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -412.08682, + "y": 125.73489, + "z": -42.971767 + }, + "screenPosition": { + "x": 0.18970066, + "y": 0.6058394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -407.65924, + "y": 131.31888, + "z": -38.950626 + }, + "screenPosition": { + "x": 0.41189736, + "y": 0.6609302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.11658, + "y": 133.34486, + "z": -39.43268 + }, + "screenPosition": { + "x": 0.38811836, + "y": 0.68117857 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -408.8189, + "y": 134.84604, + "z": -40.13169 + }, + "screenPosition": { + "x": 0.3542503, + "y": 0.69644195 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -409.43256, + "y": 136.56392, + "z": -40.75285 + }, + "screenPosition": { + "x": 0.32204732, + "y": 0.7136493 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -403.32123, + "y": 139.50397, + "z": -35.08041 + }, + "screenPosition": { + "x": 0.6258576, + "y": 0.74142224 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -402.44138, + "y": 140.81398, + "z": -34.28644 + }, + "screenPosition": { + "x": 0.6532338, + "y": 0.752485 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -401.39755, + "y": 142.87944, + "z": -33.357647 + }, + "screenPosition": { + "x": 0.6829989, + "y": 0.77004707 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.41946, + "y": 144.5957, + "z": -32.481705 + }, + "screenPosition": { + "x": 0.7109849, + "y": 0.78406656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.76382, + "y": 146.47665, + "z": -31.913265 + }, + "screenPosition": { + "x": 0.72657186, + "y": 0.7998605 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.39975, + "y": 148.69572, + "z": -31.627707 + }, + "screenPosition": { + "x": 0.73063534, + "y": 0.81897163 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -399.02927, + "y": 150.15512, + "z": -31.31665 + }, + "screenPosition": { + "x": 0.7377193, + "y": 0.8310852 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -398.69458, + "y": 152.07585, + "z": -31.051079 + }, + "screenPosition": { + "x": 0.74177414, + "y": 0.8471567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -398.7533, + "y": 154.16164, + "z": -31.159765 + }, + "screenPosition": { + "x": 0.73199016, + "y": 0.86541104 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -400.68347, + "y": 153.58763, + "z": -32.960403 + }, + "screenPosition": { + "x": 0.6681888, + "y": 0.86526465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -399.16516, + "y": 151.87077, + "z": -31.488422 + }, + "screenPosition": { + "x": 0.7266562, + "y": 0.84647125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -398.09595, + "y": 154.7866, + "z": -30.557535 + }, + "screenPosition": { + "x": 0.7515956, + "y": 0.8691483 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-070850/brain-CAFABC-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + -0.2913176266389703, + -0.7683789345132741, + -0.5698489742078012, + 0.0, + 0.20556954377684317, + -0.6320521860106529, + 0.7471620954187488, + 0.0, + -0.9342779046305323, + 0.10051789470239009, + 0.34208324975622695, + 0.0, + -479.83575518067147, + 124.75951287321841, + -13.151326940185466, + 1.0 + ] + }, + "baseImage": "20190825-070850/base.webp", + "version": 0, + "savedAt": 1.566717230481E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190825-081757-v0.json b/data/mapping/BAAAHS/afik/20190825-081757-v0.json new file mode 100644 index 0000000000..c59b4584a6 --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190825-081757-v0.json @@ -0,0 +1,3048 @@ +{ + "startedAt": 1.56672107728E12, + "surfaces": [ + { + "brainId": "CB3430", + "panelName": "F1P", + "pixels": [ + { + "modelPosition": { + "x": -38.97132, + "y": 163.22606, + "z": 51.398403 + }, + "screenPosition": { + "x": 0.8311904, + "y": 0.5534739 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.903515, + "y": 164.54906, + "z": 51.4539 + }, + "screenPosition": { + "x": 0.7945949, + "y": 0.57993454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.92519, + "y": 165.97313, + "z": 50.775932 + }, + "screenPosition": { + "x": 0.75602496, + "y": 0.6088989 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.880436, + "y": 168.50662, + "z": 54.120953 + }, + "screenPosition": { + "x": 0.6507609, + "y": 0.60414606 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.116432, + "y": 167.83374, + "z": 56.868633 + }, + "screenPosition": { + "x": 0.6428985, + "y": 0.5595647 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.963257, + "y": 166.34428, + "z": 57.086662 + }, + "screenPosition": { + "x": 0.6808194, + "y": 0.5251467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.023205, + "y": 165.05676, + "z": 56.275154 + }, + "screenPosition": { + "x": 0.7251507, + "y": 0.51173097 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.618256, + "y": 165.04362, + "z": 51.378918 + }, + "screenPosition": { + "x": 0.78097904, + "y": 0.5900346 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -47.32465, + "y": 168.8939, + "z": 52.596615 + }, + "screenPosition": { + "x": 0.65354884, + "y": 0.6252095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.572876, + "y": 167.41432, + "z": 57.7265 + }, + "screenPosition": { + "x": 0.64437604, + "y": 0.53686136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.01676, + "y": 169.07115, + "z": 58.10264 + }, + "screenPosition": { + "x": 0.59504706, + "y": 0.5650403 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.731113, + "y": 170.29909, + "z": 57.151707 + }, + "screenPosition": { + "x": 0.5703872, + "y": 0.5934775 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.06197, + "y": 171.29134, + "z": 55.692173 + }, + "screenPosition": { + "x": 0.5585481, + "y": 0.6214798 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.045532, + "y": 172.04907, + "z": 54.16176 + }, + "screenPosition": { + "x": 0.5541756, + "y": 0.64560336 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.932777, + "y": 173.34766, + "z": 54.098434 + }, + "screenPosition": { + "x": 0.5225936, + "y": 0.66022825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.749737, + "y": 174.56378, + "z": 54.668205 + }, + "screenPosition": { + "x": 0.4879959, + "y": 0.667587 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.42018, + "y": 175.65166, + "z": 55.750107 + }, + "screenPosition": { + "x": 0.45103043, + "y": 0.6763953 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.565083, + "y": 176.38435, + "z": 56.73051 + }, + "screenPosition": { + "x": 0.42159685, + "y": 0.68736696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.47986, + "y": 177.66643, + "z": 57.321804 + }, + "screenPosition": { + "x": 0.38145187, + "y": 0.71334434 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.297413, + "y": 178.91795, + "z": 57.244488 + }, + "screenPosition": { + "x": 0.34977737, + "y": 0.74254686 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -63.84042, + "y": 179.97813, + "z": 57.221027 + }, + "screenPosition": { + "x": 0.32191122, + "y": 0.76751906 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -65.44954, + "y": 181.11238, + "z": 56.667084 + }, + "screenPosition": { + "x": 0.29973468, + "y": 0.7962206 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -67.303444, + "y": 182.40039, + "z": 56.37638 + }, + "screenPosition": { + "x": 0.26936308, + "y": 0.8278677 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -76.18382, + "y": 188.33041, + "z": 59.41509 + }, + "screenPosition": { + "x": 0.2810129, + "y": 0.58571947 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -72.4152, + "y": 185.57771, + "z": 62.49258 + }, + "screenPosition": { + "x": 0.2941079, + "y": 0.54139555 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -70.6529, + "y": 184.39888, + "z": 61.926834 + }, + "screenPosition": { + "x": 0.26624113, + "y": 0.612446 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -70.704254, + "y": 184.58072, + "z": 59.215813 + }, + "screenPosition": { + "x": 0.27694324, + "y": 0.6524258 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -72.42916, + "y": 185.84052, + "z": 57.80971 + }, + "screenPosition": { + "x": 0.3061407, + "y": 0.5935103 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -74.2468, + "y": 187.03926, + "z": 58.70941 + }, + "screenPosition": { + "x": 0.30045336, + "y": 0.5842962 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -74.52787, + "y": 187.11118, + "z": 60.946507 + }, + "screenPosition": { + "x": 0.2735511, + "y": 0.5736306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -32.34995, + "y": 215.86794, + "z": 70.501976 + }, + "screenPosition": { + "x": 0.27837914, + "y": 0.54853356 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -71.073746, + "y": 184.58905, + "z": 63.75123 + }, + "screenPosition": { + "x": 0.25420997, + "y": 0.5892156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -69.30162, + "y": 183.35663, + "z": 64.05181 + }, + "screenPosition": { + "x": 0.2539259, + "y": 0.58866704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -67.32981, + "y": 182.05986, + "z": 63.008373 + }, + "screenPosition": { + "x": 0.18572575, + "y": 0.75397843 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -66.54186, + "y": 181.65671, + "z": 60.46389 + }, + "screenPosition": { + "x": 0.22609705, + "y": 0.7871294 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -67.837715, + "y": 182.67912, + "z": 58.002296 + }, + "screenPosition": { + "x": 0.23454523, + "y": 0.831162 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -70.13029, + "y": 184.25764, + "z": 57.90614 + }, + "screenPosition": { + "x": 0.29327455, + "y": 0.66464347 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -71.62358, + "y": 185.21368, + "z": 59.177982 + }, + "screenPosition": { + "x": 0.28082332, + "y": 0.634375 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -71.763596, + "y": 185.16693, + "z": 61.819412 + }, + "screenPosition": { + "x": 0.2636277, + "y": 0.605548 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -70.29562, + "y": 184.07515, + "z": 63.379295 + }, + "screenPosition": { + "x": 0.2573193, + "y": 0.59521925 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -67.53293, + "y": 182.29105, + "z": 61.310932 + }, + "screenPosition": { + "x": 0.1990574, + "y": 0.78649783 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -67.34197, + "y": 182.27951, + "z": 59.100643 + }, + "screenPosition": { + "x": 0.22676483, + "y": 0.8184123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -66.337944, + "y": 181.7127, + "z": 56.840275 + }, + "screenPosition": { + "x": 0.28077927, + "y": 0.81014407 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -64.30862, + "y": 180.34729, + "z": 56.336174 + }, + "screenPosition": { + "x": 0.32502332, + "y": 0.7791721 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.3733, + "y": 178.96336, + "z": 57.367683 + }, + "screenPosition": { + "x": 0.34684014, + "y": 0.74310976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.37489, + "y": 178.80043, + "z": 60.401 + }, + "screenPosition": { + "x": 0.30556604, + "y": 0.7259835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -65.07035, + "y": 180.63907, + "z": 60.607864 + }, + "screenPosition": { + "x": 0.2520313, + "y": 0.76376027 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -65.944664, + "y": 181.38824, + "z": 57.849457 + }, + "screenPosition": { + "x": 0.27360126, + "y": 0.7994834 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.959126, + "y": 171.94992, + "z": 54.89883 + }, + "screenPosition": { + "x": 0.5494136, + "y": 0.6372092 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.763157, + "y": 171.07198, + "z": 55.956406 + }, + "screenPosition": { + "x": 0.5616813, + "y": 0.61608446 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.68196, + "y": 170.24261, + "z": 57.57204 + }, + "screenPosition": { + "x": 0.56758994, + "y": 0.5880256 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.304646, + "y": 169.19595, + "z": 59.448242 + }, + "screenPosition": { + "x": 0.57610875, + "y": 0.54561794 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.2517, + "y": 168.39761, + "z": 60.848656 + }, + "screenPosition": { + "x": 0.5816126, + "y": 0.50622696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.163715, + "y": 167.55836, + "z": 62.56121 + }, + "screenPosition": { + "x": 0.5846114, + "y": 0.46085006 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.050743, + "y": 166.03282, + "z": 63.956894 + }, + "screenPosition": { + "x": 0.60991305, + "y": 0.40645906 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.38633, + "y": 165.84451, + "z": 59.007065 + }, + "screenPosition": { + "x": 0.6722047, + "y": 0.48342058 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.364265, + "y": 167.21542, + "z": 58.75726 + }, + "screenPosition": { + "x": 0.6378693, + "y": 0.5159019 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.24916, + "y": 168.47713, + "z": 59.345993 + }, + "screenPosition": { + "x": 0.5968121, + "y": 0.53242236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.137016, + "y": 169.78148, + "z": 59.183765 + }, + "screenPosition": { + "x": 0.5632083, + "y": 0.5617394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.67003, + "y": 170.75897, + "z": 60.563 + }, + "screenPosition": { + "x": 0.52080035, + "y": 0.5598124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.278625, + "y": 171.86305, + "z": 60.56012 + }, + "screenPosition": { + "x": 0.49112275, + "y": 0.5753831 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.080505, + "y": 172.98125, + "z": 62.749474 + }, + "screenPosition": { + "x": 0.4352903, + "y": 0.56971556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.308674, + "y": 172.99559, + "z": 65.37983 + }, + "screenPosition": { + "x": 0.40443197, + "y": 0.52745754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -52.877266, + "y": 171.76715, + "z": 69.931244 + }, + "screenPosition": { + "x": 0.38520855, + "y": 0.42765445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.918465, + "y": 167.7262, + "z": 69.03613 + }, + "screenPosition": { + "x": 0.505263, + "y": 0.35856318 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -49.813923, + "y": 169.61165, + "z": 70.915344 + }, + "screenPosition": { + "x": 0.4323637, + "y": 0.36692336 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.15569, + "y": 167.83424, + "z": 70.04879 + }, + "screenPosition": { + "x": 0.49063164, + "y": 0.34425816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -50.016037, + "y": 170.0906, + "z": 64.623055 + }, + "screenPosition": { + "x": 0.49204627, + "y": 0.47963932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.779186, + "y": 170.47241, + "z": 67.24768 + }, + "screenPosition": { + "x": 0.45136127, + "y": 0.444672 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.849285, + "y": 167.11427, + "z": 66.78323 + }, + "screenPosition": { + "x": 0.54790187, + "y": 0.3826906 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.35208, + "y": 167.61024, + "z": 63.992386 + }, + "screenPosition": { + "x": 0.56667507, + "y": 0.43855786 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -47.787815, + "y": 168.68433, + "z": 62.35059 + }, + "screenPosition": { + "x": 0.55641913, + "y": 0.48734105 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -51.419506, + "y": 171.20709, + "z": 61.78763 + }, + "screenPosition": { + "x": 0.49448702, + "y": 0.5490898 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -54.538136, + "y": 173.54678, + "z": 58.098824 + }, + "screenPosition": { + "x": 0.47600445, + "y": 0.6232322 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.722218, + "y": 173.10628, + "z": 55.890244 + }, + "screenPosition": { + "x": 0.5103205, + "y": 0.6403872 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.55923, + "y": 171.69717, + "z": 54.49765 + }, + "screenPosition": { + "x": 0.5598772, + "y": 0.63835007 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.679695, + "y": 170.32248, + "z": 56.06641 + }, + "screenPosition": { + "x": 0.58078676, + "y": 0.6057105 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.97632, + "y": 169.63808, + "z": 59.796432 + }, + "screenPosition": { + "x": 0.5600885, + "y": 0.54911435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -49.951252, + "y": 170.13979, + "z": 62.891373 + }, + "screenPosition": { + "x": 0.5107149, + "y": 0.5089478 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -51.125942, + "y": 170.78792, + "z": 65.81377 + }, + "screenPosition": { + "x": 0.4593592, + "y": 0.47463313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.25844, + "y": 172.28629, + "z": 65.1684 + }, + "screenPosition": { + "x": 0.42613262, + "y": 0.51621705 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.10615, + "y": 172.96945, + "z": 63.29311 + }, + "screenPosition": { + "x": 0.42924702, + "y": 0.5610054 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -56.676434, + "y": 174.59474, + "z": 65.8565 + }, + "screenPosition": { + "x": 0.355522, + "y": 0.55276805 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.00429, + "y": 174.72289, + "z": 67.64782 + }, + "screenPosition": { + "x": 0.33133596, + "y": 0.52618986 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.015057, + "y": 176.03412, + "z": 68.918144 + }, + "screenPosition": { + "x": 0.28106058, + "y": 0.5326015 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.319675, + "y": 177.59628, + "z": 69.27751 + }, + "screenPosition": { + "x": 0.23237494, + "y": 0.5526904 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.251953, + "y": 178.37207, + "z": 66.76258 + }, + "screenPosition": { + "x": 0.24248424, + "y": 0.61624986 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.430344, + "y": 177.92827, + "z": 64.542496 + }, + "screenPosition": { + "x": 0.28064024, + "y": 0.64247245 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.301334, + "y": 176.44348, + "z": 64.98089 + }, + "screenPosition": { + "x": 0.31571433, + "y": 0.6048323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -60.638317, + "y": 177.18874, + "z": 68.16698 + }, + "screenPosition": { + "x": 0.25838938, + "y": 0.5687925 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -60.825348, + "y": 177.48454, + "z": 65.07022 + }, + "screenPosition": { + "x": 0.28613073, + "y": 0.62551063 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.12633, + "y": 176.24353, + "z": 66.45768 + }, + "screenPosition": { + "x": 0.3037974, + "y": 0.5771351 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -52.92202, + "y": 172.55977, + "z": 55.84129 + }, + "screenPosition": { + "x": 0.5244158, + "y": 0.6347111 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -56.853764, + "y": 175.33318, + "z": 54.45126 + }, + "screenPosition": { + "x": 0.47256392, + "y": 0.6773017 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.614445, + "y": 176.48201, + "z": 55.550877 + }, + "screenPosition": { + "x": 0.43315384, + "y": 0.6953131 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.315353, + "y": 177.6021, + "z": 56.42383 + }, + "screenPosition": { + "x": 0.39474997, + "y": 0.7159717 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.439735, + "y": 178.22719, + "z": 59.133873 + }, + "screenPosition": { + "x": 0.34116668, + "y": 0.71798813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -58.243565, + "y": 175.81078, + "z": 63.25735 + }, + "screenPosition": { + "x": 0.35251644, + "y": 0.6204518 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.26007, + "y": 174.44763, + "z": 63.292797 + }, + "screenPosition": { + "x": 0.38911682, + "y": 0.59163344 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.267178, + "y": 173.15393, + "z": 61.92497 + }, + "screenPosition": { + "x": 0.4412301, + "y": 0.5805098 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.762955, + "y": 172.9881, + "z": 58.59265 + }, + "screenPosition": { + "x": 0.48438704, + "y": 0.6114431 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.14135, + "y": 174.68246, + "z": 57.44339 + }, + "screenPosition": { + "x": 0.45562848, + "y": 0.6459915 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.31465, + "y": 176.13916, + "z": 58.08649 + }, + "screenPosition": { + "x": 0.41103843, + "y": 0.67473316 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.096638, + "y": 176.53891, + "z": 60.6183 + }, + "screenPosition": { + "x": 0.3660573, + "y": 0.6696269 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.551468, + "y": 176.7293, + "z": 62.870056 + }, + "screenPosition": { + "x": 0.33205193, + "y": 0.6458073 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.94962, + "y": 176.16505, + "z": 65.666275 + }, + "screenPosition": { + "x": 0.3151324, + "y": 0.58831984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -56.878407, + "y": 174.6612, + "z": 67.19109 + }, + "screenPosition": { + "x": 0.33830425, + "y": 0.53234136 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.760727, + "y": 173.2252, + "z": 66.87086 + }, + "screenPosition": { + "x": 0.38097417, + "y": 0.5078561 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -53.417355, + "y": 172.55078, + "z": 62.293972 + }, + "screenPosition": { + "x": 0.45278507, + "y": 0.56451726 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -60.649853, + "y": 177.28418, + "z": 66.54833 + }, + "screenPosition": { + "x": 0.27449605, + "y": 0.5972127 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -62.0727, + "y": 178.49675, + "z": 62.181774 + }, + "screenPosition": { + "x": 0.29219756, + "y": 0.69326717 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -61.515984, + "y": 178.23187, + "z": 60.014904 + }, + "screenPosition": { + "x": 0.32777423, + "y": 0.71385366 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.21561, + "y": 177.44693, + "z": 58.027435 + }, + "screenPosition": { + "x": 0.37774485, + "y": 0.7049534 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.653778, + "y": 176.40337, + "z": 57.504604 + }, + "screenPosition": { + "x": 0.41158614, + "y": 0.68380886 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -55.94164, + "y": 174.49501, + "z": 58.375355 + }, + "screenPosition": { + "x": 0.44953492, + "y": 0.6361724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.665524, + "y": 173.52792, + "z": 60.064434 + }, + "screenPosition": { + "x": 0.45430827, + "y": 0.6031784 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -56.450333, + "y": 174.45953, + "z": 65.48753 + }, + "screenPosition": { + "x": 0.36344102, + "y": 0.55602556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.65991, + "y": 175.99857, + "z": 65.06823 + }, + "screenPosition": { + "x": 0.32649872, + "y": 0.5947591 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -61.934032, + "y": 178.37967, + "z": 62.58718 + }, + "screenPosition": { + "x": 0.29051077, + "y": 0.6846186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.602135, + "y": 178.97739, + "z": 60.01262 + }, + "screenPosition": { + "x": 0.30673155, + "y": 0.73215634 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.247097, + "y": 178.86052, + "z": 57.66799 + }, + "screenPosition": { + "x": 0.3453066, + "y": 0.739478 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.617798, + "y": 177.82402, + "z": 56.15818 + }, + "screenPosition": { + "x": 0.39251703, + "y": 0.72211516 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -58.049274, + "y": 176.04167, + "z": 56.52146 + }, + "screenPosition": { + "x": 0.43262696, + "y": 0.6808828 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.47347, + "y": 175.50659, + "z": 59.10915 + }, + "screenPosition": { + "x": 0.4144651, + "y": 0.6544579 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -57.739346, + "y": 175.56358, + "z": 61.429398 + }, + "screenPosition": { + "x": 0.38155589, + "y": 0.6411133 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -59.37693, + "y": 176.48871, + "z": 65.104065 + }, + "screenPosition": { + "x": 0.3130787, + "y": 0.603737 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.738083, + "y": 177.34377, + "z": 66.56609 + }, + "screenPosition": { + "x": 0.2727193, + "y": 0.5980834 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.795418, + "y": 178.70401, + "z": 67.52118 + }, + "screenPosition": { + "x": 0.2249657, + "y": 0.6103831 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -64.78099, + "y": 180.10359, + "z": 66.83802 + }, + "screenPosition": { + "x": 0.18706173, + "y": 0.63991594 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -66.55561, + "y": 181.38431, + "z": 65.675995 + }, + "screenPosition": { + "x": 0.16420983, + "y": 0.68390465 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -67.41876, + "y": 182.11995, + "z": 63.026024 + }, + "screenPosition": { + "x": 0.1839769, + "y": 0.754793 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -66.6054, + "y": 181.6879, + "z": 60.693558 + }, + "screenPosition": { + "x": 0.22288641, + "y": 0.7834552 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -64.47446, + "y": 180.28925, + "z": 59.514324 + }, + "screenPosition": { + "x": 0.27736196, + "y": 0.76678836 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -62.75355, + "y": 179.10898, + "z": 59.50082 + }, + "screenPosition": { + "x": 0.31109983, + "y": 0.7376625 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -60.305923, + "y": 177.34418, + "z": 61.07401 + }, + "screenPosition": { + "x": 0.3365972, + "y": 0.68654186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.967762, + "y": 176.95789, + "z": 63.925766 + }, + "screenPosition": { + "x": 0.31365004, + "y": 0.63329667 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -63.287773, + "y": 179.10092, + "z": 66.429726 + }, + "screenPosition": { + "x": 0.22654054, + "y": 0.6367869 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -65.16072, + "y": 180.41281, + "z": 65.9389 + }, + "screenPosition": { + "x": 0.19659162, + "y": 0.6719829 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -66.56798, + "y": 181.48067, + "z": 64.05097 + }, + "screenPosition": { + "x": 0.18940766, + "y": 0.7249471 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -66.66908, + "y": 181.67807, + "z": 61.683224 + }, + "screenPosition": { + "x": 0.21139914, + "y": 0.7677174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -57.973015, + "y": 175.25461, + "z": 70.10888 + }, + "screenPosition": { + "x": 0.28846985, + "y": 0.49700046 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.391716, + "y": 176.34102, + "z": 68.02289 + }, + "screenPosition": { + "x": 0.2830698, + "y": 0.5535848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -59.956318, + "y": 176.8625, + "z": 65.54442 + }, + "screenPosition": { + "x": 0.29774922, + "y": 0.60449994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -55.295727, + "y": 173.75546, + "z": 63.85448 + }, + "screenPosition": { + "x": 0.4014214, + "y": 0.56811816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -52.72432, + "y": 171.79759, + "z": 67.42713 + }, + "screenPosition": { + "x": 0.41342166, + "y": 0.4688944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -54.742653, + "y": 172.87544, + "z": 73.10966 + }, + "screenPosition": { + "x": 0.31500763, + "y": 0.39362678 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -55.42626, + "y": 173.57565, + "z": 68.836426 + }, + "screenPosition": { + "x": 0.3487535, + "y": 0.48300567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.123787, + "y": 172.74266, + "z": 67.71081 + }, + "screenPosition": { + "x": 0.38437235, + "y": 0.4841378 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.113766, + "y": 171.34459, + "z": 68.055824 + }, + "screenPosition": { + "x": 0.41834548, + "y": 0.44953832 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.358894, + "y": 170.07246, + "z": 69.30977 + }, + "screenPosition": { + "x": 0.43839926, + "y": 0.4026994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -49.031826, + "y": 169.043, + "z": 71.505554 + }, + "screenPosition": { + "x": 0.44098487, + "y": 0.34550115 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -50.154396, + "y": 169.6733, + "z": 74.09633 + }, + "screenPosition": { + "x": 0.39394414, + "y": 0.31623456 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.159664, + "y": 171.02701, + "z": 74.51126 + }, + "screenPosition": { + "x": 0.34701952, + "y": 0.33200556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -53.780865, + "y": 172.1854, + "z": 73.6643 + }, + "screenPosition": { + "x": 0.32706696, + "y": 0.37041318 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -54.265198, + "y": 172.65778, + "z": 71.07528 + }, + "screenPosition": { + "x": 0.34781173, + "y": 0.4274158 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -52.53914, + "y": 171.58533, + "z": 69.00228 + }, + "screenPosition": { + "x": 0.40087602, + "y": 0.43906385 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -48.2726, + "y": 168.58257, + "z": 70.38484 + }, + "screenPosition": { + "x": 0.466432, + "y": 0.35427094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -48.120785, + "y": 168.16144, + "z": 76.24606 + }, + "screenPosition": { + "x": 0.3951416, + "y": 0.23937306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.26317, + "y": 166.48122, + "z": 71.0519 + }, + "screenPosition": { + "x": 0.51577944, + "y": 0.29984087 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.585957, + "y": 165.25061, + "z": 72.52349 + }, + "screenPosition": { + "x": 0.53218853, + "y": 0.25030455 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.830276, + "y": 166.55753, + "z": 76.83795 + }, + "screenPosition": { + "x": 0.44686884, + "y": 0.20689829 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -39.597794, + "y": 162.50638, + "z": 72.65803 + }, + "screenPosition": { + "x": 0.605097, + "y": 0.19127652 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.932903, + "y": 161.28462, + "z": 74.12258 + }, + "screenPosition": { + "x": 0.6213988, + "y": 0.14202175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.45251, + "y": 163.82188, + "z": 71.86887 + }, + "screenPosition": { + "x": 0.5785444, + "y": 0.23140268 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.127693, + "y": 162.8295, + "z": 73.40755 + }, + "screenPosition": { + "x": 0.587714, + "y": 0.18570751 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -42.808582, + "y": 164.72581, + "z": 72.36273 + }, + "screenPosition": { + "x": 0.5482887, + "y": 0.2420588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.510193, + "y": 165.2457, + "z": 71.65304 + }, + "screenPosition": { + "x": 0.54237145, + "y": 0.2644168 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.73668, + "y": 166.32822, + "z": 67.19931 + }, + "screenPosition": { + "x": 0.5644372, + "y": 0.3596092 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.031166, + "y": 163.91264, + "z": 64.8433 + }, + "screenPosition": { + "x": 0.6572378, + "y": 0.34805566 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.16773, + "y": 165.26299, + "z": 66.98691 + }, + "screenPosition": { + "x": 0.59581274, + "y": 0.34101108 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.268917, + "y": 165.95451, + "z": 68.173836 + }, + "screenPosition": { + "x": 0.5633262, + "y": 0.335947 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -47.111374, + "y": 168.0303, + "z": 65.86063 + }, + "screenPosition": { + "x": 0.5336889, + "y": 0.41673952 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.869076, + "y": 165.12407, + "z": 78.456795 + }, + "screenPosition": { + "x": 0.4670877, + "y": 0.15075608 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.622143, + "y": 165.9906, + "z": 71.98935 + }, + "screenPosition": { + "x": 0.51827043, + "y": 0.27436182 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -42.158787, + "y": 164.51236, + "z": 68.06354 + }, + "screenPosition": { + "x": 0.60375583, + "y": 0.30787253 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.078114, + "y": 163.10167, + "z": 67.74506 + }, + "screenPosition": { + "x": 0.6457357, + "y": 0.28385082 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.820644, + "y": 161.52554, + "z": 68.24251 + }, + "screenPosition": { + "x": 0.6827824, + "y": 0.24307236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.3232, + "y": 161.07451, + "z": 70.27025 + }, + "screenPosition": { + "x": 0.67160434, + "y": 0.20060258 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.278904, + "y": 160.941, + "z": 72.17718 + }, + "screenPosition": { + "x": 0.6601071, + "y": 0.1581167 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.567516, + "y": 160.98619, + "z": 75.00413 + }, + "screenPosition": { + "x": 0.62336844, + "y": 0.116804585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.142174, + "y": 161.93964, + "z": 77.35647 + }, + "screenPosition": { + "x": 0.5662578, + "y": 0.102761194 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.30025, + "y": 163.52298, + "z": 75.46434 + }, + "screenPosition": { + "x": 0.5451263, + "y": 0.16647309 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.776352, + "y": 163.94818, + "z": 73.64333 + }, + "screenPosition": { + "x": 0.5546175, + "y": 0.20503063 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.647514, + "y": 164.00548, + "z": 70.94856 + }, + "screenPosition": { + "x": 0.5841726, + "y": 0.25023618 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.21166, + "y": 163.83243, + "z": 68.61731 + }, + "screenPosition": { + "x": 0.61581933, + "y": 0.28473997 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.085297, + "y": 162.36789, + "z": 68.71495 + }, + "screenPosition": { + "x": 0.65445465, + "y": 0.25280485 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.07948, + "y": 162.7739, + "z": 73.823906 + }, + "screenPosition": { + "x": 0.5844122, + "y": 0.17775491 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.316116, + "y": 165.02223, + "z": 73.32226 + }, + "screenPosition": { + "x": 0.5291651, + "y": 0.23252663 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.869595, + "y": 166.15189, + "z": 72.147354 + }, + "screenPosition": { + "x": 0.51206684, + "y": 0.27512255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.488605, + "y": 167.31435, + "z": 71.19695 + }, + "screenPosition": { + "x": 0.49148372, + "y": 0.31473103 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -48.19793, + "y": 168.53795, + "z": 70.26235 + }, + "screenPosition": { + "x": 0.46905863, + "y": 0.35534704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -49.682117, + "y": 169.7896, + "z": 65.951645 + }, + "screenPosition": { + "x": 0.48487118, + "y": 0.45169917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -47.180885, + "y": 168.23378, + "z": 62.979767 + }, + "screenPosition": { + "x": 0.561443, + "y": 0.468018 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.556694, + "y": 167.14836, + "z": 62.439426 + }, + "screenPosition": { + "x": 0.59715456, + "y": 0.45435926 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.688168, + "y": 165.90369, + "z": 61.74347 + }, + "screenPosition": { + "x": 0.63898796, + "y": 0.43994334 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.772594, + "y": 163.73802, + "z": 64.79092 + }, + "screenPosition": { + "x": 0.66255593, + "y": 0.34527373 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.364723, + "y": 166.10599, + "z": 66.58865 + }, + "screenPosition": { + "x": 0.5774912, + "y": 0.36491898 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.72873, + "y": 167.30513, + "z": 61.723804 + }, + "screenPosition": { + "x": 0.60107094, + "y": 0.4690669 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.031322, + "y": 166.21652, + "z": 60.31331 + }, + "screenPosition": { + "x": 0.64701515, + "y": 0.4697878 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.42689, + "y": 164.45149, + "z": 59.90051 + }, + "screenPosition": { + "x": 0.6994995, + "y": 0.43974662 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.71856, + "y": 163.22247, + "z": 60.947823 + }, + "screenPosition": { + "x": 0.7209754, + "y": 0.3973962 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.297634, + "y": 162.1589, + "z": 62.583206 + }, + "screenPosition": { + "x": 0.7309606, + "y": 0.3486464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.07508, + "y": 161.24103, + "z": 64.041885 + }, + "screenPosition": { + "x": 0.7390314, + "y": 0.30580148 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.380424, + "y": 162.00723, + "z": 66.438705 + }, + "screenPosition": { + "x": 0.6905409, + "y": 0.2825192 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.46748, + "y": 163.46848, + "z": 65.90346 + }, + "screenPosition": { + "x": 0.65705067, + "y": 0.3215348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.613155, + "y": 164.54262, + "z": 60.57921 + }, + "screenPosition": { + "x": 0.6893909, + "y": 0.43076676 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.60324, + "y": 163.25432, + "z": 58.89566 + }, + "screenPosition": { + "x": 0.74381715, + "y": 0.43158075 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.17382, + "y": 161.56134, + "z": 59.371464 + }, + "screenPosition": { + "x": 0.784286, + "y": 0.38873538 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -36.788147, + "y": 161.15674, + "z": 61.959236 + }, + "screenPosition": { + "x": 0.7653782, + "y": 0.33807832 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.666122, + "y": 163.86249, + "z": 61.13775 + }, + "screenPosition": { + "x": 0.70140463, + "y": 0.4075524 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.78364, + "y": 164.08057, + "z": 58.596394 + }, + "screenPosition": { + "x": 0.72484076, + "y": 0.45358676 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.301952, + "y": 163.19519, + "z": 56.165314 + }, + "screenPosition": { + "x": 0.7769625, + "y": 0.47496003 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.373474, + "y": 163.89597, + "z": 56.804707 + }, + "screenPosition": { + "x": 0.75054985, + "y": 0.4790323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.961708, + "y": 163.75073, + "z": 54.26474 + }, + "screenPosition": { + "x": 0.783834, + "y": 0.51751757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.37252, + "y": 162.74054, + "z": 52.777504 + }, + "screenPosition": { + "x": 0.8284415, + "y": 0.52088606 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-081757/brain-CB3430-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + -0.7892654176573553, + 0.5895988654294273, + 0.17156129626023478, + 0.0, + 0.1064869138944014, + -0.14373765877035427, + 0.983869921595565, + 0.0, + 0.6047484085629382, + 0.7948035375711088, + 0.05066259966725406, + 0.0, + 11.23881138873319, + 246.41095328593096, + 78.55439485523557, + 1.0 + ] + }, + "baseImage": "20190825-081757/base.webp", + "version": 0, + "savedAt": 1.56672133252E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/afik/20190825-083859-v0.json b/data/mapping/BAAAHS/afik/20190825-083859-v0.json new file mode 100644 index 0000000000..847662149b --- /dev/null +++ b/data/mapping/BAAAHS/afik/20190825-083859-v0.json @@ -0,0 +1,2441 @@ +{ + "startedAt": 1.566722339591E12, + "surfaces": [ + { + "brainId": "C783C0", + "panelName": "F24P", + "pixels": [ + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.80616, + "y": 33.722847, + "z": -15.30876 + }, + "screenPosition": { + "x": 0.86608666, + "y": 0.06616402 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.132133, + "y": 32.8287, + "z": -11.9245405 + }, + "screenPosition": { + "x": 0.8086572, + "y": 0.08487918 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.920303, + "y": 33.4914, + "z": -9.949442 + }, + "screenPosition": { + "x": 0.75750124, + "y": 0.10757186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.335068, + "y": 34.678066, + "z": -7.56995 + }, + "screenPosition": { + "x": 0.73549706, + "y": 0.15317713 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.65207, + "y": 38.090637, + "z": -5.490454 + }, + "screenPosition": { + "x": 0.5504243, + "y": 0.24687012 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.044483, + "y": 39.322624, + "z": -3.5668318 + }, + "screenPosition": { + "x": 0.5342554, + "y": 0.2829155 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.519993, + "y": 40.15294, + "z": -0.8492238 + }, + "screenPosition": { + "x": 0.51144403, + "y": 0.3243049 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.558033, + "y": 40.30899, + "z": 2.1616678 + }, + "screenPosition": { + "x": 0.45764872, + "y": 0.34516302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.112976, + "y": 39.18374, + "z": 3.9889069 + }, + "screenPosition": { + "x": 0.4180115, + "y": 0.33983684 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.41287, + "y": 38.57566, + "z": 5.6332984 + }, + "screenPosition": { + "x": 0.38620207, + "y": 0.3422157 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.623665, + "y": 38.148235, + "z": 7.419446 + }, + "screenPosition": { + "x": 0.35375807, + "y": 0.3489933 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.2367, + "y": 38.932873, + "z": 7.0934577 + }, + "screenPosition": { + "x": 0.36694488, + "y": 0.3603989 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.94659, + "y": 39.521122, + "z": 5.983738 + }, + "screenPosition": { + "x": 0.39039707, + "y": 0.36191416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.66607, + "y": 40.089928, + "z": 3.070091 + }, + "screenPosition": { + "x": 0.44145408, + "y": 0.34855226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.833427, + "y": 39.750576, + "z": -0.12384667 + }, + "screenPosition": { + "x": 0.48681897, + "y": 0.31720605 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.376392, + "y": 34.594276, + "z": 0.3227469 + }, + "screenPosition": { + "x": 0.57209104, + "y": 0.22305301 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.756058, + "y": 33.824436, + "z": -1.5819253 + }, + "screenPosition": { + "x": 0.58779615, + "y": 0.18285267 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.35898, + "y": 34.62958, + "z": -4.1906223 + }, + "screenPosition": { + "x": 0.6659103, + "y": 0.18281052 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.623024, + "y": 34.09419, + "z": 1.9280288 + }, + "screenPosition": { + "x": 0.5164649, + "y": 0.21449505 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.667946, + "y": 34.0031, + "z": -1.4258215 + }, + "screenPosition": { + "x": 0.58434564, + "y": 0.18438332 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.69214, + "y": 33.95404, + "z": -4.7125106 + }, + "screenPosition": { + "x": 0.6508169, + "y": 0.1548968 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.600212, + "y": 38.19579, + "z": -3.155496 + }, + "screenPosition": { + "x": 0.5167595, + "y": 0.2664932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.95837, + "y": 39.497234, + "z": -0.76206005 + }, + "screenPosition": { + "x": 0.49391395, + "y": 0.3077536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.058517, + "y": 39.294167, + "z": 2.237192 + }, + "screenPosition": { + "x": 0.44615662, + "y": 0.32782683 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.71603, + "y": 37.960945, + "z": 4.9616275 + }, + "screenPosition": { + "x": 0.3904101, + "y": 0.32589146 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.927013, + "y": 33.47779, + "z": 4.627619 + }, + "screenPosition": { + "x": 0.4628118, + "y": 0.23829545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.713963, + "y": 33.909794, + "z": 0.33931875 + }, + "screenPosition": { + "x": 0.54884344, + "y": 0.20013201 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.18464, + "y": 37.01076, + "z": 0.5846499 + }, + "screenPosition": { + "x": 0.44828045, + "y": 0.2746614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.52778, + "y": 38.34266, + "z": 1.8859541 + }, + "screenPosition": { + "x": 0.4418724, + "y": 0.30825627 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.55298, + "y": 38.29156, + "z": 4.6395197 + }, + "screenPosition": { + "x": 0.39880264, + "y": 0.32919472 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.440617, + "y": 38.519394, + "z": 7.2047176 + }, + "screenPosition": { + "x": 0.36095154, + "y": 0.3538989 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.87404, + "y": 37.640553, + "z": 8.986509 + }, + "screenPosition": { + "x": 0.32369524, + "y": 0.3526035 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.123158, + "y": 39.163097, + "z": 11.907197 + }, + "screenPosition": { + "x": 0.2925493, + "y": 0.4041729 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.32702, + "y": 40.777515, + "z": 13.376968 + }, + "screenPosition": { + "x": 0.28547964, + "y": 0.44595248 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.25763, + "y": 42.946064, + "z": 14.533419 + }, + "screenPosition": { + "x": 0.28923795, + "y": 0.49561617 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.238686, + "y": 45.01225, + "z": 13.130876 + }, + "screenPosition": { + "x": 0.33356053, + "y": 0.5213888 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.867977, + "y": 43.50285, + "z": 8.499711 + }, + "screenPosition": { + "x": 0.39885944, + "y": 0.4601186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.217224, + "y": 43.02777, + "z": 7.549991 + }, + "screenPosition": { + "x": 0.40187824, + "y": 0.43770552 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.98669, + "y": 37.412136, + "z": 10.384917 + }, + "screenPosition": { + "x": 0.29898745, + "y": 0.3599006 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.701706, + "y": 35.962315, + "z": 12.096455 + }, + "screenPosition": { + "x": 0.25643972, + "y": 0.34770444 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.385895, + "y": 34.575005, + "z": 13.639262 + }, + "screenPosition": { + "x": 0.30102012, + "y": 0.3432847 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.541134, + "y": 34.26023, + "z": 15.312055 + }, + "screenPosition": { + "x": 0.246019, + "y": 0.33446425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.376167, + "y": 34.59473, + "z": 19.068323 + }, + "screenPosition": { + "x": 0.1886409, + "y": 0.39256513 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.301308, + "y": 36.774204, + "z": 18.711832 + }, + "screenPosition": { + "x": 0.15571551, + "y": 0.4177728 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.381264, + "y": 38.639843, + "z": 17.55125 + }, + "screenPosition": { + "x": 0.1945795, + "y": 0.44230223 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.990726, + "y": 43.487137, + "z": 9.579097 + }, + "screenPosition": { + "x": 0.37457392, + "y": 0.46307132 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.734997, + "y": 41.977837, + "z": 6.3607745 + }, + "screenPosition": { + "x": 0.40971044, + "y": 0.40896356 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.03733, + "y": 39.33713, + "z": 7.2435207 + }, + "screenPosition": { + "x": 0.36872864, + "y": 0.36886138 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.83145, + "y": 37.726906, + "z": 7.7908235 + }, + "screenPosition": { + "x": 0.34356695, + "y": 0.34445268 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.917606, + "y": 35.524544, + "z": 8.810262 + }, + "screenPosition": { + "x": 0.30479681, + "y": 0.31320176 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.608143, + "y": 34.124363, + "z": 10.63267 + }, + "screenPosition": { + "x": 0.3406484, + "y": 0.29248685 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.866306, + "y": 33.60089, + "z": 13.445368 + }, + "screenPosition": { + "x": 0.28441095, + "y": 0.31743369 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.941013, + "y": 33.44941, + "z": 15.771311 + }, + "screenPosition": { + "x": 0.23753789, + "y": 0.33822647 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.668278, + "y": 34.002426, + "z": 18.173475 + }, + "screenPosition": { + "x": 0.18849011, + "y": 0.35998395 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.237625, + "y": 34.875645, + "z": 20.011692 + }, + "screenPosition": { + "x": 0.11399735, + "y": 0.3937174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.088173, + "y": 37.206493, + "z": 21.643116 + }, + "screenPosition": { + "x": 0.11066512, + "y": 0.45099273 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.00034, + "y": 37.384647, + "z": 22.876474 + }, + "screenPosition": { + "x": 0.09145006, + "y": 0.46506295 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.31425, + "y": 38.775963, + "z": 24.64689 + }, + "screenPosition": { + "x": 0.075622976, + "y": 0.5068188 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.328823, + "y": 40.77425, + "z": 25.486061 + }, + "screenPosition": { + "x": 0.082244374, + "y": 0.5521167 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.37537, + "y": 44.73551, + "z": 26.23787 + }, + "screenPosition": { + "x": 0.11135243, + "y": 0.6343384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -39.316013, + "y": 48.911457, + "z": 25.22162 + }, + "screenPosition": { + "x": 0.17352003, + "y": 0.7045239 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.2639089, + "y": 0.6779474 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.51955, + "y": 46.47067, + "z": 17.664923 + }, + "screenPosition": { + "x": 0.27480987, + "y": 0.5885011 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.221104, + "y": 45.048088, + "z": 18.933851 + }, + "screenPosition": { + "x": 0.2387707, + "y": 0.5733761 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.37994, + "y": 42.69823, + "z": 20.094778 + }, + "screenPosition": { + "x": 0.19458924, + "y": 0.53987217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.327847, + "y": 40.776012, + "z": 18.948124 + }, + "screenPosition": { + "x": 0.19361316, + "y": 0.49394086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.76172, + "y": 37.86831, + "z": 15.386525 + }, + "screenPosition": { + "x": 0.22238949, + "y": 0.40972763 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.85861, + "y": 39.699547, + "z": 13.233892 + }, + "screenPosition": { + "x": 0.27661455, + "y": 0.42506078 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.70143, + "y": 42.046047, + "z": 12.286759 + }, + "screenPosition": { + "x": 0.31630212, + "y": 0.45984545 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.610428, + "y": 44.25841, + "z": 12.675227 + }, + "screenPosition": { + "x": 0.33305126, + "y": 0.503615 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.923973, + "y": 45.650665, + "z": 20.439806 + }, + "screenPosition": { + "x": 0.21995862, + "y": 0.5982658 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.8608, + "y": 43.75099, + "z": 21.591051 + }, + "screenPosition": { + "x": 0.18047163, + "y": 0.57302487 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.00857, + "y": 41.42353, + "z": 21.64166 + }, + "screenPosition": { + "x": 0.15503927, + "y": 0.52980304 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.040806, + "y": 39.330357, + "z": 21.691936 + }, + "screenPosition": { + "x": 0.13214226, + "y": 0.49106947 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.96223, + "y": 37.46185, + "z": 20.652124 + }, + "screenPosition": { + "x": 0.13018231, + "y": 0.44716522 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.920128, + "y": 35.519432, + "z": 19.164967 + }, + "screenPosition": { + "x": 0.13501126, + "y": 0.39844507 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.50805, + "y": 34.327316, + "z": 17.622416 + }, + "screenPosition": { + "x": 0.19931583, + "y": 0.3551817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.103733, + "y": 37.174812, + "z": 13.411311 + }, + "screenPosition": { + "x": 0.24757369, + "y": 0.380546 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.355774, + "y": 38.69145, + "z": 14.924011 + }, + "screenPosition": { + "x": 0.23854536, + "y": 0.4208995 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.8155, + "y": 39.78708, + "z": 16.78951 + }, + "screenPosition": { + "x": 0.21919851, + "y": 0.45692533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.790062, + "y": 41.86653, + "z": 18.592897 + }, + "screenPosition": { + "x": 0.21098877, + "y": 0.51108557 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.537308, + "y": 44.40686, + "z": 18.179918 + }, + "screenPosition": { + "x": 0.24455354, + "y": 0.5546756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.333633, + "y": 44.819782, + "z": 15.233534 + }, + "screenPosition": { + "x": 0.29740098, + "y": 0.53624654 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.76903, + "y": 43.93679, + "z": 12.729999 + }, + "screenPosition": { + "x": 0.3288173, + "y": 0.49819916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.37761, + "y": 42.70265, + "z": 10.782832 + }, + "screenPosition": { + "x": 0.34726697, + "y": 0.45902747 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.51885, + "y": 36.33309, + "z": 4.624753 + }, + "screenPosition": { + "x": 0.37906733, + "y": 0.29432243 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.742294, + "y": 33.85235, + "z": 4.148076 + }, + "screenPosition": { + "x": 0.47198448, + "y": 0.23422648 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.974453, + "y": 33.381603, + "z": 8.2734785 + }, + "screenPosition": { + "x": 0.3892162, + "y": 0.2709423 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.351944, + "y": 34.64385, + "z": 9.700367 + }, + "screenPosition": { + "x": 0.38226792, + "y": 0.30899706 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.64496, + "y": 38.105057, + "z": 13.759313 + }, + "screenPosition": { + "x": 0.25152627, + "y": 0.40039152 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -38.2048, + "y": 51.16498, + "z": 31.16031 + }, + "screenPosition": { + "x": 0.094340056, + "y": 0.8059355 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.396755, + "y": 48.747925, + "z": 31.232521 + }, + "screenPosition": { + "x": 0.06687276, + "y": 0.75951445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.234962, + "y": 47.048153, + "z": 29.763968 + }, + "screenPosition": { + "x": 0.07450077, + "y": 0.7122215 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.80403, + "y": 45.894127, + "z": 28.00442 + }, + "screenPosition": { + "x": 0.09299289, + "y": 0.67313987 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.72158, + "y": 46.06128, + "z": 26.489487 + }, + "screenPosition": { + "x": 0.12115347, + "y": 0.6620234 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.944035, + "y": 45.610126, + "z": 24.815428 + }, + "screenPosition": { + "x": 0.14522877, + "y": 0.63774574 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.018982, + "y": 45.458073, + "z": 22.487175 + }, + "screenPosition": { + "x": 0.18337, + "y": 0.6133435 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.081787, + "y": 43.302876, + "z": 21.591232 + }, + "screenPosition": { + "x": 0.17573178, + "y": 0.5646082 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.989033, + "y": 39.435406, + "z": 23.568419 + }, + "screenPosition": { + "x": 0.101173684, + "y": 0.50963503 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.292553, + "y": 38.820004, + "z": 25.819956 + }, + "screenPosition": { + "x": 0.05573946, + "y": 0.51813364 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.827164, + "y": 39.76378, + "z": 27.575684 + }, + "screenPosition": { + "x": 0.03506517, + "y": 0.55191046 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.54441, + "y": 42.36499, + "z": 28.562983 + }, + "screenPosition": { + "x": 0.045430053, + "y": 0.61068225 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.072777, + "y": 43.32129, + "z": 26.035332 + }, + "screenPosition": { + "x": 0.099788256, + "y": 0.60550696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.72673, + "y": 39.967266, + "z": 22.43448 + }, + "screenPosition": { + "x": 0.12619789, + "y": 0.50955236 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.1064, + "y": 37.16966, + "z": 25.276873 + }, + "screenPosition": { + "x": 0.047740865, + "y": 0.48213637 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -43.703804, + "y": 40.013935, + "z": 27.916616 + }, + "screenPosition": { + "x": 0.03173627, + "y": 0.5597869 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.720585, + "y": 44.03559, + "z": 29.689629 + }, + "screenPosition": { + "x": 0.04343803, + "y": 0.65335447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.7183, + "y": 46.068035, + "z": 29.803957 + }, + "screenPosition": { + "x": 0.06324766, + "y": 0.6936578 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -38.875362, + "y": 49.80507, + "z": 26.901949 + }, + "screenPosition": { + "x": 0.1541536, + "y": 0.73777694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.313297, + "y": 48.91691, + "z": 23.535753 + }, + "screenPosition": { + "x": 0.2023758, + "y": 0.6886537 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.07854, + "y": 47.3651, + "z": 22.189066 + }, + "screenPosition": { + "x": 0.20867573, + "y": 0.64662665 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.974655, + "y": 45.547924, + "z": 21.590332 + }, + "screenPosition": { + "x": 0.19950451, + "y": 0.606822 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.104603, + "y": 43.256577, + "z": 20.643715 + }, + "screenPosition": { + "x": 0.19124089, + "y": 0.5552217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -43.258167, + "y": 40.91738, + "z": 20.945911 + }, + "screenPosition": { + "x": 0.16149203, + "y": 0.51415205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.185673, + "y": 39.036583, + "z": 21.245865 + }, + "screenPosition": { + "x": 0.13663289, + "y": 0.48166662 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.100708, + "y": 37.1811, + "z": 22.383688 + }, + "screenPosition": { + "x": 0.09775301, + "y": 0.45695627 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.502804, + "y": 38.39368, + "z": 26.645456 + }, + "screenPosition": { + "x": 0.03682371, + "y": 0.51746994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -42.984276, + "y": 41.473038, + "z": 28.798399 + }, + "screenPosition": { + "x": 0.03175719, + "y": 0.5957835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.782375, + "y": 43.910316, + "z": 30.460941 + }, + "screenPosition": { + "x": 0.028427118, + "y": 0.6582521 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.887066, + "y": 45.725773, + "z": 28.684917 + }, + "screenPosition": { + "x": 0.07926775, + "y": 0.6763674 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -41.62703, + "y": 44.225113, + "z": 23.873714 + }, + "screenPosition": { + "x": 0.14664614, + "y": 0.6027609 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.536194, + "y": 34.270245, + "z": 19.616085 + }, + "screenPosition": { + "x": 0.15912464, + "y": 0.3730104 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.86162, + "y": 33.61039, + "z": 21.200806 + }, + "screenPosition": { + "x": 0.12764245, + "y": 0.38697582 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.990852, + "y": 37.403828, + "z": 21.04898 + }, + "screenPosition": { + "x": 0.122841775, + "y": 0.44951913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.178715, + "y": 34.995102, + "z": 18.96743 + }, + "screenPosition": { + "x": 0.13287489, + "y": 0.38709792 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.949966, + "y": 33.43125, + "z": 19.717466 + }, + "screenPosition": { + "x": 0.1577655, + "y": 0.37361333 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.864693, + "y": 33.60416, + "z": 23.019577 + }, + "screenPosition": { + "x": 0.09088426, + "y": 0.4032817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.88747, + "y": 35.585754, + "z": 24.09994 + }, + "screenPosition": { + "x": 0.051464453, + "y": 0.4420419 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.696617, + "y": 35.972687, + "z": 21.594166 + }, + "screenPosition": { + "x": 0.09856805, + "y": 0.42758673 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.794018, + "y": 33.74747, + "z": 21.003296 + }, + "screenPosition": { + "x": 0.13153154, + "y": 0.38525066 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.726624, + "y": 33.88412, + "z": 23.949385 + }, + "screenPosition": { + "x": 0.071909465, + "y": 0.41169888 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.36981, + "y": 46.774773, + "z": 31.54971 + }, + "screenPosition": { + "x": 0.039907873, + "y": 0.7242211 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.6564, + "y": 48.221462, + "z": 32.67234 + }, + "screenPosition": { + "x": 0.03551495, + "y": 0.76343083 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -39.12433, + "y": 49.30044, + "z": 33.980675 + }, + "screenPosition": { + "x": 0.023744198, + "y": 0.7975945 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.30608, + "y": 50.95976, + "z": 35.91403 + }, + "screenPosition": { + "x": 0.006870698, + "y": 0.8499141 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -37.118515, + "y": 53.367912, + "z": 35.85551 + }, + "screenPosition": { + "x": 0.034314003, + "y": 0.8971039 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.196205, + "y": 47.126835, + "z": 32.41936 + }, + "screenPosition": { + "x": 0.028188359, + "y": 0.7395677 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -37.841713, + "y": 51.901405, + "z": 35.78546 + }, + "screenPosition": { + "x": 0.019510474, + "y": 0.8672639 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.14206, + "y": 51.292282, + "z": 33.430775 + }, + "screenPosition": { + "x": 0.055306006, + "y": 0.8312273 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.28427, + "y": 51.00384, + "z": 31.594553 + }, + "screenPosition": { + "x": 0.0848993, + "y": 0.8071206 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.381668, + "y": 50.806282, + "z": 29.698965 + }, + "screenPosition": { + "x": 0.11620541, + "y": 0.78444874 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.537544, + "y": 50.49012, + "z": 27.495575 + }, + "screenPosition": { + "x": 0.15124153, + "y": 0.75673133 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.404774, + "y": 46.703632, + "z": 24.472992 + }, + "screenPosition": { + "x": 0.16276184, + "y": 0.65535134 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -40.390366, + "y": 46.73297, + "z": 28.156406 + }, + "screenPosition": { + "x": 0.09933393, + "y": 0.6907137 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.829548, + "y": 49.897964, + "z": 26.853271 + }, + "screenPosition": { + "x": 0.15599453, + "y": 0.7390941 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -38.047512, + "y": 49.22274, + "z": 24.462305 + }, + "screenPosition": { + "x": 0.20126508, + "y": 0.7164649 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.24818757, + "y": 0.6952383 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -40.716457, + "y": 46.0714, + "z": 18.37516 + }, + "screenPosition": { + "x": 0.25884587, + "y": 0.5874523 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.68502, + "y": 44.10745, + "z": 21.640736 + }, + "screenPosition": { + "x": 0.18340102, + "y": 0.5801747 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -39.163826, + "y": 49.220142, + "z": 27.683899 + }, + "screenPosition": { + "x": 0.1342991, + "y": 0.73406947 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.06717, + "y": 45.36057, + "z": 28.876553 + }, + "screenPosition": { + "x": 0.07198373, + "y": 0.6711597 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.148064, + "y": 45.196465, + "z": 26.8279 + }, + "screenPosition": { + "x": 0.10603367, + "y": 0.6486647 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -41.754498, + "y": 43.96666, + "z": 24.613216 + }, + "screenPosition": { + "x": 0.1312115, + "y": 0.6046596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -42.816105, + "y": 41.813896, + "z": 23.967136 + }, + "screenPosition": { + "x": 0.119470455, + "y": 0.5580255 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.733036, + "y": 37.926754, + "z": 24.986635 + }, + "screenPosition": { + "x": 0.06077146, + "y": 0.4938337 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.53116, + "y": 36.30827, + "z": 23.464693 + }, + "screenPosition": { + "x": 0.07002442, + "y": 0.45004672 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.222626, + "y": 34.906067, + "z": 21.939625 + }, + "screenPosition": { + "x": 0.081499785, + "y": 0.41070256 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.733025, + "y": 33.871136, + "z": 19.716368 + }, + "screenPosition": { + "x": 0.15743631, + "y": 0.37375936 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.964287, + "y": 33.402218, + "z": 17.526936 + }, + "screenPosition": { + "x": 0.2020817, + "y": 0.35395476 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.447533, + "y": 34.450024, + "z": 13.335645 + }, + "screenPosition": { + "x": 0.3044854, + "y": 0.33785382 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -45.699223, + "y": 35.967354, + "z": 9.062419 + }, + "screenPosition": { + "x": 0.30531162, + "y": 0.32316864 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.178978, + "y": 37.022243, + "z": 7.1772046 + }, + "screenPosition": { + "x": 0.3460491, + "y": 0.32689956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.2117, + "y": 38.983562, + "z": 3.1993144 + }, + "screenPosition": { + "x": 0.4281816, + "y": 0.3299831 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -44.131668, + "y": 39.145844, + "z": -2.5323293 + }, + "screenPosition": { + "x": 0.51700866, + "y": 0.2878308 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.89024, + "y": 37.607704, + "z": -4.930545 + }, + "screenPosition": { + "x": 0.5372868, + "y": 0.24276961 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.11614, + "y": 35.121986, + "z": -8.518376 + }, + "screenPosition": { + "x": 0.7544556, + "y": 0.15422447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.515404, + "y": 34.312405, + "z": -11.141556 + }, + "screenPosition": { + "x": 0.7799279, + "y": 0.09762346 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.798885, + "y": 33.737595, + "z": -14.074191 + }, + "screenPosition": { + "x": 0.8403806, + "y": 0.07080675 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -44.898876, + "y": 35.329338, + "z": -14.311112 + }, + "screenPosition": { + "x": 0.67914957, + "y": 0.1501445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -45.32115, + "y": 36.73396, + "z": -11.008847 + }, + "screenPosition": { + "x": 0.6174179, + "y": 0.18257594 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.215237, + "y": 34.921043, + "z": -9.613764 + }, + "screenPosition": { + "x": 0.7799833, + "y": 0.13963278 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -46.132133, + "y": 32.8287, + "z": -14.249075 + }, + "screenPosition": { + "x": 0.8561491, + "y": 0.0638119 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -46.132133, + "y": 32.8287, + "z": -17.102018 + }, + "screenPosition": { + "x": 0.91443676, + "y": 0.037955627 + }, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-083859/brain-C783C0-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + 0.0860819215169446, + 0.4534359246835511, + 0.8871221815479104, + 0.0, + -0.5478069206199687, + -0.7222006695163738, + 0.4222958331205379, + 0.0, + 0.8321643350377486, + -0.5223237072510445, + 0.18622691624657062, + 0.0, + 32.991444544429925, + -23.669150886210502, + 40.65729819041783, + 1.0 + ] + }, + "baseImage": "20190825-083859/base.webp", + "version": 0, + "savedAt": 1.566722589561E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-074740-v0.json b/data/mapping/BAAAHS/dwayman/20190823-074740-v0.json new file mode 100644 index 0000000000..31c0b882d6 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-074740-v0.json @@ -0,0 +1 @@ +{"startedAt":1.56654646054E12,"surfaces":[{"brainId":"C78490","panelName":"13D","pixels":[{"modelPosition":{"x":-127.80677,"y":93.81212,"z":-107.139},"screenPosition":{"x":-0.012868208,"y":0.12529334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.16867,"y":98.112335,"z":-107.139},"screenPosition":{"x":0.0409166,"y":0.16167729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.55936,"y":99.3915,"z":-105.84587},"screenPosition":{"x":0.069823585,"y":0.12840465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.76747,"y":100.36721,"z":-105.46253},"screenPosition":{"x":0.08440516,"y":0.09184717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.4831,"y":102.97276,"z":-104.87954},"screenPosition":{"x":0.12325334,"y":0.069289036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.63655,"y":105.73535,"z":-104.36765},"screenPosition":{"x":0.16570349,"y":0.037476484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.36864,"y":108.018745,"z":-104.01386},"screenPosition":{"x":0.19680838,"y":0.070452854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.39592,"y":110.0406,"z":-103.65416},"screenPosition":{"x":0.2264812,"y":0.068733215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.04373,"y":112.228165,"z":-103.33198},"screenPosition":{"x":0.25850207,"y":0.078285635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.11292,"y":114.89491,"z":-102.851715},"screenPosition":{"x":0.2976466,"y":0.07502507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.30876,"y":117.10845,"z":-102.42878},"screenPosition":{"x":0.3301689,"y":0.06818023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.95656,"y":119.296005,"z":-102.1066},"screenPosition":{"x":0.3621898,"y":0.07773265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.23668,"y":121.605385,"z":-101.65205},"screenPosition":{"x":0.3961368,"y":0.06832522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.30586,"y":124.27213,"z":-101.17178},"screenPosition":{"x":0.43528134,"y":0.065064654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.34961,"y":125.97184,"z":-101.041275},"screenPosition":{"x":0.46001142,"y":0.09289581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.7446,"y":127.87188,"z":-100.81395},"screenPosition":{"x":0.48775813,"y":0.110136025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.0972,"y":130.32098,"z":-100.49768},"screenPosition":{"x":0.5235518,"y":0.12839791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.60656,"y":133.00563,"z":-100.288086},"screenPosition":{"x":0.56260926,"y":0.17175645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.63385,"y":135.0275,"z":-99.92838},"screenPosition":{"x":0.59228975,"y":0.17004687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.27932,"y":137.35419,"z":-99.406654},"screenPosition":{"x":0.6265671,"y":0.14970575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.84285,"y":139.4459,"z":-99.11609},"screenPosition":{"x":0.6571672,"y":0.16182294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.01044,"y":142.02548,"z":-98.63386},"screenPosition":{"x":0.6950541,"y":0.15565923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.810814,"y":143.53291,"z":-98.228745},"screenPosition":{"x":0.7172233,"y":0.13102269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.20113,"y":145.71123,"z":-97.60232},"screenPosition":{"x":0.74961585,"y":0.08851243},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-125.92231,"y":151.48122,"z":-96.98948},"screenPosition":{"x":0.8337793,"y":0.15406772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.25463,"y":151.49106,"z":-97.63158},"screenPosition":{"x":0.83311903,"y":0.2637233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.89258,"y":148.9467,"z":-98.3173},"screenPosition":{"x":0.7954869,"y":0.30558467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.21934,"y":145.7921,"z":-98.989235},"screenPosition":{"x":0.74905163,"y":0.327124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.55273,"y":144.06583,"z":-98.88266},"screenPosition":{"x":0.7242338,"y":0.25812942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.15025,"y":143.77715,"z":-98.301834},"screenPosition":{"x":0.7206989,"y":0.15066615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.97792,"y":147.30644,"z":-97.53702},"screenPosition":{"x":0.7726503,"y":0.1243528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.16431,"y":149.42473,"z":-97.483536},"screenPosition":{"x":0.80343795,"y":0.17765036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.77771,"y":149.35603,"z":-98.090065},"screenPosition":{"x":0.80168724,"y":0.27893704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.68261,"y":146.91618,"z":-98.71059},"screenPosition":{"x":0.7654166,"y":0.31257117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.39071,"y":144.6507,"z":-99.33505},"screenPosition":{"x":0.73201793,"y":0.3522906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.71699,"y":142.69003,"z":-99.797485},"screenPosition":{"x":0.7029894,"y":0.37312898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.66378,"y":140.89508,"z":-100.29745},"screenPosition":{"x":0.6765707,"y":0.4056055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.15675,"y":138.07129,"z":-100.7066},"screenPosition":{"x":0.63517433,"y":0.39194947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.86251,"y":135.94493,"z":-101.13151},"screenPosition":{"x":0.6040467,"y":0.4019923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.78806,"y":134.0986,"z":-102.17083},"screenPosition":{"x":0.57600826,"y":0.5243701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.14534,"y":136.26944,"z":-102.25366},"screenPosition":{"x":0.6073347,"y":0.60268414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.37129,"y":139.17175,"z":-101.88007},"screenPosition":{"x":0.6497506,"y":0.6245303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.11199,"y":141.406,"z":-102.38821},"screenPosition":{"x":0.6801594,"y":0.60655534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.69743,"y":143.59557,"z":-99.311035},"screenPosition":{"x":0.7192189,"y":0.633113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.50753,"y":145.91814,"z":-98.39274},"screenPosition":{"x":0.75417006,"y":0.5769869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.454124,"y":146.95956,"z":-100.44844},"screenPosition":{"x":0.7688774,"y":0.48588315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.41088,"y":146.43817,"z":-99.54436},"screenPosition":{"x":0.7618973,"y":0.45154506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.39208,"y":146.89946,"z":-99.1156},"screenPosition":{"x":0.76479554,"y":0.38114718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.441574,"y":146.5848,"z":-98.63554},"screenPosition":{"x":0.76095086,"y":0.29022595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.69021,"y":145.95662,"z":-98.35108},"screenPosition":{"x":0.75222707,"y":0.22327472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.981705,"y":143.58546,"z":-98.36507},"screenPosition":{"x":0.7178904,"y":0.15580393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.696434,"y":142.7483,"z":-98.21101},"screenPosition":{"x":0.70603,"y":0.104926534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.31606,"y":139.4713,"z":-98.67749},"screenPosition":{"x":0.65805596,"y":0.08786254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.4921,"y":138.05162,"z":-99.42241},"screenPosition":{"x":0.63663185,"y":0.17293316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.39838,"y":137.86053,"z":-99.82349},"screenPosition":{"x":0.6333687,"y":0.23561902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.30465,"y":137.66945,"z":-100.224556},"screenPosition":{"x":0.63010556,"y":0.2983049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.18315,"y":136.65044,"z":-100.77584},"screenPosition":{"x":0.61468834,"y":0.3621911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.28857,"y":136.14586,"z":-101.37252},"screenPosition":{"x":0.6066496,"y":0.44896203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.92039,"y":137.46162,"z":-101.03065},"screenPosition":{"x":0.62609446,"y":0.4294829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.95909,"y":141.28534,"z":-99.12387},"screenPosition":{"x":0.68374395,"y":0.21732342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.772224,"y":140.361,"z":-98.96786},"screenPosition":{"x":0.6704307,"y":0.1634518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.964836,"y":139.27097,"z":-98.77431},"screenPosition":{"x":0.65506566,"y":0.09845598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.68053,"y":136.04591,"z":-99.03926},"screenPosition":{"x":0.60690576,"y":0.021240192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.431,"y":133.23137,"z":-99.75266},"screenPosition":{"x":0.5665486,"y":0.08721764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.690834,"y":133.10147,"z":-100.25647},"screenPosition":{"x":0.564033,"y":0.16919297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.65547,"y":133.23312,"z":-100.76618},"screenPosition":{"x":0.56530756,"y":0.25989965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.533005,"y":134.60202,"z":-100.89846},"screenPosition":{"x":0.58488256,"y":0.32263222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.845566,"y":137.46103,"z":-100.69281},"screenPosition":{"x":0.62640226,"y":0.37169552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.50282,"y":139.74385,"z":-100.001175},"screenPosition":{"x":0.6603674,"y":0.3213514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.57435,"y":142.27145,"z":-99.72046},"screenPosition":{"x":0.6972516,"y":0.3479822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.58751,"y":144.47633,"z":-99.33111},"screenPosition":{"x":0.729582,"y":0.34657517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.237656,"y":146.52477,"z":-99.20848},"screenPosition":{"x":0.7593673,"y":0.3860469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.27196,"y":149.11609,"z":-99.77794},"screenPosition":{"x":0.7931966,"y":0.3853903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.15332,"y":150.94296,"z":-99.099846},"screenPosition":{"x":0.8307711,"y":0.3792663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.6683,"y":153.84541,"z":-96.013084},"screenPosition":{"x":0.87118316,"y":0.33167452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.68436,"y":155.01266,"z":-95.592064},"screenPosition":{"x":0.8886261,"y":0.30058414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.57472,"y":156.27635,"z":-95.05647},"screenPosition":{"x":0.90775126,"y":0.27260795},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-125.38693,"y":160.17436,"z":-93.80999},"screenPosition":{"x":0.96551985,"y":0.15742086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.20578,"y":162.02344,"z":-93.22269},"screenPosition":{"x":0.9929111,"y":0.10249646},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-130.4016,"y":159.95949,"z":-94.71493},"screenPosition":{"x":0.95516074,"y":0.0016502335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.02307,"y":157.73729,"z":-95.171455},"screenPosition":{"x":0.9226455,"y":0.002846785},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-128.56311,"y":154.08618,"z":-96.06865},"screenPosition":{"x":0.8725813,"y":0.07394608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.65068,"y":151.65498,"z":-96.65558},"screenPosition":{"x":0.8367082,"y":0.10231336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.553246,"y":149.35428,"z":-97.076546},"screenPosition":{"x":0.8029283,"y":0.10625504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.907776,"y":147.02759,"z":-97.59828},"screenPosition":{"x":0.7686471,"y":0.12659398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.429,"y":143.83775,"z":-98.06672},"screenPosition":{"x":0.72176623,"y":0.11240254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.99965,"y":146.16386,"z":-97.20715},"screenPosition":{"x":0.7542137,"y":0.00904502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.1112,"y":148.28156,"z":-96.815834},"screenPosition":{"x":0.7850844,"y":0.007908988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.26466,"y":151.04414,"z":-96.30395},"screenPosition":{"x":0.82535887,"y":0.006426901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.08102,"y":153.42339,"z":-95.91854},"screenPosition":{"x":0.85989565,"y":0.005155959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.2227,"y":156.22986,"z":-95.57656},"screenPosition":{"x":0.9041802,"y":0.053266592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.509705,"y":156.90993,"z":-97.13931},"screenPosition":{"x":0.9108074,"y":0.16914761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.35436,"y":155.66583,"z":-97.56051},"screenPosition":{"x":0.90037954,"y":0.22193895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.02374,"y":155.88461,"z":-95.11785},"screenPosition":{"x":0.9007132,"y":0.28799003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.43462,"y":153.15141,"z":-96.02379},"screenPosition":{"x":0.8615363,"y":0.36722618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.70606,"y":150.66039,"z":-99.25511},"screenPosition":{"x":0.8266273,"y":0.36471614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.116844,"y":149.82686,"z":-99.47771},"screenPosition":{"x":0.8150104,"y":0.41260144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.58505,"y":148.48694,"z":-97.78645},"screenPosition":{"x":0.7915895,"y":0.48575485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.82242,"y":145.40152,"z":-101.035515},"screenPosition":{"x":0.7395995,"y":0.49383125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.02058,"y":144.25986,"z":-100.170784},"screenPosition":{"x":0.7254285,"y":0.4832469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.90949,"y":140.94821,"z":-100.77161},"screenPosition":{"x":0.67681223,"y":0.48804837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.10726,"y":138.38596,"z":-101.18666},"screenPosition":{"x":0.6392596,"y":0.4832806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.3328,"y":136.65161,"z":-101.451515},"screenPosition":{"x":0.61386096,"y":0.47731245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.26595,"y":133.84573,"z":-102.13133},"screenPosition":{"x":0.572456,"y":0.5104644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.40302,"y":131.09987,"z":-102.2382},"screenPosition":{"x":0.5326347,"y":0.44779536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.902145,"y":130.89836,"z":-101.65934},"screenPosition":{"x":0.53044546,"y":0.343265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.60364,"y":133.68692,"z":-101.0467},"screenPosition":{"x":0.57147664,"y":0.32092896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.08056,"y":135.82195,"z":-100.5882},"screenPosition":{"x":0.60294795,"y":0.30583084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.07121,"y":136.37848,"z":-99.78999},"screenPosition":{"x":0.61198944,"y":0.18626541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.21062,"y":133.49348,"z":-100.09641},"screenPosition":{"x":0.5698952,"y":0.15347552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.20924,"y":131.24474,"z":-100.31586},"screenPosition":{"x":0.53712004,"y":0.124623895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.50541,"y":128.59529,"z":-100.72895},"screenPosition":{"x":0.49831954,"y":0.116961025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.68906,"y":126.21606,"z":-101.11436},"screenPosition":{"x":0.46345085,"y":0.112535246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.74556,"y":125.483986,"z":-101.23295},"screenPosition":{"x":0.4527252,"y":0.111169174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.30586,"y":124.27213,"z":-101.17178},"screenPosition":{"x":0.43528134,"y":0.065064654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.13876,"y":120.49861,"z":-101.86352},"screenPosition":{"x":0.37987566,"y":0.07174764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.30978,"y":129.71483,"z":-102.84877},"screenPosition":{"x":0.51184964,"y":0.5109458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.81299,"y":129.7772,"z":-103.62718},"screenPosition":{"x":0.5117607,"y":0.64495116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.999855,"y":130.70155,"z":-103.7832},"screenPosition":{"x":0.52494675,"y":0.69921994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.5817,"y":133.52592,"z":-103.71189},"screenPosition":{"x":0.5657766,"y":0.7695381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.6876,"y":131.8274,"z":-104.518074},"screenPosition":{"x":0.5450035,"y":0.862869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.037056,"y":130.55699,"z":-106.06117},"screenPosition":{"x":0.5187613,"y":0.91263556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.05564,"y":128.42336,"z":-106.78352},"screenPosition":{"x":0.4870195,"y":0.97283155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.748856,"y":124.98645,"z":-105.88371},"screenPosition":{"x":0.43971768,"y":0.8886734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.33411,"y":125.93559,"z":-105.26329},"screenPosition":{"x":0.45421156,"y":0.81095254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.14628,"y":127.39915,"z":-104.68827},"screenPosition":{"x":0.47608393,"y":0.75611633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.818146,"y":128.305,"z":-104.23579},"screenPosition":{"x":0.48974216,"y":0.7057242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.15057,"y":128.96661,"z":-103.71021},"screenPosition":{"x":0.49995756,"y":0.63551533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.93166,"y":132.12929,"z":-102.666855},"screenPosition":{"x":0.546978,"y":0.55112535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.516335,"y":133.62059,"z":-103.00459},"screenPosition":{"x":0.5681107,"y":0.6525739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.01536,"y":132.76729,"z":-103.5934},"screenPosition":{"x":0.55504155,"y":0.7277322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.32565,"y":129.93483,"z":-104.03613},"screenPosition":{"x":0.5135489,"y":0.7197207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.29135,"y":128.33038,"z":-103.79719},"screenPosition":{"x":0.4906566,"y":0.631687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.86296,"y":128.2686,"z":-103.35661},"screenPosition":{"x":0.4903147,"y":0.55490524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.690216,"y":127.16124,"z":-103.23024},"screenPosition":{"x":0.47446725,"y":0.50076693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.31834,"y":126.36738,"z":-102.908264},"screenPosition":{"x":0.4633954,"y":0.42254367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.98553,"y":127.55149,"z":-102.05667},"screenPosition":{"x":0.48157436,"y":0.3123688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.46664,"y":130.60219,"z":-101.78778},"screenPosition":{"x":0.52599484,"y":0.356352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.08053,"y":129.33955,"z":-102.60381},"screenPosition":{"x":0.50673467,"y":0.45822448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.716545,"y":131.571,"z":-102.45154},"screenPosition":{"x":0.53917754,"y":0.4980088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.52393,"y":132.66103,"z":-102.64509},"screenPosition":{"x":0.5546485,"y":0.56277543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.89533,"y":134.64883,"z":-102.75757},"screenPosition":{"x":0.58328134,"y":0.6407826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.81243,"y":136.80176,"z":-102.56974},"screenPosition":{"x":0.61463374,"y":0.672198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.01323,"y":138.06917,"z":-103.51791},"screenPosition":{"x":0.63051796,"y":0.70069677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.66637,"y":137.69565,"z":-103.644356},"screenPosition":{"x":0.6291592,"y":0.72033495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.63459,"y":136.5846,"z":-104.02051},"screenPosition":{"x":0.6084324,"y":0.7425805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.5252,"y":134.258,"z":-103.5933},"screenPosition":{"x":0.585105,"y":0.78681934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.24742,"y":131.8095,"z":-104.24741},"screenPosition":{"x":0.5402961,"y":0.8097653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.67629,"y":130.67734,"z":-104.897484},"screenPosition":{"x":0.5284297,"y":0.89430004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.434586,"y":129.90823,"z":-106.28081},"screenPosition":{"x":0.5091098,"y":0.9309389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.12535,"y":128.2994,"z":-106.76589},"screenPosition":{"x":0.48549566,"y":0.99968475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.115524,"y":126.85137,"z":-107.139},"screenPosition":{"x":0.46438393,"y":1.0592504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.40883,"y":122.792816,"z":-106.139},"screenPosition":{"x":0.40898684,"y":1.0439608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.505684,"y":121.61565,"z":-106.139},"screenPosition":{"x":0.39156374,"y":0.95358485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.690056,"y":121.22753,"z":-106.139},"screenPosition":{"x":0.38557154,"y":0.89003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.58322,"y":121.03851,"z":-107.10954},"screenPosition":{"x":0.37987396,"y":0.8108632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.82337,"y":121.002174,"z":-105.69234},"screenPosition":{"x":0.38236934,"y":0.73873115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.662415,"y":119.85094,"z":-105.39606},"screenPosition":{"x":0.36609992,"y":0.65436095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.495316,"y":116.077415,"z":-106.08779},"screenPosition":{"x":0.30808794,"y":0.6645859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.288086,"y":115.692154,"z":-106.139},"screenPosition":{"x":0.30576447,"y":0.75420177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.79847,"y":117.676155,"z":-106.139},"screenPosition":{"x":0.33454832,"y":0.82730687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.19266,"y":120.21938,"z":-106.139},"screenPosition":{"x":0.3711078,"y":0.87500805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.302185,"y":123.31955,"z":-107.10954},"screenPosition":{"x":0.40790674,"y":0.88810366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.748856,"y":124.98645,"z":-105.88371},"screenPosition":{"x":0.43971768,"y":0.8886734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.70317,"y":128.06253,"z":-105.17622},"screenPosition":{"x":0.48506254,"y":0.85876524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.107605,"y":130.05783,"z":-104.57944},"screenPosition":{"x":0.51464766,"y":0.8158822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.174934,"y":131.66977,"z":-104.10912},"screenPosition":{"x":0.5385026,"y":0.78282386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.22814,"y":133.46472,"z":-103.60916},"screenPosition":{"x":0.56510234,"y":0.7509574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.686745,"y":134.86708,"z":-102.93141},"screenPosition":{"x":0.5862185,"y":0.6768208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.67788,"y":134.22968,"z":-102.342705},"screenPosition":{"x":0.57774127,"y":0.55777466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.520226,"y":130.5514,"z":-102.66498},"screenPosition":{"x":0.524174,"y":0.5043344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.64306,"y":127.33677,"z":-103.90987},"screenPosition":{"x":0.47615507,"y":0.6216946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.64959,"y":128.11331,"z":-104.29902},"screenPosition":{"x":0.48689255,"y":0.7106914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.428246,"y":130.76334,"z":-104.22377},"screenPosition":{"x":0.5252893,"y":0.77608097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.9494,"y":133.40411,"z":-103.84427},"screenPosition":{"x":0.56385696,"y":0.7885201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.01157,"y":136.48827,"z":-102.76535},"screenPosition":{"x":0.60974085,"y":0.6956902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.22409,"y":120.88784,"z":-105.11545},"screenPosition":{"x":0.38152868,"y":0.63661313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.644585,"y":117.92433,"z":-105.38631},"screenPosition":{"x":0.33826554,"y":0.59595734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.11875,"y":115.56182,"z":-105.36671},"screenPosition":{"x":0.30414313,"y":0.52303797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.34244,"y":112.77267,"z":-105.6415},"screenPosition":{"x":0.26348615,"y":0.48769772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.91219,"y":111.65607,"z":-105.210884},"screenPosition":{"x":0.24793147,"y":0.3814045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.9047,"y":113.26742,"z":-104.402725},"screenPosition":{"x":0.27218512,"y":0.2912712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.056305,"y":114.9752,"z":-103.900795},"screenPosition":{"x":0.29749605,"y":0.25607598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.05397,"y":115.114334,"z":-103.70124},"screenPosition":{"x":0.2997564,"y":0.2261846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.4429,"y":115.043884,"z":-103.29426},"screenPosition":{"x":0.29924676,"y":0.15478928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.77582,"y":114.51156,"z":-102.97819},"screenPosition":{"x":0.29201865,"y":0.08527044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.23819,"y":112.19294,"z":-103.12849},"screenPosition":{"x":0.25997412,"y":0.027232876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.64923,"y":109.13417,"z":-103.76881},"screenPosition":{"x":0.2151807,"y":0.03565572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.923676,"y":107.62732,"z":-104.51176},"screenPosition":{"x":0.19052865,"y":0.14372966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.366196,"y":107.50609,"z":-104.98197},"screenPosition":{"x":0.18832923,"y":0.22018012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.328,"y":108.970825,"z":-105.08264},"screenPosition":{"x":0.20923384,"y":0.28053528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.63022,"y":108.29188,"z":-105.675385},"screenPosition":{"x":0.1986799,"y":0.36149988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.85109,"y":105.770645,"z":-107.10954},"screenPosition":{"x":0.15919697,"y":0.36119303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.72623,"y":103.55478,"z":-107.139},"screenPosition":{"x":0.12716946,"y":0.30596638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.89768,"y":101.72406,"z":-107.10954},"screenPosition":{"x":0.10070888,"y":0.24201271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.450424,"y":101.17132,"z":-107.10954},"screenPosition":{"x":0.090599515,"y":0.23056775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.60301,"y":99.67799,"z":-107.139},"screenPosition":{"x":0.061904147,"y":0.21060154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.10602,"y":97.168724,"z":-105.96456},"screenPosition":{"x":0.03167791,"y":0.101349354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.22888,"y":100.436485,"z":-105.19383},"screenPosition":{"x":0.088887915,"y":0.033528794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.2138,"y":103.0074,"z":-104.745186},"screenPosition":{"x":0.12629262,"y":0.032152314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.13089,"y":105.16032,"z":-104.55736},"screenPosition":{"x":0.15511085,"y":0.07883208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.277725,"y":106.494576,"z":-104.82399},"screenPosition":{"x":0.17376612,"y":0.16354933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.181175,"y":107.636566,"z":-104.81601},"screenPosition":{"x":0.19028209,"y":0.19582458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.08415,"y":109.9725,"z":-104.59853},"screenPosition":{"x":0.22431679,"y":0.22758055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.10247,"y":110.70517,"z":-104.81779},"screenPosition":{"x":0.23463245,"y":0.28650343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.9268,"y":110.279106,"z":-105.45003},"screenPosition":{"x":0.22768418,"y":0.38164327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.068954,"y":111.89163,"z":-105.31755},"screenPosition":{"x":0.2512946,"y":0.4063747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.62303,"y":113.8881,"z":-105.39645},"screenPosition":{"x":0.2800853,"y":0.47847223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.62956,"y":114.66464,"z":-105.78561},"screenPosition":{"x":0.29065204,"y":0.5679643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.63376,"y":115.580315,"z":-105.97521},"screenPosition":{"x":0.29638827,"y":0.64074564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.08593,"y":111.61416,"z":-106.139},"screenPosition":{"x":0.24688204,"y":0.64222604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.475174,"y":109.5278,"z":-106.139},"screenPosition":{"x":0.21666202,"y":0.57198924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.0501,"y":109.57164,"z":-107.10954},"screenPosition":{"x":0.21087667,"y":0.47979912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.776085,"y":112.01403,"z":-105.52301},"screenPosition":{"x":0.25266913,"y":0.44517207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.6207,"y":114.02723,"z":-105.1969},"screenPosition":{"x":0.2821748,"y":0.4489182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.81187,"y":116.519035,"z":-104.374855},"screenPosition":{"x":0.31921783,"y":0.38229066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.805336,"y":115.74249,"z":-103.985695},"screenPosition":{"x":0.3084802,"y":0.29313585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.45225,"y":114.48734,"z":-104.09247},"screenPosition":{"x":0.2903504,"y":0.27420452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.70838,"y":112.24783,"z":-104.616165},"screenPosition":{"x":0.25718158,"y":0.29759678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.68109,"y":110.225975,"z":-104.97587},"screenPosition":{"x":0.22771679,"y":0.2991333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.81104,"y":107.24573,"z":-105.65174},"screenPosition":{"x":0.18358865,"y":0.32666203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.09309,"y":104.77931,"z":-106.03519},"screenPosition":{"x":0.14385168,"y":0.32992414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.70756,"y":102.974525,"z":-105.89306},"screenPosition":{"x":0.12155243,"y":0.24196818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.34932,"y":103.19159,"z":-105.39122},"screenPosition":{"x":0.12531696,"y":0.16288507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.97461,"y":103.73081,"z":-104.66019},"screenPosition":{"x":0.13670214,"y":0.031769246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.43927,"y":107.10365,"z":-104.162094},"screenPosition":{"x":0.18378371,"y":0.06875363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.161896,"y":109.2918,"z":-104.17776},"screenPosition":{"x":0.21500391,"y":0.13586316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.57334,"y":110.86969,"z":-104.179634},"screenPosition":{"x":0.2378079,"y":0.18265417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.88404,"y":112.6739,"z":-103.983925},"screenPosition":{"x":0.26412985,"y":0.20245698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.50827,"y":114.94922,"z":-104.00156},"screenPosition":{"x":0.29704833,"y":0.27241623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.360374,"y":115.35107,"z":-104.48359},"screenPosition":{"x":0.30220047,"y":0.36641267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.89806,"y":111.83909,"z":-105.18124},"screenPosition":{"x":0.2505676,"y":0.3818051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.683426,"y":110.08684,"z":-105.17542},"screenPosition":{"x":0.22524841,"y":0.32920778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.13168,"y":107.95123,"z":-105.296074},"screenPosition":{"x":0.1942303,"y":0.28686085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.82713,"y":108.76931,"z":-104.50378},"screenPosition":{"x":0.20704462,"y":0.1760049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.54275,"y":111.37486,"z":-103.920784},"screenPosition":{"x":0.24543294,"y":0.15344393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.52766,"y":113.94578,"z":-103.47214},"screenPosition":{"x":0.28315276,"y":0.15274596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.34895,"y":132.3446,"z":-101.1515},"screenPosition":{"x":0.5519836,"y":0.29936028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.179924,"y":133.34686,"z":-101.00523},"screenPosition":{"x":0.56665283,"y":0.3039662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.335724,"y":135.97032,"z":-100.6929},"screenPosition":{"x":0.6049004,"y":0.32790187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.859215,"y":138.47197,"z":-100.512955},"screenPosition":{"x":0.64134455,"y":0.37106243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.38036,"y":141.11273,"z":-100.13345},"screenPosition":{"x":0.67998767,"y":0.3841991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.77019,"y":144.485,"z":-99.29752},"screenPosition":{"x":0.7297739,"y":0.34113735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.116745,"y":144.96361,"z":-98.8016},"screenPosition":{"x":0.7370022,"y":0.2705185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.98404,"y":143.44632,"z":-98.56461},"screenPosition":{"x":0.71567714,"y":0.18571243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.485504,"y":143.10568,"z":-98.18531},"screenPosition":{"x":0.7111395,"y":0.11105793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.711525,"y":140.1774,"z":-98.65966},"screenPosition":{"x":0.6681661,"y":0.105597526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.91163,"y":137.476,"z":-99.27428},"screenPosition":{"x":0.62849694,"y":0.13074802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.32218,"y":135.61119,"z":-99.70509},"screenPosition":{"x":0.60098267,"y":0.14919025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.23887,"y":133.12746,"z":-100.15571},"screenPosition":{"x":0.56454307,"y":0.15280665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.42485,"y":130.60909,"z":-100.74067},"screenPosition":{"x":0.52741235,"y":0.17827079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.018074,"y":128.75293,"z":-101.1379},"screenPosition":{"x":0.5000876,"y":0.19126247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.28833,"y":126.33039,"z":-101.691246},"screenPosition":{"x":0.4643816,"y":0.214164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.20502,"y":123.84666,"z":-102.14187},"screenPosition":{"x":0.4279194,"y":0.21776514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.10758,"y":121.545944,"z":-102.562836},"screenPosition":{"x":0.39413953,"y":0.22170681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.67071,"y":119.00101,"z":-102.91072},"screenPosition":{"x":0.35692108,"y":0.20600753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.72769,"y":117.07499,"z":-103.23881},"screenPosition":{"x":0.328673,"y":0.20516457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.38921,"y":114.44287,"z":-103.584724},"screenPosition":{"x":0.29019699,"y":0.18656214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.39018,"y":112.05498,"z":-104.00372},"screenPosition":{"x":0.25528133,"y":0.18753947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.520134,"y":109.07474,"z":-104.679596},"screenPosition":{"x":0.21151367,"y":0.21480323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.19286,"y":106.940895,"z":-105.81377},"screenPosition":{"x":0.17923403,"y":0.3450552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.44988,"y":108.14409,"z":-105.90852},"screenPosition":{"x":0.19625239,"y":0.396857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.029236,"y":109.59251,"z":-107.10954},"screenPosition":{"x":0.21630757,"y":0.46996063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.47143,"y":112.18032,"z":-105.898384},"screenPosition":{"x":0.25482258,"y":0.51358634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.992584,"y":114.82109,"z":-105.51888},"screenPosition":{"x":0.29340187,"y":0.52677506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.691734,"y":117.748795,"z":-104.70669},"screenPosition":{"x":0.3365777,"y":0.4750297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.51803,"y":119.029335,"z":-104.161316},"screenPosition":{"x":0.35578772,"y":0.41979954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.62492,"y":121.4253,"z":-103.37089},"screenPosition":{"x":0.39138603,"y":0.355788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.54824,"y":120.3699,"z":-103.043},"screenPosition":{"x":0.37654135,"y":0.26885524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.878815,"y":119.976715,"z":-102.527374},"screenPosition":{"x":0.37150267,"y":0.16945004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.19371,"y":122.696594,"z":-102.52127},"screenPosition":{"x":0.4108226,"y":0.2485163},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-117.70071,"y":119.037994,"z":-104.12773},"screenPosition":{"x":0.35593486,"y":0.4143872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.24066,"y":121.21748,"z":-104.17698},"screenPosition":{"x":0.38737494,"y":0.486966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.48404,"y":121.409744,"z":-104.451584},"screenPosition":{"x":0.3898107,"y":0.5394015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.74387,"y":121.279854,"z":-104.95539},"screenPosition":{"x":0.38730377,"y":0.6213878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.9326,"y":123.259,"z":-105.10146},"screenPosition":{"x":0.41572726,"y":0.70455754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.43914,"y":127.27675,"z":-104.48281},"screenPosition":{"x":0.47457582,"y":0.7172763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.4034,"y":129.25414,"z":-103.615364},"screenPosition":{"x":0.50423604,"y":0.6280033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.80694,"y":127.80672,"z":-103.447525},"screenPosition":{"x":0.4835255,"y":0.5567499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.94119,"y":126.39394,"z":-103.14534},"screenPosition":{"x":0.4634831,"y":0.4637071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.813644,"y":123.40445,"z":-103.51696},"screenPosition":{"x":0.41980952,"y":0.43895778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.2242,"y":121.539635,"z":-103.94778},"screenPosition":{"x":0.39231765,"y":0.45741522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.8033,"y":119.86649,"z":-104.31536},"screenPosition":{"x":0.36767524,"y":0.47074747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.49727,"y":117.78402,"z":-104.91018},"screenPosition":{"x":0.33683255,"y":0.51072735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.6508,"y":114.71601,"z":-105.24625},"screenPosition":{"x":0.29206848,"y":0.47760916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.89281,"y":112.659515,"z":-105.740295},"screenPosition":{"x":0.26185355,"y":0.50095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.626335,"y":111.36107,"z":-106.015},"screenPosition":{"x":0.23745944,"y":0.52066725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.68734,"y":109.934395,"z":-107.10954},"screenPosition":{"x":0.21937852,"y":0.483824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.049995,"y":106.59639,"z":-106.139},"screenPosition":{"x":0.17415535,"y":0.4669825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.14581,"y":106.135185,"z":-107.139},"screenPosition":{"x":0.16446593,"y":0.38196486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.98597,"y":104.29503,"z":-107.139},"screenPosition":{"x":0.13786888,"y":0.32776845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.03982,"y":101.47813,"z":-106.139},"screenPosition":{"x":0.100204885,"y":0.3199662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.21615,"y":99.7682,"z":-106.139},"screenPosition":{"x":0.07539089,"y":0.25607115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.59993,"y":99.681076,"z":-107.139},"screenPosition":{"x":0.07118024,"y":0.191878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.80304,"y":98.47797,"z":-107.139},"screenPosition":{"x":0.053790808,"y":0.15644383},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-074740/brain-C78490-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.7484154018407929,-0.6630610047661438,0.014982998564909977,0.0,-0.6409752760023055,0.7289204497867099,0.2404696933846521,0.0,-0.17036749056452175,0.17036749056452136,-0.9705410018734373,0.0,-149.74945258073348,148.4614670906658,-218.59950896557353,1.0]},"baseImage":"20190823-074740/base.webp","version":0,"savedAt":1.566546602978E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-081354-v0.json b/data/mapping/BAAAHS/dwayman/20190823-081354-v0.json new file mode 100644 index 0000000000..e0baf9db5e --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-081354-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566548034192E12,"surfaces":[{"brainId":"CB8980","panelName":"F19P","pixels":[{"modelPosition":{"x":-104.37891,"y":203.20108,"z":30.201117},"screenPosition":{"x":0.30835342,"y":0.2621882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.48737,"y":202.6122,"z":31.265333},"screenPosition":{"x":0.35121036,"y":0.24450259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.48434,"y":201.72499,"z":34.16668},"screenPosition":{"x":0.48862442,"y":0.21119905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.49737,"y":199.2285,"z":35.562695},"screenPosition":{"x":0.4455154,"y":0.14779659},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.21494,"y":200.5288,"z":31.84512},"screenPosition":{"x":0.27398404,"y":0.19379671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.93738,"y":201.56651,"z":29.21919},"screenPosition":{"x":0.20889269,"y":0.2344239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.31233,"y":204.1474,"z":29.663366},"screenPosition":{"x":0.3048337,"y":0.28436583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.733154,"y":204.81337,"z":31.265192},"screenPosition":{"x":0.4123463,"y":0.28930515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.1413,"y":203.4436,"z":33.363766},"screenPosition":{"x":0.4915159,"y":0.250398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.42423,"y":199.42177,"z":35.649208},"screenPosition":{"x":0.50745535,"y":0.15653035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.40025,"y":199.54431,"z":34.65981},"screenPosition":{"x":0.40385568,"y":0.1589686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.47184,"y":200.26889,"z":32.58822},"screenPosition":{"x":0.29971537,"y":0.17368157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.158844,"y":200.85895,"z":30.901217},"screenPosition":{"x":0.22811136,"y":0.20241989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.59297,"y":201.36055,"z":29.467089},"screenPosition":{"x":0.16663285,"y":0.22623941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.49798,"y":204.01202,"z":26.474571},"screenPosition":{"x":0.12249943,"y":0.29816797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.37797,"y":206.36064,"z":26.668587},"screenPosition":{"x":0.19857547,"y":0.34495094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.36189,"y":208.49495,"z":26.91489},"screenPosition":{"x":0.2716197,"y":0.38709763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.13186,"y":209.25008,"z":28.188124},"screenPosition":{"x":0.36427006,"y":0.3959334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.426,"y":208.55916,"z":30.73473},"screenPosition":{"x":0.48676607,"y":0.3683326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.92744,"y":205.54193,"z":33.005173},"screenPosition":{"x":0.52992743,"y":0.29509088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.39455,"y":202.67989,"z":32.85973},"screenPosition":{"x":0.44214788,"y":0.23750219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.57012,"y":203.00908,"z":30.171257},"screenPosition":{"x":0.30165902,"y":0.25858194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.39111,"y":206.81662,"z":27.938105},"screenPosition":{"x":0.28215244,"y":0.34756094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.68082,"y":209.97781,"z":28.08726},"screenPosition":{"x":0.3782946,"y":0.41111866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.73382,"y":210.18863,"z":30.260412},"screenPosition":{"x":0.50577843,"y":0.40407687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.177284,"y":208.94827,"z":32.250694},"screenPosition":{"x":0.5822513,"y":0.3682867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.541504,"y":206.61848,"z":34.19997},"screenPosition":{"x":0.6264147,"y":0.3106244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.31033,"y":203.57814,"z":34.71172},"screenPosition":{"x":0.57086533,"y":0.2463277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.85826,"y":203.98792,"z":32.46385},"screenPosition":{"x":0.45636934,"y":0.26620546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.07832,"y":207.17487,"z":30.305412},"screenPosition":{"x":0.42433318,"y":0.3424131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.88971,"y":209.86719,"z":30.338846},"screenPosition":{"x":0.50138044,"y":0.39718056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.62639,"y":211.09547,"z":31.343203},"screenPosition":{"x":0.59120643,"y":0.4167583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.29039,"y":211.46231,"z":32.941315},"screenPosition":{"x":0.6906611,"y":0.4158271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.40135,"y":209.89622,"z":35.394627},"screenPosition":{"x":0.7841925,"y":0.3710606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.94818,"y":206.54385,"z":37.056458},"screenPosition":{"x":0.78391474,"y":0.29413056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.098976,"y":204.69928,"z":35.74222},"screenPosition":{"x":0.6592481,"y":0.26345775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.52633,"y":205.55992,"z":33.30762},"screenPosition":{"x":0.54761183,"y":0.29407072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.13743,"y":209.19345,"z":31.34706},"screenPosition":{"x":0.53864837,"y":0.37805238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.78885,"y":211.00203,"z":32.056396},"screenPosition":{"x":0.6284472,"y":0.4111088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.81911,"y":209.64166,"z":35.226616},"screenPosition":{"x":0.7677903,"y":0.36682382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.202,"y":207.67789,"z":36.933163},"screenPosition":{"x":0.80850875,"y":0.31782478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.09344,"y":204.78926,"z":37.25447},"screenPosition":{"x":0.7462162,"y":0.25734264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.19884,"y":203.27982,"z":36.548847},"screenPosition":{"x":0.6649623,"y":0.23043574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.0777,"y":201.83295,"z":35.981377},"screenPosition":{"x":0.59335804,"y":0.20424666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.868805,"y":201.94357,"z":33.729794},"screenPosition":{"x":0.47034487,"y":0.21798147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.7584,"y":205.40738,"z":31.65722},"screenPosition":{"x":0.45074365,"y":0.2993352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.98801,"y":206.26537,"z":33.288906},"screenPosition":{"x":0.5657167,"y":0.30822426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.74326,"y":204.38214,"z":35.436054},"screenPosition":{"x":0.63356405,"y":0.25883698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.06355,"y":201.09235,"z":37.23604},"screenPosition":{"x":0.6425586,"y":0.18227668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.67852,"y":198.97603,"z":37.292183},"screenPosition":{"x":0.5869037,"y":0.1388966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.32804,"y":198.8195,"z":36.732018},"screenPosition":{"x":0.49946883,"y":0.13332771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.851814,"y":199.70226,"z":34.20825},"screenPosition":{"x":0.38514474,"y":0.16716067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.38798,"y":202.45189,"z":32.22497},"screenPosition":{"x":0.4003594,"y":0.2361972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.26041,"y":204.28787,"z":34.308407},"screenPosition":{"x":0.5680618,"y":0.2628834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.20687,"y":202.21266,"z":36.425694},"screenPosition":{"x":0.62836444,"y":0.20926924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.74973,"y":201.13263,"z":37.456337},"screenPosition":{"x":0.6559187,"y":0.18185638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.76481,"y":198.71368,"z":39.73421},"screenPosition":{"x":0.7159598,"y":0.120652884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.5078,"y":197.4833,"z":40.55226},"screenPosition":{"x":0.66931623,"y":0.07789051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.109152,"y":88.83582,"z":-76.02042},"screenPosition":{"x":-0.011458115,"y":-0.6147398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.0007,"y":200.80363,"z":31.05936},"screenPosition":{"x":0.23716629,"y":0.20280434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.37564,"y":200.23523,"z":32.684418},"screenPosition":{"x":0.30087176,"y":0.16835593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.54635,"y":199.59541,"z":34.51371},"screenPosition":{"x":0.384408,"y":0.14458887},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.48427,"y":198.52438,"z":37.575794},"screenPosition":{"x":0.53840125,"y":0.122887075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.996445,"y":198.00398,"z":39.06362},"screenPosition":{"x":0.60705054,"y":0.10447716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.09903,"y":197.34033,"z":40.961033},"screenPosition":{"x":0.6904369,"y":0.07573424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.622765,"y":196.82397,"z":42.4373},"screenPosition":{"x":0.7627145,"y":0.062732235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.44795,"y":197.86674,"z":42.855854},"screenPosition":{"x":0.8667981,"y":0.08701161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.41523,"y":200.23764,"z":42.967724},"screenPosition":{"x":0.9389047,"y":0.1346799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.5273,"y":202.4337,"z":41.511337},"screenPosition":{"x":0.91857105,"y":0.18738365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.9764,"y":204.5809,"z":40.603848},"screenPosition":{"x":0.9275148,"y":0.23562516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.15254,"y":206.80785,"z":38.296116},"screenPosition":{"x":0.8604706,"y":0.2929545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.4805,"y":207.50816,"z":36.821156},"screenPosition":{"x":0.79756826,"y":0.31501305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.989044,"y":206.58333,"z":35.435913},"screenPosition":{"x":0.69447327,"y":0.30341414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.52883,"y":204.58273,"z":34.69672},"screenPosition":{"x":0.5976125,"y":0.26657924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.76591,"y":202.47581,"z":35.82451},"screenPosition":{"x":0.6020865,"y":0.2177749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.80113,"y":199.12775,"z":37.101738},"screenPosition":{"x":0.580421,"y":0.14291318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.39042,"y":198.03053,"z":39.670776},"screenPosition":{"x":0.6937853,"y":0.10772995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.53884,"y":200.674,"z":40.253105},"screenPosition":{"x":0.7993964,"y":0.15782548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.64537,"y":202.96002,"z":40.308968},"screenPosition":{"x":0.8660177,"y":0.20406091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.75086,"y":204.9281,"z":38.217823},"screenPosition":{"x":0.8038824,"y":0.25510645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.68983,"y":205.78444,"z":36.167824},"screenPosition":{"x":0.71331173,"y":0.283492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.01315,"y":203.38185,"z":35.066456},"screenPosition":{"x":0.5849164,"y":0.24020277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.54334,"y":200.26605,"z":36.59385},"screenPosition":{"x":0.58367175,"y":0.16875072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.21131,"y":198.36055,"z":38.823147},"screenPosition":{"x":0.6552618,"y":0.118252754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.70074,"y":198.68282,"z":40.585556},"screenPosition":{"x":0.7626553,"y":0.11555095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.03834,"y":200.53168,"z":41.515194},"screenPosition":{"x":0.86598897,"y":0.14860336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.215515,"y":203.07658,"z":41.35447},"screenPosition":{"x":0.9276533,"y":0.20093942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.857864,"y":205.63435,"z":40.03995},"screenPosition":{"x":0.9252784,"y":0.2599067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.2439,"y":208.03531,"z":37.45963},"screenPosition":{"x":0.8478437,"y":0.32233322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.604576,"y":206.36473,"z":35.872803},"screenPosition":{"x":0.71281993,"y":0.2966877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.0949,"y":203.49411,"z":36.49656},"screenPosition":{"x":0.6679056,"y":0.23496433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.52773,"y":200.8206,"z":38.60642},"screenPosition":{"x":0.7114907,"y":0.16946222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.72598,"y":199.27681,"z":40.97758},"screenPosition":{"x":0.8010527,"y":0.12558103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.51666,"y":201.00053,"z":41.630917},"screenPosition":{"x":0.8854269,"y":0.157232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.69587,"y":204.14803,"z":41.09302},"screenPosition":{"x":0.94280106,"y":0.22447906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.25443,"y":205.99097,"z":38.725574},"screenPosition":{"x":0.8618374,"y":0.27435026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.19136,"y":206.24472,"z":37.052742},"screenPosition":{"x":0.7754602,"y":0.28816706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.801796,"y":204.50299,"z":36.09696},"screenPosition":{"x":0.67363304,"y":0.25762504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.13623,"y":201.9538,"z":36.64228},"screenPosition":{"x":0.6333559,"y":0.20296244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.163414,"y":199.67288,"z":38.042664},"screenPosition":{"x":0.6481202,"y":0.14906435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.84802,"y":197.53079,"z":40.4064},"screenPosition":{"x":0.7206479,"y":0.09304475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.66995,"y":198.17877,"z":41.705776},"screenPosition":{"x":0.81122607,"y":0.099405766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.691696,"y":199.46535,"z":43.232883},"screenPosition":{"x":0.93226284,"y":0.11816984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.1408,"y":201.61253,"z":42.325394},"screenPosition":{"x":0.94121784,"y":0.16603906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.19286,"y":204.9829,"z":40.966015},"screenPosition":{"x":0.9589091,"y":0.24178109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.35893,"y":207.67441,"z":39.158604},"screenPosition":{"x":0.93271756,"y":0.30606017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.983505,"y":206.6733,"z":36.948162},"screenPosition":{"x":0.7815938,"y":0.29756021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.043976,"y":203.91922,"z":38.61742},"screenPosition":{"x":0.7981781,"y":0.23247238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.069695,"y":202.93344,"z":40.775715},"screenPosition":{"x":0.8913556,"y":0.2011139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.19286,"y":204.9829,"z":40.966015},"screenPosition":{"x":0.9589091,"y":0.24178109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.82864,"y":207.3127,"z":39.01674},"screenPosition":{"x":0.91475165,"y":0.29953018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.35846,"y":209.25418,"z":37.392338},"screenPosition":{"x":0.87794286,"y":0.34749532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.78889,"y":211.03537,"z":36.72758},"screenPosition":{"x":0.89030653,"y":0.38731188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.48774,"y":213.1114,"z":36.451134},"screenPosition":{"x":0.93251544,"y":0.4309851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.88488,"y":215.36575,"z":35.517498},"screenPosition":{"x":0.94298476,"y":0.4817509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.92834,"y":217.90553,"z":33.90053},"screenPosition":{"x":0.92321795,"y":0.54192936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.64076,"y":218.82445,"z":31.988682},"screenPosition":{"x":0.8419542,"y":0.57067853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.394516,"y":218.20303,"z":30.222559},"screenPosition":{"x":0.72606176,"y":0.56731015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.36846,"y":224.27943,"z":29.583662},"screenPosition":{"x":0.8591776,"y":0.69428426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.769104,"y":225.84122,"z":27.514946},"screenPosition":{"x":0.78697735,"y":0.7370028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.77667,"y":226.35384,"z":25.625528},"screenPosition":{"x":0.6786506,"y":0.76453835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.31947,"y":224.98071,"z":25.907108},"screenPosition":{"x":0.6220169,"y":0.7224547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.98279,"y":222.89381,"z":25.907108},"screenPosition":{"x":0.563558,"y":0.6802067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.36592,"y":221.15845,"z":25.907108},"screenPosition":{"x":0.5153535,"y":0.64488596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.84389,"y":219.30411,"z":25.907108},"screenPosition":{"x":0.4638439,"y":0.6071434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.71634,"y":217.06226,"z":25.207922},"screenPosition":{"x":0.41560605,"y":0.57179815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.89691,"y":215.43709,"z":25.29764},"screenPosition":{"x":0.37237066,"y":0.54011834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.49774,"y":212.58017,"z":26.608444},"screenPosition":{"x":0.3679808,"y":0.47185653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.3756,"y":210.84866,"z":28.565151},"screenPosition":{"x":0.4291785,"y":0.42633262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.31607,"y":210.44319,"z":30.428425},"screenPosition":{"x":0.52199125,"y":0.408289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.888245,"y":211.16234,"z":31.096758},"screenPosition":{"x":0.5793691,"y":0.41944164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.65617,"y":211.31488,"z":32.747158},"screenPosition":{"x":0.6757978,"y":0.41388917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.06035,"y":212.21744,"z":34.214546},"screenPosition":{"x":0.7827552,"y":0.42450628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.301895,"y":225.22574,"z":29.04591},"screenPosition":{"x":0.8553952,"y":0.71643114},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-93.77241,"y":218.19363,"z":29.150911},"screenPosition":{"x":0.6659238,"y":0.5727508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.54644,"y":220.15393,"z":29.669807},"screenPosition":{"x":0.7493604,"y":0.6099234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.52833,"y":221.68567,"z":30.29328},"screenPosition":{"x":0.82673335,"y":0.63782334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.01525,"y":222.9851,"z":30.666594},"screenPosition":{"x":0.8836809,"y":0.66231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.259,"y":224.5837,"z":31.043621},"screenPosition":{"x":0.9491456,"y":0.69286585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.50228,"y":227.76205,"z":29.654383},"screenPosition":{"x":0.9598296,"y":0.76481175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.8676,"y":229.19441,"z":27.693962},"screenPosition":{"x":0.89012074,"y":0.8043115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.448814,"y":229.13101,"z":25.714966},"screenPosition":{"x":0.75671065,"y":0.82173514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.618744,"y":226.07268,"z":25.924263},"screenPosition":{"x":0.70455694,"y":0.7500724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.78168,"y":224.39946,"z":28.40372},"screenPosition":{"x":0.79657245,"y":0.70298773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.87804,"y":223.67255,"z":30.345428},"screenPosition":{"x":0.88485456,"y":0.67794573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.12382,"y":225.87373,"z":30.345287},"screenPosition":{"x":0.9459687,"y":0.72273403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.64356,"y":228.27979,"z":29.22121},"screenPosition":{"x":0.95000815,"y":0.7775036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.635056,"y":230.92673,"z":27.578098},"screenPosition":{"x":0.93176883,"y":0.84017915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.625984,"y":231.67592,"z":25.554241},"screenPosition":{"x":0.82402503,"y":0.8710583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.26904,"y":230.06264,"z":25.907108},"screenPosition":{"x":0.75527686,"y":0.8295691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.8177,"y":228.11958,"z":25.907108},"screenPosition":{"x":0.70871824,"y":0.7865698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.57686,"y":225.71526,"z":25.397799},"screenPosition":{"x":0.6571332,"y":0.7487719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.79729,"y":223.84492,"z":26.391151},"screenPosition":{"x":0.6687535,"y":0.70227623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.91029,"y":222.88144,"z":28.467297},"screenPosition":{"x":0.75795615,"y":0.67175645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.279144,"y":223.65456,"z":30.042978},"screenPosition":{"x":0.8674739,"y":0.67915547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.470924,"y":225.36029,"z":30.393862},"screenPosition":{"x":0.93442446,"y":0.7120866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.51892,"y":227.52548,"z":29.78882},"screenPosition":{"x":0.96077317,"y":0.7593352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.00334,"y":229.80211,"z":28.773037},"screenPosition":{"x":0.99935704,"y":0.80872786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.81824,"y":231.80188,"z":27.67139},"screenPosition":{"x":0.9612897,"y":0.85750145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.635155,"y":234.40424,"z":26.192575},"screenPosition":{"x":0.95097595,"y":0.91823936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.93536,"y":234.24527,"z":25.907108},"screenPosition":{"x":0.8734231,"y":0.9137874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.297554,"y":232.55536,"z":25.262938},"screenPosition":{"x":0.8431615,"y":0.88508016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.696945,"y":235.79907,"z":25.907108},"screenPosition":{"x":0.92203724,"y":0.94287467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.82921,"y":228.14442,"z":26.032415},"screenPosition":{"x":0.7681464,"y":0.79167145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.10818,"y":226.39493,"z":27.686672},"screenPosition":{"x":0.81197226,"y":0.7473359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.817,"y":224.52888,"z":28.29543},"screenPosition":{"x":0.7941345,"y":0.70617425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.71047,"y":222.24286,"z":28.239565},"screenPosition":{"x":0.72749764,"y":0.6599558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.73061,"y":221.31372,"z":27.238924},"screenPosition":{"x":0.64590573,"y":0.6462679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.66144,"y":219.7597,"z":26.6976},"screenPosition":{"x":0.57239234,"y":0.6175173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.00698,"y":217.0639,"z":28.889606},"screenPosition":{"x":0.6199469,"y":0.5511299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.39248,"y":217.60045,"z":30.599728},"screenPosition":{"x":0.73044056,"y":0.55306536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.62919,"y":220.55083,"z":28.575731},"screenPosition":{"x":0.6992737,"y":0.62375045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.03436,"y":221.738,"z":27.518944},"screenPosition":{"x":0.6732226,"y":0.6534669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.90325,"y":224.23322,"z":26.066273},"screenPosition":{"x":0.66150403,"y":0.7118226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.99314,"y":226.75583,"z":25.987698},"screenPosition":{"x":0.7271246,"y":0.7635951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.06481,"y":227.33266,"z":27.91812},"screenPosition":{"x":0.8509261,"y":0.7652405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.38567,"y":225.9406,"z":30.09884},"screenPosition":{"x":0.9340644,"y":0.7253754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.22388,"y":215.8528,"z":26.346857},"screenPosition":{"x":0.4443489,"y":0.53984314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.50635,"y":213.41074,"z":26.866034},"screenPosition":{"x":0.40544054,"y":0.48740825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.3756,"y":210.84866,"z":28.565151},"screenPosition":{"x":0.4291785,"y":0.42633262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.40132,"y":209.8629,"z":30.723444},"screenPosition":{"x":0.52251154,"y":0.39499074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.92607,"y":210.31459,"z":32.37756},"screenPosition":{"x":0.62744164,"y":0.39550865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.504814,"y":211.26172,"z":33.680653},"screenPosition":{"x":0.72638595,"y":0.4078594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.4721,"y":213.63261,"z":33.79252},"screenPosition":{"x":0.7985295,"y":0.45555544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.83344,"y":217.3373,"z":31.200912},"screenPosition":{"x":0.75668454,"y":0.5445519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.39948,"y":216.21533,"z":28.329567},"screenPosition":{"x":0.5650935,"y":0.5368012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.3661,"y":213.21097,"z":29.446215},"screenPosition":{"x":0.54401124,"y":0.4697843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.11275,"y":210.49718,"z":31.335773},"screenPosition":{"x":0.5744352,"y":0.404731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.5416,"y":210.09601,"z":32.81445},"screenPosition":{"x":0.64562184,"y":0.38868457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.39072,"y":208.46306,"z":35.514206},"screenPosition":{"x":0.7510615,"y":0.3412622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.900856,"y":209.75392,"z":36.656715},"screenPosition":{"x":0.8507351,"y":0.36153218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.21524,"y":211.61137,"z":36.817158},"screenPosition":{"x":0.9112928,"y":0.39849496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.00138,"y":213.7097,"z":36.458565},"screenPosition":{"x":0.9495498,"y":0.44308767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.17198,"y":216.02661,"z":35.663082},"screenPosition":{"x":0.9983018,"y":0.49493203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.76034,"y":218.08894,"z":34.699585},"screenPosition":{"x":0.99845856,"y":0.54156065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.97836,"y":220.67331,"z":32.91832},"screenPosition":{"x":0.94523793,"y":0.60342467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.576225,"y":220.37334,"z":31.073763},"screenPosition":{"x":0.83387494,"y":0.6070118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.31177,"y":217.80615,"z":31.316635},"screenPosition":{"x":0.77613014,"y":0.55348414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.931274,"y":215.31523,"z":32.38471},"screenPosition":{"x":0.7665968,"y":0.4971727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.79249,"y":213.82031,"z":34.206978},"screenPosition":{"x":0.82685685,"y":0.45717043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.83892,"y":213.80315,"z":35.74537},"screenPosition":{"x":0.91230905,"y":0.44873714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.45455,"y":217.06207,"z":34.796734},"screenPosition":{"x":0.94984734,"y":0.5200527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.375404,"y":219.45013,"z":33.37021},"screenPosition":{"x":0.9365018,"y":0.57615423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.4269,"y":220.92278,"z":31.630087},"screenPosition":{"x":0.8802112,"y":0.6152713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.29115,"y":220.31506,"z":30.551012},"screenPosition":{"x":0.8030925,"y":0.6085581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.39405,"y":219.7828,"z":28.456293},"screenPosition":{"x":0.67126876,"y":0.6087463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.94041,"y":218.01021,"z":28.351856},"screenPosition":{"x":0.61619645,"y":0.57321644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.15224,"y":215.3093,"z":29.08762},"screenPosition":{"x":0.5822682,"y":0.514377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.68385,"y":226.42151,"z":27.219927},"screenPosition":{"x":0.7866898,"y":0.75026834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.85922,"y":219.7957,"z":27.302498},"screenPosition":{"x":0.6071796,"y":0.61507124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.28048,"y":218.84856,"z":25.999407},"screenPosition":{"x":0.50808424,"y":0.60264105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.05134,"y":216.4108,"z":26.133986},"screenPosition":{"x":0.44788593,"y":0.55231684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.91606,"y":214.22333,"z":26.821175},"screenPosition":{"x":0.42550665,"y":0.504183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.43163,"y":211.9467,"z":27.836958},"screenPosition":{"x":0.4190051,"y":0.45250788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.76607,"y":209.3975,"z":28.38228},"screenPosition":{"x":0.37886372,"y":0.39781713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.74679,"y":222.65692,"z":25.607096},"screenPosition":{"x":0.576489,"y":0.6896816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.219574,"y":207.65926,"z":25.201056},"screenPosition":{"x":0.15658563,"y":0.38200653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.874405,"y":205.29778,"z":26.160835},"screenPosition":{"x":0.14069031,"y":0.32598594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.4904,"y":203.4994,"z":28.363989},"screenPosition":{"x":0.21379627,"y":0.27780613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.27498,"y":203.41537,"z":30.148829},"screenPosition":{"x":0.3120097,"y":0.26711398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.20694,"y":205.65683,"z":30.368988},"screenPosition":{"x":0.3857169,"y":0.3111818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.59954,"y":208.28577,"z":28.423426},"screenPosition":{"x":0.35007066,"y":0.3749133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.44261,"y":208.28925,"z":26.197983},"screenPosition":{"x":0.22586179,"y":0.38667792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.44204,"y":206.39151,"z":25.817242},"screenPosition":{"x":0.13189904,"y":0.36391798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.94901,"y":203.2843,"z":26.575436},"screenPosition":{"x":0.10914516,"y":0.28323227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.0889,"y":201.53401,"z":28.971167},"screenPosition":{"x":0.14368771,"y":0.23178002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.13516,"y":201.6025,"z":29.82409},"screenPosition":{"x":0.24266024,"y":0.23152481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.82394,"y":204.1431,"z":30.047964},"screenPosition":{"x":0.32573754,"y":0.28205884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.52029,"y":207.19633,"z":28.382421},"screenPosition":{"x":0.31751797,"y":0.3529547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.53997,"y":207.84697,"z":25.615515},"screenPosition":{"x":0.1686411,"y":0.39083993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.11101,"y":204.77063,"z":25.522362},"screenPosition":{"x":0.082351685,"y":0.3276132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.04841,"y":203.44461,"z":25.615797},"screenPosition":{"x":0.047367413,"y":0.30197924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.47646,"y":202.36911,"z":26.5836},"screenPosition":{"x":0.028053867,"y":0.25488237},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-106.8647,"y":200.70505,"z":29.812944},"screenPosition":{"x":0.22333547,"y":0.21629925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.639725,"y":202.94998,"z":27.807663},"screenPosition":{"x":0.16746008,"y":0.26954666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.814865,"y":204.8923,"z":28.024109},"screenPosition":{"x":0.23350306,"y":0.3079423},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-081354/brain-CB8980-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.7159394164920221,-0.18280934608494065,0.673803751026261,0.0,0.4262263679114087,0.878831345999616,-0.21444474483081105,0.0,-0.5529573538801266,0.4407223709689578,0.7071081646519073,0.0,-149.95166655395516,268.2312226874721,113.45626610088462,1.0]},"baseImage":"20190823-081354/base.webp","version":0,"savedAt":1.566548160706E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-082308-v0.json b/data/mapping/BAAAHS/dwayman/20190823-082308-v0.json new file mode 100644 index 0000000000..a1b849f160 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-082308-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566548588156E12,"surfaces":[{"brainId":"C784EC","panelName":"29D","pixels":[{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-232.23375,"y":94.43767,"z":-98.88523},"screenPosition":{"x":-0.024627993,"y":1.0033308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.98431,"y":96.60936,"z":-98.19162},"screenPosition":{"x":0.06646572,"y":0.99844295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.17282,"y":98.10403,"z":-97.71762},"screenPosition":{"x":0.12047077,"y":0.9848852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.49593,"y":99.76797,"z":-97.18994},"screenPosition":{"x":0.18619254,"y":0.97663945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.62202,"y":101.18415,"z":-96.74084},"screenPosition":{"x":0.24212834,"y":0.96962154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.9373,"y":102.83824,"z":-96.21628},"screenPosition":{"x":0.30746093,"y":0.9614246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.17508,"y":104.39487,"z":-95.72263},"screenPosition":{"x":0.36952975,"y":0.9540611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.97325,"y":105.008606,"z":-94.42833},"screenPosition":{"x":0.40979946,"y":0.9485848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.81197,"y":105.96875,"z":-93.893326},"screenPosition":{"x":0.45466837,"y":0.9279033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.86649,"y":107.191536,"z":-93.273544},"screenPosition":{"x":0.51609284,"y":0.9091905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.74463,"y":108.565025,"z":-92.66947},"screenPosition":{"x":0.57987684,"y":0.89319414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.2914,"y":110.815125,"z":-92.00788},"screenPosition":{"x":0.66580963,"y":0.8848782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.99445,"y":114.2285,"z":-92.60413},"screenPosition":{"x":0.76023316,"y":0.9085069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.7223,"y":113.98385,"z":-92.26344},"screenPosition":{"x":0.7174006,"y":0.94028753},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-241.4711,"y":109.47237,"z":-93.62714},"screenPosition":{"x":0.5432529,"y":0.9587226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.21117,"y":106.955444,"z":-94.91061},"screenPosition":{"x":0.4700805,"y":0.9410217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.49638,"y":104.7909,"z":-93.91934},"screenPosition":{"x":0.42780963,"y":0.91478705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.12625,"y":105.30778,"z":-92.85098},"screenPosition":{"x":0.49943647,"y":0.86268294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.90509,"y":110.46819,"z":-92.57034},"screenPosition":{"x":0.63507634,"y":0.9203206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.08705,"y":111.54241,"z":-92.15941},"screenPosition":{"x":0.6729111,"y":0.90211725},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-251.34619,"y":114.90229,"z":-90.75358},"screenPosition":{"x":0.8248752,"y":0.8669062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.09312,"y":115.68766,"z":-90.04951},"screenPosition":{"x":0.8816414,"y":0.8381985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.01514,"y":113.20678,"z":-89.78693},"screenPosition":{"x":0.84302753,"y":0.7932628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.68744,"y":109.812546,"z":-90.14058},"screenPosition":{"x":0.74971384,"y":0.7705538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.70453,"y":106.78254,"z":-90.79567},"screenPosition":{"x":0.6474603,"y":0.7689664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.6813,"y":105.71937,"z":-91.17095},"screenPosition":{"x":0.60333437,"y":0.7763501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.83022,"y":103.7661,"z":-91.63988},"screenPosition":{"x":0.5347015,"y":0.7778208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.47571,"y":101.199455,"z":-92.30667},"screenPosition":{"x":0.44165158,"y":0.7825145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.45518,"y":99.90286,"z":-93.14437},"screenPosition":{"x":0.36630574,"y":0.81220144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.44714,"y":102.952484,"z":-93.12761},"screenPosition":{"x":0.43308356,"y":0.848699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.34682,"y":105.33622,"z":-93.22829},"screenPosition":{"x":0.47866526,"y":0.8838271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.05415,"y":107.5991,"z":-92.530396},"screenPosition":{"x":0.5669273,"y":0.8736891},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.82358,"y":109.44575,"z":-91.45148},"screenPosition":{"x":0.6677779,"y":0.837634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.20874,"y":106.67423,"z":-91.3466},"screenPosition":{"x":0.61394596,"y":0.7976359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.9559,"y":103.61751,"z":-91.849106},"screenPosition":{"x":0.5196803,"y":0.7872264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.07529,"y":102.24296,"z":-92.45386},"screenPosition":{"x":0.45583227,"y":0.803378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.43164,"y":101.22127,"z":-93.17045},"screenPosition":{"x":0.39345145,"y":0.8295863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.84418,"y":100.45039,"z":-93.8382},"screenPosition":{"x":0.33884725,"y":0.8567991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.09877,"y":106.80492,"z":-93.49483},"screenPosition":{"x":0.49529663,"y":0.9160977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.79436,"y":108.56333,"z":-92.44468},"screenPosition":{"x":0.59249943,"y":0.88059646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.67897,"y":105.431946,"z":-92.71428},"screenPosition":{"x":0.5098427,"y":0.8567361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.96136,"y":102.66324,"z":-93.05979},"screenPosition":{"x":0.4305874,"y":0.84165215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.20625,"y":99.96614,"z":-93.18846},"screenPosition":{"x":0.36524072,"y":0.81530946},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-257.64108,"y":105.54023,"z":-90.777084},"screenPosition":{"x":0.62176,"y":0.75265825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.98038,"y":103.25394,"z":-90.610886},"screenPosition":{"x":0.58188623,"y":0.71538067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.0141,"y":100.29142,"z":-90.82375},"screenPosition":{"x":0.5059888,"y":0.6904321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.20816,"y":97.10599,"z":-91.4637},"screenPosition":{"x":0.40112135,"y":0.6860251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.59366,"y":95.7576,"z":-92.221954},"screenPosition":{"x":0.32915422,"y":0.7107401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.22766,"y":96.73036,"z":-92.58652},"screenPosition":{"x":0.3296065,"y":0.74255526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.41135,"y":97.08652,"z":-92.92366},"screenPosition":{"x":0.31809187,"y":0.76540995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.35725,"y":98.98549,"z":-93.085526},"screenPosition":{"x":0.34986275,"y":0.7976714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.31577,"y":99.98082,"z":-93.37721},"screenPosition":{"x":0.35507068,"y":0.82555985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.20143,"y":94.61864,"z":-96.33194},"screenPosition":{"x":0.052066877,"y":0.9158562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.43823,"y":94.04806,"z":-95.93609},"screenPosition":{"x":0.0692403,"y":0.8881027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.82558,"y":94.39205,"z":-95.37384},"screenPosition":{"x":0.1213774,"y":0.86578983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.09222,"y":95.13779,"z":-94.77854},"screenPosition":{"x":0.1711345,"y":0.8425255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.87839,"y":95.84747,"z":-94.29154},"screenPosition":{"x":0.2145339,"y":0.8243622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.21819,"y":96.68123,"z":-93.667656},"screenPosition":{"x":0.26725873,"y":0.8009853},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-249.75722,"y":104.36527,"z":-92.63956},"screenPosition":{"x":0.49105027,"y":0.8397366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.23573,"y":102.255135,"z":-92.41768},"screenPosition":{"x":0.45812416,"y":0.8015959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.75302,"y":100.07044,"z":-92.4128},"screenPosition":{"x":0.41131234,"y":0.7743703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.84473,"y":98.09878,"z":-92.46792},"screenPosition":{"x":0.36569738,"y":0.7530456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.86502,"y":96.038506,"z":-92.55134},"screenPosition":{"x":0.31669357,"y":0.7321039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.92432,"y":94.39135,"z":-92.56582},"screenPosition":{"x":0.28024977,"y":0.71263444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.43268,"y":93.106255,"z":-92.43092},"screenPosition":{"x":0.26018444,"y":0.6894188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.5098,"y":91.29436,"z":-92.46574},"screenPosition":{"x":0.20610364,"y":0.66692173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.52548,"y":91.32603,"z":-93.91967},"screenPosition":{"x":0.16156647,"y":0.6914584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.8401,"y":92.568115,"z":-92.63688},"screenPosition":{"x":0.2371796,"y":0.693942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.70667,"y":94.10697,"z":-92.01103},"screenPosition":{"x":0.30551204,"y":0.67886776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.2183,"y":95.94833,"z":-91.41692},"screenPosition":{"x":0.3788383,"y":0.6691802},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-259.2946,"y":102.05151,"z":-90.93426},"screenPosition":{"x":0.53767264,"y":0.7181787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.2953,"y":102.519394,"z":-90.00796},"screenPosition":{"x":0.60017,"y":0.673433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.7318,"y":98.02304,"z":-90.35942},"screenPosition":{"x":0.48337096,"y":0.6371154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.25665,"y":96.362526,"z":-91.34795},"screenPosition":{"x":0.39164662,"y":0.67053795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.26294,"y":97.12373,"z":-91.87811},"screenPosition":{"x":0.37805486,"y":0.70884585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.56775,"y":97.07807,"z":-92.24823},"screenPosition":{"x":0.35612822,"y":0.72846824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.50179,"y":97.497574,"z":-92.62961},"screenPosition":{"x":0.34368512,"y":0.7543751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.2596,"y":98.06783,"z":-93.02666},"screenPosition":{"x":0.33341476,"y":0.78313696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.12369,"y":98.39934,"z":-93.43594},"screenPosition":{"x":0.31740123,"y":0.8095496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.25418,"y":98.504395,"z":-93.82132},"screenPosition":{"x":0.29785952,"y":0.8318643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.88786,"y":98.73599,"z":-94.294655},"screenPosition":{"x":0.27606872,"y":0.8605373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.48958,"y":99.293304,"z":-94.727066},"screenPosition":{"x":0.26395833,"y":0.8906474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.09839,"y":100.58921,"z":-95.04964},"screenPosition":{"x":0.27360168,"y":0.9242179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.6304,"y":103.70989,"z":-95.93986},"screenPosition":{"x":0.34188896,"y":0.95710516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.7465,"y":106.13341,"z":-94.097595},"screenPosition":{"x":0.4474943,"y":0.9381278},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-245.74445,"y":103.32143,"z":-93.65291},"screenPosition":{"x":0.411213,"y":0.8821224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.0492,"y":102.10146,"z":-93.33773},"screenPosition":{"x":0.40281755,"y":0.8497647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.28348,"y":100.7932,"z":-93.05061},"screenPosition":{"x":0.39085504,"y":0.8179992},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-245.87169,"y":106.03819,"z":-93.227196},"screenPosition":{"x":0.4939156,"y":0.8920765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.11484,"y":108.58785,"z":-92.372375},"screenPosition":{"x":0.59717953,"y":0.8772725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.64516,"y":111.00093,"z":-91.69041},"screenPosition":{"x":0.68777806,"y":0.86985654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.15344,"y":112.83834,"z":-91.09759},"screenPosition":{"x":0.76065147,"y":0.85988814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.35258,"y":113.7503,"z":-90.70677},"screenPosition":{"x":0.80269396,"y":0.85013765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.82762,"y":115.913086,"z":-90.073364},"screenPosition":{"x":0.8849389,"y":0.8421388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.52759,"y":118.83982,"z":-89.70846},"screenPosition":{"x":0.99132234,"y":0.85462785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.82439,"y":120.68082,"z":-89.98478},"screenPosition":{"x":0.9912624,"y":0.89803743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.46214,"y":119.75694,"z":-90.402885},"screenPosition":{"x":0.9472201,"y":0.90993744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.85936,"y":116.77062,"z":-91.39541},"screenPosition":{"x":0.82652223,"y":0.92739785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.4068,"y":114.93253,"z":-91.777176},"screenPosition":{"x":0.766063,"y":0.9247355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.89893,"y":113.07994,"z":-91.759865},"screenPosition":{"x":0.7358694,"y":0.9076747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.39693,"y":112.037224,"z":-91.16288},"screenPosition":{"x":0.7396872,"y":0.8535356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.57487,"y":112.860435,"z":-90.57524},"screenPosition":{"x":0.79064685,"y":0.8317076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.83694,"y":112.87021,"z":-90.08886},"screenPosition":{"x":0.81868863,"y":0.8055769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.22084,"y":113.1612,"z":-90.60703},"screenPosition":{"x":0.79544353,"y":0.8372521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.60782,"y":119.2374,"z":-88.775406},"screenPosition":{"x":1.0302424,"y":0.8125158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.00845,"y":118.877014,"z":-89.599915},"screenPosition":{"x":0.9891973,"y":0.84975296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.4661,"y":119.740616,"z":-89.80392},"screenPosition":{"x":0.9985491,"y":0.8712065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.5942,"y":106.28154,"z":-90.8928},"screenPosition":{"x":0.6311902,"y":0.76811725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.73645,"y":106.691216,"z":-90.37346},"screenPosition":{"x":0.6694061,"y":0.74484825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.18393,"y":107.2885,"z":-89.76117},"screenPosition":{"x":0.7168976,"y":0.7188084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.64148,"y":109.36502,"z":-88.92978},"screenPosition":{"x":0.8087244,"y":0.69910663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.6431,"y":112.48496,"z":-88.47187},"screenPosition":{"x":0.92819047,"y":0.70979875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.33383,"y":114.18985,"z":-88.50252},"screenPosition":{"x":0.9386703,"y":0.7338403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.34598,"y":116.38765,"z":-89.85392},"screenPosition":{"x":0.9595023,"y":0.78163034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.98845,"y":116.412415,"z":-89.751274},"screenPosition":{"x":0.91413724,"y":0.8308768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.55376,"y":112.77164,"z":-90.37841},"screenPosition":{"x":0.80018026,"y":0.8201523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.1173,"y":109.85097,"z":-90.25717},"screenPosition":{"x":0.74384135,"y":0.7772927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.97867,"y":108.26968,"z":-90.09004},"screenPosition":{"x":0.7194643,"y":0.7488694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.77396,"y":107.33934,"z":-89.841606},"screenPosition":{"x":0.7134232,"y":0.723809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.87256,"y":106.34352,"z":-89.32337},"screenPosition":{"x":0.72132975,"y":0.6832867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.22888,"y":106.276535,"z":-88.82804},"screenPosition":{"x":0.74791336,"y":0.65544546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.62875,"y":107.363434,"z":-88.15415},"screenPosition":{"x":0.8094709,"y":0.63210464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.72186,"y":110.6107,"z":-88.69114},"screenPosition":{"x":0.90078306,"y":0.64692426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.29166,"y":112.10807,"z":-88.99253},"screenPosition":{"x":0.9160029,"y":0.68183964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.9375,"y":114.06176,"z":-87.96311},"screenPosition":{"x":0.96465236,"y":0.7043451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.17972,"y":115.40358,"z":-88.14316},"screenPosition":{"x":0.9833855,"y":0.73072314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.04974,"y":115.33786,"z":-89.642624},"screenPosition":{"x":0.956285,"y":0.7566531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.1701,"y":116.496,"z":-89.87573},"screenPosition":{"x":0.96780986,"y":0.7836174},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-252.45834,"y":119.8423,"z":-90.823845},"screenPosition":{"x":0.9790803,"y":0.8771604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.2041,"y":118.26496,"z":-91.324066},"screenPosition":{"x":0.9167791,"y":0.8849769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.67188,"y":116.33804,"z":-91.93514},"screenPosition":{"x":0.8406706,"y":0.8945258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.99562,"y":114.22997,"z":-92.60366},"screenPosition":{"x":0.7613385,"y":0.9097796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.6949,"y":111.43035,"z":-92.25992},"screenPosition":{"x":0.67328185,"y":0.91552716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.79987,"y":108.81522,"z":-92.62094},"screenPosition":{"x":0.5880112,"y":0.8936064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.37544,"y":105.73118,"z":-92.52108},"screenPosition":{"x":0.5272157,"y":0.84974396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.68535,"y":104.27773,"z":-92.6678},"screenPosition":{"x":0.4875693,"y":0.8401798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.18573,"y":102.744,"z":-92.3567},"screenPosition":{"x":0.47212568,"y":0.8042622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.47885,"y":102.1728,"z":-91.73449},"screenPosition":{"x":0.4950312,"y":0.7632362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.7267,"y":105.21229,"z":-90.592445},"screenPosition":{"x":0.625139,"y":0.73854125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.61063,"y":108.98596,"z":-90.278275},"screenPosition":{"x":0.7242517,"y":0.76797485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.76564,"y":109.91708,"z":-90.75163},"screenPosition":{"x":0.7175367,"y":0.80528134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.72893,"y":111.16075,"z":-91.220245},"screenPosition":{"x":0.7178261,"y":0.8461866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.47939,"y":109.763725,"z":-92.12177},"screenPosition":{"x":0.63670385,"y":0.87811536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.29883,"y":105.39129,"z":-92.37297},"screenPosition":{"x":0.52824885,"y":0.8378586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.05986,"y":105.75999,"z":-91.5126},"screenPosition":{"x":0.58486664,"y":0.7954361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.05458,"y":107.88781,"z":-90.9873},"screenPosition":{"x":0.6604641,"y":0.79309267},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-261.1547,"y":113.85305,"z":-88.804695},"screenPosition":{"x":0.91253495,"y":0.7476681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.6485,"y":110.35647,"z":-88.99725},"screenPosition":{"x":0.8262757,"y":0.7150214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.88162,"y":107.58812,"z":-89.56766},"screenPosition":{"x":0.7343326,"y":0.71196854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.65414,"y":105.359024,"z":-90.15772},"screenPosition":{"x":0.65290004,"y":0.7166426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.52725,"y":102.385254,"z":-90.40667},"screenPosition":{"x":0.5747186,"y":0.6935229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.85876,"y":104.10523,"z":-89.01144},"screenPosition":{"x":0.6907143,"y":0.63864905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.34573,"y":104.8821,"z":-88.79311},"screenPosition":{"x":0.719761,"y":0.6363217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.45868,"y":109.96466,"z":-90.3817},"screenPosition":{"x":0.7393517,"y":0.78556633},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-272.5625,"y":107.74561,"z":-87.25478},"screenPosition":{"x":0.8748152,"y":0.5873521},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-268.05792,"y":110.52417,"z":-87.81297},"screenPosition":{"x":0.8936401,"y":0.65210766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.57626,"y":107.61776,"z":-88.55687},"screenPosition":{"x":0.79207295,"y":0.65718937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.07803,"y":104.85558,"z":-88.64001},"screenPosition":{"x":0.72791857,"y":0.6276548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.88507,"y":104.89835,"z":-87.81758},"screenPosition":{"x":0.7753661,"y":0.5833308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.74042,"y":107.59476,"z":-87.23876},"screenPosition":{"x":0.87360114,"y":0.58456695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.4967,"y":109.155396,"z":-87.70527},"screenPosition":{"x":0.8925745,"y":0.62809324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.0876,"y":102.54756,"z":-91.54903},"screenPosition":{"x":0.5135783,"y":0.7578291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.24992,"y":102.32592,"z":-91.97549},"screenPosition":{"x":0.48467037,"y":0.7783529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.8044,"y":101.729706,"z":-92.587204},"screenPosition":{"x":0.4372564,"y":0.80426466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.46489,"y":100.89536,"z":-93.21111},"screenPosition":{"x":0.3841223,"y":0.8278083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.91663,"y":101.02426,"z":-93.52413},"screenPosition":{"x":0.36898762,"y":0.8467515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.16429,"y":99.9884,"z":-94.05171},"screenPosition":{"x":0.31708196,"y":0.8624336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.09741,"y":99.667656,"z":-94.541855},"screenPosition":{"x":0.28216183,"y":0.88551635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.61183,"y":100.29995,"z":-94.98199},"screenPosition":{"x":0.27088585,"y":0.91732335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.4043,"y":102.183174,"z":-95.17905},"screenPosition":{"x":0.30032516,"y":0.95131046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.53302,"y":104.845024,"z":-95.57988},"screenPosition":{"x":0.38672403,"y":0.9514799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.6023,"y":106.44469,"z":-93.86848},"screenPosition":{"x":0.47533977,"y":0.9403618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.76675,"y":106.27623,"z":-93.21478},"screenPosition":{"x":0.4997033,"y":0.89459735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.62862,"y":107.32616,"z":-92.87604},"screenPosition":{"x":0.541487,"y":0.88917184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.83856,"y":106.36372,"z":-93.186554},"screenPosition":{"x":0.50318223,"y":0.8941604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.21971,"y":104.99841,"z":-93.30508},"screenPosition":{"x":0.4670448,"y":0.88382626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.82419,"y":96.08311,"z":-94.05422},"screenPosition":{"x":0.23249395,"y":0.8146872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.26143,"y":94.96567,"z":-94.12437},"screenPosition":{"x":0.20444028,"y":0.8047235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.04427,"y":92.30114,"z":-95.166115},"screenPosition":{"x":0.13977128,"y":0.77411956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.88359,"y":92.024414,"z":-94.812386},"screenPosition":{"x":0.12645438,"y":0.74881446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.26045,"y":91.48238,"z":-94.36503},"screenPosition":{"x":0.1665869,"y":0.7212382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.7031,"y":91.2993,"z":-93.88551},"screenPosition":{"x":0.17177793,"y":0.69012344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.59857,"y":91.2187,"z":-92.457794},"screenPosition":{"x":0.22102022,"y":0.66704416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.46576,"y":92.75788,"z":-91.83177},"screenPosition":{"x":0.28657746,"y":0.652443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.86746,"y":94.09765,"z":-91.33479},"screenPosition":{"x":0.34365967,"y":0.6418571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.3761,"y":95.45258,"z":-91.02703},"screenPosition":{"x":0.39019278,"y":0.64180636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.73862,"y":96.124176,"z":-90.422066},"screenPosition":{"x":0.4388992,"y":0.6170994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.08112,"y":96.472176,"z":-90.08322},"screenPosition":{"x":0.46557263,"y":0.60291374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.8686,"y":96.44217,"z":-89.704414},"screenPosition":{"x":0.48636013,"y":0.5818837},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-273.44196,"y":95.386444,"z":-88.87881},"screenPosition":{"x":0.5103213,"y":0.5238278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.45853,"y":96.59473,"z":-87.84052},"screenPosition":{"x":0.5951135,"y":0.48211148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.6169,"y":99.99047,"z":-87.522934},"screenPosition":{"x":0.68620473,"y":0.5067437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.26706,"y":102.282104,"z":-87.69062},"screenPosition":{"x":0.72617865,"y":0.54411936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.46158,"y":102.72765,"z":-88.226715},"screenPosition":{"x":0.70544773,"y":0.57885563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.42392,"y":99.69382,"z":-89.10849},"screenPosition":{"x":0.5901639,"y":0.5895086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.05505,"y":97.265465,"z":-89.11494},"screenPosition":{"x":0.5374596,"y":0.5598938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.97913,"y":96.18234,"z":-89.07568},"screenPosition":{"x":0.51633567,"y":0.5443869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.47186,"y":94.31781,"z":-89.02911},"screenPosition":{"x":0.47878343,"y":0.51883847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.7609,"y":91.53788,"z":-89.374855},"screenPosition":{"x":0.3993033,"y":0.50338966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.29703,"y":89.458,"z":-90.20809},"screenPosition":{"x":0.2954036,"y":0.52260655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.5331,"y":91.064224,"z":-90.565056},"screenPosition":{"x":0.32174838,"y":0.56245726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.0038,"y":92.51463,"z":-90.6802},"screenPosition":{"x":0.34649494,"y":0.5866352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.17032,"y":93.77677,"z":-90.88816},"screenPosition":{"x":0.3619313,"y":0.6135524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.67633,"y":94.89913,"z":-91.04384},"screenPosition":{"x":0.37732837,"y":0.6358906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.96617,"y":105.09613,"z":-91.63005},"screenPosition":{"x":0.56392425,"y":0.793698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.89633,"y":98.5626,"z":-91.316925},"screenPosition":{"x":0.4408216,"y":0.69599503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.45233,"y":95.83609,"z":-92.455124},"screenPosition":{"x":0.31765252,"y":0.72442544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.8759,"y":92.495766,"z":-92.8542},"screenPosition":{"x":0.22337812,"y":0.70487964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.6816,"y":90.85117,"z":-93.3127},"screenPosition":{"x":0.21045285,"y":0.6548638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.8535,"y":91.87417,"z":-91.66388},"screenPosition":{"x":0.2770306,"y":0.6323807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.74374,"y":94.2458,"z":-91.125206},"screenPosition":{"x":0.35867217,"y":0.63226295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.4742,"y":96.8587,"z":-90.79979},"screenPosition":{"x":0.433358,"y":0.64676434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.84338,"y":98.77854,"z":-90.43909},"screenPosition":{"x":0.49514702,"y":0.6507832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.21246,"y":100.69797,"z":-90.07846},"screenPosition":{"x":0.55692273,"y":0.6548012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.6917,"y":103.118576,"z":-89.62072},"screenPosition":{"x":0.6349961,"y":0.6597073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.29337,"y":105.13696,"z":-89.195724},"screenPosition":{"x":0.70254695,"y":0.6614358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.43094,"y":107.18992,"z":-88.436386},"screenPosition":{"x":0.78976107,"y":0.6453564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.90717,"y":105.98128,"z":-88.08279},"screenPosition":{"x":0.7837035,"y":0.6111563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.81305,"y":104.81064,"z":-87.84588},"screenPosition":{"x":0.77189225,"y":0.5837899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.59286,"y":103.30066,"z":-87.68577},"screenPosition":{"x":0.74840647,"y":0.556424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.4421,"y":89.37865,"z":-89.97424},"screenPosition":{"x":0.30399507,"y":0.5087221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.00015,"y":90.75444,"z":-90.081604},"screenPosition":{"x":0.34242713,"y":0.5322672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.61398,"y":92.38084,"z":-90.14024},"screenPosition":{"x":0.37416345,"y":0.5555358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.99545,"y":93.90659,"z":-90.263466},"screenPosition":{"x":0.40007672,"y":0.581084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.3778,"y":95.43154,"z":-90.38661},"screenPosition":{"x":0.4259929,"y":0.6066193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.38324,"y":99.29947,"z":-89.818184},"screenPosition":{"x":0.54150724,"y":0.623348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.79034,"y":101.63331,"z":-89.38863},"screenPosition":{"x":0.61611545,"y":0.6287212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.21423,"y":103.80338,"z":-88.9795},"screenPosition":{"x":0.68603814,"y":0.6331867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.15775,"y":106.170845,"z":-88.215645},"screenPosition":{"x":0.7802869,"y":0.62074155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.32578,"y":107.158066,"z":-87.60607},"screenPosition":{"x":0.83605665,"y":0.59967875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.14725,"y":106.55078,"z":-87.09027},"screenPosition":{"x":0.8643967,"y":0.56345123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.35617,"y":104.82687,"z":-86.869545},"screenPosition":{"x":0.8497127,"y":0.52976525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.07916,"y":102.32401,"z":-86.86723},"screenPosition":{"x":0.77367204,"y":0.49972957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.01263,"y":99.848885,"z":-87.244484},"screenPosition":{"x":0.698978,"y":0.48976117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.76022,"y":97.544685,"z":-88.27967},"screenPosition":{"x":0.5907403,"y":0.5177847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.4156,"y":97.45033,"z":-88.79615},"screenPosition":{"x":0.5594821,"y":0.54478884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.45755,"y":99.11358,"z":-88.97199},"screenPosition":{"x":0.5853815,"y":0.5749037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.77615,"y":102.03053,"z":-88.904655},"screenPosition":{"x":0.65206194,"y":0.60722727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.95007,"y":104.26413,"z":-88.5398},"screenPosition":{"x":0.72082025,"y":0.6148907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.97076,"y":107.71235,"z":-87.81528},"screenPosition":{"x":0.8361658,"y":0.61792845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.1084,"y":108.52409,"z":-88.27115},"screenPosition":{"x":0.879574,"y":0.5982691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.6072,"y":106.98445,"z":-87.96125},"screenPosition":{"x":0.86392444,"y":0.56236786},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-278.26886,"y":104.39614,"z":-86.52267},"screenPosition":{"x":0.8398458,"y":0.5071297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.27963,"y":102.497284,"z":-86.58446},"screenPosition":{"x":0.79340684,"y":0.4864457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.86206,"y":100.81219,"z":-86.706726},"screenPosition":{"x":0.75016296,"y":0.47232345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.37466,"y":98.78472,"z":-86.679794},"screenPosition":{"x":0.7079937,"y":0.44583148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.72318,"y":96.001785,"z":-86.79884},"screenPosition":{"x":0.64127576,"y":0.417982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.2234,"y":96.75967,"z":-85.93732},"screenPosition":{"x":0.70635885,"y":0.38034746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.32614,"y":98.656555,"z":-85.42271},"screenPosition":{"x":0.77419305,"y":0.37784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.6358,"y":101.57832,"z":-85.35657},"screenPosition":{"x":0.84307754,"y":0.40813833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.8478,"y":101.90701,"z":-86.93926},"screenPosition":{"x":0.8123154,"y":0.44397303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.53964,"y":99.53866,"z":-86.53386},"screenPosition":{"x":0.732448,"y":0.44722095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.33908,"y":98.11584,"z":-86.571144},"screenPosition":{"x":0.699725,"y":0.43165135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.37476,"y":95.54145,"z":-86.2979},"screenPosition":{"x":0.65969884,"y":0.3849805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.7011,"y":97.19345,"z":-85.342514},"screenPosition":{"x":0.772987,"y":0.35375085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.36963,"y":99.1209,"z":-86.37847},"screenPosition":{"x":0.7839963,"y":0.37900686},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-282.19577,"y":101.8123,"z":-86.059746},"screenPosition":{"x":0.8150318,"y":0.45020467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.89624,"y":100.485344,"z":-86.74734},"screenPosition":{"x":0.7408265,"y":0.47050098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.54538,"y":98.39961,"z":-87.12844},"screenPosition":{"x":0.6743073,"y":0.4655477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.72388,"y":95.371506,"z":-87.74865},"screenPosition":{"x":0.5739473,"y":0.46200597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.57034,"y":92.71479,"z":-87.95681},"screenPosition":{"x":0.5049077,"y":0.44057414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.06293,"y":90.104836,"z":-88.01959},"screenPosition":{"x":0.4451013,"y":0.41179106},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-268.7341,"y":104.001045,"z":-88.62469},"screenPosition":{"x":0.71037537,"y":0.61627454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.16858,"y":93.62908,"z":-86.62257},"screenPosition":{"x":0.6001081,"y":0.37909558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.8387,"y":91.12166,"z":-86.846634},"screenPosition":{"x":0.5333876,"y":0.3603666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.94235,"y":89.14061,"z":-86.90057},"screenPosition":{"x":0.4876371,"y":0.33886173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.19095,"y":87.334496,"z":-86.89777},"screenPosition":{"x":0.42299137,"y":0.31641555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.52866,"y":86.59139,"z":-86.291214},"screenPosition":{"x":0.44844893,"y":0.27527434},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-286.59488,"y":91.6733,"z":-86.60362},"screenPosition":{"x":0.5590108,"y":0.3541584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.27853,"y":94.13222,"z":-86.5252},"screenPosition":{"x":0.6164634,"y":0.3799871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.55087,"y":96.64108,"z":-86.52763},"screenPosition":{"x":0.67040044,"y":0.4110798},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-261.64697,"y":104.36656,"z":-90.09042},"screenPosition":{"x":0.63531685,"y":0.7007252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.2828,"y":97.7418,"z":-87.92435},"screenPosition":{"x":0.61509377,"y":0.50083834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.98114,"y":101.17067,"z":-87.27177},"screenPosition":{"x":0.7259234,"y":0.5075601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.55203,"y":87.77428,"z":-86.75587},"screenPosition":{"x":0.46639475,"y":0.31418547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.83212,"y":99.662445,"z":-89.66872},"screenPosition":{"x":0.5577882,"y":0.6196758},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-269.83908,"y":100.38345,"z":-88.91834},"screenPosition":{"x":0.61577314,"y":0.58765256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.99988,"y":100.142105,"z":-88.70489},"screenPosition":{"x":0.62266356,"y":0.57302827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.6228,"y":99.61311,"z":-88.648926},"screenPosition":{"x":0.614414,"y":0.5634573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.62302,"y":99.35944,"z":-88.471695},"screenPosition":{"x":0.618989,"y":0.55065227},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-274.62415,"y":98.85194,"z":-88.11713},"screenPosition":{"x":0.6281133,"y":0.52505153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.8458,"y":85.155624,"z":-83.003685},"screenPosition":{"x":0.61954695,"y":0.09475605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.08914,"y":84.99938,"z":-82.760056},"screenPosition":{"x":0.62907594,"y":0.08328304},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-276.0784,"y":99.702774,"z":-87.68058},"screenPosition":{"x":0.6711533,"y":0.5117421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.9445,"y":88.292175,"z":-84.19887},"screenPosition":{"x":0.67939997,"y":0.13514955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.1199,"y":88.85847,"z":-83.47378},"screenPosition":{"x":0.6728973,"y":0.1572331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.95065,"y":89.10216,"z":-83.688705},"screenPosition":{"x":0.6668247,"y":0.16922227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.4019,"y":89.46646,"z":-83.53854},"screenPosition":{"x":0.6824529,"y":0.1671384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.77682,"y":89.01163,"z":-84.34368},"screenPosition":{"x":0.69694954,"y":0.14966418},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-307.66602,"y":85.307846,"z":-83.019905},"screenPosition":{"x":0.6218738,"y":0.09716454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.9435,"y":84.77515,"z":-83.68169},"screenPosition":{"x":0.5750925,"y":0.11784056},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-299.9585,"y":85.563896,"z":-84.6347},"screenPosition":{"x":0.51211053,"y":0.17239258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.1272,"y":86.66831,"z":-84.86533},"screenPosition":{"x":0.5495113,"y":0.19735296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.93832,"y":88.07608,"z":-85.12812},"screenPosition":{"x":0.5649839,"y":0.22905757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.04227,"y":91.718994,"z":-84.57158},"screenPosition":{"x":0.6749925,"y":0.24365865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.60165,"y":92.200294,"z":-84.9855},"screenPosition":{"x":0.7136525,"y":0.21763322},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-304.5513,"y":88.53444,"z":-84.24763},"screenPosition":{"x":0.68413496,"y":0.14002971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.9738,"y":85.84449,"z":-83.303986},"screenPosition":{"x":0.6180892,"y":0.11487943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.12497,"y":84.97142,"z":-84.04276},"screenPosition":{"x":0.53617144,"y":0.13350849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.21024,"y":85.49986,"z":-84.590126},"screenPosition":{"x":0.5140356,"y":0.16928159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.0723,"y":86.41621,"z":-84.91408},"screenPosition":{"x":0.5413195,"y":0.19693962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.62338,"y":88.54026,"z":-84.913185},"screenPosition":{"x":0.5870911,"y":0.22355807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.52777,"y":91.75527,"z":-84.46217},"screenPosition":{"x":0.6818031,"y":0.23856452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.15805,"y":93.108345,"z":-83.699844},"screenPosition":{"x":0.7542632,"y":0.21326049},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-301.82095,"y":88.017654,"z":-83.875565},"screenPosition":{"x":0.63369846,"y":0.16432849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.34406,"y":86.93244,"z":-84.780106},"screenPosition":{"x":0.56002045,"y":0.19609247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.06262,"y":87.67212,"z":-85.16072},"screenPosition":{"x":0.5544241,"y":0.22609054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.3287,"y":90.1869,"z":-85.16363},"screenPosition":{"x":0.60847056,"y":0.2570419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.05984,"y":93.29716,"z":-84.550735},"screenPosition":{"x":0.7335636,"y":0.26331073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.619,"y":93.421906,"z":-85.23138},"screenPosition":{"x":0.72606945,"y":0.2461186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.76688,"y":90.253914,"z":-83.773575},"screenPosition":{"x":0.68712384,"y":0.18623142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.4283,"y":88.253075,"z":-84.35398},"screenPosition":{"x":0.61260265,"y":0.18902056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.24802,"y":87.26433,"z":-84.9664},"screenPosition":{"x":0.55663866,"y":0.21022017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.15207,"y":86.45574,"z":-85.748695},"screenPosition":{"x":0.46812326,"y":0.24347918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.4768,"y":87.083244,"z":-86.230194},"screenPosition":{"x":0.48122606,"y":0.2769116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.31186,"y":89.06955,"z":-86.403015},"screenPosition":{"x":0.51425904,"y":0.31084839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.38953,"y":91.64243,"z":-86.22341},"screenPosition":{"x":0.57987607,"y":0.3328032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.40265,"y":94.61401,"z":-85.7848},"screenPosition":{"x":0.66874254,"y":0.3455515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.13486,"y":96.72394,"z":-85.104004},"screenPosition":{"x":0.76521826,"y":0.33592877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.4851,"y":95.35285,"z":-85.62004},"screenPosition":{"x":0.7642176,"y":0.28990546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.03064,"y":93.369835,"z":-84.33196},"screenPosition":{"x":0.72939223,"y":0.2537412},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-295.0597,"y":88.67174,"z":-85.229126},"screenPosition":{"x":0.57210714,"y":0.2419169},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-082308/brain-C784EC-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.615690964947611,-0.7499683405395605,-0.2418100987763278,0.0,-0.7627918534422653,-0.644227373920448,0.05585408681266604,0.0,-0.1976694817213655,0.15006191682069434,-0.9687147139979373,0.0,-289.84772191221646,114.20745982360332,-194.34875365870192,1.0]},"baseImage":"20190823-082308/base.webp","version":0,"savedAt":1.566548798595E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-083301-v0.json b/data/mapping/BAAAHS/dwayman/20190823-083301-v0.json new file mode 100644 index 0000000000..9df4b78b9e --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-083301-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566549181173E12,"surfaces":[{"brainId":"CB29B8","panelName":"5D","pixels":[{"modelPosition":{"x":-61.204044,"y":118.68644,"z":-107.139},"screenPosition":{"x":0.7113244,"y":1.0050378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.843616,"y":119.75668,"z":-106.58894},"screenPosition":{"x":0.7159648,"y":0.9881715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.83127,"y":121.011024,"z":-104.74805},"screenPosition":{"x":0.73854744,"y":0.95856357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.951878,"y":123.35671,"z":-103.43712},"screenPosition":{"x":0.7397116,"y":0.92325747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.910175,"y":125.08361,"z":-102.46668},"screenPosition":{"x":0.7644299,"y":0.89490837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.00199,"y":126.62162,"z":-101.60266},"screenPosition":{"x":0.7746605,"y":0.8697472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.69578,"y":128.72212,"z":-100.42175},"screenPosition":{"x":0.7887882,"y":0.8350017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.195354,"y":130.27592,"z":-99.5545},"screenPosition":{"x":0.79809564,"y":0.812111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.593487,"y":132.81802,"z":-98.138535},"screenPosition":{"x":0.7946847,"y":0.77229965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.74218,"y":134.50423,"z":-97.17971},"screenPosition":{"x":0.8260843,"y":0.7432759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.10199,"y":135.66252,"z":-96.529594},"screenPosition":{"x":0.833671,"y":0.72461736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.05076,"y":137.73949,"z":-95.365166},"screenPosition":{"x":0.84704345,"y":0.691729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.32446,"y":139.52574,"z":-94.36612},"screenPosition":{"x":0.8581297,"y":0.66446364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.452118,"y":140.27383,"z":-93.953545},"screenPosition":{"x":0.84806204,"y":0.65283513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.82227,"y":142.00714,"z":-92.98513},"screenPosition":{"x":0.85573417,"y":0.62530035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.449314,"y":134.8805,"z":-96.994385},"screenPosition":{"x":0.79520166,"y":0.73996836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.81544,"y":146.2473,"z":-90.65031},"screenPosition":{"x":0.8384177,"y":0.55969465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.882816,"y":149.34512,"z":-88.93562},"screenPosition":{"x":0.835152,"y":0.5113401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.975174,"y":150.08559,"z":-88.5538},"screenPosition":{"x":0.804864,"y":0.5013189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.38276,"y":151.53578,"z":-87.76968},"screenPosition":{"x":0.78375775,"y":0.4796638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.478798,"y":152.84772,"z":-87.07142},"screenPosition":{"x":0.75295883,"y":0.4606611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.923485,"y":153.16269,"z":-86.92999},"screenPosition":{"x":0.71790045,"y":0.45729002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.38775,"y":153.6963,"z":-86.66775},"screenPosition":{"x":0.68248206,"y":0.450909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.853134,"y":154.29909,"z":-86.353714},"screenPosition":{"x":0.66118383,"y":0.44253716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.37132,"y":154.91553,"z":-86.04632},"screenPosition":{"x":0.6249042,"y":0.4346741},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.55809,"y":155.2463,"z":-85.892654},"screenPosition":{"x":0.593557,"y":0.43105245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.8166,"y":155.30771,"z":-85.88915},"screenPosition":{"x":0.56135607,"y":0.43175235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.39547,"y":155.08261,"z":-86.04863},"screenPosition":{"x":0.5248308,"y":0.43711257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.57126,"y":154.8419,"z":-86.21132},"screenPosition":{"x":0.49405238,"y":0.44242886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.85688,"y":154.19795,"z":-86.5988},"screenPosition":{"x":0.46201116,"y":0.4541245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.74081,"y":153.53839,"z":-86.9895},"screenPosition":{"x":0.435697,"y":0.46577707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.79772,"y":153.13058,"z":-87.24312},"screenPosition":{"x":0.40673423,"y":0.4736193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.80372,"y":153.78082,"z":-86.9101},"screenPosition":{"x":0.37770873,"y":0.4648923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.78371,"y":153.64194,"z":-87.013756},"screenPosition":{"x":0.35213813,"y":0.4668206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.45627,"y":155.60757,"z":-87.08033},"screenPosition":{"x":0.31692156,"y":0.4515617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.0319,"y":157.59389,"z":-86.01219},"screenPosition":{"x":0.30067682,"y":0.41662347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.317276,"y":159.61221,"z":-84.90115},"screenPosition":{"x":0.28088492,"y":0.38593286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.60032,"y":161.40814,"z":-83.92389},"screenPosition":{"x":0.26129338,"y":0.3587865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.8215,"y":162.5541,"z":-82.17317},"screenPosition":{"x":0.24714291,"y":0.3334363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.30135,"y":164.00267,"z":-81.37742},"screenPosition":{"x":0.2385751,"y":0.31146365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.06491,"y":166.28537,"z":-80.110054},"screenPosition":{"x":0.23692867,"y":0.2760974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.355354,"y":167.8313,"z":-79.25783},"screenPosition":{"x":0.23135327,"y":0.2521639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.553535,"y":169.99089,"z":-78.06451},"screenPosition":{"x":0.22784631,"y":0.21862873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.29754,"y":172.05067,"z":-76.92033},"screenPosition":{"x":0.22903691,"y":0.18619019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.28323,"y":174.22356,"z":-75.67628},"screenPosition":{"x":0.27030838,"y":0.15008274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.73112,"y":174.45378,"z":-75.51432},"screenPosition":{"x":0.30644912,"y":0.14466144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.86146,"y":175.11145,"z":-75.124855},"screenPosition":{"x":0.3325617,"y":0.13304853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.18899,"y":174.19205,"z":-75.61144},"screenPosition":{"x":0.35704193,"y":0.14622012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.41196,"y":173.59903,"z":-75.88886},"screenPosition":{"x":0.41122335,"y":0.1527875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.40924,"y":172.3967,"z":-76.52768},"screenPosition":{"x":0.44061288,"y":0.1701442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.1238,"y":170.92268,"z":-77.326645},"screenPosition":{"x":0.4602022,"y":0.19231531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.03689,"y":168.42911,"z":-78.69292},"screenPosition":{"x":0.47731888,"y":0.2304466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.7902,"y":166.39502,"z":-79.81608},"screenPosition":{"x":0.48256814,"y":0.26204386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.29124,"y":163.88351,"z":-81.227234},"screenPosition":{"x":0.46285352,"y":0.3023728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.35996,"y":163.12335,"z":-81.67615},"screenPosition":{"x":0.43398485,"y":0.3157295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.12082,"y":162.37375,"z":-82.14207},"screenPosition":{"x":0.38103238,"y":0.33013052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.67541,"y":163.63297,"z":-81.479195},"screenPosition":{"x":0.3439323,"y":0.31224608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.81393,"y":165.79204,"z":-80.31236},"screenPosition":{"x":0.3117149,"y":0.28006956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.86729,"y":168.48933,"z":-78.819305},"screenPosition":{"x":0.309435,"y":0.23797874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.5921,"y":170.7574,"z":-77.54601},"screenPosition":{"x":0.3259656,"y":0.20168851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.49836,"y":163.27493,"z":-81.47256},"screenPosition":{"x":0.5600178,"y":0.3069996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.181946,"y":161.0789,"z":-82.69796},"screenPosition":{"x":0.55186415,"y":0.34183225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.61452,"y":160.38394,"z":-83.04817},"screenPosition":{"x":0.58894277,"y":0.3508212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.28642,"y":159.60011,"z":-83.464325},"screenPosition":{"x":0.60839707,"y":0.36214572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.699005,"y":159.25613,"z":-83.61989},"screenPosition":{"x":0.6454608,"y":0.36568233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.140984,"y":158.70695,"z":-83.90299},"screenPosition":{"x":0.66804016,"y":0.3731015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.39515,"y":158.32904,"z":-84.0752},"screenPosition":{"x":0.70737123,"y":0.37703356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.757484,"y":159.0433,"z":-83.64403},"screenPosition":{"x":0.74438435,"y":0.36404762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.443428,"y":160.96669,"z":-82.5476},"screenPosition":{"x":0.775865,"y":0.33232847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.945328,"y":163.49055,"z":-81.12964},"screenPosition":{"x":0.7952891,"y":0.29182145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.16132,"y":165.09975,"z":-80.24137},"screenPosition":{"x":0.79104555,"y":0.2668392},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-61.247093,"y":168.24402,"z":-78.60923},"screenPosition":{"x":0.67712986,"y":0.2136674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.64866,"y":168.25883,"z":-78.606445},"screenPosition":{"x":0.6720291,"y":0.21205784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.22471,"y":169.01978,"z":-78.206314},"screenPosition":{"x":0.64818585,"y":0.20453414},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-70.122696,"y":170.13701,"z":-77.680725},"screenPosition":{"x":0.5459683,"y":0.20024729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.35827,"y":167.99612,"z":-78.88304},"screenPosition":{"x":0.53006107,"y":0.23459359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.52484,"y":166.6143,"z":-79.63705},"screenPosition":{"x":0.54286736,"y":0.25558063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.63002,"y":164.6546,"z":-80.73727},"screenPosition":{"x":0.5286006,"y":0.28699297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.7973,"y":162.2787,"z":-82.05532},"screenPosition":{"x":0.5280056,"y":0.32423002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.06531,"y":160.41895,"z":-83.088875},"screenPosition":{"x":0.52555835,"y":0.35349065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.74012,"y":159.14304,"z":-83.804596},"screenPosition":{"x":0.5169062,"y":0.37391043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.81033,"y":155.23792,"z":-85.941216},"screenPosition":{"x":0.54739416,"y":0.4333761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.28246,"y":154.97543,"z":-86.05245},"screenPosition":{"x":0.5835298,"y":0.43565172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.715355,"y":154.84737,"z":-86.088715},"screenPosition":{"x":0.6200651,"y":0.43597066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.19652,"y":155.72864,"z":-85.56666},"screenPosition":{"x":0.65524095,"y":0.42039064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.651093,"y":156.32155,"z":-85.21743},"screenPosition":{"x":0.6767821,"y":0.41007495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.079803,"y":157.69116,"z":-84.42421},"screenPosition":{"x":0.71232086,"y":0.38673702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.709904,"y":158.536,"z":-83.93784},"screenPosition":{"x":0.73121005,"y":0.37265438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.555748,"y":159.56827,"z":-83.337074},"screenPosition":{"x":0.7610666,"y":0.354955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.591793,"y":160.4992,"z":-82.795},"screenPosition":{"x":0.788238,"y":0.3389544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.509712,"y":161.26268,"z":-82.34407},"screenPosition":{"x":0.8173995,"y":0.32561737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.94889,"y":162.20924,"z":-81.79878},"screenPosition":{"x":0.83890295,"y":0.309711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.866028,"y":162.97305,"z":-81.34766},"screenPosition":{"x":0.8678249,"y":0.29625404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.96356,"y":163.06438,"z":-81.27139},"screenPosition":{"x":0.8963829,"y":0.28285235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.444572,"y":162.09886,"z":-81.77209},"screenPosition":{"x":0.933131,"y":0.29444814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.185314,"y":160.76076,"z":-82.482635},"screenPosition":{"x":0.9646704,"y":0.32608277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.564186,"y":160.69902,"z":-82.49494},"screenPosition":{"x":0.9946089,"y":0.3288074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.523685,"y":158.33667,"z":-83.81618},"screenPosition":{"x":0.9798913,"y":0.36500368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.315834,"y":157.15086,"z":-84.49708},"screenPosition":{"x":0.9512707,"y":0.38329902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.020557,"y":157.4465,"z":-84.369865},"screenPosition":{"x":0.912402,"y":0.38052243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.899754,"y":158.06439,"z":-84.053055},"screenPosition":{"x":0.8853343,"y":0.3722793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.208637,"y":157.99002,"z":-84.12541},"screenPosition":{"x":0.8524447,"y":0.37502187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.965015,"y":158.36879,"z":-83.952866},"screenPosition":{"x":0.81301105,"y":0.3711082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.457096,"y":159.1884,"z":-83.519104},"screenPosition":{"x":0.79117393,"y":0.3593653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.732082,"y":159.81978,"z":-83.200165},"screenPosition":{"x":0.7583963,"y":0.35118166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.301773,"y":160.93985,"z":-82.60106},"screenPosition":{"x":0.73522913,"y":0.334801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.740368,"y":161.25015,"z":-82.46214},"screenPosition":{"x":0.7002937,"y":0.33166987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.01543,"y":162.4494,"z":-81.828705},"screenPosition":{"x":0.6670393,"y":0.314581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.02532,"y":162.52562,"z":-81.81363},"screenPosition":{"x":0.63839555,"y":0.31480935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.98201,"y":163.0877,"z":-81.52876},"screenPosition":{"x":0.6101272,"y":0.30744132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.71025,"y":163.88445,"z":-81.11086},"screenPosition":{"x":0.5849447,"y":0.2962264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.27514,"y":164.5766,"z":-80.76218},"screenPosition":{"x":0.5479361,"y":0.2872437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.67806,"y":165.6571,"z":-80.182724},"screenPosition":{"x":0.52717113,"y":0.271362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.0481,"y":166.44838,"z":-79.77651},"screenPosition":{"x":0.49290225,"y":0.26068926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.05743,"y":167.65729,"z":-79.13414},"screenPosition":{"x":0.4633727,"y":0.24323647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.33934,"y":168.56816,"z":-78.647},"screenPosition":{"x":0.4444557,"y":0.22991928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.37243,"y":176.49742,"z":-74.445206},"screenPosition":{"x":0.23889123,"y":0.11604394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.16857,"y":177.231,"z":-74.063194},"screenPosition":{"x":0.21278973,"y":0.105864465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.339226,"y":177.76309,"z":-73.79782},"screenPosition":{"x":0.18150938,"y":0.099101044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.26449,"y":178.87434,"z":-73.208405},"screenPosition":{"x":0.15328959,"y":0.08311237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.9209,"y":179.92981,"z":-72.65975},"screenPosition":{"x":0.11470854,"y":0.06851796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.06494,"y":180.24532,"z":-72.51397},"screenPosition":{"x":0.08396789,"y":0.06511995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.207085,"y":180.56055,"z":-72.36832},"screenPosition":{"x":0.05133873,"y":0.067869365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.73319,"y":180.95244,"z":-72.15839},"screenPosition":{"x":0.046205834,"y":0.060757134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.17074,"y":181.81291,"z":-71.674255},"screenPosition":{"x":0.052839983,"y":0.042129334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.023674,"y":180.51912,"z":-72.37528},"screenPosition":{"x":0.07227544,"y":0.06220479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.29261,"y":179.31024,"z":-73.02139},"screenPosition":{"x":0.09565247,"y":0.07917967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.76667,"y":178.21413,"z":-73.60782},"screenPosition":{"x":0.11817933,"y":0.09521707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.29574,"y":177.1991,"z":-74.15009},"screenPosition":{"x":0.13986309,"y":0.110027015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.36881,"y":175.52391,"z":-75.051796},"screenPosition":{"x":0.16852607,"y":0.13482644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.04328,"y":173.97523,"z":-75.89157},"screenPosition":{"x":0.18875517,"y":0.1581211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.93966,"y":171.62715,"z":-77.177055},"screenPosition":{"x":0.2059875,"y":0.19398186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.48147,"y":170.40135,"z":-77.849724},"screenPosition":{"x":0.21468067,"y":0.21291664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.88668,"y":168.22786,"z":-79.04539},"screenPosition":{"x":0.22418422,"y":0.24635603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.04882,"y":166.21445,"z":-80.16261},"screenPosition":{"x":0.22390758,"y":0.27785555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.30374,"y":164.56918,"z":-81.06371},"screenPosition":{"x":0.23451453,"y":0.3031012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.34883,"y":162.80608,"z":-82.02724},"screenPosition":{"x":0.2441635,"y":0.33505097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.119835,"y":160.69447,"z":-83.16656},"screenPosition":{"x":0.28269842,"y":0.3613724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.39826,"y":160.74089,"z":-83.09061},"screenPosition":{"x":0.33630675,"y":0.35777262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.706665,"y":160.73009,"z":-83.073746},"screenPosition":{"x":0.35992754,"y":0.3568695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.55684,"y":160.62051,"z":-83.1054},"screenPosition":{"x":0.3904111,"y":0.35710517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.778725,"y":160.73056,"z":-83.00694},"screenPosition":{"x":0.42980683,"y":0.3534187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.840645,"y":161.30632,"z":-82.66192},"screenPosition":{"x":0.45712748,"y":0.34296483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.30135,"y":160.82991,"z":-82.89147},"screenPosition":{"x":0.4934378,"y":0.34866676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.55645,"y":161.87416,"z":-82.289604},"screenPosition":{"x":0.51766986,"y":0.33101162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.3467,"y":162.25064,"z":-82.05127},"screenPosition":{"x":0.5486483,"y":0.3236404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.530914,"y":162.0732,"z":-82.12502},"screenPosition":{"x":0.5746356,"y":0.3251012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.12878,"y":162.55118,"z":-81.82787},"screenPosition":{"x":0.6084597,"y":0.31590945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.03214,"y":163.09525,"z":-81.49826},"screenPosition":{"x":0.6378647,"y":0.30593002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.87622,"y":163.556,"z":-81.21398},"screenPosition":{"x":0.6681968,"y":0.29718968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.98995,"y":164.21692,"z":-80.82249},"screenPosition":{"x":0.69454134,"y":0.2855107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.93516,"y":165.19699,"z":-80.251976},"screenPosition":{"x":0.72305006,"y":0.26873115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.85782,"y":165.95958,"z":-79.801605},"screenPosition":{"x":0.75202996,"y":0.25533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.066166,"y":165.15044,"z":-80.21201},"screenPosition":{"x":0.79235405,"y":0.26597822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.23174,"y":164.4034,"z":-80.60097},"screenPosition":{"x":0.819018,"y":0.27634162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.24306,"y":163.69374,"z":-80.95363},"screenPosition":{"x":0.8644636,"y":0.27278027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.88062,"y":162.6912,"z":-81.49044},"screenPosition":{"x":0.8822003,"y":0.29998732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.342728,"y":160.51074,"z":-82.67723},"screenPosition":{"x":0.90570396,"y":0.33296037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.38929,"y":157.59712,"z":-84.291435},"screenPosition":{"x":0.90720904,"y":0.37852207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.052593,"y":155.67036,"z":-85.38095},"screenPosition":{"x":0.8849767,"y":0.4098184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.616932,"y":154.72166,"z":-85.92746},"screenPosition":{"x":0.8634248,"y":0.4257606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.840237,"y":152.91287,"z":-86.9457},"screenPosition":{"x":0.8471775,"y":0.45467812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.75491,"y":151.03601,"z":-87.99747},"screenPosition":{"x":0.83574724,"y":0.48488075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.77967,"y":148.75168,"z":-89.27638},"screenPosition":{"x":0.8228662,"y":0.5213083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.241352,"y":146.5529,"z":-90.47331},"screenPosition":{"x":0.8463895,"y":0.5545673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.808006,"y":145.59038,"z":-90.96001},"screenPosition":{"x":0.8982036,"y":0.56590605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.65008,"y":148.08028,"z":-90.70865},"screenPosition":{"x":0.910771,"y":0.5349979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.546684,"y":150.24702,"z":-89.49379},"screenPosition":{"x":0.93066406,"y":0.5025295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.728004,"y":151.87808,"z":-87.43625},"screenPosition":{"x":0.9384483,"y":0.4669285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.32078,"y":153.58163,"z":-86.51431},"screenPosition":{"x":0.91117114,"y":0.4412194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.175762,"y":154.84087,"z":-85.85549},"screenPosition":{"x":0.8695438,"y":0.4235215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.758358,"y":152.6091,"z":-87.11283},"screenPosition":{"x":0.8486558,"y":0.45946756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.037556,"y":149.37871,"z":-88.91911},"screenPosition":{"x":0.8329587,"y":0.51098007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.842503,"y":147.18138,"z":-90.10637},"screenPosition":{"x":0.86582506,"y":0.54374695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.555977,"y":148.11745,"z":-89.543594},"screenPosition":{"x":0.91440773,"y":0.5260538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.165375,"y":151.04466,"z":-87.93071},"screenPosition":{"x":0.90103513,"y":0.48145947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.495205,"y":157.90797,"z":-84.161224},"screenPosition":{"x":0.8626156,"y":0.37577155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.164352,"y":160.04686,"z":-82.97223},"screenPosition":{"x":0.8659025,"y":0.3422254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.69375,"y":161.86833,"z":-81.94363},"screenPosition":{"x":0.8853269,"y":0.3126704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.266792,"y":161.84723,"z":-81.90905},"screenPosition":{"x":0.93413705,"y":0.31056824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.90773,"y":158.84859,"z":-83.57836},"screenPosition":{"x":0.9273579,"y":0.35790783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.827217,"y":158.33412,"z":-83.902695},"screenPosition":{"x":0.8862016,"y":0.3680331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.27687,"y":158.64645,"z":-83.7628},"screenPosition":{"x":0.8510254,"y":0.36484566},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-53.560875,"y":159.70932,"z":-83.232025},"screenPosition":{"x":0.7892958,"y":0.35129082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.10183,"y":160.04034,"z":-83.0695},"screenPosition":{"x":0.76716155,"y":0.34724522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.55731,"y":159.99849,"z":-83.12584},"screenPosition":{"x":0.73226345,"y":0.34964153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.44287,"y":160.76099,"z":-82.74252},"screenPosition":{"x":0.6906633,"y":0.339801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.324493,"y":161.52245,"z":-82.359726},"screenPosition":{"x":0.6491145,"y":0.3299682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.241074,"y":165.19559,"z":-80.31089},"screenPosition":{"x":0.6617858,"y":0.27183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.908653,"y":166.39828,"z":-79.59984},"screenPosition":{"x":0.70830536,"y":0.2506553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.157246,"y":165.45578,"z":-80.084656},"screenPosition":{"x":0.74815404,"y":0.26341677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.335686,"y":161.79948,"z":-82.11194},"screenPosition":{"x":0.7483353,"y":0.32067785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.25021,"y":161.85594,"z":-82.120026},"screenPosition":{"x":0.7068249,"y":0.3218783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.775925,"y":162.04422,"z":-82.06336},"screenPosition":{"x":0.65652657,"y":0.32143298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.89897,"y":165.26804,"z":-80.306656},"screenPosition":{"x":0.62391484,"y":0.27259722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.422745,"y":167.50311,"z":-79.03542},"screenPosition":{"x":0.65748423,"y":0.23590228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.64567,"y":166.76762,"z":-79.39175},"screenPosition":{"x":0.7117694,"y":0.24469677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.987167,"y":166.20148,"z":-79.69639},"screenPosition":{"x":0.72154975,"y":0.25307196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.645386,"y":165.84326,"z":-79.86316},"screenPosition":{"x":0.75512934,"y":0.25699517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.121803,"y":163.74153,"z":-80.993034},"screenPosition":{"x":0.79261816,"y":0.2880347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.73192,"y":160.8852,"z":-82.58313},"screenPosition":{"x":0.78600186,"y":0.33305994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.547585,"y":158.99673,"z":-83.65348},"screenPosition":{"x":0.7615619,"y":0.36381763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.999813,"y":158.88489,"z":-83.76203},"screenPosition":{"x":0.71259797,"y":0.3681253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.26002,"y":161.43286,"z":-82.36797},"screenPosition":{"x":0.69277185,"y":0.32921118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.452274,"y":163.32309,"z":-81.33724},"screenPosition":{"x":0.6744021,"y":0.30052248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.687172,"y":164.15576,"z":-80.892784},"screenPosition":{"x":0.6562122,"y":0.28839737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.321545,"y":165.99414,"z":-79.88325},"screenPosition":{"x":0.64581853,"y":0.26012406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.9107,"y":167.89267,"z":-78.85328},"screenPosition":{"x":0.62179536,"y":0.231593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.91304,"y":168.463,"z":-78.577965},"screenPosition":{"x":0.5786531,"y":0.22482648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.44177,"y":168.78946,"z":-78.417816},"screenPosition":{"x":0.55667424,"y":0.22082163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.58532,"y":168.82436,"z":-78.440926},"screenPosition":{"x":0.5119062,"y":0.22251861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.85861,"y":166.54938,"z":-79.71802},"screenPosition":{"x":0.49548215,"y":0.2589775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.011314,"y":164.52779,"z":-80.83965},"screenPosition":{"x":0.4948134,"y":0.29067624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.95986,"y":161.96571,"z":-82.27135},"screenPosition":{"x":0.4832234,"y":0.33138916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.72429,"y":162.20636,"z":-82.17541},"screenPosition":{"x":0.44371158,"y":0.32960436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.86402,"y":163.23447,"z":-81.634926},"screenPosition":{"x":0.41250223,"y":0.31506813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.058624,"y":164.34448,"z":-81.04982},"screenPosition":{"x":0.3808408,"y":0.29922906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.699425,"y":165.40535,"z":-80.48446},"screenPosition":{"x":0.35631627,"y":0.28388646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.4938,"y":167.06404,"z":-79.590096},"screenPosition":{"x":0.330148,"y":0.25923786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.961754,"y":168.43896,"z":-78.84848},"screenPosition":{"x":0.30771738,"y":0.23881704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.20495,"y":170.61102,"z":-77.66236},"screenPosition":{"x":0.28878248,"y":0.2058152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.27181,"y":171.96732,"z":-76.92564},"screenPosition":{"x":0.2721495,"y":0.1853306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.41749,"y":174.60408,"z":-75.467354},"screenPosition":{"x":0.26839003,"y":0.1443055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.19528,"y":176.24129,"z":-74.530655},"screenPosition":{"x":0.2985151,"y":0.117061436},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-80.623184,"y":170.68317,"z":-77.520035},"screenPosition":{"x":0.3961591,"y":0.19921657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.75265,"y":170.28174,"z":-77.70359},"screenPosition":{"x":0.4374785,"y":0.20347454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.58807,"y":170.52585,"z":-77.53918},"screenPosition":{"x":0.46802017,"y":0.19810387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.50115,"y":171.06946,"z":-77.209946},"screenPosition":{"x":0.49720535,"y":0.18809094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.5441,"y":170.36824,"z":-77.55836},"screenPosition":{"x":0.53986496,"y":0.19696134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.28895,"y":168.75682,"z":-78.43382},"screenPosition":{"x":0.5588579,"y":0.2212184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.12742,"y":166.10258,"z":-79.90157},"screenPosition":{"x":0.56314546,"y":0.2625769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.11032,"y":164.89073,"z":-80.54547},"screenPosition":{"x":0.59273195,"y":0.2800733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.46153,"y":141.1197,"z":-93.68775},"screenPosition":{"x":0.63390815,"y":0.6500366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.662674,"y":138.50792,"z":-95.15039},"screenPosition":{"x":0.6187979,"y":0.69148016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.342316,"y":135.90836,"z":-96.558716},"screenPosition":{"x":0.6536775,"y":0.73097634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.038483,"y":135.03944,"z":-97.00882},"screenPosition":{"x":0.6871033,"y":0.7429077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.466526,"y":134.54385,"z":-97.24856},"screenPosition":{"x":0.72406626,"y":0.74881405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.164974,"y":134.25238,"z":-97.3789},"screenPosition":{"x":0.75703,"y":0.7517239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.621174,"y":136.0728,"z":-96.336395},"screenPosition":{"x":0.79186934,"y":0.7214601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.575043,"y":137.21275,"z":-95.690956},"screenPosition":{"x":0.8059058,"y":0.70289946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.957726,"y":140.17169,"z":-94.03044},"screenPosition":{"x":0.82671595,"y":0.6555072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.037514,"y":141.34367,"z":-93.395966},"screenPosition":{"x":0.81048065,"y":0.6379652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.385227,"y":143.58234,"z":-92.18788},"screenPosition":{"x":0.7754114,"y":0.6046614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.80755,"y":144.68285,"z":-91.59761},"screenPosition":{"x":0.75435567,"y":0.588481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.346134,"y":145.95132,"z":-90.91589},"screenPosition":{"x":0.73140204,"y":0.56908655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.1625,"y":146.55957,"z":-90.59007},"screenPosition":{"x":0.71941197,"y":0.56055146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.17712,"y":149.14441,"z":-89.17227},"screenPosition":{"x":0.7030936,"y":0.5211722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.008682,"y":150.96796,"z":-88.1601},"screenPosition":{"x":0.70413345,"y":0.4925569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.722973,"y":152.62148,"z":-87.24052},"screenPosition":{"x":0.7069684,"y":0.4665147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.42993,"y":153.70087,"z":-86.638794},"screenPosition":{"x":0.71030694,"y":0.44928095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.074177,"y":155.69174,"z":-85.51792},"screenPosition":{"x":0.72814363,"y":0.41736025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.467175,"y":157.62868,"z":-84.437035},"screenPosition":{"x":0.7352936,"y":0.38655734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.34326,"y":158.38582,"z":-84.01606},"screenPosition":{"x":0.73651266,"y":0.37468734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.919598,"y":160.71304,"z":-82.694496},"screenPosition":{"x":0.76929194,"y":0.33664274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.968803,"y":157.3727,"z":-84.51807},"screenPosition":{"x":0.7995333,"y":0.38744527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.418842,"y":155.33078,"z":-85.66847},"screenPosition":{"x":0.78042096,"y":0.42038864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.399475,"y":154.04504,"z":-86.40726},"screenPosition":{"x":0.75319666,"y":0.44189492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.18944,"y":152.86086,"z":-87.08724},"screenPosition":{"x":0.7285623,"y":0.46149147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.88605,"y":151.79686,"z":-87.6859},"screenPosition":{"x":0.71948975,"y":0.47880226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.966164,"y":150.59859,"z":-88.350586},"screenPosition":{"x":0.7192414,"y":0.49758375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.480335,"y":148.77536,"z":-89.353745},"screenPosition":{"x":0.7275103,"y":0.5257265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.426933,"y":146.18709,"z":-90.79993},"screenPosition":{"x":0.71589565,"y":0.5662893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.26434,"y":144.00258,"z":-92.02103},"screenPosition":{"x":0.70567787,"y":0.60158116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.872696,"y":143.35661,"z":-92.42749},"screenPosition":{"x":0.6548181,"y":0.61425376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.74424,"y":143.98166,"z":-92.106606},"screenPosition":{"x":0.62772447,"y":0.6058241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.30348,"y":146.04332,"z":-90.9859},"screenPosition":{"x":0.6040054,"y":0.57472277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.51948,"y":148.23853,"z":-89.773094},"screenPosition":{"x":0.5993156,"y":0.5405122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.74018,"y":149.4345,"z":-89.12724},"screenPosition":{"x":0.5810409,"y":0.5227586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.049774,"y":150.50928,"z":-88.5632},"screenPosition":{"x":0.54738,"y":0.5076143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.21778,"y":151.69872,"z":-87.94726},"screenPosition":{"x":0.5016351,"y":0.49099678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.18484,"y":150.84976,"z":-88.47098},"screenPosition":{"x":0.44560766,"y":0.50739264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.934784,"y":146.65485,"z":-90.804276},"screenPosition":{"x":0.43810284,"y":0.5734181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.15582,"y":144.26045,"z":-92.106285},"screenPosition":{"x":0.4654242,"y":0.609158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.07015,"y":143.9418,"z":-92.2411},"screenPosition":{"x":0.5092914,"y":0.6123967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.64854,"y":143.2672,"z":-92.582},"screenPosition":{"x":0.54424846,"y":0.62120765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.30133,"y":142.82816,"z":-92.80695},"screenPosition":{"x":0.5637435,"y":0.6271054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.69336,"y":141.32243,"z":-93.60561},"screenPosition":{"x":0.60200244,"y":0.6485972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.110085,"y":138.9661,"z":-94.9027},"screenPosition":{"x":0.6121085,"y":0.6845861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.39983,"y":137.37051,"z":-95.77675},"screenPosition":{"x":0.6233149,"y":0.70959884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.160706,"y":134.94049,"z":-97.119286},"screenPosition":{"x":0.62852514,"y":0.7473998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.77329,"y":133.0517,"z":-98.16008},"screenPosition":{"x":0.6354425,"y":0.7766375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.98209,"y":131.07635,"z":-99.25686},"screenPosition":{"x":0.63394123,"y":0.80765355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.43945,"y":129.14893,"z":-100.316956},"screenPosition":{"x":0.6430959,"y":0.8373839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.26467,"y":127.37358,"z":-101.29779},"screenPosition":{"x":0.64690846,"y":0.8648955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.8321,"y":125.03167,"z":-102.58891},"screenPosition":{"x":0.65499866,"y":0.8950831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.09562,"y":125.70836,"z":-103.35029},"screenPosition":{"x":0.6428353,"y":0.9031047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.31789,"y":121.618675,"z":-104.6991},"screenPosition":{"x":0.66469425,"y":0.9557555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.73184,"y":122.8161,"z":-103.77405},"screenPosition":{"x":0.70056,"y":0.9336917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.22612,"y":125.24781,"z":-102.43402},"screenPosition":{"x":0.6917181,"y":0.89604676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.554276,"y":126.41338,"z":-101.80646},"screenPosition":{"x":0.67195374,"y":0.87878245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.57425,"y":127.4425,"z":-101.2638},"screenPosition":{"x":0.64244753,"y":0.864145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.33971,"y":130.78429,"z":-99.39643},"screenPosition":{"x":0.6575267,"y":0.81104374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.603214,"y":140.37593,"z":-93.88554},"screenPosition":{"x":0.8642817,"y":0.6493333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.356876,"y":141.90541,"z":-93.03518},"screenPosition":{"x":0.87291086,"y":0.6281109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.865517,"y":144.0965,"z":-91.8016},"screenPosition":{"x":0.8879014,"y":0.59124315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.14124,"y":145.87833,"z":-90.80504},"screenPosition":{"x":0.8989741,"y":0.56401104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.16667,"y":147.67613,"z":-89.79624},"screenPosition":{"x":0.9016429,"y":0.5317725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.799675,"y":149.9626,"z":-88.525024},"screenPosition":{"x":0.90697664,"y":0.4980352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.255367,"y":152.7834,"z":-86.982506},"screenPosition":{"x":0.8842394,"y":0.45507526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.844746,"y":154.41496,"z":-86.11389},"screenPosition":{"x":0.8461834,"y":0.43143055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.935154,"y":155.15178,"z":-85.73407},"screenPosition":{"x":0.8158925,"y":0.42141083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.542377,"y":154.57208,"z":-86.09031},"screenPosition":{"x":0.779124,"y":0.43215227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.092983,"y":155.47804,"z":-85.60952},"screenPosition":{"x":0.7564914,"y":0.41928384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.994442,"y":156.88695,"z":-84.854935},"screenPosition":{"x":0.72835195,"y":0.3985245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.96644,"y":158.02473,"z":-84.25144},"screenPosition":{"x":0.6994786,"y":0.38222486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.184742,"y":159.1435,"z":-83.66183},"screenPosition":{"x":0.66708976,"y":0.36636043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.924686,"y":160.514,"z":-82.926315},"screenPosition":{"x":0.6413279,"y":0.3461494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.714096,"y":161.39648,"z":-82.461754},"screenPosition":{"x":0.61521244,"y":0.3336567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.92539,"y":162.01213,"z":-82.13716},"screenPosition":{"x":0.59750485,"y":0.3249225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.732994,"y":163.11053,"z":-81.55327},"screenPosition":{"x":0.57096875,"y":0.30905044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.66036,"y":164.94281,"z":-80.56456},"screenPosition":{"x":0.5422189,"y":0.28178844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.952446,"y":166.42427,"z":-79.76157},"screenPosition":{"x":0.52273786,"y":0.25956845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.058876,"y":168.57195,"z":-78.58711},"screenPosition":{"x":0.5054336,"y":0.2268129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.916504,"y":168.68456,"z":-78.53632},"screenPosition":{"x":0.493259,"y":0.22568198},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-77.26365,"y":170.8835,"z":-77.36373},"screenPosition":{"x":0.44381016,"y":0.19368541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.852394,"y":172.42213,"z":-76.53307},"screenPosition":{"x":0.42006055,"y":0.17077792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.31117,"y":173.30045,"z":-76.09336},"screenPosition":{"x":0.370195,"y":0.15952496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.229996,"y":169.82649,"z":-78.01617},"screenPosition":{"x":0.3739344,"y":0.21375133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.511765,"y":168.46971,"z":-78.74436},"screenPosition":{"x":0.39939117,"y":0.23372467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.75431,"y":167.24469,"z":-79.39905},"screenPosition":{"x":0.4253079,"y":0.2516109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.410416,"y":165.68256,"z":-80.24603},"screenPosition":{"x":0.4455913,"y":0.2750608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.10179,"y":162.91862,"z":-81.74554},"screenPosition":{"x":0.480495,"y":0.31660026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.735535,"y":161.36284,"z":-82.6697},"screenPosition":{"x":0.4157227,"y":0.3442224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.2298,"y":161.17464,"z":-82.7266},"screenPosition":{"x":0.4657431,"y":0.3446582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.95986,"y":161.96571,"z":-82.27135},"screenPosition":{"x":0.4832234,"y":0.33138916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.70241,"y":162.32927,"z":-82.02603},"screenPosition":{"x":0.5293006,"y":0.3233806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.52885,"y":159.51906,"z":-83.56649},"screenPosition":{"x":0.5480889,"y":0.3664544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.31424,"y":157.8393,"z":-84.50736},"screenPosition":{"x":0.5381639,"y":0.39326388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.806305,"y":156.73294,"z":-85.11321},"screenPosition":{"x":0.5463136,"y":0.41006714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.00402,"y":154.14241,"z":-86.56403},"screenPosition":{"x":0.5310998,"y":0.45152447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.91655,"y":152.2041,"z":-87.66331},"screenPosition":{"x":0.5053301,"y":0.48317945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.739746,"y":150.88797,"z":-88.4168},"screenPosition":{"x":0.4803685,"y":0.5050483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.54431,"y":150.42845,"z":-88.70915},"screenPosition":{"x":0.441121,"y":0.5138818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.88315,"y":151.44612,"z":-88.20415},"screenPosition":{"x":0.37831554,"y":0.5014313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.0538,"y":154.25497,"z":-86.62389},"screenPosition":{"x":0.40225416,"y":0.4562327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.8359,"y":155.70995,"z":-85.84218},"screenPosition":{"x":0.3758157,"y":0.43477055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.05768,"y":157.53596,"z":-84.83391},"screenPosition":{"x":0.37130165,"y":0.40639544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.69919,"y":159.5929,"z":-83.70343},"screenPosition":{"x":0.36116886,"y":0.37450814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.90353,"y":161.76562,"z":-82.50292},"screenPosition":{"x":0.35628346,"y":0.34086165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.07427,"y":163.64807,"z":-81.47622},"screenPosition":{"x":0.3385379,"y":0.3122437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.2943,"y":165.46524,"z":-80.47283},"screenPosition":{"x":0.33357963,"y":0.28409037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.814514,"y":166.77943,"z":-79.752045},"screenPosition":{"x":0.325443,"y":0.26391834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.22623,"y":169.05809,"z":-78.49567},"screenPosition":{"x":0.31778628,"y":0.22862335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.712875,"y":170.64679,"z":-77.63591},"screenPosition":{"x":0.29610583,"y":0.20495038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.40615,"y":172.34837,"z":-76.71642},"screenPosition":{"x":0.27018997,"y":0.17951457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.56564,"y":173.23236,"z":-76.25602},"screenPosition":{"x":0.23857132,"y":0.16720207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.89054,"y":174.07603,"z":-75.793175},"screenPosition":{"x":0.2333209,"y":0.15425096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.668564,"y":174.7393,"z":-75.46336},"screenPosition":{"x":0.1933012,"y":0.14587194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.29422,"y":175.78912,"z":-74.90392},"screenPosition":{"x":0.16941422,"y":0.13063484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.31513,"y":177.41382,"z":-74.03144},"screenPosition":{"x":0.13959256,"y":0.10673034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.312485,"y":178.26018,"z":-73.58969},"screenPosition":{"x":0.111385554,"y":0.09516788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.83883,"y":170.40463,"z":-77.83923},"screenPosition":{"x":0.22299032,"y":0.21233639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.83367,"y":169.69548,"z":-78.21839},"screenPosition":{"x":0.23738903,"y":0.2226613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.44489,"y":168.05647,"z":-79.10733},"screenPosition":{"x":0.25836822,"y":0.2472802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.80797,"y":166.43297,"z":-79.98434},"screenPosition":{"x":0.28286642,"y":0.2714794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.15171,"y":165.15729,"z":-80.66846},"screenPosition":{"x":0.3077036,"y":0.29019654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.23334,"y":163.827,"z":-81.392784},"screenPosition":{"x":0.3214375,"y":0.31036082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.89117,"y":161.69518,"z":-82.55527},"screenPosition":{"x":0.3428284,"y":0.34252143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.229225,"y":160.41405,"z":-83.242325},"screenPosition":{"x":0.3667511,"y":0.36153385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.19012,"y":159.9024,"z":-83.498146},"screenPosition":{"x":0.39611313,"y":0.36808276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.30352,"y":158.43205,"z":-84.30046},"screenPosition":{"x":0.40982178,"y":0.39042503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.885994,"y":158.6909,"z":-84.12447},"screenPosition":{"x":0.44408754,"y":0.38461772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.17937,"y":157.5396,"z":-84.73902},"screenPosition":{"x":0.46939462,"y":0.40125746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.921814,"y":156.90874,"z":-85.05792},"screenPosition":{"x":0.5017551,"y":0.40966827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.65123,"y":154.63324,"z":-86.27394},"screenPosition":{"x":0.550099,"y":0.4427112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.638275,"y":156.5515,"z":-85.19792},"screenPosition":{"x":0.5629681,"y":0.41218916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.67553,"y":158.97481,"z":-83.829384},"screenPosition":{"x":0.58909136,"y":0.37292004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.90628,"y":160.30252,"z":-83.083694},"screenPosition":{"x":0.5990486,"y":0.35162336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.75735,"y":161.8321,"z":-82.221085},"screenPosition":{"x":0.6142729,"y":0.3268826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.24388,"y":163.21169,"z":-81.43663},"screenPosition":{"x":0.63476604,"y":0.30426112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.59523,"y":164.77132,"z":-80.51013},"screenPosition":{"x":0.69974697,"y":0.27656898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.197147,"y":163.3358,"z":-81.286255},"screenPosition":{"x":0.7207071,"y":0.2980014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.623837,"y":160.65327,"z":-82.764114},"screenPosition":{"x":0.7308548,"y":0.339501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.244793,"y":158.36621,"z":-84.039085},"screenPosition":{"x":0.7236921,"y":0.375603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.70731,"y":155.54118,"z":-85.59635},"screenPosition":{"x":0.7334574,"y":0.4193985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.060963,"y":155.82298,"z":-85.377556},"screenPosition":{"x":0.79928184,"y":0.41160727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.010136,"y":158.80615,"z":-83.711266},"screenPosition":{"x":0.81210697,"y":0.36436102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.137947,"y":160.97127,"z":-82.527435},"screenPosition":{"x":0.7944034,"y":0.3313038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.333313,"y":162.79337,"z":-81.54799},"screenPosition":{"x":0.76185787,"y":0.30443105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.116413,"y":163.0343,"z":-81.45213},"screenPosition":{"x":0.7220733,"y":0.30264762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.41389,"y":162.95839,"z":-81.5252},"screenPosition":{"x":0.6894477,"y":0.30548298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.0393,"y":161.6744,"z":-82.27173},"screenPosition":{"x":0.65305394,"y":0.32740337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.931526,"y":161.08427,"z":-82.61059},"screenPosition":{"x":0.6408077,"y":0.33724418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.767845,"y":159.41725,"z":-83.55859},"screenPosition":{"x":0.6159051,"y":0.36464316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.83762,"y":157.58408,"z":-84.588264},"screenPosition":{"x":0.6020478,"y":0.39405292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.98172,"y":155.48058,"z":-85.76864},"screenPosition":{"x":0.58734924,"y":0.42771032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.51881,"y":153.81433,"z":-86.69867},"screenPosition":{"x":0.5809322,"y":0.45416057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.108574,"y":151.6584,"z":-87.9006},"screenPosition":{"x":0.5741448,"y":0.48827073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.41314,"y":149.65259,"z":-89.01555},"screenPosition":{"x":0.5713114,"y":0.5198118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.71204,"y":147.07086,"z":-90.449356},"screenPosition":{"x":0.5690408,"y":0.560187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.34363,"y":144.84134,"z":-91.67911},"screenPosition":{"x":0.57587206,"y":0.5949627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.40767,"y":143.11864,"z":-92.58001},"screenPosition":{"x":0.6331971,"y":0.6187066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.344852,"y":142.66301,"z":-92.79098},"screenPosition":{"x":0.6770726,"y":0.6240002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.212685,"y":142.98611,"z":-92.58325},"screenPosition":{"x":0.70716906,"y":0.61742777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.39561,"y":144.02162,"z":-91.97175},"screenPosition":{"x":0.7463729,"y":0.59870714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.57272,"y":145.92038,"z":-90.89559},"screenPosition":{"x":0.7708867,"y":0.5678715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.164303,"y":148.34074,"z":-89.54967},"screenPosition":{"x":0.77501476,"y":0.5301483},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-54.64932,"y":152.66612,"z":-87.147285},"screenPosition":{"x":0.77912414,"y":0.46219152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.717625,"y":154.75456,"z":-86.00512},"screenPosition":{"x":0.7622663,"y":0.43010738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.664227,"y":156.60182,"z":-85.00838},"screenPosition":{"x":0.73327374,"y":0.40277955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.76475,"y":157.4844,"z":-84.56146},"screenPosition":{"x":0.688528,"y":0.39127073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.67949,"y":156.0469,"z":-85.39691},"screenPosition":{"x":0.648126,"y":0.41581607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.64124,"y":153.11623,"z":-87.03293},"screenPosition":{"x":0.6366223,"y":0.46229827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.27063,"y":152.02812,"z":-87.59001},"screenPosition":{"x":0.6853895,"y":0.47689244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.561893,"y":153.5152,"z":-86.7434},"screenPosition":{"x":0.70855963,"y":0.45221767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.947697,"y":153.45146,"z":-86.75689},"screenPosition":{"x":0.7316099,"y":0.45227665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.27726,"y":154.87363,"z":-85.933235},"screenPosition":{"x":0.7685406,"y":0.42813283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.35566,"y":156.24335,"z":-85.14873},"screenPosition":{"x":0.7948692,"y":0.40536904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.101887,"y":157.25737,"z":-84.57023},"screenPosition":{"x":0.8118378,"y":0.38851207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.41772,"y":159.03314,"z":-83.55056},"screenPosition":{"x":0.8488235,"y":0.35896152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.117825,"y":146.32611,"z":-90.67825},"screenPosition":{"x":0.76294667,"y":0.56231046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.434956,"y":146.83109,"z":-90.42988},"screenPosition":{"x":0.7296024,"y":0.5560754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.552155,"y":146.93123,"z":-90.3895},"screenPosition":{"x":0.7136322,"y":0.555309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.656403,"y":147.75421,"z":-89.98915},"screenPosition":{"x":0.6546239,"y":0.54538196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.35828,"y":150.26834,"z":-88.606285},"screenPosition":{"x":0.6427671,"y":0.50659746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.51746,"y":152.37532,"z":-87.441574},"screenPosition":{"x":0.6389788,"y":0.47352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.66146,"y":154.83319,"z":-86.08233},"screenPosition":{"x":0.63505733,"y":0.43548328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.39615,"y":156.70064,"z":-85.04455},"screenPosition":{"x":0.6374429,"y":0.40611288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.215126,"y":158.37517,"z":-84.14175},"screenPosition":{"x":0.6103164,"y":0.3812464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.40437,"y":159.77428,"z":-83.409966},"screenPosition":{"x":0.56389827,"y":0.36166275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.9067,"y":159.81624,"z":-83.42052},"screenPosition":{"x":0.52831143,"y":0.3627593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.162254,"y":159.37633,"z":-83.68109},"screenPosition":{"x":0.5107706,"y":0.3705349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.17126,"y":160.0231,"z":-83.35004},"screenPosition":{"x":0.4816608,"y":0.36189577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.31006,"y":160.48463,"z":-83.123314},"screenPosition":{"x":0.45088628,"y":0.35621223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.17237,"y":161.24422,"z":-82.7413},"screenPosition":{"x":0.40981516,"y":0.34631065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.07575,"y":161.37115,"z":-82.6967},"screenPosition":{"x":0.3825724,"y":0.34571618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.65657,"y":161.78323,"z":-82.48983},"screenPosition":{"x":0.35962072,"y":0.34045526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.412605,"y":162.02364,"z":-82.393906},"screenPosition":{"x":0.3202285,"y":0.3386682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.644356,"y":164.13416,"z":-81.25522},"screenPosition":{"x":0.28690457,"y":0.30728382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.98178,"y":166.26126,"z":-80.095276},"screenPosition":{"x":0.26629293,"y":0.27500132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.367645,"y":169.16406,"z":-78.46589},"screenPosition":{"x":0.28709963,"y":0.22848834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.78581,"y":170.80112,"z":-77.537926},"screenPosition":{"x":0.30838835,"y":0.20177738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.02007,"y":170.91513,"z":-77.43744},"screenPosition":{"x":0.34765503,"y":0.1980194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.038246,"y":170.3483,"z":-77.71109},"screenPosition":{"x":0.3906712,"y":0.20477396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.722496,"y":169.57265,"z":-78.122894},"screenPosition":{"x":0.40980053,"y":0.21592613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.406494,"y":169.78395,"z":-77.974594},"screenPosition":{"x":0.4425958,"y":0.2109691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.43067,"y":169.92706,"z":-77.86866},"screenPosition":{"x":0.4706017,"y":0.20732094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.03287,"y":169.83907,"z":-77.88502},"screenPosition":{"x":0.5047836,"y":0.20698246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.731735,"y":168.21599,"z":-78.752815},"screenPosition":{"x":0.53873205,"y":0.2307004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.9805,"y":166.6379,"z":-79.603134},"screenPosition":{"x":0.5648229,"y":0.25410852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.46046,"y":164.40007,"z":-80.835434},"screenPosition":{"x":0.5739258,"y":0.2886914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.515594,"y":162.42494,"z":-81.930016},"screenPosition":{"x":0.57459086,"y":0.31959566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.241776,"y":160.6633,"z":-82.91543},"screenPosition":{"x":0.5655503,"y":0.34765476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.662056,"y":158.83426,"z":-83.93404},"screenPosition":{"x":0.5609312,"y":0.37653574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.119545,"y":156.86922,"z":-85.028465},"screenPosition":{"x":0.55588764,"y":0.4075636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.08054,"y":154.93726,"z":-86.09788},"screenPosition":{"x":0.55796176,"y":0.4375947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.56489,"y":152.75401,"z":-87.28651},"screenPosition":{"x":0.5810843,"y":0.47071847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.646194,"y":151.05475,"z":-88.21516},"screenPosition":{"x":0.595401,"y":0.49665844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.29448,"y":148.97981,"z":-89.37303},"screenPosition":{"x":0.5877773,"y":0.52936614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.14583,"y":146.37807,"z":-90.83889},"screenPosition":{"x":0.5635355,"y":0.57089573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.85756,"y":145.3957,"z":-91.41954},"screenPosition":{"x":0.52546275,"y":0.5888112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.68968,"y":145.15663,"z":-91.59018},"screenPosition":{"x":0.48534462,"y":0.5945709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.13702,"y":145.62585,"z":-91.37687},"screenPosition":{"x":0.42986378,"y":0.5923608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.37041,"y":150.17633,"z":-88.84643},"screenPosition":{"x":0.44382948,"y":0.51763463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.36008,"y":149.0194,"z":-89.44651},"screenPosition":{"x":0.48716056,"y":0.5339755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.916115,"y":148.56508,"z":-89.692116},"screenPosition":{"x":0.49388784,"y":0.5406424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.77368,"y":147.09958,"z":-90.48829},"screenPosition":{"x":0.5111604,"y":0.562841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.7704,"y":145.58356,"z":-91.28733},"screenPosition":{"x":0.55501956,"y":0.58438444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.58664,"y":145.8223,"z":-91.125626},"screenPosition":{"x":0.5859129,"y":0.57909334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.26281,"y":145.67255,"z":-91.17718},"screenPosition":{"x":0.6190881,"y":0.5797726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.6639,"y":145.25137,"z":-91.38884},"screenPosition":{"x":0.642151,"y":0.58521134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.85902,"y":145.35553,"z":-91.29329},"screenPosition":{"x":0.681982,"y":0.5815795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.30861,"y":144.5114,"z":-91.72633},"screenPosition":{"x":0.71889764,"y":0.59294736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.100792,"y":143.59814,"z":-92.202286},"screenPosition":{"x":0.7508987,"y":0.6052113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.61103,"y":141.83511,"z":-93.158554},"screenPosition":{"x":0.77349854,"y":0.632125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.12421,"y":141.51282,"z":-93.330475},"screenPosition":{"x":0.78054285,"y":0.63636696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.853115,"y":139.64476,"z":-94.32085},"screenPosition":{"x":0.82834256,"y":0.6629842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.253365,"y":137.07703,"z":-96.87797},"screenPosition":{"x":0.8392324,"y":0.7109395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.68758,"y":134.35162,"z":-97.27699},"screenPosition":{"x":0.8061324,"y":0.7465499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.123737,"y":133.74217,"z":-97.67441},"screenPosition":{"x":0.74376816,"y":0.76038164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.542988,"y":127.97352,"z":-100.861275},"screenPosition":{"x":0.7563228,"y":0.85010797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.923485,"y":125.59939,"z":-102.194725},"screenPosition":{"x":0.7383714,"y":0.88742757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.125664,"y":123.84191,"z":-103.19776},"screenPosition":{"x":0.7084216,"y":0.917229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.21257,"y":124.47233,"z":-104.02289},"screenPosition":{"x":0.66422206,"y":0.917092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.25584,"y":125.93262,"z":-103.22825},"screenPosition":{"x":0.6482919,"y":0.8950189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.55723,"y":128.9348,"z":-101.60732},"screenPosition":{"x":0.61331546,"y":0.84982145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.20973,"y":130.06729,"z":-100.97833},"screenPosition":{"x":0.6031872,"y":0.832521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.86998,"y":130.99146,"z":-100.47543},"screenPosition":{"x":0.59310555,"y":0.81855166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.63165,"y":134.85706,"z":-98.371925},"screenPosition":{"x":0.5500998,"y":0.7606779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.234604,"y":134.39973,"z":-97.47376},"screenPosition":{"x":0.5709632,"y":0.75876075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.59572,"y":133.97508,"z":-97.713806},"screenPosition":{"x":0.55698216,"y":0.7684984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.19373,"y":136.04773,"z":-96.56054},"screenPosition":{"x":0.57047045,"y":0.73228675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.58991,"y":137.4406,"z":-95.82152},"screenPosition":{"x":0.5351892,"y":0.7129273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.662025,"y":139.18701,"z":-94.86882},"screenPosition":{"x":0.5186357,"y":0.6864038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.186806,"y":142.03116,"z":-93.3008},"screenPosition":{"x":0.50905305,"y":0.6423358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.53716,"y":143.04509,"z":-92.75751},"screenPosition":{"x":0.4890856,"y":0.62745714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.25636,"y":144.27805,"z":-92.0844},"screenPosition":{"x":0.4779354,"y":0.6087047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.30112,"y":146.30144,"z":-90.99144},"screenPosition":{"x":0.44733697,"y":0.5785481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.00177,"y":147.88516,"z":-90.12382},"screenPosition":{"x":0.43618977,"y":0.5543013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.72242,"y":149.68594,"z":-89.13627},"screenPosition":{"x":0.42459646,"y":0.52667725},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-83.81778,"y":151.9144,"z":-89.090004},"screenPosition":{"x":0.3648596,"y":0.5022898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.04907,"y":153.63788,"z":-88.15215},"screenPosition":{"x":0.34605834,"y":0.4762384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.27964,"y":155.36034,"z":-87.21486},"screenPosition":{"x":0.32669893,"y":0.45058146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.39115,"y":157.05441,"z":-85.15911},"screenPosition":{"x":0.3130278,"y":0.4156538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.7593,"y":158.34193,"z":-84.45104},"screenPosition":{"x":0.30452016,"y":0.39688304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.07189,"y":161.1026,"z":-82.91288},"screenPosition":{"x":0.3115333,"y":0.35353148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.892296,"y":162.90663,"z":-81.91138},"screenPosition":{"x":0.3127465,"y":0.3252132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.07784,"y":165.20363,"z":-80.60129},"screenPosition":{"x":0.3513438,"y":0.2872808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.37543,"y":164.4808,"z":-80.965096},"screenPosition":{"x":0.3900704,"y":0.29667267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.812996,"y":162.65364,"z":-81.9424},"screenPosition":{"x":0.42812198,"y":0.32332596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.03794,"y":159.79245,"z":-83.52998},"screenPosition":{"x":0.42681658,"y":0.368263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.84559,"y":158.4105,"z":-84.33321},"screenPosition":{"x":0.38789696,"y":0.39186364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.62633,"y":158.87045,"z":-84.11604},"screenPosition":{"x":0.3481036,"y":0.3866171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.23144,"y":159.07957,"z":-84.03541},"screenPosition":{"x":0.31076828,"y":0.3852576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.610214,"y":160.09137,"z":-83.50718},"screenPosition":{"x":0.27272794,"y":0.3746304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.30647,"y":162.39656,"z":-83.386024},"screenPosition":{"x":0.2516984,"y":0.34305784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.767265,"y":165.01294,"z":-80.78371},"screenPosition":{"x":0.2702739,"y":0.2943544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.82136,"y":166.86893,"z":-79.783585},"screenPosition":{"x":0.2396671,"y":0.26682034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.63795,"y":169.50696,"z":-78.29315},"screenPosition":{"x":0.2687705,"y":0.22403811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.0373,"y":169.15883,"z":-78.43733},"screenPosition":{"x":0.32026014,"y":0.22690503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.696884,"y":167.03435,"z":-79.59578},"screenPosition":{"x":0.34091237,"y":0.25914443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.152054,"y":164.93646,"z":-80.750244},"screenPosition":{"x":0.35055584,"y":0.29149678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.33037,"y":163.13356,"z":-81.751114},"screenPosition":{"x":0.34902927,"y":0.31983656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.52561,"y":160.97795,"z":-82.94753},"screenPosition":{"x":0.3483606,"y":0.35350332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.60953,"y":159.22186,"z":-83.9212},"screenPosition":{"x":0.34869143,"y":0.38087568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.96866,"y":157.1648,"z":-85.051765},"screenPosition":{"x":0.35932818,"y":0.41248575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.96794,"y":155.52516,"z":-85.9463},"screenPosition":{"x":0.3742225,"y":0.4376614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.507866,"y":153.78386,"z":-86.89092},"screenPosition":{"x":0.39656794,"y":0.46359774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.08667,"y":150.91162,"z":-88.47591},"screenPosition":{"x":0.4042738,"y":0.5084996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.35126,"y":151.26138,"z":-89.44535},"screenPosition":{"x":0.3719832,"y":0.51216036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.30693,"y":152.46562,"z":-87.905975},"screenPosition":{"x":0.32887998,"y":0.48940685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.45613,"y":155.60738,"z":-87.08043},"screenPosition":{"x":0.31811464,"y":0.4507716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.3305,"y":156.40152,"z":-85.51986},"screenPosition":{"x":0.31456736,"y":0.4256314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.1373,"y":158.48395,"z":-84.33699},"screenPosition":{"x":0.34161162,"y":0.39281392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.97828,"y":159.86295,"z":-83.544136},"screenPosition":{"x":0.37070024,"y":0.36997712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.6854,"y":159.7903,"z":-83.53992},"screenPosition":{"x":0.41788647,"y":0.36863276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.385994,"y":158.15623,"z":-84.41382},"screenPosition":{"x":0.45153806,"y":0.39265007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.307594,"y":139.44102,"z":-94.64234},"screenPosition":{"x":0.60900253,"y":0.6769759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.21603,"y":153.77713,"z":-86.8367},"screenPosition":{"x":0.45746514,"y":0.46071717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.169567,"y":151.93996,"z":-87.66448},"screenPosition":{"x":0.65843666,"y":0.47962722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.762955,"y":148.78273,"z":-89.434494},"screenPosition":{"x":0.63812387,"y":0.5300318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.96271,"y":148.18869,"z":-89.79318},"screenPosition":{"x":0.607258,"y":0.5409555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.11861,"y":147.15602,"z":-90.39418},"screenPosition":{"x":0.57735175,"y":0.5586326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.31805,"y":147.06764,"z":-90.48633},"screenPosition":{"x":0.5318952,"y":0.5622999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.276566,"y":149.20804,"z":-89.3139},"screenPosition":{"x":0.51666486,"y":0.52953887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.31316,"y":146.43861,"z":-90.888626},"screenPosition":{"x":0.47551993,"y":0.574984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.892006,"y":150.93256,"z":-88.43468},"screenPosition":{"x":0.43571648,"y":0.5063584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.85916,"y":148.50574,"z":-89.80522},"screenPosition":{"x":0.40015152,"y":0.5511909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.40815,"y":147.14182,"z":-91.68705},"screenPosition":{"x":0.41692314,"y":0.57443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.82431,"y":144.92487,"z":-92.893425},"screenPosition":{"x":0.44110757,"y":0.6079404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.4684,"y":143.02695,"z":-93.9262},"screenPosition":{"x":0.46181172,"y":0.63662845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.86796,"y":140.78676,"z":-95.14522},"screenPosition":{"x":0.4862497,"y":0.67049015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.41951,"y":138.75931,"z":-96.248474},"screenPosition":{"x":0.5083669,"y":0.7011362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.89764,"y":139.15294,"z":-94.850365},"screenPosition":{"x":0.5579933,"y":0.6849608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.613,"y":139.37326,"z":-94.711},"screenPosition":{"x":0.57610744,"y":0.6806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.12283,"y":140.1193,"z":-94.26422},"screenPosition":{"x":0.61098295,"y":0.66716295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.233536,"y":141.35704,"z":-93.55324},"screenPosition":{"x":0.63694346,"y":0.6464716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.68278,"y":141.95071,"z":-93.203514},"screenPosition":{"x":0.6585662,"y":0.63608664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.8894,"y":141.62932,"z":-93.35729},"screenPosition":{"x":0.6843219,"y":0.63982725},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-55.505516,"y":145.25996,"z":-91.26043},"screenPosition":{"x":0.7722919,"y":0.5779942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.92357,"y":146.63449,"z":-90.46434},"screenPosition":{"x":0.8081657,"y":0.5552091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.161663,"y":146.17914,"z":-90.692726},"screenPosition":{"x":0.83357316,"y":0.56106526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.111145,"y":145.87628,"z":-90.83276},"screenPosition":{"x":0.86297363,"y":0.56433254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.282898,"y":146.26813,"z":-90.59107},"screenPosition":{"x":0.88869476,"y":0.55690306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.338818,"y":146.42175,"z":-90.49325},"screenPosition":{"x":0.9036635,"y":0.5524779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.552475,"y":149.04893,"z":-89.02768},"screenPosition":{"x":0.91936266,"y":0.5138676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.819843,"y":150.25198,"z":-88.35153},"screenPosition":{"x":0.92738616,"y":0.49413463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.440033,"y":150.38626,"z":-88.28554},"screenPosition":{"x":0.9118517,"y":0.49123573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.775536,"y":150.60379,"z":-88.183105},"screenPosition":{"x":0.89268196,"y":0.4887844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.41997,"y":150.88826,"z":-88.04777},"screenPosition":{"x":0.86907905,"y":0.4855211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.804398,"y":152.97829,"z":-86.92249},"screenPosition":{"x":0.83359814,"y":0.45456606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.181114,"y":153.56357,"z":-86.630455},"screenPosition":{"x":0.7993463,"y":0.4471188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.274967,"y":153.37325,"z":-86.76412},"screenPosition":{"x":0.7696962,"y":0.45158902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.249302,"y":154.44502,"z":-86.21073},"screenPosition":{"x":0.7265795,"y":0.4369668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.283466,"y":154.24036,"z":-86.33804},"screenPosition":{"x":0.7120175,"y":0.44090402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.812447,"y":155.42943,"z":-85.71367},"screenPosition":{"x":0.67515,"y":0.42413056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.40877,"y":155.84581,"z":-85.50462},"screenPosition":{"x":0.65213215,"y":0.4187316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.96716,"y":156.39647,"z":-85.22071},"screenPosition":{"x":0.629571,"y":0.41118306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.33403,"y":157.04802,"z":-84.87833},"screenPosition":{"x":0.60963607,"y":0.4020145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.31011,"y":155.76546,"z":-85.6153},"screenPosition":{"x":0.58245,"y":0.423523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.62992,"y":153.91266,"z":-86.65922},"screenPosition":{"x":0.56504995,"y":0.45341828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.20478,"y":152.61366,"z":-87.39988},"screenPosition":{"x":0.54360896,"y":0.47484186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.038795,"y":150.37096,"z":-88.666664},"screenPosition":{"x":0.5191828,"y":0.51119715},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-68.56209,"y":143.52287,"z":-92.398735},"screenPosition":{"x":0.5879728,"y":0.61500686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.49342,"y":141.15201,"z":-93.751305},"screenPosition":{"x":0.5480291,"y":0.6541487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.109215,"y":140.1524,"z":-94.353714},"screenPosition":{"x":0.49879345,"y":0.66889495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.27179,"y":142.75174,"z":-94.07595},"screenPosition":{"x":0.4636191,"y":0.64146453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.85873,"y":144.27602,"z":-92.12066},"screenPosition":{"x":0.4430844,"y":0.6072754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.67975,"y":146.6034,"z":-90.84283},"screenPosition":{"x":0.4294364,"y":0.5722929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.458565,"y":148.47707,"z":-89.775185},"screenPosition":{"x":0.45770642,"y":0.54394954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.25906,"y":150.58041,"z":-88.62115},"screenPosition":{"x":0.44489282,"y":0.51149625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.65755,"y":152.66487,"z":-87.472145},"screenPosition":{"x":0.43783593,"y":0.47907695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.083954,"y":153.96223,"z":-86.73241},"screenPosition":{"x":0.45910162,"y":0.45783147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.507515,"y":155.76038,"z":-85.7288},"screenPosition":{"x":0.46581957,"y":0.42946026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.66769,"y":157.92679,"z":-84.517685},"screenPosition":{"x":0.4761571,"y":0.39500758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.77927,"y":171.07742,"z":-77.35781},"screenPosition":{"x":0.33730057,"y":0.19612029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.3204,"y":172.1824,"z":-76.76667},"screenPosition":{"x":0.31398273,"y":0.17986053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.63405,"y":173.51971,"z":-76.0438},"screenPosition":{"x":0.29429698,"y":0.15990247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.491776,"y":174.33841,"z":-75.615486},"screenPosition":{"x":0.26750568,"y":0.14850053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.418842,"y":155.33078,"z":-85.66847},"screenPosition":{"x":0.78042096,"y":0.42038864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.464676,"y":175.75043,"z":-74.90065},"screenPosition":{"x":0.19545,"y":0.12992632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.66897,"y":175.02563,"z":-75.3318},"screenPosition":{"x":0.16484502,"y":0.14287405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.725784,"y":175.10806,"z":-75.28693},"screenPosition":{"x":0.164099,"y":0.14165387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.30837,"y":174.45908,"z":-75.6542},"screenPosition":{"x":0.15669425,"y":0.15228052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.21082,"y":173.52666,"z":-76.18276},"screenPosition":{"x":0.14380343,"y":0.16735198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.41401,"y":171.8077,"z":-77.12398},"screenPosition":{"x":0.15641958,"y":0.19364329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.18229,"y":170.20503,"z":-77.99492},"screenPosition":{"x":0.17513701,"y":0.21780661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.26929,"y":168.31627,"z":-79.02859},"screenPosition":{"x":0.18457931,"y":0.25249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.355064,"y":166.42499,"z":-80.06365},"screenPosition":{"x":0.20332687,"y":0.278467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.30782,"y":164.71494,"z":-80.99655},"screenPosition":{"x":0.22112808,"y":0.30313268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.46905,"y":164.02386,"z":-82.50052},"screenPosition":{"x":0.23275885,"y":0.3192485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.29913,"y":162.38629,"z":-83.39162},"screenPosition":{"x":0.25062284,"y":0.34400117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.01491,"y":160.58873,"z":-84.36978},"screenPosition":{"x":0.27023235,"y":0.37117246},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-87.33299,"y":156.83476,"z":-86.412544},"screenPosition":{"x":0.31118396,"y":0.42791578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.27984,"y":155.36063,"z":-87.21471},"screenPosition":{"x":0.325498,"y":0.4513748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.98874,"y":153.55342,"z":-88.19811},"screenPosition":{"x":0.34836316,"y":0.4765938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.52904,"y":152.51785,"z":-87.63284},"screenPosition":{"x":0.35695004,"y":0.48378965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.529594,"y":150.11128,"z":-90.07119},"screenPosition":{"x":0.37667203,"y":0.5347769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.970764,"y":148.10143,"z":-90.03064},"screenPosition":{"x":0.40278557,"y":0.55484074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.63056,"y":147.66528,"z":-90.25409},"screenPosition":{"x":0.42777702,"y":0.5577303},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-75.711685,"y":154.23431,"z":-86.563194},"screenPosition":{"x":0.47827816,"y":0.45273793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.203354,"y":153.61841,"z":-86.87042},"screenPosition":{"x":0.5144254,"y":0.46056968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.492065,"y":154.02834,"z":-86.6068},"screenPosition":{"x":0.55279064,"y":0.4520744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.95064,"y":152.62065,"z":-87.352066},"screenPosition":{"x":0.5899043,"y":0.47240713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.05703,"y":151.20946,"z":-88.108025},"screenPosition":{"x":0.6178968,"y":0.49310538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.59103,"y":149.03462,"z":-89.30617},"screenPosition":{"x":0.6261452,"y":0.5267565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.838165,"y":147.00931,"z":-90.41764},"screenPosition":{"x":0.6383638,"y":0.5578663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.871483,"y":144.86302,"z":-91.593216},"screenPosition":{"x":0.6537315,"y":0.5904521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.682514,"y":143.5267,"z":-92.317215},"screenPosition":{"x":0.6716257,"y":0.6107453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.205425,"y":142.34158,"z":-92.953606},"screenPosition":{"x":0.69352365,"y":0.6282087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.293137,"y":140.27267,"z":-94.08706},"screenPosition":{"x":0.70804304,"y":0.6598857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.322227,"y":138.04811,"z":-95.31943},"screenPosition":{"x":0.7092841,"y":0.6946675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.88183,"y":135.07263,"z":-96.97483},"screenPosition":{"x":0.70353574,"y":0.7415627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.186512,"y":132.97972,"z":-98.151505},"screenPosition":{"x":0.68652946,"y":0.7751989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.840675,"y":132.20047,"z":-98.63241},"screenPosition":{"x":0.6352443,"y":0.7882944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.979034,"y":133.90558,"z":-97.73048},"screenPosition":{"x":0.5891954,"y":0.76558524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.08256,"y":136.4552,"z":-96.33338},"screenPosition":{"x":0.5715974,"y":0.7265333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.81959,"y":138.91548,"z":-94.96731},"screenPosition":{"x":0.57366794,"y":0.6872205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.2726,"y":141.59328,"z":-93.46345},"screenPosition":{"x":0.5935273,"y":0.644952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.54667,"y":143.5079,"z":-92.3663},"screenPosition":{"x":0.6309402,"y":0.61266315},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-63.148052,"y":139.1015,"z":-94.77421},"screenPosition":{"x":0.6682941,"y":0.68022656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.75047,"y":138.21834,"z":-95.24444},"screenPosition":{"x":0.68883616,"y":0.6930283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.582634,"y":136.9613,"z":-95.95183},"screenPosition":{"x":0.6779312,"y":0.7132654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.58401,"y":133.93369,"z":-97.62856},"screenPosition":{"x":0.68016404,"y":0.76057625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.619125,"y":132.34872,"z":-98.49329},"screenPosition":{"x":0.69502723,"y":0.7834408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.110516,"y":130.28493,"z":-99.62937},"screenPosition":{"x":0.7038437,"y":0.81653905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.313335,"y":128.37169,"z":-100.67818},"screenPosition":{"x":0.7166096,"y":0.84586596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.758766,"y":125.8579,"z":-102.062836},"screenPosition":{"x":0.7263703,"y":0.88475025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.068787,"y":124.40416,"z":-102.872116},"screenPosition":{"x":0.7230407,"y":0.9076881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.72799,"y":122.00514,"z":-104.196106},"screenPosition":{"x":0.7296744,"y":0.9449318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.31189,"y":119.2282,"z":-105.741875},"screenPosition":{"x":0.7281476,"y":0.9841409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.106937,"y":119.69116,"z":-106.625916},"screenPosition":{"x":0.72612584,"y":0.9887026},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-083301/brain-CB29B8-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.5242734638192736,0.7331348838304265,0.433186538624976,0.0,0.851532683188967,0.4546002218917998,0.261210121773496,0.0,-0.005424444297711245,0.505818030883512,-0.862623147751779,0.0,-59.99404653588189,216.38193177726237,-169.88577110346895,1.0]},"baseImage":"20190823-083301/base.webp","version":0,"savedAt":1.566549507566E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-090044-v0.json b/data/mapping/BAAAHS/dwayman/20190823-090044-v0.json new file mode 100644 index 0000000000..de2508ad4d --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-090044-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566550844595E12,"surfaces":[{"brainId":"CB3DCC","panelName":"30D","pixels":[{"modelPosition":{"x":-309.09216,"y":81.33961,"z":-82.91361},"screenPosition":{"x":0.8550846,"y":0.918276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.51834,"y":81.65027,"z":-83.2192},"screenPosition":{"x":0.8399125,"y":0.9128504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.06366,"y":82.46771,"z":-83.70898},"screenPosition":{"x":0.8138638,"y":0.91097873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.10336,"y":81.84616,"z":-84.049774},"screenPosition":{"x":0.7962587,"y":0.87806296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.2107,"y":82.00592,"z":-84.5952},"screenPosition":{"x":0.7651645,"y":0.8528641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.98175,"y":79.879,"z":-84.74023},"screenPosition":{"x":0.7622717,"y":0.79436755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.2274,"y":78.15933,"z":-84.99927},"screenPosition":{"x":0.7518519,"y":0.73938185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.57407,"y":74.27071,"z":-84.59469},"screenPosition":{"x":0.783367,"y":0.66706085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.74768,"y":71.06091,"z":-84.0628},"screenPosition":{"x":0.82072586,"y":0.6180803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.32086,"y":70.21028,"z":-83.54963},"screenPosition":{"x":0.8518203,"y":0.6248571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.55228,"y":71.42612,"z":-83.36815},"screenPosition":{"x":0.8591689,"y":0.66367334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.64038,"y":73.2726,"z":-82.67917},"screenPosition":{"x":0.89063585,"y":0.74259126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.13174,"y":75.27566,"z":-83.22583},"screenPosition":{"x":0.8579952,"y":0.763673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.8495,"y":74.87431,"z":-83.63533},"screenPosition":{"x":0.8354063,"y":0.73196614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.6032,"y":73.68257,"z":-84.006905},"screenPosition":{"x":0.8177551,"y":0.6840016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.98282,"y":72.445595,"z":-84.26004},"screenPosition":{"x":0.80681086,"y":0.6411072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.8209,"y":70.56003,"z":-84.402115},"screenPosition":{"x":0.8028953,"y":0.5881692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.20053,"y":69.32306,"z":-84.65525},"screenPosition":{"x":0.7920986,"y":0.54523087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.2731,"y":68.28221,"z":-84.78699},"screenPosition":{"x":0.78689873,"y":0.5132576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.28485,"y":66.25779,"z":-85.263954},"screenPosition":{"x":0.7652969,"y":0.43946558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.87918,"y":67.71179,"z":-85.76974},"screenPosition":{"x":0.733525,"y":0.44771218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.08948,"y":67.322495,"z":-86.274284},"screenPosition":{"x":0.70609474,"y":0.41178763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.93878,"y":68.314926,"z":-86.71432},"screenPosition":{"x":0.6792053,"y":0.41236255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.27505,"y":70.6016,"z":-87.114716},"screenPosition":{"x":0.6513063,"y":0.4461977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.0518,"y":72.63489,"z":-87.42301},"screenPosition":{"x":0.6292306,"y":0.47876847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.04504,"y":75.90809,"z":-87.73994},"screenPosition":{"x":0.6037287,"y":0.540672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.40735,"y":77.97774,"z":-87.38141},"screenPosition":{"x":0.61886513,"y":0.60927737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.1431,"y":79.55264,"z":-86.93375},"screenPosition":{"x":0.64023143,"y":0.67078555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.02023,"y":78.87701,"z":-86.370834},"screenPosition":{"x":0.6733534,"y":0.68425435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.47803,"y":77.688446,"z":-86.0522},"screenPosition":{"x":0.6940167,"y":0.67251056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.49472,"y":76.21331,"z":-85.61807},"screenPosition":{"x":0.72182673,"y":0.6599752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.85266,"y":75.20269,"z":-85.511444},"screenPosition":{"x":0.7301968,"y":0.6413198},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-300.47302,"y":78.81111,"z":-84.42011},"screenPosition":{"x":0.7827311,"y":0.785601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.9686,"y":75.3811,"z":-83.81952},"screenPosition":{"x":0.82448655,"y":0.73486686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.18256,"y":72.089714,"z":-83.83601},"screenPosition":{"x":0.8308462,"y":0.6546532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.68378,"y":70.44845,"z":-84.236885},"screenPosition":{"x":0.81238186,"y":0.59419227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.56476,"y":73.0126,"z":-84.91948},"screenPosition":{"x":0.76854235,"y":0.6199352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.1132,"y":75.83038,"z":-84.74219},"screenPosition":{"x":0.77177685,"y":0.6969907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.1411,"y":77.23325,"z":-84.60602},"screenPosition":{"x":0.7760693,"y":0.7378814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.75903,"y":79.38131,"z":-84.389336},"screenPosition":{"x":0.7829399,"y":0.8007385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.77026,"y":82.25931,"z":-84.687294},"screenPosition":{"x":0.7595827,"y":0.8543508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.88007,"y":81.50799,"z":-85.19627},"screenPosition":{"x":0.7328692,"y":0.80944306},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-296.1169,"y":75.99924,"z":-85.12091},"screenPosition":{"x":0.75010383,"y":0.68101054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.81168,"y":74.744316,"z":-84.755486},"screenPosition":{"x":0.7736118,"y":0.670195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.42145,"y":73.64325,"z":-84.41197},"screenPosition":{"x":0.79545975,"y":0.66186565},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-294.76382,"y":69.7453,"z":-85.12607},"screenPosition":{"x":0.76473486,"y":0.5305333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.68762,"y":73.68824,"z":-85.48238},"screenPosition":{"x":0.73542047,"y":0.6064664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.94696,"y":76.306946,"z":-85.16474},"screenPosition":{"x":0.7469864,"y":0.6861448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.66653,"y":76.82601,"z":-84.49201},"screenPosition":{"x":0.783168,"y":0.7338854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.09576,"y":73.69461,"z":-84.10196},"screenPosition":{"x":0.81269574,"y":0.6794578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.12112,"y":70.56617,"z":-83.973656},"screenPosition":{"x":0.826943,"y":0.6109289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.17752,"y":68.46948,"z":-83.880325},"screenPosition":{"x":0.83697116,"y":0.5654984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.13406,"y":66.550735,"z":-83.99901},"screenPosition":{"x":0.83542544,"y":0.5132485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.8015,"y":64.43291,"z":-83.97733},"screenPosition":{"x":0.84112316,"y":0.46357203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.8424,"y":61.820343,"z":-83.86652},"screenPosition":{"x":0.85346466,"y":0.40675974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.81628,"y":58.96643,"z":-83.75866},"screenPosition":{"x":0.866817,"y":0.34374285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.25793,"y":56.722023,"z":-83.21495},"screenPosition":{"x":0.9026666,"y":0.3184713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.01355,"y":57.150173,"z":-84.209274},"screenPosition":{"x":0.84548527,"y":0.2766357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.96326,"y":55.433693,"z":-83.77811},"screenPosition":{"x":0.8741954,"y":0.25780275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.5879,"y":54.308537,"z":-83.2445},"screenPosition":{"x":0.90674424,"y":0.2589252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.56308,"y":54.906002,"z":-82.7136},"screenPosition":{"x":0.9350502,"y":0.30129278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.72192,"y":57.162685,"z":-82.40038},"screenPosition":{"x":0.9469903,"y":0.37211132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.72943,"y":59.871838,"z":-82.319626},"screenPosition":{"x":0.9503591,"y":0.44498628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.94412,"y":62.562805,"z":-82.57227},"screenPosition":{"x":0.9247791,"y":0.49271464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.80273,"y":64.81335,"z":-82.68752},"screenPosition":{"x":0.9122208,"y":0.5406271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.93555,"y":67.287056,"z":-83.133224},"screenPosition":{"x":0.8815642,"y":0.5764975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.80035,"y":68.79537,"z":-83.590744},"screenPosition":{"x":0.8527087,"y":0.5886551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.4083,"y":66.7739,"z":-84.32947},"screenPosition":{"x":0.81639314,"y":0.50117385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.0919,"y":65.71192,"z":-84.53286},"screenPosition":{"x":0.8075272,"y":0.4649263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.69415,"y":61.9017,"z":-84.27011},"screenPosition":{"x":0.83126384,"y":0.38725328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.97888,"y":61.39196,"z":-83.824165},"screenPosition":{"x":0.85705584,"y":0.39865324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.40005,"y":60.45384,"z":-83.33587},"screenPosition":{"x":0.8870341,"y":0.40175316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.1252,"y":59.69071,"z":-82.79783},"screenPosition":{"x":0.91897136,"y":0.4118075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.23248,"y":56.779526,"z":-82.47647},"screenPosition":{"x":0.9438776,"y":0.3588186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.46506,"y":53.6329,"z":-82.68159},"screenPosition":{"x":0.9398661,"y":0.272394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.8286,"y":54.41103,"z":-83.57643},"screenPosition":{"x":0.8879158,"y":0.24387324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.34482,"y":58.18807,"z":-83.81579},"screenPosition":{"x":0.8650965,"y":0.3222262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.1997,"y":60.26976,"z":-83.552315},"screenPosition":{"x":0.8753525,"y":0.38590962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.39514,"y":62.276,"z":-83.40876},"screenPosition":{"x":0.8786255,"y":0.44168687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.99753,"y":63.908173,"z":-83.17458},"screenPosition":{"x":0.88786066,"y":0.49325806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.6669,"y":65.7817,"z":-82.93746},"screenPosition":{"x":0.896688,"y":0.5507839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.01678,"y":66.964355,"z":-82.73259},"screenPosition":{"x":0.90535,"y":0.59000874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.95483,"y":70.34324,"z":-82.69123},"screenPosition":{"x":0.89929205,"y":0.67321235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.33636,"y":70.72616,"z":-83.56711},"screenPosition":{"x":0.84969133,"y":0.6363577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.15762,"y":67.24479,"z":-83.276535},"screenPosition":{"x":0.87422836,"y":0.56804514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.16193,"y":64.88266,"z":-82.99606},"screenPosition":{"x":0.8955419,"y":0.52609116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.0961,"y":62.6503,"z":-82.54741},"screenPosition":{"x":0.9258609,"y":0.4961302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.33063,"y":61.95149,"z":-83.12133},"screenPosition":{"x":0.95039785,"y":0.50182086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.4733,"y":62.098072,"z":-82.139},"screenPosition":{"x":0.97033167,"y":0.52648425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.4226,"y":66.88581,"z":-82.139},"screenPosition":{"x":0.95417076,"y":0.6387747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.80402,"y":68.26473,"z":-82.26449},"screenPosition":{"x":0.9252293,"y":0.64478457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.2072,"y":65.350365,"z":-82.633354},"screenPosition":{"x":0.91455275,"y":0.55644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.50305,"y":62.276234,"z":-82.45679},"screenPosition":{"x":0.93128353,"y":0.49193648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.2499,"y":60.35591,"z":-82.139},"screenPosition":{"x":0.9688431,"y":0.47654796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.23178,"y":63.05649,"z":-82.139},"screenPosition":{"x":0.97184277,"y":0.5544751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.2232,"y":66.163025,"z":-83.12133},"screenPosition":{"x":0.94950926,"y":0.6073096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.27112,"y":65.96282,"z":-82.45926},"screenPosition":{"x":0.9225021,"y":0.58026165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.83932,"y":64.56291,"z":-82.857185},"screenPosition":{"x":0.9034041,"y":0.52569187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.59177,"y":62.29123,"z":-82.81359},"screenPosition":{"x":0.91191274,"y":0.47345665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.7536,"y":58.734406,"z":-82.64294},"screenPosition":{"x":0.92991465,"y":0.3970037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.86087,"y":55.823223,"z":-82.32159},"screenPosition":{"x":0.9599299,"y":0.34815958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.30927,"y":56.9801,"z":-82.139},"screenPosition":{"x":0.984649,"y":0.4029243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.44757,"y":60.174007,"z":-82.139},"screenPosition":{"x":0.9714757,"y":0.47446957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.186,"y":60.674286,"z":-82.4526},"screenPosition":{"x":0.9359649,"y":0.45365524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.17606,"y":58.876213,"z":-82.5698},"screenPosition":{"x":0.93336636,"y":0.4043417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.12018,"y":56.070477,"z":-82.84214},"screenPosition":{"x":0.92508775,"y":0.32248834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.22433,"y":53.530407,"z":-82.349655},"screenPosition":{"x":0.96543294,"y":0.29248583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.16302,"y":51.72375,"z":-83.12133},"screenPosition":{"x":0.9746874,"y":0.2560859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.89734,"y":50.13039,"z":-82.46267},"screenPosition":{"x":0.9604413,"y":0.19979265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.32663,"y":50.069935,"z":-82.93939},"screenPosition":{"x":0.93368137,"y":0.17335504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.1604,"y":50.546494,"z":-83.361946},"screenPosition":{"x":0.9091026,"y":0.16233999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.8087,"y":50.814884,"z":-83.810844},"screenPosition":{"x":0.88333136,"y":0.14510229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.2045,"y":50.633755,"z":-84.28905},"screenPosition":{"x":0.856987,"y":0.115518235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.96878,"y":51.78005,"z":-84.751},"screenPosition":{"x":0.8284,"y":0.118684545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.13266,"y":55.28551,"z":-85.23167},"screenPosition":{"x":0.7931621,"y":0.17754537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.91495,"y":58.408047,"z":-84.83646},"screenPosition":{"x":0.8075116,"y":0.2737121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.8926,"y":58.094433,"z":-84.26912},"screenPosition":{"x":0.84038466,"y":0.29582244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.17017,"y":43.83123,"z":-82.34938},"screenPosition":{"x":0.9883553,"y":0.060582332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.77234,"y":45.162018,"z":-83.12133},"screenPosition":{"x":0.9902706,"y":0.09843155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.44446,"y":47.527992,"z":-82.139},"screenPosition":{"x":1.0084883,"y":0.17716229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.11667,"y":49.926247,"z":-82.139},"screenPosition":{"x":0.9943879,"y":0.2267069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.3335,"y":52.23912,"z":-82.65105},"screenPosition":{"x":0.94488597,"y":0.24051793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.5103,"y":51.72915,"z":-83.157074},"screenPosition":{"x":0.91776466,"y":0.20156482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.80432,"y":50.106068,"z":-83.22454},"screenPosition":{"x":0.91706336,"y":0.15968354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.25897,"y":46.91717,"z":-83.57297},"screenPosition":{"x":0.9007491,"y":0.046731055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.98343,"y":44.73334,"z":-84.1833},"screenPosition":{"x":0.9318291,"y":0.032097425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.52933,"y":42.83548,"z":-83.63384},"screenPosition":{"x":0.9671001,"y":0.015490531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.15283,"y":42.238834,"z":-83.12133},"screenPosition":{"x":0.9972128,"y":0.02819815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.8176,"y":44.317444,"z":-82.139},"screenPosition":{"x":1.0065986,"y":0.09088177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.8473,"y":46.25787,"z":-82.139},"screenPosition":{"x":1.0082076,"y":0.14347751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.84448,"y":49.874825,"z":-82.139},"screenPosition":{"x":1.0016112,"y":0.23278956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.34183,"y":52.5674,"z":-83.12133},"screenPosition":{"x":0.98249525,"y":0.28081435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.68027,"y":54.164383,"z":-83.12133},"screenPosition":{"x":0.9688912,"y":0.31472534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.16547,"y":56.538177,"z":-82.47943},"screenPosition":{"x":0.9442037,"y":0.35289267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.0973,"y":58.287838,"z":-82.934},"screenPosition":{"x":0.91467893,"y":0.3709168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.98315,"y":59.029835,"z":-83.54369},"screenPosition":{"x":0.8787798,"y":0.35657373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.5669,"y":58.145798,"z":-83.9591},"screenPosition":{"x":0.8576206,"y":0.31341457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.54205,"y":56.371815,"z":-84.2664},"screenPosition":{"x":0.8444978,"y":0.25467688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.0786,"y":53.400177,"z":-84.421776},"screenPosition":{"x":0.8429855,"y":0.17498164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.9185,"y":50.063564,"z":-84.319824},"screenPosition":{"x":0.8563977,"y":0.1004596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.93457,"y":48.048466,"z":-83.678116},"screenPosition":{"x":0.89733285,"y":0.08563889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.7187,"y":49.719955,"z":-83.03887},"screenPosition":{"x":0.92817247,"y":0.16035472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.23117,"y":53.328144,"z":-82.899506},"screenPosition":{"x":0.92838836,"y":0.25357318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.15988,"y":55.44892,"z":-83.18294},"screenPosition":{"x":0.90748256,"y":0.28957257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.97073,"y":58.142845,"z":-83.69734},"screenPosition":{"x":0.8717293,"y":0.3274309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.66806,"y":59.047787,"z":-84.16225},"screenPosition":{"x":0.84410405,"y":0.32436678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.04587,"y":59.26186,"z":-84.65941},"screenPosition":{"x":0.8156329,"y":0.30336314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.32315,"y":59.11391,"z":-85.161},"screenPosition":{"x":0.78770036,"y":0.27353725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.41928,"y":56.395668,"z":-85.40847},"screenPosition":{"x":0.7806264,"y":0.19488935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.24246,"y":54.53419,"z":-85.74065},"screenPosition":{"x":0.7664486,"y":0.13263765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.4651,"y":51.96094,"z":-85.22476},"screenPosition":{"x":0.7984464,"y":0.09489899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.62537,"y":50.21848,"z":-85.77131},"screenPosition":{"x":0.82988995,"y":0.08009417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.17346,"y":49.602,"z":-84.254074},"screenPosition":{"x":0.8609747,"y":0.09308268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.75476,"y":52.000492,"z":-83.86773},"screenPosition":{"x":0.8773307,"y":0.17058662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.50977,"y":54.260128,"z":-83.81627},"screenPosition":{"x":0.87484556,"y":0.22759256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.36838,"y":56.51067,"z":-83.93152},"screenPosition":{"x":0.8630482,"y":0.2755839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.47882,"y":58.670765,"z":-83.809875},"screenPosition":{"x":0.8647288,"y":0.3339013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.299,"y":62.622795,"z":-83.9995},"screenPosition":{"x":0.8447267,"y":0.418849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.37347,"y":63.201843,"z":-84.753975},"screenPosition":{"x":0.8011078,"y":0.3929511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.33313,"y":60.911983,"z":-85.0438},"screenPosition":{"x":0.79031885,"y":0.3226418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.38953,"y":58.815296,"z":-84.95047},"screenPosition":{"x":0.80052376,"y":0.27719063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.46457,"y":56.86337,"z":-85.04576},"screenPosition":{"x":0.799824,"y":0.22526498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.76477,"y":54.49806,"z":-85.4555},"screenPosition":{"x":0.78249985,"y":0.14681531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.1246,"y":55.107334,"z":-85.97163},"screenPosition":{"x":0.7484145,"y":0.11845585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.81943,"y":56.92336,"z":-86.47298},"screenPosition":{"x":0.7161155,"y":0.13366348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.93674,"y":58.881187,"z":-86.90119},"screenPosition":{"x":0.69114596,"y":0.17584394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.5919,"y":61.318764,"z":-87.06175},"screenPosition":{"x":0.6763676,"y":0.22593828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.88538,"y":64.59811,"z":-86.95021},"screenPosition":{"x":0.67482466,"y":0.3106143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.18066,"y":66.42641,"z":-86.59464},"screenPosition":{"x":0.69022024,"y":0.3734338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.00815,"y":64.57426,"z":-85.80814},"screenPosition":{"x":0.73882586,"y":0.37030226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.6588,"y":60.860622,"z":-85.35382},"screenPosition":{"x":0.77308285,"y":0.30504966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.3635,"y":59.032322,"z":-85.70939},"screenPosition":{"x":0.75719696,"y":0.24271432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.8492,"y":56.87518,"z":-86.09278},"screenPosition":{"x":0.74117327,"y":0.1703029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.76794,"y":57.197884,"z":-86.493416},"screenPosition":{"x":0.7179752,"y":0.15691681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.94724,"y":58.1786,"z":-88.07584},"screenPosition":{"x":0.6818837,"y":0.14905767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.23953,"y":61.047188,"z":-87.30306},"screenPosition":{"x":0.6635012,"y":0.20668028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.84128,"y":62.139397,"z":-86.86131},"screenPosition":{"x":0.6856412,"y":0.2562312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.39468,"y":67.87792,"z":-84.93473},"screenPosition":{"x":0.7796913,"y":0.49576616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.33203,"y":68.34539,"z":-85.52399},"screenPosition":{"x":0.7457797,"y":0.4759021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.39786,"y":70.57775,"z":-85.97265},"screenPosition":{"x":0.7153578,"y":0.50586414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.61127,"y":69.81734,"z":-86.64833},"screenPosition":{"x":0.679332,"y":0.4519418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.8283,"y":66.15483,"z":-86.83596},"screenPosition":{"x":0.6774243,"y":0.35414097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.74698,"y":63.406597,"z":-86.36982},"screenPosition":{"x":0.71015066,"y":0.312611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.61234,"y":62.383934,"z":-86.168144},"screenPosition":{"x":0.7238019,"y":0.29875144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.24255,"y":59.97658,"z":-85.769226},"screenPosition":{"x":0.7519236,"y":0.2618905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.98322,"y":59.72933,"z":-85.24867},"screenPosition":{"x":0.78150845,"y":0.28354198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.8089,"y":59.32822,"z":-84.7062},"screenPosition":{"x":0.8129824,"y":0.3024032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.72766,"y":62.022373,"z":-84.26863},"screenPosition":{"x":0.8310834,"y":0.39022195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.10678,"y":65.68783,"z":-84.34276},"screenPosition":{"x":0.81822807,"y":0.47437808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.0541,"y":67.95337,"z":-84.81481},"screenPosition":{"x":0.78616035,"y":0.50389963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.02252,"y":69.45259,"z":-85.43904},"screenPosition":{"x":0.7479066,"y":0.5069866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.7787,"y":67.34976,"z":-85.77417},"screenPosition":{"x":0.7341065,"y":0.43878913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.93814,"y":67.77496,"z":-86.50674},"screenPosition":{"x":0.6921102,"y":0.41034225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.7942,"y":65.494194,"z":-86.62985},"screenPosition":{"x":0.6906216,"y":0.3490583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.56085,"y":62.658463,"z":-86.18858},"screenPosition":{"x":0.7220748,"y":0.30419895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.69604,"y":61.150146,"z":-85.731064},"screenPosition":{"x":0.75127345,"y":0.29210073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.3362,"y":60.54087,"z":-85.214935},"screenPosition":{"x":0.78129447,"y":0.30494145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.37906,"y":61.91965,"z":-84.88867},"screenPosition":{"x":0.7966115,"y":0.35503772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.23328,"y":63.461376,"z":-84.41761},"screenPosition":{"x":0.8193246,"y":0.416935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.25812,"y":65.23536,"z":-84.110306},"screenPosition":{"x":0.8320148,"y":0.4757965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.28488,"y":68.62924,"z":-84.42575},"screenPosition":{"x":0.806596,"y":0.5406704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.36182,"y":68.29721,"z":-85.14379},"screenPosition":{"x":0.7671814,"y":0.49480566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.33633,"y":65.98326,"z":-85.243515},"screenPosition":{"x":0.76702136,"y":0.43396777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.79968,"y":63.512505,"z":-85.05956},"screenPosition":{"x":0.7832602,"y":0.3842909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.4603,"y":61.596947,"z":-84.48804},"screenPosition":{"x":0.8198095,"y":0.3684238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.60544,"y":61.886703,"z":-83.91331},"screenPosition":{"x":0.8508588,"y":0.40583897},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-300.5622,"y":70.852745,"z":-84.08914},"screenPosition":{"x":0.8197304,"y":0.6116915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.2439,"y":68.17086,"z":-83.66979},"screenPosition":{"x":0.85001093,"y":0.56954557},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-298.3307,"y":64.19451,"z":-84.24204},"screenPosition":{"x":0.82741356,"y":0.44381344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.9716,"y":67.196144,"z":-84.80028},"screenPosition":{"x":0.7886595,"y":0.48649582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.07648,"y":70.638435,"z":-84.54395},"screenPosition":{"x":0.7949687,"y":0.582635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.0901,"y":69.53442,"z":-83.93869},"screenPosition":{"x":0.83148533,"y":0.5880522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.11237,"y":66.777084,"z":-83.63925},"screenPosition":{"x":0.8550308,"y":0.53766954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.10367,"y":66.058945,"z":-84.17162},"screenPosition":{"x":0.82638234,"y":0.49233928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.69864,"y":68.05291,"z":-84.88499},"screenPosition":{"x":0.781965,"y":0.50258917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.70303,"y":71.13318,"z":-84.633095},"screenPosition":{"x":0.7890404,"y":0.5898904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.93564,"y":70.358,"z":-84.0},"screenPosition":{"x":0.82603914,"y":0.604571},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-303.51126,"y":68.59629,"z":-83.450386},"screenPosition":{"x":0.8607491,"y":0.5911993},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-309.30963,"y":69.70373,"z":-82.41347},"screenPosition":{"x":0.9139486,"y":0.67145175},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-304.80228,"y":72.78672,"z":-83.3753},"screenPosition":{"x":0.85553765,"y":0.69598657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.60684,"y":70.78048,"z":-83.51885},"screenPosition":{"x":0.85208905,"y":0.6401345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.06955,"y":67.76975,"z":-83.12732},"screenPosition":{"x":0.8813365,"y":0.58853185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.03168,"y":66.94026,"z":-82.54249},"screenPosition":{"x":0.9151145,"y":0.59922385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.98706,"y":69.38398,"z":-82.27459},"screenPosition":{"x":0.9212098,"y":0.67057955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.82767,"y":72.029724,"z":-82.40879},"screenPosition":{"x":0.90681225,"y":0.72606117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.9383,"y":74.25549,"z":-83.12133},"screenPosition":{"x":0.91375446,"y":0.7921489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.0628,"y":72.3844,"z":-82.139},"screenPosition":{"x":0.9405821,"y":0.76973647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.64432,"y":69.52264,"z":-82.139},"screenPosition":{"x":0.95124304,"y":0.7058012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.82843,"y":69.01864,"z":-83.12133},"screenPosition":{"x":0.9307166,"y":0.67038685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.06467,"y":71.96336,"z":-82.36201},"screenPosition":{"x":0.9091284,"y":0.7266736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.8383,"y":74.36776,"z":-82.49917},"screenPosition":{"x":0.8954146,"y":0.7761737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.25266,"y":71.959946,"z":-84.004196},"screenPosition":{"x":0.82228905,"y":0.6429385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.34814,"y":68.70174,"z":-84.044075},"screenPosition":{"x":0.8274361,"y":0.56247807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.7408,"y":68.89172,"z":-84.35114},"screenPosition":{"x":0.80996734,"y":0.5508815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.79852,"y":67.87497,"z":-84.67297},"screenPosition":{"x":0.7942054,"y":0.5094918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.67072,"y":66.65004,"z":-85.02116},"screenPosition":{"x":0.77795935,"y":0.46170086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.20297,"y":66.04053,"z":-85.45701},"screenPosition":{"x":0.7550038,"y":0.42405918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.69925,"y":66.22143,"z":-85.93077},"screenPosition":{"x":0.72804785,"y":0.40340704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.21106,"y":66.9182,"z":-86.42203},"screenPosition":{"x":0.6987295,"y":0.39432323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.41827,"y":66.90002,"z":-86.75544},"screenPosition":{"x":0.6802632,"y":0.37619773},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-280.82422,"y":77.0303,"z":-88.01179},"screenPosition":{"x":0.58586216,"y":0.5533001},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-275.05936,"y":76.04353,"z":-89.04723},"screenPosition":{"x":0.530231,"y":0.47495666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.57117,"y":76.7403,"z":-89.53848},"screenPosition":{"x":0.501071,"y":0.46577662},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-269.6238,"y":72.10331,"z":-89.90463},"screenPosition":{"x":0.4915824,"y":0.3350469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.68396,"y":70.175476,"z":-90.190025},"screenPosition":{"x":0.48018178,"y":0.27366945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.41476,"y":71.20109,"z":-90.65345},"screenPosition":{"x":0.45063892,"y":0.25865975},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-263.4887,"y":76.68257,"z":-91.228935},"screenPosition":{"x":0.40655974,"y":0.37519315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.10535,"y":77.75069,"z":-90.59708},"screenPosition":{"x":0.43943942,"y":0.43422613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.12387,"y":74.82451,"z":-89.91892},"screenPosition":{"x":0.4843357,"y":0.3997132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.0345,"y":71.898094,"z":-90.19273},"screenPosition":{"x":0.4759389,"y":0.31491458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.87137,"y":72.00354,"z":-90.78642},"screenPosition":{"x":0.44245708,"y":0.28614643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.2101,"y":73.379135,"z":-91.150375},"screenPosition":{"x":0.41880345,"y":0.29996893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.95642,"y":74.92063,"z":-91.63129},"screenPosition":{"x":0.38821623,"y":0.31163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.67856,"y":77.599556,"z":-91.78889},"screenPosition":{"x":0.37303007,"y":0.36767897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.58246,"y":80.317795,"z":-91.54142},"screenPosition":{"x":0.38043025,"y":0.4460459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.5632,"y":79.63307,"z":-91.14522},"screenPosition":{"x":0.40423992,"y":0.4505001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.89877,"y":78.30884,"z":-90.47125},"screenPosition":{"x":0.445157,"y":0.45426688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.82428,"y":75.35834,"z":-90.55497},"screenPosition":{"x":0.44744003,"y":0.37893847},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-266.75406,"y":70.04571,"z":-90.35821},"screenPosition":{"x":0.47006178,"y":0.24951474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.75278,"y":68.965775,"z":-89.94304},"screenPosition":{"x":0.49487457,"y":0.23783197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.92148,"y":67.57814,"z":-89.48405},"screenPosition":{"x":0.525878,"y":0.24851601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.87866,"y":68.57081,"z":-88.97211},"screenPosition":{"x":0.55218375,"y":0.29937834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.17215,"y":71.85015,"z":-88.86057},"screenPosition":{"x":0.55063325,"y":0.38408804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.2535,"y":74.59839,"z":-89.32671},"screenPosition":{"x":0.5180149,"y":0.42548847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.9173,"y":75.38266,"z":-89.7931},"screenPosition":{"x":0.4900395,"y":0.41972288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.7591,"y":73.66594,"z":-90.313896},"screenPosition":{"x":0.46498957,"y":0.3510788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.80307,"y":70.68226,"z":-90.374214},"screenPosition":{"x":0.46866542,"y":0.27612692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.58527,"y":68.362404,"z":-89.950424},"screenPosition":{"x":0.4972823,"y":0.23669831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.58337,"y":66.74251,"z":-89.327675},"screenPosition":{"x":0.53450876,"y":0.21917069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.71362,"y":67.05636,"z":-88.94305},"screenPosition":{"x":0.5574009,"y":0.2645718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.44757,"y":70.082306,"z":-88.73942},"screenPosition":{"x":0.56161433,"y":0.3480067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.38806,"y":72.55011,"z":-88.661606},"screenPosition":{"x":0.56011546,"y":0.41137746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.2957,"y":75.4372,"z":-88.79286},"screenPosition":{"x":0.5459125,"y":0.4738114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.1878,"y":77.808426,"z":-88.90663},"screenPosition":{"x":0.5339118,"y":0.5247793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.59418,"y":79.96533,"z":-89.47521},"screenPosition":{"x":0.4969548,"y":0.546601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.33484,"y":77.34663,"z":-89.792854},"screenPosition":{"x":0.48538888,"y":0.4669226},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-275.72125,"y":75.2079,"z":-88.89087},"screenPosition":{"x":0.5409704,"y":0.46313027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.89056,"y":74.36023,"z":-88.63945},"screenPosition":{"x":0.5570603,"y":0.45602953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.8223,"y":73.03895,"z":-88.22724},"screenPosition":{"x":0.5832779,"y":0.44603434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.83035,"y":73.217125,"z":-87.48728},"screenPosition":{"x":0.62424093,"y":0.4893638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.5512,"y":74.81612,"z":-87.22972},"screenPosition":{"x":0.6349073,"y":0.5413668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.76346,"y":78.41817,"z":-87.518814},"screenPosition":{"x":0.6101677,"y":0.6126572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.26285,"y":78.22794,"z":-88.16372},"screenPosition":{"x":0.5745111,"y":0.5740585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.5448,"y":64.67356,"z":-86.83029},"screenPosition":{"x":0.6812952,"y":0.31882927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.5665,"y":64.44721,"z":-87.19005},"screenPosition":{"x":0.6617544,"y":0.2943336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.6062,"y":63.825653,"z":-87.530846},"screenPosition":{"x":0.6441493,"y":0.2614178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.00137,"y":63.10456,"z":-87.80147},"screenPosition":{"x":0.630606,"y":0.2300776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.44553,"y":63.02002,"z":-88.08809},"screenPosition":{"x":0.6148625,"y":0.21265848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.31033,"y":64.528336,"z":-88.54561},"screenPosition":{"x":0.58566386,"y":0.2247567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.15964,"y":65.52077,"z":-88.98565},"screenPosition":{"x":0.5564726,"y":0.20882928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.9308,"y":68.83624,"z":-89.159256},"screenPosition":{"x":0.54107517,"y":0.29588118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.88617,"y":71.27996,"z":-88.89135},"screenPosition":{"x":0.5502651,"y":0.36876416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.36945,"y":72.40535,"z":-88.472984},"screenPosition":{"x":0.57102317,"y":0.41784444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.5847,"y":72.56534,"z":-88.066444},"screenPosition":{"x":0.5933755,"y":0.44316474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.88492,"y":72.57148,"z":-87.637985},"screenPosition":{"x":0.6173621,"y":0.46590176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.23663,"y":72.30309,"z":-87.18909},"screenPosition":{"x":0.64309216,"y":0.48314127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.53934,"y":71.39815,"z":-86.724174},"screenPosition":{"x":0.6712262,"y":0.48593125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.64658,"y":68.48696,"z":-86.402824},"screenPosition":{"x":0.69607335,"y":0.43299633},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-284.0733,"y":63.8952,"z":-86.88742},"screenPosition":{"x":0.67988205,"y":0.29720598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.5361,"y":63.95542,"z":-87.36266},"screenPosition":{"x":0.65321374,"y":0.27348706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.72842,"y":63.961327,"z":-87.88618},"screenPosition":{"x":0.6239323,"y":0.2459287},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-274.52505,"y":67.2193,"z":-88.79826},"screenPosition":{"x":0.56512725,"y":0.27607977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.3297,"y":70.65546,"z":-88.97039},"screenPosition":{"x":0.54732156,"y":0.34960553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.76212,"y":72.59534,"z":-88.78005},"screenPosition":{"x":0.5533795,"y":0.40620694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.54626,"y":74.26682,"z":-88.14081},"screenPosition":{"x":0.58520097,"y":0.48009613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.78506,"y":72.74942,"z":-87.85},"screenPosition":{"x":0.60508734,"y":0.45898327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.6181,"y":69.615074,"z":-87.19819},"screenPosition":{"x":0.64895993,"y":0.4181125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.69934,"y":69.292366,"z":-86.797554},"screenPosition":{"x":0.6722238,"y":0.43145508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.30472,"y":65.11103,"z":-86.70594},"screenPosition":{"x":0.68710345,"y":0.3360084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.04474,"y":61.952366,"z":-86.816},"screenPosition":{"x":0.68856484,"y":0.2542143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.92004,"y":60.356323,"z":-87.33532},"screenPosition":{"x":0.6632376,"y":0.18859993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.2594,"y":62.271885,"z":-87.90685},"screenPosition":{"x":0.62678665,"y":0.20424642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.96356,"y":65.34601,"z":-88.08342},"screenPosition":{"x":0.60960025,"y":0.26879013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.00458,"y":68.175835,"z":-88.001175},"screenPosition":{"x":0.6074843,"y":0.34111977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.09888,"y":69.28009,"z":-87.65447},"screenPosition":{"x":0.6242739,"y":0.38594478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.24466,"y":70.10982,"z":-87.28733},"screenPosition":{"x":0.6428599,"y":0.42525235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.8955,"y":74.909515,"z":-87.728355},"screenPosition":{"x":0.60676795,"y":0.51730067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.96304,"y":70.248436,"z":-87.90441},"screenPosition":{"x":0.6079802,"y":0.3960227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.2043,"y":67.819954,"z":-87.57715},"screenPosition":{"x":0.6320709,"y":0.354943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.9133,"y":66.00098,"z":-86.81404},"screenPosition":{"x":0.67898494,"y":0.35163206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.35504,"y":69.19897,"z":-86.29891},"screenPosition":{"x":0.7002931,"y":0.45553988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.60388,"y":72.550575,"z":-86.75767},"screenPosition":{"x":0.6667191,"y":0.51184237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.6777,"y":72.58966,"z":-87.30457},"screenPosition":{"x":0.63595676,"y":0.4839313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.49597,"y":72.55035,"z":-87.70964},"screenPosition":{"x":0.6133808,"y":0.4616227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.06174,"y":72.06151,"z":-88.144005},"screenPosition":{"x":0.59025735,"y":0.42694402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.11942,"y":71.04475,"z":-88.46584},"screenPosition":{"x":0.5746544,"y":0.38553122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.089,"y":70.55296,"z":-88.63846},"screenPosition":{"x":0.56615764,"y":0.36460736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.12497,"y":69.76256,"z":-88.60053},"screenPosition":{"x":0.57013774,"y":0.34768546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.65286,"y":68.44423,"z":-88.45008},"screenPosition":{"x":0.581713,"y":0.32388207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.87122,"y":68.23311,"z":-88.21467},"screenPosition":{"x":0.5953949,"y":0.33123085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.9884,"y":67.119995,"z":-87.77611},"screenPosition":{"x":0.62259334,"y":0.3276274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.06967,"y":66.79729,"z":-87.37547},"screenPosition":{"x":0.64579135,"y":0.3410135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.26938,"y":66.44141,"z":-86.95145},"screenPosition":{"x":0.6703779,"y":0.3548367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.1962,"y":66.94228,"z":-86.61213},"screenPosition":{"x":0.6880833,"y":0.38484833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.52994,"y":67.0691,"z":-86.18219},"screenPosition":{"x":0.7118375,"y":0.4105654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.49387,"y":64.78856,"z":-85.35333},"screenPosition":{"x":0.7637816,"y":0.39944917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.80844,"y":67.30159,"z":-85.39397},"screenPosition":{"x":0.7555383,"y":0.45768383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.85373,"y":67.76929,"z":-85.03126},"screenPosition":{"x":0.7744619,"y":0.48807302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.4089,"y":67.313866,"z":-84.53705},"screenPosition":{"x":0.803093,"y":0.5031902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.68872,"y":68.62629,"z":-84.163994},"screenPosition":{"x":0.820699,"y":0.5543092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.13727,"y":71.62201,"z":-84.19872},"screenPosition":{"x":0.81202006,"y":0.6244773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.83078,"y":65.24375,"z":-86.799515},"screenPosition":{"x":0.6816018,"y":0.33421263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.04858,"y":67.56361,"z":-87.2233},"screenPosition":{"x":0.65249175,"y":0.3674548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.58212,"y":70.40548,"z":-87.236115},"screenPosition":{"x":0.64501673,"y":0.43506324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.82843,"y":71.59723,"z":-86.86453},"screenPosition":{"x":0.6629997,"y":0.483298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.47107,"y":70.076866,"z":-86.311966},"screenPosition":{"x":0.69754875,"y":0.47592568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.49643,"y":66.948425,"z":-86.18366},"screenPosition":{"x":0.7120303,"y":0.40759543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.4747,"y":64.80333,"z":-86.66211},"screenPosition":{"x":0.6903157,"y":0.33090222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.7185,"y":64.534706,"z":-87.16518},"screenPosition":{"x":0.662938,"y":0.29774967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.17883,"y":65.506004,"z":-87.67687},"screenPosition":{"x":0.63198274,"y":0.29408544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.24463,"y":67.738365,"z":-88.12553},"screenPosition":{"x":0.60152656,"y":0.32412574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.08527,"y":70.38411,"z":-88.259735},"screenPosition":{"x":0.58776325,"y":0.3805336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.5667,"y":72.96054,"z":-88.0854},"screenPosition":{"x":0.59138614,"y":0.45164856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.3049,"y":73.62437,"z":-87.601295},"screenPosition":{"x":0.61690104,"y":0.49313042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.54062,"y":72.47808,"z":-87.13934},"screenPosition":{"x":0.64543986,"y":0.4899685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.9314,"y":71.04817,"z":-86.823654},"screenPosition":{"x":0.666544,"y":0.47227266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.25516,"y":69.37691,"z":-86.510925},"screenPosition":{"x":0.6879305,"y":0.44865456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.9115,"y":69.82347,"z":-86.21987},"screenPosition":{"x":0.7031986,"y":0.47471252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.65527,"y":69.20511,"z":-85.87045},"screenPosition":{"x":0.7243394,"y":0.47827682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.51443,"y":68.924675,"z":-85.3265},"screenPosition":{"x":0.75522864,"y":0.5002406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.7967,"y":69.32601,"z":-84.91701},"screenPosition":{"x":0.7774359,"y":0.5314903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.092,"y":71.15431,"z":-84.56144},"screenPosition":{"x":0.7928261,"y":0.59411776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.3203,"y":72.741264,"z":-84.208824},"screenPosition":{"x":0.8088255,"y":0.6508337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.08838,"y":76.42786,"z":-84.211296},"screenPosition":{"x":0.8000828,"y":0.7393583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.96997,"y":79.531975,"z":-85.10146},"screenPosition":{"x":0.7428702,"y":0.7669692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.1027,"y":76.56329,"z":-85.51859},"screenPosition":{"x":0.72639334,"y":0.67348564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.3619,"y":73.7396,"z":-85.17237},"screenPosition":{"x":0.7526564,"y":0.62405854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.59763,"y":72.593315,"z":-84.71042},"screenPosition":{"x":0.78124344,"y":0.6208922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.00082,"y":72.05039,"z":-84.24108},"screenPosition":{"x":0.80875874,"y":0.63258815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.26755,"y":71.93586,"z":-83.814095},"screenPosition":{"x":0.8329193,"y":0.65235555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.31592,"y":72.03245,"z":-83.62252},"screenPosition":{"x":0.84348685,"y":0.66481936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.71603,"y":71.86064,"z":-82.98205},"screenPosition":{"x":0.8797551,"y":0.69448614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.21234,"y":74.41299,"z":-82.617615},"screenPosition":{"x":0.88989204,"y":0.77191615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.93823,"y":77.260765,"z":-83.15393},"screenPosition":{"x":0.8563066,"y":0.81421685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.09396,"y":77.517105,"z":-83.50778},"screenPosition":{"x":0.8363349,"y":0.80211747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.7218,"y":79.09178,"z":-84.01209},"screenPosition":{"x":0.80490977,"y":0.81387365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.5773,"y":81.71344,"z":-83.9562},"screenPosition":{"x":0.8015519,"y":0.8794547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.65482,"y":81.221886,"z":-83.17684},"screenPosition":{"x":0.8431898,"y":0.9047798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.39172,"y":78.434326,"z":-83.11577},"screenPosition":{"x":0.85450387,"y":0.84313846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.38422,"y":75.725174,"z":-83.19653},"screenPosition":{"x":0.8583964,"y":0.7758777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.54306,"y":75.610405,"z":-83.72152},"screenPosition":{"x":0.8290925,"y":0.7452765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.80676,"y":78.93793,"z":-83.99017},"screenPosition":{"x":0.8064583,"y":0.81128514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.96808,"y":80.28353,"z":-83.64052},"screenPosition":{"x":0.8228841,"y":0.8621131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.32227,"y":79.10406,"z":-83.15517},"screenPosition":{"x":0.8506193,"y":0.856937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.05545,"y":76.14765,"z":-82.71538},"screenPosition":{"x":0.8800508,"y":0.8077117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.04794,"y":73.4385,"z":-82.796135},"screenPosition":{"x":0.8847504,"y":0.74109334},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-301.64975,"y":75.2302,"z":-84.05936},"screenPosition":{"x":0.81143385,"y":0.71859986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.68765,"y":78.431145,"z":-83.805984},"screenPosition":{"x":0.81801856,"y":0.80887604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.2044,"y":79.6772,"z":-83.38615},"screenPosition":{"x":0.8379922,"y":0.8603088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.28503,"y":78.81453,"z":-82.77792},"screenPosition":{"x":0.8689976,"y":0.8663142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.36874,"y":77.58075,"z":-82.34084},"screenPosition":{"x":0.89261746,"y":0.8566117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.76065,"y":75.329,"z":-82.139},"screenPosition":{"x":0.9236149,"y":0.82881695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.80334,"y":73.23785,"z":-82.139},"screenPosition":{"x":0.93422025,"y":0.78545177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.12332,"y":70.41004,"z":-83.12133},"screenPosition":{"x":0.93599576,"y":0.7074171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.85123,"y":70.352325,"z":-82.52452},"screenPosition":{"x":0.9068657,"y":0.6814005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.16333,"y":73.776436,"z":-82.60161},"screenPosition":{"x":0.8926039,"y":0.7578625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.5083,"y":76.78125,"z":-82.46963},"screenPosition":{"x":0.88927746,"y":0.8329331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.03564,"y":77.9939,"z":-82.97836},"screenPosition":{"x":0.8622511,"y":0.8388917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.28253,"y":77.354164,"z":-83.65257},"screenPosition":{"x":0.82916576,"y":0.79109496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.88608,"y":74.62388,"z":-83.80499},"screenPosition":{"x":0.82711595,"y":0.7174539},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-294.03397,"y":83.21538,"z":-85.79415},"screenPosition":{"x":0.6953391,"y":0.8189184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.71265,"y":83.97556,"z":-86.070435},"screenPosition":{"x":0.6780646,"y":0.8226046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.83487,"y":84.11123,"z":-86.425766},"screenPosition":{"x":0.6578476,"y":0.8071155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.7871,"y":84.55461,"z":-86.82492},"screenPosition":{"x":0.63444567,"y":0.7967067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.92487,"y":85.20616,"z":-87.19773},"screenPosition":{"x":0.6119521,"y":0.79244834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.55515,"y":85.86975,"z":-87.665596},"screenPosition":{"x":0.58425313,"y":0.78394675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.50742,"y":86.31313,"z":-88.06475},"screenPosition":{"x":0.5608512,"y":0.773538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.9882,"y":85.97815,"z":-88.521034},"screenPosition":{"x":0.5360993,"y":0.7414138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.21893,"y":84.28257,"z":-88.97018},"screenPosition":{"x":0.51497984,"y":0.6769541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.03836,"y":82.25224,"z":-88.92363},"screenPosition":{"x":0.52240646,"y":0.6306509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.30316,"y":78.146355,"z":-88.712105},"screenPosition":{"x":0.54400104,"y":0.543163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.3199,"y":76.67123,"z":-88.27798},"screenPosition":{"x":0.5718008,"y":0.5306211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.7051,"y":76.523506,"z":-87.8276},"screenPosition":{"x":0.5973785,"y":0.5508426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.3837,"y":74.212746,"z":-87.23711},"screenPosition":{"x":0.63592607,"y":0.52648026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.47244,"y":76.59919,"z":-86.75571},"screenPosition":{"x":0.6572139,"y":0.60921913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.9694,"y":79.691505,"z":-86.59886},"screenPosition":{"x":0.65865207,"y":0.69179213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.11646,"y":81.60116,"z":-86.64688},"screenPosition":{"x":0.65142816,"y":0.73514026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.1643,"y":84.22872,"z":-87.1145},"screenPosition":{"x":0.61895365,"y":0.773446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.37213,"y":84.7505,"z":-87.655495},"screenPosition":{"x":0.5874766,"y":0.75758815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.60287,"y":83.054924,"z":-88.10464},"screenPosition":{"x":0.56635594,"y":0.6931507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.71387,"y":80.31259,"z":-88.162},"screenPosition":{"x":0.5696566,"y":0.6242355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.63254,"y":77.564354,"z":-87.69586},"screenPosition":{"x":0.6022826,"y":0.5828014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.88312,"y":76.393974,"z":-87.04381},"screenPosition":{"x":0.641528,"y":0.5890548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.62198,"y":77.59776,"z":-86.76728},"screenPosition":{"x":0.65419436,"y":0.6326004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.0668,"y":80.42464,"z":-86.423294},"screenPosition":{"x":0.6667411,"y":0.7186706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.4186,"y":83.227196,"z":-86.84117},"screenPosition":{"x":0.63668835,"y":0.7639563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.11343,"y":85.04321,"z":-87.34252},"screenPosition":{"x":0.6043048,"y":0.7811349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.0688,"y":85.11548,"z":-87.91282},"screenPosition":{"x":0.57220227,"y":0.75277954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.65253,"y":84.23144,"z":-88.328224},"screenPosition":{"x":0.5510337,"y":0.7095472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.62772,"y":82.45746,"z":-88.63553},"screenPosition":{"x":0.53805,"y":0.6507831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.67416,"y":78.5627,"z":-88.65941},"screenPosition":{"x":0.5459601,"y":0.55594003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.62943,"y":75.56402,"z":-88.36292},"screenPosition":{"x":0.56968415,"y":0.49954313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.96497,"y":74.239784,"z":-87.68896},"screenPosition":{"x":0.6105482,"y":0.5032879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.42715,"y":76.13149,"z":-87.11842},"screenPosition":{"x":0.63801634,"y":0.57884353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.7231,"y":78.499756,"z":-86.970436},"screenPosition":{"x":0.64067775,"y":0.64355266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.10468,"y":81.25413,"z":-87.00812},"screenPosition":{"x":0.63202673,"y":0.707742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.8783,"y":83.65853,"z":-87.14528},"screenPosition":{"x":0.6186369,"y":0.7582734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.04398,"y":85.712944,"z":-87.38192},"screenPosition":{"x":0.6004811,"y":0.79504216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.85977,"y":86.58471,"z":-87.82343},"screenPosition":{"x":0.5712897,"y":0.8063011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.2711,"y":86.91946,"z":-88.31912},"screenPosition":{"x":0.5428155,"y":0.78958094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.81577,"y":87.19694,"z":-88.60131},"screenPosition":{"x":0.5266575,"y":0.7800929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.02606,"y":86.80764,"z":-89.105865},"screenPosition":{"x":0.5013891,"y":0.7304434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.59302,"y":84.3278,"z":-89.08862},"screenPosition":{"x":0.5082404,"y":0.6718059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.42422,"y":82.64449,"z":-88.68084},"screenPosition":{"x":0.5350687,"y":0.65288275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.74802,"y":80.97323,"z":-88.36811},"screenPosition":{"x":0.55654776,"y":0.6292331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.05875,"y":77.875015,"z":-88.00145},"screenPosition":{"x":0.58441365,"y":0.57411504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.88135,"y":78.54451,"z":-88.99282},"screenPosition":{"x":0.52733797,"y":0.5379153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.38205,"y":81.80567,"z":-89.21469},"screenPosition":{"x":0.50717074,"y":0.60456395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.7301,"y":84.43938,"z":-89.253845},"screenPosition":{"x":0.49872392,"y":0.66577345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.95908,"y":86.56629,"z":-89.10882},"screenPosition":{"x":0.5017927,"y":0.7245305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.71588,"y":87.37488,"z":-88.81333},"screenPosition":{"x":0.5144998,"y":0.7729538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.65695,"y":87.31171,"z":-88.076324},"screenPosition":{"x":0.5570903,"y":0.79796314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.60352,"y":83.59489,"z":-88.31222},"screenPosition":{"x":0.553451,"y":0.695171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.74435,"y":83.87532,"z":-88.85616},"screenPosition":{"x":0.52232933,"y":0.67320746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.69907,"y":83.40762,"z":-89.21888},"screenPosition":{"x":0.50313175,"y":0.6428318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.0589,"y":84.0169,"z":-89.735},"screenPosition":{"x":0.47279418,"y":0.63021916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.70227,"y":86.10745,"z":-90.25679},"screenPosition":{"x":0.4386071,"y":0.6529333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.67627,"y":88.69593,"z":-90.17751},"screenPosition":{"x":0.43639755,"y":0.72709185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.65326,"y":87.84235,"z":-89.40259},"screenPosition":{"x":0.48069298,"y":0.7531023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.1464,"y":81.28001,"z":-92.21982},"screenPosition":{"x":0.34030187,"y":0.4334198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.5881,"y":82.106544,"z":-92.54289},"screenPosition":{"x":0.3201099,"y":0.43618056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.82635,"y":83.12012,"z":-92.91127},"screenPosition":{"x":0.2970772,"y":0.44109544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.42316,"y":83.66304,"z":-93.38061},"screenPosition":{"x":0.26950958,"y":0.42937523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.10493,"y":84.0521,"z":-93.82803},"screenPosition":{"x":0.24366134,"y":0.41515344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.1732,"y":85.37338,"z":-94.24024},"screenPosition":{"x":0.21731682,"y":0.42511007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.04048,"y":85.97061,"z":-94.661316},"screenPosition":{"x":0.19232248,"y":0.41724145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.7868,"y":87.51211,"z":-95.14223},"screenPosition":{"x":0.16173525,"y":0.42890254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.46548,"y":88.272285,"z":-95.41852},"screenPosition":{"x":0.14469627,"y":0.43263078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.02632,"y":89.60561,"z":-95.92577},"screenPosition":{"x":0.113986336,"y":0.41716838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.08594,"y":92.5802,"z":-96.03216},"screenPosition":{"x":0.09987202,"y":0.5037132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.00095,"y":92.734055,"z":-96.05408},"screenPosition":{"x":0.098750435,"y":0.52882403},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-246.29681,"y":92.03138,"z":-95.039314},"screenPosition":{"x":0.15706943,"y":0.5630692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.48413,"y":90.7885,"z":-94.768936},"screenPosition":{"x":0.17485505,"y":0.527319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.2949,"y":90.411476,"z":-94.416565},"screenPosition":{"x":0.1954798,"y":0.53685355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.39413,"y":89.69357,"z":-93.99696},"screenPosition":{"x":0.22067802,"y":0.5417448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.74585,"y":89.42518,"z":-93.548065},"screenPosition":{"x":0.2464493,"y":0.55898255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.4406,"y":88.17026,"z":-93.18264},"screenPosition":{"x":0.26988977,"y":0.54811305},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-259.66763,"y":88.67728,"z":-92.41486},"screenPosition":{"x":0.31175354,"y":0.600769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.2588,"y":87.43145,"z":-91.88273},"screenPosition":{"x":0.34442645,"y":0.5989518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.9194,"y":85.51589,"z":-91.311195},"screenPosition":{"x":0.38097575,"y":0.5830847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.9348,"y":80.58937,"z":-91.30011},"screenPosition":{"x":0.39338058,"y":0.46532643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.73883,"y":81.11411,"z":-92.10285},"screenPosition":{"x":0.34710446,"y":0.43555441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.36108,"y":83.97098,"z":-92.47247},"screenPosition":{"x":0.31962502,"y":0.48469174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.62418,"y":86.75853,"z":-92.53355},"screenPosition":{"x":0.30958536,"y":0.5484439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.935,"y":89.10271,"z":-92.19546},"screenPosition":{"x":0.32294762,"y":0.62260485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.5392,"y":89.28384,"z":-91.71726},"screenPosition":{"x":0.34935048,"y":0.6521381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.84192,"y":88.3789,"z":-91.25236},"screenPosition":{"x":0.37747124,"y":0.6549772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.82202,"y":87.154205,"z":-90.64857},"screenPosition":{"x":0.4141858,"y":0.65741104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.84183,"y":85.30795,"z":-90.385574},"screenPosition":{"x":0.43329525,"y":0.6269291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.0136,"y":83.5492,"z":-90.09772},"screenPosition":{"x":0.45358938,"y":0.5998617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.82687,"y":82.2611,"z":-89.7089},"screenPosition":{"x":0.4784184,"y":0.5894293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.93164,"y":80.260994,"z":-89.42399},"screenPosition":{"x":0.49912128,"y":0.55640507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.88446,"y":78.1734,"z":-89.163956},"screenPosition":{"x":0.51863754,"y":0.5199707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.66046,"y":76.59577,"z":-88.397896},"screenPosition":{"x":0.56527597,"y":0.5224873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.45828,"y":80.234184,"z":-88.020164},"screenPosition":{"x":0.5777654,"y":0.62979037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.05637,"y":84.228485,"z":-88.06647},"screenPosition":{"x":0.5657057,"y":0.7233609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.12155,"y":85.92088,"z":-88.30755},"screenPosition":{"x":0.54818875,"y":0.75130266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.11105,"y":86.653786,"z":-89.08395},"screenPosition":{"x":0.5029792,"y":0.72792566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.18423,"y":86.15291,"z":-89.42326},"screenPosition":{"x":0.4851684,"y":0.69800645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.53284,"y":83.88418,"z":-89.64143},"screenPosition":{"x":0.47834128,"y":0.6319859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.89386,"y":82.50245,"z":-89.70594},"screenPosition":{"x":0.47801456,"y":0.59537596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.09048,"y":80.146225,"z":-89.948975},"screenPosition":{"x":0.46999884,"y":0.5259489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.6773,"y":78.891075,"z":-90.53552},"screenPosition":{"x":0.4401557,"y":0.46485028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.74377,"y":81.6634,"z":-91.191765},"screenPosition":{"x":0.39684755,"y":0.49682656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.39026,"y":85.75429,"z":-91.04649},"screenPosition":{"x":0.39523068,"y":0.6027798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.3803,"y":86.32766,"z":-90.32549},"screenPosition":{"x":0.4342613,"y":0.65455836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.30453,"y":82.29723,"z":-89.99404},"screenPosition":{"x":0.46236715,"y":0.57525164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.3299,"y":79.168785,"z":-89.865746},"screenPosition":{"x":0.47698027,"y":0.5068563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.27466,"y":76.903015,"z":-90.345665},"screenPosition":{"x":0.45549044,"y":0.4270952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.95953,"y":76.92097,"z":-90.964226},"screenPosition":{"x":0.42081466,"y":0.39488828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.2164,"y":78.0793,"z":-91.521225},"screenPosition":{"x":0.38687724,"y":0.3933287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.8362,"y":81.847244,"z":-91.927284},"screenPosition":{"x":0.35519347,"y":0.4624329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.25128,"y":84.7223,"z":-91.96349},"screenPosition":{"x":0.34633854,"y":0.5295995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.9207,"y":86.59582,"z":-91.726364},"screenPosition":{"x":0.35516587,"y":0.5871253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.84256,"y":88.91886,"z":-91.45994},"screenPosition":{"x":0.3645663,"y":0.6569975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.02365,"y":88.41821,"z":-90.84729},"screenPosition":{"x":0.40005758,"y":0.6772952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.14334,"y":86.39402,"z":-90.372284},"screenPosition":{"x":0.431498,"y":0.6536626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.3172,"y":90.025604,"z":-93.27892},"screenPosition":{"x":0.2600926,"y":0.5876096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.02188,"y":88.1973,"z":-93.6345},"screenPosition":{"x":0.24452624,"y":0.52492076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.97842,"y":86.27856,"z":-93.75318},"screenPosition":{"x":0.24243788,"y":0.47255796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.15706,"y":84.317535,"z":-94.015175},"screenPosition":{"x":0.2329711,"y":0.41178367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.26375,"y":83.93733,"z":-94.35302},"screenPosition":{"x":0.2152693,"y":0.36948058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.22273,"y":84.80976,"z":-95.78586},"screenPosition":{"x":0.18702489,"y":0.3827791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.63545,"y":87.96458,"z":-95.37469},"screenPosition":{"x":0.14764562,"y":0.42750838},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-244.70749,"y":91.82616,"z":-95.327415},"screenPosition":{"x":0.1411215,"y":0.52278215},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-239.44759,"y":91.738434,"z":-96.30425},"screenPosition":{"x":0.08663649,"y":0.4691315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.93823,"y":90.13058,"z":-95.77656},"screenPosition":{"x":0.12000086,"y":0.45834473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.34764,"y":88.84543,"z":-95.64949},"screenPosition":{"x":0.13016722,"y":0.43417186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.38184,"y":86.182076,"z":-96.18316},"screenPosition":{"x":0.16157536,"y":0.39531717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.88358,"y":87.70528,"z":-94.75908},"screenPosition":{"x":0.18272917,"y":0.45376068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.79303,"y":89.14133,"z":-94.6463},"screenPosition":{"x":0.18632977,"y":0.49422705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.66652,"y":91.36778,"z":-94.57145},"screenPosition":{"x":0.1845365,"y":0.5516574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.66031,"y":92.110016,"z":-94.22918},"screenPosition":{"x":0.20417503,"y":0.59072983},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-255.24773,"y":90.695335,"z":-93.31833},"screenPosition":{"x":0.25584173,"y":0.6210687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.70242,"y":89.877884,"z":-92.82855},"screenPosition":{"x":0.28566,"y":0.60782456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.3308,"y":88.92158,"z":-92.67366},"screenPosition":{"x":0.2966033,"y":0.59302074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.46664,"y":87.95323,"z":-92.42372},"screenPosition":{"x":0.312897,"y":0.58294284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.87048,"y":87.95028,"z":-92.16197},"screenPosition":{"x":0.32755968,"y":0.5966834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.21973,"y":88.59297,"z":-91.74952},"screenPosition":{"x":0.34912667,"y":0.6338879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.2879,"y":86.84331,"z":-91.29495},"screenPosition":{"x":0.37873307,"y":0.6158351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.31705,"y":86.255165,"z":-90.70717},"screenPosition":{"x":0.41303968,"y":0.6327183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.4243,"y":83.34399,"z":-90.38582},"screenPosition":{"x":0.43794587,"y":0.5797294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.46893,"y":80.90027,"z":-90.653725},"screenPosition":{"x":0.42874935,"y":0.50687987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.15253,"y":79.83829,"z":-90.85712},"screenPosition":{"x":0.4199376,"y":0.47064784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.51663,"y":78.08544,"z":-91.092766},"screenPosition":{"x":0.4108522,"y":0.41608384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.13754,"y":74.41998,"z":-91.01864},"screenPosition":{"x":0.42370754,"y":0.33192772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.689,"y":73.79571,"z":-90.145706},"screenPosition":{"x":0.4740654,"y":0.36298865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.69467,"y":77.9559,"z":-90.308975},"screenPosition":{"x":0.45504412,"y":0.45432812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.96393,"y":80.00123,"z":-90.712326},"screenPosition":{"x":0.42760321,"y":0.48218715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.81323,"y":80.99367,"z":-91.15236},"screenPosition":{"x":0.40060866,"y":0.4828133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.0,"y":82.28177,"z":-91.54118},"screenPosition":{"x":0.37577963,"y":0.49324566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.96777,"y":83.24103,"z":-91.957825},"screenPosition":{"x":0.35017365,"y":0.49430895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.10306,"y":84.80366,"z":-92.36708},"screenPosition":{"x":0.3235483,"y":0.5102588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.81833,"y":85.31339,"z":-92.81303},"screenPosition":{"x":0.29736924,"y":0.4989757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.01065,"y":85.3193,"z":-93.33653},"screenPosition":{"x":0.26804388,"y":0.47149467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.3084,"y":83.86507,"z":-93.78272},"screenPosition":{"x":0.24651547,"y":0.41301185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.54352,"y":80.09788,"z":-94.421715},"screenPosition":{"x":0.27459344,"y":0.34154853},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-255.87216,"y":78.685394,"z":-92.72756},"screenPosition":{"x":0.31789485,"y":0.34423852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.48193,"y":77.58433,"z":-92.384056},"screenPosition":{"x":0.33974284,"y":0.3359092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.0886,"y":76.85437,"z":-91.86941},"screenPosition":{"x":0.37039647,"y":0.34563202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.6699,"y":79.25286,"z":-91.48306},"screenPosition":{"x":0.386227,"y":0.4235389},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-258.20343,"y":79.72328,"z":-92.334076},"screenPosition":{"x":0.3374616,"y":0.38993782},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-253.80644,"y":79.52397,"z":-93.14568},"screenPosition":{"x":0.29329184,"y":0.33274466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.7711,"y":80.85435,"z":-93.39119},"screenPosition":{"x":0.2753821,"y":0.34117723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.27426,"y":83.20443,"z":-93.576614},"screenPosition":{"x":0.25962427,"y":0.40801424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.59193,"y":85.34634,"z":-93.78839},"screenPosition":{"x":0.24268034,"y":0.44830236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.60562,"y":87.31326,"z":-94.049904},"screenPosition":{"x":0.22336702,"y":0.4817616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.7744,"y":88.99657,"z":-94.45768},"screenPosition":{"x":0.19653776,"y":0.50068873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.81474,"y":88.91498,"z":-95.006065},"screenPosition":{"x":0.1660277,"y":0.46979323},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-090044/brain-CB3DCC-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.26748022367774693,0.9634911684926348,0.011793989062216556,0.0,0.9460104809979804,0.26491360515133144,-0.1867751365886111,0.0,-0.18308058275871952,-0.03880141804653103,-0.9823318941041801,0.0,-296.207761800379,72.73558970305157,-202.866881821383,1.0]},"baseImage":"20190823-090044/base.webp","version":0,"savedAt":1.566551109048E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-090910-v0.json b/data/mapping/BAAAHS/dwayman/20190823-090910-v0.json new file mode 100644 index 0000000000..ae8df644b8 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-090910-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566551350925E12,"surfaces":[{"brainId":"CB971C","panelName":"36D","pixels":[{"modelPosition":{"x":-360.9911,"y":121.092545,"z":-105.889496},"screenPosition":{"x":0.028891208,"y":0.971109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.1862,"y":122.6124,"z":-105.23761},"screenPosition":{"x":0.066570126,"y":0.9334301},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-356.9738,"y":126.24054,"z":-103.661064},"screenPosition":{"x":0.21448354,"y":0.8438792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.6981,"y":127.51396,"z":-103.105385},"screenPosition":{"x":0.26506007,"y":0.8088424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.0606,"y":128.76927,"z":-102.5516},"screenPosition":{"x":0.3314372,"y":0.77357143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.83176,"y":129.77213,"z":-102.094635},"screenPosition":{"x":0.42404547,"y":0.7436945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.71362,"y":129.28177,"z":-102.25157},"screenPosition":{"x":0.56008273,"y":0.7504943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.32452,"y":128.09787,"z":-102.7275},"screenPosition":{"x":0.6239435,"y":0.778309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.86743,"y":126.52622,"z":-103.34962},"screenPosition":{"x":0.73511386,"y":0.81407744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.2716,"y":124.04477,"z":-104.38375},"screenPosition":{"x":0.76921326,"y":0.87669295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.7786,"y":121.28419,"z":-105.552704},"screenPosition":{"x":0.75669974,"y":0.9485034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.89264,"y":120.164154,"z":-106.05713},"screenPosition":{"x":0.6694111,"y":0.9861918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.9632,"y":120.51059,"z":-107.06071},"screenPosition":{"x":0.49347377,"y":0.98982096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.1351,"y":121.65232,"z":-105.51414},"screenPosition":{"x":0.43842685,"y":0.95270807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.3637,"y":124.84542,"z":-104.15912},"screenPosition":{"x":0.46090195,"y":0.8692808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.88205,"y":126.05849,"z":-103.60976},"screenPosition":{"x":0.56372607,"y":0.8335422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.55582,"y":126.61071,"z":-103.34077},"screenPosition":{"x":0.662099,"y":0.8150604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.56778,"y":127.00702,"z":-103.158485},"screenPosition":{"x":0.70333743,"y":0.80305237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.1657,"y":128.38556,"z":-102.5566},"screenPosition":{"x":0.75909853,"y":0.76506025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.09058,"y":130.44908,"z":-101.671814},"screenPosition":{"x":0.7984534,"y":0.71009004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.13605,"y":132.51863,"z":-100.7864},"screenPosition":{"x":0.8325907,"y":0.6551888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.44592,"y":134.15567,"z":-100.08705},"screenPosition":{"x":0.85679513,"y":0.611882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.6062,"y":136.3424,"z":-99.15417},"screenPosition":{"x":0.8855893,"y":0.5541855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.65747,"y":138.30081,"z":-98.31558},"screenPosition":{"x":0.9447146,"y":0.50516665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.13885,"y":141.28369,"z":-97.05297},"screenPosition":{"x":0.9531393,"y":0.42818746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.4935,"y":143.75308,"z":-96.020096},"screenPosition":{"x":0.9084817,"y":0.3618742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.42715,"y":145.46002,"z":-95.34862},"screenPosition":{"x":0.77628404,"y":0.32349938},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-346.3922,"y":141.31235,"z":-97.15554},"screenPosition":{"x":0.619436,"y":0.43733788},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-347.59958,"y":139.03258,"z":-98.13336},"screenPosition":{"x":0.5751493,"y":0.49830946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.40482,"y":138.13132,"z":-98.50929},"screenPosition":{"x":0.5865544,"y":0.5208806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.12335,"y":139.51588,"z":-97.90678},"screenPosition":{"x":0.6370979,"y":0.4829574},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-342.31955,"y":142.89156,"z":-96.427055},"screenPosition":{"x":0.7896073,"y":0.38923687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.7137,"y":142.7271,"z":-96.54986},"screenPosition":{"x":0.6080385,"y":0.3919619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.0827,"y":140.29391,"z":-97.57894},"screenPosition":{"x":0.63620377,"y":0.46313593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.24356,"y":138.90332,"z":-98.18209},"screenPosition":{"x":0.5909114,"y":0.5009336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.89474,"y":136.32278,"z":-99.261795},"screenPosition":{"x":0.61465144,"y":0.56636226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.0461,"y":134.05156,"z":-100.20353},"screenPosition":{"x":0.6589035,"y":0.6230937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.38232,"y":131.18234,"z":-101.38386},"screenPosition":{"x":0.7402824,"y":0.69367385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.01953,"y":134.12297,"z":-100.12566},"screenPosition":{"x":0.7890176,"y":0.61569905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.76126,"y":135.06296,"z":-99.71049},"screenPosition":{"x":0.8400642,"y":0.5892277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.9953,"y":137.5263,"z":-98.678246},"screenPosition":{"x":0.82172257,"y":0.5263712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.29938,"y":139.27449,"z":-97.93206},"screenPosition":{"x":0.8458014,"y":0.48020023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.68304,"y":141.18814,"z":-97.13336},"screenPosition":{"x":0.82276064,"y":0.43184024},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-342.0524,"y":148.00435,"z":-94.272705},"screenPosition":{"x":0.7485627,"y":0.25143775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.0374,"y":147.85347,"z":-94.288506},"screenPosition":{"x":0.9142709,"y":0.25576296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.53897,"y":145.82263,"z":-95.134674},"screenPosition":{"x":0.9658947,"y":0.3116366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.3912,"y":143.29103,"z":-97.28193},"screenPosition":{"x":0.9582305,"y":0.38166744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.5297,"y":140.74606,"z":-97.28524},"screenPosition":{"x":0.95152,"y":0.44298315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.55838,"y":139.57172,"z":-97.79536},"screenPosition":{"x":0.8765515,"y":0.4713841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.27753,"y":137.37895,"z":-98.72887},"screenPosition":{"x":0.8530971,"y":0.52887404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.25528,"y":134.8648,"z":-99.80162},"screenPosition":{"x":0.8195186,"y":0.5951796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.41617,"y":133.4742,"z":-100.40477},"screenPosition":{"x":0.7741927,"y":0.6330339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.80826,"y":134.41266,"z":-100.09532},"screenPosition":{"x":0.5386713,"y":0.618989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.65973,"y":136.81818,"z":-99.03395},"screenPosition":{"x":0.66619945,"y":0.55135226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.06134,"y":130.00648,"z":-101.9997},"screenPosition":{"x":0.41338265,"y":0.7381051},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.31143,"y":125.84575,"z":-103.73762},"screenPosition":{"x":0.4597432,"y":0.84352595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.59872,"y":124.35003,"z":-104.38696},"screenPosition":{"x":0.40932527,"y":0.8843133},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-356.6147,"y":121.54217,"z":-105.63125},"screenPosition":{"x":0.24575281,"y":0.9638509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.4056,"y":125.54348,"z":-103.94523},"screenPosition":{"x":0.24123235,"y":0.86074173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.51706,"y":125.28749,"z":-104.00724},"screenPosition":{"x":0.36658004,"y":0.86195153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.22568,"y":125.17283,"z":-104.01925},"screenPosition":{"x":0.46575028,"y":0.8606148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.40063,"y":123.075615,"z":-104.872375},"screenPosition":{"x":0.55145586,"y":0.9110936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.9353,"y":122.09943,"z":-105.29135},"screenPosition":{"x":0.5317156,"y":0.93714666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.29883,"y":120.396,"z":-105.99765},"screenPosition":{"x":0.56608367,"y":0.9883232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.1578,"y":120.96885,"z":-105.69131},"screenPosition":{"x":0.7414012,"y":0.9572645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.95963,"y":123.51065,"z":-104.65085},"screenPosition":{"x":0.65517366,"y":0.8953704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.38358,"y":124.027664,"z":-104.455925},"screenPosition":{"x":0.5920664,"y":0.88476485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.31143,"y":125.84575,"z":-103.73762},"screenPosition":{"x":0.4597432,"y":0.84352595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.743,"y":129.34464,"z":-102.2098},"screenPosition":{"x":0.6016919,"y":0.74707913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.99347,"y":125.802505,"z":-103.67176},"screenPosition":{"x":0.68906593,"y":0.8347647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.5804,"y":123.82599,"z":-104.512245},"screenPosition":{"x":0.6704558,"y":0.8865951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.82877,"y":121.38678,"z":-105.541954},"screenPosition":{"x":0.6680007,"y":0.9496752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.74545,"y":120.229546,"z":-105.9799},"screenPosition":{"x":0.80398226,"y":0.98341596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.96417,"y":121.923416,"z":-105.2394},"screenPosition":{"x":0.8986433,"y":0.92613703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.013,"y":125.127144,"z":-104.96202},"screenPosition":{"x":0.9066655,"y":0.8528355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.68576,"y":127.39412,"z":-104.00349},"screenPosition":{"x":0.91310114,"y":0.7940305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.8453,"y":128.82663,"z":-102.33444},"screenPosition":{"x":0.8576048,"y":0.7494299},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-344.92725,"y":132.32399,"z":-100.91236},"screenPosition":{"x":0.7129629,"y":0.6653666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.8216,"y":132.46883,"z":-100.89719},"screenPosition":{"x":0.5877408,"y":0.6670209},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.8666,"y":129.10524,"z":-102.37564},"screenPosition":{"x":0.4248016,"y":0.7608789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.4502,"y":126.75555,"z":-103.32559},"screenPosition":{"x":0.5368769,"y":0.8167147},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-345.2265,"y":131.2246,"z":-101.37943},"screenPosition":{"x":0.7037834,"y":0.6941459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.8609,"y":134.03093,"z":-100.24088},"screenPosition":{"x":0.58076525,"y":0.6269918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.0081,"y":133.96555,"z":-100.318115},"screenPosition":{"x":0.4453591,"y":0.63451225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.1454,"y":132.40092,"z":-101.00987},"screenPosition":{"x":0.33002955,"y":0.66997075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.77878,"y":129.53523,"z":-102.22502},"screenPosition":{"x":0.34093806,"y":0.7533897},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-352.66434,"y":130.03665,"z":-101.996544},"screenPosition":{"x":0.38735336,"y":0.7384518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.101,"y":132.1872,"z":-101.06745},"screenPosition":{"x":0.4473682,"y":0.6803386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.9637,"y":133.7518,"z":-100.375694},"screenPosition":{"x":0.5341837,"y":0.6362046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.1178,"y":135.43109,"z":-99.67192},"screenPosition":{"x":0.52186495,"y":0.5933803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.28967,"y":137.39554,"z":-98.8327},"screenPosition":{"x":0.55091023,"y":0.5414121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.31772,"y":139.79854,"z":-97.806786},"screenPosition":{"x":0.58469945,"y":0.4781538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.5149,"y":140.21547,"z":-97.58716},"screenPosition":{"x":0.70404756,"y":0.4620123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.80945,"y":141.08302,"z":-97.17956},"screenPosition":{"x":0.8177044,"y":0.43471855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.71283,"y":141.86961,"z":-96.815636},"screenPosition":{"x":0.905303,"y":0.41074544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.10266,"y":144.29071,"z":-95.78782},"screenPosition":{"x":0.9614685,"y":0.35208008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.6189,"y":146.6067,"z":-94.806206},"screenPosition":{"x":0.96803725,"y":0.2920593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.1915,"y":149.53275,"z":-93.58473},"screenPosition":{"x":0.9017427,"y":0.21333161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.8632,"y":151.1879,"z":-92.88349},"screenPosition":{"x":0.9105038,"y":0.1698386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.5465,"y":152.62074,"z":-92.27592},"screenPosition":{"x":0.9193066,"y":0.13246687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.7819,"y":152.74396,"z":-92.22782},"screenPosition":{"x":0.8745602,"y":0.12544033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.19016,"y":151.87288,"z":-92.60059},"screenPosition":{"x":0.89377135,"y":0.15356086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.1621,"y":149.46988,"z":-93.62651},"screenPosition":{"x":0.860337,"y":0.21635422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.81982,"y":148.01541,"z":-94.201164},"screenPosition":{"x":0.97219765,"y":0.25404394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.37762,"y":150.31319,"z":-94.31281},"screenPosition":{"x":0.9813746,"y":0.19962016},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-337.47717,"y":154.57312,"z":-91.437965},"screenPosition":{"x":0.99045664,"y":0.087205306},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-090910/brain-CB971C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9987365729851845,0.049978484329309625,0.005235349649625173,0.0,0.04809478095594663,0.920465465029726,0.3878533482289533,0.0,0.014565363936695563,0.3876151168256408,-0.9217062283513311,0.0,-345.7549727256477,172.60453807268968,-205.1220513341807,1.0]},"baseImage":"20190823-090910/base.webp","version":0,"savedAt":1.566551407425E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-091227-v0.json b/data/mapping/BAAAHS/dwayman/20190823-091227-v0.json new file mode 100644 index 0000000000..03bb1d3dc4 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-091227-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566551547159E12,"surfaces":[{"brainId":"CB72C0","panelName":"33D","pixels":[{"modelPosition":{"x":-337.6554,"y":120.05137,"z":-103.512665},"screenPosition":{"x":0.92754894,"y":0.45539746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.96426,"y":121.438576,"z":-102.6218},"screenPosition":{"x":0.8718467,"y":0.46628186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.63687,"y":122.79395,"z":-101.34716},"screenPosition":{"x":0.8148841,"y":0.44961345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.52158,"y":124.159935,"z":-100.20044},"screenPosition":{"x":0.7601061,"y":0.44099435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.3932,"y":125.40678,"z":-99.08532},"screenPosition":{"x":0.70855814,"y":0.43091092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.18497,"y":126.88659,"z":-97.84304},"screenPosition":{"x":0.65126693,"y":0.42268184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.12207,"y":128.72913,"z":-96.56995},"screenPosition":{"x":0.58975756,"y":0.42416245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.01987,"y":130.21425,"z":-95.39163},"screenPosition":{"x":0.53715307,"y":0.4190304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.28818,"y":132.19183,"z":-94.27883},"screenPosition":{"x":0.48140144,"y":0.4309816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.89407,"y":133.89932,"z":-92.845436},"screenPosition":{"x":0.42187825,"y":0.42197528},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-329.7559,"y":139.32422,"z":-92.19123},"screenPosition":{"x":0.33843425,"y":0.54761386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.47232,"y":140.05257,"z":-93.63237},"screenPosition":{"x":0.36346442,"y":0.6264485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.39664,"y":138.37161,"z":-95.38559},"screenPosition":{"x":0.43198255,"y":0.6529719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.93698,"y":135.14958,"z":-96.1747},"screenPosition":{"x":0.4958815,"y":0.5948523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.21796,"y":131.983,"z":-96.16463},"screenPosition":{"x":0.5359873,"y":0.5029626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.71234,"y":132.21306,"z":-94.53469},"screenPosition":{"x":0.48810086,"y":0.44207463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.84167,"y":133.42276,"z":-92.97182},"screenPosition":{"x":0.43104923,"y":0.41341943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.24384,"y":135.62563,"z":-93.10672},"screenPosition":{"x":0.4077645,"y":0.4816687},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-330.81247,"y":142.22067,"z":-91.8807},"screenPosition":{"x":0.28879175,"y":0.6139303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.97253,"y":142.68422,"z":-93.06521},"screenPosition":{"x":0.30913103,"y":0.67715436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.0358,"y":141.77116,"z":-95.2685},"screenPosition":{"x":0.3779545,"y":0.7480836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.23856,"y":138.81924,"z":-96.378204},"screenPosition":{"x":0.4513609,"y":0.7091865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.21326,"y":136.70367,"z":-95.82792},"screenPosition":{"x":0.46636844,"y":0.6243892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.03885,"y":137.0688,"z":-94.358284},"screenPosition":{"x":0.42266595,"y":0.57338357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.08835,"y":138.51147,"z":-92.66826},"screenPosition":{"x":0.36075944,"y":0.5444873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.1513,"y":141.00276,"z":-91.87683},"screenPosition":{"x":0.30762878,"y":0.5805656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.37717,"y":143.35448,"z":-92.45576},"screenPosition":{"x":0.26650703,"y":0.6270917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.2932,"y":145.13837,"z":-91.82603},"screenPosition":{"x":0.24016805,"y":0.6946565},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-334.8686,"y":152.25772,"z":-91.04931},"screenPosition":{"x":0.08994191,"y":0.8624551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.52975,"y":153.47563,"z":-91.053185},"screenPosition":{"x":0.06859268,"y":0.8951039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.56647,"y":151.39482,"z":-92.38947},"screenPosition":{"x":0.16276027,"y":0.9309852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.54407,"y":148.31316,"z":-93.40284},"screenPosition":{"x":0.22581577,"y":0.865194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.0266,"y":147.47627,"z":-92.12122},"screenPosition":{"x":0.20673181,"y":0.7787568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.1707,"y":148.78679,"z":-91.773674},"screenPosition":{"x":0.17535429,"y":0.8036244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.63034,"y":152.00883,"z":-90.98457},"screenPosition":{"x":0.094788626,"y":0.85504323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.9446,"y":150.53433,"z":-92.29082},"screenPosition":{"x":0.16194515,"y":0.88220143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.55716,"y":148.43228,"z":-93.37125},"screenPosition":{"x":0.22327952,"y":0.86735594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.08987,"y":146.56322,"z":-94.32452},"screenPosition":{"x":0.28779256,"y":0.8779679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.6095,"y":144.57501,"z":-95.30939},"screenPosition":{"x":0.34195504,"y":0.85500145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.90393,"y":142.45706,"z":-96.19792},"screenPosition":{"x":0.3973426,"y":0.8315155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.5765,"y":139.4786,"z":-96.9878},"screenPosition":{"x":0.45803523,"y":0.7566996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.80643,"y":139.2215,"z":-95.356316},"screenPosition":{"x":0.4188274,"y":0.6761304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.7959,"y":141.54059,"z":-93.95684},"screenPosition":{"x":0.34865144,"y":0.6826792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.40942,"y":141.8951,"z":-92.359276},"screenPosition":{"x":0.30495346,"y":0.62474555},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-329.164,"y":135.8586,"z":-92.97956},"screenPosition":{"x":0.40161195,"y":0.4831174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.63507,"y":134.88426,"z":-92.97646},"screenPosition":{"x":0.41334036,"y":0.4553483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.3342,"y":133.07356,"z":-94.633354},"screenPosition":{"x":0.47998473,"y":0.4710149},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.30325,"y":133.22214,"z":-96.42436},"screenPosition":{"x":0.5273221,"y":0.54988515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.39914,"y":136.47601,"z":-96.01904},"screenPosition":{"x":0.47447193,"y":0.6259939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.43976,"y":140.21945,"z":-94.17646},"screenPosition":{"x":0.374265,"y":0.6540945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.82388,"y":138.0243,"z":-92.66671},"screenPosition":{"x":0.36691755,"y":0.5309964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.00046,"y":134.8341,"z":-93.8396},"screenPosition":{"x":0.43679473,"y":0.48898095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.1225,"y":133.99243,"z":-95.435616},"screenPosition":{"x":0.4902961,"y":0.53070074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.3662,"y":135.71342,"z":-95.632935},"screenPosition":{"x":0.47393456,"y":0.5881419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.98395,"y":138.48784,"z":-93.85121},"screenPosition":{"x":0.39127538,"y":0.5921335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.77295,"y":124.52796,"z":-100.23358},"screenPosition":{"x":0.7559175,"y":0.45377547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.5025,"y":125.37545,"z":-101.64313},"screenPosition":{"x":0.7876489,"y":0.5420574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.19656,"y":127.35595,"z":-102.03311},"screenPosition":{"x":0.77148944,"y":0.6200819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.90088,"y":130.4217,"z":-100.82785},"screenPosition":{"x":0.6917027,"y":0.6583584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.30777,"y":132.2377,"z":-99.23493},"screenPosition":{"x":0.6200477,"y":0.6417803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.43292,"y":131.0275,"z":-97.85621},"screenPosition":{"x":0.59631264,"y":0.54659724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.06332,"y":128.65775,"z":-97.17722},"screenPosition":{"x":0.60814446,"y":0.4475683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.88794,"y":126.56632,"z":-98.38558},"screenPosition":{"x":0.67165476,"y":0.4361191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.05814,"y":123.781296,"z":-100.03937},"screenPosition":{"x":0.7604945,"y":0.42229533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.43155,"y":123.30765,"z":-101.66853},"screenPosition":{"x":0.8175764,"y":0.4797938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.2933,"y":124.39872,"z":-103.07885},"screenPosition":{"x":0.8445688,"y":0.5774181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.4361,"y":126.657036,"z":-102.41457},"screenPosition":{"x":0.79341996,"y":0.61598784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.14166,"y":128.775,"z":-101.52604},"screenPosition":{"x":0.7357678,"y":0.64024115},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-334.62006,"y":129.85204,"z":-98.36405},"screenPosition":{"x":0.6266214,"y":0.53363526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.69574,"y":131.53297,"z":-96.61083},"screenPosition":{"x":0.55430007,"y":0.50856435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.22852,"y":133.99774,"z":-95.49958},"screenPosition":{"x":0.49197695,"y":0.5335186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.33878,"y":136.42296,"z":-95.379395},"screenPosition":{"x":0.45797712,"y":0.5976029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.5094,"y":138.90123,"z":-95.89886},"screenPosition":{"x":0.43755835,"y":0.69044733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.09613,"y":137.4904,"z":-97.97267},"screenPosition":{"x":0.5137355,"y":0.7409751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.69684,"y":134.32143,"z":-99.40142},"screenPosition":{"x":0.59726745,"y":0.7101295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.2554,"y":131.76115,"z":-99.36131},"screenPosition":{"x":0.6301036,"y":0.6333005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.73795,"y":130.92427,"z":-98.0797},"screenPosition":{"x":0.6041056,"y":0.55313337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.93277,"y":132.72968,"z":-96.35885},"screenPosition":{"x":0.5318125,"y":0.5328422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.20108,"y":134.70726,"z":-95.24605},"screenPosition":{"x":0.47616202,"y":0.54333055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.06506,"y":137.30708,"z":-94.2951},"screenPosition":{"x":0.41795483,"y":0.5774452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.30243,"y":139.43324,"z":-94.973305},"screenPosition":{"x":0.40594026,"y":0.66570485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.55032,"y":139.24033,"z":-97.050995},"screenPosition":{"x":0.46325234,"y":0.7522866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.13794,"y":135.95221,"z":-98.51134},"screenPosition":{"x":0.5500848,"y":0.718881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.76996,"y":133.56415,"z":-99.07928},"screenPosition":{"x":0.59795165,"y":0.67376524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.42654,"y":131.43266,"z":-98.337105},"screenPosition":{"x":0.60478425,"y":0.579171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.22845,"y":129.66391,"z":-97.56411},"screenPosition":{"x":0.60595495,"y":0.49385557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.5488,"y":131.18858,"z":-95.39473},"screenPosition":{"x":0.52474856,"y":0.44770625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.1614,"y":133.42036,"z":-94.41064},"screenPosition":{"x":0.4696133,"y":0.4718576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.7089,"y":135.98595,"z":-94.51471},"screenPosition":{"x":0.4406157,"y":0.5494826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.92007,"y":137.87384,"z":-95.25611},"screenPosition":{"x":0.435834,"y":0.6334244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.77002,"y":137.89796,"z":-97.01475},"screenPosition":{"x":0.4816676,"y":0.7101151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.85364,"y":134.8216,"z":-98.09209},"screenPosition":{"x":0.5532719,"y":0.6673073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.79706,"y":131.92514,"z":-98.40262},"screenPosition":{"x":0.60014725,"y":0.5964609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.55426,"y":132.66069,"z":-95.527306},"screenPosition":{"x":0.50965494,"y":0.49605536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.81656,"y":135.97293,"z":-95.8256},"screenPosition":{"x":0.47576833,"y":0.60355794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.21875,"y":138.1758,"z":-95.960495},"screenPosition":{"x":0.44968128,"y":0.6720238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.0412,"y":138.90944,"z":-97.4656},"screenPosition":{"x":0.47941035,"y":0.7612014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.30273,"y":136.0289,"z":-97.968025},"screenPosition":{"x":0.5338151,"y":0.6970127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.1034,"y":135.20795,"z":-96.8783},"screenPosition":{"x":0.5143885,"y":0.62626785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.55338,"y":134.53796,"z":-96.14078},"screenPosition":{"x":0.50272423,"y":0.57590723},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-334.80594,"y":129.62437,"z":-98.55517},"screenPosition":{"x":0.6352487,"y":0.53509855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.03586,"y":129.36726,"z":-96.92368},"screenPosition":{"x":0.5914777,"y":0.45796043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.73593,"y":130.0131,"z":-95.90257},"screenPosition":{"x":0.55406386,"y":0.43430045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.6925,"y":131.56961,"z":-94.11699},"screenPosition":{"x":0.48480448,"y":0.40632263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.76218,"y":134.58522,"z":-93.774864},"screenPosition":{"x":0.43813008,"y":0.4792359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.75452,"y":131.60435,"z":-96.003555},"screenPosition":{"x":0.5363598,"y":0.48517624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.74356,"y":128.66014,"z":-95.7384},"screenPosition":{"x":0.56700623,"y":0.3874941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.06644,"y":128.28922,"z":-94.202484},"screenPosition":{"x":0.52873564,"y":0.31359035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.6672,"y":129.45406,"z":-93.56671},"screenPosition":{"x":0.4964082,"y":0.32223955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.28018,"y":132.61533,"z":-93.51281},"screenPosition":{"x":0.45543244,"y":0.4120511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.20575,"y":129.98659,"z":-95.582756},"screenPosition":{"x":0.5454287,"y":0.4202435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.474,"y":127.63035,"z":-96.53448},"screenPosition":{"x":0.60324204,"y":0.38992044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.37314,"y":124.16575,"z":-103.206},"screenPosition":{"x":0.8517048,"y":0.5760761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.10574,"y":120.310875,"z":-103.70533},"screenPosition":{"x":0.9348799,"y":0.46759772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.50223,"y":119.775795,"z":-103.492645},"screenPosition":{"x":0.90009165,"y":0.40970257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.26093,"y":120.82937,"z":-101.14907},"screenPosition":{"x":0.83616495,"y":0.38055795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.55246,"y":119.67753,"z":-100.47396},"screenPosition":{"x":0.8396274,"y":0.30907708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.34512,"y":119.28006,"z":-98.61821},"screenPosition":{"x":0.7847146,"y":0.21769032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.3697,"y":119.53666,"z":-97.3081},"screenPosition":{"x":0.736397,"y":0.17407812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.22275,"y":119.19225,"z":-96.091995},"screenPosition":{"x":0.7043234,"y":0.11328417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.8941,"y":121.49542,"z":-94.500626},"screenPosition":{"x":0.62600756,"y":0.12052795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.44797,"y":123.65583,"z":-94.12381},"screenPosition":{"x":0.5865687,"y":0.17148803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.71664,"y":126.562904,"z":-93.9412},"screenPosition":{"x":0.5436175,"y":0.2517121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.16736,"y":127.751884,"z":-95.06407},"screenPosition":{"x":0.5597711,"y":0.3327411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.59314,"y":127.7548,"z":-96.56685},"screenPosition":{"x":0.6025263,"y":0.3949931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.55673,"y":126.43127,"z":-98.22528},"screenPosition":{"x":0.66873866,"y":0.4251914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.64584,"y":124.827,"z":-99.43519},"screenPosition":{"x":0.7272386,"y":0.42827454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.18527,"y":123.48225,"z":-100.83776},"screenPosition":{"x":0.7896016,"y":0.44794515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.5672,"y":119.77835,"z":-101.689285},"screenPosition":{"x":0.8744291,"y":0.36699456},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-327.47574,"y":119.54196,"z":-97.37206},"screenPosition":{"x":0.7382769,"y":0.17689857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.92865,"y":122.23969,"z":-96.13366},"screenPosition":{"x":0.6638263,"y":0.2096964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.13858,"y":125.075386,"z":-96.558334},"screenPosition":{"x":0.63800526,"y":0.31394383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.88248,"y":125.09421,"z":-98.253006},"screenPosition":{"x":0.68785596,"y":0.38576102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.7113,"y":125.4227,"z":-99.277214},"screenPosition":{"x":0.7141399,"y":0.43966937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.5321,"y":121.84084,"z":-101.59992},"screenPosition":{"x":0.83548516,"y":0.43216246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.36823,"y":119.88688,"z":-101.52976},"screenPosition":{"x":0.8707591,"y":0.36088693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.28,"y":119.61385,"z":-99.70638},"screenPosition":{"x":0.8176476,"y":0.27249795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.67487,"y":119.45103,"z":-99.3686},"screenPosition":{"x":0.78115004,"y":0.21175814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.69965,"y":120.619514,"z":-97.15167},"screenPosition":{"x":0.71653247,"y":0.20148404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.8885,"y":123.75956,"z":-96.84191},"screenPosition":{"x":0.66412073,"y":0.28563428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.90067,"y":125.755974,"z":-97.42379},"screenPosition":{"x":0.6542201,"y":0.37078542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.82498,"y":124.07503,"z":-99.17701},"screenPosition":{"x":0.72988564,"y":0.39406154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.43753,"y":121.97299,"z":-100.25744},"screenPosition":{"x":0.7930921,"y":0.37560922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.09576,"y":119.8232,"z":-100.762184},"screenPosition":{"x":0.8487762,"y":0.32430267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.06793,"y":119.60324,"z":-99.57845},"screenPosition":{"x":0.81398433,"y":0.26640144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.82962,"y":119.41082,"z":-98.85802},"screenPosition":{"x":0.764015,"y":0.18982172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.76514,"y":121.2152,"z":-96.9937},"screenPosition":{"x":0.70351076,"y":0.21347874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.9945,"y":123.76486,"z":-96.905876},"screenPosition":{"x":0.66594106,"y":0.28845865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.4727,"y":124.24432,"z":-98.28228},"screenPosition":{"x":0.70043916,"y":0.361025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.1562,"y":124.21009,"z":-99.3373},"screenPosition":{"x":0.73288536,"y":0.40511468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.07376,"y":122.00483,"z":-100.64123},"screenPosition":{"x":0.80462193,"y":0.39341843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.87222,"y":119.67513,"z":-101.91277},"screenPosition":{"x":0.87992954,"y":0.37614855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.13242,"y":119.80577,"z":-103.8733},"screenPosition":{"x":0.9160503,"y":0.42372984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.12775,"y":119.90069,"z":-105.07857},"screenPosition":{"x":0.9582653,"y":0.4752395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.76978,"y":120.56267,"z":-105.27285},"screenPosition":{"x":0.9683487,"y":0.5893924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.03174,"y":122.945435,"z":-104.640945},"screenPosition":{"x":0.91127264,"y":0.6135943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.93463,"y":124.97318,"z":-102.665016},"screenPosition":{"x":0.82443684,"y":0.576011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.0754,"y":121.98651,"z":-101.888145},"screenPosition":{"x":0.84234476,"y":0.44953308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.84128,"y":119.82371,"z":-103.70378},"screenPosition":{"x":0.9312102,"y":0.46149063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.35873,"y":120.66058,"z":-104.9854},"screenPosition":{"x":0.9530505,"y":0.5504082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.67307,"y":123.5199,"z":-104.22711},"screenPosition":{"x":0.89378947,"y":0.6210077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.27893,"y":125.22738,"z":-102.79372},"screenPosition":{"x":0.82480764,"y":0.5896217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.87936,"y":125.462746,"z":-101.227745},"screenPosition":{"x":0.7734372,"y":0.52625686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.15234,"y":122.71966,"z":-100.45165},"screenPosition":{"x":0.7884561,"y":0.40734592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.61447,"y":119.71227,"z":-102.36053},"screenPosition":{"x":0.89274967,"y":0.39748394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.06644,"y":119.95346,"z":-103.80012},"screenPosition":{"x":0.934875,"y":0.4675896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.42422,"y":121.25627,"z":-104.82742},"screenPosition":{"x":0.9403621,"y":0.56129366},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-091227/brain-CB72C0-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.8554880654528034,0.042810084290143074,-0.5160498682791133,0.0,-0.1056635216444452,0.9611765705766641,0.25490158957561854,0.0,0.5069274011744809,0.27259291417341364,-0.8177516206531983,0.0,-278.9680577639108,165.1262762501818,-192.25921326439334,1.0]},"baseImage":"20190823-091227/base.webp","version":0,"savedAt":1.56655163634E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-093429-v0.json b/data/mapping/BAAAHS/dwayman/20190823-093429-v0.json new file mode 100644 index 0000000000..b82e61c549 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-093429-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566552869062E12,"surfaces":[{"brainId":"CB6B64","panelName":"17D","pixels":[{"modelPosition":{"x":-173.69313,"y":108.51537,"z":-106.139},"screenPosition":{"x":0.5326373,"y":0.9413512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.74777,"y":106.19403,"z":-106.139},"screenPosition":{"x":0.5209193,"y":0.88717544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.28893,"y":103.60856,"z":-106.139},"screenPosition":{"x":0.5152547,"y":0.8263703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.16075,"y":101.79834,"z":-106.139},"screenPosition":{"x":0.50126034,"y":0.78411114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.12135,"y":100.64252,"z":-106.139},"screenPosition":{"x":0.4884315,"y":0.75683784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.08212,"y":98.09134,"z":-106.139},"screenPosition":{"x":0.4631955,"y":0.69706434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.6107,"y":96.27366,"z":-106.139},"screenPosition":{"x":0.44490647,"y":0.6545664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.655,"y":96.19677,"z":-106.139},"screenPosition":{"x":0.42067188,"y":0.6527731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.04031,"y":94.65069,"z":-106.139},"screenPosition":{"x":0.40067038,"y":0.6165226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.81827,"y":92.610634,"z":-106.139},"screenPosition":{"x":0.37332246,"y":0.5686692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.57431,"y":89.61776,"z":-106.139},"screenPosition":{"x":0.3701233,"y":0.49851722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.07117,"y":87.10917,"z":-106.139},"screenPosition":{"x":0.38866514,"y":0.43969917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.51115,"y":85.44525,"z":-106.139},"screenPosition":{"x":0.41888997,"y":0.4006859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.82503,"y":84.84313,"z":-106.139},"screenPosition":{"x":0.44760296,"y":0.3866524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.93892,"y":83.96194,"z":-106.139},"screenPosition":{"x":0.47373804,"y":0.36590716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.53934,"y":82.81661,"z":-106.139},"screenPosition":{"x":0.50597423,"y":0.33918482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.2479,"y":84.59253,"z":-106.139},"screenPosition":{"x":0.53950185,"y":0.38069862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.63002,"y":87.73836,"z":-106.139},"screenPosition":{"x":0.5318479,"y":0.45445156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.50594,"y":89.46866,"z":-106.139},"screenPosition":{"x":0.48076272,"y":0.49502218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.25148,"y":90.11558,"z":-106.139},"screenPosition":{"x":0.4776118,"y":0.51019067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.55244,"y":90.86844,"z":-106.139},"screenPosition":{"x":0.45656332,"y":0.52784145},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-163.99619,"y":93.33223,"z":-106.139},"screenPosition":{"x":0.41251087,"y":0.5856091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.63751,"y":95.99377,"z":-106.139},"screenPosition":{"x":0.38329336,"y":0.64801335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.41035,"y":94.37827,"z":-106.139},"screenPosition":{"x":0.34331778,"y":0.6101353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.17387,"y":91.04215,"z":-106.139},"screenPosition":{"x":0.3404762,"y":0.5319216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.1596,"y":88.350746,"z":-106.139},"screenPosition":{"x":0.35265356,"y":0.46883273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.7303,"y":87.18302,"z":-106.139},"screenPosition":{"x":0.3720555,"y":0.44143072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.84183,"y":86.22051,"z":-106.139},"screenPosition":{"x":0.41068372,"y":0.41894522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.7378,"y":89.04329,"z":-106.139},"screenPosition":{"x":0.43408477,"y":0.4850478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.20886,"y":91.44816,"z":-106.139},"screenPosition":{"x":0.41514546,"y":0.541434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.55176,"y":92.042816,"z":-106.139},"screenPosition":{"x":0.38223115,"y":0.5553767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.45294,"y":90.842186,"z":-106.139},"screenPosition":{"x":0.34384528,"y":0.527226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.91736,"y":88.81707,"z":-106.139},"screenPosition":{"x":0.32482362,"y":0.4797437},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-159.4697,"y":85.23658,"z":-107.139},"screenPosition":{"x":0.35644004,"y":0.3957932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.71767,"y":84.50617,"z":-107.139},"screenPosition":{"x":0.38428625,"y":0.37866762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.4665,"y":86.10933,"z":-106.139},"screenPosition":{"x":0.40610513,"y":0.41640455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.33751,"y":89.072334,"z":-106.139},"screenPosition":{"x":0.39196452,"y":0.48572892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.68771,"y":90.7191,"z":-106.139},"screenPosition":{"x":0.37152803,"y":0.52434003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.35144,"y":92.35094,"z":-106.139},"screenPosition":{"x":0.34258798,"y":0.56260103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.56584,"y":93.92606,"z":-106.139},"screenPosition":{"x":0.32046926,"y":0.5995326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.95288,"y":95.83919,"z":-106.139},"screenPosition":{"x":0.27571443,"y":0.64438885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.66731,"y":90.21381,"z":-106.139},"screenPosition":{"x":0.25995362,"y":0.51251334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.98643,"y":87.791794,"z":-106.139},"screenPosition":{"x":0.2876823,"y":0.43807963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.35463,"y":87.65903,"z":-106.139},"screenPosition":{"x":0.33024022,"y":0.45259142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.17674,"y":89.14094,"z":-106.139},"screenPosition":{"x":0.35281128,"y":0.48733735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.76157,"y":92.05997,"z":-106.139},"screenPosition":{"x":0.37262654,"y":0.5557709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.86462,"y":95.40576,"z":-106.139},"screenPosition":{"x":0.36141503,"y":0.6341877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.98752,"y":96.832375,"z":-106.139},"screenPosition":{"x":0.3133054,"y":0.6676759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.30646,"y":93.602196,"z":-106.139},"screenPosition":{"x":0.29267877,"y":0.5919048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.57124,"y":90.71082,"z":-106.139},"screenPosition":{"x":0.30814895,"y":0.52414584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.47041,"y":88.84168,"z":-106.139},"screenPosition":{"x":0.31946105,"y":0.48037347},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-151.94638,"y":90.01385,"z":-106.139},"screenPosition":{"x":0.26373306,"y":0.5078743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.51913,"y":91.71813,"z":-106.139},"screenPosition":{"x":0.2951162,"y":0.5477639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.0525,"y":92.26659,"z":-106.139},"screenPosition":{"x":0.3141104,"y":0.5606233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.24298,"y":92.22038,"z":-106.139},"screenPosition":{"x":0.36615935,"y":0.5595313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.78378,"y":90.2221,"z":-106.139},"screenPosition":{"x":0.32316887,"y":0.51268697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.7809,"y":92.123314,"z":-106.139},"screenPosition":{"x":0.31085947,"y":0.5572598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.94684,"y":100.289375,"z":-107.139},"screenPosition":{"x":0.20196089,"y":0.7462197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.6161,"y":99.45355,"z":-106.139},"screenPosition":{"x":0.22199361,"y":0.72913367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.51035,"y":98.81713,"z":-106.139},"screenPosition":{"x":0.2702328,"y":0.7142117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.31088,"y":96.55553,"z":-106.139},"screenPosition":{"x":0.2929233,"y":0.66101134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.68924,"y":93.37015,"z":-106.139},"screenPosition":{"x":0.29722327,"y":0.5864981},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.72911,"y":90.339935,"z":-106.139},"screenPosition":{"x":0.2730816,"y":0.51546663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.43764,"y":89.912346,"z":-106.139},"screenPosition":{"x":0.24455746,"y":0.50542426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.78053,"y":90.507,"z":-106.139},"screenPosition":{"x":0.21193434,"y":0.5193923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.17044,"y":90.5189,"z":-106.139},"screenPosition":{"x":0.18282901,"y":0.5199227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.00952,"y":91.98285,"z":-106.139},"screenPosition":{"x":0.15254329,"y":0.55397063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.00171,"y":92.91327,"z":-106.139},"screenPosition":{"x":0.1158246,"y":0.5757515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.15924,"y":95.33308,"z":-106.139},"screenPosition":{"x":0.10484893,"y":0.63252234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.3661,"y":98.33089,"z":-107.139},"screenPosition":{"x":0.13218594,"y":0.7028109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.22304,"y":99.33349,"z":-107.139},"screenPosition":{"x":0.16757548,"y":0.72631854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.20116,"y":100.378624,"z":-107.139},"screenPosition":{"x":0.20353517,"y":0.75584567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.20107,"y":100.977234,"z":-106.139},"screenPosition":{"x":0.23117083,"y":0.7685621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.93729,"y":99.90354,"z":-106.139},"screenPosition":{"x":0.263134,"y":0.7396844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.10107,"y":96.538376,"z":-106.139},"screenPosition":{"x":0.30269226,"y":0.66061187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.90889,"y":93.125374,"z":-106.139},"screenPosition":{"x":0.27525648,"y":0.5807486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.00037,"y":91.07039,"z":-106.139},"screenPosition":{"x":0.23950283,"y":0.5325953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.44188,"y":92.05752,"z":-106.139},"screenPosition":{"x":0.19506094,"y":0.55572134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.41644,"y":96.38379,"z":-106.139},"screenPosition":{"x":0.19474588,"y":0.657158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.31055,"y":97.142715,"z":-106.139},"screenPosition":{"x":0.2553704,"y":0.6749522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.07678,"y":93.30073,"z":-106.139},"screenPosition":{"x":0.27724922,"y":0.5848705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.51895,"y":90.90997,"z":-106.139},"screenPosition":{"x":0.24556476,"y":0.52881527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.7038,"y":91.06735,"z":-106.139},"screenPosition":{"x":0.19830541,"y":0.5325054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.1504,"y":91.62993,"z":-106.139},"screenPosition":{"x":0.16667585,"y":0.54569584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.38927,"y":95.047356,"z":-106.139},"screenPosition":{"x":0.1572474,"y":0.6258232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.46059,"y":97.70225,"z":-106.139},"screenPosition":{"x":0.18290539,"y":0.68807155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.66074,"y":98.789474,"z":-106.139},"screenPosition":{"x":0.23493388,"y":0.7135634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.97002,"y":96.62937,"z":-106.139},"screenPosition":{"x":0.27606815,"y":0.66285586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.91414,"y":91.30547,"z":-106.139},"screenPosition":{"x":0.2752346,"y":0.5380885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.85487,"y":89.865326,"z":-106.139},"screenPosition":{"x":0.23775592,"y":0.5043817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.28197,"y":89.55639,"z":-106.139},"screenPosition":{"x":0.2180073,"y":0.48093015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.37276,"y":89.81693,"z":-107.139},"screenPosition":{"x":0.18043485,"y":0.4951331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.58734,"y":91.059074,"z":-106.139},"screenPosition":{"x":0.1384995,"y":0.5298279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.43372,"y":93.57513,"z":-106.139},"screenPosition":{"x":0.120636255,"y":0.5913043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.61844,"y":97.33137,"z":-106.139},"screenPosition":{"x":0.14769898,"y":0.67937547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.06847,"y":96.213684,"z":-106.139},"screenPosition":{"x":0.21520986,"y":0.6531697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.1163,"y":90.857704,"z":-106.139},"screenPosition":{"x":0.21580239,"y":0.52758974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.1039,"y":90.23015,"z":-106.139},"screenPosition":{"x":0.19140708,"y":0.49728942},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-139.84875,"y":92.051445,"z":-106.139},"screenPosition":{"x":0.1154743,"y":0.5439885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.66321,"y":93.06844,"z":-106.139},"screenPosition":{"x":0.08743516,"y":0.56123275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.66034,"y":94.96966,"z":-106.139},"screenPosition":{"x":0.073894285,"y":0.6240014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.26645,"y":96.54123,"z":-107.139},"screenPosition":{"x":0.06901514,"y":0.6608494},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-141.01123,"y":95.44205,"z":-106.139},"screenPosition":{"x":0.12778997,"y":0.6350773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.95927,"y":95.05401,"z":-106.139},"screenPosition":{"x":0.10261352,"y":0.6259367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.89764,"y":93.53255,"z":-106.139},"screenPosition":{"x":0.07804184,"y":0.5901975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.47496,"y":94.5913,"z":-106.139},"screenPosition":{"x":0.035379305,"y":0.5932474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.02058,"y":96.45494,"z":-107.139},"screenPosition":{"x":0.06450839,"y":0.6686774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.33173,"y":97.066414,"z":-106.139},"screenPosition":{"x":0.09985279,"y":0.67170525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.25534,"y":97.03958,"z":-106.139},"screenPosition":{"x":0.11842655,"y":0.67253405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.41151,"y":95.412994,"z":-106.139},"screenPosition":{"x":0.16991019,"y":0.63439614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.1156,"y":92.03208,"z":-106.139},"screenPosition":{"x":0.14252275,"y":0.55510736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.88321,"y":92.23648,"z":-106.139},"screenPosition":{"x":0.10413883,"y":0.5509599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.27533,"y":93.725044,"z":-106.139},"screenPosition":{"x":0.07012299,"y":0.59472185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.19098,"y":96.02399,"z":-106.139},"screenPosition":{"x":0.06982446,"y":0.66138697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.32292,"y":97.61385,"z":-107.139},"screenPosition":{"x":0.106876396,"y":0.6859989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.09567,"y":99.753624,"z":-106.139},"screenPosition":{"x":0.3146451,"y":0.7361693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.52245,"y":102.235374,"z":-106.139},"screenPosition":{"x":0.32009238,"y":0.794182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.82175,"y":104.10578,"z":-107.139},"screenPosition":{"x":0.33602655,"y":0.83821297},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-150.50238,"y":101.1429,"z":-106.139},"screenPosition":{"x":0.24592134,"y":0.7783602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.23366,"y":99.09841,"z":-106.139},"screenPosition":{"x":0.25441802,"y":0.7208069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.3058,"y":96.98008,"z":-106.139},"screenPosition":{"x":0.28008613,"y":0.671139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.56296,"y":95.827286,"z":-106.139},"screenPosition":{"x":0.30804634,"y":0.64410985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.89177,"y":94.53869,"z":-106.139},"screenPosition":{"x":0.33707675,"y":0.61383885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.07953,"y":94.99836,"z":-106.139},"screenPosition":{"x":0.3639942,"y":0.6246743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.14388,"y":96.013954,"z":-106.139},"screenPosition":{"x":0.4143989,"y":0.6484416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.6618,"y":99.231415,"z":-106.139},"screenPosition":{"x":0.40836895,"y":0.72392535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.20451,"y":101.50049,"z":-106.139},"screenPosition":{"x":0.39041477,"y":0.7769823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.77199,"y":102.82117,"z":-106.139},"screenPosition":{"x":0.36018467,"y":0.808093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.26561,"y":102.80098,"z":-106.139},"screenPosition":{"x":0.32913753,"y":0.80761975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.65965,"y":103.34702,"z":-107.139},"screenPosition":{"x":0.30924404,"y":0.8204226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.25066,"y":101.28395,"z":-106.139},"screenPosition":{"x":0.2654263,"y":0.79131645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.30563,"y":98.37543,"z":-106.139},"screenPosition":{"x":0.29274318,"y":0.7036875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.37015,"y":97.995674,"z":-106.139},"screenPosition":{"x":0.33043242,"y":0.69495124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.01233,"y":98.08749,"z":-106.139},"screenPosition":{"x":0.36316177,"y":0.6971041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.79268,"y":98.33226,"z":-106.139},"screenPosition":{"x":0.38521546,"y":0.70284307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.24982,"y":97.458534,"z":-106.139},"screenPosition":{"x":0.41569015,"y":0.6823182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.49936,"y":98.04432,"z":-106.139},"screenPosition":{"x":0.4559394,"y":0.6960358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.63722,"y":100.98797,"z":-106.139},"screenPosition":{"x":0.47003427,"y":0.7650129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.918,"y":104.2472,"z":-106.139},"screenPosition":{"x":0.44870433,"y":0.84152865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.83635,"y":103.83676,"z":-106.139},"screenPosition":{"x":0.41053095,"y":0.83190525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.65605,"y":103.03385,"z":-106.139},"screenPosition":{"x":0.38376164,"y":0.8126873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.80423,"y":101.52954,"z":-106.139},"screenPosition":{"x":0.34819677,"y":0.7778086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.01198,"y":98.674675,"z":-106.139},"screenPosition":{"x":0.3262263,"y":0.7107001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.90146,"y":95.67212,"z":-106.139},"screenPosition":{"x":0.33701384,"y":0.64047164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.07478,"y":94.835724,"z":-106.139},"screenPosition":{"x":0.38890302,"y":0.62077117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.92136,"y":98.15994,"z":-106.139},"screenPosition":{"x":0.42397127,"y":0.6988028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.98723,"y":101.82658,"z":-106.139},"screenPosition":{"x":0.400108,"y":0.78461725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.46846,"y":101.17883,"z":-106.139},"screenPosition":{"x":0.34407824,"y":0.7695408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.04881,"y":98.94103,"z":-106.139},"screenPosition":{"x":0.30167738,"y":0.7171168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.336,"y":95.01994,"z":-106.139},"screenPosition":{"x":0.3176222,"y":0.62518036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.72661,"y":93.85747,"z":-106.139},"screenPosition":{"x":0.35962248,"y":0.5979242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.91199,"y":94.23582,"z":-106.139},"screenPosition":{"x":0.39908737,"y":0.6067926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.82066,"y":94.89546,"z":-106.139},"screenPosition":{"x":0.42272407,"y":0.62226164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.97856,"y":96.72807,"z":-106.139},"screenPosition":{"x":0.4494544,"y":0.6652304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.61563,"y":97.244446,"z":-106.139},"screenPosition":{"x":0.4697334,"y":0.6773376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.44743,"y":99.85979,"z":-106.139},"screenPosition":{"x":0.4924244,"y":0.7386586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.4495,"y":102.7318,"z":-106.139},"screenPosition":{"x":0.50487334,"y":0.80576205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.11816,"y":105.33443,"z":-106.139},"screenPosition":{"x":0.50073284,"y":0.8670205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.71042,"y":105.70671,"z":-106.139},"screenPosition":{"x":0.4585201,"y":0.87574935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.68307,"y":105.765625,"z":-106.139},"screenPosition":{"x":0.43355817,"y":0.8766828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.90811,"y":106.241714,"z":-107.139},"screenPosition":{"x":0.41141993,"y":0.8882934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.55107,"y":105.76548,"z":-107.139},"screenPosition":{"x":0.39460993,"y":0.8771273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.91231,"y":104.83944,"z":-107.139},"screenPosition":{"x":0.3619229,"y":0.85541475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.35841,"y":103.943184,"z":-107.139},"screenPosition":{"x":0.329823,"y":0.8374104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.82341,"y":102.988235,"z":-106.139},"screenPosition":{"x":0.30150142,"y":0.8092006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.48305,"y":101.07955,"z":-106.139},"screenPosition":{"x":0.30705637,"y":0.7672579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.16019,"y":99.37387,"z":-106.139},"screenPosition":{"x":0.35260606,"y":0.72726536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.1748,"y":101.47809,"z":-106.139},"screenPosition":{"x":0.3775617,"y":0.77660227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.58951,"y":102.7451,"z":-106.139},"screenPosition":{"x":0.39530116,"y":0.80593795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.19673,"y":104.634415,"z":-106.139},"screenPosition":{"x":0.4150766,"y":0.8504174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.14496,"y":105.054535,"z":-106.139},"screenPosition":{"x":0.4391285,"y":0.8604581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.07826,"y":106.16113,"z":-106.139},"screenPosition":{"x":0.46310937,"y":0.8862686},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-179.21257,"y":105.78523,"z":-106.139},"screenPosition":{"x":0.6010005,"y":0.87759036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.41542,"y":104.16308,"z":-106.139},"screenPosition":{"x":0.6158786,"y":0.8394671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.44054,"y":102.6275,"z":-106.139},"screenPosition":{"x":0.6409862,"y":0.80355215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.58669,"y":100.45468,"z":-106.139},"screenPosition":{"x":0.65505964,"y":0.75237787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.01886,"y":99.72119,"z":-106.139},"screenPosition":{"x":0.64815,"y":0.7354089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.30014,"y":100.99789,"z":-106.139},"screenPosition":{"x":0.65160775,"y":0.7652892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.82347,"y":101.0001,"z":-106.139},"screenPosition":{"x":0.63334256,"y":0.7653951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.16875,"y":101.67607,"z":-106.139},"screenPosition":{"x":0.58807033,"y":0.7812444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.01833,"y":99.50022,"z":-106.139},"screenPosition":{"x":0.5614325,"y":0.7302279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.7939,"y":97.37885,"z":-106.139},"screenPosition":{"x":0.5462652,"y":0.6804889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.67828,"y":94.80084,"z":-106.139},"screenPosition":{"x":0.544833,"y":0.6200432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.73564,"y":91.97363,"z":-106.139},"screenPosition":{"x":0.5579308,"y":0.55375457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.8324,"y":90.30225,"z":-106.139},"screenPosition":{"x":0.58390385,"y":0.51456624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.976,"y":89.44346,"z":-106.139},"screenPosition":{"x":0.62284464,"y":0.49443045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.87944,"y":91.923,"z":-106.139},"screenPosition":{"x":0.64642304,"y":0.5525674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.39313,"y":92.99529,"z":-106.139},"screenPosition":{"x":0.68986887,"y":0.57769316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.0073,"y":96.52391,"z":-106.139},"screenPosition":{"x":0.68516874,"y":0.66044337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.50552,"y":98.06171,"z":-106.139},"screenPosition":{"x":0.64179116,"y":0.6964996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.55966,"y":97.7229,"z":-106.139},"screenPosition":{"x":0.6053,"y":0.6885558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.60175,"y":96.16936,"z":-106.139},"screenPosition":{"x":0.5810467,"y":0.65213025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.23404,"y":94.31959,"z":-106.139},"screenPosition":{"x":0.5641019,"y":0.6087509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.98787,"y":89.850044,"z":-106.139},"screenPosition":{"x":0.5610522,"y":0.5039718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.28223,"y":88.37642,"z":-106.139},"screenPosition":{"x":0.6018633,"y":0.46941185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.44757,"y":89.8658,"z":-106.139},"screenPosition":{"x":0.62866604,"y":0.5043434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.62039,"y":91.01194,"z":-106.139},"screenPosition":{"x":0.6555271,"y":0.5312176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.03511,"y":92.27895,"z":-106.139},"screenPosition":{"x":0.6731259,"y":0.5609133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.71396,"y":94.03247,"z":-106.139},"screenPosition":{"x":0.693755,"y":0.6019674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.2621,"y":95.289795,"z":-106.139},"screenPosition":{"x":0.7305691,"y":0.64087373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.99545,"y":94.0266,"z":-107.139},"screenPosition":{"x":0.74695843,"y":0.60188985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.33252,"y":89.712265,"z":-106.139},"screenPosition":{"x":0.783337,"y":0.51535904},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-188.41905,"y":86.686485,"z":-106.139},"screenPosition":{"x":0.71498966,"y":0.42982623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.68573,"y":85.85896,"z":-106.139},"screenPosition":{"x":0.6935353,"y":0.41042033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.52496,"y":85.92756,"z":-106.139},"screenPosition":{"x":0.6544193,"y":0.41199437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.7492,"y":87.24077,"z":-106.139},"screenPosition":{"x":0.62003523,"y":0.44278482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.25966,"y":90.801476,"z":-106.139},"screenPosition":{"x":0.6139588,"y":0.5262753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.91899,"y":91.68348,"z":-106.139},"screenPosition":{"x":0.6469095,"y":0.54695153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.86707,"y":93.49895,"z":-106.139},"screenPosition":{"x":0.6834316,"y":0.58951813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.81055,"y":93.75643,"z":-106.139},"screenPosition":{"x":0.7322807,"y":0.5955553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.3906,"y":94.30932,"z":-106.139},"screenPosition":{"x":0.71469116,"y":0.6085187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.3573,"y":88.76387,"z":-106.139},"screenPosition":{"x":0.76382786,"y":0.47849637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.72565,"y":87.235756,"z":-106.139},"screenPosition":{"x":0.7931653,"y":0.44266722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.26695,"y":83.25494,"z":-106.139},"screenPosition":{"x":0.77509606,"y":0.34933025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.99042,"y":82.14088,"z":-106.139},"screenPosition":{"x":0.7465986,"y":0.32353982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.7626,"y":83.90326,"z":-106.139},"screenPosition":{"x":0.69452494,"y":0.36453125},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-190.02103,"y":90.3957,"z":-106.139},"screenPosition":{"x":0.7348878,"y":0.51675737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.59157,"y":90.62332,"z":-106.139},"screenPosition":{"x":0.77435964,"y":0.53671277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.75197,"y":89.30593,"z":-107.139},"screenPosition":{"x":0.79349124,"y":0.49120584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.20232,"y":87.23354,"z":-106.139},"screenPosition":{"x":0.81171495,"y":0.4478587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.04256,"y":83.33707,"z":-106.139},"screenPosition":{"x":0.82186544,"y":0.35125604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.72934,"y":80.56131,"z":-106.139},"screenPosition":{"x":0.8055983,"y":0.28617376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.61494,"y":83.42503,"z":-106.139},"screenPosition":{"x":0.7545848,"y":0.3533624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.29872,"y":86.149345,"z":-106.139},"screenPosition":{"x":0.79998416,"y":0.41733804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.13864,"y":85.04357,"z":-106.139},"screenPosition":{"x":0.83398575,"y":0.3948849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.59149,"y":83.22426,"z":-107.139},"screenPosition":{"x":0.85343987,"y":0.34861094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.66405,"y":81.87641,"z":-107.139},"screenPosition":{"x":0.8667259,"y":0.31700844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.51106,"y":79.55533,"z":-107.139},"screenPosition":{"x":0.88960546,"y":0.2625868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.68187,"y":76.827354,"z":-107.139},"screenPosition":{"x":0.91574883,"y":0.19928382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.23985,"y":77.38283,"z":-107.139},"screenPosition":{"x":0.91102034,"y":0.211649},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.2525,"y":73.36023,"z":-106.139},"screenPosition":{"x":0.9472074,"y":0.12557371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.35129,"y":72.35735,"z":-106.139},"screenPosition":{"x":0.924788,"y":0.09381831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.95322,"y":73.86307,"z":-106.139},"screenPosition":{"x":0.88189644,"y":0.13011208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.55293,"y":73.89211,"z":-106.139},"screenPosition":{"x":0.84056956,"y":0.12981105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.03894,"y":75.61051,"z":-106.139},"screenPosition":{"x":0.8217241,"y":0.17022574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.83609,"y":77.232666,"z":-106.139},"screenPosition":{"x":0.8069207,"y":0.20812808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.50491,"y":78.43994,"z":-106.139},"screenPosition":{"x":0.7903109,"y":0.23658697},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-191.39035,"y":82.69901,"z":-106.139},"screenPosition":{"x":0.7515198,"y":0.33663335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.56552,"y":81.72297,"z":-106.139},"screenPosition":{"x":0.70447075,"y":0.3134108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.97136,"y":77.08333,"z":-106.139},"screenPosition":{"x":0.7218854,"y":0.20462666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.29271,"y":76.13797,"z":-106.139},"screenPosition":{"x":0.75064045,"y":0.18246116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.75952,"y":76.397675,"z":-106.139},"screenPosition":{"x":0.78119767,"y":0.18855032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.666,"y":75.58065,"z":-106.139},"screenPosition":{"x":0.8045212,"y":0.16981937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.11566,"y":75.050156,"z":-106.139},"screenPosition":{"x":0.8351584,"y":0.15695566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.51085,"y":75.44566,"z":-106.139},"screenPosition":{"x":0.8648282,"y":0.1662289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.8665,"y":76.08069,"z":-106.139},"screenPosition":{"x":0.8940082,"y":0.18111807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.34225,"y":78.510796,"z":-107.139},"screenPosition":{"x":0.8999016,"y":0.23809606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-194.7295,"y":79.16596,"z":-106.139},"screenPosition":{"x":0.793213,"y":0.25345755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.96074,"y":84.321976,"z":-106.139},"screenPosition":{"x":0.7960774,"y":0.37434888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.81221,"y":86.41348,"z":-106.139},"screenPosition":{"x":0.794092,"y":0.42346048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.83905,"y":88.3371,"z":-106.139},"screenPosition":{"x":0.7920568,"y":0.46929243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.42255,"y":90.976555,"z":-107.139},"screenPosition":{"x":0.7770235,"y":0.5303765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.88728,"y":93.196075,"z":-106.139},"screenPosition":{"x":0.7437229,"y":0.5820961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.1541,"y":90.973206,"z":-106.139},"screenPosition":{"x":0.7117618,"y":0.53029794},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-186.74243,"y":86.40963,"z":-106.139},"screenPosition":{"x":0.6942749,"y":0.42329735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.05374,"y":84.91804,"z":-106.139},"screenPosition":{"x":0.6857439,"y":0.38832435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.98479,"y":82.34446,"z":-106.139},"screenPosition":{"x":0.647728,"y":0.32798263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.3075,"y":85.44549,"z":-106.139},"screenPosition":{"x":0.6145593,"y":0.40070066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.93187,"y":88.125,"z":-106.139},"screenPosition":{"x":0.63468516,"y":0.46351692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.35167,"y":88.96745,"z":-106.139},"screenPosition":{"x":0.66466,"y":0.48326975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.48035,"y":88.795135,"z":-106.139},"screenPosition":{"x":0.70341575,"y":0.47922948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.91287,"y":87.47446,"z":-106.139},"screenPosition":{"x":0.7335481,"y":0.44826397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.18498,"y":85.63519,"z":-106.139},"screenPosition":{"x":0.7616933,"y":0.4051393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.07445,"y":82.63263,"z":-106.139},"screenPosition":{"x":0.7726653,"y":0.33478242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.02791,"y":79.02934,"z":-106.139},"screenPosition":{"x":0.7349688,"y":0.250261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.64018,"y":78.2906,"z":-106.139},"screenPosition":{"x":0.7053957,"y":0.2329333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.83981,"y":79.15686,"z":-106.139},"screenPosition":{"x":0.670611,"y":0.25346753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.50354,"y":80.7887,"z":-106.139},"screenPosition":{"x":0.6417334,"y":0.2915928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.91774,"y":84.03824,"z":-106.139},"screenPosition":{"x":0.6345103,"y":0.36769617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.1123,"y":87.532555,"z":-106.139},"screenPosition":{"x":0.64930767,"y":0.4496262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.24371,"y":86.85437,"z":-106.139},"screenPosition":{"x":0.7128717,"y":0.43372494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.5927,"y":83.0594,"z":-106.139},"screenPosition":{"x":0.7419693,"y":0.3447456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.5808,"y":80.44931,"z":-106.139},"screenPosition":{"x":0.7416441,"y":0.28378615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.32666,"y":78.30554,"z":-106.139},"screenPosition":{"x":0.71375,"y":0.23356077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.09648,"y":79.9866,"z":-106.139},"screenPosition":{"x":0.6737505,"y":0.2729874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.886,"y":83.347336,"z":-106.139},"screenPosition":{"x":0.6711856,"y":0.3516416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.82661,"y":85.50604,"z":-106.139},"screenPosition":{"x":0.70770514,"y":0.40211114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.5433,"y":83.56084,"z":-106.139},"screenPosition":{"x":0.7537447,"y":0.35650265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.41054,"y":80.19264,"z":-106.139},"screenPosition":{"x":0.7517659,"y":0.27796537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.49217,"y":78.399574,"z":-106.139},"screenPosition":{"x":0.7281453,"y":0.23581386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.40762,"y":79.89035,"z":-106.139},"screenPosition":{"x":0.67768246,"y":0.27056283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.96733,"y":84.34496,"z":-106.139},"screenPosition":{"x":0.6722863,"y":0.37488773},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-190.03012,"y":80.50601,"z":-106.139},"screenPosition":{"x":0.73500055,"y":0.28487712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.24759,"y":80.98808,"z":-106.139},"screenPosition":{"x":0.77485615,"y":0.2961801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.51135,"y":79.85827,"z":-106.139},"screenPosition":{"x":0.6789466,"y":0.2698525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.04759,"y":78.50551,"z":-106.139},"screenPosition":{"x":0.7104007,"y":0.2380499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.05777,"y":77.6564,"z":-106.139},"screenPosition":{"x":0.73499453,"y":0.21866615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.50745,"y":77.12591,"z":-106.139},"screenPosition":{"x":0.7656878,"y":0.20562512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.55719,"y":76.037285,"z":-106.139},"screenPosition":{"x":0.79058266,"y":0.1808406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.76733,"y":75.46725,"z":-106.139},"screenPosition":{"x":0.81845623,"y":0.16673496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.0812,"y":74.86513,"z":-106.139},"screenPosition":{"x":0.8463807,"y":0.1535821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.52342,"y":74.67787,"z":-106.139},"screenPosition":{"x":0.87737113,"y":0.14822678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.72389,"y":72.9744,"z":-106.139},"screenPosition":{"x":0.9043838,"y":0.10858569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.71405,"y":73.23633,"z":-106.139},"screenPosition":{"x":0.9158265,"y":0.11567122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.80333,"y":71.90818,"z":-106.139},"screenPosition":{"x":0.9427749,"y":0.083286755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.07605,"y":71.30534,"z":-107.139},"screenPosition":{"x":0.97092766,"y":0.0691522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.09628,"y":72.53658,"z":-107.139},"screenPosition":{"x":0.9635712,"y":0.10522079},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-203.7485,"y":73.421364,"z":-106.139},"screenPosition":{"x":0.90493387,"y":0.11876579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.77786,"y":74.03095,"z":-106.139},"screenPosition":{"x":0.87996835,"y":0.133744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.7529,"y":74.17118,"z":-106.139},"screenPosition":{"x":0.8429355,"y":0.13650738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.91808,"y":74.85241,"z":-106.139},"screenPosition":{"x":0.8199742,"y":0.15282029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.48317,"y":76.09177,"z":-106.139},"screenPosition":{"x":0.80210626,"y":0.18200727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.76936,"y":76.13575,"z":-106.139},"screenPosition":{"x":0.7689323,"y":0.1824092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.80841,"y":77.87877,"z":-106.139},"screenPosition":{"x":0.7444693,"y":0.22355655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.83778,"y":78.48836,"z":-106.139},"screenPosition":{"x":0.7200381,"y":0.23791017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.31647,"y":79.15465,"z":-106.139},"screenPosition":{"x":0.6889985,"y":0.2531922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.23465,"y":80.13956,"z":-106.139},"screenPosition":{"x":0.66319954,"y":0.2763099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.19238,"y":80.88495,"z":-106.139},"screenPosition":{"x":0.6379123,"y":0.2937619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.18219,"y":81.734055,"z":-106.139},"screenPosition":{"x":0.6129405,"y":0.31391373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.6166,"y":82.47723,"z":-106.139},"screenPosition":{"x":0.60600525,"y":0.3310956},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-178.04286,"y":86.94152,"z":-106.139},"screenPosition":{"x":0.586511,"y":0.43576834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.34604,"y":89.17104,"z":-106.139},"screenPosition":{"x":0.56548715,"y":0.48805723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.79759,"y":90.70441,"z":-106.139},"screenPosition":{"x":0.5586982,"y":0.5239954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.28629,"y":89.713425,"z":-106.139},"screenPosition":{"x":0.50281537,"y":0.5007603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.2669,"y":87.44657,"z":-106.139},"screenPosition":{"x":0.5025912,"y":0.447648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.39575,"y":85.87891,"z":-106.139},"screenPosition":{"x":0.528946,"y":0.41085365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.47757,"y":84.894,"z":-106.139},"screenPosition":{"x":0.55473405,"y":0.38776085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.32956,"y":85.00297,"z":-106.139},"screenPosition":{"x":0.5776751,"y":0.39031577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.03589,"y":85.30222,"z":-106.139},"screenPosition":{"x":0.61119926,"y":0.39733225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.987,"y":83.82112,"z":-106.139},"screenPosition":{"x":0.6477555,"y":0.36260548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.96304,"y":79.996284,"z":-106.139},"screenPosition":{"x":0.659846,"y":0.27292585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.34802,"y":79.03739,"z":-106.139},"screenPosition":{"x":0.6007835,"y":0.24552055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.61913,"y":81.1632,"z":-106.139},"screenPosition":{"x":0.58126205,"y":0.300286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.8656,"y":82.84205,"z":-106.139},"screenPosition":{"x":0.55954003,"y":0.3396591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.48741,"y":84.63208,"z":-106.139},"screenPosition":{"x":0.54246867,"y":0.3816197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.79059,"y":86.8616,"z":-106.139},"screenPosition":{"x":0.5214537,"y":0.43391415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.47163,"y":87.888275,"z":-106.139},"screenPosition":{"x":0.48036873,"y":0.45801172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.8571,"y":84.946846,"z":-106.139},"screenPosition":{"x":0.44799116,"y":0.38906804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.58363,"y":82.73973,"z":-106.139},"screenPosition":{"x":0.47906834,"y":0.3203761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.45786,"y":83.21433,"z":-106.139},"screenPosition":{"x":0.5173479,"y":0.348525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.99057,"y":87.14067,"z":-106.139},"screenPosition":{"x":0.5239345,"y":0.44047844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.05423,"y":89.33064,"z":-106.139},"screenPosition":{"x":0.49994862,"y":0.4917951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.34042,"y":89.374626,"z":-106.139},"screenPosition":{"x":0.46632418,"y":0.4928165},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-164.20969,"y":86.674934,"z":-106.139},"screenPosition":{"x":0.4151556,"y":0.42951775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.75848,"y":84.55438,"z":-106.139},"screenPosition":{"x":0.45911556,"y":0.37979788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.2596,"y":86.39446,"z":-106.139},"screenPosition":{"x":0.49009767,"y":0.42294168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.74307,"y":89.426895,"z":-106.139},"screenPosition":{"x":0.49609986,"y":0.49405697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.20668,"y":92.175,"z":-106.139},"screenPosition":{"x":0.47705477,"y":0.558476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.7519,"y":93.13004,"z":-106.139},"screenPosition":{"x":0.43425962,"y":0.58086854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.67313,"y":90.81839,"z":-106.139},"screenPosition":{"x":0.40859517,"y":0.52668166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.84848,"y":84.25536,"z":-106.139},"screenPosition":{"x":0.62126505,"y":0.37278688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.0014,"y":82.91368,"z":-106.139},"screenPosition":{"x":0.561223,"y":0.34132898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.1294,"y":83.91574,"z":-106.139},"screenPosition":{"x":0.52564657,"y":0.3648239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.61761,"y":87.1108,"z":-106.139},"screenPosition":{"x":0.5069216,"y":0.4397428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.79756,"y":88.5009,"z":-106.139},"screenPosition":{"x":0.4967788,"y":0.47235826},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-170.85344,"y":93.8248,"z":-106.139},"screenPosition":{"x":0.49746275,"y":0.59714884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.5053,"y":95.05004,"z":-106.139},"screenPosition":{"x":0.530303,"y":0.62588614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.44148,"y":94.255424,"z":-106.139},"screenPosition":{"x":0.5666707,"y":0.6072456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.36288,"y":92.75192,"z":-106.139},"screenPosition":{"x":0.59047514,"y":0.5720029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.82764,"y":90.13962,"z":-106.139},"screenPosition":{"x":0.60861963,"y":0.51075304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.18613,"y":86.669914,"z":-106.139},"screenPosition":{"x":0.5882775,"y":0.42942232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.77838,"y":87.042206,"z":-106.139},"screenPosition":{"x":0.54607296,"y":0.43812904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.21243,"y":88.37257,"z":-106.139},"screenPosition":{"x":0.5019119,"y":0.46934262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.08105,"y":91.25426,"z":-106.139},"screenPosition":{"x":0.5002733,"y":0.53688765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.29802,"y":93.718864,"z":-106.139},"screenPosition":{"x":0.51534814,"y":0.59467447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.10011,"y":96.311806,"z":-106.139},"screenPosition":{"x":0.5252838,"y":0.65547025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.96365,"y":99.61806,"z":-106.139},"screenPosition":{"x":0.51120615,"y":0.73299074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.81767,"y":100.39553,"z":-106.139},"screenPosition":{"x":0.4846683,"y":0.7510669},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-164.04237,"y":97.5227,"z":-106.139},"screenPosition":{"x":0.41311616,"y":0.68382764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.78587,"y":95.297615,"z":-106.139},"screenPosition":{"x":0.39759472,"y":0.6316475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.36435,"y":90.99596,"z":-106.139},"screenPosition":{"x":0.3922969,"y":0.53083134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.17456,"y":89.867775,"z":-106.139},"screenPosition":{"x":0.4147206,"y":0.50437933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.07866,"y":88.96944,"z":-106.139},"screenPosition":{"x":0.45069438,"y":0.48331624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.079,"y":88.38225,"z":-106.139},"screenPosition":{"x":0.48788106,"y":0.46957728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.3063,"y":88.6024,"z":-106.139},"screenPosition":{"x":0.5154507,"y":0.47471046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.8217,"y":93.133896,"z":-106.139},"screenPosition":{"x":0.53422236,"y":0.58095884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.92714,"y":96.56101,"z":-106.139},"screenPosition":{"x":0.5107538,"y":0.66131324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.3639,"y":97.3855,"z":-106.139},"screenPosition":{"x":0.4914144,"y":0.68058306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.74635,"y":97.74064,"z":-106.139},"screenPosition":{"x":0.45904064,"y":0.6888474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.75635,"y":96.083374,"z":-106.139},"screenPosition":{"x":0.4343877,"y":0.6500465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.97311,"y":97.73982,"z":-106.139},"screenPosition":{"x":0.39983794,"y":0.6889524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.37003,"y":101.59452,"z":-106.139},"screenPosition":{"x":0.4047545,"y":0.7793323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.53078,"y":101.525925,"z":-106.139},"screenPosition":{"x":0.44390774,"y":0.77772385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.44472,"y":100.36566,"z":-106.139},"screenPosition":{"x":0.46761617,"y":0.7505196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.67728,"y":98.765915,"z":-106.139},"screenPosition":{"x":0.49527144,"y":0.71301085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.36153,"y":97.304184,"z":-106.139},"screenPosition":{"x":0.50377154,"y":0.678661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.57678,"y":96.30959,"z":-106.139},"screenPosition":{"x":0.54357564,"y":0.6554183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.28107,"y":93.73683,"z":-106.139},"screenPosition":{"x":0.5646871,"y":0.59509575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.51581,"y":91.41024,"z":-106.139},"screenPosition":{"x":0.53043306,"y":0.540545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.97209,"y":93.10624,"z":-106.139},"screenPosition":{"x":0.49892345,"y":0.5803105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.62582,"y":96.39534,"z":-106.139},"screenPosition":{"x":0.49463412,"y":0.65742886},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-176.08774,"y":97.88776,"z":-106.139},"screenPosition":{"x":0.5622924,"y":0.69242096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.59633,"y":99.384605,"z":-106.139},"screenPosition":{"x":0.593367,"y":0.72751707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.18877,"y":100.56505,"z":-106.139},"screenPosition":{"x":0.6007057,"y":0.75519454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.24753,"y":103.98773,"z":-106.139},"screenPosition":{"x":0.61382085,"y":0.835445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.18507,"y":107.239494,"z":-106.139},"screenPosition":{"x":0.5882727,"y":0.91168797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.50351,"y":105.991844,"z":-106.139},"screenPosition":{"x":0.5426681,"y":0.8824349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.19029,"y":103.21609,"z":-106.139},"screenPosition":{"x":0.52640665,"y":0.81726784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.07977,"y":100.213524,"z":-106.139},"screenPosition":{"x":0.53741914,"y":0.74695253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.63095,"y":98.17429,"z":-106.139},"screenPosition":{"x":0.56901413,"y":0.6990958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.97675,"y":99.071236,"z":-106.139},"screenPosition":{"x":0.61046654,"y":0.7201696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.07234,"y":102.76027,"z":-106.139},"screenPosition":{"x":0.59926337,"y":0.8066651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.2548,"y":102.836334,"z":-106.139},"screenPosition":{"x":0.56436193,"y":0.8084487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.57309,"y":102.98404,"z":-106.139},"screenPosition":{"x":0.53114265,"y":0.81191176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.8688,"y":105.55679,"z":-106.139},"screenPosition":{"x":0.51003456,"y":0.8722031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.22156,"y":108.09303,"z":-106.139},"screenPosition":{"x":0.5267883,"y":0.93170065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.83388,"y":109.5578,"z":-106.139},"screenPosition":{"x":0.55509406,"y":0.9837296},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-093429/brain-CB6B64-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9553364891256058,-0.2955202066613396,0.0,0.0,-0.2955202066613396,0.955336489125606,0.0,0.0,0.0,0.0,-0.9999999999999998,0.0,-174.64176112752727,91.74379715909164,-206.52444062703285,1.0]},"baseImage":"20190823-093429/base.webp","version":0,"savedAt":1.56655307313E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-094540-v0.json b/data/mapping/BAAAHS/dwayman/20190823-094540-v0.json new file mode 100644 index 0000000000..f597841547 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-094540-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566553540578E12,"surfaces":[{"brainId":"C78440","panelName":"27D","pixels":[{"modelPosition":{"x":-276.89322,"y":139.83958,"z":-83.01962},"screenPosition":{"x":0.9559685,"y":0.8925984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.3506,"y":139.7827,"z":-82.808395},"screenPosition":{"x":0.94879985,"y":0.900205},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-278.94308,"y":139.99474,"z":-83.80275},"screenPosition":{"x":0.9771296,"y":0.85536784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.42453,"y":139.21559,"z":-85.23981},"screenPosition":{"x":0.9954129,"y":0.8290769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.7554,"y":138.04724,"z":-85.79612},"screenPosition":{"x":0.982642,"y":0.78600955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.4575,"y":137.19406,"z":-86.20237},"screenPosition":{"x":0.9861768,"y":0.7534443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.3474,"y":135.74548,"z":-86.89211},"screenPosition":{"x":0.9757035,"y":0.70047176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.06787,"y":134.78459,"z":-86.18571},"screenPosition":{"x":0.97308934,"y":0.66824484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.85455,"y":132.00539,"z":-86.144066},"screenPosition":{"x":0.91565895,"y":0.6284336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.8436,"y":129.90321,"z":-84.89124},"screenPosition":{"x":0.84589964,"y":0.6481326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.1782,"y":126.54842,"z":-83.81592},"screenPosition":{"x":0.7597649,"y":0.63505226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.30026,"y":127.3564,"z":-82.60811},"screenPosition":{"x":0.7395154,"y":0.6991484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.7545,"y":129.74275,"z":-82.639626},"screenPosition":{"x":0.77949274,"y":0.7397792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.2285,"y":131.69319,"z":-82.57001},"screenPosition":{"x":0.7993614,"y":0.7814512},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-279.14044,"y":134.56026,"z":-82.52401},"screenPosition":{"x":0.8466975,"y":0.8287873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.6346,"y":136.61235,"z":-82.486984},"screenPosition":{"x":0.8678199,"y":0.8678198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.6516,"y":139.15726,"z":-82.762314},"screenPosition":{"x":0.9378774,"y":0.89317614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.81824,"y":140.75282,"z":-83.58255},"screenPosition":{"x":0.9900805,"y":0.8777114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.5079,"y":139.67505,"z":-85.021034},"screenPosition":{"x":0.9875489,"y":0.84650224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.38342,"y":138.23369,"z":-85.707344},"screenPosition":{"x":0.9840844,"y":0.7923668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.88504,"y":137.58609,"z":-84.99929},"screenPosition":{"x":0.97130764,"y":0.76468587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.4966,"y":136.287,"z":-85.625084},"screenPosition":{"x":0.96752447,"y":0.71649295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.25394,"y":133.9919,"z":-84.96662},"screenPosition":{"x":0.9151806,"y":0.71239644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.58963,"y":132.24988,"z":-84.29244},"screenPosition":{"x":0.8678298,"y":0.7132923},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-286.00735,"y":125.78332,"z":-82.83727},"screenPosition":{"x":0.72041273,"y":0.6624848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.30307,"y":125.79032,"z":-84.03612},"screenPosition":{"x":0.7534985,"y":0.6128973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.5082,"y":124.901276,"z":-84.252945},"screenPosition":{"x":0.74504304,"y":0.5887593},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-295.18948,"y":123.3214,"z":-85.56073},"screenPosition":{"x":0.75474024,"y":0.50618005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.38013,"y":123.65058,"z":-86.43824},"screenPosition":{"x":0.78390104,"y":0.47462332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.0292,"y":125.535645,"z":-87.50567},"screenPosition":{"x":0.8448781,"y":0.46085143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.87006,"y":127.9479,"z":-88.04729},"screenPosition":{"x":0.9022551,"y":0.47867435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.5648,"y":129.40382,"z":-87.93497},"screenPosition":{"x":0.9232358,"y":0.5075754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.26926,"y":131.27336,"z":-89.02152},"screenPosition":{"x":0.96180034,"y":0.5342954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.98077,"y":132.42049,"z":-88.47532},"screenPosition":{"x":0.9656805,"y":0.5769086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.22208,"y":133.54239,"z":-87.02273},"screenPosition":{"x":0.9685311,"y":0.61205006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.97202,"y":134.521,"z":-86.448616},"screenPosition":{"x":0.97182673,"y":0.6526792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.31903,"y":134.004,"z":-85.3565},"screenPosition":{"x":0.92626536,"y":0.69552094},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-285.5868,"y":127.949165,"z":-83.22271},"screenPosition":{"x":0.76622236,"y":0.6839919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.64972,"y":126.15048,"z":-84.61476},"screenPosition":{"x":0.77543586,"y":0.5948648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.49585,"y":129.34503,"z":-85.71593},"screenPosition":{"x":0.8600066,"y":0.60335463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.56235,"y":131.50749,"z":-86.64067},"screenPosition":{"x":0.9214054,"y":0.59856594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.10144,"y":133.47002,"z":-86.96093},"screenPosition":{"x":0.96864766,"y":0.61348754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.32928,"y":135.031,"z":-86.34189},"screenPosition":{"x":0.97287816,"y":0.66564155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.2397,"y":135.79948,"z":-86.8664},"screenPosition":{"x":0.9810212,"y":0.70217806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.96576,"y":136.93929,"z":-86.32368},"screenPosition":{"x":0.9793021,"y":0.7448356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.3021,"y":137.32588,"z":-84.722885},"screenPosition":{"x":0.98155594,"y":0.77262115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.53696,"y":135.07556,"z":-83.88578},"screenPosition":{"x":0.9026737,"y":0.7774026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.7966,"y":132.63402,"z":-83.373375},"screenPosition":{"x":0.84854054,"y":0.7600166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.1818,"y":130.50957,"z":-83.34861},"screenPosition":{"x":0.8122424,"y":0.72381777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.17612,"y":130.60443,"z":-84.459816},"screenPosition":{"x":0.845475,"y":0.6787433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.28293,"y":132.9702,"z":-85.44973},"screenPosition":{"x":0.91200656,"y":0.67457604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.2242,"y":135.35316,"z":-86.02055},"screenPosition":{"x":0.9744216,"y":0.6846688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.4524,"y":136.1941,"z":-86.6785},"screenPosition":{"x":0.98534214,"y":0.71600765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.1931,"y":137.32657,"z":-86.13927},"screenPosition":{"x":0.9824563,"y":0.7581787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.37708,"y":136.41264,"z":-84.15996},"screenPosition":{"x":0.9321394,"y":0.7872052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.0685,"y":121.29669,"z":-83.560745},"screenPosition":{"x":0.6688945,"y":0.5556022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.79047,"y":119.04298,"z":-83.26295},"screenPosition":{"x":0.6266283,"y":0.53000665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.33167,"y":116.94949,"z":-82.93931},"screenPosition":{"x":0.5872678,"y":0.50880593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.2747,"y":114.73886,"z":-82.73252},"screenPosition":{"x":0.5502866,"y":0.48165897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.25806,"y":112.73155,"z":-82.590904},"screenPosition":{"x":0.518761,"y":0.45584998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.3065,"y":110.73634,"z":-82.839165},"screenPosition":{"x":0.49783945,"y":0.4157037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.9188,"y":110.512436,"z":-83.73239},"screenPosition":{"x":0.5169287,"y":0.37762153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.23077,"y":111.98917,"z":-84.93913},"screenPosition":{"x":0.5672761,"y":0.3522778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.71893,"y":113.59853,"z":-85.87959},"screenPosition":{"x":0.6138013,"y":0.33896405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.42392,"y":116.08147,"z":-86.75266},"screenPosition":{"x":0.67267364,"y":0.3411833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.38464,"y":117.49091,"z":-87.08864},"screenPosition":{"x":0.7028103,"y":0.34897643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.84875,"y":120.366684,"z":-87.971825},"screenPosition":{"x":0.7713176,"y":0.3571312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.22726,"y":122.59111,"z":-88.298836},"screenPosition":{"x":0.81656617,"y":0.37866622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.06314,"y":124.75866,"z":-88.41462},"screenPosition":{"x":0.8564405,"y":0.40895754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.87888,"y":126.82455,"z":-88.49781},"screenPosition":{"x":0.8948083,"y":0.43985438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.75473,"y":128.65782,"z":-88.545044},"screenPosition":{"x":0.92810416,"y":0.46869183},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-294.89343,"y":131.47311,"z":-87.47885},"screenPosition":{"x":0.96417826,"y":0.55838895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.11948,"y":130.34615,"z":-86.191216},"screenPosition":{"x":0.8899115,"y":0.59930474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.89203,"y":127.908,"z":-85.1395},"screenPosition":{"x":0.81930786,"y":0.6029254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.192,"y":125.66978,"z":-84.692276},"screenPosition":{"x":0.76970667,"y":0.5834377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.8131,"y":122.90776,"z":-84.231544},"screenPosition":{"x":0.7122192,"y":0.5551256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.23865,"y":120.98662,"z":-84.27195},"screenPosition":{"x":0.68296635,"y":0.5208043},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-298.48303,"y":120.102875,"z":-85.957275},"screenPosition":{"x":0.71377504,"y":0.43641922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.87073,"y":121.74154,"z":-86.86852},"screenPosition":{"x":0.7641783,"y":0.42501634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.11835,"y":124.28134,"z":-87.95282},"screenPosition":{"x":0.835661,"y":0.42079413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.85413,"y":127.01577,"z":-88.1731},"screenPosition":{"x":0.8891701,"y":0.45718113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.37305,"y":128.87663,"z":-88.46078},"screenPosition":{"x":0.9292065,"y":0.47588727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.7466,"y":130.85635,"z":-88.36195},"screenPosition":{"x":0.96030486,"y":0.5106377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.94333,"y":131.43674,"z":-88.943726},"screenPosition":{"x":0.9681869,"y":0.5400344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.72437,"y":133.39595,"z":-87.16879},"screenPosition":{"x":0.9678301,"y":0.6034091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.57333,"y":132.19492,"z":-86.08902},"screenPosition":{"x":0.9170501,"y":0.63373625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.98862,"y":129.24677,"z":-85.14403},"screenPosition":{"x":0.8419852,"y":0.6259424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.50928,"y":126.514046,"z":-84.65409},"screenPosition":{"x":0.78251344,"y":0.5994242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.61823,"y":124.82381,"z":-85.00011},"screenPosition":{"x":0.7642227,"y":0.5557905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.17038,"y":124.83251,"z":-85.9293},"screenPosition":{"x":0.7897386,"y":0.5163216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.89978,"y":126.58663,"z":-86.993355},"screenPosition":{"x":0.848909,"y":0.50088435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.90155,"y":129.27458,"z":-87.661934},"screenPosition":{"x":0.9134388,"y":0.517374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.51636,"y":131.39905,"z":-87.68671},"screenPosition":{"x":0.9461011,"y":0.54882634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.40707,"y":132.55168,"z":-87.20697},"screenPosition":{"x":0.951314,"y":0.58811694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.17715,"y":133.63196,"z":-86.665436},"screenPosition":{"x":0.96988606,"y":0.62875456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.92673,"y":134.07298,"z":-85.9576},"screenPosition":{"x":0.9441765,"y":0.6703234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.05197,"y":132.43771,"z":-84.50705},"screenPosition":{"x":0.8769964,"y":0.7071708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.5723,"y":129.16739,"z":-83.88339},"screenPosition":{"x":0.8048989,"y":0.6777014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.25427,"y":127.24795,"z":-83.65414},"screenPosition":{"x":0.766722,"y":0.65385306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.39398,"y":125.80921,"z":-83.347374},"screenPosition":{"x":0.73482126,"y":0.64183724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.19128,"y":123.17984,"z":-82.62037},"screenPosition":{"x":0.6731721,"y":0.6271193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.4357,"y":120.88135,"z":-82.50121},"screenPosition":{"x":0.63438755,"y":0.59247726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.28958,"y":121.339775,"z":-83.65175},"screenPosition":{"x":0.6719842,"y":0.55254954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.1343,"y":122.383965,"z":-84.218056},"screenPosition":{"x":0.70351183,"y":0.54670775},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-296.5156,"y":123.04232,"z":-85.973076},"screenPosition":{"x":0.7613119,"y":0.48408014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.72678,"y":124.01074,"z":-87.016884},"screenPosition":{"x":0.80561113,"y":0.45610902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.09924,"y":125.79245,"z":-88.32139},"screenPosition":{"x":0.87178534,"y":0.43011227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.8757,"y":129.26779,"z":-88.740555},"screenPosition":{"x":0.956862,"y":0.46819356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.9829,"y":130.7564,"z":-88.059715},"screenPosition":{"x":0.9612115,"y":0.521815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.61078,"y":129.51228,"z":-86.88893},"screenPosition":{"x":0.895794,"y":0.55515045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.54428,"y":127.34982,"z":-85.96419},"screenPosition":{"x":0.83328557,"y":0.5584083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.80392,"y":124.90828,"z":-85.45178},"screenPosition":{"x":0.77795917,"y":0.5380003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.5678,"y":124.60744,"z":-92.19552},"screenPosition":{"x":0.9392648,"y":0.28703752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.86923,"y":123.83545,"z":-91.74708},"screenPosition":{"x":0.9314044,"y":0.2520673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.27548,"y":122.74895,"z":-93.080444},"screenPosition":{"x":0.9340362,"y":0.21985586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.39612,"y":121.685974,"z":-93.586586},"screenPosition":{"x":0.926858,"y":0.18243864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.0365,"y":120.63941,"z":-93.19303},"screenPosition":{"x":0.91482663,"y":0.14375615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.5823,"y":118.25305,"z":-93.161514},"screenPosition":{"x":0.87368286,"y":0.111493684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.8819,"y":115.47724,"z":-92.58057},"screenPosition":{"x":0.8133872,"y":0.09721283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.9155,"y":112.74791,"z":-91.551315},"screenPosition":{"x":0.7446121,"y":0.101850346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.0655,"y":110.921425,"z":-90.42546},"screenPosition":{"x":0.6890216,"y":0.1220046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.99088,"y":110.9575,"z":-89.317635},"screenPosition":{"x":0.66191244,"y":0.16591118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.94135,"y":111.33994,"z":-88.66822},"screenPosition":{"x":0.6512482,"y":0.196598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.53104,"y":113.11804,"z":-88.234566},"screenPosition":{"x":0.6663292,"y":0.23854004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.00436,"y":113.99329,"z":-87.89752},"screenPosition":{"x":0.6707357,"y":0.2644555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.05637,"y":115.95922,"z":-87.678474},"screenPosition":{"x":0.6946521,"y":0.30199558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.06805,"y":117.721825,"z":-87.39426},"screenPosition":{"x":0.71432453,"y":0.34004658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.90466,"y":120.96455,"z":-87.777466},"screenPosition":{"x":0.7758283,"y":0.3746174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.45825,"y":123.12361,"z":-89.241516},"screenPosition":{"x":0.8509949,"y":0.34735748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.23148,"y":123.1754,"z":-90.26172},"screenPosition":{"x":0.8795191,"y":0.30497622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.78256,"y":121.571335,"z":-90.78975},"screenPosition":{"x":0.8663925,"y":0.25807595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.98666,"y":119.06952,"z":-90.60543},"screenPosition":{"x":0.81988466,"y":0.22846887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.66406,"y":117.442955,"z":-90.08405},"screenPosition":{"x":0.7800014,"y":0.22613354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.99338,"y":113.30587,"z":-88.44917},"screenPosition":{"x":0.6745304,"y":0.2326824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.67892,"y":115.34756,"z":-87.75262},"screenPosition":{"x":0.6873004,"y":0.28997436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.77588,"y":117.22392,"z":-87.890854},"screenPosition":{"x":0.7195284,"y":0.31227678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.39102,"y":119.88598,"z":-88.04934},"screenPosition":{"x":0.7656334,"y":0.34642914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.4883,"y":122.29993,"z":-88.321304},"screenPosition":{"x":0.8123207,"y":0.37306577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.6712,"y":125.36523,"z":-89.14944},"screenPosition":{"x":0.8871264,"y":0.3874422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.5856,"y":126.12863,"z":-90.397736},"screenPosition":{"x":0.93509823,"y":0.3461098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.45822,"y":124.53837,"z":-91.046},"screenPosition":{"x":0.9246486,"y":0.292895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.31107,"y":121.96927,"z":-89.990906},"screenPosition":{"x":0.85166967,"y":0.2976937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.92337,"y":120.330605,"z":-89.07966},"screenPosition":{"x":0.80013025,"y":0.31056678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.11368,"y":118.70744,"z":-88.018974},"screenPosition":{"x":0.7460665,"y":0.329527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.78577,"y":116.298584,"z":-86.93806},"screenPosition":{"x":0.6807243,"y":0.33697417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.85898,"y":114.112144,"z":-87.51102},"screenPosition":{"x":0.66267586,"y":0.28158846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.53177,"y":114.19322,"z":-88.50201},"screenPosition":{"x":0.6890896,"y":0.24320471},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-313.79422,"y":117.46715,"z":-90.86381},"screenPosition":{"x":0.80071056,"y":0.19463791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.13663,"y":118.65778,"z":-91.28405},"screenPosition":{"x":0.83101505,"y":0.19450204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.10266,"y":120.849525,"z":-92.17958},"screenPosition":{"x":0.89134574,"y":0.18914865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.829,"y":122.4715,"z":-93.212555},"screenPosition":{"x":0.9357058,"y":0.20978375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.7172,"y":124.53255,"z":-92.23118},"screenPosition":{"x":0.9452462,"y":0.2839998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.39316,"y":124.52627,"z":-90.65612},"screenPosition":{"x":0.91375756,"y":0.30938166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.86078,"y":124.081635,"z":-89.6258},"screenPosition":{"x":0.87785184,"y":0.3462979},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-299.0815,"y":113.476074,"z":-84.52795},"screenPosition":{"x":0.57789344,"y":0.39073724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.84665,"y":114.31164,"z":-83.56058},"screenPosition":{"x":0.5652662,"y":0.4419724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.97897,"y":116.146614,"z":-83.33816},"screenPosition":{"x":0.5858768,"y":0.47978768},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-292.19373,"y":121.07618,"z":-83.91466},"screenPosition":{"x":0.67487353,"y":0.53715265},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-298.20575,"y":126.20588,"z":-87.37311},"screenPosition":{"x":0.85280526,"y":0.4779473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.25775,"y":128.17181,"z":-87.15406},"screenPosition":{"x":0.88123554,"y":0.5215878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.0275,"y":128.7145,"z":-86.47881},"screenPosition":{"x":0.8711307,"y":0.5598721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.65573,"y":128.00797,"z":-85.44175},"screenPosition":{"x":0.82954305,"y":0.5918617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.54926,"y":126.17977,"z":-84.58555},"screenPosition":{"x":0.7751039,"y":0.59658813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.1986,"y":116.86885,"z":-86.50325},"screenPosition":{"x":0.678132,"y":0.36324346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.4692,"y":115.11474,"z":-85.43919},"screenPosition":{"x":0.6246489,"y":0.37932757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.01715,"y":114.539154,"z":-84.4055},"screenPosition":{"x":0.5899653,"y":0.41183153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.21915,"y":114.67859,"z":-83.0606},"screenPosition":{"x":0.5577721,"y":0.46762735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.37692,"y":117.39752,"z":-83.43032},"screenPosition":{"x":0.60651594,"y":0.49619007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.29382,"y":120.5093,"z":-83.81016},"screenPosition":{"x":0.6633307,"y":0.53194535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.5616,"y":123.15077,"z":-84.92704},"screenPosition":{"x":0.7348616,"y":0.53001034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.45618,"y":124.350105,"z":-86.27647},"screenPosition":{"x":0.79114217,"y":0.49329278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.60614,"y":123.93837,"z":-86.955086},"screenPosition":{"x":0.80271935,"y":0.45752499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.71616,"y":123.86091,"z":-87.702255},"screenPosition":{"x":0.8217212,"y":0.42452103},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-304.3118,"y":121.62969,"z":-88.453865},"screenPosition":{"x":0.8047758,"y":0.35687178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.56152,"y":120.113495,"z":-88.894264},"screenPosition":{"x":0.791675,"y":0.31493258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.20813,"y":118.235435,"z":-89.02568},"screenPosition":{"x":0.7649626,"y":0.2810894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.69412,"y":116.61927,"z":-89.16384},"screenPosition":{"x":0.7431413,"y":0.25160334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.05988,"y":115.46832,"z":-89.37392},"screenPosition":{"x":0.730745,"y":0.22647603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.60672,"y":114.69473,"z":-89.74355},"screenPosition":{"x":0.72835386,"y":0.20063071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.65552,"y":113.23711,"z":-90.12553},"screenPosition":{"x":0.7159427,"y":0.16510412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.9063,"y":113.33368,"z":-90.96708},"screenPosition":{"x":0.73873717,"y":0.132937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.23666,"y":112.22411,"z":-91.53782},"screenPosition":{"x":0.73632663,"y":0.095441304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.57623,"y":109.11404,"z":-90.88833},"screenPosition":{"x":0.67418396,"y":0.08033883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.2685,"y":106.80684,"z":-89.83999},"screenPosition":{"x":0.6158599,"y":0.09117461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.77646,"y":106.56553,"z":-88.87485},"screenPosition":{"x":0.5891156,"y":0.1249363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.02448,"y":108.228165,"z":-88.28838},"screenPosition":{"x":0.5977425,"y":0.16923338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.71957,"y":110.22168,"z":-88.30978},"screenPosition":{"x":0.6262762,"y":0.19529194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.0786,"y":113.419624,"z":-88.871635},"screenPosition":{"x":0.68691605,"y":0.21749894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.9594,"y":115.49761,"z":-89.3447},"screenPosition":{"x":0.73044497,"y":0.22807263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.88583,"y":118.56121,"z":-90.4425},"screenPosition":{"x":0.80732775,"y":0.2277336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.89645,"y":120.12581,"z":-91.56161},"screenPosition":{"x":0.86266077,"y":0.2043376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.20773,"y":120.52735,"z":-92.500916},"screenPosition":{"x":0.8944414,"y":0.17104745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.00043,"y":119.60562,"z":-93.28626},"screenPosition":{"x":0.8996775,"y":0.125218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.64703,"y":117.72756,"z":-93.41767},"screenPosition":{"x":0.8716826,"y":0.09373346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.64523,"y":115.03962,"z":-92.74909},"screenPosition":{"x":0.81076276,"y":0.08452588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.0407,"y":112.5274,"z":-91.905235},"screenPosition":{"x":0.7501962,"y":0.08489109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.79272,"y":109.450005,"z":-90.68722},"screenPosition":{"x":0.6740722,"y":0.092487805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.42593,"y":108.98818,"z":-90.07599},"screenPosition":{"x":0.6523467,"y":0.11020442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.5929,"y":109.70659,"z":-89.22547},"screenPosition":{"x":0.64161235,"y":0.15269218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.82532,"y":110.97469,"z":-88.898544},"screenPosition":{"x":0.65171206,"y":0.18256326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.47516,"y":112.52018,"z":-88.42893},"screenPosition":{"x":0.6624435,"y":0.22241542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.84836,"y":113.96231,"z":-88.19639},"screenPosition":{"x":0.67786837,"y":0.25209397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.56396,"y":116.59508,"z":-88.38409},"screenPosition":{"x":0.7225909,"y":0.2828731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.4101,"y":119.78963,"z":-89.48525},"screenPosition":{"x":0.80205435,"y":0.28550574},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-314.1773,"y":119.39869,"z":-91.48294},"screenPosition":{"x":0.8484636,"y":0.19700813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.02448,"y":116.92447,"z":-91.539055},"screenPosition":{"x":0.8095801,"y":0.15939899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.09805,"y":113.86086,"z":-90.44126},"screenPosition":{"x":0.73341495,"y":0.16109917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.8218,"y":112.88034,"z":-89.007576},"screenPosition":{"x":0.68233943,"y":0.20454803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.2916,"y":115.66125,"z":-88.77956},"screenPosition":{"x":0.7184309,"y":0.25321135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.2424,"y":117.99603,"z":-90.06834},"screenPosition":{"x":0.78841853,"y":0.23482871},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-316.2852,"y":116.095695,"z":-91.4278},"screenPosition":{"x":0.79347116,"y":0.15233992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.24765,"y":112.911545,"z":-90.98617},"screenPosition":{"x":0.7328062,"y":0.12647761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.3421,"y":111.02478,"z":-90.18839},"screenPosition":{"x":0.6846215,"y":0.13267733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.69336,"y":109.67731,"z":-89.254684},"screenPosition":{"x":0.64191663,"y":0.1511656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.08035,"y":108.82603,"z":-88.094025},"screenPosition":{"x":0.60129267,"y":0.18473981},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.97037,"y":108.903496,"z":-87.346855},"screenPosition":{"x":0.58401215,"y":0.21465755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.20206,"y":109.09641,"z":-86.752495},"screenPosition":{"x":0.57207,"y":0.24027702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.4334,"y":108.75175,"z":-86.024414},"screenPosition":{"x":0.5494753,"y":0.26360035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.06165,"y":108.04522,"z":-84.98735},"screenPosition":{"x":0.51460284,"y":0.29359326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.1759,"y":105.72253,"z":-84.08845},"screenPosition":{"x":0.46247992,"y":0.2954071},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-307.73618,"y":103.53269,"z":-85.20072},"screenPosition":{"x":0.46111774,"y":0.22391623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.9778,"y":102.80027,"z":-83.65356},"screenPosition":{"x":0.41539654,"y":0.27176368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.35208,"y":105.85517,"z":-83.82217},"screenPosition":{"x":0.45778438,"y":0.30732036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.82077,"y":108.438065,"z":-84.997475},"screenPosition":{"x":0.5201001,"y":0.29873767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.6704,"y":109.72696,"z":-85.98961},"screenPosition":{"x":0.5619692,"y":0.27862167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.61984,"y":109.91139,"z":-86.74352},"screenPosition":{"x":0.5831373,"y":0.25194958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.14795,"y":111.1865,"z":-87.61544},"screenPosition":{"x":0.6227629,"y":0.23575397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.4748,"y":111.98259,"z":-88.29521},"screenPosition":{"x":0.65123564,"y":0.22017102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.52536,"y":113.21291,"z":-89.34577},"screenPosition":{"x":0.695837,"y":0.19576094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.4953,"y":114.03659,"z":-90.26599},"screenPosition":{"x":0.73163354,"y":0.17052563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.907,"y":114.40885,"z":-91.23451},"screenPosition":{"x":0.76206225,"y":0.13687645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.6389,"y":112.644554,"z":-91.78838},"screenPosition":{"x":0.74902976,"y":0.091071956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.59076,"y":107.89581,"z":-90.227646},"screenPosition":{"x":0.64055425,"y":0.09022451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.27948,"y":107.49426,"z":-89.28834},"screenPosition":{"x":0.61198115,"y":0.12114452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.62793,"y":109.12762,"z":-88.73109},"screenPosition":{"x":0.62119436,"y":0.16414215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.0616,"y":110.874725,"z":-88.596306},"screenPosition":{"x":0.642739,"y":0.19303109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.39484,"y":112.65112,"z":-88.432304},"screenPosition":{"x":0.6644497,"y":0.22411951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.90884,"y":114.26729,"z":-88.29414},"screenPosition":{"x":0.68490726,"y":0.25256956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.0606,"y":115.128746,"z":-87.836876},"screenPosition":{"x":0.6861622,"y":0.28337845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.13315,"y":117.733925,"z":-87.784134},"screenPosition":{"x":0.72466576,"y":0.32432273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.45966,"y":116.57767,"z":-86.52571},"screenPosition":{"x":0.6743058,"y":0.3578834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.3928,"y":113.877625,"z":-85.467255},"screenPosition":{"x":0.6073895,"y":0.35950837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.93362,"y":111.24656,"z":-85.0099},"screenPosition":{"x":0.5586956,"y":0.33859542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.3991,"y":108.99114,"z":-84.98176},"screenPosition":{"x":0.52714974,"y":0.30717865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.68918,"y":107.67826,"z":-85.48733},"screenPosition":{"x":0.52188706,"y":0.26930884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.04004,"y":107.207954,"z":-86.22437},"screenPosition":{"x":0.53351665,"y":0.23465097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.41147,"y":107.37689,"z":-87.12772},"screenPosition":{"x":0.5577455,"y":0.2023943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.42242,"y":109.47907,"z":-88.38055},"screenPosition":{"x":0.617508,"y":0.18245478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.78146,"y":112.67702,"z":-88.942406},"screenPosition":{"x":0.6776867,"y":0.2042964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.39133,"y":114.55678,"z":-88.541336},"screenPosition":{"x":0.69555384,"y":0.24684225},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-300.5661,"y":109.70956,"z":-84.13124},"screenPosition":{"x":0.5159293,"y":0.35037538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.1664,"y":113.052246,"z":-84.81669},"screenPosition":{"x":0.57916623,"y":0.37292206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.9425,"y":115.98999,"z":-85.10214},"screenPosition":{"x":0.62887824,"y":0.40631413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.49185,"y":118.97952,"z":-86.4078},"screenPosition":{"x":0.7080686,"y":0.399937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.70303,"y":119.947945,"z":-87.45161},"screenPosition":{"x":0.75082165,"y":0.37213203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.81375,"y":120.94566,"z":-88.46621},"screenPosition":{"x":0.7938677,"y":0.34561694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.37933,"y":118.123375,"z":-88.333565},"screenPosition":{"x":0.7450933,"y":0.30775642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.9559,"y":115.98851,"z":-87.64926},"screenPosition":{"x":0.694345,"y":0.30360925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.8091,"y":113.957,"z":-86.72789},"screenPosition":{"x":0.6405037,"y":0.31052998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.42142,"y":112.31834,"z":-85.81664},"screenPosition":{"x":0.5938922,"y":0.3225991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.49146,"y":111.160385,"z":-84.82788},"screenPosition":{"x":0.55297333,"y":0.34445015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.8781,"y":109.77152,"z":-83.5335},"screenPosition":{"x":0.5020429,"y":0.37441906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.02527,"y":110.925865,"z":-82.78411},"screenPosition":{"x":0.49902454,"y":0.42070046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.25876,"y":113.80673,"z":-82.85834},"screenPosition":{"x":0.5403861,"y":0.46199745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.60754,"y":117.39243,"z":-84.23928},"screenPosition":{"x":0.62738913,"y":0.46328223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.40204,"y":119.158646,"z":-85.693214},"screenPosition":{"x":0.69209474,"y":0.43214634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.9715,"y":114.96829,"z":-85.58525},"screenPosition":{"x":0.6262339,"y":0.3712519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.74863,"y":112.23727,"z":-84.82566},"screenPosition":{"x":0.56791043,"y":0.36041078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.77234,"y":109.01852,"z":-82.94474},"screenPosition":{"x":0.4775848,"y":0.38608727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.4388,"y":112.57132,"z":-82.616745},"screenPosition":{"x":0.51720935,"y":0.45235685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.08438,"y":116.36203,"z":-83.793205},"screenPosition":{"x":0.6006986,"y":0.46489215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.72708,"y":117.26679,"z":-85.70441},"screenPosition":{"x":0.6634692,"y":0.40180922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.79498,"y":114.29806,"z":-85.71782},"screenPosition":{"x":0.6198327,"y":0.35584074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.55124,"y":110.39019,"z":-84.6582},"screenPosition":{"x":0.5381743,"y":0.3398265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.99765,"y":108.23113,"z":-83.19415},"screenPosition":{"x":0.4733419,"y":0.3650129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.86786,"y":108.74452,"z":-82.54811},"screenPosition":{"x":0.46428633,"y":0.39731574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.15796,"y":113.29843,"z":-82.69541},"screenPosition":{"x":0.5292066,"y":0.46052283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.0418,"y":102.61436,"z":-85.44676},"screenPosition":{"x":0.45535907,"y":0.2026607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.67392,"y":100.539764,"z":-84.43438},"screenPosition":{"x":0.40606853,"y":0.21305358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.73227,"y":97.61921,"z":-83.729836},"screenPosition":{"x":0.35519743,"y":0.2012595},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-307.78992,"y":93.623474,"z":-82.75786},"screenPosition":{"x":0.28816804,"y":0.18604514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.81323,"y":91.2819,"z":-82.5477},"screenPosition":{"x":0.25512516,"y":0.16370003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.78104,"y":88.88004,"z":-82.66562},"screenPosition":{"x":0.22243422,"y":0.12642579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.76968,"y":87.65503,"z":-83.08355},"screenPosition":{"x":0.21084574,"y":0.09301642},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-315.8705,"y":96.85963,"z":-86.497154},"screenPosition":{"x":0.4075267,"y":0.090415806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.84012,"y":95.730965,"z":-85.47918},"screenPosition":{"x":0.37152866,"y":0.11398372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.7697,"y":94.93658,"z":-84.529755},"screenPosition":{"x":0.34205863,"y":0.13907282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.63922,"y":94.37479,"z":-83.61628},"screenPosition":{"x":0.31567496,"y":0.16492172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.02692,"y":94.598694,"z":-82.72305},"screenPosition":{"x":0.29814288,"y":0.19933766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.21973,"y":96.73865,"z":-82.59839},"screenPosition":{"x":0.3193235,"y":0.23075593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.0057,"y":100.16581,"z":-83.73552},"screenPosition":{"x":0.38533375,"y":0.23380183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.01175,"y":102.023285,"z":-84.5625},"screenPosition":{"x":0.42719716,"y":0.22770786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.04214,"y":103.15195,"z":-85.580475},"screenPosition":{"x":0.46529338,"y":0.20472062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.01242,"y":104.513214,"z":-86.634415},"screenPosition":{"x":0.5078181,"y":0.18309586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.74957,"y":103.53121,"z":-87.74784},"screenPosition":{"x":0.52154994,"y":0.12864012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.71207,"y":100.34706,"z":-87.306206},"screenPosition":{"x":0.4705461,"y":0.10516257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.86594,"y":97.15251,"z":-86.20503},"screenPosition":{"x":0.40563256,"y":0.10569276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.32898,"y":97.00076,"z":-84.8826},"screenPosition":{"x":0.37429395,"y":0.15198818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.84192,"y":97.00416,"z":-84.34329},"screenPosition":{"x":0.36204895,"y":0.17143293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.06903,"y":97.48996,"z":-83.45681},"screenPosition":{"x":0.34746593,"y":0.2094643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.59857,"y":99.50066,"z":-83.05911},"screenPosition":{"x":0.36178708,"y":0.24981016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.37927,"y":102.14553,"z":-83.63669},"screenPosition":{"x":0.40696374,"y":0.26359734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.7684,"y":105.93455,"z":-85.0828},"screenPosition":{"x":0.48911962,"y":0.26069632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.53738,"y":106.8168,"z":-85.944595},"screenPosition":{"x":0.5215178,"y":0.2399959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.35095,"y":107.071915,"z":-87.02997},"screenPosition":{"x":0.5512467,"y":0.20203412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.144,"y":106.687775,"z":-87.94903},"screenPosition":{"x":0.5683433,"y":0.161846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.77505,"y":104.41517,"z":-88.33998},"screenPosition":{"x":0.54727775,"y":0.11764375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.37567,"y":101.0139,"z":-87.71295},"screenPosition":{"x":0.4884187,"y":0.09841268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.92255,"y":98.825554,"z":-86.27811},"screenPosition":{"x":0.4279991,"y":0.124001116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.47507,"y":97.95709,"z":-85.53654},"screenPosition":{"x":0.40051627,"y":0.14020047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.32016,"y":98.124115,"z":-84.432076},"screenPosition":{"x":0.37717238,"y":0.18226352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.47192,"y":98.98557,"z":-83.97481},"screenPosition":{"x":0.37682912,"y":0.20980476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.44968,"y":102.939926,"z":-84.58612},"screenPosition":{"x":0.43912765,"y":0.2389592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.94205,"y":103.71883,"z":-85.68498},"screenPosition":{"x":0.4749725,"y":0.20827283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.4139,"y":103.858475,"z":-86.617546},"screenPosition":{"x":0.4989267,"y":0.17518297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.62366,"y":102.676544,"z":-87.12649},"screenPosition":{"x":0.4957895,"y":0.1409756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.53662,"y":101.2896,"z":-87.83992},"screenPosition":{"x":0.49488512,"y":0.097128354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.33392,"y":98.660225,"z":-87.11291},"screenPosition":{"x":0.4450937,"y":0.091450796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.35266,"y":96.61153,"z":-86.61063},"screenPosition":{"x":0.40640712,"y":0.08259723},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-314.84222,"y":91.67496,"z":-84.83528},"screenPosition":{"x":0.30091587,"y":0.08173418},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-310.40005,"y":90.174034,"z":-82.848785},"screenPosition":{"x":0.2446496,"y":0.13746522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.1857,"y":93.06361,"z":-83.852196},"screenPosition":{"x":0.30353576,"y":0.13920969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.7945,"y":94.74535,"z":-84.854454},"screenPosition":{"x":0.34573963,"y":0.12427095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.30704,"y":95.625916,"z":-85.98591},"screenPosition":{"x":0.3801664,"y":0.093150325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.12415,"y":92.560616,"z":-85.15777},"screenPosition":{"x":0.31983304,"y":0.081737116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.55994,"y":90.25172,"z":-84.37908},"screenPosition":{"x":0.27167037,"y":0.07927694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.70496,"y":88.18052,"z":-82.82739},"screenPosition":{"x":0.21459754,"y":0.11040599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.42093,"y":91.350876,"z":-83.14881},"screenPosition":{"x":0.26700008,"y":0.14241709},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-315.06543,"y":94.94358,"z":-85.72859},"screenPosition":{"x":0.36538082,"y":0.09348785},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-094540/brain-C78440-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.18559062278521554,0.9357321924806558,-0.29993563424431746,0.0,0.9246768005349867,0.26958405706322863,0.26888148082326235,0.0,0.3324589227056124,-0.2274416411580672,-0.9152821229439305,0.0,-270.5890030890962,92.85464227857724,-178.8079177877856,1.0]},"baseImage":"20190823-094540/base.webp","version":0,"savedAt":1.566553699983E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-101410-v0.json b/data/mapping/BAAAHS/dwayman/20190823-101410-v0.json new file mode 100644 index 0000000000..abd703532f --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-101410-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566555250084E12,"surfaces":[{"brainId":"C783A0","panelName":"15D","pixels":[{"modelPosition":{"x":-176.10716,"y":115.641556,"z":-104.43531},"screenPosition":{"x":0.059150565,"y":0.70571625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.3532,"y":117.45891,"z":-104.040146},"screenPosition":{"x":0.09102414,"y":0.71735233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.18124,"y":120.46722,"z":-102.997055},"screenPosition":{"x":0.1314021,"y":0.68663967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.72084,"y":122.97793,"z":-102.0102},"screenPosition":{"x":0.16152093,"y":0.6461916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.75356,"y":125.11966,"z":-100.84816},"screenPosition":{"x":0.17679207,"y":0.5703111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.13187,"y":126.55523,"z":-100.13978},"screenPosition":{"x":0.19011979,"y":0.5298212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.39714,"y":127.25895,"z":-99.99924},"screenPosition":{"x":0.20254642,"y":0.53545475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.60736,"y":127.14704,"z":-100.449905},"screenPosition":{"x":0.21370466,"y":0.58876187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.7114,"y":126.44566,"z":-101.180405},"screenPosition":{"x":0.21980466,"y":0.6585312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.13727,"y":125.970665,"z":-101.964935},"screenPosition":{"x":0.23372214,"y":0.7435387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.90842,"y":127.56744,"z":-101.77224},"screenPosition":{"x":0.2660863,"y":0.7730914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.08055,"y":128.76266,"z":-101.66384},"screenPosition":{"x":0.2923468,"y":0.8006423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.79276,"y":130.44846,"z":-101.445724},"screenPosition":{"x":0.32628244,"y":0.85469884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.38,"y":132.1553,"z":-101.0219},"screenPosition":{"x":0.35418054,"y":0.86210763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.96678,"y":134.23679,"z":-100.43549},"screenPosition":{"x":0.38666722,"y":0.8303657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.5642,"y":135.93074,"z":-100.01498},"screenPosition":{"x":0.4147153,"y":0.834507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.3775,"y":137.49355,"z":-99.602905},"screenPosition":{"x":0.43982437,"y":0.8352306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.95435,"y":139.03421,"z":-99.25358},"screenPosition":{"x":0.46636117,"y":0.84340227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.9244,"y":140.9238,"z":-98.664406},"screenPosition":{"x":0.49374294,"y":0.8327055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.8394,"y":142.89264,"z":-98.05317},"screenPosition":{"x":0.52255315,"y":0.821521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.65729,"y":144.99962,"z":-97.17912},"screenPosition":{"x":0.54613584,"y":0.7817872},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-154.39934,"y":149.11626,"z":-94.775475},"screenPosition":{"x":0.5703083,"y":0.6144667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.01944,"y":151.95964,"z":-94.74931},"screenPosition":{"x":0.63915753,"y":0.70839566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.92647,"y":149.40259,"z":-96.554535},"screenPosition":{"x":0.633836,"y":0.85264236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.9933,"y":147.82663,"z":-96.999245},"screenPosition":{"x":0.60968965,"y":0.8555416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.69914,"y":145.67197,"z":-97.776344},"screenPosition":{"x":0.581438,"y":0.881525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.79631,"y":143.31447,"z":-98.32896},"screenPosition":{"x":0.54158175,"y":0.87149286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.50974,"y":142.45427,"z":-98.31759},"screenPosition":{"x":0.5201354,"y":0.8405998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.31142,"y":141.64722,"z":-98.26331},"screenPosition":{"x":0.49872032,"y":0.8059104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.34271,"y":139.38936,"z":-99.012115},"screenPosition":{"x":0.46735814,"y":0.8246097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.67348,"y":138.36455,"z":-98.70889},"screenPosition":{"x":0.43268216,"y":0.7504662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.04454,"y":141.11295,"z":-97.656685},"screenPosition":{"x":0.4663598,"y":0.7099358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.3027,"y":142.9357,"z":-97.256454},"screenPosition":{"x":0.49824178,"y":0.72063786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.44281,"y":145.66014,"z":-96.49117},"screenPosition":{"x":0.5405207,"y":0.7158705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.91258,"y":147.41557,"z":-94.94941},"screenPosition":{"x":0.53437567,"y":0.5780645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.45485,"y":145.46088,"z":-95.00247},"screenPosition":{"x":0.48821026,"y":0.5181941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.89084,"y":142.52544,"z":-96.17925},"screenPosition":{"x":0.45391244,"y":0.56815135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.46321,"y":139.93658,"z":-97.624176},"screenPosition":{"x":0.4366023,"y":0.66526544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.00977,"y":138.97124,"z":-98.594536},"screenPosition":{"x":0.4438672,"y":0.7564178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.01497,"y":138.94482,"z":-99.27878},"screenPosition":{"x":0.4649761,"y":0.84358597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.75127,"y":141.35594,"z":-98.74028},"screenPosition":{"x":0.5068391,"y":0.8570319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.6683,"y":142.95473,"z":-98.28929},"screenPosition":{"x":0.5315651,"y":0.85401535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.5611,"y":145.14397,"z":-97.58734},"screenPosition":{"x":0.56279236,"y":0.8389803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.7798,"y":148.30748,"z":-96.16445},"screenPosition":{"x":0.5946634,"y":0.7650562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.71053,"y":150.71663,"z":-94.68455},"screenPosition":{"x":0.6065622,"y":0.6576209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.5018,"y":149.67361,"z":-93.93439},"screenPosition":{"x":0.5618411,"y":0.5387979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.66614,"y":145.47913,"z":-96.07032},"screenPosition":{"x":0.52269423,"y":0.65558326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.43152,"y":145.68889,"z":-96.70588},"screenPosition":{"x":0.54796654,"y":0.74462473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.65996,"y":148.11896,"z":-96.27324},"screenPosition":{"x":0.593436,"y":0.7726433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.61635,"y":150.70135,"z":-94.93698},"screenPosition":{"x":0.6141418,"y":0.68962073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.97772,"y":152.22433,"z":-93.69439},"screenPosition":{"x":0.62163603,"y":0.6120591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.31064,"y":154.6055,"z":-91.961395},"screenPosition":{"x":0.66350245,"y":0.5858383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.48729,"y":155.35571,"z":-89.2302},"screenPosition":{"x":0.6555424,"y":0.44237688},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-153.4074,"y":151.9759,"z":-93.13394},"screenPosition":{"x":0.6101647,"y":0.56890756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.66547,"y":154.22534,"z":-91.595436},"screenPosition":{"x":0.65015215,"y":0.5511236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.06595,"y":156.02449,"z":-89.30609},"screenPosition":{"x":0.671976,"y":0.47141096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.74461,"y":157.00777,"z":-87.19321},"screenPosition":{"x":0.6764013,"y":0.37272388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.87581,"y":156.28503,"z":-86.169556},"screenPosition":{"x":0.6486338,"y":0.28523895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.59915,"y":154.16457,"z":-86.98157},"screenPosition":{"x":0.6042208,"y":0.26455897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.59346,"y":152.43909,"z":-88.953804},"screenPosition":{"x":0.5812554,"y":0.3264931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.21776,"y":152.23665,"z":-90.58717},"screenPosition":{"x":0.59234023,"y":0.4192985},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-155.14449,"y":147.85237,"z":-95.15692},"screenPosition":{"x":0.55166686,"y":0.6197256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.67113,"y":147.49348,"z":-95.64375},"screenPosition":{"x":0.55838716,"y":0.6699496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.93053,"y":148.99565,"z":-95.83175},"screenPosition":{"x":0.6011165,"y":0.7456864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.30069,"y":150.84422,"z":-95.39515},"screenPosition":{"x":0.63230264,"y":0.7532051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.03816,"y":153.2414,"z":-94.637794},"screenPosition":{"x":0.66696006,"y":0.7380825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.76405,"y":155.63228,"z":-92.29301},"screenPosition":{"x":0.69180804,"y":0.64165574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.6601,"y":155.34785,"z":-90.31775},"screenPosition":{"x":0.6653175,"y":0.51049256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.20287,"y":153.52275,"z":-92.079926},"screenPosition":{"x":0.6379141,"y":0.5564992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.76968,"y":150.6302,"z":-94.708786},"screenPosition":{"x":0.60521626,"y":0.65777564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.45522,"y":148.0105,"z":-95.69239},"screenPosition":{"x":0.5725022,"y":0.69411147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.297,"y":146.82257,"z":-96.91774},"screenPosition":{"x":0.58253473,"y":0.8105916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.24312,"y":148.01082,"z":-97.08778},"screenPosition":{"x":0.6168005,"y":0.8733298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.25966,"y":150.75941,"z":-96.33978},"screenPosition":{"x":0.6602101,"y":0.8715986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.47142,"y":154.2764,"z":-94.540306},"screenPosition":{"x":0.6887868,"y":0.76138914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.47453,"y":153.65312,"z":-92.95138},"screenPosition":{"x":0.64924055,"y":0.61530143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.12352,"y":150.82893,"z":-94.543},"screenPosition":{"x":0.6049311,"y":0.6430612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.50627,"y":147.22827,"z":-96.245255},"screenPosition":{"x":0.57104915,"y":0.7381227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.54305,"y":145.90738,"z":-97.48453},"screenPosition":{"x":0.5781929,"y":0.8519861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.5156,"y":147.60304,"z":-97.42829},"screenPosition":{"x":0.6156162,"y":0.93153614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.27795,"y":149.61736,"z":-97.05626},"screenPosition":{"x":0.6529766,"y":0.9414578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.1318,"y":151.50357,"z":-96.494644},"screenPosition":{"x":0.6807532,"y":0.9488343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.37541,"y":152.99625,"z":-96.01637},"screenPosition":{"x":0.70457,"y":0.9068228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.79521,"y":156.05405,"z":-94.59421},"screenPosition":{"x":0.73437256,"y":0.829067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.52759,"y":157.41147,"z":-92.76361},"screenPosition":{"x":0.73985493,"y":0.7319267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.5547,"y":157.93951,"z":-90.9645},"screenPosition":{"x":0.73457205,"y":0.63946766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.74637,"y":156.54584,"z":-90.67073},"screenPosition":{"x":0.69855064,"y":0.57245266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.02124,"y":153.27171,"z":-93.65417},"screenPosition":{"x":0.6471587,"y":0.6449814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.88553,"y":154.02994,"z":-94.554306},"screenPosition":{"x":0.68335813,"y":0.75461924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.07838,"y":156.70331,"z":-92.65625},"screenPosition":{"x":0.72150004,"y":0.700953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.0582,"y":158.15152,"z":-91.01566},"screenPosition":{"x":0.740427,"y":0.6496929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.19246,"y":159.89117,"z":-88.95136},"screenPosition":{"x":0.76384264,"y":0.5807351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.0987,"y":161.34119,"z":-87.35214},"screenPosition":{"x":0.782669,"y":0.53292525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.88512,"y":162.85986,"z":-85.155014},"screenPosition":{"x":0.7987441,"y":0.44900936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.88959,"y":164.05177,"z":-83.20203},"screenPosition":{"x":0.8103153,"y":0.36717469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.28764,"y":164.53815,"z":-81.23148},"screenPosition":{"x":0.8032588,"y":0.2617114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.08241,"y":163.6576,"z":-80.58651},"screenPosition":{"x":0.775516,"y":0.19148847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.57364,"y":161.1543,"z":-82.56268},"screenPosition":{"x":0.7321304,"y":0.23094317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.77055,"y":159.66542,"z":-85.32593},"screenPosition":{"x":0.7226564,"y":0.34993234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.43518,"y":159.53781,"z":-86.2598},"screenPosition":{"x":0.7293107,"y":0.40173712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.53395,"y":159.16565,"z":-87.216446},"screenPosition":{"x":0.7294088,"y":0.44826505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.3435,"y":157.2114,"z":-90.14911},"screenPosition":{"x":0.7090318,"y":0.5641009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.12749,"y":158.07576,"z":-91.06121},"screenPosition":{"x":0.73872566,"y":0.6502053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.1304,"y":161.03647,"z":-88.86172},"screenPosition":{"x":0.7909956,"y":0.6145065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.1842,"y":161.69885,"z":-86.89353},"screenPosition":{"x":0.7875304,"y":0.5161587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.9144,"y":162.8683,"z":-84.5378},"screenPosition":{"x":0.79421455,"y":0.4093471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.46133,"y":160.61856,"z":-85.601456},"screenPosition":{"x":0.7494146,"y":0.39803445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.13838,"y":158.58183,"z":-88.11612},"screenPosition":{"x":0.7237816,"y":0.48399282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.7036,"y":157.78804,"z":-90.459145},"screenPosition":{"x":0.7269007,"y":0.6019912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.0241,"y":159.82263,"z":-90.30954},"screenPosition":{"x":0.77522975,"y":0.6625827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.84189,"y":161.44592,"z":-89.155106},"screenPosition":{"x":0.80383307,"y":0.6467553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.5977,"y":163.38675,"z":-87.08463},"screenPosition":{"x":0.8313928,"y":0.585042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.00731,"y":164.43828,"z":-85.052704},"screenPosition":{"x":0.8375699,"y":0.49517977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.49829,"y":164.32257,"z":-83.71431},"screenPosition":{"x":0.8218665,"y":0.40823245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.51805,"y":162.1599,"z":-85.58009},"screenPosition":{"x":0.7869116,"y":0.44963837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.07576,"y":160.69124,"z":-88.10731},"screenPosition":{"x":0.7744683,"y":0.55685717},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-151.56046,"y":154.89825,"z":-90.88959},"screenPosition":{"x":0.65967184,"y":0.53076994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.97362,"y":153.33153,"z":-92.43344},"screenPosition":{"x":0.63640535,"y":0.57228726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.45021,"y":151.70601,"z":-94.00693},"screenPosition":{"x":0.61225307,"y":0.61308575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.45049,"y":149.815,"z":-94.90984},"screenPosition":{"x":0.5918086,"y":0.65537626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.04808,"y":147.86426,"z":-95.62271},"screenPosition":{"x":0.566756,"y":0.6800453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.3248,"y":145.4701,"z":-96.60021},"screenPosition":{"x":0.539293,"y":0.72347426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.10574,"y":143.96173,"z":-97.07979},"screenPosition":{"x":0.5177152,"y":0.7331731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.82323,"y":141.2611,"z":-97.866714},"screenPosition":{"x":0.47670802,"y":0.74153954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.46046,"y":139.58708,"z":-98.00121},"screenPosition":{"x":0.44004202,"y":0.7013354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.56969,"y":140.84702,"z":-96.980255},"screenPosition":{"x":0.43837804,"y":0.6141599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.25809,"y":142.90889,"z":-95.03165},"screenPosition":{"x":0.42677966,"y":0.43444055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.63974,"y":146.33733,"z":-93.52782},"screenPosition":{"x":0.47632194,"y":0.3990271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.74803,"y":148.20486,"z":-93.1038},"screenPosition":{"x":0.5179252,"y":0.4368694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.60956,"y":149.00493,"z":-94.043495},"screenPosition":{"x":0.5465276,"y":0.5226262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.11952,"y":146.65823,"z":-95.90574},"screenPosition":{"x":0.546202,"y":0.6751836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.5695,"y":144.01915,"z":-97.17532},"screenPosition":{"x":0.5221139,"y":0.7475422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.76959,"y":140.60776,"z":-98.162476},"screenPosition":{"x":0.47010422,"y":0.75742084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.48442,"y":140.44797,"z":-97.39735},"screenPosition":{"x":0.44187504,"y":0.6533128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.00346,"y":142.30081,"z":-95.8022},"screenPosition":{"x":0.43642533,"y":0.51243544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.48082,"y":146.03995,"z":-94.29588},"screenPosition":{"x":0.47992122,"y":0.4468628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.14986,"y":148.30153,"z":-93.93689},"screenPosition":{"x":0.52830267,"y":0.49183685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.10251,"y":149.12418,"z":-94.38942},"screenPosition":{"x":0.5583106,"y":0.56489724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.58617,"y":146.7168,"z":-96.000114},"screenPosition":{"x":0.55057245,"y":0.6894617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.58258,"y":144.9202,"z":-97.00575},"screenPosition":{"x":0.53859746,"y":0.75699276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.18938,"y":142.19525,"z":-98.05274},"screenPosition":{"x":0.50548077,"y":0.7975184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.30893,"y":139.99419,"z":-98.75705},"screenPosition":{"x":0.47406337,"y":0.81242526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.35802,"y":138.45679,"z":-98.96435},"screenPosition":{"x":0.44306654,"y":0.7866028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.3708,"y":137.52539,"z":-98.91664},"screenPosition":{"x":0.41875517,"y":0.74815315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.76881,"y":135.84303,"z":-99.33315},"screenPosition":{"x":0.39088032,"y":0.7439546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.9492,"y":134.48378,"z":-99.20894},"screenPosition":{"x":0.3536604,"y":0.681261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.07593,"y":136.80736,"z":-97.72217},"screenPosition":{"x":0.36316368,"y":0.57003057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.17773,"y":139.50853,"z":-96.526306},"screenPosition":{"x":0.39123553,"y":0.50968355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.53018,"y":142.2448,"z":-95.7082},"screenPosition":{"x":0.43206596,"y":0.49841836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.28764,"y":143.40123,"z":-95.93445},"screenPosition":{"x":0.46754122,"y":0.56677246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.83972,"y":141.5834,"z":-97.27376},"screenPosition":{"x":0.46571428,"y":0.67642397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.75108,"y":138.0635,"z":-99.04683},"screenPosition":{"x":0.4360701,"y":0.78346175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.59775,"y":136.27293,"z":-99.409546},"screenPosition":{"x":0.40381092,"y":0.76847214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.43555,"y":133.57521,"z":-100.168175},"screenPosition":{"x":0.36197442,"y":0.7733036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.90456,"y":132.53607,"z":-100.06477},"screenPosition":{"x":0.33326387,"y":0.7243347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.53317,"y":131.98866,"z":-99.71197},"screenPosition":{"x":0.3086421,"y":0.6602097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.28252,"y":133.57042,"z":-98.18281},"screenPosition":{"x":0.29890096,"y":0.5187743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.73291,"y":135.37273,"z":-97.07433},"screenPosition":{"x":0.3074467,"y":0.43753293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.7341,"y":138.03772,"z":-96.14143},"screenPosition":{"x":0.34293497,"y":0.40918845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.86615,"y":139.92667,"z":-96.19009},"screenPosition":{"x":0.39068893,"y":0.48030338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.10715,"y":137.87373,"z":-97.70137},"screenPosition":{"x":0.38861442,"y":0.60413873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.37038,"y":134.2333,"z":-99.22309},"screenPosition":{"x":0.34804195,"y":0.67463404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.4805,"y":133.88026,"z":-98.902374},"screenPosition":{"x":0.32926264,"y":0.62148833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.95493,"y":134.37589,"z":-97.681984},"screenPosition":{"x":0.3024969,"y":0.48165423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.95497,"y":137.54515,"z":-96.30572},"screenPosition":{"x":0.33627146,"y":0.41411814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.54965,"y":139.46828,"z":-96.23559},"screenPosition":{"x":0.3809986,"y":0.4709302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.8123,"y":137.9256,"z":-97.52044},"screenPosition":{"x":0.3840947,"y":0.58251196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.86566,"y":134.77496,"z":-98.65197},"screenPosition":{"x":0.34305093,"y":0.61970055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.0885,"y":133.33318,"z":-98.55407},"screenPosition":{"x":0.30466676,"y":0.5576125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.55682,"y":134.3622,"z":-97.32807},"screenPosition":{"x":0.29097536,"y":0.43597972},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-168.28204,"y":140.64867,"z":-95.33383},"screenPosition":{"x":0.38108975,"y":0.39508528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.42575,"y":143.21121,"z":-94.18876},"screenPosition":{"x":0.40731725,"y":0.33596262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.88222,"y":141.24185,"z":-94.49212},"screenPosition":{"x":0.36880258,"y":0.30731198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.66698,"y":138.61414,"z":-95.68156},"screenPosition":{"x":0.34252405,"y":0.37060672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.73337,"y":137.93604,"z":-96.635056},"screenPosition":{"x":0.3562149,"y":0.4693883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.74971,"y":136.29265,"z":-97.12038},"screenPosition":{"x":0.3314146,"y":0.47503778},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-168.76488,"y":142.55302,"z":-94.39839},"screenPosition":{"x":0.39796627,"y":0.34120384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.58366,"y":144.70042,"z":-94.18053},"screenPosition":{"x":0.4434828,"y":0.38604385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.10042,"y":144.83948,"z":-94.90265},"screenPosition":{"x":0.46986064,"y":0.4838627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.02592,"y":141.61589,"z":-96.54388},"screenPosition":{"x":0.44328126,"y":0.5845104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.29578,"y":140.73596,"z":-97.53931},"screenPosition":{"x":0.45342937,"y":0.6818802},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-160.45581,"y":135.7539,"z":-99.21752},"screenPosition":{"x":0.38500202,"y":0.72597855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.29207,"y":133.23085,"z":-100.349945},"screenPosition":{"x":0.3594454,"y":0.785025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.46257,"y":131.51158,"z":-100.833595},"screenPosition":{"x":0.33268052,"y":0.7879327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.00087,"y":129.62386,"z":-101.30777},"screenPosition":{"x":0.3016009,"y":0.78403133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.96576,"y":128.24017,"z":-101.24258},"screenPosition":{"x":0.26607865,"y":0.7286125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.4131,"y":127.972145,"z":-100.80918},"screenPosition":{"x":0.2454081,"y":0.66336936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.18272,"y":129.75653,"z":-99.636765},"screenPosition":{"x":0.25182045,"y":0.574223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.32881,"y":132.94804,"z":-98.21804},"screenPosition":{"x":0.28479385,"y":0.50188005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.1252,"y":134.88857,"z":-97.87039},"screenPosition":{"x":0.32094744,"y":0.523185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.97606,"y":133.71362,"z":-99.31271},"screenPosition":{"x":0.33827683,"y":0.66852736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.58678,"y":132.08139,"z":-100.3336},"screenPosition":{"x":0.33089745,"y":0.7435966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.51454,"y":129.4268,"z":-101.27794},"screenPosition":{"x":0.2958993,"y":0.7735086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.28836,"y":127.39861,"z":-101.53555},"screenPosition":{"x":0.25500634,"y":0.7375082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.77571,"y":126.89394,"z":-101.19593},"screenPosition":{"x":0.23126444,"y":0.6759202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.00662,"y":128.19995,"z":-100.12763},"screenPosition":{"x":0.22919989,"y":0.5835124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.55309,"y":130.62488,"z":-98.727196},"screenPosition":{"x":0.24414869,"y":0.4873421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.5865,"y":133.61427,"z":-97.64619},"screenPosition":{"x":0.2830298,"y":0.45178685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.06955,"y":135.47711,"z":-97.40267},"screenPosition":{"x":0.32076263,"y":0.48442096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.23442,"y":134.23836,"z":-98.802155},"screenPosition":{"x":0.33488193,"y":0.62107044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.5742,"y":131.92354,"z":-100.18033},"screenPosition":{"x":0.32217604,"y":0.71853447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.47905,"y":129.12401,"z":-101.19276},"screenPosition":{"x":0.28571278,"y":0.7520908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.49825,"y":126.3505,"z":-101.94355},"screenPosition":{"x":0.24200462,"y":0.7535258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.52644,"y":125.798775,"z":-101.50286},"screenPosition":{"x":0.21481612,"y":0.6783933},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-172.91737,"y":130.98764,"z":-98.48783},"screenPosition":{"x":0.24561188,"y":0.46956062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.21918,"y":132.75044,"z":-98.328476},"screenPosition":{"x":0.28358066,"y":0.50954276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.67911,"y":134.08694,"z":-98.09407},"screenPosition":{"x":0.30880758,"y":0.5254415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.67972,"y":133.21997,"z":-98.91971},"screenPosition":{"x":0.31353816,"y":0.60070205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.90489,"y":131.0787,"z":-100.24826},"screenPosition":{"x":0.30345717,"y":0.6978652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.53036,"y":128.8773,"z":-101.06371},"screenPosition":{"x":0.2755699,"y":0.72703946},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-171.26204,"y":126.923294,"z":-100.62464},"screenPosition":{"x":0.21411166,"y":0.6039889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.39781,"y":130.13644,"z":-98.974174},"screenPosition":{"x":0.24017899,"y":0.5025205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.20528,"y":133.12657,"z":-98.16826},"screenPosition":{"x":0.28747734,"y":0.5013546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.60422,"y":132.78795,"z":-99.124275},"screenPosition":{"x":0.30967677,"y":0.6126131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.0853,"y":129.89684,"z":-100.72097},"screenPosition":{"x":0.28959665,"y":0.71801335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.56409,"y":126.64025,"z":-101.578285},"screenPosition":{"x":0.23723164,"y":0.716333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.54095,"y":127.244644,"z":-100.64708},"screenPosition":{"x":0.22236966,"y":0.617447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.61362,"y":130.03194,"z":-99.42038},"screenPosition":{"x":0.25149542,"y":0.55555344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.44595,"y":132.26195,"z":-98.71431},"screenPosition":{"x":0.28380936,"y":0.54201305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.79869,"y":131.23611,"z":-99.75447},"screenPosition":{"x":0.29158717,"y":0.63982844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.00594,"y":129.29274,"z":-100.55183},"screenPosition":{"x":0.26943526,"y":0.6755382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.58731,"y":128.08377,"z":-100.72157},"screenPosition":{"x":0.2453946,"y":0.6560136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.39714,"y":127.25895,"z":-99.99924},"screenPosition":{"x":0.20254642,"y":0.53545475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.41162,"y":131.69135,"z":-98.07121},"screenPosition":{"x":0.24913375,"y":0.43919602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.0639,"y":132.29082,"z":-99.01224},"screenPosition":{"x":0.29375613,"y":0.5806843},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-166.5493,"y":126.646416,"z":-101.80357},"screenPosition":{"x":0.24511565,"y":0.7460352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.90128,"y":124.48068,"z":-102.44033},"screenPosition":{"x":0.21185096,"y":0.7529308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.15086,"y":122.48733,"z":-102.80058},"screenPosition":{"x":0.1745609,"y":0.73076594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.60165,"y":123.1596,"z":-101.733444},"screenPosition":{"x":0.15703146,"y":0.6167452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.20952,"y":127.53048,"z":-99.92348},"screenPosition":{"x":0.20650771,"y":0.534604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.77914,"y":130.36832,"z":-97.88924},"screenPosition":{"x":0.21125293,"y":0.37104976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.99684,"y":132.18878,"z":-97.274445},"screenPosition":{"x":0.23593508,"y":0.35390866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.8685,"y":133.52971,"z":-97.39491},"screenPosition":{"x":0.2725709,"y":0.41543335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.35953,"y":137.40147,"z":-95.827934},"screenPosition":{"x":0.31747377,"y":0.34744096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.65054,"y":138.20027,"z":-94.741745},"screenPosition":{"x":0.3023498,"y":0.23493792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.46753,"y":136.57413,"z":-94.81506},"screenPosition":{"x":0.26490733,"y":0.18851815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.95567,"y":133.32178,"z":-96.117744},"screenPosition":{"x":0.2262475,"y":0.24372555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.32898,"y":131.88719,"z":-97.330795},"screenPosition":{"x":0.23061803,"y":0.3515176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.37463,"y":132.83179,"z":-97.80893},"screenPosition":{"x":0.26903737,"y":0.4456554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.32501,"y":134.34381,"z":-97.38813},"screenPosition":{"x":0.2924303,"y":0.4430384},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-167.80408,"y":145.30997,"z":-92.241905},"screenPosition":{"x":0.4388233,"y":0.28402779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.6033,"y":147.07072,"z":-92.12217},"screenPosition":{"x":0.48074135,"y":0.33706778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.60355,"y":148.07404,"z":-91.56748},"screenPosition":{"x":0.499948,"y":0.33713225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.20624,"y":148.83823,"z":-91.52032},"screenPosition":{"x":0.5179849,"y":0.36211804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.95055,"y":149.55728,"z":-91.44106},"screenPosition":{"x":0.5350135,"y":0.38022813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.77902,"y":150.40833,"z":-91.1615},"screenPosition":{"x":0.553142,"y":0.39212096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.62729,"y":150.03072,"z":-91.09166},"screenPosition":{"x":0.543103,"y":0.37559825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.20148,"y":149.52626,"z":-90.738045},"screenPosition":{"x":0.5272446,"y":0.33746412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.32109,"y":148.47157,"z":-89.50972},"screenPosition":{"x":0.48987952,"y":0.22321153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.11644,"y":150.14375,"z":-87.132164},"screenPosition":{"x":0.50791407,"y":0.1332351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.63484,"y":152.83276,"z":-85.52871},"screenPosition":{"x":0.558244,"y":0.12633565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.88177,"y":153.81845,"z":-86.02909},"screenPosition":{"x":0.5871908,"y":0.19103593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.46596,"y":153.5028,"z":-87.81531},"screenPosition":{"x":0.59665054,"y":0.29093412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.40733,"y":152.38966,"z":-89.710365},"screenPosition":{"x":0.5876497,"y":0.37019503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.74568,"y":150.63757,"z":-92.10019},"screenPosition":{"x":0.5677783,"y":0.4581876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.1673,"y":148.72151,"z":-94.03766},"screenPosition":{"x":0.5395452,"y":0.5125058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.56808,"y":146.03986,"z":-94.950264},"screenPosition":{"x":0.50075173,"y":0.5309335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.45024,"y":145.51367,"z":-94.30664},"screenPosition":{"x":0.46738446,"y":0.43032864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.9882,"y":148.21387,"z":-91.18086},"screenPosition":{"x":0.49956223,"y":0.31901443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.3824,"y":150.21269,"z":-90.43827},"screenPosition":{"x":0.5411403,"y":0.34223464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.61382,"y":151.36458,"z":-90.75817},"screenPosition":{"x":0.5725425,"y":0.40043452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.19609,"y":151.3452,"z":-92.207466},"screenPosition":{"x":0.5861192,"y":0.48913738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.22073,"y":149.04865,"z":-95.0696},"screenPosition":{"x":0.5781489,"y":0.6495857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.00807,"y":146.77284,"z":-95.43171},"screenPosition":{"x":0.5340088,"y":0.6179597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.26703,"y":145.69302,"z":-94.719215},"screenPosition":{"x":0.48491216,"y":0.48933834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.1941,"y":148.27065,"z":-92.76542},"screenPosition":{"x":0.5161855,"y":0.41886923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.09189,"y":150.94621,"z":-90.95335},"screenPosition":{"x":0.5639421,"y":0.39934525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.78192,"y":151.36862,"z":-91.83493},"screenPosition":{"x":0.58293205,"y":0.46746686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.08798,"y":151.33762,"z":-93.460526},"screenPosition":{"x":0.59798616,"y":0.5665608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.30128,"y":150.89354,"z":-94.25036},"screenPosition":{"x":0.597195,"y":0.6076819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.26727,"y":150.8268,"z":-94.73628},"screenPosition":{"x":0.6108065,"y":0.6682003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.6284,"y":150.90706,"z":-95.294235},"screenPosition":{"x":0.63075894,"y":0.7422632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.25444,"y":152.2167,"z":-95.25883},"screenPosition":{"x":0.6616667,"y":0.7826857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.3947,"y":154.0445,"z":-94.8829},"screenPosition":{"x":0.6944076,"y":0.7971505},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-145.6851,"y":157.57628,"z":-91.301994},"screenPosition":{"x":0.72920144,"y":0.64762855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.78107,"y":160.56647,"z":-88.42364},"screenPosition":{"x":0.77418023,"y":0.57246107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.53624,"y":160.67462,"z":-90.21563},"screenPosition":{"x":0.795167,"y":0.6860173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.42815,"y":158.93362,"z":-92.856316},"screenPosition":{"x":0.7769734,"y":0.7904094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.74687,"y":157.06767,"z":-94.6142},"screenPosition":{"x":0.7598029,"y":0.86644137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.2639,"y":154.64417,"z":-95.55045},"screenPosition":{"x":0.72980905,"y":0.9035829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.94278,"y":152.71068,"z":-96.012924},"screenPosition":{"x":0.69775707,"y":0.8965337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.15193,"y":151.65613,"z":-95.97458},"screenPosition":{"x":0.6707414,"y":0.85539544},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-151.12312,"y":152.39362,"z":-94.00569},"screenPosition":{"x":0.6290607,"y":0.6366212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.84924,"y":142.3121,"z":-95.60729},"screenPosition":{"x":0.43048507,"y":0.48734072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.23741,"y":141.62856,"z":-95.14298},"screenPosition":{"x":0.39899078,"y":0.40430123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.90694,"y":143.1787,"z":-93.43252},"screenPosition":{"x":0.39814228,"y":0.28465426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.22632,"y":144.6804,"z":-90.94015},"screenPosition":{"x":0.41095835,"y":0.18286063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.99138,"y":147.24265,"z":-88.74544},"screenPosition":{"x":0.4524668,"y":0.13379657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.24156,"y":149.29765,"z":-88.02374},"screenPosition":{"x":0.49579367,"y":0.15945509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.75534,"y":149.5059,"z":-89.84402},"screenPosition":{"x":0.5183163,"y":0.28019974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.9361,"y":148.34668,"z":-92.24067},"screenPosition":{"x":0.5129473,"y":0.38945514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.00632,"y":145.1509,"z":-94.78856},"screenPosition":{"x":0.47384074,"y":0.47994724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.78772,"y":142.78957,"z":-95.63842},"screenPosition":{"x":0.44315526,"y":0.50773585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.43243,"y":140.05563,"z":-96.456154},"screenPosition":{"x":0.40231442,"y":0.5189171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.46442,"y":138.14789,"z":-96.60348},"screenPosition":{"x":0.36033928,"y":0.47233397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.48148,"y":136.99948,"z":-96.64905},"screenPosition":{"x":0.3339021,"y":0.43965298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.32126,"y":137.6296,"z":-95.73747},"screenPosition":{"x":0.32009083,"y":0.34327227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.97737,"y":139.15897,"z":-94.476654},"screenPosition":{"x":0.3175494,"y":0.23482662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.58551,"y":141.14098,"z":-92.40565},"screenPosition":{"x":0.33855882,"y":0.12516157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.77444,"y":143.076,"z":-91.26672},"screenPosition":{"x":0.37494615,"y":0.14847024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.7773,"y":144.87097,"z":-90.39745},"screenPosition":{"x":0.41044512,"y":0.15673997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.4147,"y":145.10558,"z":-91.524376},"screenPosition":{"x":0.42692232,"y":0.23252574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.17741,"y":144.4204,"z":-93.62688},"screenPosition":{"x":0.4303849,"y":0.3393426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.23758,"y":141.14761,"z":-95.57644},"screenPosition":{"x":0.40108404,"y":0.44409266},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-171.70288,"y":139.37929,"z":-95.11658},"screenPosition":{"x":0.34312326,"y":0.32358363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.04997,"y":139.45757,"z":-94.55531},"screenPosition":{"x":0.32716954,"y":0.25416094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.99858,"y":141.22679,"z":-92.6542},"screenPosition":{"x":0.34291062,"y":0.16937494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.50845,"y":142.79662,"z":-91.74253},"screenPosition":{"x":0.3725414,"y":0.16676255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.91225,"y":144.57178,"z":-91.2495},"screenPosition":{"x":0.41122103,"y":0.19715409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.32413,"y":144.40395,"z":-92.37846},"screenPosition":{"x":0.41797462,"y":0.26138166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.43628,"y":142.25873,"z":-95.0493},"screenPosition":{"x":0.41146368,"y":0.41452825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.36165,"y":139.05232,"z":-95.55987},"screenPosition":{"x":0.34923798,"y":0.3693096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.10579,"y":140.12106,"z":-94.4793},"screenPosition":{"x":0.3409792,"y":0.26717824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.3731,"y":142.05017,"z":-92.083885},"screenPosition":{"x":0.35756576,"y":0.16229247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.4021,"y":143.61407,"z":-90.872536},"screenPosition":{"x":0.38404512,"y":0.1167201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.2792,"y":145.23677,"z":-89.68377},"screenPosition":{"x":0.41237494,"y":0.11146257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.12247,"y":147.09425,"z":-88.837395},"screenPosition":{"x":0.44972235,"y":0.13423438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.33572,"y":148.4126,"z":-88.38778},"screenPosition":{"x":0.4775812,"y":0.15333053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.61684,"y":149.49629,"z":-88.756165},"screenPosition":{"x":0.507697,"y":0.21168236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.85461,"y":148.68294,"z":-91.31478},"screenPosition":{"x":0.51234394,"y":0.34300256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.73204,"y":145.57057,"z":-93.75794},"screenPosition":{"x":0.45978,"y":0.38696423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.01273,"y":142.86826,"z":-94.87976},"screenPosition":{"x":0.42095655,"y":0.4135481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.01509,"y":143.15651,"z":-93.984276},"screenPosition":{"x":0.40295163,"y":0.3187257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.4928,"y":145.13283,"z":-91.4472},"screenPosition":{"x":0.42685392,"y":0.22893722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.62665,"y":147.73303,"z":-88.99147},"screenPosition":{"x":0.46682966,"y":0.16572191},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-163.40892,"y":146.93205,"z":-92.985435},"screenPosition":{"x":0.48558354,"y":0.3868367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.00975,"y":149.10582,"z":-90.15037},"screenPosition":{"x":0.511556,"y":0.2847085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.0858,"y":150.09413,"z":-88.38747},"screenPosition":{"x":0.518685,"y":0.2102751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.69441,"y":151.51637,"z":-86.40533},"screenPosition":{"x":0.5344987,"y":0.13530922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.1927,"y":152.69368,"z":-86.53868},"screenPosition":{"x":0.5645795,"y":0.1840047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.44255,"y":153.14311,"z":-87.05897},"screenPosition":{"x":0.58057725,"y":0.23169309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.67201,"y":152.89441,"z":-88.978195},"screenPosition":{"x":0.5924975,"y":0.3440207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.85907,"y":156.07169,"z":-86.42289},"screenPosition":{"x":0.6460946,"y":0.29282373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.14626,"y":156.66277,"z":-84.39831},"screenPosition":{"x":0.6410798,"y":0.18760595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.4359,"y":156.21254,"z":-83.56049},"screenPosition":{"x":0.6220081,"y":0.12020454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.47795,"y":154.73573,"z":-84.04019},"screenPosition":{"x":0.5889989,"y":0.078684196},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-162.1974,"y":151.71478,"z":-88.24319},"screenPosition":{"x":0.5570295,"y":0.25606176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.27643,"y":153.00143,"z":-85.5478},"screenPosition":{"x":0.56257665,"y":0.13314243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.91464,"y":155.13521,"z":-83.91689},"screenPosition":{"x":0.5989986,"y":0.10577548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.29109,"y":167.1594,"z":-76.46755},"screenPosition":{"x":0.81842804,"y":0.036106102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.00018,"y":168.49812,"z":-75.701996},"screenPosition":{"x":0.843703,"y":0.031415507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.78635,"y":169.99437,"z":-74.711205},"screenPosition":{"x":0.87046653,"y":0.026448652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.57555,"y":171.73456,"z":-73.44026},"screenPosition":{"x":0.9002095,"y":0.02092887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.05348,"y":173.58247,"z":-72.230156},"screenPosition":{"x":0.9333115,"y":0.014785701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.20906,"y":175.29922,"z":-71.35997},"screenPosition":{"x":0.9670295,"y":0.008528221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.95793,"y":177.0316,"z":-71.66711},"screenPosition":{"x":0.99577105,"y":0.034656156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.89178,"y":176.79178,"z":-71.31431},"screenPosition":{"x":1.0197685,"y":0.104066715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.97955,"y":175.63454,"z":-73.52028},"screenPosition":{"x":1.0159751,"y":0.21105862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.60153,"y":173.41698,"z":-77.77291},"screenPosition":{"x":0.9660822,"y":0.2890645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.60979,"y":171.7661,"z":-76.925835},"screenPosition":{"x":0.9373991,"y":0.2447614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.81335,"y":172.55107,"z":-74.72938},"screenPosition":{"x":0.93672186,"y":0.13376765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.48619,"y":174.49004,"z":-72.11972},"screenPosition":{"x":0.9590498,"y":0.038562894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.10014,"y":176.43025,"z":-70.72399},"screenPosition":{"x":0.9886512,"y":0.02616994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.1131,"y":177.25697,"z":-70.59166},"screenPosition":{"x":1.0226426,"y":0.081319325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.30762,"y":175.67361,"z":-73.36676},"screenPosition":{"x":1.0143232,"y":0.19938968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.42903,"y":174.30814,"z":-76.267555},"screenPosition":{"x":0.9730437,"y":0.22608541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.72964,"y":172.51042,"z":-76.59606},"screenPosition":{"x":0.9536822,"y":0.24809752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.74925,"y":171.37138,"z":-77.29392},"screenPosition":{"x":0.9325324,"y":0.25224766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.3349,"y":169.36235,"z":-78.65035},"screenPosition":{"x":0.89528906,"y":0.26907852},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-147.0577,"y":166.32202,"z":-80.5123},"screenPosition":{"x":0.83997643,"y":0.27838197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.86247,"y":165.55426,"z":-79.73271},"screenPosition":{"x":0.813698,"y":0.20368704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.8884,"y":166.76239,"z":-77.15827},"screenPosition":{"x":0.8184877,"y":0.08556932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.44681,"y":169.27705,"z":-75.73015},"screenPosition":{"x":0.86626214,"y":0.08338339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.4353,"y":169.96465,"z":-76.132935},"screenPosition":{"x":0.88695556,"y":0.13196571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.15413,"y":169.27943,"z":-78.261375},"screenPosition":{"x":0.8892907,"y":0.24257138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.50305,"y":167.6399,"z":-80.516525},"screenPosition":{"x":0.87225336,"y":0.32389835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.73306,"y":165.63377,"z":-82.66986},"screenPosition":{"x":0.84389365,"y":0.38850698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.85764,"y":163.27707,"z":-84.10489},"screenPosition":{"x":0.79919976,"y":0.39786106},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-149.13036,"y":165.89899,"z":-79.77152},"screenPosition":{"x":0.82213974,"y":0.21863419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.03317,"y":167.53421,"z":-79.14359},"screenPosition":{"x":0.8564628,"y":0.23515391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.13832,"y":168.82117,"z":-78.79361},"screenPosition":{"x":0.8845767,"y":0.2576496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.32582,"y":169.35718,"z":-79.842186},"screenPosition":{"x":0.9077738,"y":0.34106296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.60979,"y":168.57805,"z":-81.744194},"screenPosition":{"x":0.9070099,"y":0.43222407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.20364,"y":166.38672,"z":-84.48439},"screenPosition":{"x":0.87823224,"y":0.52832997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.09055,"y":164.80295,"z":-84.58745},"screenPosition":{"x":0.84110296,"y":0.47993183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.26611,"y":166.08875,"z":-81.83605},"screenPosition":{"x":0.84700257,"y":0.3524378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.80847,"y":167.88786,"z":-80.05328},"screenPosition":{"x":0.87299615,"y":0.30499476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.30396,"y":169.80128,"z":-78.75806},"screenPosition":{"x":0.9080014,"y":0.28939658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.33241,"y":171.4061,"z":-78.090645},"screenPosition":{"x":0.941045,"y":0.3028334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.64578,"y":172.76595,"z":-79.12246},"screenPosition":{"x":0.9625578,"y":0.34863818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.38007,"y":171.25372,"z":-80.48001},"screenPosition":{"x":0.9699621,"y":0.47464424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.45926,"y":170.03296,"z":-83.48914},"screenPosition":{"x":0.9382876,"y":0.5272412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.23947,"y":168.05235,"z":-84.333534},"screenPosition":{"x":0.91905624,"y":0.574699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.01303,"y":166.7229,"z":-85.9842},"screenPosition":{"x":0.90241337,"y":0.6313803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.14366,"y":165.77652,"z":-87.57726},"screenPosition":{"x":0.89458686,"y":0.6976451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.9938,"y":163.63043,"z":-90.11454},"screenPosition":{"x":0.86649644,"y":0.7812502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.05147,"y":162.05385,"z":-90.6989},"screenPosition":{"x":0.83355236,"y":0.763339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.33182,"y":161.43694,"z":-90.05675},"screenPosition":{"x":0.81228566,"y":0.70234454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.21994,"y":162.14507,"z":-88.13418},"screenPosition":{"x":0.8107488,"y":0.6078084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.91174,"y":164.39488,"z":-85.74892},"screenPosition":{"x":0.84320515,"y":0.53685206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.55692,"y":165.77103,"z":-84.9784},"screenPosition":{"x":0.8694555,"y":0.53633904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.83434,"y":167.43697,"z":-84.09429},"screenPosition":{"x":0.90170217,"y":0.53873545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.90445,"y":169.1442,"z":-82.69514},"screenPosition":{"x":0.9300049,"y":0.5106191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.47226,"y":171.12389,"z":-81.64637},"screenPosition":{"x":0.9472479,"y":0.45045868},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-141.33731,"y":171.63776,"z":-77.823425},"screenPosition":{"x":0.94335455,"y":0.2952491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.37619,"y":169.72073,"z":-78.80733},"screenPosition":{"x":0.90671283,"y":0.2893902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.20447,"y":162.74951,"z":-90.99538},"screenPosition":{"x":0.85342044,"y":0.8056077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.28107,"y":161.37633,"z":-93.10734},"screenPosition":{"x":0.84014523,"y":0.88938624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.2862,"y":159.25945,"z":-94.6645},"screenPosition":{"x":0.81470025,"y":0.94816285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.75916,"y":157.06581,"z":-95.06153},"screenPosition":{"x":0.7735136,"y":0.9238799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.27516,"y":158.34454,"z":-93.61882},"screenPosition":{"x":0.76994747,"y":0.81735885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.59012,"y":159.95177,"z":-91.598946},"screenPosition":{"x":0.79079074,"y":0.74695444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.62544,"y":161.77808,"z":-89.49416},"screenPosition":{"x":0.81446487,"y":0.6797221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.22598,"y":163.54604,"z":-87.7126},"screenPosition":{"x":0.8413292,"y":0.6294431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.58092,"y":165.43225,"z":-87.12169},"screenPosition":{"x":0.8817839,"y":0.65757984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.64026,"y":165.21938,"z":-88.51015},"screenPosition":{"x":0.8899317,"y":0.73634803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.43106,"y":164.87984,"z":-90.20166},"screenPosition":{"x":0.9022595,"y":0.83597165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.44824,"y":163.89006,"z":-91.911224},"screenPosition":{"x":0.8939636,"y":0.907061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.44022,"y":161.82718,"z":-94.18879},"screenPosition":{"x":0.85860604,"y":0.99606603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.83206,"y":160.12483,"z":-94.61536},"screenPosition":{"x":0.8307898,"y":0.988679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.71378,"y":158.4379,"z":-94.92519},"screenPosition":{"x":0.7995785,"y":0.9803903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.70613,"y":158.43636,"z":-94.47829},"screenPosition":{"x":0.7889554,"y":0.8959795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.4656,"y":156.3871,"z":-95.19756},"screenPosition":{"x":0.76172787,"y":0.9180224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.35541,"y":154.69334,"z":-95.508545},"screenPosition":{"x":0.7297619,"y":0.8998808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.34619,"y":153.94742,"z":-95.16059},"screenPosition":{"x":0.70087403,"y":0.8294957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.90428,"y":155.803,"z":-93.19604},"screenPosition":{"x":0.7046694,"y":0.7035014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.60403,"y":157.33467,"z":-91.625534},"screenPosition":{"x":0.72678304,"y":0.65898466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.56474,"y":160.15384,"z":-88.43188},"screenPosition":{"x":0.7646803,"y":0.5582658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.2876,"y":161.95935,"z":-88.30615},"screenPosition":{"x":0.80822635,"y":0.61175466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.92279,"y":158.83025,"z":-92.09201},"screenPosition":{"x":0.76809967,"y":0.73901004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.5994,"y":157.63707,"z":-94.17542},"screenPosition":{"x":0.75976175,"y":0.82962024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.72859,"y":155.2471,"z":-95.18424},"screenPosition":{"x":0.7334182,"y":0.87716407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.96541,"y":153.60411,"z":-95.84451},"screenPosition":{"x":0.7141525,"y":0.90558964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.14491,"y":150.74406,"z":-96.59687},"screenPosition":{"x":0.66824275,"y":0.9040273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.94069,"y":149.93689,"z":-96.543976},"screenPosition":{"x":0.6468144,"y":0.8695136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.61584,"y":149.30542,"z":-96.441864},"screenPosition":{"x":0.6281175,"y":0.8347109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.19725,"y":148.4224,"z":-96.020775},"screenPosition":{"x":0.59303814,"y":0.7503843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.90247,"y":147.17542,"z":-95.95455},"screenPosition":{"x":0.56030947,"y":0.6993737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.18816,"y":149.95761,"z":-94.45756},"screenPosition":{"x":0.5808978,"y":0.6021635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.69376,"y":148.61928,"z":-94.47586},"screenPosition":{"x":0.5487238,"y":0.55863124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.68529,"y":150.4946,"z":-91.708694},"screenPosition":{"x":0.5605153,"y":0.42900708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.9143,"y":152.2811,"z":-89.53499},"screenPosition":{"x":0.58321774,"y":0.35598072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.46341,"y":154.35757,"z":-88.022064},"screenPosition":{"x":0.6195475,"y":0.33310387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.03418,"y":155.95233,"z":-87.046005},"screenPosition":{"x":0.64916855,"y":0.3273555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.22943,"y":157.6191,"z":-86.20946},"screenPosition":{"x":0.68189275,"y":0.3327283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.81413,"y":159.15523,"z":-85.88237},"screenPosition":{"x":0.71632195,"y":0.36520034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.27812,"y":159.90503,"z":-86.523796},"screenPosition":{"x":0.7397064,"y":0.43267944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.15887,"y":159.97487,"z":-87.69508},"screenPosition":{"x":0.75380665,"y":0.50572586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.07709,"y":158.68324,"z":-90.39778},"screenPosition":{"x":0.74715316,"y":0.6300291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.31206,"y":157.2143,"z":-91.935234},"screenPosition":{"x":0.7262821,"y":0.6745531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.92424,"y":154.87654,"z":-94.17797},"screenPosition":{"x":0.6923181,"y":0.73515403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.40863,"y":154.05145,"z":-93.716354},"screenPosition":{"x":0.66682976,"y":0.67561215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.37488,"y":152.9957,"z":-93.17007},"screenPosition":{"x":0.63575083,"y":0.6054914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.02261,"y":153.84453,"z":-91.22885},"screenPosition":{"x":0.6378424,"y":0.5142927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.98616,"y":155.14273,"z":-89.17874},"screenPosition":{"x":0.64987874,"y":0.4317746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.76376,"y":156.79272,"z":-86.83699},"screenPosition":{"x":0.66771483,"y":0.34325564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.72469,"y":158.3419,"z":-85.09234},"screenPosition":{"x":0.68817973,"y":0.29005316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.67674,"y":160.45013,"z":-83.30531},"screenPosition":{"x":0.7232091,"y":0.24989997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.61406,"y":162.05412,"z":-82.69264},"screenPosition":{"x":0.75655144,"y":0.2669975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.54774,"y":160.8678,"z":-85.26605},"screenPosition":{"x":0.7517976,"y":0.38669077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.2665,"y":158.61523,"z":-86.8218},"screenPosition":{"x":0.71214926,"y":0.40489787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.11383,"y":158.0951,"z":-85.73454},"screenPosition":{"x":0.6883754,"y":0.3211628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.39276,"y":159.34943,"z":-83.548325},"screenPosition":{"x":0.6986224,"y":0.22716889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.82988,"y":161.22943,"z":-81.14508},"screenPosition":{"x":0.7214936,"y":0.14273654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.0065,"y":163.1652,"z":-80.01258},"screenPosition":{"x":0.75795126,"y":0.1389992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.74226,"y":162.97131,"z":-81.5704},"screenPosition":{"x":0.7681923,"y":0.22891839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.62296,"y":161.13248,"z":-86.69054},"screenPosition":{"x":0.77246046,"y":0.4831997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.71353,"y":160.95187,"z":-86.25284},"screenPosition":{"x":0.76383305,"y":0.44986308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.71054,"y":160.30513,"z":-86.40229},"screenPosition":{"x":0.748729,"y":0.43812862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.19771,"y":159.76575,"z":-86.730194},"screenPosition":{"x":0.73856044,"y":0.440194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.70482,"y":156.83118,"z":-89.77937},"screenPosition":{"x":0.6969568,"y":0.52699083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.10202,"y":155.42131,"z":-89.97306},"screenPosition":{"x":0.6640938,"y":0.49108458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.83932,"y":154.06331,"z":-90.4971},"screenPosition":{"x":0.6361558,"y":0.4764405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.1076,"y":153.60875,"z":-89.08654},"screenPosition":{"x":0.61146927,"y":0.37338263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.69025,"y":151.13406,"z":-92.15667},"screenPosition":{"x":0.5804622,"y":0.4787528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.33649,"y":149.52916,"z":-94.38564},"screenPosition":{"x":0.5680919,"y":0.5783201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.91165,"y":147.47682,"z":-95.372314},"screenPosition":{"x":0.5492403,"y":0.63479805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.14499,"y":144.07448,"z":-96.79736},"screenPosition":{"x":0.5114818,"y":0.7007589},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-163.18431,"y":145.72278,"z":-94.27558},"screenPosition":{"x":0.47150868,"y":0.43352634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.27307,"y":143.41055,"z":-94.81043},"screenPosition":{"x":0.4319851,"y":0.42268038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.9457,"y":141.6999,"z":-95.177536},"screenPosition":{"x":0.40188652,"y":0.41178134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.31914,"y":139.54912,"z":-95.80298},"screenPosition":{"x":0.36912972,"y":0.41760373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.82109,"y":137.59956,"z":-96.53681},"screenPosition":{"x":0.3448044,"y":0.44494045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.76137,"y":134.62701,"z":-97.39176},"screenPosition":{"x":0.2996453,"y":0.45381162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.72746,"y":136.87418,"z":-95.97426},"screenPosition":{"x":0.30946803,"y":0.3491164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.29962,"y":137.73158,"z":-95.24875},"screenPosition":{"x":0.30702662,"y":0.2839837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.97104,"y":138.99538,"z":-94.03605},"screenPosition":{"x":0.30161965,"y":0.17841868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.80432,"y":135.64552,"z":-95.3673},"screenPosition":{"x":0.25977394,"y":0.22758168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.50716,"y":133.54286,"z":-96.57179},"screenPosition":{"x":0.24668731,"y":0.31013018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.45052,"y":132.48427,"z":-97.4935},"screenPosition":{"x":0.25013718,"y":0.39220026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.87048,"y":131.61037,"z":-98.45259},"screenPosition":{"x":0.2596256,"y":0.48621872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.18037,"y":132.07349,"z":-98.40651},"screenPosition":{"x":0.2695108,"y":0.49628764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.12755,"y":132.68295,"z":-98.15372},"screenPosition":{"x":0.27645546,"y":0.48502305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.71875,"y":133.45049,"z":-97.91225},"screenPosition":{"x":0.28714922,"y":0.47931322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.09305,"y":134.32541,"z":-97.44823},"screenPosition":{"x":0.29388797,"y":0.45010763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.71432,"y":133.67853,"z":-96.915634},"screenPosition":{"x":0.26095244,"y":0.35896543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.66553,"y":132.23323,"z":-96.88027},"screenPosition":{"x":0.22447355,"y":0.30479252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.61116,"y":129.35025,"z":-98.144424},"screenPosition":{"x":0.19419926,"y":0.3682109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.25174,"y":126.89115,"z":-99.51768},"screenPosition":{"x":0.17776684,"y":0.4602031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.1368,"y":125.10667,"z":-100.76771},"screenPosition":{"x":0.17397796,"y":0.55961955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.61644,"y":127.66985,"z":-99.996185},"screenPosition":{"x":0.21204847,"y":0.5484213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.16011,"y":128.7956,"z":-98.71126},"screenPosition":{"x":0.19867767,"y":0.42199144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.42308,"y":125.02481,"z":-100.065},"screenPosition":{"x":0.14953913,"y":0.46643397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.81297,"y":122.49369,"z":-101.750496},"screenPosition":{"x":0.14167097,"y":0.59650564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.55484,"y":124.863144,"z":-101.22884},"screenPosition":{"x":0.18263696,"y":0.6104125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.46959,"y":128.25732,"z":-100.448006},"screenPosition":{"x":0.24080266,"y":0.62664413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.12674,"y":130.86311,"z":-98.49487},"screenPosition":{"x":0.24290018,"y":0.46643934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.36197,"y":130.6165,"z":-97.875175},"screenPosition":{"x":0.21660122,"y":0.37710065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.82143,"y":128.31593,"z":-98.3217},"screenPosition":{"x":0.17678045,"y":0.36002484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.49907,"y":125.07677,"z":-99.80072},"screenPosition":{"x":0.14431547,"y":0.43635145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.29749,"y":124.14796,"z":-100.92329},"screenPosition":{"x":0.15541509,"y":0.54659563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.88977,"y":127.45396,"z":-100.028534},"screenPosition":{"x":0.20801096,"y":0.54551804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.18506,"y":130.37422,"z":-98.24478},"screenPosition":{"x":0.2224414,"y":0.41626707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.62584,"y":127.92374,"z":-98.76059},"screenPosition":{"x":0.17892186,"y":0.39839047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.62753,"y":125.95514,"z":-99.39043},"screenPosition":{"x":0.15320271,"y":0.41545716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.55467,"y":124.0161,"z":-101.354836},"screenPosition":{"x":0.1262583,"y":0.47880465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.32874,"y":121.11081,"z":-102.66722},"screenPosition":{"x":0.096973754,"y":0.5476539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.7083,"y":119.73134,"z":-102.74892},"screenPosition":{"x":0.10550199,"y":0.6294894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.15276,"y":122.723625,"z":-101.798965},"screenPosition":{"x":0.14904705,"y":0.61085266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.42308,"y":125.02481,"z":-100.065},"screenPosition":{"x":0.14953913,"y":0.46643397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.50821,"y":123.418526,"z":-101.62477},"screenPosition":{"x":0.11236086,"y":0.4721287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.8983,"y":120.01319,"z":-101.90025},"screenPosition":{"x":0.07766635,"y":0.50705564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.30376,"y":118.463394,"z":-103.773056},"screenPosition":{"x":0.06919387,"y":0.60412526},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-101410/brain-C783A0-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.580604878361511,0.7571210445672988,0.29944231346978556,0.0,0.7566800606602629,-0.36601219584640976,-0.5417290450869975,0.0,-0.3005549218063076,0.5411125542482006,-0.7854068643785796,0.0,-185.30351574183948,199.659436479214,-174.87314378822407,1.0]},"baseImage":"20190823-101410/base.webp","version":0,"savedAt":1.566555494279E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-102326-v0.json b/data/mapping/BAAAHS/dwayman/20190823-102326-v0.json new file mode 100644 index 0000000000..954de13f8a --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-102326-v0.json @@ -0,0 +1 @@ +{"startedAt":1.56655580664E12,"surfaces":[{"brainId":"CBBB6C","panelName":"7D","pixels":[{"modelPosition":{"x":-59.798916,"y":118.554344,"z":-106.87843},"screenPosition":{"x":0.02569766,"y":0.83265346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.393745,"y":117.195244,"z":-107.139},"screenPosition":{"x":0.03387223,"y":0.8066175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.02852,"y":114.966156,"z":-106.139},"screenPosition":{"x":0.044039592,"y":0.7632464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.74959,"y":113.054276,"z":-106.139},"screenPosition":{"x":0.052863274,"y":0.7271487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.33577,"y":110.75862,"z":-106.139},"screenPosition":{"x":0.061619714,"y":0.6829881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.147675,"y":109.59105,"z":-106.139},"screenPosition":{"x":0.08546129,"y":0.66094613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.208466,"y":107.90481,"z":-106.139},"screenPosition":{"x":0.1141844,"y":0.62855774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.37858,"y":106.24648,"z":-106.139},"screenPosition":{"x":0.14360519,"y":0.59687525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.12756,"y":104.22529,"z":-106.139},"screenPosition":{"x":0.15417677,"y":0.5581434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.3,"y":102.101776,"z":-106.139},"screenPosition":{"x":0.18375346,"y":0.51747626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.17912,"y":98.92691,"z":-106.139},"screenPosition":{"x":0.18262848,"y":0.45679072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.265114,"y":95.66597,"z":-106.139},"screenPosition":{"x":0.16953129,"y":0.39418724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.39049,"y":92.97485,"z":-106.139},"screenPosition":{"x":0.1437689,"y":0.34263426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.55058,"y":91.78393,"z":-106.139},"screenPosition":{"x":0.10474095,"y":0.31982005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.21524,"y":91.16516,"z":-106.139},"screenPosition":{"x":0.059684567,"y":0.30836082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.36365,"y":92.30015,"z":-106.139},"screenPosition":{"x":0.013943035,"y":0.33203274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.382526,"y":94.35758,"z":-106.87843},"screenPosition":{"x":-0.0045295465,"y":0.37000102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.53924,"y":97.15639,"z":-102.7928},"screenPosition":{"x":-0.0328417,"y":0.42273873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.033207,"y":99.90755,"z":-103.095406},"screenPosition":{"x":-0.024959033,"y":0.4755747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.66579,"y":102.97375,"z":-106.139},"screenPosition":{"x":0.022453379,"y":0.5346942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.101017,"y":103.013336,"z":-106.139},"screenPosition":{"x":0.057334714,"y":0.53493875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.88063,"y":102.348206,"z":-106.139},"screenPosition":{"x":0.109276764,"y":0.52219707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.81362,"y":101.35046,"z":-106.139},"screenPosition":{"x":0.14958394,"y":0.5030834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.26024,"y":99.60138,"z":-106.139},"screenPosition":{"x":0.15619726,"y":0.46967083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.93045,"y":96.44053,"z":-106.139},"screenPosition":{"x":0.19241743,"y":0.4090253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.33262,"y":93.12142,"z":-106.139},"screenPosition":{"x":0.1710098,"y":0.34575012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.513824,"y":90.21168,"z":-106.139},"screenPosition":{"x":0.14546382,"y":0.28970087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.52492,"y":88.96025,"z":-106.139},"screenPosition":{"x":0.09064556,"y":0.2657277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.061573,"y":92.03503,"z":-106.139},"screenPosition":{"x":0.04304993,"y":0.32463032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.498634,"y":95.15173,"z":-106.139},"screenPosition":{"x":0.035313673,"y":0.38433617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.275417,"y":98.49408,"z":-106.139},"screenPosition":{"x":0.045988742,"y":0.4483646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.315186,"y":100.99448,"z":-106.139},"screenPosition":{"x":0.074020624,"y":0.49626395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.73426,"y":101.285286,"z":-106.139},"screenPosition":{"x":0.12100794,"y":0.501835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.59286,"y":98.75476,"z":-106.139},"screenPosition":{"x":0.16029271,"y":0.45335835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.10823,"y":98.61274,"z":-106.139},"screenPosition":{"x":0.07151545,"y":0.45070636},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-63.324646,"y":93.66089,"z":-106.139},"screenPosition":{"x":0.07415064,"y":0.35577646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.733913,"y":91.41405,"z":-106.139},"screenPosition":{"x":0.067342706,"y":0.31339318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.619835,"y":89.84869,"z":-106.139},"screenPosition":{"x":0.050721984,"y":0.28274718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.68705,"y":87.841385,"z":-106.139},"screenPosition":{"x":0.02416031,"y":0.2442939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.615555,"y":86.81769,"z":-107.139},"screenPosition":{"x":0.009435116,"y":0.22468321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.784447,"y":84.14033,"z":-106.87843},"screenPosition":{"x":-0.0019865758,"y":0.17339376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.965878,"y":80.709435,"z":-102.2378},"screenPosition":{"x":-0.054463908,"y":0.10766904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.456135,"y":78.53168,"z":-106.87843},"screenPosition":{"x":-0.0064984336,"y":0.06595043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.96408,"y":76.26767,"z":-106.139},"screenPosition":{"x":0.034804568,"y":0.012999393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.46202,"y":80.16595,"z":-106.139},"screenPosition":{"x":0.062295876,"y":0.09725767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.09185,"y":83.51986,"z":-106.139},"screenPosition":{"x":0.029723354,"y":0.16150756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.72414,"y":83.11009,"z":-106.87843},"screenPosition":{"x":-0.002815342,"y":0.1536579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.501587,"y":79.09962,"z":-101.90144},"screenPosition":{"x":-0.06084452,"y":0.07683026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.535095,"y":76.25388,"z":-104.34463},"screenPosition":{"x":-0.04664133,"y":0.022315398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.238304,"y":75.171875,"z":-107.139},"screenPosition":{"x":0.0042506517,"y":0.0015875483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.898895,"y":76.152695,"z":-107.139},"screenPosition":{"x":0.054557003,"y":0.020376898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.6227,"y":77.900536,"z":-106.139},"screenPosition":{"x":0.07824669,"y":0.053859837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.690086,"y":80.82886,"z":-106.139},"screenPosition":{"x":0.07917279,"y":0.10995685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.925087,"y":92.10557,"z":-107.139},"screenPosition":{"x":0.014403258,"y":0.32592332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.698727,"y":85.51548,"z":-106.139},"screenPosition":{"x":0.024320815,"y":0.19973712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.703068,"y":88.31272,"z":-107.139},"screenPosition":{"x":0.010637787,"y":0.25332308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.52199,"y":90.499916,"z":-106.139},"screenPosition":{"x":0.03563468,"y":0.29522264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.773594,"y":91.44663,"z":-106.139},"screenPosition":{"x":0.080542214,"y":0.3134734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.60428,"y":89.02542,"z":-106.139},"screenPosition":{"x":0.11922155,"y":0.26697612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.2671,"y":98.66642,"z":-102.46511},"screenPosition":{"x":-0.036581628,"y":0.4516661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.6115,"y":100.910126,"z":-102.65876},"screenPosition":{"x":-0.028190264,"y":0.4949601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.489136,"y":103.59829,"z":-103.31344},"screenPosition":{"x":-0.019787587,"y":0.54614455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.70388,"y":105.409996,"z":-107.139},"screenPosition":{"x":0.02439163,"y":0.58085084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.3565,"y":107.10922,"z":-106.139},"screenPosition":{"x":0.0257753,"y":0.6138009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.24727,"y":109.549126,"z":-106.139},"screenPosition":{"x":0.046673443,"y":0.65987676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.210304,"y":110.981926,"z":-106.139},"screenPosition":{"x":0.073347725,"y":0.6873414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.74784,"y":112.44498,"z":-106.139},"screenPosition":{"x":0.107451834,"y":0.71561795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.72965,"y":112.62413,"z":-106.139},"screenPosition":{"x":0.14875303,"y":0.7188967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.49516,"y":112.28228,"z":-106.139},"screenPosition":{"x":0.18643548,"y":0.71250135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.14193,"y":111.305435,"z":-106.139},"screenPosition":{"x":0.20906642,"y":0.6937882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.02943,"y":105.41376,"z":-106.139},"screenPosition":{"x":0.111321576,"y":0.58092296},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-80.05238,"y":102.93929,"z":-106.139},"screenPosition":{"x":0.3040346,"y":0.5335203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.09197,"y":100.50407,"z":-106.139},"screenPosition":{"x":0.3045787,"y":0.48686936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.97138,"y":96.791954,"z":-106.139},"screenPosition":{"x":0.33040687,"y":0.4157575},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-73.67041,"y":87.80215,"z":-106.139},"screenPosition":{"x":0.2163292,"y":0.24354216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.72002,"y":84.89952,"z":-106.139},"screenPosition":{"x":0.28586808,"y":0.18815286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.489914,"y":84.16455,"z":-106.139},"screenPosition":{"x":0.29630476,"y":0.17385773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.48778,"y":81.62468,"z":-106.139},"screenPosition":{"x":0.31405124,"y":0.117297634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.49284,"y":81.9386,"z":-107.139},"screenPosition":{"x":0.35131583,"y":0.1312159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.7289,"y":82.80567,"z":-107.139},"screenPosition":{"x":0.39578784,"y":0.14782614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.60282,"y":84.04612,"z":-106.139},"screenPosition":{"x":0.42539987,"y":0.15888618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.42629,"y":86.025505,"z":-106.139},"screenPosition":{"x":0.44659996,"y":0.20950764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.98181,"y":90.31445,"z":-106.139},"screenPosition":{"x":0.4268133,"y":0.2918393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.83728,"y":92.32864,"z":-106.139},"screenPosition":{"x":0.39727733,"y":0.33025503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.43501,"y":97.012695,"z":-106.139},"screenPosition":{"x":0.18585621,"y":0.42007574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.52731,"y":95.0708,"z":-106.139},"screenPosition":{"x":0.33804682,"y":0.3827857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.959236,"y":94.71949,"z":-106.139},"screenPosition":{"x":0.27544275,"y":0.37617254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.17069,"y":91.23524,"z":-106.139},"screenPosition":{"x":0.25084504,"y":0.30944222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.8197,"y":87.3254,"z":-106.139},"screenPosition":{"x":0.2596089,"y":0.2344093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.86435,"y":85.89038,"z":-106.139},"screenPosition":{"x":0.3014505,"y":0.20691903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.46735,"y":84.736824,"z":-106.139},"screenPosition":{"x":0.364708,"y":0.18482074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.20687,"y":90.04922,"z":-106.139},"screenPosition":{"x":0.37487108,"y":0.28658873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.33213,"y":92.83096,"z":-106.139},"screenPosition":{"x":0.3491071,"y":0.33987787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.71999,"y":92.840195,"z":-106.139},"screenPosition":{"x":0.29958808,"y":0.34016484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.333496,"y":91.5097,"z":-106.139},"screenPosition":{"x":0.25292715,"y":0.31456676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.2732,"y":89.65364,"z":-106.139},"screenPosition":{"x":0.26584125,"y":0.27901083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.73333,"y":88.65578,"z":-106.139},"screenPosition":{"x":0.2309366,"y":0.25989494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.18199,"y":86.97876,"z":-106.139},"screenPosition":{"x":0.21027486,"y":0.22843088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.426025,"y":82.454834,"z":-106.139},"screenPosition":{"x":0.1854853,"y":0.1411052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.25671,"y":80.03362,"z":-106.139},"screenPosition":{"x":0.22938533,"y":0.08567503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.16654,"y":80.68263,"z":-106.139},"screenPosition":{"x":0.28147557,"y":0.105130665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.64358,"y":83.294685,"z":-106.139},"screenPosition":{"x":0.31215927,"y":0.15719397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.7456,"y":85.25539,"z":-106.139},"screenPosition":{"x":0.2860759,"y":0.19475457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.21028,"y":88.80001,"z":-106.139},"screenPosition":{"x":0.25123385,"y":0.26265806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.863174,"y":88.039345,"z":-106.139},"screenPosition":{"x":0.19149294,"y":0.24808621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.321175,"y":84.50161,"z":-106.139},"screenPosition":{"x":0.1703017,"y":0.18031472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.970184,"y":80.591774,"z":-106.139},"screenPosition":{"x":0.17978223,"y":0.106130324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.86583,"y":79.09625,"z":-106.139},"screenPosition":{"x":0.20881732,"y":0.07799291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.06899,"y":80.79662,"z":-106.139},"screenPosition":{"x":0.29338494,"y":0.1095788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.65943,"y":83.5807,"z":-106.139},"screenPosition":{"x":0.27114907,"y":0.16267323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.38235,"y":84.74593,"z":-106.139},"screenPosition":{"x":0.23985577,"y":0.18499525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.16342,"y":85.227356,"z":-106.139},"screenPosition":{"x":0.20936176,"y":0.19421759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.04213,"y":88.06259,"z":-106.139},"screenPosition":{"x":0.18079305,"y":0.24903257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.683815,"y":94.026215,"z":-106.139},"screenPosition":{"x":0.17528532,"y":0.36277488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.10388,"y":91.065186,"z":-106.139},"screenPosition":{"x":0.084859416,"y":0.3060514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.91865,"y":77.94947,"z":-106.139},"screenPosition":{"x":0.14195459,"y":0.053019773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.83462,"y":78.81467,"z":-106.139},"screenPosition":{"x":0.108644396,"y":0.071371555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.20175,"y":82.47329,"z":-106.139},"screenPosition":{"x":0.08620444,"y":0.1414587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.45986,"y":85.56675,"z":-106.139},"screenPosition":{"x":0.08975156,"y":0.20071933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.05535,"y":89.351036,"z":-106.139},"screenPosition":{"x":0.11208257,"y":0.27347896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.89789,"y":89.539536,"z":-106.139},"screenPosition":{"x":0.17822735,"y":0.27682495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.649506,"y":86.515915,"z":-106.139},"screenPosition":{"x":0.21646634,"y":0.21935064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.71693,"y":81.50356,"z":-106.139},"screenPosition":{"x":0.20322573,"y":0.122882016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.78151,"y":80.49869,"z":-106.139},"screenPosition":{"x":0.14914256,"y":0.10363188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.54381,"y":82.23375,"z":-106.139},"screenPosition":{"x":0.10464786,"y":0.1368699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.780716,"y":84.578224,"z":-106.139},"screenPosition":{"x":0.080418296,"y":0.18178241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.789944,"y":88.19036,"z":-106.139},"screenPosition":{"x":0.08054509,"y":0.2509791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.8159,"y":90.47679,"z":-106.139},"screenPosition":{"x":0.122129865,"y":0.29477966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.709305,"y":91.91427,"z":-106.139},"screenPosition":{"x":0.16189294,"y":0.3223169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.62138,"y":89.63029,"z":-106.139},"screenPosition":{"x":0.2019128,"y":0.27856335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.33332,"y":86.57408,"z":-106.139},"screenPosition":{"x":0.22543937,"y":0.22001645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.36348,"y":83.53177,"z":-106.139},"screenPosition":{"x":0.21211119,"y":0.16173579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.956375,"y":80.37781,"z":-106.139},"screenPosition":{"x":0.19277376,"y":0.10131622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.73269,"y":79.32178,"z":-106.139},"screenPosition":{"x":0.14847167,"y":0.08108612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.75321,"y":78.67744,"z":-106.139},"screenPosition":{"x":0.10772084,"y":0.06896558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.46202,"y":80.16595,"z":-106.139},"screenPosition":{"x":0.062295876,"y":0.09725767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.650116,"y":81.33351,"z":-106.139},"screenPosition":{"x":0.03739541,"y":0.11962443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.670727,"y":83.15698,"z":-106.139},"screenPosition":{"x":0.0066424697,"y":0.1581804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.54247,"y":85.5691,"z":-107.139},"screenPosition":{"x":0.008430692,"y":0.20076431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.316113,"y":87.26203,"z":-103.116425},"screenPosition":{"x":-0.035908062,"y":0.2331953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.989162,"y":90.16241,"z":-102.66494},"screenPosition":{"x":-0.040401243,"y":0.28875712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.73041,"y":93.238846,"z":-103.174995},"screenPosition":{"x":-0.030214483,"y":0.34769157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.12169,"y":95.46416,"z":-107.139},"screenPosition":{"x":0.016390735,"y":0.39032117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.296234,"y":97.3125,"z":-106.139},"screenPosition":{"x":0.03253215,"y":0.42572933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.43852,"y":98.2313,"z":-106.139},"screenPosition":{"x":0.07571554,"y":0.44333056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.80644,"y":97.81038,"z":-106.139},"screenPosition":{"x":0.12199985,"y":0.43526715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.99027,"y":93.89821,"z":-106.139},"screenPosition":{"x":0.12452618,"y":0.36032274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.72924,"y":92.344406,"z":-106.139},"screenPosition":{"x":0.065968186,"y":0.33055708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.859173,"y":94.19579,"z":-106.139},"screenPosition":{"x":0.04026841,"y":0.36602348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.16653,"y":96.230225,"z":-107.139},"screenPosition":{"x":0.017006997,"y":0.4049965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.61136,"y":98.26683,"z":-106.87843},"screenPosition":{"x":5.25226E-4,"y":0.44473362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.230526,"y":100.307045,"z":-103.253494},"screenPosition":{"x":-0.02334157,"y":0.4830951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.444603,"y":103.058075,"z":-102.392784},"screenPosition":{"x":-0.028217519,"y":0.5358604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.817867,"y":105.66324,"z":-102.593445},"screenPosition":{"x":-0.02901263,"y":0.5857022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.555683,"y":108.66831,"z":-103.10418},"screenPosition":{"x":-0.018873066,"y":0.64326954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.30746,"y":110.158615,"z":-106.87843},"screenPosition":{"x":0.018943748,"y":0.6718189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.10659,"y":112.28961,"z":-107.139},"screenPosition":{"x":0.032195132,"y":0.71245664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.184525,"y":113.63111,"z":-106.139},"screenPosition":{"x":0.058482304,"y":0.7383405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.164,"y":114.27545,"z":-106.139},"screenPosition":{"x":0.09942828,"y":0.7506839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.90861,"y":112.64738,"z":-106.139},"screenPosition":{"x":0.13790552,"y":0.71914476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.2993,"y":108.649124,"z":-106.139},"screenPosition":{"x":0.1287731,"y":0.64290196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.968636,"y":107.1,"z":-106.139},"screenPosition":{"x":0.08300078,"y":0.61322576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.093895,"y":109.881744,"z":-106.139},"screenPosition":{"x":0.057331853,"y":0.6664894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.233253,"y":112.34021,"z":-106.139},"screenPosition":{"x":0.045859404,"y":0.71344876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.01471,"y":114.7522,"z":-106.139},"screenPosition":{"x":0.05614859,"y":0.75981677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.00332,"y":116.54086,"z":-106.139},"screenPosition":{"x":0.08347747,"y":0.79408175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.17819,"y":116.41998,"z":-106.139},"screenPosition":{"x":0.12710866,"y":0.7917661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.3553,"y":113.36611,"z":-106.139},"screenPosition":{"x":0.15702806,"y":0.73326397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.7992,"y":110.15165,"z":-106.139},"screenPosition":{"x":0.121900335,"y":0.6716854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.705738,"y":110.40976,"z":-106.139},"screenPosition":{"x":0.08012648,"y":0.67640495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.94031,"y":113.21942,"z":-106.139},"screenPosition":{"x":0.055289205,"y":0.7303879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.063526,"y":115.92911,"z":-106.139},"screenPosition":{"x":0.05681949,"y":0.7823625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.773006,"y":118.81094,"z":-106.139},"screenPosition":{"x":0.081927404,"y":0.84722024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.99903,"y":119.401794,"z":-106.139},"screenPosition":{"x":0.12530307,"y":0.8613612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.80682,"y":99.74095,"z":-106.139},"screenPosition":{"x":0.16323313,"y":0.47225052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.5067,"y":97.080086,"z":-106.139},"screenPosition":{"x":0.14536591,"y":0.42127705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.215706,"y":95.56354,"z":-106.139},"screenPosition":{"x":0.1138816,"y":0.3922251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.964108,"y":94.61683,"z":-106.139},"screenPosition":{"x":0.069195904,"y":0.37408912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.91479,"y":96.98221,"z":-106.139},"screenPosition":{"x":0.01768948,"y":0.42124882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.380566,"y":99.886665,"z":-107.139},"screenPosition":{"x":0.019948408,"y":0.47504193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.54886,"y":102.76169,"z":-107.139},"screenPosition":{"x":0.022261212,"y":0.530118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.54509,"y":104.7345,"z":-106.139},"screenPosition":{"x":0.049694758,"y":0.56791055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.65003,"y":105.15553,"z":-106.139},"screenPosition":{"x":0.07862225,"y":0.5759762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.72005,"y":107.08143,"z":-106.139},"screenPosition":{"x":0.107480235,"y":0.61279976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.8529,"y":107.39314,"z":-106.139},"screenPosition":{"x":0.13638094,"y":0.6188415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.42068,"y":108.2817,"z":-106.139},"screenPosition":{"x":0.17166917,"y":0.63586324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.10458,"y":110.80767,"z":-106.139},"screenPosition":{"x":0.19481052,"y":0.6842526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.99506,"y":113.78481,"z":-106.139},"screenPosition":{"x":0.17992209,"y":0.7410754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.87836,"y":113.22187,"z":-106.139},"screenPosition":{"x":0.1369437,"y":0.7303965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.550316,"y":110.67033,"z":-106.139},"screenPosition":{"x":0.118859,"y":0.6814901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.67131,"y":108.37233,"z":-106.139},"screenPosition":{"x":0.12072218,"y":0.6374613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.95278,"y":106.81397,"z":-106.139},"screenPosition":{"x":0.12401096,"y":0.60774654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.50162,"y":104.02055,"z":-106.139},"screenPosition":{"x":0.11781072,"y":0.5542336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.90145,"y":101.166626,"z":-106.139},"screenPosition":{"x":0.09582017,"y":0.49956182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.124172,"y":101.36658,"z":-106.139},"screenPosition":{"x":0.043910224,"y":0.50339216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.759052,"y":105.72069,"z":-106.139},"screenPosition":{"x":0.052635178,"y":0.5868027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.90367,"y":106.17431,"z":-106.139},"screenPosition":{"x":0.09585067,"y":0.59549254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.59011,"y":105.23005,"z":-106.139},"screenPosition":{"x":0.13276961,"y":0.5774036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.432274,"y":103.487976,"z":-106.139},"screenPosition":{"x":0.1580858,"y":0.5440313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.61852,"y":101.57844,"z":-106.139},"screenPosition":{"x":0.17493556,"y":0.50750494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.07924,"y":99.50608,"z":-106.139},"screenPosition":{"x":0.19446224,"y":0.4677512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.539955,"y":97.43373,"z":-106.139},"screenPosition":{"x":0.21453638,"y":0.4280517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.340096,"y":96.12426,"z":-106.139},"screenPosition":{"x":0.22553246,"y":0.4029666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.31715,"y":94.76597,"z":-106.139},"screenPosition":{"x":0.25270244,"y":0.37694624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.20345,"y":95.13118,"z":-106.139},"screenPosition":{"x":0.27868685,"y":0.3839824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.241,"y":92.62389,"z":-106.139},"screenPosition":{"x":0.3066267,"y":0.33591107},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-88.1631,"y":89.87251,"z":-106.139},"screenPosition":{"x":0.41561508,"y":0.28348953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.81209,"y":93.90334,"z":-106.139},"screenPosition":{"x":0.4381591,"y":0.3604212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.59325,"y":96.85257,"z":-106.139},"screenPosition":{"x":0.42140898,"y":0.4169187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.939476,"y":99.22496,"z":-106.139},"screenPosition":{"x":0.39876902,"y":0.46242234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.908936,"y":100.33671,"z":-106.139},"screenPosition":{"x":0.37082705,"y":0.4836827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.05296,"y":101.86481,"z":-106.139},"screenPosition":{"x":0.35911933,"y":0.51295555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.51085,"y":103.799934,"z":-106.139},"screenPosition":{"x":0.33782747,"y":0.550007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.8244,"y":104.744194,"z":-106.139},"screenPosition":{"x":0.30090156,"y":0.5680963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.24728,"y":105.71637,"z":-106.139},"screenPosition":{"x":0.26578885,"y":0.5866667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.432945,"y":104.88131,"z":-106.139},"screenPosition":{"x":0.22680846,"y":0.5707229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.44666,"y":102.62746,"z":-106.139},"screenPosition":{"x":0.19951168,"y":0.5275466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.00251,"y":98.438484,"z":-106.139},"screenPosition":{"x":0.19340774,"y":0.44729963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.075066,"y":96.89415,"z":-106.139},"screenPosition":{"x":0.23563293,"y":0.4177152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.46623,"y":97.29428,"z":-106.139},"screenPosition":{"x":0.28223664,"y":0.42538035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.86186,"y":99.7691,"z":-106.139},"screenPosition":{"x":0.31515905,"y":0.47278973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.42001,"y":103.05562,"z":-106.139},"screenPosition":{"x":0.3228295,"y":0.53574866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.78239,"y":105.17679,"z":-106.139},"screenPosition":{"x":0.28664812,"y":0.5763736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.23551,"y":105.57446,"z":-106.139},"screenPosition":{"x":0.25159395,"y":0.58399945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.09565,"y":106.658295,"z":-106.139},"screenPosition":{"x":0.22217312,"y":0.6047641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.34424,"y":106.676865,"z":-106.139},"screenPosition":{"x":0.19810405,"y":0.6051199},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-68.43429,"y":111.50071,"z":-106.139},"screenPosition":{"x":0.1443708,"y":0.697529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.32535,"y":113.403366,"z":-106.139},"screenPosition":{"x":0.18476644,"y":0.7335994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.28605,"y":115.30135,"z":-106.139},"screenPosition":{"x":0.21104704,"y":0.7703368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.06487,"y":118.71576,"z":-106.139},"screenPosition":{"x":0.19426481,"y":0.83574563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.62498,"y":119.60653,"z":-106.139},"screenPosition":{"x":0.16073409,"y":0.8528099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.295364,"y":121.381294,"z":-106.139},"screenPosition":{"x":0.22571568,"y":0.894097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.684105,"y":119.77879,"z":-106.139},"screenPosition":{"x":0.25808147,"y":0.85571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.607666,"y":118.17396,"z":-106.139},"screenPosition":{"x":0.2841803,"y":0.8253666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.368416,"y":116.29466,"z":-106.139},"screenPosition":{"x":0.3083778,"y":0.7893654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.49651,"y":115.06894,"z":-106.139},"screenPosition":{"x":0.3240441,"y":0.76569957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.06654,"y":113.0245,"z":-106.139},"screenPosition":{"x":0.34545726,"y":0.72671974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.171394,"y":110.97772,"z":-106.139},"screenPosition":{"x":0.36080542,"y":0.6873614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.976204,"y":108.737885,"z":-106.139},"screenPosition":{"x":0.3718206,"y":0.6445205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.80893,"y":106.38874,"z":-106.139},"screenPosition":{"x":0.3832631,"y":0.59955114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.41359,"y":103.37668,"z":-106.139},"screenPosition":{"x":0.37771198,"y":0.54189914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.27627,"y":100.99027,"z":-106.139},"screenPosition":{"x":0.36217436,"y":0.4962098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.12902,"y":101.53908,"z":-106.139},"screenPosition":{"x":0.29140088,"y":0.5067052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.87994,"y":105.0628,"z":-106.139},"screenPosition":{"x":0.27453414,"y":0.57415336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.89617,"y":107.27939,"z":-106.139},"screenPosition":{"x":0.27440247,"y":0.6166623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.00324,"y":110.240295,"z":-106.139},"screenPosition":{"x":0.28961655,"y":0.6733836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.77322,"y":111.97314,"z":-106.139},"screenPosition":{"x":0.31396142,"y":0.7065628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.26874,"y":113.86878,"z":-106.139},"screenPosition":{"x":0.334747,"y":0.74262106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.69695,"y":115.30392,"z":-106.139},"screenPosition":{"x":0.36786348,"y":0.77038604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.757835,"y":116.085495,"z":-106.139},"screenPosition":{"x":0.40992817,"y":0.78535837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.52568,"y":115.27846,"z":-106.139},"screenPosition":{"x":0.44796583,"y":0.7698983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.83068,"y":114.003914,"z":-106.139},"screenPosition":{"x":0.47964275,"y":0.7454821},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-95.4474,"y":110.59651,"z":-106.139},"screenPosition":{"x":0.5156064,"y":0.6801423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.94753,"y":104.98607,"z":-106.139},"screenPosition":{"x":0.28916883,"y":0.5726877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.89927,"y":106.84259,"z":-106.139},"screenPosition":{"x":0.57678413,"y":0.60829467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.45044,"y":103.583984,"z":-106.139},"screenPosition":{"x":0.5706022,"y":0.54586935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.94345,"y":101.00919,"z":-106.139},"screenPosition":{"x":0.5636485,"y":0.49654588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.48761,"y":99.14613,"z":-106.139},"screenPosition":{"x":0.5573746,"y":0.4608774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.571266,"y":96.350365,"z":-106.139},"screenPosition":{"x":0.54478407,"y":0.40733868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.885025,"y":94.28958,"z":-106.139},"screenPosition":{"x":0.52161765,"y":0.36791062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.05659,"y":93.777794,"z":-106.139},"screenPosition":{"x":0.4690458,"y":0.35815957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.52352,"y":94.389435,"z":-106.139},"screenPosition":{"x":0.42045078,"y":0.36973304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.30936,"y":96.408295,"z":-106.139},"screenPosition":{"x":0.4038069,"y":0.40845537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.30915,"y":99.413345,"z":-106.139},"screenPosition":{"x":0.39008284,"y":0.46601135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.185524,"y":102.71377,"z":-106.139},"screenPosition":{"x":0.36086592,"y":0.5292024},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-86.518326,"y":106.802765,"z":-106.139},"screenPosition":{"x":0.392964,"y":0.607496},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-88.495255,"y":110.917336,"z":-106.139},"screenPosition":{"x":0.42006236,"y":0.6863535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.309586,"y":111.7524,"z":-106.139},"screenPosition":{"x":0.4587388,"y":0.70235056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.3514,"y":114.32485,"z":-106.139},"screenPosition":{"x":0.45931342,"y":0.75163037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.36063,"y":117.93699,"z":-106.139},"screenPosition":{"x":0.459501,"y":0.82055485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.97898,"y":120.611755,"z":-106.139},"screenPosition":{"x":0.44045267,"y":0.87206674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.52965,"y":120.89545,"z":-106.139},"screenPosition":{"x":0.39304966,"y":0.87750125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.27805,"y":119.94873,"z":-106.139},"screenPosition":{"x":0.34850162,"y":0.8591132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.61059,"y":116.63429,"z":-106.139},"screenPosition":{"x":0.3391912,"y":0.7958716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.9828,"y":113.35245,"z":-106.139},"screenPosition":{"x":0.34437573,"y":0.73292756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.35978,"y":111.60805,"z":-106.139},"screenPosition":{"x":0.3632729,"y":0.6995422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.6856,"y":109.15192,"z":-106.139},"screenPosition":{"x":0.38149577,"y":0.6524977},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-84.318085,"y":103.56273,"z":-106.139},"screenPosition":{"x":0.36274278,"y":0.5454613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.28278,"y":103.137024,"z":-106.139},"screenPosition":{"x":0.32097954,"y":0.53730893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.840546,"y":104.49297,"z":-106.139},"screenPosition":{"x":0.28740746,"y":0.5632813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.18436,"y":104.86274,"z":-106.139},"screenPosition":{"x":0.25087753,"y":0.57036716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.79795,"y":106.00005,"z":-106.139},"screenPosition":{"x":0.21821132,"y":0.592133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.00686,"y":105.98604,"z":-106.139},"screenPosition":{"x":0.17972483,"y":0.591886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.33443,"y":104.13921,"z":-106.139},"screenPosition":{"x":0.14370738,"y":0.5564794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.60667,"y":98.96872,"z":-106.139},"screenPosition":{"x":0.1475759,"y":0.45764536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.92353,"y":100.30389,"z":-106.139},"screenPosition":{"x":0.20606501,"y":0.48303452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.702934,"y":102.64381,"z":-106.139},"screenPosition":{"x":0.24426158,"y":0.5278598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.36456,"y":109.037575,"z":-106.139},"screenPosition":{"x":0.14341259,"y":0.65034336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.47327,"y":114.24789,"z":-106.139},"screenPosition":{"x":0.32383707,"y":0.7498661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.52463,"y":111.95457,"z":-106.139},"screenPosition":{"x":0.3380099,"y":0.70622337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.69473,"y":110.29624,"z":-106.139},"screenPosition":{"x":0.367833,"y":0.6744553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.634445,"y":108.440186,"z":-106.139},"screenPosition":{"x":0.38074708,"y":0.6388993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.739296,"y":106.39341,"z":-106.139},"screenPosition":{"x":0.39595842,"y":0.5996771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.4025,"y":104.628105,"z":-106.139},"screenPosition":{"x":0.43253025,"y":0.5658723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.73746,"y":103.3163,"z":-106.139},"screenPosition":{"x":0.43717402,"y":0.540743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.77033,"y":101.73937,"z":-106.139},"screenPosition":{"x":0.46507066,"y":0.5105338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.6404,"y":99.88799,"z":-106.139},"screenPosition":{"x":0.49077043,"y":0.47506735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.36857,"y":99.04838,"z":-106.139},"screenPosition":{"x":0.51452035,"y":0.4589856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.78756,"y":96.871376,"z":-106.139},"screenPosition":{"x":0.5477635,"y":0.41727892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.45515,"y":94.71295,"z":-106.139},"screenPosition":{"x":0.5569119,"y":0.3760532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.00806,"y":95.8964,"z":-106.139},"screenPosition":{"x":0.2759401,"y":0.39860153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.2554,"y":87.93062,"z":-106.139},"screenPosition":{"x":0.5679356,"y":0.24600326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.88301,"y":86.27685,"z":-106.139},"screenPosition":{"x":0.5382911,"y":0.2010509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.080444,"y":85.58369,"z":-106.139},"screenPosition":{"x":0.5130282,"y":0.19161524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.54971,"y":85.73014,"z":-106.139},"screenPosition":{"x":0.46203876,"y":0.20384939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.695786,"y":87.33031,"z":-106.139},"screenPosition":{"x":0.4228182,"y":0.23450328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.32825,"y":89.68179,"z":-106.139},"screenPosition":{"x":0.4178943,"y":0.2798708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.932785,"y":92.14259,"z":-106.139},"screenPosition":{"x":0.41236937,"y":0.32676342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.92111,"y":94.468506,"z":-106.139},"screenPosition":{"x":0.41221276,"y":0.37131116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.31879,"y":97.01538,"z":-106.139},"screenPosition":{"x":0.41764706,"y":0.42004913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.688545,"y":99.67158,"z":-106.139},"screenPosition":{"x":0.42276335,"y":0.47095355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.50025,"y":101.50906,"z":-106.139},"screenPosition":{"x":0.43387365,"y":0.50612175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.584076,"y":103.64892,"z":-106.139},"screenPosition":{"x":0.44876835,"y":0.54711443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.02377,"y":105.7632,"z":-106.139},"screenPosition":{"x":0.46855357,"y":0.5876171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.70972,"y":108.36124,"z":-106.139},"screenPosition":{"x":0.46423766,"y":0.6373869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.86318,"y":110.49642,"z":-106.139},"screenPosition":{"x":0.4663614,"y":0.67825377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.60729,"y":112.41064,"z":-106.139},"screenPosition":{"x":0.4628551,"y":0.7148866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.59561,"y":114.73655,"z":-106.139},"screenPosition":{"x":0.46268895,"y":0.7594454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.184006,"y":117.44857,"z":-106.139},"screenPosition":{"x":0.4707557,"y":0.81147045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.09093,"y":119.637245,"z":-106.139},"screenPosition":{"x":0.46947646,"y":0.8533983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.72105,"y":122.45391,"z":-106.139},"screenPosition":{"x":0.46439332,"y":0.90735644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.71141,"y":124.85188,"z":-106.139},"screenPosition":{"x":0.43537062,"y":0.9624471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.306755,"y":124.79122,"z":-107.139},"screenPosition":{"x":0.40372917,"y":0.95213157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.589264,"y":124.15567,"z":-107.139},"screenPosition":{"x":0.36638355,"y":0.9399564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.63198,"y":123.69791,"z":-107.139},"screenPosition":{"x":0.33948523,"y":0.9311873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.97985,"y":122.83279,"z":-106.139},"screenPosition":{"x":0.30357757,"y":0.9194809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.15638,"y":120.8534,"z":-106.139},"screenPosition":{"x":0.27797848,"y":0.8766958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.077225,"y":117.78317,"z":-106.139},"screenPosition":{"x":0.26314798,"y":0.81788045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.06099,"y":115.56658,"z":-106.139},"screenPosition":{"x":0.26292488,"y":0.7754178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.86814,"y":112.86157,"z":-106.139},"screenPosition":{"x":0.27405104,"y":0.7235738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.39411,"y":111.177666,"z":-106.139},"screenPosition":{"x":0.3087309,"y":0.6913405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.54107,"y":111.16611,"z":-106.139},"screenPosition":{"x":0.35212007,"y":0.69099456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.606415,"y":114.02236,"z":-106.139},"screenPosition":{"x":0.38036188,"y":0.7458356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.57829,"y":117.136734,"z":-106.139},"screenPosition":{"x":0.36623278,"y":0.8054967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.38027,"y":118.90438,"z":-106.139},"screenPosition":{"x":0.33609506,"y":0.8392484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.586845,"y":119.355545,"z":-106.139},"screenPosition":{"x":0.2976369,"y":0.84800184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.77018,"y":118.985664,"z":-106.139},"screenPosition":{"x":0.25892836,"y":0.84091616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.31405,"y":117.65984,"z":-106.139},"screenPosition":{"x":0.22517452,"y":0.8155178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.79062,"y":115.87351,"z":-106.139},"screenPosition":{"x":0.2047487,"y":0.78091276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.255714,"y":113.40804,"z":-106.139},"screenPosition":{"x":0.19688743,"y":0.73406714},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-71.98137,"y":108.097984,"z":-106.139},"screenPosition":{"x":0.19311722,"y":0.6323439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.712166,"y":106.25594,"z":-106.139},"screenPosition":{"x":0.24469584,"y":0.5969953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.298515,"y":108.895905,"z":-106.139},"screenPosition":{"x":0.28019318,"y":0.6475152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.89605,"y":112.75225,"z":-106.139},"screenPosition":{"x":0.27440086,"y":0.72150445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.579285,"y":113.8849,"z":-106.139},"screenPosition":{"x":0.22881955,"y":0.74320227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.830124,"y":110.97048,"z":-106.139},"screenPosition":{"x":0.19126381,"y":0.6872724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.67453,"y":102.46266,"z":-106.139},"screenPosition":{"x":0.4225261,"y":0.5243897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.49354,"y":102.36736,"z":-106.139},"screenPosition":{"x":0.46126997,"y":0.52256507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.324104,"y":105.419014,"z":-106.139},"screenPosition":{"x":0.5001663,"y":0.58102363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.64951,"y":108.97299,"z":-106.139},"screenPosition":{"x":0.49089563,"y":0.64910614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.54671,"y":111.09183,"z":-106.139},"screenPosition":{"x":0.44825473,"y":0.6896961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.96482,"y":110.52655,"z":-106.139},"screenPosition":{"x":0.39903,"y":0.67886734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.25066,"y":108.57508,"z":-106.139},"screenPosition":{"x":0.37553647,"y":0.6414402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.45978,"y":105.556015,"z":-106.139},"screenPosition":{"x":0.35086533,"y":0.5836471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.836754,"y":103.81161,"z":-106.139},"screenPosition":{"x":0.3698754,"y":0.55022603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.97857,"y":100.33203,"z":-106.139},"screenPosition":{"x":0.35815567,"y":0.4836324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.155396,"y":97.81541,"z":-106.139},"screenPosition":{"x":0.36042097,"y":0.43536338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.685745,"y":95.73838,"z":-106.139},"screenPosition":{"x":0.36770943,"y":0.3955744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.12088,"y":93.31016,"z":-106.139},"screenPosition":{"x":0.38743207,"y":0.3490577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.869865,"y":91.28896,"z":-106.139},"screenPosition":{"x":0.39772514,"y":0.31033817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.23741,"y":88.93748,"z":-106.139},"screenPosition":{"x":0.40277615,"y":0.26529142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.72837,"y":86.29063,"z":-106.139},"screenPosition":{"x":0.423266,"y":0.21458642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.32632,"y":84.13687,"z":-106.139},"screenPosition":{"x":0.44769636,"y":0.1672139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.28965,"y":85.032425,"z":-106.139},"screenPosition":{"x":0.5011378,"y":0.1871742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.63646,"y":86.33034,"z":-106.139},"screenPosition":{"x":0.53533024,"y":0.19994503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.157555,"y":88.58185,"z":-106.139},"screenPosition":{"x":0.5528483,"y":0.2584787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.889984,"y":92.821976,"z":-106.139},"screenPosition":{"x":0.54917115,"y":0.33970562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.687294,"y":95.51998,"z":-106.139},"screenPosition":{"x":0.5189002,"y":0.39139056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.71016,"y":94.41045,"z":-106.139},"screenPosition":{"x":0.47798637,"y":0.37013575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.76306,"y":95.73149,"z":-106.139},"screenPosition":{"x":0.42374268,"y":0.3954424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.6771,"y":91.05176,"z":-106.139},"screenPosition":{"x":0.4225614,"y":0.30579412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.55184,"y":88.27001,"z":-106.139},"screenPosition":{"x":0.44832537,"y":0.25250497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.57801,"y":87.55139,"z":-106.139},"screenPosition":{"x":0.5036557,"y":0.2387386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.96897,"y":90.95657,"z":-106.139},"screenPosition":{"x":0.53651386,"y":0.3039707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.60823,"y":94.917564,"z":-106.139},"screenPosition":{"x":0.5178155,"y":0.379926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.11922,"y":95.16867,"z":-106.139},"screenPosition":{"x":0.4561226,"y":0.38466063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.39797,"y":92.14493,"z":-106.139},"screenPosition":{"x":0.41880763,"y":0.32690743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.61944,"y":88.19328,"z":-106.139},"screenPosition":{"x":0.46299696,"y":0.25103503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.35946,"y":89.96338,"z":-106.139},"screenPosition":{"x":0.5143981,"y":0.28505543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.82473,"y":92.433525,"z":-106.139},"screenPosition":{"x":0.53453165,"y":0.33226418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.10841,"y":95.88285,"z":-106.139},"screenPosition":{"x":0.5384258,"y":0.39838058},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-91.777336,"y":100.34383,"z":-106.139},"screenPosition":{"x":0.46516696,"y":0.48379973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.60939,"y":96.60136,"z":-106.139},"screenPosition":{"x":0.40797806,"y":0.4122086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.99805,"y":92.531044,"z":-106.139},"screenPosition":{"x":0.42697203,"y":0.33413237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.8685,"y":92.61023,"z":-106.139},"screenPosition":{"x":0.49390507,"y":0.33564928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.633804,"y":95.27343,"z":-106.139},"screenPosition":{"x":0.51816577,"y":0.38669604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.38501,"y":98.25991,"z":-106.139},"screenPosition":{"x":0.5284862,"y":0.44391474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.11268,"y":100.96259,"z":-106.139},"screenPosition":{"x":0.511005,"y":0.49565977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.54265,"y":103.007034,"z":-106.139},"screenPosition":{"x":0.48942703,"y":0.53481793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.48186,"y":104.693275,"z":-106.139},"screenPosition":{"x":0.46110624,"y":0.5671208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.204765,"y":105.858505,"z":-106.139},"screenPosition":{"x":0.4298129,"y":0.5894428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.98584,"y":106.33992,"z":-106.139},"screenPosition":{"x":0.39939207,"y":0.5986312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.566765,"y":106.04911,"z":-106.139},"screenPosition":{"x":0.3523316,"y":0.5930941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.110634,"y":104.72329,"z":-106.139},"screenPosition":{"x":0.31857777,"y":0.5676958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.23601,"y":102.03217,"z":-106.139},"screenPosition":{"x":0.29281542,"y":0.5161428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.09898,"y":99.10852,"z":-106.139},"screenPosition":{"x":0.30496442,"y":0.46024427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.678444,"y":97.671165,"z":-106.139},"screenPosition":{"x":0.34012374,"y":0.43260026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.432274,"y":99.65523,"z":-106.139},"screenPosition":{"x":0.37807685,"y":0.47066188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.83199,"y":102.27416,"z":-106.139},"screenPosition":{"x":0.356048,"y":0.52078766},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-76.04245,"y":105.874504,"z":-106.139},"screenPosition":{"x":0.2490382,"y":0.58972985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.033195,"y":110.20304,"z":-106.139},"screenPosition":{"x":0.26254287,"y":0.6726699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.54545,"y":110.77299,"z":-106.139},"screenPosition":{"x":0.3245533,"y":0.68358815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.51782,"y":110.34506,"z":-106.139},"screenPosition":{"x":0.35171553,"y":0.6753462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.86604,"y":98.54827,"z":-106.139},"screenPosition":{"x":0.49387705,"y":0.4494216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.18961,"y":99.02513,"z":-106.139},"screenPosition":{"x":0.5258033,"y":0.45854047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.78765,"y":99.33919,"z":-106.139},"screenPosition":{"x":0.5614975,"y":0.46457338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.66482,"y":98.56007,"z":-106.139},"screenPosition":{"x":0.60100394,"y":0.44967926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.05589,"y":96.492386,"z":-106.139},"screenPosition":{"x":0.6339072,"y":0.4100187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.50718,"y":93.81295,"z":-106.139},"screenPosition":{"x":0.64010906,"y":0.35868952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.45155,"y":91.026535,"z":-106.139},"screenPosition":{"x":0.6530874,"y":0.30531088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.32834,"y":88.31685,"z":-106.139},"screenPosition":{"x":0.6526139,"y":0.24375029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.49201,"y":87.02926,"z":-107.139},"screenPosition":{"x":0.6124153,"y":0.22873619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.79956,"y":86.06755,"z":-106.139},"screenPosition":{"x":0.56197226,"y":0.20989579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.72934,"y":87.14671,"z":-106.139},"screenPosition":{"x":0.5194781,"y":0.23098618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.38504,"y":90.319244,"z":-106.139},"screenPosition":{"x":0.5147464,"y":0.2917615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.57351,"y":93.41737,"z":-106.139},"screenPosition":{"x":0.53107923,"y":0.3511116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.341156,"y":95.615395,"z":-106.139},"screenPosition":{"x":0.5553714,"y":0.3932185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.28805,"y":97.299416,"z":-106.139},"screenPosition":{"x":0.59586954,"y":0.4254788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.39348,"y":94.17816,"z":-106.139},"screenPosition":{"x":0.66603196,"y":0.3656857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.86558,"y":90.31714,"z":-106.139},"screenPosition":{"x":0.65861267,"y":0.29202154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.01653,"y":87.98189,"z":-106.139},"screenPosition":{"x":0.634798,"y":0.23709609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.50662,"y":86.94676,"z":-106.139},"screenPosition":{"x":0.57393676,"y":0.2143645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.859856,"y":87.92361,"z":-106.139},"screenPosition":{"x":0.5487338,"y":0.24612403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.08976,"y":91.66363,"z":-106.139},"screenPosition":{"x":0.52443117,"y":0.31751558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.29438,"y":94.51055,"z":-106.139},"screenPosition":{"x":0.52724123,"y":0.37211332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.91536,"y":96.18289,"z":-106.139},"screenPosition":{"x":0.53577644,"y":0.40409648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.92926,"y":98.86466,"z":-106.139},"screenPosition":{"x":0.5359662,"y":0.4554755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.424484,"y":101.297554,"z":-106.139},"screenPosition":{"x":0.52903086,"y":0.5020717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.23385,"y":103.60022,"z":-106.139},"screenPosition":{"x":0.5401541,"y":0.54618144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.854836,"y":105.27256,"z":-106.139},"screenPosition":{"x":0.5486847,"y":0.5782136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.10117,"y":108.22412,"z":-106.139},"screenPosition":{"x":0.53832495,"y":0.6347277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.06363,"y":110.73141,"z":-106.139},"screenPosition":{"x":0.51033074,"y":0.6827747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.05624,"y":110.19638,"z":-106.139},"screenPosition":{"x":0.46899977,"y":0.67254233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.35356,"y":108.92406,"z":-106.139},"screenPosition":{"x":0.43185773,"y":0.6481687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.832466,"y":106.67254,"z":-106.139},"screenPosition":{"x":0.4109538,"y":0.6050371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.960464,"y":102.979004,"z":-106.139},"screenPosition":{"x":0.4127673,"y":0.5342848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.400276,"y":99.62042,"z":-106.139},"screenPosition":{"x":0.43249974,"y":0.4699416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.3427,"y":99.22975,"z":-106.139},"screenPosition":{"x":0.48669043,"y":0.46248305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.822075,"y":101.37662,"z":-106.139},"screenPosition":{"x":0.52075243,"y":0.50358456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.71731,"y":105.891205,"z":-106.139},"screenPosition":{"x":0.51931274,"y":0.59006923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.170815,"y":108.21945,"z":-106.139},"screenPosition":{"x":0.525544,"y":0.6346439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.84266,"y":111.14076,"z":-106.139},"screenPosition":{"x":0.50729907,"y":0.69056743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.579666,"y":111.98271,"z":-106.139},"screenPosition":{"x":0.48993582,"y":0.70676255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.023445,"y":114.24112,"z":-106.139},"screenPosition":{"x":0.45481065,"y":0.7500132},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-84.78537,"y":114.04561,"z":-106.139},"screenPosition":{"x":0.3692071,"y":0.7461086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.3342,"y":111.25218,"z":-106.139},"screenPosition":{"x":0.3628823,"y":0.69276416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.594765,"y":108.4076,"z":-106.139},"screenPosition":{"x":0.36655152,"y":0.63821775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.87418,"y":106.77718,"z":-106.139},"screenPosition":{"x":0.39788616,"y":0.6069883},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-90.09799,"y":102.36036,"z":-106.139},"screenPosition":{"x":0.44208822,"y":0.52242976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.427895,"y":100.04835,"z":-106.139},"screenPosition":{"x":0.40539396,"y":0.47813922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.68329,"y":101.67642,"z":-106.139},"screenPosition":{"x":0.36767572,"y":0.5093278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.53876,"y":103.69061,"z":-106.139},"screenPosition":{"x":0.33820412,"y":0.54791313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.81769,"y":105.60249,"z":-106.139},"screenPosition":{"x":0.32829463,"y":0.5845385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.60819,"y":106.690994,"z":-106.139},"screenPosition":{"x":0.31167293,"y":0.6053906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.92884,"y":108.70752,"z":-106.139},"screenPosition":{"x":0.28859416,"y":0.6440206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.74025,"y":111.082245,"z":-106.139},"screenPosition":{"x":0.27225974,"y":0.6895126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.18199,"y":113.26859,"z":-106.139},"screenPosition":{"x":0.26500687,"y":0.7310868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.78177,"y":114.19195,"z":-106.139},"screenPosition":{"x":0.24534497,"y":0.74908423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.19326,"y":116.95279,"z":-106.139},"screenPosition":{"x":0.23725721,"y":0.80197287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.50953,"y":119.362434,"z":-106.139},"screenPosition":{"x":0.24160363,"y":0.84813386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.879295,"y":122.01863,"z":-106.139},"screenPosition":{"x":0.24820766,"y":0.90142965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.40535,"y":122.802536,"z":-106.139},"screenPosition":{"x":0.29609603,"y":0.91704184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.22193,"y":120.704605,"z":-106.139},"screenPosition":{"x":0.32010737,"y":0.87384546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.19898,"y":119.34632,"z":-106.139},"screenPosition":{"x":0.34727734,"y":0.8478251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.69471,"y":118.236916,"z":-106.139},"screenPosition":{"x":0.3815753,"y":0.82657254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.61126,"y":118.02762,"z":-106.139},"screenPosition":{"x":0.40791386,"y":0.8225632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.365005,"y":117.54387,"z":-106.139},"screenPosition":{"x":0.43201503,"y":0.8132961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.97005,"y":116.46238,"z":-106.139},"screenPosition":{"x":0.46781525,"y":0.7925783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.63091,"y":115.162254,"z":-106.139},"screenPosition":{"x":0.5043827,"y":0.7676721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.7381,"y":112.65029,"z":-106.139},"screenPosition":{"x":0.5195984,"y":0.71955127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.682205,"y":106.293205,"z":-106.139},"screenPosition":{"x":0.27146205,"y":0.5977702},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-96.0546,"y":104.11422,"z":-106.139},"screenPosition":{"x":0.5239481,"y":0.556028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.13192,"y":104.10733,"z":-106.139},"screenPosition":{"x":0.57996386,"y":0.5558918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.713806,"y":104.6726,"z":-106.139},"screenPosition":{"x":0.62920606,"y":0.5667248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.65106,"y":108.75459,"z":-106.139},"screenPosition":{"x":0.6420735,"y":0.6449112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.831764,"y":109.38713,"z":-106.139},"screenPosition":{"x":0.5758564,"y":0.65703976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.957146,"y":106.696014,"z":-106.139},"screenPosition":{"x":0.550094,"y":0.6054868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.32965,"y":102.87692,"z":-106.139},"screenPosition":{"x":0.58269167,"y":0.53232664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.7534,"y":102.23737,"z":-106.139},"screenPosition":{"x":0.6297502,"y":0.52007383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.6466,"y":106.6799,"z":-106.139},"screenPosition":{"x":0.65571344,"y":0.60515237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.75299,"y":108.24748,"z":-106.139},"screenPosition":{"x":0.60225916,"y":0.6352077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.673546,"y":105.7145,"z":-106.139},"screenPosition":{"x":0.5599277,"y":0.5866705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.79921,"y":102.48614,"z":-106.139},"screenPosition":{"x":0.5616617,"y":0.52484137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.33219,"y":99.40669,"z":-106.139},"screenPosition":{"x":0.59646547,"y":0.46585822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.23035,"y":102.381615,"z":-106.139},"screenPosition":{"x":0.6500474,"y":0.522837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.95569,"y":105.54947,"z":-106.139},"screenPosition":{"x":0.63249105,"y":0.58350813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.06909,"y":105.721504,"z":-106.139},"screenPosition":{"x":0.57911783,"y":0.5868184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.92701,"y":101.79765,"z":-106.139},"screenPosition":{"x":0.54967993,"y":0.5116502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.334526,"y":98.94151,"z":-106.139},"screenPosition":{"x":0.59649193,"y":0.4569546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.162964,"y":99.45329,"z":-106.139},"screenPosition":{"x":0.6491213,"y":0.46673995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.75845,"y":103.23758,"z":-106.139},"screenPosition":{"x":0.6710476,"y":0.5392345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.51608,"y":105.903,"z":-106.139},"screenPosition":{"x":0.62648875,"y":0.59029526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.134254,"y":103.64214,"z":-106.139},"screenPosition":{"x":0.57999784,"y":0.5469833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.495,"y":99.68115,"z":-106.139},"screenPosition":{"x":0.59870505,"y":0.47111294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.1582,"y":97.91585,"z":-106.139},"screenPosition":{"x":0.6353132,"y":0.4372875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.60753,"y":97.63216,"z":-106.139},"screenPosition":{"x":0.68271625,"y":0.431853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.10985,"y":101.137314,"z":-106.139},"screenPosition":{"x":0.6896195,"y":0.49900028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.20778,"y":102.953896,"z":-106.139},"screenPosition":{"x":0.71842337,"y":0.5338011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.591354,"y":105.82405,"z":-106.139},"screenPosition":{"x":0.7099793,"y":0.5887828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.50507,"y":109.62224,"z":-106.139},"screenPosition":{"x":0.6950509,"y":0.66154355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.00459,"y":109.19419,"z":-106.139},"screenPosition":{"x":0.6468658,"y":0.6532732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.371635,"y":110.385,"z":-106.139},"screenPosition":{"x":0.61076105,"y":0.6761557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.93641,"y":110.34541,"z":-106.139},"screenPosition":{"x":0.57725847,"y":0.67531055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.12208,"y":109.510345,"z":-106.139},"screenPosition":{"x":0.538618,"y":0.65940017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.88692,"y":107.77517,"z":-106.139},"screenPosition":{"x":0.50790095,"y":0.6261599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.17744,"y":104.89333,"z":-106.139},"screenPosition":{"x":0.48440808,"y":0.57095337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.52174,"y":101.7208,"z":-106.139},"screenPosition":{"x":0.48913974,"y":0.510178},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-98.838806,"y":100.05092,"z":-106.139},"screenPosition":{"x":0.5621998,"y":0.47820526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.60198,"y":100.17425,"z":-106.139},"screenPosition":{"x":0.6001839,"y":0.4805511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.49296,"y":99.60909,"z":-106.139},"screenPosition":{"x":0.6261422,"y":0.46974444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.50501,"y":99.21375,"z":-106.139},"screenPosition":{"x":0.6674343,"y":0.46222246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.723946,"y":98.73234,"z":-106.139},"screenPosition":{"x":0.6980587,"y":0.4529288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.5802,"y":96.66699,"z":-106.139},"screenPosition":{"x":0.7373114,"y":0.41336358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.03382,"y":93.52237,"z":-106.139},"screenPosition":{"x":0.74354535,"y":0.35312298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.71989,"y":90.647545,"z":-106.139},"screenPosition":{"x":0.73923105,"y":0.29805067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.507774,"y":88.90907,"z":-107.139},"screenPosition":{"x":0.7088307,"y":0.2647472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.269966,"y":88.04153,"z":-107.139},"screenPosition":{"x":0.66433454,"y":0.24812795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.03034,"y":88.195854,"z":-106.139},"screenPosition":{"x":0.61981344,"y":0.25108427},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-117.14136,"y":100.88165,"z":-106.139},"screenPosition":{"x":0.8137366,"y":0.49410272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.21108,"y":103.344795,"z":-106.139},"screenPosition":{"x":0.81442314,"y":0.5412889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.20174,"y":105.20552,"z":-106.139},"screenPosition":{"x":0.8142795,"y":0.5768994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.20154,"y":108.21057,"z":-106.139},"screenPosition":{"x":0.8059048,"y":0.6440592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.82456,"y":109.95498,"z":-106.139},"screenPosition":{"x":0.7846019,"y":0.6737545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.628876,"y":111.25744,"z":-106.139},"screenPosition":{"x":0.751723,"y":0.69286865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.812294,"y":113.35537,"z":-106.139},"screenPosition":{"x":0.73413426,"y":0.7441043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.43766,"y":114.63459,"z":-106.139},"screenPosition":{"x":0.7078671,"y":0.7575638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.114174,"y":116.625534,"z":-106.139},"screenPosition":{"x":0.69345987,"y":0.8008027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.62788,"y":118.342026,"z":-106.139},"screenPosition":{"x":0.6716511,"y":0.8312031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.27882,"y":119.97711,"z":-106.139},"screenPosition":{"x":0.65134543,"y":0.8595084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.52238,"y":121.75862,"z":-107.139},"screenPosition":{"x":0.6265753,"y":0.8940369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.18515,"y":123.24027,"z":-106.139},"screenPosition":{"x":0.6011711,"y":0.9294493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.09168,"y":123.49838,"z":-106.139},"screenPosition":{"x":0.551943,"y":0.927365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.43783,"y":123.40296,"z":-106.139},"screenPosition":{"x":0.5154719,"y":0.9255371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.1236,"y":121.06538,"z":-106.139},"screenPosition":{"x":0.48366818,"y":0.8807566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.56311,"y":118.24403,"z":-106.139},"screenPosition":{"x":0.47600913,"y":0.82643825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.63091,"y":115.162254,"z":-106.139},"screenPosition":{"x":0.5043827,"y":0.7676721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.65436,"y":112.97825,"z":-106.139},"screenPosition":{"x":0.5184486,"y":0.7257806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.664085,"y":113.04809,"z":-106.139},"screenPosition":{"x":0.55980927,"y":0.72717166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.48785,"y":114.490234,"z":-106.139},"screenPosition":{"x":0.61235803,"y":0.7547984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.70394,"y":118.0163,"z":-106.139},"screenPosition":{"x":0.60155326,"y":0.8222346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.94085,"y":120.36077,"z":-106.139},"screenPosition":{"x":0.5773555,"y":0.8672587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.52887,"y":121.14223,"z":-106.139},"screenPosition":{"x":0.54420835,"y":0.8822288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.858864,"y":121.29803,"z":-106.139},"screenPosition":{"x":0.5212581,"y":0.88515335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.38872,"y":122.7633,"z":-106.139},"screenPosition":{"x":0.48731157,"y":0.91328317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.762856,"y":125.02637,"z":-106.139},"screenPosition":{"x":0.4624156,"y":0.97126406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.93664,"y":126.34179,"z":-107.139},"screenPosition":{"x":0.49484152,"y":0.98183537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.66707,"y":126.98037,"z":-107.139},"screenPosition":{"x":0.5320222,"y":0.99611145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.847565,"y":125.554504,"z":-106.139},"screenPosition":{"x":0.56947064,"y":0.9736384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.68029,"y":123.20535,"z":-106.139},"screenPosition":{"x":0.5737747,"y":0.92175156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.129234,"y":120.9911,"z":-106.139},"screenPosition":{"x":0.5798826,"y":0.8789754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.4712,"y":118.283745,"z":-106.139},"screenPosition":{"x":0.58463216,"y":0.8274161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.27368,"y":116.509094,"z":-106.139},"screenPosition":{"x":0.59567213,"y":0.79347324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.50399,"y":114.23901,"z":-106.139},"screenPosition":{"x":0.5988084,"y":0.7499081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.17391,"y":111.6154,"z":-106.139},"screenPosition":{"x":0.6079909,"y":0.6996296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.32516,"y":108.74291,"z":-106.139},"screenPosition":{"x":0.61007106,"y":0.6446391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.00596,"y":107.872925,"z":-106.139},"screenPosition":{"x":0.5507641,"y":0.62802994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.34752,"y":111.17568,"z":-106.139},"screenPosition":{"x":0.5279735,"y":0.69130254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.45225,"y":114.60177,"z":-106.139},"screenPosition":{"x":0.5431555,"y":0.7569351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.196655,"y":115.978745,"z":-106.139},"screenPosition":{"x":0.56712824,"y":0.78331345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.08092,"y":116.27189,"z":-106.139},"screenPosition":{"x":0.6205084,"y":0.78892916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.7835,"y":115.07641,"z":-106.139},"screenPosition":{"x":0.64390653,"y":0.7660277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.80024,"y":113.75071,"z":-106.139},"screenPosition":{"x":0.68536454,"y":0.7406316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.59124,"y":111.29691,"z":-106.139},"screenPosition":{"x":0.7099777,"y":0.6936249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.76806,"y":108.78028,"z":-106.139},"screenPosition":{"x":0.7124077,"y":0.64541453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.326324,"y":106.59394,"z":-106.139},"screenPosition":{"x":0.72005725,"y":0.6035244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.80085,"y":104.73555,"z":-106.139},"screenPosition":{"x":0.7264116,"y":0.5679066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.570656,"y":101.53277,"z":-106.139},"screenPosition":{"x":0.7232863,"y":0.5066024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.83326,"y":98.760254,"z":-106.139},"screenPosition":{"x":0.6995404,"y":0.4534738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.64692,"y":98.20199,"z":-106.139},"screenPosition":{"x":0.66951483,"y":0.44276902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.60248,"y":96.63195,"z":-106.139},"screenPosition":{"x":0.6413772,"y":0.4127372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.72552,"y":94.40602,"z":-106.139},"screenPosition":{"x":0.6156243,"y":0.37005076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.65813,"y":91.4777,"z":-106.139},"screenPosition":{"x":0.6146982,"y":0.31395373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.83524,"y":88.42383,"z":-106.139},"screenPosition":{"x":0.6467307,"y":0.24155296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.954285,"y":88.52158,"z":-106.139},"screenPosition":{"x":0.6866188,"y":0.2564511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.331345,"y":89.24499,"z":-106.139},"screenPosition":{"x":0.7181902,"y":0.27385446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.59909,"y":89.94048,"z":-106.139},"screenPosition":{"x":0.7504949,"y":0.28030872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.78544,"y":90.49875,"z":-106.139},"screenPosition":{"x":0.78016824,"y":0.29139167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.63367,"y":90.81839,"z":-107.139},"screenPosition":{"x":0.80675954,"y":0.3013235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.45416,"y":94.13203,"z":-106.139},"screenPosition":{"x":0.9142341,"y":0.36480194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.71656,"y":94.364555,"z":-106.139},"screenPosition":{"x":0.8766121,"y":0.3692565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.89756,"y":94.45986,"z":-106.139},"screenPosition":{"x":0.8378715,"y":0.3710822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.89493,"y":95.46229,"z":-106.139},"screenPosition":{"x":0.81035,"y":0.39028534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.50852,"y":96.5996,"z":-106.139},"screenPosition":{"x":0.77738893,"y":0.41215658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.04547,"y":99.13714,"z":-106.139},"screenPosition":{"x":0.75744814,"y":0.46068347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.698746,"y":100.30704,"z":-106.139},"screenPosition":{"x":0.73894054,"y":0.48309496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.40551,"y":101.72349,"z":-106.139},"screenPosition":{"x":0.7210705,"y":0.51024497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.58893,"y":103.82142,"z":-106.139},"screenPosition":{"x":0.69620335,"y":0.550419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.34451,"y":106.41478,"z":-106.139},"screenPosition":{"x":0.6791017,"y":0.60009927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.22118,"y":109.17796,"z":-106.139},"screenPosition":{"x":0.6774068,"y":0.6530327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.10962,"y":112.08304,"z":-106.139},"screenPosition":{"x":0.68961626,"y":0.70868444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.13111,"y":112.294785,"z":-106.139},"screenPosition":{"x":0.7503381,"y":0.72151685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.25006,"y":109.92473,"z":-106.139},"screenPosition":{"x":0.7809474,"y":0.67884874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.45713,"y":106.833595,"z":-106.139},"screenPosition":{"x":0.77684814,"y":0.6081224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.10118,"y":104.391365,"z":-106.139},"screenPosition":{"x":0.75821376,"y":0.56133723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.72879,"y":102.737595,"z":-106.139},"screenPosition":{"x":0.7254401,"y":0.5296666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.90065,"y":101.68857,"z":-106.139},"screenPosition":{"x":0.70033586,"y":0.5095879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.525925,"y":100.49998,"z":-106.139},"screenPosition":{"x":0.66785204,"y":0.48679107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.43479,"y":100.29291,"z":-106.139},"screenPosition":{"x":0.62537163,"y":0.48282424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.63903,"y":101.20926,"z":-106.139},"screenPosition":{"x":0.58695036,"y":0.5003785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.60382,"y":103.25136,"z":-106.139},"screenPosition":{"x":0.5589811,"y":0.5394985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.30825,"y":105.132996,"z":-106.139},"screenPosition":{"x":0.5411765,"y":0.5755444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.69415,"y":107.53797,"z":-106.139},"screenPosition":{"x":0.5327372,"y":0.6216158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.97075,"y":109.91503,"z":-106.139},"screenPosition":{"x":0.5227956,"y":0.6671526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.08687,"y":111.55245,"z":-106.139},"screenPosition":{"x":0.5106555,"y":0.6984244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.90061,"y":113.462,"z":-106.139},"screenPosition":{"x":0.49434644,"y":0.7351008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.42142,"y":116.250755,"z":-106.139},"screenPosition":{"x":0.487761,"y":0.7885242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.791176,"y":118.906944,"z":-106.139},"screenPosition":{"x":0.49284253,"y":0.8394082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.88677,"y":121.188705,"z":-106.139},"screenPosition":{"x":0.5216416,"y":0.8831192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.549774,"y":122.42845,"z":-106.139},"screenPosition":{"x":0.5444957,"y":0.9068687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.261795,"y":121.84006,"z":-106.139},"screenPosition":{"x":0.58167934,"y":0.8950855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.30644,"y":120.40504,"z":-106.139},"screenPosition":{"x":0.6234994,"y":0.8677597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.33427,"y":117.82791,"z":-106.139},"screenPosition":{"x":0.61022466,"y":0.8186661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.31773,"y":116.14856,"z":-106.139},"screenPosition":{"x":0.5824814,"y":0.7863509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.550385,"y":113.4133,"z":-106.139},"screenPosition":{"x":0.58572906,"y":0.7341585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.287895,"y":110.71295,"z":-106.139},"screenPosition":{"x":0.60959524,"y":0.6824142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.34869,"y":109.02671,"z":-106.139},"screenPosition":{"x":0.63793105,"y":0.65013534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.40957,"y":109.80828,"z":-106.139},"screenPosition":{"x":0.6799066,"y":0.6650383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.8657,"y":111.1341,"z":-106.139},"screenPosition":{"x":0.7137052,"y":0.6904717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.04504,"y":113.08791,"z":-106.139},"screenPosition":{"x":0.74431294,"y":0.7299156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.24218,"y":115.03882,"z":-107.139},"screenPosition":{"x":0.71892345,"y":0.76530755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.3858,"y":116.8952,"z":-107.139},"screenPosition":{"x":0.69341177,"y":0.80086976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.08509,"y":119.19591,"z":-107.139},"screenPosition":{"x":0.6617938,"y":0.84494376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.702156,"y":120.57884,"z":-107.139},"screenPosition":{"x":0.64278865,"y":0.87143624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.459816,"y":120.07241,"z":-106.139},"screenPosition":{"x":0.6119728,"y":0.8617347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.636345,"y":118.093025,"z":-106.139},"screenPosition":{"x":0.58691347,"y":0.8238161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.40382,"y":115.35542,"z":-106.139},"screenPosition":{"x":0.5837178,"y":0.7713727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.962074,"y":113.16908,"z":-106.139},"screenPosition":{"x":0.5913899,"y":0.72948956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.11566,"y":109.831406,"z":-106.139},"screenPosition":{"x":0.5935005,"y":0.66555065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.46472,"y":108.19633,"z":-106.139},"screenPosition":{"x":0.61200374,"y":0.63419044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.1535,"y":106.78688,"z":-106.139},"screenPosition":{"x":0.6489913,"y":0.6072275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.70038,"y":106.389206,"z":-106.139},"screenPosition":{"x":0.6839316,"y":0.59958774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.46113,"y":104.50991,"z":-106.139},"screenPosition":{"x":0.7081897,"y":0.56360817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.03593,"y":104.002914,"z":-106.139},"screenPosition":{"x":0.74357426,"y":0.55389583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.0968,"y":104.784485,"z":-106.139},"screenPosition":{"x":0.7855422,"y":0.56885827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.178,"y":107.92677,"z":-106.139},"screenPosition":{"x":0.77301216,"y":0.62906396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.08921,"y":107.25452,"z":-106.139},"screenPosition":{"x":0.7305639,"y":0.61618584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.117035,"y":104.67739,"z":-106.139},"screenPosition":{"x":0.71703523,"y":0.566795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.075226,"y":102.104935,"z":-106.139},"screenPosition":{"x":0.71662897,"y":0.5175367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.66773,"y":100.85316,"z":-106.139},"screenPosition":{"x":0.43618006,"y":0.49355948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.479034,"y":101.03524,"z":-106.139},"screenPosition":{"x":0.85960525,"y":0.49704483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.07882,"y":101.958595,"z":-106.139},"screenPosition":{"x":0.8403625,"y":0.5147333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.71799,"y":103.451775,"z":-106.139},"screenPosition":{"x":0.80791837,"y":0.54333776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.93633,"y":104.044846,"z":-106.139},"screenPosition":{"x":0.7834336,"y":0.55469906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.40122,"y":104.58442,"z":-106.139},"screenPosition":{"x":0.76221913,"y":0.5650242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.440315,"y":105.69149,"z":-106.139},"screenPosition":{"x":0.7214294,"y":0.58619523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.05858,"y":105.898445,"z":-106.139},"screenPosition":{"x":0.6888031,"y":0.5901756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.83022,"y":105.77278,"z":-106.139},"screenPosition":{"x":0.6444551,"y":0.58776563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.65109,"y":100.81392,"z":-106.139},"screenPosition":{"x":0.62834084,"y":0.49280658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.57465,"y":99.20908,"z":-106.139},"screenPosition":{"x":0.6547185,"y":0.46209797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.93782,"y":97.25072,"z":-106.139},"screenPosition":{"x":0.68716085,"y":0.42461276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.214905,"y":96.08549,"z":-106.139},"screenPosition":{"x":0.7185486,"y":0.40222383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.2966,"y":95.68547,"z":-106.139},"screenPosition":{"x":0.7471567,"y":0.3945609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.05969,"y":93.340996,"z":-106.139},"screenPosition":{"x":0.77138627,"y":0.3496484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.89037,"y":90.919785,"z":-106.139},"screenPosition":{"x":0.8075614,"y":0.30552006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.09762,"y":92.764275,"z":-106.139},"screenPosition":{"x":0.84028727,"y":0.33881304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.311966,"y":95.68104,"z":-106.139},"screenPosition":{"x":0.8847946,"y":0.39447588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.44248,"y":96.45793,"z":-106.139},"screenPosition":{"x":0.9140736,"y":0.4093587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.05646,"y":99.52582,"z":-106.139},"screenPosition":{"x":0.9253794,"y":0.47751668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.478966,"y":101.80203,"z":-107.139},"screenPosition":{"x":0.90083236,"y":0.5117342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.49854,"y":103.78246,"z":-107.139},"screenPosition":{"x":0.8761189,"y":0.55316156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.49973,"y":105.326515,"z":-106.139},"screenPosition":{"x":0.8479642,"y":0.58543015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.71098,"y":104.84732,"z":-106.139},"screenPosition":{"x":0.80782205,"y":0.5700719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.231606,"y":102.700455,"z":-106.139},"screenPosition":{"x":0.7737489,"y":0.5289449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.91767,"y":99.82562,"z":-106.139},"screenPosition":{"x":0.7694345,"y":0.47387263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.93636,"y":96.10417,"z":-106.139},"screenPosition":{"x":0.76969135,"y":0.40258178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.91575,"y":94.2807,"z":-106.139},"screenPosition":{"x":0.7968934,"y":0.3676501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.38823,"y":92.35025,"z":-106.139},"screenPosition":{"x":0.83087194,"y":0.330669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.749146,"y":93.324875,"z":-106.139},"screenPosition":{"x":0.87705994,"y":0.34933963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.63554,"y":96.1579,"z":-106.139},"screenPosition":{"x":0.91646767,"y":0.40370166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.71907,"y":98.835,"z":-106.139},"screenPosition":{"x":0.904132,"y":0.45489547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.05149,"y":100.99342,"z":-106.139},"screenPosition":{"x":0.89495766,"y":0.49624386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.15818,"y":102.023766,"z":-106.139},"screenPosition":{"x":0.8689385,"y":0.51598173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.967255,"y":104.86367,"z":-106.139},"screenPosition":{"x":0.8543001,"y":0.5765982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.59261,"y":106.14289,"z":-106.139},"screenPosition":{"x":0.83623916,"y":0.60177433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.237495,"y":108.0435,"z":-107.139},"screenPosition":{"x":0.8150578,"y":0.6313003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.58091,"y":109.700096,"z":-107.139},"screenPosition":{"x":0.7922918,"y":0.6630351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.4832,"y":111.7978,"z":-107.139},"screenPosition":{"x":0.7634637,"y":0.7032203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.80082,"y":112.67622,"z":-106.139},"screenPosition":{"x":0.7454859,"y":0.72828054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.90984,"y":113.24138,"z":-106.139},"screenPosition":{"x":0.71435624,"y":0.7308745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.96071,"y":114.49035,"z":-106.139},"screenPosition":{"x":0.6874188,"y":0.7546067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.25812,"y":115.68583,"z":-106.139},"screenPosition":{"x":0.6641717,"y":0.77770215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.853226,"y":117.53955,"z":-106.139},"screenPosition":{"x":0.64486474,"y":0.81321335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.887566,"y":117.10917,"z":-106.139},"screenPosition":{"x":0.59032685,"y":0.804819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.61565,"y":113.80174,"z":-106.139},"screenPosition":{"x":0.6002979,"y":0.741422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.69725,"y":110.93392,"z":-106.139},"screenPosition":{"x":0.6151817,"y":0.68658733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.572174,"y":113.0878,"z":-106.139},"screenPosition":{"x":0.6684876,"y":0.7279324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.18819,"y":116.227745,"z":-106.139},"screenPosition":{"x":0.649468,"y":0.78808343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.04833,"y":117.31157,"z":-106.139},"screenPosition":{"x":0.62006056,"y":0.80884606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.8829,"y":118.039536,"z":-106.139},"screenPosition":{"x":0.5902177,"y":0.8224474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.415085,"y":119.03962,"z":-106.139},"screenPosition":{"x":0.55638736,"y":0.8419498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.4427,"y":119.467545,"z":-106.139},"screenPosition":{"x":0.52928156,"y":0.8501475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.64928,"y":119.91872,"z":-106.139},"screenPosition":{"x":0.4908924,"y":0.85879034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.486176,"y":120.181496,"z":-106.139},"screenPosition":{"x":0.4612296,"y":0.8634843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.62078,"y":121.102516,"z":-106.139},"screenPosition":{"x":0.43561402,"y":0.88113725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.48325,"y":121.72116,"z":-106.139},"screenPosition":{"x":0.40615475,"y":0.8933193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.18059,"y":122.530525,"z":-106.139},"screenPosition":{"x":0.37450993,"y":0.90882415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.2617,"y":123.205,"z":-106.139},"screenPosition":{"x":0.34701705,"y":0.93364275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.36129,"y":123.16307,"z":-106.139},"screenPosition":{"x":0.3095672,"y":0.9214336},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-102326/brain-CBBB6C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9689124217106451,0.247403959254523,-1.3198564451922756E-16,0.0,0.247403959254523,0.9689124217106447,3.3701468045136306E-17,0.0,1.3622040708922156E-16,0.0,-1.0000000000000004,0.0,-95.89413272392216,103.37457591819799,-210.46150951866696,1.0]},"baseImage":"20190823-102326/base.webp","version":0,"savedAt":1.566556179282E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-103639-v0.json b/data/mapping/BAAAHS/dwayman/20190823-103639-v0.json new file mode 100644 index 0000000000..f24e309f96 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-103639-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566556599783E12,"surfaces":[{"brainId":"CB2624","panelName":"8D","pixels":[{"modelPosition":{"x":-132.41664,"y":95.190186,"z":-107.139},"screenPosition":{"x":-0.019081485,"y":-0.0168175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.98346,"y":93.57088,"z":-106.935234},"screenPosition":{"x":0.0059987786,"y":0.008002856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.1635,"y":91.22975,"z":-106.52611},"screenPosition":{"x":0.019906651,"y":0.035577208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.07137,"y":89.82489,"z":-106.2806},"screenPosition":{"x":0.015894348,"y":0.054758582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.16653,"y":87.58847,"z":-104.26793},"screenPosition":{"x":0.011601123,"y":0.07826852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.84418,"y":85.6308,"z":-103.85815},"screenPosition":{"x":0.02010263,"y":0.100893304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.82048,"y":83.29585,"z":-103.52082},"screenPosition":{"x":0.0372435,"y":0.1288477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.35825,"y":81.18943,"z":-104.7715},"screenPosition":{"x":0.07955308,"y":0.1538348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.21573,"y":81.15752,"z":-103.91295},"screenPosition":{"x":0.111085564,"y":0.16475627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.32772,"y":83.32168,"z":-104.44317},"screenPosition":{"x":0.1378299,"y":0.14764483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.89043,"y":84.918175,"z":-104.88058},"screenPosition":{"x":0.16930217,"y":0.13742217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.42766,"y":87.457886,"z":-105.527695},"screenPosition":{"x":0.20752952,"y":0.11901047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.73794,"y":89.138885,"z":-105.93954},"screenPosition":{"x":0.22762233,"y":0.10526669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.5644,"y":89.85469,"z":-106.1078},"screenPosition":{"x":0.23971744,"y":0.09834887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.932434,"y":90.04001,"z":-106.0678},"screenPosition":{"x":0.22146851,"y":0.090761185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.90616,"y":90.084816,"z":-105.96096},"screenPosition":{"x":0.19560602,"y":0.080007866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.162346,"y":87.981255,"z":-105.36319},"screenPosition":{"x":0.13743481,"y":0.09846633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.22892,"y":85.01424,"z":-104.70433},"screenPosition":{"x":0.118639186,"y":0.12574464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.09449,"y":83.44991,"z":-104.48527},"screenPosition":{"x":0.1420268,"y":0.14713706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.022736,"y":84.643456,"z":-104.9304},"screenPosition":{"x":0.19632131,"y":0.14600272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.769844,"y":84.343735,"z":-104.93834},"screenPosition":{"x":0.213755,"y":0.15282841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.858955,"y":84.46844,"z":-105.13803},"screenPosition":{"x":0.25917768,"y":0.16107853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.995415,"y":85.251144,"z":-105.42102},"screenPosition":{"x":0.29246783,"y":0.15984714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.986595,"y":84.825516,"z":-105.386734},"screenPosition":{"x":0.30540124,"y":0.1670509},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-100.75739,"y":86.254845,"z":-106.070656},"screenPosition":{"x":0.4146848,"y":0.17109823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.1656,"y":82.98046,"z":-105.32374},"screenPosition":{"x":0.38369358,"y":0.20296296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.36088,"y":80.90461,"z":-104.735695},"screenPosition":{"x":0.33785003,"y":0.21529427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.79158,"y":79.14113,"z":-104.32096},"screenPosition":{"x":0.32038516,"y":0.23004818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.003944,"y":77.17358,"z":-103.755806},"screenPosition":{"x":0.27494657,"y":0.24124116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.51758,"y":76.632515,"z":-103.54685},"screenPosition":{"x":0.2481715,"y":0.24125451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.90729,"y":75.11347,"z":-103.07021},"screenPosition":{"x":0.20239478,"y":0.24760881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.38957,"y":72.93867,"z":-102.50249},"screenPosition":{"x":0.16661689,"y":0.26297182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.86036,"y":70.059875,"z":-101.89834},"screenPosition":{"x":0.1498563,"y":0.293221},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-105.547005,"y":68.74248,"z":-101.9218},"screenPosition":{"x":0.23115003,"y":0.3207337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.990395,"y":71.662224,"z":-102.599205},"screenPosition":{"x":0.25718352,"y":0.2954768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.35461,"y":74.18929,"z":-103.135475},"screenPosition":{"x":0.26673207,"y":0.27088323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.04524,"y":76.35811,"z":-103.573364},"screenPosition":{"x":0.26912472,"y":0.2485546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.977936,"y":78.521774,"z":-103.9958},"screenPosition":{"x":0.26777148,"y":0.22549161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.38037,"y":81.418144,"z":-104.61132},"screenPosition":{"x":0.27894562,"y":0.19735245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.92276,"y":83.26384,"z":-104.98665},"screenPosition":{"x":0.28167787,"y":0.17849703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.66704,"y":85.92652,"z":-105.53037},"screenPosition":{"x":0.28688437,"y":0.1519705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.543495,"y":87.87139,"z":-107.06349},"screenPosition":{"x":0.33160755,"y":0.1365557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.53683,"y":87.06578,"z":-107.06349},"screenPosition":{"x":0.3729272,"y":0.15373592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.9467,"y":84.92385,"z":-105.70651},"screenPosition":{"x":0.38334146,"y":0.18242463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.71661,"y":82.490944,"z":-105.1831},"screenPosition":{"x":0.37229955,"y":0.20571326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.77382,"y":79.77047,"z":-104.52007},"screenPosition":{"x":0.33977562,"y":0.22750512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.279274,"y":77.54146,"z":-103.99815},"screenPosition":{"x":0.31866506,"y":0.24652669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.405014,"y":75.10219,"z":-103.452286},"screenPosition":{"x":0.30212274,"y":0.26872355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.26569,"y":71.92795,"z":-102.81901},"screenPosition":{"x":0.3005935,"y":0.3018186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.78286,"y":70.281784,"z":-102.66164},"screenPosition":{"x":0.3441859,"y":0.32832626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.79211,"y":74.29638,"z":-103.665535},"screenPosition":{"x":0.39878902,"y":0.2975581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.34119,"y":77.50614,"z":-104.223274},"screenPosition":{"x":0.37900412,"y":0.25963667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.56088,"y":78.32162,"z":-104.271996},"screenPosition":{"x":0.35004646,"y":0.24502502},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-104.026764,"y":82.85281,"z":-105.12634},"screenPosition":{"x":0.33901054,"y":0.19489448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.586876,"y":85.36268,"z":-105.76552},"screenPosition":{"x":0.37642473,"y":0.17663147},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-85.46171,"y":75.58034,"z":-104.619064},"screenPosition":{"x":0.5802427,"y":0.3222686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.62881,"y":71.31279,"z":-103.72633},"screenPosition":{"x":0.5675956,"y":0.36450732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.997475,"y":69.701256,"z":-103.112236},"screenPosition":{"x":0.49089223,"y":0.36532423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.92312,"y":73.00919,"z":-103.72852},"screenPosition":{"x":0.4811541,"y":0.32844958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.07792,"y":76.59552,"z":-104.57013},"screenPosition":{"x":0.51561004,"y":0.2979484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.53489,"y":78.09544,"z":-105.05162},"screenPosition":{"x":0.5636253,"y":0.2922666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.0871,"y":79.24338,"z":-105.44978},"screenPosition":{"x":0.60807014,"y":0.28953883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.73165,"y":79.066635,"z":-105.60922},"screenPosition":{"x":0.6585101,"y":0.3020187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.203766,"y":77.605385,"z":-105.43618},"screenPosition":{"x":0.68838507,"y":0.32372445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.031746,"y":74.782166,"z":-104.94146},"screenPosition":{"x":0.70497704,"y":0.35690647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.08986,"y":72.75197,"z":-104.48989},"screenPosition":{"x":0.69192314,"y":0.37553126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.62762,"y":69.40246,"z":-103.65959},"screenPosition":{"x":0.64825666,"y":0.40160018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.93995,"y":69.43322,"z":-103.47048},"screenPosition":{"x":0.5976039,"y":0.3906123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.64543,"y":70.1797,"z":-103.47524},"screenPosition":{"x":0.56046087,"y":0.37487793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.61482,"y":72.90368,"z":-103.96004},"screenPosition":{"x":0.5466448,"y":0.3433483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.850006,"y":77.38172,"z":-104.99373},"screenPosition":{"x":0.58520883,"y":0.30432448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.52095,"y":77.55045,"z":-105.22787},"screenPosition":{"x":0.63731337,"y":0.31351778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.62069,"y":77.13131,"z":-105.30688},"screenPosition":{"x":0.6793151,"y":0.32677305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.541824,"y":73.798546,"z":-104.63503},"screenPosition":{"x":0.67590827,"y":0.3611417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.32012,"y":71.89516,"z":-104.10972},"screenPosition":{"x":0.6372131,"y":0.3730331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.958755,"y":70.61603,"z":-103.67131},"screenPosition":{"x":0.58905315,"y":0.37635997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.47233,"y":70.81111,"z":-103.44742},"screenPosition":{"x":0.5209484,"y":0.359968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.33491,"y":75.82396,"z":-104.56206},"screenPosition":{"x":0.5530871,"y":0.31396118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.6395,"y":77.62024,"z":-105.05883},"screenPosition":{"x":0.58983827,"y":0.30280003},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-82.29537,"y":81.37432,"z":-107.06349},"screenPosition":{"x":0.66484183,"y":0.27511057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.67198,"y":80.67141,"z":-107.06349},"screenPosition":{"x":0.7080817,"y":0.28352758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.61614,"y":79.85262,"z":-107.06349},"screenPosition":{"x":0.74288964,"y":0.30756193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.506165,"y":78.52026,"z":-105.91596},"screenPosition":{"x":0.76613224,"y":0.3304286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.14804,"y":73.70406,"z":-104.75575},"screenPosition":{"x":0.7120815,"y":0.369752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.7239,"y":72.94392,"z":-104.37647},"screenPosition":{"x":0.6526463,"y":0.3652414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.28871,"y":74.83997,"z":-104.6433},"screenPosition":{"x":0.62464046,"y":0.33938447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.06668,"y":76.789825,"z":-104.96855},"screenPosition":{"x":0.6090333,"y":0.31557146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.58368,"y":78.30682,"z":-105.213684},"screenPosition":{"x":0.59466755,"y":0.2966531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.157,"y":80.39943,"z":-105.58254},"screenPosition":{"x":0.58322704,"y":0.27213812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.45483,"y":82.69888,"z":-105.95421},"screenPosition":{"x":0.57029957,"y":0.235801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.62298,"y":83.40618,"z":-105.9821},"screenPosition":{"x":0.5403504,"y":0.22334851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.27383,"y":84.7462,"z":-106.06196},"screenPosition":{"x":0.48954818,"y":0.20222554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.7825,"y":83.71061,"z":-105.685},"screenPosition":{"x":0.4399848,"y":0.20712237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.19607,"y":80.77324,"z":-104.83473},"screenPosition":{"x":0.3699977,"y":0.22331114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.29813,"y":77.0464,"z":-104.124344},"screenPosition":{"x":0.37680128,"y":0.26397797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.77626,"y":76.073616,"z":-104.11791},"screenPosition":{"x":0.42502657,"y":0.28437203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.10004,"y":78.342476,"z":-104.717865},"screenPosition":{"x":0.46434462,"y":0.26876417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.85143,"y":81.415565,"z":-105.35176},"screenPosition":{"x":0.4712217,"y":0.23785995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.80395,"y":81.92702,"z":-105.23089},"screenPosition":{"x":0.4136232,"y":0.22034921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.589874,"y":78.13781,"z":-104.28886},"screenPosition":{"x":0.36351386,"y":0.24969068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.060684,"y":75.04537,"z":-103.63754},"screenPosition":{"x":0.3531416,"y":0.2800652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.22066,"y":72.55025,"z":-103.25475},"screenPosition":{"x":0.3817515,"y":0.3123537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.89645,"y":73.53366,"z":-103.668434},"screenPosition":{"x":0.4386971,"y":0.31398633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.79552,"y":76.29029,"z":-104.28288},"screenPosition":{"x":0.4567246,"y":0.28876448},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.34051,"y":73.700325,"z":-103.38324},"screenPosition":{"x":0.356106,"y":0.294847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.854645,"y":70.335785,"z":-102.61016},"screenPosition":{"x":0.32805982,"y":0.32436273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.37065,"y":68.47335,"z":-102.40511},"screenPosition":{"x":0.37037447,"y":0.35287824},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-93.02487,"y":74.267456,"z":-103.88196},"screenPosition":{"x":0.4564345,"y":0.3099989},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.83497,"y":75.1725,"z":-103.678955},"screenPosition":{"x":0.35733625,"y":0.27960756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.047005,"y":70.3832,"z":-102.55011},"screenPosition":{"x":0.31004384,"y":0.32007062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.50093,"y":67.94916,"z":-102.22256},"screenPosition":{"x":0.34988698,"y":0.35408342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.017685,"y":81.8358,"z":-107.06349},"screenPosition":{"x":0.6411726,"y":0.2652692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.13883,"y":83.15178,"z":-106.139},"screenPosition":{"x":0.6915983,"y":0.26762044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.254,"y":80.55942,"z":-107.06349},"screenPosition":{"x":0.7066384,"y":0.29248908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.36287,"y":82.39825,"z":-106.139},"screenPosition":{"x":0.7602471,"y":0.29047462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.94957,"y":82.342514,"z":-106.139},"screenPosition":{"x":0.7967974,"y":0.2992826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.701866,"y":78.53589,"z":-107.06349},"screenPosition":{"x":0.810425,"y":0.33564234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.92611,"y":77.67926,"z":-106.06035},"screenPosition":{"x":0.8487933,"y":0.35159543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.16824,"y":75.09226,"z":-105.47499},"screenPosition":{"x":0.827522,"y":0.37944165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.96672,"y":72.47796,"z":-104.8507},"screenPosition":{"x":0.79945,"y":0.40104547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.85372,"y":69.46588,"z":-104.07423},"screenPosition":{"x":0.7523798,"y":0.42281273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.78654,"y":68.17337,"z":-103.61546},"screenPosition":{"x":0.69984585,"y":0.42540064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.98698,"y":68.54176,"z":-103.5075},"screenPosition":{"x":0.6529124,"y":0.41163385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.67952,"y":70.746826,"z":-103.834984},"screenPosition":{"x":0.62481797,"y":0.38251266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.62015,"y":72.95501,"z":-104.14848},"screenPosition":{"x":0.592914,"y":0.35254908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.21462,"y":75.68982,"z":-104.894424},"screenPosition":{"x":0.6462164,"y":0.33498013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.66343,"y":75.81626,"z":-105.191505},"screenPosition":{"x":0.71682465,"y":0.34851432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.62805,"y":78.626915,"z":-105.9323},"screenPosition":{"x":0.7648462,"y":0.3290448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.011314,"y":77.123474,"z":-105.81434},"screenPosition":{"x":0.8114029,"y":0.3546643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.94007,"y":72.144455,"z":-104.778656},"screenPosition":{"x":0.7980173,"y":0.40426314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.37638,"y":68.98828,"z":-103.93789},"screenPosition":{"x":0.7417182,"y":0.42563713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.13154,"y":68.43642,"z":-103.712265},"screenPosition":{"x":0.7113714,"y":0.42503008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.20367,"y":68.41656,"z":-103.46704},"screenPosition":{"x":0.64868736,"y":0.41200513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.557076,"y":71.994675,"z":-104.11767},"screenPosition":{"x":0.63414013,"y":0.3713336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.62644,"y":76.16481,"z":-105.15234},"screenPosition":{"x":0.68878466,"y":0.3389416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.92837,"y":76.53116,"z":-105.392784},"screenPosition":{"x":0.7323888,"y":0.34426495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.8526,"y":76.24164,"z":-105.51079},"screenPosition":{"x":0.77786064,"y":0.35688615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.07058,"y":73.92313,"z":-105.28184},"screenPosition":{"x":0.837365,"y":0.393822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.56672,"y":70.269615,"z":-104.3869},"screenPosition":{"x":0.79232174,"y":0.42277575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.3306,"y":67.155846,"z":-103.59526},"screenPosition":{"x":0.7467485,"y":0.44597495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.62166,"y":66.17179,"z":-103.1834},"screenPosition":{"x":0.6903859,"y":0.44448075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.12863,"y":67.52326,"z":-103.2743},"screenPosition":{"x":0.6446576,"y":0.4206258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.57013,"y":73.06303,"z":-104.53015},"screenPosition":{"x":0.68631184,"y":0.3710697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.81424,"y":74.00182,"z":-104.90037},"screenPosition":{"x":0.73433614,"y":0.3713026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.94895,"y":72.25561,"z":-104.802666},"screenPosition":{"x":0.79849565,"y":0.40319052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.4932,"y":67.996704,"z":-103.948685},"screenPosition":{"x":0.7953763,"y":0.4473728},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-72.26091,"y":63.425434,"z":-102.71681},"screenPosition":{"x":0.7100888,"y":0.47750142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.078186,"y":62.30553,"z":-102.36213},"screenPosition":{"x":0.6755144,"y":0.48201692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.7458,"y":61.616875,"z":-101.9932},"screenPosition":{"x":0.6150877,"y":0.4765119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.95782,"y":64.94226,"z":-102.596405},"screenPosition":{"x":0.60112214,"y":0.4386318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.825905,"y":67.7055,"z":-103.273285},"screenPosition":{"x":0.63492817,"y":0.4166025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.88876,"y":70.57289,"z":-104.07993},"screenPosition":{"x":0.6973035,"y":0.39960435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.8126,"y":67.572014,"z":-103.658615},"screenPosition":{"x":0.74182063,"y":0.4405504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.02895,"y":63.329403,"z":-102.70933},"screenPosition":{"x":0.7130691,"y":0.47913775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.04178,"y":61.86299,"z":-102.2666},"screenPosition":{"x":0.67347383,"y":0.48628137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.23875,"y":59.823704,"z":-101.68652},"screenPosition":{"x":0.62753874,"y":0.4980793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.23895,"y":60.221024,"z":-101.537636},"screenPosition":{"x":0.56852466,"y":0.48147207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.81059,"y":63.92679,"z":-102.26267},"screenPosition":{"x":0.56660295,"y":0.44205487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.32586,"y":66.88918,"z":-103.06353},"screenPosition":{"x":0.6224843,"y":0.42263293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.20353,"y":66.18525,"z":-103.09281},"screenPosition":{"x":0.66618836,"y":0.43924478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.596565,"y":64.49957,"z":-102.81577},"screenPosition":{"x":0.6807535,"y":0.4600572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.78225,"y":64.52088,"z":-103.04607},"screenPosition":{"x":0.73942256,"y":0.4721846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.687805,"y":67.59039,"z":-103.78834},"screenPosition":{"x":0.7746077,"y":0.4472778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.1802,"y":69.623985,"z":-104.26725},"screenPosition":{"x":0.7945807,"y":0.43007398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.19877,"y":69.90452,"z":-104.387215},"screenPosition":{"x":0.8112006,"y":0.43060282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.94202,"y":69.474815,"z":-104.30755},"screenPosition":{"x":0.8126905,"y":0.43545708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.893456,"y":68.8708,"z":-104.23624},"screenPosition":{"x":0.82516515,"y":0.44444227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.05782,"y":66.704445,"z":-103.80747},"screenPosition":{"x":0.82501274,"y":0.46721658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.93785,"y":65.11613,"z":-103.52312},"screenPosition":{"x":0.83268696,"y":0.48555335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.995815,"y":62.817,"z":-103.13048},"screenPosition":{"x":0.84871995,"y":0.513133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.158676,"y":70.681114,"z":-104.44272},"screenPosition":{"x":0.78582543,"y":0.41709322},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-65.46784,"y":76.86554,"z":-107.06349},"screenPosition":{"x":0.8985432,"y":0.36904997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.13263,"y":74.75246,"z":-105.638664},"screenPosition":{"x":0.88674283,"y":0.3955001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.70775,"y":72.16173,"z":-105.03278},"screenPosition":{"x":0.8627172,"y":0.41768354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.16326,"y":69.469406,"z":-104.41156},"screenPosition":{"x":0.8394515,"y":0.4410778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.26786,"y":65.14183,"z":-103.45013},"screenPosition":{"x":0.81242824,"y":0.4810176},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-57.417885,"y":68.472755,"z":-104.40315},"screenPosition":{"x":0.96784747,"y":0.47990513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.644775,"y":72.35623,"z":-106.03398},"screenPosition":{"x":0.98856205,"y":0.4402072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.68669,"y":75.048584,"z":-107.06349},"screenPosition":{"x":0.989356,"y":0.4099205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.10231,"y":75.963776,"z":-107.06349},"screenPosition":{"x":0.9423486,"y":0.3904946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.776794,"y":75.88521,"z":-105.909744},"screenPosition":{"x":0.8996712,"y":0.3862836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.472824,"y":72.006996,"z":-104.953384},"screenPosition":{"x":0.8504084,"y":0.4167403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.98302,"y":68.542305,"z":-104.27672},"screenPosition":{"x":0.85251826,"y":0.4536592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.514343,"y":66.436,"z":-104.01694},"screenPosition":{"x":0.8931369,"y":0.48438498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.707207,"y":66.41258,"z":-102.994774},"screenPosition":{"x":0.9346779,"y":0.49815035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.826305,"y":68.17643,"z":-103.9959},"screenPosition":{"x":0.9747052,"y":0.48598883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.433887,"y":72.51756,"z":-101.45162},"screenPosition":{"x":1.0331104,"y":0.46728605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.150295,"y":73.721924,"z":-106.32468},"screenPosition":{"x":1.004285,"y":0.42930144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.738487,"y":75.06246,"z":-107.06349},"screenPosition":{"x":0.9885766,"y":0.40971565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.079445,"y":73.58764,"z":-105.68041},"screenPosition":{"x":0.9576874,"y":0.4226825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.64624,"y":70.739426,"z":-105.07734},"screenPosition":{"x":0.94758797,"y":0.4505441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.12542,"y":68.64749,"z":-104.04506},"screenPosition":{"x":0.942337,"y":0.4738877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.545418,"y":66.12574,"z":-102.81796},"screenPosition":{"x":0.93484694,"y":0.501612},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-61.284756,"y":70.643425,"z":-104.959236},"screenPosition":{"x":0.9216094,"y":0.4460641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.332016,"y":70.13235,"z":-104.6662},"screenPosition":{"x":0.8720349,"y":0.44102883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.49891,"y":69.50112,"z":-104.33956},"screenPosition":{"x":0.8195202,"y":0.43659922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.737885,"y":66.747116,"z":-103.54009},"screenPosition":{"x":0.75343966,"y":0.45169893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.068886,"y":62.6362,"z":-102.731384},"screenPosition":{"x":0.75442857,"y":0.495185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.39076,"y":61.005066,"z":-102.588875},"screenPosition":{"x":0.8010435,"y":0.5221418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.36382,"y":60.476917,"z":-102.05771},"screenPosition":{"x":0.84369785,"y":0.5391061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.03745,"y":61.961124,"z":-101.66866},"screenPosition":{"x":0.9331143,"y":0.5464686},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-58.524868,"y":69.707115,"z":-104.232635},"screenPosition":{"x":0.9578048,"y":0.4663191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.63326,"y":69.56873,"z":-104.64226},"screenPosition":{"x":0.89411277,"y":0.451538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.74705,"y":66.84817,"z":-103.97587},"screenPosition":{"x":0.86128163,"y":0.4733275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.372826,"y":64.72908,"z":-103.589386},"screenPosition":{"x":0.86973584,"y":0.49742794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.431126,"y":62.752296,"z":-102.59917},"screenPosition":{"x":0.87116605,"y":0.52085215},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-57.369576,"y":67.645836,"z":-104.0559},"screenPosition":{"x":0.96343666,"y":0.48835808},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-54.01028,"y":61.63258,"z":-97.1096},"screenPosition":{"x":0.9712124,"y":0.5764905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.984154,"y":61.04892,"z":-101.28559},"screenPosition":{"x":0.9320667,"y":0.55647814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.813805,"y":59.641365,"z":-99.95784},"screenPosition":{"x":0.90593606,"y":0.5698195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.26141,"y":57.414433,"z":-100.024254},"screenPosition":{"x":0.8542995,"y":0.57876503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.15392,"y":54.862328,"z":-99.74581},"screenPosition":{"x":0.81199914,"y":0.59591794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.669064,"y":52.094257,"z":-98.8464},"screenPosition":{"x":0.7872049,"y":0.6208797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.386562,"y":49.59352,"z":-96.96612},"screenPosition":{"x":0.804016,"y":0.6553397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.803497,"y":49.09136,"z":-95.3744},"screenPosition":{"x":0.8637719,"y":0.67935807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.763836,"y":51.66964,"z":-93.28774},"screenPosition":{"x":0.91423583,"y":0.6762684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.589657,"y":54.780575,"z":-94.210266},"screenPosition":{"x":0.9358125,"y":0.64715046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.692398,"y":56.055176,"z":-99.188515},"screenPosition":{"x":0.9035529,"y":0.60699916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.231842,"y":54.35789,"z":-99.18715},"screenPosition":{"x":0.82095385,"y":0.60409963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.36097,"y":49.459244,"z":-97.29139},"screenPosition":{"x":0.7902509,"y":0.6535006},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-56.458675,"y":52.054733,"z":-97.50857},"screenPosition":{"x":0.88027334,"y":0.6477342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.147873,"y":36.004673,"z":-90.30967},"screenPosition":{"x":0.7687454,"y":0.8070012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.39342,"y":36.5929,"z":-91.80443},"screenPosition":{"x":0.7243403,"y":0.7851193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.572517,"y":36.038643,"z":-92.43097},"screenPosition":{"x":0.6886464,"y":0.7797989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.993286,"y":35.687756,"z":-93.23219},"screenPosition":{"x":0.651051,"y":0.7724207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.49966,"y":35.33002,"z":-94.063965},"screenPosition":{"x":0.6116958,"y":0.7636286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.49659,"y":35.47409,"z":-95.28568},"screenPosition":{"x":0.5681829,"y":0.7474349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.136955,"y":36.079857,"z":-96.55225},"screenPosition":{"x":0.5328157,"y":0.7284109},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-74.17402,"y":41.771282,"z":-97.82385},"screenPosition":{"x":0.5510844,"y":0.67203104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.86283,"y":43.500267,"z":-98.342186},"screenPosition":{"x":0.59691364,"y":0.6634776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.55072,"y":44.157135,"z":-98.36739},"screenPosition":{"x":0.6360303,"y":0.66583276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.71549,"y":45.37934,"z":-97.75125},"screenPosition":{"x":0.6846816,"y":0.6659595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.58471,"y":46.543797,"z":-96.99732},"screenPosition":{"x":0.7392264,"y":0.6715102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.020134,"y":44.686905,"z":-94.87464},"screenPosition":{"x":0.7805312,"y":0.707516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.02879,"y":41.797516,"z":-93.34166},"screenPosition":{"x":0.7763051,"y":0.7396158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.841442,"y":39.240044,"z":-92.6415},"screenPosition":{"x":0.74885654,"y":0.76154953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.461994,"y":37.14988,"z":-92.05233},"screenPosition":{"x":0.7272568,"y":0.78021574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.375854,"y":35.51105,"z":-92.53353},"screenPosition":{"x":0.6739213,"y":0.7821434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.4993,"y":36.093796,"z":-93.97866},"screenPosition":{"x":0.6312535,"y":0.76096857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.60668,"y":39.50233,"z":-95.762955},"screenPosition":{"x":0.6359771,"y":0.7216518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.102516,"y":41.87046,"z":-95.730644},"screenPosition":{"x":0.68776345,"y":0.7104608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.135216,"y":41.663284,"z":-94.49538},"screenPosition":{"x":0.73013437,"y":0.72659904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.965466,"y":40.23625,"z":-93.08543},"screenPosition":{"x":0.7537485,"y":0.75200015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.07892,"y":38.298656,"z":-91.582695},"screenPosition":{"x":0.76952106,"y":0.780261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.31763,"y":36.33039,"z":-90.50502},"screenPosition":{"x":0.7687668,"y":0.8038456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.56145,"y":33.218517,"z":-89.3636},"screenPosition":{"x":0.7453322,"y":0.83248085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.839867,"y":30.988361,"z":-89.75156},"screenPosition":{"x":0.6827603,"y":0.83765256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.30053,"y":31.828003,"z":-91.42977},"screenPosition":{"x":0.6373864,"y":0.8141777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.09716,"y":34.689117,"z":-93.26442},"screenPosition":{"x":0.6285034,"y":0.7769041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.317184,"y":37.433807,"z":-94.05164},"screenPosition":{"x":0.6570768,"y":0.7534792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.172535,"y":38.99339,"z":-93.83785},"screenPosition":{"x":0.69852334,"y":0.74854976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.020546,"y":39.669712,"z":-92.881775},"screenPosition":{"x":0.7490756,"y":0.75676775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.793907,"y":39.227306,"z":-91.45229},"screenPosition":{"x":0.79448694,"y":0.77764606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.584423,"y":37.09082,"z":-91.224625},"screenPosition":{"x":0.80466384,"y":0.80149674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.893246,"y":35.089756,"z":-90.10148},"screenPosition":{"x":0.7982201,"y":0.82420915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.279823,"y":32.416172,"z":-83.73657},"screenPosition":{"x":0.8305647,"y":0.8833267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.171635,"y":30.02545,"z":-88.25759},"screenPosition":{"x":0.7627686,"y":0.8729231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.892883,"y":32.641968,"z":-89.65192},"screenPosition":{"x":0.72255886,"y":0.8327286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.245552,"y":35.766815,"z":-90.25314},"screenPosition":{"x":0.76576394,"y":0.8087625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.969177,"y":36.38947,"z":-90.64728},"screenPosition":{"x":0.8051528,"y":0.81092316},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-50.774815,"y":31.36434,"z":-82.81648},"screenPosition":{"x":0.8311637,"y":0.8974221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.10644,"y":30.092363,"z":-83.79867},"screenPosition":{"x":0.80469656,"y":0.89982724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.88192,"y":31.17133,"z":-87.89778},"screenPosition":{"x":0.7687572,"y":0.86144644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.843304,"y":33.422665,"z":-89.554214},"screenPosition":{"x":0.74295074,"y":0.8301429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.36643,"y":35.544685,"z":-90.600426},"screenPosition":{"x":0.74835545,"y":0.80648494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.200176,"y":37.06367,"z":-91.91635},"screenPosition":{"x":0.7302249,"y":0.7816259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.40489,"y":39.742535,"z":-93.4486},"screenPosition":{"x":0.7291323,"y":0.7494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.566765,"y":42.071037,"z":-93.659355},"screenPosition":{"x":0.77103126,"y":0.7357364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.228985,"y":43.576313,"z":-93.34894},"screenPosition":{"x":0.81500286,"y":0.7322979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.78999,"y":42.185844,"z":-88.852394},"screenPosition":{"x":0.8695255,"y":0.77637804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.699944,"y":39.068115,"z":-92.05496},"screenPosition":{"x":0.8233217,"y":0.7828217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.204407,"y":38.285583,"z":-91.62627},"screenPosition":{"x":0.7677489,"y":0.7800537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.335876,"y":40.196556,"z":-93.60214},"screenPosition":{"x":0.73319674,"y":0.7456441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.344303,"y":43.307434,"z":-94.84118},"screenPosition":{"x":0.75235844,"y":0.71469766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.18388,"y":45.993793,"z":-95.45741},"screenPosition":{"x":0.7862073,"y":0.6937262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.24216,"y":47.591232,"z":-94.94894},"screenPosition":{"x":0.83872586,"y":0.6912998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.321808,"y":47.76409,"z":-91.41701},"screenPosition":{"x":0.8963973,"y":0.7178038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.015728,"y":44.765133,"z":-88.93796},"screenPosition":{"x":0.89623237,"y":0.75698376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.87849,"y":42.124176,"z":-93.338326},"screenPosition":{"x":0.831496,"y":0.7498438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.853813,"y":58.81795,"z":-100.34872},"screenPosition":{"x":0.9163485,"y":0.5785989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.035564,"y":61.322105,"z":-100.71166},"screenPosition":{"x":0.9130703,"y":0.5520299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.66983,"y":62.710114,"z":-102.67516},"screenPosition":{"x":0.867826,"y":0.52033895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.670654,"y":61.757565,"z":-102.73843},"screenPosition":{"x":0.80121726,"y":0.514242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.39704,"y":55.582493,"z":-101.27327},"screenPosition":{"x":0.7378324,"y":0.56594926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.42235,"y":54.44653,"z":-101.08017},"screenPosition":{"x":0.7459867,"y":0.5796249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.051838,"y":53.048313,"z":-98.98555},"screenPosition":{"x":0.8022654,"y":0.61444205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.708496,"y":55.99501,"z":-99.24557},"screenPosition":{"x":0.8552558,"y":0.59671116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.00316,"y":58.26254,"z":-99.09513},"screenPosition":{"x":0.90556484,"y":0.5850448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.99528,"y":61.23935,"z":-101.365555},"screenPosition":{"x":0.92773795,"y":0.55341375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.35411,"y":64.67805,"z":-102.16855},"screenPosition":{"x":0.9291562,"y":0.5171213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.092834,"y":65.61161,"z":-103.682465},"screenPosition":{"x":0.84812164,"y":0.48346102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.00072,"y":61.73542,"z":-102.71402},"screenPosition":{"x":0.7958889,"y":0.51329684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.27096,"y":59.472248,"z":-102.25762},"screenPosition":{"x":0.79376465,"y":0.5367752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.43489,"y":56.638325,"z":-101.3376},"screenPosition":{"x":0.7892122,"y":0.56703866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.63198,"y":54.267597,"z":-100.47244},"screenPosition":{"x":0.77159405,"y":0.5896197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.35229,"y":51.556263,"z":-100.063835},"screenPosition":{"x":0.7292945,"y":0.6080814},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-72.38056,"y":49.8184,"z":-99.7062},"screenPosition":{"x":0.6268165,"y":0.6032586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.02156,"y":46.825592,"z":-99.185104},"screenPosition":{"x":0.64502215,"y":0.63846314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.60614,"y":47.55334,"z":-98.57236},"screenPosition":{"x":0.7007162,"y":0.64659786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.01874,"y":50.749313,"z":-99.61368},"screenPosition":{"x":0.72845733,"y":0.61675906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.38321,"y":52.61971,"z":-100.6201},"screenPosition":{"x":0.72015667,"y":0.59328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.59983,"y":53.990547,"z":-100.791595},"screenPosition":{"x":0.6944878,"y":0.5735831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.939964,"y":55.360977,"z":-100.95569},"screenPosition":{"x":0.66678154,"y":0.5533228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.211945,"y":55.74859,"z":-100.906876},"screenPosition":{"x":0.6342337,"y":0.54238975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.93308,"y":57.510387,"z":-101.19397},"screenPosition":{"x":0.6183643,"y":0.52049047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.73787,"y":58.830032,"z":-101.37852},"screenPosition":{"x":0.5985779,"y":0.502443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.32388,"y":59.588264,"z":-101.3338},"screenPosition":{"x":0.5480828,"y":0.48382983},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-80.29976,"y":68.9664,"z":-103.46444},"screenPosition":{"x":0.6199808,"y":0.40023783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.82202,"y":68.64516,"z":-103.18521},"screenPosition":{"x":0.56399745,"y":0.3918334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.87039,"y":67.05358,"z":-102.71275},"screenPosition":{"x":0.52302516,"y":0.39996284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.695854,"y":66.3156,"z":-102.382744},"screenPosition":{"x":0.47523963,"y":0.39767158},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-93.97165,"y":73.07156,"z":-103.56199},"screenPosition":{"x":0.43473953,"y":0.31802118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.68839,"y":70.62998,"z":-102.862366},"screenPosition":{"x":0.3784172,"y":0.3318674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.585846,"y":68.86006,"z":-102.41861},"screenPosition":{"x":0.3542136,"y":0.3453375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.02895,"y":66.59872,"z":-101.8341},"screenPosition":{"x":0.3183454,"y":0.36165977},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-107.222145,"y":66.21973,"z":-101.26587},"screenPosition":{"x":0.1903277,"y":0.3386977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.551575,"y":64.71547,"z":-101.89257},"screenPosition":{"x":0.16409166,"y":0.3499483},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-104.050835,"y":60.21227,"z":-101.105606},"screenPosition":{"x":0.20417184,"y":0.40090936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.38516,"y":63.694157,"z":-100.93532},"screenPosition":{"x":0.23433356,"y":0.37444746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.00257,"y":64.79554,"z":-101.02363},"screenPosition":{"x":0.20051388,"y":0.3558354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.54975,"y":66.25532,"z":-101.195206},"screenPosition":{"x":0.17059517,"y":0.33433878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.96937,"y":67.82561,"z":-102.43608},"screenPosition":{"x":0.15894336,"y":0.31123742},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-111.02781,"y":75.40547,"z":-103.0684},"screenPosition":{"x":0.18694654,"y":0.24128239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.48182,"y":73.17656,"z":-102.43126},"screenPosition":{"x":0.13098136,"y":0.25579873},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-114.12619,"y":79.58221,"z":-103.80709},"screenPosition":{"x":0.16441412,"y":0.19256778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.58631,"y":79.96087,"z":-103.626884},"screenPosition":{"x":0.09143366,"y":0.17738976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.78116,"y":78.49555,"z":-104.26873},"screenPosition":{"x":0.08761861,"y":0.18389852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.57546,"y":92.43496,"z":-107.06349},"screenPosition":{"x":0.09754265,"y":0.039234273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.32839,"y":91.00317,"z":-105.72469},"screenPosition":{"x":0.07783897,"y":0.054785587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.39931,"y":89.2522,"z":-105.21571},"screenPosition":{"x":0.03524583,"y":0.06598932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.82356,"y":88.01584,"z":-105.004036},"screenPosition":{"x":-0.010393789,"y":0.06615402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.45293,"y":90.03513,"z":-105.67586},"screenPosition":{"x":-0.007644297,"y":0.04441216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.75483,"y":89.4177,"z":-106.20944},"screenPosition":{"x":0.030671502,"y":0.056920066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.100426,"y":88.823296,"z":-105.19786},"screenPosition":{"x":0.04012562,"y":0.07566421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.79263,"y":87.08475,"z":-104.89145},"screenPosition":{"x":0.05026787,"y":0.09577268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.05657,"y":84.776855,"z":-104.484695},"screenPosition":{"x":0.06372999,"y":0.12246325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.40438,"y":83.11281,"z":-104.27425},"screenPosition":{"x":0.104555614,"y":0.14279705},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-115.36474,"y":80.93458,"z":-104.03236},"screenPosition":{"x":0.15350646,"y":0.1760342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.690926,"y":79.88451,"z":-103.95871},"screenPosition":{"x":0.18825316,"y":0.19440423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.72906,"y":79.742775,"z":-104.04346},"screenPosition":{"x":0.21751443,"y":0.20205672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.12624,"y":77.01773,"z":-103.536736},"screenPosition":{"x":0.22578959,"y":0.232487},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-87.59583,"y":76.15241,"z":-104.619125},"screenPosition":{"x":0.5510016,"y":0.3100834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.612724,"y":74.66271,"z":-104.407585},"screenPosition":{"x":0.5725624,"y":0.33028644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.78267,"y":71.75728,"z":-103.815346},"screenPosition":{"x":0.5678397,"y":0.35986087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.899956,"y":69.54441,"z":-103.3791},"screenPosition":{"x":0.5680976,"y":0.38317195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.93321,"y":66.33043,"z":-102.726845},"screenPosition":{"x":0.5637723,"y":0.41615444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.63801,"y":64.89936,"z":-102.5467},"screenPosition":{"x":0.59040636,"y":0.43680805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.673584,"y":65.0376,"z":-102.81168},"screenPosition":{"x":0.65209895,"y":0.44836044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.521576,"y":64.77541,"z":-102.821945},"screenPosition":{"x":0.66818315,"y":0.45449236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.94528,"y":64.939026,"z":-103.01044},"screenPosition":{"x":0.7087296,"y":0.4613208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.55983,"y":64.53513,"z":-103.06236},"screenPosition":{"x":0.7428882,"y":0.47275087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.417656,"y":65.60703,"z":-103.36652},"screenPosition":{"x":0.7668726,"y":0.46652925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.59098,"y":64.91744,"z":-103.49978},"screenPosition":{"x":0.8367549,"y":0.4884831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.085255,"y":69.60138,"z":-104.68188},"screenPosition":{"x":0.90303355,"y":0.45311028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.689537,"y":71.832726,"z":-105.07953},"screenPosition":{"x":0.89208174,"y":0.42734846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.63336,"y":74.05711,"z":-105.45556},"screenPosition":{"x":0.8755736,"y":0.40045565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.01594,"y":76.101006,"z":-105.82495},"screenPosition":{"x":0.86659807,"y":0.3770488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.810265,"y":77.493164,"z":-107.06349},"screenPosition":{"x":0.863906,"y":0.3578791},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-60.701405,"y":75.58841,"z":-107.06349},"screenPosition":{"x":0.9616008,"y":0.39849943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.163868,"y":73.251,"z":-105.60111},"screenPosition":{"x":0.95468915,"y":0.42559838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.486908,"y":70.4105,"z":-104.89587},"screenPosition":{"x":0.91736734,"y":0.44764447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.36759,"y":69.08239,"z":-104.49148},"screenPosition":{"x":0.8801795,"y":0.45374748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.975166,"y":66.94448,"z":-103.983635},"screenPosition":{"x":0.8584148,"y":0.47172174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.65335,"y":64.20564,"z":-103.39811},"screenPosition":{"x":0.8469469,"y":0.4981407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.241997,"y":61.449154,"z":-102.39658},"screenPosition":{"x":0.8515305,"y":0.53004754},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-67.86929,"y":62.936573,"z":-102.86864},"screenPosition":{"x":0.7746391,"y":0.49627778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.00996,"y":60.37044,"z":-102.47131},"screenPosition":{"x":0.8029323,"y":0.5291477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.19115,"y":59.76695,"z":-102.386536},"screenPosition":{"x":0.81210285,"y":0.53753346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.66483,"y":58.789715,"z":-101.11588},"screenPosition":{"x":0.8435948,"y":0.5593107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.277225,"y":58.43285,"z":-100.046394},"screenPosition":{"x":0.8767599,"y":0.57461685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.724842,"y":56.61045,"z":-99.4217},"screenPosition":{"x":0.9112607,"y":0.602432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.077698,"y":52.14251,"z":-96.69298},"screenPosition":{"x":0.8681448,"y":0.64602107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.19571,"y":54.21132,"z":-99.50345},"screenPosition":{"x":0.8070692,"y":0.6019325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.721325,"y":57.28693,"z":-100.54087},"screenPosition":{"x":0.8334408,"y":0.5739617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.992004,"y":60.13489,"z":-101.000244},"screenPosition":{"x":0.876721,"y":0.5541871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.924812,"y":60.033222,"z":-100.859055},"screenPosition":{"x":0.9228308,"y":0.5661761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.439816,"y":57.759182,"z":-99.06484},"screenPosition":{"x":0.9097859,"y":0.5911756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.18491,"y":57.82589,"z":-101.24872},"screenPosition":{"x":0.616381,"y":0.51673985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.7221,"y":61.751343,"z":-102.14257},"screenPosition":{"x":0.64701575,"y":0.4818865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.104485,"y":62.88007,"z":-102.60568},"screenPosition":{"x":0.70929986,"y":0.48311657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.75651,"y":61.48341,"z":-102.43626},"screenPosition":{"x":0.73696935,"y":0.5036453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.67405,"y":57.691925,"z":-101.66337},"screenPosition":{"x":0.7308697,"y":0.5422762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.49043,"y":55.392593,"z":-101.16669},"screenPosition":{"x":0.7199136,"y":0.56417596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.910126,"y":53.677128,"z":-100.82235},"screenPosition":{"x":0.7185436,"y":0.58194715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.64914,"y":50.408733,"z":-100.1119},"screenPosition":{"x":0.7029644,"y":0.6130934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.25379,"y":48.31053,"z":-99.55829},"screenPosition":{"x":0.66577256,"y":0.6273343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.414375,"y":47.508488,"z":-99.19432},"screenPosition":{"x":0.6124599,"y":0.6245538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.14568,"y":46.81927,"z":-98.93979},"screenPosition":{"x":0.58175945,"y":0.6253461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.06857,"y":45.672604,"z":-98.57295},"screenPosition":{"x":0.54537815,"y":0.62975836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.28624,"y":45.07731,"z":-98.25125},"screenPosition":{"x":0.492428,"y":0.6248776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.12102,"y":46.39363,"z":-98.374146},"screenPosition":{"x":0.45680583,"y":0.60352033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.30604,"y":49.217823,"z":-98.86831},"screenPosition":{"x":0.44018894,"y":0.5702901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.98015,"y":53.663082,"z":-99.92795},"screenPosition":{"x":0.48716944,"y":0.53333414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.37781,"y":55.190742,"z":-100.41907},"screenPosition":{"x":0.5362542,"y":0.5276096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.768036,"y":54.010815,"z":-100.372116},"screenPosition":{"x":0.58459324,"y":0.55023336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.91595,"y":52.047375,"z":-100.048256},"screenPosition":{"x":0.60122573,"y":0.57433856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.49114,"y":49.731384,"z":-99.62131},"screenPosition":{"x":0.60925025,"y":0.6004764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.49494,"y":48.49038,"z":-99.40629},"screenPosition":{"x":0.6171054,"y":0.6151949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.36134,"y":46.907387,"z":-99.18306},"screenPosition":{"x":0.64033735,"y":0.6366901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.457184,"y":43.307117,"z":-97.99339},"screenPosition":{"x":0.63176477,"y":0.6737584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.27657,"y":40.405838,"z":-97.634674},"screenPosition":{"x":0.5720263,"y":0.6908148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.323616,"y":42.025112,"z":-97.75275},"screenPosition":{"x":0.5196134,"y":0.6627332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.44517,"y":44.485302,"z":-98.17032},"screenPosition":{"x":0.50179017,"y":0.633081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.9214,"y":47.4259,"z":-98.79124},"screenPosition":{"x":0.51209676,"y":0.6042936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.02284,"y":50.15058,"z":-99.445816},"screenPosition":{"x":0.54220986,"y":0.5819491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.640945,"y":52.655655,"z":-100.13964},"screenPosition":{"x":0.5937735,"y":0.56643265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.25972,"y":53.718006,"z":-100.51498},"screenPosition":{"x":0.636684,"y":0.5642827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.59983,"y":53.990547,"z":-100.791595},"screenPosition":{"x":0.6944878,"y":0.5735831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.09041,"y":53.40642,"z":-100.69704},"screenPosition":{"x":0.7446453,"y":0.590991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.20398,"y":50.97357,"z":-99.38618},"screenPosition":{"x":0.7417864,"y":0.6184314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.653145,"y":49.14338,"z":-98.056564},"screenPosition":{"x":0.754329,"y":0.64534765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.082596,"y":46.300865,"z":-96.317154},"screenPosition":{"x":0.7599774,"y":0.6813228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.504135,"y":44.02436,"z":-96.35375},"screenPosition":{"x":0.7099834,"y":0.6920105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.25958,"y":41.406906,"z":-95.99609},"screenPosition":{"x":0.6677451,"y":0.70936644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.28382,"y":40.074123,"z":-97.03032},"screenPosition":{"x":0.59985435,"y":0.7027841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.430786,"y":43.586708,"z":-98.26853},"screenPosition":{"x":0.57336676,"y":0.6576102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.63952,"y":46.22786,"z":-99.01661},"screenPosition":{"x":0.6319699,"y":0.64201915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.48346,"y":45.820812,"z":-98.22502},"screenPosition":{"x":0.67697567,"y":0.659488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.88087,"y":44.399395,"z":-97.037674},"screenPosition":{"x":0.6919092,"y":0.6815032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.59144,"y":42.69901,"z":-95.86119},"screenPosition":{"x":0.70041156,"y":0.70463276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.28369,"y":41.867775,"z":-94.6343},"screenPosition":{"x":0.7295139,"y":0.7243726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.931114,"y":41.024113,"z":-92.99648},"screenPosition":{"x":0.7732199,"y":0.7481354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.889175,"y":42.307037,"z":-93.41512},"screenPosition":{"x":0.82827896,"y":0.7473776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.49788,"y":45.438843,"z":-94.44747},"screenPosition":{"x":0.85342234,"y":0.7184182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.22954,"y":48.13282,"z":-95.8616},"screenPosition":{"x":0.8593538,"y":0.68782496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.43492,"y":49.97245,"z":-96.358315},"screenPosition":{"x":0.8367884,"y":0.66281545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.993732,"y":51.470547,"z":-97.94766},"screenPosition":{"x":0.80816185,"y":0.63532835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.867584,"y":52.20174,"z":-99.74335},"screenPosition":{"x":0.7552954,"y":0.6089823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.37484,"y":48.66084,"z":-98.922424},"screenPosition":{"x":0.71100956,"y":0.6367348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.3483,"y":45.31791,"z":-97.58417},"screenPosition":{"x":0.69029105,"y":0.669388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.629433,"y":43.704613,"z":-95.4983},"screenPosition":{"x":0.73577887,"y":0.7044215},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-58.043045,"y":46.932255,"z":-94.99836},"screenPosition":{"x":0.8237466,"y":0.6949485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.21361,"y":47.860172,"z":-95.7471},"screenPosition":{"x":0.8630849,"y":0.6913886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.63848,"y":47.75697,"z":-89.59896},"screenPosition":{"x":0.9199192,"y":0.73056144},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-55.880733,"y":42.16251,"z":-93.35442},"screenPosition":{"x":0.83668196,"y":0.7504379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.127968,"y":62.37441,"z":-97.501305},"screenPosition":{"x":0.97499317,"y":0.568811},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-61.026104,"y":57.61289,"z":-100.40022},"screenPosition":{"x":0.84463155,"y":0.5733319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.404015,"y":55.89519,"z":-100.25329},"screenPosition":{"x":0.8146969,"y":0.58442503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.463264,"y":53.86649,"z":-100.24755},"screenPosition":{"x":0.7711768,"y":0.5940106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.89274,"y":53.458866,"z":-100.7752},"screenPosition":{"x":0.7174921,"y":0.58401316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.67514,"y":54.90204,"z":-100.92919},"screenPosition":{"x":0.6834445,"y":0.5616623},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-72.56634,"y":60.296303,"z":-102.00804},"screenPosition":{"x":0.6866972,"y":0.5055316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.64095,"y":62.68842,"z":-102.59079},"screenPosition":{"x":0.7152495,"y":0.4863779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.62211,"y":65.30879,"z":-103.229454},"screenPosition":{"x":0.746391,"y":0.46528083},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-64.01832,"y":68.93265,"z":-104.41994},"screenPosition":{"x":0.8696627,"y":0.4531593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.393974,"y":63.6332,"z":-103.32322},"screenPosition":{"x":0.8628191,"y":0.50760156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.6442,"y":61.471554,"z":-102.617714},"screenPosition":{"x":0.7846653,"y":0.51381165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.52084,"y":61.345226,"z":-102.478836},"screenPosition":{"x":0.7551063,"y":0.50891846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.59096,"y":60.762905,"z":-102.22787},"screenPosition":{"x":0.7198462,"y":0.50762546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.77124,"y":60.060513,"z":-101.94387},"screenPosition":{"x":0.682176,"y":0.5070892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.138016,"y":58.78768,"z":-101.522934},"screenPosition":{"x":0.6382263,"y":0.51123613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.13883,"y":57.273743,"z":-101.12957},"screenPosition":{"x":0.61379665,"y":0.522031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.08053,"y":55.952286,"z":-100.663895},"screenPosition":{"x":0.560732,"y":0.52477086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.191475,"y":57.73926,"z":-100.874344},"screenPosition":{"x":0.52368855,"y":0.49814728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.44114,"y":57.651886,"z":-100.78115},"screenPosition":{"x":0.5039873,"y":0.49492365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.56482,"y":59.230915,"z":-100.94495},"screenPosition":{"x":0.46550533,"y":0.47020665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.33758,"y":63.18628,"z":-101.831474},"screenPosition":{"x":0.49268875,"y":0.43420538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.38133,"y":67.14392,"z":-102.82076},"screenPosition":{"x":0.54642,"y":0.40393716},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-78.018425,"y":60.817463,"z":-101.80062},"screenPosition":{"x":0.60617006,"y":0.48310903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.10409,"y":57.80239,"z":-101.13003},"screenPosition":{"x":0.58680123,"y":0.5107822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.99184,"y":54.66229,"z":-100.32525},"screenPosition":{"x":0.5390177,"y":0.5337798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.98015,"y":53.663082,"z":-99.92795},"screenPosition":{"x":0.48716944,"y":0.53333414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.951096,"y":54.489925,"z":-99.8756},"screenPosition":{"x":0.43117592,"y":0.5128902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.5686,"y":54.074894,"z":-99.62918},"screenPosition":{"x":0.38851658,"y":0.5082783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.46688,"y":57.61145,"z":-100.3567},"screenPosition":{"x":0.39602935,"y":0.47242904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.15538,"y":60.248875,"z":-101.07558},"screenPosition":{"x":0.4471919,"y":0.45563442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.513504,"y":61.25946,"z":-101.39575},"screenPosition":{"x":0.4784576,"y":0.45146957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.62765,"y":62.058853,"z":-101.68375},"screenPosition":{"x":0.5121774,"y":0.4502613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.82687,"y":65.09879,"z":-102.461266},"screenPosition":{"x":0.55800235,"y":0.42787087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.385635,"y":68.100174,"z":-102.97244},"screenPosition":{"x":0.5367347,"y":0.39183104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.40834,"y":66.49873,"z":-102.38103},"screenPosition":{"x":0.4654298,"y":0.39360052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.71051,"y":62.581593,"z":-101.557655},"screenPosition":{"x":0.45264602,"y":0.43222484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.996254,"y":60.618683,"z":-101.284904},"screenPosition":{"x":0.48254505,"y":0.45918423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.58275,"y":58.917324,"z":-100.99296},"screenPosition":{"x":0.4940472,"y":0.47951695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.785645,"y":58.326477,"z":-101.02797},"screenPosition":{"x":0.533437,"y":0.49402997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.89643,"y":60.714104,"z":-101.78502},"screenPosition":{"x":0.607431,"y":0.48447222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.66592,"y":65.80815,"z":-102.86394},"screenPosition":{"x":0.6261371,"y":0.43478253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.90216,"y":64.64408,"z":-102.356445},"screenPosition":{"x":0.55414677,"y":0.43188107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.73518,"y":62.887077,"z":-101.801056},"screenPosition":{"x":0.5001407,"y":0.43900803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-84.007545,"y":56.269188,"z":-100.442444},"screenPosition":{"x":0.48701152,"y":0.50591415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.49227,"y":57.858074,"z":-101.00107},"screenPosition":{"x":0.5504815,"y":0.5025495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.817154,"y":60.875454,"z":-101.76618},"screenPosition":{"x":0.59424,"y":0.47995976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.71332,"y":63.677113,"z":-102.39075},"screenPosition":{"x":0.61264354,"y":0.45437637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.16604,"y":66.0515,"z":-102.82893},"screenPosition":{"x":0.6045713,"y":0.42768037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.948044,"y":68.192665,"z":-103.19617},"screenPosition":{"x":0.59004813,"y":0.40208158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.12714,"y":69.98086,"z":-103.34372},"screenPosition":{"x":0.53662056,"y":0.372008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.18992,"y":64.53613,"z":-102.019875},"screenPosition":{"x":0.4723446,"y":0.41579553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.57412,"y":63.139324,"z":-101.98455},"screenPosition":{"x":0.53481936,"y":0.44365346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.60517,"y":66.862175,"z":-102.92276},"screenPosition":{"x":0.5873402,"y":0.41551828},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-86.64385,"y":60.125263,"z":-101.13769},"screenPosition":{"x":0.46966136,"y":0.46159816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.242676,"y":58.001507,"z":-100.87006},"screenPosition":{"x":0.5091281,"y":0.49233326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.830215,"y":54.566486,"z":-100.13623},"screenPosition":{"x":0.49488088,"y":0.5254962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.74349,"y":51.933815,"z":-99.50109},"screenPosition":{"x":0.465093,"y":0.54694045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.8799,"y":49.88486,"z":-99.0999},"screenPosition":{"x":0.46607298,"y":0.56871724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.755135,"y":47.42033,"z":-98.62241},"screenPosition":{"x":0.46857175,"y":0.5951888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.100334,"y":44.84532,"z":-98.03361},"screenPosition":{"x":0.44784814,"y":0.61793435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.159676,"y":42.3495,"z":-97.36089},"screenPosition":{"x":0.40129057,"y":0.6344074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.32972,"y":41.970028,"z":-97.089645},"screenPosition":{"x":0.3503641,"y":0.6276806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.72302,"y":42.991417,"z":-97.173546},"screenPosition":{"x":0.30964237,"y":0.6100198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.50047,"y":44.7405,"z":-97.454506},"screenPosition":{"x":0.29817906,"y":0.58729213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.17124,"y":46.50743,"z":-97.74571},"screenPosition":{"x":0.2869538,"y":0.5650365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.84712,"y":48.37301,"z":-99.03661},"screenPosition":{"x":0.27401468,"y":0.54039526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.584114,"y":51.153297,"z":-98.62851},"screenPosition":{"x":0.27872652,"y":0.51588035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.53821,"y":51.757587,"z":-98.8829},"screenPosition":{"x":0.31371015,"y":0.51692474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.39742,"y":55.067047,"z":-99.74002},"screenPosition":{"x":0.36639184,"y":0.4931754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.458405,"y":55.013653,"z":-99.961205},"screenPosition":{"x":0.42655924,"y":0.5063096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.03923,"y":51.984047,"z":-99.3764},"screenPosition":{"x":0.43015948,"y":0.53905696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.58009,"y":48.627495,"z":-98.544365},"screenPosition":{"x":0.3864031,"y":0.56518114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.221504,"y":46.376816,"z":-97.950485},"screenPosition":{"x":0.3477283,"y":0.580733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.218094,"y":46.24782,"z":-97.74478},"screenPosition":{"x":0.29054934,"y":0.57216513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.597206,"y":48.051525,"z":-98.98044},"screenPosition":{"x":0.276415,"y":0.54414177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.45754,"y":51.050106,"z":-98.61322},"screenPosition":{"x":0.28001446,"y":0.5172787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.36757,"y":53.160767,"z":-99.14358},"screenPosition":{"x":0.30938703,"y":0.5012425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.689,"y":55.19973,"z":-99.692924},"screenPosition":{"x":0.34736377,"y":0.48777252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.60997,"y":57.107967,"z":-100.29624},"screenPosition":{"x":0.4060514,"y":0.48003912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.97788,"y":53.889244,"z":-99.800575},"screenPosition":{"x":0.44251418,"y":0.52160096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.95748,"y":50.273705,"z":-98.88542},"screenPosition":{"x":0.39052194,"y":0.5485989},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-94.266365,"y":50.802242,"z":-98.62895},"screenPosition":{"x":0.29681155,"y":0.52342445},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-93.52793,"y":56.720592,"z":-99.97901},"screenPosition":{"x":0.3435988,"y":0.47096893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.92425,"y":58.59274,"z":-100.250534},"screenPosition":{"x":0.31816325,"y":0.44578713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.175735,"y":60.031727,"z":-100.435005},"screenPosition":{"x":0.29210076,"y":0.42526877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.407425,"y":61.138252,"z":-100.547264},"screenPosition":{"x":0.2644779,"y":0.40780422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.10435,"y":63.25305,"z":-100.85456},"screenPosition":{"x":0.23575483,"y":0.37949345},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-97.022865,"y":65.34916,"z":-101.676926},"screenPosition":{"x":0.3416489,"y":0.3797207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.899506,"y":63.99989,"z":-101.50468},"screenPosition":{"x":0.36615497,"y":0.3990845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.37048,"y":61.372143,"z":-101.015076},"screenPosition":{"x":0.37388048,"y":0.4283747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.010345,"y":58.157227,"z":-100.26759},"screenPosition":{"x":0.34480107,"y":0.45609778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.58089,"y":57.45765,"z":-99.902},"screenPosition":{"x":0.28581026,"y":0.45104316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.12841,"y":59.445503,"z":-100.19012},"screenPosition":{"x":0.25861973,"y":0.42439142},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.0288,"y":64.08223,"z":-101.27863},"screenPosition":{"x":0.303295,"y":0.38497132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.0147,"y":68.259445,"z":-102.14238},"screenPosition":{"x":0.313165,"y":0.3430857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.20379,"y":68.47448,"z":-101.942085},"screenPosition":{"x":0.2501599,"y":0.32755724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.47571,"y":67.187584,"z":-101.52365},"screenPosition":{"x":0.20758182,"y":0.3321411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.86764,"y":67.5107,"z":-101.57179},"screenPosition":{"x":0.2038808,"y":0.3278709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.51439,"y":67.47024,"z":-101.40633},"screenPosition":{"x":0.16338898,"y":0.3200515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.67998,"y":68.739716,"z":-102.59583},"screenPosition":{"x":0.14814246,"y":0.3013123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.384834,"y":71.95293,"z":-102.226036},"screenPosition":{"x":0.13856438,"y":0.27083316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.93873,"y":72.62228,"z":-102.34103},"screenPosition":{"x":0.13453408,"y":0.2628425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.22571,"y":73.30079,"z":-103.39291},"screenPosition":{"x":0.12641704,"y":0.24674933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.99861,"y":75.581375,"z":-103.79145},"screenPosition":{"x":0.11286878,"y":0.21988796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.918144,"y":78.050575,"z":-104.22296},"screenPosition":{"x":0.09820004,"y":0.19080508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.18841,"y":79.81476,"z":-103.55903},"screenPosition":{"x":0.092552304,"y":0.17565651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.73539,"y":94.81807,"z":-106.139},"screenPosition":{"x":0.092378594,"y":0.018634394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.34481,"y":91.158195,"z":-105.817085},"screenPosition":{"x":0.09268581,"y":0.055784166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.487656,"y":90.11523,"z":-105.63756},"screenPosition":{"x":0.099182315,"y":0.06794738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.30754,"y":90.801216,"z":-105.74049},"screenPosition":{"x":0.09245622,"y":0.06007473},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-117.57155,"y":89.34798,"z":-105.75896},"screenPosition":{"x":0.17003746,"y":0.09094197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.512634,"y":88.47917,"z":-105.68896},"screenPosition":{"x":0.1964326,"y":0.10564542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.47486,"y":87.73188,"z":-105.64452},"screenPosition":{"x":0.22323129,"y":0.11915452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.12949,"y":85.9833,"z":-105.45641},"screenPosition":{"x":0.26410034,"y":0.14616711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.788414,"y":85.61139,"z":-105.51278},"screenPosition":{"x":0.2978769,"y":0.15723944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.70971,"y":85.34755,"z":-105.577484},"screenPosition":{"x":0.32812577,"y":0.16633943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.16262,"y":85.52956,"z":-105.70916},"screenPosition":{"x":0.35296056,"y":0.16965188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.334305,"y":84.39821,"z":-105.50842},"screenPosition":{"x":0.35889596,"y":0.1828118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.268,"y":82.00109,"z":-105.04236},"screenPosition":{"x":0.3609063,"y":0.20847388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.17539,"y":80.21598,"z":-104.59466},"screenPosition":{"x":0.33656105,"y":0.22225368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.778114,"y":77.7487,"z":-104.0144},"screenPosition":{"x":0.31251925,"y":0.2431089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.97842,"y":75.176384,"z":-103.55304},"screenPosition":{"x":0.3244623,"y":0.2726457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.083084,"y":72.514725,"z":-102.959335},"screenPosition":{"x":0.307001,"y":0.29698262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.0687,"y":70.61212,"z":-102.59936},"screenPosition":{"x":0.3111455,"y":0.31788012},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.799904,"y":67.23986,"z":-101.93002},"screenPosition":{"x":0.31075415,"y":0.35315618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.825806,"y":64.437775,"z":-101.36912},"screenPosition":{"x":0.30851814,"y":0.38234022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.61016,"y":62.802525,"z":-101.08006},"screenPosition":{"x":0.31737956,"y":0.401421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.74951,"y":61.150192,"z":-100.766235},"screenPosition":{"x":0.32069036,"y":0.41951305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.39378,"y":59.195927,"z":-100.41505},"screenPosition":{"x":0.32979065,"y":0.44200262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.11844,"y":56.79224,"z":-99.9599},"screenPosition":{"x":0.33511114,"y":0.46826124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.121216,"y":54.830364,"z":-99.58583},"screenPosition":{"x":0.33861905,"y":0.48968822},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-90.166306,"y":50.440342,"z":-98.791565},"screenPosition":{"x":0.35757038,"y":0.54002607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.028305,"y":50.63924,"z":-98.90277},"screenPosition":{"x":0.37622774,"y":0.5418601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.356,"y":49.98472,"z":-98.85721},"screenPosition":{"x":0.39803466,"y":0.55317897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.66096,"y":49.926662,"z":-98.8855},"screenPosition":{"x":0.40834913,"y":0.555957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.84316,"y":49.76674,"z":-98.89857},"screenPosition":{"x":0.4199154,"y":0.5601413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.63034,"y":50.306164,"z":-99.08936},"screenPosition":{"x":0.44173136,"y":0.55915725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.254326,"y":49.58944,"z":-98.89426},"screenPosition":{"x":0.42791906,"y":0.5635694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.16543,"y":49.51874,"z":-98.82476},"screenPosition":{"x":0.41352063,"y":0.5612948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.849365,"y":48.540287,"z":-98.62748},"screenPosition":{"x":0.41244352,"y":0.5715816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.60844,"y":47.112198,"z":-98.3265},"screenPosition":{"x":0.4075863,"y":0.5855933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.56333,"y":45.640858,"z":-98.06354},"screenPosition":{"x":0.41481218,"y":0.60260415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.95614,"y":44.221207,"z":-97.84522},"screenPosition":{"x":0.43097466,"y":0.62095237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.262245,"y":43.03637,"z":-97.683876},"screenPosition":{"x":0.44987437,"y":0.6374048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.211205,"y":41.557705,"z":-97.47879},"screenPosition":{"x":0.4724974,"y":0.65770143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.73837,"y":40.146946,"z":-97.25449},"screenPosition":{"x":0.48665684,"y":0.6751861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.23647,"y":39.53288,"z":-97.148636},"screenPosition":{"x":0.49067622,"y":0.68256867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.14196,"y":38.53461,"z":-96.99302},"screenPosition":{"x":0.50149155,"y":0.6956644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.385666,"y":36.10759,"z":-96.44287},"screenPosition":{"x":0.48321205,"y":0.7173666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.53125,"y":34.926716,"z":-96.05532},"screenPosition":{"x":0.44320804,"y":0.7213761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.993164,"y":34.699284,"z":-95.85951},"screenPosition":{"x":0.40406072,"y":0.71552867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.488396,"y":36.008286,"z":-96.00087},"screenPosition":{"x":0.373606,"y":0.69533634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.09644,"y":39.039513,"z":-96.63401},"screenPosition":{"x":0.3824325,"y":0.6652832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.14318,"y":41.416286,"z":-97.27416},"screenPosition":{"x":0.42664877,"y":0.6495705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.33266,"y":41.657322,"z":-97.49359},"screenPosition":{"x":0.4712281,"y":0.65641844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.12392,"y":40.858814,"z":-97.44797},"screenPosition":{"x":0.5003439,"y":0.6709546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.64762,"y":40.745228,"z":-97.56935},"screenPosition":{"x":0.53766906,"y":0.68000853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.61014,"y":41.773617,"z":-97.976006},"screenPosition":{"x":0.5904484,"y":0.68029386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.27743,"y":47.242672,"z":-99.26203},"screenPosition":{"x":0.64366496,"y":0.6339219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.49991,"y":45.69156,"z":-98.669914},"screenPosition":{"x":0.56956726,"y":0.63465136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.191086,"y":43.38792,"z":-98.23883},"screenPosition":{"x":0.5758313,"y":0.66012913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.16868,"y":41.811714,"z":-98.01052},"screenPosition":{"x":0.5974358,"y":0.68131065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.648224,"y":41.347374,"z":-96.90057},"screenPosition":{"x":0.63198304,"y":0.69819176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.751686,"y":40.00251,"z":-85.87474},"screenPosition":{"x":0.88462895,"y":0.8130989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.8343,"y":37.2473,"z":-84.98043},"screenPosition":{"x":0.86652255,"y":0.8394273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.51074,"y":34.940178,"z":-85.96503},"screenPosition":{"x":0.82886004,"y":0.84935915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.325855,"y":32.665146,"z":-89.366104},"screenPosition":{"x":0.77684885,"y":0.84593946},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-63.49302,"y":30.199312,"z":-90.469025},"screenPosition":{"x":0.6387491,"y":0.8325477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.875584,"y":27.054167,"z":-88.979744},"screenPosition":{"x":0.6289037,"y":0.86862224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.413307,"y":25.382504,"z":-87.35895},"screenPosition":{"x":0.6550239,"y":0.8973581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.188473,"y":23.89569,"z":-85.90385},"screenPosition":{"x":0.67877185,"y":0.923088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.98562,"y":22.853146,"z":-84.633766},"screenPosition":{"x":0.70494854,"y":0.94429606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.672615,"y":21.484173,"z":-84.67076},"screenPosition":{"x":0.72397953,"y":0.96040857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.858738,"y":19.874254,"z":-82.47637},"screenPosition":{"x":0.74455607,"y":0.993499},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.8457682,"y":1.3353126},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.803092,"y":1.3614657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.925934,"y":15.278072,"z":-81.12632},"screenPosition":{"x":0.64302886,"y":1.0181878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.802593,"y":18.874088,"z":-85.16959},"screenPosition":{"x":0.639751,"y":0.9660818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.252087,"y":20.246597,"z":-84.479004},"screenPosition":{"x":0.65520597,"y":0.95902646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.91607,"y":22.73911,"z":-85.33856},"screenPosition":{"x":0.67528266,"y":0.934716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.56285,"y":24.64929,"z":-85.183},"screenPosition":{"x":0.73413956,"y":0.9277885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.06544,"y":25.85963,"z":-85.47052},"screenPosition":{"x":0.7407638,"y":0.9150937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.012665,"y":27.30449,"z":-87.114944},"screenPosition":{"x":0.75436074,"y":0.90047437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.626472,"y":30.523651,"z":-88.18398},"screenPosition":{"x":0.7871946,"y":0.8734116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.712196,"y":32.603397,"z":-88.78927},"screenPosition":{"x":0.7529752,"y":0.84052616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.575237,"y":32.94933,"z":-90.427704},"screenPosition":{"x":0.6995367,"y":0.8213881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.78805,"y":32.63862,"z":-91.16409},"screenPosition":{"x":0.66482264,"y":0.8135749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.687996,"y":30.01934,"z":-91.25041},"screenPosition":{"x":0.60561484,"y":0.82531136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.22174,"y":26.99759,"z":-89.86889},"screenPosition":{"x":0.5937895,"y":0.8576275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.01284,"y":25.044207,"z":-87.84608},"screenPosition":{"x":0.62922597,"y":0.89283985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.563408,"y":27.946972,"z":-87.65886},"screenPosition":{"x":0.6983332,"y":0.88099384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.378265,"y":31.285313,"z":-90.07872},"screenPosition":{"x":0.6773216,"y":0.8339637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.44617,"y":29.894749,"z":-90.7184},"screenPosition":{"x":0.6232429,"y":0.83266616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.633026,"y":27.573744,"z":-90.64613},"screenPosition":{"x":0.57645017,"y":0.8449519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.17154,"y":24.539408,"z":-89.26146},"screenPosition":{"x":0.56447613,"y":0.87736964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.138233,"y":22.893354,"z":-87.42896},"screenPosition":{"x":0.59921616,"y":0.9086639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.387093,"y":22.009344,"z":-86.00881},"screenPosition":{"x":0.6344997,"y":0.9309978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.17234,"y":21.957836,"z":-84.73923},"screenPosition":{"x":0.68057084,"y":0.9431928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.905464,"y":25.469614,"z":-86.344406},"screenPosition":{"x":0.7470136,"y":0.9211138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.893513,"y":27.954584,"z":-87.01303},"screenPosition":{"x":0.7231235,"y":0.8891439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.06557,"y":27.646055,"z":-88.511566},"screenPosition":{"x":0.65939254,"y":0.871658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.431652,"y":24.388556,"z":-87.3598},"screenPosition":{"x":0.6330328,"y":0.8991339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.639233,"y":22.344425,"z":-85.462776},"screenPosition":{"x":0.66247547,"y":0.93627864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.742653,"y":22.682896,"z":-85.17416},"screenPosition":{"x":0.7236033,"y":0.9479805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.181,"y":23.451729,"z":-81.943794},"screenPosition":{"x":0.77859324,"y":0.9660319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.052746,"y":27.990551,"z":-87.40305},"screenPosition":{"x":0.75191444,"y":0.8937243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.35781,"y":26.522348,"z":-86.6245},"screenPosition":{"x":0.7073645,"y":0.9010853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.249043,"y":23.601955,"z":-85.42214},"screenPosition":{"x":0.6897517,"y":0.9271637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.69862,"y":21.929262,"z":-84.85767},"screenPosition":{"x":0.71362925,"y":0.9527027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.94102,"y":21.831116,"z":-82.18505},"screenPosition":{"x":0.7579834,"y":0.9761559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.545887,"y":25.293646,"z":-81.4813},"screenPosition":{"x":0.7830226,"y":0.9509929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.90369,"y":25.43927,"z":-86.331665},"screenPosition":{"x":0.7331706,"y":0.9187639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.6012,"y":25.154596,"z":-86.5643},"screenPosition":{"x":0.6804613,"y":0.9085484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.87934,"y":22.85337,"z":-86.92392},"screenPosition":{"x":0.6176215,"y":0.9152622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.333202,"y":20.425837,"z":-87.22695},"screenPosition":{"x":0.59815294,"y":0.9323361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.625706,"y":17.559208,"z":-83.713684},"screenPosition":{"x":0.6026397,"y":0.9763792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.63089,"y":16.369417,"z":-82.04315},"screenPosition":{"x":0.63959754,"y":1.0030807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.527607,"y":17.684397,"z":-83.104996},"screenPosition":{"x":0.6911464,"y":1.0005752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.990463,"y":19.637558,"z":-83.61248},"screenPosition":{"x":0.71579766,"y":0.9821654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.05606,"y":21.721489,"z":-83.823044},"screenPosition":{"x":0.7100421,"y":0.95522577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.29753,"y":21.658752,"z":-85.057625},"screenPosition":{"x":0.6625552,"y":0.94207066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.449005,"y":17.656792,"z":-83.06349},"screenPosition":{"x":0.7015336,"y":1.0024601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.771744,"y":17.770144,"z":-83.233925},"screenPosition":{"x":0.6927146,"y":0.99664277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.70444,"y":18.800148,"z":-84.78261},"screenPosition":{"x":0.65216017,"y":0.97051126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.980343,"y":19.599478,"z":-85.98446},"screenPosition":{"x":0.6280954,"y":0.9519999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.24911,"y":20.396301,"z":-87.18254},"screenPosition":{"x":0.5899862,"y":0.9388899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.63312,"y":21.233599,"z":-88.441475},"screenPosition":{"x":0.5680692,"y":0.9136596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.981384,"y":22.058346,"z":-89.68154},"screenPosition":{"x":0.53838766,"y":0.8938989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.422424,"y":22.60393,"z":-90.77767},"screenPosition":{"x":0.5055189,"y":0.87671614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.72828,"y":23.413778,"z":-91.99534},"screenPosition":{"x":0.47637346,"y":0.85731244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.99752,"y":24.522514,"z":-93.3866},"screenPosition":{"x":0.4497054,"y":0.8348583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.173004,"y":25.63779,"z":-95.06349},"screenPosition":{"x":0.409568,"y":0.8081367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.93074,"y":28.602922,"z":-94.27912},"screenPosition":{"x":0.45988196,"y":0.7938543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.78387,"y":27.521585,"z":-92.62682},"screenPosition":{"x":0.49980584,"y":0.82009786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.388535,"y":26.244013,"z":-91.18859},"screenPosition":{"x":0.52737737,"y":0.8445889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.20386,"y":25.039707,"z":-89.86131},"screenPosition":{"x":0.5522818,"y":0.8673144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.24739,"y":25.057606,"z":-89.10822},"screenPosition":{"x":0.58138204,"y":0.87677383},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-103639/brain-CB2624-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.0843234177439458,-0.9624629256896509,0.257981933268393,0.0,-0.9952773065848359,-0.0938485231570163,-0.024810032214440378,0.0,0.04808995962999536,-0.25467149698025604,-0.9658311365909784,0.0,-82.6475246817173,32.57358803370013,-203.4540312574294,1.0]},"baseImage":"20190823-103639/base.webp","version":0,"savedAt":1.566557015731E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-105048-v0.json b/data/mapping/BAAAHS/dwayman/20190823-105048-v0.json new file mode 100644 index 0000000000..1f78c088d7 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-105048-v0.json @@ -0,0 +1 @@ +{"startedAt":1.56655744835E12,"surfaces":[{"brainId":"C784B0","panelName":"31D","pixels":[{"modelPosition":{"x":-244.43369,"y":28.897932,"z":-71.55639},"screenPosition":{"x":0.54731184,"y":0.9241421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.3337,"y":29.731377,"z":-72.07519},"screenPosition":{"x":0.529178,"y":0.90432584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.05566,"y":31.48098,"z":-72.95585},"screenPosition":{"x":0.52678776,"y":0.85851115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.2685,"y":32.984398,"z":-73.68806},"screenPosition":{"x":0.52195054,"y":0.82731926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.53389,"y":34.705154,"z":-74.51483},"screenPosition":{"x":0.51770794,"y":0.7926095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.03542,"y":36.36949,"z":-75.34002},"screenPosition":{"x":0.5107668,"y":0.7570761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.20586,"y":36.871483,"z":-75.65489},"screenPosition":{"x":0.5013811,"y":0.7414305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.06642,"y":36.711838,"z":-75.668106},"screenPosition":{"x":0.49187276,"y":0.7380305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.04196,"y":36.828506,"z":-75.98987},"screenPosition":{"x":0.46227595,"y":0.7159724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.0314,"y":38.238316,"z":-76.75484},"screenPosition":{"x":0.44912204,"y":0.6809817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.9195,"y":41.29068,"z":-78.09668},"screenPosition":{"x":0.45531043,"y":0.6285361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.17215,"y":43.161465,"z":-78.892265},"screenPosition":{"x":0.4620636,"y":0.59837556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.9339,"y":45.278435,"z":-79.83631},"screenPosition":{"x":0.464879,"y":0.5610028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.1183,"y":47.073566,"z":-80.5944},"screenPosition":{"x":0.4719477,"y":0.53245735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.51038,"y":49.103996,"z":-81.37677},"screenPosition":{"x":0.48822376,"y":0.50573474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.26114,"y":49.936165,"z":-81.78937},"screenPosition":{"x":0.48474512,"y":0.48803443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.97034,"y":51.835796,"z":-82.63885},"screenPosition":{"x":0.4870135,"y":0.45431077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.53284,"y":54.368214,"z":-83.736084},"screenPosition":{"x":0.49392438,"y":0.41192713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.82236,"y":56.598022,"z":-84.6833},"screenPosition":{"x":0.5020913,"y":0.37605748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.91263,"y":59.243282,"z":-85.7837},"screenPosition":{"x":0.51428723,"y":0.33561507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.70145,"y":61.877647,"z":-86.75995},"screenPosition":{"x":0.53974926,"y":0.30343798},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-257.09506,"y":64.725525,"z":-87.51216},"screenPosition":{"x":0.6003994,"y":0.29219356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.1611,"y":63.54139,"z":-86.75351},"screenPosition":{"x":0.6245088,"y":0.32953414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.79222,"y":65.52374,"z":-87.44607},"screenPosition":{"x":0.648263,"y":0.30872825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.83286,"y":67.96,"z":-88.36368},"screenPosition":{"x":0.6701242,"y":0.2782314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.18044,"y":71.049545,"z":-89.67117},"screenPosition":{"x":0.6819832,"y":0.22889662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.4874,"y":71.70284,"z":-90.06106},"screenPosition":{"x":0.6719118,"y":0.21020517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.31824,"y":75.964355,"z":-91.896835},"screenPosition":{"x":0.68477446,"y":0.13961473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.67882,"y":74.957825,"z":-91.0547},"screenPosition":{"x":0.7268159,"y":0.18653329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.19473,"y":71.71697,"z":-89.67219},"screenPosition":{"x":0.71558785,"y":0.2390984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.22786,"y":69.998764,"z":-89.057816},"screenPosition":{"x":0.6965541,"y":0.25817707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.31647,"y":68.50624,"z":-88.44977},"screenPosition":{"x":0.6877983,"y":0.280962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.77515,"y":66.47453,"z":-87.561195},"screenPosition":{"x":0.6835969,"y":0.3148361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.43306,"y":64.02738,"z":-86.519424},"screenPosition":{"x":0.67488086,"y":0.35436788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.43224,"y":61.958492,"z":-85.6652},"screenPosition":{"x":0.6645873,"y":0.3858239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.95366,"y":59.36004,"z":-84.54841},"screenPosition":{"x":0.6562601,"y":0.42886323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.47437,"y":58.01303,"z":-84.31601},"screenPosition":{"x":0.61391634,"y":0.425325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.46933,"y":60.065243,"z":-85.34671},"screenPosition":{"x":0.6040734,"y":0.38027644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.076,"y":62.164257,"z":-86.36102},"screenPosition":{"x":0.59823054,"y":0.3374188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.32568,"y":64.0267,"z":-87.24485},"screenPosition":{"x":0.5948298,"y":0.30058995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.0561,"y":66.42705,"z":-88.303},"screenPosition":{"x":0.5993745,"y":0.25912327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.04846,"y":67.8452,"z":-88.979744},"screenPosition":{"x":0.5961924,"y":0.23136996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.19305,"y":69.272964,"z":-89.67444},"screenPosition":{"x":0.59187216,"y":0.20129739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-259.58466,"y":74.30794,"z":-92.78298},"screenPosition":{"x":0.6241483,"y":0.12254672},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-266.8671,"y":68.87918,"z":-91.2113},"screenPosition":{"x":0.5232571,"y":0.1554424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.2017,"y":67.671425,"z":-89.38183},"screenPosition":{"x":0.54321486,"y":0.19847715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.73355,"y":69.23578,"z":-89.708786},"screenPosition":{"x":0.58619976,"y":0.1981993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.89206,"y":71.95668,"z":-90.8467},"screenPosition":{"x":0.598146,"y":0.15573679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.4133,"y":72.1993,"z":-92.172516},"screenPosition":{"x":0.58496016,"y":0.13532405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.62537,"y":70.5503,"z":-91.695114},"screenPosition":{"x":0.5543142,"y":0.14531618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.56378,"y":69.17612,"z":-90.22023},"screenPosition":{"x":0.52625716,"y":0.16348325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.509,"y":67.699,"z":-89.32951},"screenPosition":{"x":0.550404,"y":0.20262586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.0383,"y":68.62929,"z":-89.30252},"screenPosition":{"x":0.6000632,"y":0.21995275},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-260.43878,"y":73.67123,"z":-92.598656},"screenPosition":{"x":0.61231536,"y":0.12640487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.80087,"y":72.81515,"z":-91.10079},"screenPosition":{"x":0.61348766,"y":0.15012327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.88156,"y":71.672714,"z":-89.90097},"screenPosition":{"x":0.68763846,"y":0.2223759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.88039,"y":70.229546,"z":-89.48894},"screenPosition":{"x":0.6606591,"y":0.22977675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.94489,"y":68.22797,"z":-88.76045},"screenPosition":{"x":0.6398961,"y":0.25294933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.94406,"y":66.15907,"z":-87.90623},"screenPosition":{"x":0.62960255,"y":0.28440535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.9458,"y":64.72424,"z":-87.40596},"screenPosition":{"x":0.61221594,"y":0.2995845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.92636,"y":62.788704,"z":-86.69702},"screenPosition":{"x":0.59271526,"y":0.32213086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.93573,"y":59.935722,"z":-85.52002},"screenPosition":{"x":0.5784141,"y":0.36543685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.07104,"y":58.643856,"z":-85.183},"screenPosition":{"x":0.5503247,"y":0.37052298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.19617,"y":58.136078,"z":-85.16876},"screenPosition":{"x":0.5262429,"y":0.36375916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.31067,"y":55.717777,"z":-84.180885},"screenPosition":{"x":0.5129843,"y":0.40003014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.97665,"y":54.54709,"z":-83.7588},"screenPosition":{"x":0.5004175,"y":0.41325542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.66852,"y":52.450626,"z":-82.95688},"screenPosition":{"x":0.48297957,"y":0.4403904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.30783,"y":50.13682,"z":-82.060394},"screenPosition":{"x":0.46499452,"y":0.47096938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.55038,"y":47.21908,"z":-80.97005},"screenPosition":{"x":0.43788034,"y":0.5069406},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-259.37296,"y":52.456413,"z":-82.65624},"screenPosition":{"x":0.5164528,"y":0.46252432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.3467,"y":54.00791,"z":-83.47827},"screenPosition":{"x":0.50415,"y":0.42554626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.96786,"y":54.522068,"z":-84.0235},"screenPosition":{"x":0.46999088,"y":0.39318016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.44995,"y":54.250862,"z":-84.139755},"screenPosition":{"x":0.4434704,"y":0.38020095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.45428,"y":53.450092,"z":-83.99345},"screenPosition":{"x":0.419155,"y":0.37871438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.73416,"y":53.58599,"z":-84.351135},"screenPosition":{"x":0.38656664,"y":0.35429594},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-265.04245,"y":57.309013,"z":-85.18096},"screenPosition":{"x":0.48311535,"y":0.3501194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.7301,"y":59.333652,"z":-86.26397},"screenPosition":{"x":0.46593738,"y":0.3016278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.95276,"y":60.678703,"z":-87.11559},"screenPosition":{"x":0.43995994,"y":0.25874418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.0936,"y":60.029236,"z":-87.044304},"screenPosition":{"x":0.41500515,"y":0.2538991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.52777,"y":58.1142,"z":-86.47749},"screenPosition":{"x":0.38078153,"y":0.26642156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.26672,"y":55.592674,"z":-85.50441},"screenPosition":{"x":0.36073148,"y":0.2997169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.0356,"y":53.596886,"z":-84.475296},"screenPosition":{"x":0.3734215,"y":0.34526098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.59976,"y":51.374138,"z":-83.33366},"screenPosition":{"x":0.38705802,"y":0.3956505},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-265.02594,"y":55.38181,"z":-84.38379},"screenPosition":{"x":0.47367394,"y":0.3799272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.9064,"y":59.85232,"z":-86.40237},"screenPosition":{"x":0.47687036,"y":0.29889694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.4805,"y":60.791542,"z":-87.11876},"screenPosition":{"x":0.44532236,"y":0.26049227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.80197,"y":59.859978,"z":-87.03956},"screenPosition":{"x":0.40701833,"y":0.25191876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.22516,"y":56.660137,"z":-85.94129},"screenPosition":{"x":0.3664683,"y":0.28377298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.96362,"y":51.444,"z":-83.67179},"screenPosition":{"x":0.35328954,"y":0.37166387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.2399,"y":51.129227,"z":-83.2914},"screenPosition":{"x":0.37939516,"y":0.3951546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.9812,"y":51.49404,"z":-83.14238},"screenPosition":{"x":0.41421294,"y":0.4116735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.20575,"y":53.03082,"z":-83.52165},"screenPosition":{"x":0.45001408,"y":0.40722677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.43546,"y":55.83572,"z":-84.60884},"screenPosition":{"x":0.47178638,"y":0.37013754},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-277.76904,"y":59.325905,"z":-87.18383},"screenPosition":{"x":0.3641324,"y":0.23292594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.95694,"y":58.251377,"z":-86.941376},"screenPosition":{"x":0.33654368,"y":0.23415148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.29105,"y":53.84945,"z":-85.15474},"screenPosition":{"x":0.31123608,"y":0.29879072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.11838,"y":52.087677,"z":-84.04372},"screenPosition":{"x":0.34478298,"y":0.35400924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.09662,"y":54.464966,"z":-84.747345},"screenPosition":{"x":0.3872675,"y":0.3384641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.71756,"y":57.2314,"z":-85.76268},"screenPosition":{"x":0.4150293,"y":0.30580822},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-269.63562,"y":60.809498,"z":-87.048485},"screenPosition":{"x":0.45396134,"y":0.26560396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.44446,"y":62.501408,"z":-87.821365},"screenPosition":{"x":0.4541829,"y":0.2343721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.76828,"y":64.456184,"z":-88.56623},"screenPosition":{"x":0.47077447,"y":0.20926464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.75635,"y":66.6751,"z":-89.38928},"screenPosition":{"x":0.49208653,"y":0.18242992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.76303,"y":68.76067,"z":-90.06703},"screenPosition":{"x":0.5202261,"y":0.15643065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.32333,"y":70.03331,"z":-90.368126},"screenPosition":{"x":0.5537685,"y":0.161591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.6488,"y":67.23292,"z":-88.87411},"screenPosition":{"x":0.57709175,"y":0.22920336},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-274.725,"y":45.293747,"z":-81.110695},"screenPosition":{"x":0.32508466,"y":0.46678343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.14435,"y":45.58929,"z":-81.45516},"screenPosition":{"x":0.3020192,"y":0.44580293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.0961,"y":44.571182,"z":-81.214294},"screenPosition":{"x":0.27715468,"y":0.4479785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.21573,"y":43.421,"z":-80.934326},"screenPosition":{"x":0.24992992,"y":0.45101768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.71094,"y":42.374046,"z":-80.63957},"screenPosition":{"x":0.2295523,"y":0.45674327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.77798,"y":41.006527,"z":-80.265045},"screenPosition":{"x":0.20177841,"y":0.4634446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.77682,"y":39.56336,"z":-79.85301},"screenPosition":{"x":0.17432004,"y":0.47176105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.5238,"y":38.318295,"z":-79.49962},"screenPosition":{"x":0.14862408,"y":0.4884643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.89838,"y":37.67661,"z":-80.44685},"screenPosition":{"x":0.13430032,"y":0.47281158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.55356,"y":38.43234,"z":-81.09495},"screenPosition":{"x":0.10099228,"y":0.43641323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.41177,"y":39.744102,"z":-80.813545},"screenPosition":{"x":0.077957615,"y":0.4112414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.91327,"y":41.408436,"z":-81.63873},"screenPosition":{"x":0.07056043,"y":0.3678177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.76743,"y":44.110115,"z":-82.74072},"screenPosition":{"x":0.08549259,"y":0.327742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.51938,"y":46.385452,"z":-83.56535},"screenPosition":{"x":0.10965508,"y":0.29029772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.99545,"y":47.910633,"z":-85.140686},"screenPosition":{"x":0.13356511,"y":0.28250182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.69876,"y":49.622723,"z":-85.63635},"screenPosition":{"x":0.1653836,"y":0.27212736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.0036,"y":51.252865,"z":-84.97578},"screenPosition":{"x":0.1993449,"y":0.26105425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.87845,"y":51.760643,"z":-84.99001},"screenPosition":{"x":0.22388269,"y":0.27883548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.04788,"y":52.446022,"z":-84.92076},"screenPosition":{"x":0.2662551,"y":0.29471612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.5659,"y":47.144615,"z":-82.59579},"screenPosition":{"x":0.2549498,"y":0.38542554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.37015,"y":44.6904,"z":-81.74844},"screenPosition":{"x":0.22425854,"y":0.41022348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.89377,"y":43.35173,"z":-81.42781},"screenPosition":{"x":0.19199778,"y":0.41337475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.31778,"y":42.220783,"z":-81.18378},"screenPosition":{"x":0.16178176,"y":0.41404724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.1568,"y":42.186146,"z":-81.43052},"screenPosition":{"x":0.13281567,"y":0.3952258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.58716,"y":43.76649,"z":-82.306435},"screenPosition":{"x":0.116036184,"y":0.35463926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.60623,"y":46.32776,"z":-83.45757},"screenPosition":{"x":0.11845419,"y":0.30875894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.17462,"y":48.876854,"z":-84.37834},"screenPosition":{"x":0.14763209,"y":0.27791527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.88712,"y":50.159107,"z":-84.697395},"screenPosition":{"x":0.1777899,"y":0.27911305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.6153,"y":51.299667,"z":-84.95939},"screenPosition":{"x":0.20434095,"y":0.27453324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.79196,"y":51.192616,"z":-84.655594},"screenPosition":{"x":0.23207374,"y":0.29487497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.94193,"y":49.94245,"z":-83.8774},"screenPosition":{"x":0.25475386,"y":0.33330244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.92715,"y":46.580418,"z":-82.57996},"screenPosition":{"x":0.22802046,"y":0.37769622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.5606,"y":44.249935,"z":-81.859955},"screenPosition":{"x":0.18970735,"y":0.39517623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.5628,"y":45.509716,"z":-82.656105},"screenPosition":{"x":0.1655316,"y":0.3555654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.15378,"y":47.75042,"z":-83.72748},"screenPosition":{"x":0.16055335,"y":0.31066078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.59744,"y":50.443707,"z":-85.87403},"screenPosition":{"x":0.18133806,"y":0.27115574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.12234,"y":52.288795,"z":-86.40821},"screenPosition":{"x":0.2149315,"y":0.25597224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.59647,"y":53.685295,"z":-85.57478},"screenPosition":{"x":0.2566107,"y":0.26512966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.78214,"y":51.350986,"z":-84.53618},"screenPosition":{"x":0.2534331,"y":0.30646533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.82837,"y":48.857033,"z":-83.51079},"screenPosition":{"x":0.24067232,"y":0.34418464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.09503,"y":46.448345,"z":-82.54088},"screenPosition":{"x":0.22573738,"y":0.3786464},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-284.32086,"y":52.748627,"z":-85.07079},"screenPosition":{"x":0.26509959,"y":0.28844872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.1385,"y":54.465557,"z":-85.57897},"screenPosition":{"x":0.2955669,"y":0.27683455},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-280.97467,"y":58.36256,"z":-88.166626},"screenPosition":{"x":0.32736993,"y":0.21664044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.3682,"y":59.56012,"z":-88.513336},"screenPosition":{"x":0.35006607,"y":0.21191148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.98688,"y":61.335297,"z":-89.02727},"screenPosition":{"x":0.38305706,"y":0.20115474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.1895,"y":62.67516,"z":-89.41517},"screenPosition":{"x":0.40858167,"y":0.1966198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.12112,"y":63.241245,"z":-88.372925},"screenPosition":{"x":0.43072003,"y":0.20488401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.44995,"y":63.143806,"z":-88.08709},"screenPosition":{"x":0.4573386,"y":0.22524358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.37738,"y":63.868927,"z":-88.19589},"screenPosition":{"x":0.48195678,"y":0.2276708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.30225,"y":63.95998,"z":-87.95073},"screenPosition":{"x":0.5135986,"y":0.24724379},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-285.13544,"y":55.26088,"z":-87.26866},"screenPosition":{"x":0.27016643,"y":0.23796283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.3462,"y":53.61285,"z":-86.791534},"screenPosition":{"x":0.23953848,"y":0.24794911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.85983,"y":51.89399,"z":-85.1353},"screenPosition":{"x":0.21531726,"y":0.27120942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.7039,"y":49.807144,"z":-84.35134},"screenPosition":{"x":0.19564159,"y":0.29609135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.59537,"y":46.669514,"z":-82.95403},"screenPosition":{"x":0.19126074,"y":0.3513429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.70554,"y":45.05198,"z":-82.11246},"screenPosition":{"x":0.20237322,"y":0.38881117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.39893,"y":43.772964,"z":-81.28038},"screenPosition":{"x":0.22954023,"y":0.4307887},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-277.61108,"y":44.83405,"z":-81.18627},"screenPosition":{"x":0.29360285,"y":0.4541908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.91666,"y":46.29645,"z":-81.63423},"screenPosition":{"x":0.31799182,"y":0.44341972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.4113,"y":48.127495,"z":-82.25177},"screenPosition":{"x":0.34241214,"y":0.42590737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.93774,"y":52.369778,"z":-84.05163},"screenPosition":{"x":0.3582926,"y":0.35812056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.4889,"y":54.243114,"z":-85.059616},"screenPosition":{"x":0.3416159,"y":0.31190312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.03455,"y":55.47405,"z":-85.80188},"screenPosition":{"x":0.321927,"y":0.2758423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.6735,"y":53.785965,"z":-85.34759},"screenPosition":{"x":0.28679246,"y":0.2835918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.2942,"y":51.60551,"z":-84.5964},"screenPosition":{"x":0.2594623,"y":0.30562064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.30353,"y":48.752533,"z":-83.419395},"screenPosition":{"x":0.24516115,"y":0.34892663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.5078,"y":46.284874,"z":-82.2355},"screenPosition":{"x":0.2510859,"y":0.39867672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.84686,"y":45.40335,"z":-81.626884},"screenPosition":{"x":0.27368414,"y":0.43021178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.04214,"y":45.162952,"z":-81.1778},"screenPosition":{"x":0.31107488,"y":0.45979545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.19598,"y":49.31035,"z":-82.90422},"screenPosition":{"x":0.33016634,"y":0.39570007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.67456,"y":51.908802,"z":-84.021},"screenPosition":{"x":0.33834615,"y":0.3531576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.51825,"y":50.447678,"z":-83.679245},"screenPosition":{"x":0.30213472,"y":0.35576952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.34113,"y":47.860115,"z":-82.68662},"screenPosition":{"x":0.28090453,"y":0.38949665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.27206,"y":45.715572,"z":-81.79488},"screenPosition":{"x":0.27113724,"y":0.42281154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.7621,"y":43.400494,"z":-80.792206},"screenPosition":{"x":0.2645707,"y":0.46123597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.68027,"y":41.40598,"z":-79.869286},"screenPosition":{"x":0.2656112,"y":0.49892846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.68237,"y":39.34543,"z":-78.92683},"screenPosition":{"x":0.26547155,"y":0.53705275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.55347,"y":37.775974,"z":-78.17507},"screenPosition":{"x":0.26910588,"y":0.5686043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.61108,"y":35.9411,"z":-77.23894},"screenPosition":{"x":0.27966926,"y":0.6097347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.6614,"y":34.89866,"z":-76.537346},"screenPosition":{"x":0.30068204,"y":0.6546301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.8046,"y":37.135532,"z":-77.290115},"screenPosition":{"x":0.33436444,"y":0.6243337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.9423,"y":38.730007,"z":-77.77717},"screenPosition":{"x":0.3612704,"y":0.612813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.57553,"y":38.651802,"z":-77.52726},"screenPosition":{"x":0.3848064,"y":0.63010526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.61276,"y":38.38511,"z":-77.23669},"screenPosition":{"x":0.40338495,"y":0.64753574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.90472,"y":37.928646,"z":-76.79924},"screenPosition":{"x":0.4285833,"y":0.67292553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.53796,"y":37.85044,"z":-76.54933},"screenPosition":{"x":0.45219335,"y":0.6902425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.2089,"y":40.200157,"z":-77.30527},"screenPosition":{"x":0.48751345,"y":0.6704016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.68454,"y":42.790268,"z":-78.51029},"screenPosition":{"x":0.48544458,"y":0.6209712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.31708,"y":43.96351,"z":-79.144775},"screenPosition":{"x":0.47472948,"y":0.5920105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.59814,"y":45.542576,"z":-79.9145},"screenPosition":{"x":0.4695992,"y":0.55928254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.3146,"y":46.64978,"z":-80.529434},"screenPosition":{"x":0.4577043,"y":0.53074664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.76358,"y":48.09678,"z":-81.26006},"screenPosition":{"x":0.4502141,"y":0.49887535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.18115,"y":49.827152,"z":-82.1048},"screenPosition":{"x":0.44445312,"y":0.46291012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.44656,"y":51.54791,"z":-82.931564},"screenPosition":{"x":0.44018778,"y":0.42812824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.71194,"y":53.268665,"z":-83.75834},"screenPosition":{"x":0.4359224,"y":0.39334637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.98285,"y":55.631824,"z":-84.85084},"screenPosition":{"x":0.43480006,"y":0.34876147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.41507,"y":57.403896,"z":-85.254395},"screenPosition":{"x":0.4798021,"y":0.3462723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.46716,"y":54.926624,"z":-84.052536},"screenPosition":{"x":0.48722896,"y":0.397071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.1849,"y":51.904385,"z":-82.87079},"screenPosition":{"x":0.46490097,"y":0.43832162},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-264.45874,"y":54.275883,"z":-83.875046},"screenPosition":{"x":0.4739321,"y":0.40020576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.7754,"y":51.450474,"z":-82.64574},"screenPosition":{"x":0.46679342,"y":0.44783834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.3702,"y":50.195793,"z":-82.274376},"screenPosition":{"x":0.44438264,"y":0.45612192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.79166,"y":48.430786,"z":-81.676384},"screenPosition":{"x":0.42116612,"y":0.47316146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.39233,"y":47.192787,"z":-81.12855},"screenPosition":{"x":0.41905156,"y":0.49470237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.84256,"y":44.51034,"z":-80.06249},"screenPosition":{"x":0.40112814,"y":0.5324114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.4793,"y":41.562477,"z":-78.81205},"screenPosition":{"x":0.39013374,"y":0.5796992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.0121,"y":39.623108,"z":-77.784515},"screenPosition":{"x":0.40549952,"y":0.6259948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.8042,"y":41.64009,"z":-78.23033},"screenPosition":{"x":0.45822,"y":0.62401104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.31213,"y":51.02983,"z":-83.624794},"screenPosition":{"x":0.33755052,"y":0.3687698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.6275,"y":52.333866,"z":-84.19217},"screenPosition":{"x":0.3409983,"y":0.34716675},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-278.05225,"y":58.84442,"z":-87.011086},"screenPosition":{"x":0.35881433,"y":0.23811682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.14145,"y":58.238224,"z":-88.13063},"screenPosition":{"x":0.32585934,"y":0.22194906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.8419,"y":56.97063,"z":-87.76365},"screenPosition":{"x":0.30194148,"y":0.22760254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.8834,"y":55.281044,"z":-86.16804},"screenPosition":{"x":0.27133062,"y":0.23758325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.01358,"y":52.721054,"z":-85.1231},"screenPosition":{"x":0.2582944,"y":0.28476438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.55103,"y":49.355194,"z":-83.507065},"screenPosition":{"x":0.26593617,"y":0.35170862},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-274.8593,"y":53.078213,"z":-84.3369},"screenPosition":{"x":0.36257687,"y":0.34780034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.7563,"y":50.582985,"z":-83.20531},"screenPosition":{"x":0.36124697,"y":0.3929806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.07553,"y":48.391636,"z":-82.329956},"screenPosition":{"x":0.34709755,"y":0.4241169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.9382,"y":46.171444,"z":-81.40071},"screenPosition":{"x":0.337435,"y":0.45880324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.29175,"y":43.70506,"z":-80.32301},"screenPosition":{"x":0.33171025,"y":0.5007017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.77454,"y":42.18241,"z":-79.55488},"screenPosition":{"x":0.33951595,"y":0.53418815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.85333,"y":40.84825,"z":-78.82741},"screenPosition":{"x":0.3523577,"y":0.5675625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.61206,"y":39.63655,"z":-78.12107},"screenPosition":{"x":0.369084,"y":0.6012704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.1619,"y":36.746384,"z":-76.97842},"screenPosition":{"x":0.34908712,"y":0.6414444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.81653,"y":34.916615,"z":-76.46707},"screenPosition":{"x":0.30784193,"y":0.6624543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.45163,"y":36.723915,"z":-77.45551},"screenPosition":{"x":0.29532638,"y":0.6057364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.27322,"y":38.265797,"z":-78.25958},"screenPosition":{"x":0.2845294,"y":0.5698832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.63943,"y":41.222,"z":-79.42178},"screenPosition":{"x":0.30567768,"y":0.5292637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.5906,"y":43.08189,"z":-80.093216},"screenPosition":{"x":0.32560858,"y":0.5081705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.52905,"y":45.091812,"z":-80.73346},"screenPosition":{"x":0.35649288,"y":0.4916337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.20465,"y":46.015034,"z":-80.9009},"screenPosition":{"x":0.38466415,"y":0.49344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.01678,"y":47.08956,"z":-81.14335},"screenPosition":{"x":0.41222852,"y":0.4920865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.973,"y":46.897243,"z":-80.78408},"screenPosition":{"x":0.442117,"y":0.5156829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.2069,"y":45.581043,"z":-79.98635},"screenPosition":{"x":0.4636174,"y":0.55456555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.63046,"y":41.75548,"z":-78.44589},"screenPosition":{"x":0.44027224,"y":0.60981023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.2851,"y":39.925713,"z":-77.93455},"screenPosition":{"x":0.40424576,"y":0.61953795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.7468,"y":41.222683,"z":-78.69636},"screenPosition":{"x":0.38574338,"y":0.5830534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.64764,"y":44.12502,"z":-80.06938},"screenPosition":{"x":0.38090223,"y":0.52596724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.36353,"y":48.11022,"z":-81.59662},"screenPosition":{"x":0.41378146,"y":0.4741761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.79025,"y":49.239895,"z":-81.73445},"screenPosition":{"x":0.45563543,"y":0.4813163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.31204,"y":46.01572,"z":-80.175476},"screenPosition":{"x":0.46471557,"y":0.5472756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.9627,"y":44.361,"z":-79.36825},"screenPosition":{"x":0.47015938,"y":0.58158576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.39725,"y":41.82024,"z":-78.35924},"screenPosition":{"x":0.4531039,"y":0.617235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.12308,"y":40.074463,"z":-77.79717},"screenPosition":{"x":0.4269164,"y":0.6320115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.5471,"y":38.943516,"z":-77.55314},"screenPosition":{"x":0.3967191,"y":0.63268596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.2551,"y":39.39998,"z":-77.990585},"screenPosition":{"x":0.37149742,"y":0.60728544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.51874,"y":42.555565,"z":-79.31763},"screenPosition":{"x":0.38453656,"y":0.55751884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.74332,"y":44.092342,"z":-79.69689},"screenPosition":{"x":0.4203377,"y":0.55307215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.94583,"y":43.059517,"z":-79.01327},"screenPosition":{"x":0.44357347,"y":0.5878554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.67493,"y":40.696358,"z":-77.92077},"screenPosition":{"x":0.44469234,"y":0.6324246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.70547,"y":38.344093,"z":-76.95244},"screenPosition":{"x":0.4326665,"y":0.6679724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.66708,"y":37.167618,"z":-76.83098},"screenPosition":{"x":0.38667464,"y":0.6588518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.44827,"y":41.22013,"z":-78.48396},"screenPosition":{"x":0.4090278,"y":0.5987448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.63596,"y":42.397884,"z":-78.71162},"screenPosition":{"x":0.4434183,"y":0.60001385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.65024,"y":43.065304,"z":-78.71263},"screenPosition":{"x":0.4770199,"y":0.610209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.24835,"y":41.193245,"z":-77.810844},"screenPosition":{"x":0.48191625,"y":0.6482212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.99432,"y":40.13157,"z":-77.073326},"screenPosition":{"x":0.5096324,"y":0.6865366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.7204,"y":43.332684,"z":-78.27779},"screenPosition":{"x":0.53849244,"y":0.6465565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.43217,"y":45.866375,"z":-79.481224},"screenPosition":{"x":0.5337478,"y":0.5963746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.2665,"y":47.258232,"z":-80.316475},"screenPosition":{"x":0.5119323,"y":0.55590016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.03177,"y":46.505543,"z":-80.25998},"screenPosition":{"x":0.48013875,"y":0.54849684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.67282,"y":42.75691,"z":-78.863235},"screenPosition":{"x":0.4448311,"y":0.59430367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.4031,"y":41.83692,"z":-78.18277},"screenPosition":{"x":0.4734097,"y":0.6305666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.9372,"y":44.661053,"z":-79.305885},"screenPosition":{"x":0.49219775,"y":0.59081066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.88203,"y":34.916706,"z":-74.91003},"screenPosition":{"x":0.48478925,"y":0.7664853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.6549,"y":32.74587,"z":-74.176796},"screenPosition":{"x":0.45601386,"y":0.7874939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.89536,"y":31.888678,"z":-74.02891},"screenPosition":{"x":0.42533985,"y":0.7908536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.35156,"y":32.543247,"z":-74.52499},"screenPosition":{"x":0.40282428,"y":0.76624906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.5191,"y":33.036896,"z":-74.92809},"screenPosition":{"x":0.38314915,"y":0.7447485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.41443,"y":35.296833,"z":-76.03539},"screenPosition":{"x":0.3799052,"y":0.6890049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.13208,"y":37.847206,"z":-77.06236},"screenPosition":{"x":0.3954705,"y":0.65217143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.29388,"y":39.950733,"z":-77.669846},"screenPosition":{"x":0.4346992,"y":0.639539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.71686,"y":39.003174,"z":-77.04169},"screenPosition":{"x":0.4561173,"y":0.67150587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.21826,"y":37.347176,"z":-76.128265},"screenPosition":{"x":0.47321227,"y":0.71370727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.0725,"y":34.47624,"z":-75.02153},"screenPosition":{"x":0.4502529,"y":0.7515286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.1866,"y":32.68366,"z":-74.475845},"screenPosition":{"x":0.41988513,"y":0.76437086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.2359,"y":33.51838,"z":-75.10084},"screenPosition":{"x":0.39311552,"y":0.7309009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.01044,"y":35.485325,"z":-76.076065},"screenPosition":{"x":0.3849124,"y":0.68890685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.18463,"y":38.064545,"z":-77.15692},"screenPosition":{"x":0.39601648,"y":0.648511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.8997,"y":39.980858,"z":-77.82993},"screenPosition":{"x":0.4185785,"y":0.62814385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.5808,"y":41.546482,"z":-78.26309},"screenPosition":{"x":0.44987953,"y":0.620145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.39212,"y":40.55212,"z":-77.65132},"screenPosition":{"x":0.46712375,"y":0.6501726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.31027,"y":38.557602,"z":-76.7284},"screenPosition":{"x":0.46816424,"y":0.6878651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.31787,"y":37.139454,"z":-76.05167},"screenPosition":{"x":0.4711672,"y":0.7161821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.58023,"y":35.531536,"z":-75.22806},"screenPosition":{"x":0.48078442,"y":0.7524713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.49115,"y":34.32945,"z":-74.53968},"screenPosition":{"x":0.49598637,"y":0.7849821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.85138,"y":33.94864,"z":-74.13974},"screenPosition":{"x":0.52086294,"y":0.80876106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.18106,"y":35.920094,"z":-74.70814},"screenPosition":{"x":0.5577623,"y":0.79699016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.98006,"y":37.77037,"z":-75.3616},"screenPosition":{"x":0.5791563,"y":0.7770479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.07033,"y":40.415627,"z":-76.462006},"screenPosition":{"x":0.5914127,"y":0.73622066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.33572,"y":42.136383,"z":-77.28878},"screenPosition":{"x":0.5870483,"y":0.7013948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.41205,"y":43.4885,"z":-77.94598},"screenPosition":{"x":0.5829639,"y":0.6735493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.63039,"y":45.63432,"z":-78.94391},"screenPosition":{"x":0.58129245,"y":0.63262653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.55278,"y":48.411648,"z":-80.083405},"screenPosition":{"x":0.59590906,"y":0.5909357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.74338,"y":49.597736,"z":-80.222824},"screenPosition":{"x":0.64045036,"y":0.59886634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.17654,"y":47.86609,"z":-79.27189},"screenPosition":{"x":0.6578609,"y":0.6426832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.3224,"y":45.164413,"z":-78.1699},"screenPosition":{"x":0.64273727,"y":0.6827207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.04564,"y":42.784573,"z":-77.253876},"screenPosition":{"x":0.6237433,"y":0.71400726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.84229,"y":41.74851,"z":-77.083275},"screenPosition":{"x":0.5901532,"y":0.71066374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.00722,"y":41.608097,"z":-77.132416},"screenPosition":{"x":0.57770634,"y":0.70489323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.25317,"y":41.39331,"z":-77.25025},"screenPosition":{"x":0.55385816,"y":0.69285214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.64581,"y":40.54574,"z":-77.12032},"screenPosition":{"x":0.52537143,"y":0.68943065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.68912,"y":38.043446,"z":-76.183174},"screenPosition":{"x":0.50233006,"y":0.7203593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.07954,"y":35.93609,"z":-75.257095},"screenPosition":{"x":0.49801907,"y":0.7565487},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-248.19382,"y":35.770065,"z":-74.73932},"screenPosition":{"x":0.5467438,"y":0.7923688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.97456,"y":37.127968,"z":-75.09588},"screenPosition":{"x":0.57597977,"y":0.78680855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.71759,"y":36.057953,"z":-74.446594},"screenPosition":{"x":0.59357554,"y":0.818498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.08682,"y":33.449883,"z":-73.311844},"screenPosition":{"x":0.58697087,"y":0.8624164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.67613,"y":31.552805,"z":-72.67476},"screenPosition":{"x":0.5614208,"y":0.88045084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.35747,"y":30.866152,"z":-72.63782},"screenPosition":{"x":0.5307092,"y":0.87227815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.47325,"y":33.211353,"z":-73.80058},"screenPosition":{"x":0.52097094,"y":0.82237035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.52664,"y":35.497585,"z":-74.749374},"screenPosition":{"x":0.5318694,"y":0.7874278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.06107,"y":37.695995,"z":-75.43029},"screenPosition":{"x":0.5678223,"y":0.7708114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.51074,"y":37.89155,"z":-75.276535},"screenPosition":{"x":0.5946617,"y":0.7852192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.27496,"y":37.322247,"z":-74.83592},"screenPosition":{"x":0.6145023,"y":0.8091103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.86581,"y":36.24262,"z":-74.16867},"screenPosition":{"x":0.6335601,"y":0.84194076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.72849,"y":34.022423,"z":-73.239426},"screenPosition":{"x":0.6238976,"y":0.8766271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.06342,"y":31.689388,"z":-72.30702},"screenPosition":{"x":0.60888356,"y":0.90981036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.21735,"y":30.264174,"z":-71.824715},"screenPosition":{"x":0.5900835,"y":0.9236117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.3768,"y":29.481361,"z":-71.60814},"screenPosition":{"x":0.57437736,"y":0.9274843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.86473,"y":29.226833,"z":-71.54792},"screenPosition":{"x":0.5682102,"y":0.928154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.85162,"y":30.002583,"z":-71.95893},"screenPosition":{"x":0.5620639,"y":0.9096357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.28232,"y":30.957207,"z":-72.392654},"screenPosition":{"x":0.56232876,"y":0.89188504},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-240.96838,"y":27.56007,"z":-71.771194},"screenPosition":{"x":0.58021194,"y":0.9599996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.87389,"y":28.626133,"z":-70.84102},"screenPosition":{"x":0.6187386,"y":0.97199804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.3554,"y":31.232925,"z":-71.86957},"screenPosition":{"x":0.64036244,"y":0.93833786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.00911,"y":32.90688,"z":-72.71272},"screenPosition":{"x":0.62562424,"y":0.89846474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.54492,"y":34.29618,"z":-73.33557},"screenPosition":{"x":0.6271018,"y":0.87368757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.36652,"y":35.838062,"z":-74.13963},"screenPosition":{"x":0.6162639,"y":0.8377857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.87354,"y":38.144802,"z":-75.23055},"screenPosition":{"x":0.6125274,"y":0.7925269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.3103,"y":36.863827,"z":-75.0177},"screenPosition":{"x":0.5712928,"y":0.7885781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.50322,"y":33.737087,"z":-73.744545},"screenPosition":{"x":0.5537668,"y":0.8347947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.97151,"y":33.799294,"z":-73.445496},"screenPosition":{"x":0.58989555,"y":0.8579177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.70227,"y":35.57392,"z":-74.061455},"screenPosition":{"x":0.611605,"y":0.8395906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.19688,"y":37.404964,"z":-74.67899},"screenPosition":{"x":0.6359902,"y":0.822015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.43677,"y":39.425777,"z":-75.443405},"screenPosition":{"x":0.6537619,"y":0.7964757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.0624,"y":40.76572,"z":-75.87024},"screenPosition":{"x":0.67437315,"y":0.78547287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.69353,"y":42.74807,"z":-76.56279},"screenPosition":{"x":0.7049059,"y":0.769936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.54767,"y":45.449745,"z":-77.66478},"screenPosition":{"x":0.7200522,"y":0.7304176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.88425,"y":47.254494,"z":-78.44083},"screenPosition":{"x":0.72335285,"y":0.6990466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.56465,"y":50.071564,"z":-79.75838},"screenPosition":{"x":0.7156172,"y":0.6405867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.74492,"y":50.415188,"z":-80.19266},"screenPosition":{"x":0.6850736,"y":0.6136894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.24736,"y":48.5758,"z":-79.66335},"screenPosition":{"x":0.65053445,"y":0.6245968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.64796,"y":45.684357,"z":-78.4145},"screenPosition":{"x":0.64221585,"y":0.67263615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.51183,"y":44.907333,"z":-77.897285},"screenPosition":{"x":0.66001165,"y":0.699006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.02974,"y":45.17854,"z":-77.78104},"screenPosition":{"x":0.6865356,"y":0.7117986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.49042,"y":46.658897,"z":-78.15872},"screenPosition":{"x":0.72683114,"y":0.7127306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.56409,"y":47.71309,"z":-79.59455},"screenPosition":{"x":0.7353397,"y":0.69053066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.37338,"y":50.58508,"z":-80.762726},"screenPosition":{"x":0.7521948,"y":0.64861673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.04184,"y":53.479126,"z":-80.933235},"screenPosition":{"x":0.765078,"y":0.6129398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.96011,"y":54.804943,"z":-81.74894},"screenPosition":{"x":0.73517585,"y":0.56593674},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-245.2249,"y":52.20453,"z":-81.25137},"screenPosition":{"x":0.65851444,"y":0.562849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.49672,"y":51.06397,"z":-80.98938},"screenPosition":{"x":0.6299689,"y":0.56462836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.12584,"y":49.534252,"z":-80.41567},"screenPosition":{"x":0.6159712,"y":0.5835949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.6181,"y":48.47896,"z":-80.20915},"screenPosition":{"x":0.5854397,"y":0.5826523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.27356,"y":48.718082,"z":-80.55203},"screenPosition":{"x":0.55969846,"y":0.56092024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.17908,"y":50.193928,"z":-81.336555},"screenPosition":{"x":0.5476965,"y":0.52553564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.0036,"y":51.74415,"z":-82.05238},"screenPosition":{"x":0.5470783,"y":0.496314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.81967,"y":52.643627,"z":-82.59072},"screenPosition":{"x":0.53313833,"y":0.47026387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.9741,"y":53.91303,"z":-83.40484},"screenPosition":{"x":0.507467,"y":0.42946967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.4312,"y":51.063873,"z":-82.546425},"screenPosition":{"x":0.4582172,"y":0.44922084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.41388,"y":47.06778,"z":-80.89503},"screenPosition":{"x":0.43850532,"y":0.51014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.6566,"y":45.776596,"z":-79.83259},"screenPosition":{"x":0.49045643,"y":0.56895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.5009,"y":48.636642,"z":-80.815155},"screenPosition":{"x":0.526561,"y":0.5401639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.90398,"y":51.95187,"z":-82.12898},"screenPosition":{"x":0.5490988,"y":0.49387962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.138,"y":53.956,"z":-83.06986},"screenPosition":{"x":0.54658693,"y":0.4549594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.15298,"y":55.065758,"z":-83.897194},"screenPosition":{"x":0.5113648,"y":0.41087037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.5634,"y":52.015945,"z":-82.76775},"screenPosition":{"x":0.48189345,"y":0.44757548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.75198,"y":49.689976,"z":-81.640915},"screenPosition":{"x":0.48867524,"y":0.49528277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.09103,"y":48.808453,"z":-81.0323},"screenPosition":{"x":0.51128924,"y":0.5267153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.03415,"y":49.39188,"z":-81.084045},"screenPosition":{"x":0.5349957,"y":0.531963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.34439,"y":49.427795,"z":-80.943504},"screenPosition":{"x":0.55237204,"y":0.5428338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.16669,"y":49.71823,"z":-80.863174},"screenPosition":{"x":0.5759047,"y":0.55325973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.3718,"y":49.319466,"z":-80.53351},"screenPosition":{"x":0.591996,"y":0.57162976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.0974,"y":49.82597,"z":-80.44154},"screenPosition":{"x":0.62785435,"y":0.58616924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.91759,"y":52.17696,"z":-81.30368},"screenPosition":{"x":0.6515267,"y":0.55847096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.90273,"y":54.38754,"z":-82.214966},"screenPosition":{"x":0.66268486,"y":0.52496797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.42838,"y":56.56093,"z":-83.16059},"screenPosition":{"x":0.668176,"y":0.48834676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.13757,"y":58.46056,"z":-84.01007},"screenPosition":{"x":0.6704423,"y":0.45463613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.86247,"y":60.218506,"z":-84.8025},"screenPosition":{"x":0.6715049,"y":0.42334086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.5284,"y":62.926655,"z":-84.87843},"screenPosition":{"x":0.80028015,"y":0.45904624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.72379,"y":60.368176,"z":-84.74199},"screenPosition":{"x":0.8065697,"y":0.50365937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.36905,"y":58.136852,"z":-82.88629},"screenPosition":{"x":0.7845177,"y":0.53946024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.64088,"y":56.996292,"z":-82.62429},"screenPosition":{"x":0.7493253,"y":0.53480047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.00214,"y":56.432095,"z":-82.608475},"screenPosition":{"x":0.72256774,"y":0.5272851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.51091,"y":57.304,"z":-83.19912},"screenPosition":{"x":0.7014652,"y":0.4969334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.43213,"y":58.63816,"z":-83.92658},"screenPosition":{"x":0.68844163,"y":0.46370864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.5424,"y":60.34096,"z":-84.82362},"screenPosition":{"x":0.6755791,"y":0.42342082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.86154,"y":63.722225,"z":-86.157},"screenPosition":{"x":0.69944197,"y":0.37653175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.01024,"y":66.6015,"z":-87.17549},"screenPosition":{"x":0.7324227,"y":0.34552875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.60402,"y":65.53021,"z":-86.42001},"screenPosition":{"x":0.76156014,"y":0.3850609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.80913,"y":65.13145,"z":-86.09034},"screenPosition":{"x":0.77798533,"y":0.40317178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.18678,"y":63.174118,"z":-85.13308},"screenPosition":{"x":0.7846928,"y":0.44398248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.64839,"y":61.150753,"z":-84.15627},"screenPosition":{"x":0.7902202,"y":0.485225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.25925,"y":59.128666,"z":-83.28567},"screenPosition":{"x":0.7900903,"y":0.52492046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.41025,"y":57.69511,"z":-82.891594},"screenPosition":{"x":0.7546621,"y":0.5259512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.13397,"y":58.009888,"z":-83.27199},"screenPosition":{"x":0.72908735,"y":0.50240177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.03398,"y":58.84333,"z":-83.79079},"screenPosition":{"x":0.71396726,"y":0.47678348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.23839,"y":59.696007,"z":-84.345505},"screenPosition":{"x":0.69556004,"y":0.4490533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.07858,"y":61.10454,"z":-85.00428},"screenPosition":{"x":0.6943482,"y":0.42166054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.23767,"y":60.94745,"z":-85.2299},"screenPosition":{"x":0.66152626,"y":0.40251935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.91432,"y":61.687286,"z":-85.78145},"screenPosition":{"x":0.63794506,"y":0.37321925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.93048,"y":64.24021,"z":-87.02082},"screenPosition":{"x":0.63001937,"y":0.32109308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.00331,"y":68.46199,"z":-88.67854},"screenPosition":{"x":0.660753,"y":0.26262376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.93834,"y":67.76895,"z":-88.11061},"screenPosition":{"x":0.6883872,"y":0.29404673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.92476,"y":65.85009,"z":-87.2252},"screenPosition":{"x":0.6891122,"y":0.33012405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.11043,"y":63.515778,"z":-86.18659},"screenPosition":{"x":0.6857477,"y":0.3711589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.58478,"y":61.34239,"z":-85.24097},"screenPosition":{"x":0.68025655,"y":0.4077801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.1672,"y":59.612015,"z":-84.39623},"screenPosition":{"x":0.6860175,"y":0.44374534},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-242.48495,"y":63.80239,"z":-85.787674},"screenPosition":{"x":0.74422896,"y":0.40513968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.28102,"y":65.644325,"z":-86.52937},"screenPosition":{"x":0.755469,"y":0.37852916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.7074,"y":67.39972,"z":-87.109406},"screenPosition":{"x":0.7801697,"y":0.36256874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.40384,"y":69.44938,"z":-87.927704},"screenPosition":{"x":0.79305357,"y":0.333863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.88196,"y":69.35322,"z":-87.74807},"screenPosition":{"x":0.8084108,"y":0.34531286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.77802,"y":70.36171,"z":-87.97098},"screenPosition":{"x":0.834771,"y":0.34432065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.20439,"y":72.1171,"z":-88.55101},"screenPosition":{"x":0.86306006,"y":0.3345336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.87572,"y":73.14042,"z":-89.937096},"screenPosition":{"x":0.8803349,"y":0.31781805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.2984,"y":76.83959,"z":-90.417404},"screenPosition":{"x":0.89602876,"y":0.2712734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.32649,"y":77.1736,"z":-90.833725},"screenPosition":{"x":0.8631276,"y":0.23703137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.15193,"y":75.2201,"z":-90.19506},"screenPosition":{"x":0.8348865,"y":0.25428724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.92773,"y":73.0576,"z":-89.3736},"screenPosition":{"x":0.81599694,"y":0.28213722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.20285,"y":71.29965,"z":-88.58117},"screenPosition":{"x":0.8146034,"y":0.31377128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.23047,"y":68.93905,"z":-87.70107},"screenPosition":{"x":0.7922756,"y":0.34278792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.20049,"y":68.413315,"z":-87.7571},"screenPosition":{"x":0.75993174,"y":0.33017007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.32562,"y":67.90554,"z":-87.74287},"screenPosition":{"x":0.73585,"y":0.32340622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.70164,"y":70.70338,"z":-89.02449},"screenPosition":{"x":0.7353679,"y":0.2721334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.9598,"y":73.21656,"z":-90.08581},"screenPosition":{"x":0.745722,"y":0.23153348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.90666,"y":75.87722,"z":-90.90354},"screenPosition":{"x":0.7899357,"y":0.21189441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.91545,"y":75.90224,"z":-90.63884},"screenPosition":{"x":0.82039744,"y":0.23189922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.81828,"y":73.42369,"z":-89.33078},"screenPosition":{"x":0.83946735,"y":0.29068428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.52585,"y":71.18554,"z":-88.47181},"screenPosition":{"x":0.8206256,"y":0.3203651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.7684,"y":68.2678,"z":-87.381454},"screenPosition":{"x":0.79401577,"y":0.35577187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.15553,"y":66.777824,"z":-86.9858},"screenPosition":{"x":0.76238596,"y":0.36215344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.90768,"y":66.80089,"z":-87.340324},"screenPosition":{"x":0.7244461,"y":0.3362319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.60378,"y":69.476265,"z":-88.60082},"screenPosition":{"x":0.7205661,"y":0.28400302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.53754,"y":72.912674,"z":-89.829575},"screenPosition":{"x":0.75779194,"y":0.24699779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.28139,"y":73.91155,"z":-90.034515},"screenPosition":{"x":0.7864893,"y":0.24603684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.82518,"y":73.25698,"z":-89.53843},"screenPosition":{"x":0.8079191,"y":0.27296898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.08203,"y":71.00667,"z":-88.4491},"screenPosition":{"x":0.8146149,"y":0.3188144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.83157,"y":72.08944,"z":-90.16037},"screenPosition":{"x":0.6802287,"y":0.209321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.64883,"y":74.43209,"z":-91.11074},"screenPosition":{"x":0.6940758,"y":0.17428453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.43216,"y":76.42406,"z":-91.82126},"screenPosition":{"x":0.7163344,"y":0.15229529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.97385,"y":77.83003,"z":-92.26764},"screenPosition":{"x":0.73812574,"y":0.1408606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.62358,"y":79.67904,"z":-92.8149},"screenPosition":{"x":0.77116925,"y":0.12876995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.33058,"y":80.318886,"z":-92.86823},"screenPosition":{"x":0.7976113,"y":0.13467015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.33644,"y":80.33556,"z":-92.69176},"screenPosition":{"x":0.81738096,"y":0.14876875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.68906,"y":81.3729,"z":-92.96856},"screenPosition":{"x":0.8397923,"y":0.14346443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.1989,"y":80.36765,"z":-92.23262},"screenPosition":{"x":0.87018424,"y":0.18253139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.55702,"y":82.04739,"z":-92.77515},"screenPosition":{"x":0.89419395,"y":0.16930802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.42503,"y":79.92779,"z":-92.697845},"screenPosition":{"x":0.9174454,"y":0.21539468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.6182,"y":77.01865,"z":-91.51456},"screenPosition":{"x":0.90100044,"y":0.25830165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.66243,"y":74.5311,"z":-90.461235},"screenPosition":{"x":0.8983659,"y":0.3022695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.92032,"y":72.46853,"z":-89.6638},"screenPosition":{"x":0.8752792,"y":0.32541162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.38538,"y":71.20928,"z":-88.10091},"screenPosition":{"x":0.8644042,"y":0.35378563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.19513,"y":69.39747,"z":-87.519295},"screenPosition":{"x":0.8358813,"y":0.36295098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.78233,"y":69.56094,"z":-87.82467},"screenPosition":{"x":0.8101907,"y":0.34306785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.43605,"y":71.23489,"z":-88.66782},"screenPosition":{"x":0.8020189,"y":0.30611733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.72263,"y":73.45637,"z":-89.70327},"screenPosition":{"x":0.8000319,"y":0.2635794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.07057,"y":75.9202,"z":-90.568565},"screenPosition":{"x":0.82858247,"y":0.23791757},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-234.71259,"y":75.86701,"z":-90.053955},"screenPosition":{"x":0.8840673,"y":0.2797233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.61696,"y":77.03736,"z":-91.52217},"screenPosition":{"x":0.9063527,"y":0.26184002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.79092,"y":80.731186,"z":-91.97741},"screenPosition":{"x":0.91261315,"y":0.21103257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.06065,"y":81.65118,"z":-92.657875},"screenPosition":{"x":0.8881197,"y":0.17077696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.45879,"y":81.44601,"z":-92.79367},"screenPosition":{"x":0.8627759,"y":0.15755251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.61998,"y":79.22836,"z":-92.07682},"screenPosition":{"x":0.8298143,"y":0.1765356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.28047,"y":77.415276,"z":-91.389015},"screenPosition":{"x":0.81408733,"y":0.1995961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.3136,"y":75.69707,"z":-90.774635},"screenPosition":{"x":0.79502344,"y":0.21871403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.6354,"y":74.139786,"z":-90.25324},"screenPosition":{"x":0.7738933,"y":0.23333976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.63165,"y":72.06255,"z":-89.48725},"screenPosition":{"x":0.7534458,"y":0.2581275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.61221,"y":70.12701,"z":-88.77831},"screenPosition":{"x":0.733863,"y":0.2808683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.0807,"y":67.936935,"z":-88.009155},"screenPosition":{"x":0.708064,"y":0.30415297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.28427,"y":66.72072,"z":-87.70965},"screenPosition":{"x":0.67958724,"y":0.30773792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.03679,"y":66.11806,"z":-87.62198},"screenPosition":{"x":0.6584949,"y":0.3055307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.15642,"y":64.96788,"z":-87.34202},"screenPosition":{"x":0.6313122,"y":0.30858964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.31879,"y":64.193405,"z":-87.0372},"screenPosition":{"x":0.6258966,"y":0.3190784},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-257.65427,"y":58.982372,"z":-85.19249},"screenPosition":{"x":0.56637126,"y":0.37505367},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-262.89694,"y":59.384968,"z":-85.84076},"screenPosition":{"x":0.51513606,"y":0.3336634},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-267.50415,"y":58.605984,"z":-85.94277},"screenPosition":{"x":0.4646066,"y":0.3136268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.30887,"y":58.846382,"z":-86.39185},"screenPosition":{"x":0.42721587,"y":0.28404316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.29367,"y":61.682682,"z":-87.74533},"screenPosition":{"x":0.42120922,"y":0.22740062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.82224,"y":63.864414,"z":-88.60272},"screenPosition":{"x":0.4368874,"y":0.19797134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.77444,"y":65.01654,"z":-90.055504},"screenPosition":{"x":0.4440111,"y":0.17451237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.7407,"y":66.53262,"z":-90.49443},"screenPosition":{"x":0.47218698,"y":0.1653256},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-271.90826,"y":61.737827,"z":-87.64072},"screenPosition":{"x":0.4355345,"y":0.23600377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.87177,"y":60.75308,"z":-87.046906},"screenPosition":{"x":0.45128757,"y":0.26490638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.66736,"y":59.900402,"z":-86.49218},"screenPosition":{"x":0.46939218,"y":0.2932503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.88382,"y":60.160717,"z":-86.25177},"screenPosition":{"x":0.50906605,"y":0.31466505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.60825,"y":59.22405,"z":-85.74777},"screenPosition":{"x":0.5172853,"y":0.3379164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.1215,"y":60.921745,"z":-86.220024},"screenPosition":{"x":0.55101347,"y":0.3287366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.3821,"y":60.748657,"z":-85.89668},"screenPosition":{"x":0.5777332,"y":0.35056898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.56042,"y":64.77939,"z":-87.301346},"screenPosition":{"x":0.6263882,"y":0.308488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.81563,"y":67.28423,"z":-88.45089},"screenPosition":{"x":0.6259741,"y":0.26229966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.33167,"y":67.363716,"z":-88.807},"screenPosition":{"x":0.5911015,"y":0.23619136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.18008,"y":71.67527,"z":-90.113365},"screenPosition":{"x":0.66481835,"y":0.20575707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.53925,"y":73.17162,"z":-91.04001},"screenPosition":{"x":0.6379977,"y":0.16068897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.9815,"y":72.53305,"z":-91.09288},"screenPosition":{"x":0.5998473,"y":0.14733782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.24783,"y":70.750084,"z":-90.565155},"screenPosition":{"x":0.56824553,"y":0.15802443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.34113,"y":47.860115,"z":-82.68662},"screenPosition":{"x":0.28090453,"y":0.38949665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.8753,"y":65.08259,"z":-88.283005},"screenPosition":{"x":0.5336607,"y":0.23990303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.7409,"y":62.870735,"z":-87.26552},"screenPosition":{"x":0.5341521,"y":0.28125763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.01895,"y":61.121128,"z":-86.38486},"screenPosition":{"x":0.54284805,"y":0.31982732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.08206,"y":59.928658,"z":-85.71445},"screenPosition":{"x":0.55661064,"y":0.35091695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.89334,"y":58.934296,"z":-85.10268},"screenPosition":{"x":0.57385737,"y":0.38094893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.53383,"y":58.063663,"z":-84.618225},"screenPosition":{"x":0.5832581,"y":0.4035573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.64949,"y":57.08853,"z":-84.04238},"screenPosition":{"x":0.5975659,"y":0.43111432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.60278,"y":56.88787,"z":-83.77135},"screenPosition":{"x":0.6173246,"y":0.448113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.59003,"y":57.0379,"z":-83.740166},"screenPosition":{"x":0.6283431,"y":0.4527343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.23859,"y":57.44373,"z":-83.8754},"screenPosition":{"x":0.63375753,"y":0.44916093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.89816,"y":59.13436,"z":-84.54208},"screenPosition":{"x":0.6455844,"y":0.42584395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.33437,"y":60.731388,"z":-85.24153},"screenPosition":{"x":0.64932764,"y":0.39832985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.03807,"y":61.988617,"z":-85.82529},"screenPosition":{"x":0.6481031,"y":0.37494063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.73883,"y":63.237507,"z":-86.49728},"screenPosition":{"x":0.63739264,"y":0.3438952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.33998,"y":64.69412,"z":-87.24587},"screenPosition":{"x":0.6282232,"y":0.31122768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.36633,"y":66.46296,"z":-88.16246},"screenPosition":{"x":0.616691,"y":0.2700931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.6372,"y":68.82612,"z":-89.25496},"screenPosition":{"x":0.61556864,"y":0.22550821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.70593,"y":71.59638,"z":-90.58889},"screenPosition":{"x":0.60838187,"y":0.16929749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.30276,"y":73.85377,"z":-91.48379},"screenPosition":{"x":0.6237114,"y":0.13772939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.72247,"y":74.95066,"z":-92.96906},"screenPosition":{"x":0.6358656,"y":0.11734491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.74884,"y":76.42192,"z":-93.395004},"screenPosition":{"x":0.6611123,"y":0.09758399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.12137,"y":78.17619,"z":-93.865364},"screenPosition":{"x":0.68857795,"y":0.094771124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.08124,"y":79.69702,"z":-94.305664},"screenPosition":{"x":0.71684194,"y":0.08555562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.2289,"y":80.53683,"z":-94.58632},"screenPosition":{"x":0.73990977,"y":0.0848026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.47557,"y":81.84386,"z":-94.964714},"screenPosition":{"x":0.7642003,"y":0.07688262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.54097,"y":83.286026,"z":-95.38224},"screenPosition":{"x":0.78968257,"y":0.063749656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.53697,"y":84.683624,"z":-94.68921},"screenPosition":{"x":0.81264627,"y":0.061086796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.42496,"y":84.41565,"z":-94.292435},"screenPosition":{"x":0.84747994,"y":0.09219475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.75171,"y":86.37877,"z":-94.949066},"screenPosition":{"x":0.87422544,"y":0.07375555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.95471,"y":88.04055,"z":-95.56186},"screenPosition":{"x":0.8905834,"y":0.053925354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.61171,"y":89.09712,"z":-95.87458},"screenPosition":{"x":0.9094654,"y":0.047016405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.59169,"y":90.03958,"z":-96.07794},"screenPosition":{"x":0.9346454,"y":0.046455994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.65562,"y":90.916,"z":-96.261765},"screenPosition":{"x":0.9586453,"y":0.046327397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.10786,"y":91.74562,"z":-96.46196},"screenPosition":{"x":0.9794977,"y":0.05349287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.66188,"y":91.42104,"z":-97.37272},"screenPosition":{"x":0.98241544,"y":0.045880027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.4948,"y":92.55683,"z":-99.121025},"screenPosition":{"x":1.0012289,"y":0.02844862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.71768,"y":98.930046,"z":-97.442924},"screenPosition":{"x":1.0368077,"y":-0.038324796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.10596,"y":94.8156,"z":-98.6257},"screenPosition":{"x":0.9946341,"y":-0.007640432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.8155,"y":93.51779,"z":-98.344444},"screenPosition":{"x":0.9811558,"y":0.0061441073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.59113,"y":92.91758,"z":-96.99024},"screenPosition":{"x":0.97983444,"y":0.029855074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.49068,"y":91.05641,"z":-96.212616},"screenPosition":{"x":0.9757839,"y":0.06318264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.62085,"y":88.49642,"z":-95.16768},"screenPosition":{"x":0.9614132,"y":0.10067738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.58572,"y":86.70257,"z":-94.5158},"screenPosition":{"x":0.94514716,"y":0.12035842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.34584,"y":84.681755,"z":-93.75139},"screenPosition":{"x":0.920602,"y":0.13639385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.41034,"y":82.680176,"z":-93.0229},"screenPosition":{"x":0.898676,"y":0.16087213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.9314,"y":80.70744,"z":-92.34831},"screenPosition":{"x":0.8738972,"y":0.1799806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.5076,"y":79.58611,"z":-92.12224},"screenPosition":{"x":0.84287757,"y":0.17867813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.23131,"y":79.90089,"z":-92.50263},"screenPosition":{"x":0.81682086,"y":0.15533093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.87659,"y":80.9241,"z":-93.1683},"screenPosition":{"x":0.7944859,"y":0.12270731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.8792,"y":83.03389,"z":-95.30924},"screenPosition":{"x":0.78631663,"y":0.0696716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.99057,"y":85.9327,"z":-96.148476},"screenPosition":{"x":0.8401898,"y":0.05210619},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-238.52997,"y":81.53,"z":-92.74294},"screenPosition":{"x":0.8719127,"y":0.16344064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.27724,"y":85.23183,"z":-94.156075},"screenPosition":{"x":0.9037527,"y":0.11486945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.0215,"y":78.99609,"z":-94.10274},"screenPosition":{"x":0.7020792,"y":0.07982787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.3349,"y":77.47597,"z":-93.700165},"screenPosition":{"x":0.6825165,"y":0.100429274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.00385,"y":76.23183,"z":-93.33997},"screenPosition":{"x":0.659903,"y":0.110888876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.3455,"y":74.22947,"z":-91.45893},"screenPosition":{"x":0.64543295,"y":0.14535685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.65454,"y":72.82221,"z":-90.90636},"screenPosition":{"x":0.6352911,"y":0.16464315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.07928,"y":70.43982,"z":-89.77793},"screenPosition":{"x":0.6394047,"y":0.21159475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.54088,"y":68.41646,"z":-88.801125},"screenPosition":{"x":0.6448123,"y":0.25310048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.07072,"y":66.46875,"z":-87.86183},"screenPosition":{"x":0.650144,"y":0.2924646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.64764,"y":64.09597,"z":-86.751366},"screenPosition":{"x":0.65276194,"y":0.33823285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.20044,"y":61.214146,"z":-85.52047},"screenPosition":{"x":0.6429477,"y":0.3850889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.08862,"y":58.693893,"z":-84.65359},"screenPosition":{"x":0.61109155,"y":0.41078666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.1002,"y":57.100697,"z":-84.272736},"screenPosition":{"x":0.5727712,"y":0.41422775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.83115,"y":56.623043,"z":-84.41859},"screenPosition":{"x":0.532553,"y":0.39606225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.1148,"y":58.836174,"z":-85.54227},"screenPosition":{"x":0.52041215,"y":0.34685606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.23352,"y":61.189716,"z":-86.6168},"screenPosition":{"x":0.5207854,"y":0.30345452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.59714,"y":63.51186,"z":-87.42505},"screenPosition":{"x":0.5489446,"y":0.27930623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.4775,"y":64.66204,"z":-87.70501},"screenPosition":{"x":0.5761694,"y":0.27626705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.50198,"y":64.54537,"z":-87.38325},"screenPosition":{"x":0.6055642,"y":0.29882148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.22935,"y":63.617043,"z":-86.79102},"screenPosition":{"x":0.62416685,"y":0.32797208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.14577,"y":63.057358,"z":-86.36837},"screenPosition":{"x":0.64253825,"y":0.35062674},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-249.4361,"y":58.46311,"z":-84.222466},"screenPosition":{"x":0.64710003,"y":0.4389824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.79689,"y":55.204304,"z":-82.910225},"screenPosition":{"x":0.62725693,"y":0.4860131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.5172,"y":52.816124,"z":-82.082436},"screenPosition":{"x":0.5979176,"y":0.5105932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.43208,"y":51.438988,"z":-81.68995},"screenPosition":{"x":0.57163936,"y":0.51847786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.80353,"y":50.090702,"z":-81.35135},"screenPosition":{"x":0.5408132,"y":0.52291304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.62137,"y":49.55535,"z":-81.38943},"screenPosition":{"x":0.50959504,"y":0.51185346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.36157,"y":51.797333,"z":-82.56699},"screenPosition":{"x":0.49300203,"y":0.4589908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.7121,"y":54.89522,"z":-83.786255},"screenPosition":{"x":0.51501495,"y":0.41632426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.7031,"y":57.122482,"z":-84.521065},"screenPosition":{"x":0.5464809,"y":0.39615783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.78563,"y":57.865555,"z":-84.55959},"screenPosition":{"x":0.57959414,"y":0.4051174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.28236,"y":57.636047,"z":-84.234665},"screenPosition":{"x":0.6038493,"y":0.42555952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.06485,"y":57.55912,"z":-84.09096},"screenPosition":{"x":0.6158311,"y":0.43497103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.18135,"y":58.652878,"z":-84.36934},"screenPosition":{"x":0.6405297,"y":0.4309692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.6522,"y":59.349148,"z":-84.42425},"screenPosition":{"x":0.66964746,"y":0.43762097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.54744,"y":58.28875,"z":-83.79293},"screenPosition":{"x":0.68571407,"y":0.46808475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.97215,"y":55.90636,"z":-82.664505},"screenPosition":{"x":0.6898277,"y":0.51503634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.62715,"y":53.45087,"z":-81.71097},"screenPosition":{"x":0.67095774,"y":0.54789984},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-251.65921,"y":53.60983,"z":-82.42318},"screenPosition":{"x":0.6002866,"y":0.49771836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.09375,"y":51.069073,"z":-81.41417},"screenPosition":{"x":0.5833708,"y":0.5332219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.00348,"y":48.423813,"z":-80.31377},"screenPosition":{"x":0.57111436,"y":0.5740491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.79791,"y":46.127968,"z":-79.347015},"screenPosition":{"x":0.56176734,"y":0.6103506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.15988,"y":44.31233,"z":-78.44681},"screenPosition":{"x":0.56933945,"y":0.6491143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.29124,"y":43.195507,"z":-77.8139},"screenPosition":{"x":0.58272475,"y":0.6788251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.15509,"y":42.418484,"z":-77.29669},"screenPosition":{"x":0.6003985,"y":0.70514184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.58908,"y":42.755726,"z":-77.19998},"screenPosition":{"x":0.6281223,"y":0.7175108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.23882,"y":44.604725,"z":-77.74725},"screenPosition":{"x":0.661207,"y":0.70544684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.33167,"y":47.884045,"z":-79.201614},"screenPosition":{"x":0.6662525,"y":0.6481671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.90996,"y":44.70216,"z":-78.03308},"screenPosition":{"x":0.6346679,"y":0.68578154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.90913,"y":42.63327,"z":-77.178856},"screenPosition":{"x":0.6243474,"y":0.71722573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.22406,"y":41.24269,"z":-76.449814},"screenPosition":{"x":0.63454026,"y":0.7498604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.27147,"y":40.19191,"z":-75.83646},"screenPosition":{"x":0.6491113,"y":0.77914083},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-236.37225,"y":35.541977,"z":-74.64396},"screenPosition":{"x":0.6665379,"y":0.8700429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.17265,"y":33.575577,"z":-72.81995},"screenPosition":{"x":0.6535013,"y":0.904057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.2923,"y":32.425396,"z":-72.53998},"screenPosition":{"x":0.6203693,"y":0.9038771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.24405,"y":31.40729,"z":-72.29911},"screenPosition":{"x":0.59535867,"y":0.9057624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.56961,"y":31.927235,"z":-72.54371},"screenPosition":{"x":0.5947919,"y":0.89592993},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-245.43213,"y":58.63816,"z":-83.92658},"screenPosition":{"x":0.68844163,"y":0.46370864},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-105048/brain-C784B0-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.7730934471373105,0.6082104426065011,-0.18001827545489507,0.0,0.6286136583136126,-0.696776505514171,0.34546688690095617,0.0,0.08468406328777145,-0.3802401331630648,-0.9210027418836539,0.0,-250.110936103989,2.464278739053917,-170.16819502861645,1.0]},"baseImage":"20190823-105048/base.webp","version":0,"savedAt":1.5665578798E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-224613-v0.json b/data/mapping/BAAAHS/dwayman/20190823-224613-v0.json new file mode 100644 index 0000000000..22474574bb --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-224613-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566600373667E12,"surfaces":[{"brainId":"CB31D8","panelName":"1D","pixels":[{"modelPosition":{"x":-20.18601,"y":90.166214,"z":-72.32731},"screenPosition":{"x":0.010245524,"y":-0.0050876155},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-20.970404,"y":94.96478,"z":-72.72357},"screenPosition":{"x":0.0037027358,"y":0.062117964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.648472,"y":95.50676,"z":-73.80309},"screenPosition":{"x":0.065388486,"y":0.07553874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.250853,"y":94.39271,"z":-76.762},"screenPosition":{"x":0.13523458,"y":0.06638072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.430468,"y":93.11805,"z":-75.17523},"screenPosition":{"x":0.089517884,"y":0.044059914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.831724,"y":91.29838,"z":-72.909996},"screenPosition":{"x":0.024443556,"y":0.012030916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.693996,"y":93.886284,"z":-72.55883},"screenPosition":{"x":0.008811895,"y":0.04622744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.283472,"y":96.18633,"z":-72.91017},"screenPosition":{"x":0.01500732,"y":0.07872875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.01772,"y":99.05126,"z":-73.34779},"screenPosition":{"x":0.0138061885,"y":0.12041218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.42665,"y":101.11601,"z":-73.113434},"screenPosition":{"x":0.029384745,"y":0.15415299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.468515,"y":101.882744,"z":-74.95034},"screenPosition":{"x":0.08776422,"y":0.16611946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.271236,"y":103.87479,"z":-75.52693},"screenPosition":{"x":0.10137502,"y":0.19513373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.19007,"y":106.5393,"z":-76.15384},"screenPosition":{"x":0.1158583,"y":0.23422065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.401884,"y":107.88457,"z":-77.167366},"screenPosition":{"x":0.14343716,"y":0.25522286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.379673,"y":109.88518,"z":-77.90638},"screenPosition":{"x":0.16181265,"y":0.28470898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.528578,"y":111.65602,"z":-78.82464},"screenPosition":{"x":0.1863068,"y":0.31191796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.268389,"y":114.07363,"z":-79.30596},"screenPosition":{"x":0.19610023,"y":0.34630936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.04163,"y":116.39763,"z":-79.8265},"screenPosition":{"x":0.20741582,"y":0.37971392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.6069,"y":119.19035,"z":-81.97676},"screenPosition":{"x":0.26717037,"y":0.42469835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.936287,"y":114.968895,"z":-83.57914},"screenPosition":{"x":0.32382074,"y":0.37228316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.57214,"y":111.99813,"z":-83.49554},"screenPosition":{"x":0.32696578,"y":0.33130363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.790882,"y":110.77314,"z":-85.66876},"screenPosition":{"x":0.3951281,"y":0.3216026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.08259,"y":111.83787,"z":-87.71286},"screenPosition":{"x":0.45497167,"y":0.34251985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.005375,"y":114.740715,"z":-88.32293},"screenPosition":{"x":0.4677501,"y":0.38422033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.16102,"y":117.79653,"z":-88.20489},"screenPosition":{"x":0.4583601,"y":0.42539084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.666275,"y":120.4858,"z":-86.58032},"screenPosition":{"x":0.40397525,"y":0.45692345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.543877,"y":121.1916,"z":-84.54159},"screenPosition":{"x":0.3408916,"y":0.46009502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.240307,"y":119.411865,"z":-82.548},"screenPosition":{"x":0.28404185,"y":0.42954957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.512997,"y":116.517265,"z":-81.18744},"screenPosition":{"x":0.24834958,"y":0.38563287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.062748,"y":112.92576,"z":-82.94095},"screenPosition":{"x":0.3084382,"y":0.34235007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.04351,"y":112.117775,"z":-84.85648},"screenPosition":{"x":0.36795393,"y":0.33743045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.543716,"y":113.09745,"z":-87.10221},"screenPosition":{"x":0.43403548,"y":0.35781142},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-38.32073,"y":119.51501,"z":-85.40992},"screenPosition":{"x":0.37041178,"y":0.43995714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.356606,"y":116.22911,"z":-84.794304},"screenPosition":{"x":0.35811856,"y":0.3931639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.01339,"y":113.641716,"z":-85.629166},"screenPosition":{"x":0.38839358,"y":0.36054683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.218468,"y":113.70201,"z":-87.67899},"screenPosition":{"x":0.45034555,"y":0.3678489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.68408,"y":115.58361,"z":-88.88287},"screenPosition":{"x":0.48313734,"y":0.39738512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.974617,"y":117.45664,"z":-89.92434},"screenPosition":{"x":0.5110799,"y":0.4262176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.04875,"y":118.93806,"z":-90.79784},"screenPosition":{"x":0.5346671,"y":0.44920787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.72403,"y":119.9263,"z":-93.20598},"screenPosition":{"x":0.6056745,"y":0.47034603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.285637,"y":117.0498,"z":-94.90898},"screenPosition":{"x":0.662628,"y":0.43656692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.842766,"y":113.55127,"z":-94.797455},"screenPosition":{"x":0.6661768,"y":0.3884152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.09784,"y":111.70363,"z":-93.33034},"screenPosition":{"x":0.6253228,"y":0.35854104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.36477,"y":110.570984,"z":-91.81271},"screenPosition":{"x":0.5815585,"y":0.33826277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.29162,"y":112.1365,"z":-89.74586},"screenPosition":{"x":0.51595205,"y":0.35305583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.2865,"y":112.70647,"z":-88.76006},"screenPosition":{"x":0.4849322,"y":0.35782006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.331264,"y":112.94417,"z":-86.91741},"screenPosition":{"x":0.42872828,"y":0.35516742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.667206,"y":113.86291,"z":-85.28749},"screenPosition":{"x":0.37762234,"y":0.36244395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.732906,"y":114.48397,"z":-84.3633},"screenPosition":{"x":0.34843895,"y":0.3679813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.94483,"y":114.25357,"z":-82.716736},"screenPosition":{"x":0.29902768,"y":0.3596045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.79691,"y":115.529655,"z":-80.60511},"screenPosition":{"x":0.23280352,"y":0.37050515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.1821,"y":117.30812,"z":-78.94707},"screenPosition":{"x":0.17898561,"y":0.38930404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.537172,"y":120.61052,"z":-78.06171},"screenPosition":{"x":0.14579877,"y":0.4315522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.600956,"y":124.80754,"z":-79.6237},"screenPosition":{"x":0.18498766,"y":0.4937857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.197506,"y":125.26803,"z":-82.00392},"screenPosition":{"x":0.25616884,"y":0.5076337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.239033,"y":121.79584,"z":-84.20546},"screenPosition":{"x":0.32956296,"y":0.46728715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.646088,"y":117.33478,"z":-82.17304},"screenPosition":{"x":0.27661356,"y":0.39992028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.87022,"y":122.0583,"z":-80.11134},"screenPosition":{"x":0.20511287,"y":0.4578433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.48812,"y":124.861496,"z":-87.901474},"screenPosition":{"x":0.43552625,"y":0.5208295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.279095,"y":124.56286,"z":-85.86848},"screenPosition":{"x":0.37454587,"y":0.51029354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.574974,"y":122.714584,"z":-82.57555},"screenPosition":{"x":0.27840924,"y":0.47460812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.810806,"y":120.05895,"z":-83.023964},"screenPosition":{"x":0.29711664,"y":0.4397966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.86762,"y":117.156425,"z":-83.326805},"screenPosition":{"x":0.31189284,"y":0.4011534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.245087,"y":114.60298,"z":-83.89842},"screenPosition":{"x":0.3341449,"y":0.3681695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.70523,"y":112.815636,"z":-84.48114},"screenPosition":{"x":0.35522977,"y":0.34559104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.189735,"y":111.26631,"z":-84.13412},"screenPosition":{"x":0.34771484,"y":0.3233472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.540512,"y":110.09146,"z":-83.63022},"screenPosition":{"x":0.3347267,"y":0.3057147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.102577,"y":109.8782,"z":-82.308495},"screenPosition":{"x":0.29515165,"y":0.29869676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.373463,"y":108.98389,"z":-80.77404},"screenPosition":{"x":0.25038365,"y":0.28152442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.661964,"y":107.042625,"z":-79.34614},"screenPosition":{"x":0.210898,"y":0.25049746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.25136,"y":104.25878,"z":-78.2712},"screenPosition":{"x":0.18372712,"y":0.20909508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.896286,"y":100.95638,"z":-79.15656},"screenPosition":{"x":0.21691397,"y":0.1668469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.153051,"y":98.68412,"z":-80.52344},"screenPosition":{"x":0.27382982,"y":0.13477658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.99675,"y":99.08691,"z":-82.64421},"screenPosition":{"x":0.3163881,"y":0.13865489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.458622,"y":100.13989,"z":-83.916435},"screenPosition":{"x":0.34062982,"y":0.16765495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.83873,"y":100.28148,"z":-85.62924},"screenPosition":{"x":0.41509414,"y":0.17833719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.399467,"y":102.89932,"z":-87.35154},"screenPosition":{"x":0.44805557,"y":0.20875369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.354774,"y":104.268456,"z":-89.055916},"screenPosition":{"x":0.48767325,"y":0.24084327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.27098,"y":106.322235,"z":-88.3633},"screenPosition":{"x":0.4851436,"y":0.26977703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.096893,"y":109.36059,"z":-87.00752},"screenPosition":{"x":0.43830216,"y":0.3068659},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.799427,"y":110.05782,"z":-84.806366},"screenPosition":{"x":0.37040955,"y":0.3091081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.700405,"y":107.954704,"z":-83.03125},"screenPosition":{"x":0.32073307,"y":0.27472112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.060894,"y":105.25623,"z":-82.66758},"screenPosition":{"x":0.3149299,"y":0.23672892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.19364,"y":101.83482,"z":-84.017815},"screenPosition":{"x":0.36241114,"y":0.19428296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.405334,"y":102.20322,"z":-86.484985},"screenPosition":{"x":0.4144175,"y":0.20397256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.600025,"y":103.03976,"z":-87.52636},"screenPosition":{"x":0.44433337,"y":0.21869688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.451805,"y":104.56884,"z":-88.682785},"screenPosition":{"x":0.50052875,"y":0.24635576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.117558,"y":105.50278,"z":-90.592476},"screenPosition":{"x":0.53241485,"y":0.2620498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.811504,"y":106.6889,"z":-92.06903},"screenPosition":{"x":0.57470363,"y":0.28303885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.725784,"y":108.256195,"z":-93.28041},"screenPosition":{"x":0.6312895,"y":0.310715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.116623,"y":109.848366,"z":-94.43952},"screenPosition":{"x":0.67007864,"y":0.32980666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.98109,"y":112.22314,"z":-94.10876},"screenPosition":{"x":0.64788914,"y":0.3681038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.65746,"y":114.68264,"z":-92.663445},"screenPosition":{"x":0.5993757,"y":0.39707088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.759377,"y":116.25672,"z":-90.759},"screenPosition":{"x":0.53867054,"y":0.41249707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.300507,"y":115.660095,"z":-88.51882},"screenPosition":{"x":0.47199246,"y":0.3972364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.126717,"y":113.267555,"z":-86.698944},"screenPosition":{"x":0.42150962,"y":0.3588059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.183525,"y":110.36502,"z":-87.00178},"screenPosition":{"x":0.43628582,"y":0.32016268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.802925,"y":107.63291,"z":-87.814255},"screenPosition":{"x":0.46616414,"y":0.28546456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.20133,"y":105.46284,"z":-89.30433},"screenPosition":{"x":0.51421374,"y":0.26316926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.25536,"y":106.299484,"z":-91.58426},"screenPosition":{"x":0.56720537,"y":0.27066216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.05499,"y":107.88997,"z":-92.68679},"screenPosition":{"x":0.6153622,"y":0.30287576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.03278,"y":109.89058,"z":-93.4258},"screenPosition":{"x":0.63161594,"y":0.33418503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.229233,"y":112.945755,"z":-91.48195},"screenPosition":{"x":0.56695604,"y":0.3696158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.274,"y":113.18346,"z":-89.6393},"screenPosition":{"x":0.51070327,"y":0.3670031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.24004,"y":112.89339,"z":-87.768715},"screenPosition":{"x":0.45454267,"y":0.35729834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.42429,"y":110.99465,"z":-86.240005},"screenPosition":{"x":0.41200376,"y":0.32633314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.159275,"y":108.55134,"z":-85.27143},"screenPosition":{"x":0.38739577,"y":0.2899153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.207012,"y":105.98044,"z":-84.60531},"screenPosition":{"x":0.3721922,"y":0.25271785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.960144,"y":102.87385,"z":-85.57465},"screenPosition":{"x":0.41881472,"y":0.20613684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.542942,"y":102.99979,"z":-87.4766},"screenPosition":{"x":0.45290017,"y":0.20936973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.55927,"y":105.111855,"z":-90.105835},"screenPosition":{"x":0.52129805,"y":0.25278792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.320225,"y":107.181946,"z":-88.335175},"screenPosition":{"x":0.48270768,"y":0.28121865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.160442,"y":107.743034,"z":-86.274055},"screenPosition":{"x":0.4192694,"y":0.28237993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.234688,"y":107.64877,"z":-84.48746},"screenPosition":{"x":0.36540827,"y":0.27522245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.893093,"y":106.91632,"z":-83.300224},"screenPosition":{"x":0.330898,"y":0.26150554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.14026,"y":104.59201,"z":-81.866776},"screenPosition":{"x":0.29207504,"y":0.2254907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.37556,"y":101.5527,"z":-80.48383},"screenPosition":{"x":0.25604954,"y":0.17948352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.527092,"y":98.78741,"z":-82.23279},"screenPosition":{"x":0.2923274,"y":0.144412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.814823,"y":109.0518,"z":-80.24757},"screenPosition":{"x":0.2344041,"y":0.28093895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.517246,"y":111.3247,"z":-80.706505},"screenPosition":{"x":0.243974,"y":0.3135047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.31718,"y":112.2701,"z":-82.30256},"screenPosition":{"x":0.2903182,"y":0.33122334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.245724,"y":113.410995,"z":-83.069695},"screenPosition":{"x":0.31140146,"y":0.34938687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.9521,"y":115.922226,"z":-83.511795},"screenPosition":{"x":0.31987822,"y":0.38490045},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-40.407543,"y":116.66421,"z":-87.600174},"screenPosition":{"x":0.44223717,"y":0.4080182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.04852,"y":113.123474,"z":-88.50237},"screenPosition":{"x":0.47639412,"y":0.3625714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.921185,"y":110.54401,"z":-87.673836},"screenPosition":{"x":0.45628926,"y":0.32474086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.101486,"y":108.40694,"z":-86.16195},"screenPosition":{"x":0.4146389,"y":0.29077515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.23864,"y":107.88711,"z":-84.47063},"screenPosition":{"x":0.36443126,"y":0.27830678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.37975,"y":107.60561,"z":-82.76247},"screenPosition":{"x":0.31333116,"y":0.26934227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.546383,"y":106.75383,"z":-81.12719},"screenPosition":{"x":0.26542667,"y":0.25232103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.241009,"y":106.974396,"z":-78.9597},"screenPosition":{"x":0.1994728,"y":0.24856587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.647772,"y":107.94423,"z":-77.39139},"screenPosition":{"x":0.14996834,"y":0.25658765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.465778,"y":110.50592,"z":-76.069275},"screenPosition":{"x":0.10498792,"y":0.2873407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.654856,"y":113.46812,"z":-75.990456},"screenPosition":{"x":0.09687953,"y":0.32750997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.082552,"y":114.82132,"z":-75.34059},"screenPosition":{"x":0.06607628,"y":0.34663743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.843914,"y":117.88239,"z":-76.2243},"screenPosition":{"x":0.07278074,"y":0.38536292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.523863,"y":120.53545,"z":-76.62956},"screenPosition":{"x":0.08059414,"y":0.4227984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.601065,"y":123.23187,"z":-76.963615},"screenPosition":{"x":0.10748614,"y":0.4638313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.0204,"y":121.44516,"z":-79.37215},"screenPosition":{"x":0.18399125,"y":0.4471624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.064713,"y":119.019615,"z":-80.55422},"screenPosition":{"x":0.22434267,"y":0.4177655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.475613,"y":116.37256,"z":-81.16506},"screenPosition":{"x":0.24797542,"y":0.38361457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.244556,"y":114.2193,"z":-82.06706},"screenPosition":{"x":0.2794938,"y":0.3571975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.934776,"y":111.538284,"z":-82.94114},"screenPosition":{"x":0.31114918,"y":0.32351547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.870354,"y":108.53324,"z":-82.20787},"screenPosition":{"x":0.29466912,"y":0.27993214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.754354,"y":106.285095,"z":-79.49747},"screenPosition":{"x":0.21715605,"y":0.2410245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.39793,"y":107.64623,"z":-77.184204},"screenPosition":{"x":0.14450666,"y":0.2521459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.018658,"y":112.19997,"z":-76.43868},"screenPosition":{"x":0.11290103,"y":0.31163028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.562992,"y":114.60933,"z":-77.670494},"screenPosition":{"x":0.14570072,"y":0.3485451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.216698,"y":116.4062,"z":-79.988914},"screenPosition":{"x":0.21227393,"y":0.38030818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.264324,"y":115.410965,"z":-81.98289},"screenPosition":{"x":0.27457187,"y":0.37306517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.90861,"y":113.30056,"z":-83.69698},"screenPosition":{"x":0.33054948,"y":0.3497157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.282127,"y":110.50878,"z":-84.28544},"screenPosition":{"x":0.35379103,"y":0.31374377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.967865,"y":107.20575,"z":-83.344986},"screenPosition":{"x":0.33172327,"y":0.26575527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.289803,"y":105.17087,"z":-81.95631},"screenPosition":{"x":0.29354683,"y":0.23325226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.432076,"y":104.08107,"z":-81.25078},"screenPosition":{"x":0.27428907,"y":0.21613947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.999899,"y":102.10585,"z":-80.08611},"screenPosition":{"x":0.24283955,"y":0.18548575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.808489,"y":100.76026,"z":-78.159676},"screenPosition":{"x":0.18710794,"y":0.1610025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.701904,"y":102.419395,"z":-76.0536},"screenPosition":{"x":0.12013314,"y":0.1769484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.19007,"y":106.5393,"z":-76.15384},"screenPosition":{"x":0.1158583,"y":0.23422065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.58998,"y":107.799835,"z":-78.28191},"screenPosition":{"x":0.1772115,"y":0.2574475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.341835,"y":107.07722,"z":-80.90872},"screenPosition":{"x":0.25814456,"y":0.25593552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.244507,"y":104.549484,"z":-81.9676},"screenPosition":{"x":0.29520407,"y":0.22522569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.28219,"y":99.2633,"z":-81.52588},"screenPosition":{"x":0.29274336,"y":0.1548033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.69471,"y":98.471176,"z":-80.114624},"screenPosition":{"x":0.26312658,"y":0.12950854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.3009,"y":99.6876,"z":-77.77898},"screenPosition":{"x":0.17765279,"y":0.14515592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.30764,"y":100.97257,"z":-76.742676},"screenPosition":{"x":0.14379255,"y":0.15939616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.968836,"y":101.28675,"z":-74.53597},"screenPosition":{"x":0.07713944,"y":0.1576287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.105106,"y":99.39223,"z":-73.39988},"screenPosition":{"x":0.021960637,"y":0.124166764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.752722,"y":95.46423,"z":-73.90391},"screenPosition":{"x":0.06847729,"y":0.07521181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.169958,"y":94.33606,"z":-76.69148},"screenPosition":{"x":0.13075496,"y":0.06773762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.841413,"y":95.50644,"z":-78.14844},"screenPosition":{"x":0.17493033,"y":0.08609915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.35571,"y":97.26698,"z":-80.340065},"screenPosition":{"x":0.24216937,"y":0.11338448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.6318,"y":98.89675,"z":-80.01935},"screenPosition":{"x":0.24704264,"y":0.14156093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.42428,"y":102.02873,"z":-78.62435},"screenPosition":{"x":0.19872779,"y":0.17978783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.492765,"y":103.696434,"z":-76.680695},"screenPosition":{"x":0.13665429,"y":0.19636683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.650326,"y":103.176285,"z":-74.07646},"screenPosition":{"x":0.058805298,"y":0.18099281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.247627,"y":100.86911,"z":-72.96785},"screenPosition":{"x":0.028628264,"y":0.15018448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.01921,"y":100.63427,"z":-83.026665},"screenPosition":{"x":0.3446276,"y":0.16962261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.84629,"y":102.86433,"z":-82.673515},"screenPosition":{"x":0.31971842,"y":0.2040584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.235962,"y":105.2648,"z":-82.829994},"screenPosition":{"x":0.31981987,"y":0.23731074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.21654,"y":108.31205,"z":-82.54954},"screenPosition":{"x":0.3054479,"y":0.27802035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.656097,"y":110.38025,"z":-81.849174},"screenPosition":{"x":0.2802404,"y":0.30399498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.495674,"y":112.13332,"z":-80.61678},"screenPosition":{"x":0.23953862,"y":0.32399935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.985115,"y":113.869255,"z":-79.05956},"screenPosition":{"x":0.18916434,"y":0.34286827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.470602,"y":115.36685,"z":-77.51917},"screenPosition":{"x":0.13949998,"y":0.35827708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.422977,"y":116.36208,"z":-75.5252},"screenPosition":{"x":0.070137486,"y":0.36794263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.852016,"y":114.012146,"z":-75.63311},"screenPosition":{"x":0.06214339,"y":0.330691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.970354,"y":110.57202,"z":-75.10762},"screenPosition":{"x":0.053756624,"y":0.28200832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.284079,"y":107.63671,"z":-74.283066},"screenPosition":{"x":0.046943467,"y":0.24626638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.589453,"y":107.41615,"z":-76.45055},"screenPosition":{"x":0.12250073,"y":0.24639182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.238037,"y":109.78299,"z":-77.78317},"screenPosition":{"x":0.15837176,"y":0.28302756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.432236,"y":112.17522,"z":-78.69015},"screenPosition":{"x":0.18112114,"y":0.31844792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.022501,"y":114.01397,"z":-79.08194},"screenPosition":{"x":0.18951808,"y":0.34486863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.05925,"y":115.35067,"z":-79.93306},"screenPosition":{"x":0.21262139,"y":0.3657278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.158905,"y":116.261795,"z":-80.87944},"screenPosition":{"x":0.23961061,"y":0.38127017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.333336,"y":117.46236,"z":-81.87059},"screenPosition":{"x":0.26723084,"y":0.4007256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.286766,"y":119.224945,"z":-83.539345},"screenPosition":{"x":0.3143327,"y":0.43005428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.689465,"y":121.53212,"z":-84.64795},"screenPosition":{"x":0.34344503,"y":0.46506175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.01739,"y":123.549866,"z":-85.7118},"screenPosition":{"x":0.37175852,"y":0.49597302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.10896,"y":127.839554,"z":-84.49586},"screenPosition":{"x":0.3266551,"y":0.55064243},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-34.220406,"y":131.74524,"z":-80.53565},"screenPosition":{"x":0.19919957,"y":0.59135044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.411398,"y":131.13148,"z":-77.970634},"screenPosition":{"x":0.10974247,"y":0.5757111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.059752,"y":127.68373,"z":-77.0078},"screenPosition":{"x":0.10008832,"y":0.52506524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.846659,"y":125.69681,"z":-77.41798},"screenPosition":{"x":0.094496764,"y":0.49573183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.119003,"y":121.58892,"z":-76.65581},"screenPosition":{"x":0.08441872,"y":0.44286224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.47479,"y":121.41978,"z":-79.7978},"screenPosition":{"x":0.19695292,"y":0.44818357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.769283,"y":123.531136,"z":-80.822426},"screenPosition":{"x":0.22383323,"y":0.48020825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.290535,"y":123.31851,"z":-81.326515},"screenPosition":{"x":0.23942325,"y":0.47887927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.108727,"y":122.02497,"z":-82.20039},"screenPosition":{"x":0.2684587,"y":0.46405464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.567596,"y":122.6216,"z":-84.440575},"screenPosition":{"x":0.33506024,"y":0.47926658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.307934,"y":125.4229,"z":-86.75326},"screenPosition":{"x":0.39967504,"y":0.52484083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.575737,"y":128.91286,"z":-86.70237},"screenPosition":{"x":0.39139292,"y":0.5723003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.980694,"y":131.88298,"z":-84.96015},"screenPosition":{"x":0.33290315,"y":0.6072914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.15343,"y":133.50815,"z":-83.11731},"screenPosition":{"x":0.27396446,"y":0.6236105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.496754,"y":134.51988,"z":-79.62236},"screenPosition":{"x":0.16618645,"y":0.62630844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.324766,"y":130.12704,"z":-77.97637},"screenPosition":{"x":0.10722882,"y":0.56252444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.83265,"y":125.76881,"z":-77.89297},"screenPosition":{"x":0.13072583,"y":0.50140196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.848648,"y":122.86691,"z":-80.02162},"screenPosition":{"x":0.20078471,"y":0.46857005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.750683,"y":121.531166,"z":-81.90923},"screenPosition":{"x":0.26058644,"y":0.4563864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.656033,"y":121.62574,"z":-84.608734},"screenPosition":{"x":0.3420755,"y":0.46621227},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-41.99932,"y":121.93357,"z":-88.62997},"screenPosition":{"x":0.46323988,"y":0.48319262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.278984,"y":126.138535,"z":-88.528564},"screenPosition":{"x":0.45204738,"y":0.540248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.08449,"y":129.17722,"z":-88.08569},"screenPosition":{"x":0.4327496,"y":0.58028793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.53195,"y":131.72208,"z":-87.351654},"screenPosition":{"x":0.4056264,"y":0.61269635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.871212,"y":134.07115,"z":-86.53363},"screenPosition":{"x":0.37632,"y":0.64215004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.74027,"y":135.49226,"z":-85.3573},"screenPosition":{"x":0.33795664,"y":0.657803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.27617,"y":137.04128,"z":-84.79141},"screenPosition":{"x":0.31783023,"y":0.67714113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.96952,"y":139.64581,"z":-84.281395},"screenPosition":{"x":0.29735634,"y":0.7110597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.88451,"y":140.49632,"z":-82.26504},"screenPosition":{"x":0.23466018,"y":0.7162569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.186382,"y":142.70067,"z":-81.42464},"screenPosition":{"x":0.20495561,"y":0.74366486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.22475,"y":145.89232,"z":-80.253654},"screenPosition":{"x":0.14916953,"y":0.7825462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.34534,"y":147.1868,"z":-82.11849},"screenPosition":{"x":0.21729955,"y":0.8070843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.35378,"y":148.04715,"z":-83.91618},"screenPosition":{"x":0.27018014,"y":0.8242509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.493793,"y":146.2944,"z":-86.06148},"screenPosition":{"x":0.33843032,"y":0.80732954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.90021,"y":143.02533,"z":-84.85779},"screenPosition":{"x":0.30828124,"y":0.7590058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.834404,"y":143.97993,"z":-88.44208},"screenPosition":{"x":0.41496614,"y":0.7834228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.314957,"y":142.19226,"z":-88.11189},"screenPosition":{"x":0.40842134,"y":0.7579804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.91226,"y":139.8851,"z":-87.00328},"screenPosition":{"x":0.37931025,"y":0.72297525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.667007,"y":138.63344,"z":-85.95053},"screenPosition":{"x":0.34985167,"y":0.7025505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.18378,"y":137.7988,"z":-84.64009},"screenPosition":{"x":0.31184784,"y":0.68685985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.483162,"y":133.5256,"z":-84.35505},"screenPosition":{"x":0.31140843,"y":0.62778234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.814697,"y":131.54277,"z":-85.76669},"screenPosition":{"x":0.35798162,"y":0.6052125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.083324,"y":129.98552,"z":-87.08306},"screenPosition":{"x":0.4008481,"y":0.58814687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.068676,"y":128.22388,"z":-88.15304},"screenPosition":{"x":0.4366409,"y":0.567505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.02455,"y":126.79419,"z":-89.166954},"screenPosition":{"x":0.47011057,"y":0.5512234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.750988,"y":125.066185,"z":-89.060776},"screenPosition":{"x":0.4702336,"y":0.52730703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.51598,"y":122.6746,"z":-89.97962},"screenPosition":{"x":0.50267476,"y":0.49759343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.59489,"y":119.34713,"z":-92.203545},"screenPosition":{"x":0.5764404,"y":0.45925725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.853165,"y":120.50548,"z":-94.20842},"screenPosition":{"x":0.6349086,"y":0.48143482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.61391,"y":123.30646,"z":-95.60819},"screenPosition":{"x":0.6715586,"y":0.52411634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.685707,"y":126.40448,"z":-94.47643},"screenPosition":{"x":0.63151836,"y":0.5627678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.7089,"y":127.4508,"z":-92.54406},"screenPosition":{"x":0.5709784,"y":0.57089365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.962807,"y":126.41146,"z":-90.07431},"screenPosition":{"x":0.49832386,"y":0.54888463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.77256,"y":124.25757,"z":-89.150505},"screenPosition":{"x":0.47449294,"y":0.5165623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.233345,"y":121.27824,"z":-88.90449},"screenPosition":{"x":0.47277462,"y":0.47515154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.873154,"y":118.54581,"z":-88.804054},"screenPosition":{"x":0.47505498,"y":0.43751907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.842693,"y":115.83083,"z":-89.94137},"screenPosition":{"x":0.51473594,"y":0.40408716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.71984,"y":113.87338,"z":-90.92735},"screenPosition":{"x":0.5483717,"y":0.38051093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.66717,"y":113.15902,"z":-92.80367},"screenPosition":{"x":0.6065647,"y":0.3767264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.878006,"y":111.45736,"z":-95.01057},"screenPosition":{"x":0.6766743,"y":0.36052063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.00865,"y":115.46715,"z":-96.651},"screenPosition":{"x":0.7179859,"y":0.4206582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.180748,"y":118.28431,"z":-95.636894},"screenPosition":{"x":0.68214613,"y":0.45574757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.29965,"y":120.00342,"z":-94.66774},"screenPosition":{"x":0.6494926,"y":0.47610918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.74775,"y":121.35631,"z":-93.10497},"screenPosition":{"x":0.59966725,"y":0.4895771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.711983,"y":123.066536,"z":-91.06049},"screenPosition":{"x":0.5346455,"y":0.50637656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.79594,"y":121.448654,"z":-89.41412},"screenPosition":{"x":0.48789302,"y":0.47908235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.906586,"y":118.45219,"z":-88.84327},"screenPosition":{"x":0.47641444,"y":0.4363755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.92601,"y":115.40494,"z":-89.123726},"screenPosition":{"x":0.49073598,"y":0.39576066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.966366,"y":112.74106,"z":-90.32264},"screenPosition":{"x":0.53224874,"y":0.3631383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.35291,"y":109.85599,"z":-91.86322},"screenPosition":{"x":0.5842265,"y":0.32891375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.03673,"y":110.12891,"z":-93.408966},"screenPosition":{"x":0.63074535,"y":0.33730358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.64183,"y":109.87408,"z":-94.92678},"screenPosition":{"x":0.68073314,"y":0.3350507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.595264,"y":110.73876,"z":-97.110535},"screenPosition":{"x":0.7196618,"y":0.35421103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.216793,"y":111.874176,"z":-98.52397},"screenPosition":{"x":0.7622399,"y":0.37248814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.269897,"y":113.816895,"z":-99.832405},"screenPosition":{"x":0.8139893,"y":0.40924752},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-51.18523,"y":118.90633,"z":-97.45142},"screenPosition":{"x":0.73609114,"y":0.46993944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.682873,"y":115.68803,"z":-95.39642},"screenPosition":{"x":0.6801858,"y":0.41947526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.38612,"y":112.913704,"z":-97.222626},"screenPosition":{"x":0.74084026,"y":0.38742292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.778763,"y":112.505585,"z":-98.55564},"screenPosition":{"x":0.77797335,"y":0.38759014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.403297,"y":113.4052,"z":-100.42988},"screenPosition":{"x":0.8150176,"y":0.40114433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.81404,"y":114.39302,"z":-101.65957},"screenPosition":{"x":0.8503436,"y":0.41853145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.602306,"y":116.45666,"z":-102.71078},"screenPosition":{"x":0.9053359,"y":0.44559816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.505436,"y":116.59217,"z":-100.74493},"screenPosition":{"x":0.8401549,"y":0.44885454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.238613,"y":116.14914,"z":-99.602455},"screenPosition":{"x":0.8066496,"y":0.4391345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.525314,"y":116.20817,"z":-98.00066},"screenPosition":{"x":0.75803477,"y":0.4348493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.20808,"y":115.71373,"z":-95.88368},"screenPosition":{"x":0.6945968,"y":0.42148128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.78678,"y":111.406586,"z":-95.86188},"screenPosition":{"x":0.70254916,"y":0.36253333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.709778,"y":112.21937,"z":-98.95369},"screenPosition":{"x":0.77678114,"y":0.37655407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.047733,"y":115.18724,"z":-99.50738},"screenPosition":{"x":0.80534095,"y":0.42578155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.583103,"y":116.35257,"z":-97.11014},"screenPosition":{"x":0.7307916,"y":0.43398944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.328144,"y":116.62454,"z":-95.91716},"screenPosition":{"x":0.694144,"y":0.43390915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.648273,"y":116.58995,"z":-94.354576},"screenPosition":{"x":0.6468975,"y":0.4284711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.836823,"y":119.16846,"z":-92.4444},"screenPosition":{"x":0.5839911,"y":0.45761827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.409473,"y":122.05417,"z":-92.72963},"screenPosition":{"x":0.5870803,"y":0.4978785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.620697,"y":134.26125,"z":-94.671364},"screenPosition":{"x":0.62235546,"y":0.67060655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.757854,"y":133.74141,"z":-92.980034},"screenPosition":{"x":0.5719832,"y":0.6580327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.280384,"y":131.1448,"z":-91.82666},"screenPosition":{"x":0.54213804,"y":0.6189885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.91345,"y":127.12741,"z":-92.76253},"screenPosition":{"x":0.57828474,"y":0.567189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.39453,"y":125.723434,"z":-94.2637},"screenPosition":{"x":0.62650347,"y":0.55281067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.052826,"y":126.56664,"z":-95.73656},"screenPosition":{"x":0.6694714,"y":0.5689974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.112312,"y":126.28642,"z":-97.68002},"screenPosition":{"x":0.728859,"y":0.5713502},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-54.90946,"y":126.18519,"z":-100.29555},"screenPosition":{"x":0.80825,"y":0.5782812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.69079,"y":126.62865,"z":-102.35518},"screenPosition":{"x":0.84777147,"y":0.58769995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.655243,"y":125.91927,"z":-102.05446},"screenPosition":{"x":0.93114936,"y":0.59041244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.34883,"y":122.83508,"z":-103.771866},"screenPosition":{"x":0.9800995,"y":0.55230683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.93006,"y":120.038506,"z":-106.43117},"screenPosition":{"x":0.99101603,"y":0.511756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.393696,"y":118.11738,"z":-105.169235},"screenPosition":{"x":0.9724377,"y":0.47862503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.705006,"y":116.417305,"z":-104.17953},"screenPosition":{"x":0.9227353,"y":0.45416197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.189896,"y":115.67311,"z":-101.461945},"screenPosition":{"x":0.8717699,"y":0.42907727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.895744,"y":117.80066,"z":-100.072685},"screenPosition":{"x":0.8170682,"y":0.46326885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.08087,"y":120.52452,"z":-100.0107},"screenPosition":{"x":0.8102956,"y":0.50015676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.515835,"y":123.54638,"z":-100.15589},"screenPosition":{"x":0.8084044,"y":0.5418201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.156513,"y":125.43655,"z":-101.522194},"screenPosition":{"x":0.8468378,"y":0.57196426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.007477,"y":124.043045,"z":-103.80488},"screenPosition":{"x":0.8966613,"y":0.5570262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.715374,"y":124.17064,"z":-103.023674},"screenPosition":{"x":0.95555305,"y":0.5682524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.850124,"y":121.16553,"z":-105.82231},"screenPosition":{"x":1.0073429,"y":0.53053916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.02488,"y":119.79125,"z":-106.58288},"screenPosition":{"x":1.0103719,"y":0.5109292},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-58.044197,"y":116.90826,"z":-104.01567},"screenPosition":{"x":0.93266815,"y":0.4643139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.66522,"y":116.03109,"z":-102.80605},"screenPosition":{"x":0.9034404,"y":0.44466522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.69632,"y":117.55408,"z":-100.840004},"screenPosition":{"x":0.84047574,"y":0.462387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.739807,"y":120.17574,"z":-100.65482},"screenPosition":{"x":0.8298001,"y":0.4975027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.02918,"y":122.85708,"z":-100.69366},"screenPosition":{"x":0.825947,"y":0.5341366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.673813,"y":124.98558,"z":-102.04311},"screenPosition":{"x":0.8694235,"y":0.57411534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.861725,"y":125.55968,"z":-102.24289},"screenPosition":{"x":0.92707175,"y":0.58441293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.793087,"y":122.7226,"z":-103.84016},"screenPosition":{"x":0.9860606,"y":0.55175996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.21563,"y":119.70687,"z":-106.23609},"screenPosition":{"x":0.97865194,"y":0.50558484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.334736,"y":118.78129,"z":-105.05713},"screenPosition":{"x":0.96672773,"y":0.49238625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.35183,"y":117.35065,"z":-103.33233},"screenPosition":{"x":0.9172657,"y":0.46738327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.46741,"y":117.63944,"z":-101.55128},"screenPosition":{"x":0.86277944,"y":0.46566355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.445312,"y":118.064384,"z":-99.630196},"screenPosition":{"x":0.803417,"y":0.4654186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.793114,"y":119.69813,"z":-97.94977},"screenPosition":{"x":0.74975264,"y":0.48230875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.941494,"y":121.08529,"z":-97.03667},"screenPosition":{"x":0.7194254,"y":0.49833494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.594143,"y":122.114784,"z":-95.69237},"screenPosition":{"x":0.67673266,"y":0.50811034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.325516,"y":123.67205,"z":-94.376},"screenPosition":{"x":0.63356185,"y":0.5251887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.91921,"y":125.365456,"z":-92.91959},"screenPosition":{"x":0.58649665,"y":0.54365426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.22108,"y":127.56981,"z":-92.079185},"screenPosition":{"x":0.5567921,"y":0.5710622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.53877,"y":130.7275,"z":-91.17144},"screenPosition":{"x":0.5231509,"y":0.6112348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.06153,"y":133.94548,"z":-92.31353},"screenPosition":{"x":0.55157244,"y":0.65880436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.08525,"y":135.37547,"z":-92.21252},"screenPosition":{"x":0.54575175,"y":0.67799604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.12136,"y":137.90416,"z":-93.892365},"screenPosition":{"x":0.5917315,"y":0.71783924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.219486,"y":137.37271,"z":-96.33117},"screenPosition":{"x":0.65162736,"y":0.7199187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.20226,"y":135.44283,"z":-97.41322},"screenPosition":{"x":0.68110836,"y":0.69226533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.09905,"y":133.45265,"z":-98.910095},"screenPosition":{"x":0.7373745,"y":0.6708921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.57886,"y":130.77586,"z":-100.02991},"screenPosition":{"x":0.7693537,"y":0.6368997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.244766,"y":128.29591,"z":-99.494354},"screenPosition":{"x":0.7799137,"y":0.60453635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.148533,"y":127.23944,"z":-96.699776},"screenPosition":{"x":0.69732964,"y":0.5812379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.484478,"y":128.15819,"z":-95.069855},"screenPosition":{"x":0.64612484,"y":0.5885784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.540462,"y":130.30287,"z":-94.00543},"screenPosition":{"x":0.6098378,"y":0.6144773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.425335,"y":132.67732,"z":-92.76176},"screenPosition":{"x":0.5674015,"y":0.64281404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.740234,"y":134.78838,"z":-92.873474},"screenPosition":{"x":0.56684333,"y":0.6720446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.630753,"y":136.97653,"z":-94.44696},"screenPosition":{"x":0.6101321,"y":0.70680684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.317852,"y":135.21584,"z":-97.5405},"screenPosition":{"x":0.68532944,"y":0.6895283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.453278,"y":140.86414,"z":-87.423195},"screenPosition":{"x":0.3901337,"y":0.737669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.635723,"y":140.96568,"z":-85.72058},"screenPosition":{"x":0.338384,"y":0.73364365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.497513,"y":140.71815,"z":-83.74918},"screenPosition":{"x":0.27917013,"y":0.72400063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.81945,"y":138.68327,"z":-82.360504},"screenPosition":{"x":0.2410528,"y":0.69182086},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-34.486057,"y":132.99658,"z":-80.67549},"screenPosition":{"x":0.2010168,"y":0.6088696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.951324,"y":130.63927,"z":-82.244},"screenPosition":{"x":0.2530632,"y":0.5816884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.18588,"y":130.36761,"z":-84.34989},"screenPosition":{"x":0.31735286,"y":0.58467376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.50707,"y":131.10039,"z":-86.450035},"screenPosition":{"x":0.3795271,"y":0.6013477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.44532,"y":130.71765,"z":-87.35739},"screenPosition":{"x":0.40772915,"y":0.59898233},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-44.891693,"y":131.79126,"z":-90.476814},"screenPosition":{"x":0.5001195,"y":0.62357247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.879192,"y":132.26825,"z":-91.35605},"screenPosition":{"x":0.5258206,"y":0.6328753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.155087,"y":132.37964,"z":-93.46748},"screenPosition":{"x":0.5895376,"y":0.64110565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.63436,"y":132.97595,"z":-94.794754},"screenPosition":{"x":0.6285743,"y":0.6534606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.434296,"y":133.92136,"z":-96.39081},"screenPosition":{"x":0.67507523,"y":0.67143327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.505325,"y":134.84769,"z":-97.7469},"screenPosition":{"x":0.6923615,"y":0.68520504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.366547,"y":132.92735,"z":-99.20461},"screenPosition":{"x":0.7546526,"y":0.66969466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.713192,"y":131.10335,"z":-99.14376},"screenPosition":{"x":0.83246946,"y":0.6516456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.966972,"y":128.05002,"z":-101.55824},"screenPosition":{"x":0.82089543,"y":0.6045621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.330414,"y":126.25342,"z":-100.681984},"screenPosition":{"x":0.8192982,"y":0.5803873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.002487,"y":124.23567,"z":-99.61813},"screenPosition":{"x":0.79150444,"y":0.5495268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.16517,"y":123.14555,"z":-97.999695},"screenPosition":{"x":0.7446053,"y":0.52950835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.365234,"y":122.20016,"z":-96.40364},"screenPosition":{"x":0.6981044,"y":0.5115357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.47291,"y":122.01228,"z":-94.65626},"screenPosition":{"x":0.6453971,"y":0.5034385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.529537,"y":122.96498,"z":-92.76311},"screenPosition":{"x":0.5863952,"y":0.51040196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.559998,"y":125.679955,"z":-91.62579},"screenPosition":{"x":0.5466902,"y":0.5438327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.27033,"y":128.42952,"z":-92.05106},"screenPosition":{"x":0.55424577,"y":0.5826946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.63564,"y":130.59198,"z":-93.13729},"screenPosition":{"x":0.5829928,"y":0.61566323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.670765,"y":130.07375,"z":-96.0105},"screenPosition":{"x":0.6708461,"y":0.61768186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.46983,"y":126.396545,"z":-96.139824},"screenPosition":{"x":0.6817557,"y":0.56793064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.171383,"y":124.046844,"z":-95.132034},"screenPosition":{"x":0.65603435,"y":0.5326929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.629196,"y":123.87611,"z":-93.70949},"screenPosition":{"x":0.6132563,"y":0.5258437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.315914,"y":123.62,"z":-91.575676},"screenPosition":{"x":0.5490972,"y":0.51557547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.563423,"y":125.53461,"z":-89.777596},"screenPosition":{"x":0.49103338,"y":0.53597677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.07775,"y":127.892235,"z":-89.121994},"screenPosition":{"x":0.4666283,"y":0.5660636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.308804,"y":130.04549,"z":-88.219986},"screenPosition":{"x":0.4351349,"y":0.5925551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.64016,"y":131.9179,"z":-87.43564},"screenPosition":{"x":0.40778726,"y":0.6156237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.15053,"y":134.03719,"z":-86.79687},"screenPosition":{"x":0.38435602,"y":0.6425203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.918655,"y":136.93115,"z":-86.33161},"screenPosition":{"x":0.3646786,"y":0.6805334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.61317,"y":138.72739,"z":-86.82422},"screenPosition":{"x":0.3761274,"y":0.7065165},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-42.463333,"y":143.57942,"z":-87.19879},"screenPosition":{"x":0.3780941,"y":0.7740066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.281868,"y":146.5248,"z":-87.70804},"screenPosition":{"x":0.38782445,"y":0.8158153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.809223,"y":148.78914,"z":-88.00456},"screenPosition":{"x":0.39242902,"y":0.84765494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.585888,"y":150.96777,"z":-86.6769},"screenPosition":{"x":0.3480462,"y":0.87290144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.609608,"y":152.39778,"z":-86.57589},"screenPosition":{"x":0.35434058,"y":0.8972812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.415592,"y":154.66103,"z":-86.637924},"screenPosition":{"x":0.31772065,"y":0.9202568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.26107,"y":156.92818,"z":-85.366776},"screenPosition":{"x":0.27485228,"y":0.9471526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.02014,"y":157.46118,"z":-82.79475},"screenPosition":{"x":0.21792983,"y":0.94942963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.334167,"y":154.94963,"z":-81.439735},"screenPosition":{"x":0.17311434,"y":0.9081611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.086132,"y":152.65135,"z":-81.40645},"screenPosition":{"x":0.16734795,"y":0.8779105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.5639,"y":149.81705,"z":-82.095726},"screenPosition":{"x":0.21163525,"y":0.84271073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.170803,"y":147.56192,"z":-83.78744},"screenPosition":{"x":0.267109,"y":0.8175069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.250053,"y":148.47336,"z":-85.64673},"screenPosition":{"x":0.32164603,"y":0.8358528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.615368,"y":150.63582,"z":-86.732956},"screenPosition":{"x":0.35035893,"y":0.86881214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.757984,"y":153.78494,"z":-85.662796},"screenPosition":{"x":0.32647052,"y":0.9147671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.266323,"y":152.08995,"z":-82.554665},"screenPosition":{"x":0.22103545,"y":0.8753749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.48913,"y":149.52762,"z":-82.05096},"screenPosition":{"x":0.21073319,"y":0.83881056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.261497,"y":147.22902,"z":-81.10477},"screenPosition":{"x":0.18652341,"y":0.80443853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.568592,"y":134.63445,"z":-90.86286},"screenPosition":{"x":0.50629556,"y":0.66357356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.866695,"y":132.74524,"z":-92.23528},"screenPosition":{"x":0.55146956,"y":0.64214563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.668434,"y":131.69035,"z":-94.00524},"screenPosition":{"x":0.60715187,"y":0.6334091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.254402,"y":129.05185,"z":-94.778496},"screenPosition":{"x":0.6356619,"y":0.5998638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.14405,"y":126.617424,"z":-94.88525},"screenPosition":{"x":0.64338785,"y":0.56695986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.599716,"y":124.20806,"z":-93.653435},"screenPosition":{"x":0.61072856,"y":0.530199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.327774,"y":124.335,"z":-91.52517},"screenPosition":{"x":0.5462383,"y":0.52516365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.533306,"y":127.05855,"z":-90.55028},"screenPosition":{"x":0.5114162,"y":0.5592144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.45609,"y":129.9614,"z":-91.16035},"screenPosition":{"x":0.5243509,"y":0.6007758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.60616,"y":130.92393,"z":-93.08124},"screenPosition":{"x":0.5806362,"y":0.620007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.329174,"y":129.34128,"z":-94.823265},"screenPosition":{"x":0.6364078,"y":0.6039419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.751297,"y":128.60121,"z":-96.212326},"screenPosition":{"x":0.67984897,"y":0.5982509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.307148,"y":127.48666,"z":-97.75826},"screenPosition":{"x":0.72890973,"y":0.5879764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.817707,"y":125.750725,"z":-99.31549},"screenPosition":{"x":0.7794141,"y":0.5692382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.83254,"y":123.657135,"z":-100.44151},"screenPosition":{"x":0.81713176,"y":0.5442411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.834984,"y":120.46486,"z":-99.78668},"screenPosition":{"x":0.8038915,"y":0.49860886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.095173,"y":118.04724,"z":-99.30536},"screenPosition":{"x":0.7939874,"y":0.46409032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.752415,"y":118.12309,"z":-97.11549},"screenPosition":{"x":0.7275338,"y":0.45816565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.921196,"y":119.50993,"z":-95.28948},"screenPosition":{"x":0.6691402,"y":0.47138113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.234932,"y":122.42928,"z":-94.398575},"screenPosition":{"x":0.6369503,"y":0.50828993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.195103,"y":125.476845,"z":-95.03102},"screenPosition":{"x":0.65021366,"y":0.5518846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.136673,"y":126.52444,"z":-96.75028},"screenPosition":{"x":0.69980013,"y":0.5715928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.755436,"y":124.984314,"z":-98.39149},"screenPosition":{"x":0.75291663,"y":0.5558438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.482403,"y":123.64,"z":-100.11668},"screenPosition":{"x":0.8070966,"y":0.54297197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.61003,"y":120.78856,"z":-100.48112},"screenPosition":{"x":0.8237254,"y":0.5052719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.1082,"y":117.95394,"z":-100.257484},"screenPosition":{"x":0.82216686,"y":0.46597445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.292454,"y":116.05521,"z":-98.72877},"screenPosition":{"x":0.7803766,"y":0.43507603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.495308,"y":116.15644,"z":-96.11324},"screenPosition":{"x":0.7007205,"y":0.4282342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.584724,"y":118.207504,"z":-95.08804},"screenPosition":{"x":0.6659815,"y":0.45287406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.766533,"y":119.501045,"z":-94.21416},"screenPosition":{"x":0.63702255,"y":0.46774742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.002182,"y":120.70065,"z":-92.46658},"screenPosition":{"x":0.5817906,"y":0.4785623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.704075,"y":122.58987,"z":-91.09416},"screenPosition":{"x":0.53655535,"y":0.49998632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.188927,"y":125.27945,"z":-90.38251},"screenPosition":{"x":0.5097693,"y":0.53441834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.8953,"y":127.79069,"z":-90.82461},"screenPosition":{"x":0.51831967,"y":0.5700744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.427776,"y":129.48505,"z":-92.106926},"screenPosition":{"x":0.5539324,"y":0.5972842},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-50.5507,"y":129.16293,"z":-95.97702},"screenPosition":{"x":0.67173755,"y":0.6051885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.6999,"y":125.50287,"z":-96.43118},"screenPosition":{"x":0.6923641,"y":0.55667645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.345284,"y":124.863716,"z":-94.291824},"screenPosition":{"x":0.6289885,"y":0.54116845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.89549,"y":123.935455,"z":-93.0206},"screenPosition":{"x":0.59231734,"y":0.5244626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.37702,"y":125.19472,"z":-91.49705},"screenPosition":{"x":0.5437532,"y":0.53680354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.104443,"y":126.51365,"z":-90.19751},"screenPosition":{"x":0.50184304,"y":0.55066884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.989315,"y":128.88809,"z":-88.953835},"screenPosition":{"x":0.45961303,"y":0.57911795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.895756,"y":130.45393,"z":-87.79988},"screenPosition":{"x":0.42164552,"y":0.5968131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.15565,"y":133.46722,"z":-87.78266},"screenPosition":{"x":0.41530597,"y":0.6378789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.720394,"y":135.87627,"z":-88.10156},"screenPosition":{"x":0.42030874,"y":0.6717643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.772953,"y":138.1663,"z":-88.88534},"screenPosition":{"x":0.43961725,"y":0.7055033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.854992,"y":140.12437,"z":-89.72517},"screenPosition":{"x":0.46117416,"y":0.73466724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.512653,"y":142.15958,"z":-92.02676},"screenPosition":{"x":0.52702284,"y":0.76997626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.50024,"y":140.74881,"z":-94.43825},"screenPosition":{"x":0.5814761,"y":0.7556523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.209797,"y":136.90831,"z":-94.060524},"screenPosition":{"x":0.5987468,"y":0.7047849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.87001,"y":134.17555,"z":-93.04718},"screenPosition":{"x":0.57325023,"y":0.6642139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.873436,"y":134.03021,"z":-91.19899},"screenPosition":{"x":0.5176615,"y":0.65641844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.926105,"y":134.74457,"z":-89.32267},"screenPosition":{"x":0.45946848,"y":0.660203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.62405,"y":136.39546,"z":-87.96708},"screenPosition":{"x":0.41521743,"y":0.6783534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.680035,"y":138.54015,"z":-86.90266},"screenPosition":{"x":0.37886202,"y":0.70424974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.269135,"y":141.18721,"z":-86.29182},"screenPosition":{"x":0.35526368,"y":0.738395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.479786,"y":143.34077,"z":-86.30272},"screenPosition":{"x":0.35146597,"y":0.7675651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.384953,"y":147.29057,"z":-86.80623},"screenPosition":{"x":0.35903925,"y":0.8233985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.98429,"y":148.7977,"z":-88.16698},"screenPosition":{"x":0.39732835,"y":0.84825027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.83669,"y":132.69351,"z":-90.34787},"screenPosition":{"x":0.494416,"y":0.6354242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.89222,"y":132.17494,"z":-92.308174},"screenPosition":{"x":0.55483025,"y":0.6346281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.56633,"y":133.9715,"z":-93.71369},"screenPosition":{"x":0.5937134,"y":0.66348654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.29033,"y":135.43578,"z":-94.26235},"screenPosition":{"x":0.60770226,"y":0.6853334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.544838,"y":138.69753,"z":-95.58837},"screenPosition":{"x":0.6210286,"y":0.73186916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.86258,"y":140.03728,"z":-94.8372},"screenPosition":{"x":0.6081038,"y":0.7561858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.3055,"y":142.8658,"z":-93.63231},"screenPosition":{"x":0.5593858,"y":0.7825632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.25501,"y":145.1578,"z":-91.96621},"screenPosition":{"x":0.49741244,"y":0.8075172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.937378,"y":146.32138,"z":-90.20036},"screenPosition":{"x":0.47118524,"y":0.8239723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.266582,"y":145.95515,"z":-89.60674},"screenPosition":{"x":0.44641566,"y":0.81407654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.53997,"y":130.62308,"z":-84.65789},"screenPosition":{"x":0.32618558,"y":0.5891382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.38559,"y":146.09859,"z":-85.97749},"screenPosition":{"x":0.3362485,"y":0.80449975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.861797,"y":130.16386,"z":-85.929306},"screenPosition":{"x":0.36556998,"y":0.58690995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.081837,"y":148.1741,"z":-81.78792},"screenPosition":{"x":0.20538297,"y":0.8195055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.228703,"y":146.13065,"z":-80.23682},"screenPosition":{"x":0.14974596,"y":0.7855701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.510468,"y":142.9044,"z":-79.84522},"screenPosition":{"x":0.1412478,"y":0.74098855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.596756,"y":139.66992,"z":-80.20411},"screenPosition":{"x":0.17385355,"y":0.6984308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.199703,"y":137.17647,"z":-81.91266},"screenPosition":{"x":0.23040308,"y":0.6698369},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-41.15122,"y":142.51501,"z":-86.067604},"screenPosition":{"x":0.34589893,"y":0.75588745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.51728,"y":141.90982,"z":-83.66501},"screenPosition":{"x":0.27431956,"y":0.7399937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.65839,"y":141.62833,"z":-81.95685},"screenPosition":{"x":0.2231418,"y":0.7307239},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-36.637936,"y":131.95883,"z":-82.77029},"screenPosition":{"x":0.26644954,"y":0.6013667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.619446,"y":128.38318,"z":-81.197},"screenPosition":{"x":0.22571862,"y":0.5475762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.618093,"y":133.04672,"z":-77.998375},"screenPosition":{"x":0.1145727,"y":0.60105056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.68647,"y":136.29008,"z":-78.714806},"screenPosition":{"x":0.12346316,"y":0.64769006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.01044,"y":138.0695,"z":-79.79549},"screenPosition":{"x":0.16457212,"y":0.675294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.32489,"y":137.5173,"z":-82.93193},"screenPosition":{"x":0.2606073,"y":0.6777271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.32786,"y":134.70871,"z":-84.10846},"screenPosition":{"x":0.30165654,"y":0.64314234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.42601,"y":132.18922,"z":-84.41685},"screenPosition":{"x":0.31588423,"y":0.60971695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.57852,"y":129.95949,"z":-85.6829},"screenPosition":{"x":0.3585028,"y":0.5833419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.551376,"y":128.67484,"z":-87.63211},"screenPosition":{"x":0.4200044,"y":0.5720073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.026062,"y":130.2248,"z":-89.80495},"screenPosition":{"x":0.48280197,"y":0.60006243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.721745,"y":131.21272,"z":-91.300186},"screenPosition":{"x":0.52610767,"y":0.61826056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.298344,"y":134.33678,"z":-91.56859},"screenPosition":{"x":0.52815354,"y":0.6616846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.033035,"y":137.32436,"z":-91.06411},"screenPosition":{"x":0.50721467,"y":0.7009392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.32188,"y":139.62201,"z":-89.27158},"screenPosition":{"x":0.44850045,"y":0.72659427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.780334,"y":138.25928,"z":-87.02031},"screenPosition":{"x":0.38296625,"y":0.7008448},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-33.90731,"y":127.63391,"z":-80.59783},"screenPosition":{"x":0.20902373,"y":0.53544796},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-224613/brain-CB31D8-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.6626800691993084,0.4781133592820772,-0.5764223638635183,0.0,0.3128429839860276,0.8760458381011687,0.36697814228689296,0.0,0.6804295652429552,0.06285940837796922,-0.7301125266160373,0.0,27.43694387137564,132.56186977777,-158.34348710688715,1.0]},"baseImage":"20190823-224613/base.webp","version":0,"savedAt":1.566600624213E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-225754-v0.json b/data/mapping/BAAAHS/dwayman/20190823-225754-v0.json new file mode 100644 index 0000000000..f08e41813f --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-225754-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566601074705E12,"surfaces":[{"brainId":"C78370","panelName":"3D","pixels":[{"modelPosition":{"x":-20.50365,"y":88.86563,"z":-72.20567},"screenPosition":{"x":0.23168302,"y":0.9804057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.238947,"y":87.471565,"z":-72.06617},"screenPosition":{"x":0.2293248,"y":0.9512138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.017708,"y":86.31603,"z":-73.57217},"screenPosition":{"x":0.26721513,"y":0.9276755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.651264,"y":85.32278,"z":-74.97947},"screenPosition":{"x":0.29530847,"y":0.9030711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.121471,"y":84.09593,"z":-76.12723},"screenPosition":{"x":0.3152905,"y":0.8778032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.671087,"y":82.9364,"z":-77.38465},"screenPosition":{"x":0.33847916,"y":0.85242397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.16397,"y":82.20438,"z":-78.733475},"screenPosition":{"x":0.36675727,"y":0.8308252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.854256,"y":80.78361,"z":-80.04938},"screenPosition":{"x":0.38976115,"y":0.8024403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.408405,"y":79.72304,"z":-81.347015},"screenPosition":{"x":0.41464788,"y":0.77794725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.86501,"y":78.19932,"z":-82.37413},"screenPosition":{"x":0.42953566,"y":0.7500208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.391945,"y":76.544975,"z":-83.43049},"screenPosition":{"x":0.4442013,"y":0.72016335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.84855,"y":75.02125,"z":-84.4576},"screenPosition":{"x":0.45890206,"y":0.6920256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.547905,"y":73.79841,"z":-85.85393},"screenPosition":{"x":0.48498285,"y":0.6646004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.061237,"y":71.84718,"z":-86.78964},"screenPosition":{"x":0.49462348,"y":0.63222253},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-44.666576,"y":62.252594,"z":-87.2535},"screenPosition":{"x":0.43897015,"y":0.5086639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.626827,"y":61.72649,"z":-89.17989},"screenPosition":{"x":0.48335287,"y":0.48539928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.119713,"y":60.99446,"z":-90.528725},"screenPosition":{"x":0.5118253,"y":0.4645623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.87126,"y":59.24516,"z":-91.793434},"screenPosition":{"x":0.5308505,"y":0.43179518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.146378,"y":57.092007,"z":-92.400154},"screenPosition":{"x":0.53103334,"y":0.39962485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.230396,"y":53.929226,"z":-91.361885},"screenPosition":{"x":0.48291844,"y":0.36916047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.57647,"y":52.81263,"z":-89.17954},"screenPosition":{"x":0.42067397,"y":0.37415746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.985962,"y":56.410557,"z":-88.748344},"screenPosition":{"x":0.43510914,"y":0.4228392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.50375,"y":57.887344,"z":-90.91242},"screenPosition":{"x":0.49954385,"y":0.4224569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.488983,"y":56.241005,"z":-92.46591},"screenPosition":{"x":0.5265893,"y":0.38846952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.587143,"y":53.55739,"z":-92.692444},"screenPosition":{"x":0.5134681,"y":0.35297716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.852654,"y":51.024033,"z":-92.07458},"screenPosition":{"x":0.47999266,"y":0.32691655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.62981,"y":49.32167,"z":-90.148094},"screenPosition":{"x":0.42027116,"y":0.32218802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.362152,"y":46.811966,"z":-88.96363},"screenPosition":{"x":0.3729874,"y":0.30135545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.62366,"y":44.361927,"z":-89.44971},"screenPosition":{"x":0.36785096,"y":0.2666795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.10801,"y":43.61425,"z":-91.86227},"screenPosition":{"x":0.4226236,"y":0.23649478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.500187,"y":45.478287,"z":-94.464035},"screenPosition":{"x":0.48437092,"y":0.24657829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.938274,"y":48.408085,"z":-94.46878},"screenPosition":{"x":0.5301394,"y":0.2677421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.827045,"y":50.977093,"z":-95.26577},"screenPosition":{"x":0.55923957,"y":0.29859468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.710743,"y":53.264866,"z":-94.87839},"screenPosition":{"x":0.56549084,"y":0.33056882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.356224,"y":55.350708,"z":-94.162},"screenPosition":{"x":0.5623549,"y":0.36274952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.081112,"y":57.50386,"z":-93.55528},"screenPosition":{"x":0.5626526,"y":0.39476344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.4793,"y":59.189857,"z":-92.42948},"screenPosition":{"x":0.5462066,"y":0.4256106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.12078,"y":61.359016,"z":-92.81704},"screenPosition":{"x":0.57142395,"y":0.44926053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.34478,"y":64.41083,"z":-93.06939},"screenPosition":{"x":0.599155,"y":0.48515764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.781105,"y":61.762146,"z":-89.35902},"screenPosition":{"x":0.48802173,"y":0.48428887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.566708,"y":59.090534,"z":-90.33125},"screenPosition":{"x":0.4934509,"y":0.44252512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.306885,"y":58.758354,"z":-92.08951},"screenPosition":{"x":0.5348688,"y":0.4231446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.9359,"y":57.66613,"z":-93.4566},"screenPosition":{"x":0.56131595,"y":0.39764905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.61712,"y":56.047443,"z":-94.69207},"screenPosition":{"x":0.58053356,"y":0.3668084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.214394,"y":54.26249,"z":-95.777664},"screenPosition":{"x":0.5947644,"y":0.335262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.550236,"y":51.59852,"z":-95.18903},"screenPosition":{"x":0.56192255,"y":0.3068723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.266132,"y":50.224693,"z":-93.313736},"screenPosition":{"x":0.5055226,"y":0.3059954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.521423,"y":50.457912,"z":-91.515274},"screenPosition":{"x":0.46220133,"y":0.3246189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.033073,"y":51.288906,"z":-90.20666},"screenPosition":{"x":0.43556178,"y":0.346231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.78241,"y":52.139545,"z":-88.082886},"screenPosition":{"x":0.38860792,"y":0.375271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.983276,"y":51.185223,"z":-85.80186},"screenPosition":{"x":0.32504448,"y":0.38314924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.589165,"y":46.086857,"z":-84.63557},"screenPosition":{"x":0.26013044,"y":0.3296394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.95729,"y":44.2979,"z":-85.472595},"screenPosition":{"x":0.26841548,"y":0.30005196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.20342,"y":43.348297,"z":-87.55615},"screenPosition":{"x":0.31367126,"y":0.27012578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.181812,"y":43.218044,"z":-89.6434},"screenPosition":{"x":0.3646173,"y":0.25081083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.685993,"y":44.397945,"z":-91.68684},"screenPosition":{"x":0.4240069,"y":0.24739116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.407413,"y":46.81669,"z":-93.328224},"screenPosition":{"x":0.48192328,"y":0.26333788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.870052,"y":42.053066,"z":-82.42021},"screenPosition":{"x":0.17655335,"y":0.2985162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.263706,"y":43.6401,"z":-81.254196},"screenPosition":{"x":0.15864849,"y":0.32843775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.922794,"y":46.02283,"z":-80.658455},"screenPosition":{"x":0.16055194,"y":0.36334231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.450813,"y":49.046993,"z":-81.22882},"screenPosition":{"x":0.19602995,"y":0.3961358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.56873,"y":51.620003,"z":-82.274376},"screenPosition":{"x":0.24018002,"y":0.41917664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.333275,"y":53.31436,"z":-83.70372},"screenPosition":{"x":0.28771833,"y":0.4279225},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-46.951374,"y":57.15059,"z":-87.89666},"screenPosition":{"x":0.4191274,"y":0.43944293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.79371,"y":54.051476,"z":-88.7775},"screenPosition":{"x":0.4193629,"y":0.39310607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.91908,"y":51.96163,"z":-89.24531},"screenPosition":{"x":0.41623294,"y":0.36304605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.41827,"y":49.53124,"z":-88.91622},"screenPosition":{"x":0.39101443,"y":0.33552244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.85166,"y":47.330425,"z":-88.598114},"screenPosition":{"x":0.36763862,"y":0.3107836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.954357,"y":44.74577,"z":-88.86485},"screenPosition":{"x":0.35609183,"y":0.27627262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.626503,"y":42.92916,"z":-90.0199},"screenPosition":{"x":0.37202075,"y":0.24379553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.32355,"y":42.454952,"z":-93.19442},"screenPosition":{"x":0.43311203,"y":0.21873933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.01072,"y":44.387398,"z":-94.28875},"screenPosition":{"x":0.48417354,"y":0.22671476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.164692,"y":47.02285,"z":-95.39548},"screenPosition":{"x":0.5310717,"y":0.2494682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.734673,"y":49.491795,"z":-96.14947},"screenPosition":{"x":0.55623925,"y":0.2809236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.864864,"y":51.7202,"z":-97.085266},"screenPosition":{"x":0.5977433,"y":0.29889905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.592747,"y":54.020905,"z":-95.02097},"screenPosition":{"x":0.5746172,"y":0.3386303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.736885,"y":53.49408,"z":-92.83135},"screenPosition":{"x":0.51640785,"y":0.35102284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.244614,"y":51.079338,"z":-91.43853},"screenPosition":{"x":0.46479243,"y":0.33292896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.865803,"y":47.80959,"z":-89.86291},"screenPosition":{"x":0.40253216,"y":0.30579126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.56916,"y":46.503437,"z":-90.1553},"screenPosition":{"x":0.4006366,"y":0.28695402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.22663,"y":44.025387,"z":-88.90138},"screenPosition":{"x":0.3518498,"y":0.2672165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.350933,"y":41.570984,"z":-87.08088},"screenPosition":{"x":0.28931576,"y":0.25231138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.49507,"y":41.04416,"z":-84.89125},"screenPosition":{"x":0.23110463,"y":0.26474458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.292065,"y":41.269375,"z":-82.59564},"screenPosition":{"x":0.17555791,"y":0.2874806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.23196,"y":42.947365,"z":-80.972694},"screenPosition":{"x":0.14688706,"y":0.322384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.863834,"y":44.736324,"z":-80.13567},"screenPosition":{"x":0.13853805,"y":0.3518775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.82694,"y":47.091404,"z":-79.857956},"screenPosition":{"x":0.14817654,"y":0.38366926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.892128,"y":50.008602,"z":-79.89097},"screenPosition":{"x":0.16944514,"y":0.41974267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.318066,"y":52.470646,"z":-80.150604},"screenPosition":{"x":0.19322616,"y":0.44821662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.272633,"y":54.810078,"z":-80.936615},"screenPosition":{"x":0.22926493,"y":0.47059396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.597023,"y":56.89228,"z":-82.02967},"screenPosition":{"x":0.27114838,"y":0.48709717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.45458,"y":58.950832,"z":-83.68932},"screenPosition":{"x":0.3269853,"y":0.4983896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.118736,"y":61.614803,"z":-84.277954},"screenPosition":{"x":0.36037534,"y":0.5265228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.038715,"y":64.69427,"z":-84.21228},"screenPosition":{"x":0.38034117,"y":0.5654803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.0943,"y":67.23126,"z":-83.020706},"screenPosition":{"x":0.36853907,"y":0.6075305},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-32.26974,"y":68.19979,"z":-76.00597},"screenPosition":{"x":0.2005082,"y":0.6804715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.513655,"y":69.850136,"z":-74.70104},"screenPosition":{"x":0.17137605,"y":0.7108488},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-28.206182,"y":74.45733,"z":-73.85682},"screenPosition":{"x":0.18675762,"y":0.77464986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.398436,"y":76.81641,"z":-73.82767},"screenPosition":{"x":0.19403574,"y":0.80483866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.74043,"y":79.11218,"z":-73.93742},"screenPosition":{"x":0.22567141,"y":0.83460283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.32118,"y":81.79216,"z":-75.52033},"screenPosition":{"x":0.28396687,"y":0.85431695},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-30.749332,"y":81.65426,"z":-79.16845},"screenPosition":{"x":0.37392557,"y":0.8209481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.525331,"y":78.60245,"z":-78.91611},"screenPosition":{"x":0.34617972,"y":0.78505063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.853266,"y":77.090004,"z":-76.572914},"screenPosition":{"x":0.27714294,"y":0.7865029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.902084,"y":77.81403,"z":-74.726944},"screenPosition":{"x":0.2362939,"y":0.81096786},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-25.263382,"y":81.8551,"z":-73.32342},"screenPosition":{"x":0.21024066,"y":0.8720549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.965591,"y":83.51345,"z":-72.51563},"screenPosition":{"x":0.21651605,"y":0.89808446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.270697,"y":85.097725,"z":-72.766594},"screenPosition":{"x":0.2237607,"y":0.9281345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.296808,"y":87.17436,"z":-72.45745},"screenPosition":{"x":0.23065537,"y":0.9567328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.946564,"y":90.05352,"z":-72.02883},"screenPosition":{"x":0.24021448,"y":0.9963829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.822678,"y":91.96289,"z":-73.77582},"screenPosition":{"x":0.30419374,"y":0.99116385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.533045,"y":88.78213,"z":-75.44314},"screenPosition":{"x":0.33140785,"y":0.95885026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.972511,"y":88.18687,"z":-76.783165},"screenPosition":{"x":0.3455911,"y":0.93184274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.051058,"y":87.5556,"z":-77.28613},"screenPosition":{"x":0.37636948,"y":0.9117693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.530336,"y":86.52669,"z":-78.51432},"screenPosition":{"x":0.4061523,"y":0.8923451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.075417,"y":85.268196,"z":-79.73153},"screenPosition":{"x":0.4133684,"y":0.86116517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.686295,"y":83.78012,"z":-80.93777},"screenPosition":{"x":0.43297133,"y":0.83212984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.405563,"y":81.15581,"z":-80.776825},"screenPosition":{"x":0.41047484,"y":0.8006914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.60074,"y":78.75307,"z":-80.129715},"screenPosition":{"x":0.3773508,"y":0.77599686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.888924,"y":76.71452,"z":-79.71291},"screenPosition":{"x":0.3527667,"y":0.754577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.056885,"y":73.71802,"z":-78.824524},"screenPosition":{"x":0.30949825,"y":0.72444993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.29234,"y":72.02366,"z":-77.39518},"screenPosition":{"x":0.26201817,"y":0.7161416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.598667,"y":70.38096,"z":-77.13924},"screenPosition":{"x":0.24413007,"y":0.6975869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.278812,"y":68.39772,"z":-76.086395},"screenPosition":{"x":0.20391726,"y":0.6822075},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-33.361137,"y":63.70321,"z":-75.5781},"screenPosition":{"x":0.15122516,"y":0.62726516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.4071,"y":61.54605,"z":-75.93625},"screenPosition":{"x":0.14407721,"y":0.59761626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.598274,"y":59.226627,"z":-76.39308},"screenPosition":{"x":0.13628127,"y":0.5652796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.027664,"y":57.10913,"z":-77.17892},"screenPosition":{"x":0.15176935,"y":0.5318846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.77468,"y":55.260868,"z":-78.40342},"screenPosition":{"x":0.1692951,"y":0.49819562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.76952,"y":53.99473,"z":-81.181496},"screenPosition":{"x":0.22964323,"y":0.45829695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.22543,"y":58.94683,"z":-83.44075},"screenPosition":{"x":0.32076377,"y":0.5004969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.50616,"y":61.571144,"z":-83.6017},"screenPosition":{"x":0.3432258,"y":0.5318521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.865765,"y":64.08049,"z":-82.72815},"screenPosition":{"x":0.3390536,"y":0.57068485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.78298,"y":65.26367,"z":-80.90413},"screenPosition":{"x":0.30195066,"y":0.6013365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.580513,"y":65.671165,"z":-79.752686},"screenPosition":{"x":0.27611616,"y":0.6164109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.316242,"y":66.224915,"z":-77.50827},"screenPosition":{"x":0.22406806,"y":0.64279234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.99185,"y":64.142715,"z":-76.415215},"screenPosition":{"x":0.18218474,"y":0.6262889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.974323,"y":60.60009,"z":-76.210365},"screenPosition":{"x":0.14076386,"y":0.5838729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.514866,"y":59.242638,"z":-77.38736},"screenPosition":{"x":0.17196465,"y":0.55670244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.2369,"y":58.514606,"z":-78.98476},"screenPosition":{"x":0.20666075,"y":0.53375906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.93172,"y":57.192806,"z":-80.34087},"screenPosition":{"x":0.23116837,"y":0.5054985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.649216,"y":56.365818,"z":-81.898056},"screenPosition":{"x":0.26416644,"y":0.48166895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.697945,"y":56.104946,"z":-84.01454},"screenPosition":{"x":0.31508505,"y":0.46005252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.71262,"y":56.766388,"z":-86.4235},"screenPosition":{"x":0.37977695,"y":0.44740957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.78911,"y":61.595516,"z":-87.15112},"screenPosition":{"x":0.43186554,"y":0.5013645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.980293,"y":63.590042,"z":-84.83366},"screenPosition":{"x":0.3881262,"y":0.5463605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.004208,"y":62.10525,"z":-82.17244},"screenPosition":{"x":0.31133857,"y":0.55087733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.658836,"y":61.059967,"z":-80.348335},"screenPosition":{"x":0.25854298,"y":0.5536959},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-38.540997,"y":55.157906,"z":-78.11463},"screenPosition":{"x":0.16139916,"y":0.49941096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.494484,"y":52.818832,"z":-79.386635},"screenPosition":{"x":0.17663237,"y":0.45918953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.625458,"y":51.192505,"z":-82.182976},"screenPosition":{"x":0.23490609,"y":0.41464922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.9799,"y":52.43571,"z":-84.08751},"screenPosition":{"x":0.29110658,"y":0.41362754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.463634,"y":54.83481,"z":-86.54405},"screenPosition":{"x":0.36919424,"y":0.42226228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.370544,"y":57.799667,"z":-87.5019},"screenPosition":{"x":0.41391605,"y":0.45095038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.599083,"y":60.950443,"z":-87.79446},"screenPosition":{"x":0.44336507,"y":0.48773304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.016575,"y":64.38174,"z":-85.155365},"screenPosition":{"x":0.40161902,"y":0.5533942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.271942,"y":61.285904,"z":-82.168755},"screenPosition":{"x":0.30550477,"y":0.54072326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.93395,"y":58.906815,"z":-80.955055},"screenPosition":{"x":0.2585272,"y":0.5215612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.2063,"y":54.857376,"z":-79.80343},"screenPosition":{"x":0.20135325,"y":0.48101476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.085983,"y":52.914513,"z":-83.2943},"screenPosition":{"x":0.27470246,"y":0.4264869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.052998,"y":54.201378,"z":-85.875084},"screenPosition":{"x":0.34807518,"y":0.4201556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.448257,"y":56.335243,"z":-88.14154},"screenPosition":{"x":0.41950879,"y":0.4271454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.849213,"y":59.917522,"z":-88.77407},"screenPosition":{"x":0.4604876,"y":0.4663459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.85767,"y":63.262222,"z":-88.89849},"screenPosition":{"x":0.48713604,"y":0.5070064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.76582,"y":64.24748,"z":-86.99405},"screenPosition":{"x":0.4465954,"y":0.5358237},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-37.87146,"y":65.5289,"z":-81.09422},"screenPosition":{"x":0.30854616,"y":0.60296905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.64292,"y":62.378128,"z":-80.80167},"screenPosition":{"x":0.2791095,"y":0.56621385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.30799,"y":44.265163,"z":-79.36801},"screenPosition":{"x":0.11603066,"y":0.35260138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.129345,"y":42.202972,"z":-79.51781},"screenPosition":{"x":0.105265625,"y":0.32556576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.0301,"y":40.208084,"z":-79.77726},"screenPosition":{"x":0.09770719,"y":0.2984188},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-46.799873,"y":35.525578,"z":-80.01468},"screenPosition":{"x":0.058206152,"y":0.24143274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.770966,"y":33.400078,"z":-80.303375},"screenPosition":{"x":0.051261533,"y":0.21262725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.96214,"y":31.080654,"z":-80.76021},"screenPosition":{"x":0.043456182,"y":0.18025152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.223644,"y":28.630615,"z":-81.246284},"screenPosition":{"x":0.03520451,"y":0.14602453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.535576,"y":27.451435,"z":-83.31887},"screenPosition":{"x":0.0962934,"y":0.10849205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.76356,"y":26.105986,"z":-85.24158},"screenPosition":{"x":0.14434737,"y":0.072901346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.96924,"y":26.561228,"z":-86.80282},"screenPosition":{"x":0.16535391,"y":0.073904626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.822544,"y":29.02772,"z":-87.80031},"screenPosition":{"x":0.23652485,"y":0.07906534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.30961,"y":32.387043,"z":-89.24931},"screenPosition":{"x":0.26729116,"y":0.1253871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.139454,"y":34.13755,"z":-87.43516},"screenPosition":{"x":0.24589814,"y":0.15622543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.585308,"y":35.19812,"z":-86.13752},"screenPosition":{"x":0.22101142,"y":0.18071848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.241096,"y":35.50229,"z":-82.63928},"screenPosition":{"x":0.13595739,"y":0.21486215},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-51.351246,"y":28.254776,"z":-82.32828},"screenPosition":{"x":0.07725122,"y":0.12711123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.313267,"y":25.93135,"z":-82.536545},"screenPosition":{"x":0.06610707,"y":0.09630816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.055214,"y":23.801847,"z":-82.576675},"screenPosition":{"x":0.05213543,"y":0.06938389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.849354,"y":21.145882,"z":-82.48518},"screenPosition":{"x":0.031181915,"y":0.03703116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.603794,"y":20.306189,"z":-84.17608},"screenPosition":{"x":0.05590634,"y":0.01862912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.665455,"y":21.470076,"z":-84.737076},"screenPosition":{"x":0.10896043,"y":0.010194911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.153667,"y":24.765516,"z":-85.84729},"screenPosition":{"x":0.15504587,"y":0.044476178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.438324,"y":27.303226,"z":-86.8316},"screenPosition":{"x":0.17760871,"y":0.07827475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.12877,"y":29.078846,"z":-86.696556},"screenPosition":{"x":0.1975309,"y":0.099761195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.686306,"y":31.081736,"z":-86.93424},"screenPosition":{"x":0.21205556,"y":0.12313096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.808224,"y":33.57143,"z":-86.875854},"screenPosition":{"x":0.22806792,"y":0.15461375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.39751,"y":36.267056,"z":-87.395035},"screenPosition":{"x":0.25986978,"y":0.1831497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.981724,"y":38.68144,"z":-86.72984},"screenPosition":{"x":0.2602647,"y":0.21905181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.668022,"y":41.65794,"z":-86.37538},"screenPosition":{"x":0.27236006,"y":0.25945044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.498,"y":40.59629,"z":-81.498985},"screenPosition":{"x":0.14334998,"y":0.2883274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.68241,"y":36.463898,"z":-81.30143},"screenPosition":{"x":0.109372586,"y":0.23846902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.966595,"y":34.508667,"z":-81.98857},"screenPosition":{"x":0.112752944,"y":0.20810673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.07836,"y":32.121937,"z":-82.33575},"screenPosition":{"x":0.10462585,"y":0.17530859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.643353,"y":29.461967,"z":-81.99568},"screenPosition":{"x":0.07744867,"y":0.14506228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.455635,"y":27.201849,"z":-82.06505},"screenPosition":{"x":0.06328748,"y":0.11625429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.968433,"y":25.068346,"z":-81.856606},"screenPosition":{"x":0.043092176,"y":0.09143646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.687702,"y":22.444033,"z":-81.695656},"screenPosition":{"x":0.015626851,"y":0.064818576},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-57.219795,"y":19.782413,"z":-83.89351},"screenPosition":{"x":0.073726125,"y":-0.0021764745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.070675,"y":22.564436,"z":-84.94069},"screenPosition":{"x":0.11728202,"y":0.024691219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.91635,"y":25.656006,"z":-86.42268},"screenPosition":{"x":0.1495148,"y":0.06590522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.382366,"y":27.780336,"z":-85.42807},"screenPosition":{"x":0.1511769,"y":0.09429915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.247925,"y":29.672258,"z":-84.87983},"screenPosition":{"x":0.1508136,"y":0.122666374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.21103,"y":32.027336,"z":-84.60211},"screenPosition":{"x":0.16055128,"y":0.15475078},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-46.890575,"y":37.504818,"z":-80.818954},"screenPosition":{"x":0.104665354,"y":0.25564525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.69087,"y":39.808598,"z":-81.42585},"screenPosition":{"x":0.13618456,"y":0.2794073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.12134,"y":42.369602,"z":-81.72569},"screenPosition":{"x":0.16146809,"y":0.3084916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.459335,"y":44.74869,"z":-82.93939},"screenPosition":{"x":0.20844565,"y":0.32765362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.867664,"y":46.997166,"z":-84.182335},"screenPosition":{"x":0.25523368,"y":0.3449319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.156307,"y":48.469948,"z":-86.09784},"screenPosition":{"x":0.31333166,"y":0.346695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.562943,"y":49.186695,"z":-87.87075},"screenPosition":{"x":0.36256018,"y":0.3402597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.44548,"y":50.12501,"z":-89.1575},"screenPosition":{"x":0.401229,"y":0.3408072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.246307,"y":52.611065,"z":-90.908554},"screenPosition":{"x":0.46235195,"y":0.35664254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.69439,"y":55.385643,"z":-90.2251},"screenPosition":{"x":0.46482405,"y":0.3971983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.743206,"y":56.10967,"z":-88.379135},"screenPosition":{"x":0.42385724,"y":0.42226574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.493156,"y":53.813534,"z":-86.21137},"screenPosition":{"x":0.35369712,"y":0.4124259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.67162,"y":53.905937,"z":-93.98648},"screenPosition":{"x":0.54817206,"y":0.3461011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.770863,"y":55.90082,"z":-93.72703},"screenPosition":{"x":0.5557305,"y":0.37324807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.81284,"y":58.14093,"z":-92.41482},"screenPosition":{"x":0.53860027,"y":0.41263106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.68017,"y":58.23553,"z":-90.148445},"screenPosition":{"x":0.48295006,"y":0.4334298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.366013,"y":57.700703,"z":-87.461685},"screenPosition":{"x":0.4122231,"y":0.4500632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.15224,"y":56.196266,"z":-85.61563},"screenPosition":{"x":0.35563362,"y":0.44730258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.092747,"y":54.72748,"z":-83.94869},"screenPosition":{"x":0.30375928,"y":0.44343308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.183,"y":53.195393,"z":-82.420654},"screenPosition":{"x":0.2549061,"y":0.43757603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.98114,"y":50.456112,"z":-81.22522},"screenPosition":{"x":0.20586453,"y":0.4137684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.924488,"y":47.55456,"z":-80.12848},"screenPosition":{"x":0.15811144,"y":0.3870559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.7277,"y":45.09652,"z":-80.11741},"screenPosition":{"x":0.14055409,"y":0.35647553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.311367,"y":43.014675,"z":-81.08237},"screenPosition":{"x":0.15007955,"y":0.32225925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.56203,"y":42.164036,"z":-83.20614},"screenPosition":{"x":0.1969224,"y":0.2930831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.377075,"y":41.8002,"z":-85.033844},"screenPosition":{"x":0.23991935,"y":0.2726869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.405354,"y":42.758526,"z":-87.56344},"screenPosition":{"x":0.3096738,"y":0.2629143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.48015,"y":46.055927,"z":-88.821045},"screenPosition":{"x":0.3641646,"y":0.2930912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.633812,"y":49.238358,"z":-89.04415},"screenPosition":{"x":0.39208648,"y":0.33083105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.190815,"y":51.058968,"z":-88.13767},"screenPosition":{"x":0.38237637,"y":0.3613101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.66157,"y":54.328354,"z":-87.65529},"screenPosition":{"x":0.39333886,"y":0.40629676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.361553,"y":54.27269,"z":-86.23332},"screenPosition":{"x":0.35748452,"y":0.41795322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.21021,"y":53.789165,"z":-82.66194},"screenPosition":{"x":0.26509044,"y":0.44288558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.77013,"y":50.847958,"z":-81.137505},"screenPosition":{"x":0.20641588,"y":0.41940397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.207523,"y":48.563828,"z":-79.715454},"screenPosition":{"x":0.15491274,"y":0.40323457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.38909,"y":45.864204,"z":-78.9477},"screenPosition":{"x":0.11679678,"y":0.3762036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.496323,"y":43.37851,"z":-79.25466},"screenPosition":{"x":0.1071785,"y":0.34268385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.150326,"y":41.16605,"z":-80.24885},"screenPosition":{"x":0.11619651,"y":0.3062831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.513916,"y":39.27813,"z":-81.04566},"screenPosition":{"x":0.12291771,"y":0.27598542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.266,"y":37.711105,"z":-83.45453},"screenPosition":{"x":0.17183664,"y":0.23542513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.72483,"y":37.901386,"z":-85.095825},"screenPosition":{"x":0.21405324,"y":0.22349201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.537567,"y":39.1526,"z":-87.4975},"screenPosition":{"x":0.28271094,"y":0.21827233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.96404,"y":41.79692,"z":-88.90129},"screenPosition":{"x":0.33629125,"y":0.23909536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.720673,"y":44.642807,"z":-88.57607},"screenPosition":{"x":0.34819362,"y":0.27743334},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-49.429348,"y":37.944687,"z":-83.71407},"screenPosition":{"x":0.1799179,"y":0.23601925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.615986,"y":35.5263,"z":-84.1307},"screenPosition":{"x":0.17329934,"y":0.20222357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.54226,"y":32.593456,"z":-85.161415},"screenPosition":{"x":0.17836986,"y":0.15668012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.144604,"y":31.089739,"z":-87.43138},"screenPosition":{"x":0.2315314,"y":0.11693285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.395035,"y":33.84922,"z":-89.86334},"screenPosition":{"x":0.29943883,"y":0.1338236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.98906,"y":36.729748,"z":-90.79018},"screenPosition":{"x":0.3329352,"y":0.16814592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.98786,"y":39.327232,"z":-90.20253},"screenPosition":{"x":0.3513416,"y":0.19705696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.83705,"y":39.025986,"z":-87.77531},"screenPosition":{"x":0.28873682,"y":0.21446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.707226,"y":37.687817,"z":-86.07913},"screenPosition":{"x":0.23706023,"y":0.21229638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.297733,"y":34.089893,"z":-86.51033},"screenPosition":{"x":0.22251204,"y":0.16365361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.79522,"y":33.411934,"z":-89.39689},"screenPosition":{"x":0.27488175,"y":0.13882655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.51037,"y":35.823315,"z":-90.692345},"screenPosition":{"x":0.32741737,"y":0.15575331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.07976,"y":38.282253,"z":-91.44213},"screenPosition":{"x":0.36010015,"y":0.18186533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.43425,"y":40.57008,"z":-90.04905},"screenPosition":{"x":0.3561692,"y":0.21417202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.927223,"y":40.82295,"z":-87.435425},"screenPosition":{"x":0.29287663,"y":0.24010433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.645424,"y":37.83408,"z":-84.98616},"screenPosition":{"x":0.21084848,"y":0.22361049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.631897,"y":34.20814,"z":-83.677376},"screenPosition":{"x":0.15273283,"y":0.18970561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.017002,"y":31.465578,"z":-86.34939},"screenPosition":{"x":0.20005,"y":0.13229841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.985714,"y":34.284176,"z":-88.4002},"screenPosition":{"x":0.2840677,"y":0.14346582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.649868,"y":36.948143,"z":-88.98883},"screenPosition":{"x":0.30438316,"y":0.17782329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.55455,"y":38.198994,"z":-89.33249},"screenPosition":{"x":0.32174304,"y":0.19045259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.073498,"y":41.025234,"z":-89.82243},"screenPosition":{"x":0.3538249,"y":0.22147372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.52158,"y":43.79981,"z":-89.13898},"screenPosition":{"x":0.35623768,"y":0.2621899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.298203,"y":41.91517,"z":-86.06834},"screenPosition":{"x":0.26651207,"y":0.26514736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.41281,"y":38.09567,"z":-86.985695},"screenPosition":{"x":0.262546,"y":0.20994917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.996933,"y":39.525158,"z":-90.28296},"screenPosition":{"x":0.35475686,"y":0.19875768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.22035,"y":54.351643,"z":-85.030685},"screenPosition":{"x":0.32808524,"y":0.42935616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.519753,"y":57.55408,"z":-86.49664},"screenPosition":{"x":0.38713247,"y":0.45660642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.04661,"y":59.22879,"z":-88.74114},"screenPosition":{"x":0.45485672,"y":0.45803425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.977345,"y":59.72396,"z":-91.00022},"screenPosition":{"x":0.5146449,"y":0.44461617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.21894,"y":58.6754,"z":-93.04357},"screenPosition":{"x":0.55787444,"y":0.413878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.279045,"y":56.997406,"z":-94.66652},"screenPosition":{"x":0.5864212,"y":0.37892175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.377205,"y":54.31379,"z":-94.89305},"screenPosition":{"x":0.57363534,"y":0.34332654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.33416,"y":51.709126,"z":-93.91695},"screenPosition":{"x":0.5309938,"y":0.3192882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.97518,"y":50.366955,"z":-91.9722},"screenPosition":{"x":0.47289214,"y":0.31956425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.992256,"y":50.398247,"z":-89.844734},"screenPosition":{"x":0.4201585,"y":0.33837217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.852745,"y":52.00893,"z":-88.11212},"screenPosition":{"x":0.38840464,"y":0.37340006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.949146,"y":55.436584,"z":-87.28248},"screenPosition":{"x":0.39183822,"y":0.42336166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.32342,"y":58.60737,"z":-88.81789},"screenPosition":{"x":0.45239064,"y":0.4496147},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-48.91831,"y":61.76651,"z":-91.665596},"screenPosition":{"x":0.54558945,"y":0.46433496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.48545,"y":64.1496,"z":-93.12786},"screenPosition":{"x":0.59879065,"y":0.48139054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.712296,"y":65.76865,"z":-93.9504},"screenPosition":{"x":0.6301964,"y":0.49443763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.62658,"y":67.3997,"z":-95.51865},"screenPosition":{"x":0.68115747,"y":0.5012071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.19372,"y":69.78279,"z":-96.98092},"screenPosition":{"x":0.73393834,"y":0.518223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.959427,"y":72.8266,"z":-96.73612},"screenPosition":{"x":0.74973017,"y":0.5583773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.826756,"y":72.921196,"z":-94.46976},"screenPosition":{"x":0.69390684,"y":0.5792189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.27038,"y":72.26776,"z":-92.55794},"screenPosition":{"x":0.6411739,"y":0.5875022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.972057,"y":73.74383,"z":-90.605995},"screenPosition":{"x":0.6033461,"y":0.62298554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.03324,"y":76.74434,"z":-91.74295},"screenPosition":{"x":0.65282124,"y":0.650587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.904938,"y":79.28206,"z":-94.667404},"screenPosition":{"x":0.74331975,"y":0.65679777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.230473,"y":78.399765,"z":-96.86063},"screenPosition":{"x":0.80293447,"y":0.63356596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.913464,"y":74.98376,"z":-96.377975},"screenPosition":{"x":0.75596964,"y":0.58840555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.099564,"y":72.383095,"z":-95.650444},"screenPosition":{"x":0.71955174,"y":0.56226075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.03891,"y":69.56486,"z":-95.65764},"screenPosition":{"x":0.6999172,"y":0.5270268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.779617,"y":69.414955,"z":-98.56005},"screenPosition":{"x":0.77120495,"y":0.49997723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.335384,"y":73.215164,"z":-100.51586},"screenPosition":{"x":0.84667075,"y":0.53043693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.550316,"y":76.06905,"z":-100.687775},"screenPosition":{"x":0.87102044,"y":0.5645621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.427296,"y":78.074165,"z":-99.54868},"screenPosition":{"x":0.8419156,"y":0.6081427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.15755,"y":78.599236,"z":-98.36665},"screenPosition":{"x":0.8161454,"y":0.6249498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.67447,"y":81.5419,"z":-96.47511},"screenPosition":{"x":0.81337786,"y":0.66420746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.038677,"y":82.62834,"z":-94.930504},"screenPosition":{"x":0.7841628,"y":0.69020206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.444195,"y":83.5675,"z":-93.431274},"screenPosition":{"x":0.7532918,"y":0.71366197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.742172,"y":84.42212,"z":-91.8388},"screenPosition":{"x":0.72056925,"y":0.7378847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.771782,"y":84.86881,"z":-90.02411},"screenPosition":{"x":0.67787516,"y":0.7605799},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-38.751377,"y":81.398476,"z":-87.707535},"screenPosition":{"x":0.5845257,"y":0.7433022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.690727,"y":78.58024,"z":-87.71474},"screenPosition":{"x":0.5653267,"y":0.7084443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.120117,"y":76.46274,"z":-88.50057},"screenPosition":{"x":0.569481,"y":0.6748334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.37309,"y":73.997055,"z":-90.05038},"screenPosition":{"x":0.59131914,"y":0.63098425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.954906,"y":77.04159,"z":-93.92161},"screenPosition":{"x":0.70921326,"y":0.6353966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.20068,"y":79.82198,"z":-95.61403},"screenPosition":{"x":0.7525751,"y":0.6622059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.54856,"y":83.0017,"z":-93.556244},"screenPosition":{"x":0.75156015,"y":0.7073544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.728268,"y":84.036545,"z":-91.84668},"screenPosition":{"x":0.71735764,"y":0.73443675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.47057,"y":82.48347,"z":-90.32071},"screenPosition":{"x":0.6435303,"y":0.7428621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.808643,"y":81.15325,"z":-88.76029},"screenPosition":{"x":0.60947675,"y":0.7314851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.831932,"y":78.50128,"z":-88.91737},"screenPosition":{"x":0.5947469,"y":0.69702595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.74683,"y":76.985565,"z":-90.44163},"screenPosition":{"x":0.62152755,"y":0.6645858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.711617,"y":76.55842,"z":-92.40823},"screenPosition":{"x":0.6679181,"y":0.64242035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.451176,"y":79.37302,"z":-94.21048},"screenPosition":{"x":0.7328047,"y":0.6619868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.2332,"y":81.04911,"z":-92.85154},"screenPosition":{"x":0.6959072,"y":0.70336854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.988438,"y":80.250946,"z":-89.71067},"screenPosition":{"x":0.62682086,"y":0.71197975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.565342,"y":76.35613,"z":-90.021225},"screenPosition":{"x":0.60717845,"y":0.6606784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.797863,"y":75.10965,"z":-91.984146},"screenPosition":{"x":0.64733994,"y":0.6280937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.188587,"y":77.14455,"z":-94.21039},"screenPosition":{"x":0.71685845,"y":0.63407797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.56517,"y":78.70029,"z":-95.17183},"screenPosition":{"x":0.75203645,"y":0.64525133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.345413,"y":79.225105,"z":-102.66174},"screenPosition":{"x":0.95306236,"y":0.58058554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.29469,"y":78.65687,"z":-104.46371},"screenPosition":{"x":0.9949354,"y":0.55730253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.08707,"y":75.32017,"z":-105.74842},"screenPosition":{"x":0.9770798,"y":0.5199893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.777676,"y":73.556435,"z":-105.42878},"screenPosition":{"x":0.9687908,"y":0.48927906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.98092,"y":70.82282,"z":-105.10722},"screenPosition":{"x":0.92947906,"y":0.469425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.092617,"y":68.60033,"z":-102.92095},"screenPosition":{"x":0.88026583,"y":0.4445703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.672375,"y":67.5867,"z":-101.0274},"screenPosition":{"x":0.81984895,"y":0.4557561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.24476,"y":67.906876,"z":-98.52344},"screenPosition":{"x":0.75968957,"y":0.48147404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.096176,"y":69.31963,"z":-96.710396},"screenPosition":{"x":0.72443277,"y":0.5148336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.243,"y":74.01814,"z":-97.467255},"screenPosition":{"x":0.77633077,"y":0.56690514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.778927,"y":75.89078,"z":-99.79219},"screenPosition":{"x":0.8474448,"y":0.5701065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.220154,"y":75.86749,"z":-102.416794},"screenPosition":{"x":0.9126984,"y":0.54704714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.683598,"y":72.82768,"z":-102.91016},"screenPosition":{"x":0.9036235,"y":0.50483036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.78576,"y":70.060745,"z":-102.03274},"screenPosition":{"x":0.862301,"y":0.47791073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.8624,"y":68.23177,"z":-100.38406},"screenPosition":{"x":0.80834943,"y":0.4693876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.718967,"y":66.59672,"z":-98.567245},"screenPosition":{"x":0.75148267,"y":0.46474558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.16712,"y":66.042244,"z":-96.69564},"screenPosition":{"x":0.7010229,"y":0.4740598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.544945,"y":65.618385,"z":-94.7948},"screenPosition":{"x":0.650665,"y":0.48526007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.88187,"y":67.63292,"z":-93.720184},"screenPosition":{"x":0.63804394,"y":0.5197239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.92438,"y":70.055305,"z":-93.55213},"screenPosition":{"x":0.6508862,"y":0.5514131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.261845,"y":72.25211,"z":-93.621666},"screenPosition":{"x":0.6680644,"y":0.57822603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.785328,"y":75.177315,"z":-94.151825},"screenPosition":{"x":0.70184433,"y":0.61013335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.273598,"y":77.67538,"z":-96.64858},"screenPosition":{"x":0.78163826,"y":0.6196494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.72336,"y":77.66773,"z":-98.20946},"screenPosition":{"x":0.82048875,"y":0.6060133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.43232,"y":76.825096,"z":-100.83037},"screenPosition":{"x":0.8873551,"y":0.5785073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.081787,"y":74.51368,"z":-101.78435},"screenPosition":{"x":0.8874168,"y":0.5356381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.98308,"y":72.701065,"z":-103.187965},"screenPosition":{"x":0.9091908,"y":0.50082296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.244587,"y":70.25103,"z":-103.674034},"screenPosition":{"x":0.90927094,"y":0.45921907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.775555,"y":67.30775,"z":-103.6311},"screenPosition":{"x":0.867974,"y":0.43836242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.633106,"y":64.869606,"z":-102.60723},"screenPosition":{"x":0.8253126,"y":0.41681668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.468822,"y":63.31569,"z":-100.36194},"screenPosition":{"x":0.7732347,"y":0.40822688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.4995,"y":63.643867,"z":-98.35512},"screenPosition":{"x":0.72548854,"y":0.42973557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.659473,"y":65.12794,"z":-96.900314},"screenPosition":{"x":0.69969606,"y":0.46087372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.907925,"y":66.877235,"z":-95.6356},"screenPosition":{"x":0.68047225,"y":0.4936765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.50805,"y":67.973465,"z":-94.51708},"screenPosition":{"x":0.6603006,"y":0.5170607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.3055,"y":71.71001,"z":-94.55379},"screenPosition":{"x":0.6874857,"y":0.5633743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.522114,"y":71.78168,"z":-96.97003},"screenPosition":{"x":0.74821377,"y":0.54330754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.035446,"y":69.83045,"z":-97.90575},"screenPosition":{"x":0.75781775,"y":0.5108388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.174423,"y":68.03749,"z":-98.494194},"screenPosition":{"x":0.75986624,"y":0.4833576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.696823,"y":66.28419,"z":-99.51034},"screenPosition":{"x":0.7728793,"y":0.45266142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.093933,"y":63.291676,"z":-98.87052},"screenPosition":{"x":0.7352762,"y":0.4209414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.38612,"y":61.169815,"z":-97.34977},"screenPosition":{"x":0.68307066,"y":0.4075773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.01354,"y":59.53076,"z":-95.284386},"screenPosition":{"x":0.62006795,"y":0.4050394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.593296,"y":58.51713,"z":-93.39083},"screenPosition":{"x":0.56554174,"y":0.40886444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.281364,"y":59.696312,"z":-91.318245},"screenPosition":{"x":0.52225494,"y":0.44153005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.121407,"y":62.52619,"z":-89.99875},"screenPosition":{"x":0.5093848,"y":0.4882759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.24039,"y":65.46376,"z":-93.33262},"screenPosition":{"x":0.6131335,"y":0.49601492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.227856,"y":65.531425,"z":-95.5003},"screenPosition":{"x":0.6670703,"y":0.47805372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.199482,"y":63.588203,"z":-96.93315},"screenPosition":{"x":0.6896892,"y":0.441373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.558002,"y":61.41904,"z":-96.545586},"screenPosition":{"x":0.66477877,"y":0.41766405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.224545,"y":59.138916,"z":-95.3721},"screenPosition":{"x":0.6194176,"y":0.39940682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.73681,"y":56.82313,"z":-94.0195},"screenPosition":{"x":0.5694038,"y":0.3822541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.17304,"y":53.189552,"z":-94.271576},"screenPosition":{"x":0.549923,"y":0.33485353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.915966,"y":52.594856,"z":-97.45257},"screenPosition":{"x":0.6099389,"y":0.30873528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.035755,"y":54.645214,"z":-98.3136},"screenPosition":{"x":0.6464112,"y":0.32646412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.183563,"y":57.175106,"z":-99.376},"screenPosition":{"x":0.6975159,"y":0.3441483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.834187,"y":59.630444,"z":-99.44062},"screenPosition":{"x":0.7265257,"y":0.36692527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.86309,"y":61.755947,"z":-99.151924},"screenPosition":{"x":0.7321096,"y":0.3992583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.35883,"y":63.905098,"z":-98.29664},"screenPosition":{"x":0.7259018,"y":0.4334994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.995773,"y":65.975296,"z":-98.64399},"screenPosition":{"x":0.7491141,"y":0.45632216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.38332,"y":75.54443,"z":-88.45667},"screenPosition":{"x":0.5624755,"y":0.6641211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.8201,"y":76.407074,"z":-87.078606},"screenPosition":{"x":0.5341926,"y":0.6868418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.19108,"y":77.4993,"z":-85.71152},"screenPosition":{"x":0.50779736,"y":0.71233237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.394173,"y":78.25898,"z":-84.04467},"screenPosition":{"x":0.47159275,"y":0.7362733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.592735,"y":78.9197,"z":-82.33761},"screenPosition":{"x":0.43341213,"y":0.75882936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.648396,"y":78.12765,"z":-79.957886},"screenPosition":{"x":0.36865017,"y":0.7695878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.922441,"y":75.60994,"z":-78.27628},"screenPosition":{"x":0.3091932,"y":0.75325465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.681993,"y":73.694,"z":-77.33311},"screenPosition":{"x":0.27221456,"y":0.73752606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.099552,"y":69.4823,"z":-76.280174},"screenPosition":{"x":0.21635959,"y":0.6940983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.73995,"y":66.97295,"z":-77.153725},"screenPosition":{"x":0.22057238,"y":0.65494347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.12168,"y":65.48088,"z":-78.11139},"screenPosition":{"x":0.23386952,"y":0.6282747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.855625,"y":63.51801,"z":-80.359406},"screenPosition":{"x":0.27610037,"y":0.58427626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.212906,"y":63.32845,"z":-82.83412},"screenPosition":{"x":0.3364493,"y":0.56044203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.836857,"y":61.954987,"z":-83.01684},"screenPosition":{"x":0.33133247,"y":0.54169893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.534443,"y":62.529472,"z":-86.131294},"screenPosition":{"x":0.41301292,"y":0.52186745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.79587,"y":63.408485,"z":-87.80552},"screenPosition":{"x":0.46080384,"y":0.5182871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.916016,"y":67.6955,"z":-89.465256},"screenPosition":{"x":0.5324313,"y":0.5574169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.196213,"y":70.137535,"z":-88.48204},"screenPosition":{"x":0.52509403,"y":0.59642303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.898422,"y":71.79588,"z":-87.674255},"screenPosition":{"x":0.51661944,"y":0.62412673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.389626,"y":73.84607,"z":-86.778755},"screenPosition":{"x":0.5086003,"y":0.6573939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.849083,"y":75.20353,"z":-85.60176},"screenPosition":{"x":0.48892105,"y":0.68463326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.541687,"y":76.48167,"z":-83.56939},"screenPosition":{"x":0.44725096,"y":0.7182155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.545155,"y":76.21607,"z":-81.32129},"screenPosition":{"x":0.3893504,"y":0.7344035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.558304,"y":73.00163,"z":-79.10962},"screenPosition":{"x":0.31162578,"y":0.71347374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.27704,"y":70.19504,"z":-77.80452},"screenPosition":{"x":0.25936443,"y":0.68976945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.979237,"y":67.53944,"z":-79.771034},"screenPosition":{"x":0.2897087,"y":0.63956773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.488567,"y":65.671524,"z":-81.8107},"screenPosition":{"x":0.32737994,"y":0.5984809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.156097,"y":67.085,"z":-84.11368},"screenPosition":{"x":0.3946642,"y":0.5961346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.04994,"y":69.93525,"z":-86.09503},"screenPosition":{"x":0.46417645,"y":0.6146061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.110588,"y":72.75349,"z":-86.08784},"screenPosition":{"x":0.483811,"y":0.64984006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.20476,"y":74.46713,"z":-84.644005},"screenPosition":{"x":0.45987204,"y":0.6837517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.099304,"y":75.1555,"z":-82.61893},"screenPosition":{"x":0.41423714,"y":0.70991045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.47259,"y":74.63268,"z":-80.677864},"screenPosition":{"x":0.36218116,"y":0.72022456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.116455,"y":71.85774,"z":-79.303314},"screenPosition":{"x":0.30841127,"y":0.69751775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.667843,"y":68.900894,"z":-78.84261},"screenPosition":{"x":0.27613986,"y":0.66461295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.766537,"y":66.39955,"z":-80.2133},"screenPosition":{"x":0.29270226,"y":0.6213659},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.70411,"y":65.37864,"z":-81.93862},"screenPosition":{"x":0.3285283,"y":0.59376323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.480564,"y":65.83816,"z":-84.018585},"screenPosition":{"x":0.38360414,"y":0.58147585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.92802,"y":67.44556,"z":-86.15343},"screenPosition":{"x":0.44812763,"y":0.58302814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.174694,"y":70.99218,"z":-86.60684},"screenPosition":{"x":0.48436385,"y":0.6233566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.507088,"y":72.90775,"z":-85.492004},"screenPosition":{"x":0.47000098,"y":0.6568936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.512783,"y":74.35616,"z":-83.858086},"screenPosition":{"x":0.43950298,"y":0.68918484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.659225,"y":72.214294,"z":-81.09449},"screenPosition":{"x":0.3555626,"y":0.68642884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.303627,"y":69.621635,"z":-80.8641},"screenPosition":{"x":0.33159202,"y":0.6560712},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-39.078465,"y":65.220375,"z":-82.28588},"screenPosition":{"x":0.3360446,"y":0.5887318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.465267,"y":64.00954,"z":-84.427925},"screenPosition":{"x":0.3809339,"y":0.55509424},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-42.381702,"y":70.68365,"z":-87.7985},"screenPosition":{"x":0.51189643,"y":0.6091683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.797577,"y":69.254166,"z":-84.501236},"screenPosition":{"x":0.41966307,"y":0.6199325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.017735,"y":65.731186,"z":-83.48123},"screenPosition":{"x":0.369471,"y":0.5848144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.545208,"y":64.259125,"z":-85.68175},"screenPosition":{"x":0.4139547,"y":0.54734635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.081135,"y":66.13176,"z":-88.006676},"screenPosition":{"x":0.48508257,"y":0.5505548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.357864,"y":68.839386,"z":-89.27157},"screenPosition":{"x":0.53564584,"y":0.5733729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.876816,"y":71.66563,"z":-89.761505},"screenPosition":{"x":0.5677277,"y":0.604394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.531364,"y":73.949394,"z":-89.12555},"screenPosition":{"x":0.567933,"y":0.6384124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.605167,"y":73.553185,"z":-86.906685},"screenPosition":{"x":0.50984293,"y":0.6527167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.04256,"y":71.26906,"z":-85.484634},"screenPosition":{"x":0.4583398,"y":0.63654727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.73462,"y":68.05097,"z":-85.082405},"screenPosition":{"x":0.42568928,"y":0.599875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.736927,"y":66.43593,"z":-84.50844},"screenPosition":{"x":0.39994487,"y":0.5846258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.8208,"y":74.2452,"z":-83.07216},"screenPosition":{"x":0.41913393,"y":0.6946179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.080708,"y":71.24833,"z":-80.12576},"screenPosition":{"x":0.32462594,"y":0.6827774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.010983,"y":68.23217,"z":-80.052536},"screenPosition":{"x":0.3015768,"y":0.6456466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.3519,"y":65.84944,"z":-80.64828},"screenPosition":{"x":0.29967302,"y":0.6107579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.042183,"y":64.42867,"z":-81.96417},"screenPosition":{"x":0.32250136,"y":0.58171976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.94117,"y":64.23111,"z":-83.94176},"screenPosition":{"x":0.37038773,"y":0.5620846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.269012,"y":61.733772,"z":-85.56101},"screenPosition":{"x":0.39320463,"y":0.5168844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.984203,"y":62.521828,"z":-87.69217},"screenPosition":{"x":0.4517763,"y":0.508216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.431656,"y":64.12923,"z":-89.827},"screenPosition":{"x":0.5163746,"y":0.5097717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.849056,"y":66.57563,"z":-91.15037},"screenPosition":{"x":0.5665588,"y":0.52882236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.81723,"y":69.211945,"z":-92.05702},"screenPosition":{"x":0.60769176,"y":0.5538583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.018555,"y":71.76895,"z":-92.1083},"screenPosition":{"x":0.6269472,"y":0.5853248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.654964,"y":73.65687,"z":-91.31149},"screenPosition":{"x":0.62013936,"y":0.61570954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.20743,"y":75.37852,"z":-90.3648},"screenPosition":{"x":0.6088686,"y":0.64549726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.834774,"y":77.06852,"z":-89.487564},"screenPosition":{"x":0.5988855,"y":0.67419857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.620926,"y":78.89313,"z":-88.82966},"screenPosition":{"x":0.59505093,"y":0.7024901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.182465,"y":80.812706,"z":-87.963394},"screenPosition":{"x":0.5872201,"y":0.7341483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.19323,"y":82.54236,"z":-87.51385},"screenPosition":{"x":0.6007773,"y":0.76541173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.234272,"y":83.52983,"z":-87.267},"screenPosition":{"x":0.57415533,"y":0.78277445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.180603,"y":86.821846,"z":-85.74718},"screenPosition":{"x":0.5852236,"y":0.8219286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.737957,"y":85.26758,"z":-84.05317},"screenPosition":{"x":0.5068879,"y":0.83197945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.524017,"y":83.911095,"z":-82.96654},"screenPosition":{"x":0.48445868,"y":0.81616455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.43438,"y":82.29641,"z":-84.450584},"screenPosition":{"x":0.5100957,"y":0.78313905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.95901,"y":82.25712,"z":-86.0809},"screenPosition":{"x":0.55045474,"y":0.7685054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.857998,"y":82.059555,"z":-88.05849},"screenPosition":{"x":0.5977844,"y":0.7484016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.24657,"y":79.0514,"z":-88.4824},"screenPosition":{"x":0.58744407,"y":0.7074215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.17347,"y":77.28573,"z":-86.69482},"screenPosition":{"x":0.53080434,"y":0.7011367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.24497,"y":78.50456,"z":-85.04992},"screenPosition":{"x":0.498375,"y":0.73061746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.80197,"y":80.32518,"z":-84.14345},"screenPosition":{"x":0.48858145,"y":0.7612025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.75147,"y":82.38337,"z":-83.74509},"screenPosition":{"x":0.4929923,"y":0.79015595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.621563,"y":84.37425,"z":-83.23706},"screenPosition":{"x":0.49420413,"y":0.81919986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.318726,"y":85.14902,"z":-83.621925},"screenPosition":{"x":0.50383824,"y":0.83944553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.762272,"y":88.44073,"z":-81.64513},"screenPosition":{"x":0.4935275,"y":0.87820745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.147446,"y":86.669304,"z":-79.23079},"screenPosition":{"x":0.41855106,"y":0.8842587},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-31.300642,"y":82.02646,"z":-79.8959},"screenPosition":{"x":0.39465392,"y":0.8192251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.25813,"y":79.60407,"z":-80.06395},"screenPosition":{"x":0.38159615,"y":0.7868995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.686985,"y":77.3043,"z":-79.70563},"screenPosition":{"x":0.35662064,"y":0.7616067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.91168,"y":73.88028,"z":-78.72584},"screenPosition":{"x":0.30822343,"y":0.7276571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.486366,"y":72.58541,"z":-75.6479},"screenPosition":{"x":0.2224174,"y":0.73831016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.467077,"y":75.15406,"z":-74.38689},"screenPosition":{"x":0.20908041,"y":0.7811518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.594065,"y":77.924995,"z":-75.51287},"screenPosition":{"x":0.2566031,"y":0.8059416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.24799,"y":79.041595,"z":-77.695206},"screenPosition":{"x":0.31883672,"y":0.8011226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.556623,"y":75.78385,"z":-76.865295},"screenPosition":{"x":0.2752474,"y":0.7676656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.258299,"y":77.25992,"z":-74.91335},"screenPosition":{"x":0.2369735,"y":0.80302024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.98772,"y":79.51203,"z":-74.34685},"screenPosition":{"x":0.23869532,"y":0.8359661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.479458,"y":81.7445,"z":-74.595505},"screenPosition":{"x":0.26058078,"y":0.8617451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.821455,"y":84.04027,"z":-74.70526},"screenPosition":{"x":0.2794571,"y":0.88944423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.85943,"y":86.36369,"z":-74.496994},"screenPosition":{"x":0.29060125,"y":0.9202473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.276297,"y":88.627815,"z":-74.6762},"screenPosition":{"x":0.32052585,"y":0.94819015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.687674,"y":91.45012,"z":-75.05476},"screenPosition":{"x":0.35075915,"y":0.97273976},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-28.802681,"y":89.569496,"z":-78.895035},"screenPosition":{"x":0.43253657,"y":0.9163754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.198277,"y":86.4394,"z":-80.717026},"screenPosition":{"x":0.43135554,"y":0.87590766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.185501,"y":85.66368,"z":-77.83437},"screenPosition":{"x":0.36886293,"y":0.8825589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.393131,"y":86.52232,"z":-76.20774},"screenPosition":{"x":0.3343564,"y":0.907386},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-23.382381,"y":89.10662,"z":-73.88299},"screenPosition":{"x":0.30256212,"y":0.959906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.392935,"y":89.66712,"z":-73.45086},"screenPosition":{"x":0.2712568,"y":0.97833306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.925909,"y":90.097565,"z":-72.02228},"screenPosition":{"x":0.2397196,"y":0.996951},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-225754/brain-C78370-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.0424186793994501,0.9255986946981446,-0.3761219376892254,0.0,0.7002738196444404,0.2960566988120762,0.6495898772372315,0.0,0.7126129616829829,-0.23583360121404784,-0.6607308675851469,0.0,28.341316087671984,33.05933941158763,-147.71496851920767,1.0]},"baseImage":"20190823-225754/base.webp","version":0,"savedAt":1.566601326195E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-230806-v0.json b/data/mapping/BAAAHS/dwayman/20190823-230806-v0.json new file mode 100644 index 0000000000..98b5ac2ae3 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-230806-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566601686776E12,"surfaces":[{"brainId":"CBB8D0","panelName":"25D","pixels":[{"modelPosition":{"x":-327.61633,"y":160.21603,"z":-87.60249},"screenPosition":{"x":0.9195135,"y":0.854986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.6538,"y":160.92444,"z":-87.00044},"screenPosition":{"x":0.8978961,"y":0.8222009},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-321.45407,"y":162.14182,"z":-85.780876},"screenPosition":{"x":0.8602493,"y":0.7520007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.11755,"y":163.83234,"z":-85.09247},"screenPosition":{"x":0.8074472,"y":0.728518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.68127,"y":164.94858,"z":-84.51409},"screenPosition":{"x":0.77260387,"y":0.7038876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.18326,"y":165.61493,"z":-83.57841},"screenPosition":{"x":0.7522751,"y":0.64574957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.896,"y":162.2418,"z":-84.06792},"screenPosition":{"x":0.8557266,"y":0.6280996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.4259,"y":161.43604,"z":-85.86955},"screenPosition":{"x":0.8903169,"y":0.6736519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.20563,"y":161.24117,"z":-85.485695},"screenPosition":{"x":0.9038564,"y":0.7139369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.88956,"y":161.1578,"z":-85.65783},"screenPosition":{"x":0.9075922,"y":0.7250521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.4542,"y":160.5146,"z":-87.20618},"screenPosition":{"x":0.9183937,"y":0.7571907},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-326.50644,"y":161.17209,"z":-87.13401},"screenPosition":{"x":0.8898065,"y":0.8359399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.25006,"y":163.5589,"z":-86.079475},"screenPosition":{"x":0.7922872,"y":0.8014925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.01727,"y":164.06818,"z":-85.462875},"screenPosition":{"x":0.79969275,"y":0.75955343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.17203,"y":163.47334,"z":-85.18737},"screenPosition":{"x":0.8186364,"y":0.72972304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.84732,"y":162.81822,"z":-84.818565},"screenPosition":{"x":0.8395041,"y":0.69208264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.65146,"y":163.31752,"z":-84.43611},"screenPosition":{"x":0.8241475,"y":0.67197275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.51392,"y":165.21573,"z":-83.967926},"screenPosition":{"x":0.76459026,"y":0.66799694},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-309.95016,"y":165.78911,"z":-82.368195},"screenPosition":{"x":0.7477317,"y":0.5595147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.0885,"y":168.94472,"z":-81.895515},"screenPosition":{"x":0.64830303,"y":0.5753975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.8009,"y":169.07724,"z":-82.47144},"screenPosition":{"x":0.6436521,"y":0.61989355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.5031,"y":167.45586,"z":-83.225685},"screenPosition":{"x":0.69433147,"y":0.6493529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.56033,"y":165.0981,"z":-83.78182},"screenPosition":{"x":0.7683929,"y":0.65242606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.7457,"y":163.18834,"z":-84.48695},"screenPosition":{"x":0.82816166,"y":0.6736397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.9508,"y":161.3941,"z":-85.16988},"screenPosition":{"x":0.8970033,"y":0.6935463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.3998,"y":160.74294,"z":-85.86752},"screenPosition":{"x":0.9108029,"y":0.73460525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.2978,"y":162.73766,"z":-86.0558},"screenPosition":{"x":0.84129506,"y":0.78181255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.83405,"y":165.02914,"z":-85.200455},"screenPosition":{"x":0.74908113,"y":0.7602013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.82556,"y":165.51178,"z":-84.64016},"screenPosition":{"x":0.7546905,"y":0.7222028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.0423,"y":165.96692,"z":-84.13655},"screenPosition":{"x":0.74069715,"y":0.6924603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.47067,"y":166.9835,"z":-83.55088},"screenPosition":{"x":0.709012,"y":0.6656937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.11197,"y":167.5109,"z":-82.901955},"screenPosition":{"x":0.6928489,"y":0.6264208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.40836,"y":169.1332,"z":-82.14719},"screenPosition":{"x":0.6421412,"y":0.59693736},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-306.7548,"y":168.30542,"z":-81.07386},"screenPosition":{"x":0.66917855,"y":0.5046888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.49918,"y":171.51793,"z":-80.2764},"screenPosition":{"x":0.5682092,"y":0.4975914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.8136,"y":171.69092,"z":-80.9776},"screenPosition":{"x":0.53925633,"y":0.5596754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.55594,"y":169.24626,"z":-81.706955},"screenPosition":{"x":0.63888836,"y":0.5663954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.63107,"y":167.0008,"z":-82.24121},"screenPosition":{"x":0.7094886,"y":0.5696371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.63977,"y":165.35588,"z":-82.398636},"screenPosition":{"x":0.7612985,"y":0.55486083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.59976,"y":163.12003,"z":-82.90493},"screenPosition":{"x":0.8505304,"y":0.5552722},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-313.86185,"y":161.9059,"z":-85.18797},"screenPosition":{"x":0.8759998,"y":0.63105315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.50897,"y":163.45753,"z":-84.14841},"screenPosition":{"x":0.8200547,"y":0.65305007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.46805,"y":165.82649,"z":-83.14615},"screenPosition":{"x":0.7459285,"y":0.6173461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.1437,"y":166.58421,"z":-82.45183},"screenPosition":{"x":0.72251743,"y":0.57843107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.13318,"y":166.47905,"z":-82.026535},"screenPosition":{"x":0.72618294,"y":0.5454553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.61865,"y":166.19945,"z":-81.52874},"screenPosition":{"x":0.7354231,"y":0.5043462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.45752,"y":165.28452,"z":-81.25637},"screenPosition":{"x":0.7645207,"y":0.4696739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.74832,"y":165.61249,"z":-80.79863},"screenPosition":{"x":0.7544463,"y":0.44134465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.8606,"y":165.96703,"z":-80.07126},"screenPosition":{"x":0.7439372,"y":0.3933937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.8772,"y":168.10463,"z":-79.135185},"screenPosition":{"x":0.6769662,"y":0.35908216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.76996,"y":171.77681,"z":-78.488556},"screenPosition":{"x":0.5614476,"y":0.37022248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.58667,"y":172.00763,"z":-79.28874},"screenPosition":{"x":0.55348814,"y":0.43299356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.86472,"y":169.25363,"z":-80.20915},"screenPosition":{"x":0.63982093,"y":0.45641214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.63293,"y":165.62666,"z":-80.76956},"screenPosition":{"x":0.7539896,"y":0.43946958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.28223,"y":164.5776,"z":-81.312416},"screenPosition":{"x":0.7945906,"y":0.3888306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.4146,"y":179.74226,"z":-76.1263},"screenPosition":{"x":0.30038205,"y":0.3313874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.78284,"y":180.90399,"z":-75.27014},"screenPosition":{"x":0.25683212,"y":0.2897675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.69656,"y":181.1712,"z":-74.74209},"screenPosition":{"x":0.2673105,"y":0.24541359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.1872,"y":179.12929,"z":-74.65157},"screenPosition":{"x":0.3321628,"y":0.20646249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.04135,"y":177.1531,"z":-74.62718},"screenPosition":{"x":0.3946066,"y":0.17292279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.42502,"y":174.02388,"z":-75.43409},"screenPosition":{"x":0.49281392,"y":0.18158849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.93564,"y":171.58788,"z":-76.109634},"screenPosition":{"x":0.5693209,"y":0.19218117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.5465,"y":169.83508,"z":-77.32092},"screenPosition":{"x":0.6236421,"y":0.25382507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.24738,"y":171.2705,"z":-77.81761},"screenPosition":{"x":0.5779104,"y":0.31336966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.15552,"y":174.34851,"z":-77.31135},"screenPosition":{"x":0.48104912,"y":0.32490215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.69427,"y":177.34903,"z":-76.74034},"screenPosition":{"x":0.38660404,"y":0.33106187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.24924,"y":179.18378,"z":-75.99443},"screenPosition":{"x":0.32916972,"y":0.3056406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.1094,"y":180.17432,"z":-75.06413},"screenPosition":{"x":0.29858318,"y":0.2531024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.389,"y":178.27597,"z":-74.89334},"screenPosition":{"x":0.35876033,"y":0.21006466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.3065,"y":176.64589,"z":-74.80335},"screenPosition":{"x":0.4106295,"y":0.1783234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.29105,"y":173.69135,"z":-75.25718},"screenPosition":{"x":0.50347245,"y":0.16323546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.89713,"y":171.12338,"z":-75.984474},"screenPosition":{"x":0.58411217,"y":0.17551716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.84244,"y":169.10617,"z":-76.6607},"screenPosition":{"x":0.64712006,"y":0.1939184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.7246,"y":166.73996,"z":-77.40323},"screenPosition":{"x":0.73523366,"y":0.21222158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.55392,"y":165.99382,"z":-79.25808},"screenPosition":{"x":0.7557862,"y":0.2600347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.90295,"y":165.38977,"z":-79.0958},"screenPosition":{"x":0.76972353,"y":0.31484178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.44586,"y":168.04457,"z":-78.828995},"screenPosition":{"x":0.67921954,"y":0.33535478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.15366,"y":171.03934,"z":-78.07352},"screenPosition":{"x":0.58510333,"y":0.32785127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.01053,"y":172.96277,"z":-77.151085},"screenPosition":{"x":0.5250066,"y":0.29110867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.38333,"y":174.46796,"z":-76.44039},"screenPosition":{"x":0.47798744,"y":0.2629302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.8154,"y":175.38246,"z":-75.65548},"screenPosition":{"x":0.44966793,"y":0.21968402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.05856,"y":176.19574,"z":-75.07525},"screenPosition":{"x":0.4244088,"y":0.19005354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.53665,"y":176.75067,"z":-74.38349},"screenPosition":{"x":0.40763193,"y":0.14906918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.8296,"y":176.9735,"z":-73.72687},"screenPosition":{"x":0.40088573,"y":0.10334305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.95593,"y":175.67235,"z":-73.38419},"screenPosition":{"x":0.44231173,"y":0.057247046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.46027,"y":172.76588,"z":-73.71956},"screenPosition":{"x":0.53396976,"y":0.035262175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.23245,"y":169.57655,"z":-74.403595},"screenPosition":{"x":0.6342962,"y":0.034387078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.6222,"y":168.20976,"z":-75.2529},"screenPosition":{"x":0.69040376,"y":0.07883608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.98456,"y":167.3809,"z":-77.24599},"screenPosition":{"x":0.7091721,"y":0.13467881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.09238,"y":168.01419,"z":-76.52105},"screenPosition":{"x":0.6820213,"y":0.16508028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.6685,"y":169.71666,"z":-76.70471},"screenPosition":{"x":0.6280294,"y":0.20592086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.3532,"y":172.83441,"z":-76.13933},"screenPosition":{"x":0.52987176,"y":0.21437585},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-283.57324,"y":175.8119,"z":-74.16082},"screenPosition":{"x":0.43747845,"y":0.11788524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.25473,"y":174.91528,"z":-73.84905},"screenPosition":{"x":0.4658851,"y":0.07929212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.868,"y":174.97633,"z":-73.30134},"screenPosition":{"x":0.46452478,"y":0.0413466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.54706,"y":172.53209,"z":-74.39595},"screenPosition":{"x":0.5487595,"y":0.008991305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.0421,"y":169.7651,"z":-74.92069},"screenPosition":{"x":0.6342033,"y":-0.0039170776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.83502,"y":168.50781,"z":-75.61131},"screenPosition":{"x":0.6748345,"y":0.032511633},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-282.64685,"y":167.48479,"z":-75.87266},"screenPosition":{"x":0.702104,"y":0.11364842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.50888,"y":169.16066,"z":-75.902794},"screenPosition":{"x":0.6462543,"y":0.1380013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.38986,"y":172.02315,"z":-75.44012},"screenPosition":{"x":0.5560884,"y":0.14991465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.81564,"y":175.4185,"z":-74.529274},"screenPosition":{"x":0.44942686,"y":0.13741176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.6701,"y":176.75627,"z":-73.74127},"screenPosition":{"x":0.4078978,"y":0.101663336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.28287,"y":176.35797,"z":-72.852104},"screenPosition":{"x":0.42106324,"y":0.029182812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.69284,"y":173.81403,"z":-73.30643},"screenPosition":{"x":0.4977497,"y":0.011091429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.66415,"y":170.83011,"z":-74.43483},"screenPosition":{"x":0.59462374,"y":0.05680814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.93512,"y":172.32845,"z":-74.8209},"screenPosition":{"x":0.5469266,"y":0.10926197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.32733,"y":175.36118,"z":-74.433304},"screenPosition":{"x":0.4514142,"y":0.13014604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.22406,"y":178.23633,"z":-73.30046},"screenPosition":{"x":0.3612847,"y":0.092246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.82913,"y":178.66591,"z":-72.44238},"screenPosition":{"x":0.34838268,"y":0.0360164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.28387,"y":176.56978,"z":-73.63022},"screenPosition":{"x":0.42143047,"y":0.016185919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.7158,"y":173.45677,"z":-74.22058},"screenPosition":{"x":0.5192607,"y":0.009001384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.903,"y":171.0479,"z":-73.990875},"screenPosition":{"x":0.58809,"y":0.027643515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.04987,"y":170.4608,"z":-78.18364},"screenPosition":{"x":0.60329497,"y":0.32675418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.43106,"y":169.57954,"z":-78.69554},"screenPosition":{"x":0.63061833,"y":0.35069188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.78555,"y":169.52391,"z":-79.2348},"screenPosition":{"x":0.6321072,"y":0.38895628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.328,"y":169.56866,"z":-79.56937},"screenPosition":{"x":0.63042444,"y":0.41428742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.25113,"y":169.44156,"z":-80.25224},"screenPosition":{"x":0.6339001,"y":0.46248344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.88306,"y":167.70009,"z":-81.24204},"screenPosition":{"x":0.6881709,"y":0.5073645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.89017,"y":166.75032,"z":-81.68609},"screenPosition":{"x":0.7177581,"y":0.52486235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.90317,"y":164.85196,"z":-82.573654},"screenPosition":{"x":0.7770475,"y":0.55966586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.45288,"y":163.08034,"z":-83.484344},"screenPosition":{"x":0.8402137,"y":0.52457637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.5206,"y":163.9728,"z":-81.79635},"screenPosition":{"x":0.8278122,"y":0.48767707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.60623,"y":164.79367,"z":-81.40274},"screenPosition":{"x":0.779896,"y":0.47258565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.04056,"y":165.93118,"z":-80.79053},"screenPosition":{"x":0.74449676,"y":0.44573227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.78137,"y":170.45015,"z":-79.69119},"screenPosition":{"x":0.6024464,"y":0.43740496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.0376,"y":172.88634,"z":-79.41066},"screenPosition":{"x":0.5256207,"y":0.45597154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.82425,"y":173.35992,"z":-79.9246},"screenPosition":{"x":0.48698273,"y":0.5097184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.44952,"y":171.619,"z":-80.91277},"screenPosition":{"x":0.5644947,"y":0.5460676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.04343,"y":169.66302,"z":-81.496315},"screenPosition":{"x":0.62587863,"y":0.5575913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.59964,"y":166.78061,"z":-81.83774},"screenPosition":{"x":0.716744,"y":0.53644764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.44257,"y":165.86713,"z":-81.56595},"screenPosition":{"x":0.7458276,"y":0.50181293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.28638,"y":167.3186,"z":-80.525764},"screenPosition":{"x":0.7008267,"y":0.44852644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.8352,"y":170.08951,"z":-79.78634},"screenPosition":{"x":0.6137782,"y":0.43860975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.1908,"y":172.757,"z":-79.25113},"screenPosition":{"x":0.52983505,"y":0.4423141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.3786,"y":174.48318,"z":-79.34251},"screenPosition":{"x":0.45918366,"y":0.48315132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.62094,"y":172.55403,"z":-80.288445},"screenPosition":{"x":0.5354298,"y":0.51511014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.90408,"y":169.81871,"z":-80.75851},"screenPosition":{"x":0.62156737,"y":0.5057818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.41693,"y":169.05453,"z":-80.82569},"screenPosition":{"x":0.64560235,"y":0.49858412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.16693,"y":167.31126,"z":-81.39512},"screenPosition":{"x":0.7002933,"y":0.512435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.86832,"y":164.28032,"z":-82.02682},"screenPosition":{"x":0.79549,"y":0.51033264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.5946,"y":163.73529,"z":-81.42045},"screenPosition":{"x":0.817906,"y":0.4582025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.70944,"y":165.74004,"z":-80.53696},"screenPosition":{"x":0.75047964,"y":0.4243185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.87375,"y":168.3143,"z":-80.20405},"screenPosition":{"x":0.6695914,"y":0.4408425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.83878,"y":170.43633,"z":-79.93081},"screenPosition":{"x":0.60269386,"y":0.4548053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.42365,"y":173.07338,"z":-79.45387},"screenPosition":{"x":0.51966935,"y":0.46205086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.62015,"y":175.17596,"z":-78.78968},"screenPosition":{"x":0.43073833,"y":0.45596662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.2093,"y":176.1874,"z":-78.017555},"screenPosition":{"x":0.4223512,"y":0.4064424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.5226,"y":176.99918,"z":-77.22977},"screenPosition":{"x":0.3973364,"y":0.3615943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.81693,"y":175.09973,"z":-77.06252},"screenPosition":{"x":0.45754704,"y":0.3189653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.296,"y":172.5722,"z":-77.30492},"screenPosition":{"x":0.5372354,"y":0.29591462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.27197,"y":169.14221,"z":-78.08998},"screenPosition":{"x":0.64509296,"y":0.2986084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.5092,"y":168.03172,"z":-79.0697},"screenPosition":{"x":0.6792222,"y":0.3533173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.88358,"y":167.7334,"z":-79.89293},"screenPosition":{"x":0.68821234,"y":0.40862978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.31253,"y":169.8005,"z":-79.73608},"screenPosition":{"x":0.6228876,"y":0.43046215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.19485,"y":173.1177,"z":-78.94533},"screenPosition":{"x":0.5186732,"y":0.42535025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.20142,"y":175.48169,"z":-78.17842},"screenPosition":{"x":0.4445168,"y":0.4068802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.69168,"y":176.62415,"z":-77.354},"screenPosition":{"x":0.40904084,"y":0.36456963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.87582,"y":176.74495,"z":-76.696556},"screenPosition":{"x":0.40574476,"y":0.31814358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.19318,"y":175.66673,"z":-76.345215},"screenPosition":{"x":0.44012713,"y":0.27498806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.92856,"y":172.99307,"z":-76.455},"screenPosition":{"x":0.52460176,"y":0.24014565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.26498,"y":169.86464,"z":-77.474754},"screenPosition":{"x":0.6227345,"y":0.26494527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.7055,"y":169.20166,"z":-78.396805},"screenPosition":{"x":0.6429676,"y":0.32213467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.30316,"y":169.8261,"z":-78.83372},"screenPosition":{"x":0.6228694,"y":0.36430088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.1107,"y":172.67154,"z":-78.58214},"screenPosition":{"x":0.5330743,"y":0.3914698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.17834,"y":175.38371,"z":-77.74866},"screenPosition":{"x":0.44795844,"y":0.3736916},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-295.3305,"y":171.7333,"z":-77.72955},"screenPosition":{"x":0.563429,"y":0.31368694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.39926,"y":169.47636,"z":-78.26502},"screenPosition":{"x":0.6343284,"y":0.31704196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.21213,"y":168.6548,"z":-79.08328},"screenPosition":{"x":0.65971625,"y":0.36385798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.8457,"y":169.51045,"z":-79.474945},"screenPosition":{"x":0.6322667,"y":0.4066029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.89142,"y":171.7337,"z":-79.420006},"screenPosition":{"x":0.56206805,"y":0.4380539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.8272,"y":174.68748,"z":-78.72496},"screenPosition":{"x":0.4692536,"y":0.4345675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.90897,"y":174.2137,"z":-75.05137},"screenPosition":{"x":0.48716012,"y":0.15706582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.52582,"y":177.3446,"z":-74.2442},"screenPosition":{"x":0.3887805,"y":0.14753392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.83865,"y":179.30968,"z":-74.08489},"screenPosition":{"x":0.3268458,"y":0.1675311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.78897,"y":181.90799,"z":-73.6986},"screenPosition":{"x":0.2448396,"y":0.1804755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.80817,"y":182.81894,"z":-74.163734},"screenPosition":{"x":0.20276617,"y":0.23809762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.72946,"y":181.26453,"z":-75.17512},"screenPosition":{"x":0.2532367,"y":0.28633144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.03854,"y":179.32857,"z":-75.913956},"screenPosition":{"x":0.32475576,"y":0.30223525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.9188,"y":176.40222,"z":-76.33797},"screenPosition":{"x":0.41687068,"y":0.28626153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.53195,"y":173.97609,"z":-76.586975},"screenPosition":{"x":0.49340585,"y":0.26563442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.1582,"y":172.02284,"z":-76.50635},"screenPosition":{"x":0.55520695,"y":0.22900869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.034,"y":172.53075,"z":-75.69076},"screenPosition":{"x":0.5398341,"y":0.17650127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.52945,"y":173.19919,"z":-74.976715},"screenPosition":{"x":0.5192624,"y":0.13470246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.5316,"y":175.34917,"z":-74.03456},"screenPosition":{"x":0.45209658,"y":0.10054371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.83066,"y":178.04883,"z":-73.25571},"screenPosition":{"x":0.3674131,"y":0.08655017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.77866,"y":181.01984,"z":-72.55942},"screenPosition":{"x":0.27399832,"y":0.08279103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.09598,"y":182.98288,"z":-72.40158},"screenPosition":{"x":0.21243913,"y":0.10334907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.9305,"y":184.38072,"z":-72.93681},"screenPosition":{"x":0.16723952,"y":0.16412771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.2262,"y":181.95996,"z":-74.007965},"screenPosition":{"x":0.24294892,"y":0.20406882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.00833,"y":178.9331,"z":-74.20961},"screenPosition":{"x":0.33852196,"y":0.17031361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.23642,"y":176.66241,"z":-74.560295},"screenPosition":{"x":0.4102754,"y":0.16062741},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.98883,"y":175.88536,"z":-74.01322},"screenPosition":{"x":0.4352241,"y":0.10789155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.234,"y":177.18199,"z":-73.09847},"screenPosition":{"x":0.39479235,"y":0.0604616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.9262,"y":179.84097,"z":-72.1933},"screenPosition":{"x":0.31141615,"y":0.036555167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.1202,"y":182.18912,"z":-71.69556},"screenPosition":{"x":0.2361625,"y":0.028553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.62808,"y":183.93588,"z":-72.23327},"screenPosition":{"x":0.18956968,"y":0.03166318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.12866,"y":186.67897,"z":-71.71306},"screenPosition":{"x":0.10322644,"y":0.0374268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.43353,"y":188.6492,"z":-70.50049},"screenPosition":{"x":0.021039685,"y":0.06442481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.57352,"y":187.53156,"z":-71.46012},"screenPosition":{"x":0.070800945,"y":0.11198078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.24762,"y":184.95233,"z":-72.42881},"screenPosition":{"x":0.14956628,"y":0.13593152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.63702,"y":182.67679,"z":-72.593094},"screenPosition":{"x":0.22140582,"y":0.11148882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.05502,"y":181.22156,"z":-72.57472},"screenPosition":{"x":0.26744682,"y":0.08677689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.4059,"y":179.4158,"z":-72.62213},"screenPosition":{"x":0.32452166,"y":0.061277635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.43307,"y":177.17128,"z":-72.69827},"screenPosition":{"x":0.39545047,"y":0.030848153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.55023,"y":174.77202,"z":-73.50095},"screenPosition":{"x":0.47074687,"y":0.05197613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.41324,"y":172.51772,"z":-74.43701},"screenPosition":{"x":0.54124665,"y":0.08405872},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-285.49432,"y":176.51895,"z":-74.42743},"screenPosition":{"x":0.41491368,"y":0.14858834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.60376,"y":175.66075,"z":-75.09685},"screenPosition":{"x":0.44139192,"y":0.18352011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.17218,"y":173.80513,"z":-75.87516},"screenPosition":{"x":0.49938098,"y":0.21052434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.80276,"y":172.29802,"z":-76.58705},"screenPosition":{"x":0.5464756,"y":0.23880513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.04184,"y":170.60342,"z":-77.25461},"screenPosition":{"x":0.5995137,"y":0.2607878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.81586,"y":168.96672,"z":-77.80485},"screenPosition":{"x":0.6508708,"y":0.27481517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.2867,"y":167.2442,"z":-78.53067},"screenPosition":{"x":0.7047715,"y":0.30056038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.33688,"y":165.45146,"z":-79.4022},"screenPosition":{"x":0.777231,"y":0.33717918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.79056,"y":165.26953,"z":-79.992744},"screenPosition":{"x":0.79046524,"y":0.3765561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.91354,"y":165.2462,"z":-80.4728},"screenPosition":{"x":0.7660789,"y":0.41174573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.1483,"y":165.20877,"z":-80.9811},"screenPosition":{"x":0.76712376,"y":0.44822356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.9519,"y":164.7513,"z":-81.48979},"screenPosition":{"x":0.7812563,"y":0.47823423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.33536,"y":164.93132,"z":-81.981224},"screenPosition":{"x":0.77517074,"y":0.51727706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.26852,"y":164.57613,"z":-82.495316},"screenPosition":{"x":0.78579044,"y":0.5495011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.25946,"y":164.56757,"z":-82.942444},"screenPosition":{"x":0.78590876,"y":0.582151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.12668,"y":163.86726,"z":-83.521324},"screenPosition":{"x":0.807596,"y":0.6134953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.37466,"y":163.35631,"z":-84.1417},"screenPosition":{"x":0.8232303,"y":0.65093565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.53027,"y":163.68011,"z":-84.54905},"screenPosition":{"x":0.81269497,"y":0.68609715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.50333,"y":162.96802,"z":-85.154305},"screenPosition":{"x":0.83463806,"y":0.71918184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.64688,"y":162.58792,"z":-85.72118},"screenPosition":{"x":0.846304,"y":0.7547942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.9444,"y":163.12747,"z":-86.11055},"screenPosition":{"x":0.82886827,"y":0.792078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.02185,"y":162.40358,"z":-86.74187},"screenPosition":{"x":0.8245731,"y":0.83234763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.79196,"y":161.24936,"z":-87.40364},"screenPosition":{"x":0.88729805,"y":0.8570786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.48737,"y":160.81784,"z":-87.434975},"screenPosition":{"x":0.9008483,"y":0.85242385},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-230806/brain-CBB8D0-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.17411475944128196,-0.9611796222321906,-0.2140508919633083,0.0,-0.9700625958475296,-0.1300490353899597,-0.20509950885288142,0.0,0.16930035641503166,0.24335361554685053,-0.9550478559308004,0.0,-294.5797213245777,196.80576795295383,-186.91322142369063,1.0]},"baseImage":"20190823-230806/base.webp","version":0,"savedAt":1.566601801578E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-231636-v0.json b/data/mapping/BAAAHS/dwayman/20190823-231636-v0.json new file mode 100644 index 0000000000..3483c6d3e7 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-231636-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566602196918E12,"surfaces":[{"brainId":"C79350","panelName":"4D","pixels":[{"modelPosition":{"x":-77.04276,"y":185.03217,"z":-63.784367},"screenPosition":{"x":0.40529877,"y":0.41767922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.02367,"y":183.6202,"z":-65.12319},"screenPosition":{"x":0.40274182,"y":0.35373497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.64975,"y":182.35582,"z":-66.232445},"screenPosition":{"x":0.42728502,"y":0.40366936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.57915,"y":180.8567,"z":-67.46186},"screenPosition":{"x":0.46193054,"y":0.45506623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.63544,"y":179.95387,"z":-67.872635},"screenPosition":{"x":0.5039921,"y":0.45547283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.80333,"y":180.86961,"z":-66.32573},"screenPosition":{"x":0.5378786,"y":0.3227989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.576225,"y":202.57741,"z":-83.52382},"screenPosition":{"x":0.4952214,"y":0.29818195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.53661,"y":217.3696,"z":-96.86191},"screenPosition":{"x":0.46136,"y":0.32193762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.96581,"y":184.19273,"z":-63.905983},"screenPosition":{"x":0.43732998,"y":0.3875106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.16352,"y":183.68657,"z":-64.88385},"screenPosition":{"x":0.41757575,"y":0.37615752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.26041,"y":181.919,"z":-67.0208},"screenPosition":{"x":0.40969184,"y":0.45858884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.49715,"y":180.2178,"z":-68.9184},"screenPosition":{"x":0.41666552,"y":0.5635872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.61362,"y":178.0501,"z":-71.10615},"screenPosition":{"x":0.44036397,"y":0.67597264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.82272,"y":176.68372,"z":-71.85688},"screenPosition":{"x":0.4957487,"y":0.688475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.44443,"y":177.5935,"z":-70.21033},"screenPosition":{"x":0.5326872,"y":0.57366353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.77345,"y":178.9005,"z":-68.46316},"screenPosition":{"x":0.54595536,"y":0.46613953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.17541,"y":181.01424,"z":-66.04633},"screenPosition":{"x":0.5410649,"y":0.32746822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.064705,"y":183.24768,"z":-65.47322},"screenPosition":{"x":0.5070639,"y":0.27764258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.70081,"y":215.86792,"z":-96.81433},"screenPosition":{"x":0.46635348,"y":0.37420118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.66482,"y":183.73512,"z":-64.34558},"screenPosition":{"x":0.4396549,"y":0.38532087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.89691,"y":183.41864,"z":-65.12368},"screenPosition":{"x":0.41799024,"y":0.34520644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.53117,"y":182.61433,"z":-66.510864},"screenPosition":{"x":0.38974085,"y":0.44034922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.54633,"y":180.99733,"z":-68.46806},"screenPosition":{"x":0.38648397,"y":0.55439603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.12725,"y":178.9861,"z":-70.5757},"screenPosition":{"x":0.4034647,"y":0.66590637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.725296,"y":176.87236,"z":-72.99252},"screenPosition":{"x":0.40832368,"y":0.80183655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.19024,"y":175.21675,"z":-74.30204},"screenPosition":{"x":0.4496912,"y":0.8541193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.001205,"y":174.37086,"z":-74.99172},"screenPosition":{"x":0.4694989,"y":0.88274693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.412315,"y":173.32045,"z":-75.632065},"screenPosition":{"x":0.5069408,"y":0.93266743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.81695,"y":172.53499,"z":-75.982765},"screenPosition":{"x":0.5450496,"y":0.8979069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.010765,"y":172.39088,"z":-75.59445},"screenPosition":{"x":0.5809849,"y":0.85581154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.71836,"y":173.57753,"z":-73.85754},"screenPosition":{"x":0.6026417,"y":0.74413955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.16766,"y":175.35103,"z":-71.82024},"screenPosition":{"x":0.5992621,"y":0.6292682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.13722,"y":178.19032,"z":-68.72398},"screenPosition":{"x":0.5830696,"y":0.46062374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.93889,"y":180.11386,"z":-67.174644},"screenPosition":{"x":0.5368039,"y":0.3972886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.37947,"y":179.84839,"z":-68.132},"screenPosition":{"x":0.49532554,"y":0.4750776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.12337,"y":179.34816,"z":-69.20951},"screenPosition":{"x":0.46393013,"y":0.5541954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.37723,"y":177.54445,"z":-71.416306},"screenPosition":{"x":0.4587778,"y":0.68360275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.76263,"y":174.9523,"z":-73.92398},"screenPosition":{"x":0.49410066,"y":0.80793726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.75664,"y":173.40515,"z":-75.02395},"screenPosition":{"x":0.54072464,"y":0.84530234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.14378,"y":174.92906,"z":-72.8577},"screenPosition":{"x":0.5644712,"y":0.70792085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.36967,"y":175.66699,"z":-71.70985},"screenPosition":{"x":0.58238554,"y":0.63224757},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-60.967766,"y":176.94427,"z":-69.46446},"screenPosition":{"x":0.63129634,"y":0.45969492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.0215,"y":176.44225,"z":-70.49037},"screenPosition":{"x":0.6758066,"y":0.45860595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.60484,"y":173.6355,"z":-72.801025},"screenPosition":{"x":0.6661693,"y":0.64850044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.37896,"y":172.89757,"z":-73.94887},"screenPosition":{"x":0.6484589,"y":0.7242104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.595764,"y":173.80336,"z":-73.58791},"screenPosition":{"x":0.6028643,"y":0.7285707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.61253,"y":175.90768,"z":-71.68934},"screenPosition":{"x":0.56543726,"y":0.640421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.81664,"y":178.13286,"z":-69.11279},"screenPosition":{"x":0.56235504,"y":0.49437732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.616135,"y":179.33548,"z":-68.672844},"screenPosition":{"x":0.5993312,"y":0.40254295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.84924,"y":177.75461,"z":-69.417046},"screenPosition":{"x":0.6410956,"y":0.4412163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.759632,"y":174.68643,"z":-71.492966},"screenPosition":{"x":0.6707745,"y":0.57104766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.822132,"y":172.72919,"z":-73.82969},"screenPosition":{"x":0.6689115,"y":0.70609194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.811222,"y":171.7773,"z":-75.44644},"screenPosition":{"x":0.63708615,"y":0.8163738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.10327,"y":172.7975,"z":-74.975586},"screenPosition":{"x":0.58995634,"y":0.81536144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.771706,"y":174.78444,"z":-73.137085},"screenPosition":{"x":0.55749714,"y":0.7278333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.610214,"y":176.60004,"z":-71.12958},"screenPosition":{"x":0.5489189,"y":0.61743027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.36283,"y":178.1388,"z":-69.21243},"screenPosition":{"x":0.5555368,"y":0.5038264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.07923,"y":178.36812,"z":-68.32493},"screenPosition":{"x":0.5974563,"y":0.4101051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.318428,"y":176.3693,"z":-69.96414},"screenPosition":{"x":0.6433724,"y":0.47739142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.36645,"y":176.98727,"z":-72.21491},"screenPosition":{"x":0.44965875,"y":0.73443556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.142815,"y":178.55328,"z":-70.07845},"screenPosition":{"x":0.46832672,"y":0.6016059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.70872,"y":178.5538,"z":-69.41074},"screenPosition":{"x":0.51127064,"y":0.5396204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.34557,"y":177.84659,"z":-69.7214},"screenPosition":{"x":0.5449522,"y":0.5388557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.83193,"y":176.91058,"z":-70.25184},"screenPosition":{"x":0.5818515,"y":0.54892194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.44089,"y":175.74873,"z":-71.05191},"screenPosition":{"x":0.6185358,"y":0.57457024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.712147,"y":174.63194,"z":-71.931595},"screenPosition":{"x":0.64667434,"y":0.6094992},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-60.45259,"y":169.29063,"z":-77.69475},"screenPosition":{"x":0.6785857,"y":0.9561073},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-55.79875,"y":167.88492,"z":-79.81143},"screenPosition":{"x":0.75013655,"y":0.96587837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.416996,"y":166.56381,"z":-79.29586},"screenPosition":{"x":0.78184336,"y":0.9702082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.251698,"y":165.74518,"z":-79.76623},"screenPosition":{"x":0.8134801,"y":0.97452855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.615463,"y":165.035,"z":-80.027054},"screenPosition":{"x":0.850176,"y":0.97953975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.09534,"y":164.36395,"z":-80.26785},"screenPosition":{"x":0.88520986,"y":0.98432404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.388016,"y":163.96677,"z":-80.36847},"screenPosition":{"x":0.9130783,"y":0.94640785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.63567,"y":163.21747,"z":-80.64932},"screenPosition":{"x":0.9494764,"y":0.9259617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.5242,"y":161.79362,"z":-81.788864},"screenPosition":{"x":0.9817514,"y":0.99750775},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-45.712616,"y":164.0569,"z":-80.52771},"screenPosition":{"x":0.89183193,"y":0.9852283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.273605,"y":164.65266,"z":-80.37678},"screenPosition":{"x":0.8567738,"y":0.9804408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.98938,"y":166.29938,"z":-78.9178},"screenPosition":{"x":0.82941175,"y":0.9093645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.34631,"y":168.061,"z":-76.68121},"screenPosition":{"x":0.83806723,"y":0.7627006},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-44.04813,"y":165.09892,"z":-79.07018},"screenPosition":{"x":0.90768766,"y":0.8647237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.944843,"y":164.13515,"z":-80.487656},"screenPosition":{"x":0.88849944,"y":0.9847732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.615463,"y":165.035,"z":-80.027054},"screenPosition":{"x":0.850176,"y":0.97953975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.966858,"y":166.25111,"z":-80.65101},"screenPosition":{"x":0.82010114,"y":0.97543275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.15272,"y":166.99022,"z":-80.271194},"screenPosition":{"x":0.7884504,"y":0.9711105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.12848,"y":167.3884,"z":-78.92513},"screenPosition":{"x":0.7435068,"y":0.964973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.97763,"y":169.36644,"z":-76.93717},"screenPosition":{"x":0.7241137,"y":0.8538601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.82262,"y":170.91707,"z":-75.21931},"screenPosition":{"x":0.717001,"y":0.75926054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.14333,"y":171.36926,"z":-74.01236},"screenPosition":{"x":0.7603209,"y":0.6487698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.07273,"y":169.87015,"z":-75.24177},"screenPosition":{"x":0.79475605,"y":0.69923174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.827755,"y":167.72025,"z":-77.72844},"screenPosition":{"x":0.79812723,"y":0.85841054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.687767,"y":167.25914,"z":-78.78593},"screenPosition":{"x":0.76189566,"y":0.9674842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.962696,"y":168.38187,"z":-78.00588},"screenPosition":{"x":0.7300475,"y":0.9118801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.366703,"y":169.0138,"z":-77.78511},"screenPosition":{"x":0.69629425,"y":0.9178388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.21585,"y":170.99184,"z":-75.79714},"screenPosition":{"x":0.6741288,"y":0.8160521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.61535,"y":173.40321,"z":-73.63871},"screenPosition":{"x":0.63001317,"y":0.71656543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.10368,"y":173.98167,"z":-72.52115},"screenPosition":{"x":0.6580795,"y":0.6370195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.594334,"y":173.8678,"z":-71.96334},"screenPosition":{"x":0.7029303,"y":0.5646686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.902164,"y":171.8536,"z":-74.02116},"screenPosition":{"x":0.72304565,"y":0.6872088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.220497,"y":169.60712,"z":-76.91666},"screenPosition":{"x":0.7071654,"y":0.8620334},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-62.608864,"y":173.66817,"z":-73.34906},"screenPosition":{"x":0.62857956,"y":0.70077676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.3398,"y":173.69786,"z":-73.84728},"screenPosition":{"x":0.5942531,"y":0.74828756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.13104,"y":172.8574,"z":-75.30431},"screenPosition":{"x":0.56424284,"y":0.8483871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.658134,"y":171.45139,"z":-76.74278},"screenPosition":{"x":0.5769172,"y":0.9422234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.34889,"y":170.82838,"z":-78.37657},"screenPosition":{"x":0.6129241,"y":0.99233425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.2222,"y":170.33215,"z":-76.90494},"screenPosition":{"x":0.652888,"y":0.8913046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.12934,"y":172.13239,"z":-75.31603},"screenPosition":{"x":0.618529,"y":0.81913173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.30112,"y":172.68607,"z":-75.13531},"screenPosition":{"x":0.5881119,"y":0.8254998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.84069,"y":172.56223,"z":-75.76345},"screenPosition":{"x":0.5570997,"y":0.8786811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.82759,"y":172.69742,"z":-76.002304},"screenPosition":{"x":0.53026885,"y":0.9358531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.313324,"y":173.1788,"z":-75.96128},"screenPosition":{"x":0.49693865,"y":0.93130153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.10006,"y":174.11778,"z":-75.48065},"screenPosition":{"x":0.45695528,"y":0.9258414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.314674,"y":176.11066,"z":-73.7418},"screenPosition":{"x":0.41790557,"y":0.83951926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.34576,"y":180.61693,"z":-70.203026},"screenPosition":{"x":0.30367053,"y":0.69958603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.096054,"y":182.84804,"z":-67.72613},"screenPosition":{"x":0.29377005,"y":0.56299144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.003815,"y":183.2309,"z":-66.70869},"screenPosition":{"x":0.33023596,"y":0.48457542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.21709,"y":182.29192,"z":-67.189316},"screenPosition":{"x":0.37053886,"y":0.4898532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.10561,"y":180.86807,"z":-68.32885},"screenPosition":{"x":0.40525812,"y":0.5360612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.46079,"y":178.51364,"z":-70.76619},"screenPosition":{"x":0.42706332,"y":0.6638129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.813515,"y":176.45685,"z":-73.46192},"screenPosition":{"x":0.40965274,"y":0.827987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.30341,"y":177.36562,"z":-73.15079},"screenPosition":{"x":0.36069655,"y":0.8371876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.69445,"y":178.52747,"z":-72.350716},"screenPosition":{"x":0.32401225,"y":0.8115393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.334984,"y":180.05977,"z":-71.00163},"screenPosition":{"x":0.2945515,"y":0.7504188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.184135,"y":182.0378,"z":-69.013664},"screenPosition":{"x":0.27238595,"y":0.64863205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.16236,"y":183.52504,"z":-67.58497},"screenPosition":{"x":0.25157478,"y":0.57825863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.564316,"y":185.63878,"z":-65.168144},"screenPosition":{"x":0.32103726,"y":0.49704108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.121414,"y":186.59662,"z":-63.65103},"screenPosition":{"x":0.33819702,"y":0.4379389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.089485,"y":186.1093,"z":-63.592415},"screenPosition":{"x":0.3620991,"y":0.41542667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.96076,"y":184.39326,"z":-65.24091},"screenPosition":{"x":0.36494735,"y":0.43491405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.45763,"y":183.22496,"z":-66.60905},"screenPosition":{"x":0.3371227,"y":0.4751097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.29622,"y":182.04425,"z":-68.4456},"screenPosition":{"x":0.3084646,"y":0.5961487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.536766,"y":182.9773,"z":-67.86533},"screenPosition":{"x":0.27499798,"y":0.5813314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.0311,"y":185.10292,"z":-65.6478},"screenPosition":{"x":0.32527086,"y":0.49305367},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-81.99479,"y":186.78978,"z":-62.83337},"screenPosition":{"x":0.36297515,"y":0.41460156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.541466,"y":184.98361,"z":-64.32263},"screenPosition":{"x":0.3854511,"y":0.4363728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.71592,"y":182.63809,"z":-66.90944},"screenPosition":{"x":0.3623077,"y":0.4784105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.54387,"y":181.29495,"z":-68.726456},"screenPosition":{"x":0.3472593,"y":0.5908544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.29193,"y":181.22212,"z":-69.53386},"screenPosition":{"x":0.30082723,"y":0.6627812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.99474,"y":183.39876,"z":-67.49558},"screenPosition":{"x":0.26692194,"y":0.5646831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.52577,"y":185.0217,"z":-65.63802},"screenPosition":{"x":0.3293543,"y":0.48920768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.01411,"y":185.60017,"z":-64.52046},"screenPosition":{"x":0.3497356,"y":0.4700115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.89164,"y":186.22073,"z":-63.432693},"screenPosition":{"x":0.36367822,"y":0.4139394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.68118,"y":184.65524,"z":-64.90144},"screenPosition":{"x":0.37631717,"y":0.44497558},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-85.37366,"y":181.07156,"z":-69.71361},"screenPosition":{"x":0.30068558,"y":0.6731675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.51387,"y":178.93109,"z":-71.68204},"screenPosition":{"x":0.3364206,"y":0.7663435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.97233,"y":177.54044,"z":-72.701904},"screenPosition":{"x":0.3763226,"y":0.8028227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.26282,"y":178.23035,"z":-71.424614},"screenPosition":{"x":0.4061808,"y":0.7130954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.1209,"y":179.6458,"z":-69.4679},"screenPosition":{"x":0.42470548,"y":0.5906538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.33798,"y":181.34105,"z":-67.47066},"screenPosition":{"x":0.42460135,"y":0.47616407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.804405,"y":183.01202,"z":-65.74254},"screenPosition":{"x":0.40902072,"y":0.3856961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.20622,"y":184.73105,"z":-64.14386},"screenPosition":{"x":0.4039666,"y":0.41893396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.58001,"y":185.6007,"z":-63.852753},"screenPosition":{"x":0.37390232,"y":0.40430978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.80181,"y":182.91493,"z":-66.81908},"screenPosition":{"x":0.34708357,"y":0.48155868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.9118,"y":181.01218,"z":-68.71717},"screenPosition":{"x":0.36932075,"y":0.5781514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.36159,"y":180.97357,"z":-68.06949},"screenPosition":{"x":0.41394514,"y":0.51638734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.537796,"y":182.7441,"z":-65.98236},"screenPosition":{"x":0.41391268,"y":0.39670363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.72048,"y":184.24968,"z":-64.18488},"screenPosition":{"x":0.42354697,"y":0.40049213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.29006,"y":186.4897,"z":-61.85745},"screenPosition":{"x":0.4153248,"y":0.36529595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.60586,"y":187.53714,"z":-61.167282},"screenPosition":{"x":0.39752272,"y":0.38206288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.64855,"y":188.58162,"z":-60.42729},"screenPosition":{"x":0.3742244,"y":0.32734087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.34278,"y":189.114,"z":-60.565525},"screenPosition":{"x":0.34426877,"y":0.34721372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.49582,"y":186.04887,"z":-63.931396},"screenPosition":{"x":0.35097995,"y":0.42589927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.41457,"y":184.38731,"z":-65.141266},"screenPosition":{"x":0.3784149,"y":0.44299987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.30937,"y":185.3001,"z":-63.54454},"screenPosition":{"x":0.40322477,"y":0.41963264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.89621,"y":187.83232,"z":-60.70814},"screenPosition":{"x":0.39760157,"y":0.32505506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.98612,"y":188.14183,"z":-61.16582},"screenPosition":{"x":0.36559615,"y":0.35689542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.76904,"y":186.44658,"z":-63.16307},"screenPosition":{"x":0.36468557,"y":0.4129906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.47051,"y":185.69133,"z":-63.34428},"screenPosition":{"x":0.3904483,"y":0.38872594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.20368,"y":188.02498,"z":-60.55819},"screenPosition":{"x":0.39461958,"y":0.3214734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.79673,"y":189.50279,"z":-59.647736},"screenPosition":{"x":0.3623278,"y":0.306791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.59851,"y":182.04271,"z":-70.44873},"screenPosition":{"x":0.17970724,"y":0.78206205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.25898,"y":180.96802,"z":-71.35821},"screenPosition":{"x":0.20265822,"y":0.82156384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.59484,"y":179.80319,"z":-72.10846},"screenPosition":{"x":0.24277517,"y":0.84246105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.749985,"y":178.6473,"z":-73.00817},"screenPosition":{"x":0.27366385,"y":0.900811},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-92.83941,"y":180.4095,"z":-73.37536},"screenPosition":{"x":0.2136414,"y":0.9035476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.49536,"y":181.47366,"z":-71.04805},"screenPosition":{"x":0.18430904,"y":0.8138876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.3641,"y":183.05154,"z":-69.11088},"screenPosition":{"x":0.18942147,"y":0.7000416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.60062,"y":183.95192,"z":-67.98257},"screenPosition":{"x":0.1934743,"y":0.63302916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.22402,"y":185.58675,"z":-66.3243},"screenPosition":{"x":0.27475047,"y":0.5406364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.290596,"y":187.05319,"z":-64.54685},"screenPosition":{"x":0.28085884,"y":0.49194294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.318634,"y":187.90257,"z":-63.23928},"screenPosition":{"x":0.29594976,"y":0.46600592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.757645,"y":187.3068,"z":-63.39021},"screenPosition":{"x":0.31736216,"y":0.45756224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.11712,"y":185.77449,"z":-64.73929},"screenPosition":{"x":0.33279556,"y":0.4859665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.743065,"y":184.11539,"z":-66.666695},"screenPosition":{"x":0.26577485,"y":0.51767445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.717354,"y":182.57365,"z":-68.53402},"screenPosition":{"x":0.26271972,"y":0.62652934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.11291,"y":181.95607,"z":-69.67161},"screenPosition":{"x":0.2362357,"y":0.70630944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.90612,"y":182.63008,"z":-69.48063},"screenPosition":{"x":0.19741437,"y":0.7167817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.27356,"y":184.15942,"z":-68.081726},"screenPosition":{"x":0.17134121,"y":0.6509262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.82185,"y":186.07457,"z":-65.71521},"screenPosition":{"x":0.27816206,"y":0.53742313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.69707,"y":187.3875,"z":-64.06769},"screenPosition":{"x":0.28753015,"y":0.49946097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.00468,"y":187.97487,"z":-63.099586},"screenPosition":{"x":0.29955474,"y":0.4743342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.74468,"y":187.83672,"z":-62.810913},"screenPosition":{"x":0.3176182,"y":0.4573211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.94069,"y":186.60553,"z":-63.8005},"screenPosition":{"x":0.3316849,"y":0.44407237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.49139,"y":184.83202,"z":-65.8378},"screenPosition":{"x":0.31962612,"y":0.48551255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.04625,"y":183.48592,"z":-67.604996},"screenPosition":{"x":0.25322884,"y":0.5784731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.482666,"y":182.79305,"z":-68.83246},"screenPosition":{"x":0.22682407,"y":0.6634131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.62006,"y":183.15704,"z":-68.85151},"screenPosition":{"x":0.1978709,"y":0.68043965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.03901,"y":184.77353,"z":-67.56202},"screenPosition":{"x":0.15818386,"y":0.6283784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.2741,"y":217.3696,"z":-96.86191},"screenPosition":{"x":0.24629971,"y":0.52449256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.13052,"y":217.3696,"z":-96.86191},"screenPosition":{"x":0.2729404,"y":0.48774958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.80902,"y":186.99922,"z":-64.317764},"screenPosition":{"x":0.2953578,"y":0.5034665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.977,"y":184.91867,"z":-66.61492},"screenPosition":{"x":0.20813638,"y":0.5465027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.64148,"y":183.87665,"z":-68.07244},"screenPosition":{"x":0.19340491,"y":0.6382231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.2284,"y":183.41257,"z":-69.08011},"screenPosition":{"x":0.16375938,"y":0.7123684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.198044,"y":183.25555,"z":-69.82792},"screenPosition":{"x":0.12753744,"y":0.7752398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.7052,"y":184.45653,"z":-69.00783},"screenPosition":{"x":0.08917265,"y":0.74937004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.78634,"y":186.63892,"z":-68.33328},"screenPosition":{"x":0.065545045,"y":0.6852466},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-81.70618,"y":217.3696,"z":-96.86191},"screenPosition":{"x":0.2550891,"y":0.5321224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.26243,"y":185.8091,"z":-66.67257},"screenPosition":{"x":0.13683899,"y":0.58914125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.55483,"y":184.62245,"z":-68.40948},"screenPosition":{"x":0.115096636,"y":0.7007519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.081436,"y":185.02855,"z":-68.45833},"screenPosition":{"x":0.081503436,"y":0.72219634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.70738,"y":183.36945,"z":-70.38573},"screenPosition":{"x":0.08298469,"y":0.8318098},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-96.59837,"y":181.64798,"z":-71.26688},"screenPosition":{"x":0.15692654,"y":0.84155434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.344864,"y":181.24486,"z":-71.26785},"screenPosition":{"x":0.18746209,"y":0.82476467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.93402,"y":183.08473,"z":-68.99121},"screenPosition":{"x":0.19446003,"y":0.6903618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.08001,"y":185.09299,"z":-66.83375},"screenPosition":{"x":0.18081851,"y":0.5741233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.57004,"y":186.39647,"z":-65.70447},"screenPosition":{"x":0.26383162,"y":0.5509203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.78666,"y":217.3696,"z":-96.86191},"screenPosition":{"x":0.2782609,"y":0.49438986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.222046,"y":217.3696,"z":-96.86191},"screenPosition":{"x":0.29836467,"y":0.47545508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.56825,"y":188.66776,"z":-61.87212},"screenPosition":{"x":0.3133444,"y":0.4077894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.55148,"y":186.56343,"z":-63.770702},"screenPosition":{"x":0.3347722,"y":0.44116458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.83557,"y":184.522,"z":-66.04783},"screenPosition":{"x":0.27475056,"y":0.47722968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.8205,"y":183.1427,"z":-67.93469},"screenPosition":{"x":0.25809264,"y":0.5947203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.09346,"y":182.75095,"z":-68.802666},"screenPosition":{"x":0.23183909,"y":0.6588989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.15364,"y":181.48605,"z":-70.57963},"screenPosition":{"x":0.21345773,"y":0.7709525},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-231636/brain-C79350-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9352415967329515,0.3151275574552157,0.16130027362874838,0.0,0.3291517264707394,0.6063340711366906,0.7238909690969616,0.0,0.13031614137063335,0.7301052093439112,-0.6707936244383608,0.0,-60.16966900360461,262.5031483012004,-147.3231254958759,1.0]},"baseImage":"20190823-231636/base.webp","version":0,"savedAt":1.566602320516E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-232344-v0.json b/data/mapping/BAAAHS/dwayman/20190823-232344-v0.json new file mode 100644 index 0000000000..cc33341ebc --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-232344-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566602624295E12,"surfaces":[{"brainId":"CAFD8C","panelName":"28D","pixels":[{"modelPosition":{"x":-257.84668,"y":121.229706,"z":-88.43199},"screenPosition":{"x":0.3586179,"y":0.93577814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.8599,"y":120.39397,"z":-88.12296},"screenPosition":{"x":0.3582174,"y":0.90471303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.34454,"y":118.251175,"z":-87.904564},"screenPosition":{"x":0.33261684,"y":0.860857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.0792,"y":115.93858,"z":-88.08624},"screenPosition":{"x":0.2872714,"y":0.83905965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.95386,"y":115.503784,"z":-87.962494},"screenPosition":{"x":0.28535047,"y":0.82562137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.07858,"y":115.33877,"z":-87.53119},"screenPosition":{"x":0.3010986,"y":0.7964757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.25906,"y":115.5091,"z":-87.03874},"screenPosition":{"x":0.32496116,"y":0.76816875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.55063,"y":115.5107,"z":-86.76161},"screenPosition":{"x":0.33686915,"y":0.75082904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.4538,"y":116.282974,"z":-86.45472},"screenPosition":{"x":0.36258882,"y":0.7426674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.62146,"y":118.12851,"z":-85.93371},"screenPosition":{"x":0.41499862,"y":0.73621726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.59482,"y":120.03963,"z":-85.65912},"screenPosition":{"x":0.45791832,"y":0.74603397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.8042,"y":121.816925,"z":-85.35357},"screenPosition":{"x":0.49999952,"y":0.75208384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.8612,"y":124.23108,"z":-84.987274},"screenPosition":{"x":0.5550599,"y":0.763306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.50128,"y":126.20885,"z":-84.77436},"screenPosition":{"x":0.59643537,"y":0.77793574},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-270.7821,"y":131.20377,"z":-84.19595},"screenPosition":{"x":0.70267254,"y":0.8123465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.1577,"y":132.10829,"z":-84.19716},"screenPosition":{"x":0.7172227,"y":0.8250508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.36688,"y":133.24606,"z":-84.414215},"screenPosition":{"x":0.7266395,"y":0.8547761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.65967,"y":134.88687,"z":-84.539566},"screenPosition":{"x":0.748036,"y":0.88574636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.38904,"y":136.10338,"z":-85.66674},"screenPosition":{"x":0.75874317,"y":0.9108429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.172,"y":138.67717,"z":-84.46929},"screenPosition":{"x":0.8110628,"y":0.93772584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.99393,"y":140.82594,"z":-83.76524},"screenPosition":{"x":0.87632024,"y":0.9240372},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-270.39136,"y":142.3941,"z":-83.67167},"screenPosition":{"x":0.95126265,"y":0.8834884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.7051,"y":141.93419,"z":-82.424286},"screenPosition":{"x":0.96078163,"y":0.8466638},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-274.5354,"y":137.2101,"z":-82.51038},"screenPosition":{"x":0.8873279,"y":0.7831192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.2292,"y":136.20508,"z":-82.50904},"screenPosition":{"x":0.87099355,"y":0.7689884},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-278.0737,"y":132.08452,"z":-82.50356},"screenPosition":{"x":0.80402356,"y":0.7110528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.60025,"y":130.07344,"z":-82.68564},"screenPosition":{"x":0.74879664,"y":0.70216006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.0572,"y":127.962906,"z":-82.68283},"screenPosition":{"x":0.7142816,"y":0.67211825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.55585,"y":125.78414,"z":-82.89548},"screenPosition":{"x":0.6699527,"y":0.6547699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.2071,"y":123.16845,"z":-83.353874},"screenPosition":{"x":0.6076547,"y":0.64644456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.2201,"y":121.25362,"z":-84.27509},"screenPosition":{"x":0.5369842,"y":0.6768762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.56677,"y":120.11159,"z":-84.797035},"screenPosition":{"x":0.49601147,"y":0.69331366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.13684,"y":120.71088,"z":-85.44447},"screenPosition":{"x":0.47800067,"y":0.74199855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.93036,"y":123.49106,"z":-85.50975},"screenPosition":{"x":0.5206193,"y":0.78544736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.55704,"y":126.544205,"z":-84.71322},"screenPosition":{"x":0.60445076,"y":0.7787739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.33612,"y":128.96048,"z":-83.977425},"screenPosition":{"x":0.6754384,"y":0.767064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.64233,"y":130.40508,"z":-83.271126},"screenPosition":{"x":0.72918475,"y":0.7433664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.4751,"y":129.83858,"z":-82.74691},"screenPosition":{"x":0.7424459,"y":0.70271575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.73734,"y":127.39375,"z":-82.62049},"screenPosition":{"x":0.7079809,"y":0.6603336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.26324,"y":124.34327,"z":-82.95514},"screenPosition":{"x":0.6438228,"y":0.638129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.30353,"y":121.99629,"z":-83.29073},"screenPosition":{"x":0.5912457,"y":0.6259702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.67746,"y":119.982544,"z":-83.934685},"screenPosition":{"x":0.53082836,"y":0.6377139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.37103,"y":118.33801,"z":-84.45596},"screenPosition":{"x":0.48168564,"y":0.64701694},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-275.93842,"y":114.579765,"z":-85.52869},"screenPosition":{"x":0.37445572,"y":0.66088384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.92334,"y":112.29731,"z":-86.295456},"screenPosition":{"x":0.30439717,"y":0.6764947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.3809,"y":110.7866,"z":-86.8477},"screenPosition":{"x":0.25611132,"y":0.6896175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.49158,"y":109.778404,"z":-87.40062},"screenPosition":{"x":0.2047538,"y":0.7096308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.31793,"y":111.47573,"z":-88.86525},"screenPosition":{"x":0.2200947,"y":0.76279896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.89667,"y":112.889694,"z":-88.14377},"screenPosition":{"x":0.23035876,"y":0.798372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.9811,"y":114.632065,"z":-88.0845},"screenPosition":{"x":0.2658812,"y":0.82101035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.28754,"y":115.83702,"z":-88.27086},"screenPosition":{"x":0.27769923,"y":0.8492035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.63547,"y":116.773796,"z":-88.48765},"screenPosition":{"x":0.2836674,"y":0.8759805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.5124,"y":119.85707,"z":-88.27621},"screenPosition":{"x":0.34291333,"y":0.906559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.25015,"y":122.74148,"z":-87.69499},"screenPosition":{"x":0.41483125,"y":0.9111487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.8754,"y":123.51588,"z":-87.0186},"screenPosition":{"x":0.45638505,"y":0.8797143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.82693,"y":136.77211,"z":-82.94089},"screenPosition":{"x":0.847234,"y":0.8126496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.61984,"y":138.5129,"z":-83.158745},"screenPosition":{"x":0.8663003,"y":0.8507997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.13458,"y":139.61627,"z":-83.529724},"screenPosition":{"x":0.8665262,"y":0.89040595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.5102,"y":139.44917,"z":-84.08007},"screenPosition":{"x":0.8407324,"y":0.9236886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.7471,"y":136.59554,"z":-84.88421},"screenPosition":{"x":0.76001,"y":0.9330724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.01328,"y":134.37329,"z":-86.21543},"screenPosition":{"x":0.7070312,"y":0.92064816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.33896,"y":132.19922,"z":-85.860054},"screenPosition":{"x":0.6455228,"y":0.92693824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.22684,"y":130.4891,"z":-86.1349},"screenPosition":{"x":0.607999,"y":0.9231811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.71146,"y":127.90674,"z":-86.624146},"screenPosition":{"x":0.544931,"y":0.91725254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.3623,"y":124.89117,"z":-86.71251},"screenPosition":{"x":0.49196047,"y":0.8802114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.73605,"y":123.117065,"z":-86.46381},"screenPosition":{"x":0.47358316,"y":0.83936787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.05508,"y":122.88646,"z":-85.78608},"screenPosition":{"x":0.49889317,"y":0.79407203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.62415,"y":122.486046,"z":-85.508415},"screenPosition":{"x":0.50428367,"y":0.7711826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.19363,"y":122.925095,"z":-84.89316},"screenPosition":{"x":0.5377481,"y":0.7389554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.45773,"y":123.598465,"z":-84.309006},"screenPosition":{"x":0.5737815,"y":0.71208054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.06998,"y":125.84813,"z":-83.41903},"screenPosition":{"x":0.64858055,"y":0.6883231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.30804,"y":129.03244,"z":-83.11534},"screenPosition":{"x":0.71352243,"y":0.7143172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.55954,"y":131.14137,"z":-83.39528},"screenPosition":{"x":0.7359359,"y":0.7615333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.5868,"y":129.83008,"z":-84.22492},"screenPosition":{"x":0.67902595,"y":0.79476905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.29398,"y":127.74969,"z":-84.8072},"screenPosition":{"x":0.620162,"y":0.8017262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.23718,"y":125.53547,"z":-85.35851},"screenPosition":{"x":0.56044126,"y":0.80486363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.31897,"y":122.92031,"z":-85.72454},"screenPosition":{"x":0.50208545,"y":0.79072654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.45605,"y":120.24063,"z":-85.659386},"screenPosition":{"x":0.46116397,"y":0.7488274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.77634,"y":122.08882,"z":-84.6765},"screenPosition":{"x":0.53338236,"y":0.7136469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.55603,"y":125.5445,"z":-83.788124},"screenPosition":{"x":0.6278249,"y":0.707057},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-270.91965,"y":128.92397,"z":-84.50084},"screenPosition":{"x":0.6524327,"y":0.7991907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.308,"y":127.71371,"z":-85.23824},"screenPosition":{"x":0.60112005,"y":0.8280996},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-267.90228,"y":122.68386,"z":-86.062935},"screenPosition":{"x":0.48376834,"y":0.80855554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.7342,"y":120.438446,"z":-86.21391},"screenPosition":{"x":0.44067928,"y":0.78628635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.99664,"y":118.193565,"z":-86.27251},"screenPosition":{"x":0.40155393,"y":0.7582638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.69022,"y":116.98861,"z":-86.08615},"screenPosition":{"x":0.38987872,"y":0.7296394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.05054,"y":115.8503,"z":-85.96147},"screenPosition":{"x":0.3766551,"y":0.7056669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.71564,"y":113.43827,"z":-85.95826},"screenPosition":{"x":0.33744457,"y":0.67156595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.06128,"y":110.856964,"z":-86.26275},"screenPosition":{"x":0.28230408,"y":0.6541307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.78232,"y":108.54066,"z":-87.09105},"screenPosition":{"x":0.19434063,"y":0.67354107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.8808,"y":110.247055,"z":-87.46283},"screenPosition":{"x":0.20781302,"y":0.7202334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.99353,"y":112.99657,"z":-87.03539},"screenPosition":{"x":0.28412214,"y":0.73250675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.703,"y":114.87383,"z":-86.82235},"screenPosition":{"x":0.323864,"y":0.74570996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.35736,"y":117.45514,"z":-86.51786},"screenPosition":{"x":0.3790045,"y":0.7631452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.42838,"y":119.83331,"z":-86.58261},"screenPosition":{"x":0.41502294,"y":0.8007408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.9836,"y":118.789665,"z":-87.47419},"screenPosition":{"x":0.35982662,"y":0.84161603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.53925,"y":118.58547,"z":-88.02818},"screenPosition":{"x":0.33285797,"y":0.87273353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.83017,"y":117.108086,"z":-88.61127},"screenPosition":{"x":0.2838803,"y":0.88820213},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-255.5832,"y":121.595726,"z":-88.86357},"screenPosition":{"x":0.34611017,"y":0.9678575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.65424,"y":124.41348,"z":-88.22069},"screenPosition":{"x":0.41933274,"y":0.96435666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.91833,"y":125.08686,"z":-87.636536},"screenPosition":{"x":0.45555907,"y":0.94042146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.7102,"y":125.82794,"z":-86.9293},"screenPosition":{"x":0.49795827,"y":0.9069497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.93137,"y":124.49076,"z":-86.434845},"screenPosition":{"x":0.49731746,"y":0.8572455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.2764,"y":120.870056,"z":-86.891914},"screenPosition":{"x":0.41866457,"y":0.83443534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.49734,"y":118.45377,"z":-87.62771},"screenPosition":{"x":0.34779775,"y":0.84624904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.17685,"y":116.40564,"z":-88.425575},"screenPosition":{"x":0.28020704,"y":0.86730707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.0802,"y":116.938286,"z":-89.01134},"screenPosition":{"x":0.2620752,"y":0.9082941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.19336,"y":120.08768,"z":-88.95394},"screenPosition":{"x":0.31764302,"y":0.9522136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.22247,"y":122.33415,"z":-88.61822},"screenPosition":{"x":0.3686596,"y":0.9629761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.32056,"y":124.08025,"z":-87.91232},"screenPosition":{"x":0.42733386,"y":0.9433167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.89108,"y":125.95858,"z":-87.51453},"screenPosition":{"x":0.47494572,"y":0.9448963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.3784,"y":128.17332,"z":-86.870834},"screenPosition":{"x":0.5383958,"y":0.9355594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.721,"y":122.15334,"z":-85.10767},"screenPosition":{"x":0.5160147,"y":0.74149656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.0813,"y":120.575455,"z":-85.69063},"screenPosition":{"x":0.46524394,"y":0.7553812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.7751,"y":119.13087,"z":-86.39693},"screenPosition":{"x":0.4115155,"y":0.7792488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.4009,"y":120.06551,"z":-86.983215},"screenPosition":{"x":0.40165836,"y":0.82900035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.19382,"y":121.8063,"z":-87.20108},"screenPosition":{"x":0.42072466,"y":0.8671505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.86136,"y":123.11228,"z":-87.29519},"screenPosition":{"x":0.4379972,"y":0.891448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.52893,"y":124.41827,"z":-87.389305},"screenPosition":{"x":0.45526972,"y":0.9157456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.3633,"y":125.89087,"z":-87.6376},"screenPosition":{"x":0.46849525,"y":0.9512028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.2265,"y":127.09519,"z":-87.89041},"screenPosition":{"x":0.47639298,"y":0.98649937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.5676,"y":125.952736,"z":-88.40232},"screenPosition":{"x":0.43541306,"y":1.0029845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.45277,"y":123.60217,"z":-89.19676},"screenPosition":{"x":0.36291876,"y":1.0195833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.23547,"y":120.41932,"z":-89.53944},"screenPosition":{"x":0.28587583,"y":0.9907818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.59558,"y":119.08107,"z":-89.22973},"screenPosition":{"x":0.27502438,"y":0.95317316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.62305,"y":118.84887,"z":-88.829124},"screenPosition":{"x":0.30278078,"y":0.9269492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.66373,"y":117.341354,"z":-88.82712},"screenPosition":{"x":0.26091513,"y":0.9042736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.7323,"y":116.00151,"z":-88.79454},"screenPosition":{"x":0.25448102,"y":0.88197434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.81448,"y":114.66539,"z":-88.11534},"screenPosition":{"x":0.26513743,"y":0.8233219},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-267.19238,"y":119.96714,"z":-86.61358},"screenPosition":{"x":0.41586658,"y":0.8044497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.83267,"y":122.144844,"z":-86.585686},"screenPosition":{"x":0.45259482,"y":0.83354986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.8341,"y":124.42358,"z":-86.46555},"screenPosition":{"x":0.49489778,"y":0.85818475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.8909,"y":126.19822,"z":-86.62187},"screenPosition":{"x":0.5169525,"y":0.8924391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.03067,"y":127.43649,"z":-86.839066},"screenPosition":{"x":0.527962,"y":0.9237565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.2227,"y":127.091324,"z":-88.52487},"screenPosition":{"x":0.4893755,"y":0.9619183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.60953,"y":125.06268,"z":-89.16824},"screenPosition":{"x":0.42737734,"y":0.9707987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.9173,"y":122.768425,"z":-88.83434},"screenPosition":{"x":0.36965042,"y":0.9846196},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-258.34473,"y":118.011536,"z":-88.79722},"screenPosition":{"x":0.29057562,"y":0.91278684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.55368,"y":119.388954,"z":-88.12163},"screenPosition":{"x":0.34188178,"y":0.8904482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.51303,"y":121.33605,"z":-87.416},"screenPosition":{"x":0.40383556,"y":0.8736331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.23654,"y":123.61691,"z":-86.92636},"screenPosition":{"x":0.46201998,"y":0.87556714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.3084,"y":127.674,"z":-86.31591},"screenPosition":{"x":0.55433184,"y":0.8947463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.80893,"y":128.61343,"z":-86.07082},"screenPosition":{"x":0.5801484,"y":0.8927179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.06042,"y":131.16194,"z":-85.64313},"screenPosition":{"x":0.6400294,"y":0.90200657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.13126,"y":133.34018,"z":-85.52286},"screenPosition":{"x":0.68028104,"y":0.9257203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.09436,"y":134.47528,"z":-86.18308},"screenPosition":{"x":0.712267,"y":0.92412066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.03967,"y":136.79697,"z":-84.79393},"screenPosition":{"x":0.7672719,"y":0.9302026},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-269.14322,"y":143.2568,"z":-83.7838},"screenPosition":{"x":0.9549459,"y":0.8961028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.10858,"y":143.00638,"z":-82.39492},"screenPosition":{"x":0.9713104,"y":0.8705376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.98242,"y":141.33224,"z":-82.23874},"screenPosition":{"x":0.955882,"y":0.8269313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.81415,"y":138.88689,"z":-82.20469},"screenPosition":{"x":0.91511256,"y":0.7916617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.5905,"y":136.50606,"z":-82.60182},"screenPosition":{"x":0.8569279,"y":0.7874875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.90912,"y":134.9964,"z":-82.969315},"screenPosition":{"x":0.8170532,"y":0.7893662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.56076,"y":132.7806,"z":-83.79775},"screenPosition":{"x":0.7454412,"y":0.8097636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.90744,"y":131.63857,"z":-84.3197},"screenPosition":{"x":0.7039476,"y":0.82572126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.0875,"y":130.52986,"z":-84.87248},"screenPosition":{"x":0.66271466,"y":0.84502774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.32266,"y":128.71713,"z":-85.51671},"screenPosition":{"x":0.6055644,"y":0.8596244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.5025,"y":127.408485,"z":-85.88447},"screenPosition":{"x":0.56847316,"y":0.8640935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.37656,"y":125.494705,"z":-86.62093},"screenPosition":{"x":0.5056531,"y":0.8828082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.69534,"y":124.185005,"z":-87.173454},"screenPosition":{"x":0.46070683,"y":0.8989927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.80685,"y":124.416145,"z":-87.75881},"screenPosition":{"x":0.43941477,"y":0.93875897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.90167,"y":125.43005,"z":-89.051735},"screenPosition":{"x":0.43972048,"y":0.9713335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.0292,"y":126.84799,"z":-88.60204},"screenPosition":{"x":0.48803195,"y":0.9742186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.02756,"y":130.7199,"z":-86.9564},"screenPosition":{"x":0.5748895,"y":0.9803806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.60452,"y":131.3586,"z":-86.540726},"screenPosition":{"x":0.6037136,"y":0.9624997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.06863,"y":131.92781,"z":-86.991005},"screenPosition":{"x":0.64022166,"y":0.94611824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.4624,"y":133.68053,"z":-86.435135},"screenPosition":{"x":0.6863246,"y":0.9245743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.72287,"y":126.150696,"z":-83.23467},"screenPosition":{"x":0.6611062,"y":0.6809319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.7489,"y":123.20018,"z":-83.66184},"screenPosition":{"x":0.5949935,"y":0.66610134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.51083,"y":120.01587,"z":-83.96552},"screenPosition":{"x":0.53003883,"y":0.6400976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.84262,"y":117.2309,"z":-84.73162},"screenPosition":{"x":0.45182526,"y":0.6485856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.9122,"y":116.89076,"z":-85.62414},"screenPosition":{"x":0.40806386,"y":0.69944626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.70612,"y":120.51041,"z":-85.35183},"screenPosition":{"x":0.47876325,"y":0.7335396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.5265,"y":122.458565,"z":-84.46145},"screenPosition":{"x":0.5486616,"y":0.7055026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.51184,"y":121.45515,"z":-84.18298},"screenPosition":{"x":0.5442172,"y":0.67397785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.67725,"y":119.78261,"z":-83.74967},"screenPosition":{"x":0.5354887,"y":0.6233543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.99503,"y":117.03362,"z":-84.084724},"screenPosition":{"x":0.47630432,"y":0.60545933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.67395,"y":114.38567,"z":-84.32754},"screenPosition":{"x":0.42271727,"y":0.5832376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.26987,"y":112.27408,"z":-84.50948},"screenPosition":{"x":0.38048536,"y":0.5647841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.28223,"y":109.75942,"z":-84.87564},"screenPosition":{"x":0.32379982,"y":0.55213624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.60043,"y":107.41032,"z":-85.580734},"screenPosition":{"x":0.25528595,"y":0.5629638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.9473,"y":106.46823,"z":-86.2877},"screenPosition":{"x":0.2097238,"y":0.5937321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.9479,"y":107.068054,"z":-86.84276},"screenPosition":{"x":0.18388073,"y":0.63728935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.25494,"y":109.31241,"z":-86.87653},"screenPosition":{"x":0.23083119,"y":0.6706135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.57645,"y":112.79981,"z":-86.29612},"screenPosition":{"x":0.31258956,"y":0.6835739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.49448,"y":115.215034,"z":-85.74508},"screenPosition":{"x":0.37555286,"y":0.6833427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.12033,"y":117.02884,"z":-84.91611},"screenPosition":{"x":0.44061106,"y":0.657196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.34213,"y":116.73106,"z":-84.26907},"screenPosition":{"x":0.4634688,"y":0.612679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.25726,"y":114.5888,"z":-83.958305},"screenPosition":{"x":0.44183937,"y":0.5630772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.6023,"y":110.968094,"z":-84.41537},"screenPosition":{"x":0.3632125,"y":0.54049057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.11438,"y":107.71395,"z":-85.21163},"screenPosition":{"x":0.27605388,"y":0.5442283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.65576,"y":106.90622,"z":-85.85719},"screenPosition":{"x":0.23522693,"y":0.5730914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.83725,"y":108.076256,"z":-86.28984},"screenPosition":{"x":0.23578766,"y":0.6165825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.06067,"y":109.817566,"z":-86.41532},"screenPosition":{"x":0.2588177,"y":0.6489793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.85397,"y":112.39781,"z":-86.295586},"screenPosition":{"x":0.30603576,"y":0.67791164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.60556,"y":115.046295,"z":-85.960396},"screenPosition":{"x":0.36359608,"y":0.6942685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.3704,"y":116.85903,"z":-85.31618},"screenPosition":{"x":0.4207318,"y":0.679793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.30225,"y":119.03834,"z":-85.011154},"screenPosition":{"x":0.4693381,"y":0.6915223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.8038,"y":121.85662,"z":-84.275894},"screenPosition":{"x":0.5466654,"y":0.6853211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.10983,"y":123.10127,"z":-83.38458},"screenPosition":{"x":0.60525113,"y":0.6474148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.55276,"y":121.026726,"z":-82.95073},"screenPosition":{"x":0.58998835,"y":0.5910853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.46725,"y":117.40549,"z":-83.50017},"screenPosition":{"x":0.5073978,"y":0.574252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.3411,"y":115.29178,"z":-84.05161},"screenPosition":{"x":0.44931054,"y":0.57881594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.479,"y":113.41186,"z":-84.72654},"screenPosition":{"x":0.38974997,"y":0.59437937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.21472,"y":112.53854,"z":-85.12567},"screenPosition":{"x":0.35841623,"y":0.60694766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.36606,"y":110.02282,"z":-85.67658},"screenPosition":{"x":0.29379478,"y":0.6058056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.15607,"y":107.20613,"z":-86.13472},"screenPosition":{"x":0.22823638,"y":0.5946308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.89072,"y":104.89354,"z":-86.3164},"screenPosition":{"x":0.16586335,"y":0.5748451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.61694,"y":103.28156,"z":-87.21593},"screenPosition":{"x":0.15705486,"y":0.54431677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.63556,"y":102.03779,"z":-86.96558},"screenPosition":{"x":0.1474862,"y":0.5111539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.62418,"y":101.3813,"z":-85.38796},"screenPosition":{"x":0.16519986,"y":0.46586823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.7489,"y":101.21628,"z":-84.95665},"screenPosition":{"x":0.18104155,"y":0.43667287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.93063,"y":103.465416,"z":-84.15905},"screenPosition":{"x":0.25181,"y":0.41863775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.4747,"y":107.4548,"z":-83.671684},"screenPosition":{"x":0.33775768,"y":0.44455558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.79538,"y":109.26329,"z":-83.766464},"screenPosition":{"x":0.363192,"y":0.47597736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.78235,"y":110.29897,"z":-84.26051},"screenPosition":{"x":0.35892832,"y":0.5213918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.64233,"y":107.9816,"z":-85.273575},"screenPosition":{"x":0.27775946,"y":0.55186856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.7652,"y":104.2588,"z":-86.00763},"screenPosition":{"x":0.18560362,"y":0.54511625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.20853,"y":102.58413,"z":-85.94382},"screenPosition":{"x":0.1497343,"y":0.51894534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.9849,"y":100.642876,"z":-85.633316},"screenPosition":{"x":0.13622366,"y":0.47212043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.24817,"y":100.07691,"z":-85.016716},"screenPosition":{"x":0.15981854,"y":0.42431065},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-288.25128,"y":105.27391,"z":-84.25383},"screenPosition":{"x":0.27725035,"y":0.45006776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.21143,"y":108.02077,"z":-84.28828},"screenPosition":{"x":0.32057974,"y":0.490976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.76645,"y":106.777176,"z":-84.99484},"screenPosition":{"x":0.2700438,"y":0.51749164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.02847,"y":103.69283,"z":-85.39104},"screenPosition":{"x":0.20277174,"y":0.4986773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.8323,"y":101.0798,"z":-85.38756},"screenPosition":{"x":0.16035813,"y":0.46160698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.42245,"y":112.71632,"z":-83.339966},"screenPosition":{"x":0.4377712,"y":0.49809402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.85297,"y":112.27727,"z":-83.95523},"screenPosition":{"x":0.4042675,"y":0.53026813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.35223,"y":110.69832,"z":-84.72293},"screenPosition":{"x":0.34564385,"y":0.5558644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.68384,"y":107.71342,"z":-85.30401},"screenPosition":{"x":0.27208954,"y":0.5499812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.79327,"y":105.065994,"z":-85.454445},"screenPosition":{"x":0.22251004,"y":0.522011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.9725,"y":103.15753,"z":-85.26715},"screenPosition":{"x":0.19934441,"y":0.4833983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.91574,"y":101.3829,"z":-85.11083},"screenPosition":{"x":0.17709109,"y":0.44860825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.5121,"y":100.11076,"z":-84.95518},"screenPosition":{"x":0.163016,"y":0.4209558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.65146,"y":101.38874,"z":-84.0947},"screenPosition":{"x":0.22069226,"y":0.3853216},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-296.23416,"y":100.99205,"z":-83.17041},"screenPosition":{"x":0.25382784,"y":0.32213446},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-301.41217,"y":97.44437,"z":-82.580635},"screenPosition":{"x":0.22386284,"y":0.24012683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.64716,"y":95.87127,"z":-82.33221},"screenPosition":{"x":0.2118987,"y":0.20833984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.4097,"y":93.72635,"z":-82.483315},"screenPosition":{"x":0.17289217,"y":0.18996102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.20013,"y":91.749115,"z":-82.60385},"screenPosition":{"x":0.13798302,"y":0.17195004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.79605,"y":89.63753,"z":-82.7858},"screenPosition":{"x":0.09658324,"y":0.15304513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.0721,"y":86.95679,"z":-82.905396},"screenPosition":{"x":0.049255222,"y":0.12340056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.0002,"y":86.40938,"z":-83.8199},"screenPosition":{"x":0.034877468,"y":0.10809137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.11908,"y":84.487686,"z":-83.4331},"screenPosition":{"x":0.022951579,"y":0.06404557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.09875,"y":85.485245,"z":-82.47235},"screenPosition":{"x":0.048349757,"y":0.08323361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.80844,"y":87.56245,"z":-82.44432},"screenPosition":{"x":0.08141006,"y":0.10904388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.64264,"y":88.83511,"z":-82.5076},"screenPosition":{"x":0.09779839,"y":0.12878281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.10162,"y":89.60314,"z":-82.93971},"screenPosition":{"x":0.08848121,"y":0.16026507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.03265,"y":90.10352,"z":-83.30988},"screenPosition":{"x":0.077844836,"y":0.18573894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.3942,"y":90.60444,"z":-83.58768},"screenPosition":{"x":0.071360774,"y":0.20657736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.7702,"y":91.90883,"z":-83.958916},"screenPosition":{"x":0.0709695,"y":0.24596392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.66034,"y":93.71679,"z":-84.14608},"screenPosition":{"x":0.0818825,"y":0.28378597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.9261,"y":96.86884,"z":-83.62681},"screenPosition":{"x":0.16700079,"y":0.2923633},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-297.41425,"y":100.32293,"z":-83.01556},"screenPosition":{"x":0.2495113,"y":0.3029836},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-295.7225,"y":104.64608,"z":-82.74418},"screenPosition":{"x":0.33168015,"y":0.34718496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.90463,"y":106.855515,"z":-83.024254},"screenPosition":{"x":0.35569268,"y":0.39570487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.26678,"y":108.39582,"z":-83.14947},"screenPosition":{"x":0.3754585,"y":0.42528737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.29446,"y":107.92398,"z":-83.64152},"screenPosition":{"x":0.34669238,"y":0.4492762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.9614,"y":108.19057,"z":-83.88821},"screenPosition":{"x":0.34047854,"y":0.46842238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.35123,"y":109.69862,"z":-83.79784},"screenPosition":{"x":0.3689457,"y":0.48406625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.879,"y":109.76633,"z":-83.67476},"screenPosition":{"x":0.3753208,"y":0.4773532},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-291.22714,"y":111.7822,"z":-82.6613},"screenPosition":{"x":0.45157674,"y":0.44260883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.30914,"y":109.80656,"z":-82.50471},"screenPosition":{"x":0.44304922,"y":0.3987749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.30768,"y":107.527824,"z":-82.62485},"screenPosition":{"x":0.38375932,"y":0.38028362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.62567,"y":104.978775,"z":-83.14492},"screenPosition":{"x":0.31991458,"y":0.37674832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.1245,"y":102.999954,"z":-83.54259},"screenPosition":{"x":0.27061167,"y":0.3736253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.1648,"y":100.65297,"z":-83.878174},"screenPosition":{"x":0.21796156,"y":0.3614363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.1772,"y":98.13831,"z":-84.24434},"screenPosition":{"x":0.1612676,"y":0.3487876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.75882,"y":95.42319,"z":-84.51785},"screenPosition":{"x":0.09535927,"y":0.3304935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.29984,"y":94.65516,"z":-84.08574},"screenPosition":{"x":0.111243755,"y":0.2897474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.95172,"y":93.51844,"z":-83.68393},"screenPosition":{"x":0.10990629,"y":0.2486495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.57758,"y":95.332245,"z":-82.85496},"screenPosition":{"x":0.17861518,"y":0.2279124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.38492,"y":98.316086,"z":-82.45863},"screenPosition":{"x":0.24297442,"y":0.24472229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.5949,"y":100.6932,"z":-82.70813},"screenPosition":{"x":0.2687135,"y":0.28903624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.87305,"y":100.891014,"z":-83.26265},"screenPosition":{"x":0.24819815,"y":0.32640922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.09396,"y":98.47474,"z":-83.99844},"screenPosition":{"x":0.17728277,"y":0.33820033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.23087,"y":95.15553,"z":-84.45591},"screenPosition":{"x":0.093186595,"y":0.32296348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.20197,"y":93.54858,"z":-84.26902},"screenPosition":{"x":0.083149776,"y":0.2881781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.95108,"y":92.47904,"z":-83.83651},"screenPosition":{"x":0.07145692,"y":0.2476532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.96494,"y":92.6827,"z":-83.3749},"screenPosition":{"x":0.11293301,"y":0.22150001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.66757,"y":105.11048,"z":-83.545395},"screenPosition":{"x":0.3049268,"y":0.4035982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.41833,"y":106.08004,"z":-83.8854},"screenPosition":{"x":0.3061738,"y":0.43846628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.43237,"y":106.04406,"z":-84.31644},"screenPosition":{"x":0.28713182,"y":0.46483967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.87775,"y":107.247955,"z":-84.687546},"screenPosition":{"x":0.29087955,"y":0.5049707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.32355,"y":109.291306,"z":-84.721054},"screenPosition":{"x":0.32277402,"y":0.5358936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.02002,"y":112.64382,"z":-84.294426},"screenPosition":{"x":0.39572313,"y":0.55659336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.7989,"y":114.86017,"z":-83.37361},"screenPosition":{"x":0.4712913,"y":0.5304434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.229,"y":114.460815,"z":-82.9112},"screenPosition":{"x":0.48458266,"y":0.49597117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.783,"y":112.21753,"z":-82.69267},"screenPosition":{"x":0.4573496,"y":0.4506883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.69897,"y":111.31461,"z":-82.414345},"screenPosition":{"x":0.46431458,"y":0.4171715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.90567,"y":108.73437,"z":-82.53407},"screenPosition":{"x":0.42670366,"y":0.38463438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.4737,"y":106.4551,"z":-82.74659},"screenPosition":{"x":0.36104968,"y":0.37273893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.18112,"y":105.01423,"z":-82.80626},"screenPosition":{"x":0.33499283,"y":0.35612828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.2765,"y":101.96321,"z":-83.233284},"screenPosition":{"x":0.26694405,"y":0.33970723},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-293.06567,"y":97.4676,"z":-84.366615},"screenPosition":{"x":0.14524716,"y":0.3470682},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-288.23297,"y":98.58895,"z":-86.2714},"screenPosition":{"x":0.12095341,"y":0.41919714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.35052,"y":99.74882,"z":-86.50486},"screenPosition":{"x":0.12987655,"y":0.4501228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.402,"y":101.279205,"z":-85.664955},"screenPosition":{"x":0.13951805,"y":0.4835381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.27832,"y":103.32309,"z":-85.60609},"screenPosition":{"x":0.18759863,"y":0.50687915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.57153,"y":105.80336,"z":-85.393845},"screenPosition":{"x":0.23707649,"y":0.5286334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.68427,"y":108.55288,"z":-84.96641},"screenPosition":{"x":0.3002246,"y":0.540775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.36588,"y":110.26246,"z":-84.783936},"screenPosition":{"x":0.3359246,"y":0.5535175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.72867,"y":113.28175,"z":-84.04894},"screenPosition":{"x":0.41663533,"y":0.5502839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.3124,"y":114.32433,"z":-83.34211},"screenPosition":{"x":0.46390817,"y":0.5209177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.43713,"y":114.15932,"z":-82.9108},"screenPosition":{"x":0.47968304,"y":0.49169138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.22778,"y":112.8216,"z":-82.50872},"screenPosition":{"x":0.49204913,"y":0.44116458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.51767,"y":109.90494,"z":-82.874344},"screenPosition":{"x":0.41185024,"y":0.4293859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.98947,"y":108.997765,"z":-83.33502},"screenPosition":{"x":0.3773295,"y":0.44531423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.5724,"y":108.361435,"z":-83.30338},"screenPosition":{"x":0.36831132,"y":0.43440348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.72333,"y":105.44584,"z":-83.48425},"screenPosition":{"x":0.31300414,"y":0.40450078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.86206,"y":104.80525,"z":-84.19162},"screenPosition":{"x":0.27231944,"y":0.43961608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.08487,"y":105.50717,"z":-84.46969},"screenPosition":{"x":0.2718339,"y":0.46683243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.89075,"y":105.7727,"z":-84.90113},"screenPosition":{"x":0.25767192,"y":0.49747348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.71152,"y":107.68116,"z":-85.08842},"screenPosition":{"x":0.28080913,"y":0.5360818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.71295,"y":109.95989,"z":-84.968285},"screenPosition":{"x":0.32310605,"y":0.5607399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.53354,"y":111.66842,"z":-84.97056},"screenPosition":{"x":0.35086495,"y":0.5849959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.479,"y":113.41186,"z":-84.72654},"screenPosition":{"x":0.38974997,"y":0.59437937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.38217,"y":114.184135,"z":-84.41965},"screenPosition":{"x":0.41548538,"y":0.58613616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.43835,"y":115.358955,"z":-84.02091},"screenPosition":{"x":0.4517205,"y":0.5778489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.70267,"y":116.23227,"z":-83.62177},"screenPosition":{"x":0.48305458,"y":0.56528085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.6339,"y":117.811745,"z":-82.761696},"screenPosition":{"x":0.5456073,"y":0.53393054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.6465,"y":115.93661,"z":-82.60524},"screenPosition":{"x":0.5217551,"y":0.49771476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.97833,"y":113.591225,"z":-82.663704},"screenPosition":{"x":0.4809962,"y":0.46826574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.17117,"y":110.80732,"z":-83.245056},"screenPosition":{"x":0.4106973,"y":0.46523756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.6155,"y":110.132355,"z":-84.10633},"screenPosition":{"x":0.36281377,"y":0.5094273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.50607,"y":112.77978,"z":-83.955894},"screenPosition":{"x":0.41243374,"y":0.5374002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.92422,"y":115.29496,"z":-83.49736},"screenPosition":{"x":0.47308418,"y":0.54429454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.67563,"y":117.74351,"z":-82.97715},"screenPosition":{"x":0.5353042,"y":0.5464047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.0512,"y":118.64802,"z":-82.978355},"screenPosition":{"x":0.5500062,"y":0.5592431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.70493,"y":120.189926,"z":-82.82645},"screenPosition":{"x":0.5816604,"y":0.5715269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.8311,"y":121.86406,"z":-82.982635},"screenPosition":{"x":0.60228014,"y":0.60489047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.30475,"y":124.07509,"z":-82.98558},"screenPosition":{"x":0.63821846,"y":0.636273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.4724,"y":125.48104,"z":-83.1722},"screenPosition":{"x":0.6531608,"y":0.6677504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.97336,"y":126.82035,"z":-83.29715},"screenPosition":{"x":0.6693124,"y":0.6942441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.73816,"y":128.19351,"z":-83.360565},"screenPosition":{"x":0.6893394,"y":0.71777207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.15607,"y":130.06918,"z":-83.424644},"screenPosition":{"x":0.71719,"y":0.7482353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.7964,"y":132.24689,"z":-83.39675},"screenPosition":{"x":0.7539051,"y":0.7772246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.03384,"y":134.3918,"z":-83.24564},"screenPosition":{"x":0.7953606,"y":0.79806733},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-232344/brain-CAFD8C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.5681065749591292,0.8229542639247838,-0.0010949777279866263,0.0,0.7963657795719727,-0.5500863688893631,-0.2514090926932433,0.0,-0.20750051714376866,0.1419551557715787,-0.9678802969039797,0.0,-307.9778985376178,127.50175501596438,-193.43184009141822,1.0]},"baseImage":"20190823-232344/base.webp","version":0,"savedAt":1.566602823672E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-233522-v0.json-bad b/data/mapping/BAAAHS/dwayman/20190823-233522-v0.json-bad new file mode 100644 index 0000000000..2c3fcb778e --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-233522-v0.json-bad @@ -0,0 +1 @@ +{"startedAt":1.56660332213E12,"surfaces":[{"brainId":"CAD878","panelName":"23D","pixels":[{"modelPosition":{"x":-212.34135,"y":59.486824,"z":-99.36459},"screenPosition":{"x":0.06447824,"y":0.16982454},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-195.50635,"y":38.71927,"z":-87.50082},"screenPosition":{"x":0.4411426,"y":0.38049537},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-195.50635,"y":38.71927,"z":-87.50082},"screenPosition":{"x":0.4411426,"y":0.38049537},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-195.48001,"y":38.543274,"z":-87.37577},"screenPosition":{"x":0.44294593,"y":0.38342783},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-233522/brain-CAD878-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9785304725331112,-6.938893903907228E-18,0.20610219388479645,0.0,-0.12109279439679368,0.8091968450938455,-0.5749234740688041,0.0,-0.16677724505849734,-0.5875376293397445,-0.7918237712019833,0.0,-218.76422450584974,-18.24726293397446,-167.32137712019835,1.0]},"baseImage":"20190823-233522/base.webp","version":0,"savedAt":1.566603412455E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190823-233812-v0.json b/data/mapping/BAAAHS/dwayman/20190823-233812-v0.json new file mode 100644 index 0000000000..f03a3eb3a5 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190823-233812-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566603492684E12,"surfaces":[{"brainId":"C79344","panelName":"23D","pixels":[{"modelPosition":{"x":-211.21971,"y":67.622925,"z":-105.63787},"screenPosition":{"x":0.013533859,"y":0.007761627},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-214.48112,"y":63.11358,"z":-102.86789},"screenPosition":{"x":-0.002139436,"y":0.11331326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.29321,"y":61.80617,"z":-101.72674},"screenPosition":{"x":0.006660269,"y":0.14455798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.46172,"y":59.924957,"z":-100.084755},"screenPosition":{"x":0.008761731,"y":0.19016868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.6005,"y":58.091595,"z":-98.484535},"screenPosition":{"x":1.6621659E-4,"y":0.2353274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.32924,"y":56.918343,"z":-97.46048},"screenPosition":{"x":0.009351031,"y":0.26323637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.7452,"y":55.8757,"z":-95.54694},"screenPosition":{"x":0.03093853,"y":0.28850725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.29413,"y":54.09633,"z":-94.532265},"screenPosition":{"x":0.06349373,"y":0.3065234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.39412,"y":52.82004,"z":-93.98544},"screenPosition":{"x":0.09685399,"y":0.31092936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.70355,"y":51.78424,"z":-93.572945},"screenPosition":{"x":0.12566417,"y":0.3130285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.54918,"y":50.555405,"z":-93.11491},"screenPosition":{"x":0.16170676,"y":0.3140822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.18498,"y":51.46237,"z":-94.28584},"screenPosition":{"x":0.18210079,"y":0.27435663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.53697,"y":49.44037,"z":-93.34324},"screenPosition":{"x":0.23076715,"y":0.28493214},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-205.95686,"y":43.58457,"z":-88.90977},"screenPosition":{"x":0.2755547,"y":0.39522105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.93439,"y":43.49504,"z":-88.216194},"screenPosition":{"x":0.24092107,"y":0.42616865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.05931,"y":41.74745,"z":-86.47191},"screenPosition":{"x":0.2305172,"y":0.47877657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.08163,"y":42.162075,"z":-86.14299},"screenPosition":{"x":0.19109215,"y":0.5009704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.6675,"y":43.077637,"z":-86.48832},"screenPosition":{"x":0.16449265,"y":0.4999561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.5378,"y":42.96169,"z":-86.008354},"screenPosition":{"x":0.14318322,"y":0.5205693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.60257,"y":43.18221,"z":-85.73709},"screenPosition":{"x":0.116764076,"y":0.53690696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.04152,"y":42.58744,"z":-84.78207},"screenPosition":{"x":0.0928274,"y":0.5717093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.07646,"y":42.20782,"z":-84.071785},"screenPosition":{"x":0.07210462,"y":0.59832746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.57283,"y":41.32297,"z":-83.100044},"screenPosition":{"x":0.06159852,"y":0.6294102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.3559,"y":40.896973,"z":-82.19777},"screenPosition":{"x":0.030509239,"y":0.6621826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.3433,"y":39.18637,"z":-81.98343},"screenPosition":{"x":0.031928338,"y":0.69298315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.4661,"y":37.66117,"z":-79.352325},"screenPosition":{"x":0.036643997,"y":0.74042326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.76566,"y":35.741592,"z":-77.8649},"screenPosition":{"x":0.03590557,"y":0.77930605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.7935,"y":33.267178,"z":-76.23363},"screenPosition":{"x":0.08014534,"y":0.8164045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.4146,"y":32.685932,"z":-76.3034},"screenPosition":{"x":0.11338274,"y":0.8033414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.73401,"y":31.741812,"z":-76.378075},"screenPosition":{"x":0.16490465,"y":0.7849871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.20755,"y":33.610718,"z":-78.08632},"screenPosition":{"x":0.16729651,"y":0.7355269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.93533,"y":36.224266,"z":-80.29355},"screenPosition":{"x":0.16012442,"y":0.6759893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.5957,"y":39.036217,"z":-82.03032},"screenPosition":{"x":0.11642791,"y":0.64154357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.12413,"y":40.241863,"z":-82.392365},"screenPosition":{"x":0.07612258,"y":0.6445894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.14645,"y":40.656487,"z":-82.063446},"screenPosition":{"x":0.030631736,"y":0.66484135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.38782,"y":39.114708,"z":-81.920876},"screenPosition":{"x":0.021644264,"y":0.69531286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.39117,"y":37.49937,"z":-80.510956},"screenPosition":{"x":0.033812847,"y":0.7338851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.61142,"y":35.53485,"z":-78.796265},"screenPosition":{"x":0.036007367,"y":0.78151554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.24718,"y":34.16062,"z":-76.37976},"screenPosition":{"x":0.03785504,"y":0.8216179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.06297,"y":32.33165,"z":-75.482704},"screenPosition":{"x":0.08465601,"y":0.83662635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.22026,"y":31.557373,"z":-75.50693},"screenPosition":{"x":0.12514238,"y":0.8222784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.16798,"y":31.334707,"z":-75.98459},"screenPosition":{"x":0.16334233,"y":0.7960217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.10297,"y":32.69838,"z":-77.43139},"screenPosition":{"x":0.17623816,"y":0.7512217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.59595,"y":37.452026,"z":-80.85478},"screenPosition":{"x":0.12989177,"y":0.67026424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.49596,"y":38.728313,"z":-81.40161},"screenPosition":{"x":0.09645626,"y":0.6658403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.06946,"y":38.853928,"z":-80.952774},"screenPosition":{"x":0.0647964,"y":0.6889087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.10452,"y":37.682213,"z":-79.654724},"screenPosition":{"x":0.05056541,"y":0.7301921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.89784,"y":35.763706,"z":-78.06409},"screenPosition":{"x":0.05744387,"y":0.7727838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.15259,"y":33.339966,"z":-76.212006},"screenPosition":{"x":0.07537474,"y":0.81834376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.26508,"y":32.06153,"z":-75.87158},"screenPosition":{"x":0.12032794,"y":0.81358796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.46703,"y":32.583508,"z":-76.84822},"screenPosition":{"x":0.14903593,"y":0.7769481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.28717,"y":34.52735,"z":-78.32845},"screenPosition":{"x":0.1346498,"y":0.7399388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.59845,"y":37.358196,"z":-80.57401},"screenPosition":{"x":0.118807465,"y":0.68175817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.84518,"y":37.917324,"z":-80.30505},"screenPosition":{"x":0.07542439,"y":0.7036785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.28189,"y":35.8322,"z":-78.45527},"screenPosition":{"x":0.07607086,"y":0.7556273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.80101,"y":33.45269,"z":-77.00157},"screenPosition":{"x":0.11390237,"y":0.7841782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.43681,"y":34.359657,"z":-78.1725},"screenPosition":{"x":0.13435674,"y":0.7442666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.09984,"y":36.752686,"z":-80.65099},"screenPosition":{"x":0.15363383,"y":0.6681712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.26704,"y":48.968796,"z":-90.52185},"screenPosition":{"x":0.021000613,"y":0.45580477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.50398,"y":50.197277,"z":-91.59412},"screenPosition":{"x":0.01072273,"y":0.4265705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.4648,"y":51.870293,"z":-93.054375},"screenPosition":{"x":0.017759413,"y":0.38545686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.29536,"y":53.753006,"z":-94.69767},"screenPosition":{"x":0.015656278,"y":0.33980983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.08955,"y":54.46028,"z":-94.424164},"screenPosition":{"x":0.0388772,"y":0.31755745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.546,"y":54.142708,"z":-94.72425},"screenPosition":{"x":0.0718963,"y":0.29829222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.42159,"y":52.721916,"z":-94.11747},"screenPosition":{"x":0.10914433,"y":0.30309725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.70119,"y":51.085976,"z":-93.26595},"screenPosition":{"x":0.14350213,"y":0.31580985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.69908,"y":48.80352,"z":-91.783424},"screenPosition":{"x":0.1748172,"y":0.34731668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.51985,"y":46.786884,"z":-90.32482},"screenPosition":{"x":0.19409068,"y":0.38210902},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-213.72217,"y":44.465572,"z":-87.92791},"screenPosition":{"x":0.17575675,"y":0.45572814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.81491,"y":41.41958,"z":-85.43761},"screenPosition":{"x":0.18866032,"y":0.5217078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.89465,"y":41.54412,"z":-85.09197},"screenPosition":{"x":0.16287903,"y":0.5399328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.27382,"y":40.541172,"z":-83.84667},"screenPosition":{"x":0.14322358,"y":0.58135384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.81723,"y":41.65084,"z":-84.134346},"screenPosition":{"x":0.103483036,"y":0.58643895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.70213,"y":43.8152,"z":-85.34331},"screenPosition":{"x":0.062650114,"y":0.56580734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.89633,"y":45.735855,"z":-86.72754},"screenPosition":{"x":0.0440145,"y":0.5329024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.10303,"y":47.65436,"z":-88.31818},"screenPosition":{"x":0.03713604,"y":0.4903108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.13023,"y":49.140427,"z":-89.62573},"screenPosition":{"x":0.036067206,"y":0.4537908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.55898,"y":50.505173,"z":-90.96933},"screenPosition":{"x":0.043143913,"y":0.41357592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.77827,"y":51.629436,"z":-92.1786},"screenPosition":{"x":0.05475454,"y":0.37565786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.33932,"y":52.2242,"z":-93.13362},"screenPosition":{"x":0.07869122,"y":0.34085554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.22726,"y":51.593357,"z":-93.32101},"screenPosition":{"x":0.12106766,"y":0.32164755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.04306,"y":49.764385,"z":-92.42394},"screenPosition":{"x":0.1625601,"y":0.3332859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.92624,"y":47.270004,"z":-90.38708},"screenPosition":{"x":0.17326568,"y":0.38720202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.14854,"y":45.132053,"z":-88.96451},"screenPosition":{"x":0.20068468,"y":0.41829944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.71217,"y":44.37389,"z":-87.440735},"screenPosition":{"x":0.15288028,"y":0.47698903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.35768,"y":46.489723,"z":-88.664116},"screenPosition":{"x":0.11533322,"y":0.45483938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.16533,"y":48.435715,"z":-89.93794},"screenPosition":{"x":0.08918992,"y":0.42751682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.00294,"y":50.18975,"z":-91.06303},"screenPosition":{"x":0.06432836,"y":0.40396774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.79312,"y":52.325554,"z":-92.69199},"screenPosition":{"x":0.048760176,"y":0.36318418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.19426,"y":54.58052,"z":-94.491325},"screenPosition":{"x":0.03665531,"y":0.3164182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.54811,"y":56.425163,"z":-96.20678},"screenPosition":{"x":0.040497687,"y":0.26675704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.42331,"y":57.380657,"z":-97.3633},"screenPosition":{"x":0.05763349,"y":0.22850946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.67033,"y":56.8226,"z":-97.52906},"screenPosition":{"x":0.09510297,"y":0.21151273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.47115,"y":55.089607,"z":-96.70637},"screenPosition":{"x":0.13597721,"y":0.22126937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.04005,"y":53.026596,"z":-95.05578},"screenPosition":{"x":0.1467686,"y":0.26428515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.31451,"y":51.903408,"z":-93.74331},"screenPosition":{"x":0.12926252,"y":0.30703187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.7532,"y":52.892834,"z":-93.96382},"screenPosition":{"x":0.0919235,"y":0.31313142},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-218.58305,"y":56.045544,"z":-95.4965},"screenPosition":{"x":0.013578838,"y":0.2947205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.8251,"y":57.72998,"z":-98.16891},"screenPosition":{"x":0.011213688,"y":0.24338664},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-216.0544,"y":60.580708,"z":-100.65711},"screenPosition":{"x":0.0056301868,"y":0.17460124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.99677,"y":62.283436,"z":-102.14331},"screenPosition":{"x":0.006439831,"y":0.13315947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.68665,"y":63.76165,"z":-102.46381},"screenPosition":{"x":0.024034211,"y":0.095731355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.41232,"y":64.09274,"z":-103.188515},"screenPosition":{"x":0.04825534,"y":0.06733026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.73355,"y":62.919098,"z":-104.14478},"screenPosition":{"x":0.08706371,"y":0.049930383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.02928,"y":60.7759,"z":-102.91348},"screenPosition":{"x":0.12554191,"y":0.07199731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.25597,"y":59.789356,"z":-100.66018},"screenPosition":{"x":0.1223582,"y":0.11425597},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-211.92432,"y":59.151436,"z":-99.203575},"screenPosition":{"x":0.0724088,"y":0.17192142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.39322,"y":58.36471,"z":-98.09981},"screenPosition":{"x":0.049632072,"y":0.2103788},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-213.0474,"y":53.5372,"z":-94.80123},"screenPosition":{"x":0.10666188,"y":0.28463256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.2294,"y":54.342815,"z":-96.41379},"screenPosition":{"x":0.15715002,"y":0.22266439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.55565,"y":57.077682,"z":-98.584984},"screenPosition":{"x":0.14184716,"y":0.16636458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.06898,"y":59.171402,"z":-99.60917},"screenPosition":{"x":0.09417205,"y":0.15316267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.46562,"y":57.978645,"z":-98.00872},"screenPosition":{"x":0.06393443,"y":0.20823722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.14299,"y":50.214203,"z":-95.6854},"screenPosition":{"x":0.3248683,"y":0.18630932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.51744,"y":47.814728,"z":-93.82611},"screenPosition":{"x":0.3399174,"y":0.23541997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.13612,"y":46.06821,"z":-91.97863},"screenPosition":{"x":0.32363084,"y":0.2928756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.45761,"y":46.93954,"z":-91.925575},"screenPosition":{"x":0.27674413,"y":0.3097883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.612,"y":48.168377,"z":-92.38361},"screenPosition":{"x":0.24068834,"y":0.30872953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.69148,"y":49.877106,"z":-93.21351},"screenPosition":{"x":0.20144321,"y":0.29823393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.88817,"y":51.70393,"z":-94.31697},"screenPosition":{"x":0.17171285,"y":0.27692708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.39651,"y":53.985313,"z":-95.902695},"screenPosition":{"x":0.14625178,"y":0.24055295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.59071,"y":55.905968,"z":-97.28693},"screenPosition":{"x":0.12761617,"y":0.20764802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.19644,"y":57.79699,"z":-99.19437},"screenPosition":{"x":0.14000256,"y":0.14978729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.75513,"y":57.69349,"z":-99.8424},"screenPosition":{"x":0.1876128,"y":0.107594445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.31905,"y":55.81814,"z":-98.75335},"screenPosition":{"x":0.22066584,"y":0.1265501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.61362,"y":54.08622,"z":-97.82746},"screenPosition":{"x":0.25353408,"y":0.14539975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.10527,"y":51.804836,"z":-96.24173},"screenPosition":{"x":0.27523577,"y":0.18857415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.86876,"y":49.286194,"z":-94.212074},"screenPosition":{"x":0.28757045,"y":0.2417513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.81657,"y":47.80443,"z":-92.491714},"screenPosition":{"x":0.26512495,"y":0.29764473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.7619,"y":46.416492,"z":-91.05213},"screenPosition":{"x":0.25379893,"y":0.3419647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.75414,"y":47.81517,"z":-91.45972},"screenPosition":{"x":0.20633915,"y":0.34607837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.68658,"y":48.805668,"z":-91.57703},"screenPosition":{"x":0.16306005,"y":0.35700342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.88565,"y":51.330757,"z":-92.98748},"screenPosition":{"x":0.115484275,"y":0.33289254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.85033,"y":54.086662,"z":-95.46107},"screenPosition":{"x":0.11622104,"y":0.26288235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.24687,"y":54.153008,"z":-96.05865},"screenPosition":{"x":0.1466214,"y":0.23605731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.77821,"y":53.35554,"z":-95.98688},"screenPosition":{"x":0.18273002,"y":0.22618264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.63882,"y":52.030727,"z":-95.45447},"screenPosition":{"x":0.21942373,"y":0.2291286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.63123,"y":53.104313,"z":-96.88455},"screenPosition":{"x":0.24604973,"y":0.18004584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.43874,"y":55.842403,"z":-98.74615},"screenPosition":{"x":0.21961182,"y":0.12594561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.81503,"y":57.309574,"z":-99.544914},"screenPosition":{"x":0.18434188,"y":0.12532082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.88571,"y":58.080276,"z":-101.3648},"screenPosition":{"x":0.17489418,"y":0.09751466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.96243,"y":59.43431,"z":-102.142715},"screenPosition":{"x":0.14962834,"y":0.08581068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.23306,"y":61.032173,"z":-103.060715},"screenPosition":{"x":0.12502937,"y":0.06006927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.03384,"y":63.296734,"z":-104.36174},"screenPosition":{"x":0.08404422,"y":0.03782197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.19603,"y":64.75822,"z":-105.201385},"screenPosition":{"x":0.054044805,"y":0.030994318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.21997,"y":66.038734,"z":-104.46234},"screenPosition":{"x":0.022112034,"y":0.0400077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.38875,"y":64.87223,"z":-104.40289},"screenPosition":{"x":0.0032352428,"y":0.07022025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.38435,"y":63.269386,"z":-103.00388},"screenPosition":{"x":-0.003301337,"y":0.109672226},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-217.32251,"y":58.539124,"z":-98.87515},"screenPosition":{"x":0.005583,"y":0.22413263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.32332,"y":58.656944,"z":-97.910126},"screenPosition":{"x":0.024197986,"y":0.22408551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.00418,"y":58.48388,"z":-98.27017},"screenPosition":{"x":0.053440504,"y":0.20453794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.61017,"y":58.79071,"z":-99.00208},"screenPosition":{"x":0.07908772,"y":0.17524242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.51558,"y":57.970055,"z":-98.83432},"screenPosition":{"x":0.11096307,"y":0.16949031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.1394,"y":55.710785,"z":-97.447784},"screenPosition":{"x":0.14652762,"y":0.19689277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.19957,"y":53.74268,"z":-95.97477},"screenPosition":{"x":0.16254286,"y":0.23316307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.71341,"y":52.66802,"z":-94.64789},"screenPosition":{"x":0.14179544,"y":0.27740246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.49622,"y":53.82621,"z":-94.92114},"screenPosition":{"x":0.09894767,"y":0.28385162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.97774,"y":52.245243,"z":-93.43601},"screenPosition":{"x":0.09469785,"y":0.32706442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.75844,"y":51.12098,"z":-92.226746},"screenPosition":{"x":0.08308723,"y":0.3649825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.82333,"y":50.549404,"z":-91.367714},"screenPosition":{"x":0.063400015,"y":0.39568043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.34967,"y":49.47259,"z":-90.24724},"screenPosition":{"x":0.054409754,"y":0.4302331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.75867,"y":49.069786,"z":-89.440956},"screenPosition":{"x":0.03105303,"y":0.46045405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.14534,"y":47.55478,"z":-89.28765},"screenPosition":{"x":0.022580177,"y":0.49008808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.31343,"y":45.674236,"z":-87.646255},"screenPosition":{"x":0.02468089,"y":0.53568256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.22821,"y":44.322582,"z":-85.39836},"screenPosition":{"x":0.040196005,"y":0.57163936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.29837,"y":42.44616,"z":-84.41251},"screenPosition":{"x":0.07908773,"y":0.5866488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.50308,"y":41.29011,"z":-83.93285},"screenPosition":{"x":0.11025627,"y":0.58992434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.44107,"y":39.391575,"z":-82.74781},"screenPosition":{"x":0.13901994,"y":0.61388147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.0076,"y":36.630295,"z":-80.79023},"screenPosition":{"x":0.16772282,"y":0.65941584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.20494,"y":34.496643,"z":-78.95486},"screenPosition":{"x":0.17155038,"y":0.71013963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.69894,"y":32.913525,"z":-77.676125},"screenPosition":{"x":0.17917114,"y":0.74353284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.09776,"y":93.16184,"z":97.233795},"screenPosition":{"x":0.013694735,"y":1.5281569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.05635,"y":92.26536,"z":96.08787},"screenPosition":{"x":-0.040382456,"y":1.5180919},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":-0.08358657,"y":1.513493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.02681,"y":26.816404,"z":-71.186516},"screenPosition":{"x":0.04574655,"y":0.99289745},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-235.09763,"y":29.922281,"z":-73.89742},"screenPosition":{"x":0.04227704,"y":0.9175944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.53438,"y":31.451096,"z":-74.09817},"screenPosition":{"x":0.04070217,"y":0.8834129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.26006,"y":31.782188,"z":-74.82287},"screenPosition":{"x":0.075096846,"y":0.8583765},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-227.2058,"y":28.48497,"z":-73.23023},"screenPosition":{"x":0.15132014,"y":0.87821937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.23103,"y":26.896482,"z":-72.46751},"screenPosition":{"x":0.1882983,"y":0.8875665},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-222.618,"y":23.50684,"z":-71.76565},"screenPosition":{"x":0.245163,"y":0.9109855},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-217.87459,"y":22.526146,"z":-72.03704},"screenPosition":{"x":0.31275076,"y":0.89054227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.97585,"y":22.133585,"z":-72.145676},"screenPosition":{"x":0.33579424,"y":0.87046355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.19348,"y":88.75108,"z":107.861},"screenPosition":{"x":0.45052698,"y":1.1961246},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.49255818,"y":1.1602703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.99446,"y":20.690193,"z":-72.54512},"screenPosition":{"x":0.43105435,"y":0.827872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.03757,"y":22.416365,"z":-72.97521},"screenPosition":{"x":0.44232205,"y":0.78882754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.71056,"y":24.434072,"z":-74.33062},"screenPosition":{"x":0.41750258,"y":0.7596518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.90973,"y":26.167067,"z":-75.153305},"screenPosition":{"x":0.37662834,"y":0.74989516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.63289,"y":26.124985,"z":-74.54852},"screenPosition":{"x":0.3446151,"y":0.7774773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.35367,"y":25.384638,"z":-73.63674},"screenPosition":{"x":0.33045307,"y":0.8078458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.85017,"y":23.707691,"z":-72.07724},"screenPosition":{"x":0.32691902,"y":0.8529839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.57474,"y":22.257404,"z":-72.11141},"screenPosition":{"x":0.32987195,"y":0.88077885},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.33247873,"y":1.2247206},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.28529605,"y":1.2343181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.07895,"y":23.602142,"z":-71.73927},"screenPosition":{"x":0.2424621,"y":0.9242919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.39342,"y":25.142448,"z":-71.34242},"screenPosition":{"x":0.21316591,"y":0.9111143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.73976,"y":26.801577,"z":-72.28993},"screenPosition":{"x":0.18313926,"y":0.8937208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.49013,"y":28.24556,"z":-72.99271},"screenPosition":{"x":0.15008785,"y":0.8848174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.89886,"y":29.426943,"z":-73.36196},"screenPosition":{"x":0.11129925,"y":0.8876664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.75446,"y":27.822784,"z":-71.78083},"screenPosition":{"x":0.10314484,"y":0.93403816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.24408,"y":25.49702,"z":-71.21488},"screenPosition":{"x":0.11381631,"y":0.9697117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.23677,"y":25.28876,"z":-71.272514},"screenPosition":{"x":0.12756093,"y":0.96356636},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-226.05766,"y":24.217987,"z":-71.56884},"screenPosition":{"x":0.19822915,"y":0.93197006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.40312,"y":26.351316,"z":-71.39487},"screenPosition":{"x":0.15522483,"y":0.9286902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.06029,"y":25.045523,"z":-71.33983},"screenPosition":{"x":0.14361393,"y":0.95638895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.83195,"y":26.456963,"z":-70.540436},"screenPosition":{"x":0.103042506,"y":0.96510416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.37276,"y":28.452557,"z":-71.69665},"screenPosition":{"x":0.066399656,"y":0.94939184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.90126,"y":30.238417,"z":-74.17336},"screenPosition":{"x":0.041923895,"y":0.9099295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.76407,"y":32.06922,"z":-75.77135},"screenPosition":{"x":0.036347892,"y":0.8653192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.66382,"y":33.15123,"z":-75.75366},"screenPosition":{"x":0.058659237,"y":0.8375351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.26979,"y":33.45806,"z":-76.48557},"screenPosition":{"x":0.08450947,"y":0.808395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.42708,"y":32.683784,"z":-76.509796},"screenPosition":{"x":0.124972396,"y":0.79414713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.85646,"y":30.088053,"z":-74.91456},"screenPosition":{"x":0.16562009,"y":0.82602084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.53268,"y":27.259357,"z":-72.46259},"screenPosition":{"x":0.16977122,"y":0.89362246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.59995,"y":27.386045,"z":-71.91056},"screenPosition":{"x":0.13220182,"y":0.92171973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.6496,"y":28.494638,"z":-72.30144},"screenPosition":{"x":0.098412916,"y":0.9218096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.34006,"y":30.322536,"z":-73.3017},"screenPosition":{"x":0.06277941,"y":0.9053222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.58737,"y":32.353695,"z":-76.019646},"screenPosition":{"x":0.039560966,"y":0.85864383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.85814,"y":34.27979,"z":-76.550125},"screenPosition":{"x":0.037598826,"y":0.816057},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-223.91362,"y":31.382158,"z":-76.07338},"screenPosition":{"x":0.1659135,"y":0.7928728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.32974,"y":33.54115,"z":-77.79834},"screenPosition":{"x":0.15441458,"y":0.7483872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.46404,"y":35.845722,"z":-79.48006},"screenPosition":{"x":0.13322756,"y":0.70793265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.6732,"y":37.670395,"z":-80.789925},"screenPosition":{"x":0.11522979,"y":0.6769151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.86975,"y":42.482426,"z":-87.89969},"screenPosition":{"x":0.2740721,"y":0.42419136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.77502,"y":42.453865,"z":-88.319695},"screenPosition":{"x":0.29921556,"y":0.4040789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.56049,"y":43.19314,"z":-89.33468},"screenPosition":{"x":0.31925616,"y":0.36886716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.58296,"y":43.282673,"z":-90.02825},"screenPosition":{"x":0.3538898,"y":0.33791956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.57825,"y":41.886143,"z":-89.41426},"screenPosition":{"x":0.38959226,"y":0.3434919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.86046,"y":39.364277,"z":-87.69421},"screenPosition":{"x":0.41944614,"y":0.3821241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.36708,"y":36.986916,"z":-86.0341},"screenPosition":{"x":0.44563702,"y":0.42037657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.3998,"y":35.116936,"z":-84.429054},"screenPosition":{"x":0.44925725,"y":0.46444622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.5845,"y":33.777527,"z":-82.97505},"screenPosition":{"x":0.43462047,"y":0.51019925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.12817,"y":33.303,"z":-82.0872},"screenPosition":{"x":0.40846923,"y":0.54389733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.76146,"y":33.836796,"z":-81.92864},"screenPosition":{"x":0.37260717,"y":0.56011736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.05077,"y":33.40972,"z":-81.12957},"screenPosition":{"x":0.34902832,"y":0.5903999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.04076,"y":33.31804,"z":-80.642395},"screenPosition":{"x":0.3261691,"y":0.61170447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.71898,"y":33.563896,"z":-80.26073},"screenPosition":{"x":0.29221052,"y":0.6333681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.81357,"y":34.384552,"z":-80.42848},"screenPosition":{"x":0.26036692,"y":0.6393766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.671,"y":36.64704,"z":-81.50542},"screenPosition":{"x":0.20716664,"y":0.6265042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.84998,"y":40.247864,"z":-84.13956},"screenPosition":{"x":0.17442933,"y":0.5629912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.75761,"y":40.91757,"z":-84.866554},"screenPosition":{"x":0.18172152,"y":0.5400926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.81465,"y":43.003773,"z":-86.613144},"screenPosition":{"x":0.17519647,"y":0.4929871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.61496,"y":44.43916,"z":-88.14152},"screenPosition":{"x":0.18915498,"y":0.445288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.50278,"y":44.60041,"z":-88.916664},"screenPosition":{"x":0.2247679,"y":0.41172844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.02138,"y":45.389282,"z":-89.81403},"screenPosition":{"x":0.23567171,"y":0.382838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.80684,"y":46.128555,"z":-90.82901},"screenPosition":{"x":0.25571233,"y":0.34762624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.14346,"y":46.578815,"z":-91.724075},"screenPosition":{"x":0.28354463,"y":0.3132342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.18106,"y":45.780273,"z":-91.75551},"screenPosition":{"x":0.32554847,"y":0.2985335},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-196.51584,"y":42.363888,"z":-89.992516},"screenPosition":{"x":0.39816016,"y":0.32436812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.38405,"y":39.96549,"z":-88.03003},"screenPosition":{"x":0.40822786,"y":0.37639683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.49387,"y":39.105972,"z":-86.94788},"screenPosition":{"x":0.3904542,"y":0.412757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.54378,"y":38.630375,"z":-86.16322},"screenPosition":{"x":0.37012914,"y":0.44156754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.15985,"y":37.769787,"z":-85.18428},"screenPosition":{"x":0.35823408,"y":0.47308436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.29964,"y":36.718315,"z":-83.95339},"screenPosition":{"x":0.34173614,"y":0.5132194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.09294,"y":34.79981,"z":-82.362755},"screenPosition":{"x":0.3486047,"y":0.55578977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.4649,"y":32.494164,"z":-80.78424},"screenPosition":{"x":0.37568018,"y":0.59142226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.31065,"y":30.473232,"z":-79.738434},"screenPosition":{"x":0.41846797,"y":0.60684115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.21358,"y":29.746407,"z":-79.85145},"screenPosition":{"x":0.46146265,"y":0.58951485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.26588,"y":30.436079,"z":-80.98404},"screenPosition":{"x":0.49064004,"y":0.54798174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.99367,"y":33.049625,"z":-83.19127},"screenPosition":{"x":0.4835461,"y":0.48807383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.47704,"y":35.335304,"z":-84.3642},"screenPosition":{"x":0.4344744,"y":0.4710219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.1253,"y":35.77312,"z":-84.13126},"screenPosition":{"x":0.39939275,"y":0.48924223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.31226,"y":35.92407,"z":-83.57202},"screenPosition":{"x":0.3602252,"y":0.51789296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.95827,"y":34.871525,"z":-82.444336},"screenPosition":{"x":0.34960583,"y":0.5531846},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-208.60756,"y":28.972572,"z":-77.50928},"screenPosition":{"x":0.3682587,"y":0.68621236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.52516,"y":29.266954,"z":-77.1132},"screenPosition":{"x":0.33097735,"y":0.70914805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.02626,"y":29.778633,"z":-76.75545},"screenPosition":{"x":0.28510523,"y":0.7348158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.14832,"y":30.501162,"z":-77.05523},"screenPosition":{"x":0.2656249,"y":0.7327686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.58714,"y":30.69849,"z":-76.68797},"screenPosition":{"x":0.2349563,"y":0.7532106},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-222.92662,"y":28.211628,"z":-73.92871},"screenPosition":{"x":0.2045118,"y":0.8410303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.58302,"y":24.874477,"z":-71.524895},"screenPosition":{"x":0.23696467,"y":0.89814204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.30763,"y":23.235926,"z":-71.840614},"screenPosition":{"x":0.26600447,"y":0.911883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.39838,"y":22.42769,"z":-72.064285},"screenPosition":{"x":0.3198303,"y":0.88948816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.02742,"y":22.649773,"z":-71.46555},"screenPosition":{"x":0.3468246,"y":0.8655318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.45378,"y":23.316256,"z":-72.50215},"screenPosition":{"x":0.3706205,"y":0.82663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.0771,"y":24.22537,"z":-73.46668},"screenPosition":{"x":0.37915045,"y":0.796206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.35619,"y":25.757812,"z":-74.966225},"screenPosition":{"x":0.3865101,"y":0.75132227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.22363,"y":28.111984,"z":-76.530334},"screenPosition":{"x":0.3562545,"y":0.71733177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.62975,"y":30.179293,"z":-77.76813},"screenPosition":{"x":0.32207477,"y":0.6941016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.39587,"y":41.263702,"z":-84.14646},"screenPosition":{"x":0.123642534,"y":0.5794986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.98898,"y":43.948967,"z":-86.435265},"screenPosition":{"x":0.117539845,"y":0.51696426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.10133,"y":43.462624,"z":-86.68261},"screenPosition":{"x":0.15602352,"y":0.4973108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.5729,"y":42.25698,"z":-86.320564},"screenPosition":{"x":0.19630592,"y":0.49429533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.94223,"y":40.83726,"z":-85.61058},"screenPosition":{"x":0.22775891,"y":0.50397205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.4762,"y":39.15387,"z":-84.67027},"screenPosition":{"x":0.25949597,"y":0.5199871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.3992,"y":37.351307,"z":-83.55961},"screenPosition":{"x":0.28761986,"y":0.54210556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.50182,"y":35.189095,"z":-82.14424},"screenPosition":{"x":0.31667027,"y":0.5724782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.75395,"y":33.651283,"z":-81.1607},"screenPosition":{"x":0.33863306,"y":0.5929901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.21552,"y":32.353954,"z":-80.31148},"screenPosition":{"x":0.35606194,"y":0.61120516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.16847,"y":30.359434,"z":-79.05207},"screenPosition":{"x":0.38546345,"y":0.63704973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.4356,"y":28.725643,"z":-77.99415},"screenPosition":{"x":0.4080641,"y":0.65944904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.16414,"y":26.586618,"z":-76.67478},"screenPosition":{"x":0.44127065,"y":0.6855416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.76299,"y":24.331648,"z":-74.87544},"screenPosition":{"x":0.4534119,"y":0.732479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.93272,"y":23.088219,"z":-73.49581},"screenPosition":{"x":0.43793547,"y":0.77580184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.25198,"y":22.469189,"z":-72.548},"screenPosition":{"x":0.41579756,"y":0.810211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.75073,"y":22.2826,"z":-71.883255},"screenPosition":{"x":0.39049622,"y":0.84600586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.29414,"y":23.392267,"z":-72.17093},"screenPosition":{"x":0.3480974,"y":0.84337705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.90982,"y":24.907967,"z":-72.955284},"screenPosition":{"x":0.31600657,"y":0.8318129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.40332,"y":26.49323,"z":-74.02762},"screenPosition":{"x":0.29666415,"y":0.80793566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.4229,"y":28.585876,"z":-75.155},"screenPosition":{"x":0.2548676,"y":0.78989035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.81418,"y":29.95707,"z":-75.879395},"screenPosition":{"x":0.22667284,"y":0.77873564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.71156,"y":32.11928,"z":-77.29476},"screenPosition":{"x":0.19762473,"y":0.7483772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.86333,"y":34.234043,"z":-78.62134},"screenPosition":{"x":0.1660764,"y":0.7209173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.37918,"y":36.70094,"z":-80.975006},"screenPosition":{"x":0.17451553,"y":0.652199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.97005,"y":37.895844,"z":-82.36905},"screenPosition":{"x":0.19306147,"y":0.60656625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.3817,"y":37.074112,"z":-82.30449},"screenPosition":{"x":0.23074992,"y":0.59621567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.59889,"y":35.91592,"z":-82.031235},"screenPosition":{"x":0.27367404,"y":0.5897808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.92043,"y":37.254253,"z":-83.58843},"screenPosition":{"x":0.29413858,"y":0.5391638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.70627,"y":35.61724,"z":-82.84012},"screenPosition":{"x":0.3343536,"y":0.54698074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.98587,"y":33.9813,"z":-81.9886},"screenPosition":{"x":0.36873278,"y":0.55974567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.92384,"y":32.08276,"z":-80.80356},"screenPosition":{"x":0.39749643,"y":0.5837028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.72716,"y":30.255936,"z":-79.700096},"screenPosition":{"x":0.42717898,"y":0.60492915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.90204,"y":28.499754,"z":-78.78141},"screenPosition":{"x":0.46379328,"y":0.6187908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.17177,"y":25.980036,"z":-76.85496},"screenPosition":{"x":0.48208937,"y":0.6672284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.56604,"y":24.089016,"z":-74.94752},"screenPosition":{"x":0.469703,"y":0.72508913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.36409,"y":23.56704,"z":-73.97087},"screenPosition":{"x":0.440879,"y":0.7621084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.24924,"y":24.14721,"z":-74.0043},"screenPosition":{"x":0.41339278,"y":0.7697757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.62828,"y":23.93636,"z":-73.34676},"screenPosition":{"x":0.3869908,"y":0.797211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.30624,"y":25.766407,"z":-74.140625},"screenPosition":{"x":0.3395473,"y":0.7900195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.2663,"y":25.866682,"z":-73.8022},"screenPosition":{"x":0.31550664,"y":0.8080954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.33118,"y":25.295105,"z":-72.94317},"screenPosition":{"x":0.2957502,"y":0.8379069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.12883,"y":27.149414,"z":-73.72983},"screenPosition":{"x":0.24679965,"y":0.83273166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.79169,"y":29.867535,"z":-75.18582},"screenPosition":{"x":0.19203922,"y":0.80968326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.911,"y":32.268085,"z":-76.94192},"screenPosition":{"x":0.17021434,"y":0.76734126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.07275,"y":34.47453,"z":-78.75566},"screenPosition":{"x":0.16154249,"y":0.7186451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.87543,"y":36.60818,"z":-80.591034},"screenPosition":{"x":0.15763263,"y":0.668267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.07974,"y":37.828423,"z":-81.87467},"screenPosition":{"x":0.16849041,"y":0.62881106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.19197,"y":38.13418,"z":-82.70978},"screenPosition":{"x":0.20021923,"y":0.5948276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.93498,"y":39.06756,"z":-83.66711},"screenPosition":{"x":0.20722698,"y":0.56552774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.07953,"y":39.87962,"z":-84.66046},"screenPosition":{"x":0.22240388,"y":0.53242135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.96957,"y":41.531227,"z":-86.330376},"screenPosition":{"x":0.2334239,"y":0.48180333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.10927,"y":41.738857,"z":-87.29751},"screenPosition":{"x":0.27753863,"y":0.44},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.7034,"y":38.087357,"z":-84.884186},"screenPosition":{"x":0.32529852,"y":0.49237794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.39449,"y":35.954777,"z":-82.94562},"screenPosition":{"x":0.32332462,"y":0.5476922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.95312,"y":35.384274,"z":-81.98339},"screenPosition":{"x":0.29775885,"y":0.5832335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.9007,"y":35.4867,"z":-81.43856},"screenPosition":{"x":0.2618495,"y":0.6104062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.01025,"y":36.211376,"z":-81.531944},"screenPosition":{"x":0.23061201,"y":0.6180458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.01224,"y":39.285927,"z":-83.60224},"screenPosition":{"x":0.19256501,"y":0.5721786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.19673,"y":39.99771,"z":-84.93403},"screenPosition":{"x":0.23187047,"y":0.52169776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.70879,"y":33.3303,"z":-77.14081},"screenPosition":{"x":0.12792648,"y":0.7756399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.11331,"y":29.94677,"z":-74.545006},"screenPosition":{"x":0.15188041,"y":0.8409604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.73453,"y":28.57343,"z":-74.02701},"screenPosition":{"x":0.1918645,"y":0.8421966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.93674,"y":27.511215,"z":-73.82812},"screenPosition":{"x":0.23412724,"y":0.8339936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.57268,"y":27.626087,"z":-74.411285},"screenPosition":{"x":0.26124614,"y":0.8087645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.17867,"y":27.932917,"z":-75.14319},"screenPosition":{"x":0.28709638,"y":0.7796244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.35315,"y":28.55302,"z":-75.98781},"screenPosition":{"x":0.30352536,"y":0.7504044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.1235,"y":30.180367,"z":-77.664925},"screenPosition":{"x":0.3161775,"y":0.6988354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.03339,"y":32.34043,"z":-79.28669},"screenPosition":{"x":0.29890525,"y":0.6588998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.50941,"y":34.115505,"z":-80.714165},"screenPosition":{"x":0.29004428,"y":0.621561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.8957,"y":35.67436,"z":-82.0001},"screenPosition":{"x":0.28408498,"y":0.58723015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.34192,"y":36.849297,"z":-82.988556},"screenPosition":{"x":0.28068337,"y":0.5605046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.60838,"y":39.175983,"z":-84.86947},"screenPosition":{"x":0.2696244,"y":0.5111023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.50328,"y":41.432026,"z":-86.565605},"screenPosition":{"x":0.2516956,"y":0.46916974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.0291,"y":43.523598,"z":-87.79619},"screenPosition":{"x":0.21577764,"y":0.4462811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.43535,"y":44.798813,"z":-88.44621},"screenPosition":{"x":0.18822072,"y":0.4370138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.35034,"y":45.979122,"z":-88.91866},"screenPosition":{"x":0.15542307,"y":0.43447727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.36493,"y":48.25943,"z":-90.60759},"screenPosition":{"x":0.13586515,"y":0.3932837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.60406,"y":49.892147,"z":-91.76871},"screenPosition":{"x":0.11914309,"y":0.36604103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.3819,"y":51.238,"z":-92.60351},"screenPosition":{"x":0.098456,"y":0.34930396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.77054,"y":53.495117,"z":-94.19644},"screenPosition":{"x":0.07464862,"y":0.31221476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.11191,"y":55.341908,"z":-95.7055},"screenPosition":{"x":0.066778906,"y":0.27224952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.12178,"y":56.225685,"z":-96.78044},"screenPosition":{"x":0.08292345,"y":0.23662832},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-208.66286,"y":57.104095,"z":-98.371376},"screenPosition":{"x":0.1284609,"y":0.1767903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.3139,"y":56.33089,"z":-98.292404},"screenPosition":{"x":0.16295661,"y":0.1676728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.14455,"y":55.198036,"z":-97.90874},"screenPosition":{"x":0.19837463,"y":0.16684392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.91803,"y":52.771072,"z":-96.36625},"screenPosition":{"x":0.23358576,"y":0.1987602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.26253,"y":50.563557,"z":-94.6557},"screenPosition":{"x":0.24825636,"y":0.24217072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.39993,"y":48.81382,"z":-93.11782},"screenPosition":{"x":0.24960963,"y":0.28509194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.9712,"y":47.44907,"z":-91.77422},"screenPosition":{"x":0.24253294,"y":0.32530683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.19836,"y":45.915554,"z":-90.37788},"screenPosition":{"x":0.2409814,"y":0.36519217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.21596,"y":44.93365,"z":-89.43497},"screenPosition":{"x":0.23723353,"y":0.3930116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.1337,"y":44.435936,"z":-88.45112},"screenPosition":{"x":0.20678522,"y":0.4307637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.00648,"y":44.226162,"z":-87.690384},"screenPosition":{"x":0.17443293,"y":0.46284327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.00923,"y":42.548138,"z":-86.23408},"screenPosition":{"x":0.17678595,"y":0.50311244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.76234,"y":42.3141,"z":-85.480545},"screenPosition":{"x":0.1460818,"y":0.53442377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.5257,"y":40.58755,"z":-84.03866},"screenPosition":{"x":0.15162182,"y":0.573337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.06229,"y":38.018234,"z":-82.22981},"screenPosition":{"x":0.17897187,"y":0.6153495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.46158,"y":36.406555,"z":-81.371086},"screenPosition":{"x":0.21170485,"y":0.62877655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.14519,"y":34.55547,"z":-80.27483},"screenPosition":{"x":0.2430846,"y":0.64939284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.84366,"y":33.400497,"z":-79.69198},"screenPosition":{"x":0.26837456,"y":0.6575117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.28775,"y":32.29298,"z":-79.1979},"screenPosition":{"x":0.29627568,"y":0.66219187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.68704,"y":30.681303,"z":-78.33917},"screenPosition":{"x":0.3290136,"y":0.67571676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.43057,"y":28.446299,"z":-76.945435},"screenPosition":{"x":0.362949,"y":0.7038582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.90724,"y":26.260897,"z":-75.43408},"screenPosition":{"x":0.38774765,"y":0.738321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.85506,"y":24.77913,"z":-73.71372},"screenPosition":{"x":0.36530218,"y":0.7942144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.20415,"y":24.760237,"z":-73.204926},"screenPosition":{"x":0.33742735,"y":0.81705105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.64284,"y":25.749662,"z":-73.42544},"screenPosition":{"x":0.30005404,"y":0.8228424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.84203,"y":27.482655,"z":-74.24812},"screenPosition":{"x":0.25926316,"y":0.8137283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.64967,"y":29.428648,"z":-75.52195},"screenPosition":{"x":0.2331421,"y":0.7863307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.82143,"y":31.726772,"z":-77.82287},"screenPosition":{"x":0.24720478,"y":0.71717995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.88884,"y":31.52837,"z":-78.29333},"screenPosition":{"x":0.28375196,"y":0.6918946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.25595,"y":28.61829,"z":-76.68858},"screenPosition":{"x":0.33969453,"y":0.7183065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.40598,"y":26.07431,"z":-74.76933},"screenPosition":{"x":0.35963047,"y":0.76631266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.63799,"y":25.145227,"z":-73.399216},"screenPosition":{"x":0.32904947,"y":0.8146074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.89696,"y":27.2864,"z":-74.512184},"screenPosition":{"x":0.28405365,"y":0.79841864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.24068,"y":29.831455,"z":-76.32823},"screenPosition":{"x":0.2583327,"y":0.7556672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.21574,"y":30.302757,"z":-77.52569},"screenPosition":{"x":0.3021721,"y":0.70748323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.65971,"y":29.987335,"z":-77.619385},"screenPosition":{"x":0.32332584,"y":0.69774854},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.0828208,"y":1.0496825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.04218,"y":75.104454,"z":100.31412},"screenPosition":{"x":1.0039178,"y":1.0480291},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.93004346,"y":1.0885149},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.8257384,"y":1.0824935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.63927,"y":18.756021,"z":-73.08038},"screenPosition":{"x":0.5611503,"y":0.7781408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.3172,"y":21.24743,"z":-73.733955},"screenPosition":{"x":0.5443661,"y":0.7347559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.44652,"y":23.739662,"z":-75.97722},"screenPosition":{"x":0.54513854,"y":0.6708517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.37926,"y":23.612974,"z":-76.52925},"screenPosition":{"x":0.58295614,"y":0.6432412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.83585,"y":22.503307,"z":-76.24158},"screenPosition":{"x":0.6226236,"y":0.638308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.75636,"y":20.794579,"z":-75.41168},"screenPosition":{"x":0.66186875,"y":0.64880365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.64954,"y":18.39188,"z":-73.86199},"screenPosition":{"x":0.6954508,"y":0.6814589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.6999,"y":16.70107,"z":-73.64907},"screenPosition":{"x":0.6976905,"y":0.72026163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.61676,"y":76.061035,"z":100.687744},"screenPosition":{"x":0.98534703,"y":1.0358493},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.9261514,"y":1.0885915},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.8400234,"y":1.0902833},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.73803234,"y":1.0595721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.41455,"y":20.390064,"z":-72.445404},"screenPosition":{"x":0.51690376,"y":0.789488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.34691,"y":22.639664,"z":-74.76074},"screenPosition":{"x":0.532178,"y":0.7098101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.49146,"y":23.451725,"z":-75.7541},"screenPosition":{"x":0.5468537,"y":0.6762939},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-197.1467,"y":27.243433,"z":-78.64018},"screenPosition":{"x":0.51878756,"y":0.60430235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.57295,"y":28.702011,"z":-80.26455},"screenPosition":{"x":0.53739285,"y":0.552895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.45535,"y":30.960203,"z":-81.75428},"screenPosition":{"x":0.5077069,"y":0.5206492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.29533,"y":33.412502,"z":-83.18636},"screenPosition":{"x":0.46498805,"y":0.4943153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.43721,"y":34.643486,"z":-83.437996},"screenPosition":{"x":0.41717502,"y":0.50294346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.90625,"y":33.064667,"z":-81.74647},"screenPosition":{"x":0.40120828,"y":0.55582964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.3531,"y":30.279125,"z":-79.79609},"screenPosition":{"x":0.4314237,"y":0.60082245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.25864,"y":28.666374,"z":-79.040565},"screenPosition":{"x":0.47005934,"y":0.60948026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.78998,"y":27.868908,"z":-78.968796},"screenPosition":{"x":0.5062329,"y":0.59968096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.30623,"y":27.959517,"z":-79.559166},"screenPosition":{"x":0.534988,"y":0.5735767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.30112,"y":28.939274,"z":-80.70848},"screenPosition":{"x":0.55021167,"y":0.5358989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.61252,"y":30.978022,"z":-82.36628},"screenPosition":{"x":0.54103494,"y":0.49218267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.58467,"y":33.452435,"z":-83.99754},"screenPosition":{"x":0.50865924,"y":0.45700848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.25026,"y":34.492535,"z":-83.99724},"screenPosition":{"x":0.45617723,"y":0.4741985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.45232,"y":33.755413,"z":-82.77586},"screenPosition":{"x":0.4245448,"y":0.5191912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.55756,"y":30.707272,"z":-80.49196},"screenPosition":{"x":0.44920555,"y":0.5754841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.61772,"y":28.739164,"z":-79.01894},"screenPosition":{"x":0.46522078,"y":0.6117544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.36374,"y":26.41033,"z":-77.34443},"screenPosition":{"x":0.48803693,"y":0.65147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.2694,"y":24.005484,"z":-76.00114},"screenPosition":{"x":0.5333761,"y":0.67443854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.45914,"y":22.945417,"z":-75.59585},"screenPosition":{"x":0.56330985,"y":0.67521226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.12267,"y":22.170067,"z":-75.723274},"screenPosition":{"x":0.6101597,"y":0.65702236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.54903,"y":22.83655,"z":-76.75988},"screenPosition":{"x":0.6350876,"y":0.6195936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.25948,"y":24.84781,"z":-78.73448},"screenPosition":{"x":0.64484304,"y":0.56039715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.56075,"y":27.586973,"z":-80.492874},"screenPosition":{"x":0.60645324,"y":0.52374494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.3735,"y":28.55321,"z":-80.61739},"screenPosition":{"x":0.5643429,"y":0.533672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.8599,"y":27.576675,"z":-79.158485},"screenPosition":{"x":0.5315444,"y":0.5858741},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.85542,"y":24.595953,"z":-77.36896},"screenPosition":{"x":0.5808271,"y":0.62026274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.7732,"y":24.565245,"z":-77.99537},"screenPosition":{"x":0.6177277,"y":0.5904636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.18459,"y":25.327707,"z":-79.10634},"screenPosition":{"x":0.6414496,"y":0.55086654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.56839,"y":26.98039,"z":-80.67305},"screenPosition":{"x":0.6471809,"y":0.50527024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.55066,"y":28.75439,"z":-82.20373},"screenPosition":{"x":0.64393127,"y":0.4630177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.9543,"y":30.915531,"z":-83.72229},"screenPosition":{"x":0.621029,"y":0.42788628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.01382,"y":32.9079,"z":-85.1881},"screenPosition":{"x":0.6033847,"y":0.39235497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.47737,"y":34.685123,"z":-86.40918},"screenPosition":{"x":0.58276653,"y":0.36470285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.35977,"y":36.943317,"z":-87.89891},"screenPosition":{"x":0.5564909,"y":0.31914297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.0652,"y":38.675236,"z":-88.8248},"screenPosition":{"x":0.5180849,"y":0.31785703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.35674,"y":39.738525,"z":-88.92049},"screenPosition":{"x":0.4699185,"y":0.33099902},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-195.85847,"y":36.289726,"z":-85.62391},"screenPosition":{"x":0.45740303,"y":0.42793718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.93362,"y":34.22564,"z":-84.07652},"screenPosition":{"x":0.47426277,"y":0.46616384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.20917,"y":27.699696,"z":-81.28244},"screenPosition":{"x":0.64533633,"y":0.48869297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.54329,"y":27.776783,"z":-80.848015},"screenPosition":{"x":0.6169347,"y":0.5102834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.56548,"y":28.983503,"z":-81.106865},"screenPosition":{"x":0.5707508,"y":0.5181726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.03139,"y":31.458992,"z":-82.63493},"screenPosition":{"x":0.5322814,"y":0.4877343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.94376,"y":33.525227,"z":-83.97592},"screenPosition":{"x":0.50387114,"y":0.4592633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.13547,"y":35.53971,"z":-85.64093},"screenPosition":{"x":0.49610347,"y":0.414728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.0728,"y":37.60165,"z":-87.39472},"screenPosition":{"x":0.4914589,"y":0.36693978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.70874,"y":37.71652,"z":-87.97788},"screenPosition":{"x":0.51858485,"y":0.34157455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.8292,"y":36.63101,"z":-89.04184},"screenPosition":{"x":0.5592418,"y":0.3201056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.92134,"y":34.3697,"z":-86.50287},"screenPosition":{"x":0.6046455,"y":0.34675923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.3256,"y":32.570362,"z":-85.0826},"screenPosition":{"x":0.61392695,"y":0.39165288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.00407,"y":31.232027,"z":-83.5254},"screenPosition":{"x":0.593972,"y":0.4423365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.08618,"y":32.054832,"z":-83.486755},"screenPosition":{"x":0.5503395,"y":0.45777535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.79161,"y":33.78675,"z":-84.41264},"screenPosition":{"x":0.5152102,"y":0.44313288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.8087,"y":35.97323,"z":-85.8208},"screenPosition":{"x":0.48466665,"y":0.41355592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.8832,"y":37.869617,"z":-87.21224},"screenPosition":{"x":0.46766013,"y":0.37991202},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-192.29657,"y":41.70663,"z":-90.39351},"screenPosition":{"x":0.45390323,"y":0.29472873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.8923,"y":43.50597,"z":-91.813774},"screenPosition":{"x":0.44376093,"y":0.25449327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.3607,"y":45.887627,"z":-93.06107},"screenPosition":{"x":0.39788267,"y":0.22818246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.96428,"y":45.029186,"z":-91.87573},"screenPosition":{"x":0.37017223,"y":0.28046826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.77257,"y":43.0147,"z":-90.210724},"screenPosition":{"x":0.37768856,"y":0.32494733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.11707,"y":40.807182,"z":-88.500175},"screenPosition":{"x":0.39235914,"y":0.36835784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.33937,"y":38.669235,"z":-87.07761},"screenPosition":{"x":0.41972533,"y":0.39944282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.55917,"y":36.625114,"z":-85.935814},"screenPosition":{"x":0.4581307,"y":0.4189251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.68663,"y":35.250698,"z":-85.52101},"screenPosition":{"x":0.50396854,"y":0.41556385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.4545,"y":36.971878,"z":-87.478905},"screenPosition":{"x":0.5276922,"y":0.35257766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.75093,"y":39.106606,"z":-89.211075},"screenPosition":{"x":0.5199356,"y":0.29817882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.2343,"y":41.392284,"z":-90.384},"screenPosition":{"x":0.46920305,"y":0.28996524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.00226,"y":41.85436,"z":-90.14387},"screenPosition":{"x":0.4323714,"y":0.30884936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.66562,"y":41.4041,"z":-89.2488},"screenPosition":{"x":0.40453866,"y":0.34324226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.39915,"y":39.07741,"z":-87.36789},"screenPosition":{"x":0.41559765,"y":0.39264458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.50687,"y":35.935444,"z":-84.803215},"screenPosition":{"x":0.42913908,"y":0.4605116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.16052,"y":34.276314,"z":-83.855705},"screenPosition":{"x":0.4591838,"y":0.47729188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.13571,"y":33.95552,"z":-84.4654},"screenPosition":{"x":0.5098187,"y":0.4435049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.39772,"y":33.301483,"z":-84.556786},"screenPosition":{"x":0.547926,"y":0.4283956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.2909,"y":30.898787,"z":-83.007095},"screenPosition":{"x":0.58150804,"y":0.46105084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.99446,"y":28.76406,"z":-81.274925},"screenPosition":{"x":0.5912913,"y":0.50667834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.93979,"y":27.376123,"z":-79.835335},"screenPosition":{"x":0.57973236,"y":0.5508604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.15184,"y":26.730682,"z":-79.10113},"screenPosition":{"x":0.57104385,"y":0.57463527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.88774,"y":25.10226,"z":-77.527214},"screenPosition":{"x":0.5642516,"y":0.6212514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.96774,"y":23.642609,"z":-76.00604},"screenPosition":{"x":0.55180335,"y":0.6680603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.49655,"y":22.471968,"z":-74.60479},"screenPosition":{"x":0.53171766,"y":0.71418583},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-202.8772,"y":27.711956,"z":-77.780846},"screenPosition":{"x":0.44709373,"y":0.6526284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.15388,"y":28.079128,"z":-77.363144},"screenPosition":{"x":0.40502137,"y":0.6782433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.5031,"y":27.268139,"z":-76.26658},"screenPosition":{"x":0.3839895,"y":0.71608144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.22414,"y":24.943602,"z":-74.17927},"screenPosition":{"x":0.3832913,"y":0.7751705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.7008,"y":22.7582,"z":-72.667915},"screenPosition":{"x":0.40808997,"y":0.8096333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.75851,"y":20.64141,"z":-72.558624},"screenPosition":{"x":0.43519527,"y":0.82920045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.3262,"y":19.931786,"z":-72.755005},"screenPosition":{"x":0.48541996,"y":0.81844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.57918,"y":20.12639,"z":-72.21509},"screenPosition":{"x":0.515228,"y":0.79023725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.02277,"y":22.187254,"z":-74.072075},"screenPosition":{"x":0.5161024,"y":0.7345162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.09714,"y":24.87574,"z":-76.051285},"screenPosition":{"x":0.49236396,"y":0.686512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.76012,"y":26.801765,"z":-76.91952},"screenPosition":{"x":0.44433546,"y":0.6778239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.15427,"y":25.70284,"z":-75.599846},"screenPosition":{"x":0.42521715,"y":0.72132427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.8853,"y":23.469986,"z":-73.9997},"screenPosition":{"x":0.4473712,"y":0.7591015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.13232,"y":22.91193,"z":-74.16547},"screenPosition":{"x":0.4848649,"y":0.74215573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.60823,"y":25.479101,"z":-76.1807},"screenPosition":{"x":0.46927202,"y":0.69045657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.55554,"y":27.165716,"z":-76.81141},"screenPosition":{"x":0.41989884,"y":0.6889087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.51959,"y":19.860125,"z":-74.557556},"screenPosition":{"x":0.6603178,"y":0.6729332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.81378,"y":20.504492,"z":-75.394966},"screenPosition":{"x":0.6748298,"y":0.6442971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.09286,"y":22.036934,"z":-76.89451},"screenPosition":{"x":0.68281585,"y":0.599964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.71606,"y":23.738146,"z":-78.44681},"screenPosition":{"x":0.68468434,"y":0.55556464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.41414,"y":24.959461,"z":-79.62724},"screenPosition":{"x":0.6899687,"y":0.52068913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.16965,"y":25.89069,"z":-80.79097},"screenPosition":{"x":0.7087336,"y":0.48170257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.10475,"y":26.462269,"z":-81.65},"screenPosition":{"x":0.72842085,"y":0.45100462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.96759,"y":26.627815,"z":-82.01235},"screenPosition":{"x":0.7413002,"y":0.42512956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.57631,"y":25.256622,"z":-81.28796},"screenPosition":{"x":0.7674616,"y":0.44013292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.01651,"y":24.291168,"z":-81.9524},"screenPosition":{"x":0.7805759,"y":0.44765383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.90085,"y":23.332745,"z":-80.21332},"screenPosition":{"x":0.8025501,"y":0.46025586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.02316,"y":22.471083,"z":-79.33758},"screenPosition":{"x":0.7989811,"y":0.49300706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.08543,"y":22.78543,"z":-79.347084},"screenPosition":{"x":0.7836812,"y":0.49777055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.71858,"y":24.111319,"z":-79.77629},"screenPosition":{"x":0.74110895,"y":0.49966794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.17226,"y":25.004765,"z":-79.92243},"screenPosition":{"x":0.70414287,"y":0.5075704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.2248,"y":23.64324,"z":-78.26923},"screenPosition":{"x":0.6796338,"y":0.56238204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.6016,"y":21.94203,"z":-76.71694},"screenPosition":{"x":0.6774146,"y":0.60659736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.70172,"y":19.873646,"z":-75.58235},"screenPosition":{"x":0.7178963,"y":0.62556547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.74455,"y":17.303253,"z":-73.87671},"screenPosition":{"x":0.7505944,"y":0.6624102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.56021,"y":16.266376,"z":-73.56741},"screenPosition":{"x":0.7859199,"y":0.6692087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.55145,"y":14.809643,"z":-74.17251},"screenPosition":{"x":0.8191553,"y":0.6543489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.5033,"y":14.179439,"z":-74.34691},"screenPosition":{"x":0.8627822,"y":0.6444956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.84225,"y":13.629272,"z":-74.49916},"screenPosition":{"x":0.89705664,"y":0.6195186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.01186,"y":15.811377,"z":-75.45154},"screenPosition":{"x":0.91396374,"y":0.5640083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.36223,"y":18.438227,"z":-78.58978},"screenPosition":{"x":0.8861998,"y":0.5059823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.12065,"y":21.288626,"z":-79.071526},"screenPosition":{"x":0.8398217,"y":0.4816308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.39734,"y":21.655798,"z":-78.65382},"screenPosition":{"x":0.8014635,"y":0.51147175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.04587,"y":20.50942,"z":-77.24535},"screenPosition":{"x":0.77904844,"y":0.5580822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.64235,"y":17.556185,"z":-75.13903},"screenPosition":{"x":0.80893016,"y":0.6075885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.10654,"y":15.3729315,"z":-73.42127},"screenPosition":{"x":0.81803566,"y":0.64966404},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.2889434,"y":0.8944599},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-167.57216,"y":12.4145155,"z":-75.12906},"screenPosition":{"x":0.99380505,"y":0.569939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.95773,"y":14.156923,"z":-76.130104},"screenPosition":{"x":0.9625225,"y":0.5519987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.50226,"y":16.099232,"z":-77.245995},"screenPosition":{"x":0.93320215,"y":0.51900774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.4412,"y":18.537512,"z":-78.64683},"screenPosition":{"x":0.88387495,"y":0.506895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.7193,"y":20.144789,"z":-79.57024},"screenPosition":{"x":0.86103415,"y":0.47626635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.1487,"y":21.942318,"z":-80.60294},"screenPosition":{"x":0.82478005,"y":0.4670781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.37962,"y":23.429798,"z":-80.184494},"screenPosition":{"x":0.7985048,"y":0.45793593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.29723,"y":23.72418,"z":-79.78841},"screenPosition":{"x":0.7612961,"y":0.4926875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.8857,"y":23.753815,"z":-79.2652},"screenPosition":{"x":0.7297107,"y":0.51745695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.77348,"y":23.44806,"z":-78.43009},"screenPosition":{"x":0.69770086,"y":0.551262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.98553,"y":22.802618,"z":-77.695885},"screenPosition":{"x":0.6893672,"y":0.5751371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.587,"y":19.661722,"z":-75.028015},"screenPosition":{"x":0.6972868,"y":0.6479748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.1236,"y":17.092403,"z":-73.21917},"screenPosition":{"x":0.7242503,"y":0.6967817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.43741,"y":15.819806,"z":-73.89295},"screenPosition":{"x":0.7524872,"y":0.6841568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.37344,"y":15.1863365,"z":-74.06826},"screenPosition":{"x":0.798638,"y":0.67850393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.25357,"y":16.091164,"z":-74.13386},"screenPosition":{"x":0.82670176,"y":0.6306285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.6697,"y":18.250154,"z":-75.858826},"screenPosition":{"x":0.8139241,"y":0.5851903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.09067,"y":21.013578,"z":-77.61001},"screenPosition":{"x":0.77490646,"y":0.54963946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.34976,"y":22.362656,"z":-78.13521},"screenPosition":{"x":0.73658365,"y":0.5474325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.4019,"y":23.377419,"z":-78.245316},"screenPosition":{"x":0.6909521,"y":0.55876666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.48204,"y":21.125671,"z":-76.13638},"screenPosition":{"x":0.6851595,"y":0.6198393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.2257,"y":18.098572,"z":-74.15488},"screenPosition":{"x":0.72555697,"y":0.66213185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.53262,"y":17.156599,"z":-74.02315},"screenPosition":{"x":0.7667782,"y":0.6534572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.10616,"y":17.749218,"z":-75.18457},"screenPosition":{"x":0.802472,"y":0.6089682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.28525,"y":20.557947,"z":-77.23094},"screenPosition":{"x":0.77605593,"y":0.55965835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.16766,"y":22.81614,"z":-78.72068},"screenPosition":{"x":0.74562806,"y":0.5271779},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-178.23965,"y":14.331682,"z":-74.30478},"screenPosition":{"x":0.8506994,"y":0.64024526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.35356,"y":14.814876,"z":-73.587036},"screenPosition":{"x":0.85463524,"y":0.6325513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.59021,"y":16.541424,"z":-75.02892},"screenPosition":{"x":0.8545345,"y":0.59623563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.84183,"y":18.171993,"z":-76.39645},"screenPosition":{"x":0.8495696,"y":0.55930626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.72176,"y":20.524015,"z":-78.16695},"screenPosition":{"x":0.83100295,"y":0.51548624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.72136,"y":22.900303,"z":-79.93025},"screenPosition":{"x":0.80930144,"y":0.46412772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.99281,"y":25.039328,"z":-81.24962},"screenPosition":{"x":0.7737021,"y":0.44371176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.3716,"y":26.412668,"z":-81.76762},"screenPosition":{"x":0.7368882,"y":0.4445671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.54344,"y":27.451693,"z":-81.87051},"screenPosition":{"x":0.6910203,"y":0.4570863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.35397,"y":26.927568,"z":-81.100266},"screenPosition":{"x":0.6739535,"y":0.48441884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.4789,"y":25.17998,"z":-79.35598},"screenPosition":{"x":0.6635496,"y":0.53702676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.54143,"y":23.910137,"z":-78.18996},"screenPosition":{"x":0.6616412,"y":0.5704734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.21506,"y":21.967367,"z":-76.60653},"screenPosition":{"x":0.6702212,"y":0.6123636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.32501,"y":20.315758,"z":-74.93662},"screenPosition":{"x":0.65887946,"y":0.6628583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.8537,"y":19.937212,"z":-74.12314},"screenPosition":{"x":0.632338,"y":0.69485056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.72636,"y":20.519531,"z":-73.950165},"screenPosition":{"x":0.59323937,"y":0.7125862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.25468,"y":22.517273,"z":-74.89998},"screenPosition":{"x":0.5462021,"y":0.7012718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.22185,"y":25.179348,"z":-77.09279},"screenPosition":{"x":0.5358499,"y":0.6428418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.92465,"y":27.797192,"z":-78.887215},"screenPosition":{"x":0.5052211,"y":0.6022873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.91954,"y":28.776949,"z":-80.03653},"screenPosition":{"x":0.5207484,"y":0.5647987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.07657,"y":29.586863,"z":-81.23629},"screenPosition":{"x":0.5476588,"y":0.5221172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.60779,"y":29.581491,"z":-81.75229},"screenPosition":{"x":0.5770517,"y":0.49790037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.18394,"y":29.288185,"z":-82.04517},"screenPosition":{"x":0.6083582,"y":0.4793458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.3114,"y":27.913769,"z":-81.63038},"screenPosition":{"x":0.65384495,"y":0.47587103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.18698,"y":26.492977,"z":-81.02359},"screenPosition":{"x":0.6915203,"y":0.4808038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.48418,"y":23.875132,"z":-79.229164},"screenPosition":{"x":0.7221285,"y":0.5213383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.96333,"y":21.595898,"z":-77.43704},"screenPosition":{"x":0.73580784,"y":0.5673752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.15028,"y":21.74685,"z":-76.87779},"screenPosition":{"x":0.6958277,"y":0.59559107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.19981,"y":23.647537,"z":-77.85644},"screenPosition":{"x":0.65611947,"y":0.58175546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.73813,"y":25.73696,"z":-79.29342},"screenPosition":{"x":0.6319587,"y":0.5491801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.86992,"y":28.135363,"z":-81.25591},"screenPosition":{"x":0.62182856,"y":0.4971281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.7601,"y":28.994877,"z":-82.33806},"screenPosition":{"x":0.63966465,"y":0.4607912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.60297,"y":29.444063,"z":-83.33632},"screenPosition":{"x":0.67337596,"y":0.42155495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.34401,"y":27.30289,"z":-82.22335},"screenPosition":{"x":0.7184307,"y":0.43812227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.5813,"y":25.06896,"z":-80.72641},"screenPosition":{"x":0.74648756,"y":0.47110707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.13272,"y":23.195759,"z":-79.43096},"screenPosition":{"x":0.76702,"y":0.500449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.9535,"y":21.179125,"z":-77.97236},"screenPosition":{"x":0.787017,"y":0.53543895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.19328,"y":18.851366,"z":-76.19465},"screenPosition":{"x":0.80395454,"y":0.5799979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.57245,"y":17.84842,"z":-74.94934},"screenPosition":{"x":0.7841984,"y":0.6216109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.4153,"y":17.8306,"z":-74.33735},"screenPosition":{"x":0.75055605,"y":0.6499321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.59962,"y":18.867477,"z":-74.646645},"screenPosition":{"x":0.71577585,"y":0.6526483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.52946,"y":20.743902,"z":-75.63249},"screenPosition":{"x":0.6768842,"y":0.6376389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.36955,"y":22.404106,"z":-76.47681},"screenPosition":{"x":0.6404333,"y":0.6253449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.7607,"y":24.567394,"z":-77.78897},"screenPosition":{"x":0.60597056,"y":0.6001503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.61053,"y":27.903471,"z":-80.29598},"screenPosition":{"x":0.57939625,"y":0.5381952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.79517,"y":27.823162,"z":-81.04},"screenPosition":{"x":0.62513405,"y":0.5019599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.38641,"y":26.641779,"z":-80.67075},"screenPosition":{"x":0.6641099,"y":0.4997678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.41165,"y":25.053291,"z":-79.90802},"screenPosition":{"x":0.701088,"y":0.509115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.67627,"y":23.51333,"z":-79.130875},"screenPosition":{"x":0.7338307,"y":0.51961523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.15033,"y":22.213854,"z":-78.48805},"screenPosition":{"x":0.76399404,"y":0.5284685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.05586,"y":20.601103,"z":-77.73253},"screenPosition":{"x":0.8026013,"y":0.5370767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.1858,"y":19.132858,"z":-77.036964},"screenPosition":{"x":0.8373125,"y":0.54527545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.19606,"y":17.640348,"z":-76.3486},"screenPosition":{"x":0.8736528,"y":0.5527352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.89203,"y":16.579208,"z":-76.04651},"screenPosition":{"x":0.9100621,"y":0.54928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.0819,"y":14.727047,"z":-75.05346},"screenPosition":{"x":0.9473247,"y":0.56502837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.13943,"y":13.644866,"z":-74.448975},"screenPosition":{"x":0.967637,"y":0.5879615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.61586,"y":13.043654,"z":-74.11315},"screenPosition":{"x":0.9750483,"y":0.5846479},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190823-233812/brain-C79344-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9783645227622508,0.19832430714956126,0.058909505123028665,0.0,0.12242634982262426,0.7845170509960121,-0.6079019539083823,0.0,-0.16677724505849734,-0.5875376293397445,-0.7918237712019836,0.0,-224.8976043538789,-20.982668697446897,-179.87416447157918,1.0]},"baseImage":"20190823-233812/base.webp","version":0,"savedAt":1.566603854212E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-000052-v0.json b/data/mapping/BAAAHS/dwayman/20190824-000052-v0.json new file mode 100644 index 0000000000..388fbf194b --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-000052-v0.json @@ -0,0 +1 @@ +{"startedAt":1.56660485266E12,"surfaces":[{"brainId":"CB63C0","panelName":"24D","pixels":[{"modelPosition":{"x":-347.43652,"y":193.73445,"z":-49.710133},"screenPosition":{"x":0.14606263,"y":0.08931914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.4465,"y":192.30452,"z":-51.442825},"screenPosition":{"x":0.14728072,"y":0.13018408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.81427,"y":191.06369,"z":-52.891735},"screenPosition":{"x":0.14554042,"y":0.16372214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.08688,"y":189.57173,"z":-54.625988},"screenPosition":{"x":0.14301692,"y":0.20375195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.5892,"y":188.14351,"z":-56.238327},"screenPosition":{"x":0.13829957,"y":0.24030931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.98868,"y":186.7706,"z":-57.817627},"screenPosition":{"x":0.13480802,"y":0.2764932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.14694,"y":185.63486,"z":-59.207176},"screenPosition":{"x":0.13662861,"y":0.30956566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.02008,"y":185.16966,"z":-59.964664},"screenPosition":{"x":0.1476631,"y":0.33016682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.77103,"y":185.35335,"z":-60.314293},"screenPosition":{"x":0.17868876,"y":0.34633553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.47638,"y":184.23308,"z":-62.037544},"screenPosition":{"x":0.1997583,"y":0.3921664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.15973,"y":182.63968,"z":-64.019714},"screenPosition":{"x":0.20415318,"y":0.43978804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.0738,"y":181.1104,"z":-65.87931},"screenPosition":{"x":0.20603675,"y":0.48388955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.2757,"y":179.24062,"z":-67.784615},"screenPosition":{"x":0.18824989,"y":0.52401155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.8693,"y":176.84691,"z":-69.42068},"screenPosition":{"x":0.12213576,"y":0.5448357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.48575,"y":178.58963,"z":-67.21029},"screenPosition":{"x":0.11455262,"y":0.4916135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.41605,"y":180.27417,"z":-65.46671},"screenPosition":{"x":0.12912296,"y":0.45444068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.80646,"y":182.06306,"z":-63.744114},"screenPosition":{"x":0.15183088,"y":0.41967812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.26193,"y":182.58041,"z":-64.05704},"screenPosition":{"x":0.20235996,"y":0.4401707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.337,"y":179.83566,"z":-66.42562},"screenPosition":{"x":0.15285987,"y":0.48304674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.533,"y":178.84131,"z":-66.454285},"screenPosition":{"x":0.089724615,"y":0.4674842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.34467,"y":181.20552,"z":-64.02904},"screenPosition":{"x":0.11131216,"y":0.41616327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.06995,"y":182.31985,"z":-63.412323},"screenPosition":{"x":0.15039359,"y":0.41158107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.03482,"y":183.1928,"z":-62.99017},"screenPosition":{"x":0.18400314,"y":0.41046453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.5657,"y":183.80484,"z":-62.945168},"screenPosition":{"x":0.22138646,"y":0.41900977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.8893,"y":184.5361,"z":-62.825478},"screenPosition":{"x":0.26245695,"y":0.4267501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.92468,"y":183.89035,"z":-64.214195},"screenPosition":{"x":0.29616672,"y":0.46798044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.4097,"y":180.71916,"z":-67.4113},"screenPosition":{"x":0.26412725,"y":0.53474206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.71283,"y":179.6306,"z":-67.75344},"screenPosition":{"x":0.21205015,"y":0.5292031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.44632,"y":179.90248,"z":-66.81107},"screenPosition":{"x":0.17823243,"y":0.498604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.35455,"y":180.64803,"z":-65.572464},"screenPosition":{"x":0.1592052,"y":0.4646651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.34653,"y":181.95471,"z":-63.72729},"screenPosition":{"x":0.14382875,"y":0.41726175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.37912,"y":183.57214,"z":-62.02923},"screenPosition":{"x":0.15628386,"y":0.38080627},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-339.36768,"y":187.01286,"z":-58.677227},"screenPosition":{"x":0.19741935,"y":0.31274763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.2896,"y":188.9591,"z":-56.903008},"screenPosition":{"x":0.22738615,"y":0.27881056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.39407,"y":190.67697,"z":-54.601074},"screenPosition":{"x":0.21359791,"y":0.2212941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.09598,"y":189.23792,"z":-55.213448},"screenPosition":{"x":0.15332928,"y":0.22017956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.2421,"y":187.33287,"z":-57.16903},"screenPosition":{"x":0.1359897,"y":0.26159564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.71338,"y":185.71274,"z":-58.989395},"screenPosition":{"x":0.12997219,"y":0.3026883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.18317,"y":184.08804,"z":-60.814873},"screenPosition":{"x":0.1236322,"y":0.3439373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.41122,"y":182.70021,"z":-62.451057},"screenPosition":{"x":0.12253675,"y":0.3820336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.76157,"y":181.4068,"z":-64.19992},"screenPosition":{"x":0.13407211,"y":0.42572984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.4342,"y":181.1817,"z":-65.23639},"screenPosition":{"x":0.17561245,"y":0.46099603},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-344.13672,"y":182.00594,"z":-62.761066},"screenPosition":{"x":0.09425456,"y":0.38204166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.4475,"y":182.56767,"z":-63.32469},"screenPosition":{"x":0.077973954,"y":0.37508416},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-347.3713,"y":187.74788,"z":-57.4481},"screenPosition":{"x":0.08111799,"y":0.23942982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.6511,"y":188.26125,"z":-55.618774},"screenPosition":{"x":0.111865215,"y":0.21903795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.8139,"y":188.4919,"z":-56.06095},"screenPosition":{"x":0.15099527,"y":0.2394588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.70255,"y":187.38622,"z":-57.724834},"screenPosition":{"x":0.16977541,"y":0.2833092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.5953,"y":185.9958,"z":-59.444443},"screenPosition":{"x":0.17306325,"y":0.32448795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.5209,"y":184.47827,"z":-61.288994},"screenPosition":{"x":0.17489055,"y":0.3682222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.72757,"y":182.62074,"z":-63.180344},"screenPosition":{"x":0.15714042,"y":0.4080263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.48196,"y":180.3386,"z":-65.38354},"screenPosition":{"x":0.12875924,"y":0.45241454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.59875,"y":178.90584,"z":-66.37102},"screenPosition":{"x":0.089360245,"y":0.46545815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.0208,"y":181.41872,"z":-64.628105},"screenPosition":{"x":0.07476768,"y":0.40478307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.69308,"y":172.06117,"z":-73.982605},"screenPosition":{"x":0.059645467,"y":0.63548356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.32986,"y":171.66422,"z":-74.96651},"screenPosition":{"x":0.08720138,"y":0.6659221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.79636,"y":171.73274,"z":-75.74579},"screenPosition":{"x":0.13377264,"y":0.6967545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.33917,"y":174.30518,"z":-73.64929},"screenPosition":{"x":0.1870913,"y":0.6608107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.20212,"y":176.56987,"z":-71.31569},"screenPosition":{"x":0.2069992,"y":0.61165005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.34396,"y":178.3342,"z":-68.95619},"screenPosition":{"x":0.19315015,"y":0.55275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.5004,"y":177.74402,"z":-68.81284},"screenPosition":{"x":0.14691688,"y":0.5375141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.6233,"y":176.30638,"z":-69.80396},"screenPosition":{"x":0.10792496,"y":0.5501083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.08603,"y":174.21747,"z":-71.63464},"screenPosition":{"x":0.071277976,"y":0.58427554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.87073,"y":172.53809,"z":-73.68226},"screenPosition":{"x":0.0741602,"y":0.63234174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.47617,"y":171.95107,"z":-74.87232},"screenPosition":{"x":0.10034353,"y":0.66768163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.10043,"y":172.65813,"z":-74.946335},"screenPosition":{"x":0.15040365,"y":0.6822741},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.97763,"y":173.47185,"z":-74.60718},"screenPosition":{"x":0.18487059,"y":0.68317074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.7419,"y":174.97719,"z":-73.57248},"screenPosition":{"x":0.22646372,"y":0.66947085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.47772,"y":177.30159,"z":-70.72548},"screenPosition":{"x":0.22243641,"y":0.60177106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.8602,"y":178.94652,"z":-68.91443},"screenPosition":{"x":0.2307278,"y":0.5614212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.14822,"y":178.7982,"z":-68.27764},"screenPosition":{"x":0.18654557,"y":0.5348369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.28424,"y":177.39273,"z":-68.99119},"screenPosition":{"x":0.13410908,"y":0.53799117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.1127,"y":174.84424,"z":-71.454865},"screenPosition":{"x":0.10226866,"y":0.58801776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.73032,"y":172.84421,"z":-73.87778},"screenPosition":{"x":0.10423522,"y":0.6453536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.0387,"y":171.4878,"z":-75.9434},"screenPosition":{"x":0.12883301,"y":0.6997085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.96545,"y":172.80522,"z":-75.547554},"screenPosition":{"x":0.1928878,"y":0.7070077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.36554,"y":175.09113,"z":-73.54405},"screenPosition":{"x":0.2325042,"y":0.66989785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.0474,"y":177.50772,"z":-70.8545},"screenPosition":{"x":0.24289079,"y":0.6100504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.90515,"y":179.2932,"z":-68.78212},"screenPosition":{"x":0.2462181,"y":0.56199855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.0458,"y":179.95383,"z":-67.33547},"screenPosition":{"x":0.21017608,"y":0.51910776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.45212,"y":179.58995,"z":-67.13627},"screenPosition":{"x":0.17577335,"y":0.5054091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.10223,"y":178.67137,"z":-67.45802},"screenPosition":{"x":0.13338517,"y":0.50226086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.2157,"y":177.54877,"z":-68.12221},"screenPosition":{"x":0.09654016,"y":0.50837713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.63388,"y":175.9021,"z":-69.50147},"screenPosition":{"x":0.05875569,"y":0.52910733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.60236,"y":174.90648,"z":-72.01578},"screenPosition":{"x":0.055763446,"y":0.57298636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.77554,"y":172.94727,"z":-73.03678},"screenPosition":{"x":0.065073915,"y":0.61557007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.134,"y":172.13414,"z":-74.281784},"screenPosition":{"x":0.08005206,"y":0.6486191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.6398,"y":170.50113,"z":-76.34809},"screenPosition":{"x":0.08645795,"y":0.6987306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.87167,"y":168.32448,"z":-78.32606},"screenPosition":{"x":0.052659683,"y":0.73644495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.3846,"y":168.93468,"z":-78.79037},"screenPosition":{"x":0.021143392,"y":0.72456616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.53998,"y":171.45189,"z":-75.85031},"screenPosition":{"x":0.027010437,"y":0.65739423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.79523,"y":172.73305,"z":-74.481384},"screenPosition":{"x":0.04633583,"y":0.6286453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.72495,"y":173.03786,"z":-73.19511},"screenPosition":{"x":0.07960586,"y":0.62301576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.30084,"y":174.02843,"z":-72.74369},"screenPosition":{"x":0.119461454,"y":0.6226634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.74738,"y":174.57413,"z":-72.78832},"screenPosition":{"x":0.15741587,"y":0.63345766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.56625,"y":175.00676,"z":-72.86146},"screenPosition":{"x":0.18956405,"y":0.6434293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.37823,"y":174.14388,"z":-74.53087},"screenPosition":{"x":0.22445042,"y":0.6915457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.2799,"y":171.95361,"z":-77.084175},"screenPosition":{"x":0.22114666,"y":0.75058657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.26526,"y":169.22647,"z":-79.45596},"screenPosition":{"x":0.17299613,"y":0.7938521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.58047,"y":169.08923,"z":-78.80105},"screenPosition":{"x":0.12834392,"y":0.7670232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.99292,"y":170.94482,"z":-76.76263},"screenPosition":{"x":0.13794708,"y":0.7216771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.63696,"y":172.67184,"z":-75.28442},"screenPosition":{"x":0.1697356,"y":0.6951689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.63794,"y":174.24883,"z":-74.11785},"screenPosition":{"x":0.20875533,"y":0.6778275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.88193,"y":175.58028,"z":-73.14934},"screenPosition":{"x":0.2425961,"y":0.66380125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.84457,"y":176.45964,"z":-73.20262},"screenPosition":{"x":0.30277264,"y":0.6803642},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-324.0388,"y":171.36395,"z":-78.72166},"screenPosition":{"x":0.2721466,"y":0.80178887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.40472,"y":170.78038,"z":-78.52096},"screenPosition":{"x":0.22314435,"y":0.7848002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.18878,"y":172.9986,"z":-75.7733},"screenPosition":{"x":0.21776864,"y":0.71870303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.3154,"y":174.55124,"z":-74.36111},"screenPosition":{"x":0.24199468,"y":0.69124556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.3569,"y":176.47607,"z":-73.06207},"screenPosition":{"x":0.29614407,"y":0.67550665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.45074,"y":176.38283,"z":-73.859344},"screenPosition":{"x":0.3335585,"y":0.7038159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.50818,"y":175.46545,"z":-75.52659},"screenPosition":{"x":0.36478007,"y":0.7509403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.0082,"y":172.91043,"z":-78.31699},"screenPosition":{"x":0.35067627,"y":0.81264985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.91394,"y":178.86029,"z":-72.60368},"screenPosition":{"x":0.4263318,"y":0.6981896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.5438,"y":177.0796,"z":-74.55366},"screenPosition":{"x":0.41676205,"y":0.74076074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.1389,"y":175.10237,"z":-76.71737},"screenPosition":{"x":0.40609214,"y":0.78918463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.24942,"y":173.29674,"z":-78.33683},"screenPosition":{"x":0.37689114,"y":0.8199663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.4952,"y":172.09984,"z":-79.04679},"screenPosition":{"x":0.33786947,"y":0.82520556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.50046,"y":170.83109,"z":-79.889755},"screenPosition":{"x":0.30126813,"y":0.83600605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.88947,"y":169.28526,"z":-81.170654},"screenPosition":{"x":0.27034461,"y":0.8590721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.86386,"y":167.82263,"z":-82.22367},"screenPosition":{"x":0.23257385,"y":0.8740709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.14685,"y":166.49846,"z":-83.05766},"screenPosition":{"x":0.19234094,"y":0.8818199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.57578,"y":166.6234,"z":-82.101395},"screenPosition":{"x":0.1478474,"y":0.8494436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.56506,"y":167.94334,"z":-80.00222},"screenPosition":{"x":0.11944145,"y":0.7925526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.88977,"y":170.96439,"z":-77.48945},"screenPosition":{"x":0.17910257,"y":0.7487177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.85162,"y":172.67049,"z":-76.197365},"screenPosition":{"x":0.21975046,"y":0.7285736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.29895,"y":171.63203,"z":-77.897255},"screenPosition":{"x":0.24456121,"y":0.775671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.70532,"y":171.02925,"z":-79.63335},"screenPosition":{"x":0.30009148,"y":0.830217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.12628,"y":169.04506,"z":-80.88304},"screenPosition":{"x":0.2391165,"y":0.84395367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.0714,"y":167.07124,"z":-82.47728},"screenPosition":{"x":0.197781,"y":0.8701868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.01727,"y":167.36932,"z":-81.45639},"screenPosition":{"x":0.16123301,"y":0.8377206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.84338,"y":168.8368,"z":-79.48313},"screenPosition":{"x":0.14949715,"y":0.78757757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.67053,"y":171.24512,"z":-77.008064},"screenPosition":{"x":0.17087957,"y":0.73589176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.0498,"y":173.1839,"z":-75.61314},"screenPosition":{"x":0.22099362,"y":0.7160432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.21704,"y":172.83519,"z":-76.65968},"screenPosition":{"x":0.25556174,"y":0.7488211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.62463,"y":171.60417,"z":-78.570366},"screenPosition":{"x":0.27945986,"y":0.8004219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.26892,"y":169.17097,"z":-81.198715},"screenPosition":{"x":0.26462418,"y":0.8574209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.0663,"y":167.8657,"z":-81.88909},"screenPosition":{"x":0.21712966,"y":0.8622568},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-330.8499,"y":168.99254,"z":-79.55963},"screenPosition":{"x":0.16369241,"y":0.7932392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.4151,"y":166.66306,"z":-81.376236},"screenPosition":{"x":0.11126262,"y":0.8222101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.13528,"y":164.45332,"z":-83.51197},"screenPosition":{"x":0.08353151,"y":0.86601186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.6283,"y":162.62779,"z":-86.02336},"screenPosition":{"x":0.10168106,"y":0.929579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.54144,"y":165.10431,"z":-84.41954},"screenPosition":{"x":0.17540337,"y":0.91089386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.57123,"y":167.41705,"z":-81.51392},"screenPosition":{"x":0.16746505,"y":0.84070224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.92203,"y":167.00041,"z":-80.90162},"screenPosition":{"x":0.10694983,"y":0.8107988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.73422,"y":164.89674,"z":-82.663574},"screenPosition":{"x":0.06612066,"y":0.84164083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.3846,"y":162.93758,"z":-84.55428},"screenPosition":{"x":0.04171988,"y":0.87972176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.18143,"y":160.94061,"z":-86.69004},"screenPosition":{"x":0.028224109,"y":0.9263512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.28952,"y":158.7567,"z":-88.946205},"screenPosition":{"x":0.0040546563,"y":0.96750426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.34613,"y":159.38887,"z":-90.12453},"screenPosition":{"x":0.052045796,"y":1.0114818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.1632,"y":161.34166,"z":-88.945656},"screenPosition":{"x":0.09376679,"y":0.9800941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.85266,"y":161.8527,"z":-87.26091},"screenPosition":{"x":0.12306697,"y":0.9738739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.09497,"y":163.89087,"z":-84.83188},"screenPosition":{"x":0.119435355,"y":0.90488136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.0476,"y":163.5536,"z":-84.47329},"screenPosition":{"x":0.077400394,"y":0.8869856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.29416,"y":164.15047,"z":-83.308586},"screenPosition":{"x":0.052725807,"y":0.8533298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.3482,"y":164.38188,"z":-82.81294},"screenPosition":{"x":0.04075537,"y":0.83862996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.55862,"y":165.25726,"z":-81.60668},"screenPosition":{"x":0.024664542,"y":0.80232805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.88556,"y":167.59087,"z":-80.31483},"screenPosition":{"x":0.029793354,"y":0.7612236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.08954,"y":168.55853,"z":-77.7882},"screenPosition":{"x":0.035487927,"y":0.7155849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.83914,"y":169.71234,"z":-77.36519},"screenPosition":{"x":0.09058884,"y":0.723648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.32382,"y":169.4968,"z":-78.196144},"screenPosition":{"x":0.12188005,"y":0.7511748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.91357,"y":168.11102,"z":-79.98388},"screenPosition":{"x":0.12918471,"y":0.794983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.85516,"y":166.25026,"z":-82.42405},"screenPosition":{"x":0.14152233,"y":0.85447913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.672,"y":164.29706,"z":-84.26845},"screenPosition":{"x":0.114618905,"y":0.8917393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.21527,"y":162.39336,"z":-86.12699},"screenPosition":{"x":0.09235001,"y":0.92895764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.17572,"y":160.24406,"z":-88.141716},"screenPosition":{"x":0.062062263,"y":0.9690914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.46082,"y":158.76355,"z":-88.8978},"screenPosition":{"x":0.004241596,"y":0.96600604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.48618,"y":161.12997,"z":-87.64426},"screenPosition":{"x":0.009008575,"y":0.9278015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.16312,"y":161.00012,"z":-85.44764},"screenPosition":{"x":-0.009316815,"y":0.8926112},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-340.61978,"y":164.90205,"z":-81.017166},"screenPosition":{"x":0.0031411476,"y":0.7919151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.73685,"y":167.19038,"z":-80.76915},"screenPosition":{"x":0.019495009,"y":0.769335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.4611,"y":169.26868,"z":-79.12389},"screenPosition":{"x":0.15763229,"y":0.7821175},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-330.99487,"y":166.06366,"z":-82.58541},"screenPosition":{"x":0.13836963,"y":0.85698336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.85123,"y":164.13812,"z":-84.63219},"screenPosition":{"x":0.124360956,"y":0.9021459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.49652,"y":162.95818,"z":-86.43226},"screenPosition":{"x":0.14548756,"y":0.9504203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.9018,"y":164.34132,"z":-87.07799},"screenPosition":{"x":0.18715036,"y":0.9602695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.79367,"y":164.83496,"z":-86.73365},"screenPosition":{"x":0.21966188,"y":0.9642097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.70624,"y":166.02505,"z":-85.99266},"screenPosition":{"x":0.25671118,"y":0.9563444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.80786,"y":167.6775,"z":-84.963806},"screenPosition":{"x":0.30815408,"y":0.9454235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.8243,"y":168.7233,"z":-82.977646},"screenPosition":{"x":0.33539158,"y":0.92879915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.06476,"y":169.12857,"z":-81.533005},"screenPosition":{"x":0.28006738,"y":0.8692589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.316,"y":167.76718,"z":-82.65435},"screenPosition":{"x":0.2524543,"y":0.88927853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.1949,"y":165.86914,"z":-84.907776},"screenPosition":{"x":0.2544335,"y":0.94598585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.56906,"y":166.67339,"z":-85.589},"screenPosition":{"x":0.27689466,"y":0.9520596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.23694,"y":163.1361,"z":-84.60883},"screenPosition":{"x":0.30552205,"y":0.9961949},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-312.35956,"y":166.60326,"z":-82.71929},"screenPosition":{"x":0.39626864,"y":0.96908015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.66748,"y":171.31642,"z":-82.73511},"screenPosition":{"x":0.40429422,"y":0.9141717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.5987,"y":171.2319,"z":-81.13289},"screenPosition":{"x":0.39499173,"y":0.8901982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.3539,"y":173.07599,"z":-78.78314},"screenPosition":{"x":0.38686574,"y":0.83299667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.55957,"y":172.80177,"z":-78.297775},"screenPosition":{"x":0.34254354,"y":0.8102292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.0137,"y":171.1672,"z":-79.41492},"screenPosition":{"x":0.29708022,"y":0.8247565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.98898,"y":169.38773,"z":-80.79883},"screenPosition":{"x":0.25673312,"y":0.846855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.76654,"y":167.24373,"z":-82.85206},"screenPosition":{"x":0.22957085,"y":0.88650477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.6822,"y":165.37372,"z":-85.30815},"screenPosition":{"x":0.24354409,"y":0.9482976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.84213,"y":167.08783,"z":-85.33095},"screenPosition":{"x":0.29163888,"y":0.96009785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.46283,"y":168.58247,"z":-84.43733},"screenPosition":{"x":0.319183,"y":0.93224007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.2684,"y":169.79686,"z":-81.50802},"screenPosition":{"x":0.32204428,"y":0.88026273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.43463,"y":170.44643,"z":-80.30759},"screenPosition":{"x":0.29909477,"y":0.8448212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.2623,"y":169.17741,"z":-80.711975},"screenPosition":{"x":0.23830737,"y":0.84008574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.51697,"y":167.49858,"z":-82.164215},"screenPosition":{"x":0.20846628,"y":0.86573446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.2524,"y":165.96304,"z":-83.350945},"screenPosition":{"x":0.17301671,"y":0.8852164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.61435,"y":164.21997,"z":-84.844505},"screenPosition":{"x":0.14174116,"y":0.9102667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.3275,"y":162.32106,"z":-86.65713},"screenPosition":{"x":0.11628236,"y":0.9481942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.6979,"y":161.46881,"z":-88.8295},"screenPosition":{"x":0.114869356,"y":0.9864563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.48737,"y":163.29922,"z":-87.689835},"screenPosition":{"x":0.17185247,"y":0.9743592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.9749,"y":164.86977,"z":-86.74896},"screenPosition":{"x":0.20474888,"y":0.96349037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.99374,"y":164.89168,"z":-84.77363},"screenPosition":{"x":0.1811375,"y":0.9198403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.77725,"y":164.86693,"z":-84.1292},"screenPosition":{"x":0.1443914,"y":0.8953872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.3933,"y":164.19598,"z":-84.20038},"screenPosition":{"x":0.10441514,"y":0.88731843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.99756,"y":162.05075,"z":-85.815025},"screenPosition":{"x":0.052759066,"y":0.91212827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.24628,"y":161.86443,"z":-88.62016},"screenPosition":{"x":0.11004137,"y":0.97663915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.5234,"y":163.31828,"z":-85.80867},"screenPosition":{"x":0.13491558,"y":0.9330785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.3233,"y":165.07933,"z":-83.77576},"screenPosition":{"x":0.13866477,"y":0.8863583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.95416,"y":166.03496,"z":-82.3844},"screenPosition":{"x":0.12498051,"y":0.8502089},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-336.18237,"y":168.41888,"z":-78.87501},"screenPosition":{"x":0.08874474,"y":0.7585882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.5395,"y":170.83698,"z":-76.74372},"screenPosition":{"x":0.13000779,"y":0.71898055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.03293,"y":172.08154,"z":-76.04673},"screenPosition":{"x":0.17289054,"y":0.71385956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.04153,"y":173.0273,"z":-75.53797},"screenPosition":{"x":0.20670065,"y":0.7106094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.13693,"y":175.17722,"z":-73.74994},"screenPosition":{"x":0.24911804,"y":0.67956376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.63763,"y":176.64552,"z":-71.61337},"screenPosition":{"x":0.22815928,"y":0.62406665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.25067,"y":174.71393,"z":-73.002655},"screenPosition":{"x":0.17840184,"y":0.64349544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.2063,"y":177.42021,"z":-69.70366},"screenPosition":{"x":0.17442594,"y":0.5654735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.98972,"y":179.26337,"z":-68.07051},"screenPosition":{"x":0.20561579,"y":0.5347089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.46194,"y":180.6259,"z":-67.25536},"screenPosition":{"x":0.24955249,"y":0.5273414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.02194,"y":181.77095,"z":-66.40555},"screenPosition":{"x":0.2777339,"y":0.51464605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.02402,"y":182.86598,"z":-65.50155},"screenPosition":{"x":0.2997043,"y":0.49908465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.68027,"y":184.57364,"z":-64.040634},"screenPosition":{"x":0.33117563,"y":0.47290057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.2395,"y":186.02737,"z":-62.868427},"screenPosition":{"x":0.3618821,"y":0.45321655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.64432,"y":174.31801,"z":-79.100945},"screenPosition":{"x":0.48504215,"y":0.8656645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.47583,"y":176.0621,"z":-77.07814},"screenPosition":{"x":0.4882387,"y":0.81903934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.16742,"y":177.8277,"z":-74.825745},"screenPosition":{"x":0.48022866,"y":0.76361054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.74887,"y":178.06628,"z":-73.71398},"screenPosition":{"x":0.43520653,"y":0.7265114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.1368,"y":175.2617,"z":-76.310555},"screenPosition":{"x":0.3942914,"y":0.7761627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.31613,"y":173.52298,"z":-77.843544},"screenPosition":{"x":0.3647126,"y":0.80526835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.91052,"y":172.01222,"z":-79.76075},"screenPosition":{"x":0.3709446,"y":0.8518381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.73856,"y":170.72577,"z":-81.62813},"screenPosition":{"x":0.38908383,"y":0.8992694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.31982,"y":172.08475,"z":-82.25672},"screenPosition":{"x":0.42962018,"y":0.9173236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.03726,"y":173.3861,"z":-81.44647},"screenPosition":{"x":0.470384,"y":0.91019255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.77124,"y":174.12909,"z":-79.74943},"screenPosition":{"x":0.5090149,"y":0.89194036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.6361,"y":175.90747,"z":-77.92356},"screenPosition":{"x":0.5242839,"y":0.8481263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.46832,"y":178.44131,"z":-75.316086},"screenPosition":{"x":0.5469975,"y":0.79279983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.339,"y":178.3082,"z":-74.52312},"screenPosition":{"x":0.49498424,"y":0.76032084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.79077,"y":176.19975,"z":-76.37684},"screenPosition":{"x":0.45886755,"y":0.79426706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.79382,"y":174.2941,"z":-78.36752},"screenPosition":{"x":0.44348377,"y":0.8377886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.23816,"y":172.64983,"z":-80.460396},"screenPosition":{"x":0.45060578,"y":0.8887072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.03387,"y":173.38803,"z":-81.44527},"screenPosition":{"x":0.46878615,"y":0.90048057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.4311,"y":170.16872,"z":-80.3485},"screenPosition":{"x":0.5168985,"y":0.9478699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.95203,"y":172.4859,"z":-79.260216},"screenPosition":{"x":0.566401,"y":0.9270252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.71332,"y":176.99155,"z":-79.20162},"screenPosition":{"x":0.5809684,"y":0.87666523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.44983,"y":177.64948,"z":-76.87044},"screenPosition":{"x":0.58023256,"y":0.83779335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.12213,"y":178.43059,"z":-75.410675},"screenPosition":{"x":0.55136174,"y":0.7958161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.85608,"y":176.89928,"z":-76.11174},"screenPosition":{"x":0.49002138,"y":0.79682964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.68347,"y":174.67032,"z":-78.48256},"screenPosition":{"x":0.47424594,"y":0.84838724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.29657,"y":173.03154,"z":-80.52906},"screenPosition":{"x":0.47955158,"y":0.89819515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.68542,"y":174.01868,"z":-81.01562},"screenPosition":{"x":0.50556344,"y":0.9035151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.5421,"y":171.57492,"z":-79.60209},"screenPosition":{"x":0.55243,"y":0.9365617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.3228,"y":176.50592,"z":-79.467},"screenPosition":{"x":0.5829942,"y":0.88707715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.76398,"y":177.39465,"z":-78.91366},"screenPosition":{"x":0.61066157,"y":0.8812036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.47757,"y":178.69818,"z":-78.102036},"screenPosition":{"x":0.6512425,"y":0.87258863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.593,"y":180.48088,"z":-77.02907},"screenPosition":{"x":0.6905588,"y":0.8592367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.46088,"y":181.3355,"z":-74.46073},"screenPosition":{"x":0.68836844,"y":0.8084485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.96567,"y":182.58144,"z":-72.79634},"screenPosition":{"x":0.6790487,"y":0.767611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.71045,"y":183.41818,"z":-71.260994},"screenPosition":{"x":0.6497723,"y":0.72407985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.5094,"y":182.74289,"z":-71.29266},"screenPosition":{"x":0.6075452,"y":0.7139779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.26614,"y":180.77586,"z":-72.92516},"screenPosition":{"x":0.5685126,"y":0.7421455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.94897,"y":178.42522,"z":-75.45798},"screenPosition":{"x":0.55354124,"y":0.79731965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.30374,"y":177.67715,"z":-77.11751},"screenPosition":{"x":0.59550905,"y":0.84751177},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-298.6632,"y":180.58125,"z":-75.20019},"screenPosition":{"x":0.67996454,"y":0.82422984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.1269,"y":182.90714,"z":-72.89879},"screenPosition":{"x":0.7054881,"y":0.77630275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.1579,"y":182.98206,"z":-73.776245},"screenPosition":{"x":0.7585698,"y":0.8110178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.93573,"y":183.13611,"z":-75.375854},"screenPosition":{"x":0.7743588,"y":0.84835386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.4658,"y":178.45236,"z":-75.540634},"screenPosition":{"x":0.7524457,"y":0.887667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.61172,"y":179.76195,"z":-77.43971},"screenPosition":{"x":0.6843589,"y":0.86555827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.5876,"y":179.88135,"z":-75.94979},"screenPosition":{"x":0.67529243,"y":0.8406123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.7503,"y":181.95218,"z":-74.46901},"screenPosition":{"x":0.7293192,"y":0.81975484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.5189,"y":182.07687,"z":-74.876045},"screenPosition":{"x":0.75801736,"y":0.8390792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.36368,"y":184.03238,"z":-74.81782},"screenPosition":{"x":0.8001588,"y":0.8301329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.8688,"y":185.89465,"z":-71.76543},"screenPosition":{"x":0.83847857,"y":0.784375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.4656,"y":187.03737,"z":-69.94596},"screenPosition":{"x":0.812938,"y":0.73452824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.76718,"y":186.81253,"z":-69.38588},"screenPosition":{"x":0.76828074,"y":0.71037936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.3285,"y":186.06511,"z":-69.55014},"screenPosition":{"x":0.72875005,"y":0.7042339},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-305.7218,"y":184.19702,"z":-69.72195},"screenPosition":{"x":0.6165259,"y":0.67944235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.44882,"y":185.18823,"z":-68.27025},"screenPosition":{"x":0.60186684,"y":0.6416272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.51468,"y":186.18616,"z":-66.72994},"screenPosition":{"x":0.5828122,"y":0.60060483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.63742,"y":186.4602,"z":-65.69158},"screenPosition":{"x":0.54401696,"y":0.56628615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.0236,"y":186.87404,"z":-68.77824},"screenPosition":{"x":0.73930234,"y":0.6888384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.94092,"y":186.81726,"z":-69.339096},"screenPosition":{"x":0.7661964,"y":0.70890063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.29514,"y":186.55621,"z":-70.249},"screenPosition":{"x":0.7987402,"y":0.7385139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.9497,"y":185.79828,"z":-71.60585},"screenPosition":{"x":0.82350177,"y":0.77678585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.12906,"y":184.73627,"z":-74.379555},"screenPosition":{"x":0.8220719,"y":0.82548094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.8921,"y":183.02284,"z":-75.40939},"screenPosition":{"x":0.7858749,"y":0.84400725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.59454,"y":181.48213,"z":-76.36869},"screenPosition":{"x":0.73963344,"y":0.8642727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.07983,"y":180.77344,"z":-76.84692},"screenPosition":{"x":0.700451,"y":0.86250585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.27008,"y":179.42738,"z":-76.50065},"screenPosition":{"x":0.6750402,"y":0.8566945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.01718,"y":179.00343,"z":-76.28215},"screenPosition":{"x":0.6362761,"y":0.83838785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.7288,"y":179.34015,"z":-75.277306},"screenPosition":{"x":0.60338765,"y":0.8063723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.91382,"y":179.66014,"z":-74.41675},"screenPosition":{"x":0.5772803,"y":0.77948254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.30057,"y":179.54312,"z":-73.9643},"screenPosition":{"x":0.5449858,"y":0.76057625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.75192,"y":180.43881,"z":-72.437996},"screenPosition":{"x":0.5200401,"y":0.7183693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.8527,"y":182.42462,"z":-70.09775},"screenPosition":{"x":0.52143955,"y":0.6631492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.9576,"y":184.409,"z":-68.23962},"screenPosition":{"x":0.54929316,"y":0.626997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.92987,"y":185.79407,"z":-67.2805},"screenPosition":{"x":0.5870358,"y":0.61413354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.41864,"y":186.41385,"z":-67.23755},"screenPosition":{"x":0.62515724,"y":0.62316597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.86752,"y":186.53175,"z":-67.728676},"screenPosition":{"x":0.6597783,"y":0.64379704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.7925,"y":186.16077,"z":-68.61603},"screenPosition":{"x":0.68402815,"y":0.67083824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.2964,"y":185.7145,"z":-69.68347},"screenPosition":{"x":0.71319956,"y":0.7033675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.24188,"y":185.69264,"z":-70.44185},"screenPosition":{"x":0.75229543,"y":0.7302828},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-292.79178,"y":190.75034,"z":-65.987366},"screenPosition":{"x":0.83822286,"y":0.64210767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.9764,"y":191.38159,"z":-67.471924},"screenPosition":{"x":0.88402027,"y":0.66929644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.19424,"y":191.11952,"z":-68.41576},"screenPosition":{"x":0.9122868,"y":0.7087657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.069,"y":188.62923,"z":-69.82281},"screenPosition":{"x":0.91051966,"y":0.75731134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.7508,"y":186.47629,"z":-72.14926},"screenPosition":{"x":0.894469,"y":0.8101116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.99603,"y":187.4114,"z":-70.14979},"screenPosition":{"x":0.8490849,"y":0.7492032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.1814,"y":189.62802,"z":-68.27039},"screenPosition":{"x":0.89086026,"y":0.7158497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.7534,"y":190.98381,"z":-68.90456},"screenPosition":{"x":0.9301122,"y":0.72480863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.01593,"y":190.72595,"z":-69.83322},"screenPosition":{"x":0.96397835,"y":0.7552884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.34634,"y":190.47449,"z":-70.738846},"screenPosition":{"x":0.99700457,"y":0.7850122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.55264,"y":189.00241,"z":-71.27243},"screenPosition":{"x":1.0073231,"y":0.81807923},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-286.59482,"y":186.04297,"z":-73.528984},"screenPosition":{"x":0.8816981,"y":0.8345951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.88422,"y":185.44598,"z":-73.93767},"screenPosition":{"x":0.84501034,"y":0.82800025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.96304,"y":186.74458,"z":-70.613754},"screenPosition":{"x":0.83098644,"y":0.7554377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.7577,"y":188.0176,"z":-70.29613},"screenPosition":{"x":0.8965237,"y":0.7648189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.886,"y":186.58522,"z":-73.22834},"screenPosition":{"x":0.8796325,"y":0.8132613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.49884,"y":185.09557,"z":-74.155846},"screenPosition":{"x":0.8334949,"y":0.82668036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.55988,"y":184.48901,"z":-72.827095},"screenPosition":{"x":0.8048902,"y":0.800651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.07645,"y":184.93874,"z":-71.75113},"screenPosition":{"x":0.7754781,"y":0.76786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.50018,"y":183.74475,"z":-72.41519},"screenPosition":{"x":0.7339802,"y":0.7727785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.14117,"y":181.67644,"z":-74.42223},"screenPosition":{"x":0.7088196,"y":0.81339306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.97345,"y":183.13776,"z":-73.89876},"screenPosition":{"x":0.7753865,"y":0.8182102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.54675,"y":184.09023,"z":-71.802155},"screenPosition":{"x":0.72303134,"y":0.75558746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.98282,"y":181.35095,"z":-74.31887},"screenPosition":{"x":0.681997,"y":0.80408007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.7254,"y":181.54564,"z":-76.36613},"screenPosition":{"x":0.7227434,"y":0.8465676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.7922,"y":183.56952,"z":-73.00961},"screenPosition":{"x":0.7549944,"y":0.79211766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.16617,"y":183.4136,"z":-72.36007},"screenPosition":{"x":0.70941937,"y":0.7651777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.17075,"y":182.14508,"z":-73.20295},"screenPosition":{"x":0.672691,"y":0.7752975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.45663,"y":181.45392,"z":-73.37477},"screenPosition":{"x":0.637206,"y":0.77043235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-304.94656,"y":180.32686,"z":-73.95295},"screenPosition":{"x":0.59538084,"y":0.7732525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.98654,"y":179.56627,"z":-74.25653},"screenPosition":{"x":0.5624314,"y":0.7719109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.0942,"y":178.55502,"z":-74.80574},"screenPosition":{"x":0.52656406,"y":0.7755816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.13245,"y":178.26962,"z":-74.37237},"screenPosition":{"x":0.48424184,"y":0.75390697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.71295,"y":180.40211,"z":-71.763306},"screenPosition":{"x":0.48085335,"y":0.69248015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.11853,"y":188.7999,"z":-62.408333},"screenPosition":{"x":0.5171999,"y":0.48232982},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-320.09503,"y":185.04404,"z":-65.37564},"screenPosition":{"x":0.43460655,"y":0.53077686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.88138,"y":182.63084,"z":-68.18969},"screenPosition":{"x":0.43101266,"y":0.59585905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.76846,"y":182.03699,"z":-69.55988},"screenPosition":{"x":0.46705127,"y":0.6370287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.33127,"y":182.09074,"z":-70.09059},"screenPosition":{"x":0.49953505,"y":0.65804356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.8223,"y":183.18297,"z":-69.794205},"screenPosition":{"x":0.55446225,"y":0.66519797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.13766,"y":184.73999,"z":-68.81359},"screenPosition":{"x":0.6020636,"y":0.6539732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.35144,"y":186.97585,"z":-66.66646},"screenPosition":{"x":0.6305952,"y":0.61119044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.4261,"y":188.91643,"z":-64.62056},"screenPosition":{"x":0.64547735,"y":0.56722176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.70105,"y":190.57103,"z":-62.58448},"screenPosition":{"x":0.64212537,"y":0.5186035},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-313.24576,"y":190.77612,"z":-61.034954},"screenPosition":{"x":0.57096225,"y":0.46398243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.36487,"y":189.65063,"z":-61.7008},"screenPosition":{"x":0.53402007,"y":0.47011277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.87408,"y":187.6372,"z":-63.44139},"screenPosition":{"x":0.4979003,"y":0.5016631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.8242,"y":186.50633,"z":-64.15357},"screenPosition":{"x":0.4631343,"y":0.5094392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.16492,"y":184.79614,"z":-65.61787},"screenPosition":{"x":0.43167308,"y":0.5356179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.83,"y":182.43735,"z":-67.92265},"screenPosition":{"x":0.4038536,"y":0.58262056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.41403,"y":180.60715,"z":-70.41699},"screenPosition":{"x":0.42077008,"y":0.6454711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.431,"y":180.45406,"z":-71.2953},"screenPosition":{"x":0.45870918,"y":0.6758159},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-311.7134,"y":184.49323,"z":-67.96959},"screenPosition":{"x":0.54023093,"y":0.6187458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.9751,"y":185.68443,"z":-66.180145},"screenPosition":{"x":0.52008474,"y":0.5713984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.19092,"y":185.58693,"z":-65.50765},"screenPosition":{"x":0.47710904,"y":0.54466504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.35312,"y":183.70969,"z":-66.94869},"screenPosition":{"x":0.43352604,"y":0.5671515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.26202,"y":181.88922,"z":-68.873024},"screenPosition":{"x":0.42001036,"y":0.6090613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.1666,"y":179.59074,"z":-71.05711},"screenPosition":{"x":0.3895401,"y":0.6520802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.56287,"y":178.5329,"z":-72.548744},"screenPosition":{"x":0.40202484,"y":0.6906584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.78278,"y":177.46664,"z":-74.091644},"screenPosition":{"x":0.41677153,"y":0.7305584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.17383,"y":174.97658,"z":-76.84039},"screenPosition":{"x":0.4046159,"y":0.79151404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.8245,"y":176.70816,"z":-75.83745},"screenPosition":{"x":0.46262163,"y":0.78335917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.26984,"y":178.7166,"z":-73.872185},"screenPosition":{"x":0.48616377,"y":0.74330896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.716,"y":179.93039,"z":-72.49633},"screenPosition":{"x":0.49012887,"y":0.7120558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.09366,"y":182.18008,"z":-70.295265},"screenPosition":{"x":0.51649475,"y":0.66713977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.97342,"y":182.23152,"z":-69.30724},"screenPosition":{"x":0.4659729,"y":0.6310502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.98834,"y":179.24261,"z":-72.66785},"screenPosition":{"x":0.45471695,"y":0.70698446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.20013,"y":180.07367,"z":-72.711624},"screenPosition":{"x":0.51117784,"y":0.7224306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-308.78653,"y":181.26315,"z":-72.049835},"screenPosition":{"x":0.552526,"y":0.71760786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.7151,"y":181.51703,"z":-72.283356},"screenPosition":{"x":0.5817869,"y":0.73059994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.96573,"y":184.89532,"z":-68.93347},"screenPosition":{"x":0.6189747,"y":0.6615771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.2843,"y":187.5374,"z":-66.09579},"screenPosition":{"x":0.63617706,"y":0.59943557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.78534,"y":187.22195,"z":-65.34156},"screenPosition":{"x":0.5745079,"y":0.5659068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.53674,"y":184.95537,"z":-67.28839},"screenPosition":{"x":0.53315824,"y":0.60095155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-312.5053,"y":182.88379,"z":-69.460754},"screenPosition":{"x":0.5168026,"y":0.647705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-310.3384,"y":181.62451,"z":-71.298515},"screenPosition":{"x":0.53506905,"y":0.69550204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.2319,"y":180.90115,"z":-72.8025},"screenPosition":{"x":0.5699328,"y":0.73951954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.70715,"y":181.99625,"z":-72.50689},"screenPosition":{"x":0.6251717,"y":0.7469852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.95184,"y":183.96358,"z":-70.873726},"screenPosition":{"x":0.6641505,"y":0.71868896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.2377,"y":185.95695,"z":-68.962616},"screenPosition":{"x":0.6892328,"y":0.6797852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.55435,"y":187.19406,"z":-67.8344},"screenPosition":{"x":0.7086542,"y":0.6588291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.04556,"y":188.90887,"z":-66.40574},"screenPosition":{"x":0.74235106,"y":0.63397306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.39044,"y":190.02904,"z":-65.87453},"screenPosition":{"x":0.7862901,"y":0.6327978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.26782,"y":189.94818,"z":-66.710976},"screenPosition":{"x":0.8266477,"y":0.66278166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.22864,"y":186.80627,"z":-70.0037},"screenPosition":{"x":0.80173004,"y":0.73361504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.9065,"y":186.15172,"z":-69.80207},"screenPosition":{"x":0.74812734,"y":0.7151194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.13596,"y":187.2811,"z":-68.085},"screenPosition":{"x":0.7279878,"y":0.66967237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.21997,"y":188.75208,"z":-66.28679},"screenPosition":{"x":0.7256571,"y":0.6268958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-300.0973,"y":190.8121,"z":-64.1636},"screenPosition":{"x":0.74394375,"y":0.58179146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.59534,"y":192.09927,"z":-64.88727},"screenPosition":{"x":0.78361094,"y":0.59295654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.34744,"y":189.21373,"z":-66.73688},"screenPosition":{"x":0.78025526,"y":0.65147465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-309.1071,"y":190.79395,"z":-62.01295},"screenPosition":{"x":0.62546337,"y":0.50091887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.2581,"y":191.86623,"z":-61.337666},"screenPosition":{"x":0.6620257,"y":0.4835291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.06348,"y":191.07507,"z":-63.174515},"screenPosition":{"x":0.7071147,"y":0.54913366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.6365,"y":188.65495,"z":-65.56555},"screenPosition":{"x":0.67999905,"y":0.59825283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.1442,"y":186.78227,"z":-66.91864},"screenPosition":{"x":0.63175625,"y":0.61740863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-307.69333,"y":186.8247,"z":-66.50125},"screenPosition":{"x":0.6119023,"y":0.60271174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-311.4376,"y":186.11427,"z":-66.34201},"screenPosition":{"x":0.5569748,"y":0.5848702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.24838,"y":185.94221,"z":-65.844955},"screenPosition":{"x":0.5186657,"y":0.56337297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.87976,"y":186.39012,"z":-64.74324},"screenPosition":{"x":0.48763603,"y":0.5292828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.33707,"y":188.23712,"z":-62.4622},"screenPosition":{"x":0.48354176,"y":0.47500798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.67923,"y":190.27011,"z":-60.496136},"screenPosition":{"x":0.5086379,"y":0.43533805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.0716,"y":192.02663,"z":-59.047695},"screenPosition":{"x":0.5439704,"y":0.41043818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.31085,"y":192.39081,"z":-59.331924},"screenPosition":{"x":0.58802223,"y":0.41692546},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-312.8391,"y":188.83713,"z":-63.159138},"screenPosition":{"x":0.56060773,"y":0.5111471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.8366,"y":188.38348,"z":-62.67057},"screenPosition":{"x":0.5044334,"y":0.48526084},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-319.50854,"y":191.37094,"z":-58.905254},"screenPosition":{"x":0.4934901,"y":0.394094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.0892,"y":192.6711,"z":-58.129185},"screenPosition":{"x":0.54205734,"y":0.37555683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-313.89178,"y":191.8476,"z":-59.7597},"screenPosition":{"x":0.5711505,"y":0.43411902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-314.30576,"y":190.05801,"z":-61.53013},"screenPosition":{"x":0.55122757,"y":0.47052878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-315.88116,"y":188.4201,"z":-62.86237},"screenPosition":{"x":0.5171709,"y":0.49284074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.6636,"y":186.66138,"z":-64.27103},"screenPosition":{"x":0.47963187,"y":0.5164309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.79523,"y":183.97276,"z":-66.56732},"screenPosition":{"x":0.4298725,"y":0.5575126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.3289,"y":185.1356,"z":-64.50122},"screenPosition":{"x":0.3928746,"y":0.49954936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.4259,"y":187.59383,"z":-61.66821},"screenPosition":{"x":0.3983646,"y":0.43450937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.16965,"y":189.51941,"z":-60.199284},"screenPosition":{"x":0.44358495,"y":0.41166836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.3301,"y":189.48015,"z":-61.1649},"screenPosition":{"x":0.49369487,"y":0.44718668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.10403,"y":187.23456,"z":-63.56599},"screenPosition":{"x":0.47848728,"y":0.4995999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.44598,"y":185.21307,"z":-65.35529},"screenPosition":{"x":0.44448847,"y":0.53276616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.8108,"y":183.53049,"z":-66.544136},"screenPosition":{"x":0.39982048,"y":0.54925084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.65228,"y":183.8916,"z":-65.24171},"screenPosition":{"x":0.35228983,"y":0.5064948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.4206,"y":186.50224,"z":-62.569378},"screenPosition":{"x":0.37646505,"y":0.4500226},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-319.4669,"y":187.27182,"z":-63.19886},"screenPosition":{"x":0.46088925,"y":0.4864692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.29218,"y":185.83965,"z":-65.21918},"screenPosition":{"x":0.4778304,"y":0.5381084},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-321.58755,"y":181.5819,"z":-68.63418},"screenPosition":{"x":0.38697922,"y":0.594976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.64908,"y":180.20424,"z":-70.54063},"screenPosition":{"x":0.40128762,"y":0.6433676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.7703,"y":179.20209,"z":-72.04029},"screenPosition":{"x":0.41785115,"y":0.68279696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.058,"y":177.4121,"z":-74.08237},"screenPosition":{"x":0.41271725,"y":0.72937644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-317.8583,"y":175.47531,"z":-75.91359},"screenPosition":{"x":0.38652885,"y":0.76560307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-319.5203,"y":173.56303,"z":-77.51171},"screenPosition":{"x":0.34922135,"y":0.7935066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.45026,"y":172.39067,"z":-78.03127},"screenPosition":{"x":0.30124992,"y":0.7933732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.2812,"y":173.21774,"z":-76.24447},"screenPosition":{"x":0.25762987,"y":0.74026036},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-329.44983,"y":173.89333,"z":-74.77545},"screenPosition":{"x":0.22161582,"y":0.6962071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.7213,"y":174.66351,"z":-73.42362},"screenPosition":{"x":0.19788317,"y":0.65875167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.24957,"y":177.89166,"z":-69.92298},"screenPosition":{"x":0.21707545,"y":0.5815711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-330.0168,"y":179.70476,"z":-68.56596},"screenPosition":{"x":0.26107648,"y":0.5610418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.71393,"y":180.16808,"z":-68.877144},"screenPosition":{"x":0.3082061,"y":0.5804445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.23044,"y":179.84105,"z":-69.81695},"screenPosition":{"x":0.338177,"y":0.6101852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.16714,"y":178.48787,"z":-71.96868},"screenPosition":{"x":0.3674563,"y":0.66817486},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-325.56818,"y":172.68646,"z":-76.97135},"screenPosition":{"x":0.26281166,"y":0.7582037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.28427,"y":171.27448,"z":-78.996864},"screenPosition":{"x":0.28143057,"y":0.8101424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.4636,"y":171.43248,"z":-79.51099},"screenPosition":{"x":0.31958634,"y":0.83278984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-318.04544,"y":172.62364,"z":-78.848526},"screenPosition":{"x":0.36098796,"y":0.8278842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-316.8626,"y":174.99904,"z":-76.65106},"screenPosition":{"x":0.3957613,"y":0.7846958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.96893,"y":183.14334,"z":-64.98416},"screenPosition":{"x":0.2895389,"y":0.4843384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.4002,"y":185.12083,"z":-63.054634},"screenPosition":{"x":0.3130153,"y":0.4451094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.24155,"y":186.85661,"z":-61.278957},"screenPosition":{"x":0.32914937,"y":0.4076034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.8125,"y":188.6429,"z":-59.515606},"screenPosition":{"x":0.34924388,"y":0.37140375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-327.84705,"y":190.22578,"z":-58.093964},"screenPosition":{"x":0.37473646,"y":0.34460524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.24,"y":191.97502,"z":-56.653004},"screenPosition":{"x":0.41000286,"y":0.31986383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-323.86377,"y":193.14864,"z":-55.998795},"screenPosition":{"x":0.45071134,"y":0.3149737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-321.19055,"y":193.2673,"z":-56.5185},"screenPosition":{"x":0.490736,"y":0.32936725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.01767,"y":191.38396,"z":-58.769047},"screenPosition":{"x":0.48694107,"y":0.389256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-320.9121,"y":189.73433,"z":-60.277515},"screenPosition":{"x":0.46184075,"y":0.41819173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-322.31738,"y":188.09575,"z":-61.651436},"screenPosition":{"x":0.43012062,"y":0.4422715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-324.02866,"y":186.58809,"z":-62.814857},"screenPosition":{"x":0.3954412,"y":0.4606539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.41602,"y":185.40985,"z":-63.471233},"screenPosition":{"x":0.3545887,"y":0.4653903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-328.99924,"y":184.73593,"z":-63.55342},"screenPosition":{"x":0.31521708,"y":0.45725188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.41058,"y":184.0579,"z":-63.68129},"screenPosition":{"x":0.27800748,"y":0.45081726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.79874,"y":184.62437,"z":-62.514256},"screenPosition":{"x":0.25125265,"y":0.41654125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.49088,"y":186.10011,"z":-60.56462},"screenPosition":{"x":0.2409484,"y":0.36819655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.87057,"y":187.4111,"z":-59.103195},"screenPosition":{"x":0.24657312,"y":0.33536258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.6918,"y":188.6963,"z":-57.3216},"screenPosition":{"x":0.23305677,"y":0.290103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.50952,"y":190.6726,"z":-55.781868},"screenPosition":{"x":0.27771586,"y":0.26545697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.9829,"y":189.18745,"z":-57.942272},"screenPosition":{"x":0.29887813,"y":0.32156536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.9002,"y":186.61357,"z":-60.41109},"screenPosition":{"x":0.26599592,"y":0.3710281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.7999,"y":187.99295,"z":-58.27138},"screenPosition":{"x":0.23907751,"y":0.31392688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.46576,"y":189.71198,"z":-56.555458},"screenPosition":{"x":0.25747558,"y":0.27837142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.83334,"y":191.29646,"z":-55.051956},"screenPosition":{"x":0.27851263,"y":0.24854116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.23553,"y":193.08812,"z":-53.08282},"screenPosition":{"x":0.28773293,"y":0.20472194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.85187,"y":194.16988,"z":-51.56317},"screenPosition":{"x":0.27526048,"y":0.1658745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.91034,"y":194.58723,"z":-50.631317},"screenPosition":{"x":0.25160304,"y":0.13794173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.863,"y":195.06223,"z":-49.66475},"screenPosition":{"x":0.23797338,"y":0.10187928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.64532,"y":195.53212,"z":-48.74451},"screenPosition":{"x":0.21463569,"y":0.080875196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.92792,"y":195.70871,"z":-48.010303},"screenPosition":{"x":0.18683188,"y":0.055851586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.6448,"y":195.53061,"z":-47.542187},"screenPosition":{"x":0.15564674,"y":0.027784772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.45993,"y":197.07892,"z":-46.953392},"screenPosition":{"x":0.12363102,"y":0.012588043},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-349.47046,"y":192.80647,"z":-51.62505},"screenPosition":{"x":0.10809295,"y":0.10873946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.90015,"y":191.86464,"z":-52.777924},"screenPosition":{"x":0.107882455,"y":0.13538495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.4134,"y":191.01799,"z":-52.795216},"screenPosition":{"x":0.1375305,"y":0.15943332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.2753,"y":191.45287,"z":-52.855633},"screenPosition":{"x":0.16890293,"y":0.16887528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.12778,"y":192.19453,"z":-52.59773},"screenPosition":{"x":0.20311175,"y":0.17161147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.01465,"y":192.8151,"z":-52.4581},"screenPosition":{"x":0.23588827,"y":0.17675407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.03687,"y":193.25575,"z":-52.47387},"screenPosition":{"x":0.26543137,"y":0.18471114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.62143,"y":193.74739,"z":-52.541763},"screenPosition":{"x":0.3011349,"y":0.19547299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-333.3398,"y":194.05907,"z":-52.76549},"screenPosition":{"x":0.34347594,"y":0.19683224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-331.16104,"y":194.00555,"z":-53.346077},"screenPosition":{"x":0.36945045,"y":0.22020948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.0486,"y":193.70787,"z":-54.165844},"screenPosition":{"x":0.39583835,"y":0.24395876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.5631,"y":193.21571,"z":-55.278675},"screenPosition":{"x":0.41580176,"y":0.28911746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-325.63852,"y":191.4042,"z":-57.39436},"screenPosition":{"x":0.4132819,"y":0.3380949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-326.9827,"y":189.08936,"z":-59.48968},"screenPosition":{"x":0.3768901,"y":0.3778957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-329.60205,"y":187.67294,"z":-60.339077},"screenPosition":{"x":0.33102256,"y":0.38603914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-332.83463,"y":187.94685,"z":-59.27442},"screenPosition":{"x":0.29078344,"y":0.3507328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.60184,"y":188.86015,"z":-57.894455},"screenPosition":{"x":0.27496618,"y":0.31430277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.75412,"y":190.12462,"z":-56.29562},"screenPosition":{"x":0.2701183,"y":0.2755395},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-339.27197,"y":191.63078,"z":-53.874542},"screenPosition":{"x":0.23605599,"y":0.2100206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.05682,"y":192.41245,"z":-52.6279},"screenPosition":{"x":0.21894157,"y":0.17638457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.70685,"y":193.06645,"z":-51.547142},"screenPosition":{"x":0.20256428,"y":0.14682876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.65613,"y":193.54317,"z":-50.57956},"screenPosition":{"x":0.18082145,"y":0.11854959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.83105,"y":194.08548,"z":-49.489113},"screenPosition":{"x":0.15664603,"y":0.086763844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.53278,"y":194.79762,"z":-48.335136},"screenPosition":{"x":0.1400603,"y":0.05543721},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-000052/brain-CB63C0-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.8250233321068723,-0.47787008231358885,-0.3016234173748405,0.0,-0.5284356156383403,0.46328431993031727,0.7114235299957626,0.0,-0.2002306210453378,0.7463295675077514,-0.6347439444843022,0.0,-346.49587298686555,275.24040324826024,-132.34783273479607,1.0]},"baseImage":"20190824-000052/base.webp","version":0,"savedAt":1.566605195695E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-001319-v0.json b/data/mapping/BAAAHS/dwayman/20190824-001319-v0.json new file mode 100644 index 0000000000..a1b0a6cdcf --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-001319-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566605599123E12,"surfaces":[{"brainId":"CB2B04","panelName":"42D","pixels":[{"modelPosition":{"x":-392.54208,"y":18.289557,"z":-69.68749},"screenPosition":{"x":0.96098596,"y":0.0073738378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.49448,"y":20.372253,"z":-70.629715},"screenPosition":{"x":0.9555025,"y":0.028380167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.6399,"y":21.383207,"z":-70.54998},"screenPosition":{"x":0.9463379,"y":0.03867271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.50748,"y":23.261229,"z":-70.39368},"screenPosition":{"x":0.9316984,"y":0.056634646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.5084,"y":25.442404,"z":-71.543976},"screenPosition":{"x":0.90272963,"y":0.07723802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.34396,"y":28.07615,"z":-71.88343},"screenPosition":{"x":0.8920457,"y":0.10377247},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-393.04462,"y":30.57332,"z":-69.32801},"screenPosition":{"x":0.94502246,"y":0.13691382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9867,"y":28.74419,"z":-69.37292},"screenPosition":{"x":0.9620909,"y":0.11596261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.41617,"y":26.47685,"z":-69.69061},"screenPosition":{"x":0.95028406,"y":0.09410372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.98532,"y":25.701015,"z":-71.080635},"screenPosition":{"x":0.9131761,"y":0.080629624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.63324,"y":22.693316,"z":-71.236755},"screenPosition":{"x":0.89718163,"y":0.04917748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.54062,"y":20.693165,"z":-70.6044},"screenPosition":{"x":0.94875556,"y":0.03249314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.35498,"y":21.861074,"z":-66.82303},"screenPosition":{"x":0.98497206,"y":0.04927991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.73047,"y":23.955976,"z":-65.88211},"screenPosition":{"x":0.99728966,"y":0.06728625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.0404,"y":26.632685,"z":-66.31894},"screenPosition":{"x":0.99082816,"y":0.09477249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.2005,"y":30.230791,"z":-69.25567},"screenPosition":{"x":0.9631933,"y":0.13144769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.84232,"y":32.2476,"z":-69.64228},"screenPosition":{"x":0.93934864,"y":0.15030953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.37732,"y":31.28661,"z":-72.06172},"screenPosition":{"x":0.8844502,"y":0.13651778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.58786,"y":28.135641,"z":-72.64895},"screenPosition":{"x":0.87428236,"y":0.10314935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.7474,"y":25.290337,"z":-71.29317},"screenPosition":{"x":0.9083568,"y":0.07648744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.28458,"y":25.865602,"z":-70.196465},"screenPosition":{"x":0.94966185,"y":0.08536331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9807,"y":28.702648,"z":-69.37619},"screenPosition":{"x":0.9747423,"y":0.11522707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.00485,"y":30.87361,"z":-69.8015},"screenPosition":{"x":0.9533755,"y":0.13752893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.61038,"y":31.485731,"z":-70.83286},"screenPosition":{"x":0.9114583,"y":0.14179237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.4872,"y":33.390697,"z":-71.08267},"screenPosition":{"x":0.90407306,"y":0.16049714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.44202,"y":36.089096,"z":-71.30629},"screenPosition":{"x":0.8967203,"y":0.1871504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.23917,"y":38.044754,"z":-71.639694},"screenPosition":{"x":0.886896,"y":0.20673454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.19995,"y":40.391964,"z":-72.84137},"screenPosition":{"x":0.8565737,"y":0.22894643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.1223,"y":42.06108,"z":-74.036995},"screenPosition":{"x":0.8264494,"y":0.24486749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.04095,"y":42.95589,"z":-74.17801},"screenPosition":{"x":0.82289624,"y":0.25317043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.60562,"y":44.431053,"z":-75.72114},"screenPosition":{"x":0.7856228,"y":0.26585868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.2938,"y":46.463795,"z":-78.1839},"screenPosition":{"x":0.7264427,"y":0.28285328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.85135,"y":48.852894,"z":-78.787254},"screenPosition":{"x":0.70994943,"y":0.30640844},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.87048,"y":53.89123,"z":-77.086006},"screenPosition":{"x":0.74383193,"y":0.3609939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.58255,"y":55.967392,"z":-76.50583},"screenPosition":{"x":0.75499964,"y":0.38329208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.53418,"y":57.61011,"z":-75.6557},"screenPosition":{"x":0.7728775,"y":0.40156603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.0072,"y":59.83834,"z":-75.32633},"screenPosition":{"x":0.7780352,"y":0.42504796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.91217,"y":62.27966,"z":-73.568665},"screenPosition":{"x":0.81602865,"y":0.4529971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.15045,"y":65.15289,"z":-74.52557},"screenPosition":{"x":0.7905336,"y":0.48108816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.20346,"y":66.46565,"z":-77.580605},"screenPosition":{"x":0.7187927,"y":0.4895764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.62036,"y":64.87726,"z":-80.0776},"screenPosition":{"x":0.66277987,"y":0.46920404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.99396,"y":62.399216,"z":-81.55222},"screenPosition":{"x":0.6313671,"y":0.4413276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.10855,"y":59.50839,"z":-79.23148},"screenPosition":{"x":0.6881507,"y":0.415328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.9537,"y":57.358772,"z":-79.24558},"screenPosition":{"x":0.6900715,"y":0.3932613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.67474,"y":54.93295,"z":-78.359184},"screenPosition":{"x":0.71326864,"y":0.36965796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.91718,"y":53.092632,"z":-77.993546},"screenPosition":{"x":0.7234794,"y":0.351543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.03717,"y":50.13199,"z":-76.67},"screenPosition":{"x":0.7575172,"y":0.32298562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.33334,"y":46.57914,"z":-78.15167},"screenPosition":{"x":0.7271043,"y":0.2840389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.06055,"y":49.0086,"z":-80.60133},"screenPosition":{"x":0.6569887,"y":0.3037311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.33237,"y":52.348362,"z":-80.54796},"screenPosition":{"x":0.6654598,"y":0.33953297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.59787,"y":53.576767,"z":-78.3471},"screenPosition":{"x":0.7146806,"y":0.35606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.8315,"y":53.494514,"z":-77.0991},"screenPosition":{"x":0.74382627,"y":0.3570066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.86676,"y":53.116924,"z":-76.0314},"screenPosition":{"x":0.7690524,"y":0.3547286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.61688,"y":53.408627,"z":-74.28783},"screenPosition":{"x":0.80904865,"y":0.36054334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.4851,"y":54.32773,"z":-72.4667},"screenPosition":{"x":0.84981143,"y":0.37313154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3539,"y":54.965458,"z":-70.626434},"screenPosition":{"x":0.8920167,"y":0.38246974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.62335,"y":54.224243,"z":-68.2916},"screenPosition":{"x":0.94655836,"y":0.37871212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.28302,"y":53.665874,"z":-68.00393},"screenPosition":{"x":0.9782206,"y":0.37487516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.04224,"y":47.59962,"z":-76.49775},"screenPosition":{"x":0.76406336,"y":0.29739076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.64948,"y":45.039326,"z":-76.72437},"screenPosition":{"x":0.76176965,"y":0.27049854},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-387.93332,"y":39.726307,"z":-75.08051},"screenPosition":{"x":0.8055243,"y":0.21848437},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-392.43265,"y":38.128532,"z":-70.44307},"screenPosition":{"x":0.9144717,"y":0.2095274},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-394.8909,"y":42.466015,"z":-68.253296},"screenPosition":{"x":0.9620905,"y":0.25994653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.20343,"y":45.358376,"z":-68.12941},"screenPosition":{"x":0.9564583,"y":0.2898922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.2786,"y":47.558678,"z":-68.19891},"screenPosition":{"x":0.96576625,"y":0.31157944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.3532,"y":50.040356,"z":-68.28756},"screenPosition":{"x":0.9514205,"y":0.3355684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.5519,"y":52.798244,"z":-69.276695},"screenPosition":{"x":0.92480946,"y":0.36271226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.6715,"y":55.325447,"z":-70.3303},"screenPosition":{"x":0.8984124,"y":0.3866793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.673,"y":57.22525,"z":-71.461464},"screenPosition":{"x":0.8700466,"y":0.40446946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.56122,"y":58.70921,"z":-73.68651},"screenPosition":{"x":0.81721675,"y":0.41605228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.49124,"y":59.183014,"z":-75.802765},"screenPosition":{"x":0.7677229,"y":0.41754213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.8279,"y":57.926685,"z":-78.402504},"screenPosition":{"x":0.7090282,"y":0.40039116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.3176,"y":54.457615,"z":-78.68755},"screenPosition":{"x":0.70612144,"y":0.36430734},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-387.20047,"y":48.06099,"z":-76.36882},"screenPosition":{"x":0.76656705,"y":0.3023185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.7485,"y":47.283047,"z":-73.750946},"screenPosition":{"x":0.8280887,"y":0.29838243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.37488,"y":49.76109,"z":-72.27631},"screenPosition":{"x":0.8595015,"y":0.32625887},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-394.1925,"y":53.44841,"z":-69.68162},"screenPosition":{"x":0.91550237,"y":0.36838508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.26566,"y":54.030285,"z":-68.63911},"screenPosition":{"x":0.93897605,"y":0.37605426},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-397.6711,"y":56.364216,"z":-67.791115},"screenPosition":{"x":0.9722781,"y":0.40305036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.65033,"y":58.055,"z":-63.059322},"screenPosition":{"x":1.024316,"y":0.42255825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.11526,"y":60.951668,"z":-62.41395},"screenPosition":{"x":1.031899,"y":0.45298573},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-399.50003,"y":67.07715,"z":-66.34969},"screenPosition":{"x":0.9905168,"y":0.51525563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.45972,"y":68.43775,"z":-66.3728},"screenPosition":{"x":0.9811703,"y":0.52795655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.26456,"y":69.19809,"z":-67.62685},"screenPosition":{"x":0.94597,"y":0.53375196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.99228,"y":71.346176,"z":-70.05737},"screenPosition":{"x":0.88738614,"y":0.5519338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.76578,"y":70.51449,"z":-72.24515},"screenPosition":{"x":0.83760804,"y":0.53985536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.69864,"y":69.58142,"z":-74.26571},"screenPosition":{"x":0.7919015,"y":0.52700365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.87015,"y":66.03374,"z":-74.86603},"screenPosition":{"x":0.7820216,"y":0.48951247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.27792,"y":63.740856,"z":-75.31123},"screenPosition":{"x":0.774209,"y":0.4652022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.92752,"y":59.88903,"z":-75.409935},"screenPosition":{"x":0.7757256,"y":0.42559946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.60788,"y":57.910614,"z":-74.59405},"screenPosition":{"x":0.79709816,"y":0.406371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.4823,"y":55.7346,"z":-72.56239},"screenPosition":{"x":0.8464247,"y":0.3872598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9501,"y":55.288723,"z":-70.04726},"screenPosition":{"x":0.9047342,"y":0.38687354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.2953,"y":56.466434,"z":-67.762794},"screenPosition":{"x":0.95660096,"y":0.40253428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.84256,"y":57.556156,"z":-67.69711},"screenPosition":{"x":0.97316206,"y":0.41546616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.63455,"y":61.059772,"z":-66.824265},"screenPosition":{"x":0.9860546,"y":0.45257598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.6805,"y":63.38231,"z":-67.23762},"screenPosition":{"x":0.97748244,"y":0.4761539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.95316,"y":65.74298,"z":-67.712456},"screenPosition":{"x":0.94772875,"y":0.4980636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.0804,"y":67.074875,"z":-69.68669},"screenPosition":{"x":0.9006429,"y":0.5085821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.2176,"y":66.08595,"z":-72.505005},"screenPosition":{"x":0.83655256,"y":0.4938594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.0704,"y":62.741028,"z":-73.439735},"screenPosition":{"x":0.8185602,"y":0.4579346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.1964,"y":59.42919,"z":-73.09424},"screenPosition":{"x":0.83013123,"y":0.42441598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.19604,"y":56.96664,"z":-71.924805},"screenPosition":{"x":0.8598331,"y":0.40096527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.62317,"y":56.968166,"z":-69.48018},"screenPosition":{"x":0.9163518,"y":0.40492555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.73044,"y":57.735203,"z":-67.40824},"screenPosition":{"x":0.9732578,"y":0.41681156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.1045,"y":59.377293,"z":-67.55348},"screenPosition":{"x":0.9745125,"y":0.43443587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.39728,"y":62.50976,"z":-67.05168},"screenPosition":{"x":0.9767703,"y":0.46615076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5977,"y":64.42353,"z":-67.983406},"screenPosition":{"x":0.9428918,"y":0.4840503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.60626,"y":65.40939,"z":-70.05434},"screenPosition":{"x":0.8939447,"y":0.49085245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.2238,"y":62.99084,"z":-72.29448},"screenPosition":{"x":0.8447685,"y":0.46235287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.70093,"y":60.505527,"z":-70.64256},"screenPosition":{"x":0.8856501,"y":0.4394465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.88837,"y":54.28584,"z":-73.06502},"screenPosition":{"x":0.83637136,"y":0.37154222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.50195,"y":53.836906,"z":-75.43913},"screenPosition":{"x":0.78196687,"y":0.36309227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.03323,"y":52.10161,"z":-76.80396},"screenPosition":{"x":0.7522889,"y":0.34303522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.8881,"y":50.375107,"z":-78.850716},"screenPosition":{"x":0.7068353,"y":0.32196838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.93756,"y":48.16964,"z":-79.66257},"screenPosition":{"x":0.69045126,"y":0.29796594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.22067,"y":45.88192,"z":-79.22642},"screenPosition":{"x":0.7030102,"y":0.27513093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.4642,"y":43.47886,"z":-78.822495},"screenPosition":{"x":0.70653963,"y":0.2512176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.1457,"y":40.93769,"z":-77.96833},"screenPosition":{"x":0.72948736,"y":0.22689787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.3437,"y":38.770477,"z":-76.6186},"screenPosition":{"x":0.7709974,"y":0.20616788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.90482,"y":36.727406,"z":-75.91854},"screenPosition":{"x":0.7893932,"y":0.18627591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.4654,"y":34.96571,"z":-75.23763},"screenPosition":{"x":0.807042,"y":0.16924818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.8205,"y":33.822613,"z":-73.79724},"screenPosition":{"x":0.84158087,"y":0.15981081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.20917,"y":33.14605,"z":-71.34657},"screenPosition":{"x":0.89817655,"y":0.1576331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.9966,"y":34.678593,"z":-69.64732},"screenPosition":{"x":0.936602,"y":0.17531429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.10965,"y":37.83836,"z":-69.74201},"screenPosition":{"x":0.9301306,"y":0.20839927},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.77304,"y":37.646507,"z":-74.09742},"screenPosition":{"x":0.83050376,"y":0.19867124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.78354,"y":35.044323,"z":-74.922356},"screenPosition":{"x":0.81378144,"y":0.17116356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.98697,"y":32.807293,"z":-74.56981},"screenPosition":{"x":0.82481736,"y":0.14811744},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-391.2527,"y":31.291773,"z":-71.18037},"screenPosition":{"x":0.90482175,"y":0.13799304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.16794,"y":33.874832,"z":-71.43622},"screenPosition":{"x":0.89611185,"y":0.16415775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.9255,"y":35.715145,"z":-71.801865},"screenPosition":{"x":0.88563275,"y":0.18253776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.46793,"y":37.750942,"z":-69.375374},"screenPosition":{"x":0.93916255,"y":0.20769767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.05426,"y":36.166832,"z":-68.787506},"screenPosition":{"x":0.96759516,"y":0.19328013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.23877,"y":32.49993,"z":-69.67323},"screenPosition":{"x":0.9545815,"y":0.15446945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.16812,"y":31.130905,"z":-70.24764},"screenPosition":{"x":0.9257229,"y":0.13869548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.73618,"y":30.91782,"z":-71.67594},"screenPosition":{"x":0.8931422,"y":0.13404505},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-387.62924,"y":32.613335,"z":-74.91731},"screenPosition":{"x":0.80589736,"y":0.14591947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.14014,"y":35.801033,"z":-74.61313},"screenPosition":{"x":0.8205769,"y":0.17885065},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-391.3301,"y":32.36658,"z":-71.173325},"screenPosition":{"x":0.90281975,"y":0.15011361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.43906,"y":32.289494,"z":-69.04397},"screenPosition":{"x":0.95460653,"y":0.154821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.63953,"y":35.286175,"z":-69.45349},"screenPosition":{"x":0.9566477,"y":0.18349214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.78152,"y":36.273632,"z":-69.37561},"screenPosition":{"x":0.9597705,"y":0.19371185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.02792,"y":36.270622,"z":-68.7136},"screenPosition":{"x":0.9575391,"y":0.19601324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.71033,"y":35.91063,"z":-69.00973},"screenPosition":{"x":0.94659173,"y":0.19191565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.91806,"y":34.16653,"z":-69.69265},"screenPosition":{"x":0.9355939,"y":0.17044523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.56598,"y":31.158833,"z":-69.84877},"screenPosition":{"x":0.9354692,"y":0.13905533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.46027,"y":29.14286,"z":-65.613144},"screenPosition":{"x":0.99930954,"y":0.1212296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.90524,"y":32.06341,"z":-65.167725},"screenPosition":{"x":1.0042791,"y":0.15178266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.86618,"y":34.85903,"z":-68.890656},"screenPosition":{"x":0.96662533,"y":0.17965749},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-391.51776,"y":38.008026,"z":-71.35666},"screenPosition":{"x":0.89325505,"y":0.20702128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.34793,"y":40.71159,"z":-70.69892},"screenPosition":{"x":0.9057618,"y":0.23569211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.93192,"y":44.481163,"z":-69.35222},"screenPosition":{"x":0.9328196,"y":0.2766509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.38455,"y":42.5319,"z":-64.56954},"screenPosition":{"x":1.0090772,"y":0.2606882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.88474,"y":38.916668,"z":-64.68069},"screenPosition":{"x":1.0086643,"y":0.22313657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.96625,"y":37.557903,"z":-69.27432},"screenPosition":{"x":0.96004903,"y":0.20710804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3035,"y":40.38469,"z":-69.71483},"screenPosition":{"x":0.92863107,"y":0.23410189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.53262,"y":42.553432,"z":-68.619934},"screenPosition":{"x":0.96207494,"y":0.25972804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.21036,"y":41.38153,"z":-64.7356},"screenPosition":{"x":1.0067424,"y":0.24897404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.77634,"y":37.815052,"z":-64.33564},"screenPosition":{"x":1.0110737,"y":0.21359546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.06693,"y":36.667336,"z":-68.7005},"screenPosition":{"x":0.9521276,"y":0.20074488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.31006,"y":39.752125,"z":-70.67374},"screenPosition":{"x":0.90650916,"y":0.22659844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.221,"y":41.84225,"z":-69.89412},"screenPosition":{"x":0.9231457,"y":0.24862428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.6095,"y":43.909615,"z":-68.63203},"screenPosition":{"x":0.96304864,"y":0.27340546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.1512,"y":45.796623,"z":-68.62456},"screenPosition":{"x":0.9644417,"y":0.29297364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.7322,"y":47.83322,"z":-67.86741},"screenPosition":{"x":0.99012667,"y":0.3144186},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-393.52863,"y":67.078514,"z":-71.24996},"screenPosition":{"x":0.86449575,"y":0.5060971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.59915,"y":66.32333,"z":-69.11456},"screenPosition":{"x":0.9146837,"y":0.5017725},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.51282,"y":62.216328,"z":-67.329575},"screenPosition":{"x":0.9766178,"y":0.46400854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.10037,"y":59.348618,"z":-67.55575},"screenPosition":{"x":0.9863543,"y":0.43381178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.73898,"y":56.83608,"z":-67.75391},"screenPosition":{"x":0.9817797,"y":0.40780994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.38925,"y":54.404545,"z":-67.94567},"screenPosition":{"x":0.9722812,"y":0.3825973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.18936,"y":52.392727,"z":-68.60787},"screenPosition":{"x":0.94055724,"y":0.35968342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.51688,"y":50.431908,"z":-69.15582},"screenPosition":{"x":0.93092245,"y":0.33819616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.00635,"y":49.706764,"z":-70.62944},"screenPosition":{"x":0.8976364,"y":0.32835722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.1008,"y":47.54682,"z":-72.40625},"screenPosition":{"x":0.858592,"y":0.30348918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.28607,"y":49.10729,"z":-70.30813},"screenPosition":{"x":0.905057,"y":0.32310423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.6361,"y":50.496563,"z":-69.039986},"screenPosition":{"x":0.9334657,"y":0.3390824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.90973,"y":51.070503,"z":-68.20862},"screenPosition":{"x":0.9799154,"y":0.34758902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.9178,"y":46.17575,"z":-64.20318},"screenPosition":{"x":1.0116802,"y":0.29928252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.3835,"y":45.408855,"z":-68.05862},"screenPosition":{"x":0.9744486,"y":0.2895491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.1255,"y":43.61472,"z":-68.20011},"screenPosition":{"x":0.9731182,"y":0.27086058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.42218,"y":40.730717,"z":-69.618126},"screenPosition":{"x":0.93072927,"y":0.23763284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.87152,"y":40.171604,"z":-71.14312},"screenPosition":{"x":0.89592445,"y":0.22954975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.63342,"y":42.50485,"z":-72.54423},"screenPosition":{"x":0.86115766,"y":0.25116578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.11127,"y":44.944637,"z":-73.231186},"screenPosition":{"x":0.84263545,"y":0.27516076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.9013,"y":47.81423,"z":-72.624825},"screenPosition":{"x":0.8535502,"y":0.30566496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.2465,"y":48.991947,"z":-70.340355},"screenPosition":{"x":0.9043853,"y":0.3218993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.1181,"y":48.222805,"z":-68.404396},"screenPosition":{"x":0.95068556,"y":0.31667876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.77322,"y":45.5861,"z":-64.765526},"screenPosition":{"x":1.0056471,"y":0.29223543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.26456,"y":41.791718,"z":-64.744736},"screenPosition":{"x":1.0066849,"y":0.25310588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.43,"y":40.7821,"z":-69.02004},"screenPosition":{"x":0.96072316,"y":0.24074017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.86838,"y":39.115925,"z":-70.06938},"screenPosition":{"x":0.9209663,"y":0.22118227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.7142,"y":41.89141,"z":-72.42235},"screenPosition":{"x":0.8641012,"y":0.24553119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.06686,"y":44.617737,"z":-72.24709},"screenPosition":{"x":0.86574167,"y":0.2733851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.2223,"y":46.485977,"z":-72.21386},"screenPosition":{"x":0.86448884,"y":0.29266143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.981,"y":47.763542,"z":-72.54122},"screenPosition":{"x":0.85545665,"y":0.30533862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.70557,"y":48.85595,"z":-73.89801},"screenPosition":{"x":0.82298684,"y":0.314329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.7164,"y":48.716316,"z":-75.89239},"screenPosition":{"x":0.77702737,"y":0.30967423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.79926,"y":49.721306,"z":-76.88253},"screenPosition":{"x":0.752938,"y":0.3185271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.68466,"y":52.612137,"z":-79.20327},"screenPosition":{"x":0.69626415,"y":0.34441674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.64435,"y":55.522095,"z":-80.443214},"screenPosition":{"x":0.664448,"y":0.3723571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.59543,"y":57.44619,"z":-79.61223},"screenPosition":{"x":0.681579,"y":0.3934953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.24518,"y":58.800842,"z":-82.06894},"screenPosition":{"x":0.6233135,"y":0.4034695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.2808,"y":60.885803,"z":-82.170685},"screenPosition":{"x":0.6187056,"y":0.4247579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.50766,"y":64.18004,"z":-81.15235},"screenPosition":{"x":0.63868576,"y":0.46029606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-382.0622,"y":70.71993,"z":-83.03997},"screenPosition":{"x":0.58796793,"y":0.5245404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.46094,"y":72.92904,"z":-83.7914},"screenPosition":{"x":0.5682049,"y":0.5460579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.97125,"y":76.39811,"z":-83.50635},"screenPosition":{"x":0.57104206,"y":0.5822117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.39154,"y":73.12147,"z":-85.88852},"screenPosition":{"x":0.5195107,"y":0.54465395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.0329,"y":70.74634,"z":-85.085724},"screenPosition":{"x":0.5406411,"y":0.52151114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.15067,"y":68.91119,"z":-83.83873},"screenPosition":{"x":0.5714574,"y":0.50464106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.0635,"y":67.41326,"z":-81.81312},"screenPosition":{"x":0.61991054,"y":0.4924971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.21747,"y":67.3817,"z":-80.64873},"screenPosition":{"x":0.64682686,"y":0.49407038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.13235,"y":67.502205,"z":-79.73514},"screenPosition":{"x":0.6678578,"y":0.4967652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.40497,"y":67.81667,"z":-78.474045},"screenPosition":{"x":0.69667435,"y":0.5020356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.11328,"y":69.11853,"z":-76.839264},"screenPosition":{"x":0.7330625,"y":0.5180685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.22223,"y":69.041435,"z":-74.70991},"screenPosition":{"x":0.7823771,"y":0.5207112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.82574,"y":65.70684,"z":-73.881935},"screenPosition":{"x":0.8051278,"y":0.48773685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.1122,"y":61.730873,"z":-73.33095},"screenPosition":{"x":0.82188886,"y":0.44781828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.29007,"y":60.294548,"z":-76.07876},"screenPosition":{"x":0.7601921,"y":0.42850408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.77936,"y":62.313328,"z":-78.74096},"screenPosition":{"x":0.696349,"y":0.4450478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.6112,"y":78.777824,"z":-76.975266},"screenPosition":{"x":0.7194678,"y":0.61723536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.97455,"y":76.15804,"z":-76.43638},"screenPosition":{"x":0.7347615,"y":0.59114945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.01263,"y":74.37358,"z":-75.27299},"screenPosition":{"x":0.76359,"y":0.574666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.85294,"y":72.01241,"z":-74.27075},"screenPosition":{"x":0.7891496,"y":0.55199426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.37448,"y":69.854,"z":-73.602936},"screenPosition":{"x":0.80676717,"y":0.5308913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.93674,"y":67.24818,"z":-72.8646},"screenPosition":{"x":0.82698125,"y":0.5052375},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-389.12305,"y":61.59124,"z":-75.32533},"screenPosition":{"x":0.7762087,"y":0.44306168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.37125,"y":62.14366,"z":-77.12631},"screenPosition":{"x":0.7339718,"y":0.44583964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.50018,"y":62.631428,"z":-79.04314},"screenPosition":{"x":0.6891267,"y":0.44776547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.0253,"y":63.991245,"z":-80.6185},"screenPosition":{"x":0.6511558,"y":0.45927075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.67447,"y":65.62727,"z":-83.09435},"screenPosition":{"x":0.59222037,"y":0.47205338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.17676,"y":67.82911,"z":-80.71923},"screenPosition":{"x":0.6447516,"y":0.49854082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.28925,"y":71.27025,"z":-80.83306},"screenPosition":{"x":0.6383969,"y":0.5337637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.9586,"y":72.17539,"z":-79.21137},"screenPosition":{"x":0.67491156,"y":0.5456936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.70813,"y":72.74847,"z":-77.486946},"screenPosition":{"x":0.71416086,"y":0.5543725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.4577,"y":73.32154,"z":-75.76251},"screenPosition":{"x":0.75333965,"y":0.563051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.04678,"y":74.55875,"z":-74.24356},"screenPosition":{"x":0.7869127,"y":0.5782153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.20013,"y":74.808556,"z":-73.098305},"screenPosition":{"x":0.8132132,"y":0.5826375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.19135,"y":76.56662,"z":-72.21595},"screenPosition":{"x":0.83189684,"y":0.60216326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.34134,"y":78.50468,"z":-71.185524},"screenPosition":{"x":0.85362375,"y":0.62376696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.9754,"y":79.7874,"z":-70.63153},"screenPosition":{"x":0.8650016,"y":0.63784987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.8121,"y":81.8584,"z":-70.93271},"screenPosition":{"x":0.85584056,"y":0.658682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.40323,"y":84.714035,"z":-70.52579},"screenPosition":{"x":0.8621593,"y":0.6887207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.3082,"y":87.15535,"z":-68.76812},"screenPosition":{"x":0.90015584,"y":0.716676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.1369,"y":87.95911,"z":-66.979225},"screenPosition":{"x":0.940646,"y":0.7278325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.3272,"y":86.987206,"z":-64.70885},"screenPosition":{"x":0.9948484,"y":0.72009003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.18158,"y":85.72134,"z":-64.87927},"screenPosition":{"x":1.0043424,"y":0.70946175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.9973,"y":82.00093,"z":-62.00899},"screenPosition":{"x":1.0311462,"y":0.6714779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.31857,"y":79.72108,"z":-65.35249},"screenPosition":{"x":0.9998929,"y":0.64696044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.39337,"y":79.08444,"z":-66.13512},"screenPosition":{"x":0.9693208,"y":0.6378077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.64267,"y":79.07411,"z":-67.89782},"screenPosition":{"x":0.9290202,"y":0.63493097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.85263,"y":76.20452,"z":-68.50419},"screenPosition":{"x":0.9180631,"y":0.6044223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.1363,"y":73.63542,"z":-68.0489},"screenPosition":{"x":0.9314113,"y":0.5787275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.81183,"y":71.44545,"z":-66.21668},"screenPosition":{"x":0.97274595,"y":0.559167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.7046,"y":72.77029,"z":-62.435722},"screenPosition":{"x":1.0282284,"y":0.5755114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.53915,"y":76.30498,"z":-66.21844},"screenPosition":{"x":0.9911955,"y":0.610648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.16425,"y":76.9157,"z":-67.23},"screenPosition":{"x":0.9467955,"y":0.61380017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.77838,"y":76.185394,"z":-69.58498},"screenPosition":{"x":0.893138,"y":0.602486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.63065,"y":73.12184,"z":-70.53885},"screenPosition":{"x":0.87439865,"y":0.5694254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.88074,"y":70.08621,"z":-71.09384},"screenPosition":{"x":0.86485124,"y":0.53729576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.75516,"y":67.910194,"z":-69.06219},"screenPosition":{"x":0.9141778,"y":0.5181846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.26138,"y":68.14241,"z":-66.5531},"screenPosition":{"x":0.9809272,"y":0.5245428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.72464,"y":70.641846,"z":-66.66508},"screenPosition":{"x":0.98286575,"y":0.5517725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.21558,"y":74.055115,"z":-66.39588},"screenPosition":{"x":0.99422765,"y":0.5870824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.96048,"y":76.69018,"z":-66.41311},"screenPosition":{"x":0.96592623,"y":0.61279786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.49268,"y":77.136055,"z":-68.928246},"screenPosition":{"x":0.90729326,"y":0.61332726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.26898,"y":74.8975,"z":-71.020325},"screenPosition":{"x":0.86096257,"y":0.58689076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.51962,"y":71.5805,"z":-71.55618},"screenPosition":{"x":0.85254526,"y":0.55192477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.52097,"y":68.27383,"z":-70.32932},"screenPosition":{"x":0.88448787,"y":0.51988137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.78217,"y":69.00929,"z":-67.092995},"screenPosition":{"x":0.95786357,"y":0.5327127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.61493,"y":73.04991,"z":-67.528145},"screenPosition":{"x":0.9434911,"y":0.5735267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.86087,"y":74.72783,"z":-69.405685},"screenPosition":{"x":0.89877164,"y":0.5877722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.514,"y":74.39424,"z":-71.74757},"screenPosition":{"x":0.8450762,"y":0.58056706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.28433,"y":72.506874,"z":-72.861595},"screenPosition":{"x":0.8213615,"y":0.55935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.45566,"y":71.70311,"z":-74.65049},"screenPosition":{"x":0.78087133,"y":0.5481935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.58237,"y":73.316376,"z":-76.64387},"screenPosition":{"x":0.7330386,"y":0.56157625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.22275,"y":76.710464,"z":-78.237366},"screenPosition":{"x":0.69252455,"y":0.59392744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.88757,"y":79.8666,"z":-76.76878},"screenPosition":{"x":0.72306395,"y":0.6287711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.19318,"y":80.92897,"z":-74.51655},"screenPosition":{"x":0.7739868,"y":0.6433362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.78775,"y":88.751015,"z":-69.39766},"screenPosition":{"x":0.8838743,"y":0.73207825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.5217,"y":87.803986,"z":-71.61766},"screenPosition":{"x":0.8335718,"y":0.718752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.77664,"y":84.97991,"z":-73.18899},"screenPosition":{"x":0.80029774,"y":0.6871592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.62122,"y":83.11167,"z":-73.22222},"screenPosition":{"x":0.80155057,"y":0.6678829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.8295,"y":81.086205,"z":-73.886},"screenPosition":{"x":0.7880604,"y":0.64586955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.31805,"y":78.17988,"z":-74.20933},"screenPosition":{"x":0.78406405,"y":0.615546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.72525,"y":76.16837,"z":-74.67367},"screenPosition":{"x":0.7755046,"y":0.5941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.4506,"y":74.23548,"z":-74.82274},"screenPosition":{"x":0.77395636,"y":0.57396233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.1808,"y":72.514145,"z":-75.98814},"screenPosition":{"x":0.7490672,"y":0.55438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.0265,"y":70.08315,"z":-75.98309},"screenPosition":{"x":0.75180465,"y":0.52937645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.5535,"y":67.85493,"z":-76.31246},"screenPosition":{"x":0.7466094,"y":0.5059171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.68433,"y":64.75465,"z":-76.98329},"screenPosition":{"x":0.7344538,"y":0.47293532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.33487,"y":63.084,"z":-78.23229},"screenPosition":{"x":0.707384,"y":0.45373037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.06934,"y":61.855595,"z":-80.43316},"screenPosition":{"x":0.6578284,"y":0.43753988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.68066,"y":62.532158,"z":-82.88383},"screenPosition":{"x":0.60043633,"y":0.44054684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.9272,"y":63.928703,"z":-84.742226},"screenPosition":{"x":0.5559587,"y":0.4519175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.80774,"y":66.60797,"z":-86.04664},"screenPosition":{"x":0.5228963,"y":0.47741643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.19992,"y":69.449646,"z":-85.83915},"screenPosition":{"x":0.5246245,"y":0.50695354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.26483,"y":71.5082,"z":-83.89514},"screenPosition":{"x":0.5673434,"y":0.5312712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.77908,"y":73.00765,"z":-83.47613},"screenPosition":{"x":0.57540166,"y":0.54737705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.24722,"y":75.02433,"z":-82.130424},"screenPosition":{"x":0.6043401,"y":0.57029676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.15933,"y":76.551704,"z":-81.31253},"screenPosition":{"x":0.6215975,"y":0.58733195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.78738,"y":78.18562,"z":-79.780495},"screenPosition":{"x":0.655251,"y":0.60661566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.46045,"y":79.865074,"z":-79.21341},"screenPosition":{"x":0.6665452,"y":0.6248108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.8489,"y":81.932434,"z":-77.95132},"screenPosition":{"x":0.6934885,"y":0.6481188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.83957,"y":83.97187,"z":-77.0881},"screenPosition":{"x":0.71102744,"y":0.6703803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.75165,"y":85.499245,"z":-76.2702},"screenPosition":{"x":0.72847074,"y":0.68751556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.4577,"y":87.9266,"z":-74.711975},"screenPosition":{"x":0.76162386,"y":0.7148533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.1216,"y":88.90156,"z":-72.093094},"screenPosition":{"x":0.8213923,"y":0.72927797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.07516,"y":86.95622,"z":-69.99698},"screenPosition":{"x":0.8719597,"y":0.71264434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.66986,"y":85.379684,"z":-68.286644},"screenPosition":{"x":0.9132087,"y":0.6991828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.18433,"y":84.135216,"z":-66.67905},"screenPosition":{"x":0.9516547,"y":0.6889523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.1851,"y":81.10992,"z":-65.47134},"screenPosition":{"x":0.99048376,"y":0.65878135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.72162,"y":77.573524,"z":-66.11839},"screenPosition":{"x":0.98800594,"y":0.6239759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.4912,"y":75.23625,"z":-67.79709},"screenPosition":{"x":0.93550134,"y":0.5956051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.74277,"y":74.10043,"z":-69.48324},"screenPosition":{"x":0.89774585,"y":0.5811976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.75247,"y":74.523544,"z":-71.5159},"screenPosition":{"x":0.85012686,"y":0.58226115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.88144,"y":75.011314,"z":-73.43272},"screenPosition":{"x":0.80544746,"y":0.58419716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.64783,"y":75.09357,"z":-74.68072},"screenPosition":{"x":0.77642477,"y":0.58302325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.06134,"y":75.19341,"z":-77.29255},"screenPosition":{"x":0.7160102,"y":0.57984275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.42334,"y":75.88031,"z":-77.98051},"screenPosition":{"x":0.6993218,"y":0.5857951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.35394,"y":76.07274,"z":-80.07763},"screenPosition":{"x":0.650667,"y":0.58439636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.48572,"y":75.15363,"z":-81.89876},"screenPosition":{"x":0.6095414,"y":0.5719994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.1775,"y":72.75421,"z":-83.05811},"screenPosition":{"x":0.5853312,"y":0.54544574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.95435,"y":70.234276,"z":-85.13105},"screenPosition":{"x":0.5401423,"y":0.5161767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.15833,"y":67.71587,"z":-84.75936},"screenPosition":{"x":0.5514653,"y":0.49085674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.60077,"y":65.326775,"z":-84.156006},"screenPosition":{"x":0.5679997,"y":0.4672484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.60156,"y":62.30147,"z":-82.94829},"screenPosition":{"x":0.59917945,"y":0.4380915},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-385.6573,"y":63.65555,"z":-78.952484},"screenPosition":{"x":0.69011456,"y":0.45844907},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.35626,"y":66.99684,"z":-76.45448},"screenPosition":{"x":0.74419504,"y":0.49687523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.9078,"y":69.73713,"z":-76.07979},"screenPosition":{"x":0.7499525,"y":0.52565885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.65796,"y":70.02883,"z":-74.33622},"screenPosition":{"x":0.7899487,"y":0.5314736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.44818,"y":70.1545,"z":-72.541275},"screenPosition":{"x":0.83131224,"y":0.5356629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.79507,"y":70.48809,"z":-70.199394},"screenPosition":{"x":0.8850963,"y":0.54287404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.7441,"y":70.793755,"z":-68.256386},"screenPosition":{"x":0.92968845,"y":0.5491543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.81366,"y":75.8078,"z":-68.51728},"screenPosition":{"x":0.91823196,"y":0.60032374},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-392.8698,"y":78.17625,"z":-72.64606},"screenPosition":{"x":0.81996876,"y":0.6179867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.4356,"y":79.08865,"z":-74.15091},"screenPosition":{"x":0.7843125,"y":0.6249632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.2791,"y":76.334984,"z":-81.17756},"screenPosition":{"x":0.6249446,"y":0.58531815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.13138,"y":73.27143,"z":-82.13143},"screenPosition":{"x":0.60619915,"y":0.5522606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.64008,"y":69.634224,"z":-78.35721},"screenPosition":{"x":0.69740933,"y":0.5209253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.51392,"y":67.739586,"z":-76.344696},"screenPosition":{"x":0.74598676,"y":0.50467885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.62177,"y":68.22524,"z":-74.25362},"screenPosition":{"x":0.7938097,"y":0.5130494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.41202,"y":68.350914,"z":-72.45868},"screenPosition":{"x":0.83517325,"y":0.51723874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.75867,"y":71.42843,"z":-71.305374},"screenPosition":{"x":0.85831696,"y":0.55077064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.74728,"y":71.849434,"z":-69.33013},"screenPosition":{"x":0.9037211,"y":0.5582838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.3748,"y":73.76473,"z":-67.81723},"screenPosition":{"x":0.93637496,"y":0.5804205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.5259,"y":75.14004,"z":-66.74853},"screenPosition":{"x":0.95984846,"y":0.596307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.07578,"y":78.72445,"z":-66.43125},"screenPosition":{"x":0.96330607,"y":0.6336996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.34445,"y":81.00854,"z":-65.30413},"screenPosition":{"x":0.9904333,"y":0.6580725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.18488,"y":83.853836,"z":-66.65991},"screenPosition":{"x":0.95247,"y":0.6861079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.02048,"y":86.48759,"z":-66.99937},"screenPosition":{"x":0.94177234,"y":0.71265924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.22086,"y":88.40135,"z":-67.93108},"screenPosition":{"x":0.9181602,"y":0.73084694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.69928,"y":90.55977,"z":-68.59891},"screenPosition":{"x":0.90038484,"y":0.7519777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.2227,"y":92.7637,"z":-70.23168},"screenPosition":{"x":0.86025023,"y":0.77201986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.0967,"y":96.07554,"z":-70.57719},"screenPosition":{"x":0.8486792,"y":0.8055385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.50278,"y":98.616806,"z":-68.279594},"screenPosition":{"x":0.8984264,"y":0.835242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.77835,"y":97.36509,"z":-66.30917},"screenPosition":{"x":0.95136845,"y":0.8228113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.6403,"y":94.92696,"z":-65.314545},"screenPosition":{"x":0.9876269,"y":0.80380684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.32358,"y":93.661385,"z":-64.25306},"screenPosition":{"x":1.0102304,"y":0.7921688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.53598,"y":90.18834,"z":-65.1235},"screenPosition":{"x":0.99736047,"y":0.75537735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.12808,"y":89.71717,"z":-66.09686},"screenPosition":{"x":0.95869213,"y":0.7471579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.3339,"y":91.56112,"z":-68.02578},"screenPosition":{"x":0.9122505,"y":0.7630541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.77335,"y":93.322815,"z":-68.70669},"screenPosition":{"x":0.89482814,"y":0.7801904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.13196,"y":95.69795,"z":-69.50948},"screenPosition":{"x":0.87377316,"y":0.8033762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.81418,"y":98.08189,"z":-70.994194},"screenPosition":{"x":0.83594,"y":0.826502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.34918,"y":97.120895,"z":-73.413635},"screenPosition":{"x":0.78196865,"y":0.8117175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.68924,"y":94.17632,"z":-75.898544},"screenPosition":{"x":0.7277026,"y":0.7774107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.16864,"y":90.565506,"z":-74.170074},"screenPosition":{"x":0.7715718,"y":0.74304736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.637,"y":89.83826,"z":-71.6358},"screenPosition":{"x":0.8309517,"y":0.73965377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.50522,"y":90.75736,"z":-69.814674},"screenPosition":{"x":0.87206227,"y":0.7520491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.01462,"y":92.04525,"z":-68.379326},"screenPosition":{"x":0.90366846,"y":0.76751894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.68283,"y":93.51314,"z":-66.79591},"screenPosition":{"x":0.9388753,"y":0.78527474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.63873,"y":94.69152,"z":-66.32447},"screenPosition":{"x":0.9662798,"y":0.8026894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.3244,"y":95.40066,"z":-64.5332},"screenPosition":{"x":1.0037689,"y":0.80980116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.29544,"y":94.091324,"z":-60.30914},"screenPosition":{"x":1.0552766,"y":0.79841316},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.22693,"y":88.03971,"z":-65.29295},"screenPosition":{"x":0.9957672,"y":0.7329963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.20404,"y":88.89217,"z":-64.95866},"screenPosition":{"x":0.99620074,"y":0.73908675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.85007,"y":89.47252,"z":-66.36076},"screenPosition":{"x":0.9533075,"y":0.7444022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.8538,"y":90.246826,"z":-67.415375},"screenPosition":{"x":0.92808706,"y":0.7506675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.09543,"y":91.431816,"z":-68.25745},"screenPosition":{"x":0.9065692,"y":0.76111466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.85358,"y":92.99075,"z":-68.60395},"screenPosition":{"x":0.89736634,"y":0.77683103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.28705,"y":95.103645,"z":-68.30681},"screenPosition":{"x":0.9022222,"y":0.7992018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.7058,"y":98.06656,"z":-68.04647},"screenPosition":{"x":0.90464664,"y":0.8300691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.65195,"y":100.70244,"z":-69.24615},"screenPosition":{"x":0.8736494,"y":0.8552138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.14297,"y":102.158264,"z":-71.873604},"screenPosition":{"x":0.81137455,"y":0.8659582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.20554,"y":101.84663,"z":-73.83439},"screenPosition":{"x":0.76671857,"y":0.8596218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.31113,"y":98.90536,"z":-74.57703},"screenPosition":{"x":0.75314015,"y":0.82820094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.19693,"y":96.308334,"z":-74.520615},"screenPosition":{"x":0.7572541,"y":0.8015707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.59982,"y":93.803894,"z":-73.94949},"screenPosition":{"x":0.77316815,"y":0.7767236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.20166,"y":91.313416,"z":-73.17893},"screenPosition":{"x":0.79367816,"y":0.752342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.08804,"y":88.43502,"z":-73.10338},"screenPosition":{"x":0.79853904,"y":0.7228476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.2605,"y":87.06851,"z":-74.854},"screenPosition":{"x":0.7595427,"y":0.70596254},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.2835,"y":83.482574,"z":-77.6159},"screenPosition":{"x":0.6995663,"y":0.6646097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.5623,"y":80.70192,"z":-76.14428},"screenPosition":{"x":0.7365988,"y":0.63837355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.43237,"y":85.983376,"z":-76.62375},"screenPosition":{"x":0.7197994,"y":0.6919418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.2417,"y":84.49273,"z":-77.724686},"screenPosition":{"x":0.69595826,"y":0.6748278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.36826,"y":80.89951,"z":-77.36005},"screenPosition":{"x":0.7082762,"y":0.63844496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.56195,"y":78.23937,"z":-74.974846},"screenPosition":{"x":0.76630074,"y":0.6149229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.51266,"y":77.70091,"z":-72.97442},"screenPosition":{"x":0.8131336,"y":0.6126104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.93585,"y":79.67206,"z":-70.663765},"screenPosition":{"x":0.864424,"y":0.6366203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5238,"y":81.472015,"z":-69.1831},"screenPosition":{"x":0.89671016,"y":0.6575295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.9089,"y":85.227615,"z":-68.035835},"screenPosition":{"x":0.9189606,"y":0.6979521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.38507,"y":88.51153,"z":-68.780205},"screenPosition":{"x":0.89791566,"y":0.73039526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.39084,"y":90.90427,"z":-70.94684},"screenPosition":{"x":0.84572744,"y":0.7517338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.4,"y":91.60876,"z":-72.99863},"screenPosition":{"x":0.7973226,"y":0.75553316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.01154,"y":89.54139,"z":-74.26073},"screenPosition":{"x":0.7705839,"y":0.73236376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.50586,"y":89.0278,"z":-76.75067},"screenPosition":{"x":0.71357125,"y":0.7230617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.1157,"y":87.804565,"z":-78.07018},"screenPosition":{"x":0.6843872,"y":0.7083464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.0437,"y":86.65994,"z":-79.074425},"screenPosition":{"x":0.66240734,"y":0.6949488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.8129,"y":85.33532,"z":-80.22673},"screenPosition":{"x":0.6371988,"y":0.6794602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.98422,"y":84.53156,"z":-82.015625},"screenPosition":{"x":0.59670866,"y":0.66830367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.07587,"y":83.77849,"z":-83.88812},"screenPosition":{"x":0.55423075,"y":0.65753376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.96463,"y":84.98107,"z":-86.09403},"screenPosition":{"x":0.5019285,"y":0.66634804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.55353,"y":88.962204,"z":-85.76366},"screenPosition":{"x":0.5052597,"y":0.70784366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.54266,"y":89.10184,"z":-83.76928},"screenPosition":{"x":0.55120176,"y":0.71243376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.05377,"y":89.54561,"z":-82.27652},"screenPosition":{"x":0.5852521,"y":0.7194731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.64453,"y":89.93869,"z":-80.70015},"screenPosition":{"x":0.6212115,"y":0.72597015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.03693,"y":90.03643,"z":-79.304085},"screenPosition":{"x":0.65344447,"y":0.7293195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.50735,"y":90.927605,"z":-77.881836},"screenPosition":{"x":0.6853632,"y":0.7407839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.30133,"y":91.82758,"z":-77.1415},"screenPosition":{"x":0.70150626,"y":0.75123847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.854,"y":94.00513,"z":-76.72853},"screenPosition":{"x":0.7086984,"y":0.77430993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.92975,"y":95.92406,"z":-76.77889},"screenPosition":{"x":0.7054578,"y":0.7939729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.44232,"y":98.267624,"z":-76.4173},"screenPosition":{"x":0.7112827,"y":0.81866986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.0428,"y":99.083824,"z":-76.87359},"screenPosition":{"x":0.6998501,"y":0.82633156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.80975,"y":98.8847,"z":-78.10245},"screenPosition":{"x":0.6714132,"y":0.82191026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.25366,"y":98.3954,"z":-78.63025},"screenPosition":{"x":0.65998036,"y":0.8164138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.14267,"y":96.854065,"z":-79.64758},"screenPosition":{"x":0.6381269,"y":0.7989132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.62955,"y":94.79186,"z":-80.02832},"screenPosition":{"x":0.63150376,"y":0.7769889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.35544,"y":92.5776,"z":-80.15825},"screenPosition":{"x":0.6309467,"y":0.7540878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.8802,"y":91.47486,"z":-80.56418},"screenPosition":{"x":0.6227547,"y":0.7420866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.0924,"y":87.479774,"z":-81.09399},"screenPosition":{"x":0.6148275,"y":0.70012546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.82352,"y":87.93961,"z":-83.40968},"screenPosition":{"x":0.56079054,"y":0.7011203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.42715,"y":89.81149,"z":-84.93972},"screenPosition":{"x":0.52338755,"y":0.7178754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.78094,"y":91.97507,"z":-84.72618},"screenPosition":{"x":0.52598494,"y":0.7404963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.70105,"y":94.769684,"z":-85.99836},"screenPosition":{"x":0.4935502,"y":0.7672192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.96198,"y":91.59442,"z":-88.54774},"screenPosition":{"x":0.43805972,"y":0.73039645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.3139,"y":89.395645,"z":-86.03361},"screenPosition":{"x":0.4985547,"y":0.71180236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.90637,"y":88.9446,"z":-84.399826},"screenPosition":{"x":0.53681093,"y":0.70986325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.73785,"y":88.34149,"z":-82.515236},"screenPosition":{"x":0.5810356,"y":0.7066986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.88467,"y":89.22387,"z":-80.411064},"screenPosition":{"x":0.6287299,"y":0.7191728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.47375,"y":90.461075,"z":-78.89212},"screenPosition":{"x":0.66236526,"y":0.734189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.1013,"y":92.376366,"z":-77.37921},"screenPosition":{"x":0.6953434,"y":0.75642437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.48975,"y":94.44373,"z":-76.11712},"screenPosition":{"x":0.7220323,"y":0.7794719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.27866,"y":97.876076,"z":-75.549034},"screenPosition":{"x":0.7317807,"y":0.81604207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.71472,"y":101.32602,"z":-76.34478},"screenPosition":{"x":0.71052796,"y":0.8525311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.66992,"y":102.70929,"z":-78.90935},"screenPosition":{"x":0.6685198,"y":0.8683968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.3753,"y":102.54104,"z":-80.795876},"screenPosition":{"x":0.6054165,"y":0.8555468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.42703,"y":99.210075,"z":-81.531166},"screenPosition":{"x":0.592029,"y":0.82011527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.353,"y":96.44702,"z":-81.423386},"screenPosition":{"x":0.5975103,"y":0.7918596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.23172,"y":94.76394,"z":-80.42719},"screenPosition":{"x":0.62236327,"y":0.7761495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.43997,"y":92.738464,"z":-81.09098},"screenPosition":{"x":0.6092078,"y":0.754238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.1226,"y":89.63455,"z":-80.19853},"screenPosition":{"x":0.63311976,"y":0.7236359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.1157,"y":87.804565,"z":-78.07018},"screenPosition":{"x":0.6843872,"y":0.7083464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.34445,"y":87.51076,"z":-75.80586},"screenPosition":{"x":0.7370569,"y":0.708977},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.3867,"y":104.772095,"z":-78.88691},"screenPosition":{"x":0.64680195,"y":0.88157624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.09277,"y":104.54738,"z":-81.21288},"screenPosition":{"x":0.5948085,"y":0.87654847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.66757,"y":100.95781,"z":-82.41152},"screenPosition":{"x":0.56978416,"y":0.83667755},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-383.80347,"y":95.32516,"z":-82.910095},"screenPosition":{"x":0.5643507,"y":0.7779177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.3256,"y":92.88537,"z":-82.22314},"screenPosition":{"x":0.582873,"y":0.7539227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.60757,"y":91.1604,"z":-81.825264},"screenPosition":{"x":0.5938566,"y":0.7366449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.0896,"y":88.88664,"z":-81.18968},"screenPosition":{"x":0.61109304,"y":0.7144466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.76938,"y":87.1896,"z":-80.39293},"screenPosition":{"x":0.63135004,"y":0.69827104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.45145,"y":84.36706,"z":-79.51963},"screenPosition":{"x":0.6545947,"y":0.6706385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.73453,"y":82.07934,"z":-79.08347},"screenPosition":{"x":0.66715366,"y":0.6478035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.8594,"y":79.330246,"z":-78.77625},"screenPosition":{"x":0.67718375,"y":0.6199968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.83145,"y":76.04997,"z":-79.59515},"screenPosition":{"x":0.66177666,"y":0.58492976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.5161,"y":74.56448,"z":-79.81473},"screenPosition":{"x":0.6583771,"y":0.5693019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.45776,"y":71.87336,"z":-82.71765},"screenPosition":{"x":0.5941435,"y":0.5369367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.93936,"y":75.087456,"z":-84.45921},"screenPosition":{"x":0.5504295,"y":0.5671886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.98096,"y":76.82122,"z":-85.53901},"screenPosition":{"x":0.5235888,"y":0.5832854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.94232,"y":78.88706,"z":-86.721535},"screenPosition":{"x":0.49401337,"y":0.60263306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.30096,"y":81.26219,"z":-87.52433},"screenPosition":{"x":0.47288296,"y":0.6257759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.77826,"y":83.98335,"z":-88.23043},"screenPosition":{"x":0.45363176,"y":0.65260625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.48804,"y":87.18501,"z":-87.72681},"screenPosition":{"x":0.4617939,"y":0.68639016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.9101,"y":89.71891,"z":-85.45443},"screenPosition":{"x":0.51158947,"y":0.7159927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.98514,"y":86.71274,"z":-83.165924},"screenPosition":{"x":0.5677537,"y":0.6888901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.07043,"y":83.848305,"z":-82.89093},"screenPosition":{"x":0.5772105,"y":0.65986115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.75677,"y":81.5187,"z":-83.05309},"screenPosition":{"x":0.5759816,"y":0.6356297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.44315,"y":79.18909,"z":-83.215256},"screenPosition":{"x":0.5747527,"y":0.6113983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.0498,"y":76.91017,"z":-83.46102},"screenPosition":{"x":0.5715296,"y":0.58755076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.81528,"y":74.81124,"z":-83.55872},"screenPosition":{"x":0.571548,"y":0.5657996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.77423,"y":72.7961,"z":-82.45979},"screenPosition":{"x":0.5991077,"y":0.5468432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.78528,"y":69.91254,"z":-83.265594},"screenPosition":{"x":0.5836112,"y":0.5158775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.244,"y":67.31399,"z":-85.65381},"screenPosition":{"x":0.5312202,"y":0.48527846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.441,"y":70.916,"z":-86.70036},"screenPosition":{"x":0.5031266,"y":0.5206515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.5173,"y":72.55356,"z":-86.73159},"screenPosition":{"x":0.50063294,"y":0.53745025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.51395,"y":74.241806,"z":-86.84643},"screenPosition":{"x":0.49615154,"y":0.55463564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.50888,"y":76.77417,"z":-87.01868},"screenPosition":{"x":0.48943245,"y":0.5804109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.5439,"y":79.1405,"z":-87.13955},"screenPosition":{"x":0.48407796,"y":0.6045608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.9811,"y":82.0277,"z":-87.89702},"screenPosition":{"x":0.46346065,"y":0.6330166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.35226,"y":83.41908,"z":-90.63678},"screenPosition":{"x":0.3986003,"y":0.642938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.72327,"y":79.60398,"z":-91.01852},"screenPosition":{"x":0.39390272,"y":0.60307175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.55646,"y":78.15675,"z":-89.076515},"screenPosition":{"x":0.4403656,"y":0.5913147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.51315,"y":77.267105,"z":-88.05414},"screenPosition":{"x":0.46495584,"y":0.5838148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.26724,"y":75.58919,"z":-86.1766},"screenPosition":{"x":0.51018035,"y":0.5695799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.34882,"y":71.95045,"z":-84.84701},"screenPosition":{"x":0.5448576,"y":0.53428566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.32718,"y":70.78153,"z":-87.81339},"screenPosition":{"x":0.4775387,"y":0.517472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.00995,"y":72.884094,"z":-89.27896},"screenPosition":{"x":0.4382216,"y":0.53557783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.36746,"y":75.821976,"z":-90.12003},"screenPosition":{"x":0.41238472,"y":0.56295943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.5223,"y":77.97159,"z":-90.105934},"screenPosition":{"x":0.41675562,"y":0.5877527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.23923,"y":80.25931,"z":-90.54208},"screenPosition":{"x":0.40424117,"y":0.6105671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.27316,"y":83.18839,"z":-90.70124},"screenPosition":{"x":0.39734805,"y":0.6404688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.54294,"y":84.90973,"z":-89.53584},"screenPosition":{"x":0.42243007,"y":0.66006035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.20663,"y":88.62861,"z":-88.10554},"screenPosition":{"x":0.45147565,"y":0.7006325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.1152,"y":86.63776,"z":-85.044464},"screenPosition":{"x":0.5244024,"y":0.6850875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.16376,"y":82.251114,"z":-84.70602},"screenPosition":{"x":0.5369733,"y":0.6404986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.33847,"y":79.75911,"z":-86.38008},"screenPosition":{"x":0.5009646,"y":0.6121567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.15152,"y":79.04276,"z":-88.535614},"screenPosition":{"x":0.45191398,"y":0.6013004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.7173,"y":79.95518,"z":-90.04047},"screenPosition":{"x":0.41612324,"y":0.6082678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.844,"y":81.568436,"z":-92.033844},"screenPosition":{"x":0.360564,"y":0.61787844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.04382,"y":83.76358,"z":-92.9847},"screenPosition":{"x":0.3397276,"y":0.6399606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.9489,"y":85.59716,"z":-94.62222},"screenPosition":{"x":0.32030934,"y":0.6605398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.69543,"y":97.58343,"z":-86.18975},"screenPosition":{"x":0.48608544,"y":0.79582024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.1334,"y":97.44532,"z":-85.7395},"screenPosition":{"x":0.49664038,"y":0.79516697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.60828,"y":96.0855,"z":-84.16414},"screenPosition":{"x":0.53453434,"y":0.7837175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.60083,"y":94.53689,"z":-82.05493},"screenPosition":{"x":0.58497524,"y":0.7711869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.22607,"y":97.57768,"z":-80.61858},"screenPosition":{"x":0.6148942,"y":0.8047918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.53317,"y":100.539856,"z":-79.497505},"screenPosition":{"x":0.63760906,"y":0.8370791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.85767,"y":102.72983,"z":-81.32973},"screenPosition":{"x":0.59287846,"y":0.8566558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.86627,"y":103.7157,"z":-83.40066},"screenPosition":{"x":0.54393137,"y":0.8634579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.71887,"y":103.11469,"z":-85.523964},"screenPosition":{"x":0.49549013,"y":0.853848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.0117,"y":101.25009,"z":-87.12047},"screenPosition":{"x":0.46061707,"y":0.83197105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.90292,"y":98.58325,"z":-88.06125},"screenPosition":{"x":0.44180104,"y":0.80287915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.3508,"y":96.12434,"z":-88.45508},"screenPosition":{"x":0.43528473,"y":0.77719337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.15695,"y":93.578,"z":-88.48227},"screenPosition":{"x":0.43741092,"y":0.75094986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.68396,"y":91.34978,"z":-88.81164},"screenPosition":{"x":0.4322065,"y":0.72749174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.6489,"y":88.98344,"z":-88.69076},"screenPosition":{"x":0.4376001,"y":0.7032635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.3341,"y":87.216576,"z":-88.891205},"screenPosition":{"x":0.4348651,"y":0.6847929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.2951,"y":86.81986,"z":-88.9043},"screenPosition":{"x":0.4349651,"y":0.6807331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.10162,"y":86.736084,"z":-90.10092},"screenPosition":{"x":0.4073894,"y":0.67794025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.829,"y":86.421616,"z":-91.362015},"screenPosition":{"x":0.37857285,"y":0.67266977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.553,"y":87.795395,"z":-92.73794},"screenPosition":{"x":0.34527487,"y":0.68458474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.63474,"y":89.36314,"z":-93.76636},"screenPosition":{"x":0.31980145,"y":0.6990561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.39832,"y":90.85226,"z":-95.11005},"screenPosition":{"x":0.27691072,"y":0.70653313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.35706,"y":91.58104,"z":-95.19969},"screenPosition":{"x":0.28447825,"y":0.719413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.91312,"y":92.070335,"z":-94.67189},"screenPosition":{"x":0.29593638,"y":0.7254498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.94894,"y":91.41137,"z":-93.58505},"screenPosition":{"x":0.32177725,"y":0.7204233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.0249,"y":90.58637,"z":-92.446846},"screenPosition":{"x":0.34898546,"y":0.71377134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.50095,"y":88.66381,"z":-90.833206},"screenPosition":{"x":0.38838613,"y":0.6965791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.53787,"y":87.4421,"z":-89.70809},"screenPosition":{"x":0.41575187,"y":0.68578064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.13202,"y":86.146935,"z":-88.01689},"screenPosition":{"x":0.45621005,"y":0.6752411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.05142,"y":84.01645,"z":-86.950195},"screenPosition":{"x":0.48317727,"y":0.6550413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.69223,"y":81.92268,"z":-86.16654},"screenPosition":{"x":0.5035608,"y":0.6347627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.45172,"y":80.17495,"z":-85.286194},"screenPosition":{"x":0.5258056,"y":0.6182004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.70947,"y":75.94401,"z":-86.76182},"screenPosition":{"x":0.49626708,"y":0.57228565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.99384,"y":78.30002,"z":-88.64541},"screenPosition":{"x":0.4501681,"y":0.5934886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.6712,"y":80.4724,"z":-89.11379},"screenPosition":{"x":0.43698874,"y":0.6150848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.2623,"y":83.328026,"z":-88.70686},"screenPosition":{"x":0.44330752,"y":0.64512354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.81985,"y":85.717125,"z":-89.31022},"screenPosition":{"x":0.4268185,"y":0.6686736},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-375.29865,"y":90.33809,"z":-91.14748},"screenPosition":{"x":0.37929583,"y":0.7133133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.4128,"y":92.93511,"z":-91.20389},"screenPosition":{"x":0.37527707,"y":0.7398178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.03918,"y":95.413155,"z":-89.72926},"screenPosition":{"x":0.40659466,"y":0.76781994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.79193,"y":97.04191,"z":-89.078575},"screenPosition":{"x":0.41997924,"y":0.7853743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.46274,"y":99.846855,"z":-88.58805},"screenPosition":{"x":0.42818314,"y":0.8152805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.76666,"y":101.75335,"z":-86.39323},"screenPosition":{"x":0.47688302,"y":0.8382925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.9971,"y":100.61542,"z":-84.07149},"screenPosition":{"x":0.5317758,"y":0.83047616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.48737,"y":96.864975,"z":-84.337395},"screenPosition":{"x":0.5296629,"y":0.7911892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.61597,"y":94.89019,"z":-85.08478},"screenPosition":{"x":0.5145422,"y":0.7699332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.37827,"y":91.73558,"z":-84.108734},"screenPosition":{"x":0.5405215,"y":0.7390498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.68893,"y":90.26559,"z":-81.68425},"screenPosition":{"x":0.5981666,"y":0.7278368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.9132,"y":92.22277,"z":-79.57303},"screenPosition":{"x":0.6448418,"y":0.75135404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.38022,"y":94.80219,"z":-78.26561},"screenPosition":{"x":0.6722983,"y":0.78003097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.05103,"y":97.60713,"z":-77.775085},"screenPosition":{"x":0.6806048,"y":0.809683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.28333,"y":100.83156,"z":-77.75394},"screenPosition":{"x":0.6776053,"y":0.84289384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.98233,"y":102.50001,"z":-78.58086},"screenPosition":{"x":0.6763879,"y":0.8668614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.74643,"y":105.46015,"z":-79.572426},"screenPosition":{"x":0.63015336,"y":0.8875443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.21658,"y":105.69251,"z":-83.59189},"screenPosition":{"x":0.5535928,"y":0.8851027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.86176,"y":105.96669,"z":-83.553764},"screenPosition":{"x":0.5377319,"y":0.88372433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.1557,"y":103.53934,"z":-85.11199},"screenPosition":{"x":0.50456125,"y":0.8585945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.68698,"y":101.80404,"z":-86.47683},"screenPosition":{"x":0.47489968,"y":0.83865243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.899,"y":100.55287,"z":-88.19521},"screenPosition":{"x":0.43659118,"y":0.82286173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.73077,"y":110.36271,"z":-91.02666},"screenPosition":{"x":0.36527973,"y":0.92418677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.85565,"y":107.613625,"z":-90.71944},"screenPosition":{"x":0.3705022,"y":0.8917551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.32773,"y":107.660675,"z":-89.23977},"screenPosition":{"x":0.40466163,"y":0.8946268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.56958,"y":106.10174,"z":-88.893265},"screenPosition":{"x":0.41435942,"y":0.8791457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.25592,"y":103.772125,"z":-89.05543},"screenPosition":{"x":0.41333,"y":0.8543125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.90216,"y":101.60855,"z":-89.26896},"screenPosition":{"x":0.4105343,"y":0.83230823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.46985,"y":98.932915,"z":-89.52782},"screenPosition":{"x":0.40758848,"y":0.8040198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.63425,"y":96.299164,"z":-89.18837},"screenPosition":{"x":0.41814178,"y":0.777809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.2415,"y":93.73888,"z":-89.41499},"screenPosition":{"x":0.41567203,"y":0.75110006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.85416,"y":91.108765,"z":-90.63881},"screenPosition":{"x":0.39025158,"y":0.7220248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.826,"y":90.57241,"z":-92.646286},"screenPosition":{"x":0.34441495,"y":0.7132826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.63452,"y":92.10706,"z":-94.95493},"screenPosition":{"x":0.28943485,"y":0.72531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.42773,"y":96.03233,"z":-95.42231},"screenPosition":{"x":0.27430004,"y":0.7650047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.29428,"y":97.79556,"z":-93.6586},"screenPosition":{"x":0.3131699,"y":0.78599274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.16364,"y":98.15192,"z":-91.799194},"screenPosition":{"x":0.3557743,"y":0.7926596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.03583,"y":97.1014,"z":-89.84409},"screenPosition":{"x":0.40211323,"y":0.78500533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.51355,"y":94.33471,"z":-88.17304},"screenPosition":{"x":0.44380814,"y":0.75903755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.0411,"y":91.8251,"z":-88.48327},"screenPosition":{"x":0.43931967,"y":0.7328267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.21094,"y":89.121544,"z":-89.14101},"screenPosition":{"x":0.42702726,"y":0.7039906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.17905,"y":87.81089,"z":-90.09387},"screenPosition":{"x":0.4064452,"y":0.6889422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.57632,"y":88.120186,"z":-89.714134},"screenPosition":{"x":0.41489658,"y":0.69272035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.69986,"y":88.67777,"z":-90.633766},"screenPosition":{"x":0.39296916,"y":0.69705886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.6558,"y":90.81342,"z":-90.81911},"screenPosition":{"x":0.38641667,"y":0.71867913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.8909,"y":92.630974,"z":-90.70227},"screenPosition":{"x":0.38710845,"y":0.7376236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.52606,"y":93.35095,"z":-90.11},"screenPosition":{"x":0.4000229,"y":0.74598724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.03717,"y":93.79472,"z":-88.61724},"screenPosition":{"x":0.4340809,"y":0.7528991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.5859,"y":97.94189,"z":-88.33824},"screenPosition":{"x":0.4360197,"y":0.79608303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.25952,"y":99.33996,"z":-87.75202},"screenPosition":{"x":0.44814032,"y":0.811095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.29773,"y":102.76197,"z":-88.94664},"screenPosition":{"x":0.41673857,"y":0.8446961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.8405,"y":107.26032,"z":-87.68959},"screenPosition":{"x":0.44093525,"y":0.8930088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.77496,"y":107.99803,"z":-87.210686},"screenPosition":{"x":0.46788773,"y":0.9038403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.1386,"y":105.74475,"z":-83.67388},"screenPosition":{"x":0.5538053,"y":0.8895427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.35202,"y":102.21625,"z":-83.81967},"screenPosition":{"x":0.5358658,"y":0.8473537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.24475,"y":101.44921,"z":-85.89161},"screenPosition":{"x":0.4887919,"y":0.83611834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.93256,"y":101.0194,"z":-87.18494},"screenPosition":{"x":0.45935494,"y":0.8296091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.3028,"y":100.22961,"z":-88.77439},"screenPosition":{"x":0.4235239,"y":0.81873095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.22742,"y":100.773224,"z":-89.89346},"screenPosition":{"x":0.39699942,"y":0.82270575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.02795,"y":101.04064,"z":-90.11204},"screenPosition":{"x":0.39172548,"y":0.82495147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.1048,"y":102.39682,"z":-90.12413},"screenPosition":{"x":0.38990977,"y":0.839039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.06076,"y":104.53247,"z":-90.30947},"screenPosition":{"x":0.3833141,"y":0.8607141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.37045,"y":108.831696,"z":-90.28128},"screenPosition":{"x":0.3793147,"y":0.9049951},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-376.8416,"y":111.30281,"z":-92.39795},"screenPosition":{"x":0.34392452,"y":0.928619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.34378,"y":110.19515,"z":-93.41991},"screenPosition":{"x":0.30554137,"y":0.9134993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.90155,"y":109.840324,"z":-92.83469},"screenPosition":{"x":0.3191879,"y":0.911253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.58078,"y":108.42465,"z":-92.05708},"screenPosition":{"x":0.33869803,"y":0.8979416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.581,"y":105.68073,"z":-90.8685},"screenPosition":{"x":0.36914682,"y":0.8716267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.65433,"y":103.51868,"z":-88.63741},"screenPosition":{"x":0.42319518,"y":0.8525609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.6774,"y":108.73325,"z":-88.364716},"screenPosition":{"x":0.43903008,"y":0.9069593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.76605,"y":109.98512,"z":-89.958954},"screenPosition":{"x":0.38890597,"y":0.9192832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.21597,"y":109.14464,"z":-91.46481},"screenPosition":{"x":0.3516125,"y":0.90630525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.99115,"y":107.46883,"z":-93.59517},"screenPosition":{"x":0.3045738,"y":0.8849921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.99713,"y":107.11764,"z":-94.57322},"screenPosition":{"x":0.2819383,"y":0.8804335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.3685,"y":105.76509,"z":-96.1244},"screenPosition":{"x":0.24753793,"y":0.86401397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.40692,"y":106.443184,"z":-96.13044},"screenPosition":{"x":0.24704373,"y":0.8705361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0466,"y":104.91217,"z":-95.38506},"screenPosition":{"x":0.26555425,"y":0.85643107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.76654,"y":103.049095,"z":-94.53695},"screenPosition":{"x":0.28747332,"y":0.838264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.84586,"y":100.53585,"z":-93.283905},"screenPosition":{"x":0.31886828,"y":0.81479263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.60535,"y":98.78812,"z":-92.40356},"screenPosition":{"x":0.34111306,"y":0.7982304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.2726,"y":98.07483,"z":-89.669846},"screenPosition":{"x":0.4050889,"y":0.7953023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.5563,"y":97.626656,"z":-98.83345},"screenPosition":{"x":0.21012929,"y":0.777381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.26175,"y":95.125305,"z":-97.957794},"screenPosition":{"x":0.23224515,"y":0.75296116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.91516,"y":93.68877,"z":-95.78391},"screenPosition":{"x":0.26847517,"y":0.7403078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.8659,"y":93.15031,"z":-93.783485},"screenPosition":{"x":0.31530806,"y":0.7379953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.8172,"y":92.330475,"z":-91.76392},"screenPosition":{"x":0.36288783,"y":0.7328186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.7649,"y":95.94281,"z":-91.047775},"screenPosition":{"x":0.3755374,"y":0.7711422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.63834,"y":99.536026,"z":-91.41241},"screenPosition":{"x":0.36321944,"y":0.80752504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.203,"y":101.011185,"z":-92.955536},"screenPosition":{"x":0.32605466,"y":0.82006073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.48962,"y":102.24169,"z":-94.76257},"screenPosition":{"x":0.28283563,"y":0.8299585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.1362,"y":102.540665,"z":-96.14554},"screenPosition":{"x":0.2505375,"y":0.83080316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.06567,"y":103.295845,"z":-98.28094},"screenPosition":{"x":0.20034954,"y":0.8351277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.4226,"y":106.51511,"z":-99.14115},"screenPosition":{"x":0.1769784,"y":0.86686325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.65005,"y":109.52797,"z":-98.103676},"screenPosition":{"x":0.19770546,"y":0.8995372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.51828,"y":110.447075,"z":-96.28255},"screenPosition":{"x":0.23912677,"y":0.9115315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0732,"y":111.499115,"z":-95.79302},"screenPosition":{"x":0.24931142,"y":0.92310995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.87543,"y":110.9224,"z":-95.954185},"screenPosition":{"x":0.2460933,"y":0.9170846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.95715,"y":112.49014,"z":-96.982605},"screenPosition":{"x":0.2204203,"y":0.9318245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.35815,"y":113.57375,"z":-97.65747},"screenPosition":{"x":0.20364483,"y":0.941885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.64215,"y":113.46721,"z":-98.37162},"screenPosition":{"x":0.1872488,"y":0.9396364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.68454,"y":112.17568,"z":-98.24369},"screenPosition":{"x":0.19160375,"y":0.9265541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.56268,"y":110.77397,"z":-97.26665},"screenPosition":{"x":0.21570984,"y":0.91370815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.43973,"y":109.93501,"z":-96.32787},"screenPosition":{"x":0.23832211,"y":0.90659076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.47012,"y":109.34586,"z":-94.24385},"screenPosition":{"x":0.28714272,"y":0.9038916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.4302,"y":106.767975,"z":-93.10664},"screenPosition":{"x":0.31622422,"y":0.8792021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.832,"y":104.82628,"z":-92.5738},"screenPosition":{"x":0.33064443,"y":0.86008346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.7986,"y":101.61582,"z":-92.3955},"screenPosition":{"x":0.33823997,"y":0.82733816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.04816,"y":98.86157,"z":-92.969635},"screenPosition":{"x":0.328054,"y":0.7979322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.17786,"y":96.324036,"z":-93.67874},"screenPosition":{"x":0.31429625,"y":0.7708194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.3503,"y":94.95753,"z":-95.42936},"screenPosition":{"x":0.27529988,"y":0.75393444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.18918,"y":95.38255,"z":-98.047844},"screenPosition":{"x":0.22394183,"y":0.75313616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.6421,"y":97.3224,"z":-98.726944},"screenPosition":{"x":0.21272181,"y":0.7745598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.91168,"y":99.91233,"z":-99.63361},"screenPosition":{"x":0.18895736,"y":0.7997451},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-367.3179,"y":103.799576,"z":-101.29209},"screenPosition":{"x":0.14408465,"y":0.83683455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.25638,"y":105.781715,"z":-101.68834},"screenPosition":{"x":0.13510157,"y":0.85682076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.34555,"y":107.90285,"z":-100.317635},"screenPosition":{"x":0.14827636,"y":0.8792437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.85754,"y":110.527794,"z":-99.975174},"screenPosition":{"x":0.15382344,"y":0.90635103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.6103,"y":112.156555,"z":-99.324486},"screenPosition":{"x":0.16663624,"y":0.92461336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.43503,"y":114.92993,"z":-97.66956},"screenPosition":{"x":0.20653985,"y":0.95713294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.11703,"y":116.47741,"z":-100.52013},"screenPosition":{"x":0.15053946,"y":0.9687557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.37906,"y":116.319786,"z":-102.85394},"screenPosition":{"x":0.08180975,"y":0.9605629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.86276,"y":113.201904,"z":-102.16094},"screenPosition":{"x":0.09992576,"y":0.9307924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.219,"y":111.49606,"z":-100.682274},"screenPosition":{"x":0.1359584,"y":0.9156265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.37518,"y":110.339005,"z":-99.44132},"screenPosition":{"x":0.16590129,"y":0.9057237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.6924,"y":108.23644,"z":-97.97575},"screenPosition":{"x":0.20206042,"y":0.8864549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.7854,"y":104.1767,"z":-98.6214},"screenPosition":{"x":0.19224028,"y":0.8430086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.47357,"y":106.20944,"z":-101.08416},"screenPosition":{"x":0.13569486,"y":0.8579644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.54877,"y":108.409744,"z":-101.15366},"screenPosition":{"x":0.11762746,"y":0.8753396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.90796,"y":110.5035,"z":-101.93732},"screenPosition":{"x":0.09833822,"y":0.8957822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.22757,"y":112.481926,"z":-102.753204},"screenPosition":{"x":0.07976155,"y":0.91546947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.8665,"y":113.97621,"z":-103.215546},"screenPosition":{"x":0.07883895,"y":0.9334936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.18015,"y":116.30582,"z":-103.05338},"screenPosition":{"x":0.076087266,"y":0.9611482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.7457,"y":118.06594,"z":-103.01353},"screenPosition":{"x":0.09117279,"y":0.9810772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.14227,"y":119.14005,"z":-104.69948},"screenPosition":{"x":0.051031057,"y":0.98940855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.70038,"y":117.45408,"z":-103.61241},"screenPosition":{"x":0.06176691,"y":0.9722017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.77856,"y":115.503586,"z":-102.39765},"screenPosition":{"x":0.091962755,"y":0.95409286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.25128,"y":112.891266,"z":-104.177216},"screenPosition":{"x":0.067635536,"y":0.92513883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.3134,"y":116.21696,"z":-105.34146},"screenPosition":{"x":0.039350756,"y":0.95829636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.95453,"y":120.52211,"z":-103.527695},"screenPosition":{"x":0.060049757,"y":1.0038705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9105,"y":119.9139,"z":-102.52403},"screenPosition":{"x":0.083905846,"y":0.99923134},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-001319/brain-CB2B04-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.631744197660085,0.4018978347424907,-0.6628554888903863,0.0,0.3136412649386689,-0.9145054776807062,-0.25555603733751686,0.0,-0.7088923935623,-0.04645279024214022,-0.7037852745178974,0.0,-461.86100046188955,69.3783793215439,-168.27895188007903,1.0]},"baseImage":"20190824-001319/base.webp","version":0,"savedAt":1.566606023692E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-004011-v0.json b/data/mapping/BAAAHS/dwayman/20190824-004011-v0.json new file mode 100644 index 0000000000..4135e8a795 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-004011-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566607211725E12,"surfaces":[{"brainId":"CB6980","panelName":"6D","pixels":[{"modelPosition":{"x":-92.13851,"y":126.49344,"z":-106.969406},"screenPosition":{"x":0.57202876,"y":0.97979766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.61349,"y":126.60452,"z":-106.969406},"screenPosition":{"x":0.5659317,"y":0.9833842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.87101,"y":127.31145,"z":-105.49547},"screenPosition":{"x":0.54335994,"y":0.9647425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.62877,"y":129.15483,"z":-104.55973},"screenPosition":{"x":0.51023436,"y":0.9448394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.06033,"y":130.00035,"z":-105.56407},"screenPosition":{"x":0.47766584,"y":0.9605882},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-97.57725,"y":122.60966,"z":-106.139},"screenPosition":{"x":0.5248644,"y":1.0558088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.423195,"y":126.45558,"z":-107.139},"screenPosition":{"x":0.54613423,"y":1.0060258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.61924,"y":125.86894,"z":-106.09383},"screenPosition":{"x":0.5786315,"y":0.9682064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.00703,"y":128.04332,"z":-104.57973},"screenPosition":{"x":0.57272583,"y":0.9267091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.36709,"y":130.83836,"z":-102.961464},"screenPosition":{"x":0.5380783,"y":0.8854897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.51396,"y":132.51598,"z":-101.7351},"screenPosition":{"x":0.5371332,"y":0.84625596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.04935,"y":135.08417,"z":-100.13905},"screenPosition":{"x":0.51390165,"y":0.80271107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.82675,"y":135.6107,"z":-100.52502},"screenPosition":{"x":0.4534056,"y":0.8331928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.67026,"y":132.66185,"z":-102.58045},"screenPosition":{"x":0.46276256,"y":0.8959545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.79282,"y":130.31339,"z":-103.67509},"screenPosition":{"x":0.5125808,"y":0.91591316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.95234,"y":130.51724,"z":-103.107895},"screenPosition":{"x":0.5450806,"y":0.88773006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.04948,"y":132.34,"z":-101.626305},"screenPosition":{"x":0.5558513,"y":0.8375579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.37212,"y":135.63834,"z":-99.367935},"screenPosition":{"x":0.5421957,"y":0.7695598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.41886,"y":137.28288,"z":-98.45346},"screenPosition":{"x":0.51888037,"y":0.7474424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.18201,"y":138.64684,"z":-97.98455},"screenPosition":{"x":0.47691184,"y":0.745088},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-97.69159,"y":139.21283,"z":-98.30382},"screenPosition":{"x":0.41935286,"y":0.77256006},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-100.23904,"y":147.02516,"z":-93.5891},"screenPosition":{"x":0.33747986,"y":0.64674157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.81992,"y":146.63538,"z":-93.321335},"screenPosition":{"x":0.38089395,"y":0.62504566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.71709,"y":144.77316,"z":-94.36945},"screenPosition":{"x":0.4062932,"y":0.6509692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.42082,"y":143.11493,"z":-95.101944},"screenPosition":{"x":0.44462723,"y":0.66282403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.019936,"y":140.96161,"z":-96.2947},"screenPosition":{"x":0.4754965,"y":0.69124854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.136055,"y":137.47806,"z":-98.74112},"screenPosition":{"x":0.48515975,"y":0.7667465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.88004,"y":139.83896,"z":-97.77075},"screenPosition":{"x":0.42492214,"y":0.753745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.78934,"y":141.91565,"z":-96.400154},"screenPosition":{"x":0.41231793,"y":0.7139426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.53317,"y":144.09636,"z":-94.783516},"screenPosition":{"x":0.4129681,"y":0.66198516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.7003,"y":145.64015,"z":-93.34208},"screenPosition":{"x":0.43659446,"y":0.60903865},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-92.24495,"y":142.38309,"z":-95.400406},"screenPosition":{"x":0.46346137,"y":0.6663815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.29412,"y":141.76796,"z":-95.8098},"screenPosition":{"x":0.46692634,"y":0.67842823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.27225,"y":141.45593,"z":-96.315895},"screenPosition":{"x":0.4453883,"y":0.70090014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.034454,"y":142.82004,"z":-95.846756},"screenPosition":{"x":0.4034659,"y":0.69870573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.07588,"y":144.93565,"z":-94.77649},"screenPosition":{"x":0.36523348,"y":0.67593116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.79732,"y":147.15155,"z":-92.980644},"screenPosition":{"x":0.3777307,"y":0.6152423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.9366,"y":147.89285,"z":-91.90644},"screenPosition":{"x":0.41893238,"y":0.568599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.06551,"y":145.20375,"z":-93.377396},"screenPosition":{"x":0.45898202,"y":0.60349673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.93431,"y":143.03276,"z":-94.92849},"screenPosition":{"x":0.4629128,"y":0.6517989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.28791,"y":141.34727,"z":-96.08369},"screenPosition":{"x":0.46977732,"y":0.68639284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.32704,"y":138.58025,"z":-98.05022},"screenPosition":{"x":0.47561216,"y":0.7474953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.64217,"y":139.12004,"z":-96.981735},"screenPosition":{"x":0.5279862,"y":0.6977571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.506584,"y":142.34808,"z":-95.46326},"screenPosition":{"x":0.4605886,"y":0.6695032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.15376,"y":141.90016,"z":-96.16036},"screenPosition":{"x":0.43194363,"y":0.7003987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.26552,"y":140.25673,"z":-97.55672},"screenPosition":{"x":0.417562,"y":0.74926394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.79054,"y":138.02966,"z":-99.24472},"screenPosition":{"x":0.4032174,"y":0.8099808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.205376,"y":135.65878,"z":-100.704254},"screenPosition":{"x":0.43663734,"y":0.8435406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.63968,"y":134.45187,"z":-101.10072},"screenPosition":{"x":0.47520941,"y":0.84501046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.581375,"y":135.91148,"z":-99.832634},"screenPosition":{"x":0.49016395,"y":0.80006486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.76869,"y":138.32692,"z":-98.1304},"screenPosition":{"x":0.4839379,"y":0.747497},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-91.236435,"y":133.49818,"z":-101.050995},"screenPosition":{"x":0.534053,"y":0.8257513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.10612,"y":132.61935,"z":-101.60524},"screenPosition":{"x":0.5413609,"y":0.8410586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.56456,"y":133.42809,"z":-101.91091},"screenPosition":{"x":0.47091347,"y":0.8721469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.29492,"y":135.7881,"z":-100.63345},"screenPosition":{"x":0.43471682,"y":0.84195065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.28697,"y":137.57993,"z":-99.4616},"screenPosition":{"x":0.42301005,"y":0.80824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.52789,"y":139.74545,"z":-97.77804},"screenPosition":{"x":0.42975065,"y":0.75221574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.81972,"y":140.39148,"z":-96.94218},"screenPosition":{"x":0.4578066,"y":0.71757245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.91338,"y":139.09439,"z":-97.34552},"screenPosition":{"x":0.50104386,"y":0.7174542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.8818,"y":136.50969,"z":-98.87653},"screenPosition":{"x":0.53038466,"y":0.75748414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.99312,"y":135.64305,"z":-99.30694},"screenPosition":{"x":0.54670185,"y":0.7663142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.38002,"y":133.321,"z":-100.577515},"screenPosition":{"x":0.581254,"y":0.7964706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.061806,"y":131.28572,"z":-101.70579},"screenPosition":{"x":0.6101741,"y":0.8231385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.383194,"y":129.20625,"z":-102.960655},"screenPosition":{"x":0.632196,"y":0.8571973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.269516,"y":126.4773,"z":-104.87896},"screenPosition":{"x":0.63959324,"y":0.9161728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.97011,"y":125.43524,"z":-106.1252},"screenPosition":{"x":0.6019365,"y":0.9676797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.73259,"y":127.75516,"z":-105.03164},"screenPosition":{"x":0.55402625,"y":0.9467421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.63017,"y":130.80199,"z":-103.025444},"screenPosition":{"x":0.5351541,"y":0.8882759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.42274,"y":131.91069,"z":-101.963806},"screenPosition":{"x":0.5540858,"y":0.8482494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.95172,"y":132.6292,"z":-101.11684},"screenPosition":{"x":0.5789869,"y":0.8143567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.155,"y":132.73196,"z":-100.62237},"screenPosition":{"x":0.61156,"y":0.7884445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.752525,"y":131.88547,"z":-100.80832},"screenPosition":{"x":0.6459485,"y":0.7844036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.54149,"y":130.35289,"z":-101.47174},"screenPosition":{"x":0.68243754,"y":0.79460925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.17613,"y":127.56759,"z":-103.08282},"screenPosition":{"x":0.717084,"y":0.83559984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.673195,"y":125.32073,"z":-104.77948},"screenPosition":{"x":0.714015,"y":0.8906479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.42451,"y":123.50598,"z":-106.079895},"screenPosition":{"x":0.71600544,"y":0.9334211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.37976,"y":123.872795,"z":-107.139},"screenPosition":{"x":0.6929555,"y":0.9502469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.88711,"y":124.69308,"z":-107.139},"screenPosition":{"x":0.6456849,"y":0.96444374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.822044,"y":125.717804,"z":-106.969406},"screenPosition":{"x":0.6161866,"y":0.96339995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.24251,"y":127.57843,"z":-104.61383},"screenPosition":{"x":0.59685117,"y":0.9205516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.60654,"y":129.84575,"z":-103.03537},"screenPosition":{"x":0.58950657,"y":0.87240183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.772606,"y":131.42018,"z":-101.57375},"screenPosition":{"x":0.6127996,"y":0.8183187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.08058,"y":130.23314,"z":-101.78515},"screenPosition":{"x":0.66472846,"y":0.80965114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.87848,"y":127.33038,"z":-103.650696},"screenPosition":{"x":0.6863889,"y":0.86293477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.97453,"y":125.18574,"z":-105.21931},"screenPosition":{"x":0.6874335,"y":0.9126624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.21246,"y":124.87361,"z":-106.969406},"screenPosition":{"x":0.66569316,"y":0.9535012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.246925,"y":125.5833,"z":-106.969406},"screenPosition":{"x":0.62378216,"y":0.9603234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.2702,"y":127.47972,"z":-104.682556},"screenPosition":{"x":0.59712493,"y":0.92249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.13159,"y":129.77281,"z":-103.16325},"screenPosition":{"x":0.58350015,"y":0.8774637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.288994,"y":131.39914,"z":-101.8192},"screenPosition":{"x":0.5950009,"y":0.8319537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.86775,"y":132.3912,"z":-100.648315},"screenPosition":{"x":0.6293047,"y":0.78429794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.10077,"y":129.23622,"z":-102.28674},"screenPosition":{"x":0.6826753,"y":0.8196164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.104546,"y":126.967224,"z":-103.92249},"screenPosition":{"x":0.68583566,"y":0.8712105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.62552,"y":126.04427,"z":-104.910675},"screenPosition":{"x":0.66207016,"y":0.9104338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.779854,"y":125.551414,"z":-105.56184},"screenPosition":{"x":0.63960075,"y":0.93795544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.27706,"y":125.59035,"z":-106.969406},"screenPosition":{"x":0.62508065,"y":0.9697987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.91766,"y":120.399956,"z":-106.139},"screenPosition":{"x":0.6914834,"y":0.995867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.50689,"y":124.240845,"z":-106.969406},"screenPosition":{"x":0.70173067,"y":0.94020516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.324,"y":124.32744,"z":-105.52786},"screenPosition":{"x":0.7127899,"y":0.91489035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.42037,"y":125.307976,"z":-104.59639},"screenPosition":{"x":0.72855365,"y":0.87943685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.61998,"y":126.840256,"z":-103.32023},"screenPosition":{"x":0.7401041,"y":0.8356377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.246895,"y":129.11179,"z":-101.62639},"screenPosition":{"x":0.74161226,"y":0.78134495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.42902,"y":132.1074,"z":-100.00271},"screenPosition":{"x":0.69609576,"y":0.7436425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.404396,"y":130.42415,"z":-101.70984},"screenPosition":{"x":0.6597308,"y":0.8090244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.24757,"y":127.3226,"z":-103.406586},"screenPosition":{"x":0.7059083,"y":0.8492849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.107765,"y":127.33791,"z":-102.91683},"screenPosition":{"x":0.7432869,"y":0.8224349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.24685,"y":129.10861,"z":-101.32286},"screenPosition":{"x":0.7657728,"y":0.7648314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.5746,"y":132.03026,"z":-99.46417},"screenPosition":{"x":0.7419747,"y":0.71180713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.715965,"y":133.33823,"z":-99.242424},"screenPosition":{"x":0.6843365,"y":0.7225427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.156715,"y":130.82852,"z":-100.94942},"screenPosition":{"x":0.6958341,"y":0.77392274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.28309,"y":129.43698,"z":-101.41946},"screenPosition":{"x":0.7393032,"y":0.77586263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.85345,"y":132.83798,"z":-98.97908},"screenPosition":{"x":0.73396444,"y":0.69961375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.12857,"y":133.6575,"z":-99.096886},"screenPosition":{"x":0.6773002,"y":0.71999276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.34615,"y":124.60447,"z":-104.280685},"screenPosition":{"x":0.7942587,"y":0.85063565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.20815,"y":124.19794,"z":-104.67799},"screenPosition":{"x":0.78664726,"y":0.86559635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.97022,"y":122.80921,"z":-106.00731},"screenPosition":{"x":0.7619335,"y":0.91962737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.307175,"y":123.47511,"z":-106.08213},"screenPosition":{"x":0.71758264,"y":0.9329474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.45595,"y":126.58475,"z":-104.07327},"screenPosition":{"x":0.6957648,"y":0.87232476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.14664,"y":128.61548,"z":-102.699295},"screenPosition":{"x":0.6862456,"y":0.83175516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.17492,"y":130.30724,"z":-101.29277},"screenPosition":{"x":0.6987089,"y":0.7833868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.880974,"y":130.90724,"z":-100.39747},"screenPosition":{"x":0.7344178,"y":0.74472666},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-73.16113,"y":132.17947,"z":-99.15072},"screenPosition":{"x":0.7585034,"y":0.69771945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.180466,"y":130.76036,"z":-99.62242},"screenPosition":{"x":0.8065723,"y":0.6840768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.79553,"y":128.50609,"z":-100.88357},"screenPosition":{"x":0.83817637,"y":0.7137018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.2759,"y":126.268036,"z":-102.266335},"screenPosition":{"x":0.85468763,"y":0.7669262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.88292,"y":124.007454,"z":-103.83597},"screenPosition":{"x":0.8634057,"y":0.81568146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.37206,"y":122.1843,"z":-105.2546},"screenPosition":{"x":0.85716254,"y":0.86212736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.44848,"y":121.88843,"z":-106.969406},"screenPosition":{"x":0.83686256,"y":0.89712375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.65915,"y":122.63933,"z":-106.969406},"screenPosition":{"x":0.7935905,"y":0.9101198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.150475,"y":123.06849,"z":-105.865456},"screenPosition":{"x":0.7590123,"y":0.92050475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.13261,"y":126.34219,"z":-103.723946},"screenPosition":{"x":0.7372551,"y":0.8493315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-74.91752,"y":128.02356,"z":-102.13423},"screenPosition":{"x":0.764915,"y":0.79097295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.75293,"y":127.712975,"z":-101.85361},"screenPosition":{"x":0.8047363,"y":0.7700609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-68.69947,"y":127.010635,"z":-101.8459},"screenPosition":{"x":0.8458119,"y":0.7574789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.1277,"y":125.43889,"z":-102.6326},"screenPosition":{"x":0.874928,"y":0.77383125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.7092,"y":124.222755,"z":-103.21038},"screenPosition":{"x":0.90248173,"y":0.768241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.685326,"y":122.004364,"z":-104.350464},"screenPosition":{"x":0.9389946,"y":0.79638785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-61.90637,"y":119.32173,"z":-105.83126},"screenPosition":{"x":0.9784563,"y":0.82985646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.11939,"y":119.36827,"z":-107.139},"screenPosition":{"x":0.9550058,"y":0.88583297},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-69.66384,"y":117.62608,"z":-106.139},"screenPosition":{"x":0.8927266,"y":0.92402124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-71.77142,"y":121.73008,"z":-106.969406},"screenPosition":{"x":0.84663445,"y":0.89986724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.88643,"y":123.059044,"z":-104.76171},"screenPosition":{"x":0.84573776,"y":0.85052043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.94655,"y":124.70825,"z":-103.235054},"screenPosition":{"x":0.8699666,"y":0.7945407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.97155,"y":123.23935,"z":-103.892944},"screenPosition":{"x":0.90321845,"y":0.80554193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.2841,"y":120.68638,"z":-105.30302},"screenPosition":{"x":0.94017917,"y":0.83942515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-64.091995,"y":119.93405,"z":-106.969406},"screenPosition":{"x":0.9506371,"y":0.8696096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.077446,"y":119.82621,"z":-107.139},"screenPosition":{"x":0.9274928,"y":0.89027864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.91007,"y":120.722565,"z":-107.139},"screenPosition":{"x":0.87449425,"y":0.8957249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.388054,"y":121.40655,"z":-106.969406},"screenPosition":{"x":0.8662054,"y":0.89742225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.26591,"y":122.5788,"z":-104.98066},"screenPosition":{"x":0.8554239,"y":0.8533403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-67.34634,"y":122.75893,"z":-104.41688},"screenPosition":{"x":0.88997257,"y":0.8262344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-65.46335,"y":120.46926,"z":-105.625046},"screenPosition":{"x":0.927533,"y":0.85349655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-66.68194,"y":119.96758,"z":-107.139},"screenPosition":{"x":0.9180017,"y":0.8826582},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-74.94238,"y":118.74342,"z":-106.139},"screenPosition":{"x":0.8222257,"y":0.946879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.57156,"y":122.852715,"z":-106.969406},"screenPosition":{"x":0.78296375,"y":0.92298466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.70979,"y":123.74774,"z":-105.20155},"screenPosition":{"x":0.7716879,"y":0.88679177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.05492,"y":125.68854,"z":-103.833534},"screenPosition":{"x":0.76672006,"y":0.84464157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.687775,"y":127.488,"z":-102.29622},"screenPosition":{"x":0.7831223,"y":0.7906725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.535805,"y":125.28654,"z":-103.25287},"screenPosition":{"x":0.8352494,"y":0.8055358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-73.98311,"y":122.71244,"z":-105.46132},"screenPosition":{"x":0.8110563,"y":0.883255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.7564,"y":124.02534,"z":-104.87453},"screenPosition":{"x":0.7811753,"y":0.87339824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.99676,"y":125.93631,"z":-104.121155},"screenPosition":{"x":0.7299713,"y":0.86485404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.45386,"y":129.74931,"z":-101.69988},"screenPosition":{"x":0.69904923,"y":0.79624593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.935295,"y":130.71556,"z":-100.836586},"screenPosition":{"x":0.7111582,"y":0.76572084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-75.88249,"y":132.27216,"z":-99.505974},"screenPosition":{"x":0.7254082,"y":0.7189923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.96844,"y":133.80334,"z":-98.060356},"screenPosition":{"x":0.75010616,"y":0.6654571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-70.42344,"y":131.2438,"z":-99.3437},"screenPosition":{"x":0.7998689,"y":0.67839134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-69.67304,"y":128.94829,"z":-100.728745},"screenPosition":{"x":0.82142603,"y":0.7291636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-72.235405,"y":127.31461,"z":-102.18758},"screenPosition":{"x":0.80136544,"y":0.7814004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.939606,"y":140.67111,"z":-94.63867},"screenPosition":{"x":0.6216501,"y":0.5948791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.92188,"y":140.73576,"z":-95.05211},"screenPosition":{"x":0.585625,"y":0.61888796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.69634,"y":140.22095,"z":-95.81238},"screenPosition":{"x":0.55581504,"y":0.65187943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.90482,"y":137.2393,"z":-97.792206},"screenPosition":{"x":0.57305115,"y":0.71007806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.79023,"y":134.47383,"z":-99.27584},"screenPosition":{"x":0.6165105,"y":0.7443563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.73781,"y":135.07745,"z":-98.2623},"screenPosition":{"x":0.6609076,"y":0.6986885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.12416,"y":136.84683,"z":-96.859764},"screenPosition":{"x":0.6685136,"y":0.6516611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.64748,"y":139.92099,"z":-95.2369},"screenPosition":{"x":0.61814183,"y":0.6150173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.709335,"y":137.91342,"z":-97.01633},"screenPosition":{"x":0.59481764,"y":0.6787891},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.91788,"y":134.45258,"z":-99.15644},"screenPosition":{"x":0.6267697,"y":0.7368263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.39755,"y":134.04355,"z":-98.88577},"screenPosition":{"x":0.67178005,"y":0.71531314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.2172,"y":135.60788,"z":-97.37782},"screenPosition":{"x":0.6994385,"y":0.65890026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.193085,"y":138.42134,"z":-95.53604},"screenPosition":{"x":0.68119246,"y":0.6056242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.7759,"y":140.82344,"z":-94.20855},"screenPosition":{"x":0.6464745,"y":0.5737019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.22479,"y":141.89342,"z":-93.8837},"screenPosition":{"x":0.61019385,"y":0.5742348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.59022,"y":142.37453,"z":-94.08359},"screenPosition":{"x":0.5668516,"y":0.5936288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.86272,"y":141.41496,"z":-95.057724},"screenPosition":{"x":0.5460463,"y":0.6309538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.61153,"y":140.10292,"z":-96.18211},"screenPosition":{"x":0.5338141,"y":0.6704976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.26829,"y":138.2376,"z":-97.65392},"screenPosition":{"x":0.52632546,"y":0.7196998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.00655,"y":135.17502,"z":-99.76756},"screenPosition":{"x":0.5375688,"y":0.7832268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.81156,"y":133.0621,"z":-100.35421},"screenPosition":{"x":0.6136189,"y":0.77962637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.58369,"y":135.20366,"z":-98.61467},"screenPosition":{"x":0.6261052,"y":0.7203823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.95631,"y":136.55342,"z":-97.48419},"screenPosition":{"x":0.63656414,"y":0.68104196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.38321,"y":139.07271,"z":-95.90352},"screenPosition":{"x":0.61494756,"y":0.637243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.15266,"y":139.90436,"z":-95.47775},"screenPosition":{"x":0.6002842,"y":0.6280642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.77991,"y":143.03743,"z":-93.3739},"screenPosition":{"x":0.5840943,"y":0.5658101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-79.12456,"y":143.16054,"z":-92.88775},"screenPosition":{"x":0.62037593,"y":0.52615833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.07911,"y":140.63756,"z":-94.223526},"screenPosition":{"x":0.6594441,"y":0.55929315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-76.193085,"y":138.42134,"z":-95.53604},"screenPosition":{"x":0.68119246,"y":0.6056242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-77.19322,"y":136.59924,"z":-96.879265},"screenPosition":{"x":0.6809977,"y":0.64817655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.07925,"y":134.74187,"z":-98.22812},"screenPosition":{"x":0.6829164,"y":0.69098824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.46589,"y":133.8023,"z":-99.20662},"screenPosition":{"x":0.6606166,"y":0.7289014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.512924,"y":131.8186,"z":-100.509796},"screenPosition":{"x":0.67312294,"y":0.7667189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.98145,"y":130.15503,"z":-101.97382},"screenPosition":{"x":0.6544829,"y":0.8187157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.52601,"y":132.30356,"z":-100.95895},"screenPosition":{"x":0.60991013,"y":0.7995467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.79774,"y":134.48051,"z":-99.57821},"screenPosition":{"x":0.5925031,"y":0.7612125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.92471,"y":136.72005,"z":-98.13448},"screenPosition":{"x":0.5760956,"y":0.7197003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.315956,"y":139.81491,"z":-96.32512},"screenPosition":{"x":0.53919625,"y":0.67330414},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-95.68403,"y":140.04684,"z":-97.4522},"screenPosition":{"x":0.4378228,"y":0.73984474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.04971,"y":142.23526,"z":-95.77275},"screenPosition":{"x":0.4429151,"y":0.68473804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.42636,"y":142.16508,"z":-95.41775},"screenPosition":{"x":0.47469205,"y":0.6638693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.5669,"y":141.61278,"z":-95.34168},"screenPosition":{"x":0.51246357,"y":0.65009856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.52053,"y":140.85864,"z":-95.52169},"screenPosition":{"x":0.5417688,"y":0.6467813},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-86.04183,"y":131.8077,"z":-101.36172},"screenPosition":{"x":0.6069864,"y":0.8131574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.81113,"y":129.84569,"z":-101.99711},"screenPosition":{"x":0.67024374,"y":0.81421304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.97665,"y":131.93733,"z":-100.1975},"screenPosition":{"x":0.69064087,"y":0.75142777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-78.043365,"y":134.41803,"z":-98.434204},"screenPosition":{"x":0.68530303,"y":0.6965735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-81.16243,"y":136.7129,"z":-97.4115},"screenPosition":{"x":0.63312835,"y":0.6798896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.821754,"y":136.16173,"z":-98.177925},"screenPosition":{"x":0.60501516,"y":0.7127833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.02671,"y":135.90732,"z":-98.68104},"screenPosition":{"x":0.5801368,"y":0.7356501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.05189,"y":136.28436,"z":-98.591354},"screenPosition":{"x":0.56564945,"y":0.7377951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.75071,"y":136.10901,"z":-99.27107},"screenPosition":{"x":0.52265203,"y":0.77239287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.78301,"y":132.90392,"z":-101.52276},"screenPosition":{"x":0.5312898,"y":0.84080976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.463135,"y":130.38908,"z":-102.81128},"screenPosition":{"x":0.5757022,"y":0.86939883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.63313,"y":130.5925,"z":-102.24597},"screenPosition":{"x":0.60814357,"y":0.8416214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.56643,"y":145.1488,"z":-92.72585},"screenPosition":{"x":0.5130492,"y":0.5664734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.44769,"y":146.45457,"z":-91.549034},"screenPosition":{"x":0.5297384,"y":0.52391845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.307556,"y":147.85335,"z":-90.30818},"screenPosition":{"x":0.5509691,"y":0.46729243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-80.64128,"y":145.33234,"z":-91.700615},"screenPosition":{"x":0.5880263,"y":0.4987217},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-80.959465,"y":141.0473,"z":-94.54873},"screenPosition":{"x":0.6069979,"y":0.5964103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-83.39908,"y":139.9229,"z":-95.65609},"screenPosition":{"x":0.5852836,"y":0.6382585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.30711,"y":140.27895,"z":-95.867805},"screenPosition":{"x":0.54812646,"y":0.6558956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.29516,"y":141.70215,"z":-95.39456},"screenPosition":{"x":0.50317776,"y":0.6545561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.5921,"y":144.65999,"z":-93.66031},"screenPosition":{"x":0.46820295,"y":0.6096465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.891975,"y":147.13791,"z":-92.08726},"screenPosition":{"x":0.44830993,"y":0.5654804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.01348,"y":148.44785,"z":-90.791626},"screenPosition":{"x":0.47404316,"y":0.516483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.49795,"y":147.6103,"z":-90.80165},"screenPosition":{"x":0.52152514,"y":0.50254244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.65332,"y":144.83139,"z":-92.33532},"screenPosition":{"x":0.56185055,"y":0.539358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-84.58387,"y":142.84816,"z":-93.92599},"screenPosition":{"x":0.55187047,"y":0.5931004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.52329,"y":141.75293,"z":-95.09065},"screenPosition":{"x":0.5239977,"y":0.6386262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.50427,"y":142.75629,"z":-94.89062},"screenPosition":{"x":0.48180437,"y":0.64491695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.088684,"y":145.58124,"z":-93.28712},"screenPosition":{"x":0.44428185,"y":0.6050316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.99394,"y":148.102,"z":-91.47297},"screenPosition":{"x":0.44074395,"y":0.5482171},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-85.43055,"y":149.62328,"z":-89.62903},"screenPosition":{"x":0.4971321,"y":0.47245985},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-84.246185,"y":144.94513,"z":-92.504395},"screenPosition":{"x":0.54208744,"y":0.5506873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.202324,"y":144.21823,"z":-93.27818},"screenPosition":{"x":0.52352566,"y":0.5809473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.196754,"y":143.81212,"z":-93.84824},"screenPosition":{"x":0.50235337,"y":0.6053363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.64721,"y":144.46594,"z":-93.79551},"screenPosition":{"x":0.46881622,"y":0.613713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.07339,"y":141.24187,"z":-96.272575},"screenPosition":{"x":0.4611018,"y":0.6950291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.13762,"y":137.36304,"z":-98.205315},"screenPosition":{"x":0.5336464,"y":0.7350915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.19781,"y":140.66815,"z":-95.59683},"screenPosition":{"x":0.5468415,"y":0.6475706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.79032,"y":143.01955,"z":-94.151146},"screenPosition":{"x":0.5244032,"y":0.6085327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.29295,"y":144.35936,"z":-93.50542},"screenPosition":{"x":0.49764028,"y":0.5959706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.57538,"y":146.47354,"z":-92.32013},"screenPosition":{"x":0.46840474,"y":0.56693816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.87738,"y":148.07082,"z":-91.47553},"screenPosition":{"x":0.4423408,"y":0.54782206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.90557,"y":149.75777,"z":-90.68331},"screenPosition":{"x":0.40702647,"y":0.5331214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.566444,"y":150.99028,"z":-90.28465},"screenPosition":{"x":0.36713564,"y":0.5324176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.15789,"y":151.16415,"z":-90.567024},"screenPosition":{"x":0.33505645,"y":0.55106},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-100.675156,"y":146.82768,"z":-93.78476},"screenPosition":{"x":0.32781002,"y":0.6574335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.28278,"y":146.34093,"z":-93.58443},"screenPosition":{"x":0.37732214,"y":0.63446665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.82087,"y":147.45847,"z":-92.47814},"screenPosition":{"x":0.39930624,"y":0.59271157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.51628,"y":149.8173,"z":-90.73773},"screenPosition":{"x":0.39935926,"y":0.5371193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.882866,"y":152.94514,"z":-89.055855},"screenPosition":{"x":0.35048077,"y":0.49821886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.67068,"y":154.15135,"z":-88.540985},"screenPosition":{"x":0.3211939,"y":0.49058947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.15476,"y":153.42369,"z":-89.54873},"screenPosition":{"x":0.28448653,"y":0.53370917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.236176,"y":150.11205,"z":-91.72474},"screenPosition":{"x":0.29974535,"y":0.60065943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.574135,"y":150.18901,"z":-91.4205},"screenPosition":{"x":0.32457468,"y":0.5814355},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-92.660164,"y":148.85997,"z":-91.23236},"screenPosition":{"x":0.41586775,"y":0.54797816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.98161,"y":152.99649,"z":-88.57901},"screenPosition":{"x":0.38477454,"y":0.47270727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.523346,"y":152.51039,"z":-89.74334},"screenPosition":{"x":0.3218255,"y":0.5287568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.03925,"y":149.34763,"z":-91.43008},"screenPosition":{"x":0.37235913,"y":0.56728685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.57729,"y":149.1499,"z":-91.03029},"screenPosition":{"x":0.41494745,"y":0.5418085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.64247,"y":150.64896,"z":-89.6025},"screenPosition":{"x":0.4400981,"y":0.48874265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.94012,"y":152.67828,"z":-88.01659},"screenPosition":{"x":0.44705063,"y":0.43606123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.97553,"y":155.1896,"z":-86.68689},"screenPosition":{"x":0.40621403,"y":0.4059059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.55885,"y":155.78122,"z":-86.69509},"screenPosition":{"x":0.37147638,"y":0.41660082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.83437,"y":154.841,"z":-87.65704},"screenPosition":{"x":0.35050744,"y":0.45358628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.410324,"y":153.29424,"z":-88.90838},"screenPosition":{"x":0.34191707,"y":0.49606192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.94437,"y":153.6625,"z":-89.05496},"screenPosition":{"x":0.30921024,"y":0.5105853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.90167,"y":155.18306,"z":-88.51342},"screenPosition":{"x":0.256501,"y":0.5131771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.70737,"y":156.15234,"z":-86.780914},"screenPosition":{"x":0.34338495,"y":0.4277755},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.48175,"y":154.84502,"z":-88.36452},"screenPosition":{"x":0.29500562,"y":0.492825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.26418,"y":158.22653,"z":-86.42765},"screenPosition":{"x":0.2516112,"y":0.4440718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.981476,"y":160.46605,"z":-84.76855},"screenPosition":{"x":0.25201154,"y":0.3910199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.833694,"y":161.41843,"z":-84.27655},"screenPosition":{"x":0.2357487,"y":0.38027328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.40111,"y":162.9124,"z":-83.38721},"screenPosition":{"x":0.21894999,"y":0.35688224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.59093,"y":164.40588,"z":-82.44048},"screenPosition":{"x":0.20684578,"y":0.33031568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.29198,"y":166.27911,"z":-81.17098},"screenPosition":{"x":0.19807418,"y":0.2924507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.92242,"y":168.4004,"z":-79.88143},"screenPosition":{"x":0.17657457,"y":0.25776896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.82347,"y":170.0134,"z":-78.812515},"screenPosition":{"x":0.16719078,"y":0.22654146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.8728,"y":171.97075,"z":-77.541275},"screenPosition":{"x":0.15364696,"y":0.18999988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.6481,"y":173.16876,"z":-77.02984},"screenPosition":{"x":0.12456326,"y":0.18241897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.46401,"y":175.05836,"z":-75.7672},"screenPosition":{"x":0.11431289,"y":0.1452171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.72178,"y":176.72627,"z":-74.869705},"screenPosition":{"x":0.08831161,"y":0.12439454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.13632,"y":177.85774,"z":-74.193825},"screenPosition":{"x":0.0759096,"y":0.10655768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.252014,"y":179.99327,"z":-72.96912},"screenPosition":{"x":0.044438627,"y":0.08418013},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-102.51363,"y":175.30931,"z":-75.45804},"screenPosition":{"x":0.1240044,"y":0.13244376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.77835,"y":173.98741,"z":-76.20931},"screenPosition":{"x":0.14195478,"y":0.15153022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.51905,"y":172.31792,"z":-77.10761},"screenPosition":{"x":0.16751952,"y":0.17199887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.814896,"y":171.30928,"z":-77.65899},"screenPosition":{"x":0.18282399,"y":0.18527052},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-97.17641,"y":167.93346,"z":-79.46133},"screenPosition":{"x":0.23630334,"y":0.22642846},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-94.89295,"y":165.47032,"z":-80.72164},"screenPosition":{"x":0.28707528,"y":0.24347663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.21435,"y":163.06657,"z":-82.03558},"screenPosition":{"x":0.32288057,"y":0.2738441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.699165,"y":161.38606,"z":-83.05478},"screenPosition":{"x":0.33292416,"y":0.31209305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.061775,"y":159.69513,"z":-84.36769},"screenPosition":{"x":0.32775298,"y":0.3554845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.72131,"y":158.28554,"z":-85.542175},"screenPosition":{"x":0.31722894,"y":0.39611325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.26617,"y":157.73038,"z":-86.293724},"screenPosition":{"x":0.29050845,"y":0.4281138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.730804,"y":158.35207,"z":-86.41694},"screenPosition":{"x":0.2451691,"y":0.4456639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.404045,"y":161.63545,"z":-84.3747},"screenPosition":{"x":0.21558209,"y":0.38945556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.35887,"y":163.01787,"z":-82.85346},"screenPosition":{"x":0.2545701,"y":0.329157},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-94.5091,"y":158.57832,"z":-85.16568},"screenPosition":{"x":0.3298283,"y":0.38034108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.215004,"y":156.1439,"z":-87.016785},"screenPosition":{"x":0.325444,"y":0.44068837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.64545,"y":156.44466,"z":-87.34446},"screenPosition":{"x":0.28251395,"y":0.46403506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.912254,"y":159.022,"z":-86.00697},"screenPosition":{"x":0.2385698,"y":0.43457294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.16309,"y":161.13438,"z":-84.35966},"screenPosition":{"x":0.24555849,"y":0.37995568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.30295,"y":161.90903,"z":-83.41655},"screenPosition":{"x":0.27447915,"y":0.34114116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.91364,"y":160.64613,"z":-83.87655},"screenPosition":{"x":0.3113195,"y":0.34475157},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-99.57579,"y":157.97931,"z":-86.3312},"screenPosition":{"x":0.27323577,"y":0.43449685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.15147,"y":160.80377,"z":-85.032265},"screenPosition":{"x":0.20835318,"y":0.41577524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.64126,"y":162.11238,"z":-84.09936},"screenPosition":{"x":0.2095608,"y":0.38246965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.33963,"y":163.96478,"z":-82.537476},"screenPosition":{"x":0.2247238,"y":0.32806134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.92584,"y":165.80664,"z":-81.27092},"screenPosition":{"x":0.21773136,"y":0.28991318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.442924,"y":166.16096,"z":-80.66006},"screenPosition":{"x":0.24491307,"y":0.26219344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.90943,"y":168.84886,"z":-78.97527},"screenPosition":{"x":0.22152297,"y":0.21536158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.125374,"y":170.67805,"z":-78.11881},"screenPosition":{"x":0.18306221,"y":0.19963232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-102.92393,"y":170.10715,"z":-78.9194},"screenPosition":{"x":0.15337634,"y":0.23404577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.91667,"y":172.69571,"z":-77.53274},"screenPosition":{"x":0.10682152,"y":0.21037921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.16715,"y":173.515,"z":-76.42456},"screenPosition":{"x":0.15189731,"y":0.15490034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.78243,"y":170.99385,"z":-77.8601},"screenPosition":{"x":0.18513596,"y":0.19082277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.56351,"y":170.04524,"z":-78.75198},"screenPosition":{"x":0.17002335,"y":0.22370525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.644936,"y":166.7856,"z":-80.89402},"screenPosition":{"x":0.19077621,"y":0.28598765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.10928,"y":167.74042,"z":-79.88278},"screenPosition":{"x":0.21450248,"y":0.24642105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.0095,"y":170.64658,"z":-78.12167},"screenPosition":{"x":0.18461208,"y":0.19921568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.0937,"y":157.84715,"z":-85.57989},"screenPosition":{"x":0.33954558,"y":0.39061388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.057434,"y":156.22542,"z":-86.481064},"screenPosition":{"x":0.3626217,"y":0.41243312},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-94.88344,"y":152.05417,"z":-89.48524},"screenPosition":{"x":0.3682802,"y":0.506571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.43939,"y":151.90799,"z":-89.97128},"screenPosition":{"x":0.33873308,"y":0.53095067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.65911,"y":153.39482,"z":-89.49186},"screenPosition":{"x":0.29050493,"y":0.53014094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.4993,"y":155.69804,"z":-88.11549},"screenPosition":{"x":0.26530305,"y":0.4938013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.59243,"y":157.94229,"z":-86.51071},"screenPosition":{"x":0.26134408,"y":0.4437952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.93222,"y":159.79242,"z":-85.353905},"screenPosition":{"x":0.24510022,"y":0.4117697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-101.87759,"y":161.28699,"z":-84.52193},"screenPosition":{"x":0.22396989,"y":0.3915742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.59557,"y":163.51915,"z":-82.86772},"screenPosition":{"x":0.2245686,"y":0.3386225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-99.45656,"y":165.26868,"z":-81.550674},"screenPosition":{"x":0.22663972,"y":0.2959845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.548325,"y":166.2263,"z":-80.48068},"screenPosition":{"x":0.2550466,"y":0.25331822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.628044,"y":165.09097,"z":-80.929},"screenPosition":{"x":0.29272595,"y":0.24826911},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-92.00363,"y":161.19817,"z":-83.07125},"screenPosition":{"x":0.35021973,"y":0.29703122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.79173,"y":159.32794,"z":-84.10794},"screenPosition":{"x":0.37656906,"y":0.32219964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.953896,"y":157.45393,"z":-85.20425},"screenPosition":{"x":0.39155236,"y":0.36301097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.4905,"y":155.57544,"z":-86.3607},"screenPosition":{"x":0.4094586,"y":0.39452592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.43235,"y":154.4646,"z":-86.92476},"screenPosition":{"x":0.42940745,"y":0.40652904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.7307,"y":152.53816,"z":-88.38172},"screenPosition":{"x":0.42659968,"y":0.45385173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-89.62237,"y":149.39806,"z":-90.41667},"screenPosition":{"x":0.44857848,"y":0.5121691},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-98.410576,"y":145.49124,"z":-94.31186},"screenPosition":{"x":0.3694108,"y":0.660209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.1276,"y":148.65504,"z":-92.201645},"screenPosition":{"x":0.35194692,"y":0.5981346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.638756,"y":149.86525,"z":-91.030716},"screenPosition":{"x":0.3736838,"y":0.5542516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.04408,"y":150.16663,"z":-90.590164},"screenPosition":{"x":0.3907397,"y":0.53506017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.91164,"y":150.17522,"z":-90.411514},"screenPosition":{"x":0.4041952,"y":0.5253345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.75009,"y":152.04395,"z":-89.01316},"screenPosition":{"x":0.4057501,"y":0.48025763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.971756,"y":153.88626,"z":-87.38502},"screenPosition":{"x":0.42678073,"y":0.4219971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.93964,"y":152.24431,"z":-87.994446},"screenPosition":{"x":0.47378907,"y":0.4273246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.395874,"y":149.30304,"z":-89.83295},"screenPosition":{"x":0.4996442,"y":0.47819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-86.808365,"y":147.39798,"z":-91.29339},"screenPosition":{"x":0.49534464,"y":0.52609247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.54216,"y":147.04439,"z":-92.09491},"screenPosition":{"x":0.45310053,"y":0.5642944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-93.170006,"y":147.95528,"z":-91.90133},"screenPosition":{"x":0.41573706,"y":0.5693828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.061066,"y":151.01878,"z":-90.34161},"screenPosition":{"x":0.36107278,"y":0.53601205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.00196,"y":153.37404,"z":-88.48825},"screenPosition":{"x":0.37010762,"y":0.47421682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-91.1452,"y":154.16019,"z":-87.53815},"screenPosition":{"x":0.39902967,"y":0.43522063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.159035,"y":153.66779,"z":-87.40357},"screenPosition":{"x":0.43791935,"y":0.4192454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-87.283646,"y":151.46706,"z":-88.707596},"screenPosition":{"x":0.46286586,"y":0.45335597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-85.27218,"y":148.85516,"z":-90.10666},"screenPosition":{"x":0.50405014,"y":0.48555997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-88.12285,"y":148.06155,"z":-91.06071},"screenPosition":{"x":0.47527203,"y":0.5246532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-90.22649,"y":147.27231,"z":-91.89776},"screenPosition":{"x":0.45537063,"y":0.5573786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-92.55275,"y":147.47772,"z":-92.119},"screenPosition":{"x":0.42625183,"y":0.5731515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-94.99896,"y":147.71463,"z":-92.338005},"screenPosition":{"x":0.39548823,"y":0.5894077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-97.35434,"y":147.40472,"z":-92.90036},"screenPosition":{"x":0.3694329,"y":0.6151203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.93056,"y":145.00168,"z":-94.71116},"screenPosition":{"x":0.36651343,"y":0.6735276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.89455,"y":143.30693,"z":-95.50727},"screenPosition":{"x":0.40189683,"y":0.6885881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-95.142456,"y":141.05795,"z":-96.70886},"screenPosition":{"x":0.4376328,"y":0.7157556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-96.64527,"y":139.77663,"z":-97.77561},"screenPosition":{"x":0.42813277,"y":0.75296664},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-98.77073,"y":136.33644,"z":-100.347916},"screenPosition":{"x":0.41752768,"y":0.83893013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-98.81204,"y":134.42712,"z":-102.78683},"screenPosition":{"x":0.4395311,"y":0.8834425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-100.16122,"y":132.3542,"z":-103.46055},"screenPosition":{"x":0.4355653,"y":0.92563266},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-97.40466,"y":122.766205,"z":-106.139},"screenPosition":{"x":0.5262204,"y":1.0534652},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-004011/brain-CB6980-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9624171069157217,0.27154465417277884,0.004100378782243688,0.0,0.21998621116809167,0.7706508774756311,0.5980830142563384,0.0,0.159246284766332,0.5765073510686795,-0.8014236675765785,0.0,-73.08837301247802,215.1064674289138,-178.948608728382,1.0]},"baseImage":"20190824-004011/base.webp","version":0,"savedAt":1.566607419597E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-011012-v0.json b/data/mapping/BAAAHS/dwayman/20190824-011012-v0.json new file mode 100644 index 0000000000..c30e3eb4fe --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-011012-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566609012323E12,"surfaces":[{"brainId":"CB25A4","panelName":"14D","pixels":[{"modelPosition":{"x":-131.92574,"y":84.89078,"z":-102.58799},"screenPosition":{"x":0.058588296,"y":0.10462798},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-130.84354,"y":81.74944,"z":-101.55076},"screenPosition":{"x":0.10397392,"y":0.13193877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.8658,"y":79.29341,"z":-100.673355},"screenPosition":{"x":0.12422215,"y":0.15746689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.93126,"y":77.06616,"z":-99.87422},"screenPosition":{"x":0.14130999,"y":0.1802244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.18053,"y":75.16597,"z":-99.17763},"screenPosition":{"x":0.15264934,"y":0.20076656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.57051,"y":73.364006,"z":-98.505295},"screenPosition":{"x":0.16086523,"y":0.22116914},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-131.05211,"y":69.34713,"z":-97.11275},"screenPosition":{"x":0.20346677,"y":0.25995094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.82555,"y":67.51131,"z":-96.47552},"screenPosition":{"x":0.2225583,"y":0.27747035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.89096,"y":65.287155,"z":-95.67749},"screenPosition":{"x":0.23986633,"y":0.30050755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.07524,"y":63.04704,"z":-94.86468},"screenPosition":{"x":0.25525436,"y":0.32432154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.94603,"y":61.083817,"z":-94.174576},"screenPosition":{"x":0.27379778,"y":0.3437396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.91414,"y":58.99132,"z":-93.43094},"screenPosition":{"x":0.29174685,"y":0.3649974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.63873,"y":57.02451,"z":-92.674225},"screenPosition":{"x":0.29520214,"y":0.38837504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.73161,"y":54.82562,"z":-91.959625},"screenPosition":{"x":0.32961625,"y":0.4068108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.87262,"y":52.361076,"z":-91.0701},"screenPosition":{"x":0.34755886,"y":0.43261927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.89946,"y":50.69693,"z":-90.39817},"screenPosition":{"x":0.34307685,"y":0.454208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.43504,"y":48.903355,"z":-89.79421},"screenPosition":{"x":0.3662522,"y":0.47048345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.50034,"y":46.6829,"z":-88.99751},"screenPosition":{"x":0.38353154,"y":0.49348232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.20981,"y":44.09584,"z":-87.94428},"screenPosition":{"x":0.374543,"y":0.5275393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.3589,"y":42.40551,"z":-87.25366},"screenPosition":{"x":0.36809835,"y":0.54994583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.65422,"y":40.650547,"z":-86.681854},"screenPosition":{"x":0.39522815,"y":0.5647249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.40233,"y":38.78711,"z":-85.9602},"screenPosition":{"x":0.39737895,"y":0.587144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.86887,"y":36.73353,"z":-85.19229},"screenPosition":{"x":0.40610877,"y":0.6101855},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-135.59612,"y":32.19091,"z":-83.51697},"screenPosition":{"x":0.43088514,"y":0.6599143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.5743,"y":30.867378,"z":-82.97021},"screenPosition":{"x":0.42444003,"y":0.6778023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.95471,"y":28.357716,"z":-82.04627},"screenPosition":{"x":0.4385035,"y":0.705161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.08498,"y":26.471617,"z":-81.363815},"screenPosition":{"x":0.4518472,"y":0.7250295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.32396,"y":23.86837,"z":-80.41734},"screenPosition":{"x":0.46920964,"y":0.75271595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.91463,"y":21.852104,"z":-79.57672},"screenPosition":{"x":0.4574174,"y":0.7797918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.45056,"y":20.839264,"z":-79.02153},"screenPosition":{"x":0.42080173,"y":0.8020556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.31659,"y":22.746597,"z":-79.5588},"screenPosition":{"x":0.37169215,"y":0.7908524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.52704,"y":25.01636,"z":-80.65807},"screenPosition":{"x":0.42039853,"y":0.7507782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.69376,"y":21.94193,"z":-79.70217},"screenPosition":{"x":0.4786183,"y":0.7740628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.20502,"y":18.825588,"z":-78.55192},"screenPosition":{"x":0.49538833,"y":0.8082081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.80647,"y":16.875156,"z":-78.79836},"screenPosition":{"x":0.48153788,"y":0.83153504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.34444,"y":16.619555,"z":-78.58954},"screenPosition":{"x":0.4562425,"y":0.8409922},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.49188563,"y":1.1757778},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.39559346,"y":1.2180947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.36263,"y":16.497059,"z":-76.94439},"screenPosition":{"x":0.3445584,"y":0.88274753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.7973,"y":19.359272,"z":-77.93165},"screenPosition":{"x":0.30224165,"y":0.8491277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.00182,"y":21.123356,"z":-78.77455},"screenPosition":{"x":0.33730337,"y":0.8194011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.44708,"y":18.916609,"z":-78.25975},"screenPosition":{"x":0.41900575,"y":0.8261524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.61653,"y":16.241947,"z":-78.28103},"screenPosition":{"x":0.41887265,"y":0.85496366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.02243,"y":15.842098,"z":-77.95436},"screenPosition":{"x":0.38602322,"y":0.8749169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.81252,"y":15.378403,"z":-77.57552},"screenPosition":{"x":0.33341247,"y":0.8869147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.7141,"y":16.916292,"z":-76.913925},"screenPosition":{"x":0.28823847,"y":0.8833935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.49585,"y":18.260527,"z":-77.25687},"screenPosition":{"x":0.2453083,"y":0.87757415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.81784,"y":18.455988,"z":-77.14887},"screenPosition":{"x":0.20228909,"y":0.8859069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.48569,"y":19.06829,"z":-77.16303},"screenPosition":{"x":0.14964138,"y":0.8915156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.52435,"y":18.91128,"z":-76.87453},"screenPosition":{"x":0.09695671,"y":0.90633863},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-161.98056,"y":13.189949,"z":-75.78757},"screenPosition":{"x":0.120981336,"y":0.97101915},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.031062732,"y":1.2811037},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-168.81523,"y":13.977732,"z":76.74915},"screenPosition":{"x":0.24145319,"y":1.2599952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.08728,"y":16.540152,"z":77.43995},"screenPosition":{"x":0.2763206,"y":1.2346474},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-166.75719,"y":12.396102,"z":-75.139},"screenPosition":{"x":0.047801018,"y":1.0045743},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":-0.045039225,"y":1.279683},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.017798232,"y":1.2656337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.73834,"y":14.304802,"z":-75.29223},"screenPosition":{"x":0.1580639,"y":0.9524722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.555,"y":17.127573,"z":-76.2362},"screenPosition":{"x":0.11104251,"y":0.92502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.71675,"y":19.23467,"z":-76.975105},"screenPosition":{"x":0.09074103,"y":0.9040555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.3754,"y":21.260143,"z":-77.64689},"screenPosition":{"x":0.06290737,"y":0.8852684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.90033,"y":23.904346,"z":-78.549515},"screenPosition":{"x":0.03089836,"y":0.8583617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.37898,"y":25.934616,"z":-79.389824},"screenPosition":{"x":0.030065047,"y":0.8314285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.37898,"y":27.995466,"z":-80.20114},"screenPosition":{"x":0.029282799,"y":0.8061458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.06476,"y":29.748692,"z":-80.92683},"screenPosition":{"x":0.050605204,"y":0.7848651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.19144,"y":31.233118,"z":-81.59945},"screenPosition":{"x":0.07167242,"y":0.76134866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.25558,"y":32.369625,"z":-82.15281},"screenPosition":{"x":0.09674443,"y":0.7411121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.83487,"y":33.58057,"z":-82.76981},"screenPosition":{"x":0.12984206,"y":0.71795696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.93332,"y":33.569126,"z":-82.98776},"screenPosition":{"x":0.18166515,"y":0.70516354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.34163,"y":31.86568,"z":-82.57873},"screenPosition":{"x":0.2421879,"y":0.7107117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.82869,"y":29.87922,"z":-81.98623},"screenPosition":{"x":0.28549033,"y":0.72463614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.04547,"y":27.779104,"z":-81.29736},"screenPosition":{"x":0.31689724,"y":0.74262875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.48314,"y":25.528687,"z":-80.53801},"screenPosition":{"x":0.34561452,"y":0.76314145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.63512,"y":22.459017,"z":-79.431885},"screenPosition":{"x":0.36839902,"y":0.79489547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.29536,"y":20.070532,"z":-78.453224},"screenPosition":{"x":0.35864276,"y":0.8270248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.35782,"y":18.42985,"z":-77.71041},"screenPosition":{"x":0.33550143,"y":0.8529808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.16034,"y":16.712408,"z":-76.96013},"screenPosition":{"x":0.31765532,"y":0.8783609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.81471,"y":16.727798,"z":-76.76249},"screenPosition":{"x":0.2701933,"y":0.8901697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.53546,"y":16.379824,"z":-76.43022},"screenPosition":{"x":0.22456798,"y":0.90588313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.33842,"y":17.134613,"z":-76.56137},"screenPosition":{"x":0.18615586,"y":0.90618634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.53427,"y":21.141228,"z":-77.8219},"screenPosition":{"x":0.11381919,"y":0.87483484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.07683,"y":23.348988,"z":-78.64408},"screenPosition":{"x":0.103546664,"y":0.8503677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.63194,"y":26.264378,"z":-79.71761},"screenPosition":{"x":0.08742426,"y":0.81836617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.9433,"y":28.121693,"z":-80.58558},"screenPosition":{"x":0.11976771,"y":0.78761524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.28598,"y":28.788565,"z":-81.0267},"screenPosition":{"x":0.16160285,"y":0.7689714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.74956,"y":28.728447,"z":-81.199356},"screenPosition":{"x":0.20732072,"y":0.7583004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.72406,"y":26.753227,"z":-80.726616},"screenPosition":{"x":0.27773067,"y":0.7648128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.60986,"y":22.311493,"z":-79.15165},"screenPosition":{"x":0.31665707,"y":0.8095083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.7367,"y":21.652798,"z":-78.83057},"screenPosition":{"x":0.3019768,"y":0.82170594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.83134,"y":20.17607,"z":-78.22027},"screenPosition":{"x":0.29472744,"y":0.8416789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.3492,"y":18.220016,"z":-77.33016},"screenPosition":{"x":0.266087,"y":0.8728864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.4374,"y":16.032211,"z":-76.466835},"screenPosition":{"x":0.26513937,"y":0.89888364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.27829,"y":14.470022,"z":-76.83338},"screenPosition":{"x":0.24351513,"y":0.92052454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.5124,"y":14.687821,"z":-75.59914},"screenPosition":{"x":0.19443822,"y":0.93887293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.9225,"y":16.524025,"z":-76.069405},"screenPosition":{"x":0.12739655,"y":0.9282508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.59267,"y":19.255543,"z":-76.99204},"screenPosition":{"x":0.092695594,"y":0.90342516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.40497,"y":21.540405,"z":-77.821075},"screenPosition":{"x":0.07706343,"y":0.879223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.22566,"y":23.98871,"z":-78.78426},"screenPosition":{"x":0.077751815,"y":0.84893715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.78848,"y":25.765059,"z":-79.5276},"screenPosition":{"x":0.08913125,"y":0.823708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.30045,"y":27.354347,"z":-80.28465},"screenPosition":{"x":0.120277554,"y":0.7963684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.36209,"y":27.242615,"z":-80.469666},"screenPosition":{"x":0.17341386,"y":0.78457266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.39014,"y":22.874788,"z":-78.91017},"screenPosition":{"x":0.20889968,"y":0.8298361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.70941,"y":23.622368,"z":-78.92272},"screenPosition":{"x":0.14348178,"y":0.83703804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.06993,"y":26.000992,"z":-79.66671},"screenPosition":{"x":0.09946956,"y":0.8187658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.80443,"y":28.530195,"z":-80.58881},"screenPosition":{"x":0.0831949,"y":0.79171866},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-156.99153,"y":33.35628,"z":-82.295235},"screenPosition":{"x":0.027273346,"y":0.7411991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.42146,"y":34.986122,"z":-82.91998},"screenPosition":{"x":0.026681514,"y":0.7220707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.50449,"y":36.78732,"z":-83.63237},"screenPosition":{"x":0.025992302,"y":0.69979495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.63913,"y":39.56072,"z":-84.76397},"screenPosition":{"x":0.048004314,"y":0.6648268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.9507,"y":39.383507,"z":-84.90651},"screenPosition":{"x":0.09740488,"y":0.6546769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.1442,"y":46.923992,"z":-88.192444},"screenPosition":{"x":0.17394505,"y":0.54282624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.67374,"y":47.644108,"z":-88.63825},"screenPosition":{"x":0.212092,"y":0.52443546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.75383,"y":47.260345,"z":-88.72486},"screenPosition":{"x":0.26724946,"y":0.51540184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.65149,"y":45.940594,"z":-88.415184},"screenPosition":{"x":0.3156915,"y":0.5195444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.62152,"y":43.683586,"z":-87.765785},"screenPosition":{"x":0.37062594,"y":0.53356516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.48085,"y":41.02672,"z":-86.82924},"screenPosition":{"x":0.3952044,"y":0.5601397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.71696,"y":38.504864,"z":-85.83548},"screenPosition":{"x":0.3941035,"y":0.5913838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.29228,"y":37.091717,"z":-85.211075},"screenPosition":{"x":0.3777627,"y":0.6128352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.42421,"y":35.27935,"z":-84.47826},"screenPosition":{"x":0.37264138,"y":0.6364634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.59795,"y":32.3344,"z":-83.41494},"screenPosition":{"x":0.39398256,"y":0.6671944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.33812,"y":30.490128,"z":-82.547676},"screenPosition":{"x":0.36047992,"y":0.69805187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.2553,"y":29.476854,"z":-82.03969},"screenPosition":{"x":0.33476326,"y":0.7168578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.45706,"y":29.894735,"z":-81.94367},"screenPosition":{"x":0.27421987,"y":0.7270967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.97797,"y":31.25042,"z":-82.23414},"screenPosition":{"x":0.21823831,"y":0.72412616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.29941,"y":33.511013,"z":-82.93903},"screenPosition":{"x":0.17573325,"y":0.70724297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.2019,"y":36.196857,"z":-83.82761},"screenPosition":{"x":0.1372231,"y":0.6839346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.74861,"y":38.389637,"z":-84.644135},"screenPosition":{"x":0.12736277,"y":0.6592687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.29701,"y":40.616825,"z":-85.54932},"screenPosition":{"x":0.13447015,"y":0.6302563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.12915,"y":42.36075,"z":-86.337006},"screenPosition":{"x":0.15863289,"y":0.6027755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.7456,"y":42.289597,"z":-86.57056},"screenPosition":{"x":0.21958628,"y":0.58841264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.53645,"y":39.896404,"z":-85.80979},"screenPosition":{"x":0.26099437,"y":0.6075223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.5482,"y":37.904655,"z":-85.3283},"screenPosition":{"x":0.33079726,"y":0.61461586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.44298,"y":34.84183,"z":-84.16778},"screenPosition":{"x":0.3402861,"y":0.64991575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.78526,"y":32.830475,"z":-83.27139},"screenPosition":{"x":0.31528664,"y":0.6806842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.37044,"y":32.021423,"z":-82.70857},"screenPosition":{"x":0.2580389,"y":0.70513856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.5366,"y":32.849968,"z":-82.838234},"screenPosition":{"x":0.21253891,"y":0.70630354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.13344,"y":34.55722,"z":-83.24824},"screenPosition":{"x":0.15206258,"y":0.7003983},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-152.0983,"y":39.44298,"z":-84.8399},"screenPosition":{"x":0.07645178,"y":0.659175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.65585,"y":42.34577,"z":-85.908745},"screenPosition":{"x":0.060228784,"y":0.6275198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.5998,"y":44.10594,"z":-86.770195},"screenPosition":{"x":0.100091085,"y":0.5959208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.52274,"y":43.746494,"z":-86.877495},"screenPosition":{"x":0.15803908,"y":0.5858434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.69086,"y":42.64988,"z":-86.7032},"screenPosition":{"x":0.2175285,"y":0.58451986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.96613,"y":39.516262,"z":-85.717896},"screenPosition":{"x":0.27430478,"y":0.6088928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.4676,"y":36.35307,"z":-84.47516},"screenPosition":{"x":0.27381048,"y":0.64792323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.01308,"y":35.325054,"z":-83.83731},"screenPosition":{"x":0.21914153,"y":0.6742122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.62631,"y":37.150143,"z":-84.28807},"screenPosition":{"x":0.15739416,"y":0.6671749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.53845,"y":39.24738,"z":-84.96604},"screenPosition":{"x":0.12371276,"y":0.6497853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.2851,"y":41.137707,"z":-85.5829},"screenPosition":{"x":0.094700694,"y":0.6337753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.62216,"y":44.155365,"z":-86.63306},"screenPosition":{"x":0.063626505,"y":0.60441387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.49318,"y":46.15745,"z":-87.58634},"screenPosition":{"x":0.10277959,"y":0.5700164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.20284,"y":44.030033,"z":-87.003075},"screenPosition":{"x":0.1612819,"y":0.5815823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.75774,"y":42.369766,"z":-86.52169},"screenPosition":{"x":0.20096003,"y":0.59203404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.55788,"y":40.67638,"z":-86.00973},"screenPosition":{"x":0.23629132,"y":0.6041109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.90022,"y":39.175217,"z":-85.60133},"screenPosition":{"x":0.27833518,"y":0.61204857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.24944,"y":35.842365,"z":-84.386284},"screenPosition":{"x":0.29976988,"y":0.6477259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.31389,"y":35.922123,"z":-84.792404},"screenPosition":{"x":0.38708806,"y":0.6248838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.651,"y":39.5245,"z":-86.12756},"screenPosition":{"x":0.36899313,"y":0.58515877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.89166,"y":42.133026,"z":-86.96269},"screenPosition":{"x":0.3252082,"y":0.56400204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.53323,"y":43.014427,"z":-87.074814},"screenPosition":{"x":0.2707937,"y":0.5667418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.51633,"y":43.64948,"z":-87.14949},"screenPosition":{"x":0.2301649,"y":0.56907105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.3642,"y":46.773735,"z":-88.12204},"screenPosition":{"x":0.1713193,"y":0.54532146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.09003,"y":49.193398,"z":-89.082275},"screenPosition":{"x":0.17388879,"y":0.51492673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.27812,"y":48.70276,"z":-89.199036},"screenPosition":{"x":0.24592178,"y":0.50298333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.9685,"y":45.741997,"z":-88.24359},"screenPosition":{"x":0.29386157,"y":0.52743554},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-141.17577,"y":42.529438,"z":-86.7762},"screenPosition":{"x":0.24553944,"y":0.57901025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.82402,"y":42.71189,"z":-86.6386},"screenPosition":{"x":0.19691426,"y":0.5888515},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-148.37933,"y":45.553635,"z":-87.30324},"screenPosition":{"x":0.09199669,"y":0.5801345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.1336,"y":48.184227,"z":-89.40783},"screenPosition":{"x":0.34194395,"y":0.48539564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.11143,"y":53.1992,"z":-91.19761},"screenPosition":{"x":0.30069593,"y":0.43401507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.73927,"y":55.387627,"z":-91.77681},"screenPosition":{"x":0.23565845,"y":0.42332137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.46527,"y":54.17675,"z":-91.13647},"screenPosition":{"x":0.19711752,"y":0.44783425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.7118,"y":52.94225,"z":-90.600914},"screenPosition":{"x":0.18514848,"y":0.4660058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.8931,"y":50.748047,"z":-89.65166},"screenPosition":{"x":0.16450594,"y":0.49814796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.95078,"y":47.751755,"z":-88.73196},"screenPosition":{"x":0.22400118,"y":0.5201516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.97296,"y":50.9708,"z":-90.03106},"screenPosition":{"x":0.2325235,"y":0.47843054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.06245,"y":53.47761,"z":-90.76497},"screenPosition":{"x":0.1745303,"y":0.46209162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.67534,"y":54.157497,"z":-90.807434},"screenPosition":{"x":0.12222155,"y":0.46676385},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-147.69824,"y":52.374485,"z":-89.78733},"screenPosition":{"x":0.04748442,"y":0.50734794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.27158,"y":48.87097,"z":-88.49428},"screenPosition":{"x":0.06636359,"y":0.54572904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.95137,"y":47.24236,"z":-88.16767},"screenPosition":{"x":0.13908286,"y":0.54761136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.18816,"y":47.77064,"z":-88.56748},"screenPosition":{"x":0.18395692,"y":0.5299137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.85277,"y":49.172024,"z":-89.24586},"screenPosition":{"x":0.21395148,"y":0.5051907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.79181,"y":49.445904,"z":-89.4247},"screenPosition":{"x":0.2306305,"y":0.49765903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.29384,"y":49.93174,"z":-89.78907},"screenPosition":{"x":0.271089,"y":0.48158556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.21768,"y":51.288136,"z":-90.431564},"screenPosition":{"x":0.29683578,"y":0.45847604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.57759,"y":52.43163,"z":-90.88826},"screenPosition":{"x":0.29874906,"y":0.4439336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.23416,"y":54.37549,"z":-91.68415},"screenPosition":{"x":0.30656523,"y":0.4180856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.67282,"y":54.890633,"z":-92.14035},"screenPosition":{"x":0.36576545,"y":0.3969618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.935905,"y":52.61997,"z":-91.540184},"screenPosition":{"x":0.4334189,"y":0.40800568},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-126.37796,"y":47.918373,"z":-89.829994},"screenPosition":{"x":0.4645901,"y":0.4580552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.1176,"y":45.568447,"z":-88.85901},"screenPosition":{"x":0.45308366,"y":0.48982486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.0551,"y":44.22847,"z":-88.23298},"screenPosition":{"x":0.42968383,"y":0.51215285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.93918,"y":43.32216,"z":-87.68913},"screenPosition":{"x":0.3857846,"y":0.53421944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.26006,"y":43.89979,"z":-87.71748},"screenPosition":{"x":0.33962092,"y":0.53867376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.82986,"y":45.729015,"z":-88.17305},"screenPosition":{"x":0.27865306,"y":0.5313699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.87862,"y":47.326218,"z":-88.66228},"screenPosition":{"x":0.24665003,"y":0.51973295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.67427,"y":48.93337,"z":-89.0979},"screenPosition":{"x":0.2013906,"y":0.51125693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.68486,"y":51.6,"z":-89.97135},"screenPosition":{"x":0.16112249,"y":0.4885119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.1698,"y":53.43498,"z":-90.66503},"screenPosition":{"x":0.15506323,"y":0.46745408},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-138.55354,"y":57.209553,"z":-92.21106},"screenPosition":{"x":0.17035307,"y":0.4172109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.92056,"y":60.344593,"z":-93.3773},"screenPosition":{"x":0.1555977,"y":0.38233277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.19536,"y":61.2976,"z":-93.46649},"screenPosition":{"x":0.0892997,"y":0.38715777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.89052,"y":60.45397,"z":-92.95946},"screenPosition":{"x":0.048258264,"y":0.4077776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.14679,"y":57.92371,"z":-91.96116},"screenPosition":{"x":0.04687839,"y":0.43924406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.19984,"y":54.97215,"z":-90.90472},"screenPosition":{"x":0.07062325,"y":0.46966186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.56534,"y":54.199562,"z":-90.90737},"screenPosition":{"x":0.14179853,"y":0.46139622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.33,"y":56.747807,"z":-91.98701},"screenPosition":{"x":0.16038546,"y":0.4253954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.29482,"y":59.192097,"z":-92.78469},"screenPosition":{"x":0.12290942,"y":0.40469965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.21703,"y":60.803604,"z":-93.21217},"screenPosition":{"x":0.07518874,"y":0.39675573},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-139.86967,"y":65.354576,"z":-95.01446},"screenPosition":{"x":0.079493955,"y":0.33988082},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-135.46771,"y":62.323727,"z":-94.27065},"screenPosition":{"x":0.18303955,"y":0.35127243},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-134.49988,"y":66.89979,"z":-95.97631},"screenPosition":{"x":0.16213249,"y":0.30007324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.56155,"y":66.839066,"z":-95.720375},"screenPosition":{"x":0.108054094,"y":0.31431723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.14604,"y":63.3802,"z":-94.51891},"screenPosition":{"x":0.14419156,"y":0.3478418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.07785,"y":63.938103,"z":-95.029144},"screenPosition":{"x":0.21208422,"y":0.3240347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.22937,"y":67.30457,"z":-96.217865},"screenPosition":{"x":0.18142068,"y":0.2902804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.0236,"y":68.45094,"z":-96.41278},"screenPosition":{"x":0.12208392,"y":0.2909896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.27232,"y":68.62037,"z":-96.30111},"screenPosition":{"x":0.080586955,"y":0.29926264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.2984,"y":68.23346,"z":-96.00811},"screenPosition":{"x":0.04768033,"y":0.31223458},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-141.99854,"y":63.53776,"z":-94.20376},"screenPosition":{"x":0.056373753,"y":0.36782166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.72217,"y":72.87716,"z":-98.32011},"screenPosition":{"x":0.16227172,"y":0.22689636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.50044,"y":70.936676,"z":-97.72172},"screenPosition":{"x":0.19990253,"y":0.24099302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.42548,"y":68.61439,"z":-96.89944},"screenPosition":{"x":0.22070396,"y":0.2646515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.64919,"y":65.80584,"z":-95.95746},"screenPosition":{"x":0.25774565,"y":0.2897584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.4591,"y":64.29723,"z":-95.35758},"screenPosition":{"x":0.25579998,"y":0.3087272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.85411,"y":62.006535,"z":-94.43408},"screenPosition":{"x":0.2500469,"y":0.33845502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.71812,"y":60.229824,"z":-93.65796},"screenPosition":{"x":0.23157157,"y":0.3648823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.89459,"y":60.136448,"z":-93.38159},"screenPosition":{"x":0.17561746,"y":0.37989637},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-139.979,"y":64.63527,"z":-94.74962},"screenPosition":{"x":0.08349302,"y":0.34770715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.40306,"y":66.72595,"z":-95.61565},"screenPosition":{"x":0.09406379,"y":0.31925684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.9724,"y":68.91042,"z":-96.504},"screenPosition":{"x":0.10135249,"y":0.29051223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.33682,"y":69.26064,"z":-96.83055},"screenPosition":{"x":0.1454299,"y":0.2752036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.64735,"y":67.98413,"z":-96.58122},"screenPosition":{"x":0.20410016,"y":0.27643135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.12398,"y":65.74125,"z":-95.898094},"screenPosition":{"x":0.24985234,"y":0.29257634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.14632,"y":63.291748,"z":-95.02301},"screenPosition":{"x":0.26975384,"y":0.31765956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.82181,"y":61.19477,"z":-94.147125},"screenPosition":{"x":0.25727746,"y":0.3465171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.36952,"y":61.073277,"z":-93.908844},"screenPosition":{"x":0.2128521,"y":0.35908026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.24399,"y":61.961246,"z":-94.005486},"screenPosition":{"x":0.1542313,"y":0.36278906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.19019,"y":64.390434,"z":-94.72269},"screenPosition":{"x":0.099357806,"y":0.3466057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.96875,"y":66.51549,"z":-95.4208},"screenPosition":{"x":0.06782689,"y":0.32833728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.96173,"y":68.99824,"z":-96.38308},"screenPosition":{"x":0.06545803,"y":0.2986313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.85257,"y":70.21557,"z":-96.978516},"screenPosition":{"x":0.092648074,"y":0.27663156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.26073,"y":70.79135,"z":-97.38215},"screenPosition":{"x":0.13407244,"y":0.25921065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.22058,"y":71.64404,"z":-97.8423},"screenPosition":{"x":0.16351709,"y":0.24158482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.49625,"y":71.418846,"z":-97.970474},"screenPosition":{"x":0.21380663,"y":0.2316036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.48323,"y":69.12435,"z":-97.30642},"screenPosition":{"x":0.26874617,"y":0.24610227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.43124,"y":66.43701,"z":-96.2757},"screenPosition":{"x":0.27416655,"y":0.27780357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.43147,"y":65.56336,"z":-95.73461},"screenPosition":{"x":0.22798724,"y":0.30014914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.84808,"y":66.0526,"z":-95.72412},"screenPosition":{"x":0.18087731,"y":0.30591244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.68849,"y":67.42502,"z":-95.9961},"screenPosition":{"x":0.11875182,"y":0.3044401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.68227,"y":69.40245,"z":-96.625114},"screenPosition":{"x":0.08493268,"y":0.28884017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.26778,"y":72.38889,"z":-97.72165},"screenPosition":{"x":0.06719394,"y":0.2562527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.90234,"y":73.51633,"z":-98.30464},"screenPosition":{"x":0.09999965,"y":0.23419756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.75174,"y":71.22378,"z":-97.6518},"screenPosition":{"x":0.15739517,"y":0.24808733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.86028,"y":69.52663,"z":-96.808815},"screenPosition":{"x":0.116061024,"y":0.279262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.93407,"y":71.36346,"z":-97.30504},"screenPosition":{"x":0.06383297,"y":0.2697043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.59586,"y":74.10613,"z":-98.30882},"screenPosition":{"x":0.04708151,"y":0.24015045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.2643,"y":76.15345,"z":-99.14069},"screenPosition":{"x":0.05381501,"y":0.21328798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.03232,"y":76.6718,"z":-99.49631},"screenPosition":{"x":0.08930058,"y":0.1980557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.63461,"y":77.56093,"z":-99.9968},"screenPosition":{"x":0.124932975,"y":0.178617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.14705,"y":79.49178,"z":-100.722565},"screenPosition":{"x":0.11768639,"y":0.15683854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.22227,"y":81.81953,"z":-101.54676},"screenPosition":{"x":0.09668238,"y":0.13295995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.98862,"y":82.883705,"z":-101.71451},"screenPosition":{"x":0.03848303,"y":0.13433288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.32722,"y":80.25761,"z":-100.675735},"screenPosition":{"x":0.03643108,"y":0.16714586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.95618,"y":78.20326,"z":-100.04818},"screenPosition":{"x":0.07793746,"y":0.18205483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.85126,"y":77.41661,"z":-99.92877},"screenPosition":{"x":0.12219228,"y":0.18096069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.67784,"y":76.87559,"z":-99.90218},"screenPosition":{"x":0.16547574,"y":0.17693728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.71907,"y":73.734634,"z":-98.855644},"screenPosition":{"x":0.20842038,"y":0.20445237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.11145,"y":71.45442,"z":-97.93609},"screenPosition":{"x":0.2027026,"y":0.23420115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.10966,"y":71.176704,"z":-97.60763},"screenPosition":{"x":0.15139233,"y":0.25014803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.90411,"y":72.33207,"z":-97.80574},"screenPosition":{"x":0.09197702,"y":0.25076616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.39923,"y":74.36611,"z":-98.416565},"screenPosition":{"x":0.048572432,"y":0.23672087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.9737,"y":76.64972,"z":-99.26335},"screenPosition":{"x":0.037497103,"y":0.21171647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.89388,"y":79.36625,"z":-100.31456},"screenPosition":{"x":0.033732858,"y":0.17878294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.01045,"y":80.421234,"z":-100.83484},"screenPosition":{"x":0.058547284,"y":0.15961337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.02422,"y":79.61574,"z":-100.69963},"screenPosition":{"x":0.10072827,"y":0.15910605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.22314,"y":80.89946,"z":-101.37169},"screenPosition":{"x":0.14006561,"y":0.1336321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.5569,"y":83.30922,"z":-102.20535},"screenPosition":{"x":0.11395609,"y":0.11026224},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-128.49979,"y":82.85543,"z":-102.12445},"screenPosition":{"x":0.13657132,"y":0.110199384},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-127.25261,"y":78.814926,"z":-100.77924},"screenPosition":{"x":0.19242749,"y":0.14608407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.52239,"y":77.51046,"z":-100.37001},"screenPosition":{"x":0.2319957,"y":0.15181646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.82484,"y":77.017715,"z":-100.2477},"screenPosition":{"x":0.2442799,"y":0.1557767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.84955,"y":74.49564,"z":-100.45714},"screenPosition":{"x":0.28368804,"y":0.16948558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.910324,"y":72.61871,"z":-98.825745},"screenPosition":{"x":0.30312568,"y":0.19717589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.20339,"y":71.96877,"z":-98.41853},"screenPosition":{"x":0.26793665,"y":0.21131808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.53656,"y":72.12757,"z":-98.29661},"screenPosition":{"x":0.22502254,"y":0.22007552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.06873,"y":69.944374,"z":-97.40095},"screenPosition":{"x":0.21584152,"y":0.2492202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.03699,"y":67.85053,"z":-96.656815},"screenPosition":{"x":0.23388298,"y":0.27061602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.0699,"y":66.098145,"z":-96.02948},"screenPosition":{"x":0.24782863,"y":0.28865153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.31876,"y":64.199974,"z":-95.33364},"screenPosition":{"x":0.259219,"y":0.30925733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.683,"y":61.492924,"z":-94.4171},"screenPosition":{"x":0.29291683,"y":0.3339358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.72472,"y":59.649345,"z":-93.8331},"screenPosition":{"x":0.32531372,"y":0.34852597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.40254,"y":57.951088,"z":-93.252235},"screenPosition":{"x":0.34516752,"y":0.36448097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.56477,"y":56.09594,"z":-92.65489},"screenPosition":{"x":0.37550774,"y":0.37970725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.642746,"y":53.792145,"z":-91.90403},"screenPosition":{"x":0.41108125,"y":0.3991631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.54519,"y":52.151722,"z":-91.25008},"screenPosition":{"x":0.4086138,"y":0.41995943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.72003,"y":49.721775,"z":-90.44682},"screenPosition":{"x":0.44351238,"y":0.44113412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.912506,"y":47.687664,"z":-89.63031},"screenPosition":{"x":0.4391488,"y":0.46724263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.77417,"y":46.59451,"z":-89.09808},"screenPosition":{"x":0.41503936,"y":0.48670572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.13358,"y":44.76129,"z":-88.34042},"screenPosition":{"x":0.40603113,"y":0.5115025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.98247,"y":43.54837,"z":-87.76648},"screenPosition":{"x":0.38313776,"y":0.53210855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.73872,"y":42.463703,"z":-87.245346},"screenPosition":{"x":0.3608439,"y":0.5510343},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-134.63014,"y":36.77125,"z":-85.22401},"screenPosition":{"x":0.41005504,"y":0.60875267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.52278,"y":37.71504,"z":-85.33916},"screenPosition":{"x":0.35065296,"y":0.6119925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.54944,"y":38.644474,"z":-85.43894},"screenPosition":{"x":0.28899354,"y":0.61591655},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-139.87973,"y":33.252598,"z":-83.56772},"screenPosition":{"x":0.34569937,"y":0.66811657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.58377,"y":31.07978,"z":-82.81564},"screenPosition":{"x":0.36902136,"y":0.68889713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.18056,"y":29.066946,"z":-81.97578},"screenPosition":{"x":0.3572763,"y":0.71667784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.41864,"y":27.109224,"z":-81.18301},"screenPosition":{"x":0.35146397,"y":0.74224097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.88077,"y":25.648964,"z":-80.473946},"screenPosition":{"x":0.31969908,"y":0.7681301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.718,"y":25.41491,"z":-80.17338},"screenPosition":{"x":0.27106154,"y":0.7831481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.40224,"y":26.266893,"z":-80.27174},"screenPosition":{"x":0.21613094,"y":0.7863785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.27396,"y":28.082693,"z":-80.77594},"screenPosition":{"x":0.16792703,"y":0.77574605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.00275,"y":31.151731,"z":-81.81444},"screenPosition":{"x":0.12919568,"y":0.7479929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.85347,"y":32.480526,"z":-82.52921},"screenPosition":{"x":0.17430317,"y":0.7203907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.21484,"y":31.843204,"z":-82.50389},"screenPosition":{"x":0.22679201,"y":0.71488726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.1188,"y":29.435293,"z":-81.729225},"screenPosition":{"x":0.2663313,"y":0.73449576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.52544,"y":27.020672,"z":-80.83717},"screenPosition":{"x":0.27898473,"y":0.7614198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.04921,"y":24.537565,"z":-79.83521},"screenPosition":{"x":0.27265236,"y":0.79285294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.18787,"y":23.241444,"z":-79.20943},"screenPosition":{"x":0.24508235,"y":0.81636554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.41257,"y":22.988949,"z":-78.94916},"screenPosition":{"x":0.2075182,"y":0.82884663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.4769,"y":22.527369,"z":-78.62661},"screenPosition":{"x":0.17454995,"y":0.8427524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.71626,"y":22.272818,"z":-78.36449},"screenPosition":{"x":0.13674124,"y":0.8553198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.72607,"y":21.46455,"z":-77.92251},"screenPosition":{"x":0.107624575,"y":0.87252843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.88881,"y":20.74795,"z":-77.5015},"screenPosition":{"x":0.07583699,"y":0.88828105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.41959,"y":19.255459,"z":-76.77569},"screenPosition":{"x":0.032576043,"y":0.9125855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.49347,"y":17.529003,"z":-76.07794},"screenPosition":{"x":0.033258017,"y":0.93462723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.9745,"y":14.117277,"z":-74.824684},"screenPosition":{"x":0.05725625,"y":0.9754706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.95177,"y":13.194736,"z":-75.79148},"screenPosition":{"x":0.11730702,"y":0.96770996},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.05500294,"y":1.2677064},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.120725565,"y":1.2642295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.15411,"y":13.280252,"z":75.31775},"screenPosition":{"x":0.18820298,"y":1.2560005},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.22941412,"y":1.2353005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.96896,"y":16.284355,"z":-76.669106},"screenPosition":{"x":0.28909847,"y":0.89012206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.03786,"y":17.972794,"z":-77.34237},"screenPosition":{"x":0.29151875,"y":0.8695799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.02097,"y":23.63494,"z":-80.28078},"screenPosition":{"x":0.45863906,"y":0.75794166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.32343,"y":25.083965,"z":-80.92732},"screenPosition":{"x":0.47694156,"y":0.7358118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.55418,"y":26.774616,"z":-81.66551},"screenPosition":{"x":0.4944488,"y":0.71067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.34111,"y":28.137697,"z":-82.244354},"screenPosition":{"x":0.5047535,"y":0.6913323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.71971,"y":29.913982,"z":-83.00176},"screenPosition":{"x":0.5189053,"y":0.665952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.18806,"y":32.1361,"z":-83.91126},"screenPosition":{"x":0.52775383,"y":0.63641167},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-132.08542,"y":38.21957,"z":-85.935135},"screenPosition":{"x":0.44339824,"y":0.5826391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.43352,"y":37.110477,"z":-85.283485},"screenPosition":{"x":0.39292157,"y":0.60887897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.43338,"y":34.62048,"z":-84.31916},"screenPosition":{"x":0.3957784,"y":0.6387929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.21558,"y":32.207447,"z":-83.47546},"screenPosition":{"x":0.41969156,"y":0.6624549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.54166,"y":29.986963,"z":-82.73531},"screenPosition":{"x":0.45016235,"y":0.68221146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.77106,"y":27.901945,"z":-82.05087},"screenPosition":{"x":0.48121887,"y":0.7001059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.53038,"y":25.83293,"z":-81.48463},"screenPosition":{"x":0.53835046,"y":0.71129555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.16849,"y":25.647404,"z":-81.59921},"screenPosition":{"x":0.58192414,"y":0.70260143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.95836,"y":24.797283,"z":-81.541756},"screenPosition":{"x":0.6462894,"y":0.6970942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.30691,"y":26.166147,"z":-82.23272},"screenPosition":{"x":0.6817608,"y":0.67101717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.54711,"y":28.995451,"z":-83.376175},"screenPosition":{"x":0.6900615,"y":0.63453215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.29224,"y":31.822369,"z":-84.25057},"screenPosition":{"x":0.6351715,"y":0.6132218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.989914,"y":33.741764,"z":-84.805016},"screenPosition":{"x":0.5892606,"y":0.601311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.73497,"y":34.10969,"z":-84.72614},"screenPosition":{"x":0.5372665,"y":0.60976243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.64334,"y":33.990417,"z":-84.46106},"screenPosition":{"x":0.48640746,"y":0.623923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.92552,"y":32.46062,"z":-83.74097},"screenPosition":{"x":0.45842806,"y":0.64972264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.83899,"y":29.450787,"z":-82.67443},"screenPosition":{"x":0.48497057,"y":0.68011886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.56252,"y":27.917656,"z":-82.22548},"screenPosition":{"x":0.52041644,"y":0.69005245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.56688,"y":25.812614,"z":-81.62763},"screenPosition":{"x":0.57352424,"y":0.70276666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.97839,"y":27.452387,"z":-82.4869},"screenPosition":{"x":0.62387866,"y":0.67002994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.83109,"y":30.993484,"z":-83.83727},"screenPosition":{"x":0.6149197,"y":0.6287106},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-129.4767,"y":34.802067,"z":-84.91625},"screenPosition":{"x":0.51829207,"y":0.60598195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.82103,"y":35.66161,"z":-84.966805},"screenPosition":{"x":0.45153078,"y":0.6120721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.7386,"y":33.4935,"z":-84.04703},"screenPosition":{"x":0.4353534,"y":0.6427773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.73059,"y":31.445333,"z":-83.39388},"screenPosition":{"x":0.47033623,"y":0.6592386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.30272,"y":28.745432,"z":-82.31093},"screenPosition":{"x":0.4647343,"y":0.69384533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.36017,"y":28.593596,"z":-82.02283},"screenPosition":{"x":0.41148803,"y":0.7090023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.06006,"y":29.086605,"z":-81.992004},"screenPosition":{"x":0.35926002,"y":0.71597356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.40952,"y":30.929495,"z":-82.46931},"screenPosition":{"x":0.3020674,"y":0.70758045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.59827,"y":33.829716,"z":-83.48893},"screenPosition":{"x":0.27461267,"y":0.6787601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.99525,"y":35.841713,"z":-84.32898},"screenPosition":{"x":0.2865292,"y":0.65093124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.61865,"y":37.035316,"z":-84.936424},"screenPosition":{"x":0.3189343,"y":0.6282695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.29213,"y":35.808964,"z":-84.75372},"screenPosition":{"x":0.38841242,"y":0.6259223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.70705,"y":32.900253,"z":-83.608345},"screenPosition":{"x":0.38736022,"y":0.6620526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.79163,"y":31.513578,"z":-82.95441},"screenPosition":{"x":0.3617148,"y":0.68550926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.34882,"y":29.903934,"z":-82.33785},"screenPosition":{"x":0.365151,"y":0.70421094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.22195,"y":28.662952,"z":-81.752045},"screenPosition":{"x":0.34209785,"y":0.72510475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.36304,"y":26.836748,"z":-81.01359},"screenPosition":{"x":0.33693087,"y":0.748824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.15585,"y":25.134449,"z":-80.26944},"screenPosition":{"x":0.3191305,"y":0.77419716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.45569,"y":22.806684,"z":-79.34001},"screenPosition":{"x":0.31523,"y":0.80420536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.61934,"y":20.432606,"z":-78.48101},"screenPosition":{"x":0.33210987,"y":0.8283497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.64331,"y":18.01024,"z":-77.84505},"screenPosition":{"x":0.40520823,"y":0.8407443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.97893,"y":19.050617,"z":-78.41988},"screenPosition":{"x":0.44398665,"y":0.81789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.52057,"y":21.814224,"z":-79.44032},"screenPosition":{"x":0.42928332,"y":0.78794676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.37938,"y":24.290432,"z":-80.334015},"screenPosition":{"x":0.41123268,"y":0.7619947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.73027,"y":26.10139,"z":-80.952866},"screenPosition":{"x":0.38993508,"y":0.7450355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.93903,"y":27.82025,"z":-81.54975},"screenPosition":{"x":0.37193546,"y":0.72835284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.78398,"y":30.255661,"z":-82.35344},"screenPosition":{"x":0.3366619,"y":0.707085},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-136.56386,"y":34.01664,"z":-84.09388},"screenPosition":{"x":0.39843887,"y":0.64539033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.02065,"y":31.119602,"z":-83.17902},"screenPosition":{"x":0.450043,"y":0.66830987},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-129.71135,"y":41.146114,"z":-87.16026},"screenPosition":{"x":0.46141437,"y":0.5421462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.29326,"y":40.594604,"z":-87.14867},"screenPosition":{"x":0.50907767,"y":0.5370135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.648605,"y":41.35385,"z":-87.62175},"screenPosition":{"x":0.5499463,"y":0.517495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.47246,"y":44.078583,"z":-88.68326},"screenPosition":{"x":0.5482823,"y":0.48439622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.33508,"y":46.721607,"z":-89.559616},"screenPosition":{"x":0.51088995,"y":0.46120566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.22135,"y":48.20804,"z":-90.02178},"screenPosition":{"x":0.48280382,"y":0.44994652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.796036,"y":50.074875,"z":-90.873},"screenPosition":{"x":0.51053554,"y":0.42006314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.8192,"y":49.5962,"z":-90.93012},"screenPosition":{"x":0.5675818,"y":0.41171303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.03186,"y":47.101162,"z":-90.17729},"screenPosition":{"x":0.6201701,"y":0.42927667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.71209,"y":44.349712,"z":-89.1442},"screenPosition":{"x":0.630897,"y":0.46044213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.74574,"y":42.618004,"z":-88.52419},"screenPosition":{"x":0.6446809,"y":0.47830176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.695206,"y":40.439613,"z":-87.75135},"screenPosition":{"x":0.66367584,"y":0.50035506},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-116.145454,"y":35.790012,"z":-86.28865},"screenPosition":{"x":0.74775225,"y":0.5365608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.14821,"y":36.95965,"z":-86.93504},"screenPosition":{"x":0.7920975,"y":0.5089921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.95823,"y":39.550705,"z":-88.83095},"screenPosition":{"x":0.75405097,"y":0.48472986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.75865,"y":41.74629,"z":-88.518486},"screenPosition":{"x":0.72592586,"y":0.46679452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.612724,"y":41.45599,"z":-88.2731},"screenPosition":{"x":0.69235957,"y":0.48069465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.35442,"y":42.44871,"z":-88.493774},"screenPosition":{"x":0.6529238,"y":0.4782849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.55702,"y":43.95023,"z":-88.86059},"screenPosition":{"x":0.60121155,"y":0.47273234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.56577,"y":45.026245,"z":-89.09053},"screenPosition":{"x":0.5565752,"y":0.47067025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.55552,"y":47.070934,"z":-89.74383},"screenPosition":{"x":0.52188426,"y":0.45416725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.74055,"y":47.585903,"z":-89.836754},"screenPosition":{"x":0.49649853,"y":0.45417288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.77826,"y":48.887474,"z":-90.374466},"screenPosition":{"x":0.5028874,"y":0.43657696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.604004,"y":50.33464,"z":-90.980316},"screenPosition":{"x":0.5117787,"y":0.41655943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.38819,"y":52.82524,"z":-91.96137},"screenPosition":{"x":0.51278937,"y":0.38567126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.09857,"y":55.957203,"z":-93.02372},"screenPosition":{"x":0.4741105,"y":0.35680193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.56899,"y":57.07869,"z":-93.15802},"screenPosition":{"x":0.40292543,"y":0.36077428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.5005,"y":55.264137,"z":-92.28671},"screenPosition":{"x":0.36573493,"y":0.39239186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.59906,"y":51.795628,"z":-91.118996},"screenPosition":{"x":0.41061556,"y":0.42383632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.12416,"y":49.61201,"z":-90.52981},"screenPosition":{"x":0.47287488,"y":0.43515584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.944534,"y":49.393314,"z":-90.695145},"screenPosition":{"x":0.5313771,"y":0.42324457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.52125,"y":50.563076,"z":-91.29766},"screenPosition":{"x":0.56486267,"y":0.40049917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.35977,"y":52.89298,"z":-92.14075},"screenPosition":{"x":0.5483889,"y":0.37595305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.55818,"y":55.862915,"z":-93.184494},"screenPosition":{"x":0.5305179,"y":0.34218332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.938156,"y":57.885548,"z":-93.87659},"screenPosition":{"x":0.5070923,"y":0.32337153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.98925,"y":59.21064,"z":-94.19209},"screenPosition":{"x":0.44903597,"y":0.32304302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.010864,"y":59.245224,"z":-93.973206},"screenPosition":{"x":0.39488012,"y":0.33613402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.01692,"y":56.40689,"z":-92.807686},"screenPosition":{"x":0.38268536,"y":0.37412196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.432304,"y":54.72287,"z":-92.48155},"screenPosition":{"x":0.4605855,"y":0.37535977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.83208,"y":56.255783,"z":-93.22709},"screenPosition":{"x":0.4942091,"y":0.3481131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.350075,"y":59.648224,"z":-94.397026},"screenPosition":{"x":0.4567138,"y":0.31585732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.288704,"y":60.994503,"z":-94.72869},"screenPosition":{"x":0.4110526,"y":0.31058162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.89816,"y":62.020535,"z":-94.894844},"screenPosition":{"x":0.35600954,"y":0.3116993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.1317,"y":62.29053,"z":-94.82019},"screenPosition":{"x":0.31394795,"y":0.31887627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.71507,"y":62.303364,"z":-94.703606},"screenPosition":{"x":0.2856852,"y":0.32591522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.33003,"y":64.50745,"z":-95.28937},"screenPosition":{"x":0.22078861,"y":0.31498918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.0887,"y":65.41643,"z":-95.861496},"screenPosition":{"x":0.27092272,"y":0.2911663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.99085,"y":65.23772,"z":-95.95831},"screenPosition":{"x":0.30980697,"y":0.28365955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.2901,"y":65.027275,"z":-96.08995},"screenPosition":{"x":0.3597033,"y":0.27379462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.6541,"y":67.22091,"z":-96.997284},"screenPosition":{"x":0.37582958,"y":0.24353898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.14301,"y":69.82056,"z":-97.88677},"screenPosition":{"x":0.34121194,"y":0.2214634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.85754,"y":71.69734,"z":-98.50127},"screenPosition":{"x":0.314961,"y":0.20472322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.71218,"y":73.67472,"z":-99.1409},"screenPosition":{"x":0.2869352,"y":0.18685126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.804214,"y":75.624916,"z":-99.75268},"screenPosition":{"x":0.25839815,"y":0.16865325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.3614,"y":77.29824,"z":-100.30666},"screenPosition":{"x":0.2352537,"y":0.15389408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.22134,"y":78.80925,"z":-100.70309},"screenPosition":{"x":0.17514347,"y":0.15034027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.29877,"y":80.65669,"z":-101.27934},"screenPosition":{"x":0.1405903,"y":0.13624072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.45404,"y":82.26479,"z":-101.76431},"screenPosition":{"x":0.10700248,"y":0.12541433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.90317,"y":81.28186,"z":-101.456},"screenPosition":{"x":0.124988034,"y":0.13304032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.54149,"y":78.86701,"z":-100.546135},"screenPosition":{"x":0.13330065,"y":0.16007306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.89383,"y":76.73139,"z":-99.83424},"screenPosition":{"x":0.1627512,"y":0.17926477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.12125,"y":74.71889,"z":-99.09928},"screenPosition":{"x":0.1752473,"y":0.20062555},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-127.25647,"y":71.13212,"z":-98.03964},"screenPosition":{"x":0.256112,"y":0.22456008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.62857,"y":70.66677,"z":-98.074814},"screenPosition":{"x":0.30682677,"y":0.21762632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.89183,"y":68.67657,"z":-97.421585},"screenPosition":{"x":0.33649206,"y":0.23470171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.39816,"y":67.13982,"z":-96.98795},"screenPosition":{"x":0.37774187,"y":0.24475846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.850975,"y":64.87468,"z":-97.25624},"screenPosition":{"x":0.40299705,"y":0.2608636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.826065,"y":62.61199,"z":-95.49386},"screenPosition":{"x":0.44052383,"y":0.28479436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.472,"y":60.450207,"z":-95.78422},"screenPosition":{"x":0.46433133,"y":0.29997635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.34084,"y":58.751747,"z":-94.15462},"screenPosition":{"x":0.4812978,"y":0.3215486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.820755,"y":57.037735,"z":-93.43024},"screenPosition":{"x":0.4700883,"y":0.3445153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.552925,"y":56.181606,"z":-92.91592},"screenPosition":{"x":0.42849094,"y":0.36542767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.03833,"y":56.519894,"z":-92.84634},"screenPosition":{"x":0.38136438,"y":0.37306848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.2531,"y":57.946365,"z":-93.18547},"screenPosition":{"x":0.3300392,"y":0.36829317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.63304,"y":60.079185,"z":-93.840324},"screenPosition":{"x":0.2877787,"y":0.35270223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.34561,"y":62.543392,"z":-94.66441},"screenPosition":{"x":0.2546195,"y":0.33067346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.56123,"y":64.55751,"z":-95.59561},"screenPosition":{"x":0.28746065,"y":0.29760337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.8642,"y":65.04348,"z":-95.97527},"screenPosition":{"x":0.33150613,"y":0.28063288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.3718,"y":63.99459,"z":-95.792015},"screenPosition":{"x":0.38465214,"y":0.28026983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.00658,"y":62.933678,"z":-95.59474},"screenPosition":{"x":0.43583,"y":0.2818011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.54355,"y":60.67978,"z":-95.860596},"screenPosition":{"x":0.4692766,"y":0.29431105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.82421,"y":58.371765,"z":-95.09272},"screenPosition":{"x":0.5023207,"y":0.31422034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.18111,"y":56.308365,"z":-94.40623},"screenPosition":{"x":0.5289,"y":0.33337203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.57586,"y":54.366432,"z":-93.76014},"screenPosition":{"x":0.5486678,"y":0.35375747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.82414,"y":53.00396,"z":-92.29783},"screenPosition":{"x":0.5725893,"y":0.36901215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.3086,"y":50.892933,"z":-91.584595},"screenPosition":{"x":0.60114086,"y":0.38721943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.87754,"y":49.23167,"z":-91.02525},"screenPosition":{"x":0.6236965,"y":0.4016031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.08911,"y":46.93674,"z":-90.267334},"screenPosition":{"x":0.6554747,"y":0.42186803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.88135,"y":44.556065,"z":-89.434395},"screenPosition":{"x":0.69007754,"y":0.4400608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.884605,"y":42.029232,"z":-88.5332},"screenPosition":{"x":0.7004108,"y":0.47158852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.74941,"y":40.672874,"z":-88.059944},"screenPosition":{"x":0.71425515,"y":0.48486218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.37301,"y":38.66698,"z":-87.37354},"screenPosition":{"x":0.73762685,"y":0.5037014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.24929,"y":36.737007,"z":-86.69488},"screenPosition":{"x":0.7554819,"y":0.5228309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.0421,"y":34.363007,"z":-85.86428},"screenPosition":{"x":0.7792755,"y":0.5462452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.64552,"y":32.250786,"z":-85.14152},"screenPosition":{"x":0.80389,"y":0.566082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.85166,"y":29.291033,"z":-84.146965},"screenPosition":{"x":0.8419013,"y":0.59262276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.10784,"y":30.405195,"z":-85.78823},"screenPosition":{"x":0.8856935,"y":0.5633887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.84349,"y":34.784718,"z":-87.33282},"screenPosition":{"x":0.88509035,"y":0.5113822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.43747,"y":35.700924,"z":-86.540634},"screenPosition":{"x":0.81036127,"y":0.52063876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.52469,"y":36.05109,"z":-86.50576},"screenPosition":{"x":0.7737969,"y":0.5265745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.852585,"y":35.102127,"z":-85.98927},"screenPosition":{"x":0.7408593,"y":0.5467421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.67464,"y":35.45164,"z":-85.89794},"screenPosition":{"x":0.6876185,"y":0.5557167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.04136,"y":35.877777,"z":-85.86877},"screenPosition":{"x":0.6419125,"y":0.5618971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.401535,"y":39.238308,"z":-86.96288},"screenPosition":{"x":0.5897507,"y":0.5335815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.53813,"y":41.87327,"z":-87.89193},"screenPosition":{"x":0.56542915,"y":0.5072419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.332794,"y":43.599964,"z":-88.67634},"screenPosition":{"x":0.59040326,"y":0.47977048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.65655,"y":42.55729,"z":-88.58589},"screenPosition":{"x":0.6644046,"y":0.4740695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.30116,"y":39.394604,"z":-87.48543},"screenPosition":{"x":0.6972084,"y":0.5048394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.15963,"y":38.021442,"z":-86.77709},"screenPosition":{"x":0.657654,"y":0.53160137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.060905,"y":38.714798,"z":-86.80229},"screenPosition":{"x":0.60000926,"y":0.53736883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.65968,"y":40.77407,"z":-87.414185},"screenPosition":{"x":0.55448335,"y":0.52344805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.66816,"y":44.010483,"z":-88.567474},"screenPosition":{"x":0.5275314,"y":0.49041295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.373955,"y":45.093285,"z":-89.205635},"screenPosition":{"x":0.5772658,"y":0.46468166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.77356,"y":42.3431,"z":-88.34752},"screenPosition":{"x":0.62864053,"y":0.48568648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.752014,"y":39.885994,"z":-87.39657},"screenPosition":{"x":0.631606,"y":0.5151686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.57241,"y":38.864967,"z":-86.81669},"screenPosition":{"x":0.5897512,"y":0.53814197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.33606,"y":40.819637,"z":-87.225624},"screenPosition":{"x":0.5064723,"y":0.53491616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.08478,"y":42.05708,"z":-87.30345},"screenPosition":{"x":0.4115313,"y":0.5433841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.01953,"y":44.27737,"z":-88.10009},"screenPosition":{"x":0.39425614,"y":0.52039355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.98203,"y":46.52844,"z":-88.9821},"screenPosition":{"x":0.39405352,"y":0.4927544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.18675,"y":48.24232,"z":-89.577515},"screenPosition":{"x":0.37616843,"y":0.47613811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.43477,"y":50.183533,"z":-90.25068},"screenPosition":{"x":0.35562378,"y":0.45739004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.00728,"y":52.544426,"z":-91.048645},"screenPosition":{"x":0.32580748,"y":0.4357929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.5372,"y":54.681328,"z":-91.770004},"screenPosition":{"x":0.2986361,"y":0.41631514},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-132.61252,"y":58.28497,"z":-93.049126},"screenPosition":{"x":0.26733568,"y":0.3797781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.68805,"y":60.60732,"z":-93.871376},"screenPosition":{"x":0.24678136,"y":0.35643804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.0978,"y":61.673325,"z":-94.06706},"screenPosition":{"x":0.19502687,"y":0.35627386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.30978,"y":63.592033,"z":-94.58191},"screenPosition":{"x":0.13958709,"y":0.34644258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.1972,"y":61.905193,"z":-93.759514},"screenPosition":{"x":0.10204763,"y":0.3765027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.81265,"y":59.259617,"z":-92.84566},"screenPosition":{"x":0.13087793,"y":0.40184757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.65788,"y":57.687763,"z":-92.4501},"screenPosition":{"x":0.1823485,"y":0.4083351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.45654,"y":57.76545,"z":-92.646255},"screenPosition":{"x":0.22095376,"y":0.39774823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.14098,"y":54.188606,"z":-91.39508},"screenPosition":{"x":0.25628373,"y":0.4329215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.77141,"y":54.484035,"z":-91.2226},"screenPosition":{"x":0.18916167,"y":0.44605935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.53813,"y":57.187233,"z":-92.127754},"screenPosition":{"x":0.15311453,"y":0.42184561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.94044,"y":57.43428,"z":-92.032005},"screenPosition":{"x":0.108105645,"y":0.42998272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.4502,"y":56.255985,"z":-91.41984},"screenPosition":{"x":0.073149584,"y":0.4532001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.76907,"y":54.680546,"z":-90.83371},"screenPosition":{"x":0.08055027,"y":0.47073084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.45245,"y":53.05212,"z":-90.2008},"screenPosition":{"x":0.08189307,"y":0.49042526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.11421,"y":51.307785,"z":-89.52821},"screenPosition":{"x":0.08458426,"y":0.51120883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.74747,"y":48.77146,"z":-88.651955},"screenPosition":{"x":0.11218927,"y":0.5355157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.2163,"y":47.32058,"z":-88.175285},"screenPosition":{"x":0.13377321,"y":0.54796726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.48648,"y":44.843346,"z":-87.34788},"screenPosition":{"x":0.16729742,"y":0.5700772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.19669,"y":42.690094,"z":-86.67883},"screenPosition":{"x":0.20824778,"y":0.5863038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.91205,"y":41.16415,"z":-86.309586},"screenPosition":{"x":0.26158118,"y":0.59179944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.67612,"y":41.077927,"z":-86.52647},"screenPosition":{"x":0.31998673,"y":0.5782829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.58672,"y":41.829666,"z":-86.87786},"screenPosition":{"x":0.33316675,"y":0.5657401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.13113,"y":41.85798,"z":-87.07587},"screenPosition":{"x":0.37670317,"y":0.5545034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.23137,"y":42.072456,"z":-87.37424},"screenPosition":{"x":0.42662165,"y":0.5394359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.29068,"y":43.41657,"z":-88.00199},"screenPosition":{"x":0.4500553,"y":0.5170548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.61314,"y":44.833443,"z":-88.635544},"screenPosition":{"x":0.4681487,"y":0.49508676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.88593,"y":46.60244,"z":-89.39845},"screenPosition":{"x":0.48429203,"y":0.46932384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.77207,"y":48.39128,"z":-90.1215},"screenPosition":{"x":0.48926502,"y":0.44607717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.86239,"y":50.61002,"z":-90.9822},"screenPosition":{"x":0.48707992,"y":0.41933504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.90306,"y":53.381187,"z":-91.967155},"screenPosition":{"x":0.46333715,"y":0.39117563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.74903,"y":55.63305,"z":-92.55228},"screenPosition":{"x":0.39389443,"y":0.38081282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.5556,"y":55.693287,"z":-92.358986},"screenPosition":{"x":0.34336048,"y":0.3926811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.14767,"y":53.921932,"z":-91.52905},"screenPosition":{"x":0.31186268,"y":0.42233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.70009,"y":51.044857,"z":-90.46096},"screenPosition":{"x":0.32591707,"y":0.45421275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.0786,"y":48.95646,"z":-89.84042},"screenPosition":{"x":0.37216568,"y":0.4683544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.53674,"y":47.908154,"z":-89.58463},"screenPosition":{"x":0.40836105,"y":0.47221476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.752075,"y":46.203876,"z":-89.11354},"screenPosition":{"x":0.45433348,"y":0.4817033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.9191,"y":44.86037,"z":-88.77478},"screenPosition":{"x":0.49817064,"y":0.4872873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.69032,"y":42.850555,"z":-88.15221},"screenPosition":{"x":0.53677076,"y":0.502374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.37932,"y":40.39653,"z":-87.37755},"screenPosition":{"x":0.5805264,"y":0.5216377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.29882,"y":37.595066,"z":-86.30832},"screenPosition":{"x":0.5874031,"y":0.5543792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.230995,"y":36.4352,"z":-85.670395},"screenPosition":{"x":0.5447324,"y":0.5792682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.89804,"y":37.128727,"z":-85.637054},"screenPosition":{"x":0.47362727,"y":0.58851177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.8646,"y":41.431866,"z":-87.173904},"screenPosition":{"x":0.43844765,"y":0.5443184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.55012,"y":41.945137,"z":-87.61054},"screenPosition":{"x":0.49330753,"y":0.5243583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.01236,"y":40.71901,"z":-87.36756},"screenPosition":{"x":0.54867786,"y":0.52558684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.03807,"y":39.683704,"z":-87.22603},"screenPosition":{"x":0.6102466,"y":0.5229327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.66817,"y":37.090195,"z":-86.32961},"screenPosition":{"x":0.63849527,"y":0.5478374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.6612,"y":34.233128,"z":-85.15842},"screenPosition":{"x":0.62636465,"y":0.58577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.05022,"y":33.570587,"z":-84.66285},"screenPosition":{"x":0.5717797,"y":0.60777944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.33752,"y":36.75311,"z":-85.54602},"screenPosition":{"x":0.48668632,"y":0.5898036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.336555,"y":26.78977,"z":-82.52933},"screenPosition":{"x":0.6940895,"y":0.6604713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.307884,"y":24.367691,"z":-81.82098},"screenPosition":{"x":0.750593,"y":0.6763457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.529076,"y":22.601582,"z":-81.327385},"screenPosition":{"x":0.79649836,"y":0.6862471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.76549,"y":21.527117,"z":-81.07924},"screenPosition":{"x":0.8443228,"y":0.6959006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.97475,"y":20.835852,"z":-82.034225},"screenPosition":{"x":0.87350607,"y":0.6849899},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.1689637,"y":0.77378917},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.2183453,"y":0.7530433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.63574,"y":20.830132,"z":-82.54419},"screenPosition":{"x":1.022397,"y":0.64838773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.01987,"y":22.457363,"z":-84.368576},"screenPosition":{"x":1.0540444,"y":0.616433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.62856,"y":25.658909,"z":-84.209145},"screenPosition":{"x":0.9466261,"y":0.6075346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.025604,"y":27.874985,"z":-83.93485},"screenPosition":{"x":0.9178327,"y":0.5891731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.479195,"y":28.948078,"z":-84.12971},"screenPosition":{"x":0.8698249,"y":0.59018964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.62813,"y":29.61973,"z":-84.20474},"screenPosition":{"x":0.8257515,"y":0.5928274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.816864,"y":29.82961,"z":-84.11209},"screenPosition":{"x":0.7846555,"y":0.6002979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.8647,"y":30.52439,"z":-84.2031},"screenPosition":{"x":0.7430111,"y":0.602511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.50349,"y":31.12569,"z":-84.21557},"screenPosition":{"x":0.690973,"y":0.60810286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.59941,"y":31.3586,"z":-84.13823},"screenPosition":{"x":0.6513601,"y":0.61488175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.20477,"y":32.319576,"z":-84.281494},"screenPosition":{"x":0.597243,"y":0.6168116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.41281,"y":33.69812,"z":-84.60405},"screenPosition":{"x":0.546316,"y":0.61244595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.76657,"y":36.959656,"z":-85.66335},"screenPosition":{"x":0.49520305,"y":0.58520633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.95944,"y":38.984074,"z":-86.52345},"screenPosition":{"x":0.5106052,"y":0.556462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.46156,"y":40.5332,"z":-87.26694},"screenPosition":{"x":0.54226947,"y":0.52950495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.335754,"y":39.98301,"z":-87.30997},"screenPosition":{"x":0.60256565,"y":0.5212233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.55123,"y":37.10883,"z":-86.34521},"screenPosition":{"x":0.6404072,"y":0.54712105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.00333,"y":35.283665,"z":-85.8129},"screenPosition":{"x":0.6831808,"y":0.55890477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.260216,"y":32.82542,"z":-84.91675},"screenPosition":{"x":0.6990196,"y":0.585188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.80184,"y":30.15532,"z":-83.846756},"screenPosition":{"x":0.693714,"y":0.61935425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.796,"y":28.738485,"z":-83.11246},"screenPosition":{"x":0.6517119,"y":0.6469165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.41692,"y":29.114405,"z":-83.04593},"screenPosition":{"x":0.60225564,"y":0.65498394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.12312,"y":31.034182,"z":-83.59987},"screenPosition":{"x":0.555892,"y":0.64294237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.75853,"y":34.48067,"z":-84.70357},"screenPosition":{"x":0.4981095,"y":0.6149723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.6064,"y":36.49125,"z":-85.66165},"screenPosition":{"x":0.53760487,"y":0.5803849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.27935,"y":34.941685,"z":-85.36375},"screenPosition":{"x":0.6097895,"y":0.5814284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.53724,"y":32.475132,"z":-84.46456},"screenPosition":{"x":0.6256794,"y":0.607801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.4752,"y":29.5994,"z":-83.44397},"screenPosition":{"x":0.65067166,"y":0.6369347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.006294,"y":29.135511,"z":-83.54402},"screenPosition":{"x":0.7163675,"y":0.6262439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.971245,"y":29.817375,"z":-83.94286},"screenPosition":{"x":0.74657756,"y":0.6100597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.07957,"y":30.589218,"z":-84.36282},"screenPosition":{"x":0.77429765,"y":0.593905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.54122,"y":31.695265,"z":-84.95142},"screenPosition":{"x":0.8099442,"y":0.5711979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.326324,"y":30.396658,"z":-84.73442},"screenPosition":{"x":0.87424976,"y":0.569401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.801765,"y":27.233795,"z":-83.57032},"screenPosition":{"x":0.8962594,"y":0.60473686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.526474,"y":25.398056,"z":-82.86033},"screenPosition":{"x":0.89858735,"y":0.6267353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.38492,"y":23.25244,"z":-81.953094},"screenPosition":{"x":0.88327724,"y":0.65694743},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.1737942,"y":0.7632516},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.2469623,"y":0.73143286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.63291,"y":22.46434,"z":-83.14631},"screenPosition":{"x":0.99669427,"y":0.63317233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.30307,"y":24.614563,"z":-83.86169},"screenPosition":{"x":0.9611034,"y":0.6167667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.037,"y":27.302877,"z":-83.729996},"screenPosition":{"x":0.9251465,"y":0.5938371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.873375,"y":28.249636,"z":-83.92704},"screenPosition":{"x":0.8854793,"y":0.5943991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.135574,"y":28.900438,"z":-83.98597},"screenPosition":{"x":0.8399439,"y":0.5978322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.532616,"y":29.354893,"z":-84.0411},"screenPosition":{"x":0.8114931,"y":0.5994519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.357346,"y":30.378323,"z":-84.18985},"screenPosition":{"x":0.75299484,"y":0.60164976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.23912,"y":32.713787,"z":-84.87856},"screenPosition":{"x":0.7002644,"y":0.58621436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.21288,"y":35.31933,"z":-85.733055},"screenPosition":{"x":0.6609398,"y":0.5637932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.329254,"y":36.58767,"z":-86.405945},"screenPosition":{"x":0.7021946,"y":0.5381201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.49048,"y":37.386482,"z":-86.90799},"screenPosition":{"x":0.74616855,"y":0.51731956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.77383,"y":34.960064,"z":-86.25074},"screenPosition":{"x":0.822397,"y":0.5244406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.785576,"y":31.476221,"z":-84.93115},"screenPosition":{"x":0.8250616,"y":0.57004017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.52211,"y":29.534424,"z":-84.029396},"screenPosition":{"x":0.79265434,"y":0.60210097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.85959,"y":30.705355,"z":-84.1915},"screenPosition":{"x":0.72377133,"y":0.60508704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.986496,"y":29.487312,"z":-84.35967},"screenPosition":{"x":0.8742481,"y":0.5825124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.39875,"y":28.398714,"z":-83.78694},"screenPosition":{"x":0.84002537,"y":0.6043018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.89096,"y":29.58792,"z":-84.02024},"screenPosition":{"x":0.78584176,"y":0.6032611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.439606,"y":27.211567,"z":-82.97792},"screenPosition":{"x":0.7602786,"y":0.63894886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.358055,"y":24.238525,"z":-81.924126},"screenPosition":{"x":0.78642684,"y":0.6689909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.24432,"y":21.731829,"z":-81.03906},"screenPosition":{"x":0.80830026,"y":0.69361496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-82.577385,"y":31.924582,"z":96.85216},"screenPosition":{"x":1.0870259,"y":0.81293696},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.1431108,"y":0.7912882},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.1965595,"y":0.75277644},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.1320431,"y":0.80030435},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.0900886,"y":0.8245244},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.0485251,"y":0.8539626},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":1.0090736,"y":0.87405056},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.94608355,"y":0.91047335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.351074,"y":19.703505,"z":-79.77203},"screenPosition":{"x":0.7027415,"y":0.74883366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.62774,"y":22.427143,"z":-80.72198},"screenPosition":{"x":0.67187035,"y":0.7198622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.42934,"y":23.78504,"z":-81.297844},"screenPosition":{"x":0.68195623,"y":0.7006429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.317085,"y":26.856514,"z":-82.47809},"screenPosition":{"x":0.67627317,"y":0.6642823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.56299,"y":26.793516,"z":-82.742905},"screenPosition":{"x":0.7437235,"y":0.6482227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.168686,"y":23.237257,"z":-81.58161},"screenPosition":{"x":0.7981195,"y":0.6783882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.84456,"y":20.652504,"z":-80.53178},"screenPosition":{"x":0.79274297,"y":0.7151848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.47161,"y":19.589916,"z":-81.016304},"screenPosition":{"x":0.75020266,"y":0.73108935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.48923,"y":19.088406,"z":-80.60657},"screenPosition":{"x":0.70057094,"y":0.7496452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.40776,"y":20.273987,"z":-79.818054},"screenPosition":{"x":0.65776575,"y":0.74955356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.76068,"y":22.241312,"z":-80.41598},"screenPosition":{"x":0.61718476,"y":0.73529804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.44025,"y":24.622879,"z":-81.136604},"screenPosition":{"x":0.567836,"y":0.71882004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.47937,"y":27.152508,"z":-82.18859},"screenPosition":{"x":0.5817825,"y":0.6842249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.969376,"y":24.217634,"z":-81.334236},"screenPosition":{"x":0.65055966,"y":0.7027798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.90277,"y":22.094547,"z":-80.50582},"screenPosition":{"x":0.65190184,"y":0.7289369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.1503,"y":20.202572,"z":-79.812294},"screenPosition":{"x":0.6631398,"y":0.74932593},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.846961,"y":0.95040333},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":{"x":0.7475926,"y":1.0282539},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.68371326,"y":1.0438826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.31404,"y":17.289383,"z":-79.13678},"screenPosition":{"x":0.52488726,"y":0.81801677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.52525,"y":19.882273,"z":-78.827644},"screenPosition":{"x":0.46307445,"y":0.80327594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.08951,"y":22.755726,"z":-79.88552},"screenPosition":{"x":0.44697568,"y":0.7719506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.92151,"y":24.984177,"z":-80.84598},"screenPosition":{"x":0.46706104,"y":0.73936427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.57938,"y":25.54181,"z":-81.30055},"screenPosition":{"x":0.5220673,"y":0.7189403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.36526,"y":22.316462,"z":-80.319984},"screenPosition":{"x":0.58833027,"y":0.7420738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.4198,"y":19.40938,"z":-79.27929},"screenPosition":{"x":0.6109479,"y":0.7713507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.52542,"y":17.91903,"z":-79.6512},"screenPosition":{"x":0.59309536,"y":0.799245},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.68371326,"y":1.0438826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.86458,"y":17.031693,"z":-78.92625},"screenPosition":{"x":0.4970295,"y":0.82574314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.34706,"y":20.199642,"z":-79.03097},"screenPosition":{"x":0.48144308,"y":0.7947878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.07315,"y":21.866886,"z":-79.79943},"screenPosition":{"x":0.5081335,"y":0.7676194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.7853,"y":20.860655,"z":-79.61573},"screenPosition":{"x":0.5572786,"y":0.7677301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.47353,"y":20.327364,"z":-79.602486},"screenPosition":{"x":0.6029219,"y":0.76289773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.32045,"y":20.58019,"z":-79.85739},"screenPosition":{"x":0.63881737,"y":0.750325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.0079,"y":22.894161,"z":-80.62984},"screenPosition":{"x":0.6077305,"y":0.73012614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.71782,"y":25.323706,"z":-81.441765},"screenPosition":{"x":0.5746853,"y":0.7081949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.8112,"y":27.295835,"z":-81.98473},"screenPosition":{"x":0.52100366,"y":0.6973007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.8454,"y":25.229845,"z":-80.9394},"screenPosition":{"x":0.4664328,"y":0.7366629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.25081,"y":22.640337,"z":-80.21465},"screenPosition":{"x":0.53419715,"y":0.75160086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.75366,"y":21.786722,"z":-80.10139},"screenPosition":{"x":0.5855295,"y":0.748862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.64235,"y":24.05104,"z":-81.14681},"screenPosition":{"x":0.6224659,"y":0.7122189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.91121,"y":27.610453,"z":-82.2423},"screenPosition":{"x":0.5524523,"y":0.68591255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.7385,"y":25.813599,"z":-81.30876},"screenPosition":{"x":0.49914545,"y":0.72131824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.20105,"y":21.656754,"z":-79.94429},"screenPosition":{"x":0.5610818,"y":0.75698894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.04073,"y":21.151545,"z":-80.00599},"screenPosition":{"x":0.62161976,"y":0.7480937},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":{"x":0.838879,"y":0.9841745},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":{"x":0.6622979,"y":1.0838429},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.5942316,"y":1.1096594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.89449,"y":16.694334,"z":-78.65063},"screenPosition":{"x":0.46364298,"y":0.83822536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.59239,"y":19.646763,"z":-78.585495},"screenPosition":{"x":0.42817822,"y":0.8148822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.4951,"y":22.350887,"z":-79.55709},"screenPosition":{"x":0.4074519,"y":0.7867946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.62004,"y":24.250256,"z":-80.30128},"screenPosition":{"x":0.40726468,"y":0.76339704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.85068,"y":26.081463,"z":-80.93655},"screenPosition":{"x":0.38795105,"y":0.7457379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.22389,"y":28.007362,"z":-81.594666},"screenPosition":{"x":0.36530375,"y":0.72773975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.03868,"y":30.259563,"z":-82.411865},"screenPosition":{"x":0.34991255,"y":0.7036594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.96327,"y":33.079136,"z":-83.42295},"screenPosition":{"x":0.32782328,"y":0.6747117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.89664,"y":34.578163,"z":-84.11558},"screenPosition":{"x":0.35221568,"y":0.65018517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.78186,"y":36.431244,"z":-84.93812},"screenPosition":{"x":0.37451598,"y":0.6216699},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-132.2362,"y":41.56842,"z":-87.11763},"screenPosition":{"x":0.41287717,"y":0.54903144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.99321,"y":44.245308,"z":-88.014145},"screenPosition":{"x":0.3771619,"y":0.525044},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-135.76039,"y":47.79192,"z":-89.06694},"screenPosition":{"x":0.29837272,"y":0.5010957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.0346,"y":49.93928,"z":-89.73508},"screenPosition":{"x":0.25785622,"y":0.48479748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.52293,"y":53.05366,"z":-90.88466},"screenPosition":{"x":0.24107353,"y":0.4506775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.97885,"y":53.88975,"z":-91.37745},"screenPosition":{"x":0.27948412,"y":0.43080696},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-129.26454,"y":56.08401,"z":-92.52057},"screenPosition":{"x":0.3453095,"y":0.38741148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.4821,"y":59.285213,"z":-93.56879},"screenPosition":{"x":0.29702768,"y":0.3600993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.04378,"y":59.366768,"z":-93.32532},"screenPosition":{"x":0.23283394,"y":0.3750831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.67415,"y":57.61772,"z":-92.57693},"screenPosition":{"x":0.21829587,"y":0.40022475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.88274,"y":54.287846,"z":-91.29718},"screenPosition":{"x":0.22440794,"y":0.43965656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.21768,"y":51.288136,"z":-90.431564},"screenPosition":{"x":0.29683578,"y":0.45847604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.937,"y":53.98109,"z":-91.64279},"screenPosition":{"x":0.33295503,"y":0.41633806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.36862,"y":56.24765,"z":-92.4179},"screenPosition":{"x":0.30643386,"y":0.39507875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.4392,"y":58.659348,"z":-93.19587},"screenPosition":{"x":0.26734427,"y":0.3752037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.91568,"y":59.875385,"z":-93.59299},"screenPosition":{"x":0.24872078,"y":0.36486202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.22983,"y":62.165855,"z":-94.38561},"screenPosition":{"x":0.22409521,"y":0.34283552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.96935,"y":64.65352,"z":-95.29253},"screenPosition":{"x":0.20822199,"y":0.31637245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.94754,"y":65.824196,"z":-95.7116},"screenPosition":{"x":0.19874126,"y":0.30416605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.76297,"y":68.06806,"z":-96.52577},"screenPosition":{"x":0.1836084,"y":0.2806136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.93922,"y":70.162994,"z":-97.33576},"screenPosition":{"x":0.18067877,"y":0.2553072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.47334,"y":72.20908,"z":-98.100945},"screenPosition":{"x":0.17220348,"y":0.23256579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.18082,"y":73.88162,"z":-98.71967},"screenPosition":{"x":0.16353065,"y":0.21417356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.73686,"y":76.04016,"z":-99.52327},"screenPosition":{"x":0.15329778,"y":0.18985224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.22833,"y":77.85584,"z":-100.20957},"screenPosition":{"x":0.14728224,"y":0.16902079},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-127.369675,"y":81.36297,"z":-101.67879},"screenPosition":{"x":0.18384083,"y":0.11723483},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-124.1549,"y":77.96814,"z":-101.07173},"screenPosition":{"x":0.25412142,"y":0.139591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.1392,"y":75.94301,"z":-99.916985},"screenPosition":{"x":0.2567505,"y":0.16760254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.64139,"y":75.73762,"z":-99.652275},"screenPosition":{"x":0.21099599,"y":0.17917292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.94794,"y":76.374466,"z":-99.70284},"screenPosition":{"x":0.16475956,"y":0.18316655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.11127,"y":77.50053,"z":-99.93879},"screenPosition":{"x":0.11671394,"y":0.18108836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.81483,"y":79.39176,"z":-100.48275},"screenPosition":{"x":0.0705854,"y":0.16927134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.91255,"y":81.83879,"z":-101.34776},"screenPosition":{"x":0.04851819,"y":0.14468065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.18443,"y":83.80169,"z":-102.103355},"screenPosition":{"x":0.04519466,"y":0.12136655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.37024,"y":85.305145,"z":-102.70171},"screenPosition":{"x":0.047598656,"y":0.10279637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.73036,"y":86.43525,"z":-103.15362},"screenPosition":{"x":0.049242895,"y":0.08796361},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-011012/brain-CB25A4-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9836790315906843,-0.17392292927393144,0.04611266075156491,0.0,-0.17916861494029324,0.9232088641103636,-0.33997647072765064,0.0,0.016558086519607215,-0.34268966704706344,-0.9393027317483869,0.0,-139.34762916674563,11.674673858723715,-196.01554316220995,1.0]},"baseImage":"20190824-011012/base.webp","version":0,"savedAt":1.566609403901E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-035740-v0.json b/data/mapping/BAAAHS/dwayman/20190824-035740-v0.json new file mode 100644 index 0000000000..51974a2b95 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-035740-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566619060715E12,"surfaces":[{"brainId":"C78448","panelName":"40D","pixels":[{"modelPosition":{"x":-389.16077,"y":133.20168,"z":-80.872574},"screenPosition":{"x":0.0689486,"y":0.64195305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.76443,"y":132.22186,"z":-78.65457},"screenPosition":{"x":0.12567835,"y":0.6257883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.46082,"y":131.09901,"z":-77.8526},"screenPosition":{"x":0.15351264,"y":0.60777164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.95593,"y":130.17345,"z":-74.98526},"screenPosition":{"x":0.2560389,"y":0.592844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.47922,"y":130.9837,"z":-73.23738},"screenPosition":{"x":0.3184749,"y":0.6061677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.6933,"y":132.51773,"z":-71.84599},"screenPosition":{"x":0.3681365,"y":0.6312776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0844,"y":135.79367,"z":-70.25465},"screenPosition":{"x":0.42490846,"y":0.6847866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.0998,"y":138.73277,"z":-71.39113},"screenPosition":{"x":0.3843447,"y":0.7325184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9296,"y":139.75395,"z":-73.88549},"screenPosition":{"x":0.29544222,"y":0.74885803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.0086,"y":138.79651,"z":-76.08984},"screenPosition":{"x":0.21616906,"y":0.7334547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.26733,"y":135.71175,"z":-76.935234},"screenPosition":{"x":0.18609247,"y":0.683079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.98804,"y":132.64975,"z":-78.39859},"screenPosition":{"x":0.13466564,"y":0.6328139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.31586,"y":137.7025,"z":-74.58641},"screenPosition":{"x":0.27025735,"y":0.7155283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.933,"y":128.71072,"z":-73.860306},"screenPosition":{"x":0.2963132,"y":0.56904876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.89532,"y":128.08102,"z":-71.60543},"screenPosition":{"x":0.37693527,"y":0.5589113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.3753,"y":130.10818,"z":-68.76114},"screenPosition":{"x":0.4787229,"y":0.5920375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.25888,"y":133.39323,"z":-68.901184},"screenPosition":{"x":0.47335002,"y":0.6457377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.12344,"y":135.95602,"z":-70.21015},"screenPosition":{"x":0.42653477,"y":0.6874056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.7539,"y":137.5447,"z":-71.78608},"screenPosition":{"x":0.37005046,"y":0.7132913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.5342,"y":137.85727,"z":-74.33593},"screenPosition":{"x":0.27908072,"y":0.7181336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.9952,"y":136.22765,"z":-76.100296},"screenPosition":{"x":0.21646608,"y":0.6912921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.19687,"y":133.91066,"z":-77.0127},"screenPosition":{"x":0.18340519,"y":0.6536913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.07886,"y":131.77121,"z":-78.29259},"screenPosition":{"x":0.138707,"y":0.6184435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.17725,"y":129.41629,"z":-78.17505},"screenPosition":{"x":0.13022046,"y":0.57371306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.26666,"y":127.24496,"z":-78.44253},"screenPosition":{"x":0.15607259,"y":0.5449209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.2932,"y":124.341286,"z":-77.25797},"screenPosition":{"x":0.19854224,"y":0.4976214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.83768,"y":122.14214,"z":-75.10561},"screenPosition":{"x":0.23656861,"y":0.45527047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.64685,"y":122.885635,"z":-73.02925},"screenPosition":{"x":0.32627994,"y":0.474068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.04553,"y":124.6852,"z":-71.426384},"screenPosition":{"x":0.38377196,"y":0.50347763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.88287,"y":127.16454,"z":-70.46948},"screenPosition":{"x":0.41778633,"y":0.5439669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.24976,"y":129.44511,"z":-70.05255},"screenPosition":{"x":0.43237662,"y":0.58125854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.88116,"y":132.68616,"z":-70.48208},"screenPosition":{"x":0.41687784,"y":0.6341073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.5559,"y":134.7103,"z":-72.00802},"screenPosition":{"x":0.36260006,"y":0.6668377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.8795,"y":135.27322,"z":-73.93441},"screenPosition":{"x":0.2939608,"y":0.6758088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.18442,"y":132.99419,"z":-75.876755},"screenPosition":{"x":0.22404759,"y":0.63880813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.07397,"y":129.37836,"z":-77.14511},"screenPosition":{"x":0.17887741,"y":0.5797431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.0881,"y":127.707756,"z":-74.82873},"screenPosition":{"x":0.26174518,"y":0.5526281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.1232,"y":127.12965,"z":-72.49036},"screenPosition":{"x":0.34534916,"y":0.5433374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.97665,"y":128.30862,"z":-70.364006},"screenPosition":{"x":0.42129576,"y":0.562699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.9471,"y":129.97466,"z":-68.10418},"screenPosition":{"x":0.50199133,"y":0.59001476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.01724,"y":133.89548,"z":-69.17968},"screenPosition":{"x":0.4636088,"y":0.6537465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.1149,"y":135.78001,"z":-71.36808},"screenPosition":{"x":0.38507056,"y":0.6845275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.91327,"y":135.16246,"z":-73.89541},"screenPosition":{"x":0.29527023,"y":0.6740501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.4474,"y":131.46469,"z":-74.42332},"screenPosition":{"x":0.27606547,"y":0.61394346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.0481,"y":128.82756,"z":-72.57988},"screenPosition":{"x":0.34236556,"y":0.5709423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.85205,"y":129.29793,"z":-70.50902},"screenPosition":{"x":0.41623652,"y":0.57876354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.73926,"y":130.36613,"z":-68.343666},"screenPosition":{"x":0.49355096,"y":0.5963077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.314,"y":132.25523,"z":-67.68724},"screenPosition":{"x":0.51700324,"y":0.6270828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.17755,"y":136.10017,"z":-66.702866},"screenPosition":{"x":0.5518969,"y":0.68991464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.8913,"y":138.28667,"z":-68.18431},"screenPosition":{"x":0.4990941,"y":0.7252387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.9837,"y":139.89809,"z":-70.378204},"screenPosition":{"x":0.42026418,"y":0.7517694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.83914,"y":138.51276,"z":-72.83853},"screenPosition":{"x":0.33238995,"y":0.72902113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.3395,"y":134.92575,"z":-73.40544},"screenPosition":{"x":0.31228992,"y":0.67046857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.51724,"y":132.4282,"z":-70.89954},"screenPosition":{"x":0.40208584,"y":0.6298126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.70084,"y":133.97589,"z":-68.39473},"screenPosition":{"x":0.49144498,"y":0.65525824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.37653,"y":137.65242,"z":-68.77427},"screenPosition":{"x":0.47793144,"y":0.7149992},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-395.3067,"y":136.6889,"z":-72.298035},"screenPosition":{"x":0.3517909,"y":0.6992993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.90936,"y":134.422,"z":-71.60154},"screenPosition":{"x":0.37678757,"y":0.66235864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.09003,"y":133.94707,"z":-69.09618},"screenPosition":{"x":0.46657637,"y":0.6546011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.8973,"y":125.516716,"z":-76.19211},"screenPosition":{"x":0.21311443,"y":0.51680136},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-394.9508,"y":121.88874,"z":-72.67826},"screenPosition":{"x":0.33887032,"y":0.4578257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.71048,"y":121.92364,"z":-70.65738},"screenPosition":{"x":0.4110988,"y":0.45851648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.49637,"y":123.32414,"z":-68.60903},"screenPosition":{"x":0.48430383,"y":0.4814799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.7652,"y":125.8399,"z":-67.15666},"screenPosition":{"x":0.5361386,"y":0.5225836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.6773,"y":128.74106,"z":-67.26321},"screenPosition":{"x":0.532105,"y":0.5699403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.2507,"y":131.09749,"z":-68.90614},"screenPosition":{"x":0.47337112,"y":0.6082299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.09857,"y":131.18854,"z":-71.378},"screenPosition":{"x":0.38522294,"y":0.60948825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.874,"y":129.10826,"z":-72.78037},"screenPosition":{"x":0.33540556,"y":0.57544005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.2478,"y":126.140335,"z":-72.34535},"screenPosition":{"x":0.35092527,"y":0.52713543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.47177,"y":124.448494,"z":-70.93641},"screenPosition":{"x":0.4013566,"y":0.49963677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.04163,"y":123.94474,"z":-69.13251},"screenPosition":{"x":0.46571952,"y":0.49154642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.76227,"y":123.817276,"z":-67.15613},"screenPosition":{"x":0.53615487,"y":0.48961994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.3141,"y":124.24365,"z":-65.37474},"screenPosition":{"x":0.5998387,"y":0.49667192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.02194,"y":125.31944,"z":-63.415382},"screenPosition":{"x":0.66981286,"y":0.51433164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.6747,"y":127.53325,"z":-62.669964},"screenPosition":{"x":0.6963311,"y":0.55051214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.54584,"y":129.90182,"z":-61.67407},"screenPosition":{"x":0.7318285,"y":0.5891595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.59827,"y":132.63304,"z":-61.619118},"screenPosition":{"x":0.7336598,"y":0.63377357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.88052,"y":134.78311,"z":-63.596035},"screenPosition":{"x":0.6629037,"y":0.6687312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.09464,"y":133.38261,"z":-65.64439},"screenPosition":{"x":0.58975494,"y":0.6457602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.78485,"y":130.33427,"z":-65.99431},"screenPosition":{"x":0.5773858,"y":0.5960083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.7462,"y":128.05219,"z":-64.88584},"screenPosition":{"x":0.6171079,"y":0.55884486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.94687,"y":127.01735,"z":-63.504906},"screenPosition":{"x":0.666512,"y":0.5420456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.98624,"y":125.059975,"z":-62.307446},"screenPosition":{"x":0.7094001,"y":0.5101849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.51608,"y":122.74148,"z":-61.694443},"screenPosition":{"x":0.73141485,"y":0.4723976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.4299,"y":120.121025,"z":-61.78839},"screenPosition":{"x":0.7281754,"y":0.42964175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.70435,"y":117.85563,"z":-62.617302},"screenPosition":{"x":0.69865096,"y":0.39263418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.88992,"y":116.83901,"z":-64.69916},"screenPosition":{"x":0.6242903,"y":0.37592536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.3381,"y":116.41264,"z":-66.48054},"screenPosition":{"x":0.56063646,"y":0.3688609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.8853,"y":117.403465,"z":-68.150955},"screenPosition":{"x":0.50088775,"y":0.3849249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.7056,"y":119.530785,"z":-69.50991},"screenPosition":{"x":0.45221987,"y":0.41954836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.29803,"y":122.609474,"z":-69.98393},"screenPosition":{"x":0.4353602,"y":0.46972826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.53113,"y":124.86576,"z":-67.42363},"screenPosition":{"x":0.5266133,"y":0.5066908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.9482,"y":123.61547,"z":-64.64528},"screenPosition":{"x":0.6259067,"y":0.48647857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.31152,"y":120.1013,"z":-64.221245},"screenPosition":{"x":0.64122146,"y":0.42917374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.6483,"y":117.341255,"z":-64.977646},"screenPosition":{"x":0.614312,"y":0.38410118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.40762,"y":116.56134,"z":-67.54948},"screenPosition":{"x":0.52242386,"y":0.37122256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.93152,"y":118.209175,"z":-69.2479},"screenPosition":{"x":0.4616443,"y":0.39800337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.66855,"y":119.73866,"z":-70.70134},"screenPosition":{"x":0.4096264,"y":0.42286804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.9541,"y":121.791626,"z":-71.525826},"screenPosition":{"x":0.38006485,"y":0.4563107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.1806,"y":124.24214,"z":-71.270386},"screenPosition":{"x":0.38923654,"y":0.49628225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.5337,"y":126.07357,"z":-72.01687},"screenPosition":{"x":0.36244535,"y":0.5261111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.32877,"y":128.48767,"z":-72.2569},"screenPosition":{"x":0.35412452,"y":0.56535834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.11005,"y":130.45262,"z":-73.66035},"screenPosition":{"x":0.30353385,"y":0.59742683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.4156,"y":131.9457,"z":-75.60925},"screenPosition":{"x":0.23365603,"y":0.6217192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.36707,"y":129.95494,"z":-77.95808},"screenPosition":{"x":0.14979453,"y":0.5891008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.614,"y":126.26248,"z":-78.041725},"screenPosition":{"x":0.16899674,"y":0.5283629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.38815,"y":123.03586,"z":-75.6236},"screenPosition":{"x":0.22239496,"y":0.47105604},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-395.68683,"y":124.70038,"z":-71.838356},"screenPosition":{"x":0.36913672,"y":0.50368816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.66245,"y":134.65112,"z":-71.88553},"screenPosition":{"x":0.36688063,"y":0.6659353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.48065,"y":122.504776,"z":-68.62551},"screenPosition":{"x":0.4837176,"y":0.46811748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.51904,"y":118.89502,"z":-68.574455},"screenPosition":{"x":0.4856836,"y":0.40923265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.49152,"y":117.99675,"z":-70.9013},"screenPosition":{"x":0.4025583,"y":0.39443842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.8646,"y":119.26829,"z":-72.77221},"screenPosition":{"x":0.3356309,"y":0.41506985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.90326,"y":121.55038,"z":-73.88068},"screenPosition":{"x":0.29590872,"y":0.45223328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.42618,"y":124.48036,"z":-73.28577},"screenPosition":{"x":0.3170396,"y":0.500069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.29535,"y":126.47871,"z":-71.14293},"screenPosition":{"x":0.39353836,"y":0.5327989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.66815,"y":124.79293,"z":-68.414566},"screenPosition":{"x":0.49132076,"y":0.50541764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.7936,"y":108.61805,"z":-67.090866},"screenPosition":{"x":0.5392652,"y":0.2417472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.2231,"y":108.28423,"z":-65.44846},"screenPosition":{"x":0.5978925,"y":0.23631564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.96475,"y":109.24926,"z":-63.450104},"screenPosition":{"x":0.66927636,"y":0.25218397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.19983,"y":111.87578,"z":-62.03673},"screenPosition":{"x":0.719672,"y":0.29511347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.22897,"y":115.26401,"z":-62.009792},"screenPosition":{"x":0.7204817,"y":0.35039082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.5873,"y":117.36856,"z":-62.750786},"screenPosition":{"x":0.69391286,"y":0.38469034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.67972,"y":118.97999,"z":-64.94468},"screenPosition":{"x":0.6154151,"y":0.41083702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.8758,"y":118.50961,"z":-67.01554},"screenPosition":{"x":0.54141957,"y":0.40303883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.19644,"y":117.04993,"z":-68.9414},"screenPosition":{"x":0.47265166,"y":0.3791097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.17255,"y":113.93482,"z":-68.962845},"screenPosition":{"x":0.47202605,"y":0.3282884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.6211,"y":111.38872,"z":-69.59126},"screenPosition":{"x":0.4496803,"y":0.2867134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.6995,"y":109.593704,"z":-68.34931},"screenPosition":{"x":0.49415138,"y":0.25750402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.4087,"y":107.26761,"z":-67.53032},"screenPosition":{"x":0.5235289,"y":0.21960533},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-403.09692,"y":106.78358,"z":-63.293568},"screenPosition":{"x":0.6749805,"y":0.21196343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.15265,"y":109.41768,"z":-62.08619},"screenPosition":{"x":0.73558635,"y":0.2544368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.43063,"y":112.94702,"z":-62.9222},"screenPosition":{"x":0.68797535,"y":0.3125366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.9883,"y":114.48409,"z":-64.58163},"screenPosition":{"x":0.6286043,"y":0.33752063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.2624,"y":114.33843,"z":-66.5635},"screenPosition":{"x":0.5577651,"y":0.33501717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.65585,"y":112.930336,"z":-68.40586},"screenPosition":{"x":0.49220425,"y":0.3120473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.94797,"y":111.854546,"z":-70.36523},"screenPosition":{"x":0.42208245,"y":0.29430497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.6937,"y":109.065605,"z":-71.02625},"screenPosition":{"x":0.42196688,"y":0.24878782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.59598,"y":106.513435,"z":-69.98509},"screenPosition":{"x":0.45782658,"y":0.20673257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2212,"y":104.97946,"z":-67.741264},"screenPosition":{"x":0.516362,"y":0.18255687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.69824,"y":104.98401,"z":-64.89644},"screenPosition":{"x":0.61777216,"y":0.18250883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.673,"y":105.27078,"z":-63.77751},"screenPosition":{"x":0.6577518,"y":0.18725458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.46378,"y":109.06414,"z":-62.876633},"screenPosition":{"x":0.689781,"y":0.24919829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.34735,"y":112.34919,"z":-63.01668},"screenPosition":{"x":0.6846564,"y":0.3028387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.66046,"y":112.36588,"z":-64.95406},"screenPosition":{"x":0.61539763,"y":0.30295256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.76337,"y":114.52355,"z":-67.13697},"screenPosition":{"x":0.5373452,"y":0.33804402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.78995,"y":110.83489,"z":-69.39626},"screenPosition":{"x":0.45673874,"y":0.2777253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.36542,"y":108.48452,"z":-66.43391},"screenPosition":{"x":0.56266177,"y":0.23952395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.69946,"y":112.52824,"z":-64.90957},"screenPosition":{"x":0.6169617,"y":0.30558503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.62305,"y":114.69349,"z":-67.29846},"screenPosition":{"x":0.53149265,"y":0.34077123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.72534,"y":113.07904,"z":-69.4748},"screenPosition":{"x":0.4537665,"y":0.31429636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.6339,"y":110.18546,"z":-69.57424},"screenPosition":{"x":0.45057228,"y":0.2672171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.12476,"y":107.704605,"z":-69.00574},"screenPosition":{"x":0.47087586,"y":0.22672275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0855,"y":126.49995,"z":-70.23549},"screenPosition":{"x":0.42597124,"y":0.53319997},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.61826,"y":104.28906,"z":-63.838493},"screenPosition":{"x":0.65574634,"y":0.17158511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.2429,"y":101.83248,"z":-65.41335},"screenPosition":{"x":0.59943914,"y":0.13106366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.49368,"y":102.343834,"z":-67.42324},"screenPosition":{"x":0.52061766,"y":0.13891801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.63364,"y":104.29362,"z":-68.41471},"screenPosition":{"x":0.49072582,"y":0.17220928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.59076,"y":106.528145,"z":-69.9911},"screenPosition":{"x":0.45908022,"y":0.20745379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.9469,"y":108.34935,"z":-70.734055},"screenPosition":{"x":0.42270947,"y":0.2339537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.4903,"y":110.45252,"z":-70.88817},"screenPosition":{"x":0.4017403,"y":0.27131465},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.9237,"y":113.79371,"z":-68.0999},"screenPosition":{"x":0.5028759,"y":0.32603815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.1927,"y":130.21289,"z":-70.11956},"screenPosition":{"x":0.43015113,"y":0.59368664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.92078,"y":114.70563,"z":-64.65962},"screenPosition":{"x":0.62579685,"y":0.3411221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.31943,"y":116.505196,"z":-63.05675},"screenPosition":{"x":0.6830342,"y":0.37060562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.83713,"y":119.16206,"z":-62.467335},"screenPosition":{"x":0.7039521,"y":0.4139564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.39575,"y":122.35152,"z":-62.98036},"screenPosition":{"x":0.68547136,"y":0.46595854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.78983,"y":124.715546,"z":-64.829285},"screenPosition":{"x":0.61928016,"y":0.50441414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.89505,"y":125.12371,"z":-67.00616},"screenPosition":{"x":0.5414687,"y":0.5109382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.55344,"y":122.556366,"z":-68.54202},"screenPosition":{"x":0.48667732,"y":0.46896607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2807,"y":119.30015,"z":-67.700516},"screenPosition":{"x":0.5169016,"y":0.4158945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.16498,"y":118.34573,"z":-65.53463},"screenPosition":{"x":0.5943577,"y":0.4004544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.82626,"y":120.73555,"z":-63.63129},"screenPosition":{"x":0.66227883,"y":0.43955636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.13608,"y":123.78389,"z":-63.281364},"screenPosition":{"x":0.67464805,"y":0.48930824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.91467,"y":132.55263,"z":-62.404068},"screenPosition":{"x":0.7056078,"y":0.63241446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.45502,"y":130.78036,"z":-61.780075},"screenPosition":{"x":0.7280101,"y":0.60343134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.0396,"y":129.44359,"z":-61.106094},"screenPosition":{"x":0.7521405,"y":0.5817715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.21603,"y":127.413376,"z":-60.89957},"screenPosition":{"x":0.7596138,"y":0.548663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.83115,"y":126.06294,"z":-61.33902},"screenPosition":{"x":0.74396807,"y":0.5266055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.02524,"y":125.222336,"z":-62.26295},"screenPosition":{"x":0.7109852,"y":0.5128331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.84262,"y":125.327034,"z":-63.62137},"screenPosition":{"x":0.6624597,"y":0.51443744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.10718,"y":126.28751,"z":-64.467834},"screenPosition":{"x":0.632128,"y":0.53008103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.13013,"y":127.75023,"z":-65.59279},"screenPosition":{"x":0.59190106,"y":0.55384487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.50125,"y":128.65154,"z":-66.316765},"screenPosition":{"x":0.5660072,"y":0.5684909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.4809,"y":131.33116,"z":-66.34531},"screenPosition":{"x":0.56479543,"y":0.61225057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.2812,"y":134.01837,"z":-66.57984},"screenPosition":{"x":0.55638945,"y":0.6559722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.27887,"y":135.76788,"z":-66.58587},"screenPosition":{"x":0.55599666,"y":0.6846169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.0244,"y":137.47337,"z":-66.88138},"screenPosition":{"x":0.54535735,"y":0.71242267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.22046,"y":139.93753,"z":-65.512505},"screenPosition":{"x":0.5942354,"y":0.7525855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.01917,"y":140.13478,"z":-63.447136},"screenPosition":{"x":0.66798365,"y":0.7560476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.49527,"y":138.48695,"z":-61.74871},"screenPosition":{"x":0.72876316,"y":0.7292668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.3448,"y":135.99092,"z":-60.768227},"screenPosition":{"x":0.76391417,"y":0.6883909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.85565,"y":132.95016,"z":-61.324142},"screenPosition":{"x":0.744192,"y":0.6389104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.9527,"y":131.06259,"z":-63.505974},"screenPosition":{"x":0.6662908,"y":0.6080398},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-399.512,"y":135.08963,"z":-67.4653},"screenPosition":{"x":0.5245946,"y":0.673499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.91788,"y":137.53255,"z":-67.003876},"screenPosition":{"x":0.5410139,"y":0.7133341},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.2152,"y":139.66441,"z":-65.518},"screenPosition":{"x":0.5939881,"y":0.7482494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.5021,"y":141.25003,"z":-64.04312},"screenPosition":{"x":0.6467493,"y":0.77385354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.31287,"y":144.48349,"z":-64.26666},"screenPosition":{"x":0.63849556,"y":0.8269434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.98236,"y":146.23451,"z":-65.798096},"screenPosition":{"x":0.5836798,"y":0.8554175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.99384,"y":145.4986,"z":-68.080444},"screenPosition":{"x":0.50215024,"y":0.8432547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.03943,"y":142.5322,"z":-69.17083},"screenPosition":{"x":0.46329924,"y":0.79481494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.427,"y":140.0134,"z":-67.57238},"screenPosition":{"x":0.5205447,"y":0.75381935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.62866,"y":140.63097,"z":-65.045044},"screenPosition":{"x":0.61096245,"y":0.763797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.46075,"y":142.83717,"z":-64.09364},"screenPosition":{"x":0.64483094,"y":0.7998513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.94467,"y":145.60481,"z":-63.543224},"screenPosition":{"x":0.6643019,"y":0.8452801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.63644,"y":147.98097,"z":-62.75331},"screenPosition":{"x":0.6924274,"y":0.8840924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.37808,"y":148.946,"z":-60.75495},"screenPosition":{"x":0.76380914,"y":0.89995605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.18436,"y":147.66687,"z":-58.678055},"screenPosition":{"x":0.8380993,"y":0.8792132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.34833,"y":144.7202,"z":-57.335587},"screenPosition":{"x":0.88610584,"y":0.83089536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.81686,"y":141.6142,"z":-59.088425},"screenPosition":{"x":0.82370555,"y":0.78044474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.0182,"y":141.41695,"z":-61.153797},"screenPosition":{"x":0.7499021,"y":0.7767121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.06635,"y":142.59288,"z":-63.397682},"screenPosition":{"x":0.66964006,"y":0.7961521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.105,"y":144.87497,"z":-64.50615},"screenPosition":{"x":0.6300206,"y":0.8330007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.80923,"y":148.1676,"z":-64.85219},"screenPosition":{"x":0.61853755,"y":0.8834016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.88065,"y":149.4203,"z":-63.998455},"screenPosition":{"x":0.67132926,"y":0.90755904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.68018,"y":150.68372,"z":-61.934174},"screenPosition":{"x":0.7450536,"y":0.92829454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.28427,"y":151.80992,"z":-60.09409},"screenPosition":{"x":0.81077087,"y":0.946778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.83188,"y":149.60756,"z":-57.938133},"screenPosition":{"x":0.8644578,"y":0.91091806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.63715,"y":146.67606,"z":-57.00764},"screenPosition":{"x":0.897848,"y":0.8631492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.4106,"y":144.22554,"z":-57.263084},"screenPosition":{"x":0.8888288,"y":0.8231561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.08276,"y":142.10733,"z":-57.635525},"screenPosition":{"x":0.87561285,"y":0.78857714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.6769,"y":139.6644,"z":-58.096954},"screenPosition":{"x":0.8592309,"y":0.74869543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.19824,"y":137.16989,"z":-58.641876},"screenPosition":{"x":0.83986706,"y":0.70796704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.5845,"y":135.11844,"z":-59.3428},"screenPosition":{"x":0.8149075,"y":0.6744575},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-406.34454,"y":130.09908,"z":-59.608696},"screenPosition":{"x":0.8056308,"y":0.5925552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.3403,"y":128.5438,"z":-61.907528},"screenPosition":{"x":0.7235363,"y":0.56704414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.67206,"y":131.40248,"z":-63.82896},"screenPosition":{"x":0.654772,"y":0.61349785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.51465,"y":134.15494,"z":-62.866566},"screenPosition":{"x":0.68900466,"y":0.6585269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.04315,"y":135.23831,"z":-61.113194},"screenPosition":{"x":0.7516247,"y":0.67630666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.92477,"y":138.15314,"z":-60.106304},"screenPosition":{"x":0.78748107,"y":0.72391963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.89587,"y":140.65675,"z":-61.292774},"screenPosition":{"x":0.7449611,"y":0.7646925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.079,"y":124.55167,"z":-63.348373},"screenPosition":{"x":0.67223805,"y":0.50181633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.15802,"y":123.59423,"z":-65.55272},"screenPosition":{"x":0.5934738,"y":0.48607746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.14914,"y":125.53795,"z":-67.86362},"screenPosition":{"x":0.5109496,"y":0.51760095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.50748,"y":127.6425,"z":-68.60461},"screenPosition":{"x":0.48421043,"y":0.55193776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.2868,"y":129.23723,"z":-68.861115},"screenPosition":{"x":0.4749701,"y":0.57793885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.76645,"y":130.44958,"z":-70.60953},"screenPosition":{"x":0.4127016,"y":0.59748846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.3146,"y":133.0928,"z":-71.133545},"screenPosition":{"x":0.39403287,"y":0.6404546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0454,"y":135.63132,"z":-70.29914},"screenPosition":{"x":0.42328322,"y":0.68216586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.17426,"y":136.19728,"z":-67.8553},"screenPosition":{"x":0.5109375,"y":0.6912124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.9225,"y":134.03355,"z":-66.99181},"screenPosition":{"x":0.54164094,"y":0.65622467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.2835,"y":132.26888,"z":-66.57381},"screenPosition":{"x":0.5567835,"y":0.627354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.00552,"y":128.73953,"z":-65.7378},"screenPosition":{"x":0.5866261,"y":0.5700072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.15768,"y":125.71396,"z":-66.70569},"screenPosition":{"x":0.55216867,"y":0.52058953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.12292,"y":124.17234,"z":-67.89109},"screenPosition":{"x":0.5099369,"y":0.49535435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.99933,"y":123.87949,"z":-70.32944},"screenPosition":{"x":0.42273182,"y":0.49044412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.79108,"y":126.3907,"z":-71.72189},"screenPosition":{"x":0.3731578,"y":0.5312584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.41202,"y":129.0855,"z":-72.162415},"screenPosition":{"x":0.35707274,"y":0.57523537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5638,"y":131.11418,"z":-70.84353},"screenPosition":{"x":0.4043208,"y":0.60830516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.27924,"y":130.71361,"z":-68.87264},"screenPosition":{"x":0.4747241,"y":0.60189384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.4776,"y":131.42827,"z":-67.497734},"screenPosition":{"x":0.5236009,"y":0.6137656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.8192,"y":133.99562,"z":-65.961876},"screenPosition":{"x":0.57852685,"y":0.6555671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.09525,"y":137.15472,"z":-65.65095},"screenPosition":{"x":0.58934975,"y":0.7072983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.98834,"y":139.33363,"z":-66.92641},"screenPosition":{"x":0.5436638,"y":0.7427684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.0893,"y":141.12106,"z":-67.96238},"screenPosition":{"x":0.50655544,"y":0.7718664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.97714,"y":143.02686,"z":-69.24333},"screenPosition":{"x":0.46094966,"y":0.8025605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0975,"y":144.65802,"z":-71.779526},"screenPosition":{"x":0.39343387,"y":0.829399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.07675,"y":143.2393,"z":-74.09756},"screenPosition":{"x":0.31064707,"y":0.8061146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.54044,"y":139.78278,"z":-73.18404},"screenPosition":{"x":0.32054183,"y":0.74932927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.94373,"y":138.08334,"z":-71.56911},"screenPosition":{"x":0.3779286,"y":0.7219841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.94507,"y":137.616,"z":-69.26974},"screenPosition":{"x":0.46013516,"y":0.7144705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.41885,"y":137.71767,"z":-67.57734},"screenPosition":{"x":0.5206896,"y":0.7161149},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.7913,"y":138.15163,"z":-66.001945},"screenPosition":{"x":0.5767594,"y":0.72354054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.5172,"y":138.29729,"z":-64.020065},"screenPosition":{"x":0.64758897,"y":0.7260361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.21985,"y":139.09996,"z":-62.0662},"screenPosition":{"x":0.71742284,"y":0.7389854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.75885,"y":140.72958,"z":-60.301838},"screenPosition":{"x":0.78037584,"y":0.76594025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.8781,"y":144.54419,"z":-65.91456},"screenPosition":{"x":0.5795936,"y":0.8278345},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-406.44366,"y":148.35423,"z":-59.530014},"screenPosition":{"x":0.8076175,"y":0.89037555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.67545,"y":151.07787,"z":-59.269077},"screenPosition":{"x":0.8057165,"y":0.9453564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-409.1263,"y":149.71681,"z":-56.45173},"screenPosition":{"x":0.91757995,"y":0.9127897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.1824,"y":147.29665,"z":-57.53112},"screenPosition":{"x":0.87899077,"y":0.87282497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.60962,"y":145.77779,"z":-59.334484},"screenPosition":{"x":0.8147227,"y":0.848355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.827,"y":144.28017,"z":-60.230404},"screenPosition":{"x":0.7827685,"y":0.82386893},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.77753,"y":140.63702,"z":-63.725628},"screenPosition":{"x":0.658091,"y":0.76395273},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-397.46005,"y":144.1421,"z":-69.83932},"screenPosition":{"x":0.4395553,"y":0.82077557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.07028,"y":140.39882,"z":-69.131294},"screenPosition":{"x":0.46480876,"y":0.76001316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.94833,"y":137.51889,"z":-68.1173},"screenPosition":{"x":0.50124866,"y":0.7130198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.59003,"y":135.41434,"z":-67.37631},"screenPosition":{"x":0.527825,"y":0.6787357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.72217,"y":132.94865,"z":-67.21978},"screenPosition":{"x":0.53352106,"y":0.63853866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.407,"y":137.63876,"z":-69.887695},"screenPosition":{"x":0.43814087,"y":0.7147342},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-393.93765,"y":125.21172,"z":-73.84824},"screenPosition":{"x":0.29690245,"y":0.5119667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.77536,"y":122.636795,"z":-75.178116},"screenPosition":{"x":0.23040731,"y":0.46213248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.05835,"y":120.54741,"z":-74.8491},"screenPosition":{"x":0.25659966,"y":0.43296137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.48514,"y":118.141235,"z":-74.72866},"screenPosition":{"x":0.28922513,"y":0.39662558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.93677,"y":115.54776,"z":-72.682144},"screenPosition":{"x":0.33013123,"y":0.35106745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.20316,"y":105.90959,"z":-67.76378},"screenPosition":{"x":0.5153038,"y":0.19749567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.89432,"y":104.51363,"z":-66.96731},"screenPosition":{"x":0.54377663,"y":0.17471062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.60876,"y":102.46066,"z":-66.14282},"screenPosition":{"x":0.57333815,"y":0.14126797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.9593,"y":100.14975,"z":-65.73581},"screenPosition":{"x":0.58799016,"y":0.10359206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.7285,"y":99.07851,"z":-64.85034},"screenPosition":{"x":0.61976194,"y":0.08636516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.9672,"y":96.55364,"z":-64.57131},"screenPosition":{"x":0.60870147,"y":0.04081687},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-397.75803,"y":122.262,"z":-69.45496},"screenPosition":{"x":0.45406038,"y":0.4641089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.9131,"y":99.34404,"z":-64.638855},"screenPosition":{"x":0.6272336,"y":0.0905136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.95697,"y":101.89925,"z":-65.74184},"screenPosition":{"x":0.58779025,"y":0.13230793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.50415,"y":102.890076,"z":-67.412254},"screenPosition":{"x":0.5146249,"y":0.14559229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.0861,"y":105.42252,"z":-67.89726},"screenPosition":{"x":0.51067054,"y":0.18966201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.74838,"y":106.53018,"z":-68.28726},"screenPosition":{"x":0.49650767,"y":0.20752938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.81555,"y":108.42838,"z":-69.36223},"screenPosition":{"x":0.4580004,"y":0.23843205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.31424,"y":110.363,"z":-69.94173},"screenPosition":{"x":0.4375351,"y":0.2701412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.88568,"y":112.3492,"z":-70.43773},"screenPosition":{"x":0.41938254,"y":0.3023318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.02563,"y":114.29899,"z":-71.4292},"screenPosition":{"x":0.3838572,"y":0.33408114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.16562,"y":116.24877,"z":-72.42068},"screenPosition":{"x":0.3483318,"y":0.36583048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.09247,"y":118.31692,"z":-73.657135},"screenPosition":{"x":0.29118916,"y":0.3944382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9836,"y":120.12559,"z":-73.78566},"screenPosition":{"x":0.2993693,"y":0.42899495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-392.84583,"y":124.43788,"z":-75.100655},"screenPosition":{"x":0.25217384,"y":0.49926686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.6908,"y":126.04522,"z":-77.953094},"screenPosition":{"x":0.17362013,"y":0.52537775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.79562,"y":127.96874,"z":-77.46207},"screenPosition":{"x":0.17242727,"y":0.5558093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.29428,"y":129.90335,"z":-78.041565},"screenPosition":{"x":0.14690606,"y":0.58823204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.11264,"y":131.66045,"z":-78.253586},"screenPosition":{"x":0.13999058,"y":0.6166732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.73065,"y":132.33263,"z":-78.69357},"screenPosition":{"x":0.12440134,"y":0.6275557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.1631,"y":134.02142,"z":-77.0517},"screenPosition":{"x":0.18211523,"y":0.655456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.27588,"y":135.88776,"z":-75.77731},"screenPosition":{"x":0.22747107,"y":0.6860201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.41718,"y":137.3702,"z":-74.46941},"screenPosition":{"x":0.27415076,"y":0.71028334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.4857,"y":138.80106,"z":-73.24502},"screenPosition":{"x":0.31830475,"y":0.7333992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.28403,"y":141.11804,"z":-72.33261},"screenPosition":{"x":0.35035488,"y":0.7715542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.56042,"y":142.15741,"z":-70.86871},"screenPosition":{"x":0.40263027,"y":0.78859866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.4886,"y":143.75821,"z":-69.80581},"screenPosition":{"x":0.44054827,"y":0.81477803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.77548,"y":145.34383,"z":-68.330925},"screenPosition":{"x":0.49319178,"y":0.84073466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.12988,"y":146.70793,"z":-66.778046},"screenPosition":{"x":0.5416582,"y":0.87108815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.00925,"y":148.10643,"z":-66.14519},"screenPosition":{"x":0.59466034,"y":0.8859954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.72168,"y":148.94904,"z":-63.805767},"screenPosition":{"x":0.65118617,"y":0.9018936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.8317,"y":150.08801,"z":-62.90749},"screenPosition":{"x":0.7119926,"y":0.91630334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.20502,"y":151.05219,"z":-61.332146},"screenPosition":{"x":0.7681556,"y":0.93182975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.15118,"y":151.54976,"z":-58.72362},"screenPosition":{"x":0.8263803,"y":0.95116824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.60922,"y":150.83205,"z":-57.04771},"screenPosition":{"x":0.8962279,"y":0.9309481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-410.02597,"y":151.70149,"z":-55.422325},"screenPosition":{"x":0.97784746,"y":0.93753713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-410.67944,"y":154.19357,"z":-56.199448},"screenPosition":{"x":0.9498652,"y":0.98589927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.86194,"y":152.91757,"z":-58.28431},"screenPosition":{"x":0.8690579,"y":0.97322404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.77948,"y":152.15758,"z":-59.52604},"screenPosition":{"x":0.8310584,"y":0.952484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.0925,"y":151.89908,"z":-61.02419},"screenPosition":{"x":0.77076,"y":0.94815946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.56467,"y":150.82643,"z":-62.776787},"screenPosition":{"x":0.7081672,"y":0.93055475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.26486,"y":149.91386,"z":-64.267815},"screenPosition":{"x":0.65491617,"y":0.91557753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.52905,"y":148.6952,"z":-66.258995},"screenPosition":{"x":0.5838028,"y":0.8955764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.2986,"y":147.83134,"z":-67.67045},"screenPosition":{"x":0.53339356,"y":0.88139844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.18985,"y":146.127,"z":-69.37936},"screenPosition":{"x":0.4791543,"y":0.8535085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.0363,"y":145.31712,"z":-70.70263},"screenPosition":{"x":0.43189457,"y":0.84021634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.09283,"y":143.98126,"z":-71.40922},"screenPosition":{"x":0.3860737,"y":0.8154731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.6994,"y":142.45482,"z":-73.00659},"screenPosition":{"x":0.326205,"y":0.79332197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.60236,"y":141.40785,"z":-74.264496},"screenPosition":{"x":0.28129232,"y":0.7761661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.39352,"y":140.14694,"z":-75.65039},"screenPosition":{"x":0.23181479,"y":0.75551224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.17944,"y":138.6129,"z":-77.04178},"screenPosition":{"x":0.1821532,"y":0.7304023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.96536,"y":137.07887,"z":-78.43317},"screenPosition":{"x":0.1324916,"y":0.70529234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.3588,"y":135.67078,"z":-80.27553},"screenPosition":{"x":0.0667056,"y":0.68220985},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-035740/brain-C78448-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.5956798536713989,-0.42220448586895987,-0.6833073130313683,0.0,-0.2763867890814057,-0.9064997360511873,0.31916856261292204,0.0,-0.7541722977883047,-0.0012651684691933063,-0.6566753723092207,0.0,-490.3380068950635,120.87786503936496,-135.18021784564408,1.0]},"baseImage":"20190824-035740/base.webp","version":0,"savedAt":1.566619230188E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-040615-v0.json b/data/mapping/BAAAHS/dwayman/20190824-040615-v0.json new file mode 100644 index 0000000000..ba69c3d442 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-040615-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566619575223E12,"surfaces":[{"brainId":"CB20B4","panelName":"35D","pixels":[{"modelPosition":{"x":-342.2252,"y":152.0338,"z":-91.642365},"screenPosition":{"x":0.83339167,"y":0.9430824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.71124,"y":150.51787,"z":-92.10812},"screenPosition":{"x":0.78914964,"y":0.93100536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.96338,"y":148.84189,"z":-92.79939},"screenPosition":{"x":0.7434641,"y":0.9286277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.05957,"y":147.05922,"z":-93.641014},"screenPosition":{"x":0.6966329,"y":0.9322282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.22455,"y":145.60503,"z":-94.20537},"screenPosition":{"x":0.656287,"y":0.9278215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.3987,"y":143.87569,"z":-94.97181},"screenPosition":{"x":0.6099802,"y":0.92831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.64627,"y":142.33728,"z":-95.562035},"screenPosition":{"x":0.56717825,"y":0.92323893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.66446,"y":140.50125,"z":-96.47883},"screenPosition":{"x":0.519872,"y":0.9298122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.07715,"y":138.7944,"z":-97.120804},"screenPosition":{"x":0.47210857,"y":0.92355144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.56778,"y":137.1409,"z":-97.68761},"screenPosition":{"x":0.42491883,"y":0.9140396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.89792,"y":135.51826,"z":-98.30371},"screenPosition":{"x":0.3796608,"y":0.90830415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.5491,"y":133.83391,"z":-98.82121},"screenPosition":{"x":0.3309769,"y":0.8945676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.2049,"y":132.01198,"z":-99.439766},"screenPosition":{"x":0.27843747,"y":0.88417524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.8239,"y":130.00482,"z":-99.762535},"screenPosition":{"x":0.2147454,"y":0.8506763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.34683,"y":131.99289,"z":-96.6829},"screenPosition":{"x":0.22940099,"y":0.71798056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.0077,"y":135.1764,"z":-95.352104},"screenPosition":{"x":0.31605372,"y":0.72189873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.75552,"y":135.74612,"z":-95.94122},"screenPosition":{"x":0.3460779,"y":0.77232045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.9346,"y":136.63025,"z":-96.55131},"screenPosition":{"x":0.3873337,"y":0.83228815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.27863,"y":134.9539,"z":-99.00614},"screenPosition":{"x":0.37248534,"y":0.9356474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.65454,"y":132.585,"z":-101.9408},"screenPosition":{"x":0.30968228,"y":0.98853016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.6773,"y":129.98198,"z":-101.650566},"screenPosition":{"x":0.2470868,"y":0.9635474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.13123,"y":129.24954,"z":-100.64119},"screenPosition":{"x":0.20445043,"y":0.883307},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-364.60858,"y":136.11156,"z":-93.477684},"screenPosition":{"x":0.31579044,"y":0.6338292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.7231,"y":135.99112,"z":-92.16271},"screenPosition":{"x":0.28844064,"y":0.5516941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.966,"y":134.41078,"z":-91.884094},"screenPosition":{"x":0.22931455,"y":0.4933947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.98407,"y":131.289,"z":-93.31349},"screenPosition":{"x":0.14595258,"y":0.49692336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.38763,"y":128.93053,"z":-95.80155},"screenPosition":{"x":0.10811664,"y":0.5843026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.03915,"y":128.89091,"z":-97.34205},"screenPosition":{"x":0.13387206,"y":0.6758254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.30093,"y":132.08282,"z":-96.18502},"screenPosition":{"x":0.22377172,"y":0.6904272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.16806,"y":134.78654,"z":-93.76722},"screenPosition":{"x":0.27477098,"y":0.61637026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3009,"y":134.11584,"z":-92.85644},"screenPosition":{"x":0.23561269,"y":0.54395473},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-373.51147,"y":129.82071,"z":-94.17608},"screenPosition":{"x":0.110353015,"y":0.5100697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.12247,"y":128.52567,"z":-96.65096},"screenPosition":{"x":0.08044004,"y":0.56570995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.82788,"y":126.57776,"z":-97.81761},"screenPosition":{"x":0.0623673,"y":0.6414574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.27295,"y":126.65894,"z":-98.90952},"screenPosition":{"x":0.08416113,"y":0.7112287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.64008,"y":128.89929,"z":-97.515816},"screenPosition":{"x":0.13711902,"y":0.686509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.5348,"y":132.06337,"z":-95.1917},"screenPosition":{"x":0.2058108,"y":0.63019615},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-362.63126,"y":130.81918,"z":-98.3367},"screenPosition":{"x":0.21786472,"y":0.78644377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.0626,"y":132.41933,"z":-97.84507},"screenPosition":{"x":0.2645301,"y":0.79906756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.53513,"y":131.6751,"z":-99.54327},"screenPosition":{"x":0.2688299,"y":0.8813396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.76443,"y":129.7602,"z":-101.77749},"screenPosition":{"x":0.2418398,"y":0.96514606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.04358,"y":127.77457,"z":-104.01735},"screenPosition":{"x":0.17962685,"y":0.9891359},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-364.36026,"y":126.79615,"z":-100.57203},"screenPosition":{"x":0.118075654,"y":0.81476396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.05774,"y":128.87912,"z":-100.049614},"screenPosition":{"x":0.18088476,"y":0.8382626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.5579,"y":129.70149,"z":-100.56111},"screenPosition":{"x":0.21827717,"y":0.8906775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.6429,"y":129.76268,"z":-103.159134},"screenPosition":{"x":0.23328763,"y":0.9875924},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-366.5848,"y":124.65982,"z":-101.16961},"screenPosition":{"x":0.055123907,"y":0.79423314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.41962,"y":122.61574,"z":-103.67865},"screenPosition":{"x":0.033162825,"y":0.8886997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.34644,"y":123.890076,"z":-104.11006},"screenPosition":{"x":0.079742275,"y":0.9508159},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-366.97473,"y":124.926575,"z":-100.79375},"screenPosition":{"x":0.05736404,"y":0.7788175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.52158,"y":123.10406,"z":-104.14412},"screenPosition":{"x":0.020479355,"y":0.8720462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.73053,"y":128.9594,"z":-96.05151},"screenPosition":{"x":0.084368885,"y":0.54102576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.47473,"y":129.6355,"z":-93.880295},"screenPosition":{"x":0.09087569,"y":0.4845217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.13535,"y":131.35378,"z":-92.294304},"screenPosition":{"x":0.13102597,"y":0.43756145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.4566,"y":133.68405,"z":-90.40272},"screenPosition":{"x":0.17763488,"y":0.3851027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.0714,"y":135.67175,"z":-89.08663},"screenPosition":{"x":0.22360936,"y":0.35858238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.44315,"y":137.77454,"z":-87.793976},"screenPosition":{"x":0.27366337,"y":0.3364069},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-370.7142,"y":141.97707,"z":-86.32645},"screenPosition":{"x":0.3927365,"y":0.35873157},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-365.33835,"y":142.94235,"z":-88.02844},"screenPosition":{"x":0.45589703,"y":0.4864096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.76953,"y":142.15048,"z":-89.3298},"screenPosition":{"x":0.4513615,"y":0.54374987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.24664,"y":141.26868,"z":-91.12905},"screenPosition":{"x":0.45246416,"y":0.62864745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.00787,"y":138.67468,"z":-92.27872},"screenPosition":{"x":0.3832274,"y":0.62933046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.7416,"y":135.79985,"z":-94.10249},"screenPosition":{"x":0.3156682,"y":0.6632257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.90652,"y":134.16615,"z":-93.89905},"screenPosition":{"x":0.2561614,"y":0.60789406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.62204,"y":135.16037,"z":-91.47745},"screenPosition":{"x":0.24758057,"y":0.48861876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.11755,"y":137.04707,"z":-89.839714},"screenPosition":{"x":0.2839631,"y":0.4398969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.93414,"y":138.87204,"z":-88.10338},"screenPosition":{"x":0.3165553,"y":0.3836373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.1729,"y":141.46603,"z":-86.953705},"screenPosition":{"x":0.38601547,"y":0.38290462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.78778,"y":142.52698,"z":-87.685814},"screenPosition":{"x":0.43552244,"y":0.45486587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.42545,"y":141.6143,"z":-89.43576},"screenPosition":{"x":0.43483827,"y":0.5360107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.50784,"y":139.13808,"z":-91.25462},"screenPosition":{"x":0.3810453,"y":0.580043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.09937,"y":136.85008,"z":-92.251495},"screenPosition":{"x":0.3194777,"y":0.57965696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.63586,"y":134.92715,"z":-92.548386},"screenPosition":{"x":0.2582417,"y":0.5468224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.0623,"y":133.91386,"z":-92.21312},"screenPosition":{"x":0.2176991,"y":0.5000254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.8695,"y":134.54872,"z":-90.01949},"screenPosition":{"x":0.20110826,"y":0.38499168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.71384,"y":138.1198,"z":-87.86424},"screenPosition":{"x":0.2863653,"y":0.34943983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.09476,"y":139.02068,"z":-88.82187},"screenPosition":{"x":0.33429912,"y":0.43073696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.1315,"y":138.09962,"z":-90.39805},"screenPosition":{"x":0.33013105,"y":0.5011934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.15894,"y":136.16795,"z":-92.28473},"screenPosition":{"x":0.2964901,"y":0.56367695},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-371.31454,"y":133.52364,"z":-92.39179},"screenPosition":{"x":0.20735292,"y":0.5004783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.43826,"y":133.12807,"z":-91.278915},"screenPosition":{"x":0.17379843,"y":0.4231107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.8376,"y":136.79745,"z":-88.79955},"screenPosition":{"x":0.25708517,"y":0.37080342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.2965,"y":137.75168,"z":-89.68201},"screenPosition":{"x":0.30554336,"y":0.4489886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.10385,"y":136.53302,"z":-91.584755},"screenPosition":{"x":0.29682174,"y":0.5312285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.63583,"y":133.82089,"z":-93.82878},"screenPosition":{"x":0.24285689,"y":0.5945986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.98404,"y":130.18274,"z":-94.59388},"screenPosition":{"x":0.13019435,"y":0.54472154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.32806,"y":131.64568,"z":-92.43974},"screenPosition":{"x":0.1429452,"y":0.45381016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.50723,"y":135.84857,"z":-89.20866},"screenPosition":{"x":0.23147571,"y":0.37038323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.53946,"y":135.24458,"z":-91.45158},"screenPosition":{"x":0.24996361,"y":0.48926818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.20908,"y":133.18944,"z":-93.14107},"screenPosition":{"x":0.2085959,"y":0.5366462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.08044,"y":130.97157,"z":-94.4103},"screenPosition":{"x":0.15423068,"y":0.55447763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.02057,"y":128.9027,"z":-94.634476},"screenPosition":{"x":0.08583125,"y":0.51229084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.54123,"y":130.96423,"z":-93.280655},"screenPosition":{"x":0.101382434,"y":0.42626843},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-380.61255,"y":136.93004,"z":-85.643394},"screenPosition":{"x":0.20628284,"y":0.1846081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.73624,"y":135.4282,"z":-85.81091},"screenPosition":{"x":0.1506809,"y":0.15530026},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-385.43503,"y":137.30807,"z":-84.512886},"screenPosition":{"x":0.16680762,"y":0.06652434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.79605,"y":138.42384,"z":-83.53856},"screenPosition":{"x":0.22096539,"y":0.09747308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.14484,"y":139.00195,"z":-84.301445},"screenPosition":{"x":0.25432858,"y":0.1585595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.9476,"y":137.92085,"z":-86.10314},"screenPosition":{"x":0.24858738,"y":0.23835187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.46573,"y":135.44194,"z":-87.27623},"screenPosition":{"x":0.18351494,"y":0.24352534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.79434,"y":133.99792,"z":-89.08781},"screenPosition":{"x":0.13059838,"y":0.25363073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.78214,"y":132.19899,"z":-90.91777},"screenPosition":{"x":0.13535728,"y":0.37691966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.3099,"y":134.58797,"z":-90.24255},"screenPosition":{"x":0.206059,"y":0.39929956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.6226,"y":142.51591,"z":-86.866264},"screenPosition":{"x":0.42075905,"y":0.40531865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.17313,"y":142.93129,"z":-87.2089},"screenPosition":{"x":0.44113788,"y":0.436867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.31088,"y":143.76776,"z":-87.42215},"screenPosition":{"x":0.47377083,"y":0.47172037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.05872,"y":144.33748,"z":-88.01127},"screenPosition":{"x":0.503795,"y":0.52214205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.65515,"y":144.66293,"z":-88.85178},"screenPosition":{"x":0.52979,"y":0.5812353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.60474,"y":143.96367,"z":-90.30104},"screenPosition":{"x":0.53105843,"y":0.6499086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.46234,"y":141.05225,"z":-92.54752},"screenPosition":{"x":0.46991214,"y":0.7081678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.5171,"y":139.04243,"z":-92.22452},"screenPosition":{"x":0.39483866,"y":0.63579386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.61804,"y":140.62045,"z":-90.093796},"screenPosition":{"x":0.41189855,"y":0.5493435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.0264,"y":142.72894,"z":-88.32913},"screenPosition":{"x":0.45379063,"y":0.49885356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.66882,"y":145.17699,"z":-87.10674},"screenPosition":{"x":0.51693135,"y":0.4899037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.22406,"y":146.74055,"z":-87.03782},"screenPosition":{"x":0.56975037,"y":0.5269689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.40314,"y":147.62466,"z":-87.64791},"screenPosition":{"x":0.6110062,"y":0.5869366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.58667,"y":147.08545,"z":-88.87164},"screenPosition":{"x":0.6138478,"y":0.64627403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.04535,"y":145.46817,"z":-90.7793},"screenPosition":{"x":0.5914516,"y":0.7182688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.78836,"y":143.60396,"z":-92.292564},"screenPosition":{"x":0.5536082,"y":0.76005596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.68274,"y":141.984,"z":-93.55444},"screenPosition":{"x":0.51982737,"y":0.79311967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.9257,"y":139.4769,"z":-95.32401},"screenPosition":{"x":0.4641621,"y":0.83354867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.63196,"y":137.42746,"z":-96.5415},"screenPosition":{"x":0.41470903,"y":0.85270894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.04453,"y":135.54112,"z":-96.41568},"screenPosition":{"x":0.3474751,"y":0.7953163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.53998,"y":138.35458,"z":-92.72975},"screenPosition":{"x":0.3800812,"y":0.64798725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.38892,"y":139.75507,"z":-94.004135},"screenPosition":{"x":0.4506133,"y":0.7615533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.64597,"y":140.69254,"z":-94.53905},"screenPosition":{"x":0.49239346,"y":0.818409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.4303,"y":138.87595,"z":-96.44916},"screenPosition":{"x":0.46314028,"y":0.88533336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.28802,"y":137.25027,"z":-98.18304},"screenPosition":{"x":0.43739194,"y":0.9466982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.44385,"y":134.96497,"z":-99.82568},"screenPosition":{"x":0.38937715,"y":0.9907085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.3347,"y":133.03902,"z":-101.74482},"screenPosition":{"x":0.3216525,"y":0.99206805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.2003,"y":131.04327,"z":-100.61911},"screenPosition":{"x":0.26565966,"y":0.9295259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.3745,"y":131.52647,"z":-98.824776},"screenPosition":{"x":0.25086933,"y":0.83441794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.1728,"y":133.90172,"z":-96.68424},"screenPosition":{"x":0.29554108,"y":0.76827943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.2327,"y":137.07686,"z":-95.17968},"screenPosition":{"x":0.378697,"y":0.7616216},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-356.2831,"y":134.63684,"z":-98.33939},"screenPosition":{"x":0.34982935,"y":0.8872189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.42056,"y":133.82855,"z":-97.52966},"screenPosition":{"x":0.30769062,"y":0.8172509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.94815,"y":135.85854,"z":-95.31887},"screenPosition":{"x":0.3390413,"y":0.73787874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.20056,"y":137.86034,"z":-93.70455},"screenPosition":{"x":0.37988463,"y":0.6936127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.79715,"y":140.5778,"z":-92.75207},"screenPosition":{"x":0.45719588,"y":0.7078957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.20102,"y":141.89711,"z":-92.93455},"screenPosition":{"x":0.5058908,"y":0.75368416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.58157,"y":137.83446,"z":-96.71036},"screenPosition":{"x":0.43173572,"y":0.87358403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.5217,"y":136.87184,"z":-95.65414},"screenPosition":{"x":0.3800723,"y":0.78462696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.3246,"y":139.10951,"z":-93.61466},"screenPosition":{"x":0.42147204,"y":0.7211319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.53574,"y":141.24316,"z":-92.3713},"screenPosition":{"x":0.4733812,"y":0.70263606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.26987,"y":143.33185,"z":-91.376884},"screenPosition":{"x":0.5281652,"y":0.69785243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.76547,"y":145.39806,"z":-90.506935},"screenPosition":{"x":0.584236,"y":0.70008606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.24274,"y":146.90828,"z":-90.51318},"screenPosition":{"x":0.6365307,"y":0.7402633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.9172,"y":148.39334,"z":-89.99813},"screenPosition":{"x":0.6788083,"y":0.7484463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.17422,"y":148.22453,"z":-91.81344},"screenPosition":{"x":0.7048302,"y":0.85310024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.1649,"y":145.00139,"z":-94.68473},"screenPosition":{"x":0.6438427,"y":0.94052005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.2426,"y":142.48323,"z":-95.63476},"screenPosition":{"x":0.57351625,"y":0.93136513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.3296,"y":141.90245,"z":-94.2261},"screenPosition":{"x":0.5287101,"y":0.8314872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.3664,"y":144.30019,"z":-91.9611},"screenPosition":{"x":0.5718168,"y":0.75854903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.92166,"y":146.97,"z":-90.61178},"screenPosition":{"x":0.64039505,"y":0.7477896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.2842,"y":148.24167,"z":-90.39742},"screenPosition":{"x":0.68055856,"y":0.76835483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.65598,"y":149.4177,"z":-91.15295},"screenPosition":{"x":0.7344689,"y":0.84484893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.6971,"y":145.96706,"z":-94.62317},"screenPosition":{"x":0.6761284,"y":0.96247333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.43994,"y":143.74384,"z":-94.60085},"screenPosition":{"x":0.59891444,"y":0.9025398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.2702,"y":144.9766,"z":-92.39987},"screenPosition":{"x":0.6028898,"y":0.8027468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.5043,"y":147.52867,"z":-90.381355},"screenPosition":{"x":0.6556532,"y":0.7486544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.42654,"y":150.04683,"z":-89.43133},"screenPosition":{"x":0.72599804,"y":0.7579581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.68817,"y":150.84673,"z":-90.06729},"screenPosition":{"x":0.76479775,"y":0.8172614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.5592,"y":147.91087,"z":-88.26536},"screenPosition":{"x":0.63173044,"y":0.6315887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.3802,"y":146.09999,"z":-89.70345},"screenPosition":{"x":0.59439623,"y":0.67028713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.24698,"y":144.0197,"z":-90.87164},"screenPosition":{"x":0.54302055,"y":0.6856644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.2744,"y":142.08803,"z":-92.75832},"screenPosition":{"x":0.5093663,"y":0.7481627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.33417,"y":141.76488,"z":-94.32714},"screenPosition":{"x":0.5257467,"y":0.8338979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.98096,"y":140.57707,"z":-96.27918},"screenPosition":{"x":0.51893973,"y":0.919951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.1646,"y":141.32362,"z":-96.990326},"screenPosition":{"x":0.5578234,"y":0.9932716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.6648,"y":143.25226,"z":-96.22142},"screenPosition":{"x":0.61057574,"y":0.9940743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.56674,"y":145.48427,"z":-96.37253},"screenPosition":{"x":0.6574436,"y":0.99478745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.20358,"y":147.41917,"z":-95.53728},"screenPosition":{"x":0.70964646,"y":0.9955818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.91547,"y":149.24753,"z":-94.748024},"screenPosition":{"x":0.7589748,"y":0.99633235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.8719,"y":150.6665,"z":-92.826614},"screenPosition":{"x":0.80551475,"y":0.9970405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.57834,"y":152.11534,"z":-90.97072},"screenPosition":{"x":0.82448757,"y":0.9049926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.881,"y":152.4244,"z":-89.700134},"screenPosition":{"x":0.81287044,"y":0.8367736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.97266,"y":151.88554,"z":-89.16032},"screenPosition":{"x":0.78477794,"y":0.79012823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.47708,"y":150.9256,"z":-88.74987},"screenPosition":{"x":0.74439955,"y":0.74015117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.84384,"y":149.30867,"z":-88.89396},"screenPosition":{"x":0.6910617,"y":0.7062076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.61435,"y":147.7253,"z":-89.73313},"screenPosition":{"x":0.65107286,"y":0.7148577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.19672,"y":145.71245,"z":-90.5279},"screenPosition":{"x":0.59547,"y":0.7096258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.98553,"y":143.5788,"z":-91.77126},"screenPosition":{"x":0.54355854,"y":0.7281279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.0359,"y":142.06554,"z":-92.88279},"screenPosition":{"x":0.5107886,"y":0.7550307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.42566,"y":139.94028,"z":-94.29992},"screenPosition":{"x":0.46220347,"y":0.7842116},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-353.91635,"y":136.25375,"z":-98.195305},"screenPosition":{"x":0.40317276,"y":0.92117214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.94403,"y":136.8936,"z":-99.056786},"screenPosition":{"x":0.4421465,"y":0.9915114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.92596,"y":140.01538,"z":-97.627396},"screenPosition":{"x":0.52414274,"y":0.9927591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.09583,"y":142.1014,"z":-95.9872},"screenPosition":{"x":0.5665547,"y":0.94226766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.21506,"y":143.12915,"z":-94.26067},"screenPosition":{"x":0.57170486,"y":0.86589473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.65985,"y":142.67184,"z":-93.0492},"screenPosition":{"x":0.5346459,"y":0.7810279},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-358.58627,"y":142.12193,"z":-91.689835},"screenPosition":{"x":0.49178824,"y":0.6848388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.18698,"y":140.66505,"z":-91.60841},"screenPosition":{"x":0.44013783,"y":0.64150864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.50793,"y":139.31757,"z":-92.022415},"screenPosition":{"x":0.40072083,"y":0.63091904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.14084,"y":138.18347,"z":-92.13573},"screenPosition":{"x":0.3635212,"y":0.6078406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.2645,"y":136.68164,"z":-92.303246},"screenPosition":{"x":0.3146639,"y":0.57832587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.86517,"y":134.11852,"z":-93.50221},"screenPosition":{"x":0.24703705,"y":0.5828372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.9752,"y":132.10263,"z":-95.41477},"screenPosition":{"x":0.21094005,"y":0.64465636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.7641,"y":130.14847,"z":-97.42593},"screenPosition":{"x":0.17870644,"y":0.71402824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.65427,"y":131.4171,"z":-98.329346},"screenPosition":{"x":0.23839623,"y":0.80175936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.32416,"y":134.14598,"z":-96.43285},"screenPosition":{"x":0.29941252,"y":0.7596966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.95264,"y":135.54147,"z":-94.65212},"screenPosition":{"x":0.31648755,"y":0.68941355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.8242,"y":136.82188,"z":-92.84798},"screenPosition":{"x":0.32897037,"y":0.6147631},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-354.90295,"y":142.55675,"z":-93.02578},"screenPosition":{"x":0.53025633,"y":0.7765905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.59567,"y":144.4183,"z":-90.86674},"screenPosition":{"x":0.55669487,"y":0.69588953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.10492,"y":145.8923,"z":-89.53214},"screenPosition":{"x":0.5842091,"y":0.65452534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.16013,"y":147.91925,"z":-88.439125},"screenPosition":{"x":0.63507044,"y":0.6422477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.0319,"y":149.55865,"z":-88.17056},"screenPosition":{"x":0.6870055,"y":0.6693183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.47693,"y":149.63983,"z":-89.26247},"screenPosition":{"x":0.7089713,"y":0.737083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.1511,"y":146.34087,"z":-92.3334},"screenPosition":{"x":0.6488649,"y":0.8347068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.96735,"y":145.41483,"z":-90.85447},"screenPosition":{"x":0.590931,"y":0.72137016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.32535,"y":147.93031,"z":-89.25867},"screenPosition":{"x":0.64983284,"y":0.69180065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.4356,"y":149.5922,"z":-88.86563},"screenPosition":{"x":0.7003517,"y":0.711951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.55963,"y":150.84137,"z":-88.77574},"screenPosition":{"x":0.741949,"y":0.7394964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.80283,"y":150.90579,"z":-89.52011},"screenPosition":{"x":0.7572368,"y":0.7859317},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-344.17914,"y":150.83798,"z":-91.65708},"screenPosition":{"x":0.7923928,"y":0.9125795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.44998,"y":152.469,"z":-91.21475},"screenPosition":{"x":0.8409899,"y":0.92897964},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-040615/brain-CB20B4-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.6458609331056058,0.4418572374074563,0.6225960462760805,0.0,0.6837775123042544,0.6975114236617358,0.21430382061079473,0.0,-0.33957616046324796,0.5641276412409069,-0.7526274215260891,0.0,-395.86484409065105,212.12692925795045,-170.7353521484005,1.0]},"baseImage":"20190824-040615/base.webp","version":0,"savedAt":1.566619712508E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-041411-v0.json b/data/mapping/BAAAHS/dwayman/20190824-041411-v0.json new file mode 100644 index 0000000000..c5625e8130 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-041411-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566620051322E12,"surfaces":[{"brainId":"CBDACC","panelName":"39D","pixels":[{"modelPosition":{"x":-410.01535,"y":154.81467,"z":-54.925636},"screenPosition":{"x":0.0848431,"y":0.033236615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.77548,"y":154.05995,"z":-56.24104},"screenPosition":{"x":0.09141937,"y":0.08405459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.04898,"y":154.01627,"z":-57.142887},"screenPosition":{"x":0.097833455,"y":0.1271218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.79593,"y":153.45874,"z":-58.781822},"screenPosition":{"x":0.104429044,"y":0.19697778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.47415,"y":155.18906,"z":-58.84207},"screenPosition":{"x":0.14636035,"y":0.24263157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.86832,"y":158.41861,"z":-56.163048},"screenPosition":{"x":0.19345093,"y":0.18634418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.08298,"y":158.69405,"z":-54.80367},"screenPosition":{"x":0.18495372,"y":0.124466345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.09198,"y":158.90752,"z":-53.604107},"screenPosition":{"x":0.18025449,"y":0.06260611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.63254,"y":158.11752,"z":-53.56464},"screenPosition":{"x":0.159368,"y":0.04846879},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-410.89874,"y":156.09741,"z":-54.750206},"screenPosition":{"x":0.096729815,"y":0.0060712337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-411.88416,"y":155.03938,"z":-54.817497},"screenPosition":{"x":0.07857571,"y":-0.0020583337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-409.91083,"y":154.57985,"z":-56.644115},"screenPosition":{"x":0.082070455,"y":0.064830095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.27304,"y":153.35573,"z":-57.141857},"screenPosition":{"x":0.08532459,"y":0.11244434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.8202,"y":153.50124,"z":-57.7325},"screenPosition":{"x":0.092561245,"y":0.14449874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.03775,"y":153.79251,"z":-58.852062},"screenPosition":{"x":0.112750754,"y":0.20861569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.9997,"y":151.17491,"z":-61.287464},"screenPosition":{"x":0.07742661,"y":0.26759207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.32693,"y":150.45894,"z":-62.783104},"screenPosition":{"x":0.077592224,"y":0.32594872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.4996,"y":150.93474,"z":-63.25572},"screenPosition":{"x":0.094730556,"y":0.36178342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.27145,"y":150.8831,"z":-64.41524},"screenPosition":{"x":0.108178996,"y":0.41930664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.69846,"y":151.76802,"z":-64.88226},"screenPosition":{"x":0.13452864,"y":0.46506873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.5857,"y":151.71815,"z":-65.98255},"screenPosition":{"x":0.14586721,"y":0.51993096},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-391.24307,"y":147.46364,"z":-71.079056},"screenPosition":{"x":0.1032632,"y":0.6730785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.3197,"y":150.265,"z":-69.45275},"screenPosition":{"x":0.1521189,"y":0.6598415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.3133,"y":151.61731,"z":-68.20758},"screenPosition":{"x":0.16958174,"y":0.63063836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.04102,"y":153.9661,"z":-66.17518},"screenPosition":{"x":0.20284188,"y":0.585428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.69437,"y":155.749,"z":-64.203285},"screenPosition":{"x":0.2230415,"y":0.5292753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.4038,"y":157.46367,"z":-62.76538},"screenPosition":{"x":0.24798149,"y":0.4985379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.43018,"y":159.9369,"z":-61.966084},"screenPosition":{"x":0.2988399,"y":0.51907957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.18665,"y":159.78868,"z":-63.22242},"screenPosition":{"x":0.3099972,"y":0.57928646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.49313,"y":159.95529,"z":-63.91369},"screenPosition":{"x":0.3220058,"y":0.61875886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.38074,"y":160.00006,"z":-64.926445},"screenPosition":{"x":0.3350068,"y":0.67139614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.3225,"y":158.65407,"z":-67.19604},"screenPosition":{"x":0.32894164,"y":0.7535203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.92923,"y":160.42522,"z":-66.75528},"screenPosition":{"x":0.36716226,"y":0.774275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.45093,"y":161.68878,"z":-65.827484},"screenPosition":{"x":0.3867031,"y":0.75908035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.1804,"y":163.4374,"z":-63.84928},"screenPosition":{"x":0.40616044,"y":0.70134425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.78015,"y":164.84795,"z":-62.24784},"screenPosition":{"x":0.42148846,"y":0.655227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.5077,"y":166.85022,"z":-60.535423},"screenPosition":{"x":0.45007867,"y":0.6177113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.08804,"y":168.93913,"z":-59.31546},"screenPosition":{"x":0.48656955,"y":0.6073979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.65042,"y":170.33466,"z":-59.74256},"screenPosition":{"x":0.525556,"y":0.6637045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.84705,"y":168.57683,"z":-61.76617},"screenPosition":{"x":0.5065749,"y":0.72310966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.07053,"y":166.89557,"z":-63.206703},"screenPosition":{"x":0.4825997,"y":0.7547458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.1887,"y":164.78522,"z":-64.596886},"screenPosition":{"x":0.44758928,"y":0.7731889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.31406,"y":162.6613,"z":-65.99602},"screenPosition":{"x":0.41235372,"y":0.7917506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.3904,"y":161.18633,"z":-66.82052},"screenPosition":{"x":0.3861538,"y":0.79715526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.86322,"y":159.43263,"z":-67.70451},"screenPosition":{"x":0.35386994,"y":0.79868066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.21936,"y":157.79099,"z":-68.04426},"screenPosition":{"x":0.3179125,"y":0.77529216},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-384.15176,"y":160.11603,"z":-62.937645},"screenPosition":{"x":0.3147471,"y":0.5727792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.08875,"y":157.7667,"z":-63.64086},"screenPosition":{"x":0.26553252,"y":0.5506521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.66296,"y":155.84474,"z":-65.12856},"screenPosition":{"x":0.2362539,"y":0.5787243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.94388,"y":153.99037,"z":-67.19925},"screenPosition":{"x":0.21547686,"y":0.63813263},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-387.9451,"y":156.7653,"z":-64.13797},"screenPosition":{"x":0.24700762,"y":0.551133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.67288,"y":153.74763,"z":-65.56255},"screenPosition":{"x":0.19031991,"y":0.5488459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.2089,"y":151.48326,"z":-68.38342},"screenPosition":{"x":0.16854705,"y":0.6361405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.90048,"y":151.35783,"z":-69.15211},"screenPosition":{"x":0.17437527,"y":0.6722655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.79816,"y":148.49785,"z":-71.843346},"screenPosition":{"x":0.13642254,"y":0.7383308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.41525,"y":155.66837,"z":-68.409004},"screenPosition":{"x":0.27054283,"y":0.7412581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.9727,"y":154.47667,"z":-70.228935},"screenPosition":{"x":0.2629446,"y":0.8043274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.3114,"y":152.23322,"z":-72.13096},"screenPosition":{"x":0.23071447,"y":0.8455142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.2839,"y":150.64644,"z":-72.6115},"screenPosition":{"x":0.19774798,"y":0.83064824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.89804,"y":149.67345,"z":-72.205246},"screenPosition":{"x":0.16929002,"y":0.78587127},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-389.2216,"y":150.33337,"z":-69.43861},"screenPosition":{"x":0.15352184,"y":0.6608874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.7923,"y":152.4964,"z":-67.65603},"screenPosition":{"x":0.18448958,"y":0.62435704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.71088,"y":154.54025,"z":-67.30689},"screenPosition":{"x":0.23056988,"y":0.65679574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.65396,"y":153.69186,"z":-69.11646},"screenPosition":{"x":0.23076062,"y":0.7282818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.6957,"y":151.73648,"z":-71.39974},"screenPosition":{"x":0.21002546,"y":0.7960035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.15918,"y":149.1272,"z":-73.07822},"screenPosition":{"x":0.16626263,"y":0.8167523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.00684,"y":147.67429,"z":-72.99848},"screenPosition":{"x":0.12996484,"y":0.77669734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.688,"y":147.60237,"z":-71.726974},"screenPosition":{"x":0.113911085,"y":0.70967364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.95917,"y":148.07999,"z":-70.65174},"screenPosition":{"x":0.11296211,"y":0.6668114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.91336,"y":148.28058,"z":-69.49143},"screenPosition":{"x":0.1043081,"y":0.6127768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.70468,"y":148.48006,"z":-68.4134},"screenPosition":{"x":0.09564983,"y":0.56337976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.97037,"y":148.3391,"z":-67.412964},"screenPosition":{"x":0.08045277,"y":0.5089861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.65063,"y":146.98268,"z":-67.32766},"screenPosition":{"x":0.050903622,"y":0.46987876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.04013,"y":141.8327,"z":-66.871735},"screenPosition":{"x":-0.0025561028,"y":0.49629265},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-395.49725,"y":143.53452,"z":-73.61521},"screenPosition":{"x":0.009956008,"y":0.6662683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.1313,"y":143.50139,"z":-74.74511},"screenPosition":{"x":0.025336705,"y":0.7112942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.53284,"y":143.24364,"z":-74.830124},"screenPosition":{"x":0.043676242,"y":0.7601117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.12238,"y":143.58492,"z":-75.21889},"screenPosition":{"x":0.056554615,"y":0.7883473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.14838,"y":143.9945,"z":-75.82581},"screenPosition":{"x":0.07366083,"y":0.82937485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.33054,"y":144.12154,"z":-77.114655},"screenPosition":{"x":0.09191063,"y":0.89809644},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.768,"y":139.95064,"z":-80.24768},"screenPosition":{"x":0.028212296,"y":0.9530325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.47763,"y":139.5321,"z":-81.23051},"screenPosition":{"x":0.0030357647,"y":0.9413047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.13138,"y":139.76727,"z":-79.770485},"screenPosition":{"x":-0.0061321855,"y":0.8860111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.733,"y":141.81761,"z":-77.49622},"screenPosition":{"x":0.0071496405,"y":0.8065708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.1165,"y":142.08685,"z":-77.05631},"screenPosition":{"x":0.018092742,"y":0.79383695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.23688,"y":142.87346,"z":-75.7711},"screenPosition":{"x":0.01381543,"y":0.7453512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.04233,"y":144.14102,"z":-73.70004},"screenPosition":{"x":0.028612264,"y":0.67397016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5893,"y":144.30122,"z":-72.362495},"screenPosition":{"x":0.02358463,"y":0.6245487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.8604,"y":145.19365,"z":-70.90437},"screenPosition":{"x":0.028154816,"y":0.57247275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2884,"y":146.1962,"z":-69.266304},"screenPosition":{"x":0.033288985,"y":0.51397043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.69897,"y":147.18652,"z":-67.64822},"screenPosition":{"x":0.03836053,"y":0.45618168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.07104,"y":148.14984,"z":-66.07427},"screenPosition":{"x":0.043293737,"y":0.39996925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.06567,"y":149.77403,"z":-64.4963},"screenPosition":{"x":0.057459436,"y":0.34526524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.74176,"y":150.95078,"z":-62.573616},"screenPosition":{"x":0.06348568,"y":0.27659798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.32907,"y":152.06519,"z":-60.752796},"screenPosition":{"x":0.068420455,"y":0.21132746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.32904,"y":154.39838,"z":-59.145397},"screenPosition":{"x":0.13068444,"y":0.23847355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.6445,"y":154.31375,"z":-61.062103},"screenPosition":{"x":0.15162966,"y":0.33390272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.27463,"y":152.88188,"z":-63.0675},"screenPosition":{"x":0.13990508,"y":0.40045062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.37863,"y":151.49619,"z":-64.79379},"screenPosition":{"x":0.12742299,"y":0.45369673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.0925,"y":150.77011,"z":-66.105835},"screenPosition":{"x":0.1242443,"y":0.5027141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.08862,"y":149.83463,"z":-67.47036},"screenPosition":{"x":0.11752539,"y":0.5489611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.8763,"y":148.82452,"z":-69.007774},"screenPosition":{"x":0.111578375,"y":0.60182476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.17288,"y":148.55734,"z":-70.10443},"screenPosition":{"x":0.11741901,"y":0.6513316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.85184,"y":148.0136,"z":-71.26559},"screenPosition":{"x":0.11784202,"y":0.69693714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.95203,"y":147.1218,"z":-73.03686},"screenPosition":{"x":0.11696991,"y":0.76496077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.18152,"y":145.52689,"z":-74.89366},"screenPosition":{"x":0.09999223,"y":0.819916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.5114,"y":144.0568,"z":-76.58516},"screenPosition":{"x":0.08410762,"y":0.8695527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.0822,"y":142.292,"z":-78.428474},"screenPosition":{"x":0.06283654,"y":0.919612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.62875,"y":140.3777,"z":-79.92293},"screenPosition":{"x":0.033823736,"y":0.94821763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.82724,"y":139.77756,"z":-80.82945},"screenPosition":{"x":0.006266631,"y":0.92859197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.56943,"y":140.07481,"z":-79.26798},"screenPosition":{"x":0.0019408392,"y":0.8711732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.99548,"y":152.71486,"z":-68.350975},"screenPosition":{"x":0.1982788,"y":0.66485286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.28198,"y":154.98703,"z":-66.11047},"screenPosition":{"x":0.22692776,"y":0.6074313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.08682,"y":156.56526,"z":-64.25193},"screenPosition":{"x":0.24364156,"y":0.55186284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.54675,"y":156.77263,"z":-62.33398},"screenPosition":{"x":0.22604463,"y":0.4595027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.39587,"y":155.28723,"z":-62.2835},"screenPosition":{"x":0.18990617,"y":0.42000765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.99826,"y":152.16476,"z":-64.3664},"screenPosition":{"x":0.13863525,"y":0.4485305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.78607,"y":150.16776,"z":-66.814804},"screenPosition":{"x":0.11866169,"y":0.52354777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.90018,"y":149.84036,"z":-68.058105},"screenPosition":{"x":0.12457728,"y":0.57900643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.33936,"y":150.87447,"z":-68.88032},"screenPosition":{"x":0.16035461,"y":0.64572763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.2065,"y":152.98181,"z":-67.99922},"screenPosition":{"x":0.20033975,"y":0.6538454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.9309,"y":155.00488,"z":-66.76818},"screenPosition":{"x":0.2350976,"y":0.6413365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.15726,"y":156.87653,"z":-65.42643},"screenPosition":{"x":0.26486808,"y":0.6194435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.39166,"y":158.848,"z":-63.489506},"screenPosition":{"x":0.29006863,"y":0.56974244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.097,"y":160.26927,"z":-61.82552},"screenPosition":{"x":0.30508813,"y":0.52029544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.8203,"y":161.45949,"z":-59.866848},"screenPosition":{"x":0.31101888,"y":0.45013076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.33325,"y":161.29482,"z":-59.263893},"screenPosition":{"x":0.3002087,"y":0.4152868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.3039,"y":162.07985,"z":-57.555843},"screenPosition":{"x":0.2989372,"y":0.34792107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.0793,"y":164.37167,"z":-55.552223},"screenPosition":{"x":0.3311494,"y":0.30276358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.71634,"y":167.05179,"z":-53.75823},"screenPosition":{"x":0.37527713,"y":0.27789214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.1511,"y":168.67236,"z":-54.04126},"screenPosition":{"x":0.41815135,"y":0.33245045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.158,"y":168.20734,"z":-54.966114},"screenPosition":{"x":0.4177028,"y":0.36795783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.5989,"y":168.79015,"z":-54.70708},"screenPosition":{"x":0.42874375,"y":0.36923888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.70764,"y":170.10782,"z":-54.434414},"screenPosition":{"x":0.45760593,"y":0.38801378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.25964,"y":172.00648,"z":-53.903225},"screenPosition":{"x":0.49756706,"y":0.4080301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.4725,"y":170.84607,"z":-56.864246},"screenPosition":{"x":0.50418323,"y":0.5298014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.11795,"y":167.72415,"z":-59.424126},"screenPosition":{"x":0.458278,"y":0.58282346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.30853,"y":165.89928,"z":-59.516655},"screenPosition":{"x":0.4149534,"y":0.5423168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.73105,"y":165.69743,"z":-58.494152},"screenPosition":{"x":0.39801636,"y":0.48529148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.03113,"y":166.45023,"z":-56.651466},"screenPosition":{"x":0.39466438,"y":0.4101911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.17593,"y":164.57648,"z":-57.80996},"screenPosition":{"x":0.36268735,"y":0.42270815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.35077,"y":163.94212,"z":-57.31031},"screenPosition":{"x":0.34137234,"y":0.38156962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.78445,"y":164.19054,"z":-55.866577},"screenPosition":{"x":0.33044606,"y":0.31427035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.97345,"y":165.69673,"z":-54.38184},"screenPosition":{"x":0.34963298,"y":0.2760468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.75992,"y":168.1016,"z":-51.769356},"screenPosition":{"x":0.37913176,"y":0.2040398},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-384.6497,"y":172.01259,"z":-51.70696},"screenPosition":{"x":0.47188514,"y":0.29643863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.71335,"y":170.57481,"z":-52.004467},"screenPosition":{"x":0.44039246,"y":0.27595225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.15704,"y":169.28362,"z":-52.476017},"screenPosition":{"x":0.4145139,"y":0.2679523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9585,"y":168.5988,"z":-52.20927},"screenPosition":{"x":0.39471027,"y":0.23741348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.72412,"y":166.79839,"z":-52.990273},"screenPosition":{"x":0.36007792,"y":0.23254105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.9664,"y":164.88312,"z":-54.13844},"screenPosition":{"x":0.326969,"y":0.24350427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.62744,"y":162.80972,"z":-56.22161},"screenPosition":{"x":0.30110335,"y":0.29813677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.23477,"y":162.04263,"z":-58.123688},"screenPosition":{"x":0.30492437,"y":0.37585866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.47342,"y":161.09853,"z":-59.37516},"screenPosition":{"x":0.2965599,"y":0.41613847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.03738,"y":159.31776,"z":-61.735645},"screenPosition":{"x":0.2811466,"y":0.49199438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.07297,"y":160.68192,"z":-61.955578},"screenPosition":{"x":0.31676152,"y":0.53705215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.1736,"y":162.60648,"z":-61.126717},"screenPosition":{"x":0.353751,"y":0.5426495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.52515,"y":164.4542,"z":-60.243576},"screenPosition":{"x":0.38833323,"y":0.5434972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.40298,"y":166.82005,"z":-58.12052},"screenPosition":{"x":0.42094254,"y":0.4940972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.91846,"y":166.61111,"z":-56.06018},"screenPosition":{"x":0.3916258,"y":0.38409358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.90408,"y":163.59032,"z":-59.354977},"screenPosition":{"x":0.35685778,"y":0.4768826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.4762,"y":163.59206,"z":-60.56489},"screenPosition":{"x":0.37116146,"y":0.5384495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.0939,"y":164.7522,"z":-60.682674},"screenPosition":{"x":0.40075028,"y":0.57322145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.338,"y":165.57497,"z":-60.799328},"screenPosition":{"x":0.42214608,"y":0.59954184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.61447,"y":167.07115,"z":-60.777172},"screenPosition":{"x":0.45833093,"y":0.6353853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.38422,"y":169.52634,"z":-58.126587},"screenPosition":{"x":0.48689032,"y":0.5614178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.3623,"y":166.85367,"z":-58.60878},"screenPosition":{"x":0.427588,"y":0.51965034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.6154,"y":165.18112,"z":-61.024498},"screenPosition":{"x":0.41527957,"y":0.601106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.44968,"y":159.82901,"z":-61.05795},"screenPosition":{"x":0.28542608,"y":0.47029558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.57678,"y":159.24174,"z":-61.536655},"screenPosition":{"x":0.27704066,"y":0.47995797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.00488,"y":157.33943,"z":-63.079136},"screenPosition":{"x":0.24858655,"y":0.5114523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.6365,"y":155.48553,"z":-64.47537},"screenPosition":{"x":0.220054,"y":0.536458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.47275,"y":153.68329,"z":-65.72181},"screenPosition":{"x":0.1906737,"y":0.5553263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.15942,"y":151.67024,"z":-67.237495},"screenPosition":{"x":0.15946086,"y":0.58259356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.18387,"y":149.23032,"z":-68.47969},"screenPosition":{"x":0.115607545,"y":0.5848255},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.74567,"y":154.83553,"z":-60.52995},"screenPosition":{"x":0.15766999,"y":0.31975183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.28122,"y":153.94324,"z":-59.589424},"screenPosition":{"x":0.1252515,"y":0.24987687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.85834,"y":150.77371,"z":-61.229366},"screenPosition":{"x":0.065494224,"y":0.25371125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.86053,"y":149.98645,"z":-62.45402},"screenPosition":{"x":0.06632232,"y":0.2978511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.33798,"y":149.26314,"z":-65.33104},"screenPosition":{"x":0.052930392,"y":0.37443966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.48154,"y":147.95978,"z":-67.4606},"screenPosition":{"x":0.038614936,"y":0.44815928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.23572,"y":147.45747,"z":-67.59541},"screenPosition":{"x":0.06114218,"y":0.4964253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.10385,"y":149.55592,"z":-66.72204},"screenPosition":{"x":0.10194131,"y":0.50398207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.18213,"y":151.431,"z":-64.95201},"screenPosition":{"x":0.1277175,"y":0.46011165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.8149,"y":152.89636,"z":-63.782513},"screenPosition":{"x":0.14866705,"y":0.43718848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.31085,"y":154.74954,"z":-62.323303},"screenPosition":{"x":0.17660655,"y":0.40886143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.31573,"y":156.14005,"z":-61.53623},"screenPosition":{"x":0.20119113,"y":0.4032684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.34625,"y":158.49886,"z":-59.842484},"screenPosition":{"x":0.23867823,"y":0.37553662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.1592,"y":160.28554,"z":-57.787445},"screenPosition":{"x":0.25799212,"y":0.3152475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.1353,"y":160.53818,"z":-56.06914},"screenPosition":{"x":0.24393155,"y":0.23408237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.30548,"y":159.38676,"z":-55.55016},"screenPosition":{"x":0.21026075,"y":0.17936252},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.91922,"y":152.7337,"z":-62.38363},"screenPosition":{"x":0.12825575,"y":0.36198497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.46323,"y":151.06071,"z":-62.658573},"screenPosition":{"x":0.0907732,"y":0.3345227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.66757,"y":150.8987,"z":-62.65872},"screenPosition":{"x":0.061301347,"y":0.27903712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.33832,"y":150.44371,"z":-62.32633},"screenPosition":{"x":0.05504087,"y":0.26611415},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-408.44373,"y":153.54984,"z":-58.32704},"screenPosition":{"x":0.07679568,"y":0.12493452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.61783,"y":152.26791,"z":-60.421562},"screenPosition":{"x":0.07023084,"y":0.1997389},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.32693,"y":150.45894,"z":-62.783104},"screenPosition":{"x":0.077592224,"y":0.32594872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.82916,"y":151.80093,"z":-62.790653},"screenPosition":{"x":0.11034158,"y":0.35958284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.06403,"y":154.1242,"z":-61.526737},"screenPosition":{"x":0.15201934,"y":0.35283992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.2714,"y":156.35493,"z":-59.86298},"screenPosition":{"x":0.1867419,"y":0.32346046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.53766,"y":158.41852,"z":-57.825123},"screenPosition":{"x":0.21350838,"y":0.27100953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.12704,"y":160.11191,"z":-55.468784},"screenPosition":{"x":0.22649631,"y":0.19297549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.37863,"y":159.28003,"z":-54.614193},"screenPosition":{"x":0.1962675,"y":0.1289241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.7912,"y":156.95819,"z":-56.052696},"screenPosition":{"x":0.1566104,"y":0.1445455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.41113,"y":154.88995,"z":-57.652645},"screenPosition":{"x":0.12509185,"y":0.1747043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.13818,"y":153.74925,"z":-59.839878},"screenPosition":{"x":0.12359484,"y":0.2578277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2766,"y":155.15442,"z":-59.97063},"screenPosition":{"x":0.15879036,"y":0.2991926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.77582,"y":158.75473,"z":-57.894917},"screenPosition":{"x":0.22199994,"y":0.28278708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.54895,"y":159.53003,"z":-55.795418},"screenPosition":{"x":0.21669723,"y":0.19540077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.1436,"y":159.15788,"z":-54.844227},"screenPosition":{"x":0.19593228,"y":0.13756144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.68063,"y":157.3903,"z":-55.209984},"screenPosition":{"x":0.15721557,"y":0.11237581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.92627,"y":155.39899,"z":-56.92567},"screenPosition":{"x":0.1289306,"y":0.1503293},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-407.69965,"y":153.02744,"z":-59.1806},"screenPosition":{"x":0.07412039,"y":0.15541872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-409.04843,"y":154.44252,"z":-55.751667},"screenPosition":{"x":0.09184483,"y":0.066899545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.3529,"y":156.00475,"z":-55.155582},"screenPosition":{"x":0.123103075,"y":0.0754311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.50208,"y":156.815,"z":-53.834164},"screenPosition":{"x":0.1312239,"y":0.029419053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-410.4726,"y":155.06424,"z":-54.46707},"screenPosition":{"x":0.098488405,"y":0.0072615575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-410.03027,"y":154.66373,"z":-56.507072},"screenPosition":{"x":0.080690056,"y":0.059383124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-409.33594,"y":154.17624,"z":-57.30356},"screenPosition":{"x":0.08000357,"y":0.08838159},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.56805,"y":149.42467,"z":-65.067116},"screenPosition":{"x":0.052179694,"y":0.36448216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.1067,"y":149.80563,"z":-64.49412},"screenPosition":{"x":0.08181564,"y":0.39681557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.74405,"y":151.55226,"z":-64.06067},"screenPosition":{"x":0.11922654,"y":0.4180382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.21616,"y":153.61934,"z":-62.91489},"screenPosition":{"x":0.15605798,"y":0.41095772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.35715,"y":154.61748,"z":-62.4221},"screenPosition":{"x":0.17469339,"y":0.41059014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.82333,"y":155.88567,"z":-62.016754},"screenPosition":{"x":0.20074964,"y":0.42139164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.28107,"y":156.7607,"z":-61.97858},"screenPosition":{"x":0.22170782,"y":0.4410882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.0519,"y":157.71405,"z":-62.210842},"screenPosition":{"x":0.24743244,"y":0.47659028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4016,"y":158.46304,"z":-62.342903},"screenPosition":{"x":0.26721445,"y":0.5018671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.9765,"y":159.75113,"z":-62.363964},"screenPosition":{"x":0.29909456,"y":0.53463435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.9419,"y":160.9676,"z":-62.25624},"screenPosition":{"x":0.32714963,"y":0.55951244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.72998,"y":163.61229,"z":-60.91857},"screenPosition":{"x":0.37580812,"y":0.55694795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.02725,"y":165.68839,"z":-58.354702},"screenPosition":{"x":0.39621058,"y":0.47792405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.69644,"y":165.98671,"z":-56.747383},"screenPosition":{"x":0.38463876,"y":0.4035383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.99838,"y":164.96748,"z":-56.539597},"screenPosition":{"x":0.35726264,"y":0.36776203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9086,"y":164.02539,"z":-56.45608},"screenPosition":{"x":0.3333523,"y":0.34017098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.06952,"y":163.5852,"z":-55.784138},"screenPosition":{"x":0.31473628,"y":0.29507682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.7801,"y":162.77943,"z":-55.674397},"screenPosition":{"x":0.29383537,"y":0.26952928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.5229,"y":161.27576,"z":-56.19286},"screenPosition":{"x":0.26333722,"y":0.25865164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.8516,"y":160.71262,"z":-55.55071},"screenPosition":{"x":0.24227557,"y":0.21210772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.60013,"y":161.65865,"z":-53.30586},"screenPosition":{"x":0.2448049,"y":0.10629799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.93497,"y":163.79936,"z":-52.659584},"screenPosition":{"x":0.28722745,"y":0.13501231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.60828,"y":163.42484,"z":-54.16634},"screenPosition":{"x":0.29180643,"y":0.20879251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.2112,"y":162.76811,"z":-55.46973},"screenPosition":{"x":0.29126823,"y":0.25887123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.19406,"y":162.82112,"z":-56.427353},"screenPosition":{"x":0.3040123,"y":0.30890915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.39807,"y":162.61336,"z":-57.515343},"screenPosition":{"x":0.3114451,"y":0.35907903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.66443,"y":161.7608,"z":-59.167465},"screenPosition":{"x":0.31012672,"y":0.42201295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.42297,"y":160.04564,"z":-61.370296},"screenPosition":{"x":0.29429168,"y":0.4915936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.32687,"y":157.49968,"z":-63.768536},"screenPosition":{"x":0.26073155,"y":0.55039036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.99268,"y":156.96162,"z":-61.937},"screenPosition":{"x":0.22589976,"y":0.44401512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.80573,"y":159.97284,"z":-59.749496},"screenPosition":{"x":0.2734577,"y":0.40732613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.40167,"y":161.25241,"z":-59.767895},"screenPosition":{"x":0.3050278,"y":0.43987983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.233,"y":161.1741,"z":-60.922363},"screenPosition":{"x":0.3164874,"y":0.496763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.3279,"y":160.69867,"z":-62.311897},"screenPosition":{"x":0.32138133,"y":0.5555662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.78882,"y":160.86368,"z":-62.927578},"screenPosition":{"x":0.33269978,"y":0.5908835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.01245,"y":159.74461,"z":-65.34603},"screenPosition":{"x":0.33390284,"y":0.68613166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.37958,"y":157.22083,"z":-67.49266},"screenPosition":{"x":0.29754874,"y":0.7331008},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.334,"y":153.79643,"z":-67.6826},"screenPosition":{"x":0.21666282,"y":0.65771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.69928,"y":152.12773,"z":-70.03879},"screenPosition":{"x":0.20354098,"y":0.73645395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.68625,"y":152.01709,"z":-71.64442},"screenPosition":{"x":0.2197323,"y":0.8154048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.57587,"y":153.80464,"z":-71.04734},"screenPosition":{"x":0.25621447,"y":0.8293161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.38205,"y":155.37454,"z":-70.19381},"screenPosition":{"x":0.28438336,"y":0.8247865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.1924,"y":156.93896,"z":-69.343254},"screenPosition":{"x":0.31245393,"y":0.82027274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.04642,"y":159.09665,"z":-67.92325},"screenPosition":{"x":0.34840798,"y":0.80116326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.1219,"y":161.01494,"z":-66.114746},"screenPosition":{"x":0.37385523,"y":0.7565947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.08148,"y":162.21481,"z":-64.029236},"screenPosition":{"x":0.37835595,"y":0.6806215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.65048,"y":162.15137,"z":-62.80589},"screenPosition":{"x":0.36242384,"y":0.6168073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.8081,"y":161.25398,"z":-62.55764},"screenPosition":{"x":0.33766416,"y":0.5819427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.3368,"y":160.89357,"z":-62.127544},"screenPosition":{"x":0.32386184,"y":0.5511044},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.75116,"y":160.01706,"z":-60.73392},"screenPosition":{"x":0.28611162,"y":0.4585076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.02478,"y":160.8054,"z":-58.871613},"screenPosition":{"x":0.2833952,"y":0.38328886},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-384.89462,"y":164.48592,"z":-58.53293},"screenPosition":{"x":0.3689861,"y":0.4572479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.68015,"y":165.9226,"z":-57.812683},"screenPosition":{"x":0.3954805,"y":0.45619917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.98618,"y":166.61086,"z":-58.022625},"screenPosition":{"x":0.4147293,"y":0.4839025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.948,"y":167.43893,"z":-58.275227},"screenPosition":{"x":0.4378243,"y":0.5173025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.83243,"y":178.15569,"z":-50.435802},"screenPosition":{"x":0.60644233,"y":0.3839698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.4781,"y":175.91608,"z":-52.680107},"screenPosition":{"x":0.5783314,"y":0.4426665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.1939,"y":174.23892,"z":-53.372166},"screenPosition":{"x":0.5456531,"y":0.43632314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.68536,"y":173.94478,"z":-52.400463},"screenPosition":{"x":0.52706623,"y":0.3795966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.0991,"y":176.47658,"z":-50.807346},"screenPosition":{"x":0.5463341,"y":0.3103924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.2975,"y":178.39253,"z":-50.436657},"screenPosition":{"x":0.5886037,"y":0.33900318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.08273,"y":178.9295,"z":-49.596558},"screenPosition":{"x":0.6154186,"y":0.35715324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.1844,"y":179.87337,"z":-49.672516},"screenPosition":{"x":0.6409239,"y":0.3744169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0119,"y":180.53218,"z":-50.148415},"screenPosition":{"x":0.6609,"y":0.42822942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.01828,"y":181.06273,"z":-50.65347},"screenPosition":{"x":0.6797521,"y":0.46707094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.7001,"y":181.43134,"z":-51.46994},"screenPosition":{"x":0.6983259,"y":0.51774496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.52145,"y":181.30754,"z":-52.67137},"screenPosition":{"x":0.7094432,"y":0.57580477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.91663,"y":179.98698,"z":-54.691254},"screenPosition":{"x":0.70106006,"y":0.6458541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.46545,"y":178.12128,"z":-55.640697},"screenPosition":{"x":0.6668202,"y":0.6479345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.97147,"y":176.48402,"z":-56.899624},"screenPosition":{"x":0.64177984,"y":0.67142105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.14825,"y":174.8695,"z":-57.80284},"screenPosition":{"x":0.61310935,"y":0.6773729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.71426,"y":172.98068,"z":-58.765034},"screenPosition":{"x":0.5784569,"y":0.6795293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.36475,"y":172.03047,"z":-58.818638},"screenPosition":{"x":0.55596143,"y":0.65871316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.68616,"y":170.6126,"z":-58.96915},"screenPosition":{"x":0.52322435,"y":0.6312411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.14124,"y":169.69824,"z":-58.58815},"screenPosition":{"x":0.49649015,"y":0.5892015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.95987,"y":169.92096,"z":-57.97404},"screenPosition":{"x":0.49468818,"y":0.5634751},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-383.96786,"y":166.80037,"z":-56.85881},"screenPosition":{"x":0.4056247,"y":0.4294159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.9827,"y":165.0227,"z":-58.49246},"screenPosition":{"x":0.38157406,"y":0.46848854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.97583,"y":163.6428,"z":-60.268723},"screenPosition":{"x":0.36888185,"y":0.52467304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.08994,"y":162.85405,"z":-61.937916},"screenPosition":{"x":0.36931694,"y":0.59005624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.31644,"y":163.57521,"z":-62.656166},"screenPosition":{"x":0.3953155,"y":0.6444676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.56125,"y":164.59555,"z":-62.590084},"screenPosition":{"x":0.41945332,"y":0.66618335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.16208,"y":166.37947,"z":-61.641457},"screenPosition":{"x":0.45163,"y":0.6623211},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-372.24744,"y":168.20824,"z":-61.407654},"screenPosition":{"x":0.49338764,"y":0.69573617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.9014,"y":166.70694,"z":-63.465225},"screenPosition":{"x":0.4810873,"y":0.7630008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.31735,"y":164.10155,"z":-64.66482},"screenPosition":{"x":0.43174922,"y":0.7597058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.97003,"y":164.09346,"z":-63.34859},"screenPosition":{"x":0.4160722,"y":0.69253784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.36942,"y":166.95038,"z":-60.012955},"screenPosition":{"x":0.44647473,"y":0.59336376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.06134,"y":168.55849,"z":-59.680172},"screenPosition":{"x":0.48163083,"y":0.6163815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.00394,"y":169.99338,"z":-58.8832},"screenPosition":{"x":0.50714326,"y":0.6115259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.5182,"y":171.22682,"z":-58.984943},"screenPosition":{"x":0.53835875,"y":0.647263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.86737,"y":173.3727,"z":-57.82776},"screenPosition":{"x":0.576974,"y":0.6415548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.06198,"y":174.89987,"z":-55.32285},"screenPosition":{"x":0.584681,"y":0.55194706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.95584,"y":174.15178,"z":-54.56941},"screenPosition":{"x":0.5576106,"y":0.49500743},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-377.4076,"y":169.11009,"z":-58.000183},"screenPosition":{"x":0.47526106,"y":0.5447143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.6179,"y":171.52986,"z":-56.160454},"screenPosition":{"x":0.5125148,"y":0.51106554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.66016,"y":173.04408,"z":-54.242508},"screenPosition":{"x":0.5268101,"y":0.4510008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.68536,"y":173.94478,"z":-52.400463},"screenPosition":{"x":0.52706623,"y":0.3795966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.13638,"y":174.14346,"z":-50.99399},"screenPosition":{"x":0.5196778,"y":0.2923497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.19437,"y":172.29732,"z":-51.17231},"screenPosition":{"x":0.47595033,"y":0.26275212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.69547,"y":169.374,"z":-53.620914},"screenPosition":{"x":0.43017885,"y":0.32844242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.78812,"y":168.79208,"z":-55.60887},"screenPosition":{"x":0.43939698,"y":0.41516858},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-382.53967,"y":174.4309,"z":-50.52742},"screenPosition":{"x":0.5182182,"y":0.29136175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.7107,"y":176.02312,"z":-50.46922},"screenPosition":{"x":0.55773187,"y":0.31810713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.67307,"y":176.30222,"z":-51.22835},"screenPosition":{"x":0.57065475,"y":0.37837064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.86566,"y":176.51024,"z":-51.93821},"screenPosition":{"x":0.58406615,"y":0.41964126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.87363,"y":177.03394,"z":-52.448788},"screenPosition":{"x":0.6028167,"y":0.4585943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.48453,"y":178.3132,"z":-52.46001},"screenPosition":{"x":0.63408273,"y":0.49086118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.5558,"y":179.75339,"z":-52.092964},"screenPosition":{"x":0.664816,"y":0.5078691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.38562,"y":190.18387,"z":-47.539036},"screenPosition":{"x":0.8637012,"y":0.5252069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.017,"y":191.0426,"z":-47.42924},"screenPosition":{"x":0.88353544,"y":0.538632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.2083,"y":192.81483,"z":-47.6463},"screenPosition":{"x":0.90678805,"y":0.5543709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.45908,"y":190.79617,"z":-48.43413},"screenPosition":{"x":0.89053756,"y":0.595317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.6079,"y":191.85768,"z":-47.83149},"screenPosition":{"x":0.88567126,"y":0.5400776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.40802,"y":191.99438,"z":-47.80504},"screenPosition":{"x":0.8891406,"y":0.53870845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.84387,"y":191.35165,"z":-47.275997},"screenPosition":{"x":0.87533903,"y":0.50354254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.36545,"y":189.62721,"z":-47.60963},"screenPosition":{"x":0.8353899,"y":0.48777264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.36377,"y":187.91931,"z":-48.143444},"screenPosition":{"x":0.81733054,"y":0.49382025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.64902,"y":187.49483,"z":-49.390976},"screenPosition":{"x":0.8214446,"y":0.5622032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.1505,"y":184.52695,"z":-51.381508},"screenPosition":{"x":0.7726248,"y":0.5899442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.0609,"y":182.9061,"z":-51.924503},"screenPosition":{"x":0.7395637,"y":0.5774118},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-371.4534,"y":181.58646,"z":-49.45386},"screenPosition":{"x":0.68049663,"y":0.40120223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.92477,"y":179.44746,"z":-51.193237},"screenPosition":{"x":0.64678913,"y":0.45451286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.0465,"y":177.84561,"z":-53.11023},"screenPosition":{"x":0.6302919,"y":0.512229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.07208,"y":177.08084,"z":-54.801468},"screenPosition":{"x":0.6316281,"y":0.579457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.66776,"y":177.38208,"z":-55.723125},"screenPosition":{"x":0.64979947,"y":0.63381344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.6629,"y":178.77893,"z":-55.434067},"screenPosition":{"x":0.6803955,"y":0.6537158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.44064,"y":179.82733,"z":-55.076138},"screenPosition":{"x":0.7015943,"y":0.6612503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.45023,"y":182.08528,"z":-53.485954},"screenPosition":{"x":0.73795164,"y":0.63651913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.9118,"y":183.44978,"z":-52.994003},"screenPosition":{"x":0.7653742,"y":0.64529717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.5979,"y":185.22212,"z":-51.51451},"screenPosition":{"x":0.7911079,"y":0.6139354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.286,"y":186.3805,"z":-50.101807},"screenPosition":{"x":0.8026847,"y":0.57075983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.48154,"y":188.15417,"z":-48.36688},"screenPosition":{"x":0.8250418,"y":0.52615803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.9372,"y":188.21312,"z":-48.536617},"screenPosition":{"x":0.8052653,"y":0.48565373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.15466,"y":186.25925,"z":-48.283268},"screenPosition":{"x":0.77762395,"y":0.46694428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.85437,"y":185.53427,"z":-49.05491},"screenPosition":{"x":0.7461647,"y":0.4456506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.4321,"y":183.97583,"z":-48.75576},"screenPosition":{"x":0.72828645,"y":0.43354946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.88245,"y":182.33144,"z":-50.04904},"screenPosition":{"x":0.7035204,"y":0.4677529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.75974,"y":180.95589,"z":-50.881104},"screenPosition":{"x":0.6798075,"y":0.47598252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.35513,"y":179.17316,"z":-51.73071},"screenPosition":{"x":0.6464005,"y":0.47501338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.96762,"y":177.49399,"z":-52.975193},"screenPosition":{"x":0.6202044,"y":0.49677566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.87228,"y":175.68318,"z":-53.6964},"screenPosition":{"x":0.5846158,"y":0.4886034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.75342,"y":174.17873,"z":-54.146545},"screenPosition":{"x":0.5532957,"y":0.47423097},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.88193,"y":172.52185,"z":-51.572487},"screenPosition":{"x":0.45908517,"y":0.2513367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.74802,"y":171.24568,"z":-51.819397},"screenPosition":{"x":0.43093014,"y":0.23227955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9619,"y":170.41554,"z":-51.980007},"screenPosition":{"x":0.41261557,"y":0.21988307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.72803,"y":169.20775,"z":-52.213684},"screenPosition":{"x":0.3859694,"y":0.20184723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.39713,"y":168.06628,"z":-52.43453},"screenPosition":{"x":0.36078665,"y":0.18480192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.35812,"y":166.7252,"z":-52.693993},"screenPosition":{"x":0.33119977,"y":0.16477561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.42044,"y":165.31485,"z":-52.96686},"screenPosition":{"x":0.3000846,"y":0.14371485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.35303,"y":163.22423,"z":-52.981903},"screenPosition":{"x":0.27863178,"y":0.1291942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.089,"y":161.19069,"z":-54.49191},"screenPosition":{"x":0.24126194,"y":0.17000212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.73755,"y":159.39862,"z":-55.822605},"screenPosition":{"x":0.21399102,"y":0.19360371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.0587,"y":157.72899,"z":-57.203667},"screenPosition":{"x":0.18890624,"y":0.22220287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.621,"y":156.17302,"z":-58.359455},"screenPosition":{"x":0.16463147,"y":0.2424561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.47363,"y":154.99435,"z":-59.022064},"screenPosition":{"x":0.14391418,"y":0.24700509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.66168,"y":154.26418,"z":-59.1033},"screenPosition":{"x":0.12725736,"y":0.23309036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.84793,"y":153.92476,"z":-58.82469},"screenPosition":{"x":0.11538608,"y":0.21042213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.79272,"y":154.04338,"z":-58.243736},"screenPosition":{"x":0.111742064,"y":0.18390962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.82687,"y":154.28978,"z":-57.50022},"screenPosition":{"x":0.10869261,"y":0.15207914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.11935,"y":156.0723,"z":-55.20976},"screenPosition":{"x":0.12513614,"y":0.07970863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-408.9797,"y":157.40979,"z":-54.496296},"screenPosition":{"x":0.1256834,"y":0.025668884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-411.0782,"y":155.9747,"z":-54.77395},"screenPosition":{"x":0.097766414,"y":-0.013673236},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-041411/brain-CBDACC-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.8148681104077612,0.5675970758481157,0.11757347544898603,0.0,0.377239539818416,-0.3652982721613638,-0.8510273215082536,0.0,-0.44009123172141773,0.7378283891560362,-0.5117899724665722,0.0,-417.2157598876548,245.31296652340814,-126.0133616145273,1.0]},"baseImage":"20190824-041411/base.webp","version":0,"savedAt":1.566620263433E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-043703-v0.json b/data/mapping/BAAAHS/dwayman/20190824-043703-v0.json new file mode 100644 index 0000000000..16979360c5 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-043703-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566621423204E12,"surfaces":[{"brainId":"C78480","panelName":"21D","pixels":[{"modelPosition":{"x":-266.11374,"y":140.67769,"z":-83.76488},"screenPosition":{"x":0.94696057,"y":0.055669304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.35226,"y":139.81978,"z":-84.2521},"screenPosition":{"x":0.93370897,"y":0.07289657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.33994,"y":138.85693,"z":-84.80597},"screenPosition":{"x":0.9175896,"y":0.09364601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.3276,"y":137.89409,"z":-85.35984},"screenPosition":{"x":0.90147024,"y":0.11439545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.7321,"y":138.01399,"z":-85.658875},"screenPosition":{"x":0.8984483,"y":0.13302214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.85867,"y":137.41205,"z":-86.1278},"screenPosition":{"x":0.8865318,"y":0.15319149},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.3878,"y":137.22636,"z":-86.64979},"screenPosition":{"x":0.8825858,"y":0.18899171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.49443,"y":137.06352,"z":-88.28432},"screenPosition":{"x":0.8671453,"y":0.21644288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.28554,"y":136.00056,"z":-87.86131},"screenPosition":{"x":0.8501909,"y":0.2411352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.56924,"y":133.7025,"z":-88.368645},"screenPosition":{"x":0.82313025,"y":0.23916915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.96107,"y":129.61034,"z":-88.34168},"screenPosition":{"x":0.78693587,"y":0.19032341},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.93907,"y":130.12927,"z":-87.66573},"screenPosition":{"x":0.8005631,"y":0.1576044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.59402,"y":131.36653,"z":-87.13957},"screenPosition":{"x":0.8191838,"y":0.14121838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.20383,"y":131.91313,"z":-86.53263},"screenPosition":{"x":0.83216107,"y":0.11274726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.9653,"y":132.77104,"z":-86.04541},"screenPosition":{"x":0.84660876,"y":0.09445406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.5407,"y":135.00456,"z":-85.37707},"screenPosition":{"x":0.87557596,"y":0.08185338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.39786,"y":137.36719,"z":-85.03075},"screenPosition":{"x":0.90128875,"y":0.08931222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.77142,"y":139.59372,"z":-85.001755},"screenPosition":{"x":0.92463464,"y":0.12130929},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-256.38394,"y":137.81908,"z":-86.15786},"screenPosition":{"x":0.895472,"y":0.16824992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.44379,"y":136.03296,"z":-86.62861},"screenPosition":{"x":0.8676044,"y":0.16592409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.72751,"y":133.7349,"z":-87.13594},"screenPosition":{"x":0.8397374,"y":0.16893297},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-259.31033,"y":131.53378,"z":-86.57158},"screenPosition":{"x":0.82843125,"y":0.11042153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.4748,"y":129.66466,"z":-86.8353},"screenPosition":{"x":0.80183685,"y":0.100083046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.5744,"y":128.44585,"z":-87.40746},"screenPosition":{"x":0.7895872,"y":0.12276279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.0962,"y":128.43314,"z":-87.70414},"screenPosition":{"x":0.7854199,"y":0.13971491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.76079,"y":128.18863,"z":-88.4078},"screenPosition":{"x":0.77310055,"y":0.17794456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.09308,"y":129.13177,"z":-88.789955},"screenPosition":{"x":0.77653587,"y":0.21062104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.6075,"y":131.42287,"z":-88.92198},"screenPosition":{"x":0.79532534,"y":0.24460569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.88145,"y":134.86823,"z":-88.32082},"screenPosition":{"x":0.8398161,"y":0.25783458},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-252.39706,"y":136.75703,"z":-87.12107},"screenPosition":{"x":0.8629558,"y":0.20578319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.294,"y":137.55612,"z":-86.81551},"screenPosition":{"x":0.876702,"y":0.19846238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.5397,"y":138.48308,"z":-87.252754},"screenPosition":{"x":0.89270973,"y":0.17269614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.39087,"y":138.65854,"z":-85.62463},"screenPosition":{"x":0.9088631,"y":0.14669538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.97366,"y":138.58826,"z":-85.12094},"screenPosition":{"x":0.90924656,"y":0.110059045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.49707,"y":137.1608,"z":-84.844376},"screenPosition":{"x":0.9020031,"y":0.07617507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.14896,"y":134.83507,"z":-85.2827},"screenPosition":{"x":0.8746951,"y":0.07509385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.7125,"y":132.96246,"z":-85.866104},"screenPosition":{"x":0.8427598,"y":0.07941474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.15326,"y":131.09909,"z":-86.4725},"screenPosition":{"x":0.8252698,"y":0.10033926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.57047,"y":131.16937,"z":-86.976204},"screenPosition":{"x":0.8187479,"y":0.13040343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.93517,"y":132.8528,"z":-87.234474},"screenPosition":{"x":0.8310849,"y":0.16393712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.06673,"y":135.51752,"z":-86.98487},"screenPosition":{"x":0.85815847,"y":0.1804764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.54294,"y":137.95741,"z":-86.5029},"screenPosition":{"x":0.8848121,"y":0.18540825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.6976,"y":138.88942,"z":-86.95748},"screenPosition":{"x":0.9003532,"y":0.16039309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.32654,"y":139.46103,"z":-86.5421},"screenPosition":{"x":0.9111059,"y":0.14308542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.56546,"y":140.2467,"z":-85.97117},"screenPosition":{"x":0.925885,"y":0.11929665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.73178,"y":141.00691,"z":-85.41875},"screenPosition":{"x":0.9401852,"y":0.096278906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.72934,"y":140.33524,"z":-83.89583},"screenPosition":{"x":0.9431549,"y":0.058344256},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-264.75375,"y":135.33426,"z":-85.91556},"screenPosition":{"x":0.88302284,"y":0.059079714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.6669,"y":135.41507,"z":-85.08745},"screenPosition":{"x":0.87495303,"y":0.06315541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.59317,"y":135.52225,"z":-85.68316},"screenPosition":{"x":0.8759899,"y":0.10550378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.2485,"y":135.74707,"z":-85.915535},"screenPosition":{"x":0.87481064,"y":0.12150658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.77225,"y":135.438,"z":-86.458176},"screenPosition":{"x":0.86465037,"y":0.14919604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.74911,"y":134.22841,"z":-87.053345},"screenPosition":{"x":0.84532124,"y":0.16983369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.75838,"y":133.75908,"z":-87.52462},"screenPosition":{"x":0.8351672,"y":0.19117841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.48784,"y":132.86427,"z":-87.91983},"screenPosition":{"x":0.82182044,"y":0.20357266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.1721,"y":133.40962,"z":-88.29493},"screenPosition":{"x":0.8207933,"y":0.23205334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.23593,"y":124.13412,"z":-92.743675},"screenPosition":{"x":0.6782853,"y":0.38033557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.59288,"y":127.00296,"z":-92.01809},"screenPosition":{"x":0.7132413,"y":0.37202597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.48248,"y":127.97503,"z":-91.48722},"screenPosition":{"x":0.72965175,"y":0.35244492},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-242.56706,"y":125.98378,"z":-90.78955},"screenPosition":{"x":0.72150403,"y":0.28912362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.84344,"y":123.85869,"z":-91.07156},"screenPosition":{"x":0.6987793,"y":0.28071544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.71922,"y":121.021,"z":-91.54648},"screenPosition":{"x":0.6666207,"y":0.2756146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.73042,"y":120.25532,"z":-92.263725},"screenPosition":{"x":0.6504893,"y":0.30760896},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-235.05428,"y":117.51209,"z":-93.63101},"screenPosition":{"x":0.607444,"y":0.35457966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.04546,"y":114.83816,"z":-93.85757},"screenPosition":{"x":0.580603,"y":0.33660746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.99689,"y":111.59693,"z":-93.98269},"screenPosition":{"x":0.5501106,"y":0.3062057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.3578,"y":109.61142,"z":-93.62766},"screenPosition":{"x":0.5371755,"y":0.26302755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.22388,"y":110.38633,"z":-92.93343},"screenPosition":{"x":0.54956704,"y":0.22748993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.04475,"y":112.601395,"z":-92.21911},"screenPosition":{"x":0.5789798,"y":0.21263558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.16898,"y":115.43909,"z":-91.74423},"screenPosition":{"x":0.6148203,"y":0.22177525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.15079,"y":117.49613,"z":-91.62091},"screenPosition":{"x":0.6347724,"y":0.23853868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.759,"y":119.457466,"z":-91.58724},"screenPosition":{"x":0.6526494,"y":0.25935882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.86702,"y":121.925026,"z":-91.17427},"screenPosition":{"x":0.68004185,"y":0.26435205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.02177,"y":123.66851,"z":-90.26884},"screenPosition":{"x":0.7080061,"y":0.23229517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.28348,"y":121.88937,"z":-90.10023},"screenPosition":{"x":0.6945664,"y":0.20187487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.62125,"y":118.69427,"z":-90.34039},"screenPosition":{"x":0.6571954,"y":0.17313421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.05664,"y":116.70751,"z":-90.967415},"screenPosition":{"x":0.6312376,"y":0.1862437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.27898,"y":115.47946,"z":-91.51656},"screenPosition":{"x":0.6181447,"y":0.20934442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.32996,"y":113.150246,"z":-92.274536},"screenPosition":{"x":0.58704317,"y":0.22612862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.49089,"y":112.99222,"z":-92.86554},"screenPosition":{"x":0.57776797,"y":0.25800857},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-237.64247,"y":117.56518,"z":-93.10666},"screenPosition":{"x":0.614856,"y":0.3251952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.63663,"y":120.58507,"z":-92.42944},"screenPosition":{"x":0.6511527,"y":0.32098785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.1723,"y":122.25129,"z":-91.659676},"screenPosition":{"x":0.6764685,"y":0.29595762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.26956,"y":122.34127,"z":-91.22734},"screenPosition":{"x":0.68317586,"y":0.27208316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.90834,"y":121.077576,"z":-90.70245},"screenPosition":{"x":0.6791275,"y":0.2271645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.99332,"y":118.07389,"z":-90.763306},"screenPosition":{"x":0.6516231,"y":0.19581345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.66338,"y":115.82193,"z":-91.38562},"screenPosition":{"x":0.6228802,"y":0.20591247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.92545,"y":115.16118,"z":-92.0362},"screenPosition":{"x":0.6083624,"y":0.23537822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.31216,"y":114.19485,"z":-92.909744},"screenPosition":{"x":0.5878433,"y":0.27451256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.92772,"y":115.9832,"z":-93.101395},"screenPosition":{"x":0.60110503,"y":0.30631182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.80841,"y":118.542984,"z":-92.91849},"screenPosition":{"x":0.6260539,"y":0.32573682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.31897,"y":121.42678,"z":-92.55858},"screenPosition":{"x":0.65686226,"y":0.3381994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.57866,"y":124.20565,"z":-92.265335},"screenPosition":{"x":0.685494,"y":0.35358012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.92833,"y":125.116646,"z":-91.25377},"screenPosition":{"x":0.70745987,"y":0.30581632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.40999,"y":125.549095,"z":-90.69048},"screenPosition":{"x":0.71871626,"y":0.27859437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.82144,"y":124.377625,"z":-90.39562},"screenPosition":{"x":0.71262497,"y":0.24777818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.20242,"y":122.16953,"z":-90.47062},"screenPosition":{"x":0.6919924,"y":0.22647458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.03152,"y":117.92509,"z":-91.37731},"screenPosition":{"x":0.64138913,"y":0.23014593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.595,"y":118.18331,"z":-92.021385},"screenPosition":{"x":0.6354018,"y":0.26959497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.95819,"y":117.01982,"z":-92.73155},"screenPosition":{"x":0.6152994,"y":0.297098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.88596,"y":119.973915,"z":-92.87537},"screenPosition":{"x":0.6393978,"y":0.33978674},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-234.08228,"y":126.249985,"z":-92.43865},"screenPosition":{"x":0.7009524,"y":0.38744223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.19029,"y":128.71754,"z":-92.02569},"screenPosition":{"x":0.7288864,"y":0.39209813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.64297,"y":130.96028,"z":-91.38034},"screenPosition":{"x":0.76037556,"y":0.3857033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.39166,"y":132.11461,"z":-91.880585},"screenPosition":{"x":0.7729133,"y":0.36552238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.24759,"y":132.76588,"z":-91.40732},"screenPosition":{"x":0.78516436,"y":0.34580287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.40881,"y":133.52429,"z":-90.8562},"screenPosition":{"x":0.7994307,"y":0.3228395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.77185,"y":133.81541,"z":-89.30704},"screenPosition":{"x":0.81362104,"y":0.29999855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.31685,"y":132.88147,"z":-88.947876},"screenPosition":{"x":0.8070899,"y":0.26357627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-248.85643,"y":131.82416,"z":-88.60937},"screenPosition":{"x":0.803161,"y":0.23124446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.07687,"y":128.76164,"z":-88.851906},"screenPosition":{"x":0.77265155,"y":0.20968145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.5138,"y":124.85594,"z":-92.57378},"screenPosition":{"x":0.68660975,"y":0.3791344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.2595,"y":122.20045,"z":-92.84638},"screenPosition":{"x":0.6597993,"y":0.36376613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.03223,"y":120.16185,"z":-93.01574},"screenPosition":{"x":0.6392038,"y":0.3500053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.13533,"y":117.23193,"z":-93.26061},"screenPosition":{"x":0.6100181,"y":0.32997993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.05933,"y":116.51709,"z":-92.79114},"screenPosition":{"x":0.610086,"y":0.29462516},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-245.1655,"y":115.019356,"z":-92.01084},"screenPosition":{"x":0.6073776,"y":0.23237854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.91963,"y":116.05024,"z":-91.29832},"screenPosition":{"x":0.62593013,"y":0.20378359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.22258,"y":117.68531,"z":-90.779236},"screenPosition":{"x":0.6476337,"y":0.19267519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.03265,"y":119.65362,"z":-90.10621},"screenPosition":{"x":0.67463124,"y":0.17627281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.2364,"y":121.49506,"z":-89.77348},"screenPosition":{"x":0.69553024,"y":0.17846622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.72536,"y":123.88535,"z":-89.49618},"screenPosition":{"x":0.72054565,"y":0.19022353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.45091,"y":125.71409,"z":-89.46012},"screenPosition":{"x":0.7372774,"y":0.20936905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.30653,"y":127.36063,"z":-89.62638},"screenPosition":{"x":0.7495956,"y":0.23808694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.9638,"y":127.28909,"z":-90.10473},"screenPosition":{"x":0.74245405,"y":0.26480097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.6284,"y":127.04458,"z":-90.80838},"screenPosition":{"x":0.7306665,"y":0.3025202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.61072,"y":123.82754,"z":-91.322235},"screenPosition":{"x":0.6950769,"y":0.2948019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.84929,"y":120.8388,"z":-91.748795},"screenPosition":{"x":0.66270775,"y":0.28470147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.15228,"y":120.34305,"z":-91.16903},"screenPosition":{"x":0.66622865,"y":0.24553178},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-250.10332,"y":118.114265,"z":-90.53564},"screenPosition":{"x":0.6492382,"y":0.17715281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.03613,"y":120.07336,"z":-89.8396},"screenPosition":{"x":0.6772418,"y":0.16301015},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-254.90909,"y":123.81855,"z":-88.672806},"screenPosition":{"x":0.72569454,"y":0.13853908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.98277,"y":125.84219,"z":-88.137764},"screenPosition":{"x":0.75648665,"y":0.13463822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.107,"y":128.67989,"z":-87.66285},"screenPosition":{"x":0.788009,"y":0.14036849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.10155,"y":130.68733,"z":-87.744156},"screenPosition":{"x":0.8048902,"y":0.1681826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.21884,"y":132.68556,"z":-87.80247},"screenPosition":{"x":0.82126796,"y":0.19519207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.43918,"y":133.88469,"z":-88.166336},"screenPosition":{"x":0.82656014,"y":0.23029876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.70125,"y":133.22394,"z":-88.816925},"screenPosition":{"x":0.812162,"y":0.25984433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.23236,"y":130.61107,"z":-89.524216},"screenPosition":{"x":0.7798864,"y":0.26989534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.62607,"y":128.35338,"z":-89.80388},"screenPosition":{"x":0.7560163,"y":0.2598126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.88239,"y":126.45087,"z":-89.655914},"screenPosition":{"x":0.74114424,"y":0.22920448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.06265,"y":125.96433,"z":-89.09915},"screenPosition":{"x":0.7437106,"y":0.19219115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.84032,"y":127.192375,"z":-88.54998},"screenPosition":{"x":0.76284266,"y":0.17406732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.87427,"y":128.64873,"z":-87.91352},"screenPosition":{"x":0.78447306,"y":0.15428488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.24936,"y":131.59135,"z":-87.37195},"screenPosition":{"x":0.81800455,"y":0.15722117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.23311,"y":133.35205,"z":-87.49456},"screenPosition":{"x":0.8318174,"y":0.18484026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.86139,"y":135.0908,"z":-87.89084},"screenPosition":{"x":0.84198815,"y":0.2277419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.64139,"y":135.01006,"z":-88.34618},"screenPosition":{"x":0.83866274,"y":0.259691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.32957,"y":132.83188,"z":-89.15254},"screenPosition":{"x":0.80424356,"y":0.2745287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.26129,"y":130.93161,"z":-89.66694},"screenPosition":{"x":0.7807823,"y":0.28184143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.9024,"y":128.35912,"z":-90.14656},"screenPosition":{"x":0.7513805,"y":0.27963296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.88818,"y":125.5618,"z":-90.39381},"screenPosition":{"x":0.7228717,"y":0.2616646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.66977,"y":124.066315,"z":-90.2759},"screenPosition":{"x":0.711098,"y":0.23764732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.3375,"y":123.12315,"z":-89.89374},"screenPosition":{"x":0.70834416,"y":0.20429234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.84616,"y":124.172485,"z":-89.22721},"screenPosition":{"x":0.7267711,"y":0.17805338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.30965,"y":126.66198,"z":-88.540565},"screenPosition":{"x":0.75814813,"y":0.16748585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-252.17953,"y":128.975,"z":-88.39892},"screenPosition":{"x":0.7807367,"y":0.18604872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.26982,"y":130.35634,"z":-88.56047},"screenPosition":{"x":0.790795,"y":0.21139136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.13431,"y":132.54599,"z":-88.43947},"screenPosition":{"x":0.8110833,"y":0.23042534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.65997,"y":131.94057,"z":-89.22807},"screenPosition":{"x":0.7957393,"y":0.2682561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.03937,"y":131.1472,"z":-89.87631},"screenPosition":{"x":0.77983546,"y":0.2964114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.55775,"y":128.58394,"z":-90.37894},"screenPosition":{"x":0.7500584,"y":0.29573214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.27992,"y":125.73129,"z":-90.48817},"screenPosition":{"x":0.7227663,"y":0.26932672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.57944,"y":124.8158,"z":-90.17501},"screenPosition":{"x":0.7188432,"y":0.24078405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.8917,"y":123.85071,"z":-90.06653},"screenPosition":{"x":0.7117978,"y":0.22334376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.93495,"y":122.70691,"z":-89.840675},"screenPosition":{"x":0.70513344,"y":0.1966712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.5344,"y":119.86349,"z":-89.97291},"screenPosition":{"x":0.67242485,"y":0.16544284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.22604,"y":118.10504,"z":-90.512634},"screenPosition":{"x":0.64992326,"y":0.17680685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.39021,"y":110.351685,"z":-93.503784},"screenPosition":{"x":0.54554045,"y":0.26426387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.30379,"y":108.37764,"z":-93.83413},"screenPosition":{"x":0.52348167,"y":0.26045433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.44858,"y":105.71866,"z":-94.42638},"screenPosition":{"x":0.4879681,"y":0.25859937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.64929,"y":103.9971,"z":-95.05811},"screenPosition":{"x":0.4679263,"y":0.27999622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.45288,"y":101.98267,"z":-95.616135},"screenPosition":{"x":0.43882558,"y":0.28341788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.6698,"y":100.63125,"z":-96.18593},"screenPosition":{"x":0.42262432,"y":0.30594036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.0492,"y":99.83789,"z":-96.83416},"screenPosition":{"x":0.40672776,"y":0.33432406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.92493,"y":99.13102,"z":-97.36973},"screenPosition":{"x":0.3931242,"y":0.35676143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.44865,"y":98.82195,"z":-97.91237},"screenPosition":{"x":0.3829639,"y":0.3844509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.13834,"y":99.49069,"z":-98.26684},"screenPosition":{"x":0.3840582,"y":0.41264158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.60068,"y":100.25165,"z":-98.851326},"screenPosition":{"x":0.3828364,"y":0.45517996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.25017,"y":103.49637,"z":-98.406525},"screenPosition":{"x":0.4177201,"y":0.46717733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.10039,"y":105.01953,"z":-98.59346},"screenPosition":{"x":0.4286913,"y":0.4956274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.68854,"y":107.203445,"z":-98.12981},"screenPosition":{"x":0.454421,"y":0.49424762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.59624,"y":110.38012,"z":-97.843666},"screenPosition":{"x":0.48654068,"y":0.51461965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.05972,"y":112.869606,"z":-97.15706},"screenPosition":{"x":0.5180013,"y":0.5039409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.942,"y":114.01465,"z":-96.40088},"screenPosition":{"x":0.53851813,"y":0.47364554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.51399,"y":113.69761,"z":-95.93847},"screenPosition":{"x":0.54200053,"y":0.44333124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.62596,"y":111.31081,"z":-95.896065},"screenPosition":{"x":0.5214214,"y":0.41316625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.80469,"y":110.10818,"z":-95.85186},"screenPosition":{"x":0.51134604,"y":0.39666227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.9456,"y":108.04191,"z":-95.95218},"screenPosition":{"x":0.49158165,"y":0.37854835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.11545,"y":106.29617,"z":-96.19523},"screenPosition":{"x":0.47280177,"y":0.3722176},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-229.29308,"y":101.234184,"z":-97.36142},"screenPosition":{"x":0.41191408,"y":0.380689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.75745,"y":97.437126,"z":-98.07048},"screenPosition":{"x":0.3685204,"y":0.37754148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.99597,"y":96.579216,"z":-98.557686},"screenPosition":{"x":0.35422912,"y":0.3956187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.44751,"y":97.09342,"z":-99.18348},"screenPosition":{"x":0.3502433,"y":0.43765414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.44206,"y":99.10087,"z":-99.26482},"screenPosition":{"x":0.3669739,"y":0.46565855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.4563,"y":101.898186,"z":-99.01762},"screenPosition":{"x":0.39517686,"y":0.48385236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.16718,"y":104.07288,"z":-98.53096},"screenPosition":{"x":0.42113906,"y":0.48103973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.63606,"y":106.68575,"z":-97.8237},"screenPosition":{"x":0.4540071,"y":0.47059718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.80894,"y":108.50302,"z":-97.10231},"screenPosition":{"x":0.479976,"y":0.4501371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.89888,"y":108.765976,"z":-96.44466},"screenPosition":{"x":0.49132589,"y":0.4152536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.01433,"y":106.798904,"z":-96.13564},"screenPosition":{"x":0.47808057,"y":0.37461686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.48216,"y":103.421585,"z":-96.57809},"screenPosition":{"x":0.44202855,"y":0.36100796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.15607,"y":100.57692,"z":-97.69233},"screenPosition":{"x":0.4015562,"y":0.39214444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.47755,"y":101.273315,"z":-98.1158},"screenPosition":{"x":0.40195224,"y":0.42462304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.08229,"y":102.814926,"z":-98.34874},"screenPosition":{"x":0.41245848,"y":0.4559388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.31499,"y":104.976906,"z":-98.15876},"screenPosition":{"x":0.43424684,"y":0.47009468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.55115,"y":107.558624,"z":-97.70218},"screenPosition":{"x":0.46340898,"y":0.4737322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.39555,"y":109.97085,"z":-97.15123},"screenPosition":{"x":0.4923692,"y":0.46996033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.59738,"y":112.10865,"z":-96.57256},"screenPosition":{"x":0.51926124,"y":0.46141642},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-230.06244,"y":113.1834,"z":-95.31269},"screenPosition":{"x":0.5460228,"y":0.40127322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.82784,"y":111.31778,"z":-95.2567},"screenPosition":{"x":0.5302209,"y":0.37639636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.71054,"y":109.31956,"z":-95.19836},"screenPosition":{"x":0.5132737,"y":0.3498449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.10966,"y":107.18524,"z":-95.457344},"screenPosition":{"x":0.49069762,"y":0.34020147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.144,"y":107.62915,"z":-95.57942},"screenPosition":{"x":0.49305448,"y":0.35219303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.27797,"y":104.72341,"z":-96.21296},"screenPosition":{"x":0.45859385,"y":0.35498658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.12828,"y":101.98492,"z":-96.278496},"screenPosition":{"x":0.43335795,"y":0.32719547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.99435,"y":102.75983,"z":-95.58426},"screenPosition":{"x":0.4497488,"y":0.29596367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.81523,"y":104.9749,"z":-94.869934},"screenPosition":{"x":0.47918093,"y":0.2804974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.04059,"y":107.30986,"z":-94.45465},"screenPosition":{"x":0.50559103,"y":0.28365788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.70474,"y":110.20862,"z":-94.46047},"screenPosition":{"x":0.53125274,"y":0.31763288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.28442,"y":110.836975,"z":-95.04261},"screenPosition":{"x":0.52887714,"y":0.3584772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.72714,"y":108.677246,"z":-95.89495},"screenPosition":{"x":0.49800432,"y":0.38261655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.49292,"y":105.79917,"z":-96.597496},"screenPosition":{"x":0.4628916,"y":0.3896338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.81256,"y":102.53027,"z":-96.65361},"screenPosition":{"x":0.43308756,"y":0.35500857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.36835,"y":101.843094,"z":-96.253136},"screenPosition":{"x":0.43246076,"y":0.3239424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.07928,"y":101.88696,"z":-95.70579},"screenPosition":{"x":0.43566838,"y":0.28501236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.07022,"y":112.5022,"z":-92.62844},"screenPosition":{"x":0.57665664,"y":0.23865661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-245.94902,"y":113.22751,"z":-92.13888},"screenPosition":{"x":0.5895501,"y":0.2192664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.62556,"y":114.95829,"z":-91.53014},"screenPosition":{"x":0.6080502,"y":0.19795409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.54758,"y":116.67062,"z":-90.875404},"screenPosition":{"x":0.63398147,"y":0.18485796},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-252.14415,"y":122.54091,"z":-89.426636},"screenPosition":{"x":0.7095574,"y":0.1706122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-250.77397,"y":124.99576,"z":-89.31034},"screenPosition":{"x":0.73294556,"y":0.19239926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-249.12592,"y":126.728775,"z":-89.363945},"screenPosition":{"x":0.74760216,"y":0.2156015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-246.95453,"y":127.75842,"z":-89.633446},"screenPosition":{"x":0.7530623,"y":0.24308454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.13707,"y":128.09392,"z":-90.14185},"screenPosition":{"x":0.7490935,"y":0.2762812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-242.42961,"y":128.46979,"z":-90.422585},"screenPosition":{"x":0.7485946,"y":0.29682422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.66467,"y":127.19214,"z":-91.176414},"screenPosition":{"x":0.7269472,"y":0.32544535},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-236.57326,"y":124.082275,"z":-92.28598},"screenPosition":{"x":0.6841683,"y":0.35330588},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-235.8879,"y":119.67756,"z":-93.12133},"screenPosition":{"x":0.6336386,"y":0.35033423},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-236.81425,"y":115.523094,"z":-93.59567},"screenPosition":{"x":0.59008986,"y":0.32965207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.70624,"y":113.055534,"z":-94.008606},"screenPosition":{"x":0.56261057,"y":0.3247567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.23735,"y":110.442665,"z":-94.71586},"screenPosition":{"x":0.52984095,"y":0.33506852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.57893,"y":108.78567,"z":-95.50861},"screenPosition":{"x":0.5042927,"y":0.36153156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.2308,"y":108.59075,"z":-96.00761},"screenPosition":{"x":0.49574265,"y":0.38802996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.08835,"y":109.94093,"z":-96.41985},"screenPosition":{"x":0.50209856,"y":0.42745912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.48892,"y":112.78436,"z":-96.28767},"screenPosition":{"x":0.5291551,"y":0.45283717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.34413,"y":115.443344,"z":-95.69543},"screenPosition":{"x":0.56086075,"y":0.44955876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.15962,"y":117.53503,"z":-95.00174},"screenPosition":{"x":0.58873427,"y":0.43394306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.33443,"y":119.05594,"z":-94.52629},"screenPosition":{"x":0.6087398,"y":0.42418876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.63737,"y":120.69101,"z":-94.007195},"screenPosition":{"x":0.63053167,"y":0.41315433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.92952,"y":122.079315,"z":-93.52939},"screenPosition":{"x":0.64924926,"y":0.40179944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.75232,"y":123.99803,"z":-93.061},"screenPosition":{"x":0.6728287,"y":0.39699814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.67973,"y":125.83374,"z":-92.38559},"screenPosition":{"x":0.69785213,"y":0.37963057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.04947,"y":126.52216,"z":-91.80401},"screenPosition":{"x":0.71242106,"y":0.35384238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.85072,"y":125.816536,"z":-91.357544},"screenPosition":{"x":0.7122566,"y":0.31992048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.43398,"y":122.60298,"z":-91.55173},"screenPosition":{"x":0.6808136,"y":0.29403418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.46141,"y":120.0766,"z":-92.146355},"screenPosition":{"x":0.65025914,"y":0.29900423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.18935,"y":118.46571,"z":-93.054146},"screenPosition":{"x":0.62379575,"y":0.33239743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.94577,"y":120.31863,"z":-93.40678},"screenPosition":{"x":0.63543034,"y":0.37422636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.10779,"y":124.01996,"z":-92.78732},"screenPosition":{"x":0.6767635,"y":0.38147885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.27527,"y":125.71385,"z":-92.086555},"screenPosition":{"x":0.7009047,"y":0.36101666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.40494,"y":126.5441,"z":-91.530334},"screenPosition":{"x":0.7163559,"y":0.3383231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.5528,"y":125.31729,"z":-91.09746},"screenPosition":{"x":0.71095467,"y":0.299454},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-246.13954,"y":120.39265,"z":-90.96436},"screenPosition":{"x":0.66892314,"y":0.23492332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.16853,"y":118.58235,"z":-91.0464},"screenPosition":{"x":0.6522695,"y":0.21803105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-247.24657,"y":114.7392,"z":-91.64044},"screenPosition":{"x":0.6038989,"y":0.20005062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-244.60976,"y":113.57571,"z":-92.35062},"screenPosition":{"x":0.58998644,"y":0.23510109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-243.28522,"y":111.44713,"z":-92.95228},"screenPosition":{"x":0.562862,"y":0.24507777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.7422,"y":109.95389,"z":-93.49672},"screenPosition":{"x":0.5420506,"y":0.25935555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.83446,"y":108.908035,"z":-93.84356},"screenPosition":{"x":0.5281343,"y":0.26698288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.5678,"y":107.420525,"z":-94.73068},"screenPosition":{"x":0.5028015,"y":0.30085176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.4632,"y":107.503525,"z":-94.937706},"screenPosition":{"x":0.50070935,"y":0.31374717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.35165,"y":106.74706,"z":-95.67794},"screenPosition":{"x":0.48387188,"y":0.34764308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.9279,"y":104.82486,"z":-96.46599},"screenPosition":{"x":0.45603678,"y":0.37074766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.01823,"y":104.07537,"z":-96.566864},"screenPosition":{"x":0.44799984,"y":0.36787656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.44629,"y":102.26159,"z":-96.968575},"screenPosition":{"x":0.42640617,"y":0.36996934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.09473,"y":99.51611,"z":-97.67348},"screenPosition":{"x":0.39239976,"y":0.3787866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.65631,"y":97.939865,"z":-98.010895},"screenPosition":{"x":0.37380666,"y":0.37997514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.4437,"y":95.555305,"z":-98.63086},"screenPosition":{"x":0.3441368,"y":0.3879534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.02536,"y":93.756485,"z":-99.39828},"screenPosition":{"x":0.31767568,"y":0.4113091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.49608,"y":97.699615,"z":-102.66579},"screenPosition":{"x":0.30808318,"y":0.64534277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.34875,"y":91.5215,"z":-103.67517},"screenPosition":{"x":0.2393812,"y":0.6318757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.11568,"y":90.37196,"z":-103.10661},"screenPosition":{"x":0.23694308,"y":0.5857659},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.19481,"y":90.38816,"z":-102.49025},"screenPosition":{"x":0.24551016,"y":0.55042875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.15115,"y":92.5444,"z":-101.957565},"screenPosition":{"x":0.27193728,"y":0.5447505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.51357,"y":93.4058,"z":-101.15066},"screenPosition":{"x":0.2907009,"y":0.5082511},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-218.69333,"y":98.19336,"z":-99.9567},"screenPosition":{"x":0.34946078,"y":0.49499246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.96927,"y":99.21154,"z":-99.54085},"screenPosition":{"x":0.36417127,"y":0.48283467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.47293,"y":99.125046,"z":-99.65351},"screenPosition":{"x":0.36186087,"y":0.48832187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.84653,"y":99.22076,"z":-99.56385},"screenPosition":{"x":0.36393738,"y":0.48426625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.49112,"y":97.068,"z":-99.77684},"screenPosition":{"x":0.34190866,"y":0.47155842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.4715,"y":94.14731,"z":-100.044716},"screenPosition":{"x":0.31231207,"y":0.45310277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.56529,"y":93.81755,"z":-99.87898},"screenPosition":{"x":0.3116487,"y":0.43972382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.81273,"y":91.371925,"z":-100.01826},"screenPosition":{"x":0.2880281,"y":0.41936952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.62717,"y":87.473434,"z":-100.47431},"screenPosition":{"x":0.24717686,"y":0.40041265},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-211.32487,"y":90.205956,"z":-102.69256},"screenPosition":{"x":0.24123563,"y":0.5599522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.07787,"y":89.508316,"z":-103.251144},"screenPosition":{"x":0.22748284,"y":0.58401376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.82547,"y":88.687294,"z":-103.83038},"screenPosition":{"x":0.21209222,"y":0.6079305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.38899,"y":86.8147,"z":-104.41378},"screenPosition":{"x":0.18758547,"y":0.61978316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.17638,"y":84.43014,"z":-105.03376},"screenPosition":{"x":0.15784323,"y":0.6278839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.06836,"y":81.962585,"z":-105.44671},"screenPosition":{"x":0.13028783,"y":0.6230489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.07034,"y":79.5354,"z":-105.63199},"screenPosition":{"x":0.10620232,"y":0.60556024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.46751,"y":77.69744,"z":-105.64503},"screenPosition":{"x":0.08981664,"y":0.58496034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.62271,"y":76.29766,"z":-105.437454},"screenPosition":{"x":0.08010964,"y":0.55677354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.9257,"y":75.8019,"z":-104.857666},"screenPosition":{"x":0.08363054,"y":0.51760375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.31703,"y":76.98383,"z":-104.19349},"screenPosition":{"x":0.10358817,"y":0.49307764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.42313,"y":79.74775,"z":-103.53457},"screenPosition":{"x":0.1367512,"y":0.48713702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.31808,"y":82.974014,"z":-103.04373},"screenPosition":{"x":0.17232998,"y":0.49631348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.60864,"y":85.77706,"z":-103.1392},"screenPosition":{"x":0.19569492,"y":0.5343199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.99538,"y":84.81074,"z":-104.01276},"screenPosition":{"x":0.17517585,"y":0.57345426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.3424,"y":81.146286,"z":-104.724205},"screenPosition":{"x":0.13325576,"y":0.5718741},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.46712,"y":78.709885,"z":-104.88648},"screenPosition":{"x":0.109059826,"y":0.5530116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.01944,"y":77.602974,"z":-104.752625},"screenPosition":{"x":0.10105965,"y":0.53245085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.2723,"y":75.28072,"z":-104.871254},"screenPosition":{"x":0.07912879,"y":0.512349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.21486,"y":71.49639,"z":-105.28365},"screenPosition":{"x":0.039132725,"y":0.48528087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.21526,"y":70.48395,"z":-106.042206},"screenPosition":{"x":0.017922144,"y":0.52846664},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-205.17293,"y":73.39531,"z":-106.139},"screenPosition":{"x":0.039727207,"y":0.5884454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.63751,"y":76.022896,"z":-107.10805},"screenPosition":{"x":0.06671734,"y":0.59223557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.95845,"y":77.66055,"z":-105.55302},"screenPosition":{"x":0.0906329,"y":0.5792506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.99432,"y":78.82056,"z":-105.16251},"screenPosition":{"x":0.1062703,"y":0.57020545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.31348,"y":80.82575,"z":-104.581474},"screenPosition":{"x":0.13232724,"y":0.55994695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.1471,"y":82.99122,"z":-104.0718},"screenPosition":{"x":0.15821166,"y":0.55574155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.10884,"y":85.27084,"z":-103.51847},"screenPosition":{"x":0.18601654,"y":0.550305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.92625,"y":87.06618,"z":-103.07074},"screenPosition":{"x":0.20807788,"y":0.54533434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.00533,"y":89.2132,"z":-102.51505},"screenPosition":{"x":0.23473744,"y":0.53822327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.0628,"y":90.866714,"z":-102.04196},"screenPosition":{"x":0.25588593,"y":0.53014517},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-224.97377,"y":86.952255,"z":-100.4879},"screenPosition":{"x":0.24250704,"y":0.39525577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.80353,"y":89.71043,"z":-99.48629},"screenPosition":{"x":0.27863276,"y":0.3643216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.50166,"y":91.93472,"z":-98.794945},"screenPosition":{"x":0.30733392,"y":0.3498261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.3731,"y":94.96384,"z":-98.14073},"screenPosition":{"x":0.34558257,"y":0.35284036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.48862,"y":109.53516,"z":-95.40774},"screenPosition":{"x":0.51230496,"y":0.36444998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.72864,"y":111.524155,"z":-95.44308},"screenPosition":{"x":0.5295065,"y":0.38953352},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-225.03188,"y":116.40843,"z":-95.803925},"screenPosition":{"x":0.56794804,"y":0.46701205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.5081,"y":118.84832,"z":-95.32196},"screenPosition":{"x":0.59602076,"y":0.4676038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.96078,"y":121.09105,"z":-94.67661},"screenPosition":{"x":0.6248329,"y":0.4564134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.27992,"y":123.09625,"z":-94.095566},"screenPosition":{"x":0.65068233,"y":0.44616228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.38606,"y":123.72934,"z":-93.37597},"screenPosition":{"x":0.6661383,"y":0.41203395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.15144,"y":121.863716,"z":-93.320015},"screenPosition":{"x":0.6503364,"y":0.3871571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.27269,"y":119.00758,"z":-93.748924},"screenPosition":{"x":0.61911255,"y":0.37873125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.59421,"y":117.57316,"z":-94.11171},"screenPosition":{"x":0.601417,"y":0.38299435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.25847,"y":116.21027,"z":-93.99614},"screenPosition":{"x":0.59089375,"y":0.36051732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.65372,"y":114.66867,"z":-93.7632},"screenPosition":{"x":0.58026206,"y":0.32934722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.75336,"y":111.31902,"z":-94.27466},"screenPosition":{"x":0.54365265,"y":0.31980866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.02628,"y":108.77419,"z":-94.82325},"screenPosition":{"x":0.5135572,"y":0.321896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.69438,"y":106.818596,"z":-95.1996},"screenPosition":{"x":0.49104795,"y":0.32089362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.63884,"y":104.86872,"z":-95.91864},"screenPosition":{"x":0.46390647,"y":0.339709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.10123,"y":103.498856,"z":-96.44243},"screenPosition":{"x":0.44456178,"y":0.3541187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.90482,"y":101.48443,"z":-97.00045},"screenPosition":{"x":0.4190656,"y":0.36288482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.83653,"y":99.58416,"z":-97.51482},"screenPosition":{"x":0.39517722,"y":0.37048516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.71231,"y":96.74646,"z":-97.98969},"screenPosition":{"x":0.3634766,"y":0.36482182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.86557,"y":95.643036,"z":-97.53615},"screenPosition":{"x":0.35091302,"y":0.32781652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.72234,"y":97.5673,"z":-97.89273},"screenPosition":{"x":0.38396886,"y":0.31112227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.93227,"y":99.0889,"z":-97.410194},"screenPosition":{"x":0.4029761,"y":0.29861403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.43048,"y":100.97305,"z":-96.81268},"screenPosition":{"x":0.42897245,"y":0.28839403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.73923,"y":102.618935,"z":-96.290726},"screenPosition":{"x":0.4507211,"y":0.27741027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-240.0909,"y":104.31879,"z":-95.75166},"screenPosition":{"x":0.473183,"y":0.2660663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.3401,"y":106.39437,"z":-94.14148},"screenPosition":{"x":0.4990699,"y":0.2529926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-241.18646,"y":108.51024,"z":-93.83649},"screenPosition":{"x":0.52464503,"y":0.26208395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-239.07448,"y":110.89704,"z":-93.8789},"screenPosition":{"x":0.5453139,"y":0.2921015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.66843,"y":112.19189,"z":-94.15313},"screenPosition":{"x":0.55300444,"y":0.32301983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.90349,"y":110.914246,"z":-94.90695},"screenPosition":{"x":0.53131986,"y":0.35169616},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-224.41524,"y":110.76071,"z":-96.82268},"screenPosition":{"x":0.50383776,"y":0.46021482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.1879,"y":110.852936,"z":-97.05271},"screenPosition":{"x":0.5015166,"y":0.47453606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.92079,"y":112.5087,"z":-97.242},"screenPosition":{"x":0.5136085,"y":0.50465363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.64633,"y":114.33743,"z":-97.20597},"screenPosition":{"x":0.5303968,"y":0.52378845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.5197,"y":117.07019,"z":-96.79774},"screenPosition":{"x":0.56024283,"y":0.5319726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.12752,"y":120.04397,"z":-96.0055},"screenPosition":{"x":0.5973543,"y":0.52082443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.32938,"y":120.05094,"z":-95.36614},"screenPosition":{"x":0.606247,"y":0.48405856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.85277,"y":118.6235,"z":-95.08958},"screenPosition":{"x":0.59738016,"y":0.45154577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.73201,"y":116.20554,"z":-95.29787},"screenPosition":{"x":0.57306224,"y":0.43548995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.69618,"y":112.91472,"z":-95.627655},"screenPosition":{"x":0.5393324,"y":0.41630903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.39513,"y":113.11412,"z":-96.4534},"screenPosition":{"x":0.5298185,"y":0.4662161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.61354,"y":114.60961,"z":-96.57132},"screenPosition":{"x":0.541487,"y":0.49036768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.7343,"y":117.027565,"z":-96.36305},"screenPosition":{"x":0.5658049,"y":0.50642353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.4687,"y":119.39941,"z":-96.039734},"screenPosition":{"x":0.5912852,"y":0.51531523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.45206,"y":122.17255,"z":-95.40381},"screenPosition":{"x":0.6246012,"y":0.5108457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.5528,"y":122.68225,"z":-94.70486},"screenPosition":{"x":0.6386793,"y":0.47647566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.69177,"y":120.91234,"z":-94.55925},"screenPosition":{"x":0.6247734,"y":0.44760647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.58723,"y":118.86452,"z":-94.705605},"screenPosition":{"x":0.60472965,"y":0.43222976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.85281,"y":116.492676,"z":-95.0289},"screenPosition":{"x":0.57928765,"y":0.4233198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.67107,"y":114.13229,"z":-96.03755},"screenPosition":{"x":0.54454297,"y":0.45406362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.25421,"y":115.18039,"z":-96.35307},"screenPosition":{"x":0.54943144,"y":0.48444304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.05344,"y":119.03277,"z":-95.782005},"screenPosition":{"x":0.59154284,"y":0.4962064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.20471,"y":120.35652,"z":-95.14318},"screenPosition":{"x":0.61185396,"y":0.47479305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.98436,"y":119.15739,"z":-94.77932},"screenPosition":{"x":0.6063113,"y":0.43988073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.3479,"y":119.112274,"z":-96.3087},"screenPosition":{"x":0.58505976,"y":0.52748543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.21046,"y":121.598274,"z":-95.94174},"screenPosition":{"x":0.6120423,"y":0.5351799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.62534,"y":122.97736,"z":-95.44093},"screenPosition":{"x":0.6311755,"y":0.5223264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.4084,"y":124.32879,"z":-94.87112},"screenPosition":{"x":0.65102834,"y":0.5051675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.89548,"y":124.88461,"z":-94.287186},"screenPosition":{"x":0.6638407,"y":0.47798038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.35553,"y":124.82354,"z":-93.80649},"screenPosition":{"x":0.66997117,"y":0.44954678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.13713,"y":123.32805,"z":-93.68858},"screenPosition":{"x":0.65830255,"y":0.4253952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.67325,"y":121.851006,"z":-93.61669},"screenPosition":{"x":0.64616907,"y":0.40410924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.94577,"y":120.31863,"z":-93.40678},"screenPosition":{"x":0.63543034,"y":0.37422636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.28548,"y":116.82716,"z":-93.89291},"screenPosition":{"x":0.59766555,"y":0.36182863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.72472,"y":114.247696,"z":-95.011856},"screenPosition":{"x":0.559585,"y":0.39628485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.64168,"y":116.95503,"z":-95.19699},"screenPosition":{"x":0.5809853,"y":0.43842962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.25877,"y":119.45947,"z":-94.87604},"screenPosition":{"x":0.6074719,"y":0.44903556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.94458,"y":120.72092,"z":-94.738556},"screenPosition":{"x":0.6208023,"y":0.45565552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.98972,"y":121.41158,"z":-94.819336},"screenPosition":{"x":0.6258315,"y":0.46832687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.32397,"y":119.92757,"z":-95.386795},"screenPosition":{"x":0.60489845,"y":0.4838108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.51192,"y":120.38643,"z":-95.87455},"screenPosition":{"x":0.6020765,"y":0.5172572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.129,"y":122.89088,"z":-95.55359},"screenPosition":{"x":0.62893295,"y":0.5278155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.92287,"y":124.48906,"z":-94.94248},"screenPosition":{"x":0.65147114,"y":0.51114076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.15907,"y":124.93994,"z":-94.42519},"screenPosition":{"x":0.6625494,"y":0.48655844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.94215,"y":126.29137,"z":-93.855385},"screenPosition":{"x":0.6820943,"y":0.4694489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.91129,"y":126.26719,"z":-93.4667},"screenPosition":{"x":0.6873515,"y":0.4467397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.77928,"y":126.74574,"z":-93.01842},"screenPosition":{"x":0.6977215,"y":0.42646313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.1672,"y":125.37712,"z":-92.56019},"screenPosition":{"x":0.691814,"y":0.3841906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.75732,"y":125.13385,"z":-92.28181},"screenPosition":{"x":0.6935632,"y":0.36526963},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-237.46721,"y":119.18754,"z":-92.88425},"screenPosition":{"x":0.63225496,"y":0.33122122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.78528,"y":117.33338,"z":-93.51364},"screenPosition":{"x":0.6072975,"y":0.34589052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.00414,"y":115.68561,"z":-94.3294},"screenPosition":{"x":0.5816803,"y":0.3736368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.90686,"y":115.59563,"z":-94.76174},"screenPosition":{"x":0.5749729,"y":0.3975113},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-226.04076,"y":116.95154,"z":-95.51667},"screenPosition":{"x":0.5766966,"y":0.45675823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.2935,"y":118.890945,"z":-95.756645},"screenPosition":{"x":0.5906388,"y":0.49309766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.04065,"y":121.21319,"z":-95.638},"screenPosition":{"x":0.6126293,"y":0.5132235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.14867,"y":123.68075,"z":-95.22504},"screenPosition":{"x":0.6401571,"y":0.5180523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.31615,"y":125.37463,"z":-94.52427},"screenPosition":{"x":0.6650018,"y":0.4973191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.7978,"y":125.807076,"z":-93.96098},"screenPosition":{"x":0.6765936,"y":0.46986574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.78314,"y":126.15303,"z":-93.510345},"screenPosition":{"x":0.68582404,"y":0.44790757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.89122,"y":126.48976,"z":-93.03671},"screenPosition":{"x":0.695287,"y":0.42451656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.1058,"y":126.44714,"z":-92.60203},"screenPosition":{"x":0.70084906,"y":0.39896747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.19228,"y":126.29036,"z":-92.21098},"screenPosition":{"x":0.7043833,"y":0.3748228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.29692,"y":124.07654,"z":-91.9433},"screenPosition":{"x":0.68880045,"y":0.3334881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-238.65283,"y":120.9552,"z":-92.3675},"screenPosition":{"x":0.655167,"y":0.3218123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-237.92033,"y":118.287,"z":-92.936775},"screenPosition":{"x":0.62355906,"y":0.32379943},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-226.60524,"y":104.53075,"z":-97.37431},"screenPosition":{"x":0.4410012,"y":0.4197267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.87271,"y":103.99337,"z":-98.00426},"screenPosition":{"x":0.42763096,"y":0.44975936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.65276,"y":101.781784,"z":-98.398895},"screenPosition":{"x":0.40259862,"y":0.44684067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.7686,"y":98.80227,"z":-98.84841},"screenPosition":{"x":0.36999702,"y":0.438173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.49617,"y":96.073,"z":-98.93696},"screenPosition":{"x":0.34455073,"y":0.41160387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.45798,"y":96.221794,"z":-98.32295},"screenPosition":{"x":0.35426313,"y":0.3779413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.79332,"y":98.59713,"z":-97.67999},"screenPosition":{"x":0.38414317,"y":0.3684481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.78401,"y":101.197296,"z":-97.26941},"screenPosition":{"x":0.4128439,"y":0.37502718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.77856,"y":103.20474,"z":-97.35075},"screenPosition":{"x":0.42955866,"y":0.40294197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.99025,"y":111.37163,"z":-99.00322},"screenPosition":{"x":0.47949883,"y":0.5929591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.63672,"y":111.053345,"z":-99.52286},"screenPosition":{"x":0.46955428,"y":0.6191877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.3789,"y":110.10894,"z":-100.12273},"screenPosition":{"x":0.45298675,"y":0.64283085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.36658,"y":109.146095,"z":-100.67659},"screenPosition":{"x":0.43686742,"y":0.66358024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.2369,"y":108.31585,"z":-101.23281},"screenPosition":{"x":0.42189342,"y":0.6860043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.71008,"y":107.19274,"z":-101.71531},"screenPosition":{"x":0.405332,"y":0.7006423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.67075,"y":105.61301,"z":-102.372406},"screenPosition":{"x":0.38232747,"y":0.7202602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.89847,"y":104.50834,"z":-102.90092},"screenPosition":{"x":0.36528578,"y":0.73796344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.46199,"y":102.635735,"z":-103.48431},"screenPosition":{"x":0.34073025,"y":0.74971265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.44083,"y":98.998955,"z":-104.26476},"screenPosition":{"x":0.29786327,"y":0.75235677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.98428,"y":97.34893,"z":-104.41817},"screenPosition":{"x":0.28097528,"y":0.74232686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.89598,"y":93.54042,"z":-104.44188},"screenPosition":{"x":0.24683146,"y":0.6994955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.98051,"y":93.67999,"z":-103.80486},"screenPosition":{"x":0.2567763,"y":0.66440016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.08273,"y":97.03661,"z":-102.65401},"screenPosition":{"x":0.3023407,"y":0.63699245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.45242,"y":99.85586,"z":-102.13311},"screenPosition":{"x":0.3344644,"y":0.63971776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.59477,"y":102.767334,"z":-101.84223},"screenPosition":{"x":0.36433008,"y":0.6566402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.17986,"y":103.519066,"z":-102.403725},"screenPosition":{"x":0.36329672,"y":0.69782287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.53764,"y":102.2322,"z":-103.13455},"screenPosition":{"x":0.34188068,"y":0.725015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.07417,"y":99.742714,"z":-103.82119},"screenPosition":{"x":0.3103904,"y":0.7356993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.2838,"y":96.43344,"z":-104.104996},"screenPosition":{"x":0.27712542,"y":0.71365273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.16458,"y":94.73157,"z":-103.800705},"screenPosition":{"x":0.26617125,"y":0.67636395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.8986,"y":98.11586,"z":-102.71886},"screenPosition":{"x":0.31104687,"y":0.6532363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.49216,"y":100.42315,"z":-102.23454},"screenPosition":{"x":0.3381158,"y":0.65214735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.3601,"y":103.03253,"z":-101.84695},"screenPosition":{"x":0.36659274,"y":0.6600642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.9556,"y":105.04347,"z":-101.608604},"screenPosition":{"x":0.3876986,"y":0.66968906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.04742,"y":107.14089,"z":-101.257614},"screenPosition":{"x":0.41112068,"y":0.67379874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.03464,"y":109.32132,"z":-101.11364},"screenPosition":{"x":0.43245065,"y":0.6908039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.89914,"y":111.51097,"z":-100.992676},"screenPosition":{"x":0.45354813,"y":0.70924187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.11215,"y":112.88308,"z":-101.13125},"screenPosition":{"x":0.4638389,"y":0.73315173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.0851,"y":114.39702,"z":-101.295166},"screenPosition":{"x":0.47504023,"y":0.76016015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.8705,"y":114.439644,"z":-101.72986},"screenPosition":{"x":0.46948048,"y":0.785718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.6397,"y":114.11213,"z":-102.226494},"screenPosition":{"x":0.45978507,"y":0.81054187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.34949,"y":112.42746,"z":-102.95026},"screenPosition":{"x":0.43493038,"y":0.8326529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.07166,"y":109.574814,"z":-103.05945},"screenPosition":{"x":0.40811017,"y":0.8058956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.94853,"y":110.59648,"z":-102.32391},"screenPosition":{"x":0.42721605,"y":0.7750367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.35802,"y":111.852196,"z":-101.84377},"screenPosition":{"x":0.444901,"y":0.76191473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.33987,"y":111.77841,"z":-101.65975},"screenPosition":{"x":0.44677582,"y":0.7505874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.78026,"y":110.92748,"z":-101.5076},"screenPosition":{"x":0.44132966,"y":0.73214936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.28204,"y":109.00652,"z":-101.3136},"screenPosition":{"x":0.4269126,"y":0.6985525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.29675,"y":106.52974,"z":-101.70353},"screenPosition":{"x":0.3995996,"y":0.6924078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.33693,"y":103.95376,"z":-102.5028},"screenPosition":{"x":0.36584917,"y":0.70839506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.05212,"y":102.39247,"z":-103.20592},"screenPosition":{"x":0.34237435,"y":0.7308535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.20914,"y":104.957985,"z":-103.365685},"screenPosition":{"x":0.3629272,"y":0.76996905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.21063,"y":107.8049,"z":-102.9138},"screenPosition":{"x":0.39438346,"y":0.7769621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.66873,"y":110.17101,"z":-102.24784},"screenPosition":{"x":0.42449597,"y":0.766036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.67026,"y":110.8871,"z":-101.73527},"screenPosition":{"x":0.43785974,"y":0.7448031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.43173,"y":111.74501,"z":-101.24806},"screenPosition":{"x":0.45213637,"y":0.72667754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.67874,"y":112.44266,"z":-100.68948},"screenPosition":{"x":0.46596506,"y":0.7025789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.89874,"y":112.523415,"z":-100.234146},"screenPosition":{"x":0.47290492,"y":0.6772716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.9258,"y":111.009476,"z":-100.07021},"screenPosition":{"x":0.46170127,"y":0.65025437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.6769,"y":108.47736,"z":-100.32213},"screenPosition":{"x":0.4357731,"y":0.6353896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.70435,"y":105.95098,"z":-100.916725},"screenPosition":{"x":0.40521267,"y":0.64034265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.28754,"y":104.86825,"z":-101.171555},"screenPosition":{"x":0.39211535,"y":0.64246535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.4485,"y":102.5794,"z":-101.70186},"screenPosition":{"x":0.36454293,"y":0.64646906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.18724,"y":101.21526,"z":-102.56835},"screenPosition":{"x":0.3406056,"y":0.68054134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.80818,"y":103.127,"z":-102.73934},"screenPosition":{"x":0.3552846,"y":0.71243334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.92702,"y":105.84132,"z":-102.28511},"screenPosition":{"x":0.38553843,"y":0.7179392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.15584,"y":108.59601,"z":-101.60321},"screenPosition":{"x":0.41931933,"y":0.710604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.50204,"y":109.08727,"z":-100.85825},"screenPosition":{"x":0.43384632,"y":0.6732541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.88649,"y":107.29892,"z":-100.66661},"screenPosition":{"x":0.42060062,"y":0.6415691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.07274,"y":100.03505,"z":-96.997536},"screenPosition":{"x":0.4062432,"y":0.34592685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.25835,"y":101.80272,"z":-96.48081},"screenPosition":{"x":0.42899725,"y":0.33653086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.07571,"y":105.72888,"z":-96.09379},"screenPosition":{"x":0.46915108,"y":0.35978624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.83214,"y":107.581795,"z":-96.44646},"screenPosition":{"x":0.48078564,"y":0.40161526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.7314,"y":107.07209,"z":-97.1454},"screenPosition":{"x":0.46670747,"y":0.43598536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.55312,"y":105.13144,"z":-97.88744},"screenPosition":{"x":0.43933353,"y":0.4562336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.96883,"y":102.35481,"z":-98.84302},"screenPosition":{"x":0.40161863,"y":0.4790914},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-226.74213,"y":90.78046,"z":-99.52813},"screenPosition":{"x":0.28947386,"y":0.38425645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.90152,"y":89.90635,"z":-100.63172},"screenPosition":{"x":0.2667078,"y":0.43776485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.78464,"y":86.895676,"z":-101.33194},"screenPosition":{"x":0.23032616,"y":0.44313797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.49785,"y":87.76157,"z":-101.84978},"screenPosition":{"x":0.23093857,"y":0.483033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.6348,"y":90.54967,"z":-101.57955},"screenPosition":{"x":0.25938985,"y":0.4998141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.55136,"y":94.26945,"z":-101.00613},"screenPosition":{"x":0.30030093,"y":0.5099375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.97897,"y":95.59894,"z":-100.70999},"screenPosition":{"x":0.31614208,"y":0.50829804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.41353,"y":97.76789,"z":-99.88063},"screenPosition":{"x":0.3467255,"y":0.4856742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.83186,"y":99.56672,"z":-99.11322},"screenPosition":{"x":0.37317836,"y":0.46232536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.82072,"y":98.20158,"z":-98.33529},"screenPosition":{"x":0.37167525,"y":0.40162712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.1585,"y":95.006454,"z":-98.57543},"screenPosition":{"x":0.34008858,"y":0.37852553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.51094,"y":91.465385,"z":-99.26623},"screenPosition":{"x":0.29913524,"y":0.37711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.38864,"y":88.331345,"z":-99.98709},"screenPosition":{"x":0.25846562,"y":0.37450698},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-220.86565,"y":88.746346,"z":-101.022224},"screenPosition":{"x":0.25099275,"y":0.44676423},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-215.4762,"y":89.39889,"z":-101.99306},"screenPosition":{"x":0.24351999,"y":0.510292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.3863,"y":87.00511,"z":-102.590034},"screenPosition":{"x":0.21410486,"y":0.5169196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.69357,"y":84.9042,"z":-103.26073},"screenPosition":{"x":0.18656082,"y":0.53118575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.58014,"y":82.31326,"z":-103.69433},"screenPosition":{"x":0.1573498,"y":0.52611804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.84573,"y":79.941414,"z":-104.01763},"screenPosition":{"x":0.13198654,"y":0.5172291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.46678,"y":77.5915,"z":-104.067245},"screenPosition":{"x":0.1103241,"y":0.4928153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.01093,"y":76.551544,"z":-104.557655},"screenPosition":{"x":0.10681979,"y":0.45256293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.81992,"y":78.922226,"z":-102.789055},"screenPosition":{"x":0.14116937,"y":0.43374735},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-220.27602,"y":83.71552,"z":-101.93779},"screenPosition":{"x":0.19380672,"y":0.44115093},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-219.82977,"y":87.58635,"z":-101.41272},"screenPosition":{"x":0.23535533,"y":0.45580932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.95747,"y":90.84377,"z":-100.67121},"screenPosition":{"x":0.27441487,"y":0.45087397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.48775,"y":92.38661,"z":-99.92209},"screenPosition":{"x":0.2983529,"y":0.425602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.36115,"y":92.98855,"z":-99.453156},"screenPosition":{"x":0.31019172,"y":0.40565827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.37349,"y":93.95139,"z":-98.89928},"screenPosition":{"x":0.32622576,"y":0.38481066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.48695,"y":94.4115,"z":-98.40499},"screenPosition":{"x":0.33706647,"y":0.36166137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.96323,"y":94.720566,"z":-97.86234},"screenPosition":{"x":0.34545442,"y":0.33057338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.56024,"y":97.44759,"z":-97.111435},"screenPosition":{"x":0.37751687,"y":0.31438074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.3506,"y":100.756874,"z":-96.827644},"screenPosition":{"x":0.41496977,"y":0.34441167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.17227,"y":100.94705,"z":-97.63039},"screenPosition":{"x":0.4056886,"y":0.39285916},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-228.1354,"y":91.66603,"z":-99.10992},"screenPosition":{"x":0.30308643,"y":0.37047598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.23882,"y":91.98533,"z":-100.2347},"screenPosition":{"x":0.29051718,"y":0.43896323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.69571,"y":94.75374,"z":-100.90053},"screenPosition":{"x":0.30606923,"y":0.50947547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.84306,"y":98.801025,"z":-99.83046},"screenPosition":{"x":0.35656944,"y":0.4947629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.73074,"y":100.06945,"z":-99.05364},"screenPosition":{"x":0.3784486,"y":0.46471277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.65082,"y":102.07814,"z":-98.15294},"screenPosition":{"x":0.40859315,"y":0.4361348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.21202,"y":101.51434,"z":-97.73182},"screenPosition":{"x":0.40934002,"y":0.40528876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.31473,"y":99.59687,"z":-97.21814},"screenPosition":{"x":0.39933616,"y":0.35347426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.94504,"y":96.77762,"z":-97.73901},"screenPosition":{"x":0.367179,"y":0.35073534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.44374,"y":93.42448,"z":-98.570175},"screenPosition":{"x":0.32610798,"y":0.35984784},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-217.18776,"y":117.245415,"z":-97.23479},"screenPosition":{"x":0.55572087,"y":0.5591702},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-213.21858,"y":119.40041,"z":-97.684135},"screenPosition":{"x":0.56871396,"y":0.6100462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.57787,"y":120.96046,"z":-97.96305},"screenPosition":{"x":0.5788628,"y":0.64428705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.81099,"y":119.97917,"z":-98.470924},"screenPosition":{"x":0.5631902,"y":0.6621541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.77165,"y":118.39944,"z":-99.12804},"screenPosition":{"x":0.54020023,"y":0.6817115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.48495,"y":115.003685,"z":-99.52453},"screenPosition":{"x":0.50453943,"y":0.66501874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.02301,"y":113.23028,"z":-99.69857},"screenPosition":{"x":0.48643178,"y":0.6544827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.91112,"y":111.35543,"z":-99.61958},"screenPosition":{"x":0.4708987,"y":0.6282368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.21605,"y":110.56332,"z":-99.28577},"screenPosition":{"x":0.46845967,"y":0.59986377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.17244,"y":110.58874,"z":-98.692406},"screenPosition":{"x":0.47679427,"y":0.5659595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.20099,"y":111.92172,"z":-98.07661},"screenPosition":{"x":0.49704376,"y":0.5459345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.31248,"y":114.80901,"z":-97.397064},"screenPosition":{"x":0.53197306,"y":0.54027474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.19316,"y":117.36879,"z":-97.214134},"screenPosition":{"x":0.557079,"y":0.5594072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.42972,"y":118.93806,"z":-97.51606},"screenPosition":{"x":0.5670127,"y":0.5950522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.79097,"y":118.07092,"z":-97.98027},"screenPosition":{"x":0.55296856,"y":0.6117449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.35599,"y":119.045235,"z":-98.11176},"screenPosition":{"x":0.55969775,"y":0.63053966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.18459,"y":120.07488,"z":-98.38126},"screenPosition":{"x":0.56528354,"y":0.65811414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.56938,"y":119.40491,"z":-99.00886},"screenPosition":{"x":0.55068356,"y":0.68642396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.5679,"y":116.55799,"z":-99.46076},"screenPosition":{"x":0.5193012,"y":0.67951804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.34756,"y":115.35886,"z":-99.0969},"screenPosition":{"x":0.5136256,"y":0.6446291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.84543,"y":116.16144,"z":-98.471664},"screenPosition":{"x":0.52928936,"y":0.61790043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.21902,"y":116.25715,"z":-98.38201},"screenPosition":{"x":0.5313722,"y":0.61384994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.77328,"y":114.85388,"z":-98.494125},"screenPosition":{"x":0.517379,"y":0.60402656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.49005,"y":111.87785,"z":-98.623955},"screenPosition":{"x":0.48917723,"y":0.576974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.309,"y":114.389275,"z":-97.66367},"screenPosition":{"x":0.5246023,"y":0.55077034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.27809,"y":116.495926,"z":-97.33567},"screenPosition":{"x":0.54779196,"y":0.5563129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.38997,"y":118.370766,"z":-97.414635},"screenPosition":{"x":0.56336135,"y":0.5826226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.81798,"y":118.68781,"z":-97.87703},"screenPosition":{"x":0.55976105,"y":0.6128952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.44824,"y":117.99939,"z":-98.45862},"screenPosition":{"x":0.5457963,"y":0.638485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.86203,"y":115.51913,"z":-99.16826},"screenPosition":{"x":0.51402897,"y":0.6505463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.86401,"y":113.09194,"z":-99.35353},"screenPosition":{"x":0.48998225,"y":0.6331053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.54446,"y":112.09919,"z":-99.17602},"screenPosition":{"x":0.48356855,"y":0.61132514},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-215.57155,"y":108.45443,"z":-98.95139},"screenPosition":{"x":0.45429802,"y":0.5561153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.89114,"y":107.31636,"z":-99.06821},"screenPosition":{"x":0.44259948,"y":0.54964423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.00851,"y":105.05293,"z":-99.00515},"screenPosition":{"x":0.4233617,"y":0.5197437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.56238,"y":104.66211,"z":-98.35872},"screenPosition":{"x":0.4287229,"y":0.47795692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.94827,"y":107.85149,"z":-97.7759},"screenPosition":{"x":0.46501225,"y":0.48136988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.98064,"y":110.72258,"z":-97.712715},"screenPosition":{"x":0.49135157,"y":0.5110496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.80235,"y":108.78194,"z":-98.45476},"screenPosition":{"x":0.4639954,"y":0.53129435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.34427,"y":106.415825,"z":-99.12072},"screenPosition":{"x":0.43388492,"y":0.5422207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.98538,"y":103.84333,"z":-99.6003},"screenPosition":{"x":0.4044868,"y":0.5400096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.09389,"y":101.03679,"z":-99.82451},"screenPosition":{"x":0.37650046,"y":0.52036285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.10088,"y":99.74543,"z":-99.23059},"screenPosition":{"x":0.3731495,"y":0.47114566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.04256,"y":102.247635,"z":-98.24731},"screenPosition":{"x":0.40880764,"y":0.44351986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.02399,"y":105.31713,"z":-97.36545},"screenPosition":{"x":0.44811606,"y":0.42830238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.3018,"y":108.16978,"z":-97.25626},"screenPosition":{"x":0.47494012,"y":0.45511323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.14816,"y":110.285645,"z":-96.95127},"screenPosition":{"x":0.4978507,"y":0.4621224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.88298,"y":111.64505,"z":-97.38653},"screenPosition":{"x":0.50402075,"y":0.50295067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.338,"y":112.57899,"z":-97.745705},"screenPosition":{"x":0.5073995,"y":0.53448975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.57304,"y":111.30134,"z":-98.49952},"screenPosition":{"x":0.4857343,"y":0.5630986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.6113,"y":109.02171,"z":-99.052826},"screenPosition":{"x":0.45795342,"y":0.5685481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.01775,"y":106.714424,"z":-99.537125},"screenPosition":{"x":0.43084258,"y":0.5696776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.38286,"y":105.25458,"z":-100.493256},"screenPosition":{"x":0.40481573,"y":0.60785353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.84073,"y":120.90986,"z":-96.52332},"screenPosition":{"x":0.5980891,"y":0.56071746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.82605,"y":121.25581,"z":-96.07269},"screenPosition":{"x":0.60731953,"y":0.5387593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.89438,"y":121.02525,"z":-95.497635},"screenPosition":{"x":0.613102,"y":0.5029417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.23022,"y":118.126495,"z":-95.49185},"screenPosition":{"x":0.58746934,"y":0.46896374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.27194,"y":116.26661,"z":-95.778564},"screenPosition":{"x":0.5670324,"y":0.46390575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.29399,"y":113.61685,"z":-96.393814},"screenPosition":{"x":0.53505915,"y":0.46863303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.86292,"y":111.86763,"z":-96.95654},"screenPosition":{"x":0.5118734,"y":0.4807507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.44997,"y":110.192184,"z":-97.70329},"screenPosition":{"x":0.48678115,"y":0.5043505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.16516,"y":108.63089,"z":-98.406395},"screenPosition":{"x":0.46331704,"y":0.52675444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.68349,"y":108.19845,"z":-98.96968},"screenPosition":{"x":0.45176762,"y":0.5541933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.5229,"y":109.47485,"z":-99.19791},"screenPosition":{"x":0.45999458,"y":0.58216876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.0246,"y":111.815544,"z":-99.125305},"screenPosition":{"x":0.4817689,"y":0.6051428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.25922,"y":113.68117,"z":-99.18129},"screenPosition":{"x":0.49755114,"y":0.62999475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.00444,"y":116.29977,"z":-98.816696},"screenPosition":{"x":0.5258101,"y":0.639399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.69717,"y":118.40068,"z":-98.145996},"screenPosition":{"x":0.55363196,"y":0.6251238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.21664,"y":119.69677,"z":-97.43817},"screenPosition":{"x":0.5746653,"y":0.5992987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.52698,"y":119.02803,"z":-97.08372},"screenPosition":{"x":0.57372016,"y":0.57117766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.67676,"y":117.504875,"z":-96.89681},"screenPosition":{"x":0.56269896,"y":0.5427213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.54521,"y":114.840164,"z":-97.14639},"screenPosition":{"x":0.5356277,"y":0.52618736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.70079,"y":112.42794,"z":-97.69734},"screenPosition":{"x":0.5067253,"y":0.5299502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.45918,"y":111.853676,"z":-98.23527},"screenPosition":{"x":0.4942739,"y":0.55429035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.0011,"y":109.487564,"z":-98.90123},"screenPosition":{"x":0.464156,"y":0.56521183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.36433,"y":106.193245,"z":-99.550705},"screenPosition":{"x":0.42603222,"y":0.56442064},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-219.26677,"y":102.85406,"z":-99.10311},"screenPosition":{"x":0.40249664,"y":0.49987286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.93681,"y":100.6021,"z":-99.725426},"screenPosition":{"x":0.3739999,"y":0.5096099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.4822,"y":98.655716,"z":-100.12479},"screenPosition":{"x":0.35125262,"y":0.5100383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.63239,"y":96.12012,"z":-100.69641},"screenPosition":{"x":0.32092464,"y":0.5135585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.02455,"y":93.14633,"z":-101.48864},"screenPosition":{"x":0.2836908,"y":0.5247086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.1639,"y":92.494804,"z":-102.16224},"screenPosition":{"x":0.26869982,"y":0.5559713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.71657,"y":92.50627,"z":-102.84761},"screenPosition":{"x":0.25943536,"y":0.5956069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.10092,"y":94.97957,"z":-102.77735},"screenPosition":{"x":0.28235856,"y":0.6202597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.987,"y":97.66273,"z":-102.57378},"screenPosition":{"x":0.30896714,"y":0.6396647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.68901,"y":99.294304,"z":-102.37436},"screenPosition":{"x":0.3262607,"y":0.64699215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.53383,"y":100.694084,"z":-102.58194},"screenPosition":{"x":0.33577418,"y":0.6753143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.26479,"y":102.6462,"z":-102.52525},"screenPosition":{"x":0.35388577,"y":0.69469553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.56079,"y":103.4418,"z":-102.53938},"screenPosition":{"x":0.360795,"y":0.70461184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.94514,"y":105.91509,"z":-102.46913},"screenPosition":{"x":0.3837168,"y":0.7291331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.17976,"y":107.78072,"z":-102.525116},"screenPosition":{"x":0.3994806,"y":0.75427866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.38199,"y":108.90608,"z":-102.70498},"screenPosition":{"x":0.40701586,"y":0.777705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.95433,"y":109.70741,"z":-103.0618},"screenPosition":{"x":0.40925637,"y":0.80749935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.58998,"y":109.14237,"z":-103.622734},"screenPosition":{"x":0.3965721,"y":0.8333434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.25464,"y":106.76704,"z":-104.2657},"screenPosition":{"x":0.36669207,"y":0.8428367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.90111,"y":106.448746,"z":-104.78535},"screenPosition":{"x":0.3567642,"y":0.8690933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.15776,"y":105.66461,"z":-105.45659},"screenPosition":{"x":0.34062788,"y":0.8986814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.67912,"y":108.79517,"z":-105.05541},"screenPosition":{"x":0.37393376,"y":0.91165066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.60114,"y":110.50751,"z":-104.400665},"screenPosition":{"x":0.39806336,"y":0.8940231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.66946,"y":110.27695,"z":-103.8256},"screenPosition":{"x":0.40387487,"y":0.8582025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.17317,"y":108.05964,"z":-103.87756},"screenPosition":{"x":0.38347477,"y":0.83546615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.14468,"y":104.59583,"z":-104.432686},"screenPosition":{"x":0.34512964,"y":0.8272643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.84367,"y":102.66441,"z":-105.19775},"screenPosition":{"x":0.31752324,"y":0.8489454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.26088,"y":102.7347,"z":-105.701454},"screenPosition":{"x":0.31126377,"y":0.8787929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.81702,"y":103.1659,"z":-106.12022},"screenPosition":{"x":0.30758464,"y":0.9070174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.94318,"y":105.70724,"z":-105.89129},"screenPosition":{"x":0.3350658,"y":0.92423046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.91379,"y":108.529976,"z":-105.0507},"screenPosition":{"x":0.37161922,"y":0.9085401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.81078,"y":107.198235,"z":-104.68446},"screenPosition":{"x":0.36481297,"y":0.87187064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.44109,"y":104.37899,"z":-105.20536},"screenPosition":{"x":0.3326447,"y":0.869282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.76454,"y":102.64821,"z":-105.81412},"screenPosition":{"x":0.3090755,"y":0.883868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.0439,"y":100.64552,"z":-107.10805},"screenPosition":{"x":0.28536734,"y":0.8779823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.56949,"y":98.72838,"z":-107.10805},"screenPosition":{"x":0.26834297,"y":0.8557337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.22812,"y":86.5907,"z":-107.10805},"screenPosition":{"x":0.1605599,"y":0.7148754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.59882,"y":84.86818,"z":-107.10805},"screenPosition":{"x":0.13871904,"y":0.70030177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.01633,"y":83.08685,"z":-107.10805},"screenPosition":{"x":0.12390822,"y":0.67879564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.20374,"y":81.59468,"z":-107.10805},"screenPosition":{"x":0.116195016,"y":0.65689635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.76347,"y":80.62387,"z":-105.71984},"screenPosition":{"x":0.114667416,"y":0.6232553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.21814,"y":80.43942,"z":-105.25978},"screenPosition":{"x":0.11931664,"y":0.5945988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.3208,"y":80.65278,"z":-104.80679},"screenPosition":{"x":0.127651,"y":0.5709249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.79707,"y":80.96184,"z":-104.264145},"screenPosition":{"x":0.13782686,"y":0.54325783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.44661,"y":82.07573,"z":-103.75863},"screenPosition":{"x":0.15447716,"y":0.52706593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.73141,"y":83.63702,"z":-103.05551},"screenPosition":{"x":0.17783488,"y":0.504661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.97104,"y":86.63846,"z":-102.33229},"screenPosition":{"x":0.21437132,"y":0.49780938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.9853,"y":87.30495,"z":-102.02438},"screenPosition":{"x":0.22461401,"y":0.48781952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.86214,"y":90.45744,"z":-101.349525},"screenPosition":{"x":0.26171446,"y":0.48548585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.14343,"y":93.72982,"z":-100.9737},"screenPosition":{"x":0.29595608,"y":0.5018099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.26611,"y":95.851425,"z":-101.01138},"screenPosition":{"x":0.31423426,"y":0.5285943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.39806,"y":97.5037,"z":-101.520355},"screenPosition":{"x":0.32198423,"y":0.5770844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.99052,"y":95.95163,"z":-102.246475},"screenPosition":{"x":0.2982454,"y":0.6009431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.58838,"y":94.52294,"z":-102.95195},"screenPosition":{"x":0.27602467,"y":0.6249448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.42828,"y":90.52525,"z":-103.817345},"screenPosition":{"x":0.22869055,"y":0.62845254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.59814,"y":88.77952,"z":-104.06041},"screenPosition":{"x":0.20981902,"y":0.62223375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.57312,"y":85.73545,"z":-104.34893},"screenPosition":{"x":0.17879325,"y":0.6035613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.34583,"y":83.696846,"z":-104.51827},"screenPosition":{"x":0.15837614,"y":0.5896635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.97768,"y":81.59369,"z":-104.526596},"screenPosition":{"x":0.13958625,"y":0.56573594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.13826,"y":80.31728,"z":-104.29837},"screenPosition":{"x":0.13163958,"y":0.537756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.80598,"y":79.37412,"z":-103.9162},"screenPosition":{"x":0.12852694,"y":0.5048173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.53313,"y":79.788124,"z":-103.30689},"screenPosition":{"x":0.14022112,"y":0.47448334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.54546,"y":80.75097,"z":-102.75302},"screenPosition":{"x":0.15634045,"y":0.4537339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.22008,"y":82.7781,"z":-101.8983},"screenPosition":{"x":0.18602201,"y":0.4279961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.46162,"y":85.483185,"z":-101.42104},"screenPosition":{"x":0.21656545,"y":0.43188176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.69238,"y":87.94152,"z":-100.98509},"screenPosition":{"x":0.24435334,"y":0.43528396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.54953,"y":90.304146,"z":-100.63879},"screenPosition":{"x":0.27016962,"y":0.44280162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.07089,"y":93.43471,"z":-100.23761},"screenPosition":{"x":0.30340016,"y":0.455983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.86165,"y":95.73154,"z":-100.71235},"screenPosition":{"x":0.3172788,"y":0.50997084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.16151,"y":95.934425,"z":-101.218414},"screenPosition":{"x":0.3121421,"y":0.5414897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.21637,"y":93.0125,"z":-102.46834},"screenPosition":{"x":0.26911542,"y":0.57962114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.02347,"y":89.28698,"z":-102.69908},"screenPosition":{"x":0.23287776,"y":0.54968584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.06479,"y":88.43953,"z":-102.22724},"screenPosition":{"x":0.23180044,"y":0.51265645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.086,"y":89.94549,"z":-101.38611},"screenPosition":{"x":0.2567546,"y":0.4816765},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-221.31784,"y":96.263176,"z":-99.73971},"screenPosition":{"x":0.33526927,"y":0.46007815},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-214.5852,"y":99.98746,"z":-100.49103},"screenPosition":{"x":0.3580735,"y":0.54660183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.78247,"y":97.84617,"z":-101.3894},"screenPosition":{"x":0.326829,"y":0.5735034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.31898,"y":95.356674,"z":-102.076035},"screenPosition":{"x":0.2952914,"y":0.58421504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.6189,"y":93.42874,"z":-102.521416},"screenPosition":{"x":0.27208865,"y":0.5875094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.57222,"y":92.02199,"z":-102.95321},"screenPosition":{"x":0.25378028,"y":0.59603256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.40475,"y":90.328094,"z":-103.65398},"screenPosition":{"x":0.2290734,"y":0.6168045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.72627,"y":88.89368,"z":-104.01676},"screenPosition":{"x":0.21137784,"y":0.62106764},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-202.23965,"y":85.19459,"z":-105.29856},"screenPosition":{"x":0.16101272,"y":0.65201783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.04666,"y":85.73072,"z":-105.65067},"screenPosition":{"x":0.1610584,"y":0.67847455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.05742,"y":88.10831,"z":-105.67006},"screenPosition":{"x":0.18180977,"y":0.70724344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.18356,"y":90.64964,"z":-105.44113},"screenPosition":{"x":0.20763479,"y":0.7234152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.83305,"y":93.894356,"z":-104.9963},"screenPosition":{"x":0.24239771,"y":0.73555785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.23134,"y":95.91575,"z":-103.7989},"screenPosition":{"x":0.2767115,"y":0.69000226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.98398,"y":94.099724,"z":-103.538246},"screenPosition":{"x":0.26414707,"y":0.65390456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.44989,"y":91.01877,"z":-103.73476},"screenPosition":{"x":0.23417656,"y":0.6294321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.92506,"y":87.468475,"z":-104.40255},"screenPosition":{"x":0.19344983,"y":0.6267636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.76834,"y":88.15217,"z":-105.1227},"screenPosition":{"x":0.18967946,"y":0.6762048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.07124,"y":91.91806,"z":-104.66429},"screenPosition":{"x":0.22938536,"y":0.6934871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.45009,"y":101.16466,"z":-101.12859},"screenPosition":{"x":0.3598142,"y":0.59701014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.08879,"y":104.16262,"z":-100.72508},"screenPosition":{"x":0.39195088,"y":0.6085434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.99345,"y":103.77629,"z":-101.40338},"screenPosition":{"x":0.3792744,"y":0.64307016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.12936,"y":100.574196,"z":-102.2829},"screenPosition":{"x":0.3388184,"y":0.6566477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.02135,"y":98.106636,"z":-102.695854},"screenPosition":{"x":0.31126708,"y":0.65181935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.12212,"y":96.48552,"z":-101.93621},"screenPosition":{"x":0.30722642,"y":0.58925647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.6578,"y":98.15174,"z":-101.166435},"screenPosition":{"x":0.3325422,"y":0.5642262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.70255,"y":99.85485,"z":-100.48868},"screenPosition":{"x":0.3569292,"y":0.5449269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.87735,"y":101.37577,"z":-100.013245},"screenPosition":{"x":0.37693137,"y":0.5351746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.17293,"y":105.314644,"z":-99.329544},"screenPosition":{"x":0.42125252,"y":0.5414778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.79929,"y":107.34976,"z":-99.4799},"screenPosition":{"x":0.4372648,"y":0.5737502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.24889,"y":108.16032,"z":-99.85972},"screenPosition":{"x":0.43927702,"y":0.60505855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.04163,"y":108.02996,"z":-100.51973},"screenPosition":{"x":0.42909423,"y":0.6415471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.86339,"y":103.95849,"z":-101.20107},"screenPosition":{"x":0.38363326,"y":0.633609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.32152,"y":104.19378,"z":-100.47441},"screenPosition":{"x":0.39565328,"y":0.5944569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.25433,"y":106.15287,"z":-99.77837},"screenPosition":{"x":0.42256066,"y":0.5770653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.90384,"y":109.39758,"z":-99.33357},"screenPosition":{"x":0.45744637,"y":0.5890792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.51205,"y":111.35892,"z":-99.299904},"screenPosition":{"x":0.47533152,"y":0.6099112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.98674,"y":113.082726,"z":-99.33053},"screenPosition":{"x":0.49022052,"y":0.63168067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.19975,"y":114.454834,"z":-99.4691},"screenPosition":{"x":0.5005105,"y":0.6555893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.51044,"y":114.90448,"z":-99.93386},"screenPosition":{"x":0.4981527,"y":0.68759614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.87709,"y":114.16073,"z":-100.377426},"screenPosition":{"x":0.4854863,"y":0.7045306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.64629,"y":113.83321,"z":-100.87406},"screenPosition":{"x":0.47579092,"y":0.7293544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.4857,"y":115.10962,"z":-101.10227},"screenPosition":{"x":0.4840056,"y":0.75731784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.85732,"y":117.63251,"z":-100.82732},"screenPosition":{"x":0.51849985,"y":0.7750303},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-205.37447,"y":120.2374,"z":-99.11499},"screenPosition":{"x":0.5619072,"y":0.7051612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.18306,"y":119.358795,"z":-98.893845},"screenPosition":{"x":0.55191976,"y":0.67934704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.83304,"y":117.329414,"z":-99.086205},"screenPosition":{"x":0.5312702,"y":0.6668821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.7123,"y":114.91146,"z":-99.2945},"screenPosition":{"x":0.5069467,"y":0.65081877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.7324,"y":112.55806,"z":-99.66379},"screenPosition":{"x":0.48100707,"y":0.6448002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.75444,"y":109.908295,"z":-100.27904},"screenPosition":{"x":0.44905522,"y":0.64946413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.18443,"y":107.798164,"z":-100.92671},"screenPosition":{"x":0.42147946,"y":0.6623539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.4843,"y":108.00105,"z":-101.43277},"screenPosition":{"x":0.41636276,"y":0.6937538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.70122,"y":106.64963,"z":-102.00256},"screenPosition":{"x":0.3965776,"y":0.71103454},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-198.19447,"y":105.30394,"z":-102.91505},"screenPosition":{"x":0.37215766,"y":0.7480109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.36081,"y":105.269295,"z":-103.485405},"screenPosition":{"x":0.36412415,"y":0.78012073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.30527,"y":103.31943,"z":-104.20447},"screenPosition":{"x":0.336914,"y":0.79929775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.57472,"y":100.35487,"z":-105.01969},"screenPosition":{"x":0.29944772,"y":0.81188065},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-192.19621,"y":94.861694,"z":-105.76717},"screenPosition":{"x":0.24045303,"y":0.79121387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.46872,"y":93.32931,"z":-105.55724},"screenPosition":{"x":0.23001249,"y":0.76094407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.43983,"y":90.87795,"z":-105.35383},"screenPosition":{"x":0.21072596,"y":0.72115886},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-202.9481,"y":92.93973,"z":-103.92875},"screenPosition":{"x":0.24862194,"y":0.66285455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.50534,"y":97.230286,"z":-103.13707},"screenPosition":{"x":0.29742905,"y":0.66711247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.4115,"y":99.690865,"z":-103.36349},"screenPosition":{"x":0.31618494,"y":0.70871735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.90475,"y":98.34518,"z":-104.275986},"screenPosition":{"x":0.2918572,"y":0.7455246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.06227,"y":95.6366,"z":-105.07293},"screenPosition":{"x":0.2568218,"y":0.76019293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.45059,"y":93.25553,"z":-105.37322},"screenPosition":{"x":0.231574,"y":0.7498684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.1909,"y":90.47666,"z":-105.66645},"screenPosition":{"x":0.20289028,"y":0.73452014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.43834,"y":88.03104,"z":-105.805725},"screenPosition":{"x":0.17951046,"y":0.7139695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.94012,"y":86.11008,"z":-105.61173},"screenPosition":{"x":0.16486259,"y":0.680692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.1852,"y":87.10407,"z":-104.80718},"screenPosition":{"x":0.18468428,"y":0.6458561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.72821,"y":88.59732,"z":-104.262726},"screenPosition":{"x":0.20560904,"y":0.6316882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.2619,"y":92.69072,"z":-103.30767},"screenPosition":{"x":0.25478613,"y":0.6242634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.74779,"y":93.648834,"z":-104.05554},"screenPosition":{"x":0.25307393,"y":0.67848665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.39816,"y":90.60702,"z":-105.00643},"screenPosition":{"x":0.21306758,"y":0.69799197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.06415,"y":81.436905,"z":-104.135544},"screenPosition":{"x":0.14353809,"y":0.54137796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.58752,"y":80.00946,"z":-103.85896},"screenPosition":{"x":0.13464206,"y":0.50887114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.31511,"y":77.28019,"z":-103.947525},"screenPosition":{"x":0.10932422,"y":0.48231956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.39099,"y":74.51437,"z":-105.20373},"screenPosition":{"x":0.07934598,"y":0.4649712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.21834,"y":71.91612,"z":-105.017044},"screenPosition":{"x":0.04916542,"y":0.48021388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.49496,"y":70.87243,"z":-106.358734},"screenPosition":{"x":0.03181126,"y":0.4905406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.21858,"y":69.009346,"z":-107.10805},"screenPosition":{"x":0.0044367467,"y":0.51084304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.36305,"y":69.35024,"z":-107.139},"screenPosition":{"x":0.0014675795,"y":0.5436267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.28601,"y":71.27278,"z":-106.139},"screenPosition":{"x":0.01943996,"y":0.570246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.93582,"y":73.65933,"z":-106.139},"screenPosition":{"x":0.041892137,"y":0.5918305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.19244,"y":76.18574,"z":-107.139},"screenPosition":{"x":0.06737278,"y":0.5976931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.11707,"y":77.93358,"z":-107.10805},"screenPosition":{"x":0.07746213,"y":0.61955833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.58604,"y":79.85756,"z":-107.10805},"screenPosition":{"x":0.09489854,"y":0.6415955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.39017,"y":81.36038,"z":-107.10805},"screenPosition":{"x":0.11411445,"y":0.6541773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.62068,"y":81.720406,"z":-106.139},"screenPosition":{"x":0.11370318,"y":0.68427163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.02196,"y":82.91294,"z":-106.139},"screenPosition":{"x":0.12280212,"y":0.7053453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.75668,"y":84.763084,"z":-106.139},"screenPosition":{"x":0.1397064,"y":0.7245118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.82013,"y":85.95305,"z":-106.139},"screenPosition":{"x":0.15029708,"y":0.73820585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.59982,"y":89.893585,"z":-107.10805},"screenPosition":{"x":0.18554468,"y":0.75680125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.29222,"y":91.536804,"z":-107.10805},"screenPosition":{"x":0.20448153,"y":0.7722752},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-189.06996,"y":96.58201,"z":-106.11748},"screenPosition":{"x":0.24953063,"y":0.83114845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.4107,"y":99.08072,"z":-105.45384},"screenPosition":{"x":0.2822001,"y":0.82211685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.64691,"y":99.53161,"z":-104.936554},"screenPosition":{"x":0.29345417,"y":0.7971204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.72256,"y":99.12807,"z":-104.5868},"screenPosition":{"x":0.29446957,"y":0.7726933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.28915,"y":98.687645,"z":-104.145035},"screenPosition":{"x":0.2965957,"y":0.74212044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.26518,"y":101.63376,"z":-103.2838},"screenPosition":{"x":0.3345674,"y":0.7265669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.17287,"y":104.810425,"z":-102.997635},"screenPosition":{"x":0.36669526,"y":0.74680835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.41289,"y":106.79943,"z":-103.032974},"screenPosition":{"x":0.38382623,"y":0.77216244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.73438,"y":107.495834,"z":-103.45644},"screenPosition":{"x":0.3842243,"y":0.80464023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.21489,"y":106.199745,"z":-104.16427},"screenPosition":{"x":0.3631116,"y":0.82997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.48781,"y":103.65492,"z":-104.71288},"screenPosition":{"x":0.33294517,"y":0.83249444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.60365,"y":100.67541,"z":-105.16242},"screenPosition":{"x":0.30034357,"y":0.82382673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.3995,"y":99.846405,"z":-104.736595},"screenPosition":{"x":0.29884362,"y":0.78956443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.39911,"y":100.85885,"z":-103.97805},"screenPosition":{"x":0.31815812,"y":0.7576928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.84639,"y":102.9782,"z":-103.353355},"screenPosition":{"x":0.34551507,"y":0.74628323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.57155,"y":105.81938,"z":-102.558784},"screenPosition":{"x":0.3816191,"y":0.7333542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.49197,"y":108.94646,"z":-102.47731},"screenPosition":{"x":0.4104858,"y":0.7650513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.3584,"y":110.83975,"z":-102.6023},"screenPosition":{"x":0.42559028,"y":0.79422665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.26846,"y":110.5768,"z":-103.25996},"screenPosition":{"x":0.41426766,"y":0.8290802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.9223,"y":107.954704,"z":-103.944214},"screenPosition":{"x":0.38164657,"y":0.83794373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.68228,"y":105.9657,"z":-103.90888},"screenPosition":{"x":0.36445242,"y":0.8129714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.83748,"y":104.56592,"z":-103.7013},"screenPosition":{"x":0.3549113,"y":0.78452766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.9784,"y":102.49965,"z":-103.801636},"screenPosition":{"x":0.3351393,"y":0.7665669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.7407,"y":99.20185,"z":-104.77082},"screenPosition":{"x":0.29281515,"y":0.7837111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.81325,"y":99.49696,"z":-105.50692},"screenPosition":{"x":0.28530467,"y":0.8296857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.83287,"y":102.417656,"z":-105.239044},"screenPosition":{"x":0.31477457,"y":0.84843904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.04549,"y":104.80221,"z":-104.619064},"screenPosition":{"x":0.34441525,"y":0.8404015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.93509,"y":105.77428,"z":-104.08819},"screenPosition":{"x":0.3603754,"y":0.82066983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.71817,"y":107.1257,"z":-103.51839},"screenPosition":{"x":0.38008985,"y":0.80392635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.08246,"y":109.82157,"z":-103.01815},"screenPosition":{"x":0.41086587,"y":0.8063595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.47763,"y":112.54162,"z":-102.90661},"screenPosition":{"x":0.43654445,"y":0.8315154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.01756,"y":112.602684,"z":-103.38731},"screenPosition":{"x":0.43051746,"y":0.8599301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.54669,"y":112.417,"z":-103.9093},"screenPosition":{"x":0.4217349,"y":0.8878613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.6733,"y":111.81506,"z":-104.37822},"screenPosition":{"x":0.40998137,"y":0.9079032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.01834,"y":110.5778,"z":-104.90437},"screenPosition":{"x":0.3918039,"y":0.9238707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.6432,"y":109.766,"z":-105.5066},"screenPosition":{"x":0.37636495,"y":0.94916034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.39427,"y":109.36471,"z":-105.819214},"screenPosition":{"x":0.36852926,"y":0.96252155},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-043703/brain-C78480-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.9802167337239984,-0.07365440886193157,0.18371222872377155,0.0,-0.04313513093415343,0.9853660340892776,0.1649034242896796,0.0,-0.1931696544666097,0.1537166448969274,-0.969049368027699,0.0,-239.84396930097915,122.02269475842041,-211.43323259511902,1.0]},"baseImage":"20190824-043703/base.webp","version":0,"savedAt":1.566621818899E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-054225-v0.json-bad b/data/mapping/BAAAHS/dwayman/20190824-054225-v0.json-bad new file mode 100644 index 0000000000..dc1736a354 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-054225-v0.json-bad @@ -0,0 +1 @@ +{"startedAt":1.566625345616E12,"surfaces":[{"brainId":"CAFBE4","panelName":"18D","pixels":[{"modelPosition":{"x":-131.23143,"y":94.15223,"z":-106.02054},"screenPosition":{"x":0.987357,"y":0.3412875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.37407,"y":90.637184,"z":-105.666985},"screenPosition":{"x":0.95486015,"y":0.36308715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.57397,"y":87.93912,"z":-104.61316},"screenPosition":{"x":0.92227244,"y":0.38494772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.70853,"y":85.38797,"z":-103.61673},"screenPosition":{"x":0.89517736,"y":0.41155156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.56758,"y":83.456345,"z":-102.862274},"screenPosition":{"x":0.8681289,"y":0.42126846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.37936,"y":81.87711,"z":-101.17994},"screenPosition":{"x":0.8411828,"y":0.4393445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.26306,"y":80.532074,"z":-100.69695},"screenPosition":{"x":0.8242533,"y":0.4507012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.12962,"y":78.71983,"z":-99.99811},"screenPosition":{"x":0.8023654,"y":0.4653841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.89407,"y":76.58561,"z":-99.13712},"screenPosition":{"x":0.7773393,"y":0.48217222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.00253,"y":73.48403,"z":-98.96726},"screenPosition":{"x":0.7482637,"y":0.5029958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.6982,"y":72.61992,"z":-97.74254},"screenPosition":{"x":0.7224804,"y":0.5043559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.7347,"y":70.517204,"z":-96.936295},"screenPosition":{"x":0.6960808,"y":0.5205875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.8052,"y":68.521805,"z":-96.18409},"screenPosition":{"x":0.6701687,"y":0.53529984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.0256,"y":66.32457,"z":-95.21363},"screenPosition":{"x":0.65265983,"y":0.5658101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.9262,"y":64.61965,"z":-94.56883},"screenPosition":{"x":0.6317737,"y":0.57982093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.72467,"y":62.592754,"z":-93.761894},"screenPosition":{"x":0.6078009,"y":0.59590244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.54324,"y":60.477222,"z":-93.06581},"screenPosition":{"x":0.57141846,"y":0.5992052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.15489,"y":59.100685,"z":-92.52808},"screenPosition":{"x":0.5547976,"y":0.61036247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.3104,"y":56.960056,"z":-91.72218},"screenPosition":{"x":0.52692974,"y":0.6260897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.02391,"y":55.078392,"z":-90.96895},"screenPosition":{"x":0.5054225,"y":0.64231515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.1794,"y":52.937763,"z":-90.16304},"screenPosition":{"x":0.4775546,"y":0.6580424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.57289,"y":50.721313,"z":-89.35783},"screenPosition":{"x":0.44675013,"y":0.6727609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.6297,"y":49.357063,"z":-89.040085},"screenPosition":{"x":0.41592786,"y":0.6722934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.04692,"y":48.977444,"z":-89.37369},"screenPosition":{"x":0.37913564,"y":0.6494704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.37671,"y":50.9531,"z":-90.62129},"screenPosition":{"x":0.37133226,"y":0.6080619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.61273,"y":54.741524,"z":-92.23758},"screenPosition":{"x":0.4079802,"y":0.5700508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.8248,"y":55.866024,"z":-92.3374},"screenPosition":{"x":0.4441941,"y":0.57911694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.6451,"y":54.515625,"z":-91.24919},"screenPosition":{"x":0.4651786,"y":0.6200418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.59027,"y":52.01563,"z":-89.95133},"screenPosition":{"x":0.45651698,"y":0.6575626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.55869,"y":49.698257,"z":-89.03698},"screenPosition":{"x":0.4291425,"y":0.6768326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.3202,"y":48.119877,"z":-88.28099},"screenPosition":{"x":0.4193816,"y":0.6970929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.47571,"y":45.979248,"z":-87.47508},"screenPosition":{"x":0.39143863,"y":0.7126955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.60794,"y":43.65599,"z":-86.28567},"screenPosition":{"x":0.38266042,"y":0.74693185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.64444,"y":41.553272,"z":-85.479416},"screenPosition":{"x":0.35711685,"y":0.7640671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.78938,"y":40.315044,"z":-85.38063},"screenPosition":{"x":0.3152397,"y":0.75239956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.98573,"y":40.478455,"z":-85.92939},"screenPosition":{"x":0.28487518,"y":0.7251029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.95828,"y":41.740746,"z":-86.79831},"screenPosition":{"x":0.2750549,"y":0.69474316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.13211,"y":44.20283,"z":-88.09651},"screenPosition":{"x":0.28234884,"y":0.6567689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.1637,"y":46.5202,"z":-89.01086},"screenPosition":{"x":0.30972332,"y":0.6374989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.85516,"y":48.591415,"z":-89.76237},"screenPosition":{"x":0.33857206,"y":0.6237953},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-156.48253,"y":48.17596,"z":-88.7757},"screenPosition":{"x":0.38852963,"y":0.67131543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.9348,"y":46.187492,"z":-87.63827},"screenPosition":{"x":0.3885712,"y":0.70674944},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-156.70172,"y":41.843224,"z":-85.91698},"screenPosition":{"x":0.33773372,"y":0.7432597},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-160.47522,"y":38.86857,"z":-85.11866},"screenPosition":{"x":0.2775634,"y":0.74789107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.27052,"y":36.570415,"z":-84.03906},"screenPosition":{"x":0.26195866,"y":0.7759981},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.31487,"y":34.94824,"z":-83.00835},"screenPosition":{"x":0.27534595,"y":0.81892085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.38222,"y":32.681587,"z":-81.98349},"screenPosition":{"x":0.25158098,"y":0.83486295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.94907,"y":31.273024,"z":-81.721176},"screenPosition":{"x":0.21455151,"y":0.83250576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.86996,"y":30.306572,"z":-81.56489},"screenPosition":{"x":0.18812817,"y":0.82848936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.11383,"y":29.119064,"z":-81.35559},"screenPosition":{"x":0.15698837,"y":0.8240482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.57222,"y":26.84601,"z":-80.38582},"screenPosition":{"x":0.13482375,"y":0.84728575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.06488,"y":25.507381,"z":-79.84774},"screenPosition":{"x":0.11967118,"y":0.8589474},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-163.66725,"y":24.14417,"z":-78.86969},"screenPosition":{"x":0.13292144,"y":0.8938586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.13762,"y":25.931318,"z":-79.45871},"screenPosition":{"x":0.16791363,"y":0.89098895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.92041,"y":28.39981,"z":-80.701836},"screenPosition":{"x":0.17298749,"y":0.85027504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.72304,"y":29.95257,"z":-81.67816},"screenPosition":{"x":0.16707869,"y":0.8178856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.95032,"y":24.927477,"z":-78.97262},"screenPosition":{"x":0.15825514,"y":0.8974681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.87979,"y":26.92287,"z":-79.72482},"screenPosition":{"x":0.18284173,"y":0.8809748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.92827,"y":28.880354,"z":-80.47736},"screenPosition":{"x":0.20658538,"y":0.86504704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.89496,"y":31.25433,"z":-81.55627},"screenPosition":{"x":0.23127756,"y":0.84848297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.83371,"y":33.236393,"z":-82.748795},"screenPosition":{"x":0.2208765,"y":0.802632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.11234,"y":34.637512,"z":-83.726494},"screenPosition":{"x":0.20909454,"y":0.76822513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.37383,"y":35.57142,"z":-84.48835},"screenPosition":{"x":0.1939402,"y":0.7392756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.36304,"y":35.646717,"z":-84.81781},"screenPosition":{"x":0.17487383,"y":0.7225603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.94725,"y":35.532467,"z":-85.149},"screenPosition":{"x":0.14835364,"y":0.70350766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.61644,"y":35.27298,"z":-85.42648},"screenPosition":{"x":0.11995675,"y":0.6853201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.80939,"y":34.338036,"z":-85.324936},"screenPosition":{"x":0.091202594,"y":0.6786792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.64508,"y":32.689716,"z":-84.8447},"screenPosition":{"x":0.060488764,"y":0.6832109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.9536,"y":30.618504,"z":-84.09319},"screenPosition":{"x":0.031498536,"y":0.697019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.70166,"y":28.221703,"z":-84.21915},"screenPosition":{"x":0.007127538,"y":0.7130346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.8672,"y":25.914806,"z":-82.8938},"screenPosition":{"x":0.00788511,"y":0.7545846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.3677,"y":24.943052,"z":-81.11845},"screenPosition":{"x":0.008168985,"y":0.781751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.73256,"y":25.309864,"z":-80.89501},"screenPosition":{"x":0.042303488,"y":0.8003252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.72668,"y":26.42155,"z":-81.104996},"screenPosition":{"x":0.07068256,"y":0.8033268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.95906,"y":28.28452,"z":-81.69333},"screenPosition":{"x":0.1024738,"y":0.7956939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.92575,"y":30.658495,"z":-82.77223},"screenPosition":{"x":0.121051595,"y":0.7683065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.2695,"y":32.83011,"z":-83.96303},"screenPosition":{"x":0.12441506,"y":0.7323912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.09196,"y":33.46714,"z":-84.67256},"screenPosition":{"x":0.10138608,"y":0.7025543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.79494,"y":32.487877,"z":-84.62644},"screenPosition":{"x":0.06733175,"y":0.6923126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.29053,"y":30.593405,"z":-83.983376},"screenPosition":{"x":0.03778579,"y":0.70263416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.10443,"y":28.728199,"z":-84.51014},"screenPosition":{"x":0.005043196,"y":0.70409983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.05106,"y":27.40354,"z":-83.7491},"screenPosition":{"x":0.007605813,"y":0.7278564},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-174.59235,"y":21.79653,"z":-80.52778},"screenPosition":{"x":0.0072643226,"y":0.8283571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.57587,"y":23.314991,"z":-79.81265},"screenPosition":{"x":0.03850399,"y":0.8326294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.47131,"y":25.203058,"z":-80.51081},"screenPosition":{"x":0.06404024,"y":0.8192768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.82904,"y":27.57063,"z":-81.6448},"screenPosition":{"x":0.07849367,"y":0.7891434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.60056,"y":28.46022,"z":-82.46208},"screenPosition":{"x":0.05790788,"y":0.75677234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.1336,"y":27.771431,"z":-82.52337},"screenPosition":{"x":0.02756118,"y":0.7446616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.76065,"y":25.780815,"z":-82.81682},"screenPosition":{"x":-4.0548685E-4,"y":0.7570284},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-173.45932,"y":21.142857,"z":-78.95201},"screenPosition":{"x":0.008866494,"y":0.84850115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.82784,"y":23.435127,"z":-79.75654},"screenPosition":{"x":0.046749935,"y":0.83727235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.1175,"y":25.588047,"z":-80.78243},"screenPosition":{"x":0.06081821,"y":0.8093972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.99088,"y":25.972513,"z":-81.38421},"screenPosition":{"x":0.03494421,"y":0.78261745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.26308,"y":23.897552,"z":-81.73485},"screenPosition":{"x":0.008263561,"y":0.79080164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.79968,"y":22.05727,"z":-80.67758},"screenPosition":{"x":0.008608811,"y":0.82384145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.47353,"y":22.165913,"z":-79.27286},"screenPosition":{"x":0.030616526,"y":0.8469104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.11336,"y":22.008387,"z":-78.99917},"screenPosition":{"x":0.042862196,"y":0.85955006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.8751,"y":21.257107,"z":-78.62083},"screenPosition":{"x":0.03990813,"y":0.8695251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.84059,"y":19.49558,"z":-77.81147},"screenPosition":{"x":0.026265088,"y":0.8909553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.60776,"y":16.78576,"z":-77.64901},"screenPosition":{"x":0.010509537,"y":0.918474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.37442,"y":16.26352,"z":-75.970024},"screenPosition":{"x":0.025842955,"y":0.9481566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.53555,"y":17.64058,"z":-76.1776},"screenPosition":{"x":0.06962925,"y":0.9569204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.4141,"y":19.888533,"z":-77.03755},"screenPosition":{"x":0.097036704,"y":0.9385348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.82274,"y":22.003542,"z":-78.06379},"screenPosition":{"x":0.105053574,"y":0.90958583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.86337,"y":23.480482,"z":-79.0408},"screenPosition":{"x":0.096208185,"y":0.8761877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.29503,"y":24.951017,"z":-80.0729},"screenPosition":{"x":0.08344538,"y":0.83975726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.96422,"y":24.69153,"z":-80.35039},"screenPosition":{"x":0.055502545,"y":0.8209691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.71446,"y":21.534248,"z":-79.16856},"screenPosition":{"x":0.008798549,"y":0.841999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.38785,"y":19.829847,"z":-78.1936},"screenPosition":{"x":0.009113297,"y":0.87211984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.41235,"y":19.123404,"z":-77.42969},"screenPosition":{"x":0.037535857,"y":0.90663344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.79459,"y":20.784529,"z":-77.79975},"screenPosition":{"x":0.076187044,"y":0.90810347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.40402,"y":22.445135,"z":-78.49997},"screenPosition":{"x":0.092801966,"y":0.8918842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.43086,"y":29.577793,"z":-82.947136},"screenPosition":{"x":0.06816811,"y":0.74511683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.52194,"y":29.14797,"z":-83.0611},"screenPosition":{"x":0.04418204,"y":0.73350435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.56502,"y":28.414865,"z":-83.17781},"screenPosition":{"x":0.010946992,"y":0.71608144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.07663,"y":29.950785,"z":-85.21253},"screenPosition":{"x":0.008751227,"y":0.68210596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.24643,"y":33.04268,"z":-85.39175},"screenPosition":{"x":0.037244897,"y":0.6585953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.86984,"y":34.899242,"z":-86.03516},"screenPosition":{"x":0.06522919,"y":0.6478669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.93497,"y":35.66974,"z":-86.24825},"screenPosition":{"x":0.08028315,"y":0.64639246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.98344,"y":37.62722,"z":-87.00079},"screenPosition":{"x":0.104726985,"y":0.63117576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.86517,"y":40.146435,"z":-88.13341},"screenPosition":{"x":0.12524152,"y":0.6028027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.00471,"y":41.67409,"z":-88.99991},"screenPosition":{"x":0.12569928,"y":0.5759735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.34848,"y":43.845707,"z":-90.190704},"screenPosition":{"x":0.12909907,"y":0.5400273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.84503,"y":45.259636,"z":-91.05824},"screenPosition":{"x":0.12513463,"y":0.5116867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.95349,"y":46.124126,"z":-91.7657},"screenPosition":{"x":0.11091541,"y":0.4848759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.11263,"y":45.908955,"z":-91.98776},"screenPosition":{"x":0.08790424,"y":0.47022498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.0536,"y":44.853874,"z":-91.94233},"screenPosition":{"x":0.050709464,"y":0.45913526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.31413,"y":42.479378,"z":-91.19358},"screenPosition":{"x":0.004904269,"y":0.46932366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.25897,"y":40.240417,"z":-91.1241},"screenPosition":{"x":0.0051975246,"y":0.49738774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.5735,"y":38.120872,"z":-89.90639},"screenPosition":{"x":0.0055951662,"y":0.5354413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.08284,"y":36.246296,"z":-88.82941},"screenPosition":{"x":0.0015706958,"y":0.5691457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.64795,"y":37.158447,"z":-87.775406},"screenPosition":{"x":0.03520008,"y":0.58368015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.06763,"y":40.025257,"z":-88.84983},"screenPosition":{"x":0.07284668,"y":0.56287867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.43123,"y":41.28114,"z":-89.77383},"screenPosition":{"x":0.05910896,"y":0.52948666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.3891,"y":39.86617,"z":-89.5666},"screenPosition":{"x":0.018983543,"y":0.5224502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.10661,"y":37.533745,"z":-89.56907},"screenPosition":{"x":0.0057053156,"y":0.54598236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.42032,"y":35.413162,"z":-88.35076},"screenPosition":{"x":0.0061031515,"y":0.5840545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.43658,"y":32.91852,"z":-86.91755},"screenPosition":{"x":0.004929521,"y":0.6288608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.11371,"y":33.711735,"z":-85.82586},"screenPosition":{"x":0.033803046,"y":0.6439198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.85294,"y":35.25913,"z":-86.19696},"screenPosition":{"x":0.06827974,"y":0.64374757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.59875,"y":38.17614,"z":-87.49103},"screenPosition":{"x":0.09296283,"y":0.61195487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.87445,"y":40.133102,"z":-88.57372},"screenPosition":{"x":0.0953704,"y":0.5790488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.66263,"y":39.835705,"z":-88.851555},"screenPosition":{"x":0.06565642,"y":0.56033224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.801,"y":37.227863,"z":-87.829796},"screenPosition":{"x":0.03423478,"y":0.58165306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.08015,"y":35.25861,"z":-86.527115},"screenPosition":{"x":0.046013087,"y":0.62618744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.20995,"y":35.1454,"z":-86.19799},"screenPosition":{"x":0.06372445,"y":0.64232033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.6147,"y":34.50785,"z":-85.81862},"screenPosition":{"x":0.06484146,"y":0.6543884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.99915,"y":33.131832,"z":-84.95074},"screenPosition":{"x":0.0700526,"y":0.68335795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.78859,"y":31.945364,"z":-84.08113},"screenPosition":{"x":0.08280948,"y":0.7147264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.56113,"y":31.118782,"z":-83.37332},"screenPosition":{"x":0.098496996,"y":0.7420416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.58882,"y":30.683596,"z":-82.88206},"screenPosition":{"x":0.11466603,"y":0.7627755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.58247,"y":30.14108,"z":-82.33675},"screenPosition":{"x":0.13034761,"y":0.78502864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.82832,"y":30.545805,"z":-82.11296},"screenPosition":{"x":0.16070025,"y":0.80220133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.38048,"y":31.916458,"z":-82.37562},"screenPosition":{"x":0.19543995,"y":0.80570114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.12312,"y":34.56221,"z":-83.39703},"screenPosition":{"x":0.22819422,"y":0.7849058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.3851,"y":37.15032,"z":-84.914185},"screenPosition":{"x":0.22569165,"y":0.7368198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.88434,"y":37.181305,"z":-85.29908},"screenPosition":{"x":0.20120624,"y":0.7166025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.26459,"y":37.2502,"z":-85.683624},"screenPosition":{"x":0.17818913,"y":0.6968896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.72687,"y":37.729702,"z":-86.11947},"screenPosition":{"x":0.16748369,"y":0.6795846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.52925,"y":38.45536,"z":-86.71814},"screenPosition":{"x":0.15514827,"y":0.65692866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.96068,"y":39.098797,"z":-87.37258},"screenPosition":{"x":0.13603671,"y":0.63012403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.98393,"y":39.28142,"z":-87.756096},"screenPosition":{"x":0.11757937,"y":0.6118413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.4151,"y":39.097755,"z":-88.03289},"screenPosition":{"x":0.09196417,"y":0.5947453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.9599,"y":41.642067,"z":-89.27532},"screenPosition":{"x":0.106112145,"y":0.56081206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.0424,"y":43.706875,"z":-90.08192},"screenPosition":{"x":0.13104343,"y":0.54407614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.34602,"y":46.05575,"z":-91.051},"screenPosition":{"x":0.15596879,"y":0.5222782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.79434,"y":46.3393,"z":-91.54365},"screenPosition":{"x":0.13392659,"y":0.49952683},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-186.09866,"y":45.713,"z":-92.04456},"screenPosition":{"x":0.07689595,"y":0.46474653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.06853,"y":48.35823,"z":-93.39613},"screenPosition":{"x":0.08736334,"y":0.42618617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.36238,"y":49.06624,"z":-93.16959},"screenPosition":{"x":0.12946232,"y":0.44739375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.02132,"y":45.511677,"z":-91.49615},"screenPosition":{"x":0.10560164,"y":0.4914751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.55244,"y":43.66256,"z":-90.137344},"screenPosition":{"x":0.12571508,"y":0.5405339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.84923,"y":43.814724,"z":-89.80581},"screenPosition":{"x":0.15356715,"y":0.5602463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.97925,"y":44.52861,"z":-89.85435},"screenPosition":{"x":0.17758967,"y":0.56677955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.02432,"y":45.387737,"z":-89.95658},"screenPosition":{"x":0.20348316,"y":0.5723324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.18497,"y":45.110596,"z":-89.40885},"screenPosition":{"x":0.2294428,"y":0.59811604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.8385,"y":44.321926,"z":-88.70071},"screenPosition":{"x":0.24659862,"y":0.62593555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.76703,"y":43.00892,"z":-87.9423},"screenPosition":{"x":0.24712642,"y":0.6496846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.76044,"y":41.6393,"z":-87.01933},"screenPosition":{"x":0.2564514,"y":0.6815856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.88998,"y":40.698994,"z":-86.31256},"screenPosition":{"x":0.26773125,"y":0.70740736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.7164,"y":39.064007,"z":-85.392006},"screenPosition":{"x":0.26678604,"y":0.7357558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.47473,"y":37.214367,"z":-84.36336},"screenPosition":{"x":0.2648659,"y":0.76714265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.06609,"y":35.09936,"z":-83.33712},"screenPosition":{"x":0.25266775,"y":0.79499906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.79651,"y":32.85781,"z":-82.42209},"screenPosition":{"x":0.22822985,"y":0.81527776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.60135,"y":31.373425,"z":-82.16046},"screenPosition":{"x":0.18916035,"y":0.8100267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.4576,"y":31.29068,"z":-82.54639},"screenPosition":{"x":0.16019498,"y":0.7885346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.65077,"y":31.182833,"z":-82.822495},"screenPosition":{"x":0.13767126,"y":0.77236444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.99722,"y":31.971504,"z":-83.53064},"screenPosition":{"x":0.12074743,"y":0.7442241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.02072,"y":32.98123,"z":-84.29181},"screenPosition":{"x":0.10825197,"y":0.71671927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.24841,"y":34.63491,"z":-85.377266},"screenPosition":{"x":0.09891319,"y":0.67977834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.2009,"y":35.98583,"z":-86.13532},"screenPosition":{"x":0.09986434,"y":0.6564919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.20186,"y":39.29423,"z":-87.645935},"screenPosition":{"x":0.12525934,"y":0.6179887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.96434,"y":41.024254,"z":-88.40054},"screenPosition":{"x":0.14089341,"y":0.59974587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.19353,"y":42.615963,"z":-88.71622},"screenPosition":{"x":0.18052544,"y":0.6032395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.30666,"y":43.689743,"z":-88.92655},"screenPosition":{"x":0.20743622,"y":0.60573673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.35149,"y":43.721767,"z":-88.65114},"screenPosition":{"x":0.22702336,"y":0.6208981},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.18916,"y":43.66568,"z":-88.156425},"screenPosition":{"x":0.25788534,"y":0.6466176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.2335,"y":42.043507,"z":-87.1257},"screenPosition":{"x":0.26476496,"y":0.6810886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.6177,"y":39.840385,"z":-85.88017},"screenPosition":{"x":0.26384783,"y":0.71935064},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-165.99992,"y":36.045036,"z":-84.64912},"screenPosition":{"x":0.20122999,"y":0.73685056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.65222,"y":36.145435,"z":-85.0884},"screenPosition":{"x":0.17576374,"y":0.7146097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.55695,"y":38.020172,"z":-86.226875},"screenPosition":{"x":0.17135341,"y":0.67761153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.85738,"y":40.097794,"z":-86.9233},"screenPosition":{"x":0.20408344,"y":0.66699123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.02144,"y":40.919006,"z":-87.02588},"screenPosition":{"x":0.2285852,"y":0.6719229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.4032,"y":40.925934,"z":-86.64065},"screenPosition":{"x":0.25452563,"y":0.69260025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.2634,"y":38.57117,"z":-85.39649},"screenPosition":{"x":0.24769822,"y":0.7291992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.42525,"y":36.973057,"z":-85.1359},"screenPosition":{"x":0.20418084,"y":0.72258854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.22763,"y":37.698715,"z":-85.73457},"screenPosition":{"x":0.19189122,"y":0.69990957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.26532,"y":39.7315,"z":-86.81658},"screenPosition":{"x":0.19726269,"y":0.6679645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.065,"y":41.840103,"z":-87.8979},"screenPosition":{"x":0.20551611,"y":0.6371236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.24129,"y":42.092144,"z":-88.33581},"screenPosition":{"x":0.18597077,"y":0.61685324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.87619,"y":40.89823,"z":-88.181595},"screenPosition":{"x":0.15068994,"y":0.60985756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.97757,"y":38.738907,"z":-87.210785},"screenPosition":{"x":0.13316476,"y":0.6341336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.49498,"y":37.520935,"z":-86.28644},"screenPosition":{"x":0.14831206,"y":0.66807365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.99597,"y":38.31705,"z":-86.2792},"screenPosition":{"x":0.17914622,"y":0.67866516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.22835,"y":40.18002,"z":-86.86753},"screenPosition":{"x":0.2109402,"y":0.67102635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.86865,"y":41.676693,"z":-87.34914},"screenPosition":{"x":0.23588061,"y":0.6644203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.71634,"y":44.08858,"z":-88.427704},"screenPosition":{"x":0.2559077,"y":0.6375665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.92102,"y":46.386734,"z":-89.50729},"screenPosition":{"x":0.2715299,"y":0.60919964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.17981,"y":48.703587,"z":-90.7518},"screenPosition":{"x":0.27686813,"y":0.57224023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.2743,"y":49.37212,"z":-91.51607},"screenPosition":{"x":0.25139,"y":0.5398754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.93983,"y":47.187176,"z":-90.76559},"screenPosition":{"x":0.21813641,"y":0.55206597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.66707,"y":44.67437,"z":-89.577896},"screenPosition":{"x":0.20156755,"y":0.58345014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.32062,"y":43.885696,"z":-88.86974},"screenPosition":{"x":0.21869512,"y":0.61129075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.63724,"y":43.122128,"z":-88.271416},"screenPosition":{"x":0.22948436,"y":0.63355005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.48055,"y":41.127254,"z":-87.189064},"screenPosition":{"x":0.2256277,"y":0.6659011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.01534,"y":41.203594,"z":-86.85822},"screenPosition":{"x":0.25058976,"y":0.68460244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.55695,"y":43.47665,"z":-87.827995},"screenPosition":{"x":0.27257225,"y":0.6617966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.97957,"y":45.787617,"z":-88.797424},"screenPosition":{"x":0.29602718,"y":0.6395409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.45604,"y":47.290176,"z":-89.55411},"screenPosition":{"x":0.3028515,"y":0.6182719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.21037,"y":63.650078,"z":-96.39347},"screenPosition":{"x":0.47047493,"y":0.4616453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.09923,"y":64.16853,"z":-96.168655},"screenPosition":{"x":0.50523245,"y":0.4803311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.03877,"y":63.607323,"z":-95.45844},"screenPosition":{"x":0.53100675,"y":0.51118773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.76015,"y":62.206203,"z":-94.480736},"screenPosition":{"x":0.54298,"y":0.5455836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.2325,"y":60.129105,"z":-93.454155},"screenPosition":{"x":0.5322501,"y":0.57394433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.92863,"y":56.95313,"z":-92.107414},"screenPosition":{"x":0.500976,"y":0.6053681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.56013,"y":54.66086,"z":-91.302895},"screenPosition":{"x":0.46710828,"y":0.6190151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.50111,"y":53.605778,"z":-91.25746},"screenPosition":{"x":0.4300402,"y":0.6079882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.61273,"y":54.741524,"z":-92.23758},"screenPosition":{"x":0.4079802,"y":0.5700508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.99371,"y":57.29172,"z":-93.75508},"screenPosition":{"x":0.4040093,"y":0.5214605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.90018,"y":59.93159,"z":-94.50142},"screenPosition":{"x":0.45488244,"y":0.5153222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.1284,"y":58.214897,"z":-93.30649},"screenPosition":{"x":0.46911946,"y":0.557319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.00868,"y":55.771507,"z":-92.17319},"screenPosition":{"x":0.45140016,"y":0.5866508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.72514,"y":53.334,"z":-91.31496},"screenPosition":{"x":0.41584474,"y":0.60142535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.93498,"y":52.039165,"z":-91.05161},"screenPosition":{"x":0.3840416,"y":0.5989343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.02924,"y":51.8806,"z":-91.438225},"screenPosition":{"x":0.35221475,"y":0.57619524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.49493,"y":53.45846,"z":-92.524376},"screenPosition":{"x":0.3399394,"y":0.53824556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.8698,"y":56.293247,"z":-93.874214},"screenPosition":{"x":0.35799885,"y":0.5022826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.54437,"y":58.724346,"z":-94.78753},"screenPosition":{"x":0.38976544,"y":0.48453042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.60974,"y":60.32194,"z":-95.378265},"screenPosition":{"x":0.41129142,"y":0.47336227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.72336,"y":63.04992,"z":-96.3439},"screenPosition":{"x":0.4508997,"y":0.45660788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.31273,"y":64.79916,"z":-96.93327},"screenPosition":{"x":0.47828606,"y":0.44746187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.64378,"y":65.88574,"z":-97.03344},"screenPosition":{"x":0.51303166,"y":0.45602366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.51868,"y":66.208244,"z":-96.86543},"screenPosition":{"x":0.5365303,"y":0.46915537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.45845,"y":66.47414,"z":-96.53287},"screenPosition":{"x":0.5687521,"y":0.4903865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.9761,"y":66.08326,"z":-95.98617},"screenPosition":{"x":0.5903994,"y":0.5146458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.36006,"y":63.05304,"z":-94.36298},"screenPosition":{"x":0.5831173,"y":0.562744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.30104,"y":61.99796,"z":-94.31756},"screenPosition":{"x":0.5458048,"y":0.5516429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.48074,"y":63.34836,"z":-95.40577},"screenPosition":{"x":0.5248374,"y":0.5106785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.78435,"y":65.697235,"z":-96.374855},"screenPosition":{"x":0.5497627,"y":0.48888057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.24394,"y":67.55968,"z":-97.29334},"screenPosition":{"x":0.55951774,"y":0.4635583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.99611,"y":71.0192,"z":-99.13272},"screenPosition":{"x":0.5687496,"y":0.4093832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.22578,"y":68.80864,"z":-98.60258},"screenPosition":{"x":0.5196257,"y":0.40954134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.86781,"y":65.61397,"z":-97.090935},"screenPosition":{"x":0.49883622,"y":0.44946086},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-152.66219,"y":65.46389,"z":-96.10185},"screenPosition":{"x":0.55907184,"y":0.5005115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.80934,"y":66.64499,"z":-96.366234},"screenPosition":{"x":0.58647007,"y":0.5014895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.22878,"y":68.6847,"z":-97.06301},"screenPosition":{"x":0.61733115,"y":0.49035934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.04585,"y":72.087616,"z":-98.73783},"screenPosition":{"x":0.6356258,"y":0.4442701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.2422,"y":72.25103,"z":-99.28659},"screenPosition":{"x":0.605451,"y":0.4169301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.06029,"y":68.4813,"z":-97.835205},"screenPosition":{"x":0.55851907,"y":0.44634873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.10463,"y":66.85912,"z":-96.80449},"screenPosition":{"x":0.5654087,"y":0.48076174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.87424,"y":66.58839,"z":-96.201675},"screenPosition":{"x":0.5948923,"y":0.50959766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.17126,"y":67.56764,"z":-96.247795},"screenPosition":{"x":0.62954396,"y":0.5196586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.72684,"y":70.03666,"z":-97.16076},"screenPosition":{"x":0.6627916,"y":0.50240606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.1017,"y":72.871445,"z":-98.510605},"screenPosition":{"x":0.68085104,"y":0.46644312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.19618,"y":73.53998,"z":-99.27487},"screenPosition":{"x":0.655373,"y":0.43407825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.33772,"y":71.20339,"z":-98.52577},"screenPosition":{"x":0.61624616,"y":0.44425142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.56865,"y":68.10375,"z":-96.84819},"screenPosition":{"x":0.60994494,"y":0.49437323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.72636,"y":68.382454,"z":-96.40546},"screenPosition":{"x":0.6500941,"y":0.52165765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.3331,"y":71.42601,"z":-97.588326},"screenPosition":{"x":0.68724734,"y":0.49731335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.84386,"y":73.86299,"z":-98.77671},"screenPosition":{"x":0.7009078,"y":0.46489933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.76256,"y":75.933685,"z":-99.858376},"screenPosition":{"x":0.7077203,"y":0.4335063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.93639,"y":78.395775,"z":-101.15658},"screenPosition":{"x":0.71419376,"y":0.39577684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.6004,"y":81.72928,"z":-102.77701},"screenPosition":{"x":0.7340427,"y":0.3514687},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-138.14725,"y":80.84125,"z":-100.96926},"screenPosition":{"x":0.82073724,"y":0.4369078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.33504,"y":83.49929,"z":-102.21066},"screenPosition":{"x":0.83929014,"y":0.40448764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.21358,"y":85.747246,"z":-103.07061},"screenPosition":{"x":0.86764544,"y":0.38724118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.90529,"y":88.64555,"z":-104.199776},"screenPosition":{"x":0.9028429,"y":0.36391175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.4043,"y":87.84944,"z":-104.207016},"screenPosition":{"x":0.8702026,"y":0.35384497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.28824,"y":87.331505,"z":-104.10168},"screenPosition":{"x":0.85892737,"y":0.35243136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.00517,"y":86.5482,"z":-103.99875},"screenPosition":{"x":0.83501345,"y":0.3482036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.67729,"y":85.73287,"z":-104.17124},"screenPosition":{"x":0.79370177,"y":0.32810855},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-142.17587,"y":78.25798,"z":-100.38748},"screenPosition":{"x":0.7610485,"y":0.43495795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.89575,"y":76.91883,"z":-100.179565},"screenPosition":{"x":0.7238596,"y":0.42893025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.0069,"y":76.40038,"z":-100.40437},"screenPosition":{"x":0.6891021,"y":0.41024446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.94836,"y":76.9995,"z":-101.11425},"screenPosition":{"x":0.66392905,"y":0.38015848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.88443,"y":80.36451,"z":-102.78941},"screenPosition":{"x":0.6811841,"y":0.33331186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.559,"y":82.79561,"z":-103.70273},"screenPosition":{"x":0.7129635,"y":0.31555492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.02937,"y":84.582756,"z":-104.29175},"screenPosition":{"x":0.7408081,"y":0.30739042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.60185,"y":86.69188,"z":-105.042915},"screenPosition":{"x":0.77213514,"y":0.29371396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.42628,"y":88.921135,"z":-105.73796},"screenPosition":{"x":0.81077445,"y":0.28506002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.68927,"y":89.793076,"z":-105.730034},"screenPosition":{"x":0.8445452,"y":0.29666024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.81564,"y":88.581505,"z":-104.7506},"screenPosition":{"x":0.8636686,"y":0.3335889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.23682,"y":85.92987,"z":-103.454124},"screenPosition":{"x":0.84903324,"y":0.36904132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.40921,"y":83.42935,"z":-102.48642},"screenPosition":{"x":0.8182347,"y":0.38882184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.92218,"y":82.82919,"z":-102.43685},"screenPosition":{"x":0.79865944,"y":0.3837844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.58795,"y":81.47135,"z":-102.064026},"screenPosition":{"x":0.77175456,"y":0.38634923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.42365,"y":79.82304,"z":-101.58379},"screenPosition":{"x":0.74093825,"y":0.39094374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.36145,"y":78.4967,"z":-101.26571},"screenPosition":{"x":0.71095693,"y":0.3911758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.70743,"y":77.631165,"z":-101.21856},"screenPosition":{"x":0.681731,"y":0.38241267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.74733,"y":76.6268,"z":-101.062614},"screenPosition":{"x":0.6537641,"y":0.37792152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.8553,"y":75.83709,"z":-101.01477},"screenPosition":{"x":0.6269226,"y":0.37033266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.60652,"y":75.98821,"z":-101.343544},"screenPosition":{"x":0.6107595,"y":0.35466075},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-162.26982,"y":71.383934,"z":-100.2299},"screenPosition":{"x":0.50925833,"y":0.3554644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.31339,"y":72.30503,"z":-101.10192},"screenPosition":{"x":0.48645395,"y":0.32039517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.67451,"y":75.77096,"z":-102.886215},"screenPosition":{"x":0.49960327,"y":0.2692524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.05699,"y":78.259186,"z":-103.633934},"screenPosition":{"x":0.5446032,"y":0.26109666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.30284,"y":78.66391,"z":-103.41016},"screenPosition":{"x":0.5744919,"y":0.27865687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.70125,"y":77.48385,"z":-102.485466},"screenPosition":{"x":0.59163016,"y":0.31267008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.56122,"y":74.30199,"z":-100.86366},"screenPosition":{"x":0.5784749,"y":0.35875088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.08766,"y":72.24358,"z":-100.00198},"screenPosition":{"x":0.557461,"y":0.37851912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.93709,"y":69.96412,"z":-99.08729},"screenPosition":{"x":0.5315548,"y":0.3982935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.27965,"y":68.00024,"z":-98.38983},"screenPosition":{"x":0.50319356,"y":0.41047794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.28235,"y":66.61729,"z":-97.90718},"screenPosition":{"x":0.4826553,"y":0.41860294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.57373,"y":64.078865,"z":-96.93982},"screenPosition":{"x":0.45025024,"y":0.4379498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.76326,"y":62.04556,"z":-96.187965},"screenPosition":{"x":0.42300805,"y":0.4520871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.43909,"y":58.13111,"z":-94.35272},"screenPosition":{"x":0.39615667,"y":0.5002099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.27701,"y":58.902126,"z":-94.23566},"screenPosition":{"x":0.43335736,"y":0.5163616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.52556,"y":57.92391,"z":-93.529236},"screenPosition":{"x":0.4431717,"y":0.54165936},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-154.13823,"y":54.831196,"z":-91.466415},"screenPosition":{"x":0.46282417,"y":0.6125028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.27365,"y":52.779198,"z":-90.54966},"screenPosition":{"x":0.44572774,"y":0.6353033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.14314,"y":50.411106,"z":-89.74582},"screenPosition":{"x":0.4090501,"y":0.6480044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.64215,"y":49.61499,"z":-89.75306},"screenPosition":{"x":0.37821594,"y":0.6374129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.0224,"y":49.683887,"z":-90.13761},"screenPosition":{"x":0.35519883,"y":0.6177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.80765,"y":49.942333,"z":-90.52043},"screenPosition":{"x":0.3395232,"y":0.6005088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.39188,"y":49.828083,"z":-90.85162},"screenPosition":{"x":0.31308204,"y":0.5813064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.33015,"y":50.155945,"z":-91.28883},"screenPosition":{"x":0.29642555,"y":0.56209165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.35657,"y":50.60983,"z":-91.94501},"screenPosition":{"x":0.26997253,"y":0.5327652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.1073,"y":49.106747,"z":-91.51848},"screenPosition":{"x":0.24111842,"y":0.53634304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.56886,"y":47.10495,"z":-90.82136},"screenPosition":{"x":0.21129484,"y":0.54802084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.45232,"y":44.932816,"z":-89.96072},"screenPosition":{"x":0.18586366,"y":0.5662801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.17346,"y":42.704594,"z":-88.60536},"screenPosition":{"x":0.19129688,"y":0.61031276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.8581,"y":42.579094,"z":-88.05626},"screenPosition":{"x":0.22315218,"y":0.63806844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.68205,"y":43.154152,"z":-87.996},"screenPosition":{"x":0.24907865,"y":0.64868194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.55563,"y":54.84677,"z":-93.61224},"screenPosition":{"x":0.32032257,"y":0.49777415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.83377,"y":54.59369,"z":-93.83465},"screenPosition":{"x":0.2958431,"y":0.48261887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.85678,"y":53.949215,"z":-93.84051},"screenPosition":{"x":0.27088213,"y":0.47404477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.81172,"y":53.090088,"z":-93.738266},"screenPosition":{"x":0.24494624,"y":0.46850914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.65108,"y":53.36723,"z":-94.285995},"screenPosition":{"x":0.21898662,"y":0.4427255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.31732,"y":53.66359,"z":-94.66847},"screenPosition":{"x":0.20477927,"y":0.4260387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.86774,"y":54.26911,"z":-95.323265},"screenPosition":{"x":0.18422708,"y":0.39876685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.66989,"y":54.16767,"z":-95.54429},"screenPosition":{"x":0.16559312,"y":0.38559183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.271,"y":53.69353,"z":-95.71368},"screenPosition":{"x":0.13622132,"y":0.37044272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.44998,"y":52.56263,"z":-95.66894},"screenPosition":{"x":0.09621455,"y":0.3584584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.43213,"y":49.614117,"z":-94.32013},"screenPosition":{"x":0.073625624,"y":0.39279416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.28915,"y":46.9881,"z":-92.803314},"screenPosition":{"x":0.074659914,"y":0.44037575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.34818,"y":48.04318,"z":-92.84875},"screenPosition":{"x":0.11185468,"y":0.45146546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.68265,"y":50.228127,"z":-93.59922},"screenPosition":{"x":0.14519957,"y":0.4393339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.80261,"y":53.498615,"z":-95.110176},"screenPosition":{"x":0.16903497,"y":0.40026736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.64221,"y":54.60286,"z":-96.03555},"screenPosition":{"x":0.14956158,"y":0.36502886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.97421,"y":53.54137,"z":-96.045204},"screenPosition":{"x":0.108311884,"y":0.3507359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.07536,"y":50.554947,"z":-94.69675},"screenPosition":{"x":0.084519096,"y":0.38478285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.78253,"y":48.13077,"z":-93.3982},"screenPosition":{"x":0.07874973,"y":0.42326045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.51836,"y":48.579807,"z":-93.11899},"screenPosition":{"x":0.11430614,"y":0.44387645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.15889,"y":50.903584,"z":-93.97826},"screenPosition":{"x":0.14564829,"y":0.4276791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.53668,"y":53.182526,"z":-95.2231},"screenPosition":{"x":0.14945377,"y":0.39016792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.4752,"y":54.337486,"z":-96.037964},"screenPosition":{"x":0.13927804,"y":0.3614828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.43086,"y":55.959663,"z":-97.06869},"screenPosition":{"x":0.13232088,"y":0.32700187},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-193.53099,"y":54.68941,"z":-97.245316},"screenPosition":{"x":0.07205045,"y":0.30117378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.77486,"y":53.5019,"z":-97.03601},"screenPosition":{"x":0.04073479,"y":0.2971635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.20653,"y":54.972435,"z":-98.06811},"screenPosition":{"x":0.027971977,"y":0.26073304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.38036,"y":57.43452,"z":-99.36632},"screenPosition":{"x":0.03528083,"y":0.22277734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.58186,"y":59.461422,"z":-100.173256},"screenPosition":{"x":0.058728933,"y":0.20551851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.67833,"y":61.722187,"z":-100.92304},"screenPosition":{"x":0.09516648,"y":0.19478245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.07722,"y":62.196323,"z":-100.753654},"screenPosition":{"x":0.124290906,"y":0.20948578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.6458,"y":61.55289,"z":-100.099205},"screenPosition":{"x":0.14340246,"y":0.23629044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.33337,"y":60.871544,"z":-99.44511},"screenPosition":{"x":0.16104573,"y":0.26259074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.64975,"y":59.280876,"z":-98.469124},"screenPosition":{"x":0.16548623,"y":0.29447582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.96883,"y":56.30726,"z":-97.0105},"screenPosition":{"x":0.14941016,"y":0.334518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.88632,"y":54.24245,"z":-96.2039},"screenPosition":{"x":0.124550626,"y":0.35132748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.09592,"y":52.120518,"z":-95.562904},"screenPosition":{"x":0.0865822,"y":0.35859728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.06775,"y":50.901505,"z":-95.29887},"screenPosition":{"x":0.057789043,"y":0.35714135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.99231,"y":51.86051,"z":-96.17055},"screenPosition":{"x":0.03587215,"y":0.32247964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.54004,"y":53.84898,"z":-97.30798},"screenPosition":{"x":0.03621849,"y":0.28742665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.14972,"y":56.336685,"z":-98.38586},"screenPosition":{"x":0.05879425,"y":0.26120055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.99106,"y":58.20606,"z":-98.9191},"screenPosition":{"x":0.09450292,"y":0.25659987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.91394,"y":58.831837,"z":-98.74834},"screenPosition":{"x":0.12974788,"y":0.27376646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.77121,"y":57.03292,"z":-97.60918},"screenPosition":{"x":0.13713092,"y":0.31172225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.41348,"y":54.665348,"z":-96.47518},"screenPosition":{"x":0.12262851,"y":0.34227592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.10988,"y":52.316475,"z":-95.506096},"screenPosition":{"x":0.097588524,"y":0.36393234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.0986,"y":50.73757,"z":-95.08026},"screenPosition":{"x":0.065793775,"y":0.36650157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.853,"y":51.15995,"z":-95.681694},"screenPosition":{"x":0.041763134,"y":0.33968306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.43452,"y":52.428646,"z":-96.49553},"screenPosition":{"x":0.036088735,"y":0.31255627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.77534,"y":55.1561,"z":-97.79131},"screenPosition":{"x":0.053432282,"y":0.2779119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.58582,"y":57.189407,"z":-98.543175},"screenPosition":{"x":0.08081271,"y":0.26370388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.29102,"y":58.629475,"z":-98.86022},"screenPosition":{"x":0.11474501,"y":0.26545525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.58755,"y":57.954536,"z":-98.15104},"screenPosition":{"x":0.13626629,"y":0.2947299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.07387,"y":56.073395,"z":-97.06765},"screenPosition":{"x":0.13666128,"y":0.32842746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.46124,"y":54.14153,"z":-96.09477},"screenPosition":{"x":0.12807287,"y":0.35598248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.5597,"y":52.53805,"z":-95.22896},"screenPosition":{"x":0.124492794,"y":0.38159385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.69194,"y":50.214794,"z":-94.03954},"screenPosition":{"x":0.115237154,"y":0.41552094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.9515,"y":49.988373,"z":-93.3813},"screenPosition":{"x":0.15057474,"y":0.4479189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.3166,"y":51.182285,"z":-93.53552},"screenPosition":{"x":0.18573302,"y":0.4549161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.33961,"y":50.53781,"z":-93.54138},"screenPosition":{"x":0.16077204,"y":0.44634202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.48677,"y":51.718914,"z":-93.80576},"screenPosition":{"x":0.18818502,"y":0.44733274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.5289,"y":53.133884,"z":-94.01299},"screenPosition":{"x":0.2282957,"y":0.45435643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.47528,"y":54.76939,"z":-94.60339},"screenPosition":{"x":0.25127718,"y":0.44369736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.57492,"y":57.30141,"z":-95.62584},"screenPosition":{"x":0.27962658,"y":0.4213889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.62975,"y":59.801407,"z":-96.9237},"screenPosition":{"x":0.28838882,"y":0.38391903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.59961,"y":62.44664,"z":-98.27526},"screenPosition":{"x":0.29910117,"y":0.34548435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.84396,"y":62.913334,"z":-98.821266},"screenPosition":{"x":0.28048864,"y":0.32217243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.30942,"y":63.664093,"z":-99.52976},"screenPosition":{"x":0.26186454,"y":0.29384857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.47174,"y":63.72018,"z":-100.024475},"screenPosition":{"x":0.23105656,"y":0.26830828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.84785,"y":60.209415,"z":-98.625755},"screenPosition":{"x":0.19048199,"y":0.29809284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.23206,"y":58.006298,"z":-97.38022},"screenPosition":{"x":0.18950793,"y":0.33646032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.84863,"y":57.666145,"z":-96.723015},"screenPosition":{"x":0.22036584,"y":0.36729982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.14589,"y":59.472507,"z":-97.14679},"screenPosition":{"x":0.26097277,"y":0.36775503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.34764,"y":62.326504,"z":-98.331375},"screenPosition":{"x":0.2907775,"y":0.34099662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.67133,"y":64.586754,"z":-99.411316},"screenPosition":{"x":0.30493844,"y":0.3120177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.11401,"y":66.80908,"z":-100.49161},"screenPosition":{"x":0.31762403,"y":0.28264213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.98471,"y":68.5765,"z":-101.57603},"screenPosition":{"x":0.31269014,"y":0.24721426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.78758,"y":70.95636,"z":-102.93},"screenPosition":{"x":0.31313008,"y":0.20519903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.50793,"y":71.27141,"z":-103.47739},"screenPosition":{"x":0.28863874,"y":0.17991975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.09143,"y":68.67586,"z":-102.67562},"screenPosition":{"x":0.24315137,"y":0.18959469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.09071,"y":66.19456,"z":-101.54266},"screenPosition":{"x":0.22410512,"y":0.21847206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.82161,"y":65.60721,"z":-101.382935},"screenPosition":{"x":0.21237981,"y":0.21956877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.14726,"y":64.003204,"z":-100.847275},"screenPosition":{"x":0.18693411,"y":0.22763036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.62573,"y":61.64152,"z":-99.98835},"screenPosition":{"x":0.1541739,"y":0.24336372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.38383,"y":58.964783,"z":-98.582054},"screenPosition":{"x":0.14590503,"y":0.28437638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.6772,"y":58.018585,"z":-97.60021},"screenPosition":{"x":0.17530653,"y":0.32483554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.36867,"y":60.0898,"z":-98.35172},"screenPosition":{"x":0.20415524,"y":0.3111319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.97859,"y":63.404606,"z":-99.80724},"screenPosition":{"x":0.23346765,"y":0.275661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.5633,"y":64.94456,"z":-100.89374},"screenPosition":{"x":0.219724,"y":0.237207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.09657,"y":65.08287,"z":-101.33268},"screenPosition":{"x":0.19572605,"y":0.2154705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.78265,"y":64.46349,"z":-101.44836},"screenPosition":{"x":0.1643985,"y":0.2013362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.8358,"y":61.173786,"z":-100.10265},"screenPosition":{"x":0.12871954,"y":0.23124687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.49205,"y":59.002174,"z":-98.91186},"screenPosition":{"x":0.1255,"y":0.26746586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.09442,"y":57.638966,"z":-97.93381},"screenPosition":{"x":0.13870707,"y":0.30229357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.25507,"y":57.361824,"z":-97.386086},"screenPosition":{"x":0.16458322,"y":0.32794905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.31726,"y":58.68816,"z":-97.70417},"screenPosition":{"x":0.19395041,"y":0.3279647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.97105,"y":58.726593,"z":-97.37367},"screenPosition":{"x":0.2174055,"y":0.3460431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.04672,"y":58.594685,"z":-96.87965},"screenPosition":{"x":0.24532087,"y":0.3708119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.81094,"y":55.63336,"z":-95.64101},"screenPosition":{"x":0.21502168,"y":0.3991972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.78253,"y":53.587246,"z":-94.99932},"screenPosition":{"x":0.17980641,"y":0.40734065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.92796,"y":54.00322,"z":-95.65583},"screenPosition":{"x":0.15188509,"y":0.37750983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.76486,"y":56.490406,"z":-97.06386},"screenPosition":{"x":0.1528125,"y":0.3339754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.00064,"y":59.451733,"z":-98.3025},"screenPosition":{"x":0.1831398,"y":0.3056548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.75702,"y":61.46634,"z":-98.88945},"screenPosition":{"x":0.2207761,"y":0.2999746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.15248,"y":60.84212,"z":-98.069756},"screenPosition":{"x":0.25163993,"y":0.3358761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.03229,"y":56.74453,"z":-96.18115},"screenPosition":{"x":0.2213645,"y":0.3845094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.1804,"y":55.777557,"z":-96.35502},"screenPosition":{"x":0.1729049,"y":0.3628036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.27245,"y":58.656136,"z":-97.97958},"screenPosition":{"x":0.17443919,"y":0.3129436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.72885,"y":60.247326,"z":-98.62541},"screenPosition":{"x":0.19194023,"y":0.29857242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.36963,"y":63.3982,"z":-99.86233},"screenPosition":{"x":0.22957146,"y":0.27273786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.4999,"y":64.93919,"z":-100.28851},"screenPosition":{"x":0.2598791,"y":0.26955342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.45999,"y":65.94356,"z":-100.44445},"screenPosition":{"x":0.28777075,"y":0.2740742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.42009,"y":66.947914,"z":-100.600395},"screenPosition":{"x":0.31564724,"y":0.27869615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.75114,"y":68.0345,"z":-100.70056},"screenPosition":{"x":0.350408,"y":0.28715676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.16693,"y":68.14876,"z":-100.36937},"screenPosition":{"x":0.37684914,"y":0.3063592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.36113,"y":66.32474,"z":-99.12039},"screenPosition":{"x":0.39059874,"y":0.3498752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.38025,"y":62.927704,"z":-97.720634},"screenPosition":{"x":0.3544323,"y":0.3813051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.03229,"y":62.201004,"z":-97.78227},"screenPosition":{"x":0.32261732,"y":0.36869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.97351,"y":61.973022,"z":-98.114494},"screenPosition":{"x":0.2917713,"y":0.3479745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.57944,"y":75.97309,"z":-107.040504},"screenPosition":{"x":0.30608752,"y":0.10290262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.93147,"y":75.20886,"z":-107.040504},"screenPosition":{"x":0.27695212,"y":0.093107685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.9895,"y":74.20555,"z":-105.92682},"screenPosition":{"x":0.24016955,"y":0.080741875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.87296,"y":72.03342,"z":-105.06618},"screenPosition":{"x":0.2117407,"y":0.104592375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.75665,"y":70.688385,"z":-104.58318},"screenPosition":{"x":0.1926707,"y":0.11322174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.25224,"y":68.793915,"z":-103.94012},"screenPosition":{"x":0.16340108,"y":0.12363521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.16974,"y":66.7291,"z":-103.13352},"screenPosition":{"x":0.13870938,"y":0.14097568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.34236,"y":65.05569,"z":-102.54347},"screenPosition":{"x":0.1141717,"y":0.1507838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.95695,"y":63.123306,"z":-101.90075},"screenPosition":{"x":0.08313714,"y":0.15992978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.4048,"y":61.75265,"z":-101.638084},"screenPosition":{"x":0.04839744,"y":0.15643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.34625,"y":62.35177,"z":-102.34796},"screenPosition":{"x":0.024130903,"y":0.12645046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.08105,"y":64.51698,"z":-103.59384},"screenPosition":{"x":0.023365207,"y":0.08711191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.30287,"y":67.28235,"z":-104.88929},"screenPosition":{"x":0.042405512,"y":0.053172536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.24948,"y":69.74496,"z":-105.85734},"screenPosition":{"x":0.07639866,"y":0.025684271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.7045,"y":70.733765,"z":-107.040504},"screenPosition":{"x":0.10634197,"y":0.035750814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.5582,"y":71.43113,"z":-107.040504},"screenPosition":{"x":0.13481593,"y":0.03867936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.08922,"y":72.233345,"z":-107.040504},"screenPosition":{"x":0.16534123,"y":0.04914783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.41206,"y":73.1032,"z":-107.040504},"screenPosition":{"x":0.19667523,"y":0.066119656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.71184,"y":70.65636,"z":-104.858604},"screenPosition":{"x":0.17308357,"y":0.09806031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.78577,"y":69.75932,"z":-104.75671},"screenPosition":{"x":0.1456794,"y":0.09202032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.91064,"y":68.609726,"z":-104.547066},"screenPosition":{"x":0.11583202,"y":0.088514395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.54237,"y":67.144554,"z":-104.12019},"screenPosition":{"x":0.088439725,"y":0.0925984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.22504,"y":65.42683,"z":-103.58556},"screenPosition":{"x":0.058604237,"y":0.099216476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.73436,"y":62.901207,"z":-102.50804},"screenPosition":{"x":0.034172274,"y":0.124557205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.76767,"y":60.527233,"z":-101.42913},"screenPosition":{"x":0.016169012,"y":0.15270436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.57695,"y":58.425034,"z":-100.29273},"screenPosition":{"x":0.0019688858,"y":0.188413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.6585,"y":57.181442,"z":-99.588715},"screenPosition":{"x":0.0021948975,"y":0.2100419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.76758,"y":54.71296,"z":-99.43881},"screenPosition":{"x":0.002482374,"y":0.23755287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.01045,"y":52.503307,"z":-98.169334},"screenPosition":{"x":0.00289692,"y":0.27722415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.21953,"y":51.85999,"z":-96.500694},"screenPosition":{"x":0.013835881,"y":0.3047903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.09418,"y":51.35539,"z":-95.95504},"screenPosition":{"x":0.031017285,"y":0.327573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.56088,"y":51.217075,"z":-95.5161},"screenPosition":{"x":0.055173215,"y":0.34943366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.01364,"y":50.88281,"z":-95.133965},"screenPosition":{"x":0.06772277,"y":0.3654667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.56532,"y":50.599262,"z":-94.64132},"screenPosition":{"x":0.089764975,"y":0.38821808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.20197,"y":50.17048,"z":-94.09497},"screenPosition":{"x":0.10995547,"y":0.4120543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.56927,"y":48.327248,"z":-93.01124},"screenPosition":{"x":0.1118789,"y":0.44641778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.87146,"y":45.71352,"z":-91.71441},"screenPosition":{"x":0.098881125,"y":0.48240823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.16626,"y":44.27345,"z":-91.39736},"screenPosition":{"x":0.06492276,"y":0.48088405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.41013,"y":43.08594,"z":-91.188065},"screenPosition":{"x":0.03360709,"y":0.47687376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.83615,"y":42.223778,"z":-92.26357},"screenPosition":{"x":0.004825432,"y":0.46177915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.43523,"y":44.234684,"z":-93.41887},"screenPosition":{"x":-0.00237752,"y":0.42575243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.21959,"y":46.83542,"z":-93.465004},"screenPosition":{"x":0.024714204,"y":0.40297958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.53668,"y":47.726048,"z":-93.62198},"screenPosition":{"x":0.04820095,"y":0.4059873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.42894,"y":49.342857,"z":-94.04747},"screenPosition":{"x":0.08146642,"y":0.40392074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.04181,"y":52.10182,"z":-95.398},"screenPosition":{"x":0.0965893,"y":0.36694908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.2891,"y":52.012672,"z":-95.83901},"screenPosition":{"x":0.06378159,"y":0.34218642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.29155,"y":49.802628,"z":-94.978714},"screenPosition":{"x":0.036894556,"y":0.35993722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.54573,"y":46.885616,"z":-93.68465},"screenPosition":{"x":0.004106275,"y":0.39295715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.4075,"y":47.972454,"z":-95.566284},"screenPosition":{"x":0.00374694,"y":0.35856947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.8384,"y":49.771854,"z":-96.60007},"screenPosition":{"x":0.0049414136,"y":0.32624653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.35567,"y":52.289295,"z":-96.716896},"screenPosition":{"x":0.015879946,"y":0.29879478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.05325,"y":54.07592,"z":-97.63606},"screenPosition":{"x":0.02260407,"y":0.2723824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.1759,"y":55.963467,"z":-98.66437},"screenPosition":{"x":0.025992481,"y":0.2414999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.77138,"y":57.428116,"z":-99.4214},"screenPosition":{"x":0.031555444,"y":0.2199824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.01305,"y":59.277756,"z":-100.45005},"screenPosition":{"x":0.033268627,"y":0.18833967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.8666,"y":60.577953,"z":-101.31862},"screenPosition":{"x":0.024916632,"y":0.1584843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.14499,"y":61.151974,"z":-101.91867},"screenPosition":{"x":0.0014295396,"y":0.13679858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.46889,"y":61.88259,"z":-103.55789},"screenPosition":{"x":0.0011373002,"y":0.10883181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.86182,"y":63.080395,"z":-104.23745},"screenPosition":{"x":-0.01393608,"y":0.08433363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-211.19594,"y":64.96703,"z":-103.672195},"screenPosition":{"x":-0.025244456,"y":0.04591026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.73166,"y":69.74063,"z":-104.591805},"screenPosition":{"x":0.15596339,"y":0.10061282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.06517,"y":68.61717,"z":-103.83167},"screenPosition":{"x":0.163822,"y":0.1269254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.45232,"y":65.85821,"z":-102.48115},"screenPosition":{"x":0.14897262,"y":0.16465776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.59384,"y":63.52162,"z":-101.73205},"screenPosition":{"x":0.10957235,"y":0.17407021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.39917,"y":63.69144,"z":-102.22573},"screenPosition":{"x":0.08343919,"y":0.15040888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.11414,"y":66.77238,"z":-103.7384},"screenPosition":{"x":0.099710494,"y":0.10827647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.9354,"y":68.730385,"z":-104.1608},"screenPosition":{"x":0.1461906,"y":0.11074911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.45549,"y":66.12946,"z":-102.7538},"screenPosition":{"x":0.14085832,"y":0.15277047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.43788,"y":64.00805,"z":-101.782646},"screenPosition":{"x":0.12474273,"y":0.17759457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.9303,"y":61.842323,"z":-100.86692},"screenPosition":{"x":0.103241414,"y":0.198882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.34093,"y":60.093086,"z":-100.27756},"screenPosition":{"x":0.075855054,"y":0.20802802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.10855,"y":58.230118,"z":-99.68923},"screenPosition":{"x":0.044063818,"y":0.21566096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.574,"y":58.980877,"z":-100.39772},"screenPosition":{"x":0.02570249,"y":0.18768804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.71404,"y":62.16274,"z":-102.01953},"screenPosition":{"x":0.03859497,"y":0.14125629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.36807,"y":63.02827,"z":-102.06668},"screenPosition":{"x":0.068448275,"y":0.14982422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.54927,"y":64.316696,"z":-102.38512},"screenPosition":{"x":0.096333966,"y":0.14928299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.67929,"y":65.03059,"z":-102.43365},"screenPosition":{"x":0.1203141,"y":0.15583348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.73807,"y":65.25857,"z":-102.101425},"screenPosition":{"x":0.15116012,"y":0.17654899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.34117,"y":66.37666,"z":-102.25633},"screenPosition":{"x":0.18345663,"y":0.18258284},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-189.55736,"y":71.08082,"z":-104.13942},"screenPosition":{"x":0.23722476,"y":0.14201924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.60146,"y":68.631546,"z":-102.73105},"screenPosition":{"x":0.23779118,"y":0.18626958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.14188,"y":66.7691,"z":-101.81256},"screenPosition":{"x":0.22805533,"y":0.21165682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.74695,"y":64.02294,"z":-100.35187},"screenPosition":{"x":0.22072266,"y":0.25441658},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-177.45119,"y":67.611084,"z":-100.75944},"screenPosition":{"x":0.33033934,"y":0.27857655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.75018,"y":64.726105,"z":-99.18995},"screenPosition":{"x":0.325013,"y":0.32565993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.78937,"y":61.240437,"z":-97.901054},"screenPosition":{"x":0.27807513,"y":0.35001653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.81358,"y":64.73147,"z":-99.79517},"screenPosition":{"x":0.2848579,"y":0.2933135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.6581,"y":66.87209,"z":-100.60108},"screenPosition":{"x":0.31270957,"y":0.27770475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.02318,"y":68.06601,"z":-100.755295},"screenPosition":{"x":0.34794572,"y":0.2846746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.59224,"y":69.076775,"z":-100.856155},"screenPosition":{"x":0.37976792,"y":0.2921819},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-171.82533,"y":73.42104,"z":-102.57744},"screenPosition":{"x":0.4304823,"y":0.2558905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.70023,"y":73.74354,"z":-102.40943},"screenPosition":{"x":0.454104,"y":0.26880333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.30331,"y":74.86163,"z":-102.56434},"screenPosition":{"x":0.4864005,"y":0.27483717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.5014,"y":75.79018,"z":-102.72097},"screenPosition":{"x":0.5113556,"y":0.27834922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.66254,"y":77.16724,"z":-102.92854},"screenPosition":{"x":0.5500127,"y":0.2848813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.23477,"y":78.44926,"z":-103.302055},"screenPosition":{"x":0.5736537,"y":0.2815787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.53203,"y":80.25562,"z":-103.72583},"screenPosition":{"x":0.6145879,"y":0.281763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.74625,"y":83.367546,"z":-105.6234},"screenPosition":{"x":0.6066877,"y":0.2200164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.01604,"y":84.92894,"z":-107.040504},"screenPosition":{"x":0.64752287,"y":0.21768865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.35744,"y":85.79328,"z":-105.93149},"screenPosition":{"x":0.67850447,"y":0.22810426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.99384,"y":84.5374,"z":-105.007484},"screenPosition":{"x":0.6923599,"y":0.2679979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.71498,"y":82.30918,"z":-103.65213},"screenPosition":{"x":0.6977931,"y":0.31203055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.11925,"y":80.017426,"z":-102.51745},"screenPosition":{"x":0.6860384,"y":0.34345207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.5125,"y":76.97388,"z":-101.33458},"screenPosition":{"x":0.64893514,"y":0.367774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.1371,"y":77.50947,"z":-102.26514},"screenPosition":{"x":0.60729986,"y":0.32479924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.55995,"y":80.64753,"z":-103.61221},"screenPosition":{"x":0.63710564,"y":0.29287115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.36726,"y":82.40958,"z":-104.091415},"screenPosition":{"x":0.67232686,"y":0.2897897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.8511,"y":82.73848,"z":-103.868324},"screenPosition":{"x":0.6993592,"y":0.30615398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.48824,"y":83.9639,"z":-104.07728},"screenPosition":{"x":0.7325269,"y":0.31046835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.2615,"y":85.61862,"z":-104.502426},"screenPosition":{"x":0.7672607,"y":0.3089061},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-145.9873,"y":89.16222,"z":-107.040504},"screenPosition":{"x":0.80891347,"y":0.27194604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.52574,"y":89.96202,"z":-107.040504},"screenPosition":{"x":0.8394055,"y":0.28219706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.13258,"y":90.7396,"z":-107.040504},"screenPosition":{"x":0.8690502,"y":0.29216322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.49046,"y":91.83971,"z":-106.04157},"screenPosition":{"x":0.8988751,"y":0.30218998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.05626,"y":92.38899,"z":-107.040504},"screenPosition":{"x":0.931932,"y":0.31330323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.95694,"y":90.8743,"z":-105.224976},"screenPosition":{"x":0.91944593,"y":0.33756846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.6565,"y":88.79668,"z":-104.52855},"screenPosition":{"x":0.8866798,"y":0.3482398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.86633,"y":87.50185,"z":-104.2652},"screenPosition":{"x":0.8548767,"y":0.34574875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.65111,"y":86.10609,"z":-103.89272},"screenPosition":{"x":0.8265036,"y":0.3478092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.19788,"y":84.786156,"z":-103.519554},"screenPosition":{"x":0.801067,"y":0.35087833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.40747,"y":82.66422,"z":-102.878555},"screenPosition":{"x":0.76291513,"y":0.35801306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.6991,"y":80.952896,"z":-102.28884},"screenPosition":{"x":0.73699707,"y":0.36766344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.92241,"y":78.199814,"z":-101.21339},"screenPosition":{"x":0.7037554,"y":0.38997802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.77232,"y":77.574554,"z":-101.05399},"screenPosition":{"x":0.69006556,"y":0.39065874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.58842,"y":77.669075,"z":-101.21821},"screenPosition":{"x":0.68310374,"y":0.38295075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.1866,"y":77.75078,"z":-101.49259},"screenPosition":{"x":0.6675119,"y":0.3694716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.26102,"y":78.50794,"z":-102.146},"screenPosition":{"x":0.6533103,"y":0.3439771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.33861,"y":79.53636,"z":-103.072075},"screenPosition":{"x":0.6307629,"y":0.30755892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.46373,"y":79.21387,"z":-103.24008},"screenPosition":{"x":0.6072642,"y":0.29442722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.48967,"y":78.01355,"z":-103.140945},"screenPosition":{"x":0.5681137,"y":0.28435236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.85254,"y":76.78813,"z":-102.93199},"screenPosition":{"x":0.53532976,"y":0.27983773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.58272,"y":73.71948,"z":-101.639305},"screenPosition":{"x":0.5045431,"y":0.30974224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.79993,"y":71.25099,"z":-100.39618},"screenPosition":{"x":0.49333173,"y":0.34468418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.7762,"y":69.41416,"z":-99.25737},"screenPosition":{"x":0.49924648,"y":0.38213563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.63371,"y":68.442345,"z":-98.49586},"screenPosition":{"x":0.51272416,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.0833,"y":67.83682,"z":-97.841064},"screenPosition":{"x":0.5335581,"y":0.43777466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.09114,"y":68.31737,"z":-97.6166},"screenPosition":{"x":0.5664954,"y":0.45604122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.10242,"y":69.89626,"z":-98.042435},"screenPosition":{"x":0.5986445,"y":0.45338514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.90971,"y":71.65831,"z":-98.52164},"screenPosition":{"x":0.6338657,"y":0.4503037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.09456,"y":74.8722,"z":-99.86803},"screenPosition":{"x":0.6666081,"y":0.41938433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.3563,"y":76.63321,"z":-101.00753},"screenPosition":{"x":0.65757245,"y":0.38099456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.11069,"y":77.05558,"z":-101.60896},"screenPosition":{"x":0.6337529,"y":0.35412565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.72575,"y":76.777405,"z":-101.72154},"screenPosition":{"x":0.61512357,"y":0.34480828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.00438,"y":78.17852,"z":-102.69925},"screenPosition":{"x":0.60319346,"y":0.31056434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.55481,"y":78.78404,"z":-103.35404},"screenPosition":{"x":0.5829327,"y":0.28309023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.54402,"y":78.859344,"z":-103.6835},"screenPosition":{"x":0.56417847,"y":0.26613408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.19336,"y":79.51559,"z":-104.22778},"screenPosition":{"x":0.55290174,"y":0.24539399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.30182,"y":80.38008,"z":-104.93524},"screenPosition":{"x":0.5386825,"y":0.21858321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.41638,"y":80.959984,"z":-105.81036},"screenPosition":{"x":0.5046742,"y":0.16966483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.45581,"y":78.30142,"z":-104.899124},"screenPosition":{"x":0.46184388,"y":0.19387585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.26778,"y":74.81628,"z":-103.280075},"screenPosition":{"x":0.43694228,"y":0.2359218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.57019,"y":73.029655,"z":-102.3609},"screenPosition":{"x":0.4301239,"y":0.2622528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.53568,"y":71.26813,"z":-101.55155},"screenPosition":{"x":0.41693893,"y":0.28302363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.14075,"y":68.52197,"z":-100.09085},"screenPosition":{"x":0.40965092,"y":0.32605985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.69513,"y":66.855484,"z":-99.11556},"screenPosition":{"x":0.41115484,"y":0.35693622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.45348,"y":65.005844,"z":-98.086914},"screenPosition":{"x":0.4092347,"y":0.38832307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.93367,"y":63.409286,"z":-96.83586},"screenPosition":{"x":0.43179408,"y":0.43486524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.9616,"y":63.8012,"z":-96.722244},"screenPosition":{"x":0.45419466,"y":0.4460266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.05441,"y":64.136505,"z":-96.44408},"screenPosition":{"x":0.48564532,"y":0.46516967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.38594,"y":66.8773,"z":-97.299545},"screenPosition":{"x":0.53308845,"y":0.45447987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.00198,"y":69.90752,"z":-98.92273},"screenPosition":{"x":0.54019785,"y":0.40646037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.06561,"y":70.73998,"z":-99.90561},"screenPosition":{"x":0.5065642,"y":0.36440942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.90108,"y":68.264565,"z":-99.04772},"screenPosition":{"x":0.4693991,"y":0.3786297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.52621,"y":65.42978,"z":-97.69788},"screenPosition":{"x":0.45133963,"y":0.41459265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.06664,"y":63.567333,"z":-96.779396},"screenPosition":{"x":0.44149154,"y":0.439964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.94691,"y":61.123943,"z":-95.6461},"screenPosition":{"x":0.4240067,"y":0.46929666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.12247,"y":58.894684,"z":-94.95105},"screenPosition":{"x":0.3853674,"y":0.47795063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.76103,"y":59.62623,"z":-95.82479},"screenPosition":{"x":0.35499102,"y":0.44052988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.03648,"y":60.75609,"z":-96.52984},"screenPosition":{"x":0.35104984,"y":0.4172496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.12535,"y":63.36341,"z":-97.88175},"screenPosition":{"x":0.36026424,"y":0.37832433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.296,"y":65.554245,"z":-98.907295},"screenPosition":{"x":0.37543428,"y":0.35141286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.41573,"y":67.997635,"z":-100.040596},"screenPosition":{"x":0.39301223,"y":0.32203114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.43016,"y":69.84779,"z":-100.73909},"screenPosition":{"x":0.4169686,"y":0.30833364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.32266,"y":72.2917,"z":-101.54224},"screenPosition":{"x":0.45658284,"y":0.29664126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.61676,"y":73.826805,"z":-101.69335},"screenPosition":{"x":0.5049863,"y":0.30826557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.04308,"y":62.125706,"z":-97.452805},"screenPosition":{"x":0.341717,"y":0.38537067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.95026,"y":61.790398,"z":-97.73098},"screenPosition":{"x":0.31038353,"y":0.36617437},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-054225/brain-CAFBE4-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.9528145840538844,0.3035403561187332,0.002760547325431975,0.0,0.2725071828717177,-0.859337028773083,0.4327582538355213,0.0,0.13373183501897945,-0.41158610664934,-0.9015057809663198,0.0,-154.64114412979237,3.8745900131776736,-196.37571236786007,1.0]},"baseImage":"20190824-054225/base.webp","version":0,"savedAt":1.566625821777E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-074522-v0.json b/data/mapping/BAAAHS/dwayman/20190824-074522-v0.json new file mode 100644 index 0000000000..3f425f5f3c --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-074522-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566632722099E12,"surfaces":[{"brainId":"CAFBE4","panelName":"18D","pixels":[{"modelPosition":{"x":-130.76689,"y":94.25103,"z":-107.07848},"screenPosition":{"x":0.9985087,"y":0.33380672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.24849,"y":91.81821,"z":-106.22036},"screenPosition":{"x":0.9855016,"y":0.36449486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.31349,"y":90.0805,"z":-104.48524},"screenPosition":{"x":0.95980096,"y":0.38205424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.77751,"y":87.48143,"z":-104.4344},"screenPosition":{"x":0.9167445,"y":0.38865602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.71594,"y":85.37131,"z":-103.61022},"screenPosition":{"x":0.89125806,"y":0.40575287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.61238,"y":83.960335,"z":-102.017265},"screenPosition":{"x":0.86534643,"y":0.423135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.34923,"y":82.3504,"z":-101.39155},"screenPosition":{"x":0.84601134,"y":0.4361054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.40785,"y":80.17887,"z":-100.55717},"screenPosition":{"x":0.8197568,"y":0.45371756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.34952,"y":77.20094,"z":-100.41903},"screenPosition":{"x":0.79257524,"y":0.47195157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.30945,"y":75.56432,"z":-98.73247},"screenPosition":{"x":0.7648975,"y":0.49051842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.43567,"y":73.59873,"z":-98.00214},"screenPosition":{"x":0.74065304,"y":0.5067822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.52808,"y":71.530174,"z":-97.21978},"screenPosition":{"x":0.7153782,"y":0.52373713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.5867,"y":69.35864,"z":-96.3854},"screenPosition":{"x":0.68908465,"y":0.54137546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.71292,"y":67.39305,"z":-95.65507},"screenPosition":{"x":0.66478044,"y":0.5576793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.67824,"y":65.70827,"z":-95.02907},"screenPosition":{"x":0.63992786,"y":0.561101},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-146.97733,"y":61.53372,"z":-93.46421},"screenPosition":{"x":0.58512926,"y":0.5914084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.94266,"y":59.84893,"z":-92.83821},"screenPosition":{"x":0.5626428,"y":0.6033425},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-149.67052,"y":55.861523,"z":-91.27406},"screenPosition":{"x":0.51493186,"y":0.6360107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.76294,"y":53.79296,"z":-90.49171},"screenPosition":{"x":0.4882413,"y":0.65140045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.08383,"y":51.649548,"z":-89.70907},"screenPosition":{"x":0.45871574,"y":0.6658459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.1659,"y":50.283173,"z":-89.394104},"screenPosition":{"x":0.42762724,"y":0.6652024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.4999,"y":49.647095,"z":-89.598274},"screenPosition":{"x":0.38976207,"y":0.64611477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.91046,"y":51.594433,"z":-90.844925},"screenPosition":{"x":0.38086918,"y":0.6043039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.57446,"y":55.582027,"z":-92.61564},"screenPosition":{"x":0.41481283,"y":0.560575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.93155,"y":56.43336,"z":-92.46391},"screenPosition":{"x":0.4573869,"y":0.57961255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.97072,"y":55.12247,"z":-91.42621},"screenPosition":{"x":0.47661033,"y":0.6183897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.56987,"y":52.744812,"z":-90.28121},"screenPosition":{"x":0.46231806,"y":0.6492402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.4,"y":50.648136,"z":-89.44711},"screenPosition":{"x":0.43771797,"y":0.6668157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.61227,"y":48.981964,"z":-88.7179},"screenPosition":{"x":0.4231122,"y":0.68474144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.736,"y":46.660538,"z":-87.6764},"screenPosition":{"x":0.4037937,"y":0.71045834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.07536,"y":44.6106,"z":-86.79083},"screenPosition":{"x":0.3849645,"y":0.731926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.34962,"y":42.710556,"z":-86.11239},"screenPosition":{"x":0.35776913,"y":0.74391025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.44453,"y":40.997837,"z":-85.641205},"screenPosition":{"x":0.32389405,"y":0.7471947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.36345,"y":41.410095,"z":-86.26243},"screenPosition":{"x":0.2981848,"y":0.71920663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.30894,"y":42.71149,"z":-87.14518},"screenPosition":{"x":0.2889325,"y":0.6886069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.62373,"y":44.78973,"z":-88.289055},"screenPosition":{"x":0.291808,"y":0.65381473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.55228,"y":47.307606,"z":-89.279655},"screenPosition":{"x":0.32181802,"y":0.63319474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.23137,"y":49.45102,"z":-90.062294},"screenPosition":{"x":0.3513436,"y":0.6187493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.77751,"y":49.684708,"z":-89.80497},"screenPosition":{"x":0.37741226,"y":0.63552624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.83763,"y":48.82313,"z":-88.9755},"screenPosition":{"x":0.39977297,"y":0.668808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.47621,"y":46.988262,"z":-87.93583},"screenPosition":{"x":0.39925674,"y":0.70107555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.1583,"y":44.82604,"z":-87.04984},"screenPosition":{"x":0.37590608,"y":0.72081524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.4454,"y":42.579655,"z":-86.21518},"screenPosition":{"x":0.34592414,"y":0.7367273},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-159.78888,"y":39.659576,"z":-85.37798},"screenPosition":{"x":0.29042685,"y":0.7441402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.63747,"y":37.656376,"z":-84.440956},"screenPosition":{"x":0.27647835,"y":0.7683531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.83441,"y":35.98071,"z":-83.55679},"screenPosition":{"x":0.271559,"y":0.7941926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.38692,"y":33.84642,"z":-82.51599},"screenPosition":{"x":0.26341578,"y":0.8269239},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-164.84538,"y":28.08112,"z":-80.84189},"screenPosition":{"x":0.15149802,"y":0.8386892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.61603,"y":26.574156,"z":-80.268196},"screenPosition":{"x":0.13230297,"y":0.85010093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.70595,"y":24.149757,"z":-79.17467},"screenPosition":{"x":0.112796985,"y":0.877596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.06552,"y":25.35693,"z":-79.33412},"screenPosition":{"x":0.14818652,"y":0.8845282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.13399,"y":27.144691,"z":-80.012146},"screenPosition":{"x":0.17112932,"y":0.8711274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.61528,"y":29.381952,"z":-81.10497},"screenPosition":{"x":0.18354769,"y":0.84127146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.36607,"y":30.861172,"z":-82.04003},"screenPosition":{"x":0.17758678,"y":0.81014943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.01164,"y":26.386461,"z":-79.64782},"screenPosition":{"x":0.17284226,"y":0.8876827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.1139,"y":28.277193,"z":-80.37787},"screenPosition":{"x":0.19572845,"y":0.8723301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.47845,"y":30.196043,"z":-81.15967},"screenPosition":{"x":0.21093693,"y":0.84877616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.77791,"y":32.26479,"z":-82.14858},"screenPosition":{"x":0.22386013,"y":0.8223257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.53433,"y":34.183826,"z":-83.13693},"screenPosition":{"x":0.23111326,"y":0.7939866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.72926,"y":35.859676,"z":-84.22765},"screenPosition":{"x":0.22226883,"y":0.757048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.66664,"y":36.365414,"z":-84.74595},"screenPosition":{"x":0.20699665,"y":0.7355563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.91296,"y":36.655895,"z":-85.21179},"screenPosition":{"x":0.18703127,"y":0.7142943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.23973,"y":36.805977,"z":-85.625465},"screenPosition":{"x":0.16513176,"y":0.69431096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.08295,"y":36.216637,"z":-85.778175},"screenPosition":{"x":0.13248032,"y":0.6785787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.18596,"y":35.299572,"z":-85.671455},"screenPosition":{"x":0.10463473,"y":0.67254066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.93814,"y":33.699135,"z":-85.20069},"screenPosition":{"x":0.07516715,"y":0.6770438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.1786,"y":31.69612,"z":-84.47022},"screenPosition":{"x":0.047360513,"y":0.69069254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.63222,"y":29.608753,"z":-83.58451},"screenPosition":{"x":0.027097926,"y":0.71108973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.38503,"y":27.736454,"z":-82.54469},"screenPosition":{"x":0.0248055,"y":0.7430711},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-173.06612,"y":26.52835,"z":-81.352455},"screenPosition":{"x":0.058252595,"y":0.7914422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.17874,"y":27.716902,"z":-81.61511},"screenPosition":{"x":0.08604971,"y":0.79260796},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-169.30284,"y":31.638767,"z":-83.12738},"screenPosition":{"x":0.13480696,"y":0.7616051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.62573,"y":34.512665,"z":-84.63571},"screenPosition":{"x":0.14370343,"y":0.7179283},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-176.0161,"y":33.202896,"z":-84.83735},"screenPosition":{"x":0.08032289,"y":0.6903415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.65404,"y":31.639885,"z":-84.36673},"screenPosition":{"x":0.052127637,"y":0.6955028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.44002,"y":30.14242,"z":-83.94799},"screenPosition":{"x":0.022951731,"y":0.6987489},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-174.0024,"y":23.59859,"z":-80.15375},"screenPosition":{"x":0.026755566,"y":0.817651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.16167,"y":24.54377,"z":-80.31222},"screenPosition":{"x":0.05201281,"y":0.8216174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.00165,"y":26.406385,"z":-80.99052},"screenPosition":{"x":0.077928714,"y":0.8088368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.74522,"y":28.671764,"z":-82.13509},"screenPosition":{"x":0.087778166,"y":0.7769968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.08008,"y":29.617504,"z":-82.91323},"screenPosition":{"x":0.07194308,"y":0.74744177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.51299,"y":28.934502,"z":-82.96231},"screenPosition":{"x":0.0426315,"y":0.73605937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.69395,"y":27.5212,"z":-82.49225},"screenPosition":{"x":0.02019009,"y":0.74300385},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-172.8647,"y":22.830864,"z":-79.634476},"screenPosition":{"x":0.0320749,"y":0.835658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.36195,"y":24.805761,"z":-80.3132},"screenPosition":{"x":0.06188329,"y":0.82502544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.6614,"y":26.874508,"z":-81.30212},"screenPosition":{"x":0.0748065,"y":0.798575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.4323,"y":27.221224,"z":-81.87145},"screenPosition":{"x":0.050058406,"y":0.7725258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.46523,"y":25.742378,"z":-81.3495},"screenPosition":{"x":0.028484667,"y":0.7815265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.05714,"y":24.150877,"z":-80.41402},"screenPosition":{"x":0.030193018,"y":0.81123203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.99266,"y":24.028912,"z":-80.052086},"screenPosition":{"x":0.04990034,"y":0.82861346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.54605,"y":23.476439,"z":-79.58526},"screenPosition":{"x":0.05974696,"y":0.8469755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.78488,"y":22.699402,"z":-79.117584},"screenPosition":{"x":0.061309896,"y":0.86206436},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-169.58347,"y":19.001915,"z":-77.399605},"screenPosition":{"x":0.0349102,"y":0.90668744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.59944,"y":18.739552,"z":-76.985504},"screenPosition":{"x":0.05252221,"y":0.92550355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.75871,"y":19.68473,"z":-77.14397},"screenPosition":{"x":0.07798911,"y":0.9291305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.94142,"y":21.435064,"z":-77.82185},"screenPosition":{"x":0.09951437,"y":0.9152576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.17328,"y":23.297867,"z":-78.70672},"screenPosition":{"x":0.11152488,"y":0.8917405},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-168.75533,"y":26.115906,"z":-80.52467},"screenPosition":{"x":0.097729184,"y":0.83049095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.35722,"y":25.947762,"z":-80.83388},"screenPosition":{"x":0.0708294,"y":0.811495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.77141,"y":23.317606,"z":-79.84286},"screenPosition":{"x":0.03651334,"y":0.8311429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.32954,"y":21.623135,"z":-78.85535},"screenPosition":{"x":0.03776534,"y":0.8623151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.84663,"y":20.61185,"z":-78.02532},"screenPosition":{"x":0.054561596,"y":0.893809},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-166.24336,"y":23.85965,"z":-79.12194},"screenPosition":{"x":0.105282195,"y":0.8766029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.9949,"y":30.899904,"z":-83.486084},"screenPosition":{"x":0.08263301,"y":0.733197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.97083,"y":30.36661,"z":-83.53572},"screenPosition":{"x":0.05899151,"y":0.72370327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.34424,"y":30.273321,"z":-83.84521},"screenPosition":{"x":0.03479672,"y":0.70593184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.90036,"y":31.930367,"z":-84.83257},"screenPosition":{"x":0.032127194,"y":0.6742875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.44675,"y":34.017735,"z":-85.71828},"screenPosition":{"x":0.05264282,"y":0.6536035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.40097,"y":35.842922,"z":-86.39645},"screenPosition":{"x":0.077080384,"y":0.64059496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.42754,"y":36.73205,"z":-86.65798},"screenPosition":{"x":0.09346008,"y":0.63806325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.7583,"y":38.54793,"z":-87.38775},"screenPosition":{"x":0.11405459,"y":0.6222142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.74881,"y":40.831932,"z":-88.42911},"screenPosition":{"x":0.13165629,"y":0.5957509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.55188,"y":42.507595,"z":-89.31327},"screenPosition":{"x":0.1365792,"y":0.569873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.06136,"y":44.408012,"z":-90.40483},"screenPosition":{"x":0.13625261,"y":0.53576106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.3552,"y":46.03694,"z":-91.34046},"screenPosition":{"x":0.13594906,"y":0.5065341},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.62245,"y":46.776737,"z":-92.01455},"screenPosition":{"x":0.11920127,"y":0.4799124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.32326,"y":46.56167,"z":-92.16866},"screenPosition":{"x":0.100768514,"y":0.46891156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.58965,"y":45.719646,"z":-92.268776},"screenPosition":{"x":0.06194716,"y":0.45274758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.87675,"y":43.473263,"z":-91.43411},"screenPosition":{"x":0.03196524,"y":0.46865967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.34882,"y":41.47937,"z":-90.44548},"screenPosition":{"x":0.02187708,"y":0.49605444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.21587,"y":39.569645,"z":-89.405525},"screenPosition":{"x":0.018420171,"y":0.5272768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.57932,"y":38.052998,"z":-88.47032},"screenPosition":{"x":0.022963565,"y":0.55792665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.09166,"y":38.183716,"z":-88.16097},"screenPosition":{"x":0.04857588,"y":0.57617027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.64366,"y":40.7109,"z":-89.09997},"screenPosition":{"x":0.082305536,"y":0.55826914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.85144,"y":42.04041,"z":-90.03447},"screenPosition":{"x":0.07067454,"y":0.5252584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.32288,"y":40.31838,"z":-89.61489},"screenPosition":{"x":0.033003252,"y":0.5256597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.72984,"y":38.47438,"z":-88.833374},"screenPosition":{"x":0.005680615,"y":0.54361856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.36841,"y":36.63951,"z":-87.7937},"screenPosition":{"x":0.0060139154,"y":0.5755148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.82265,"y":34.280285,"z":-86.338936},"screenPosition":{"x":0.02126348,"y":0.6237267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.59727,"y":34.439117,"z":-86.08134},"screenPosition":{"x":0.044497102,"y":0.6395593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.27388,"y":36.226692,"z":-86.5528},"screenPosition":{"x":0.08131749,"y":0.63710433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.61275,"y":38.838226,"z":-87.64703},"screenPosition":{"x":0.107800804,"y":0.61208504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.37166,"y":41.113102,"z":-88.94656},"screenPosition":{"x":0.10786938,"y":0.57164055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.24869,"y":40.62673,"z":-89.15129},"screenPosition":{"x":0.0757283,"y":0.554419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.28635,"y":38.005886,"z":-88.108665},"screenPosition":{"x":0.04533874,"y":0.5766669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.6135,"y":36.03043,"z":-86.810265},"screenPosition":{"x":0.056556076,"y":0.62091446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.76465,"y":36.179955,"z":-86.60427},"screenPosition":{"x":0.076015756,"y":0.633842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.8088,"y":35.58074,"z":-86.1889},"screenPosition":{"x":0.08096493,"y":0.64829904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.27364,"y":34.373013,"z":-85.409775},"screenPosition":{"x":0.08676025,"y":0.6746802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.2139,"y":33.109047,"z":-84.52716},"screenPosition":{"x":0.09743008,"y":0.705752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.98044,"y":32.472225,"z":-83.9051},"screenPosition":{"x":0.114634216,"y":0.730907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.15729,"y":31.929062,"z":-83.386665},"screenPosition":{"x":0.12849848,"y":0.75171214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.49504,"y":31.1051,"z":-82.7639},"screenPosition":{"x":0.13861501,"y":0.7745063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.27528,"y":31.703753,"z":-82.559586},"screenPosition":{"x":0.17513956,"y":0.79258496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.30746,"y":33.032703,"z":-82.87441},"screenPosition":{"x":0.20473365,"y":0.793293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.90611,"y":35.316513,"z":-83.70922},"screenPosition":{"x":0.2361331,"y":0.7778531},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-166.38927,"y":38.181477,"z":-85.682274},"screenPosition":{"x":0.2137838,"y":0.70889825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.72888,"y":37.985218,"z":-85.939735},"screenPosition":{"x":0.18913266,"y":0.6925935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.32353,"y":38.603233,"z":-86.45845},"screenPosition":{"x":0.17811732,"y":0.67267054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.06624,"y":39.286797,"z":-87.029045},"screenPosition":{"x":0.16611303,"y":0.65093315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.3335,"y":40.026592,"z":-87.70313},"screenPosition":{"x":0.14936525,"y":0.62431145},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-179.08032,"y":39.84001,"z":-88.322105},"screenPosition":{"x":0.10097566,"y":0.58876854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.20602,"y":42.5359,"z":-89.57158},"screenPosition":{"x":0.120433174,"y":0.55640125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.57059,"y":44.45475,"z":-90.35337},"screenPosition":{"x":0.14145362,"y":0.5391228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.03653,"y":46.682514,"z":-91.291245},"screenPosition":{"x":0.16385508,"y":0.5174393},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-185.38524,"y":46.327793,"z":-92.21942},"screenPosition":{"x":0.0884237,"y":0.4631856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.60674,"y":48.892776,"z":-93.57168},"screenPosition":{"x":0.096036226,"y":0.42363536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.88336,"y":49.88451,"z":-93.47212},"screenPosition":{"x":0.14048418,"y":0.44167838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.82999,"y":46.252567,"z":-91.80602},"screenPosition":{"x":0.113155805,"y":0.48436588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.91331,"y":44.34247,"z":-90.35295},"screenPosition":{"x":0.13721317,"y":0.5376998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.42566,"y":44.473183,"z":-90.0436},"screenPosition":{"x":0.16281338,"y":0.55594987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.51733,"y":45.21242,"z":-90.098015},"screenPosition":{"x":0.18737076,"y":0.5625031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.38052,"y":46.026512,"z":-90.15271},"screenPosition":{"x":0.21475682,"y":0.57001483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.71103,"y":45.988712,"z":-89.739456},"screenPosition":{"x":0.24087395,"y":0.591664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.37616,"y":45.042973,"z":-88.96131},"screenPosition":{"x":0.25670904,"y":0.62121904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.25133,"y":43.9289,"z":-88.28582},"screenPosition":{"x":0.2592816,"y":0.643119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.27203,"y":42.52454,"z":-87.351036},"screenPosition":{"x":0.2680696,"y":0.6751568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.58882,"y":41.251263,"z":-86.52003},"screenPosition":{"x":0.2749512,"y":0.703374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.32878,"y":39.725307,"z":-85.63643},"screenPosition":{"x":0.27569836,"y":0.7311407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.03494,"y":38.09638,"z":-84.700806},"screenPosition":{"x":0.2759892,"y":0.760374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.7017,"y":35.924664,"z":-83.65987},"screenPosition":{"x":0.26260963,"y":0.78829116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.1215,"y":33.734325,"z":-82.72213},"screenPosition":{"x":0.24163766,"y":0.8104418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.21892,"y":32.377445,"z":-82.56212},"screenPosition":{"x":0.20059934,"y":0.80124116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.77415,"y":32.45267,"z":-82.97552},"screenPosition":{"x":0.17587842,"y":0.78044397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.88528,"y":32.331264,"z":-83.23326},"screenPosition":{"x":0.15406233,"y":0.76508355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.49529,"y":32.95878,"z":-83.90693},"screenPosition":{"x":0.13306198,"y":0.73704535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.6483,"y":33.736004,"z":-84.581154},"screenPosition":{"x":0.11773172,"y":0.71089584},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-175.76054,"y":37.05009,"z":-86.55589},"screenPosition":{"x":0.11239267,"y":0.6476071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.42929,"y":39.895687,"z":-87.80592},"screenPosition":{"x":0.13752027,"y":0.6171285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.02232,"y":41.739685,"z":-88.58744},"screenPosition":{"x":0.15570568,"y":0.5989057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.02881,"y":43.76132,"z":-89.2147},"screenPosition":{"x":0.1909498,"y":0.5912212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.31517,"y":44.322727,"z":-89.216805},"screenPosition":{"x":0.2122126,"y":0.59830385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.53143,"y":44.322357,"z":-88.80369},"screenPosition":{"x":0.23974726,"y":0.62042516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.51923,"y":44.39684,"z":-88.390854},"screenPosition":{"x":0.27007124,"y":0.6433611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.84886,"y":42.77722,"z":-87.403625},"screenPosition":{"x":0.2741918,"y":0.67556834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.58633,"y":40.895424,"z":-86.208855},"screenPosition":{"x":0.28213573,"y":0.7154794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.229,"y":38.190414,"z":-85.21755},"screenPosition":{"x":0.24511467,"y":0.7339028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.5267,"y":37.095524,"z":-85.058525},"screenPosition":{"x":0.2139777,"y":0.7283871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.14955,"y":37.376698,"z":-85.57597},"screenPosition":{"x":0.19022289,"y":0.70403314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.85371,"y":39.099285,"z":-86.61523},"screenPosition":{"x":0.18656619,"y":0.6706592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.6029,"y":41.80448,"z":-87.81309},"screenPosition":{"x":0.2098138,"y":0.6412095},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-163.85359,"y":41.63522,"z":-86.88294},"screenPosition":{"x":0.26538795,"y":0.6888577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.25807,"y":39.435387,"z":-85.79026},"screenPosition":{"x":0.25438708,"y":0.7191858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.45438,"y":38.03158,"z":-85.47515},"screenPosition":{"x":0.22187695,"y":0.7178468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.09818,"y":38.762066,"z":-86.20084},"screenPosition":{"x":0.20133705,"y":0.6885653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.49673,"y":59.37523,"z":-96.70939},"screenPosition":{"x":0.28643206,"y":0.38993472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.15404,"y":42.749847,"z":-88.178116},"screenPosition":{"x":0.22151232,"y":0.6337364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.74309,"y":42.928047,"z":-88.64354},"screenPosition":{"x":0.19727735,"y":0.6110911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.26927,"y":41.758305,"z":-88.48423},"screenPosition":{"x":0.16330315,"y":0.6046619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.1983,"y":39.614704,"z":-87.49503},"screenPosition":{"x":0.14757168,"y":0.6301169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.86343,"y":38.668964,"z":-86.71689},"screenPosition":{"x":0.16341744,"y":0.6596045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.46434,"y":39.454937,"z":-86.71984},"screenPosition":{"x":0.19314286,"y":0.66964895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.8264,"y":41.01795,"z":-87.19046},"screenPosition":{"x":0.22134785,"y":0.6644758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.63258,"y":42.77759,"z":-87.81674},"screenPosition":{"x":0.24666934,"y":0.6534861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.09854,"y":45.00536,"z":-88.754616},"screenPosition":{"x":0.26905882,"y":0.63180757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.398,"y":47.074104,"z":-89.74353},"screenPosition":{"x":0.28196147,"y":0.60532176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.5857,"y":49.536118,"z":-91.04376},"screenPosition":{"x":0.28913823,"y":0.56727356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.6398,"y":50.360264,"z":-91.873085},"screenPosition":{"x":0.26525435,"y":0.5334188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.69281,"y":47.748913,"z":-90.98541},"screenPosition":{"x":0.2248918,"y":0.54748017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.98303,"y":45.586506,"z":-89.89287},"screenPosition":{"x":0.21531093,"y":0.5782645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.87666,"y":44.565914,"z":-89.11444},"screenPosition":{"x":0.22831015,"y":0.6069033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.00687,"y":44.26612,"z":-88.7002},"screenPosition":{"x":0.24449466,"y":0.6251986},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-164.77565,"y":42.13146,"z":-87.246284},"screenPosition":{"x":0.26007727,"y":0.6757579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.91171,"y":44.125164,"z":-88.02836},"screenPosition":{"x":0.28392208,"y":0.65939724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.45811,"y":46.21253,"z":-88.91406},"screenPosition":{"x":0.30444837,"y":0.63873976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.29497,"y":47.991165,"z":-89.85025},"screenPosition":{"x":0.30982763,"y":0.6113951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.5156,"y":64.268715,"z":-96.572845},"screenPosition":{"x":0.48192194,"y":0.45999062},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-153.4107,"y":64.558075,"z":-95.79934},"screenPosition":{"x":0.544165,"y":0.50508714},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-150.72165,"y":60.991302,"z":-93.77201},"screenPosition":{"x":0.5439242,"y":0.5679708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.0529,"y":58.145706,"z":-92.52198},"screenPosition":{"x":0.5187966,"y":0.5984494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.89027,"y":55.26287,"z":-91.47837},"screenPosition":{"x":0.4784348,"y":0.617372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.4318,"y":54.102623,"z":-91.474014},"screenPosition":{"x":0.43428862,"y":0.60263216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.13034,"y":55.385395,"z":-92.459984},"screenPosition":{"x":0.41759697,"y":0.56635606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.7099,"y":57.847595,"z":-93.96677},"screenPosition":{"x":0.4110852,"y":0.5172474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.31978,"y":61.011044,"z":-94.90816},"screenPosition":{"x":0.4689127,"y":0.5073733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.46509,"y":58.86707,"z":-93.505844},"screenPosition":{"x":0.4806891,"y":0.55500066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.48741,"y":56.23673,"z":-92.30826},"screenPosition":{"x":0.46012327,"y":0.5853742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.21864,"y":54.186974,"z":-91.62925},"screenPosition":{"x":0.42734107,"y":0.595494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.56299,"y":52.848713,"z":-91.36603},"screenPosition":{"x":0.3939378,"y":0.59247017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.47382,"y":52.465317,"z":-91.62279},"screenPosition":{"x":0.36219904,"y":0.5738045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.97768,"y":53.925915,"z":-92.661064},"screenPosition":{"x":0.34864572,"y":0.5369161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.79695,"y":57.192894,"z":-94.27415},"screenPosition":{"x":0.3656276,"y":0.49239329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.41656,"y":59.92602,"z":-95.31719},"screenPosition":{"x":0.4002624,"y":0.4715598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.34984,"y":61.301895,"z":-95.78712},"screenPosition":{"x":0.42138734,"y":0.46402478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.21638,"y":64.05364,"z":-96.72696},"screenPosition":{"x":0.46362212,"y":0.44895676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.90833,"y":65.850716,"z":-97.35338},"screenPosition":{"x":0.49036112,"y":0.43843922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.2003,"y":66.851944,"z":-97.408775},"screenPosition":{"x":0.5243591,"y":0.4483775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.666,"y":67.22603,"z":-97.20362},"screenPosition":{"x":0.5527805,"y":0.4640872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.75519,"y":67.60943,"z":-96.94686},"screenPosition":{"x":0.5845192,"y":0.48275283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.99715,"y":66.91637,"z":-96.221306},"screenPosition":{"x":0.6064808,"y":0.5127299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.64046,"y":63.9395,"z":-94.66095},"screenPosition":{"x":0.5970428,"y":0.5581469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.41608,"y":63.144215,"z":-94.7096},"screenPosition":{"x":0.5634787,"y":0.545348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.96097,"y":63.921623,"z":-95.59039},"screenPosition":{"x":0.5343811,"y":0.5081378},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-158.37515,"y":69.6603,"z":-98.86522},"screenPosition":{"x":0.5346281,"y":0.406336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.9662,"y":66.48698,"z":-97.35577},"screenPosition":{"x":0.51445895,"y":0.4464662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.84448,"y":65.45689,"z":-96.422386},"screenPosition":{"x":0.5374301,"y":0.48325437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.77277,"y":66.121086,"z":-96.26996},"screenPosition":{"x":0.5729166,"y":0.49993098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.7245,"y":67.59043,"z":-96.636955},"screenPosition":{"x":0.6044615,"y":0.49910775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.84523,"y":69.57464,"z":-97.26408},"screenPosition":{"x":0.6382881,"y":0.4909511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.98155,"y":73.42203,"z":-99.18918},"screenPosition":{"x":0.65592986,"y":0.43724304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.26889,"y":73.02932,"z":-99.49754},"screenPosition":{"x":0.62105554,"y":0.41560718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.3138,"y":69.622314,"z":-98.24541},"screenPosition":{"x":0.5746652,"y":0.43900314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.04565,"y":67.3007,"z":-96.997345},"screenPosition":{"x":0.56938285,"y":0.47609222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.83626,"y":67.19717,"z":-96.32564},"screenPosition":{"x":0.60995257,"y":0.5107298},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-144.70119,"y":71.1749,"z":-97.52828},"screenPosition":{"x":0.68167794,"y":0.4973108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.8945,"y":74.07672,"z":-98.8818},"screenPosition":{"x":0.7020481,"y":0.46201012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.14331,"y":74.723045,"z":-99.65881},"screenPosition":{"x":0.6748729,"y":0.42867765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.31056,"y":72.074265,"z":-98.771},"screenPosition":{"x":0.63309443,"y":0.442279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.44214,"y":68.69482,"z":-96.950935},"screenPosition":{"x":0.62562734,"y":0.49644595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.53693,"y":69.518036,"z":-96.74747},"screenPosition":{"x":0.6705801,"y":0.5178945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.8163,"y":72.719284,"z":-98.10211},"screenPosition":{"x":0.7022905,"y":0.48637122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.92107,"y":74.96586,"z":-99.14333},"screenPosition":{"x":0.7185051,"y":0.45939848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.5166,"y":77.16569,"z":-100.23602},"screenPosition":{"x":0.72950596,"y":0.42907032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.26016,"y":79.43107,"z":-101.38059},"screenPosition":{"x":0.7389908,"y":0.3969077},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-137.70256,"y":83.38962,"z":-102.066765},"screenPosition":{"x":0.8447046,"y":0.4107888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.02046,"y":85.551834,"z":-102.95275},"screenPosition":{"x":0.8680553,"y":0.39104915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.96185,"y":87.723366,"z":-103.78713},"screenPosition":{"x":0.89520216,"y":0.3741927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.36581,"y":90.185005,"z":-104.67425},"screenPosition":{"x":0.92989296,"y":0.35823047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.88477,"y":89.80142,"z":-104.72445},"screenPosition":{"x":0.91192156,"y":0.3506255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.26852,"y":89.00595,"z":-104.56654},"screenPosition":{"x":0.8921248,"y":0.34888726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.27014,"y":87.779976,"z":-104.30374},"screenPosition":{"x":0.8617754,"y":0.3475091},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-140.72899,"y":79.88914,"z":-100.91756},"screenPosition":{"x":0.78788674,"y":0.427474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.56412,"y":78.504135,"z":-100.7058},"screenPosition":{"x":0.7492058,"y":0.42106414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.70341,"y":78.04588,"z":-100.96228},"screenPosition":{"x":0.71463203,"y":0.40145415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.73659,"y":78.420715,"z":-101.58336},"screenPosition":{"x":0.68750525,"y":0.37299392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.29358,"y":81.65958,"z":-103.1447},"screenPosition":{"x":0.7065224,"y":0.33099735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.8456,"y":84.18677,"z":-104.083694},"screenPosition":{"x":0.74059546,"y":0.31298107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.4233,"y":86.02126,"z":-104.71026},"screenPosition":{"x":0.768752,"y":0.3029357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.8739,"y":88.23953,"z":-105.49317},"screenPosition":{"x":0.8011126,"y":0.28943464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.76614,"y":90.29859,"z":-106.120575},"screenPosition":{"x":0.8316011,"y":0.28434035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.2935,"y":90.68732,"z":-107.040504},"screenPosition":{"x":0.86516285,"y":0.29166678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.42717,"y":90.22299,"z":-105.29406},"screenPosition":{"x":0.8892458,"y":0.3257129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.87828,"y":87.779785,"z":-104.09718},"screenPosition":{"x":0.87667745,"y":0.35830998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.94975,"y":85.26192,"z":-103.10658},"screenPosition":{"x":0.846744,"y":0.37909427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.38016,"y":84.223076,"z":-102.84448},"screenPosition":{"x":0.82461697,"y":0.37981722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.19994,"y":82.828575,"z":-102.477776},"screenPosition":{"x":0.79590714,"y":0.38158482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.99876,"y":80.98477,"z":-101.90282},"screenPosition":{"x":0.7639544,"y":0.38874698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.11462,"y":79.72137,"z":-101.63988},"screenPosition":{"x":0.7331602,"y":0.38667092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.52657,"y":78.58905,"z":-101.48071},"screenPosition":{"x":0.70076776,"y":0.38064903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.62958,"y":77.67198,"z":-101.373985},"screenPosition":{"x":0.67292213,"y":0.37461105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.91444,"y":76.92344,"z":-101.37118},"screenPosition":{"x":0.6445717,"y":0.36516753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.45435,"y":76.98917,"z":-101.62962},"screenPosition":{"x":0.62984324,"y":0.352168},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-164.80853,"y":72.684654,"z":-101.20035},"screenPosition":{"x":0.49436304,"y":0.31998906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.13954,"y":76.35421,"z":-103.07314},"screenPosition":{"x":0.5089765,"y":0.26702756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.7776,"y":79.18081,"z":-104.01326},"screenPosition":{"x":0.55444396,"y":0.25259265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.98102,"y":79.52678,"z":-103.75636},"screenPosition":{"x":0.58457947,"y":0.27089953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.00734,"y":78.56223,"z":-102.87487},"screenPosition":{"x":0.60677516,"y":0.3056354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.84534,"y":75.40754,"z":-101.26221},"screenPosition":{"x":0.5940458,"y":0.35157472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.45984,"y":73.039375,"z":-100.27217},"screenPosition":{"x":0.5697825,"y":0.37424773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.4042,"y":70.90527,"z":-99.43793},"screenPosition":{"x":0.54405314,"y":0.39157635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.77176,"y":68.518486,"z":-98.551094},"screenPosition":{"x":0.5120103,"y":0.40853786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.6776,"y":67.42341,"z":-98.18551},"screenPosition":{"x":0.49482766,"y":0.41402796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.8971,"y":64.97108,"z":-97.246796},"screenPosition":{"x":0.46357602,"y":0.43296343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.41269,"y":62.64984,"z":-96.41185},"screenPosition":{"x":0.43111607,"y":0.44784114},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-153.3087,"y":56.15219,"z":-91.946465},"screenPosition":{"x":0.4811738,"y":0.6037229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.67375,"y":53.409565,"z":-90.74847},"screenPosition":{"x":0.4565026,"y":0.6327348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.63347,"y":51.284958,"z":-90.069176},"screenPosition":{"x":0.42080212,"y":0.64188594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.06636,"y":50.601955,"z":-90.11825},"screenPosition":{"x":0.3912705,"y":0.6303319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.47357,"y":50.61164,"z":-90.47976},"screenPosition":{"x":0.3676546,"y":0.61118984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.27577,"y":50.705486,"z":-90.789955},"screenPosition":{"x":0.3506449,"y":0.5958549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.87766,"y":50.537342,"z":-91.09916},"screenPosition":{"x":0.32361504,"y":0.5771391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.78125,"y":50.940105,"z":-91.56542},"screenPosition":{"x":0.30782035,"y":0.55728936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.61974,"y":51.492767,"z":-92.23881},"screenPosition":{"x":0.28404152,"y":0.52834594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.04453,"y":50.014107,"z":-91.92342},"screenPosition":{"x":0.2486967,"y":0.5262822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.25117,"y":47.90812,"z":-91.14092},"screenPosition":{"x":0.2205923,"y":0.5412018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.75143,"y":45.577385,"z":-90.151024},"screenPosition":{"x":0.19774872,"y":0.5643413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.87828,"y":43.339935,"z":-88.85164},"screenPosition":{"x":0.19909552,"y":0.6052654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.63757,"y":43.489273,"z":-88.43909},"screenPosition":{"x":0.23229264,"y":0.62920505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.76054,"y":43.97564,"z":-88.23435},"screenPosition":{"x":0.26447785,"y":0.6464177},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-170.95883,"y":55.95798,"z":-94.47607},"screenPosition":{"x":0.30508208,"y":0.46575078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.30406,"y":56.201538,"z":-94.78682},"screenPosition":{"x":0.29364496,"y":0.45222893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.42802,"y":55.733788,"z":-94.88834},"screenPosition":{"x":0.2690423,"y":0.4407964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.68718,"y":55.67793,"z":-95.19797},"screenPosition":{"x":0.24626084,"y":0.42350763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.81926,"y":56.005836,"z":-95.663956},"screenPosition":{"x":0.22769184,"y":0.40274218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.42116,"y":55.837692,"z":-95.97316},"screenPosition":{"x":0.20066202,"y":0.3840264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.35043,"y":55.54777,"z":-96.12699},"screenPosition":{"x":0.17935073,"y":0.37207153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.90569,"y":55.622997,"z":-96.54039},"screenPosition":{"x":0.15465768,"y":0.35090953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.17682,"y":53.638977,"z":-96.11983},"screenPosition":{"x":0.107159555,"y":0.3481264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.29243,"y":50.521893,"z":-94.71386},"screenPosition":{"x":0.08197807,"y":0.38334137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.157,"y":48.25633,"z":-93.362724},"screenPosition":{"x":0.08578634,"y":0.42671072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.77635,"y":49.135777,"z":-93.26275},"screenPosition":{"x":0.1259011,"y":0.4432955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.32025,"y":50.867302,"z":-93.83729},"screenPosition":{"x":0.15360127,"y":0.43471682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.49261,"y":53.31982,"z":-94.98256},"screenPosition":{"x":0.17072856,"y":0.4048107},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-188.21623,"y":54.181767,"z":-96.22514},"screenPosition":{"x":0.12073618,"y":0.3493197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.64888,"y":51.645084,"z":-95.13119},"screenPosition":{"x":0.09705216,"y":0.3754676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.50783,"y":48.9397,"z":-93.72677},"screenPosition":{"x":0.08759692,"y":0.41599938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.41518,"y":49.154583,"z":-93.3661},"screenPosition":{"x":0.11977176,"y":0.4380277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.55685,"y":51.588104,"z":-94.20147},"screenPosition":{"x":0.15681113,"y":0.42446786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.93924,"y":53.87229,"z":-95.44939},"screenPosition":{"x":0.1606605,"y":0.3868888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.03278,"y":55.239227,"z":-96.384026},"screenPosition":{"x":0.15044703,"y":0.35435024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.91628,"y":56.774494,"z":-97.21603},"screenPosition":{"x":0.15351576,"y":0.32951748},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-197.67943,"y":55.643295,"z":-98.2962},"screenPosition":{"x":0.038337596,"y":0.25711498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.83333,"y":58.00234,"z":-99.5444},"screenPosition":{"x":0.045037422,"y":0.22049809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.18503,"y":60.26753,"z":-100.48242},"screenPosition":{"x":0.06884444,"y":0.19929175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.4538,"y":62.317284,"z":-101.16142},"screenPosition":{"x":0.10179688,"y":0.18942544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.91951,"y":62.69137,"z":-100.956276},"screenPosition":{"x":0.12965241,"y":0.20497867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.538,"y":61.989,"z":-100.282326},"screenPosition":{"x":0.14781772,"y":0.23207253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.22408,"y":61.492577,"z":-99.712425},"screenPosition":{"x":0.16689572,"y":0.25623304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.0501,"y":60.266037,"z":-98.829956},"screenPosition":{"x":0.17898306,"y":0.2877771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.29842,"y":57.205,"z":-97.320915},"screenPosition":{"x":0.16292241,"y":0.32939225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.32324,"y":54.9305,"z":-96.43451},"screenPosition":{"x":0.13531065,"y":0.34768963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.41815,"y":53.21778,"z":-95.963326},"screenPosition":{"x":0.10145082,"y":0.35099292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.43262,"y":51.64546,"z":-95.544304},"screenPosition":{"x":0.069434375,"y":0.35326397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.29205,"y":52.64743,"z":-96.42594},"screenPosition":{"x":0.048841905,"y":0.31888688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.72108,"y":54.688248,"z":-97.569664},"screenPosition":{"x":0.05037647,"y":0.2837868},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-193.86613,"y":59.059425,"z":-99.29018},"screenPosition":{"x":0.10229154,"y":0.2476629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.74777,"y":59.96699,"z":-99.24194},"screenPosition":{"x":0.14011106,"y":0.2618868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.29056,"y":58.263023,"z":-98.09948},"screenPosition":{"x":0.15133137,"y":0.301228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.00395,"y":55.847935,"z":-96.954346},"screenPosition":{"x":0.13562159,"y":0.33160627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.38997,"y":53.554626,"z":-95.96459},"screenPosition":{"x":0.11419326,"y":0.35522366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.37064,"y":51.879333,"z":-95.493546},"screenPosition":{"x":0.08173571,"y":0.35898027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.91302,"y":52.300903,"z":-96.06316},"screenPosition":{"x":0.060038395,"y":0.3340954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.5158,"y":53.714577,"z":-96.946335},"screenPosition":{"x":0.054822918,"y":0.30469224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.14513,"y":56.017384,"z":-98.09105},"screenPosition":{"x":0.06628013,"y":0.27289742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.16695,"y":58.048515,"z":-98.87327},"screenPosition":{"x":0.09155314,"y":0.25703546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.8226,"y":59.386776,"z":-99.13649},"screenPosition":{"x":0.12502034,"y":0.26008993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.03076,"y":58.590744,"z":-98.35891},"screenPosition":{"x":0.14660574,"y":0.29176277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.2928,"y":56.765182,"z":-97.267624},"screenPosition":{"x":0.14972499,"y":0.3266458},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-185.25203,"y":50.93322,"z":-94.302284},"screenPosition":{"x":0.12510544,"y":0.41065663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.39821,"y":50.371063,"z":-93.473946},"screenPosition":{"x":0.15893248,"y":0.4478331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.2952,"y":51.288128,"z":-93.580666},"screenPosition":{"x":0.18675753,"y":0.45385465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.1055,"y":52.17763,"z":-94.25532},"screenPosition":{"x":0.17567983,"y":0.42912167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.65164,"y":52.41132,"z":-93.998},"screenPosition":{"x":0.20174849,"y":0.4458986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.05312,"y":54.51712,"z":-94.57394},"screenPosition":{"x":0.24362387,"y":0.44204167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.60512,"y":57.044304,"z":-95.51293},"screenPosition":{"x":0.27735353,"y":0.42414057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.84732,"y":58.204926,"z":-95.930405},"screenPosition":{"x":0.29376203,"y":0.4166567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.71886,"y":61.66835,"z":-97.49259},"screenPosition":{"x":0.32160935,"y":0.3773988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.8881,"y":64.03689,"z":-98.895744},"screenPosition":{"x":0.31835642,"y":0.33258367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.41765,"y":64.8048,"z":-99.62158},"screenPosition":{"x":0.29922995,"y":0.30355096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.79916,"y":65.50717,"z":-100.29553},"screenPosition":{"x":0.28106463,"y":0.2764571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.74628,"y":65.58258,"z":-100.91549},"screenPosition":{"x":0.2425977,"y":0.24421945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.61969,"y":61.30488,"z":-99.09205},"screenPosition":{"x":0.20112818,"y":0.2872798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.89458,"y":59.132977,"z":-97.84455},"screenPosition":{"x":0.20149787,"y":0.32603192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.53152,"y":58.524082,"z":-97.06767},"screenPosition":{"x":0.23009063,"y":0.35983655},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-176.59114,"y":62.323982,"z":-98.218},"screenPosition":{"x":0.29819837,"y":0.34702128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.88585,"y":65.53473,"z":-99.7276},"screenPosition":{"x":0.31998792,"y":0.30722806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.1853,"y":67.60347,"z":-100.716515},"screenPosition":{"x":0.33291113,"y":0.28077763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.64252,"y":69.30744,"z":-101.85898},"screenPosition":{"x":0.321688,"y":0.24142799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.50282,"y":71.891235,"z":-103.31458},"screenPosition":{"x":0.32312563,"y":0.1965835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.20612,"y":72.032005,"z":-103.77987},"screenPosition":{"x":0.29746485,"y":0.17346765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.66945,"y":69.51432,"z":-102.99583},"screenPosition":{"x":0.25376406,"y":0.1831913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.61133,"y":67.024376,"z":-101.85041},"screenPosition":{"x":0.23521926,"y":0.21262524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.50432,"y":66.27564,"z":-101.641045},"screenPosition":{"x":0.22063617,"y":0.21424238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.91377,"y":64.78748,"z":-101.1707},"screenPosition":{"x":0.19526623,"y":0.22035988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.21373,"y":62.194756,"z":-100.17982},"screenPosition":{"x":0.16249773,"y":0.24019983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.5819,"y":59.53611,"z":-98.72393},"screenPosition":{"x":0.15822507,"y":0.28409997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.01605,"y":58.309387,"z":-97.6349},"screenPosition":{"x":0.18407975,"y":0.3267047},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-183.81613,"y":64.29069,"z":-100.18768},"screenPosition":{"x":0.24187888,"y":0.2666417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.40044,"y":65.610886,"z":-101.17379},"screenPosition":{"x":0.22645168,"y":0.23074774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.02327,"y":65.89206,"z":-101.69124},"screenPosition":{"x":0.20269081,"y":0.20713429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.65086,"y":65.03123,"z":-101.68801},"screenPosition":{"x":0.1700618,"y":0.19577736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.22345,"y":61.764435,"z":-100.28148},"screenPosition":{"x":0.13936722,"y":0.22942449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.82822,"y":59.82659,"z":-99.18978},"screenPosition":{"x":0.13823438,"y":0.26287284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.58664,"y":58.39411,"z":-98.203255},"screenPosition":{"x":0.14943892,"y":0.29743668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.71436,"y":57.73848,"z":-97.47784},"screenPosition":{"x":0.17279594,"y":0.3278288},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-178.5299,"y":59.75006,"z":-97.330475},"screenPosition":{"x":0.25930527,"y":0.36147448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.55946,"y":56.333557,"z":-95.923386},"screenPosition":{"x":0.22288358,"y":0.3930959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.66722,"y":54.274494,"z":-95.29598},"screenPosition":{"x":0.18622434,"y":0.4002602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.72134,"y":55.098644,"z":-96.125305},"screenPosition":{"x":0.16234049,"y":0.36640543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.17133,"y":57.58877,"z":-97.47728},"screenPosition":{"x":0.16713338,"y":0.32596222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.46355,"y":60.44368,"z":-98.6757},"screenPosition":{"x":0.19604178,"y":0.2983154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.64938,"y":62.27799,"z":-99.0957},"screenPosition":{"x":0.23796563,"y":0.2993307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.6989,"y":60.26492,"z":-97.5906},"screenPosition":{"x":0.26156268,"y":0.3542193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.02455,"y":56.979507,"z":-96.287285},"screenPosition":{"x":0.223242,"y":0.3819071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.09875,"y":56.67115,"z":-96.75088},"screenPosition":{"x":0.18057437,"y":0.35305482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.16185,"y":59.872772,"z":-98.51864},"screenPosition":{"x":0.18475305,"y":0.29942772},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-184.11221,"y":64.421776,"z":-100.29146},"screenPosition":{"x":0.23994745,"y":0.2628592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.24579,"y":66.05964,"z":-100.76236},"screenPosition":{"x":0.27099657,"y":0.2585352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.14276,"y":66.97671,"z":-100.86908},"screenPosition":{"x":0.29884216,"y":0.2645732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.9931,"y":68.13714,"z":-101.079994},"screenPosition":{"x":0.32898998,"y":0.26820704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.39932,"y":69.10094,"z":-101.135254},"screenPosition":{"x":0.36200777,"y":0.2776481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.61559,"y":69.10056,"z":-100.72214},"screenPosition":{"x":0.38961196,"y":0.29966468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.41817,"y":67.06888,"z":-99.320244},"screenPosition":{"x":0.40564093,"y":0.34870863},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-173.33286,"y":63.961662,"z":-98.48235},"screenPosition":{"x":0.34305602,"y":0.35376066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.69254,"y":62.632896,"z":-98.374084},"screenPosition":{"x":0.2995863,"y":0.3425872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.38466,"y":76.03637,"z":-107.040504},"screenPosition":{"x":0.30850017,"y":0.10371372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.87726,"y":75.22648,"z":-107.040504},"screenPosition":{"x":0.27762374,"y":0.093333475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.3716,"y":74.588425,"z":-106.00996},"screenPosition":{"x":0.24804363,"y":0.08338903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.53162,"y":72.72581,"z":-105.33166},"screenPosition":{"x":0.22043402,"y":0.09924792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.64499,"y":71.10657,"z":-104.757545},"screenPosition":{"x":0.1969864,"y":0.10924313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.98685,"y":69.41247,"z":-104.18315},"screenPosition":{"x":0.17071049,"y":0.11834787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.11307,"y":67.44688,"z":-103.45282},"screenPosition":{"x":0.14446957,"y":0.13221706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.34067,"y":65.79021,"z":-102.87856},"screenPosition":{"x":0.119604446,"y":0.1417401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.91101,"y":64.02125,"z":-102.303894},"screenPosition":{"x":0.09048676,"y":0.1498466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.302,"y":62.43962,"z":-101.93648},"screenPosition":{"x":0.054689337,"y":0.14925332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.10669,"y":62.889305,"z":-102.55784},"screenPosition":{"x":0.030477433,"y":0.12189644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.8994,"y":65.26715,"z":-103.90939},"screenPosition":{"x":0.030922523,"y":0.079826295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.40164,"y":67.95373,"z":-105.210464},"screenPosition":{"x":0.046583824,"y":0.04457578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-205.0341,"y":70.340515,"z":-106.09729},"screenPosition":{"x":0.07957144,"y":0.031464804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.4747,"y":70.808426,"z":-107.040504},"screenPosition":{"x":0.10923325,"y":0.037242178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.44594,"y":71.92265,"z":-107.139},"screenPosition":{"x":0.13763249,"y":0.040438015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.18127,"y":72.658485,"z":-107.139},"screenPosition":{"x":0.16568555,"y":0.049869083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.76085,"y":73.3148,"z":-107.040504},"screenPosition":{"x":0.2047421,"y":0.06883164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.81087,"y":71.537445,"z":-105.27555},"screenPosition":{"x":0.17886958,"y":0.08702149},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.81248,"y":70.31146,"z":-105.01276},"screenPosition":{"x":0.14973675,"y":0.085875355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.66606,"y":69.01994,"z":-104.69807},"screenPosition":{"x":0.121401474,"y":0.08568447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.3716,"y":67.66288,"z":-104.3315},"screenPosition":{"x":0.09410918,"y":0.08792425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.90814,"y":65.79095,"z":-103.704796},"screenPosition":{"x":0.06453514,"y":0.09749743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.55643,"y":63.525757,"z":-102.766785},"screenPosition":{"x":0.040728122,"y":0.11870377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.96089,"y":61.325924,"z":-101.674095},"screenPosition":{"x":0.0297987,"y":0.14916332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.33157,"y":59.023117,"z":-100.52939},"screenPosition":{"x":0.018270051,"y":0.18082672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.48186,"y":57.590824,"z":-99.74942},"screenPosition":{"x":0.01567737,"y":0.20424348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.5436,"y":55.50327,"z":-98.65715},"screenPosition":{"x":0.0024889244,"y":0.23817973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.91988,"y":53.64028,"z":-97.565735},"screenPosition":{"x":0.0028471437,"y":0.27246064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.73306,"y":52.760086,"z":-96.83948},"screenPosition":{"x":0.02555981,"y":0.29818207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.41914,"y":52.26366,"z":-96.26958},"screenPosition":{"x":0.044652946,"y":0.32235765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.28706,"y":51.935753,"z":-95.8036},"screenPosition":{"x":0.063402385,"y":0.34328553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.41728,"y":51.635963,"z":-95.38935},"screenPosition":{"x":0.0794066,"y":0.3614425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.10336,"y":51.139538,"z":-94.81946},"screenPosition":{"x":0.09848349,"y":0.38560194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.90369,"y":50.605686,"z":-94.24942},"screenPosition":{"x":0.11619817,"y":0.40933594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.15288,"y":49.126465,"z":-93.314354},"screenPosition":{"x":0.12213047,"y":0.4404269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-183.86629,"y":46.711376,"z":-92.16922},"screenPosition":{"x":0.10639512,"y":0.4707906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.43663,"y":44.942425,"z":-91.59454},"screenPosition":{"x":0.07727742,"y":0.4788971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.83572,"y":44.15645,"z":-91.5916},"screenPosition":{"x":0.047509495,"y":0.4689814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.25577,"y":43.81979,"z":-91.79689},"screenPosition":{"x":0.020984482,"y":0.45367113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-192.07417,"y":45.50495,"z":-92.836006},"screenPosition":{"x":0.015936267,"y":0.41961575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.70102,"y":47.45192,"z":-93.66955},"screenPosition":{"x":0.03457802,"y":0.39992625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.04213,"y":48.565617,"z":-93.93192},"screenPosition":{"x":0.0595401,"y":0.40014765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.28995,"y":50.166054,"z":-94.40269},"screenPosition":{"x":0.08916261,"y":0.3954467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.6908,"y":52.543713,"z":-95.547676},"screenPosition":{"x":0.10348884,"y":0.36463496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.93149,"y":52.39438,"z":-95.960236},"screenPosition":{"x":0.07037998,"y":0.34072205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.20575,"y":50.494335,"z":-95.28179},"screenPosition":{"x":0.043054774,"y":0.3525704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.12668,"y":47.555077,"z":-93.92813},"screenPosition":{"x":0.021267045,"y":0.3873989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.32161,"y":49.23093,"z":-95.018845},"screenPosition":{"x":0.0036753141,"y":0.351715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.04424,"y":51.046993,"z":-95.95518},"screenPosition":{"x":0.01921939,"y":0.32358783},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-197.48947,"y":54.679123,"z":-97.82783},"screenPosition":{"x":0.03281293,"y":0.26984295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.73666,"y":56.551422,"z":-98.867645},"screenPosition":{"x":0.03485232,"y":0.23814842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.62018,"y":58.08669,"z":-99.69964},"screenPosition":{"x":0.038187604,"y":0.21371324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.94781,"y":59.81859,"z":-100.687294},"screenPosition":{"x":0.038066868,"y":0.18256497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.8933,"y":61.11998,"z":-101.570045},"screenPosition":{"x":0.028814562,"y":0.15196528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.81784,"y":61.972057,"z":-102.24456},"screenPosition":{"x":0.016319338,"y":0.12676011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.69574,"y":63.067505,"z":-103.02326},"screenPosition":{"x":0.0010704612,"y":0.10243545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.86876,"y":63.642994,"z":-104.56927},"screenPosition":{"x":8.0703694E-4,"y":0.07722623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.95612,"y":65.01039,"z":-105.354866},"screenPosition":{"x":5.5050274E-4,"y":0.052676387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.97899,"y":70.47048,"z":-104.96171},"screenPosition":{"x":0.15919627,"y":0.0906733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.26198,"y":69.09424,"z":-104.078674},"screenPosition":{"x":0.1655385,"y":0.11981082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.26897,"y":66.4544,"z":-102.72614},"screenPosition":{"x":0.15509093,"y":0.15841672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.22868,"y":64.329796,"z":-102.04685},"screenPosition":{"x":0.119592786,"y":0.16824111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.3423,"y":64.564224,"z":-102.61577},"screenPosition":{"x":0.09059328,"y":0.14066893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.64984,"y":67.42863,"z":-103.96915},"screenPosition":{"x":0.1093425,"y":0.10432931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.80188,"y":69.15997,"z":-104.33712},"screenPosition":{"x":0.15081,"y":0.10681129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.15721,"y":66.847664,"z":-103.03745},"screenPosition":{"x":0.14946592,"y":0.14750586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.49658,"y":64.79773,"z":-102.151886},"screenPosition":{"x":0.13035671,"y":0.16842873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.88258,"y":62.504417,"z":-101.16213},"screenPosition":{"x":0.108797476,"y":0.19155712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.0426,"y":60.641804,"z":-100.483826},"screenPosition":{"x":0.083019644,"y":0.20401351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.84143,"y":58.797993,"z":-99.90887},"screenPosition":{"x":0.051189158,"y":0.21138376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.02826,"y":59.67819,"z":-100.635124},"screenPosition":{"x":0.036197584,"y":0.18356735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-202.4654,"y":62.51466,"z":-102.14332},"screenPosition":{"x":0.04375705,"y":0.139137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-200.20148,"y":63.71252,"z":-102.35437},"screenPosition":{"x":0.07535038,"y":0.14318597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.3141,"y":64.90107,"z":-102.61703},"screenPosition":{"x":0.10314749,"y":0.14435174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.17729,"y":65.715164,"z":-102.67172},"screenPosition":{"x":0.13053674,"y":0.15185641},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-190.76598,"y":66.57562,"z":-102.26184},"screenPosition":{"x":0.19067436,"y":0.18483779},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-189.3761,"y":71.59274,"z":-104.34625},"screenPosition":{"x":0.24294883,"y":0.13750274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.61719,"y":69.31787,"z":-103.04673},"screenPosition":{"x":0.24286412,"y":0.17815098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.69987,"y":67.679634,"z":-102.162704},"screenPosition":{"x":0.23934917,"y":0.20464319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.45743,"y":64.66534,"z":-100.60221},"screenPosition":{"x":0.22851944,"y":0.24924213},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-177.261,"y":68.60507,"z":-101.18503},"screenPosition":{"x":0.3397484,"y":0.26871642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.46019,"y":65.43157,"z":-99.46902},"screenPosition":{"x":0.3332989,"y":0.3197554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.02716,"y":61.724957,"z":-98.0092},"screenPosition":{"x":0.28933567,"y":0.35043463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.22546,"y":65.33847,"z":-99.98506},"screenPosition":{"x":0.29533678,"y":0.2909233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.0783,"y":66.85474,"z":-100.50715},"screenPosition":{"x":0.31832805,"y":0.28239477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.56021,"y":68.82014,"z":-101.03092},"screenPosition":{"x":0.35832956,"y":0.27953237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.4572,"y":69.737206,"z":-101.13764},"screenPosition":{"x":0.38617516,"y":0.28557035},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-171.5894,"y":74.45473,"z":-103.01437},"screenPosition":{"x":0.44067234,"y":0.24574712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.9875,"y":74.62287,"z":-102.70517},"screenPosition":{"x":0.46790662,"y":0.26423436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.7574,"y":75.9237,"z":-102.96825},"screenPosition":{"x":0.49995628,"y":0.26681665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.87003,"y":77.11225,"z":-103.2309},"screenPosition":{"x":0.5277534,"y":0.26798242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.41142,"y":78.48794,"z":-103.49427},"screenPosition":{"x":0.5626381,"y":0.27150905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.70589,"y":79.84501,"z":-103.86084},"screenPosition":{"x":0.5895297,"y":0.2695123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.46855,"y":81.932,"z":-104.33343},"screenPosition":{"x":0.6379807,"y":0.2707066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.2453,"y":84.57221,"z":-106.09908},"screenPosition":{"x":0.6189423,"y":0.20808025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.10875,"y":85.67877,"z":-107.139},"screenPosition":{"x":0.6620749,"y":0.21674864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.54903,"y":86.055435,"z":-107.040504},"screenPosition":{"x":0.68962795,"y":0.23480749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.34633,"y":85.563385,"z":-105.37985},"screenPosition":{"x":0.7066435,"y":0.26120436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.96956,"y":83.71902,"z":-104.18522},"screenPosition":{"x":0.7159928,"y":0.3015485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.34023,"y":81.41621,"z":-103.040504},"screenPosition":{"x":0.7045356,"y":0.33334336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.20891,"y":78.2805,"z":-101.73775},"screenPosition":{"x":0.6716582,"y":0.36298758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.2261,"y":78.9177,"z":-102.77293},"screenPosition":{"x":0.62712526,"y":0.31565142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.55212,"y":81.87558,"z":-104.02338},"screenPosition":{"x":0.65548635,"y":0.2870733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.37677,"y":83.7287,"z":-104.54673},"screenPosition":{"x":0.69225436,"y":0.2823104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.86342,"y":84.5521,"z":-104.54982},"screenPosition":{"x":0.72218424,"y":0.29320046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.70091,"y":86.058876,"z":-104.916954},"screenPosition":{"x":0.7564022,"y":0.2923472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.55125,"y":87.21931,"z":-105.12787},"screenPosition":{"x":0.786578,"y":0.295924},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-144.18227,"y":93.75971,"z":-106.139},"screenPosition":{"x":0.8575456,"y":0.24720806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.58977,"y":94.27949,"z":-106.139},"screenPosition":{"x":0.8874266,"y":0.26098084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.04556,"y":95.11601,"z":-106.139},"screenPosition":{"x":0.9190107,"y":0.271485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.50116,"y":95.9526,"z":-106.139},"screenPosition":{"x":0.9505971,"y":0.28198996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.63126,"y":95.96738,"z":-107.139},"screenPosition":{"x":0.971107,"y":0.2901857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.06444,"y":92.71125,"z":-107.040504},"screenPosition":{"x":0.94420964,"y":0.31682047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.5736,"y":91.51452,"z":-105.60875},"screenPosition":{"x":0.918262,"y":0.32521972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.25818,"y":89.70814,"z":-105.033936},"screenPosition":{"x":0.8877268,"y":0.33285406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.02321,"y":87.76135,"z":-104.40695},"screenPosition":{"x":0.8553177,"y":0.34148288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.87679,"y":86.46983,"z":-104.09227},"screenPosition":{"x":0.8270642,"y":0.34178382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.68845,"y":84.27968,"z":-103.36109},"screenPosition":{"x":0.7923249,"y":0.35287383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-145.1574,"y":82.20181,"z":-102.63034},"screenPosition":{"x":0.7618382,"y":0.36538038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.22887,"y":79.68394,"z":-101.63974},"screenPosition":{"x":0.73190475,"y":0.3861647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-147.02046,"y":78.62629,"z":-101.27429},"screenPosition":{"x":0.7155946,"y":0.39225572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.47992,"y":78.83242,"z":-101.5849},"screenPosition":{"x":0.70278126,"y":0.37826404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.08743,"y":79.104095,"z":-101.947395},"screenPosition":{"x":0.68880314,"y":0.36238977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.48178,"y":79.46012,"z":-102.465126},"screenPosition":{"x":0.6683303,"y":0.33908898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.51021,"y":80.97695,"z":-103.60689},"screenPosition":{"x":0.6500196,"y":0.29737845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.01071,"y":80.49989,"z":-103.76002},"screenPosition":{"x":0.6216207,"y":0.2830627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.93526,"y":81.35197,"z":-104.43453},"screenPosition":{"x":0.6091255,"y":0.25785753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.40582,"y":78.04812,"z":-103.44098},"screenPosition":{"x":0.5494241,"y":0.26872614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.32114,"y":74.669044,"z":-102.03403},"screenPosition":{"x":0.5144223,"y":0.30077174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.21388,"y":72.066635,"z":-100.68163},"screenPosition":{"x":0.50539225,"y":0.33984983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.53542,"y":69.65136,"z":-99.32994},"screenPosition":{"x":0.50344986,"y":0.38128877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.75168,"y":69.650986,"z":-98.916824},"screenPosition":{"x":0.53098446,"y":0.4034101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.37016,"y":68.948616,"z":-98.242874},"screenPosition":{"x":0.5491498,"y":0.43050396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.45935,"y":69.332016,"z":-97.986115},"screenPosition":{"x":0.58056206,"y":0.44921076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.06834,"y":70.91365,"z":-98.35353},"screenPosition":{"x":0.616686,"y":0.44976288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.97343,"y":72.626366,"z":-98.824715},"screenPosition":{"x":0.65056103,"y":0.44647846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.02432,"y":75.90247,"z":-100.17964},"screenPosition":{"x":0.68510646,"y":0.41589954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.51534,"y":77.70941,"z":-101.37413},"screenPosition":{"x":0.67421156,"y":0.37511685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.18483,"y":77.747215,"z":-101.787384},"screenPosition":{"x":0.64758253,"y":0.35364446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.79233,"y":78.01888,"z":-102.14988},"screenPosition":{"x":0.63440675,"y":0.33750117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.35568,"y":78.88977,"z":-102.92774},"screenPosition":{"x":0.6151024,"y":0.30730128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.7034,"y":79.48917,"z":-103.54967},"screenPosition":{"x":0.597115,"y":0.2813746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.91592,"y":79.676674,"z":-103.963486},"screenPosition":{"x":0.5766679,"y":0.26161414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.9209,"y":80.38836,"z":-104.58583},"screenPosition":{"x":0.56229883,"y":0.2374035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.87924,"y":81.34341,"z":-105.31237},"screenPosition":{"x":0.55025995,"y":0.21073167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.18755,"y":81.40001,"z":-105.82897},"screenPosition":{"x":0.5194802,"y":0.17464243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.81987,"y":79.39719,"z":-105.30506},"screenPosition":{"x":0.47654888,"y":0.1861785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.91454,"y":75.83079,"z":-103.69085},"screenPosition":{"x":0.44822684,"y":0.22692388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.92963,"y":73.9866,"z":-102.702774},"screenPosition":{"x":0.44380876,"y":0.25620735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.18855,"y":72.077065,"z":-101.86938},"screenPosition":{"x":0.4265845,"y":0.27636904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.70477,"y":69.48396,"z":-100.46538},"screenPosition":{"x":0.4213507,"y":0.31833032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.24194,"y":67.34018,"z":-99.26962},"screenPosition":{"x":0.41935977,"y":0.35489705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.36879,"y":65.10273,"z":-97.97024},"screenPosition":{"x":0.42053393,"y":0.3958991},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-160.37004,"y":64.559006,"z":-96.83213},"screenPosition":{"x":0.47546417,"y":0.44987264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.09804,"y":64.96121,"z":-96.67873},"screenPosition":{"x":0.5014388,"y":0.4631722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.18584,"y":68.42426,"z":-97.82779},"screenPosition":{"x":0.55683917,"y":0.44601482},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-161.74156,"y":72.20685,"z":-100.527245},"screenPosition":{"x":0.52103347,"y":0.34991598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.62558,"y":69.08064,"z":-99.37944},"screenPosition":{"x":0.4783908,"y":0.37132293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.7155,"y":66.65624,"z":-98.28591},"screenPosition":{"x":0.45888484,"y":0.39881802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.5954,"y":64.40018,"z":-97.08973},"screenPosition":{"x":0.45264137,"y":0.43396822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.09317,"y":61.713596,"z":-95.78866},"screenPosition":{"x":0.43698007,"y":0.46921873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.01907,"y":59.48602,"z":-95.05735},"screenPosition":{"x":0.40082324,"y":0.47983658},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-169.85693,"y":60.31054,"z":-96.29979},"screenPosition":{"x":0.34940472,"y":0.42386046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.69629,"y":62.445015,"z":-97.54715},"screenPosition":{"x":0.34759942,"y":0.3844105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.75441,"y":64.93496,"z":-98.69256},"screenPosition":{"x":0.36600506,"y":0.35510784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.87762,"y":67.275,"z":-99.63086},"screenPosition":{"x":0.3927863,"y":0.3347146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.68132,"y":68.67881,"z":-99.94596},"screenPosition":{"x":0.4252923,"y":0.3358302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.17271,"y":68.360214,"z":-99.428375},"screenPosition":{"x":0.44766173,"y":0.35946837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.10239,"y":65.94475,"z":-97.870125},"screenPosition":{"x":0.4594866,"y":0.411968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.24467,"y":54.255314,"z":-94.77951},"screenPosition":{"x":0.2199339,"y":0.42767578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.99686,"y":52.654877,"z":-94.30875},"screenPosition":{"x":0.19031139,"y":0.43237674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.67896,"y":50.492657,"z":-93.42276},"screenPosition":{"x":0.16696072,"y":0.4521164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.439,"y":47.834198,"z":-92.17344},"screenPosition":{"x":0.14892073,"y":0.48495588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.54015,"y":46.289436,"z":-91.186485},"screenPosition":{"x":0.15585937,"y":0.5180106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.04439,"y":45.624493,"z":-90.51268},"screenPosition":{"x":0.17543775,"y":0.54556835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.59055,"y":45.85818,"z":-90.25536},"screenPosition":{"x":0.2014943,"y":0.56235975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.3395,"y":46.7097,"z":-90.310196},"screenPosition":{"x":0.23030107,"y":0.5703366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.40547,"y":48.14162,"z":-90.67705},"screenPosition":{"x":0.26042116,"y":0.56902856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.3572,"y":49.61097,"z":-91.04404},"screenPosition":{"x":0.29196256,"y":0.5682073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.47006,"y":52.6532,"z":-92.44972},"screenPosition":{"x":0.31421733,"y":0.53192276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.75105,"y":54.62847,"z":-93.541565},"screenPosition":{"x":0.31671306,"y":0.49876153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.93002,"y":56.566685,"z":-95.04639},"screenPosition":{"x":0.29024896,"y":0.44301233},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-177.44972,"y":53.37531,"z":-94.25981},"screenPosition":{"x":0.22103958,"y":0.44424552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.53403,"y":50.51109,"z":-93.113},"screenPosition":{"x":0.18832047,"y":0.46894348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.39297,"y":47.805706,"z":-91.70857},"screenPosition":{"x":0.17883408,"y":0.5094882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.58018,"y":46.560364,"z":-90.72275},"screenPosition":{"x":0.19709633,"y":0.5463265},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-170.06998,"y":47.467743,"z":-90.46796},"screenPosition":{"x":0.24868035,"y":0.57160264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.83176,"y":47.97292,"z":-90.36658},"screenPosition":{"x":0.27470055,"y":0.58350736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.5131,"y":48.618492,"z":-90.31736},"screenPosition":{"x":0.30259007,"y":0.59441227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.2098,"y":49.273567,"z":-90.4231},"screenPosition":{"x":0.32051754,"y":0.5971503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.83163,"y":50.508854,"z":-90.63429},"screenPosition":{"x":0.3534599,"y":0.60161763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.96747,"y":50.64888,"z":-90.273346},"screenPosition":{"x":0.38293692,"y":0.6227983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.03482,"y":49.001144,"z":-89.23437},"screenPosition":{"x":0.38925844,"y":0.6571894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.56886,"y":46.77338,"z":-88.2965},"screenPosition":{"x":0.36701316,"y":0.6790044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.36769,"y":44.929573,"z":-87.72154},"screenPosition":{"x":0.33506045,"y":0.6861665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.78775,"y":44.59291,"z":-87.926834},"screenPosition":{"x":0.30853543,"y":0.6708563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.3173,"y":45.360825,"z":-88.65267},"screenPosition":{"x":0.28940895,"y":0.6418236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.72064,"y":48.094326,"z":-90.10883},"screenPosition":{"x":0.29651666,"y":0.5988678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.76903,"y":51.014587,"z":-91.15259},"screenPosition":{"x":0.3382466,"y":0.5803942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.97244,"y":51.360558,"z":-90.89569},"screenPosition":{"x":0.36856782,"y":0.59858763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.7108,"y":51.06058,"z":-90.27489},"screenPosition":{"x":0.39844042,"y":0.6279265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.16753,"y":49.057194,"z":-89.1313},"screenPosition":{"x":0.39817145,"y":0.6633394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.48593,"y":46.55794,"z":-88.03749},"screenPosition":{"x":0.37607157,"y":0.6901152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.13672,"y":44.648586,"z":-87.41065},"screenPosition":{"x":0.34508002,"y":0.6992162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.7305,"y":43.684788,"z":-87.35539},"screenPosition":{"x":0.3120207,"y":0.68982285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.35335,"y":43.965958,"z":-87.87284},"screenPosition":{"x":0.2881748,"y":0.6655695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.62062,"y":44.705753,"z":-88.546936},"screenPosition":{"x":0.2714549,"y":0.63900733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.0963,"y":46.503197,"z":-89.58647},"screenPosition":{"x":0.27069035,"y":0.6064519},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-167.66139,"y":50.537716,"z":-91.512276},"screenPosition":{"x":0.2960465,"y":0.5549918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.47006,"y":52.6532,"z":-92.44972},"screenPosition":{"x":0.31421733,"y":0.53192276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.50723,"y":54.69383,"z":-93.386894},"screenPosition":{"x":0.32951924,"y":0.50788337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.68208,"y":57.502182,"z":-94.84334},"screenPosition":{"x":0.3394072,"y":0.46588498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.77724,"y":57.643143,"z":-95.51518},"screenPosition":{"x":0.30003387,"y":0.4316954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.90033,"y":55.593575,"z":-95.04273},"screenPosition":{"x":0.2534011,"y":0.43073025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.28859,"y":51.802425,"z":-93.22112},"screenPosition":{"x":0.23034127,"y":0.47970322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.01883,"y":50.70679,"z":-92.23586},"screenPosition":{"x":0.254273,"y":0.5184299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.58594,"y":51.389793,"z":-92.18678},"screenPosition":{"x":0.28358456,"y":0.5298123},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-165.74695,"y":55.498608,"z":-93.493195},"screenPosition":{"x":0.35305315,"y":0.5124971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.80731,"y":56.490715,"z":-93.806755},"screenPosition":{"x":0.37002555,"y":0.5084265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-163.8325,"y":60.459503,"z":-95.47411},"screenPosition":{"x":0.4099515,"y":0.4700168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.8724,"y":64.70965,"z":-97.865486},"screenPosition":{"x":0.41270843,"y":0.39638618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.12907,"y":64.29795,"z":-97.86394},"screenPosition":{"x":0.3971157,"y":0.39119223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.51782,"y":64.21416,"z":-98.32838},"screenPosition":{"x":0.3629498,"y":0.36524335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.27473,"y":61.471718,"z":-97.33694},"screenPosition":{"x":0.32451123,"y":0.3831946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.05324,"y":58.906734,"z":-95.98468},"screenPosition":{"x":0.3168987,"y":0.42274484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.10951,"y":52.400146,"z":-91.98402},"screenPosition":{"x":0.33562556,"y":0.55362207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.49327,"y":51.604675,"z":-91.82612},"screenPosition":{"x":0.31580356,"y":0.55186915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.34685,"y":50.313152,"z":-91.51143},"screenPosition":{"x":0.28757527,"y":0.5521847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.13283,"y":48.815685,"z":-91.0927},"screenPosition":{"x":0.2584091,"y":0.55541897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.24869,"y":47.55228,"z":-90.82975},"screenPosition":{"x":0.22777514,"y":0.55329823},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-176.82988,"y":48.7885,"z":-92.07374},"screenPosition":{"x":0.19195117,"y":0.5025267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.67235,"y":51.006958,"z":-93.06322},"screenPosition":{"x":0.21054445,"y":0.477965},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-168.38263,"y":55.433437,"z":-93.85442},"screenPosition":{"x":0.32647696,"y":0.49232382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.40446,"y":57.46457,"z":-94.63664},"screenPosition":{"x":0.3518118,"y":0.4764604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.56148,"y":59.90759,"z":-95.62696},"screenPosition":{"x":0.37891018,"y":0.45473173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.4819,"y":61.629807,"z":-96.253105},"screenPosition":{"x":0.40281415,"y":0.44326985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.51659,"y":63.314594,"z":-96.8791},"screenPosition":{"x":0.4253006,"y":0.43133578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.14342,"y":65.26156,"z":-97.71264},"screenPosition":{"x":0.44394234,"y":0.41164628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-161.67198,"y":66.98359,"z":-98.13222},"screenPosition":{"x":0.48161364,"y":0.41124505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.27289,"y":67.76956,"z":-98.13517},"screenPosition":{"x":0.51138157,"y":0.42116076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.95897,"y":67.27314,"z":-97.56527},"screenPosition":{"x":0.5301626,"y":0.44536838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-154.33612,"y":66.99197,"z":-97.04782},"screenPosition":{"x":0.5541852,"y":0.46943623},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-151.38477,"y":63.39708,"z":-94.96875},"screenPosition":{"x":0.5558378,"y":0.53470933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.05714,"y":61.66518,"z":-93.9811},"screenPosition":{"x":0.5550348,"y":0.5652764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.70543,"y":59.39999,"z":-93.04308},"screenPosition":{"x":0.53186524,"y":0.5866157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.41347,"y":58.39876,"z":-92.987686},"screenPosition":{"x":0.49738842,"y":0.5767501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.24384,"y":58.15576,"z":-93.296616},"screenPosition":{"x":0.46752355,"y":0.55709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.40497,"y":59.728645,"z":-94.335304},"screenPosition":{"x":0.45822278,"y":0.52161807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.73347,"y":63.042362,"z":-95.89693},"screenPosition":{"x":0.48041838,"y":0.48045066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.0464,"y":64.492905,"z":-96.16057},"screenPosition":{"x":0.5181381,"y":0.48492166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.30457,"y":65.39116,"z":-96.16394},"screenPosition":{"x":0.5517457,"y":0.49625227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.70743,"y":64.417305,"z":-95.33405},"screenPosition":{"x":0.5703724,"y":0.52821994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-148.93567,"y":62.48877,"z":-94.19075},"screenPosition":{"x":0.5730904,"y":0.56473655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.44876,"y":59.81169,"z":-93.04463},"screenPosition":{"x":0.547458,"y":0.59180963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-150.73587,"y":57.565304,"z":-92.20997},"screenPosition":{"x":0.5173889,"y":0.6076889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-152.78413,"y":56.095955,"z":-91.84298},"screenPosition":{"x":0.48568913,"y":0.60844237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-155.18323,"y":55.309982,"z":-91.84003},"screenPosition":{"x":0.4561633,"y":0.59862924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-157.53569,"y":54.76738,"z":-91.94127},"screenPosition":{"x":0.42872557,"y":0.58625233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-159.87529,"y":54.571117,"z":-92.19873},"screenPosition":{"x":0.40407443,"y":0.5699476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.16826,"y":54.61823,"z":-92.56038},"screenPosition":{"x":0.3817535,"y":0.5511817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.67685,"y":54.936825,"z":-93.07797},"screenPosition":{"x":0.3593841,"y":0.5275435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-166.17012,"y":55.24593,"z":-93.440605},"screenPosition":{"x":0.34698582,"y":0.51208276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.69156,"y":55.218185,"z":-93.80198},"screenPosition":{"x":0.32179996,"y":0.49237323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.96358,"y":54.81598,"z":-93.95539},"screenPosition":{"x":0.29626602,"y":0.47900108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.24843,"y":54.067432,"z":-93.952576},"screenPosition":{"x":0.2679156,"y":0.46955755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.2372,"y":53.187798,"z":-93.84599},"screenPosition":{"x":0.24148755,"y":0.46399176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.40782,"y":52.476677,"z":-93.84332},"screenPosition":{"x":0.21455465,"y":0.4550204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.67172,"y":51.278816,"z":-93.63227},"screenPosition":{"x":0.18296592,"y":0.45097724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.65714,"y":48.461525,"z":-92.64055},"screenPosition":{"x":0.1416877,"y":0.46797833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.829,"y":47.206684,"z":-91.49977},"screenPosition":{"x":0.16993332,"y":0.51298946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.60838,"y":46.22352,"z":-90.72149},"screenPosition":{"x":0.18433864,"y":0.54207695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-173.5939,"y":47.795837,"z":-91.1405},"screenPosition":{"x":0.21633984,"y":0.53978705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.54814,"y":49.621025,"z":-91.81867},"screenPosition":{"x":0.24070016,"y":0.52685845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.92554,"y":51.193535,"z":-92.444244},"screenPosition":{"x":0.25893173,"y":0.5135068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.0954,"y":53.29021,"z":-93.27834},"screenPosition":{"x":0.28324586,"y":0.49570706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-170.01584,"y":55.01243,"z":-93.90449},"screenPosition":{"x":0.30710664,"y":0.48425034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.88962,"y":56.978016,"z":-94.63482},"screenPosition":{"x":0.333384,"y":0.4703221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-168.16087,"y":59.383606,"z":-95.62499},"screenPosition":{"x":0.3590649,"y":0.44812125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.53041,"y":62.014133,"z":-97.02914},"screenPosition":{"x":0.36571625,"y":0.40663216},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-167.41655,"y":68.29485,"z":-99.583046},"screenPosition":{"x":0.43485555,"y":0.35034657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.988,"y":69.961395,"z":-100.72537},"screenPosition":{"x":0.422057,"y":0.3106672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-172.96643,"y":69.78394,"z":-101.08618},"screenPosition":{"x":0.3911791,"y":0.28917465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-175.44597,"y":68.85757,"z":-101.03106},"screenPosition":{"x":0.35973936,"y":0.2800162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-177.46854,"y":68.0809,"z":-100.97651},"screenPosition":{"x":0.33367342,"y":0.27316713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-179.68579,"y":67.12641,"z":-100.869644},"screenPosition":{"x":0.3045083,"y":0.26647228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-181.84357,"y":66.761635,"z":-101.02319},"screenPosition":{"x":0.28031123,"y":0.25377357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-184.27646,"y":66.078636,"z":-101.072266},"screenPosition":{"x":0.25104138,"y":0.24227883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-186.69652,"y":65.741974,"z":-101.277565},"screenPosition":{"x":0.22452603,"y":0.22700085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-188.5244,"y":65.143135,"z":-101.275314},"screenPosition":{"x":0.20185034,"y":0.21933821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-190.695,"y":64.43202,"z":-101.272644},"screenPosition":{"x":0.17491612,"y":0.21034387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-193.00082,"y":64.13279,"z":-101.47808},"screenPosition":{"x":0.14980863,"y":0.19550578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.34042,"y":63.936527,"z":-101.73554},"screenPosition":{"x":0.12515749,"y":0.17920104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.55295,"y":64.12404,"z":-102.14936},"screenPosition":{"x":0.10471043,"y":0.15944058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.96016,"y":64.13372,"z":-102.51087},"screenPosition":{"x":0.08105648,"y":0.14042155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.85564,"y":63.740826,"z":-102.61267},"screenPosition":{"x":0.05920436,"y":0.12971428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.14859,"y":63.787937,"z":-102.97433},"screenPosition":{"x":0.03718783,"y":0.11159448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-206.47536,"y":63.93802,"z":-103.38801},"screenPosition":{"x":0.015151408,"y":0.09097995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-208.32466,"y":64.2163,"z":-104.89864},"screenPosition":{"x":0.002498426,"y":0.06776946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-209.79514,"y":66.727936,"z":-105.15422},"screenPosition":{"x":3.745903E-4,"y":0.035841897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-210.30211,"y":68.272514,"z":-105.93461},"screenPosition":{"x":1.4382224E-4,"y":0.013757822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-207.29587,"y":69.241936,"z":-107.040504},"screenPosition":{"x":0.049467344,"y":0.01663032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-204.75224,"y":70.068405,"z":-107.040504},"screenPosition":{"x":0.08097585,"y":0.027223062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-203.74362,"y":70.64925,"z":-106.046814},"screenPosition":{"x":0.09629955,"y":0.032374687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-201.91756,"y":70.98945,"z":-107.040504},"screenPosition":{"x":0.116089895,"y":0.03902794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-199.63338,"y":71.73162,"z":-107.040504},"screenPosition":{"x":0.14438474,"y":0.04854029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-197.59123,"y":72.39516,"z":-107.040504},"screenPosition":{"x":0.16968137,"y":0.05704468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.30812,"y":73.512344,"z":-105.95428},"screenPosition":{"x":0.21146905,"y":0.07109315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-196.22592,"y":70.489105,"z":-104.858505},"screenPosition":{"x":0.16671365,"y":0.09592189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-198.45465,"y":72.26793,"z":-106.00125},"screenPosition":{"x":0.1588273,"y":0.061208155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-195.51814,"y":73.34401,"z":-106.05693},"screenPosition":{"x":0.19582452,"y":0.07193094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-194.06679,"y":73.93354,"z":-106.11078},"screenPosition":{"x":0.2157763,"y":0.072541185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-191.82857,"y":74.43871,"z":-106.0094},"screenPosition":{"x":0.24242158,"y":0.08149898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-189.67294,"y":74.96795,"z":-107.040504},"screenPosition":{"x":0.2669861,"y":0.0926003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-187.32646,"y":76.141754,"z":-106.11907},"screenPosition":{"x":0.29747707,"y":0.1041818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-185.20248,"y":76.6095,"z":-106.01755},"screenPosition":{"x":0.32393786,"y":0.10890367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-182.95143,"y":77.46102,"z":-106.07238},"screenPosition":{"x":0.3520375,"y":0.118350394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-180.63278,"y":78.10659,"z":-106.02317},"screenPosition":{"x":0.3801519,"y":0.12780207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-178.6102,"y":78.883255,"z":-106.07772},"screenPosition":{"x":0.40542454,"y":0.13629842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-176.25775,"y":79.42586,"z":-105.97648},"screenPosition":{"x":0.43358228,"y":0.14576466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-174.05334,"y":80.034004,"z":-105.927124},"screenPosition":{"x":0.4603259,"y":0.15475552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-171.73468,"y":80.67958,"z":-105.87791},"screenPosition":{"x":0.4884894,"y":0.1642237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-169.41603,"y":81.32516,"z":-105.82869},"screenPosition":{"x":0.516667,"y":0.17369664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-167.21162,"y":81.933304,"z":-105.779335},"screenPosition":{"x":0.5416094,"y":0.19328195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-164.81252,"y":82.71928,"z":-105.78229},"screenPosition":{"x":0.57137734,"y":0.20319764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-162.49387,"y":83.36485,"z":-105.73307},"screenPosition":{"x":0.5992714,"y":0.21410786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-160.22997,"y":84.56271,"z":-105.94412},"screenPosition":{"x":0.63043195,"y":0.21194293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-158.58391,"y":85.33007,"z":-106.050285},"screenPosition":{"x":0.6513375,"y":0.21897109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-156.00298,"y":85.947525,"z":-105.949326},"screenPosition":{"x":0.68244183,"y":0.22942795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-153.63768,"y":86.83647,"z":-106.0043},"screenPosition":{"x":0.7118534,"y":0.23931573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-151.47812,"y":87.37814,"z":-107.040504},"screenPosition":{"x":0.7408971,"y":0.24907984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-149.15039,"y":88.13447,"z":-107.040504},"screenPosition":{"x":0.76973134,"y":0.25877354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-146.8988,"y":88.86605,"z":-107.040504},"screenPosition":{"x":0.79762244,"y":0.26815012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-144.55978,"y":89.62604,"z":-107.040504},"screenPosition":{"x":0.8265965,"y":0.27789083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.29984,"y":90.36034,"z":-107.040504},"screenPosition":{"x":0.8545911,"y":0.28730223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.8777,"y":91.60237,"z":-107.139},"screenPosition":{"x":0.8879079,"y":0.29267076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.53996,"y":91.906906,"z":-107.040504},"screenPosition":{"x":0.91355294,"y":0.30712444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.15169,"y":92.6829,"z":-107.040504},"screenPosition":{"x":0.94313717,"y":0.31707025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.7012,"y":93.47911,"z":-107.040504},"screenPosition":{"x":0.97349197,"y":0.32727516},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-074522/brain-CAFBE4-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.9503010938663147,0.3113301542777826,-0.001168774511147025,0.0,0.2811469852211513,-0.8565456274190006,0.4327654801973553,0.0,0.13373183501897953,-0.4115861066493399,-0.9015057809663196,0.0,-160.5888066749185,4.628391598927379,-192.80601423572057,1.0]},"baseImage":"20190824-074522/base.webp","version":0,"savedAt":1.56663318887E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-080306-v0.json b/data/mapping/BAAAHS/dwayman/20190824-080306-v0.json new file mode 100644 index 0000000000..b46efdef61 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-080306-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566633786666E12,"surfaces":[{"brainId":"CAFD8C","panelName":"28D","pixels":[{"modelPosition":{"x":-257.05847,"y":119.90962,"z":-88.794586},"screenPosition":{"x":0.32156163,"y":0.9397632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.3399,"y":119.23113,"z":-88.40499},"screenPosition":{"x":0.32776585,"y":0.9054629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.73563,"y":116.4367,"z":-88.51562},"screenPosition":{"x":0.27685836,"y":0.8733606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.8341,"y":114.782646,"z":-88.52271},"screenPosition":{"x":0.24496402,"y":0.84899056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.45227,"y":113.85756,"z":-89.344666},"screenPosition":{"x":0.24254175,"y":0.8258747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.23438,"y":113.78903,"z":-87.93947},"screenPosition":{"x":0.25834015,"y":0.8000696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.41483,"y":114.10272,"z":-87.426},"screenPosition":{"x":0.28544095,"y":0.7724747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.202,"y":114.29053,"z":-87.01531},"screenPosition":{"x":0.30608794,"y":0.74951285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.00296,"y":115.136635,"z":-86.719505},"screenPosition":{"x":0.3328993,"y":0.742869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.77066,"y":116.90926,"z":-86.29493},"screenPosition":{"x":0.37964553,"y":0.7415399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.35425,"y":118.82942,"z":-85.88819},"screenPosition":{"x":0.4287692,"y":0.7430776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.59152,"y":120.878685,"z":-85.536766},"screenPosition":{"x":0.47717544,"y":0.7500802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.3917,"y":123.12985,"z":-85.24944},"screenPosition":{"x":0.5258729,"y":0.76411664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.21304,"y":125.21064,"z":-84.98256},"screenPosition":{"x":0.5712701,"y":0.7768057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.13437,"y":127.80069,"z":-84.61955},"screenPosition":{"x":0.62902814,"y":0.7907437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.70358,"y":129.92819,"z":-84.39988},"screenPosition":{"x":0.67313546,"y":0.80706453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.4679,"y":131.15485,"z":-84.2705},"screenPosition":{"x":0.6987186,"y":0.8162185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.25626,"y":132.49432,"z":-84.54819},"screenPosition":{"x":0.7086422,"y":0.8525232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.53333,"y":133.88379,"z":-84.71377},"screenPosition":{"x":0.7242162,"y":0.882456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.17725,"y":135.83707,"z":-85.7512},"screenPosition":{"x":0.7507831,"y":0.9123522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.0585,"y":137.3392,"z":-84.704155},"screenPosition":{"x":0.7797251,"y":0.93263},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-268.0685,"y":142.87967,"z":-84.05785},"screenPosition":{"x":0.919097,"y":0.89952683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.58606,"y":141.43887,"z":-82.95123},"screenPosition":{"x":0.9236325,"y":0.8795779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.5895,"y":140.42494,"z":-82.67043},"screenPosition":{"x":0.91839534,"y":0.8473271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.66412,"y":138.39069,"z":-82.7384},"screenPosition":{"x":0.8823042,"y":0.8228613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.80417,"y":135.85893,"z":-82.86531},"screenPosition":{"x":0.83556867,"y":0.7950029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.89212,"y":134.39752,"z":-82.84641},"screenPosition":{"x":0.81254673,"y":0.77325094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.09497,"y":132.69495,"z":-82.83825},"screenPosition":{"x":0.7851257,"y":0.74871707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.8514,"y":130.54648,"z":-82.776794},"screenPosition":{"x":0.7527129,"y":0.71456873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.55203,"y":128.94675,"z":-82.86121},"screenPosition":{"x":0.72300494,"y":0.69725984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.66547,"y":126.71608,"z":-82.94968},"screenPosition":{"x":0.6828829,"y":0.6712541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.9667,"y":124.39126,"z":-83.22607},"screenPosition":{"x":0.63307893,"y":0.6557322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.40344,"y":121.715096,"z":-83.73933},"screenPosition":{"x":0.5674638,"y":0.6499737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.87347,"y":120.17754,"z":-84.507225},"screenPosition":{"x":0.509581,"y":0.6761364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.20868,"y":118.98612,"z":-85.03888},"screenPosition":{"x":0.46729955,"y":0.69251436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.78735,"y":119.972374,"z":-85.62771},"screenPosition":{"x":0.45830694,"y":0.74308217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.80344,"y":122.03382,"z":-85.750694},"screenPosition":{"x":0.4865343,"y":0.7799105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.28366,"y":125.302216,"z":-84.953995},"screenPosition":{"x":0.5739563,"y":0.776345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.0981,"y":127.847664,"z":-84.191666},"screenPosition":{"x":0.64811444,"y":0.764722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.28357,"y":128.75693,"z":-83.589775},"screenPosition":{"x":0.6887156,"y":0.74001634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.98734,"y":128.21371,"z":-83.08979},"screenPosition":{"x":0.70131934,"y":0.70109206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.3324,"y":126.03119,"z":-82.90714},"screenPosition":{"x":0.6734827,"y":0.65898365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.21066,"y":123.091156,"z":-83.15006},"screenPosition":{"x":0.61512715,"y":0.63264674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.2781,"y":120.70988,"z":-83.69924},"screenPosition":{"x":0.55277264,"y":0.63329375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.6264,"y":118.757164,"z":-84.339745},"screenPosition":{"x":0.4934985,"y":0.64568347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.44894,"y":117.61618,"z":-84.759514},"screenPosition":{"x":0.4572665,"y":0.65566254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.3352,"y":115.973145,"z":-85.23926},"screenPosition":{"x":0.4097875,"y":0.66243947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.09995,"y":113.97686,"z":-85.79687},"screenPosition":{"x":0.35313946,"y":0.6691011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.11908,"y":111.920456,"z":-86.30876},"screenPosition":{"x":0.29768038,"y":0.67200714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.60516,"y":110.21356,"z":-87.09805},"screenPosition":{"x":0.23604561,"y":0.69714415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.03467,"y":109.80183,"z":-88.52833},"screenPosition":{"x":0.2072169,"y":0.71816736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.60712,"y":109.94986,"z":-88.20823},"screenPosition":{"x":0.18421142,"y":0.762658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.27878,"y":112.73216,"z":-89.11815},"screenPosition":{"x":0.2297607,"y":0.7962992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.50317,"y":113.826195,"z":-89.338356},"screenPosition":{"x":0.23817739,"y":0.8254696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.74326,"y":114.85743,"z":-88.53122},"screenPosition":{"x":0.2454313,"y":0.85061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.8973,"y":115.92676,"z":-88.770134},"screenPosition":{"x":0.2621886,"y":0.87934595},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-257.96484,"y":120.50986,"z":-88.51224},"screenPosition":{"x":0.34344083,"y":0.9306248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.98978,"y":121.984726,"z":-87.86181},"screenPosition":{"x":0.39534557,"y":0.9108736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.833,"y":134.1127,"z":-83.75841},"screenPosition":{"x":0.76885414,"y":0.82610655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.20154,"y":136.53674,"z":-83.53826},"screenPosition":{"x":0.81781846,"y":0.84658235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.86453,"y":138.26494,"z":-83.78581},"screenPosition":{"x":0.8412754,"y":0.8951938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.4526,"y":137.4409,"z":-85.24255},"screenPosition":{"x":0.7987213,"y":0.90326256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.75735,"y":135.30902,"z":-85.91867},"screenPosition":{"x":0.73499995,"y":0.9153449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.6208,"y":133.87971,"z":-86.37196},"screenPosition":{"x":0.6922783,"y":0.92344546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.4216,"y":132.37169,"z":-86.85023},"screenPosition":{"x":0.65078217,"y":0.9386023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.68997,"y":129.52039,"z":-86.39208},"screenPosition":{"x":0.58118707,"y":0.92555004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.647,"y":127.181496,"z":-86.74433},"screenPosition":{"x":0.5284378,"y":0.91389424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.73422,"y":124.43376,"z":-87.12863},"screenPosition":{"x":0.4671238,"y":0.8992632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.4853,"y":122.10993,"z":-87.094055},"screenPosition":{"x":0.43069565,"y":0.8644036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.32208,"y":122.331566,"z":-86.45338},"screenPosition":{"x":0.4615962,"y":0.82770497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.60764,"y":122.40965,"z":-85.951935},"screenPosition":{"x":0.4843208,"y":0.79756016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.94678,"y":122.74555,"z":-85.40119},"screenPosition":{"x":0.5133586,"y":0.7679767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.19748,"y":123.156204,"z":-84.85844},"screenPosition":{"x":0.54304355,"y":0.7401044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.7127,"y":124.10065,"z":-84.18069},"screenPosition":{"x":0.58747554,"y":0.7111582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.5325,"y":126.7118,"z":-83.62196},"screenPosition":{"x":0.65397894,"y":0.71316606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.22678,"y":129.31128,"z":-83.73503},"screenPosition":{"x":0.691613,"y":0.7567673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.42477,"y":128.75314,"z":-84.4176},"screenPosition":{"x":0.65321046,"y":0.791589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.9642,"y":126.66802,"z":-85.036545},"screenPosition":{"x":0.59272605,"y":0.8007355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.26138,"y":124.41174,"z":-85.51814},"screenPosition":{"x":0.53527755,"y":0.79896194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.22598,"y":122.05584,"z":-85.87126},"screenPosition":{"x":0.4820317,"y":0.78752685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.20016,"y":119.403656,"z":-85.837006},"screenPosition":{"x":0.4404153,"y":0.7479311},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-275.69156,"y":124.26667,"z":-84.16087},"screenPosition":{"x":0.59102285,"y":0.71227163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.1033,"y":126.506744,"z":-84.38722},"screenPosition":{"x":0.6178699,"y":0.75799614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.97284,"y":127.255226,"z":-84.94857},"screenPosition":{"x":0.6060441,"y":0.8035651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.88318,"y":126.27387,"z":-85.5405},"screenPosition":{"x":0.5646936,"y":0.8266321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.67398,"y":124.131645,"z":-86.11392},"screenPosition":{"x":0.5052004,"y":0.8321644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.9799,"y":121.64628,"z":-86.412865},"screenPosition":{"x":0.45186213,"y":0.8157369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.7316,"y":119.53931,"z":-86.56073},"screenPosition":{"x":0.41116437,"y":0.7952274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.73883,"y":117.36977,"z":-86.66299},"screenPosition":{"x":0.37139842,"y":0.770991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.1033,"y":115.65489,"z":-86.62198},"screenPosition":{"x":0.34518275,"y":0.7442356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.52124,"y":114.195274,"z":-86.53207},"screenPosition":{"x":0.32522455,"y":0.7180321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.0766,"y":112.32165,"z":-86.47341},"screenPosition":{"x":0.29717487,"y":0.68793625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.51523,"y":110.089676,"z":-86.49235},"screenPosition":{"x":0.25995836,"y":0.6576223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.75107,"y":108.12811,"z":-88.191444},"screenPosition":{"x":0.19434063,"y":0.673541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.8473,"y":109.91727,"z":-88.55157},"screenPosition":{"x":0.20469828,"y":0.7215769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.27878,"y":111.67082,"z":-87.383064},"screenPosition":{"x":0.24761213,"y":0.7354815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-268.75568,"y":113.90495,"z":-87.16755},"screenPosition":{"x":0.29389706,"y":0.75333035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.72635,"y":116.24918,"z":-87.0444},"screenPosition":{"x":0.33679017,"y":0.7789651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-266.11322,"y":118.018776,"z":-87.1307},"screenPosition":{"x":0.36195937,"y":0.8093168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.36234,"y":117.726204,"z":-87.76336},"screenPosition":{"x":0.33009964,"y":0.8446433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.3726,"y":117.26208,"z":-88.258},"screenPosition":{"x":0.30135107,"y":0.8689418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.33392,"y":116.54057,"z":-88.80089},"screenPosition":{"x":0.27119845,"y":0.8895974},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-254.69226,"y":120.66062,"z":-89.19173},"screenPosition":{"x":0.31680742,"y":0.9751272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.89696,"y":123.54978,"z":-88.50971},"screenPosition":{"x":0.39660546,"y":0.96986294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.85483,"y":124.17988,"z":-87.99756},"screenPosition":{"x":0.42533892,"y":0.9503143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.14093,"y":124.62028,"z":-87.22847},"screenPosition":{"x":0.4658762,"y":0.90812707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.7883,"y":123.6517,"z":-86.80296},"screenPosition":{"x":0.46787044,"y":0.8683629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.161,"y":119.91497,"z":-87.27112},"screenPosition":{"x":0.38740715,"y":0.8444664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.75592,"y":117.32488,"z":-87.95223},"screenPosition":{"x":0.31627545,"y":0.8502753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.51215,"y":115.57059,"z":-88.69055},"screenPosition":{"x":0.2511221,"y":0.8703331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.31897,"y":117.020424,"z":-89.981285},"screenPosition":{"x":0.2516936,"y":0.91163224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.25848,"y":119.29757,"z":-89.27025},"screenPosition":{"x":0.27689084,"y":0.9596419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.55856,"y":121.59067,"z":-88.8696},"screenPosition":{"x":0.34576967,"y":0.9681617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.31024,"y":123.285164,"z":-88.24554},"screenPosition":{"x":0.4004814,"y":0.9528092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.96835,"y":125.277756,"z":-87.8122},"screenPosition":{"x":0.4511826,"y":0.9542467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.26764,"y":127.33809,"z":-87.23147},"screenPosition":{"x":0.5184262,"y":0.95640993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.24106,"y":120.948235,"z":-85.387314},"screenPosition":{"x":0.4843852,"y":0.74193084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.02225,"y":119.61532,"z":-86.058495},"screenPosition":{"x":0.43390745,"y":0.764979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.51932,"y":119.263954,"z":-86.64662},"screenPosition":{"x":0.4032323,"y":0.7965581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.82782,"y":119.81814,"z":-87.142365},"screenPosition":{"x":0.3908094,"y":0.8354347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.6175,"y":121.177475,"z":-87.41686},"screenPosition":{"x":0.4012291,"y":0.8717342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.96704,"y":122.67655,"z":-87.55083},"screenPosition":{"x":0.41994488,"y":0.9012419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.3602,"y":123.84172,"z":-87.72442},"screenPosition":{"x":0.43229562,"y":0.92773753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.23627,"y":125.28146,"z":-87.968605},"screenPosition":{"x":0.4477955,"y":0.9603955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.46893,"y":126.14343,"z":-88.825485},"screenPosition":{"x":0.4664125,"y":0.9768005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.9526,"y":124.08668,"z":-88.82093},"screenPosition":{"x":0.38754806,"y":1.0019698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-251.75632,"y":122.01109,"z":-89.58799},"screenPosition":{"x":0.32054025,"y":1.0210137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-253.36606,"y":120.07217,"z":-90.59554},"screenPosition":{"x":0.28622922,"y":0.99200666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.25131,"y":118.91057,"z":-90.36173},"screenPosition":{"x":0.27729276,"y":0.96103483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.63004,"y":118.01813,"z":-89.16386},"screenPosition":{"x":0.26949337,"y":0.93400383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.54004,"y":116.884224,"z":-89.95387},"screenPosition":{"x":0.25747615,"y":0.90743345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.18384,"y":115.8714,"z":-89.75001},"screenPosition":{"x":0.25391164,"y":0.88000107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.72333,"y":114.201035,"z":-88.41737},"screenPosition":{"x":0.24964131,"y":0.8331872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.04114,"y":116.04963,"z":-87.64934},"screenPosition":{"x":0.30763486,"y":0.8138749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.57623,"y":119.056625,"z":-87.0936},"screenPosition":{"x":0.3804763,"y":0.8216481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.2116,"y":121.516716,"z":-87.025345},"screenPosition":{"x":0.4235253,"y":0.85210496},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-261.49356,"y":125.076645,"z":-87.08594},"screenPosition":{"x":0.4795206,"y":0.9055585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.66766,"y":126.71477,"z":-87.23713},"screenPosition":{"x":0.4992437,"y":0.9386605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.6053,"y":126.314896,"z":-88.77111},"screenPosition":{"x":0.4661682,"y":0.96631867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-255.83438,"y":124.087875,"z":-89.477394},"screenPosition":{"x":0.40407783,"y":0.9863909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.19394,"y":122.024925,"z":-90.13165},"screenPosition":{"x":0.33794236,"y":0.9906319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-254.18542,"y":119.43396,"z":-89.48029},"screenPosition":{"x":0.28961977,"y":0.9716608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.86963,"y":117.297295,"z":-90.03702},"screenPosition":{"x":0.2690724,"y":0.9172047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.06387,"y":118.636536,"z":-88.33699},"screenPosition":{"x":0.32038823,"y":0.8932619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.36707,"y":120.707466,"z":-87.75387},"screenPosition":{"x":0.37913388,"y":0.88611877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.12552,"y":123.220535,"z":-87.22269},"screenPosition":{"x":0.44286734,"y":0.8884537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.92737,"y":126.210236,"z":-86.826675},"screenPosition":{"x":0.50858766,"y":0.90594435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.41135,"y":127.59893,"z":-86.51925},"screenPosition":{"x":0.5444015,"y":0.9063673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.775,"y":129.97304,"z":-86.09308},"screenPosition":{"x":0.60137206,"y":0.9132907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.26483,"y":132.1628,"z":-85.881294},"screenPosition":{"x":0.64954025,"y":0.93154913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-263.5548,"y":133.79672,"z":-86.398285},"screenPosition":{"x":0.694356,"y":0.93227327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.6133,"y":135.12785,"z":-85.97613},"screenPosition":{"x":0.7319501,"y":0.9203444},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-269.76935,"y":141.61186,"z":-83.919754},"screenPosition":{"x":0.92339,"y":0.8796239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.73163,"y":141.40358,"z":-82.710815},"screenPosition":{"x":0.932629,"y":0.8636548},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-273.77563,"y":135.43954,"z":-82.932945},"screenPosition":{"x":0.8258386,"y":0.79335076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.38943,"y":133.45262,"z":-83.52154},"screenPosition":{"x":0.7682592,"y":0.80182153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-270.7787,"y":131.94008,"z":-84.0887},"screenPosition":{"x":0.71927446,"y":0.81604767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-269.05615,"y":130.66536,"z":-84.64494},"screenPosition":{"x":0.6746668,"y":0.8327496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-267.33383,"y":129.3908,"z":-85.201126},"screenPosition":{"x":0.6300644,"y":0.8494495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-265.4003,"y":127.84266,"z":-85.842705},"screenPosition":{"x":0.5773432,"y":0.8676154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-264.25226,"y":126.5474,"z":-86.2788},"screenPosition":{"x":0.5375447,"y":0.8765345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.24796,"y":124.90778,"z":-86.948975},"screenPosition":{"x":0.48210725,"y":0.89519244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-260.2746,"y":123.689896,"z":-87.55066},"screenPosition":{"x":0.4364808,"y":0.91553026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-257.59235,"y":123.65006,"z":-88.13154},"screenPosition":{"x":0.41130817,"y":0.95084697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-256.05368,"y":124.36367,"z":-89.38993},"screenPosition":{"x":0.4078468,"y":0.9773771},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-258.016,"y":129.5293,"z":-87.14757},"screenPosition":{"x":0.54781747,"y":0.9746531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-258.99243,"y":130.21965,"z":-86.843414},"screenPosition":{"x":0.5723439,"y":0.965038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-261.5028,"y":131.21625,"z":-87.216675},"screenPosition":{"x":0.61266804,"y":0.9385405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-262.8168,"y":132.30713,"z":-85.74179},"screenPosition":{"x":0.66008115,"y":0.9295504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.08902,"y":124.86237,"z":-83.559525},"screenPosition":{"x":0.6264864,"y":0.6831751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.29633,"y":122.60934,"z":-83.84552},"screenPosition":{"x":0.577492,"y":0.6692189},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.4846,"y":118.572784,"z":-84.39719},"screenPosition":{"x":0.48812065,"y":0.6466391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.64038,"y":116.17488,"z":-85.14425},"screenPosition":{"x":0.41693348,"y":0.65941733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.84824,"y":116.113754,"z":-85.966194},"screenPosition":{"x":0.38074484,"y":0.70981383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.57498,"y":119.696686,"z":-85.71367},"screenPosition":{"x":0.45018074,"y":0.7445272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.637,"y":121.54207,"z":-84.78657},"screenPosition":{"x":0.5197924,"y":0.71284574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.7105,"y":120.16016,"z":-84.54471},"screenPosition":{"x":0.5077468,"y":0.6782065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.0175,"y":118.290565,"z":-84.324326},"screenPosition":{"x":0.48656937,"y":0.6381327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.04437,"y":116.109314,"z":-84.424095},"screenPosition":{"x":0.44669768,"y":0.613581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.93182,"y":113.73719,"z":-84.58175},"screenPosition":{"x":0.4017683,"y":0.58989936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.8217,"y":111.35861,"z":-84.73983},"screenPosition":{"x":0.3562251,"y":0.5662251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.1636,"y":108.7284,"z":-85.26668},"screenPosition":{"x":0.29023162,"y":0.56197727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.96704,"y":107.048935,"z":-85.98392},"screenPosition":{"x":0.23224007,"y":0.58300304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.5565,"y":107.058266,"z":-86.49933},"screenPosition":{"x":0.2102137,"y":0.61528265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.2578,"y":108.18803,"z":-86.82644},"screenPosition":{"x":0.21463604,"y":0.65162396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.10287,"y":110.794304,"z":-86.69179},"screenPosition":{"x":0.2636803,"y":0.6798298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-271.66754,"y":113.02341,"z":-86.67258},"screenPosition":{"x":0.3000941,"y":0.7102589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.93784,"y":115.910645,"z":-85.548004},"screenPosition":{"x":0.39533675,"y":0.6808681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.24384,"y":117.86975,"z":-84.55191},"screenPosition":{"x":0.47032222,"y":0.6462916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.63992,"y":117.275444,"z":-84.12539},"screenPosition":{"x":0.4785078,"y":0.6114076},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-283.56247,"y":112.05131,"z":-84.26503},"screenPosition":{"x":0.38746873,"y":0.5464042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.5989,"y":109.21825,"z":-84.88713},"screenPosition":{"x":0.31447202,"y":0.54521936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.65292,"y":106.87933,"z":-85.647354},"screenPosition":{"x":0.24385528,"y":0.5596257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.1531,"y":107.564,"z":-86.08286},"screenPosition":{"x":0.236294,"y":0.59644675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-275.7164,"y":109.10603,"z":-86.3791},"screenPosition":{"x":0.24876273,"y":0.63668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.89816,"y":111.04705,"z":-86.48422},"screenPosition":{"x":0.2767274,"y":0.67045313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.9084,"y":113.66237,"z":-86.31284},"screenPosition":{"x":0.32591832,"y":0.6968409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.21475,"y":115.7497,"z":-85.72663},"screenPosition":{"x":0.3855117,"y":0.68959606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-276.80957,"y":120.67756,"z":-84.447586},"screenPosition":{"x":0.5202049,"y":0.67950696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.2896,"y":121.95627,"z":-83.728355},"screenPosition":{"x":0.57185596,"y":0.65269715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.73727,"y":119.68047,"z":-83.53739},"screenPosition":{"x":0.54291147,"y":0.60867494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.20023,"y":116.76105,"z":-83.866325},"screenPosition":{"x":0.48120913,"y":0.587993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.12915,"y":114.77876,"z":-84.38668},"screenPosition":{"x":0.4265969,"y":0.5924726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.19925,"y":112.97968,"z":-84.84991},"screenPosition":{"x":0.37772423,"y":0.595947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.49887,"y":111.35473,"z":-85.45277},"screenPosition":{"x":0.32510245,"y":0.6106418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.77405,"y":109.23314,"z":-85.91933},"screenPosition":{"x":0.27052125,"y":0.60980076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.46207,"y":106.46708,"z":-86.3919},"screenPosition":{"x":0.20517056,"y":0.6002407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-278.07468,"y":104.84798,"z":-87.53122},"screenPosition":{"x":0.17019604,"y":0.5859721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.00864,"y":102.16672,"z":-86.69103},"screenPosition":{"x":0.12221893,"y":0.5582157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.06744,"y":102.38784,"z":-87.03604},"screenPosition":{"x":0.15017925,"y":0.5204874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.9139,"y":101.02605,"z":-85.806725},"screenPosition":{"x":0.14755683,"y":0.4876169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.13354,"y":101.33526,"z":-85.285515},"screenPosition":{"x":0.16883501,"y":0.45882958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.2701,"y":102.92954,"z":-84.593636},"screenPosition":{"x":0.2244624,"y":0.4381784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.0352,"y":106.60501,"z":-84.104935},"screenPosition":{"x":0.30595025,"y":0.45968482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.70523,"y":108.44219,"z":-84.120605},"screenPosition":{"x":0.33504194,"y":0.48652786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.89255,"y":109.52264,"z":-84.56514},"screenPosition":{"x":0.33322307,"y":0.5294343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.52237,"y":107.89283,"z":-85.526695},"screenPosition":{"x":0.2662818,"y":0.5663892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.10565,"y":104.665306,"z":-86.303795},"screenPosition":{"x":0.164808,"y":0.57118744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.10654,"y":102.979904,"z":-87.15521},"screenPosition":{"x":0.15473415,"y":0.5362737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.55838,"y":101.4692,"z":-86.851135},"screenPosition":{"x":0.1377753,"y":0.49656802},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-287.219,"y":104.54506,"z":-84.58204},"screenPosition":{"x":0.2513096,"y":0.4602514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.51968,"y":107.2919,"z":-84.54348},"screenPosition":{"x":0.2977646,"y":0.49660647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.09808,"y":107.30104,"z":-85.061295},"screenPosition":{"x":0.27574325,"y":0.52902824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.7935,"y":104.4939,"z":-85.96709},"screenPosition":{"x":0.19234583,"y":0.54592735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.93427,"y":102.13294,"z":-85.8544},"screenPosition":{"x":0.14645195,"y":0.50756943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.7317,"y":112.03893,"z":-83.58741},"screenPosition":{"x":0.41612807,"y":0.50396687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.05035,"y":111.50446,"z":-84.24065},"screenPosition":{"x":0.3798237,"y":0.537181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.5255,"y":109.79124,"z":-85.0332},"screenPosition":{"x":0.31762838,"y":0.5624139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.8173,"y":106.89616,"z":-85.60965},"screenPosition":{"x":0.24566129,"y":0.5575121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.48358,"y":104.322266,"z":-85.62992},"screenPosition":{"x":0.20281047,"y":0.52245665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.80856,"y":102.47929,"z":-85.616165},"screenPosition":{"x":0.17333835,"y":0.49559343},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-299.69354,"y":97.57814,"z":-82.929474},"screenPosition":{"x":0.21083486,"y":0.26008874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.53125,"y":95.931076,"z":-82.77706},"screenPosition":{"x":0.19927673,"y":0.23214307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-302.24768,"y":93.820114,"z":-82.933075},"screenPosition":{"x":0.16230017,"y":0.21425757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.01385,"y":91.971436,"z":-83.039955},"screenPosition":{"x":0.13219881,"y":0.1973324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.70963,"y":90.024185,"z":-83.17639},"screenPosition":{"x":0.097350575,"y":0.17980185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.0073,"y":88.253456,"z":-84.19108},"screenPosition":{"x":0.05932622,"y":0.15283315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-306.1999,"y":87.51865,"z":-84.04317},"screenPosition":{"x":0.02813999,"y":0.13454731},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-306.4289,"y":87.650955,"z":-82.94148},"screenPosition":{"x":0.076379314,"y":0.13707545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-305.05585,"y":88.92539,"z":-83.048935},"screenPosition":{"x":0.08877253,"y":0.15902299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-303.1333,"y":89.88095,"z":-83.32095},"screenPosition":{"x":0.0860046,"y":0.18498163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-301.2625,"y":90.48886,"z":-83.63286},"screenPosition":{"x":0.073933646,"y":0.20809092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-299.53314,"y":91.62636,"z":-84.86997},"screenPosition":{"x":0.06607737,"y":0.23368537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.60736,"y":92.81292,"z":-85.1088},"screenPosition":{"x":0.07651696,"y":0.2651902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.86728,"y":93.98127,"z":-84.27731},"screenPosition":{"x":0.085272595,"y":0.2955353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.87546,"y":96.418495,"z":-83.9181},"screenPosition":{"x":0.14718336,"y":0.3041745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.19168,"y":98.447395,"z":-83.552734},"screenPosition":{"x":0.19592017,"y":0.31001836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.88773,"y":100.06474,"z":-83.380684},"screenPosition":{"x":0.22975644,"y":0.32214758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-295.32315,"y":101.73979,"z":-83.25605},"screenPosition":{"x":0.26232514,"y":0.33797443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.09766,"y":103.94921,"z":-83.19474},"screenPosition":{"x":0.30113888,"y":0.3653845},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-288.11063,"y":107.29964,"z":-83.986885},"screenPosition":{"x":0.32172155,"y":0.46200445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.98172,"y":107.61313,"z":-84.18292},"screenPosition":{"x":0.31909224,"y":0.47875905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.2374,"y":108.82253,"z":-84.16512},"screenPosition":{"x":0.3391061,"y":0.4946328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.80322,"y":108.966385,"z":-84.02271},"screenPosition":{"x":0.347374,"y":0.48775804},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-289.85587,"y":111.16532,"z":-83.04576},"screenPosition":{"x":0.42553425,"y":0.45798245},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-292.21567,"y":106.68767,"z":-83.19657},"screenPosition":{"x":0.3455771,"y":0.40408275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.18088,"y":104.44527,"z":-83.53291},"screenPosition":{"x":0.29460046,"y":0.39341655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.9344,"y":102.52264,"z":-83.86774},"screenPosition":{"x":0.24890459,"y":0.38716766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.8048,"y":100.34942,"z":-84.21426},"screenPosition":{"x":0.1986209,"y":0.3781121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.675,"y":98.1723,"z":-84.5614},"screenPosition":{"x":0.14934,"y":0.3693537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.82736,"y":95.85723,"z":-84.653885},"screenPosition":{"x":0.09957397,"y":0.3451007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.41968,"y":94.77702,"z":-85.504135},"screenPosition":{"x":0.09075739,"y":0.31805873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.96454,"y":94.00155,"z":-84.0391},"screenPosition":{"x":0.102579795,"y":0.2776157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.80603,"y":95.40183,"z":-83.438934},"screenPosition":{"x":0.15111591,"y":0.25994667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-298.93115,"y":98.198105,"z":-83.00199},"screenPosition":{"x":0.21543398,"y":0.27215493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.69727,"y":100.318855,"z":-83.16986},"screenPosition":{"x":0.24283832,"y":0.31254897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-294.323,"y":101.03394,"z":-83.574},"screenPosition":{"x":0.23800902,"y":0.34814137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.24832,"y":98.92234,"z":-84.32848},"screenPosition":{"x":0.17058775,"y":0.3651391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.99823,"y":96.3832,"z":-84.7545},"screenPosition":{"x":0.10350173,"y":0.35871345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.7425,"y":95.19427,"z":-85.58812},"screenPosition":{"x":0.09483724,"y":0.32868427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-296.0457,"y":93.77515,"z":-85.30248},"screenPosition":{"x":0.08391963,"y":0.29084623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-297.84705,"y":93.739204,"z":-83.88838},"screenPosition":{"x":0.10561192,"y":0.2648734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.57254,"y":104.54082,"z":-83.8637},"screenPosition":{"x":0.28222767,"y":0.4154565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.38007,"y":105.26502,"z":-84.22752},"screenPosition":{"x":0.2782317,"y":0.44830182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-286.3306,"y":105.57227,"z":-84.62183},"screenPosition":{"x":0.26636067,"y":0.47722793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.33896,"y":106.74236,"z":-84.877205},"screenPosition":{"x":0.2745125,"y":0.50966424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.90036,"y":108.82166,"z":-84.88066},"screenPosition":{"x":0.3085141,"y":0.5392286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.96967,"y":112.14162,"z":-84.59327},"screenPosition":{"x":0.37473705,"y":0.56814426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.1544,"y":114.5194,"z":-83.56177},"screenPosition":{"x":0.45768517,"y":0.5373688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.30966,"y":113.977356,"z":-83.1792},"screenPosition":{"x":0.46522355,"y":0.505862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.50327,"y":111.30004,"z":-83.10159},"screenPosition":{"x":0.42526725,"y":0.4633404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.21893,"y":110.36381,"z":-82.871086},"screenPosition":{"x":0.4194744,"y":0.43565774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.5528,"y":107.9259,"z":-82.94269},"screenPosition":{"x":0.37664413,"y":0.40572235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.01562,"y":105.73619,"z":-83.16462},"screenPosition":{"x":0.3314255,"y":0.38866425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.33914,"y":103.95883,"z":-83.355934},"screenPosition":{"x":0.29424354,"y":0.37551576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-293.49448,"y":101.55633,"z":-83.675},"screenPosition":{"x":0.24139507,"y":0.3615128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-292.81863,"y":99.065735,"z":-84.18518},"screenPosition":{"x":0.17892775,"y":0.3581848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-291.14713,"y":97.07981,"z":-84.8348},"screenPosition":{"x":0.10783024,"y":0.3737151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.2757,"y":97.94647,"z":-86.14208},"screenPosition":{"x":0.11601067,"y":0.40206668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.02505,"y":99.333206,"z":-86.4212},"screenPosition":{"x":0.12667915,"y":0.43904132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.35358,"y":100.36309,"z":-86.6285},"screenPosition":{"x":0.13460232,"y":0.46650124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.22818,"y":101.672646,"z":-86.89209},"screenPosition":{"x":0.14467709,"y":0.5014182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.7639,"y":102.78882,"z":-86.009125},"screenPosition":{"x":0.16676432,"y":0.5247339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.27115,"y":105.31448,"z":-85.74432},"screenPosition":{"x":0.21409641,"y":0.54359233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.5301,"y":107.8252,"z":-85.32058},"screenPosition":{"x":0.27386764,"y":0.5526002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.68976,"y":109.8082,"z":-84.99551},"screenPosition":{"x":0.31945467,"y":0.56030285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.11887,"y":112.26113,"z":-84.32936},"screenPosition":{"x":0.38812077,"y":0.553374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.45142,"y":113.52755,"z":-83.643555},"screenPosition":{"x":0.43800515,"y":0.52847373},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-290.07315,"y":112.04364,"z":-82.87036},"screenPosition":{"x":0.44690558,"y":0.4593157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.03284,"y":109.21278,"z":-83.29419},"screenPosition":{"x":0.38258478,"y":0.4458019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-288.9892,"y":108.24781,"z":-83.65946},"screenPosition":{"x":0.35120603,"y":0.4549647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.59756,"y":107.45173,"z":-83.64579},"screenPosition":{"x":0.33943588,"y":0.4430338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-290.1246,"y":104.75375,"z":-83.928505},"screenPosition":{"x":0.282695,"y":0.42243958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.66577,"y":104.332275,"z":-84.51746},"screenPosition":{"x":0.2507925,"y":0.4532572},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-284.0434,"y":105.16772,"z":-85.17152},"screenPosition":{"x":0.23622732,"y":0.50579923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.91882,"y":106.751976,"z":-85.39464},"screenPosition":{"x":0.2525153,"y":0.5420688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.9281,"y":108.61866,"z":-85.33326},"screenPosition":{"x":0.28576806,"y":0.5645787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.75403,"y":110.632385,"z":-85.28962},"screenPosition":{"x":0.32030532,"y":0.59027463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.49445,"y":112.650764,"z":-85.04924},"screenPosition":{"x":0.3639614,"y":0.60371834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.39084,"y":113.42532,"z":-84.74347},"screenPosition":{"x":0.38957238,"y":0.5955952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-281.59323,"y":114.40208,"z":-84.34244},"screenPosition":{"x":0.42240146,"y":0.5843943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.95963,"y":115.39604,"z":-83.90372},"screenPosition":{"x":0.45734343,"y":0.571064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-259.48126,"y":119.41417,"z":-88.34784},"screenPosition":{"x":0.33296987,"y":0.90464556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.90515,"y":115.148254,"z":-82.87981},"screenPosition":{"x":0.49714074,"y":0.50371313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-289.15836,"y":112.6328,"z":-82.980064},"screenPosition":{"x":0.4518181,"y":0.4744709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-287.91708,"y":110.023254,"z":-83.628914},"screenPosition":{"x":0.3814733,"y":0.4781124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-285.16495,"y":109.99603,"z":-84.22292},"screenPosition":{"x":0.3555965,"y":0.5147729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.96228,"y":112.178185,"z":-84.16071},"screenPosition":{"x":0.39385334,"y":0.54168487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.14688,"y":114.58432,"z":-83.768234},"screenPosition":{"x":0.44990405,"y":0.5511608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.7033,"y":116.684906,"z":-83.34086},"screenPosition":{"x":0.50257045,"y":0.5541504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-284.21616,"y":117.2285,"z":-83.36557},"screenPosition":{"x":0.51027364,"y":0.5633608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-283.85968,"y":119.31278,"z":-83.1363},"screenPosition":{"x":0.55408674,"y":0.5784733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-282.4462,"y":120.60271,"z":-83.250145},"screenPosition":{"x":0.57025254,"y":0.60377485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-280.9275,"y":122.723015,"z":-83.26476},"screenPosition":{"x":0.6042866,"y":0.63457644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-279.49924,"y":124.17227,"z":-83.358406},"screenPosition":{"x":0.6239236,"y":0.6608481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-277.65683,"y":125.65709,"z":-83.53562},"screenPosition":{"x":0.6405064,"y":0.69287056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-276.32767,"y":127.02544,"z":-83.61989},"screenPosition":{"x":0.65920866,"y":0.71743476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-274.755,"y":129.0342,"z":-83.66242},"screenPosition":{"x":0.6901998,"y":0.7483401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-273.60193,"y":130.99927,"z":-83.62142},"screenPosition":{"x":0.72393554,"y":0.77363104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-272.91577,"y":133.1775,"z":-83.44904},"screenPosition":{"x":0.76684535,"y":0.7936177},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-080306/brain-CAFD8C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.5886972012948899,-0.7676736048723141,-0.2532051373292217,0.0,-0.7907790231119067,-0.6118776987215382,0.01655954146143805,0.0,-0.1676428996222099,0.19048075543104281,-0.9672708721018517,0.0,-311.788701039109,144.15451793001617,-187.90684500568437,1.0]},"baseImage":"20190824-080306/base.webp","version":0,"savedAt":1.566633948846E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-082235-v0.json b/data/mapping/BAAAHS/dwayman/20190824-082235-v0.json new file mode 100644 index 0000000000..dd894b502d --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-082235-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566634955601E12,"surfaces":[{"brainId":"CAFDEC","panelName":"32D","pixels":[{"modelPosition":{"x":-374.4379,"y":147.53967,"z":-79.56213},"screenPosition":{"x":0.19888169,"y":0.3662363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.83673,"y":148.37886,"z":-79.61493},"screenPosition":{"x":0.21907488,"y":0.38539553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.21835,"y":149.86075,"z":-79.07304},"screenPosition":{"x":0.24848023,"y":0.39304292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.6515,"y":151.13722,"z":-78.69704},"screenPosition":{"x":0.27424496,"y":0.40405813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.44482,"y":152.69865,"z":-77.86416},"screenPosition":{"x":0.30225867,"y":0.40190253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.82648,"y":154.18053,"z":-77.32226},"screenPosition":{"x":0.33139706,"y":0.40994832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9286,"y":156.23228,"z":-75.8666},"screenPosition":{"x":0.36449948,"y":0.39244935},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-366.5574,"y":159.65569,"z":-72.32052},"screenPosition":{"x":0.40826166,"y":0.3178894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.56445,"y":160.25876,"z":-70.699715},"screenPosition":{"x":0.40574482,"y":0.26431143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.89758,"y":158.98674,"z":-70.669014},"screenPosition":{"x":0.37581912,"y":0.23697272},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-371.5497,"y":155.23654,"z":-73.84922},"screenPosition":{"x":0.32073787,"y":0.28994828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.67987,"y":154.65997,"z":-75.37303},"screenPosition":{"x":0.32267162,"y":0.34042674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.4211,"y":155.4439,"z":-75.823166},"screenPosition":{"x":0.3459576,"y":0.3739163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.55612,"y":157.6899,"z":-75.218346},"screenPosition":{"x":0.39209068,"y":0.39535028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.85126,"y":159.67969,"z":-74.770065},"screenPosition":{"x":0.43416715,"y":0.4169808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.39944,"y":160.52556,"z":-74.21282},"screenPosition":{"x":0.44812694,"y":0.41201767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.0562,"y":163.04337,"z":-72.02802},"screenPosition":{"x":0.48462725,"y":0.37441665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.95316,"y":165.1769,"z":-70.07803},"screenPosition":{"x":0.51453125,"y":0.33879277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.34906,"y":166.1422,"z":-67.91271},"screenPosition":{"x":0.514907,"y":0.27045193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.96805,"y":165.64322,"z":-67.0057},"screenPosition":{"x":0.49391067,"y":0.22350846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.54138,"y":163.98691,"z":-67.20981},"screenPosition":{"x":0.45722002,"y":0.19821136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.35352,"y":161.70325,"z":-68.92836},"screenPosition":{"x":0.4214394,"y":0.22156279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.50656,"y":160.84398,"z":-70.7057},"screenPosition":{"x":0.41951045,"y":0.27642077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.32794,"y":159.77708,"z":-72.852295},"screenPosition":{"x":0.4165788,"y":0.34189478},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-362.47455,"y":159.29764,"z":-74.80153},"screenPosition":{"x":0.42546573,"y":0.41089335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.72403,"y":160.13011,"z":-75.46437},"screenPosition":{"x":0.45170355,"y":0.4548321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.51028,"y":161.08847,"z":-76.2523},"screenPosition":{"x":0.48217696,"y":0.5065753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.03412,"y":163.69669,"z":-75.10297},"screenPosition":{"x":0.5314552,"y":0.512797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.28055,"y":166.37804,"z":-71.92951},"screenPosition":{"x":0.5616356,"y":0.4376393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.09818,"y":167.89983,"z":-70.070526},"screenPosition":{"x":0.5781626,"y":0.39306843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.19177,"y":167.99498,"z":-68.3561},"screenPosition":{"x":0.562822,"y":0.32563555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.1311,"y":165.2609,"z":-69.38035},"screenPosition":{"x":0.5093359,"y":0.31216955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.13626,"y":162.91527,"z":-72.10629},"screenPosition":{"x":0.48239878,"y":0.37524113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.9062,"y":162.05377,"z":-74.08698},"screenPosition":{"x":0.48262316,"y":0.437648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.0813,"y":163.37436,"z":-74.33039},"screenPosition":{"x":0.51597583,"y":0.47489393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.01114,"y":165.70212,"z":-73.23125},"screenPosition":{"x":0.5592015,"y":0.47746623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.6393,"y":168.14262,"z":-71.13408},"screenPosition":{"x":0.5948216,"y":0.44180393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.2003,"y":169.95157,"z":-68.61486},"screenPosition":{"x":0.6113199,"y":0.3762005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.42044,"y":168.6134,"z":-67.65505},"screenPosition":{"x":0.5701068,"y":0.30981895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.77637,"y":168.7814,"z":-66.25969},"screenPosition":{"x":0.55973476,"y":0.256775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.0174,"y":165.93457,"z":-68.28197},"screenPosition":{"x":0.5138537,"y":0.28101206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.68448,"y":163.76115,"z":-71.54904},"screenPosition":{"x":0.4965068,"y":0.3695588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.38995,"y":165.58742,"z":-72.089424},"screenPosition":{"x":0.5447935,"y":0.42878127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.76718,"y":168.67508,"z":-68.99086},"screenPosition":{"x":0.58528817,"y":0.36558372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.53406,"y":169.66245,"z":-67.13525},"screenPosition":{"x":0.58935964,"y":0.31026423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.7077,"y":169.62952,"z":-65.49909},"screenPosition":{"x":0.57179165,"y":0.24316695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.61267,"y":168.18083,"z":-65.333954},"screenPosition":{"x":0.5361724,"y":0.20708795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.2883,"y":165.13083,"z":-67.31878},"screenPosition":{"x":0.4851453,"y":0.22573778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.04535,"y":165.02898,"z":-69.64325},"screenPosition":{"x":0.5066194,"y":0.31797698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.52414,"y":167.46278,"z":-68.15613},"screenPosition":{"x":0.5483301,"y":0.30711144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.59335,"y":169.3203,"z":-65.84962},"screenPosition":{"x":0.568138,"y":0.25101006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.06363,"y":169.79752,"z":-64.10374},"screenPosition":{"x":0.561389,"y":0.18978874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.60773,"y":167.08101,"z":-65.84439},"screenPosition":{"x":0.51565766,"y":0.20551156},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-359.91254,"y":163.39668,"z":-72.296906},"screenPosition":{"x":0.49562272,"y":0.3927848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.26373,"y":170.33864,"z":-63.49032},"screenPosition":{"x":0.5677752,"y":0.17598712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.29083,"y":171.89558,"z":-63.064137},"screenPosition":{"x":0.59982455,"y":0.19011675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.31223,"y":173.09254,"z":-62.97912},"screenPosition":{"x":0.62695825,"y":0.21090285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.8076,"y":173.90074,"z":-63.53561},"screenPosition":{"x":0.6516546,"y":0.25005305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.42877,"y":174.01544,"z":-64.67744},"screenPosition":{"x":0.66601264,"y":0.29860246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.16443,"y":172.71664,"z":-67.08692},"screenPosition":{"x":0.66022015,"y":0.36966702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.77643,"y":169.89185,"z":-69.4189},"screenPosition":{"x":0.6180453,"y":0.40688083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.70428,"y":168.16048,"z":-69.507286},"screenPosition":{"x":0.5785082,"y":0.3757789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.71213,"y":168.02373,"z":-68.055756},"screenPosition":{"x":0.560416,"y":0.31406626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.77637,"y":168.7814,"z":-66.25969},"screenPosition":{"x":0.55973476,"y":0.256775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.67404,"y":170.1751,"z":-64.47897},"screenPosition":{"x":0.57409525,"y":0.21281174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.67966,"y":172.25783,"z":-62.519623},"screenPosition":{"x":0.6027521,"y":0.17549048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.4844,"y":174.53926,"z":-61.004417},"screenPosition":{"x":0.64060843,"y":0.16020429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.92322,"y":176.17575,"z":-60.287254},"screenPosition":{"x":0.6715812,"y":0.16429581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.4814,"y":177.49857,"z":-60.32732},"screenPosition":{"x":0.7029691,"y":0.1927444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.55936,"y":177.86722,"z":-61.515953},"screenPosition":{"x":0.7238046,"y":0.24847928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.49585,"y":176.36972,"z":-63.481293},"screenPosition":{"x":0.7087314,"y":0.29754254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.8048,"y":173.4146,"z":-66.09489},"screenPosition":{"x":0.66654414,"y":0.3441051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.65262,"y":171.81133,"z":-66.10501},"screenPosition":{"x":0.6291037,"y":0.31200704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.57468,"y":171.44266,"z":-64.916374},"screenPosition":{"x":0.6082682,"y":0.25627217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.88406,"y":172.91588,"z":-62.844677},"screenPosition":{"x":0.621499,"y":0.20203115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.46152,"y":174.82196,"z":-60.750885},"screenPosition":{"x":0.64463687,"y":0.15566562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.1576,"y":177.15417,"z":-59.24504},"screenPosition":{"x":0.68379396,"y":0.14181998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.43628,"y":179.04686,"z":-58.37134},"screenPosition":{"x":0.7191458,"y":0.1447238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.62354,"y":180.34763,"z":-58.1017},"screenPosition":{"x":0.74683785,"y":0.16015103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.18173,"y":181.67044,"z":-58.14176},"screenPosition":{"x":0.7782257,"y":0.18859963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.4484,"y":181.86021,"z":-59.399303},"screenPosition":{"x":0.7955796,"y":0.24350503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.78943,"y":181.56189,"z":-61.07628},"screenPosition":{"x":0.80536264,"y":0.30495715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.02325,"y":179.8347,"z":-63.101166},"screenPosition":{"x":0.78563696,"y":0.35190743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.7432,"y":177.69896,"z":-65.2545},"screenPosition":{"x":0.7582441,"y":0.3968562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.69257,"y":175.4418,"z":-66.87607},"screenPosition":{"x":0.72193587,"y":0.41667554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.83203,"y":173.24884,"z":-67.286896},"screenPosition":{"x":0.6747646,"y":0.38870782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.27942,"y":174.00874,"z":-65.28748},"screenPosition":{"x":0.67216855,"y":0.32337075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.16064,"y":175.30533,"z":-63.081345},"screenPosition":{"x":0.6798824,"y":0.26008934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.76666,"y":177.2887,"z":-60.899918},"screenPosition":{"x":0.7037696,"y":0.21148348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.19547,"y":178.44826,"z":-59.585445},"screenPosition":{"x":0.7174807,"y":0.1817391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.97162,"y":180.65237,"z":-58.15787},"screenPosition":{"x":0.754316,"y":0.16837946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.6099,"y":181.84709,"z":-58.276203},"screenPosition":{"x":0.7834944,"y":0.19739519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.65988,"y":183.12135,"z":-58.103554},"screenPosition":{"x":0.8117169,"y":0.21637928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.40683,"y":184.26527,"z":-58.212524},"screenPosition":{"x":0.83971584,"y":0.24408683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.7198,"y":186.59528,"z":-56.91003},"screenPosition":{"x":0.8875311,"y":0.24634327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.11496,"y":188.30042,"z":-54.57544},"screenPosition":{"x":0.8968688,"y":0.17823574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.44873,"y":188.01128,"z":-53.095825},"screenPosition":{"x":0.87431085,"y":0.11202301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.2272,"y":186.27321,"z":-53.794262},"screenPosition":{"x":0.841378,"y":0.10541468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.39957,"y":184.27448,"z":-55.055935},"screenPosition":{"x":0.80752575,"y":0.11611272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.9422,"y":183.03763,"z":-56.45804},"screenPosition":{"x":0.7929561,"y":0.14796047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.72437,"y":180.4336,"z":-59.543865},"screenPosition":{"x":0.7636561,"y":0.22044738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.6257,"y":180.96132,"z":-60.15054},"screenPosition":{"x":0.7822422,"y":0.25577947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.08182,"y":180.23238,"z":-61.646263},"screenPosition":{"x":0.7805276,"y":0.30172703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.92032,"y":180.2455,"z":-62.769363},"screenPosition":{"x":0.79197264,"y":0.3469855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.3619,"y":181.74332,"z":-64.175415},"screenPosition":{"x":0.819913,"y":0.39444852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.78748,"y":183.30348,"z":-61.489216},"screenPosition":{"x":0.85948044,"y":0.37361142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.69678,"y":185.33778,"z":-60.097755},"screenPosition":{"x":0.86222374,"y":0.3017745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.54257,"y":185.77144,"z":-57.77698},"screenPosition":{"x":0.8785067,"y":0.26610956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.3275,"y":183.65355,"z":-58.30353},"screenPosition":{"x":0.8262267,"y":0.23528238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.5214,"y":181.12904,"z":-61.098377},"screenPosition":{"x":0.79590034,"y":0.2976635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.1933,"y":181.77818,"z":-62.236828},"screenPosition":{"x":0.8227885,"y":0.3570478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.49814,"y":184.80289,"z":-60.704548},"screenPosition":{"x":0.8599612,"y":0.31998017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.7027,"y":185.51526,"z":-57.93352},"screenPosition":{"x":0.8661225,"y":0.2581041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.0079,"y":185.14882,"z":-56.54154},"screenPosition":{"x":0.84325165,"y":0.19415832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.8254,"y":191.06953,"z":-53.595474},"screenPosition":{"x":0.93737245,"y":0.16240154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.37784,"y":191.07887,"z":-51.827404},"screenPosition":{"x":0.93990463,"y":0.13162848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.97403,"y":189.13986,"z":-52.28504},"screenPosition":{"x":0.8930131,"y":0.1022645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.9577,"y":187.32002,"z":-53.47781},"screenPosition":{"x":0.8626425,"y":0.11379201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.79196,"y":185.49348,"z":-55.280624},"screenPosition":{"x":0.8383779,"y":0.14995226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.2488,"y":184.02472,"z":-56.94562},"screenPosition":{"x":0.82107645,"y":0.18777147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.53986,"y":182.45213,"z":-58.795246},"screenPosition":{"x":0.80317,"y":0.23090954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.5907,"y":181.26384,"z":-60.41006},"screenPosition":{"x":0.7919905,"y":0.27245027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.52866,"y":178.28668,"z":-62.71395},"screenPosition":{"x":0.7459256,"y":0.30562413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.38785,"y":177.4034,"z":-62.04174},"screenPosition":{"x":0.7182974,"y":0.2603481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.5443,"y":178.01317,"z":-59.81089},"screenPosition":{"x":0.70970595,"y":0.1821953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.87585,"y":179.94353,"z":-57.823452},"screenPosition":{"x":0.7345185,"y":0.14066029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.0866,"y":181.94449,"z":-56.35843},"screenPosition":{"x":0.7663354,"y":0.12175133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.81635,"y":183.73112,"z":-55.872704},"screenPosition":{"x":0.80295336,"y":0.1380965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.14017,"y":184.0755,"z":-56.954983},"screenPosition":{"x":0.8222987,"y":0.18912949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.20746,"y":182.98433,"z":-58.99522},"screenPosition":{"x":0.8177548,"y":0.24989188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.30978,"y":181.59064,"z":-60.775936},"screenPosition":{"x":0.8032289,"y":0.29371366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.56653,"y":179.58075,"z":-63.054356},"screenPosition":{"x":0.7795185,"y":0.34535155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.96832,"y":177.46062,"z":-63.784252},"screenPosition":{"x":0.7375694,"y":0.3323299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.50156,"y":176.72972,"z":-63.14013},"screenPosition":{"x":0.71384126,"y":0.2913579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.6232,"y":174.19656,"z":-64.405174},"screenPosition":{"x":0.6675089,"y":0.2913566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.95355,"y":172.4384,"z":-66.933754},"screenPosition":{"x":0.6521726,"y":0.35792804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.26093,"y":172.68567,"z":-67.590614},"screenPosition":{"x":0.6647657,"y":0.3898307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.0758,"y":173.72131,"z":-68.29091},"screenPosition":{"x":0.69604415,"y":0.43878436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.8972,"y":172.65442,"z":-70.4375},"screenPosition":{"x":0.693023,"y":0.5039287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.40393,"y":174.18263,"z":-70.31166},"screenPosition":{"x":0.7278185,"y":0.530883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.34503,"y":176.31242,"z":-70.33638},"screenPosition":{"x":0.75598544,"y":0.5344705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.31537,"y":177.74707,"z":-67.89098},"screenPosition":{"x":0.7968231,"y":0.5240775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.5176,"y":180.06367,"z":-66.16529},"screenPosition":{"x":0.80147815,"y":0.44205037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.5358,"y":180.0002,"z":-64.25235},"screenPosition":{"x":0.80184466,"y":0.40282896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.24637,"y":178.3704,"z":-64.35947},"screenPosition":{"x":0.7647791,"y":0.37413138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.83615,"y":176.81122,"z":-64.989},"screenPosition":{"x":0.7347301,"y":0.36807606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.6947,"y":174.94505,"z":-65.7657},"screenPosition":{"x":0.6990034,"y":0.36177176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.49533,"y":173.6641,"z":-66.54839},"screenPosition":{"x":0.6770423,"y":0.3675768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.99365,"y":171.51299,"z":-67.78198},"screenPosition":{"x":0.6393336,"y":0.3740449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.5713,"y":169.97362,"z":-68.92457},"screenPosition":{"x":0.6149268,"y":0.3887088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.7951,"y":167.76949,"z":-70.35214},"screenPosition":{"x":0.57802886,"y":0.40216297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.8682,"y":165.3156,"z":-73.6694},"screenPosition":{"x":0.5546348,"y":0.48691356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.93466,"y":166.68697,"z":-73.92218},"screenPosition":{"x":0.58935714,"y":0.52548814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.6129,"y":168.679,"z":-73.27055},"screenPosition":{"x":0.6291764,"y":0.53851473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.8687,"y":170.85439,"z":-72.14332},"screenPosition":{"x":0.6686844,"y":0.5377652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.79498,"y":172.32538,"z":-70.27497},"screenPosition":{"x":0.68395054,"y":0.49173507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.12653,"y":174.25574,"z":-68.28753},"screenPosition":{"x":0.7087509,"y":0.45018387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.19226,"y":173.53377,"z":-66.83002},"screenPosition":{"x":0.6767881,"y":0.3760818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.6163,"y":170.14804,"z":-69.26236},"screenPosition":{"x":0.6225625,"y":0.40644395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.39624,"y":169.76349,"z":-71.84036},"screenPosition":{"x":0.64002836,"y":0.50334513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.8165,"y":171.7996,"z":-71.80814},"screenPosition":{"x":0.6872064,"y":0.5426391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.35825,"y":173.02531,"z":-71.42278},"screenPosition":{"x":0.71212417,"y":0.5525294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.26025,"y":174.53593,"z":-70.58054},"screenPosition":{"x":0.746657,"y":0.55490273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.6299,"y":177.07954,"z":-69.46615},"screenPosition":{"x":0.77012795,"y":0.52028894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.03534,"y":178.76506,"z":-67.63848},"screenPosition":{"x":0.78619194,"y":0.47553197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.90833,"y":180.52193,"z":-65.561005},"screenPosition":{"x":0.80553585,"y":0.4259392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.09616,"y":180.82626,"z":-63.18205},"screenPosition":{"x":0.81020087,"y":0.3761232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.97824,"y":179.66028,"z":-62.763374},"screenPosition":{"x":0.7785989,"y":0.33548272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.96832,"y":177.46062,"z":-63.784252},"screenPosition":{"x":0.7375694,"y":0.3323299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.2315,"y":175.0709,"z":-65.89078},"screenPosition":{"x":0.7030879,"y":0.36903092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.60184,"y":174.11006,"z":-67.6494},"screenPosition":{"x":0.6987209,"y":0.4211236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.37747,"y":173.60857,"z":-69.288925},"screenPosition":{"x":0.70365226,"y":0.47700667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.78073,"y":172.84196,"z":-71.89839},"screenPosition":{"x":0.71240884,"y":0.56704384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.55753,"y":176.02898,"z":-69.021904},"screenPosition":{"x":0.75613,"y":0.51163113},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-341.91748,"y":156.19577,"z":-89.98288},"screenPosition":{"x":0.48056898,"y":0.93406796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.61032,"y":157.09654,"z":-90.34867},"screenPosition":{"x":0.5114501,"y":0.95735884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.508,"y":157.65504,"z":-89.98455},"screenPosition":{"x":0.5473902,"y":0.9913609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-334.5578,"y":159.0893,"z":-89.015656},"screenPosition":{"x":0.5760479,"y":1.0020984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-335.46005,"y":161.15302,"z":-86.64179},"screenPosition":{"x":0.59942687,"y":0.94649434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.39746,"y":162.98991,"z":-85.44983},"screenPosition":{"x":0.5991648,"y":0.87795794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.87003,"y":162.61139,"z":-83.562744},"screenPosition":{"x":0.59288865,"y":0.8342661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.1059,"y":162.11017,"z":-82.85908},"screenPosition":{"x":0.5738832,"y":0.7944248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.1481,"y":160.688,"z":-82.59694},"screenPosition":{"x":0.5379335,"y":0.7560541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.7265,"y":158.40881,"z":-83.9088},"screenPosition":{"x":0.4980287,"y":0.7631027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.17764,"y":156.58005,"z":-85.914955},"screenPosition":{"x":0.47585106,"y":0.80679256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.48514,"y":155.10458,"z":-88.19},"screenPosition":{"x":0.46460387,"y":0.8699258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.47888,"y":155.9766,"z":-89.89387},"screenPosition":{"x":0.480555,"y":0.9161847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.25284,"y":156.46255,"z":-89.66287},"screenPosition":{"x":0.50904167,"y":0.9541491},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.3943,"y":158.32874,"z":-88.88616},"screenPosition":{"x":0.5472511,"y":0.96356505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.5598,"y":160.73436,"z":-88.0086},"screenPosition":{"x":0.5726144,"y":0.9361118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-336.1168,"y":162.17613,"z":-85.41448},"screenPosition":{"x":0.60960877,"y":0.91523355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-338.89355,"y":164.32582,"z":-83.93435},"screenPosition":{"x":0.61488974,"y":0.8435152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.1387,"y":164.02713,"z":-82.09173},"screenPosition":{"x":0.6109399,"y":0.80324787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.91785,"y":163.27196,"z":-81.341255},"screenPosition":{"x":0.5855514,"y":0.7574654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.11942,"y":162.33344,"z":-81.06638},"screenPosition":{"x":0.5607519,"y":0.7272753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.96722,"y":160.73015,"z":-81.0765},"screenPosition":{"x":0.52331144,"y":0.69517726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.61426,"y":157.60284,"z":-83.14896},"screenPosition":{"x":0.4713976,"y":0.7154378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.34348,"y":156.68385,"z":-85.73033},"screenPosition":{"x":0.47633505,"y":0.8020829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.87878,"y":158.28937,"z":-85.51686},"screenPosition":{"x":0.5117402,"y":0.82597005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.84366,"y":160.3146,"z":-84.158195},"screenPosition":{"x":0.5452175,"y":0.8118715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.32892,"y":162.36859,"z":-82.49918},"screenPosition":{"x":0.5762846,"y":0.78616166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.80487,"y":163.20581,"z":-80.41214},"screenPosition":{"x":0.5744642,"y":0.7184013},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-348.42493,"y":156.79883,"z":-84.52896},"screenPosition":{"x":0.46669418,"y":0.7556374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.38705,"y":155.50476,"z":-84.18856},"screenPosition":{"x":0.43289614,"y":0.7155774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.02313,"y":156.08578,"z":-82.25805},"screenPosition":{"x":0.42668357,"y":0.6489781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.41904,"y":157.0511,"z":-80.092735},"screenPosition":{"x":0.42705932,"y":0.5806373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.168,"y":159.42099,"z":-77.47315},"screenPosition":{"x":0.45566288,"y":0.5223327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.30872,"y":162.027,"z":-76.52717},"screenPosition":{"x":0.5069765,"y":0.53676534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.39233,"y":162.75566,"z":-77.37464},"screenPosition":{"x":0.5327399,"y":0.5859483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.52176,"y":162.91891,"z":-78.72917},"screenPosition":{"x":0.5504687,"y":0.64425415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.4747,"y":161.51852,"z":-81.11994},"screenPosition":{"x":0.5422191,"y":0.7129265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.58926,"y":158.3823,"z":-84.00579},"screenPosition":{"x":0.4984234,"y":0.76612115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.9053,"y":156.03026,"z":-84.99858},"screenPosition":{"x":0.45351756,"y":0.7591204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.77524,"y":154.8841,"z":-85.09296},"screenPosition":{"x":0.42764664,"y":0.73971224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.91965,"y":153.79097,"z":-84.99335},"screenPosition":{"x":0.40102592,"y":0.71350306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.14984,"y":152.92973,"z":-84.630844},"screenPosition":{"x":0.37713704,"y":0.6813225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.02548,"y":152.14359,"z":-84.38406},"screenPosition":{"x":0.35619405,"y":0.6553623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.25565,"y":151.28236,"z":-84.02156},"screenPosition":{"x":0.3325022,"y":0.62255114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.43436,"y":150.62654,"z":-83.49316},"screenPosition":{"x":0.31211808,"y":0.58678895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.75598,"y":150.35722,"z":-82.526596},"screenPosition":{"x":0.29574564,"y":0.542645},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-365.63712,"y":153.37653,"z":-78.70227},"screenPosition":{"x":0.32673657,"y":0.44967547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.95514,"y":155.08362,"z":-78.50752},"screenPosition":{"x":0.36481315,"y":0.47608578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.81717,"y":155.79694,"z":-78.43524},"screenPosition":{"x":0.3807534,"y":0.48764923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.0909,"y":156.58978,"z":-78.071976},"screenPosition":{"x":0.39551154,"y":0.4892388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.94217,"y":157.56598,"z":-77.23311},"screenPosition":{"x":0.40975958,"y":0.47497386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.05643,"y":159.59792,"z":-75.2644},"screenPosition":{"x":0.43728608,"y":0.43552276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.07773,"y":162.5176,"z":-73.561195},"screenPosition":{"x":0.48804817,"y":0.42600596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.51514,"y":163.91101,"z":-74.12367},"screenPosition":{"x":0.52642316,"y":0.47729057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.3994,"y":163.35873,"z":-75.75384},"screenPosition":{"x":0.530244,"y":0.53117335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.89145,"y":157.03156,"z":-77.23649},"screenPosition":{"x":0.39727944,"y":0.46427453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.1616,"y":156.96765,"z":-76.10402},"screenPosition":{"x":0.38415694,"y":0.41699955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.49472,"y":155.69562,"z":-76.07332},"screenPosition":{"x":0.35417935,"y":0.38967133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.22174,"y":154.16295,"z":-76.60586},"screenPosition":{"x":0.32380688,"y":0.38016123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.06815,"y":152.31659,"z":-77.895615},"screenPosition":{"x":0.2937381,"y":0.3952501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.46213,"y":150.33322,"z":-80.07704},"screenPosition":{"x":0.26958448,"y":0.44378525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9633,"y":149.7787,"z":-81.91056},"screenPosition":{"x":0.27574092,"y":0.50632286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.24133,"y":150.68849,"z":-82.48577},"screenPosition":{"x":0.3030194,"y":0.5478215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.31992,"y":152.04004,"z":-82.225494},"screenPosition":{"x":0.3316095,"y":0.5656228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.32413,"y":153.8797,"z":-81.54578},"screenPosition":{"x":0.36771113,"y":0.5753276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.15112,"y":154.89554,"z":-81.73302},"screenPosition":{"x":0.39351812,"y":0.603101},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-356.35007,"y":163.06738,"z":-74.47757},"screenPosition":{"x":0.5102997,"y":0.47461796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.69098,"y":164.49178,"z":-74.536354},"screenPosition":{"x":0.544257,"y":0.5059135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.25363,"y":164.2088,"z":-77.13309},"screenPosition":{"x":0.5642885,"y":0.6056055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.0007,"y":160.79683,"z":-77.31923},"screenPosition":{"x":0.4863009,"y":0.54398036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.9719,"y":164.16498,"z":-74.17048},"screenPosition":{"x":0.5328532,"y":0.4840787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.30206,"y":165.85226,"z":-73.462685},"screenPosition":{"x":0.56506115,"y":0.489216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.51862,"y":166.49051,"z":-73.27468},"screenPosition":{"x":0.5780622,"y":0.49454704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.22116,"y":168.4429,"z":-71.59695},"screenPosition":{"x":0.60660523,"y":0.46668562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.05524,"y":170.06181,"z":-70.16338},"screenPosition":{"x":0.6297985,"y":0.44130728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.9122,"y":171.39801,"z":-68.98335},"screenPosition":{"x":0.64889073,"y":0.4201338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.83203,"y":173.24884,"z":-67.286896},"screenPosition":{"x":0.6747646,"y":0.38870782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.67825,"y":174.84793,"z":-65.34028},"screenPosition":{"x":0.6923617,"y":0.34252998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.11917,"y":175.98766,"z":-63.512753},"screenPosition":{"x":0.7002897,"y":0.29144046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.00116,"y":176.5444,"z":-61.47589},"screenPosition":{"x":0.6924167,"y":0.22003068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.74524,"y":176.09175,"z":-60.984936},"screenPosition":{"x":0.6767766,"y":0.19091903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.63882,"y":173.92307,"z":-61.50212},"screenPosition":{"x":0.6313015,"y":0.16794394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.26794,"y":172.1783,"z":-62.810604},"screenPosition":{"x":0.60384595,"y":0.18558113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.39316,"y":170.50189,"z":-64.84485},"screenPosition":{"x":0.585504,"y":0.23429298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.22668,"y":169.41519,"z":-66.47839},"screenPosition":{"x":0.5768262,"y":0.2785816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.6828,"y":168.68625,"z":-67.97411},"screenPosition":{"x":0.57507354,"y":0.3241279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.3562,"y":167.85573,"z":-69.45112},"screenPosition":{"x":0.57082605,"y":0.36765674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.33267,"y":167.15553,"z":-70.6465},"screenPosition":{"x":0.5666865,"y":0.4017443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.8581,"y":166.56139,"z":-71.4539},"screenPosition":{"x":0.5610769,"y":0.42272726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.02972,"y":165.30247,"z":-72.5463},"screenPosition":{"x":0.5428086,"y":0.44099241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.4944,"y":163.69696,"z":-72.75977},"screenPosition":{"x":0.50740635,"y":0.41766652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.5295,"y":161.67172,"z":-74.11844},"screenPosition":{"x":0.47392908,"y":0.43176502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.7698,"y":159.56471,"z":-75.971436},"screenPosition":{"x":0.44372866,"y":0.4636634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.12875,"y":157.88385,"z":-78.412384},"screenPosition":{"x":0.42930958,"y":0.5292988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.14456,"y":156.99808,"z":-80.28672},"screenPosition":{"x":0.4278924,"y":0.58697194},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.33548,"y":157.43288,"z":-82.404465},"screenPosition":{"x":0.45973182,"y":0.68223715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.44202,"y":157.87885,"z":-83.50547},"screenPosition":{"x":0.48147792,"y":0.7359815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.0402,"y":159.99898,"z":-82.77557},"screenPosition":{"x":0.52363217,"y":0.7493357},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-342.9406,"y":164.71198,"z":-79.97659},"screenPosition":{"x":0.60526305,"y":0.73125756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.85043,"y":166.08586,"z":-77.68283},"screenPosition":{"x":0.61388755,"y":0.66598564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.82892,"y":166.61163,"z":-76.14966},"screenPosition":{"x":0.61046004,"y":0.6143982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.44794,"y":166.11264,"z":-75.24264},"screenPosition":{"x":0.5894291,"y":0.5670244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.82684,"y":164.2752,"z":-75.719},"screenPosition":{"x":0.5513268,"y":0.549539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.61038,"y":161.91425,"z":-77.52519},"screenPosition":{"x":0.51458204,"y":0.575},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-347.1438,"y":160.57108,"z":-81.65846},"screenPosition":{"x":0.5256009,"y":0.7135201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.10803,"y":161.61342,"z":-81.74871},"screenPosition":{"x":0.55087745,"y":0.73900473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.59125,"y":162.44144,"z":-82.81825},"screenPosition":{"x":0.58117646,"y":0.798754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.5389,"y":165.10939,"z":-80.86489},"screenPosition":{"x":0.62368834,"y":0.7753811},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-342.0996,"y":172.0865,"z":-73.491104},"screenPosition":{"x":0.71009105,"y":0.6125226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.1632,"y":171.8613,"z":-73.14395},"screenPosition":{"x":0.70234746,"y":0.59806406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.87872,"y":171.33133,"z":-72.74063},"screenPosition":{"x":0.68598497,"y":0.5716873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.7201,"y":170.10786,"z":-72.92264},"screenPosition":{"x":0.65920347,"y":0.55426955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.97314,"y":168.96394,"z":-72.81367},"screenPosition":{"x":0.63127166,"y":0.5264902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.78592,"y":167.66318,"z":-73.08331},"screenPosition":{"x":0.60360515,"y":0.5112232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.87885,"y":166.77544,"z":-72.8178},"screenPosition":{"x":0.5800912,"y":0.4824431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.31485,"y":166.81534,"z":-71.50072},"screenPosition":{"x":0.5674852,"y":0.4294439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.93835,"y":162.98784,"z":-74.76855},"screenPosition":{"x":0.5114528,"y":0.48429975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.78604,"y":163.10728,"z":-73.160484},"screenPosition":{"x":0.49773535,"y":0.4217171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.6902,"y":164.12115,"z":-71.20788},"screenPosition":{"x":0.5014079,"y":0.36325908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.2962,"y":166.10452,"z":-69.02645},"screenPosition":{"x":0.52545846,"y":0.31490695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.181,"y":168.25786,"z":-67.589516},"screenPosition":{"x":0.56113183,"y":0.30022794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.91074,"y":170.0445,"z":-67.10379},"screenPosition":{"x":0.5979445,"y":0.31649184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.687,"y":170.52591,"z":-67.2944},"screenPosition":{"x":0.61121327,"y":0.3342339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.68552,"y":172.00555,"z":-66.95586},"screenPosition":{"x":0.642387,"y":0.35049063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.27234,"y":173.40567,"z":-66.90829},"screenPosition":{"x":0.6746051,"y":0.37669805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.81915,"y":174.00848,"z":-67.63068},"screenPosition":{"x":0.69593674,"y":0.4176714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.0294,"y":173.30382,"z":-69.23276},"screenPosition":{"x":0.6959509,"y":0.46856213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.7779,"y":171.24538,"z":-71.29846},"screenPosition":{"x":0.66910243,"y":0.51111436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.322,"y":168.52887,"z":-73.039116},"screenPosition":{"x":0.6233245,"y":0.52630407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.89014,"y":169.21817,"z":-70.51729},"screenPosition":{"x":0.61367595,"y":0.43856987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.0837,"y":171.86183,"z":-68.457565},"screenPosition":{"x":0.6544381,"y":0.4085475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.66547,"y":173.88484,"z":-67.302246},"screenPosition":{"x":0.6899507,"y":0.40265992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.93845,"y":175.41753,"z":-66.769714},"screenPosition":{"x":0.7203746,"y":0.4121157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.6625,"y":176.84415,"z":-66.62515},"screenPosition":{"x":0.7522981,"y":0.43517333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.13495,"y":177.93506,"z":-66.92811},"screenPosition":{"x":0.7846419,"y":0.47170353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.7225,"y":177.92273,"z":-68.59405},"screenPosition":{"x":0.7762768,"y":0.4972493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-340.75336,"y":175.8495,"z":-70.009285},"screenPosition":{"x":0.77304286,"y":0.569212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.63925,"y":174.41196,"z":-72.49234},"screenPosition":{"x":0.7336147,"y":0.5834695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.47122,"y":173.09145,"z":-72.3519},"screenPosition":{"x":0.72169,"y":0.5863198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.9302,"y":171.12593,"z":-72.90653},"screenPosition":{"x":0.6828647,"y":0.57419974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.07526,"y":171.01569,"z":-71.35801},"screenPosition":{"x":0.6643997,"y":0.50915146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.6298,"y":173.20447,"z":-69.01068},"screenPosition":{"x":0.69134164,"y":0.4575157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.60037,"y":175.5897,"z":-67.31085},"screenPosition":{"x":0.7299621,"y":0.4375779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.86185,"y":178.1251,"z":-65.84245},"screenPosition":{"x":0.7742592,"y":0.42936832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.88553,"y":177.76778,"z":-68.68539},"screenPosition":{"x":0.77311647,"y":0.49694797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.24744,"y":176.05545,"z":-69.67509},"screenPosition":{"x":0.77314335,"y":0.55780894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.78113,"y":174.79399,"z":-72.058945},"screenPosition":{"x":0.7381117,"y":0.57361966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.38153,"y":173.71793,"z":-73.27966},"screenPosition":{"x":0.7254452,"y":0.6013633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-341.92084,"y":172.47746,"z":-74.68688},"screenPosition":{"x":0.7109437,"y":0.6328636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.3227,"y":170.62221,"z":-74.749405},"screenPosition":{"x":0.6900014,"y":0.63886714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.861,"y":169.26842,"z":-75.213036},"screenPosition":{"x":0.6630592,"y":0.6302408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.95972,"y":167.01796,"z":-76.22455},"screenPosition":{"x":0.6206061,"y":0.62453175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.719,"y":164.69662,"z":-79.05685},"screenPosition":{"x":0.59546137,"y":0.69360346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.3116,"y":164.73402,"z":-80.2863},"screenPosition":{"x":0.6088284,"y":0.7427855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.6141,"y":166.266,"z":-81.73333},"screenPosition":{"x":0.63772804,"y":0.7934921},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-336.39816,"y":168.98581,"z":-78.23061},"screenPosition":{"x":0.7048801,"y":0.7793079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-337.98212,"y":170.61874,"z":-76.14276},"screenPosition":{"x":0.717528,"y":0.71996397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-339.4295,"y":171.51427,"z":-74.8584},"screenPosition":{"x":0.7205727,"y":0.67721105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-342.11746,"y":173.00693,"z":-74.08623},"screenPosition":{"x":0.7170761,"y":0.61969435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.3633,"y":172.40242,"z":-72.53053},"screenPosition":{"x":0.70863736,"y":0.58386064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.35974,"y":171.54565,"z":-71.76133},"screenPosition":{"x":0.6808663,"y":0.5359264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.3898,"y":170.14331,"z":-72.01225},"screenPosition":{"x":0.65068734,"y":0.51802546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.05396,"y":168.09602,"z":-73.06121},"screenPosition":{"x":0.613431,"y":0.5184634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.04266,"y":165.65329,"z":-75.36173},"screenPosition":{"x":0.57992953,"y":0.5629758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.0978,"y":164.58192,"z":-77.91502},"screenPosition":{"x":0.5810534,"y":0.6449185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-343.4093,"y":168.39157,"z":-76.27398},"screenPosition":{"x":0.65341747,"y":0.6555366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.31912,"y":169.76544,"z":-73.98021},"screenPosition":{"x":0.6620419,"y":0.5902647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.5252,"y":161.5548,"z":-73.17996},"screenPosition":{"x":0.4615564,"y":0.39129096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.50885,"y":159.73494,"z":-74.372734},"screenPosition":{"x":0.4312602,"y":0.40251485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.77267,"y":158.32812,"z":-75.03035},"screenPosition":{"x":0.4049933,"y":0.4009931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.14514,"y":156.87053,"z":-75.678604},"screenPosition":{"x":0.37751532,"y":0.39775774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.87216,"y":155.33784,"z":-76.211136},"screenPosition":{"x":0.3472775,"y":0.38788706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.35327,"y":153.82945,"z":-76.85003},"screenPosition":{"x":0.31849954,"y":0.38332716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.92017,"y":152.55296,"z":-77.22603},"screenPosition":{"x":0.29243538,"y":0.37280667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.67575,"y":151.0976,"z":-77.67093},"screenPosition":{"x":0.2627829,"y":0.36159357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.68292,"y":149.97795,"z":-77.66831},"screenPosition":{"x":0.2365371,"y":0.3387849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.11893,"y":150.01785,"z":-76.35123},"screenPosition":{"x":0.22395031,"y":0.28611898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.74783,"y":151.71852,"z":-74.42333},"screenPosition":{"x":0.24398354,"y":0.24232832},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-374.18008,"y":155.45757,"z":-72.25987},"screenPosition":{"x":0.30933106,"y":0.23030417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.93854,"y":155.59877,"z":-73.3047},"screenPosition":{"x":0.32336414,"y":0.27558866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.60623,"y":154.40825,"z":-75.12287},"screenPosition":{"x":0.31415063,"y":0.3252682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.6578,"y":152.48013,"z":-76.90696},"screenPosition":{"x":0.28731498,"y":0.3586085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.82513,"y":151.1043,"z":-77.06088},"screenPosition":{"x":0.25667697,"y":0.33696085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.87228,"y":150.78195,"z":-76.28831},"screenPosition":{"x":0.24119757,"y":0.29905778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.0902,"y":151.66327,"z":-74.82067},"screenPosition":{"x":0.24690719,"y":0.25719866},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-374.4203,"y":155.07327,"z":-72.49468},"screenPosition":{"x":0.30293244,"y":0.23182645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.62534,"y":156.71423,"z":-71.37083},"screenPosition":{"x":0.32963172,"y":0.21968868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.2243,"y":158.09453,"z":-70.8102},"screenPosition":{"x":0.35619912,"y":0.22491452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.28503,"y":159.1059,"z":-71.40414},"screenPosition":{"x":0.38597983,"y":0.26953596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.12363,"y":157.3963,"z":-74.14543},"screenPosition":{"x":0.3740912,"y":0.3461624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8285,"y":155.4065,"z":-74.593704},"screenPosition":{"x":0.3320944,"y":0.32402465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.298,"y":156.62354,"z":-72.67855},"screenPosition":{"x":0.340933,"y":0.27094463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.33295,"y":158.04375,"z":-70.80084},"screenPosition":{"x":0.35492054,"y":0.22349457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.3493,"y":159.86359,"z":-69.60807},"screenPosition":{"x":0.3852842,"y":0.21197702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1133,"y":162.08752,"z":-68.69355},"screenPosition":{"x":0.42797413,"y":0.21994027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.39716,"y":161.6346,"z":-70.54579},"screenPosition":{"x":0.43638283,"y":0.2859591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.76254,"y":159.57391,"z":-72.81485},"screenPosition":{"x":0.41156834,"y":0.33587068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.4496,"y":157.24393,"z":-74.11734},"screenPosition":{"x":0.37023136,"y":0.3419403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.2344,"y":156.84875,"z":-73.0257},"screenPosition":{"x":0.34977072,"y":0.28960592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.96048,"y":159.50134,"z":-70.15259},"screenPosition":{"x":0.38254496,"y":0.22647841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.06763,"y":160.9302,"z":-69.80467},"screenPosition":{"x":0.4122798,"y":0.24158663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.08765,"y":161.8841,"z":-70.9993},"screenPosition":{"x":0.446881,"y":0.30943084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.9155,"y":160.43738,"z":-72.974},"screenPosition":{"x":0.43327528,"y":0.3602714},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-363.80707,"y":157.04272,"z":-76.21974},"screenPosition":{"x":0.38715473,"y":0.4230623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.389,"y":155.62029,"z":-78.3008},"screenPosition":{"x":0.37515756,"y":0.478871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.67856,"y":155.52736,"z":-79.811874},"screenPosition":{"x":0.38849416,"y":0.5383378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.1909,"y":159.13829,"z":-77.726685},"screenPosition":{"x":0.4517019,"y":0.52653235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.51242,"y":160.5917,"z":-75.14193},"screenPosition":{"x":0.45914534,"y":0.4514209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.29724,"y":160.19653,"z":-74.05029},"screenPosition":{"x":0.43868473,"y":0.39908648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.42877,"y":174.01544,"z":-64.67744},"screenPosition":{"x":0.66601264,"y":0.29860246},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-367.65558,"y":154.69962,"z":-76.39913},"screenPosition":{"x":0.3344297,"y":0.3822629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.1639,"y":153.02545,"z":-78.230034},"screenPosition":{"x":0.31366742,"y":0.42338377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.42487,"y":152.85521,"z":-79.82874},"screenPosition":{"x":0.3260934,"y":0.4848411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.66855,"y":155.05042,"z":-79.21456},"screenPosition":{"x":0.3711936,"y":0.50441575},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-364.96783,"y":157.76942,"z":-74.92737},"screenPosition":{"x":0.39085275,"y":0.38548332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.54114,"y":156.11311,"z":-75.13147},"screenPosition":{"x":0.3541621,"y":0.36018622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.99368,"y":154.52742,"z":-75.857994},"screenPosition":{"x":0.32472283,"y":0.3570961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.08597,"y":152.65678,"z":-77.0414},"screenPosition":{"x":0.2928518,"y":0.3676159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.51498,"y":150.3709,"z":-78.9633},"screenPosition":{"x":0.25903302,"y":0.39933023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.23343,"y":149.71478,"z":-80.7781},"screenPosition":{"x":0.2629464,"y":0.4585409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07764,"y":150.08792,"z":-81.56003},"screenPosition":{"x":0.27906457,"y":0.4990222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.03616,"y":150.77025,"z":-81.99144},"screenPosition":{"x":0.29949456,"y":0.5303193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.86447,"y":157.6955,"z":-83.98108},"screenPosition":{"x":0.482192,"y":0.7498683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.74875,"y":157.14322,"z":-85.611244},"screenPosition":{"x":0.48589325,"y":0.8061883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.17056,"y":155.97696,"z":-87.53576},"screenPosition":{"x":0.47831622,"y":0.86105186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-344.77893,"y":155.07858,"z":-89.5292},"screenPosition":{"x":0.4557827,"y":0.88317055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-346.15393,"y":152.19923,"z":-89.74577},"screenPosition":{"x":0.41697657,"y":0.8823829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-348.6778,"y":151.41043,"z":-89.19827},"screenPosition":{"x":0.39245364,"y":0.84236985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.8431,"y":152.32057,"z":-88.409195},"screenPosition":{"x":0.37969986,"y":0.7817744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.13632,"y":152.70648,"z":-86.42354},"screenPosition":{"x":0.39031282,"y":0.7495808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.42282,"y":154.46242,"z":-84.09831},"screenPosition":{"x":0.40756094,"y":0.69077826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.4263,"y":157.0419,"z":-83.24932},"screenPosition":{"x":0.45924944,"y":0.70861137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.49283,"y":156.69055,"z":-85.120285},"screenPosition":{"x":0.47022912,"y":0.7774502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-345.95474,"y":154.59889,"z":-87.893036},"screenPosition":{"x":0.4497135,"y":0.84761506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-347.74594,"y":153.9202,"z":-89.05879},"screenPosition":{"x":0.42382738,"y":0.84058344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.43454,"y":151.04709,"z":-89.12917},"screenPosition":{"x":0.38330165,"y":0.8333121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.6333,"y":150.09715,"z":-88.84915},"screenPosition":{"x":0.35844153,"y":0.8031614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.6774,"y":151.214,"z":-87.95982},"screenPosition":{"x":0.34917375,"y":0.741092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.92465,"y":150.33662,"z":-87.60352},"screenPosition":{"x":0.32346767,"y":0.71153903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.22073,"y":149.86215,"z":-85.89927},"screenPosition":{"x":0.31832454,"y":0.6706219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.3414,"y":151.51427,"z":-83.75867},"screenPosition":{"x":0.33503693,"y":0.61721027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.2319,"y":154.02762,"z":-81.98056},"screenPosition":{"x":0.3757965,"y":0.59536576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.24118,"y":155.24438,"z":-82.4086},"screenPosition":{"x":0.4085257,"y":0.6380298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.32483,"y":155.97305,"z":-83.25607},"screenPosition":{"x":0.43428913,"y":0.6872127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.9933,"y":154.0427,"z":-85.24351},"screenPosition":{"x":0.40969715,"y":0.7275355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.3182,"y":152.5255,"z":-88.49242},"screenPosition":{"x":0.38741434,"y":0.78519905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.4727,"y":151.68434,"z":-88.150826},"screenPosition":{"x":0.36214867,"y":0.75838375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.7964,"y":150.77711,"z":-87.78241},"screenPosition":{"x":0.3319808,"y":0.7342789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.0139,"y":149.91135,"z":-87.43083},"screenPosition":{"x":0.31007183,"y":0.6987779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.03104,"y":149.12381,"z":-87.111015},"screenPosition":{"x":0.29221672,"y":0.6628921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.19427,"y":149.2881,"z":-84.87653},"screenPosition":{"x":0.2943823,"y":0.617458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.98898,"y":151.09259,"z":-82.764015},"screenPosition":{"x":0.31495124,"y":0.56827635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.6565,"y":153.3475,"z":-81.3458},"screenPosition":{"x":0.35319567,"y":0.5564173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.02032,"y":154.4892,"z":-81.65813},"screenPosition":{"x":0.3831372,"y":0.59224737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.81808,"y":154.44484,"z":-83.38191},"screenPosition":{"x":0.39979458,"y":0.6613351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.2921,"y":152.33336,"z":-85.6416},"screenPosition":{"x":0.37354794,"y":0.7102677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.32727,"y":150.30812,"z":-87.000275},"screenPosition":{"x":0.34159052,"y":0.7185454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.4592,"y":149.73749,"z":-87.36022},"screenPosition":{"x":0.30574852,"y":0.69165576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.56332,"y":148.916,"z":-87.02663},"screenPosition":{"x":0.28578085,"y":0.6566078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.89688,"y":148.00491,"z":-86.65664},"screenPosition":{"x":0.26089457,"y":0.6226411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.49954,"y":147.19894,"z":-85.10274},"screenPosition":{"x":0.24778251,"y":0.58428144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.97476,"y":148.77599,"z":-82.84642},"screenPosition":{"x":0.26154903,"y":0.5246495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.11118,"y":151.26505,"z":-80.96196},"screenPosition":{"x":0.30048993,"y":0.49860808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.85165,"y":152.7888,"z":-81.24282},"screenPosition":{"x":0.3390551,"y":0.5409075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.63876,"y":151.28459,"z":-83.81821},"screenPosition":{"x":0.33030447,"y":0.6148623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.32443,"y":148.71153,"z":-86.400345},"screenPosition":{"x":0.29844636,"y":0.6620365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.4806,"y":148.55786,"z":-86.88119},"screenPosition":{"x":0.27590135,"y":0.6434413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.2996,"y":147.84769,"z":-86.59279},"screenPosition":{"x":0.25631025,"y":0.61733216},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-367.99078,"y":146.01614,"z":-85.849014},"screenPosition":{"x":0.207473,"y":0.5469604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.90918,"y":144.94206,"z":-84.38111},"screenPosition":{"x":0.18244311,"y":0.5188889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.59525,"y":146.79735,"z":-82.277954},"screenPosition":{"x":0.20981541,"y":0.46078476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.6402,"y":148.69449,"z":-80.99755},"screenPosition":{"x":0.24066019,"y":0.44793132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.6101,"y":150.09685,"z":-80.746635},"screenPosition":{"x":0.27092332,"y":0.46617854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.90536,"y":150.36392,"z":-81.91655},"screenPosition":{"x":0.28918782,"y":0.51909345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.14426,"y":148.01384,"z":-85.04918},"screenPosition":{"x":0.26631528,"y":0.59863025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9005,"y":146.83223,"z":-86.18042},"screenPosition":{"x":0.22829783,"y":0.5799998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.19366,"y":145.47203,"z":-84.78443},"screenPosition":{"x":0.20639083,"y":0.53235596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.11496,"y":145.8432,"z":-83.42652},"screenPosition":{"x":0.19882669,"y":0.48873562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.1728,"y":146.9807,"z":-81.802345},"screenPosition":{"x":0.20878997,"y":0.445857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.4193,"y":147.93932,"z":-80.24708},"screenPosition":{"x":0.21588278,"y":0.40131292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.2091,"y":148.64397,"z":-78.645},"screenPosition":{"x":0.21532583,"y":0.35139087},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-082235/brain-CAFDEC-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.23762732117848662,-0.6425839726892069,-0.7284360605245275,0.0,-0.9031538704849509,-0.42220480388953985,0.07782152530404329,0.0,-0.3575560689704327,0.6393973268755133,-0.6806795985828131,0.0,-413.00852191757537,242.98015958480016,-133.0673501722751,1.0]},"baseImage":"20190824-082235/base.webp","version":0,"savedAt":1.56663519278E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-090817-v0.json b/data/mapping/BAAAHS/dwayman/20190824-090817-v0.json new file mode 100644 index 0000000000..6470c72f3c --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-090817-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566637697964E12,"surfaces":[{"brainId":"CB486C","panelName":"22D","pixels":[{"modelPosition":{"x":-229.05093,"y":89.48352,"z":-100.0957},"screenPosition":{"x":0.0065029995,"y":0.831534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.85326,"y":87.43567,"z":-98.19063},"screenPosition":{"x":0.04176257,"y":0.802967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.42664,"y":85.45266,"z":-97.01294},"screenPosition":{"x":0.07824355,"y":0.7828809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.45436,"y":83.152016,"z":-96.182205},"screenPosition":{"x":0.11012817,"y":0.746355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.02376,"y":81.49767,"z":-95.12319},"screenPosition":{"x":0.14205499,"y":0.73148704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.91458,"y":79.1587,"z":-94.394035},"screenPosition":{"x":0.17240576,"y":0.6915716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.48201,"y":77.668686,"z":-93.394356},"screenPosition":{"x":0.20186894,"y":0.67924416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.82718,"y":75.01207,"z":-93.01216},"screenPosition":{"x":0.22743873,"y":0.62282085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.98785,"y":73.078415,"z":-92.19853},"screenPosition":{"x":0.25648686,"y":0.59497064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.21796,"y":71.08175,"z":-91.30445},"screenPosition":{"x":0.28764328,"y":0.56767637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.2437,"y":68.945435,"z":-90.53306},"screenPosition":{"x":0.31726265,"y":0.5338233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.4758,"y":66.78445,"z":-89.579636},"screenPosition":{"x":0.35054564,"y":0.50377285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.50352,"y":64.483795,"z":-88.7489},"screenPosition":{"x":0.38238633,"y":0.4671884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.5253,"y":62.676144,"z":-88.09619},"screenPosition":{"x":0.4074649,"y":0.4386588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.82486,"y":60.61648,"z":-87.12164},"screenPosition":{"x":0.44047037,"y":0.41157615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.26132,"y":58.595146,"z":-86.04553},"screenPosition":{"x":0.47520742,"y":0.38783312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.14818,"y":56.584835,"z":-85.43505},"screenPosition":{"x":0.5008183,"y":0.35305744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.17392,"y":54.448517,"z":-84.66366},"screenPosition":{"x":0.5304254,"y":0.31914055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.61038,"y":52.42718,"z":-83.58754},"screenPosition":{"x":0.56506956,"y":0.296398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.91191,"y":50.20319,"z":-82.55366},"screenPosition":{"x":0.6003798,"y":0.2666193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.06665,"y":48.762527,"z":-81.918045},"screenPosition":{"x":0.6227252,"y":0.24596304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.7789,"y":46.653515,"z":-80.57944},"screenPosition":{"x":0.6632021,"y":0.22672564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.80067,"y":44.845863,"z":-79.92672},"screenPosition":{"x":0.6880228,"y":0.19873735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.89587,"y":42.646545,"z":-79.074875},"screenPosition":{"x":0.7198594,"y":0.16453421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.19344,"y":40.751213,"z":-78.15967},"screenPosition":{"x":0.750626,"y":0.1401417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.42355,"y":38.754555,"z":-77.26559},"screenPosition":{"x":0.7816721,"y":0.112715855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.65367,"y":36.757893,"z":-76.3715},"screenPosition":{"x":0.8127182,"y":0.08529001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.2945,"y":34.876217,"z":-75.17268},"screenPosition":{"x":0.8489197,"y":0.068237245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.59207,"y":32.980885,"z":-74.257484},"screenPosition":{"x":0.8796863,"y":0.043844745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.75076,"y":31.21156,"z":-73.50319},"screenPosition":{"x":0.90322804,"y":0.024718177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.4452,"y":30.581535,"z":-72.69862},"screenPosition":{"x":0.93170565,"y":0.04791372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-236.43146,"y":28.834587,"z":-72.609314},"screenPosition":{"x":0.9527353,"y":0.0064311386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.21283,"y":29.736794,"z":-73.73553},"screenPosition":{"x":0.9213221,"y":-0.025015214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-235.11652,"y":30.951561,"z":-74.457085},"screenPosition":{"x":0.9022797,"y":0.013296438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-234.24358,"y":32.356953,"z":-75.683754},"screenPosition":{"x":0.8685234,"y":0.022073269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.40633,"y":33.704857,"z":-76.860245},"screenPosition":{"x":0.8366581,"y":0.022225307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.34671,"y":35.410767,"z":-78.34923},"screenPosition":{"x":0.79553795,"y":0.025201043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.47237,"y":36.818424,"z":-79.57787},"screenPosition":{"x":0.76244986,"y":0.032322537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.12987,"y":38.492035,"z":-79.94074},"screenPosition":{"x":0.7288575,"y":0.036893312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.65894,"y":39.737934,"z":-82.12612},"screenPosition":{"x":0.6928666,"y":0.041790448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.1716,"y":41.40643,"z":-82.60889},"screenPosition":{"x":0.65767664,"y":0.046578616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.76488,"y":42.787247,"z":-84.78766},"screenPosition":{"x":0.6201899,"y":0.051679287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.98941,"y":44.03569,"z":-85.87734},"screenPosition":{"x":0.59069157,"y":0.06007996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.94138,"y":45.722973,"z":-87.35006},"screenPosition":{"x":0.5502202,"y":0.061199788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.08554,"y":47.100803,"z":-88.55267},"screenPosition":{"x":0.51738125,"y":0.065668054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.1053,"y":48.678944,"z":-89.93013},"screenPosition":{"x":0.48009813,"y":0.07637673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.7055,"y":50.428925,"z":-90.36794},"screenPosition":{"x":0.44699425,"y":0.08444988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.32722,"y":51.541527,"z":-92.42869},"screenPosition":{"x":0.41140318,"y":0.077692725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.37042,"y":53.081905,"z":-93.77318},"screenPosition":{"x":0.37482855,"y":0.085064635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.33836,"y":54.74347,"z":-95.22344},"screenPosition":{"x":0.33522716,"y":0.09045304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.50743,"y":56.08121,"z":-96.391075},"screenPosition":{"x":0.30334356,"y":0.094791315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.63998,"y":57.47774,"z":-97.61001},"screenPosition":{"x":0.26938573,"y":0.087917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.72116,"y":58.956993,"z":-98.901146},"screenPosition":{"x":0.23429948,"y":0.095593385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.48375,"y":60.949146,"z":-100.63997},"screenPosition":{"x":0.18732198,"y":0.11057792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.2018,"y":63.250477,"z":-101.17229},"screenPosition":{"x":0.14989139,"y":0.11567095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.4082,"y":65.731735,"z":-101.0295},"screenPosition":{"x":0.13446584,"y":0.1948368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.68803,"y":67.82133,"z":-100.687584},"screenPosition":{"x":0.12687774,"y":0.2550793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.18015,"y":69.39325,"z":-99.98563},"screenPosition":{"x":0.12983848,"y":0.31137687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.8786,"y":70.9405,"z":-99.10163},"screenPosition":{"x":0.1370283,"y":0.372191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.7219,"y":71.86874,"z":-97.87871},"screenPosition":{"x":0.15461744,"y":0.4254398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.37836,"y":58.447605,"z":-88.41596},"screenPosition":{"x":0.43000954,"y":0.3256474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.44377,"y":56.207333,"z":-88.41493},"screenPosition":{"x":0.44536564,"y":0.27081457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.26118,"y":54.260025,"z":-87.88491},"screenPosition":{"x":0.46892324,"y":0.23494571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.35439,"y":52.225037,"z":-87.0924},"screenPosition":{"x":0.4982509,"y":0.20406218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.20157,"y":50.318684,"z":-85.711555},"screenPosition":{"x":0.5381253,"y":0.19144265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.64001,"y":48.13302,"z":-84.5761},"screenPosition":{"x":0.5752088,"y":0.16473867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.75705,"y":46.63198,"z":-83.11078},"screenPosition":{"x":0.61400867,"y":0.16370133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.82451,"y":46.05656,"z":-81.17179},"screenPosition":{"x":0.65572786,"y":0.1973038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.10434,"y":48.146152,"z":-80.82987},"screenPosition":{"x":0.6481398,"y":0.2575463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.70358,"y":50.392197,"z":-82.79503},"screenPosition":{"x":0.5944018,"y":0.26530197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.67177,"y":48.00964,"z":-83.66594},"screenPosition":{"x":0.5937909,"y":0.1841489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.35822,"y":45.531006,"z":-83.05948},"screenPosition":{"x":0.6225181,"y":0.1376743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.34428,"y":43.49865,"z":-81.51772},"screenPosition":{"x":0.66643196,"y":0.12535228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.64186,"y":41.603317,"z":-80.60252},"screenPosition":{"x":0.69719857,"y":0.10095978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.93944,"y":39.70799,"z":-79.68732},"screenPosition":{"x":0.7279651,"y":0.07656727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.10208,"y":37.609997,"z":-78.81435},"screenPosition":{"x":0.756293,"y":0.03316027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.1007,"y":35.80684,"z":-78.69493},"screenPosition":{"x":0.78655976,"y":0.02904199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.85052,"y":33.426968,"z":-76.34018},"screenPosition":{"x":0.81681395,"y":-0.034070414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.1733,"y":31.31539,"z":-74.7054},"screenPosition":{"x":0.85726213,"y":-0.05742291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.96309,"y":32.8085,"z":-76.07788},"screenPosition":{"x":0.85750103,"y":0.010497301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.19727,"y":34.733932,"z":-76.044624},"screenPosition":{"x":0.83289456,"y":0.043184686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.14967,"y":36.171967,"z":-77.42949},"screenPosition":{"x":0.79383177,"y":0.050276767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.44534,"y":37.62365,"z":-78.53074},"screenPosition":{"x":0.7647256,"y":0.053447824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.33029,"y":38.960354,"z":-79.93672},"screenPosition":{"x":0.7253718,"y":0.037367605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.622,"y":40.740704,"z":-81.156654},"screenPosition":{"x":0.69228125,"y":0.0658956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.98116,"y":42.622383,"z":-82.35546},"screenPosition":{"x":0.65582067,"y":0.08407614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.20738,"y":44.13707,"z":-83.53717},"screenPosition":{"x":0.62265897,"y":0.09162588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.81256,"y":45.890118,"z":-85.32432},"screenPosition":{"x":0.575923,"y":0.0906654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.19812,"y":43.699677,"z":-85.58406},"screenPosition":{"x":0.59844315,"y":0.05463828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.66965,"y":43.1621,"z":-83.64678},"screenPosition":{"x":0.6262218,"y":0.069883175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.45538,"y":43.16736,"z":-82.14829},"screenPosition":{"x":0.6564007,"y":0.101572774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.17563,"y":42.90695,"z":-80.61159},"screenPosition":{"x":0.6881301,"y":0.1330535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.8284,"y":42.545216,"z":-79.09599},"screenPosition":{"x":0.72008204,"y":0.16166033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.54263,"y":40.27187,"z":-77.69805},"screenPosition":{"x":0.7626383,"y":0.14027815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.11403,"y":39.12994,"z":-78.49757},"screenPosition":{"x":0.75509816,"y":0.09160822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.80853,"y":41.6826,"z":-79.65012},"screenPosition":{"x":0.71522164,"y":0.1264367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.40382,"y":43.58056,"z":-79.816086},"screenPosition":{"x":0.69904125,"y":0.16939072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.58641,"y":45.527866,"z":-80.34611},"screenPosition":{"x":0.67542803,"y":0.20458065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.76505,"y":47.803837,"z":-80.994804},"screenPosition":{"x":0.6471328,"y":0.24544182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-233.01112,"y":50.18114,"z":-81.62238},"screenPosition":{"x":0.6187655,"y":0.28861722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.96156,"y":51.78351,"z":-83.06658},"screenPosition":{"x":0.57968247,"y":0.2927878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.32072,"y":53.665184,"z":-84.265396},"screenPosition":{"x":0.54348934,"y":0.30994004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.7533,"y":55.155197,"z":-85.265076},"screenPosition":{"x":0.5138667,"y":0.32213077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.5688,"y":56.554905,"z":-86.75151},"screenPosition":{"x":0.47536233,"y":0.31981644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.04698,"y":57.447964,"z":-88.34354},"screenPosition":{"x":0.43823949,"y":0.30265373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.25334,"y":58.100037,"z":-90.079384},"screenPosition":{"x":0.40007138,"y":0.27664596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.72551,"y":56.980156,"z":-91.81018},"screenPosition":{"x":0.37394843,"y":0.20594124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.20956,"y":54.197536,"z":-91.267075},"screenPosition":{"x":0.40342513,"y":0.1499022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.9873,"y":52.354183,"z":-89.96669},"screenPosition":{"x":0.4414419,"y":0.13766062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.70154,"y":50.08084,"z":-88.56874},"screenPosition":{"x":0.48410705,"y":0.1154484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.95152,"y":48.946793,"z":-87.12053},"screenPosition":{"x":0.5200174,"y":0.12311775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.06856,"y":47.44576,"z":-85.655205},"screenPosition":{"x":0.55886275,"y":0.121061705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.97331,"y":46.462395,"z":-84.549934},"screenPosition":{"x":0.58711374,"y":0.12396928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.55063,"y":44.150723,"z":-83.25357},"screenPosition":{"x":0.6281497,"y":0.09866519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.44951,"y":46.166286,"z":-82.365555},"screenPosition":{"x":0.6317108,"y":0.17055383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.78682,"y":47.34968,"z":-84.17783},"screenPosition":{"x":0.5882066,"y":0.15586478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.67574,"y":48.357723,"z":-85.46514},"screenPosition":{"x":0.55634713,"y":0.14836179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.35631,"y":49.55477,"z":-86.99381},"screenPosition":{"x":0.5183687,"y":0.1406928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.30673,"y":51.157135,"z":-88.43801},"screenPosition":{"x":0.47930643,"y":0.1443698},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.53296,"y":52.671825,"z":-89.61972},"screenPosition":{"x":0.44596922,"y":0.15316589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.5671,"y":68.773224,"z":-92.72146},"screenPosition":{"x":0.27588615,"y":0.47568825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.50557,"y":68.855644,"z":-94.48244},"screenPosition":{"x":0.24109416,"y":0.43438974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.44801,"y":68.609406,"z":-96.12474},"screenPosition":{"x":0.2106597,"y":0.38758853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.08488,"y":67.73314,"z":-96.96248},"screenPosition":{"x":0.20008822,"y":0.34485358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.0928,"y":67.752556,"z":-98.643},"screenPosition":{"x":0.16737798,"y":0.30412808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.57892,"y":67.98829,"z":-99.99768},"screenPosition":{"x":0.13940993,"y":0.2765893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.71979,"y":68.3747,"z":-101.695305},"screenPosition":{"x":0.10346116,"y":0.24392039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.05908,"y":69.39376,"z":-103.44824},"screenPosition":{"x":0.062342398,"y":0.22590898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.12265,"y":72.32969,"z":-103.58505},"screenPosition":{"x":0.039650507,"y":0.29531437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.02747,"y":73.852264,"z":-102.51902},"screenPosition":{"x":0.0500441,"y":0.35937604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.73582,"y":74.57785,"z":-101.33834},"screenPosition":{"x":0.06812335,"y":0.40652475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.01564,"y":76.66744,"z":-100.99642},"screenPosition":{"x":0.06134815,"y":0.46741238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.44029,"y":78.13803,"z":-100.31558},"screenPosition":{"x":0.06376077,"y":0.52001745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.79153,"y":80.00029,"z":-99.83387},"screenPosition":{"x":0.06044811,"y":0.5780753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.0039,"y":81.988556,"z":-99.51307},"screenPosition":{"x":0.053139515,"y":0.6352844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.07935,"y":83.93849,"z":-99.293846},"screenPosition":{"x":0.0445375,"y":0.6891498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.36511,"y":85.53509,"z":-98.77392},"screenPosition":{"x":0.043356776,"y":0.74145144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.78185,"y":87.66301,"z":-98.33042},"screenPosition":{"x":0.0377238,"y":0.8051533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.93575,"y":89.33865,"z":-100.14165},"screenPosition":{"x":-0.0024486398,"y":0.826397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.14038,"y":87.08087,"z":-100.85768},"screenPosition":{"x":0.0048394133,"y":0.75301737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.06152,"y":85.41748,"z":-99.82789},"screenPosition":{"x":0.023615208,"y":0.71251684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.08727,"y":83.28116,"z":-99.056496},"screenPosition":{"x":0.05322235,"y":0.67859995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.63087,"y":81.2572,"z":-98.72962},"screenPosition":{"x":0.073840275,"y":0.636677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.18239,"y":78.575905,"z":-98.1654},"screenPosition":{"x":0.1026849,"y":0.5839533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.17638,"y":75.88622,"z":-96.38629},"screenPosition":{"x":0.15599434,"y":0.56140697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.43436,"y":76.600784,"z":-94.73997},"screenPosition":{"x":0.18292446,"y":0.6195518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.25784,"y":79.17235,"z":-94.11043},"screenPosition":{"x":0.17765525,"y":0.69884306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.15869,"y":81.70033,"z":-95.080956},"screenPosition":{"x":0.14149599,"y":0.7375537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.35712,"y":83.00973,"z":-97.054146},"screenPosition":{"x":0.09410303,"y":0.72130245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.1785,"y":81.41051,"z":-98.323326},"screenPosition":{"x":0.08027252,"y":0.6503254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.82726,"y":79.54825,"z":-98.80503},"screenPosition":{"x":0.08358518,"y":0.5922675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.33316,"y":78.14066,"z":-99.56634},"screenPosition":{"x":0.07839061,"y":0.5386076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.76962,"y":76.796074,"z":-100.40809},"screenPosition":{"x":0.071110785,"y":0.48446602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.99974,"y":75.47616,"z":-101.43188},"screenPosition":{"x":0.06017037,"y":0.4264819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.35884,"y":74.851906,"z":-102.591446},"screenPosition":{"x":0.04181415,"y":0.38236973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.45007,"y":73.658,"z":-103.776146},"screenPosition":{"x":0.027423102,"y":0.3241104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.81511,"y":72.54075,"z":-104.7577},"screenPosition":{"x":0.019472225,"y":0.2762606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.05066,"y":70.6197,"z":-106.0782},"screenPosition":{"x":0.0038976541,"y":0.21565726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.52295,"y":68.69851,"z":-106.687485},"screenPosition":{"x":0.016588405,"y":0.15339383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.96376,"y":66.581215,"z":-104.2216},"screenPosition":{"x":0.068662226,"y":0.12672348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.35526,"y":64.37589,"z":-103.63094},"screenPosition":{"x":0.1056494,"y":0.12169079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.85457,"y":63.56549,"z":-101.57457},"screenPosition":{"x":0.14026204,"y":0.11698118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.38036,"y":62.343765,"z":-99.86387},"screenPosition":{"x":0.18029481,"y":0.13962363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.83073,"y":61.67804,"z":-98.41163},"screenPosition":{"x":0.2134712,"y":0.15974429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.94183,"y":60.670002,"z":-97.12433},"screenPosition":{"x":0.24526288,"y":0.16616361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.2851,"y":60.006905,"z":-94.922844},"screenPosition":{"x":0.29254323,"y":0.20366947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.80301,"y":61.948444,"z":-93.48874},"screenPosition":{"x":0.3072537,"y":0.28720424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.67607,"y":63.59439,"z":-93.33287},"screenPosition":{"x":0.29906514,"y":0.33185568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.90831,"y":67.12202,"z":-94.37582},"screenPosition":{"x":0.25467515,"y":0.39355987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.2377,"y":68.962746,"z":-96.425446},"screenPosition":{"x":0.202561,"y":0.38916624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.55713,"y":69.119194,"z":-98.73252},"screenPosition":{"x":0.15613297,"y":0.33551782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.72572,"y":67.204956,"z":-99.59941},"screenPosition":{"x":0.15247446,"y":0.26695526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.79707,"y":64.47169,"z":-99.42037},"screenPosition":{"x":0.17442515,"y":0.20332383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.23949,"y":61.957355,"z":-98.166245},"screenPosition":{"x":0.2160201,"y":0.17195305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.68188,"y":59.443024,"z":-96.91211},"screenPosition":{"x":0.25761503,"y":0.14058228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.48346,"y":58.13362,"z":-94.93892},"screenPosition":{"x":0.30524835,"y":0.1576853},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-226.5113,"y":59.491344,"z":-90.35094},"screenPosition":{"x":0.38517436,"y":0.30375394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.84663,"y":59.485577,"z":-88.3868},"screenPosition":{"x":0.42349806,"y":0.3520988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.98929,"y":52.8666,"z":-91.825226},"screenPosition":{"x":0.40164584,"y":0.10330571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.62425,"y":54.660603,"z":-92.76154},"screenPosition":{"x":0.37113675,"y":0.12448816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.25525,"y":56.783268,"z":-93.81654},"screenPosition":{"x":0.33640483,"y":0.15239468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.88823,"y":58.7416,"z":-94.8122},"screenPosition":{"x":0.3035273,"y":0.17570436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.79106,"y":61.10525,"z":-95.72339},"screenPosition":{"x":0.26955503,"y":0.21142669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.24747,"y":63.12921,"z":-96.05026},"screenPosition":{"x":0.24949357,"y":0.2537542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.3626,"y":64.97519,"z":-96.6014},"screenPosition":{"x":0.22593752,"y":0.2853969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.67813,"y":67.28949,"z":-97.14853},"screenPosition":{"x":0.19975804,"y":0.32970908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.61469,"y":69.36543,"z":-97.09022},"screenPosition":{"x":0.18695831,"y":0.38285953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.47588,"y":71.997375,"z":-97.290375},"screenPosition":{"x":0.16515715,"y":0.4430854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.58902,"y":74.00768,"z":-97.900856},"screenPosition":{"x":0.13954411,"y":0.47775018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.66446,"y":75.95762,"z":-97.68163},"screenPosition":{"x":0.13038124,"y":0.5313026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.94429,"y":78.04721,"z":-97.339714},"screenPosition":{"x":0.12284946,"y":0.59150493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.74791,"y":79.756165,"z":-97.264305},"screenPosition":{"x":0.112198554,"y":0.6354573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.99597,"y":81.96913,"z":-97.83255},"screenPosition":{"x":0.08602833,"y":0.67628956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.72421,"y":84.234085,"z":-98.01561},"screenPosition":{"x":0.067011446,"y":0.7279192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.92462,"y":84.02565,"z":-96.09371},"screenPosition":{"x":0.10602411,"y":0.7702103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.33527,"y":81.6347,"z":-95.74974},"screenPosition":{"x":0.12942638,"y":0.71954453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.84514,"y":79.898445,"z":-96.392365},"screenPosition":{"x":0.1282237,"y":0.6605098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.56136,"y":78.13752,"z":-96.85296},"screenPosition":{"x":0.13125686,"y":0.6054853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.2121,"y":76.11093,"z":-97.27533},"screenPosition":{"x":0.13697058,"y":0.54491085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.14258,"y":73.668,"z":-97.31654},"screenPosition":{"x":0.15270646,"y":0.48324004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.09888,"y":71.59468,"z":-96.62561},"screenPosition":{"x":0.18031564,"y":0.4488988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.85278,"y":69.21738,"z":-95.998024},"screenPosition":{"x":0.20876335,"y":0.40545753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.6702,"y":67.27007,"z":-95.468},"screenPosition":{"x":0.23258473,"y":0.37062234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.66222,"y":64.74471,"z":-93.74824},"screenPosition":{"x":0.28336915,"y":0.35066572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.25743,"y":63.45999,"z":-91.95708},"screenPosition":{"x":0.3267986,"y":0.3624877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.00151,"y":63.733536,"z":-89.74756},"screenPosition":{"x":0.36800018,"y":0.4238146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.35077,"y":65.760124,"z":-89.32518},"screenPosition":{"x":0.36249137,"y":0.4846888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.72386,"y":68.99741,"z":-90.14787},"screenPosition":{"x":0.32429343,"y":0.54442537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.6267,"y":71.36106,"z":-91.05906},"screenPosition":{"x":0.29041088,"y":0.5805269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.37276,"y":72.82378,"z":-92.62595},"screenPosition":{"x":0.25011215,"y":0.57831764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.3787,"y":73.00752,"z":-94.365814},"screenPosition":{"x":0.21486372,"y":0.5398449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.32312,"y":72.596954,"z":-95.948784},"screenPosition":{"x":0.18667188,"y":0.49045402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.55522,"y":71.11271,"z":-96.91323},"screenPosition":{"x":0.17832626,"y":0.43025053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.99365,"y":69.60379,"z":-97.69565},"screenPosition":{"x":0.17355248,"y":0.3738358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.29916,"y":67.72788,"z":-98.46097},"screenPosition":{"x":0.17091583,"y":0.30773053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.56894,"y":65.627266,"z":-98.33725},"screenPosition":{"x":0.18765524,"y":0.25870982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.9796,"y":63.236313,"z":-97.99328},"screenPosition":{"x":0.21066806,"y":0.2079288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.14423,"y":60.97399,"z":-97.06097},"screenPosition":{"x":0.24427113,"y":0.17486063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.8545,"y":59.02931,"z":-95.7817},"screenPosition":{"x":0.28247058,"y":0.15823221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.35645,"y":57.273636,"z":-94.743805},"screenPosition":{"x":0.31482205,"y":0.14088863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.06276,"y":55.65762,"z":-93.58321},"screenPosition":{"x":0.3483206,"y":0.12892032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.29486,"y":53.496628,"z":-92.62979},"screenPosition":{"x":0.3812368,"y":0.08419269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.46678,"y":51.31684,"z":-92.23257},"screenPosition":{"x":0.41689688,"y":0.07934057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.23,"y":50.088108,"z":-91.160095},"screenPosition":{"x":0.44534543,"y":0.061180256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.34898,"y":48.286625,"z":-89.5877},"screenPosition":{"x":0.48826262,"y":0.055095576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.07253,"y":47.793842,"z":-87.45441},"screenPosition":{"x":0.521419,"y":0.08527459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.9079,"y":49.379414,"z":-86.468834},"screenPosition":{"x":0.5297667,"y":0.14969441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.26309,"y":50.91301,"z":-85.86845},"screenPosition":{"x":0.5310569,"y":0.20175178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.82663,"y":52.257595,"z":-85.026695},"screenPosition":{"x":0.53829306,"y":0.2558647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.08064,"y":53.300823,"z":-83.49905},"screenPosition":{"x":0.5609539,"y":0.31943914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-232.45558,"y":50.68516,"z":-82.26604},"screenPosition":{"x":0.6028284,"y":0.285035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.34442,"y":49.187267,"z":-83.51409},"screenPosition":{"x":0.58871835,"y":0.21709132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.62021,"y":49.776337,"z":-85.16948},"screenPosition":{"x":0.55241823,"y":0.19098355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.17577,"y":49.949066,"z":-86.4437},"screenPosition":{"x":0.5264191,"y":0.16365427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.38608,"y":50.272476,"z":-88.06087},"screenPosition":{"x":0.49268842,"y":0.1324387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.59242,"y":50.92455,"z":-89.79671},"screenPosition":{"x":0.45440948,"y":0.10506211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.33849,"y":52.387257,"z":-91.3636},"screenPosition":{"x":0.41389114,"y":0.10264176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.0786,"y":54.34296,"z":-93.108505},"screenPosition":{"x":0.36672467,"y":0.109098524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.48576,"y":69.82221,"z":-93.15794},"screenPosition":{"x":0.2599962,"y":0.49056396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.58704,"y":72.81852,"z":-94.12444},"screenPosition":{"x":0.22072014,"y":0.5409835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.67635,"y":74.294876,"z":-95.40773},"screenPosition":{"x":0.1856367,"y":0.54590285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.01762,"y":75.14961,"z":-97.10133},"screenPosition":{"x":0.1467954,"y":0.5252825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.02951,"y":74.84037,"z":-98.663185},"screenPosition":{"x":0.11846154,"y":0.4790594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.46004,"y":73.98878,"z":-99.68295},"screenPosition":{"x":0.10462869,"y":0.4330034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.82309,"y":73.03586,"z":-100.72385},"screenPosition":{"x":0.09060385,"y":0.38345414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.77544,"y":71.96796,"z":-102.06946},"screenPosition":{"x":0.07165938,"y":0.32376176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.20596,"y":71.11636,"z":-103.089226},"screenPosition":{"x":0.057590783,"y":0.2774758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.16226,"y":69.7198,"z":-104.31617},"screenPosition":{"x":0.04320126,"y":0.21256544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-213.16615,"y":66.8852,"z":-104.15824},"screenPosition":{"x":0.06702884,"y":0.12694573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.63239,"y":64.90482,"z":-102.23131},"screenPosition":{"x":0.11668082,"y":0.14466879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.03716,"y":64.83605,"z":-100.18672},"screenPosition":{"x":0.15700248,"y":0.19343798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.87054,"y":66.58595,"z":-99.26049},"screenPosition":{"x":0.16312063,"y":0.25968426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.73965,"y":68.56056,"z":-99.2233},"screenPosition":{"x":0.15037715,"y":0.30955368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.46788,"y":70.825516,"z":-99.40636},"screenPosition":{"x":0.13173419,"y":0.36165038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.46992,"y":73.167114,"z":-99.38627},"screenPosition":{"x":0.1157803,"y":0.4197285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.41046,"y":74.91439,"z":-99.20928},"screenPosition":{"x":0.10793414,"y":0.46796814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.96606,"y":76.916306,"z":-98.60487},"screenPosition":{"x":0.10543855,"y":0.53196216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.01572,"y":77.81988,"z":-97.19992},"screenPosition":{"x":0.12698324,"y":0.5892407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.67839,"y":76.63648,"z":-95.38764},"screenPosition":{"x":0.17053986,"y":0.6047564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.25374,"y":74.48914,"z":-94.15061},"screenPosition":{"x":0.20889683,"y":0.5818188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.28345,"y":72.02416,"z":-93.260544},"screenPosition":{"x":0.24297728,"y":0.54261804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.30127,"y":70.54517,"z":-92.7265},"screenPosition":{"x":0.26347452,"y":0.5191371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.14449,"y":68.96748,"z":-91.46433},"screenPosition":{"x":0.29883748,"y":0.51118433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.71191,"y":67.47747,"z":-90.46465},"screenPosition":{"x":0.32848606,"y":0.4989252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.75752,"y":66.203766,"z":-89.13913},"screenPosition":{"x":0.36304352,"y":0.50015306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.66623,"y":64.89174,"z":-87.915184},"screenPosition":{"x":0.39581645,"y":0.4977621},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-231.93398,"y":59.772774,"z":-85.89368},"screenPosition":{"x":0.47013453,"y":0.42076543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.61052,"y":58.115803,"z":-85.58391},"screenPosition":{"x":0.4874744,"y":0.3873435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.60649,"y":55.93853,"z":-85.66334},"screenPosition":{"x":0.50076264,"y":0.33199695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-227.98744,"y":56.689304,"z":-88.127304},"screenPosition":{"x":0.44765958,"y":0.2895655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.797,"y":58.58201,"z":-89.791756},"screenPosition":{"x":0.4022761,"y":0.2950154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.87648,"y":62.709213,"z":-89.4931},"screenPosition":{"x":0.37994656,"y":0.40470296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.03319,"y":60.427475,"z":-86.88028},"screenPosition":{"x":0.4464546,"y":0.4127887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.06487,"y":57.79816,"z":-85.93087},"screenPosition":{"x":0.4828838,"y":0.3712843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.26521,"y":55.760548,"z":-85.8876},"screenPosition":{"x":0.4976147,"y":0.32173306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.64214,"y":53.657303,"z":-86.51313},"screenPosition":{"x":0.49977267,"y":0.25386873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.46548,"y":51.893745,"z":-87.72297},"screenPosition":{"x":0.48821965,"y":0.18028267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.6659,"y":53.038815,"z":-89.636826},"screenPosition":{"x":0.44310495,"y":0.16142257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.88618,"y":55.0465,"z":-90.99655},"screenPosition":{"x":0.40290755,"y":0.17762662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.65408,"y":57.207493,"z":-91.949974},"screenPosition":{"x":0.3696759,"y":0.20812221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.422,"y":59.368484,"z":-92.9034},"screenPosition":{"x":0.3362604,"y":0.23769629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.27914,"y":59.82315,"z":-93.18298},"screenPosition":{"x":0.32772323,"y":0.24211363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.8883,"y":61.247536,"z":-94.851456},"screenPosition":{"x":0.28547272,"y":0.23618753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.83081,"y":63.50723,"z":-96.533005},"screenPosition":{"x":0.23776416,"y":0.25175738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.92415,"y":66.48411,"z":-95.818985},"screenPosition":{"x":0.23134936,"y":0.34293604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.2039,"y":65.39102,"z":-93.51995},"screenPosition":{"x":0.28316426,"y":0.37177637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.18799,"y":63.52299,"z":-92.03753},"screenPosition":{"x":0.32481945,"y":0.3621144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.28516,"y":61.159344,"z":-91.12634},"screenPosition":{"x":0.3586832,"y":0.32596183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.62636,"y":58.83139,"z":-90.86283},"screenPosition":{"x":0.37969807,"y":0.27475646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.20964,"y":56.703472,"z":-91.30632},"screenPosition":{"x":0.3855677,"y":0.21105628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.00526,"y":57.240562,"z":-93.346886},"screenPosition":{"x":0.34213004,"y":0.1739961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.22556,"y":59.248245,"z":-94.70661},"screenPosition":{"x":0.30202696,"y":0.19051118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.92203,"y":61.636574,"z":-95.79983},"screenPosition":{"x":0.26433364,"y":0.22241963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.58281,"y":63.800194,"z":-96.004005},"screenPosition":{"x":0.24559624,"y":0.271016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.6543,"y":66.07879,"z":-95.90346},"screenPosition":{"x":0.23217174,"y":0.33027813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.073,"y":68.04238,"z":-95.40063},"screenPosition":{"x":0.22842208,"y":0.39107665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.12462,"y":68.78162,"z":-93.93634},"screenPosition":{"x":0.2519215,"y":0.44555104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.12067,"y":68.43353,"z":-92.137146},"screenPosition":{"x":0.28936526,"y":0.48133817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.48938,"y":54.93363,"z":-87.08941},"screenPosition":{"x":0.47983444,"y":0.27128294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.23947,"y":57.896862,"z":-86.659},"screenPosition":{"x":0.46801233,"y":0.35536784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.307,"y":60.504128,"z":-86.677124},"screenPosition":{"x":0.44987538,"y":0.41955525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-231.07292,"y":62.829453,"z":-87.68989},"screenPosition":{"x":0.41427433,"y":0.4521991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.7059,"y":64.78778,"z":-88.68555},"screenPosition":{"x":0.38150978,"y":0.47616723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.88652,"y":66.89942,"z":-89.27491},"screenPosition":{"x":0.35561904,"y":0.51396614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.65442,"y":69.06042,"z":-90.22833},"screenPosition":{"x":0.32231355,"y":0.5440296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-229.9481,"y":70.67643,"z":-91.38892},"screenPosition":{"x":0.28871363,"y":0.5554904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-230.05333,"y":73.34407,"z":-92.236755},"screenPosition":{"x":0.25393608,"y":0.6006185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.45811,"y":74.6288,"z":-94.027916},"screenPosition":{"x":0.21025413,"y":0.5882439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.38867,"y":75.36855,"z":-96.026245},"screenPosition":{"x":0.16625747,"y":0.55725044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.27156,"y":74.36365,"z":-97.45232},"screenPosition":{"x":0.14537813,"y":0.49719074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.7854,"y":72.29874,"z":-97.976265},"screenPosition":{"x":0.14981839,"y":0.43370602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.46788,"y":70.148766,"z":-97.48848},"screenPosition":{"x":0.1738855,"y":0.39244655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.80711,"y":67.985146,"z":-97.2843},"screenPosition":{"x":0.1923171,"y":0.34350154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.14635,"y":65.821526,"z":-97.080124},"screenPosition":{"x":0.21099801,"y":0.29486278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.00937,"y":63.277264,"z":-97.142456},"screenPosition":{"x":0.22697271,"y":0.22994803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.47758,"y":62.48605,"z":-98.99193},"screenPosition":{"x":0.19631995,"y":0.16467619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.67007,"y":64.288445,"z":-101.143135},"screenPosition":{"x":0.14209536,"y":0.15625204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.63641,"y":67.08209,"z":-102.15188},"screenPosition":{"x":0.10367979,"y":0.20107949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.90831,"y":69.82901,"z":-102.04731},"screenPosition":{"x":0.08668033,"y":0.27128336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.88257,"y":71.28858,"z":-100.900826},"screenPosition":{"x":0.099166475,"y":0.3358839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.28537,"y":71.38414,"z":-98.91558},"screenPosition":{"x":0.137328,"y":0.3874009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.15439,"y":70.17607,"z":-96.921265},"screenPosition":{"x":0.18422875,"y":0.406432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.6801,"y":66.44841,"z":-95.17132},"screenPosition":{"x":0.24376395,"y":0.35722265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.1602,"y":64.6712,"z":-96.664764},"screenPosition":{"x":0.22691055,"y":0.27656937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.02528,"y":65.145294,"z":-98.62487},"screenPosition":{"x":0.18577906,"y":0.240489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.43402,"y":66.10136,"z":-100.297356},"screenPosition":{"x":0.14621554,"y":0.22207399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.90825,"y":67.323074,"z":-102.008064},"screenPosition":{"x":0.10453777,"y":0.21012926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.66817,"y":67.63546,"z":-103.15959},"screenPosition":{"x":0.07996175,"y":0.18944599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-212.86858,"y":68.78053,"z":-105.07345},"screenPosition":{"x":0.034847055,"y":0.17058587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-214.12448,"y":70.71255,"z":-106.04875},"screenPosition":{"x":0.01530114,"y":0.2190909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-215.76646,"y":72.777435,"z":-105.39389},"screenPosition":{"x":0.01398138,"y":0.2864464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.9671,"y":74.28733,"z":-104.91504},"screenPosition":{"x":0.008343872,"y":0.33548743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.79536,"y":76.01325,"z":-103.47245},"screenPosition":{"x":0.020596642,"y":0.39284623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-219.49582,"y":77.396164,"z":-102.52911},"screenPosition":{"x":0.025675168,"y":0.44698152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.05737,"y":78.90508,"z":-101.7467},"screenPosition":{"x":0.030633874,"y":0.5037034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.62288,"y":80.08534,"z":-100.845604},"screenPosition":{"x":0.040884,"y":0.55562234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.25586,"y":81.36693,"z":-99.923386},"screenPosition":{"x":0.049381673,"y":0.60974467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.74203,"y":83.43184,"z":-99.39944},"screenPosition":{"x":0.045955714,"y":0.67400426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.50598,"y":85.9215,"z":-100.47154},"screenPosition":{"x":0.005689145,"y":0.7096503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.36928,"y":83.59604,"z":-101.96287},"screenPosition":{"x":-0.006790666,"y":0.6387188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.21817,"y":81.9833,"z":-101.01156},"screenPosition":{"x":0.02396713,"y":0.5981614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.17447,"y":79.90999,"z":-100.320625},"screenPosition":{"x":0.052215405,"y":0.5641771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.26767,"y":77.875,"z":-99.528114},"screenPosition":{"x":0.08090395,"y":0.53293663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-223.56723,"y":75.81534,"z":-98.55357},"screenPosition":{"x":0.11394801,"y":0.50593513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.84692,"y":72.89306,"z":-98.13316},"screenPosition":{"x":0.14214629,"y":0.44394448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.4282,"y":70.929474,"z":-98.635994},"screenPosition":{"x":0.14566696,"y":0.38277826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.82303,"y":70.52992,"z":-100.68459},"screenPosition":{"x":0.10846129,"y":0.32230005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-217.63655,"y":72.09396,"z":-102.23037},"screenPosition":{"x":0.06787255,"y":0.32315373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-216.99176,"y":74.304306,"z":-103.54786},"screenPosition":{"x":0.026907029,"y":0.3451838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-218.66925,"y":76.42788,"z":-104.23618},"screenPosition":{"x":0.0041548004,"y":0.40518367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-220.00168,"y":78.1035,"z":-103.70477},"screenPosition":{"x":0.010577252,"y":0.46018004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-221.4744,"y":79.95553,"z":-103.117424},"screenPosition":{"x":0.009393536,"y":0.5205924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-222.95866,"y":81.8221,"z":-102.52545},"screenPosition":{"x":-0.005504221,"y":0.5808599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-224.37634,"y":83.60491,"z":-101.96005},"screenPosition":{"x":0.007061053,"y":0.63963336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-225.42722,"y":84.92645,"z":-101.54094},"screenPosition":{"x":0.006216396,"y":0.6827414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-226.91994,"y":86.80365,"z":-100.945595},"screenPosition":{"x":-0.0027796058,"y":0.7436245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-228.40514,"y":88.67139,"z":-100.353264},"screenPosition":{"x":0.003822842,"y":0.8048993},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-090817/brain-CB486C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.5460335915571108,-0.820140331988736,-0.17093025693729022,0.0,-0.5620608711147187,-0.5099293879203439,0.651198584532358,0.0,-0.6212365846060627,-0.2595030928150743,-0.7394073645605683,0.0,-313.1451114940923,40.99065531861014,-165.57332115104523,1.0]},"baseImage":"20190824-090817/base.webp","version":0,"savedAt":1.566637870326E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-092352-v0.json b/data/mapping/BAAAHS/dwayman/20190824-092352-v0.json new file mode 100644 index 0000000000..c4df28664f --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-092352-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566638632468E12,"surfaces":[{"brainId":"C784D4","panelName":"41D","pixels":[{"modelPosition":{"x":-399.76358,"y":99.26618,"z":-67.02481},"screenPosition":{"x":0.9387727,"y":0.13487715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.09674,"y":101.620285,"z":-67.816505},"screenPosition":{"x":0.91576713,"y":0.18555577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.94766,"y":103.10163,"z":-69.05847},"screenPosition":{"x":0.8780644,"y":0.20801166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0752,"y":104.90984,"z":-70.03394},"screenPosition":{"x":0.8539083,"y":0.24838026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.00415,"y":106.445526,"z":-71.198944},"screenPosition":{"x":0.8255694,"y":0.28174746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.06085,"y":106.83677,"z":-73.19906},"screenPosition":{"x":0.7786339,"y":0.28578165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.15335,"y":102.68951,"z":-74.947266},"screenPosition":{"x":0.7410985,"y":0.18275547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.6003,"y":101.03845,"z":-72.37381},"screenPosition":{"x":0.80238026,"y":0.15032499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.71365,"y":102.778946,"z":-70.30147},"screenPosition":{"x":0.849343,"y":0.19707736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.85532,"y":105.29356,"z":-70.27637},"screenPosition":{"x":0.84796643,"y":0.25683886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5785,"y":107.91935,"z":-70.68323},"screenPosition":{"x":0.8497574,"y":0.3309678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.55707,"y":109.89225,"z":-71.8184},"screenPosition":{"x":0.8084487,"y":0.36192918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.8549,"y":110.719864,"z":-73.59337},"screenPosition":{"x":0.766423,"y":0.376912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.2664,"y":108.53965,"z":-75.10966},"screenPosition":{"x":0.7327661,"y":0.32118285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.98273,"y":107.939415,"z":-75.37039},"screenPosition":{"x":0.72716403,"y":0.30625942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.62106,"y":107.44452,"z":-74.69601},"screenPosition":{"x":0.74326116,"y":0.2962761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.24506,"y":109.35555,"z":-74.15045},"screenPosition":{"x":0.7544973,"y":0.34306762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.56406,"y":111.3226,"z":-73.918526},"screenPosition":{"x":0.7583775,"y":0.39035854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.40073,"y":113.89322,"z":-74.207054},"screenPosition":{"x":0.7496491,"y":0.45062056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.03885,"y":116.03164,"z":-75.69721},"screenPosition":{"x":0.71324503,"y":0.49746338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.91843,"y":114.017784,"z":-77.763794},"screenPosition":{"x":0.66665643,"y":0.44421586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.30164,"y":111.06345,"z":-77.232834},"screenPosition":{"x":0.681304,"y":0.37551063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.84076,"y":109.8538,"z":-75.60603},"screenPosition":{"x":0.72017205,"y":0.351071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.5571,"y":109.57291,"z":-73.84258},"screenPosition":{"x":0.7615041,"y":0.34903452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.94702,"y":111.4806,"z":-72.51583},"screenPosition":{"x":0.7909539,"y":0.39779752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.0248,"y":114.32793,"z":-73.591324},"screenPosition":{"x":0.76366895,"y":0.46254346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.01044,"y":116.57419,"z":-74.73225},"screenPosition":{"x":0.735321,"y":0.51287454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.22318,"y":117.074104,"z":-76.57843},"screenPosition":{"x":0.69188994,"y":0.5198924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.1877,"y":117.02394,"z":-77.63189},"screenPosition":{"x":0.6673681,"y":0.5159357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.30826,"y":117.242134,"z":-77.51932},"screenPosition":{"x":0.66982895,"y":0.5214012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.57056,"y":118.65827,"z":-76.29938},"screenPosition":{"x":0.6971647,"y":0.5582256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.67676,"y":121.282394,"z":-76.31564},"screenPosition":{"x":0.69474614,"y":0.62046665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.64105,"y":124.18489,"z":-77.50946},"screenPosition":{"x":0.6646573,"y":0.6862231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.53455,"y":125.830086,"z":-78.71583},"screenPosition":{"x":0.63525295,"y":0.7221044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.08066,"y":125.731445,"z":-81.21334},"screenPosition":{"x":0.5771015,"y":0.7132051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.71216,"y":121.69119,"z":-82.41702},"screenPosition":{"x":0.55243355,"y":0.61385834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.74783,"y":118.94836,"z":-80.211105},"screenPosition":{"x":0.60585153,"y":0.55471104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.2655,"y":120.03094,"z":-77.69528},"screenPosition":{"x":0.66355324,"y":0.5871407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.72626,"y":123.03626,"z":-77.36807},"screenPosition":{"x":0.66884625,"y":0.65933156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9246,"y":126.101776,"z":-78.33099},"screenPosition":{"x":0.64402044,"y":0.7295461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.82516,"y":128.02034,"z":-79.54312},"screenPosition":{"x":0.6145226,"y":0.77127576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.3854,"y":128.46843,"z":-82.05216},"screenPosition":{"x":0.55541784,"y":0.775965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.6125,"y":126.56241,"z":-83.76951},"screenPosition":{"x":0.5168865,"y":0.7261791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.94608,"y":123.17086,"z":-83.268394},"screenPosition":{"x":0.53117925,"y":0.6470332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.82562,"y":121.795685,"z":-81.2866},"screenPosition":{"x":0.5784524,"y":0.619597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.80417,"y":124.24759,"z":-79.385475},"screenPosition":{"x":0.62087035,"y":0.6827853},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.3994,"y":130.49149,"z":-82.13387},"screenPosition":{"x":0.5519407,"y":0.8237679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4066,"y":129.60785,"z":-80.045265},"screenPosition":{"x":0.601322,"y":0.8082792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.18692,"y":127.19858,"z":-79.13524},"screenPosition":{"x":0.6244111,"y":0.7534843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.24384,"y":124.79683,"z":-79.982895},"screenPosition":{"x":0.60673624,"y":0.6938255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.4707,"y":125.6838,"z":-82.8527},"screenPosition":{"x":0.538918,"y":0.7077696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.98816,"y":129.24004,"z":-83.51351},"screenPosition":{"x":0.5207478,"y":0.79044193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.09436,"y":132.02382,"z":-82.51768},"screenPosition":{"x":0.5418015,"y":0.8591304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.03058,"y":131.35922,"z":-80.5118},"screenPosition":{"x":0.5890838,"y":0.848623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.28616,"y":127.91334,"z":-80.087654},"screenPosition":{"x":0.601725,"y":0.76777864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.01666,"y":127.5405,"z":-82.38411},"screenPosition":{"x":0.548797,"y":0.75239164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.73978,"y":131.48294,"z":-83.873245},"screenPosition":{"x":0.51103616,"y":0.8419811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.9949,"y":134.10205,"z":-82.71772},"screenPosition":{"x":0.535716,"y":0.90749955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.06592,"y":132.72603,"z":-80.54062},"screenPosition":{"x":0.5983308,"y":0.8848323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.39133,"y":131.4198,"z":-91.77263},"screenPosition":{"x":0.34278712,"y":0.8231179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.37817,"y":129.7107,"z":-91.29561},"screenPosition":{"x":0.338947,"y":0.7811789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.87485,"y":126.70119,"z":-90.646324},"screenPosition":{"x":0.35657883,"y":0.7113217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.5984,"y":125.21733,"z":-88.81846},"screenPosition":{"x":0.4001924,"y":0.681033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.84677,"y":123.293755,"z":-86.43453},"screenPosition":{"x":0.45726705,"y":0.6416364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.641,"y":124.7032,"z":-83.65221},"screenPosition":{"x":0.5210401,"y":0.68239564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.45645,"y":126.77307,"z":-81.899254},"screenPosition":{"x":0.56030035,"y":0.7361271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.64044,"y":132.08485,"z":-84.003105},"screenPosition":{"x":0.50745255,"y":0.85607594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.41336,"y":133.51186,"z":-85.32204},"screenPosition":{"x":0.47526315,"y":0.8870854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.3825,"y":134.26666,"z":-87.838005},"screenPosition":{"x":0.43230808,"y":0.9010201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.7002,"y":133.06668,"z":-89.496475},"screenPosition":{"x":0.3945743,"y":0.86818373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.0009,"y":131.85458,"z":-91.17171},"screenPosition":{"x":0.35645935,"y":0.83501565},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-380.8111,"y":126.19626,"z":-87.62835},"screenPosition":{"x":0.42717817,"y":0.7073929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.89594,"y":129.79596,"z":-85.67332},"screenPosition":{"x":0.46996108,"y":0.79796565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.89572,"y":132.42928,"z":-87.83787},"screenPosition":{"x":0.41744944,"y":0.8547841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.12268,"y":131.99959,"z":-89.62539},"screenPosition":{"x":0.3733253,"y":0.8496925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.30005,"y":131.13269,"z":-91.44276},"screenPosition":{"x":0.3382882,"y":0.810541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.53946,"y":130.09886,"z":-93.59827},"screenPosition":{"x":0.30124998,"y":0.7869718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.23196,"y":129.16626,"z":-94.88721},"screenPosition":{"x":0.2704668,"y":0.7651983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.69394,"y":128.0692,"z":-96.40345},"screenPosition":{"x":0.2359243,"y":0.7355419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.37756,"y":127.13026,"z":-97.70116},"screenPosition":{"x":0.20790066,"y":0.7057381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.90604,"y":126.08062,"z":-99.15185},"screenPosition":{"x":0.17659426,"y":0.6730689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.31693,"y":124.947136,"z":-100.71842},"screenPosition":{"x":0.1362524,"y":0.6537182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.7789,"y":125.42746,"z":-100.93297},"screenPosition":{"x":0.12980801,"y":0.6561802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.15878,"y":127.12501,"z":-98.58681},"screenPosition":{"x":0.17700572,"y":0.71698684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.18146,"y":129.62456,"z":-96.27676},"screenPosition":{"x":0.18443361,"y":0.7598573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.00986,"y":128.29454,"z":-96.092},"screenPosition":{"x":0.2445123,"y":0.737598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.92825,"y":128.94962,"z":-95.18663},"screenPosition":{"x":0.26296532,"y":0.7613783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.4702,"y":129.33618,"z":-94.65236},"screenPosition":{"x":0.27726716,"y":0.76610166},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-381.74023,"y":125.098625,"z":-86.62881},"screenPosition":{"x":0.45133498,"y":0.68396497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.49194,"y":126.344215,"z":-83.88208},"screenPosition":{"x":0.5144053,"y":0.72074175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.0519,"y":130.38364,"z":-82.4831},"screenPosition":{"x":0.5439557,"y":0.8201481},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-383.40286,"y":135.85855,"z":-86.51625},"screenPosition":{"x":0.4578186,"y":0.94161886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.0192,"y":137.01147,"z":-84.92281},"screenPosition":{"x":0.4940727,"y":0.97316766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.8741,"y":136.83652,"z":-82.97064},"screenPosition":{"x":0.5237833,"y":0.9806229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.33533,"y":133.93652,"z":-82.362724},"screenPosition":{"x":0.5439278,"y":0.90493554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.1866,"y":130.98889,"z":-83.39416},"screenPosition":{"x":0.5221714,"y":0.83226466},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-378.81076,"y":130.30591,"z":-89.86308},"screenPosition":{"x":0.371883,"y":0.79906785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.64093,"y":125.38118,"z":-88.78285},"screenPosition":{"x":0.40093508,"y":0.6849806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.5134,"y":123.73264,"z":-86.795296},"screenPosition":{"x":0.4489096,"y":0.65075225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.40698,"y":124.380516,"z":-84.895195},"screenPosition":{"x":0.49231115,"y":0.67147285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.45648,"y":126.45373,"z":-83.92345},"screenPosition":{"x":0.51341057,"y":0.7231571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.40665,"y":128.80951,"z":-85.105736},"screenPosition":{"x":0.48396057,"y":0.7760425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.34277,"y":128.98256,"z":-87.21842},"screenPosition":{"x":0.43457016,"y":0.77460235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.75427,"y":126.962006,"z":-87.72261},"screenPosition":{"x":0.42480206,"y":0.7248863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.42834,"y":122.925934,"z":-89.90278},"screenPosition":{"x":0.37669283,"y":0.62379915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.9818,"y":119.47002,"z":-87.13505},"screenPosition":{"x":0.44403356,"y":0.5489657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.22986,"y":122.13509,"z":-83.94957},"screenPosition":{"x":0.51610297,"y":0.6206604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.9672,"y":125.467285,"z":-83.355865},"screenPosition":{"x":0.5274849,"y":0.7011323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.0379,"y":127.88158,"z":-85.43768},"screenPosition":{"x":0.47694266,"y":0.75314635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.1301,"y":128.00363,"z":-88.40852},"screenPosition":{"x":0.40758437,"y":0.74824256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.74045,"y":122.185265,"z":-95.66748},"screenPosition":{"x":0.24286795,"y":0.5910824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.5137,"y":119.502625,"z":-94.751686},"screenPosition":{"x":0.26630387,"y":0.5298143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.31522,"y":118.07311,"z":-92.846855},"screenPosition":{"x":0.3120971,"y":0.500799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.41455,"y":117.79055,"z":-90.69281},"screenPosition":{"x":0.36226475,"y":0.49983576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.01022,"y":118.7678,"z":-89.11211},"screenPosition":{"x":0.39835837,"y":0.5271815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.94623,"y":121.055855,"z":-87.24659},"screenPosition":{"x":0.4400736,"y":0.5863873},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-377.98834,"y":126.64601,"z":-90.52799},"screenPosition":{"x":0.35922533,"y":0.71045405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.71896,"y":124.796844,"z":-92.754265},"screenPosition":{"x":0.30875817,"y":0.660718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.05954,"y":122.83565,"z":-94.35328},"screenPosition":{"x":0.27300227,"y":0.6099702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.81158,"y":119.332924,"z":-93.420204},"screenPosition":{"x":0.2974786,"y":0.52928257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.372,"y":117.467026,"z":-91.74051},"screenPosition":{"x":0.33879676,"y":0.489184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.23022,"y":116.748085,"z":-89.8116},"screenPosition":{"x":0.38361987,"y":0.47740674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.36502,"y":116.35601,"z":-87.61619},"screenPosition":{"x":0.43510926,"y":0.47386554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.3152,"y":119.190796,"z":-85.76219},"screenPosition":{"x":0.47613087,"y":0.54601765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.20135,"y":123.35562,"z":-88.11526},"screenPosition":{"x":0.418034,"y":0.6386915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.1023,"y":120.525856,"z":-91.14104},"screenPosition":{"x":0.3496889,"y":0.5635816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.8118,"y":116.859276,"z":-90.24356},"screenPosition":{"x":0.3739333,"y":0.478763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.59918,"y":114.883026,"z":-88.3272},"screenPosition":{"x":0.41967714,"y":0.4370371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.17365,"y":115.19986,"z":-85.71712},"screenPosition":{"x":0.48028344,"y":0.45141068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.24435,"y":117.933495,"z":-85.77474},"screenPosition":{"x":0.4768154,"y":0.5161424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.31494,"y":122.143456,"z":-85.90256},"screenPosition":{"x":0.4705638,"y":0.61573076},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-378.10947,"y":119.48256,"z":-90.06452},"screenPosition":{"x":0.3755979,"y":0.5416455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.34372,"y":116.53324,"z":-90.70536},"screenPosition":{"x":0.36342263,"y":0.469825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.03897,"y":113.6366,"z":-90.87863},"screenPosition":{"x":0.36116073,"y":0.40075332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.5498,"y":111.33349,"z":-89.228775},"screenPosition":{"x":0.401416,"y":0.35042098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.93994,"y":110.44819,"z":-86.74957},"screenPosition":{"x":0.45993397,"y":0.33591935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.65607,"y":113.11996,"z":-85.12648},"screenPosition":{"x":0.49567014,"y":0.40359485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.10257,"y":116.89521,"z":-85.870026},"screenPosition":{"x":0.4754009,"y":0.4912486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.0954,"y":117.77884,"z":-87.95863},"screenPosition":{"x":0.4260196,"y":0.5067373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.33655,"y":117.736206,"z":-90.769775},"screenPosition":{"x":0.36058423,"y":0.49831873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.90393,"y":117.30067,"z":-91.19021},"screenPosition":{"x":0.35177836,"y":0.48667067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.36484,"y":118.66999,"z":-91.804924},"screenPosition":{"x":0.3362977,"y":0.51754737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.24417,"y":119.608795,"z":-94.011856},"screenPosition":{"x":0.28444982,"y":0.53391516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.15912,"y":118.961754,"z":-96.107254},"screenPosition":{"x":0.23515554,"y":0.5134066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.59903,"y":116.39866,"z":-97.57641},"screenPosition":{"x":0.20285949,"y":0.4487242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.00342,"y":114.583755,"z":-95.03855},"screenPosition":{"x":0.2646039,"y":0.41216987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.42175,"y":116.108574,"z":-93.66467},"screenPosition":{"x":0.29428464,"y":0.45211038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.5918,"y":118.39997,"z":-92.58035},"screenPosition":{"x":0.3177842,"y":0.5093443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.20862,"y":121.034966,"z":-95.1355},"screenPosition":{"x":0.25616473,"y":0.5651768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.15878,"y":123.39074,"z":-96.31779},"screenPosition":{"x":0.22676948,"y":0.61798686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.18,"y":123.89149,"z":-98.35927},"screenPosition":{"x":0.17878449,"y":0.6245117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.21548,"y":123.46264,"z":-100.342094},"screenPosition":{"x":0.13288942,"y":0.6091264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.83273,"y":120.35198,"z":-101.60442},"screenPosition":{"x":0.105876364,"y":0.53198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.0102,"y":118.328094,"z":-101.32742},"screenPosition":{"x":0.114566095,"y":0.46469402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.01736,"y":117.444466,"z":-99.238815},"screenPosition":{"x":0.16328873,"y":0.46918133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.4569,"y":119.78937,"z":-97.882225},"screenPosition":{"x":0.1930944,"y":0.5284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.14465,"y":122.52467,"z":-98.33045},"screenPosition":{"x":0.18051851,"y":0.59214586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.5313,"y":125.10004,"z":-100.5071},"screenPosition":{"x":0.14405955,"y":0.65018284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.87476,"y":123.91846,"z":-102.14015},"screenPosition":{"x":0.10690412,"y":0.6178497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.0257,"y":122.59953,"z":-103.96302},"screenPosition":{"x":0.06543011,"y":0.58175856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.4488,"y":121.474754,"z":-105.51757},"screenPosition":{"x":0.030060804,"y":0.5509798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.63422,"y":119.76012,"z":-103.818146},"screenPosition":{"x":0.05675047,"y":0.49503687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.64136,"y":118.87649,"z":-101.729546},"screenPosition":{"x":0.1053787,"y":0.49635467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.1164,"y":121.111885,"z":-100.33159},"screenPosition":{"x":0.13496116,"y":0.5533585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.4282,"y":124.28189,"z":-100.164085},"screenPosition":{"x":0.14181358,"y":0.62670404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.30502,"y":124.37617,"z":-102.38595},"screenPosition":{"x":0.096749686,"y":0.62741244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.68588,"y":122.35715,"z":-104.29802},"screenPosition":{"x":0.057756968,"y":0.57697606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.59872,"y":120.0293,"z":-102.84742},"screenPosition":{"x":0.077147454,"y":0.5210572},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-380.80457,"y":118.541245,"z":-87.27169},"screenPosition":{"x":0.44144616,"y":0.52663505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.30777,"y":122.86741,"z":-89.00326},"screenPosition":{"x":0.39771023,"y":0.62477213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.15897,"y":121.07676,"z":-92.12905},"screenPosition":{"x":0.32622567,"y":0.5740631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.69113,"y":117.95774,"z":-91.4384},"screenPosition":{"x":0.3455937,"y":0.5015543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.63455,"y":115.930504,"z":-90.3802},"screenPosition":{"x":0.37099853,"y":0.4565083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.9184,"y":113.73775,"z":-88.96701},"screenPosition":{"x":0.40565038,"y":0.40817368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.09586,"y":111.87353,"z":-87.67791},"screenPosition":{"x":0.43715373,"y":0.36731106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.9754,"y":110.33868,"z":-86.708206},"screenPosition":{"x":0.46095464,"y":0.33342752},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-385.50012,"y":112.01396,"z":-82.17395},"screenPosition":{"x":0.56543314,"y":0.38508567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.73413,"y":112.496315,"z":-79.91886},"screenPosition":{"x":0.6175673,"y":0.4024668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.07434,"y":115.44312,"z":-78.69213},"screenPosition":{"x":0.6438777,"y":0.47563067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.68405,"y":118.28376,"z":-78.20523},"screenPosition":{"x":0.6530219,"y":0.544332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.25125,"y":120.641205,"z":-79.77812},"screenPosition":{"x":0.61451876,"y":0.5961562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.96045,"y":120.9246,"z":-82.127464},"screenPosition":{"x":0.55952495,"y":0.5967138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.15216,"y":117.651764,"z":-83.815994},"screenPosition":{"x":0.5227014,"y":0.51459897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.73395,"y":114.96996,"z":-83.095505},"screenPosition":{"x":0.54158336,"y":0.4528379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.642,"y":111.57591,"z":-82.00849},"screenPosition":{"x":0.56956416,"y":0.37513393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.02484,"y":113.52958,"z":-78.651794},"screenPosition":{"x":0.6463053,"y":0.43031844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4572,"y":116.75811,"z":-79.38381},"screenPosition":{"x":0.62672967,"y":0.50502586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.63437,"y":119.00353,"z":-80.32944},"screenPosition":{"x":0.6030839,"y":0.55567265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.47116,"y":119.77848,"z":-82.571976},"screenPosition":{"x":0.55005217,"y":0.5683433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.45703,"y":118.912415,"z":-84.58464},"screenPosition":{"x":0.50380117,"y":0.5425023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.64865,"y":117.11591,"z":-86.34335},"screenPosition":{"x":0.4645333,"y":0.49508953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.49286,"y":114.05458,"z":-86.356926},"screenPosition":{"x":0.4662567,"y":0.42254725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.9257,"y":111.37779,"z":-86.80823},"screenPosition":{"x":0.45788476,"y":0.35782653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.09607,"y":109.240204,"z":-85.51337},"screenPosition":{"x":0.48966536,"y":0.3104926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.58557,"y":107.59334,"z":-83.9164},"screenPosition":{"x":0.5284782,"y":0.27568313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.96158,"y":106.16131,"z":-81.425674},"screenPosition":{"x":0.5875405,"y":0.24824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.77704,"y":108.23118,"z":-79.67272},"screenPosition":{"x":0.6266206,"y":0.3018796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.3725,"y":111.84175,"z":-80.25657},"screenPosition":{"x":0.6102507,"y":0.38603365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.2589,"y":112.89424,"z":-83.48136},"screenPosition":{"x":0.5342005,"y":0.40255722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.27353,"y":107.53565,"z":-83.21217},"screenPosition":{"x":0.544641,"y":0.27607736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.5502,"y":106.70553,"z":-80.8513},"screenPosition":{"x":0.60032845,"y":0.26257342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4083,"y":107.46292,"z":-78.99257},"screenPosition":{"x":0.643075,"y":0.28543082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.9115,"y":112.10842,"z":-78.69994},"screenPosition":{"x":0.64628714,"y":0.39646074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.48587,"y":113.10323,"z":-81.22051},"screenPosition":{"x":0.5867485,"y":0.4134542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.1102,"y":110.26594,"z":-82.48861},"screenPosition":{"x":0.55938864,"y":0.34278098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.55728,"y":106.81922,"z":-81.869156},"screenPosition":{"x":0.57660455,"y":0.26263866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.58575,"y":105.27936,"z":-79.72766},"screenPosition":{"x":0.62763375,"y":0.23167352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.2168,"y":107.62342,"z":-78.17577},"screenPosition":{"x":0.6620051,"y":0.2913907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.54993,"y":110.1372,"z":-77.955376},"screenPosition":{"x":0.66517824,"y":0.35162854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.7768,"y":111.503174,"z":-77.788895},"screenPosition":{"x":0.6680544,"y":0.38447037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.3865,"y":114.34381,"z":-77.301994},"screenPosition":{"x":0.6771423,"y":0.45318875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.09546,"y":117.73954,"z":-78.7796},"screenPosition":{"x":0.6400776,"y":0.52987707},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-383.99673,"y":110.161446,"z":-83.61903},"screenPosition":{"x":0.5331146,"y":0.3373325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.21628,"y":113.88738,"z":-85.611336},"screenPosition":{"x":0.48376969,"y":0.4205366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.40756,"y":116.679535,"z":-86.56849},"screenPosition":{"x":0.45970833,"y":0.48411942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.05273,"y":119.25099,"z":-87.052315},"screenPosition":{"x":0.4460179,"y":0.54405165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.59152,"y":122.31065,"z":-86.64815},"screenPosition":{"x":0.45305085,"y":0.6177414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.19415,"y":125.197266,"z":-84.131294},"screenPosition":{"x":0.5098567,"y":0.69240266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.13757,"y":123.3297,"z":-82.061005},"screenPosition":{"x":0.5592054,"y":0.6539735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.3434,"y":121.082596,"z":-80.72478},"screenPosition":{"x":0.5921051,"y":0.604147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.12375,"y":118.673325,"z":-79.81475},"screenPosition":{"x":0.6151942,"y":0.54935217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.03183,"y":115.1196,"z":-79.73983},"screenPosition":{"x":0.6197027,"y":0.46520084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.57095,"y":113.27126,"z":-82.1614},"screenPosition":{"x":0.5646816,"y":0.41497186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.6914,"y":114.64645,"z":-84.1432},"screenPosition":{"x":0.5174084,"y":0.44240806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.81113,"y":125.39791,"z":-92.68883},"screenPosition":{"x":0.3100427,"y":0.6750012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.40683,"y":125.89615,"z":-94.14441},"screenPosition":{"x":0.2754935,"y":0.68315995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.7614,"y":125.958015,"z":-95.82513},"screenPosition":{"x":0.23626047,"y":0.68021506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.95294,"y":125.63784,"z":-97.654015},"screenPosition":{"x":0.19386981,"y":0.66781336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.64798,"y":125.53418,"z":-98.979744},"screenPosition":{"x":0.16872713,"y":0.65901357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.85583,"y":124.61823,"z":-101.173},"screenPosition":{"x":0.12635891,"y":0.64463174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.72623,"y":122.15685,"z":-101.7987},"screenPosition":{"x":0.09994431,"y":0.5743086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.77606,"y":119.96075,"z":-99.60431},"screenPosition":{"x":0.15281184,"y":0.5279458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.71924,"y":121.04584,"z":-97.67438},"screenPosition":{"x":0.19696379,"y":0.5587682},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8894,"y":121.86091,"z":-96.519875},"screenPosition":{"x":0.2241196,"y":0.5807851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.1802,"y":121.25817,"z":-96.19472},"screenPosition":{"x":0.23129612,"y":0.5676933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.32928,"y":119.61716,"z":-95.96484},"screenPosition":{"x":0.23793086,"y":0.5293472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.79758,"y":116.990524,"z":-95.362686},"screenPosition":{"x":0.25401118,"y":0.468585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.69138,"y":114.52608,"z":-94.33433},"screenPosition":{"x":0.279902,"y":0.41279125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.039,"y":113.31725,"z":-92.90282},"screenPosition":{"x":0.31421614,"y":0.38785866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.88306,"y":112.05159,"z":-90.96239},"screenPosition":{"x":0.36043984,"y":0.36291313},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-379.5499,"y":110.01683,"z":-88.1465},"screenPosition":{"x":0.42526373,"y":0.3016335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.01807,"y":109.0262,"z":-86.602425},"screenPosition":{"x":0.4617678,"y":0.28247544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.22382,"y":108.25543,"z":-85.33638},"screenPosition":{"x":0.4914419,"y":0.26690182},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-389.03967,"y":105.21833,"z":-78.24224},"screenPosition":{"x":0.66231287,"y":0.23412544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4083,"y":107.46292,"z":-78.99257},"screenPosition":{"x":0.643075,"y":0.28543082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.59955,"y":110.41474,"z":-78.93763},"screenPosition":{"x":0.6420618,"y":0.3556369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.798,"y":112.48293,"z":-76.79409},"screenPosition":{"x":0.69043,"y":0.41035426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.3939,"y":110.50753,"z":-75.07303},"screenPosition":{"x":0.7321025,"y":0.36798272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.33023,"y":108.20693,"z":-74.00906},"screenPosition":{"x":0.7586842,"y":0.31617567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.65665,"y":106.01835,"z":-73.572365},"screenPosition":{"x":0.77057046,"y":0.26539877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.7704,"y":102.69118,"z":-75.33787},"screenPosition":{"x":0.73199916,"y":0.18179601},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.53613,"y":105.001816,"z":-78.74541},"screenPosition":{"x":0.650823,"y":0.22773086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.26642,"y":108.06064,"z":-78.145935},"screenPosition":{"x":0.6623492,"y":0.30184084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.03226,"y":109.69329,"z":-76.42283},"screenPosition":{"x":0.70125365,"y":0.34511662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.91876,"y":110.0678,"z":-74.51697},"screenPosition":{"x":0.7454015,"y":0.3590089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.73444,"y":109.18501,"z":-72.623665},"screenPosition":{"x":0.7902239,"y":0.34302846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.72745,"y":107.59499,"z":-71.53563},"screenPosition":{"x":0.8168265,"y":0.30814606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.35178,"y":105.07704,"z":-70.77953},"screenPosition":{"x":0.83641124,"y":0.25036752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.97607,"y":102.39942,"z":-71.03554},"screenPosition":{"x":0.83252364,"y":0.18614164},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-390.42276,"y":103.899994,"z":-76.76937},"screenPosition":{"x":0.69767654,"y":0.20670216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.77014,"y":105.64384,"z":-75.478226},"screenPosition":{"x":0.7264236,"y":0.25148267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.74173,"y":106.346054,"z":-73.50116},"screenPosition":{"x":0.77197397,"y":0.27335295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.2879,"y":105.40976,"z":-71.88012},"screenPosition":{"x":0.8104931,"y":0.25537473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.55753,"y":104.1466,"z":-70.52558},"screenPosition":{"x":0.84302837,"y":0.22900587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.46548,"y":102.228874,"z":-69.50875},"screenPosition":{"x":0.8682274,"y":0.18615177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.16074,"y":99.33223,"z":-69.68202},"screenPosition":{"x":0.8664637,"y":0.11689565},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-393.73502,"y":101.6437,"z":-73.28486},"screenPosition":{"x":0.7806693,"y":0.16229834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.8129,"y":103.493706,"z":-71.25388},"screenPosition":{"x":0.82658255,"y":0.21154138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.55762,"y":102.82994,"z":-69.443306},"screenPosition":{"x":0.8693109,"y":0.20054106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.572,"y":100.58368,"z":-68.30238},"screenPosition":{"x":0.8976566,"y":0.15022163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.21045,"y":98.61246,"z":-67.557816},"screenPosition":{"x":0.9165477,"y":0.105389446},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-396.4089,"y":99.8823,"z":-70.47474},"screenPosition":{"x":0.84755445,"y":0.12787014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.85562,"y":101.02424,"z":-69.053734},"screenPosition":{"x":0.87979686,"y":0.15870544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.5934,"y":98.61078,"z":-67.16721},"screenPosition":{"x":0.92559665,"y":0.10647728},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-092352/brain-C784D4-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.6377571632916832,-0.4442302948932541,-0.6292259099633436,0.0,-0.289973671660162,-0.8952968541427644,0.3381697986307973,0.0,-0.7135692471050513,-0.0332112640699197,-0.6997970716749307,0.0,-475.2563134994014,105.70294574825745,-151.97336516124062,1.0]},"baseImage":"20190824-092352/base.webp","version":0,"savedAt":1.566638774762E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-093320-v0.json b/data/mapping/BAAAHS/dwayman/20190824-093320-v0.json new file mode 100644 index 0000000000..80889930fc --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-093320-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566639200136E12,"surfaces":[{"brainId":"CB2984","panelName":"12D","pixels":[{"modelPosition":{"x":-102.48062,"y":132.98927,"z":-105.178116},"screenPosition":{"x":0.8792226,"y":0.8856754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.30286,"y":134.9515,"z":-104.513794},"screenPosition":{"x":0.833389,"y":0.89499843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.32583,"y":136.05309,"z":-104.140854},"screenPosition":{"x":0.80745685,"y":0.8972397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.98308,"y":137.5906,"z":-102.43339},"screenPosition":{"x":0.7637615,"y":0.9042807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.029366,"y":139.37863,"z":-101.5943},"screenPosition":{"x":0.72622573,"y":0.8823063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.98071,"y":141.35707,"z":-100.587296},"screenPosition":{"x":0.68683326,"y":0.86647767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.37356,"y":142.99825,"z":-99.60111},"screenPosition":{"x":0.65738124,"y":0.8458077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.24764,"y":144.88875,"z":-98.625565},"screenPosition":{"x":0.6200649,"y":0.83102256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.148254,"y":146.3617,"z":-97.94906},"screenPosition":{"x":0.58925545,"y":0.8249634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.9274,"y":148.44261,"z":-96.8056},"screenPosition":{"x":0.54962647,"y":0.8041388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.715385,"y":150.38434,"z":-95.761826},"screenPosition":{"x":0.5121664,"y":0.7862228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.9162,"y":152.34827,"z":-94.859825},"screenPosition":{"x":0.47131267,"y":0.7773865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.21865,"y":153.92448,"z":-94.64541},"screenPosition":{"x":0.42753875,"y":0.8049492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.719826,"y":154.98065,"z":-94.86649},"screenPosition":{"x":0.39078474,"y":0.8467423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.265366,"y":153.9422,"z":-96.934586},"screenPosition":{"x":0.38266167,"y":0.9656911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.09527,"y":151.95729,"z":-98.75645},"screenPosition":{"x":0.43492192,"y":0.95726985},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-118.07983,"y":152.0134,"z":-96.67627},"screenPosition":{"x":0.4435713,"y":0.8881497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.766174,"y":154.34283,"z":-94.94491},"screenPosition":{"x":0.4085804,"y":0.8353495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.604965,"y":148.48538,"z":-95.89206},"screenPosition":{"x":0.567291,"y":0.7455605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.18137,"y":144.71971,"z":-98.3367},"screenPosition":{"x":0.6312099,"y":0.807773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.34714,"y":144.44295,"z":-99.73315},"screenPosition":{"x":0.61064494,"y":0.8918427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.1153,"y":146.60495,"z":-98.91001},"screenPosition":{"x":0.5618961,"y":0.8940454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.73323,"y":148.70726,"z":-97.309784},"screenPosition":{"x":0.5311765,"y":0.8435099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.68448,"y":149.65857,"z":-95.87169},"screenPosition":{"x":0.53210086,"y":0.77404493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.97574,"y":149.2616,"z":-95.115425},"screenPosition":{"x":0.55978537,"y":0.7148753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.147995,"y":146.73328,"z":-96.16938},"screenPosition":{"x":0.61488986,"y":0.7183108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.11295,"y":144.49258,"z":-98.467834},"screenPosition":{"x":0.63540804,"y":0.81034416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.39558,"y":146.28906,"z":-98.47406},"screenPosition":{"x":0.58056694,"y":0.8573834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.69787,"y":149.26399,"z":-96.91106},"screenPosition":{"x":0.5224235,"y":0.8322971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.662346,"y":151.21945,"z":-95.163734},"screenPosition":{"x":0.4991526,"y":0.7687709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.843124,"y":151.34938,"z":-93.62019},"screenPosition":{"x":0.52732456,"y":0.6709655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.18743,"y":150.11731,"z":-93.46202},"screenPosition":{"x":0.5680479,"y":0.62905115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.41696,"y":149.29591,"z":-93.35657},"screenPosition":{"x":0.5953101,"y":0.6004672},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-104.03104,"y":143.63289,"z":-97.128525},"screenPosition":{"x":0.68939143,"y":0.70069546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.852295,"y":142.53392,"z":-97.820984},"screenPosition":{"x":0.70848083,"y":0.71748066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.05557,"y":141.75851,"z":-99.19616},"screenPosition":{"x":0.70354253,"y":0.787249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.45527,"y":141.80368,"z":-100.07825},"screenPosition":{"x":0.68385273,"y":0.8460495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.74888,"y":143.51909,"z":-99.76415},"screenPosition":{"x":0.6381354,"y":0.8699462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.90308,"y":146.49242,"z":-97.00407},"screenPosition":{"x":0.60495245,"y":0.7659389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.08617,"y":145.28172,"z":-96.389114},"screenPosition":{"x":0.65453154,"y":0.6950808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.24744,"y":142.83449,"z":-97.76339},"screenPosition":{"x":0.7005165,"y":0.7214034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.71776,"y":140.73904,"z":-99.01185},"screenPosition":{"x":0.73841506,"y":0.7488091},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-107.49738,"y":138.62381,"z":-101.91416},"screenPosition":{"x":0.7425307,"y":0.8833085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.08127,"y":140.09706,"z":-102.77176},"screenPosition":{"x":0.71402836,"y":0.9317298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.2241,"y":141.52673,"z":-102.347336},"screenPosition":{"x":0.6724166,"y":0.9475244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.40534,"y":143.67653,"z":-101.55992},"screenPosition":{"x":0.62888783,"y":0.92601424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.9035,"y":144.7221,"z":-100.13233},"screenPosition":{"x":0.595188,"y":0.93144464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.54581,"y":146.34875,"z":-99.251144},"screenPosition":{"x":0.56273884,"y":0.90871304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.327354,"y":144.65683,"z":-99.52063},"screenPosition":{"x":0.54823685,"y":1.0035065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.49537,"y":142.76204,"z":-100.17483},"screenPosition":{"x":0.5933935,"y":0.99512076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.570496,"y":143.85437,"z":-101.49971},"screenPosition":{"x":0.6263202,"y":0.95026666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.81076,"y":142.54478,"z":-100.46193},"screenPosition":{"x":0.6533181,"y":0.8903067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.04453,"y":144.26544,"z":-98.598976},"screenPosition":{"x":0.63960487,"y":0.8129071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.47257,"y":146.7486,"z":-96.662926},"screenPosition":{"x":0.6042217,"y":0.7504441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.46785,"y":160.16037,"z":-91.56681},"screenPosition":{"x":0.30155706,"y":0.7652805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.71088,"y":159.97154,"z":-92.93181},"screenPosition":{"x":0.27896684,"y":0.8495725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.00679,"y":160.34633,"z":-93.5463},"screenPosition":{"x":0.25534976,"y":0.8983948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.19787,"y":158.52876,"z":-96.531654},"screenPosition":{"x":0.28099382,"y":0.9820738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.42407,"y":155.54185,"z":-97.542885},"screenPosition":{"x":0.35095826,"y":0.97079974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.41988,"y":154.11809,"z":-96.87167},"screenPosition":{"x":0.37864944,"y":0.96633756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.85683,"y":154.03621,"z":-95.95281},"screenPosition":{"x":0.39699143,"y":0.8932611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.36889,"y":153.98418,"z":-95.4225},"screenPosition":{"x":0.40999466,"y":0.85610473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.38202,"y":153.96118,"z":-94.68218},"screenPosition":{"x":0.42574137,"y":0.8080643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.7417,"y":153.79135,"z":-93.79478},"screenPosition":{"x":0.44925377,"y":0.74592656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.763664,"y":153.62918,"z":-93.154144},"screenPosition":{"x":0.46778518,"y":0.6990301},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.36397,"y":153.58401,"z":-92.27206},"screenPosition":{"x":0.48718315,"y":0.6410714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.98196,"y":153.26047,"z":-91.58933},"screenPosition":{"x":0.51126194,"y":0.5879359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.70158,"y":152.54922,"z":-91.5942},"screenPosition":{"x":0.53276944,"y":0.56998926},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-103.507515,"y":147.96216,"z":-93.93339},"screenPosition":{"x":0.6238913,"y":0.60404336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.25376,"y":147.86049,"z":-94.66839},"screenPosition":{"x":0.6117273,"y":0.64943135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.47011,"y":149.48793,"z":-94.38574},"screenPosition":{"x":0.5680352,"y":0.6731058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.43914,"y":151.188,"z":-93.5781},"screenPosition":{"x":0.5330316,"y":0.6643602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.511955,"y":152.55847,"z":-93.038055},"screenPosition":{"x":0.50250965,"y":0.6645628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.31762,"y":154.22185,"z":-92.19365},"screenPosition":{"x":0.4693875,"y":0.65246415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.9401,"y":156.06876,"z":-91.5331},"screenPosition":{"x":0.42698732,"y":0.6568476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.55374,"y":158.05487,"z":-90.772865},"screenPosition":{"x":0.38215965,"y":0.6588893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.271164,"y":159.71136,"z":-90.28023},"screenPosition":{"x":0.3419429,"y":0.6695957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.43463,"y":160.7752,"z":-90.748085},"screenPosition":{"x":0.2999792,"y":0.7274726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.39937,"y":162.35909,"z":-90.78044},"screenPosition":{"x":0.25137952,"y":0.7701462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.280525,"y":158.82901,"z":-93.93926},"screenPosition":{"x":0.29284313,"y":0.88580966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.54103,"y":156.30756,"z":-94.64145},"screenPosition":{"x":0.3550497,"y":0.8663969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.80577,"y":156.32814,"z":-93.586136},"screenPosition":{"x":0.37633345,"y":0.79798156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.62018,"y":156.82518,"z":-92.41032},"screenPosition":{"x":0.3856097,"y":0.7340305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.94235,"y":157.15399,"z":-91.54418},"screenPosition":{"x":0.39387676,"y":0.6853539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.44771,"y":157.29924,"z":-90.49419},"screenPosition":{"x":0.41095656,"y":0.6211161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.77433,"y":156.34554,"z":-90.13665},"screenPosition":{"x":0.44742304,"y":0.5730613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.84051,"y":155.48744,"z":-89.99442},"screenPosition":{"x":0.47650746,"y":0.54154986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-105.65507,"y":154.58577,"z":-90.1672},"screenPosition":{"x":0.5003787,"y":0.5294904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.30858,"y":152.30676,"z":-91.2318},"screenPosition":{"x":0.54767734,"y":0.54003346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.75468,"y":149.28825,"z":-93.109795},"screenPosition":{"x":0.6006077,"y":0.5845717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.41037,"y":150.52034,"z":-93.267975},"screenPosition":{"x":0.5598131,"y":0.6267616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.61333,"y":152.54236,"z":-91.94597},"screenPosition":{"x":0.52586335,"y":0.5921642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.31736,"y":154.59343,"z":-90.41397},"screenPosition":{"x":0.49518293,"y":0.54542065},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-111.78789,"y":154.55225,"z":-92.5246},"screenPosition":{"x":0.45245436,"y":0.68264216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.392685,"y":156.67754,"z":-91.66469},"screenPosition":{"x":0.405587,"y":0.6814918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.5868,"y":158.83875,"z":-90.243004},"screenPosition":{"x":0.36934832,"y":0.6444678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.07887,"y":160.4057,"z":-88.58473},"screenPosition":{"x":0.35611635,"y":0.57663715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.542336,"y":159.90627,"z":-87.96491},"screenPosition":{"x":0.38407916,"y":0.5233724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.1009,"y":157.81767,"z":-88.8616},"screenPosition":{"x":0.42906508,"y":0.5278759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.38589,"y":155.84769,"z":-90.71392},"screenPosition":{"x":0.45082495,"y":0.59739697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.63106,"y":155.71696,"z":-91.65891},"screenPosition":{"x":0.4349589,"y":0.65624213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.57812,"y":157.57921,"z":-91.49191},"screenPosition":{"x":0.382087,"y":0.69282126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.77438,"y":159.79852,"z":-89.65023},"screenPosition":{"x":0.35236916,"y":0.6306917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.81173,"y":160.6986,"z":-88.280365},"screenPosition":{"x":0.3534008,"y":0.5644987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.59961,"y":161.6132,"z":-86.805504},"screenPosition":{"x":0.35617015,"y":0.4918217},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-112.73656,"y":163.0946,"z":-86.97432},"screenPosition":{"x":0.3075524,"y":0.54120994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.27959,"y":161.34248,"z":-87.25164},"screenPosition":{"x":0.35545453,"y":0.51359594},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-111.517685,"y":166.63234,"z":-84.06227},"screenPosition":{"x":0.26027915,"y":0.4425577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.380745,"y":165.15094,"z":-83.893456},"screenPosition":{"x":0.3088969,"y":0.3931695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.394035,"y":163.72923,"z":-84.50173},"screenPosition":{"x":0.3395626,"y":0.39609775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.67891,"y":166.61095,"z":-84.51904},"screenPosition":{"x":0.25144684,"y":0.4718468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.43598,"y":167.8269,"z":-83.58514},"screenPosition":{"x":0.23380764,"y":0.44231582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.581505,"y":169.54071,"z":-82.07395},"screenPosition":{"x":0.2129932,"y":0.38796005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.29437,"y":171.45259,"z":-80.64163},"screenPosition":{"x":0.18450919,"y":0.34388584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.66953,"y":173.37215,"z":-79.456085},"screenPosition":{"x":0.15066828,"y":0.31613272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.36927,"y":175.307,"z":-78.764084},"screenPosition":{"x":0.10611363,"y":0.32102185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.95655,"y":176.31195,"z":-79.05339},"screenPosition":{"x":0.06261986,"y":0.3688997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.77352,"y":175.0968,"z":-80.585846},"screenPosition":{"x":0.07937523,"y":0.43232024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.550735,"y":173.29504,"z":-82.12849},"screenPosition":{"x":0.09753077,"y":0.48873654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.62591,"y":170.89905,"z":-83.43453},"screenPosition":{"x":0.1433792,"y":0.51202536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.2462,"y":169.23488,"z":-83.6804},"screenPosition":{"x":0.18895279,"y":0.48499778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.78692,"y":168.8234,"z":-83.02913},"screenPosition":{"x":0.21500573,"y":0.4317924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.369545,"y":169.0566,"z":-81.94768},"screenPosition":{"x":0.2303576,"y":0.36717466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.16627,"y":169.832,"z":-80.5725},"screenPosition":{"x":0.2352959,"y":0.2974063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.90566,"y":171.32634,"z":-79.439224},"screenPosition":{"x":0.21331878,"y":0.26205802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.42865,"y":173.61906,"z":-77.67109},"screenPosition":{"x":0.18020932,"y":0.20590475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.609634,"y":175.80325,"z":-76.98972},"screenPosition":{"x":0.1284429,"y":0.21786785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.08874,"y":175.99448,"z":-77.42036},"screenPosition":{"x":0.11307715,"y":0.25103128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.68485,"y":176.86024,"z":-77.80935},"screenPosition":{"x":0.078635864,"y":0.29886383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.92119,"y":176.8687,"z":-78.65466},"screenPosition":{"x":0.060235977,"y":0.35485607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.04641,"y":176.11716,"z":-80.87726},"screenPosition":{"x":0.07039925,"y":0.41472882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.48446,"y":173.126,"z":-81.83962},"screenPosition":{"x":0.10918222,"y":0.4651964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.81108,"y":172.1723,"z":-81.48208},"screenPosition":{"x":0.14514227,"y":0.41743216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.08906,"y":173.19704,"z":-80.11754},"screenPosition":{"x":0.14226724,"y":0.3548145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.77101,"y":174.38315,"z":-78.79508},"screenPosition":{"x":0.13360408,"y":0.2991253},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.30059,"y":175.45146,"z":-77.11554},"screenPosition":{"x":0.13594218,"y":0.21705565},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.64232,"y":181.81042,"z":-72.84517},"screenPosition":{"x":0.030956738,"y":0.10270977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.71774,"y":183.05524,"z":-73.28673},"screenPosition":{"x":0.016712686,"y":0.098456495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-109.283035,"y":183.46677,"z":-72.83649},"screenPosition":{"x":0.010203233,"y":0.08126856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.20967,"y":182.0085,"z":-72.924034},"screenPosition":{"x":0.019793658,"y":0.116606764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.49397,"y":181.37367,"z":-75.12642},"screenPosition":{"x":0.027986115,"y":0.17581582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.4108,"y":180.5057,"z":-76.076004},"screenPosition":{"x":0.033938464,"y":0.21569175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.82846,"y":179.1636,"z":-77.54433},"screenPosition":{"x":0.046825964,"y":0.2758565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.06232,"y":177.43916,"z":-77.5524},"screenPosition":{"x":0.067432396,"y":0.29679564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.81945,"y":176.22928,"z":-77.53599},"screenPosition":{"x":0.10438564,"y":0.26448873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.066505,"y":176.52823,"z":-76.28131},"screenPosition":{"x":0.120471925,"y":0.19043334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.01116,"y":178.70396,"z":-74.75463},"screenPosition":{"x":0.085912265,"y":0.14702582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.08836,"y":181.21776,"z":-73.80567},"screenPosition":{"x":0.026018236,"y":0.15327631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.13572,"y":180.76613,"z":-75.7911},"screenPosition":{"x":0.022753628,"y":0.20759271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.70334,"y":179.28206,"z":-77.414734},"screenPosition":{"x":0.03560129,"y":0.27464843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.82926,"y":178.21614,"z":-78.58089},"screenPosition":{"x":0.052706547,"y":0.31963527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.86161,"y":176.50238,"z":-78.88548},"screenPosition":{"x":0.061520334,"y":0.36242235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.28343,"y":174.98666,"z":-80.47553},"screenPosition":{"x":0.084320374,"y":0.42265207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.60148,"y":173.80055,"z":-81.79798},"screenPosition":{"x":0.08189087,"y":0.48242703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.88644,"y":173.4285,"z":-83.81877},"screenPosition":{"x":0.08382145,"y":0.5402473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.15611,"y":172.22649,"z":-85.13382},"screenPosition":{"x":0.092320904,"y":0.59540564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.917694,"y":169.75891,"z":-86.23762},"screenPosition":{"x":0.12371107,"y":0.66199267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.732155,"y":167.8301,"z":-85.9793},"screenPosition":{"x":0.18442386,"y":0.5984214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.44932,"y":169.85818,"z":-83.706985},"screenPosition":{"x":0.16966176,"y":0.5026997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.43372,"y":172.62051,"z":-82.17012},"screenPosition":{"x":0.11720788,"y":0.47399065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.54523,"y":173.75151,"z":-83.46537},"screenPosition":{"x":0.08870453,"y":0.52256685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.48445,"y":172.62093,"z":-84.77259},"screenPosition":{"x":0.09049905,"y":0.58963186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.848526,"y":170.62427,"z":-86.8867},"screenPosition":{"x":0.11290302,"y":0.66512233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.48734,"y":168.61638,"z":-87.24507},"screenPosition":{"x":0.13459304,"y":0.70102024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.29537,"y":166.51326,"z":-88.24676},"screenPosition":{"x":0.17702559,"y":0.71286595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.43593,"y":164.37392,"z":-84.07155},"screenPosition":{"x":0.3290779,"y":0.38453132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.02519,"y":166.8357,"z":-82.59228},"screenPosition":{"x":0.28460705,"y":0.3517817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.92152,"y":168.19243,"z":-82.75577},"screenPosition":{"x":0.23989597,"y":0.39759454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.48457,"y":168.2743,"z":-83.67463},"screenPosition":{"x":0.2183247,"y":0.45974812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.49127,"y":168.07703,"z":-84.19431},"screenPosition":{"x":0.21354283,"y":0.48859274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.47584,"y":169.44063,"z":-84.006035},"screenPosition":{"x":0.17592633,"y":0.5116005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.19342,"y":169.69841,"z":-84.861984},"screenPosition":{"x":0.15030465,"y":0.57419854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.19797,"y":169.44302,"z":-85.80167},"screenPosition":{"x":0.13857195,"y":0.62897915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.944214,"y":169.34135,"z":-86.53666},"screenPosition":{"x":0.11493227,"y":0.67707676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.45081,"y":169.10738,"z":-88.54625},"screenPosition":{"x":0.1246407,"y":0.7342701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.51306,"y":167.86032,"z":-89.98089},"screenPosition":{"x":0.12733638,"y":0.80664414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.734985,"y":165.7463,"z":-90.46725},"screenPosition":{"x":0.14255315,"y":0.83979386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.86518,"y":163.97202,"z":-90.6028},"screenPosition":{"x":0.20549692,"y":0.80099475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.2337,"y":163.663,"z":-89.81508},"screenPosition":{"x":0.23126236,"y":0.74152756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.36829,"y":163.03203,"z":-89.54172},"screenPosition":{"x":0.2561526,"y":0.7073297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.71914,"y":163.00139,"z":-88.55463},"screenPosition":{"x":0.27758008,"y":0.64204526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.90431,"y":164.27464,"z":-86.60218},"screenPosition":{"x":0.2793432,"y":0.5474521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.82244,"y":166.86794,"z":-84.77645},"screenPosition":{"x":0.23827663,"y":0.4953186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.31462,"y":169.46202,"z":-83.54926},"screenPosition":{"x":0.18495965,"y":0.48217034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.789276,"y":170.93576,"z":-83.471306},"screenPosition":{"x":0.14169699,"y":0.5152376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.15361,"y":171.53767,"z":-83.954666},"screenPosition":{"x":0.11313208,"y":0.56254435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.67643,"y":171.7339,"z":-85.67273},"screenPosition":{"x":0.09935179,"y":0.61641455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.36773,"y":170.83803,"z":-86.72316},"screenPosition":{"x":0.10429504,"y":0.67090535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.92003,"y":169.16429,"z":-85.96441},"screenPosition":{"x":0.07698501,"y":0.76511985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.192856,"y":168.40489,"z":-89.314804},"screenPosition":{"x":0.13007656,"y":0.7662931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.82537,"y":165.81128,"z":-89.69548},"screenPosition":{"x":0.16832435,"y":0.7893405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.202736,"y":165.36307,"z":-89.00744},"screenPosition":{"x":0.19625875,"y":0.732782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.248924,"y":166.12396,"z":-87.73726},"screenPosition":{"x":0.19945936,"y":0.66949767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.6991,"y":167.04622,"z":-86.50917},"screenPosition":{"x":0.19687182,"y":0.6131418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.8998,"y":167.98302,"z":-85.17608},"screenPosition":{"x":0.196022,"y":0.55030185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.37881,"y":167.1471,"z":-85.17563},"screenPosition":{"x":0.22148724,"y":0.5286275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.579834,"y":165.28645,"z":-86.53972},"screenPosition":{"x":0.2500559,"y":0.5693363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.93324,"y":163.5436,"z":-88.2609},"screenPosition":{"x":0.26747927,"y":0.6365053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.21147,"y":164.19675,"z":-88.67603},"screenPosition":{"x":0.23865713,"y":0.6809296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.96002,"y":162.75446,"z":-90.33962},"screenPosition":{"x":0.24812259,"y":0.7521506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.98889,"y":164.44926,"z":-91.08084},"screenPosition":{"x":0.18103795,"y":0.84458524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.447754,"y":166.63106,"z":-88.60384},"screenPosition":{"x":0.16602433,"y":0.73924637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.3617,"y":164.25645,"z":-89.453125},"screenPosition":{"x":0.22099943,"y":0.73285365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.00423,"y":162.05853,"z":-90.838036},"screenPosition":{"x":0.25888386,"y":0.7668165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.40382,"y":161.07657,"z":-91.28903},"screenPosition":{"x":0.28027457,"y":0.769461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.605,"y":157.8172,"z":-94.00172},"screenPosition":{"x":0.32235882,"y":0.86369085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.73772,"y":156.75655,"z":-95.92803},"screenPosition":{"x":0.31845015,"y":0.9760381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.352005,"y":158.69475,"z":-96.475464},"screenPosition":{"x":0.277106,"y":0.9827003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.44177,"y":162.02191,"z":-95.349045},"screenPosition":{"x":0.19917156,"y":0.9952586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.8214,"y":162.89763,"z":-93.23266},"screenPosition":{"x":0.18361278,"y":0.9449957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.216606,"y":160.77234,"z":-94.09257},"screenPosition":{"x":0.23048015,"y":0.94614613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.83933,"y":159.21951,"z":-96.2978},"screenPosition":{"x":0.26600832,"y":0.99296916},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-129.24077,"y":164.12126,"z":-92.54552},"screenPosition":{"x":0.15761739,"y":0.9285387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.82056,"y":164.33867,"z":-93.357704},"screenPosition":{"x":0.13663681,"y":0.9914664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.2263,"y":161.57155,"z":-92.326614},"screenPosition":{"x":0.12320353,"y":1.0894738},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-127.276184,"y":161.13866,"z":-93.86175},"screenPosition":{"x":0.22421649,"y":0.9403699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.19003,"y":163.61575,"z":-92.87602},"screenPosition":{"x":0.15960087,"y":0.9402235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.72913,"y":163.86897,"z":-94.3476},"screenPosition":{"x":0.15822133,"y":0.9885905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.44862,"y":161.70833,"z":-92.0393},"screenPosition":{"x":0.119025454,"y":1.0864354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.83983,"y":160.86206,"z":-95.4823},"screenPosition":{"x":0.19902855,"y":1.0427319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.57802,"y":161.09178,"z":-95.66393},"screenPosition":{"x":0.22095837,"y":0.9917479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.09028,"y":158.5543,"z":-91.39268},"screenPosition":{"x":0.3540815,"y":0.71231693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.381485,"y":160.58319,"z":-89.7189},"screenPosition":{"x":0.32704768,"y":0.65549695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.939835,"y":162.31918,"z":-88.349495},"screenPosition":{"x":0.3026141,"y":0.61097825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.43415,"y":164.97137,"z":-86.70231},"screenPosition":{"x":0.2560469,"y":0.5720351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.14273,"y":166.76706,"z":-86.10999},"screenPosition":{"x":0.21366121,"y":0.57983285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.76307,"y":168.55588,"z":-85.86944},"screenPosition":{"x":0.16418093,"y":0.6104357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.816216,"y":168.7479,"z":-86.89861},"screenPosition":{"x":0.1369653,"y":0.68264866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.706055,"y":166.47736,"z":-88.808525},"screenPosition":{"x":0.16672416,"y":0.7483121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.609024,"y":164.18382,"z":-89.97812},"screenPosition":{"x":0.2120165,"y":0.76566607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.98654,"y":162.3369,"z":-90.63867},"screenPosition":{"x":0.25457364,"y":0.76095724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.492065,"y":161.08344,"z":-90.93726},"screenPosition":{"x":0.28651807,"y":0.7480508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.04393,"y":159.19214,"z":-91.31427},"screenPosition":{"x":0.33628586,"y":0.72370964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.45237,"y":158.071,"z":-91.86495},"screenPosition":{"x":0.35923213,"y":0.7301965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.768005,"y":157.19836,"z":-91.82773},"screenPosition":{"x":0.38681766,"y":0.70465624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.89606,"y":155.36597,"z":-92.38328},"screenPosition":{"x":0.4308799,"y":0.6938295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-110.94685,"y":153.44563,"z":-92.97028},"screenPosition":{"x":0.47690064,"y":0.68310624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.32437,"y":151.59871,"z":-93.63083},"screenPosition":{"x":0.5196192,"y":0.6777185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-114.342476,"y":149.55003,"z":-96.95846},"screenPosition":{"x":0.51290137,"y":0.84197795},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-108.11703,"y":148.43335,"z":-95.36175},"screenPosition":{"x":0.57988626,"y":0.7095652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-106.34425,"y":148.95258,"z":-94.3277},"screenPosition":{"x":0.58554333,"y":0.65545124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.324326,"y":148.14572,"z":-94.11725},"screenPosition":{"x":0.6145286,"y":0.6203266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-103.0993,"y":145.25874,"z":-95.648796},"screenPosition":{"x":0.6706022,"y":0.64611745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-104.96047,"y":143.34766,"z":-97.679665},"screenPosition":{"x":0.6866231,"y":0.7290815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-107.43512,"y":144.8214,"z":-97.6017},"screenPosition":{"x":0.64337385,"y":0.76238495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.12817,"y":146.95355,"z":-96.390015},"screenPosition":{"x":0.6036011,"y":0.7384295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-108.75279,"y":148.85857,"z":-95.30947},"screenPosition":{"x":0.5680929,"y":0.7167169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-109.86751,"y":150.87373,"z":-94.33924},"screenPosition":{"x":0.5267995,"y":0.7059506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-113.34001,"y":152.28937,"z":-94.68128},"screenPosition":{"x":0.47658777,"y":0.7649537},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-111.19439,"y":149.54843,"z":-95.761375},"screenPosition":{"x":0.53763163,"y":0.7645485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.30241,"y":151.76088,"z":-94.27146},"screenPosition":{"x":0.5011905,"y":0.72449404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-111.514206,"y":153.6437,"z":-93.04914},"screenPosition":{"x":0.469425,"y":0.6928299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-112.36177,"y":155.95177,"z":-91.77455},"screenPosition":{"x":0.4257346,"y":0.66914696},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-118.280106,"y":160.59932,"z":-90.81099},"screenPosition":{"x":0.30388248,"y":0.7272654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.99105,"y":158.62854,"z":-92.064766},"screenPosition":{"x":0.3378671,"y":0.7581494},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-123.465805,"y":161.12941,"z":-92.41789},"screenPosition":{"x":0.2543768,"y":0.8459775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.73939,"y":161.0108,"z":-91.462265},"screenPosition":{"x":0.27814093,"y":0.7799547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.348526,"y":160.82645,"z":-90.679855},"screenPosition":{"x":0.29976934,"y":0.7244491},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-124.77501,"y":160.08247,"z":-93.64066},"screenPosition":{"x":0.2611469,"y":0.8982381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.384094,"y":162.32397,"z":-91.94076},"screenPosition":{"x":0.22790532,"y":0.84573567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.856346,"y":164.1112,"z":-90.50312},"screenPosition":{"x":0.20335099,"y":0.79805326},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-126.13918,"y":162.08311,"z":-92.77544},"screenPosition":{"x":0.21791032,"y":0.8940323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.37091,"y":164.77281,"z":-91.763565},"screenPosition":{"x":0.15202269,"y":0.8955798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.56307,"y":166.86629,"z":-91.06841},"screenPosition":{"x":0.13502826,"y":0.85195774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.00032,"y":165.6092,"z":-91.211525},"screenPosition":{"x":0.098292194,"y":0.97212905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.06856,"y":164.22372,"z":-92.409065},"screenPosition":{"x":0.1566227,"y":0.9226788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.86545,"y":163.60043,"z":-92.38248},"screenPosition":{"x":0.17986256,"y":0.9076474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.56085,"y":161.96611,"z":-93.01689},"screenPosition":{"x":0.21698152,"y":0.9058848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.52554,"y":160.097,"z":-93.53567},"screenPosition":{"x":0.26260874,"y":0.892274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.14138,"y":159.71536,"z":-93.27294},"screenPosition":{"x":0.28011554,"y":0.86441445},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-093320/brain-CB2984-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.6373758572171422,0.7255457888922916,0.25949051014897556,0.0,0.7103068838510558,0.42268609496292076,0.5628504205193414,0.0,0.298690721969257,0.5430651649163838,-0.7847700805100977,0.0,-55.6308761802777,213.7826696791234,-172.98538995728796,1.0]},"baseImage":"20190824-093320/base.webp","version":0,"savedAt":1.566639343748E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-094017-v0.json b/data/mapping/BAAAHS/dwayman/20190824-094017-v0.json new file mode 100644 index 0000000000..44dad8f174 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-094017-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566639617186E12,"surfaces":[{"brainId":"CAE2C8","panelName":"11D","pixels":[{"modelPosition":{"x":-114.83956,"y":181.4236,"z":-72.59147},"screenPosition":{"x":0.7778497,"y":0.29583538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.66358,"y":180.21732,"z":-74.04618},"screenPosition":{"x":0.73930395,"y":0.34518346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.13684,"y":179.12164,"z":-75.15017},"screenPosition":{"x":0.68673486,"y":0.3767516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.0519,"y":178.02621,"z":-76.421196},"screenPosition":{"x":0.6476914,"y":0.41851506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.328705,"y":176.86131,"z":-77.68175},"screenPosition":{"x":0.5988326,"y":0.4573969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.149345,"y":175.84866,"z":-78.56445},"screenPosition":{"x":0.5395397,"y":0.47862145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.42764,"y":175.90314,"z":-77.80448},"screenPosition":{"x":0.4850898,"y":0.43392953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.00751,"y":177.289,"z":-75.67547},"screenPosition":{"x":0.49252656,"y":0.34956357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.26356,"y":178.56499,"z":-74.39826},"screenPosition":{"x":0.5539666,"y":0.31272182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.89421,"y":178.39967,"z":-75.34192},"screenPosition":{"x":0.60881597,"y":0.3648799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.163414,"y":177.0,"z":-77.53566},"screenPosition":{"x":0.6049555,"y":0.45298928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.514465,"y":175.58557,"z":-79.12598},"screenPosition":{"x":0.55043596,"y":0.5038144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.093124,"y":174.44827,"z":-80.257095},"screenPosition":{"x":0.49467206,"y":0.53567797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.730736,"y":173.92041,"z":-80.210915},"screenPosition":{"x":0.42288586,"y":0.5158083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.755135,"y":174.51558,"z":-78.764275},"screenPosition":{"x":0.38277403,"y":0.44682646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.67413,"y":175.15237,"z":-77.29051},"screenPosition":{"x":0.34640115,"y":0.3779953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.049,"y":176.94073,"z":-74.95498},"screenPosition":{"x":0.38939545,"y":0.29433617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.39947,"y":178.13394,"z":-74.066086},"screenPosition":{"x":0.47186893,"y":0.27909723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.40379,"y":177.23383,"z":-75.93434},"screenPosition":{"x":0.50615895,"y":0.36337212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.97485,"y":175.86174,"z":-77.99864},"screenPosition":{"x":0.49539572,"y":0.44439426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.41695,"y":174.55817,"z":-79.40528},"screenPosition":{"x":0.44026983,"y":0.4874763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.920425,"y":174.37689,"z":-78.91036},"screenPosition":{"x":0.37674424,"y":0.45129782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.29802,"y":175.37431,"z":-77.09017},"screenPosition":{"x":0.3586281,"y":0.3727527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.55069,"y":176.84392,"z":-75.240974},"screenPosition":{"x":0.3993731,"y":0.30793998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.42819,"y":177.82898,"z":-74.4877},"screenPosition":{"x":0.46629325,"y":0.29458782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.606064,"y":177.62228,"z":-75.62551},"screenPosition":{"x":0.53114593,"y":0.35680053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.22265,"y":176.30562,"z":-77.59797},"screenPosition":{"x":0.52014935,"y":0.43412378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.75916,"y":174.91927,"z":-79.39292},"screenPosition":{"x":0.48579386,"y":0.4983457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.748474,"y":173.57431,"z":-80.99371},"screenPosition":{"x":0.44110748,"y":0.5520769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.58347,"y":172.40916,"z":-82.087234},"screenPosition":{"x":0.37870517,"y":0.58073896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.75393,"y":171.9924,"z":-82.02441},"screenPosition":{"x":0.31970605,"y":0.5633025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.39641,"y":172.49026,"z":-80.52969},"screenPosition":{"x":0.26357377,"y":0.4885153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.27296,"y":174.18182,"z":-78.48016},"screenPosition":{"x":0.31663877,"y":0.41860387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.56112,"y":174.95921,"z":-78.19657},"screenPosition":{"x":0.39433447,"y":0.42670566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.35463,"y":174.14235,"z":-80.01058},"screenPosition":{"x":0.4351752,"y":0.5106569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.00754,"y":172.75552,"z":-81.471466},"screenPosition":{"x":0.37423903,"y":0.5547669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.710846,"y":172.44984,"z":-81.39198},"screenPosition":{"x":0.32784837,"y":0.53969157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.78444,"y":171.60298,"z":-81.6651},"screenPosition":{"x":0.24084483,"y":0.52895814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.82602,"y":169.92618,"z":-84.31805},"screenPosition":{"x":0.23767784,"y":0.63574785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.91529,"y":170.12149,"z":-84.91528},"screenPosition":{"x":0.31119812,"y":0.6785489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.153595,"y":171.74359,"z":-82.85528},"screenPosition":{"x":0.35464016,"y":0.6058561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.25224,"y":172.08922,"z":-81.7384},"screenPosition":{"x":0.3097185,"y":0.5493368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.08873,"y":172.14343,"z":-80.8114},"screenPosition":{"x":0.24235225,"y":0.49487308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.90694,"y":170.61792,"z":-82.41838},"screenPosition":{"x":0.17456768,"y":0.5428497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.11043,"y":168.99606,"z":-84.64542},"screenPosition":{"x":0.14378506,"y":0.6253532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.73283,"y":167.99864,"z":-86.46561},"screenPosition":{"x":0.16179031,"y":0.7038101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.21255,"y":167.81953,"z":-87.473976},"screenPosition":{"x":0.2200833,"y":0.7594651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.51413,"y":169.15094,"z":-86.104935},"screenPosition":{"x":0.281739,"y":0.7194261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.1826,"y":170.13481,"z":-84.516495},"screenPosition":{"x":0.2807031,"y":0.6546614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.26108,"y":170.31367,"z":-83.34109},"screenPosition":{"x":0.2088844,"y":0.5888111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.17032,"y":168.89902,"z":-84.76438},"screenPosition":{"x":0.1409625,"y":0.62947905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.73799,"y":167.72057,"z":-86.25668},"screenPosition":{"x":0.10893187,"y":0.6819905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.00404,"y":167.76709,"z":-87.56645},"screenPosition":{"x":0.049438883,"y":0.7054714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.54863,"y":164.51398,"z":-88.77884},"screenPosition":{"x":-0.003111558,"y":0.7714205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.18861,"y":163.22835,"z":-91.04864},"screenPosition":{"x":0.009800844,"y":0.86621356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.57442,"y":165.15053,"z":-91.98632},"screenPosition":{"x":0.09114684,"y":0.8862989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.22234,"y":165.33751,"z":-90.37292},"screenPosition":{"x":0.13315873,"y":0.8552551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.59721,"y":167.12587,"z":-88.03739},"screenPosition":{"x":0.17585419,"y":0.77118546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.533,"y":168.12306,"z":-86.05017},"screenPosition":{"x":0.14558236,"y":0.68283445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.89708,"y":167.65189,"z":-87.761055},"screenPosition":{"x":0.071550496,"y":0.71051127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.05692,"y":171.33821,"z":-81.057396},"screenPosition":{"x":0.15816966,"y":0.48360255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.86224,"y":171.18452,"z":-80.433044},"screenPosition":{"x":0.08661501,"y":0.43987346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.2086,"y":171.2182,"z":-81.7369},"screenPosition":{"x":0.046273485,"y":0.45950478},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-135.34526,"y":168.13457,"z":-86.94573},"screenPosition":{"x":0.05968812,"y":0.6779165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.08537,"y":167.80357,"z":-86.0354},"screenPosition":{"x":0.10239042,"y":0.6713475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.18712,"y":169.2594,"z":-84.25092},"screenPosition":{"x":0.1460734,"y":0.6099186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.36554,"y":170.97855,"z":-82.07195},"screenPosition":{"x":0.19237235,"y":0.5331081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.9286,"y":172.00404,"z":-80.45639},"screenPosition":{"x":0.1945312,"y":0.468048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.14946,"y":172.66843,"z":-78.853195},"screenPosition":{"x":0.15096776,"y":0.3919544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.39903,"y":173.02785,"z":-77.67161},"screenPosition":{"x":0.10201023,"y":0.33162087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.03578,"y":173.18594,"z":-78.412994},"screenPosition":{"x":0.03011955,"y":0.32217732},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-139.70833,"y":167.835,"z":-83.12419},"screenPosition":{"x":-0.028385403,"y":0.5357103},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-136.6048,"y":166.00302,"z":-87.04659},"screenPosition":{"x":0.016658291,"y":0.7009855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.29376,"y":167.20746,"z":-86.81391},"screenPosition":{"x":0.09351745,"y":0.7004276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.8205,"y":168.30313,"z":-85.70992},"screenPosition":{"x":0.14054994,"y":0.66776687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.38422,"y":169.92595,"z":-84.15102},"screenPosition":{"x":0.22492652,"y":0.625826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.48352,"y":170.8689,"z":-83.0908},"screenPosition":{"x":0.26049852,"y":0.59166914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.72943,"y":172.72577,"z":-80.09761},"screenPosition":{"x":0.2594697,"y":0.4700617},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-135.6334,"y":172.91771,"z":-78.356384},"screenPosition":{"x":0.14415886,"y":0.37049612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.86374,"y":172.40388,"z":-78.41252},"screenPosition":{"x":0.08114,"y":0.3564426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.38289,"y":173.55975,"z":-77.78156},"screenPosition":{"x":0.03715218,"y":0.29456282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.73871,"y":174.20462,"z":-75.01008},"screenPosition":{"x":0.021725586,"y":0.21573855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.09679,"y":175.6326,"z":-73.188},"screenPosition":{"x":0.07678792,"y":0.14318699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.30327,"y":176.44946,"z":-71.37399},"screenPosition":{"x":0.037074175,"y":0.060293302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.38472,"y":176.79256,"z":-72.32076},"screenPosition":{"x":0.006763906,"y":0.067165665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.2028,"y":175.5197,"z":-74.47085},"screenPosition":{"x":0.015785532,"y":0.15675247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.92006,"y":174.13826,"z":-76.80435},"screenPosition":{"x":0.025576772,"y":0.2539817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.01035,"y":173.31781,"z":-76.479546},"screenPosition":{"x":0.04946893,"y":0.27274692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.14662,"y":174.7879,"z":-74.96442},"screenPosition":{"x":0.1110159,"y":0.22395912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.31923,"y":176.18782,"z":-72.93771},"screenPosition":{"x":0.12840204,"y":0.14604503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.90764,"y":177.10197,"z":-71.17177},"screenPosition":{"x":0.10400724,"y":0.068178974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.33687,"y":177.17024,"z":-70.34708},"screenPosition":{"x":0.054649383,"y":0.028499985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.73471,"y":177.16946,"z":-71.68409},"screenPosition":{"x":-0.009014024,"y":0.044204623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.39908,"y":175.73108,"z":-74.1138},"screenPosition":{"x":-0.009510241,"y":0.14525218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.66183,"y":174.9371,"z":-75.45496},"screenPosition":{"x":0.0032298781,"y":0.2002887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.62479,"y":173.82028,"z":-77.34149},"screenPosition":{"x":0.027830588,"y":0.27636263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.68912,"y":172.8126,"z":-79.043625},"screenPosition":{"x":0.03497265,"y":0.34728488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.53683,"y":171.1838,"z":-79.931946},"screenPosition":{"x":0.041753244,"y":0.41461775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.89923,"y":171.71167,"z":-79.97813},"screenPosition":{"x":0.11806502,"y":0.42933473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.4284,"y":173.3202,"z":-78.14987},"screenPosition":{"x":0.17925726,"y":0.37087145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.7266,"y":174.84525,"z":-76.20883},"screenPosition":{"x":0.21897256,"y":0.3017291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.89339,"y":175.92593,"z":-74.3344},"screenPosition":{"x":0.20863667,"y":0.22387518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.90924,"y":176.99281,"z":-72.52468},"screenPosition":{"x":0.1991848,"y":0.14713062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.13591,"y":177.97643,"z":-70.76921},"screenPosition":{"x":0.19537888,"y":0.04929245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-139.18954,"y":178.82681,"z":-70.708786},"screenPosition":{"x":0.13973078,"y":0.03525287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.74074,"y":178.28459,"z":-70.708786},"screenPosition":{"x":0.069338,"y":0.018880352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-143.59334,"y":177.01721,"z":-71.94126},"screenPosition":{"x":0.005637434,"y":0.052282847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-142.74814,"y":176.107,"z":-73.478806},"screenPosition":{"x":-0.0011066719,"y":0.11867885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.61418,"y":174.88579,"z":-75.54165},"screenPosition":{"x":0.020278545,"y":0.20136912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-140.71947,"y":173.33138,"z":-76.247795},"screenPosition":{"x":0.034402616,"y":0.26040143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.79681,"y":174.19202,"z":-75.90996},"screenPosition":{"x":0.11030977,"y":0.26217765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.18604,"y":175.82791,"z":-73.78523},"screenPosition":{"x":0.15176246,"y":0.18731208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-138.70021,"y":176.99161,"z":-71.68952},"screenPosition":{"x":0.13155635,"y":0.096154176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-141.59659,"y":176.94878,"z":-70.88148},"screenPosition":{"x":0.060733125,"y":0.045473143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.0795,"y":176.55132,"z":-74.59568},"screenPosition":{"x":0.31035572,"y":0.26003873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.43947,"y":176.56631,"z":-75.36612},"screenPosition":{"x":0.37434635,"y":0.30734596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.23664,"y":174.252,"z":-78.99173},"screenPosition":{"x":0.36743397,"y":0.4523959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.08939,"y":172.74077,"z":-80.86806},"screenPosition":{"x":0.32361418,"y":0.5175094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.9042,"y":171.40887,"z":-81.90303},"screenPosition":{"x":0.23454323,"y":0.536922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.04256,"y":171.49069,"z":-80.846596},"screenPosition":{"x":0.16086693,"y":0.4757382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-135.16626,"y":173.02881,"z":-78.33974},"screenPosition":{"x":0.15733375,"y":0.37321308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.55548,"y":174.6647,"z":-76.21501},"screenPosition":{"x":0.19744056,"y":0.2972917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.5063,"y":176.10672,"z":-74.49525},"screenPosition":{"x":0.2437437,"y":0.23839346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.28694,"y":176.6617,"z":-74.07793},"screenPosition":{"x":0.28218684,"y":0.2314226},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-128.06093,"y":176.27539,"z":-75.89005},"screenPosition":{"x":0.378254,"y":0.32896942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.80731,"y":175.51227,"z":-76.442986},"screenPosition":{"x":0.32419172,"y":0.3377837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.93225,"y":175.04008,"z":-76.472},"screenPosition":{"x":0.26544145,"y":0.32413954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.4788,"y":174.40137,"z":-76.609505},"screenPosition":{"x":0.19491477,"y":0.31246647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.0355,"y":173.18176,"z":-78.46299},"screenPosition":{"x":0.18586141,"y":0.38491258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.3047,"y":171.78209,"z":-80.65673},"screenPosition":{"x":0.18257014,"y":0.47333324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.33409,"y":172.07446,"z":-81.134995},"screenPosition":{"x":0.25846714,"y":0.51173526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.775604,"y":173.37851,"z":-80.06242},"screenPosition":{"x":0.34053582,"y":0.4888853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.73739,"y":174.86168,"z":-77.98147},"screenPosition":{"x":0.36431152,"y":0.4103804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.92097,"y":176.30275,"z":-75.59358},"screenPosition":{"x":0.358855,"y":0.3128234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.64351,"y":176.87032,"z":-74.276375},"screenPosition":{"x":0.3254942,"y":0.25065613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.10973,"y":177.46573,"z":-72.996765},"screenPosition":{"x":0.29851213,"y":0.19136065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-133.9832,"y":178.04709,"z":-71.614845},"screenPosition":{"x":0.26208484,"y":0.12605317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.4891,"y":178.37868,"z":-70.39567},"screenPosition":{"x":0.21502797,"y":0.054249763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-137.74911,"y":176.85341,"z":-72.16967},"screenPosition":{"x":0.15246704,"y":0.120927885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-136.5368,"y":175.7173,"z":-74.13595},"screenPosition":{"x":0.1643316,"y":0.2037679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-134.18427,"y":175.91237,"z":-74.56615},"screenPosition":{"x":0.22530037,"y":0.2372854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.03061,"y":176.68953,"z":-74.115524},"screenPosition":{"x":0.28847054,"y":0.23425771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.25061,"y":176.73187,"z":-74.5895},"screenPosition":{"x":0.33224237,"y":0.26454815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.04289,"y":177.92532,"z":-73.86764},"screenPosition":{"x":0.42859545,"y":0.25981686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.53078,"y":179.90685,"z":-70.626045},"screenPosition":{"x":0.4308637,"y":0.10870343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-131.95174,"y":179.143,"z":-70.67789},"screenPosition":{"x":0.3372867,"y":0.08509468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-132.87872,"y":177.38222,"z":-72.88398},"screenPosition":{"x":0.279687,"y":0.18296377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-130.41347,"y":176.08032,"z":-75.45985},"screenPosition":{"x":0.31825942,"y":0.2963637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-127.59621,"y":176.89935,"z":-75.14913},"screenPosition":{"x":0.39921078,"y":0.3042455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.65581,"y":178.10611,"z":-74.02849},"screenPosition":{"x":0.46543783,"y":0.27617294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.45568,"y":179.53433,"z":-72.37345},"screenPosition":{"x":0.51579726,"y":0.22086817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-125.93869,"y":180.49013,"z":-70.58038},"screenPosition":{"x":0.50178677,"y":0.12659676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-128.66734,"y":180.07312,"z":-70.35052},"screenPosition":{"x":0.42851195,"y":0.10811009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-129.79077,"y":178.38156,"z":-72.400055},"screenPosition":{"x":0.36879715,"y":0.18486162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-126.90633,"y":177.75905,"z":-74.143166},"screenPosition":{"x":0.42908108,"y":0.27085507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-124.73587,"y":178.17581,"z":-74.20599},"screenPosition":{"x":0.4880802,"y":0.28829154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.46001,"y":178.63422,"z":-74.24171},"screenPosition":{"x":0.5504293,"y":0.305685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.260826,"y":179.35594,"z":-73.88292},"screenPosition":{"x":0.6146673,"y":0.30710903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.57676,"y":180.53488,"z":-72.724686},"screenPosition":{"x":0.67362595,"y":0.27495003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.392784,"y":181.72617,"z":-70.499535},"screenPosition":{"x":0.65341485,"y":0.16485134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.69493,"y":180.44994,"z":-71.6097},"screenPosition":{"x":0.5725566,"y":0.20417383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-121.97849,"y":178.89778,"z":-74.014244},"screenPosition":{"x":0.5660377,"y":0.30022967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-119.338455,"y":178.91278,"z":-74.78469},"screenPosition":{"x":0.63020384,"y":0.3476819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.139275,"y":179.6345,"z":-74.4259},"screenPosition":{"x":0.6947618,"y":0.34979805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-115.69718,"y":180.9381,"z":-73.019264},"screenPosition":{"x":0.74959445,"y":0.3060787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-117.40536,"y":181.65814,"z":-71.49126},"screenPosition":{"x":0.71931505,"y":0.23641421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.99133,"y":182.05943,"z":-70.44958},"screenPosition":{"x":0.6918571,"y":0.17455001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.79705,"y":182.73595,"z":-70.708786},"screenPosition":{"x":0.6455051,"y":0.16285577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-123.30109,"y":181.01799,"z":-70.626564},"screenPosition":{"x":0.5735074,"y":0.14469132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-122.87215,"y":179.6459,"z":-72.690865},"screenPosition":{"x":0.5558766,"y":0.24386941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-120.35431,"y":179.97966,"z":-72.974976},"screenPosition":{"x":0.62201184,"y":0.27209198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-118.83553,"y":181.01991,"z":-71.96282},"screenPosition":{"x":0.675144,"y":0.24520844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-116.92385,"y":181.9217,"z":-71.263794},"screenPosition":{"x":0.7350328,"y":0.23111872},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-094017/brain-CAE2C8-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.39065041019831415,0.4756328225712151,0.7881406442411327,0.0,0.9045460349009457,0.3572392300423952,0.2327586803186809,0.0,-0.17084708881589422,0.8038367686363044,-0.569787435480529,0.0,-123.84445921457082,260.66579465509153,-147.2024849098776,1.0]},"baseImage":"20190824-094017/base.webp","version":0,"savedAt":1.566639703739E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190824-095813-v0.json b/data/mapping/BAAAHS/dwayman/20190824-095813-v0.json new file mode 100644 index 0000000000..eb947862c2 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190824-095813-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566640693806E12,"surfaces":[{"brainId":"C79334","panelName":"2D","pixels":[{"modelPosition":{"x":-59.533173,"y":114.014565,"z":-106.87843},"screenPosition":{"x":0.9565531,"y":0.8954595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.736774,"y":112.98974,"z":-104.8567},"screenPosition":{"x":0.9214533,"y":0.8683078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.15132,"y":111.877754,"z":-103.47481},"screenPosition":{"x":0.8836835,"y":0.8378968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.040802,"y":110.33229,"z":-102.54766},"screenPosition":{"x":0.8592359,"y":0.79908496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.77776,"y":108.73759,"z":-102.393425},"screenPosition":{"x":0.85666335,"y":0.76182634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.69104,"y":107.078514,"z":-102.40287},"screenPosition":{"x":0.85858434,"y":0.72371185},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-53.106014,"y":101.51934,"z":-100.34906},"screenPosition":{"x":0.80701363,"y":0.58849925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.705772,"y":101.875275,"z":-98.14849},"screenPosition":{"x":0.74449164,"y":0.58904475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.009377,"y":103.66501,"z":-96.51138},"screenPosition":{"x":0.69610846,"y":0.62469184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.518776,"y":106.575264,"z":-95.91062},"screenPosition":{"x":0.6760629,"y":0.68949395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.062984,"y":108.352585,"z":-97.21963},"screenPosition":{"x":0.7110316,"y":0.73497266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.116257,"y":109.42386,"z":-99.028885},"screenPosition":{"x":0.7609122,"y":0.765932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.96763,"y":108.748055,"z":-100.7476},"screenPosition":{"x":0.8101883,"y":0.75634533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.46069,"y":106.90249,"z":-102.202866},"screenPosition":{"x":0.853334,"y":0.71890587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.377865,"y":104.61686,"z":-103.15811},"screenPosition":{"x":0.8828554,"y":0.6695942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.326717,"y":100.99397,"z":-103.304375},"screenPosition":{"x":0.89053226,"y":0.58694595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.84044,"y":98.830475,"z":-102.97749},"screenPosition":{"x":0.88422143,"y":0.53571934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.34958,"y":98.15391,"z":-99.840576},"screenPosition":{"x":0.7964188,"y":0.5092332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.59915,"y":99.70325,"z":-98.167145},"screenPosition":{"x":0.74741006,"y":0.5391238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.20137,"y":101.12387,"z":-96.82108},"screenPosition":{"x":0.7076325,"y":0.5673302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.77657,"y":102.42429,"z":-95.45686},"screenPosition":{"x":0.6678907,"y":0.59232926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.925194,"y":103.1001,"z":-93.73816},"screenPosition":{"x":0.61847746,"y":0.60206753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.546295,"y":102.27774,"z":-91.61968},"screenPosition":{"x":0.55972654,"y":0.57561356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.71271,"y":97.92516,"z":-92.00252},"screenPosition":{"x":0.5753298,"y":0.47685134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.123962,"y":96.549904,"z":-95.17625},"screenPosition":{"x":0.66653186,"y":0.45607996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.164448,"y":96.715454,"z":-97.02208},"screenPosition":{"x":0.7184567,"y":0.4663098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.940784,"y":100.59385,"z":-97.521355},"screenPosition":{"x":0.72821856,"y":0.5573561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.460514,"y":103.34514,"z":-96.029526},"screenPosition":{"x":0.6830286,"y":0.6155251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.856934,"y":103.64524,"z":-93.64711},"screenPosition":{"x":0.6154352,"y":0.6141527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.245907,"y":100.72181,"z":-92.338356},"screenPosition":{"x":0.58175397,"y":0.54228264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.939846,"y":97.867386,"z":-93.120964},"screenPosition":{"x":0.60703695,"y":0.4792729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.01912,"y":96.302925,"z":-94.18517},"screenPosition":{"x":0.6385391,"y":0.4474187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.81011,"y":94.94861,"z":-94.06725},"screenPosition":{"x":0.63701284,"y":0.41535014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.808666,"y":96.639854,"z":-93.97596},"screenPosition":{"x":0.6322718,"y":0.45442852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.01522,"y":96.92949,"z":-93.23937},"screenPosition":{"x":0.6111189,"y":0.45863578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.689594,"y":97.178406,"z":-92.93015},"screenPosition":{"x":0.6022679,"y":0.4630224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.227448,"y":98.5176,"z":-92.43885},"screenPosition":{"x":0.58699995,"y":0.49197254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.3682,"y":100.41706,"z":-92.46572},"screenPosition":{"x":0.5855992,"y":0.535855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.824245,"y":102.22656,"z":-93.69288},"screenPosition":{"x":0.61813354,"y":0.5818564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.77657,"y":102.42429,"z":-95.45686},"screenPosition":{"x":0.6678907,"y":0.59232926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.13311,"y":101.66901,"z":-96.73004},"screenPosition":{"x":0.7046776,"y":0.5793633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.65174,"y":101.63489,"z":-98.112175},"screenPosition":{"x":0.74367756,"y":0.5834271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.326797,"y":101.023445,"z":-99.6672},"screenPosition":{"x":0.788318,"y":0.57470924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.374393,"y":100.796234,"z":-101.54039},"screenPosition":{"x":0.8414541,"y":0.5759898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.04233,"y":100.57756,"z":-103.068054},"screenPosition":{"x":0.8844404,"y":0.57648396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.974075,"y":101.122696,"z":-102.977005},"screenPosition":{"x":0.88164645,"y":0.58850217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.179867,"y":102.24322,"z":-104.01336},"screenPosition":{"x":0.9089823,"y":0.61821675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.935204,"y":103.79923,"z":-106.87843},"screenPosition":{"x":0.9679665,"y":0.6602241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.11101,"y":100.32322,"z":-106.139},"screenPosition":{"x":1.0236752,"y":0.5897426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.275528,"y":98.09227,"z":-107.139},"screenPosition":{"x":0.9871269,"y":0.5306179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.475353,"y":95.94341,"z":-106.87843},"screenPosition":{"x":0.97697306,"y":0.47933897},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-53.488556,"y":98.12831,"z":-100.87718},"screenPosition":{"x":0.8257117,"y":0.51224786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.89345,"y":96.314926,"z":-102.2506},"screenPosition":{"x":0.866511,"y":0.47526488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.060883,"y":94.718285,"z":-103.39665},"screenPosition":{"x":0.8996842,"y":0.4432635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.09324,"y":92.52067,"z":-104.451904},"screenPosition":{"x":0.9328955,"y":0.39554518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.9397,"y":89.715485,"z":-104.4616},"screenPosition":{"x":0.9363033,"y":0.33098218},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-45.01243,"y":92.248505,"z":-93.485886},"screenPosition":{"x":0.623617,"y":0.35115173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.48381,"y":87.96493,"z":-95.96008},"screenPosition":{"x":0.6982522,"y":0.26111323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.897854,"y":91.27065,"z":-98.8873},"screenPosition":{"x":0.77644944,"y":0.34839138},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-47.226353,"y":95.73219,"z":-95.31281},"screenPosition":{"x":0.6709222,"y":0.43828404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.637005,"y":95.246765,"z":-92.98513},"screenPosition":{"x":0.60605425,"y":0.41860586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.263443,"y":92.1066,"z":-91.90374},"screenPosition":{"x":0.57911,"y":0.3423833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.31646,"y":89.59105,"z":-91.17685},"screenPosition":{"x":0.5613996,"y":0.28192884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.715004,"y":87.33955,"z":-90.74996},"screenPosition":{"x":0.55167395,"y":0.22931843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.663094,"y":84.54755,"z":-92.669174},"screenPosition":{"x":0.60916454,"y":0.17097703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.32959,"y":86.02011,"z":-94.10554},"screenPosition":{"x":0.6479626,"y":0.21014524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.12939,"y":86.16861,"z":-96.64244},"screenPosition":{"x":0.7194304,"y":0.22229695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.97077,"y":89.26807,"z":-98.1512},"screenPosition":{"x":0.7586539,"y":0.29873934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.08628,"y":92.972374,"z":-97.150185},"screenPosition":{"x":0.72612864,"y":0.38073877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.92918,"y":94.41006,"z":-95.11305},"screenPosition":{"x":0.6671387,"y":0.4065846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.496254,"y":93.34731,"z":-92.95826},"screenPosition":{"x":0.6074939,"y":0.37462032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.439766,"y":92.04224,"z":-92.06743},"screenPosition":{"x":0.5837538,"y":0.34159878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.8931,"y":89.200226,"z":-89.90392},"screenPosition":{"x":0.5259002,"y":0.26850343},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-43.610504,"y":82.615906,"z":-92.724144},"screenPosition":{"x":0.6128746,"y":0.12668702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.361946,"y":83.822495,"z":-95.16079},"screenPosition":{"x":0.68031573,"y":0.16294363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.95451,"y":84.54172,"z":-96.570045},"screenPosition":{"x":0.71884495,"y":0.18531959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.34653,"y":89.8861,"z":-97.550934},"screenPosition":{"x":0.74101716,"y":0.3108842},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-44.412415,"y":88.30575,"z":-93.15029},"screenPosition":{"x":0.6183033,"y":0.2598233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.967712,"y":89.093216,"z":-91.79527},"screenPosition":{"x":0.57941467,"y":0.27261493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.358463,"y":88.094826,"z":-89.47679},"screenPosition":{"x":0.5150769,"y":0.24156365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.402588,"y":84.047,"z":-89.73226},"screenPosition":{"x":0.5266134,"y":0.15023778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.29406,"y":81.72941,"z":-92.01824},"screenPosition":{"x":0.5731058,"y":0.10034197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.84741,"y":81.08706,"z":-93.46429},"screenPosition":{"x":0.6146469,"y":0.09057768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.417416,"y":82.371635,"z":-95.28841},"screenPosition":{"x":0.68553936,"y":0.12997736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.949932,"y":86.02865,"z":-93.76001},"screenPosition":{"x":0.6383051,"y":0.20887591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.24075,"y":86.91266,"z":-92.15946},"screenPosition":{"x":0.59213233,"y":0.22366795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.03673,"y":87.717186,"z":-90.11338},"screenPosition":{"x":0.5333117,"y":0.23575082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.15834,"y":88.2728,"z":-88.37651},"screenPosition":{"x":0.48381582,"y":0.2418364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.847702,"y":86.9053,"z":-86.349075},"screenPosition":{"x":0.42810717,"y":0.20329724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.50579,"y":84.12301,"z":-86.62981},"screenPosition":{"x":0.41831023,"y":0.13672684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.483055,"y":81.18306,"z":-87.341255},"screenPosition":{"x":0.4748129,"y":0.07703013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.650234,"y":82.40917,"z":-90.48797},"screenPosition":{"x":0.5296897,"y":0.114048466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.95467,"y":84.60067,"z":-89.295685},"screenPosition":{"x":0.5138679,"y":0.16047154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.38624,"y":87.38413,"z":-87.72201},"screenPosition":{"x":0.46618608,"y":0.22025236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.385555,"y":88.2445,"z":-85.85777},"screenPosition":{"x":0.4127408,"y":0.2324277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.09482,"y":87.38996,"z":-83.82114},"screenPosition":{"x":0.3561992,"y":0.20566878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.487072,"y":84.66587,"z":-84.709564},"screenPosition":{"x":0.3615227,"y":0.12510513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.763447,"y":82.30648,"z":-84.80908},"screenPosition":{"x":0.40207928,"y":0.09409751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.51742,"y":80.861015,"z":-86.18485},"screenPosition":{"x":0.44702408,"y":0.06711962},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-41.372356,"y":83.69301,"z":-90.63254},"screenPosition":{"x":0.55247563,"y":0.14484933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.64183,"y":85.75531,"z":-88.949905},"screenPosition":{"x":0.50281614,"y":0.18585804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.62836,"y":85.709946,"z":-87.12223},"screenPosition":{"x":0.45124856,"y":0.17867932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.67594,"y":84.05265,"z":-86.78821},"screenPosition":{"x":0.42109326,"y":0.1248441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.95681,"y":80.97082,"z":-86.69794},"screenPosition":{"x":0.459493,"y":0.071544066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.32564,"y":80.37856,"z":-89.04138},"screenPosition":{"x":0.5239768,"y":0.06446025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.282417,"y":81.80014,"z":-91.560425},"screenPosition":{"x":0.57938766,"y":0.10983742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.139122,"y":86.899475,"z":-90.24995},"screenPosition":{"x":0.53797734,"y":0.21782999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.699078,"y":86.22949,"z":-88.06779},"screenPosition":{"x":0.47738326,"y":0.19371057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.6099,"y":83.50574,"z":-87.222725},"screenPosition":{"x":0.45504853,"y":0.12809145},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-46.02479,"y":97.60141,"z":-94.12124},"screenPosition":{"x":0.63554907,"y":0.47666252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.181892,"y":96.16373,"z":-96.15836},"screenPosition":{"x":0.69468963,"y":0.45060185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.90996,"y":93.036736,"z":-96.986496},"screenPosition":{"x":0.7215623,"y":0.38147375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.799442,"y":91.49127,"z":-96.05935},"screenPosition":{"x":0.69711465,"y":0.34266183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.08848,"y":90.45024,"z":-95.46853},"screenPosition":{"x":0.68159837,"y":0.31663507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.32671,"y":89.40261,"z":-93.92296},"screenPosition":{"x":0.63913566,"y":0.2871371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.547493,"y":88.906715,"z":-93.24109},"screenPosition":{"x":0.62044,"y":0.27334705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.744476,"y":88.52442,"z":-91.622635},"screenPosition":{"x":0.5749967,"y":0.2594858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.06942,"y":89.135864,"z":-90.06761},"screenPosition":{"x":0.53056324,"y":0.26771253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.407154,"y":90.65303,"z":-88.47602},"screenPosition":{"x":0.48396575,"y":0.2969936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.23261,"y":92.64244,"z":-87.302605},"screenPosition":{"x":0.4485752,"y":0.3390652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.325,"y":95.59999,"z":-87.229225},"screenPosition":{"x":0.44324026,"y":0.40657592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.84787,"y":98.5556,"z":-88.45614},"screenPosition":{"x":0.47455367,"y":0.47899386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.777073,"y":98.006584,"z":-91.147766},"screenPosition":{"x":0.55117595,"y":0.47561795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.14217,"y":95.16728,"z":-92.53959},"screenPosition":{"x":0.59364104,"y":0.4150745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.809853,"y":91.361786,"z":-91.53109},"screenPosition":{"x":0.5692403,"y":0.32446578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.430954,"y":90.53943,"z":-89.41261},"screenPosition":{"x":0.5105338,"y":0.2976339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.558235,"y":92.393524,"z":-87.61182},"screenPosition":{"x":0.45754308,"y":0.33465835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.62116,"y":94.16619,"z":-86.66577},"screenPosition":{"x":0.4289199,"y":0.37177357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.03994,"y":96.04394,"z":-85.12866},"screenPosition":{"x":0.38344476,"y":0.40981847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.963123,"y":98.67309,"z":-84.91896},"screenPosition":{"x":0.37458545,"y":0.46931002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.10845,"y":99.085625,"z":-87.75587},"screenPosition":{"x":0.45421347,"y":0.4886729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.062553,"y":101.208405,"z":-88.510124},"screenPosition":{"x":0.47313523,"y":0.54017806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.83144,"y":101.86327,"z":-90.08306},"screenPosition":{"x":0.5168093,"y":0.56072676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.472363,"y":101.5244,"z":-91.59256},"screenPosition":{"x":0.5596747,"y":0.55839294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.911392,"y":99.438446,"z":-93.011505},"screenPosition":{"x":0.6021916,"y":0.51507014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.659363,"y":96.82441,"z":-93.83044},"screenPosition":{"x":0.6280289,"y":0.45805752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.417664,"y":94.051414,"z":-93.758286},"screenPosition":{"x":0.6292928,"y":0.3936157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.172066,"y":91.90498,"z":-92.74033},"screenPosition":{"x":0.6027622,"y":0.34110522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.942474,"y":90.89806,"z":-90.76739},"screenPosition":{"x":0.5483797,"y":0.31060278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.724228,"y":92.48812,"z":-88.66657},"screenPosition":{"x":0.48729506,"y":0.3399141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.321785,"y":95.366196,"z":-88.14766},"screenPosition":{"x":0.4694299,"y":0.40438524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.396732,"y":98.87547,"z":-88.937996},"screenPosition":{"x":0.48782098,"y":0.48794368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.7216,"y":99.45744,"z":-91.02015},"screenPosition":{"x":0.54595226,"y":0.5085842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.396656,"y":98.846,"z":-92.57517},"screenPosition":{"x":0.59047943,"y":0.50000876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.397335,"y":97.98564,"z":-94.43941},"screenPosition":{"x":0.64399624,"y":0.48676717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.505398,"y":98.466415,"z":-94.512054},"screenPosition":{"x":0.6456396,"y":0.49790365},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-51.179356,"y":95.069565,"z":-98.94104},"screenPosition":{"x":0.77447,"y":0.43508056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.781998,"y":92.04301,"z":-96.92306},"screenPosition":{"x":0.7203757,"y":0.35912606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-48.119305,"y":98.007355,"z":-96.00339},"screenPosition":{"x":0.68825465,"y":0.49251744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.301983,"y":98.38111,"z":-97.967384},"screenPosition":{"x":0.7432827,"y":0.50795263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.410725,"y":98.00153,"z":-99.90426},"screenPosition":{"x":0.7982563,"y":0.50605756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.09289,"y":96.99732,"z":-101.48665},"screenPosition":{"x":0.84418136,"y":0.48832276},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-51.196465,"y":90.90154,"z":-99.17835},"screenPosition":{"x":0.785353,"y":0.34054017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.146667,"y":93.65089,"z":-98.98681},"screenPosition":{"x":0.77734715,"y":0.40257078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.04284,"y":96.15984,"z":-98.75895},"screenPosition":{"x":0.7681111,"y":0.45955405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.626167,"y":99.82345,"z":-98.1853},"screenPosition":{"x":0.74782336,"y":0.5419238},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-36.654182,"y":99.20117,"z":-85.51898},"screenPosition":{"x":0.39093468,"y":0.48355657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.598373,"y":97.035736,"z":-86.492386},"screenPosition":{"x":0.42083445,"y":0.43707588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.054848,"y":94.39805,"z":-87.04762},"screenPosition":{"x":0.43945637,"y":0.3782666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.225494,"y":93.0352,"z":-87.27524},"screenPosition":{"x":0.44732574,"y":0.3483319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.153004,"y":90.59061,"z":-87.33942},"screenPosition":{"x":0.45194796,"y":0.29160452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.10753,"y":88.266205,"z":-87.42175},"screenPosition":{"x":0.4568694,"y":0.2383652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.567215,"y":85.86232,"z":-87.05855},"screenPosition":{"x":0.44930163,"y":0.18174657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.846237,"y":83.98222,"z":-86.94674},"screenPosition":{"x":0.42650595,"y":0.1292366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.886856,"y":82.7596,"z":-84.02538},"screenPosition":{"x":0.37887603,"y":0.101711415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.51895,"y":83.755066,"z":-81.82686},"screenPosition":{"x":0.31559426,"y":0.116973914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.167055,"y":86.24773,"z":-81.2208},"screenPosition":{"x":0.28367427,"y":0.16837317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.286465,"y":89.32548,"z":-81.16558},"screenPosition":{"x":0.27906758,"y":0.24100658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.85447,"y":90.9892,"z":-83.41118},"screenPosition":{"x":0.34060436,"y":0.28712553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.53808,"y":88.29374,"z":-85.08486},"screenPosition":{"x":0.3908657,"y":0.2308744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.10016,"y":85.07214,"z":-84.85823},"screenPosition":{"x":0.3854034,"y":0.14446162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.921566,"y":83.11068,"z":-83.10961},"screenPosition":{"x":0.3529343,"y":0.10666272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.249737,"y":83.44992,"z":-81.4276},"screenPosition":{"x":0.30744442,"y":0.1104319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.406755,"y":84.25464,"z":-79.72712},"screenPosition":{"x":0.25812012,"y":0.12157173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.948925,"y":85.28294,"z":-77.44333},"screenPosition":{"x":0.19269854,"y":0.13833137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.518337,"y":87.83973,"z":-77.8197},"screenPosition":{"x":0.18635471,"y":0.19124824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.830751,"y":91.13227,"z":-78.8374},"screenPosition":{"x":0.21132189,"y":0.27451834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.952282,"y":91.65841,"z":-80.73772},"screenPosition":{"x":0.26438186,"y":0.293241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.014107,"y":90.645676,"z":-82.665634},"screenPosition":{"x":0.3199406,"y":0.27662292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.627,"y":87.43067,"z":-83.39376},"screenPosition":{"x":0.3440945,"y":0.20521627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.44506,"y":85.80223,"z":-82.84958},"screenPosition":{"x":0.30971423,"y":0.16225244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.776281,"y":86.20038,"z":-81.255104},"screenPosition":{"x":0.26170215,"y":0.14482097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.2194,"y":85.45314,"z":-77.79579},"screenPosition":{"x":0.20040041,"y":0.14214584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.920713,"y":88.08669,"z":-77.70684},"screenPosition":{"x":0.15913902,"y":0.17926656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.21193,"y":89.46197,"z":-75.63705},"screenPosition":{"x":0.123227835,"y":0.2258671},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-28.782394,"y":92.19037,"z":-78.73715},"screenPosition":{"x":0.20730954,"y":0.29853532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.554922,"y":88.63184,"z":-78.719734},"screenPosition":{"x":0.21079358,"y":0.2165302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.085289,"y":88.01864,"z":-77.86005},"screenPosition":{"x":0.16437867,"y":0.18350205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.328617,"y":86.77293,"z":-75.149086},"screenPosition":{"x":0.12342079,"y":0.16320431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.940517,"y":87.238945,"z":-72.7398},"screenPosition":{"x":0.058178127,"y":0.16610906},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-25.361237,"y":89.27741,"z":-75.78258},"screenPosition":{"x":0.12566532,"y":0.20551334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.578041,"y":89.3786,"z":-77.79209},"screenPosition":{"x":0.18377098,"y":0.2305011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.92677,"y":87.37873,"z":-78.60243},"screenPosition":{"x":0.18892151,"y":0.1839346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.662806,"y":86.11442,"z":-75.274475},"screenPosition":{"x":0.13154344,"y":0.15058608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.269638,"y":87.02404,"z":-74.09658},"screenPosition":{"x":0.09460705,"y":0.16552445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.129313,"y":87.531525,"z":-72.40428},"screenPosition":{"x":0.027950248,"y":0.16827022},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-25.048395,"y":90.43205,"z":-75.4368},"screenPosition":{"x":0.116101444,"y":0.24657078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.572702,"y":91.69641,"z":-76.755},"screenPosition":{"x":0.15190311,"y":0.2802692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.207952,"y":90.05905,"z":-78.32843},"screenPosition":{"x":0.1981521,"y":0.24803507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.234625,"y":87.95688,"z":-77.99907},"screenPosition":{"x":0.1703717,"y":0.19500506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.390709,"y":90.46229,"z":-76.65524},"screenPosition":{"x":0.15046571,"y":0.25150338},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-29.466337,"y":93.11121,"z":-79.30981},"screenPosition":{"x":0.22244743,"y":0.32173118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.344727,"y":92.5556,"z":-81.046684},"screenPosition":{"x":0.2721019,"y":0.3149754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.762413,"y":91.647934,"z":-82.38354},"screenPosition":{"x":0.3108569,"y":0.298722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.241245,"y":90.5879,"z":-83.78408},"screenPosition":{"x":0.35159886,"y":0.2795009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.54621,"y":90.65691,"z":-85.875435},"screenPosition":{"x":0.41054425,"y":0.2880414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.211266,"y":93.82073,"z":-87.22051},"screenPosition":{"x":0.44492742,"y":0.36603066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.70398,"y":96.45182,"z":-85.71052},"screenPosition":{"x":0.39941388,"y":0.42091143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.433144,"y":96.110245,"z":-83.66468},"screenPosition":{"x":0.34203938,"y":0.40593275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.78655,"y":95.15063,"z":-82.21911},"screenPosition":{"x":0.30230153,"y":0.3788092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.767405,"y":93.806786,"z":-80.45537},"screenPosition":{"x":0.25401068,"y":0.34173146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.874453,"y":91.531624,"z":-79.76479},"screenPosition":{"x":0.23705702,"y":0.28693885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.365242,"y":84.08577,"z":-90.60518},"screenPosition":{"x":0.5514116,"y":0.15316741},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.41038,"y":82.79388,"z":-91.62386},"screenPosition":{"x":0.5816136,"y":0.12695977},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-47.492367,"y":85.88092,"z":-96.078735},"screenPosition":{"x":0.70393044,"y":0.21353577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.00355,"y":82.62326,"z":-98.53453},"screenPosition":{"x":0.7768998,"y":0.14705771},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-48.748096,"y":76.9124,"z":-96.888016},"screenPosition":{"x":0.74926245,"y":0.011905608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.248016,"y":75.92723,"z":-93.83999},"screenPosition":{"x":0.6770688,"y":-0.019248927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.009308,"y":76.64911,"z":-92.76167},"screenPosition":{"x":0.644496,"y":-0.006595841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.333393,"y":81.299614,"z":-92.98578},"screenPosition":{"x":0.6009006,"y":0.09380876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.728134,"y":83.76861,"z":-93.67866},"screenPosition":{"x":0.6385336,"y":0.15654962},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-48.918606,"y":82.889244,"z":-97.53425},"screenPosition":{"x":0.7483636,"y":0.14970489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.313934,"y":80.40394,"z":-98.0258},"screenPosition":{"x":0.76501745,"y":0.09418304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.765747,"y":79.2237,"z":-99.40818},"screenPosition":{"x":0.80536216,"y":0.07181123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.02134,"y":77.59488,"z":-100.63608},"screenPosition":{"x":0.83709794,"y":0.03829033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.9795,"y":76.89716,"z":-102.896484},"screenPosition":{"x":0.8856092,"y":0.026887706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.68852,"y":78.207085,"z":-103.93668},"screenPosition":{"x":0.93434244,"y":0.064145364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.70944,"y":81.47598,"z":-104.6907},"screenPosition":{"x":0.9519767,"y":0.14204192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.60247,"y":83.78061,"z":-101.74409},"screenPosition":{"x":0.86621594,"y":0.18486762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.903282,"y":80.88936,"z":-100.35349},"screenPosition":{"x":0.8301882,"y":0.113454066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.1095,"y":77.5627,"z":-100.71792},"screenPosition":{"x":0.83941585,"y":0.037745498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.569145,"y":75.02492,"z":-101.41393},"screenPosition":{"x":0.87847215,"y":-0.01593498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.293285,"y":73.04762,"z":-102.567696},"screenPosition":{"x":0.92124057,"y":-0.056123108},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-63.855583,"y":71.389786,"z":-104.97194},"screenPosition":{"x":1.0751663,"y":-0.07188712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.893074,"y":75.883194,"z":-107.139},"screenPosition":{"x":1.0543922,"y":0.024704827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.649673,"y":77.61283,"z":-106.139},"screenPosition":{"x":1.0612018,"y":0.06880349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.573997,"y":80.54517,"z":-106.87843},"screenPosition":{"x":0.9940261,"y":0.12474268},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-54.794125,"y":77.62318,"z":-103.154816},"screenPosition":{"x":0.9129219,"y":0.04798091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.02362,"y":76.05187,"z":-104.79941},"screenPosition":{"x":0.9402751,"y":0.014038426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.114075,"y":75.18741,"z":-106.74546},"screenPosition":{"x":0.99618006,"y":8.978985E-4},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-60.309467,"y":75.72682,"z":-107.139},"screenPosition":{"x":1.0449195,"y":0.0210686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-63.043785,"y":77.85928,"z":-106.139},"screenPosition":{"x":1.0650046,"y":0.076791465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.345295,"y":82.200714,"z":-107.139},"screenPosition":{"x":1.0048822,"y":0.16467227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.35925,"y":82.66939,"z":-105.21783},"screenPosition":{"x":0.96502566,"y":0.17194846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.009827,"y":83.03191,"z":-103.972015},"screenPosition":{"x":0.92994934,"y":0.17537282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.69207,"y":82.05718,"z":-101.91722},"screenPosition":{"x":0.87175035,"y":0.14765573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.536076,"y":78.18732,"z":-101.07241},"screenPosition":{"x":0.8535031,"y":0.05373176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.92931,"y":76.504395,"z":-103.780685},"screenPosition":{"x":0.91100997,"y":0.020917226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.59714,"y":78.00547,"z":-104.77328},"screenPosition":{"x":0.9581856,"y":0.062411208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.849854,"y":79.75914,"z":-105.81859},"screenPosition":{"x":0.98073715,"y":0.1127016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.33202,"y":81.97394,"z":-107.139},"screenPosition":{"x":1.0158277,"y":0.16056657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.87725,"y":85.72579,"z":-106.87843},"screenPosition":{"x":1.0011418,"y":0.24562117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.26575,"y":85.01939,"z":-104.09889},"screenPosition":{"x":0.93131053,"y":0.22158074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.62627,"y":83.66701,"z":-102.68069},"screenPosition":{"x":0.8915224,"y":0.18718435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.54988,"y":81.848976,"z":-101.79906},"screenPosition":{"x":0.86983067,"y":0.1407192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.039803,"y":79.79908,"z":-100.53558},"screenPosition":{"x":0.836547,"y":0.08898058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.40032,"y":78.44671,"z":-99.11738},"screenPosition":{"x":0.7931875,"y":0.04861153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.57388,"y":79.54606,"z":-96.93335},"screenPosition":{"x":0.71430385,"y":0.06715321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.22365,"y":82.987724,"z":-95.98843},"screenPosition":{"x":0.70461345,"y":0.14659831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.116604,"y":85.262886,"z":-96.679},"screenPosition":{"x":0.7209227,"y":0.20265335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.694942,"y":86.76764,"z":-98.03353},"screenPosition":{"x":0.75812554,"y":0.2407512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.911747,"y":86.86883,"z":-100.043045},"screenPosition":{"x":0.8139513,"y":0.25119275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.298183,"y":82.85124,"z":-101.51697},"screenPosition":{"x":0.8601312,"y":0.16371942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.885918,"y":81.470566,"z":-97.58002},"screenPosition":{"x":0.75124085,"y":0.11719512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.393875,"y":86.07207,"z":-96.88797},"screenPosition":{"x":0.7263667,"y":0.2211174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.606277,"y":91.21753,"z":-102.26079},"screenPosition":{"x":0.8724938,"y":0.35791907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.836628,"y":91.393555,"z":-102.46079},"screenPosition":{"x":0.87784386,"y":0.36276853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.9159,"y":89.829094,"z":-103.52501},"screenPosition":{"x":0.90973526,"y":0.3303419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.529808,"y":89.370026,"z":-105.01634},"screenPosition":{"x":0.9511525,"y":0.3260852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.993256,"y":87.70756,"z":-106.87843},"screenPosition":{"x":0.98594546,"y":0.2896701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.782314,"y":84.10396,"z":-106.87843},"screenPosition":{"x":0.9899717,"y":0.20668763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.09477,"y":82.76594,"z":-104.9723},"screenPosition":{"x":0.9584855,"y":0.17272565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.367126,"y":81.44574,"z":-103.472244},"screenPosition":{"x":0.91761243,"y":0.13710931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.79056,"y":81.866035,"z":-101.107994},"screenPosition":{"x":0.85039747,"y":0.13856782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.506516,"y":85.06592,"z":-99.770645},"screenPosition":{"x":0.8090675,"y":0.20760405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.80936,"y":87.68654,"z":-99.90648},"screenPosition":{"x":0.8099742,"y":0.26842314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.762775,"y":90.669685,"z":-98.7965},"screenPosition":{"x":0.77497554,"y":0.3337042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.861523,"y":94.06536,"z":-100.52343},"screenPosition":{"x":0.8202644,"y":0.4174576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.492115,"y":93.88545,"z":-102.924},"screenPosition":{"x":0.88823617,"y":0.42166096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.208412,"y":92.60868,"z":-104.55191},"screenPosition":{"x":0.93554264,"y":0.3979848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.239037,"y":91.906296,"z":-106.87843},"screenPosition":{"x":0.9812543,"y":0.38635743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.103733,"y":89.59485,"z":-106.87843},"screenPosition":{"x":0.9838368,"y":0.33313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.908,"y":86.25111,"z":-106.87843},"screenPosition":{"x":0.9875727,"y":0.25613156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.897106,"y":84.00859,"z":-104.726524},"screenPosition":{"x":0.95015854,"y":0.20048657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.462734,"y":84.63709,"z":-102.48043},"screenPosition":{"x":0.8860468,"y":0.20715044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.84027,"y":87.18017,"z":-100.87044},"screenPosition":{"x":0.8377536,"y":0.2601141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.317997,"y":91.42768,"z":-101.07866},"screenPosition":{"x":0.8388863,"y":0.35864833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.60094,"y":93.53534,"z":-101.223694},"screenPosition":{"x":0.84062594,"y":0.40768716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.755157,"y":95.48016,"z":-103.07824},"screenPosition":{"x":0.8908087,"y":0.45891958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.256348,"y":95.997765,"z":-105.32408},"screenPosition":{"x":0.953633,"y":0.4786471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.05124,"y":94.26066,"z":-107.139},"screenPosition":{"x":0.9992494,"y":0.4429385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-62.398163,"y":90.611916,"z":-106.139},"screenPosition":{"x":1.0325041,"y":0.3657765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.700546,"y":88.26961,"z":-107.139},"screenPosition":{"x":0.9981016,"y":0.30442467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.412857,"y":87.356964,"z":-105.92607},"screenPosition":{"x":0.97569966,"y":0.2862136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.494663,"y":86.88666,"z":-104.20761},"screenPosition":{"x":0.9322934,"y":0.26495773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.637615,"y":86.26398,"z":-102.552826},"screenPosition":{"x":0.8862729,"y":0.24486557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.037937,"y":85.937515,"z":-101.11621},"screenPosition":{"x":0.8460805,"y":0.23235318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.60111,"y":85.501335,"z":-98.01562},"screenPosition":{"x":0.75903463,"y":0.21152887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.440365,"y":91.152405,"z":-97.56885},"screenPosition":{"x":0.7401081,"y":0.34010655},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-55.221962,"y":92.68351,"z":-102.7424},"screenPosition":{"x":0.8844523,"y":0.39335164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.42742,"y":90.18774,"z":-104.879776},"screenPosition":{"x":0.9473739,"y":0.34350115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.983143,"y":86.528015,"z":-102.85284},"screenPosition":{"x":0.8943345,"y":0.25212368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.843487,"y":87.41397,"z":-99.952},"screenPosition":{"x":0.81130576,"y":0.26266664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.47695,"y":91.94452,"z":-98.46888},"screenPosition":{"x":0.76463187,"y":0.36147636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.35568,"y":95.0052,"z":-99.10473},"screenPosition":{"x":0.7790002,"y":0.43434334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.608387,"y":96.75887,"z":-100.15004},"screenPosition":{"x":0.8067138,"y":0.47818482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.098564,"y":98.29581,"z":-101.42272},"screenPosition":{"x":0.84042984,"y":0.5183734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.27023,"y":99.688896,"z":-102.41355},"screenPosition":{"x":0.8673415,"y":0.55352604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.15751,"y":100.66557,"z":-103.16805},"screenPosition":{"x":0.88707554,"y":0.5789056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.962303,"y":102.97291,"z":-103.77679},"screenPosition":{"x":0.90215796,"y":0.6338889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.299274,"y":105.32096,"z":-103.95814},"screenPosition":{"x":0.9046543,"y":0.68858963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.494057,"y":107.46081,"z":-104.02133},"screenPosition":{"x":0.9040475,"y":0.738085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.336197,"y":109.72938,"z":-103.75715},"screenPosition":{"x":0.8940547,"y":0.7894064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.781235,"y":112.558205,"z":-104.01115},"screenPosition":{"x":0.8980646,"y":0.85543084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.646835,"y":111.09687,"z":-105.784584},"screenPosition":{"x":0.95977014,"y":0.82915413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.36711,"y":109.22301,"z":-104.72111},"screenPosition":{"x":0.92183405,"y":0.78109735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.92385,"y":108.31923,"z":-103.45738},"screenPosition":{"x":0.8871676,"y":0.75589174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.509045,"y":105.84439,"z":-102.303116},"screenPosition":{"x":0.85734636,"y":0.6948889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.807323,"y":101.858986,"z":-103.69519},"screenPosition":{"x":0.90109897,"y":0.607954},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-59.676067,"y":104.93485,"z":-107.139},"screenPosition":{"x":0.97948176,"y":0.68818665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.831814,"y":107.59552,"z":-107.139},"screenPosition":{"x":0.97650903,"y":0.74945563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.29414,"y":109.93107,"z":-106.87843},"screenPosition":{"x":0.96111554,"y":0.80142605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-59.423565,"y":112.14208,"z":-106.87843},"screenPosition":{"x":0.95543826,"y":0.85211414},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190824-095813/brain-C79334-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.7079806654156791,-0.25843311666572755,-0.6572485843332124,0.0,-0.2169501379049556,0.9652277375414415,-0.145835703254213,0.0,0.6720833393713864,0.0393413127776461,-0.7394296762020971,0.0,39.272527470321194,119.9761660252002,-171.1175394132099,1.0]},"baseImage":"20190824-095813/base.webp","version":0,"savedAt":1.566640865384E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-055451-v0.json b/data/mapping/BAAAHS/dwayman/20190825-055451-v0.json new file mode 100644 index 0000000000..85658d9ff9 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-055451-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566712491559E12,"surfaces":[{"brainId":"CB2B04","panelName":"42D","pixels":[{"modelPosition":{"x":-392.3064,"y":19.064602,"z":-70.73284},"screenPosition":{"x":0.9446185,"y":0.014521086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.65103,"y":19.919992,"z":-70.02853},"screenPosition":{"x":0.94552934,"y":0.027314948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.1767,"y":21.247358,"z":-70.59393},"screenPosition":{"x":0.9292471,"y":0.035590447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.43735,"y":23.147877,"z":-71.464066},"screenPosition":{"x":0.8927146,"y":0.053911578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.8997,"y":25.465876,"z":-72.15862},"screenPosition":{"x":0.872199,"y":0.07565378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.6128,"y":27.64319,"z":-72.59131},"screenPosition":{"x":0.8757109,"y":0.09886156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9244,"y":30.333721,"z":-72.455025},"screenPosition":{"x":0.8759225,"y":0.12677205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.13867,"y":30.364943,"z":-70.226746},"screenPosition":{"x":0.92762697,"y":0.130312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.9129,"y":28.338724,"z":-69.31317},"screenPosition":{"x":0.94796985,"y":0.11468905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.40305,"y":26.532684,"z":-70.71477},"screenPosition":{"x":0.9207353,"y":0.08977717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.11557,"y":25.450893,"z":-71.9402},"screenPosition":{"x":0.893466,"y":0.076836094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.1452,"y":22.675035,"z":-71.72713},"screenPosition":{"x":0.89481616,"y":0.05168438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.58774,"y":20.910627,"z":-70.157684},"screenPosition":{"x":0.9462057,"y":0.036815617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.9868,"y":23.795122,"z":-70.35976},"screenPosition":{"x":0.94812644,"y":0.063796274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.28146,"y":25.84407,"z":-70.198166},"screenPosition":{"x":0.9575957,"y":0.08491922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.64606,"y":28.378975,"z":-69.998245},"screenPosition":{"x":0.95861566,"y":0.11179866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.97528,"y":30.667831,"z":-69.817726},"screenPosition":{"x":0.9546125,"y":0.13556005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.59454,"y":31.943714,"z":-70.87905},"screenPosition":{"x":0.91108304,"y":0.14518717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.63876,"y":30.60011,"z":-72.760345},"screenPosition":{"x":0.8689491,"y":0.12846565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.9303,"y":27.813845,"z":-73.29003},"screenPosition":{"x":0.8492356,"y":0.09999014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.18536,"y":25.199488,"z":-71.8533},"screenPosition":{"x":0.89543945,"y":0.074866496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.20447,"y":25.552458,"z":-69.84286},"screenPosition":{"x":0.9390794,"y":0.08501862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.69217,"y":28.699516,"z":-69.97296},"screenPosition":{"x":0.95176333,"y":0.114882626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.73718,"y":30.87816,"z":-69.657776},"screenPosition":{"x":0.9534784,"y":0.13897432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.2675,"y":31.596575,"z":-71.185555},"screenPosition":{"x":0.9041707,"y":0.14139079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.92502,"y":33.592827,"z":-71.662285},"screenPosition":{"x":0.89081186,"y":0.16139637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.6588,"y":36.076904,"z":-72.094376},"screenPosition":{"x":0.8785127,"y":0.18575332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.40033,"y":37.389286,"z":-72.44136},"screenPosition":{"x":0.8689881,"y":0.19880478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.7024,"y":39.90333,"z":-73.310295},"screenPosition":{"x":0.8462605,"y":0.22316216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.7821,"y":41.69313,"z":-74.35541},"screenPosition":{"x":0.8194915,"y":0.24082084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.44733,"y":42.517685,"z":-74.747025},"screenPosition":{"x":0.8102147,"y":0.2477435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.692,"y":43.50249,"z":-76.58012},"screenPosition":{"x":0.7667676,"y":0.25491852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.30505,"y":45.44796,"z":-78.105515},"screenPosition":{"x":0.7292163,"y":0.27280486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.93414,"y":48.309143,"z":-78.66795},"screenPosition":{"x":0.7130589,"y":0.30144578},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-387.60242,"y":57.00009,"z":-76.55397},"screenPosition":{"x":0.752662,"y":0.39396042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.5647,"y":59.082928,"z":-74.714935},"screenPosition":{"x":0.7928379,"y":0.41840795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.00977,"y":62.396137,"z":-76.499825},"screenPosition":{"x":0.74818325,"y":0.4494483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.35138,"y":64.17553,"z":-78.28769},"screenPosition":{"x":0.70492226,"y":0.46487194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.81778,"y":62.62547,"z":-80.737366},"screenPosition":{"x":0.6498762,"y":0.44511136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.09857,"y":61.573647,"z":-82.39964},"screenPosition":{"x":0.6126678,"y":0.4314658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.40433,"y":58.354916,"z":-82.886475},"screenPosition":{"x":0.60489446,"y":0.39756215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.31165,"y":55.08666,"z":-81.75685},"screenPosition":{"x":0.63452125,"y":0.36582527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.73224,"y":54.92641,"z":-80.31537},"screenPosition":{"x":0.6680482,"y":0.36643428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.56204,"y":53.081253,"z":-79.35776},"screenPosition":{"x":0.691942,"y":0.34943128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.21088,"y":51.125374,"z":-78.57511},"screenPosition":{"x":0.7121317,"y":0.3305831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.16605,"y":49.209873,"z":-77.486565},"screenPosition":{"x":0.73963565,"y":0.31218022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.71304,"y":45.673973,"z":-78.71674},"screenPosition":{"x":0.71501887,"y":0.2738137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.91507,"y":47.956173,"z":-80.6784},"screenPosition":{"x":0.6641261,"y":0.29616696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.33786,"y":51.008827,"z":-80.45403},"screenPosition":{"x":0.6690807,"y":0.32590178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.4746,"y":52.46315,"z":-78.39776},"screenPosition":{"x":0.71504885,"y":0.3441835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.73492,"y":52.498947,"z":-77.13067},"screenPosition":{"x":0.7443057,"y":0.3465964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.03012,"y":52.409046,"z":-75.82012},"screenPosition":{"x":0.7746476,"y":0.34785295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.4921,"y":52.862328,"z":-74.37746},"screenPosition":{"x":0.8074964,"y":0.35485172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.28113,"y":53.662746,"z":-72.62829},"screenPosition":{"x":0.84714276,"y":0.3658358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.90338,"y":53.919983,"z":-71.01124},"screenPosition":{"x":0.88425106,"y":0.37109175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.27487,"y":54.317905,"z":-69.65606},"screenPosition":{"x":0.91472644,"y":0.37766957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.1491,"y":52.52353,"z":-67.64977},"screenPosition":{"x":0.9694897,"y":0.3638816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.84918,"y":43.86919,"z":-77.45322},"screenPosition":{"x":0.7461846,"y":0.25728273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.64877,"y":41.540783,"z":-77.50142},"screenPosition":{"x":0.74737984,"y":0.2336395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.4514,"y":38.649628,"z":-76.50214},"screenPosition":{"x":0.77382076,"y":0.20511235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.87323,"y":36.578457,"z":-74.93329},"screenPosition":{"x":0.81198096,"y":0.186902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.00348,"y":37.293552,"z":-72.834755},"screenPosition":{"x":0.8600786,"y":0.19707696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.16867,"y":37.882942,"z":-70.69278},"screenPosition":{"x":0.9088339,"y":0.20674759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.43423,"y":40.568897,"z":-69.595314},"screenPosition":{"x":0.9314319,"y":0.23600465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.86472,"y":42.449852,"z":-69.285835},"screenPosition":{"x":0.9362702,"y":0.25612706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.19702,"y":45.447147,"z":-69.14896},"screenPosition":{"x":0.936474,"y":0.2869181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.50214,"y":47.39845,"z":-68.97041},"screenPosition":{"x":0.93818206,"y":0.30753893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.8042,"y":49.912495,"z":-69.839355},"screenPosition":{"x":0.91516846,"y":0.33216527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.72363,"y":51.89834,"z":-71.058846},"screenPosition":{"x":0.88533753,"y":0.35021386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.55258,"y":53.828823,"z":-72.36582},"screenPosition":{"x":0.8530045,"y":0.36799112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.6116,"y":55.31186,"z":-73.41152},"screenPosition":{"x":0.82725,"y":0.38154003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.84204,"y":56.729126,"z":-75.28747},"screenPosition":{"x":0.7823443,"y":0.3930956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.80408,"y":57.417576,"z":-76.378395},"screenPosition":{"x":0.7563769,"y":0.39841887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.76245,"y":55.40966,"z":-79.309555},"screenPosition":{"x":0.69078016,"y":0.37302947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.66025,"y":51.964916,"z":-79.18516},"screenPosition":{"x":0.69738305,"y":0.33778659},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.79456,"y":48.81195,"z":-78.841736},"screenPosition":{"x":0.70870507,"y":0.30595365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.17685,"y":47.475433,"z":-76.353966},"screenPosition":{"x":0.767698,"y":0.29616177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.19592,"y":47.828403,"z":-74.34352},"screenPosition":{"x":0.8135267,"y":0.3033632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.83765,"y":50.30333,"z":-72.85325},"screenPosition":{"x":0.8455761,"y":0.33090714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.30612,"y":51.49584,"z":-71.45284},"screenPosition":{"x":0.87661326,"y":0.34548035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.18256,"y":52.914364,"z":-70.66366},"screenPosition":{"x":0.89337504,"y":0.3613056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.13528,"y":54.820713,"z":-69.82985},"screenPosition":{"x":0.91004455,"y":0.38264373},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-397.62592,"y":56.049973,"z":-67.8159},"screenPosition":{"x":0.9720451,"y":0.39977708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.1279,"y":57.53709,"z":-67.10209},"screenPosition":{"x":0.9834423,"y":0.41588217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.58032,"y":60.682648,"z":-66.85401},"screenPosition":{"x":0.98577493,"y":0.44864768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.86478,"y":62.66042,"z":-66.69803},"screenPosition":{"x":0.98724157,"y":0.46924904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.99646,"y":65.578896,"z":-67.06438},"screenPosition":{"x":0.9791113,"y":0.4990345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.3375,"y":66.92644,"z":-67.40342},"screenPosition":{"x":0.95354676,"y":0.51075405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5917,"y":68.08773,"z":-68.231285},"screenPosition":{"x":0.93319637,"y":0.52135193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.4602,"y":69.28356,"z":-70.45719},"screenPosition":{"x":0.88030434,"y":0.5301095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.56647,"y":68.860245,"z":-72.3367},"screenPosition":{"x":0.8373122,"y":0.52272874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.89636,"y":67.25025,"z":-73.91268},"screenPosition":{"x":0.802632,"y":0.503628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.95782,"y":64.91144,"z":-74.70364},"screenPosition":{"x":0.7869903,"y":0.47822693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.0542,"y":62.44692,"z":-75.45116},"screenPosition":{"x":0.77237386,"y":0.4516629},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.18854,"y":59.293957,"z":-75.107735},"screenPosition":{"x":0.7837249,"y":0.4197756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.7611,"y":56.850254,"z":-74.369736},"screenPosition":{"x":0.8034316,"y":0.3958227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.38458,"y":55.196564,"z":-72.62531},"screenPosition":{"x":0.845552,"y":0.3816223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.4528,"y":54.991367,"z":-70.528564},"screenPosition":{"x":0.8942514,"y":0.38289425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.26248,"y":56.09855,"z":-68.7788},"screenPosition":{"x":0.93350863,"y":0.39710963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.01663,"y":57.024673,"z":-67.073074},"screenPosition":{"x":0.97284764,"y":0.41105038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.2547,"y":60.421616,"z":-67.47112},"screenPosition":{"x":0.9752869,"y":0.44531402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0129,"y":62.75745,"z":-67.455185},"screenPosition":{"x":0.95690686,"y":0.46776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.5911,"y":64.82862,"z":-69.02403},"screenPosition":{"x":0.9183939,"y":0.48653924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.7039,"y":65.14454,"z":-70.9458},"screenPosition":{"x":0.8736203,"y":0.48668885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.5878,"y":63.99698,"z":-73.00148},"screenPosition":{"x":0.827334,"y":0.47156444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.573,"y":61.170338,"z":-73.837074},"screenPosition":{"x":0.81106645,"y":0.441137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.12488,"y":58.419872,"z":-73.09966},"screenPosition":{"x":0.83109766,"y":0.41402215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.16406,"y":55.8205,"z":-71.88137},"screenPosition":{"x":0.8620773,"y":0.38924253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.20386,"y":56.480232,"z":-69.87032},"screenPosition":{"x":0.9078594,"y":0.3992756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.17383,"y":57.391373,"z":-67.946175},"screenPosition":{"x":0.95136046,"y":0.4117552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.29797,"y":59.231956,"z":-67.94261},"screenPosition":{"x":0.94945157,"y":0.43069905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.33813,"y":61.75641,"z":-68.068794},"screenPosition":{"x":0.9438031,"y":0.45647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.1257,"y":63.073364,"z":-69.37695},"screenPosition":{"x":0.91213316,"y":0.46790963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.64178,"y":64.22424,"z":-70.947586},"screenPosition":{"x":0.87423253,"y":0.47738507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.9238,"y":61.261497,"z":-72.48249},"screenPosition":{"x":0.84229255,"y":0.44425598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.24094,"y":59.567432,"z":-71.04399},"screenPosition":{"x":0.87738395,"y":0.42914656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.81915,"y":53.209465,"z":-74.07095},"screenPosition":{"x":0.81427836,"y":0.35884407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.7238,"y":52.368668,"z":-76.12604},"screenPosition":{"x":0.7676739,"y":0.34687695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.99805,"y":50.577614,"z":-77.746056},"screenPosition":{"x":0.73215634,"y":0.32583445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.5787,"y":48.826935,"z":-79.060165},"screenPosition":{"x":0.7036679,"y":0.30570102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.9879,"y":47.142025,"z":-79.54402},"screenPosition":{"x":0.69430375,"y":0.2875839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.8224,"y":44.687912,"z":-79.548775},"screenPosition":{"x":0.6938086,"y":0.2647098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.05676,"y":41.766792,"z":-78.11265},"screenPosition":{"x":0.7224818,"y":0.23432226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.35013,"y":40.32871,"z":-77.72222},"screenPosition":{"x":0.73501045,"y":0.22104459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.19415,"y":38.051086,"z":-76.72175},"screenPosition":{"x":0.75677466,"y":0.19797908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.80807,"y":36.22091,"z":-75.98255},"screenPosition":{"x":0.7739396,"y":0.17978792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.19196,"y":34.838184,"z":-75.50464},"screenPosition":{"x":0.7865028,"y":0.16647358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.2376,"y":32.978043,"z":-74.3286},"screenPosition":{"x":0.83020955,"y":0.15026352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.4868,"y":32.883564,"z":-72.05687},"screenPosition":{"x":0.8819753,"y":0.15414968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.122,"y":34.61926,"z":-70.52434},"screenPosition":{"x":0.91638935,"y":0.1732887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.9528,"y":37.897926,"z":-70.9112},"screenPosition":{"x":0.9038978,"y":0.20639928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.68942,"y":38.42487,"z":-73.225784},"screenPosition":{"x":0.84981406,"y":0.20808639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.03998,"y":37.121643,"z":-74.80116},"screenPosition":{"x":0.81480074,"y":0.19213524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.26175,"y":34.58678,"z":-75.41775},"screenPosition":{"x":0.788787,"y":0.16405281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.04144,"y":32.08227,"z":-75.88798},"screenPosition":{"x":0.8113468,"y":0.14014415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.49734,"y":29.754736,"z":-73.85425},"screenPosition":{"x":0.8321473,"y":0.11810007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.5643,"y":31.460464,"z":-71.884865},"screenPosition":{"x":0.88744515,"y":0.13986607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.54886,"y":33.803856,"z":-72.05509},"screenPosition":{"x":0.8818802,"y":0.1624289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.31107,"y":35.423,"z":-72.401474},"screenPosition":{"x":0.8716759,"y":0.17913215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.6702,"y":37.60157,"z":-70.16904},"screenPosition":{"x":0.92081124,"y":0.2051831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.7517,"y":36.066162,"z":-69.391975},"screenPosition":{"x":0.9572261,"y":0.19161686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.25168,"y":32.07525,"z":-69.21855},"screenPosition":{"x":0.9544416,"y":0.15250388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.42776,"y":31.40053,"z":-71.01117},"screenPosition":{"x":0.9081272,"y":0.14003511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.0912,"y":30.876905,"z":-72.3229},"screenPosition":{"x":0.8784775,"y":0.13243304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.87997,"y":30.282938,"z":-73.5037},"screenPosition":{"x":0.85219723,"y":0.12386409},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-388.0205,"y":34.903954,"z":-74.67439},"screenPosition":{"x":0.8201311,"y":0.16952159},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-390.71686,"y":32.436115,"z":-71.79559},"screenPosition":{"x":0.88881516,"y":0.14952292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.555,"y":32.678368,"z":-69.96012},"screenPosition":{"x":0.931534,"y":0.1542289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.58398,"y":35.07254,"z":-69.08167},"screenPosition":{"x":0.95662564,"y":0.18318303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3604,"y":36.25922,"z":-69.38521},"screenPosition":{"x":0.9401727,"y":0.19285773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3811,"y":36.565983,"z":-69.38461},"screenPosition":{"x":0.94000846,"y":0.19584154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.21432,"y":36.0228,"z":-69.51674},"screenPosition":{"x":0.9372301,"y":0.19039893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.3172,"y":34.297512,"z":-70.30651},"screenPosition":{"x":0.92132956,"y":0.17086603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.69922,"y":31.566607,"z":-70.74871},"screenPosition":{"x":0.91404843,"y":0.14211224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.99887,"y":30.832008,"z":-69.80478},"screenPosition":{"x":0.95851946,"y":0.13695253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.39886,"y":33.61299,"z":-69.58545},"screenPosition":{"x":0.9554069,"y":0.16606355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.79987,"y":35.057556,"z":-68.86325},"screenPosition":{"x":0.95042485,"y":0.18473324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.36688,"y":36.99845,"z":-69.42747},"screenPosition":{"x":0.9390181,"y":0.19970927},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-391.83267,"y":40.618423,"z":-71.21177},"screenPosition":{"x":0.89398944,"y":0.23392402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.35547,"y":43.90292,"z":-69.89469},"screenPosition":{"x":0.9209032,"y":0.269826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.81464,"y":43.456448,"z":-68.80912},"screenPosition":{"x":0.9627063,"y":0.26859733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.34903,"y":40.219276,"z":-69.06443},"screenPosition":{"x":0.97160786,"y":0.23456505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.78442,"y":37.400948,"z":-69.03348},"screenPosition":{"x":0.9583099,"y":0.20684108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.55005,"y":40.322067,"z":-70.469604},"screenPosition":{"x":0.91080934,"y":0.232784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.79492,"y":42.70126,"z":-69.372734},"screenPosition":{"x":0.9342711,"y":0.25830406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.6709,"y":42.45712,"z":-68.88793},"screenPosition":{"x":0.97316337,"y":0.2579853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.18625,"y":39.087517,"z":-69.15369},"screenPosition":{"x":0.9594666,"y":0.22308864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.4018,"y":36.87275,"z":-69.38402},"screenPosition":{"x":0.9400041,"y":0.1986538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.86108,"y":39.75349,"z":-71.12606},"screenPosition":{"x":0.89613384,"y":0.22604482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.5837,"y":42.107292,"z":-70.55353},"screenPosition":{"x":0.9076134,"y":0.25028735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9682,"y":43.983673,"z":-69.28287},"screenPosition":{"x":0.9346309,"y":0.27194852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.0256,"y":45.512917,"z":-68.31871},"screenPosition":{"x":0.95220095,"y":0.2917773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.4315,"y":47.745384,"z":-68.47086},"screenPosition":{"x":0.97393024,"y":0.3130504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.83673,"y":62.50811,"z":-73.65972},"screenPosition":{"x":0.813726,"y":0.4551831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.58316,"y":64.60593,"z":-72.03911},"screenPosition":{"x":0.8489254,"y":0.4793829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.45618,"y":64.72248,"z":-70.160194},"screenPosition":{"x":0.89224046,"y":0.48361385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.41135,"y":62.806976,"z":-69.07164},"screenPosition":{"x":0.91914546,"y":0.465817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.54752,"y":61.002193,"z":-67.808105},"screenPosition":{"x":0.9500408,"y":0.4494146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0296,"y":58.50313,"z":-67.15759},"screenPosition":{"x":0.97389716,"y":0.42579207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.4323,"y":56.07899,"z":-67.5992},"screenPosition":{"x":0.97206295,"y":0.40002745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.4589,"y":53.86588,"z":-68.4336},"screenPosition":{"x":0.94390523,"y":0.37469426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.4015,"y":52.336636,"z":-69.39776},"screenPosition":{"x":0.9232682,"y":0.35740387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.39316,"y":50.249226,"z":-70.27561},"screenPosition":{"x":0.9052303,"y":0.33450964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.27243,"y":49.710617,"z":-71.36892},"screenPosition":{"x":0.8805354,"y":0.3272037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.72122,"y":47.29105,"z":-72.7717},"screenPosition":{"x":0.8505225,"y":0.30025712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.677,"y":48.634655,"z":-70.8904},"screenPosition":{"x":0.89276284,"y":0.31690502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.8598,"y":50.093555,"z":-69.79532},"screenPosition":{"x":0.91609114,"y":0.33401504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.8931,"y":50.01406,"z":-67.74201},"screenPosition":{"x":0.9676635,"y":0.33822945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.21777,"y":46.259453,"z":-68.58805},"screenPosition":{"x":0.9647849,"y":0.2977947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.2906,"y":44.939762,"z":-68.013985},"screenPosition":{"x":0.9591984,"y":0.28692126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.79028,"y":43.31021,"z":-68.41036},"screenPosition":{"x":0.95290554,"y":0.26875216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.37558,"y":40.95058,"z":-70.68684},"screenPosition":{"x":0.90578264,"y":0.23817061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.26904,"y":39.979504,"z":-71.73729},"screenPosition":{"x":0.88226205,"y":0.22682053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.0075,"y":41.85463,"z":-73.13176},"screenPosition":{"x":0.8482774,"y":0.24352755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.43497,"y":44.298332,"z":-73.86976},"screenPosition":{"x":0.8285707,"y":0.26748043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.42908,"y":46.81821,"z":-73.03476},"screenPosition":{"x":0.8447546,"y":0.29519323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.45465,"y":47.91041,"z":-71.06657},"screenPosition":{"x":0.8890546,"y":0.30955967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.1609,"y":47.483776,"z":-69.31978},"screenPosition":{"x":0.93032134,"y":0.30759773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.195,"y":46.10112,"z":-68.60054},"screenPosition":{"x":0.97153425,"y":0.296057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.6906,"y":42.59423,"z":-68.87712},"screenPosition":{"x":0.96850145,"y":0.2601066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.49286,"y":40.187214,"z":-68.50379},"screenPosition":{"x":0.9604315,"y":0.23664314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.3768,"y":39.039654,"z":-70.55947},"screenPosition":{"x":0.9098408,"y":0.21977937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.50903,"y":41.573257,"z":-72.60802},"screenPosition":{"x":0.8602635,"y":0.24199694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.4936,"y":43.91665,"z":-72.77824},"screenPosition":{"x":0.85422,"y":0.26531446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.76382,"y":45.993652,"z":-72.64314},"screenPosition":{"x":0.85437727,"y":0.28769282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.56094,"y":47.487095,"z":-72.94608},"screenPosition":{"x":0.84647655,"y":0.3017806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.4532,"y":48.42695,"z":-74.12391},"screenPosition":{"x":0.8182281,"y":0.3095504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.36612,"y":49.67356,"z":-75.30114},"screenPosition":{"x":0.7896616,"y":0.32047755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.78525,"y":50.029854,"z":-76.917},"screenPosition":{"x":0.751917,"y":0.32153618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.73004,"y":51.713512,"z":-79.09826},"screenPosition":{"x":0.69957614,"y":0.33549845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.35266,"y":53.835464,"z":-79.61844},"screenPosition":{"x":0.6853418,"y":0.35633388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.97992,"y":55.34847,"z":-81.10098},"screenPosition":{"x":0.649428,"y":0.36950928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.85513,"y":58.677917,"z":-80.43918},"screenPosition":{"x":0.6611271,"y":0.40483445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.88882,"y":60.463142,"z":-80.5231},"screenPosition":{"x":0.6572554,"y":0.42306754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.6782,"y":63.12828,"z":-80.91115},"screenPosition":{"x":0.64540017,"y":0.4498635},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-382.3302,"y":69.509125,"z":-82.6901},"screenPosition":{"x":0.59736705,"y":0.51264673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.68137,"y":71.465004,"z":-83.47274},"screenPosition":{"x":0.5771561,"y":0.53150827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.97876,"y":74.588,"z":-83.37931},"screenPosition":{"x":0.57593757,"y":0.5637921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.82904,"y":71.65522,"z":-85.35107},"screenPosition":{"x":0.53352296,"y":0.53043467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.45718,"y":69.39258,"z":-84.56902},"screenPosition":{"x":0.554052,"y":0.5084158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.64893,"y":67.76885,"z":-83.26145},"screenPosition":{"x":0.5860401,"y":0.49381888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.14703,"y":66.18551,"z":-81.647964},"screenPosition":{"x":0.6250572,"y":0.480131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.24057,"y":65.67812,"z":-80.513},"screenPosition":{"x":0.65184695,"y":0.47674176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.55646,"y":65.89498,"z":-79.20186},"screenPosition":{"x":0.68192613,"y":0.48108867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.44064,"y":66.141815,"z":-78.32757},"screenPosition":{"x":0.7018729,"y":0.48503906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.12497,"y":67.31934,"z":-76.70874},"screenPosition":{"x":0.73802674,"y":0.49976695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.0329,"y":67.31019,"z":-74.78638},"screenPosition":{"x":0.78248227,"y":0.5027746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.40378,"y":64.449005,"z":-74.22394},"screenPosition":{"x":0.7982849,"y":0.47443238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.065,"y":60.71248,"z":-74.31856},"screenPosition":{"x":0.80043095,"y":0.4356485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.9205,"y":60.42985,"z":-76.459946},"screenPosition":{"x":0.7512326,"y":0.42928118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.8381,"y":61.067516,"z":-78.59955},"screenPosition":{"x":0.70086914,"y":0.43264323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.64102,"y":76.89936,"z":-76.82125},"screenPosition":{"x":0.725061,"y":0.598156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.92792,"y":74.722046,"z":-76.388565},"screenPosition":{"x":0.73742044,"y":0.57645136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.918,"y":72.68084,"z":-75.25657},"screenPosition":{"x":0.7658009,"y":0.5572756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.54614,"y":70.4182,"z":-74.47452},"screenPosition":{"x":0.7862745,"y":0.5352809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.014,"y":68.35161,"z":-73.86686},"screenPosition":{"x":0.8024884,"y":0.5150348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.4263,"y":66.10395,"z":-73.30323},"screenPosition":{"x":0.81807786,"y":0.49275655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.82904,"y":63.679806,"z":-73.744835},"screenPosition":{"x":0.8100713,"y":0.46736884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.88095,"y":61.164505,"z":-75.54102},"screenPosition":{"x":0.7716836,"y":0.4383229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.36987,"y":61.269394,"z":-77.069984},"screenPosition":{"x":0.73622,"y":0.436935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.7192,"y":61.87709,"z":-78.772736},"screenPosition":{"x":0.69619447,"y":0.4404402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.10345,"y":62.35908,"z":-80.432045},"screenPosition":{"x":0.6571539,"y":0.44296545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.36105,"y":64.82234,"z":-82.349655},"screenPosition":{"x":0.61030877,"y":0.4649729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.8218,"y":67.186554,"z":-81.03436},"screenPosition":{"x":0.63816094,"y":0.49142098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.84433,"y":68.8415,"z":-80.113655},"screenPosition":{"x":0.65764105,"y":0.5099519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.2081,"y":70.41111,"z":-78.84359},"screenPosition":{"x":0.6853236,"y":0.52813405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.78125,"y":71.22652,"z":-77.312836},"screenPosition":{"x":0.7198327,"y":0.53899384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.87662,"y":72.067314,"z":-75.25776},"screenPosition":{"x":0.7663437,"y":0.55099887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.98315,"y":73.03839,"z":-74.2073},"screenPosition":{"x":0.78958863,"y":0.5626751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.79752,"y":73.53662,"z":-73.41991},"screenPosition":{"x":0.80733913,"y":0.5690444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.1406,"y":74.79948,"z":-72.15044},"screenPosition":{"x":0.83531874,"y":0.5840875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.1838,"y":76.761185,"z":-71.22913},"screenPosition":{"x":0.8543739,"y":0.60577416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.64273,"y":77.77721,"z":-70.833954},"screenPosition":{"x":0.8625393,"y":0.61684924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.87805,"y":79.97991,"z":-70.7423},"screenPosition":{"x":0.8622751,"y":0.63966113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.6214,"y":82.64047,"z":-70.169174},"screenPosition":{"x":0.87264764,"y":0.66796094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.06146,"y":84.69792,"z":-68.85447},"screenPosition":{"x":0.9006222,"y":0.69122946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.88538,"y":85.372635,"z":-67.06185},"screenPosition":{"x":0.94153386,"y":0.7010865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.53604,"y":84.76494,"z":-65.35909},"screenPosition":{"x":0.9931952,"y":0.69686764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.5872,"y":83.59176,"z":-65.64375},"screenPosition":{"x":0.9924688,"y":0.68666446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.11563,"y":80.31303,"z":-65.902336},"screenPosition":{"x":0.99003744,"y":0.6525117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.77283,"y":77.92963,"z":-66.09031},"screenPosition":{"x":0.98827004,"y":0.6276852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.9394,"y":77.17077,"z":-66.46607},"screenPosition":{"x":0.9637791,"y":0.6176858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.4981,"y":77.02425,"z":-67.90814},"screenPosition":{"x":0.93099934,"y":0.6138229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.68497,"y":74.61509,"z":-68.56817},"screenPosition":{"x":0.91795254,"y":0.5880304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.48453,"y":72.28668,"z":-68.61637},"screenPosition":{"x":0.91962713,"y":0.5639609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.30786,"y":69.70229,"z":-67.61649},"screenPosition":{"x":0.9456638,"y":0.5389565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.6619,"y":70.20561,"z":-66.69948},"screenPosition":{"x":0.9825423,"y":0.54722846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2689,"y":73.69605,"z":-65.90482},"screenPosition":{"x":0.9850941,"y":0.5830733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.60403,"y":74.73622,"z":-67.65043},"screenPosition":{"x":0.9393507,"y":0.59070826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.59915,"y":73.95078,"z":-69.61803},"screenPosition":{"x":0.89463276,"y":0.57947016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.3336,"y":71.264824,"z":-70.71549},"screenPosition":{"x":0.87232363,"y":0.5500333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.61093,"y":68.911026,"z":-71.28803},"screenPosition":{"x":0.86163294,"y":0.5248908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.8867,"y":66.60344,"z":-69.850716},"screenPosition":{"x":0.8973607,"y":0.5034667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.04535,"y":66.4536,"z":-67.66647},"screenPosition":{"x":0.9480229,"y":0.5054494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.66638,"y":68.62176,"z":-66.176796},"screenPosition":{"x":0.98138046,"y":0.5309088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.85016,"y":71.51445,"z":-66.59626},"screenPosition":{"x":0.9835128,"y":0.5608619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.16888,"y":73.46421,"z":-66.997536},"screenPosition":{"x":0.9559043,"y":0.5786623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.16275,"y":74.5897,"z":-69.09251},"screenPosition":{"x":0.9058282,"y":0.5869309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.29745,"y":73.30145,"z":-70.886314},"screenPosition":{"x":0.86617094,"y":0.57071286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.44293,"y":70.27877,"z":-71.54752},"screenPosition":{"x":0.8541097,"y":0.53855973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9392,"y":67.347244,"z":-70.85416},"screenPosition":{"x":0.8733561,"y":0.50950074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5852,"y":67.348495,"z":-68.18903},"screenPosition":{"x":0.9346769,"y":0.51391166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.8128,"y":70.7229,"z":-68.182495},"screenPosition":{"x":0.9314736,"y":0.5485444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.4259,"y":72.668365,"z":-69.70789},"screenPosition":{"x":0.89397377,"y":0.5661289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3021,"y":72.692505,"z":-71.84869},"screenPosition":{"x":0.84457946,"y":0.5628944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.1193,"y":71.233604,"z":-72.94377},"screenPosition":{"x":0.82083905,"y":0.54611653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.42078,"y":70.48854,"z":-74.60545},"screenPosition":{"x":0.78322655,"y":0.5357692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.77658,"y":71.83547,"z":-76.35047},"screenPosition":{"x":0.74123305,"y":0.54690254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.7581,"y":74.74161,"z":-77.56818},"screenPosition":{"x":0.71012646,"y":0.57474923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.7238,"y":78.12641,"z":-76.81888},"screenPosition":{"x":0.7237092,"y":0.6108003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.3414,"y":78.9926,"z":-74.239456},"screenPosition":{"x":0.78248817,"y":0.6238596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.91537,"y":84.461494,"z":-68.986},"screenPosition":{"x":0.8979501,"y":0.68859804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.86786,"y":84.97346,"z":-71.08215},"screenPosition":{"x":0.8490153,"y":0.6904923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.15637,"y":82.74994,"z":-72.65932},"screenPosition":{"x":0.81495637,"y":0.6650692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.78143,"y":81.05004,"z":-72.92476},"screenPosition":{"x":0.81065845,"y":0.6471504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.70334,"y":79.214035,"z":-73.8895},"screenPosition":{"x":0.7902263,"y":0.6267121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.28705,"y":76.90061,"z":-74.15613},"screenPosition":{"x":0.786678,"y":0.6024692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.52948,"y":74.672516,"z":-74.77211},"screenPosition":{"x":0.77484685,"y":0.57855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9878,"y":72.429436,"z":-75.16967},"screenPosition":{"x":0.7680201,"y":0.55485296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.805,"y":70.970535,"z":-76.26476},"screenPosition":{"x":0.7441887,"y":0.53812844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4094,"y":68.963875,"z":-76.53079},"screenPosition":{"x":0.74036175,"y":0.516975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.90262,"y":66.59509,"z":-76.8849},"screenPosition":{"x":0.7346246,"y":0.49211523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.13086,"y":64.79946,"z":-77.54374},"screenPosition":{"x":0.7214475,"y":0.47249213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.6973,"y":63.48125,"z":-78.9007},"screenPosition":{"x":0.69147414,"y":0.45676962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.7557,"y":61.70518,"z":-80.73914},"screenPosition":{"x":0.6507698,"y":0.43574828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.2493,"y":61.201115,"z":-83.230484},"screenPosition":{"x":0.5938616,"y":0.42629215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.03683,"y":62.518074,"z":-84.53865},"screenPosition":{"x":0.56219167,"y":0.43773177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.03903,"y":65.73097,"z":-85.75576},"screenPosition":{"x":0.5305727,"y":0.4689385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.7268,"y":68.21047,"z":-85.22667},"screenPosition":{"x":0.5401259,"y":0.49519175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.57788,"y":69.93118,"z":-83.475716},"screenPosition":{"x":0.57874686,"y":0.51572174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.47504,"y":71.65647,"z":-82.68594},"screenPosition":{"x":0.59514004,"y":0.5347479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.65784,"y":73.11537,"z":-81.59085},"screenPosition":{"x":0.61888045,"y":0.5515258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.61057,"y":75.02172,"z":-80.75704},"screenPosition":{"x":0.63609594,"y":0.572486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.06482,"y":76.6467,"z":-79.39948},"screenPosition":{"x":0.66572493,"y":0.59139615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.03174,"y":78.12058,"z":-78.52282},"screenPosition":{"x":0.6843991,"y":0.6079758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4162,"y":79.99696,"z":-77.25216},"screenPosition":{"x":0.7117471,"y":0.6293325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.27844,"y":81.84795,"z":-76.50584},"screenPosition":{"x":0.7269433,"y":0.6495817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.33588,"y":83.3772,"z":-75.54168},"screenPosition":{"x":0.7474928,"y":0.6668605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.8806,"y":85.05753,"z":-74.096634},"screenPosition":{"x":0.7792286,"y":0.6864933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.20605,"y":85.450874,"z":-71.78027},"screenPosition":{"x":0.83235794,"y":0.69427806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.5788,"y":83.937874,"z":-70.29773},"screenPosition":{"x":0.8682717,"y":0.6811027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.9722,"y":82.731636,"z":-68.81459},"screenPosition":{"x":0.90386736,"y":0.6710846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.3656,"y":81.5254,"z":-67.33144},"screenPosition":{"x":0.93946296,"y":0.66106653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.18893,"y":78.94101,"z":-66.33157},"screenPosition":{"x":0.9650838,"y":0.636097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.9613,"y":75.566605,"z":-66.338104},"screenPosition":{"x":0.96887594,"y":0.60135823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.83878,"y":73.67982,"z":-68.351524},"screenPosition":{"x":0.9240118,"y":0.5787582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.4673,"y":73.28189,"z":-69.7067},"screenPosition":{"x":0.8933929,"y":0.5724299},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.50378,"y":73.109985,"z":-71.67311},"screenPosition":{"x":0.84817237,"y":0.567477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.74194,"y":73.35556,"z":-73.46395},"screenPosition":{"x":0.8065058,"y":0.5671136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.62122,"y":72.81695,"z":-74.55725},"screenPosition":{"x":0.7816209,"y":0.5598742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.53232,"y":72.715385,"z":-76.654594},"screenPosition":{"x":0.7334407,"y":0.5553752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.59906,"y":73.026726,"z":-77.61519},"screenPosition":{"x":0.7108948,"y":0.55702865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.69113,"y":73.03587,"z":-79.53755},"screenPosition":{"x":0.6664393,"y":0.554021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.75137,"y":72.60799,"z":-80.45588},"screenPosition":{"x":0.6456702,"y":0.54813653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.30826,"y":71.11329,"z":-82.81807},"screenPosition":{"x":0.5926454,"y":0.52899504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.01428,"y":69.29227,"z":-84.001236},"screenPosition":{"x":0.56726724,"y":0.50836927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.15976,"y":66.269585,"z":-84.66245},"screenPosition":{"x":0.5552706,"y":0.47613195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.67673,"y":63.644817,"z":-83.96849},"screenPosition":{"x":0.5741549,"y":0.45024502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.3889,"y":60.698307,"z":-83.056694},"screenPosition":{"x":0.5983724,"y":0.4215589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.87338,"y":62.806534,"z":-80.69332},"screenPosition":{"x":0.6507234,"y":0.447003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.39093,"y":63.440876,"z":-79.20661},"screenPosition":{"x":0.6844713,"y":0.45583022},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-389.35687,"y":68.22007,"z":-75.52735},"screenPosition":{"x":0.7643663,"y":0.51094097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.76324,"y":68.492294,"z":-74.12873},"screenPosition":{"x":0.79640836,"y":0.51599866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.26013,"y":68.81987,"z":-72.64262},"screenPosition":{"x":0.8304133,"y":0.52176714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.24432,"y":69.298546,"z":-70.67561},"screenPosition":{"x":0.8751215,"y":0.5299516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.89377,"y":70.60177,"z":-69.10023},"screenPosition":{"x":0.9100514,"y":0.54590684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.55005,"y":74.50895,"z":-69.70433},"screenPosition":{"x":0.8921923,"y":0.5850442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.1962,"y":74.98054,"z":-72.10639},"screenPosition":{"x":0.8361457,"y":0.5860206},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-390.45847,"y":76.83485,"z":-74.986374},"screenPosition":{"x":0.7675536,"y":0.6004529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.61057,"y":75.02172,"z":-80.75704},"screenPosition":{"x":0.63609594,"y":0.572486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.24338,"y":72.15013,"z":-80.93736},"screenPosition":{"x":0.63502526,"y":0.54265666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.35236,"y":69.299355,"z":-79.63217},"screenPosition":{"x":0.66829413,"y":0.5154225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.85046,"y":67.716,"z":-78.01869},"screenPosition":{"x":0.7073113,"y":0.5017346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.4804,"y":66.801544,"z":-76.31653},"screenPosition":{"x":0.7474587,"y":0.49520797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.4995,"y":67.15452,"z":-74.30608},"screenPosition":{"x":0.79355806,"y":0.5020558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.17737,"y":67.59281,"z":-72.64499},"screenPosition":{"x":0.83168584,"y":0.50913787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.20636,"y":69.98699,"z":-71.76654},"screenPosition":{"x":0.8494056,"y":0.53518945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.5176,"y":70.8128,"z":-69.493034},"screenPosition":{"x":0.90107626,"y":0.5473548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.41473,"y":72.538086,"z":-68.70326},"screenPosition":{"x":0.91746944,"y":0.566381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.2912,"y":73.95661,"z":-67.914085},"screenPosition":{"x":0.93387765,"y":0.58229905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.43137,"y":76.71291,"z":-66.947556},"screenPosition":{"x":0.9535452,"y":0.6121694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.88257,"y":78.900635,"z":-66.63748},"screenPosition":{"x":0.9583473,"y":0.6351796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.72754,"y":81.74683,"z":-66.98149},"screenPosition":{"x":0.9469997,"y":0.6638982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.40576,"y":84.04985,"z":-67.45763},"screenPosition":{"x":0.93381447,"y":0.6868375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.8474,"y":86.06108,"z":-68.15278},"screenPosition":{"x":0.91556644,"y":0.70640975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.5049,"y":88.057335,"z":-68.62951},"screenPosition":{"x":0.90238464,"y":0.7261804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.35455,"y":90.294586,"z":-69.93589},"screenPosition":{"x":0.86976033,"y":0.7470919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.54077,"y":93.05546,"z":-69.93054},"screenPosition":{"x":0.86689705,"y":0.7755076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.49658,"y":94.39906,"z":-68.04925},"screenPosition":{"x":0.9089395,"y":0.7923678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.3489,"y":94.20885,"z":-66.17092},"screenPosition":{"x":0.9547581,"y":0.80184156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.72162,"y":92.69585,"z":-64.68838},"screenPosition":{"x":0.999045,"y":0.7790399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.6451,"y":90.947205,"z":-65.063644},"screenPosition":{"x":0.99792325,"y":0.763282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.09763,"y":87.140625,"z":-65.36386},"screenPosition":{"x":0.99510044,"y":0.723631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.60153,"y":86.987206,"z":-66.44705},"screenPosition":{"x":0.953796,"y":0.71865755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.1939,"y":88.62591,"z":-67.97305},"screenPosition":{"x":0.9166797,"y":0.7330321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.4546,"y":90.52643,"z":-68.84318},"screenPosition":{"x":0.8947733,"y":0.75124055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.80576,"y":92.48231,"z":-69.62582},"screenPosition":{"x":0.8744872,"y":0.7700759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.43304,"y":93.99531,"z":-71.10837},"screenPosition":{"x":0.8386486,"y":0.78327745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.30927,"y":94.01945,"z":-73.24915},"screenPosition":{"x":0.78912693,"y":0.7800715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.54523,"y":91.05212,"z":-73.82288},"screenPosition":{"x":0.77904,"y":0.74860156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.89542,"y":87.88417,"z":-73.26104},"screenPosition":{"x":0.7953885,"y":0.71689975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.81754,"y":87.44255,"z":-71.29582},"screenPosition":{"x":0.8414039,"y":0.71555245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.4256,"y":88.132256,"z":-69.72163},"screenPosition":{"x":0.87705356,"y":0.72518903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.89404,"y":89.32477,"z":-68.32122},"screenPosition":{"x":0.9080377,"y":0.739694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.4181,"y":90.69834,"z":-66.87677},"screenPosition":{"x":0.94005114,"y":0.75618225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.1929,"y":91.93122,"z":-65.17045},"screenPosition":{"x":0.9781679,"y":0.7716209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.87363,"y":92.536026,"z":-64.93834},"screenPosition":{"x":0.9991014,"y":0.7798319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.27036,"y":91.04531,"z":-61.5601},"screenPosition":{"x":1.0459379,"y":0.7666739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-401.8885,"y":85.68661,"z":-65.47854},"screenPosition":{"x":1.0036049,"y":0.70822036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.69507,"y":86.47982,"z":-65.31208},"screenPosition":{"x":0.9807911,"y":0.7153019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.38565,"y":87.00219,"z":-66.66548},"screenPosition":{"x":0.9489351,"y":0.71849287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.49377,"y":87.927055,"z":-67.62488},"screenPosition":{"x":0.9255612,"y":0.7264237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.85266,"y":88.711235,"z":-68.32241},"screenPosition":{"x":0.9084402,"y":0.7333294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.52438,"y":90.275024,"z":-68.75629},"screenPosition":{"x":0.89703673,"y":0.74878925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.7597,"y":92.47773,"z":-68.664635},"screenPosition":{"x":0.89679015,"y":0.7716059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.2872,"y":95.153275,"z":-68.30993},"screenPosition":{"x":0.90207374,"y":0.79969835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.77844,"y":97.27749,"z":-70.38346},"screenPosition":{"x":0.8701515,"y":0.82370996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.26056,"y":98.29429,"z":-71.97946},"screenPosition":{"x":0.830079,"y":0.8277185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.91177,"y":99.09374,"z":-72.97718},"screenPosition":{"x":0.7904482,"y":0.83594376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.48593,"y":96.603836,"z":-74.24903},"screenPosition":{"x":0.7632135,"y":0.8050494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.3902,"y":93.89832,"z":-74.16689},"screenPosition":{"x":0.76803964,"y":0.7773444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.31516,"y":91.49957,"z":-74.08416},"screenPosition":{"x":0.77254766,"y":0.7527967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.7416,"y":88.81944,"z":-73.477684},"screenPosition":{"x":0.7894537,"y":0.7261945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.72864,"y":87.34099,"z":-73.393166},"screenPosition":{"x":0.7930227,"y":0.7111232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.48685,"y":84.399055,"z":-73.44255},"screenPosition":{"x":0.7950636,"y":0.68077344},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-389.02768,"y":81.98864,"z":-76.76771},"screenPosition":{"x":0.72079307,"y":0.65060693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.6639,"y":80.41902,"z":-78.03777},"screenPosition":{"x":0.6931269,"y":0.6324075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.92447,"y":81.849205,"z":-73.840706},"screenPosition":{"x":0.78861684,"y":0.6538952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.77228,"y":82.73827,"z":-76.06721},"screenPosition":{"x":0.7361778,"y":0.65945035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.6605,"y":79.11705,"z":-76.94803},"screenPosition":{"x":0.71963614,"y":0.6207832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.37912,"y":76.90977,"z":-76.07849},"screenPosition":{"x":0.7422225,"y":0.59946156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.45505,"y":75.532875,"z":-73.89664},"screenPosition":{"x":0.7941573,"y":0.588815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.85675,"y":76.41404,"z":-71.53564},"screenPosition":{"x":0.84779084,"y":0.6016911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.20633,"y":78.41613,"z":-70.308426},"screenPosition":{"x":0.8737272,"y":0.6242901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.41632,"y":80.92102,"z":-69.255},"screenPosition":{"x":0.8956438,"y":0.6517442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.8042,"y":84.09937,"z":-69.07408},"screenPosition":{"x":0.89638805,"y":0.6847388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.36816,"y":86.60301,"z":-70.68578},"screenPosition":{"x":0.8564165,"y":0.7078986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.52234,"y":87.532455,"z":-72.60636},"screenPosition":{"x":0.8107532,"y":0.71430457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.97635,"y":87.76305,"z":-74.17878},"screenPosition":{"x":0.7744025,"y":0.71419823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.05545,"y":86.29374,"z":-76.016624},"screenPosition":{"x":0.7335006,"y":0.6961148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.66327,"y":85.58905,"z":-77.3724},"screenPosition":{"x":0.70291716,"y":0.6866765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.46628,"y":84.56262,"z":-78.51034},"screenPosition":{"x":0.6777181,"y":0.6742792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.23438,"y":83.66189,"z":-79.69173},"screenPosition":{"x":0.6513786,"y":0.6631052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.51514,"y":82.61006,"z":-81.354004},"screenPosition":{"x":0.61408424,"y":0.64960057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.53094,"y":82.13139,"z":-83.32101},"screenPosition":{"x":0.5691245,"y":0.64150155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.48993,"y":83.38258,"z":-85.45942},"screenPosition":{"x":0.5183302,"y":0.6509248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.47632,"y":87.07416,"z":-84.70953},"screenPosition":{"x":0.531674,"y":0.6901181},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.29376,"y":87.00964,"z":-82.87465},"screenPosition":{"x":0.5741583,"y":0.6924074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.0272,"y":87.629,"z":-81.169525},"screenPosition":{"x":0.6129197,"y":0.70153904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.41287,"y":87.59446,"z":-79.77149},"screenPosition":{"x":0.6452598,"y":0.70343024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.83347,"y":87.43421,"z":-78.33002},"screenPosition":{"x":0.67878056,"y":0.7041165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.15585,"y":88.390305,"z":-77.061134},"screenPosition":{"x":0.707083,"y":0.71600133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.03232,"y":89.80882,"z":-76.27196},"screenPosition":{"x":0.7237014,"y":0.7318312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.3723,"y":91.63442,"z":-76.04997},"screenPosition":{"x":0.72695166,"y":0.75101227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.92822,"y":93.44504,"z":-75.60956},"screenPosition":{"x":0.73517525,"y":0.77035266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.07306,"y":95.592384,"z":-75.6054},"screenPosition":{"x":0.7328785,"y":0.7924054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.578,"y":96.61298,"z":-76.171394},"screenPosition":{"x":0.718758,"y":0.8020417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.48447,"y":97.12037,"z":-77.306366},"screenPosition":{"x":0.69196826,"y":0.80543095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.6843,"y":96.189674,"z":-78.05091},"screenPosition":{"x":0.67576116,"y":0.7946534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.87766,"y":94.519745,"z":-78.7532},"screenPosition":{"x":0.6613308,"y":0.77633804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.26617,"y":92.52807,"z":-79.23765},"screenPosition":{"x":0.65222013,"y":0.7550092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.67538,"y":90.843155,"z":-79.721504},"screenPosition":{"x":0.6429208,"y":0.7369465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.31467,"y":88.71079,"z":-79.94409},"screenPosition":{"x":0.64007664,"y":0.71464425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.55063,"y":85.74347,"z":-80.517815},"screenPosition":{"x":0.6300218,"y":0.6831882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.28726,"y":86.27042,"z":-82.8324},"screenPosition":{"x":0.57594347,"y":0.6848771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.1718,"y":88.38196,"z":-84.09533},"screenPosition":{"x":0.54445344,"y":0.704547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.5118,"y":90.20756,"z":-83.87334},"screenPosition":{"x":0.54761535,"y":0.72370183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.52823,"y":92.98799,"z":-85.0476},"screenPosition":{"x":0.51745975,"y":0.75042117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.1975,"y":89.94449,"z":-87.19433},"screenPosition":{"x":0.47111943,"y":0.7156421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.12088,"y":87.59195,"z":-85.101746},"screenPosition":{"x":0.52204627,"y":0.6948067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.57635,"y":87.306,"z":-83.61682},"screenPosition":{"x":0.556687,"y":0.69426674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.26193,"y":86.5726,"z":-81.87062},"screenPosition":{"x":0.59785306,"y":0.68953824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.3017,"y":87.23234,"z":-79.85957},"screenPosition":{"x":0.64363515,"y":0.6995713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.94464,"y":87.79633,"z":-78.241936},"screenPosition":{"x":0.68039584,"y":0.7079733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.6006,"y":89.83879,"z":-76.70881},"screenPosition":{"x":0.71366185,"y":0.7314736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.4835,"y":91.996544,"z":-75.96189},"screenPosition":{"x":0.72853327,"y":0.75484735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.31732,"y":94.71247,"z":-75.30127},"screenPosition":{"x":0.74093175,"y":0.78389096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.2877,"y":97.48833,"z":-75.51434},"screenPosition":{"x":0.73300225,"y":0.81210846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.2136,"y":100.2134,"z":-76.77609},"screenPosition":{"x":0.70077527,"y":0.83799577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.70718,"y":99.709335,"z":-79.267426},"screenPosition":{"x":0.6438271,"y":0.828905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.49722,"y":97.204445,"z":-80.320854},"screenPosition":{"x":0.62218165,"y":0.8014319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.36658,"y":94.62463,"z":-80.28216},"screenPosition":{"x":0.6258673,"y":0.7749502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.65347,"y":92.44732,"z":-79.84947},"screenPosition":{"x":0.63822675,"y":0.7532456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.9373,"y":90.83275,"z":-80.464264},"screenPosition":{"x":0.62575924,"y":0.73564094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.6955,"y":87.890816,"z":-80.51366},"screenPosition":{"x":0.6277525,"y":0.7052647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.17288,"y":86.0007,"z":-78.90077},"screenPosition":{"x":0.6671355,"y":0.6884459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.99805,"y":84.764496,"z":-76.98078},"screenPosition":{"x":0.7128108,"y":0.6788159},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-389.79483,"y":101.721825,"z":-77.297455},"screenPosition":{"x":0.68906635,"y":0.8569854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.92648,"y":100.99632,"z":-80.13875},"screenPosition":{"x":0.62221247,"y":0.84058774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.7023,"y":98.9239,"z":-81.23502},"screenPosition":{"x":0.5991855,"y":0.81764865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.95895,"y":96.263336,"z":-81.80815},"screenPosition":{"x":0.588813,"y":0.78934884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.61246,"y":93.69851,"z":-81.987885},"screenPosition":{"x":0.58743244,"y":0.76266885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.73257,"y":90.97801,"z":-81.687325},"screenPosition":{"x":0.5973248,"y":0.7351621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.16556,"y":89.03712,"z":-81.1231},"screenPosition":{"x":0.61246943,"y":0.7161023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.38263,"y":87.111206,"z":-80.77731},"screenPosition":{"x":0.62254024,"y":0.6968404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.59973,"y":85.1853,"z":-80.43152},"screenPosition":{"x":0.63262635,"y":0.67758614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.42307,"y":82.600914,"z":-79.43164},"screenPosition":{"x":0.6585397,"y":0.6526083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.80045,"y":80.47896,"z":-78.91147},"screenPosition":{"x":0.67286205,"y":0.63161445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.06665,"y":77.99488,"z":-78.47937},"screenPosition":{"x":0.6855283,"y":0.6067555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.87088,"y":75.05752,"z":-79.489944},"screenPosition":{"x":0.6653528,"y":0.57489884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.8721,"y":73.1466,"z":-79.36257},"screenPosition":{"x":0.67035764,"y":0.5554473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.90027,"y":70.887276,"z":-82.20683},"screenPosition":{"x":0.6069908,"y":0.52769345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.54053,"y":73.87874,"z":-83.7739},"screenPosition":{"x":0.5675673,"y":0.5558901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.56467,"y":75.48747,"z":-84.863045},"screenPosition":{"x":0.5406601,"y":0.5706529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.72064,"y":77.7651,"z":-85.86352},"screenPosition":{"x":0.51506704,"y":0.592485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.0925,"y":80.02774,"z":-86.64556},"screenPosition":{"x":0.4945358,"y":0.6144923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.09775,"y":82.677895,"z":-86.81519},"screenPosition":{"x":0.4877498,"y":0.6414871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.49985,"y":85.42378,"z":-86.59142},"screenPosition":{"x":0.48994973,"y":0.67010057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.76846,"y":87.547,"z":-84.44647},"screenPosition":{"x":0.53724265,"y":0.6954003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.69183,"y":85.19445,"z":-82.35388},"screenPosition":{"x":0.5881708,"y":0.6745785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.75638,"y":82.29289,"z":-82.09736},"screenPosition":{"x":0.59724087,"y":0.64513767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.2147,"y":80.04981,"z":-82.49492},"screenPosition":{"x":0.5904759,"y":0.62141675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.79837,"y":77.73639,"z":-82.76154},"screenPosition":{"x":0.5868143,"y":0.5971833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.43768,"y":75.60403,"z":-82.98413},"screenPosition":{"x":0.5839751,"y":0.5748839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.61987,"y":73.80382,"z":-82.681786},"screenPosition":{"x":0.59291303,"y":0.55684906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.06705,"y":71.43046,"z":-82.074715},"screenPosition":{"x":0.6094861,"y":0.5334502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.01736,"y":68.72952,"z":-82.95376},"screenPosition":{"x":0.59207314,"y":0.5042902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.63754,"y":66.24419,"z":-85.18679},"screenPosition":{"x":0.54317415,"y":0.47503564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.73022,"y":69.51245,"z":-86.316414},"screenPosition":{"x":0.51352227,"y":0.5068296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.85437,"y":71.35303,"z":-86.31284},"screenPosition":{"x":0.51161337,"y":0.52577347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.79755,"y":73.08289,"z":-86.48425},"screenPosition":{"x":0.5057788,"y":0.5432958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.87262,"y":75.48164,"z":-86.566986},"screenPosition":{"x":0.50127596,"y":0.5678606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.85718,"y":77.825035,"z":-86.73721},"screenPosition":{"x":0.49479994,"y":0.5916804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.39578,"y":80.63086,"z":-87.38714},"screenPosition":{"x":0.476738,"y":0.61950135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.01352,"y":81.96738,"z":-89.87491},"screenPosition":{"x":0.41778922,"y":0.6292416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.54935,"y":78.3012,"z":-90.100464},"screenPosition":{"x":0.41658354,"y":0.5911834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.19354,"y":76.95427,"z":-88.355446},"screenPosition":{"x":0.45832795,"y":0.58010983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.60764,"y":76.054794,"z":-86.87171},"screenPosition":{"x":0.49360543,"y":0.57324904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.7787,"y":74.12431,"z":-85.564735},"screenPosition":{"x":0.52591157,"y":0.555515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.63043,"y":70.67499,"z":-84.47916},"screenPosition":{"x":0.55474234,"y":0.5217558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.84607,"y":69.26562,"z":-87.1907},"screenPosition":{"x":0.49357548,"y":0.50287926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.591,"y":71.879974,"z":-88.62742},"screenPosition":{"x":0.4483703,"y":0.52482235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.03915,"y":74.63044,"z":-89.36483},"screenPosition":{"x":0.424404,"y":0.55022156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.30936,"y":76.70744,"z":-89.22974},"screenPosition":{"x":0.4383812,"y":0.5761595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.11295,"y":78.94012,"z":-89.574936},"screenPosition":{"x":0.42798883,"y":0.59857696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.26428,"y":81.82669,"z":-89.61304},"screenPosition":{"x":0.42398083,"y":0.6282139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.41867,"y":84.15053,"z":-88.60365},"screenPosition":{"x":0.44480395,"y":0.6537529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.57614,"y":85.91161,"z":-86.54678},"screenPosition":{"x":0.49045658,"y":0.67519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.59647,"y":84.35365,"z":-84.408966},"screenPosition":{"x":0.5415664,"y":0.66261137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.5989,"y":80.53181,"z":-84.15423},"screenPosition":{"x":0.55159086,"y":0.62369865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.76202,"y":78.37863,"z":-85.86233},"screenPosition":{"x":0.51442856,"y":0.5987881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.65244,"y":77.9703,"z":-87.960266},"screenPosition":{"x":0.46636546,"y":0.59120154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.27322,"y":78.74407,"z":-89.40056},"screenPosition":{"x":0.43222848,"y":0.5968391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.55927,"y":80.3424,"z":-91.23246},"screenPosition":{"x":0.38814512,"y":0.6103287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.58987,"y":82.69037,"z":-92.36387},"screenPosition":{"x":0.35014576,"y":0.62891954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.87125,"y":84.89765,"z":-93.2334},"screenPosition":{"x":0.3295842,"y":0.6507104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.58905,"y":95.81921,"z":-85.17319},"screenPosition":{"x":0.5114938,"y":0.7793428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.14618,"y":95.718895,"z":-84.6054},"screenPosition":{"x":0.5247289,"y":0.77923346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.58868,"y":93.95449,"z":-83.035965},"screenPosition":{"x":0.56292367,"y":0.76361156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.86627,"y":92.99508,"z":-80.67853},"screenPosition":{"x":0.618466,"y":0.75754386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.8953,"y":95.38925,"z":-79.80008},"screenPosition":{"x":0.6361858,"y":0.7835954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.03546,"y":98.145546,"z":-78.83355},"screenPosition":{"x":0.65555024,"y":0.81351495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.79462,"y":100.32744,"z":-80.227425},"screenPosition":{"x":0.6209631,"y":0.83371574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.94876,"y":101.25688,"z":-82.148},"screenPosition":{"x":0.5755531,"y":0.84018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.87408,"y":100.722855,"z":-84.20249},"screenPosition":{"x":0.52863055,"y":0.8313702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.18976,"y":99.54533,"z":-85.82133},"screenPosition":{"x":0.4924767,"y":0.8166423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.7497,"y":97.487885,"z":-87.136024},"screenPosition":{"x":0.46430638,"y":0.79335153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.8396,"y":94.284134,"z":-87.84128},"screenPosition":{"x":0.45146677,"y":0.7592496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.63916,"y":91.95573,"z":-87.88948},"screenPosition":{"x":0.4528714,"y":0.7352144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.49432,"y":89.80838,"z":-87.89365},"screenPosition":{"x":0.45509842,"y":0.71311325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.29388,"y":87.47997,"z":-87.94184},"screenPosition":{"x":0.45650303,"y":0.6890781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.16974,"y":85.63939,"z":-87.94541},"screenPosition":{"x":0.45841205,"y":0.6701342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.96808,"y":85.22191,"z":-88.12098},"screenPosition":{"x":0.45480523,"y":0.6655552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.63147,"y":84.69829,"z":-89.43271},"screenPosition":{"x":0.42504328,"y":0.6580512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.53793,"y":85.20567,"z":-90.56768},"screenPosition":{"x":0.3982535,"y":0.66144043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.416,"y":86.57799,"z":-91.78836},"screenPosition":{"x":0.36854646,"y":0.6735908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.4052,"y":88.31242,"z":-92.92095},"screenPosition":{"x":0.34048414,"y":0.6896092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.5198,"y":89.976524,"z":-93.92261},"screenPosition":{"x":0.31552517,"y":0.7051152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.31042,"y":90.730736,"z":-94.1833},"screenPosition":{"x":0.30881295,"y":0.7124164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.65167,"y":90.64541,"z":-93.83393},"screenPosition":{"x":0.31689253,"y":0.7121282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.8357,"y":90.19338,"z":-92.61147},"screenPosition":{"x":0.34560436,"y":0.7094621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.85297,"y":89.19817,"z":-91.52114},"screenPosition":{"x":0.37188992,"y":0.70098156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.1494,"y":87.19735,"z":-90.08323},"screenPosition":{"x":0.40731505,"y":0.68271035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.36185,"y":85.88039,"z":-88.77506},"screenPosition":{"x":0.43896937,"y":0.6712752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.55362,"y":84.25667,"z":-87.46749},"screenPosition":{"x":0.47095743,"y":0.65667826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.5088,"y":82.34116,"z":-86.37894},"screenPosition":{"x":0.49819738,"y":0.63872576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.19254,"y":80.25958,"z":-85.55285},"screenPosition":{"x":0.5195488,"y":0.61864096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.80646,"y":78.42941,"z":-84.81366},"screenPosition":{"x":0.53861916,"y":0.6010027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.33276,"y":74.58675,"z":-86.04443},"screenPosition":{"x":0.51432055,"y":0.5594789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.0777,"y":77.2011,"z":-87.48116},"screenPosition":{"x":0.4782747,"y":0.5840602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.22903,"y":80.08768,"z":-87.51926},"screenPosition":{"x":0.47427848,"y":0.6137044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.01193,"y":82.01359,"z":-87.86505},"screenPosition":{"x":0.46419248,"y":0.63295734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.3838,"y":84.27623,"z":-88.6471},"screenPosition":{"x":0.44366556,"y":0.654976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.27786,"y":86.56426,"z":-88.90481},"screenPosition":{"x":0.43524724,"y":0.6780966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.1482,"y":89.10827,"z":-90.210594},"screenPosition":{"x":0.4022907,"y":0.70216966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.98203,"y":91.824196,"z":-89.54998},"screenPosition":{"x":0.4146546,"y":0.73115796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.1506,"y":93.71556,"z":-88.49774},"screenPosition":{"x":0.4369044,"y":0.7523402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.08264,"y":95.31515,"z":-87.66452},"screenPosition":{"x":0.4544757,"y":0.7700789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.55453,"y":97.80963,"z":-87.35386},"screenPosition":{"x":0.4589442,"y":0.7962615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.75336,"y":100.18424,"z":-85.2958},"screenPosition":{"x":0.5039508,"y":0.8239429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.84348,"y":98.374886,"z":-83.07109},"screenPosition":{"x":0.5573292,"y":0.8090371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.20483,"y":95.33721,"z":-83.51388},"screenPosition":{"x":0.55037814,"y":0.7770675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.57266,"y":93.03877,"z":-83.998924},"screenPosition":{"x":0.54165035,"y":0.7526358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.04825,"y":89.80048,"z":-83.30615},"screenPosition":{"x":0.56117094,"y":0.72043425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.1544,"y":88.90684,"z":-80.11848},"screenPosition":{"x":0.63583773,"y":0.71638286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.4626,"y":90.295395,"z":-78.89245},"screenPosition":{"x":0.66268146,"y":0.73264825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.83282,"y":92.60424,"z":-77.66464},"screenPosition":{"x":0.6885708,"y":0.75838554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.36032,"y":95.27979,"z":-77.30994},"screenPosition":{"x":0.6938771,"y":0.7864871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.63702,"y":98.09602,"z":-77.217094},"screenPosition":{"x":0.6928079,"y":0.81544524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.85165,"y":99.99197,"z":-77.126045},"screenPosition":{"x":0.6930307,"y":0.83526826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.36655,"y":103.05377,"z":-78.82404},"screenPosition":{"x":0.6508592,"y":0.86491525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.04758,"y":103.39965,"z":-81.18266},"screenPosition":{"x":0.5955539,"y":0.86378497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.88547,"y":102.24752,"z":-82.27716},"screenPosition":{"x":0.57144463,"y":0.84994143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.2567,"y":101.25105,"z":-83.851944},"screenPosition":{"x":0.5361569,"y":0.8372449},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.76758,"y":99.75178,"z":-85.252945},"screenPosition":{"x":0.5053992,"y":0.81964254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.02765,"y":98.39319,"z":-86.91582},"screenPosition":{"x":0.46846437,"y":0.80289716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.06448,"y":108.51514,"z":-89.56133},"screenPosition":{"x":0.39630243,"y":0.9028996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.85938,"y":106.79568,"z":-88.64716},"screenPosition":{"x":0.41929853,"y":0.88668287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.82108,"y":105.61941,"z":-87.60087},"screenPosition":{"x":0.44476172,"y":0.87626827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.96835,"y":103.9449,"z":-87.34197},"screenPosition":{"x":0.45255914,"y":0.8594567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.57275,"y":101.93824,"z":-87.608},"screenPosition":{"x":0.44865653,"y":0.8381909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.08667,"y":99.87622,"z":-87.96152},"screenPosition":{"x":0.44263685,"y":0.81659365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.5243,"y":97.32638,"z":-88.35967},"screenPosition":{"x":0.43619004,"y":0.7897154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.67932,"y":94.48018,"z":-88.01566},"screenPosition":{"x":0.44723764,"y":0.7609643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.33282,"y":91.91535,"z":-88.1954},"screenPosition":{"x":0.44584882,"y":0.7342984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.5166,"y":90.06894,"z":-89.9029},"screenPosition":{"x":0.40838838,"y":0.7125377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.42123,"y":89.22814,"z":-91.957985},"screenPosition":{"x":0.36181682,"y":0.70056623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.34534,"y":90.605034,"z":-94.13985},"screenPosition":{"x":0.30992985,"y":0.7112005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.32864,"y":94.85935,"z":-94.43744},"screenPosition":{"x":0.29833958,"y":0.7545248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.28445,"y":96.20296,"z":-92.556145},"screenPosition":{"x":0.340382,"y":0.771385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.10187,"y":96.13844,"z":-90.72127},"screenPosition":{"x":0.38287467,"y":0.77368194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.9826,"y":95.0833,"z":-88.75723},"screenPosition":{"x":0.4294251,"y":0.7659944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.38373,"y":92.70536,"z":-87.18898},"screenPosition":{"x":0.4682649,"y":0.74404335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.69598,"y":90.22586,"z":-87.71807},"screenPosition":{"x":0.45872408,"y":0.7176735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.04312,"y":87.62066,"z":-88.20371},"screenPosition":{"x":0.45030618,"y":0.6900977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.34766,"y":86.31285,"z":-88.81792},"screenPosition":{"x":0.43751937,"y":0.67565316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.22226,"y":86.383194,"z":-88.94885},"screenPosition":{"x":0.43442312,"y":0.67616355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.3653,"y":87.182365,"z":-89.86481},"screenPosition":{"x":0.41236567,"y":0.68291306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.38474,"y":89.400055,"z":-89.99158},"screenPosition":{"x":0.40703532,"y":0.70552677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.75964,"y":91.099945,"z":-89.72614},"screenPosition":{"x":0.4113332,"y":0.7234456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.28836,"y":91.86457,"z":-89.244064},"screenPosition":{"x":0.42165172,"y":0.7320908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.96622,"y":92.302864,"z":-87.58298},"screenPosition":{"x":0.45958987,"y":0.73927045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.32568,"y":96.34615,"z":-87.48776},"screenPosition":{"x":0.45740935,"y":0.78103656},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-379.60117,"y":101.07331,"z":-87.52229},"screenPosition":{"x":0.45149672,"y":0.8296194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.6095,"y":103.16072,"z":-86.64444},"screenPosition":{"x":0.4695346,"y":0.8525136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.59244,"y":105.55032,"z":-84.80481},"screenPosition":{"x":0.5094821,"y":0.880069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.30948,"y":103.389244,"z":-81.92542},"screenPosition":{"x":0.5783924,"y":0.8624794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.3787,"y":99.87873,"z":-82.63127},"screenPosition":{"x":0.5658709,"y":0.82522017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.42938,"y":99.27436,"z":-84.554825},"screenPosition":{"x":0.5220517,"y":0.8158979},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-379.25467,"y":98.508484,"z":-87.70203},"screenPosition":{"x":0.45017186,"y":0.8028257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.1404,"y":98.70911,"z":-88.83759},"screenPosition":{"x":0.4236445,"y":0.80317134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.6945,"y":99.17154,"z":-89.31729},"screenPosition":{"x":0.412128,"y":0.80705136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.9789,"y":100.81608,"z":-89.13934},"screenPosition":{"x":0.41438845,"y":0.82436347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.9777,"y":102.727,"z":-89.266716},"screenPosition":{"x":0.40937623,"y":0.8438198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.97522,"y":106.54885,"z":-89.521454},"screenPosition":{"x":0.39935178,"y":0.8827325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.93604,"y":109.148224,"z":-90.73975},"screenPosition":{"x":0.36837217,"y":0.9075121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.88693,"y":109.70639,"z":-90.82605},"screenPosition":{"x":0.36591974,"y":0.9128733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.62012,"y":108.931366,"z":-92.05089},"screenPosition":{"x":0.338293,"y":0.90316516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.20566,"y":107.96612,"z":-91.3974},"screenPosition":{"x":0.35444608,"y":0.89428806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.96567,"y":106.37237,"z":-90.52668},"screenPosition":{"x":0.37630168,"y":0.87929463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.90018,"y":104.1501,"z":-89.43872},"screenPosition":{"x":0.4038598,"y":0.8581848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.87912,"y":101.978615,"z":-87.302086},"screenPosition":{"x":0.45567787,"y":0.83910096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.14346,"y":106.5755,"z":-86.33199},"screenPosition":{"x":0.47306412,"y":0.8881531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.97705,"y":107.89703,"z":-88.60134},"screenPosition":{"x":0.41916648,"y":0.8980888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.23712,"y":106.538445,"z":-90.26421},"screenPosition":{"x":0.38220385,"y":0.8814048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.7449,"y":105.60191,"z":-92.7127},"screenPosition":{"x":0.32659388,"y":0.86784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.1322,"y":105.521164,"z":-93.324524},"screenPosition":{"x":0.31262794,"y":0.8659279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.53836,"y":104.398994,"z":-94.855865},"screenPosition":{"x":0.27834472,"y":0.8520048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.52417,"y":104.83146,"z":-94.89872},"screenPosition":{"x":0.27703306,"y":0.8562627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.9985,"y":103.5041,"z":-94.33331},"screenPosition":{"x":0.29139444,"y":0.8436402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.86322,"y":101.53323,"z":-93.332245},"screenPosition":{"x":0.31675717,"y":0.82490474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.8675,"y":99.05956,"z":-92.157394},"screenPosition":{"x":0.34651068,"y":0.80142057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.7322,"y":97.08871,"z":-91.15633},"screenPosition":{"x":0.3717878,"y":0.7827573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.10028,"y":96.184654,"z":-88.71141},"screenPosition":{"x":0.42929304,"y":0.7774004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.6465,"y":96.89472,"z":-97.27338},"screenPosition":{"x":0.22107345,"y":0.7657088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.37936,"y":94.254974,"z":-96.36099},"screenPosition":{"x":0.24506117,"y":0.74028695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.91235,"y":92.54593,"z":-94.70406},"screenPosition":{"x":0.294678,"y":0.73029137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.6328,"y":91.68683,"z":-92.91441},"screenPosition":{"x":0.33698457,"y":0.7243396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.81992,"y":90.67206,"z":-90.64447},"screenPosition":{"x":0.39056408,"y":0.7175612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.7016,"y":94.74074,"z":-90.024925},"screenPosition":{"x":0.4004864,"y":0.76042426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.4419,"y":97.96404,"z":-90.499275},"screenPosition":{"x":0.38603202,"y":0.79282403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.21524,"y":99.71347,"z":-91.850296},"screenPosition":{"x":0.35297528,"y":0.8085778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.425,"y":100.823975,"z":-93.72684},"screenPosition":{"x":0.3083159,"y":0.8170425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.9139,"y":100.928856,"z":-95.2558},"screenPosition":{"x":0.27285233,"y":0.81565464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8729,"y":102.18005,"z":-97.39421},"screenPosition":{"x":0.22205804,"y":0.8250779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4878,"y":105.4737,"z":-97.9995},"screenPosition":{"x":0.2045003,"y":0.8579902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.03903,"y":107.893265,"z":-96.59672},"screenPosition":{"x":0.2345512,"y":0.8849576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.84875,"y":109.00045,"z":-94.84695},"screenPosition":{"x":0.27362335,"y":0.8993139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.50284,"y":109.694725,"z":-94.23394},"screenPosition":{"x":0.28699446,"y":0.9074971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.1616,"y":109.78005,"z":-94.5833},"screenPosition":{"x":0.27905574,"y":0.907569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.36667,"y":111.49951,"z":-95.49747},"screenPosition":{"x":0.25582877,"y":0.9240281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.65576,"y":112.535095,"z":-96.28189},"screenPosition":{"x":0.23657231,"y":0.9334177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.95258,"y":112.39899,"z":-96.9812},"screenPosition":{"x":0.22074917,"y":0.9307058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.12057,"y":111.03125,"z":-96.72171},"screenPosition":{"x":0.22803058,"y":0.9172346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.62982,"y":109.57818,"z":-96.112854},"screenPosition":{"x":0.24367946,"y":0.90326613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.5217,"y":108.65331,"z":-95.15346},"screenPosition":{"x":0.26686165,"y":0.89529806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.6739,"y":107.764244,"z":-92.92696},"screenPosition":{"x":0.31930065,"y":0.88974285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.6575,"y":104.98381,"z":-91.7527},"screenPosition":{"x":0.34945792,"y":0.86302924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.58243,"y":102.58506,"z":-91.66997},"screenPosition":{"x":0.3539659,"y":0.83848155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.4867,"y":99.87955,"z":-91.58783},"screenPosition":{"x":0.35879207,"y":0.81077653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.0497,"y":97.25936,"z":-91.85505},"screenPosition":{"x":0.35556254,"y":0.78329563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.89532,"y":94.935524,"z":-92.86443},"screenPosition":{"x":0.3346255,"y":0.7578467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.1903,"y":93.45123,"z":-94.48386},"screenPosition":{"x":0.29885766,"y":0.73993427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.18417,"y":94.57672,"z":-96.57882},"screenPosition":{"x":0.24163872,"y":0.743914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.36856,"y":95.98942,"z":-97.49358},"screenPosition":{"x":0.2268155,"y":0.75962347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.7611,"y":98.55882,"z":-98.27504},"screenPosition":{"x":0.2039698,"y":0.78383505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.99338,"y":101.32427,"z":-99.23087},"screenPosition":{"x":0.17884664,"y":0.81046027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.04007,"y":103.00283,"z":-100.71552},"screenPosition":{"x":0.16059981,"y":0.82979804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.6006,"y":105.78962,"z":-99.92127},"screenPosition":{"x":0.15986407,"y":0.8580612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.33093,"y":106.97172,"z":-99.263626},"screenPosition":{"x":0.17365277,"y":0.8713639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.0394,"y":109.75799,"z":-98.73394},"screenPosition":{"x":0.18338001,"y":0.9005226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.72067,"y":111.49825,"z":-98.16259},"screenPosition":{"x":0.19421174,"y":0.9197148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.70056,"y":114.4506,"z":-97.370445},"screenPosition":{"x":0.2148433,"y":0.9554096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.66953,"y":116.10729,"z":-99.939186},"screenPosition":{"x":0.16437131,"y":0.965885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.46597,"y":115.97733,"z":-101.73654},"screenPosition":{"x":0.10732879,"y":0.959593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.97644,"y":112.613335,"z":-101.00031},"screenPosition":{"x":0.12739642,"y":0.9266092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.29358,"y":110.91927,"z":-99.56181},"screenPosition":{"x":0.16248782,"y":0.9114998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.57584,"y":109.350914,"z":-98.16675},"screenPosition":{"x":0.19643873,"y":0.89761364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.81668,"y":107.16902,"z":-96.77288},"screenPosition":{"x":0.23102593,"y":0.8774129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.86517,"y":103.351746,"z":-97.479324},"screenPosition":{"x":0.21882261,"y":0.8369964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.81644,"y":105.774635,"z":-99.70285},"screenPosition":{"x":0.16479288,"y":0.85833806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.68982,"y":107.755905,"z":-99.96115},"screenPosition":{"x":0.1566773,"y":0.8783069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.9712,"y":109.96318,"z":-100.83069},"screenPosition":{"x":0.13418542,"y":0.899615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.16208,"y":112.115105,"z":-101.78771},"screenPosition":{"x":0.10973067,"y":0.9202123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9243,"y":113.73425,"z":-102.1341},"screenPosition":{"x":0.09997037,"y":0.9363131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.9675,"y":115.69596,"z":-101.2128},"screenPosition":{"x":0.11969278,"y":0.95757014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.5259,"y":116.8734,"z":-101.141685},"screenPosition":{"x":0.13574047,"y":0.97182727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.6016,"y":120.17368,"z":-102.85134},"screenPosition":{"x":0.07604617,"y":1.0013751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9916,"y":117.304695,"z":-102.30194},"screenPosition":{"x":0.09975986,"y":0.97929496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.37854,"y":115.35923,"z":-100.77654},"screenPosition":{"x":0.12959935,"y":0.95522326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.69543,"y":112.270775,"z":-102.268005},"screenPosition":{"x":0.098940015,"y":0.92073154},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-364.22205,"y":118.72196,"z":-104.177895},"screenPosition":{"x":0.054238137,"y":0.9887429},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-055451/brain-CB2B04-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.2537940821151101,-0.9141922844666255,0.31597631383545394,0.0,-0.6580730493135711,0.40260974317620823,0.6362745134505434,0.0,-0.7088923935622999,-0.04645279024214016,-0.7037852745178976,0.0,-470.9037103313084,77.21021628960197,-174.63290294097087,1.0]},"baseImage":"20190825-055451/base.webp","version":0,"savedAt":1.566712888803E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-061015-v0.json b/data/mapping/BAAAHS/dwayman/20190825-061015-v0.json new file mode 100644 index 0000000000..c6af770a77 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-061015-v0.json @@ -0,0 +1 @@ +{"startedAt":1.56671341569E12,"surfaces":[{"brainId":"CB61B4","panelName":"R7D","pixels":[{"modelPosition":{"x":-403.2707,"y":91.1121,"z":-61.634735},"screenPosition":{"x":0.08249205,"y":0.9719488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.03122,"y":89.21159,"z":-61.467884},"screenPosition":{"x":0.091657095,"y":0.94566333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.68256,"y":86.759384,"z":-61.626415},"screenPosition":{"x":0.096482225,"y":0.9134979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.3062,"y":84.45351,"z":-62.194046},"screenPosition":{"x":0.08936266,"y":0.8824379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.02487,"y":82.66072,"z":-62.53825},"screenPosition":{"x":0.08653648,"y":0.8578865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.69907,"y":80.40016,"z":-62.722443},"screenPosition":{"x":0.08992035,"y":0.8287525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.35162,"y":77.863464,"z":-62.77228},"screenPosition":{"x":0.09809085,"y":0.79570085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.02338,"y":75.77189,"z":-63.17385},"screenPosition":{"x":0.09478843,"y":0.7677478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.718,"y":73.871956,"z":-63.601086},"screenPosition":{"x":0.09004965,"y":0.7420583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.3946,"y":71.442406,"z":-63.567898},"screenPosition":{"x":0.10012829,"y":0.7107364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.04352,"y":69.15919,"z":-63.94381},"screenPosition":{"x":0.098262675,"y":0.68034357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.74176,"y":67.005775,"z":-64.04497},"screenPosition":{"x":0.10355958,"y":0.6521715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.49536,"y":64.55972,"z":-63.327938},"screenPosition":{"x":0.13269597,"y":0.6213135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.32233,"y":62.350636,"z":-62.253124},"screenPosition":{"x":0.17100325,"y":0.59518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.2467,"y":60.48566,"z":-60.73751},"screenPosition":{"x":0.22024031,"y":0.5738991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.21313,"y":59.257454,"z":-59.59929},"screenPosition":{"x":0.25656763,"y":0.5601566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.1567,"y":57.837605,"z":-58.435402},"screenPosition":{"x":0.29433176,"y":0.54397434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.05826,"y":55.780987,"z":-56.894127},"screenPosition":{"x":0.3450056,"y":0.5202536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.95737,"y":53.893353,"z":-55.57023},"screenPosition":{"x":0.3889887,"y":0.49830547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.6352,"y":51.37932,"z":-55.428352},"screenPosition":{"x":0.40241316,"y":0.465921},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.16507,"y":48.47584,"z":-56.110714},"screenPosition":{"x":0.39435005,"y":0.4268744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.63474,"y":46.20298,"z":-58.046036},"screenPosition":{"x":0.34901607,"y":0.3935837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.15234,"y":45.941414,"z":-61.90607},"screenPosition":{"x":0.24246866,"y":0.38264668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.45514,"y":49.80732,"z":-63.78699},"screenPosition":{"x":0.17554991,"y":0.42924437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.98425,"y":52.164673,"z":-61.96036},"screenPosition":{"x":0.21752784,"y":0.46340135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.3547,"y":53.096024,"z":-59.84541},"screenPosition":{"x":0.27285743,"y":0.4795325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.75406,"y":53.796562,"z":-57.21267},"screenPosition":{"x":0.34361178,"y":0.49385408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.37695,"y":56.75151,"z":-55.271305},"screenPosition":{"x":0.38634437,"y":0.53580886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.4237,"y":58.847298,"z":-57.304707},"screenPosition":{"x":0.32165074,"y":0.5587632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.23474,"y":59.533592,"z":-59.73364},"screenPosition":{"x":0.25173184,"y":0.5633703},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.40277,"y":63.87764,"z":-63.33398},"screenPosition":{"x":0.13514769,"y":0.61291575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.10388,"y":66.73158,"z":-60.60008},"screenPosition":{"x":0.2004834,"y":0.65511614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.3733,"y":67.572296,"z":-59.252003},"screenPosition":{"x":0.23490825,"y":0.66885173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.76175,"y":69.03326,"z":-57.597473},"screenPosition":{"x":0.27548155,"y":0.69104886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.02994,"y":69.95846,"z":-56.35809},"screenPosition":{"x":0.30651197,"y":0.7054785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.57947,"y":72.67644,"z":-54.774498},"screenPosition":{"x":0.34037304,"y":0.7438679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.07608,"y":75.51808,"z":-53.791725},"screenPosition":{"x":0.35678813,"y":0.7821783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.24304,"y":78.149635,"z":-55.409985},"screenPosition":{"x":0.30205122,"y":0.8137355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.85806,"y":78.232185,"z":-58.829216},"screenPosition":{"x":0.20651515,"y":0.80815876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.30246,"y":75.93666,"z":-60.956257},"screenPosition":{"x":0.15592723,"y":0.77420086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.78668,"y":72.649895,"z":-61.5873},"screenPosition":{"x":0.1507377,"y":0.7302747},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-399.55963,"y":68.851974,"z":-59.13122},"screenPosition":{"x":0.23344997,"y":0.6857112},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.70035,"y":59.181053,"z":-55.304493},"screenPosition":{"x":0.37639806,"y":0.56743616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.21933,"y":57.038006,"z":-56.965065},"screenPosition":{"x":0.3382934,"y":0.53644586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.8525,"y":55.853176,"z":-58.75395},"screenPosition":{"x":0.29293793,"y":0.5175748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.27652,"y":53.197025,"z":-60.637947},"screenPosition":{"x":0.25046518,"y":0.47938493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.8519,"y":52.47383,"z":-63.462402},"screenPosition":{"x":0.17454194,"y":0.46451676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.98636,"y":55.58967,"z":-65.92452},"screenPosition":{"x":0.0942315,"y":0.50020736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.5949,"y":57.761528,"z":-63.196667},"screenPosition":{"x":0.16201808,"y":0.53372717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.743,"y":56.353977,"z":-60.28165},"screenPosition":{"x":0.24850452,"y":0.52111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.27893,"y":53.02804,"z":-60.420567},"screenPosition":{"x":0.2571683,"y":0.47763193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.74738,"y":50.839672,"z":-62.464577},"screenPosition":{"x":0.20848891,"y":0.4452275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.34442,"y":50.392612,"z":-65.423386},"screenPosition":{"x":0.12777114,"y":0.43366584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.515,"y":52.770687,"z":-66.715576},"screenPosition":{"x":0.06459941,"y":0.45972332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.08377,"y":55.93379,"z":-65.48372},"screenPosition":{"x":0.105203666,"y":0.505385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.90262,"y":40.154854,"z":-57.333565},"screenPosition":{"x":0.3916483,"y":0.31639668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.77408,"y":38.413544,"z":-56.418766},"screenPosition":{"x":0.42368668,"y":0.29555392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.32437,"y":35.870697,"z":-57.344173},"screenPosition":{"x":0.4074788,"y":0.26071787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.76636,"y":33.744156,"z":-59.68859},"screenPosition":{"x":0.35016313,"y":0.22853404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.5184,"y":34.976574,"z":-63.26179},"screenPosition":{"x":0.24606049,"y":0.23759636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.78522,"y":37.783257,"z":-64.22187},"screenPosition":{"x":0.20874666,"y":0.27219158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.28424,"y":40.455917,"z":-63.021713},"screenPosition":{"x":0.23206392,"y":0.3092256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.74606,"y":42.153847,"z":-61.009407},"screenPosition":{"x":0.28165066,"y":0.3351648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.09973,"y":42.471096,"z":-58.325348},"screenPosition":{"x":0.35512745,"y":0.3444823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.9592,"y":39.777714,"z":-56.406677},"screenPosition":{"x":0.41868675,"y":0.31324804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.83185,"y":37.951912,"z":-55.38319},"screenPosition":{"x":0.45426682,"y":0.2915706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.25464,"y":35.380253,"z":-57.375877},"screenPosition":{"x":0.40846106,"y":0.25428662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.9046,"y":34.809532,"z":-59.73387},"screenPosition":{"x":0.34494194,"y":0.24228679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.0427,"y":37.671894,"z":-61.86992},"screenPosition":{"x":0.27466762,"y":0.27531853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.4659,"y":40.276573,"z":-61.244923},"screenPosition":{"x":0.28225896,"y":0.31037185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.97946,"y":41.935333,"z":-58.74049},"screenPosition":{"x":0.34566462,"y":0.33675167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.2466,"y":41.148037,"z":-55.519024},"screenPosition":{"x":0.43844056,"y":0.33282796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.02667,"y":38.64015,"z":-54.50158},"screenPosition":{"x":0.4964433,"y":0.29533565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.47592,"y":36.00666,"z":-56.19386},"screenPosition":{"x":0.45166373,"y":0.26024455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.98886,"y":34.286068,"z":-58.397884},"screenPosition":{"x":0.384019,"y":0.23808056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.5992,"y":32.909595,"z":-60.161102},"screenPosition":{"x":0.34020272,"y":0.21677355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.3381,"y":33.274433,"z":-62.83912},"screenPosition":{"x":0.26424563,"y":0.21630546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.4786,"y":35.967815,"z":-64.75779},"screenPosition":{"x":0.20066208,"y":0.24756463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.08112,"y":38.562134,"z":-62.573383},"screenPosition":{"x":0.25172177,"y":0.28551584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.08612,"y":36.427177,"z":-60.04785},"screenPosition":{"x":0.33010218,"y":0.2626914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.7423,"y":33.637005,"z":-59.77162},"screenPosition":{"x":0.34826693,"y":0.22698087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.25766,"y":31.74743,"z":-61.758266},"screenPosition":{"x":0.3000776,"y":0.19857293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.8114,"y":30.748096,"z":-64.44837},"screenPosition":{"x":0.22894777,"y":0.18035588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.63803,"y":32.132988,"z":-67.55511},"screenPosition":{"x":0.13720737,"y":0.19230583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.07565,"y":35.520756,"z":-67.7166},"screenPosition":{"x":0.1199443,"y":0.23600297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.5134,"y":37.11153,"z":-65.78732},"screenPosition":{"x":0.16768011,"y":0.26042083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.83575,"y":37.82858,"z":-63.83843},"screenPosition":{"x":0.21923812,"y":0.27352005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.11606,"y":37.90886,"z":-61.512142},"screenPosition":{"x":0.2836986,"y":0.2790819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.2569,"y":37.00826,"z":-59.24927},"screenPosition":{"x":0.35000935,"y":0.27176854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.25464,"y":35.380253,"z":-57.375877},"screenPosition":{"x":0.40846106,"y":0.25428662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.8205,"y":33.536003,"z":-58.979084},"screenPosition":{"x":0.37062395,"y":0.22720985},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-393.5434,"y":28.025906,"z":-63.596985},"screenPosition":{"x":0.26291624,"y":0.14664696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3401,"y":27.929113,"z":-65.239426},"screenPosition":{"x":0.21753928,"y":0.14219557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.50342,"y":30.814138,"z":-67.183754},"screenPosition":{"x":0.15251891,"y":0.17589451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.88098,"y":33.035526,"z":-66.50744},"screenPosition":{"x":0.16298385,"y":0.20606826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.2767,"y":33.98954,"z":-64.20077},"screenPosition":{"x":0.22362939,"y":0.22294766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.27927,"y":32.023567,"z":-61.892616},"screenPosition":{"x":0.29531902,"y":0.20189579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9775,"y":29.870157,"z":-61.99378},"screenPosition":{"x":0.3005852,"y":0.1737315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.4965,"y":27.727108,"z":-63.654354},"screenPosition":{"x":0.26242453,"y":0.1426635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.15735,"y":26.395958,"z":-65.034134},"screenPosition":{"x":0.22903368,"y":0.122677244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.73654,"y":23.622295,"z":-65.44175},"screenPosition":{"x":0.22962719,"y":0.08624751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.36124,"y":23.028912,"z":-67.99146},"screenPosition":{"x":0.15936,"y":0.07318432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.41644,"y":24.533255,"z":-69.26404},"screenPosition":{"x":0.10867619,"y":0.09108772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.98398,"y":27.78085,"z":-68.14087},"screenPosition":{"x":0.13729328,"y":0.1346272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.22934,"y":28.514406,"z":-66.875824},"screenPosition":{"x":0.16976051,"y":0.14661704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.601,"y":29.361265,"z":-64.65218},"screenPosition":{"x":0.22849748,"y":0.16194293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.92697,"y":29.824837,"z":-62.377216},"screenPosition":{"x":0.29010803,"y":0.17238925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.31543,"y":31.2858,"z":-60.722687},"screenPosition":{"x":0.33068132,"y":0.19458638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.65457,"y":32.61695,"z":-59.342907},"screenPosition":{"x":0.38532802,"y":0.20826113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.9444,"y":33.818287,"z":-58.23787},"screenPosition":{"x":0.40874177,"y":0.22660911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.35205,"y":35.724373,"z":-56.935074},"screenPosition":{"x":0.41932774,"y":0.25960314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.90643,"y":38.104385,"z":-54.91672},"screenPosition":{"x":0.48669824,"y":0.28769904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.22516,"y":39.07491,"z":-53.2939},"screenPosition":{"x":0.5121291,"y":0.3076277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.34628,"y":52.578255,"z":-42.186962},"screenPosition":{"x":0.7693427,"y":0.5091909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.58517,"y":53.62788,"z":-41.345135},"screenPosition":{"x":0.78714097,"y":0.52492934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.19476,"y":56.670574,"z":-39.485474},"screenPosition":{"x":0.8336712,"y":0.5596014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.50363,"y":60.11402,"z":-40.822945},"screenPosition":{"x":0.77625805,"y":0.6077975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.06934,"y":60.066757,"z":-44.516922},"screenPosition":{"x":0.6735595,"y":0.6000001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.56186,"y":57.98554,"z":-46.477905},"screenPosition":{"x":0.6266047,"y":0.5690316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.11682,"y":56.901714,"z":-49.059322},"screenPosition":{"x":0.55886817,"y":0.5499714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.6671,"y":54.358868,"z":-49.984726},"screenPosition":{"x":0.5425568,"y":0.515066},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-397.8231,"y":48.980526,"z":-51.017338},"screenPosition":{"x":0.5342388,"y":0.44330668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.071,"y":47.748108,"z":-47.44414},"screenPosition":{"x":0.6384549,"y":0.43427354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.56174,"y":49.21522,"z":-44.914047},"screenPosition":{"x":0.7011534,"y":0.455755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.13654,"y":51.955864,"z":-43.138737},"screenPosition":{"x":0.7479187,"y":0.49240226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.3817,"y":54.486412,"z":-43.964462},"screenPosition":{"x":0.70997274,"y":0.52857894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.21198,"y":55.617825,"z":-46.745125},"screenPosition":{"x":0.6282684,"y":0.53787005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.7898,"y":54.725647,"z":-49.352203},"screenPosition":{"x":0.5584691,"y":0.5208611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.39062,"y":52.22812,"z":-49.89417},"screenPosition":{"x":0.5533408,"y":0.4877099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.00943,"y":50.260204,"z":-50.89656},"screenPosition":{"x":0.5322112,"y":0.45986322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.85214,"y":46.95272,"z":-48.40878},"screenPosition":{"x":0.614587,"y":0.42206463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.29413,"y":44.82618,"z":-50.7532},"screenPosition":{"x":0.5573083,"y":0.3898793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.7842,"y":42.913948,"z":-52.93156},"screenPosition":{"x":0.50384676,"y":0.36080095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.4641,"y":43.824905,"z":-56.753845},"screenPosition":{"x":0.39393207,"y":0.36518782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.75497,"y":46.738743,"z":-57.630894},"screenPosition":{"x":0.358376,"y":0.4012319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.426,"y":49.907993,"z":-55.523468},"screenPosition":{"x":0.40530825,"y":0.44662178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.74124,"y":49.335003,"z":-52.135944},"screenPosition":{"x":0.50180936,"y":0.4457654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.45038,"y":46.421165,"z":-51.2589},"screenPosition":{"x":0.5372146,"y":0.40961668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.98267,"y":43.348705,"z":-51.72388},"screenPosition":{"x":0.53584224,"y":0.36879748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.40424,"y":40.861538,"z":-53.82526},"screenPosition":{"x":0.4866911,"y":0.3323998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.02774,"y":40.352646,"z":-56.48366},"screenPosition":{"x":0.41433975,"y":0.32055166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.99988,"y":42.29596,"z":-58.983532},"screenPosition":{"x":0.3375366,"y":0.34096095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.07428,"y":44.245422,"z":-60.607838},"screenPosition":{"x":0.28504664,"y":0.36317092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.10303,"y":45.8116,"z":-62.18082},"screenPosition":{"x":0.23533781,"y":0.38045853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.13052,"y":47.462265,"z":-63.86249},"screenPosition":{"x":0.18228363,"y":0.39863247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.82498,"y":47.35932,"z":-66.3805},"screenPosition":{"x":0.11254551,"y":0.3923985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.35364,"y":44.54034,"z":-67.171555},"screenPosition":{"x":0.07740502,"y":0.3526238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.0844,"y":41.902637,"z":-66.428856},"screenPosition":{"x":0.13176012,"y":0.32141557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.20602,"y":40.55692,"z":-63.81425},"screenPosition":{"x":0.20964725,"y":0.30901748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.60538,"y":41.257458,"z":-61.18151},"screenPosition":{"x":0.28024936,"y":0.32319757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.9746,"y":42.2733,"z":-59.17525},"screenPosition":{"x":0.3323159,"y":0.34030867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.52658,"y":44.8223,"z":-57.37428},"screenPosition":{"x":0.37292692,"y":0.37695327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.82108,"y":47.48266,"z":-57.92526},"screenPosition":{"x":0.34746027,"y":0.41037336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.79688,"y":49.172497,"z":-60.099056},"screenPosition":{"x":0.28065032,"y":0.42816892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.3458,"y":48.51113,"z":-63.223923},"screenPosition":{"x":0.1961154,"y":0.41350025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.7554,"y":45.07189,"z":-64.321434},"screenPosition":{"x":0.17850943,"y":0.36668614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.61612,"y":42.294018,"z":-62.29407},"screenPosition":{"x":0.24543837,"y":0.3345407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.90488,"y":41.78286,"z":-59.206955},"screenPosition":{"x":0.33334014,"y":0.3339034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.42087,"y":43.272633,"z":-56.48514},"screenPosition":{"x":0.40352854,"y":0.3585503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.8465,"y":45.70833,"z":-55.64277},"screenPosition":{"x":0.41781062,"y":0.39183104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.98822,"y":48.31722,"z":-57.452747},"screenPosition":{"x":0.3572984,"y":0.42200315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.5131,"y":47.5487,"z":-60.66064},"screenPosition":{"x":0.27112895,"y":0.40598175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.85178,"y":43.70351,"z":-61.898544},"screenPosition":{"x":0.25114262,"y":0.35362086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.17065,"y":42.877045,"z":-58.18495},"screenPosition":{"x":0.35746104,"y":0.3500046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.4077,"y":42.405052,"z":-55.589962},"screenPosition":{"x":0.43165767,"y":0.3489949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.8586,"y":44.86341,"z":-54.555866},"screenPosition":{"x":0.45126435,"y":0.38296816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.07855,"y":47.371296,"z":-55.57331},"screenPosition":{"x":0.41347876,"y":0.41357008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.86313,"y":48.119423,"z":-58.30265},"screenPosition":{"x":0.33458152,"y":0.41792938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.2295,"y":44.12791,"z":-59.131454},"screenPosition":{"x":0.32660645,"y":0.3645153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.33917,"y":41.83012,"z":-55.512978},"screenPosition":{"x":0.43593454,"y":0.3416662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.91763,"y":44.317287,"z":-53.4116},"screenPosition":{"x":0.48518986,"y":0.37809855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.26144,"y":47.10746,"z":-53.687828},"screenPosition":{"x":0.46698323,"y":0.4138091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.78632,"y":53.18213,"z":-47.5875},"screenPosition":{"x":0.6139864,"y":0.5045893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.094,"y":56.71007,"z":-49.03366},"screenPosition":{"x":0.5604086,"y":0.5476032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.94708,"y":58.03313,"z":-51.839985},"screenPosition":{"x":0.47727636,"y":0.5593401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.30722,"y":56.261066,"z":-55.30301},"screenPosition":{"x":0.38750896,"y":0.5295846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.7698,"y":52.698166,"z":-55.799698},"screenPosition":{"x":0.3869969,"y":0.48224196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.5511,"y":50.10579,"z":-54.673565},"screenPosition":{"x":0.42791957,"y":0.45063624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.82187,"y":49.065018,"z":-51.12603},"screenPosition":{"x":0.5309168,"y":0.44420415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.36673,"y":50.323975,"z":-47.88643},"screenPosition":{"x":0.6164311,"y":0.4668771},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.91507,"y":53.12645,"z":-46.411526},"screenPosition":{"x":0.64694685,"y":0.50615275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.32254,"y":56.829525,"z":-47.1995},"screenPosition":{"x":0.6103567,"y":0.5522946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.4198,"y":58.97063,"z":-48.84947},"screenPosition":{"x":0.5568906,"y":0.5772307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.0601,"y":59.075844,"z":-52.07698},"screenPosition":{"x":0.466747,"y":0.57242537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.91562,"y":60.22992,"z":-54.665924},"screenPosition":{"x":0.39029664,"y":0.58238363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.26987,"y":57.083324,"z":-56.581627},"screenPosition":{"x":0.34871098,"y":0.5376713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.80338,"y":53.926376,"z":-56.937923},"screenPosition":{"x":0.35068253,"y":0.49597967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.8108,"y":51.622433,"z":-54.19501},"screenPosition":{"x":0.4355867,"y":0.47129428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.11758,"y":51.640884,"z":-51.568317},"screenPosition":{"x":0.5089289,"y":0.47682542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.58667,"y":52.831863,"z":-48.90387},"screenPosition":{"x":0.5786177,"y":0.4974636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.19867,"y":56.547237,"z":-47.940716},"screenPosition":{"x":0.59146935,"y":0.5476192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.3897,"y":59.28594,"z":-49.47595},"screenPosition":{"x":0.5383937,"y":0.58021283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.38226,"y":61.589878,"z":-52.218857},"screenPosition":{"x":0.45332253,"y":0.6048098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.83377,"y":60.584396,"z":-55.78453},"screenPosition":{"x":0.35780793,"y":0.5848135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.25775,"y":57.928246,"z":-57.66853},"screenPosition":{"x":0.31520057,"y":0.54643357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.89474,"y":54.69295,"z":-57.04057},"screenPosition":{"x":0.3447204,"y":0.5054971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.90338,"y":52.30452,"z":-54.188965},"screenPosition":{"x":0.43319285,"y":0.48016506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.26187,"y":52.2838,"z":-51.070145},"screenPosition":{"x":0.5198558,"y":0.48582977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.09277,"y":56.794563,"z":-49.14235},"screenPosition":{"x":0.55707204,"y":0.54849553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.21045,"y":59.2963,"z":-51.03536},"screenPosition":{"x":0.49490923,"y":0.57730097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.70883,"y":58.58961,"z":-54.543663},"screenPosition":{"x":0.39988247,"y":0.56131184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.35535,"y":56.475372,"z":-55.13695},"screenPosition":{"x":0.39120007,"y":0.5325632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.71808,"y":52.73734,"z":-56.29183},"screenPosition":{"x":0.37324837,"y":0.48188418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.10788,"y":52.31682,"z":-52.437836},"screenPosition":{"x":0.4821659,"y":0.48391575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.77527,"y":55.739548,"z":-50.656483},"screenPosition":{"x":0.5188791,"y":0.5318452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2177,"y":58.78935,"z":-50.383217},"screenPosition":{"x":0.51499754,"y":0.57199717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.15143,"y":59.84242,"z":-52.179626},"screenPosition":{"x":0.4606152,"y":0.5818151},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2499,"y":61.899036,"z":-53.7209},"screenPosition":{"x":0.4103259,"y":0.60590523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.13068,"y":63.07577,"z":-56.118126},"screenPosition":{"x":0.3388168,"y":0.6160393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.88516,"y":64.139206,"z":-59.473946},"screenPosition":{"x":0.24166343,"y":0.6238202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.98456,"y":59.138,"z":-61.433445},"screenPosition":{"x":0.20593674,"y":0.555038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.473,"y":58.977108,"z":-57.02996},"screenPosition":{"x":0.329087,"y":0.5613811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.04053,"y":62.224705,"z":-55.90679},"screenPosition":{"x":0.3482221,"y":0.60588527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.28088,"y":65.093216,"z":-57.167274},"screenPosition":{"x":0.30230895,"y":0.64069957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.84537,"y":65.13045,"z":-60.969944},"screenPosition":{"x":0.196265,"y":0.63378847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.23944,"y":60.992615,"z":-61.389652},"screenPosition":{"x":0.20011476,"y":0.5790444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.83844,"y":62.04342,"z":-57.44054},"screenPosition":{"x":0.30619055,"y":0.6005476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.2243,"y":65.47035,"z":-58.094162},"screenPosition":{"x":0.2750742,"y":0.6437966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.08224,"y":66.455444,"z":-60.46573},"screenPosition":{"x":0.20531462,"y":0.6519823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.43152,"y":65.44381,"z":-64.90697},"screenPosition":{"x":0.08543887,"y":0.63020337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.8703,"y":68.747086,"z":-64.95977},"screenPosition":{"x":0.07152117,"y":0.6730142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.41986,"y":71.46507,"z":-63.37618},"screenPosition":{"x":0.10538063,"y":0.7113483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.6422,"y":73.80397,"z":-64.17624},"screenPosition":{"x":0.07428738,"y":0.74023294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.04138,"y":76.3015,"z":-63.634274},"screenPosition":{"x":0.07998249,"y":0.7731368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.52966,"y":77.9376,"z":-61.32156},"screenPosition":{"x":0.13821384,"y":0.799485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.94217,"y":79.505714,"z":-59.584003},"screenPosition":{"x":0.18068333,"y":0.823153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.2344,"y":80.53807,"z":-58.26159},"screenPosition":{"x":0.21363471,"y":0.8392188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.8862,"y":83.2622,"z":-55.802433},"screenPosition":{"x":0.27185693,"y":0.8793907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.12292,"y":86.38419,"z":-57.38899},"screenPosition":{"x":0.21590768,"y":0.9168639},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-400.95273,"y":82.339264,"z":-62.787334},"screenPosition":{"x":0.0808063,"y":0.85381764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.14255,"y":85.16246,"z":-64.43126},"screenPosition":{"x":0.014129634,"y":0.88182676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.19336,"y":91.88857,"z":-58.24215},"screenPosition":{"x":0.17253393,"y":0.9875326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.5008,"y":90.75757,"z":-55.61243},"screenPosition":{"x":0.2504417,"y":0.9782504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.46588,"y":88.86883,"z":-53.610878},"screenPosition":{"x":0.3132689,"y":0.9575819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.5038,"y":87.59512,"z":-51.993103},"screenPosition":{"x":0.36318138,"y":0.94422317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.499,"y":86.22627,"z":-50.45317},"screenPosition":{"x":0.41122922,"y":0.92943704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.5369,"y":84.953255,"z":-48.836224},"screenPosition":{"x":0.4611159,"y":0.9160856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.5346,"y":83.49985,"z":-47.188843},"screenPosition":{"x":0.51188236,"y":0.89945924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.57254,"y":82.22754,"z":-45.57277},"screenPosition":{"x":0.56233853,"y":0.88706875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.52753,"y":80.678,"z":-44.001995},"screenPosition":{"x":0.61187494,"y":0.86995804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2762,"y":78.38937,"z":-42.487648},"screenPosition":{"x":0.6623607,"y":0.84294397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.75156,"y":76.02149,"z":-42.07427},"screenPosition":{"x":0.6821274,"y":0.8125007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.10367,"y":73.44463,"z":-42.510544},"screenPosition":{"x":0.6890181,"y":0.7838915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.80188,"y":71.29122,"z":-42.61171},"screenPosition":{"x":0.6843243,"y":0.74952435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.37744,"y":68.771034,"z":-43.345394},"screenPosition":{"x":0.67338765,"y":0.71535736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.125,"y":66.74744,"z":-43.17181},"screenPosition":{"x":0.68549496,"y":0.68913215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.94592,"y":64.96081,"z":-42.64045},"screenPosition":{"x":0.70737755,"y":0.66722876},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-400.1536,"y":59.543297,"z":-43.180935},"screenPosition":{"x":0.71273893,"y":0.59579766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.66776,"y":57.738216,"z":-45.276268},"screenPosition":{"x":0.661186,"y":0.5682728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.25766,"y":56.001114,"z":-46.796448},"screenPosition":{"x":0.62517184,"y":0.54261786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.81628,"y":54.663815,"z":-49.051792},"screenPosition":{"x":0.5669179,"y":0.5205557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.35324,"y":53.050377,"z":-51.17279},"screenPosition":{"x":0.51432097,"y":0.4957074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.05963,"y":53.899506,"z":-54.694664},"screenPosition":{"x":0.41310212,"y":0.49987805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.5249,"y":57.14095,"z":-54.44706},"screenPosition":{"x":0.40755543,"y":0.5422055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.99744,"y":59.87544,"z":-53.547318},"screenPosition":{"x":0.42278534,"y":0.57995385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.59872,"y":62.554253,"z":-51.4716},"screenPosition":{"x":0.4704997,"y":0.61879134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.97296,"y":61.43514,"z":-46.939808},"screenPosition":{"x":0.6009263,"y":0.61306536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.53418,"y":58.131863,"z":-46.887},"screenPosition":{"x":0.61484396,"y":0.5702545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.0616,"y":55.39737,"z":-47.786747},"screenPosition":{"x":0.60009015,"y":0.5329805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.60223,"y":53.530457,"z":-49.581673},"screenPosition":{"x":0.5571365,"y":0.50523657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.40604,"y":54.723705,"z":-52.662743},"screenPosition":{"x":0.4665971,"y":0.5145661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.24597,"y":55.179184,"z":-54.573887},"screenPosition":{"x":0.41149452,"y":0.5165885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.36365,"y":57.68092,"z":-56.466892},"screenPosition":{"x":0.34941772,"y":0.54536355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.00635,"y":57.617146,"z":-59.477024},"screenPosition":{"x":0.26615345,"y":0.5390848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.458,"y":54.814674,"z":-60.951927},"screenPosition":{"x":0.23563777,"y":0.49980912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.9867,"y":51.99569,"z":-61.74298},"screenPosition":{"x":0.22422928,"y":0.4616488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.9436,"y":49.646427,"z":-59.383507},"screenPosition":{"x":0.2986149,"y":0.43553877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.0604,"y":48.638676,"z":-57.20366},"screenPosition":{"x":0.36317468,"y":0.42677376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.29865,"y":48.08219,"z":-54.49998},"screenPosition":{"x":0.44069204,"y":0.4248927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.83865,"y":49.67912,"z":-51.69514},"screenPosition":{"x":0.5124619,"y":0.45091927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.41223,"y":52.504253,"z":-50.028522},"screenPosition":{"x":0.54849344,"y":0.49099836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.59964,"y":55.496433,"z":-51.889824},"screenPosition":{"x":0.48544684,"y":0.52628845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.10287,"y":54.45178,"z":-54.963367},"screenPosition":{"x":0.40341556,"y":0.5064091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.71338,"y":51.278316,"z":-54.635815},"screenPosition":{"x":0.42466795,"y":0.4660083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.81097,"y":49.825443,"z":-52.10424},"screenPosition":{"x":0.50064653,"y":0.4520898},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.7898,"y":54.725647,"z":-49.352203},"screenPosition":{"x":0.5584691,"y":0.5208611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.33508,"y":54.317757,"z":-52.80314},"screenPosition":{"x":0.46445253,"y":0.5091999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.90338,"y":52.30452,"z":-54.188965},"screenPosition":{"x":0.43319285,"y":0.48016506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.4706,"y":48.578785,"z":-53.592712},"screenPosition":{"x":0.46408817,"y":0.43310833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.61267,"y":47.593693,"z":-51.221146},"screenPosition":{"x":0.53384775,"y":0.42492262},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-398.32,"y":48.228188,"z":-45.853024},"screenPosition":{"x":0.6816659,"y":0.44048378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.7685,"y":50.85553,"z":-45.03631},"screenPosition":{"x":0.69380355,"y":0.47932506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.32532,"y":53.06656,"z":-42.80058},"screenPosition":{"x":0.7635076,"y":0.5046183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.621,"y":55.64243,"z":-43.242867},"screenPosition":{"x":0.7256638,"y":0.5449756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.86377,"y":58.341957,"z":-44.28597},"screenPosition":{"x":0.6854571,"y":0.5774326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.88525,"y":60.415085,"z":-46.511093},"screenPosition":{"x":0.6167096,"y":0.60064733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.30786,"y":59.640415,"z":-50.59455},"screenPosition":{"x":0.5054799,"y":0.58227813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.80417,"y":55.50873,"z":-50.138695},"screenPosition":{"x":0.5340368,"y":0.5297631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1694,"y":71.75746,"z":-40.00571},"screenPosition":{"x":0.758643,"y":0.76315427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.74728,"y":71.56467,"z":-37.010754},"screenPosition":{"x":0.8399641,"y":0.76446587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2597,"y":71.2868,"z":-34.460278},"screenPosition":{"x":0.91211444,"y":0.7659105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.05286,"y":69.256775,"z":-33.303375},"screenPosition":{"x":0.9550386,"y":0.74396557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-165.56458,"y":169.58554,"z":78.13878},"screenPosition":{"x":2.0886335,"y":1.2845503},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":2.0592718,"y":1.2121258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.75687,"y":63.16951,"z":-33.69247},"screenPosition":{"x":0.9660039,"y":0.6633028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.4262,"y":61.79738,"z":-34.81625},"screenPosition":{"x":0.9330188,"y":0.63745433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.04364,"y":61.710945,"z":-38.0181},"screenPosition":{"x":0.84768873,"y":0.6336398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.99902,"y":63.040157,"z":-39.94886},"screenPosition":{"x":0.78823864,"y":0.6467067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.97238,"y":64.89898,"z":-42.340042},"screenPosition":{"x":0.71575665,"y":0.6668546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.16946,"y":67.21522,"z":-43.33182},"screenPosition":{"x":0.6792571,"y":0.6948767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.48923,"y":69.89824,"z":-43.691082},"screenPosition":{"x":0.659149,"y":0.72900724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.9377,"y":72.52558,"z":-42.874367},"screenPosition":{"x":0.67235816,"y":0.7650494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1777,"y":73.344124,"z":-41.778824},"screenPosition":{"x":0.70242745,"y":0.77973384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.37494,"y":75.08162,"z":-38.285362},"screenPosition":{"x":0.7920091,"y":0.80825406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.64166,"y":73.78981,"z":-35.649647},"screenPosition":{"x":0.87063783,"y":0.7968567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.51196,"y":71.43945,"z":-33.791107},"screenPosition":{"x":0.9338149,"y":0.77179706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.68192,"y":69.14612,"z":-34.537685},"screenPosition":{"x":0.9178833,"y":0.7378052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.937,"y":67.2191,"z":-36.710743},"screenPosition":{"x":0.8640095,"y":0.7080978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.55807,"y":66.879196,"z":-39.58652},"screenPosition":{"x":0.7847201,"y":0.6977638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.38956,"y":67.92612,"z":-42.258495},"screenPosition":{"x":0.70684135,"y":0.70649445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.4387,"y":69.85292,"z":-44.07452},"screenPosition":{"x":0.649005,"y":0.72799444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.80658,"y":72.750244,"z":-44.26772},"screenPosition":{"x":0.63270694,"y":0.7652585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1852,"y":74.77353,"z":-43.3762},"screenPosition":{"x":0.6525547,"y":0.7951972},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-403.4177,"y":75.17903,"z":-38.21003},"screenPosition":{"x":0.7936448,"y":0.80958134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.30228,"y":72.92374,"z":-36.141434},"screenPosition":{"x":0.8597683,"y":0.78433156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1211,"y":71.33163,"z":-35.115677},"screenPosition":{"x":0.8941091,"y":0.7654791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1475,"y":67.56644,"z":-35.322186},"screenPosition":{"x":0.9040147,"y":0.7172304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.85898,"y":65.52312,"z":-35.412506},"screenPosition":{"x":0.9065558,"y":0.6885895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.29004,"y":64.157005,"z":-38.735138},"screenPosition":{"x":0.81916875,"y":0.6643807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.20926,"y":66.223976,"z":-41.835823},"screenPosition":{"x":0.7239779,"y":0.6844456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.6974,"y":69.65707,"z":-41.61388},"screenPosition":{"x":0.7182713,"y":0.7302351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1665,"y":71.2004,"z":-39.383186},"screenPosition":{"x":0.7772234,"y":0.75654286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.8055,"y":71.15339,"z":-36.287964},"screenPosition":{"x":0.86149764,"y":0.76043004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.77045,"y":69.258446,"z":-34.279984},"screenPosition":{"x":0.92438924,"y":0.739626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.141,"y":66.326744,"z":-33.93682},"screenPosition":{"x":0.9472682,"y":0.7038194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.0925,"y":64.64418,"z":-32.509747},"screenPosition":{"x":0.9933859,"y":0.6847605},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.06448,"y":60.127346,"z":-36.132378},"screenPosition":{"x":0.90951616,"y":0.6190367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.6586,"y":58.344128,"z":-37.56257},"screenPosition":{"x":0.87640494,"y":0.59308934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.26694,"y":56.99203,"z":-39.23639},"screenPosition":{"x":0.8395183,"y":0.5641834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.00824,"y":57.18788,"z":-41.697025},"screenPosition":{"x":0.762941,"y":0.5680837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.9131,"y":58.47177,"z":-44.011223},"screenPosition":{"x":0.6933016,"y":0.5800566},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-401.08536,"y":65.94169,"z":-42.577038},"screenPosition":{"x":0.7043148,"y":0.67925954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.50876,"y":66.74938,"z":-39.86127},"screenPosition":{"x":0.7780377,"y":0.69586897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.55945,"y":64.99771,"z":-37.387062},"screenPosition":{"x":0.85354453,"y":0.6779241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.3179,"y":62.213688,"z":-36.235268},"screenPosition":{"x":0.8961123,"y":0.64399606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-401.39682,"y":57.193913,"z":-38.485073},"screenPosition":{"x":0.85504746,"y":0.5763527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.9567,"y":55.430065,"z":-40.09838},"screenPosition":{"x":0.8141705,"y":0.54431987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.6006,"y":55.2818,"z":-42.999825},"screenPosition":{"x":0.73384064,"y":0.5407879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.71585,"y":57.95252,"z":-45.11021},"screenPosition":{"x":0.6647006,"y":0.57119834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.35916,"y":61.268097,"z":-43.41189},"screenPosition":{"x":0.6998077,"y":0.6177558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.85352,"y":62.481735,"z":-40.55572},"screenPosition":{"x":0.7747783,"y":0.6390766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.9547,"y":60.775387,"z":-37.69808},"screenPosition":{"x":0.860793,"y":0.62246615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.46844,"y":57.508686,"z":-38.232616},"screenPosition":{"x":0.8663246,"y":0.5789405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.98193,"y":55.452724,"z":-39.906662},"screenPosition":{"x":0.816112,"y":0.5458413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.95267,"y":69.844826,"z":-48.260624},"screenPosition":{"x":0.5324531,"y":0.7197489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.97897,"y":71.57999,"z":-50.050987},"screenPosition":{"x":0.47605357,"y":0.7388091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.31674,"y":74.79262,"z":-50.870667},"screenPosition":{"x":0.4411201,"y":0.7789511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.02148,"y":77.39309,"z":-47.810696},"screenPosition":{"x":0.51654094,"y":0.8186849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.20343,"y":78.256454,"z":-47.268402},"screenPosition":{"x":0.5412228,"y":0.8399623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.04422,"y":78.49877,"z":-43.623573},"screenPosition":{"x":0.6300099,"y":0.84193575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.18622,"y":74.96895,"z":-43.594585},"screenPosition":{"x":0.6531533,"y":0.80244637},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-401.5228,"y":71.12645,"z":-44.829304},"screenPosition":{"x":0.6231856,"y":0.7430714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.0778,"y":70.042625,"z":-47.41072},"screenPosition":{"x":0.5547044,"y":0.7232506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.74454,"y":70.086006,"z":-50.337826},"screenPosition":{"x":0.4736947,"y":0.7188427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.72153,"y":71.691345,"z":-52.402935},"screenPosition":{"x":0.41013262,"y":0.7356822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.0316,"y":75.0503,"z":-53.631714},"screenPosition":{"x":0.36325443,"y":0.77692956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.3069,"y":77.26554,"z":-53.83096},"screenPosition":{"x":0.3492763,"y":0.80513716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.85522,"y":80.068016,"z":-52.35606},"screenPosition":{"x":0.3793464,"y":0.84346765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2129,"y":80.06484,"z":-49.289295},"screenPosition":{"x":0.46792108,"y":0.852217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.1454,"y":77.67538,"z":-47.06948},"screenPosition":{"x":0.545183,"y":0.82848847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.6019,"y":74.534935,"z":-48.10962},"screenPosition":{"x":0.51898575,"y":0.7809727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.1328,"y":73.343956,"z":-50.774067},"screenPosition":{"x":0.44926912,"y":0.7603191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.79593,"y":73.640816,"z":-54.02724},"screenPosition":{"x":0.3575502,"y":0.7578494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.77655,"y":74.99268,"z":-55.76628},"screenPosition":{"x":0.30402422,"y":0.77203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.80045,"y":76.89683,"z":-57.77402},"screenPosition":{"x":0.24093391,"y":0.79286283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.96985,"y":79.35939,"z":-59.174904},"screenPosition":{"x":0.19264041,"y":0.8221303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.34497,"y":81.74976,"z":-58.715965},"screenPosition":{"x":0.1964146,"y":0.8540766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.6924,"y":84.28646,"z":-58.666122},"screenPosition":{"x":0.1882441,"y":0.8871283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.2167,"y":86.98178,"z":-57.274254},"screenPosition":{"x":0.22585988,"y":0.9274967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.11322,"y":88.44652,"z":-54.66643},"screenPosition":{"x":0.285006,"y":0.9497108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.4107,"y":87.659096,"z":-52.47188},"screenPosition":{"x":0.34947827,"y":0.94401777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.499,"y":86.22627,"z":-50.45317},"screenPosition":{"x":0.41122922,"y":0.92943704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2073,"y":83.76124,"z":-48.91366},"screenPosition":{"x":0.46302912,"y":0.9001427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2153,"y":80.52306,"z":-49.801365},"screenPosition":{"x":0.45313433,"y":0.8579907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.73618,"y":79.44776,"z":-52.662514},"screenPosition":{"x":0.37367642,"y":0.8359426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.47992,"y":79.47463,"z":-54.90577},"screenPosition":{"x":0.31110084,"y":0.8319294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.7142,"y":82.76561,"z":-56.709705},"screenPosition":{"x":0.24846081,"y":0.8711751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.289,"y":85.50625,"z":-54.934395},"screenPosition":{"x":0.28958204,"y":0.9077392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.0909,"y":86.12973,"z":-52.121853},"screenPosition":{"x":0.3645887,"y":0.9245515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.20956,"y":85.21649,"z":-50.56316},"screenPosition":{"x":0.4116003,"y":0.9158355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.23264,"y":82.91188,"z":-47.834656},"screenPosition":{"x":0.49567613,"y":0.8901817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.09674,"y":81.33725,"z":-46.63144},"screenPosition":{"x":0.5354465,"y":0.8727822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.20383,"y":78.33429,"z":-47.355385},"screenPosition":{"x":0.53095984,"y":0.8355304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.82788,"y":76.62036,"z":-48.583614},"screenPosition":{"x":0.497927,"y":0.80714315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.3588,"y":75.42938,"z":-51.24806},"screenPosition":{"x":0.4278508,"y":0.7858926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.31052,"y":77.01207,"z":-53.504887},"screenPosition":{"x":0.35939434,"y":0.80266184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.72406,"y":80.29269,"z":-53.749413},"screenPosition":{"x":0.3402227,"y":0.8448055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.27014,"y":81.46715,"z":-50.40112},"screenPosition":{"x":0.4263374,"y":0.86144537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.93503,"y":82.15253,"z":-48.26592},"screenPosition":{"x":0.48678613,"y":0.88025326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.15482,"y":80.92417,"z":-45.90725},"screenPosition":{"x":0.5573983,"y":0.8690966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.7714,"y":78.42625,"z":-44.730076},"screenPosition":{"x":0.59911174,"y":0.83858365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.02164,"y":75.5961,"z":-45.71992},"screenPosition":{"x":0.58153987,"y":0.7994056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.54047,"y":75.25004,"z":-49.471268},"screenPosition":{"x":0.4783695,"y":0.7876149},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.80365,"y":78.310196,"z":-50.757416},"screenPosition":{"x":0.43101954,"y":0.824869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2163,"y":80.7174,"z":-50.018536},"screenPosition":{"x":0.4554481,"y":0.8665464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.23795,"y":81.202156,"z":-45.861843},"screenPosition":{"x":0.55748445,"y":0.87254465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.1703,"y":78.87453,"z":-43.50259},"screenPosition":{"x":0.6317495,"y":0.84673953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.189,"y":75.497,"z":-44.184685},"screenPosition":{"x":0.6264195,"y":0.8023264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.68372,"y":74.18046,"z":-46.991016},"screenPosition":{"x":0.55147445,"y":0.7785429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.79654,"y":77.02016,"z":-49.318783},"screenPosition":{"x":0.47589988,"y":0.8108371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.21048,"y":79.6064,"z":-48.77698},"screenPosition":{"x":0.48393303,"y":0.84747946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.19006,"y":81.275475,"z":-46.154243},"screenPosition":{"x":0.54902273,"y":0.8729059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.505,"y":79.903076,"z":-43.216442},"screenPosition":{"x":0.6366484,"y":0.86140084},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-061015/brain-CB61B4-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.1746963887670907,0.7783111525521684,0.603086164295495,0.0,0.008795010884711851,0.613714103088819,-0.7894793521387524,0.0,-0.9845830688851376,-0.13261504244542438,-0.1140588926034396,0.0,-519.2143473785645,18.119804302971538,-83.33511611272422,1.0]},"baseImage":"20190825-061015/base.webp","version":0,"savedAt":1.566713683593E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-062731-v0.json-huh-tailA-wtf b/data/mapping/BAAAHS/dwayman/20190825-062731-v0.json-huh-tailA-wtf new file mode 100644 index 0000000000..ad91e77cb2 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-062731-v0.json-huh-tailA-wtf @@ -0,0 +1 @@ +{"startedAt":1.5667144515E12,"surfaces":[{"brainId":"CBB34C","panelName":"TailA","pixels":[{"modelPosition":{"x":-352.56735,"y":195.11633,"z":-38.017624},"screenPosition":{"x":1.2074443,"y":0.84790576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.63293,"y":195.0715,"z":-35.438606},"screenPosition":{"x":1.1941906,"y":0.81034756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.14282,"y":194.72278,"z":-33.38522},"screenPosition":{"x":1.1786163,"y":0.7812634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.78345,"y":194.28465,"z":-31.085539},"screenPosition":{"x":1.1604102,"y":0.74881536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.4892,"y":193.80199,"z":-28.663607},"screenPosition":{"x":1.1408956,"y":0.7146979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.30408,"y":193.2447,"z":-26.852741},"screenPosition":{"x":1.1231538,"y":0.6897026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.38815,"y":192.50328,"z":-25.077862},"screenPosition":{"x":1.1025227,"y":0.6657596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.09265,"y":192.02148,"z":-22.659325},"screenPosition":{"x":1.0831485,"y":0.6316447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.8333,"y":191.51495,"z":-20.445078},"screenPosition":{"x":1.0642602,"y":0.6006237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.19424,"y":191.26811,"z":-17.589563},"screenPosition":{"x":1.0463512,"y":0.5595902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.18015,"y":191.96164,"z":-14.889376},"screenPosition":{"x":1.0444255,"y":0.5182941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.25122,"y":193.96475,"z":-14.183846},"screenPosition":{"x":1.0731337,"y":0.5027444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.19708,"y":195.36958,"z":-15.893223},"screenPosition":{"x":1.1039474,"y":0.5240551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":-18.877325},"screenPosition":{"x":1.1239848,"y":0.57012796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.6736,"y":195.72757,"z":-21.75417},"screenPosition":{"x":1.1382085,"y":0.60872126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.44708,"y":194.51468,"z":-23.833641},"screenPosition":{"x":1.1288033,"y":0.6422958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.4412,"y":193.15091,"z":-24.68935},"screenPosition":{"x":1.1111348,"y":0.65834415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.5609,"y":191.70125,"z":-24.768885},"screenPosition":{"x":1.0882633,"y":0.66330045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.1329,"y":189.94226,"z":-23.452742},"screenPosition":{"x":1.0534626,"y":0.64875704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.23734,"y":189.18694,"z":-20.821354},"screenPosition":{"x":1.0287371,"y":0.612215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.2396,"y":188.83725,"z":-18.260447},"screenPosition":{"x":0.99021256,"y":0.5819141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.82025,"y":188.70813,"z":-16.683786},"screenPosition":{"x":0.9646829,"y":0.5819197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.79462,"y":188.69606,"z":-13.737481},"screenPosition":{"x":0.96082085,"y":0.51785886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-11.223858},"screenPosition":{"x":0.96800196,"y":0.4756499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.62064,"y":189.6087,"z":-9.210578},"screenPosition":{"x":0.9790429,"y":0.4415142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.95883,"y":191.42911,"z":-8.543963},"screenPosition":{"x":1.0050423,"y":0.42699108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.94888,"y":192.80373,"z":-10.982017},"screenPosition":{"x":1.0389453,"y":0.45900938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.40186,"y":192.49393,"z":-14.460183},"screenPosition":{"x":1.0508792,"y":0.510631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.6439,"y":190.96059,"z":-16.197548},"screenPosition":{"x":1.0347227,"y":0.54002476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.0246,"y":189.33243,"z":-15.779132},"screenPosition":{"x":1.0065674,"y":0.538174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.85886,"y":188.25574,"z":-14.362764},"screenPosition":{"x":0.97045934,"y":0.52598184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.5619,"y":189.52765,"z":-12.30991},"screenPosition":{"x":0.92662495,"y":0.5070243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.20358,"y":190.30016,"z":-10.206204},"screenPosition":{"x":0.8907465,"y":0.48578656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.19366,"y":191.23657,"z":-9.340568},"screenPosition":{"x":0.8554414,"y":0.48464987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.8612,"y":192.02122,"z":-7.2196455},"screenPosition":{"x":0.8084329,"y":0.470422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.26898,"y":193.1542,"z":-5.4102597},"screenPosition":{"x":0.7726567,"y":0.45080218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.2875,"y":193.16292,"z":-2.373934},"screenPosition":{"x":0.75761044,"y":0.40655312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.72742,"y":191.48773,"z":-0.05001558},"screenPosition":{"x":0.8019478,"y":0.35201555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.67328,"y":189.10951,"z":0.74909395},"screenPosition":{"x":0.8770427,"y":0.31111285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":0.56042457},"screenPosition":{"x":0.91447395,"y":0.30292314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.8963,"y":190.10408,"z":-1.3747019},"screenPosition":{"x":0.9488499,"y":0.32579103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.19522,"y":190.58353,"z":-3.777742},"screenPosition":{"x":0.9683116,"y":0.359577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.3735,"y":190.46161,"z":-6.6873903},"screenPosition":{"x":0.9804968,"y":0.40240172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.4167,"y":189.74817,"z":-9.053202},"screenPosition":{"x":0.9805488,"y":0.43883005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-10.251195},"screenPosition":{"x":0.96028787,"y":0.46207312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.4827,"y":189.96094,"z":-10.366438},"screenPosition":{"x":0.89657533,"y":0.4877466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.93616,"y":192.0565,"z":-9.710945},"screenPosition":{"x":0.8300123,"y":0.5001376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.77368,"y":193.86224,"z":-8.442365},"screenPosition":{"x":0.76387984,"y":0.5037986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.4333,"y":193.70207,"z":-4.287387},"screenPosition":{"x":0.74900544,"y":0.44113204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.2756,"y":192.68678,"z":-1.8068664},"screenPosition":{"x":0.76197374,"y":0.39899144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.0831,"y":191.18456,"z":0.14740516},"screenPosition":{"x":0.8055887,"y":0.34961477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.5672,"y":189.53015,"z":1.7832227},"screenPosition":{"x":0.85804766,"y":0.30117553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":2.3373797},"screenPosition":{"x":0.90209275,"y":0.27754062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.0801,"y":189.97836,"z":1.942008},"screenPosition":{"x":0.93080395,"y":0.27760407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.18805,"y":191.27234,"z":0.8031446},"screenPosition":{"x":0.957099,"y":0.29085425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.57266,"y":192.3771,"z":-0.8934339},"screenPosition":{"x":0.9830692,"y":0.312747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.89218,"y":193.52638,"z":-2.712725},"screenPosition":{"x":1.0092223,"y":0.33706877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.16916,"y":193.33696,"z":-5.6966815},"screenPosition":{"x":1.0215381,"y":0.38057652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.68024,"y":192.30354,"z":-8.250308},"screenPosition":{"x":1.0175897,"y":0.42044538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.87534,"y":190.8023,"z":-9.251709},"screenPosition":{"x":0.9984256,"y":0.4389708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.67334,"y":190.52118,"z":5.939014},"screenPosition":{"x":0.7953371,"y":0.26081276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.75806,"y":188.20831,"z":8.011522},"screenPosition":{"x":0.8647916,"y":0.1998088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.4143,"y":189.74982,"z":6.346895},"screenPosition":{"x":0.9057289,"y":0.21385351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.90524,"y":190.09796,"z":2.4217637},"screenPosition":{"x":0.9297715,"y":0.27075166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":0.39592645},"screenPosition":{"x":0.91152847,"y":0.30590233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.53076,"y":189.04247,"z":-0.7092326},"screenPosition":{"x":0.8863571,"y":0.3315927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.49377,"y":190.90724,"z":-1.6788832},"screenPosition":{"x":0.82748497,"y":0.36990187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.96466,"y":192.54047,"z":-2.6035266},"screenPosition":{"x":0.76912403,"y":0.4098836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.5182,"y":194.21255,"z":-2.9937198},"screenPosition":{"x":0.72576493,"y":0.42850763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.22412,"y":195.95639,"z":-1.108815},"screenPosition":{"x":0.658693,"y":0.4224041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.6232,"y":195.67363,"z":2.1660032},"screenPosition":{"x":0.6313971,"y":0.3781876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.44553,"y":193.23727,"z":3.291823},"screenPosition":{"x":0.7201485,"y":0.33099973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.19406,"y":191.7073,"z":1.6527735},"screenPosition":{"x":0.78637975,"y":0.32983914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.20914,"y":194.06715,"z":-1.5560945},"screenPosition":{"x":0.7176055,"y":0.4103765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.16687,"y":194.04726,"z":1.6236255},"screenPosition":{"x":0.7088139,"y":0.35902345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0041,"y":192.559,"z":3.5152833},"screenPosition":{"x":0.73766273,"y":0.32265112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.753,"y":191.02922,"z":5.2945375},"screenPosition":{"x":0.7911994,"y":0.26830447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.96265,"y":189.24568,"z":5.5200677},"screenPosition":{"x":0.84933335,"y":0.24308957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":6.6412616},"screenPosition":{"x":0.8811754,"y":0.21466738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.42664,"y":189.74136,"z":7.716947},"screenPosition":{"x":0.8989348,"y":0.19386122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.50076,"y":191.74239,"z":6.5098577},"screenPosition":{"x":0.9369051,"y":0.2062574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.0343,"y":191.37749,"z":2.1308281},"screenPosition":{"x":0.9523334,"y":0.27118352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.40814,"y":190.43793,"z":-0.13460276},"screenPosition":{"x":0.9482696,"y":0.30673733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-0.80404544},"screenPosition":{"x":0.9173605,"y":0.32343212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.1599,"y":190.2796,"z":-0.7826736},"screenPosition":{"x":0.84237593,"y":0.35029933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.79453,"y":191.5193,"z":1.5548731},"screenPosition":{"x":0.7900651,"y":0.33137116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.24576,"y":190.79053,"z":4.6022115},"screenPosition":{"x":0.7995912,"y":0.27790114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.13626,"y":188.85683,"z":6.1724663},"screenPosition":{"x":0.8512302,"y":0.23531556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":4.9943156},"screenPosition":{"x":0.88584924,"y":0.24021065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.05692,"y":189.31032,"z":3.7835617},"screenPosition":{"x":0.9111359,"y":0.2524503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.6933,"y":190.92679,"z":2.83384},"screenPosition":{"x":0.9405067,"y":0.2629859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.84943,"y":191.50394,"z":5.552621},"screenPosition":{"x":0.9377316,"y":0.22086535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.51236,"y":190.36665,"z":8.416686},"screenPosition":{"x":0.90556586,"y":0.18200243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":7.88164},"screenPosition":{"x":0.87514704,"y":0.19654731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.6376,"y":188.62218,"z":8.176777},"screenPosition":{"x":0.8571271,"y":0.19661617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.78558,"y":190.10345,"z":9.650043},"screenPosition":{"x":0.7995144,"y":0.19443734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.30765,"y":190.34912,"z":12.15906},"screenPosition":{"x":0.7785387,"y":0.17316957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.42377,"y":188.99211,"z":15.191512},"screenPosition":{"x":0.7992355,"y":0.10340331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.40845,"y":188.38602,"z":17.90424},"screenPosition":{"x":0.82767856,"y":0.04858775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.1458,"y":190.61734,"z":17.12609},"screenPosition":{"x":0.86649585,"y":0.05485163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.4897,"y":190.38216,"z":14.286402},"screenPosition":{"x":0.8772869,"y":0.09621416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.26862,"y":189.84944,"z":11.45527},"screenPosition":{"x":0.8825,"y":0.13896707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.83127,"y":191.51634,"z":9.014291},"screenPosition":{"x":0.9211067,"y":0.17026307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.43527,"y":193.15497,"z":10.676539},"screenPosition":{"x":0.9393176,"y":0.14169109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.11212,"y":192.69208,"z":14.630698},"screenPosition":{"x":0.9126734,"y":0.08513838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.29947,"y":190.51224,"z":15.806513},"screenPosition":{"x":0.8719862,"y":0.07366711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.44748,"y":189.72711,"z":12.867429},"screenPosition":{"x":0.87367404,"y":0.11865775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":9.852936},"screenPosition":{"x":0.8663082,"y":0.16802785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.18256,"y":189.34917,"z":10.473528},"screenPosition":{"x":0.8218223,"y":0.17199884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.0734,"y":189.29779,"z":14.094615},"screenPosition":{"x":0.807433,"y":0.13291003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":15.270966},"screenPosition":{"x":0.8476054,"y":0.08623473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":12.501758},"screenPosition":{"x":0.8526927,"y":0.12905435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":9.535284},"screenPosition":{"x":0.86711013,"y":0.17239006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":7.0004344},"screenPosition":{"x":0.8811988,"y":0.20949589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.14157,"y":189.93634,"z":4.48531},"screenPosition":{"x":0.9175382,"y":0.24074176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.97437,"y":191.41847,"z":3.903675},"screenPosition":{"x":0.9443747,"y":0.24517764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.63324,"y":193.01959,"z":6.2178307},"screenPosition":{"x":0.95881534,"y":0.20718047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.80167,"y":190.85269,"z":8.960593},"screenPosition":{"x":0.91072017,"y":0.17278458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.60477,"y":190.30345,"z":4.551676},"screenPosition":{"x":0.9233363,"y":0.23862982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.49002,"y":191.74973,"z":2.7216218},"screenPosition":{"x":0.9547117,"y":0.2621203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.22714,"y":195.349,"z":1.4152457},"screenPosition":{"x":1.0186135,"y":0.27189103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":4.803636},"screenPosition":{"x":1.0088927,"y":0.22418475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":6.7121315},"screenPosition":{"x":0.99961716,"y":0.19630452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":9.303737},"screenPosition":{"x":0.9870216,"y":0.15844506},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.78076,"y":195.65428,"z":14.505752},"screenPosition":{"x":0.9608055,"y":0.07921022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.27856,"y":195.31383,"z":17.044498},"screenPosition":{"x":0.94142914,"y":0.044462234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.7421,"y":194.31294,"z":19.530142},"screenPosition":{"x":0.9138712,"y":0.010281853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.90643,"y":192.83273,"z":19.594948},"screenPosition":{"x":0.8908032,"y":0.012249984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.647,"y":190.95847,"z":16.99111},"screenPosition":{"x":0.8731624,"y":0.055410527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.08066,"y":192.0297,"z":14.578371},"screenPosition":{"x":0.90230066,"y":0.08763655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.0177,"y":194.12444,"z":14.169196},"screenPosition":{"x":0.9378967,"y":0.08813109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.22086,"y":195.3533,"z":16.401937},"screenPosition":{"x":0.94676095,"y":0.052297603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.11295,"y":195.42711,"z":19.40134},"screenPosition":{"x":0.9333675,"y":0.008287656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.0064,"y":194.81606,"z":22.147823},"screenPosition":{"x":0.9094644,"y":-0.029485047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.91833,"y":192.8246,"z":23.356462},"screenPosition":{"x":0.8723914,"y":-0.042678807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.83676,"y":191.51259,"z":24.295324},"screenPosition":{"x":0.8467789,"y":-0.052960016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.44324,"y":190.41391,"z":21.703728},"screenPosition":{"x":0.8410132,"y":-0.01146248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.76395,"y":191.5624,"z":18.00762},"screenPosition":{"x":0.8781368,"y":0.03876353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.70862,"y":193.65193,"z":19.479017},"screenPosition":{"x":0.90362865,"y":0.012654035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.6406,"y":194.38235,"z":22.007256},"screenPosition":{"x":0.90394086,"y":-0.027046256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.43832,"y":194.52069,"z":24.558552},"screenPosition":{"x":0.8937605,"y":-0.06467892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.4666,"y":194.50133,"z":27.273886},"screenPosition":{"x":0.8802531,"y":-0.1042952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.13522,"y":194.72798,"z":29.576166},"screenPosition":{"x":0.8727001,"y":-0.1385213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.8613,"y":194.23141,"z":32.26893},"screenPosition":{"x":0.85164636,"y":-0.1765588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.78738,"y":192.07394,"z":34.270817},"screenPosition":{"x":0.782982,"y":-0.19279486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.78387,"y":191.39246,"z":32.606216},"screenPosition":{"x":0.7801384,"y":-0.16669376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.21826,"y":189.19998,"z":31.991322},"screenPosition":{"x":0.7722726,"y":-0.1593338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.82648,"y":188.10011,"z":29.408518},"screenPosition":{"x":0.7658844,"y":-0.117175676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.666,"y":188.73747,"z":26.121279},"screenPosition":{"x":0.7690603,"y":-0.06500928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.39066,"y":188.39816,"z":23.235296},"screenPosition":{"x":0.8019639,"y":-0.029322768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.94174,"y":190.073,"z":21.839008},"screenPosition":{"x":0.8333511,"y":-0.010938835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.5566,"y":191.70418,"z":22.966875},"screenPosition":{"x":0.85630906,"y":-0.034054838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.0539,"y":192.7319,"z":25.478859},"screenPosition":{"x":0.860589,"y":-0.073441155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.36084,"y":192.52197,"z":29.520367},"screenPosition":{"x":0.83757883,"y":-0.13193205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.93106,"y":190.08029,"z":29.036213},"screenPosition":{"x":0.8007583,"y":-0.1184683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.08026,"y":189.97827,"z":25.844538},"screenPosition":{"x":0.8146333,"y":-0.07157567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.74365,"y":190.20847,"z":23.874304},"screenPosition":{"x":0.82790214,"y":-0.04339607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.25372,"y":189.85962,"z":21.087492},"screenPosition":{"x":0.83530295,"y":-0.0012061814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.75308,"y":188.15031,"z":19.358788},"screenPosition":{"x":0.8168276,"y":0.027955964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.197,"y":186.47891,"z":21.277094},"screenPosition":{"x":0.7806891,"y":0.0043071737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.23865,"y":186.45044,"z":24.844913},"screenPosition":{"x":0.7628921,"y":-0.04773871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.75558,"y":187.4647,"z":27.679535},"screenPosition":{"x":0.7653882,"y":-0.09180309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.127,"y":189.78998,"z":28.692078},"screenPosition":{"x":0.773452,"y":-0.10531968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.6922,"y":190.92757,"z":27.23957},"screenPosition":{"x":0.82308346,"y":-0.09443973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.06754,"y":191.35475,"z":24.462414},"screenPosition":{"x":0.8429026,"y":-0.054417998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.04608,"y":190.68553,"z":21.491463},"screenPosition":{"x":0.84713686,"y":-0.009835011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.7949,"y":188.80563,"z":20.773424},"screenPosition":{"x":0.8203444,"y":0.0057017324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.2346,"y":187.13712,"z":20.806913},"screenPosition":{"x":0.7935342,"y":0.009453005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.1831,"y":187.69992,"z":23.586977},"screenPosition":{"x":0.76868176,"y":-0.023453124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.0099,"y":186.60689,"z":26.559076},"screenPosition":{"x":0.75707096,"y":-0.07318952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.1023,"y":187.9115,"z":28.857965},"screenPosition":{"x":0.766829,"y":-0.110187635},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.53455,"y":190.19518,"z":29.6818},"screenPosition":{"x":0.77514267,"y":-0.12083862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.7717,"y":190.71689,"z":30.956108},"screenPosition":{"x":0.7689056,"y":-0.14346442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.04532,"y":191.89755,"z":33.839977},"screenPosition":{"x":0.782246,"y":-0.18603924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.5693,"y":192.907,"z":36.30561},"screenPosition":{"x":0.78645796,"y":-0.22470061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.7463,"y":192.94226,"z":32.888325},"screenPosition":{"x":0.82795304,"y":-0.18223292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.1817,"y":191.96059,"z":30.264748},"screenPosition":{"x":0.82495433,"y":-0.14133692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.9395,"y":190.60211,"z":30.675768},"screenPosition":{"x":0.7768406,"y":-0.13642411},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":45.24733},"screenPosition":{"x":0.8123317,"y":-0.36663675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.04355,"y":197.0424,"z":47.54168},"screenPosition":{"x":0.8047724,"y":-0.40165725},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-352.83984,"y":196.14146,"z":44.205997},"screenPosition":{"x":0.7907,"y":-0.3498689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.5556,"y":195.80827,"z":43.03527},"screenPosition":{"x":0.82461923,"y":-0.3379662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":40.25404},"screenPosition":{"x":0.8299626,"y":-0.29267013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.5905,"y":195.7844,"z":38.0781},"screenPosition":{"x":0.84832865,"y":-0.2654869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.70206,"y":194.34032,"z":36.48098},"screenPosition":{"x":0.83292246,"y":-0.23837556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.94562,"y":193.33353,"z":37.347427},"screenPosition":{"x":0.78823763,"y":-0.24103637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.1936,"y":191.9525,"z":40.65308},"screenPosition":{"x":0.77433485,"y":-0.29307327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.7687,"y":192.927,"z":42.74697},"screenPosition":{"x":0.7797927,"y":-0.32621256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.8149,"y":194.2632,"z":44.898132},"screenPosition":{"x":0.79077566,"y":-0.36113527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.11444,"y":195.95367,"z":43.747307},"screenPosition":{"x":0.79917043,"y":-0.34138712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":40.455532},"screenPosition":{"x":0.8360196,"y":-0.29592794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":37.897617},"screenPosition":{"x":0.84877187,"y":-0.25937757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":35.26282},"screenPosition":{"x":0.8608575,"y":-0.22077811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":32.372154},"screenPosition":{"x":0.8749065,"y":-0.17854983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.35086,"y":194.58049,"z":30.77858},"screenPosition":{"x":0.86449,"y":-0.1557007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.21616,"y":192.62093,"z":30.313322},"screenPosition":{"x":0.8330153,"y":-0.14113298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.68573,"y":191.45958,"z":32.770195},"screenPosition":{"x":0.7923334,"y":-0.16299051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.3666,"y":190.46634,"z":35.437622},"screenPosition":{"x":0.77584016,"y":-0.21299364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.4544,"y":191.7741,"z":38.754818},"screenPosition":{"x":0.78069943,"y":-0.26487592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.3696,"y":193.72748,"z":38.30969},"screenPosition":{"x":0.78988147,"y":-0.25612473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.29233,"y":194.62053,"z":37.301754},"screenPosition":{"x":0.830756,"y":-0.24778827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.30103,"y":195.29848,"z":34.644867},"screenPosition":{"x":0.85721856,"y":-0.21406062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.1356,"y":195.41162,"z":32.21241},"screenPosition":{"x":0.8708558,"y":-0.17882222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.63925,"y":195.75107,"z":29.687422},"screenPosition":{"x":0.8885735,"y":-0.14282446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.66766,"y":195.73164,"z":27.61572},"screenPosition":{"x":0.8983306,"y":-0.11250918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.135,"y":195.41202,"z":25.037094},"screenPosition":{"x":0.9032231,"y":-0.07140346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.71106,"y":195.01807,"z":21.858988},"screenPosition":{"x":0.91486055,"y":-0.026544223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.37097,"y":193.19894,"z":22.060015},"screenPosition":{"x":0.88469815,"y":-0.02471947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.1653,"y":191.9718,"z":24.634317},"screenPosition":{"x":0.8517798,"y":-0.058347195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.85236,"y":192.18582,"z":27.780289},"screenPosition":{"x":0.8406427,"y":-0.10563227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.1141,"y":193.37462,"z":30.636473},"screenPosition":{"x":0.8458341,"y":-0.15046842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.5386,"y":195.8199,"z":29.76386},"screenPosition":{"x":0.8890522,"y":-0.14384127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":26.309906},"screenPosition":{"x":0.9043697,"y":-0.08998949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.37973,"y":195.24464,"z":24.166277},"screenPosition":{"x":0.90728205,"y":-0.060843326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.53967,"y":194.45137,"z":22.08414},"screenPosition":{"x":0.90446466,"y":-0.028140144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.24704,"y":193.96759,"z":19.144953},"screenPosition":{"x":0.9111976,"y":0.01585331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.11804,"y":194.05582,"z":16.49753},"screenPosition":{"x":0.92547977,"y":0.054297265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.06934,"y":195.45694,"z":15.315707},"screenPosition":{"x":0.95182794,"y":0.06956964},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":10.110364},"screenPosition":{"x":0.9831013,"y":0.14666145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":7.870869},"screenPosition":{"x":0.99398553,"y":0.17937711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":5.002264},"screenPosition":{"x":1.0000254,"y":0.22271737},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-352.50198,"y":195.16104,"z":0.8580856},"screenPosition":{"x":1.0192211,"y":0.27987313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.23306,"y":194.66107,"z":-1.260781},"screenPosition":{"x":1.0214977,"y":0.31213522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.70416,"y":193.65498,"z":-3.6061513},"screenPosition":{"x":1.016755,"y":0.34903097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.50214,"y":193.79315,"z":-5.8746843},"screenPosition":{"x":1.0299971,"y":0.38180918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.83588,"y":194.2488,"z":-8.479891},"screenPosition":{"x":1.0499691,"y":0.41867468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.56805,"y":194.43195,"z":-10.875207},"screenPosition":{"x":1.0645491,"y":0.45318723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.09683,"y":194.75423,"z":-13.114961},"screenPosition":{"x":1.080605,"y":0.4850631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.82852,"y":194.93773,"z":-15.514018},"screenPosition":{"x":1.0951821,"y":0.51964295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.58902,"y":195.10153,"z":-17.58955},"screenPosition":{"x":1.107924,"y":0.5495211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.1169,"y":195.4244,"z":-19.834082},"screenPosition":{"x":1.1240127,"y":0.58146524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.7462,"y":195.67793,"z":-22.159372},"screenPosition":{"x":1.1392972,"y":0.614807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.64407,"y":195.74777,"z":-24.521694},"screenPosition":{"x":1.1519831,"y":0.6490978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.25052,"y":197.22842,"z":-26.549389},"screenPosition":{"x":1.1612719,"y":0.68220526},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-364.69858,"y":186.8198,"z":-24.380035},"screenPosition":{"x":1.0073123,"y":0.67071843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.4507,"y":186.9893,"z":-21.569397},"screenPosition":{"x":0.99652773,"y":0.62916774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.09613,"y":188.59961,"z":-19.744051},"screenPosition":{"x":1.0134203,"y":0.5983311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.8675,"y":190.12376,"z":-21.501886},"screenPosition":{"x":1.0470767,"y":0.6197035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.3385,"y":191.16945,"z":-22.755869},"screenPosition":{"x":1.0695783,"y":0.63544697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.56873,"y":191.69589,"z":-25.298811},"screenPosition":{"x":1.0904837,"y":0.6711656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.31534,"y":191.1853,"z":-27.977205},"screenPosition":{"x":1.0955783,"y":0.71151966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.39807,"y":189.76091,"z":-29.77558},"screenPosition":{"x":1.0814663,"y":0.74151945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.3316,"y":188.43855,"z":-28.307812},"screenPosition":{"x":1.0528562,"y":0.7236385},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-364.2515,"y":187.12555,"z":-23.85837},"screenPosition":{"x":1.0104271,"y":0.66197586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.97546,"y":187.31433,"z":-21.375404},"screenPosition":{"x":1.0013882,"y":0.6252094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.35995,"y":189.10307,"z":-20.044783},"screenPosition":{"x":1.023573,"y":0.60111105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.0503,"y":190.68265,"z":-20.867296},"screenPosition":{"x":1.052959,"y":0.6089703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.56628,"y":191.69757,"z":-22.853252},"screenPosition":{"x":1.078633,"y":0.63543916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.3516,"y":192.5283,"z":-24.874779},"screenPosition":{"x":1.102047,"y":0.66268265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.25903,"y":192.5916,"z":-27.772327},"screenPosition":{"x":1.1171448,"y":0.7048458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.267,"y":191.90224,"z":-29.957743},"screenPosition":{"x":1.1167065,"y":0.73857576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.3492,"y":190.47823,"z":-31.75803},"screenPosition":{"x":1.1026095,"y":0.76860255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.4014,"y":189.60233,"z":-30.462582},"screenPosition":{"x":1.0579398,"y":0.75933206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.49127,"y":188.32936,"z":-27.732546},"screenPosition":{"x":1.0485697,"y":0.71542084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.12964,"y":187.89279,"z":-25.43238},"screenPosition":{"x":1.0296813,"y":0.6832551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.5185,"y":188.31075,"z":-23.036867},"screenPosition":{"x":1.0254493,"y":0.64687276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.2436,"y":188.49875,"z":-20.555723},"screenPosition":{"x":1.0161784,"y":0.6102428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.4742,"y":188.94934,"z":-17.65069},"screenPosition":{"x":0.9971896,"y":0.57717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-15.514461},"screenPosition":{"x":0.98885477,"y":0.5383291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.15338,"y":189.80597,"z":-13.600533},"screenPosition":{"x":0.9236547,"y":0.52929896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.13388,"y":192.14954,"z":-14.387865},"screenPosition":{"x":0.84965324,"y":0.5696038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.79614,"y":192.93172,"z":-17.263292},"screenPosition":{"x":0.8262992,"y":0.63313365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9379,"y":189.77295,"z":-20.001131},"screenPosition":{"x":0.87478024,"y":0.6403757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.96268,"y":188.46371,"z":-21.612408},"screenPosition":{"x":0.9464503,"y":0.652631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.55902,"y":186.91524,"z":-24.097061},"screenPosition":{"x":1.0077586,"y":0.66621083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.8139,"y":188.10873,"z":-24.66302},"screenPosition":{"x":1.0301114,"y":0.6711572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.19028,"y":189.90303,"z":-22.799261},"screenPosition":{"x":1.0498406,"y":0.63923395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.2306,"y":190.55936,"z":-19.43858},"screenPosition":{"x":1.0440372,"y":0.5884216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.4649,"y":189.71521,"z":-16.564045},"screenPosition":{"x":1.0160805,"y":0.54886657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-14.540054},"screenPosition":{"x":0.98411906,"y":0.5240945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.8481,"y":188.72124,"z":-13.416338},"screenPosition":{"x":0.9587825,"y":0.5132765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.94922,"y":190.18045,"z":-11.769132},"screenPosition":{"x":0.90065724,"y":0.5081304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.69638,"y":191.94368,"z":-11.2309265},"screenPosition":{"x":0.83140236,"y":0.52689964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.24698,"y":194.08496,"z":-11.698353},"screenPosition":{"x":0.7643764,"y":0.55899906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.85593,"y":194.84204,"z":-14.224169},"screenPosition":{"x":0.7594419,"y":0.600304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.6929,"y":193.82423,"z":-16.519888},"screenPosition":{"x":0.80439955,"y":0.621332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.3341,"y":192.24376,"z":-17.26098},"screenPosition":{"x":0.84890485,"y":0.6247676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.7578,"y":190.56093,"z":-14.664446},"screenPosition":{"x":0.90375376,"y":0.5541198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.13284,"y":190.26686,"z":-11.855322},"screenPosition":{"x":0.8998668,"y":0.5094686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.0675,"y":190.70667,"z":-9.118042},"screenPosition":{"x":0.8621233,"y":0.48109603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.1132,"y":192.61035,"z":-7.541044},"screenPosition":{"x":0.8010737,"y":0.47524557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.61176,"y":194.72714,"z":-7.834747},"screenPosition":{"x":0.7322041,"y":0.50555205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.56836,"y":195.64783,"z":-11.192971},"screenPosition":{"x":0.7100314,"y":0.57097006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.1438,"y":194.50694,"z":-13.248045},"screenPosition":{"x":0.7644934,"y":0.5827216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.01114,"y":192.09178,"z":-12.202115},"screenPosition":{"x":0.8409482,"y":0.53696346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.30948,"y":190.34998,"z":-7.7377295},"screenPosition":{"x":0.8770948,"y":0.4503382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.02356,"y":193.03871,"z":-6.4037213},"screenPosition":{"x":0.77049583,"y":0.47135448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.81494,"y":194.82275,"z":-5.911941},"screenPosition":{"x":0.7196836,"y":0.47863793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.6573,"y":196.63075,"z":-7.5650005},"screenPosition":{"x":0.66767544,"y":0.5250075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.41678,"y":196.98814,"z":-10.095352},"screenPosition":{"x":0.66810477,"y":0.56636447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.86353,"y":195.78671,"z":-12.57789},"screenPosition":{"x":0.720069,"y":0.58786464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.30438,"y":194.5825,"z":-13.326834},"screenPosition":{"x":0.75885737,"y":0.5868937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.73315,"y":197.13701,"z":-2.9034963},"screenPosition":{"x":0.62820786,"y":0.46313184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.01447,"y":197.73993,"z":-1.1412959},"screenPosition":{"x":0.57925755,"y":0.4508357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.07697,"y":197.76933,"z":1.4867307},"screenPosition":{"x":0.57823974,"y":0.41350922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.11917,"y":196.37755,"z":3.818057},"screenPosition":{"x":0.6207613,"y":0.35560614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.42734,"y":194.64037,"z":3.5232418},"screenPosition":{"x":0.65501213,"y":0.3452839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.75116,"y":193.85164,"z":1.2395664},"screenPosition":{"x":0.71458596,"y":0.36435255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.8884,"y":194.85732,"z":-1.4302073},"screenPosition":{"x":0.6967544,"y":0.41359124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.7357,"y":196.66765,"z":-2.00932},"screenPosition":{"x":0.6394491,"y":0.4443007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.52786,"y":197.51096,"z":-0.69395196},"screenPosition":{"x":0.58568144,"y":0.44188508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.81277,"y":199.05666,"z":0.76432574},"screenPosition":{"x":0.5466316,"y":0.4331436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.97116,"y":199.1312,"z":2.9744108},"screenPosition":{"x":0.53341514,"y":0.4017736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.6326,"y":198.50133,"z":5.3192425},"screenPosition":{"x":0.5429363,"y":0.35977793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.6646,"y":197.5753,"z":7.384977},"screenPosition":{"x":0.56364924,"y":0.3182195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.2942,"y":196.45992,"z":9.447409},"screenPosition":{"x":0.5906669,"y":0.274382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.1784,"y":194.99377,"z":9.564473},"screenPosition":{"x":0.63878703,"y":0.2546527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.2644,"y":193.6226,"z":8.503674},"screenPosition":{"x":0.68537796,"y":0.25715148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.53253,"y":192.80768,"z":6.2517104},"screenPosition":{"x":0.6994725,"y":0.2833356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.46954,"y":193.71913,"z":3.4665933},"screenPosition":{"x":0.7013098,"y":0.33614025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.88617,"y":196.26791,"z":3.3596225},"screenPosition":{"x":0.62570983,"y":0.3617775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.06305,"y":194.9395,"z":6.5432544},"screenPosition":{"x":0.6552731,"y":0.29812106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.03757,"y":193.04532,"z":5.938364},"screenPosition":{"x":0.6940544,"y":0.29088482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.91138,"y":192.04485,"z":4.3314834},"screenPosition":{"x":0.75243145,"y":0.30307505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.00375,"y":191.61777,"z":2.254336},"screenPosition":{"x":0.78404236,"y":0.321878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.66165,"y":190.98624,"z":0.549746},"screenPosition":{"x":0.8062452,"y":0.3443959},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.47437,"y":190.42755,"z":-1.289246},"screenPosition":{"x":0.8325909,"y":0.36492994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.71335,"y":190.54002,"z":-5.262375},"screenPosition":{"x":0.8544085,"y":0.4194858},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-375.7367,"y":194.31538,"z":-6.737849},"screenPosition":{"x":0.7405472,"y":0.48446742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.7085,"y":195.71376,"z":-7.4126205},"screenPosition":{"x":0.6973876,"y":0.51151127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.61536,"y":196.14049,"z":-10.813936},"screenPosition":{"x":0.69974726,"y":0.5664439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.17337,"y":194.52086,"z":-12.475383},"screenPosition":{"x":0.76012975,"y":0.5717099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.87552,"y":192.49852,"z":-10.828568},"screenPosition":{"x":0.8207652,"y":0.5218969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.65768,"y":190.98436,"z":-9.075657},"screenPosition":{"x":0.85775745,"y":0.48070532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.26328,"y":190.32823,"z":-6.2037673},"screenPosition":{"x":0.86130637,"y":0.433723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1098,"y":191.19711,"z":-2.6766346},"screenPosition":{"x":0.8243643,"y":0.38681486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.21402,"y":192.65779,"z":-1.6108598},"screenPosition":{"x":0.7612521,"y":0.39635095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.09088,"y":194.48206,"z":-0.96543187},"screenPosition":{"x":0.7003603,"y":0.40740734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.83157,"y":196.71278,"z":-3.577159},"screenPosition":{"x":0.6455703,"y":0.46775913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.173,"y":195.46178,"z":-6.5024066},"screenPosition":{"x":0.6964231,"y":0.4986063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.3414,"y":193.65883,"z":-6.6240606},"screenPosition":{"x":0.750594,"y":0.4824811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.10617,"y":191.1954,"z":-4.494072},"screenPosition":{"x":0.83325434,"y":0.41334376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.77203,"y":191.03818,"z":-1.1682103},"screenPosition":{"x":0.82231176,"y":0.36282554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.50552,"y":191.38333,"z":1.5563557},"screenPosition":{"x":0.7922595,"y":0.33151004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.17664,"y":192.16966,"z":3.0358195},"screenPosition":{"x":0.7586182,"y":0.3200164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.10898,"y":194.02002,"z":3.550241},"screenPosition":{"x":0.69058025,"y":0.33895603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.42648,"y":195.58107,"z":3.6699922},"screenPosition":{"x":0.6447868,"y":0.3595313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.28683,"y":196.927,"z":2.322326},"screenPosition":{"x":0.60978395,"y":0.3842094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.9476,"y":198.17902,"z":0.49318868},"screenPosition":{"x":0.5767205,"y":0.42664456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.53952,"y":198.92809,"z":-0.65652275},"screenPosition":{"x":0.55780685,"y":0.45231986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.894,"y":199.56544,"z":-1.0788808},"screenPosition":{"x":0.53869367,"y":0.46632308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.29916,"y":200.22664,"z":0.15883182},"screenPosition":{"x":0.51072055,"y":0.4563682},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.46933,"y":199.3656,"z":-4.703322},"screenPosition":{"x":0.5629451,"y":0.5168147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.565,"y":197.99898,"z":-3.8426874},"screenPosition":{"x":0.60414684,"y":0.48744595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.06488,"y":197.2931,"z":-1.1565728},"screenPosition":{"x":0.60792464,"y":0.44499004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.07587,"y":198.23936,"z":0.8529039},"screenPosition":{"x":0.573343,"y":0.42180476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.9141,"y":199.57489,"z":1.2038505},"screenPosition":{"x":0.52728534,"y":0.43309203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.45474,"y":200.77039,"z":-1.2956176},"screenPosition":{"x":0.49973163,"y":0.48429844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.0187,"y":200.09467,"z":-3.4988945},"screenPosition":{"x":0.5307259,"y":0.5184567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.7997,"y":193.40395,"z":9.5974865},"screenPosition":{"x":0.68199444,"y":0.24363947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.06512,"y":191.64665,"z":9.743209},"screenPosition":{"x":0.7427141,"y":0.22308542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.7501,"y":190.08676,"z":8.83508},"screenPosition":{"x":0.80529034,"y":0.20499936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.06732,"y":189.29492,"z":6.1377616},"screenPosition":{"x":0.8444953,"y":0.23483916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.1766,"y":190.75801,"z":2.98274},"screenPosition":{"x":0.8114417,"y":0.2987431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.32693,"y":192.71092,"z":2.0337925},"screenPosition":{"x":0.75119865,"y":0.33660775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.65393,"y":194.27643,"z":3.0596542},"screenPosition":{"x":0.6892347,"y":0.34513268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.80487,"y":195.28856,"z":4.060783},"screenPosition":{"x":0.65157765,"y":0.3500693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.66507,"y":196.16388,"z":5.7793393},"screenPosition":{"x":0.61832535,"y":0.3243286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.06763,"y":196.82385,"z":8.019406},"screenPosition":{"x":0.5855211,"y":0.29971588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.97952,"y":196.31184,"z":10.115922},"screenPosition":{"x":0.5890118,"y":0.26619357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.70624,"y":195.24214,"z":12.444943},"screenPosition":{"x":0.6137646,"y":0.21852362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.6309,"y":194.2656,"z":14.349756},"screenPosition":{"x":0.6397125,"y":0.1757973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.12476,"y":189.81795,"z":16.924538},"screenPosition":{"x":0.684488,"y":0.14586979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.56503,"y":190.22386,"z":15.461771},"screenPosition":{"x":0.74657327,"y":0.122892894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.8765,"y":190.14624,"z":12.601687},"screenPosition":{"x":0.7847064,"y":0.16457585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.06512,"y":191.64665,"z":9.743209},"screenPosition":{"x":0.7427141,"y":0.22308542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.99442,"y":193.96611,"z":9.134514},"screenPosition":{"x":0.67500496,"y":0.24830335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.09637,"y":194.48463,"z":11.066152},"screenPosition":{"x":0.6483971,"y":0.22645788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.97528,"y":195.36874,"z":11.951721},"screenPosition":{"x":0.6147323,"y":0.22438706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.28696,"y":194.57431,"z":15.1367855},"screenPosition":{"x":0.6157448,"y":0.17131071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.6158,"y":186.7719,"z":19.901247},"screenPosition":{"x":0.71179724,"y":0.04793805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.47528,"y":185.66765,"z":20.834095},"screenPosition":{"x":0.7411039,"y":0.021595838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.04227,"y":187.11235,"z":22.151798},"screenPosition":{"x":0.7632309,"y":-0.0023309202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.62518,"y":187.5539,"z":21.269632},"screenPosition":{"x":0.79737586,"y":0.002237174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.0226,"y":190.01767,"z":20.92027},"screenPosition":{"x":0.83919805,"y":2.5730577E-4},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.7176,"y":190.22627,"z":16.862053},"screenPosition":{"x":0.8618092,"y":0.059438832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":15.182047},"screenPosition":{"x":0.83966625,"y":0.08989935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.1933,"y":189.35422,"z":14.186501},"screenPosition":{"x":0.80757815,"y":0.13270782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.20697,"y":190.60124,"z":15.820777},"screenPosition":{"x":0.7155321,"y":0.1343808},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-362.66327,"y":188.21173,"z":20.799618},"screenPosition":{"x":0.8099917,"y":0.0076058228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.83246,"y":190.14774,"z":22.436258},"screenPosition":{"x":0.83184636,"y":-0.020049067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.79776,"y":191.53926,"z":20.212343},"screenPosition":{"x":0.86705065,"y":0.006616362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.1173,"y":190.63683,"z":16.804338},"screenPosition":{"x":0.8669159,"y":0.060895476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.69406,"y":188.87457,"z":16.558718},"screenPosition":{"x":0.84205616,"y":0.06696506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.26562,"y":188.48369,"z":20.587202},"screenPosition":{"x":0.8162061,"y":0.009138058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.62988,"y":190.28627,"z":22.590193},"screenPosition":{"x":0.8330297,"y":-0.022351874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.2597,"y":191.22333,"z":20.546646},"screenPosition":{"x":0.8593353,"y":0.0035929964},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-356.50177,"y":192.4256,"z":15.364124},"screenPosition":{"x":0.90304977,"y":0.07676514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.86932,"y":193.54202,"z":15.236569},"screenPosition":{"x":0.9233652,"y":0.07406281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.5598,"y":195.1215,"z":13.565823},"screenPosition":{"x":0.9565234,"y":0.0945994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.336,"y":195.27457,"z":10.46936},"screenPosition":{"x":0.9743306,"y":0.13916974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.16153,"y":193.34218,"z":8.819989},"screenPosition":{"x":0.9496454,"y":0.16971691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.91132,"y":192.8294,"z":12.377065},"screenPosition":{"x":0.9258295,"y":0.117701136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.16525,"y":193.33965,"z":15.525867},"screenPosition":{"x":0.9180011,"y":0.07101711},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.92786,"y":194.8698,"z":13.456025},"screenPosition":{"x":0.9533211,"y":0.096598506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.00027,"y":194.82025,"z":10.648569},"screenPosition":{"x":0.96585757,"y":0.13800228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.53525,"y":194.4544,"z":8.172172},"screenPosition":{"x":0.97233677,"y":0.17487495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.83755,"y":193.56375,"z":5.7938466},"screenPosition":{"x":0.9696064,"y":0.21194991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.18408,"y":192.64285,"z":5.1051908},"screenPosition":{"x":0.95817876,"y":0.22442055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.6931,"y":191.61082,"z":2.5656226},"screenPosition":{"x":0.9534225,"y":0.26462632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.0,"y":193.45265,"z":-0.8930505},"screenPosition":{"x":0.9995797,"y":0.31044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.95752,"y":194.84952,"z":4.1332655},"screenPosition":{"x":0.9983053,"y":0.2328431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.40793,"y":193.17368,"z":7.941999},"screenPosition":{"x":0.95290786,"y":0.18158965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.63315,"y":190.96794,"z":4.6064444},"screenPosition":{"x":0.93373096,"y":0.23609048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.542,"y":192.39809,"z":1.2045135},"screenPosition":{"x":0.9732095,"y":0.28204423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.57242,"y":194.42897,"z":3.1426818},"screenPosition":{"x":0.99637276,"y":0.24841475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.62646,"y":193.70811,"z":8.885642},"screenPosition":{"x":0.95680404,"y":0.1664809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.04248,"y":190.68799,"z":-9.207235},"screenPosition":{"x":0.9962478,"y":0.43869707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.7266,"y":189.53624,"z":-11.723422},"screenPosition":{"x":0.9901262,"y":0.47839266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.0459,"y":188.8143,"z":-11.610937},"screenPosition":{"x":0.9469177,"y":0.48804605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.36322,"y":190.84581,"z":-9.096804},"screenPosition":{"x":0.8599429,"y":0.48089883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.28677,"y":190.80984,"z":-6.558764},"screenPosition":{"x":0.85609317,"y":0.43876716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.29077,"y":190.81172,"z":-4.7289147},"screenPosition":{"x":0.84055156,"y":0.41663113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.82404,"y":190.12155,"z":-1.6068622},"screenPosition":{"x":0.84985024,"y":0.36165774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.51147,"y":189.97449,"z":0.7504184},"screenPosition":{"x":0.8483113,"y":0.3217242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":4.149485},"screenPosition":{"x":0.89328575,"y":0.2510685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.83936,"y":190.82692,"z":2.0307727},"screenPosition":{"x":0.94372433,"y":0.27428204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.52585,"y":190.35744,"z":-1.2628382},"screenPosition":{"x":0.95183635,"y":0.32387102},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-359.3735,"y":190.46161,"z":-6.6873903},"screenPosition":{"x":0.9804968,"y":0.40240172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.41156,"y":192.48727,"z":-8.2162075},"screenPosition":{"x":1.0204262,"y":0.41943336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.42947,"y":193.84283,"z":-5.47211},"screenPosition":{"x":1.0284194,"y":0.37606227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.5438,"y":193.08076,"z":-1.4848071},"screenPosition":{"x":0.99723256,"y":0.3195443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.85825,"y":190.81401,"z":-1.4413686},"screenPosition":{"x":0.96065426,"y":0.32484287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-3.761576},"screenPosition":{"x":0.9317344,"y":0.36663717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-5.889825},"screenPosition":{"x":0.94207793,"y":0.3977277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.68347,"y":188.17322,"z":-8.551702},"screenPosition":{"x":0.95519143,"y":0.4371442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.77914,"y":188.21823,"z":-11.721459},"screenPosition":{"x":0.95578504,"y":0.48900762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.29822,"y":189.1453,"z":-13.903373},"screenPosition":{"x":0.99444884,"y":0.51126176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.86075,"y":190.8123,"z":-14.973717},"screenPosition":{"x":1.0263956,"y":0.52253455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.59012,"y":192.36516,"z":-13.56301},"screenPosition":{"x":1.0440061,"y":0.4981032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.48883,"y":191.75053,"z":-10.784103},"screenPosition":{"x":1.0210866,"y":0.45887482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.4627,"y":190.40059,"z":-8.143566},"screenPosition":{"x":0.9865951,"y":0.42383397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-10.503979},"screenPosition":{"x":0.9679456,"y":0.46467537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-13.934366},"screenPosition":{"x":0.9774253,"y":0.5160411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-17.626034},"screenPosition":{"x":0.99911726,"y":0.5691761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.57825,"y":190.3216,"z":-17.966253},"screenPosition":{"x":1.0330669,"y":0.56753546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.32092,"y":191.86537,"z":-17.608541},"screenPosition":{"x":1.0560964,"y":0.558269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.35648,"y":193.20885,"z":-16.432455},"screenPosition":{"x":1.0719348,"y":0.53757167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.0768,"y":194.08403,"z":-13.701001},"screenPosition":{"x":1.072495,"y":0.49548787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.63614,"y":193.0176,"z":-10.219299},"screenPosition":{"x":1.0382025,"y":0.44757724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.79724,"y":190.85571,"z":-10.7537},"screenPosition":{"x":1.0065823,"y":0.46077284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.37952,"y":189.7736,"z":-13.192972},"screenPosition":{"x":1.0010766,"y":0.4992393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.82367,"y":190.15373,"z":-16.415483},"screenPosition":{"x":1.022837,"y":0.54532033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.27536,"y":191.21263,"z":-18.5232},"screenPosition":{"x":1.0500692,"y":0.57333934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.78452,"y":192.23221,"z":-19.978924},"screenPosition":{"x":1.0735022,"y":0.5919366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.0976,"y":193.38591,"z":-21.804895},"screenPosition":{"x":1.1008863,"y":0.61559147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.5125,"y":194.46994,"z":-23.710155},"screenPosition":{"x":1.1275377,"y":0.6405871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.77823,"y":194.97212,"z":-26.454178},"screenPosition":{"x":1.1489309,"y":0.67935866},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-355.35712,"y":193.20842,"z":-30.56581},"screenPosition":{"x":1.1406175,"y":0.74403983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.22604,"y":192.61417,"z":-32.47019},"screenPosition":{"x":1.140339,"y":0.7734154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.6291,"y":192.33852,"z":-34.712532},"screenPosition":{"x":1.1468148,"y":0.8068941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.8572,"y":192.8664,"z":-37.264492},"screenPosition":{"x":1.1676867,"y":0.84279275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.64993,"y":194.21967,"z":-39.95407},"screenPosition":{"x":1.1807038,"y":0.87922263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.49445,"y":195.1662,"z":-40.06663},"screenPosition":{"x":1.2182028,"y":0.87770814},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-351.67914,"y":195.7238,"z":-32.064068},"screenPosition":{"x":1.1882553,"y":0.75934327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.8731,"y":194.90724,"z":-30.89849},"screenPosition":{"x":1.1694899,"y":0.74445325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.56894,"y":193.06357,"z":-31.256292},"screenPosition":{"x":1.1409085,"y":0.7547579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.69403,"y":191.61021,"z":-33.793034},"screenPosition":{"x":1.1306611,"y":0.79536796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.0346,"y":192.58878,"z":-36.6016},"screenPosition":{"x":1.13569,"y":0.841197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.81055,"y":193.42592,"z":-38.322426},"screenPosition":{"x":1.1574839,"y":0.8641445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.80936,"y":194.11063,"z":-39.729935},"screenPosition":{"x":1.1753099,"y":0.8829139},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.18582,"y":195.22096,"z":-42.01238},"screenPosition":{"x":1.1994947,"y":0.9240398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.71915,"y":196.22403,"z":-44.07434},"screenPosition":{"x":1.230331,"y":0.9408474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.79434,"y":195.645,"z":-40.570023},"screenPosition":{"x":1.2272061,"y":0.88408166},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-062731/brain-CBB34C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[-0.4408691739395847,-0.3124781571365953,0.8414224698582425,0.0,0.7144163776198817,0.4453367838008808,0.539707687903715,0.0,-0.5433632402530689,0.839066475499054,0.026904253107656984,0.0,-430.50365329852355,306.1296604240281,-19.096213728354705,1.0]},"baseImage":"20190825-062731/base.webp","version":0,"savedAt":1.566714708134E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-064722-v0.json b/data/mapping/BAAAHS/dwayman/20190825-064722-v0.json new file mode 100644 index 0000000000..d11b6f7897 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-064722-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566715642814E12,"surfaces":[{"brainId":"CBDACC","panelName":"39D","pixels":[{"modelPosition":{"x":-407.5564,"y":152.85902,"z":-57.95799},"screenPosition":{"x":0.07567679,"y":0.13768396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.1071,"y":152.15346,"z":-59.332535},"screenPosition":{"x":0.07119526,"y":0.18874969},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.42352,"y":151.7846,"z":-60.513134},"screenPosition":{"x":0.08332547,"y":0.24319963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.79413,"y":151.5628,"z":-62.02995},"screenPosition":{"x":0.09564541,"y":0.31493825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.47095,"y":153.55095,"z":-61.85289},"screenPosition":{"x":0.14190334,"y":0.35523042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.69055,"y":156.8554,"z":-59.191822},"screenPosition":{"x":0.19102798,"y":0.3017124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.7993,"y":157.09807,"z":-57.915527},"screenPosition":{"x":0.18192375,"y":0.24278943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.07288,"y":157.22504,"z":-56.6638},"screenPosition":{"x":0.17029206,"y":0.18224908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.251,"y":157.24673,"z":-55.556892},"screenPosition":{"x":0.15780161,"y":0.12646885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.94946,"y":155.61098,"z":-55.72039},"screenPosition":{"x":0.11991451,"y":0.09425886},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-409.21072,"y":153.16243,"z":-57.88422},"screenPosition":{"x":0.068963714,"y":0.107467465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.91452,"y":152.2524,"z":-59.37112},"screenPosition":{"x":0.064303346,"y":0.16057101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.0713,"y":151.8842,"z":-61.0485},"screenPosition":{"x":0.06826584,"y":0.22212946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.1804,"y":150.92152,"z":-61.431202},"screenPosition":{"x":0.06458204,"y":0.26410526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.8807,"y":150.46829,"z":-62.997143},"screenPosition":{"x":0.08066931,"y":0.3367622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.83047,"y":149.31029,"z":-64.59021},"screenPosition":{"x":0.07089055,"y":0.38943166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.62628,"y":148.96233,"z":-66.01132},"screenPosition":{"x":0.07913601,"y":0.45311472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.57834,"y":148.93541,"z":-67.0581},"screenPosition":{"x":0.090792134,"y":0.5057062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.5218,"y":149.34526,"z":-67.70597},"screenPosition":{"x":0.108386375,"y":0.54882354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.8405,"y":150.10748,"z":-68.34029},"screenPosition":{"x":0.134408,"y":0.59995747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9313,"y":149.63858,"z":-69.72584},"screenPosition":{"x":0.13928095,"y":0.6588587},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.77203,"y":146.60135,"z":-74.10612},"screenPosition":{"x":0.11694895,"y":0.8062638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.39273,"y":148.94789,"z":-72.628204},"screenPosition":{"x":0.1567352,"y":0.7889748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.37585,"y":151.45796,"z":-70.319466},"screenPosition":{"x":0.19054174,"y":0.73414},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-385.9057,"y":154.2734,"z":-67.456},"screenPosition":{"x":0.225385,"y":0.6582085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.3573,"y":156.11006,"z":-65.53517},"screenPosition":{"x":0.24749324,"y":0.60598546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.84543,"y":159.01874,"z":-65.10147},"screenPosition":{"x":0.3132466,"y":0.6553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.85162,"y":159.13887,"z":-66.48447},"screenPosition":{"x":0.33237168,"y":0.7293284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.98376,"y":158.62819,"z":-67.38898},"screenPosition":{"x":0.33058074,"y":0.76269525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.99658,"y":158.81703,"z":-68.20624},"screenPosition":{"x":0.34478876,"y":0.80895525},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-371.47543,"y":159.78581,"z":-69.614876},"screenPosition":{"x":0.38416943,"y":0.90298164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.14938,"y":161.2097,"z":-68.4486},"screenPosition":{"x":0.40534317,"y":0.87943214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.36346,"y":162.93073,"z":-66.72065},"screenPosition":{"x":0.42767274,"y":0.8359851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0493,"y":164.43066,"z":-64.99377},"screenPosition":{"x":0.44362783,"y":0.7845966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.74597,"y":166.62491,"z":-63.119507},"screenPosition":{"x":0.474882,"y":0.742941},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.88068,"y":168.88185,"z":-61.966805},"screenPosition":{"x":0.5162843,"y":0.74054074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.21194,"y":170.81439,"z":-62.963856},"screenPosition":{"x":0.55150783,"y":0.7886136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.01428,"y":168.1892,"z":-64.58984},"screenPosition":{"x":0.5294662,"y":0.85526454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.09427,"y":166.3448,"z":-66.28036},"screenPosition":{"x":0.50397485,"y":0.89439964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.20477,"y":164.447,"z":-67.479706},"screenPosition":{"x":0.4719009,"y":0.9085473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.09964,"y":162.07518,"z":-68.71233},"screenPosition":{"x":0.428859,"y":0.91289485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.0702,"y":160.61746,"z":-69.571815},"screenPosition":{"x":0.40352112,"y":0.9205729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.49753,"y":158.91914,"z":-70.41737},"screenPosition":{"x":0.37229583,"y":0.9218657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.73383,"y":157.06938,"z":-70.98023},"screenPosition":{"x":0.33436665,"y":0.9056838},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-379.80606,"y":158.55505,"z":-66.54716},"screenPosition":{"x":0.31890017,"y":0.7180526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.26804,"y":156.12492,"z":-67.06299},"screenPosition":{"x":0.2658988,"y":0.68363804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.7623,"y":154.14122,"z":-68.6476},"screenPosition":{"x":0.23618233,"y":0.7155601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.47556,"y":152.18884,"z":-70.592995},"screenPosition":{"x":0.21154666,"y":0.76616573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.2911,"y":153.735,"z":-70.754715},"screenPosition":{"x":0.25107795,"y":0.81270206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.54556,"y":155.24097,"z":-67.74053},"screenPosition":{"x":0.2522791,"y":0.69665784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.79047,"y":152.27403,"z":-68.86022},"screenPosition":{"x":0.19324036,"y":0.6801153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.28897,"y":150.91592,"z":-70.8632},"screenPosition":{"x":0.1839733,"y":0.74753386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.07388,"y":149.87366,"z":-72.431694},"screenPosition":{"x":0.17685814,"y":0.80222857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.30978,"y":147.39491,"z":-75.10121},"screenPosition":{"x":0.14789608,"y":0.876759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.47968,"y":154.50246,"z":-71.44916},"screenPosition":{"x":0.27792317,"y":0.86704916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.5224,"y":153.83696,"z":-73.077095},"screenPosition":{"x":0.28027183,"y":0.932092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.4209,"y":151.40965,"z":-74.88521},"screenPosition":{"x":0.2422067,"y":0.96339387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.14178,"y":149.58669,"z":-75.69365},"screenPosition":{"x":0.20760435,"y":0.95991033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.68176,"y":148.96396,"z":-76.41349},"screenPosition":{"x":0.17784742,"y":0.9309802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.08414,"y":147.29486,"z":-75.30616},"screenPosition":{"x":0.14799455,"y":0.8842532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.1496,"y":148.08481,"z":-73.54627},"screenPosition":{"x":0.14639862,"y":0.8147394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.03723,"y":150.48961,"z":-71.38236},"screenPosition":{"x":0.17970459,"y":0.76338255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.2,"y":152.56735,"z":-70.88009},"screenPosition":{"x":0.22413494,"y":0.79015046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.86563,"y":152.22461,"z":-72.361336},"screenPosition":{"x":0.2332147,"y":0.8570223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.19788,"y":151.3711,"z":-74.93182},"screenPosition":{"x":0.21997933,"y":0.9222908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.04816,"y":148.36963,"z":-76.77933},"screenPosition":{"x":0.16967519,"y":0.9533176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.10132,"y":146.42134,"z":-76.10397},"screenPosition":{"x":0.1359954,"y":0.9036562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.66995,"y":146.42737,"z":-74.81667},"screenPosition":{"x":0.12130432,"y":0.83736974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.03238,"y":146.5909,"z":-73.985855},"screenPosition":{"x":0.115210585,"y":0.8000906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.1064,"y":146.94408,"z":-72.62487},"screenPosition":{"x":0.10812668,"y":0.73875475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.0589,"y":146.86572,"z":-71.722916},"screenPosition":{"x":0.095284544,"y":0.69176495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.3411,"y":146.55594,"z":-70.87009},"screenPosition":{"x":0.07771476,"y":0.64069873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.03094,"y":145.35695,"z":-70.63468},"screenPosition":{"x":0.047961365,"y":0.59541154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.7462,"y":144.41138,"z":-72.18252},"screenPosition":{"x":0.017444124,"y":0.61603373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.30344,"y":140.17409,"z":-72.3085},"screenPosition":{"x":-0.004099238,"y":0.67768836},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-392.4229,"y":142.30199,"z":-76.70481},"screenPosition":{"x":0.019194447,"y":0.7812834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.1901,"y":141.44537,"z":-77.1602},"screenPosition":{"x":0.027315607,"y":0.83410764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.83853,"y":141.97617,"z":-77.843636},"screenPosition":{"x":0.04827161,"y":0.88203114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.39813,"y":142.4704,"z":-78.10616},"screenPosition":{"x":0.06338733,"y":0.9076333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.39377,"y":143.53276,"z":-78.12562},"screenPosition":{"x":0.08947157,"y":0.934945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.0359,"y":143.32126,"z":-79.53354},"screenPosition":{"x":0.10029474,"y":1.0000709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.8796,"y":141.81729,"z":-81.02838},"screenPosition":{"x":0.08080909,"y":1.037863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.01343,"y":140.15094,"z":-83.46721},"screenPosition":{"x":0.045051716,"y":1.0691934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.2697,"y":139.27003,"z":-83.10948},"screenPosition":{"x":0.020139001,"y":1.0307475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.93185,"y":138.82523,"z":-82.654205},"screenPosition":{"x":0.004644113,"y":0.99272245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.31528,"y":139.22943,"z":-80.141365},"screenPosition":{"x":0.006722259,"y":0.9234002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.2981,"y":140.10295,"z":-79.34356},"screenPosition":{"x":0.020323073,"y":0.9119328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.72992,"y":140.04549,"z":-78.68213},"screenPosition":{"x":0.011389654,"y":0.8702166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.38837,"y":141.57567,"z":-77.891556},"screenPosition":{"x":0.015474846,"y":0.8236671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.20215,"y":142.84906,"z":-75.81094},"screenPosition":{"x":0.021996075,"y":0.7493596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.42755,"y":143.7094,"z":-74.40525},"screenPosition":{"x":0.026401924,"y":0.6991563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.79422,"y":144.66891,"z":-72.83752},"screenPosition":{"x":0.03131566,"y":0.64316577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.20734,"y":145.66103,"z":-71.216515},"screenPosition":{"x":0.036396362,"y":0.58527267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.597,"y":146.63667,"z":-69.6224},"screenPosition":{"x":0.030350287,"y":0.52490276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.9167,"y":147.56319,"z":-68.108574},"screenPosition":{"x":0.046137534,"y":0.47427496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.30707,"y":148.53937,"z":-66.51362},"screenPosition":{"x":0.05113659,"y":0.4173122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.38583,"y":149.1789,"z":-64.43438},"screenPosition":{"x":0.05508489,"y":0.37232247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.5575,"y":152.45642,"z":-62.820087},"screenPosition":{"x":0.1266409,"y":0.37732142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.04306,"y":152.59747,"z":-64.4436},"screenPosition":{"x":0.14916773,"y":0.46341792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.7064,"y":151.12364,"z":-66.47114},"screenPosition":{"x":0.13714479,"y":0.5300594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.08136,"y":149.83948,"z":-67.9685},"screenPosition":{"x":0.12350209,"y":0.5744257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.60596,"y":148.80765,"z":-69.65726},"screenPosition":{"x":0.11825158,"y":0.63478184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.21744,"y":148.31786,"z":-70.80229},"screenPosition":{"x":0.11979795,"y":0.6809037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.06314,"y":147.49133,"z":-72.141266},"screenPosition":{"x":0.115430675,"y":0.7285508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.80478,"y":146.99632,"z":-73.226166},"screenPosition":{"x":0.11614273,"y":0.7714839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.7915,"y":146.8589,"z":-74.35764},"screenPosition":{"x":0.12610576,"y":0.82564676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.0211,"y":145.94801,"z":-76.08196},"screenPosition":{"x":0.124217,"y":0.890809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.1704,"y":144.5638,"z":-77.78429},"screenPosition":{"x":0.11412204,"y":0.95592993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.72845,"y":144.02171,"z":-79.455605},"screenPosition":{"x":0.093403615,"y":0.9638555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.66498,"y":141.34178,"z":-81.062515},"screenPosition":{"x":0.0699263,"y":1.0280228},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-386.66995,"y":139.22592,"z":-82.41519},"screenPosition":{"x":0.011490967,"y":0.99560404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.65982,"y":138.95793,"z":-82.16864},"screenPosition":{"x":0.0017926255,"y":0.9763341},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.05896,"y":151.87825,"z":-71.0876},"screenPosition":{"x":0.20999138,"y":0.7827932},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-384.9427,"y":155.29399,"z":-66.99441},"screenPosition":{"x":0.24479462,"y":0.66001016},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-391.43314,"y":152.63324,"z":-66.21194},"screenPosition":{"x":0.17105891,"y":0.5537269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.30896,"y":149.43407,"z":-68.72819},"screenPosition":{"x":0.12283438,"y":0.6024584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.6512,"y":147.75493,"z":-71.1055},"screenPosition":{"x":0.10989467,"y":0.68183583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.7529,"y":147.98033,"z":-72.343666},"screenPosition":{"x":0.12971206,"y":0.7509642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.82877,"y":149.51604,"z":-72.385124},"screenPosition":{"x":0.1675747,"y":0.7911231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.84192,"y":151.34145,"z":-71.69146},"screenPosition":{"x":0.20407507,"y":0.8000212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.68823,"y":153.78804,"z":-70.00859},"screenPosition":{"x":0.24359347,"y":0.7760544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.78598,"y":155.0244,"z":-69.31748},"screenPosition":{"x":0.265555,"y":0.77152455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.7344,"y":157.64496,"z":-66.92405},"screenPosition":{"x":0.30125326,"y":0.7140096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.77603,"y":159.23973,"z":-64.93208},"screenPosition":{"x":0.31661695,"y":0.6522954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.60727,"y":160.36638,"z":-62.978245},"screenPosition":{"x":0.32104075,"y":0.58100617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.36877,"y":160.07748,"z":-62.365936},"screenPosition":{"x":0.30677652,"y":0.5430394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.33878,"y":160.76216,"z":-60.75087},"screenPosition":{"x":0.30444473,"y":0.477831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.862,"y":163.5089,"z":-58.45314},"screenPosition":{"x":0.34426948,"y":0.42898098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.17908,"y":166.41315,"z":-56.611885},"screenPosition":{"x":0.3932963,"y":0.40725842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.91666,"y":168.61705,"z":-56.20531},"screenPosition":{"x":0.44215193,"y":0.44117793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.44125,"y":167.58522,"z":-57.89407},"screenPosition":{"x":0.43690142,"y":0.50153404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.28726,"y":168.39525,"z":-57.722126},"screenPosition":{"x":0.45459348,"y":0.5128559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.3437,"y":169.6734,"z":-57.51206},"screenPosition":{"x":0.48322964,"y":0.5338362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.333,"y":172.30362,"z":-56.58632},"screenPosition":{"x":0.5363547,"y":0.551904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.06107,"y":170.03464,"z":-60.313614},"screenPosition":{"x":0.5249705,"y":0.6853252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.16257,"y":166.93552,"z":-62.624905},"screenPosition":{"x":0.47672907,"y":0.72613424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.7114,"y":165.04742,"z":-62.597008},"screenPosition":{"x":0.43044978,"y":0.6779344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.23447,"y":164.46962,"z":-61.3724},"screenPosition":{"x":0.4019848,"y":0.6013121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.44095,"y":165.94867,"z":-59.404995},"screenPosition":{"x":0.41482413,"y":0.53767926},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-384.07635,"y":162.96606,"z":-60.344296},"screenPosition":{"x":0.35330036,"y":0.5117505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.10483,"y":162.73541,"z":-59.045994},"screenPosition":{"x":0.33241773,"y":0.43998045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.1445,"y":164.83565,"z":-56.08939},"screenPosition":{"x":0.34875906,"y":0.3415895},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-380.09497,"y":171.96329,"z":-54.025284},"screenPosition":{"x":0.49794224,"y":0.4131463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.23807,"y":170.45892,"z":-54.34461},"screenPosition":{"x":0.4650945,"y":0.39214367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.82584,"y":169.08595,"z":-54.81976},"screenPosition":{"x":0.43726826,"y":0.38230106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.70004,"y":168.0288,"z":-54.86044},"screenPosition":{"x":0.41201833,"y":0.3581781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.7216,"y":166.0929,"z":-55.6388},"screenPosition":{"x":0.3740579,"y":0.3498147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.4914,"y":163.73068,"z":-56.936325},"screenPosition":{"x":0.33182794,"y":0.357303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.84885,"y":161.68349,"z":-59.146805},"screenPosition":{"x":0.30800214,"y":0.41904625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.0979,"y":161.03017,"z":-61.122654},"screenPosition":{"x":0.3153399,"y":0.50338715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.7332,"y":159.73555,"z":-62.49976},"screenPosition":{"x":0.30003378,"y":0.54133976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.41373,"y":157.3882,"z":-65.3251},"screenPosition":{"x":0.27612936,"y":0.62696576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.49188,"y":160.055,"z":-64.820274},"screenPosition":{"x":0.33509475,"y":0.6673549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.1925,"y":161.23831,"z":-64.87529},"screenPosition":{"x":0.36454076,"y":0.6994727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.56808,"y":163.22725,"z":-63.350803},"screenPosition":{"x":0.39501673,"y":0.6711885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.82242,"y":166.42119,"z":-60.77443},"screenPosition":{"x":0.44241992,"y":0.61903214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.64713,"y":165.79115,"z":-58.948517},"screenPosition":{"x":0.40564004,"y":0.5107319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.77863,"y":162.00735,"z":-62.874874},"screenPosition":{"x":0.35973045,"y":0.6167493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.71545,"y":162.3485,"z":-64.088486},"screenPosition":{"x":0.3823062,"y":0.686948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.3728,"y":164.07907,"z":-63.6599},"screenPosition":{"x":0.4193834,"y":0.7080204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.5941,"y":165.2415,"z":-63.474396},"screenPosition":{"x":0.44549212,"y":0.7273832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.37494,"y":166.89815,"z":-63.551422},"screenPosition":{"x":0.48671654,"y":0.7723482},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-375.7203,"y":166.24721,"z":-61.48499},"screenPosition":{"x":0.446571,"y":0.6510833},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.73282,"y":164.79951,"z":-63.81317},"screenPosition":{"x":0.43870416,"y":0.73352265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.90198,"y":158.60889,"z":-64.4536},"screenPosition":{"x":0.29567254,"y":0.61223644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.02322,"y":157.40387,"z":-65.50549},"screenPosition":{"x":0.27866948,"y":0.63629705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.64764,"y":155.41493,"z":-67.029976},"screenPosition":{"x":0.24817167,"y":0.6647405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.36755,"y":153.53128,"z":-68.40964},"screenPosition":{"x":0.2185392,"y":0.6883405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.21762,"y":151.6424,"z":-69.72917},"screenPosition":{"x":0.18808767,"y":0.7086759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-387.49286,"y":149.62733,"z":-70.953},"screenPosition":{"x":0.15344006,"y":0.72101647},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-395.35556,"y":153.23955,"z":-63.69492},"screenPosition":{"x":0.15598908,"y":0.44123477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.80035,"y":151.68295,"z":-63.41294},"screenPosition":{"x":0.11511124,"y":0.38791612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.70892,"y":148.87875,"z":-65.04924},"screenPosition":{"x":0.06604721,"y":0.4018085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.919,"y":147.71031,"z":-66.52204},"screenPosition":{"x":0.048879046,"y":0.4430362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.58237,"y":146.23648,"z":-68.549576},"screenPosition":{"x":0.042932115,"y":0.51079977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.56165,"y":145.90979,"z":-70.81007},"screenPosition":{"x":0.037670285,"y":0.57075673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.4604,"y":145.85638,"z":-70.95734},"screenPosition":{"x":0.06171581,"y":0.62780553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.6298,"y":148.00284,"z":-69.889336},"screenPosition":{"x":0.10139384,"y":0.6266487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.5607,"y":149.86038,"z":-68.20902},"screenPosition":{"x":0.12691943,"y":0.5870092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.9449,"y":151.41255,"z":-67.08344},"screenPosition":{"x":0.15137726,"y":0.5683706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.35513,"y":153.29099,"z":-65.64365},"screenPosition":{"x":0.18016012,"y":0.5416576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.479,"y":154.8536,"z":-64.63833},"screenPosition":{"x":0.20636664,"y":0.529225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.29062,"y":157.41069,"z":-62.870766},"screenPosition":{"x":0.24781115,"y":0.5026502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.45383,"y":159.437,"z":-60.419765},"screenPosition":{"x":0.26829964,"y":0.42815194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.8642,"y":159.62744,"z":-58.54217},"screenPosition":{"x":0.25086176,"y":0.33731946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.79028,"y":157.58627,"z":-59.46535},"screenPosition":{"x":0.2120329,"y":0.33373815},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-395.69357,"y":150.9348,"z":-65.65388},"screenPosition":{"x":0.12293676,"y":0.4837994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.9213,"y":148.84138,"z":-65.97575},"screenPosition":{"x":0.07581759,"y":0.44825244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.94937,"y":148.99031,"z":-65.77682},"screenPosition":{"x":0.053445924,"y":0.39099804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.2619,"y":149.9118,"z":-64.2712},"screenPosition":{"x":0.049276687,"y":0.3344591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.88992,"y":150.12889,"z":-62.840706},"screenPosition":{"x":0.05342866,"y":0.2844848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.5497,"y":151.51802,"z":-61.646816},"screenPosition":{"x":0.06051546,"y":0.24152999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.02426,"y":150.44704,"z":-63.396683},"screenPosition":{"x":0.062443554,"y":0.3064718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.6059,"y":149.45123,"z":-65.02372},"screenPosition":{"x":0.055806365,"y":0.36410153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.49414,"y":149.47302,"z":-65.10681},"screenPosition":{"x":0.08092693,"y":0.4197479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.3269,"y":150.14565,"z":-66.06634},"screenPosition":{"x":0.10858201,"y":0.48523256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.4616,"y":152.40259,"z":-64.91364},"screenPosition":{"x":0.15009545,"y":0.48223537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.75922,"y":155.04929,"z":-62.82086},"screenPosition":{"x":0.18975346,"y":0.44160324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.5167,"y":157.4593,"z":-60.717083},"screenPosition":{"x":0.22366457,"y":0.3942785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-395.10507,"y":159.35944,"z":-58.170383},"screenPosition":{"x":0.23995697,"y":0.31178528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.44382,"y":158.6398,"z":-56.66969},"screenPosition":{"x":0.20479295,"y":0.21760178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.71014,"y":155.42496,"z":-59.005543},"screenPosition":{"x":0.15402411,"y":0.2567934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.1783,"y":153.11497,"z":-60.90437},"screenPosition":{"x":0.12013746,"y":0.29616928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.9566,"y":152.004,"z":-63.0386},"screenPosition":{"x":0.1183674,"y":0.37702328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.19736,"y":153.42398,"z":-63.10462},"screenPosition":{"x":0.15353501,"y":0.41577077},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-395.86856,"y":158.56508,"z":-58.52272},"screenPosition":{"x":0.2247679,"y":0.31002972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.0966,"y":158.10822,"z":-57.333675},"screenPosition":{"x":0.1997654,"y":0.238113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-402.13336,"y":155.80426,"z":-57.945206},"screenPosition":{"x":0.15078463,"y":0.21224292},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-402.54044,"y":151.64197,"z":-61.584473},"screenPosition":{"x":0.09228674,"y":0.29427555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.75873,"y":151.66478,"z":-61.407032},"screenPosition":{"x":0.058064487,"y":0.23203047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.35883,"y":152.57977,"z":-58.81337},"screenPosition":{"x":0.084375784,"y":0.1758291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.0228,"y":154.37906,"z":-57.819054},"screenPosition":{"x":0.11461508,"y":0.1705127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-406.18567,"y":154.7688,"z":-56.87898},"screenPosition":{"x":0.11304425,"y":0.13233973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.9036,"y":153.39061,"z":-57.294},"screenPosition":{"x":0.07755733,"y":0.116255745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.32416,"y":152.76381,"z":-59.611324},"screenPosition":{"x":0.072770365,"y":0.1708018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-407.3917,"y":151.88535,"z":-59.970856},"screenPosition":{"x":0.062423598,"y":0.18199018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.72974,"y":147.9102,"z":-66.4658},"screenPosition":{"x":0.042066578,"y":0.41395232},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-397.10757,"y":148.47775,"z":-67.216484},"screenPosition":{"x":0.08172026,"y":0.50211823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.8343,"y":149.98734,"z":-66.95729},"screenPosition":{"x":0.115207724,"y":0.52664036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.81274,"y":151.92325,"z":-66.17893},"screenPosition":{"x":0.15316819,"y":0.5350038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.5547,"y":153.06477,"z":-65.75291},"screenPosition":{"x":0.17598878,"y":0.54149085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.90613,"y":154.22197,"z":-65.50727},"screenPosition":{"x":0.20121396,"y":0.55778563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.42245,"y":155.26346,"z":-65.2862},"screenPosition":{"x":0.22400378,"y":0.57219285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.20105,"y":155.78902,"z":-65.90951},"screenPosition":{"x":0.24416675,"y":0.6167059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.1012,"y":156.74612,"z":-66.073784},"screenPosition":{"x":0.2694016,"y":0.64860064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.151,"y":157.95555,"z":-66.42945},"screenPosition":{"x":0.30292568,"y":0.69721055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.83444,"y":160.0124,"z":-65.68666},"screenPosition":{"x":0.3442479,"y":0.7103801},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-378.24533,"y":165.16394,"z":-61.225018},"screenPosition":{"x":0.4171345,"y":0.6108515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.13504,"y":165.37529,"z":-59.58794},"screenPosition":{"x":0.4030077,"y":0.5325422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.59927,"y":164.07625,"z":-59.557487},"screenPosition":{"x":0.3710658,"y":0.4992258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.56894,"y":163.12437,"z":-59.453346},"screenPosition":{"x":0.34667465,"y":0.47034273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.016,"y":162.69885,"z":-58.625084},"screenPosition":{"x":0.32657743,"y":0.41765913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-389.9163,"y":161.96797,"z":-58.35155},"screenPosition":{"x":0.30559134,"y":0.38553837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-391.86844,"y":160.25307,"z":-58.960526},"screenPosition":{"x":0.27099827,"y":0.37412727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.41956,"y":159.49605,"z":-58.38634},"screenPosition":{"x":0.24583445,"y":0.32613105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.7758,"y":159.53944,"z":-56.172527},"screenPosition":{"x":0.22084081,"y":0.21459725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-393.9864,"y":163.33209,"z":-55.061287},"screenPosition":{"x":0.3000746,"y":0.25202793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-392.01642,"y":162.64742,"z":-56.676353},"screenPosition":{"x":0.3024064,"y":0.31723627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-390.43695,"y":161.94707,"z":-58.11103},"screenPosition":{"x":0.30223522,"y":0.37287834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.25882,"y":161.92538,"z":-59.217937},"screenPosition":{"x":0.31473628,"y":0.42858732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.24554,"y":161.78796,"z":-60.349407},"screenPosition":{"x":0.32468867,"y":0.4828214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.37967,"y":160.7718,"z":-62.218555},"screenPosition":{"x":0.32194117,"y":0.5527438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.9822,"y":159.08221,"z":-64.47561},"screenPosition":{"x":0.3073663,"y":0.6257168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.754,"y":156.21454,"z":-66.73777},"screenPosition":{"x":0.26431212,"y":0.6689974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.35306,"y":155.48445,"z":-65.11681},"screenPosition":{"x":0.2273471,"y":0.5691996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-386.88718,"y":158.9255,"z":-62.671703},"screenPosition":{"x":0.2823365,"y":0.53005403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.2581,"y":160.34027,"z":-62.677593},"screenPosition":{"x":0.3168708,"y":0.56508404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.0192,"y":160.1028,"z":-64.014015},"screenPosition":{"x":0.32677594,"y":0.6275184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.04062,"y":159.85489,"z":-65.23018},"screenPosition":{"x":0.33507472,"y":0.6827176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.34848,"y":159.9228,"z":-66.01187},"screenPosition":{"x":0.34591043,"y":0.72416735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.66687,"y":159.04848,"z":-68.15711},"screenPosition":{"x":0.349847,"y":0.81205463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.6296,"y":156.39134,"z":-70.12962},"screenPosition":{"x":0.30837467,"y":0.8467137},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-381.8442,"y":152.47253,"z":-71.14517},"screenPosition":{"x":0.22504187,"y":0.80079246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.47287,"y":151.1092,"z":-73.08801},"screenPosition":{"x":0.21461496,"y":0.8663583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.76794,"y":152.06851,"z":-74.50254},"screenPosition":{"x":0.23098874,"y":0.91122407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.80222,"y":152.95677,"z":-73.7569},"screenPosition":{"x":0.2667332,"y":0.94462895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.70248,"y":154.42169,"z":-72.95852},"screenPosition":{"x":0.29291132,"y":0.94012284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.14594,"y":156.12723,"z":-72.17405},"screenPosition":{"x":0.3249774,"y":0.9420019},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.67252,"y":158.36897,"z":-70.84226},"screenPosition":{"x":0.3638355,"y":0.929207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.15787,"y":161.16907,"z":-68.900856},"screenPosition":{"x":0.38659108,"y":0.8517004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.67142,"y":161.31064,"z":-67.06454},"screenPosition":{"x":0.3920491,"y":0.8126506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.9797,"y":161.32712,"z":-65.8975},"screenPosition":{"x":0.37871715,"y":0.7532179},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.2444,"y":160.25429,"z":-65.75779},"screenPosition":{"x":0.35098037,"y":0.7196544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.00592,"y":159.9654,"z":-65.145485},"screenPosition":{"x":0.33676308,"y":0.6812118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.19263,"y":159.55032,"z":-64.437485},"screenPosition":{"x":0.318337,"y":0.63507354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.5789,"y":158.90904,"z":-63.838737},"screenPosition":{"x":0.29566127,"y":0.58902305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.08475,"y":159.20476,"z":-61.81632},"screenPosition":{"x":0.27907255,"y":0.4934524},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-380.1281,"y":163.67003,"z":-61.6646},"screenPosition":{"x":0.3859614,"y":0.5963678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.77457,"y":164.70628,"z":-61.3834},"screenPosition":{"x":0.40785864,"y":0.6075275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.35165,"y":165.96353,"z":-60.93281},"screenPosition":{"x":0.43317285,"y":0.6159609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.08698,"y":167.03636,"z":-61.07252},"screenPosition":{"x":0.46092576,"y":0.6496501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.14285,"y":178.69072,"z":-52.780994},"screenPosition":{"x":0.64704555,"y":0.5165459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.43954,"y":176.42775,"z":-55.220993},"screenPosition":{"x":0.6206678,"y":0.5846206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.55655,"y":174.59712,"z":-55.85453},"screenPosition":{"x":0.5835661,"y":0.57149714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.22925,"y":174.27165,"z":-54.821312},"screenPosition":{"x":0.5634934,"y":0.5108647},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-370.50757,"y":179.98534,"z":-51.403893},"screenPosition":{"x":0.6623569,"y":0.47855717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.2429,"y":181.05815,"z":-51.543602},"screenPosition":{"x":0.6901098,"y":0.5122464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.91742,"y":181.9152,"z":-51.91283},"screenPosition":{"x":0.7153108,"y":0.5522671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.66992,"y":182.1145,"z":-52.85035},"screenPosition":{"x":0.73118746,"y":0.6049046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.35303,"y":182.53479,"z":-53.61848},"screenPosition":{"x":0.7504504,"y":0.65439945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.80984,"y":182.82191,"z":-55.572838},"screenPosition":{"x":0.7568139,"y":0.71007645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.3792,"y":181.03609,"z":-56.532745},"screenPosition":{"x":0.74748826,"y":0.7638973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.52505,"y":179.0277,"z":-57.817436},"screenPosition":{"x":0.71367884,"y":0.7794138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.6358,"y":177.12947,"z":-59.01706},"screenPosition":{"x":0.68156433,"y":0.79336226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.0041,"y":175.21814,"z":-60.093704},"screenPosition":{"x":0.6477917,"y":0.8009597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.33743,"y":173.41684,"z":-61.085373},"screenPosition":{"x":0.61571115,"y":0.8069898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.9768,"y":172.818,"z":-61.73057},"screenPosition":{"x":0.58695114,"y":0.7865008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.18222,"y":170.51761,"z":-61.803307},"screenPosition":{"x":0.5530671,"y":0.76863307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.03696,"y":169.2029,"z":-61.592464},"screenPosition":{"x":0.51962364,"y":0.72915167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.38416,"y":169.73448,"z":-60.928474},"screenPosition":{"x":0.5246862,"y":0.7083118},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-379.1307,"y":166.43767,"z":-59.60739},"screenPosition":{"x":0.4291235,"y":0.56027275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.4687,"y":164.1329,"z":-61.56635},"screenPosition":{"x":0.39605996,"y":0.6026237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.82614,"y":162.08571,"z":-63.77683},"screenPosition":{"x":0.37224534,"y":0.66458064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.3355,"y":161.42194,"z":-65.632416},"screenPosition":{"x":0.37791446,"y":0.742544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.0642,"y":162.42606,"z":-66.33786},"screenPosition":{"x":0.41064885,"y":0.8033146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.46783,"y":164.23578,"z":-65.463806},"screenPosition":{"x":0.44431785,"y":0.80276513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.27057,"y":165.59308,"z":-64.808266},"screenPosition":{"x":0.47125527,"y":0.8193132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.11688,"y":168.03967,"z":-63.125397},"screenPosition":{"x":0.5094879,"y":0.77895606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.3823,"y":168.91586,"z":-64.13246},"screenPosition":{"x":0.5190466,"y":0.80103123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.22308,"y":166.3381,"z":-66.218994},"screenPosition":{"x":0.50317657,"y":0.89142877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.53955,"y":163.836,"z":-67.352516},"screenPosition":{"x":0.45594487,"y":0.88782144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.8256,"y":163.82513,"z":-66.16336},"screenPosition":{"x":0.44281664,"y":0.830192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.23193,"y":166.71452,"z":-62.794292},"screenPosition":{"x":0.4733353,"y":0.7292297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.92398,"y":168.3346,"z":-62.450405},"screenPosition":{"x":0.50868076,"y":0.75169647},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-366.5855,"y":171.83058,"z":-62.33836},"screenPosition":{"x":0.5688827,"y":0.7819671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.0609,"y":174.30377,"z":-60.81603},"screenPosition":{"x":0.6111697,"y":0.76579076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.80124,"y":175.00616,"z":-57.849827},"screenPosition":{"x":0.6169882,"y":0.6831497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.81223,"y":174.0125,"z":-57.264645},"screenPosition":{"x":0.58581513,"y":0.62848127},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-372.7007,"y":167.67764,"z":-61.67127},"screenPosition":{"x":0.48357487,"y":0.69600224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.29562,"y":171.33447,"z":-58.99664},"screenPosition":{"x":0.5411161,"y":0.6505252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.30255,"y":173.03973,"z":-56.91998},"screenPosition":{"x":0.558194,"y":0.5871185},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-377.09286,"y":174.15674,"z":-53.498447},"screenPosition":{"x":0.54510236,"y":0.44063693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.12106,"y":172.28955,"z":-53.711075},"screenPosition":{"x":0.5021962,"y":0.40526718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.4307,"y":168.52745,"z":-56.530525},"screenPosition":{"x":0.44375503,"y":0.45529473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.274,"y":168.25784,"z":-58.853596},"screenPosition":{"x":0.46455652,"y":0.56701875},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-377.27524,"y":174.80405,"z":-52.8099},"screenPosition":{"x":0.55279386,"y":0.42171758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.54208,"y":176.5503,"z":-52.561707},"screenPosition":{"x":0.5923741,"y":0.45235622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.99954,"y":176.87053,"z":-53.53479},"screenPosition":{"x":0.6116125,"y":0.50979996},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.07318,"y":177.27516,"z":-54.12253},"screenPosition":{"x":0.62837243,"y":0.5497285},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-365.29205,"y":178.99449,"z":-54.92112},"screenPosition":{"x":0.67960876,"y":0.63295865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.47006,"y":180.70418,"z":-54.252018},"screenPosition":{"x":0.7133487,"y":0.64127594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.57373,"y":192.86713,"z":-48.994102},"screenPosition":{"x":0.9469718,"y":0.67392653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.17856,"y":194.71324,"z":-49.461945},"screenPosition":{"x":0.973362,"y":0.6916675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-350.4179,"y":195.35771,"z":-48.730835},"screenPosition":{"x":0.9830869,"y":0.67401415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-349.88797,"y":193.93076,"z":-50.349632},"screenPosition":{"x":0.9644272,"y":0.71673065},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-350.3129,"y":195.07495,"z":-49.051613},"screenPosition":{"x":0.9711,"y":0.6721071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.5929,"y":194.52911,"z":-48.366695},"screenPosition":{"x":0.95698464,"y":0.63350374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.33456,"y":192.19942,"z":-48.198868},"screenPosition":{"x":0.92192197,"y":0.6181148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.92432,"y":190.32098,"z":-49.638657},"screenPosition":{"x":0.8916961,"y":0.65847903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.3044,"y":189.41971,"z":-51.323334},"screenPosition":{"x":0.89029557,"y":0.7066545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.44434,"y":186.27765,"z":-53.150745},"screenPosition":{"x":0.83540523,"y":0.72196805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.58316,"y":184.81183,"z":-54.34799},"screenPosition":{"x":0.7908375,"y":0.6970611},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-365.53583,"y":183.13066,"z":-50.9812},"screenPosition":{"x":0.733935,"y":0.5349822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.45724,"y":180.51532,"z":-53.434757},"screenPosition":{"x":0.69914067,"y":0.59501594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.8408,"y":178.79439,"z":-55.331028},"screenPosition":{"x":0.67931175,"y":0.6483951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.00958,"y":177.66774,"z":-57.28487},"screenPosition":{"x":0.6751192,"y":0.7203501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.54285,"y":178.21773,"z":-58.043633},"screenPosition":{"x":0.6968487,"y":0.7713325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.92856,"y":179.70796,"z":-57.49175},"screenPosition":{"x":0.7258443,"y":0.7785754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.29108,"y":180.874,"z":-57.256596},"screenPosition":{"x":0.75154763,"y":0.7956131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.84143,"y":183.43922,"z":-55.60844},"screenPosition":{"x":0.79465103,"y":0.77543676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.54364,"y":185.12975,"z":-54.70216},"screenPosition":{"x":0.82502586,"y":0.77097625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.23978,"y":186.87943,"z":-53.218216},"screenPosition":{"x":0.8504873,"y":0.7395414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.2984,"y":188.28624,"z":-51.86593},"screenPosition":{"x":0.86921793,"y":0.7064499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.80267,"y":190.94446,"z":-50.57316},"screenPosition":{"x":0.8956939,"y":0.6569497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.54706,"y":190.47406,"z":-48.68758},"screenPosition":{"x":0.88567907,"y":0.60023123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.30634,"y":189.05408,"z":-48.62156},"screenPosition":{"x":0.8503438,"y":0.5616898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.8766,"y":186.91809,"z":-49.809826},"screenPosition":{"x":0.8123345,"y":0.5692241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.07385,"y":185.56079,"z":-50.465366},"screenPosition":{"x":0.7870112,"y":0.5689478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.43796,"y":183.5823,"z":-52.110115},"screenPosition":{"x":0.75820386,"y":0.6036096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.57443,"y":182.00923,"z":-52.995174},"screenPosition":{"x":0.7302828,"y":0.6095963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.24017,"y":179.97852,"z":-54.038616},"screenPosition":{"x":0.69310504,"y":0.6123171},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-367.92084,"y":175.94318,"z":-56.426155},"screenPosition":{"x":0.62304854,"y":0.6339312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.06396,"y":174.43881,"z":-56.74548},"screenPosition":{"x":0.59019184,"y":0.6129049},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-382.1776,"y":171.8797,"z":-53.0632},"screenPosition":{"x":0.48460197,"y":0.36214983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.15585,"y":170.49106,"z":-53.357964},"screenPosition":{"x":0.45427272,"y":0.34274095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.7958,"y":169.77061,"z":-53.204693},"screenPosition":{"x":0.43493646,"y":0.31709272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-388.68524,"y":168.34541,"z":-53.07854},"screenPosition":{"x":0.39876693,"y":0.2753625},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-392.20798,"y":166.13106,"z":-53.364857},"screenPosition":{"x":0.34824264,"y":0.23506548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-394.55066,"y":164.40048,"z":-53.793438},"screenPosition":{"x":0.3111654,"y":0.21399312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-396.02545,"y":162.15921,"z":-55.12653},"screenPosition":{"x":0.27229723,"y":0.22628757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-397.84744,"y":160.44954,"z":-55.79563},"screenPosition":{"x":0.23855732,"y":0.21797024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.088,"y":158.54498,"z":-56.934772},"screenPosition":{"x":0.2056222,"y":0.22872049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-398.70578,"y":156.48734,"z":-59.02499},"screenPosition":{"x":0.18010835,"y":0.28410512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.0005,"y":154.72984,"z":-60.50035},"screenPosition":{"x":0.15468726,"y":0.31562424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-399.06097,"y":153.30905,"z":-61.781757},"screenPosition":{"x":0.13524097,"y":0.3455457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-400.12808,"y":151.95699,"z":-62.49743},"screenPosition":{"x":0.110690854,"y":0.3485305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-401.80273,"y":151.12605,"z":-62.428852},"screenPosition":{"x":0.089868344,"y":0.32426456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-403.16516,"y":151.28958,"z":-61.598034},"screenPosition":{"x":0.084042355,"y":0.28610352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-404.05914,"y":152.12654,"z":-60.379314},"screenPosition":{"x":0.08990604,"y":0.24496493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-405.17014,"y":153.5003,"z":-58.556732},"screenPosition":{"x":0.101904534,"y":0.18627228},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-409.31183,"y":154.15932,"z":-57.331215},"screenPosition":{"x":0.07991689,"y":0.08936933},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-064722/brain-CBDACC-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.24178063928261873,0.7701291022248831,0.5902908506612516,0.0,0.9072141655609345,0.0364075793516494,-0.4190906178517133,0.0,-0.34424494226301366,0.6368482190224365,-0.6898693830387643,0.0,-441.6529206252014,253.7406677473435,-140.12131656697036,1.0]},"baseImage":"20190825-064722/base.webp","version":0,"savedAt":1.566715874632E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-071120-v0.json b/data/mapping/BAAAHS/dwayman/20190825-071120-v0.json new file mode 100644 index 0000000000..cb4681ce35 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-071120-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566717080723E12,"surfaces":[{"brainId":"C78470","panelName":"R2D","pixels":[{"modelPosition":{"x":-377.38824,"y":178.14133,"z":-8.772029},"screenPosition":{"x":0.71707875,"y":0.113779604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.3786,"y":180.88373,"z":-26.5026},"screenPosition":{"x":0.8147726,"y":0.42913464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.9107,"y":172.99698,"z":-13.297088},"screenPosition":{"x":0.7572441,"y":0.098400444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.26056,"y":178.91257,"z":-11.898392},"screenPosition":{"x":0.7376497,"y":0.16730848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9881,"y":183.20241,"z":-26.691444},"screenPosition":{"x":0.86210525,"y":0.47240645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.1817,"y":181.01839,"z":-26.437265},"screenPosition":{"x":0.81600934,"y":0.4299278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.75943,"y":181.30716,"z":-25.7329},"screenPosition":{"x":0.8281598,"y":0.42461428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.1817,"y":181.01839,"z":-26.437265},"screenPosition":{"x":0.81600934,"y":0.4299278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.2699,"y":180.95807,"z":-26.546776},"screenPosition":{"x":0.8150395,"y":0.43083003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.77725,"y":182.6628,"z":-30.357393},"screenPosition":{"x":0.8279019,"y":0.5199271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.2699,"y":180.95807,"z":-26.546776},"screenPosition":{"x":0.8150395,"y":0.43083003},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.8169,"y":180.584,"z":-27.047457},"screenPosition":{"x":0.8098771,"y":0.43364146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.11404,"y":181.06465,"z":-26.17372},"screenPosition":{"x":0.8176732,"y":0.42642874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.29056,"y":180.94395,"z":-26.393137},"screenPosition":{"x":0.81574255,"y":0.4282328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.29056,"y":180.94395,"z":-26.393137},"screenPosition":{"x":0.81574255,"y":0.4282328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.63364,"y":182.76097,"z":-27.47036},"screenPosition":{"x":0.85519266,"y":0.47894725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.1817,"y":181.01839,"z":-26.437265},"screenPosition":{"x":0.81600934,"y":0.4299278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.3786,"y":180.88373,"z":-26.5026},"screenPosition":{"x":0.8147726,"y":0.42913464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.9808,"y":183.89125,"z":-25.291786},"screenPosition":{"x":0.8865206,"y":0.46323076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.39102,"y":182.24304,"z":-28.925486},"screenPosition":{"x":0.8308958,"y":0.49120012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.71036,"y":187.83702,"z":-27.931187},"screenPosition":{"x":0.7820753,"y":0.4193636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3658,"y":183.62798,"z":-26.490963},"screenPosition":{"x":0.8744484,"y":0.47736907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.7978,"y":179.91318,"z":-25.782047},"screenPosition":{"x":0.8057747,"y":0.40287647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.58615,"y":183.47728,"z":-25.65639},"screenPosition":{"x":0.8726349,"y":0.46078482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.77264,"y":183.34975,"z":-25.882256},"screenPosition":{"x":0.8706991,"y":0.4626537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.595,"y":183.47125,"z":-26.400288},"screenPosition":{"x":0.8687059,"y":0.47234434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.47156,"y":183.55565,"z":-25.701172},"screenPosition":{"x":0.8728721,"y":0.4625066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.65836,"y":183.42792,"z":-25.92714},"screenPosition":{"x":0.8709366,"y":0.46437633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.61612,"y":183.4568,"z":-26.242579},"screenPosition":{"x":0.8694552,"y":0.46968886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3356,"y":183.64862,"z":-25.90411},"screenPosition":{"x":0.87237215,"y":0.4668825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.06802,"y":182.46387,"z":-25.81748},"screenPosition":{"x":0.8517958,"y":0.44603708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3356,"y":183.64862,"z":-25.90411},"screenPosition":{"x":0.87237215,"y":0.4668825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.65836,"y":183.42792,"z":-25.92714},"screenPosition":{"x":0.8709366,"y":0.46437633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3356,"y":183.64862,"z":-25.90411},"screenPosition":{"x":0.87237215,"y":0.4668825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.35678,"y":183.63416,"z":-25.746021},"screenPosition":{"x":0.87310654,"y":0.46422723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.74945,"y":184.04948,"z":-25.381279},"screenPosition":{"x":0.88700026,"y":0.46669486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.9808,"y":183.89125,"z":-25.291786},"screenPosition":{"x":0.8865206,"y":0.46323076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8149,"y":181.95306,"z":-24.195498},"screenPosition":{"x":0.85602385,"y":0.41356578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8149,"y":181.95306,"z":-24.195498},"screenPosition":{"x":0.85602385,"y":0.41356578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8149,"y":181.95306,"z":-24.195498},"screenPosition":{"x":0.85602385,"y":0.41356578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.36853,"y":182.25833,"z":-24.368166},"screenPosition":{"x":0.85708946,"y":0.42042923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.44144,"y":183.57625,"z":-25.113607},"screenPosition":{"x":0.8869659,"y":0.45669422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.7851,"y":183.34123,"z":-24.980677},"screenPosition":{"x":0.8868326,"y":0.45164934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8993,"y":183.26312,"z":-24.936499},"screenPosition":{"x":0.87219477,"y":0.44592893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.47156,"y":183.55565,"z":-25.701172},"screenPosition":{"x":0.8728721,"y":0.4625066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.00916,"y":183.188,"z":-26.53422},"screenPosition":{"x":0.8628386,"y":0.46975043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.1018,"y":183.12466,"z":-26.64613},"screenPosition":{"x":0.86186355,"y":0.47068524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.35678,"y":183.63416,"z":-25.746021},"screenPosition":{"x":0.87310654,"y":0.46422723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.47156,"y":183.55565,"z":-25.701172},"screenPosition":{"x":0.8728721,"y":0.4625066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1055,"y":183.80598,"z":-25.994247},"screenPosition":{"x":0.87811977,"y":0.47188014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1055,"y":183.80598,"z":-25.994247},"screenPosition":{"x":0.87811977,"y":0.47188014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.2933,"y":183.67757,"z":-26.220268},"screenPosition":{"x":0.8761739,"y":0.47376126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.68103,"y":183.41248,"z":-29.787008},"screenPosition":{"x":0.8358594,"y":0.5201801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0371,"y":181.8011,"z":-24.109547},"screenPosition":{"x":0.85547435,"y":0.41012838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0088,"y":181.82051,"z":-25.886019},"screenPosition":{"x":0.83171725,"y":0.43418407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.47156,"y":183.55565,"z":-25.701172},"screenPosition":{"x":0.8728721,"y":0.4625066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.34036,"y":181.59377,"z":-25.753859},"screenPosition":{"x":0.8299134,"y":0.4288079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0088,"y":181.82051,"z":-25.886019},"screenPosition":{"x":0.83171725,"y":0.43418407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.595,"y":183.47125,"z":-26.400288},"screenPosition":{"x":0.8687059,"y":0.47234434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.91202,"y":181.88669,"z":-25.042105},"screenPosition":{"x":0.84486955,"y":0.42419764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.09622,"y":183.81233,"z":-25.24714},"screenPosition":{"x":0.8862766,"y":0.461497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8149,"y":181.95306,"z":-24.195498},"screenPosition":{"x":0.85602385,"y":0.41356578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8149,"y":181.95306,"z":-24.195498},"screenPosition":{"x":0.85602385,"y":0.41356578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0088,"y":181.82051,"z":-25.886019},"screenPosition":{"x":0.83171725,"y":0.43418407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3356,"y":183.64862,"z":-25.90411},"screenPosition":{"x":0.87237215,"y":0.4668825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1479,"y":183.777,"z":-25.677591},"screenPosition":{"x":0.8795798,"y":0.46654508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.8149,"y":181.95306,"z":-24.195498},"screenPosition":{"x":0.85602385,"y":0.41356578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3356,"y":183.64862,"z":-25.90411},"screenPosition":{"x":0.87237215,"y":0.4668825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.9808,"y":183.89125,"z":-25.291786},"screenPosition":{"x":0.8865206,"y":0.46323076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.1819,"y":181.70212,"z":-25.376778},"screenPosition":{"x":0.83656144,"y":0.42547542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.1267,"y":183.79149,"z":-25.835922},"screenPosition":{"x":0.87885267,"y":0.46921286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.7813,"y":183.34384,"z":-26.624819},"screenPosition":{"x":0.8633191,"y":0.47319087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24182,"y":183.71277,"z":-25.790937},"screenPosition":{"x":0.8786146,"y":0.4674852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.1018,"y":183.12466,"z":-26.64613},"screenPosition":{"x":0.86186355,"y":0.47068524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.22064,"y":183.72725,"z":-25.949144},"screenPosition":{"x":0.8778844,"y":0.47015324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.7851,"y":183.34123,"z":-24.980677},"screenPosition":{"x":0.8868326,"y":0.45164934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.595,"y":183.47125,"z":-26.400288},"screenPosition":{"x":0.8687059,"y":0.47234434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0088,"y":181.82051,"z":-25.886019},"screenPosition":{"x":0.83171725,"y":0.43418407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0088,"y":181.82051,"z":-25.886019},"screenPosition":{"x":0.83171725,"y":0.43418407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.61612,"y":183.4568,"z":-26.242579},"screenPosition":{"x":0.8694552,"y":0.46968886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.61612,"y":183.4568,"z":-26.242579},"screenPosition":{"x":0.8694552,"y":0.46968886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.50162,"y":183.5351,"z":-26.287764},"screenPosition":{"x":0.86968446,"y":0.4714088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.27213,"y":183.69205,"z":-26.378338},"screenPosition":{"x":0.8754291,"y":0.47642854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.63724,"y":183.44235,"z":-26.084862},"screenPosition":{"x":0.8701988,"y":0.46703285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0371,"y":181.8011,"z":-24.109547},"screenPosition":{"x":0.85547435,"y":0.41012838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.16107,"y":181.71635,"z":-25.531824},"screenPosition":{"x":0.8331689,"y":0.42735758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0371,"y":181.8011,"z":-24.109547},"screenPosition":{"x":0.85547435,"y":0.41012838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.46503,"y":181.50847,"z":-24.824923},"screenPosition":{"x":0.84351295,"y":0.41563967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.3819,"y":181.56534,"z":-25.444237},"screenPosition":{"x":0.8326423,"y":0.42395717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.68866,"y":182.72331,"z":-26.264042},"screenPosition":{"x":0.8621464,"y":0.45963812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.12283,"y":183.11028,"z":-26.489021},"screenPosition":{"x":0.8625942,"y":0.46802852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.00916,"y":183.188,"z":-26.53422},"screenPosition":{"x":0.8628386,"y":0.46975043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.00916,"y":183.188,"z":-26.53422},"screenPosition":{"x":0.8628386,"y":0.46975043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.00916,"y":183.188,"z":-26.53422},"screenPosition":{"x":0.8628386,"y":0.46975043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.00916,"y":183.188,"z":-26.53422},"screenPosition":{"x":0.8628386,"y":0.46975043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.12283,"y":183.11028,"z":-26.489021},"screenPosition":{"x":0.8625942,"y":0.46802852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.89532,"y":183.26587,"z":-26.579485},"screenPosition":{"x":0.86308026,"y":0.47147125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.89532,"y":183.26587,"z":-26.579485},"screenPosition":{"x":0.86308026,"y":0.47147125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.89532,"y":183.26587,"z":-26.579485},"screenPosition":{"x":0.86308026,"y":0.47147125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.36594,"y":182.94405,"z":-27.875051},"screenPosition":{"x":0.8541317,"y":0.48770136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.04596,"y":186.58228,"z":-29.582468},"screenPosition":{"x":0.92283624,"y":0.5787524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.595,"y":183.47125,"z":-26.400288},"screenPosition":{"x":0.8687059,"y":0.47234434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.94388,"y":184.60043,"z":-28.10919},"screenPosition":{"x":0.8910371,"y":0.5213963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.0371,"y":181.8011,"z":-24.109547},"screenPosition":{"x":0.85547435,"y":0.41012838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.70932,"y":183.39307,"z":-26.355053},"screenPosition":{"x":0.8684766,"y":0.47062397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8024,"y":183.3294,"z":-26.467356},"screenPosition":{"x":0.86405206,"y":0.47053584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.9164,"y":183.25145,"z":-26.422138},"screenPosition":{"x":0.86381054,"y":0.46881548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.24295,"y":182.34424,"z":-25.304853},"screenPosition":{"x":0.85095125,"y":0.4356766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73044,"y":183.37862,"z":-26.19746},"screenPosition":{"x":0.86922324,"y":0.46796772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.8235,"y":183.31499,"z":-26.309887},"screenPosition":{"x":0.8682445,"y":0.4689024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.4504,"y":183.57011,"z":-25.859142},"screenPosition":{"x":0.8721404,"y":0.4651626},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-071120/brain-C78470-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.10953017688947264,0.6046481894095379,0.7889256665835689,0.0,0.31467743773401885,0.7317837883854554,-0.6045416422690697,0.0,-0.9428580224677063,0.3144726603379039,-0.11011673518719989,0.0,-474.7170141046489,189.1535827028286,-56.894288366787734,1.0]},"baseImage":"20190825-071120/base.webp","version":0,"savedAt":1.566717375519E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-080923-v0.json b/data/mapping/BAAAHS/dwayman/20190825-080923-v0.json new file mode 100644 index 0000000000..004ea81ec0 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-080923-v0.json @@ -0,0 +1,11364 @@ +{ + "startedAt": 1.566720563972E12, + "surfaces": [ + { + "brainId": "CAFDEC", + "panelName": "32D", + "pixels": [ + { + "modelPosition": { + "x": -393.0601, + "y": 94.08593, + "z": -73.50453 + }, + "screenPosition": { + "x": 0.06549906, + "y": 0.36303666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.1441, + "y": 103.97769, + "z": -92.20339 + }, + "screenPosition": { + "x": 0.033438466, + "y": 0.40967968 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.38342, + "y": 105.61458, + "z": -93.077644 + }, + "screenPosition": { + "x": 0.05408604, + "y": 0.44560626 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.68988, + "y": 107.943596, + "z": -93.929955 + }, + "screenPosition": { + "x": 0.07501913, + "y": 0.47471368 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.8568, + "y": 113.31869, + "z": -95.537346 + }, + "screenPosition": { + "x": 0.10253311, + "y": 0.4989767 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.36734, + "y": 113.646576, + "z": -96.052 + }, + "screenPosition": { + "x": -0.18684484, + "y": 0.87305284 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -390.01773, + "y": 118.675575, + "z": -77.8836 + }, + "screenPosition": { + "x": 0.16280566, + "y": 0.4927179 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.14685, + "y": 118.31787, + "z": -76.715294 + }, + "screenPosition": { + "x": 0.19168234, + "y": 0.47164235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.06253, + "y": 108.94872, + "z": -95.63544 + }, + "screenPosition": { + "x": -0.18159735, + "y": 0.9592754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.77148, + "y": 114.04572, + "z": -96.67852 + }, + "screenPosition": { + "x": -0.17160815, + "y": 1.021663 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.97482, + "y": 114.343704, + "z": -95.05634 + }, + "screenPosition": { + "x": -0.19790655, + "y": 0.9972681 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -393.71762, + "y": 107.68561, + "z": -73.58932 + }, + "screenPosition": { + "x": -0.2614945, + "y": 0.8187484 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -393.59387, + "y": 107.08286, + "z": -73.68689 + }, + "screenPosition": { + "x": -0.20867799, + "y": 0.9103018 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.1193, + "y": 108.48788, + "z": -75.25717 + }, + "screenPosition": { + "x": -0.15275662, + "y": 1.0633042 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.0667, + "y": 108.77743, + "z": -76.34423 + }, + "screenPosition": { + "x": -0.0931433, + "y": 1.111288 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -388.73892, + "y": 94.48887, + "z": -77.88363 + }, + "screenPosition": { + "x": 5.456426E-4, + "y": 1.1748047 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.36166, + "y": 121.81995, + "z": -97.05604 + }, + "screenPosition": { + "x": 0.05027802, + "y": 1.2093266 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.82092, + "y": 109.40364, + "z": -79.68361 + }, + "screenPosition": { + "x": 0.13270648, + "y": 1.2706528 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -386.1592, + "y": 96.012985, + "z": -80.58265 + }, + "screenPosition": { + "x": 0.20306866, + "y": 1.3167976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -386.23514, + "y": 129.24492, + "z": -82.24223 + }, + "screenPosition": { + "x": 0.3200904, + "y": 1.053688 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.2942, + "y": 121.59412, + "z": -83.858284 + }, + "screenPosition": { + "x": 0.34443897, + "y": 0.70534813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.09363, + "y": 134.3383, + "z": -90.527275 + }, + "screenPosition": { + "x": 0.30396867, + "y": 0.50351816 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.40327284, + "y": 0.21227299 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.73422, + "y": 122.788994, + "z": -93.66311 + }, + "screenPosition": { + "x": -0.25027707, + "y": 0.99225694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.44485, + "y": 115.60578, + "z": -86.479515 + }, + "screenPosition": { + "x": -0.15426521, + "y": 1.1405046 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.2648, + "y": 114.05049, + "z": -86.5893 + }, + "screenPosition": { + "x": 0.027368285, + "y": 1.2178065 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.576, + "y": 108.1477, + "z": -87.42083 + }, + "screenPosition": { + "x": 0.093228884, + "y": 1.2457758 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.9935, + "y": 110.13574, + "z": -85.66045 + }, + "screenPosition": { + "x": 0.16886148, + "y": 1.3095212 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.31784, + "y": 117.7214, + "z": -87.72911 + }, + "screenPosition": { + "x": 0.23045866, + "y": 1.4195348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.716, + "y": 127.44194, + "z": -98.573906 + }, + "screenPosition": { + "x": 0.38359937, + "y": 1.4906825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.9184, + "y": 128.3515, + "z": -98.25203 + }, + "screenPosition": { + "x": 0.47913247, + "y": 1.5034649 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.78586, + "y": 129.9268, + "z": -97.13108 + }, + "screenPosition": { + "x": 0.5997967, + "y": 1.5185031 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.4508, + "y": 131.11644, + "z": -95.93936 + }, + "screenPosition": { + "x": 0.6635335, + "y": 1.4662763 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.15625, + "y": 130.89392, + "z": -94.885506 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.1683, + "y": 131.41151, + "z": -92.66246 + }, + "screenPosition": { + "x": 0.40037498, + "y": 1.1447167 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.74704, + "y": 133.72455, + "z": -89.79013 + }, + "screenPosition": { + "x": 0.24576698, + "y": 1.3650385 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.9517, + "y": 134.62251, + "z": -89.475914 + }, + "screenPosition": { + "x": 0.2956171, + "y": 1.4581757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.8797, + "y": 135.39929, + "z": -88.92616 + }, + "screenPosition": { + "x": 0.41585162, + "y": 1.4940739 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.51572, + "y": 131.62465, + "z": -91.91966 + }, + "screenPosition": { + "x": 0.5532395, + "y": 1.5124838 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.68427, + "y": 132.65567, + "z": -91.522 + }, + "screenPosition": { + "x": 0.68161994, + "y": 1.524174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.5897905, + "y": 0.39457884 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.27094, + "y": 132.53362, + "z": -91.348785 + }, + "screenPosition": { + "x": 0.519196, + "y": 0.13257958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.33426, + "y": 131.17264, + "z": -94.14507 + }, + "screenPosition": { + "x": 0.5824548, + "y": 0.9217913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.3737, + "y": 129.87912, + "z": -94.64565 + }, + "screenPosition": { + "x": 0.40133855, + "y": 0.9439643 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.81354, + "y": 128.93736, + "z": -96.05546 + }, + "screenPosition": { + "x": 0.3472365, + "y": 1.4818181 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.5236, + "y": 130.23836, + "z": -94.28387 + }, + "screenPosition": { + "x": 0.5429162, + "y": 1.5098919 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.3777, + "y": 131.62267, + "z": -91.98341 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.99518, + "y": 132.29735, + "z": -90.74792 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.026, + "y": 132.22737, + "z": -93.042404 + }, + "screenPosition": { + "x": 0.6181473, + "y": 0.76546144 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.0995, + "y": 130.80605, + "z": -93.6234 + }, + "screenPosition": { + "x": 0.49136582, + "y": 0.5520748 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.46477288, + "y": 0.24031168 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.27402, + "y": 123.72505, + "z": -87.03904 + }, + "screenPosition": { + "x": 0.3498186, + "y": 1.0735214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.80948, + "y": 135.86346, + "z": -85.902794 + }, + "screenPosition": { + "x": 0.49022344, + "y": 1.0647818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.9791, + "y": 136.88538, + "z": -85.51149 + }, + "screenPosition": { + "x": 0.5724182, + "y": 0.8319243 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.95892, + "y": 132.37091, + "z": -92.513885 + }, + "screenPosition": { + "x": 0.582002, + "y": 0.5479341 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.55334, + "y": 111.5828, + "z": -87.19764 + }, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -382.41327, + "y": 107.586815, + "z": -86.54046 + }, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -381.09073, + "y": 108.47276, + "z": -87.93106 + }, + "screenPosition": { + "x": 0.3447522, + "y": 0.92708534 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.92316, + "y": 117.81375, + "z": -87.11625 + }, + "screenPosition": { + "x": 0.36440504, + "y": 1.3544785 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.88522, + "y": 121.46179, + "z": -88.347755 + }, + "screenPosition": { + "x": 0.26065302, + "y": 1.4099447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.89, + "y": 138.13647, + "z": -85.96749 + }, + "screenPosition": { + "x": 0.61294603, + "y": 0.45776933 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.13892, + "y": 139.01694, + "z": -86.097626 + }, + "screenPosition": { + "x": 0.736488, + "y": 0.4749098 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.56946, + "y": 134.88997, + "z": -88.99671 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.42636, + "y": 135.2898, + "z": -88.3104 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.70105, + "y": 135.29337, + "z": -88.1838 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.91788, + "y": 101.02427, + "z": -88.20731 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.12476, + "y": 133.52032, + "z": -89.74789 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.85596, + "y": 133.17778, + "z": -89.34293 + }, + "screenPosition": { + "x": 0.5774283, + "y": 0.39635602 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.5058, + "y": 132.92802, + "z": -89.68811 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.36835, + "y": 132.98079, + "z": -90.49358 + }, + "screenPosition": { + "x": 0.56536216, + "y": 0.9130324 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.9955, + "y": 132.71484, + "z": -90.861145 + }, + "screenPosition": { + "x": 0.5820737, + "y": 0.60715306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.8398, + "y": 133.3171, + "z": -90.02879 + }, + "screenPosition": { + "x": 0.63554573, + "y": 0.44275075 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.78473, + "y": 113.76671, + "z": -88.08502 + }, + "screenPosition": { + "x": 0.7432827, + "y": 0.37115416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.05646, + "y": 111.7912, + "z": -86.6945 + }, + "screenPosition": { + "x": 0.86023146, + "y": 0.33494186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.71643, + "y": 141.48215, + "z": -81.95421 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.5391, + "y": 141.79619, + "z": -81.22708 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.62238, + "y": 109.94639, + "z": -83.99053 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.81033, + "y": 94.37826, + "z": -82.840675 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.40094, + "y": 139.04724, + "z": -81.7807 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.67206, + "y": 130.32593, + "z": -82.867714 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.30325, + "y": 136.34998, + "z": -84.95867 + }, + "screenPosition": { + "x": 0.81287295, + "y": 0.43937257 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.64456207, + "y": 0.14841725 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.7063, + "y": 101.36181, + "z": -84.413666 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.76538, + "y": 142.50545, + "z": -80.96725 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.3754, + "y": 143.46318, + "z": -80.79777 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.25085, + "y": 91.77393, + "z": -87.26135 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.23178, + "y": 139.54373, + "z": -85.209694 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.91592, + "y": 109.92966, + "z": -90.217834 + }, + "screenPosition": { + "x": 0.2918477, + "y": 0.9272699 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.5006, + "y": 138.08423, + "z": -87.9871 + }, + "screenPosition": { + "x": 0.18652728, + "y": 1.084646 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.21964, + "y": 137.18437, + "z": -93.30024 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.6422, + "y": 136.01819, + "z": -89.4718 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.70694, + "y": 134.89177, + "z": -88.93333 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.8299, + "y": 135.06216, + "z": -87.39658 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.09436, + "y": 135.46664, + "z": -86.52289 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.3234, + "y": 136.63173, + "z": -85.54627 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.4409, + "y": 137.77747, + "z": -90.04873 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.32968, + "y": 140.02747, + "z": -83.41707 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.4959, + "y": 144.6447, + "z": -78.57401 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.70227, + "y": 145.20718, + "z": -77.93723 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.67926, + "y": 145.66348, + "z": -77.5207 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.587, + "y": 104.120995, + "z": -81.100426 + }, + "screenPosition": { + "x": 0.89805114, + "y": 0.22330101 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -388.03683, + "y": 104.06349, + "z": -79.210014 + }, + "screenPosition": { + "x": 0.9231191, + "y": 0.1683941 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.32074, + "y": 143.25456, + "z": -76.921875 + }, + "screenPosition": { + "x": 1.4113035, + "y": 0.1308128 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.31705, + "y": 142.52715, + "z": -86.995705 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.86386, + "y": 141.50664, + "z": -87.5139 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.8286, + "y": 140.61487, + "z": -81.55263 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.85767, + "y": 114.45408, + "z": -81.92517 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.20416, + "y": 113.00107, + "z": -82.52259 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.33984, + "y": 138.56325, + "z": -84.09109 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.91135, + "y": 138.92047, + "z": -84.91904 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.41565, + "y": 144.16551, + "z": -82.21805 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.74896, + "y": 140.30867, + "z": -84.854164 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.30405, + "y": 146.25272, + "z": -80.841354 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.9757, + "y": 112.51818, + "z": -87.831024 + }, + "screenPosition": { + "x": 0.88206, + "y": 0.25832674 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.28076, + "y": 110.71795, + "z": -88.45421 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.37988, + "y": 144.0864, + "z": -82.83645 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.7477, + "y": 144.40253, + "z": -83.92215 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.40982, + "y": 145.78046, + "z": -82.80528 + }, + "screenPosition": { + "x": 0.85618305, + "y": 0.3150056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.4497, + "y": 99.49379, + "z": -88.57785 + }, + "screenPosition": { + "x": 0.8762313, + "y": 0.2710934 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.42175, + "y": 141.3522, + "z": -88.7315 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.71948, + "y": 149.8303, + "z": -83.56602 + }, + "screenPosition": { + "x": 0.95045054, + "y": 0.11575299 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.6242, + "y": 146.54968, + "z": -86.06568 + }, + "screenPosition": { + "x": 0.9578723, + "y": 0.09227352 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.00824, + "y": 145.92702, + "z": -85.915344 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.70148, + "y": 143.28947, + "z": -86.702034 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.775, + "y": 147.10844, + "z": -84.517784 + }, + "screenPosition": { + "x": 1.3354958, + "y": 0.25843334 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.47275, + "y": 146.99924, + "z": -86.248245 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.09317, + "y": 145.067, + "z": -79.43945 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.4895, + "y": 139.3126, + "z": -84.36426 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.32745, + "y": 103.51098, + "z": -86.95163 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.781, + "y": 109.35014, + "z": -89.30822 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.46585, + "y": 137.89777, + "z": -85.43542 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.86966, + "y": 145.28258, + "z": -85.551125 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.80508, + "y": 141.40355, + "z": -83.97588 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.89377, + "y": 141.16812, + "z": -82.681335 + }, + "screenPosition": { + "x": 1.2389779, + "y": 0.21287628 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.0232, + "y": 130.51228, + "z": -85.57754 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.385, + "y": 144.60168, + "z": -79.72327 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.41116, + "y": 143.54228, + "z": -80.17937 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.33963, + "y": 136.37593, + "z": -84.922806 + }, + "screenPosition": { + "x": 1.1914943, + "y": 0.78807306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.4303, + "y": 142.2203, + "z": -89.43053 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.66745, + "y": 141.71922, + "z": -89.247925 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.09436, + "y": 135.46664, + "z": -86.52289 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.3977, + "y": 129.82802, + "z": -87.20254 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.1198, + "y": 133.62689, + "z": -88.792755 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.6997468, + "y": 0.47276425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.02487, + "y": 134.31079, + "z": -91.48131 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.08643, + "y": 135.2082, + "z": -95.743935 + }, + "screenPosition": { + "x": 0.7441646, + "y": 0.5603619 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.64545, + "y": 136.36894, + "z": -90.56101 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.90952, + "y": 126.27061, + "z": -87.5315 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.2883, + "y": 138.19795, + "z": -93.4119 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.9018, + "y": 138.3705, + "z": -86.68914 + }, + "screenPosition": { + "x": 0.8094855, + "y": 0.41728818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.6447, + "y": 137.88791, + "z": -85.81329 + }, + "screenPosition": { + "x": 1.1763324, + "y": 0.93556345 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.02817, + "y": 141.1636, + "z": -82.614975 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.70188886, + "y": 0.38171303 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.07834, + "y": 135.62708, + "z": -86.836174 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.14215, + "y": 133.45045, + "z": -94.780365 + }, + "screenPosition": { + "x": 0.8173069, + "y": 0.9553467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.31247, + "y": 132.80023, + "z": -95.19089 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.82675, + "y": 131.3693, + "z": -96.03141 + }, + "screenPosition": { + "x": 0.69673306, + "y": 1.4816325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.03442, + "y": 139.95743, + "z": -82.694115 + }, + "screenPosition": { + "x": 0.61685777, + "y": 1.5214113 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.6363, + "y": 139.90776, + "z": -83.36846 + }, + "screenPosition": { + "x": 0.7259403, + "y": 1.5364779 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.54028, + "y": 139.55481, + "z": -83.22513 + }, + "screenPosition": { + "x": 0.8339256, + "y": 1.5459517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.67636, + "y": 138.27457, + "z": -85.5092 + }, + "screenPosition": { + "x": 0.927268, + "y": 1.4540932 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.35287, + "y": 139.31105, + "z": -84.427086 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.7255, + "y": 135.3754, + "z": -87.18403 + }, + "screenPosition": { + "x": 0.7046531, + "y": 0.45969358 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.56387, + "y": 117.7172, + "z": -83.399315 + }, + "screenPosition": { + "x": 0.9175522, + "y": 1.0200405 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.99817, + "y": 132.40395, + "z": -95.62973 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.84567, + "y": 132.63538, + "z": -96.427444 + }, + "screenPosition": { + "x": 0.88018256, + "y": 1.4475129 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.57684, + "y": 133.3324, + "z": -90.16084 + }, + "screenPosition": { + "x": 0.9460941, + "y": 1.4360603 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.8863, + "y": 134.59523, + "z": -90.42824 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.54117, + "y": 135.48584, + "z": -90.3676 + }, + "screenPosition": { + "x": 0.7421349, + "y": 0.5648075 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.96722, + "y": 125.87513, + "z": -88.473564 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.50452, + "y": 137.68512, + "z": -88.73568 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.29315, + "y": 138.71584, + "z": -93.02153 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.7278, + "y": 139.01219, + "z": -86.28667 + }, + "screenPosition": { + "x": 0.8212677, + "y": 0.3914813 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.45563, + "y": 138.49406, + "z": -86.797844 + }, + "screenPosition": { + "x": 1.1958176, + "y": 0.7844123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.54028, + "y": 143.45906, + "z": -84.81061 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.56372, + "y": 140.9153, + "z": -85.83661 + }, + "screenPosition": { + "x": 0.7128363, + "y": 0.39044088 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.50708, + "y": 135.09628, + "z": -90.674965 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.51132, + "y": 134.4582, + "z": -95.212006 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.29584, + "y": 132.77826, + "z": -89.89511 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.7906, + "y": 141.1313, + "z": -87.377106 + }, + "screenPosition": { + "x": 0.7569667, + "y": 0.5323212 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.1037, + "y": 117.01817, + "z": -85.87472 + }, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -382.81564, + "y": 127.661575, + "z": -85.65387 + }, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -371.81918, + "y": 130.39473, + "z": -94.50936 + }, + "screenPosition": { + "x": 0.45174903, + "y": 1.504011 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.60587, + "y": 129.72156, + "z": -95.56137 + }, + "screenPosition": { + "x": 0.5134188, + "y": 1.0034325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.0169, + "y": 130.36812, + "z": -95.342476 + }, + "screenPosition": { + "x": 0.54344594, + "y": 1.0 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.8789, + "y": 130.88988, + "z": -95.01366 + }, + "screenPosition": { + "x": 0.5798108, + "y": 1.0177536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.65686, + "y": 128.32349, + "z": -103.780396 + }, + "screenPosition": { + "x": 0.64640534, + "y": 1.5297265 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.5158, + "y": 128.5237, + "z": -103.69396 + }, + "screenPosition": { + "x": 0.6580466, + "y": 1.5310061 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.28723, + "y": 128.08566, + "z": -102.34556 + }, + "screenPosition": { + "x": 0.6029987, + "y": 0.8695605 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.68295, + "y": 127.57905, + "z": -102.09556 + }, + "screenPosition": { + "x": 0.615423, + "y": 1.5248088 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.07358, + "y": 126.54331, + "z": -102.24446 + }, + "screenPosition": { + "x": 0.53556055, + "y": 1.514046 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.7562, + "y": 115.87976, + "z": -88.21441 + }, + "screenPosition": { + "x": 0.46727994, + "y": 1.505086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.38895, + "y": 113.10639, + "z": -88.45726 + }, + "screenPosition": { + "x": 0.42327467, + "y": 1.4995084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.4017, + "y": 124.42744, + "z": -105.46222 + }, + "screenPosition": { + "x": 0.4666578, + "y": 0.89766383 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.96643, + "y": 125.04528, + "z": -105.19551 + }, + "screenPosition": { + "x": 0.4484077, + "y": 1.5034792 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.74313, + "y": 117.76358, + "z": -93.41553 + }, + "screenPosition": { + "x": 0.5111339, + "y": 1.0035746 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.21564, + "y": 122.30089, + "z": -95.18841 + }, + "screenPosition": { + "x": 0.54672325, + "y": 0.99282175 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.9801, + "y": 128.42412, + "z": -96.79132 + }, + "screenPosition": { + "x": 0.6140772, + "y": 1.5255214 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.9582, + "y": 132.89221, + "z": -92.12348 + }, + "screenPosition": { + "x": 0.66619587, + "y": 1.5322164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.28445, + "y": 130.06778, + "z": -94.51962 + }, + "screenPosition": { + "x": 0.7054603, + "y": 1.5371192 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.07153, + "y": 130.6292, + "z": -93.74369 + }, + "screenPosition": { + "x": 0.6175605, + "y": 0.83766544 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.53137, + "y": 125.90096, + "z": -91.97827 + }, + "screenPosition": { + "x": 0.64691025, + "y": 1.5287241 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.6745, + "y": 124.49317, + "z": -91.76552 + }, + "screenPosition": { + "x": 0.5909778, + "y": 1.5211174 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.22076, + "y": 121.0735, + "z": -90.02652 + }, + "screenPosition": { + "x": 0.51364714, + "y": 1.5107965 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.01447, + "y": 119.02256, + "z": -88.10018 + }, + "screenPosition": { + "x": 0.42972618, + "y": 1.4998386 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.50842, + "y": 124.296425, + "z": -103.7324 + }, + "screenPosition": { + "x": 0.42149028, + "y": 1.4992547 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.36197, + "y": 125.47187, + "z": -103.368614 + }, + "screenPosition": { + "x": 0.49307424, + "y": 1.5088748 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.77817, + "y": 126.654785, + "z": -102.74538 + }, + "screenPosition": { + "x": 0.5530088, + "y": 1.5166905 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.47565, + "y": 127.84003, + "z": -101.99348 + }, + "screenPosition": { + "x": 0.6142322, + "y": 1.5246323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.78638, + "y": 121.8817, + "z": -88.46847 + }, + "screenPosition": { + "x": 0.6143168, + "y": 1.5241468 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -389.23184, + "y": 105.843346, + "z": -78.07594 + }, + "screenPosition": { + "x": 0.5248619, + "y": 1.5122504 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -389.82523, + "y": 90.7665, + "z": -76.54375 + }, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -363.08975, + "y": 124.72145, + "z": -102.700356 + }, + "screenPosition": { + "x": 0.3946137, + "y": 1.495182 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.33264, + "y": 119.32948, + "z": -82.69191 + }, + "screenPosition": { + "x": 0.32588205, + "y": 1.4859183 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.34576, + "y": 119.975685, + "z": -82.7092 + }, + "screenPosition": { + "x": 0.28279403, + "y": 1.4708835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.5891, + "y": 124.78033, + "z": -101.077354 + }, + "screenPosition": { + "x": 0.26135466, + "y": 1.452909 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.944, + "y": 126.109604, + "z": -99.92088 + }, + "screenPosition": { + "x": 0.31174046, + "y": 1.4823031 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.93762, + "y": 127.28185, + "z": -99.49629 + }, + "screenPosition": { + "x": 0.41489002, + "y": 1.495938 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.54483, + "y": 127.787476, + "z": -99.74571 + }, + "screenPosition": { + "x": 0.49681127, + "y": 1.5073256 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.9705, + "y": 120.72435, + "z": -88.225784 + }, + "screenPosition": { + "x": 0.53825146, + "y": 1.5133778 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.74265, + "y": 118.27705, + "z": -88.34199 + }, + "screenPosition": { + "x": 0.5185293, + "y": 1.5112613 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.56937, + "y": 117.08994, + "z": -88.46235 + }, + "screenPosition": { + "x": 0.45516115, + "y": 1.5033926 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.0243, + "y": 114.696465, + "z": -85.84551 + }, + "screenPosition": { + "x": 0.3778048, + "y": 1.4930842 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.06332, + "y": 123.675735, + "z": -103.0449 + }, + "screenPosition": { + "x": 0.3103958, + "y": 1.4840027 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.40726, + "y": 106.25106, + "z": -84.443825 + }, + "screenPosition": { + "x": 0.2510165, + "y": 1.4518995 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.4018, + "y": 127.257454, + "z": -100.20753 + }, + "screenPosition": { + "x": 0.18869166, + "y": 1.4092736 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.3764, + "y": 126.74484, + "z": -100.15202 + }, + "screenPosition": { + "x": 0.13581237, + "y": 1.3659445 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.55948, + "y": 125.971115, + "z": -100.198166 + }, + "screenPosition": { + "x": 0.3029699, + "y": 0.67951584 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.1972, + "y": 112.65819, + "z": -82.51342 + }, + "screenPosition": { + "x": 0.27855134, + "y": 0.646973 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -388.05325, + "y": 121.741425, + "z": -80.032234 + }, + "screenPosition": { + "x": 0.2494286, + "y": 0.6081609 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -389.83292, + "y": 102.616486, + "z": -78.73891 + }, + "screenPosition": { + "x": -0.0657976, + "y": 1.0961151 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.37222, + "y": 114.98307, + "z": -98.149796 + }, + "screenPosition": { + "x": -0.03605036, + "y": 1.1255034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.45035, + "y": 119.37753, + "z": -98.88906 + }, + "screenPosition": { + "x": 0.06353857, + "y": 1.1848197 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -390.15762, + "y": 102.398964, + "z": -78.39749 + }, + "screenPosition": { + "x": 0.096214, + "y": 1.2376083 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.62375, + "y": 110.494255, + "z": -74.83803 + }, + "screenPosition": { + "x": 0.13268812, + "y": 1.2956715 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.16476, + "y": 114.957306, + "z": -76.53754 + }, + "screenPosition": { + "x": 0.1572755, + "y": 1.3231977 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.38504, + "y": 126.413506, + "z": -98.59172 + }, + "screenPosition": { + "x": 0.20938039, + "y": 1.3896316 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.72952, + "y": 123.10715, + "z": -76.75451 + }, + "screenPosition": { + "x": 0.3172552, + "y": 1.4752817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.10858, + "y": 127.6921, + "z": -78.62494 + }, + "screenPosition": { + "x": 0.45137057, + "y": 1.4995358 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.79944, + "y": 106.75676, + "z": -74.48151 + }, + "screenPosition": { + "x": 0.4766719, + "y": 1.5039722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.6119, + "y": 125.870834, + "z": -99.441795 + }, + "screenPosition": { + "x": 0.09366046, + "y": 1.2154019 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.02768, + "y": 129.08717, + "z": -95.395355 + }, + "screenPosition": { + "x": 0.009892219, + "y": 1.1697812 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.9298, + "y": 117.51993, + "z": -96.27263 + }, + "screenPosition": { + "x": -0.0834525, + "y": 1.1178048 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.7556, + "y": 114.57127, + "z": -95.290634 + }, + "screenPosition": { + "x": -0.18651858, + "y": 1.0331274 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.95053, + "y": 113.92578, + "z": -96.49025 + }, + "screenPosition": { + "x": -0.18205209, + "y": 0.98497653 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.1977, + "y": 108.73812, + "z": -96.49265 + }, + "screenPosition": { + "x": -0.15217406, + "y": 1.0278462 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.994, + "y": 110.06814, + "z": -97.79289 + }, + "screenPosition": { + "x": 0.23976272, + "y": 0.5521139 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.45187, + "y": 116.26949, + "z": -100.169 + }, + "screenPosition": { + "x": 0.009546864, + "y": 1.1378089 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.1211, + "y": 117.30813, + "z": -100.14626 + }, + "screenPosition": { + "x": 0.060206562, + "y": 1.205233 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.98483, + "y": 127.562195, + "z": -98.813675 + }, + "screenPosition": { + "x": 0.10927221, + "y": 1.2923585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.9009, + "y": 124.80121, + "z": -101.79851 + }, + "screenPosition": { + "x": 0.1753178, + "y": 1.394884 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.41291672, + "y": 0.6106033 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.45688385, + "y": 0.5310487 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.092, + "y": 128.22255, + "z": -98.270355 + }, + "screenPosition": { + "x": 0.4297764, + "y": 1.4967763 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.45926, + "y": 129.11852, + "z": -98.33545 + }, + "screenPosition": { + "x": 0.53403246, + "y": 1.5110227 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.6877, + "y": 128.31693, + "z": -99.2844 + }, + "screenPosition": { + "x": 0.55414724, + "y": 1.5147585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.0429, + "y": 127.415436, + "z": -99.348656 + }, + "screenPosition": { + "x": 0.4307753, + "y": 1.4979281 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.22424, + "y": 128.86714, + "z": -98.178734 + }, + "screenPosition": { + "x": 0.50868964, + "y": 1.5074301 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.87994, + "y": 129.65062, + "z": -97.74681 + }, + "screenPosition": { + "x": 0.6284281, + "y": 1.5232486 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.38022, + "y": 135.49805, + "z": -94.49176 + }, + "screenPosition": { + "x": 0.6815593, + "y": 1.5302398 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.28693, + "y": 136.92578, + "z": -93.46369 + }, + "screenPosition": { + "x": 0.7789819, + "y": 1.5031527 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.3284, + "y": 137.83365, + "z": -92.764496 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.54175, + "y": 138.61266, + "z": -92.084335 + }, + "screenPosition": { + "x": 0.8436858, + "y": 1.0487034 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.89297, + "y": 139.392, + "z": -91.34171 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.01385, + "y": 135.5318, + "z": -93.27818 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.81265, + "y": 136.19118, + "z": -92.42355 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.29996, + "y": 136.22246, + "z": -91.277855 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.36908, + "y": 135.84705, + "z": -91.07687 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.85208, + "y": 134.95796, + "z": -91.07418 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.5069, + "y": 138.83447, + "z": -88.3243 + }, + "screenPosition": { + "x": 0.7326935, + "y": 0.5075981 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.094, + "y": 137.7973, + "z": -89.288 + }, + "screenPosition": { + "x": 0.6690312, + "y": 0.6966381 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.3358, + "y": 137.0124, + "z": -90.218414 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.0534, + "y": 131.80777, + "z": -94.24692 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.28394, + "y": 131.1285, + "z": -95.554436 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.5536, + "y": 130.72499, + "z": -96.18641 + }, + "screenPosition": { + "x": 0.64346087, + "y": 1.5050155 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.85873, + "y": 130.71483, + "z": -96.50754 + }, + "screenPosition": { + "x": 0.62432164, + "y": 1.5211055 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.41074, + "y": 129.6736, + "z": -97.03892 + }, + "screenPosition": { + "x": 0.54781777, + "y": 1.5112729 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.7901, + "y": 128.75963, + "z": -97.552826 + }, + "screenPosition": { + "x": 0.41375664, + "y": 1.4934821 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.09955, + "y": 127.579796, + "z": -98.29754 + }, + "screenPosition": { + "x": 0.30961728, + "y": 1.4713709 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.58347, + "y": 126.268456, + "z": -99.062096 + }, + "screenPosition": { + "x": 0.24724397, + "y": 1.4335114 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.77948, + "y": 125.594475, + "z": -99.93003 + }, + "screenPosition": { + "x": 0.23976965, + "y": 1.4336896 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.6258, + "y": 125.17832, + "z": -100.76248 + }, + "screenPosition": { + "x": 0.27576885, + "y": 1.4619709 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.8273, + "y": 130.01407, + "z": -98.40052 + }, + "screenPosition": { + "x": 0.32618123, + "y": 1.4852179 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.4369, + "y": 130.5189, + "z": -98.64947 + }, + "screenPosition": { + "x": 0.38819715, + "y": 1.4937845 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.06384, + "y": 125.91386, + "z": -101.818275 + }, + "screenPosition": { + "x": 0.44608352, + "y": 1.5017922 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.9141, + "y": 126.55687, + "z": -101.855064 + }, + "screenPosition": { + "x": 0.5129836, + "y": 1.5108172 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.54108185, + "y": 0.77601296 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.60314685, + "y": 0.7605281 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.28198, + "y": 130.10771, + "z": -99.47874 + }, + "screenPosition": { + "x": 0.7163088, + "y": 1.5370688 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.6024, + "y": 135.46243, + "z": -95.77178 + }, + "screenPosition": { + "x": 0.7113995, + "y": 1.5358388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.8485, + "y": 134.95758, + "z": -95.58796 + }, + "screenPosition": { + "x": 0.6653751, + "y": 1.529271 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.51746, + "y": 128.97263, + "z": -98.869736 + }, + "screenPosition": { + "x": 0.5719074, + "y": 1.5167884 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.61298, + "y": 127.52474, + "z": -99.911896 + }, + "screenPosition": { + "x": 0.49234498, + "y": 1.50675 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.5255, + "y": 126.84723, + "z": -100.91037 + }, + "screenPosition": { + "x": 0.50081533, + "y": 1.5086024 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.6141, + "y": 126.56817, + "z": -101.530754 + }, + "screenPosition": { + "x": 0.52863145, + "y": 1.5127391 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.97736, + "y": 127.46732, + "z": -101.59528 + }, + "screenPosition": { + "x": 0.5514106, + "y": 0.78184074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.09473, + "y": 128.23026, + "z": -101.872856 + }, + "screenPosition": { + "x": 0.65361506, + "y": 1.5298834 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.35895, + "y": 129.94766, + "z": -100.46636 + }, + "screenPosition": { + "x": 0.7417634, + "y": 1.541125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -360.2024, + "y": 133.76173, + "z": -97.22699 + }, + "screenPosition": { + "x": 0.71352416, + "y": 0.62747425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.44745, + "y": 133.89565, + "z": -97.01606 + }, + "screenPosition": { + "x": 0.7152129, + "y": 0.6237754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.52408, + "y": 138.5658, + "z": -93.93218 + }, + "screenPosition": { + "x": 0.95516425, + "y": 1.4742742 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.66177, + "y": 137.9314, + "z": -93.89437 + }, + "screenPosition": { + "x": 0.9019404, + "y": 1.492416 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.45074, + "y": 137.03302, + "z": -94.21177 + }, + "screenPosition": { + "x": 0.82681346, + "y": 1.5470196 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.4509, + "y": 136.39616, + "z": -94.23787 + }, + "screenPosition": { + "x": 0.7541003, + "y": 1.539999 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.62396, + "y": 135.63121, + "z": -94.281975 + }, + "screenPosition": { + "x": 0.6734674, + "y": 1.5289122 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.61844, + "y": 129.4141, + "z": -97.13972 + }, + "screenPosition": { + "x": 0.61934114, + "y": 1.5210007 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.24036, + "y": 128.1088, + "z": -97.8375 + }, + "screenPosition": { + "x": 0.4646152, + "y": 1.500886 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.48572, + "y": 128.77031, + "z": -97.23096 + }, + "screenPosition": { + "x": 0.3978303, + "y": 1.4909313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.19293, + "y": 134.53325, + "z": -92.5923 + }, + "screenPosition": { + "x": 0.38019288, + "y": 1.4868515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.54105, + "y": 135.20053, + "z": -91.48389 + }, + "screenPosition": { + "x": 0.46040532, + "y": 1.1958767 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.43896, + "y": 136.74245, + "z": -90.825386 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.85388, + "y": 137.49971, + "z": -90.97295 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.5454, + "y": 138.26003, + "z": -90.99344 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.96127, + "y": 139.01682, + "z": -91.14093 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.52484, + "y": 134.74518, + "z": -94.08844 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.71985, + "y": 139.63693, + "z": -91.687416 + }, + "screenPosition": { + "x": 0.954049, + "y": 1.0404185 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.67996, + "y": 139.36682, + "z": -92.35906 + }, + "screenPosition": { + "x": 0.69407964, + "y": 0.48309547 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.67163473, + "y": 0.52498835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.0828, + "y": 131.72282, + "z": -97.004456 + }, + "screenPosition": { + "x": 0.8311715, + "y": 1.5243348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.3716, + "y": 132.13367, + "z": -96.11501 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.54175, + "y": 138.61266, + "z": -92.084335 + }, + "screenPosition": { + "x": 0.8678087, + "y": 1.062162 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.96286, + "y": 139.76877, + "z": -91.47897 + }, + "screenPosition": { + "x": 0.95626044, + "y": 1.0002983 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.23798, + "y": 139.88971, + "z": -91.71538 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.5224, + "y": 136.65678, + "z": -94.01026 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.001, + "y": 137.15732, + "z": -94.32153 + }, + "screenPosition": { + "x": 0.7799622, + "y": 0.48195365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.9386, + "y": 141.91653, + "z": -91.684814 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.22403, + "y": 135.8481, + "z": -95.653404 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.15503, + "y": 140.10252, + "z": -93.39803 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.42615, + "y": 139.58852, + "z": -93.66099 + }, + "screenPosition": { + "x": 0.72342426, + "y": 0.60578984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.96576, + "y": 133.51076, + "z": -97.070694 + }, + "screenPosition": { + "x": 0.95516425, + "y": 1.4742742 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.8085, + "y": 133.40514, + "z": -96.318436 + }, + "screenPosition": { + "x": 0.6710721, + "y": 0.5381948 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.4413, + "y": 139.75168, + "z": -92.17829 + }, + "screenPosition": { + "x": 0.69738376, + "y": 0.4872767 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.03534, + "y": 135.75372, + "z": -94.45572 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.7864953, + "y": 0.46764404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.85715, + "y": 136.63617, + "z": -94.77708 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.41177, + "y": 141.26686, + "z": -92.40947 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.1945, + "y": 140.49043, + "z": -93.089485 + }, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.79846, + "y": 139.32268, + "z": -94.143456 + }, + "screenPosition": { + "x": 1.0279921, + "y": 1.4507756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.39975, + "y": 133.62025, + "z": -97.695175 + }, + "screenPosition": { + "x": 0.98786485, + "y": 1.5093043 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.19153, + "y": 132.71553, + "z": -98.01607 + }, + "screenPosition": { + "x": 0.69690245, + "y": 0.6638811 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.67914, + "y": 136.88145, + "z": -95.12472 + }, + "screenPosition": { + "x": 0.86305845, + "y": 1.5559607 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.98007, + "y": 130.11806, + "z": -99.15602 + }, + "screenPosition": { + "x": 0.7435745, + "y": 1.5404142 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.13235, + "y": 129.05273, + "z": -100.337006 + }, + "screenPosition": { + "x": 0.6761834, + "y": 1.5320954 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.52655, + "y": 129.29185, + "z": -100.882286 + }, + "screenPosition": { + "x": 0.6950083, + "y": 1.5349994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.88623, + "y": 129.6624, + "z": -101.34465 + }, + "screenPosition": { + "x": 0.6277907, + "y": 0.8224817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.6653106, + "y": 0.84546226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.7148156, + "y": 0.7386288 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.75223, + "y": 138.41553, + "z": -94.84425 + }, + "screenPosition": { + "x": 0.9938041, + "y": 1.5162613 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.96387, + "y": 138.67717, + "z": -94.55264 + }, + "screenPosition": { + "x": 0.70750284, + "y": 0.6406629 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.3805, + "y": 134.15587, + "z": -96.85122 + }, + "screenPosition": { + "x": 0.71967787, + "y": 0.6139956 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.2843, + "y": 138.31566, + "z": -93.77668 + }, + "screenPosition": { + "x": 0.9496223, + "y": 1.450925 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.31686, + "y": 137.55032, + "z": -93.884445 + }, + "screenPosition": { + "x": 0.88126844, + "y": 1.4892552 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.32373, + "y": 131.33331, + "z": -97.187706 + }, + "screenPosition": { + "x": 0.7895873, + "y": 1.5447731 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.86124, + "y": 129.8832, + "z": -98.48331 + }, + "screenPosition": { + "x": 0.6542266, + "y": 1.5276619 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.6693, + "y": 129.07611, + "z": -99.62604 + }, + "screenPosition": { + "x": 0.64723426, + "y": 1.527743 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.3928, + "y": 130.76625, + "z": -98.93515 + }, + "screenPosition": { + "x": 0.80479914, + "y": 1.5486338 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.47464, + "y": 132.0788, + "z": -97.91441 + }, + "screenPosition": { + "x": 0.86286575, + "y": 1.5554677 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.19254, + "y": 132.33209, + "z": -93.79114 + }, + "screenPosition": { + "x": 0.18562281, + "y": 1.3078417 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.02267, + "y": 131.29887, + "z": -94.19104 + }, + "screenPosition": { + "x": 0.10812084, + "y": 1.2445123 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.9924, + "y": 130.26637, + "z": -94.52741 + }, + "screenPosition": { + "x": 0.039782465, + "y": 1.1966403 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.65137, + "y": 129.35901, + "z": -94.91022 + }, + "screenPosition": { + "x": -0.03490171, + "y": 1.1460996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.9255, + "y": 129.09848, + "z": -95.85929 + }, + "screenPosition": { + "x": 0.30299446, + "y": 0.4261755 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.9516, + "y": 129.11708, + "z": -95.83358 + }, + "screenPosition": { + "x": -0.17169352, + "y": 1.049124 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.9868, + "y": 123.512695, + "z": -94.459595 + }, + "screenPosition": { + "x": -0.19642636, + "y": 0.9516054 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.49982, + "y": 121.040146, + "z": -93.81911 + }, + "screenPosition": { + "x": -0.22472204, + "y": 0.8511398 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.67877, + "y": 116.79703, + "z": -93.43527 + }, + "screenPosition": { + "x": -0.24841449, + "y": 0.7730871 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.6142, + "y": 105.360214, + "z": -92.8284 + }, + "screenPosition": { + "x": -0.29113463, + "y": 0.6676259 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -374.9083, + "y": 113.052216, + "z": -93.0235 + }, + "screenPosition": { + "x": -0.318711, + "y": 0.71673894 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.28207, + "y": 114.40784, + "z": -93.7264 + }, + "screenPosition": { + "x": -0.2639166, + "y": 0.8530158 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.15088, + "y": 113.1217, + "z": -95.22814 + }, + "screenPosition": { + "x": -0.22787723, + "y": 0.9014787 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.56366, + "y": 121.97032, + "z": -93.798164 + }, + "screenPosition": { + "x": -0.22562698, + "y": 0.8655775 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.9584, + "y": 119.24828, + "z": -93.26647 + }, + "screenPosition": { + "x": -0.25167736, + "y": 0.7719969 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.6142, + "y": 105.360214, + "z": -92.8284 + }, + "screenPosition": { + "x": -0.29263464, + "y": 0.66960865 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.29803097, + "y": 0.2569992 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.3222053, + "y": 0.24394579 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.30582, + "y": 121.56198, + "z": -94.041695 + }, + "screenPosition": { + "x": -0.23873532, + "y": 1.0876302 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.00504, + "y": 118.474335, + "z": -96.24122 + }, + "screenPosition": { + "x": -0.10574598, + "y": 1.1205801 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.66504, + "y": 115.743515, + "z": -94.41896 + }, + "screenPosition": { + "x": -0.22444075, + "y": 0.9597074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.98914, + "y": 116.13717, + "z": -93.087494 + }, + "screenPosition": { + "x": -0.30054405, + "y": 0.8028934 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.8318, + "y": 117.331726, + "z": -93.30462 + }, + "screenPosition": { + "x": 0.31610766, + "y": 0.2447392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.35391203, + "y": 0.24238381 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.03027, + "y": 124.11914, + "z": -94.44404 + }, + "screenPosition": { + "x": 0.39588338, + "y": 0.24720427 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.17212, + "y": 128.4103, + "z": -95.93203 + }, + "screenPosition": { + "x": -0.05110703, + "y": 1.2000009 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.94464, + "y": 123.222534, + "z": -95.50849 + }, + "screenPosition": { + "x": -0.040394776, + "y": 1.1765839 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.7934, + "y": 129.7694, + "z": -94.08734 + }, + "screenPosition": { + "x": -0.12518586, + "y": 1.1112183 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.88852, + "y": 117.25081, + "z": -94.26261 + }, + "screenPosition": { + "x": -0.24404666, + "y": 0.96710384 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.34582308, + "y": 0.25113466 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.38932776, + "y": 0.26153967 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.6018, + "y": 128.86758, + "z": -96.178406 + }, + "screenPosition": { + "x": 0.09130351, + "y": 1.1406713 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.06094, + "y": 131.57516, + "z": -93.5155 + }, + "screenPosition": { + "x": 0.078411914, + "y": 1.2420982 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.7255, + "y": 126.66513, + "z": -98.344 + }, + "screenPosition": { + "x": 0.08218584, + "y": 1.2231038 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.12613, + "y": 129.86046, + "z": -95.22253 + }, + "screenPosition": { + "x": 0.053773005, + "y": 1.1964729 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.1465, + "y": 128.91185, + "z": -96.82672 + }, + "screenPosition": { + "x": 0.08581628, + "y": 1.2134993 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.57104, + "y": 125.2792, + "z": -101.137886 + }, + "screenPosition": { + "x": 0.1523896, + "y": 1.3530978 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.12036, + "y": 125.67101, + "z": -100.59636 + }, + "screenPosition": { + "x": 0.23795076, + "y": 1.4312263 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.1064, + "y": 126.40898, + "z": -98.720825 + }, + "screenPosition": { + "x": 0.22619602, + "y": 1.4168441 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.74188, + "y": 127.54093, + "z": -98.01196 + }, + "screenPosition": { + "x": 0.15362513, + "y": 1.2731425 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.77554, + "y": 122.73174, + "z": -96.67728 + }, + "screenPosition": { + "x": 0.053356893, + "y": 1.2119393 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.10437, + "y": 119.734535, + "z": -96.19974 + }, + "screenPosition": { + "x": -0.067518376, + "y": 1.1422395 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.29802078, + "y": 0.4162959 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.35333, + "y": 114.325836, + "z": -97.11819 + }, + "screenPosition": { + "x": -0.11887165, + "y": 1.080032 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.60303, + "y": 115.49835, + "z": -98.958595 + }, + "screenPosition": { + "x": -0.010532067, + "y": 1.135036 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.03625, + "y": 119.80344, + "z": -99.331505 + }, + "screenPosition": { + "x": 0.07867448, + "y": 1.2117671 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.4775, + "y": 122.03966, + "z": -97.96803 + }, + "screenPosition": { + "x": 0.09186369, + "y": 1.215743 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.7809, + "y": 121.40163, + "z": -96.60869 + }, + "screenPosition": { + "x": 0.016527785, + "y": 1.1845264 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.72076, + "y": 118.77361, + "z": -95.52563 + }, + "screenPosition": { + "x": -0.113088615, + "y": 1.1077808 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.69522, + "y": 115.33923, + "z": -95.38869 + }, + "screenPosition": { + "x": -0.18594222, + "y": 1.0471328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.6688, + "y": 113.44463, + "z": -95.73504 + }, + "screenPosition": { + "x": -0.20885676, + "y": 0.93571746 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.56335, + "y": 107.62061, + "z": -95.04332 + }, + "screenPosition": { + "x": -0.20850837, + "y": 0.886186 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.3476, + "y": 106.21521, + "z": -96.17514 + }, + "screenPosition": { + "x": -0.16918975, + "y": 0.96569306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.56952, + "y": 107.0879, + "z": -97.01646 + }, + "screenPosition": { + "x": 0.20105705, + "y": 0.5436958 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.18045, + "y": 109.03614, + "z": -98.54421 + }, + "screenPosition": { + "x": 0.22528529, + "y": 0.57932687 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.75897, + "y": 128.79881, + "z": -100.244606 + }, + "screenPosition": { + "x": 0.3288718, + "y": 1.4866141 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.34598, + "y": 123.77912, + "z": -103.74225 + }, + "screenPosition": { + "x": 0.37191325, + "y": 1.4925921 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.29044, + "y": 123.49494, + "z": -104.431496 + }, + "screenPosition": { + "x": 0.4503767, + "y": 0.8759659 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.81323, + "y": 123.84332, + "z": -105.71436 + }, + "screenPosition": { + "x": 0.39914128, + "y": 1.496824 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.42632997, + "y": 0.94229823 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.38742113, + "y": 0.89490426 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.87558, + "y": 126.15923, + "z": -102.17049 + }, + "screenPosition": { + "x": 0.25903404, + "y": 1.4619203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.88904, + "y": 122.65286, + "z": -104.767715 + }, + "screenPosition": { + "x": 0.2299797, + "y": 1.4405955 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.7462, + "y": 123.26426, + "z": -103.92271 + }, + "screenPosition": { + "x": 0.24661054, + "y": 1.4497217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.92676, + "y": 124.20472, + "z": -102.710014 + }, + "screenPosition": { + "x": 0.3418062, + "y": 1.4880947 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.4567, + "y": 124.44531, + "z": -103.192955 + }, + "screenPosition": { + "x": 0.39839023, + "y": 1.4959303 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.5714, + "y": 123.499794, + "z": -104.30109 + }, + "screenPosition": { + "x": 0.44713828, + "y": 0.87165004 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.69772, + "y": 122.58787, + "z": -106.25631 + }, + "screenPosition": { + "x": 0.34914514, + "y": 1.4900802 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.38495395, + "y": 0.88712233 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.36023194, + "y": 0.86073166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.3308247, + "y": 0.817331 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.8556, + "y": 118.678604, + "z": -103.95039 + }, + "screenPosition": { + "x": 0.12996961, + "y": 1.3721049 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.1807, + "y": 118.460815, + "z": -103.60855 + }, + "screenPosition": { + "x": 0.09950972, + "y": 1.3150985 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.35132, + "y": 117.67663, + "z": -102.37767 + }, + "screenPosition": { + "x": 0.3036518, + "y": 0.6804246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.34095532, + "y": 0.6593388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.13992, + "y": 124.25839, + "z": -102.54873 + }, + "screenPosition": { + "x": 0.20927995, + "y": 1.4203893 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.19772, + "y": 123.58635, + "z": -103.477554 + }, + "screenPosition": { + "x": 0.27297845, + "y": 1.466595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.25003, + "y": 122.910355, + "z": -104.411835 + }, + "screenPosition": { + "x": 0.3915925, + "y": 0.79762375 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.3935, + "y": 122.299416, + "z": -105.25622 + }, + "screenPosition": { + "x": 0.23536488, + "y": 1.4451408 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.79407, + "y": 125.263626, + "z": -101.97619 + }, + "screenPosition": { + "x": 0.33010307, + "y": 0.8083312 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.0163, + "y": 124.88644, + "z": -101.70745 + }, + "screenPosition": { + "x": 0.12340631, + "y": 1.3655701 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.99286, + "y": 124.372536, + "z": -101.65202 + }, + "screenPosition": { + "x": 0.086247236, + "y": 1.2937263 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.77075, + "y": 124.70836, + "z": -101.926834 + }, + "screenPosition": { + "x": 0.261014, + "y": 0.70862293 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.22656, + "y": 111.987656, + "z": -100.70709 + }, + "screenPosition": { + "x": 0.020718636, + "y": 1.1564922 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.82672, + "y": 116.68827, + "z": -100.826324 + }, + "screenPosition": { + "x": 0.040763143, + "y": 1.1748434 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.86096, + "y": 119.31082, + "z": -100.50655 + }, + "screenPosition": { + "x": 0.09828553, + "y": 1.2703254 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.63132, + "y": 124.6089, + "z": -102.06429 + }, + "screenPosition": { + "x": 0.16676414, + "y": 1.3901306 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.37524, + "y": 123.71296, + "z": -103.30257 + }, + "screenPosition": { + "x": 0.2175798, + "y": 1.4286354 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.52155, + "y": 123.104034, + "z": -104.14416 + }, + "screenPosition": { + "x": 0.36241162, + "y": 0.75873417 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.67126, + "y": 118.802086, + "z": -104.14422 + }, + "screenPosition": { + "x": 0.14584954, + "y": 1.3827833 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.45654, + "y": 112.822655, + "z": -102.545074 + }, + "screenPosition": { + "x": 0.08989358, + "y": 1.3014153 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.25744292, + "y": 0.7172328 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.51566, + "y": 109.70057, + "z": -101.27221 + }, + "screenPosition": { + "x": 0.011071345, + "y": 1.1477555 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.3983, + "y": 109.090195, + "z": -100.342896 + }, + "screenPosition": { + "x": -0.032506723, + "y": 1.10211 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.364, + "y": 108.440025, + "z": -98.31998 + }, + "screenPosition": { + "x": 0.22171685, + "y": 0.5712293 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.63235, + "y": 115.47871, + "z": -98.92776 + }, + "screenPosition": { + "x": -0.040112894, + "y": 1.1124097 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.32843, + "y": 117.08978, + "z": -99.924484 + }, + "screenPosition": { + "x": 0.0549144, + "y": 1.1914276 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.46735, + "y": 117.59891, + "z": -102.25568 + }, + "screenPosition": { + "x": 0.30097383, + "y": 0.6768556 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.11246, + "y": 112.46863, + "z": -101.86104 + }, + "screenPosition": { + "x": 0.07463267, + "y": 1.2673705 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.24651788, + "y": 0.70131916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": { + "x": -370.17758, + "y": 99.78869, + "z": -96.92947 + }, + "screenPosition": { + "x": 0.1422348, + "y": 0.5560576 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.1501, + "y": 102.40137, + "z": -96.122375 + }, + "screenPosition": { + "x": 0.16504483, + "y": 0.49570203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.37817, + "y": 106.57733, + "z": -96.16826 + }, + "screenPosition": { + "x": -0.16735297, + "y": 0.9689514 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.92902, + "y": 109.80759, + "z": -96.83388 + }, + "screenPosition": { + "x": -0.12556009, + "y": 1.0628738 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.20557, + "y": 110.55573, + "z": -98.61922 + }, + "screenPosition": { + "x": -0.03149124, + "y": 1.114078 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": { + "x": 0.23335956, + "y": 0.6533146 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.86362, + "y": 105.37619, + "z": -99.62904 + }, + "screenPosition": { + "x": -0.059934296, + "y": 1.0847325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.86554, + "y": 115.83296, + "z": -97.2778 + }, + "screenPosition": { + "x": 0.16906114, + "y": 0.5899944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.12723, + "y": 115.57553, + "z": -95.97908 + }, + "screenPosition": { + "x": -0.15967657, + "y": 0.95143074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.90076, + "y": 116.52594, + "z": -95.23541 + }, + "screenPosition": { + "x": 0.16557637, + "y": 0.49641043 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.51547, + "y": 116.93888, + "z": -94.62821 + }, + "screenPosition": { + "x": -0.20030566, + "y": 0.8691365 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.4804, + "y": 117.34158, + "z": -93.6634 + }, + "screenPosition": { + "x": 0.17238145, + "y": 0.40168017 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": null + } + ], + "deltaImage": "20190825-080923/brain-CAFDEC-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + }, + { + "brainId": "CBDACC", + "panelName": "32D", + "pixels": [ + { + "modelPosition": { + "x": -393.0601, + "y": 94.08593, + "z": -73.50453 + }, + "screenPosition": { + "x": -0.42013744, + "y": 0.3211749 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.1441, + "y": 103.97769, + "z": -92.20339 + }, + "screenPosition": { + "x": -0.26810983, + "y": 0.7620191 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.38342, + "y": 105.61458, + "z": -93.077644 + }, + "screenPosition": { + "x": -0.2570433, + "y": 0.780541 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.68988, + "y": 107.943596, + "z": -93.929955 + }, + "screenPosition": { + "x": -0.23375231, + "y": 0.78842187 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.8568, + "y": 113.31869, + "z": -95.537346 + }, + "screenPosition": { + "x": -0.19589716, + "y": 0.7771864 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.36734, + "y": 113.646576, + "z": -96.052 + }, + "screenPosition": { + "x": -0.17353436, + "y": 0.7789992 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -390.01773, + "y": 118.675575, + "z": -77.8836 + }, + "screenPosition": { + "x": -0.18621114, + "y": 0.28235462 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.14685, + "y": 118.31787, + "z": -76.715294 + }, + "screenPosition": { + "x": -0.19296059, + "y": 0.25284946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.06253, + "y": 108.94872, + "z": -95.63544 + }, + "screenPosition": { + "x": -0.21953607, + "y": 0.8284443 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.77148, + "y": 114.04572, + "z": -96.67852 + }, + "screenPosition": { + "x": -0.17894551, + "y": 0.8004659 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.97482, + "y": 114.343704, + "z": -95.05634 + }, + "screenPosition": { + "x": -0.1649278, + "y": 0.7683348 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -393.71762, + "y": 107.68561, + "z": -73.58932 + }, + "screenPosition": { + "x": -0.2981935, + "y": 0.23543198 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -393.59387, + "y": 107.08286, + "z": -73.68689 + }, + "screenPosition": { + "x": -0.3009548, + "y": 0.24139538 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.1193, + "y": 108.48788, + "z": -75.25717 + }, + "screenPosition": { + "x": -0.28593075, + "y": 0.27569848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.0667, + "y": 108.77743, + "z": -76.34423 + }, + "screenPosition": { + "x": -0.28004065, + "y": 0.30342695 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -388.73892, + "y": 94.48887, + "z": -77.88363 + }, + "screenPosition": { + "x": -0.40293312, + "y": 0.43838924 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.36166, + "y": 121.81995, + "z": -97.05604 + }, + "screenPosition": { + "x": -0.09685935, + "y": 0.7802377 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.82092, + "y": 109.40364, + "z": -79.68361 + }, + "screenPosition": { + "x": -0.2643188, + "y": 0.39028138 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -386.1592, + "y": 96.012985, + "z": -80.58265 + }, + "screenPosition": { + "x": -0.3810248, + "y": 0.50216854 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -386.23514, + "y": 129.24492, + "z": -82.24223 + }, + "screenPosition": { + "x": -0.0734759, + "y": 0.33172587 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.2942, + "y": 121.59412, + "z": -83.858284 + }, + "screenPosition": { + "x": -0.14188081, + "y": 0.42631593 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.09363, + "y": 134.3383, + "z": -90.527275 + }, + "screenPosition": { + "x": 0.02684281, + "y": 0.5880362 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.73422, + "y": 122.788994, + "z": -93.66311 + }, + "screenPosition": { + "x": -0.101519816, + "y": 0.6854248 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.44485, + "y": 115.60578, + "z": -86.479515 + }, + "screenPosition": { + "x": -0.18792413, + "y": 0.5356996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.2648, + "y": 114.05049, + "z": -86.5893 + }, + "screenPosition": { + "x": -0.1955725, + "y": 0.54452074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.576, + "y": 108.1477, + "z": -87.42083 + }, + "screenPosition": { + "x": -0.25427762, + "y": 0.58416694 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.9935, + "y": 110.13574, + "z": -85.66045 + }, + "screenPosition": { + "x": -0.23968184, + "y": 0.54820585 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.31784, + "y": 117.7214, + "z": -87.72911 + }, + "screenPosition": { + "x": -0.15985212, + "y": 0.55247164 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.716, + "y": 127.44194, + "z": -98.573906 + }, + "screenPosition": { + "x": -0.024524024, + "y": 0.8227892 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.9184, + "y": 128.3515, + "z": -98.25203 + }, + "screenPosition": { + "x": -0.008872782, + "y": 0.8258924 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.78586, + "y": 129.9268, + "z": -97.13108 + }, + "screenPosition": { + "x": 0.013138605, + "y": 0.8029408 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.4508, + "y": 131.11644, + "z": -95.93936 + }, + "screenPosition": { + "x": 0.02358845, + "y": 0.77262866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.15625, + "y": 130.89392, + "z": -94.885506 + }, + "screenPosition": { + "x": 0.0046918048, + "y": 0.7216661 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.1683, + "y": 131.41151, + "z": -92.66246 + }, + "screenPosition": { + "x": -0.045169123, + "y": 0.5858661 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.74704, + "y": 133.72455, + "z": -89.79013 + }, + "screenPosition": { + "x": 0.0033358387, + "y": 0.5438381 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.9517, + "y": 134.62251, + "z": -89.475914 + }, + "screenPosition": { + "x": 0.020807646, + "y": 0.5449232 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.8797, + "y": 135.39929, + "z": -88.92616 + }, + "screenPosition": { + "x": 0.029893223, + "y": 0.5357094 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.51572, + "y": 131.62465, + "z": -91.91966 + }, + "screenPosition": { + "x": -0.016654057, + "y": 0.60125744 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.68427, + "y": 132.65567, + "z": -91.522 + }, + "screenPosition": { + "x": 0.0014054753, + "y": 0.6023097 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.27094, + "y": 132.53362, + "z": -91.348785 + }, + "screenPosition": { + "x": -0.0035301142, + "y": 0.5922363 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.33426, + "y": 131.17264, + "z": -94.14507 + }, + "screenPosition": { + "x": 0.0026535243, + "y": 0.6920142 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.3737, + "y": 129.87912, + "z": -94.64565 + }, + "screenPosition": { + "x": -0.020337706, + "y": 0.69123936 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.81354, + "y": 128.93736, + "z": -96.05546 + }, + "screenPosition": { + "x": -0.022781396, + "y": 0.7365517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.5236, + "y": 130.23836, + "z": -94.28387 + }, + "screenPosition": { + "x": -0.040782765, + "y": 0.63967353 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.3777, + "y": 131.62267, + "z": -91.98341 + }, + "screenPosition": { + "x": -0.015829435, + "y": 0.60404074 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.99518, + "y": 132.29735, + "z": -90.74792 + }, + "screenPosition": { + "x": -0.01647794, + "y": 0.56076497 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.026, + "y": 132.22737, + "z": -93.042404 + }, + "screenPosition": { + "x": 0.011141805, + "y": 0.6630485 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.0995, + "y": 130.80605, + "z": -93.6234 + }, + "screenPosition": { + "x": -0.013333575, + "y": 0.6630749 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.27402, + "y": 123.72505, + "z": -87.03904 + }, + "screenPosition": { + "x": -0.11308008, + "y": 0.49928638 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.80948, + "y": 135.86346, + "z": -85.902794 + }, + "screenPosition": { + "x": 0.0030964627, + "y": 0.40695533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.9791, + "y": 136.88538, + "z": -85.51149 + }, + "screenPosition": { + "x": 0.019773047, + "y": 0.4089643 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.95892, + "y": 132.37091, + "z": -92.513885 + }, + "screenPosition": { + "x": 0.008607433, + "y": 0.64074695 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.55334, + "y": 111.5828, + "z": -87.19764 + }, + "screenPosition": { + "x": -0.21774267, + "y": 0.57784754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.41327, + "y": 107.586815, + "z": -86.54046 + }, + "screenPosition": { + "x": -0.26529247, + "y": 0.5653457 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.09073, + "y": 108.47276, + "z": -87.93106 + }, + "screenPosition": { + "x": -0.2670047, + "y": 0.6039587 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.92316, + "y": 117.81375, + "z": -87.11625 + }, + "screenPosition": { + "x": -0.16596828, + "y": 0.5388818 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.88522, + "y": 121.46179, + "z": -88.347755 + }, + "screenPosition": { + "x": -0.12789199, + "y": 0.54806083 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.89, + "y": 138.13647, + "z": -85.96749 + }, + "screenPosition": { + "x": 0.054025117, + "y": 0.45227578 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.13892, + "y": 139.01694, + "z": -86.097626 + }, + "screenPosition": { + "x": 0.07501913, + "y": 0.47471368 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.56946, + "y": 134.88997, + "z": -88.99671 + }, + "screenPosition": { + "x": 0.020041179, + "y": 0.5288847 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.42636, + "y": 135.2898, + "z": -88.3104 + }, + "screenPosition": { + "x": 0.019690722, + "y": 0.50582033 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.70105, + "y": 135.29337, + "z": -88.1838 + }, + "screenPosition": { + "x": 0.018074585, + "y": 0.5002466 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.91788, + "y": 101.02427, + "z": -88.20731 + }, + "screenPosition": { + "x": -0.31288126, + "y": 0.6776611 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.12476, + "y": 133.52032, + "z": -89.74789 + }, + "screenPosition": { + "x": -0.0249035, + "y": 0.49541628 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.85596, + "y": 133.17778, + "z": -89.34293 + }, + "screenPosition": { + "x": -0.031960446, + "y": 0.48149842 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.5058, + "y": 132.92802, + "z": -89.68811 + }, + "screenPosition": { + "x": -0.03316882, + "y": 0.49247605 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.36835, + "y": 132.98079, + "z": -90.49358 + }, + "screenPosition": { + "x": -0.03244205, + "y": 0.5171879 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.9955, + "y": 132.71484, + "z": -90.861145 + }, + "screenPosition": { + "x": -0.02359064, + "y": 0.53129923 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.8398, + "y": 133.3171, + "z": -90.02879 + }, + "screenPosition": { + "x": -0.01581321, + "y": 0.5061218 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.78473, + "y": 113.76671, + "z": -88.08502 + }, + "screenPosition": { + "x": -0.19123065, + "y": 0.5849015 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.05646, + "y": 111.7912, + "z": -86.6945 + }, + "screenPosition": { + "x": -0.2216449, + "y": 0.565806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.71643, + "y": 141.48215, + "z": -81.95421 + }, + "screenPosition": { + "x": 0.081588596, + "y": 0.34053147 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.5391, + "y": 141.79619, + "z": -81.22708 + }, + "screenPosition": { + "x": 0.08147764, + "y": 0.31737685 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.62238, + "y": 109.94639, + "z": -83.99053 + }, + "screenPosition": { + "x": -0.2464285, + "y": 0.5039852 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.81033, + "y": 94.37826, + "z": -82.840675 + }, + "screenPosition": { + "x": -0.38847995, + "y": 0.5748335 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.40094, + "y": 139.04724, + "z": -81.7807 + }, + "screenPosition": { + "x": 0.024938019, + "y": 0.26886895 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.67206, + "y": 130.32593, + "z": -82.867714 + }, + "screenPosition": { + "x": -0.06619653, + "y": 0.34384218 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.30325, + "y": 136.34998, + "z": -84.95867 + }, + "screenPosition": { + "x": -0.025054248, + "y": 0.34015226 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.7063, + "y": 101.36181, + "z": -84.413666 + }, + "screenPosition": { + "x": -0.32170153, + "y": 0.5715619 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.76538, + "y": 142.50545, + "z": -80.96725 + }, + "screenPosition": { + "x": 0.09541932, + "y": 0.32120907 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.3754, + "y": 143.46318, + "z": -80.79777 + }, + "screenPosition": { + "x": 0.116106525, + "y": 0.33374706 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.25085, + "y": 91.77393, + "z": -87.26135 + }, + "screenPosition": { + "x": -0.39779353, + "y": 0.7131391 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -377.23178, + "y": 139.54373, + "z": -85.209694 + }, + "screenPosition": { + "x": 0.07651797, + "y": 0.44350258 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.91592, + "y": 109.92966, + "z": -90.217834 + }, + "screenPosition": { + "x": -0.23046024, + "y": 0.6492404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.5006, + "y": 138.08423, + "z": -87.9871 + }, + "screenPosition": { + "x": 0.078143924, + "y": 0.5428118 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.21964, + "y": 137.18437, + "z": -93.30024 + }, + "screenPosition": { + "x": 0.12651224, + "y": 0.7643798 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.6422, + "y": 136.01819, + "z": -89.4718 + }, + "screenPosition": { + "x": 0.050710037, + "y": 0.5717477 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.70694, + "y": 134.89177, + "z": -88.93333 + }, + "screenPosition": { + "x": 0.019524164, + "y": 0.5258325 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.8299, + "y": 135.06216, + "z": -87.39658 + }, + "screenPosition": { + "x": 0.0028767833, + "y": 0.46044976 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.09436, + "y": 135.46664, + "z": -86.52289 + }, + "screenPosition": { + "x": 0.0016658123, + "y": 0.42788056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.3234, + "y": 136.63173, + "z": -85.54627 + }, + "screenPosition": { + "x": 0.014896558, + "y": 0.40560952 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.4409, + "y": 137.77747, + "z": -90.04873 + }, + "screenPosition": { + "x": 0.09749263, + "y": 0.6302195 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.32968, + "y": 140.02747, + "z": -83.41707 + }, + "screenPosition": { + "x": 0.040581115, + "y": 0.32982835 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.4959, + "y": 144.6447, + "z": -78.57401 + }, + "screenPosition": { + "x": 0.12140674, + "y": 0.26718068 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.70227, + "y": 145.20718, + "z": -77.93723 + }, + "screenPosition": { + "x": 0.12919603, + "y": 0.24012028 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.67926, + "y": 145.66348, + "z": -77.5207 + }, + "screenPosition": { + "x": 0.13618435, + "y": 0.23819327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.587, + "y": 104.120995, + "z": -81.100426 + }, + "screenPosition": { + "x": -0.31864342, + "y": 0.44207078 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -388.03683, + "y": 104.06349, + "z": -79.210014 + }, + "screenPosition": { + "x": -0.31386337, + "y": 0.4113587 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -387.32074, + "y": 143.25456, + "z": -76.921875 + }, + "screenPosition": { + "x": 0.06991001, + "y": 0.1693392 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.31705, + "y": 142.52715, + "z": -86.995705 + }, + "screenPosition": { + "x": 0.16578084, + "y": 0.5790388 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.86386, + "y": 141.50664, + "z": -87.5139 + }, + "screenPosition": { + "x": 0.14885503, + "y": 0.5845374 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.8286, + "y": 140.61487, + "z": -81.55263 + }, + "screenPosition": { + "x": 0.035195787, + "y": 0.2660404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.85767, + "y": 114.45408, + "z": -81.92517 + }, + "screenPosition": { + "x": -0.21204801, + "y": 0.41913807 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.20416, + "y": 113.00107, + "z": -82.52259 + }, + "screenPosition": { + "x": -0.22333644, + "y": 0.44462913 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.33984, + "y": 138.56325, + "z": -84.09109 + }, + "screenPosition": { + "x": 0.039321866, + "y": 0.37577537 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.91135, + "y": 138.92047, + "z": -84.91904 + }, + "screenPosition": { + "x": 0.058570106, + "y": 0.41919026 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.41565, + "y": 144.16551, + "z": -82.21805 + }, + "screenPosition": { + "x": 0.14713393, + "y": 0.40565297 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.74896, + "y": 140.30867, + "z": -84.854164 + }, + "screenPosition": { + "x": 0.08816161, + "y": 0.44239444 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.30405, + "y": 146.25272, + "z": -80.841354 + }, + "screenPosition": { + "x": 0.18187717, + "y": 0.3920789 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.9757, + "y": 112.51818, + "z": -87.831024 + }, + "screenPosition": { + "x": -0.20650044, + "y": 0.58836997 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.28076, + "y": 110.71795, + "z": -88.45421 + }, + "screenPosition": { + "x": -0.22600338, + "y": 0.62049806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.37988, + "y": 144.0864, + "z": -82.83645 + }, + "screenPosition": { + "x": 0.15162982, + "y": 0.42915645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.7477, + "y": 144.40253, + "z": -83.92215 + }, + "screenPosition": { + "x": 0.17017834, + "y": 0.47964677 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.40982, + "y": 145.78046, + "z": -82.80528 + }, + "screenPosition": { + "x": 0.19097988, + "y": 0.4622405 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.4497, + "y": 99.49379, + "z": -88.57785 + }, + "screenPosition": { + "x": -0.31883472, + "y": 0.6931198 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.42175, + "y": 141.3522, + "z": -88.7315 + }, + "screenPosition": { + "x": 0.16088216, + "y": 0.6366536 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.71948, + "y": 149.8303, + "z": -83.56602 + }, + "screenPosition": { + "x": 0.29362565, + "y": 0.5752438 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.6242, + "y": 146.54968, + "z": -86.06568 + }, + "screenPosition": { + "x": 0.22050339, + "y": 0.5696121 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.00824, + "y": 145.92702, + "z": -85.915344 + }, + "screenPosition": { + "x": 0.20450182, + "y": 0.55110955 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.70148, + "y": 143.28947, + "z": -86.702034 + }, + "screenPosition": { + "x": 0.17849869, + "y": 0.580753 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.775, + "y": 147.10844, + "z": -84.517784 + }, + "screenPosition": { + "x": 0.239658, + "y": 0.55869645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.47275, + "y": 146.99924, + "z": -86.248245 + }, + "screenPosition": { + "x": 0.23290491, + "y": 0.5861397 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.09317, + "y": 145.067, + "z": -79.43945 + }, + "screenPosition": { + "x": 0.13971928, + "y": 0.31111836 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.4895, + "y": 139.3126, + "z": -84.36426 + }, + "screenPosition": { + "x": 0.059597753, + "y": 0.40191966 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.32745, + "y": 103.51098, + "z": -86.95163 + }, + "screenPosition": { + "x": -0.29475603, + "y": 0.6267848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.781, + "y": 109.35014, + "z": -89.30822 + }, + "screenPosition": { + "x": -0.24675387, + "y": 0.63208246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.46585, + "y": 137.89777, + "z": -85.43542 + }, + "screenPosition": { + "x": 0.041934323, + "y": 0.423867 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.86966, + "y": 145.28258, + "z": -85.551125 + }, + "screenPosition": { + "x": 0.18554913, + "y": 0.52302825 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.80508, + "y": 141.40355, + "z": -83.97588 + }, + "screenPosition": { + "x": 0.07854188, + "y": 0.38041896 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.89377, + "y": 141.16812, + "z": -82.681335 + }, + "screenPosition": { + "x": 0.075887695, + "y": 0.3768817 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.0232, + "y": 130.51228, + "z": -85.57754 + }, + "screenPosition": { + "x": -0.056338023, + "y": 0.41636866 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.385, + "y": 144.60168, + "z": -79.72327 + }, + "screenPosition": { + "x": 0.13212, + "y": 0.31295928 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.41116, + "y": 143.54228, + "z": -80.17937 + }, + "screenPosition": { + "x": 0.111610636, + "y": 0.31024358 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.33963, + "y": 136.37593, + "z": -84.922806 + }, + "screenPosition": { + "x": -0.01648672, + "y": 0.3409253 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.4303, + "y": 142.2203, + "z": -89.43053 + }, + "screenPosition": { + "x": 0.18923748, + "y": 0.68420935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.66745, + "y": 141.71922, + "z": -89.247925 + }, + "screenPosition": { + "x": 0.1756802, + "y": 0.66673017 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.09436, + "y": 135.46664, + "z": -86.52289 + }, + "screenPosition": { + "x": 0.0016658123, + "y": 0.42788056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -381.3977, + "y": 129.82802, + "z": -87.20254 + }, + "screenPosition": { + "x": -0.05759844, + "y": 0.46492305 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.1198, + "y": 133.62689, + "z": -88.792755 + }, + "screenPosition": { + "x": -0.011541221, + "y": 0.49701646 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.02487, + "y": 134.31079, + "z": -91.48131 + }, + "screenPosition": { + "x": 0.039028853, + "y": 0.6297724 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.08643, + "y": 135.2082, + "z": -95.743935 + }, + "screenPosition": { + "x": 0.1124255, + "y": 0.8397793 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.64545, + "y": 136.36894, + "z": -90.56101 + }, + "screenPosition": { + "x": 0.073299386, + "y": 0.6262929 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.90952, + "y": 126.27061, + "z": -87.5315 + }, + "screenPosition": { + "x": -0.08865796, + "y": 0.49649417 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.2883, + "y": 138.19795, + "z": -93.4119 + }, + "screenPosition": { + "x": 0.15037094, + "y": 0.7884917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.9018, + "y": 138.3705, + "z": -86.68914 + }, + "screenPosition": { + "x": 0.069085546, + "y": 0.48852798 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.6447, + "y": 137.88791, + "z": -85.81329 + }, + "screenPosition": { + "x": 0.046701025, + "y": 0.44058093 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.02817, + "y": 141.1636, + "z": -82.614975 + }, + "screenPosition": { + "x": 0.08127488, + "y": 0.36065516 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.07834, + "y": 135.62708, + "z": -86.836174 + }, + "screenPosition": { + "x": -0.018713398, + "y": 0.40192118 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.14215, + "y": 133.45045, + "z": -94.780365 + }, + "screenPosition": { + "x": 0.060672384, + "y": 0.7640453 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.31247, + "y": 132.80023, + "z": -95.19089 + }, + "screenPosition": { + "x": 0.052340437, + "y": 0.769059 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.82675, + "y": 131.3693, + "z": -96.03141 + }, + "screenPosition": { + "x": 0.029927049, + "y": 0.7821553 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.03442, + "y": 139.95743, + "z": -82.694115 + }, + "screenPosition": { + "x": 0.052285466, + "y": 0.34542683 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -383.6363, + "y": 139.90776, + "z": -83.36846 + }, + "screenPosition": { + "x": 0.038219392, + "y": 0.32393238 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.54028, + "y": 139.55481, + "z": -83.22513 + }, + "screenPosition": { + "x": 0.027542429, + "y": 0.3124516 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.67636, + "y": 138.27457, + "z": -85.5092 + }, + "screenPosition": { + "x": 0.051935032, + "y": 0.43364322 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.35287, + "y": 139.31105, + "z": -84.427086 + }, + "screenPosition": { + "x": 0.060390215, + "y": 0.40470567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.7255, + "y": 135.3754, + "z": -87.18403 + }, + "screenPosition": { + "x": -0.005111062, + "y": 0.415848 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.56387, + "y": 117.7172, + "z": -83.399315 + }, + "screenPosition": { + "x": -0.17819744, + "y": 0.43848586 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.99817, + "y": 132.40395, + "z": -95.62973 + }, + "screenPosition": { + "x": 0.04888696, + "y": 0.78177595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.84567, + "y": 132.63538, + "z": -96.427444 + }, + "screenPosition": { + "x": 0.06335106, + "y": 0.8233704 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.57684, + "y": 133.3324, + "z": -90.16084 + }, + "screenPosition": { + "x": 4.2730757E-5, + "y": 0.55261016 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.8863, + "y": 134.59523, + "z": -90.42824 + }, + "screenPosition": { + "x": 0.030974327, + "y": 0.58869195 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.54117, + "y": 135.48584, + "z": -90.3676 + }, + "screenPosition": { + "x": 0.050170485, + "y": 0.6023715 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.96722, + "y": 125.87513, + "z": -88.473564 + }, + "screenPosition": { + "x": -0.089377694, + "y": 0.5246349 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.50452, + "y": 137.68512, + "z": -88.73568 + }, + "screenPosition": { + "x": 0.07871847, + "y": 0.5692458 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.29315, + "y": 138.71584, + "z": -93.02153 + }, + "screenPosition": { + "x": 0.1573653, + "y": 0.77972645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.7278, + "y": 139.01219, + "z": -86.28667 + }, + "screenPosition": { + "x": 0.07743883, + "y": 0.48304477 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.45563, + "y": 138.49406, + "z": -86.797844 + }, + "screenPosition": { + "x": 0.07305127, + "y": 0.49586722 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.54028, + "y": 143.45906, + "z": -84.81061 + }, + "screenPosition": { + "x": 0.13246903, + "y": 0.46098247 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.56372, + "y": 140.9153, + "z": -85.83661 + }, + "screenPosition": { + "x": 0.114260286, + "y": 0.4979243 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.50708, + "y": 135.09628, + "z": -90.674965 + }, + "screenPosition": { + "x": 0.04601034, + "y": 0.6083068 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.51132, + "y": 134.4582, + "z": -95.212006 + }, + "screenPosition": { + "x": 0.08875722, + "y": 0.80210567 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.29584, + "y": 132.77826, + "z": -89.89511 + }, + "screenPosition": { + "x": -0.041605774, + "y": 0.4969889 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.7906, + "y": 141.1313, + "z": -87.377106 + }, + "screenPosition": { + "x": 0.13869989, + "y": 0.5714439 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.1037, + "y": 117.01817, + "z": -85.87472 + }, + "screenPosition": { + "x": -0.17702392, + "y": 0.51026636 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.81564, + "y": 127.661575, + "z": -85.65387 + }, + "screenPosition": { + "x": -0.08179274, + "y": 0.4365738 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.81918, + "y": 130.39473, + "z": -94.50936 + }, + "screenPosition": { + "x": -0.009982578, + "y": 0.6939453 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.60587, + "y": 129.72156, + "z": -95.56137 + }, + "screenPosition": { + "x": -0.012009867, + "y": 0.72933924 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.0169, + "y": 130.36812, + "z": -95.342476 + }, + "screenPosition": { + "x": -1.8102271E-4, + "y": 0.7311961 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.8789, + "y": 130.88988, + "z": -95.01366 + }, + "screenPosition": { + "x": 0.0063861897, + "y": 0.727178 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.65686, + "y": 128.32349, + "z": -103.780396 + }, + "screenPosition": { + "x": 0.03750889, + "y": 1.0476203 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.5158, + "y": 128.5237, + "z": -103.69396 + }, + "screenPosition": { + "x": 0.040481713, + "y": 1.0328397 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.28723, + "y": 128.08566, + "z": -102.34556 + }, + "screenPosition": { + "x": 0.03753674, + "y": 1.0048984 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.68295, + "y": 127.57905, + "z": -102.09556 + }, + "screenPosition": { + "x": 0.022905733, + "y": 0.9845313 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.07358, + "y": 126.54331, + "z": -102.24446 + }, + "screenPosition": { + "x": 0.0014446565, + "y": 0.97247356 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.7562, + "y": 115.87976, + "z": -88.21441 + }, + "screenPosition": { + "x": -0.17535603, + "y": 0.5775577 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.38895, + "y": 113.10639, + "z": -88.45726 + }, + "screenPosition": { + "x": -0.20213315, + "y": 0.60364276 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.4017, + "y": 124.42744, + "z": -105.46222 + }, + "screenPosition": { + "x": -0.027934212, + "y": 1.0272899 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.96643, + "y": 125.04528, + "z": -105.19551 + }, + "screenPosition": { + "x": -0.018267456, + "y": 1.0503029 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.74313, + "y": 117.76358, + "z": -93.41553 + }, + "screenPosition": { + "x": -0.14203937, + "y": 0.70532686 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.21564, + "y": 122.30089, + "z": -95.18841 + }, + "screenPosition": { + "x": -0.09790025, + "y": 0.72637314 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.9801, + "y": 128.42412, + "z": -96.79132 + }, + "screenPosition": { + "x": -0.0495607, + "y": 0.7194178 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.9582, + "y": 132.89221, + "z": -92.12348 + }, + "screenPosition": { + "x": 0.014357628, + "y": 0.6338231 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -375.28445, + "y": 130.06778, + "z": -94.51962 + }, + "screenPosition": { + "x": -0.044811275, + "y": 0.64586705 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.07153, + "y": 130.6292, + "z": -93.74369 + }, + "screenPosition": { + "x": -0.038891762, + "y": 0.62249446 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.53137, + "y": 125.90096, + "z": -91.97827 + }, + "screenPosition": { + "x": -0.07856626, + "y": 0.61980444 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -376.6745, + "y": 124.49317, + "z": -91.76552 + }, + "screenPosition": { + "x": -0.086805165, + "y": 0.6183321 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -378.22076, + "y": 121.0735, + "z": -90.02652 + }, + "screenPosition": { + "x": -0.12795323, + "y": 0.597413 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -380.01447, + "y": 119.02256, + "z": -88.10018 + }, + "screenPosition": { + "x": -0.1457561, + "y": 0.5532851 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.50842, + "y": 124.296425, + "z": -103.7324 + }, + "screenPosition": { + "x": -0.030682033, + "y": 0.9994032 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.36197, + "y": 125.47187, + "z": -103.368614 + }, + "screenPosition": { + "x": -0.008956129, + "y": 1.004649 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.77817, + "y": 126.654785, + "z": -102.74538 + }, + "screenPosition": { + "x": 0.009636712, + "y": 0.998321 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.47565, + "y": 127.84003, + "z": -101.99348 + }, + "screenPosition": { + "x": 0.027102722, + "y": 0.98537964 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.78638, + "y": 121.8817, + "z": -88.46847 + }, + "screenPosition": { + "x": -0.12537418, + "y": 0.54989177 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -389.23184, + "y": 105.843346, + "z": -78.07594 + }, + "screenPosition": { + "x": -0.30124986, + "y": 0.36919135 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -389.82523, + "y": 90.7665, + "z": -76.54375 + }, + "screenPosition": { + "x": -0.44008854, + "y": 0.42640463 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.08975, + "y": 124.72145, + "z": -102.700356 + }, + "screenPosition": { + "x": -0.034281682, + "y": 0.96065116 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.33264, + "y": 119.32948, + "z": -82.69191 + }, + "screenPosition": { + "x": -0.16334648, + "y": 0.40774697 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.34576, + "y": 119.975685, + "z": -82.7092 + }, + "screenPosition": { + "x": -0.15993138, + "y": 0.40535107 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.5891, + "y": 124.78033, + "z": -101.077354 + }, + "screenPosition": { + "x": -0.05267259, + "y": 0.88713723 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.944, + "y": 126.109604, + "z": -99.92088 + }, + "screenPosition": { + "x": -0.038517237, + "y": 0.8607735 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.93762, + "y": 127.28185, + "z": -99.49629 + }, + "screenPosition": { + "x": -0.017285423, + "y": 0.86269754 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.54483, + "y": 127.787476, + "z": -99.74571 + }, + "screenPosition": { + "x": -0.001952066, + "y": 0.8819659 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.9705, + "y": 120.72435, + "z": -88.225784 + }, + "screenPosition": { + "x": -0.13207486, + "y": 0.5473447 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.74265, + "y": 118.27705, + "z": -88.34199 + }, + "screenPosition": { + "x": -0.15559176, + "y": 0.5674056 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -379.56937, + "y": 117.08994, + "z": -88.46235 + }, + "screenPosition": { + "x": -0.16411617, + "y": 0.57686156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -382.0243, + "y": 114.696465, + "z": -85.84551 + }, + "screenPosition": { + "x": -0.19391261, + "y": 0.5215926 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.06332, + "y": 123.675735, + "z": -103.0449 + }, + "screenPosition": { + "x": -0.05222702, + "y": 0.95519996 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -384.40726, + "y": 106.25106, + "z": -84.443825 + }, + "screenPosition": { + "x": -0.283512, + "y": 0.5167404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.4018, + "y": 127.257454, + "z": -100.20753 + }, + "screenPosition": { + "x": -0.00793933, + "y": 0.89300525 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.3764, + "y": 126.74484, + "z": -100.15202 + }, + "screenPosition": { + "x": -0.019804556, + "y": 0.88061696 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.55948, + "y": 125.971115, + "z": -100.198166 + }, + "screenPosition": { + "x": -0.03752602, + "y": 0.8699205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -385.1972, + "y": 112.65819, + "z": -82.51342 + }, + "screenPosition": { + "x": -0.22507112, + "y": 0.4458486 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -388.05325, + "y": 121.741425, + "z": -80.032234 + }, + "screenPosition": { + "x": -0.15210217, + "y": 0.3213042 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -389.83292, + "y": 102.616486, + "z": -78.73891 + }, + "screenPosition": { + "x": -0.33932725, + "y": 0.38740125 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.37222, + "y": 114.98307, + "z": -98.149796 + }, + "screenPosition": { + "x": -0.15659808, + "y": 0.82999235 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.45035, + "y": 119.37753, + "z": -98.88906 + }, + "screenPosition": { + "x": -0.114856794, + "y": 0.84727633 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -390.15762, + "y": 102.398964, + "z": -78.39749 + }, + "screenPosition": { + "x": -0.34326628, + "y": 0.38006756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.62375, + "y": 110.494255, + "z": -74.83803 + }, + "screenPosition": { + "x": -0.26911825, + "y": 0.25153792 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.16476, + "y": 114.957306, + "z": -76.53754 + }, + "screenPosition": { + "x": -0.22377601, + "y": 0.26938528 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.38504, + "y": 126.413506, + "z": -98.59172 + }, + "screenPosition": { + "x": -0.048612095, + "y": 0.8063771 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.72952, + "y": 123.10715, + "z": -76.75451 + }, + "screenPosition": { + "x": -0.16188915, + "y": 0.20665756 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -391.10858, + "y": 127.6921, + "z": -78.62494 + }, + "screenPosition": { + "x": -0.1198221, + "y": 0.24208876 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -392.79944, + "y": 106.75676, + "z": -74.48151 + }, + "screenPosition": { + "x": -0.29544318, + "y": 0.2635102 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.6119, + "y": 125.870834, + "z": -99.441795 + }, + "screenPosition": { + "x": -0.06731392, + "y": 0.8026716 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.02768, + "y": 129.08717, + "z": -95.395355 + }, + "screenPosition": { + "x": -0.028444953, + "y": 0.7103394 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.9298, + "y": 117.51993, + "z": -96.27263 + }, + "screenPosition": { + "x": -0.13756582, + "y": 0.7860293 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.7556, + "y": 114.57127, + "z": -95.290634 + }, + "screenPosition": { + "x": -0.16315494, + "y": 0.7741873 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.95053, + "y": 113.92578, + "z": -96.49025 + }, + "screenPosition": { + "x": -0.19024023, + "y": 0.8009739 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.1977, + "y": 108.73812, + "z": -96.49265 + }, + "screenPosition": { + "x": -0.21431845, + "y": 0.8486063 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.994, + "y": 110.06814, + "z": -97.79289 + }, + "screenPosition": { + "x": -0.2028999, + "y": 0.8800822 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.45187, + "y": 116.26949, + "z": -100.169 + }, + "screenPosition": { + "x": -0.15162762, + "y": 0.8835112 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.1211, + "y": 117.30813, + "z": -100.14626 + }, + "screenPosition": { + "x": -0.123907626, + "y": 0.88718146 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.98483, + "y": 127.562195, + "z": -98.813675 + }, + "screenPosition": { + "x": -0.01842334, + "y": 0.835276 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.9009, + "y": 124.80121, + "z": -101.79851 + }, + "screenPosition": { + "x": -0.06708956, + "y": 0.87866104 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.092, + "y": 128.22255, + "z": -98.270355 + }, + "screenPosition": { + "x": -0.011986802, + "y": 0.82499737 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.45926, + "y": 129.11852, + "z": -98.33545 + }, + "screenPosition": { + "x": 0.010089956, + "y": 0.8426765 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.6877, + "y": 128.31693, + "z": -99.2844 + }, + "screenPosition": { + "x": 0.0040701157, + "y": 0.87087417 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.0429, + "y": 127.415436, + "z": -99.348656 + }, + "screenPosition": { + "x": -0.016519591, + "y": 0.8590139 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.22424, + "y": 128.86714, + "z": -98.178734 + }, + "screenPosition": { + "x": 0.00248449, + "y": 0.8309909 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.87994, + "y": 129.65062, + "z": -97.74681 + }, + "screenPosition": { + "x": 0.013216248, + "y": 0.82790804 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.38022, + "y": 135.49805, + "z": -94.49176 + }, + "screenPosition": { + "x": 0.10324327, + "y": 0.78818434 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.28693, + "y": 136.92578, + "z": -93.46369 + }, + "screenPosition": { + "x": 0.122165695, + "y": 0.7681014 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.3284, + "y": 137.83365, + "z": -92.764496 + }, + "screenPosition": { + "x": 0.13445474, + "y": 0.7518067 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.54175, + "y": 138.61266, + "z": -92.084335 + }, + "screenPosition": { + "x": 0.14211297, + "y": 0.7375021 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.89297, + "y": 139.392, + "z": -91.34171 + }, + "screenPosition": { + "x": 0.15013897, + "y": 0.71834606 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.01385, + "y": 135.5318, + "z": -93.27818 + }, + "screenPosition": { + "x": 0.08822695, + "y": 0.7346027 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.81265, + "y": 136.19118, + "z": -92.42355 + }, + "screenPosition": { + "x": 0.09213829, + "y": 0.7081788 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.29996, + "y": 136.22246, + "z": -91.277855 + }, + "screenPosition": { + "x": 0.079130344, + "y": 0.6558854 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.36908, + "y": 135.84705, + "z": -91.07687 + }, + "screenPosition": { + "x": 0.0682394, + "y": 0.6398457 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.85208, + "y": 134.95796, + "z": -91.07418 + }, + "screenPosition": { + "x": 0.047830448, + "y": 0.6239385 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.5069, + "y": 138.83447, + "z": -88.3243 + }, + "screenPosition": { + "x": 0.0992542, + "y": 0.5718629 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.094, + "y": 137.7973, + "z": -89.288 + }, + "screenPosition": { + "x": 0.08826004, + "y": 0.5962459 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.3358, + "y": 137.0124, + "z": -90.218414 + }, + "screenPosition": { + "x": 0.082498446, + "y": 0.62377656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.0534, + "y": 131.80777, + "z": -94.24692 + }, + "screenPosition": { + "x": 0.018100647, + "y": 0.70835376 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.28394, + "y": 131.1285, + "z": -95.554436 + }, + "screenPosition": { + "x": 0.018460799, + "y": 0.7561859 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.5536, + "y": 130.72499, + "z": -96.18641 + }, + "screenPosition": { + "x": 0.018638074, + "y": 0.77560514 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.85873, + "y": 130.71483, + "z": -96.50754 + }, + "screenPosition": { + "x": 0.022518605, + "y": 0.7898336 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.41074, + "y": 129.6736, + "z": -97.03892 + }, + "screenPosition": { + "x": 0.0048455256, + "y": 0.7962084 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.7901, + "y": 128.75963, + "z": -97.552826 + }, + "screenPosition": { + "x": -0.008005819, + "y": 0.8010323 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.09955, + "y": 127.579796, + "z": -98.29754 + }, + "screenPosition": { + "x": -0.024998698, + "y": 0.81294656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.58347, + "y": 126.268456, + "z": -99.062096 + }, + "screenPosition": { + "x": -0.045047123, + "y": 0.82382166 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.77948, + "y": 125.594475, + "z": -99.93003 + }, + "screenPosition": { + "x": -0.04934859, + "y": 0.8508645 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.6258, + "y": 125.17832, + "z": -100.76248 + }, + "screenPosition": { + "x": -0.04694701, + "y": 0.8791051 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.8273, + "y": 130.01407, + "z": -98.40052 + }, + "screenPosition": { + "x": 0.029680612, + "y": 0.8641159 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.4369, + "y": 130.5189, + "z": -98.64947 + }, + "screenPosition": { + "x": 0.04416586, + "y": 0.884659 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.06384, + "y": 125.91386, + "z": -101.818275 + }, + "screenPosition": { + "x": -0.01771165, + "y": 0.9411013 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.9141, + "y": 126.55687, + "z": -101.855064 + }, + "screenPosition": { + "x": -0.0033280468, + "y": 0.95538706 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.28198, + "y": 130.10771, + "z": -99.47874 + }, + "screenPosition": { + "x": 0.046766065, + "y": 0.9122571 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.6024, + "y": 135.46243, + "z": -95.77178 + }, + "screenPosition": { + "x": 0.11872403, + "y": 0.84524745 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.8485, + "y": 134.95758, + "z": -95.58796 + }, + "screenPosition": { + "x": 0.10473564, + "y": 0.82828116 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.51746, + "y": 128.97263, + "z": -98.869736 + }, + "screenPosition": { + "x": 0.012300387, + "y": 0.8660993 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.61298, + "y": 127.52474, + "z": -99.911896 + }, + "screenPosition": { + "x": -0.0052255983, + "y": 0.8838517 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.5255, + "y": 126.84723, + "z": -100.91037 + }, + "screenPosition": { + "x": -0.009392109, + "y": 0.9190359 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.6141, + "y": 126.56817, + "z": -101.530754 + }, + "screenPosition": { + "x": -0.007756697, + "y": 0.94189626 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.97736, + "y": 127.46732, + "z": -101.59528 + }, + "screenPosition": { + "x": 0.0132234115, + "y": 0.9613832 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.09473, + "y": 128.23026, + "z": -101.872856 + }, + "screenPosition": { + "x": 0.033859313, + "y": 0.98797596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.35895, + "y": 129.94766, + "z": -100.46636 + }, + "screenPosition": { + "x": 0.054471735, + "y": 0.9561443 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.2024, + "y": 133.76173, + "z": -97.22699 + }, + "screenPosition": { + "x": 0.0994986, + "y": 0.87883717 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.44745, + "y": 133.89565, + "z": -97.01606 + }, + "screenPosition": { + "x": 0.099453196, + "y": 0.8724875 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.52408, + "y": 138.5658, + "z": -93.93218 + }, + "screenPosition": { + "x": 0.16467486, + "y": 0.81982857 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.66177, + "y": 137.9314, + "z": -93.89437 + }, + "screenPosition": { + "x": 0.15055019, + "y": 0.8052909 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.45074, + "y": 137.03302, + "z": -94.21177 + }, + "screenPosition": { + "x": 0.13438985, + "y": 0.8032246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.4509, + "y": 136.39616, + "z": -94.23787 + }, + "screenPosition": { + "x": 0.12022358, + "y": 0.7931173 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.62396, + "y": 135.63121, + "z": -94.281975 + }, + "screenPosition": { + "x": 0.10322503, + "y": 0.7817464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.61844, + "y": 129.4141, + "z": -97.13972 + }, + "screenPosition": { + "x": 7.032753E-4, + "y": 0.79542595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.24036, + "y": 128.1088, + "z": -97.8375 + }, + "screenPosition": { + "x": -0.018671066, + "y": 0.8015023 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.48572, + "y": 128.77031, + "z": -97.23096 + }, + "screenPosition": { + "x": -0.012400402, + "y": 0.7874735 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.19293, + "y": 134.53325, + "z": -92.5923 + }, + "screenPosition": { + "x": 0.05711391, + "y": 0.68523514 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.54105, + "y": 135.20053, + "z": -91.48389 + }, + "screenPosition": { + "x": 0.058952384, + "y": 0.6462738 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.43896, + "y": 136.74245, + "z": -90.825386 + }, + "screenPosition": { + "x": 0.0841674, + "y": 0.64619917 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.85388, + "y": 137.49971, + "z": -90.97295 + }, + "screenPosition": { + "x": 0.103022456, + "y": 0.66681916 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.5454, + "y": 138.26003, + "z": -90.99344 + }, + "screenPosition": { + "x": 0.12032954, + "y": 0.6817588 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.96127, + "y": 139.01682, + "z": -91.14093 + }, + "screenPosition": { + "x": 0.13917321, + "y": 0.7023669 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.52484, + "y": 134.74518, + "z": -94.08844 + }, + "screenPosition": { + "x": 0.08089796, + "y": 0.75667757 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.71985, + "y": 139.63693, + "z": -91.687416 + }, + "screenPosition": { + "x": 0.16030735, + "y": 0.7379492 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.67996, + "y": 139.36682, + "z": -92.35906 + }, + "screenPosition": { + "x": 0.16343491, + "y": 0.7620288 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.0828, + "y": 131.72282, + "z": -97.004456 + }, + "screenPosition": { + "x": 0.050231636, + "y": 0.8325952 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.3716, + "y": 132.13367, + "z": -96.11501 + }, + "screenPosition": { + "x": 0.048973236, + "y": 0.7987108 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.54175, + "y": 138.61266, + "z": -92.084335 + }, + "screenPosition": { + "x": 0.14211297, + "y": 0.7375021 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.96286, + "y": 139.76877, + "z": -91.47897 + }, + "screenPosition": { + "x": 0.1603321, + "y": 0.7314868 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.23798, + "y": 139.88971, + "z": -91.71538 + }, + "screenPosition": { + "x": 0.16626017, + "y": 0.74399024 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.5224, + "y": 136.65678, + "z": -94.01026 + }, + "screenPosition": { + "x": 0.12355895, + "y": 0.7869476 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.001, + "y": 137.15732, + "z": -94.32153 + }, + "screenPosition": { + "x": 0.13879482, + "y": 0.81001616 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.9386, + "y": 141.91653, + "z": -91.684814 + }, + "screenPosition": { + "x": 0.21110404, + "y": 0.7803687 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.22403, + "y": 135.8481, + "z": -95.653404 + }, + "screenPosition": { + "x": 0.12553407, + "y": 0.8476509 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.15503, + "y": 140.10252, + "z": -93.39803 + }, + "screenPosition": { + "x": 0.19268018, + "y": 0.8232312 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.42615, + "y": 139.58852, + "z": -93.66099 + }, + "screenPosition": { + "x": 0.18449491, + "y": 0.8256614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.96576, + "y": 133.51076, + "z": -97.070694 + }, + "screenPosition": { + "x": 0.091807015, + "y": 0.8673404 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.8085, + "y": 133.40514, + "z": -96.318436 + }, + "screenPosition": { + "x": 0.07922236, + "y": 0.83263874 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.4413, + "y": 139.75168, + "z": -92.17829 + }, + "screenPosition": { + "x": 0.1694073, + "y": 0.76163405 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.03534, + "y": 135.75372, + "z": -94.45572 + }, + "screenPosition": { + "x": 0.108798854, + "y": 0.7907685 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.85715, + "y": 136.63617, + "z": -94.77708 + }, + "screenPosition": { + "x": 0.13293809, + "y": 0.82091075 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.41177, + "y": 141.26686, + "z": -92.40947 + }, + "screenPosition": { + "x": 0.20575657, + "y": 0.8011042 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -358.1945, + "y": 140.49043, + "z": -93.089485 + }, + "screenPosition": { + "x": 0.19795828, + "y": 0.8152843 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.79846, + "y": 139.32268, + "z": -94.143456 + }, + "screenPosition": { + "x": 0.18487354, + "y": 0.84205675 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.39975, + "y": 133.62025, + "z": -97.695175 + }, + "screenPosition": { + "x": 0.102299415, + "y": 0.8972889 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.19153, + "y": 132.71553, + "z": -98.01607 + }, + "screenPosition": { + "x": 0.08535722, + "y": 0.8965583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.67914, + "y": 136.88145, + "z": -95.12472 + }, + "screenPosition": { + "x": 0.14197621, + "y": 0.8428336 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.98007, + "y": 130.11806, + "z": -99.15602 + }, + "screenPosition": { + "x": 0.042668283, + "y": 0.89832467 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.13235, + "y": 129.05273, + "z": -100.337006 + }, + "screenPosition": { + "x": 0.032761823, + "y": 0.9338088 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -359.52655, + "y": 129.29185, + "z": -100.882286 + }, + "screenPosition": { + "x": 0.046135582, + "y": 0.9608127 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.88623, + "y": 129.6624, + "z": -101.34465 + }, + "screenPosition": { + "x": 0.059248812, + "y": 0.9905318 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.75223, + "y": 138.41553, + "z": -94.84425 + }, + "screenPosition": { + "x": 0.17323785, + "y": 0.85746884 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -357.96387, + "y": 138.67717, + "z": -94.55264 + }, + "screenPosition": { + "x": 0.17563914, + "y": 0.848583 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.3805, + "y": 134.15587, + "z": -96.85122 + }, + "screenPosition": { + "x": 0.10283136, + "y": 0.8705269 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.2843, + "y": 138.31566, + "z": -93.77668 + }, + "screenPosition": { + "x": 0.15698272, + "y": 0.80841994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.31686, + "y": 137.55032, + "z": -93.884445 + }, + "screenPosition": { + "x": 0.14203699, + "y": 0.7975608 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.32373, + "y": 131.33331, + "z": -97.187706 + }, + "screenPosition": { + "x": 0.044374395, + "y": 0.832814 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.86124, + "y": 129.8832, + "z": -98.48331 + }, + "screenPosition": { + "x": 0.028022464, + "y": 0.8650801 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.6693, + "y": 129.07611, + "z": -99.62604 + }, + "screenPosition": { + "x": 0.0242414, + "y": 0.9021464 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.3928, + "y": 130.76625, + "z": -98.93515 + }, + "screenPosition": { + "x": 0.053345628, + "y": 0.90211415 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.47464, + "y": 132.0788, + "z": -97.91441 + }, + "screenPosition": { + "x": 0.0697883, + "y": 0.8802327 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.19254, + "y": 132.33209, + "z": -93.79114 + }, + "screenPosition": { + "x": 0.023014406, + "y": 0.69877666 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.02267, + "y": 131.29887, + "z": -94.19104 + }, + "screenPosition": { + "x": 0.0049368273, + "y": 0.6977829 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.9924, + "y": 130.26637, + "z": -94.52741 + }, + "screenPosition": { + "x": -0.013762625, + "y": 0.6937341 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.65137, + "y": 129.35901, + "z": -94.91022 + }, + "screenPosition": { + "x": -0.028466776, + "y": 0.69341475 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.9255, + "y": 129.09848, + "z": -95.85929 + }, + "screenPosition": { + "x": -0.041140255, + "y": 0.6908622 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.9516, + "y": 129.11708, + "z": -95.83358 + }, + "screenPosition": { + "x": -0.04620791, + "y": 0.68895894 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.9868, + "y": 123.512695, + "z": -94.459595 + }, + "screenPosition": { + "x": -0.09045549, + "y": 0.7002656 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.49982, + "y": 121.040146, + "z": -93.81911 + }, + "screenPosition": { + "x": -0.110516906, + "y": 0.69451857 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.67877, + "y": 116.79703, + "z": -93.43527 + }, + "screenPosition": { + "x": -0.15254241, + "y": 0.71381104 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.6142, + "y": 105.360214, + "z": -92.8284 + }, + "screenPosition": { + "x": -0.25889227, + "y": 0.7743299 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.9083, + "y": 113.052216, + "z": -93.0235 + }, + "screenPosition": { + "x": -0.19117947, + "y": 0.72994596 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.28207, + "y": 114.40784, + "z": -93.7264 + }, + "screenPosition": { + "x": -0.17684357, + "y": 0.7404452 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.15088, + "y": 113.1217, + "z": -95.22814 + }, + "screenPosition": { + "x": -0.18530163, + "y": 0.76386493 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.56366, + "y": 121.97032, + "z": -93.798164 + }, + "screenPosition": { + "x": -0.105599254, + "y": 0.6914156 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.9584, + "y": 119.24828, + "z": -93.26647 + }, + "screenPosition": { + "x": -0.12771855, + "y": 0.6904946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.6142, + "y": 105.360214, + "z": -92.8284 + }, + "screenPosition": { + "x": -0.25889227, + "y": 0.7743299 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.30582, + "y": 121.56198, + "z": -94.041695 + }, + "screenPosition": { + "x": -0.1042014, + "y": 0.6962239 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.00504, + "y": 118.474335, + "z": -96.24122 + }, + "screenPosition": { + "x": -0.12796494, + "y": 0.77788883 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.66504, + "y": 115.743515, + "z": -94.41896 + }, + "screenPosition": { + "x": -0.15703312, + "y": 0.745086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.98914, + "y": 116.13717, + "z": -93.087494 + }, + "screenPosition": { + "x": -0.15682778, + "y": 0.7060461 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.8318, + "y": 117.331726, + "z": -93.30462 + }, + "screenPosition": { + "x": -0.14456111, + "y": 0.7034559 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.03027, + "y": 124.11914, + "z": -94.44404 + }, + "screenPosition": { + "x": -0.08717789, + "y": 0.6982086 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.17212, + "y": 128.4103, + "z": -95.93203 + }, + "screenPosition": { + "x": -0.055027153, + "y": 0.69105095 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.94464, + "y": 123.222534, + "z": -95.50849 + }, + "screenPosition": { + "x": -0.09204341, + "y": 0.73286533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.7934, + "y": 129.7694, + "z": -94.08734 + }, + "screenPosition": { + "x": -0.030673739, + "y": 0.66490847 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.88852, + "y": 117.25081, + "z": -94.26261 + }, + "screenPosition": { + "x": -0.14951907, + "y": 0.7368608 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.6018, + "y": 128.86758, + "z": -96.178406 + }, + "screenPosition": { + "x": -0.05237372, + "y": 0.6978533 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.06094, + "y": 131.57516, + "z": -93.5155 + }, + "screenPosition": { + "x": 0.0037628834, + "y": 0.6709481 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.7255, + "y": 126.66513, + "z": -98.344 + }, + "screenPosition": { + "x": -0.06347084, + "y": 0.7677587 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.12613, + "y": 129.86046, + "z": -95.22253 + }, + "screenPosition": { + "x": -0.014191268, + "y": 0.71782935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.1465, + "y": 128.91185, + "z": -96.82672 + }, + "screenPosition": { + "x": -0.015051677, + "y": 0.7727572 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.57104, + "y": 125.2792, + "z": -101.137886 + }, + "screenPosition": { + "x": -0.064776905, + "y": 0.8576515 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.12036, + "y": 125.67101, + "z": -100.59636 + }, + "screenPosition": { + "x": -0.06288115, + "y": 0.8404292 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.1064, + "y": 126.40898, + "z": -98.720825 + }, + "screenPosition": { + "x": -0.046887178, + "y": 0.81188005 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.74188, + "y": 127.54093, + "z": -98.01196 + }, + "screenPosition": { + "x": -0.05383387, + "y": 0.758238 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.77554, + "y": 122.73174, + "z": -96.67728 + }, + "screenPosition": { + "x": -0.09293755, + "y": 0.76777935 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.10437, + "y": 119.734535, + "z": -96.19974 + }, + "screenPosition": { + "x": -0.11516078, + "y": 0.7669869 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.35333, + "y": 114.325836, + "z": -97.11819 + }, + "screenPosition": { + "x": -0.16768469, + "y": 0.80625385 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.60303, + "y": 115.49835, + "z": -98.958595 + }, + "screenPosition": { + "x": -0.16222921, + "y": 0.85549 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.03625, + "y": 119.80344, + "z": -99.331505 + }, + "screenPosition": { + "x": -0.11131028, + "y": 0.85860085 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.4775, + "y": 122.03966, + "z": -97.96803 + }, + "screenPosition": { + "x": -0.0952773, + "y": 0.80729127 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.7809, + "y": 121.40163, + "z": -96.60869 + }, + "screenPosition": { + "x": -0.100333504, + "y": 0.7689439 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.72076, + "y": 118.77361, + "z": -95.52563 + }, + "screenPosition": { + "x": -0.12828617, + "y": 0.75758165 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.69522, + "y": 115.33923, + "z": -95.38869 + }, + "screenPosition": { + "x": -0.15895903, + "y": 0.7750665 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.6688, + "y": 113.44463, + "z": -95.73504 + }, + "screenPosition": { + "x": -0.1874831, + "y": 0.7789806 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.56335, + "y": 107.62061, + "z": -95.04332 + }, + "screenPosition": { + "x": -0.22750561, + "y": 0.8153881 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.3476, + "y": 106.21521, + "z": -96.17514 + }, + "screenPosition": { + "x": -0.2405874, + "y": 0.8598019 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.56952, + "y": 107.0879, + "z": -97.01646 + }, + "screenPosition": { + "x": -0.23172513, + "y": 0.87859946 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.18045, + "y": 109.03614, + "z": -98.54421 + }, + "screenPosition": { + "x": -0.20360775, + "y": 0.90047437 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.75897, + "y": 128.79881, + "z": -100.244606 + }, + "screenPosition": { + "x": 0.025927914, + "y": 0.9248978 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.34598, + "y": 123.77912, + "z": -103.74225 + }, + "screenPosition": { + "x": -0.0405537, + "y": 0.987692 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.29044, + "y": 123.49494, + "z": -104.431496 + }, + "screenPosition": { + "x": -0.03776018, + "y": 1.0128119 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -360.81323, + "y": 123.84332, + "z": -105.71436 + }, + "screenPosition": { + "x": -0.037758507, + "y": 1.036962 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.87558, + "y": 126.15923, + "z": -102.17049 + }, + "screenPosition": { + "x": -0.0073625934, + "y": 0.9608312 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.88904, + "y": 122.65286, + "z": -104.767715 + }, + "screenPosition": { + "x": -0.07506709, + "y": 0.97080994 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.7462, + "y": 123.26426, + "z": -103.92271 + }, + "screenPosition": { + "x": -0.0675063, + "y": 0.94585574 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.92676, + "y": 124.20472, + "z": -102.710014 + }, + "screenPosition": { + "x": -0.04521607, + "y": 0.9507391 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -362.4567, + "y": 124.44531, + "z": -103.192955 + }, + "screenPosition": { + "x": -0.033089355, + "y": 0.9759679 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.5714, + "y": 123.499794, + "z": -104.30109 + }, + "screenPosition": { + "x": -0.03955066, + "y": 1.0074469 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -361.69772, + "y": 122.58787, + "z": -106.25631 + }, + "screenPosition": { + "x": -0.06000447, + "y": 1.0390879 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.8556, + "y": 118.678604, + "z": -103.95039 + }, + "screenPosition": { + "x": -0.12628204, + "y": 0.9741944 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.1807, + "y": 118.460815, + "z": -103.60855 + }, + "screenPosition": { + "x": -0.12416932, + "y": 0.96320975 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.35132, + "y": 117.67663, + "z": -102.37767 + }, + "screenPosition": { + "x": -0.13016143, + "y": 0.9336563 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.13992, + "y": 124.25839, + "z": -102.54873 + }, + "screenPosition": { + "x": -0.06707648, + "y": 0.9005873 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.19772, + "y": 123.58635, + "z": -103.477554 + }, + "screenPosition": { + "x": -0.06330676, + "y": 0.93348426 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.25003, + "y": 122.910355, + "z": -104.411835 + }, + "screenPosition": { + "x": -0.069893494, + "y": 0.9610181 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -364.3935, + "y": 122.299416, + "z": -105.25622 + }, + "screenPosition": { + "x": -0.08198235, + "y": 0.98574275 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -363.79407, + "y": 125.263626, + "z": -101.97619 + }, + "screenPosition": { + "x": -0.030461488, + "y": 0.93657595 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.0163, + "y": 124.88644, + "z": -101.70745 + }, + "screenPosition": { + "x": -0.04321359, + "y": 0.91887265 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.99286, + "y": 124.372536, + "z": -101.65202 + }, + "screenPosition": { + "x": -0.054067556, + "y": 0.9048989 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.77075, + "y": 124.70836, + "z": -101.926834 + }, + "screenPosition": { + "x": -0.06066195, + "y": 0.8837801 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.22656, + "y": 111.987656, + "z": -100.70709 + }, + "screenPosition": { + "x": -0.17681801, + "y": 0.9471291 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.82672, + "y": 116.68827, + "z": -100.826324 + }, + "screenPosition": { + "x": -0.14587036, + "y": 0.8987282 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.86096, + "y": 119.31082, + "z": -100.50655 + }, + "screenPosition": { + "x": -0.11220193, + "y": 0.8936968 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.63132, + "y": 124.6089, + "z": -102.06429 + }, + "screenPosition": { + "x": -0.07762552, + "y": 0.88392246 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.37524, + "y": 123.71296, + "z": -103.30257 + }, + "screenPosition": { + "x": -0.07235488, + "y": 0.92649454 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.52155, + "y": 123.104034, + "z": -104.14416 + }, + "screenPosition": { + "x": -0.08473415, + "y": 0.95018554 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.67126, + "y": 118.802086, + "z": -104.14422 + }, + "screenPosition": { + "x": -0.116809905, + "y": 0.975538 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -365.45654, + "y": 112.822655, + "z": -102.545074 + }, + "screenPosition": { + "x": -0.16369669, + "y": 0.9919079 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.51566, + "y": 109.70057, + "z": -101.27221 + }, + "screenPosition": { + "x": -0.1953244, + "y": 0.97777534 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.3983, + "y": 109.090195, + "z": -100.342896 + }, + "screenPosition": { + "x": -0.20362625, + "y": 0.95638293 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.364, + "y": 108.440025, + "z": -98.31998 + }, + "screenPosition": { + "x": -0.20711468, + "y": 0.89554614 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.63235, + "y": 115.47871, + "z": -98.92776 + }, + "screenPosition": { + "x": -0.16999987, + "y": 0.8581635 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -368.32843, + "y": 117.08978, + "z": -99.924484 + }, + "screenPosition": { + "x": -0.13313545, + "y": 0.8909352 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.46735, + "y": 117.59891, + "z": -102.25568 + }, + "screenPosition": { + "x": -0.12781177, + "y": 0.928981 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -366.11246, + "y": 112.46863, + "z": -101.86104 + }, + "screenPosition": { + "x": -0.16759987, + "y": 0.9737337 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.17758, + "y": 99.78869, + "z": -96.92947 + }, + "screenPosition": { + "x": -0.29667416, + "y": 0.9246478 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.1501, + "y": 102.40137, + "z": -96.122375 + }, + "screenPosition": { + "x": -0.27603605, + "y": 0.885217 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -371.37817, + "y": 106.57733, + "z": -96.16826 + }, + "screenPosition": { + "x": -0.22991617, + "y": 0.84939265 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.92902, + "y": 109.80759, + "z": -96.83388 + }, + "screenPosition": { + "x": -0.20819443, + "y": 0.8555558 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -369.20557, + "y": 110.55573, + "z": -98.61922 + }, + "screenPosition": { + "x": -0.19600667, + "y": 0.8994697 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -367.86362, + "y": 105.37619, + "z": -99.62904 + }, + "screenPosition": { + "x": -0.23875847, + "y": 0.96148205 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -370.86554, + "y": 115.83296, + "z": -97.2778 + }, + "screenPosition": { + "x": -0.15328343, + "y": 0.8279863 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.12723, + "y": 115.57553, + "z": -95.97908 + }, + "screenPosition": { + "x": -0.1520334, + "y": 0.7862723 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -372.90076, + "y": 116.52594, + "z": -95.23541 + }, + "screenPosition": { + "x": -0.15186724, + "y": 0.766629 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -373.51547, + "y": 116.93888, + "z": -94.62821 + }, + "screenPosition": { + "x": -0.15028639, + "y": 0.74783206 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": { + "x": -374.4804, + "y": 117.34158, + "z": -93.6634 + }, + "screenPosition": { + "x": -0.1491222, + "y": 0.71863216 + }, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + }, + { + "modelPosition": null, + "screenPosition": null, + "deltaImage": "not-really-an-image.png" + } + ], + "deltaImage": "20190825-080923/brain-CBDACC-0.webp", + "screenAreaInSqPixels": null, + "screenAngle": null + } + ], + "cameraMatrix": { + "elements": [ + 0.2624742168770454, + 0.7682876278877927, + 0.5838162436155149, + 0.0, + 0.8962482597010678, + 0.030086196486042827, + -0.44253121671110446, + 0.0, + -0.357556068970433, + 0.6393973268755131, + -0.6806795985828127, + 0.0, + -419.84234631889814, + 258.38615891980373, + -155.28016279289633, + 1.0 + ] + }, + "baseImage": "20190825-080923/base.webp", + "version": 0, + "savedAt": 1.566720933955E12, + "notes": null +} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-084744-v0.json b/data/mapping/BAAAHS/dwayman/20190825-084744-v0.json new file mode 100644 index 0000000000..615a1c0e73 --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-084744-v0.json @@ -0,0 +1 @@ +{"startedAt":1.566722864961E12,"surfaces":[{"brainId":"CB8E24","panelName":"F25","pixels":[{"modelPosition":{"x":-21.054468,"y":92.87394,"z":34.89914},"screenPosition":{"x":0.04651324,"y":0.79134077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.672419,"y":93.99517,"z":32.983818},"screenPosition":{"x":0.086187705,"y":0.8081875},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-19.977507,"y":96.03456,"z":28.747562},"screenPosition":{"x":0.17164399,"y":0.83154863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.213346,"y":95.17682,"z":26.547482},"screenPosition":{"x":0.20638347,"y":0.79367244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.099968,"y":95.675224,"z":24.374002},"screenPosition":{"x":0.24655136,"y":0.7780531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.385239,"y":94.67244,"z":22.035753},"screenPosition":{"x":0.27259752,"y":0.6940877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.307669,"y":95.06577,"z":19.127201},"screenPosition":{"x":0.33471254,"y":0.70884234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.709923,"y":96.81973,"z":16.264484},"screenPosition":{"x":0.39398605,"y":0.7362289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.784569,"y":96.6007,"z":14.364671},"screenPosition":{"x":0.42562354,"y":0.7113255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.042633,"y":95.84346,"z":12.964686},"screenPosition":{"x":0.4455391,"y":0.6745525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.318771,"y":95.033195,"z":11.120438},"screenPosition":{"x":0.47270063,"y":0.6321146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.820974,"y":93.559586,"z":8.742244},"screenPosition":{"x":0.50511616,"y":0.56454676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.579525,"y":91.3335,"z":6.426065},"screenPosition":{"x":0.53199154,"y":0.47516304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.77857,"y":93.68401,"z":3.3538175},"screenPosition":{"x":0.5974439,"y":0.5183274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.331785,"y":94.99501,"z":1.734782},"screenPosition":{"x":0.6324028,"y":0.5433129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.831705,"y":96.46238,"z":-1.0895169},"screenPosition":{"x":0.68867767,"y":0.5619081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.98613,"y":96.00926,"z":-3.7404382},"screenPosition":{"x":0.73066705,"y":0.5235508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.825943,"y":93.545006,"z":-5.628303},"screenPosition":{"x":0.7477842,"y":0.43159434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.46629,"y":91.50033,"z":-6.339301},"screenPosition":{"x":0.7438147,"y":0.33507687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.479603,"y":88.69222,"z":-4.461839},"screenPosition":{"x":0.6993048,"y":0.28547257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.233473,"y":89.41448,"z":-0.9034292},"screenPosition":{"x":0.6440869,"y":0.34351593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.25218,"y":89.35954,"z":1.2102398},"screenPosition":{"x":0.6081592,"y":0.3608002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.27087,"y":89.304665,"z":3.321831},"screenPosition":{"x":0.57215387,"y":0.37812188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.726166,"y":90.90316,"z":6.6185703},"screenPosition":{"x":0.5263001,"y":0.46386492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.516222,"y":94.45382,"z":6.116555},"screenPosition":{"x":0.55493236,"y":0.56748474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.923754,"y":96.19228,"z":5.6463866},"screenPosition":{"x":0.5728673,"y":0.61644894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.086742,"y":98.648315,"z":7.6287103},"screenPosition":{"x":0.553061,"y":0.71099836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.216492,"y":98.26759,"z":10.779437},"screenPosition":{"x":0.49678633,"y":0.72908795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.74764,"y":96.70905,"z":12.72316},"screenPosition":{"x":0.4545404,"y":0.69911146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.700178,"y":93.74832,"z":13.769331},"screenPosition":{"x":0.41281357,"y":0.5895335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.638662,"y":91.159874,"z":11.379422},"screenPosition":{"x":0.4466684,"y":0.5156407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.035198,"y":89.996216,"z":7.9081435},"screenPosition":{"x":0.49880412,"y":0.44495776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.145681,"y":89.672005,"z":6.4408183},"screenPosition":{"x":0.5216475,"y":0.4198573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.258934,"y":89.33969,"z":3.6192236},"screenPosition":{"x":0.56734574,"y":0.38209504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.173784,"y":89.58962,"z":0.58685803},"screenPosition":{"x":0.62010974,"y":0.36333466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.276026,"y":92.05862,"z":-1.3453289},"screenPosition":{"x":0.6701533,"y":0.42979917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.122175,"y":95.61006,"z":-0.7133351},"screenPosition":{"x":0.67734534,"y":0.53938824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.527168,"y":97.35598,"z":1.5131892},"screenPosition":{"x":0.6498568,"y":0.6135267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.556923,"y":97.26868,"z":4.647733},"screenPosition":{"x":0.59606797,"y":0.6402154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.792856,"y":96.57638,"z":7.690541},"screenPosition":{"x":0.54016715,"y":0.64747083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.935926,"y":96.15657,"z":9.219678},"screenPosition":{"x":0.5116134,"y":0.64890385},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-19.590187,"y":97.17107,"z":14.154131},"screenPosition":{"x":0.43243957,"y":0.72707075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.548521,"y":97.29333,"z":16.507057},"screenPosition":{"x":0.39240527,"y":0.7533235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.739447,"y":96.7331,"z":19.378044},"screenPosition":{"x":0.33946377,"y":0.7632753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.847084,"y":99.35155,"z":20.251938},"screenPosition":{"x":0.3385902,"y":0.85394436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.143694,"y":101.4155,"z":18.982409},"screenPosition":{"x":0.37217557,"y":0.9068493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.871838,"y":102.213196,"z":15.660328},"screenPosition":{"x":0.43458465,"y":0.8997657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.98586,"y":98.944336,"z":14.107716},"screenPosition":{"x":0.4431646,"y":0.7819709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.487143,"y":97.47343,"z":16.782328},"screenPosition":{"x":0.3886293,"y":0.76158226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.478344,"y":97.499245,"z":19.584343},"screenPosition":{"x":0.34006938,"y":0.7892515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.379498,"y":94.689285,"z":22.186438},"screenPosition":{"x":0.2723455,"y":0.70486766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.485703,"y":91.608604,"z":21.60575},"screenPosition":{"x":0.2730102,"y":0.62501657},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-21.517149,"y":91.51646,"z":13.1328535},"screenPosition":{"x":0.41863257,"y":0.54283226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.303484,"y":95.07805,"z":14.086415},"screenPosition":{"x":0.4219566,"y":0.6614468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.92567,"y":96.18667,"z":17.223341},"screenPosition":{"x":0.37387788,"y":0.7256336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.066704,"y":95.772835,"z":20.080616},"screenPosition":{"x":0.32199857,"y":0.7399787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.132057,"y":92.646454,"z":21.483437},"screenPosition":{"x":0.280701,"y":0.6560097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.13151,"y":104.38554,"z":8.9584675},"screenPosition":{"x":0.563229,"y":0.903292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.947266,"y":104.92616,"z":5.9610677},"screenPosition":{"x":0.6180738,"y":0.89128226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.721693,"y":102.65377,"z":2.643319},"screenPosition":{"x":0.66163117,"y":0.7881513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.958252,"y":99.025345,"z":3.1397555},"screenPosition":{"x":0.63192844,"y":0.6802247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.593962,"y":97.15999,"z":6.294097},"screenPosition":{"x":0.56736296,"y":0.6523406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.256449,"y":98.15035,"z":9.754874},"screenPosition":{"x":0.5137382,"y":0.7157087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.002558,"y":101.82963,"z":9.666665},"screenPosition":{"x":0.53626525,"y":0.8297141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.543793,"y":103.17578,"z":5.9891143},"screenPosition":{"x":0.6073612,"y":0.83654773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.719007,"y":99.727356,"z":4.110852},"screenPosition":{"x":0.6194531,"y":0.7111278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.5799,"y":97.201256,"z":4.0591807},"screenPosition":{"x":0.6057013,"y":0.63261515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.461882,"y":94.613266,"z":4.9072213},"screenPosition":{"x":0.57640916,"y":0.5611102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.023148,"y":92.80063,"z":5.2921224},"screenPosition":{"x":0.55652636,"y":0.49269676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.931288,"y":90.30124,"z":2.7763612},"screenPosition":{"x":0.58768386,"y":0.40872392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.164413,"y":89.61714,"z":-0.46974105},"screenPosition":{"x":0.63806134,"y":0.35469392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.325727,"y":91.91278,"z":-2.6498773},"screenPosition":{"x":0.6851752,"y":0.38662508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.83356,"y":93.52265,"z":-3.2233484},"screenPosition":{"x":0.7073781,"y":0.45290303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.304096,"y":95.076256,"z":-6.65811},"screenPosition":{"x":0.77405876,"y":0.46841556},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-18.580177,"y":100.13473,"z":-1.4220079},"screenPosition":{"x":0.715926,"y":0.6714957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.938166,"y":99.08428,"z":1.0536249},"screenPosition":{"x":0.6677508,"y":0.66239554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.103006,"y":95.66631,"z":1.0745059},"screenPosition":{"x":0.64746445,"y":0.55768514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.106445,"y":92.72193,"z":-1.050986},"screenPosition":{"x":0.6662311,"y":0.44858417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.297148,"y":91.99664,"z":-1.8997122},"screenPosition":{"x":0.66993606,"y":0.38287228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.250607,"y":89.36424,"z":-3.9154506},"screenPosition":{"x":0.6942982,"y":0.31439686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.666428,"y":88.143974,"z":-6.533217},"screenPosition":{"x":0.7305852,"y":0.24720372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.599173,"y":88.34141,"z":-10.033955},"screenPosition":{"x":0.79012036,"y":0.22280946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.675604,"y":90.88615,"z":-11.833278},"screenPosition":{"x":0.8329656,"y":0.26745838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.728287,"y":90.73155,"z":-13.216096},"screenPosition":{"x":0.86081004,"y":0.28021014},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-21.289644,"y":89.08422,"z":-18.70372},"screenPosition":{"x":0.9404183,"y":0.15403493},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":{"x":0.9286106,"y":0.108337976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.673325,"y":87.958176,"z":-14.651129},"screenPosition":{"x":0.8665722,"y":0.15961686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.72122,"y":90.7523,"z":-13.030598},"screenPosition":{"x":0.853057,"y":0.25696215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.338915,"y":89.10521,"z":-11.306398},"screenPosition":{"x":0.81582046,"y":0.23862162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.28235,"y":89.27116,"z":-8.593135},"screenPosition":{"x":0.7717751,"y":0.26887622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.21089,"y":92.41547,"z":-6.285321},"screenPosition":{"x":0.7521027,"y":0.39161873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.222662,"y":95.31521,"z":-4.5788503},"screenPosition":{"x":0.7406501,"y":0.49474317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.913673,"y":96.22187,"z":-8.402982},"screenPosition":{"x":0.810044,"y":0.48707482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.9984,"y":93.03897,"z":-11.308496},"screenPosition":{"x":0.8393281,"y":0.36481842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.073906,"y":89.882904,"z":-9.85262},"screenPosition":{"x":0.7963777,"y":0.2793143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.186625,"y":89.552055,"z":-6.196711},"screenPosition":{"x":0.7335679,"y":0.30046788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.37741,"y":91.76112,"z":-4.0064597},"screenPosition":{"x":0.7132334,"y":0.39599863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.5181,"y":94.4483,"z":-3.0045977},"screenPosition":{"x":0.7091258,"y":0.48293197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.60351,"y":97.13197,"z":-1.7471888},"screenPosition":{"x":0.70370764,"y":0.57625884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.873812,"y":99.27312,"z":-1.1951615},"screenPosition":{"x":0.7069906,"y":0.6470883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.175375,"y":101.32253,"z":-0.045491613},"screenPosition":{"x":0.69959855,"y":0.7211987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.502476,"y":103.29701,"z":1.8427032},"screenPosition":{"x":0.67910236,"y":0.8005668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.957027,"y":101.96323,"z":4.3368597},"screenPosition":{"x":0.62861866,"y":0.78279316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.112368,"y":98.57313,"z":4.371746},"screenPosition":{"x":0.60830694,"y":0.6778701},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.038067,"y":98.791145,"z":1.0810298},"screenPosition":{"x":0.6655689,"y":0.6536184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.413778,"y":100.622986,"z":-1.0204854},"screenPosition":{"x":0.71201146,"y":0.69034564},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-19.567974,"y":97.236244,"z":-4.744269},"screenPosition":{"x":0.7547981,"y":0.5516256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.376068,"y":94.86507,"z":-5.890065},"screenPosition":{"x":0.7599591,"y":0.46906754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.332325,"y":91.89342,"z":-2.8230357},"screenPosition":{"x":0.69409984,"y":0.41101077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.874254,"y":93.403244,"z":-0.36282185},"screenPosition":{"x":0.65860045,"y":0.47552797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.129555,"y":92.4884,"z":2.4992182},"screenPosition":{"x":0.6033753,"y":0.46121728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.306698,"y":89.19953,"z":2.4292154},"screenPosition":{"x":0.5865757,"y":0.36620456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.045366,"y":87.03182,"z":-1.7472657},"screenPosition":{"x":0.64340156,"y":0.2505632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.95557,"y":90.230095,"z":-4.2917724},"screenPosition":{"x":0.70591736,"y":0.3418283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.38713,"y":103.63547,"z":11.389816},"screenPosition":{"x":0.5168356,"y":0.9032155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.851377,"y":102.27324,"z":13.595663},"screenPosition":{"x":0.47081372,"y":0.88161784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.421366,"y":100.60073,"z":15.693726},"screenPosition":{"x":0.4249472,"y":0.84921473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.709923,"y":96.81973,"z":16.264484},"screenPosition":{"x":0.39398605,"y":0.7362289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.589447,"y":94.073235,"z":16.675737},"screenPosition":{"x":0.3630288,"y":0.6232574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.639856,"y":91.156334,"z":13.917604},"screenPosition":{"x":0.40319455,"y":0.53910375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.662285,"y":91.09056,"z":10.789038},"screenPosition":{"x":0.45636797,"y":0.5080551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.911549,"y":93.1281,"z":8.221371},"screenPosition":{"x":0.50932366,"y":0.5349537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.881481,"y":93.38204,"z":5.9241047},"screenPosition":{"x":0.5521109,"y":0.53292066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.120827,"y":95.61402,"z":4.5112963},"screenPosition":{"x":0.58887255,"y":0.58807784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.130907,"y":98.51872,"z":2.5938253},"screenPosition":{"x":0.6382719,"y":0.6594429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.204899,"y":101.2359,"z":4.4080677},"screenPosition":{"x":0.6231554,"y":0.76080936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.248701,"y":104.041664,"z":4.575795},"screenPosition":{"x":0.63669634,"y":0.85010064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.87545,"y":105.13689,"z":7.8517404},"screenPosition":{"x":0.5867101,"y":0.91626745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.212528,"y":104.147804,"z":10.747365},"screenPosition":{"x":0.53090835,"y":0.91316026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.249891,"y":104.03817,"z":12.374911},"screenPosition":{"x":0.5020571,"y":0.9255313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.489557,"y":103.334915,"z":13.920053},"screenPosition":{"x":0.47120407,"y":0.9183196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.931408,"y":102.03841,"z":16.708319},"screenPosition":{"x":0.41534615,"y":0.90442973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.23692,"y":101.141945,"z":19.161007},"screenPosition":{"x":0.36753634,"y":0.89992666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.696987,"y":99.79197,"z":21.523052},"screenPosition":{"x":0.3187729,"y":0.88018453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.603588,"y":97.131744,"z":21.544643},"screenPosition":{"x":0.303878,"y":0.7965658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.912893,"y":93.28963,"z":21.852118},"screenPosition":{"x":0.27774915,"y":0.6794733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.443274,"y":91.73315,"z":20.105865},"screenPosition":{"x":0.29968077,"y":0.6147431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.662277,"y":91.09048,"z":17.204138},"screenPosition":{"x":0.3463322,"y":0.56772983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.02269,"y":90.032814,"z":14.636802},"screenPosition":{"x":0.38407046,"y":0.50857353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.937748,"y":90.28214,"z":11.621338},"screenPosition":{"x":0.43736655,"y":0.489502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.999557,"y":90.1008,"z":8.796564},"screenPosition":{"x":0.48436457,"y":0.45689055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.516907,"y":91.51727,"z":6.707235},"screenPosition":{"x":0.5282548,"y":0.48333976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.359165,"y":94.914665,"z":6.219924},"screenPosition":{"x":0.5557971,"y":0.58257264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.387972,"y":97.76443,"z":6.382331},"screenPosition":{"x":0.56932205,"y":0.67183906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.454199,"y":100.50439,"z":9.657447},"screenPosition":{"x":0.5288317,"y":0.7881288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.772476,"y":99.570465,"z":11.824344},"screenPosition":{"x":0.48615652,"y":0.77968293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.775578,"y":99.56137,"z":14.335164},"screenPosition":{"x":0.44268924,"y":0.8034751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.44866,"y":97.58635,"z":16.474127},"screenPosition":{"x":0.3945997,"y":0.7621633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.57972,"y":97.20178,"z":18.290302},"screenPosition":{"x":0.3609491,"y":0.7675216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.111158,"y":98.576675,"z":21.226124},"screenPosition":{"x":0.31731912,"y":0.83894247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.119707,"y":98.55159,"z":23.582544},"screenPosition":{"x":0.27592006,"y":0.86097336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.562998,"y":97.25085,"z":27.711409},"screenPosition":{"x":0.1963472,"y":0.85993326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.082592,"y":92.79152,"z":27.831026},"screenPosition":{"x":0.17068598,"y":0.72086793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.564621,"y":91.37695,"z":24.749506},"screenPosition":{"x":0.21710315,"y":0.6475233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.565702,"y":91.37385,"z":20.890633},"screenPosition":{"x":0.28415337,"y":0.6110264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.216166,"y":92.39967,"z":18.09758},"screenPosition":{"x":0.33802882,"y":0.61643815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.087517,"y":95.71176,"z":16.980951},"screenPosition":{"x":0.37546188,"y":0.70853925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.97611,"y":98.972946,"z":18.234722},"screenPosition":{"x":0.37168545,"y":0.8225328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.324581,"y":100.88472,"z":19.484674},"screenPosition":{"x":0.360454,"y":0.89493495},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-19.007647,"y":98.88041,"z":25.15826},"screenPosition":{"x":0.25002033,"y":0.8866903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.948204,"y":96.120544,"z":25.645903},"screenPosition":{"x":0.22664398,"y":0.80428684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.722975,"y":93.84693,"z":25.335737},"screenPosition":{"x":0.21996434,"y":0.7300141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.381428,"y":91.91454,"z":26.75748},"screenPosition":{"x":0.18487963,"y":0.68327606},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-21.310364,"y":92.12301,"z":32.346325},"screenPosition":{"x":0.08779611,"y":0.74316216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.670439,"y":94.00096,"z":34.306694},"screenPosition":{"x":0.06278755,"y":0.82117486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.862843,"y":96.37102,"z":31.642578},"screenPosition":{"x":0.12226781,"y":0.8703039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.496096,"y":97.44716,"z":28.127228},"screenPosition":{"x":0.19005962,"y":0.870188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.214987,"y":95.172005,"z":26.504436},"screenPosition":{"x":0.19537145,"y":0.7492728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.433239,"y":91.76245,"z":29.291433},"screenPosition":{"x":0.13968375,"y":0.702661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.286993,"y":92.19158,"z":32.927326},"screenPosition":{"x":0.07789552,"y":0.7508901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.1878,"y":92.48264,"z":35.393444},"screenPosition":{"x":0.035756353,"y":0.78378206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.994215,"y":93.05072,"z":37.669254},"screenPosition":{"x":-0.0017841915,"y":0.8237353},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-084744/brain-CB8E24-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.01880049781980342,-0.10900310015240997,-0.9938636050479418,0.0,0.16663127328711666,0.9804785620991253,-0.10438298724766365,0.0,0.9858400276132239,-0.16364630585868828,0.03659681043974783,0.0,120.79047130206555,109.72066764203045,10.394082145706632,1.0]},"baseImage":"20190825-084744/base.webp","version":0,"savedAt":1.566723155204E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/20190825-090547-v0.json-huh-tailA-wtf b/data/mapping/BAAAHS/dwayman/20190825-090547-v0.json-huh-tailA-wtf new file mode 100644 index 0000000000..06e04d5e3b --- /dev/null +++ b/data/mapping/BAAAHS/dwayman/20190825-090547-v0.json-huh-tailA-wtf @@ -0,0 +1 @@ +{"startedAt":1.566723947273E12,"surfaces":[{"brainId":"CBB34C","panelName":"TailA","pixels":[{"modelPosition":{"x":-353.15445,"y":194.71484,"z":-37.59817},"screenPosition":{"x":1.1989642,"y":0.8428291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.50775,"y":194.4732,"z":-34.87792},"screenPosition":{"x":1.1818666,"y":0.80372274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.0763,"y":194.08437,"z":-32.623245},"screenPosition":{"x":1.1646705,"y":0.77180314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.5423,"y":193.76569,"z":-30.488047},"screenPosition":{"x":1.1460592,"y":0.74050725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.32986,"y":193.22705,"z":-27.652035},"screenPosition":{"x":1.1267552,"y":0.70142525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.02213,"y":192.75362,"z":-25.757446},"screenPosition":{"x":1.1099517,"y":0.6749873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.06036,"y":192.04356,"z":-23.75097},"screenPosition":{"x":1.0868211,"y":0.6470468},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.94107,"y":191.44124,"z":-21.501417},"screenPosition":{"x":1.0667524,"y":0.6159186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.71915,"y":190.90913,"z":-19.366043},"screenPosition":{"x":1.0492964,"y":0.5864464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.2144,"y":190.57043,"z":-16.529917},"screenPosition":{"x":1.0300785,"y":0.54590136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.27676,"y":191.21167,"z":-13.912223},"screenPosition":{"x":1.0276442,"y":0.5059824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.22592,"y":193.29814,"z":-12.174982},"screenPosition":{"x":1.0511744,"y":0.47495815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.86984,"y":194.90947,"z":-14.343169},"screenPosition":{"x":1.089065,"y":0.50259906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.74472,"y":194.99504,"z":-17.894129},"screenPosition":{"x":1.1076958,"y":0.5542493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.08707,"y":194.07701,"z":-21.137257},"screenPosition":{"x":1.1087294,"y":0.60402936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.46454,"y":192.45105,"z":-21.890985},"screenPosition":{"x":1.0863059,"y":0.61929613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.58597,"y":191.0002,"z":-21.899628},"screenPosition":{"x":1.0583613,"y":0.6221275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.57867,"y":189.63739,"z":-20.415133},"screenPosition":{"x":1.028909,"y":0.6039657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.76883,"y":189.5776,"z":-17.626034},"screenPosition":{"x":0.9768781,"y":0.57740647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.576,"y":189.06374,"z":-16.356419},"screenPosition":{"x":0.96169764,"y":0.560436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.36435,"y":189.90524,"z":-13.630811},"screenPosition":{"x":0.9205048,"y":0.53096145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.6473,"y":190.03839,"z":-10.655709},"screenPosition":{"x":0.8979928,"y":0.48858997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.58752,"y":190.01025,"z":-7.723371},"screenPosition":{"x":0.883572,"y":0.4454076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.76044,"y":188.67998,"z":-6.1156464},"screenPosition":{"x":0.9246707,"y":0.40611723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.07645,"y":189.29697,"z":-5.130062},"screenPosition":{"x":0.9542428,"y":0.3826999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.19528,"y":191.2674,"z":-5.7529964},"screenPosition":{"x":0.9888834,"y":0.38664252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.7181,"y":192.27763,"z":-8.57068},"screenPosition":{"x":1.0187784,"y":0.42515978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.6881,"y":192.29816,"z":-12.334783},"screenPosition":{"x":1.0374088,"y":0.48009455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.2504,"y":190.54579,"z":-14.161477},"screenPosition":{"x":1.0181724,"y":0.51136655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-14.925135},"screenPosition":{"x":0.9872255,"y":0.52889186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.38052,"y":188.97177,"z":-12.472866},"screenPosition":{"x":0.94587743,"y":0.50257283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.72696,"y":190.07587,"z":-9.818166},"screenPosition":{"x":0.89630866,"y":0.47736147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.99823,"y":190.67407,"z":-7.0077505},"screenPosition":{"x":0.8627841,"y":0.44365755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.73218,"y":191.48997,"z":-5.9377484},"screenPosition":{"x":0.82461196,"y":0.43738344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.74396,"y":191.96605,"z":-2.7472067},"screenPosition":{"x":0.79323,"y":0.39682215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.92053,"y":192.99025,"z":-0.011618523},"screenPosition":{"x":0.7518637,"y":0.36992103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.05603,"y":193.054,"z":3.1847248},"screenPosition":{"x":0.7342118,"y":0.32401085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.55713,"y":191.87816,"z":3.8086233},"screenPosition":{"x":0.7658523,"y":0.30048856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.03705,"y":190.22179,"z":4.787156},"screenPosition":{"x":0.82047933,"y":0.26579306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.36685,"y":188.49478,"z":2.8727722},"screenPosition":{"x":0.8871363,"y":0.27253383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.2954,"y":189.14722,"z":1.3613615},"screenPosition":{"x":0.9182835,"y":0.2882997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.28836,"y":189.83594,"z":-1.1447518},"screenPosition":{"x":0.9435209,"y":0.32306978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.5262,"y":189.67328,"z":-3.9892964},"screenPosition":{"x":0.95473593,"y":0.36505005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-6.5685024},"screenPosition":{"x":0.95554805,"y":0.40528664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.68896,"y":188.64635,"z":-7.863064},"screenPosition":{"x":0.93428016,"y":0.43123108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.9823,"y":190.19601,"z":-7.1335144},"screenPosition":{"x":0.87198967,"y":0.43881333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.50504,"y":191.85364,"z":-5.673048},"screenPosition":{"x":0.8171249,"y":0.4386567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":11.356207},"screenPosition":{"x":0.8582603,"y":0.14578913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.82748,"y":193.417,"z":1.4179204},"screenPosition":{"x":0.7307433,"y":0.3542827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.47296,"y":192.77965,"z":3.4562616},"screenPosition":{"x":0.73909366,"y":0.31665584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.3516,"y":191.31088,"z":4.3664455},"screenPosition":{"x":0.7863561,"y":0.28532428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.13037,"y":189.79515,"z":4.4812746},"screenPosition":{"x":0.8290731,"y":0.26530746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.26636,"y":188.4475,"z":4.00323},"screenPosition":{"x":0.88321215,"y":0.25543848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.85242,"y":189.45018,"z":3.5817556},"screenPosition":{"x":0.9143604,"y":0.25503233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.35995,"y":191.15477,"z":2.902794},"screenPosition":{"x":0.9440272,"y":0.26052952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.99988,"y":192.08493,"z":0.9933446},"screenPosition":{"x":0.9678206,"y":0.2859765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.76065,"y":192.93243,"z":-1.1649469},"screenPosition":{"x":0.99329835,"y":0.31525984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.8423,"y":192.1927,"z":-3.910721},"screenPosition":{"x":0.9947751,"y":0.3573077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.31424,"y":191.18604,"z":-7.109326},"screenPosition":{"x":0.9908644,"y":0.40642166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.8567,"y":189.44727,"z":-6.80775},"screenPosition":{"x":0.964808,"y":0.406815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.4219,"y":190.40288,"z":10.7842865},"screenPosition":{"x":0.7729351,"y":0.18097733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.97925,"y":188.78294,"z":10.210503},"screenPosition":{"x":0.83476084,"y":0.16978386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.1274,"y":189.26212,"z":8.597975},"screenPosition":{"x":0.8845872,"y":0.18250643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.67377,"y":189.57236,"z":5.1439567},"screenPosition":{"x":0.9078663,"y":0.23194824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.63916,"y":188.15237,"z":2.5763516},"screenPosition":{"x":0.893842,"y":0.27285323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.58493,"y":189.53848,"z":2.434325},"screenPosition":{"x":0.85460633,"y":0.29176638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.68747,"y":190.99838,"z":2.8946319},"screenPosition":{"x":0.80388695,"y":0.3029846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.16028,"y":192.16196,"z":2.351347},"screenPosition":{"x":0.76348907,"y":0.32516196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.22324,"y":193.60324,"z":2.8273177},"screenPosition":{"x":0.71770924,"y":0.33598223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.20496,"y":195.00627,"z":5.96242},"screenPosition":{"x":0.65060574,"y":0.3074464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.82217,"y":194.82616,"z":8.957949},"screenPosition":{"x":0.64730126,"y":0.26145303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.06705,"y":193.05919,"z":8.634343},"screenPosition":{"x":0.7003335,"y":0.24494801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.90564,"y":191.5716,"z":5.887161},"screenPosition":{"x":0.7684346,"y":0.26639232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.031,"y":193.51277,"z":4.307013},"screenPosition":{"x":0.71352196,"y":0.31325433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.17468,"y":193.58038,"z":7.7256813},"screenPosition":{"x":0.69466144,"y":0.26414368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.45746,"y":192.3018,"z":8.459782},"screenPosition":{"x":0.72988033,"y":0.2409672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.91812,"y":191.10692,"z":8.805737},"screenPosition":{"x":0.7490989,"y":0.21418917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.95316,"y":189.71176,"z":8.044641},"screenPosition":{"x":0.8215852,"y":0.21193773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.57755,"y":188.59392,"z":7.697726},"screenPosition":{"x":0.86039406,"y":0.20326696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":9.126034},"screenPosition":{"x":0.87840915,"y":0.17616983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.54233,"y":191.03006,"z":8.145574},"screenPosition":{"x":0.9175269,"y":0.18422656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.6727,"y":190.25699,"z":4.420361},"screenPosition":{"x":0.92275643,"y":0.24069728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.58887,"y":189.63042,"z":1.426778},"screenPosition":{"x":0.9277256,"y":0.28604153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.74194,"y":188.67128,"z":1.1019979},"screenPosition":{"x":0.8898811,"y":0.30057138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.92343,"y":190.63887,"z":3.8929195},"screenPosition":{"x":0.81097466,"y":0.2839825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.21268,"y":191.71606,"z":5.8364806},"screenPosition":{"x":0.76575565,"y":0.2688291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.57483,"y":190.94537,"z":8.503472},"screenPosition":{"x":0.7492028,"y":0.21404442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.04083,"y":189.28247,"z":8.767785},"screenPosition":{"x":0.83232725,"y":0.19609748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.76004,"y":188.6798,"z":6.3250318},"screenPosition":{"x":0.8585604,"y":0.22480175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":5.2060246},"screenPosition":{"x":0.8881508,"y":0.23563403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.82593,"y":190.1522,"z":4.385821},"screenPosition":{"x":0.9207648,"y":0.24150342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.4562,"y":191.08896,"z":7.2346888},"screenPosition":{"x":0.9207933,"y":0.19757722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.0542,"y":189.31216,"z":9.535464},"screenPosition":{"x":0.88321066,"y":0.16841881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.9592,"y":188.30295,"z":9.202449},"screenPosition":{"x":0.86830854,"y":0.17599231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.06,"y":189.29149,"z":9.947099},"screenPosition":{"x":0.8262959,"y":0.17898041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.58185,"y":190.47813,"z":12.37592},"screenPosition":{"x":0.7693275,"y":0.15891433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.84363,"y":190.60132,"z":14.981298},"screenPosition":{"x":0.74758035,"y":0.12252018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.01547,"y":187.86552,"z":16.514225},"screenPosition":{"x":0.7910529,"y":0.08000896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.3125,"y":187.76773,"z":18.333435},"screenPosition":{"x":0.81567305,"y":0.043936178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.53683,"y":190.34991,"z":18.663801},"screenPosition":{"x":0.85549515,"y":0.03235131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.34457,"y":189.7975,"z":15.269986},"screenPosition":{"x":0.86312664,"y":0.08337576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.78613,"y":189.49551,"z":12.592785},"screenPosition":{"x":0.8712931,"y":0.12327609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.94647,"y":190.75366,"z":9.991986},"screenPosition":{"x":0.9041186,"y":0.15797672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.4039,"y":192.49254,"z":11.994116},"screenPosition":{"x":0.9222861,"y":0.124177165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.0094,"y":192.07843,"z":15.698262},"screenPosition":{"x":0.8976397,"y":0.07114908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.99683,"y":190.03531,"z":16.397264},"screenPosition":{"x":0.8614634,"y":0.066285454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.9279,"y":188.28822,"z":10.845501},"screenPosition":{"x":0.84682536,"y":0.15468979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.11282,"y":189.78688,"z":12.616533},"screenPosition":{"x":0.79467297,"y":0.15068911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.66644,"y":188.91705,"z":15.83731},"screenPosition":{"x":0.78046876,"y":0.11034862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.51334,"y":188.98683,"z":15.270966},"screenPosition":{"x":0.8366142,"y":0.08956997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.39853,"y":188.50969,"z":13.845493},"screenPosition":{"x":0.82105947,"y":0.11392381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.06317,"y":188.82243,"z":10.941322},"screenPosition":{"x":0.8338445,"y":0.1591257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.858,"y":189.19644,"z":7.100719},"screenPosition":{"x":0.84328634,"y":0.21939349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.87488,"y":189.43481,"z":5.6657944},"screenPosition":{"x":0.9039853,"y":0.22462787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.45407,"y":191.09041,"z":6.393296},"screenPosition":{"x":0.9248275,"y":0.2098494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.60614,"y":192.35422,"z":8.755772},"screenPosition":{"x":0.9358058,"y":0.17184652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.269,"y":188.91928,"z":11.766889},"screenPosition":{"x":0.8002498,"y":0.14291869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.80582,"y":190.16595,"z":5.904168},"screenPosition":{"x":0.9145571,"y":0.21923184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.34973,"y":191.16177,"z":5.286747},"screenPosition":{"x":0.93353426,"y":0.22564496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.5586,"y":194.43843,"z":3.235354},"screenPosition":{"x":0.996074,"y":0.24703622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.597,"y":195.09608,"z":7.0456624},"screenPosition":{"x":0.98810667,"y":0.18965197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.12592,"y":195.41823,"z":8.912135},"screenPosition":{"x":0.9842039,"y":0.1615424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.12195,"y":195.42094,"z":11.47013},"screenPosition":{"x":0.9718153,"y":0.12416683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.32608,"y":195.28134,"z":13.850479},"screenPosition":{"x":0.9580068,"y":0.08975892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.60922,"y":195.0877,"z":16.263296},"screenPosition":{"x":0.94232386,"y":0.055195395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.38022,"y":194.56042,"z":18.450243},"screenPosition":{"x":0.9240852,"y":0.024450269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.97318,"y":193.47101,"z":20.864378},"screenPosition":{"x":0.8948739,"y":-0.0079651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.06232,"y":192.04224,"z":20.531408},"screenPosition":{"x":0.8735694,"y":6.388046E-4},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.9114,"y":190.09373,"z":17.896225},"screenPosition":{"x":0.8529648,"y":0.044738784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.64725,"y":191.6422,"z":16.09312},"screenPosition":{"x":0.8861569,"y":0.06705743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.84717,"y":193.55717,"z":15.708791},"screenPosition":{"x":0.92131305,"y":0.06712473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.25955,"y":194.64294,"z":18.04318},"screenPosition":{"x":0.9268974,"y":0.030294469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.97784,"y":194.8356,"z":21.263638},"screenPosition":{"x":0.91482663,"y":-0.01736947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.3359,"y":193.90681,"z":23.593578},"screenPosition":{"x":0.8886017,"y":-0.048975352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.90363,"y":192.15077,"z":24.585743},"screenPosition":{"x":0.8556061,"y":-0.058872983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.83307,"y":190.83122,"z":25.038914},"screenPosition":{"x":0.83179146,"y":-0.061891593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.26776,"y":189.85002,"z":22.516012},"screenPosition":{"x":0.82846606,"y":-0.022529256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.56744,"y":191.01288,"z":19.375357},"screenPosition":{"x":0.8626732,"y":0.020221297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.05643,"y":192.73016,"z":20.732544},"screenPosition":{"x":0.88287437,"y":-0.003896457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.22903,"y":193.296,"z":23.168665},"screenPosition":{"x":0.8791869,"y":-0.040661104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.77744,"y":193.60486,"z":25.57188},"screenPosition":{"x":0.87414247,"y":-0.07708502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.7092,"y":193.65154,"z":28.102842},"screenPosition":{"x":0.86259043,"y":-0.1141807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.7009,"y":194.34111,"z":30.365799},"screenPosition":{"x":0.86265564,"y":-0.14904402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.19363,"y":193.32024,"z":33.535957},"screenPosition":{"x":0.8308697,"y":-0.19268319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.7284,"y":192.1143,"z":34.36939},"screenPosition":{"x":0.7831504,"y":-0.19434044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.35013,"y":189.79372,"z":33.234562},"screenPosition":{"x":0.7757558,"y":-0.17904972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.6754,"y":188.20345,"z":32.35201},"screenPosition":{"x":0.7545312,"y":-0.16199443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.60275,"y":187.56923,"z":30.690086},"screenPosition":{"x":0.7524333,"y":-0.13605621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.88248,"y":187.37793,"z":27.109253},"screenPosition":{"x":0.76676744,"y":-0.083244964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.2637,"y":188.3287,"z":25.12283},"screenPosition":{"x":0.77885056,"y":-0.04280128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.7608,"y":189.51285,"z":23.089762},"screenPosition":{"x":0.8199944,"y":-0.029941242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.4207,"y":191.11325,"z":24.540632},"screenPosition":{"x":0.8391797,"y":-0.055498347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.29892,"y":191.88042,"z":26.967201},"screenPosition":{"x":0.83969444,"y":-0.09295487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.14224,"y":191.30368,"z":30.260412},"screenPosition":{"x":0.814067,"y":-0.1394027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.69278,"y":190.08694,"z":29.417442},"screenPosition":{"x":0.7746911,"y":-0.11669347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.20117,"y":189.21165,"z":26.310133},"screenPosition":{"x":0.80007124,"y":-0.07637075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.68835,"y":189.56238,"z":24.682697},"screenPosition":{"x":0.8136077,"y":-0.053514373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.40805,"y":189.07019,"z":22.12466},"screenPosition":{"x":0.81591684,"y":-0.014198515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.63782,"y":187.54524,"z":20.500147},"screenPosition":{"x":0.7995886,"y":0.013411289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.05017,"y":187.10693,"z":22.13856},"screenPosition":{"x":0.76225674,"y":-0.0025598574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.69257,"y":186.14001,"z":25.048449},"screenPosition":{"x":0.75692254,"y":-0.049899537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.58435,"y":186.89792,"z":27.708256},"screenPosition":{"x":0.75615513,"y":-0.09073907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.20404,"y":189.7373,"z":28.563425},"screenPosition":{"x":0.77323216,"y":-0.10330237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.6828,"y":190.25008,"z":27.814127},"screenPosition":{"x":0.8094217,"y":-0.10105985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.1653,"y":190.604,"z":25.468784},"screenPosition":{"x":0.8261462,"y":-0.06760407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.933,"y":190.07896,"z":22.077421},"screenPosition":{"x":0.8345574,"y":-0.016807329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.59134,"y":188.26093,"z":21.301249},"screenPosition":{"x":0.80916166,"y":-7.0999743E-4},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.84744,"y":186.71799,"z":21.704418},"screenPosition":{"x":0.7817012,"y":-0.0023415496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.95587,"y":187.85532,"z":23.966547},"screenPosition":{"x":0.7653795,"y":-0.03122287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.44806,"y":186.30724,"z":26.65335},"screenPosition":{"x":0.75180525,"y":-0.07378239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.15457,"y":187.1919,"z":32.165745},"screenPosition":{"x":0.73772925,"y":-0.15594995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.83563,"y":187.41,"z":32.613655},"screenPosition":{"x":0.7401002,"y":-0.1635408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.72137,"y":187.48817,"z":32.945858},"screenPosition":{"x":0.7401684,"y":-0.1687972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.77808,"y":190.18494,"z":34.571617},"screenPosition":{"x":0.77553433,"y":-0.19960609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.70035,"y":192.81737,"z":36.086685},"screenPosition":{"x":0.786084,"y":-0.22126783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.7605,"y":192.24864,"z":33.177692},"screenPosition":{"x":0.81541854,"y":-0.18464461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.12894,"y":191.31277,"z":30.816769},"screenPosition":{"x":0.8118781,"y":-0.1477055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.78198,"y":190.70985,"z":30.938932},"screenPosition":{"x":0.7772902,"y":-0.14055055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.36542,"y":189.60027,"z":16.797712},"screenPosition":{"x":0.7326454,"y":0.09786282},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.30737,"y":196.50563,"z":45.095497},"screenPosition":{"x":0.8014735,"y":-0.36252686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.53494,"y":197.0339,"z":46.38582},"screenPosition":{"x":0.79355335,"y":-0.38836786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.51108,"y":193.10326,"z":46.087303},"screenPosition":{"x":0.76638484,"y":-0.37547073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.6724,"y":194.36064,"z":44.116886},"screenPosition":{"x":0.79613644,"y":-0.34997767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.60074,"y":195.6211,"z":42.934967},"screenPosition":{"x":0.7977827,"y":-0.32864955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.28406,"y":195.31007,"z":40.588577},"screenPosition":{"x":0.82851756,"y":-0.3009197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.7109,"y":195.01816,"z":37.551846},"screenPosition":{"x":0.8385929,"y":-0.25579348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.21722,"y":193.3041,"z":36.135406},"screenPosition":{"x":0.81797695,"y":-0.23061493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.005,"y":191.39754,"z":37.614094},"screenPosition":{"x":0.78020215,"y":-0.24722601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.76468,"y":190.87811,"z":40.89652},"screenPosition":{"x":0.75591326,"y":-0.293817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.61502,"y":191.66438,"z":42.830112},"screenPosition":{"x":0.75913006,"y":-0.32412177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.55005,"y":193.07658,"z":44.738934},"screenPosition":{"x":0.7725104,"y":-0.35570332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.22162,"y":195.88039,"z":43.56827},"screenPosition":{"x":0.79886454,"y":-0.33857983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.88748,"y":195.58131,"z":41.675964},"screenPosition":{"x":0.8275843,"y":-0.31751472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.9465,"y":195.54094,"z":39.02508},"screenPosition":{"x":0.8398201,"y":-0.2786836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.15976,"y":195.3951,"z":36.44351},"screenPosition":{"x":0.85002697,"y":-0.24058893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.68805,"y":195.0338,"z":33.522003},"screenPosition":{"x":0.8584293,"y":-0.1969645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.5883,"y":193.73422,"z":31.934078},"screenPosition":{"x":0.84529686,"y":-0.17036574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.32867,"y":191.86008,"z":31.278118},"screenPosition":{"x":0.81841666,"y":-0.15587766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.77646,"y":191.39752,"z":32.618618},"screenPosition":{"x":0.78015953,"y":-0.16688819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.56592,"y":189.64615,"z":36.190952},"screenPosition":{"x":0.7590193,"y":-0.22185168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.88214,"y":190.79774,"z":39.403748},"screenPosition":{"x":0.76187974,"y":-0.27179977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.96082,"y":192.11166,"z":38.763927},"screenPosition":{"x":0.786071,"y":-0.26589254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.08163,"y":194.08073,"z":38.138275},"screenPosition":{"x":0.82070297,"y":-0.26190665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.2373,"y":194.65817,"z":35.723587},"screenPosition":{"x":0.8417029,"y":-0.22814316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.69012,"y":195.03238,"z":32.979614},"screenPosition":{"x":0.86081266,"y":-0.18893684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.30655,"y":195.29471,"z":31.017687},"screenPosition":{"x":0.87478656,"y":-0.16106312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.05618,"y":195.46594,"z":28.44194},"screenPosition":{"x":0.8900522,"y":-0.12388352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.99445,"y":194.82426,"z":26.241497},"screenPosition":{"x":0.8904516,"y":-0.09005879},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.4736,"y":194.49655,"z":23.013147},"screenPosition":{"x":0.90088415,"y":-0.042039722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.1969,"y":192.6341,"z":23.39589},"screenPosition":{"x":0.86914325,"y":-0.04275609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.9344,"y":191.44582,"z":25.45801},"screenPosition":{"x":0.84005684,"y":-0.06977034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.71277,"y":191.59738,"z":28.182909},"screenPosition":{"x":0.82924515,"y":-0.10997372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.24875,"y":192.59863,"z":31.081627},"screenPosition":{"x":0.83122075,"y":-0.15494034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.98895,"y":194.82802,"z":31.44253},"screenPosition":{"x":0.8642879,"y":-0.16565493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.15637,"y":195.3974,"z":27.53759},"screenPosition":{"x":0.89236474,"y":-0.11014089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.23886,"y":194.6571,"z":25.294334},"screenPosition":{"x":0.8909038,"y":-0.075301394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.6188,"y":193.71336,"z":23.53819},"screenPosition":{"x":0.885152,"y":-0.047471188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.42862,"y":193.15953,"z":20.348284},"screenPosition":{"x":0.8906914,"y":8.367849E-4},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.0086,"y":193.44676,"z":17.85741},"screenPosition":{"x":0.9090992,"y":0.036025606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.91547,"y":194.87825,"z":16.985722},"screenPosition":{"x":0.93630207,"y":0.045012813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.57245,"y":188.12097,"z":10.724301},"screenPosition":{"x":0.8539944,"y":0.15425935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.28677,"y":189.83702,"z":8.688957},"screenPosition":{"x":0.8957453,"y":0.17941125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.2545,"y":189.8591,"z":8.326021},"screenPosition":{"x":0.8970783,"y":0.18473932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":9.284789},"screenPosition":{"x":0.86832756,"y":0.17604943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.63474,"y":193.01855,"z":-1.6290731},"screenPosition":{"x":0.99563587,"y":0.32180357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.62292,"y":193.02663,"z":-4.1198463},"screenPosition":{"x":1.0080621,"y":0.35813943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.50247,"y":193.10902,"z":-6.9321394},"screenPosition":{"x":1.0241605,"y":0.39904767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.87582,"y":193.53757,"z":-9.149469},"screenPosition":{"x":1.0418125,"y":0.43031782},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.4,"y":193.86299,"z":-11.436834},"screenPosition":{"x":1.0581504,"y":0.46288097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.98694,"y":194.1455,"z":-13.881175},"screenPosition":{"x":1.0745624,"y":0.49784973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.70255,"y":194.33998,"z":-15.85458},"screenPosition":{"x":1.0872738,"y":0.5261691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.11633,"y":194.74089,"z":-18.322584},"screenPosition":{"x":1.1030439,"y":0.56069493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.40393,"y":195.2281,"z":-20.348434},"screenPosition":{"x":1.1233633,"y":0.589493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.19907,"y":195.36821,"z":-23.104673},"screenPosition":{"x":1.1390066,"y":0.6293908},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.80133,"y":195.64021,"z":-25.279045},"screenPosition":{"x":1.1539383,"y":0.66044307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":5.086368},"screenPosition":{"x":0.8954082,"y":0.23577987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.8295,"y":186.57394,"z":-24.237381},"screenPosition":{"x":0.98599726,"y":0.6669091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.77576,"y":191.46306,"z":-17.626034},"screenPosition":{"x":0.91861135,"y":0.611176},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.02307,"y":188.20265,"z":-18.434906},"screenPosition":{"x":0.96348155,"y":0.5823643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.1978,"y":189.21396,"z":-19.023844},"screenPosition":{"x":1.0204365,"y":0.5858844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.5838,"y":190.3178,"z":-21.15628},"screenPosition":{"x":1.0485098,"y":0.6141469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.69418,"y":190.9262,"z":-23.626558},"screenPosition":{"x":1.0702769,"y":0.6486414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.95206,"y":190.74983,"z":-26.683247},"screenPosition":{"x":1.0823032,"y":0.6937567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.18488,"y":189.22281,"z":-29.172937},"screenPosition":{"x":1.0699042,"y":0.73412424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.98328,"y":188.52048,"z":-28.238705},"screenPosition":{"x":1.0294574,"y":0.72655696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.75763,"y":190.1989,"z":4.4962716},"screenPosition":{"x":0.9214459,"y":0.23974134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.40067,"y":186.33963,"z":-23.618652},"screenPosition":{"x":0.9966529,"y":0.66053104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.0879,"y":191.13939,"z":-17.626034},"screenPosition":{"x":0.9293632,"y":0.607205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.76883,"y":189.5776,"z":-17.626034},"screenPosition":{"x":0.9768781,"y":0.57740647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.4087,"y":189.75365,"z":-19.36941},"screenPosition":{"x":1.0259475,"y":0.5884966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.5879,"y":190.99889,"z":-20.890076},"screenPosition":{"x":1.0581435,"y":0.60847527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.4529,"y":191.7751,"z":-23.175755},"screenPosition":{"x":1.0817055,"y":0.6398339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.45624,"y":191.77283,"z":-26.03836},"screenPosition":{"x":1.0955815,"y":0.6816582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.1021,"y":191.33112,"z":-28.545086},"screenPosition":{"x":1.1006777,"y":0.7194339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.07156,"y":189.98419,"z":-31.108267},"screenPosition":{"x":1.0915256,"y":0.7604036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.80368,"y":189.32721,"z":-29.897049},"screenPosition":{"x":1.0507774,"y":0.7517906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.49194,"y":188.1726,"z":-27.5236},"screenPosition":{"x":1.0207179,"y":0.7201402},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.3382,"y":187.06625,"z":-25.27509},"screenPosition":{"x":1.0163611,"y":0.68282723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.75308,"y":187.46642,"z":-22.496529},"screenPosition":{"x":1.009277,"y":0.6411892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.68616,"y":189.66159,"z":-18.074974},"screenPosition":{"x":0.97156,"y":0.5987382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.56693,"y":188.58891,"z":-16.86147},"screenPosition":{"x":0.9708283,"y":0.56017154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.79788,"y":189.16815,"z":-14.15804},"screenPosition":{"x":0.94754577,"y":0.5296043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.09286,"y":190.24805,"z":-10.750127},"screenPosition":{"x":0.89512044,"y":0.49309206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.9927,"y":192.08311,"z":-10.277551},"screenPosition":{"x":0.8318826,"y":0.50874186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.77676,"y":192.92259,"z":-12.006242},"screenPosition":{"x":0.80421865,"y":0.54256916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.54803,"y":192.34442,"z":-15.700211},"screenPosition":{"x":0.8495595,"y":0.5911703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.0968,"y":189.66983,"z":-19.623253},"screenPosition":{"x":0.8764177,"y":0.61458546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.81857,"y":186.05382,"z":-23.844849},"screenPosition":{"x":0.99101454,"y":0.6639873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.58255,"y":187.58304,"z":-23.6981},"screenPosition":{"x":1.0169879,"y":0.6584371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.23373,"y":189.1894,"z":-21.822187},"screenPosition":{"x":1.0336428,"y":0.62682825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.14847,"y":189.93161,"z":-18.416872},"screenPosition":{"x":1.0290003,"y":0.57513905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.23004,"y":189.19191,"z":-15.423429},"screenPosition":{"x":1.0025843,"y":0.53334546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.44592,"y":188.53198,"z":-13.455396},"screenPosition":{"x":0.9548635,"y":0.50985116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.42795,"y":189.46461,"z":-11.371768},"screenPosition":{"x":0.9241586,"y":0.49254477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.93536,"y":190.64449,"z":-8.921744},"screenPosition":{"x":0.86883044,"y":0.47066677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.84305,"y":192.0127,"z":-6.7647185},"screenPosition":{"x":0.8095119,"y":0.45554867},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.44055,"y":193.70549,"z":-5.7649283},"screenPosition":{"x":0.7560727,"y":0.46275878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.22913,"y":194.5471,"z":-7.526674},"screenPosition":{"x":0.7366857,"y":0.49883887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.57135,"y":193.2965,"z":-11.099324},"screenPosition":{"x":0.79558104,"y":0.53565955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.3273,"y":192.24055,"z":-12.902655},"screenPosition":{"x":0.8394121,"y":0.54902583},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.9737,"y":191.13306,"z":-10.990282},"screenPosition":{"x":0.86689687,"y":0.50747746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.40765,"y":190.86671,"z":-8.609583},"screenPosition":{"x":0.86417145,"y":0.46942562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.6951,"y":191.00198,"z":-5.3781414},"screenPosition":{"x":0.8439743,"y":0.4238815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.59518,"y":192.3666,"z":-2.581931},"screenPosition":{"x":0.7850665,"y":0.39980462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.32684,"y":194.12253,"z":-1.3093559},"screenPosition":{"x":0.7205686,"y":0.40279508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.54117,"y":195.16447,"z":-3.237285},"screenPosition":{"x":0.69205225,"y":0.4433192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.92975,"y":193.93568,"z":-7.553182},"screenPosition":{"x":0.7571194,"y":0.49171156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.06577,"y":192.1175,"z":-7.9847207},"screenPosition":{"x":0.81959754,"y":0.4756696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.57474,"y":190.94534,"z":-5.5015},"screenPosition":{"x":0.845252,"y":0.42486605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.47403,"y":192.3096,"z":-1.4778906},"screenPosition":{"x":0.78159386,"y":0.38297564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.5591,"y":194.23183,"z":0.81191576},"screenPosition":{"x":0.7066293,"y":0.3731498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.95966,"y":195.83194,"z":0.52594835},"screenPosition":{"x":0.65488046,"y":0.39699325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.6574,"y":189.57259,"z":12.406675},"screenPosition":{"x":0.79607785,"y":0.14873166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.30707,"y":188.9372,"z":10.149406},"screenPosition":{"x":0.8321686,"y":0.17228079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.90503,"y":193.92406,"z":-7.9417467},"screenPosition":{"x":0.75791657,"y":0.496981},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.60995,"y":196.13794,"z":4.51513},"screenPosition":{"x":0.62533075,"y":0.34247804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.70157,"y":196.6516,"z":6.926625},"screenPosition":{"x":0.5958687,"y":0.3135607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.8576,"y":197.19557,"z":9.667889},"screenPosition":{"x":0.55926406,"y":0.2804161},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.03204,"y":196.33655,"z":11.57039},"screenPosition":{"x":0.5844457,"y":0.2418523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.07947,"y":194.94722,"z":11.713179},"screenPosition":{"x":0.62989014,"y":0.22269118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.68433,"y":193.82019,"z":9.488548},"screenPosition":{"x":0.6781298,"y":0.2413382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.88358,"y":193.91396,"z":6.777534},"screenPosition":{"x":0.6950676,"y":0.28947312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.0507,"y":195.40422,"z":6.160254},"screenPosition":{"x":0.6417013,"y":0.30942774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.5532,"y":196.58179,"z":7.567352},"screenPosition":{"x":0.59575695,"y":0.30334464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.81107,"y":197.64421,"z":10.167647},"screenPosition":{"x":0.54783654,"y":0.27841586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.05008,"y":197.7567,"z":12.232914},"screenPosition":{"x":0.53406394,"y":0.24962775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.02972,"y":197.27657,"z":14.0917845},"screenPosition":{"x":0.52558476,"y":0.20467775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.34103,"y":195.8831,"z":15.781958},"screenPosition":{"x":0.55444944,"y":0.19399531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.97476,"y":193.97414,"z":16.504541},"screenPosition":{"x":0.5982347,"y":0.1530513},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.49042,"y":193.54904,"z":15.828833},"screenPosition":{"x":0.62913465,"y":0.16635533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.29767,"y":193.1677,"z":14.220032},"screenPosition":{"x":0.6607166,"y":0.15466727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.68716,"y":192.4099,"z":11.243787},"screenPosition":{"x":0.71471494,"y":0.19855729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.19897,"y":193.12126,"z":9.078314},"screenPosition":{"x":0.69793123,"y":0.23913622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.84442,"y":195.30717,"z":10.718762},"screenPosition":{"x":0.6227694,"y":0.24164198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.02905,"y":193.9824,"z":13.105248},"screenPosition":{"x":0.65516543,"y":0.19049722},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.06015,"y":192.5854,"z":10.935368},"screenPosition":{"x":0.7121048,"y":0.20502633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.46146,"y":191.83313,"z":8.702991},"screenPosition":{"x":0.73821574,"y":0.2293531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.72717,"y":191.48761,"z":6.2238035},"screenPosition":{"x":0.76923704,"y":0.26046965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.15466,"y":191.21823,"z":4.5216775},"screenPosition":{"x":0.78778136,"y":0.28194204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.48596,"y":190.43301,"z":1.592453},"screenPosition":{"x":0.8224693,"y":0.3150346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.9895,"y":190.66997,"z":-2.3163881},"screenPosition":{"x":0.8328596,"y":0.37465873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.08966,"y":195.42256,"z":-0.073677644},"screenPosition":{"x":0.6648567,"y":0.40010697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.20102,"y":195.47496,"z":-3.3715289},"screenPosition":{"x":0.68567777,"y":0.4495421},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.79953,"y":193.8744,"z":-6.441449},"screenPosition":{"x":0.75361377,"y":0.47469592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.7349,"y":192.43234,"z":-6.1771994},"screenPosition":{"x":0.8003566,"y":0.4531341},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.0179,"y":191.62442,"z":-5.098911},"screenPosition":{"x":0.8206962,"y":0.4273205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.468,"y":190.42456,"z":-3.1888785},"screenPosition":{"x":0.8462413,"y":0.3843953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":14.466952},"screenPosition":{"x":0.8431417,"y":0.100345805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.44342,"y":192.2952,"z":3.3035128},"screenPosition":{"x":0.75191003,"y":0.312936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.97275,"y":193.95592,"z":5.2287903},"screenPosition":{"x":0.6839623,"y":0.30494657},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.9389,"y":195.82217,"z":3.8173254},"screenPosition":{"x":0.63376814,"y":0.34856784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.8591,"y":194.84354,"z":-0.031606898},"screenPosition":{"x":0.6904146,"y":0.39299044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.22253,"y":193.13235,"z":-1.4309214},"screenPosition":{"x":0.7540422,"y":0.39240152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.62317,"y":190.96812,"z":-1.3384061},"screenPosition":{"x":0.82380277,"y":0.36437073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.28268,"y":190.8079,"z":1.997488},"screenPosition":{"x":0.8093837,"y":0.31373605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.71225,"y":191.01004,"z":5.4636264},"screenPosition":{"x":0.78203267,"y":0.2659775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.78296,"y":191.98442,"z":7.683259},"screenPosition":{"x":0.72896,"y":0.24224955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.07748,"y":193.53464,"z":9.085394},"screenPosition":{"x":0.68502855,"y":0.24403192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.63828,"y":194.73962,"z":10.520564},"screenPosition":{"x":0.6425808,"y":0.23756194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-379.08722,"y":195.89197,"z":10.350069},"screenPosition":{"x":0.60514057,"y":0.25421542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-381.15805,"y":196.8664,"z":9.431111},"screenPosition":{"x":0.5731193,"y":0.279766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.59018,"y":197.54028,"z":8.706841},"screenPosition":{"x":0.5583878,"y":0.29847866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.84506,"y":198.13077,"z":8.455149},"screenPosition":{"x":0.5400016,"y":0.30941272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.89856,"y":198.62648,"z":10.774334},"screenPosition":{"x":0.5122676,"y":0.28162545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.5281,"y":190.45285,"z":13.9325905},"screenPosition":{"x":0.7683583,"y":0.13503174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.40594,"y":197.92413,"z":5.160432},"screenPosition":{"x":0.55835855,"y":0.35476863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.91428,"y":196.75168,"z":5.71144},"screenPosition":{"x":0.5991347,"y":0.3325448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-380.04187,"y":196.34117,"z":7.9987698},"screenPosition":{"x":0.59987813,"y":0.29411888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-382.05402,"y":197.288,"z":10.327735},"screenPosition":{"x":0.5553648,"y":0.2718632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-384.4252,"y":198.40375,"z":11.348492},"screenPosition":{"x":0.51570296,"y":0.2705595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-385.7409,"y":199.02286,"z":8.761054},"screenPosition":{"x":0.5088893,"y":0.3159079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-383.8585,"y":198.13708,"z":6.123588},"screenPosition":{"x":0.5511235,"y":0.34355092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.47427,"y":192.47581,"z":15.9419565},"screenPosition":{"x":0.6687988,"y":0.13738509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.79254,"y":191.84813,"z":15.365886},"screenPosition":{"x":0.7025329,"y":0.13919163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.26855,"y":190.80127,"z":12.947281},"screenPosition":{"x":0.7615764,"y":0.15370777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.0537,"y":190.22963,"z":10.308872},"screenPosition":{"x":0.7719067,"y":0.18241028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.8175,"y":191.05957,"z":7.7276306},"screenPosition":{"x":0.7781664,"y":0.23314835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-371.47247,"y":192.30887,"z":6.1746206},"screenPosition":{"x":0.7444259,"y":0.27117506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.4549,"y":193.71223,"z":8.955189},"screenPosition":{"x":0.68176144,"y":0.2479689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-376.1857,"y":194.52666,"z":10.726041},"screenPosition":{"x":0.64645827,"y":0.232129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.7822,"y":195.2779,"z":12.827334},"screenPosition":{"x":0.61349416,"y":0.21047898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-378.77026,"y":195.56497,"z":15.399549},"screenPosition":{"x":0.5791097,"y":0.18486887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-377.5263,"y":193.35814,"z":16.872404},"screenPosition":{"x":0.6000799,"y":0.1446256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.1913,"y":190.89989,"z":18.107307},"screenPosition":{"x":0.6355833,"y":0.10864116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.1592,"y":189.03336,"z":18.934175},"screenPosition":{"x":0.67246056,"y":0.080456935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.99194,"y":187.22333,"z":19.224564},"screenPosition":{"x":0.7218314,"y":0.056792267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.04977,"y":186.90001,"z":18.2607},"screenPosition":{"x":0.76685846,"y":0.057854634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.01685,"y":189.41898,"z":15.95859},"screenPosition":{"x":0.769699,"y":0.09973439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.42386,"y":191.3449,"z":14.224043},"screenPosition":{"x":0.72051287,"y":0.13253748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-372.76575,"y":192.91742,"z":14.847026},"screenPosition":{"x":0.67100143,"y":0.150861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-374.17096,"y":192.12315,"z":16.560057},"screenPosition":{"x":0.65737325,"y":0.13008438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-375.58658,"y":191.58238,"z":17.65632},"screenPosition":{"x":0.63506794,"y":0.11802841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-373.8495,"y":187.77837,"z":20.369162},"screenPosition":{"x":0.6610689,"y":0.058021557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-370.86777,"y":185.08794,"z":21.538546},"screenPosition":{"x":0.6969355,"y":0.010570121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.59497,"y":185.07573,"z":21.850336},"screenPosition":{"x":0.723178,"y":0.009355829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.0984,"y":187.07396,"z":22.058031},"screenPosition":{"x":0.75153494,"y":-0.0069613345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.63464,"y":186.86351,"z":21.830458},"screenPosition":{"x":0.78417,"y":-0.004783276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.33405,"y":189.12079,"z":21.29506},"screenPosition":{"x":0.822097,"y":-0.002617768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.644,"y":189.59271,"z":17.747261},"screenPosition":{"x":0.8457255,"y":0.048205506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.08875,"y":188.51514,"z":15.945359},"screenPosition":{"x":0.8287542,"y":0.07648061},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.70703,"y":188.70413,"z":16.048056},"screenPosition":{"x":0.78880817,"y":0.09078302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-367.2605,"y":186.99411,"z":18.265303},"screenPosition":{"x":0.7649189,"y":0.058662012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.5543,"y":186.76216,"z":21.29645},"screenPosition":{"x":0.7608182,"y":0.010644505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.64078,"y":187.54321,"z":22.361341},"screenPosition":{"x":0.79249483,"y":-0.014317784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.79517,"y":189.48933,"z":22.664536},"screenPosition":{"x":0.82110524,"y":-0.02349605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.2129,"y":190.57146,"z":20.697506},"screenPosition":{"x":0.8477228,"y":0.0024554536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.10742,"y":189.95969,"z":17.595978},"screenPosition":{"x":0.8534522,"y":0.049195778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.69037,"y":188.19319,"z":17.156889},"screenPosition":{"x":0.82821715,"y":0.060010128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.16046,"y":187.8717,"z":21.01956},"screenPosition":{"x":0.80239546,"y":0.0049565965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.74573,"y":189.52315,"z":22.925446},"screenPosition":{"x":0.8208103,"y":-0.027523758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.06863,"y":190.6701,"z":21.488794},"screenPosition":{"x":0.84690243,"y":-0.0097556915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.21378,"y":191.93866,"z":16.969896},"screenPosition":{"x":0.889217,"y":0.05293825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.83157,"y":192.88394,"z":16.556513},"screenPosition":{"x":0.906392,"y":0.05650291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.379,"y":194.56126,"z":15.223372},"screenPosition":{"x":0.93978155,"y":0.07158779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.02066,"y":194.80632,"z":12.089132},"screenPosition":{"x":0.95894593,"y":0.11673291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.20258,"y":192.63022,"z":10.038445},"screenPosition":{"x":0.93399984,"y":0.15238619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.7319,"y":192.2682,"z":13.718903},"screenPosition":{"x":0.91030437,"y":0.09956779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.3323,"y":192.5415,"z":16.365377},"screenPosition":{"x":0.9004141,"y":0.06049031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.15012,"y":194.03389,"z":14.796254},"screenPosition":{"x":0.93339634,"y":0.07920774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.41754,"y":194.5349,"z":12.274087},"screenPosition":{"x":0.9533809,"y":0.114790834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.42624,"y":193.84506,"z":9.784891},"screenPosition":{"x":0.9547226,"y":0.15291046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.85803,"y":192.86584,"z":7.4376416},"screenPosition":{"x":0.95042044,"y":0.18976328},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.23053,"y":191.9272,"z":7.3196173},"screenPosition":{"x":0.93593454,"y":0.19394432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.09445,"y":190.65247,"z":4.075046},"screenPosition":{"x":0.9312521,"y":0.24467917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.62476,"y":192.34148,"z":1.1775477},"screenPosition":{"x":0.97243226,"y":0.28258637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.18234,"y":194.01184,"z":6.12849},"screenPosition":{"x":0.975169,"y":0.20588842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.70526,"y":192.97032,"z":18.147535},"screenPosition":{"x":0.8990967,"y":0.033257116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.05432,"y":189.996,"z":7.813294},"screenPosition":{"x":0.90099686,"y":0.19194344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.3097,"y":191.18916,"z":3.2020679},"screenPosition":{"x":0.9441055,"y":0.25602728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.31763,"y":193.23543,"z":4.455198},"screenPosition":{"x":0.9708449,"y":0.23236492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.90176,"y":190.10033,"z":-6.575395},"screenPosition":{"x":0.97415614,"y":0.4017113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-8.323803},"screenPosition":{"x":0.9539074,"y":0.43328446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.55167,"y":189.52284,"z":-8.974352},"screenPosition":{"x":0.9105735,"y":0.45823768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.21182,"y":190.77458,"z":-5.873422},"screenPosition":{"x":0.84907275,"y":0.4278202},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-369.24405,"y":191.26028,"z":-2.8466306},"screenPosition":{"x":0.8230929,"y":0.39007455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-368.57477,"y":190.94536,"z":-0.68180734},"screenPosition":{"x":0.8230301,"y":0.3545792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.40884,"y":189.9262,"z":1.8021963},"screenPosition":{"x":0.83798504,"y":0.30579692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.84943,"y":190.1335,"z":2.9028997},"screenPosition":{"x":0.8325692,"y":0.29223406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.5491,"y":189.05109,"z":6.3253474},"screenPosition":{"x":0.84778935,"y":0.22922964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.7743,"y":190.18752,"z":4.682459},"screenPosition":{"x":0.92084056,"y":0.23702276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-361.03857,"y":189.32286,"z":9.355011},"screenPosition":{"x":0.8838883,"y":0.17107141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.84018,"y":189.45854,"z":8.84532},"screenPosition":{"x":0.8878532,"y":0.17823775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.62952,"y":191.65431,"z":-6.634676},"screenPosition":{"x":0.999376,"y":0.3985098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.48676,"y":193.11977,"z":-3.88608},"screenPosition":{"x":1.0095286,"y":0.35452121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.0306,"y":192.74782,"z":-0.049189612},"screenPosition":{"x":0.98491365,"y":0.29944354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.36844,"y":190.46507,"z":1.0282943},"screenPosition":{"x":0.94305336,"y":0.2896781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":0.017918073},"screenPosition":{"x":0.9133656,"y":0.31142446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.75293,"y":188.67644,"z":-1.9208958},"screenPosition":{"x":0.90440106,"y":0.3447948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.34946,"y":189.42769,"z":-4.190353},"screenPosition":{"x":0.8904827,"y":0.38718116},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.61124,"y":189.55086,"z":-7.2352805},"screenPosition":{"x":0.9011907,"y":0.43317688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-363.25763,"y":188.44339,"z":-10.759448},"screenPosition":{"x":0.95509714,"y":0.4710484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.79718,"y":189.48796,"z":-12.527081},"screenPosition":{"x":0.9932574,"y":0.4902593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.21112,"y":191.25658,"z":-11.873616},"screenPosition":{"x":1.0184566,"y":0.4760839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.11588,"y":191.32172,"z":-8.399257},"screenPosition":{"x":1.0026159,"y":0.42515823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.54727,"y":190.34277,"z":-5.0656204},"screenPosition":{"x":0.97070825,"y":0.37902114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-7.1753945},"screenPosition":{"x":0.95816475,"y":0.41392204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.49362,"y":189.02498,"z":-9.117804},"screenPosition":{"x":0.91990703,"y":0.45328018},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-364.27048,"y":188.91998,"z":-12.3959},"screenPosition":{"x":0.9467528,"y":0.50073946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-14.595242},"screenPosition":{"x":0.9843873,"y":0.52490073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.64948,"y":190.27286,"z":-15.340759},"screenPosition":{"x":1.019525,"y":0.52930844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.41025,"y":191.80428,"z":-14.333432},"screenPosition":{"x":1.0391988,"y":0.51058453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.6065,"y":193.03786,"z":-11.637154},"screenPosition":{"x":1.0458858,"y":0.4679671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.23242,"y":191.9259,"z":-8.284311},"screenPosition":{"x":1.0117189,"y":0.4218949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.9604,"y":189.37634,"z":-9.518053},"screenPosition":{"x":0.97684246,"y":0.44659406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-362.34567,"y":188.90794,"z":-12.3248825},"screenPosition":{"x":0.973353,"y":0.4917342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-360.86813,"y":189.43942,"z":-15.763211},"screenPosition":{"x":1.0076861,"y":0.53756994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-359.45184,"y":190.40804,"z":-17.684639},"screenPosition":{"x":1.0330852,"y":0.56319517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.7501,"y":191.57187,"z":-18.888338},"screenPosition":{"x":1.0576074,"y":0.57773316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.29694,"y":192.56567,"z":-20.054943},"screenPosition":{"x":1.0792216,"y":0.59217423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-354.65826,"y":193.68637,"z":-22.191137},"screenPosition":{"x":1.1075839,"y":0.6204475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.61914,"y":194.39703,"z":-24.978397},"screenPosition":{"x":1.1325319,"y":0.65930504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.1148,"y":192.69023,"z":3.12832},"screenPosition":{"x":0.9685467,"y":0.25317565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.7181,"y":192.27763,"z":-32.422916},"screenPosition":{"x":1.1347102,"y":0.77360564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.6796,"y":191.62007,"z":-34.511734},"screenPosition":{"x":1.1343123,"y":0.80584127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.50888,"y":192.94832,"z":-37.34067},"screenPosition":{"x":1.1450502,"y":0.85105264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.0564,"y":193.94167,"z":-39.382633},"screenPosition":{"x":1.1736602,"y":0.87454695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.0331,"y":194.79782,"z":-37.933826},"screenPosition":{"x":1.2001432,"y":0.84687096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.78104,"y":195.65411,"z":-35.469395},"screenPosition":{"x":1.2036875,"y":0.80927235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.26105,"y":195.32582,"z":-31.62068},"screenPosition":{"x":1.1797153,"y":0.75390774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-353.7942,"y":194.2773,"z":-30.156456},"screenPosition":{"x":1.155777,"y":0.73526204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-356.86273,"y":192.17874,"z":-30.792227},"screenPosition":{"x":1.1251981,"y":0.7500426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.7363,"y":190.8974,"z":-33.484604},"screenPosition":{"x":1.1177261,"y":0.792728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-358.58414,"y":192.21297,"z":-35.829052},"screenPosition":{"x":1.1259056,"y":0.83089495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.42123,"y":193.00826,"z":-37.463882},"screenPosition":{"x":1.141617,"y":0.85852903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-357.45877,"y":191.77116,"z":-40.254845},"screenPosition":{"x":1.1646472,"y":0.88934445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-355.79855,"y":192.90659,"z":-42.792507},"screenPosition":{"x":1.1951967,"y":0.923444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-352.42703,"y":195.21231,"z":-41.385525},"screenPosition":{"x":1.2253524,"y":0.8968545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-351.8311,"y":195.61987,"z":-38.444542},"screenPosition":{"x":1.2175978,"y":0.8528244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.45764,"y":189.4786,"z":12.568554},"screenPosition":{"x":0.7985426,"y":0.14529738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.35767,"y":189.43155,"z":12.649598},"screenPosition":{"x":0.79977673,"y":0.14357786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.47717,"y":189.4878,"z":12.746507},"screenPosition":{"x":0.79971814,"y":0.14365943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.47717,"y":189.4878,"z":12.746507},"screenPosition":{"x":0.79971814,"y":0.14365943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.11777,"y":189.31866,"z":12.455084},"screenPosition":{"x":0.7998902,"y":0.14341968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.15738,"y":189.33731,"z":12.811894},"screenPosition":{"x":0.8022483,"y":0.14013407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-366.07053,"y":189.76698,"z":13.227606},"screenPosition":{"x":0.7994077,"y":0.14409201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-365.23785,"y":189.37517,"z":12.552457},"screenPosition":{"x":0.7998341,"y":0.14349794},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20190825-090547/brain-CBB34C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.6721887669198021,0.0,0.7403798090350897,0.0,0.5934785477468522,0.5978786604089682,-0.5388175208657056,0.0,-0.4426572884197471,0.8015866187927401,0.4018873195079675,0.0,-403.8534598928989,298.76815913356245,37.87200991897574,1.0]},"baseImage":"20190825-090547/base.webp","version":0,"savedAt":1.56672423283E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070731/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070731/base.webp new file mode 100644 index 0000000000..a08423a1a6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070731/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070731/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070731/brain-C78490-0.webp new file mode 100644 index 0000000000..d05b76e026 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070731/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070755/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070755/base.webp new file mode 100644 index 0000000000..5629e7cd41 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070755/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070755/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070755/brain-C78490-0.webp new file mode 100644 index 0000000000..31e0c299cb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070755/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/base.webp new file mode 100644 index 0000000000..bd20ab4300 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/brain-C78490-0.webp new file mode 100644 index 0000000000..91ae66cdbd Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-0.webp new file mode 100644 index 0000000000..27d1339af7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-1.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-1.webp new file mode 100644 index 0000000000..ed09f348eb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-1.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-10.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-10.webp new file mode 100644 index 0000000000..a12acf302f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-10.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-100.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-100.webp new file mode 100644 index 0000000000..0cba8bc8eb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-100.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-101.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-101.webp new file mode 100644 index 0000000000..9a83260a6e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-101.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-102.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-102.webp new file mode 100644 index 0000000000..5a18a8645a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-102.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-103.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-103.webp new file mode 100644 index 0000000000..6a24deb5f6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-103.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-104.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-104.webp new file mode 100644 index 0000000000..2252cbfbf9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-104.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-105.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-105.webp new file mode 100644 index 0000000000..86f3e30b87 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-105.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-106.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-106.webp new file mode 100644 index 0000000000..26c306f65c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-106.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-107.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-107.webp new file mode 100644 index 0000000000..7171e6b841 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-107.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-108.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-108.webp new file mode 100644 index 0000000000..a5875d115f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-108.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-109.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-109.webp new file mode 100644 index 0000000000..e29abe563a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-109.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-11.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-11.webp new file mode 100644 index 0000000000..9bb9f24b10 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-11.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-110.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-110.webp new file mode 100644 index 0000000000..5d684e4fce Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-110.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-111.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-111.webp new file mode 100644 index 0000000000..e94705bf78 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-111.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-112.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-112.webp new file mode 100644 index 0000000000..691cf2b5c2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-112.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-113.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-113.webp new file mode 100644 index 0000000000..4daf4e750b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-113.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-114.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-114.webp new file mode 100644 index 0000000000..195ef3458b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-114.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-115.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-115.webp new file mode 100644 index 0000000000..c3991fb169 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-115.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-116.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-116.webp new file mode 100644 index 0000000000..7ea0a8e312 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-116.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-117.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-117.webp new file mode 100644 index 0000000000..577c53b247 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-117.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-118.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-118.webp new file mode 100644 index 0000000000..1fda3b63ae Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-118.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-119.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-119.webp new file mode 100644 index 0000000000..69fb1fbcfb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-119.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-12.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-12.webp new file mode 100644 index 0000000000..fc5c35b978 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-12.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-120.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-120.webp new file mode 100644 index 0000000000..61c002c3f5 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-120.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-121.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-121.webp new file mode 100644 index 0000000000..bbc2570713 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-121.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-122.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-122.webp new file mode 100644 index 0000000000..eac066b5bc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-122.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-123.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-123.webp new file mode 100644 index 0000000000..6e378422ca Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-123.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-124.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-124.webp new file mode 100644 index 0000000000..e855fa0be2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-124.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-125.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-125.webp new file mode 100644 index 0000000000..31e9145907 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-125.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-126.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-126.webp new file mode 100644 index 0000000000..27e61a89ac Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-126.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-127.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-127.webp new file mode 100644 index 0000000000..e500c2a2ae Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-127.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-128.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-128.webp new file mode 100644 index 0000000000..c8c46cc27f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-128.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-129.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-129.webp new file mode 100644 index 0000000000..e390e9c863 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-129.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-13.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-13.webp new file mode 100644 index 0000000000..c30b9bc111 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-13.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-130.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-130.webp new file mode 100644 index 0000000000..5a58834cec Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-130.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-131.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-131.webp new file mode 100644 index 0000000000..d2a2e45fb7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-131.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-132.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-132.webp new file mode 100644 index 0000000000..b2d26a37de Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-132.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-133.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-133.webp new file mode 100644 index 0000000000..d300e31a87 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-133.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-134.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-134.webp new file mode 100644 index 0000000000..f946bb253c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-134.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-135.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-135.webp new file mode 100644 index 0000000000..9e1d2fcdc8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-135.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-136.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-136.webp new file mode 100644 index 0000000000..f24d403740 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-136.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-137.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-137.webp new file mode 100644 index 0000000000..16c9882a75 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-137.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-138.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-138.webp new file mode 100644 index 0000000000..bac0208592 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-138.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-139.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-139.webp new file mode 100644 index 0000000000..67ebb3898a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-139.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-14.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-14.webp new file mode 100644 index 0000000000..bfd5d23f4f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-14.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-140.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-140.webp new file mode 100644 index 0000000000..f461daab09 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-140.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-141.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-141.webp new file mode 100644 index 0000000000..8977404429 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-141.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-142.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-142.webp new file mode 100644 index 0000000000..1e9a7572f7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-142.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-143.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-143.webp new file mode 100644 index 0000000000..7ed2ada4df Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-143.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-144.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-144.webp new file mode 100644 index 0000000000..26c0671446 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-144.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-145.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-145.webp new file mode 100644 index 0000000000..4f76e23dac Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-145.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-146.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-146.webp new file mode 100644 index 0000000000..d9ce4e8775 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-146.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-147.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-147.webp new file mode 100644 index 0000000000..278b04b48c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-147.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-148.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-148.webp new file mode 100644 index 0000000000..ec2453f24e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-148.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-149.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-149.webp new file mode 100644 index 0000000000..70365f404a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-149.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-15.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-15.webp new file mode 100644 index 0000000000..ca9f09c719 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-15.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-150.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-150.webp new file mode 100644 index 0000000000..9fac8769ad Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-150.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-151.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-151.webp new file mode 100644 index 0000000000..b471da03bb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-151.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-152.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-152.webp new file mode 100644 index 0000000000..5bd3780f42 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-152.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-153.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-153.webp new file mode 100644 index 0000000000..21b9d0bc27 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-153.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-154.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-154.webp new file mode 100644 index 0000000000..2a2224e2d2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-154.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-155.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-155.webp new file mode 100644 index 0000000000..dd8b7ffd0b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-155.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-156.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-156.webp new file mode 100644 index 0000000000..7d6c5d5c77 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-156.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-157.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-157.webp new file mode 100644 index 0000000000..013f6e7c88 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-157.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-158.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-158.webp new file mode 100644 index 0000000000..e69cf2cfe7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-158.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-159.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-159.webp new file mode 100644 index 0000000000..43861184c9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-159.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-16.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-16.webp new file mode 100644 index 0000000000..f9110b2452 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-16.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-160.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-160.webp new file mode 100644 index 0000000000..6e16d2fa66 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-160.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-161.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-161.webp new file mode 100644 index 0000000000..60e3003b03 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-161.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-162.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-162.webp new file mode 100644 index 0000000000..b48b0ad322 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-162.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-163.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-163.webp new file mode 100644 index 0000000000..03e15a6fe8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-163.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-164.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-164.webp new file mode 100644 index 0000000000..db5e0b1814 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-164.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-165.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-165.webp new file mode 100644 index 0000000000..bd6fb33cf9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-165.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-166.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-166.webp new file mode 100644 index 0000000000..e1ab53f1ba Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-166.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-167.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-167.webp new file mode 100644 index 0000000000..83315e992a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-167.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-168.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-168.webp new file mode 100644 index 0000000000..1259ecfded Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-168.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-169.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-169.webp new file mode 100644 index 0000000000..5aa2cf651c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-169.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-17.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-17.webp new file mode 100644 index 0000000000..96eecf77b0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-17.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-170.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-170.webp new file mode 100644 index 0000000000..ec06674649 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-170.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-171.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-171.webp new file mode 100644 index 0000000000..04b4308cc0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-171.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-172.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-172.webp new file mode 100644 index 0000000000..133d5bfaeb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-172.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-173.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-173.webp new file mode 100644 index 0000000000..deab90e3b8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-173.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-174.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-174.webp new file mode 100644 index 0000000000..1ee72159c2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-174.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-175.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-175.webp new file mode 100644 index 0000000000..72346fbc50 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-175.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-176.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-176.webp new file mode 100644 index 0000000000..77587363e3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-176.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-177.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-177.webp new file mode 100644 index 0000000000..fa16b217bb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-177.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-178.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-178.webp new file mode 100644 index 0000000000..243d5a78ba Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-178.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-179.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-179.webp new file mode 100644 index 0000000000..786c5cbfd1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-179.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-18.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-18.webp new file mode 100644 index 0000000000..23e1d3e749 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-18.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-180.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-180.webp new file mode 100644 index 0000000000..b0216e74a1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-180.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-181.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-181.webp new file mode 100644 index 0000000000..214b01f4ae Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-181.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-182.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-182.webp new file mode 100644 index 0000000000..228b710e80 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-182.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-183.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-183.webp new file mode 100644 index 0000000000..c747c4c2ef Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-183.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-184.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-184.webp new file mode 100644 index 0000000000..bdee1b5ebf Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-184.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-185.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-185.webp new file mode 100644 index 0000000000..646335aad8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-185.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-186.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-186.webp new file mode 100644 index 0000000000..8621b99895 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-186.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-187.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-187.webp new file mode 100644 index 0000000000..60aeb7d3c6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-187.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-188.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-188.webp new file mode 100644 index 0000000000..caee38e5bc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-188.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-189.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-189.webp new file mode 100644 index 0000000000..c8572172aa Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-189.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-19.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-19.webp new file mode 100644 index 0000000000..752942e281 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-19.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-190.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-190.webp new file mode 100644 index 0000000000..15b4cd2e1d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-190.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-191.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-191.webp new file mode 100644 index 0000000000..44fb29192b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-191.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-192.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-192.webp new file mode 100644 index 0000000000..6d997d2edf Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-192.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-193.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-193.webp new file mode 100644 index 0000000000..43e69cd8c8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-193.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-194.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-194.webp new file mode 100644 index 0000000000..0c6d3a2693 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-194.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-195.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-195.webp new file mode 100644 index 0000000000..e50a96eadf Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-195.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-196.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-196.webp new file mode 100644 index 0000000000..d65597eebf Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-196.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-197.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-197.webp new file mode 100644 index 0000000000..6abc8a2434 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-197.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-198.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-198.webp new file mode 100644 index 0000000000..a4e725d067 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-198.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-199.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-199.webp new file mode 100644 index 0000000000..42fed341a3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-199.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-2.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-2.webp new file mode 100644 index 0000000000..69867fd550 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-2.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-20.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-20.webp new file mode 100644 index 0000000000..fa89045c9c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-20.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-200.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-200.webp new file mode 100644 index 0000000000..0a2744964b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-200.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-201.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-201.webp new file mode 100644 index 0000000000..d9e1f8890d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-201.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-202.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-202.webp new file mode 100644 index 0000000000..d310a644e3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-202.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-203.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-203.webp new file mode 100644 index 0000000000..89249ace76 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-203.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-204.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-204.webp new file mode 100644 index 0000000000..6f89450640 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-204.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-205.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-205.webp new file mode 100644 index 0000000000..f1a21bed38 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-205.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-206.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-206.webp new file mode 100644 index 0000000000..fc69c3ae9a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-206.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-207.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-207.webp new file mode 100644 index 0000000000..f85cc9fe9a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-207.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-208.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-208.webp new file mode 100644 index 0000000000..e397a16482 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-208.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-209.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-209.webp new file mode 100644 index 0000000000..8823120305 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-209.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-21.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-21.webp new file mode 100644 index 0000000000..92b74ffab9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-21.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-210.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-210.webp new file mode 100644 index 0000000000..eab42cb652 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-210.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-211.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-211.webp new file mode 100644 index 0000000000..d11227e12e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-211.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-212.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-212.webp new file mode 100644 index 0000000000..aa26b51cfa Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-212.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-213.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-213.webp new file mode 100644 index 0000000000..592ccdce46 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-213.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-214.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-214.webp new file mode 100644 index 0000000000..9d84514116 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-214.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-215.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-215.webp new file mode 100644 index 0000000000..224aab6dc3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-215.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-216.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-216.webp new file mode 100644 index 0000000000..93e845e4a9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-216.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-217.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-217.webp new file mode 100644 index 0000000000..be982c1fcc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-217.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-218.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-218.webp new file mode 100644 index 0000000000..c8ffcf2772 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-218.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-219.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-219.webp new file mode 100644 index 0000000000..f89636635c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-219.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-22.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-22.webp new file mode 100644 index 0000000000..4a24bdf06c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-22.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-220.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-220.webp new file mode 100644 index 0000000000..f275044766 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-220.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-221.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-221.webp new file mode 100644 index 0000000000..dd8db0cf3c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-221.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-222.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-222.webp new file mode 100644 index 0000000000..83984af30f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-222.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-223.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-223.webp new file mode 100644 index 0000000000..3a190d8d5c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-223.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-224.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-224.webp new file mode 100644 index 0000000000..51f0d182ce Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-224.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-225.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-225.webp new file mode 100644 index 0000000000..94cc6df5a4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-225.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-226.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-226.webp new file mode 100644 index 0000000000..ed23a061ed Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-226.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-227.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-227.webp new file mode 100644 index 0000000000..91421a95c7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-227.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-228.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-228.webp new file mode 100644 index 0000000000..823c555a10 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-228.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-229.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-229.webp new file mode 100644 index 0000000000..6ca08d3e18 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-229.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-23.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-23.webp new file mode 100644 index 0000000000..71b64ddde6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-23.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-230.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-230.webp new file mode 100644 index 0000000000..326bf40ad8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-230.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-231.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-231.webp new file mode 100644 index 0000000000..a4211dde8f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-231.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-232.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-232.webp new file mode 100644 index 0000000000..6ab1bc77af Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-232.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-233.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-233.webp new file mode 100644 index 0000000000..4adb817892 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-233.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-234.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-234.webp new file mode 100644 index 0000000000..1821ea3428 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-234.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-235.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-235.webp new file mode 100644 index 0000000000..f9c937901b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-235.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-236.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-236.webp new file mode 100644 index 0000000000..504aecbac8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-236.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-237.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-237.webp new file mode 100644 index 0000000000..0b6444e6c5 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-237.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-238.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-238.webp new file mode 100644 index 0000000000..a55d143906 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-238.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-239.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-239.webp new file mode 100644 index 0000000000..984b58e650 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-239.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-24.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-24.webp new file mode 100644 index 0000000000..5b7e2cbe28 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-24.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-240.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-240.webp new file mode 100644 index 0000000000..a839a00e90 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-240.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-241.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-241.webp new file mode 100644 index 0000000000..5e44c03794 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-241.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-242.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-242.webp new file mode 100644 index 0000000000..cb0dda07af Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-242.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-243.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-243.webp new file mode 100644 index 0000000000..fb47370b4d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-243.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-244.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-244.webp new file mode 100644 index 0000000000..778513edd1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-244.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-245.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-245.webp new file mode 100644 index 0000000000..f0003aacad Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-245.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-246.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-246.webp new file mode 100644 index 0000000000..75ff5e3443 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-246.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-247.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-247.webp new file mode 100644 index 0000000000..50af975a8b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-247.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-248.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-248.webp new file mode 100644 index 0000000000..0b8ae4f65c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-248.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-249.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-249.webp new file mode 100644 index 0000000000..0c57160af4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-249.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-25.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-25.webp new file mode 100644 index 0000000000..ed2e86af32 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-25.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-250.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-250.webp new file mode 100644 index 0000000000..9caac50b3a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-250.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-251.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-251.webp new file mode 100644 index 0000000000..31b2cd8991 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-251.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-252.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-252.webp new file mode 100644 index 0000000000..91f5cd1216 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-252.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-253.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-253.webp new file mode 100644 index 0000000000..24829a2dfe Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-253.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-254.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-254.webp new file mode 100644 index 0000000000..c55c418169 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-254.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-255.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-255.webp new file mode 100644 index 0000000000..3ef19e4dba Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-255.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-256.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-256.webp new file mode 100644 index 0000000000..7ea01bfda6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-256.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-257.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-257.webp new file mode 100644 index 0000000000..b372e65358 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-257.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-258.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-258.webp new file mode 100644 index 0000000000..36894b2bf4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-258.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-259.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-259.webp new file mode 100644 index 0000000000..c787ce3c28 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-259.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-26.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-26.webp new file mode 100644 index 0000000000..354028782a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-26.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-260.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-260.webp new file mode 100644 index 0000000000..76cd30918e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-260.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-261.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-261.webp new file mode 100644 index 0000000000..59e380d76e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-261.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-262.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-262.webp new file mode 100644 index 0000000000..d588b254e0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-262.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-263.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-263.webp new file mode 100644 index 0000000000..935872a073 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-263.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-264.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-264.webp new file mode 100644 index 0000000000..25b8f46eca Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-264.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-265.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-265.webp new file mode 100644 index 0000000000..b1af6a3cdc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-265.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-266.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-266.webp new file mode 100644 index 0000000000..9f4d1eb88e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-266.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-267.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-267.webp new file mode 100644 index 0000000000..e5444aae3e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-267.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-268.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-268.webp new file mode 100644 index 0000000000..1e8ca57be2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-268.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-269.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-269.webp new file mode 100644 index 0000000000..dc10da31f7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-269.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-27.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-27.webp new file mode 100644 index 0000000000..cd5732dc9c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-27.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-270.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-270.webp new file mode 100644 index 0000000000..e3bd946b83 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-270.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-271.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-271.webp new file mode 100644 index 0000000000..4663cbc70f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-271.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-272.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-272.webp new file mode 100644 index 0000000000..f5cf60e80a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-272.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-273.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-273.webp new file mode 100644 index 0000000000..945082bd41 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-273.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-274.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-274.webp new file mode 100644 index 0000000000..13d0dedc7a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-274.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-275.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-275.webp new file mode 100644 index 0000000000..fe3ee46cea Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-275.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-276.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-276.webp new file mode 100644 index 0000000000..42edd6e28c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-276.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-277.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-277.webp new file mode 100644 index 0000000000..40ae85d38a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-277.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-278.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-278.webp new file mode 100644 index 0000000000..a5cb7ac987 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-278.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-279.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-279.webp new file mode 100644 index 0000000000..78a0b12360 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-279.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-28.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-28.webp new file mode 100644 index 0000000000..a0075b8ea9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-28.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-280.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-280.webp new file mode 100644 index 0000000000..db016f2398 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-280.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-281.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-281.webp new file mode 100644 index 0000000000..ff0fc4b1c4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-281.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-282.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-282.webp new file mode 100644 index 0000000000..4f7626b85d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-282.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-283.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-283.webp new file mode 100644 index 0000000000..ea9526c907 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-283.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-284.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-284.webp new file mode 100644 index 0000000000..cbab24c080 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-284.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-285.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-285.webp new file mode 100644 index 0000000000..cce560d2fe Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-285.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-286.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-286.webp new file mode 100644 index 0000000000..54cf5c4714 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-286.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-287.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-287.webp new file mode 100644 index 0000000000..fbfdf7aa95 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-287.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-288.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-288.webp new file mode 100644 index 0000000000..799bb40966 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-288.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-289.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-289.webp new file mode 100644 index 0000000000..06b8c04fb6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-289.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-29.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-29.webp new file mode 100644 index 0000000000..1424ec7c5f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-29.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-290.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-290.webp new file mode 100644 index 0000000000..5e8b4f8d11 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-290.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-291.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-291.webp new file mode 100644 index 0000000000..e8fc76fd02 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-291.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-292.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-292.webp new file mode 100644 index 0000000000..d9561db717 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-292.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-293.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-293.webp new file mode 100644 index 0000000000..5fab7dbb94 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-293.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-294.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-294.webp new file mode 100644 index 0000000000..a27b08b853 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-294.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-295.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-295.webp new file mode 100644 index 0000000000..971d55f4fc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-295.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-296.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-296.webp new file mode 100644 index 0000000000..b4b51d233f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-296.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-297.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-297.webp new file mode 100644 index 0000000000..9a280e9116 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-297.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-298.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-298.webp new file mode 100644 index 0000000000..62c0ea5155 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-298.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-299.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-299.webp new file mode 100644 index 0000000000..bfb10ca329 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-299.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-3.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-3.webp new file mode 100644 index 0000000000..f8af422ad3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-3.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-30.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-30.webp new file mode 100644 index 0000000000..b3b5c8e5f1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-30.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-300.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-300.webp new file mode 100644 index 0000000000..784fbee657 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-300.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-301.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-301.webp new file mode 100644 index 0000000000..0bb4e0179a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-301.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-302.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-302.webp new file mode 100644 index 0000000000..c91c69129f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-302.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-303.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-303.webp new file mode 100644 index 0000000000..f74043fcc0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-303.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-304.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-304.webp new file mode 100644 index 0000000000..621b06b466 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-304.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-305.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-305.webp new file mode 100644 index 0000000000..a2de7190ca Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-305.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-306.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-306.webp new file mode 100644 index 0000000000..3036c1d297 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-306.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-307.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-307.webp new file mode 100644 index 0000000000..4d9e32552a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-307.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-308.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-308.webp new file mode 100644 index 0000000000..2a1088c464 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-308.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-309.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-309.webp new file mode 100644 index 0000000000..f847fc0f18 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-309.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-31.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-31.webp new file mode 100644 index 0000000000..4525d1c0f9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-31.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-310.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-310.webp new file mode 100644 index 0000000000..4553c4256c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-310.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-311.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-311.webp new file mode 100644 index 0000000000..65f08c5f8a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-311.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-312.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-312.webp new file mode 100644 index 0000000000..0cea2822dc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-312.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-313.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-313.webp new file mode 100644 index 0000000000..89bd3b02d1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-313.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-314.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-314.webp new file mode 100644 index 0000000000..ebf40656a1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-314.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-315.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-315.webp new file mode 100644 index 0000000000..7cb0a370a1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-315.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-316.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-316.webp new file mode 100644 index 0000000000..ce0de853be Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-316.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-317.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-317.webp new file mode 100644 index 0000000000..de4c5dbf3e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-317.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-318.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-318.webp new file mode 100644 index 0000000000..3ae772bcaa Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-318.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-319.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-319.webp new file mode 100644 index 0000000000..ffee15e070 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-319.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-32.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-32.webp new file mode 100644 index 0000000000..c602fdd0d6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-32.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-320.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-320.webp new file mode 100644 index 0000000000..b28676b02e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-320.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-321.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-321.webp new file mode 100644 index 0000000000..29f1fffdd1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-321.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-322.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-322.webp new file mode 100644 index 0000000000..a581702a4a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-322.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-323.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-323.webp new file mode 100644 index 0000000000..e0d788887e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-323.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-324.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-324.webp new file mode 100644 index 0000000000..9623ae5248 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-324.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-325.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-325.webp new file mode 100644 index 0000000000..70636212f0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-325.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-326.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-326.webp new file mode 100644 index 0000000000..e280e6c96d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-326.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-327.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-327.webp new file mode 100644 index 0000000000..88ca0fc8b4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-327.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-328.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-328.webp new file mode 100644 index 0000000000..b039221450 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-328.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-329.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-329.webp new file mode 100644 index 0000000000..9435a2e93e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-329.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-33.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-33.webp new file mode 100644 index 0000000000..eaeb01f9bb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-33.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-330.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-330.webp new file mode 100644 index 0000000000..25bb461e00 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-330.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-331.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-331.webp new file mode 100644 index 0000000000..aa42c21089 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-331.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-332.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-332.webp new file mode 100644 index 0000000000..9a9152e817 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-332.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-333.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-333.webp new file mode 100644 index 0000000000..92d0a8f8ee Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-333.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-334.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-334.webp new file mode 100644 index 0000000000..14cad34102 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-334.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-335.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-335.webp new file mode 100644 index 0000000000..e4230de754 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-335.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-336.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-336.webp new file mode 100644 index 0000000000..dc06a8d311 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-336.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-337.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-337.webp new file mode 100644 index 0000000000..67dfa521cf Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-337.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-338.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-338.webp new file mode 100644 index 0000000000..4881e87b2b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-338.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-339.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-339.webp new file mode 100644 index 0000000000..08b5ac6931 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-339.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-34.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-34.webp new file mode 100644 index 0000000000..4ae537e7ea Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-34.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-340.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-340.webp new file mode 100644 index 0000000000..5c185b2837 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-340.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-341.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-341.webp new file mode 100644 index 0000000000..d60c1054f4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-341.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-342.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-342.webp new file mode 100644 index 0000000000..33d69332ac Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-342.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-343.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-343.webp new file mode 100644 index 0000000000..835ca2e56b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-343.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-344.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-344.webp new file mode 100644 index 0000000000..081e4de3da Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-344.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-345.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-345.webp new file mode 100644 index 0000000000..168e1c0afe Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-345.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-346.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-346.webp new file mode 100644 index 0000000000..69b40733f7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-346.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-347.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-347.webp new file mode 100644 index 0000000000..b6a02a72f3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-347.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-348.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-348.webp new file mode 100644 index 0000000000..4a421749ee Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-348.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-349.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-349.webp new file mode 100644 index 0000000000..ee4e0b2bdd Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-349.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-35.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-35.webp new file mode 100644 index 0000000000..3a4895246e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-35.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-350.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-350.webp new file mode 100644 index 0000000000..e34c7165db Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-350.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-351.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-351.webp new file mode 100644 index 0000000000..04ab07b731 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-351.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-352.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-352.webp new file mode 100644 index 0000000000..5ef24b65a7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-352.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-353.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-353.webp new file mode 100644 index 0000000000..42618de967 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-353.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-354.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-354.webp new file mode 100644 index 0000000000..01bac29ba5 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-354.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-355.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-355.webp new file mode 100644 index 0000000000..4cea23d388 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-355.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-356.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-356.webp new file mode 100644 index 0000000000..92f1a95418 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-356.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-357.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-357.webp new file mode 100644 index 0000000000..d557d5dc6b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-357.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-358.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-358.webp new file mode 100644 index 0000000000..1cf65c6de9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-358.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-359.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-359.webp new file mode 100644 index 0000000000..36e6d6bd07 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-359.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-36.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-36.webp new file mode 100644 index 0000000000..ae8a3f8494 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-36.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-37.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-37.webp new file mode 100644 index 0000000000..6a39b623b5 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-37.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-38.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-38.webp new file mode 100644 index 0000000000..d03c3363c8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-38.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-39.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-39.webp new file mode 100644 index 0000000000..7ea4ca0c1f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-39.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-4.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-4.webp new file mode 100644 index 0000000000..56ef062391 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-4.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-40.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-40.webp new file mode 100644 index 0000000000..35d105ffe4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-40.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-41.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-41.webp new file mode 100644 index 0000000000..3b7489f457 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-41.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-42.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-42.webp new file mode 100644 index 0000000000..f146cd416f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-42.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-43.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-43.webp new file mode 100644 index 0000000000..1a37cdc8d0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-43.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-44.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-44.webp new file mode 100644 index 0000000000..b86a684caa Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-44.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-45.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-45.webp new file mode 100644 index 0000000000..2411160fd0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-45.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-46.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-46.webp new file mode 100644 index 0000000000..76644d3cfe Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-46.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-47.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-47.webp new file mode 100644 index 0000000000..9f94ca70a7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-47.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-48.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-48.webp new file mode 100644 index 0000000000..5856ba31a8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-48.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-49.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-49.webp new file mode 100644 index 0000000000..5700840c0d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-49.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-5.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-5.webp new file mode 100644 index 0000000000..4455fb97d4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-5.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-50.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-50.webp new file mode 100644 index 0000000000..342cc9b669 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-50.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-51.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-51.webp new file mode 100644 index 0000000000..5712728b28 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-51.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-52.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-52.webp new file mode 100644 index 0000000000..72e35658cb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-52.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-53.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-53.webp new file mode 100644 index 0000000000..84c12bfd93 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-53.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-54.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-54.webp new file mode 100644 index 0000000000..bf4c11a850 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-54.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-55.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-55.webp new file mode 100644 index 0000000000..23b28525b0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-55.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-56.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-56.webp new file mode 100644 index 0000000000..23378af86a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-56.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-57.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-57.webp new file mode 100644 index 0000000000..361178efda Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-57.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-58.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-58.webp new file mode 100644 index 0000000000..96c01401d1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-58.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-59.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-59.webp new file mode 100644 index 0000000000..62e45c826b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-59.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-6.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-6.webp new file mode 100644 index 0000000000..b21d5b9fce Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-6.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-60.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-60.webp new file mode 100644 index 0000000000..7845731ed6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-60.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-61.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-61.webp new file mode 100644 index 0000000000..6d632602e9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-61.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-62.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-62.webp new file mode 100644 index 0000000000..d42292b265 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-62.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-63.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-63.webp new file mode 100644 index 0000000000..abeb35656a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-63.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-64.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-64.webp new file mode 100644 index 0000000000..7ce338e5c2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-64.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-65.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-65.webp new file mode 100644 index 0000000000..74cf334d9d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-65.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-66.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-66.webp new file mode 100644 index 0000000000..3ed20e5f5d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-66.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-67.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-67.webp new file mode 100644 index 0000000000..6b99004101 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-67.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-68.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-68.webp new file mode 100644 index 0000000000..5b99215006 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-68.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-69.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-69.webp new file mode 100644 index 0000000000..6b6f474be2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-69.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-7.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-7.webp new file mode 100644 index 0000000000..a62fc30d88 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-7.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-70.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-70.webp new file mode 100644 index 0000000000..998e0ea482 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-70.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-71.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-71.webp new file mode 100644 index 0000000000..350b94894e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-71.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-72.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-72.webp new file mode 100644 index 0000000000..aa2a7d077b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-72.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-73.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-73.webp new file mode 100644 index 0000000000..021b640398 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-73.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-74.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-74.webp new file mode 100644 index 0000000000..09c996766f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-74.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-75.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-75.webp new file mode 100644 index 0000000000..c40b535ec3 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-75.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-76.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-76.webp new file mode 100644 index 0000000000..0a0f80273e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-76.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-77.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-77.webp new file mode 100644 index 0000000000..86c4bf4794 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-77.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-78.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-78.webp new file mode 100644 index 0000000000..ab4aa4f6ed Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-78.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-79.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-79.webp new file mode 100644 index 0000000000..7a5c3785d9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-79.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-8.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-8.webp new file mode 100644 index 0000000000..8149630c19 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-8.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-80.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-80.webp new file mode 100644 index 0000000000..7670810e1e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-80.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-81.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-81.webp new file mode 100644 index 0000000000..14f5835680 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-81.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-82.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-82.webp new file mode 100644 index 0000000000..3cb1898ddc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-82.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-83.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-83.webp new file mode 100644 index 0000000000..196bce7533 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-83.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-84.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-84.webp new file mode 100644 index 0000000000..02c916fb07 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-84.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-85.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-85.webp new file mode 100644 index 0000000000..b8d3fd2f49 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-85.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-86.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-86.webp new file mode 100644 index 0000000000..e481133fa7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-86.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-87.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-87.webp new file mode 100644 index 0000000000..73fcf07f4b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-87.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-88.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-88.webp new file mode 100644 index 0000000000..c646a7db14 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-88.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-89.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-89.webp new file mode 100644 index 0000000000..77f7018916 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-89.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-9.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-9.webp new file mode 100644 index 0000000000..7950acab96 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-9.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-90.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-90.webp new file mode 100644 index 0000000000..1d0793c704 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-90.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-91.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-91.webp new file mode 100644 index 0000000000..75b40e3f05 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-91.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-92.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-92.webp new file mode 100644 index 0000000000..1c5d9e3b21 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-92.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-93.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-93.webp new file mode 100644 index 0000000000..fd10f13b78 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-93.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-94.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-94.webp new file mode 100644 index 0000000000..ea0884a64f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-94.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-95.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-95.webp new file mode 100644 index 0000000000..5a2141779c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-95.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-96.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-96.webp new file mode 100644 index 0000000000..0683221372 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-96.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-97.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-97.webp new file mode 100644 index 0000000000..010c2b03e0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-97.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-98.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-98.webp new file mode 100644 index 0000000000..14efab518c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-98.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-99.webp b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-99.webp new file mode 100644 index 0000000000..881e651092 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-070912/pixel-99.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-072348/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-072348/base.webp new file mode 100644 index 0000000000..703e30a675 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-072348/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-072348/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-072348/brain-C78490-0.webp new file mode 100644 index 0000000000..e08a702f00 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-072348/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-072432/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-072432/base.webp new file mode 100644 index 0000000000..02068ce090 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-072432/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-072432/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-072432/brain-C78490-0.webp new file mode 100644 index 0000000000..7e4c40fa7d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-072432/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-074450/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-074450/base.webp new file mode 100644 index 0000000000..3437166bf4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-074450/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-074450/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-074450/brain-C78490-0.webp new file mode 100644 index 0000000000..06ea706c60 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-074450/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-074740/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-074740/base.webp new file mode 100644 index 0000000000..37b7aab72e Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-074740/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-074740/brain-C78490-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-074740/brain-C78490-0.webp new file mode 100644 index 0000000000..cca3d541a0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-074740/brain-C78490-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-080145/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-080145/base.webp new file mode 100644 index 0000000000..6b9269ad6d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-080145/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-080145/brain-CB8980-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-080145/brain-CB8980-0.webp new file mode 100644 index 0000000000..ad271aac62 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-080145/brain-CB8980-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-081354/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-081354/base.webp new file mode 100644 index 0000000000..8cf056682c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-081354/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-081354/brain-CB8980-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-081354/brain-CB8980-0.webp new file mode 100644 index 0000000000..1a1c8e7acc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-081354/brain-CB8980-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-082308/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-082308/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-082308/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-082308/brain-C784EC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-082308/brain-C784EC-0.webp new file mode 100644 index 0000000000..173200ca5f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-082308/brain-C784EC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-083200/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-083200/base.webp new file mode 100644 index 0000000000..709f341ffb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-083200/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-083200/brain-CB29B8-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-083200/brain-CB29B8-0.webp new file mode 100644 index 0000000000..d46f38fa2a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-083200/brain-CB29B8-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-083301/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-083301/base.webp new file mode 100644 index 0000000000..0d178474a7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-083301/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-083301/brain-CB29B8-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-083301/brain-CB29B8-0.webp new file mode 100644 index 0000000000..5222b7c8df Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-083301/brain-CB29B8-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-090044/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-090044/base.webp new file mode 100644 index 0000000000..a8053979be Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-090044/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-090044/brain-CB3DCC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-090044/brain-CB3DCC-0.webp new file mode 100644 index 0000000000..3929df9cf2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-090044/brain-CB3DCC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-090910/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-090910/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-090910/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-090910/brain-CB971C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-090910/brain-CB971C-0.webp new file mode 100644 index 0000000000..be895ca04b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-090910/brain-CB971C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-091227/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-091227/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-091227/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-091227/brain-CB72C0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-091227/brain-CB72C0-0.webp new file mode 100644 index 0000000000..d2843e42b1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-091227/brain-CB72C0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-093335/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-093335/base.webp new file mode 100644 index 0000000000..cb81d1ccbf Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-093335/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-093335/brain-CB6B64-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-093335/brain-CB6B64-0.webp new file mode 100644 index 0000000000..0a9664a545 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-093335/brain-CB6B64-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-093429/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-093429/base.webp new file mode 100644 index 0000000000..682c796bad Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-093429/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-093429/brain-CB6B64-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-093429/brain-CB6B64-0.webp new file mode 100644 index 0000000000..ac21407a24 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-093429/brain-CB6B64-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-094540/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-094540/base.webp new file mode 100644 index 0000000000..f4f7cb2057 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-094540/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-094540/brain-C78440-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-094540/brain-C78440-0.webp new file mode 100644 index 0000000000..944eab695c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-094540/brain-C78440-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-101119/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-101119/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-101119/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-101119/brain-C783A0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-101119/brain-C783A0-0.webp new file mode 100644 index 0000000000..3c6366ce7c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-101119/brain-C783A0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-101410/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-101410/base.webp new file mode 100644 index 0000000000..fa100f981c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-101410/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-101410/brain-C783A0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-101410/brain-C783A0-0.webp new file mode 100644 index 0000000000..240d973d39 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-101410/brain-C783A0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-102326/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-102326/base.webp new file mode 100644 index 0000000000..e0116d6844 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-102326/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-102326/brain-CBBB6C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-102326/brain-CBBB6C-0.webp new file mode 100644 index 0000000000..32fe6295bc Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-102326/brain-CBBB6C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-103459/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-103459/base.webp new file mode 100644 index 0000000000..54dc0a133a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-103459/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-103459/brain-CB2624-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-103459/brain-CB2624-0.webp new file mode 100644 index 0000000000..b5889a0407 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-103459/brain-CB2624-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-103540/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-103540/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-103540/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-103540/brain-CB2624-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-103540/brain-CB2624-0.webp new file mode 100644 index 0000000000..0328313144 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-103540/brain-CB2624-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-103639/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-103639/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-103639/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-103639/brain-CB2624-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-103639/brain-CB2624-0.webp new file mode 100644 index 0000000000..c1b5508217 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-103639/brain-CB2624-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-105048/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-105048/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-105048/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-105048/brain-C784B0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-105048/brain-C784B0-0.webp new file mode 100644 index 0000000000..986d1da243 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-105048/brain-C784B0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-224134/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-224134/base.webp new file mode 100644 index 0000000000..efb24067d1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-224134/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-224134/brain-CB31D8-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-224134/brain-CB31D8-0.webp new file mode 100644 index 0000000000..b26604d270 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-224134/brain-CB31D8-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-224521/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-224521/base.webp new file mode 100644 index 0000000000..afc874cace Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-224521/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-224521/brain-CB31D8-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-224521/brain-CB31D8-0.webp new file mode 100644 index 0000000000..f8445b2ed4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-224521/brain-CB31D8-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-224613/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-224613/base.webp new file mode 100644 index 0000000000..1f8e8c1886 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-224613/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-224613/brain-CB31D8-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-224613/brain-CB31D8-0.webp new file mode 100644 index 0000000000..1fbb332b69 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-224613/brain-CB31D8-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-225754/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-225754/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-225754/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-225754/brain-C78370-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-225754/brain-C78370-0.webp new file mode 100644 index 0000000000..4106eac49d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-225754/brain-C78370-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-230806/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-230806/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-230806/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-230806/brain-CBB8D0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-230806/brain-CBB8D0-0.webp new file mode 100644 index 0000000000..1a76c07acb Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-230806/brain-CBB8D0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-231636/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-231636/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-231636/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-231636/brain-C79350-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-231636/brain-C79350-0.webp new file mode 100644 index 0000000000..4b8da279a7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-231636/brain-C79350-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-232344/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-232344/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-232344/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-232344/brain-CAFD8C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-232344/brain-CAFD8C-0.webp new file mode 100644 index 0000000000..36c8b1c458 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-232344/brain-CAFD8C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233259/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233259/base.webp new file mode 100644 index 0000000000..a8ba73a99c Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233259/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233259/brain-CAD878-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233259/brain-CAD878-0.webp new file mode 100644 index 0000000000..9918afdc10 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233259/brain-CAD878-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233420/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233420/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233420/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233420/brain-CAD878-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233420/brain-CAD878-0.webp new file mode 100644 index 0000000000..a3dab45f3d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233420/brain-CAD878-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233522/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233522/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233522/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233522/brain-CAD878-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233522/brain-CAD878-0.webp new file mode 100644 index 0000000000..41f57aef46 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233522/brain-CAD878-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233741/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233741/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233741/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233741/brain-C79344-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233741/brain-C79344-0.webp new file mode 100644 index 0000000000..5199eb873d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233741/brain-C79344-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233812/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233812/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233812/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-233812/brain-C79344-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-233812/brain-C79344-0.webp new file mode 100644 index 0000000000..0df78c4850 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-233812/brain-C79344-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-235358/base.webp b/data/mapping/BAAAHS/dwayman/images/20190823-235358/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-235358/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190823-235358/brain-CB63C0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190823-235358/brain-CB63C0-0.webp new file mode 100644 index 0000000000..33bf52e7b1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190823-235358/brain-CB63C0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-000052/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-000052/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-000052/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-000052/brain-CB63C0-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-000052/brain-CB63C0-0.webp new file mode 100644 index 0000000000..a60ff951a9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-000052/brain-CB63C0-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-001209/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-001209/base.webp new file mode 100644 index 0000000000..386cb9a328 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-001209/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-001209/brain-CB2B04-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-001209/brain-CB2B04-0.webp new file mode 100644 index 0000000000..e1d5fc899b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-001209/brain-CB2B04-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-001319/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-001319/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-001319/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-001319/brain-CB2B04-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-001319/brain-CB2B04-0.webp new file mode 100644 index 0000000000..c5c0080cb6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-001319/brain-CB2B04-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-004011/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-004011/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-004011/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-004011/brain-CB6980-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-004011/brain-CB6980-0.webp new file mode 100644 index 0000000000..f29128a652 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-004011/brain-CB6980-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-005143/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-005143/base.webp new file mode 100644 index 0000000000..85d953c302 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-005143/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-005143/brain-C78498-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-005143/brain-C78498-0.webp new file mode 100644 index 0000000000..f872ed7380 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-005143/brain-C78498-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-005303/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-005303/base.webp new file mode 100644 index 0000000000..d3f4f0f2a1 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-005303/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-005303/brain-C78498-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-005303/brain-C78498-0.webp new file mode 100644 index 0000000000..7b5db9aa8b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-005303/brain-C78498-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-011012/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-011012/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-011012/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-011012/brain-CB25A4-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-011012/brain-CB25A4-0.webp new file mode 100644 index 0000000000..3e7b95682d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-011012/brain-CB25A4-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-035740/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-035740/base.webp new file mode 100644 index 0000000000..6ab75f5e8d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-035740/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-035740/brain-C78448-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-035740/brain-C78448-0.webp new file mode 100644 index 0000000000..264cd6dbc4 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-035740/brain-C78448-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-040615/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-040615/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-040615/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-040615/brain-CB20B4-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-040615/brain-CB20B4-0.webp new file mode 100644 index 0000000000..acb4c5bf03 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-040615/brain-CB20B4-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-041411/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-041411/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-041411/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-041411/brain-CBDACC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-041411/brain-CBDACC-0.webp new file mode 100644 index 0000000000..528551df1d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-041411/brain-CBDACC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-043626/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-043626/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-043626/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-043703/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-043703/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-043703/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-043703/brain-C78480-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-043703/brain-C78480-0.webp new file mode 100644 index 0000000000..e42e3f6c8a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-043703/brain-C78480-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-054225/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-054225/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-054225/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-054225/brain-CAFBE4-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-054225/brain-CAFBE4-0.webp new file mode 100644 index 0000000000..6bef19c746 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-054225/brain-CAFBE4-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-074522/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-074522/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-074522/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-074522/brain-CAFBE4-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-074522/brain-CAFBE4-0.webp new file mode 100644 index 0000000000..7de2b7ab06 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-074522/brain-CAFBE4-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-080306/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-080306/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-080306/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-080306/brain-CAFD8C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-080306/brain-CAFD8C-0.webp new file mode 100644 index 0000000000..04a78c86e0 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-080306/brain-CAFD8C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-082235/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-082235/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-082235/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-082235/brain-CAFDEC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-082235/brain-CAFDEC-0.webp new file mode 100644 index 0000000000..5520233450 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-082235/brain-CAFDEC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-090817/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-090817/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-090817/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-090817/brain-CB486C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-090817/brain-CB486C-0.webp new file mode 100644 index 0000000000..74b6b0522b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-090817/brain-CB486C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-092352/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-092352/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-092352/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-092352/brain-C784D4-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-092352/brain-C784D4-0.webp new file mode 100644 index 0000000000..a2fc53766a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-092352/brain-C784D4-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-093320/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-093320/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-093320/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-093320/brain-CB2984-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-093320/brain-CB2984-0.webp new file mode 100644 index 0000000000..1dea6f7c82 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-093320/brain-CB2984-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-094017/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-094017/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-094017/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-094017/brain-CAE2C8-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-094017/brain-CAE2C8-0.webp new file mode 100644 index 0000000000..26a24a59ce Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-094017/brain-CAE2C8-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-095813/base.webp b/data/mapping/BAAAHS/dwayman/images/20190824-095813/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-095813/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190824-095813/brain-C79334-0.webp b/data/mapping/BAAAHS/dwayman/images/20190824-095813/brain-C79334-0.webp new file mode 100644 index 0000000000..50f4175132 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190824-095813/brain-C79334-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-055219/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-055219/base.webp new file mode 100644 index 0000000000..a76c2169be Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-055219/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-055219/brain-CB2B04-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-055219/brain-CB2B04-0.webp new file mode 100644 index 0000000000..00b974e769 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-055219/brain-CB2B04-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-055451/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-055451/base.webp new file mode 100644 index 0000000000..8930487937 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-055451/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-055451/brain-CB2B04-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-055451/brain-CB2B04-0.webp new file mode 100644 index 0000000000..7f14dd3683 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-055451/brain-CB2B04-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-061015/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-061015/base.webp new file mode 100644 index 0000000000..25fed5951a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-061015/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-061015/brain-CB61B4-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-061015/brain-CB61B4-0.webp new file mode 100644 index 0000000000..6e12185a42 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-061015/brain-CB61B4-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-062441/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-062441/base.webp new file mode 100644 index 0000000000..7ce130aeb6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-062441/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-062441/brain-CBB34C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-062441/brain-CBB34C-0.webp new file mode 100644 index 0000000000..04f92aad7b Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-062441/brain-CBB34C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-062731/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-062731/base.webp new file mode 100644 index 0000000000..f7ebf5ec19 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-062731/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-062731/brain-CBB34C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-062731/brain-CBB34C-0.webp new file mode 100644 index 0000000000..c98c9794e2 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-062731/brain-CBB34C-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-064722/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-064722/base.webp new file mode 100644 index 0000000000..43787d9c21 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-064722/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-064722/brain-CBDACC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-064722/brain-CBDACC-0.webp new file mode 100644 index 0000000000..c3dd5b008d Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-064722/brain-CBDACC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-070205/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-070205/base.webp new file mode 100644 index 0000000000..01c91cfd45 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-070205/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-070205/brain-C78470-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-070205/brain-C78470-0.webp new file mode 100644 index 0000000000..4be7b2d66f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-070205/brain-C78470-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-071120/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-071120/base.webp new file mode 100644 index 0000000000..8e100040d5 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-071120/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-071120/brain-C78470-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-071120/brain-C78470-0.webp new file mode 100644 index 0000000000..a7719cd235 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-071120/brain-C78470-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-072314/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-072314/base.webp new file mode 100644 index 0000000000..393cea97df Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-072314/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-072314/brain-C78470-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-072314/brain-C78470-0.webp new file mode 100644 index 0000000000..be716d9b55 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-072314/brain-C78470-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-073604/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-073604/base.webp new file mode 100644 index 0000000000..c5acb0ddd6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-073604/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-073604/brain-C78474-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-073604/brain-C78474-0.webp new file mode 100644 index 0000000000..92972ec4b9 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-073604/brain-C78474-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-073637/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-073637/base.webp new file mode 100644 index 0000000000..4119462c07 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-073637/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-073637/brain-C78474-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-073637/brain-C78474-0.webp new file mode 100644 index 0000000000..0ab37b2e4f Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-073637/brain-C78474-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-080923/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-080923/base.webp new file mode 100644 index 0000000000..8567409fc7 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-080923/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-080923/brain-CAFDEC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-080923/brain-CAFDEC-0.webp new file mode 100644 index 0000000000..8e32a4ccfa Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-080923/brain-CAFDEC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-080923/brain-CBDACC-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-080923/brain-CBDACC-0.webp new file mode 100644 index 0000000000..e936dedec6 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-080923/brain-CBDACC-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-084557/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-084557/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-084557/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-084557/brain-CB8E24-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-084557/brain-CB8E24-0.webp new file mode 100644 index 0000000000..41b7cb83c8 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-084557/brain-CB8E24-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-084744/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-084744/base.webp new file mode 100644 index 0000000000..5b49ff901a Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-084744/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-084744/brain-CB8E24-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-084744/brain-CB8E24-0.webp new file mode 100644 index 0000000000..d8da0e1826 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-084744/brain-CB8E24-0.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-090547/base.webp b/data/mapping/BAAAHS/dwayman/images/20190825-090547/base.webp new file mode 100644 index 0000000000..465b6c92ca Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-090547/base.webp differ diff --git a/data/mapping/BAAAHS/dwayman/images/20190825-090547/brain-CBB34C-0.webp b/data/mapping/BAAAHS/dwayman/images/20190825-090547/brain-CBB34C-0.webp new file mode 100644 index 0000000000..7ea1cc9436 Binary files /dev/null and b/data/mapping/BAAAHS/dwayman/images/20190825-090547/brain-CBB34C-0.webp differ diff --git a/data/mapping/Decom2019/202009/20200904-040157-v0.json b/data/mapping/Decom2019/202009/20200904-040157-v0.json new file mode 100644 index 0000000000..02a0fcb15a --- /dev/null +++ b/data/mapping/Decom2019/202009/20200904-040157-v0.json @@ -0,0 +1 @@ +{"startedAt":1.59919211742E12,"surfaces":[{"brainId":"CAD878","panelName":"Panel 3","pixels":[{"modelPosition":{"x":167.00903,"y":92.7313,"z":0.0},"screenPosition":{"x":0.9793548,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.9055,"y":68.539856,"z":0.0},"screenPosition":{"x":0.60219795,"y":0.2852758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.32135,"y":56.68445,"z":0.0},"screenPosition":{"x":0.21502805,"y":0.12061733},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.99573,"y":60.20903,"z":2.842171E-14},"screenPosition":{"x":0.12491093,"y":0.16956985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.11198,"y":57.6457,"z":0.0},"screenPosition":{"x":0.06483284,"y":0.13396801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.79156,"y":55.082367,"z":0.0},"screenPosition":{"x":0.058157496,"y":0.098366186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.31614,"y":53.64049,"z":0.0},"screenPosition":{"x":0.13158627,"y":0.07834016},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.5151,"y":59.40799,"z":-2.842171E-14},"screenPosition":{"x":0.11489791,"y":0.15844427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.79156,"y":59.24778,"z":0.0},"screenPosition":{"x":0.058157496,"y":0.15621915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.83031,"y":56.52424,"z":0.0},"screenPosition":{"x":0.038131468,"y":0.118392214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.27219,"y":54.281326,"z":0.0},"screenPosition":{"x":0.06817051,"y":0.08724062},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.39885,"y":55.562992,"z":0.0},"screenPosition":{"x":0.17497599,"y":0.10504153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.36009,"y":58.927364,"z":0.0},"screenPosition":{"x":0.19500202,"y":0.15176894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.59781,"y":61.330486,"z":0.0},"screenPosition":{"x":0.15828764,"y":0.18514565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.19469,"y":62.77236,"z":0.0},"screenPosition":{"x":0.10822257,"y":0.20517167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.310936,"y":61.97132,"z":0.0},"screenPosition":{"x":0.048144482,"y":0.1940461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.99052,"y":58.44674,"z":0.0},"screenPosition":{"x":0.041469138,"y":0.14509359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.91302,"y":56.68445,"z":0.0},"screenPosition":{"x":0.0815212,"y":0.12061733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.31614,"y":57.004864,"z":0.0},"screenPosition":{"x":0.13158627,"y":0.12506756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":95.77525,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.6635452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.32135,"y":59.728405,"z":0.0},"screenPosition":{"x":0.21502805,"y":0.1628945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.96217,"y":62.451942,"z":0.0},"screenPosition":{"x":0.22837874,"y":0.20072144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.36009,"y":65.015274,"z":-2.842171E-14},"screenPosition":{"x":0.19500202,"y":0.23632327},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.07323,"y":66.777565,"z":0.0},"screenPosition":{"x":0.084858865,"y":0.26079953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.471146,"y":64.53465,"z":0.0},"screenPosition":{"x":0.051482156,"y":0.22964793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.310936,"y":62.131527,"z":0.0},"screenPosition":{"x":0.048144482,"y":0.19627121},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.71406,"y":58.126324,"z":0.0},"screenPosition":{"x":0.09820955,"y":0.14064336},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.03969,"y":59.728405,"z":-2.842171E-14},"screenPosition":{"x":0.18832669,"y":0.1628945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.16113,"y":61.330486,"z":0.0},"screenPosition":{"x":0.21169038,"y":0.18514565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.80197,"y":63.73361,"z":0.0},"screenPosition":{"x":0.22504106,"y":0.21852235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.64177,"y":65.656105,"z":0.0},"screenPosition":{"x":0.2217034,"y":0.24522373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.52031,"y":68.21944,"z":0.0},"screenPosition":{"x":0.1983397,"y":0.28082556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.27739,"y":70.30215,"z":-2.842171E-14},"screenPosition":{"x":0.1516123,"y":0.30975205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.91302,"y":69.020485,"z":0.0},"screenPosition":{"x":0.0815212,"y":0.29195112},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.4376,"y":65.4959,"z":2.842171E-14},"screenPosition":{"x":0.15494996,"y":0.24299861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.36009,"y":65.816315,"z":0.0},"screenPosition":{"x":0.19500202,"y":0.24744885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.00093,"y":68.700066,"z":-2.842171E-14},"screenPosition":{"x":0.20835271,"y":0.2875009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.52031,"y":70.94298,"z":0.0},"screenPosition":{"x":0.1983397,"y":0.3186525},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.47635,"y":74.30735,"z":0.0},"screenPosition":{"x":0.13492393,"y":0.3653799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.23344,"y":76.22985,"z":0.0},"screenPosition":{"x":0.08819654,"y":0.39208126},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.99052,"y":69.3409,"z":0.0},"screenPosition":{"x":0.041469138,"y":0.29640135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.79156,"y":67.899025,"z":0.0},"screenPosition":{"x":0.058157496,"y":0.27637532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.19469,"y":67.097984,"z":0.0},"screenPosition":{"x":0.10822257,"y":0.26524976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.4376,"y":66.937775,"z":0.0},"screenPosition":{"x":0.15494996,"y":0.26302466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.36009,"y":66.777565,"z":0.0},"screenPosition":{"x":0.19500202,"y":0.26079953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.76321,"y":66.45715,"z":0.0},"screenPosition":{"x":0.24506709,"y":0.2563493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.00613,"y":65.33569,"z":0.0},"screenPosition":{"x":0.2917945,"y":0.2407735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.1432,"y":81.51672,"z":0.0},"screenPosition":{"x":0.56548357,"y":0.46551004},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.310936,"y":76.22985,"z":0.0},"screenPosition":{"x":0.048144482,"y":0.39208126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.83031,"y":78.63297,"z":2.842171E-14},"screenPosition":{"x":0.038131468,"y":0.42545798},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.310936,"y":83.279015,"z":2.842171E-14},"screenPosition":{"x":0.048144482,"y":0.4899863},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.23344,"y":86.963806,"z":0.0},"screenPosition":{"x":0.08819654,"y":0.5411639},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.62384,"y":72.06444,"z":0.0},"screenPosition":{"x":0.57549655,"y":0.3342283},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.19469,"y":93.37213,"z":0.0},"screenPosition":{"x":0.10822257,"y":0.6301685},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.91822,"y":91.12922,"z":0.0},"screenPosition":{"x":0.16496298,"y":0.5990169},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.55385,"y":91.44963,"z":0.0},"screenPosition":{"x":0.09487188,"y":0.6034671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.11718,"y":92.57109,"z":0.0},"screenPosition":{"x":0.14827463,"y":0.61904293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.32135,"y":91.93026,"z":0.0},"screenPosition":{"x":0.21502805,"y":0.61014247},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.71406,"y":81.356514,"z":0.0},"screenPosition":{"x":0.09820955,"y":0.46328494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.11718,"y":79.91464,"z":0.0},"screenPosition":{"x":0.14827463,"y":0.4432589},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.60301,"y":82.317764,"z":0.0},"screenPosition":{"x":0.24172942,"y":0.4766356},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.35489,"y":82.958595,"z":2.842171E-14},"screenPosition":{"x":0.11156024,"y":0.48553607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.59781,"y":81.997345,"z":0.0},"screenPosition":{"x":0.15828764,"y":0.47218537},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.39885,"y":73.02569,"z":-2.842171E-14},"screenPosition":{"x":0.17497599,"y":0.34757897},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.432396,"y":74.78798,"z":0.0},"screenPosition":{"x":0.071508184,"y":0.37205523},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.30342,"y":72.06444,"z":0.0},"screenPosition":{"x":0.5688212,"y":0.3342283},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.00093,"y":77.03089,"z":0.0},"screenPosition":{"x":0.20835271,"y":0.40320686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.94424,"y":71.10319,"z":0.0},"screenPosition":{"x":0.5821719,"y":0.3208776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.4457,"y":99.139626,"z":0.0},"screenPosition":{"x":0.9259521,"y":0.7102726},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.35489,"y":75.58902,"z":0.0},"screenPosition":{"x":0.11156024,"y":0.38318083},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.52031,"y":83.759636,"z":0.0},"screenPosition":{"x":0.1983397,"y":0.49666163},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.50238,"y":74.78798,"z":0.0},"screenPosition":{"x":0.55213284,"y":0.37205523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.25426,"y":75.42881,"z":2.842171E-14},"screenPosition":{"x":0.4219637,"y":0.3809557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.49196,"y":74.14715,"z":0.0},"screenPosition":{"x":0.3852493,"y":0.3631548},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.72447,"y":72.06444,"z":-2.842171E-14},"screenPosition":{"x":0.26509312,"y":0.3342283},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.95697,"y":77.03089,"z":-2.842171E-14},"screenPosition":{"x":0.14493695,"y":0.40320686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.47635,"y":79.43401,"z":0.0},"screenPosition":{"x":0.13492393,"y":0.43658355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.63656,"y":81.83714,"z":0.0},"screenPosition":{"x":0.13826162,"y":0.46996027},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.91822,"y":88.08526,"z":0.0},"screenPosition":{"x":0.16496298,"y":0.55673975},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.32135,"y":96.576294,"z":0.0},"screenPosition":{"x":0.21502805,"y":0.67467076},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.70654,"y":69.661316,"z":0.0},"screenPosition":{"x":0.6188863,"y":0.30085158},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.40405,"y":97.537544,"z":0.0},"screenPosition":{"x":0.2584178,"y":0.6880215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.71927,"y":100.90192,"z":0.0},"screenPosition":{"x":0.18165134,"y":0.73474884},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.24385,"y":103.46525,"z":0.0},"screenPosition":{"x":0.2550801,"y":0.7703507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.2051,"y":99.620255,"z":0.0},"screenPosition":{"x":0.27510613,"y":0.716948},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.88988,"y":101.062126,"z":0.0},"screenPosition":{"x":0.3518726,"y":0.736974},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":95.77525,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.6635452},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.0501,"y":97.377335,"z":0.0},"screenPosition":{"x":0.35521024,"y":0.6857964},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.08363,"y":108.11129,"z":0.0},"screenPosition":{"x":0.25174242,"y":0.834879},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.69614,"y":83.59943,"z":-2.842171E-14},"screenPosition":{"x":0.45200273,"y":0.49443653},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.15073,"y":116.281906,"z":0.0},"screenPosition":{"x":0.044806812,"y":0.94835985},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.37572,"y":84.56068,"z":0.0},"screenPosition":{"x":0.44532737,"y":0.5077872},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.94424,"y":71.10319,"z":0.0},"screenPosition":{"x":0.5821719,"y":0.3208776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.48155,"y":100.74171,"z":0.0},"screenPosition":{"x":0.21836573,"y":0.73252374},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.03448,"y":87.92505,"z":0.0},"screenPosition":{"x":0.10488489,"y":0.5545146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.5926,"y":86.963806,"z":-2.842171E-14},"screenPosition":{"x":0.07484585,"y":0.5411639},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.509895,"y":82.798386,"z":0.0},"screenPosition":{"x":0.031456124,"y":0.48331097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.15073,"y":79.59422,"z":-2.842171E-14},"screenPosition":{"x":0.044806812,"y":0.43880868},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.59781,"y":81.196304,"z":0.0},"screenPosition":{"x":0.15828764,"y":0.4610598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.22592,"y":78.79318,"z":0.0},"screenPosition":{"x":0.60887325,"y":0.4276831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.19469,"y":76.71048,"z":-2.842171E-14},"screenPosition":{"x":0.10822257,"y":0.39875662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.19469,"y":75.10839,"z":0.0},"screenPosition":{"x":0.10822257,"y":0.37650546},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.04489,"y":70.46236,"z":0.0},"screenPosition":{"x":0.27176848,"y":0.31197715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.60301,"y":68.21944,"z":0.0},"screenPosition":{"x":0.24172942,"y":0.28082556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.00093,"y":65.816315,"z":0.0},"screenPosition":{"x":0.20835271,"y":0.24744885},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.84593,"y":57.6457,"z":0.0},"screenPosition":{"x":0.28845683,"y":0.13396801},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.72968,"y":63.252987,"z":-2.842171E-14},"screenPosition":{"x":0.3485349,"y":0.21184702},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.00093,"y":61.01007,"z":0.0},"screenPosition":{"x":0.20835271,"y":0.18069541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.4376,"y":59.24778,"z":0.0},"screenPosition":{"x":0.15494996,"y":0.15621915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.29822,"y":82.798386,"z":0.0},"screenPosition":{"x":0.48537943,"y":0.48331097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.75802,"y":53.64049,"z":-2.842171E-14},"screenPosition":{"x":0.16162531,"y":0.07834016},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.24905,"y":60.529446,"z":2.842171E-14},"screenPosition":{"x":0.3385219,"y":0.17402007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.3653,"y":62.932568,"z":0.0},"screenPosition":{"x":0.2784438,"y":0.20739679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.84073,"y":63.73361,"z":0.0},"screenPosition":{"x":0.20501503,"y":0.21852235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.59781,"y":61.170277,"z":2.842171E-14},"screenPosition":{"x":0.15828764,"y":0.18292053},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.94424,"y":71.10319,"z":0.0},"screenPosition":{"x":0.5821719,"y":0.3208776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.24385,"y":54.441532,"z":0.0},"screenPosition":{"x":0.2550801,"y":0.08946573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.1276,"y":55.723198,"z":0.0},"screenPosition":{"x":0.3151582,"y":0.10726665},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.48676,"y":65.4959,"z":0.0},"screenPosition":{"x":0.30180752,"y":0.24299861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.44281,"y":65.4959,"z":0.0},"screenPosition":{"x":0.23839176,"y":0.24299861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.36009,"y":62.451942,"z":0.0},"screenPosition":{"x":0.19500202,"y":0.20072144},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.77364,"y":60.20903,"z":0.0},"screenPosition":{"x":0.41195068,"y":0.16956985},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.81238,"y":65.816315,"z":0.0},"screenPosition":{"x":0.39192465,"y":0.24744885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.01134,"y":67.738815,"z":0.0},"screenPosition":{"x":0.37523627,"y":0.27415022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.72968,"y":69.3409,"z":0.0},"screenPosition":{"x":0.3485349,"y":0.29640135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.76843,"y":70.94298,"z":0.0},"screenPosition":{"x":0.32850888,"y":0.3186525},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.85634,"y":78.79318,"z":0.0},"screenPosition":{"x":0.4553404,"y":0.4276831},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.48676,"y":78.79318,"z":0.0},"screenPosition":{"x":0.30180752,"y":0.4276831},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.40926,"y":84.72089,"z":0.0},"screenPosition":{"x":0.34185958,"y":0.5100123},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.8951,"y":76.87068,"z":0.0},"screenPosition":{"x":0.43531436,"y":0.40098172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.0501,"y":78.79318,"z":0.0},"screenPosition":{"x":0.35521024,"y":0.4276831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.40926,"y":81.67693,"z":2.842171E-14},"screenPosition":{"x":0.34185958,"y":0.46773514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.9055,"y":92.7313,"z":0.0},"screenPosition":{"x":0.60219795,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.69614,"y":83.439224,"z":0.0},"screenPosition":{"x":0.45200273,"y":0.4922114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.0553,"y":80.71568,"z":0.0},"screenPosition":{"x":0.43865204,"y":0.45438448},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.00613,"y":95.29463,"z":0.0},"screenPosition":{"x":0.2917945,"y":0.6568699},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.0553,"y":104.26629,"z":0.0},"screenPosition":{"x":0.43865204,"y":0.78147626},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.2878,"y":115.16045,"z":-2.842171E-14},"screenPosition":{"x":0.31849587,"y":0.932784},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.74529,"y":69.020485,"z":-2.842171E-14},"screenPosition":{"x":0.59886026,"y":0.29195112},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.38092,"y":109.39295,"z":-2.842171E-14},"screenPosition":{"x":0.52876914,"y":0.8526799},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.78404,"y":80.55547,"z":0.0},"screenPosition":{"x":0.57883424,"y":0.45215935},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.17676,"y":99.299835,"z":2.842171E-14},"screenPosition":{"x":0.46201575,"y":0.7124977},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.46362,"y":72.38486,"z":0.0},"screenPosition":{"x":0.5721589,"y":0.33867854},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.29822,"y":98.01817,"z":0.0},"screenPosition":{"x":0.48537943,"y":0.6946968},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.0709,"y":93.53234,"z":0.0},"screenPosition":{"x":0.68897736,"y":0.6323936},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.66779,"y":88.72609,"z":0.0},"screenPosition":{"x":0.6389123,"y":0.5656402},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.38612,"y":67.899025,"z":0.0},"screenPosition":{"x":0.6122109,"y":0.27637532},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.9003,"y":85.041306,"z":0.0},"screenPosition":{"x":0.51875615,"y":0.51446253},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.81758,"y":91.77005,"z":0.0},"screenPosition":{"x":0.4753664,"y":0.60791737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.70134,"y":93.05171,"z":2.842171E-14},"screenPosition":{"x":0.5354445,"y":0.6257183},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.66258,"y":95.29463,"z":0.0},"screenPosition":{"x":0.5554705,"y":0.6568699},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.8951,"y":87.60464,"z":0.0},"screenPosition":{"x":0.43531436,"y":0.5500644},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.69092,"y":95.45484,"z":0.0},"screenPosition":{"x":0.36856094,"y":0.659095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.25426,"y":94.33338,"z":0.0},"screenPosition":{"x":0.4219637,"y":0.64351916},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.983,"y":74.62777,"z":0.0},"screenPosition":{"x":0.5621459,"y":0.36983013},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.17155,"y":87.44443,"z":0.0},"screenPosition":{"x":0.37857395,"y":0.5478393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.76843,"y":85.201515,"z":0.0},"screenPosition":{"x":0.32850888,"y":0.5166877},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.38612,"y":79.75443,"z":0.0},"screenPosition":{"x":0.6122109,"y":0.44103378},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.24905,"y":104.10609,"z":-2.842171E-14},"screenPosition":{"x":0.3385219,"y":0.77925116},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.0657,"y":79.91464,"z":0.0},"screenPosition":{"x":0.6055356,"y":0.4432589},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.9055,"y":68.539856,"z":0.0},"screenPosition":{"x":0.60219795,"y":0.2852758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.95987,"y":79.91464,"z":0.0},"screenPosition":{"x":0.83249724,"y":0.4432589},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.32655,"y":78.95339,"z":0.0},"screenPosition":{"x":0.29846984,"y":0.42990822},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.9726,"y":78.63297,"z":0.0},"screenPosition":{"x":0.3952623,"y":0.42545798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.54634,"y":78.31256,"z":0.0},"screenPosition":{"x":0.6155486,"y":0.42100775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.17155,"y":73.98694,"z":0.0},"screenPosition":{"x":0.37857395,"y":0.36092967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.37051,"y":72.22465,"z":-2.842171E-14},"screenPosition":{"x":0.3618856,"y":0.3364534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.94424,"y":80.55547,"z":-2.842171E-14},"screenPosition":{"x":0.5821719,"y":0.45215935},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.93384,"y":63.252987,"z":2.842171E-14},"screenPosition":{"x":0.41528833,"y":0.21184702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.85114,"y":61.6509,"z":0.0},"screenPosition":{"x":0.37189862,"y":0.18959588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.80717,"y":61.81111,"z":0.0},"screenPosition":{"x":0.30848286,"y":0.191821},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.45322,"y":60.369236,"z":2.842171E-14},"screenPosition":{"x":0.40527532,"y":0.17179497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.46362,"y":72.86548,"z":0.0},"screenPosition":{"x":0.5721589,"y":0.34535387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.9778,"y":87.12401,"z":-2.842171E-14},"screenPosition":{"x":0.4787041,"y":0.543389},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.2878,"y":55.402782,"z":0.0},"screenPosition":{"x":0.31849587,"y":0.10281642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.96739,"y":58.606945,"z":0.0},"screenPosition":{"x":0.31182054,"y":0.1473187},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.61342,"y":63.73361,"z":0.0},"screenPosition":{"x":0.408613,"y":0.21852235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.33696,"y":63.893818,"z":0.0},"screenPosition":{"x":0.4653534,"y":0.22074747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.0605,"y":62.77236,"z":2.842171E-14},"screenPosition":{"x":0.52209383,"y":0.20517167},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":95.77525,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.6635452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.33176,"y":63.73361,"z":0.0},"screenPosition":{"x":0.38191164,"y":0.21852235},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.30862,"y":66.29694,"z":0.0},"screenPosition":{"x":0.652263,"y":0.2541242},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.0657,"y":80.235054,"z":0.0},"screenPosition":{"x":0.6055356,"y":0.4477091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.02176,"y":57.966114,"z":0.0},"screenPosition":{"x":0.54211986,"y":0.13841824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.57988,"y":57.004864,"z":0.0},"screenPosition":{"x":0.5120808,"y":0.12506756},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.93384,"y":53.960907,"z":0.0},"screenPosition":{"x":0.41528833,"y":0.08279039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.0501,"y":55.402782,"z":0.0},"screenPosition":{"x":0.35521024,"y":0.10281642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.44801,"y":57.966114,"z":-2.842171E-14},"screenPosition":{"x":0.32183355,"y":0.13841824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.72968,"y":60.689655,"z":2.842171E-14},"screenPosition":{"x":0.3485349,"y":0.17624518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.9726,"y":62.131527,"z":0.0},"screenPosition":{"x":0.3952623,"y":0.19627121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.37572,"y":62.131527,"z":0.0},"screenPosition":{"x":0.44532737,"y":0.19627121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.25946,"y":58.927364,"z":0.0},"screenPosition":{"x":0.5054055,"y":0.15176894},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.60822,"y":59.40799,"z":0.0},"screenPosition":{"x":0.3251712,"y":0.15844427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.88988,"y":61.170277,"z":0.0},"screenPosition":{"x":0.3518726,"y":0.18292053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.29301,"y":61.97132,"z":0.0},"screenPosition":{"x":0.40193766,"y":0.1940461},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.18196,"y":62.131527,"z":0.0},"screenPosition":{"x":0.54545754,"y":0.19627121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.42488,"y":63.092777,"z":0.0},"screenPosition":{"x":0.5921849,"y":0.2096219},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.1432,"y":83.759636,"z":0.0},"screenPosition":{"x":0.56548357,"y":0.49666163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.78404,"y":72.22465,"z":0.0},"screenPosition":{"x":0.57883424,"y":0.3364534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.34216,"y":70.14194,"z":0.0},"screenPosition":{"x":0.54879516,"y":0.30752692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.22072,"y":67.418396,"z":-2.842171E-14},"screenPosition":{"x":0.5254315,"y":0.2697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.25946,"y":65.4959,"z":0.0},"screenPosition":{"x":0.5054055,"y":0.24299861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.01654,"y":64.53465,"z":-2.842171E-14},"screenPosition":{"x":0.45867807,"y":0.22964793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.9726,"y":65.4959,"z":0.0},"screenPosition":{"x":0.3952623,"y":0.24299861},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.37572,"y":72.38486,"z":0.0},"screenPosition":{"x":0.44532737,"y":0.33867854},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.18196,"y":70.30215,"z":0.0},"screenPosition":{"x":0.54545754,"y":0.30975205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.66258,"y":68.539856,"z":0.0},"screenPosition":{"x":0.5554705,"y":0.2852758},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.18196,"y":76.39006,"z":0.0},"screenPosition":{"x":0.54545754,"y":0.3943064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.93904,"y":74.46756,"z":0.0},"screenPosition":{"x":0.49873012,"y":0.367605},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.50238,"y":69.18069,"z":0.0},"screenPosition":{"x":0.55213284,"y":0.29417625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.38612,"y":69.020485,"z":0.0},"screenPosition":{"x":0.6122109,"y":0.29195112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.78925,"y":71.10319,"z":0.0},"screenPosition":{"x":0.662276,"y":0.3208776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.43008,"y":73.98694,"z":0.0},"screenPosition":{"x":0.6756267,"y":0.36092967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.94946,"y":77.03089,"z":0.0},"screenPosition":{"x":0.6656137,"y":0.40320686},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.49718,"y":74.62777,"z":0.0},"screenPosition":{"x":0.46869108,"y":0.36983013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61862,"y":70.94298,"z":0.0},"screenPosition":{"x":0.4920548,"y":0.3186525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.66258,"y":69.3409,"z":0.0},"screenPosition":{"x":0.5554705,"y":0.29640135},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.30862,"y":75.2686,"z":-2.842171E-14},"screenPosition":{"x":0.652263,"y":0.3787306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.34738,"y":78.31256,"z":0.0},"screenPosition":{"x":0.63223696,"y":0.42100775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.62384,"y":78.63297,"z":0.0},"screenPosition":{"x":0.57549655,"y":0.42545798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.1432,"y":83.59943,"z":0.0},"screenPosition":{"x":0.56548357,"y":0.49443653},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.01134,"y":64.53465,"z":0.0},"screenPosition":{"x":0.37523627,"y":0.22964793},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.77884,"y":63.573402,"z":0.0},"screenPosition":{"x":0.49539244,"y":0.21629724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.70134,"y":65.33569,"z":-2.842171E-14},"screenPosition":{"x":0.5354445,"y":0.2407735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.50238,"y":67.738815,"z":0.0},"screenPosition":{"x":0.55213284,"y":0.27415022},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.38092,"y":70.78277,"z":-2.842171E-14},"screenPosition":{"x":0.52876914,"y":0.31642738},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.77364,"y":73.02569,"z":0.0},"screenPosition":{"x":0.41195068,"y":0.34757897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.93904,"y":63.413193,"z":0.0},"screenPosition":{"x":0.49873012,"y":0.21407214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.74008,"y":66.617355,"z":0.0},"screenPosition":{"x":0.51541847,"y":0.25857443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.9778,"y":68.860275,"z":-2.842171E-14},"screenPosition":{"x":0.4787041,"y":0.28972602},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.08884,"y":68.539856,"z":0.0},"screenPosition":{"x":0.33518422,"y":0.2852758},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.37051,"y":61.170277,"z":0.0},"screenPosition":{"x":0.3618856,"y":0.18292053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.41446,"y":60.04882,"z":0.0},"screenPosition":{"x":0.42530134,"y":0.16734473},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.22072,"y":63.413193,"z":0.0},"screenPosition":{"x":0.5254315,"y":0.21407214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.02176,"y":65.976524,"z":0.0},"screenPosition":{"x":0.54211986,"y":0.24967396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.9003,"y":68.700066,"z":0.0},"screenPosition":{"x":0.51875615,"y":0.2875009},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.41446,"y":73.02569,"z":-2.842171E-14},"screenPosition":{"x":0.42530134,"y":0.34757897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.72968,"y":69.821526,"z":0.0},"screenPosition":{"x":0.3485349,"y":0.3030767},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.45322,"y":70.46236,"z":-2.842171E-14},"screenPosition":{"x":0.40527532,"y":0.31197715},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.74529,"y":80.235054,"z":0.0},"screenPosition":{"x":0.59886026,"y":0.4477091},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.1432,"y":83.919846,"z":0.0},"screenPosition":{"x":0.56548357,"y":0.49888676},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.58508,"y":87.60464,"z":-2.842171E-14},"screenPosition":{"x":0.5955226,"y":0.5500644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.26466,"y":85.36172,"z":0.0},"screenPosition":{"x":0.5888472,"y":0.5189128},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.0657,"y":80.87589,"z":0.0},"screenPosition":{"x":0.6055356,"y":0.45660958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.18716,"y":78.95339,"z":0.0},"screenPosition":{"x":0.6288993,"y":0.42990822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.30862,"y":77.03089,"z":0.0},"screenPosition":{"x":0.652263,"y":0.40320686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.7505,"y":75.2686,"z":-2.842171E-14},"screenPosition":{"x":0.68230206,"y":0.3787306},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.07613,"y":73.3461,"z":0.0},"screenPosition":{"x":0.77241915,"y":0.3520292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.63945,"y":73.50631,"z":0.0},"screenPosition":{"x":0.82582194,"y":0.35425434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.5232,"y":72.38486,"z":0.0},"screenPosition":{"x":0.8859,"y":0.33867854},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.60591,"y":79.27381,"z":2.842171E-14},"screenPosition":{"x":0.92928976,"y":0.43435845},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.8332,"y":76.55027,"z":-2.842171E-14},"screenPosition":{"x":0.7256918,"y":0.3965315},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.35258,"y":66.937775,"z":0.0},"screenPosition":{"x":0.71567875,"y":0.26302466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.66258,"y":83.759636,"z":0.0},"screenPosition":{"x":0.5554705,"y":0.49666163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.19757,"y":70.46236,"z":0.0},"screenPosition":{"x":0.79578286,"y":0.31197715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.91591,"y":73.1859,"z":0.0},"screenPosition":{"x":0.7690815,"y":0.3498041},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.42488,"y":69.821526,"z":0.0},"screenPosition":{"x":0.5921849,"y":0.3030767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.71175,"y":63.413193,"z":2.842171E-14},"screenPosition":{"x":0.7023281,"y":0.21407214},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.35779,"y":61.97132,"z":-2.842171E-14},"screenPosition":{"x":0.79912055,"y":0.1940461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.92111,"y":63.252987,"z":0.0},"screenPosition":{"x":0.85252327,"y":0.21184702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.16403,"y":64.05402,"z":0.0},"screenPosition":{"x":0.8992507,"y":0.22297259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.24673,"y":66.29694,"z":0.0},"screenPosition":{"x":0.9426404,"y":0.2541242},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.04257,"y":70.94298,"z":0.0},"screenPosition":{"x":0.875887,"y":0.3186525},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.15363,"y":69.18069,"z":0.0},"screenPosition":{"x":0.7323671,"y":0.29417625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.42488,"y":69.50111,"z":0.0},"screenPosition":{"x":0.5921849,"y":0.29862648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.31903,"y":74.46756,"z":0.0},"screenPosition":{"x":0.8191466,"y":0.367605},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.31903,"y":69.661316,"z":0.0},"screenPosition":{"x":0.8191466,"y":0.30085158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":70.30215,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.30975205},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.57988,"y":80.39526,"z":0.0},"screenPosition":{"x":0.5120808,"y":0.44993424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.81758,"y":82.477974,"z":0.0},"screenPosition":{"x":0.4753664,"y":0.47886074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.138,"y":84.881096,"z":0.0},"screenPosition":{"x":0.48204178,"y":0.5122374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.29822,"y":87.44443,"z":0.0},"screenPosition":{"x":0.48537943,"y":0.5478393},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.15883,"y":76.39006,"z":0.0},"screenPosition":{"x":0.8158089,"y":0.3943064},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.55675,"y":71.74402,"z":2.842171E-14},"screenPosition":{"x":0.7824322,"y":0.32977808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.26466,"y":70.46236,"z":0.0},"screenPosition":{"x":0.5888472,"y":0.31197715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.94424,"y":80.55547,"z":-2.842171E-14},"screenPosition":{"x":0.5821719,"y":0.45215935},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.34216,"y":77.83193,"z":0.0},"screenPosition":{"x":0.54879516,"y":0.41433242},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.30342,"y":74.62777,"z":0.0},"screenPosition":{"x":0.5688212,"y":0.36983013},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.14842,"y":61.01007,"z":0.0},"screenPosition":{"x":0.6489253,"y":0.18069541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.30342,"y":80.55547,"z":0.0},"screenPosition":{"x":0.5688212,"y":0.45215935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.70134,"y":62.291737,"z":0.0},"screenPosition":{"x":0.5354445,"y":0.19849633},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.7505,"y":62.131527,"z":0.0},"screenPosition":{"x":0.68230206,"y":0.19627121},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.30342,"y":60.529446,"z":0.0},"screenPosition":{"x":0.5688212,"y":0.17402007},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.86154,"y":65.4959,"z":0.0},"screenPosition":{"x":0.5387822,"y":0.24299861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.62384,"y":67.899025,"z":-2.842171E-14},"screenPosition":{"x":0.57549655,"y":0.27637532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.9882,"y":68.700066,"z":0.0},"screenPosition":{"x":0.6455877,"y":0.2875009},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.0709,"y":60.529446,"z":0.0},"screenPosition":{"x":0.68897736,"y":0.17402007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.86674,"y":59.40799,"z":0.0},"screenPosition":{"x":0.622224,"y":0.15844427},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.71175,"y":60.84986,"z":0.0},"screenPosition":{"x":0.7023281,"y":0.1784703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.43008,"y":58.606945,"z":0.0},"screenPosition":{"x":0.6756267,"y":0.1473187},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.30342,"y":72.86548,"z":-2.842171E-14},"screenPosition":{"x":0.5688212,"y":0.34535387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.29822,"y":52.99966,"z":0.0},"screenPosition":{"x":0.48537943,"y":0.0694397},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.92633,"y":69.661316,"z":2.842171E-14},"screenPosition":{"x":0.93596506,"y":0.30085158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.08653,"y":71.10319,"z":0.0},"screenPosition":{"x":0.93930274,"y":0.3208776},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.32423,"y":78.47276,"z":0.0},"screenPosition":{"x":0.90258837,"y":0.42323288},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.58508,"y":80.55547,"z":0.0},"screenPosition":{"x":0.5955226,"y":0.45215935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.03737,"y":81.83714,"z":0.0},"screenPosition":{"x":0.7924452,"y":0.46996027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.11487,"y":82.958595,"z":0.0},"screenPosition":{"x":0.7523931,"y":0.48553607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.19237,"y":84.080055,"z":0.0},"screenPosition":{"x":0.71234107,"y":0.50111187},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.03737,"y":95.45484,"z":0.0},"screenPosition":{"x":0.7924452,"y":0.659095},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.78404,"y":72.06444,"z":0.0},"screenPosition":{"x":0.57883424,"y":0.3342283},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.0657,"y":70.94298,"z":0.0},"screenPosition":{"x":0.6055356,"y":0.3186525},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.19757,"y":94.33338,"z":0.0},"screenPosition":{"x":0.79578286,"y":0.64351916},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.30862,"y":95.29463,"z":0.0},"screenPosition":{"x":0.652263,"y":0.6568699},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.8228,"y":102.82442,"z":0.0},"screenPosition":{"x":0.5588082,"y":0.76145023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.78404,"y":71.58382,"z":0.0},"screenPosition":{"x":0.57883424,"y":0.32755294},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.74529,"y":69.18069,"z":0.0},"screenPosition":{"x":0.59886026,"y":0.29417625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.27509,"y":111.63587,"z":-2.842171E-14},"screenPosition":{"x":0.7557308,"y":0.8838315},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.72968,"y":101.542755,"z":0.0},"screenPosition":{"x":0.3485349,"y":0.7436493},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.69614,"y":109.55316,"z":0.0},"screenPosition":{"x":0.45200273,"y":0.854905},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.66779,"y":106.349,"z":0.0},"screenPosition":{"x":0.6389123,"y":0.81040275},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.9055,"y":96.89671,"z":0.0},"screenPosition":{"x":0.60219795,"y":0.679121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.34216,"y":96.89671,"z":0.0},"screenPosition":{"x":0.54879516,"y":0.679121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.15883,"y":106.18879,"z":0.0},"screenPosition":{"x":0.8158089,"y":0.80817765},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.55675,"y":90.64859,"z":0.0},"screenPosition":{"x":0.7824322,"y":0.59234154},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.76091,"y":89.84755,"z":0.0},"screenPosition":{"x":0.8491856,"y":0.581216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.6782,"y":90.64859,"z":0.0},"screenPosition":{"x":0.8057959,"y":0.59234154},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.70134,"y":79.1136,"z":0.0},"screenPosition":{"x":0.5354445,"y":0.43213332},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.32423,"y":93.21192,"z":0.0},"screenPosition":{"x":0.90258837,"y":0.6279434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.16403,"y":90.48838,"z":0.0},"screenPosition":{"x":0.8992507,"y":0.59011644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.24153,"y":88.8863,"z":2.842171E-14},"screenPosition":{"x":0.85919863,"y":0.5678653},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.00383,"y":96.25588,"z":0.0},"screenPosition":{"x":0.895913,"y":0.67022055},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.36299,"y":86.32297,"z":0.0},"screenPosition":{"x":0.88256234,"y":0.53226346},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":167.00903,"y":92.7313,"z":0.0},"screenPosition":{"x":0.9793548,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.6782,"y":86.64339,"z":0.0},"screenPosition":{"x":0.8057959,"y":0.5367137},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.00383,"y":89.84755,"z":0.0},"screenPosition":{"x":0.895913,"y":0.581216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.79967,"y":90.00776,"z":0.0},"screenPosition":{"x":0.82915956,"y":0.5834411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.03737,"y":88.40568,"z":0.0},"screenPosition":{"x":0.7924452,"y":0.56118995},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.43529,"y":84.400475,"z":0.0},"screenPosition":{"x":0.7590685,"y":0.5055621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.11487,"y":81.997345,"z":0.0},"screenPosition":{"x":0.7523931,"y":0.47218537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.11487,"y":79.75443,"z":2.842171E-14},"screenPosition":{"x":0.7523931,"y":0.44103378},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.83841,"y":75.58902,"z":2.842171E-14},"screenPosition":{"x":0.8091335,"y":0.38318083},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.74529,"y":68.700066,"z":0.0},"screenPosition":{"x":0.59886026,"y":0.2875009},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.51799,"y":74.78798,"z":0.0},"screenPosition":{"x":0.8024582,"y":0.37205523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.44049,"y":72.54506,"z":0.0},"screenPosition":{"x":0.8425103,"y":0.34090364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.64465,"y":72.38486,"z":0.0},"screenPosition":{"x":0.90926373,"y":0.33867854},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.08653,"y":77.67172,"z":0.0},"screenPosition":{"x":0.93930274,"y":0.4121073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.40175,"y":78.47276,"z":0.0},"screenPosition":{"x":0.8625363,"y":0.42323288},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.55675,"y":57.805904,"z":2.842171E-14},"screenPosition":{"x":0.7824322,"y":0.13619313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.79445,"y":92.7313,"z":0.0},"screenPosition":{"x":0.7457178,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.86154,"y":77.51152,"z":0.0},"screenPosition":{"x":0.5387822,"y":0.4098822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.32423,"y":62.612152,"z":0.0},"screenPosition":{"x":0.90258837,"y":0.20294656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.56195,"y":64.05402,"z":0.0},"screenPosition":{"x":0.865874,"y":0.22297259},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.8332,"y":66.29694,"z":0.0},"screenPosition":{"x":0.7256918,"y":0.2541242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.10966,"y":65.17548,"z":0.0},"screenPosition":{"x":0.66895133,"y":0.23854838},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.68341,"y":57.6457,"z":2.842171E-14},"screenPosition":{"x":0.8892377,"y":0.13396801},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.44049,"y":49.47508,"z":0.0},"screenPosition":{"x":0.8425103,"y":0.020487191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.87717,"y":49.635284,"z":0.0},"screenPosition":{"x":0.7891075,"y":0.022712305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":167.00903,"y":92.7313,"z":0.0},"screenPosition":{"x":0.9793548,"y":0.62126803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.15363,"y":52.83945,"z":-2.842171E-14},"screenPosition":{"x":0.7323671,"y":0.06721459},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.68341,"y":64.05402,"z":-2.842171E-14},"screenPosition":{"x":0.8892377,"y":0.22297259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.5232,"y":61.01007,"z":2.842171E-14},"screenPosition":{"x":0.8859,"y":0.18069541},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.76611,"y":59.568195,"z":0.0},"screenPosition":{"x":0.9326274,"y":0.16066939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.12529,"y":57.32528,"z":0.0},"screenPosition":{"x":0.9192767,"y":0.1295178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.92633,"y":55.242573,"z":0.0},"screenPosition":{"x":0.93596506,"y":0.1005913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.80487,"y":52.99966,"z":0.0},"screenPosition":{"x":0.91260135,"y":0.0694397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.36299,"y":51.23737,"z":0.0},"screenPosition":{"x":0.88256234,"y":0.044963446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.92111,"y":49.635284,"z":0.0},"screenPosition":{"x":0.85252327,"y":0.022712305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.51799,"y":48.994453,"z":0.0},"screenPosition":{"x":0.8024582,"y":0.013811847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.63425,"y":49.47508,"z":-2.842171E-14},"screenPosition":{"x":0.74238014,"y":0.020487191},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.07613,"y":53.8007,"z":0.0},"screenPosition":{"x":0.77241915,"y":0.080565274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.10446,"y":71.10319,"z":0.0},"screenPosition":{"x":0.5855096,"y":0.3208776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.92111,"y":50.91695,"z":0.0},"screenPosition":{"x":0.85252327,"y":0.040513217},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.11487,"y":49.31487,"z":0.0},"screenPosition":{"x":0.7523931,"y":0.018262075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.71175,"y":49.955704,"z":0.0},"screenPosition":{"x":0.7023281,"y":0.027162533},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.92111,"y":55.883408,"z":0.0},"screenPosition":{"x":0.85252327,"y":0.10949176},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.5232,"y":49.47508,"z":0.0},"screenPosition":{"x":0.8859,"y":0.020487191},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.27509,"y":50.91695,"z":0.0},"screenPosition":{"x":0.7557308,"y":0.040513217},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20200904-040157/brain-CAD878-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[1.0,0.0,0.0,0.0,0.0,1.0,-9.658342552981505E-17,0.0,0.0,9.658342552981505E-17,1.0,0.0,167.6498632972597,91.93025774752135,148.13554253483326,1.0]},"baseImage":"20200904-040157/base.webp","version":0,"savedAt":1.599192563123E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/Decom2019/round1/20191016-052123-v0.json b/data/mapping/Decom2019/round1/20191016-052123-v0.json new file mode 100644 index 0000000000..e5bfd29464 --- /dev/null +++ b/data/mapping/Decom2019/round1/20191016-052123-v0.json @@ -0,0 +1 @@ +{"startedAt":1.5712032837E12,"surfaces":[{"brainId":"CBABCC","panelName":"Panel 1","pixels":[{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":43.416763,"y":52.892082,"z":1.4210855E-14},"screenPosition":{"x":0.90451586,"y":0.06794559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.0,"y":57.159683,"z":1.0},"screenPosition":{"x":-0.019290118,"y":0.12721783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.297207,"y":50.749634,"z":0.0},"screenPosition":{"x":0.7978584,"y":0.03818938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.7399096,"y":50.862343,"z":0.0},"screenPosition":{"x":0.057081454,"y":0.039754752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":1.2137343,"y":58.65351,"z":1.4210855E-14},"screenPosition":{"x":0.025286129,"y":0.14796542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.9619057,"y":55.71437,"z":1.4210855E-14},"screenPosition":{"x":0.0825397,"y":0.10714404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.95689,"y":57.74873,"z":1.4210855E-14},"screenPosition":{"x":0.18660189,"y":0.13539901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.780736,"y":60.577442,"z":0.0},"screenPosition":{"x":0.14126533,"y":0.17468669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.110765,"y":48.83453,"z":1.4210855E-14},"screenPosition":{"x":0.18980761,"y":0.011590694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.981175,"y":56.50528,"z":0.0},"screenPosition":{"x":0.10377448,"y":0.11812889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.657705,"y":57.63566,"z":1.4210855E-14},"screenPosition":{"x":0.11786885,"y":0.13382858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.6636894,"y":48.27159,"z":1.4210855E-14},"screenPosition":{"x":0.07632686,"y":0.0037720916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.3649075,"y":60.577442,"z":1.4210855E-14},"screenPosition":{"x":0.07010224,"y":0.17468669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.9918931,"y":57.74873,"z":0.0},"screenPosition":{"x":0.02066444,"y":0.13539901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.08388,"y":58.54039,"z":0.0},"screenPosition":{"x":0.10591417,"y":0.14639433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.6636894,"y":48.27159,"z":1.4210855E-14},"screenPosition":{"x":0.07632686,"y":0.0037720916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.945983,"y":62.956455,"z":1.4210855E-14},"screenPosition":{"x":0.103041306,"y":0.20772852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.7619514,"y":59.445507,"z":0.0},"screenPosition":{"x":0.120040655,"y":0.15896538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.493892,"y":59.445507,"z":1.4210855E-14},"screenPosition":{"x":0.17695607,"y":0.15896538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.798432,"y":62.04985,"z":0.0},"screenPosition":{"x":0.16246733,"y":0.19513683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.945983,"y":62.956455,"z":1.4210855E-14},"screenPosition":{"x":0.103041306,"y":0.20772852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.7571807,"y":60.351006,"z":0.0},"screenPosition":{"x":0.11994126,"y":0.17154177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.507924,"y":59.785027,"z":0.0},"screenPosition":{"x":0.09391508,"y":0.1636809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.643925,"y":60.237797,"z":0.0},"screenPosition":{"x":0.11758177,"y":0.16996942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.6845317,"y":62.04985,"z":0.0},"screenPosition":{"x":0.16009441,"y":0.19513683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.047141,"y":57.63566,"z":0.0},"screenPosition":{"x":0.16764876,"y":0.13382858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.199438,"y":59.89821,"z":0.0},"screenPosition":{"x":0.2124883,"y":0.16525291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.3845215,"y":63.97684,"z":0.0},"screenPosition":{"x":0.19551086,"y":0.22190055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.715548,"y":66.47317,"z":0.0},"screenPosition":{"x":0.20240724,"y":0.25657177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.45949,"y":59.671844,"z":1.4210855E-14},"screenPosition":{"x":0.05123938,"y":0.16210897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.0659251,"y":68.17688,"z":0.0},"screenPosition":{"x":0.043040108,"y":0.28023443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":1.3950973,"y":66.01907,"z":0.0},"screenPosition":{"x":0.029064527,"y":0.2502649},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.2120156,"y":60.464222,"z":0.0},"screenPosition":{"x":0.12941699,"y":0.17311418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.1200576,"y":59.332348,"z":1.4210855E-14},"screenPosition":{"x":0.044167865,"y":0.15739371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.855646,"y":58.65351,"z":0.0},"screenPosition":{"x":0.1011593,"y":0.14796542},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.819407,"y":62.956455,"z":1.4210855E-14},"screenPosition":{"x":0.18373767,"y":0.20772852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.197043,"y":60.464222,"z":0.0},"screenPosition":{"x":0.2124384,"y":0.17311418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.894494,"y":63.183163,"z":0.0},"screenPosition":{"x":0.24780196,"y":0.21087728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.226496,"y":65.79206,"z":1.4210855E-14},"screenPosition":{"x":0.25471866,"y":0.24711198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.747086,"y":67.26807,"z":0.0},"screenPosition":{"x":0.1405643,"y":0.267612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.080519,"y":63.86344,"z":0.0},"screenPosition":{"x":0.12667748,"y":0.22032556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.8298283,"y":73.52396,"z":0.0},"screenPosition":{"x":0.14228809,"y":0.3544994},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":2.1889865,"y":66.70025,"z":1.4210855E-14},"screenPosition":{"x":0.045603886,"y":0.25972572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.681589,"y":68.17688,"z":1.4210855E-14},"screenPosition":{"x":0.18086645,"y":0.28023443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.473435,"y":63.86344,"z":0.0},"screenPosition":{"x":0.1765299,"y":0.22032556},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":12.556816,"y":68.972404,"z":0.0},"screenPosition":{"x":0.26160035,"y":0.29128343},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.886809,"y":72.38516,"z":1.4210855E-14},"screenPosition":{"x":0.26847517,"y":0.33868283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.7331,"y":75.68933,"z":1.4210855E-14},"screenPosition":{"x":0.16110626,"y":0.38457403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.269829,"y":77.05806,"z":1.4210855E-14},"screenPosition":{"x":0.2347881,"y":0.40358418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.9179277,"y":78.7702,"z":0.0},"screenPosition":{"x":0.1441235,"y":0.4273639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.8069246,"y":77.85689,"z":1.4210855E-14},"screenPosition":{"x":0.0584776,"y":0.41467902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.40692967,"y":77.74275,"z":1.4210855E-14},"screenPosition":{"x":0.008477702,"y":0.4130938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.7725548,"y":74.20753,"z":1.4210855E-14},"screenPosition":{"x":0.016094891,"y":0.36399338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.33792886,"y":70.79187,"z":0.0},"screenPosition":{"x":0.0070401845,"y":0.31655374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.6957035,"y":68.404144,"z":1.4210855E-14},"screenPosition":{"x":0.014493823,"y":0.28339088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.9361742,"y":66.47317,"z":0.0},"screenPosition":{"x":0.019503629,"y":0.25657177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.5345836,"y":64.20366,"z":1.4210855E-14},"screenPosition":{"x":0.13613716,"y":0.22505082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.40692967,"y":77.74275,"z":1.4210855E-14},"screenPosition":{"x":0.008477702,"y":0.4130938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.3363895,"y":70.10939,"z":0.0},"screenPosition":{"x":0.09034145,"y":0.30707484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.2710795,"y":71.13319,"z":0.0},"screenPosition":{"x":0.1306475,"y":0.3212943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.462468,"y":63.636658,"z":1.4210855E-14},"screenPosition":{"x":0.25963473,"y":0.2171758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.40692967,"y":77.74275,"z":1.4210855E-14},"screenPosition":{"x":0.008477702,"y":0.4130938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.16857801,"y":79.227005,"z":0.0},"screenPosition":{"x":0.003512042,"y":0.43370837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.37131304,"y":83.228165,"z":0.0},"screenPosition":{"x":0.0077356882,"y":0.48928005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.5129414,"y":91.02318,"z":0.0},"screenPosition":{"x":0.13568628,"y":0.5975442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":1.6105338,"y":86.434456,"z":0.0},"screenPosition":{"x":0.03355279,"y":0.5338119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.547983,"y":88.15408,"z":0.0},"screenPosition":{"x":0.073916316,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.663433,"y":97.2335,"z":0.0},"screenPosition":{"x":0.18048818,"y":0.68379855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.8603826,"y":90.33425,"z":1.4210855E-14},"screenPosition":{"x":0.14292464,"y":0.5879757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.227123,"y":92.2868,"z":1.4210855E-14},"screenPosition":{"x":0.17139842,"y":0.61509436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.136588,"y":94.12611,"z":0.0},"screenPosition":{"x":0.19034559,"y":0.6406403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.349417,"y":97.92464,"z":0.0},"screenPosition":{"x":0.19477952,"y":0.69339776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.928385,"y":96.08209,"z":1.4210855E-14},"screenPosition":{"x":0.06100802,"y":0.6678068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.8013787,"y":102.19157,"z":0.0},"screenPosition":{"x":0.1416954,"y":0.75266063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.498997,"y":93.78111,"z":0.0},"screenPosition":{"x":0.13539577,"y":0.6358488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.109728,"y":92.86141,"z":1.4210855E-14},"screenPosition":{"x":0.16895266,"y":0.6230751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.7296367,"y":93.55115,"z":1.4210855E-14},"screenPosition":{"x":0.14020076,"y":0.63265485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.2331166,"y":94.471146,"z":1.4210855E-14},"screenPosition":{"x":0.10902326,"y":0.6454326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.2700953,"y":93.66613,"z":1.4210855E-14},"screenPosition":{"x":0.13062699,"y":0.6342518},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":9.951608,"y":91.36773,"z":0.0},"screenPosition":{"x":0.20732516,"y":0.60232955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.830984,"y":87.92472,"z":0.0},"screenPosition":{"x":0.26731217,"y":0.55451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.6602025,"y":90.90834,"z":0.0},"screenPosition":{"x":0.15958755,"y":0.59594923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.382744,"y":90.33425,"z":0.0},"screenPosition":{"x":0.19547383,"y":0.5879757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.575545,"y":88.842316,"z":1.4210855E-14},"screenPosition":{"x":0.09532385,"y":0.5672544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.016011,"y":92.17189,"z":1.4210855E-14},"screenPosition":{"x":0.104500234,"y":0.6134985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.087425,"y":94.12611,"z":1.4210855E-14},"screenPosition":{"x":0.08515469,"y":0.6406403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.61653,"y":89.30126,"z":1.4210855E-14},"screenPosition":{"x":0.20034438,"y":0.57362866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.798304,"y":92.05699,"z":0.0},"screenPosition":{"x":0.32913134,"y":0.61190265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.484003,"y":86.31986,"z":0.0},"screenPosition":{"x":0.17675005,"y":0.53222036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.770255,"y":87.46607,"z":1.4210855E-14},"screenPosition":{"x":0.22438031,"y":0.5481398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.797259,"y":90.21945,"z":0.0},"screenPosition":{"x":0.09994289,"y":0.5863812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.467108,"y":89.98987,"z":1.4210855E-14},"screenPosition":{"x":0.17639807,"y":0.5831926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.915614,"y":85.40334,"z":1.4210855E-14},"screenPosition":{"x":0.16490863,"y":0.51949084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.886223,"y":87.12215,"z":1.4210855E-14},"screenPosition":{"x":0.22679631,"y":0.5433631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.984192,"y":91.25288,"z":0.0},"screenPosition":{"x":0.22883734,"y":0.60073435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.939374,"y":94.24111,"z":1.4210855E-14},"screenPosition":{"x":0.20707029,"y":0.64223766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.1852117,"y":94.24111,"z":1.4210855E-14},"screenPosition":{"x":0.14969191,"y":0.64223766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.51663,"y":88.15408,"z":1.4210855E-14},"screenPosition":{"x":0.05242979,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":7.9058437,"y":87.46607,"z":0.0},"screenPosition":{"x":0.16470507,"y":0.5481398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.05622,"y":86.434456,"z":0.0},"screenPosition":{"x":0.18867126,"y":0.5338119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.51663,"y":88.15408,"z":1.4210855E-14},"screenPosition":{"x":0.05242979,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.995472,"y":86.20528,"z":1.4210855E-14},"screenPosition":{"x":0.145739,"y":0.53062886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.7858047,"y":88.612885,"z":0.0},"screenPosition":{"x":0.16220427,"y":0.5640678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.788853,"y":75.91739,"z":1.4210855E-14},"screenPosition":{"x":0.20393443,"y":0.38774157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.750428,"y":84.83071,"z":1.4210855E-14},"screenPosition":{"x":0.20313391,"y":0.5115377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.807009,"y":78.08518,"z":0.0},"screenPosition":{"x":0.1418127,"y":0.41784975},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.6631393,"y":78.19933,"z":1.4210855E-14},"screenPosition":{"x":0.117982075,"y":0.41943523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.43803,"y":77.74275,"z":1.4210855E-14},"screenPosition":{"x":0.19662564,"y":0.4130938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.5434964,"y":69.086075,"z":1.4210855E-14},"screenPosition":{"x":0.07382284,"y":0.2928622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.4201045,"y":75.57531,"z":1.4210855E-14},"screenPosition":{"x":0.09208552,"y":0.38299042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":0.39506754,"y":79.56967,"z":0.0},"screenPosition":{"x":0.008230574,"y":0.43846762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.5343647,"y":75.57531,"z":1.4210855E-14},"screenPosition":{"x":0.094465934,"y":0.38299042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.770153,"y":80.255165,"z":0.0},"screenPosition":{"x":0.20354486,"y":0.44798836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.212945,"y":76.94397,"z":1.4210855E-14},"screenPosition":{"x":0.19193634,"y":0.40199953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.996658,"y":74.20753,"z":1.4210855E-14},"screenPosition":{"x":0.18743038,"y":0.36399338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.5343647,"y":75.57531,"z":1.4210855E-14},"screenPosition":{"x":0.094465934,"y":0.38299042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.4822993,"y":79.6839,"z":0.0},"screenPosition":{"x":0.0725479,"y":0.44005418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.891878,"y":78.54184,"z":1.4210855E-14},"screenPosition":{"x":0.20608078,"y":0.4241922},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.104314,"y":84.02929,"z":1.4210855E-14},"screenPosition":{"x":0.29383987,"y":0.5004068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.473447,"y":88.612885,"z":0.0},"screenPosition":{"x":0.17653014,"y":0.5640678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.4958935,"y":90.67869,"z":1.4210855E-14},"screenPosition":{"x":0.19783112,"y":0.59275955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.061127,"y":87.46607,"z":0.0},"screenPosition":{"x":0.50127345,"y":0.5481398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.127743,"y":90.563866,"z":0.0},"screenPosition":{"x":0.39849466,"y":0.5911648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.851597,"y":88.268776,"z":0.0},"screenPosition":{"x":0.43440825,"y":0.5592885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.19955,"y":85.746994,"z":1.4210855E-14},"screenPosition":{"x":0.4416573,"y":0.5242638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.546917,"y":83.34259,"z":0.0},"screenPosition":{"x":0.4488941,"y":0.4908693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.10208,"y":75.91739,"z":0.0},"screenPosition":{"x":0.3562933,"y":0.38774157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.068705,"y":78.19933,"z":0.0},"screenPosition":{"x":0.418098,"y":0.41943523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.069757,"y":77.28627,"z":1.4210855E-14},"screenPosition":{"x":0.33478662,"y":0.40675372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.35587,"y":77.28627,"z":1.4210855E-14},"screenPosition":{"x":0.38241395,"y":0.40675372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.216053,"y":76.03143,"z":0.0},"screenPosition":{"x":0.3586678,"y":0.38932544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.706037,"y":74.77733,"z":1.4210855E-14},"screenPosition":{"x":0.30637577,"y":0.37190735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.281583,"y":74.09358,"z":0.0},"screenPosition":{"x":0.23503298,"y":0.36241084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.53714,"y":74.77733,"z":0.0},"screenPosition":{"x":0.17785709,"y":0.37190735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.854109,"y":79.79814,"z":0.0},"screenPosition":{"x":0.10112727,"y":0.44164085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.925165,"y":90.10465,"z":1.4210855E-14},"screenPosition":{"x":0.18594095,"y":0.58478683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.362026,"y":87.92472,"z":1.4210855E-14},"screenPosition":{"x":0.17420886,"y":0.55451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.856032,"y":94.586174,"z":1.4210855E-14},"screenPosition":{"x":0.22616734,"y":0.64703023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.834959,"y":91.82722,"z":1.4210855E-14},"screenPosition":{"x":0.20489499,"y":0.6087113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.152418,"y":90.563866,"z":0.0},"screenPosition":{"x":0.19067538,"y":0.5911648},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":11.084187,"y":94.9313,"z":0.0},"screenPosition":{"x":0.23092055,"y":0.6518235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.144479,"y":96.54258,"z":1.4210855E-14},"screenPosition":{"x":0.27384332,"y":0.6742025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.058843,"y":97.80943,"z":0.0},"screenPosition":{"x":0.29289258,"y":0.6917977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.084042,"y":100.57606,"z":1.4210855E-14},"screenPosition":{"x":0.3142509,"y":0.73022306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.193016,"y":102.5379,"z":1.4210855E-14},"screenPosition":{"x":0.31652117,"y":0.7574709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.6508684,"y":104.15488,"z":0.0},"screenPosition":{"x":0.055226423,"y":0.77992886},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":6.5417924,"y":108.08685,"z":0.0},"screenPosition":{"x":0.13628735,"y":0.83453965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.233493,"y":109.128876,"z":0.0},"screenPosition":{"x":0.08819777,"y":0.84901214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.199846,"y":100.691414,"z":0.0},"screenPosition":{"x":0.10833012,"y":0.7318252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.7911189,"y":99.88407,"z":0.0},"screenPosition":{"x":0.05814831,"y":0.7206121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.182883,"y":97.57904,"z":0.0},"screenPosition":{"x":0.0871434,"y":0.6885978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.769672,"y":95.27647,"z":1.4210855E-14},"screenPosition":{"x":0.09936816,"y":0.65661764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.201406,"y":97.80943,"z":1.4210855E-14},"screenPosition":{"x":0.17086262,"y":0.6917977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.4172535,"y":97.80943,"z":0.0},"screenPosition":{"x":0.23785944,"y":0.6917977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.3237,"y":101.152885,"z":1.4210855E-14},"screenPosition":{"x":0.25674376,"y":0.7382346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.265116,"y":107.27675,"z":0.0},"screenPosition":{"x":0.23468992,"y":0.82328814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.8013787,"y":102.19157,"z":0.0},"screenPosition":{"x":0.1416954,"y":0.75266063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.6188664,"y":99.53816,"z":0.0},"screenPosition":{"x":0.15872638,"y":0.7158078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.553866,"y":96.08209,"z":0.0},"screenPosition":{"x":0.17820556,"y":0.6678068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.728144,"y":97.80943,"z":0.0},"screenPosition":{"x":0.22350298,"y":0.6917977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.250675,"y":94.356125,"z":0.0},"screenPosition":{"x":0.33855572,"y":0.6438351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.549873,"y":98.500755,"z":1.4210855E-14},"screenPosition":{"x":0.32395568,"y":0.7013994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.921665,"y":106.813965,"z":0.0},"screenPosition":{"x":0.22753468,"y":0.8168606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.885227,"y":104.848236,"z":1.4210855E-14},"screenPosition":{"x":0.2684422,"y":0.7895588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.621783,"y":101.38366,"z":1.4210855E-14},"screenPosition":{"x":0.30462047,"y":0.74143976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.701052,"y":97.57904,"z":0.0},"screenPosition":{"x":0.34793857,"y":0.6885978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.461066,"y":95.04635,"z":0.0},"screenPosition":{"x":0.25960553,"y":0.65342146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.926493,"y":99.19231,"z":1.4210855E-14},"screenPosition":{"x":0.35263526,"y":0.7110042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.290143,"y":100.92214,"z":0.0},"screenPosition":{"x":0.23521131,"y":0.7350297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.21845,"y":105.888695,"z":0.0},"screenPosition":{"x":0.3378844,"y":0.8040096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.41133,"y":102.99977,"z":1.4210855E-14},"screenPosition":{"x":0.3835694,"y":0.76388574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.421627,"y":98.500755,"z":0.0},"screenPosition":{"x":0.38378388,"y":0.7013994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.302402,"y":97.80943,"z":1.4210855E-14},"screenPosition":{"x":0.2354667,"y":0.6917977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.296874,"y":106.23562,"z":1.4210855E-14},"screenPosition":{"x":0.31868488,"y":0.8088281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.986528,"y":102.88429,"z":1.4210855E-14},"screenPosition":{"x":0.39555266,"y":0.7622819},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":13.71351,"y":98.03985,"z":1.4210855E-14},"screenPosition":{"x":0.28569812,"y":0.6949979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.2564535,"y":109.476326,"z":1.4210855E-14},"screenPosition":{"x":0.23450945,"y":0.8538378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.2839365,"y":112.83788,"z":0.0},"screenPosition":{"x":0.19341534,"y":0.90052617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.3426223,"y":109.128876,"z":0.0},"screenPosition":{"x":0.1529713,"y":0.84901214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.017073,"y":102.99977,"z":1.4210855E-14},"screenPosition":{"x":0.208689,"y":0.76388574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.037523,"y":104.270424,"z":0.0},"screenPosition":{"x":0.2924484,"y":0.78153366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.408503,"y":107.392456,"z":1.4210855E-14},"screenPosition":{"x":0.32101047,"y":0.82489526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.356503,"y":112.37391,"z":0.0},"screenPosition":{"x":0.2990938,"y":0.8940821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.274899,"y":114.34649,"z":0.0},"screenPosition":{"x":0.25572705,"y":0.92147905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.191884,"y":116.20467,"z":0.0},"screenPosition":{"x":0.21233091,"y":0.94728714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.46017,"y":116.55326,"z":0.0},"screenPosition":{"x":0.17625354,"y":0.95212865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.224788,"y":117.59936,"z":0.0},"screenPosition":{"x":0.10884976,"y":0.9666578},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.1201034,"y":115.85615,"z":0.0},"screenPosition":{"x":0.044168822,"y":0.9424465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.7180197,"y":112.257935,"z":1.4210855E-14},"screenPosition":{"x":0.05662541,"y":0.8924713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.6896815,"y":109.939674,"z":0.0},"screenPosition":{"x":0.0977017,"y":0.8602733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.587147,"y":113.99825,"z":0.0},"screenPosition":{"x":0.17889889,"y":0.9166424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.781269,"y":113.06991,"z":1.4210855E-14},"screenPosition":{"x":0.22460978,"y":0.90374875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.076543,"y":116.20467,"z":0.0},"screenPosition":{"x":0.20992796,"y":0.94728714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.187352,"y":117.36685,"z":0.0},"screenPosition":{"x":0.14973651,"y":0.9634285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.992157,"y":117.94817,"z":0.0},"screenPosition":{"x":0.104003266,"y":0.9715024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.6933315,"y":116.43706,"z":0.0},"screenPosition":{"x":0.05611107,"y":0.95051473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":1.8951015,"y":114.927,"z":0.0},"screenPosition":{"x":0.039481282,"y":0.9295417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":2.1348312,"y":113.41799,"z":0.0},"screenPosition":{"x":0.044475652,"y":0.9085832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.1998036,"y":108.665695,"z":1.4210855E-14},"screenPosition":{"x":0.06666257,"y":0.84257907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.3862486,"y":108.89727,"z":0.0},"screenPosition":{"x":0.112213515,"y":0.8457954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.5751467,"y":108.665695,"z":0.0},"screenPosition":{"x":0.15781555,"y":0.84257907},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":13.801275,"y":106.11997,"z":0.0},"screenPosition":{"x":0.28752655,"y":0.80722183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.62693,"y":102.99977,"z":1.4210855E-14},"screenPosition":{"x":0.2422277,"y":0.76388574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.835547,"y":102.30701,"z":0.0},"screenPosition":{"x":0.16324055,"y":0.754264},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.6535106,"y":101.84528,"z":0.0},"screenPosition":{"x":0.117781475,"y":0.7478512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.925868,"y":102.422455,"z":0.0},"screenPosition":{"x":0.08178892,"y":0.75586736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.662583,"y":100.11471,"z":0.0},"screenPosition":{"x":0.117970474,"y":0.72381544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.075757,"y":100.11471,"z":0.0},"screenPosition":{"x":0.16824494,"y":0.72381544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.596177,"y":90.90834,"z":1.4210855E-14},"screenPosition":{"x":0.11658703,"y":0.59594923},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":9.252866,"y":93.78111,"z":0.0},"screenPosition":{"x":0.19276804,"y":0.6358488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.4671178,"y":82.31296,"z":1.4210855E-14},"screenPosition":{"x":0.07223162,"y":0.47656882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.59073,"y":91.9421,"z":0.0},"screenPosition":{"x":0.11647355,"y":0.6103069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":4.1035576,"y":91.25288,"z":0.0},"screenPosition":{"x":0.085490786,"y":0.60073435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.840042,"y":85.40334,"z":1.4210855E-14},"screenPosition":{"x":0.26750088,"y":0.51949084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.4671178,"y":82.31296,"z":1.4210855E-14},"screenPosition":{"x":0.07223162,"y":0.47656882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":3.6366575,"y":72.72674,"z":1.4210855E-14},"screenPosition":{"x":0.0757637,"y":0.3434269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.867475,"y":77.514496,"z":0.0},"screenPosition":{"x":0.18473905,"y":0.40992358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.178778,"y":86.778275,"z":0.0},"screenPosition":{"x":0.27455786,"y":0.53858715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.331567,"y":82.77051,"z":1.4210855E-14},"screenPosition":{"x":0.21524097,"y":0.48292375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.081801,"y":80.71228,"z":0.0},"screenPosition":{"x":0.1892042,"y":0.4543372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.10629,"y":74.891304,"z":1.4210855E-14},"screenPosition":{"x":0.2730477,"y":0.3734904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.374412,"y":71.36076,"z":0.0},"screenPosition":{"x":0.2994669,"y":0.32445508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.984664,"y":69.42713,"z":1.4210855E-14},"screenPosition":{"x":0.2496805,"y":0.297599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.712593,"y":67.15449,"z":0.0},"screenPosition":{"x":0.20234568,"y":0.26603457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.308882,"y":73.52396,"z":1.4210855E-14},"screenPosition":{"x":0.33976838,"y":0.3544994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.3740425,"y":71.47456,"z":0.0},"screenPosition":{"x":0.29945922,"y":0.32603562},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.985529,"y":69.19975,"z":0.0},"screenPosition":{"x":0.24969852,"y":0.29444104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.8261385,"y":67.26807,"z":1.4210855E-14},"screenPosition":{"x":0.20471123,"y":0.267612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.416767,"y":58.31417,"z":1.4210855E-14},"screenPosition":{"x":0.30034932,"y":0.14325239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.891247,"y":57.74873,"z":0.0},"screenPosition":{"x":0.22690098,"y":0.13539901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.30449,"y":61.030384,"z":0.0},"screenPosition":{"x":0.40217683,"y":0.18097754},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":14.075365,"y":58.31417,"z":0.0},"screenPosition":{"x":0.29323676,"y":0.14325239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.891707,"y":57.63566,"z":0.0},"screenPosition":{"x":0.22691058,"y":0.13382858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.798693,"y":55.149616,"z":1.4210855E-14},"screenPosition":{"x":0.5374728,"y":0.099300206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.801011,"y":64.54393,"z":1.4210855E-14},"screenPosition":{"x":0.26668775,"y":0.22977683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.524977,"y":63.750046,"z":0.0},"screenPosition":{"x":0.21927036,"y":0.21875064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.406828,"y":66.58671,"z":1.4210855E-14},"screenPosition":{"x":0.40430892,"y":0.2581487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.155287,"y":65.45159,"z":0.0},"screenPosition":{"x":0.37823516,"y":0.24238321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.537208,"y":60.8039,"z":0.0},"screenPosition":{"x":0.21952516,"y":0.17783195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.525448,"y":63.636658,"z":0.0},"screenPosition":{"x":0.21928017,"y":0.2171758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.153465,"y":59.219193,"z":1.4210855E-14},"screenPosition":{"x":0.16986385,"y":0.15582211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.6737423,"y":59.219193,"z":0.0},"screenPosition":{"x":0.1390363,"y":0.15582211},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.670203,"y":56.166283,"z":0.0},"screenPosition":{"x":0.2222959,"y":0.1134206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":9.336861,"y":49.059746,"z":1.4210855E-14},"screenPosition":{"x":0.19451794,"y":0.014718712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.835928,"y":48.83453,"z":0.0},"screenPosition":{"x":0.24658184,"y":0.011590694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.383882,"y":60.8039,"z":0.0},"screenPosition":{"x":0.27883086,"y":0.17783195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.2450075,"y":63.97684,"z":0.0},"screenPosition":{"x":0.17177099,"y":0.22190055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.166294,"y":60.8039,"z":1.4210855E-14},"screenPosition":{"x":0.37846446,"y":0.17783195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.222669,"y":60.237797,"z":1.4210855E-14},"screenPosition":{"x":0.2338056,"y":0.16996942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.569745,"y":65.45159,"z":0.0},"screenPosition":{"x":0.2618697,"y":0.24238321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.559795,"y":61.37015,"z":1.4210855E-14},"screenPosition":{"x":0.24082907,"y":0.18569656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.993134,"y":60.690666,"z":0.0},"screenPosition":{"x":0.2290236,"y":0.17625928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":6.798374,"y":57.070393,"z":1.4210855E-14},"screenPosition":{"x":0.1416328,"y":0.1259777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.356194,"y":65.90556,"z":0.0},"screenPosition":{"x":0.36158735,"y":0.2486884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.303337,"y":58.201073,"z":1.4210855E-14},"screenPosition":{"x":0.29798618,"y":0.14168155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.029349,"y":64.430504,"z":1.4210855E-14},"screenPosition":{"x":0.27144477,"y":0.22820142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.48338,"y":60.690666,"z":0.0},"screenPosition":{"x":0.36423707,"y":0.17625928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.668835,"y":62.616432,"z":1.4210855E-14},"screenPosition":{"x":0.24310073,"y":0.20300601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.495518,"y":69.19975,"z":0.0},"screenPosition":{"x":0.30198994,"y":0.29444104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.508016,"y":67.83603,"z":0.0},"screenPosition":{"x":0.21891698,"y":0.2755004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.012269,"y":64.99771,"z":0.0},"screenPosition":{"x":0.16692227,"y":0.23607935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.414364,"y":62.956455,"z":0.0},"screenPosition":{"x":0.4044659,"y":0.20772852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.431379,"y":58.879765,"z":0.0},"screenPosition":{"x":0.2173204,"y":0.15110785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.107008,"y":64.20366,"z":0.0},"screenPosition":{"x":0.33556268,"y":0.22505082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.890205,"y":69.654526,"z":1.4210855E-14},"screenPosition":{"x":0.3518793,"y":0.3007573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.756588,"y":62.729767,"z":0.0},"screenPosition":{"x":0.4115956,"y":0.2045801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.838982,"y":65.56508,"z":0.0},"screenPosition":{"x":0.39247876,"y":0.24395938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.001312,"y":70.79187,"z":0.0},"screenPosition":{"x":0.35419402,"y":0.31655374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.5479,"y":69.654526,"z":0.0},"screenPosition":{"x":0.34474787,"y":0.3007573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.741188,"y":72.38516,"z":0.0},"screenPosition":{"x":0.32794142,"y":0.33868283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.909803,"y":73.751785,"z":1.4210855E-14},"screenPosition":{"x":0.28978756,"y":0.35766372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.660786,"y":79.79814,"z":1.4210855E-14},"screenPosition":{"x":0.2845997,"y":0.44164085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.51477,"y":81.74115,"z":0.0},"screenPosition":{"x":0.3440577,"y":0.46862707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.430742,"y":81.51247,"z":0.0},"screenPosition":{"x":0.36314046,"y":0.46545094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.613087,"y":84.83071,"z":1.4210855E-14},"screenPosition":{"x":0.26277265,"y":0.5115377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.011708,"y":86.778275,"z":1.4210855E-14},"screenPosition":{"x":0.3127439,"y":0.53858715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.852192,"y":87.92472,"z":1.4210855E-14},"screenPosition":{"x":0.43442068,"y":0.55451},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.173965,"y":82.99932,"z":1.4210855E-14},"screenPosition":{"x":0.42029095,"y":0.48610172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.09729,"y":78.427666,"z":1.4210855E-14},"screenPosition":{"x":0.4395269,"y":0.42260647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.818634,"y":89.07178,"z":0.0},"screenPosition":{"x":0.41288823,"y":0.57044137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.913353,"y":89.07178,"z":1.4210855E-14},"screenPosition":{"x":0.47736153,"y":0.57044137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.83222,"y":87.58072,"z":0.0},"screenPosition":{"x":0.26733792,"y":0.54973227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.643425,"y":88.0394,"z":1.4210855E-14},"screenPosition":{"x":0.36757135,"y":0.55610275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.817505,"y":89.64554,"z":0.0},"screenPosition":{"x":0.41286469,"y":0.5784102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.338987,"y":89.98987,"z":0.0},"screenPosition":{"x":0.46539557,"y":0.5831926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.315739,"y":81.74115,"z":0.0},"screenPosition":{"x":0.36074457,"y":0.46862707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.721054,"y":84.02929,"z":0.0},"screenPosition":{"x":0.49418864,"y":0.5004068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.01404,"y":77.85689,"z":0.0},"screenPosition":{"x":0.54195917,"y":0.41467902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.383673,"y":77.74275,"z":0.0},"screenPosition":{"x":0.4038265,"y":0.4130938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.399714,"y":81.96986,"z":0.0},"screenPosition":{"x":0.3416607,"y":0.47180352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.325745,"y":81.28381,"z":0.0},"screenPosition":{"x":0.52761966,"y":0.46227518},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.061352,"y":87.23678,"z":0.0},"screenPosition":{"x":0.50127816,"y":0.54495525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.325825,"y":81.169495,"z":0.0},"screenPosition":{"x":0.5276213,"y":0.4606874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.71273,"y":98.270294,"z":1.4210855E-14},"screenPosition":{"x":0.28568187,"y":0.6981985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.431911,"y":99.53816,"z":1.4210855E-14},"screenPosition":{"x":0.32149816,"y":0.7158078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.774263,"y":100.345375,"z":0.0},"screenPosition":{"x":0.32863048,"y":0.7270191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.610971,"y":101.152885,"z":1.4210855E-14},"screenPosition":{"x":0.36689526,"y":0.7382346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.83666,"y":102.88429,"z":0.0},"screenPosition":{"x":0.37159708,"y":0.7622819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.479057,"y":104.15488,"z":0.0},"screenPosition":{"x":0.426647,"y":0.77992886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.617928,"y":106.35128,"z":1.4210855E-14},"screenPosition":{"x":0.5128735,"y":0.8104344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.808409,"y":110.17139,"z":0.0},"screenPosition":{"x":0.49600852,"y":0.86349154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.420399,"y":110.98258,"z":1.4210855E-14},"screenPosition":{"x":0.5295917,"y":0.8747581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.765513,"y":116.78568,"z":1.4210855E-14},"screenPosition":{"x":0.28678152,"y":0.9553567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.688751,"y":115.73998,"z":0.0},"screenPosition":{"x":0.43101564,"y":0.94083303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.958067,"y":116.08849,"z":1.4210855E-14},"screenPosition":{"x":0.39495972,"y":0.9456735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.188978,"y":116.43706,"z":0.0},"screenPosition":{"x":0.33727038,"y":0.95051473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.650157,"y":116.78568,"z":1.4210855E-14},"screenPosition":{"x":0.28437826,"y":0.9553567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.649464,"y":117.13437,"z":0.0},"screenPosition":{"x":0.22186382,"y":0.96019953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":8.114119,"y":116.55326,"z":1.4210855E-14},"screenPosition":{"x":0.16904414,"y":0.95212865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":5.2421007,"y":114.34649,"z":0.0},"screenPosition":{"x":0.10921043,"y":0.92147905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":7.4549856,"y":109.707985,"z":0.0},"screenPosition":{"x":0.1553122,"y":0.85705537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":10.565955,"y":109.3605,"z":0.0},"screenPosition":{"x":0.22012407,"y":0.8522292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.743073,"y":111.098495,"z":1.4210855E-14},"screenPosition":{"x":0.3279807,"y":0.876368},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":17.925863,"y":113.65008,"z":1.4210855E-14},"screenPosition":{"x":0.3734555,"y":0.91180664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.613611,"y":115.391525,"z":0.0},"screenPosition":{"x":0.38778356,"y":0.9359934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.571972,"y":116.55326,"z":0.0},"screenPosition":{"x":0.42858276,"y":0.95212865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.455345,"y":116.90191,"z":0.0},"screenPosition":{"x":0.48865303,"y":0.95697093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.108913,"y":116.32086,"z":1.4210855E-14},"screenPosition":{"x":0.5439357,"y":0.9489009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.646294,"y":113.882195,"z":1.4210855E-14},"screenPosition":{"x":0.59679776,"y":0.9150304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.185274,"y":110.17139,"z":0.0},"screenPosition":{"x":0.58719325,"y":0.86349154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.084692,"y":107.392456,"z":1.4210855E-14},"screenPosition":{"x":0.46009776,"y":0.82489526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.234138,"y":112.14196,"z":0.0},"screenPosition":{"x":0.42154455,"y":0.89086056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.768179,"y":114.69478,"z":1.4210855E-14},"screenPosition":{"x":0.41183704,"y":0.9263164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.955471,"y":116.32086,"z":0.0},"screenPosition":{"x":0.5199056,"y":0.9489009},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.49195,"y":118.76228,"z":1.4210855E-14},"screenPosition":{"x":0.51024896,"y":0.98280954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.953407,"y":118.99494,"z":0.0},"screenPosition":{"x":0.51986265,"y":0.9860409},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.069687,"y":117.831894,"z":0.0},"screenPosition":{"x":0.58478516,"y":0.96988744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.260153,"y":113.766136,"z":1.4210855E-14},"screenPosition":{"x":0.63041985,"y":0.91341853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.107044,"y":111.910034,"z":0.0},"screenPosition":{"x":0.60639673,"y":0.8876394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.07007,"y":110.634895,"z":0.0},"screenPosition":{"x":0.5847931,"y":0.8699291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.120098,"y":107.85536,"z":0.0},"screenPosition":{"x":0.4816687,"y":0.8313245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.868597,"y":107.50818,"z":0.0},"screenPosition":{"x":0.33059576,"y":0.82650244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.690168,"y":104.15488,"z":1.4210855E-14},"screenPosition":{"x":0.5560452,"y":0.77992886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.102007,"y":102.65336,"z":1.4210855E-14},"screenPosition":{"x":0.39795846,"y":0.75907445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.938633,"y":108.318375,"z":1.4210855E-14},"screenPosition":{"x":0.3737215,"y":0.83775514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.478397,"y":108.202614,"z":0.0},"screenPosition":{"x":0.36413327,"y":0.83614737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.817892,"y":110.634895,"z":1.4210855E-14},"screenPosition":{"x":0.37120607,"y":0.8699291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.50433,"y":112.721886,"z":0.0},"screenPosition":{"x":0.38550687,"y":0.89891505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.112106,"y":115.73998,"z":0.0},"screenPosition":{"x":0.41900223,"y":0.94083303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.84429,"y":114.23041,"z":1.4210855E-14},"screenPosition":{"x":0.45508936,"y":0.91986674},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.001577,"y":110.634895,"z":0.0},"screenPosition":{"x":0.47919953,"y":0.8699291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.076,"y":109.3605,"z":0.0},"screenPosition":{"x":0.5224167,"y":0.8522292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.41568,"y":111.79408,"z":0.0},"screenPosition":{"x":0.59199333,"y":0.88602895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.686026,"y":115.27538,"z":1.4210855E-14},"screenPosition":{"x":0.55595887,"y":0.9343803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.53145,"y":117.4831,"z":1.4210855E-14},"screenPosition":{"x":0.53190523,"y":0.9650431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.762444,"y":117.4831,"z":1.4210855E-14},"screenPosition":{"x":0.4742176,"y":0.9650431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.267115,"y":115.62382,"z":1.4210855E-14},"screenPosition":{"x":0.38056487,"y":0.9392197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.160757,"y":111.79408,"z":1.4210855E-14},"screenPosition":{"x":0.3783491,"y":0.88602895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.04621,"y":108.89727,"z":1.4210855E-14},"screenPosition":{"x":0.4384627,"y":0.8457954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.465067,"y":108.202614,"z":0.0},"screenPosition":{"x":0.48885557,"y":0.83614737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.652151,"y":108.78148,"z":0.0},"screenPosition":{"x":0.53441983,"y":0.8441872},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.567781,"y":111.33033,"z":0.0},"screenPosition":{"x":0.61599547,"y":0.87958795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.813797,"y":105.07941,"z":0.0},"screenPosition":{"x":0.7669541,"y":0.7927695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.826614,"y":108.202614,"z":0.0},"screenPosition":{"x":0.7047211,"y":0.83614737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.10091,"y":109.59215,"z":0.0},"screenPosition":{"x":0.66876894,"y":0.8554465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.452757,"y":112.02599,"z":0.0},"screenPosition":{"x":0.61359906,"y":0.8892499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.263496,"y":111.562195,"z":0.0},"screenPosition":{"x":0.5679895,"y":0.88280827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.03418,"y":107.73963,"z":1.4210855E-14},"screenPosition":{"x":0.5632121,"y":0.8297171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.026133,"y":105.07941,"z":0.0},"screenPosition":{"x":0.6255444,"y":0.7927695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.129124,"y":102.19157,"z":0.0},"screenPosition":{"x":0.69019014,"y":0.75266063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.598902,"y":100.46072,"z":0.0},"screenPosition":{"x":0.6374771,"y":0.728621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.725813,"y":100.691414,"z":1.4210855E-14},"screenPosition":{"x":0.5776211,"y":0.7318252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.203876,"y":104.501526,"z":1.4210855E-14},"screenPosition":{"x":0.46258077,"y":0.7847434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.26516,"y":104.61709,"z":1.4210855E-14},"screenPosition":{"x":0.56802416,"y":0.7863485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.874699,"y":97.69424,"z":0.0},"screenPosition":{"x":0.60155624,"y":0.6901977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.931347,"y":100.23004,"z":0.0},"screenPosition":{"x":0.70690304,"y":0.7254172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.009377,"y":97.80943,"z":1.4210855E-14},"screenPosition":{"x":0.6876953,"y":0.6917977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.940989,"y":96.08209,"z":1.4210855E-14},"screenPosition":{"x":0.6446039,"y":0.6678068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.300455,"y":95.96698,"z":1.4210855E-14},"screenPosition":{"x":0.5895928,"y":0.6662081},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.348862,"y":95.85188,"z":1.4210855E-14},"screenPosition":{"x":0.54893464,"y":0.66460943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.692703,"y":97.34867,"z":0.0},"screenPosition":{"x":0.556098,"y":0.6853982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.955698,"y":100.345375,"z":0.0},"screenPosition":{"x":0.5824104,"y":0.7270191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.334923,"y":101.152885,"z":0.0},"screenPosition":{"x":0.6111442,"y":0.7382346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.48159,"y":95.736786,"z":0.0},"screenPosition":{"x":0.63503313,"y":0.6630109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.16149,"y":100.46072,"z":0.0},"screenPosition":{"x":0.71169776,"y":0.728621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.223534,"y":96.88801,"z":1.4210855E-14},"screenPosition":{"x":0.7546569,"y":0.67900014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.986084,"y":92.516624,"z":1.4210855E-14},"screenPosition":{"x":0.7497101,"y":0.61828643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.57308,"y":89.186516,"z":0.0},"screenPosition":{"x":0.69943917,"y":0.57203496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.050262,"y":98.500755,"z":1.4210855E-14},"screenPosition":{"x":0.50104713,"y":0.7013994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.036345,"y":100.345375,"z":1.4210855E-14},"screenPosition":{"x":0.56325716,"y":0.7270191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.567053,"y":90.90834,"z":0.0},"screenPosition":{"x":0.47014692,"y":0.59594923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.578737,"y":95.16141,"z":0.0},"screenPosition":{"x":0.5537237,"y":0.6550195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.968155,"y":99.88407,"z":0.0},"screenPosition":{"x":0.5201699,"y":0.7206121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.300455,"y":100.46072,"z":0.0},"screenPosition":{"x":0.5895928,"y":0.728621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.679485,"y":100.345375,"z":0.0},"screenPosition":{"x":0.6183226,"y":0.7270191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.584057,"y":98.15507,"z":0.0},"screenPosition":{"x":0.6996679,"y":0.6965982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.83102,"y":88.38347,"z":0.0},"screenPosition":{"x":0.4964796,"y":0.56088156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.841612,"y":92.516624,"z":0.0},"screenPosition":{"x":0.5800336,"y":0.61828643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.759275,"y":92.2868,"z":0.0},"screenPosition":{"x":0.59915155,"y":0.61509436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.039074,"y":91.02318,"z":1.4210855E-14},"screenPosition":{"x":0.563314,"y":0.5975442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.433065,"y":91.9421,"z":1.4210855E-14},"screenPosition":{"x":0.52985555,"y":0.6103069},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.44989,"y":92.746475,"z":1.4210855E-14},"screenPosition":{"x":0.46770602,"y":0.6214788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.16811,"y":95.39154,"z":1.4210855E-14},"screenPosition":{"x":0.5035023,"y":0.6582158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.956001,"y":96.54258,"z":1.4210855E-14},"screenPosition":{"x":0.5824167,"y":0.6742025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.827059,"y":97.57904,"z":0.0},"screenPosition":{"x":0.6422304,"y":0.6885978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.27482,"y":99.30758,"z":0.0},"screenPosition":{"x":0.7140587,"y":0.7126053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.360413,"y":103.34624,"z":0.0},"screenPosition":{"x":0.69500864,"y":0.76869774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.456165,"y":98.15507,"z":0.0},"screenPosition":{"x":0.40533677,"y":0.6965982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.962093,"y":107.73963,"z":1.4210855E-14},"screenPosition":{"x":0.5200436,"y":0.8297171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.742706,"y":105.195,"z":1.4210855E-14},"screenPosition":{"x":0.45297304,"y":0.794375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.898388,"y":101.03751,"z":0.0},"screenPosition":{"x":0.47704974,"y":0.7366321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.64526,"y":100.92214,"z":1.4210855E-14},"screenPosition":{"x":0.59677625,"y":0.7350297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.333422,"y":94.0111,"z":0.0},"screenPosition":{"x":0.46527964,"y":0.63904303},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.005383,"y":94.12611,"z":0.0},"screenPosition":{"x":0.5417788,"y":0.6406403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.219244,"y":97.69424,"z":0.0},"screenPosition":{"x":0.60873425,"y":0.6901977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.564735,"y":100.92214,"z":1.4210855E-14},"screenPosition":{"x":0.615932,"y":0.7350297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.450508,"y":103.57725,"z":1.4210855E-14},"screenPosition":{"x":0.6135523,"y":0.7719062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.939337,"y":104.03934,"z":0.0},"screenPosition":{"x":0.43623617,"y":0.7783241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.766464,"y":89.53077,"z":1.4210855E-14},"screenPosition":{"x":0.45346802,"y":0.5768163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.37082,"y":100.46072,"z":1.4210855E-14},"screenPosition":{"x":0.42439207,"y":0.728621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.333838,"y":105.77306,"z":1.4210855E-14},"screenPosition":{"x":0.34028828,"y":0.8024036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.307646,"y":102.65336,"z":0.0},"screenPosition":{"x":0.3189093,"y":0.75907445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.308126,"y":89.416016,"z":0.0},"screenPosition":{"x":0.44391927,"y":0.57522243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.279676,"y":87.69538,"z":1.4210855E-14},"screenPosition":{"x":0.42249325,"y":0.5513247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.583824,"y":91.82722,"z":1.4210855E-14},"screenPosition":{"x":0.40799633,"y":0.6087113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.301413,"y":93.55115,"z":1.4210855E-14},"screenPosition":{"x":0.44377944,"y":0.63265485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.939234,"y":94.356125,"z":1.4210855E-14},"screenPosition":{"x":0.35290068,"y":0.6438351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.927708,"y":98.73125,"z":0.0},"screenPosition":{"x":0.35266057,"y":0.7046007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.606829,"y":97.00317,"z":1.4210855E-14},"screenPosition":{"x":0.42930892,"y":0.6805995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.301413,"y":93.55115,"z":1.4210855E-14},"screenPosition":{"x":0.44377944,"y":0.63265485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.10904,"y":90.44906,"z":0.0},"screenPosition":{"x":0.460605,"y":0.5895702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.424768,"y":88.15408,"z":1.4210855E-14},"screenPosition":{"x":0.44634935,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.907686,"y":86.31986,"z":0.0},"screenPosition":{"x":0.39391014,"y":0.53222036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.325848,"y":86.31986,"z":1.4210855E-14},"screenPosition":{"x":0.29845515,"y":0.53222036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.363293,"y":90.44906,"z":1.4210855E-14},"screenPosition":{"x":0.2575686,"y":0.5895702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.920178,"y":95.04635,"z":0.0},"screenPosition":{"x":0.26917037,"y":0.65342146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.341784,"y":97.92464,"z":0.0},"screenPosition":{"x":0.4029538,"y":0.69339776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.489744,"y":87.23678,"z":0.0},"screenPosition":{"x":0.260203,"y":0.54495525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.11102,"y":89.07178,"z":0.0},"screenPosition":{"x":0.4606462,"y":0.57044137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.936596,"y":87.35142,"z":0.0},"screenPosition":{"x":0.41534576,"y":0.54654753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.618322,"y":85.746994,"z":1.4210855E-14},"screenPosition":{"x":0.34621504,"y":0.5242638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":12.3751745,"y":87.23678,"z":1.4210855E-14},"screenPosition":{"x":0.25781614,"y":0.54495525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.768181,"y":91.36773,"z":1.4210855E-14},"screenPosition":{"x":0.3076704,"y":0.60232955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.367662,"y":93.55115,"z":0.0},"screenPosition":{"x":0.34099296,"y":0.63265485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.137268,"y":102.422455,"z":0.0},"screenPosition":{"x":0.41952643,"y":0.75586736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.446924,"y":94.9313,"z":0.0},"screenPosition":{"x":0.46764424,"y":0.6518235},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.40604,"y":99.88407,"z":1.4210855E-14},"screenPosition":{"x":0.44595918,"y":0.7206121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.059967,"y":100.691414,"z":1.4210855E-14},"screenPosition":{"x":0.43874928,"y":0.7318252},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.90732,"y":102.422455,"z":0.0},"screenPosition":{"x":0.41473582,"y":0.75586736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.52057,"y":105.54182,"z":1.4210855E-14},"screenPosition":{"x":0.3858452,"y":0.7991919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.523268,"y":107.50818,"z":0.0},"screenPosition":{"x":0.3234014,"y":0.82650244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":11.954426,"y":107.6239,"z":0.0},"screenPosition":{"x":0.24905054,"y":0.82810974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.168414,"y":99.42287,"z":0.0},"screenPosition":{"x":0.29517528,"y":0.7142065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.513098,"y":99.42287,"z":1.4210855E-14},"screenPosition":{"x":0.3023562,"y":0.7142065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.849611,"y":89.416016,"z":0.0},"screenPosition":{"x":0.4343669,"y":0.57522243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.707907,"y":87.12215,"z":0.0},"screenPosition":{"x":0.41058138,"y":0.5433631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.360634,"y":88.842316,"z":1.4210855E-14},"screenPosition":{"x":0.40334654,"y":0.5672544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.10673,"y":92.05699,"z":0.0},"screenPosition":{"x":0.46055686,"y":0.61190265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.537203,"y":89.53077,"z":1.4210855E-14},"screenPosition":{"x":0.44869173,"y":0.5768163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.738007,"y":87.69538,"z":0.0},"screenPosition":{"x":0.4320418,"y":0.5513247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.943048,"y":84.02929,"z":1.4210855E-14},"screenPosition":{"x":0.4154802,"y":0.5004068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.028896,"y":83.228165,"z":1.4210855E-14},"screenPosition":{"x":0.39643532,"y":0.48928005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.548373,"y":79.227005,"z":1.4210855E-14},"screenPosition":{"x":0.2822578,"y":0.43370837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.561157,"y":84.37272,"z":1.4210855E-14},"screenPosition":{"x":0.30335742,"y":0.50517666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.613655,"y":87.46607,"z":0.0},"screenPosition":{"x":0.34611782,"y":0.5481398},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.824505,"y":86.0907,"z":1.4210855E-14},"screenPosition":{"x":0.41301054,"y":0.5290375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.923162,"y":79.227005,"z":0.0},"screenPosition":{"x":0.39423257,"y":0.43370837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.863283,"y":81.51247,"z":0.0},"screenPosition":{"x":0.43465173,"y":0.46545094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.76203,"y":74.891304,"z":0.0},"screenPosition":{"x":0.34920892,"y":0.3734904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.274391,"y":75.34728,"z":0.0},"screenPosition":{"x":0.40154982,"y":0.3798234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.934862,"y":73.865715,"z":0.0},"screenPosition":{"x":0.3944763,"y":0.35924602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.427814,"y":71.815994,"z":0.0},"screenPosition":{"x":0.34224612,"y":0.3307777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.46359,"y":70.67811,"z":0.0},"screenPosition":{"x":0.28049147,"y":0.3149737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.071933,"y":67.26807,"z":0.0},"screenPosition":{"x":0.3139986,"y":0.267612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.07168,"y":80.36943,"z":0.0},"screenPosition":{"x":0.58482665,"y":0.44957545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.743484,"y":62.956455,"z":0.0},"screenPosition":{"x":0.49465594,"y":0.20772852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.236029,"y":63.636658,"z":1.4210855E-14},"screenPosition":{"x":0.4424173,"y":0.2171758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.471056,"y":65.56508,"z":0.0},"screenPosition":{"x":0.36398035,"y":0.24395938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.731106,"y":60.917137,"z":1.4210855E-14},"screenPosition":{"x":0.5777314,"y":0.1794047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.963364,"y":60.8039,"z":0.0},"screenPosition":{"x":0.39507008,"y":0.17783195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.289248,"y":61.709976,"z":0.0},"screenPosition":{"x":0.48519266,"y":0.1904163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.418362,"y":61.030384,"z":0.0},"screenPosition":{"x":0.40454918,"y":0.18097754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.844976,"y":60.917137,"z":1.4210855E-14},"screenPosition":{"x":0.58010364,"y":0.1794047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.584614,"y":59.332348,"z":0.0},"screenPosition":{"x":0.44967946,"y":0.15739371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.928627,"y":57.63566,"z":0.0},"screenPosition":{"x":0.4568464,"y":0.13382858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.561188,"y":58.766636,"z":0.0},"screenPosition":{"x":0.42835808,"y":0.1495366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.477104,"y":55.3755,"z":1.4210855E-14},"screenPosition":{"x":0.44743967,"y":0.10243749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.931808,"y":54.02055,"z":1.4210855E-14},"screenPosition":{"x":0.352746,"y":0.08361876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.893877,"y":50.862343,"z":1.4210855E-14},"screenPosition":{"x":0.41445574,"y":0.039754752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.983221,"y":51.200497,"z":1.4210855E-14},"screenPosition":{"x":0.49965045,"y":0.044451367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.800674,"y":51.76421,"z":0.0},"screenPosition":{"x":0.53751403,"y":0.05228071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.959469,"y":53.11773,"z":1.4210855E-14},"screenPosition":{"x":0.58248895,"y":0.07107957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.006159,"y":55.036682,"z":0.0},"screenPosition":{"x":0.6251283,"y":0.09773169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.349411,"y":59.445507,"z":0.0},"screenPosition":{"x":0.6322794,"y":0.15896538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.464386,"y":61.709976,"z":0.0},"screenPosition":{"x":0.6346747,"y":0.1904163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.996927,"y":70.22312,"z":0.0},"screenPosition":{"x":0.43743598,"y":0.30865446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.73829,"y":67.83603,"z":1.4210855E-14},"screenPosition":{"x":0.49454772,"y":0.2755004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.926414,"y":72.27132,"z":0.0},"screenPosition":{"x":0.6443003,"y":0.33710164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.177336,"y":67.26807,"z":0.0},"screenPosition":{"x":0.39952785,"y":0.267612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.424877,"y":71.01941,"z":1.4210855E-14},"screenPosition":{"x":0.42551827,"y":0.319714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.41716,"y":73.865715,"z":0.0},"screenPosition":{"x":0.50869083,"y":0.35924602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.212526,"y":66.13259,"z":0.0},"screenPosition":{"x":0.6085943,"y":0.25184152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.547222,"y":68.063255,"z":0.0},"screenPosition":{"x":0.69890046,"y":0.27865633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.211994,"y":63.636658,"z":0.0},"screenPosition":{"x":0.6085832,"y":0.2171758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.297459,"y":54.697918,"z":0.0},"screenPosition":{"x":0.48536372,"y":0.09302663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.74987,"y":56.95736,"z":0.0},"screenPosition":{"x":0.49478897,"y":0.124407776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.251825,"y":58.766636,"z":0.0},"screenPosition":{"x":0.546913,"y":0.1495366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.620162,"y":58.31417,"z":0.0},"screenPosition":{"x":0.2837534,"y":0.14325239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.411291,"y":54.585007,"z":1.4210855E-14},"screenPosition":{"x":0.48773524,"y":0.09145845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.776672,"y":52.666462,"z":0.0},"screenPosition":{"x":0.412014,"y":0.06481195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.98844,"y":50.298866,"z":0.0},"screenPosition":{"x":0.29142582,"y":0.031928718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.420712,"y":59.89821,"z":0.0},"screenPosition":{"x":0.40459815,"y":0.16525291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.972023,"y":62.729767,"z":0.0},"screenPosition":{"x":0.31191716,"y":0.2045801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.298056,"y":64.09025,"z":0.0},"screenPosition":{"x":0.40204284,"y":0.22347565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":14.104275,"y":49.622894,"z":0.0},"screenPosition":{"x":0.29383907,"y":0.022540204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.280746,"y":57.74873,"z":1.4210855E-14},"screenPosition":{"x":0.27668223,"y":0.13539901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.323741,"y":59.445507,"z":0.0},"screenPosition":{"x":0.3192446,"y":0.15896538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.683664,"y":53.907677,"z":0.0},"screenPosition":{"x":0.43090966,"y":0.08205107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.899298,"y":60.690666,"z":1.4210855E-14},"screenPosition":{"x":0.43540204,"y":0.17625928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.967316,"y":58.9929,"z":0.0},"screenPosition":{"x":0.3951524,"y":0.15267919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.667239,"y":58.766636,"z":0.0},"screenPosition":{"x":0.32640082,"y":0.1495366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.509192,"y":60.237797,"z":0.0},"screenPosition":{"x":0.38560814,"y":0.16996942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.899298,"y":60.690666,"z":1.4210855E-14},"screenPosition":{"x":0.43540204,"y":0.17625928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.632032,"y":60.690666,"z":1.4210855E-14},"screenPosition":{"x":0.49233404,"y":0.17625928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.592949,"y":59.558674,"z":1.4210855E-14},"screenPosition":{"x":0.55401975,"y":0.16053714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.41141,"y":74.77733,"z":0.0},"screenPosition":{"x":0.7585711,"y":0.37190735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.18626,"y":73.18226,"z":1.4210855E-14},"screenPosition":{"x":0.58721375,"y":0.34975356},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":27.95834,"y":67.26807,"z":1.4210855E-14},"screenPosition":{"x":0.5824654,"y":0.267612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.249004,"y":64.65737,"z":0.0},"screenPosition":{"x":0.54685426,"y":0.23135234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.830933,"y":63.86344,"z":0.0},"screenPosition":{"x":0.47564444,"y":0.22032556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.871044,"y":70.22312,"z":0.0},"screenPosition":{"x":0.60148007,"y":0.30865446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.8443,"y":67.26807,"z":1.4210855E-14},"screenPosition":{"x":0.58008957,"y":0.267612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.362974,"y":64.65737,"z":1.4210855E-14},"screenPosition":{"x":0.5492286,"y":0.23135234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.603941,"y":63.183163,"z":0.0},"screenPosition":{"x":0.47091544,"y":0.21087728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.192549,"y":69.88194,"z":1.4210855E-14},"screenPosition":{"x":0.5040114,"y":0.3039159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.371431,"y":70.564354,"z":0.0},"screenPosition":{"x":0.38273817,"y":0.31339377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.388046,"y":67.72242,"z":1.4210855E-14},"screenPosition":{"x":0.5705843,"y":0.27392253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.328827,"y":76.82988,"z":0.0},"screenPosition":{"x":0.52768385,"y":0.40041497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.072142,"y":71.70218,"z":0.0},"screenPosition":{"x":0.5848363,"y":0.32919693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.990343,"y":71.13319,"z":0.0},"screenPosition":{"x":0.52063215,"y":0.3212943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.273859,"y":68.290504,"z":1.4210855E-14},"screenPosition":{"x":0.5682054,"y":0.2818126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.410656,"y":81.05518,"z":1.4210855E-14},"screenPosition":{"x":0.50855535,"y":0.45909974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.669146,"y":78.3135,"z":0.0},"screenPosition":{"x":0.45144054,"y":0.4210208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.533041,"y":74.32147,"z":1.4210855E-14},"screenPosition":{"x":0.4277717,"y":0.365576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.279945,"y":69.654526,"z":0.0},"screenPosition":{"x":0.48499888,"y":0.3007573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.186365,"y":69.19975,"z":0.0},"screenPosition":{"x":0.58721596,"y":0.29444104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.699152,"y":74.20753,"z":1.4210855E-14},"screenPosition":{"x":0.6395657,"y":0.36399338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.126642,"y":78.19933,"z":0.0},"screenPosition":{"x":0.4609717,"y":0.41943523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.132215,"y":74.32147,"z":0.0},"screenPosition":{"x":0.4610878,"y":0.365576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.757679,"y":77.28627,"z":0.0},"screenPosition":{"x":0.5991183,"y":0.40675372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.385672,"y":78.88439,"z":1.4210855E-14},"screenPosition":{"x":0.5705348,"y":0.4289499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.982136,"y":72.84061,"z":0.0},"screenPosition":{"x":0.68712777,"y":0.34500846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.129103,"y":76.7158,"z":0.0},"screenPosition":{"x":0.6276896,"y":0.3988305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.419737,"y":71.01941,"z":1.4210855E-14},"screenPosition":{"x":0.5087445,"y":0.319714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.152716,"y":69.19975,"z":0.0},"screenPosition":{"x":0.6490149,"y":0.29444104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.981636,"y":72.38516,"z":1.4210855E-14},"screenPosition":{"x":0.68711746,"y":0.33868283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.671288,"y":77.514496,"z":1.4210855E-14},"screenPosition":{"x":0.5348185,"y":0.40992358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.160603,"y":81.05518,"z":1.4210855E-14},"screenPosition":{"x":0.6491792,"y":0.45909974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.868553,"y":80.71228,"z":0.0},"screenPosition":{"x":0.51809484,"y":0.4543372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.767235,"y":72.95448,"z":0.0},"screenPosition":{"x":0.34931737,"y":0.34659007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.550508,"y":81.05518,"z":1.4210855E-14},"screenPosition":{"x":0.44896895,"y":0.45909974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.694267,"y":67.49523,"z":1.4210855E-14},"screenPosition":{"x":0.36863056,"y":0.27076712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.296148,"y":64.99771,"z":0.0},"screenPosition":{"x":0.40200308,"y":0.23607935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.766928,"y":73.06837,"z":1.4210855E-14},"screenPosition":{"x":0.349311,"y":0.34817177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.001612,"y":70.67811,"z":0.0},"screenPosition":{"x":0.35420024,"y":0.3149737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.693705,"y":67.72242,"z":1.4210855E-14},"screenPosition":{"x":0.36861885,"y":0.27392253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.06868,"y":64.77081,"z":0.0},"screenPosition":{"x":0.39726418,"y":0.23292793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.375767,"y":63.4099,"z":0.0},"screenPosition":{"x":0.46616182,"y":0.21402638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.477716,"y":62.84311,"z":1.4210855E-14},"screenPosition":{"x":0.55161905,"y":0.20615427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.959473,"y":75.57531,"z":1.4210855E-14},"screenPosition":{"x":0.41582233,"y":0.38299042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.65428,"y":72.499016,"z":1.4210855E-14},"screenPosition":{"x":0.34696418,"y":0.3402641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.27258,"y":73.63787,"z":0.0},"screenPosition":{"x":0.5681787,"y":0.35608152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.787268,"y":74.66335,"z":1.4210855E-14},"screenPosition":{"x":0.5372348,"y":0.37032437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.857319,"y":69.42713,"z":1.4210855E-14},"screenPosition":{"x":0.41369414,"y":0.297599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.085146,"y":63.069805,"z":0.0},"screenPosition":{"x":0.5017739,"y":0.20930286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":15.1769285,"y":70.22312,"z":0.0},"screenPosition":{"x":0.316186,"y":0.30865446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.31434,"y":69.086075,"z":1.4210855E-14},"screenPosition":{"x":0.42321542,"y":0.2928622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.518988,"y":67.49523,"z":0.0},"screenPosition":{"x":0.40664557,"y":0.27076712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.971449,"y":62.84311,"z":0.0},"screenPosition":{"x":0.49940518,"y":0.20615427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.258904,"y":69.88194,"z":1.4210855E-14},"screenPosition":{"x":0.38039383,"y":0.3039159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":13.03218,"y":63.636658,"z":1.4210855E-14},"screenPosition":{"x":0.27150375,"y":0.2171758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.630735,"y":68.63143,"z":0.0},"screenPosition":{"x":0.40897363,"y":0.28654763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.65397,"y":72.61288,"z":1.4210855E-14},"screenPosition":{"x":0.34695774,"y":0.34184548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.750477,"y":65.79206,"z":0.0},"screenPosition":{"x":0.41146827,"y":0.24711198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.23266,"y":65.678566,"z":0.0},"screenPosition":{"x":0.4423471,"y":0.24553564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.798979,"y":61.143635,"z":1.4210855E-14},"screenPosition":{"x":0.34997872,"y":0.18255046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.283138,"y":66.92736,"z":1.4210855E-14},"screenPosition":{"x":0.4850654,"y":0.26287997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.198965,"y":63.183163,"z":0.0},"screenPosition":{"x":0.5041451,"y":0.21087728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.81838,"y":66.01907,"z":0.0},"screenPosition":{"x":0.5587163,"y":0.2502649},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.501759,"y":69.540825,"z":1.4210855E-14},"screenPosition":{"x":0.57295334,"y":0.2991781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.158794,"y":72.04365,"z":0.0},"screenPosition":{"x":0.56580824,"y":0.3339395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.389751,"y":73.41005,"z":0.0},"screenPosition":{"x":0.48728648,"y":0.35291737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.1359,"y":73.63787,"z":0.0},"screenPosition":{"x":0.37783125,"y":0.35608152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.09699,"y":67.72242,"z":1.4210855E-14},"screenPosition":{"x":0.33535394,"y":0.27392253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.13794,"y":70.33686,"z":0.0},"screenPosition":{"x":0.4612071,"y":0.31023416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.934862,"y":73.865715,"z":0.0},"screenPosition":{"x":0.3944763,"y":0.35924602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.307291,"y":69.19975,"z":0.0},"screenPosition":{"x":0.5064019,"y":0.29444104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.357191,"y":75.68933,"z":0.0},"screenPosition":{"x":0.63244146,"y":0.38457403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.499239,"y":77.628624,"z":1.4210855E-14},"screenPosition":{"x":0.48956746,"y":0.41150865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":18.479046,"y":73.41005,"z":0.0},"screenPosition":{"x":0.38498014,"y":0.35291737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.772285,"y":68.17688,"z":0.0},"screenPosition":{"x":0.43275595,"y":0.28023443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.64587,"y":77.85689,"z":0.0},"screenPosition":{"x":0.7634557,"y":0.41467902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.287575,"y":86.20528,"z":1.4210855E-14},"screenPosition":{"x":0.7351578,"y":0.53062886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.921806,"y":86.0907,"z":0.0},"screenPosition":{"x":0.79003763,"y":0.5290375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.082085,"y":88.15408,"z":0.0},"screenPosition":{"x":0.66837674,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.523388,"y":90.21945,"z":0.0},"screenPosition":{"x":0.74007064,"y":0.5863812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.57997,"y":94.816246,"z":0.0},"screenPosition":{"x":0.6995827,"y":0.6502257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.738573,"y":88.49818,"z":1.4210855E-14},"screenPosition":{"x":0.6612203,"y":0.5624746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.478046,"y":88.7276,"z":1.4210855E-14},"screenPosition":{"x":0.6349593,"y":0.5656611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.322578,"y":85.86156,"z":0.0},"screenPosition":{"x":0.5275537,"y":0.52585495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.414917,"y":83.11374,"z":0.0},"screenPosition":{"x":0.5919774,"y":0.48769084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.45105,"y":82.99932,"z":0.0},"screenPosition":{"x":0.69689685,"y":0.48610172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.664314,"y":87.35142,"z":0.0},"screenPosition":{"x":0.7638399,"y":0.54654753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.196262,"y":87.69538,"z":1.4210855E-14},"screenPosition":{"x":0.6707555,"y":0.5513247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.987549,"y":85.17427,"z":0.0},"screenPosition":{"x":0.6039073,"y":0.5163093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.559122,"y":81.74115,"z":1.4210855E-14},"screenPosition":{"x":0.61581504,"y":0.46862707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.842516,"y":84.02929,"z":1.4210855E-14},"screenPosition":{"x":0.58005244,"y":0.5004068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.15878,"y":78.3135,"z":1.4210855E-14},"screenPosition":{"x":0.64914125,"y":0.4210208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.442432,"y":75.80336,"z":1.4210855E-14},"screenPosition":{"x":0.6967173,"y":0.38615775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.928995,"y":76.48765,"z":0.0},"screenPosition":{"x":0.64435405,"y":0.39566183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.069637,"y":73.979645,"z":1.4210855E-14},"screenPosition":{"x":0.6681174,"y":0.3608284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.581676,"y":74.66335,"z":1.4210855E-14},"screenPosition":{"x":0.8037849,"y":0.37032437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.202026,"y":80.82658,"z":1.4210855E-14},"screenPosition":{"x":0.92087555,"y":0.45592463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.9739,"y":72.38516,"z":1.4210855E-14},"screenPosition":{"x":0.8536229,"y":0.33868283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.274666,"y":77.628624,"z":0.0},"screenPosition":{"x":0.8182222,"y":0.41150865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.537025,"y":78.65601,"z":1.4210855E-14},"screenPosition":{"x":0.92785466,"y":0.425778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.630844,"y":81.05518,"z":0.0},"screenPosition":{"x":0.9089759,"y":0.45909974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.316586,"y":82.31296,"z":1.4210855E-14},"screenPosition":{"x":0.8399289,"y":0.47656882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.91157,"y":81.51247,"z":1.4210855E-14},"screenPosition":{"x":0.7898244,"y":0.46545094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.695782,"y":68.17688,"z":0.0},"screenPosition":{"x":0.6394955,"y":0.28023443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.674816,"y":78.88439,"z":0.0},"screenPosition":{"x":0.7015587,"y":0.4289499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.95804,"y":77.05806,"z":0.0},"screenPosition":{"x":0.6657925,"y":0.40358418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.442268,"y":72.61288,"z":1.4210855E-14},"screenPosition":{"x":0.6133806,"y":0.34184548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.49254,"y":71.815994,"z":1.4210855E-14},"screenPosition":{"x":0.73942786,"y":0.3307777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.000443,"y":65.79206,"z":1.4210855E-14},"screenPosition":{"x":0.70834255,"y":0.24711198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.75553,"y":74.549385,"z":0.0},"screenPosition":{"x":0.68240696,"y":0.3687415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.259525,"y":71.70218,"z":0.0},"screenPosition":{"x":0.8179068,"y":0.32919693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.49675,"y":75.119286,"z":1.4210855E-14},"screenPosition":{"x":0.822849,"y":0.3766567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.80585,"y":70.67811,"z":1.4210855E-14},"screenPosition":{"x":0.7251219,"y":0.3149737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.258125,"y":68.063255,"z":0.0},"screenPosition":{"x":0.7345443,"y":0.27865633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.684776,"y":66.01907,"z":0.0},"screenPosition":{"x":0.72259957,"y":0.2502649},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.010815,"y":66.70025,"z":0.0},"screenPosition":{"x":0.6252253,"y":0.25972572},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.402706,"y":63.97684,"z":1.4210855E-14},"screenPosition":{"x":0.6750564,"y":0.22190055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.70455,"y":62.389782,"z":0.0},"screenPosition":{"x":0.74384487,"y":0.19985808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.892887,"y":61.936554,"z":0.0},"screenPosition":{"x":0.8102685,"y":0.19356324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.977524,"y":64.88426,"z":1.4210855E-14},"screenPosition":{"x":0.87453175,"y":0.2345036},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":47.590427,"y":71.13319,"z":0.0},"screenPosition":{"x":0.99146724,"y":0.3212943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.242397,"y":64.99771,"z":0.0},"screenPosition":{"x":0.81755,"y":0.23607935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.495266,"y":74.549385,"z":0.0},"screenPosition":{"x":0.82281804,"y":0.3687415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.722237,"y":72.61288,"z":1.4210855E-14},"screenPosition":{"x":0.7442132,"y":0.34184548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.725563,"y":75.57531,"z":1.4210855E-14},"screenPosition":{"x":0.91094923,"y":0.38299042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.298397,"y":75.80336,"z":1.4210855E-14},"screenPosition":{"x":0.83954996,"y":0.38615775},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.16334,"y":68.290504,"z":1.4210855E-14},"screenPosition":{"x":0.83673626,"y":0.2818126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.29521,"y":74.66335,"z":1.4210855E-14},"screenPosition":{"x":0.8394836,"y":0.37032437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.701397,"y":77.172165,"z":1.4210855E-14},"screenPosition":{"x":0.7229458,"y":0.40516892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.499743,"y":80.36943,"z":1.4210855E-14},"screenPosition":{"x":0.5729113,"y":0.44957545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.070538,"y":75.005295,"z":1.4210855E-14},"screenPosition":{"x":0.6681362,"y":0.37507352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.458176,"y":72.38516,"z":1.4210855E-14},"screenPosition":{"x":0.8845453,"y":0.33868283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.130074,"y":78.99859,"z":1.4210855E-14},"screenPosition":{"x":0.62770987,"y":0.43053597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.156883,"y":79.227005,"z":1.4210855E-14},"screenPosition":{"x":0.5657684,"y":0.43370837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.838982,"y":80.71228,"z":1.4210855E-14},"screenPosition":{"x":0.49664548,"y":0.4543372},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":20.737804,"y":87.81005,"z":1.4210855E-14},"screenPosition":{"x":0.4320376,"y":0.55291736},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.95646,"y":90.79351,"z":0.0},"screenPosition":{"x":0.58242625,"y":0.59435433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.447197,"y":91.13802,"z":0.0},"screenPosition":{"x":0.6134833,"y":0.5991392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.415138,"y":91.48259,"z":1.4210855E-14},"screenPosition":{"x":0.59198207,"y":0.6039249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.462856,"y":92.86141,"z":0.0},"screenPosition":{"x":0.6971429,"y":0.6230751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.318886,"y":86.434456,"z":1.4210855E-14},"screenPosition":{"x":0.7566435,"y":0.5338119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.74951,"y":88.38347,"z":1.4210855E-14},"screenPosition":{"x":0.74478155,"y":0.56088156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.548645,"y":86.778275,"z":1.4210855E-14},"screenPosition":{"x":0.7614301,"y":0.53858715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.90825,"y":80.02664,"z":0.0},"screenPosition":{"x":0.7897552,"y":0.44481444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.02922,"y":70.90564,"z":0.0},"screenPosition":{"x":0.81310874,"y":0.31813383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.883095,"y":80.36943,"z":-1.4210855E-14},"screenPosition":{"x":0.8517311,"y":0.44957545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.331985,"y":77.514496,"z":0.0},"screenPosition":{"x":0.86108303,"y":0.40992358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.467552,"y":73.52396,"z":0.0},"screenPosition":{"x":0.71807396,"y":0.3544994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.180843,"y":73.63787,"z":1.4210855E-14},"screenPosition":{"x":0.75376755,"y":0.35608152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.917873,"y":69.31344,"z":0.0},"screenPosition":{"x":0.72745574,"y":0.29601997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.723894,"y":70.10939,"z":0.0},"screenPosition":{"x":0.6609145,"y":0.30707484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.725529,"y":72.15748,"z":1.4210855E-14},"screenPosition":{"x":0.6609485,"y":0.33552054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.429382,"y":69.99567,"z":1.4210855E-14},"screenPosition":{"x":0.7797788,"y":0.30549535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.47509,"y":78.7702,"z":0.0},"screenPosition":{"x":0.718231,"y":0.4273639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.974087,"y":70.564354,"z":0.0},"screenPosition":{"x":0.7702935,"y":0.31339377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.109055,"y":61.82326,"z":1.4210855E-14},"screenPosition":{"x":0.7106053,"y":0.19198973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.2027,"y":66.01907,"z":1.4210855E-14},"screenPosition":{"x":0.691723,"y":0.2502649},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.517887,"y":65.22464,"z":0.0},"screenPosition":{"x":0.67745596,"y":0.23923111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.388023,"y":67.83603,"z":0.0},"screenPosition":{"x":0.5705838,"y":0.2755004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.67819,"y":61.596695,"z":1.4210855E-14},"screenPosition":{"x":0.72246224,"y":0.18884298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.780962,"y":61.48342,"z":0.0},"screenPosition":{"x":0.62043667,"y":0.18726972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.160881,"y":64.20366,"z":1.4210855E-14},"screenPosition":{"x":0.5658517,"y":0.22505082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.388023,"y":67.83603,"z":0.0},"screenPosition":{"x":0.5705838,"y":0.2755004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.300455,"y":71.36076,"z":0.0},"screenPosition":{"x":0.5895928,"y":0.32445508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.806023,"y":70.79187,"z":0.0},"screenPosition":{"x":0.7251255,"y":0.31655374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.851795,"y":66.47317,"z":1.4210855E-14},"screenPosition":{"x":0.7677457,"y":0.25657177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.045662,"y":68.517784,"z":1.4210855E-14},"screenPosition":{"x":0.5634513,"y":0.2849692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.894382,"y":60.237797,"z":0.0},"screenPosition":{"x":0.62279963,"y":0.16996942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.819832,"y":61.82326,"z":0.0},"screenPosition":{"x":0.5587465,"y":0.19198973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.098349,"y":65.22464,"z":1.4210855E-14},"screenPosition":{"x":0.6062156,"y":0.23923111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.045595,"y":68.74509,"z":1.4210855E-14},"screenPosition":{"x":0.56344986,"y":0.28812617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.07216,"y":71.36076,"z":1.4210855E-14},"screenPosition":{"x":0.58483666,"y":0.32445508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.212067,"y":63.97684,"z":0.0},"screenPosition":{"x":0.6085847,"y":0.22190055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.211802,"y":62.729767,"z":1.4210855E-14},"screenPosition":{"x":0.6085792,"y":0.2045801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.07317,"y":75.233284,"z":0.0},"screenPosition":{"x":0.5015244,"y":0.37824002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.30941,"y":59.785027,"z":1.4210855E-14},"screenPosition":{"x":0.69394606,"y":0.1636809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.211126,"y":59.558674,"z":0.0},"screenPosition":{"x":0.60856515,"y":0.16053714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.879494,"y":60.464222,"z":1.4210855E-14},"screenPosition":{"x":0.7058228,"y":0.17311418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.894087,"y":59.445507,"z":1.4210855E-14},"screenPosition":{"x":0.6227935,"y":0.15896538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.642292,"y":63.750046,"z":0.0},"screenPosition":{"x":0.59671444,"y":0.21875064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.389507,"y":63.183163,"z":0.0},"screenPosition":{"x":0.7581147,"y":0.21087728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.44911,"y":60.690666,"z":0.0},"screenPosition":{"x":0.7176898,"y":0.17625928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.257866,"y":56.279278,"z":1.4210855E-14},"screenPosition":{"x":0.65120554,"y":0.114989944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.300455,"y":55.82734,"z":1.4210855E-14},"screenPosition":{"x":0.5895928,"y":0.10871305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.59552,"y":53.11773,"z":1.4210855E-14},"screenPosition":{"x":0.55407333,"y":0.07107957},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":29.323309,"y":52.666462,"z":1.4210855E-14},"screenPosition":{"x":0.6109023,"y":0.06481195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.667015,"y":62.729767,"z":1.4210855E-14},"screenPosition":{"x":0.8055628,"y":0.2045801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.26928,"y":56.84433,"z":1.4210855E-14},"screenPosition":{"x":0.8597767,"y":0.12283793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.550512,"y":52.32807,"z":1.4210855E-14},"screenPosition":{"x":0.61563563,"y":0.060112115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.81329,"y":59.445507,"z":0.0},"screenPosition":{"x":0.7461102,"y":0.15896538},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.96854,"y":65.33811,"z":0.0},"screenPosition":{"x":0.9576779,"y":0.24080712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":48.0,"y":61.381817,"z":1.0},"screenPosition":{"x":1.0141581,"y":0.18603149},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.542202,"y":80.02664,"z":1.4210855E-14},"screenPosition":{"x":0.9279626,"y":0.44481444},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.23348,"y":82.77051,"z":0.0},"screenPosition":{"x":0.8590308,"y":0.48292375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.68808,"y":81.74115,"z":1.4210855E-14},"screenPosition":{"x":0.86850166,"y":0.46862707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.545467,"y":82.31296,"z":1.4210855E-14},"screenPosition":{"x":0.8446972,"y":0.47656882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.97323,"y":80.82658,"z":0.0},"screenPosition":{"x":0.9161089,"y":0.45592463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.69164,"y":82.88491,"z":1.4210855E-14},"screenPosition":{"x":0.8685758,"y":0.4845127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.74835,"y":83.80036,"z":0.0},"screenPosition":{"x":0.8280906,"y":0.49722728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.116505,"y":84.37272,"z":-1.4210855E-14},"screenPosition":{"x":0.77326053,"y":0.50517666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.629253,"y":85.059746,"z":1.4210855E-14},"screenPosition":{"x":0.7422761,"y":0.5147187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.653667,"y":86.778275,"z":1.4210855E-14},"screenPosition":{"x":0.68028474,"y":0.53858715},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.477873,"y":88.38347,"z":1.4210855E-14},"screenPosition":{"x":0.6349557,"y":0.56088156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.988464,"y":90.90834,"z":0.0},"screenPosition":{"x":0.60392636,"y":0.59594923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.940214,"y":94.816246,"z":1.4210855E-14},"screenPosition":{"x":0.64458776,"y":0.6502257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.20479,"y":97.11833,"z":0.0},"screenPosition":{"x":0.6709331,"y":0.682199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.097858,"y":80.02664,"z":1.4210855E-14},"screenPosition":{"x":0.52287203,"y":0.44481444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.67533,"y":99.53816,"z":0.0},"screenPosition":{"x":0.8265694,"y":0.7158078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.77307,"y":93.0913,"z":1.4210855E-14},"screenPosition":{"x":0.82860565,"y":0.626268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.925488,"y":95.736786,"z":0.0},"screenPosition":{"x":0.70678097,"y":0.6630109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.972868,"y":94.471146,"z":0.0},"screenPosition":{"x":0.6661014,"y":0.6454326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.780987,"y":99.077034,"z":1.4210855E-14},"screenPosition":{"x":0.68293726,"y":0.7094032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.747295,"y":99.42287,"z":1.4210855E-14},"screenPosition":{"x":0.661402,"y":0.7142065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.795164,"y":102.5379,"z":1.4210855E-14},"screenPosition":{"x":0.6207326,"y":0.7574709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.284084,"y":106.004326,"z":0.0},"screenPosition":{"x":0.71425176,"y":0.80561566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.807884,"y":102.07613,"z":0.0},"screenPosition":{"x":0.7668309,"y":0.7510574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.112667,"y":99.077034,"z":0.0},"screenPosition":{"x":0.75234723,"y":0.7094032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.919027,"y":107.85536,"z":1.4210855E-14},"screenPosition":{"x":0.56081307,"y":0.8313245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.44934,"y":99.19231,"z":0.0},"screenPosition":{"x":0.61352795,"y":0.7110042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.530355,"y":101.49906,"z":0.0},"screenPosition":{"x":0.5943824,"y":0.74304247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.610056,"y":105.888695,"z":1.4210855E-14},"screenPosition":{"x":0.5752095,"y":0.8040096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.767838,"y":107.85536,"z":0.0},"screenPosition":{"x":0.53682995,"y":0.8313245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.839584,"y":111.562195,"z":0.0},"screenPosition":{"x":0.57999134,"y":0.88280827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.991983,"y":112.953896,"z":1.4210855E-14},"screenPosition":{"x":0.6039997,"y":0.9021374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.10488,"y":114.11433,"z":1.4210855E-14},"screenPosition":{"x":0.6688517,"y":0.91825455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.760136,"y":115.50767,"z":0.0},"screenPosition":{"x":0.6616695,"y":0.9376065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.565784,"y":115.50767,"z":0.0},"screenPosition":{"x":0.74095386,"y":0.9376065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.866585,"y":114.11433,"z":0.0},"screenPosition":{"x":0.8513872,"y":0.91825455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.980854,"y":113.766136,"z":1.4210855E-14},"screenPosition":{"x":0.85376775,"y":0.91341853},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.98017,"y":113.534035,"z":1.4210855E-14},"screenPosition":{"x":0.8537536,"y":0.91019493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.097122,"y":114.81088,"z":1.4210855E-14},"screenPosition":{"x":0.91869,"y":0.927929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.966705,"y":110.634895,"z":1.4210855E-14},"screenPosition":{"x":0.915973,"y":0.8699291},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.347233,"y":108.54991,"z":1.4210855E-14},"screenPosition":{"x":0.88223404,"y":0.840971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.77825,"y":108.665695,"z":0.0},"screenPosition":{"x":0.8078802,"y":0.84257907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.096058,"y":112.4899,"z":0.0},"screenPosition":{"x":0.79366785,"y":0.895693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.101044,"y":114.69478,"z":0.0},"screenPosition":{"x":0.79377174,"y":0.9263164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.55475,"y":112.953896,"z":0.0},"screenPosition":{"x":0.8657239,"y":0.9021374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.33541,"y":116.66947,"z":0.0},"screenPosition":{"x":0.86115444,"y":0.9537427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.520195,"y":114.69478,"z":0.0},"screenPosition":{"x":0.9066707,"y":0.9263164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.97258,"y":112.257935,"z":1.4210855E-14},"screenPosition":{"x":0.9160954,"y":0.8924713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.273544,"y":110.05553,"z":0.0},"screenPosition":{"x":0.9015321,"y":0.8618823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.806232,"y":108.08685,"z":0.0},"screenPosition":{"x":0.89179647,"y":0.83453965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.978764,"y":101.26827,"z":0.0},"screenPosition":{"x":0.87455755,"y":0.7398371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.378586,"y":104.501526,"z":0.0},"screenPosition":{"x":0.8412205,"y":0.7847434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.684753,"y":103.11526,"z":0.0},"screenPosition":{"x":0.8267657,"y":0.76548964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.727104,"y":101.84528,"z":1.4210855E-14},"screenPosition":{"x":0.7859813,"y":0.7478512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.02339,"y":94.586174,"z":1.4210855E-14},"screenPosition":{"x":0.91715395,"y":0.64703023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.42458,"y":97.00317,"z":1.4210855E-14},"screenPosition":{"x":0.8838454,"y":0.6805995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.858387,"y":99.53816,"z":0.0},"screenPosition":{"x":0.8720497,"y":0.7158078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.60141,"y":101.96071,"z":1.4210855E-14},"screenPosition":{"x":0.8458627,"y":0.74945426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.260998,"y":103.57725,"z":0.0},"screenPosition":{"x":0.83877075,"y":0.7719062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.253717,"y":99.53816,"z":0.0},"screenPosition":{"x":0.63028574,"y":0.7158078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.287125,"y":108.202614,"z":1.4210855E-14},"screenPosition":{"x":0.7143151,"y":0.83614737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.13119,"y":104.03934,"z":0.0},"screenPosition":{"x":0.6902331,"y":0.7783241},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":29.219515,"y":98.96176,"z":0.0},"screenPosition":{"x":0.6087399,"y":0.7078023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.892685,"y":96.08209,"z":0.0},"screenPosition":{"x":0.6852643,"y":0.6678068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.257217,"y":97.00317,"z":0.0},"screenPosition":{"x":0.776192,"y":0.6805995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.10488,"y":101.152885,"z":1.4210855E-14},"screenPosition":{"x":0.814685,"y":0.7382346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.91505,"y":103.23074,"z":1.4210855E-14},"screenPosition":{"x":0.83156353,"y":0.76709366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.842392,"y":105.77306,"z":0.0},"screenPosition":{"x":0.8508832,"y":0.8024036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.242035,"y":109.939674,"z":1.4210855E-14},"screenPosition":{"x":0.8175424,"y":0.8602733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.713375,"y":112.60589,"z":1.4210855E-14},"screenPosition":{"x":0.76486194,"y":0.897304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.40912,"y":113.06991,"z":0.0},"screenPosition":{"x":0.71685666,"y":0.90374875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.796442,"y":106.23562,"z":1.4210855E-14},"screenPosition":{"x":0.62075925,"y":0.8088281},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.917547,"y":112.4899,"z":0.0},"screenPosition":{"x":0.56078225,"y":0.895693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.192574,"y":107.392456,"z":1.4210855E-14},"screenPosition":{"x":0.5248453,"y":0.82489526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.460667,"y":102.88429,"z":0.0},"screenPosition":{"x":0.5512639,"y":0.7622819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.139114,"y":100.23004,"z":0.0},"screenPosition":{"x":0.6278982,"y":0.7254172},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.403275,"y":100.345375,"z":0.0},"screenPosition":{"x":0.6542349,"y":0.7270191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.381012,"y":101.26827,"z":0.0},"screenPosition":{"x":0.7787711,"y":0.7398371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.306175,"y":103.692764,"z":0.0},"screenPosition":{"x":0.79804534,"y":0.7735106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.545227,"y":107.50818,"z":1.4210855E-14},"screenPosition":{"x":0.8030256,"y":0.82650244},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":39.13295,"y":112.37391,"z":1.4210855E-14},"screenPosition":{"x":0.81526977,"y":0.8940821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.82562,"y":112.83788,"z":0.0},"screenPosition":{"x":0.8297004,"y":0.90052617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.599907,"y":113.534035,"z":0.0},"screenPosition":{"x":0.7624981,"y":0.91019493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.215553,"y":112.83788,"z":0.0},"screenPosition":{"x":0.73365736,"y":0.90052617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.098682,"y":113.65008,"z":-1.4210855E-14},"screenPosition":{"x":0.7937225,"y":0.91180664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.523544,"y":112.4899,"z":0.0},"screenPosition":{"x":0.7192405,"y":0.895693},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":31.52681,"y":111.910034,"z":0.0},"screenPosition":{"x":0.65680856,"y":0.8876394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.835312,"y":111.67814,"z":0.0},"screenPosition":{"x":0.64240235,"y":0.88441855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.410334,"y":110.17139,"z":0.0},"screenPosition":{"x":0.65438193,"y":0.86349154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.600498,"y":103.46174,"z":0.0},"screenPosition":{"x":0.63751036,"y":0.77030194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.65915,"y":97.34867,"z":1.4210855E-14},"screenPosition":{"x":0.53456557,"y":0.6853982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.12874,"y":101.84528,"z":0.0},"screenPosition":{"x":0.69018203,"y":0.7478512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":26.921757,"y":99.30758,"z":1.4210855E-14},"screenPosition":{"x":0.56086993,"y":0.7126053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":25.428165,"y":99.30758,"z":0.0},"screenPosition":{"x":0.52975345,"y":0.7126053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.037289,"y":97.11833,"z":0.0},"screenPosition":{"x":0.5632769,"y":0.682199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":22.32976,"y":96.657715,"z":1.4210855E-14},"screenPosition":{"x":0.46520334,"y":0.67580163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":19.22499,"y":98.846504,"z":0.0},"screenPosition":{"x":0.40052062,"y":0.70620143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":17.610401,"y":101.38366,"z":0.0},"screenPosition":{"x":0.36688334,"y":0.74143976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":16.568357,"y":104.15488,"z":1.4210855E-14},"screenPosition":{"x":0.3451741,"y":0.77992886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":20.587893,"y":107.6239,"z":1.4210855E-14},"screenPosition":{"x":0.42891443,"y":0.82810974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":23.808529,"y":110.05553,"z":1.4210855E-14},"screenPosition":{"x":0.49601105,"y":0.8618823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":21.270859,"y":112.37391,"z":1.4210855E-14},"screenPosition":{"x":0.4431429,"y":0.8940821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":24.498068,"y":111.79408,"z":0.0},"screenPosition":{"x":0.51037645,"y":0.88602895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":28.530903,"y":111.79408,"z":1.4210855E-14},"screenPosition":{"x":0.59439385,"y":0.88602895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.566765,"y":107.85536,"z":0.0},"screenPosition":{"x":0.61597425,"y":0.8313245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.985645,"y":109.476326,"z":0.0},"screenPosition":{"x":0.6663676,"y":0.8538378},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.287445,"y":108.434135,"z":1.4210855E-14},"screenPosition":{"x":0.7143218,"y":0.83936304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.26771,"y":106.004326,"z":0.0},"screenPosition":{"x":0.8389107,"y":0.80561566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.242775,"y":101.03751,"z":1.4210855E-14},"screenPosition":{"x":0.69255775,"y":0.7366321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.057117,"y":98.15507,"z":0.0},"screenPosition":{"x":0.64702326,"y":0.6965982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.496408,"y":98.270294,"z":0.0},"screenPosition":{"x":0.5728418,"y":0.6981985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.293613,"y":102.76883,"z":1.4210855E-14},"screenPosition":{"x":0.8602836,"y":0.7606781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.300213,"y":104.96382,"z":1.4210855E-14},"screenPosition":{"x":0.8604211,"y":0.79116416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.97913,"y":101.38366,"z":1.4210855E-14},"screenPosition":{"x":0.8745652,"y":0.74143976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.512634,"y":99.19231,"z":0.0},"screenPosition":{"x":0.8648466,"y":0.7110042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.545418,"y":93.78111,"z":0.0},"screenPosition":{"x":0.8238629,"y":0.6358488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.306538,"y":90.10465,"z":0.0},"screenPosition":{"x":0.8188862,"y":0.58478683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.736706,"y":87.35142,"z":0.0},"screenPosition":{"x":0.8903481,"y":0.54654753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.00454,"y":89.416016,"z":0.0},"screenPosition":{"x":0.9167613,"y":0.57522243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.275517,"y":90.44906,"z":0.0},"screenPosition":{"x":0.79740655,"y":0.5895702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.949547,"y":84.83071,"z":0.0},"screenPosition":{"x":0.8114489,"y":0.5115377},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":44.00454,"y":89.416016,"z":0.0},"screenPosition":{"x":0.9167613,"y":0.57522243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.635113,"y":91.25288,"z":1.4210855E-14},"screenPosition":{"x":0.88823146,"y":0.60073435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.230385,"y":92.516624,"z":0.0},"screenPosition":{"x":0.83813304,"y":0.61828643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.77644,"y":94.356125,"z":1.4210855E-14},"screenPosition":{"x":0.8286758,"y":0.6438351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.018147,"y":98.846504,"z":0.0},"screenPosition":{"x":0.8337114,"y":0.70620143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.400543,"y":100.11471,"z":1.4210855E-14},"screenPosition":{"x":0.86251134,"y":0.72381544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.407425,"y":96.312325,"z":0.0},"screenPosition":{"x":0.945988,"y":0.6710045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.375053,"y":91.71233,"z":0.0},"screenPosition":{"x":0.8619803,"y":0.60711575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.584625,"y":91.25288,"z":1.4210855E-14},"screenPosition":{"x":0.92884636,"y":0.60073435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.4318,"y":89.53077,"z":-1.4210855E-14},"screenPosition":{"x":0.9048292,"y":0.5768163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.33419,"y":88.612885,"z":0.0},"screenPosition":{"x":0.8402956,"y":0.5640678},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.210236,"y":89.64554,"z":1.4210855E-14},"screenPosition":{"x":0.75437987,"y":0.5784102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.462727,"y":93.55115,"z":0.0},"screenPosition":{"x":0.8429735,"y":0.63265485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.20642,"y":95.85188,"z":0.0},"screenPosition":{"x":0.8168004,"y":0.66460943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.460472,"y":88.7276,"z":0.0},"screenPosition":{"x":0.9262598,"y":0.5656611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.67253,"y":92.746475,"z":1.4210855E-14},"screenPosition":{"x":0.9098444,"y":0.6214788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.62919,"y":94.356125,"z":0.0},"screenPosition":{"x":0.9506081,"y":0.6438351},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.27495,"y":91.82722,"z":0.0},"screenPosition":{"x":0.9432281,"y":0.6087113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.99068,"y":88.7276,"z":0.0},"screenPosition":{"x":0.8331392,"y":0.5656611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.03065,"y":88.49818,"z":0.0},"screenPosition":{"x":0.7089719,"y":0.5624746},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":36.212975,"y":91.13802,"z":0.0},"screenPosition":{"x":0.75443697,"y":0.5991392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.436684,"y":88.15408,"z":0.0},"screenPosition":{"x":0.75909764,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.47268,"y":90.33425,"z":0.0},"screenPosition":{"x":0.78068084,"y":0.5879757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":33.462856,"y":92.86141,"z":0.0},"screenPosition":{"x":0.6971429,"y":0.6230751},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":35.76462,"y":97.11833,"z":0.0},"screenPosition":{"x":0.74509627,"y":0.682199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.16296,"y":91.36773,"z":0.0},"screenPosition":{"x":0.7950617,"y":0.60232955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.013836,"y":90.21945,"z":1.4210855E-14},"screenPosition":{"x":0.77112156,"y":0.5863812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.530445,"y":88.0394,"z":0.0},"screenPosition":{"x":0.82355094,"y":0.55610275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.101204,"y":87.23678,"z":0.0},"screenPosition":{"x":0.83544177,"y":0.54495525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.3561,"y":89.416016,"z":0.0},"screenPosition":{"x":0.778252,"y":0.57522243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.23847,"y":90.67869,"z":0.0},"screenPosition":{"x":0.92163473,"y":0.59275955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.098553,"y":92.631546,"z":1.4210855E-14},"screenPosition":{"x":0.8978865,"y":0.6198826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.18696,"y":88.15408,"z":1.4210855E-14},"screenPosition":{"x":0.816395,"y":0.5576956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.00456,"y":85.63244,"z":1.4210855E-14},"screenPosition":{"x":0.7709283,"y":0.5226727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.893463,"y":87.35142,"z":1.4210855E-14},"screenPosition":{"x":0.7686138,"y":0.54654753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.05661,"y":81.8555,"z":0.0},"screenPosition":{"x":0.8136794,"y":0.47021523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.769417,"y":82.54172,"z":0.0},"screenPosition":{"x":0.76602954,"y":0.4797461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.450737,"y":80.02664,"z":0.0},"screenPosition":{"x":0.78022367,"y":0.44481444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.12995,"y":76.94397,"z":1.4210855E-14},"screenPosition":{"x":0.794374,"y":0.40199953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.360416,"y":77.40038,"z":0.0},"screenPosition":{"x":0.88250864,"y":0.4083386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.45968,"y":72.84061,"z":-1.4210855E-14},"screenPosition":{"x":0.8845766,"y":0.34500846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.888783,"y":82.31296,"z":0.0},"screenPosition":{"x":0.8518497,"y":0.47656882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.106197,"y":79.34122,"z":1.4210855E-14},"screenPosition":{"x":0.7730458,"y":0.43529472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.982838,"y":74.891304,"z":0.0},"screenPosition":{"x":0.77047575,"y":0.3734904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.531498,"y":64.430504,"z":0.0},"screenPosition":{"x":0.7819062,"y":0.22820142},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":41.9115,"y":80.02664,"z":1.4210855E-14},"screenPosition":{"x":0.8731562,"y":0.44481444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.96214,"y":64.65737,"z":1.4210855E-14},"screenPosition":{"x":0.77004457,"y":0.23135234},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":40.029377,"y":61.030384,"z":1.4210855E-14},"screenPosition":{"x":0.83394533,"y":0.18097754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.672108,"y":55.149616,"z":1.4210855E-14},"screenPosition":{"x":0.8265022,"y":0.099300206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.45204,"y":56.166283,"z":0.0},"screenPosition":{"x":0.9260842,"y":0.1134206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.2608,"y":59.332348,"z":0.0},"screenPosition":{"x":0.9429333,"y":0.15739371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.932518,"y":62.729767,"z":0.0},"screenPosition":{"x":0.9360941,"y":0.2045801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.081924,"y":67.49523,"z":0.0},"screenPosition":{"x":0.7725401,"y":0.27076712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.414246,"y":67.040924,"z":0.0},"screenPosition":{"x":0.8627968,"y":0.26445723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":27.503597,"y":59.671844,"z":0.0},"screenPosition":{"x":0.5729916,"y":0.16210897},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":32.749508,"y":68.74509,"z":1.4210855E-14},"screenPosition":{"x":0.68228143,"y":0.28812617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":29.326616,"y":66.47317,"z":0.0},"screenPosition":{"x":0.61097115,"y":0.25657177},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.72505,"y":60.0114,"z":1.4210855E-14},"screenPosition":{"x":0.76510525,"y":0.166825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.120064,"y":55.48845,"z":1.4210855E-14},"screenPosition":{"x":0.6275013,"y":0.10400626},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":45.36876,"y":57.861805,"z":1.4210855E-14},"screenPosition":{"x":0.9451825,"y":0.13696952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":48.0,"y":61.687504,"z":1.0},"screenPosition":{"x":1.0,"y":0.1901042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.618896,"y":52.21529,"z":0.0},"screenPosition":{"x":0.8878937,"y":0.058545668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.719715,"y":55.3755,"z":1.4210855E-14},"screenPosition":{"x":0.8691607,"y":0.10243749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.36876,"y":57.861805,"z":1.4210855E-14},"screenPosition":{"x":0.9451825,"y":0.13696952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.348038,"y":52.892082,"z":1.4210855E-14},"screenPosition":{"x":0.84058416,"y":0.06794559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":42.846176,"y":52.21529,"z":0.0},"screenPosition":{"x":0.8926286,"y":0.058545668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.911324,"y":51.200497,"z":1.4210855E-14},"screenPosition":{"x":0.85231924,"y":0.044451367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.617085,"y":51.425964,"z":1.4210855E-14},"screenPosition":{"x":0.78368926,"y":0.047582854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":34.67431,"y":58.9929,"z":1.4210855E-14},"screenPosition":{"x":0.7223814,"y":0.15267919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.383144,"y":65.33811,"z":0.0},"screenPosition":{"x":0.8413155,"y":0.24080712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.753166,"y":61.596695,"z":0.0},"screenPosition":{"x":0.7865243,"y":0.18884298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.060753,"y":63.86344,"z":1.4210855E-14},"screenPosition":{"x":0.66793233,"y":0.22032556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.14831,"y":59.671844,"z":1.4210855E-14},"screenPosition":{"x":0.9405898,"y":0.16210897},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":42.430805,"y":64.09025,"z":0.0},"screenPosition":{"x":0.8839751,"y":0.22347565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.34466,"y":57.861805,"z":0.0},"screenPosition":{"x":0.9238471,"y":0.13696952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":43.08751,"y":56.279278,"z":1.4210855E-14},"screenPosition":{"x":0.89765644,"y":0.114989944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.684727,"y":57.522594,"z":0.0},"screenPosition":{"x":0.9309318,"y":0.13225825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":45.13228,"y":55.601406,"z":1.4210855E-14},"screenPosition":{"x":0.9402558,"y":0.10557511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":44.32432,"y":52.44086,"z":0.0},"screenPosition":{"x":0.92342335,"y":0.061678648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.825016,"y":54.359207,"z":1.4210855E-14},"screenPosition":{"x":0.66302115,"y":0.08832233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":39.5465,"y":50.636936,"z":1.4210855E-14},"screenPosition":{"x":0.82388544,"y":0.036624093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.820637,"y":50.862343,"z":0.0},"screenPosition":{"x":0.76709664,"y":0.039754752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":48.0,"y":56.898434,"z":1.0},"screenPosition":{"x":1.0117092,"y":0.123589374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.7115,"y":54.585007,"z":1.4210855E-14},"screenPosition":{"x":0.6606563,"y":0.09145845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":32.511192,"y":58.42728,"z":0.0},"screenPosition":{"x":0.67731655,"y":0.14482331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.86351,"y":60.0114,"z":0.0},"screenPosition":{"x":0.7888231,"y":0.166825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":31.141266,"y":51.98974,"z":0.0},"screenPosition":{"x":0.6487764,"y":0.055413023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":41.026615,"y":51.76421,"z":0.0},"screenPosition":{"x":0.8547211,"y":0.05228071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.525215,"y":51.087772,"z":1.4210855E-14},"screenPosition":{"x":0.8026086,"y":0.042885747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":36.13944,"y":51.087772,"z":1.4210855E-14},"screenPosition":{"x":0.75290495,"y":0.042885747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.070766,"y":62.04985,"z":1.4210855E-14},"screenPosition":{"x":0.77230763,"y":0.19513683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.233177,"y":54.13343,"z":0.0},"screenPosition":{"x":0.62985784,"y":0.08518653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":30.917526,"y":57.74873,"z":1.4210855E-14},"screenPosition":{"x":0.64411515,"y":0.13539901},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":38.65468,"y":57.63566,"z":1.4210855E-14},"screenPosition":{"x":0.8053058,"y":0.13382858},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":37.18443,"y":61.936554,"z":1.4210855E-14},"screenPosition":{"x":0.77467567,"y":0.19356324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":47.784084,"y":63.523273,"z":1.4210855E-14},"screenPosition":{"x":0.99550176,"y":0.21560104},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":40.351223,"y":54.02055,"z":1.4210855E-14},"screenPosition":{"x":0.84065044,"y":0.08361876},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20191016-052123/brain-C7839C-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[1.0,0.0,0.0,0.0,0.0,0.9996972439741535,0.024605291920271503,0.0,0.0,-0.024605291920271503,0.9996972439741535,0.0,28.300455734835314,83.37028082353119,105.87370027102449,1.0]},"baseImage":"20191016-052123/base.webp","version":0,"savedAt":1.571203531773E12,"notes":null} diff --git a/data/mapping/Decom2019/round1/20191016-053704-v0.json b/data/mapping/Decom2019/round1/20191016-053704-v0.json new file mode 100644 index 0000000000..a621a4df35 --- /dev/null +++ b/data/mapping/Decom2019/round1/20191016-053704-v0.json @@ -0,0 +1 @@ +{"startedAt":1.571204224293E12,"surfaces":[{"brainId":"CAF81C","panelName":"Panel 2","pixels":[{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":93.70689,"y":52.948193,"z":0.0},"screenPosition":{"x":0.70222676,"y":0.06872492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.70343,"y":50.754536,"z":-1.4210855E-14},"screenPosition":{"x":0.7646548,"y":0.03825742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.68057,"y":60.12987,"z":0.0},"screenPosition":{"x":0.28501186,"y":0.16847041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":61.865646,"y":60.561687,"z":1.4210855E-14},"screenPosition":{"x":0.03886762,"y":0.1744679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.73551,"y":61.08838,"z":0.0},"screenPosition":{"x":0.22365643,"y":0.18178304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.55715,"y":62.47559,"z":1.4210855E-14},"screenPosition":{"x":0.15744074,"y":0.20104988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.24523,"y":63.65232,"z":0.0},"screenPosition":{"x":0.10927562,"y":0.21739337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.370758,"y":61.731712,"z":0.0},"screenPosition":{"x":0.049390774,"y":0.19071825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.534573,"y":56.43705,"z":0.0},"screenPosition":{"x":0.05280361,"y":0.11718126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.79177,"y":56.645878,"z":0.0},"screenPosition":{"x":0.09982856,"y":0.120081656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.04277,"y":58.119137,"z":-1.4210855E-14},"screenPosition":{"x":0.20922446,"y":0.14054358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":61.713184,"y":58.547733,"z":-1.4210855E-14},"screenPosition":{"x":0.03569131,"y":0.14649633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.70021,"y":66.227844,"z":0.0},"screenPosition":{"x":0.13958767,"y":0.25316444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.20555,"y":65.79824,"z":0.0},"screenPosition":{"x":0.08761565,"y":0.24719773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.44161,"y":59.497635,"z":0.0},"screenPosition":{"x":0.13420027,"y":0.1596894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.65137,"y":61.088974,"z":0.0},"screenPosition":{"x":0.20107007,"y":0.1817913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.41373,"y":56.858353,"z":0.0},"screenPosition":{"x":0.05028607,"y":0.12303266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.003265,"y":57.806435,"z":0.0},"screenPosition":{"x":0.083401315,"y":0.13620047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.65706,"y":53.177937,"z":0.0},"screenPosition":{"x":0.24285531,"y":0.07191577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.765884,"y":51.3027,"z":0.0},"screenPosition":{"x":0.20345594,"y":0.04587083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.9476,"y":56.219997,"z":-1.4210855E-14},"screenPosition":{"x":0.22807506,"y":0.11416663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.407524,"y":55.691296,"z":0.0},"screenPosition":{"x":0.30015683,"y":0.10682355},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":65.09878,"y":53.393055,"z":-1.4210855E-14},"screenPosition":{"x":0.106224544,"y":0.07490355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.654205,"y":53.91642,"z":1.4210855E-14},"screenPosition":{"x":0.096962534,"y":0.08217251},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.517494,"y":51.204052,"z":-1.4210855E-14},"screenPosition":{"x":0.094114445,"y":0.044500727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.279312,"y":53.18574,"z":0.0},"screenPosition":{"x":0.06831897,"y":0.07202417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.114784,"y":57.16736,"z":0.0},"screenPosition":{"x":0.25239134,"y":0.12732442},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.52345,"y":59.49696,"z":-1.4210855E-14},"screenPosition":{"x":0.15673853,"y":0.15968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.42266,"y":63.54223,"z":0.0},"screenPosition":{"x":0.25880536,"y":0.21586429},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.416405,"y":57.16935,"z":-1.4210855E-14},"screenPosition":{"x":0.19617508,"y":0.1273521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.7625,"y":57.16688,"z":0.0},"screenPosition":{"x":0.2658854,"y":0.12731777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.26896,"y":56.749325,"z":1.4210855E-14},"screenPosition":{"x":0.15143663,"y":0.12151841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.619934,"y":63.43687,"z":0.0},"screenPosition":{"x":0.17958198,"y":0.21440096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.873062,"y":62.263973,"z":1.4210855E-14},"screenPosition":{"x":0.080688775,"y":0.19811071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.17306,"y":67.737015,"z":0.0},"screenPosition":{"x":0.19110544,"y":0.27412522},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":61.73671,"y":57.80804,"z":0.0},"screenPosition":{"x":0.036181435,"y":0.13622276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.04022,"y":56.541157,"z":0.0},"screenPosition":{"x":0.08417127,"y":0.11862717},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":68.12596,"y":61.409157,"z":0.0},"screenPosition":{"x":0.16929089,"y":0.18623826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":61.96587,"y":57.38576,"z":-1.4210855E-14},"screenPosition":{"x":0.040955648,"y":0.13035779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.89754,"y":60.876614,"z":0.0},"screenPosition":{"x":0.1853653,"y":0.17884186},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":68.76146,"y":62.04822,"z":-1.4210855E-14},"screenPosition":{"x":0.18253039,"y":0.1951142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.87088,"y":64.93637,"z":0.0},"screenPosition":{"x":0.22647668,"y":0.23522738},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.11181,"y":60.98287,"z":0.0},"screenPosition":{"x":0.18982938,"y":0.18031763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.55276,"y":63.542603,"z":0.0},"screenPosition":{"x":0.24068248,"y":0.21586949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.67701,"y":68.926765,"z":1.4210855E-14},"screenPosition":{"x":0.22243764,"y":0.29064947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.96883,"y":70.22942,"z":0.0},"screenPosition":{"x":0.08268394,"y":0.30874205},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.789185,"y":73.50048,"z":0.0},"screenPosition":{"x":0.24560809,"y":0.3541733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.225266,"y":75.03533,"z":-1.4210855E-14},"screenPosition":{"x":0.19219297,"y":0.37549073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.72123,"y":69.0356,"z":0.0},"screenPosition":{"x":0.1608589,"y":0.2921611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.15954,"y":66.76521,"z":0.0},"screenPosition":{"x":0.23249035,"y":0.26062799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.16356,"y":65.15245,"z":0.0},"screenPosition":{"x":0.1492408,"y":0.2382285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.16322,"y":62.690258,"z":0.0},"screenPosition":{"x":0.107567206,"y":0.20403138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.44924,"y":64.29285,"z":-1.4210855E-14},"screenPosition":{"x":0.21769258,"y":0.22628953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.49203,"y":65.58047,"z":0.0},"screenPosition":{"x":0.26025057,"y":0.24417317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.52342,"y":70.98996,"z":-1.4210855E-14},"screenPosition":{"x":0.21923804,"y":0.319305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.34677,"y":72.51638,"z":-1.4210855E-14},"screenPosition":{"x":0.27805775,"y":0.34050524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.40267,"y":75.91538,"z":0.0},"screenPosition":{"x":0.25838897,"y":0.38771367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.31362,"y":76.90576,"z":0.0},"screenPosition":{"x":0.13153382,"y":0.40146896},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.63454,"y":73.82852,"z":0.0},"screenPosition":{"x":0.09655289,"y":0.35872942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.93555,"y":77.23802,"z":0.0},"screenPosition":{"x":0.24865718,"y":0.40608367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.87706,"y":75.80476,"z":0.0},"screenPosition":{"x":0.18493877,"y":0.3861772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.78974,"y":78.56522,"z":0.0},"screenPosition":{"x":0.28728622,"y":0.42451704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.88874,"y":79.783875,"z":-1.4210855E-14},"screenPosition":{"x":0.22684875,"y":0.44144276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.10987,"y":72.079796,"z":0.0},"screenPosition":{"x":0.12728903,"y":0.33444157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.827255,"y":70.33787,"z":0.0},"screenPosition":{"x":0.12140117,"y":0.3102482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.7062,"y":70.22913,"z":0.0},"screenPosition":{"x":0.13971245,"y":0.30873796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.28862,"y":70.012085,"z":-1.4210855E-14},"screenPosition":{"x":0.11017952,"y":0.3057234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.86496,"y":68.92758,"z":0.0},"screenPosition":{"x":0.12218672,"y":0.29066086},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.07762,"y":65.04546,"z":-1.4210855E-14},"screenPosition":{"x":0.12661703,"y":0.2367425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.940956,"y":62.688004,"z":0.0},"screenPosition":{"x":0.20710327,"y":0.20400007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.308,"y":67.73585,"z":-1.4210855E-14},"screenPosition":{"x":0.2980833,"y":0.27410898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.799995,"y":69.250946,"z":0.0},"screenPosition":{"x":0.34999987,"y":0.295152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.20501,"y":70.11821,"z":0.0},"screenPosition":{"x":0.566771,"y":0.30719733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.544,"y":69.90189,"z":-1.4210855E-14},"screenPosition":{"x":0.38633332,"y":0.304193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.212746,"y":75.58482,"z":0.0},"screenPosition":{"x":0.19193219,"y":0.3831226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.24263,"y":73.828896,"z":-1.4210855E-14},"screenPosition":{"x":0.21338814,"y":0.35873464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.81889,"y":76.90739,"z":0.0},"screenPosition":{"x":0.28789353,"y":0.40149143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.05897,"y":76.90679,"z":1.4210855E-14},"screenPosition":{"x":0.23039515,"y":0.40148318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.99235,"y":75.58479,"z":0.0},"screenPosition":{"x":0.18734062,"y":0.38312212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.13506,"y":79.67087,"z":-1.4210855E-14},"screenPosition":{"x":0.106980465,"y":0.43987313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.291176,"y":73.93809,"z":0.0},"screenPosition":{"x":0.11023279,"y":0.36025125},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.218304,"y":77.12567,"z":-1.4210855E-14},"screenPosition":{"x":0.067048006,"y":0.40452325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.67752,"y":80.44729,"z":0.0},"screenPosition":{"x":0.0557817,"y":0.45065683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.27601,"y":82.67636,"z":0.0},"screenPosition":{"x":0.089083545,"y":0.48161614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.78961,"y":79.22911,"z":0.0},"screenPosition":{"x":0.22478357,"y":0.43373764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.46783,"y":78.01184,"z":0.0},"screenPosition":{"x":0.28057975,"y":0.4168311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.54184,"y":79.896225,"z":0.0},"screenPosition":{"x":0.3029549,"y":0.44300312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.703964,"y":83.80213,"z":1.4210855E-14},"screenPosition":{"x":0.36883262,"y":0.49725178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.971565,"y":74.486984,"z":0.0},"screenPosition":{"x":0.29107425,"y":0.36787477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.98065,"y":80.45128,"z":0.0},"screenPosition":{"x":0.27043018,"y":0.4507122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.756096,"y":80.340775,"z":0.0},"screenPosition":{"x":0.30741867,"y":0.44917747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.02931,"y":84.47513,"z":-1.4210855E-14},"screenPosition":{"x":0.37561062,"y":0.506599},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.790215,"y":85.034615,"z":0.0},"screenPosition":{"x":0.30812952,"y":0.51436967},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":73.36341,"y":59.705452,"z":0.0},"screenPosition":{"x":0.27840438,"y":0.1625757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.58947,"y":78.6744,"z":0.0},"screenPosition":{"x":0.17894736,"y":0.42603338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.90111,"y":75.145004,"z":-1.4210855E-14},"screenPosition":{"x":0.16460647,"y":0.37701395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.72214,"y":76.1358,"z":0.0},"screenPosition":{"x":0.28587794,"y":0.39077508},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.69388,"y":71.53436,"z":1.4210855E-14},"screenPosition":{"x":0.2852891,"y":0.32686615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.946396,"y":73.71984,"z":-1.4210855E-14},"screenPosition":{"x":0.37388316,"y":0.35722005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.63784,"y":80.89654,"z":0.0},"screenPosition":{"x":0.28412166,"y":0.45689636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.28239,"y":82.34283,"z":0.0},"screenPosition":{"x":0.15171646,"y":0.4769837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.516426,"y":81.3428,"z":-1.4210855E-14},"screenPosition":{"x":0.32325882,"y":0.46309438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.03685,"y":78.45313,"z":-1.4210855E-14},"screenPosition":{"x":0.18826777,"y":0.42296016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.39709,"y":77.458,"z":-1.4210855E-14},"screenPosition":{"x":0.17493932,"y":0.40913892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.168594,"y":82.454414,"z":-1.4210855E-14},"screenPosition":{"x":0.14934579,"y":0.4785336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.37248,"y":78.895226,"z":0.0},"screenPosition":{"x":0.13276012,"y":0.42910033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.672844,"y":75.804405,"z":-1.4210855E-14},"screenPosition":{"x":0.13901763,"y":0.38617226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.441826,"y":70.3375,"z":0.0},"screenPosition":{"x":0.19670476,"y":0.3102431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.77945,"y":70.55497,"z":-1.4210855E-14},"screenPosition":{"x":0.18290527,"y":0.31326345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.15446,"y":66.11853,"z":0.0},"screenPosition":{"x":0.25321785,"y":0.25164628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.016884,"y":66.6569,"z":0.0},"screenPosition":{"x":0.27118516,"y":0.2591236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.6053,"y":58.640236,"z":0.0},"screenPosition":{"x":0.4501105,"y":0.14778103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.769104,"y":65.149414,"z":0.0},"screenPosition":{"x":0.32852298,"y":0.23818634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.072716,"y":62.47245,"z":0.0},"screenPosition":{"x":0.2931815,"y":0.20100625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.467064,"y":60.55272,"z":0.0},"screenPosition":{"x":0.36389711,"y":0.17434333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.47236,"y":84.47481,"z":0.0},"screenPosition":{"x":0.3640074,"y":0.50659454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.98157,"y":62.78874,"z":0.0},"screenPosition":{"x":0.47878268,"y":0.20539916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.84849,"y":66.00756,"z":-1.4210855E-14},"screenPosition":{"x":0.47601008,"y":0.25010502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.28313,"y":82.01268,"z":0.0},"screenPosition":{"x":0.36006507,"y":0.4723983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.5829,"y":84.36209,"z":0.0},"screenPosition":{"x":0.34547716,"y":0.505029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.084915,"y":87.5132,"z":0.0},"screenPosition":{"x":0.31426907,"y":0.54879445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.82534,"y":88.869026,"z":0.0},"screenPosition":{"x":0.2671946,"y":0.56762534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.470406,"y":83.910736,"z":0.0},"screenPosition":{"x":0.23896682,"y":0.49876025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.66604,"y":84.69231,"z":0.0},"screenPosition":{"x":0.11804253,"y":0.50961536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.22441,"y":80.337524,"z":0.0},"screenPosition":{"x":0.1296753,"y":0.44913223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.56856,"y":84.80925,"z":0.0},"screenPosition":{"x":0.28267822,"y":0.51123965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.05189,"y":90.11973,"z":0.0},"screenPosition":{"x":0.33441427,"y":0.58499616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.59628,"y":83.353035,"z":0.0},"screenPosition":{"x":0.3249226,"y":0.49101436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.56354,"y":85.71032,"z":0.0},"screenPosition":{"x":0.34507364,"y":0.5237544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.22053,"y":92.39616,"z":0.0},"screenPosition":{"x":0.29626104,"y":0.61661327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.48796,"y":48.0,"z":1.0},"screenPosition":{"x":0.2601659,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.76328,"y":92.852684,"z":0.0},"screenPosition":{"x":0.28673503,"y":0.6229539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.147835,"y":95.83352,"z":0.0},"screenPosition":{"x":0.2739133,"y":0.6643545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.04291,"y":97.210075,"z":0.0},"screenPosition":{"x":0.16756055,"y":0.6834733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.50919,"y":95.94218,"z":0.0},"screenPosition":{"x":0.15644157,"y":0.6658636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.80283,"y":100.91381,"z":0.0},"screenPosition":{"x":0.12089239,"y":0.73491406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.63264,"y":94.447044,"z":0.0},"screenPosition":{"x":0.117346615,"y":0.6450978},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.582134,"y":94.90259,"z":0.0},"screenPosition":{"x":0.053794436,"y":0.6514249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.19513,"y":94.44764,"z":-1.4210855E-14},"screenPosition":{"x":0.12906522,"y":0.64510614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.90102,"y":92.38717,"z":0.0},"screenPosition":{"x":0.10210447,"y":0.6164884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.784004,"y":92.959076,"z":0.0},"screenPosition":{"x":0.12050001,"y":0.6244316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.313164,"y":89.08801,"z":0.0},"screenPosition":{"x":0.069024265,"y":0.5706668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.47303,"y":97.440186,"z":0.0},"screenPosition":{"x":0.1556882,"y":0.68666923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.93783,"y":91.36206,"z":-1.4210855E-14},"screenPosition":{"x":0.12370482,"y":0.6022509},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.201126,"y":92.95651,"z":0.0},"screenPosition":{"x":0.06669009,"y":0.624396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.421703,"y":89.20141,"z":-1.4210855E-14},"screenPosition":{"x":0.071285516,"y":0.57224184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.67034,"y":88.75011,"z":0.0},"screenPosition":{"x":0.11813218,"y":0.5659737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.20474,"y":85.5925,"z":0.0},"screenPosition":{"x":0.17093216,"y":0.52211803},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":72.00711,"y":90.68463,"z":-1.4210855E-14},"screenPosition":{"x":0.25014818,"y":0.59284216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.01698,"y":93.533134,"z":0.0},"screenPosition":{"x":0.16702048,"y":0.6324046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.84457,"y":96.05762,"z":0.0},"screenPosition":{"x":0.1634285,"y":0.66746694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.62742,"y":95.71228,"z":0.0},"screenPosition":{"x":0.15890461,"y":0.6626705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.363533,"y":98.473755,"z":0.0},"screenPosition":{"x":0.049240284,"y":0.70102435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.438904,"y":95.93642,"z":0.0},"screenPosition":{"x":0.050810464,"y":0.6657835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.20597,"y":89.657265,"z":0.0},"screenPosition":{"x":0.129291,"y":0.5785731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.60503,"y":90.90557,"z":0.0},"screenPosition":{"x":0.09593803,"y":0.5959107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.332405,"y":89.09044,"z":0.0},"screenPosition":{"x":0.13192508,"y":0.5707006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.36952,"y":87.84647,"z":-1.4210855E-14},"screenPosition":{"x":0.15353175,"y":0.5534233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.86072,"y":86.49479,"z":0.0},"screenPosition":{"x":0.22626494,"y":0.53464985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.251366,"y":83.79913,"z":-1.4210855E-14},"screenPosition":{"x":0.25523674,"y":0.4972102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.782646,"y":79.56187,"z":-1.4210855E-14},"screenPosition":{"x":0.2246385,"y":0.43835923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.87774,"y":80.782524,"z":0.0},"screenPosition":{"x":0.14328618,"y":0.4553128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.58082,"y":83.79712,"z":0.0},"screenPosition":{"x":0.17876711,"y":0.49718222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.580154,"y":80.00293,"z":0.0},"screenPosition":{"x":0.053753205,"y":0.4444851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.900787,"y":84.13004,"z":0.0},"screenPosition":{"x":0.060433075,"y":0.50180614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.83421,"y":82.56495,"z":0.0},"screenPosition":{"x":0.100712806,"y":0.48006874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.03816,"y":83.237175,"z":0.0},"screenPosition":{"x":0.16746174,"y":0.4894052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.22673,"y":79.672646,"z":0.0},"screenPosition":{"x":0.21305694,"y":0.43989784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.884865,"y":76.13458,"z":0.0},"screenPosition":{"x":0.14343475,"y":0.39075813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.29874,"y":78.340546,"z":0.0},"screenPosition":{"x":0.047890462,"y":0.4213965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.4441,"y":85.37031,"z":0.0},"screenPosition":{"x":0.25925204,"y":0.51903206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.4307,"y":85.25418,"z":0.0},"screenPosition":{"x":0.133973,"y":0.51741916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.42668,"y":80.89441,"z":-1.4210855E-14},"screenPosition":{"x":0.17555584,"y":0.4568668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.85954,"y":80.674866,"z":0.0},"screenPosition":{"x":0.3304071,"y":0.45381758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.21001,"y":86.15841,"z":0.0},"screenPosition":{"x":0.27520838,"y":0.5299779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.117294,"y":90.34276,"z":-1.4210855E-14},"screenPosition":{"x":0.23161025,"y":0.5880939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.30334,"y":87.173164,"z":0.0},"screenPosition":{"x":0.27715284,"y":0.54407173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.52285,"y":80.23179,"z":0.0},"screenPosition":{"x":0.42755944,"y":0.44766372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.17243,"y":82.01586,"z":0.0},"screenPosition":{"x":0.50359225,"y":0.47244254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.13721,"y":86.95438,"z":-1.4210855E-14},"screenPosition":{"x":0.48202515,"y":0.54103297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.32024,"y":87.96771,"z":1.4210855E-14},"screenPosition":{"x":0.38167167,"y":0.5551071},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.68341,"y":84.92282,"z":0.0},"screenPosition":{"x":0.32673767,"y":0.512817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.84875,"y":81.45395,"z":0.0},"screenPosition":{"x":0.30934894,"y":0.46463814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.21485,"y":78.898605,"z":0.0},"screenPosition":{"x":0.3586428,"y":0.4291473},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":85.29243,"y":80.23358,"z":0.0},"screenPosition":{"x":0.5269256,"y":0.44768864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.967804,"y":77.793945,"z":0.0},"screenPosition":{"x":0.54099584,"y":0.4138048},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.503365,"y":83.919624,"z":-1.4210855E-14},"screenPosition":{"x":0.57298684,"y":0.4988837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.28559,"y":86.95869,"z":0.0},"screenPosition":{"x":0.6101164,"y":0.5410928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.174355,"y":85.38076,"z":0.0},"screenPosition":{"x":0.60779905,"y":0.51917726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.1181,"y":91.15079,"z":0.0},"screenPosition":{"x":0.5024605,"y":0.5993165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.82696,"y":89.67526,"z":-1.4210855E-14},"screenPosition":{"x":0.5797282,"y":0.5788231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.54685,"y":89.89717,"z":0.0},"screenPosition":{"x":0.4488928,"y":0.5819051},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.99658,"y":95.15676,"z":0.0},"screenPosition":{"x":0.52076215,"y":0.654955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.22681,"y":88.98985,"z":0.0},"screenPosition":{"x":0.46305844,"y":0.56930345},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.494255,"y":92.05778,"z":0.0},"screenPosition":{"x":0.38529703,"y":0.61191356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.14775,"y":86.165665,"z":0.0},"screenPosition":{"x":0.5030781,"y":0.53007865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.89535,"y":86.61299,"z":0.0},"screenPosition":{"x":0.3936531,"y":0.53629154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.267426,"y":83.692024,"z":0.0},"screenPosition":{"x":0.44307145,"y":0.4957226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.16245,"y":83.6936,"z":0.0},"screenPosition":{"x":0.5033844,"y":0.49574447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.16412,"y":85.82971,"z":1.4210855E-14},"screenPosition":{"x":0.5659192,"y":0.5254127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.37866,"y":89.56133,"z":-1.4210855E-14},"screenPosition":{"x":0.57038873,"y":0.5772407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.24758,"y":88.19847,"z":-1.4210855E-14},"screenPosition":{"x":0.50515795,"y":0.5583121},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.53122,"y":90.57838,"z":-1.4210855E-14},"screenPosition":{"x":0.4277337,"y":0.5913663},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.92274,"y":84.81365,"z":0.0},"screenPosition":{"x":0.43589044,"y":0.5113007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.50903,"y":81.56835,"z":0.0},"screenPosition":{"x":0.44810495,"y":0.46622705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.49409,"y":83.244194,"z":0.0},"screenPosition":{"x":0.44779354,"y":0.48950273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.315186,"y":78.01422,"z":-1.4210855E-14},"screenPosition":{"x":0.46489966,"y":0.4168642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.95194,"y":81.79344,"z":0.0},"screenPosition":{"x":0.5406655,"y":0.46935335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.97031,"y":78.1256,"z":0.0},"screenPosition":{"x":0.5202147,"y":0.4184111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.22679,"y":74.26841,"z":1.4210855E-14},"screenPosition":{"x":0.48389143,"y":0.36483902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.263626,"y":73.1725,"z":0.0},"screenPosition":{"x":0.42215884,"y":0.34961802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.12001,"y":76.90852,"z":0.0},"screenPosition":{"x":0.39833346,"y":0.40150732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.97688,"y":79.89746,"z":0.0},"screenPosition":{"x":0.37451833,"y":0.44302028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.171295,"y":82.12705,"z":0.0},"screenPosition":{"x":0.4827353,"y":0.4739868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.46894,"y":73.72006,"z":0.0},"screenPosition":{"x":0.44726953,"y":0.35722306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.88399,"y":75.917145,"z":-1.4210855E-14},"screenPosition":{"x":0.47674966,"y":0.3877381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.964676,"y":79.23376,"z":0.0},"screenPosition":{"x":0.52009743,"y":0.43380222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.85865,"y":78.90068,"z":1.4210855E-14},"screenPosition":{"x":0.49705523,"y":0.4291761},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.6094,"y":82.57169,"z":0.0},"screenPosition":{"x":0.38769585,"y":0.48016238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.890564,"y":78.01303,"z":0.0},"screenPosition":{"x":0.37272,"y":0.41684765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.798706,"y":74.70722,"z":0.0},"screenPosition":{"x":0.43330643,"y":0.37093368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.12021,"y":77.34989,"z":0.0},"screenPosition":{"x":0.37750432,"y":0.40763745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.97095,"y":79.12218,"z":0.0},"screenPosition":{"x":0.47856134,"y":0.43225247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.66262,"y":77.79231,"z":0.0},"screenPosition":{"x":0.40963793,"y":0.41378215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.1922,"y":80.231285,"z":0.0},"screenPosition":{"x":0.3998375,"y":0.44765675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.34213,"y":77.681175,"z":0.0},"screenPosition":{"x":0.36129448,"y":0.4122385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.822395,"y":75.36602,"z":0.0},"screenPosition":{"x":0.35046658,"y":0.38008362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.48719,"y":64.07484,"z":0.0},"screenPosition":{"x":0.40598315,"y":0.22326165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.32462,"y":63.005177,"z":0.0},"screenPosition":{"x":0.36092958,"y":0.2084052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.25601,"y":67.951385,"z":1.4210855E-14},"screenPosition":{"x":0.3595002,"y":0.2771026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.2145,"y":59.48964,"z":-1.4210855E-14},"screenPosition":{"x":0.40030217,"y":0.15957831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.95694,"y":62.89751,"z":0.0},"screenPosition":{"x":0.39493626,"y":0.20690987},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":77.992424,"y":61.830246,"z":0.0},"screenPosition":{"x":0.3748422,"y":0.19208676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.870224,"y":61.08391,"z":0.0},"screenPosition":{"x":0.39312968,"y":0.18172099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.63579,"y":60.55147,"z":1.4210855E-14},"screenPosition":{"x":0.40907893,"y":0.17432602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.168625,"y":60.44194,"z":1.4210855E-14},"screenPosition":{"x":0.52434635,"y":0.1728047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.33515,"y":58.430054,"z":0.0},"screenPosition":{"x":0.40281567,"y":0.14486185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.17918,"y":60.44483,"z":0.0},"screenPosition":{"x":0.42039946,"y":0.17284489},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":85.35941,"y":66.00678,"z":0.0},"screenPosition":{"x":0.5283211,"y":0.25009418},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":80.90892,"y":74.70724,"z":0.0},"screenPosition":{"x":0.43560255,"y":0.37093386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.031685,"y":73.39145,"z":0.0},"screenPosition":{"x":0.43816015,"y":0.352659},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.73073,"y":70.4451,"z":1.4210855E-14},"screenPosition":{"x":0.43189025,"y":0.3117375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.50339,"y":72.29793,"z":0.0},"screenPosition":{"x":0.40632054,"y":0.33747116},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":83.37224,"y":85.26467,"z":-1.4210855E-14},"screenPosition":{"x":0.48692155,"y":0.51756495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.53679,"y":78.456764,"z":0.0},"screenPosition":{"x":0.4486831,"y":0.4230106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.82128,"y":84.815384,"z":0.0},"screenPosition":{"x":0.49627665,"y":0.51132476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.36659,"y":86.95524,"z":1.4210855E-14},"screenPosition":{"x":0.5076373,"y":0.54104495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.82057,"y":84.927734,"z":0.0},"screenPosition":{"x":0.49626186,"y":0.51288515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.81784,"y":87.408005,"z":-1.4210855E-14},"screenPosition":{"x":0.53787166,"y":0.5473335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.6955,"y":89.900665,"z":0.0},"screenPosition":{"x":0.5353229,"y":0.58195376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.011345,"y":92.17813,"z":-1.4210855E-14},"screenPosition":{"x":0.52106965,"y":0.6135851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.194466,"y":94.81013,"z":0.0},"screenPosition":{"x":0.48321798,"y":0.65014064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.48931,"y":94.807205,"z":0.0},"screenPosition":{"x":0.42686063,"y":0.65010005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.90047,"y":94.57484,"z":0.0},"screenPosition":{"x":0.37292635,"y":0.6468727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.412926,"y":99.99452,"z":0.0},"screenPosition":{"x":0.279436,"y":0.72214615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.3202,"y":98.83485,"z":0.0},"screenPosition":{"x":0.27750406,"y":0.7060395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.631935,"y":97.55946,"z":0.0},"screenPosition":{"x":0.22149861,"y":0.6883258},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.80037,"y":101.38763,"z":-1.4210855E-14},"screenPosition":{"x":0.2458411,"y":0.74149483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.42106,"y":103.37097,"z":-1.4210855E-14},"screenPosition":{"x":0.23793873,"y":0.7690413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.39339,"y":104.7765,"z":0.0},"screenPosition":{"x":0.23736225,"y":0.7885624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.054924,"y":107.36738,"z":0.0},"screenPosition":{"x":0.27197757,"y":0.8245469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.53966,"y":110.56294,"z":0.0},"screenPosition":{"x":0.26124284,"y":0.86892974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.21891,"y":111.98627,"z":0.0},"screenPosition":{"x":0.21289395,"y":0.88869816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.06586,"y":112.93232,"z":-1.4210855E-14},"screenPosition":{"x":0.12637198,"y":0.90183777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.714905,"y":111.75087,"z":0.0},"screenPosition":{"x":0.24406047,"y":0.8854287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.33962,"y":108.89536,"z":0.0},"screenPosition":{"x":0.17374213,"y":0.845769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.34937,"y":105.71425,"z":-1.4210855E-14},"screenPosition":{"x":0.2156119,"y":0.8015868},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.9694,"y":112.939964,"z":0.0},"screenPosition":{"x":0.20769577,"y":0.9019439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.49013,"y":111.512314,"z":0.0},"screenPosition":{"x":0.23937765,"y":0.8821154},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.07673,"y":113.2985,"z":0.0},"screenPosition":{"x":0.20993191,"y":0.9069236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.66061,"y":116.655365,"z":-1.4210855E-14},"screenPosition":{"x":0.20126261,"y":0.9535467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.755295,"y":117.61282,"z":-1.4210855E-14},"screenPosition":{"x":0.14073537,"y":0.96684474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.55126,"y":115.084946,"z":0.0},"screenPosition":{"x":0.11565132,"y":0.93173534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.776672,"y":115.559105,"z":0.0},"screenPosition":{"x":0.057847317,"y":0.9383209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.642277,"y":113.40525,"z":0.0},"screenPosition":{"x":0.07588078,"y":0.90840626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.40504,"y":111.857956,"z":1.4210855E-14},"screenPosition":{"x":0.11260501,"y":0.88691604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.33609,"y":111.867355,"z":-1.4210855E-14},"screenPosition":{"x":0.2153352,"y":0.8870466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.382774,"y":109.609665,"z":0.0},"screenPosition":{"x":0.21630774,"y":0.85568976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.450035,"y":110.921165,"z":0.0},"screenPosition":{"x":0.28020912,"y":0.87390506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.67666,"y":113.06862,"z":0.0},"screenPosition":{"x":0.30576378,"y":0.9037308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.62112,"y":116.5456,"z":-1.4210855E-14},"screenPosition":{"x":0.3046066,"y":0.95202225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.981026,"y":117.98843,"z":-1.4210855E-14},"screenPosition":{"x":0.2704381,"y":0.97206146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.30276,"y":119.070076,"z":0.0},"screenPosition":{"x":0.21464081,"y":0.9870844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.167725,"y":119.668205,"z":-1.4210855E-14},"screenPosition":{"x":0.14932759,"y":0.9953917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.647865,"y":115.80525,"z":0.0},"screenPosition":{"x":0.11766379,"y":0.94173956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.983364,"y":117.72735,"z":0.0},"screenPosition":{"x":0.08298675,"y":0.9684354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.09324,"y":113.17315,"z":0.0},"screenPosition":{"x":0.14777577,"y":0.9051826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.93315,"y":111.62462,"z":0.0},"screenPosition":{"x":0.165274,"y":0.8836753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.50736,"y":112.33476,"z":-1.4210855E-14},"screenPosition":{"x":0.114736654,"y":0.8935384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.04467,"y":110.216736,"z":0.0},"screenPosition":{"x":0.37593058,"y":0.8641214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.566505,"y":110.31996,"z":-1.4210855E-14},"screenPosition":{"x":0.19930214,"y":0.86555505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.21493,"y":109.976006,"z":-1.4210855E-14},"screenPosition":{"x":0.33781096,"y":0.86077785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.250015,"y":109.259285,"z":0.0},"screenPosition":{"x":0.276042,"y":0.85082334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.16458,"y":111.66485,"z":0.0},"screenPosition":{"x":0.6075955,"y":0.884234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.05612,"y":113.56928,"z":0.0},"screenPosition":{"x":0.5428359,"y":0.9106845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.41423,"y":112.84683,"z":0.0},"screenPosition":{"x":0.4877964,"y":0.90065044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.516396,"y":111.88486,"z":0.0},"screenPosition":{"x":0.4065916,"y":0.88728964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.243355,"y":108.08819,"z":0.0},"screenPosition":{"x":0.42173657,"y":0.8345581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.71204,"y":102.10393,"z":0.0},"screenPosition":{"x":0.4940009,"y":0.7514434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.90072,"y":99.896324,"z":0.0},"screenPosition":{"x":0.5604316,"y":0.7207823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.35484,"y":101.285904,"z":0.0},"screenPosition":{"x":0.4657258,"y":0.740082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.31484,"y":99.54593,"z":0.0},"screenPosition":{"x":0.52739257,"y":0.7159157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.874275,"y":102.46452,"z":0.0},"screenPosition":{"x":0.64321405,"y":0.7564517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.64071,"y":97.58376,"z":0.0},"screenPosition":{"x":0.63834804,"y":0.6886633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.153755,"y":98.51379,"z":0.0},"screenPosition":{"x":0.71153665,"y":0.7015803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.504326,"y":105.51621,"z":1.4210855E-14},"screenPosition":{"x":0.69800675,"y":0.7988363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.67846,"y":106.22599,"z":0.0},"screenPosition":{"x":0.7433012,"y":0.8086943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.86295,"y":108.94035,"z":0.0},"screenPosition":{"x":0.70547825,"y":0.8463938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.261566,"y":109.886375,"z":-1.4210855E-14},"screenPosition":{"x":0.6721159,"y":0.859533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.25347,"y":105.86072,"z":-1.4210855E-14},"screenPosition":{"x":0.58861405,"y":0.80362105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.28166,"y":102.81279,"z":1.4210855E-14},"screenPosition":{"x":0.6100346,"y":0.76128876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.11132,"y":106.79454,"z":0.0},"screenPosition":{"x":0.4814858,"y":0.8165909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.16116,"y":103.039085,"z":0.0},"screenPosition":{"x":0.50335765,"y":0.7644318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.55791,"y":100.709625,"z":0.0},"screenPosition":{"x":0.55328965,"y":0.7320781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.962555,"y":99.08794,"z":0.0},"screenPosition":{"x":0.6242199,"y":0.70955473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.028786,"y":100.60208,"z":0.0},"screenPosition":{"x":0.6880997,"y":0.7305845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.05833,"y":102.11875,"z":0.0},"screenPosition":{"x":0.7095485,"y":0.7516494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.45348,"y":107.39844,"z":0.0},"screenPosition":{"x":0.65528095,"y":0.82497835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.47507,"y":110.12974,"z":0.0},"screenPosition":{"x":0.7390639,"y":0.8629131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.9564,"y":111.672035,"z":0.0},"screenPosition":{"x":0.68659157,"y":0.8843338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.31337,"y":111.54787,"z":-1.4210855E-14},"screenPosition":{"x":0.6315285,"y":0.88260925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.99465,"y":107.036865,"z":0.0},"screenPosition":{"x":0.5623886,"y":0.8199565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.43611,"y":109.51452,"z":-1.4210855E-14},"screenPosition":{"x":0.48825225,"y":0.8543684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.00625,"y":105.49944,"z":0.0},"screenPosition":{"x":0.4792969,"y":0.79860336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.51073,"y":101.52195,"z":0.0},"screenPosition":{"x":0.5106401,"y":0.7433604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.47233,"y":104.105415,"z":-1.4210855E-14},"screenPosition":{"x":0.6765068,"y":0.77924186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.41855,"y":101.76347,"z":-1.4210855E-14},"screenPosition":{"x":0.63371974,"y":0.74671495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.262566,"y":102.234375,"z":-1.4210855E-14},"screenPosition":{"x":0.69297016,"y":0.7532552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.41144,"y":104.34296,"z":0.0},"screenPosition":{"x":0.716905,"y":0.7825411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.932755,"y":105.874725,"z":-1.4210855E-14},"screenPosition":{"x":0.7694324,"y":0.80381566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.21293,"y":108.35581,"z":0.0},"screenPosition":{"x":0.79610264,"y":0.8382752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.923294,"y":110.611565,"z":0.0},"screenPosition":{"x":0.81090194,"y":0.86960506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.48809,"y":113.11538,"z":0.0},"screenPosition":{"x":0.8018353,"y":0.9043803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.34965,"y":114.670334,"z":0.0},"screenPosition":{"x":0.7781177,"y":0.9259769},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.58832,"y":115.865944,"z":1.4210855E-14},"screenPosition":{"x":0.72058994,"y":0.9425825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.7791,"y":116.098526,"z":0.0},"screenPosition":{"x":0.64123124,"y":0.9458129},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":89.73901,"y":111.66594,"z":-1.4210855E-14},"screenPosition":{"x":0.61956275,"y":0.88424915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.967026,"y":108.104935,"z":-1.4210855E-14},"screenPosition":{"x":0.624313,"y":0.83479077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.849525,"y":107.625145,"z":0.0},"screenPosition":{"x":0.5385317,"y":0.828127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.6839,"y":111.89471,"z":0.0},"screenPosition":{"x":0.51424795,"y":0.88742644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.933266,"y":114.173676,"z":0.0},"screenPosition":{"x":0.6027764,"y":0.9190788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.6239,"y":109.88161,"z":-1.4210855E-14},"screenPosition":{"x":0.6171646,"y":0.85946673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.56734,"y":106.44834,"z":0.0},"screenPosition":{"x":0.57431954,"y":0.8117825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.546234,"y":104.33084,"z":0.0},"screenPosition":{"x":0.55304664,"y":0.7823728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.67283,"y":104.324875,"z":0.0},"screenPosition":{"x":0.47235057,"y":0.7822899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.50317,"y":104.90811,"z":0.0},"screenPosition":{"x":0.4271493,"y":0.79039043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.94511,"y":111.645485,"z":0.0},"screenPosition":{"x":0.39468965,"y":0.8839651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.03769,"y":109.99201,"z":-1.4210855E-14},"screenPosition":{"x":0.52161855,"y":0.8610002},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.807556,"y":105.03072,"z":0.0},"screenPosition":{"x":0.4959907,"y":0.79209334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.49972,"y":105.260414,"z":0.0},"screenPosition":{"x":0.42707747,"y":0.79528356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.81853,"y":107.727875,"z":-1.4210855E-14},"screenPosition":{"x":0.35038593,"y":0.8295538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.41715,"y":110.456795,"z":0.0},"screenPosition":{"x":0.4045241,"y":0.8674555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.6936,"y":105.597275,"z":-1.4210855E-14},"screenPosition":{"x":0.22278337,"y":0.79996216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.852425,"y":106.417595,"z":-1.4210855E-14},"screenPosition":{"x":0.18442556,"y":0.8113555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.65433,"y":107.71053,"z":0.0},"screenPosition":{"x":0.13863176,"y":0.829313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":63.911854,"y":107.82389,"z":-1.4210855E-14},"screenPosition":{"x":0.08149695,"y":0.8308874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":64.11961,"y":100.33043,"z":0.0},"screenPosition":{"x":0.085825354,"y":0.7268115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.49951,"y":99.51998,"z":0.0},"screenPosition":{"x":0.114573166,"y":0.7155553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.3807,"y":97.89585,"z":0.0},"screenPosition":{"x":0.049597908,"y":0.6929979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":62.780216,"y":95.8218,"z":0.0},"screenPosition":{"x":0.057921205,"y":0.66419166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.36505,"y":96.05479,"z":-1.4210855E-14},"screenPosition":{"x":0.111771956,"y":0.6674276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.80895,"y":97.55603,"z":0.0},"screenPosition":{"x":0.16268651,"y":0.68827826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.37703,"y":98.9469,"z":0.0},"screenPosition":{"x":0.21618812,"y":0.70759577},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":77.16026,"y":91.030624,"z":-1.4210855E-14},"screenPosition":{"x":0.35750553,"y":0.5976476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.325226,"y":92.85323,"z":-1.4210855E-14},"screenPosition":{"x":0.29844218,"y":0.6229616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.16435,"y":89.55123,"z":0.0},"screenPosition":{"x":0.31592396,"y":0.5771004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.75954,"y":87.62741,"z":0.0},"screenPosition":{"x":0.34915695,"y":0.55038065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.21104,"y":88.988235,"z":0.0},"screenPosition":{"x":0.4210633,"y":0.5692811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.68215,"y":89.10441,"z":1.4210855E-14},"screenPosition":{"x":0.49337813,"y":0.57089454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.40607,"y":96.88225,"z":0.0},"screenPosition":{"x":0.4876263,"y":0.6789201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.391014,"y":96.65038,"z":0.0},"screenPosition":{"x":0.46647954,"y":0.6756998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.70447,"y":97.68845,"z":-1.4210855E-14},"screenPosition":{"x":0.45217642,"y":0.6901174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.3836,"y":100.24018,"z":0.0},"screenPosition":{"x":0.4871583,"y":0.72555804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.1934,"y":101.74899,"z":0.0},"screenPosition":{"x":0.42069584,"y":0.7465138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.13394,"y":98.60558,"z":0.0},"screenPosition":{"x":0.31529042,"y":0.7028553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.22534,"y":99.99693,"z":-1.4210855E-14},"screenPosition":{"x":0.31719467,"y":0.72217965},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.209274,"y":94.68779,"z":0.0},"screenPosition":{"x":0.33769327,"y":0.6484415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.98502,"y":97.6766,"z":0.0},"screenPosition":{"x":0.24968794,"y":0.68995273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.486336,"y":94.33859,"z":0.0},"screenPosition":{"x":0.23929861,"y":0.6435916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.44051,"y":91.48194,"z":-1.4210855E-14},"screenPosition":{"x":0.25917745,"y":0.60391587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.48478,"y":91.94272,"z":0.0},"screenPosition":{"x":0.3642662,"y":0.6103155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.99895,"y":98.83571,"z":-1.4210855E-14},"screenPosition":{"x":0.29164472,"y":0.7060515},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.99502,"y":99.06739,"z":-1.4210855E-14},"screenPosition":{"x":0.29156283,"y":0.7092693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.68678,"y":100.812454,"z":0.0},"screenPosition":{"x":0.3476413,"y":0.7335063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.384415,"y":102.90777,"z":-1.4210855E-14},"screenPosition":{"x":0.2996753,"y":0.76260793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.843254,"y":103.83814,"z":-1.4210855E-14},"screenPosition":{"x":0.2259012,"y":0.77552974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.22113,"y":103.13832,"z":0.0},"screenPosition":{"x":0.25460687,"y":0.76580995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.32226,"y":96.17555,"z":0.0},"screenPosition":{"x":0.21504697,"y":0.66910493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.00288,"y":98.60415,"z":-1.4210855E-14},"screenPosition":{"x":0.29172656,"y":0.70283544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.225525,"y":102.904594,"z":0.0},"screenPosition":{"x":0.25469851,"y":0.76256377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.27181,"y":104.31347,"z":1.4210855E-14},"screenPosition":{"x":0.31816277,"y":0.78213155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.06086,"y":105.599464,"z":-1.4210855E-14},"screenPosition":{"x":0.25126788,"y":0.79999256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.33476,"y":109.25765,"z":-1.4210855E-14},"screenPosition":{"x":0.25697425,"y":0.85080075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.80697,"y":107.24058,"z":0.0},"screenPosition":{"x":0.16264524,"y":0.82278585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.20158,"y":106.529305,"z":0.0},"screenPosition":{"x":0.108366236,"y":0.81290704},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.07656,"y":102.66053,"z":0.0},"screenPosition":{"x":0.105761655,"y":0.759174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.160515,"y":100.21705,"z":0.0},"screenPosition":{"x":0.12834404,"y":0.7252368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.35744,"y":98.24998,"z":1.4210855E-14},"screenPosition":{"x":0.17411327,"y":0.6979163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.88114,"y":95.71481,"z":0.0},"screenPosition":{"x":0.20585707,"y":0.6627057},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.65153,"y":99.298744,"z":0.0},"screenPosition":{"x":0.28440687,"y":0.7124826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.975655,"y":96.29836,"z":0.0},"screenPosition":{"x":0.3536594,"y":0.6708106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.270905,"y":99.5354,"z":1.4210855E-14},"screenPosition":{"x":0.35981047,"y":0.7157694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.61305,"y":102.915474,"z":0.0},"screenPosition":{"x":0.4086053,"y":0.76271486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.74619,"y":106.66779,"z":0.0},"screenPosition":{"x":0.36971235,"y":0.81483054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.46743,"y":104.7813,"z":0.0},"screenPosition":{"x":0.30140477,"y":0.7886292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.90112,"y":105.36104,"z":-1.4210855E-14},"screenPosition":{"x":0.20627339,"y":0.79668117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.874886,"y":101.26851,"z":0.0},"screenPosition":{"x":0.20572677,"y":0.73984045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.08563,"y":99.29801,"z":0.0},"screenPosition":{"x":0.27261734,"y":0.7124723},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":75.83745,"y":104.548836,"z":0.0},"screenPosition":{"x":0.32994685,"y":0.78540045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.300446,"y":103.72178,"z":0.0},"screenPosition":{"x":0.2354259,"y":0.7739136},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.80325,"y":97.34081,"z":0.0},"screenPosition":{"x":0.4334011,"y":0.6852891},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.543755,"y":98.84279,"z":-1.4210855E-14},"screenPosition":{"x":0.40716147,"y":0.7061498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.88235,"y":103.50364,"z":-1.4210855E-14},"screenPosition":{"x":0.45588222,"y":0.7708839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.015594,"y":103.38084,"z":0.0},"screenPosition":{"x":0.37532496,"y":0.7691783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.10787,"y":101.62666,"z":0.0},"screenPosition":{"x":0.33558068,"y":0.74481475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.069046,"y":101.3908,"z":0.0},"screenPosition":{"x":0.29310513,"y":0.74153894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.596924,"y":95.14315,"z":0.0},"screenPosition":{"x":0.2624359,"y":0.654766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.30355,"y":93.42407,"z":-1.4210855E-14},"screenPosition":{"x":0.27715734,"y":0.63088983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.12829,"y":91.82643,"z":0.0},"screenPosition":{"x":0.3151726,"y":0.60870045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.805145,"y":89.548454,"z":0.0},"screenPosition":{"x":0.24594048,"y":0.57706183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.06504,"y":88.757515,"z":0.0},"screenPosition":{"x":0.31385493,"y":0.5660766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.19892,"y":88.19311,"z":0.0},"screenPosition":{"x":0.3583109,"y":0.5582376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.64375,"y":89.66845,"z":0.0},"screenPosition":{"x":0.40924487,"y":0.57872844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.8755,"y":90.80715,"z":0.0},"screenPosition":{"x":0.4557397,"y":0.59454376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.445175,"y":91.03627,"z":1.4210855E-14},"screenPosition":{"x":0.48844108,"y":0.597726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.264565,"y":90.356735,"z":0.0},"screenPosition":{"x":0.56801176,"y":0.58828795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.94126,"y":88.42776,"z":0.0},"screenPosition":{"x":0.58210963,"y":0.56149656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.737076,"y":85.26924,"z":0.0},"screenPosition":{"x":0.6403557,"y":0.5176283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.85732,"y":78.568504,"z":0.0},"screenPosition":{"x":0.51786083,"y":0.4245625},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":85.18685,"y":79.122894,"z":-1.4210855E-14},"screenPosition":{"x":0.5247261,"y":0.4322624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.75929,"y":77.130325,"z":0.0},"screenPosition":{"x":0.49498522,"y":0.40458786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.10497,"y":74.81743,"z":0.0},"screenPosition":{"x":0.50218695,"y":0.3724643},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.14784,"y":73.71998,"z":0.0},"screenPosition":{"x":0.41974673,"y":0.35722193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.27512,"y":70.88032,"z":0.0},"screenPosition":{"x":0.4432318,"y":0.31778222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.11311,"y":71.64293,"z":0.0},"screenPosition":{"x":0.5231899,"y":0.32837397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.84646,"y":68.27497,"z":0.0},"screenPosition":{"x":0.45513448,"y":0.28159687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.75484,"y":77.020134,"z":-1.4210855E-14},"screenPosition":{"x":0.5157257,"y":0.4030574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.465965,"y":74.0489,"z":1.4210855E-14},"screenPosition":{"x":0.44720757,"y":0.3617902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.29866,"y":70.98934,"z":0.0},"screenPosition":{"x":0.4020554,"y":0.31929642},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.213135,"y":67.51837,"z":-1.4210855E-14},"screenPosition":{"x":0.42110702,"y":0.27108845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.66831,"y":66.43741,"z":0.0},"screenPosition":{"x":0.55558985,"y":0.25607505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.51934,"y":72.188614,"z":0.0},"screenPosition":{"x":0.59415287,"y":0.335953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.998665,"y":70.00965,"z":0.0},"screenPosition":{"x":0.54163885,"y":0.30568954},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":77.885025,"y":70.010605,"z":0.0},"screenPosition":{"x":0.37260476,"y":0.3057028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.34264,"y":65.577866,"z":0.0},"screenPosition":{"x":0.42380512,"y":0.24413697},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.1386,"y":74.59736,"z":-1.4210855E-14},"screenPosition":{"x":0.41955426,"y":0.36940777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.58293,"y":70.444824,"z":0.0},"screenPosition":{"x":0.491311,"y":0.31173366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.64025,"y":75.14745,"z":0.0},"screenPosition":{"x":0.5550053,"y":0.37704793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.21048,"y":76.57843,"z":0.0},"screenPosition":{"x":0.4835516,"y":0.3969226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.13282,"y":75.1466,"z":0.0},"screenPosition":{"x":0.4194338,"y":0.37703612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.92514,"y":72.18882,"z":0.0},"screenPosition":{"x":0.24844046,"y":0.33595586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.58257,"y":68.05946,"z":0.0},"screenPosition":{"x":0.3663036,"y":0.27860364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":66.78304,"y":75.80442,"z":0.0},"screenPosition":{"x":0.14131345,"y":0.3861725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":70.2947,"y":71.42555,"z":-1.4210855E-14},"screenPosition":{"x":0.21447298,"y":0.3253549},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.813156,"y":72.29798,"z":0.0},"screenPosition":{"x":0.24610749,"y":0.33747193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.63899,"y":71.31665,"z":0.0},"screenPosition":{"x":0.20081234,"y":0.3238424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.35047,"y":75.144936,"z":0.0},"screenPosition":{"x":0.15313485,"y":0.37701294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.360085,"y":65.795296,"z":0.0},"screenPosition":{"x":0.27833503,"y":0.24715686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":65.643364,"y":69.03594,"z":0.0},"screenPosition":{"x":0.11757007,"y":0.29216585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":68.538246,"y":66.87374,"z":0.0},"screenPosition":{"x":0.17788008,"y":0.26213533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.49793,"y":66.226395,"z":0.0},"screenPosition":{"x":0.23954022,"y":0.2531444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.58694,"y":54.43571,"z":-1.4210855E-14},"screenPosition":{"x":0.19972777,"y":0.08938488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.71225,"y":64.39879,"z":0.0},"screenPosition":{"x":0.28567192,"y":0.22776099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.779785,"y":54.641766,"z":0.0},"screenPosition":{"x":0.28707892,"y":0.092246726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.407524,"y":55.78759,"z":0.0},"screenPosition":{"x":0.52932346,"y":0.10816095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.46244,"y":55.170074,"z":0.0},"screenPosition":{"x":0.1971342,"y":0.099584356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.18537,"y":55.168636,"z":0.0},"screenPosition":{"x":0.23302855,"y":0.099564366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.66984,"y":57.789677,"z":0.0},"screenPosition":{"x":0.57645494,"y":0.13596773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.13074,"y":60.539116,"z":0.0},"screenPosition":{"x":0.8568903,"y":0.1741544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.198685,"y":52.943024,"z":0.0},"screenPosition":{"x":0.81663924,"y":0.06865309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.49955,"y":60.433628,"z":0.0},"screenPosition":{"x":0.8229073,"y":0.17268926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.35722,"y":65.67956,"z":0.0},"screenPosition":{"x":0.79910886,"y":0.2455494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.3288,"y":64.60363,"z":0.0},"screenPosition":{"x":0.81935,"y":0.230606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.39121,"y":62.245987,"z":-1.4210855E-14},"screenPosition":{"x":0.84148353,"y":0.19786094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.759186,"y":64.066635,"z":0.0},"screenPosition":{"x":0.82831633,"y":0.22314775},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":99.04323,"y":68.48821,"z":0.0},"screenPosition":{"x":0.8134006,"y":0.2845585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.29411,"y":70.334564,"z":0.0},"screenPosition":{"x":0.797794,"y":0.31020224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.987465,"y":72.735245,"z":0.0},"screenPosition":{"x":0.79140544,"y":0.34354502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.807816,"y":77.46538,"z":0.0},"screenPosition":{"x":0.8084961,"y":0.40924132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.90576,"y":76.25057,"z":0.0},"screenPosition":{"x":0.8105367,"y":0.3923691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.03521,"y":78.01872,"z":0.0},"screenPosition":{"x":0.81323355,"y":0.41692668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.17478,"y":80.68414,"z":-1.4210855E-14},"screenPosition":{"x":0.81614125,"y":0.4539464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.18801,"y":81.9111,"z":-1.4210855E-14},"screenPosition":{"x":0.816417,"y":0.4709875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.44277,"y":84.82472,"z":0.0},"screenPosition":{"x":0.82172436,"y":0.51145446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.36186,"y":87.644,"z":-1.4210855E-14},"screenPosition":{"x":0.82003886,"y":0.5506111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.134224,"y":89.115234,"z":-1.4210855E-14},"screenPosition":{"x":0.77362967,"y":0.571045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.11394,"y":87.64161,"z":0.0},"screenPosition":{"x":0.75237375,"y":0.55057794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.181465,"y":88.65609,"z":-1.4210855E-14},"screenPosition":{"x":0.62878054,"y":0.5646679},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.519005,"y":85.49476,"z":0.0},"screenPosition":{"x":0.6566459,"y":0.52076054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.258064,"y":90.479195,"z":0.0},"screenPosition":{"x":0.77620965,"y":0.5899888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.551735,"y":85.04908,"z":0.0},"screenPosition":{"x":0.80316114,"y":0.51457053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.918045,"y":87.305145,"z":0.0},"screenPosition":{"x":0.8316259,"y":0.54590476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.95598,"y":90.5954,"z":0.0},"screenPosition":{"x":0.8324163,"y":0.59160274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.804115,"y":89.91004,"z":0.0},"screenPosition":{"x":0.7667524,"y":0.5820839},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.59346,"y":96.088165,"z":0.0},"screenPosition":{"x":0.7206971,"y":0.6678912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.88012,"y":91.15871,"z":0.0},"screenPosition":{"x":0.6850025,"y":0.5994265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.47169,"y":90.47851,"z":-1.4210855E-14},"screenPosition":{"x":0.7598268,"y":0.5899793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.78129,"y":87.0769,"z":0.0},"screenPosition":{"x":0.7662768,"y":0.5427347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.4862,"y":87.984344,"z":-1.4210855E-14},"screenPosition":{"x":0.8434625,"y":0.55533814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.660255,"y":91.9655,"z":-1.4210855E-14},"screenPosition":{"x":0.867922,"y":0.61063194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.81932,"y":95.40535,"z":0.0},"screenPosition":{"x":0.87123585,"y":0.6584076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.148605,"y":97.47968,"z":0.0},"screenPosition":{"x":0.8364292,"y":0.68721783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.54149,"y":99.56063,"z":0.0},"screenPosition":{"x":0.761281,"y":0.7161199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.12534,"y":96.31698,"z":0.0},"screenPosition":{"x":0.6901113,"y":0.6710692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.85967,"y":94.82597,"z":-1.4210855E-14},"screenPosition":{"x":0.78874314,"y":0.65036076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.613144,"y":91.16389,"z":0.0},"screenPosition":{"x":0.80444044,"y":0.59949845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.68171,"y":93.56747,"z":0.0},"screenPosition":{"x":0.8683689,"y":0.63288146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.845825,"y":97.366135,"z":0.0},"screenPosition":{"x":0.87178797,"y":0.68564075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.48306,"y":98.75229,"z":0.0},"screenPosition":{"x":0.82256377,"y":0.7048929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.55971,"y":103.41454,"z":0.0},"screenPosition":{"x":0.84499395,"y":0.76964647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.67203,"y":99.09786,"z":0.0},"screenPosition":{"x":0.7848339,"y":0.70969254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.25114,"y":99.44024,"z":1.4210855E-14},"screenPosition":{"x":0.6927321,"y":0.7144478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.361305,"y":94.93711,"z":0.0},"screenPosition":{"x":0.7158606,"y":0.65190434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.54048,"y":93.67991,"z":0.0},"screenPosition":{"x":0.82376003,"y":0.6344432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.28109,"y":97.48106,"z":0.0},"screenPosition":{"x":0.8600228,"y":0.68723685},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":100.66232,"y":102.47872,"z":-1.4210855E-14},"screenPosition":{"x":0.84713167,"y":0.7566489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.66471,"y":104.93818,"z":0.0},"screenPosition":{"x":0.8263481,"y":0.790808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.91563,"y":106.94044,"z":0.0},"screenPosition":{"x":0.8315755,"y":0.81861717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.84219,"y":110.61326,"z":-1.4210855E-14},"screenPosition":{"x":0.83004576,"y":0.8696286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.55129,"y":111.32323,"z":0.0},"screenPosition":{"x":0.78231853,"y":0.8794893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.49041,"y":113.35463,"z":0.0},"screenPosition":{"x":0.80188346,"y":0.90770316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.58121,"y":114.79694,"z":0.0},"screenPosition":{"x":0.8454419,"y":0.9277353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.199066,"y":115.03423,"z":0.0},"screenPosition":{"x":0.81664723,"y":0.931031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.488686,"y":111.57653,"z":0.0},"screenPosition":{"x":0.94768095,"y":0.8830074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.91091,"y":109.43608,"z":0.0},"screenPosition":{"x":0.9564774,"y":0.85327893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.05755,"y":106.47707,"z":1.4210855E-14},"screenPosition":{"x":0.93869895,"y":0.8121816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.78045,"y":115.63002,"z":0.0},"screenPosition":{"x":0.7662594,"y":0.9393058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.62439,"y":115.273285,"z":-1.4210855E-14},"screenPosition":{"x":0.8046748,"y":0.93435115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.85223,"y":114.9196,"z":-1.4210855E-14},"screenPosition":{"x":0.8719213,"y":0.9294389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.98505,"y":110.13977,"z":1.4210855E-14},"screenPosition":{"x":0.8538551,"y":0.86305237},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.78663,"y":110.8604,"z":0.0},"screenPosition":{"x":0.9330547,"y":0.87306106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.1139,"y":108.71788,"z":0.0},"screenPosition":{"x":0.877373,"y":0.8433039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.37746,"y":107.29539,"z":0.0},"screenPosition":{"x":0.8411971,"y":0.82354707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.749374,"y":107.76357,"z":-1.4210855E-14},"screenPosition":{"x":0.7864454,"y":0.8300496},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.02797,"y":107.170006,"z":0.0},"screenPosition":{"x":0.75058264,"y":0.8218056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.75488,"y":104.57819,"z":-1.4210855E-14},"screenPosition":{"x":0.72406,"y":0.7858082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.21665,"y":103.04952,"z":0.0},"screenPosition":{"x":0.6503468,"y":0.7645767},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.932655,"y":96.78749,"z":-1.4210855E-14},"screenPosition":{"x":0.8527636,"y":0.6776041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.46592,"y":96.66334,"z":0.0},"screenPosition":{"x":0.6972066,"y":0.67587966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.83425,"y":95.74402,"z":-1.4210855E-14},"screenPosition":{"x":0.7465469,"y":0.6631113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.88283,"y":95.51718,"z":0.0},"screenPosition":{"x":0.8100589,"y":0.65996087},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.932655,"y":96.78749,"z":-1.4210855E-14},"screenPosition":{"x":0.8527636,"y":0.6776041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.200096,"y":95.86864,"z":-1.4210855E-14},"screenPosition":{"x":0.9208354,"y":0.6648422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.11229,"y":98.7569,"z":1.4210855E-14},"screenPosition":{"x":0.8981727,"y":0.7049569},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.76695,"y":101.318535,"z":0.0},"screenPosition":{"x":0.9534782,"y":0.74053526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.3578,"y":105.65124,"z":0.0},"screenPosition":{"x":0.92412096,"y":0.80071163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.551834,"y":105.05551,"z":0.0},"screenPosition":{"x":0.8239965,"y":0.7924377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.09839,"y":102.94564,"z":0.0},"screenPosition":{"x":0.83538306,"y":0.7631339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.60172,"y":103.995995,"z":0.0},"screenPosition":{"x":0.7833693,"y":0.7777221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.6315,"y":99.21124,"z":0.0},"screenPosition":{"x":0.742323,"y":0.7112673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.124054,"y":101.88256,"z":0.0},"screenPosition":{"x":0.6692511,"y":0.74836886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.39363,"y":106.34007,"z":1.4210855E-14},"screenPosition":{"x":0.6957006,"y":0.8102788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.37381,"y":107.52488,"z":0.0},"screenPosition":{"x":0.75778764,"y":0.8267344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.470726,"y":108.12131,"z":-1.4210855E-14},"screenPosition":{"x":0.8223068,"y":0.83501816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.294044,"y":105.17739,"z":0.0},"screenPosition":{"x":0.8811259,"y":0.79413044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.041504,"y":102.24125,"z":0.0},"screenPosition":{"x":0.7925314,"y":0.75335073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.359665,"y":102.357086,"z":-1.4210855E-14},"screenPosition":{"x":0.7783264,"y":0.7549595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.15965,"y":99.67363,"z":0.0},"screenPosition":{"x":0.71165943,"y":0.7176893},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":98.773926,"y":107.17461,"z":-1.4210855E-14},"screenPosition":{"x":0.8077901,"y":0.82186955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.26541,"y":108.35244,"z":0.0},"screenPosition":{"x":0.75552946,"y":0.8382283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.54406,"y":110.4901,"z":0.0},"screenPosition":{"x":0.7821679,"y":0.867918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.658325,"y":107.056366,"z":0.0},"screenPosition":{"x":0.8053818,"y":0.82022727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.140625,"y":108.36436,"z":0.0},"screenPosition":{"x":0.8987631,"y":0.83839387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.406136,"y":103.1846,"z":-1.4210855E-14},"screenPosition":{"x":0.90429455,"y":0.7664527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.73059,"y":100.6112,"z":-1.4210855E-14},"screenPosition":{"x":0.8277206,"y":0.7307111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.44914,"y":106.10783,"z":0.0},"screenPosition":{"x":0.73852384,"y":0.8070531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.98301,"y":104.578545,"z":0.0},"screenPosition":{"x":0.72881275,"y":0.78581315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.059,"y":108.465225,"z":0.0},"screenPosition":{"x":0.6887291,"y":0.8397948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.56221,"y":111.07947,"z":-1.4210855E-14},"screenPosition":{"x":0.7200461,"y":0.8761037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.29847,"y":112.87199,"z":-1.4210855E-14},"screenPosition":{"x":0.75621814,"y":0.90099984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.49619,"y":113.953285,"z":0.0},"screenPosition":{"x":0.8020041,"y":0.91601783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.81492,"y":115.03756,"z":0.0},"screenPosition":{"x":0.85031086,"y":0.9310772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.79065,"y":113.3651,"z":1.4210855E-14},"screenPosition":{"x":0.9123052,"y":0.9078486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.60166,"y":111.45753,"z":0.0},"screenPosition":{"x":0.9500347,"y":0.8813546},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.78986,"y":109.079956,"z":0.0},"screenPosition":{"x":0.9539554,"y":0.8483327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.74551,"y":108.36714,"z":0.0},"screenPosition":{"x":0.932198,"y":0.83843255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.17174,"y":104.5897,"z":0.0},"screenPosition":{"x":0.8785779,"y":0.78596807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.72659,"y":107.76865,"z":-1.4210855E-14},"screenPosition":{"x":0.84847075,"y":0.83012015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.705315,"y":112.52404,"z":0.0},"screenPosition":{"x":0.8688608,"y":0.8961673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.26264,"y":111.81463,"z":0.0},"screenPosition":{"x":0.9429717,"y":0.8863143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.91162,"y":110.73605,"z":0.0},"screenPosition":{"x":0.87315875,"y":0.8713341},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.149956,"y":105.18191,"z":-1.4210855E-14},"screenPosition":{"x":0.940624,"y":0.79419315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.17643,"y":103.0672,"z":-1.4210855E-14},"screenPosition":{"x":0.8995089,"y":0.76482224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.45544,"y":106.70371,"z":0.0},"screenPosition":{"x":0.8219882,"y":0.8153293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.08088,"y":101.42721,"z":0.0},"screenPosition":{"x":0.8350183,"y":0.7420445},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.74497,"y":98.29164,"z":0.0},"screenPosition":{"x":0.8696869,"y":0.69849503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.48306,"y":98.75229,"z":0.0},"screenPosition":{"x":0.82256377,"y":0.7048929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.21688,"y":95.057365,"z":-1.4210855E-14},"screenPosition":{"x":0.8170184,"y":0.65357447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.34664,"y":84.48985,"z":0.0},"screenPosition":{"x":0.9030551,"y":0.5068035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.94811,"y":89.91269,"z":0.0},"screenPosition":{"x":0.83225226,"y":0.5821207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.22373,"y":84.37628,"z":0.0},"screenPosition":{"x":0.85882777,"y":0.5052262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.31051,"y":82.6942,"z":0.0},"screenPosition":{"x":0.83980227,"y":0.48186383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.46179,"y":84.71469,"z":0.0},"screenPosition":{"x":0.90545404,"y":0.5099263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.85333,"y":81.35455,"z":0.0},"screenPosition":{"x":0.8927778,"y":0.4632577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.28768,"y":80.79599,"z":0.0},"screenPosition":{"x":0.8393267,"y":0.4554999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.7238,"y":80.01578,"z":-1.4210855E-14},"screenPosition":{"x":0.7859126,"y":0.44466355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.17396,"y":80.57041,"z":0.0},"screenPosition":{"x":0.69112414,"y":0.45236683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.20886,"y":86.173,"z":0.0},"screenPosition":{"x":0.7335179,"y":0.53018045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.6788,"y":85.95049,"z":0.0},"screenPosition":{"x":0.8266418,"y":0.5270902},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.520325,"y":73.2828,"z":0.0},"screenPosition":{"x":0.86500674,"y":0.35115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.50621,"y":80.46232,"z":0.0},"screenPosition":{"x":0.8647127,"y":0.45086557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.032135,"y":78.463005,"z":-1.4210855E-14},"screenPosition":{"x":0.89650285,"y":0.42309734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.76141,"y":73.72118,"z":0.0},"screenPosition":{"x":0.8283627,"y":0.3572387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.43468,"y":73.39224,"z":-1.4210855E-14},"screenPosition":{"x":0.8007224,"y":0.35267004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.154015,"y":69.68183,"z":0.0},"screenPosition":{"x":0.8365419,"y":0.30113655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.95908,"y":70.87898,"z":-1.4210855E-14},"screenPosition":{"x":0.8116476,"y":0.31776363},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.22728,"y":69.79128,"z":0.0},"screenPosition":{"x":0.71306837,"y":0.30265668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.5474,"y":68.162476,"z":1.4210855E-14},"screenPosition":{"x":0.88640416,"y":0.28003433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.86701,"y":71.64243,"z":-1.4210855E-14},"screenPosition":{"x":0.78889614,"y":0.3283671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.11716,"y":75.80984,"z":0.0},"screenPosition":{"x":0.83577406,"y":0.38624772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.74861,"y":72.62575,"z":0.0},"screenPosition":{"x":0.57809615,"y":0.3420243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.548996,"y":68.270805,"z":0.0},"screenPosition":{"x":0.8864374,"y":0.28153893},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.46458,"y":68.1629,"z":0.0},"screenPosition":{"x":0.8430119,"y":0.28004032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.7067,"y":64.28249,"z":0.0},"screenPosition":{"x":0.76472294,"y":0.22614576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.16175,"y":66.43436,"z":0.0},"screenPosition":{"x":0.7742031,"y":0.25603276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.12831,"y":71.860886,"z":-1.4210855E-14},"screenPosition":{"x":0.71100646,"y":0.33140117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.52269,"y":71.206024,"z":0.0},"screenPosition":{"x":0.80255604,"y":0.32230586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.58295,"y":69.79034,"z":0.0},"screenPosition":{"x":0.8663114,"y":0.3026436},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.8607,"y":63.42326,"z":0.0},"screenPosition":{"x":0.8304313,"y":0.21421194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.59128,"y":63.743664,"z":0.0},"screenPosition":{"x":0.8873183,"y":0.218662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.94118,"y":62.673378,"z":0.0},"screenPosition":{"x":0.85294116,"y":0.20379692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.11846,"y":62.565384,"z":0.0},"screenPosition":{"x":0.8983013,"y":0.20229702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.782074,"y":60.22245,"z":0.0},"screenPosition":{"x":0.76629317,"y":0.16975628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.13234,"y":65.03399,"z":-1.4210855E-14},"screenPosition":{"x":0.79442376,"y":0.23658317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.94825,"y":56.61443,"z":-1.4210855E-14},"screenPosition":{"x":0.9572551,"y":0.119644836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.84684,"y":53.881294,"z":0.0},"screenPosition":{"x":0.9134758,"y":0.08168467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.73237,"y":61.389618,"z":0.0},"screenPosition":{"x":0.9319244,"y":0.18596692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.45145,"y":59.04856,"z":0.0},"screenPosition":{"x":0.9469051,"y":0.15345223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.89124,"y":56.830093,"z":-1.4210855E-14},"screenPosition":{"x":0.83106756,"y":0.122640185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.66893,"y":58.4156,"z":0.0},"screenPosition":{"x":0.84726936,"y":0.14466113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.87128,"y":60.64459,"z":0.0},"screenPosition":{"x":0.8931516,"y":0.17561927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.583145,"y":53.98818,"z":0.0},"screenPosition":{"x":0.8663155,"y":0.08316915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.71165,"y":65.57011,"z":0.0},"screenPosition":{"x":0.9106593,"y":0.24402925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.7787,"y":58.521473,"z":0.0},"screenPosition":{"x":0.84955627,"y":0.14613155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.61103,"y":63.851322,"z":0.0},"screenPosition":{"x":0.86689645,"y":0.22015724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.3637,"y":63.100815,"z":0.0},"screenPosition":{"x":0.8825771,"y":0.20973355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.6006,"y":65.46247,"z":-1.4210855E-14},"screenPosition":{"x":0.9083459,"y":0.24253428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.3352,"y":69.46407,"z":-1.4210855E-14},"screenPosition":{"x":0.90281665,"y":0.29811212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.36973,"y":68.27145,"z":-1.4210855E-14},"screenPosition":{"x":0.82020265,"y":0.2815478},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.73014,"y":63.208637,"z":-1.4210855E-14},"screenPosition":{"x":0.8485446,"y":0.21123105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.301674,"y":71.09701,"z":0.0},"screenPosition":{"x":0.7979516,"y":0.32079175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.859566,"y":67.94561,"z":0.0},"screenPosition":{"x":0.91374093,"y":0.27702233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.2443,"y":67.29935,"z":0.0},"screenPosition":{"x":0.6717563,"y":0.2680465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.019936,"y":65.35878,"z":-1.4210855E-14},"screenPosition":{"x":0.6670821,"y":0.24109422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.87773,"y":61.289345,"z":0.0},"screenPosition":{"x":0.6849528,"y":0.18457422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.51411,"y":65.35759,"z":-1.4210855E-14},"screenPosition":{"x":0.73987716,"y":0.2410776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.59062,"y":68.48964,"z":0.0},"screenPosition":{"x":0.658138,"y":0.28457826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.48937,"y":64.38993,"z":0.0},"screenPosition":{"x":0.7601953,"y":0.22763792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.6826,"y":61.396584,"z":0.0},"screenPosition":{"x":0.66005415,"y":0.18606365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.46896,"y":58.736954,"z":0.0},"screenPosition":{"x":0.7389368,"y":0.14912437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.69877,"y":60.75231,"z":-1.4210855E-14},"screenPosition":{"x":0.8478911,"y":0.17711544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.19086,"y":71.96996,"z":0.0},"screenPosition":{"x":0.8164761,"y":0.33291614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.31401,"y":66.10961,"z":-1.4210855E-14},"screenPosition":{"x":0.8607085,"y":0.2515224},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.439354,"y":68.27082,"z":-1.4210855E-14},"screenPosition":{"x":0.8841531,"y":0.28153923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.34208,"y":75.69954,"z":0.0},"screenPosition":{"x":0.8196266,"y":0.38471586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.85347,"y":81.465706,"z":0.0},"screenPosition":{"x":0.8719472,"y":0.4648015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.0063,"y":74.70911,"z":0.0},"screenPosition":{"x":0.791798,"y":0.37095982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.148705,"y":78.01848,"z":0.0},"screenPosition":{"x":0.79476464,"y":0.41692337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.39708,"y":80.68423,"z":0.0},"screenPosition":{"x":0.8207725,"y":0.45394763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.05734,"y":80.12898,"z":0.0},"screenPosition":{"x":0.8970279,"y":0.44623587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.70732,"y":79.12919,"z":-1.4210855E-14},"screenPosition":{"x":0.9314025,"y":0.43234986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.894,"y":77.245895,"z":1.4210855E-14},"screenPosition":{"x":0.9561249,"y":0.406193},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":101.4086,"y":73.17324,"z":0.0},"screenPosition":{"x":0.8626792,"y":0.34962836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.116264,"y":75.25911,"z":-1.4210855E-14},"screenPosition":{"x":0.81492215,"y":0.37859875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.37623,"y":78.794586,"z":0.0},"screenPosition":{"x":0.82033813,"y":0.42770258},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":100.01161,"y":85.72536,"z":-1.4210855E-14},"screenPosition":{"x":0.8335752,"y":0.5239633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.2325,"y":85.50025,"z":0.0},"screenPosition":{"x":0.838177,"y":0.52083683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.63583,"y":90.14159,"z":0.0},"screenPosition":{"x":0.86741316,"y":0.5852998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.92471,"y":92.76799,"z":1.4210855E-14},"screenPosition":{"x":0.9150982,"y":0.6217776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":104.452446,"y":90.59934,"z":0.0},"screenPosition":{"x":0.9260927,"y":0.5916575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.05373,"y":92.88355,"z":0.0},"screenPosition":{"x":0.9386193,"y":0.6233827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":105.211975,"y":95.52423,"z":0.0},"screenPosition":{"x":0.9419161,"y":0.6600588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.7911,"y":98.64182,"z":1.4210855E-14},"screenPosition":{"x":0.9123146,"y":0.70335865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.73473,"y":99.10181,"z":0.0},"screenPosition":{"x":0.8486403,"y":0.7097473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.521545,"y":91.963486,"z":-1.4210855E-14},"screenPosition":{"x":0.82336545,"y":0.610604},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":100.29586,"y":90.823494,"z":0.0},"screenPosition":{"x":0.8394971,"y":0.5947708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.06104,"y":89.1184,"z":0.0},"screenPosition":{"x":0.8554383,"y":0.57108885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.868996,"y":82.80638,"z":-1.4210855E-14},"screenPosition":{"x":0.85143745,"y":0.48342198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.50183,"y":80.12804,"z":0.0},"screenPosition":{"x":0.8437882,"y":0.4462227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.20475,"y":82.918495,"z":0.0},"screenPosition":{"x":0.85843235,"y":0.48497906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.355705,"y":77.24461,"z":0.0},"screenPosition":{"x":0.84074384,"y":0.40617517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.60328,"y":79.349945,"z":0.0},"screenPosition":{"x":0.84590167,"y":0.43541586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.57809,"y":77.02341,"z":0.0},"screenPosition":{"x":0.8245434,"y":0.4031029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.32873,"y":74.48949,"z":0.0},"screenPosition":{"x":0.81934845,"y":0.36790952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.30925,"y":71.86076,"z":-1.4210855E-14},"screenPosition":{"x":0.79810935,"y":0.33139953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.27447,"y":61.605354,"z":-1.4210855E-14},"screenPosition":{"x":0.8390514,"y":0.18896325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.87081,"y":64.28125,"z":0.0},"screenPosition":{"x":0.83064187,"y":0.22612844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.26732,"y":66.003075,"z":0.0},"screenPosition":{"x":0.7764024,"y":0.2500427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.21846,"y":64.49626,"z":0.0},"screenPosition":{"x":0.8170512,"y":0.2291147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":100.44019,"y":57.46342,"z":0.0},"screenPosition":{"x":0.8425041,"y":0.13143638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.32621,"y":60.53843,"z":1.4210855E-14},"screenPosition":{"x":0.881796,"y":0.17414485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":102.304436,"y":59.050594,"z":0.0},"screenPosition":{"x":0.8813425,"y":0.1534805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":101.31365,"y":57.99163,"z":0.0},"screenPosition":{"x":0.86070114,"y":0.13877262},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.52182,"y":52.94272,"z":0.0},"screenPosition":{"x":0.8233713,"y":0.06864887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.25039,"y":55.04091,"z":0.0},"screenPosition":{"x":0.7968831,"y":0.09779041},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.55571,"y":55.8815,"z":0.0},"screenPosition":{"x":0.82407725,"y":0.109465286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.02929,"y":51.17065,"z":1.4210855E-14},"screenPosition":{"x":0.7714436,"y":0.044036802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":103.31247,"y":54.196438,"z":0.0},"screenPosition":{"x":0.90234303,"y":0.08606165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.3381,"y":53.048443,"z":-1.4210855E-14},"screenPosition":{"x":0.79871035,"y":0.070117265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.85866,"y":59.58974,"z":0.0},"screenPosition":{"x":0.6012221,"y":0.16096862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.902435,"y":61.18602,"z":0.0},"screenPosition":{"x":0.5604674,"y":0.18313916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.87386,"y":56.001675,"z":-1.4210855E-14},"screenPosition":{"x":0.43487212,"y":0.11113434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.2422,"y":58.52788,"z":0.0},"screenPosition":{"x":0.6508792,"y":0.1462206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.749405,"y":60.546234,"z":0.0},"screenPosition":{"x":0.5989459,"y":0.17425326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.226585,"y":61.82551,"z":0.0},"screenPosition":{"x":0.5672205,"y":0.19202095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.7581,"y":67.840935,"z":0.0},"screenPosition":{"x":0.57829374,"y":0.2755685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.907104,"y":65.57601,"z":0.0},"screenPosition":{"x":0.5397314,"y":0.24411133},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":88.62366,"y":77.90526,"z":0.0},"screenPosition":{"x":0.5963261,"y":0.41535085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.31085,"y":74.707825,"z":0.0},"screenPosition":{"x":0.5481427,"y":0.37094206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.6445,"y":73.829994,"z":0.0},"screenPosition":{"x":0.5550937,"y":0.35874987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.39993,"y":79.79009,"z":0.0},"screenPosition":{"x":0.5916653,"y":0.44152907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.51284,"y":78.01589,"z":0.0},"screenPosition":{"x":0.59401745,"y":0.41688734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.62123,"y":80.34607,"z":0.0},"screenPosition":{"x":0.5962757,"y":0.44925097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.397995,"y":82.24168,"z":0.0},"screenPosition":{"x":0.6124583,"y":0.4755788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.73227,"y":84.48193,"z":0.0},"screenPosition":{"x":0.6194224,"y":0.50669354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.29164,"y":86.50799,"z":-1.4210855E-14},"screenPosition":{"x":0.6310759,"y":0.5348332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.061104,"y":88.65521,"z":0.0},"screenPosition":{"x":0.6054397,"y":0.5646557},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.04941,"y":90.81263,"z":0.0},"screenPosition":{"x":0.58436275,"y":0.59461987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.81996,"y":93.4388,"z":0.0},"screenPosition":{"x":0.57958245,"y":0.63109434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.6886,"y":95.158615,"z":0.0},"screenPosition":{"x":0.55601245,"y":0.65498084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.08539,"y":96.65237,"z":0.0},"screenPosition":{"x":0.5017789,"y":0.6757273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.07233,"y":98.848564,"z":0.0},"screenPosition":{"x":0.5015068,"y":0.70623004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.33423,"y":101.16802,"z":-1.4210855E-14},"screenPosition":{"x":0.444463,"y":0.7384448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.97965,"y":102.68377,"z":0.0},"screenPosition":{"x":0.43707612,"y":0.7594968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.67196,"y":104.44214,"z":0.0},"screenPosition":{"x":0.47233242,"y":0.7839186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.74361,"y":110.22532,"z":-1.4210855E-14},"screenPosition":{"x":0.4738251,"y":0.8642405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.77683,"y":109.98972,"z":1.4210855E-14},"screenPosition":{"x":0.49535072,"y":0.8609684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.766525,"y":111.654625,"z":0.0},"screenPosition":{"x":0.49513587,"y":0.884092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.37591,"y":113.32279,"z":0.0},"screenPosition":{"x":0.46616483,"y":0.907261},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.513535,"y":113.1917,"z":-1.4210855E-14},"screenPosition":{"x":0.34403196,"y":0.90544033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.73546,"y":116.55224,"z":-1.4210855E-14},"screenPosition":{"x":0.36948878,"y":0.95211446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.73025,"y":114.14908,"z":-1.4210855E-14},"screenPosition":{"x":0.34854686,"y":0.9187372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.68412,"y":114.86594,"z":0.0},"screenPosition":{"x":0.32675254,"y":0.9286936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.20825,"y":111.63461,"z":0.0},"screenPosition":{"x":0.27517185,"y":0.8838141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.64406,"y":109.85632,"z":-1.4210855E-14},"screenPosition":{"x":0.32591784,"y":0.8591156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.828964,"y":111.76439,"z":-1.4210855E-14},"screenPosition":{"x":0.39227006,"y":0.88561654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.43254,"y":112.12502,"z":0.0},"screenPosition":{"x":0.42567796,"y":0.8906253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.07513,"y":112.01085,"z":0.0},"screenPosition":{"x":0.48073187,"y":0.8890396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.02619,"y":112.37242,"z":0.0},"screenPosition":{"x":0.52137893,"y":0.89406145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.126785,"y":114.29188,"z":0.0},"screenPosition":{"x":0.5859747,"y":0.92072046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.23534,"y":113.101135,"z":0.0},"screenPosition":{"x":0.65073615,"y":0.9041825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.14383,"y":108.818855,"z":0.0},"screenPosition":{"x":0.669663,"y":0.84470636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.594185,"y":107.629814,"z":0.0},"screenPosition":{"x":0.59571224,"y":0.8281918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.0703,"y":109.7565,"z":0.0},"screenPosition":{"x":0.5431312,"y":0.8577292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.70413,"y":112.7377,"z":0.0},"screenPosition":{"x":0.59800273,"y":0.89913476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.560135,"y":113.566315,"z":0.0},"screenPosition":{"x":0.51166946,"y":0.9106432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.0071,"y":114.2977,"z":1.4210855E-14},"screenPosition":{"x":0.64598125,"y":0.92080134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.46997,"y":116.45471,"z":0.0},"screenPosition":{"x":0.59312433,"y":0.95075995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.050766,"y":116.70323,"z":0.0},"screenPosition":{"x":0.66772425,"y":0.95421153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.741394,"y":115.62785,"z":-1.4210855E-14},"screenPosition":{"x":0.74461234,"y":0.9392757},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.34358,"y":113.95097,"z":-1.4210855E-14},"screenPosition":{"x":0.77799135,"y":0.9159857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.07361,"y":112.26859,"z":0.0},"screenPosition":{"x":0.68903357,"y":0.8926193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.94183,"y":107.75537,"z":-1.4210855E-14},"screenPosition":{"x":0.6862881,"y":0.8299357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.88831,"y":111.90653,"z":0.0},"screenPosition":{"x":0.6435066,"y":0.8875907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.96938,"y":112.859634,"z":0.0},"screenPosition":{"x":0.6243621,"y":0.90082824},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.428955,"y":112.263504,"z":1.4210855E-14},"screenPosition":{"x":0.6339366,"y":0.8925487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.28077,"y":116.342415,"z":0.0},"screenPosition":{"x":0.672516,"y":0.94920015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.85356,"y":115.14744,"z":0.0},"screenPosition":{"x":0.7469492,"y":0.9326033},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.260956,"y":111.300156,"z":0.0},"screenPosition":{"x":0.52627,"y":0.8791688},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.40708,"y":109.53239,"z":0.0},"screenPosition":{"x":0.69598085,"y":0.85461646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.913475,"y":108.34489,"z":0.0},"screenPosition":{"x":0.664864,"y":0.83812344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.09461,"y":112.7151,"z":0.0},"screenPosition":{"x":0.35613772,"y":0.8988209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.949066,"y":113.30417,"z":0.0},"screenPosition":{"x":0.26977214,"y":0.9070024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.2524,"y":110.92265,"z":0.0},"screenPosition":{"x":0.29692513,"y":0.87392575},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.44734,"y":109.73915,"z":0.0},"screenPosition":{"x":0.34265298,"y":0.8574883},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.74185,"y":109.38757,"z":0.0},"screenPosition":{"x":0.39045525,"y":0.85260516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.46162,"y":109.153625,"z":0.0},"screenPosition":{"x":0.42628375,"y":0.84935594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.67942,"y":107.26729,"z":0.0},"screenPosition":{"x":0.49332124,"y":0.8231568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.55407,"y":96.65408,"z":0.0},"screenPosition":{"x":0.53237635,"y":0.67575115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.433075,"y":104.096176,"z":0.0},"screenPosition":{"x":0.5506891,"y":0.77911353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.00601,"y":96.65461,"z":0.0},"screenPosition":{"x":0.54179186,"y":0.6757585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.80175,"y":95.04381,"z":0.0},"screenPosition":{"x":0.55836976,"y":0.65338624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.58722,"y":91.609,"z":0.0},"screenPosition":{"x":0.5539005,"y":0.60568064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.99886,"y":94.697235,"z":0.0},"screenPosition":{"x":0.5208096,"y":0.64857274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.70453,"y":90.01516,"z":0.0},"screenPosition":{"x":0.5563444,"y":0.5835439},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.361664,"y":89.33266,"z":-1.4210855E-14},"screenPosition":{"x":0.528368,"y":0.5740647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.942245,"y":87.8618,"z":0.0},"screenPosition":{"x":0.5821301,"y":0.5536361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.52215,"y":84.93298,"z":-1.4210855E-14},"screenPosition":{"x":0.6775448,"y":0.51295805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.07275,"y":85.71963,"z":0.0},"screenPosition":{"x":0.6473488,"y":0.52388364},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.52314,"y":84.14735,"z":0.0},"screenPosition":{"x":0.69839877,"y":0.5020465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.71633,"y":79.01564,"z":-1.4210855E-14},"screenPosition":{"x":0.7649235,"y":0.43077275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.85733,"y":82.69249,"z":0.0},"screenPosition":{"x":0.76786107,"y":0.48184007},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.49277,"y":78.7937,"z":0.0},"screenPosition":{"x":0.76026595,"y":0.4276903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.22688,"y":73.94039,"z":0.0},"screenPosition":{"x":0.7755601,"y":0.36028326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.34394,"y":74.70904,"z":0.0},"screenPosition":{"x":0.77799886,"y":0.3709588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.64899,"y":71.86079,"z":0.0},"screenPosition":{"x":0.7843539,"y":0.33139977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.42585,"y":70.22595,"z":0.0},"screenPosition":{"x":0.7588719,"y":0.30869374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.10611,"y":71.53338,"z":0.0},"screenPosition":{"x":0.7522106,"y":0.32685244},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.41529,"y":70.33465,"z":0.0},"screenPosition":{"x":0.77948517,"y":0.3102035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.033195,"y":70.008934,"z":0.0},"screenPosition":{"x":0.6673582,"y":0.30567968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.7126,"y":73.501495,"z":-1.4210855E-14},"screenPosition":{"x":0.6606793,"y":0.35418743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.53032,"y":61.395596,"z":-1.4210855E-14},"screenPosition":{"x":0.69854826,"y":0.18604995},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.224556,"y":66.219864,"z":0.0},"screenPosition":{"x":0.69217825,"y":0.25305367},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.695175,"y":66.64971,"z":0.0},"screenPosition":{"x":0.80614954,"y":0.2590238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.11657,"y":63.42402,"z":0.0},"screenPosition":{"x":0.7940953,"y":0.21422249},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.77025,"y":61.60928,"z":0.0},"screenPosition":{"x":0.68271345,"y":0.18901779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.611404,"y":73.93992,"z":-1.4210855E-14},"screenPosition":{"x":0.63773763,"y":0.36027664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.77287,"y":71.53383,"z":0.0},"screenPosition":{"x":0.53693485,"y":0.32685876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.04501,"y":58.319664,"z":0.0},"screenPosition":{"x":0.54260445,"y":0.14332865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.163704,"y":64.60483,"z":0.0},"screenPosition":{"x":0.7534104,"y":0.23062265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.50143,"y":74.15931,"z":-1.4210855E-14},"screenPosition":{"x":0.6354464,"y":0.36332375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.342964,"y":70.87933,"z":0.0},"screenPosition":{"x":0.7154784,"y":0.31776848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.407524,"y":69.46493,"z":-1.4210855E-14},"screenPosition":{"x":0.77932346,"y":0.298124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.05857,"y":65.14226,"z":0.0},"screenPosition":{"x":0.7512203,"y":0.23808695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.230644,"y":62.891384,"z":0.0},"screenPosition":{"x":0.6714718,"y":0.2068248},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.8913,"y":64.93056,"z":-1.4210855E-14},"screenPosition":{"x":0.56023544,"y":0.23514658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.97453,"y":69.24922,"z":0.0},"screenPosition":{"x":0.5828028,"y":0.29512805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.47221,"y":72.735176,"z":0.0},"screenPosition":{"x":0.69733787,"y":0.34354413},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.57681,"y":71.533485,"z":-1.4210855E-14},"screenPosition":{"x":0.6995169,"y":0.326854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.67301,"y":72.51646,"z":-1.4210855E-14},"screenPosition":{"x":0.7431877,"y":0.34050632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.68319,"y":75.58915,"z":0.0},"screenPosition":{"x":0.78506655,"y":0.38318262},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":92.38043,"y":75.58834,"z":1.4210855E-14},"screenPosition":{"x":0.6745923,"y":0.38317144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.92582,"y":70.87952,"z":0.0},"screenPosition":{"x":0.6651212,"y":0.31777102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.015144,"y":72.954056,"z":-1.4210855E-14},"screenPosition":{"x":0.7294822,"y":0.34658408},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":98.435776,"y":73.50184,"z":0.0},"screenPosition":{"x":0.80074537,"y":0.35419217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.91886,"y":76.691536,"z":0.0},"screenPosition":{"x":0.7691429,"y":0.3984936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":99.719124,"y":79.68295,"z":0.0},"screenPosition":{"x":0.8274817,"y":0.440041},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":93.5042,"y":79.90305,"z":0.0},"screenPosition":{"x":0.6980042,"y":0.44309798},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.81953,"y":76.24964,"z":0.0},"screenPosition":{"x":0.7045734,"y":0.3923561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.76038,"y":89.11172,"z":0.0},"screenPosition":{"x":0.68250793,"y":0.57099605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.397415,"y":86.95876,"z":0.0},"screenPosition":{"x":0.61244607,"y":0.54109395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.18034,"y":82.13174,"z":-1.4210855E-14},"screenPosition":{"x":0.6912572,"y":0.47405183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.98323,"y":85.83477,"z":-1.4210855E-14},"screenPosition":{"x":0.72881734,"y":0.5254829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.19673,"y":88.09131,"z":0.0},"screenPosition":{"x":0.6707653,"y":0.5568238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.77102,"y":92.07131,"z":0.0},"screenPosition":{"x":0.6827296,"y":0.61210155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.159325,"y":92.4096,"z":1.4210855E-14},"screenPosition":{"x":0.5866526,"y":0.6168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.498856,"y":85.94255,"z":0.0},"screenPosition":{"x":0.57289284,"y":0.52697986},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":92.992065,"y":91.044846,"z":-1.4210855E-14},"screenPosition":{"x":0.68733466,"y":0.59784514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.8629,"y":94.81841,"z":0.0},"screenPosition":{"x":0.6429771,"y":0.65025574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.71738,"y":97.465866,"z":0.0},"screenPosition":{"x":0.59827876,"y":0.6870259},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.84871,"y":97.69839,"z":0.0},"screenPosition":{"x":0.62184805,"y":0.6902554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.26176,"y":99.78198,"z":0.0},"screenPosition":{"x":0.58878666,"y":0.71919423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.218254,"y":100.47652,"z":0.0},"screenPosition":{"x":0.5462136,"y":0.7288405},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.29148,"y":101.16519,"z":0.0},"screenPosition":{"x":0.40190586,"y":0.7384054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.776436,"y":102.568115,"z":0.0},"screenPosition":{"x":0.45367572,"y":0.7578905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.390816,"y":102.447876,"z":0.0},"screenPosition":{"x":0.40397537,"y":0.75622046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.580414,"y":101.86188,"z":0.0},"screenPosition":{"x":0.3662586,"y":0.7480816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.174805,"y":105.59965,"z":0.0},"screenPosition":{"x":0.25364175,"y":0.7999951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.033875,"y":101.03874,"z":0.0},"screenPosition":{"x":0.25070578,"y":0.73664916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.96345,"y":102.434204,"z":0.0},"screenPosition":{"x":0.2075719,"y":0.75603056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":67.40143,"y":105.12225,"z":0.0},"screenPosition":{"x":0.1541964,"y":0.7933646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.69174,"y":107.01129,"z":0.0},"screenPosition":{"x":0.24357803,"y":0.8196013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.75589,"y":111.27668,"z":0.0},"screenPosition":{"x":0.2657478,"y":0.8788428},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.21152,"y":110.213394,"z":-1.4210855E-14},"screenPosition":{"x":0.3377399,"y":0.8640749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.84841,"y":107.61154,"z":-1.4210855E-14},"screenPosition":{"x":0.37184194,"y":0.82793814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":78.01121,"y":103.731926,"z":0.0},"screenPosition":{"x":0.37523347,"y":0.7740545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.474434,"y":101.73806,"z":0.0},"screenPosition":{"x":0.259884,"y":0.746362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.881096,"y":106.301575,"z":0.0},"screenPosition":{"x":0.20585611,"y":0.8097441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":71.87491,"y":109.375305,"z":0.0},"screenPosition":{"x":0.24739395,"y":0.8524348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.77977,"y":111.75479,"z":0.0},"screenPosition":{"x":0.28707856,"y":0.88548326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":77.71757,"y":108.911896,"z":-1.4210855E-14},"screenPosition":{"x":0.36911595,"y":0.8459985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.24928,"y":107.49756,"z":-1.4210855E-14},"screenPosition":{"x":0.42186,"y":0.826355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.082565,"y":110.93908,"z":0.0},"screenPosition":{"x":0.4808868,"y":0.8741539},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.56362,"y":107.503174,"z":-1.4210855E-14},"screenPosition":{"x":0.49090877,"y":0.826433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.920845,"y":105.14835,"z":-1.4210855E-14},"screenPosition":{"x":0.49835092,"y":0.79372716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.88914,"y":102.6851,"z":-1.4210855E-14},"screenPosition":{"x":0.45602375,"y":0.7595153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.5139,"y":100.939575,"z":0.0},"screenPosition":{"x":0.5107062,"y":0.7352719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.50082,"y":99.659615,"z":0.0},"screenPosition":{"x":0.48960033,"y":0.7174946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.332855,"y":95.61713,"z":0.0},"screenPosition":{"x":0.5277678,"y":0.661349},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.71868,"y":95.96628,"z":0.0},"screenPosition":{"x":0.5983058,"y":0.6661983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.323326,"y":99.43773,"z":0.0},"screenPosition":{"x":0.65256923,"y":0.71441287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.48801,"y":97.47284,"z":0.0},"screenPosition":{"x":0.7185001,"y":0.6871228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.39772,"y":101.76911,"z":0.0},"screenPosition":{"x":0.7166192,"y":0.7467932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.77796,"y":103.04295,"z":0.0},"screenPosition":{"x":0.5578742,"y":0.76448554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.85196,"y":106.452095,"z":0.0},"screenPosition":{"x":0.6219159,"y":0.81183463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.198074,"y":106.09278,"z":0.0},"screenPosition":{"x":0.54579324,"y":0.80684423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.23756,"y":105.02982,"z":-1.4210855E-14},"screenPosition":{"x":0.4841158,"y":0.7920809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.094406,"y":102.56712,"z":0.0},"screenPosition":{"x":0.43946677,"y":0.75787675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.95246,"y":97.112495,"z":1.4210855E-14},"screenPosition":{"x":0.47817627,"y":0.682118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.87911,"y":96.07707,"z":0.0},"screenPosition":{"x":0.5183149,"y":0.6677371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.91422,"y":95.15887,"z":1.4210855E-14},"screenPosition":{"x":0.56071293,"y":0.65498424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.39627,"y":96.19744,"z":0.0},"screenPosition":{"x":0.6124222,"y":0.6694089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.67486,"y":96.77779,"z":0.0},"screenPosition":{"x":0.6807263,"y":0.67746925},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.37863,"y":95.16815,"z":1.4210855E-14},"screenPosition":{"x":0.73705477,"y":0.6551133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.0598,"y":79.79175,"z":0.0},"screenPosition":{"x":0.6887458,"y":0.441552},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.44179,"y":88.99962,"z":0.0},"screenPosition":{"x":0.7175373,"y":0.5694391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.64757,"y":86.96175,"z":0.0},"screenPosition":{"x":0.700991,"y":0.5411353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":90.83349,"y":75.03804,"z":0.0},"screenPosition":{"x":0.64236426,"y":0.3755283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.07386,"y":62.040524,"z":0.0},"screenPosition":{"x":0.5015387,"y":0.19500726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.908714,"y":64.606445,"z":0.0},"screenPosition":{"x":0.6647649,"y":0.23064503},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.727104,"y":63.64191,"z":-1.4210855E-14},"screenPosition":{"x":0.61931473,"y":0.21724877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.47071,"y":61.93767,"z":-1.4210855E-14},"screenPosition":{"x":0.3431398,"y":0.1935788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.18189,"y":62.147205,"z":0.0},"screenPosition":{"x":0.50378937,"y":0.19648898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":82.55162,"y":62.148018,"z":-1.4210855E-14},"screenPosition":{"x":0.4698254,"y":0.19650024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":80.490265,"y":61.828964,"z":1.4210855E-14},"screenPosition":{"x":0.42688057,"y":0.19206895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.78676,"y":55.902912,"z":-1.4210855E-14},"screenPosition":{"x":0.2663908,"y":0.109762646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.8474,"y":61.618664,"z":0.0},"screenPosition":{"x":0.30932075,"y":0.18914808},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":73.12898,"y":60.661533,"z":-1.4210855E-14},"screenPosition":{"x":0.27352053,"y":0.17585462},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":69.37747,"y":58.86009,"z":0.0},"screenPosition":{"x":0.19536398,"y":0.15083458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.6749,"y":56.113403,"z":-1.4210855E-14},"screenPosition":{"x":0.26406032,"y":0.11268615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":75.06475,"y":55.060394,"z":0.0},"screenPosition":{"x":0.313849,"y":0.098061055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.05744,"y":54.53233,"z":-1.4210855E-14},"screenPosition":{"x":0.3970301,"y":0.09072681},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":81.29455,"y":57.160576,"z":-1.4210855E-14},"screenPosition":{"x":0.44363636,"y":0.12723024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.61066,"y":59.80958,"z":0.0},"screenPosition":{"x":0.3460554,"y":0.16402195},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.40049,"y":62.149586,"z":0.0},"screenPosition":{"x":0.40417683,"y":0.19652203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.145226,"y":54.849556,"z":-1.4210855E-14},"screenPosition":{"x":0.33635888,"y":0.09513274},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":72.81799,"y":59.918034,"z":0.0},"screenPosition":{"x":0.26704153,"y":0.16552825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.32885,"y":56.953297,"z":0.0},"screenPosition":{"x":0.3401844,"y":0.12435133},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":74.310745,"y":55.06103,"z":0.0},"screenPosition":{"x":0.2981405,"y":0.098069854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":76.25293,"y":54.849464,"z":0.0},"screenPosition":{"x":0.33860275,"y":0.09513147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":83.03359,"y":55.789497,"z":0.0},"screenPosition":{"x":0.47986653,"y":0.10818749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":79.49186,"y":54.217426,"z":0.0},"screenPosition":{"x":0.40608042,"y":0.08635312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.11845,"y":54.842777,"z":0.0},"screenPosition":{"x":0.50246763,"y":0.09503855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.2464,"y":54.210594,"z":0.0},"screenPosition":{"x":0.56763333,"y":0.08625823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":88.96431,"y":64.07101,"z":0.0},"screenPosition":{"x":0.6034231,"y":0.22320841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":84.408585,"y":60.54873,"z":0.0},"screenPosition":{"x":0.5085122,"y":0.17428792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":86.78323,"y":64.60838,"z":0.0},"screenPosition":{"x":0.557984,"y":0.23067197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.919464,"y":63.63885,"z":0.0},"screenPosition":{"x":0.76915544,"y":0.21720627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.80271,"y":65.78937,"z":0.0},"screenPosition":{"x":0.6625565,"y":0.2470745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.14001,"y":61.8235,"z":0.0},"screenPosition":{"x":0.6487502,"y":0.19199306},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.728615,"y":61.82166,"z":0.0},"screenPosition":{"x":0.7235128,"y":0.19196749},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":97.13935,"y":63.853176,"z":-1.4210855E-14},"screenPosition":{"x":0.7737364,"y":0.220183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.97434,"y":69.357735,"z":0.0},"screenPosition":{"x":0.58279884,"y":0.29663527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.43181,"y":70.98814,"z":0.0},"screenPosition":{"x":0.75899595,"y":0.3192797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":95.12945,"y":73.611275,"z":-1.4210855E-14},"screenPosition":{"x":0.73186344,"y":0.35571212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.26951,"y":72.297844,"z":0.0},"screenPosition":{"x":0.6514481,"y":0.33747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.97434,"y":69.357735,"z":0.0},"screenPosition":{"x":0.58279884,"y":0.29663527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.83708,"y":66.436485,"z":0.0},"screenPosition":{"x":0.62160593,"y":0.2560623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.67095,"y":57.261436,"z":1.4210855E-14},"screenPosition":{"x":0.5764781,"y":0.12863109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":93.639015,"y":61.39554,"z":-1.4210855E-14},"screenPosition":{"x":0.7008129,"y":0.18604915},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":92.11606,"y":60.97012,"z":0.0},"screenPosition":{"x":0.66908455,"y":0.18014053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.400925,"y":58.635033,"z":0.0},"screenPosition":{"x":0.6125192,"y":0.1477088},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.67095,"y":57.261436,"z":1.4210855E-14},"screenPosition":{"x":0.5764781,"y":0.12863109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.98891,"y":51.381104,"z":0.0},"screenPosition":{"x":0.72893566,"y":0.046959776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":87.35751,"y":52.849644,"z":0.0},"screenPosition":{"x":0.56994826,"y":0.06735617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.725006,"y":55.15315,"z":0.0},"screenPosition":{"x":0.6192709,"y":0.09934926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":89.819725,"y":48.0,"z":1.0},"screenPosition":{"x":0.6212442,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.66526,"y":51.173077,"z":0.0},"screenPosition":{"x":0.7221928,"y":0.044070534},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.876274,"y":50.548393,"z":0.0},"screenPosition":{"x":0.7265891,"y":0.03539433},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":94.869835,"y":49.509613,"z":-1.4210855E-14},"screenPosition":{"x":0.726455,"y":0.02096684},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":93.370445,"y":49.92646,"z":0.0},"screenPosition":{"x":0.69521755,"y":0.02675637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":85.308235,"y":54.00268,"z":-1.4210855E-14},"screenPosition":{"x":0.5272549,"y":0.08337058},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20191016-053704/brain-C78434-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.9999877616910288,-5.421010862427522E-20,0.004947369823075047,0.0,-5.668896870925082E-4,0.9934135567568589,0.1145826509021753,0.0,-0.004914784252532535,-0.11458405321722175,0.9934013990548151,0.0,89.00258576631305,72.44517682090039,102.40669745688002,1.0]},"baseImage":"20191016-053704/base.webp","version":0,"savedAt":1.57120447374E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/Decom2019/round1/20191016-061503-v0.json b/data/mapping/Decom2019/round1/20191016-061503-v0.json new file mode 100644 index 0000000000..1f0be778fc --- /dev/null +++ b/data/mapping/Decom2019/round1/20191016-061503-v0.json @@ -0,0 +1 @@ +{"startedAt":1.57120650348E12,"surfaces":[{"brainId":"CBDD64","panelName":"Panel 4","pixels":[{"modelPosition":{"x":-32.421436,"y":92.61357,"z":1.4210855E-14},"screenPosition":{"x":0.5745534,"y":0.42944947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.95035,"y":74.097664,"z":0.0},"screenPosition":{"x":0.48020098,"y":0.04370129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.427242,"y":75.322044,"z":-1.4210855E-14},"screenPosition":{"x":0.6160991,"y":0.069209196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.92823,"y":75.322044,"z":0.0},"screenPosition":{"x":0.70982856,"y":0.069209196},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-27.050583,"y":75.87904,"z":-1.4210855E-14},"screenPosition":{"x":0.6864462,"y":0.08081347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.06632,"y":78.66848,"z":-1.4210855E-14},"screenPosition":{"x":0.6444517,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.040705,"y":75.322044,"z":-1.4210855E-14},"screenPosition":{"x":0.7074853,"y":0.069209196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.398186,"y":76.547844,"z":0.0},"screenPosition":{"x":0.65837115,"y":0.09474668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.75644,"y":73.98643,"z":0.0},"screenPosition":{"x":0.63007414,"y":0.041383855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.871567,"y":77.55183,"z":0.0},"screenPosition":{"x":0.60684234,"y":0.11566302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.09622,"y":77.77506,"z":0.0},"screenPosition":{"x":0.60216206,"y":0.12031379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.84989,"y":76.10193,"z":-1.4210855E-14},"screenPosition":{"x":0.64896065,"y":0.08545689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.200405,"y":75.990486,"z":0.0},"screenPosition":{"x":0.6208249,"y":0.08313506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.22082,"y":78.55676,"z":0.0},"screenPosition":{"x":0.57873285,"y":0.13659923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.09622,"y":77.77506,"z":0.0},"screenPosition":{"x":0.60216206,"y":0.12031379},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.276577,"y":86.96851,"z":-1.4210855E-14},"screenPosition":{"x":0.494238,"y":0.31184396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.0504,"y":86.74333,"z":0.0},"screenPosition":{"x":0.49895003,"y":0.30715272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.220615,"y":78.66848,"z":-1.4210855E-14},"screenPosition":{"x":0.5787372,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.165955,"y":88.207855,"z":1.4210855E-14},"screenPosition":{"x":0.62154263,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.57327,"y":85.730606,"z":1.4210855E-14},"screenPosition":{"x":0.67555684,"y":0.2860543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.983175,"y":84.83122,"z":0.0},"screenPosition":{"x":0.58368385,"y":0.2673171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.544827,"y":86.74333,"z":0.0},"screenPosition":{"x":0.5719828,"y":0.30715272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.180225,"y":83.14692,"z":0.0},"screenPosition":{"x":0.6212453,"y":0.23222746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.200188,"y":81.46529,"z":1.4210855E-14},"screenPosition":{"x":0.5999961,"y":0.19719346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.313501,"y":81.24127,"z":0.0},"screenPosition":{"x":0.5976354,"y":0.19252644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.176394,"y":79.45084,"z":0.0},"screenPosition":{"x":0.64215845,"y":0.15522589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.9817,"y":78.55676,"z":0.0},"screenPosition":{"x":0.6045479,"y":0.13659923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.068527,"y":87.64434,"z":-1.4210855E-14},"screenPosition":{"x":0.47773898,"y":0.32592374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.808353,"y":83.82032,"z":1.4210855E-14},"screenPosition":{"x":0.524826,"y":0.24625662},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.93771,"y":83.03473,"z":0.0},"screenPosition":{"x":0.5012977,"y":0.22989012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.53571,"y":84.49415,"z":1.4210855E-14},"screenPosition":{"x":0.4471727,"y":0.2602947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.358276,"y":87.419014,"z":0.0},"screenPosition":{"x":0.6592026,"y":0.3212295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.579227,"y":88.207855,"z":0.0},"screenPosition":{"x":0.52959937,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.86314,"y":88.320595,"z":0.0},"screenPosition":{"x":0.58618456,"y":0.34001243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.212708,"y":86.63076,"z":0.0},"screenPosition":{"x":0.70390195,"y":0.30480745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.130762,"y":87.75702,"z":0.0},"screenPosition":{"x":0.66394246,"y":0.32827124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.308666,"y":86.518196,"z":1.4210855E-14},"screenPosition":{"x":0.7227361,"y":0.30246243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.958279,"y":85.39325,"z":1.4210855E-14},"screenPosition":{"x":0.7508692,"y":0.279026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.92634,"y":85.05599,"z":-1.4210855E-14},"screenPosition":{"x":0.79320127,"y":0.2719999},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.035902,"y":76.32486,"z":1.4210855E-14},"screenPosition":{"x":0.70758533,"y":0.090101294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.345407,"y":79.22725,"z":-1.4210855E-14},"screenPosition":{"x":0.8886373,"y":0.15056776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.173811,"y":80.23378,"z":-1.4210855E-14},"screenPosition":{"x":0.6422123,"y":0.17153713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.376842,"y":82.361824,"z":0.0},"screenPosition":{"x":0.6588158,"y":0.21587135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.148432,"y":76.32486,"z":0.0},"screenPosition":{"x":0.705241,"y":0.090101294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.39204,"y":78.22168,"z":0.0},"screenPosition":{"x":0.6584991,"y":0.12961829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.173811,"y":80.23378,"z":-1.4210855E-14},"screenPosition":{"x":0.6422123,"y":0.17153713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.260578,"y":79.45084,"z":-1.4210855E-14},"screenPosition":{"x":0.68207127,"y":0.15522589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.467619,"y":80.34568,"z":0.0},"screenPosition":{"x":0.69859123,"y":0.1738683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.148432,"y":76.32486,"z":0.0},"screenPosition":{"x":0.705241,"y":0.090101294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.466667,"y":75.21068,"z":0.0},"screenPosition":{"x":0.74027777,"y":0.06688907},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-26.71506,"y":75.43342,"z":0.0},"screenPosition":{"x":0.69343626,"y":0.07152956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.859898,"y":73.20809,"z":0.0},"screenPosition":{"x":0.64875215,"y":0.025168639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.42845,"y":74.87665,"z":-1.4210855E-14},"screenPosition":{"x":0.61607397,"y":0.05993017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.840748,"y":75.21068,"z":1.4210855E-14},"screenPosition":{"x":0.6699844,"y":0.06688907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.39163,"y":78.33336,"z":0.0},"screenPosition":{"x":0.6585077,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.505165,"y":74.76533,"z":1.4210855E-14},"screenPosition":{"x":0.6769757,"y":0.057611026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.375515,"y":73.43042,"z":0.0},"screenPosition":{"x":0.72134346,"y":0.029800339},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.859898,"y":73.20809,"z":0.0},"screenPosition":{"x":0.64875215,"y":0.025168639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.39163,"y":78.33336,"z":0.0},"screenPosition":{"x":0.6585077,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-15.674627,"y":77.21706,"z":-1.4210855E-14},"screenPosition":{"x":0.9234453,"y":0.1086887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.891396,"y":75.322044,"z":0.0},"screenPosition":{"x":0.7730959,"y":0.069209196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.362375,"y":78.89195,"z":0.0},"screenPosition":{"x":0.86745054,"y":0.14358239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.67858,"y":79.786316,"z":-1.4210855E-14},"screenPosition":{"x":0.8816963,"y":0.16221495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.988952,"y":79.674484,"z":-1.4210855E-14},"screenPosition":{"x":0.9168968,"y":0.15988502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-14.611439,"y":82.13762,"z":0.0},"screenPosition":{"x":0.945595,"y":0.21120039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-13.797932,"y":84.38181,"z":0.0},"screenPosition":{"x":0.9625431,"y":0.2579544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.078331,"y":82.13762,"z":0.0},"screenPosition":{"x":0.9150348,"y":0.21120039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-14.661774,"y":88.320595,"z":0.0},"screenPosition":{"x":0.9445464,"y":0.34001243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-14.272925,"y":82.13762,"z":1.4210855E-14},"screenPosition":{"x":0.9526474,"y":0.21120039},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.11914,"y":91.934586,"z":0.0},"screenPosition":{"x":0.8933512,"y":0.41530383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.92007,"y":93.51957,"z":0.0},"screenPosition":{"x":0.85583186,"y":0.44832432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.231495,"y":92.04772,"z":0.0},"screenPosition":{"x":0.8910105,"y":0.4176608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.003746,"y":90.01312,"z":0.0},"screenPosition":{"x":0.9165886,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.537964,"y":95.901474,"z":0.0},"screenPosition":{"x":0.88462573,"y":0.4979473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.456076,"y":102.39354,"z":0.0},"screenPosition":{"x":0.90716505,"y":0.6331988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.640051,"y":104.337425,"z":0.0},"screenPosition":{"x":0.9241656,"y":0.6736964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.425768,"y":98.40251,"z":0.0},"screenPosition":{"x":0.8661298,"y":0.55005234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.934572,"y":109.385086,"z":-1.4210855E-14},"screenPosition":{"x":0.9180297,"y":0.7788559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.456076,"y":102.39354,"z":0.0},"screenPosition":{"x":0.90716505,"y":0.6331988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.640051,"y":104.337425,"z":0.0},"screenPosition":{"x":0.9241656,"y":0.6736964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.275682,"y":106.628876,"z":0.0},"screenPosition":{"x":0.9317566,"y":0.72143483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.934572,"y":109.385086,"z":-1.4210855E-14},"screenPosition":{"x":0.9180297,"y":0.7788559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.458378,"y":108.2358,"z":1.4210855E-14},"screenPosition":{"x":0.86545044,"y":0.75491256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.764702,"y":106.05555,"z":-1.4210855E-14},"screenPosition":{"x":0.9007354,"y":0.70949066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.971324,"y":105.48254,"z":0.0},"screenPosition":{"x":0.9172641,"y":0.69755286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.065448,"y":104.79533,"z":0.0},"screenPosition":{"x":0.9361365,"y":0.6832359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.492275,"y":101.13761,"z":-1.4210855E-14},"screenPosition":{"x":0.88557756,"y":0.6070336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.457129,"y":102.279305,"z":0.0},"screenPosition":{"x":0.9071432,"y":0.63081884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.973481,"y":105.25342,"z":0.0},"screenPosition":{"x":0.91721916,"y":0.69277954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.970955,"y":98.40251,"z":0.0},"screenPosition":{"x":0.8756051,"y":0.55005234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.830843,"y":108.006096,"z":1.4210855E-14},"screenPosition":{"x":0.83685744,"y":0.75012696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.106838,"y":103.193535,"z":1.4210855E-14},"screenPosition":{"x":0.9144409,"y":0.6498654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.19996,"y":104.45188,"z":0.0},"screenPosition":{"x":0.8291675,"y":0.6760809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.495792,"y":102.05087,"z":0.0},"screenPosition":{"x":0.7813376,"y":0.6260598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.635328,"y":107.31726,"z":-1.4210855E-14},"screenPosition":{"x":0.8200973,"y":0.7357763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.498247,"y":100.45318,"z":0.0},"screenPosition":{"x":0.88545316,"y":0.5927746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.788519,"y":103.42222,"z":0.0},"screenPosition":{"x":0.90023917,"y":0.6546295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.608967,"y":102.165085,"z":1.4210855E-14},"screenPosition":{"x":0.77897984,"y":0.6284392},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-17.498247,"y":100.45318,"z":0.0},"screenPosition":{"x":0.88545316,"y":0.5927746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.778643,"y":107.08775,"z":0.0},"screenPosition":{"x":0.7962783,"y":0.73099476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.702713,"y":106.28484,"z":-1.4210855E-14},"screenPosition":{"x":0.86036015,"y":0.71426755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.644457,"y":106.05555,"z":0.0},"screenPosition":{"x":0.8199071,"y":0.70949066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.592663,"y":109.2701,"z":1.4210855E-14},"screenPosition":{"x":0.8418195,"y":0.7764604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.858175,"y":108.35068,"z":0.0},"screenPosition":{"x":0.89878803,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.77965,"y":111.34169,"z":0.0},"screenPosition":{"x":0.77542394,"y":0.8196185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.199162,"y":99.76919,"z":0.0},"screenPosition":{"x":0.6625175,"y":0.57852477},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-23.582415,"y":110.99615,"z":-1.4210855E-14},"screenPosition":{"x":0.7586997,"y":0.8124198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.028593,"y":108.35068,"z":0.0},"screenPosition":{"x":0.85357094,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.39179,"y":109.385086,"z":0.0},"screenPosition":{"x":0.82517105,"y":0.7788559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.604593,"y":111.11131,"z":0.0},"screenPosition":{"x":0.904071,"y":0.8148191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.701616,"y":109.84514,"z":-1.4210855E-14},"screenPosition":{"x":0.922883,"y":0.78844047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.275682,"y":106.628876,"z":0.0},"screenPosition":{"x":0.9317566,"y":0.72143483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.111105,"y":105.597115,"z":0.0},"screenPosition":{"x":0.8935186,"y":0.6999399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.563189,"y":109.385086,"z":0.0},"screenPosition":{"x":0.86326694,"y":0.7788559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.228966,"y":108.35068,"z":0.0},"screenPosition":{"x":0.8702299,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.275682,"y":106.628876,"z":0.0},"screenPosition":{"x":0.9317566,"y":0.72143483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.111105,"y":105.597115,"z":0.0},"screenPosition":{"x":0.8935186,"y":0.6999399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.038906,"y":87.86971,"z":0.0},"screenPosition":{"x":0.7700228,"y":0.33061898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.343199,"y":108.35068,"z":0.0},"screenPosition":{"x":0.86785007,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.230024,"y":91.48216,"z":0.0},"screenPosition":{"x":0.6618745,"y":0.40587842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.024282,"y":90.239,"z":0.0},"screenPosition":{"x":0.77032745,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.602688,"y":91.59525,"z":-1.4210855E-14},"screenPosition":{"x":0.737444,"y":0.4082344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.432892,"y":98.06112,"z":-1.4210855E-14},"screenPosition":{"x":0.6576481,"y":0.5429399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.73615,"y":96.12859,"z":-1.4210855E-14},"screenPosition":{"x":0.69299686,"y":0.5026791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.912169,"y":102.165085,"z":0.0},"screenPosition":{"x":0.7101632,"y":0.6284392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.041733,"y":98.85788,"z":0.0},"screenPosition":{"x":0.7074639,"y":0.5595391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.646786,"y":99.99714,"z":0.0},"screenPosition":{"x":0.7573586,"y":0.5832737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.189747,"y":99.42735,"z":0.0},"screenPosition":{"x":0.87104696,"y":0.5714032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.395851,"y":99.883156,"z":0.0},"screenPosition":{"x":0.7834198,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.74149,"y":99.199524,"z":0.0},"screenPosition":{"x":0.77621895,"y":0.5666568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.044165,"y":97.94734,"z":0.0},"screenPosition":{"x":0.8115799,"y":0.5405696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.190704,"y":99.31344,"z":0.0},"screenPosition":{"x":0.871027,"y":0.56902987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.582228,"y":95.901474,"z":0.0},"screenPosition":{"x":0.8420369,"y":0.4979473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.316753,"y":94.539734,"z":-1.4210855E-14},"screenPosition":{"x":0.7850676,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.126959,"y":95.560875,"z":1.4210855E-14},"screenPosition":{"x":0.74735504,"y":0.49085152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.720575,"y":99.65523,"z":0.0},"screenPosition":{"x":0.69332135,"y":0.57615066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.876328,"y":99.65523,"z":1.4210855E-14},"screenPosition":{"x":0.75257653,"y":0.57615066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.632677,"y":94.993454,"z":1.4210855E-14},"screenPosition":{"x":0.79931927,"y":0.47903025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.55249,"y":96.696625,"z":1.4210855E-14},"screenPosition":{"x":0.7593231,"y":0.51451296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.742365,"y":95.560875,"z":0.0},"screenPosition":{"x":0.7970341,"y":0.49085152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.661552,"y":93.85951,"z":0.0},"screenPosition":{"x":0.7778843,"y":0.45540655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.011145,"y":89.44865,"z":0.0},"screenPosition":{"x":0.66643447,"y":0.36351356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.11748,"y":93.51957,"z":1.4210855E-14},"screenPosition":{"x":0.7683858,"y":0.44832432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.057821,"y":91.25603,"z":-1.4210855E-14},"screenPosition":{"x":0.7279621,"y":0.4011672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.596321,"y":89.44865,"z":0.0},"screenPosition":{"x":0.63341,"y":0.36351356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.070433,"y":88.54611,"z":0.0},"screenPosition":{"x":0.60269934,"y":0.34471068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.353195,"y":87.86971,"z":0.0},"screenPosition":{"x":0.53430843,"y":0.33061898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.579815,"y":87.419014,"z":0.0},"screenPosition":{"x":0.52958715,"y":0.3212295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.014565,"y":87.081116,"z":0.0},"screenPosition":{"x":0.54136324,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.127666,"y":87.081116,"z":0.0},"screenPosition":{"x":0.539007,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.050846,"y":78.33336,"z":0.0},"screenPosition":{"x":0.4989407,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.291325,"y":81.12928,"z":0.0},"screenPosition":{"x":0.4730974,"y":0.19019333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.966316,"y":79.11547,"z":0.0},"screenPosition":{"x":0.4590351,"y":0.14823905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.10718,"y":79.11547,"z":0.0},"screenPosition":{"x":0.41443372,"y":0.14823905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.13348,"y":78.44505,"z":0.0},"screenPosition":{"x":0.3722192,"y":0.134272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.825558,"y":78.44505,"z":-1.4210855E-14},"screenPosition":{"x":0.5036342,"y":0.134272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.966316,"y":79.11547,"z":0.0},"screenPosition":{"x":0.4590351,"y":0.14823905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.10718,"y":79.11547,"z":0.0},"screenPosition":{"x":0.41443372,"y":0.14823905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.13348,"y":78.44505,"z":0.0},"screenPosition":{"x":0.3722192,"y":0.134272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.737057,"y":73.8752,"z":1.4210855E-14},"screenPosition":{"x":0.4638113,"y":0.039066665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.175972,"y":75.767624,"z":0.0},"screenPosition":{"x":0.47550058,"y":0.07849213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.82561,"y":78.11001,"z":1.4210855E-14},"screenPosition":{"x":0.50363314,"y":0.1272918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.276115,"y":78.33336,"z":0.0},"screenPosition":{"x":0.49424756,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.421635,"y":92.50038,"z":1.4210855E-14},"screenPosition":{"x":0.57454926,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.288532,"y":75.87904,"z":0.0},"screenPosition":{"x":0.47315562,"y":0.08081347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.97952,"y":78.44505,"z":0.0},"screenPosition":{"x":0.4379267,"y":0.134272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.726837,"y":79.00371,"z":-1.4210855E-14},"screenPosition":{"x":0.48485756,"y":0.14591059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.68576,"y":78.11001,"z":-1.4210855E-14},"screenPosition":{"x":0.5482133,"y":0.1272918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.34745,"y":79.45084,"z":1.4210855E-14},"screenPosition":{"x":0.38859478,"y":0.15522589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.195316,"y":82.92255,"z":1.4210855E-14},"screenPosition":{"x":0.45426425,"y":0.22755304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.726837,"y":79.00371,"z":-1.4210855E-14},"screenPosition":{"x":0.48485756,"y":0.14591059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.860085,"y":87.19374,"z":-1.4210855E-14},"screenPosition":{"x":0.46124822,"y":0.31653622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.919373,"y":87.081116,"z":0.0},"screenPosition":{"x":0.5225131,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.92029,"y":85.50569,"z":1.4210855E-14},"screenPosition":{"x":0.5224939,"y":0.28136852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.48527,"y":85.84309,"z":1.4210855E-14},"screenPosition":{"x":0.51072353,"y":0.2883976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.034718,"y":100.33915,"z":0.0},"screenPosition":{"x":0.7076101,"y":0.590399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.457697,"y":101.93667,"z":0.0},"screenPosition":{"x":0.7196313,"y":0.62368065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.762793,"y":104.10855,"z":0.0},"screenPosition":{"x":0.73410845,"y":0.66892815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.978746,"y":87.081116,"z":0.0},"screenPosition":{"x":0.5837761,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.54484,"y":107.89126,"z":1.4210855E-14},"screenPosition":{"x":0.8011492,"y":0.74773455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.308247,"y":92.50038,"z":0.0},"screenPosition":{"x":0.5769115,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.765837,"y":103.536575,"z":0.0},"screenPosition":{"x":0.7340451,"y":0.657012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.294088,"y":106.399506,"z":1.4210855E-14},"screenPosition":{"x":0.7438731,"y":0.7166564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.001673,"y":107.89126,"z":0.0},"screenPosition":{"x":0.7916318,"y":0.74773455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.685896,"y":108.35068,"z":1.4210855E-14},"screenPosition":{"x":0.8607105,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.76159,"y":106.399506,"z":0.0},"screenPosition":{"x":0.9008002,"y":0.7166564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.614809,"y":106.399506,"z":1.4210855E-14},"screenPosition":{"x":0.8413581,"y":0.7166564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.222996,"y":104.90983,"z":-1.4210855E-14},"screenPosition":{"x":0.8078543,"y":0.68562144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.683273,"y":116.538185,"z":0.0},"screenPosition":{"x":0.8190985,"y":0.9278789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.7861,"y":110.3054,"z":0.0},"screenPosition":{"x":0.77528954,"y":0.79802907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.77391,"y":112.26368,"z":0.0},"screenPosition":{"x":0.7755435,"y":0.83882666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.500128,"y":114.45657,"z":1.4210855E-14},"screenPosition":{"x":0.8020807,"y":0.884512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.515005,"y":115.26562,"z":0.0},"screenPosition":{"x":0.86427075,"y":0.90136695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.377954,"y":110.88099,"z":0.0},"screenPosition":{"x":0.9087926,"y":0.8100207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.438433,"y":116.76973,"z":0.0},"screenPosition":{"x":0.9075327,"y":0.9327026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.37668,"y":107.66162,"z":0.0},"screenPosition":{"x":0.84631914,"y":0.74295044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.449848,"y":109.2701,"z":0.0},"screenPosition":{"x":0.8656282,"y":0.7764604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.018318,"y":105.36797,"z":0.0},"screenPosition":{"x":0.79128504,"y":0.69516605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.40425,"y":102.50779,"z":1.4210855E-14},"screenPosition":{"x":0.7624115,"y":0.635579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.37668,"y":107.66162,"z":0.0},"screenPosition":{"x":0.84631914,"y":0.74295044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.073278,"y":97.03758,"z":0.0},"screenPosition":{"x":0.79014003,"y":0.5216163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.79635,"y":100.79534,"z":1.4210855E-14},"screenPosition":{"x":0.8167427,"y":0.599903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.031273,"y":99.76919,"z":0.0},"screenPosition":{"x":0.81184846,"y":0.57852477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.990097,"y":99.65523,"z":0.0},"screenPosition":{"x":0.7502063,"y":0.57615066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.093868,"y":97.37865,"z":1.4210855E-14},"screenPosition":{"x":0.76887774,"y":0.52872187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.99154,"y":98.74402,"z":1.4210855E-14},"screenPosition":{"x":0.8543429,"y":0.557167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.569437,"y":105.36797,"z":-1.4210855E-14},"screenPosition":{"x":0.8839701,"y":0.69516605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.917826,"y":99.08563,"z":1.4210855E-14},"screenPosition":{"x":0.91837865,"y":0.56428397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.028137,"y":103.87972,"z":1.4210855E-14},"screenPosition":{"x":0.7910805,"y":0.6641609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.561201,"y":101.82248,"z":0.0},"screenPosition":{"x":0.8216416,"y":0.6213017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.524696,"y":103.30787,"z":0.0},"screenPosition":{"x":0.8432355,"y":0.6522473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.405365,"y":103.99413,"z":0.0},"screenPosition":{"x":0.84572154,"y":0.6665444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.028137,"y":103.87972,"z":1.4210855E-14},"screenPosition":{"x":0.7910805,"y":0.6641609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.447416,"y":100.681274,"z":0.0},"screenPosition":{"x":0.92817885,"y":0.5975266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.041214,"y":98.06112,"z":0.0},"screenPosition":{"x":0.915808,"y":0.5429399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.437517,"y":99.883156,"z":0.0},"screenPosition":{"x":0.8450517,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.845545,"y":99.76919,"z":0.0},"screenPosition":{"x":0.8782178,"y":0.57852477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.461332,"y":101.82248,"z":0.0},"screenPosition":{"x":0.90705556,"y":0.6213017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.790909,"y":94.76657,"z":-1.4210855E-14},"screenPosition":{"x":0.7543561,"y":0.4743035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.623398,"y":96.35577,"z":1.4210855E-14},"screenPosition":{"x":0.7995125,"y":0.5074119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.325949,"y":96.58299,"z":1.4210855E-14},"screenPosition":{"x":0.76404274,"y":0.5121457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.320433,"y":93.972855,"z":0.0},"screenPosition":{"x":0.78499097,"y":0.45776778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.803394,"y":92.61357,"z":0.0},"screenPosition":{"x":0.754096,"y":0.42944947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.968193,"y":90.46492,"z":0.0},"screenPosition":{"x":0.70899594,"y":0.38468587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.207516,"y":97.37865,"z":-1.4210855E-14},"screenPosition":{"x":0.76651007,"y":0.52872187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.09275,"y":94.086205,"z":0.0},"screenPosition":{"x":0.78973436,"y":0.4601293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.803394,"y":92.61357,"z":0.0},"screenPosition":{"x":0.754096,"y":0.42944947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.937323,"y":88.997284,"z":0.0},"screenPosition":{"x":0.62630576,"y":0.35411012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.008982,"y":90.01312,"z":0.0},"screenPosition":{"x":0.6664795,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.258837,"y":88.771675,"z":1.4210855E-14},"screenPosition":{"x":0.6404409,"y":0.34940988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.069351,"y":88.997284,"z":0.0},"screenPosition":{"x":0.60272187,"y":0.35411012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.68733,"y":76.77087,"z":0.0},"screenPosition":{"x":0.54818064,"y":0.09939304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.05094,"y":76.547844,"z":-1.4210855E-14},"screenPosition":{"x":0.49893874,"y":0.09474668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.513542,"y":75.87904,"z":0.0},"screenPosition":{"x":0.4684679,"y":0.08081347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.713345,"y":76.43635,"z":0.0},"screenPosition":{"x":0.505972,"y":0.09242386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.787266,"y":76.547844,"z":-1.4210855E-14},"screenPosition":{"x":0.56693196,"y":0.09474668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.713345,"y":76.43635,"z":0.0},"screenPosition":{"x":0.505972,"y":0.09242386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.28924,"y":77.21706,"z":-1.4210855E-14},"screenPosition":{"x":0.47314078,"y":0.1086887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.529575,"y":79.00371,"z":-1.4210855E-14},"screenPosition":{"x":0.4473005,"y":0.14591059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.787266,"y":76.547844,"z":-1.4210855E-14},"screenPosition":{"x":0.56693196,"y":0.09474668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.812496,"y":77.328636,"z":0.0},"screenPosition":{"x":0.5247396,"y":0.111013226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.441845,"y":86.06808,"z":0.0},"screenPosition":{"x":0.4282949,"y":0.2930849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.979668,"y":78.55676,"z":1.4210855E-14},"screenPosition":{"x":0.4379236,"y":0.13659923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.44951,"y":81.24127,"z":1.4210855E-14},"screenPosition":{"x":0.40730187,"y":0.19252644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.764526,"y":86.85591,"z":0.0},"screenPosition":{"x":0.44240567,"y":0.30949822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.20189,"y":89.7873,"z":-1.4210855E-14},"screenPosition":{"x":0.45412728,"y":0.37056875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.84349,"y":91.48216,"z":-1.4210855E-14},"screenPosition":{"x":0.48242724,"y":0.40587842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.42886,"y":90.239,"z":0.0},"screenPosition":{"x":0.44939873,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.18355,"y":91.59525,"z":1.4210855E-14},"screenPosition":{"x":0.4753427,"y":0.4082344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.481518,"y":97.60609,"z":-1.4210855E-14},"screenPosition":{"x":0.51080173,"y":0.5334602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.822716,"y":96.24218,"z":-1.4210855E-14},"screenPosition":{"x":0.5036934,"y":0.50504535},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.708668,"y":98.40251,"z":0.0},"screenPosition":{"x":0.5060694,"y":0.55005234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.02554,"y":100.11113,"z":0.0},"screenPosition":{"x":0.5203013,"y":0.58564854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.22774,"y":101.479996,"z":0.0},"screenPosition":{"x":0.53692204,"y":0.6141665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.62322,"y":107.776436,"z":0.0},"screenPosition":{"x":0.57034963,"y":0.7453424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.281857,"y":107.08775,"z":0.0},"screenPosition":{"x":0.5774613,"y":0.73099476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.849674,"y":109.04017,"z":1.4210855E-14},"screenPosition":{"x":0.5656318,"y":0.7716702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.203197,"y":114.11003,"z":-1.4210855E-14},"screenPosition":{"x":0.39160004,"y":0.87729234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.217155,"y":113.18646,"z":0.0},"screenPosition":{"x":0.53714263,"y":0.85805124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.736546,"y":115.49688,"z":-1.4210855E-14},"screenPosition":{"x":0.4846553,"y":0.906185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.25952,"y":116.538185,"z":1.4210855E-14},"screenPosition":{"x":0.43209326,"y":0.9278789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.84972,"y":110.99615,"z":0.0},"screenPosition":{"x":0.48229748,"y":0.8124198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.393707,"y":110.190315,"z":0.0},"screenPosition":{"x":0.4084644,"y":0.7956315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.620697,"y":109.385086,"z":0.0},"screenPosition":{"x":0.40373543,"y":0.7788559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.50457,"y":109.84514,"z":0.0},"screenPosition":{"x":0.65615475,"y":0.78844047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.35343,"y":111.80259,"z":-1.4210855E-14},"screenPosition":{"x":0.68013686,"y":0.82922053},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.542204,"y":114.11003,"z":-1.4210855E-14},"screenPosition":{"x":0.6970374,"y":0.87729234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.341358,"y":106.973015,"z":0.0},"screenPosition":{"x":0.6178884,"y":0.72860444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.931248,"y":110.3054,"z":0.0},"screenPosition":{"x":0.668099,"y":0.79802907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.29151,"y":113.994545,"z":0.0},"screenPosition":{"x":0.6397602,"y":0.87488633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.597523,"y":113.64815,"z":-1.4210855E-14},"screenPosition":{"x":0.73755157,"y":0.86766976},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-30.787647,"y":111.11131,"z":-1.4210855E-14},"screenPosition":{"x":0.6085907,"y":0.8148191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.504517,"y":110.420494,"z":1.4210855E-14},"screenPosition":{"x":0.57282263,"y":0.8004269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.87442,"y":112.4943,"z":-1.4210855E-14},"screenPosition":{"x":0.5442829,"y":0.84363127},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-32.378822,"y":116.88551,"z":1.4210855E-14},"screenPosition":{"x":0.57544124,"y":0.93511486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.667084,"y":113.53271,"z":0.0},"screenPosition":{"x":0.6111024,"y":0.8652647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.043652,"y":115.95956,"z":1.4210855E-14},"screenPosition":{"x":0.72825724,"y":0.9158241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.979702,"y":113.64815,"z":0.0},"screenPosition":{"x":0.6254229,"y":0.86766976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.355024,"y":101.93667,"z":0.0},"screenPosition":{"x":0.61760366,"y":0.62368065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.938608,"y":116.76973,"z":0.0},"screenPosition":{"x":0.6471123,"y":0.9327026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.158289,"y":115.95956,"z":0.0},"screenPosition":{"x":0.72586894,"y":0.9158241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.936876,"y":108.35068,"z":1.4210855E-14},"screenPosition":{"x":0.58464843,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.4314,"y":100.909424,"z":0.0},"screenPosition":{"x":0.55351245,"y":0.6022796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.188576,"y":110.420494,"z":0.0},"screenPosition":{"x":0.64190465,"y":0.8004269},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-32.504517,"y":110.420494,"z":1.4210855E-14},"screenPosition":{"x":0.57282263,"y":0.8004269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.936876,"y":108.35068,"z":1.4210855E-14},"screenPosition":{"x":0.58464843,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.76383,"y":109.04017,"z":0.0},"screenPosition":{"x":0.54658693,"y":0.7716702},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-32.504517,"y":110.420494,"z":1.4210855E-14},"screenPosition":{"x":0.57282263,"y":0.8004269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.936876,"y":108.35068,"z":1.4210855E-14},"screenPosition":{"x":0.58464843,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.144766,"y":105.13888,"z":0.0},"screenPosition":{"x":0.6011507,"y":0.6903932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.382137,"y":104.79533,"z":0.0},"screenPosition":{"x":0.6795388,"y":0.6832359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.578714,"y":105.940926,"z":0.0},"screenPosition":{"x":0.6962768,"y":0.7071026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.06337,"y":105.597115,"z":0.0},"screenPosition":{"x":0.66534644,"y":0.6999399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.504517,"y":110.420494,"z":1.4210855E-14},"screenPosition":{"x":0.57282263,"y":0.8004269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.396074,"y":103.87972,"z":1.4210855E-14},"screenPosition":{"x":0.76258177,"y":0.6641609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.771917,"y":102.39354,"z":0.0},"screenPosition":{"x":0.73391837,"y":0.6331988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.677557,"y":99.99714,"z":0.0},"screenPosition":{"x":0.63171756,"y":0.5832737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.183655,"y":98.516335,"z":0.0},"screenPosition":{"x":0.57950723,"y":0.55242366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.345295,"y":97.15126,"z":0.0},"screenPosition":{"x":0.53447306,"y":0.52398455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.46038,"y":95.33387,"z":1.4210855E-14},"screenPosition":{"x":0.5320754,"y":0.48612225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.690987,"y":90.239,"z":0.0},"screenPosition":{"x":0.52727115,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.95864,"y":96.35577,"z":1.4210855E-14},"screenPosition":{"x":0.48002827,"y":0.5074119},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.75245,"y":94.539734,"z":1.4210855E-14},"screenPosition":{"x":0.4634906,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.523212,"y":91.02994,"z":-1.4210855E-14},"screenPosition":{"x":0.46826637,"y":0.39645702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.663074,"y":97.49236,"z":1.4210855E-14},"screenPosition":{"x":0.54868597,"y":0.5310909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.368828,"y":94.993454,"z":-1.4210855E-14},"screenPosition":{"x":0.51314944,"y":0.47903025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.865948,"y":94.539734,"z":1.4210855E-14},"screenPosition":{"x":0.4611261,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.89292,"y":95.10691,"z":0.0},"screenPosition":{"x":0.54389745,"y":0.481394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.751354,"y":93.066475,"z":0.0},"screenPosition":{"x":0.4635135,"y":0.43888488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.41043,"y":91.934586,"z":1.4210855E-14},"screenPosition":{"x":0.47061598,"y":0.41530383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.865948,"y":94.539734,"z":1.4210855E-14},"screenPosition":{"x":0.4611261,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.03121,"y":89.44865,"z":0.0},"screenPosition":{"x":0.5201831,"y":0.36351356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.220932,"y":89.67441,"z":1.4210855E-14},"screenPosition":{"x":0.43289724,"y":0.36821675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.918497,"y":88.997284,"z":0.0},"screenPosition":{"x":0.64753133,"y":0.35411012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.993298,"y":89.33579,"z":0.0},"screenPosition":{"x":0.56263965,"y":0.3611623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.056082,"y":94.539734,"z":0.0},"screenPosition":{"x":0.6029983,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.327393,"y":93.51957,"z":-1.4210855E-14},"screenPosition":{"x":0.55567926,"y":0.44832432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.954216,"y":89.7873,"z":1.4210855E-14},"screenPosition":{"x":0.60512054,"y":0.37056875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.82389,"y":88.884476,"z":0.0},"screenPosition":{"x":0.50366896,"y":0.35175988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.010456,"y":91.142975,"z":0.0},"screenPosition":{"x":0.5414488,"y":0.398812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.353767,"y":89.90021,"z":0.0},"screenPosition":{"x":0.40929654,"y":0.37292096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.94388,"y":91.59525,"z":1.4210855E-14},"screenPosition":{"x":0.3761692,"y":0.4082344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.42348,"y":93.40628,"z":0.0},"screenPosition":{"x":0.3453442,"y":0.4459641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.810715,"y":91.70835,"z":-1.4210855E-14},"screenPosition":{"x":0.3997768,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.519356,"y":94.539734,"z":0.0},"screenPosition":{"x":0.36418006,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.466476,"y":99.08563,"z":0.0},"screenPosition":{"x":0.3236151,"y":0.56428397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.888313,"y":96.469376,"z":1.4210855E-14},"screenPosition":{"x":0.3356602,"y":0.5097786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.625042,"y":103.87972,"z":-1.4210855E-14},"screenPosition":{"x":0.2994783,"y":0.6641609},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.346634,"y":97.49236,"z":-1.4210855E-14},"screenPosition":{"x":0.32611182,"y":0.5310909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.318287,"y":100.681274,"z":0.0},"screenPosition":{"x":0.2642024,"y":0.5975266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.433064,"y":103.079216,"z":1.4210855E-14},"screenPosition":{"x":0.17847781,"y":0.64748365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.872944,"y":100.909424,"z":0.0},"screenPosition":{"x":0.1693137,"y":0.6022796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.174713,"y":98.74402,"z":-1.4210855E-14},"screenPosition":{"x":0.18386011,"y":0.557167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.99705,"y":105.940926,"z":0.0},"screenPosition":{"x":0.18756145,"y":0.7071026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.43714,"y":103.65095,"z":-1.4210855E-14},"screenPosition":{"x":0.17839289,"y":0.65939474},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-48.229527,"y":100.79534,"z":0.0},"screenPosition":{"x":0.24521822,"y":0.599903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.238663,"y":98.288704,"z":0.0},"screenPosition":{"x":0.2241945,"y":0.5476813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.3245,"y":97.719826,"z":1.4210855E-14},"screenPosition":{"x":0.34740624,"y":0.5358298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.33317,"y":103.536575,"z":0.0},"screenPosition":{"x":0.2638922,"y":0.657012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.779575,"y":97.83358,"z":1.4210855E-14},"screenPosition":{"x":0.33792555,"y":0.53819954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.658318,"y":95.67439,"z":0.0},"screenPosition":{"x":0.3404517,"y":0.49321654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.52284,"y":89.33579,"z":0.0},"screenPosition":{"x":0.34327418,"y":0.3611623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.401215,"y":92.95323,"z":1.4210855E-14},"screenPosition":{"x":0.3666413,"y":0.43652567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.76662,"y":94.19957,"z":0.0},"screenPosition":{"x":0.3381954,"y":0.46249104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.531437,"y":91.821465,"z":0.0},"screenPosition":{"x":0.3430951,"y":0.41294712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.469757,"y":91.25603,"z":0.0},"screenPosition":{"x":0.40688005,"y":0.4011672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.672215,"y":88.65889,"z":1.4210855E-14},"screenPosition":{"x":0.42349556,"y":0.34706014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.486557,"y":90.01312,"z":0.0},"screenPosition":{"x":0.3856967,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.842987,"y":89.90021,"z":1.4210855E-14},"screenPosition":{"x":0.48243776,"y":0.37292096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.202324,"y":90.239,"z":0.0},"screenPosition":{"x":0.45411828,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.725464,"y":94.76657,"z":0.0},"screenPosition":{"x":0.3807195,"y":0.4743035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.22207,"y":90.46492,"z":0.0},"screenPosition":{"x":0.43287358,"y":0.38468587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.182903,"y":90.239,"z":-1.4210855E-14},"screenPosition":{"x":0.47535622,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.315365,"y":90.01312,"z":0.0},"screenPosition":{"x":0.45176327,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.390247,"y":92.3872,"z":0.0},"screenPosition":{"x":0.49186984,"y":0.42473325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.890263,"y":97.60609,"z":0.0},"screenPosition":{"x":0.5439528,"y":0.5334602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.233097,"y":95.560875,"z":0.0},"screenPosition":{"x":0.5368105,"y":0.49085152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.667194,"y":93.972855,"z":0.0},"screenPosition":{"x":0.54860014,"y":0.45776778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.940363,"y":95.447365,"z":0.0},"screenPosition":{"x":0.6054091,"y":0.48848677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.26442,"y":93.51957,"z":1.4210855E-14},"screenPosition":{"x":0.6194913,"y":0.44832432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.873795,"y":93.40628,"z":0.0},"screenPosition":{"x":0.5651293,"y":0.4459641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.516966,"y":99.65523,"z":1.4210855E-14},"screenPosition":{"x":0.67672986,"y":0.57615066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.052277,"y":96.12859,"z":0.0},"screenPosition":{"x":0.60307753,"y":0.5026791},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.22774,"y":101.479996,"z":0.0},"screenPosition":{"x":0.53692204,"y":0.6141665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.815723,"y":99.883156,"z":0.0},"screenPosition":{"x":0.60800576,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.653864,"y":99.883156,"z":0.0},"screenPosition":{"x":0.65304446,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.492006,"y":99.883156,"z":0.0},"screenPosition":{"x":0.6980832,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.879099,"y":100.56722,"z":0.0},"screenPosition":{"x":0.6483521,"y":0.5951505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.719284,"y":102.73632,"z":0.0},"screenPosition":{"x":0.7766816,"y":0.6403401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.653864,"y":99.883156,"z":0.0},"screenPosition":{"x":0.65304446,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.492006,"y":99.883156,"z":0.0},"screenPosition":{"x":0.6980832,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.016886,"y":109.96019,"z":0.0},"screenPosition":{"x":0.7704815,"y":0.7908372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.231579,"y":107.66162,"z":0.0},"screenPosition":{"x":0.7868421,"y":0.74295044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.017563,"y":105.48254,"z":0.0},"screenPosition":{"x":0.7913008,"y":0.69755286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.151644,"y":105.36797,"z":0.0},"screenPosition":{"x":0.6843408,"y":0.69516605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.956314,"y":101.251724,"z":1.4210855E-14},"screenPosition":{"x":0.7717434,"y":0.609411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.512772,"y":103.42222,"z":0.0},"screenPosition":{"x":0.7601506,"y":0.6546295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.287062,"y":100.225136,"z":-1.4210855E-14},"screenPosition":{"x":0.68151957,"y":0.58802366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.312462,"y":103.079216,"z":0.0},"screenPosition":{"x":0.7434904,"y":0.64748365},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.956314,"y":101.251724,"z":1.4210855E-14},"screenPosition":{"x":0.7717434,"y":0.609411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.332668,"y":99.42735,"z":1.4210855E-14},"screenPosition":{"x":0.7430694,"y":0.5714032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.998526,"y":98.174904,"z":0.0},"screenPosition":{"x":0.75003076,"y":0.54531044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.555855,"y":100.225136,"z":0.0},"screenPosition":{"x":0.7384197,"y":0.58802366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.497252,"y":101.82248,"z":1.4210855E-14},"screenPosition":{"x":0.7813073,"y":0.6213017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.888842,"y":101.82248,"z":0.0},"screenPosition":{"x":0.73148245,"y":0.6213017},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-22.06202,"y":98.74402,"z":-1.4210855E-14},"screenPosition":{"x":0.7903746,"y":0.557167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.332668,"y":99.42735,"z":1.4210855E-14},"screenPosition":{"x":0.7430694,"y":0.5714032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.658783,"y":97.94734,"z":0.0},"screenPosition":{"x":0.7571087,"y":0.5405696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.779057,"y":96.810265,"z":0.0},"screenPosition":{"x":0.75460297,"y":0.51688045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.058264,"y":99.31344,"z":0.0},"screenPosition":{"x":0.79045284,"y":0.56902987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.399353,"y":95.901474,"z":0.0},"screenPosition":{"x":0.80418015,"y":0.4979473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.206223,"y":94.086205,"z":-1.4210855E-14},"screenPosition":{"x":0.7873703,"y":0.4601293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.369118,"y":92.840004,"z":1.4210855E-14},"screenPosition":{"x":0.74231005,"y":0.43416667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.19211,"y":91.02994,"z":1.4210855E-14},"screenPosition":{"x":0.70433104,"y":0.39645702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.79357,"y":92.3872,"z":0.0},"screenPosition":{"x":0.65013397,"y":0.42473325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.995983,"y":93.40628,"z":0.0},"screenPosition":{"x":0.6667503,"y":0.4459641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.798798,"y":93.40628,"z":0.0},"screenPosition":{"x":0.7541917,"y":0.4459641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.605757,"y":91.02994,"z":0.0},"screenPosition":{"x":0.7373801,"y":0.39645702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.742737,"y":90.239,"z":1.4210855E-14},"screenPosition":{"x":0.71369296,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.781134,"y":90.35195,"z":0.0},"screenPosition":{"x":0.6712264,"y":0.38233238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.083614,"y":90.01312,"z":0.0},"screenPosition":{"x":0.70659137,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.61772,"y":92.61357,"z":1.4210855E-14},"screenPosition":{"x":0.7162975,"y":0.42944947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.68536,"y":93.40628,"z":1.4210855E-14},"screenPosition":{"x":0.756555,"y":0.4459641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.01312,"y":92.04772,"z":-1.4210855E-14},"screenPosition":{"x":0.77056,"y":0.4176608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.832212,"y":87.64434,"z":0.0},"screenPosition":{"x":0.7534956,"y":0.32592374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.732414,"y":88.54611,"z":-1.4210855E-14},"screenPosition":{"x":0.7347414,"y":0.34471068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.628408,"y":86.85591,"z":1.4210855E-14},"screenPosition":{"x":0.7369082,"y":0.30949822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-23.12233,"y":92.72678,"z":-1.4210855E-14},"screenPosition":{"x":0.7682848,"y":0.43180794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.200182,"y":89.222946,"z":0.0},"screenPosition":{"x":0.8291629,"y":0.35881132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.141193,"y":86.74333,"z":1.4210855E-14},"screenPosition":{"x":0.78872514,"y":0.30715272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.527655,"y":73.98643,"z":0.0},"screenPosition":{"x":0.84317386,"y":0.041383855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.61483,"y":74.20891,"z":0.0},"screenPosition":{"x":0.8830244,"y":0.04601897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.024532,"y":77.328636,"z":0.0},"screenPosition":{"x":0.89532226,"y":0.111013226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.773226,"y":78.66848,"z":0.0},"screenPosition":{"x":0.9213911,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.468945,"y":77.998344,"z":0.0},"screenPosition":{"x":0.88606364,"y":0.12496555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.21542,"y":79.56265,"z":0.0},"screenPosition":{"x":0.91217875,"y":0.15755533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.40679,"y":81.57731,"z":-1.4210855E-14},"screenPosition":{"x":0.92902523,"y":0.19952732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.773226,"y":78.66848,"z":0.0},"screenPosition":{"x":0.9213911,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-14.8032465,"y":85.50569,"z":-1.4210855E-14},"screenPosition":{"x":0.941599,"y":0.28136852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-15.239808,"y":87.081116,"z":-1.4210855E-14},"screenPosition":{"x":0.932504,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.203789,"y":92.840004,"z":0.0},"screenPosition":{"x":0.91242105,"y":0.43416667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-14.106462,"y":87.30637,"z":1.4210855E-14},"screenPosition":{"x":0.95611537,"y":0.31888273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.072512,"y":97.15126,"z":-1.4210855E-14},"screenPosition":{"x":0.89432263,"y":0.52398455},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-16.395952,"y":96.58299,"z":0.0},"screenPosition":{"x":0.90841764,"y":0.5121457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.353788,"y":101.13761,"z":0.0},"screenPosition":{"x":0.9092961,"y":0.6070336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.265587,"y":101.02351,"z":0.0},"screenPosition":{"x":0.8903003,"y":0.60465646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.119247,"y":104.68083,"z":0.0},"screenPosition":{"x":0.893349,"y":0.6808506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.519682,"y":107.89126,"z":0.0},"screenPosition":{"x":0.90584,"y":0.74773455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.085403,"y":105.48254,"z":0.0},"screenPosition":{"x":0.9148874,"y":0.69755286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.659973,"y":105.024345,"z":-1.4210855E-14},"screenPosition":{"x":0.90291727,"y":0.6880072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.743942,"y":108.35068,"z":0.0},"screenPosition":{"x":0.90116787,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.101627,"y":99.199524,"z":0.0},"screenPosition":{"x":0.85204947,"y":0.5666568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.774286,"y":97.49236,"z":0.0},"screenPosition":{"x":0.858869,"y":0.5310909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.102554,"y":103.65095,"z":1.4210855E-14},"screenPosition":{"x":0.9145301,"y":0.65939474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.717022,"y":101.479996,"z":0.0},"screenPosition":{"x":0.8808954,"y":0.6141665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.116377,"y":94.653145,"z":0.0},"screenPosition":{"x":0.8725755,"y":0.47194052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.018707,"y":88.43335,"z":1.4210855E-14},"screenPosition":{"x":0.91627693,"y":0.34236142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.99901,"y":95.10691,"z":-1.4210855E-14},"screenPosition":{"x":0.8750206,"y":0.481394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.677103,"y":92.95323,"z":0.0},"screenPosition":{"x":0.88172704,"y":0.43652567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.214289,"y":86.29311,"z":1.4210855E-14},"screenPosition":{"x":0.703869,"y":0.29777315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.76766,"y":80.79338,"z":0.0},"screenPosition":{"x":0.90067375,"y":0.1831954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.28194,"y":84.49415,"z":1.4210855E-14},"screenPosition":{"x":0.9107929,"y":0.2602947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.208221,"y":85.84309,"z":0.0},"screenPosition":{"x":0.8498287,"y":0.2883976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-13.895573,"y":85.84309,"z":1.4210855E-14},"screenPosition":{"x":0.9605089,"y":0.2883976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.173208,"y":84.044876,"z":0.0},"screenPosition":{"x":0.91305816,"y":0.250935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.173208,"y":84.044876,"z":0.0},"screenPosition":{"x":0.91305816,"y":0.250935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-13.693296,"y":83.5958,"z":1.4210855E-14},"screenPosition":{"x":0.964723,"y":0.24157923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.074997,"y":86.18059,"z":1.4210855E-14},"screenPosition":{"x":0.8734376,"y":0.2954289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.109951,"y":86.18059,"z":0.0},"screenPosition":{"x":0.83104265,"y":0.2954289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.988708,"y":86.18059,"z":0.0},"screenPosition":{"x":0.7085686,"y":0.2954289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.992617,"y":86.74333,"z":1.4210855E-14},"screenPosition":{"x":0.83348715,"y":0.30715272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.141937,"y":86.63076,"z":-1.4210855E-14},"screenPosition":{"x":0.78870964,"y":0.30480745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.181765,"y":85.84309,"z":0.0},"screenPosition":{"x":0.74621326,"y":0.2883976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.875656,"y":86.18059,"z":0.0},"screenPosition":{"x":0.71092385,"y":0.2954289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.881336,"y":88.884476,"z":0.0},"screenPosition":{"x":0.68997216,"y":0.35175988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.10917,"y":88.54611,"z":0.0},"screenPosition":{"x":0.6852256,"y":0.34471068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.628408,"y":86.85591,"z":1.4210855E-14},"screenPosition":{"x":0.7369082,"y":0.30949822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.734232,"y":88.207855,"z":-1.4210855E-14},"screenPosition":{"x":0.7347035,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-26.78306,"y":85.50569,"z":0.0},"screenPosition":{"x":0.6920196,"y":0.28136852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.628408,"y":86.85591,"z":1.4210855E-14},"screenPosition":{"x":0.7369082,"y":0.30949822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.07193,"y":85.280815,"z":0.0},"screenPosition":{"x":0.7485015,"y":0.27668372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.496368,"y":84.269485,"z":0.0},"screenPosition":{"x":0.78132564,"y":0.25561434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.376842,"y":82.361824,"z":0.0},"screenPosition":{"x":0.6588158,"y":0.21587135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.501429,"y":83.48357,"z":0.0},"screenPosition":{"x":0.78122026,"y":0.23924093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.227896,"y":77.66344,"z":1.4210855E-14},"screenPosition":{"x":0.7452522,"y":0.11798828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.46875,"y":77.21706,"z":1.4210855E-14},"screenPosition":{"x":0.71940106,"y":0.1086887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.288174,"y":75.21068,"z":0.0},"screenPosition":{"x":0.473163,"y":0.06688907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.088917,"y":76.10193,"z":0.0},"screenPosition":{"x":0.43564755,"y":0.08545689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.993694,"y":78.66848,"z":0.0},"screenPosition":{"x":0.41679803,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.469315,"y":77.10549,"z":0.0},"screenPosition":{"x":0.7193893,"y":0.106364414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.34091,"y":83.37134,"z":1.4210855E-14},"screenPosition":{"x":0.40956432,"y":0.23690285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.665157,"y":84.38181,"z":0.0},"screenPosition":{"x":0.42364255,"y":0.2579544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.538097,"y":86.63076,"z":0.0},"screenPosition":{"x":0.44712296,"y":0.30480745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.860893,"y":88.207855,"z":0.0},"screenPosition":{"x":0.46123135,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.215267,"y":85.730606,"z":1.4210855E-14},"screenPosition":{"x":0.4330153,"y":0.2860543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.54011,"y":88.43335,"z":-1.4210855E-14},"screenPosition":{"x":0.447081,"y":0.34236142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.865948,"y":94.539734,"z":1.4210855E-14},"screenPosition":{"x":0.4611261,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.97713,"y":91.821465,"z":1.4210855E-14},"screenPosition":{"x":0.45880976,"y":0.41294712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.638874,"y":94.42633,"z":1.4210855E-14},"screenPosition":{"x":0.4658568,"y":0.46721527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.297134,"y":92.04772,"z":-1.4210855E-14},"screenPosition":{"x":0.4729764,"y":0.4176608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.865948,"y":94.539734,"z":1.4210855E-14},"screenPosition":{"x":0.4611261,"y":0.46957776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.691227,"y":98.40251,"z":1.4210855E-14},"screenPosition":{"x":0.31893274,"y":0.55005234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.01866,"y":95.10691,"z":0.0},"screenPosition":{"x":0.31211123,"y":0.481394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.65115,"y":93.63287,"z":-1.4210855E-14},"screenPosition":{"x":0.34060103,"y":0.45068482},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.415833,"y":97.94734,"z":-1.4210855E-14},"screenPosition":{"x":0.36633685,"y":0.5405696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.45807,"y":96.58299,"z":-1.4210855E-14},"screenPosition":{"x":0.42795688,"y":0.5121457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.869484,"y":98.97175,"z":0.0},"screenPosition":{"x":0.4610524,"y":0.5619114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.554688,"y":101.479996,"z":1.4210855E-14},"screenPosition":{"x":0.4467773,"y":0.6141665},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-39.003643,"y":96.58299,"z":0.0},"screenPosition":{"x":0.4374241,"y":0.5121457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.942074,"y":99.76919,"z":1.4210855E-14},"screenPosition":{"x":0.39704013,"y":0.57852477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.600273,"y":99.54129,"z":0.0},"screenPosition":{"x":0.40416098,"y":0.57377684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.262913,"y":101.59415,"z":-1.4210855E-14},"screenPosition":{"x":0.41118932,"y":0.61654466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.969772,"y":101.13761,"z":1.4210855E-14},"screenPosition":{"x":0.37562978,"y":0.6070336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.219097,"y":100.225136,"z":0.0},"screenPosition":{"x":0.34960213,"y":0.58802366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.23083,"y":96.92392,"z":-1.4210855E-14},"screenPosition":{"x":0.32852438,"y":0.51924825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.149677,"y":101.93667,"z":1.4210855E-14},"screenPosition":{"x":0.41354838,"y":0.62368065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.935577,"y":109.73011,"z":0.0},"screenPosition":{"x":0.41800877,"y":0.78604394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.87167,"y":101.708305,"z":-1.4210855E-14},"screenPosition":{"x":0.46100688,"y":0.61892307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.215935,"y":104.45188,"z":1.4210855E-14},"screenPosition":{"x":0.4538347,"y":0.6760809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.01046,"y":101.708305,"z":-1.4210855E-14},"screenPosition":{"x":0.43728206,"y":0.61892307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.009094,"y":100.681274,"z":0.0},"screenPosition":{"x":0.43731052,"y":0.5975266},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.651344,"y":110.190315,"z":1.4210855E-14},"screenPosition":{"x":0.38226366,"y":0.7956315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.302822,"y":102.73632,"z":0.0},"screenPosition":{"x":0.47285792,"y":0.6403401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.393707,"y":110.190315,"z":0.0},"screenPosition":{"x":0.4084644,"y":0.7956315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.84748,"y":108.925224,"z":0.0},"screenPosition":{"x":0.31567746,"y":0.7692755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.354748,"y":106.743576,"z":0.0},"screenPosition":{"x":0.3467761,"y":0.72382444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.4179,"y":108.2358,"z":0.0},"screenPosition":{"x":0.3871271,"y":0.75491256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.711716,"y":110.88099,"z":0.0},"screenPosition":{"x":0.33933923,"y":0.8100207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.470886,"y":113.87907,"z":0.0},"screenPosition":{"x":0.28185654,"y":0.8724805},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-41.20374,"y":114.34105,"z":1.4210855E-14},"screenPosition":{"x":0.39158878,"y":0.88210523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.260666,"y":111.57211,"z":0.0},"screenPosition":{"x":0.26540276,"y":0.824419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.196556,"y":110.420494,"z":0.0},"screenPosition":{"x":0.3084051,"y":0.8004269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.033607,"y":111.91784,"z":-1.4210855E-14},"screenPosition":{"x":0.2701332,"y":0.8316217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.86238,"y":112.60963,"z":0.0},"screenPosition":{"x":0.3153671,"y":0.84603393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.247833,"y":109.15513,"z":0.0},"screenPosition":{"x":0.18233682,"y":0.7740652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.728092,"y":108.46556,"z":0.0},"screenPosition":{"x":0.15149806,"y":0.75969917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.255104,"y":110.190315,"z":1.4210855E-14},"screenPosition":{"x":0.18218537,"y":0.7956315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.397537,"y":110.07524,"z":1.4210855E-14},"screenPosition":{"x":0.15838462,"y":0.7932342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.777187,"y":113.7636,"z":0.0},"screenPosition":{"x":0.06714196,"y":0.870075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.551956,"y":111.456894,"z":-1.4210855E-14},"screenPosition":{"x":0.13433427,"y":0.8220187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.308247,"y":92.50038,"z":0.0},"screenPosition":{"x":0.5769115,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-53.670105,"y":111.91784,"z":-1.4210855E-14},"screenPosition":{"x":0.13187282,"y":0.8316217},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.764717,"y":109.50008,"z":-1.4210855E-14},"screenPosition":{"x":0.12990172,"y":0.78125167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.89695,"y":115.49688,"z":0.0},"screenPosition":{"x":0.1479802,"y":0.906185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.892513,"y":112.60963,"z":-1.4210855E-14},"screenPosition":{"x":0.293906,"y":0.84603393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.530323,"y":102.165085,"z":0.0},"screenPosition":{"x":0.46811828,"y":0.6284392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.38955,"y":108.695366,"z":1.4210855E-14},"screenPosition":{"x":0.32521775,"y":0.76448685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.86098,"y":112.26368,"z":1.4210855E-14},"screenPosition":{"x":0.31539625,"y":0.83882666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.419426,"y":109.15513,"z":0.0},"screenPosition":{"x":0.22042862,"y":0.7740652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.571457,"y":110.99615,"z":0.0},"screenPosition":{"x":0.27976134,"y":0.8124198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.5038,"y":108.695366,"z":0.0},"screenPosition":{"x":0.32283753,"y":0.76448685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.39553,"y":109.96019,"z":0.0},"screenPosition":{"x":0.24175978,"y":0.7908372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.442554,"y":108.35068,"z":0.0},"screenPosition":{"x":0.19911344,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.280624,"y":109.73011,"z":1.4210855E-14},"screenPosition":{"x":0.16082032,"y":0.78604394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.57528,"y":114.34105,"z":0.0},"screenPosition":{"x":0.13384834,"y":0.88210523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.23815,"y":107.776436,"z":1.4210855E-14},"screenPosition":{"x":0.18253854,"y":0.7453424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.650425,"y":109.50008,"z":-1.4210855E-14},"screenPosition":{"x":0.13228284,"y":0.78125167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.146263,"y":111.57211,"z":0.0},"screenPosition":{"x":0.26778618,"y":0.824419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.856796,"y":113.301865,"z":-1.4210855E-14},"screenPosition":{"x":0.08631676,"y":0.8604555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.23815,"y":107.776436,"z":1.4210855E-14},"screenPosition":{"x":0.18253854,"y":0.7453424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.89695,"y":115.49688,"z":0.0},"screenPosition":{"x":0.1479802,"y":0.906185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.72132,"y":110.99615,"z":0.0},"screenPosition":{"x":0.08913912,"y":0.8124198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.856796,"y":113.301865,"z":-1.4210855E-14},"screenPosition":{"x":0.08631676,"y":0.8604555},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-52.89695,"y":115.49688,"z":0.0},"screenPosition":{"x":0.1479802,"y":0.906185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.891605,"y":107.2025,"z":0.0},"screenPosition":{"x":0.18975824,"y":0.7333854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.92322,"y":112.72497,"z":1.4210855E-14},"screenPosition":{"x":0.2724329,"y":0.8484369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.943306,"y":110.88099,"z":0.0},"screenPosition":{"x":0.25118116,"y":0.8100207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.507484,"y":109.50008,"z":0.0},"screenPosition":{"x":0.15609404,"y":0.78125167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.891605,"y":107.2025,"z":0.0},"screenPosition":{"x":0.18975824,"y":0.7333854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.614735,"y":108.58046,"z":1.4210855E-14},"screenPosition":{"x":0.1538597,"y":0.7620929},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.69412,"y":108.006096,"z":0.0},"screenPosition":{"x":0.08970586,"y":0.75012696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.693073,"y":107.89126,"z":0.0},"screenPosition":{"x":0.08972763,"y":0.74773455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.7582,"y":102.50779,"z":0.0},"screenPosition":{"x":0.2758708,"y":0.635579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.97964,"y":104.68083,"z":-1.4210855E-14},"screenPosition":{"x":0.10459081,"y":0.6808506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.61969,"y":106.399506,"z":1.4210855E-14},"screenPosition":{"x":0.049589776,"y":0.7166564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.33288,"y":105.024345,"z":1.4210855E-14},"screenPosition":{"x":0.18056506,"y":0.6880072},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.04113,"y":107.89126,"z":-1.4210855E-14},"screenPosition":{"x":0.24914317,"y":0.74773455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.560165,"y":104.90983,"z":0.0},"screenPosition":{"x":0.17582987,"y":0.68562144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.067867,"y":103.42222,"z":-1.4210855E-14},"screenPosition":{"x":0.20691946,"y":0.6546295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.189323,"y":104.56635,"z":1.4210855E-14},"screenPosition":{"x":0.20438908,"y":0.6784656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.733772,"y":109.15513,"z":0.0},"screenPosition":{"x":0.23471305,"y":0.7740652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.11915,"y":107.08775,"z":0.0},"screenPosition":{"x":0.18501775,"y":0.73099476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.180496,"y":107.89126,"z":0.0},"screenPosition":{"x":0.14207304,"y":0.74773455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.672203,"y":105.597115,"z":0.0},"screenPosition":{"x":0.09016247,"y":0.6999399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.23815,"y":107.776436,"z":1.4210855E-14},"screenPosition":{"x":0.18253854,"y":0.7453424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.066383,"y":103.193535,"z":-1.4210855E-14},"screenPosition":{"x":0.20695038,"y":0.6498654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.564335,"y":106.28484,"z":-1.4210855E-14},"screenPosition":{"x":0.09240967,"y":0.71426755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.97138,"y":106.858284,"z":-1.4210855E-14},"screenPosition":{"x":0.12559628,"y":0.7262143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.438835,"y":108.35068,"z":1.4210855E-14},"screenPosition":{"x":0.032524258,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.629852,"y":106.973015,"z":0.0},"screenPosition":{"x":0.13271141,"y":0.72860444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.564335,"y":106.28484,"z":-1.4210855E-14},"screenPosition":{"x":0.09240967,"y":0.71426755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.87996,"y":109.61509,"z":0.0},"screenPosition":{"x":0.12750085,"y":0.78364766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.744953,"y":107.08775,"z":0.0},"screenPosition":{"x":0.1303135,"y":0.73099476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.308956,"y":109.61509,"z":1.4210855E-14},"screenPosition":{"x":0.056063432,"y":0.78364766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.79176,"y":101.251724,"z":0.0},"screenPosition":{"x":0.3376717,"y":0.609411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.540375,"y":101.59415,"z":0.0},"screenPosition":{"x":0.36374217,"y":0.61654466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.29287,"y":107.66162,"z":0.0},"screenPosition":{"x":0.13973187,"y":0.74295044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.345856,"y":106.858284,"z":1.4210855E-14},"screenPosition":{"x":0.18029469,"y":0.7262143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.329636,"y":104.56635,"z":-1.4210855E-14},"screenPosition":{"x":0.18063258,"y":0.6784656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.932343,"y":105.36797,"z":0.0},"screenPosition":{"x":0.14724284,"y":0.69516605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.38711,"y":108.695366,"z":0.0},"screenPosition":{"x":0.15860182,"y":0.76448685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.34667,"y":106.973015,"z":0.0},"screenPosition":{"x":0.18027778,"y":0.72860444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.33927,"y":91.70835,"z":0.0},"screenPosition":{"x":0.07626519,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.664074,"y":90.12606,"z":0.0},"screenPosition":{"x":0.06949845,"y":0.37762618},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-50.649612,"y":88.43335,"z":1.4210855E-14},"screenPosition":{"x":0.19479978,"y":0.34236142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.920273,"y":90.01312,"z":0.0},"screenPosition":{"x":0.39749432,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.664074,"y":90.12606,"z":0.0},"screenPosition":{"x":0.06949845,"y":0.37762618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.260483,"y":91.934586,"z":0.0},"screenPosition":{"x":0.16123994,"y":0.41530383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.424778,"y":88.65889,"z":0.0},"screenPosition":{"x":0.19948381,"y":0.34706014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.9901,"y":92.95323,"z":0.0},"screenPosition":{"x":0.10437292,"y":0.43652567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.73959,"y":90.239,"z":0.0},"screenPosition":{"x":0.10959188,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.601433,"y":92.04772,"z":0.0},"screenPosition":{"x":0.1541368,"y":0.4176608},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.646786,"y":95.10691,"z":-1.4210855E-14},"screenPosition":{"x":0.13235863,"y":0.481394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.9901,"y":92.95323,"z":0.0},"screenPosition":{"x":0.10437292,"y":0.43652567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.967125,"y":90.35195,"z":1.4210855E-14},"screenPosition":{"x":0.10485156,"y":0.38233238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.47526,"y":87.982414,"z":0.0},"screenPosition":{"x":0.13593204,"y":0.33296695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.04885,"y":92.50038,"z":-1.4210855E-14},"screenPosition":{"x":0.2698156,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.61184,"y":88.320595,"z":-1.4210855E-14},"screenPosition":{"x":0.23725335,"y":0.34001243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.460415,"y":92.274025,"z":0.0},"screenPosition":{"x":0.30290803,"y":0.42237553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.604168,"y":94.31294,"z":0.0},"screenPosition":{"x":0.27907985,"y":0.46485302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.965366,"y":94.19957,"z":0.0},"screenPosition":{"x":0.2507215,"y":0.46249104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.631023,"y":95.33387,"z":0.0},"screenPosition":{"x":0.257687,"y":0.48612225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.403347,"y":95.22038,"z":0.0},"screenPosition":{"x":0.26243028,"y":0.483758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.403946,"y":95.33387,"z":0.0},"screenPosition":{"x":0.26241782,"y":0.48612225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.99441,"y":94.42633,"z":1.4210855E-14},"screenPosition":{"x":0.33344975,"y":0.46721527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.604053,"y":92.3872,"z":0.0},"screenPosition":{"x":0.15408224,"y":0.42473325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.28922,"y":95.10691,"z":-1.4210855E-14},"screenPosition":{"x":0.2648079,"y":0.481394},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-47.065063,"y":95.67439,"z":1.4210855E-14},"screenPosition":{"x":0.26947784,"y":0.49321654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.323906,"y":97.37865,"z":0.0},"screenPosition":{"x":0.24325198,"y":0.52872187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.413517,"y":97.15126,"z":0.0},"screenPosition":{"x":0.2622184,"y":0.52398455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.21218,"y":97.719826,"z":1.4210855E-14},"screenPosition":{"x":0.24557957,"y":0.5358298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.064484,"y":95.560875,"z":0.0},"screenPosition":{"x":0.2694899,"y":0.49085152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.300755,"y":97.264946,"z":0.0},"screenPosition":{"x":0.16040094,"y":0.5263531},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.40753,"y":96.01503,"z":0.0},"screenPosition":{"x":0.26234308,"y":0.50031304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.28577,"y":98.97175,"z":0.0},"screenPosition":{"x":0.28571314,"y":0.5619114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.595078,"y":97.03758,"z":0.0},"screenPosition":{"x":0.40426922,"y":0.5216163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.513023,"y":101.82248,"z":0.0},"screenPosition":{"x":0.19764535,"y":0.6213017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.404415,"y":99.99714,"z":-1.4210855E-14},"screenPosition":{"x":0.2832414,"y":0.5832737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.490627,"y":99.199524,"z":0.0},"screenPosition":{"x":0.30227858,"y":0.5666568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.824306,"y":103.193535,"z":0.0},"screenPosition":{"x":0.31616032,"y":0.6498654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.665894,"y":101.82248,"z":0.0},"screenPosition":{"x":0.25696057,"y":0.6213017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.80723,"y":98.97175,"z":1.4210855E-14},"screenPosition":{"x":0.31651598,"y":0.5619114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.654354,"y":104.56635,"z":0.0},"screenPosition":{"x":0.27803427,"y":0.6784656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.824306,"y":103.193535,"z":0.0},"screenPosition":{"x":0.31616032,"y":0.6498654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.782257,"y":102.279305,"z":0.0},"screenPosition":{"x":0.25453633,"y":0.63081884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.25265,"y":102.622055,"z":1.4210855E-14},"screenPosition":{"x":0.14056978,"y":0.6379594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.040455,"y":99.199524,"z":0.0},"screenPosition":{"x":0.20749049,"y":0.5666568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.671925,"y":98.174904,"z":0.0},"screenPosition":{"x":0.13183492,"y":0.54531044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.65423,"y":96.01503,"z":1.4210855E-14},"screenPosition":{"x":0.13220361,"y":0.50031304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.75096,"y":93.972855,"z":1.4210855E-14},"screenPosition":{"x":0.1301883,"y":0.45776778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.392246,"y":91.70835,"z":0.0},"screenPosition":{"x":0.13766156,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.359222,"y":90.01312,"z":0.0},"screenPosition":{"x":0.15918285,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.21554,"y":91.25603,"z":0.0},"screenPosition":{"x":0.2038429,"y":0.4011672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.75096,"y":93.972855,"z":1.4210855E-14},"screenPosition":{"x":0.1301883,"y":0.45776778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.392246,"y":91.70835,"z":0.0},"screenPosition":{"x":0.13766156,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.474213,"y":90.239,"z":0.0},"screenPosition":{"x":0.15678728,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.82873,"y":90.91691,"z":0.0},"screenPosition":{"x":0.37856808,"y":0.39410228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.29224,"y":88.09513,"z":0.0},"screenPosition":{"x":0.34807834,"y":0.3353152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.24089,"y":93.972855,"z":-1.4210855E-14},"screenPosition":{"x":0.30748144,"y":0.45776778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.43036,"y":89.7873,"z":0.0},"screenPosition":{"x":0.3243675,"y":0.37056875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.533176,"y":81.24127,"z":0.0},"screenPosition":{"x":0.13472548,"y":0.19252644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.51582,"y":87.30637,"z":-1.4210855E-14},"screenPosition":{"x":0.3434204,"y":0.31888273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.701885,"y":81.8014,"z":-1.4210855E-14},"screenPosition":{"x":0.21454406,"y":0.20419581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.445316,"y":84.9436,"z":0.0},"screenPosition":{"x":0.28238922,"y":0.26965836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.265163,"y":73.20809,"z":0.0},"screenPosition":{"x":0.09864247,"y":0.025168639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.756187,"y":79.22725,"z":0.0},"screenPosition":{"x":0.109246075,"y":0.15056776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.69822,"y":75.43342,"z":0.0},"screenPosition":{"x":0.1521204,"y":0.07152956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.370388,"y":75.09932,"z":0.0},"screenPosition":{"x":0.1381169,"y":0.06456919},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.265163,"y":73.20809,"z":0.0},"screenPosition":{"x":0.09864247,"y":0.025168639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.812386,"y":77.328636,"z":0.0},"screenPosition":{"x":0.17057526,"y":0.111013226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.87752,"y":74.097664,"z":0.0},"screenPosition":{"x":0.210885,"y":0.04370129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.443264,"y":76.547844,"z":0.0},"screenPosition":{"x":0.21993203,"y":0.09474668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.51118,"y":78.55676,"z":1.4210855E-14},"screenPosition":{"x":0.13518372,"y":0.13659923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.863262,"y":77.10549,"z":0.0},"screenPosition":{"x":0.086182006,"y":0.106364414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.97897,"y":77.44022,"z":0.0},"screenPosition":{"x":0.08377149,"y":0.113338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.265163,"y":73.20809,"z":0.0},"screenPosition":{"x":0.09864247,"y":0.025168639},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.818382,"y":74.87665,"z":0.0},"screenPosition":{"x":0.1287837,"y":0.05993017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.85392,"y":76.10193,"z":0.0},"screenPosition":{"x":0.086376674,"y":0.08545689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.75379,"y":77.44022,"z":0.0},"screenPosition":{"x":0.08846266,"y":0.113338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.95745,"y":81.68935,"z":0.0},"screenPosition":{"x":0.1675531,"y":0.20186144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.818382,"y":74.87665,"z":0.0},"screenPosition":{"x":0.1287837,"y":0.05993017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.56216,"y":77.55183,"z":-1.4210855E-14},"screenPosition":{"x":0.21745501,"y":0.11566302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.969288,"y":79.45084,"z":0.0},"screenPosition":{"x":0.12563986,"y":0.15522589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.588036,"y":77.44022,"z":0.0},"screenPosition":{"x":0.17524923,"y":0.113338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.92185,"y":78.78021,"z":0.0},"screenPosition":{"x":0.18912816,"y":0.14125443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.693462,"y":78.33336,"z":0.0},"screenPosition":{"x":0.19388619,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.603508,"y":79.56265,"z":-1.4210855E-14},"screenPosition":{"x":0.17492694,"y":0.15755533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.812283,"y":79.22725,"z":0.0},"screenPosition":{"x":0.19141081,"y":0.15056776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.377644,"y":75.990486,"z":0.0},"screenPosition":{"x":0.13796577,"y":0.08313506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.815372,"y":79.674484,"z":0.0},"screenPosition":{"x":0.19134636,"y":0.15988502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.849113,"y":78.11001,"z":0.0},"screenPosition":{"x":0.29481015,"y":0.1272918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.175365,"y":75.65621,"z":0.0},"screenPosition":{"x":0.28801322,"y":0.076171026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.74112,"y":73.98643,"z":0.0},"screenPosition":{"x":0.2553934,"y":0.041383855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.87752,"y":74.097664,"z":0.0},"screenPosition":{"x":0.210885,"y":0.04370129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.686707,"y":75.54481,"z":0.0},"screenPosition":{"x":0.17319359,"y":0.07385017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.16606,"y":77.66344,"z":1.4210855E-14},"screenPosition":{"x":0.14237371,"y":0.11798828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.153496,"y":79.674484,"z":0.0},"screenPosition":{"x":0.1843022,"y":0.15988502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.22057,"y":79.22725,"z":0.0},"screenPosition":{"x":0.24540478,"y":0.15056776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.107887,"y":79.22725,"z":0.0},"screenPosition":{"x":0.24775235,"y":0.15056776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.460785,"y":79.33904,"z":-1.4210855E-14},"screenPosition":{"x":0.21956696,"y":0.1528967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.070496,"y":84.38181,"z":0.0},"screenPosition":{"x":0.3318647,"y":0.2579544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.849052,"y":85.61814,"z":-1.4210855E-14},"screenPosition":{"x":0.33647808,"y":0.28371128},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.51894,"y":88.207855,"z":0.0},"screenPosition":{"x":0.34335545,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.286522,"y":81.8014,"z":0.0},"screenPosition":{"x":0.3273641,"y":0.20419581},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.18392,"y":89.56152,"z":0.0},"screenPosition":{"x":0.35033497,"y":0.36586502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.09189,"y":90.12606,"z":0.0},"screenPosition":{"x":0.33141902,"y":0.37762618},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.51894,"y":88.207855,"z":0.0},"screenPosition":{"x":0.34335545,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.588097,"y":91.02994,"z":0.0},"screenPosition":{"x":0.27941465,"y":0.39645702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.624634,"y":87.419014,"z":1.4210855E-14},"screenPosition":{"x":0.21615349,"y":0.3212295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.677414,"y":86.18059,"z":0.0},"screenPosition":{"x":0.2775539,"y":0.2954289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.593338,"y":88.320595,"z":0.0},"screenPosition":{"x":0.25847214,"y":0.34001243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.72722,"y":83.14692,"z":0.0},"screenPosition":{"x":0.33901626,"y":0.23222746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.295147,"y":80.23378,"z":1.4210855E-14},"screenPosition":{"x":0.30635107,"y":0.17153713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.958637,"y":77.44022,"z":1.4210855E-14},"screenPosition":{"x":0.2925284,"y":0.113338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.411793,"y":81.12928,"z":-1.4210855E-14},"screenPosition":{"x":0.303921,"y":0.19019333},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.175396,"y":82.24972,"z":1.4210855E-14},"screenPosition":{"x":0.32967922,"y":0.21353574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.295147,"y":80.23378,"z":1.4210855E-14},"screenPosition":{"x":0.30635107,"y":0.17153713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.696686,"y":78.44505,"z":1.4210855E-14},"screenPosition":{"x":0.3604857,"y":0.134272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.80477,"y":76.993935,"z":0.0},"screenPosition":{"x":0.3582339,"y":0.10404038},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.621407,"y":80.905334,"z":-1.4210855E-14},"screenPosition":{"x":0.32038733,"y":0.1855278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.429913,"y":78.33336,"z":-1.4210855E-14},"screenPosition":{"x":0.4285435,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.31711,"y":78.22168,"z":0.0},"screenPosition":{"x":0.43089354,"y":0.12961829},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.979816,"y":78.66848,"z":0.0},"screenPosition":{"x":0.4379205,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.448605,"y":80.79338,"z":0.0},"screenPosition":{"x":0.40732074,"y":0.1831954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.558353,"y":79.33904,"z":-1.4210855E-14},"screenPosition":{"x":0.4050343,"y":0.1528967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.89867,"y":80.34568,"z":0.0},"screenPosition":{"x":0.3979444,"y":0.1738683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.979816,"y":78.66848,"z":0.0},"screenPosition":{"x":0.4379205,"y":0.1389267},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.849113,"y":78.11001,"z":0.0},"screenPosition":{"x":0.29481015,"y":0.1272918},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.578556,"y":81.68935,"z":-1.4210855E-14},"screenPosition":{"x":0.38378006,"y":0.20186144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.333195,"y":79.45084,"z":0.0},"screenPosition":{"x":0.4097251,"y":0.15522589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.112392,"y":81.91346,"z":1.4210855E-14},"screenPosition":{"x":0.41432518,"y":0.20653042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.25705,"y":82.24972,"z":0.0},"screenPosition":{"x":0.36964476,"y":0.21353574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.358437,"y":78.33336,"z":0.0},"screenPosition":{"x":0.3675326,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.10846,"y":85.39325,"z":0.0},"screenPosition":{"x":0.28940704,"y":0.279026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.112392,"y":81.91346,"z":1.4210855E-14},"screenPosition":{"x":0.41432518,"y":0.20653042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.498333,"y":82.24972,"z":0.0},"screenPosition":{"x":0.34378472,"y":0.21353574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.851494,"y":86.29311,"z":0.0},"screenPosition":{"x":0.3364272,"y":0.29777315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.496395,"y":81.68935,"z":0.0},"screenPosition":{"x":0.34382507,"y":0.20186144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.832,"y":80.905334,"z":-1.4210855E-14},"screenPosition":{"x":0.3368333,"y":0.1855278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.81075,"y":84.15718,"z":-1.4210855E-14},"screenPosition":{"x":0.3789427,"y":0.25327453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.070496,"y":84.38181,"z":0.0},"screenPosition":{"x":0.3318647,"y":0.2579544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-43.49756,"y":82.025536,"z":0.0},"screenPosition":{"x":0.34380087,"y":0.20886528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.284378,"y":81.24127,"z":0.0},"screenPosition":{"x":0.3274088,"y":0.19252644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.81075,"y":84.15718,"z":-1.4210855E-14},"screenPosition":{"x":0.3789427,"y":0.25327453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.42228,"y":77.44022,"z":0.0},"screenPosition":{"x":0.26203582,"y":0.113338},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-41.349365,"y":80.23378,"z":0.0},"screenPosition":{"x":0.38855487,"y":0.17153713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.711887,"y":83.37134,"z":1.4210855E-14},"screenPosition":{"x":0.360169,"y":0.23690285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.9902,"y":81.0173,"z":0.0},"screenPosition":{"x":0.27103752,"y":0.18786043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.685127,"y":84.38181,"z":1.4210855E-14},"screenPosition":{"x":0.25655982,"y":0.2579544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.657963,"y":82.24972,"z":0.0},"screenPosition":{"x":0.2779591,"y":0.21353574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.94911,"y":80.5695,"z":0.0},"screenPosition":{"x":0.16772687,"y":0.17853135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.135044,"y":81.35327,"z":0.0},"screenPosition":{"x":0.22635327,"y":0.19485983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.15352,"y":76.10193,"z":0.0},"screenPosition":{"x":0.14263506,"y":0.08545689},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.662865,"y":73.8752,"z":0.0},"screenPosition":{"x":0.19452366,"y":0.039066665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.687332,"y":77.44022,"z":0.0},"screenPosition":{"x":0.19401391,"y":0.113338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.788067,"y":77.66344,"z":0.0},"screenPosition":{"x":0.21274863,"y":0.11798828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.0775,"y":78.78021,"z":0.0},"screenPosition":{"x":0.29005212,"y":0.14125443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.892426,"y":81.0173,"z":0.0},"screenPosition":{"x":0.25224113,"y":0.18786043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.58773,"y":85.280815,"z":0.0},"screenPosition":{"x":0.38358897,"y":0.27668372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.398533,"y":78.55676,"z":0.0},"screenPosition":{"x":0.13753055,"y":0.13659923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.489243,"y":75.87904,"z":0.0},"screenPosition":{"x":0.13564081,"y":0.08081347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.890568,"y":80.681435,"z":0.0},"screenPosition":{"x":0.25227985,"y":0.18086326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.527298,"y":73.8752,"z":0.0},"screenPosition":{"x":0.23901466,"y":0.039066665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.95713,"y":74.542725,"z":0.0},"screenPosition":{"x":0.27172646,"y":0.05297347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.069656,"y":77.10549,"z":0.0},"screenPosition":{"x":0.29021546,"y":0.106364414},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-48.878548,"y":76.213394,"z":0.0},"screenPosition":{"x":0.2316969,"y":0.08777897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.425785,"y":73.763985,"z":0.0},"screenPosition":{"x":0.22029616,"y":0.036749717},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.01335,"y":75.767624,"z":0.0},"screenPosition":{"x":0.18722187,"y":0.07849213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.180115,"y":76.65935,"z":0.0},"screenPosition":{"x":0.28791428,"y":0.09706973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.516117,"y":76.32486,"z":-1.4210855E-14},"screenPosition":{"x":0.28091422,"y":0.090101294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.180115,"y":76.65935,"z":0.0},"screenPosition":{"x":0.28791428,"y":0.09706973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.314987,"y":78.44505,"z":1.4210855E-14},"screenPosition":{"x":0.26427114,"y":0.134272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.426483,"y":73.8752,"z":0.0},"screenPosition":{"x":0.2202816,"y":0.039066665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.95713,"y":74.542725,"z":0.0},"screenPosition":{"x":0.27172646,"y":0.05297347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.180115,"y":76.65935,"z":0.0},"screenPosition":{"x":0.28791428,"y":0.09706973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.515682,"y":79.11547,"z":-1.4210855E-14},"screenPosition":{"x":0.30175662,"y":0.14823905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.95713,"y":74.542725,"z":0.0},"screenPosition":{"x":0.27172646,"y":0.05297347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.524307,"y":77.998344,"z":0.0},"screenPosition":{"x":0.28074357,"y":0.12496555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.175274,"y":78.55676,"z":0.0},"screenPosition":{"x":0.30884847,"y":0.13659923},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.032192,"y":74.097664,"z":0.0},"screenPosition":{"x":0.33266267,"y":0.04370129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.95713,"y":74.542725,"z":0.0},"screenPosition":{"x":0.27172646,"y":0.05297347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.53727,"y":77.886696,"z":0.0},"screenPosition":{"x":0.25964025,"y":0.122639544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.976017,"y":84.83122,"z":0.0},"screenPosition":{"x":0.31299964,"y":0.2673171},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.93588,"y":80.79338,"z":1.4210855E-14},"screenPosition":{"x":0.18883584,"y":0.1831954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.977417,"y":85.1684,"z":0.0},"screenPosition":{"x":0.3129705,"y":0.27434167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.873177,"y":87.30637,"z":0.0},"screenPosition":{"x":0.31514215,"y":0.31888273},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-44.53916,"y":88.65889,"z":0.0},"screenPosition":{"x":0.3221008,"y":0.34706014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.27917,"y":93.17973,"z":0.0},"screenPosition":{"x":0.26501724,"y":0.4412444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.33486,"y":89.44865,"z":0.0},"screenPosition":{"x":0.30552372,"y":0.36351356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.05722,"y":91.59525,"z":-1.4210855E-14},"screenPosition":{"x":0.37380794,"y":0.4082344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-46.925743,"y":90.5779,"z":0.0},"screenPosition":{"x":0.27238032,"y":0.3870396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-47.149403,"y":90.01312,"z":1.4210855E-14},"screenPosition":{"x":0.26772076,"y":0.37527347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.09192,"y":92.840004,"z":1.4210855E-14},"screenPosition":{"x":0.22725171,"y":0.43416667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.777504,"y":90.5779,"z":0.0},"screenPosition":{"x":0.19213536,"y":0.3870396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.486336,"y":91.821465,"z":0.0},"screenPosition":{"x":0.15653469,"y":0.41294712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.633198,"y":88.771675,"z":0.0},"screenPosition":{"x":0.21597508,"y":0.34940988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.9866,"y":90.35195,"z":0.0},"screenPosition":{"x":0.0836125,"y":0.38233238},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.0128,"y":89.11011,"z":0.0},"screenPosition":{"x":0.041400056,"y":0.3564606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.733677,"y":89.56152,"z":0.0},"screenPosition":{"x":0.10971503,"y":0.36586502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.390472,"y":83.48357,"z":0.0},"screenPosition":{"x":0.054365143,"y":0.23924093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.251247,"y":84.15718,"z":0.0},"screenPosition":{"x":0.09893231,"y":0.25327453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.98002,"y":84.71885,"z":0.0},"screenPosition":{"x":0.16708298,"y":0.26497602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.7535,"y":87.081116,"z":0.0},"screenPosition":{"x":0.19263536,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.88298,"y":89.44865,"z":0.0},"screenPosition":{"x":0.18993793,"y":0.36351356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.24444,"y":87.419014,"z":-1.4210855E-14},"screenPosition":{"x":0.14074089,"y":0.3212295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.618034,"y":94.19957,"z":0.0},"screenPosition":{"x":0.15379095,"y":0.46249104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.00511,"y":94.653145,"z":0.0},"screenPosition":{"x":0.104060136,"y":0.47194052},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.33927,"y":91.70835,"z":0.0},"screenPosition":{"x":0.07626519,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.504673,"y":91.59525,"z":0.0},"screenPosition":{"x":0.13531934,"y":0.4082344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.83879,"y":93.40628,"z":1.4210855E-14},"screenPosition":{"x":0.14919189,"y":0.4459641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.822845,"y":94.086205,"z":1.4210855E-14},"screenPosition":{"x":0.1703574,"y":0.4601293},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.33927,"y":91.70835,"z":0.0},"screenPosition":{"x":0.07626519,"y":0.41059062},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.54548,"y":99.54129,"z":0.0},"screenPosition":{"x":0.1553025,"y":0.57377684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-51.944706,"y":95.22038,"z":0.0},"screenPosition":{"x":0.16781864,"y":0.483758},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.47166,"y":98.63017,"z":-1.4210855E-14},"screenPosition":{"x":0.11517371,"y":0.5547952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.667553,"y":94.993454,"z":1.4210855E-14},"screenPosition":{"x":0.111092634,"y":0.47903025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.739754,"y":92.61357,"z":1.4210855E-14},"screenPosition":{"x":0.13042183,"y":0.42944947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.14584,"y":100.45318,"z":-1.4210855E-14},"screenPosition":{"x":0.12196165,"y":0.5927746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.584396,"y":98.516335,"z":-1.4210855E-14},"screenPosition":{"x":0.11282508,"y":0.55242366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.893215,"y":92.50038,"z":0.0},"screenPosition":{"x":0.085558034,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.74162,"y":92.840004,"z":0.0},"screenPosition":{"x":0.13038294,"y":0.43416667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.86278,"y":91.36909,"z":0.0},"screenPosition":{"x":0.10702542,"y":0.4035227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.63541,"y":89.11011,"z":0.0},"screenPosition":{"x":0.09092894,"y":0.3564606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-58.0128,"y":89.11011,"z":0.0},"screenPosition":{"x":0.041400056,"y":0.3564606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-57.649246,"y":86.74333,"z":1.4210855E-14},"screenPosition":{"x":0.048974063,"y":0.30715272},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.214214,"y":90.46492,"z":1.4210855E-14},"screenPosition":{"x":0.07887055,"y":0.38468587},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-52.921062,"y":89.44865,"z":-1.4210855E-14},"screenPosition":{"x":0.14747785,"y":0.36351356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.92929,"y":86.06808,"z":0.0},"screenPosition":{"x":0.10563979,"y":0.2930849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.95405,"y":86.85591,"z":0.0},"screenPosition":{"x":0.084290646,"y":0.30949822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.71027,"y":84.9436,"z":1.4210855E-14},"screenPosition":{"x":0.089369394,"y":0.26965836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-56.86534,"y":87.53167,"z":0.0},"screenPosition":{"x":0.06530542,"y":0.32357648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.48536,"y":89.222946,"z":0.0},"screenPosition":{"x":0.13572165,"y":0.35881132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-54.82316,"y":86.85591,"z":0.0},"screenPosition":{"x":0.10785085,"y":0.30949822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-55.71027,"y":84.9436,"z":1.4210855E-14},"screenPosition":{"x":0.089369394,"y":0.26965836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.90717,"y":85.50569,"z":-1.4210855E-14},"screenPosition":{"x":0.12693398,"y":0.28136852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-53.21733,"y":84.044876,"z":-1.4210855E-14},"screenPosition":{"x":0.14130563,"y":0.250935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-49.717644,"y":84.269485,"z":1.4210855E-14},"screenPosition":{"x":0.21421577,"y":0.25561434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-45.98869,"y":83.932594,"z":0.0},"screenPosition":{"x":0.2919023,"y":0.24859568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-50.180573,"y":85.955574,"z":0.0},"screenPosition":{"x":0.20457141,"y":0.29074112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.84635,"y":90.239,"z":0.0},"screenPosition":{"x":0.35736772,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.468388,"y":90.5779,"z":0.0},"screenPosition":{"x":0.4069086,"y":0.3870396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.879776,"y":88.54611,"z":0.0},"screenPosition":{"x":0.4400047,"y":0.34471068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.019957,"y":92.50038,"z":0.0},"screenPosition":{"x":0.6454176,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.21583,"y":92.160866,"z":0.0},"screenPosition":{"x":0.55800354,"y":0.42001805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.669315,"y":92.160866,"z":1.4210855E-14},"screenPosition":{"x":0.5485559,"y":0.42001805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.759632,"y":93.85951,"z":0.0},"screenPosition":{"x":0.5675076,"y":0.45540655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.411625,"y":93.972855,"z":0.0},"screenPosition":{"x":0.47059113,"y":0.45776778},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.388296,"y":89.67441,"z":0.0},"screenPosition":{"x":0.61691046,"y":0.36821675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.709538,"y":94.31294,"z":0.0},"screenPosition":{"x":0.5060513,"y":0.46485302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.480606,"y":100.45318,"z":0.0},"screenPosition":{"x":0.5108207,"y":0.5927746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.595177,"y":97.60609,"z":0.0},"screenPosition":{"x":0.5084338,"y":0.5334602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.490446,"y":103.536575,"z":0.0},"screenPosition":{"x":0.593949,"y":0.657012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.435997,"y":104.45188,"z":0.0},"screenPosition":{"x":0.63675004,"y":0.6760809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.468004,"y":102.279305,"z":1.4210855E-14},"screenPosition":{"x":0.61524993,"y":0.63081884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.559195,"y":101.479996,"z":0.0},"screenPosition":{"x":0.63418347,"y":0.6141665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.965492,"y":101.36585,"z":0.0},"screenPosition":{"x":0.6673856,"y":0.61178863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.851713,"y":95.67439,"z":0.0},"screenPosition":{"x":0.6905893,"y":0.49321654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-26.02066,"y":103.30787,"z":-1.4210855E-14},"screenPosition":{"x":0.7079029,"y":0.6522473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.305172,"y":94.19957,"z":1.4210855E-14},"screenPosition":{"x":0.5769756,"y":0.46249104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.024158,"y":98.174904,"z":0.0},"screenPosition":{"x":0.6244967,"y":0.54531044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.480738,"y":97.49236,"z":-1.4210855E-14},"screenPosition":{"x":0.61498463,"y":0.5310909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.316048,"y":102.05087,"z":0.0},"screenPosition":{"x":0.5559157,"y":0.6260598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.83861,"y":100.45318,"z":0.0},"screenPosition":{"x":0.5866956,"y":0.5927746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.295326,"y":104.56635,"z":0.0},"screenPosition":{"x":0.66051406,"y":0.6784656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-30.35812,"y":100.79534,"z":0.0},"screenPosition":{"x":0.61753917,"y":0.599903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.896654,"y":100.33915,"z":0.0},"screenPosition":{"x":0.7313197,"y":0.590399},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.62482,"y":101.13761,"z":0.0},"screenPosition":{"x":0.6744829,"y":0.6070336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.868883,"y":96.92392,"z":0.0},"screenPosition":{"x":0.66939825,"y":0.51924825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.61438,"y":98.85788,"z":0.0},"screenPosition":{"x":0.59136707,"y":0.5595391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.121912,"y":100.79534,"z":0.0},"screenPosition":{"x":0.7266268,"y":0.599903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.251451,"y":97.719826,"z":1.4210855E-14},"screenPosition":{"x":0.7239281,"y":0.5358298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.877546,"y":101.02351,"z":1.4210855E-14},"screenPosition":{"x":0.64838445,"y":0.60465646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.871325,"y":102.85061,"z":0.0},"screenPosition":{"x":0.6485141,"y":0.642721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.960243,"y":102.73632,"z":0.0},"screenPosition":{"x":0.66749495,"y":0.6403401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.37647,"y":103.536575,"z":-1.4210855E-14},"screenPosition":{"x":0.59632355,"y":0.657012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.319778,"y":105.13888,"z":0.0},"screenPosition":{"x":0.63917124,"y":0.6903932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-29.321972,"y":104.45188,"z":0.0},"screenPosition":{"x":0.6391256,"y":0.6760809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.337452,"y":103.193535,"z":0.0},"screenPosition":{"x":0.7221364,"y":0.6498654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.994385,"y":103.42222,"z":0.0},"screenPosition":{"x":0.72928363,"y":0.6546295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-28.637018,"y":104.68083,"z":0.0},"screenPosition":{"x":0.6533955,"y":0.6808506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-27.151163,"y":105.48254,"z":-1.4210855E-14},"screenPosition":{"x":0.6843508,"y":0.69755286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.213558,"y":105.13888,"z":0.0},"screenPosition":{"x":0.72471756,"y":0.6903932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-25.227581,"y":102.39354,"z":0.0},"screenPosition":{"x":0.72442544,"y":0.6331988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.651503,"y":113.53271,"z":0.0},"screenPosition":{"x":0.7780937,"y":0.8652647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-22.434267,"y":111.68734,"z":0.0},"screenPosition":{"x":0.7826194,"y":0.82681966},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-39.80645,"y":101.02351,"z":0.0},"screenPosition":{"x":0.42069897,"y":0.60465646},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":-20.799593,"y":116.3067,"z":1.4210855E-14},"screenPosition":{"x":0.8166751,"y":0.92305624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.35116,"y":114.91881,"z":0.0},"screenPosition":{"x":0.8260175,"y":0.89414185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.936218,"y":117.81226,"z":0.0},"screenPosition":{"x":0.79299545,"y":0.9544222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-17.915556,"y":118.39189,"z":-1.4210855E-14},"screenPosition":{"x":0.87675923,"y":0.9664977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.076084,"y":116.76973,"z":1.4210855E-14},"screenPosition":{"x":0.85258156,"y":0.9327026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.154844,"y":114.68767,"z":0.0},"screenPosition":{"x":0.8092741,"y":0.88932645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-20.94041,"y":112.60963,"z":1.4210855E-14},"screenPosition":{"x":0.81374145,"y":0.84603393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-19.690191,"y":111.456894,"z":0.0},"screenPosition":{"x":0.83978766,"y":0.8220187},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-16.00894,"y":113.64815,"z":0.0},"screenPosition":{"x":0.9164804,"y":0.86766976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-18.976175,"y":114.91881,"z":0.0},"screenPosition":{"x":0.854663,"y":0.89414185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-21.613123,"y":114.68767,"z":1.4210855E-14},"screenPosition":{"x":0.7997266,"y":0.88932645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.91188,"y":99.883156,"z":0.0},"screenPosition":{"x":0.5226692,"y":0.5808991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.27666,"y":109.96019,"z":1.4210855E-14},"screenPosition":{"x":0.57756954,"y":0.7908372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.936876,"y":108.35068,"z":1.4210855E-14},"screenPosition":{"x":0.58464843,"y":0.75730574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-24.755484,"y":105.48254,"z":1.4210855E-14},"screenPosition":{"x":0.7342608,"y":0.69755286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.048843,"y":109.15513,"z":1.4210855E-14},"screenPosition":{"x":0.41564906,"y":0.7740652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.848522,"y":109.04017,"z":1.4210855E-14},"screenPosition":{"x":0.39898914,"y":0.7716702},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.24727,"y":113.87907,"z":0.0},"screenPosition":{"x":0.5156819,"y":0.8724805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.971283,"y":112.840324,"z":0.0},"screenPosition":{"x":0.39643162,"y":0.8508401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.393707,"y":110.190315,"z":0.0},"screenPosition":{"x":0.4084644,"y":0.7956315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.085228,"y":112.60963,"z":0.0},"screenPosition":{"x":0.39405778,"y":0.84603393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.53817,"y":114.45657,"z":0.0},"screenPosition":{"x":0.46795478,"y":0.884512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.32355,"y":116.538185,"z":-1.4210855E-14},"screenPosition":{"x":0.38909268,"y":0.9278789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.393707,"y":110.190315,"z":0.0},"screenPosition":{"x":0.4084644,"y":0.7956315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.7983,"y":114.45657,"z":0.0},"screenPosition":{"x":0.44170204,"y":0.884512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.704388,"y":118.50785,"z":-1.4210855E-14},"screenPosition":{"x":0.50615853,"y":0.96891356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.392807,"y":116.42244,"z":0.0},"screenPosition":{"x":0.49181655,"y":0.92546743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.194443,"y":114.34105,"z":0.0},"screenPosition":{"x":0.47511578,"y":0.88210523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.39135,"y":102.73632,"z":0.0},"screenPosition":{"x":0.4918469,"y":0.6403401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.971024,"y":112.72497,"z":0.0},"screenPosition":{"x":0.396437,"y":0.8484369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.392807,"y":116.42244,"z":0.0},"screenPosition":{"x":0.49181655,"y":0.92546743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.91463,"y":115.84387,"z":1.4210855E-14},"screenPosition":{"x":0.4392785,"y":0.91341394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.278248,"y":118.39189,"z":0.0},"screenPosition":{"x":0.49420315,"y":0.9664977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.971024,"y":112.72497,"z":0.0},"screenPosition":{"x":0.396437,"y":0.8484369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.421635,"y":92.50038,"z":1.4210855E-14},"screenPosition":{"x":0.57454926,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.729523,"y":112.72497,"z":0.0},"screenPosition":{"x":0.56813496,"y":0.8484369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.76793,"y":105.36797,"z":1.4210855E-14},"screenPosition":{"x":0.54650146,"y":0.69516605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.704388,"y":118.50785,"z":-1.4210855E-14},"screenPosition":{"x":0.50615853,"y":0.96891356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-31.236454,"y":114.91881,"z":0.0},"screenPosition":{"x":0.59924054,"y":0.89414185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.72934,"y":112.840324,"z":0.0},"screenPosition":{"x":0.5681388,"y":0.8508401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.706722,"y":107.54682,"z":-1.4210855E-14},"screenPosition":{"x":0.50610995,"y":0.7405588},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.187683,"y":100.225136,"z":1.4210855E-14},"screenPosition":{"x":0.4752566,"y":0.58802366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.302456,"y":102.05087,"z":0.0},"screenPosition":{"x":0.47286552,"y":0.6260598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.188175,"y":101.251724,"z":-1.4210855E-14},"screenPosition":{"x":0.47524634,"y":0.609411},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.328224,"y":102.73632,"z":0.0},"screenPosition":{"x":0.45149532,"y":0.6403401},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-32.988583,"y":92.50038,"z":1.4210855E-14},"screenPosition":{"x":0.5627379,"y":0.42709124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.61764,"y":95.33387,"z":-1.4210855E-14},"screenPosition":{"x":0.48713246,"y":0.48612225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-35.93663,"y":93.17973,"z":0.0},"screenPosition":{"x":0.5013202,"y":0.4412444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.616966,"y":92.160866,"z":1.4210855E-14},"screenPosition":{"x":0.48714653,"y":0.42001805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.29587,"y":89.67441,"z":1.4210855E-14},"screenPosition":{"x":0.4730027,"y":0.36821675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-34.690987,"y":90.239,"z":0.0},"screenPosition":{"x":0.52727115,"y":0.37997916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.502964,"y":88.207855,"z":0.0},"screenPosition":{"x":0.4895216,"y":0.3376637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.860355,"y":87.53167,"z":0.0},"screenPosition":{"x":0.46124262,"y":0.32357648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.670727,"y":87.75702,"z":0.0},"screenPosition":{"x":0.42352656,"y":0.32827124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.673702,"y":89.56152,"z":0.0},"screenPosition":{"x":0.42346454,"y":0.36586502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-40.914726,"y":87.53167,"z":0.0},"screenPosition":{"x":0.39760983,"y":0.32357648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-36.05036,"y":87.419014,"z":1.4210855E-14},"screenPosition":{"x":0.49895078,"y":0.3212295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.81973,"y":87.53167,"z":0.0},"screenPosition":{"x":0.3787557,"y":0.32357648},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.27093,"y":87.081116,"z":1.4210855E-14},"screenPosition":{"x":0.3693556,"y":0.31418997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.820328,"y":87.75702,"z":-1.4210855E-14},"screenPosition":{"x":0.3787432,"y":0.32827124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.664787,"y":84.15718,"z":0.0},"screenPosition":{"x":0.42365026,"y":0.25327453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.927353,"y":85.50569,"z":0.0},"screenPosition":{"x":0.37651345,"y":0.28136852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-42.035397,"y":83.70805,"z":0.0},"screenPosition":{"x":0.37426254,"y":0.24391781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-41.81075,"y":84.15718,"z":-1.4210855E-14},"screenPosition":{"x":0.3789427,"y":0.25327453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.886345,"y":81.68935,"z":-1.4210855E-14},"screenPosition":{"x":0.41903445,"y":0.20186144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-39.204,"y":77.886696,"z":0.0},"screenPosition":{"x":0.43325004,"y":0.122639544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.851055,"y":75.87904,"z":0.0},"screenPosition":{"x":0.46143633,"y":0.08081347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.062763,"y":74.097664,"z":-1.4210855E-14},"screenPosition":{"x":0.4778591,"y":0.04370129},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-33.68759,"y":76.547844,"z":0.0},"screenPosition":{"x":0.5481752,"y":0.09474668},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-37.74038,"y":78.33336,"z":0.0},"screenPosition":{"x":0.4637421,"y":0.13194501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":-38.41441,"y":76.65935,"z":0.0},"screenPosition":{"x":0.4496998,"y":0.09706973},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20191016-061503/brain-CBDD64-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[1.0,0.0,0.0,0.0,0.0,0.9987891592190364,0.04919568503974991,0.0,0.0,-0.04919568503974991,0.9987891592190364,0.0,-36.16348147176235,93.68458371865826,105.03011742241551,1.0]},"baseImage":"20191016-061503/base.webp","version":0,"savedAt":1.571206755911E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/Decom2019/round1/20191016-062902-v0.json- b/data/mapping/Decom2019/round1/20191016-062902-v0.json- new file mode 100644 index 0000000000..7cb907ec85 --- /dev/null +++ b/data/mapping/Decom2019/round1/20191016-062902-v0.json- @@ -0,0 +1 @@ +{"startedAt":1.571207342175E12,"surfaces":[{"brainId":"CAF9C0","panelName":"Panel 3","pixels":[{"modelPosition":{"x":143.92274,"y":83.282425,"z":0.0},"screenPosition":{"x":0.49839047,"y":0.49003366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.9243,"y":53.262047,"z":-1.4210855E-14},"screenPosition":{"x":0.39425614,"y":0.07308397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.33537,"y":53.82223,"z":0.0},"screenPosition":{"x":0.381987,"y":0.08086432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.75923,"y":60.561646,"z":0.0},"screenPosition":{"x":0.057483982,"y":0.17446733},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.902306,"y":62.224987,"z":0.0},"screenPosition":{"x":0.1021313,"y":0.19756927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.26542,"y":55.925003,"z":-1.4210855E-14},"screenPosition":{"x":0.026362909,"y":0.11006949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.51021,"y":61.88028,"z":-1.4210855E-14},"screenPosition":{"x":0.19812943,"y":0.19278166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.73027,"y":81.782845,"z":1.4210855E-14},"screenPosition":{"x":0.49438074,"y":0.46920612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.24129,"y":62.46343,"z":0.0},"screenPosition":{"x":0.109193474,"y":0.20088094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.28094,"y":63.664253,"z":-1.4210855E-14},"screenPosition":{"x":0.15168627,"y":0.21755907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.07528,"y":52.52079,"z":0.0},"screenPosition":{"x":0.064068265,"y":0.06278876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.52116,"y":59.630917,"z":0.0},"screenPosition":{"x":0.2400241,"y":0.16154054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.34593,"y":57.44187,"z":0.0},"screenPosition":{"x":0.23637354,"y":0.13113713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.27728,"y":54.19565,"z":0.0},"screenPosition":{"x":0.21411,"y":0.08605067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.82992,"y":63.30803,"z":0.0},"screenPosition":{"x":0.14228998,"y":0.2126115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.53633,"y":64.04059,"z":-1.4210855E-14},"screenPosition":{"x":0.17784032,"y":0.22278598},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.60929,"y":60.14798,"z":0.0},"screenPosition":{"x":0.096026905,"y":0.16872193},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.65666,"y":74.41701,"z":-1.4210855E-14},"screenPosition":{"x":0.20118038,"y":0.36690292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.45245,"y":65.583275,"z":-1.4210855E-14},"screenPosition":{"x":0.21775956,"y":0.24421214},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.45476,"y":68.27793,"z":0.0},"screenPosition":{"x":0.25947416,"y":0.28163797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.11891,"y":71.11909,"z":0.0},"screenPosition":{"x":0.23164397,"y":0.32109845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.18324,"y":67.571205,"z":-1.4210855E-14},"screenPosition":{"x":0.14965098,"y":0.27182233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.5627,"y":73.9947,"z":-1.4210855E-14},"screenPosition":{"x":0.13672285,"y":0.36103746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.90541,"y":69.90387,"z":0.0},"screenPosition":{"x":0.0813628,"y":0.30422044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.59117,"y":69.651085,"z":0.0},"screenPosition":{"x":0.15814933,"y":0.30070955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.7834,"y":63.356876,"z":-1.4210855E-14},"screenPosition":{"x":0.18298742,"y":0.21328993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.2623,"y":66.77835,"z":0.0},"screenPosition":{"x":0.2554644,"y":0.26081043},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.57596,"y":69.840706,"z":-1.4210855E-14},"screenPosition":{"x":0.22033261,"y":0.30334315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.1485,"y":65.75563,"z":0.0},"screenPosition":{"x":0.1697605,"y":0.24660593},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.60709,"y":71.52133,"z":0.0},"screenPosition":{"x":0.47098082,"y":0.3266852},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.95115,"y":60.27151,"z":1.4210855E-14},"screenPosition":{"x":0.103148945,"y":0.17043763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.09106,"y":63.454544,"z":-1.4210855E-14},"screenPosition":{"x":0.16856375,"y":0.21464646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.23703,"y":60.403683,"z":1.4210855E-14},"screenPosition":{"x":0.21327144,"y":0.1722734},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.38151,"y":59.642387,"z":-1.4210855E-14},"screenPosition":{"x":0.15378143,"y":0.16169983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.111725,"y":64.439896,"z":0.0},"screenPosition":{"x":0.12732756,"y":0.22833183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.503265,"y":62.99488,"z":-1.4210855E-14},"screenPosition":{"x":0.07298466,"y":0.20826222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.0,"y":61.51123,"z":1.0},"screenPosition":{"x":0.0,"y":0.18765597},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.57307,"y":74.55491,"z":0.0},"screenPosition":{"x":0.22027226,"y":0.36881813},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.08241,"y":68.39857,"z":-1.4210855E-14},"screenPosition":{"x":0.16838367,"y":0.28331342},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.53313,"y":74.758865,"z":-1.4210855E-14},"screenPosition":{"x":0.19860682,"y":0.37165093},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.61043,"y":73.06107,"z":0.0},"screenPosition":{"x":0.22105046,"y":0.34807044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.33463,"y":74.89389,"z":-1.4210855E-14},"screenPosition":{"x":0.21530473,"y":0.37352628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.17633,"y":78.01946,"z":0.0},"screenPosition":{"x":0.23284021,"y":0.41693693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.54514,"y":80.68823,"z":-1.4210855E-14},"screenPosition":{"x":0.15719055,"y":0.45400327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.62558,"y":82.07003,"z":-1.4210855E-14},"screenPosition":{"x":0.15886617,"y":0.47319493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.37564,"y":82.86866,"z":0.0},"screenPosition":{"x":0.15365921,"y":0.48428693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.43651,"y":86.84455,"z":-1.4210855E-14},"screenPosition":{"x":0.113260575,"y":0.5395076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.5707,"y":85.65812,"z":0.0},"screenPosition":{"x":0.17855616,"y":0.5230294},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.38769,"y":84.19874,"z":0.0},"screenPosition":{"x":0.11224343,"y":0.50276023},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.53018,"y":88.671646,"z":0.0},"screenPosition":{"x":0.19854547,"y":0.564884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.24263,"y":87.76961,"z":0.0},"screenPosition":{"x":0.21338816,"y":0.55235565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.530754,"y":85.862076,"z":-1.4210855E-14},"screenPosition":{"x":0.15689074,"y":0.5258622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.22855,"y":86.93937,"z":-1.4210855E-14},"screenPosition":{"x":0.19226149,"y":0.5408246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.52156,"y":89.01638,"z":-1.4210855E-14},"screenPosition":{"x":0.19836588,"y":0.5696719},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.105,"y":91.88052,"z":-1.4210855E-14},"screenPosition":{"x":0.18968745,"y":0.60945165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.44194,"y":92.618805,"z":0.0},"screenPosition":{"x":0.13420716,"y":0.6197056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.80276,"y":97.557106,"z":0.0},"screenPosition":{"x":0.22505769,"y":0.6882931},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.50482,"y":100.694145,"z":-1.4210855E-14},"screenPosition":{"x":0.1563505,"y":0.7318631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.1886,"y":105.67557,"z":0.0},"screenPosition":{"x":0.37892908,"y":0.80104953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.03777,"y":100.1426,"z":0.0},"screenPosition":{"x":0.2716201,"y":0.7242028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.52611,"y":103.60428,"z":0.0},"screenPosition":{"x":0.28179407,"y":0.7722817},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.78984,"y":105.04067,"z":0.0},"screenPosition":{"x":0.32895508,"y":0.79223156},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.40979,"y":106.02605,"z":0.0},"screenPosition":{"x":0.3835374,"y":0.80591726},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.22511,"y":103.7968,"z":-1.4210855E-14},"screenPosition":{"x":0.44218987,"y":0.7749555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.3331,"y":100.31498,"z":0.0},"screenPosition":{"x":0.31943956,"y":0.72659695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.97687,"y":100.766,"z":1.4210855E-14},"screenPosition":{"x":0.31201822,"y":0.7328611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.79358,"y":100.71141,"z":0.0},"screenPosition":{"x":0.26653284,"y":0.7321029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.44133,"y":104.62696,"z":0.0},"screenPosition":{"x":0.1758609,"y":0.7864855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.700424,"y":105.27332,"z":0.0},"screenPosition":{"x":0.13959222,"y":0.7954628},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.99346,"y":102.75104,"z":0.0},"screenPosition":{"x":0.1456971,"y":0.76043105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.23245,"y":104.201775,"z":0.0},"screenPosition":{"x":0.1090094,"y":0.78058016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.66961,"y":116.12085,"z":-1.4210855E-14},"screenPosition":{"x":0.07645015,"y":0.9461229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.32174,"y":113.03263,"z":0.0},"screenPosition":{"x":0.09003625,"y":0.903231},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.1037,"y":111.16246,"z":0.0},"screenPosition":{"x":0.0646604,"y":0.8772564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.55961,"y":115.50322,"z":0.0},"screenPosition":{"x":0.1366585,"y":0.9375447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.554695,"y":116.11797,"z":0.0},"screenPosition":{"x":0.07405618,"y":0.946083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.10516,"y":113.47218,"z":0.0},"screenPosition":{"x":0.16885757,"y":0.9093359},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.18586,"y":118.04849,"z":0.0},"screenPosition":{"x":0.14970535,"y":0.9728957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.51567,"y":116.84194,"z":-1.4210855E-14},"screenPosition":{"x":0.19824317,"y":0.9561381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.71938,"y":114.68738,"z":0.0},"screenPosition":{"x":0.22332022,"y":0.92621356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.58437,"y":110.88959,"z":-1.4210855E-14},"screenPosition":{"x":0.22050771,"y":0.8734665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.55935,"y":112.308716,"z":-1.4210855E-14},"screenPosition":{"x":0.15748636,"y":0.8931766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.778534,"y":108.559746,"z":0.0},"screenPosition":{"x":0.09955276,"y":0.8411076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.56047,"y":111.288864,"z":0.0},"screenPosition":{"x":0.0741764,"y":0.879012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.344986,"y":115.30785,"z":-1.4210855E-14},"screenPosition":{"x":0.06968728,"y":0.9348313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.352776,"y":114.57819,"z":0.0},"screenPosition":{"x":0.13234946,"y":0.9246971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.49639,"y":118.03125,"z":0.0},"screenPosition":{"x":0.13534154,"y":0.97265625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.0589,"y":116.71554,"z":0.0},"screenPosition":{"x":0.18872716,"y":0.9543825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.9377,"y":115.15276,"z":0.0},"screenPosition":{"x":0.22786869,"y":0.9326773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.55305,"y":110.74882,"z":-1.4210855E-14},"screenPosition":{"x":0.19902186,"y":0.87151134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.65184,"y":110.4213,"z":0.0},"screenPosition":{"x":0.1177467,"y":0.86696255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.89459,"y":116.87642,"z":0.0},"screenPosition":{"x":0.22697078,"y":0.956617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.8075,"y":115.20444,"z":-1.4210855E-14},"screenPosition":{"x":0.07932301,"y":0.93339497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.25824,"y":116.96545,"z":0.0},"screenPosition":{"x":0.10954666,"y":0.95785344},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.54208,"y":117.597466,"z":0.0},"screenPosition":{"x":0.1571267,"y":0.96663153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.12442,"y":116.88217,"z":0.0},"screenPosition":{"x":0.23175871,"y":0.9566968},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.75902,"y":115.88821,"z":0.0},"screenPosition":{"x":0.265813,"y":0.9428917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.90898,"y":111.70258,"z":0.0},"screenPosition":{"x":0.22727057,"y":0.88475806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.98228,"y":111.13955,"z":0.0},"screenPosition":{"x":0.3329643,"y":0.87693816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.12476,"y":106.2788,"z":-1.4210855E-14},"screenPosition":{"x":0.21093234,"y":0.80942786},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.50943,"y":106.083466,"z":0.0},"screenPosition":{"x":0.23977967,"y":0.8067148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.73433,"y":106.703964,"z":0.0},"screenPosition":{"x":0.18196529,"y":0.81533283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.4996,"y":107.31297,"z":0.0},"screenPosition":{"x":0.114575036,"y":0.8237913},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.35802,"y":103.36007,"z":-1.4210855E-14},"screenPosition":{"x":0.1741254,"y":0.76888984},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.97734,"y":102.42065,"z":0.0},"screenPosition":{"x":0.06202798,"y":0.7558423},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.123314,"y":99.36979,"z":0.0},"screenPosition":{"x":0.106735654,"y":0.71346927},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.2144,"y":99.90701,"z":0.0},"screenPosition":{"x":0.17113332,"y":0.7209307},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.1877,"y":100.55627,"z":-1.4210855E-14},"screenPosition":{"x":0.23307715,"y":0.72994816},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.97455,"y":102.67063,"z":0.0},"screenPosition":{"x":0.27030313,"y":0.7593143},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.45113,"y":107.996735,"z":0.0},"screenPosition":{"x":0.30106503,"y":0.833288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.20575,"y":104.85103,"z":0.0},"screenPosition":{"x":0.17095324,"y":0.78959763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.608505,"y":104.351166,"z":0.0},"screenPosition":{"x":0.13767715,"y":0.78265506},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.12849,"y":101.94954,"z":0.0},"screenPosition":{"x":0.14851011,"y":0.7492991},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.582954,"y":99.38128,"z":0.0},"screenPosition":{"x":0.11631152,"y":0.7136289},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.413475,"y":96.96242,"z":0.0},"screenPosition":{"x":0.11278068,"y":0.68003356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.335365,"y":93.67599,"z":0.0},"screenPosition":{"x":0.15282014,"y":0.6343887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.56668,"y":91.392166,"z":0.0},"screenPosition":{"x":0.26180577,"y":0.602669},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.62297,"y":99.31239,"z":-1.4210855E-14},"screenPosition":{"x":0.34631196,"y":0.7126721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.62352,"y":101.10211,"z":0.0},"screenPosition":{"x":0.3046567,"y":0.73752934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.89728,"y":99.769135,"z":0.0},"screenPosition":{"x":0.24786,"y":0.7190158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.23402,"y":102.04728,"z":0.0},"screenPosition":{"x":0.42154208,"y":0.75065666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.14442,"y":99.22049,"z":0.0},"screenPosition":{"x":0.4613421,"y":0.71139574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.80023,"y":101.001595,"z":0.0},"screenPosition":{"x":0.41250497,"y":0.7361332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.90189,"y":105.158455,"z":-1.4210855E-14},"screenPosition":{"x":0.33128917,"y":0.79386747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.86685,"y":104.747665,"z":-1.4210855E-14},"screenPosition":{"x":0.37222606,"y":0.788162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.32991,"y":106.43397,"z":0.0},"screenPosition":{"x":0.34020656,"y":0.81158286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.6525,"y":107.7468,"z":0.0},"screenPosition":{"x":0.284427,"y":0.8298167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.87453,"y":108.482216,"z":-1.4210855E-14},"screenPosition":{"x":0.22655274,"y":0.8400308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.68002,"y":107.482475,"z":0.0},"screenPosition":{"x":0.16000055,"y":0.8261455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.6439,"y":103.49224,"z":-1.4210855E-14},"screenPosition":{"x":0.2842479,"y":0.7707256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.78873,"y":106.060524,"z":0.0},"screenPosition":{"x":0.41226503,"y":0.8063962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.22023,"y":99.81226,"z":-1.4210855E-14},"screenPosition":{"x":0.37958804,"y":0.71961474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.19954,"y":103.4262,"z":-1.4210855E-14},"screenPosition":{"x":0.42082375,"y":0.7698084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.15067,"y":109.97897,"z":-1.4210855E-14},"screenPosition":{"x":0.4198056,"y":0.86081904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.85478,"y":108.01688,"z":0.0},"screenPosition":{"x":0.41364133,"y":0.8335677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.19116,"y":111.56473,"z":-1.4210855E-14},"screenPosition":{"x":0.3998158,"y":0.8828435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.221,"y":113.99506,"z":0.0},"screenPosition":{"x":0.31710395,"y":0.91659814},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.5189,"y":115.45732,"z":0.0},"screenPosition":{"x":0.38581067,"y":0.93690723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.87282,"y":116.91093,"z":0.0},"screenPosition":{"x":0.35151693,"y":0.9570962},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.33904,"y":117.07754,"z":0.0},"screenPosition":{"x":0.29872993,"y":0.9594102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.94632,"y":114.80804,"z":-1.4210855E-14},"screenPosition":{"x":0.22804828,"y":0.9278894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.73347,"y":110.91832,"z":-1.4210855E-14},"screenPosition":{"x":0.24444738,"y":0.87386554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.1113,"y":107.37336,"z":-1.4210855E-14},"screenPosition":{"x":0.35648546,"y":0.82463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.15236,"y":106.14955,"z":-1.4210855E-14},"screenPosition":{"x":0.2948409,"y":0.8076326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.37302,"y":104.71031,"z":0.0},"screenPosition":{"x":0.34110448,"y":0.7876432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.37793,"y":104.09555,"z":-1.4210855E-14},"screenPosition":{"x":0.40370682,"y":0.7791049},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.59541,"y":104.17601,"z":-1.4210855E-14},"screenPosition":{"x":0.47073787,"y":0.78022236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.8649,"y":105.382576,"z":-1.4210855E-14},"screenPosition":{"x":0.5180186,"y":0.79698026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.15733,"y":110.26916,"z":0.0},"screenPosition":{"x":0.5657777,"y":0.8648494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.98701,"y":107.465355,"z":0.0},"screenPosition":{"x":0.6247295,"y":0.82590777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.48686,"y":110.46739,"z":0.0},"screenPosition":{"x":0.6351429,"y":0.8676027},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.95538,"y":113.32866,"z":-1.4210855E-14},"screenPosition":{"x":0.6240705,"y":0.90734255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.82466,"y":106.991325,"z":-1.4210855E-14},"screenPosition":{"x":0.51718056,"y":0.81932396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.3929,"y":110.04508,"z":0.0},"screenPosition":{"x":0.5706854,"y":0.86173725},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.92603,"y":112.55298,"z":-1.4210855E-14},"screenPosition":{"x":0.45679212,"y":0.8965691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.61383,"y":107.20106,"z":-1.4210855E-14},"screenPosition":{"x":0.5961216,"y":0.8222369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.47993,"y":106.982704,"z":-1.4210855E-14},"screenPosition":{"x":0.5099987,"y":0.8192042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.8382,"y":106.03184,"z":0.0},"screenPosition":{"x":0.57996243,"y":0.8059977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.297,"y":105.658394,"z":-1.4210855E-14},"screenPosition":{"x":0.65202093,"y":0.80081105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.46881,"y":106.17263,"z":0.0},"screenPosition":{"x":0.6972668,"y":0.80795324},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.81871,"y":108.761,"z":0.0},"screenPosition":{"x":0.7462232,"y":0.8439028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.16342,"y":113.36891,"z":0.0},"screenPosition":{"x":0.7534046,"y":0.9079016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.30446,"y":115.5321,"z":0.0},"screenPosition":{"x":0.73550946,"y":0.9379458},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.87697,"y":116.04631,"z":-1.4210855E-14},"screenPosition":{"x":0.6849368,"y":0.9450876},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.96715,"y":116.06352,"z":0.0},"screenPosition":{"x":0.60348207,"y":0.94532675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.9045,"y":115.78198,"z":0.0},"screenPosition":{"x":0.5605104,"y":0.94141644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.8907,"y":113.54697,"z":0.0},"screenPosition":{"x":0.51855636,"y":0.9103745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.73244,"y":112.07324,"z":0.0},"screenPosition":{"x":0.53609234,"y":0.88990617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.359,"y":108.61444,"z":-1.4210855E-14},"screenPosition":{"x":0.5283123,"y":0.8418672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.42395,"y":106.99135,"z":0.0},"screenPosition":{"x":0.6129991,"y":0.8193243},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.77386,"y":109.57972,"z":0.0},"screenPosition":{"x":0.6619555,"y":0.85527384},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.64485,"y":113.3459,"z":0.0},"screenPosition":{"x":0.6384343,"y":0.907582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.77727,"y":115.85382,"z":0.0},"screenPosition":{"x":0.6203596,"y":0.94241416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.0045,"y":114.56969,"z":0.0},"screenPosition":{"x":0.6042603,"y":0.924579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.33598,"y":114.13301,"z":0.0},"screenPosition":{"x":0.5278329,"y":0.9185141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.81001,"y":108.970665,"z":0.0},"screenPosition":{"x":0.5377086,"y":0.84681475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.56786,"y":109.03962,"z":-1.4210855E-14},"screenPosition":{"x":0.5951638,"y":0.84777254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.93527,"y":114.13303,"z":-1.4210855E-14},"screenPosition":{"x":0.6236515,"y":0.9185144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.28343,"y":115.81647,"z":0.0},"screenPosition":{"x":0.589238,"y":0.94189537},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.05127,"y":103.7824,"z":-1.4210855E-14},"screenPosition":{"x":0.3344015,"y":0.77475566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.97975,"y":100.65109,"z":0.0},"screenPosition":{"x":0.3120781,"y":0.7312651},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.68442,"y":100.478714,"z":0.0},"screenPosition":{"x":0.2642586,"y":0.728871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.33134,"y":99.41004,"z":0.0},"screenPosition":{"x":0.23606974,"y":0.7140283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.49307,"y":97.95928,"z":0.0},"screenPosition":{"x":0.1769389,"y":0.6938789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.640686,"y":100.27758,"z":-1.4210855E-14},"screenPosition":{"x":0.096680894,"y":0.72607744},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.11383,"y":103.92887,"z":0.0},"screenPosition":{"x":0.16903816,"y":0.7767899},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.2974,"y":107.17797,"z":-1.4210855E-14},"screenPosition":{"x":0.19369568,"y":0.8219163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.4204,"y":100.447105,"z":-1.4210855E-14},"screenPosition":{"x":0.23792495,"y":0.728432},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.40575,"y":102.426445,"z":-1.4210855E-14},"screenPosition":{"x":0.258453,"y":0.7559228},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.14517,"y":99.47035,"z":0.0},"screenPosition":{"x":0.1905245,"y":0.71486604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.95161,"y":94.391335,"z":-1.4210855E-14},"screenPosition":{"x":0.26982522,"y":0.64432406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.26039,"y":93.469154,"z":0.0},"screenPosition":{"x":0.1720916,"y":0.63151604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.349976,"y":100.89523,"z":0.0},"screenPosition":{"x":0.1322911,"y":0.734656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.103195,"y":100.174164,"z":0.0},"screenPosition":{"x":0.106316626,"y":0.72464114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.78088,"y":102.055824,"z":-1.4210855E-14},"screenPosition":{"x":0.14126834,"y":0.7507754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.18305,"y":104.36553,"z":0.0},"screenPosition":{"x":0.14964698,"y":0.78285456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.18564,"y":105.6554,"z":0.0},"screenPosition":{"x":0.17053421,"y":0.8007695},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.87769,"y":106.96252,"z":-1.4210855E-14},"screenPosition":{"x":0.20578523,"y":0.8189239},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.80298,"y":109.95019,"z":-1.4210855E-14},"screenPosition":{"x":0.20422883,"y":0.86041933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.09283,"y":113.54689,"z":0.0},"screenPosition":{"x":0.23110072,"y":0.9103735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.63324,"y":104.33682,"z":0.0},"screenPosition":{"x":0.22152586,"y":0.7824558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.16849,"y":106.47994,"z":0.0},"screenPosition":{"x":0.37851003,"y":0.81222135},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.04924,"y":104.28225,"z":-1.4210855E-14},"screenPosition":{"x":0.27185902,"y":0.7816979},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.61082,"y":102.44653,"z":0.0},"screenPosition":{"x":0.17939223,"y":0.75620186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.75473,"y":104.494804,"z":-1.4210855E-14},"screenPosition":{"x":0.16155696,"y":0.7846501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.82137,"y":103.64159,"z":0.0},"screenPosition":{"x":0.12127855,"y":0.7727998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.694725,"y":96.30456,"z":0.0},"screenPosition":{"x":0.1394735,"y":0.67089665},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.28994,"y":97.304276,"z":0.0},"screenPosition":{"x":0.11020713,"y":0.68478155},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.22675,"y":95.23301,"z":0.0},"screenPosition":{"x":0.108890675,"y":0.6560141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.76656,"y":93.4318,"z":0.0},"screenPosition":{"x":0.14097004,"y":0.6309972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.67668,"y":92.009796,"z":-1.4210855E-14},"screenPosition":{"x":0.20159741,"y":0.6112472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.58995,"y":89.0681,"z":0.0},"screenPosition":{"x":0.2414573,"y":0.5703903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.70747,"y":85.76156,"z":0.0},"screenPosition":{"x":0.26473898,"y":0.5244661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.1476,"y":79.168564,"z":0.0},"screenPosition":{"x":0.23224159,"y":0.4328967},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.27892,"y":78.09704,"z":0.0},"screenPosition":{"x":0.29747733,"y":0.41801444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.28975,"y":80.3119,"z":0.0},"screenPosition":{"x":0.13103649,"y":0.44877636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.78934,"y":80.11943,"z":0.0},"screenPosition":{"x":0.16227779,"y":0.4461032},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.86607,"y":76.63191,"z":-1.4210855E-14},"screenPosition":{"x":0.22637665,"y":0.39766547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.9655,"y":78.22919,"z":0.0},"screenPosition":{"x":0.31178126,"y":0.41984987},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.70065,"y":77.81265,"z":0.0},"screenPosition":{"x":0.34793022,"y":0.4140646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.01547,"y":75.25586,"z":-1.4210855E-14},"screenPosition":{"x":0.22948895,"y":0.37855366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.12204,"y":74.198685,"z":0.0},"screenPosition":{"x":0.21087597,"y":0.3638706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.18727,"y":75.770096,"z":-1.4210855E-14},"screenPosition":{"x":0.27473488,"y":0.38569582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.57138,"y":78.38433,"z":0.0},"screenPosition":{"x":0.34523693,"y":0.42200455},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.11494,"y":67.65456,"z":-1.4210855E-14},"screenPosition":{"x":0.31489456,"y":0.27297997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.43259,"y":74.18144,"z":0.0},"screenPosition":{"x":0.19651216,"y":0.36363113},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.11206,"y":67.76947,"z":0.0},"screenPosition":{"x":0.3148347,"y":0.27457595},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.25052,"y":68.64278,"z":1.4210855E-14},"screenPosition":{"x":0.27605233,"y":0.28670526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.4568,"y":67.77809,"z":0.0},"screenPosition":{"x":0.3220166,"y":0.27469566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.92422,"y":67.05991,"z":-1.4210855E-14},"screenPosition":{"x":0.39425465,"y":0.26472107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.88832,"y":56.930534,"z":-1.4210855E-14},"screenPosition":{"x":0.28934014,"y":0.12403521},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.45256,"y":61.119057,"z":-1.4210855E-14},"screenPosition":{"x":0.42609507,"y":0.18220909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.07915,"y":53.06096,"z":-1.4210855E-14},"screenPosition":{"x":0.41831553,"y":0.07029109},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.799,"y":57.298252,"z":-1.4210855E-14},"screenPosition":{"x":0.30831227,"y":0.1291424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.05812,"y":53.345325,"z":-1.4210855E-14},"screenPosition":{"x":0.2720441,"y":0.074240625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.95435,"y":82.01841,"z":0.0},"screenPosition":{"x":0.49904895,"y":0.4724779},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.08202,"y":52.94605,"z":0.0},"screenPosition":{"x":0.4183754,"y":0.06869511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.69077,"y":52.986275,"z":-1.4210855E-14},"screenPosition":{"x":0.45189095,"y":0.06925382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.81732,"y":60.18823,"z":0.0},"screenPosition":{"x":0.22536099,"y":0.16928098},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.83514,"y":56.689198,"z":0.0},"screenPosition":{"x":0.18406543,"y":0.12068329},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.29314,"y":51.33153,"z":0.0},"screenPosition":{"x":0.31860697,"y":0.04627127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.641754,"y":54.66961,"z":1.4210855E-14},"screenPosition":{"x":0.034203287,"y":0.092633456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.79039,"y":53.043694,"z":0.0},"screenPosition":{"x":0.30813318,"y":0.07005131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.85562,"y":54.615112,"z":1.4210855E-14},"screenPosition":{"x":0.3719921,"y":0.09187654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.52008,"y":51.45219,"z":0.0},"screenPosition":{"x":0.32333505,"y":0.047947064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.41351,"y":52.50937,"z":0.0},"screenPosition":{"x":0.34194803,"y":0.06263013},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.80962,"y":61.052967,"z":0.0},"screenPosition":{"x":0.37103382,"y":0.18129122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.09004,"y":60.010178,"z":-1.4210855E-14},"screenPosition":{"x":0.46020922,"y":0.16680802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.11718,"y":65.61485,"z":1.4210855E-14},"screenPosition":{"x":0.14827465,"y":0.24465078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.25862,"y":75.84198,"z":-1.4210855E-14},"screenPosition":{"x":0.52622116,"y":0.38669416},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.54756,"y":60.386444,"z":0.0},"screenPosition":{"x":0.19890763,"y":0.17203395},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.65326,"y":68.14291,"z":0.0},"screenPosition":{"x":0.24277624,"y":0.27976263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.22347,"y":65.96246,"z":0.0},"screenPosition":{"x":0.15048903,"y":0.24947862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.64578,"y":62.8685,"z":0.0},"screenPosition":{"x":0.1592872,"y":0.20650694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.55618,"y":60.041714,"z":1.4210855E-14},"screenPosition":{"x":0.19908722,"y":0.16724601},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.2109,"y":58.243374,"z":0.0},"screenPosition":{"x":0.23356055,"y":0.14226907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.57262,"y":54.368027,"z":0.0},"screenPosition":{"x":0.26192948,"y":0.0884448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.46823,"y":62.584084,"z":0.0},"screenPosition":{"x":0.113921545,"y":0.20255673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.775635,"y":59.48725,"z":-1.4210855E-14},"screenPosition":{"x":0.120325744,"y":0.15954514},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.31801,"y":63.575203,"z":-1.4210855E-14},"screenPosition":{"x":0.17329183,"y":0.21632226},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.49151,"y":60.260017,"z":0.0},"screenPosition":{"x":0.09357308,"y":0.170278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.5774,"y":62.81678,"z":0.0},"screenPosition":{"x":0.11619579,"y":0.2057886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.89886,"y":65.14947,"z":-1.4210855E-14},"screenPosition":{"x":0.14372617,"y":0.23818706},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.63371,"y":66.13771,"z":0.0},"screenPosition":{"x":0.20070249,"y":0.25191265},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.41113,"y":63.61258,"z":-1.4210855E-14},"screenPosition":{"x":0.30023196,"y":0.21684138},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.0,"y":64.693474,"z":1.0},"screenPosition":{"x":0.0,"y":0.23185378},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.89943,"y":62.339897,"z":0.0},"screenPosition":{"x":0.102071434,"y":0.19916524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.08212,"y":69.80335,"z":0.0},"screenPosition":{"x":0.18921104,"y":0.30282435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.112274,"y":66.229614,"z":0.0},"screenPosition":{"x":0.085672334,"y":0.25318906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.27434,"y":68.10843,"z":-1.4210855E-14},"screenPosition":{"x":0.21404864,"y":0.27928373},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.22865,"y":68.54221,"z":0.0},"screenPosition":{"x":0.19226348,"y":0.28530848},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.332634,"y":66.19515,"z":0.0},"screenPosition":{"x":0.15276328,"y":0.2527105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.02586,"y":71.21678,"z":-1.4210855E-14},"screenPosition":{"x":0.31303886,"y":0.3224553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.77734,"y":69.590775,"z":-1.4210855E-14},"screenPosition":{"x":0.20369457,"y":0.29987183},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.66246,"y":64.98861,"z":0.0},"screenPosition":{"x":0.2013011,"y":0.23595288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.43893,"y":66.54276,"z":0.0},"screenPosition":{"x":0.15497766,"y":0.25753832},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.38146,"y":68.840965,"z":0.0},"screenPosition":{"x":0.15378043,"y":0.2894579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.20389,"y":73.155846,"z":-1.4210855E-14},"screenPosition":{"x":0.10841428,"y":0.34938672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.77212,"y":76.2096,"z":-1.4210855E-14},"screenPosition":{"x":0.16191912,"y":0.39180005},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.77711,"y":75.72992,"z":-1.4210855E-14},"screenPosition":{"x":0.43285644,"y":0.38513777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.70297,"y":75.90802,"z":0.0},"screenPosition":{"x":0.3896453,"y":0.3876114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.6757,"y":79.36685,"z":-1.4210855E-14},"screenPosition":{"x":0.49324387,"y":0.43565068},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.56537,"y":75.41965,"z":0.0},"screenPosition":{"x":0.36594507,"y":0.38082838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.77423,"y":75.844826,"z":0.0},"screenPosition":{"x":0.43279657,"y":0.38673374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.80812,"y":81.87476,"z":-1.4210855E-14},"screenPosition":{"x":0.47516915,"y":0.47048286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.37953,"y":78.80954,"z":0.0},"screenPosition":{"x":0.507907,"y":0.42791024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.20688,"y":82.50966,"z":0.0},"screenPosition":{"x":0.52514315,"y":0.4793008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.7524,"y":85.07791,"z":-1.4210855E-14},"screenPosition":{"x":0.55734175,"y":0.514971},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.42776,"y":88.86421,"z":-1.4210855E-14},"screenPosition":{"x":0.55057836,"y":0.56755847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.18784,"y":91.49276,"z":0.0},"screenPosition":{"x":0.44141316,"y":0.60406613},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.50812,"y":90.11094,"z":0.0},"screenPosition":{"x":0.34391898,"y":0.58487415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.29527,"y":86.22122,"z":0.0},"screenPosition":{"x":0.3603181,"y":0.53085035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.52303,"y":91.3261,"z":0.0},"screenPosition":{"x":0.30256307,"y":0.60175145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.35248,"y":80.72851,"z":0.0},"screenPosition":{"x":0.38234317,"y":0.45456263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.63113,"y":78.78078,"z":0.0},"screenPosition":{"x":0.38814875,"y":0.42751083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.44547,"y":89.8294,"z":-1.4210855E-14},"screenPosition":{"x":0.3009473,"y":0.58096385},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.50291,"y":92.13048,"z":0.0},"screenPosition":{"x":0.30214402,"y":0.6129233},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.83095,"y":94.61828,"z":0.0},"screenPosition":{"x":0.26731154,"y":0.64747614},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.84474,"y":96.8533,"z":-1.4210855E-14},"screenPosition":{"x":0.30926558,"y":0.67851806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.06334,"y":100.51319,"z":0.0},"screenPosition":{"x":0.2929862,"y":0.7293499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.14728,"y":103.70487,"z":-1.4210855E-14},"screenPosition":{"x":0.46140146,"y":0.7736788},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.15126,"y":102.570114,"z":0.0},"screenPosition":{"x":0.37815136,"y":0.7579182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.19092,"y":103.770935,"z":0.0},"screenPosition":{"x":0.42064416,"y":0.77459633},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.24782,"y":104.282295,"z":0.0},"screenPosition":{"x":0.46349612,"y":0.7816986},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.11166,"y":106.103645,"z":-1.4210855E-14},"screenPosition":{"x":0.54399306,"y":0.8069951},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.96405,"y":103.78535,"z":-1.4210855E-14},"screenPosition":{"x":0.62425107,"y":0.77479655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.29843,"y":98.63447,"z":0.0},"screenPosition":{"x":0.5478841,"y":0.70325655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.01802,"y":99.67726,"z":-1.4210855E-14},"screenPosition":{"x":0.4587087,"y":0.71773976},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.4325,"y":106.51154,"z":0.0},"screenPosition":{"x":0.4048437,"y":0.81266034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.23715,"y":105.12688,"z":-1.4210855E-14},"screenPosition":{"x":0.4007741,"y":0.7934288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.52441,"y":107.4337,"z":-1.4210855E-14},"screenPosition":{"x":0.40675876,"y":0.82546806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.46983,"y":109.617,"z":-1.4210855E-14},"screenPosition":{"x":0.40562138,"y":0.8557917},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.18254,"y":111.90946,"z":-1.4210855E-14},"screenPosition":{"x":0.3996362,"y":0.8876314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.88663,"y":114.54665,"z":0.0},"screenPosition":{"x":0.39347145,"y":0.9242591},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.69156,"y":116.35649,"z":0.0},"screenPosition":{"x":0.368574,"y":0.94939566},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.82425,"y":117.45962,"z":0.0},"screenPosition":{"x":0.32967192,"y":0.9647169},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.24507,"y":116.65522,"z":0.0},"screenPosition":{"x":0.23427239,"y":0.95354474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.7329,"y":113.72789,"z":0.0},"screenPosition":{"x":0.28610212,"y":0.9128874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.75876,"y":112.693695,"z":-1.4210855E-14},"screenPosition":{"x":0.28664085,"y":0.89852357},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.31119,"y":109.412994,"z":0.0},"screenPosition":{"x":0.23564972,"y":0.8529582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.08286,"y":107.11768,"z":-1.4210855E-14},"screenPosition":{"x":0.33505946,"y":0.8210789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.2199,"y":110.41563,"z":-1.4210855E-14},"screenPosition":{"x":0.4004144,"y":0.8668837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.10608,"y":113.992195,"z":0.0},"screenPosition":{"x":0.31471,"y":0.9165582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.93286,"y":115.902596,"z":0.0},"screenPosition":{"x":0.37360138,"y":0.9430916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.28964,"y":117.241295,"z":0.0},"screenPosition":{"x":0.3393675,"y":0.9616846},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.59842,"y":116.319115,"z":0.0},"screenPosition":{"x":0.24163388,"y":0.94887656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.72511,"y":114.45756,"z":0.0},"screenPosition":{"x":0.22343993,"y":0.9230216},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.29024,"y":109.83243,"z":-1.4210855E-14},"screenPosition":{"x":0.29771328,"y":0.8587838},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.93172,"y":107.58879,"z":0.0},"screenPosition":{"x":0.24857734,"y":0.8276221},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":137.23196,"y":107.146416,"z":0.0},"screenPosition":{"x":0.35899913,"y":0.82147795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.86855,"y":100.91824,"z":0.0},"screenPosition":{"x":0.24726138,"y":0.7349756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.6198,"y":105.43138,"z":0.0},"screenPosition":{"x":0.36707896,"y":0.797658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.87631,"y":104.787865,"z":0.0},"screenPosition":{"x":0.30992305,"y":0.78872037},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.2621,"y":103.57268,"z":0.0},"screenPosition":{"x":0.25546044,"y":0.7718427},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.5152,"y":101.25435,"z":-1.4210855E-14},"screenPosition":{"x":0.23989989,"y":0.73964375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.21272,"y":99.13714,"z":0.0},"screenPosition":{"x":0.2960985,"y":0.7102381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.97661,"y":97.571495,"z":-1.4210855E-14},"screenPosition":{"x":0.33284608,"y":0.688493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.36676,"y":93.95183,"z":-1.4210855E-14},"screenPosition":{"x":0.382641,"y":0.63821983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.9988,"y":91.667984,"z":0.0},"screenPosition":{"x":0.39580807,"y":0.60649985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.33835,"y":89.096855,"z":0.0},"screenPosition":{"x":0.3612155,"y":0.5707897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.25874,"y":88.09999,"z":0.0},"screenPosition":{"x":0.2970573,"y":0.5569444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.38312,"y":88.14307,"z":0.0},"screenPosition":{"x":0.23714826,"y":0.5575426},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.878334,"y":90.35508,"z":-1.4210855E-14},"screenPosition":{"x":0.164132,"y":0.58826494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.40347,"y":95.13249,"z":-1.4210855E-14},"screenPosition":{"x":0.21673892,"y":0.65461797},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.5828,"y":91.72256,"z":0.0},"screenPosition":{"x":0.3454749,"y":0.6072577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.13725,"y":87.94201,"z":0.0},"screenPosition":{"x":0.3570262,"y":0.5547501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.28174,"y":87.18071,"z":0.0},"screenPosition":{"x":0.2975362,"y":0.5441765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.15617,"y":88.022415,"z":-1.4210855E-14},"screenPosition":{"x":0.23242018,"y":0.55586684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.11419,"y":88.72622,"z":0.0},"screenPosition":{"x":0.1482123,"y":0.56564194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.2686,"y":82.271194,"z":0.0},"screenPosition":{"x":0.42226243,"y":0.4759888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.51845,"y":81.337494,"z":-1.4210855E-14},"screenPosition":{"x":0.21913439,"y":0.46302077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.07004,"y":77.67185,"z":1.4210855E-14},"screenPosition":{"x":0.23062582,"y":0.4121091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.86491,"y":86.85035,"z":-1.4210855E-14},"screenPosition":{"x":0.30968562,"y":0.53958815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.2076,"y":87.35881,"z":0.0},"screenPosition":{"x":0.25432506,"y":0.5466502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.36966,"y":75.30469,"z":0.0},"screenPosition":{"x":0.17436785,"y":0.37923175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.04298,"y":79.59083,"z":0.0},"screenPosition":{"x":0.10506202,"y":0.4387615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.70629,"y":82.04705,"z":-1.4210855E-14},"screenPosition":{"x":0.13971443,"y":0.47287565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.17883,"y":79.17426,"z":0.0},"screenPosition":{"x":0.045392428,"y":0.43297586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.332825,"y":83.18753,"z":-1.4210855E-14},"screenPosition":{"x":0.13193391,"y":0.4887157},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.842125,"y":86.229774,"z":0.0},"screenPosition":{"x":0.080044344,"y":0.5309691},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.398605,"y":86.54867,"z":-1.4210855E-14},"screenPosition":{"x":0.1541376,"y":0.5353981},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.01625,"y":84.83938,"z":0.0},"screenPosition":{"x":0.16700536,"y":0.511658},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.47247,"y":83.17606,"z":0.0},"screenPosition":{"x":0.2181766,"y":0.4885564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.02953,"y":80.68539,"z":0.0},"screenPosition":{"x":0.25061512,"y":0.4539637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.70378,"y":80.89224,"z":0.0},"screenPosition":{"x":0.3271622,"y":0.45683673},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.59094,"y":75.79024,"z":-1.4210855E-14},"screenPosition":{"x":0.3873112,"y":0.38597548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.92468,"y":87.246796,"z":0.0},"screenPosition":{"x":0.35259742,"y":0.54509443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.64139,"y":88.404495,"z":-1.4210855E-14},"screenPosition":{"x":0.26336217,"y":0.56117356},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.30702,"y":88.956085,"z":-1.4210855E-14},"screenPosition":{"x":0.33972967,"y":0.56883454},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.74652,"y":94.37125,"z":-1.4210855E-14},"screenPosition":{"x":0.348886,"y":0.64404505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.67995,"y":86.02589,"z":0.0},"screenPosition":{"x":0.3891654,"y":0.52813727},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.57512,"y":87.98801,"z":0.0},"screenPosition":{"x":0.4911482,"y":0.5553889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.13124,"y":84.977325,"z":0.0},"screenPosition":{"x":0.37773433,"y":0.51357394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.0853,"y":82.2166,"z":-1.4210855E-14},"screenPosition":{"x":0.37677705,"y":0.47523054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.2496,"y":82.05572,"z":0.0},"screenPosition":{"x":0.33853343,"y":0.47299606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.18752,"y":83.563896,"z":0.0},"screenPosition":{"x":0.25390652,"y":0.49394298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.83156,"y":87.20942,"z":0.0},"screenPosition":{"x":0.22565731,"y":0.5445753},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.58911,"y":88.68317,"z":0.0},"screenPosition":{"x":0.30393988,"y":0.565044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.63768,"y":88.134476,"z":-1.4210855E-14},"screenPosition":{"x":0.3257849,"y":0.55742323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.55954,"y":89.447334,"z":-1.4210855E-14},"screenPosition":{"x":0.36582386,"y":0.5756574},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.78218,"y":82.77389,"z":0.0},"screenPosition":{"x":0.26629537,"y":0.48297065},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.60951,"y":86.47401,"z":0.0},"screenPosition":{"x":0.28353155,"y":0.53436124},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.98528,"y":88.02818,"z":0.0},"screenPosition":{"x":0.33302665,"y":0.555947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.44464,"y":89.444466,"z":0.0},"screenPosition":{"x":0.3634299,"y":0.57561755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.0416,"y":91.34911,"z":-1.4210855E-14},"screenPosition":{"x":0.41753334,"y":0.60207105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.60385,"y":86.8389,"z":0.0},"screenPosition":{"x":0.49174684,"y":0.5394292},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.78111,"y":88.5281,"z":0.0},"screenPosition":{"x":0.5579398,"y":0.5628903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.77252,"y":84.273544,"z":0.0},"screenPosition":{"x":0.5577608,"y":0.5037992},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.36545,"y":77.9793,"z":-1.4210855E-14},"screenPosition":{"x":0.48678032,"y":0.4163792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.67046,"y":76.65203,"z":0.0},"screenPosition":{"x":0.24313441,"y":0.39794484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.7303,"y":77.18355,"z":0.0},"screenPosition":{"x":0.49438125,"y":0.4053271},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.39447,"y":75.425415,"z":0.0},"screenPosition":{"x":0.46655157,"y":0.38090855},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.28442,"y":70.073425,"z":0.0},"screenPosition":{"x":0.31842542,"y":0.30657533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.14253,"y":72.124596,"z":0.0},"screenPosition":{"x":0.39880264,"y":0.33506382},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.45447,"y":69.68272,"z":0.0},"screenPosition":{"x":0.2803015,"y":0.30114886},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.12039,"y":68.82952,"z":0.0},"screenPosition":{"x":0.33584166,"y":0.28929892},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.44356,"y":67.33279,"z":-1.4210855E-14},"screenPosition":{"x":0.23840734,"y":0.26851097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.39008,"y":68.49624,"z":0.0},"screenPosition":{"x":0.15396,"y":0.28466997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.89539,"y":72.67324,"z":0.0},"screenPosition":{"x":0.18532053,"y":0.34268388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.0933,"y":75.347786,"z":-1.4210855E-14},"screenPosition":{"x":0.21027735,"y":0.37983036},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.00601,"y":75.21566,"z":-1.4210855E-14},"screenPosition":{"x":0.29179195,"y":0.37799528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.56306,"y":72.72498,"z":0.0},"screenPosition":{"x":0.3242305,"y":0.34340256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.72711,"y":69.3696,"z":-1.4210855E-14},"screenPosition":{"x":0.30681473,"y":0.29679993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.78568,"y":70.650826,"z":0.0},"screenPosition":{"x":0.22470152,"y":0.3145948},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.29414,"y":73.30813,"z":0.0},"screenPosition":{"x":0.23529454,"y":0.35150182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.20999,"y":71.65631,"z":-1.4210855E-14},"screenPosition":{"x":0.29604164,"y":0.32855985},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.56882,"y":72.49516,"z":0.0},"screenPosition":{"x":0.3243502,"y":0.3402106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.71736,"y":70.73418,"z":-1.4210855E-14},"screenPosition":{"x":0.38994512,"y":0.31575245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.73546,"y":65.83036,"z":0.0},"screenPosition":{"x":0.32782218,"y":0.24764387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.86009,"y":69.06794,"z":0.0},"screenPosition":{"x":0.24708529,"y":0.2926103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.35924,"y":62.621536,"z":0.0},"screenPosition":{"x":0.52831733,"y":0.20307687},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.44212,"y":74.35672,"z":0.0},"screenPosition":{"x":0.34254417,"y":0.3660655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.90768,"y":55.8763,"z":-1.4210855E-14},"screenPosition":{"x":0.56057674,"y":0.10939305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.09015,"y":55.54596,"z":0.0},"screenPosition":{"x":0.6685447,"y":0.10480499},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.05833,"y":58.34983,"z":-1.4210855E-14},"screenPosition":{"x":0.8970486,"y":0.14374766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.99327,"y":64.43714,"z":0.0},"screenPosition":{"x":0.6040263,"y":0.22829358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.98752,"y":64.66696,"z":0.0},"screenPosition":{"x":0.60390663,"y":0.23148555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.70943,"y":63.80512,"z":0.0},"screenPosition":{"x":0.5564463,"y":0.21951555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.8424,"y":63.503464,"z":0.0},"screenPosition":{"x":0.49671686,"y":0.21532589},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.25475,"y":53.98029,"z":-1.4210855E-14},"screenPosition":{"x":0.60947376,"y":0.08305958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.42941,"y":54.379616,"z":0.0},"screenPosition":{"x":0.65477955,"y":0.08860576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.5512,"y":53.132816,"z":-1.4210855E-14},"screenPosition":{"x":0.57398325,"y":0.071289115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.49548,"y":56.335964,"z":0.0},"screenPosition":{"x":0.6561559,"y":0.1157773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.25475,"y":53.98029,"z":-1.4210855E-14},"screenPosition":{"x":0.60947376,"y":0.08305958},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.46942,"y":58.910015,"z":-1.4210855E-14},"screenPosition":{"x":0.88477945,"y":0.151528},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.4228,"y":58.82379,"z":0.0},"screenPosition":{"x":0.7171419,"y":0.15033044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.40503,"y":57.723534,"z":0.0},"screenPosition":{"x":0.758438,"y":0.13504909},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.54509,"y":68.56529,"z":0.0},"screenPosition":{"x":0.5946894,"y":0.28562906},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.97276,"y":85.04346,"z":0.0},"screenPosition":{"x":0.6244327,"y":0.51449245},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.23087,"y":63.71322,"z":0.0},"screenPosition":{"x":0.6714764,"y":0.21823916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.57788,"y":71.01579,"z":0.0},"screenPosition":{"x":0.72037244,"y":0.31966376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.66287,"y":68.453255,"z":0.0},"screenPosition":{"x":0.59714323,"y":0.284073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.74644,"y":72.91465,"z":0.0},"screenPosition":{"x":0.57805085,"y":0.3460368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.37215,"y":73.6702,"z":-1.4210855E-14},"screenPosition":{"x":0.63275295,"y":0.35653055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.57788,"y":71.01579,"z":0.0},"screenPosition":{"x":0.72037244,"y":0.31966376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.92264,"y":66.42512,"z":-1.4210855E-14},"screenPosition":{"x":0.72755486,"y":0.25590444},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.52362,"y":62.595722,"z":0.0},"screenPosition":{"x":0.6984087,"y":0.20271836},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.89688,"y":84.31662,"z":0.0},"screenPosition":{"x":0.49785173,"y":0.50439745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.47444,"y":75.152565,"z":-1.4210855E-14},"screenPosition":{"x":0.71821743,"y":0.37711897},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.1377,"y":72.87442,"z":-1.4210855E-14},"screenPosition":{"x":0.54453534,"y":0.3454781},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.12823,"y":72.83422,"z":0.0},"screenPosition":{"x":0.60683835,"y":0.3449197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.84012,"y":74.741745,"z":-1.4210855E-14},"screenPosition":{"x":0.66333574,"y":0.37141314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.04948,"y":86.155235,"z":-1.4210855E-14},"screenPosition":{"x":0.68853104,"y":0.5299338},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.66975,"y":81.13653,"z":0.0},"screenPosition":{"x":0.7222865,"y":0.46022955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.0889,"y":79.56226,"z":-1.4210855E-14},"screenPosition":{"x":0.7518522,"y":0.43836474},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.48413,"y":82.986565,"z":0.0},"screenPosition":{"x":0.63508606,"y":0.48592448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.05524,"y":85.925415,"z":0.0},"screenPosition":{"x":0.6886508,"y":0.5267418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.44963,"y":88.96478,"z":-1.4210855E-14},"screenPosition":{"x":0.6343672,"y":0.56895524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.89688,"y":84.31662,"z":0.0},"screenPosition":{"x":0.49785173,"y":0.50439745},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.46425,"y":77.65179,"z":0.0},"screenPosition":{"x":0.40550515,"y":0.4118304},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.35164,"y":80.343575,"z":0.0},"screenPosition":{"x":0.44482577,"y":0.44921634},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.5849,"y":77.42484,"z":0.0},"screenPosition":{"x":0.40801883,"y":0.40867835},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.44385,"y":79.86095,"z":0.0},"screenPosition":{"x":0.42591348,"y":0.44251317},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.9469,"y":72.14471,"z":0.0},"screenPosition":{"x":0.41556042,"y":0.33534318},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.59381,"y":75.67532,"z":0.0},"screenPosition":{"x":0.38737106,"y":0.3843795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.30942,"y":73.253586,"z":-1.4210855E-14},"screenPosition":{"x":0.38144624,"y":0.35074425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.387,"y":70.151,"z":0.0},"screenPosition":{"x":0.3830625,"y":0.30765283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.39824,"y":66.49686,"z":0.0},"screenPosition":{"x":0.40412983,"y":0.25690082},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.68152,"y":65.33916,"z":-1.4210855E-14},"screenPosition":{"x":0.49336508,"y":0.24082163},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.48929,"y":71.63337,"z":-1.4210855E-14},"screenPosition":{"x":0.468527,"y":0.32824126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.72711,"y":69.3696,"z":-1.4210855E-14},"screenPosition":{"x":0.30681473,"y":0.29679993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.53896,"y":74.664116,"z":-1.4210855E-14},"screenPosition":{"x":0.40706155,"y":0.37033498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.7863,"y":72.575615,"z":0.0},"screenPosition":{"x":0.3913813,"y":0.34132802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.51108,"y":71.59887,"z":-1.4210855E-14},"screenPosition":{"x":0.34398085,"y":0.32776204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.83627,"y":69.60229,"z":-1.4210855E-14},"screenPosition":{"x":0.30908898,"y":0.30003178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.15572,"y":67.83553,"z":0.0},"screenPosition":{"x":0.27407742,"y":0.2754935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.98051,"y":61.047195,"z":0.0},"screenPosition":{"x":0.27042735,"y":0.18121107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.06671,"y":57.599884,"z":-1.4210855E-14},"screenPosition":{"x":0.27222317,"y":0.13333173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.7856,"y":63.127174,"z":-1.4210855E-14},"screenPosition":{"x":0.6621999,"y":0.21009964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.34457,"y":64.60087,"z":0.0},"screenPosition":{"x":0.54884535,"y":0.23056766},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.51295,"y":63.4403,"z":0.0},"screenPosition":{"x":0.6356867,"y":0.21444859},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61537,"y":81.77997,"z":-1.4210855E-14},"screenPosition":{"x":0.49198678,"y":0.46916622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.99327,"y":64.43714,"z":0.0},"screenPosition":{"x":0.6040263,"y":0.22829358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.88,"y":69.80342,"z":-1.4210855E-14},"screenPosition":{"x":0.4766667,"y":0.30282533},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.07797,"y":63.27939,"z":-1.4210855E-14},"screenPosition":{"x":0.5016245,"y":0.21221375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.30424,"y":70.673836,"z":0.0},"screenPosition":{"x":0.3396718,"y":0.3149144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.3795,"y":69.47588,"z":-1.4210855E-14},"screenPosition":{"x":0.29957297,"y":0.2982762},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.98936,"y":68.49626,"z":-1.4210855E-14},"screenPosition":{"x":0.24977855,"y":0.2846703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.4502,"y":72.22227,"z":0.0},"screenPosition":{"x":0.38437897,"y":0.33642036},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":134.25885,"y":69.702835,"z":0.0},"screenPosition":{"x":0.2970593,"y":0.30142823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.98936,"y":68.49626,"z":-1.4210855E-14},"screenPosition":{"x":0.24977855,"y":0.2846703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.87764,"y":62.3744,"z":0.0},"screenPosition":{"x":0.22661759,"y":0.19964446},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.2864,"y":64.83922,"z":0.0},"screenPosition":{"x":0.17263335,"y":0.23387802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.52541,"y":61.690662,"z":-1.4210855E-14},"screenPosition":{"x":0.13594614,"y":0.19014809},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.7274,"y":81.89775,"z":0.0},"screenPosition":{"x":0.49432087,"y":0.4708021},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.34505,"y":66.255516,"z":0.0},"screenPosition":{"x":0.29885513,"y":0.2535489},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.2411,"y":59.403996,"z":-1.4210855E-14},"screenPosition":{"x":0.33835635,"y":0.15838881},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.81877,"y":67.097244,"z":0.0},"screenPosition":{"x":0.3295577,"y":0.26523954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.46774,"y":65.528725,"z":0.0},"screenPosition":{"x":0.36391127,"y":0.24345455},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":133.48033,"y":68.64852,"z":0.0},"screenPosition":{"x":0.28084028,"y":0.28678507},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.28813,"y":70.343445,"z":0.0},"screenPosition":{"x":0.25600266,"y":0.31032565},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.53026,"y":74.87378,"z":0.0},"screenPosition":{"x":0.19854696,"y":0.3732469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.80031,"y":73.270775,"z":0.0},"screenPosition":{"x":0.20417297,"y":0.35098302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.85803,"y":74.167076,"z":0.0},"screenPosition":{"x":0.18454233,"y":0.3634316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.97924,"y":75.72985,"z":0.0},"screenPosition":{"x":0.14540079,"y":0.38513675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.84189,"y":78.435974,"z":0.0},"screenPosition":{"x":0.1008727,"y":0.4227219},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.56897,"y":80.153885,"z":0.0},"screenPosition":{"x":0.095186844,"y":0.44658175},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.574974,"y":83.11857,"z":0.0},"screenPosition":{"x":0.07447871,"y":0.48775792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.84305,"y":86.74978,"z":0.0},"screenPosition":{"x":0.22589676,"y":0.5381914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.00186,"y":90.01322,"z":0.0},"screenPosition":{"x":0.16670555,"y":0.58351696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.48886,"y":86.70096,"z":-1.4210855E-14},"screenPosition":{"x":0.28101787,"y":0.53751326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.52072,"y":88.63145,"z":0.0},"screenPosition":{"x":0.26084846,"y":0.56432563},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.62073,"y":87.41915,"z":0.0},"screenPosition":{"x":0.30459836,"y":0.5474882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.92209,"y":85.956924,"z":0.0},"screenPosition":{"x":0.3317102,"y":0.5271795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.71758,"y":83.127266,"z":0.0},"screenPosition":{"x":0.36911625,"y":0.48787865},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.08188,"y":80.54179,"z":0.0},"screenPosition":{"x":0.41837242,"y":0.4519693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.77792,"y":80.71414,"z":-1.4210855E-14},"screenPosition":{"x":0.37037334,"y":0.4543631},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.592,"y":88.56825,"z":0.0},"screenPosition":{"x":0.30399975,"y":0.563448},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.3507,"y":84.42286,"z":-1.4210855E-14},"screenPosition":{"x":0.29897287,"y":0.5058731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.57274,"y":85.15827,"z":0.0},"screenPosition":{"x":0.24109863,"y":0.5160871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.4234,"y":91.268684,"z":0.0},"screenPosition":{"x":0.44632083,"y":0.600954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.19962,"y":89.628334,"z":0.0},"screenPosition":{"x":0.42082524,"y":0.5781713},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.76093,"y":89.1974,"z":0.0},"screenPosition":{"x":0.34918582,"y":0.5721861},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.81494,"y":89.82368,"z":0.0},"screenPosition":{"x":0.3919779,"y":0.58088434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.4234,"y":91.268684,"z":0.0},"screenPosition":{"x":0.44632083,"y":0.600954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.47975,"y":89.990326,"z":-1.4210855E-14},"screenPosition":{"x":0.530828,"y":0.583199},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.07812,"y":89.470345,"z":0.0},"screenPosition":{"x":0.48079416,"y":0.575977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.89801,"y":83.29677,"z":0.0},"screenPosition":{"x":0.41454178,"y":0.49023288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61537,"y":81.77997,"z":-1.4210855E-14},"screenPosition":{"x":0.49198678,"y":0.46916622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.95969,"y":92.25688,"z":0.0},"screenPosition":{"x":0.31166005,"y":0.6146789},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.42163,"y":94.963036,"z":-1.4210855E-14},"screenPosition":{"x":0.3629505,"y":0.6522644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.52937,"y":97.62037,"z":0.0},"screenPosition":{"x":0.46936208,"y":0.68917173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.88791,"y":99.864006,"z":-1.4210855E-14},"screenPosition":{"x":0.518498,"y":0.7203334},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.62457,"y":92.55861,"z":0.0},"screenPosition":{"x":0.6588451,"y":0.61886954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.72017,"y":98.35008,"z":0.0},"screenPosition":{"x":0.598337,"y":0.69930667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.36205,"y":90.237434,"z":0.0},"screenPosition":{"x":0.7367092,"y":0.58663106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.31935,"y":81.4928,"z":0.0},"screenPosition":{"x":0.9233199,"y":0.46517777},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.7715,"y":80.82917,"z":-1.4210855E-14},"screenPosition":{"x":0.84940624,"y":0.45596075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.11333,"y":85.551994,"z":0.0},"screenPosition":{"x":0.85652775,"y":0.5215555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.14752,"y":85.57786,"z":0.0},"screenPosition":{"x":0.87807345,"y":0.52191466},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.52618,"y":82.41783,"z":-1.4210855E-14},"screenPosition":{"x":0.92762893,"y":0.4780254},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.61555,"y":77.45082,"z":0.0},"screenPosition":{"x":0.9086573,"y":0.4090392},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.35867,"y":79.364044,"z":0.0},"screenPosition":{"x":0.77830553,"y":0.43561178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.0231,"y":80.800415,"z":-1.4210855E-14},"screenPosition":{"x":0.729648,"y":0.45556134},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.83092,"y":77.89605,"z":0.0},"screenPosition":{"x":0.7048109,"y":0.41522288},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.38304,"y":80.619415,"z":0.0},"screenPosition":{"x":0.6746466,"y":0.45304748},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.73378,"y":83.59272,"z":0.0},"screenPosition":{"x":0.66112036,"y":0.49434337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.53098,"y":90.866585,"z":0.0},"screenPosition":{"x":0.7818953,"y":0.5953692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.06699,"y":88.66028,"z":0.0},"screenPosition":{"x":0.6680623,"y":0.56472605},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.12535,"y":91.48136,"z":0.0},"screenPosition":{"x":0.81511146,"y":0.6039078},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.40402,"y":89.53363,"z":0.0},"screenPosition":{"x":0.82091707,"y":0.576856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.09348,"y":89.55087,"z":0.0},"screenPosition":{"x":0.8352809,"y":0.57709545},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.73668,"y":92.81146,"z":0.0},"screenPosition":{"x":0.8695142,"y":0.62238145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.52097,"y":89.03666,"z":1.4210855E-14},"screenPosition":{"x":0.88585347,"y":0.5699536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.8094,"y":81.12506,"z":-1.4210855E-14},"screenPosition":{"x":0.8085292,"y":0.46007025},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.46326,"y":83.54108,"z":-1.4210855E-14},"screenPosition":{"x":0.9054846,"y":0.49362603},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.25496,"y":80.30632,"z":-1.4210855E-14},"screenPosition":{"x":0.7969784,"y":0.44869885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.69394,"y":79.332466,"z":0.0},"screenPosition":{"x":0.8477905,"y":0.43517312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.50941,"y":84.76194,"z":-1.4210855E-14},"screenPosition":{"x":0.67727953,"y":0.5105825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.35402,"y":83.17331,"z":0.0},"screenPosition":{"x":0.69487536,"y":0.48851818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.74814,"y":83.01817,"z":0.0},"screenPosition":{"x":0.6614197,"y":0.48636347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.79439,"y":84.37411,"z":0.0},"screenPosition":{"x":0.6415496,"y":0.505196},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.92854,"y":87.786964,"z":0.0},"screenPosition":{"x":0.7068447,"y":0.55259675},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.21294,"y":90.2087,"z":0.0},"screenPosition":{"x":0.7127695,"y":0.586232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.02306,"y":89.999,"z":0.0},"screenPosition":{"x":0.729647,"y":0.5833194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.76309,"y":93.56699,"z":0.0},"screenPosition":{"x":0.82839775,"y":0.63287485},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.26985,"y":86.12077,"z":0.0},"screenPosition":{"x":0.75562197,"y":0.52945524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.08748,"y":86.58619,"z":0.0},"screenPosition":{"x":0.85598904,"y":0.5359193},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.26523,"y":85.33075,"z":0.0},"screenPosition":{"x":0.6721923,"y":0.51848257},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.6261,"y":81.070465,"z":0.0},"screenPosition":{"x":0.7630438,"y":0.459312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.77165,"y":88.4879,"z":-1.4210855E-14},"screenPosition":{"x":0.62024283,"y":0.5623319},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.32353,"y":83.41747,"z":0.0},"screenPosition":{"x":0.61090696,"y":0.49190933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.93225,"y":88.05699,"z":-1.4210855E-14},"screenPosition":{"x":0.644422,"y":0.5563471},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.03993,"y":90.57925,"z":0.0},"screenPosition":{"x":0.5424985,"y":0.59137845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.19394,"y":89.993225,"z":-1.4210855E-14},"screenPosition":{"x":0.62904054,"y":0.58323926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.21866,"y":94.57817,"z":0.0},"screenPosition":{"x":0.7128887,"y":0.6469191},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.89694,"y":89.05098,"z":-1.4210855E-14},"screenPosition":{"x":0.70618623,"y":0.5701525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.62228,"y":85.264656,"z":-1.4210855E-14},"screenPosition":{"x":0.61713105,"y":0.5175647},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.2075,"y":84.43445,"z":0.0},"screenPosition":{"x":0.69182295,"y":0.506034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.7082,"y":83.22213,"z":-1.4210855E-14},"screenPosition":{"x":0.63975424,"y":0.48919627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.87221,"y":89.06532,"z":0.0},"screenPosition":{"x":0.6223375,"y":0.5703517},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.20343,"y":85.434135,"z":0.0},"screenPosition":{"x":0.566738,"y":0.5199186},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.9405,"y":88.98197,"z":-1.4210855E-14},"screenPosition":{"x":0.45709392,"y":0.569194},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.70695,"y":93.30549,"z":0.0},"screenPosition":{"x":0.51472825,"y":0.62924296},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.83022,"y":89.76913,"z":0.0},"screenPosition":{"x":0.5381296,"y":0.58012676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.34789,"y":89.27213,"z":0.0},"screenPosition":{"x":0.5072475,"y":0.57322407},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.30426,"y":84.60678,"z":1.4210855E-14},"screenPosition":{"x":0.5480053,"y":0.5084275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.08676,"y":84.52632,"z":0.0},"screenPosition":{"x":0.48097423,"y":0.5073101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.57822,"y":81.73395,"z":0.0},"screenPosition":{"x":0.26204622,"y":0.46852705},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.78046,"y":91.2026,"z":0.0},"screenPosition":{"x":0.39125958,"y":0.6000361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.5067,"y":92.535576,"z":-1.4210855E-14},"screenPosition":{"x":0.4480563,"y":0.61854964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.40668,"y":98.34716,"z":0.0},"screenPosition":{"x":0.40430593,"y":0.6992661},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.16945,"y":97.80136,"z":0.0},"screenPosition":{"x":0.52436346,"y":0.6916856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.3022,"y":103.638855,"z":0.0},"screenPosition":{"x":0.69379586,"y":0.7727619},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.62022,"y":90.36379,"z":0.0},"screenPosition":{"x":0.5545881,"y":0.588386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.56992,"y":90.007545,"z":0.0},"screenPosition":{"x":0.44937328,"y":0.5834381},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.4472,"y":95.333626,"z":0.0},"screenPosition":{"x":0.38431662,"y":0.6574115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.50616,"y":104.678795,"z":0.0},"screenPosition":{"x":0.6980451,"y":0.7872055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.41565,"y":101.332,"z":-1.4210855E-14},"screenPosition":{"x":0.5919927,"y":0.7407223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.7348,"y":100.97003,"z":0.0},"screenPosition":{"x":0.57780844,"y":0.7356949},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.64398,"y":103.62732,"z":0.0},"screenPosition":{"x":0.4925829,"y":0.7726016},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.58969,"y":99.80654,"z":0.0},"screenPosition":{"x":0.47061867,"y":0.71953523},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.06345,"y":96.04897,"z":0.0},"screenPosition":{"x":0.50132173,"y":0.6673469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.02786,"y":93.84846,"z":-1.4210855E-14},"screenPosition":{"x":0.5839138,"y":0.6367842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.50334,"y":95.59513,"z":0.0},"screenPosition":{"x":0.6979862,"y":0.6610434},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.3278,"y":99.41016,"z":-1.4210855E-14},"screenPosition":{"x":0.71516246,"y":0.71402997},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.32202,"y":104.23927,"z":0.0},"screenPosition":{"x":0.71504223,"y":0.781101},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.60156,"y":98.07719,"z":-1.4210855E-14},"screenPosition":{"x":0.6583657,"y":0.6955164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.51645,"y":105.103935,"z":0.0},"screenPosition":{"x":0.5732595,"y":0.7931102},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.5403,"y":99.9703,"z":-1.4210855E-14},"screenPosition":{"x":0.5112562,"y":0.7218097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.26341,"y":98.22368,"z":-1.4210855E-14},"screenPosition":{"x":0.588821,"y":0.6975511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.72508,"y":97.73533,"z":0.0},"screenPosition":{"x":0.6609393,"y":0.6907684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.32492,"y":99.52507,"z":0.0},"screenPosition":{"x":0.7151026,"y":0.71562594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.8546,"y":104.95744,"z":-1.4210855E-14},"screenPosition":{"x":0.6428042,"y":0.7910756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.07097,"y":106.05775,"z":0.0},"screenPosition":{"x":0.79314524,"y":0.80635756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.98561,"y":109.88999,"z":0.0},"screenPosition":{"x":0.7288668,"y":0.85958326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.19069,"y":109.91008,"z":0.0},"screenPosition":{"x":0.649806,"y":0.85986227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.0048,"y":108.56561,"z":-1.4210855E-14},"screenPosition":{"x":0.58343345,"y":0.8411891},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.21796,"y":106.451256,"z":0.0},"screenPosition":{"x":0.5462075,"y":0.81182295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.1292,"y":104.0094,"z":0.0},"screenPosition":{"x":0.5235249,"y":0.7779083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.76357,"y":95.22164,"z":0.0},"screenPosition":{"x":0.5784075,"y":0.6558561},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.4938,"y":95.41985,"z":0.0},"screenPosition":{"x":0.5519542,"y":0.65860903},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.84598,"y":91.36923,"z":-1.4210855E-14},"screenPosition":{"x":0.43429112,"y":0.6023504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.30042,"y":93.40026,"z":0.0},"screenPosition":{"x":0.40209204,"y":0.6305592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.57713,"y":92.08745,"z":0.0},"screenPosition":{"x":0.5536902,"y":0.61232567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.42366,"y":94.46319,"z":0.0},"screenPosition":{"x":0.42549294,"y":0.6453221},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.07867,"y":91.26006,"z":-1.4210855E-14},"screenPosition":{"x":0.43913892,"y":0.60083425},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.30042,"y":93.40026,"z":0.0},"screenPosition":{"x":0.40209204,"y":0.6305592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.54515,"y":94.62118,"z":0.0},"screenPosition":{"x":0.36552405,"y":0.64751637},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.97374,"y":97.68641,"z":0.0},"screenPosition":{"x":0.3327862,"y":0.690089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.84845,"y":97.12332,"z":0.0},"screenPosition":{"x":0.24684285,"y":0.6822684},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.52533,"y":94.02077,"z":-1.4210855E-14},"screenPosition":{"x":0.34427765,"y":0.6391773},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.40642,"y":95.15266,"z":0.0},"screenPosition":{"x":0.4251338,"y":0.654898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.53572,"y":89.98168,"z":0.0},"screenPosition":{"x":0.42782757,"y":0.583079},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.02614,"y":88.34423,"z":0.0},"screenPosition":{"x":0.5005445,"y":0.56033653},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.86528,"y":85.580635,"z":0.0},"screenPosition":{"x":0.49719325,"y":0.5219532},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.78487,"y":79.59954,"z":0.0},"screenPosition":{"x":0.49551812,"y":0.43888256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.90579,"y":82.5671,"z":0.0},"screenPosition":{"x":0.47720394,"y":0.48009863},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.77367,"y":78.6544,"z":0.0},"screenPosition":{"x":0.4744513,"y":0.42575556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.7682,"y":77.47944,"z":0.0},"screenPosition":{"x":0.4535042,"y":0.4094366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.67917,"y":71.84308,"z":0.0},"screenPosition":{"x":0.45164952,"y":0.33115387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.30083,"y":68.99902,"z":-1.4210855E-14},"screenPosition":{"x":0.38126716,"y":0.29165316},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.87991,"y":69.66835,"z":1.4210855E-14},"screenPosition":{"x":0.26833168,"y":0.30094934},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.31519,"y":68.42448,"z":-1.4210855E-14},"screenPosition":{"x":0.38156646,"y":0.28367326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.6602,"y":67.02831,"z":0.0},"screenPosition":{"x":0.36792102,"y":0.26428208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.31918,"y":67.28971,"z":0.0},"screenPosition":{"x":0.2983164,"y":0.2679127},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.34186,"y":72.374504,"z":0.0},"screenPosition":{"x":0.31962213,"y":0.3385348},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.4637,"y":75.86207,"z":0.0},"screenPosition":{"x":0.4471604,"y":0.3869732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.24733,"y":74.761765,"z":0.0},"screenPosition":{"x":0.29681933,"y":0.37169117},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.7863,"y":72.575615,"z":0.0},"screenPosition":{"x":0.3913813,"y":0.34132802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.72281,"y":76.50843,"z":-1.4210855E-14},"screenPosition":{"x":0.4108917,"y":0.39595044},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.59297,"y":75.29039,"z":0.0},"screenPosition":{"x":0.44985366,"y":0.3790332},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.26494,"y":72.80259,"z":0.0},"screenPosition":{"x":0.48468617,"y":0.3444804},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.45827,"y":70.087814,"z":-1.4210855E-14},"screenPosition":{"x":0.4262138,"y":0.3067752},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.7524,"y":71.14497,"z":0.0},"screenPosition":{"x":0.34900823,"y":0.32145792},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.71588,"y":73.02374,"z":0.0},"screenPosition":{"x":0.28574744,"y":0.34755197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.20055,"y":71.616104,"z":0.0},"screenPosition":{"x":0.35834464,"y":0.32800147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.44359,"y":76.66644,"z":0.0},"screenPosition":{"x":0.44674134,"y":0.39814502},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.72508,"y":83.80238,"z":0.0},"screenPosition":{"x":0.45260578,"y":0.4972553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.66222,"y":71.127754,"z":-1.4210855E-14},"screenPosition":{"x":0.43046296,"y":0.32121882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.96416,"y":66.85596,"z":0.0},"screenPosition":{"x":0.41592008,"y":0.26188827},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.67494,"y":65.184044,"z":0.0},"screenPosition":{"x":0.55572796,"y":0.23866728},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.81488,"y":63.767788,"z":0.0},"screenPosition":{"x":0.6211433,"y":0.21899708},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.9841,"y":62.99215,"z":0.0},"screenPosition":{"x":0.645502,"y":0.20822431},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.80626,"y":64.11252,"z":0.0},"screenPosition":{"x":0.6209637,"y":0.22378501},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.46931,"y":63.374233,"z":-1.4210855E-14},"screenPosition":{"x":0.676444,"y":0.21353105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.45648,"y":52.460644,"z":-1.4210855E-14},"screenPosition":{"x":0.78034335,"y":0.06195336},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.88763,"y":61.415035,"z":0.0},"screenPosition":{"x":0.7684922,"y":0.18631993},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.6266,"y":78.125824,"z":0.0},"screenPosition":{"x":0.5130541,"y":0.41841418},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.0408,"y":60.44408,"z":0.0},"screenPosition":{"x":0.9175168,"y":0.17283443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.5332,"y":53.57242,"z":-1.4210855E-14},"screenPosition":{"x":0.8444417,"y":0.07739467},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.88339,"y":54.756,"z":0.0},"screenPosition":{"x":0.8725707,"y":0.09383335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.06696,"y":58.0051,"z":0.0},"screenPosition":{"x":0.8972282,"y":0.13895972},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.81386,"y":60.32342,"z":0.0},"screenPosition":{"x":0.91278875,"y":0.17115864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.8891,"y":63.724762,"z":0.0},"screenPosition":{"x":0.8726894,"y":0.21839945},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.5679,"y":64.58658,"z":0.0},"screenPosition":{"x":0.82433116,"y":0.23036912},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.88042,"y":59.33513,"z":0.0},"screenPosition":{"x":0.66417533,"y":0.15743236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.86487,"y":56.19517,"z":0.0},"screenPosition":{"x":0.53885144,"y":0.11382182},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.70482,"y":58.4158,"z":0.0},"screenPosition":{"x":0.47301713,"y":0.14466387},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.43178,"y":83.13016,"z":0.0},"screenPosition":{"x":0.46732876,"y":0.48791888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.96829,"y":56.657684,"z":0.0},"screenPosition":{"x":0.54100597,"y":0.120245636},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.87746,"y":59.31497,"z":0.0},"screenPosition":{"x":0.45578045,"y":0.15715234},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.33449,"y":62.635876,"z":-1.4210855E-14},"screenPosition":{"x":0.4444686,"y":0.20327607},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.7263,"y":64.38537,"z":0.0},"screenPosition":{"x":0.36929783,"y":0.22757459},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.52835,"y":66.31011,"z":-1.4210855E-14},"screenPosition":{"x":0.3443405,"y":0.25430712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.95897,"y":68.875496,"z":0.0},"screenPosition":{"x":0.37414512,"y":0.28993747},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.62401,"y":62.903004,"z":0.0},"screenPosition":{"x":0.28383335,"y":0.20698616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.25053,"y":64.04349,"z":-1.4210855E-14},"screenPosition":{"x":0.27605283,"y":0.22282623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.93864,"y":57.286785,"z":-1.4210855E-14},"screenPosition":{"x":0.39455497,"y":0.12898311},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.36314,"y":61.3517,"z":-1.4210855E-14},"screenPosition":{"x":0.23673221,"y":0.1854403},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.38937,"y":59.047794,"z":-1.4210855E-14},"screenPosition":{"x":0.4247786,"y":0.15344158},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.33885,"y":60.231403,"z":0.0},"screenPosition":{"x":0.54872614,"y":0.16988058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61537,"y":81.77997,"z":-1.4210855E-14},"screenPosition":{"x":0.49198678,"y":0.46916622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.96367,"y":55.867657,"z":0.0},"screenPosition":{"x":0.4575763,"y":0.109272994},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.77034,"y":58.582428,"z":0.0},"screenPosition":{"x":0.51604867,"y":0.14697818},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.18745,"y":57.508007,"z":-1.4210855E-14},"screenPosition":{"x":0.4830719,"y":0.13205567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.3015,"y":61.72524,"z":0.0},"screenPosition":{"x":0.54794794,"y":0.1906283},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.21642,"y":64.1527,"z":0.0},"screenPosition":{"x":0.46284214,"y":0.22434305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.64531,"y":61.213852,"z":0.0},"screenPosition":{"x":0.40927744,"y":0.18352573},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.40607,"y":56.56861,"z":0.0},"screenPosition":{"x":0.466793,"y":0.1190085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.78099,"y":57.737854,"z":0.0},"screenPosition":{"x":0.5787707,"y":0.13524796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.13322,"y":58.421593,"z":-1.4210855E-14},"screenPosition":{"x":0.6694422,"y":0.14474435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.22513,"y":63.94304,"z":-1.4210855E-14},"screenPosition":{"x":0.67135674,"y":0.22143112},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.66891,"y":66.81865,"z":0.0},"screenPosition":{"x":0.5764356,"y":0.26137015},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.33334,"y":68.25502,"z":0.0},"screenPosition":{"x":0.5277781,"y":0.2813197},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.08748,"y":54.121014,"z":-1.4210855E-14},"screenPosition":{"x":0.4393225,"y":0.08501406},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.21329,"y":61.073105,"z":0.0},"screenPosition":{"x":0.48361015,"y":0.1815709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.1828,"y":61.31727,"z":-1.4210855E-14},"screenPosition":{"x":0.3996417,"y":0.18496206},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.9556,"y":58.002106,"z":0.0},"screenPosition":{"x":0.4157415,"y":0.13891815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.3839,"y":62.47212,"z":0.0},"screenPosition":{"x":0.40383103,"y":0.20100166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.01398,"y":56.223904,"z":-1.4210855E-14},"screenPosition":{"x":0.5627911,"y":0.114220895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.20412,"y":59.628117,"z":0.0},"screenPosition":{"x":0.5250858,"y":0.16150162},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.52419,"y":59.78615,"z":-1.4210855E-14},"screenPosition":{"x":0.65675396,"y":0.16369654},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.53372,"y":59.961426,"z":0.0},"screenPosition":{"x":0.802786,"y":0.16613092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.67856,"y":83.85123,"z":0.0},"screenPosition":{"x":0.49330324,"y":0.49793375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.7236,"y":60.171135,"z":0.0},"screenPosition":{"x":0.78590846,"y":0.16904353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.90262,"y":62.765274,"z":-1.4210855E-14},"screenPosition":{"x":0.9354713,"y":0.20507325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.30965,"y":59.72586,"z":0.0},"screenPosition":{"x":0.79811776,"y":0.16285916},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.28583,"y":60.26021,"z":0.0},"screenPosition":{"x":0.8601215,"y":0.17028067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.58405,"y":60.317677,"z":-1.4210855E-14},"screenPosition":{"x":0.9080008,"y":0.17107882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.621,"y":64.69284,"z":0.0},"screenPosition":{"x":0.72127086,"y":0.23184505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":68.41981,"z":1.0},"screenPosition":{"x":1.0,"y":0.28360847},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.90114,"y":65.05484,"z":-1.4210855E-14},"screenPosition":{"x":0.8312736,"y":0.23687276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.71523,"y":68.30966,"z":0.0},"screenPosition":{"x":0.7649005,"y":0.28207862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.20772,"y":56.973778,"z":0.0},"screenPosition":{"x":0.9001609,"y":0.12463582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.67062,"y":58.38994,"z":0.0},"screenPosition":{"x":0.45147142,"y":0.1443047},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.18066,"y":58.892754,"z":-1.4210855E-14},"screenPosition":{"x":0.7745971,"y":0.15128823},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.12526,"y":56.091827,"z":0.0},"screenPosition":{"x":0.83594286,"y":0.112386465},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.18187,"y":58.007973,"z":0.0},"screenPosition":{"x":0.89962214,"y":0.13899963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.58087,"y":61.83737,"z":0.0},"screenPosition":{"x":0.92876834,"y":0.1921857},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.54436,"y":63.71614,"z":0.0},"screenPosition":{"x":0.86550754,"y":0.21827973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.02429,"y":65.9827,"z":0.0},"screenPosition":{"x":0.64633954,"y":0.24975964},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.99023,"y":56.893326,"z":-1.4210855E-14},"screenPosition":{"x":0.8331298,"y":0.12351841},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.9313,"y":56.88181,"z":0.0},"screenPosition":{"x":0.7277354,"y":0.12335844},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.68591,"y":72.26833,"z":0.0},"screenPosition":{"x":0.80595666,"y":0.3370602},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.2223,"y":68.79231,"z":-1.4210855E-14},"screenPosition":{"x":0.8796314,"y":0.28878212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.56667,"y":70.07065,"z":-1.4210855E-14},"screenPosition":{"x":0.69930565,"y":0.30653676},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.52303,"y":70.004585,"z":0.0},"screenPosition":{"x":0.74006295,"y":0.3056192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.57227,"y":83.503624,"z":-1.4210855E-14},"screenPosition":{"x":0.49108887,"y":0.4931059},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.61841,"y":63.40297,"z":0.0},"screenPosition":{"x":0.70038366,"y":0.21393012},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.95024,"y":66.29587,"z":0.0},"screenPosition":{"x":0.8114634,"y":0.25410926},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.34328,"y":62.56129,"z":0.0},"screenPosition":{"x":0.8613182,"y":0.20224014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.08527,"y":65.49437,"z":0.0},"screenPosition":{"x":0.8142764,"y":0.24297732},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.17572,"y":64.1068,"z":-1.4210855E-14},"screenPosition":{"x":0.7119943,"y":0.22370553},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.6184,"y":68.00226,"z":0.0},"screenPosition":{"x":0.7003831,"y":0.27780914},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.37938,"y":71.15081,"z":-1.4210855E-14},"screenPosition":{"x":0.7370704,"y":0.32153907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.3562,"y":69.010666,"z":0.0},"screenPosition":{"x":0.96575433,"y":0.29181477},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.23409,"y":66.92789,"z":0.0},"screenPosition":{"x":0.8590435,"y":0.2628873},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.26913,"y":62.73939,"z":-1.4210855E-14},"screenPosition":{"x":0.81810707,"y":0.20471375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.97122,"y":61.277138,"z":-1.4210855E-14},"screenPosition":{"x":0.7494004,"y":0.18440469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.50954,"y":61.765488,"z":0.0},"screenPosition":{"x":0.67728204,"y":0.19118735},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.9601,"y":81.78859,"z":0.0},"screenPosition":{"x":0.4991687,"y":0.46928594},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.20702,"y":68.846855,"z":-1.4210855E-14},"screenPosition":{"x":0.7334797,"y":0.2895397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.61662,"y":71.69661,"z":0.0},"screenPosition":{"x":0.6170128,"y":0.32911956},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.67981,"y":73.76787,"z":-1.4210855E-14},"screenPosition":{"x":0.6183293,"y":0.3578871},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.08116,"y":71.093346,"z":-1.4210855E-14},"screenPosition":{"x":0.689191,"y":0.32074094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.44601,"y":70.29759,"z":0.0},"screenPosition":{"x":0.69679195,"y":0.3096888},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.35873,"y":65.56618,"z":0.0},"screenPosition":{"x":0.778307,"y":0.24397469},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.73875,"y":69.1801,"z":0.0},"screenPosition":{"x":0.7237242,"y":0.294168},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.26556,"y":74.72738,"z":0.0},"screenPosition":{"x":0.65136594,"y":0.37121361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.06967,"y":71.552986,"z":0.0},"screenPosition":{"x":0.68895155,"y":0.32712483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.1447,"y":76.49419,"z":0.0},"screenPosition":{"x":0.8780146,"y":0.39575255},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.22917,"y":67.54264,"z":0.0},"screenPosition":{"x":0.79644114,"y":0.27142558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.01288,"y":66.57741,"z":0.0},"screenPosition":{"x":0.8544351,"y":0.25801957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":167.43063,"y":67.42778,"z":-1.4210855E-14},"screenPosition":{"x":0.9881381,"y":0.26983026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.16481,"y":75.68981,"z":1.4210855E-14},"screenPosition":{"x":0.87843364,"y":0.38458073},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.13979,"y":77.10894,"z":0.0},"screenPosition":{"x":0.8154123,"y":0.40429083},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.73706,"y":73.00952,"z":0.0},"screenPosition":{"x":0.8486889,"y":0.3473544},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.72638,"y":78.453384,"z":0.0},"screenPosition":{"x":0.78596634,"y":0.42296368},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.44116,"y":75.64671,"z":-1.4210855E-14},"screenPosition":{"x":0.8425241,"y":0.3839821},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.30753,"y":78.62286,"z":0.0},"screenPosition":{"x":0.7355733,"y":0.42531756},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.07399,"y":78.34709,"z":0.0},"screenPosition":{"x":0.7932081,"y":0.42148742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.99818,"y":77.755325,"z":-1.4210855E-14},"screenPosition":{"x":0.87496215,"y":0.41326842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.48703,"y":92.20531,"z":0.0},"screenPosition":{"x":0.84347993,"y":0.6139626},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.42123,"y":93.44346,"z":0.0},"screenPosition":{"x":0.8212757,"y":0.6311592},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.24915,"y":94.33401,"z":0.0},"screenPosition":{"x":0.7968572,"y":0.6435279},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.04488,"y":99.29814,"z":0.0},"screenPosition":{"x":0.81343484,"y":0.7124742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.9081,"y":99.1947,"z":1.4210855E-14},"screenPosition":{"x":0.72725207,"y":0.7110376},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.49164,"y":97.59463,"z":0.0},"screenPosition":{"x":0.9269091,"y":0.6888142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.9035,"y":107.73833,"z":0.0},"screenPosition":{"x":0.85215634,"y":0.829699},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.56976,"y":96.28176,"z":-1.4210855E-14},"screenPosition":{"x":0.88687015,"y":0.6705801},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.1966,"y":96.01746,"z":0.0},"screenPosition":{"x":0.85826224,"y":0.6669092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.02625,"y":97.81295,"z":-1.4210855E-14},"screenPosition":{"x":0.9172135,"y":0.69184655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.81395,"y":95.71296,"z":0.0},"screenPosition":{"x":0.8919574,"y":0.66268},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.87743,"y":96.37943,"z":0.0},"screenPosition":{"x":0.8724465,"y":0.6719366},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.57721,"y":92.22252,"z":0.0},"screenPosition":{"x":0.7620252,"y":0.61420166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.57718,"y":96.821815,"z":0.0},"screenPosition":{"x":0.7620247,"y":0.67808074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.77226,"y":95.01198,"z":0.0},"screenPosition":{"x":0.78692216,"y":0.65294415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.38904,"y":102.11633,"z":-1.4210855E-14},"screenPosition":{"x":0.8622715,"y":0.75161576},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.69588,"y":97.22978,"z":0.0},"screenPosition":{"x":0.9103309,"y":0.68374693},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.74556,"y":95.66124,"z":0.0},"screenPosition":{"x":0.848866,"y":0.6619617},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.51945,"y":95.925514,"z":-1.4210855E-14},"screenPosition":{"x":0.7816553,"y":0.6656322},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.10974,"y":102.139275,"z":-1.4210855E-14},"screenPosition":{"x":0.68978614,"y":0.75193435},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.04106,"y":103.49234,"z":0.0},"screenPosition":{"x":0.6675221,"y":0.7707269},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.93506,"y":101.73995,"z":-1.4210855E-14},"screenPosition":{"x":0.64448035,"y":0.7463882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.97813,"y":104.615585,"z":-1.4210855E-14},"screenPosition":{"x":0.64537776,"y":0.78632754},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.8026,"y":108.43062,"z":0.0},"screenPosition":{"x":0.6625541,"y":0.8393141},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.92871,"y":109.37863,"z":0.0},"screenPosition":{"x":0.68601483,"y":0.852481},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.56071,"y":111.69408,"z":0.0},"screenPosition":{"x":0.69918144,"y":0.88464},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.61186,"y":112.435265,"z":-1.4210855E-14},"screenPosition":{"x":0.7419137,"y":0.89493424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.37025,"y":114.293945,"z":-1.4210855E-14},"screenPosition":{"x":0.7577136,"y":0.9207492},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.97871,"y":115.73895,"z":-1.4210855E-14},"screenPosition":{"x":0.81205654,"y":0.94081885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.027,"y":116.59505,"z":0.0},"screenPosition":{"x":0.85472894,"y":0.952709},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.9862,"y":116.41408,"z":0.0},"screenPosition":{"x":0.8955461,"y":0.9501955},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.79895,"y":112.89495,"z":0.0},"screenPosition":{"x":0.9333113,"y":0.9013188},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.99487,"y":106.870766,"z":0.0},"screenPosition":{"x":0.8957267,"y":0.8176495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.53027,"y":116.67261,"z":0.0},"screenPosition":{"x":0.8235475,"y":0.9537862},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.39326,"y":108.77537,"z":-1.4210855E-14},"screenPosition":{"x":0.758193,"y":0.8441024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.16629,"y":113.254005,"z":0.0},"screenPosition":{"x":0.75346446,"y":0.9063056},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.61703,"y":115.015015,"z":0.0},"screenPosition":{"x":0.7836881,"y":0.9307641},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.42111,"y":116.43991,"z":-1.4210855E-14},"screenPosition":{"x":0.82127327,"y":0.9505543},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.71645,"y":116.61229,"z":0.0},"screenPosition":{"x":0.8690927,"y":0.95294845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.17554,"y":114.83406,"z":0.0},"screenPosition":{"x":0.92032385,"y":0.92825085},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.93109,"y":112.20837,"z":0.0},"screenPosition":{"x":0.9360644,"y":0.8917828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.19855,"y":109.31549,"z":0.0},"screenPosition":{"x":0.9208032,"y":0.85160404},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.77739,"y":106.790306,"z":0.0},"screenPosition":{"x":0.8286956,"y":0.8165321},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.93457,"y":104.68459,"z":0.0},"screenPosition":{"x":0.8944701,"y":0.787286},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.78026,"y":106.6754,"z":0.0},"screenPosition":{"x":0.82875544,"y":0.8149361},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.53061,"y":106.06924,"z":-1.4210855E-14},"screenPosition":{"x":0.80272114,"y":0.80651724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.3249,"y":104.12436,"z":-1.4210855E-14},"screenPosition":{"x":0.71510214,"y":0.779505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.10373,"y":99.17459,"z":-1.4210855E-14},"screenPosition":{"x":0.7104943,"y":0.7107582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.12392,"y":98.50529,"z":0.0},"screenPosition":{"x":0.9192483,"y":0.7014623},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.34337,"y":97.95083,"z":0.0},"screenPosition":{"x":0.8404868,"y":0.69376147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.79442,"y":93.70776,"z":0.0},"screenPosition":{"x":0.8498836,"y":0.63483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.2621,"y":96.1841,"z":0.0},"screenPosition":{"x":0.9012938,"y":0.66922355},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.22734,"y":98.967804,"z":0.0},"screenPosition":{"x":0.9214028,"y":0.70788616},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.24312,"y":95.96861,"z":0.0},"screenPosition":{"x":0.81756485,"y":0.6662308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.96045,"y":99.05111,"z":-1.4210855E-14},"screenPosition":{"x":0.89500934,"y":0.70904315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.9848,"y":104.90577,"z":-1.4210855E-14},"screenPosition":{"x":0.7913499,"y":0.7903579},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.68948,"y":100.1341,"z":0.0},"screenPosition":{"x":0.7435309,"y":0.72408473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.5059,"y":101.48429,"z":0.0},"screenPosition":{"x":0.7188729,"y":0.74283737},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.66457,"y":97.08901,"z":0.0},"screenPosition":{"x":0.8888451,"y":0.68179184},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.09805,"y":99.53948,"z":-1.4210855E-14},"screenPosition":{"x":0.9187096,"y":0.71582615},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.23436,"y":105.376854,"z":0.0},"screenPosition":{"x":0.6090492,"y":0.7969008},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.64803,"y":107.22691,"z":-1.4210855E-14},"screenPosition":{"x":0.6176673,"y":0.8225961},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.21942,"y":108.76098,"z":-1.4210855E-14},"screenPosition":{"x":0.65040463,"y":0.84390247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.60898,"y":112.55017,"z":0.0},"screenPosition":{"x":0.7418538,"y":0.8965302},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.40556,"y":113.29995,"z":0.0},"screenPosition":{"x":0.6959494,"y":0.9069438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.47942,"y":114.526634,"z":-1.4210855E-14},"screenPosition":{"x":0.7599879,"y":0.9239811},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.8296,"y":115.71022,"z":0.0},"screenPosition":{"x":0.7881169,"y":0.94041973},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.21974,"y":116.68985,"z":0.0},"screenPosition":{"x":0.8379113,"y":0.9540256},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.53807,"y":115.94294,"z":-1.4210855E-14},"screenPosition":{"x":0.88620967,"y":0.943652},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.08075,"y":114.02682,"z":0.0},"screenPosition":{"x":0.9183489,"y":0.9170391},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.59814,"y":110.33532,"z":-1.4210855E-14},"screenPosition":{"x":0.9082946,"y":0.86576825},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.65274,"y":108.152016,"z":-1.4210855E-14},"screenPosition":{"x":0.909432,"y":0.8354447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.06068,"y":105.63261,"z":0.0},"screenPosition":{"x":0.91793084,"y":0.8004529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.43156,"y":103.20225,"z":0.0},"screenPosition":{"x":0.90482414,"y":0.76669794},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.99344,"y":99.96175,"z":0.0},"screenPosition":{"x":0.79153,"y":0.72169095},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.57718,"y":96.821815,"z":0.0},"screenPosition":{"x":0.7620247,"y":0.67808074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.92395,"y":96.33059,"z":0.0},"screenPosition":{"x":0.831749,"y":0.67125815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.21234,"y":97.61756,"z":0.0},"screenPosition":{"x":0.75442374,"y":0.68913287},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.81303,"y":95.192955,"z":0.0},"screenPosition":{"x":0.74610496,"y":0.6554577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.57718,"y":96.821815,"z":0.0},"screenPosition":{"x":0.7620247,"y":0.67808074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.89156,"y":88.011086,"z":-1.4210855E-14},"screenPosition":{"x":0.8935741,"y":0.55570954},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.00958,"y":95.69285,"z":-1.4210855E-14},"screenPosition":{"x":0.8751996,"y":0.6624006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.85992,"y":93.87439,"z":0.0},"screenPosition":{"x":0.8929152,"y":0.6371443},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.47212,"y":90.990135,"z":-1.4210855E-14},"screenPosition":{"x":0.88483584,"y":0.59708524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.21072,"y":87.64912,"z":0.0},"screenPosition":{"x":0.87938994,"y":0.5506822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.50775,"y":83.99207,"z":0.0},"screenPosition":{"x":0.8022447,"y":0.49988988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.28368,"y":83.75651,"z":0.0},"screenPosition":{"x":0.7975765,"y":0.49661812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.50952,"y":80.29772,"z":0.0},"screenPosition":{"x":0.88561505,"y":0.44857946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.37274,"y":80.19428,"z":0.0},"screenPosition":{"x":0.7994322,"y":0.44714278},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.23772,"y":80.99578,"z":0.0},"screenPosition":{"x":0.79661924,"y":0.45827472},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.55113,"y":80.86363,"z":0.0},"screenPosition":{"x":0.78231525,"y":0.45643932},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.97627,"y":86.85334,"z":0.0},"screenPosition":{"x":0.7911723,"y":0.5396297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.11333,"y":85.551994,"z":0.0},"screenPosition":{"x":0.85652775,"y":0.5215555},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.11765,"y":78.413155,"z":0.0},"screenPosition":{"x":0.7524508,"y":0.42240497},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.5876,"y":74.250496,"z":0.0},"screenPosition":{"x":0.63724154,"y":0.36459026},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.6569,"y":74.82223,"z":0.0},"screenPosition":{"x":0.8261854,"y":0.3725309},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.3133,"y":73.793755,"z":0.0},"screenPosition":{"x":0.7356935,"y":0.35824656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.1639,"y":75.16981,"z":0.0},"screenPosition":{"x":0.7325812,"y":0.3773584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.68073,"y":74.28787,"z":0.0},"screenPosition":{"x":0.7641817,"y":0.36510938},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.77487,"y":77.76962,"z":0.0},"screenPosition":{"x":0.59947634,"y":0.41346696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.65677,"y":83.885735,"z":-1.4210855E-14},"screenPosition":{"x":0.6178494,"y":0.49841297},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.74901,"y":78.80382,"z":-1.4210855E-14},"screenPosition":{"x":0.5989376,"y":0.42783076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.9048,"y":74.523445,"z":-1.4210855E-14},"screenPosition":{"x":0.7688499,"y":0.36838114},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.86598,"y":73.70755,"z":-1.4210855E-14},"screenPosition":{"x":0.6638745,"y":0.35704935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.06474,"y":76.76704,"z":0.0},"screenPosition":{"x":0.62634873,"y":0.39954215},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.74901,"y":78.80382,"z":-1.4210855E-14},"screenPosition":{"x":0.5989376,"y":0.42783076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.73203,"y":82.68778,"z":-1.4210855E-14},"screenPosition":{"x":0.57775056,"y":0.48177475},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.96872,"y":81.443855,"z":0.0},"screenPosition":{"x":0.49934825,"y":0.464498},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.74234,"y":78.513626,"z":-1.4210855E-14},"screenPosition":{"x":0.45296547,"y":0.4238004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.15695,"y":76.28441,"z":0.0},"screenPosition":{"x":0.6074365,"y":0.39283895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.2566,"y":71.74253,"z":0.0},"screenPosition":{"x":0.4636792,"y":0.32975742},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.40976,"y":75.37087,"z":0.0},"screenPosition":{"x":0.61270326,"y":0.38015094},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.3687,"y":76.59468,"z":0.0},"screenPosition":{"x":0.6743478,"y":0.39714834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.37814,"y":76.63488,"z":0.0},"screenPosition":{"x":0.6120448,"y":0.39770672},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.38074,"y":77.92476,"z":0.0},"screenPosition":{"x":0.632932,"y":0.41562164},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.82547,"y":76.721085,"z":0.0},"screenPosition":{"x":0.6838638,"y":0.39890394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.12859,"y":76.163795,"z":-1.4210855E-14},"screenPosition":{"x":0.7943455,"y":0.39116383},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.66924,"y":74.74752,"z":-1.4210855E-14},"screenPosition":{"x":0.76394224,"y":0.3714933},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.23552,"y":73.8369,"z":0.0},"screenPosition":{"x":0.96324015,"y":0.35884586},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.37369,"y":76.115,"z":0.0},"screenPosition":{"x":0.94528514,"y":0.39048606},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.60962,"y":82.00979,"z":0.0},"screenPosition":{"x":0.49186707,"y":0.4723582},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.27994,"y":74.152824,"z":0.0},"screenPosition":{"x":0.6516652,"y":0.36323372},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.5365,"y":78.243675,"z":0.0},"screenPosition":{"x":0.80284387,"y":0.42005107},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.81285,"y":78.20058,"z":0.0},"screenPosition":{"x":0.76693434,"y":0.41945246},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.01793,"y":78.220665,"z":-1.4210855E-14},"screenPosition":{"x":0.68787354,"y":0.41973147},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.30754,"y":74.023575,"z":0.0},"screenPosition":{"x":0.7355738,"y":0.36143854},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.25555,"y":72.89746,"z":-1.4210855E-14},"screenPosition":{"x":0.7553242,"y":0.34579802},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.58592,"y":73.48063,"z":0.0},"screenPosition":{"x":0.76220673,"y":0.35389763},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.78908,"y":69.53635,"z":-1.4210855E-14},"screenPosition":{"x":0.828939,"y":0.2991159},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.56786,"y":73.78516,"z":0.0},"screenPosition":{"x":0.8243302,"y":0.35812718},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.1599,"y":76.304565,"z":-1.4210855E-14},"screenPosition":{"x":0.8158313,"y":0.39311898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.42734,"y":78.01099,"z":0.0},"screenPosition":{"x":0.8005696,"y":0.4168192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.28767,"y":82.62174,"z":0.0},"screenPosition":{"x":0.71432644,"y":0.48085755},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.02281,"y":82.2052,"z":0.0},"screenPosition":{"x":0.75047535,"y":0.47507223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.02911,"y":83.7651,"z":0.0},"screenPosition":{"x":0.70893985,"y":0.4967375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.62573,"y":82.34018,"z":0.0},"screenPosition":{"x":0.5755362,"y":0.47694692},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.14224,"y":87.462326,"z":0.0},"screenPosition":{"x":0.62796354,"y":0.54808784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.9394,"y":85.402534,"z":-1.4210855E-14},"screenPosition":{"x":0.5404044,"y":0.51947963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.86844,"y":84.060936,"z":0.0},"screenPosition":{"x":0.47642574,"y":0.5008463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.75327,"y":80.863556,"z":-1.4210855E-14},"screenPosition":{"x":0.49485964,"y":0.4564383},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.53467,"y":77.20367,"z":0.0},"screenPosition":{"x":0.51113904,"y":0.40560645},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.53357,"y":73.62422,"z":0.0},"screenPosition":{"x":0.59444946,"y":0.35589203},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.85043,"y":70.5676,"z":0.0},"screenPosition":{"x":0.5385507,"y":0.3134388},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.48648,"y":76.48264,"z":0.0},"screenPosition":{"x":0.6768016,"y":0.39559227},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.47844,"y":74.01781,"z":0.0},"screenPosition":{"x":0.6349673,"y":0.36135837},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.5623,"y":72.47512,"z":0.0},"screenPosition":{"x":0.59504807,"y":0.33993223},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.07738,"y":70.68825,"z":0.0},"screenPosition":{"x":0.54327875,"y":0.3151146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.57597,"y":83.77365,"z":-1.4210855E-14},"screenPosition":{"x":0.4286661,"y":0.49685624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.08908,"y":61.30017,"z":0.0},"screenPosition":{"x":0.96018916,"y":0.18472461},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.82332,"y":60.363625,"z":0.0},"screenPosition":{"x":0.85048574,"y":0.17171702},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":164.32806,"y":62.750908,"z":-1.4210855E-14},"screenPosition":{"x":0.9235015,"y":0.20487371},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.4726,"y":52.79103,"z":-1.4210855E-14},"screenPosition":{"x":0.8640125,"y":0.06654209},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.48146,"y":60.240093,"z":0.0},"screenPosition":{"x":0.8433637,"y":0.17000131},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.05919,"y":54.135475,"z":0.0},"screenPosition":{"x":0.83456653,"y":0.085214935},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.48694,"y":56.81577,"z":0.0},"screenPosition":{"x":0.8643113,"y":0.12244123},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.61249,"y":81.89488,"z":0.0},"screenPosition":{"x":0.4919269,"y":0.4707622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.41942,"y":52.54969,"z":0.0},"screenPosition":{"x":0.7587378,"y":0.06319017},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.2149,"y":49.72003,"z":0.0},"screenPosition":{"x":0.79614383,"y":0.023889331},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.00287,"y":50.81454,"z":0.0},"screenPosition":{"x":0.75005984,"y":0.039090864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.8799,"y":52.94612,"z":-1.4210855E-14},"screenPosition":{"x":0.70583105,"y":0.06869611},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.23637,"y":55.6896,"z":0.0},"screenPosition":{"x":0.69242454,"y":0.10680004},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.65347,"y":59.214474,"z":0.0},"screenPosition":{"x":0.65944725,"y":0.15575656},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.68738,"y":60.64512,"z":0.0},"screenPosition":{"x":0.7018203,"y":0.17562664},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.8311,"y":59.63396,"z":-1.4210855E-14},"screenPosition":{"x":0.9131479,"y":0.16158277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.70815,"y":57.16625,"z":0.0},"screenPosition":{"x":0.8689196,"y":0.12730898},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.16374,"y":67.511086,"z":-1.4210855E-14},"screenPosition":{"x":0.9617446,"y":0.27098724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.17667,"y":60.027515,"z":-1.4210855E-14},"screenPosition":{"x":0.8578472,"y":0.1670488},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.24219,"y":60.194145,"z":0.0},"screenPosition":{"x":0.9008788,"y":0.16936313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.12555,"y":54.687042,"z":-1.4210855E-14},"screenPosition":{"x":0.81511545,"y":0.09287556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.91527,"y":56.686493,"z":0.0},"screenPosition":{"x":0.8524013,"y":0.12064571},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.33238,"y":55.612072,"z":0.0},"screenPosition":{"x":0.8194245,"y":0.1057232},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.53404,"y":53.95735,"z":0.0},"screenPosition":{"x":0.7819591,"y":0.082740985},"deltaImage":"not-really-an-image.png"}],"deltaImage":"20191016-062902/brain-CAF9C0-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.9996875162757026,0.024997395914712332,0.0,0.0,-0.024997395914712332,0.9996875162757026,0.0,0.0,0.0,0.0,1.0,0.0,147.69754681669062,84.06670729737607,106.2844225423288,1.0]},"baseImage":"20191016-062902/base.webp","version":0,"savedAt":1.57120759715E12,"notes":null} \ No newline at end of file diff --git a/data/mapping/Decom2019/round1/20200214-055417-v0.json b/data/mapping/Decom2019/round1/20200214-055417-v0.json new file mode 100644 index 0000000000..2e9b04f5d7 --- /dev/null +++ b/data/mapping/Decom2019/round1/20200214-055417-v0.json @@ -0,0 +1 @@ +{"startedAt":1.58165965771E12,"surfaces":[{"brainId":"C7839C","panelName":"Panel 3","pixels":[{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.25201,"y":85.30768,"z":0.0},"screenPosition":{"x":0.38025028,"y":0.5181622},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26521,"y":83.62169,"z":0.0},"screenPosition":{"x":0.38052523,"y":0.4947457},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.19844,"y":48.0,"z":1.0},"screenPosition":{"x":0.7957701,"y":-0.01054963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.62039,"y":50.508934,"z":0.0},"screenPosition":{"x":0.78375816,"y":0.0348463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.72878,"y":55.212345,"z":0.0},"screenPosition":{"x":0.7860162,"y":0.10017144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.56816,"y":57.914112,"z":0.0},"screenPosition":{"x":0.84517014,"y":0.137696},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":166.45164,"y":59.728165,"z":0.0},"screenPosition":{"x":0.9677425,"y":0.16289115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.76021,"y":48.000103,"z":1.4210855E-14},"screenPosition":{"x":0.95333755,"y":1.4313066E-6},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.11646,"y":50.76351,"z":0.0},"screenPosition":{"x":0.89825964,"y":0.03838213},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.7802,"y":54.190388,"z":0.0},"screenPosition":{"x":0.8704208,"y":0.08597762},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":154.57707,"y":55.724483,"z":1.4210855E-14},"screenPosition":{"x":0.72035575,"y":0.107284516},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.19402,"y":51.644867,"z":0.0},"screenPosition":{"x":0.69154197,"y":0.050623145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.3424,"y":48.0,"z":1.0},"screenPosition":{"x":0.71546686,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":63.884415,"z":1.0},"screenPosition":{"x":1.0,"y":0.22061686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.93365,"y":65.761536,"z":1.4210855E-14},"screenPosition":{"x":0.9361179,"y":0.24668805},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":167.41293,"y":67.62023,"z":0.0},"screenPosition":{"x":0.9877695,"y":0.27250323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.8449,"y":67.4883,"z":0.0},"screenPosition":{"x":0.8926021,"y":0.27067074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.92169,"y":63.51887,"z":1.4210855E-14},"screenPosition":{"x":0.83170176,"y":0.21553989},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.72362,"y":59.208755,"z":0.0},"screenPosition":{"x":0.8900754,"y":0.15567714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":168.0,"y":85.34481,"z":1.0},"screenPosition":{"x":1.0,"y":0.51867795},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.79317,"y":85.98626,"z":0.0},"screenPosition":{"x":0.9331908,"y":0.52758694},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":159.31473,"y":93.69813,"z":0.0},"screenPosition":{"x":0.819057,"y":0.63469625},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":91.25023,"z":1.0},"screenPosition":{"x":1.0,"y":0.60069764},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":148.36572,"y":88.55252,"z":0.0},"screenPosition":{"x":0.59095263,"y":0.56322944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.91118,"y":92.404144,"z":1.4210855E-14},"screenPosition":{"x":0.7689828,"y":0.6167242},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.72516,"y":97.03966,"z":0.0},"screenPosition":{"x":0.76510733,"y":0.6811064},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.45367,"y":99.96414,"z":0.0},"screenPosition":{"x":0.84278476,"y":0.72172415},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.983,"y":100.39875,"z":0.0},"screenPosition":{"x":0.93714577,"y":0.7277604},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":164.01776,"y":92.10777,"z":0.0},"screenPosition":{"x":0.91703665,"y":0.61260796},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.70766,"y":94.995636,"z":1.4210855E-14},"screenPosition":{"x":0.8897429,"y":0.65271723},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.10455,"y":97.9096,"z":1.4210855E-14},"screenPosition":{"x":0.8563449,"y":0.6931889},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":120.0,"z":1.0},"screenPosition":{"x":1.0,"y":1.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.90564,"y":112.25257,"z":0.0},"screenPosition":{"x":0.83136755,"y":0.8923968},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":168.0,"y":111.76367,"z":1.0},"screenPosition":{"x":1.0,"y":0.8856066},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":148.50122,"y":88.126015,"z":1.4210855E-14},"screenPosition":{"x":0.5937756,"y":0.5573058},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":119.602264,"z":1.0},"screenPosition":{"x":1.0,"y":0.9944759},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.03906,"y":120.0,"z":1.0},"screenPosition":{"x":0.93831384,"y":1.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.08133,"y":118.25185,"z":1.4210855E-14},"screenPosition":{"x":0.8766944,"y":0.9757201},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.68117,"y":99.13061,"z":-1.4210855E-14},"screenPosition":{"x":0.18085761,"y":0.7101474},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":166.08427,"y":112.24,"z":0.0},"screenPosition":{"x":0.9600889,"y":0.8922222},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.62796,"y":116.233284,"z":-1.4210855E-14},"screenPosition":{"x":0.9297491,"y":0.94768447},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":156.8431,"y":117.333015,"z":0.0},"screenPosition":{"x":0.76756436,"y":0.9629585},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.72504,"y":117.951225,"z":0.0},"screenPosition":{"x":0.78593814,"y":0.97154486},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.75687,"y":117.47919,"z":-1.4210855E-14},"screenPosition":{"x":0.8491014,"y":0.96498877},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.7798,"y":117.31975,"z":1.4210855E-14},"screenPosition":{"x":0.8912457,"y":0.9627743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":163.36385,"y":102.91506,"z":0.0},"screenPosition":{"x":0.9034134,"y":0.7627092},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.47505,"y":106.64616,"z":1.4210855E-14},"screenPosition":{"x":0.9057301,"y":0.81453},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.88002,"y":110.41448,"z":1.4210855E-14},"screenPosition":{"x":0.9558339,"y":0.86686784},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.98515,"y":101.13289,"z":0.0},"screenPosition":{"x":0.9788573,"y":0.7379568},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.51152,"y":103.3587,"z":0.0},"screenPosition":{"x":0.9273234,"y":0.7688709},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":162.25972,"y":109.05837,"z":1.4210855E-14},"screenPosition":{"x":0.8804109,"y":0.84803295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.1871,"y":111.79247,"z":0.0},"screenPosition":{"x":0.8580646,"y":0.8860066},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.2835,"y":115.469505,"z":0.0},"screenPosition":{"x":0.8600727,"y":0.9370765},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.33693,"y":117.01112,"z":0.0},"screenPosition":{"x":0.8820192,"y":0.9584878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.58353,"y":111.19063,"z":-1.4210855E-14},"screenPosition":{"x":0.78299004,"y":0.8776476},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.46135,"y":103.97427,"z":0.0},"screenPosition":{"x":0.67627823,"y":0.7774204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.15218,"y":100.42199,"z":0.0},"screenPosition":{"x":0.6281703,"y":0.72808313},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.37814,"y":96.60992,"z":1.4210855E-14},"screenPosition":{"x":0.6537113,"y":0.6751377},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.8757,"y":93.273506,"z":0.0},"screenPosition":{"x":0.68491054,"y":0.62879866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06808,"y":108.80206,"z":1.4210855E-14},"screenPosition":{"x":0.37641856,"y":0.8444731},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.68332,"y":74.35173,"z":1.4210855E-14},"screenPosition":{"x":0.93090266,"y":0.36599624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.20854,"y":76.264114,"z":0.0},"screenPosition":{"x":0.85851145,"y":0.39255714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.03015,"y":79.704315,"z":0.0},"screenPosition":{"x":0.8547948,"y":0.44033772},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.4742,"y":85.703674,"z":0.0},"screenPosition":{"x":0.94737923,"y":0.52366215},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":165.56711,"y":72.45237,"z":0.0},"screenPosition":{"x":0.9493146,"y":0.33961627},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.59303,"y":80.25771,"z":1.4210855E-14},"screenPosition":{"x":0.86652154,"y":0.44802374},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.47896,"y":82.89706,"z":1.4210855E-14},"screenPosition":{"x":0.9683116,"y":0.4846813},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.95593,"y":66.15862,"z":0.0},"screenPosition":{"x":0.97824854,"y":0.2522031},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.8981,"y":69.22405,"z":0.0},"screenPosition":{"x":0.89371043,"y":0.2947785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.85197,"y":73.80846,"z":0.0},"screenPosition":{"x":0.9135829,"y":0.35845077},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":74.504745,"z":1.0},"screenPosition":{"x":1.0059497,"y":0.36812147},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":50.47785,"z":1.0},"screenPosition":{"x":1.0,"y":0.03441459},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.11702,"y":51.01494,"z":0.0},"screenPosition":{"x":0.8357713,"y":0.041874122},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":164.15852,"y":54.574135,"z":0.0},"screenPosition":{"x":0.9199691,"y":0.091307424},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":54.370975,"z":1.0},"screenPosition":{"x":1.0,"y":0.08848577},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":139.51207,"y":82.641136,"z":1.4210855E-14},"screenPosition":{"x":0.40650162,"y":0.48112693},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.89551,"y":48.0,"z":1.0},"screenPosition":{"x":0.5811565,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.55354,"y":49.87576,"z":0.0},"screenPosition":{"x":0.6365322,"y":0.026052225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.77798,"y":50.128666,"z":0.0},"screenPosition":{"x":0.6828746,"y":0.029564803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.8312,"y":52.53351,"z":0.0},"screenPosition":{"x":0.74648345,"y":0.062965386},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.66315,"y":55.72529,"z":0.0},"screenPosition":{"x":0.8054821,"y":0.1072957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.84482,"y":60.24805,"z":0.0},"screenPosition":{"x":0.7884338,"y":0.17011184},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":152.1772,"y":63.256733,"z":0.0},"screenPosition":{"x":0.6703582,"y":0.21189907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.80305,"y":66.02967,"z":0.0},"screenPosition":{"x":0.62089694,"y":0.25041208},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.49242,"y":69.76519,"z":0.0},"screenPosition":{"x":0.5935919,"y":0.3022943},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.8241,"y":73.13648,"z":0.0},"screenPosition":{"x":0.64216864,"y":0.3491178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.89485,"y":73.405754,"z":0.0},"screenPosition":{"x":0.7269761,"y":0.35285768},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.28365,"y":67.089714,"z":-1.4210855E-14},"screenPosition":{"x":0.83924246,"y":0.26513496},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":153.13367,"y":64.70578,"z":0.0},"screenPosition":{"x":0.6902846,"y":0.23202473},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.85461,"y":71.10934,"z":-1.4210855E-14},"screenPosition":{"x":0.6219712,"y":0.32096303},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":70.47476,"z":1.0},"screenPosition":{"x":1.0135112,"y":0.31214947},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":153.9075,"y":62.9938,"z":0.0},"screenPosition":{"x":0.70640635,"y":0.20824721},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.04045,"y":64.04719,"z":-1.4210855E-14},"screenPosition":{"x":0.5425095,"y":0.2228776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.63574,"y":68.16042,"z":0.0},"screenPosition":{"x":0.4924112,"y":0.28000584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.68942,"y":72.19238,"z":1.4210855E-14},"screenPosition":{"x":0.47269616,"y":0.33600527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.54572,"y":75.86312,"z":1.4210855E-14},"screenPosition":{"x":0.53220236,"y":0.38698784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.3482,"y":78.60492,"z":0.0},"screenPosition":{"x":0.6947544,"y":0.4250683},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.79831,"y":73.67628,"z":0.0},"screenPosition":{"x":0.7666313,"y":0.35661495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.72694,"y":69.62989,"z":0.0},"screenPosition":{"x":0.6609781,"y":0.3004152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.73189,"y":76.95784,"z":1.4210855E-14},"screenPosition":{"x":0.57774764,"y":0.40219218},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.54164,"y":80.82204,"z":0.0},"screenPosition":{"x":0.615451,"y":0.45586163},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.25189,"y":77.91278,"z":0.0},"screenPosition":{"x":0.79691446,"y":0.41545525},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.48526,"y":74.08356,"z":-1.4210855E-14},"screenPosition":{"x":0.78094286,"y":0.36227167},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.4553,"y":71.51187,"z":1.4210855E-14},"screenPosition":{"x":0.717819,"y":0.3265538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.78175,"y":69.49613,"z":-1.4210855E-14},"screenPosition":{"x":0.64128655,"y":0.29855743},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.60959,"y":74.76681,"z":1.4210855E-14},"screenPosition":{"x":0.6793665,"y":0.37176126},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.46927,"y":70.570175,"z":0.0},"screenPosition":{"x":0.6556099,"y":0.31347468},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":143.23145,"y":70.842606,"z":1.4210855E-14},"screenPosition":{"x":0.4839883,"y":0.3172584},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.05035,"y":76.00265,"z":0.0},"screenPosition":{"x":0.43854913,"y":0.38892564},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.50352,"y":79.302414,"z":0.0},"screenPosition":{"x":0.48965666,"y":0.4347558},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.25298,"y":81.79836,"z":-1.4210855E-14},"screenPosition":{"x":0.5469371,"y":0.46942174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.0122,"y":83.05216,"z":0.0},"screenPosition":{"x":0.604421,"y":0.48683554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.03867,"y":82.9097,"z":0.0},"screenPosition":{"x":0.66747224,"y":0.48485696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":161.1362,"y":88.680664,"z":-1.4210855E-14},"screenPosition":{"x":0.85700417,"y":0.56500924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.77538,"y":109.55934,"z":1.4210855E-14},"screenPosition":{"x":0.37032038,"y":0.85499084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.22337,"y":95.72597,"z":1.4210855E-14},"screenPosition":{"x":0.81715345,"y":0.66286063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.0,"y":95.35416,"z":1.0},"screenPosition":{"x":-9.3303964E-4,"y":0.65769655},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.78755,"y":116.28116,"z":0.0},"screenPosition":{"x":0.47474054,"y":0.9483494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.8492,"y":115.65271,"z":0.0},"screenPosition":{"x":0.5801916,"y":0.93962103},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.68813,"y":110.13685,"z":1.4210855E-14},"screenPosition":{"x":0.6810025,"y":0.8630118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.50389,"y":107.1168,"z":0.0},"screenPosition":{"x":0.6771643,"y":0.8210666},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.03732,"y":103.08581,"z":0.0},"screenPosition":{"x":0.62577754,"y":0.76508063},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.212715,"y":94.76291,"z":-1.4210855E-14},"screenPosition":{"x":0.004431624,"y":0.6494849},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.2157,"y":108.94919,"z":-1.4210855E-14},"screenPosition":{"x":0.42116025,"y":0.8465165},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.07642,"y":117.82909,"z":-1.4210855E-14},"screenPosition":{"x":0.4807586,"y":0.9698484},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":163.0456,"y":101.73027,"z":0.0},"screenPosition":{"x":0.8967831,"y":0.7462538},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":152.74,"y":93.562294,"z":0.0},"screenPosition":{"x":0.6820835,"y":0.6328096},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.70409,"y":103.96191,"z":0.0},"screenPosition":{"x":0.82716835,"y":0.7772487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":163.83424,"y":104.4018,"z":-1.4210855E-14},"screenPosition":{"x":0.9132135,"y":0.7833584},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.4446,"y":97.08021,"z":-1.4210855E-14},"screenPosition":{"x":0.17592913,"y":0.6816696},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.39027,"y":114.39477,"z":0.0},"screenPosition":{"x":0.8414639,"y":0.9221496},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":168.0,"y":107.71857,"z":1.0},"screenPosition":{"x":1.0,"y":0.82942456},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":166.4364,"y":105.7416,"z":1.4210855E-14},"screenPosition":{"x":0.96742517,"y":0.8019667},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.43826,"y":103.96748,"z":0.0},"screenPosition":{"x":0.75913054,"y":0.7773261},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":153.26375,"y":110.28745,"z":0.0},"screenPosition":{"x":0.6929946,"y":0.8651035},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.14311,"y":115.62389,"z":0.0},"screenPosition":{"x":0.857148,"y":0.9392207},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":148.99179,"y":113.95833,"z":0.0},"screenPosition":{"x":0.6039956,"y":0.91608787},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.3503,"y":120.0,"z":1.0},"screenPosition":{"x":0.4447979,"y":1.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.19142,"y":118.589745,"z":1.4210855E-14},"screenPosition":{"x":0.6289881,"y":0.98041314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.98825,"y":116.89044,"z":0.0},"screenPosition":{"x":0.56225526,"y":0.95681167},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.61874,"y":116.57085,"z":0.0},"screenPosition":{"x":0.658724,"y":0.9523729},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.93187,"y":106.22592,"z":0.0},"screenPosition":{"x":0.56108046,"y":0.80869335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.78142,"y":103.539,"z":1.4210855E-14},"screenPosition":{"x":0.5371128,"y":0.771375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.52689,"y":94.13527,"z":1.4210855E-14},"screenPosition":{"x":0.76097673,"y":0.6407677},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.26776,"y":90.68094,"z":0.0},"screenPosition":{"x":0.79724497,"y":0.59279084},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.01445,"y":86.980865,"z":1.4210855E-14},"screenPosition":{"x":0.81280106,"y":0.54140097},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.2636,"y":82.76543,"z":0.0},"screenPosition":{"x":0.77632487,"y":0.48285314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.69662,"y":80.819534,"z":0.0},"screenPosition":{"x":0.6811797,"y":0.45582685},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.77599,"y":83.473045,"z":0.0},"screenPosition":{"x":0.57866627,"y":0.49268118},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.8094,"y":88.41095,"z":-1.4210855E-14},"screenPosition":{"x":0.5793625,"y":0.56126314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.16331,"y":92.26624,"z":-1.4210855E-14},"screenPosition":{"x":0.67006916,"y":0.6148089},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.38809,"y":85.28718,"z":-1.4210855E-14},"screenPosition":{"x":0.82058525,"y":0.5178774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.69348,"y":81.78968,"z":0.0},"screenPosition":{"x":0.7644476,"y":0.4693011},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.97581,"y":78.192406,"z":-1.4210855E-14},"screenPosition":{"x":0.66616297,"y":0.4193389},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.22406,"y":83.33354,"z":0.0},"screenPosition":{"x":0.56716794,"y":0.4907437},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.85501,"y":91.83426,"z":1.4210855E-14},"screenPosition":{"x":0.6844794,"y":0.6088091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.70168,"y":90.252625,"z":1.4210855E-14},"screenPosition":{"x":0.78545165,"y":0.586842},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.13235,"y":88.5385,"z":0.0},"screenPosition":{"x":0.85692406,"y":0.5630347},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":160.21634,"y":79.98173,"z":0.0},"screenPosition":{"x":0.83784026,"y":0.4441907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.01187,"y":77.36371,"z":0.0},"screenPosition":{"x":0.77108055,"y":0.40782928},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.98685,"y":79.01989,"z":0.0},"screenPosition":{"x":0.6663926,"y":0.43083185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.21806,"y":83.32998,"z":0.0},"screenPosition":{"x":0.6503764,"y":0.49069417},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.59001,"y":87.268585,"z":1.4210855E-14},"screenPosition":{"x":0.72062516,"y":0.545397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":159.29123,"y":86.98058,"z":1.4210855E-14},"screenPosition":{"x":0.8185673,"y":0.541397},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":162.40387,"y":84.58137,"z":0.0},"screenPosition":{"x":0.8834139,"y":0.5080746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.186,"y":80.39663,"z":1.4210855E-14},"screenPosition":{"x":0.8580418,"y":0.44995317},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":160.45541,"y":73.53866,"z":0.0},"screenPosition":{"x":0.8428211,"y":0.35470358},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":154.67876,"y":76.54205,"z":1.4210855E-14},"screenPosition":{"x":0.72247416,"y":0.3964174},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":161.74962,"y":80.95119,"z":0.0},"screenPosition":{"x":0.86978376,"y":0.4576554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.11163,"y":56.109756,"z":0.0},"screenPosition":{"x":0.73149234,"y":0.11263551},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.49115,"y":53.80543,"z":1.4210855E-14},"screenPosition":{"x":0.6977323,"y":0.08063099},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":150.0569,"y":52.2777,"z":-1.4210855E-14},"screenPosition":{"x":0.6261855,"y":0.05941247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.2495,"y":51.515728,"z":-1.4210855E-14},"screenPosition":{"x":0.54686457,"y":0.04882953},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.97284,"y":52.40232,"z":0.0},"screenPosition":{"x":0.47860098,"y":0.061143346},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":148.57684,"y":63.651726,"z":0.0},"screenPosition":{"x":0.59535104,"y":0.2173851},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.48627,"y":61.421894,"z":-1.4210855E-14},"screenPosition":{"x":0.6559639,"y":0.1864152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.70955,"y":59.07849,"z":0.0},"screenPosition":{"x":0.70228237,"y":0.15386793},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":155.11647,"y":56.3668,"z":0.0},"screenPosition":{"x":0.7315931,"y":0.11620554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":156.2378,"y":53.16926,"z":1.4210855E-14},"screenPosition":{"x":0.7549541,"y":0.07179524},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":157.06407,"y":48.99847,"z":0.0},"screenPosition":{"x":0.7721682,"y":0.013867643},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":108.0,"y":66.38726,"z":1.0},"screenPosition":{"x":-0.25,"y":0.25537866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.08092,"y":48.0,"z":1.0},"screenPosition":{"x":0.4600192,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.19899,"y":50.756474,"z":0.0},"screenPosition":{"x":0.52497905,"y":0.038284354},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.82384,"y":48.0,"z":1.0},"screenPosition":{"x":0.4546649,"y":-0.010682866},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":151.20671,"y":49.87604,"z":0.0},"screenPosition":{"x":0.6501397,"y":0.026056105},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":158.08318,"y":48.0,"z":1.0},"screenPosition":{"x":0.7933995,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.50778,"y":54.827343,"z":0.0},"screenPosition":{"x":0.69807893,"y":0.094824225},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.38547,"y":52.530457,"z":0.0},"screenPosition":{"x":0.5496971,"y":0.062923014},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.89005,"y":50.629654,"z":0.0},"screenPosition":{"x":0.4977094,"y":0.03652298},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.14073,"y":51.26477,"z":0.0},"screenPosition":{"x":0.6695987,"y":0.04534403},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":144.28601,"y":52.911175,"z":0.0},"screenPosition":{"x":0.5059586,"y":0.06821075},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.20702,"y":48.0,"z":1.0},"screenPosition":{"x":0.21267127,"y":-0.010758659},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.81998,"y":49.489445,"z":0.0},"screenPosition":{"x":0.22541618,"y":0.020686746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.6132,"y":51.6375,"z":0.0},"screenPosition":{"x":0.26277503,"y":0.050520822},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.25337,"y":56.105965,"z":0.0},"screenPosition":{"x":0.2969454,"y":0.11258285},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.80917,"y":58.558594,"z":0.0},"screenPosition":{"x":0.32935786,"y":0.14664714},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.32481,"y":65.36996,"z":1.4210855E-14},"screenPosition":{"x":0.31926697,"y":0.24124937},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.53488,"y":58.42803,"z":0.0},"screenPosition":{"x":0.09447664,"y":0.1448337},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.834435,"y":54.692852,"z":0.0},"screenPosition":{"x":0.12155065,"y":0.092956275},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.96986,"y":52.525154,"z":0.0},"screenPosition":{"x":0.20770538,"y":0.06284939},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.9096,"y":52.65356,"z":0.0},"screenPosition":{"x":0.28978345,"y":0.06463277},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.43494,"y":54.951664,"z":0.0},"screenPosition":{"x":0.3632277,"y":0.096550904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.13837,"y":56.492737,"z":0.0},"screenPosition":{"x":0.3987161,"y":0.1179547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.38069,"y":57.782734,"z":0.0},"screenPosition":{"x":0.44543114,"y":0.13587132},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.30264,"y":60.63874,"z":0.0},"screenPosition":{"x":0.46463853,"y":0.17553805},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.19223,"y":65.76488,"z":0.0},"screenPosition":{"x":0.58733803,"y":0.24673438},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.27448,"y":69.09536,"z":0.0},"screenPosition":{"x":0.56821823,"y":0.2929911},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.24207,"y":74.09266,"z":0.0},"screenPosition":{"x":0.42170963,"y":0.36239806},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.94707,"y":72.32982,"z":0.0},"screenPosition":{"x":0.3738972,"y":0.3379142},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.80771,"y":72.6044,"z":0.0},"screenPosition":{"x":0.2043272,"y":0.34172776},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.648,"y":68.43126,"z":0.0},"screenPosition":{"x":0.24266669,"y":0.28376746},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.1681,"y":61.945904,"z":0.0},"screenPosition":{"x":0.29516894,"y":0.19369312},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":167.66049,"y":77.76888,"z":0.0},"screenPosition":{"x":0.992927,"y":0.4134567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":120.0,"y":53.980843,"z":1.0},"screenPosition":{"x":-0.0055087777,"y":0.083067276},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.70091,"y":51.25416,"z":0.0},"screenPosition":{"x":0.07710231,"y":0.04519671},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.21648,"y":89.84659,"z":0.0},"screenPosition":{"x":0.37951002,"y":0.5812026},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.338806,"y":65.371605,"z":0.0},"screenPosition":{"x":0.13205846,"y":0.24127229},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.29863,"y":62.077023,"z":0.0},"screenPosition":{"x":0.25622156,"y":0.19551422},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.44717,"y":60.377983,"z":0.0},"screenPosition":{"x":0.38431606,"y":0.17191646},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.6838,"y":54.697327,"z":1.4210855E-14},"screenPosition":{"x":0.5142461,"y":0.09301843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.97485,"y":49.243286,"z":1.4210855E-14},"screenPosition":{"x":0.47864273,"y":0.017267885},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.06523,"y":48.10748,"z":0.0},"screenPosition":{"x":0.20969225,"y":0.0014927527},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.16742,"y":61.814594,"z":0.0},"screenPosition":{"x":0.46182108,"y":0.19186936},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.83852,"y":64.57503,"z":1.4210855E-14},"screenPosition":{"x":0.517469,"y":0.23020874},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.98209,"y":68.4272,"z":0.0},"screenPosition":{"x":0.52046025,"y":0.2837111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.14507,"y":98.96943,"z":0.0},"screenPosition":{"x":0.37802216,"y":0.70790875},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.30182,"y":96.920135,"z":-1.4210855E-14},"screenPosition":{"x":0.38128796,"y":0.6794463},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.25513,"y":97.35389,"z":-1.4210855E-14},"screenPosition":{"x":0.44281507,"y":0.6854707},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.08421,"y":99.402626,"z":0.0},"screenPosition":{"x":0.48092103,"y":0.7139253},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":147.88275,"y":99.24838,"z":0.0},"screenPosition":{"x":0.5808906,"y":0.71178305},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":152.65285,"y":97.33742,"z":1.4210855E-14},"screenPosition":{"x":0.6802675,"y":0.6852419},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":153.14888,"y":92.84072,"z":1.4210855E-14},"screenPosition":{"x":0.69060165,"y":0.6227878},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.78128,"y":85.44318,"z":1.4210855E-14},"screenPosition":{"x":0.4954433,"y":0.5200441},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.59145,"y":87.850555,"z":-1.4210855E-14},"screenPosition":{"x":0.4289883,"y":0.5534799},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.76936,"y":90.41774,"z":0.0},"screenPosition":{"x":0.39102829,"y":0.5891353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.3807,"y":92.2859,"z":0.0},"screenPosition":{"x":0.34126464,"y":0.6150819},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.40205,"y":95.18045,"z":1.4210855E-14},"screenPosition":{"x":0.27920935,"y":0.655284},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.05922,"y":98.38876,"z":-1.4210855E-14},"screenPosition":{"x":0.29290023,"y":0.69984394},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.66696,"y":105.947975,"z":0.0},"screenPosition":{"x":0.30556184,"y":0.804833},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.11171,"y":100.88036,"z":0.0},"screenPosition":{"x":0.41899407,"y":0.7344495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.86176,"y":100.29537,"z":0.0},"screenPosition":{"x":0.3512865,"y":0.7263247},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.60162,"y":100.74303,"z":1.4210855E-14},"screenPosition":{"x":0.2833671,"y":0.73254204},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.77412,"y":109.71089,"z":-1.4210855E-14},"screenPosition":{"x":0.37029433,"y":0.8570957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.71376,"y":98.38185,"z":-1.4210855E-14},"screenPosition":{"x":0.38986984,"y":0.6997479},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.97064,"y":104.151505,"z":0.0},"screenPosition":{"x":0.33272156,"y":0.779882},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.24023,"y":105.95052,"z":0.0},"screenPosition":{"x":0.27583817,"y":0.80486834},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.20193,"y":108.21077,"z":-1.4210855E-14},"screenPosition":{"x":0.23337369,"y":0.83626074},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.51443,"y":114.30437,"z":1.4210855E-14},"screenPosition":{"x":0.21905082,"y":0.920894},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.93555,"y":118.93594,"z":-1.4210855E-14},"screenPosition":{"x":0.3111573,"y":0.98522145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.36572,"y":88.55252,"z":0.0},"screenPosition":{"x":0.59095263,"y":0.56322944},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.51654,"y":111.52124,"z":0.0},"screenPosition":{"x":0.5107612,"y":0.88223946},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.48672,"y":112.597664,"z":0.0},"screenPosition":{"x":0.42680687,"y":0.8971898},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":146.40063,"y":115.03958,"z":1.4210855E-14},"screenPosition":{"x":0.5500131,"y":0.93110526},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.04765,"y":117.05844,"z":1.4210855E-14},"screenPosition":{"x":0.43849272,"y":0.959145},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.71207,"y":120.0,"z":1.0},"screenPosition":{"x":0.59816813,"y":1.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.63933,"y":119.541626,"z":1.4210855E-14},"screenPosition":{"x":0.47165278,"y":0.99363375},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.43893,"y":119.54906,"z":1.4210855E-14},"screenPosition":{"x":0.40497768,"y":0.99373686},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":137.77037,"y":110.16595,"z":0.0},"screenPosition":{"x":0.3702161,"y":0.8634159},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":131.41896,"y":112.15778,"z":-1.4210855E-14},"screenPosition":{"x":0.23789497,"y":0.8910803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.706,"y":111.39851,"z":0.0},"screenPosition":{"x":0.20220824,"y":0.88053495},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.29646,"y":110.33434,"z":1.4210855E-14},"screenPosition":{"x":0.19367622,"y":0.8657548},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.80013,"y":106.709045,"z":1.4210855E-14},"screenPosition":{"x":0.18333592,"y":0.8154034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.73074,"y":102.820854,"z":0.0},"screenPosition":{"x":0.22355703,"y":0.76140076},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.28615,"y":101.923325,"z":-1.4210855E-14},"screenPosition":{"x":0.31846142,"y":0.74893504},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.84076,"y":111.85568,"z":0.0},"screenPosition":{"x":0.20501597,"y":0.8868845},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.59018,"y":109.578964,"z":0.0},"screenPosition":{"x":0.15812871,"y":0.85526335},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.57693,"y":103.86599,"z":-1.4210855E-14},"screenPosition":{"x":0.17868608,"y":0.7759165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.12576,"y":102.96045,"z":0.0},"screenPosition":{"x":0.33595327,"y":0.7633396},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.94255,"y":113.99835,"z":0.0},"screenPosition":{"x":0.20713659,"y":0.9166438},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":126.52117,"y":106.41271,"z":-1.4210855E-14},"screenPosition":{"x":0.1358578,"y":0.81128764},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.798,"y":106.84481,"z":1.4210855E-14},"screenPosition":{"x":0.34995845,"y":0.81728905},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.79414,"y":108.490944,"z":1.4210855E-14},"screenPosition":{"x":0.47487786,"y":0.840152},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.95717,"y":101.91411,"z":-1.4210855E-14},"screenPosition":{"x":0.4366077,"y":0.748807},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.26184,"y":102.95856,"z":0.0},"screenPosition":{"x":0.3596218,"y":0.76331323},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.66559,"y":105.9462,"z":-1.4210855E-14},"screenPosition":{"x":0.32636642,"y":0.80480826},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.76395,"y":109.26413,"z":1.4210855E-14},"screenPosition":{"x":0.286749,"y":0.8508907},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.0132,"y":112.608864,"z":0.0},"screenPosition":{"x":0.31277502,"y":0.89734536},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.95506,"y":118.77789,"z":1.4210855E-14},"screenPosition":{"x":0.33239722,"y":0.9830263},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":142.79678,"y":120.0,"z":1.0},"screenPosition":{"x":0.47493285,"y":1.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":148.73357,"y":117.81634,"z":0.0},"screenPosition":{"x":0.5986159,"y":0.96967137},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":131.9468,"y":120.0,"z":1.0},"screenPosition":{"x":0.24889141,"y":1.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.81468,"y":114.30162,"z":0.0},"screenPosition":{"x":0.2461393,"y":0.9208559},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.13696,"y":81.25384,"z":0.0},"screenPosition":{"x":0.23202005,"y":0.46185887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.47688,"y":75.1874,"z":0.0},"screenPosition":{"x":0.2599352,"y":0.3776028},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.47522,"y":70.574066,"z":0.0},"screenPosition":{"x":0.44740024,"y":0.31352866},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.58928,"y":74.22643,"z":0.0},"screenPosition":{"x":0.51227653,"y":0.36425596},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.28026,"y":78.19702,"z":1.4210855E-14},"screenPosition":{"x":0.52667195,"y":0.41940308},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.22926,"y":81.10499,"z":-1.4210855E-14},"screenPosition":{"x":0.4839431,"y":0.45979148},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.06209,"y":82.780396,"z":1.4210855E-14},"screenPosition":{"x":0.41796008,"y":0.48306108},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.75388,"y":83.062965,"z":-1.4210855E-14},"screenPosition":{"x":0.34903914,"y":0.4869856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.47176,"y":81.39112,"z":0.0},"screenPosition":{"x":0.28066143,"y":0.46376556},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.54047,"y":78.759796,"z":1.4210855E-14},"screenPosition":{"x":0.19875968,"y":0.4272194},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":130.78656,"y":71.11716,"z":0.0},"screenPosition":{"x":0.22472006,"y":0.32107165},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.00423,"y":67.89647,"z":0.0},"screenPosition":{"x":0.27092132,"y":0.27633983},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.39006,"y":66.032486,"z":1.4210855E-14},"screenPosition":{"x":0.34145945,"y":0.25045115},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.4173,"y":65.6339,"z":0.0},"screenPosition":{"x":0.42536032,"y":0.24491529},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.17386,"y":68.02676,"z":0.0},"screenPosition":{"x":0.503622,"y":0.2781494},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":144.85718,"y":72.59734,"z":1.4210855E-14},"screenPosition":{"x":0.51785785,"y":0.34162977},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.8433,"y":101.327225,"z":1.4210855E-14},"screenPosition":{"x":0.37173554,"y":0.7406559},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.34315,"y":74.640045,"z":0.0},"screenPosition":{"x":0.31964904,"y":0.3700006},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.07054,"y":64.31246,"z":1.4210855E-14},"screenPosition":{"x":0.31396964,"y":0.22656198},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.37207,"y":61.55307,"z":1.4210855E-14},"screenPosition":{"x":0.3619182,"y":0.18823712},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.31323,"y":59.467175,"z":1.4210855E-14},"screenPosition":{"x":0.42319226,"y":0.15926632},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":146.72212,"y":66.56128,"z":0.0},"screenPosition":{"x":0.556711,"y":0.25779554},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.23184,"y":68.96279,"z":1.4210855E-14},"screenPosition":{"x":0.4839966,"y":0.29114988},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.72176,"y":70.0369,"z":0.0},"screenPosition":{"x":0.41086993,"y":0.30606812},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.48538,"y":69.635254,"z":0.0},"screenPosition":{"x":0.34344533,"y":0.30048966},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.20813,"y":67.229965,"z":0.0},"screenPosition":{"x":0.25433588,"y":0.2670828},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":143.3666,"y":69.23061,"z":0.0},"screenPosition":{"x":0.48680386,"y":0.29486963},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.71071,"y":71.11555,"z":0.0},"screenPosition":{"x":0.30647302,"y":0.3210493},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.46071,"y":71.251755,"z":0.0},"screenPosition":{"x":0.23876488,"y":0.32294106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.53401,"y":59.85698,"z":0.0},"screenPosition":{"x":0.28195843,"y":0.16468029},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":134.38252,"y":65.63507,"z":0.0},"screenPosition":{"x":0.29963583,"y":0.24493155},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.227974,"y":64.182,"z":1.4210855E-14},"screenPosition":{"x":0.08808281,"y":0.22475001},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.45313,"y":61.161144,"z":0.0},"screenPosition":{"x":0.051106855,"y":0.18279369},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.920204,"y":57.2636,"z":1.4210855E-14},"screenPosition":{"x":0.040004306,"y":0.12866111},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.61302,"y":52.395645,"z":0.0},"screenPosition":{"x":0.05443795,"y":0.061050612},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.67609,"y":51.001747,"z":0.0},"screenPosition":{"x":0.118251786,"y":0.041690942},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.85506,"y":51.763298,"z":1.4210855E-14},"screenPosition":{"x":0.20531365,"y":0.052268054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.88145,"y":56.61998,"z":-1.4210855E-14},"screenPosition":{"x":0.20586371,"y":0.11972192},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.9055,"y":48.0,"z":1.0},"screenPosition":{"x":0.10219795,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.95238,"y":50.626896,"z":0.0},"screenPosition":{"x":0.35317445,"y":0.036484644},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.81395,"y":51.38271,"z":0.0},"screenPosition":{"x":0.18362388,"y":0.046982054},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.62406,"y":48.0,"z":1.0},"screenPosition":{"x":0.15883458,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.30742,"y":48.0,"z":1.0},"screenPosition":{"x":0.21473774,"y":0.0},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.31643,"y":51.88717,"z":1.4210855E-14},"screenPosition":{"x":0.027425667,"y":0.053988453},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.19063,"y":93.14808,"z":-1.4210855E-14},"screenPosition":{"x":0.37897158,"y":0.6270567},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.54517,"y":102.21438,"z":0.0},"screenPosition":{"x":0.38635758,"y":0.7529775},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.45436,"y":90.429825,"z":1.4210855E-14},"screenPosition":{"x":0.17613244,"y":0.58930314},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.945564,"y":95.044044,"z":0.0},"screenPosition":{"x":0.14469925,"y":0.6533895},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.902756,"y":94.61562,"z":2.842171E-14},"screenPosition":{"x":0.039640818,"y":0.64743924},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.0,"y":91.02975,"z":1.0},"screenPosition":{"x":0.0,"y":0.5976353},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.0,"y":86.78966,"z":1.0},"screenPosition":{"x":0.0,"y":0.5387453},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":127.67562,"y":88.00643,"z":0.0},"screenPosition":{"x":0.15990882,"y":0.55564487},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.60931,"y":94.46973,"z":1.4210855E-14},"screenPosition":{"x":0.05436058,"y":0.6454129},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":122.02387,"y":86.59445,"z":0.0},"screenPosition":{"x":0.04216402,"y":0.536034},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.531586,"y":94.02879,"z":0.0},"screenPosition":{"x":0.15690796,"y":0.6392887},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.62856,"y":97.52413,"z":0.0},"screenPosition":{"x":0.096428365,"y":0.6878352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":91.02182,"y":94.076744,"z":0.0},"screenPosition":{"x":-0.6037121,"y":0.6399548},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.67999,"y":80.288506,"z":0.0},"screenPosition":{"x":0.034999862,"y":0.44845146},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.33163,"y":80.979485,"z":0.0},"screenPosition":{"x":0.13190897,"y":0.45804843},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.95662,"y":85.17485,"z":0.0},"screenPosition":{"x":0.20742947,"y":0.5163173},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.583984,"y":74.918816,"z":0.0},"screenPosition":{"x":0.09549972,"y":0.3738724},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.10216,"y":80.702446,"z":-1.4210855E-14},"screenPosition":{"x":0.10629497,"y":0.45420069},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":127.425354,"y":86.872,"z":1.4210855E-14},"screenPosition":{"x":0.15469486,"y":0.5398889},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.53344,"y":85.03828,"z":-1.4210855E-14},"screenPosition":{"x":0.115279995,"y":0.51442045},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.27059,"y":79.59262,"z":0.0},"screenPosition":{"x":0.10980398,"y":0.4387864},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.9081,"y":76.42102,"z":-1.4210855E-14},"screenPosition":{"x":0.18558528,"y":0.39473638},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":133.82037,"y":76.41798,"z":1.4210855E-14},"screenPosition":{"x":0.28792447,"y":0.39469412},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.19116,"y":80.55407,"z":0.0},"screenPosition":{"x":0.35814914,"y":0.45213982},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":136.46494,"y":84.3248,"z":0.0},"screenPosition":{"x":0.34301934,"y":0.50451106},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":135.31525,"y":87.99821,"z":0.0},"screenPosition":{"x":0.31906757,"y":0.55553067},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.39024,"y":89.99733,"z":-1.4210855E-14},"screenPosition":{"x":0.23729685,"y":0.58329624},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.86065,"y":85.46261,"z":0.0},"screenPosition":{"x":0.08043017,"y":0.52031404},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":129.82596,"y":78.20768,"z":0.0},"screenPosition":{"x":0.20470749,"y":0.4195511},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":125.60668,"y":87.44077,"z":-1.4210855E-14},"screenPosition":{"x":0.11680581,"y":0.54778856},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.920265,"y":79.45296,"z":0.0},"screenPosition":{"x":0.14417219,"y":0.4368466},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.87259,"y":93.154884,"z":0.0},"screenPosition":{"x":0.26817906,"y":0.6271512},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.68834,"y":95.908104,"z":-1.4210855E-14},"screenPosition":{"x":0.26434037,"y":0.6653904},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.37064,"y":98.83283,"z":-1.4210855E-14},"screenPosition":{"x":0.23688819,"y":0.70601153},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.32768,"y":101.63519,"z":0.0},"screenPosition":{"x":0.2151602,"y":0.74493325},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":128.5638,"y":104.46265,"z":0.0},"screenPosition":{"x":0.17841247,"y":0.78420335},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.12333,"y":99.279945,"z":0.0},"screenPosition":{"x":0.14840265,"y":0.71222144},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.30084,"y":103.2692,"z":-1.4210855E-14},"screenPosition":{"x":0.19376764,"y":0.76762784},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.94962,"y":106.41013,"z":0.0},"screenPosition":{"x":0.16561708,"y":0.8112519},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.883575,"y":108.976456,"z":1.4210855E-14},"screenPosition":{"x":0.12257441,"y":0.8468952},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.39192,"y":110.80202,"z":-1.4210855E-14},"screenPosition":{"x":0.07066498,"y":0.87225026},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":120.83112,"y":97.237236,"z":-1.4210855E-14},"screenPosition":{"x":0.017315084,"y":0.6838505},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.88211,"y":98.549065,"z":0.0},"screenPosition":{"x":0.101710595,"y":0.7020703},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.8337,"y":93.025955,"z":0.0},"screenPosition":{"x":0.01736884,"y":0.62536055},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.7048,"y":93.45156,"z":1.4210855E-14},"screenPosition":{"x":0.13968334,"y":0.63127166},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":129.35982,"y":100.45457,"z":1.4210855E-14},"screenPosition":{"x":0.19499628,"y":0.72853565},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":127.2426,"y":106.11121,"z":0.0},"screenPosition":{"x":0.15088744,"y":0.80710024},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.86891,"y":109.731964,"z":0.0},"screenPosition":{"x":0.14310232,"y":0.8573884},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.945404,"y":111.56248,"z":0.0},"screenPosition":{"x":0.08219594,"y":0.88281214},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.26631,"y":83.48158,"z":0.0},"screenPosition":{"x":0.3805481,"y":0.4927998},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.53178,"y":113.3835,"z":0.0},"screenPosition":{"x":0.21941218,"y":0.9081042},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.66932,"y":112.01472,"z":0.0},"screenPosition":{"x":0.1389441,"y":0.8890933},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":123.15751,"y":113.859055,"z":1.4210855E-14},"screenPosition":{"x":0.06578145,"y":0.9147091},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.21051,"y":115.5583,"z":0.0},"screenPosition":{"x":0.0043856786,"y":0.93830967},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06808,"y":108.80206,"z":1.4210855E-14},"screenPosition":{"x":0.37641856,"y":0.8444731},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":121.38421,"y":115.0932,"z":1.4210855E-14},"screenPosition":{"x":0.02883764,"y":0.93185},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":125.823074,"y":116.937355,"z":-1.4210855E-14},"screenPosition":{"x":0.121313974,"y":0.95746326},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":122.990105,"y":114.62786,"z":0.0},"screenPosition":{"x":0.062293846,"y":0.9253869},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.66104,"y":111.713554,"z":-1.4210855E-14},"screenPosition":{"x":0.09710503,"y":0.8849104},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.993195,"y":110.79293,"z":0.0},"screenPosition":{"x":0.16652484,"y":0.8721241},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":130.9702,"y":113.0762,"z":1.4210855E-14},"screenPosition":{"x":0.22854596,"y":0.9038362},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":120.84327,"y":118.34553,"z":-1.4210855E-14},"screenPosition":{"x":0.017568054,"y":0.9770212},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.125404,"y":109.593346,"z":0.0},"screenPosition":{"x":0.0026125272,"y":0.85546315},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.323074,"y":108.37467,"z":-1.4210855E-14},"screenPosition":{"x":0.090064086,"y":0.83853716},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":96.75902,"y":100.50565,"z":0.0},"screenPosition":{"x":-0.4841871,"y":0.7292452},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06808,"y":108.80206,"z":1.4210855E-14},"screenPosition":{"x":0.37641856,"y":0.8444731},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.31457,"y":108.67693,"z":1.4210855E-14},"screenPosition":{"x":0.0898868,"y":0.8427352},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.54565,"y":96.92978,"z":0.0},"screenPosition":{"x":0.24053445,"y":0.6795803},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.4419,"y":98.67699,"z":-1.4210855E-14},"screenPosition":{"x":0.36337283,"y":0.70384705},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":141.81035,"y":100.73007,"z":0.0},"screenPosition":{"x":0.45438242,"y":0.7323621},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.34608,"y":100.42952,"z":1.4210855E-14},"screenPosition":{"x":0.52804357,"y":0.72818774},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":149.14882,"y":98.80611,"z":0.0},"screenPosition":{"x":0.6072669,"y":0.7056404},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.29381,"y":82.77584,"z":1.4210855E-14},"screenPosition":{"x":0.5269545,"y":0.48299783},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":140.34074,"y":82.08209,"z":0.0},"screenPosition":{"x":0.42376542,"y":0.47336236},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.07726,"y":89.84675,"z":-1.4210855E-14},"screenPosition":{"x":0.37660956,"y":0.58120483},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.17003,"y":93.14683,"z":-1.4210855E-14},"screenPosition":{"x":0.39937565,"y":0.6270393},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":141.11731,"y":96.478714,"z":0.0},"screenPosition":{"x":0.43994394,"y":0.67331547},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":137.77412,"y":109.71089,"z":-1.4210855E-14},"screenPosition":{"x":0.37029433,"y":0.8570957},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":108.0,"y":92.97068,"z":1.0},"screenPosition":{"x":-0.25,"y":0.6245927},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":148.8983,"y":85.861046,"z":0.0},"screenPosition":{"x":0.6020479,"y":0.52584785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":145.30296,"y":85.86462,"z":0.0},"screenPosition":{"x":0.527145,"y":0.5258974},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":139.61269,"y":89.131676,"z":0.0},"screenPosition":{"x":0.40859753,"y":0.57127327},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":132.65343,"y":89.42469,"z":-1.4210855E-14},"screenPosition":{"x":0.26361302,"y":0.57534295},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":130.61436,"y":79.865654,"z":0.0},"screenPosition":{"x":0.22113274,"y":0.4425785},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.07849,"y":77.105865,"z":1.4210855E-14},"screenPosition":{"x":0.23080195,"y":0.40424815},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":131.54369,"y":74.09725,"z":-1.4210855E-14},"screenPosition":{"x":0.2404933,"y":0.3624618},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":124.452415,"y":65.637,"z":0.0},"screenPosition":{"x":0.09275868,"y":0.24495831},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":120.0,"y":65.98663,"z":1.0},"screenPosition":{"x":0.0,"y":0.24981433},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":126.50505,"y":74.372284,"z":0.0},"screenPosition":{"x":0.13552193,"y":0.36628178},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":127.41617,"y":70.57953,"z":0.0},"screenPosition":{"x":0.15450354,"y":0.3136046},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.17365,"y":95.31914,"z":0.0},"screenPosition":{"x":0.3786175,"y":0.6572103},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":{"x":138.06927,"y":108.650925,"z":0.0},"screenPosition":{"x":0.3764432,"y":0.8423739},"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":null},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"},{"modelPosition":null,"screenPosition":null,"deltaImage":"not-really-an-image.png"}],"deltaImage":"20200214-055417/brain-CAD878-0.webp","screenAreaInSqPixels":null,"screenAngle":null}],"cameraMatrix":{"elements":[0.9999877616910288,0.0,-0.004947369823074186,0.0,9.676714385734165E-4,0.9806851361294443,0.19559071395840918,0.0,0.004851812048424214,-0.19559310768729368,0.9806731342017448,0.0,143.9869887265023,60.71491647817638,125.39908186921147,1.0]},"baseImage":"20200214-055417/base.webp","version":0,"savedAt":1.581660208508E12,"notes":null} diff --git a/data/movers.sparkle b/data/movers.sparkle new file mode 100644 index 0000000000..398fcae9d0 --- /dev/null +++ b/data/movers.sparkle @@ -0,0 +1 @@ +{"title":"Sample Show","patches":[{"shaderInstanceIds":["xyProjection-inst","darkness-inst","brightness-inst","saturation-inst","defaultMover-inst"],"surfaces":{"name":"All Surfaces"}}],"controlLayout":{"Scenes":["scenesButtonGroup"],"More Controls":["colorColorPickerControl","brightnessSliderControl","saturationSliderControl"],"Effects":["wobbleButton"],"Transition":["newButtonButton"]},"layouts":{"panelNames":["Scenes","Backdrops","More Controls","Preview","Effects","Transition"],"map":{"default":{"rootNode":{"direction":"row","splitPercentage":70,"first":{"direction":"column","splitPercentage":20,"first":"Scenes","second":{"direction":"column","splitPercentage":60,"first":"Backdrops","second":"More Controls"}},"second":{"direction":"column","splitPercentage":20,"first":"Preview","second":{"direction":"column","splitPercentage":60,"first":"Effects","second":"Transition"}}}}}},"shaders":{"xyProjection":{"title":"XY Projection","src":"// XY Projection\n\nstruct ModelInfo {\n vec3 center;\n vec3 extents;\n};\nuniform ModelInfo modelInfo;\n\n// @return uv-coordinate\n// @param pixelLocation xyz-coordinate\nvec2 main(vec3 pixelLocation) {\n vec3 pixelOffset = (pixelLocation - modelInfo.center) / modelInfo.extents + .5;\n return vec2(1.-pixelOffset.x, pixelOffset.y);\n}"},"darkness":{"title":"Darkness","src":"void main(void) {\n gl_FragColor = vec4(0., 0., 0., 1.);\n}"},"brightness":{"title":"Brightness","src":"uniform float brightness; // @@Slider min=0 max=1.25 default=1\n\n// @return color\n// @param inColor color\nvec4 main(vec4 inColor) {\n vec4 clampedColor = clamp(inColor, 0., 1.);\n return vec4(clampedColor.rgb * brightness, clampedColor.a);\n}"},"saturation":{"title":"Saturation","src":"uniform float saturation; // @@Slider min=0 max=1.25 default=1\n\n// All components are in the range [0…1], including hue.\nvec3 rgb2hsv(vec3 c)\n{\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n \n\n// All components are in the range [0…1], including hue.\nvec3 hsv2rgb(vec3 c)\n{\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\n// @return color\n// @param inColor color\nvec4 main(vec4 inColor) {\n if (saturation == 1.) return inColor;\n\n vec4 clampedColor = clamp(inColor, 0., 1.);\n vec3 hsv = rgb2hsv(clampedColor.rgb);\n hsv.y *= saturation;\n return vec4(hsv2rgb(hsv), clampedColor.a);\n}"},"defaultMover":{"title":"Default Mover","src":"struct MovingHeadParams {\n float pan;\n float tilt;\n float colorWheel;\n float dimmer;\n};\n\nuniform float time;\nuniform float intensity; // @type float\nuniform float adjust; // @type float\n\n// @param params moving-head-params\nvoid main(out MovingHeadParams params) {\n params.pan = adjust;\n params.tilt = adjust;\n params.colorWheel = mod(time / 20., 1.);\n params.dimmer = intensity * .5;\n}"},"glslHueTestPattern":{"title":"GLSL Hue Test Pattern","src":"uniform vec2 resolution;\nvoid main(void) {\n gl_FragColor = vec4(gl_FragCoord.xy / resolution, 0.0, 1.0);\n}"},"fireBall":{"title":"Fire Ball","src":"// Fire Ball\n// From http://glslsandbox.com/e#61108.0\n\n// Fire ball by David Robles\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\n//#extension GL_OES_standard_derivatives : enable\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\nuniform float time;\nuniform vec2 resolution;\n\nconst float PI = 3.141592;\n\nvec2 hash( vec2 p ) // replace this by something better\n{\n p = vec2( dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)) );\n return -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p )\n{\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\n vec2 i = floor( p + (p.x+p.y)*K1 );\n vec2 a = p - i + (i.x+i.y)*K2;\n float m = step(a.y,a.x);\n vec2 o = vec2(m,1.0-m);\n vec2 b = a - o + K2;\n vec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot( n, vec3(70.0) );\n}\n\nfloat circleShape(vec2 coord, vec2 pos){\n float dist = distance(coord, pos);\n return clamp( log(dist*(15.+4.*noise(vec2(time*.8)))) ,0.,1.);\n}\n\nvec2 sineWave(vec2 p){\n float Ax = .05;\n float wx = 1.50 * PI;\n float x = sin(wx * p.x) * Ax * sin(noise(vec2(time)));\n\n float Ay = .05;\n float wy = PI * 10.;\n float y = sin(wy*p.y) * Ay * noise(vec2(time));\n\n return vec2(p.x + x, p.y + y);\n}\n\nvoid main( void ) {\n\n vec2 pos = gl_FragCoord.xy / resolution.xy;\n vec2 uv = pos;\n\n uv += vec2(-.5, -.5);\n uv *= vec2(2.3, 1.3);\n\n float luz = clamp(1.05 - (pow(uv.x, 2.) + pow(uv.y * 1.6, 6.))*2., 0., 1.);\n //vec3 color = vec3(0.3059, 0.1922, 0.0431);\n vec3 color = vec3(0.7333, 0.2902, 0.0314);\n //vec3 color = vec3(0.3882, 0.1686, 0.251);\n float grad = circleShape(sineWave(pos), vec2(.5, .32));\n\n float ruido = 0.;\n\n pos *= 5.0;\n float xoff = 1.05;\n float yoff = 2.1;\n mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\n ruido = 0.7500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n\n\n ruido = 0.5 + 0.5*ruido;\n ruido = clamp(ruido, 0., 1.);\n\n /////////////////////////////////////////////////////////////\n pos = uv;\n pos *= 3.0;\n float ruido2 = 0.;\n xoff = 1.5;\n yoff = 1.5;\n m = mat2( -2.1, .5, -.5, 2.1 );\n ruido2 = 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.0625*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n\n ruido2 = 0.5 + 0.5*ruido2;\n ruido2 = clamp(ruido2, 0., 1.);\n\n float f = 0.;\n f += 1.0 - ( (1.0-luz) / (ruido2 + 0.001) );\n f /= grad;\n f /= ruido;\n\n gl_FragColor = vec4(f*color*luz*(.5-.5*noise(vec2(time*.8))), 1.);\n //gl_FragColor = vec4(color/grad, 1.);\n\n}"},"checkerboard":{"title":"Checkerboard","src":"uniform float checkerboardSize = 10.0; // @@Slider min=.001 max=1 default=.1\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 pos = floor(fragCoord / checkerboardSize);\n vec3 patternMask = vec3(mod(pos.x + mod(pos.y, 2.0), 2.0));\n fragColor = vec4(patternMask.xyz, 1.);\n}"},"anotherGlslHueTestPattern":{"title":"Another GLSL Hue Test Pattern","src":"uniform vec2 resolution;\nuniform float redness;\nvoid main(void) {\n gl_FragColor = vec4(redness, gl_FragCoord.xy / resolution, 1.0);\n}"},"ripple":{"title":"Ripple","src":"uniform float time;\nuniform float rippleAmount; // @type float\n\n// @return uv-coordinate\n// @param uvIn uv-coordinate\nvec2 main(vec2 uvIn) {\n vec2 p = -1.0 + 2.0 * uvIn;\n float len = length(p);\n return uvIn + (p/len)*sin(len*12.0-time*4.0)*0.1 * rippleAmount;\n}"},"untitledMoverShader":{"title":"Untitled Mover Shader","src":"struct MovingHeadParams {\n float pan;\n float tilt;\n float colorWheel;\n float dimmer;\n};\n\nuniform float time;\nuniform float adjust; // @type float\n\n// @param params moving-head-params\nvoid main(out MovingHeadParams params) {\n params.pan = sin(time / 2.) / 2. + .5 + adjust;\n params.tilt = sin(time * 2.) / 2. + .5;\n params.colorWheel = sin(time) / 2. + .5;\n params.dimmer = .125;\n}"}},"shaderInstances":{"xyProjection-inst":{"shaderId":"xyProjection","incomingLinks":{"modelInfo":{"type":"datasource","dataSourceId":"modelInfo"},"pixelLocation":{"type":"datasource","dataSourceId":"pixelLocation"}}},"darkness-inst":{"shaderId":"darkness","incomingLinks":{}},"brightness-inst":{"shaderId":"brightness","incomingLinks":{"brightness":{"type":"datasource","dataSourceId":"brightnessSlider"},"inColor":{"type":"shader-channel","shaderChannel":"main"}}},"saturation-inst":{"shaderId":"saturation","incomingLinks":{"inColor":{"type":"shader-channel","shaderChannel":"main"},"saturation":{"type":"datasource","dataSourceId":"saturationSlider"}}},"defaultMover-inst":{"shaderId":"defaultMover","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"intensity":{"type":"datasource","dataSourceId":"intensitySlider"},"adjust":{"type":"datasource","dataSourceId":"adjustSlider"}}},"glslHueTestPattern-inst":{"shaderId":"glslHueTestPattern","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}}},"fireBall-inst":{"shaderId":"fireBall","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}}},"checkerboard-inst":{"shaderId":"checkerboard","incomingLinks":{"fragCoord":{"type":"shader-channel","shaderChannel":"main"},"checkerboardSize":{"type":"datasource","dataSourceId":"checkerboardSizeSlider"}}},"anotherGlslHueTestPattern-inst":{"shaderId":"anotherGlslHueTestPattern","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"redness":{"type":"datasource","dataSourceId":"rednessSlider"},"resolution":{"type":"datasource","dataSourceId":"resolution"}}},"ripple-inst":{"shaderId":"ripple","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"uvIn":{"type":"shader-channel","shaderChannel":"main"},"rippleAmount":{"type":"datasource","dataSourceId":"rippleAmountSlider"}}},"untitledMoverShader-inst":{"shaderId":"untitledMoverShader","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"adjust":{"type":"datasource","dataSourceId":"adjustSlider"}}}},"controls":{"redYellowGreenButton":{"type":"baaahs.Core:Button","title":"Red Yellow Green","patches":[{"shaderInstanceIds":["glslHueTestPattern-inst"],"surfaces":{"name":"All Surfaces"}}],"controlLayout":{"More Controls":[]}},"intensitySliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Intensity"},"controlledDataSourceId":"intensitySlider"},"fireButton":{"type":"baaahs.Core:Button","title":"Fire","patches":[{"shaderInstanceIds":["fireBall-inst"],"surfaces":{"name":"All Surfaces"}}],"controlLayout":{"Backdrops":["intensitySliderControl"]}},"checkerboardSizeSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Checkerboard Size","initialValue":0.1,"minValue":0.001},"controlledDataSourceId":"checkerboardSizeSlider"},"checkerboardButton":{"type":"baaahs.Core:Button","title":"Checkerboard","patches":[{"shaderInstanceIds":["checkerboard-inst"],"surfaces":{"name":"All Surfaces"}}],"controlLayout":{"Backdrops":["checkerboardSizeSliderControl"]}},"backdropsButtonGroup":{"type":"baaahs.Core:ButtonGroup","title":"Backdrops","direction":"Vertical","buttonIds":["redYellowGreenButton","fireButton","checkerboardButton"]},"dimmerSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Dimmer"},"controlledDataSourceId":"dimmerSlider"},"adjustSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Adjust"},"controlledDataSourceId":"adjustSlider"},"pleistoceneButton":{"type":"baaahs.Core:Button","title":"Pleistocene","controlLayout":{"Backdrops":["backdropsButtonGroup"],"More Controls":["dimmerSliderControl","adjustSliderControl","intensitySliderControl"]}},"blueAquaGreenButton":{"type":"baaahs.Core:Button","title":"Blue Aqua Green","patches":[{"shaderInstanceIds":["anotherGlslHueTestPattern-inst"],"surfaces":{"name":"All Surfaces"}}]},"backdropsButtonGroup2":{"type":"baaahs.Core:ButtonGroup","title":"Backdrops","direction":"Vertical","buttonIds":["blueAquaGreenButton"]},"holoceneButton":{"type":"baaahs.Core:Button","title":"Holocene","controlLayout":{"Backdrops":["backdropsButtonGroup2"]}},"scenesButtonGroup":{"type":"baaahs.Core:ButtonGroup","title":"Scenes","direction":"Horizontal","buttonIds":["pleistoceneButton","holoceneButton"]},"colorColorPickerControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:ColorPicker","title":"Color"},"controlledDataSourceId":"colorColorPicker"},"brightnessSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Brightness","maxValue":1.25},"controlledDataSourceId":"brightnessSlider"},"saturationSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Saturation","maxValue":1.25},"controlledDataSourceId":"saturationSlider"},"wobbleButton":{"type":"baaahs.Core:Button","title":"Wobble","patches":[{"shaderInstanceIds":["ripple-inst"],"surfaces":{"name":"All Surfaces"}}]},"newButtonButton":{"type":"baaahs.Core:Button","title":"New Button","patches":[{"shaderInstanceIds":["untitledMoverShader-inst"],"surfaces":{"name":"All Surfaces"}}]}},"dataSources":{"modelInfo":{"type":"baaahs.Core:ModelInfo"},"pixelLocation":{"type":"baaahs.Core:PixelLocation"},"brightnessSlider":{"type":"baaahs.Core:Slider","title":"Brightness","initialValue":1.0,"minValue":0.0,"maxValue":1.25},"saturationSlider":{"type":"baaahs.Core:Slider","title":"Saturation","initialValue":1.0,"minValue":0.0,"maxValue":1.25},"time":{"type":"baaahs.Core:Time"},"intensitySlider":{"type":"baaahs.Core:Slider","title":"Intensity","initialValue":1.0,"minValue":0.0,"maxValue":1.0},"adjustSlider":{"type":"baaahs.Core:Slider","title":"Adjust","initialValue":1.0,"minValue":0.0,"maxValue":1.0},"resolution":{"type":"baaahs.Core:Resolution"},"checkerboardSizeSlider":{"type":"baaahs.Core:Slider","title":"Checkerboard Size","initialValue":0.1,"minValue":0.001,"maxValue":1.0},"dimmerSlider":{"type":"baaahs.Core:Slider","title":"Dimmer","initialValue":1.0,"minValue":0.0,"maxValue":1.0},"rednessSlider":{"type":"baaahs.Core:Slider","title":"Redness","initialValue":1.0,"minValue":0.0,"maxValue":1.0},"colorColorPicker":{"type":"baaahs.Core:ColorPicker","title":"Color","initialValue":-1},"rippleAmountSlider":{"type":"baaahs.Core:Slider","title":"Ripple Amount","initialValue":1.0,"minValue":0.0,"maxValue":1.0}},"version":2} \ No newline at end of file diff --git a/data/presets/moving-head-positions.json b/data/presets/moving-head-positions.json new file mode 100644 index 0000000000..4992a9958e --- /dev/null +++ b/data/presets/moving-head-positions.json @@ -0,0 +1 @@ +{"Disco Balls":{"x":123,"y":200},"a":{"x":56,"y":154}} \ No newline at end of file diff --git a/data/show.sparkle b/data/show.sparkle new file mode 100644 index 0000000000..0fbc9a5218 --- /dev/null +++ b/data/show.sparkle @@ -0,0 +1 @@ +{"title":"Beatch Party","patches":[{"shaderInstanceIds":["cylindricalProjection-inst","darkness-inst","brightness-inst","saturation-inst","flipY-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Scenes":["control"],"Patches":["control2"],"More Controls":["colorColorPickerControl","brightnessSliderControl","saturationSliderControl"]},"scenes":[{"title":"Pleistocene","patches":[],"eventBindings":[],"controlLayout":{},"patchSets":[{"title":"Red Yellow Green","patches":[{"shaderInstanceIds":["glslHueTestPattern-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Fire","patches":[{"shaderInstanceIds":["fireBall-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Patches":["intensitySliderControl"]}},{"title":"Checkerboard","patches":[{"shaderInstanceIds":["checkerboard-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Patches":["checkerboardSizeSliderControl"]}},{"title":"Wobbly Checkerboard","patches":[{"shaderInstanceIds":["checkerboard-inst","ripple-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{"Patches":["checkerboardSizeSliderControl"]}},{"title":"White","patches":[{"shaderInstanceIds":["untitledPaintShader-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}}]},{"title":"Beotch","patches":[],"eventBindings":[],"controlLayout":{},"patchSets":[{"title":"Blue Aqua Green","patches":[{"shaderInstanceIds":["anotherGlslHueTestPattern-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Gaia's Orgasm","patches":[{"shaderInstanceIds":["untitledPaintShader2-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Fire Dancer","patches":[{"shaderInstanceIds":["untitledPaintShader3-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Circular Dependency","patches":[{"shaderInstanceIds":["untitledPaintShader4-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Huenami","patches":[{"shaderInstanceIds":["huenami-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}},{"title":"Sunset","patches":[{"shaderInstanceIds":["sunset-inst"],"surfaces":{"name":"All Surfaces"}}],"eventBindings":[],"controlLayout":{}}]}],"layouts":{"panelNames":["Scenes","Patches","More Controls","Preview","Controls"],"map":{"default":{"rootNode":{"direction":"row","splitPercentage":70,"first":{"direction":"column","splitPercentage":20,"first":"Scenes","second":{"direction":"column","splitPercentage":60,"first":"Patches","second":"More Controls"}},"second":{"direction":"column","splitPercentage":20,"first":"Preview","second":"Controls"}}}}},"shaders":{"cylindricalProjection":{"title":"Cylindrical Projection","type":"Projection","src":"// Cylindrical Projection\n// !SparkleMotion:internal\n\nuniform sampler2D pixelCoordsTexture;\n\nstruct ModelInfo {\n vec3 center;\n vec3 extents;\n};\nuniform ModelInfo modelInfo;\n\nconst float PI = 3.141592654;\n\nvec2 project(vec3 pixelLocation) {\n vec3 pixelOffset = pixelLocation - modelInfo.center;\n vec3 normalDelta = normalize(pixelOffset);\n float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π]\n if (theta < 0.0) theta += (2.0f * PI); // theta in range [0,2π)\n float u = theta / (2.0f * PI); // u in range [0,1)\n float v = (pixelOffset.y + modelInfo.extents.y / 2.0f) / modelInfo.extents.y;\n return vec2(u, v);\n}\n\nvec2 main(vec2 rasterCoord) {\n int rasterX = int(rasterCoord.x);\n int rasterY = int(rasterCoord.y);\n \n vec3 pixelCoord = texelFetch(pixelCoordsTexture, ivec2(rasterX, rasterY), 0).xyz;\n return project(pixelCoord);\n}"},"darkness":{"title":"Darkness","type":"Paint","src":"void main(void) {\n gl_FragColor = vec4(0., 0., 0., 1.);\n}"},"brightness":{"title":"Brightness","type":"Filter","src":"uniform float brightness; // @@Slider min=0 max=1.25 default=1\n\nvec4 main(vec4 inColor) {\n vec4 clampedColor = clamp(inColor, 0., 1.);\n return vec4(clampedColor.rgb * brightness, clampedColor.a);\n}"},"saturation":{"title":"Saturation","type":"Filter","src":"uniform float saturation; // @@Slider min=0 max=1.25 default=1\n\n// All components are in the range [0…1], including hue.\nvec3 rgb2hsv(vec3 c)\n{\n vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\n\n float d = q.x - min(q.w, q.y);\n float e = 1.0e-10;\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\n}\n \n\n// All components are in the range [0…1], including hue.\nvec3 hsv2rgb(vec3 c)\n{\n vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\n}\n\nvec4 main(vec4 inColor) {\n if (saturation == 1.) return inColor;\n\n vec4 clampedColor = clamp(inColor, 0., 1.);\n vec3 hsv = rgb2hsv(clampedColor.rgb);\n hsv.y *= saturation;\n return vec4(hsv2rgb(hsv), clampedColor.a);\n}"},"flipY":{"title":"Flip Y","type":"Distortion","src":"vec2 main(vec2 uvIn) {\n return vec2(uvIn.x, 1. - uvIn.y);\n}"},"glslHueTestPattern":{"title":"GLSL Hue Test Pattern","type":"Paint","src":"uniform vec2 resolution;\nvoid main(void) {\n gl_FragColor = vec4(gl_FragCoord.xy / resolution, 0.0, 1.0);\n}"},"fireBall":{"title":"Fire Ball","type":"Paint","src":"// Fire Ball\n// From http://glslsandbox.com/e#61108.0\n\n// Fire ball by David Robles\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\n//#extension GL_OES_standard_derivatives : enable\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\nuniform float time;\nuniform vec2 resolution;\n\nconst float PI = 3.141592;\n\nvec2 hash( vec2 p ) // replace this by something better\n{\n p = vec2( dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)) );\n return -1.0 + 2.0*fract(sin(p)*43758.5453123);\n}\n\nfloat noise( in vec2 p )\n{\n const float K1 = 0.366025404; // (sqrt(3)-1)/2;\n const float K2 = 0.211324865; // (3-sqrt(3))/6;\n\n vec2 i = floor( p + (p.x+p.y)*K1 );\n vec2 a = p - i + (i.x+i.y)*K2;\n float m = step(a.y,a.x);\n vec2 o = vec2(m,1.0-m);\n vec2 b = a - o + K2;\n vec2 c = a - 1.0 + 2.0*K2;\n vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );\n vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));\n return dot( n, vec3(70.0) );\n}\n\nfloat circleShape(vec2 coord, vec2 pos){\n float dist = distance(coord, pos);\n return clamp( log(dist*(15.+4.*noise(vec2(time*.8)))) ,0.,1.);\n}\n\nvec2 sineWave(vec2 p){\n float Ax = .05;\n float wx = 1.50 * PI;\n float x = sin(wx * p.x) * Ax * sin(noise(vec2(time)));\n\n float Ay = .05;\n float wy = PI * 10.;\n float y = sin(wy*p.y) * Ay * noise(vec2(time));\n\n return vec2(p.x + x, p.y + y);\n}\n\nvoid main( void ) {\n\n vec2 pos = gl_FragCoord.xy / resolution.xy;\n vec2 uv = pos;\n\n uv += vec2(-.5, -.5);\n uv *= vec2(2.3, 1.3);\n\n float luz = clamp(1.05 - (pow(uv.x, 2.) + pow(uv.y * 1.6, 6.))*2., 0., 1.);\n //vec3 color = vec3(0.3059, 0.1922, 0.0431);\n vec3 color = vec3(0.7333, 0.2902, 0.0314);\n //vec3 color = vec3(0.3882, 0.1686, 0.251);\n float grad = circleShape(sineWave(pos), vec2(.5, .32));\n\n float ruido = 0.;\n\n pos *= 5.0;\n float xoff = 1.05;\n float yoff = 2.1;\n mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );\n ruido = 0.7500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n\n\n ruido = 0.5 + 0.5*ruido;\n ruido = clamp(ruido, 0., 1.);\n\n /////////////////////////////////////////////////////////////\n pos = uv;\n pos *= 3.0;\n float ruido2 = 0.;\n xoff = 1.5;\n yoff = 1.5;\n m = mat2( -2.1, .5, -.5, 2.1 );\n ruido2 = 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n ruido2 += 0.0625*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos;\n\n ruido2 = 0.5 + 0.5*ruido2;\n ruido2 = clamp(ruido2, 0., 1.);\n\n float f = 0.;\n f += 1.0 - ( (1.0-luz) / (ruido2 + 0.001) );\n f /= grad;\n f /= ruido;\n\n gl_FragColor = vec4(f*color*luz*(.5-.5*noise(vec2(time*.8))), 1.);\n //gl_FragColor = vec4(color/grad, 1.);\n\n}"},"checkerboard":{"title":"Checkerboard","type":"Paint","src":"uniform float checkerboardSize = 10.0; // @@Slider min=.001 max=1 default=.1\nuniform float beat;\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord) {\n vec2 pos = floor(fragCoord / checkerboardSize + beat);\n vec3 patternMask = vec3(mod(pos.x + mod(pos.y, 2.0), 2.0));\n fragColor = vec4(patternMask.x + beat, patternMask.yz, 1.);\n}"},"ripple":{"title":"Ripple","type":"Distortion","src":"uniform float time;\n\nvec2 main(vec2 uvIn) {\n vec2 p = -1.0 + 2.0 * uvIn;\n float len = length(p);\n return uvIn + (p/len)*cos(len*12.0-time*4.0)*0.03;\n}"},"untitledPaintShader":{"title":"Untitled Paint Shader","type":"Paint","src":"uniform float time;\n\nvoid main(void) {\n gl_FragColor = vec4(gl_FragCoord.x, gl_FragCoord.y, mod(time, 1.), 1.);\n}"},"anotherGlslHueTestPattern":{"title":"Another GLSL Hue Test Pattern","type":"Paint","src":"uniform vec2 resolution;\nuniform float redness;\nvoid main(void) {\n gl_FragColor = vec4(redness, gl_FragCoord.xy / resolution, 1.0);\n}"},"untitledPaintShader2":{"title":"Untitled Paint Shader","type":"Paint","src":"// Gaia's Orgasm\n// From http://glslsandbox.com/e#46597\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\nuniform float time;\nuniform vec2 resolution;\n//from https://www.shadertoy.com/view/4dl3zn\n\nvoid main( void ) {\n\n\tvec2 uv = -1.0 + 2.0*gl_FragCoord.xy / resolution.xy;\n\tuv.x *= resolution.x / resolution.y;\n\n // background\n\tvec3 color = vec3(0.8 + 0.2*uv.y);\n\n // bubbles\n\tfor( int i=0; i<40; i++ )\n\t{\n // bubble seeds\n\t\tfloat pha = sin(float(i)*546.13+1.0)*0.5 + 0.5;\n\t\tfloat siz = pow( sin(float(i)*651.74+5.0)*0.5 + 0.5, 4.0 );\n\t\tfloat pox = sin(float(i)*321.55+4.1) * resolution.x / resolution.y;\n\n // buble size, position and color\n\t\tfloat rad = 0.1 + 0.5*siz;\n\t\tvec2 pos = vec2( pox, -1.0-rad + (2.0+2.0*rad)*mod(pha+0.1*time*(0.2+0.8*siz),1.0));\n\t\tfloat dis = length( uv - pos );\n\t\tvec3 col = mix( vec3(0.94,0.3,0.0), vec3(0.1,0.4,0.8), 0.5+0.5*sin(float(i)*1.2+1.9));\n\t\t// col+= 8.0*smoothstep( rad*0.95, rad, dis );\n\n // render\n\t\tfloat f = length(uv-pos)/rad;\n\t\tf = sqrt(clamp(1.0-f*f,0.0,1.0));\n\t\tcolor -= col.zyx *(1.0-smoothstep( rad*0.95, rad, dis )) * f;\n\t}\n\n // vigneting\n\tcolor *= sqrt(1.5-0.5*length(uv));\n\n\tgl_FragColor = vec4(color,1.0);\n}\n"},"untitledPaintShader3":{"title":"Untitled Paint Shader","type":"Paint","src":"// Fire Dancer\n// From http://glslsandbox.com/e#55301\n\n#ifdef GL_ES\nprecision mediump float;\n#endif\n\n// SPARKLEMOTION GADGET: Slider {name: \"Scale\", initialValue: 10.0, minValue: 0.0, maxValue: 100.0}\nuniform float scale;\n\nuniform float time;\nuniform vec2 resolution;\nuniform float beat;\n\n#define N 6\n\nvoid main( void ) {\n\tvec2 v= (gl_FragCoord.xy-(resolution*0.5))/min(resolution.y,resolution.x)*scale;\n\tfloat t=time * 0.4,r=0.0;\n\tfor (int i=0;i 0.0) return tx; \n float hm = map(ray.origin + ray.direction * tm); \n float tmid = 0.0;\n for(int i = 0; i < NUM_STEPS; i++) {\n tmid = mix(tm,tx, hm/(hm-hx)); \n p = ray.origin + ray.direction * tmid; \n \tfloat hmid = map(p);\n\t\tif(hmid < 0.0) {\n \ttx = tmid;\n hx = hmid;\n } else {\n tm = tmid;\n hm = hmid;\n }\n }\n return tmid;\n}\n\nfloat diffuse(vec3 n,vec3 l,float p) {\n return pow(dot(n,l) * 0.4 + 0.6,p);\n}\nfloat specular(vec3 n,vec3 l,vec3 e,float s) { \n float nrm = (s + 8.0) / (PI * 8.0);\n return pow(max(dot(reflect(e,n),l),0.0),s) * nrm;\n}\n\n\nbool solveQuadratic(float a, float b, float c, out float t0, out float t1){\n\tfloat discrim = b * b - 4.0 * a * c;\n\tif (discrim < 0.0) return false;\n\tfloat rootDiscrim = sqrt(discrim);\n\tfloat q = (b > 0.0) ? -0.5 * (b + rootDiscrim) : -0.5 * (b - rootDiscrim); \n\tt1 = q / a; \n\tt0 = c / q;\n\treturn true;\n}\n\nbool PlanetSphereIntersect( Ray ray, float rad, vec3 pos, inout float t0, inout float t1 ) {\n\tvec3 L = ray.origin - pos;\n\tfloat a = dot( ray.direction, ray.direction );\n\tfloat b = 2.0 * dot( ray.direction, L );\n\tfloat c = dot( L, L ) - (rad * rad);\n\n\tif (!solveQuadratic( a, b, c, t0, t1))\n\t\treturn false;\n\t\n\tfloat temp;\n\tif (t0 > t1)\n\t{\n\t\ttemp = t0;\n\t\tt0 = t1;\n\t\tt1 = temp;\n\t}\n\treturn true;\n}\n\nvec3 calculateSkySphereColor(Ray r, float tmin, float tmax, vec3 sunDirection){ \n vec3 earthCenter = vec3(0, -1.0 * EARTH_RADIUS, 0);\n\tvec3 betaR = vec3(3.8e-6, 13.5e-6, 33.1e-6); \n\tvec3 betaM = vec3(21e-6); \n\tfloat Hr = 7994.0;\n\tfloat Hm = 1200.0;\n\tfloat t0, t1; \n\tif (!PlanetSphereIntersect(r, ATMOSPHERE_RADIUS, earthCenter, t0, t1) || t1 < 0.0) return vec3(0); \n\tif (t0 > tmin && t0 > 0.0) tmin = t0; \n\tif (t1 < tmax) tmax = t1; \n float segmentLength = (tmax - tmin) / float(SKY_SAMPLES); \n\tfloat tCurrent = tmin; \n\tvec3 sumR = vec3(0); // rayleigh contribution\n\tvec3 sumM = vec3(0); // mie contribution \n\tfloat opticalDepthR = 0.0;\n\tfloat opticalDepthM = 0.0; \n\tfloat mu = dot(r.direction, sunDirection); // mu in the paper which is the cosine of the angle between the sun direction and the ray direction \n\tfloat phaseR = 3.0 / (16.0 * PI) * (1.0 + mu * mu); \n\tfloat g = 0.76; \n\tfloat phaseM = 3.0 / (8.0 * PI) * ((1.0 - g * g) * (1.0 + mu * mu)) / ((2.0 + g * g) * pow(max(0.0, 1.0 + g * g - 2.0 * g * mu), 1.5)); \n\n for (int i = 0; i < SKY_SAMPLES; ++i) { \n\t\tvec3 samplePosition = r.origin + (tCurrent) * r.direction; \n\t\tfloat height = length(samplePosition - earthCenter) - EARTH_RADIUS; \n\n\t\t// compute optical depth for light\n\t\tfloat hr = exp(-height / Hr) * segmentLength; \n\t\tfloat hm = exp(-height / Hm) * segmentLength; \n\t\topticalDepthR += hr; \n\t\topticalDepthM += hm; \n\n\t\t// light optical depth\n\t\tfloat t0Light, t1Light; \n\t\tPlanetSphereIntersect(Ray(samplePosition, sunDirection), ATMOSPHERE_RADIUS, earthCenter, t0Light, t1Light); \n\t\tfloat segmentLengthLight = t1Light / float(SUN_SAMPLES);\n\t\tfloat tCurrentLight = 0.0; \n\t\tfloat opticalDepthLightR = 0.0;\n\t\tfloat opticalDepthLightM = 0.0; \n\t\tint jCounter = 0; \n for (int j = 0; j < SUN_SAMPLES; ++j) { \n\t\t\tvec3 samplePositionLight = samplePosition + (tCurrentLight) * sunDirection; \n\t\t\tfloat heightLight = length(samplePositionLight - earthCenter) - EARTH_RADIUS; \n\t\t\tif (heightLight < 0.0) break;\n\t\t\tjCounter += 1;\n\t\t\topticalDepthLightR += exp(-heightLight / Hr) * segmentLengthLight; \n\t\t\topticalDepthLightM += exp(-heightLight / Hm) * segmentLengthLight; \n\t\t\ttCurrentLight += segmentLengthLight; \n\t\t} \n\t\tif (jCounter == SUN_SAMPLES) { \n\t\t\tvec3 tau = betaR * (opticalDepthR + opticalDepthLightR) + betaM * 1.1 * (opticalDepthM + opticalDepthLightM); \n\t\t\tvec3 attenuation = vec3(exp(-tau.x), exp(-tau.y), exp(-tau.z)); \n\t\t\tsumR += attenuation * hr; \n\t\t\tsumM += attenuation * hm; \n\t\t} \n\t\ttCurrent += segmentLength; \n } \n\n vec3 attenuate_vec = (sumR * betaR * phaseR + sumM * betaM * phaseM) * SUN_POWER;\n //return attenuate_vec;\n // color map\n if (attenuate_vec.x < 1.413) { \n attenuate_vec.x = pow(attenuate_vec.x * 0.38317, 1.0 / 2.2); \n } else { \n attenuate_vec.x = 1.0 - exp(-attenuate_vec.x);\n } \n if (attenuate_vec.y < 1.413){\n attenuate_vec.y = pow(attenuate_vec.y * 0.38317, 1.0 / 2.2); \n } else { \n attenuate_vec.y = 1.0 - exp(-attenuate_vec.y);\n } \n if (attenuate_vec.z < 1.413){\n attenuate_vec.z = pow(attenuate_vec.z * 0.38317, 1.0 / 2.2); \n } else { \n attenuate_vec.z = 1.0 - exp(-attenuate_vec.z);\n }\n return attenuate_vec;\n} \n\nvec3 calculateSkyColor(Ray r, float tmin, float tmax, vec3 sunDirection){\n return calculateSkySphereColor(r, tmin, tmax, sunDirection);\n}\n\nvec3 perspectiveCameraRayDirection(in vec2 pixelCoord) {\n vec2 pixelPos = (pixelCoord) * 2.0 - 1.0;\n vec3 camRight = vec3( 1.0, 0.0, 0.0);\n vec3 camUp = vec3( 0.0, 1.0, 0.0);\n vec3 camForward = vec3(0.0, 0.0, 1.0);\n return normalize( pixelPos.x * camRight + pixelPos.y * camUp + camForward );\n}\n\n\nvec3 getSeaColor(vec3 p, vec3 n, vec3 l, vec3 eye, vec3 dist) { \n float fresnel = clamp(1.0 - dot(n,-eye), 0.0, 1.0);\n fresnel = pow(fresnel,3.0) * 0.5;\n \n vec3 reflected = calculateSkyColor(Ray(vec3(0), reflect(eye,n)), 0.0, INFINITY, l); \n vec3 base = SEA_BASE * calculateSkyColor(Ray(vec3(0), vec3(1.0)), 0.0, INFINITY, l); // SEA_BASE\n vec3 refracted = base + diffuse(n,l,80.0) * SEA_WATER_COLOR * 0.12; \n\n vec3 color = mix(refracted,reflected,fresnel);\n \n float atten = max(1.0 - dot(dist,dist) * 0.01, 0.0);\n color += SEA_WATER_COLOR * (p.y - SEA_HEIGHT) * 0.18 * atten;\n color += vec3(specular(n,l,eye,20.0))* 0.8 * reflected;\n return color;\n}\n\nvec4 pixel(in vec2 uv ) {\n Ray r = Ray( vec3(0.0, 3.0, -15.0), perspectiveCameraRayDirection(uv));\n vec3 sunDir = normalize(vec3(0,abs(cos(SUNTIME))/2.0 - 0.2, abs(sin(SUNTIME)) * 2.0));\n vec3 sky = calculateSkyColor(r, 0.0, INFINITY, sunDir);\n vec3 p;\n heightMapTracing(r,p);\n vec3 dist = p - r.origin;\n vec3 n = getNormal(p, dot(dist,dist) * EPSILON_NRM);\n\n vec3 waves = mix(\n sky,\n getSeaColor(p,n, sunDir, r.direction, dist),\n \tpow(smoothstep(0.0,-0.5,r.direction.y),0.5));\n\n return vec4(waves, 1);\n}\n\nvoid mainImage(out vec4 fragColor, in vec2 fragCoord ) {\n vec2 uv = fragCoord.xy / iResolution.xy;\n vec2 aa = 0.25 / iResolution.xy;\n fragColor = pixel(uv); \n fragColor += pixel(uv + aa);\n fragColor *= 0.5; \n}\n"}},"shaderInstances":{"cylindricalProjection-inst":{"shaderId":"cylindricalProjection","incomingLinks":{"pixelCoordsTexture":{"type":"datasource","dataSourceId":"pixelCoordsTexture"},"modelInfo":{"type":"datasource","dataSourceId":"modelInfo"}},"shaderChannel":"main","priority":0.0},"darkness-inst":{"shaderId":"darkness","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"brightness-inst":{"shaderId":"brightness","incomingLinks":{"gl_FragColor":{"type":"shader-channel","shaderChannel":"main"},"brightness":{"type":"datasource","dataSourceId":"brightnessSlider"}},"shaderChannel":"main","priority":0.0},"saturation-inst":{"shaderId":"saturation","incomingLinks":{"gl_FragColor":{"type":"shader-channel","shaderChannel":"main"},"saturation":{"type":"datasource","dataSourceId":"saturationSlider"}},"shaderChannel":"main","priority":0.0},"flipY-inst":{"shaderId":"flipY","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"glslHueTestPattern-inst":{"shaderId":"glslHueTestPattern","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"fireBall-inst":{"shaderId":"fireBall","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"checkerboard-inst":{"shaderId":"checkerboard","incomingLinks":{"beat":{"type":"datasource","dataSourceId":"beatLink"},"sm_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"checkerboardSize":{"type":"datasource","dataSourceId":"checkerboardSizeSlider"}},"shaderChannel":"main","priority":0.0},"ripple-inst":{"shaderId":"ripple","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader-inst":{"shaderId":"untitledPaintShader","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"}},"shaderChannel":"main","priority":0.0},"anotherGlslHueTestPattern-inst":{"shaderId":"anotherGlslHueTestPattern","incomingLinks":{"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"redness":{"type":"datasource","dataSourceId":"rednessSlider"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader2-inst":{"shaderId":"untitledPaintShader2","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader3-inst":{"shaderId":"untitledPaintShader3","incomingLinks":{"beat":{"type":"datasource","dataSourceId":"beatLink"},"time":{"type":"datasource","dataSourceId":"time"},"scale":{"type":"datasource","dataSourceId":"beatLink"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"untitledPaintShader4-inst":{"shaderId":"untitledPaintShader4","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"mouse":{"type":"datasource","dataSourceId":"mouseXyPad"},"timeAdjust":{"type":"datasource","dataSourceId":"beatLink"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"huenami-inst":{"shaderId":"huenami","incomingLinks":{"time":{"type":"datasource","dataSourceId":"time"},"timeAdjust":{"type":"datasource","dataSourceId":"beatLink"},"gl_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"resolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0},"sunset-inst":{"shaderId":"sunset","incomingLinks":{"iTime":{"type":"datasource","dataSourceId":"time"},"sm_FragCoord":{"type":"shader-channel","shaderChannel":"main"},"iResolution":{"type":"datasource","dataSourceId":"resolution"}},"shaderChannel":"main","priority":0.0}},"controls":{"control":{"type":"baaahs.Core:ButtonGroup","title":"Scenes"},"control2":{"type":"baaahs.Core:ButtonGroup","title":"Patches"},"colorColorPickerControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:ColorPicker","title":"Color","initialValue":-1},"controlledDataSourceId":"colorColorPicker"},"brightnessSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Brightness","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"controlledDataSourceId":"brightnessSlider"},"saturationSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Saturation","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"controlledDataSourceId":"saturationSlider"},"intensitySliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Intensity","initialValue":1.0,"minValue":0.0,"maxValue":1.0,"stepValue":null},"controlledDataSourceId":"intensitySlider"},"checkerboardSizeSliderControl":{"type":"baaahs.Core:Gadget","gadget":{"type":"baaahs.Core:Slider","title":"Checkerboard Size","initialValue":0.1,"minValue":0.001,"maxValue":1.0,"stepValue":null},"controlledDataSourceId":"checkerboardSizeSlider"}},"dataSources":{"pixelCoordsTexture":{"type":"baaahs.Core:PixelCoordsTexture"},"modelInfo":{"type":"baaahs.Core:ModelInfo"},"brightnessSlider":{"type":"baaahs.Core:Slider","title":"Brightness","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"saturationSlider":{"type":"baaahs.Core:Slider","title":"Saturation","initialValue":1.0,"minValue":0.0,"maxValue":1.25,"stepValue":null},"colorColorPicker":{"type":"baaahs.Core:ColorPicker","title":"Color","initialValue":-1},"resolution":{"type":"baaahs.Core:Resolution"},"time":{"type":"baaahs.Core:Time"},"intensitySlider":{"type":"baaahs.Core:Slider","title":"Intensity","initialValue":1.0,"minValue":0.0,"maxValue":1.0,"stepValue":null},"beatLink":{"type":"baaahs.BeatLink:BeatLink"},"checkerboardSizeSlider":{"type":"baaahs.Core:Slider","title":"Checkerboard Size","initialValue":0.1,"minValue":0.001,"maxValue":1.0,"stepValue":null},"rednessSlider":{"type":"baaahs.Core:Slider","title":"Redness","initialValue":1.0,"minValue":0.0,"maxValue":1.0,"stepValue":null},"mouseXyPad":{"type":"baaahs.Core:XyPad","title":"Mouse","varPrefix":"mouseVec2"}}} \ No newline at end of file diff --git a/demo.gif b/demo.gif new file mode 100644 index 0000000000..2ede54a446 Binary files /dev/null and b/demo.gif differ diff --git a/gradle.properties b/gradle.properties index 29e08e8ca8..ffee59a2a5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,10 @@ -kotlin.code.style=official \ No newline at end of file +org.gradle.jvmargs=-Xmx6g -Dkotlin.daemon.jvm.options=-Xmx6g + +org.gradle.caching=true +org.gradle.parallel=true +org.gradle.console=rich + +kotlin.code.style=official + +# TODO: busted, see https://github.com/Kotlin/dukat/issues/207#issuecomment-581559041 +#kotlin.js.experimental.generateKotlinExternals=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 94336fcae9..5c2d1cf016 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 95a9a258b7..12d38de6a4 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Mar 08 17:54:57 PST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip diff --git a/gradlew b/gradlew index cccdd3d517..8e25e6c19d 100755 --- a/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" diff --git a/gradlew.bat b/gradlew.bat index f9553162f1..24467a141f 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,100 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/karma.config.d/include-three.js b/karma.config.d/include-three.js new file mode 100644 index 0000000000..c7e1e40d6e --- /dev/null +++ b/karma.config.d/include-three.js @@ -0,0 +1,3 @@ +// TODO: get this on the test classpath some other way +var path = require('path'); +config.files.unshift(path.resolve(__dirname, "../../node_modules/three/build/three.js")); \ No newline at end of file diff --git a/karma.config.d/work-around-chromium-bug.js b/karma.config.d/work-around-chromium-bug.js new file mode 100644 index 0000000000..e715400a70 --- /dev/null +++ b/karma.config.d/work-around-chromium-bug.js @@ -0,0 +1,15 @@ +// ugh — https://github.com/puppeteer/puppeteer/issues/3774 + +config.set({ + browsers: ['ChromeHeadlessFixed'], + + customLaunchers: { + 'ChromeHeadlessFixed': { + 'base': 'ChromeHeadless', + 'flags': [ + '--disable-web-security', + '--disable-site-isolation-trials', + '--disable-features=VizDisplayCompositor'] + } + } +}); \ No newline at end of file diff --git a/schema.md b/schema.md new file mode 100644 index 0000000000..62e211a233 --- /dev/null +++ b/schema.md @@ -0,0 +1,160 @@ +# Sparkle Motion schema (WIP) + +All record types have `createdAt` (and maybe `modifiedAt`?). + +### User + +```js +{ + "id": ___, + "username": "xian", + "password": "...", // salted hash of pw + "name": "Full Name", + "priority": 123.4, // e.g. for locking out other users during a performance +} +``` + +### Gadget Presets + +Gadgets offer the ability to save their current values as a user preset, or to load presets. + +```js +{ + "id": ___, + "userId": ___, + "name": "Pride Flag", + "type": "Palette", // the type of the gadget + "data": { ... }, // type-dependent +} +``` + +#### Color Gadget Data +```js +{ + "color": 0xfedbca, +} +``` + +#### Palette Gadget Data +```js +{ + "type": "analogous" | "monochromatic" | "triad" | "complementary" | "compound" | "shades" | "custom", + + // e.g. for type "custom": + "values": [0xE70000, 0xFF8C00, 0xFFEF00, 0x00811F, 0x0044FF, 0x760089], +} + +``` + +#### Slider Gadget Data +```js +{ + "value": 0.7325, + "minValue": 0.0, // null/missing = default: 0.0 + "maxValue": 1.0, // null/missing = default: 1.0 + "step": 0.1, // null/missing = default: no step +} +``` + +### Show Presets + +All of the current gadget settings for a show can be saved as a preset, which then shows up in the show selector. + +```js +{ + "userId": ___, + "name": "Awesome", + "showType": "TexturesAndStuff", + "gadgets": [ + { + "id": "texture", // the show's id for the gadget + "type": "Texture", // the type of the gadget + "data": { "file": "/textures/tiger-print.png" }, // type-dependent + } + ] +} +``` + +### Show Playlist + +Users can create playlists. + +```js +{ + "userId": ___, + "name": "Awesome Playlist", + "lastPlayedShowIndex": 0, + "shows": [ + { + "showType": "NotBadShow", + "gadgets": [ + // ... + ], + "durationSec": 60, + } + ] +} +``` + +### Moving Head Positions + +These represent a focal point for the moving heads. + +Currently I'm thinking the eyes work like this: in the UI, you can specify a base position for moving heads. When +`show.nextFrame()` is called, each moving head is already set to that base position, and it can then be altered +arbitrarily by the show. + +These are saved position presets. + +```js +{ + "name": "Headlight Mode", + "target": { "x": ___, "y": ___, "z": ___ }, +} + +``` + +These could also be represented using `pan`/`tilt`, but then each head would need its own entry. That might make sense +for disco ball mode, where only the left eye can hit the disco balls (and the other might point straight up). + +### Panel Mapping Data + +These are collected on each panel mapping run. + +Maybe needs more consideration: +* how does Pinky determine which one is authoritative? (I think we want the one with the greatest area.) +* how do we do admin overrides (e.g. a Brain dies and we need to swap a new one in)? + +```js +{ + "surfaceName": "21P", + "brainId": ___, + "areaInSqPixels": 12345, // the area of the surface as captured by the camera for this sample + "image": "/mapping/___", // probably only populated in dev mode + "outdatedAt": Time, // or do we just delete? "ignore: true"? +} +``` + +### Pixel Mapping Data + +These are collected on each pixel mapping run. + +```js +{ + "surfaceName": "21P", + "pixels": [ + { + "hotspotX": 12.3, // within the surface-space, where (0, 0) is the (bottom, left) of a rectangle which exactly + "hotspotY": 45.6, // contains the normalized surface + "brightness": 0.7, + "leftLimitX": 3.1, // these compose a rectangle containing 90% of the light emitted from the pixel + "topLimitY": 55.1, + "rightLimitX": 16.1, + "bottomLimitY": 3.1, + "image": "/mapping/___", // probably only populated in dev mode + } + ], + "areaInSqPixels": 12345, // the area of the surface as captured by the camera for this sample + "image": "/mapping/___", // probably only populated in dev mode +} +``` diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 16115069dd..0000000000 --- a/settings.gradle +++ /dev/null @@ -1,13 +0,0 @@ -pluginManagement { - resolutionStrategy { - eachPlugin { - if (requested.id.id == "kotlin-multiplatform") { - useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}") - } - } - } -} -rootProject.name = 'play' - - -enableFeaturePreview('GRADLE_METADATA') diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000000..c94bb48943 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,22 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven("https://dl.bintray.com/kotlin/kotlin-eap") + } +} + +//pluginManagement { +// resolutionStrategy { +// eachPlugin { +// if (requested.id.id == "kotlin-multiplatform") { +// useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${requested.version}") +// } +// if (requested.id.id == "kotlinx-serialization") { +// useModule("org.jetbrains.kotlin:kotlin-serialization:${requested.version}") +// } +// } +// } +//} +rootProject.name = "sparklemotion" + +enableFeaturePreview("GRADLE_METADATA") diff --git a/sheepwrecked-panels.obj b/sheepwrecked-panels.obj new file mode 100644 index 0000000000..cebd79cca1 --- /dev/null +++ b/sheepwrecked-panels.obj @@ -0,0 +1,42 @@ +# OBJ model file (sort of) +# Built by hand by @xian +# File units = inches + +v 0 48 0 +v 0 120 0 +v 48 120 0 +v 48 48 0 + +v 60 48 0 +v 60 120 0 +v 108 120 0 +v 108 48 0 + +v 120 48 0 +v 120 120 0 +v 168 120 0 +v 168 48 0 + +o Panel 1 +f 1 3 2 +f 1 4 3 +l 1 2 +l 2 3 +l 3 4 +l 4 1 + +o Panel 2 +f 5 7 6 +f 5 8 7 +l 5 6 +l 6 7 +l 7 8 +l 8 5 + +o Panel 3 +f 9 11 10 +f 9 12 11 +l 9 10 +l 10 11 +l 11 12 +l 12 9 diff --git a/show_api.md b/show_api.md new file mode 100644 index 0000000000..57ff83a592 --- /dev/null +++ b/show_api.md @@ -0,0 +1,161 @@ +# Sparkle Motion Show API + +Sparkle Motion is an open source lighting design and collaborative performance system, created for BAAAHS but designed +to be useful for many other sorts of installation. The general architecture is a distributed processing system, where +numerous low-cost rendering engines (Brains, based on the [esp32](https://en.wikipedia.org/wiki/ESP32) microcontroller) +are coordinated by a central entity (Pinky). DMX fixtures can also be controlled. + +This document lays out the various components and APIs of Sparkle Motion. + +## Terminology + +| Term | Definition | +| --- | --- | +| **Brain** | A tiny server running on custom hardware which is physically connected to a surface's LEDs. A Brain runs shaders, taking direction from Pinky. | +| **Gadget** | A source of external data, which could be directly controlled by a user (such as a color picker or sliders), or data collected from sensors (such as audio spectral analysis). | +| **Mapper** | A program running on as-yet undefined hardware which uses computer vision techniques to map Brains to surfaces. | +| **Model** | A 3D model of surfaces and moving heads. For BAAAHS, it includes panels and other surfaces, plus the eyes. Models may have installation-specific terminology of their own. | +| **Moving Head** | A programmable moving spotlight. | +| **Pinky** | A single Linux-ish server which runs shows and coordinates Brains. | +| **Shader** | A program running on each Brain which sets the color of its LEDs based on data from a show. Multiple shaders can be combined to control the color of each LED. | +| **Simulator** | A full system simulator for Sparkle Motion that runs in a normal web browser. | +| **Show** | A program running on Pinky which configures shaders for surfaces, takes input from gadgets, and sends data to shaders. | +| **Show Runner** | A component of Pinky which hosts shows, providing access to gadgets and shaders. | +| **Surface** | A (roughly) flat surface illuminated with controllable LEDs (such as a panel). LEDs on a surface are directly connected to a Brain. For BAAAHS, surfaces include panels plus the face, ears, hooves, and tail. | +| **Visualizer** | Component of Sparkle Mothin which creates 3D-rendered previews of the model as illuminated by a show. | +| **Web UI** | A browser-based interface for selecting shows, presenting gadgets, and otherwise controlling the system. | + +## Environment + +Sparkle Motion is mostly written in Kotlin, with smaller sections written in C/C++ and JavaScript. Most development can +occur inside the simulator. To set up your development environment, see +[directions here](https://github.com/baaahs/sparklemotion). + +Longer term, our intent is to make it possible to package custom shows, gadgets, and shaders together (e.g. in a zip +archive) and load them into a running Sparkle Motion instance. Currently they need to be added directly to the Sparkle +Motion codebase. + +## Writing a Show + +Shows take input from gadgets and use it to configure shaders, creating pretty stuff on surfaces. + +At the code level, shows acquire inputs and shader outputs during an initialization phase, and implement a single method +`nextFrame()`, in which the show performs whatever calculations are needed to update the shaders. + +Shows are permitted to retain state between frames. + +### Selecting Gadgets + +Shows may request input from any of +[several types of gadgets](https://baaahs.github.io/sparklemotion/doc/sparklemotion/baaahs.gadgets/index.html). Shows +may optionally provide a description of the gadget's purpose. + +```kotlin +val primaryColorBuf = showRunner.getGadgetBuffer(SingleColorGadget("Primary Color")) + +fun nextFrame() { + println("Primary color is ${primaryColorBuf.color}.") +} +``` + +#### Gadget Types +- Single color +- Palette of colors (of arbitrary size, but probably 6 or fewer) +- Slider (float, 0 to 1 continuous) +- Momentary switch (boolean) +- Toggle switch (boolean) +- X/Y Coordinates (two floats from 0 to 1) + - 2D image of party/business side overlaid that user can pinpoint a simple (x, y) coordinate of a point in 2D space + - joystick +- Stepper knob +- bpm/phrasing +- spectral analysis +- geocompass / accelerometer + + +### Selecting Shaders + +Shows may specify a shader (or an composition of shaders) for each surface. Every type of shader has a corresponding +`ShaderBuffer` type, used to communicate from shows to shaders. Find +[existing shaders](https://baaahs.github.io/sparklemotion/doc/sparklemotion/baaahs.shaders/index.html) you like, or +[write your own](#writing-a-shader)! + +```kotlin +val shaderBuffers = model.allSurfaces.map { surface -> showRunner.getShaderBuffer(surface, SolidColorShader()) } + +fun nextFrame() { + shaderBuffers.forEach { shader -> shader.color = Color.ORANGE } +} +``` + +#### Compositing Shaders +A special type of shader can be used to combine the output of two other shaders: + +```kotlin +val solidShader = SolidShader() +val sparkleShader = SparkleShader() +val compositorShader = CompositorShader(solidShader, sparkleShader) + +val shaderBuffers = sheepModel.allSurfaces.map { surface -> + val solidShaderBuffer = showRunner.getShaderBuffer(surface, solidShader) + val sparkleShaderBuffer = showRunner.getShaderBuffer(surface, sparkleShader) + val compositorShaderBuffer = + showRunner.getCompositorBuffer(surface, solidShaderBuffer, sparkleShaderBuffer, CompositingMode.ADD) + + Shaders(solidShaderBuffer, sparkleShaderBuffer, compositorShaderBuffer) +} +``` + +Compositing shaders can be arranged recursively, allowing for an arbitrary number of shaders to contribute to a +rendering pass. + +## Models, Geometry, Surfaces, and Moving Heads + +Sparkle Motion currently uses a 3D model of BAAAHS, but in the future it will support arbitrary models. + +Many shows may not particularly care where in the model any given surface lives. For those that do, you can access +surfaces via the model, and you'll get additional functionality, e.g. finding surfaces' neighbors. + +More words TBD. + +## Writing a Gadget + +Gadgets represent an external data source, often user-controllable. + +In code, a gadget extends the +[`Gadget`](https://baaahs.github.io/sparklemotion/doc/sparklemotion/baaahs/-gadget/index.html) class, adding data values +and implementing serialization/deserialization methods for transferring data between UI instances and Pinky. + +## Writing a Shader + +A shader takes configuration data from a show and uses it to render colors to the array of pixels it controls. + +In code, a shader comprises three classes: the +[`Shader`](https://baaahs.github.io/sparklemotion/doc/sparklemotion/baaahs/-shader/index.html) itself (representing its +platonic ideal), and a corresponding +[`Shader.Buffer`](https://baaahs.github.io/sparklemotion/doc/sparklemotion/baaahs/-shader/-buffer/index.html) (holding +data transferred from the show to the shader for every frame) and a +[`Shader.Renderer`](https://baaahs.github.io/sparklemotion/doc/sparklemotion/baaahs/-shader/-renderer/index.html) (which +performs the actual work of rendering pixels on a Brain). + +When a show requests a shader, Pinky creates an appropriate buffer and renderer instance on the associated Brain. + +For every frame, the contents of the buffer is transferred from Pinky to the Brain, and `Renderer.draw()` is invoked. +The renderer may perform more expensive calculations during an initialization phase to optimize the cost of rendering +each frame. + +Shaders should be stateless between calls to `draw()`. + +### Tweening + +Shaders may support inter-frame tweening by asking to be called back within a certain time window. If a new frame's +data hasn't arrived from Pinky within that window, `Renderer.draw()` will be called again with the same buffer data +and optional tween context data: + +```kotlin +fun draw(buffer: Buffer, tweenContext: TweenContext? = null) { + // perform rendering here... + + requestTween(10, MyTweenContext("whatever data")) +} +``` diff --git a/src/commonMain/kotlin/baaahs.ports/Ports.kt b/src/commonMain/kotlin/baaahs.ports/Ports.kt new file mode 100644 index 0000000000..6ce31abc01 --- /dev/null +++ b/src/commonMain/kotlin/baaahs.ports/Ports.kt @@ -0,0 +1,40 @@ +package baaahs.ports + +import kotlinx.serialization.Polymorphic +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.modules.SerializersModule + +//val portRefModule = SerializersModule { +// polymorphic(PortRef::class) { +// DataSourceRef::class with DataSourceRef.serializer() +// ShaderInPortRef::class with ShaderInPortRef.serializer() +// ShaderOutPortRef::class with ShaderOutPortRef.serializer() +// OutputPortRef::class with OutputPortRef.serializer() +// } +//} + + + +//interface ShaderPortRef: PortRef { +// val shaderId: String +//} + +//@Serializable +//data class ShaderInPortRef(override val shaderId: String, val portName: String) : +// ShaderPortRef +// +//@Serializable +//data class ShaderOutPortRef(override val shaderId: String) : ShaderPortRef +// +//@Serializable +//data class OutputPortRef( +// val dataType: String, +// val name: String, +// val pluginId: String? = null, +// val pluginConfig: JsonElement = JsonNull +//) : PortRef +// +//@Serializable +//data class Link(val from: PortRef, val to: PortRef) diff --git a/src/commonMain/kotlin/baaahs/Brain.kt b/src/commonMain/kotlin/baaahs/Brain.kt index dbc2956f64..330dce61a4 100644 --- a/src/commonMain/kotlin/baaahs/Brain.kt +++ b/src/commonMain/kotlin/baaahs/Brain.kt @@ -1,58 +1,189 @@ package baaahs +import baaahs.geom.Vector3F +import baaahs.io.ByteArrayReader +import baaahs.net.FragmentingUdpLink +import baaahs.net.Network +import baaahs.proto.* +import baaahs.util.Clock +import baaahs.util.Logger +import baaahs.util.Time import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import kotlin.random.Random -interface Brain { - -} - -class SimBrain( +class Brain( + val id: String, private val network: Network, - private val display: BrainDisplay, - private val jsPanel: JsPanel -) : Brain, Network.Listener { + private val pixels: Pixels, + private val clock: Clock +) : Network.UdpListener { + val facade = Facade() + private lateinit var link: Network.Link - private var receivingInstructions: Boolean = false + private lateinit var udpSocket: Network.UdpSocket + private var lastInstructionsReceivedAt: Time? = null + private var modelElementName : String? = null + set(value) { field = value; facade.notifyChanged() } + private var pixelCount: Int = SparkleMotion.MAX_PIXEL_COUNT + private var pixelLocations: List = emptyList() + private var currentShaderDesc: ByteArray? = null + private var currentRenderTree: RenderTree<*>? = null + private val state: State = State.Unknown - fun start() { - GlobalScope.launch { - val timeMillis = Random.nextInt() % 1000 - delay(timeMillis.toLong()) - run() - } - } + enum class State { Unknown, Link, Online } suspend fun run() { - link = network.link() - link.listen(Ports.BRAIN, this) - display.haveLink(link) - jsPanel.select() + link = FragmentingUdpLink(network.link("brain")) + udpSocket = link.listenUdp(Ports.BRAIN, this) + sendHello() + } + + private suspend fun reset() { + lastInstructionsReceivedAt = null + modelElementName = null + pixelCount = SparkleMotion.MAX_PIXEL_COUNT + pixelLocations = emptyList() + currentShaderDesc = null + currentRenderTree = null + + for (i in pixels.indices) pixels[i] = Color.WHITE sendHello() } + /** + * So that the JVM standalone can boot up and have a fixture name without mapping + */ + fun forcedFixtureName(name: String) { + modelElementName = name + } + private suspend fun sendHello() { while (true) { - if (!receivingInstructions) { - link.broadcast(Ports.PINKY, BrainHelloMessage()) + val elapsedSinceMessage = clock.now() - (lastInstructionsReceivedAt ?: 0.0) + if (elapsedSinceMessage > 100) { + if (lastInstructionsReceivedAt != null) { + logger.info { "$id: haven't heard from Pinky in ${elapsedSinceMessage}s" } + } + udpSocket.broadcastUdp(Ports.PINKY, BrainHelloMessage(id, modelElementName)) } - delay(60000) + delay(5000) } } - override fun receive(fromAddress: Network.Address, bytes: ByteArray) { - val message = parse(bytes) - when (message) { - is BrainShaderMessage -> { - jsPanel.color = message.color + override fun receive(fromAddress: Network.Address, fromPort: Int, bytes: ByteArray) { + lastInstructionsReceivedAt = clock.now() + + val reader = ByteArrayReader(bytes) + + try { + // Inline message parsing here so we can optimize stuff. + val type = Type.get(reader.readByte()) + // println("Got a message of type ${type}") + when (type) { + Type.BRAIN_PANEL_SHADE -> { + val pongData = if (reader.readBoolean()) { + reader.readBytes() + } else { + null + } + val shaderDesc = reader.readBytes() + + // If possible, use the previously-built Shader stuff: + val theCurrentShaderDesc = currentShaderDesc + if (theCurrentShaderDesc == null || !theCurrentShaderDesc.contentEquals(shaderDesc)) { + currentShaderDesc = shaderDesc + + @Suppress("UNCHECKED_CAST") + val shader = BrainShader.parse(ByteArrayReader(shaderDesc)) as BrainShader + val newRenderTree = RenderTree( + shader, + shader.createRenderer(), + shader.createBuffer(pixelCount) + ) + currentRenderTree?.release() + currentRenderTree = newRenderTree + } + + with(currentRenderTree!!) { + read(reader) + draw(pixels) + } + + if (pongData != null) { + udpSocket.sendUdp(fromAddress, fromPort, PingMessage(pongData, true)) + } + + } + + Type.BRAIN_ID_REQUEST -> { + udpSocket.sendUdp(fromAddress, fromPort, BrainHelloMessage(id, modelElementName)) + } + + Type.BRAIN_MAPPING -> { + val message = BrainMappingMessage.parse(reader) + modelElementName = message.fixtureName + pixelCount = message.pixelCount + pixelLocations = message.pixelLocations + + // next frame we'll need to recreate everything... + currentShaderDesc = null + currentRenderTree = null + + udpSocket.broadcastUdp(Ports.PINKY, BrainHelloMessage(id, modelElementName)) + } + + Type.PING -> { + val ping = PingMessage.parse(reader) + if (!ping.isPong) { + udpSocket.sendUdp(fromAddress, fromPort, PingMessage(ping.data, isPong = true)) + } + } + + // Other message types are ignored by Brains. + else -> { + // no-op + } } - is BrainIdRequest -> { - link.send(fromAddress, message.port, BrainIdResponse("")) + } catch (e: Exception) { + logger.error(e) { "Brain $id failed to handle a packet." } + } + } + + class RenderTree(val brainShader: BrainShader, val renderer: BrainShader.Renderer, val buffer: B) { + fun read(reader: ByteArrayReader) = buffer.read(reader) + + fun draw(pixels: Pixels) { + renderer.beginFrame(buffer, pixels.size) + for (i in pixels.indices) { + pixels[i] = renderer.draw(buffer, i) } + renderer.endFrame() + pixels.finishedFrame() + } + + fun release() { + renderer.release() } } + + inner class Facade : baaahs.ui.Facade() { + val id: String + get() = this@Brain.id + val state: State + get() = this@Brain.state + val modelElementName: String? + get() = this@Brain.modelElementName + + fun reset() { + logger.info { "Resetting Brain $id!" } + GlobalScope.launch { this@Brain.reset() } + } + } + + companion object { + val logger = Logger("Brain") + } } diff --git a/src/commonMain/kotlin/baaahs/BrainManager.kt b/src/commonMain/kotlin/baaahs/BrainManager.kt new file mode 100644 index 0000000000..1da032bee9 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/BrainManager.kt @@ -0,0 +1,243 @@ +package baaahs + +import baaahs.fixtures.* +import baaahs.geom.Vector2F +import baaahs.geom.Vector3F +import baaahs.glsl.LinearSurfacePixelStrategy +import baaahs.glsl.SurfacePixelStrategy +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import baaahs.mapper.MappingResults +import baaahs.model.Model +import baaahs.net.Network +import baaahs.proto.* +import baaahs.shaders.PixelBrainShader +import baaahs.util.Clock +import baaahs.util.Logger +import baaahs.util.asMillis + +class BrainManager( + private val fixtureManager: FixtureManager, + private val firmwareDaddy: FirmwareDaddy, + private val model: Model, + private val mappingResults: MappingResults, + private val udpSocket: Network.UdpSocket, + private val networkStats: Pinky.NetworkStats, + private val clock: Clock, + private val surfacePixelStrategy: SurfacePixelStrategy = LinearSurfacePixelStrategy() +) { + internal val activeBrains: MutableMap = mutableMapOf() + private val pendingBrains: MutableMap = mutableMapOf() + private val listeningVisualizers = hashSetOf() + + val brainCount: Int + get() = activeBrains.size + + /** + * Incorporate any pending brain changes. + * + * @return true if anything changed. + */ + fun updateFixtures(): Boolean { + if (pendingBrains.isEmpty()) + return false + + val fixturesToAdd = mutableListOf() + val fixturesToRemove = mutableListOf() + + pendingBrains.forEach { (brainId, incomingBrainTransport) -> + val priorBrainTransport = activeBrains[brainId] + if (priorBrainTransport != null) { + fixturesToRemove.add(priorBrainTransport.fixture) + } + + if (incomingBrainTransport.hadException) { + // Existing Brain has had exceptions so we're forgetting about it. + activeBrains.remove(brainId) + } else { + fixturesToAdd.add(incomingBrainTransport.fixture) + activeBrains[brainId] = incomingBrainTransport + } + } + + fixtureManager.fixturesChanged(fixturesToAdd, fixturesToRemove) + listeningVisualizers.forEach { listeningVisualizer -> + fixturesToAdd.forEach { + listeningVisualizer.sendPixelData(it) + } + } + + pendingBrains.clear() + + return true + } + + fun foundBrain( + brainAddress: Network.Address, + msg: BrainHelloMessage, + isSimulatedBrain: Boolean = false + ) { + val brainId = BrainId(msg.brainId) + + logger.debug { + "Hello from ${brainId.uuid}" + + " (${mappingResults.dataFor(brainId)?.surface?.name ?: "[unknown]"})" + + " at $brainAddress: $msg" + } + + // Decide whether or not to tell this brain it should use a different firmware + if (firmwareDaddy.doesntLikeThisVersion(msg.firmwareVersion)) { + // You need the new hotness bro + logger.debug { + "The firmware daddy doesn't like $brainId" + + " (${mappingResults.dataFor(brainId)?.surface?.name ?: "[unknown]"})" + + " having ${msg.firmwareVersion}" + + " so we'll send ${firmwareDaddy.urlForPreferredVersion}" + } + val newHotness = UseFirmwareMessage(firmwareDaddy.urlForPreferredVersion) + udpSocket.sendUdp(brainAddress, Ports.BRAIN, newHotness) + } + + val transport = BrainTransport(brainAddress, brainId, isSimulatedBrain, msg.firmwareVersion, msg.idfVersion) + val fixture = createFixtureFor(msg, transport) + .also { transport.fixture = it } + + fixture.modelEntity?.let { modelSurface -> + if (msg.surfaceName != modelSurface.name) { + logger.debug { + "Sending BrainMappingMessage to $brainId, " + + "identified as ${modelSurface.name} with ${fixture.pixelCount} pixels" + } + val mappingMsg = BrainMappingMessage( + brainId, modelSurface.name, null, Vector2F(0f, 0f), + Vector2F(0f, 0f), fixture.pixelCount, fixture.pixelLocations + ) + udpSocket.sendUdp(brainAddress, Ports.BRAIN, mappingMsg) + } + } + + val priorBrainTransport = activeBrains[brainId] + if (priorBrainTransport != null) { + if (priorBrainTransport.fixture.modelEntity == fixture.modelEntity) { + // Duplicate packet? + logger.debug { + "Ignore hello from ${priorBrainTransport.brainId} (${priorBrainTransport.fixture.title}), " + + "duplicate packet?" + } + return + } + +// logger.debug( +// "Remapping ${priorBrainInfo.brainId} from ${priorBrainInfo.surface.describe()} ->" + +// " ${surface.describe()}" +// ) + } + + pendingBrains[brainId] = transport + } + + fun createFixtureFor(msg: BrainHelloMessage, transport: Transport): Fixture { + val brainId = BrainId(msg.brainId) + + val mappingData = mappingResults.dataFor(brainId) + ?: mappingResults.dataFor(msg.surfaceName ?: "__nope") + ?: msg.surfaceName?.let { MappingResults.Info(model.findSurface(it), null) } + + val modelSurface = mappingData?.surface + val pixelCount = mappingData?.pixelLocations?.size + ?: modelSurface?.expectedPixelCount + ?: SparkleMotion.MAX_PIXEL_COUNT + val pixelLocations = mappingData?.pixelLocations?.map { it ?: Vector3F(0f, 0f, 0f) } + ?: surfacePixelStrategy.forFixture(pixelCount, modelSurface, model) + + return Fixture(modelSurface, pixelCount, pixelLocations, PixelArrayDevice, transport = transport) + } + + inner class BrainTransport( + private val brainAddress: Network.Address, + val brainId: BrainId, + private val isSimulatedBrain: Boolean, + val firmwareVersion: String? = null, + val idfVersion: String? = null + ) : Transport { + // This is weirdly circular. :-/ + lateinit var fixture: Fixture + + var hadException: Boolean = false + private set + + private var pixelBuffer = pixelShader.createBuffer(0) + + override val name: String + get() = "Brain ${brainId.uuid} at $brainAddress" + + override fun send(fixture: Fixture, resultViews: List) { + val resultColors = + PixelArrayDevice.getColorResults(resultViews) + + if (resultColors.pixelCount != pixelBuffer.colors.size) { + pixelBuffer = pixelShader.createBuffer(resultColors.pixelCount) + } + + pixelBuffer.indices.forEach { i -> + pixelBuffer.colors[i] = resultColors[i] + } + val message = BrainShaderMessage(pixelBuffer.brainShader, pixelBuffer).toBytes() + try { + if (!isSimulatedBrain) + udpSocket.sendUdp(brainAddress, Ports.BRAIN, message) + } catch (e: Exception) { + // Couldn't send to Brain? Schedule to remove it. + hadException = true + pendingBrains[brainId] = this + + logger.error(e) { "Error sending to $brainId, will take offline" } + } + + networkStats.packetsSent++ + networkStats.bytesSent += message.size + + updateListeningVisualizers(fixture, pixelBuffer.colors) + } + } + + /** If we want a pong back from a [BrainShaderMessage], send this. */ + private fun generatePongPayload(): ByteArray { + return ByteArrayWriter().apply { + writeLong(clock.now().asMillis()) + }.toBytes() + } + + fun receivedPing(fromAddress: Network.Address, message: PingMessage) { + if (message.isPong) { + val originalSentAt = ByteArrayReader(message.data).readLong() + val elapsedMs = clock.now().asMillis() - originalSentAt + logger.debug { "Shader pong from $fromAddress took ${elapsedMs}ms" } + } + } + + fun addListeningVisualizer(listeningVisualizer: Pinky.ListeningVisualizer) { + listeningVisualizers.add(listeningVisualizer) + + activeBrains.values.forEach { listeningVisualizer.sendPixelData(it.fixture) } + } + + fun removeListeningVisualizer(listeningVisualizer: Pinky.ListeningVisualizer) { + listeningVisualizers.remove(listeningVisualizer) + } + + private fun updateListeningVisualizers(fixture: Fixture, colors: List) { + if (listeningVisualizers.isNotEmpty()) { + listeningVisualizers.forEach { + it.sendFrame(fixture, colors) + } + } + } + + companion object { + private val logger = Logger() + private val pixelShader = PixelBrainShader(PixelBrainShader.Encoding.DIRECT_RGB) + } +} + +data class BrainId(val uuid: String) \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Color.kt b/src/commonMain/kotlin/baaahs/Color.kt new file mode 100644 index 0000000000..78f4aec227 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/Color.kt @@ -0,0 +1,235 @@ +package baaahs + +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.Serializer +import kotlinx.serialization.Transient +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlin.js.JsName +import kotlin.math.max +import kotlin.math.min +import kotlin.math.sqrt +import kotlin.random.Random + +/** + * Canonical representation of a color. + */ +@Serializable +data class Color(val argb: Int) { + /** Values are bounded at `0f..1f`. */ + constructor(red: Float, green: Float, blue: Float, alpha: Float = 1f) : this(asArgb(red, green, blue, alpha)) + + /** Values are bounded at `0..255`. */ + constructor(red: Int, green: Int, blue: Int, alpha: Int = 255) : this(asArgb(red, green, blue, alpha)) + + /** Values are bounded at `0..255` (but really `-128..127` because signed). */ + // TODO: use UByte. + constructor(red: Byte, green: Byte, blue: Byte, alpha: Byte = 255.toByte()) : this(asArgb(red, green, blue, alpha)) + + fun serialize(writer: ByteArrayWriter) = writer.writeInt(argb) + + fun serializeWithoutAlpha(writer: ByteArrayWriter) { + writer.writeByte(redB) + writer.writeByte(greenB) + writer.writeByte(blueB) + } + + @Transient + val alphaB: Byte + get() = alphaI(argb).toByte() + @Transient + val redB: Byte + get() = redI(argb).toByte() + @Transient + val greenB: Byte + get() = greenI(argb).toByte() + @Transient + val blueB: Byte + get() = blueI(argb).toByte() + + @Transient + val alphaI: Int + get() = alphaI(argb) + @Transient + val redI: Int + get() = redI(argb) + @Transient + val greenI: Int + get() = greenI(argb) + @Transient + val blueI: Int + get() = blueI(argb) + + @Transient + val alphaF: Float + get() = alphaI.toFloat() / 255 + @Transient + val redF: Float + get() = redI.toFloat() / 255 + @Transient + val greenF: Float + get() = greenI.toFloat() / 255 + @Transient + val blueF: Float + get() = blueI.toFloat() / 255 + + fun alphaI(value: Int) = value shr 24 and 0xff + fun redI(value: Int) = value shr 16 and 0xff + fun greenI(value: Int) = value shr 8 and 0xff + fun blueI(value: Int) = value and 0xff + + val rgb: Int get() = argb and 0xffffff + fun toInt(): Int = argb + + @JsName("toHexString") + fun toHexString() = + "#" + maybe(alphaI) + redI.toHexString() + greenI.toHexString() + blueI.toHexString() + + private fun maybe(alphaI: Int): String = if (alphaI == 255) "" else alphaI.toHexString() + + fun Int.toHexString(): String { + if (this < 0) { + throw Exception("can't toHexString() negative ints") + } + + if (this < 16) { + return "0" + toString(16) + } else { + return toString(16) + } + } + + /** Super-naive approximation of desaturation. */ + fun withSaturation(saturation: Float): Color { + val desaturation = 1 - saturation + return Color( + redF + (1 - redF) * desaturation, + greenF + (1 - greenF) * desaturation, + blueF + (1 - blueF) * desaturation, + alphaF + ) + } + + fun withBrightness(brightness: Float): Color { + return Color( + redF * brightness, + greenF * brightness, + blueF * brightness, + alphaF + ) + } + + fun distanceTo(other: Color): Float { + val dist = square(other.redF - redF) + square(other.greenF - greenF) + square(other.blueF - blueF) + return sqrt(dist / 3) + } + + private fun square(f: Float) = f * f + + fun plus(other: Color): Color = + Color(redI + other.redI, greenI + other.greenI, blueI + other.blueI, alphaI) + + fun fade(other: Color, amount: Float = 0.5f): Color { + val amountThis = 1 - amount + + return Color( + redF * amountThis + other.redF * amount, + greenF * amountThis + other.greenF * amount, + blueF * amountThis + other.blueF * amount, + alphaF * amountThis + other.alphaF * amount + ) + } + + fun opaque(): Color = Color(argb or 0xff000000.toInt()) + + override fun toString(): String { + return "Color(${toHexString()})" + } + + @Serializer(forClass = Color::class) + companion object : KSerializer { + val BLACK = Color(0, 0, 0) + val WHITE = Color(255, 255, 255) + val RED = Color(255, 0, 0) + val ORANGE = Color(255, 127, 0) + val YELLOW = Color(255, 255, 0) + val GREEN = Color(0, 255, 0) + val CYAN = Color(0, 255, 255) + val BLUE = Color(0, 0, 255) + val MAGENTA = Color(255, 0, 255) + val PURPLE = Color(200, 0, 212) + val TRANSPARENT = Color(0, 0, 0, 0) + + fun random() = Color( + Random.nextInt() and 0xff, + Random.nextInt() and 0xff, + Random.nextInt() and 0xff + ) + + fun parse(reader: ByteArrayReader) = Color(reader.readInt()) + + fun parseWithoutAlpha(reader: ByteArrayReader) = + Color(reader.readByte(), reader.readByte(), reader.readByte()) + + @JsName("fromInt") + fun from(i: Int) = Color(i) + + @JsName("fromInts") + fun from(r: Int, g: Int, b: Int) = Color(r, g, b) + + @JsName("fromString") + fun from(hex: String): Color { + var hexDigits = hex.trimStart('#') + + val alpha = when (hexDigits.length) { + 8 -> hexDigits.substring(0, 2).toInt(16).also { hexDigits = hexDigits.substring(2) } + 4 -> (hexDigits.substring(0, 1).toInt(16) * 0x11).also { hexDigits = hexDigits.substring(1) } + else -> 0xff + }.shl(24) + + return when (hexDigits.length) { + 6 -> Color(alpha or hexDigits.toInt(16)) + 3 -> Color(alpha + or hexDigits[0].toString().repeat(2).toInt(16).shl(16) + or hexDigits[1].toString().repeat(2).toInt(16).shl(8) + or hexDigits[2].toString().repeat(2).toInt(16) + ) + else -> throw IllegalArgumentException("unknown color \"$hex\"") + } + } + + private fun asArgb(red: Float, green: Float, blue: Float, alpha: Float = 1f): Int { + val asArgb = asArgb(asInt(red), asInt(green), asInt(blue), asInt(alpha)) + return asArgb + } + + private fun asArgb(red: Int, green: Int, blue: Int, alpha: Int = 255): Int { + return ((bounded(alpha) shl 24) + or (bounded(red) shl 16) + or (bounded(green) shl 8) + or (bounded(blue))) + } + + private fun asArgb(red: Byte, green: Byte, blue: Byte, alpha: Byte = 255.toByte()): Int { + return ((bounded(alpha) shl 24) + or (bounded(red) shl 16) + or (bounded(green) shl 8) + or (bounded(blue))) + } + + private fun bounded(f: Float): Float = max(0f, min(1f, f)) + private fun bounded(i: Int): Int = max(0, min(255, i)) + private fun bounded(b: Byte): Int = b.toInt() and 0xff + private fun asInt(f: Float): Int = (bounded(f) * 255).toInt() + + override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Color", PrimitiveKind.INT) + override fun serialize(encoder: Encoder, value: Color) = encoder.encodeInt(value.argb) + override fun deserialize(decoder: Decoder): Color = Color(decoder.decodeInt()) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Display.kt b/src/commonMain/kotlin/baaahs/Display.kt deleted file mode 100644 index cc08b01141..0000000000 --- a/src/commonMain/kotlin/baaahs/Display.kt +++ /dev/null @@ -1,30 +0,0 @@ -package baaahs - -expect fun getDisplay(): Display - -interface Display { - fun forNetwork(): NetworkDisplay - fun forPinky(): PinkyDisplay - fun forBrain(): BrainDisplay - fun forMapper(): MapperDisplay -} - -interface NetworkDisplay { - fun receivedPacket() - fun droppedPacket() -} - -interface PinkyDisplay { - var brainCount: Int - var beat: Int - var color: Color? -} - -interface BrainDisplay { - fun haveLink(link: Network.Link) -} - -interface MapperDisplay { - var onStart: (() -> Unit)? - var onStop: (() -> Unit)? -} diff --git a/src/commonMain/kotlin/baaahs/FirmwareDaddy.kt b/src/commonMain/kotlin/baaahs/FirmwareDaddy.kt new file mode 100644 index 0000000000..c9fd280715 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/FirmwareDaddy.kt @@ -0,0 +1,28 @@ +package baaahs + +interface FirmwareDaddy { + fun doesntLikeThisVersion(firmwareVersion: String?): Boolean + + val urlForPreferredVersion: String + + suspend fun start() {} +} + +class PermissiveFirmwareDaddy : FirmwareDaddy { + override fun doesntLikeThisVersion(firmwareVersion: String?): Boolean { + // False indicates this permissive daddy likes all firmwares + return false; + } + + override val urlForPreferredVersion: String + get() = "" +} + +class StrictFirmwareDaddy(private val version: String, private val url: String) : FirmwareDaddy { + override fun doesntLikeThisVersion(firmwareVersion: String?): Boolean { + return version == firmwareVersion; + } + + override val urlForPreferredVersion: String + get() = url +} diff --git a/src/commonMain/kotlin/baaahs/Gadget.kt b/src/commonMain/kotlin/baaahs/Gadget.kt new file mode 100644 index 0000000000..fac609e20b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/Gadget.kt @@ -0,0 +1,150 @@ +package baaahs + +import baaahs.gadgets.ColorPicker +import baaahs.gadgets.PalettePicker +import baaahs.gadgets.Slider +import baaahs.gadgets.Switch +import baaahs.show.DataSource +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Polymorphic +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.builtins.MapSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.modules.SerializersModule +import kotlinx.serialization.modules.polymorphic +import kotlin.collections.set +import kotlin.js.JsName +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KProperty + +/** + * Base class for user input gadgets. + * + * Mutable values in a gadget should be declared like this: + * + * ```kotlin + * var value: Float by updatable("value", initialValue, Float.serializer()) + * ``` + * + * Mutable values _should not_ be included in tests for equality. + */ +@Serializable +@Polymorphic +abstract class Gadget { + abstract val title: String + + @Transient + private val listeners = arrayListOf() + + @JsName("listen") + fun listen(gadgetListener: GadgetListener) { + if (findListener(gadgetListener) != -1) + throw IllegalStateException("$gadgetListener already listening to $this") + listeners.add(Listener(gadgetListener)) + } + + @JsName("unlisten") + fun unlisten(gadgetListener: GadgetListener) { + val i = findListener(gadgetListener) + if (i == -1) + throw IllegalStateException("$gadgetListener isn't listening to $this") + listeners.removeAt(i) + } + + private fun findListener(gadgetListener: GadgetListener): Int { + return listeners.indexOfFirst { it.callback === gadgetListener } + } + + fun changed() = listeners.forEach { + if (it.enabled) it.callback.invoke(this) + } + + @JsName("withoutTriggering") + fun withoutTriggering(gadgetListener: GadgetListener?, fn: () -> Unit) { + if (gadgetListener == null) { + fn() + } else { + val listener = listeners.find { it.callback == gadgetListener } + ?: throw IllegalStateException("$gadgetListener isn't listening to $this") + + val priorEnabled = listener.enabled + listener.enabled = false + try { + fn() + } finally { + listener.enabled = priorEnabled + } + } + } + + protected fun updatable(name: String, initialValue: T, serializer: KSerializer): ReadWriteProperty = + GadgetValueObserver(name, initialValue, serializer) { changed() } + + /** + * Implementing child classes should change their state a little bit in some valid way, as if a user had done it. + */ + open fun adjustALittleBit() { + } + + @Transient + val state: MutableMap = hashMapOf() + + /** + * Applies initial state. + */ + fun applyState(newState: Map) { + state.putAll(newState) + changed() + } + + private class Listener(val callback: GadgetListener, var enabled: Boolean = true) + + companion object { + val serialModule = SerializersModule { + polymorphic(Gadget::class) { + subclass(ColorPicker::class, ColorPicker.serializer()) + subclass(PalettePicker::class, PalettePicker.serializer()) + subclass(Slider::class, Slider.serializer()) + subclass(Switch::class, Switch.serializer()) + } + } + } +} + +typealias GadgetListener = (Gadget) -> Unit + +private class GadgetValueObserver( + val name: String, + val initialValue: T, + private val serializer: KSerializer, + val onChange: () -> Unit +) : ReadWriteProperty { + override fun getValue(thisRef: Gadget, property: KProperty<*>): T { + val value = thisRef.state[name] + return if (value == null) initialValue else { + jsonParser.decodeFromJsonElement(serializer, value) + } + } + + override fun setValue(thisRef: Gadget, property: KProperty<*>, value: T) { + if (getValue(thisRef, property) != value) { + thisRef.state[name] = jsonParser.encodeToJsonElement(serializer, value) + onChange() + } + } +} + +class GadgetInfo( + val gadget: Gadget, + val controlledDataSource: DataSource?, + val topic: PubSub.Topic>, + val channel: PubSub.Channel>, + val gadgetChannelListener: (Gadget) -> Unit +) + +val GadgetDataSerializer = MapSerializer(String.serializer(), JsonElement.serializer()) + +private val jsonParser = Json diff --git a/src/commonMain/kotlin/baaahs/Main.kt b/src/commonMain/kotlin/baaahs/Main.kt deleted file mode 100644 index a5187f23cf..0000000000 --- a/src/commonMain/kotlin/baaahs/Main.kt +++ /dev/null @@ -1,60 +0,0 @@ -package baaahs - -import kotlinx.coroutines.delay - -lateinit var main: Main - -//fun main(args: Array) { -// main = Main() -// main.start() -//} - -class Main { - var display = getDisplay() - var network = FakeNetwork(display = display.forNetwork()) - - var sheepModel = SheepModel() - val pinky = Pinky(network, display.forPinky()) - val mapper = Mapper(network, display.forMapper()) - - fun start() { - sheepModel.load() - - mapper.start() - pinky.start() - - initThreeJs(sheepModel) - sheepModel.panels.forEach { panel -> - val jsPanelObj = addPanel(panel) - SimBrain(network, display.forBrain(), JsPanel(jsPanelObj)).start() - } - startRender() - - doRunBlocking { - delay(200000L) - } - } -} - -class JsPanel(private val jsPanelObj: Any) { - var color: Color = Color.BLACK - set(value) { - setPanelColor(jsPanelObj, value) - field = color - } - - fun select() { - selectPanel(jsPanelObj, true) - } -} - -external fun initThreeJs(sheepModel: SheepModel) -external fun addPanel(panel: SheepModel.Panel): Any -external fun startRender() -external fun selectPanel(panel: Any, isSelected: Boolean) -external fun setPanelColor(panel: Any, color: Color) - -expect fun getTimeMillis(): Long -expect fun doRunBlocking(block: suspend () -> Unit) - -expect fun getResource(name: String): String \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Mapper.kt b/src/commonMain/kotlin/baaahs/Mapper.kt index 4d11df33d8..42a1bd8a0d 100644 --- a/src/commonMain/kotlin/baaahs/Mapper.kt +++ b/src/commonMain/kotlin/baaahs/Mapper.kt @@ -1,70 +1,892 @@ package baaahs -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch +import baaahs.api.ws.WebSocketClient +import baaahs.geom.Matrix4 +import baaahs.geom.Vector2F +import baaahs.geom.Vector3F +import baaahs.imaging.Bitmap +import baaahs.imaging.Image +import baaahs.imaging.NativeBitmap +import baaahs.mapper.ImageProcessing +import baaahs.mapper.MappingSession +import baaahs.model.Model +import baaahs.net.FragmentingUdpLink +import baaahs.net.Network +import baaahs.proto.* +import baaahs.shaders.PixelBrainShader +import baaahs.shaders.SolidBrainShader +import baaahs.util.Clock +import baaahs.util.Logger +import baaahs.util.asMillis +import com.soywiz.klock.DateTime +import kotlinx.coroutines.* +import kotlinx.coroutines.channels.Channel +import kotlin.math.abs +import kotlin.random.Random + +/** [SolidBrainShader] appears to be busted as of 2020/09. */ +const val USE_SOLID_SHADERS = false + +class Mapper( + private val network: Network, + model: Model, + private val mapperUi: MapperUi, + private val mediaDevices: MediaDevices, + private val pinkyAddress: Network.Address, + private val clock: Clock +) : Network.UdpListener, MapperUi.Listener, CoroutineScope by MainScope() { + // TODO: getCamera should just return max available size? + lateinit var camera: MediaDevices.Camera -class Mapper(val network: Network, val display: MapperDisplay) : Network.Listener { private lateinit var link: Network.Link + private lateinit var udpSocket: Network.UdpSocket + private lateinit var webSocketClient: WebSocketClient private var isRunning: Boolean = false + private var isPaused: Boolean = false + private var newIncomingImage: Image? = null + + private var suppressShowsJob: Job? = null + private val brainsToMap: MutableMap = mutableMapOf() + + private val activeColor = Color(0x07, 0xFF, 0x07) + private val inactiveColor = Color(0x01, 0x00, 0x01) + + init { + mapperUi.listen(this) + mapperUi.addWireframe(model) + } + + fun start() = doRunBlocking { + link = FragmentingUdpLink(network.link("mapper")) + udpSocket = link.listenUdp(0, this) + webSocketClient = WebSocketClient(link, pinkyAddress) + + launch { + webSocketClient.listSessions().forEach { mapperUi.addExistingSession(it) } + + onStart() + } + } + + override fun onStart() { + isPaused = false + + if (!isRunning) { + camera = mediaDevices.getCamera().apply { onImage = { image -> haveImage(image) } } + + // Restart. + isRunning = true + launch { startNewSession() } + } + } + + override fun onPause() { + isPaused = true + } + + override fun onStop() { + onClose() + } + + override fun onClose() { + logger.info { "Shutting down Mapper..." } + isRunning = false + camera.close() - fun start() { - link = network.link() - link.listen(Ports.MAPPER, this) + suppressShowsJob?.cancel() + udpSocket.broadcastUdp(Ports.PINKY, MapperHelloMessage(false)) + + mapperUi.close() + } - display.onStart = { - if (!isRunning) { - isRunning = true + suspend fun startNewSession() { + mapperUi.showMessage("ESTABLISHING UPLINK…") - GlobalScope.launch { - run() + // shut down Pinky, advertise for Brains... + retry { + udpSocket.broadcastUdp(Ports.PINKY, MapperHelloMessage(true)) + delay(1000L) + udpSocket.broadcastUdp(Ports.BRAIN, solidColor(inactiveColor)) + } + + // keep Pinky from waking up while we're running... + suppressShows() + + // wait for responses from Brains + pauseForUserInteraction("PRESS PLAY WHEN ALL SURFACES ARE GREEN") + val brainIdRequestJob = coroutineScope { + launch { + while (isPaused) { + udpSocket.broadcastUdp(Ports.BRAIN, BrainIdRequest()) + delay(1000L) } } } - display.onStop = { - if (isRunning) { - isRunning = false + mapperUi.showMessage("${brainsToMap.size} SURFACES DISCOVERED!") + waitUntilUnpaused() + brainIdRequestJob.cancelAndJoin() + + if (brainsToMap.isEmpty()) { + mapperUi.showMessage("NO SURFACES DISCOVERED! TRY AGAIN!") + isRunning = false + return + } + + mapperUi.showMessage("READY PLAYER ONE…") + pauseForUserInteraction("ALIGN MODEL AND PRESS PLAY WHEN READY") + waitUntilUnpaused() + + Session().start() + } + + inner class Session { + val sessionStartTime = DateTime.now() + val visibleSurfaces = mapperUi.getVisibleSurfaces() + private var baseBitmap: Bitmap? = null + val cameraOrientation = mapperUi.lockUi() + lateinit var deltaBitmap: Bitmap + + fun resetToBase() { + brainsToMap.values.forEach { + it.pixelShaderBuffer.setAll(0) } } + suspend fun allPixelsOff() { + resetToBase() + sendToAllReliably(brainsToMap.values) { it.pixelShaderBuffer } + } + + fun brainsWithPixel(pixelIndex: Int) = + brainsToMap.values.filter { pixelIndex < it.expectedPixelCountOrDefault } + + suspend fun turnOnPixel(pixelIndex: Int) { + resetToBase() + + val relevantBrains = brainsWithPixel(pixelIndex) + relevantBrains.forEach { + it.pixelShaderBuffer[pixelIndex] = 1 + } + + sendToAllReliably(relevantBrains) { it.pixelShaderBuffer } + } + + suspend fun start() { + mapperUi.showMessage("CALIBRATING…") + logger.info { "Visible surfaces: ${visibleSurfaces.joinToString { it.modelSurface.name }}" } + + // Blackout for base image. + sendToAllReliably(brainsToMap.values) { solidColorBuffer(inactiveColor) } + delay(1000L) // wait for focus + + // Create base image from the brightest of a few samples. + val bitmap = getBrightImageBitmap(5) + baseBitmap = bitmap + deltaBitmap = NativeBitmap(bitmap.width, bitmap.height) + + val baseImageName = webSocketClient.saveImage(sessionStartTime, "base", bitmap) + + mapperUi.showMessage("MAPPING…") + mapperUi.showStats(brainsToMap.size, 0, -1) + + try { + logger.info { "identify surfaces..." } + // light up each brain in an arbitrary sequence and capture its delta... + brainsToMap.values.forEachIndexed { index, brainToMap -> + identifyBrain(index, brainToMap) + + // the next line causes the UI to wait after each panel has been identified... + pauseForUserInteraction() + + var retryCount = 0 + mapperUi.setRedo { + identifyBrain(index, brainToMap, ++retryCount) + } + + waitUntilUnpaused() + mapperUi.setRedo(null) + + deliverer.send(brainToMap, solidColorBuffer(inactiveColor)) + deliverer.await() + } + + delay(1000L) + +// mapperUi.showMessage("SEEKING LIMITS…") +// var maxPixel = 0 + // binary search for highest present pixel 0..MAX_PIXEL_COUNT… + + logger.info { "identify pixels..." } + // light up each pixel... + + // Turn all pixels off. + resetToBase() + sendToAllReliably(brainsToMap.values) { it.pixelShaderBuffer } + delay(1000L) + + val maxPixelForTheseBrains = brainsToMap.values.map { it.expectedPixelCountOrDefault }.maxOrNull()!! + val pixelStep = 4 + fun actualPixelIndex(pixelIndexX: Int) = + pixelIndexX * pixelStep % maxPixelForTheseBrains + pixelIndexX * pixelStep / maxPixelForTheseBrains + + + for (pixelIndexX in 0 until maxPixelForTheseBrains) { + // Reorder so we get e.g. 0, 4, 8, ..., 1, 5, 9, ..., 2, 6, 10, ..., 3, 7, 11, ... + val pixelIndex = actualPixelIndex(pixelIndexX) + identifyPixel(pixelIndex, maxPixelForTheseBrains) + +// pauseForUserInteraction() + waitUntilUnpaused() + allPixelsOff() + } + logger.info { "done identifying pixels..." } + + logger.info { "done identifying things... $isRunning" } + mapperUi.showMessage("++LEVEL UNLOCKED++") + + delay(1000L) + } catch (e: TimeoutException) { + mapperUi.showMessage("Timed out: ${e.message}") + logger.error(e) { "Timed out" } + } + + logger.info { "Here's what we learned!" } + + val surfaces = mutableListOf() + brainsToMap.forEach { (address, brainToMap) -> + logger.info { "Brain ID: ${brainToMap.brainId} at ${address}:" } + logger.info { " Surface: ${brainToMap.guessedModelSurface}" } + logger.debug { " Pixels:" } + + val visibleSurface = brainToMap.guessedVisibleSurface + if (visibleSurface != null) { + visibleSurface.showPixels() + + brainToMap.pixelMapData.forEach { (pixelIndex, mapData) -> + val changeRegion = mapData.pixelChangeRegion + val position = visibleSurface.translatePixelToPanelSpace( + changeRegion.centerX.toFloat(), + changeRegion.centerY.toFloat() + ) + logger.debug { " $pixelIndex -> ${position?.x},${position?.y}" } + } + + val pixels = visibleSurface.pixelsInModelSpace.mapIndexed { index, vector3F -> + val pixelMapData = brainToMap.pixelMapData[index] + val pixelChangeRegion = pixelMapData?.pixelChangeRegion + val screenPosition = pixelChangeRegion?.let { + visibleSurface.translatePixelToPanelSpace(it.centerX.toFloat(), it.centerY.toFloat()) + } + MappingSession.SurfaceData.PixelData( + vector3F, + screenPosition, + pixelMapData?.deltaImageName + ) + } + + val surfaceData = MappingSession.SurfaceData( + brainToMap.brainId, + visibleSurface.modelSurface.name, + pixels, + brainToMap.deltaImageName, + screenAreaInSqPixels = null, + screenAngle = null + ) + surfaces.add(surfaceData) + brainToMap.surfaceData = surfaceData + val mappedPixels: List = surfaceData.pixels + .map { it?.screenPosition } + .filterNotNull() + brainToMap.screenMin = + Vector2F(mappedPixels.map { it.x }.minOrNull()!!, mappedPixels.map { it.y }.minOrNull()!!) + brainToMap.screenMax = + Vector2F(mappedPixels.map { it.x }.maxOrNull()!!, mappedPixels.map { it.y }.maxOrNull()!!) + } + } + + // Show mapping diagnostic test pattern! +// showTestPattern() + + // Save data. + val mappingSession = + MappingSession(sessionStartTime.unixMillis, surfaces, cameraOrientation.cameraMatrix, baseImageName) + webSocketClient.saveSession(mappingSession) + + // We're done! + + isRunning = false + mapperUi.unlockUi() + + retry { udpSocket.broadcastUdp(Ports.PINKY, MapperHelloMessage(isRunning)) } + } + + private suspend fun showTestPattern() { + brainsToMap.forEach { (_, brainToMap) -> + isPaused = true + + val screenMax = brainToMap.screenMax!! + val screenMin = brainToMap.screenMin!! + val range = abs(screenMax.x - screenMin.x) + val pixels = brainToMap.surfaceData?.pixels!! + val buffer = brainToMap.pixelShaderBuffer + val unmappedPixelCount = pixels.count { it == null } + mapperUi.showMessage(brainToMap.guessedModelSurface?.name ?: "???") + mapperUi.showMessage2("$unmappedPixelCount of ${brainToMap.expectedPixelCount} pixels unmapped") + + suspend fun drawPixels(isLit: (screenPosition: Vector2F) -> Boolean) { + buffer.indices.forEach { i -> + if (i < pixels.size) { + val screenPosition = pixels[i]?.screenPosition + buffer[i] = if (screenPosition != null && isLit(screenPosition)) 1 else 0 + } + } + brainToMap.shade { BrainShaderMessage(buffer.brainShader, buffer) } + delay(30) + } + + while (isPaused) { + buffer.palette[1] = Color.WHITE + + // scan up Y + for (y in screenMin.y.toInt()..screenMax.y.toInt() step (range / 16f).toInt()) { + drawPixels { (_, screenY) -> abs(screenY - y) < range / 10f } + } + // scan down Y + for (y in screenMax.y.toInt()..screenMin.y.toInt() step (range / 16f).toInt()) { + drawPixels { (_, screenY) -> abs(screenY - y) < range / 10f } + } + + // scan up X + for (x in screenMin.x.toInt()..screenMax.x.toInt() step (range / 16f).toInt()) { + drawPixels { (screenX, _) -> abs(screenX - x) < range / 10f } + } + // scan down X + for (x in screenMax.x.toInt()..screenMin.x.toInt() step (range / 16f).toInt()) { + drawPixels { (screenX, _) -> abs(screenX - x) < range / 10f } + } + + delay(500) + + // show unmapped pixels + buffer.palette[1] = Color.RED + buffer.indices.forEach { i -> + val screenPosition = pixels[i]?.screenPosition + buffer[i] = if (screenPosition == null) 1 else 0 + } + brainToMap.shade { BrainShaderMessage(buffer.brainShader, buffer) } + delay(2000) + + buffer.palette[1] = Color.WHITE + } + } + } + + private suspend fun identifyPixel(pixelIndex: Int, maxPixelForTheseBrains: Int) { + mapperUi.showMessage("MAPPING PIXEL $pixelIndex / $maxPixelForTheseBrains…") + + if (pixelIndex % 128 == 0) logger.debug { "pixel $pixelIndex... isRunning is $isRunning" } + turnOnPixel(pixelIndex) + + slowCamDelay() + val pixelOnBitmap = getBrightImageBitmap(2) + + // turn off pixel now so it doesn't leak into next frame... + resetToBase() + sendToAllReliably(brainsWithPixel(pixelIndex)) { it.pixelShaderBuffer } + // we won't block here yet... + + ImageProcessing.diff(pixelOnBitmap, baseBitmap!!, deltaBitmap) + mapperUi.showDiffImage(deltaBitmap) + val pixelOnImageName = "not-really-an-image.png" +// mapperClient.saveImage(sessionStartTime, "pixel-$pixelIndex", deltaBitmap) + + brainsToMap.values.forEach { brainToMap -> + identifyBrainPixel(pixelIndex, brainToMap, pixelOnBitmap, deltaBitmap, pixelOnImageName) + + delay(1) + // pauseForUserInteraction() + waitUntilUnpaused() + } + + waitForDelivery() // ... of resetting to black above. + } + + suspend fun identifyBrain(index: Int, brainToMap: BrainToMap, retryCount: Int = 0) { + mapperUi.showMessage("MAPPING SURFACE $index / ${brainsToMap.size} (${brainToMap.brainId})…") + + deliverer.send(brainToMap, solidColorBuffer(activeColor)) + deliverer.await() + slowCamDelay() + + val surfaceOnBitmap = getBrightImageBitmap(3) + val surfaceAnalysis = ImageProcessing.diff(surfaceOnBitmap, baseBitmap!!, deltaBitmap) + val surfaceChangeRegion = surfaceAnalysis.detectChangeRegion(.25f) + logger.debug { + "surfaceChangeRegion(${brainToMap.brainId}) =" + + " $surfaceChangeRegion ${surfaceChangeRegion.width}x${surfaceChangeRegion.height}" + } + + mapperUi.showDiffImage(deltaBitmap, surfaceChangeRegion) + + brainToMap.changeRegion = surfaceChangeRegion + + val thresholdValue = surfaceAnalysis.thresholdValueFor(.25f) + // val pxAboveThreshold = surfaceAnalysis.hist.sumValues(thresholdValue..255) + val sampleLocations = mutableListOf>() + ImageProcessing.pixels(surfaceOnBitmap, surfaceChangeRegion) { x, y, value -> + if (value >= thresholdValue && Random.nextFloat() < .05f) { + sampleLocations.add(x to y) + } + } + + if (sampleLocations.isEmpty()) { + logger.warn { "Failed to match anything up with ${brainToMap.brainId}, bailing." } + return + } + + val surfaceBallot = Ballot() + var tries = 1000 + while (surfaceBallot.totalVotes < 10 && tries-- > 0) { + val (x, y) = sampleLocations.random() + val visibleSurface = mapperUi.intersectingSurface(x, y, visibleSurfaces) + val surface = visibleSurface?.modelSurface + surface?.let { + surfaceBallot.cast(surface.name, visibleSurface) + } + } + + if (tries == 0 || surfaceBallot.noVotes()) { + logger.warn { + "Failed to cast sufficient votes (${surfaceBallot.totalVotes}) after 1000 tries" + + " on ${brainToMap.brainId}, bailing." + } + return + } + + // val orderedPanels = visibleSurfaces.map { visiblePanel -> + // visiblePanel to visiblePanel.boxOnScreen.distanceTo(surfaceChangeRegion) + // }.sortedBy { it.second } + // + // mapperUi.showCandidates(orderedPanels) + // + // val firstGuess = orderedPanels.first().first + val firstGuess = surfaceBallot.winner() + val firstGuessSurface = firstGuess.modelSurface + + mapperUi.showMessage("$index / ${brainsToMap.size}: ${brainToMap.brainId} — surface is ${firstGuessSurface.name}?") + mapperUi.showMessage2("Candidate panels: ${surfaceBallot.summarize()}") + + logger.info { "Guessed panel ${firstGuessSurface.name} for ${brainToMap.brainId}" } + brainToMap.guessedModelSurface = firstGuessSurface + brainToMap.guessedVisibleSurface = firstGuess + brainToMap.expectedPixelCount = firstGuessSurface.expectedPixelCount + brainToMap.panelDeltaBitmap = deltaBitmap.clone() + brainToMap.deltaImageName = + webSocketClient.saveImage(sessionStartTime, "brain-${brainToMap.brainId}-$retryCount", deltaBitmap) + } + + private fun identifyBrainPixel( + pixelIndex: Int, + brainToMap: BrainToMap, + pixelOnBitmap: Bitmap, + deltaBitmap: Bitmap, + pixelOnImageName: String + ) { + mapperUi.showMessage("MAPPING PIXEL $pixelIndex / $maxPixelsPerBrain (${brainToMap.brainId})…") + val surfaceChangeRegion = brainToMap.changeRegion + val visibleSurface = brainToMap.guessedVisibleSurface + + if (surfaceChangeRegion != null && surfaceChangeRegion.sqPix() > 0 && visibleSurface != null) { + mapperUi.showAfter(brainToMap.panelDeltaBitmap!!) + + val analysis = ImageProcessing.diff( + pixelOnBitmap, + baseBitmap!!, + deltaBitmap, + brainToMap.panelDeltaBitmap!!, + surfaceChangeRegion + ) + val pixelChangeRegion = analysis.detectChangeRegion(.5f) + logger.debug { + "pixelChangeRegion($pixelIndex,${brainToMap.guessedModelSurface?.name} =" + + " $pixelChangeRegion ${pixelChangeRegion.width}x${pixelChangeRegion.height}" + } + + mapperUi.showDiffImage(deltaBitmap, pixelChangeRegion) + mapperUi.showBefore(pixelOnBitmap) + mapperUi.showAfter(brainToMap.panelDeltaBitmap!!) + + if (analysis.hasBrightSpots() && !pixelChangeRegion.isEmpty()) { + val center = Vector3F( + (pixelChangeRegion.centerX - surfaceChangeRegion.x0) / surfaceChangeRegion.width.toFloat(), + (pixelChangeRegion.centerY - surfaceChangeRegion.y0) / surfaceChangeRegion.height.toFloat(), + 0f + ) + + visibleSurface.addPixel( + pixelIndex, + pixelChangeRegion.centerX.toFloat(), + pixelChangeRegion.centerY.toFloat() + ) + brainToMap.pixelMapData[pixelIndex] = PixelMapData(pixelChangeRegion, pixelOnImageName) + logger.debug { "$pixelIndex/${brainToMap.brainId}: center = $center" } + } else { + mapperUi.showMessage2("looks like no pixel $pixelIndex for ${brainToMap.brainId}…") + } + } + } } - suspend fun run() { - // shut down Pinky, advertise for Brains... - link.broadcast(Ports.PINKY, MapperHelloMessage(isRunning)) - delay(1000L) - link.broadcast(Ports.BRAIN, BrainShaderMessage(Color.BLACK)) - link.broadcast(Ports.PINKY, MapperHelloMessage(isRunning)) - delay(1000L) - link.broadcast(Ports.BRAIN, BrainShaderMessage(Color.BLACK)) - link.broadcast(Ports.BRAIN, BrainIdRequest(Ports.MAPPER)) + private suspend fun slowCamDelay() { + getImage() + getImage() +// getImage() + } + + private suspend fun getBrightImageBitmap(samples: Int): Bitmap { + val bitmap = getImage().toBitmap() + for (i in 1 until samples) { + bitmap.lighten(getImage().toBitmap()) + } + return bitmap + } + + private fun pauseForUserInteraction(message: String = "PRESS PLAY WHEN READY") { + isPaused = true + mapperUi.pauseForUserInteraction() + mapperUi.showMessage2(message) + } + + private suspend fun waitUntilUnpaused() { + while (isPaused) delay(50L) + mapperUi.showMessage2("") + } + + private suspend fun sendToAllReliably( + brains: Collection, + fn: (BrainToMap) -> BrainShader.Buffer + ) { + sendToAll(brains, fn) + waitForDelivery() + } + + private fun sendToAll( + brains: Collection, + fn: (BrainToMap) -> BrainShader.Buffer + ) { + brains.forEach { + deliverer.send(it, fn(it)) + } + } + + private suspend fun waitForDelivery() { + deliverer.await() + } + + private suspend fun retry(fn: suspend () -> Unit) { + fn() + delay(10) + fn() + } + + // keep Pinky from restarting a show up while Mapper is running... + private fun suppressShows() { + suppressShowsJob = launch(CoroutineName("Suppress Pinky")) { + while (isRunning) { + delay(10000L) + udpSocket.broadcastUdp(Ports.PINKY, MapperHelloMessage(isRunning)) + } + } + } + + private fun solidColor(color: Color): BrainShaderMessage { + val buf = solidColorBuffer(color) + return BrainShaderMessage(buf.brainShader, buf) + } + + private fun solidColorBuffer(color: Color): BrainShader.Buffer { + return if (USE_SOLID_SHADERS) { + val solidShader = SolidBrainShader() + solidShader.createBuffer(maxPixelsPerBrain).apply { this.color = color } + } else { + val pixelShader = PixelBrainShader(PixelBrainShader.Encoding.INDEXED_2) + pixelShader.createBuffer(maxPixelsPerBrain).apply { + palette[0] = Color.BLACK + palette[1] = color + setAll(1) + } + } + } + + private val deliverer = ReliableShaderMessageDeliverer() + + inner class ReliableShaderMessageDeliverer { + val outstanding = mutableMapOf, DeliveryAttempt>() + val pongs = Channel() + + fun send(brainToMap: BrainToMap, buffer: BrainShader.Buffer) { + val deliveryAttempt = DeliveryAttempt(brainToMap, buffer) +// logger.debug { "attempting reliable delivery with key ${deliveryAttempt.key.stringify()}" } + outstanding[deliveryAttempt.key] = deliveryAttempt + deliveryAttempt.attemptDelivery() + } + + suspend fun await(retryAfterMillis: Double = 200.0, failAfterMillis: Double = 10000.0) { + logger.debug { "Waiting pongs from ${outstanding.values.map { it.brainToMap.brainId }}..." } + + outstanding.values.forEach { + it.retryAt = it.sentAt + retryAfterMillis + it.failAt = it.sentAt + failAfterMillis + } + + while (outstanding.isNotEmpty()) { + val waitingFor = + outstanding.values.map { it.brainToMap.guessedModelSurface?.name ?: it.brainToMap.brainId } + .sorted() + mapperUi.showMessage2("Waiting for PONG from ${waitingFor.joinToString(",")}") +// logger.debug { "pongs outstanding: ${outstanding.keys.map { it.stringify() }}" } + + var sleepUntil = Double.MAX_VALUE + + val now = clock.now() + + outstanding.values.removeAll { + if (it.failAt < now) { + logger.debug { + "Timed out waiting after ${now - it.sentAt}s for ${it.brainToMap.brainId}" + + " pong ${it.key.stringify()}" + } + it.failed() + true + } else { + if (sleepUntil > it.failAt) sleepUntil = it.failAt + + if (it.retryAt < now) { + logger.warn { + "Haven't heard from ${it.brainToMap.brainId} after ${now - it.sentAt}s," + + " retrying (attempt ${++it.retryCount})..." + } + it.attemptDelivery() + it.retryAt = now + retryAfterMillis + } + if (sleepUntil > it.retryAt) sleepUntil = it.retryAt + false + } + } + + val timeoutSec = sleepUntil - now +// logger.debug { "Before pongs.receive() withTimeout(${timeoutSec}s)" } + val pong = withTimeoutOrNull(timeoutSec.asMillis()) { + pongs.receive() + } - while (isRunning) { - link.broadcast(Ports.PINKY, MapperHelloMessage(isRunning)) + if (pong != null) { + val pongTag = pong.data.toList() +// logger.debug { "Received pong(${pongTag.stringify()})" } - delay(10000L) + val deliveryAttempt = outstanding.remove(pongTag) + if (deliveryAttempt != null) { + deliveryAttempt.succeeded() + } else { + logger.warn { "huh? no such pong tag ${pongTag.stringify()}!" } + } + } + + mapperUi.showMessage2("") + } } - link.broadcast(Ports.PINKY, MapperHelloMessage(isRunning)) + fun gotPong(pingMessage: PingMessage) { + launch { + pongs.send(pingMessage) + } + } } - override fun receive(fromAddress: Network.Address, bytes: ByteArray) { + class TimeoutException(message: String) : Exception(message) + + inner class DeliveryAttempt(val brainToMap: BrainToMap, val buffer: BrainShader.Buffer) { + private val tag = Random.nextBytes(8) + val key get() = tag.toList() + val sentAt = clock.now() + var retryAt = 0.0 + var failAt = 0.0 + var retryCount = 0 + + fun attemptDelivery() { + udpSocket.sendUdp(brainToMap.address, brainToMap.port, BrainShaderMessage(buffer.brainShader, buffer, tag)) + } + + fun succeeded() { + logger.debug { "${brainToMap.brainId} shader message pong after ${clock.now() - sentAt}s" } + } + + fun failed() { + logger.error { "${brainToMap.brainId} shader message pong not received after ${clock.now() - sentAt}s" } + } + } + + override fun receive(fromAddress: Network.Address, fromPort: Int, bytes: ByteArray) { +// logger.debug { "Mapper received message from $fromAddress:$fromPort ${bytes[0]}" } val message = parse(bytes) when (message) { - is BrainIdResponse -> { - println("Mapper: heard from Brain at ${fromAddress}: ${message.name}") - link.send(fromAddress, Ports.BRAIN, BrainShaderMessage(Color.WHITE)) + is BrainHelloMessage -> { + logger.debug { "Heard from Brain ${message.brainId} surface=${message.surfaceName ?: "unknown"}" } + val brainToMap = brainsToMap.getOrPut(fromAddress) { BrainToMap(fromAddress, message.brainId) } + mapperUi.showMessage("${brainsToMap.size} SURFACES DISCOVERED!") + brainToMap.shade { solidColor(Color.GREEN) } } - is PinkyPongMessage -> { - println("Mapper: pong from pinky: ${message.brainIds}") - message.brainIds.forEach { id -> - println("id = ${id}") -// display. + is PingMessage -> { + if (message.isPong) { + deliverer.gotPong(message) } } } } + private fun haveImage(image: Image) { +// println("image: $image") + mapperUi.showCamImage(image) + + newIncomingImage = image + } + + /** + * Get an image from the camera that was [we hope was] captured after the moment the method was called. + */ + private suspend fun getImage(): Image { + newIncomingImage = null + + while (newIncomingImage == null) { + delay(2L) + } + + val image = newIncomingImage!! + newIncomingImage = null + return image + } + + private suspend fun getImage(tries: Int = 5, test: (Image) -> Boolean): Image { + var image = getImage() + var remainingTries = tries - 1 + while (!test(image) && remainingTries-- > 0) { + image = getImage() + } + return image + } + + inner class BrainToMap(val address: Network.Address, val brainId: String) { + val port get() = Ports.BRAIN + + var expectedPixelCount: Int? = null + val expectedPixelCountOrDefault: Int + get() = expectedPixelCount ?: SparkleMotion.DEFAULT_PIXEL_COUNT + + var changeRegion: MediaDevices.Region? = null + var guessedModelSurface: Model.Surface? = null + var guessedVisibleSurface: MapperUi.VisibleSurface? = null + var panelDeltaBitmap: Bitmap? = null + var deltaImageName: String? = null + val pixelMapData: MutableMap = mutableMapOf() + var surfaceData: MappingSession.SurfaceData? = null + var screenMin: Vector2F? = null + var screenMax: Vector2F? = null + + val pixelShader = PixelBrainShader(PixelBrainShader.Encoding.INDEXED_2) + val pixelShaderBuffer = pixelShader.createBuffer(maxPixelsPerBrain).apply { + palette[0] = Color.BLACK + palette[1] = Color.WHITE + setAll(0) + } + + fun shade(shaderMessage: () -> BrainShaderMessage) { + udpSocket.sendUdp(address, Ports.BRAIN, shaderMessage()) + } + } + + class PixelMapData(val pixelChangeRegion: MediaDevices.Region, val deltaImageName: String) + + private class Ballot { + private val box = hashMapOf>() + var totalVotes: Int = 0 + private set + + fun cast(key: String, value: T) { + box.getOrPut(key) { Vote(value) }.votes++ + totalVotes++ + } + + fun noVotes(): Boolean = box.isEmpty() + + fun winner(): T { + return box.values.sortedByDescending { it.votes }.first().item + } + + fun summarize(): String { + return box.entries + .sortedByDescending { (_, v) -> v.votes } + .map { (k, v) -> "$k=${v.votes}" } + .joinToString(", ") + } + + private class Vote(val item: T) { + var votes = 0 + } + } + + companion object { + val logger = Logger("Mapper") + + private val maxPixelsPerBrain = SparkleMotion.MAX_PIXEL_COUNT + } + + fun List.stringify(): String { + return joinToString("") { (it.toInt() and 0xff).toString(16).padStart(2, '0') } + } +} + +interface MapperUi { + fun listen(listener: Listener) + + fun addWireframe(model: Model) + fun showCamImage(image: Image, changeRegion: MediaDevices.Region? = null) + fun showDiffImage(deltaBitmap: Bitmap, changeRegion: MediaDevices.Region? = null) + fun showMessage(message: String) + fun showMessage2(message: String) + fun showBefore(bitmap: Bitmap) + fun showAfter(bitmap: Bitmap) + fun setRedo(fn: (suspend () -> Unit)?) + fun lockUi(): CameraOrientation + fun unlockUi() + fun getVisibleSurfaces(): List + fun showCandidates(orderedPanels: List>) + fun intersectingSurface(x: Int, y: Int, visibleSurfaces: List): VisibleSurface? + fun showStats(total: Int, mapped: Int, visible: Int) + fun close() + fun addExistingSession(name: String) + fun pauseForUserInteraction() + + interface Listener { + fun onStart() + fun onPause() + fun onStop() + fun onClose() + } + + interface VisibleSurface { + val modelSurface: Model.Surface + val boxOnScreen: MediaDevices.Region + val pixelsInModelSpace: List + fun translatePixelToPanelSpace(screenX: Float, screenY: Float): Vector2F? + fun addPixel(pixelIndex: Int, x: Float, y: Float) + fun showPixels() + fun hidePixels() + } + + interface CameraOrientation { + val cameraMatrix: Matrix4 + val aspect: Double + } } diff --git a/src/commonMain/kotlin/baaahs/MediaDevices.kt b/src/commonMain/kotlin/baaahs/MediaDevices.kt new file mode 100644 index 0000000000..aa7d12700b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/MediaDevices.kt @@ -0,0 +1,65 @@ +package baaahs + +import baaahs.imaging.Bitmap +import baaahs.imaging.Image +import kotlin.math.* + +interface MediaDevices { + fun getCamera(): Camera + + interface Camera { + var onImage: (image: Image) -> Unit + + fun close() + } + + data class Region(val x0: Int, val y0: Int, val x1: Int, val y1: Int) { + val width = x1 - x0 + val height = y1 - y0 + + val centerX = (x1 - x0) / 2 + x0 + val centerY = (y1 - y0) / 2 + y0 + + val xRange = x0 until x1 + val yRange = y0 until y1 + + fun distanceTo(other: Region): Float { + val dX = centerX - other.centerX + val dY = centerY - other.centerY + + return sqrt((dX * dX + dY * dY).toDouble()).toFloat() + } + + fun intersectionWith(other: Region): Region { + val leftX = max(x0, other.x0) + val rightX = min(x1, x1) + val topY = max(y0, other.y0) + val bottomY = min(y1, other.y1) + + return if (leftX < rightX && topY < bottomY) { + Region(leftX, topY, rightX, bottomY) + } else { + EMPTY + } + } + + fun sqPix(): Float = sqrt((x1 - x0.toDouble()).pow(2) + (y1 - y0.toDouble()).pow(2)).toFloat() + fun scaled(fromX: Int, fromY: Int, toX: Int, toY: Int): Region { + return Region( + (x0.toFloat() / fromX * toX).toInt(), + (y0.toFloat() / fromX * toX).toInt(), + (x1.toFloat() / fromY * toY).toInt(), + (y1.toFloat() / fromY * toY).toInt() + ) + } + + fun isEmpty(): Boolean = width <= 0 || height <= 0 + + companion object { + val EMPTY = Region(-1, -1, -1, -1) + + fun containing(bitmap: Bitmap) = Region(0, 0, bitmap.width, bitmap.height) + fun containing(image: Image) = Region(0, 0, image.width, image.height) + } + } +} diff --git a/src/commonMain/kotlin/baaahs/MovingHeadManager.kt b/src/commonMain/kotlin/baaahs/MovingHeadManager.kt new file mode 100644 index 0000000000..fa79883bee --- /dev/null +++ b/src/commonMain/kotlin/baaahs/MovingHeadManager.kt @@ -0,0 +1,43 @@ +package baaahs + +import baaahs.dmx.Dmx +import baaahs.fixtures.* +import baaahs.model.MovingHead +import baaahs.util.Logger + +class MovingHeadManager( + private val fixtureManager: FixtureManager, + private val dmxUniverse: Dmx.Universe, + movingHeads: List +) { + init { + fixtureManager.addFrameListener { + dmxUniverse.sendFrame() + } + } + + private val fixtures = movingHeads.map { movingHead -> + val movingHeadBuffer = movingHead.newBuffer(dmxUniverse) + + Fixture(movingHead, 1, emptyList(), MovingHeadDevice, transport = object : Transport { + override val name: String + get() = "DMX Transport" + + override fun send(fixture: Fixture, resultViews: List) { + val params = MovingHeadDevice.getResults(resultViews)[0] + movingHeadBuffer.pan = params.pan + movingHeadBuffer.tilt = params.tilt + movingHeadBuffer.colorWheelPosition = params.colorWheel + movingHeadBuffer.dimmer = params.dimmer + } + }) + } + + suspend fun start() { + fixtureManager.fixturesChanged(fixtures, emptyList()) + } + + companion object { + private val logger = Logger() + } +} diff --git a/src/commonMain/kotlin/baaahs/Network.kt b/src/commonMain/kotlin/baaahs/Network.kt deleted file mode 100644 index 20e775eddb..0000000000 --- a/src/commonMain/kotlin/baaahs/Network.kt +++ /dev/null @@ -1,100 +0,0 @@ -package baaahs - -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import kotlin.jvm.Synchronized -import kotlin.random.Random - -interface Network { - fun link(): Link - - interface Link { - val myAddress: Address - - fun listen(port: Int, listener: Listener) - fun send(toAddress: Address, port: Int, bytes: ByteArray) - fun broadcast(port: Int, bytes: ByteArray) - - fun send(toAddress: Address, port: Int, message: Message) { - send(toAddress, port, message.toBytes()) - } - - fun broadcast(port: Int, message: Message) { - broadcast(port, message.toBytes()) - } - } - - interface Address - - interface Listener { - fun receive(fromAddress: Address, bytes: ByteArray) - } -} - - -class FakeNetwork( - private val networkDelay: Long = 1L, - private val display: NetworkDisplay -) : Network { - private val listeners: MutableMap, Network.Listener> = hashMapOf() - private val listenersByPort: MutableMap> = hashMapOf() - private var nextAddress = 0xb00f - - @Synchronized - override fun link(): Network.Link { - val address = FakeAddress(nextAddress++) - return FakeLink(address) - } - - @Synchronized - private fun listen(address: Network.Address, port: Int, listener: Network.Listener) { - listeners.put(Pair(address, port), listener) - val portListeners = listenersByPort.getOrPut(port) { mutableListOf() } - portListeners.add(listener) - } - - @Synchronized - private fun send(fromAddress: Network.Address, toAddress: Network.Address, port: Int, bytes: ByteArray) { - val listener = listeners[Pair(toAddress, port)] - if (listener != null) transmit(fromAddress, listener, bytes) - } - - @Synchronized - private fun broadcast(fromAddress: Network.Address, port: Int, bytes: ByteArray) { - listenersByPort[port]?.forEach { listener -> - transmit(fromAddress, listener, bytes) - } - } - - private fun transmit(fromAddress: Network.Address, listener: Network.Listener, bytes: ByteArray) { - GlobalScope.launch { - delay(networkDelay) - if (Random.nextInt() % 10 != 1) { - display.receivedPacket() - listener.receive(fromAddress, bytes) - } else { - display.droppedPacket() - } - } - } - - private inner class FakeLink(override val myAddress: Network.Address) : Network.Link { - override fun listen(port: Int, listener: Network.Listener) { - this@FakeNetwork.listen(myAddress, port, listener) - } - - override fun send(toAddress: Network.Address, port: Int, bytes: ByteArray) { - this@FakeNetwork.send(myAddress, toAddress, port, bytes) - } - - override fun broadcast(port: Int, bytes: ByteArray) { - this@FakeNetwork.broadcast(myAddress, port, bytes) - } - } -} - -private data class FakeAddress(val id: Int) : Network.Address { - override fun toString(): String = "x${id.toString(16)}" -} - diff --git a/src/commonMain/kotlin/baaahs/Pinky.kt b/src/commonMain/kotlin/baaahs/Pinky.kt index 19ad627c4a..62020bfe21 100644 --- a/src/commonMain/kotlin/baaahs/Pinky.kt +++ b/src/commonMain/kotlin/baaahs/Pinky.kt @@ -1,95 +1,372 @@ package baaahs -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import kotlin.jvm.Synchronized -import kotlin.math.abs -import kotlin.math.sin -import kotlin.random.Random - -class Pinky(val network: Network, val display: PinkyDisplay) : Network.Listener { - private lateinit var link: Network.Link - private val brains: MutableMap = mutableMapOf() - private val beatProvider = BeatProvider(120.0f) - private val show = SomeDumbShow() +import baaahs.api.ws.WebSocketRouter +import baaahs.dmx.Dmx +import baaahs.fixtures.Fixture +import baaahs.fixtures.FixtureManager +import baaahs.gl.RootToolchain +import baaahs.gl.glsl.CompilationException +import baaahs.gl.render.RenderManager +import baaahs.io.ByteArrayWriter +import baaahs.io.Fs +import baaahs.mapper.MappingResults +import baaahs.mapper.PinkyMapperHandlers +import baaahs.mapper.SessionMappingResults +import baaahs.mapper.Storage +import baaahs.model.Model +import baaahs.net.FragmentingUdpLink +import baaahs.net.Network +import baaahs.plugin.Plugins +import baaahs.proto.* +import baaahs.show.Show +import baaahs.util.Clock +import baaahs.util.Framerate +import baaahs.util.Logger +import kotlinx.coroutines.* +import kotlinx.serialization.Serializable +import kotlin.coroutines.CoroutineContext + +class Pinky( + val model: Model, + val network: Network, + val dmxUniverse: Dmx.Universe, + val clock: Clock, + fs: Fs, + val firmwareDaddy: FirmwareDaddy, + soundAnalyzer: SoundAnalyzer, + private val switchShowAfterIdleSeconds: Int? = 600, + private val adjustShowAfterIdleSeconds: Int? = null, + renderManager: RenderManager, + val plugins: Plugins, + val pinkyMainDispatcher: CoroutineDispatcher +) : CoroutineScope, Network.UdpListener { + val facade = Facade() + private val storage = Storage(fs, plugins) + private val mappingResults = FutureMappingResults() + + private val link = FragmentingUdpLink(network.link("pinky")) + val httpServer = link.startHttpServer(Ports.PINKY_UI_TCP) + private var mapperIsRunning = false - fun run() { - link = network.link() - link.listen(Ports.PINKY, this) + private val pinkyJob = SupervisorJob() + override val coroutineContext: CoroutineContext = pinkyMainDispatcher + pinkyJob + + private val pubSub: PubSub.Server = PubSub.Server(httpServer, coroutineContext) +// private val gadgetManager = GadgetManager(pubSub) + internal val fixtureManager = FixtureManager(renderManager) + + val toolchain = RootToolchain(plugins) + val stageManager: StageManager = StageManager( + toolchain, renderManager, pubSub, storage, fixtureManager, clock, model, coroutineContext + ) + + fun switchTo(newShow: Show?, file: Fs.File? = null) { + stageManager.switchTo(newShow, file = file) + } + +// private var selectedNewShowAt = DateTime.now() + + var pixelCount: Int = 0 + + val address: Network.Address get() = link.myAddress + private val networkStats = NetworkStats() + + // This needs to go last-ish, otherwise we start getting network traffic too early. + private val udpSocket = link.listenUdp(Ports.PINKY, this) + private val brainManager = + BrainManager(fixtureManager, firmwareDaddy, model, mappingResults, udpSocket, networkStats, clock) + private val movingHeadManager = MovingHeadManager(fixtureManager, dmxUniverse, model.movingHeads) + + private val serverNotices = arrayListOf() + private val serverNoticesChannel = pubSub.publish(Topics.serverNotices, serverNotices) { + launch { + serverNotices.clear() + serverNotices.addAll(it) + } } - fun start() { - GlobalScope.launch { + private var pinkyState = PinkyState.Initializing + private val pinkyStateChannel = pubSub.publish(Topics.pinkyState, pinkyState) {} + + init { + httpServer.listenWebSocket("/ws/api") { + WebSocketRouter(coroutineContext) { PinkyMapperHandlers(storage).register(this) } + } + + httpServer.listenWebSocket("/ws/visualizer") { ListeningVisualizer() } + } + + private var isStartedUp = false + private var keepRunning = true + + suspend fun startAndRun(simulateBrains: Boolean = false) { + withContext(coroutineContext) { + val startupJobs = launchStartupJobs() + val daemonJobs = launchDaemonJobs() + + startupJobs.join() + + if (simulateBrains) addSimulatedBrains() + run() + daemonJobs.cancelAndJoin() } + } - GlobalScope.launch { - beatProvider.run() + fun addSimulatedBrains() { + val fakeAddress = object : Network.Address {} + val mappingInfos = (mappingResults.actualMappingResults as SessionMappingResults).brainData + mappingInfos.forEach { (brainId, info) -> + brainManager.foundBrain( + fakeAddress, BrainHelloMessage(brainId.uuid, info.surface.name, null, null), + isSimulatedBrain = true + ) } + } - GlobalScope.launch { - while (true) { - if (!mapperIsRunning) { - show.nextFrame(display.color, beatProvider.beat, brains, link) - } + private suspend fun run() { + while (keepRunning) { + if (mapperIsRunning) { + disableDmx() delay(50) + continue } + + updateFixtures() + + networkStats.reset() + val elapsedMs = time { + try { + stageManager.renderAndSendNextFrame() + } catch (e: Exception) { + logger.error(e) { "Error rendering frame for ${stageManager.facade.currentShow?.title}"} + if (e is CompilationException) { + e.source?.let { logger.info { it } } + } + delay(1000) + } + } + facade.notifyChanged() + facade.framerate.elapsed(elapsedMs) + + maybeChangeThingsIfUsersAreIdle() + + delay(30) } } - override fun receive(fromAddress: Network.Address, bytes: ByteArray) { - val message = parse(bytes) - when (message) { - is BrainHelloMessage -> { - foundBrain(RemoteBrain(fromAddress)) - } + internal suspend fun launchStartupJobs(): Job { + return CoroutineScope(coroutineContext).launch { + CoroutineScope(coroutineContext).launch { + launch { firmwareDaddy.start() } + launch { movingHeadManager.start() } + launch { mappingResults.actualMappingResults = storage.loadMappingData(model) } + launch { loadConfig() } + }.join() - is MapperHelloMessage -> { - mapperIsRunning = message.isRunning + isStartedUp = true + updatePinkyState(PinkyState.Running) + } + } + + private fun updatePinkyState(newState: PinkyState) { + pinkyState = newState + pinkyStateChannel.onChange(newState) + } + + private suspend fun launchDaemonJobs(): Job { + return CoroutineScope(coroutineContext).launch { + launch { + while (true) { + if (mapperIsRunning) { + logger.info { "Mapping ${brainManager.brainCount} brains..." } + } else { + logger.info { "Sending to ${brainManager.brainCount} brains..." } + } + delay(10000) + } } } + } + private fun maybeChangeThingsIfUsersAreIdle() { +// val now = DateTime.now() +// val secondsSinceUserInteraction = now.minus(gadgetManager.lastUserInteraction).seconds +// if (switchShowAfterIdleSeconds != null +// && now.minus(selectedNewShowAt).seconds > switchShowAfterIdleSeconds +// && secondsSinceUserInteraction > switchShowAfterIdleSeconds +// ) { +//// TODO switchToShow(shows.random()) +// selectedNewShowAt = now +// } +// +// if (adjustShowAfterIdleSeconds != null +// && secondsSinceUserInteraction > adjustShowAfterIdleSeconds +// ) { +// gadgetManager.adjustSomething() +// } } - @Synchronized - private fun foundBrain(remoteBrain: RemoteBrain) { - brains.put(remoteBrain.address, remoteBrain) - display.brainCount = brains.size + internal fun renderAndSendNextFrame() { + stageManager.renderAndSendNextFrame() } - inner class BeatProvider(val bpm: Float) { - var startTimeMillis = 0L - var beat = 0 - var beatsPerMeasure = 4 + internal fun updateFixtures() { + if (brainManager.updateFixtures()) { + facade.notifyChanged() + } + } - suspend fun run() { - startTimeMillis = getTimeMillis() + private fun disableDmx() { + dmxUniverse.allOff() + } - while (true) { - display.beat = beat + override fun receive(fromAddress: Network.Address, fromPort: Int, bytes: ByteArray) { + if (!isStartedUp) return - val offsetMillis = getTimeMillis() - startTimeMillis - val millisPerBeat = (1000 / (bpm / 60)).toLong() - val delayTimeMillis = millisPerBeat - offsetMillis % millisPerBeat - delay(delayTimeMillis) - beat = (beat + 1) % beatsPerMeasure + CoroutineScope(coroutineContext).launch { + when (val message = parse(bytes)) { + is BrainHelloMessage -> brainManager.foundBrain(fromAddress, message) + is PingMessage -> brainManager.receivedPing(fromAddress, message) + is MapperHelloMessage -> { + logger.debug { "Mapper isRunning=${message.isRunning}" } + mapperIsRunning = message.isRunning + } } } } + + class NetworkStats(var bytesSent: Int = 0, var packetsSent: Int = 0) { + internal fun reset() { + bytesSent = 0 + packetsSent = 0 + } + } + + inner class ListeningVisualizer : Network.WebSocketListener { + lateinit var tcpConnection: Network.TcpConnection + + override fun connected(tcpConnection: Network.TcpConnection) { + this.tcpConnection = tcpConnection + brainManager.addListeningVisualizer(this) + } + + override fun receive(tcpConnection: Network.TcpConnection, bytes: ByteArray) { + TODO("not implemented") + } + + override fun reset(tcpConnection: Network.TcpConnection) { + brainManager.removeListeningVisualizer(this) + } + + fun sendPixelData(fixture: Fixture) { + if (fixture.modelEntity != null) { + val pixelLocations = fixture.pixelLocations + + val out = ByteArrayWriter(fixture.name.length + fixture.pixelCount * 3 * 4 + 20) + out.writeByte(0) + out.writeString(fixture.name) + out.writeInt(fixture.pixelCount) + pixelLocations.forEach { it.serialize(out) } + tcpConnection.send(out.toBytes()) + } + } + + fun sendFrame(fixture: Fixture, colors: List) { + if (fixture.modelEntity != null) { + val out = ByteArrayWriter(fixture.name.length + colors.size * 3 + 20) + out.writeByte(1) + out.writeString(fixture.name) + out.writeInt(colors.size) + colors.forEach { + it.serializeWithoutAlpha(out) + } + tcpConnection.send(out.toBytes()) + } + } + } + + suspend fun loadConfig() { + val config = storage.loadConfig() + config?.runningShowPath?.let { lastRunningShowPath -> + val lastRunningShowFile = storage.resolve(lastRunningShowPath) + try { + val show = storage.loadShow(lastRunningShowFile) + if (show == null) { + logger.warn { "No show found at $lastRunningShowPath" } + } else { + switchTo(show, file = lastRunningShowFile) + } + } catch (e: Exception) { + reportError("Failed to load show at $lastRunningShowPath", e) + } + } + } + + private fun reportError(message: String, e: Exception) { + logger.error(e) { message } + serverNotices.add(ServerNotice(message, e.message)) + serverNoticesChannel.onChange(serverNotices) + } + + @Serializable + data class ServerNotice( + val title: String, + val message: String?, + val id: String = randomId("error") + ) + + companion object { + val logger = Logger("Pinky") + } + + inner class Facade : baaahs.ui.Facade() { + val stageManager: StageManager.Facade + get() = this@Pinky.stageManager.facade + + val networkStats: NetworkStats + get() = this@Pinky.networkStats + + val brains: List + get() = this@Pinky.brainManager.activeBrains.values.toList() + + val clock: Clock + get() = this@Pinky.clock + + val framerate = Framerate() + + val pixelCount: Int + get() = this@Pinky.pixelCount + } +} + +@Serializable +data class PinkyConfig( + val runningShowPath: String? +) + +@Serializable +enum class PinkyState { + Initializing, + Running, + ShuttingDown } -class RemoteBrain(val address: Network.Address) +private class FutureMappingResults : MappingResults { + var actualMappingResults: MappingResults? = null + + override fun dataFor(brainId: BrainId): MappingResults.Info? { + if (actualMappingResults == null) { + Pinky.logger.warn { "Mapping results for $brainId requested before available." } + } + return actualMappingResults?.dataFor(brainId) + } -class SomeDumbShow { - fun nextFrame(color: Color?, beat: Int, brains: MutableMap, link: Network.Link) { - brains.values.forEach { brain -> - val brainSeed = brain.address.toString().hashCode() - val saturation = Random(brainSeed).nextFloat() * - abs(sin(brainSeed + getTimeMillis() / 1000.toDouble())).toFloat() - val desaturatedColor = color!!.withSaturation(saturation) - link.send(brain.address, Ports.BRAIN, BrainShaderMessage(desaturatedColor)) + override fun dataFor(surfaceName: String): MappingResults.Info? { + if (actualMappingResults == null) { + Pinky.logger.warn { "Mapping results for $surfaceName requested before available." } } + return actualMappingResults?.dataFor(surfaceName) } } \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Pluggables.kt b/src/commonMain/kotlin/baaahs/Pluggables.kt new file mode 100644 index 0000000000..3917ce56c2 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/Pluggables.kt @@ -0,0 +1,25 @@ +package baaahs + +import baaahs.model.Model +import baaahs.models.Decom2019Model +import baaahs.models.SheepModel +import baaahs.models.SuiGenerisModel +import kotlin.js.JsName + +object Pluggables { + @JsName("defaultModel") + const val defaultModel = "BAAAHS" + + @JsName("loadModel") + fun loadModel(name: String): Model { + return when (name) { + "Decom2019" -> Decom2019Model() + "SuiGeneris" -> SuiGenerisModel() + "BAAAHS" -> SheepModel() + else -> throw IllegalArgumentException("unknown model \"$name\"") + }.apply { load() } + } + + // TODO: not this + fun getModel() = loadModel(defaultModel) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Protocol.kt b/src/commonMain/kotlin/baaahs/Protocol.kt deleted file mode 100644 index 03c9dacc13..0000000000 --- a/src/commonMain/kotlin/baaahs/Protocol.kt +++ /dev/null @@ -1,106 +0,0 @@ -package baaahs - -interface Ports { - companion object { - val MAPPER = 8001 - val PINKY = 8002 - val BRAIN = 8003 - } -} - -enum class Type { - BRAIN_HELLO, - BRAIN_PANEL_SHADE, - MAPPER_HELLO, - BRAIN_ID_REQUEST, - BRAIN_ID_RESPONSE, - PINKY_PONG -} - -fun parse(bytes: ByteArray): Message { - val reader = ByteArrayReader(bytes) - return when (Type.values()[reader.readByte().toInt()]) { - Type.BRAIN_HELLO -> BrainHelloMessage() - Type.BRAIN_PANEL_SHADE -> BrainShaderMessage.parse(reader) - Type.MAPPER_HELLO -> MapperHelloMessage.parse(reader) - Type.BRAIN_ID_REQUEST -> BrainIdRequest.parse(reader) - Type.BRAIN_ID_RESPONSE -> BrainIdResponse.parse(reader) - Type.PINKY_PONG -> PinkyPongMessage.parse(reader) - } -} - -class BrainHelloMessage : Message(Type.BRAIN_HELLO) - -class BrainShaderMessage(val color: Color) : Message(Type.BRAIN_PANEL_SHADE) { - companion object { - fun parse(reader: ByteArrayReader) = BrainShaderMessage(Color.parse(reader)) - } - - override fun serialize(writer: ByteArrayWriter) { - color.serialize(writer) - } -} - -class MapperHelloMessage(val isRunning: Boolean) : Message(Type.MAPPER_HELLO) { - companion object { - fun parse(reader: ByteArrayReader): MapperHelloMessage { - return MapperHelloMessage(reader.readBoolean()) - } - } - - override fun serialize(writer: ByteArrayWriter) { - writer.writeBoolean(isRunning) - } -} - -class BrainIdRequest(val port: Int) : Message(Type.BRAIN_ID_REQUEST) { - companion object { - fun parse(reader: ByteArrayReader) = BrainIdRequest(reader.readInt()) - } - - override fun serialize(writer: ByteArrayWriter) { - writer.writeInt(port) - } -} - -class BrainIdResponse(val name: String) : Message(Type.BRAIN_ID_RESPONSE) { - companion object { - fun parse(reader: ByteArrayReader) = BrainIdResponse(reader.readString()) - } - - override fun serialize(writer: ByteArrayWriter) { - writer.writeString(name) - } -} - -class PinkyPongMessage(val brainIds: List) : Message(Type.PINKY_PONG) { - companion object { - fun parse(reader: ByteArrayReader): PinkyPongMessage { - val brainCount = reader.readInt(); - val brainIds = mutableListOf() - for (i in 0 until brainCount) { - brainIds.add(reader.readString()) - } - return PinkyPongMessage(brainIds) - } - } - - override fun serialize(writer: ByteArrayWriter) { - writer.writeInt(brainIds.size) - brainIds.forEach { writer.writeString(it) } - } -} - -open class Message(val type: Type) { - fun toBytes(): ByteArray { - val writer = ByteArrayWriter(1 + size()) - writer.writeByte(type.ordinal.toByte()) - serialize(writer) - return writer.toBytes() - } - - open fun serialize(writer: ByteArrayWriter) { - } - - open fun size(): Int = 127 -} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/PubSub.kt b/src/commonMain/kotlin/baaahs/PubSub.kt new file mode 100644 index 0000000000..ccc437876f --- /dev/null +++ b/src/commonMain/kotlin/baaahs/PubSub.kt @@ -0,0 +1,637 @@ +package baaahs + +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import baaahs.net.Network +import baaahs.util.Logger +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.modules.SerializersModule +import kotlin.coroutines.CoroutineContext +import kotlin.js.JsName +import kotlin.jvm.Synchronized +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KProperty + +abstract class PubSub { + + companion object { + val verbose = true + + fun listen(httpServer: Network.HttpServer, coroutineContext: CoroutineContext): Server { + return Server(httpServer, coroutineContext) + } + + fun connect(networkLink: Network.Link, address: Network.Address, port: Int): Client { + return Client(networkLink, address, port) + } + + val logger = Logger("PubSub") + } + + open class Origin(val id: String) { + override fun toString(): String = "Origin($id)" + } + + interface Channel { + @JsName("onChange") + fun onChange(t: T) + + @JsName("replaceOnUpdate") + fun replaceOnUpdate(onUpdate: (T) -> Unit) + + @JsName("unsubscribe") + fun unsubscribe() + } + + class CommandPort( + val name: String, + private val serializer: KSerializer, + private val replySerializer: KSerializer, + serialModule: SerializersModule = SerializersModule {} + ) { + private val json = Json { serializersModule = serialModule } + + fun toJson(command: C): String = json.encodeToString(serializer, command) + fun fromJson(command: String): C = json.decodeFromString(serializer, command) + fun replyToJson(command: R): String = json.encodeToString(replySerializer, command) + fun replyFromJson(command: String): R = json.decodeFromString(replySerializer, command) + } + + data class Topic( + val name: String, + val serializer: KSerializer, + val serialModule: SerializersModule = SerializersModule { } + ) + + abstract class Listener(private val origin: Origin) { + fun onUpdate(data: JsonElement, fromOrigin: Origin) { + if (origin !== fromOrigin) { + onUpdate(data) + } + } + + abstract fun onUpdate(data: JsonElement) + + open val isServerListener = false + } + + class TopicInfo(private val topic: Topic) { + val name: String get() = topic.name + internal lateinit var jsonValue: JsonElement private set + + private val listeners: MutableList = mutableListOf() + internal val listeners_TEST_ONLY: MutableList get() = listeners + private val json = Json { serializersModule = topic.serialModule } + + fun notify(newValue: T, origin: Origin) { + if (topic.serializer.descriptor.isNullable) { + // Workaround for https://github.com/Kotlin/kotlinx.serialization/issues/539 + notify(json.encodeToJsonElement(ListSerializer(topic.serializer), listOf(newValue)), origin) + } else { + notify(json.encodeToJsonElement(topic.serializer, newValue), origin) + } + } + + fun notify(s: String, origin: Origin) = notify(json.parseToJsonElement(s), origin) + + private fun notify(newData: JsonElement, origin: Origin) { + maybeUpdateValueAndGetListeners(newData).forEach { listener -> + listener.onUpdate(newData, origin) + } + } + + @Synchronized + private fun maybeUpdateValueAndGetListeners(newData: JsonElement): List { + return if (!this::jsonValue.isInitialized || newData != jsonValue) { + jsonValue = newData + listeners.toList() + } else { + emptyList() + } + } + + @ExperimentalSerializationApi + fun deserialize(jsonElement: JsonElement): T { + return if (topic.serializer.descriptor.isNullable) { + // Workaround for https://github.com/Kotlin/kotlinx.serialization/issues/539 + json.decodeFromJsonElement(ListSerializer(topic.serializer), jsonElement)[0] + } else { + json.decodeFromJsonElement(topic.serializer, jsonElement) + } + } + + fun stringify(jsonElement: JsonElement): String = json.encodeToString(JsonElement.serializer(), jsonElement) + + @Synchronized + fun addListener(listener: Listener) { + listeners.add(listener) + if (this::jsonValue.isInitialized) { + listener.onUpdate(jsonValue) + } + } + + @Synchronized + fun removeListener(listener: Listener) { + listeners.remove(listener) + } + + // If only the server listener remains, effectively no listeners. + @Synchronized + fun noRemainingListeners(): Boolean = listeners.all { it.isServerListener } + + @Synchronized + fun removeListeners(block: (Listener) -> Boolean) { + listeners.removeAll(block) + } + } + + interface CommandChannel { + fun send(command: C) + } + + class Topics { + private val map = hashMapOf>() + + @Synchronized + operator fun get(topicName: String): TopicInfo<*>? = map[topicName] + + @Synchronized + fun find(topicName: String): TopicInfo<*> = map.getBang(topicName, "topic") + + @Synchronized + fun getOrPut(topicName: String, function: () -> TopicInfo): TopicInfo<*> { + return map.getOrPut(topicName, function) + } + + @Synchronized + private fun values() = map.values.toList() + + fun forEach(function: (TopicInfo<*>) -> Unit) { + values().forEach(function) + } + } + + class CommandChannels { + private val serverChannels: MutableMap> = hashMapOf() + private val clientChannels: MutableMap> = hashMapOf() + + @Synchronized + fun hasServerChannel(name: String) = serverChannels.containsKey(name) + + @Synchronized + fun getServerChannel(name: String) = serverChannels.getBang(name, "command channel") + + @Synchronized + fun putServerChannel(name: String, channel: Server.ServerCommandChannel<*, *>) { + serverChannels[name] = channel + } + + + @Synchronized + fun hasClientChannel(name: String) = clientChannels.containsKey(name) + + @Synchronized + fun getClientChannel(name: String) = clientChannels.getBang(name, "command channel") + + @Synchronized + fun putClientChannel(name: String, channel: Client.ClientCommandChannel<*, *>) { + clientChannels[name] = channel + } + } + + abstract class Connection( + private val name: String, + private val topics: Topics, + private val commandChannels: CommandChannels + ) : Origin("connection $name"), Network.WebSocketListener { + var isConnected: Boolean = false + + private var connection: Network.TcpConnection? = null + private val cleanups = Cleanups() + + override fun connected(tcpConnection: Network.TcpConnection) { + debug("connection $name established") + connection = tcpConnection + isConnected = true + } + + inner class ClientListener( + private val topicInfo: TopicInfo<*>, + val tcpConnection: Network.TcpConnection + ) : Listener(this) { + override fun onUpdate(data: JsonElement) = sendTopicUpdate(topicInfo, data) + } + + override fun receive(tcpConnection: Network.TcpConnection, bytes: ByteArray) { + val reader = ByteArrayReader(bytes) + when (val command = reader.readString()) { + "sub" -> { + val topicName = reader.readString() + val topicInfo = topics.find(topicName) + + val listener = ClientListener(topicInfo, tcpConnection) + topicInfo.addListener(listener) + cleanups.add { topicInfo.removeListener(listener) } + } + + "unsub" -> { + val topicName = reader.readString() + val topicInfo = topics.find(topicName) + + topicInfo.removeListeners { it is ClientListener && it.tcpConnection === tcpConnection } + } + + "update" -> { + val topicName = reader.readString() + val topicInfo = topics.find(topicName) + + topicInfo.notify(reader.readString(), this) + } + + "command" -> { + val name = reader.readString() + val commandChannel = commandChannels.getServerChannel(name) + commandChannel.receiveCommand(reader.readString(), this) + } + + "commandReply" -> { + val name = reader.readString() + val commandChannel = commandChannels.getClientChannel(name) + commandChannel.receiveReply(reader.readString()) + } + + else -> { + throw IllegalArgumentException("huh? don't know what to do with $command") + } + } + } + + fun sendTopicUpdate(topicInfo: TopicInfo<*>, data: JsonElement) { + if (isConnected) { + if (verbose) debug("update ${topicInfo.name} ${topicInfo.stringify(data)}") + + val writer = ByteArrayWriter() + writer.writeString("update") + writer.writeString(topicInfo.name) + writer.writeString(topicInfo.stringify(data)) + sendMessage(writer.toBytes()) + } else { + debug("not connected, so no update $name $data") + } + } + + fun sendTopicSub(topicInfo: TopicInfo<*>) { + if (isConnected) { + debug("sub ${topicInfo.name}") + + val writer = ByteArrayWriter() + writer.writeString("sub") + writer.writeString(topicInfo.name) + sendMessage(writer.toBytes()) + } else { + debug("not connected, so no sub ${topicInfo.name}") + } + } + + fun sendTopicUnsub(topicInfo: TopicInfo<*>) { + if (isConnected) { + debug("unsub ${topicInfo.name}") + + val writer = ByteArrayWriter() + writer.writeString("unsub") + writer.writeString(topicInfo.name) + sendMessage(writer.toBytes()) + } else { + debug("not connected, so no unsub ${topicInfo.name}") + } + } + + fun sendCommand(commandPort: CommandPort, command: C) { + if (isConnected) { + if (verbose) debug("command ${commandPort.name} ${commandPort.toJson(command)}") + + val writer = ByteArrayWriter() + writer.writeString("command") + writer.writeString(commandPort.name) + writer.writeString(commandPort.toJson(command)) + sendMessage(writer.toBytes()) + } else { + debug("not connected, so no command ${commandPort.name}") + } + } + + fun sendReply(commandPort: CommandPort, reply: R) { + if (isConnected) { + if (verbose) debug("commandReply ${commandPort.name} ${commandPort.replyToJson(reply)}") + + val writer = ByteArrayWriter() + writer.writeString("commandReply") + writer.writeString(commandPort.name) + writer.writeString(commandPort.replyToJson(reply)) + sendMessage(writer.toBytes()) + } else { + debug("not connected, so no reply ${commandPort.name}") + } + } + + override fun reset(tcpConnection: Network.TcpConnection) { + logger.info { "PubSub client $name disconnected." } + isConnected = false + cleanups.invokeAll() + } + + private fun sendMessage(bytes: ByteArray) { + connection?.send(bytes) + } + + private fun debug(message: String) { + logger.info { "[$name${if (!isConnected) " (not connected)" else ""}]: $message" } + } + + override fun toString(): String = "Connection from $name" + } + + class ConnectionFromClient( + name: String, + topics: Topics, + commandChannels: CommandChannels + ) : Connection(name, topics, commandChannels) + + abstract class Endpoint { + protected fun buildTopicInfo(topic: Topic): TopicInfo { + return TopicInfo(topic) + } + } + + class Server(httpServer: Network.HttpServer, private val handlerContext: CoroutineContext) : Endpoint() { + private val publisher = Origin("Server-side publisher") + private val topics: Topics = Topics() + private val commandChannels = CommandChannels() + + init { + httpServer.listenWebSocket("/sm/ws") { incomingConnection -> + val name = "server ${incomingConnection.toAddress} to ${incomingConnection.fromAddress}" + ConnectionFromClient(name, topics, commandChannels) + } + } + + fun publish(topic: Topic, data: T, onUpdate: (T) -> Unit): Channel { + val topicName = topic.name + + @Suppress("UNCHECKED_CAST") + val topicInfo = topics.getOrPut(topicName) { TopicInfo(topic) } as TopicInfo + val listener = PublisherListener(topicInfo, publisher) { + CoroutineScope(handlerContext).launch { onUpdate(it) } + } + topicInfo.addListener(listener) + topicInfo.notify(data, publisher) + + return object : Channel { + override fun onChange(t: T) { + topicInfo.notify(t, publisher) + } + + override fun replaceOnUpdate(onUpdate: (T) -> Unit) { + listener.onUpdateFn = onUpdate + } + + override fun unsubscribe() { + // TODO("${CLASS_NAME}.unsubscribe not implemented") + } + } + } + + fun listenOnCommandChannel( + commandPort: CommandPort, + callback: suspend (command: C, reply: (R) -> Unit) -> Unit + ) { + val name = commandPort.name + if (commandChannels.hasServerChannel(name)) error("Command channel $name already exists.") + commandChannels.putServerChannel(name, ServerCommandChannel(commandPort) { command, reply -> + CoroutineScope(handlerContext).launch { + callback(command, reply) + } + }) + } + + fun state(topic: Topic, initialValue: T, callback: (T) -> Unit = {}): ReadWriteProperty { + return object : ReadWriteProperty { + private var value: T = initialValue + + private val channel = publish(topic, initialValue) { + value = it + callback(it) + } + + override fun getValue(thisRef: Any, property: KProperty<*>): T { + return value + } + + override fun setValue(thisRef: Any, property: KProperty<*>, value: T) { + this.value = value + channel.onChange(value) + } + } + } + + internal fun getTopicInfo(topicName: String) = topics[topicName] + + inner class PublisherListener( + private val topicInfo: TopicInfo, + origin: Origin, + var onUpdateFn: (T) -> Unit + ) : Listener(origin) { + override fun onUpdate(data: JsonElement) { + onUpdateFn(topicInfo.deserialize(data)) + } + } + + inner class ServerCommandChannel( + private val commandPort: CommandPort, + private val callback: (command: C, reply: (R) -> Unit) -> Unit + ) { + fun receiveCommand(commandJson: String, fromConnection: Connection) { + callback.invoke(commandPort.fromJson(commandJson)) { reply -> + fromConnection.sendReply(commandPort, reply) + } + } + } + } + + open class Client( + private val link: Network.Link, + private val serverAddress: Network.Address, + private val port: Int, + private val coroutineScope: CoroutineScope = GlobalScope + ) : Endpoint() { + @JsName("isConnected") + val isConnected: Boolean + get() = connectionToServer.isConnected + private val stateChangeListeners = mutableListOf<() -> Unit>() + + private val topics: Topics = Topics() + private val commandChannels = CommandChannels() + + private var connectionToServer: Connection = ConnectionToServer() + + inner class ConnectionToServer : Connection("Client-side connection from ${link.myAddress} to server at $serverAddress", topics, commandChannels) { + override fun connected(tcpConnection: Network.TcpConnection) { + super.connected(tcpConnection) + + // If any topics were subscribed to before this connection was established, send the sub command now. + topics.forEach { topicInfo -> sendTopicSub(topicInfo) } + + notifyChangeListeners() + } + + override fun reset(tcpConnection: Network.TcpConnection) { + super.reset(tcpConnection) + notifyChangeListeners() + + coroutineScope.launch { + delay(1000) + connectWebSocket() + } + } + } + + init { + connectWebSocket() + } + + private fun connectWebSocket() { + link.connectWebSocket(serverAddress, port, "/sm/ws", connectionToServer) + } + + @JsName("subscribe") + fun subscribe(topic: Topic, onUpdateFn: (T) -> Unit): Channel { + val subscriber = Origin("Client-side subscriber at ${link.myAddress}") + + val topicName = topic.name + + @Suppress("UNCHECKED_CAST") + val topicInfo = topics.getOrPut(topicName) { + buildTopicInfo(topic) + .apply { + addListener(object : Listener(connectionToServer) { + override fun onUpdate(data: JsonElement) = + connectionToServer.sendTopicUpdate(this@apply, data) + + override val isServerListener: Boolean get() = true + }) + } + .also { connectionToServer.sendTopicSub(it) } + } as TopicInfo + + val listener = object : Listener(subscriber) { + override fun onUpdate(data: JsonElement) = onUpdateFn(topicInfo.deserialize(data)) + } + topicInfo.addListener(listener) + + return object : Channel { + override fun onChange(t: T) { + topicInfo.notify(t, subscriber) + } + + override fun replaceOnUpdate(onUpdate: (T) -> Unit) { + TODO("Client.channel.replaceOnUpdate not implemented") + } + + override fun unsubscribe() { + topicInfo.removeListener(listener) + + if (topicInfo.noRemainingListeners()) { + connectionToServer.sendTopicUnsub(topicInfo) + } + } + } + } + + fun openCommandChannel( + commandPort: CommandPort, + replyCallback: (R) -> Unit + ): CommandChannel { + val name = commandPort.name + if (commandChannels.hasClientChannel(name)) error("Command channel $name already exists.") + return ClientCommandChannel(commandPort, replyCallback).also { + commandChannels.putClientChannel(name, it) + } + } + + fun commandSender( + commandPort: CommandPort, + replyCallback: (R) -> Unit + ): (command: C) -> Unit { + val commandChannel = openCommandChannel(commandPort, replyCallback) + return { command: C -> commandChannel.send(command) } + } + + fun state(topic: Topic, initialValue: T? = null, callback: (T) -> Unit = {}): ReadWriteProperty { + return object : ReadWriteProperty { + private var value: T? = initialValue + + private val channel = subscribe(topic) { + value = it + callback(it) + } + + override fun getValue(thisRef: Any, property: KProperty<*>): T? { + return value + } + + override fun setValue(thisRef: Any, property: KProperty<*>, value: T?) { + this.value = value + channel.onChange(value!!) + } + } + } + + @JsName("addStateChangeListener") + fun addStateChangeListener(callback: () -> Unit) { + stateChangeListeners.add(callback) + } + + @JsName("removeStateChangeListener") + fun removeStateChangeListener(callback: () -> Unit) { + stateChangeListeners.remove(callback) + } + + private fun notifyChangeListeners() { + stateChangeListeners.forEach { callback -> callback() } + } + + inner class ClientCommandChannel( + private val commandPort: CommandPort, + private val replyCallback: (R) -> Unit + ) : CommandChannel { + override fun send(command: C) { + connectionToServer.sendCommand(commandPort, command) + } + + fun receiveReply(replyJson: String) { + replyCallback.invoke(commandPort.replyFromJson(replyJson)) + } + } + } + + private class Cleanups { + private val cleanups = mutableListOf<() -> Unit>() + + @Synchronized + fun add(cleanup: () -> Unit) { cleanups.add(cleanup) } + + @Synchronized + fun invokeAll() { + cleanups.forEach { it.invoke() } + cleanups.clear() + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Shaders.kt b/src/commonMain/kotlin/baaahs/Shaders.kt new file mode 100644 index 0000000000..742913a3d8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/Shaders.kt @@ -0,0 +1,100 @@ +package baaahs + +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import baaahs.shaders.PixelBrainShader +import baaahs.shaders.SolidBrainShader + +enum class BrainShaderId(val reader: BrainShaderReader<*>) { + SOLID(SolidBrainShader), + PIXEL(PixelBrainShader); + + companion object { + val values = values() + fun get(i: Byte): BrainShaderId { + if (i > values.size || i < 0) { + throw Throwable("bad index for ShaderId: $i") + } + return values[i.toInt()] + } + } +} + +interface BrainShaderReader> { + fun parse(reader: ByteArrayReader): T +} + +abstract class BrainShader(val idBrain: BrainShaderId) { + abstract fun createRenderer(): Renderer + + abstract fun createBuffer(pixelCount: Int): B + + val descriptorBytes: ByteArray by lazy { toBytes() } + + fun serialize(writer: ByteArrayWriter) { + writer.writeByte(idBrain.ordinal.toByte()) + serializeConfig(writer) + } + + /** Override if your shader has static configuration that needs to be shared with the Renderer. */ + open fun serializeConfig(writer: ByteArrayWriter) { + } + + private fun toBytes(): ByteArray { + val writer = ByteArrayWriter() + serialize(writer) + return writer.toBytes() + } + + abstract fun readBuffer(reader: ByteArrayReader): B + + companion object { + fun parse(reader: ByteArrayReader): BrainShader<*> { + val shaderTypeI = reader.readByte() + val shaderType = BrainShaderId.get(shaderTypeI) + return shaderType.reader.parse(reader) + } + } + + interface Buffer { + val brainShader: BrainShader<*> + + fun serialize(writer: ByteArrayWriter) + + /** + * Read new data into an existing buffer, as efficiently as possible. + */ + fun read(reader: ByteArrayReader) + } + + interface Renderer { + fun beginFrame(buffer: B, pixelCount: Int) {} + fun draw(buffer: B, pixelIndex: Int): Color + fun endFrame() {} + fun release() {} + } +} + +interface Pixels : Iterable { + val size: Int + + val indices: IntRange + get() = IntRange(0, size - 1) + + operator fun get(i: Int): Color + operator fun set(i: Int, color: Color) + + fun set(colors: Array) + + fun finishedFrame() {} + + override fun iterator(): Iterator { + return object : Iterator { + private var i = 0 + + override fun hasNext(): Boolean = i < size + + override fun next(): Color = get(i++) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/SheepModel.kt b/src/commonMain/kotlin/baaahs/SheepModel.kt deleted file mode 100644 index 4f182f6449..0000000000 --- a/src/commonMain/kotlin/baaahs/SheepModel.kt +++ /dev/null @@ -1,71 +0,0 @@ -package baaahs - -class SheepModel { - lateinit var vertices: List - lateinit var panels: List - - fun load() { - val vertices: MutableList = mutableListOf() - val panels: MutableList = mutableListOf() - var currentPanel = Panel("initial") - - getResource("newsheep_processed.obj") - .split("\n") - .map { it.trim() } - .forEach { line -> - val parts = line.split(" ") - val args = parts.subList(1, parts.size) - - when (parts[0]) { - "v" -> { - if (args.size != 3) throw Exception("invalid vertex line: $line") - val coords = args.map { it.toFloat() } - vertices.add(Point(coords[0], coords[1], coords[2])) - } - "g" -> { - var name = args.joinToString(" ") - val match = Regex("^G_([^_]+).*?\$").matchEntire(name) - if (match != null) { - name = match.groups[1]!!.value - } - currentPanel = Panel(name) - panels.add(currentPanel) - } - "f" -> { - val verts = args.map { it.toInt() - 1 } - currentPanel.faces.faces.add(Face(verts)) - } - "l" -> { - val verts = args.map { it.toInt() - 1 } - val points = mutableListOf() - for (vi in verts) { - val v = vertices[vi] - points.add(v) - } - currentPanel.lines.add(Line(points)) - } - } - } - - println("Sheep model has ${panels.size} panels (and ${vertices.size} vertices)!") - this.vertices = vertices - this.panels = panels - } - - data class Point(val x: Float, val y: Float, val z: Float) - data class Line(val points: List) - - class Face(val vertexIds: List) - - class Faces { - val vertices: MutableList = mutableListOf() - val faces: MutableList = mutableListOf() - } - - class Panel(val name: String) { - val faces = Faces() - val lines = mutableListOf() - } - -} - diff --git a/src/commonMain/kotlin/baaahs/ShowEditorState.kt b/src/commonMain/kotlin/baaahs/ShowEditorState.kt new file mode 100644 index 0000000000..5a68f59666 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ShowEditorState.kt @@ -0,0 +1,34 @@ +package baaahs + +import baaahs.io.Fs +import baaahs.io.RemoteFsSerializer +import baaahs.plugin.Plugins +import baaahs.show.Show +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.nullable +import kotlinx.serialization.modules.SerializersModule + +@Serializable +data class ShowEditorState( + val show: Show, + val showState: ShowState, + val isUnsaved: Boolean, + val file: Fs.File? +) { + companion object { + fun createTopic(plugins: Plugins, fsSerializer: RemoteFsSerializer): PubSub.Topic { + return PubSub.Topic( + "showEditState", + serializer().nullable, + SerializersModule { + include(plugins.serialModule) + include(fsSerializer.serialModule) + } + ) + } + } +} + +fun Show.withState(showState: ShowState, isUnsaved: Boolean, file: Fs.File?): ShowEditorState { + return ShowEditorState(this, showState, isUnsaved, file) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/ShowPlayer.kt b/src/commonMain/kotlin/baaahs/ShowPlayer.kt new file mode 100644 index 0000000000..c3b27b0426 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ShowPlayer.kt @@ -0,0 +1,69 @@ +package baaahs + +import baaahs.gl.Toolchain +import baaahs.gl.data.Feed +import baaahs.gl.shader.OpenShader +import baaahs.gl.withCache +import baaahs.model.ModelInfo +import baaahs.show.DataSource +import baaahs.show.Shader +import baaahs.show.Show +import baaahs.show.live.OpenShow +import baaahs.show.live.ShowOpener + +interface ShowPlayer { + val toolchain: Toolchain + val modelInfo: ModelInfo + val dataSources: List + + fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource? = null) + fun useGadget(id: String): T = error("override me?") + fun useGadget(dataSource: DataSource): T? + + fun openFeed(id: String, dataSource: DataSource): Feed + fun useFeed(dataSource: DataSource): Feed + fun openShow(show: Show, showState: ShowState? = null): OpenShow = + ShowOpener(toolchain.withCache(show.title), show, this).openShow(showState) + + fun releaseUnused() +} + +abstract class BaseShowPlayer( + final override val toolchain: Toolchain, + final override val modelInfo: ModelInfo +) : ShowPlayer { + private val feeds = mutableMapOf() + private val shaders = mutableMapOf() + + override val dataSources: List get() = feeds.keys.toList() + private val dataSourceGadgets: MutableMap = mutableMapOf() + + override fun openFeed(id: String, dataSource: DataSource): Feed { + return feeds.getOrPut(dataSource) { + dataSource.createFeed(this, id) + } + } + + override fun useFeed(dataSource: DataSource): Feed { + return feeds[dataSource]!! + } + + override fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource?) { + controlledDataSource?.let { dataSourceGadgets[controlledDataSource] = gadget } + } + + override fun useGadget(dataSource: DataSource): T? { + @Suppress("UNCHECKED_CAST") + return dataSourceGadgets[dataSource] as? T + } + + override fun releaseUnused() { + ArrayList(feeds.entries).forEach { (dataSource, feed) -> + if (!feed.inUse()) feeds.remove(dataSource) + } + + ArrayList(shaders.entries).forEach { (shader, openShader) -> + if (!openShader.inUse()) shaders.remove(shader) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/ShowRunner.kt b/src/commonMain/kotlin/baaahs/ShowRunner.kt new file mode 100644 index 0000000000..c8fa913d4b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ShowRunner.kt @@ -0,0 +1,63 @@ +package baaahs + +import baaahs.fixtures.FixtureManager +import baaahs.gl.render.RenderManager +import baaahs.show.Show +import baaahs.show.live.OpenShow +import baaahs.util.Clock +import baaahs.util.Logger + +class ShowRunner( + val show: Show, + initialShowState: ShowState? = null, + private val openShow: OpenShow, + internal val clock: Clock, + private val renderManager: RenderManager, + private val fixtureManager: FixtureManager, + private val updateProblems: (List) -> Unit +) { + private var showState: ShowState = initialShowState ?: openShow.getShowState() + private var activePatchSetChanged: Boolean = true + + init { + logger.debug { "Running show ${openShow.title}" } + updateProblems(openShow.allProblems) + } + + fun getShowState(): ShowState { + return showState + } + + fun switchTo(newShowState: ShowState) { + this.showState = newShowState + activePatchSetChanged = true + } + + /** @return `true` if a frame was rendered and should be sent to fixtures. */ + fun renderNextFrame(): Boolean { + return if (fixtureManager.hasActiveRenderPlan()) { + renderManager.draw() + true + } else false + } + + fun onSelectedPatchesChanged() { + activePatchSetChanged = true + } + + fun housekeeping(): Boolean { + if (activePatchSetChanged) { + fixtureManager.activePatchSetChanged(openShow.activePatchSet()) + } + + return fixtureManager.maybeUpdateRenderPlans(openShow) + } + + fun release() { + openShow.release() + } + + companion object { + val logger = Logger("ShowRunner") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/ShowState.kt b/src/commonMain/kotlin/baaahs/ShowState.kt new file mode 100644 index 0000000000..07c3feb95d --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ShowState.kt @@ -0,0 +1,9 @@ +package baaahs + +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement + +@Serializable +data class ShowState( + val controls: Map> +) \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Shows.kt b/src/commonMain/kotlin/baaahs/Shows.kt deleted file mode 100644 index 3682b5a269..0000000000 --- a/src/commonMain/kotlin/baaahs/Shows.kt +++ /dev/null @@ -1,64 +0,0 @@ -package baaahs - -import kotlin.math.min -import kotlin.random.Random - -data class Color(val red: Int, val green: Int, val blue: Int) { - fun serialize(writer: ByteArrayWriter) { - writer.writeByte((red and 0xff).toByte()) - writer.writeByte((green and 0xff).toByte()) - writer.writeByte((blue and 0xff).toByte()) - } - - fun toInt(): Int = - (red shl 16 and 0xff0000) - .or(green shl 8 and 0xff00) - .or(blue and 0xff) - - fun toHexString() = - red.toHexString() + green.toHexString() + blue.toHexString() - - fun Int.toHexString(): String { - if (this < 0) { - throw Exception("can't toHexString() negative ints") - } - - if (this < 16) { - return "0" + toString(16) - } else { - return toString(16) - } - } - - fun withSaturation(saturation: Float): Color { - val desaturation = 1 - saturation - return Color( - min(255, red + ((255 - red) * desaturation).toInt()), - min(255, green + ((255 - green) * desaturation).toInt()), - min(255, blue + ((255 - blue) * desaturation).toInt()) - ) - } - - companion object { - val BLACK = Color(0, 0, 0) - val WHITE = Color(255, 255, 255) - val RED = Color(255, 0, 0) - val ORANGE = Color(255, 127, 0) - val YELLOW = Color(255, 255, 0) - val GREEN = Color(0, 255, 0) - val BLUE = Color(0, 0, 255) - val PURPLE = Color(255, 0, 255) - - fun random() = Color( - Random.nextInt() and 0xff, - Random.nextInt() and 0xff, - Random.nextInt() and 0xff - ) - - fun parse(reader: ByteArrayReader) = Color( - reader.readByte().toInt() and 0xff, - reader.readByte().toInt() and 0xff, - reader.readByte().toInt() and 0xff - ) - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/SoundAnalyzer.kt b/src/commonMain/kotlin/baaahs/SoundAnalyzer.kt new file mode 100644 index 0000000000..e43afe37d9 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/SoundAnalyzer.kt @@ -0,0 +1,14 @@ +package baaahs + +interface SoundAnalyzer { + val frequencies: FloatArray + + fun listen(analysisListener: AnalysisListener) + fun unlisten(analysisListener: AnalysisListener) + + interface AnalysisListener { + fun onSample(analysis: Analysis) + } + + class Analysis(val frequencies: FloatArray, val magnitudes: FloatArray) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/SparkleMotion.kt b/src/commonMain/kotlin/baaahs/SparkleMotion.kt new file mode 100644 index 0000000000..9867b3aaa8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/SparkleMotion.kt @@ -0,0 +1,9 @@ +package baaahs + +object SparkleMotion { + const val MAX_PIXEL_COUNT = 2048 + const val DEFAULT_PIXEL_COUNT = 1024 + const val PIXEL_COUNT_UNKNOWN = -1 + + const val EXTRA_ASSERTIONS = true +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/StageManager.kt b/src/commonMain/kotlin/baaahs/StageManager.kt new file mode 100644 index 0000000000..44b7d86b0c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/StageManager.kt @@ -0,0 +1,308 @@ +package baaahs + +import baaahs.app.ui.CommonIcons +import baaahs.fixtures.FixtureManager +import baaahs.fixtures.RenderPlan +import baaahs.gl.Toolchain +import baaahs.gl.render.RenderManager +import baaahs.io.Fs +import baaahs.io.FsServerSideSerializer +import baaahs.io.PubSubRemoteFsServerBackend +import baaahs.io.RemoteFsSerializer +import baaahs.mapper.Storage +import baaahs.model.ModelInfo +import baaahs.show.DataSource +import baaahs.show.Show +import baaahs.show.buildEmptyShow +import baaahs.ui.Icon +import baaahs.util.Clock +import com.soywiz.klock.DateTime +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import kotlinx.serialization.Serializable +import kotlinx.serialization.modules.SerializersModule +import kotlin.coroutines.CoroutineContext + +class StageManager( + toolchain: Toolchain, + private val renderManager: RenderManager, + private val pubSub: PubSub.Server, + private val storage: Storage, + private val fixtureManager: FixtureManager, + private val clock: Clock, + modelInfo: ModelInfo, + private val coroutineContext: CoroutineContext +) : BaseShowPlayer(toolchain, modelInfo) { + val facade = Facade() + private var showRunner: ShowRunner? = null + private val gadgets: MutableMap = mutableMapOf() + var lastUserInteraction = DateTime.now() + + private val fsSerializer = FsServerSideSerializer() + + init { + PubSubRemoteFsServerBackend(pubSub, fsSerializer) + } + + @Suppress("unused") + private val clientData = + pubSub.state(Topics.createClientData(fsSerializer), ClientData(storage.fs.rootFile)) + + private val showProblems = pubSub.publish(Topics.showProblems, emptyList()) {} + + private val showEditSession = ShowEditSession(fsSerializer) + private val showEditorStateChannel: PubSub.Channel = + pubSub.publish( + ShowEditorState.createTopic(toolchain.plugins, fsSerializer), + showEditSession.getShowEditState() + ) { incoming -> + val newShow = incoming?.show + val newShowState = incoming?.showState + val newIsUnsaved = incoming?.isUnsaved ?: false + switchTo( + newShow, newShowState, showEditSession.showFile, + newIsUnsaved, fromClientUpdate = true + ) + } + + private var gadgetsChangedJobEnqueued: Boolean = false + + override fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource?) { + val topic = + PubSub.Topic("/gadgets/$id", GadgetDataSerializer) + val channel = pubSub.publish(topic, gadget.state) { updated -> + CoroutineScope(coroutineContext).launch { + gadget.state.putAll(updated) + lastUserInteraction = DateTime.now() + + if (!gadgetsChangedJobEnqueued) { + onGadgetChange() + gadgetsChangedJobEnqueued = false + } + } + } + val gadgetChannelListener: (Gadget) -> Unit = { channel.onChange(it.state) } + gadget.listen(gadgetChannelListener) + gadgets[id] = GadgetInfo(gadget, controlledDataSource, topic, channel, gadgetChannelListener) + super.registerGadget(id, gadget, controlledDataSource) + } + + fun onGadgetChange() { + showRunner?.onSelectedPatchesChanged() + + // Start housekeeping early -- as soon as we see a change -- in hopes of avoiding jank. + if (showRunner?.housekeeping() == true) facade.notifyChanged() + } + + @Suppress("UNCHECKED_CAST") + override fun useGadget(id: String): T { + return (gadgets[id]?.gadget + ?: error("no such gadget \"$id\" among [${gadgets.keys.sorted()}]")) as T + } + + fun switchTo( + newShow: Show?, + newShowState: ShowState? = null, + file: Fs.File? = null, + isUnsaved: Boolean = file == null, + fromClientUpdate: Boolean = false + ) { + val newShowRunner = newShow?.let { + val openShow = openShow(newShow, newShowState) + ShowRunner(newShow, newShowState, openShow, clock, renderManager, fixtureManager) { problems -> + this.showProblems.onChange(problems) + } + } + + showRunner?.release() + releaseUnused() + + showRunner = newShowRunner + showEditSession.show = newShowRunner?.show + showEditSession.showFile = file + showEditSession.showIsUnsaved = isUnsaved + + updateRunningShowPath(file) + + notifyOfShowChanges(fromClientUpdate) + } + + private fun updateRunningShowPath(file: Fs.File?) { + GlobalScope.launch { + storage.updateConfig { + copy(runningShowPath = file?.fullPath) + } + } + } + + internal fun notifyOfShowChanges(fromClientUpdate: Boolean = false) { + if (!fromClientUpdate) { + showEditorStateChannel.onChange(showEditSession.getShowEditState()) + } + + facade.notifyChanged() + } + + fun renderAndSendNextFrame(dontProcrastinate: Boolean = true) { + showRunner?.let { showRunner -> + // Unless otherwise instructed, = generate and send the next frame right away, + // then perform any housekeeping tasks immediately afterward, to avoid frame lag. + if (dontProcrastinate) housekeeping() + + if (showRunner.renderNextFrame()) { + fixtureManager.sendFrame() + } + + if (!dontProcrastinate) housekeeping() + } + } + + private fun housekeeping() { + if (showRunner!!.housekeeping()) facade.notifyChanged() + } + + fun shutDown() { + showRunner?.release() + showEditorStateChannel.unsubscribe() + } + + inner class ShowEditSession(remoteFsSerializer: RemoteFsSerializer) { + var show: Show? = null + var showFile: Fs.File? = null + var showIsUnsaved: Boolean = false + + init { + val commands = Topics.Commands(SerializersModule { + include(remoteFsSerializer.serialModule) + include(toolchain.plugins.serialModule) + }) + pubSub.listenOnCommandChannel(commands.newShow) { command, _ -> handleNewShow(command) } + pubSub.listenOnCommandChannel(commands.switchToShow) { command, _ -> handleSwitchToShow(command.file) } + pubSub.listenOnCommandChannel(commands.saveShow) { command, _ -> handleSaveShow() } + pubSub.listenOnCommandChannel(commands.saveAsShow) { command, _ -> + val saveAsFile = storage.resolve(command.file.fullPath) + handleSaveAsShow(saveAsFile) + updateRunningShowPath(saveAsFile) + } + } + + private suspend fun handleNewShow(command: NewShowCommand) { + switchTo(command.template ?: buildEmptyShow()) + } + + private suspend fun handleSwitchToShow(file: Fs.File?) { + if (file != null) { + switchTo(storage.loadShow(file), file = file, isUnsaved = false) + } else { + switchTo(null, null, null) + } + } + + private suspend fun handleSaveShow() { + showFile?.let { showFile -> + show?.let { show -> saveShow(showFile, show) } + } + } + + private suspend fun handleSaveAsShow(showAsFile: Fs.File) { + show?.let { show -> saveShow(showAsFile, show) } + } + + private suspend fun saveShow(file: Fs.File, show: Show) { + storage.saveShow(file, show) + showFile = file + showIsUnsaved = false + notifyOfShowChanges() + } + + fun getShowEditState(): ShowEditorState? { + return showRunner?.let { showRunner -> + show?.withState(showRunner.getShowState(), showIsUnsaved, showFile) + } + } + } + + inner class Facade : baaahs.ui.Facade() { + val currentShow: Show? + get() = this@StageManager.showRunner?.show + + val currentRenderPlan: RenderPlan? + get() = this@StageManager.fixtureManager.currentRenderPlan + } +} + +interface RefCounted { + fun inUse(): Boolean + fun use() + fun release() + fun onFullRelease() +} + +class RefCounter : RefCounted { + var refCount: Int = 0 + + override fun inUse(): Boolean = refCount == 0 + + override fun use() { + refCount++ + } + + override fun release() { + refCount-- + + if (!inUse()) onFullRelease() + } + + override fun onFullRelease() { + } +} + +@Serializable +data class ClientData( + val fsRoot: Fs.File +) + +@Serializable +class NewShowCommand( + val template: Show? = null +) { + @Serializable + class Response +} + +@Serializable +class SwitchToShowCommand( + val file: Fs.File? +) { + @Serializable + class Response +} + +@Serializable +class SaveShowCommand { + @Serializable + class Response +} + +@Serializable +class SaveAsShowCommand(val file: Fs.File) { + @Serializable + class Response +} + +@Serializable +data class ShowProblem( + val title: String, + val message: String? = null, + val severity: Severity = Severity.ERROR, + val id: String = randomId("error") +) + +fun Collection.severity() = maxOfOrNull { it.severity } + +enum class Severity(val icon: Icon) { + INFO(CommonIcons.Info), + WARN(CommonIcons.Warning), + ERROR(CommonIcons.Error) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/Topics.kt b/src/commonMain/kotlin/baaahs/Topics.kt new file mode 100644 index 0000000000..074033738a --- /dev/null +++ b/src/commonMain/kotlin/baaahs/Topics.kt @@ -0,0 +1,44 @@ +package baaahs + +import baaahs.io.RemoteFsSerializer +import baaahs.model.MovingHead +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.MapSerializer +import kotlinx.serialization.builtins.nullable +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.modules.SerializersModule + +object Topics { + fun createClientData(fsSerializer: RemoteFsSerializer) = + PubSub.Topic("clientData", ClientData.serializer().nullable, fsSerializer.serialModule) + + val serverNotices = + PubSub.Topic("serverNotices", ListSerializer(Pinky.ServerNotice.serializer())) + + val pinkyState = + PubSub.Topic("pinkyState", PinkyState.serializer()) + + val showProblems = + PubSub.Topic("showProblems", ListSerializer(ShowProblem.serializer())) + + val movingHeadPresets = + PubSub.Topic( + "movingHeadPresets", + MapSerializer(String.serializer(), MovingHead.MovingHeadPosition.serializer()) + ) + + class Commands(serialModule: SerializersModule) { + val newShow = + PubSub.CommandPort("pinky/newShow", + NewShowCommand.serializer(), NewShowCommand.Response.serializer(), serialModule) + val switchToShow = + PubSub.CommandPort("pinky/switchToShow", + SwitchToShowCommand.serializer(), SwitchToShowCommand.Response.serializer(), serialModule) + val saveShow = + PubSub.CommandPort("pinky/saveShow", + SaveShowCommand.serializer(), SaveShowCommand.Response.serializer(), serialModule) + val saveAsShow = + PubSub.CommandPort("pinky/saveAsShow", + SaveAsShowCommand.serializer(), SaveAsShowCommand.Response.serializer(), serialModule) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/api/ws/WebSocketClient.kt b/src/commonMain/kotlin/baaahs/api/ws/WebSocketClient.kt new file mode 100644 index 0000000000..951a159354 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/api/ws/WebSocketClient.kt @@ -0,0 +1,105 @@ +package baaahs.api.ws + +import baaahs.imaging.Bitmap +import baaahs.mapper.MappingSession +import baaahs.mapper.Storage +import baaahs.net.Network +import baaahs.proto.Ports +import baaahs.util.Logger +import com.soywiz.klock.DateTime +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.MainScope +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.serialization.SerializationException +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.json.* + +class WebSocketClient(link: Network.Link, address: Network.Address) : Network.WebSocketListener, + CoroutineScope by MainScope() { + private lateinit var tcpConnection: Network.TcpConnection + private var connected = false + private lateinit var responses: Channel + + init { + link.connectWebSocket(address, Ports.PINKY_UI_TCP, "/ws/api", this) + } + + suspend fun listSessions(): List { + return WebSocketRouter.json.decodeFromJsonElement(ListSerializer(String.serializer()), sendCommand("listSessions")) + } + + suspend fun saveImage(sessionStartTime: DateTime, name: String, bitmap: Bitmap): String { + val filename = "${Storage.formatDateTime(sessionStartTime)}/$name.webp" + val dataUrl = bitmap.toDataUrl() + val startOfData = ";base64," + val i = dataUrl.indexOf(startOfData) + if (i == -1) { + throw IllegalArgumentException("failed to save image $dataUrl") + } + + sendCommand( + "saveImage", + JsonPrimitive(filename), + JsonPrimitive(dataUrl.substring(i + startOfData.length)) + ) + + return filename + } + + suspend fun saveSession(mappingSession: MappingSession) { + sendCommand("saveSession", + WebSocketRouter.json.encodeToJsonElement(MappingSession.serializer(), mappingSession) + ) + } + + private suspend fun sendCommand(command: String, vararg args: JsonElement): JsonElement { + val content = buildJsonArray { + add(command) + args.forEach { add(it) } + } + while (!connected) { + logger.warn { "Mapper not connected to Pinky…" } + delay(50) + } + tcpConnection.send(WebSocketRouter.json.encodeToString(JsonArray.serializer(), content).encodeToByteArray()) + + val responseJsonStr = responses.receive().decodeToString() + try { + val responseJson = WebSocketRouter.json.parseToJsonElement(responseJsonStr) + val status = responseJson.jsonObject.getValue("status").jsonPrimitive + val response = responseJson.jsonObject.getValue("response") + when (status.contentOrNull) { + "success" -> return response + "error" -> throw RuntimeException(response.jsonPrimitive.contentOrNull) + } + return responseJson + } catch (e: SerializationException) { + logger.error { "can't parse response to $command $args: $responseJsonStr" } + throw e + } + } + + override fun connected(tcpConnection: Network.TcpConnection) { + logger.info { "Mapper connected to Pinky!" } + this.tcpConnection = tcpConnection + responses = Channel(1) + connected = true + } + + override fun receive(tcpConnection: Network.TcpConnection, bytes: ByteArray) { + logger.debug { "Received ${bytes.decodeToString()}" } + launch { responses.send(bytes) } + } + + override fun reset(tcpConnection: Network.TcpConnection) { + if (::responses.isInitialized) responses.close() + logger.info { "Mapper disconnected from Pinky!" } + } + + companion object { + val logger = Logger("MapperClient") + } +} diff --git a/src/commonMain/kotlin/baaahs/api/ws/WebSocketRouter.kt b/src/commonMain/kotlin/baaahs/api/ws/WebSocketRouter.kt new file mode 100644 index 0000000000..33d834b380 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/api/ws/WebSocketRouter.kt @@ -0,0 +1,64 @@ +package baaahs.api.ws + +import baaahs.net.Network +import baaahs.util.Logger +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch +import kotlinx.serialization.json.* +import kotlin.coroutines.CoroutineContext + +class WebSocketRouter( + val coroutineContext: CoroutineContext, + handlers: HandlerBuilder.() -> Unit +) : Network.WebSocketListener { + private val handlerScope = CoroutineScope(coroutineContext) + + companion object { + val json = Json + val logger = Logger("WebSocketEndpoint") + } + + private val handlerMap = HandlerBuilder(json).apply { handlers() }.handlerMap.toMap() + + override fun connected(tcpConnection: Network.TcpConnection) { + logger.info { "Received connection from ${tcpConnection.fromAddress}" } + } + + override fun receive(tcpConnection: Network.TcpConnection, bytes: ByteArray) { + val args = json.parseToJsonElement(bytes.decodeToString()).jsonArray + val command = args.first().jsonPrimitive.contentOrNull + var status = "success" + var response: JsonElement + + handlerScope.launch { + try { + val handler = handlerMap[command] + ?: throw UnsupportedOperationException("unknown command \"$command\"") + + response = handler(args.toList()) + } catch (e: Exception) { + status = "error" + response = JsonPrimitive(e.toString()) + logger.error { "Command failed: $args" } + logger.error { e.toString() } + } + + logger.debug { "Command: $args -> $status $response" } + tcpConnection.send(json.encodeToString(JsonElement.serializer(), buildJsonObject { + put("status", status) + put("response", response) + }).encodeToByteArray()) + } + } + + override fun reset(tcpConnection: Network.TcpConnection) { + logger.info { "MapperEndpoint client disconnected from Pinky!" } + } + + class HandlerBuilder(val json: Json) { + val handlerMap = hashMapOf) -> JsonElement>() + fun handle(command: String, handler: suspend (List) -> JsonElement) { + handlerMap[command] = handler + } + } +} diff --git a/src/commonMain/kotlin/baaahs/app/ui/PlatformIcons.kt b/src/commonMain/kotlin/baaahs/app/ui/PlatformIcons.kt new file mode 100644 index 0000000000..255e65a96b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/app/ui/PlatformIcons.kt @@ -0,0 +1,37 @@ +package baaahs.app.ui + +import baaahs.ui.Icon + + +@Suppress("PropertyName") +interface PlatformIcons { + val Add: Icon + + val Fixture: Icon + val Patch: Icon + val DataSource: Icon + val ShaderChannel: Icon + val Settings: Icon + val None: Icon + + val ProjectionShader: Icon + val DistortionShader: Icon + val FilterShader: Icon + val PaintShader: Icon + val MoverShader: Icon + val UnknownShader: Icon + + val BeatLinkControl: Icon + val Button: Icon + val ButtonGroup: Icon + val ColorPalette: Icon + val Visualizer: Icon + + val Info: Icon + val Warning: Icon + val Error: Icon +} + +expect fun getCommonIcons(): PlatformIcons + +val CommonIcons = getCommonIcons() \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/app/ui/editor/Editable.kt b/src/commonMain/kotlin/baaahs/app/ui/editor/Editable.kt new file mode 100644 index 0000000000..32e6392e36 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/app/ui/editor/Editable.kt @@ -0,0 +1,117 @@ +package baaahs.app.ui + +import baaahs.Severity +import baaahs.app.ui.editor.EditableManager +import baaahs.show.ButtonControl +import baaahs.show.live.ControlDisplay +import baaahs.show.mutable.MutableButtonControl +import baaahs.show.mutable.MutableButtonGroupControl +import baaahs.show.mutable.MutableControl +import baaahs.show.mutable.MutableShow +import baaahs.ui.Icon +import baaahs.ui.Renderer + +interface Editable { + val title: String +} + +interface MutableEditable { + val title: String + fun getEditorPanels(editableManager: EditableManager): List +} + +interface EditIntent { + fun findMutableEditable(mutableShow: MutableShow): MutableEditable + + /** + * If a mutation might have changed how we should look up the editable, a new + * version of the same EditIntent can be provided here. This is called when pushing + * to the [EditableManager]'s [baaahs.util.UndoStack]. + */ + fun refreshEditIntent(): EditIntent = this + + /** + * If applying [EditableManager] changes performs an action like adding a new control, + * and further edits should modify that control but not add yet another one, a new + * EditIntent for subsequent edits can be provided here. + */ + fun nextEditIntent(): EditIntent = this +} + +class ShowEditIntent : EditIntent { + override fun findMutableEditable(mutableShow: MutableShow): MutableEditable = + mutableShow +} + +data class ControlEditIntent(internal val controlId: String) : EditIntent { + private lateinit var mutableEditable: MutableControl + + override fun findMutableEditable(mutableShow: MutableShow): MutableEditable { + mutableEditable = mutableShow.findControl(controlId) + return mutableEditable + } + + override fun refreshEditIntent(): EditIntent { + return copy(controlId = mutableEditable.asBuiltId!!) + } + + override fun nextEditIntent(): EditIntent { + return ControlEditIntent(mutableEditable.asBuiltId!!) + } +} + +abstract class AddToContainerEditIntent : EditIntent { + private lateinit var mutableEditable: T + + abstract fun createControl(mutableShow: MutableShow): T + + abstract fun addToContainer(mutableShow: MutableShow, mutableControl: T) + + override fun findMutableEditable(mutableShow: MutableShow): MutableEditable { + mutableEditable = createControl(mutableShow) + addToContainer(mutableShow, mutableEditable) + return mutableEditable + } + + override fun nextEditIntent(): EditIntent { + return ControlEditIntent(mutableEditable.asBuiltId!!) + } +} + +data class AddButtonToButtonGroupEditIntent( + private val containerId: String +) : AddToContainerEditIntent() { + override fun createControl(mutableShow: MutableShow): MutableButtonControl { + return MutableButtonControl(ButtonControl("New Button"), mutableShow) + } + + override fun addToContainer(mutableShow: MutableShow, mutableControl: MutableButtonControl) { + val container = mutableShow.findControl(containerId) as MutableButtonGroupControl + container.buttons.add(mutableControl) + } +} + +class AddControlToPanelBucket( + private val panelBucket: ControlDisplay.PanelBuckets.PanelBucket, + private val createControlFn: (mutableShow: MutableShow) -> MC +) : AddToContainerEditIntent() { + override fun createControl(mutableShow: MutableShow): MC { + return createControlFn(mutableShow) + } + + override fun addToContainer(mutableShow: MutableShow, mutableControl: MC) { + mutableShow.findPatchHolder(panelBucket.section.container) + .editControlLayout(panelBucket.panelTitle) + .add(mutableControl) + } +} + +interface EditorPanel { + val title: String + val listSubhead: String? + val icon: Icon? + val problemLevel: Severity? get() = null + + fun getNestedEditorPanels(): List = emptyList() + fun getRenderer(): Renderer +} diff --git a/src/commonMain/kotlin/baaahs/app/ui/editor/EditableManager.kt b/src/commonMain/kotlin/baaahs/app/ui/editor/EditableManager.kt new file mode 100644 index 0000000000..9a7cafdd5b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/app/ui/editor/EditableManager.kt @@ -0,0 +1,153 @@ +package baaahs.app.ui.editor + +import baaahs.app.ui.EditIntent +import baaahs.app.ui.EditorPanel +import baaahs.app.ui.MutableEditable +import baaahs.gl.Toolchain +import baaahs.show.Show +import baaahs.show.mutable.MutableShow +import baaahs.ui.Facade +import baaahs.util.Logger +import baaahs.util.UndoStack +import kotlin.math.max + +class EditableManager( + private val onApply: (Show) -> Unit +) : Facade() { + internal val undoStack = UndoStack() + private var appliedShow: Show? = null + internal var session: Session? = null + + fun isEditing(): Boolean = session != null + + fun isModified(): Boolean { + return session?.isChanged() ?: false + } + + val currentMutableShow: MutableShow + get() = session!!.mutableShow + + val uiTitle: String + get() = session?.uiTitle ?: "" + + val editorPanels: List + get() = session?.getEditorPanels() ?: emptyList() + + private fun flatEditorPanels(): List { + val list = arrayListOf() + fun add(editorPanel: EditorPanel) { + list.add(editorPanel) + editorPanel.getNestedEditorPanels().forEach { add(it) } + } + editorPanels.forEach { add(it) } + return list + } + + private var selectedPanelIndex: Int = 0 + + val selectedPanel: EditorPanel? + get() { + val flatList = flatEditorPanels() + if (selectedPanelIndex >= flatList.size) return flatList.lastOrNull() + return flatList[selectedPanelIndex] + } + + fun openEditor(baseShow: Show, editIntent: EditIntent, toolchain: Toolchain) { + if (isEditing()) error("already editing ${session!!.editIntent}") + + appliedShow = baseShow + session = Session(baseShow, editIntent, toolchain) + undoStack.reset(ShowAndEditIntent(baseShow, editIntent)) + selectedPanelIndex = 0 + notifyChanged() + } + + fun openPanel(editorPanel: EditorPanel) { + val index = flatEditorPanels().indexOf(editorPanel) + if (index == -1) { + logger.warn { "Unknown panel $editorPanel" } + } + selectedPanelIndex = max(0, index) + notifyChanged() + } + + /** [EditorPanel]s should call this when they've made a change to the [MutableEditable]. */ + fun onChange(pushToUndoStack: Boolean = true) { + session!!.onChange(pushToUndoStack) + notifyChanged() + } + + fun undo() = switchBaseShow(undoStack.undo()) + fun canUndo() = undoStack.canUndo() + + fun redo() = switchBaseShow(undoStack.redo()) + fun canRedo() = undoStack.canRedo() + + fun applyChanges() { + val session = session!! + val newShow = session.mutableShow.getShow() + val nextEditIntent = session.editIntent.nextEditIntent() + appliedShow = newShow + onApply(newShow) + switchBaseShow(ShowAndEditIntent(newShow, nextEditIntent)) + } + + private fun switchBaseShow(newShowAndEditIntent: ShowAndEditIntent) { + session = Session(newShowAndEditIntent.show, newShowAndEditIntent.editIntent, session!!.toolchain) + notifyChanged() + } + + fun close() { + undoStack.reset(null) + appliedShow = null + session = null + notifyChanged() + } + +// val handlePatchHolderApply = useCallback { +// patchHolderEditContext?.let { +// val mutableShow = it.mutableShow +// webClient.onShowEdit(mutableShow) +// } +// patchHolderEditContext = null +// } +// +// val handlePatchHolderClose = useCallback { +// patchHolderEditContext = null +// } + + internal inner class Session( + baseShow: Show, + val editIntent: EditIntent, + val toolchain: Toolchain + ) { + val mutableShow = MutableShow(baseShow) + val mutableEditable: MutableEditable = editIntent.findMutableEditable(mutableShow) + var cachedIsChanged: Boolean? = null + + val uiTitle: String + get() = "Editing ${mutableEditable.title}" + + fun getEditorPanels(): List = + mutableEditable.getEditorPanels(this@EditableManager) + + fun isChanged(): Boolean { + return cachedIsChanged + ?: mutableShow.isChanged(appliedShow!!).also { cachedIsChanged = it } + } + + fun onChange(pushToUndoStack: Boolean = true) { + cachedIsChanged = null + + if (pushToUndoStack) { + undoStack.changed(ShowAndEditIntent(mutableShow.getShow(), editIntent.refreshEditIntent())) + } + } + } + + internal class ShowAndEditIntent(val show: Show, val editIntent: EditIntent) + + companion object { + private val logger = Logger("EditableManager") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/app/ui/editor/EditorPanels.kt b/src/commonMain/kotlin/baaahs/app/ui/editor/EditorPanels.kt new file mode 100644 index 0000000000..146e0caf0d --- /dev/null +++ b/src/commonMain/kotlin/baaahs/app/ui/editor/EditorPanels.kt @@ -0,0 +1,157 @@ +package baaahs.app.ui.editor + +import baaahs.Severity +import baaahs.app.ui.CommonIcons +import baaahs.app.ui.EditorPanel +import baaahs.gl.openShader +import baaahs.severity +import baaahs.show.live.ShaderInstanceResolver +import baaahs.show.mutable.* +import baaahs.ui.Icon +import baaahs.ui.Renderer + +data class GenericPropertiesEditorPanel( + private val editableManager: EditableManager, + private val propsEditors: List +) : EditorPanel { + constructor( + editableManager: EditableManager, + vararg propsEditors: PropsEditor + ) : this(editableManager, propsEditors.toList()) + + override val title: String + get() = "Properties" + override val listSubhead: String? + get() = null + override val icon: Icon + get() = CommonIcons.Settings + + override fun getRenderer(): Renderer = + editorPanelViews.forGenericPropertiesPanel(editableManager, propsEditors) +} + +data class PatchHolderEditorPanel( + private val editableManager: EditableManager, + private val mutablePatchHolder: MutablePatchHolder +) : EditorPanel { + override val title: String + get() = "Patches" + override val listSubhead: String? + get() = null + override val icon: Icon + get() = CommonIcons.Patch + + override fun getNestedEditorPanels(): List { + return mutablePatchHolder.patches.map { mutablePatch -> mutablePatch.getEditorPanel(editableManager) } + } + + override fun getRenderer(): Renderer = + editorPanelViews.forPatchHolder(editableManager, mutablePatchHolder) +} + +data class PatchEditorPanel( + private val editableManager: EditableManager, + private val mutablePatch: MutablePatch +) : EditorPanel { + override val title: String + get() = mutablePatch.surfaces.name + override val listSubhead: String + get() = "Fixtures" + override val icon: Icon + get() = CommonIcons.Fixture + + override fun getNestedEditorPanels(): List { + return mutablePatch.mutableShaderInstances.map { mutableShaderInstance -> + mutableShaderInstance.getEditorPanel(this) + } + } + + override fun getRenderer(): Renderer = + editorPanelViews.forPatch(editableManager, mutablePatch) + + inner class ShaderInstanceEditorPanel( + private val mutableShaderInstance: MutableShaderInstance + ) : EditorPanel { + // TODO: This is a clunky way to get our cached toolchain... clean up somehow. + val toolchain = editableManager.session!!.toolchain + private val openShader = toolchain.openShader(mutableShaderInstance.mutableShader.build()) + private val liveShaderInstance = run { + val shaderInstance = mutableShaderInstance.build(ShowBuilder()) + ShaderInstanceResolver.build(openShader, shaderInstance, emptyMap()) + } + + override val title: String + get() = mutableShaderInstance.mutableShader.title + override val listSubhead: String + get() = "Shaders" + override val icon: Icon + get() = openShader.shaderType.icon + override val problemLevel: Severity? + by lazy { liveShaderInstance.problems.severity() } + + override fun getRenderer(): Renderer = + editorPanelViews.forShaderInstance(editableManager, mutablePatch, mutableShaderInstance) + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is ShaderInstanceEditorPanel) return false + + if (mutableShaderInstance != other.mutableShaderInstance) return false + + return true + } + + override fun hashCode(): Int { + return mutableShaderInstance.hashCode() + } + } +} + +interface PropsEditor { + fun getRenderer(editableManager: EditableManager): Renderer +} + +data class TitlePropsEditor(val mutablePatchHolder: MutablePatchHolder) : PropsEditor { + override fun getRenderer(editableManager: EditableManager): Renderer = + editorPanelViews.forTitleComponent(editableManager, mutablePatchHolder) +} + +data class ButtonPropsEditor( + val mutableButtonControl: MutableButtonControl +) : PropsEditor { + override fun getRenderer(editableManager: EditableManager): Renderer = + editorPanelViews.forButton(editableManager, mutableButtonControl) +} + +data class ButtonGroupPropsEditor( + val mutableButtonGroupControl: MutableButtonGroupControl +) : PropsEditor { + override fun getRenderer(editableManager: EditableManager): Renderer = + editorPanelViews.forButtonGroup(editableManager, mutableButtonGroupControl) +} + +data class VisualizerPropsEditor( + val mutableVisualizerControl: MutableVisualizerControl +) : PropsEditor { + override fun getRenderer(editableManager: EditableManager): Renderer = + editorPanelViews.forVisualizer(editableManager, mutableVisualizerControl) +} + +interface EditorPanelViews { + fun forGenericPropertiesPanel(editableManager: EditableManager, propsEditors: List): Renderer + fun forPatchHolder(editableManager: EditableManager, mutablePatchHolder: MutablePatchHolder): Renderer + fun forPatch(editableManager: EditableManager, mutablePatch: MutablePatch): Renderer + fun forShaderInstance( + editableManager: EditableManager, + mutablePatch: MutablePatch, + mutableShaderInstance: MutableShaderInstance + ): Renderer + fun forButton(editableManager: EditableManager, mutableButtonControl: MutableButtonControl): Renderer + fun forButtonGroup(editableManager: EditableManager, mutableButtonGroupControl: MutableButtonGroupControl): Renderer + fun forVisualizer(editableManager: EditableManager, mutableVisualizerControl: MutableVisualizerControl): Renderer + + fun forTitleComponent(editableManager: EditableManager, mutablePatchHolder: MutablePatchHolder): Renderer +} + +val editorPanelViews by lazy { getEditorPanelViews() } +expect fun getEditorPanelViews(): EditorPanelViews \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/app/ui/editor/LinkOption.kt b/src/commonMain/kotlin/baaahs/app/ui/editor/LinkOption.kt new file mode 100644 index 0000000000..80d304f231 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/app/ui/editor/LinkOption.kt @@ -0,0 +1,78 @@ +package baaahs.app.ui.editor + +import baaahs.app.ui.CommonIcons +import baaahs.show.mutable.MutablePort +import baaahs.ui.Icon + +interface LinkOption { + val title: String + val icon: Icon + val groupName: String? + + fun getMutablePort(): MutablePort? + fun matches(otherPort: MutablePort?): Boolean = otherPort == getMutablePort() +} + +class PortLinkOption( + private val mutablePort: MutablePort, + val isPluginRef: Boolean = false, + val wasPurposeBuilt: Boolean = false, + val isShaderChannel: Boolean = false, + val isLocalShaderOut: Boolean = false, + val isPluginSuggestion: Boolean = false, + val isExactContentType: Boolean = false, + val isDefaultBinding: Boolean = false, + val createsFilter: Boolean = false +): LinkOption { + override val title get() = mutablePort.title + override val icon get() = mutablePort.icon + override val groupName get() = mutablePort.groupName + + override fun getMutablePort(): MutablePort = mutablePort + + val priority: Int get() = + pack( + isPluginRef, + createsFilter && isExactContentType, + wasPurposeBuilt && isExactContentType, + isShaderChannel, + isLocalShaderOut, + isPluginSuggestion, + isExactContentType, + wasPurposeBuilt, + createsFilter, + isDefaultBinding + ) + + private fun pack(vararg bits: Boolean): Int { + var int = 0 + bits.forEach { bool -> + int = int shl 1 + if (bool) int = int or 1 + } + return int + } + + override fun toString(): String { + return "PortLinkOption(mutablePort=${mutablePort.groupName} ${mutablePort.title} priority=$priority)" + } +} + + +object NoSourcePortOption : LinkOption { + override val title: String get() = "Nothing" + override fun getMutablePort(): MutablePort = error("not implemented") + override val groupName: String? get() = null + override val icon: Icon get() = CommonIcons.None + override fun matches(otherPort: MutablePort?): Boolean = otherPort == null +// override fun isAppropriateFor(inputPort: InputPort): Boolean = true +} + +object NewSourcePortOption : LinkOption { + override val title: String get() = "Create New…" + override fun getMutablePort(): MutablePort = error("not implemented") + override val groupName: String? get() = null + override val icon: Icon get() = CommonIcons.Add + override fun matches(otherPort: MutablePort?): Boolean = false +// override fun isAppropriateFor(inputPort: InputPort): Boolean = true +} diff --git a/src/commonMain/kotlin/baaahs/client/ClientShowPlayer.kt b/src/commonMain/kotlin/baaahs/client/ClientShowPlayer.kt new file mode 100644 index 0000000000..4118ba0f80 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/client/ClientShowPlayer.kt @@ -0,0 +1,53 @@ +package baaahs.client + +import baaahs.* +import baaahs.gl.Toolchain +import baaahs.model.ModelInfo +import baaahs.show.DataSource +import kotlinx.serialization.json.JsonElement + +class ClientShowPlayer( + toolchain: Toolchain, + private val pubSub: PubSub.Client, + modelInfo: ModelInfo +) : BaseShowPlayer(toolchain, modelInfo) { + private val gadgets: MutableMap = mutableMapOf() + + override fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource?) { + gadgets[id] = ClientGadget(id, pubSub, gadget) + super.registerGadget(id, gadget, controlledDataSource) + } + + override fun useGadget(id: String): T { + @Suppress("UNCHECKED_CAST") + return gadgets.getBang(id, "gadget").gadget as T + } + + private class ClientGadget( + id: String, + pubSub: PubSub.Client, + val gadget: Gadget + ) { + private val channel: PubSub.Channel> + + init { + val gadgetListener = this::onGadgetChange + gadget.listen(gadgetListener) + + val topic = + PubSub.Topic("/gadgets/$id", GadgetDataSerializer) + + channel = pubSub.subscribe(topic) { json -> + gadget.withoutTriggering(gadgetListener) { + gadget.state.putAll(json) + gadget.changed() + } + } + } + + // GadgetListener callback. + fun onGadgetChange(g: Gadget) { + channel.onChange(g.state) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/dmx/Dmx.kt b/src/commonMain/kotlin/baaahs/dmx/Dmx.kt new file mode 100644 index 0000000000..750424b130 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/dmx/Dmx.kt @@ -0,0 +1,39 @@ +package baaahs.dmx + +interface Dmx { + abstract class Universe { + abstract fun writer(baseChannel: Int, channelCount: Int): Buffer + abstract fun sendFrame() + abstract fun allOff() + } + + class Buffer( + private val channels: ByteArray, + private val baseChannel: Int, + private val channelCount: Int + ) { + operator fun get(channel: Channel): Byte = get(channel.offset) + + operator fun get(index: Int): Byte { + boundsCheck(index) + return channels[baseChannel + index] + } + + operator fun set(channel: Channel, value: Byte) = set(channel.offset, value) + + operator fun set(index: Int, value: Byte) { + boundsCheck(index) + channels[baseChannel + index] = value + } + + private fun boundsCheck(index: Int) { + if (index < 0 || index >= channelCount) { + throw Exception("index out of bounds: $index >= $channelCount") + } + } + } + + interface Channel { + val offset: Int + } +} diff --git a/src/commonMain/kotlin/baaahs/dmx/LixadaMiniMovingHead.kt b/src/commonMain/kotlin/baaahs/dmx/LixadaMiniMovingHead.kt new file mode 100644 index 0000000000..c9d5982e3c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/dmx/LixadaMiniMovingHead.kt @@ -0,0 +1,75 @@ +package baaahs.dmx + +import baaahs.Color +import baaahs.geom.Vector3F +import baaahs.model.MovingHead +import baaahs.toRadians + +class LixadaMiniMovingHead( + name: String, + description: String, + baseDmxChannel: Int, + origin: Vector3F, + heading: Vector3F +) : MovingHead(name, description, baseDmxChannel, origin, heading) { + override val dmxChannelCount: Int get() = 9 // TODO: ? + + override val colorModel: ColorModel get() = ColorModel.RGBW + override val colorWheelColors: List get() = emptyList() + override val colorWheelMotorSpeed: Float = 1f + + override val dimmerChannel: Dmx.Channel get() = Channel.DIMMER + override val shutterChannel: Dmx.Channel get() = TODO("not implemented") + + override val panChannel get() = Channel.PAN + override val panFineChannel: Dmx.Channel? get() = null /*Channel.PAN_FINE*/ + override val panRange: ClosedRange = toRadians(0f)..toRadians(540f) + override val panMotorSpeed: Float = 1.5f + + override val tiltChannel: Dmx.Channel get() = Channel.TILT + override val tiltFineChannel: Dmx.Channel? get() = null /*Channel.TILT_FINE*/ + override val tiltRange: ClosedRange = toRadians(-110f)..toRadians(110f) + override val tiltMotorSpeed: Float = 1f + + override fun newBuffer(dmxBuffer: Dmx.Buffer) = Buffer(dmxBuffer) + + enum class Channel: Dmx.Channel { + PAN, +// PAN_FINE, + TILT, +// TILT_FINE, + DIMMER, + RED, + GREEN, + BLUE, + WHITE, + PAN_TILT_SPEED, +// COLOR_11, +// COLOR_12, +// COLOR_CONTROL, + COLOR_RESET; + + override val offset = ordinal + } + + inner class Buffer(override val dmxBuffer: Dmx.Buffer) : BaseBuffer(this) { + init { + dimmer = 134 * 256 / 65535f + dmxBuffer[Channel.WHITE] = 255.toByte() + dmxBuffer[Channel.RED] = 255.toByte() + dmxBuffer[Channel.GREEN] = 255.toByte() + dmxBuffer[Channel.BLUE] = 255.toByte() + } + + var color: Color + get() = Color(dmxBuffer[Channel.RED], dmxBuffer[Channel.GREEN], dmxBuffer[Channel.BLUE]) + set(value) { + dmxBuffer[Channel.RED] = value.redI.toByte() + dmxBuffer[Channel.GREEN] = value.greenI.toByte() + dmxBuffer[Channel.BLUE] = value.blueI.toByte() + } + + override var colorWheelPosition: Float get() = error("not supported") + set(_) = TODO("not implemented") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/dmx/Shenzarpy.kt b/src/commonMain/kotlin/baaahs/dmx/Shenzarpy.kt new file mode 100644 index 0000000000..bcba2443b7 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/dmx/Shenzarpy.kt @@ -0,0 +1,107 @@ +package baaahs.dmx + +import baaahs.Color +import baaahs.geom.Vector3F +import baaahs.model.MovingHead +import baaahs.toRadians + +class Shenzarpy( + name: String, + description: String, + baseDmxChannel: Int, + origin: Vector3F, + heading: Vector3F +) : MovingHead(name, description, baseDmxChannel, origin, heading) { + override val dmxChannelCount: Int get() = 16 + + override val colorModel: ColorModel get() = ColorModel.ColorWheel + override val colorWheelColors: List = WheelColor.values.toList() + override val colorWheelMotorSpeed: Float = .3f + private val colorWheelChannel: Dmx.Channel get() = Channel.COLOR_WHEEL + + override val dimmerChannel: Dmx.Channel get() = Channel.DIMMER + override val shutterChannel: Dmx.Channel get() = Channel.SHUTTER + + override val panChannel get() = Channel.PAN + override val panFineChannel: Dmx.Channel get() = Channel.PAN_FINE + override val panRange: ClosedRange = + toRadians(0f)..toRadians(540f) + override val panMotorSpeed: Float = 2.54f + + override val tiltChannel: Dmx.Channel get() = Channel.TILT + override val tiltFineChannel: Dmx.Channel get() = Channel.TILT_FINE + override val tiltRange: ClosedRange = + toRadians(-126f)..toRadians(126f) + override val tiltMotorSpeed: Float = 1.3f + + override fun newBuffer(dmxBuffer: Dmx.Buffer) = Buffer(dmxBuffer) + + inner class Buffer(override val dmxBuffer: Dmx.Buffer) : MovingHead.BaseBuffer(this@Shenzarpy) { + override var colorWheelPosition: Float + get() = colorWheel.toInt() / 128f + set(value) { colorWheel = (value * 128f).toInt().toByte() } + + var colorWheel: Byte + get() = dmxBuffer[colorWheelChannel] + set(value) { dmxBuffer[colorWheelChannel] = value } + + init { + dimmer = 1f + shutter = 255 + } + } + + enum class WheelColor(val color: Color) { + RED(Color.from(0xc21e22)), + ORANGE(Color.from(0xeb8236)), + AQUAMARINE(Color.from(0x7cbc84)), + DEEP_GREEN(Color.from(0x12812f)), + LIGHT_GREEN(Color.from(0x9fc13f)), + LAVENDER(Color.from(0x8f74ab)), + PINK(Color.from(0xeb8182)), + YELLOW(Color.from(0xfeeb34)), + MAGENTA(Color.from(0xe11382)), + CYAN(Color.from(0x1ba7e8)), + CTO2(Color.from(0xf4c651)), + CTO1(Color.from(0xf4d88a)), + CTB(Color.from(0x97c7b8)), + DARK_BLUE(Color.from(0x085197)), + WHITE(Color.from(0xffffff)); + + companion object { + val values = values() + fun get(i: Byte) = values[i.toInt()] + } + } + + enum class Channel : Dmx.Channel { + COLOR_WHEEL, + SHUTTER, + DIMMER, + GOBO_WHEEL, + PRISM, + PRISM_ROTATION, + MACRO, + FROST, + FOCUS, + PAN, + PAN_FINE, + TILT, + TILT_FINE, + PAN_TILT_SPEED, + RESET, + LAMP_CONTROL, + BLANK, + COLOR_WHEEL_SPEED, + DIM_PRISM_ATOM_SPEED, + GOBO_WHEEL_SPEED; + + + companion object { + val values = values() + fun get(i: Byte) = values[i.toInt()] + } + + override val offset = ordinal + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/fixtures/DeviceType.kt b/src/commonMain/kotlin/baaahs/fixtures/DeviceType.kt new file mode 100644 index 0000000000..2be1e8f0f3 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/DeviceType.kt @@ -0,0 +1,232 @@ +package baaahs.fixtures + +import baaahs.getBang +import baaahs.gl.GlContext +import baaahs.gl.data.ProgramFeed +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.ContentType +import baaahs.gl.render.FixtureRenderTarget +import baaahs.glsl.Uniform +import baaahs.show.DataSourceBuilder +import baaahs.show.Shader +import com.danielgergely.kgl.* +import kotlinx.serialization.KSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlin.math.min + +interface DeviceType { + val id: String + val title: String + val dataSourceBuilders: List> + val resultParams: List + val resultContentType: ContentType + val likelyPipelines: List> + val errorIndicatorShader: Shader + + class Serializer(private val knownDeviceTypes: Map) : KSerializer { + override val descriptor: SerialDescriptor + get() = String.serializer().descriptor + + override fun serialize(encoder: Encoder, value: DeviceType) { + encoder.encodeString(value.id) + } + + override fun deserialize(decoder: Decoder): DeviceType { + return knownDeviceTypes.getBang(decoder.decodeString(), "device type") + } + } +} + +interface ParamBuffer { + fun resizeBuffer(width: Int, height: Int) + fun uploadToTexture() + fun setTexture(uniform: Uniform) + fun bind(glslProgram: GlslProgram): ProgramFeed + fun release() +} + +class FloatsParamBuffer(val id: String, val stride: Int, private val gl: GlContext) : ParamBuffer { + private val textureUnit = gl.getTextureUnit(this) + private val texture = gl.check { createTexture() } + private var floats = FloatArray(0) + private var width = 0 + private var height = 0 + + override fun resizeBuffer(width: Int, height: Int) { + val size = width * height + + val newFloats = FloatArray(size * stride) + floats.copyInto(newFloats, 0, 0, min(floats.size, size * stride)) + floats = newFloats + + this.width = width + this.height = height + } + + override fun uploadToTexture() { + with(textureUnit) { + bindTexture(texture) + configure(GL_NEAREST, GL_NEAREST) + + val format = when(stride) { + 1 -> GL_RED + 2 -> GL_RG + 3 -> GL_RGB + 4 -> GL_RGBA + else -> error("Stride currently has to be between 1 and 4.") + } + + uploadTexture( + 0, + GlContext.GL_RGB32F, width, height, 0, + format, + GL_FLOAT, FloatBuffer(floats) + ) + } + } + + override fun setTexture(uniform: Uniform) { + uniform.set(textureUnit) + } + + override fun bind(glslProgram: GlslProgram): ProgramFeed { + val uniform = glslProgram.getUniform(id) + + return object : ProgramFeed { + override val isValid get() = uniform != null + + override fun setOnProgram() { + if (uniform != null) { + textureUnit.bindTexture(texture) + uniform.set(textureUnit) + } + } + } + } + + fun scoped( + renderTarget: FixtureRenderTarget, + callback: ((Int) -> Float)? = null + ) = object : BufferView { + val offset = renderTarget.pixel0Index + val size = renderTarget.pixelCount + + override fun set(pixelIndex: Int, t: Float) = set(pixelIndex, 0, t) + + override fun set(pixelIndex: Int, index: Int, t: Float) { + if (pixelIndex > size) throw IndexOutOfBoundsException("$pixelIndex > $size") + floats[(offset + pixelIndex) * stride + index] = t + } + + override fun get(pixelIndex: Int): Float = get(pixelIndex, 0) + + override fun get(pixelIndex: Int, index: Int): Float { + if (pixelIndex > size) throw IndexOutOfBoundsException("$pixelIndex > $size") + return floats[(offset + pixelIndex) * stride] + } + }.also { + if (callback != null) { + val offset = renderTarget.pixel0Index + for (pixelIndex in 0 until renderTarget.pixelCount) { + floats[(offset + pixelIndex) * stride] = callback.invoke(pixelIndex) + } + } + } + + override fun release() { + gl.check { deleteTexture(texture) } + textureUnit.release() + } +} + +interface BufferView { + operator fun set(pixelIndex: Int, t: T) + operator fun set(pixelIndex: Int, index: Int, t: T) + operator fun get(pixelIndex: Int): T + operator fun get(pixelIndex: Int, index: Int): T +} + +interface Param { + val id: String + val title: String + fun allocate(gl: GlContext, index: Int): ParamBuffer +} + +class FloatsPixelParam( + override val id: String, + override val title: String, + val stride: Int +) : Param { + override fun allocate(gl: GlContext, index: Int): ParamBuffer { + return FloatsParamBuffer(id, stride, gl) + } +} + +class ResultParam(val title: String, val type: ResultType) { + fun allocate(gl: GlContext, index: Int): ResultBuffer { + return type.createParamBuffer(gl, index) + } +} + +abstract class ResultBuffer( + gl: GlContext, + private val paramIndex: Int, + val type: ResultType +) { + var pixelCount: Int = 0 + private set + + private var curWidth = 0 + private var curHeight = 0 + private var cpuBufferSize = 0 + + private val gpuBuffer = gl.createRenderBuffer() + abstract val cpuBuffer: Buffer + + // Storage smaller than 16x1 causes a GL error. + init { + resize(16, 1) + } + + fun resize(width: Int, height: Int) { + gpuBuffer.storage(type.renderPixelFormat, width, height) + curWidth = width + curHeight = height + + val bufferSize = width * height + pixelCount = bufferSize + if (cpuBufferSize != bufferSize) { + resizeBuffer(bufferSize) + cpuBufferSize = bufferSize + } + } + + abstract fun resizeBuffer(size: Int) + + fun attachTo(fb: GlContext.FrameBuffer) { + fb.attach(gpuBuffer, GL_COLOR_ATTACHMENT0 + paramIndex) + } + + fun afterFrame(frameBuffer: GlContext.FrameBuffer) { + frameBuffer.withRenderBufferAsAttachment0(gpuBuffer) { + gpuBuffer.readPixels( + 0, 0, gpuBuffer.curWidth, gpuBuffer.curHeight, + type.readPixelFormat, type.readType, cpuBuffer + ) + } + } + + abstract fun getView(pixelOffset: Int, pixelCount: Int): ResultView + + fun release() { + gpuBuffer.release() + } +} + +abstract class ResultView( + val pixelOffset: Int, + val pixelCount: Int +) \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/fixtures/Fixture.kt b/src/commonMain/kotlin/baaahs/fixtures/Fixture.kt new file mode 100644 index 0000000000..9731167612 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/Fixture.kt @@ -0,0 +1,24 @@ +package baaahs.fixtures + +import baaahs.geom.Vector3F +import baaahs.model.Model + +/** + * Represents a controllable lighting fixture. + * + * May or may not be associated with a [Model.Entity]. + */ +class Fixture( + val modelEntity: Model.Entity?, + val pixelCount: Int, + /** Each pixel's location in the global 3d model. */ + val pixelLocations: List, + val deviceType: DeviceType, + val name: String = modelEntity?.name ?: "Anonymous fixture", + val transport: Transport +) { + val title: String get() = + "$name: ${deviceType.title} with $pixelCount pixels at ${transport.name}" + + override fun toString() = "Fixture[${hashCode()} $title]" +} diff --git a/src/commonMain/kotlin/baaahs/fixtures/FixtureManager.kt b/src/commonMain/kotlin/baaahs/fixtures/FixtureManager.kt new file mode 100644 index 0000000000..6ed7630f6f --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/FixtureManager.kt @@ -0,0 +1,154 @@ +package baaahs.fixtures + +import baaahs.getBang +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.PatchResolver +import baaahs.gl.render.FixtureRenderTarget +import baaahs.gl.render.RenderManager +import baaahs.gl.render.RenderTarget +import baaahs.show.live.ActivePatchSet +import baaahs.show.live.OpenShow +import baaahs.timeSync +import baaahs.util.Logger + +class FixtureManager( + private val renderManager: RenderManager, + private val renderTargets: MutableMap = hashMapOf() +) { + private val frameListeners: MutableList<() -> Unit> = arrayListOf() + private val changedFixtures = mutableListOf() + private var totalFixtures = 0 + + private var currentActivePatchSet: ActivePatchSet = ActivePatchSet(emptyList()) + private var activePatchSetChanged = false + internal var currentRenderPlan: RenderPlan? = null + + fun addFrameListener(callback: () -> Unit) { + frameListeners.add(callback) + } + + fun getRenderTargets_ForTestOnly(): Map { + return renderTargets + } + + fun fixturesChanged(addedFixtures: Collection, removedFixtures: Collection) { + changedFixtures.add(FixturesChanges(addedFixtures.toList(), removedFixtures.toList())) + } + + private fun incorporateFixtureChanges(): Boolean { + var anyChanges = false + + for ((added, removed) in changedFixtures) { + logger.info { "fixtures changed! ${added.size} added, ${removed.size} removed" } + for (fixture in removed) removeFixture(fixture) + for (fixture in added) addFixture(fixture) + anyChanges = true + } + changedFixtures.clear() + return anyChanges + } + + private fun clearRenderTargets() { + renderTargets.values.forEach { it.release() } + } + + fun getFixtureCount(): Int { + return renderTargets.size + } + + fun sendFrame() { + renderTargets.values.forEach { renderTarget -> + // TODO(tom): The send might return an error, at which point this fixture should be nuked + // from the list of fixtures. I'm not quite sure the best way to do that so I'm leaving this note. + renderTarget.sendFrame() + } + frameListeners.forEach { it.invoke() } + } + + private fun addFixture(fixture: Fixture) { + renderTargets.getOrPut(fixture) { + logger.debug { "Adding fixture ${fixture.title}" } + renderManager.addFixture(fixture) + .also { totalFixtures++ } + } + } + + private fun removeFixture(fixture: Fixture) { + renderTargets.remove(fixture)?.let { renderTarget -> + logger.debug { "Removing fixture ${fixture.title}" } + renderManager.removeRenderTarget(renderTarget) + renderTarget.release() + totalFixtures-- + } ?: throw IllegalStateException("huh? can't remove unknown fixture $fixture") + } + + fun activePatchSetChanged(activePatchSet: ActivePatchSet) { + if (activePatchSet != currentActivePatchSet) { + currentActivePatchSet = activePatchSet + activePatchSetChanged = true + } + } + + fun maybeUpdateRenderPlans(openShow: OpenShow): Boolean { + var remapFixtures = incorporateFixtureChanges() + + // Maybe build new shaders. + // TODO: In the remapFixtures case, this would benefit from reusing cached artifacts. + if (this.activePatchSetChanged || remapFixtures) { + val activePatchSet = currentActivePatchSet + + val elapsedMs = timeSync { + val patchResolution = PatchResolver( + renderTargets.values, activePatchSet, renderManager + ) + currentRenderPlan = patchResolution.createRenderPlan(openShow.allDataSources) { _, dataSource -> + openShow.feeds.getBang(dataSource, "data feed") + } + } + + logger.info { + "New render plan created: ${currentRenderPlan?.describe() ?: "none!"}; took ${elapsedMs}ms" + } + + remapFixtures = true + this.activePatchSetChanged = false + } + + if (remapFixtures) { + clearRenderTargets() + + currentRenderPlan?.let { renderPlan -> + renderManager.setRenderPlan(renderPlan) + } + } + + return remapFixtures + } + + fun hasActiveRenderPlan(): Boolean { + return currentRenderPlan != null + } + + data class FixturesChanges(val added: Collection, val removed: Collection) + + companion object { + private val logger = Logger() + } +} + +class RenderPlan( + val deviceTypes: Map +) : Map by deviceTypes { + fun describe() = "${deviceTypes.size} devices, " + + "${deviceTypes.values.map { it.programs.count() }.sum()} programs, " + + "${deviceTypes.values.map { it.programs.map { it.renderTargets.count() }.sum() }.sum()} fixtures" +} + +class DeviceTypeRenderPlan( + val programs: List, +) : Iterable by programs + +class ProgramRenderPlan( + val program: GlslProgram?, + val renderTargets: List +) \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/fixtures/MovingHeadDevice.kt b/src/commonMain/kotlin/baaahs/fixtures/MovingHeadDevice.kt new file mode 100644 index 0000000000..9b3911dcc5 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/MovingHeadDevice.kt @@ -0,0 +1,46 @@ +package baaahs.fixtures + +import baaahs.gl.patch.ContentType +import baaahs.plugin.core.FixtureInfoDataSource +import baaahs.plugin.core.MovingHeadParams +import baaahs.show.DataSourceBuilder +import baaahs.show.Shader + +object MovingHeadDevice : DeviceType { + override val id: String get() = "MovingHead" + override val title: String get() = "Moving Head" + + override val dataSourceBuilders: List> + get() = listOf(FixtureInfoDataSource) + + override val resultParams: List + get() = listOf( + ResultParam("Moving Head Params", MovingHeadParams.resultType) + ) + override val resultContentType: ContentType + get() = MovingHeadParams.contentType + + override val likelyPipelines: List> + get() = with(ContentType) { + listOf(XyzCoordinate to MovingHeadParams.contentType) + } + + override val errorIndicatorShader: Shader + get() = Shader( + "Ω Guru Meditation Error Ω", + /**language=glsl*/ + """ + uniform float time; + void main() { + gl_FragColor = (mod(time, 2.) < 1.) + ? vec4(.45, .45, 0., 0.) + : vec4(.55, .55, 0., 0.); + } + """.trimIndent() + ) + + fun getResults(resultViews: List) = + resultViews[0] as MovingHeadParams.ResultView + + override fun toString(): String = id +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/fixtures/PixelArrayDevice.kt b/src/commonMain/kotlin/baaahs/fixtures/PixelArrayDevice.kt new file mode 100644 index 0000000000..5443df9bfb --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/PixelArrayDevice.kt @@ -0,0 +1,157 @@ +package baaahs.fixtures + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.ShowPlayer +import baaahs.gl.GlContext +import baaahs.gl.data.* +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.gl.render.FixtureRenderTarget +import baaahs.gl.render.RenderTarget +import baaahs.gl.shader.InputPort +import baaahs.glsl.Uniform +import baaahs.plugin.CorePlugin +import baaahs.plugin.SerializerRegistrar +import baaahs.plugin.classSerializer +import baaahs.show.DataSource +import baaahs.show.DataSourceBuilder +import baaahs.show.Shader +import baaahs.util.Logger +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlin.math.min + +object PixelArrayDevice : DeviceType { + override val id: String get() = "PixelArray" + override val title: String get() = "Pixel Array" + + override val dataSourceBuilders: List> + get() = listOf(PixelLocationDataSource) + + override val resultParams: List = listOf( + ResultParam("Pixel Color", ColorResultType) + ) + + override val resultContentType: ContentType + get() = ContentType.Color + override val likelyPipelines: List> + get() = with(ContentType) { + listOf( + XyzCoordinate to UvCoordinate, + UvCoordinate to Color + ) + } + + override val errorIndicatorShader: Shader + get() = Shader( + "Ω Guru Meditation Error Ω", + /**language=glsl*/ + """ + uniform float time; + void main() { + gl_FragColor = (mod(time, 2.) < 1.) + ? vec4(.75, 0., 0., 1.) + : vec4(.25, 0., 0., 1.); + } + """.trimIndent() + ) + + + fun getColorResults(resultViews: List) = + resultViews[0] as ColorResultType.ColorResultView + + override fun toString(): String = id +} + +@Serializable +@SerialName("baaahs.Core:PixelLocation") +data class PixelLocationDataSource(@Transient val `_`: Boolean = true) : DataSource { + override val pluginPackage: String get() = CorePlugin.id + override val title: String get() = "Pixel Location" + override fun getType(): GlslType = GlslType.Vec3 + override val contentType: ContentType + get() = ContentType.XyzCoordinate + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed { + return PixelLocationFeed(getVarName(id), "ds_${id}_texture") + } + + override fun appendDeclaration(buf: StringBuilder, id: String) { + val textureUniformId = """ds_${id}_texture""" + val varName = getVarName(id) + buf.append(""" + uniform sampler2D $textureUniformId; + vec3 ds_${id}_getPixelCoords(vec2 rasterCoord) { + return texelFetch($textureUniformId, ivec2(rasterCoord.xy), 0).xyz; + } + vec3 $varName; + + """.trimIndent()) + } + + override fun invocationGlsl(varName: String): String { + return "${getVarName(varName)} = ds_${varName}_getPixelCoords(gl_FragCoord.xy)" + } + + companion object : DataSourceBuilder { + override val resourceName: String + get() = "PixelLocation" + override val contentType: ContentType + get() = ContentType.XyzCoordinate + override val serializerRegistrar: SerializerRegistrar + get() = classSerializer(serializer()) + + override fun build(inputPort: InputPort): PixelLocationDataSource = + PixelLocationDataSource() + } +} + +class PixelLocationFeed( + private val id: String, + private val textureUniformId: String, + private val refCounter: RefCounter = RefCounter() +) : Feed, RefCounted by refCounter { + + override fun bind(gl: GlContext): EngineFeed = EngineFeed(gl) + + inner class EngineFeed(gl: GlContext) : PerPixelEngineFeed { + override val buffer = FloatsParamBuffer(id, 3, gl) + + override fun setOnBuffer(renderTarget: RenderTarget) = run { + if (renderTarget is FixtureRenderTarget) { + val pixelLocations = renderTarget.fixture.pixelLocations + buffer.scoped(renderTarget).also { view -> + for (pixelIndex in 0 until min(pixelLocations.size, renderTarget.pixelCount)) { + val location = pixelLocations[pixelIndex] + view[pixelIndex, 0] = location.x + view[pixelIndex, 1] = location.y + view[pixelIndex, 2] = location.z + } + } + } else { + logger.warn { "Attempted to set per-pixel data for a non-FixtureRenderTarget, but that's impossible!" } + } + Unit + } + + override fun bind(glslProgram: GlslProgram) = ProgramFeed(glslProgram) + + inner class ProgramFeed(glslProgram: GlslProgram) : PerPixelProgramFeed(updateMode) { + override val buffer: ParamBuffer get() = this@EngineFeed.buffer + override val uniform: Uniform = glslProgram.getUniform(textureUniformId) + ?: error("no uniform $textureUniformId") + override val isValid: Boolean get() = true + } + } + + override fun release() { + refCounter.release() + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/fixtures/ResultType.kt b/src/commonMain/kotlin/baaahs/fixtures/ResultType.kt new file mode 100644 index 0000000000..c57a5d07fd --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/ResultType.kt @@ -0,0 +1,232 @@ +package baaahs.fixtures + +import baaahs.Color +import baaahs.geom.Vector2F +import baaahs.geom.Vector3F +import baaahs.geom.Vector4F +import baaahs.gl.GlContext +import com.danielgergely.kgl.* + +interface ResultType { + val renderPixelFormat: Int + val readPixelFormat: Int + val readType: Int + val stride: Int + + fun createParamBuffer(gl: GlContext, index: Int): ResultBuffer +} + +object ColorResultType : ResultType { + override val renderPixelFormat: Int + get() = GlContext.GL_RGBA8 + override val readPixelFormat: Int + get() = GL_RGBA + override val readType: Int + get() = GL_UNSIGNED_BYTE + override val stride: Int + get() = 4 + + override fun createParamBuffer(gl: GlContext, index: Int): Buffer { + return Buffer(gl, index) + } + + class Buffer(gl: GlContext, paramIndex: Int) : ResultBuffer(gl, paramIndex, ColorResultType) { + private lateinit var byteBuffer: ByteBuffer + + override val cpuBuffer: com.danielgergely.kgl.Buffer + get() = byteBuffer + + override fun resizeBuffer(size: Int) { + byteBuffer = ByteBuffer(size * stride) + } + + operator fun get(pixelIndex: Int): Color { + val offset = pixelIndex * stride + + return Color( + red = byteBuffer[offset], + green = byteBuffer[offset + 1], + blue = byteBuffer[offset + 2], + alpha = byteBuffer[offset + 3] + ) + } + + override fun getView(pixelOffset: Int, pixelCount: Int): ColorResultView { + return ColorResultView(this, pixelOffset, pixelCount) + } + } + + class ColorResultView( + private val buffer: Buffer, + pixelOffset: Int, + pixelCount: Int + ) : ResultView(pixelOffset, pixelCount), Iterable { + operator fun get(pixelIndex: Int): Color = buffer[pixelOffset + pixelIndex] + + override fun iterator(): Iterator { + return iterator { + for (i in 0 until pixelCount) yield(get(i)) + } + } + } +} + +// Yuck. XY and XYZ fail, at least on WebGL. Maybe they work on others? + +object FloatResultType : FloatsResultType( + // Haven't tested this, but I'm assuming it doesn't work. + 1, GL_R32F, GL_RED +) { + override fun createParamBuffer(gl: GlContext, index: Int): ResultBuffer { + return ParamBuffer(gl, index, this) + } + + class ParamBuffer(gl: GlContext, index: Int, type: ResultType) : Buffer(gl, index, type) { + operator fun get(pixelIndex: Int): Float { + val offset = pixelIndex * type.stride + + return floatBuffer[offset] + } + + override fun getView(pixelOffset: Int, pixelCount: Int): ResultView { + return FloatResultView(this, pixelOffset, pixelCount) + } + } + + class FloatResultView( + private val buffer: ParamBuffer, + pixelOffset: Int, + pixelCount: Int + ) : ResultView(pixelOffset, pixelCount) { + operator fun get(pixelIndex: Int): Float = buffer[pixelOffset + pixelIndex] + } +} + +object Vec2ResultType : FloatsResultType( + // This doesn't work in WebGL2 because... dunno. + // 2, GL_RG32F, GL_RG + // readPixels() fails with INVALID_OPERATION. + // Instead we use four floats and ignore one: + 4, GlContext.GL_RGBA32F, GL_RGBA +) { + override fun createParamBuffer(gl: GlContext, index: Int): ResultBuffer { + return ParamBuffer(gl, index, this) + } + + class ParamBuffer(gl: GlContext, index: Int, type: ResultType) : Buffer(gl, index, type) { + operator fun get(pixelIndex: Int): Vector2F { + val offset = pixelIndex * type.stride + + return Vector2F( + x = floatBuffer[offset], + y = floatBuffer[offset + 1] + ) + } + + override fun getView(pixelOffset: Int, pixelCount: Int): ResultView { + return Vec2ResultView(this, pixelOffset, pixelCount) + } + } + + class Vec2ResultView( + private val buffer: ParamBuffer, + pixelOffset: Int, + pixelCount: Int + ) : ResultView(pixelOffset, pixelCount) { + operator fun get(pixelIndex: Int): Vector2F = buffer[pixelOffset + pixelIndex] + } +} + +object Vec3ResultType : FloatsResultType( + // This doesn't work in WebGL2 because EXT_color_buffer_float doesn't have RGB32F!? + // 3, GlContext.GL_RGB32F, GL_RGB + // framebufferRenderbuffer() fails with INVALID_ENUM. + // Instead we use four floats and ignore one: + 4, GlContext.GL_RGBA32F, GL_RGBA +) { + override fun createParamBuffer(gl: GlContext, index: Int): ResultBuffer { + return ParamBuffer(gl, index, this) + } + + class ParamBuffer(gl: GlContext, index: Int, type: ResultType) : Buffer(gl, index, type) { + operator fun get(pixelIndex: Int): Vector3F { + val offset = pixelIndex * type.stride + + return Vector3F( + x = floatBuffer[offset], + y = floatBuffer[offset + 1], + z = floatBuffer[offset + 2] + ) + } + + override fun getView(pixelOffset: Int, pixelCount: Int): ResultView { + return Vec3ResultView(this, pixelOffset, pixelCount) + } + } + + class Vec3ResultView( + private val buffer: ParamBuffer, + pixelOffset: Int, + pixelCount: Int + ) : ResultView(pixelOffset, pixelCount) { + operator fun get(pixelIndex: Int): Vector3F = buffer[pixelOffset + pixelIndex] + } +} + +object Vec4ResultType : FloatsResultType(4, GlContext.GL_RGBA32F, GL_RGBA) { + override fun createParamBuffer(gl: GlContext, index: Int): ResultBuffer { + return ParamBuffer(gl, index, this) + } + + class ParamBuffer(gl: GlContext, index: Int, type: ResultType) : Buffer(gl, index, type) { + operator fun get(pixelIndex: Int): Vector4F { + val offset = pixelIndex * type.stride + + return Vector4F( + x = floatBuffer[offset], + y = floatBuffer[offset + 1], + z = floatBuffer[offset + 2], + w = floatBuffer[offset + 3] + ) + } + + override fun getView(pixelOffset: Int, pixelCount: Int): ResultView { + return Vec4ResultView(this, pixelOffset, pixelCount) + } + } + + class Vec4ResultView( + private val buffer: ParamBuffer, + pixelOffset: Int, + pixelCount: Int + ) : ResultView(pixelOffset, pixelCount) { + operator fun get(pixelIndex: Int): Vector4F = buffer[pixelOffset + pixelIndex] + } +} + + +abstract class FloatsResultType( + private val floatCount: Int, + override val renderPixelFormat: Int, + override val readPixelFormat: Int +) : ResultType { + override val readType: Int + get() = GL_FLOAT + override val stride: Int + get() = floatCount + + abstract class Buffer( + gl: GlContext, index: Int, type: ResultType + ) : ResultBuffer( + gl.also { gl.ensureResultBufferCanContainFloats() }, index, type + ) { + protected lateinit var floatBuffer: FloatBuffer + + override val cpuBuffer: com.danielgergely.kgl.Buffer + get() = floatBuffer + + override fun resizeBuffer(size: Int) { + floatBuffer = FloatBuffer(size * type.stride) + } + } +} diff --git a/src/commonMain/kotlin/baaahs/fixtures/Transport.kt b/src/commonMain/kotlin/baaahs/fixtures/Transport.kt new file mode 100644 index 0000000000..4d06cc2603 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/fixtures/Transport.kt @@ -0,0 +1,15 @@ +package baaahs.fixtures + +interface Transport { + val name: String + fun send(fixture: Fixture, resultViews: List) +} + +object NullTransport : Transport { + override val name: String + get() = "Null Transport" + + override fun send(fixture: Fixture, resultViews: List) { + // No-op. + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gadgets/ColorPicker.kt b/src/commonMain/kotlin/baaahs/gadgets/ColorPicker.kt new file mode 100644 index 0000000000..06743312a6 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gadgets/ColorPicker.kt @@ -0,0 +1,29 @@ +package baaahs.gadgets + +import baaahs.Color +import baaahs.Gadget +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.js.JsName +import kotlin.random.Random + +/** A gadget for picking a single color for a color palette. */ +@Serializable +@SerialName("baaahs.Core:ColorPicker") +data class ColorPicker( + /** The name for this color picker. */ + override val title: String, + + /** The initial value for this color picker. */ + val initialValue: Color = Color.WHITE +) : Gadget() { + + /** The selected color. */ + @JsName("color") + var color: Color by updatable("color", initialValue, Color.serializer()) + + override fun adjustALittleBit() { + fun randomAmount() = Random.nextFloat() * .1f - .05f + color = Color(color.redF + randomAmount(), color.greenF + randomAmount(), color.blueF + randomAmount()) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gadgets/PalettePicker.kt b/src/commonMain/kotlin/baaahs/gadgets/PalettePicker.kt new file mode 100644 index 0000000000..e94a2da653 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gadgets/PalettePicker.kt @@ -0,0 +1,19 @@ +package baaahs.gadgets + +import baaahs.Color +import baaahs.Gadget +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.ListSerializer + +/** A gadget for picking multiple colors. */ +@Serializable +@SerialName("baaahs.Core:PalettePicker") +data class PalettePicker( + /** The name for the palette picker. */ + override val title: String, + + val initialColors: List = emptyList() +) : Gadget() { + var colors: List by updatable("colors", initialColors, ListSerializer(Color.serializer())) +} diff --git a/src/commonMain/kotlin/baaahs/gadgets/RadioButtonStrip.kt b/src/commonMain/kotlin/baaahs/gadgets/RadioButtonStrip.kt new file mode 100644 index 0000000000..bad7852e9f --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gadgets/RadioButtonStrip.kt @@ -0,0 +1,23 @@ +package baaahs.gadgets + +import baaahs.Gadget +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlin.js.JsName +import kotlin.random.Random + +@Serializable +@SerialName("baaahs.Core:RadioButtonStrip") +data class RadioButtonStrip( + override val title: String, + val buttonTitles: List, + val initialSelectionIndex: Int +) : Gadget() { + @JsName("selectionIndex") + var selectionIndex: Int by updatable("selectionIndex", initialSelectionIndex, Int.serializer()) + + override fun adjustALittleBit() { + selectionIndex = Random.nextInt(buttonTitles.size) + } +} diff --git a/src/commonMain/kotlin/baaahs/gadgets/Slider.kt b/src/commonMain/kotlin/baaahs/gadgets/Slider.kt new file mode 100644 index 0000000000..6d57348e57 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gadgets/Slider.kt @@ -0,0 +1,39 @@ +package baaahs.gadgets + +import baaahs.Gadget +import baaahs.constrain +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlin.js.JsName +import kotlin.random.Random + +/** A gadget for adjusting a scalar numeric value using a slider. */ +@Serializable +@SerialName("baaahs.Core:Slider") +data class Slider( + /** The name for this slider. */ + override val title: String, + + /** The initial value for this slider. */ + val initialValue: Float = 1f, + + /** The minimum value for this slider. */ + val minValue: Float = 0f, + + /** The maximum value for this slider. */ + val maxValue: Float = 1f, + + /** The step value for the slider. */ + val stepValue: Float? = null +) : Gadget() { + /** The selected value. */ + @JsName("value") + var value: Float by updatable("value", initialValue, Float.serializer()) + + override fun adjustALittleBit() { + val spread = maxValue - minValue + val amount = Random.nextFloat() * spread * .25f - spread * .125f + value = constrain(value + amount, minValue, maxValue) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gadgets/Switch.kt b/src/commonMain/kotlin/baaahs/gadgets/Switch.kt new file mode 100644 index 0000000000..209b66f8db --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gadgets/Switch.kt @@ -0,0 +1,30 @@ +package baaahs.gadgets + +import baaahs.Gadget +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlin.js.JsName +import kotlin.random.Random + +/** A switch. */ +@Serializable +@SerialName("baaahs.Core:Switch") +data class Switch( + /** The label for this switch. */ + override val title: String, + + /** The initial value for this color picker. */ + val initiallyEnabled: Boolean = false +) : Gadget() { + + /** The selected color. */ + @JsName("color") + var enabled: Boolean by updatable("enabled", initiallyEnabled, Boolean.serializer()) + + override fun adjustALittleBit() { + if (Random.nextFloat() < .05) { + enabled = !enabled + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/geom/Matrix4.kt b/src/commonMain/kotlin/baaahs/geom/Matrix4.kt new file mode 100644 index 0000000000..57b96e34d7 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/geom/Matrix4.kt @@ -0,0 +1,6 @@ +package baaahs.geom + +import kotlinx.serialization.Serializable + +@Serializable +class Matrix4(val elements: DoubleArray) \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/geom/Vector2.kt b/src/commonMain/kotlin/baaahs/geom/Vector2.kt new file mode 100644 index 0000000000..b6d392e6bf --- /dev/null +++ b/src/commonMain/kotlin/baaahs/geom/Vector2.kt @@ -0,0 +1,6 @@ +package baaahs.geom + +expect class Vector2(x: Double, y: Double) { + var x: Double + var y: Double +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/geom/Vector2F.kt b/src/commonMain/kotlin/baaahs/geom/Vector2F.kt new file mode 100644 index 0000000000..e25fbe541f --- /dev/null +++ b/src/commonMain/kotlin/baaahs/geom/Vector2F.kt @@ -0,0 +1,11 @@ +package baaahs.geom + +import kotlinx.serialization.Serializable + +@Serializable +class Vector2F(val x: Float, val y: Float) { + operator fun component1() = x + operator fun component2() = y + + override fun toString(): String = "Vector2F(x=$x, y=$y)" +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/geom/Vector3F.kt b/src/commonMain/kotlin/baaahs/geom/Vector3F.kt new file mode 100644 index 0000000000..e3bbae1a7f --- /dev/null +++ b/src/commonMain/kotlin/baaahs/geom/Vector3F.kt @@ -0,0 +1,67 @@ +package baaahs.geom + +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import kotlinx.serialization.Serializable +import kotlin.math.max +import kotlin.math.min +import kotlin.math.sqrt + +@Serializable +data class Vector3F(val x: Float, val y: Float, val z: Float) { + fun min(other: Vector3F): Vector3F = Vector3F(min(x, other.x), min(y, other.y), min(z, other.z)) + + fun max(other: Vector3F): Vector3F = Vector3F(max(x, other.x), max(y, other.y), max(z, other.z)) + + operator fun plus(other: Vector3F): Vector3F = Vector3F(x + other.x, y + other.y, z + other.z) + + operator fun minus(other: Vector3F): Vector3F = Vector3F(x - other.x, y - other.y, z - other.z) + + operator fun times(scalar: Float): Vector3F = Vector3F(x * scalar, y * scalar, z * scalar) + + operator fun times(other: Vector3F): Vector3F = Vector3F(x * other.x, y * other.y, z * other.z) + + operator fun div(scalar: Float): Vector3F = Vector3F(x / scalar, y / scalar, z / scalar) + + operator fun div(other: Vector3F): Vector3F = Vector3F(x / other.x, y / other.y, z / other.z) + + fun normalize(): Vector3F { + val invLength = 1.0f / length() + return Vector3F(x * invLength, y * invLength, z * invLength) + } + + fun length(): Float { + return sqrt(lengthSquared().toDouble()).toFloat() + } + + private fun lengthSquared(): Float { + return x * x + y * y + z * z + } + + fun serialize(writer: ByteArrayWriter) { + writer.writeFloat(x) + writer.writeFloat(y) + writer.writeFloat(z) + } + + companion object { + val origin = Vector3F(0f, 0f, 0f) + + fun parse(reader: ByteArrayReader) = + Vector3F(reader.readFloat(), reader.readFloat(), reader.readFloat()) + } +} + +fun center(vectors: Collection): Vector3F { + val (min, max) = boundingBox(vectors) + val diff = max.minus(min) + return diff * 0.5f + min +} + +fun boundingBox(vectors: Collection): Pair { + if (vectors.isEmpty()) return Vector3F.origin to Vector3F.origin + + val min = vectors.reduce { acc, vector3F -> acc.min(vector3F) } + val max = vectors.reduce { acc, vector3F -> acc.max(vector3F) } + return min to max +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/geom/Vector4F.kt b/src/commonMain/kotlin/baaahs/geom/Vector4F.kt new file mode 100644 index 0000000000..bbbe98fbe8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/geom/Vector4F.kt @@ -0,0 +1,13 @@ +package baaahs.geom + +import kotlinx.serialization.Serializable + +@Serializable +class Vector4F(val x: Float, val y: Float, val z: Float, val w: Float) { + operator fun component1() = x + operator fun component2() = y + operator fun component3() = z + operator fun component4() = w + + override fun toString(): String = "Vector4F(x=$x, y=$y, z=$z, w=$w)" +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/DataTypes.kt b/src/commonMain/kotlin/baaahs/gl/DataTypes.kt new file mode 100644 index 0000000000..137f6fe4f3 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/DataTypes.kt @@ -0,0 +1,13 @@ +package baaahs.gl + +import kotlinx.serialization.Serializable + +@Serializable +data class Vec3(val x: Int, val y: Int, val z: Int) { + constructor(v: Int) : this(v, v, v) +} + +@Serializable +data class Vec4(val x: Int, val y: Int, val z: Int, val w: Int) { + constructor(v: Int) : this(v, v, v, v) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/GlBase.kt b/src/commonMain/kotlin/baaahs/gl/GlBase.kt new file mode 100644 index 0000000000..ad7dcab900 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/GlBase.kt @@ -0,0 +1,5 @@ +package baaahs.gl + +expect object GlBase { + val manager: GlManager +} diff --git a/src/commonMain/kotlin/baaahs/gl/GlContext.kt b/src/commonMain/kotlin/baaahs/gl/GlContext.kt new file mode 100644 index 0000000000..a840fb1ede --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/GlContext.kt @@ -0,0 +1,287 @@ +package baaahs.gl + +import baaahs.gl.glsl.CompilationException +import baaahs.gl.glsl.CompiledShader +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.ResourceAllocationException +import baaahs.glsl.Uniform +import baaahs.util.Logger +import com.danielgergely.kgl.* + +abstract class GlContext( + private val kgl: Kgl, + val glslVersion: String, + var checkForErrors: Boolean = false +) { + init { logger.debug { "Created ${this::class.simpleName}" } } + abstract fun runInContext(fn: () -> T): T + + private var viewport: List = emptyList() + private val maxTextureUnit = 31 // TODO: should be gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS) + + protected val textureUnits = mutableMapOf() + private var activeTextureUnit: TextureUnit? = null + + private var activeProgram: GlslProgram? = null + private var activeFrameBuffer: FrameBuffer? = null + private var activeRenderBuffer: RenderBuffer? = null + + class Stats { + var activeTexture = 0 + var bindTexture = 0 + var texImage2D = 0 + } + val stats = Stats() + + fun setViewport(x: Int, y: Int, width: Int, height: Int) { + val newViewport = listOf(x, y, width, height) + if (newViewport != viewport) { + check { viewport(x, y, width, height) } + viewport = newViewport + } + } + + fun createVertexShader(source: String): CompiledShader { + return CompiledShader(this, GL_VERTEX_SHADER, source) + } + + fun createFragmentShader(source: String): CompiledShader { + return CompiledShader(this, GL_FRAGMENT_SHADER, source) + } + + fun compile(vertexShader: CompiledShader, fragShader: CompiledShader): Program { + return runInContext { + val program = runInContext { + check { + createProgram() + ?: throw ResourceAllocationException("Failed to allocate a GL program.") + } + } + check { attachShader(program, vertexShader.shaderId) } + check { attachShader(program, fragShader.shaderId) } + check { linkProgram(program) } + if (check { getProgramParameter(program, GL_LINK_STATUS) } != GL_TRUE) { + vertexShader.validate() + fragShader.validate() + + val infoLog = check { getProgramInfoLog(program) } + throw CompilationException(infoLog ?: "Huh? Program error?") + } + program + } + } + + fun useProgram(glslProgram: GlslProgram) { + if (activeProgram !== glslProgram) { + check { useProgram(glslProgram.id) } + activeProgram = glslProgram + } + } + + fun createFrameBuffer(): FrameBuffer { + return FrameBuffer(check { createFramebuffer() }) + } + + fun createRenderBuffer(): RenderBuffer { + return RenderBuffer(check { createRenderbuffer() }) + } + + inner class FrameBuffer(private val framebuffer: Framebuffer) { + private val curRenderBuffers = mutableMapOf() + + fun bind() { + if (activeFrameBuffer != this) { + check { bindFramebuffer(GL_FRAMEBUFFER, framebuffer) } + activeFrameBuffer = this + } + } + + fun attach(renderBuffer: RenderBuffer, attachment: Int) { + bind() + + if (curRenderBuffers[attachment] != renderBuffer) { + check { framebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, renderBuffer.renderbuffer) } + curRenderBuffers[attachment] = renderBuffer + } + } + + fun check() { + if (checkForErrors) { + bind() + + val status = check { checkFramebufferStatus(GL_FRAMEBUFFER) } + if (status != GL_FRAMEBUFFER_COMPLETE) { + logger.warn { "FrameBuffer huh? $status" } + } + } + } + + fun release() { + if (activeFrameBuffer == this) { + check { bindFramebuffer(GL_FRAMEBUFFER, null) } + } + + check { deleteFramebuffer(framebuffer) } + curRenderBuffers.values.forEach { it.release() } + } + + // This attempts to work around readBuffer() not existing in Kgl (or on Android). + // Temporarily attach the renderbuffer as the primary color buffer. + fun withRenderBufferAsAttachment0(renderBuffer: RenderBuffer, fn: () -> T): T { + bind() + + val attachment = GL_COLOR_ATTACHMENT0 + val priorAttachment0 = curRenderBuffers[attachment] + return if (priorAttachment0 != null && priorAttachment0 != renderBuffer) { + check { framebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, renderBuffer.renderbuffer) } + curRenderBuffers[attachment] = renderBuffer + + try { + fn() + } finally { + check { framebufferRenderbuffer(GL_FRAMEBUFFER, attachment, GL_RENDERBUFFER, priorAttachment0.renderbuffer) } + curRenderBuffers[attachment] = priorAttachment0 + } + } else { + fn() + } + } + } + + inner class RenderBuffer(internal val renderbuffer: Renderbuffer) { + var curInternalFormat = -1 + var curWidth = -1 + var curHeight = -1 + + fun bind() { + if (activeRenderBuffer != this) { + check { bindRenderbuffer(GL_RENDERBUFFER, renderbuffer) } + activeRenderBuffer = this + } + } + + fun storage(internalformat: Int, width: Int, height: Int) { + bind() + + if (internalformat != curInternalFormat + || width != curWidth + || height != curHeight + ) { + check { renderbufferStorage(GL_RENDERBUFFER, internalformat, width, height) } + + curInternalFormat = internalformat + curWidth = width + curHeight = height + } + } + + fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: Buffer, offset: Int = 0) { + check { readPixels(x, y, width, height, format, type, buffer, offset) } + } + + fun release() { + check { deleteRenderbuffer(renderbuffer) } + } + } + + fun getTextureUnit(key: Any): TextureUnit { + return textureUnits[key] ?: allocTextureUnit(key).also { textureUnits[key] = it } + } + + private fun allocTextureUnit(key: Any): TextureUnit { + val nextTextureUnit = textureUnits.size + check(nextTextureUnit <= maxTextureUnit) { "too many texture units" } + return TextureUnit(key, nextTextureUnit) + } + + inner class TextureUnit(private val key: Any, private val unitNumber: Int) { + var boundTexture: Texture? = null + + private fun activate() { + if (activeTextureUnit !== this) { + stats.activeTexture++ + check { activeTexture(GL_TEXTURE0 + unitNumber) } + activeTextureUnit = this + } + } + + fun bindTexture(texture: Texture) { + if (boundTexture != texture) { + activate() + stats.bindTexture++ + check { bindTexture(GL_TEXTURE_2D, texture) } + boundTexture = texture + } + } + + fun uploadTexture(level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: Buffer, offset: Int = 0) { + stats.texImage2D++ + check { texImage2D(GL_TEXTURE_2D, level, internalFormat, width, height, border, format, type, buffer, offset) } + } + + fun configure(minFilter: Int = GL_LINEAR, maxFilter: Int = GL_LINEAR) { + check { texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minFilter) } + check { texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, maxFilter) } + check { texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE) } + check { texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) } + } + + fun setUniform(uniform: Uniform) { + uniform.set(unitNumber) + } + + fun release() { + textureUnits.remove(key) + } + } + + open fun ensureResultBufferCanContainFloats() { + } + + fun noCheck(fn: Kgl.() -> T): T { + return kgl.fn() + } + + fun check(fn: Kgl.() -> T): T { + val result = kgl.fn() + + if (checkForErrors) checkForGlError() + + return result + } + + private fun checkForGlError() { + val error = kgl.getError() + + val code = when (error) { + GL_INVALID_ENUM -> "GL_INVALID_ENUM" + GL_INVALID_VALUE -> "GL_INVALID_VALUE" + GL_INVALID_OPERATION -> "GL_INVALID_OPERATION" + GL_INVALID_FRAMEBUFFER_OPERATION -> "GL_INVALID_FRAMEBUFFER_OPERATION" + GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT -> "FRAMEBUFFER_INCOMPLETE_ATTACHMENT" +// GL_CONTEXT_LOST_WEBGL -> "GL_CONTEXT_LOST_WEBGL" + GL_OUT_OF_MEMORY -> "GL_OUT_OF_MEMORY" + else -> "unknown error $error" + } + + if (error != 0) { + logger.error { "OpenGL Error: $code" } + throw RuntimeException("OpenGL Error: $code") + } + } + + fun release() { +// TODO("not implemented") + } + + companion object { + private val logger = Logger("GlslContext") + + const val GL_RGBA8 = 0x8058 + + const val GL_R32F = 0x822E + const val GL_RG32F = 0x8230 + const val GL_RGB32F = 0x8815 + const val GL_RGBA32F = 0x8814 + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/GlManager.kt b/src/commonMain/kotlin/baaahs/gl/GlManager.kt new file mode 100644 index 0000000000..a1b7e0fdec --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/GlManager.kt @@ -0,0 +1,13 @@ +package baaahs.gl + +import com.danielgergely.kgl.Kgl + +abstract class GlManager { + abstract val available: Boolean + + abstract fun createContext(trace: Boolean = false): GlContext + + protected fun maybeTrace(kgl: Kgl, trace: Boolean): Kgl { + return if (trace) KglTracer(kgl) else kgl + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/KglTracer.kt b/src/commonMain/kotlin/baaahs/gl/KglTracer.kt new file mode 100644 index 0000000000..a53c64942e --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/KglTracer.kt @@ -0,0 +1,417 @@ +package baaahs.gl + +import baaahs.util.Logger +import com.danielgergely.kgl.* + +class KglTracer(private val kgl: Kgl) : Kgl { + private val id = tracerCounter++ + private val logger = Logger("KglTracer[$id]") + + override fun activeTexture(texture: Int) { + log("activeTexture", texture) + return kgl.activeTexture(texture) + } + + override fun attachShader(programId: Program, shaderId: Shader) { + log("attachShader", programId, shaderId) + return kgl.attachShader(programId, shaderId) + } + + override fun bindAttribLocation(programId: Program, index: Int, name: String) { + log("bindAttribLocation", programId, index, name) + return kgl.bindAttribLocation(programId, index, name) + } + + override fun bindBuffer(target: Int, bufferId: GlBuffer?) { + log("bindBuffer", target, bufferId) + return kgl.bindBuffer(target, bufferId) + } + + override fun bindFramebuffer(target: Int, framebuffer: Framebuffer?) { + log("bindFramebuffer", target, framebuffer) + return kgl.bindFramebuffer(target, framebuffer) + } + + override fun bindRenderbuffer(target: Int, renderbuffer: Renderbuffer?) { + log("bindRenderbuffer", target, renderbuffer) + return kgl.bindRenderbuffer(target, renderbuffer) + } + + override fun bindTexture(target: Int, texture: Texture?) { + log("bindTexture", target, texture) + return kgl.bindTexture(target, texture) + } + + override fun bindVertexArray(vertexArrayObject: VertexArrayObject?) { + log("bindVertexArray", vertexArrayObject) + return kgl.bindVertexArray(vertexArrayObject) + } + + override fun blendFunc(sFactor: Int, dFactor: Int) { + log("blendFunc", sFactor, dFactor) + return kgl.blendFunc(sFactor, dFactor) + } + + override fun bufferData(target: Int, sourceData: Buffer, size: Int, usage: Int, offset: Int) { + log("bufferData", target, sourceData, size, usage, offset) + return kgl.bufferData(target, sourceData, size, usage, offset) + } + + override fun checkFramebufferStatus(target: Int): Int { + log("checkFramebufferStatus", target) + return kgl.checkFramebufferStatus(target) + } + + override fun clear(mask: Int) { + log("clear", mask) + return kgl.clear(mask) + } + + override fun clearColor(r: Float, g: Float, b: Float, a: Float) { + log("clearColor", r, g, b, a) + return kgl.clearColor(r, g, b, a) + } + + override fun compileShader(shaderId: Shader) { + log("compileShader", shaderId) + return kgl.compileShader(shaderId) + } + + override fun createBuffer(): GlBuffer { + return kgl.createBuffer().also { + log("createBuffer") { it } + } + } + + override fun createBuffers(count: Int): Array { + return kgl.createBuffers(count).also { + log("createBuffers", count) { it } + } + } + + override fun createFramebuffer(): Framebuffer { + return kgl.createFramebuffer().also { + log("createFramebuffer") { it } + } + } + + override fun createProgram(): Program? { + return kgl.createProgram().also { + log("createProgram") { it } + } + } + + override fun createRenderbuffer(): Renderbuffer { + return kgl.createRenderbuffer().also { + log("createRenderbuffer") { it } + } + } + + override fun createShader(type: Int): Shader? { + log("createShader", type) + return kgl.createShader(type) + } + + override fun createTexture(): Texture { + return kgl.createTexture().also { + log("createTexture") { it } + } + } + + override fun createTextures(n: Int): Array { + return kgl.createTextures(n).also { + log("createTextures", n) { it } + } + } + + override fun createVertexArray(): VertexArrayObject { + return kgl.createVertexArray().also { + log("createVertexArray") { it } + } + } + + override fun cullFace(mode: Int) { + log("cullFace", mode) + return kgl.cullFace(mode) + } + + override fun deleteBuffer(buffer: GlBuffer) { + log("deleteBuffer", buffer) + return kgl.deleteBuffer(buffer) + } + + override fun deleteFramebuffer(framebuffer: Framebuffer) { + log("deleteFramebuffer", framebuffer) + return kgl.deleteFramebuffer(framebuffer) + } + + override fun deleteRenderbuffer(renderbuffer: Renderbuffer) { + log("deleteRenderbuffer", renderbuffer) + return kgl.deleteRenderbuffer(renderbuffer) + } + + override fun deleteShader(shaderId: Shader) { + log("deleteShader", shaderId) + return kgl.deleteShader(shaderId) + } + + override fun deleteTexture(texture: Texture) { + log("deleteTexture", texture) + return kgl.deleteTexture(texture) + } + + override fun deleteVertexArray(vertexArrayObject: VertexArrayObject) { + log("deleteVertexArray", vertexArrayObject) + return kgl.deleteVertexArray(vertexArrayObject) + } + + override fun disable(cap: Int) { + log("disable", cap) + return kgl.disable(cap) + } + + override fun disableVertexAttribArray(location: Int) { + log("disableVertexAttribArray", location) + return kgl.disableVertexAttribArray(location) + } + + override fun drawArrays(mode: Int, first: Int, count: Int) { + log("drawArrays", mode, first, count) + return kgl.drawArrays(mode, first, count) + } + + override fun enable(cap: Int) { + log("enable", cap) + return kgl.enable(cap) + } + + override fun enableVertexAttribArray(location: Int) { + log("enableVertexAttribArray", location) + return kgl.enableVertexAttribArray(location) + } + + override fun finish() { + log("finish") + return kgl.finish() + } + + override fun framebufferRenderbuffer( + target: Int, + attachment: Int, + renderbuffertarget: Int, + renderbuffer: Renderbuffer + ) { + log("framebufferRenderbuffer", target, attachment, renderbuffertarget, renderbuffer) + return kgl.framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer) + } + + override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: Texture, level: Int) { + log("framebufferTexture2D", target, attachment, textarget, texture, level) + return kgl.framebufferTexture2D(target, attachment, textarget, texture, level) + } + + override fun generateMipmap(target: Int) { + log("generateMipmap", target) + return kgl.generateMipmap(target) + } + + override fun getAttribLocation(programId: Program, name: String): Int { + return kgl.getAttribLocation(programId, name).also { + log("getAttribLocation", programId, name) { it } + } + } + + override fun getError(): Int { + val error = kgl.getError() + if (error != GL_NO_ERROR) log("getError() => $error") + return error + } + + override fun getProgramInfoLog(program: Program): String? { + log("getProgramInfoLog", program) + return kgl.getProgramInfoLog(program) + } + + override fun getProgramParameter(program: Program, pname: Int): Int { + log("getProgramParameter", program, pname) + return kgl.getProgramParameter(program, pname) + } + + override fun getShaderInfoLog(shaderId: Shader): String? { + log("getShaderInfoLog", shaderId) + return kgl.getShaderInfoLog(shaderId) + } + + override fun getShaderParameter(shader: Shader, pname: Int): Int { + log("getShaderParameter", shader, pname) + return kgl.getShaderParameter(shader, pname) + } + + override fun getUniformLocation(programId: Program, name: String): UniformLocation? { + return kgl.getUniformLocation(programId, name).also { + log("getUniformLocation", programId, name) { it } + } + } + + override fun isFramebuffer(framebuffer: Framebuffer): Boolean { + log("isFramebuffer", framebuffer) + return kgl.isFramebuffer(framebuffer) + } + + override fun isRenderbuffer(renderbuffer: Renderbuffer): Boolean { + log("isRenderbuffer", renderbuffer) + return kgl.isRenderbuffer(renderbuffer) + } + + override fun linkProgram(programId: Program) { + log("linkProgram", programId) + return kgl.linkProgram(programId) + } + + override fun readPixels( + x: Int, + y: Int, + width: Int, + height: Int, + format: Int, + type: Int, + buffer: Buffer, + offset: Int + ) { + log("readPixels", x, y, width, height, format, type, buffer, offset) + return kgl.readPixels(x, y, width, height, format, type, buffer, offset) + } + + override fun renderbufferStorage(target: Int, internalformat: Int, width: Int, height: Int) { + log("renderbufferStorage", target, internalformat, width, height) + return kgl.renderbufferStorage(target, internalformat, width, height) + } + + override fun shaderSource(shaderId: Shader, source: String) { + log("shaderSource", shaderId, source) + return kgl.shaderSource(shaderId, source) + } + + override fun texImage2D(target: Int, level: Int, internalFormat: Int, border: Int, resource: TextureResource) { + log("texImage2D", target, level, internalFormat, border, resource) + return kgl.texImage2D(target, level, internalFormat, border, resource) + } + + override fun texImage2D( + target: Int, + level: Int, + internalFormat: Int, + width: Int, + height: Int, + border: Int, + format: Int, + type: Int, + buffer: Buffer, + offset: Int + ) { + log("texImage2D", target, level, internalFormat, width, height, border, format, type, buffer, offset) + return kgl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer, offset) + } + + override fun texParameteri(target: Int, pname: Int, value: Int) { + log("texParameteri", target, pname, value) + return kgl.texParameteri(target, pname, value) + } + + override fun uniform1f(location: UniformLocation, f: Float) { + log("uniform1f", location, f) + return kgl.uniform1f(location, f) + } + + override fun uniform1i(location: UniformLocation, i: Int) { + log("uniform1i", location, i) + return kgl.uniform1i(location, i) + } + + override fun uniform2f(location: UniformLocation, x: Float, y: Float) { + log("uniform2f", location, x, y) + return kgl.uniform2f(location, x, y) + } + + override fun uniform2i(location: UniformLocation, x: Int, y: Int) { + log("uniform2i", location, x, y) + return kgl.uniform2i(location, x, y) + } + + override fun uniform3f(location: UniformLocation, x: Float, y: Float, z: Float) { + log("uniform3f", location, x, y, z) + return kgl.uniform3f(location, x, y, z) + } + + override fun uniform3fv(location: UniformLocation, value: FloatArray) { + log("uniform3fv", location, value) + return kgl.uniform3fv(location, value) + } + + override fun uniform3i(location: UniformLocation, x: Int, y: Int, z: Int) { + log("uniform3i", location, x, y, z) + return kgl.uniform3i(location, x, y, z) + } + + override fun uniform4f(location: UniformLocation, x: Float, y: Float, z: Float, w: Float) { + log("uniform4f", location, x, y, z, w) + return kgl.uniform4f(location, x, y, z, w) + } + + override fun uniform4i(location: UniformLocation, x: Int, y: Int, z: Int, w: Int) { + log("uniform4i", location, x, y, z, w) + return kgl.uniform4i(location, x, y, z, w) + } + + override fun uniformMatrix3fv(location: UniformLocation, transpose: Boolean, value: FloatArray) { + log("uniformMatrix3fv", location, transpose, value) + return kgl.uniformMatrix3fv(location, transpose, value) + } + + override fun uniformMatrix4fv(location: UniformLocation, transpose: Boolean, value: FloatArray) { + log("uniformMatrix4fv", location, transpose, value) + return kgl.uniformMatrix4fv(location, transpose, value) + } + + override fun useProgram(programId: Program) { + log("useProgram", programId) + return kgl.useProgram(programId) + } + + override fun vertexAttribPointer( + location: Int, + size: Int, + type: Int, + normalized: Boolean, + stride: Int, + offset: Int + ) { + log("vertexAttribPointer", location, size, type, normalized, stride, offset) + return kgl.vertexAttribPointer(location, size, type, normalized, stride, offset) + } + + override fun viewport(x: Int, y: Int, width: Int, height: Int) { + log("viewport", x, y, width, height) + return kgl.viewport(x, y, width, height) + } + + private fun log(name: String, vararg args: Any?, fn: (() -> Any?)? = null) { + logger.debug { + val argsStr = args.joinToString(", ") { stringify(it) } + "$name($argsStr)${fn?.let { " => ${stringify(fn())}" } ?: ""}" + } + } + + private fun stringify(it: Any?) = + if (it is IntArray) { + "[${it.joinToString(",")}]" + } else if (it is FloatArray) { + "[${it.joinToString(",")}]" + } else if (it is Array<*>) { + "[${it.joinToString(",")}]" + } else it.toString() + + companion object { + private var tracerCounter = 0 + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/Toolchain.kt b/src/commonMain/kotlin/baaahs/gl/Toolchain.kt new file mode 100644 index 0000000000..736e1227d7 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/Toolchain.kt @@ -0,0 +1,152 @@ +package baaahs.gl + +import baaahs.fixtures.DeviceType +import baaahs.gl.glsl.* +import baaahs.gl.patch.* +import baaahs.gl.shader.OpenShader +import baaahs.plugin.Plugins +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.show.mutable.MutablePort +import baaahs.show.mutable.MutableShaderInstance +import baaahs.show.mutable.MutableShow +import baaahs.util.Logger +import baaahs.util.Stats + +interface Toolchain { + val plugins: Plugins + + fun parse(src: String): GlslCode + + fun import(src: String): Shader + + fun analyze(shader: Shader): ShaderAnalysis + + fun openShader(shaderAnalysis: ShaderAnalysis): OpenShader + + fun wiringOptions( + currentOpenShader: OpenShader, + parentMutableShow: MutableShow, + mutableShaderInstance: MutableShaderInstance + ): ShaderInstanceOptions + + fun autoWire( + shaders: Collection, + defaultPorts: Map = emptyMap(), + shaderChannel: ShaderChannel = ShaderChannel.Main, + deviceTypes: Collection = emptyList() + ): UnresolvedPatch +} + +class ToolchainStats : Stats() { + val parse by statistic() + val import by statistic() + val analyze by statistic() + val openShader by statistic() + val autoWire by statistic() +} + +class RootToolchain( + override val plugins: Plugins, + private val glslParser: GlslParser = GlslParser(), + val glslAnalyzer: GlslAnalyzer = GlslAnalyzer(plugins), + val autoWirer: AutoWirer = AutoWirer(plugins) +) : Toolchain { + val stats = ToolchainStats() + + override fun parse(src: String): GlslCode = stats.parse.time { + glslParser.parse(src) + } + + override fun import(src: String): Shader = stats.import.time { + val glslCode = parse(src) + glslAnalyzer.analyze(glslCode).shader + } + + override fun analyze(shader: Shader): ShaderAnalysis { + val glslCode = try { + parse(shader.src) + } catch (e: GlslException) { + return ErrorsShaderAnalysis(shader.src, e, shader) + } + return stats.analyze.time { + glslAnalyzer.analyze(glslCode, shader) + } + } + + override fun openShader(shaderAnalysis: ShaderAnalysis): OpenShader { + return stats.openShader.time { + glslAnalyzer.openShader(shaderAnalysis) + } + } + + override fun wiringOptions( + currentOpenShader: OpenShader, + parentMutableShow: MutableShow, + mutableShaderInstance: MutableShaderInstance + ): ShaderInstanceOptions = stats.autoWire.time { + val channelsInfo = ChannelsInfo(parentMutableShow, emptyList(), this) + ShaderInstanceOptions( + currentOpenShader, + ShaderChannel.Main, + channelsInfo, + currentLinks = mutableShaderInstance.incomingLinks, + plugins = plugins + ) + } + + override fun autoWire( + shaders: Collection, + defaultPorts: Map, + shaderChannel: ShaderChannel, + deviceTypes: Collection + ): UnresolvedPatch { + return autoWirer.autoWire(shaders, shaderChannel, defaultPorts, deviceTypes) + } +} + +class CachingToolchain( + private val delegate: Toolchain, + private val name: String = "Cache" +) : Toolchain by delegate { + var hits = 0 + var misses = 0 + + private val shaderAnalysisCache = mutableMapOf() + + private fun cachedAnalysis(shader: Shader): ShaderAnalysis? { + return shaderAnalysisCache[shader] + ?: (delegate as? CachingToolchain)?.cachedAnalysis(shader) + } + + private fun uncachedAnalysis(shader: Shader): ShaderAnalysis { + return if (delegate is CachingToolchain) { + delegate.uncachedAnalysis(shader) + } else { + // We've gotten to the RootToolchain. + delegate.analyze(shader) + } + } + + override fun analyze(shader: Shader): ShaderAnalysis { + return shaderAnalysisCache[shader]?.also { hit(shader) } + ?: cachedAnalysis(shader) + ?: shaderAnalysisCache.getOrPut(shader) { + uncachedAnalysis(shader).also { miss(shader) } + } + } + + private fun hit(shader: Shader) { + hits++ + logger.debug { "$name: hit for ${shader.title} ($hits hits and $misses misses so far)" } + } + + private fun miss(shader: Shader) { + misses++ + logger.debug { "$name: miss for ${shader.title} ($hits hits and $misses misses so far)" } + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/ToolchainExt.kt b/src/commonMain/kotlin/baaahs/gl/ToolchainExt.kt new file mode 100644 index 0000000000..4e8cb90310 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/ToolchainExt.kt @@ -0,0 +1,37 @@ +package baaahs.gl + +import baaahs.fixtures.DeviceType +import baaahs.gl.patch.ContentType +import baaahs.gl.patch.UnresolvedPatch +import baaahs.gl.shader.OpenShader +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.show.mutable.MutablePort +import baaahs.show.mutable.MutableShader + +fun Toolchain.openShader(shader: Shader): OpenShader = + openShader(analyze(shader)) + +fun Toolchain.openShader(mutableShader: MutableShader): OpenShader = + openShader(analyze(mutableShader.build())) + +fun Toolchain.autoWire( + vararg shaders: Shader, + defaultPorts: Map = emptyMap(), + shaderChannel: ShaderChannel = ShaderChannel.Main, + deviceTypes: Collection = emptyList() +): UnresolvedPatch { + val openShaders = shaders.map { openShader(it) } + return autoWire(openShaders, defaultPorts, shaderChannel, deviceTypes) +} + +fun Toolchain.autoWire( + vararg shaders: OpenShader, + defaultPorts: Map = emptyMap(), + shaderChannel: ShaderChannel = ShaderChannel.Main, + deviceTypes: Collection = emptyList() +): UnresolvedPatch { + return autoWire(shaders.toList(), defaultPorts, shaderChannel, deviceTypes) +} + +fun Toolchain.withCache(name: String) = CachingToolchain(this, name) diff --git a/src/commonMain/kotlin/baaahs/gl/data/Feed.kt b/src/commonMain/kotlin/baaahs/gl/data/Feed.kt new file mode 100644 index 0000000000..cd619cd116 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/data/Feed.kt @@ -0,0 +1,98 @@ +package baaahs.gl.data + +import baaahs.RefCounted +import baaahs.fixtures.ParamBuffer +import baaahs.gl.GlContext +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.render.RenderTarget +import baaahs.glsl.Uniform +import baaahs.show.UpdateMode + +interface Feed : RefCounted { + fun bind(gl: GlContext): EngineFeed + + override fun release() = Unit +} + +/** + * Context for a feed with respect to a [GlContext]. + * + * This is a good spot for allocating any resources that can be shared across instances + * of [GlslProgram] within the context. + */ +interface EngineFeed { + fun bind(glslProgram: GlslProgram): ProgramFeed + + fun aboutToRenderFrame(renderTargets: List) = Unit + + fun release() = Unit +} + +/** + * Context for a feed with respect to a [GlslProgram]. + * + * This is the spot for any resources that are specific to this program instance, + * like uniform locations. + */ +interface ProgramFeed { + val isValid: Boolean get() = true + val updateMode: UpdateMode get() = UpdateMode.PER_FRAME + + val callSetEarly: Boolean get() = updateMode == UpdateMode.ONCE + val callSetBeforeFrame: Boolean get() = updateMode == UpdateMode.PER_FRAME + val callSetBeforeFixture: Boolean get() = updateMode == UpdateMode.PER_FIXTURE + + fun setOnProgram() = Unit + + fun setOnProgram(renderTarget: RenderTarget) = Unit + + /** + * Only release any resources specifically allocated by this Binding, not by + * its parent [Feed]. + */ + fun release() {} +} + +interface PerPixelEngineFeed : EngineFeed { + val updateMode: UpdateMode get() = UpdateMode.ONCE + val buffer: ParamBuffer + + override fun aboutToRenderFrame(renderTargets: List) { + if (updateMode == UpdateMode.PER_FRAME || updateMode == UpdateMode.PER_FIXTURE) { + renderTargets.forEach { setOnBuffer(it) } + buffer.uploadToTexture() + } + } + + fun resize(width: Int, height: Int, beforeUploading: () -> Unit) { + buffer.resizeBuffer(width, height) + beforeUploading() + buffer.uploadToTexture() + } + + fun setOnBuffer(renderTarget: RenderTarget) + + override fun bind(glslProgram: GlslProgram): PerPixelProgramFeed + + override fun release() { + buffer.release() + } +} + +abstract class PerPixelProgramFeed( + override val updateMode: UpdateMode +) : ProgramFeed { + abstract val buffer: ParamBuffer + abstract val uniform: Uniform + + override val callSetEarly: Boolean get() = true + override val callSetBeforeFrame: Boolean get() = + updateMode == UpdateMode.PER_FRAME || updateMode == UpdateMode.PER_FIXTURE + override val callSetBeforeFixture: Boolean get() = false + + final override fun setOnProgram() { + buffer.setTexture(uniform) + } + + final override fun setOnProgram(renderTarget: RenderTarget) {} +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/data/SingleUniformFeed.kt b/src/commonMain/kotlin/baaahs/gl/data/SingleUniformFeed.kt new file mode 100644 index 0000000000..bce0e8aaae --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/data/SingleUniformFeed.kt @@ -0,0 +1,31 @@ +package baaahs.gl.data + +import baaahs.gl.glsl.GlslProgram +import baaahs.glsl.Uniform +import baaahs.show.DataSource +import baaahs.util.Logger + +class SingleUniformFeed( + glslProgram: GlslProgram, + dataSource: DataSource, + val id: String, + val setUniform: (Uniform) -> Unit +) : ProgramFeed { + private val type: Any = dataSource.getType() + private val varName = dataSource.getVarName(id) + private val uniformLocation = glslProgram.getUniform(varName) + + override val isValid: Boolean get() = uniformLocation != null + + override fun setOnProgram() { + try { + uniformLocation?.let { setUniform(it) } + } catch (e: Exception) { + logger.error(e) { "failed to set uniform $type $varName for $id" } + } + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/CompiledShader.kt b/src/commonMain/kotlin/baaahs/gl/glsl/CompiledShader.kt new file mode 100644 index 0000000000..0504078f1c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/CompiledShader.kt @@ -0,0 +1,49 @@ +package baaahs.gl.glsl + +import baaahs.gl.GlContext +import baaahs.util.Logger +import com.danielgergely.kgl.GL_COMPILE_STATUS +import com.danielgergely.kgl.GL_TRUE +import com.danielgergely.kgl.Shader + +class CompiledShader( + private val gl: GlContext, + type: Int, + internal val source: String +) { + val shaderId: Shader = gl.runInContext { + gl.check { + createShader(type) + ?: throw ResourceAllocationException("Failed to allocate a GL shader.") + } + } + + init { + compile() + } + + private fun compile() { + gl.runInContext { + gl.check { shaderSource(shaderId, source) } + gl.check { compileShader(shaderId) } + } + } + + fun validate() { + gl.runInContext { + if (gl.check { getShaderParameter(shaderId, GL_COMPILE_STATUS) } != GL_TRUE) { + val infoLog = gl.check { getShaderInfoLog(shaderId) } + throw CompilationException(infoLog ?: "huh?", source) + } + } + } + + fun release() { + gl.runInContext { gl.check { deleteShader(shaderId) } } + } + + companion object { + val logger = Logger("CompiledShader") + } +} + diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/GlslAnalyzer.kt b/src/commonMain/kotlin/baaahs/gl/glsl/GlslAnalyzer.kt new file mode 100644 index 0000000000..74e2fd8ae0 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/GlslAnalyzer.kt @@ -0,0 +1,60 @@ +package baaahs.gl.glsl + +import baaahs.gl.glsl.GlslCode.GlslFunction +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.gl.shader.dialect.GenericShaderDialect +import baaahs.gl.shader.dialect.MatchLevel +import baaahs.gl.shader.dialect.ShaderDialect +import baaahs.gl.shader.type.ShaderType +import baaahs.only +import baaahs.plugin.Plugins +import baaahs.show.Shader + +class GlslAnalyzer(private val plugins: Plugins) { + fun analyze(glslCode: GlslCode, shader: Shader? = null): ShaderAnalysis { + val dialect = detectDialect(glslCode) + return dialect.analyze(glslCode, plugins, shader) + } + + fun openShader(glslCode: GlslCode, shader: Shader? = null): OpenShader { + val shaderAnalysis = analyze(glslCode, shader) + return openShader(shaderAnalysis) + } + + fun openShader(shaderAnalysis: ShaderAnalysis): OpenShader { + val shaderType = detectShaderType(shaderAnalysis) + + return with(shaderAnalysis) { + if (shaderAnalysis.isValid) { + OpenShader.Base(this.shader, shaderAnalysis.glslCode, + entryPoint!!, inputPorts, outputPorts.only(), + shaderType, shaderDialect) + } else { + OpenShader.Base(this.shader, shaderAnalysis.glslCode, + entryPoint ?: GlslFunction("invalid", GlslType.Void, emptyList(), ""), + inputPorts, + if (outputPorts.size == 1) outputPorts.first() else OutputPort(ContentType.Unknown), + shaderType, + shaderDialect, + errors + ) + } + } + } + + fun detectDialect(glslCode: GlslCode): ShaderDialect = + plugins.shaderDialects.all + .map { it to it.matches(glslCode) } + .filter { (_, match) -> match != MatchLevel.NoMatch } + .maxByOrNull { (_, match) -> match }?.first + ?: GenericShaderDialect + + fun detectShaderType(shaderAnalysis: ShaderAnalysis) = + plugins.shaderTypes.all + .map { it to it.matches(shaderAnalysis) } + .filter { (_, match) -> match != ShaderType.MatchLevel.NoMatch } + .maxByOrNull { (_, match) -> match }?.first + ?: ShaderType.Unknown +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/GlslCode.kt b/src/commonMain/kotlin/baaahs/gl/glsl/GlslCode.kt new file mode 100644 index 0000000000..c9a5e88ebf --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/GlslCode.kt @@ -0,0 +1,315 @@ +package baaahs.gl.glsl + +import baaahs.englishize +import baaahs.getValue +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.dialect.findContentType +import baaahs.plugin.PluginRef +import baaahs.plugin.Plugins +import baaahs.unknown +import baaahs.util.Logger +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put + +class GlslCode( + val src: String, + private val statements: List +) { + val globalVarNames = hashSetOf() + val functionNames = hashSetOf() + val structsByName = mutableMapOf() + + init { + statements.forEach { + when (it) { + is GlslStruct -> { + structsByName[it.name] = it + it.varName?.let { varName -> globalVarNames += varName } + } + is GlslVar -> globalVarNames.add(it.name) + is GlslFunction -> functionNames.add(it.name) + else -> { + if (it.fullText.isNotBlank()) { + logger.warn { "unrecognized GLSL: ${it.fullText} at ${it.lineNumber}" } + } + } + } + } + } + val symbolNames = globalVarNames + functionNames + structsByName.keys + val globalVars: Collection get() = + statements.filterIsInstance() + + structs.filter { it.varName != null } + .map { it.getSyntheticVar() } + val globalInputVars: Collection get() = globalVars.filter { it.isUniform || it.isVarying } + val uniforms: Collection get() = globalVars.filter { it.isUniform } + val functions: Collection get() = statements.filterIsInstance() + val structs: Collection get() = statements.filterIsInstance() + + fun findFunctionOrNull(name: String) = + functions.find { it.name == name} + + fun findFunction(name: String) = + findFunctionOrNull(name) + ?: error(unknown("function", name, functions.map { it.name })) + + // TODO: We ought to ignore e.g. local variables, or strings that only appear in comments. + fun refersToGlobal(name: String): Boolean { + return src.contains(name) + } + + companion object { + private val logger = Logger() + + fun replaceCodeWords(originalText: String, replaceFn: (String) -> String): String { + val buf = StringBuilder() + + var inComment = false + Regex("(.*?)(\\w+|//|\n|\\Z|$)", RegexOption.MULTILINE).findAll(originalText).forEach { matchResult -> + val (before, str) = matchResult.destructured + buf.append(before) + when (str) { + "//" -> { + inComment = true; buf.append(str) + } + "\n" -> { + inComment = false; buf.append(str) + } + else -> { + buf.append(if (inComment) str else replaceFn(str)) + } + } + } + return buf.toString() + } + } + + interface GlslStatement { + val name: String + val fullText: String + val lineNumber: Int? + val comments: List + + fun stripSource(): GlslStatement + + fun toGlsl( + namespace: Namespace, + symbolsToNamespace: Set, + symbolMap: Map + ): String { + return "${lineNumber?.let { "\n#line $lineNumber\n" }}" + + replaceCodeWords(fullText) { + symbolMap[it] + ?: if (it == name || symbolsToNamespace.contains(it)) { + namespace.qualify(it) + } else { + it + } + } + } + } + + data class GlslOther( + override val name: String, + override val fullText: String, + override val lineNumber: Int?, + override val comments: List = emptyList() + ) : GlslStatement { + override fun stripSource() = copy(fullText = "", lineNumber = null) + } + + data class GlslStruct( + override val name: String, + val fields: Map, + val varName: String?, + val isUniform: Boolean = false, + override val fullText: String, + override val lineNumber: Int? = null, + override val comments: List = emptyList() + ) : GlslStatement { + val glslType: GlslType.Struct = GlslType.Struct(name, fields) + + override fun stripSource() = copy(fullText = "", lineNumber = null) + + fun getSyntheticVar(): GlslVar { + val structType = GlslType.Struct(this) + val fullText = "${if (isUniform) "uniform " else ""}$name $varName;" + return GlslVar(varName!!, structType, fullText, lineNumber = lineNumber, comments = comments) + } + } + + interface GlslArgSite { + val name: String + val title: String + val type: GlslType + val isVarying: Boolean + val isGlobalInput: Boolean + val hint: Hint? + val lineNumber: Int? + + fun toInputPort(plugins: Plugins, parent: GlslFunction?): InputPort { + val contentTypeFromPlugin = try { + hint?.pluginRef + ?.let { plugins.findDataSourceBuilder(it) } + ?.contentType + } catch (e: Exception) { + null + } + + return InputPort( + name, + contentType = contentTypeFromPlugin + ?: findContentType(plugins, parent) + ?: plugins.resolveContentType(type), + type = type, + title = title, + pluginRef = hint?.pluginRef, + pluginConfig = hint?.config, + glslArgSite = this + ) + } + + fun findContentType(plugins: Plugins, parent: GlslFunction?) = + hint?.contentType(plugins) + } + + data class GlslVar( + override val name: String, + override val type: GlslType, + override val fullText: String = "", + val isConst: Boolean = false, + val isUniform: Boolean = false, + override val isVarying: Boolean = false, + override val lineNumber: Int? = null, + override val comments: List = emptyList() + ) : GlslStatement, GlslArgSite { + override val title get() = name.englishize() + override val isGlobalInput: Boolean get() = isUniform || isVarying + override val hint: Hint? by lazy { Hint.parse(comments.joinToString(" ") { it.trim() }, lineNumber) } + + override fun stripSource() = copy(fullText = "", lineNumber = null) + } + + class Hint( + val pluginRef: PluginRef?, + val config: JsonObject?, + private val tags: List>, + val lineNumber: Int? = null + ) { + fun tag(name: String) = + tags.find { it.first == name }?.second + + fun tags(tagName: String): List = + tags.filter { it.first == tagName }.map { it.second } + + fun contentType(plugins: Plugins) = contentType("type", plugins) + + fun contentType(tagName: String, plugins: Plugins) = + tag(tagName)?.let { plugins.resolveContentType(it) } + + companion object { + fun from(comments: List, lineNumber: Int? = null): Hint? = + parse(comments.joinToString(" ") { it.trim() }, lineNumber) + + fun parse(commentString: String, lineNumber: Int? = null): Hint? { + var pluginRef: PluginRef? = null + var config: JsonObject? = null + val tags = arrayListOf>() + + Regex("@(@?[^@]+)").findAll(commentString).forEach { match -> + val tag = match.groupValues[1].trim() + + if (tag.startsWith("@")) { + val string = commentString.trimStart('@').trim() + + val parts = string.split(" ") + val type = parts.first() + pluginRef = PluginRef.from(type) + config = buildJsonObject { + parts.subList(1, parts.size).forEach { s -> + val kv = s.split("=") + put(kv.first(), kv.subList(1, kv.size).joinToString("=")) + } + } + + } else { + val parts = tag.split(Regex("\\s"), limit = 2) + when (parts.size) { + 0 -> {} // No-op. + 1 -> tags.add(parts[0] to parts[0]) + 2 -> tags.add(parts[0] to parts[1].trim()) + } + } + } + + return if (pluginRef != null || config != null || tags.isNotEmpty()) { + Hint(pluginRef, config, tags, lineNumber) + } else null + } + } + } + + data class GlslFunction( + override val name: String, + val returnType: GlslType, + val params: List, + override val fullText: String, + override val lineNumber: Int? = null, + override val comments: List = emptyList() + ) : GlslStatement { + val hint: Hint? by lazy { Hint.from(comments, lineNumber) } + + override fun stripSource() = copy(lineNumber = null) + + fun invocationGlsl(namespace: Namespace, resultVar: String, portMap: Map): String { + val assignment = if (returnType != GlslType.Void) { + "$resultVar = " + } else "" + + val args = params.joinToString(", ") { glslParam -> + if (glslParam.isOut) + resultVar + else + portMap[glslParam.name] + ?: "/* huh? ${glslParam.name} */" + } + + return assignment + namespace.qualify(name) + "($args)" + } + } + + data class GlslParam( + override val name: String, + override val type: GlslType, + val isIn: Boolean = false, + val isOut: Boolean = false, + override val lineNumber: Int? = null, + val comments: List = emptyList() + ) : GlslArgSite { + override val title: String get() = name.englishize() + override val isVarying: Boolean get() = true + override val isGlobalInput: Boolean get() = false + override val hint: Hint? by lazy { Hint.from(comments, lineNumber) } + + override fun findContentType(plugins: Plugins, parent: GlslFunction?): ContentType? { + return super.findContentType(plugins, parent) + ?: parent?.findContentType(this, plugins) + } + } + + class Namespace(private val prefix: String) { + fun qualify(name: String) = build(prefix, name) + fun internalQualify(name: String) = build(prefix + "i", name) + + // Because double underscores are reserved in GLSL. + private fun build(prefix: String, name: String): String { + return if (name.startsWith('_')) { + "${prefix}x$name" + } else { + "${prefix}_$name" + } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/GlslParser.kt b/src/commonMain/kotlin/baaahs/gl/glsl/GlslParser.kt new file mode 100644 index 0000000000..bad42f9186 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/GlslParser.kt @@ -0,0 +1,683 @@ +package baaahs.gl.glsl + +class GlslParser { + fun parse(src: String): GlslCode { + return GlslCode(src, findStatements(src)) + } + + internal fun findStatements(glslSrc: String): List { + val context = Context() + context.parse(glslSrc, ParseState.initial(context)).visitEof() + return context.statements + } + + private class Context { + val macros: MutableMap = hashMapOf() + val statements: MutableList = arrayListOf() + var outputEnabled = true + val enabledStack = mutableListOf() + var lineNumber = 1 + var lineNumberForError = 1 + + val structs = mutableMapOf() + + fun findType(name: String): GlslType = + structs[name]?.let { GlslType.Struct(it) } + ?: GlslType.from(name) + + fun parse( + text: String, + initialState: ParseState, + freezeLineNumber: Boolean = false + ): ParseState { + var state = initialState + Regex("(.*?)(//|/\\*|\\*/|[;{}(,)#\n]|$)").findAll(text).forEach { matchResult -> + val (before, token) = matchResult.destructured + + if (before.isNotEmpty()) { + // Further tokenize text blocks to isolate symbol strings. + Regex("(.*?)([A-Za-z][A-Za-z0-9_]*|$)").findAll(before).forEach { beforeMatch -> + val (nonSymbol, symbol) = beforeMatch.destructured + if (nonSymbol.isNotEmpty()) + state = state.visit(nonSymbol) + if (symbol.isNotEmpty()) + state = state.visit(symbol) + } + } + + if (!freezeLineNumber && token == "\n") lineNumber++ + lineNumberForError = lineNumber + + if (token.isNotEmpty()) state = state.visit(token) + } + return state + } + + fun doUndef(args: List) { + if (outputEnabled) { + if (args.size != 1) throw glslError("#undef ${args.joinToString(" ")}") + macros.remove(args[0]) + } + } + + fun doIfdef(args: List) { + if (args.size != 1) throw glslError("#ifdef ${args.joinToString(" ")}") + enabledStack.add(outputEnabled) + outputEnabled = outputEnabled && macros.containsKey(args.first()) + } + + fun doIfndef(args: List) { + if (args.size != 1) throw glslError("#ifndef ${args.joinToString(" ")}") + enabledStack.add(outputEnabled) + outputEnabled = outputEnabled && !macros.containsKey(args.first()) + } + + fun doElse(args: List) { + if (args.isNotEmpty()) throw glslError("#else ${args.joinToString(" ")}") + outputEnabled = enabledStack.last() && !outputEnabled + } + + fun doEndif(args: List) { + if (args.isNotEmpty()) throw glslError("#endif ${args.joinToString(" ")}") + outputEnabled = enabledStack.removeLast() + } + + @Suppress("UNUSED_PARAMETER") + fun doLine(args: List) { + // No-op. + } + + fun checkForMacro(value: String, parseState: ParseState): ParseState? { + val macro = macros[value] + return if (macro == null) { + null + } else if (macro.params == null) { + parse(macro.replacement.trim(), parseState, freezeLineNumber = true) + } else { + ParseState.MacroExpansion(this, parseState, macro) + } + } + + fun glslError(message: String) = + AnalysisException(message, lineNumberForError) + } + + private class Macro( + val params: List?, + val replacement: String + ) + + private sealed class ParseState(val context: Context) { + companion object { + fun initial(context: Context): ParseState = + UnidentifiedStatement(context) + } + + private val text = StringBuilder() + val textAsString get() = text.toString() + fun textIsEmpty() = text.isEmpty() + fun textIsBlank() = text.isBlank() + + fun trimWhitespace() { + while (text.lastOrNull() == ' ') text.setLength(text.length - 1) + } + + open fun appendText(value: String) { + text.append(value) + } + + open fun visit(token: String): ParseState { + return when (token) { + "//" -> visitComment() + "/*" -> visitBlockCommentBegin() + "*/" -> visitBlockCommentEnd() + ";" -> visitSemicolon() + "{" -> visitLeftCurlyBrace() + "}" -> visitRightCurlyBrace() + "(" -> visitLeftParen() + "," -> visitComma() + ")" -> visitRightParen() + "#" -> visitDirective() + "\n" -> visitNewline() + "" -> visitEof() + else -> visitText(token) + } + } + + open fun visitText(value: String): ParseState { + return if (context.outputEnabled || value == "\n") { + context.checkForMacro(value, this) + ?: run { + appendText(value) + this + } + } else this + } + + open fun visitComment(): ParseState = visitText("//") + open fun visitBlockCommentBegin(): ParseState = visitText("/*") + open fun visitBlockCommentEnd(): ParseState = visitText("*/") + open fun visitSemicolon(): ParseState = visitText(";") + open fun visitLeftCurlyBrace(): ParseState = visitText("{") + open fun visitRightCurlyBrace(): ParseState = visitText("}") + open fun visitLeftParen(): ParseState = visitText("(") + open fun visitComma(): ParseState = visitText(",") + open fun visitRightParen(): ParseState = visitText(")") + open fun visitDirective(): ParseState = visitText("#") + open fun visitNewline(): ParseState = visitText("\n") + open fun visitEof(): ParseState = this + + open fun addComment(comment: String) {} + open fun receiveSubsequentComments() {} + + private abstract class Statement( + context: Context, + var recipientOfNextComment: Statement? = null + ) : ParseState(context) { + var lineNumber = context.lineNumber + var braceNestLevel: Int = 0 + val comments = mutableListOf() + + override fun visitComment(): ParseState { + return if (braceNestLevel == 0) { + Comment(context, recipientOfNextComment ?: this, this) + } else { + super.visitComment() + } + } + + override fun visitBlockCommentBegin(): ParseState { + return BlockComment(context, recipientOfNextComment ?: this, this) + } + + override fun visitSemicolon(): ParseState { + return if (braceNestLevel == 0) { + visitText(";") + finishStatement() + } else { + visitText(";") + } + } + + override fun visitLeftCurlyBrace(): ParseState { + braceNestLevel++ + return super.visitLeftCurlyBrace() + } + + override fun visitRightCurlyBrace(): ParseState { + braceNestLevel-- + super.visitRightCurlyBrace() + + return if (braceNestLevel == 0) { + val isStruct = textAsString.trim() + .contains(Regex("^(uniform\\s+)?struct\\s")) + if (isStruct) { + this + } else { + finishStatement() + } + } else { + this + } + } + + override fun visitDirective(): ParseState { + return Directive(context, this) + } + + override fun visitNewline(): ParseState { + recipientOfNextComment?.let { + it.visitNewline() + receiveSubsequentComments() + } + + return if (textIsBlank()) { + trimWhitespace() + // Skip leading newlines. + lineNumber = context.lineNumber + this + } else { + super.visitNewline() + } + } + + override fun visitEof(): ParseState { + if (!isEmpty()) finishStatement() + return UnidentifiedStatement(context, this) + } + + override fun receiveSubsequentComments() { + recipientOfNextComment = null + } + + override fun addComment(comment: String) { + comments.add(comment) + } + + fun finishStatement(): Statement { + context.statements.add(createStatement()) + return UnidentifiedStatement(context, this) + } + + abstract fun createStatement(): GlslCode.GlslStatement + + fun asVarOrNull(): GlslCode.GlslVar? { + val text = textAsString + + return Regex("(?:(const|uniform|varying)\\s+)?(\\w+)\\s+(\\w+)(\\s*=.*)?;", RegexOption.MULTILINE) + .find(text.trim())?.let { + val (qualifier, type, name, constValue) = it.destructured + var (isConst, isUniform, isVarying) = arrayOf(false, false, false) + when (qualifier) { + "const" -> isConst = true + "uniform" -> isUniform = true + "varying" -> isVarying = true + } + val (trimmedText, trimmedLineNumber) = chomp(text, lineNumber) + GlslCode.GlslVar( + name, context.findType(type), trimmedText, isConst, isUniform, isVarying, + trimmedLineNumber, comments + ) + } + } + + fun asSpecialOrNull(): GlslCode.GlslOther? { + val text = textAsString + return Regex("^(precision)\\s+.*;", RegexOption.MULTILINE) + .find(text.trim())?.let { + val (keyword) = it.destructured + GlslCode.GlslOther(keyword, text, lineNumber, comments) + } + } + + fun copyFrom(other: Statement): ParseState { + appendText(other.textAsString) + lineNumber = other.lineNumber + comments.addAll(other.comments) + return this + } + + fun isEmpty(): Boolean = textAsString.isEmpty() && comments.isEmpty() + } + + private class UnidentifiedStatement( + context: Context, + recipientOfNextComment: Statement? = null + ) : Statement(context, recipientOfNextComment) { + val tokensSoFar = mutableListOf() + + override fun visitLeftParen(): ParseState { + return if (context.outputEnabled && braceNestLevel == 0 && !tokensSoFar.contains("=")) { + val fn = Function(tokensSoFar, context) + fn.copyFrom(this) + fn.appendText("(") + fn.Params() + } else { + super.visitLeftParen() + } + } + + override fun visitText(value: String): ParseState { + return if (value == "struct") { + Struct(context) + .copyFrom(this).apply { appendText(value) } + } else { + if (context.outputEnabled && value.isNotBlank()) + tokensSoFar.add(value.trim()) + super.visitText(value) + } + } + + override fun createStatement(): GlslCode.GlslStatement { + return asSpecialOrNull() + ?: asVarOrNull() + ?: GlslCode.GlslOther("unknown", textAsString, lineNumber) + } + } + + private class Struct(context: Context) : Statement(context) { + override fun createStatement(): GlslCode.GlslStatement = + asStructOrNull() + ?: throw context.glslError("huh? couldn't find a struct in \"$textAsString\"") + + fun asStructOrNull(): GlslCode.GlslStruct? { + val text = textAsString + return Regex("^(uniform\\s+)?struct\\s+(\\w+)\\s+\\{([^}]+)}(?:\\s+(\\w+)?)?;\$", RegexOption.MULTILINE) + .find(text.trim())?.let { + val (uniform, name, members, varName) = it.destructured + val fields = mutableMapOf() + + members.replace(Regex("//.*"), "") + .split(";") + .forEach { member -> + val trimmed = member.trim() + if (trimmed.isEmpty()) return@forEach + val parts = trimmed.split(Regex("\\s+")) + when (parts.size) { + 0 -> return@forEach + 2 -> fields[parts[1]] = GlslType.from(parts[0]) + else -> throw AnalysisException("illegal struct member \"$member\"", lineNumber) + } + } + val varNameOrNull = if (varName.isBlank()) null else varName + GlslCode.GlslStruct( + name, fields, varNameOrNull, uniform.isNotBlank(), + text, lineNumber, comments + ) + .also { context.structs[name] = it } + } + } + } + + private class Function( + tokensSoFar: List, + context: Context + ) : Statement(context) { + val returnType: GlslType + val name: String + val params = arrayListOf() + + init { + if (tokensSoFar.size != 2) + throw context.glslError("unexpected tokens $tokensSoFar in function") + + returnType = context.findType(tokensSoFar[0]) + name = tokensSoFar[1] + } + + override fun createStatement(): GlslCode.GlslStatement = + GlslCode.GlslFunction(name, returnType, params, textAsString, lineNumber, comments) + + inner class Params( + recipientOfNextComment: Statement? = null + ) : Statement(context, recipientOfNextComment) { + var qualifier: String? = null + var type: GlslType? = null + var name: String? = null + + override fun appendText(value: String) { + this@Function.appendText(value) + } + + override fun visitText(value: String): ParseState { + val trimmed = value.trim() + if (trimmed.isNotEmpty()) { + if (qualifier == null && (trimmed == "in" || trimmed == "out" || trimmed == "inout")) { + qualifier = trimmed + } else if (type == null) { + type = GlslType.from(trimmed) + } else if (name == null) { + name = trimmed + } else { + throw context.glslError("Unexpected token \"$trimmed\".") + } + } + + return super.visitText(value) + } + + override fun visitComma(): ParseState { + addParam() + appendText(",") + return Params(this) + } + + override fun visitRightParen(): ParseState { + addParam() + appendText(")") + return this@Function + } + + override fun visitNewline(): ParseState { + appendText("\n") + receiveSubsequentComments() + return this + } + + override fun createStatement(): GlslCode.GlslStatement { + error("huh?") + } + + fun addParam() { + val type = type + val name = name + + if (type == GlslType.Void) return + if (name == null && type == null) return + + if (type == null) { + throw context.glslError("No type for parameter in ${this@Function.name}().") + } else if (name == null) { + throw context.glslError("No name for parameter in ${this@Function.name}().") + } + + params.add( + GlslCode.GlslParam( + name, + type, + isIn = qualifier == null || qualifier == "in" || qualifier == "inout", + isOut = qualifier == "out" || qualifier == "inout", + lineNumber = lineNumber, + comments = comments + ) + ) + } + } + } + + private class Comment( + context: Context, + val recipientOfComment: ParseState, + val nextParseState: ParseState + ) : ParseState(context) { + val commentText = StringBuilder() + + override fun visitText(value: String): ParseState { + commentText.append(value) + return this + } + + override fun visitNewline(): ParseState { + recipientOfComment.addComment(commentText.toString()) + nextParseState.visitNewline() + return nextParseState + } + + override fun visitEof(): ParseState { + recipientOfComment.addComment(commentText.toString()) + return super.visitEof() + } + } + + private class BlockComment( + context: Context, + val recipientOfComment: ParseState, + val nextParseState: ParseState + ) : ParseState(context) { + val commentText = StringBuilder() + + override fun visitText(value: String): ParseState { + commentText.append(value) + return this + } + + override fun visitNewline(): ParseState { + nextParseState.visitNewline() + return super.visitNewline() + } + + override fun visitBlockCommentEnd(): ParseState { + recipientOfComment.addComment(commentText.toString()) + return nextParseState + } + } + + private class Directive(context: Context, val priorParseState: ParseState) : ParseState(context) { + override fun visitText(value: String): ParseState { + return if (textIsEmpty() && value == "define") { + MacroDeclaration(context, priorParseState) + } else { + appendText(value) + this + } + } + + override fun visitNewline(): ParseState { + context.lineNumberForError -= 1 + + val str = textAsString.trim() + val args = str.split(Regex("\\s+")).toMutableList() + val directive = args.removeFirst() + when (directive) { + "define" -> throw IllegalStateException("This should be handled by MacroDeclaration.") + "undef" -> context.doUndef(args) + "ifdef" -> context.doIfdef(args) + "ifndef" -> context.doIfndef(args) + "else" -> context.doElse(args) + "endif" -> context.doEndif(args) + "line" -> context.doLine(args) + else -> throw context.glslError("unknown directive #$str") + } + priorParseState.visitText("\n") + return priorParseState + } + + override fun visitEof(): ParseState { + return visitNewline() + } + } + + class MacroDeclaration(context: Context, val priorParseState: ParseState) : ParseState(context) { + enum class Mode { Initial, HaveName, InArgs, InReplacement } + + private var mode = Mode.Initial + private var name: String? = null + private var args: MutableList? = null + + override fun visitText(value: String): ParseState { + when (mode) { + Mode.Initial -> { + if (value.isNotBlank()) { + name = value + mode = + Mode.HaveName + } + } + Mode.HaveName -> { + mode = + Mode.InReplacement + super.visitText(value) + } + Mode.InArgs -> { + if (value.isNotBlank() && value.trim() != ",") { + args!!.add(value.trim()) + } + } + Mode.InReplacement -> { + super.visitText(value) + } + } + return this + } + + override fun visitLeftParen(): ParseState { + return if (mode == Mode.HaveName) { + mode = Mode.InArgs + args = arrayListOf() + this + } else super.visitLeftParen() + } + + override fun visitRightParen(): ParseState { + return if (mode == Mode.InArgs) { + mode = Mode.InReplacement + this + } else super.visitRightParen() + } + + override fun visitNewline(): ParseState { + context.lineNumberForError -= 1 + val name = name ?: throw context.glslError("#define with no macro name") + if (context.outputEnabled) { + context.macros[name] = Macro(args, textAsString) + } + priorParseState.visitText("\n") + return priorParseState + } + } + + class MacroExpansion( + context: Context, + private val priorParseState: ParseState, + private val macro: Macro + ) : ParseState(context) { + private var parenCount = 0 + + override fun visitText(value: String): ParseState { + return if (parenCount == 0) { + priorParseState.visitText(macro.replacement.trim()) + insertReplacement(value) + } else { + context.checkForMacro(value, this) + ?: run { + super.appendText(value) + this + } + } + } + + override fun visitLeftParen(): ParseState { + parenCount++ + return if (parenCount == 1) { + this + } else { + super.visitLeftParen() + } + } + + override fun visitRightParen(): ParseState { + parenCount-- + + return if (parenCount == 0) { + val args = textAsString.split(',').map { it.trim() } + val subs = (macro.params ?: emptyList()).zip(args).associate { it } + val substituted = macro.replacement.trim().replace(wordRegex) { + subs[it.value] ?: it.value + } + insertReplacement(substituted) + } else { + super.visitRightParen() + } + } + + override fun visitNewline(): ParseState { + return priorParseState + } + + private fun insertReplacement(value: String): ParseState { + return context.parse(value, priorParseState, freezeLineNumber = true) + } + } + } + + companion object { + private val wordRegex = Regex("([A-Za-z][A-Za-z0-9_]*)") + + /** Chomp leading whitespace. */ + private fun chomp(text: String, lineNumber: Int?): Pair { + var newlineCount = 0 + var i = 0 + loop@ while (i < text.length) { + when (text[i]) { + '\n' -> newlineCount++ + ' ', '\t' -> {} + else -> break@loop + } + i++ + } + val trimmedText = text.substring(i) + val trimmedLineNumber = lineNumber?.plus(newlineCount) + return trimmedText to trimmedLineNumber + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/GlslProgram.kt b/src/commonMain/kotlin/baaahs/gl/glsl/GlslProgram.kt new file mode 100644 index 0000000000..e9fce1b807 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/GlslProgram.kt @@ -0,0 +1,154 @@ +package baaahs.gl.glsl + +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.data.Feed +import baaahs.gl.patch.LinkedPatch +import baaahs.gl.render.RenderTarget +import baaahs.glsl.Uniform +import baaahs.show.DataSource +import baaahs.show.OutputPortRef +import baaahs.show.UpdateMode +import baaahs.util.Logger +import com.danielgergely.kgl.Kgl + +class GlslProgram( + private val gl: GlContext, + private val linkedPatch: LinkedPatch, + engineFeedResolver: EngineFeedResolver +) { + val title: String get() = linkedPatch.rootNode.title + + private val vertexShader = + gl.createVertexShader( + "#version ${gl.glslVersion}\n${GlslProgram.vertexShader}" + ) + + internal val fragShader = + gl.createFragmentShader(linkedPatch.toFullGlsl(gl.glslVersion)) + + val id = gl.compile(vertexShader, fragShader) + + private val feeds = gl.runInContext { + linkedPatch.dataSourceLinks.mapNotNull { (dataSource, id) -> + if (dataSource.isImplicit()) return@mapNotNull null + val engineFeed = engineFeedResolver.openFeed(id, dataSource) + + if (engineFeed != null) { + val programFeed = engineFeed.bind(this) + if (programFeed.isValid) { + programFeed + } else { + logger.debug { "unused uniform for $dataSource?" } + programFeed.release() + null + } + } else { + logger.warn { "no UniformProvider bound for $dataSource" } + null + } + } + } + + init { + gl.runInContext { + feeds.forEach { programFeed -> + if (programFeed.updateMode == UpdateMode.ONCE) + programFeed.setOnProgram() + } + } + } + + private val perFrameFeeds = feeds.mapNotNull { programFeed -> + if (programFeed.updateMode == UpdateMode.PER_FRAME) + programFeed + else null + } + + private val perFixtureFeeds = feeds.mapNotNull { programFeed -> + if (programFeed.updateMode == UpdateMode.PER_FIXTURE) + programFeed + else null + } + + val vertexAttribLocation: Int = gl.runInContext { + gl.check { getAttribLocation(id, "Vertex") } + } + + private inline fun feedsOf(): List = feeds.filterIsInstance() + + fun setResolution(x: Float, y: Float) { + feedsOf().forEach { it.onResolution(x, y) } + } + + fun aboutToRenderFrame() { + perFrameFeeds.forEach { it.setOnProgram() } + } + + fun aboutToRenderFixture(renderTarget: RenderTarget) { + perFixtureFeeds.forEach { + it.setOnProgram(renderTarget) + } + } + + fun release() { + feeds.forEach { it.release() } + + gl.runInContext { + gl.useProgram(this) +// TODO: gl.check { detachShader(vertexShader) } + vertexShader.release() +// TODO: gl.check { detachShader(fragShader) } + fragShader.release() + + } +// TODO gl.runInContext { gl.check { deleteProgram(id) } } + } + + fun getUniform(name: String): Uniform? = gl.runInContext { + gl.useProgram(this) + val uniformLoc = gl.check { getUniformLocation(id, name) } + if (uniformLoc == null) { + logger.debug { "no such uniform $name" } + } + uniformLoc?.let { Uniform(this@GlslProgram, it) } + } + + fun withProgram(fn: Kgl.() -> T): T { + gl.useProgram(this) + return gl.check(fn) + } + + interface ResolutionListener { + fun onResolution(x: Float, y: Float) + } + + companion object { + private val logger = Logger("GlslProgram") + + val PixelColor = OutputPortRef("sm_result") + + val vertexShader = """ + precision lowp float; + + // xy = vertex position in normalized device coordinates ([-1,+1] range). + in vec2 Vertex; + + const vec2 scale = vec2(0.5, 0.5); + + void main() + { + vec2 vTexCoords = Vertex * scale + scale; // scale vertex attribute to [0,1] range + gl_Position = vec4(Vertex, 0.0, 1.0); + } + """.trimIndent() + } +} + +fun interface FeedResolver { + fun openFeed(id: String, dataSource: DataSource): Feed? +} + +fun interface EngineFeedResolver { + fun openFeed(id: String, dataSource: DataSource): EngineFeed? +} diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/GlslType.kt b/src/commonMain/kotlin/baaahs/gl/glsl/GlslType.kt new file mode 100644 index 0000000000..d3a9399fd8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/GlslType.kt @@ -0,0 +1,111 @@ +package baaahs.gl.glsl + +sealed class GlslType constructor( + val glslLiteral: String, + val defaultInitializer: String = "$glslLiteral(0.)" +) { + init { + @Suppress("LeakingThis") + types[glslLiteral] = this + } + + private class OtherGlslType(glslLiteral: String) : GlslType(glslLiteral) + class Struct( + val name: String, + val fields: Map, + defaultInitializer: String = initializerFor(fields) + ) : GlslType(name, defaultInitializer) { + constructor(glslStruct: GlslCode.GlslStruct) + : this(glslStruct.name, glslStruct.fields) + + constructor( + name: String, + vararg fields: Pair + ) : this(name, mapOf(*fields)) + + constructor( + name: String, + vararg fields: Pair, + defaultInitializer: String + ) : this(name, mapOf(*fields), defaultInitializer) + + fun toGlsl(namespace: GlslCode.Namespace?, publicStructNames: Set): String { + val buf = StringBuilder() + buf.append("struct ${namespace?.qualify(name) ?: name} {\n") + fields.forEach { (name, type) -> + val typeStr = if (type is Struct) { + if (publicStructNames.contains(name)) name else namespace?.qualify(name) ?: name + } else type.glslLiteral + buf.append(" $typeStr $name;\n") + } + buf.append("};\n\n") + + return buf.toString() + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is Struct) return false + if (!super.equals(other)) return false + + if (name != other.name) return false + if (fields != other.fields) return false + + return true + } + + override fun hashCode(): kotlin.Int { + var result = super.hashCode() + result = 31 * result + name.hashCode() + result = 31 * result + fields.hashCode() + return result + } + + + companion object { + private fun initializerFor(fields: Map): String = + StringBuilder().apply { + append("{ ") + fields.entries.forEachIndexed { index, (_, glslType) -> + if (index > 0) + append(", ") + append(glslType.defaultInitializer) + } + append(" }") + }.toString() + } + } + + object Float : GlslType("float", "0.") + object Vec2 : GlslType("vec2") + object Vec3 : GlslType("vec3") + object Vec4 : GlslType("vec4") + object Int : GlslType("int", "0") + object Sampler2D : GlslType("sampler2D") + object Void : GlslType("void") + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is GlslType) return false + + if (glslLiteral != other.glslLiteral) return false + + return true + } + + override fun hashCode(): kotlin.Int { + return glslLiteral.hashCode() + } + + override fun toString(): String { + return "GlslType($glslLiteral)" + } + + companion object { + val types = mutableMapOf() + + fun from(glsl: String): GlslType { + return types.getOrPut(glsl) { OtherGlslType(glsl) } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/README.md b/src/commonMain/kotlin/baaahs/gl/glsl/README.md new file mode 100644 index 0000000000..68c113f189 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/README.md @@ -0,0 +1,54 @@ +## GLSL handling + +### Patches, providers, and ports, oh my! + +Shaders declare uniforms. + +Shaders (Shader Fragments?) +- type = { `color` | `transform` | `filter` | `function` } +- input ports ~= uniforms +- output ports ~= return values + +Controls/Inputs/Generators +- output ports ~= results + +Patches +- nodes ~= Shaders/Controls/Inputs/Generators +- links ~= acyclic directed graph of (node output port ref -> node output port ref) + +Scenes +- patches +- event bindings (cues?) + - UI buttons + - keyboard + - MIDI events + +Shows +- all of above + +Libraries +- collection of shaders + + +Input Ports +- content type = { `color` | ? } + +Port Refs +- + +Shader -> Uniform -> InputPort + -> PortRef + + +Shader stages: + +| _edit_ | `MutableShader` | +| `mutableShader.build()` | `Shader` | +| `glslAnalyzer.parse()` | `GlslCode` | +| `glslAnalyzer.detectDialect` | `ShaderDialect` | +| `glslAnalyzer.validate()` | `ShaderAnalyzsis` | +| `glslAnalyzer.openShader()` | `OpenShader` | +| `autoWirer.autoWire()` | `UnresolvedPatch` | +| `unresolvedPatch.confirm()` | `MutablePatch` | +| `ShowOpener()` | `OpenPatch` | +| `PatchResolver` | `RenderPlan` | diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/ShaderAnalysis.kt b/src/commonMain/kotlin/baaahs/gl/glsl/ShaderAnalysis.kt new file mode 100644 index 0000000000..2392dccaeb --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/ShaderAnalysis.kt @@ -0,0 +1,39 @@ +package baaahs.gl.glsl + +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.gl.shader.dialect.GenericShaderDialect +import baaahs.gl.shader.dialect.ShaderDialect +import baaahs.show.Shader + +interface ShaderAnalysis { + val glslCode: GlslCode + + val shaderDialect: ShaderDialect + + val entryPoint: GlslCode.GlslFunction? + + val inputPorts: List + + val outputPorts: List + + val isValid: Boolean + + val errors: List + + val shader: Shader +} + +class ErrorsShaderAnalysis( + private val src: String, + private val e: GlslException, + override val shader: Shader +) : ShaderAnalysis { + override val glslCode: GlslCode get() = GlslCode(src, emptyList()) + override val shaderDialect: ShaderDialect get() = GenericShaderDialect + override val entryPoint: GlslCode.GlslFunction? get() = null + override val inputPorts: List get() = emptyList() + override val outputPorts: List get() = emptyList() + override val isValid: Boolean get() = false + override val errors: List get() = e.errors +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/glsl/errors.kt b/src/commonMain/kotlin/baaahs/gl/glsl/errors.kt new file mode 100644 index 0000000000..dcfe152ed5 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/glsl/errors.kt @@ -0,0 +1,53 @@ +package baaahs.gl.glsl + +abstract class GlslException(message: String) : Exception(message) { + abstract val errors: List +} + +class LinkException( + message: String, row: Int? = null +) : GlslException("Shader link error: $message") { + override val errors = listOf(GlslError(message, row)) +} + +class AnalysisException( + message: String, row: Int? = null +) : GlslException("Shader analysis error: $message") { + override val errors = listOf(GlslError(message, row)) +} + +class CompilationException( + errorMessage: String, + val source: String? = null +) : GlslException("GLSL compilation error: $errorMessage") { + override val errors = + errorMessage + .replace("\u0000", "") // Sometimes Kgl gives us back null chars? + .split("\n") + .filter { it.isNotBlank() } + .map { line -> + pattern.matchEntire(line)?.groupValues?.let { match -> + val fileId = match[1].toInt() + val row = match[2].toInt() + val message = match[3] + GlslError(message, row, fileId) + } ?: GlslError(line) + } + + companion object { + val pattern = Regex("^ERROR: (\\d+):(\\d+): (.*)$") + } +} + +class ResourceAllocationException(message: String) : Error(message) + +data class GlslError(val message: String, val row: Int = NO_LINE, val fileId: Int = -1) { + constructor(message: String) : + this(message, NO_LINE) + constructor(message: String, row: Int? = null, fileId: Int? = null) : + this(message, row ?: NO_LINE, fileId ?: -1) + + companion object { + const val NO_LINE = -1 + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/AutoWirer.kt b/src/commonMain/kotlin/baaahs/gl/patch/AutoWirer.kt new file mode 100644 index 0000000000..03afd2d8ef --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/AutoWirer.kt @@ -0,0 +1,50 @@ +package baaahs.gl.patch + +import baaahs.fixtures.DeviceType +import baaahs.gl.shader.OpenShader +import baaahs.plugin.Plugins +import baaahs.show.ShaderChannel +import baaahs.show.Surfaces +import baaahs.show.live.LiveShaderInstance +import baaahs.show.live.OpenPatch +import baaahs.show.live.OpenShow +import baaahs.show.mutable.MutablePort +import baaahs.show.mutable.MutableShader + +class AutoWirer(private val plugins: Plugins) { + fun autoWire( + shaders: Collection, + shaderChannel: ShaderChannel = ShaderChannel.Main, + defaultPorts: Map = emptyMap(), + deviceTypes: Collection = emptyList() + ): UnresolvedPatch { + val siblingsPatch = OpenPatch(shaders.map { + LiveShaderInstance(it, emptyMap(), shaderChannel, 0f) + }, Surfaces.AllSurfaces) + + val parentShow = null as OpenShow? // TODO: test with non-null? + val channelsInfo = ChannelsInfo( + parentShow, if (deviceTypes.isEmpty()) plugins.deviceTypes.all else deviceTypes + ) + + // First pass: gather shader output ports. + val shaderInstances = + shaders.associateWith { openShader -> + val shaderInstanceOptions = + ShaderInstanceOptions(openShader, shaderChannel, channelsInfo, defaultPorts, emptyMap(), plugins) + + val unresolvedShaderInstance = UnresolvedShaderInstance( + MutableShader(openShader.shader), + openShader.inputPorts.associateWith { inputPort -> + shaderInstanceOptions.inputPortLinkOptions[inputPort.id]?.toMutableList() ?: mutableListOf() + }, + shaderChannel, + 0f + ) + + unresolvedShaderInstance + } + + return UnresolvedPatch(shaderInstances.values.toList()) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/Component.kt b/src/commonMain/kotlin/baaahs/gl/patch/Component.kt new file mode 100644 index 0000000000..40e65db1d8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/Component.kt @@ -0,0 +1,15 @@ +package baaahs.gl.patch + +import baaahs.gl.glsl.GlslType + +interface Component { + val title: String + val outputVar: String? + val resultType: GlslType + + fun appendStructs(buf: StringBuilder) + fun appendDeclarations(buf: StringBuilder) + fun appendInvokeAndSet(buf: StringBuilder, prefix: String) + + fun getExpression(): String +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/ContentType.kt b/src/commonMain/kotlin/baaahs/gl/patch/ContentType.kt new file mode 100644 index 0000000000..0c9f2a7d2c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/ContentType.kt @@ -0,0 +1,128 @@ +package baaahs.gl.patch + +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslType +import baaahs.plugin.core.MovingHeadParams + +class ContentType( + val id: String, + val title: String, + val glslType: GlslType, + /** If false, this content type won't be suggested for matching GLSL types, it must be explicitly specified. */ + val suggest: Boolean = true, + private val typeAdaptations: Map String> = emptyMap(), + /** If [glslType] is a [GlslType.Struct], we currently need to provide a hint for converting it to a vector. */ + val outputRepresentation: GlslType = glslType, + private val defaultInitializer: ((GlslType) -> String)? = null +) { + fun initializer(dataType: GlslType): String = + defaultInitializer?.invoke(dataType) + ?: officialDefaultInitializer(dataType) + + /** + * Since [dataType] here comes from a shader declaration, it doesn't have a good defaultInitializer, + * so we should use the one from our declared [glslType] instead. + */ + private fun officialDefaultInitializer(dataType: GlslType) = + (if (dataType == glslType) glslType else dataType).defaultInitializer + + fun adapt(expression: String, toType: GlslType): String { + return typeAdaptations[toType]?.invoke(expression) + ?: expression + } + + fun isUnknown(): Boolean { + return id == "unknown" || id.startsWith("unknown/") + } + + override fun toString(): String = "ContentType($id [$glslType])" + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is ContentType) return false + + if (id != other.id) return false + if (title != other.title) return false + if (glslType != other.glslType) return false + + return true + } + + override fun hashCode(): Int { + var result = title.hashCode() + result = 31 * result + glslType.hashCode() + return result + } + + + companion object { + fun unknown(type: GlslType): ContentType { + return ContentType("unknown/${type.glslLiteral}", "Unknown ${type.glslLiteral}", suggest = false, glslType = type) + } + + @Deprecated("Obsolete") + val PixelCoordinatesTexture = + ContentType("pixel-coords-texture", "Pixel Coordinates Texture", GlslType.Sampler2D, suggest = true) + val PreviewResolution = ContentType("preview-resolution", "Preview Resolution", GlslType.Vec2, suggest = false) + val RasterCoordinate = ContentType("raster-coordinate", "Raster Coordinate", GlslType.Vec4, suggest = false) + val Resolution = ContentType("resolution", "Resolution", GlslType.Vec2, suggest = false) + val Unknown = ContentType("unknown", "Unknown", GlslType.Void, suggest = false) + + val UvCoordinate = ContentType( + "uv-coordinate", "U/V Coordinate", GlslType.Vec2, + typeAdaptations = mapOf(GlslType.Vec4 to { "$it.xy" }) + ) + val XyCoordinate = ContentType("xy-coordinate", "X/Y Coordinate", GlslType.Vec2) + val ModelInfo = ContentType("model-info", "Model Info", MoreTypes.ModelInfo.glslType) + val Mouse = ContentType("mouse", "Mouse", GlslType.Vec2) + val XyzCoordinate = ContentType("xyz-coordinate", "X/Y/Z Coordinate", GlslType.Vec3) + val Color = ContentType("color", "Color", GlslType.Vec4) { type -> + if (type == GlslType.Vec4) "vec4(0., 0., 0., 1.)" else type.defaultInitializer + } + val Time = ContentType("time", "Time", GlslType.Float) + val Float = ContentType("float", "Float", GlslType.Float) + val Int = ContentType("int", "Integer", GlslType.Int) + val Media = ContentType("media", "Media", GlslType.Sampler2D) + + val coreTypes = listOf( + PixelCoordinatesTexture, + PreviewResolution, + RasterCoordinate, + Resolution, + Unknown, + + UvCoordinate, + XyCoordinate, + ModelInfo, + Mouse, + XyzCoordinate, + Color, + Time, + Float, + Int, + Media, + + MovingHeadParams.contentType + ) + } +} + +object MoreTypes { + object ModelInfo { + val struct = GlslCode.GlslStruct( + "ModelInfo", + mapOf( + "center" to GlslType.Vec3, + "extents" to GlslType.Vec3, + ), + fullText = """ + struct ModelInfo { + vec3 center; + vec3 extents; + } + """.trimIndent(), + varName = null + ) + val glslType = GlslType.Struct(struct) + } +} diff --git a/src/commonMain/kotlin/baaahs/gl/patch/DataSourceComponent.kt b/src/commonMain/kotlin/baaahs/gl/patch/DataSourceComponent.kt new file mode 100644 index 0000000000..0090d0b5e8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/DataSourceComponent.kt @@ -0,0 +1,36 @@ +package baaahs.gl.patch + +import baaahs.gl.glsl.GlslType +import baaahs.show.DataSource + +class DataSourceComponent(val dataSource: DataSource, val varName: String) : Component { + override val title: String + get() = dataSource.title + override val outputVar: String? + get() = null + override val resultType: GlslType + get() = dataSource.getType() + + override fun appendStructs(buf: StringBuilder) { + val glslType = dataSource.contentType.glslType + if (glslType is GlslType.Struct) { + buf.append(glslType.toGlsl(null, emptySet())) + } + } + + override fun appendDeclarations(buf: StringBuilder) { + if (!dataSource.isImplicit()) { + buf.append("// Data source: ", dataSource.title, "\n") + dataSource.appendDeclaration(buf, varName) + buf.append("\n") + } + } + + override fun appendInvokeAndSet(buf: StringBuilder, prefix: String) { + dataSource.appendInvokeAndSet(buf, prefix, varName) + } + + override fun getExpression(): String { + return dataSource.getVarName(varName) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/LinkedPatch.kt b/src/commonMain/kotlin/baaahs/gl/patch/LinkedPatch.kt new file mode 100644 index 0000000000..1280c2ccdd --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/LinkedPatch.kt @@ -0,0 +1,67 @@ +package baaahs.gl.patch + +import baaahs.gl.glsl.GlslType +import baaahs.show.live.LiveShaderInstance.DataSourceLink + +class LinkedPatch( + val rootNode: ProgramNode, + private val components: List, + val dataSourceLinks: Set, + val warnings: List +) { + fun toGlsl(): String { + val buf = StringBuilder() + buf.append("#ifdef GL_ES\n") + buf.append("precision mediump float;\n") + buf.append("#endif\n") + buf.append("\n") + buf.append("// SparkleMotion-generated GLSL\n") + buf.append("\n") + with(rootNode.outputPort) { + buf.append("layout(location = 0) out ${contentType.outputRepresentation.glslLiteral} sm_result;\n") + buf.append("\n") + + if (contentType.glslType is GlslType.Struct) { + buf.append(contentType.glslType.toGlsl(null, emptySet())) + } + } + + components.forEach { component -> + component.appendStructs(buf) + } + + components.forEach { component -> + component.appendDeclarations(buf) + } + + buf.append("\n#line 10001\n") + buf.append("void main() {\n") + + components.forEach { component -> + component.appendInvokeAndSet(buf, " ") + } + + components.last().outputVar + ?.let { + val resultContentType = rootNode.outputPort.contentType + if (resultContentType.outputRepresentation != resultContentType.glslType) { + // Pass struct members through an output-friendly type. + buf.append(" sm_result = ${resultContentType.outputRepresentation.glslLiteral}(") + (resultContentType.glslType as GlslType.Struct).fields.entries.forEachIndexed { index, (name, _) -> + if (index > 0) buf.append(",") + buf.append("\n $it.$name") + } + buf.append("\n );\n") + } else { + buf.append(" sm_result = ", it, ";\n") + } + } + + buf.append("}\n") + return buf.toString() + } + + fun toFullGlsl(glslVersion: String): String { + return "#version ${glslVersion}\n\n${toGlsl()}\n" + } +} diff --git a/src/commonMain/kotlin/baaahs/gl/patch/PatchResolver.kt b/src/commonMain/kotlin/baaahs/gl/patch/PatchResolver.kt new file mode 100644 index 0000000000..e5ae787026 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/PatchResolver.kt @@ -0,0 +1,108 @@ +package baaahs.gl.patch + +import baaahs.ShowRunner +import baaahs.fixtures.DeviceType +import baaahs.fixtures.DeviceTypeRenderPlan +import baaahs.fixtures.ProgramRenderPlan +import baaahs.fixtures.RenderPlan +import baaahs.gl.glsl.CompilationException +import baaahs.gl.glsl.FeedResolver +import baaahs.gl.glsl.GlslException +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.render.RenderManager +import baaahs.gl.render.RenderTarget +import baaahs.glsl.GuruMeditationError +import baaahs.show.DataSource +import baaahs.show.ShaderChannel +import baaahs.show.live.ActivePatchSet +import baaahs.show.live.OpenPatch +import baaahs.util.Logger + +class PatchResolver( + renderTargets: Collection, + activePatchSet: ActivePatchSet, + private val renderManager: RenderManager +) : BasePatchResolver(renderTargets, activePatchSet) { + override fun buildProgram( + linkedPatch: LinkedPatch, + deviceType: DeviceType, + feedResolver: FeedResolver + ) = try { + renderManager.compile(deviceType, linkedPatch, feedResolver) + } catch (e: GlslException) { + logger.error(e) { "Error preparing program" } + if (e is CompilationException) { + e.source?.let { ShowRunner.logger.info { it } } + } + + renderManager.compile( + deviceType, GuruMeditationError(deviceType).linkedPatch, feedResolver + ) + } + + companion object { + private val logger = Logger() + + fun buildPortDiagram(vararg patches: OpenPatch) = PortDiagram(patches.toList()) + } +} + +abstract class BasePatchResolver( + renderTargets: Collection, + private val activePatchSet: ActivePatchSet +) { + val portDiagrams = + renderTargets + .groupBy { it.fixture.deviceType } + .mapValues { (_, renderTargets) -> + val patchSetsByKey = mutableMapOf() + val renderTargetsByKey = mutableMapOf>() + + renderTargets.forEach { renderTarget -> + val patchSet = activePatchSet.activePatches + .filter { patch -> patch.matches(renderTarget.fixture) } + val key = patchSet.joinToString(":") { it.serial.toString(16) } + + patchSetsByKey[key] = patchSet + renderTargetsByKey.getOrPut(key) { mutableListOf() } + .add(renderTarget) + } + + patchSetsByKey.map { (key, patchSet) -> + PortDiagram(patchSet) to + renderTargetsByKey[key]!! as List + } + } + + fun createRenderPlan( + dataSources: Map, + feedResolver: FeedResolver + ): RenderPlan { + return RenderPlan( + portDiagrams.mapValues { (deviceType, devicePortDiagrams) -> + val programsRenderPlans = devicePortDiagrams.map { (portDiagram, renderTargets) -> + val linkedPatch = portDiagram.resolvePatch( + ShaderChannel.Main, + deviceType.resultContentType, + dataSources + ) + val program = linkedPatch?.let { + buildProgram(it, deviceType, feedResolver) + } + + ProgramRenderPlan(program, renderTargets) + } + + DeviceTypeRenderPlan(programsRenderPlans) + } + ) + } + + abstract fun buildProgram( + linkedPatch: LinkedPatch, + deviceType: DeviceType, + feedResolver: FeedResolver + ): GlslProgram +} + +private typealias PatchSet = List \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/PortDiagram.kt b/src/commonMain/kotlin/baaahs/gl/patch/PortDiagram.kt new file mode 100644 index 0000000000..4b6f9838fa --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/PortDiagram.kt @@ -0,0 +1,227 @@ +package baaahs.gl.patch + +import baaahs.gl.shader.InputPort +import baaahs.show.DataSource +import baaahs.show.ShaderChannel +import baaahs.show.live.LiveShaderInstance +import baaahs.show.live.OpenPatch +import baaahs.util.Logger + +class PortDiagram(val patches: List) { + private val candidates: Map + private val resolvedNodes = hashMapOf() + + init { + val candidates = hashMapOf>() + var level = 0 + + fun addToChannel(track: Track, shaderInstance: LiveShaderInstance, level: Int) { + val channelTypeCandidates = candidates.getOrPut(track) { arrayListOf() } + if (channelTypeCandidates.any { it.shaderInstance == shaderInstance }) { + throw error("candidates for $track already include ${shaderInstance.shader.title}") + } + channelTypeCandidates.add(ChannelEntry(shaderInstance, shaderInstance.priority, level)) + } + + fun add(patch: OpenPatch) { + patch.shaderInstances.forEach { liveShaderInstance -> + val outputPort = liveShaderInstance.shader.outputPort + val track = Track(liveShaderInstance.shaderChannel, outputPort.contentType) + addToChannel(track, liveShaderInstance, level) + } + + level++ + } + + patches.forEach { add(it) } + + this.candidates = candidates.mapValues { (_, entries) -> Candidates(entries) } + } + + fun resolvePatch( + shaderChannel: ShaderChannel, + contentType: ContentType, + dataSources: Map + ): LinkedPatch? { + val resolver = Resolver(dataSources) + val track = Track(shaderChannel, contentType) + val rootProgramNode = resolver.resolve(track) + + return if (rootProgramNode != null) { + logger.debug { "Resolved $track to $rootProgramNode." } + ProgramLinker(rootProgramNode, resolver.warnings).buildLinkedPatch() + } else { + logger.warn { "Failed to resolve $track." } + null + } + } + + data class Track(val shaderChannel: ShaderChannel, val contentType: ContentType) { + override fun toString(): String { + return "Track[${shaderChannel.id}/${contentType.id}]" + } + } + + internal class Candidates(entries: List) { + companion object { + val comparator = + compareByDescending { it.priority } + .thenByDescending { it.typePriority } + .thenByDescending { it.level } + .thenBy { it.shaderInstance.shader.title } + } + + private val sortedEntries = entries.sortedWith(comparator) + + fun iterator(): Iterator { + return sortedEntries + .map { it.shaderInstance } + .iterator() + } + } + + class Breadcrumb( + val track: Track + ) { + var instance: LiveShaderInstance? = null + var resolvingInputPort: InputPort? = null + override fun toString(): String { + return "Resolving $track" + + (instance?.let { " -> [${it.shader.title}]"} ?: "") + + (resolvingInputPort?.let { ".${it.id} (${it.contentType.id})"} ?: "") + } + } + + inner class Resolver( + dataSources: Map + ) { + private val dataSourceChannelLinks = dataSources.map { (id, dataSource) -> + (id to dataSource.contentType) to LiveShaderInstance.DataSourceLink(dataSource, id) + }.associate { it } + + private val trackResolvers = mutableMapOf() + private val breadcrumbs = mutableListOf() + private val currentBreadcrumb get() = breadcrumbs.last() + internal val warnings = mutableListOf() + + fun resolve(track: Track): ProgramNode? { + return trackResolvers.getOrPut(track) { TrackResolver(track) } + .resolve() + } + + fun resolveChannel(inputPort: InputPort, shaderChannel: ShaderChannel): ProgramNode { + val contentType = inputPort.contentType + + val track = Track(shaderChannel, contentType) + return resolve(track) + ?: tryDataSource(shaderChannel, contentType) + ?: run { + addWarning("No upstream shader found, using default for ${contentType.id}.") + DefaultValueNode(contentType) + } + } + + private fun addWarning(message: String) { + warnings.add("$message\n" + + "Stack:" + + breadcrumbs.asReversed().joinToString { "\n $it" } + ) + } + + fun resolveLink(inputPort: InputPort, link: LiveShaderInstance.Link): ProgramNode { + currentBreadcrumb.resolvingInputPort = inputPort + return link.finalResolve(inputPort, this@Resolver) + } + + private fun tryDataSource( + shaderChannel: ShaderChannel, + contentType: ContentType + ): LiveShaderInstance.DataSourceLink? { + return dataSourceChannelLinks[shaderChannel.id to contentType] + } + + + inner class TrackResolver(private val track: Track) { + private val channelIterators = hashMapOf>() + private val dagAncestors = hashSetOf() + + private var resolved = false + private var resolution: ProgramNode? = null + + fun resolve(): ProgramNode? { + if (resolved) return resolution + + breadcrumbs.add(Breadcrumb(track)) + + try { + val nextInstance = try { + val iterator = channelIterators.getOrPut(track) { + candidates[track]?.iterator() + ?: emptyList().iterator() + } + if (iterator.hasNext()) + iterator.next() + else null + } catch (e: ResolveException) { + throw e.chain("Resolver.resolve($track)") + } + + currentBreadcrumb.instance = nextInstance + + return nextInstance?.let { shaderInstance -> + if (!dagAncestors.add(shaderInstance)) { + throw ResolveException( + "circular reference", + message = "resolve($track) already saw [${shaderInstance.shader.title}]" + ) + } + + try { + resolvedNodes.getOrPut(shaderInstance) { + shaderInstance.finalResolve(this@Resolver) + } + } finally { + dagAncestors.remove(shaderInstance) + } + }.also { + resolved = true + resolution = it + } + } finally { + breadcrumbs.removeLast() + + if (breadcrumbs.isEmpty() && warnings.isNotEmpty()) { + logger.error { warnings.joinToString("\n\n") } + } + } + } + } + } + + class ChannelEntry(val shaderInstance: LiveShaderInstance, val priority: Float, val level: Int) { + val typePriority: Int get() = if (shaderInstance.isFilter) 1 else 0 + + override fun toString(): String { + return "ChannelEntry(shaderInstance=${shaderInstance.shader.title}, priority=$priority, level=$level)" + } + } + + class ResolveException( + private val initialComplaint: String, + private val stack: List, + cause: Exception? = null + ) : Exception("$initialComplaint: ${stack.joinToString(" -> ")}", cause) { + constructor( + initialComplaint: String, + message: String + ) : this(initialComplaint, listOf(message)) + + fun chain(message: String): Throwable { + return ResolveException(initialComplaint, listOf(message) + stack, this) + } + } + + companion object { + private val logger = Logger("PortDiagram") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/ProgramLinker.kt b/src/commonMain/kotlin/baaahs/gl/patch/ProgramLinker.kt new file mode 100644 index 0000000000..8bb55c42ae --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/ProgramLinker.kt @@ -0,0 +1,165 @@ +package baaahs.gl.patch + +import baaahs.getBang +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslType +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.show.Shader +import baaahs.show.live.LinkedShaderInstance +import baaahs.show.live.LiveShaderInstance +import baaahs.show.mutable.ShowBuilder +import baaahs.util.CacheBuilder + +class ProgramLinker( + private val rootNode: ProgramNode, + private val warnings: List = emptyList() +) { + private val linkNodes: MutableMap = mutableMapOf() + private val dataSourceLinks = hashSetOf() + private val showBuilder: ShowBuilder = ShowBuilder() + private var curDepth = 0 + private val structs = hashSetOf() + + private val componentBuilder: CacheBuilder = CacheBuilder { + val instanceNode = linkNodes.getBang(it, "instance node") + with(instanceNode) { + programNode.buildComponent(id, index, this@ProgramLinker::findUpstreamComponent) + } + } + + private fun findUpstreamComponent(programNode: ProgramNode): Component = + componentBuilder.getBang(programNode, "program node") + + fun visit(programNode: ProgramNode) { + var newlyCreated = false + linkNodes.getOrPut(programNode) { + newlyCreated = true + LinkNode(programNode, programNode.getNodeId(this)) + }.also { + it.atDepth(curDepth) + + if (newlyCreated) { + curDepth++ + try { + programNode.traverse(this) + } finally { + curDepth-- + } + } + } + } + + fun visit(dataSourceLink: LiveShaderInstance.DataSourceLink) { + dataSourceLinks.add(dataSourceLink) + } + + init { visit(rootNode) } + + fun buildLinkedPatch(): LinkedPatch { + var pIndex = 0 + linkNodes.values + .sortedWith( + compareByDescending { it.maxObservedDepth } + .thenBy { it.id } + ) + .forEach { instanceNode -> + instanceNode.index = + if (instanceNode.programNode is LinkedShaderInstance) + pIndex++ else -1 + } + + val components = linkNodes.values + .sortedWith( + compareBy { it.index } + .thenBy { it.id } + ) + .map { componentBuilder[it.programNode] } + + return LinkedPatch(rootNode, components, dataSourceLinks, warnings) + } + + fun visit(openShader: OpenShader) { + // No-op for now. Previously we collected structs here. + } + + fun idFor(shader: Shader): String = showBuilder.idFor(shader) +} + +interface ProgramNode { + val title: String + val outputPort: OutputPort + + fun getNodeId(programLinker: ProgramLinker): String + + fun traverse(programLinker: ProgramLinker, depth: Int = 0) + + fun buildComponent(id: String, index: Int, findUpstreamComponent: (ProgramNode) -> Component): Component +} + +data class DefaultValueNode( + val contentType: ContentType +) : ProgramNode, Component { + override val title: String = "Default value for $contentType" + override val outputVar: String? = null + override val resultType: GlslType get() = contentType.glslType + override val outputPort: OutputPort = OutputPort(contentType) + + override fun getNodeId(programLinker: ProgramLinker): String = "n/a" + + override fun appendStructs(buf: StringBuilder) { + } + + override fun appendDeclarations(buf: StringBuilder) { + } + + override fun appendInvokeAndSet(buf: StringBuilder, prefix: String) { + } + + override fun getExpression(): String { + return contentType.glslType.defaultInitializer + } + + override fun traverse(programLinker: ProgramLinker, depth: Int) { + } + + override fun buildComponent(id: String, index: Int, findUpstreamComponent: (ProgramNode) -> Component): Component { + return this + } +} + +data class ConstNode(val glsl: String, override val outputPort: OutputPort) : ProgramNode, Component { + override val title: String get() = "const($glsl)" + override val outputVar: String get() = TODO("not implemented") + override val resultType: GlslType get() = outputPort.dataType + + override fun getNodeId(programLinker: ProgramLinker): String = "n/a" + + override fun traverse(programLinker: ProgramLinker, depth: Int) {} + + override fun buildComponent(id: String, index: Int, findUpstreamComponent: (ProgramNode) -> Component): Component { + return this + } + + override fun appendStructs(buf: StringBuilder) {} + override fun appendDeclarations(buf: StringBuilder) {} + override fun appendInvokeAndSet(buf: StringBuilder, prefix: String) {} + + override fun getExpression(): String { + return "($glsl)" + } + + override fun toString(): String = "ConstNode(glsl='$glsl', outputPort=$outputPort)" +} + +class LinkNode( + val programNode: ProgramNode, + val id: String, + var maxObservedDepth: Int = 0 +) { + var index: Int = -1 + + fun atDepth(depth: Int) { + if (depth > maxObservedDepth) maxObservedDepth = depth + } +} diff --git a/src/commonMain/kotlin/baaahs/gl/patch/ShaderComponent.kt b/src/commonMain/kotlin/baaahs/gl/patch/ShaderComponent.kt new file mode 100644 index 0000000000..d736710182 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/ShaderComponent.kt @@ -0,0 +1,100 @@ +package baaahs.gl.patch + +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslType +import baaahs.show.live.LinkedShaderInstance +import baaahs.util.Logger + +class ShaderComponent( + val id: String, + val index: Int, + private val shaderInstance: LinkedShaderInstance, + findUpstreamComponent: (ProgramNode) -> Component +) : Component { + override val title: String get() = shaderInstance.shader.title + private val prefix = "p$index" + private val namespace = GlslCode.Namespace(prefix + "_" + id) + private val portMap: Map + private val resultInReturnValue: Boolean + private val resultVar: String + + init { + val tmpPortMap = hashMapOf() + + shaderInstance.incomingLinks.forEach { (toPortId, fromLink) -> + val inputPort = shaderInstance.shader.findInputPort(toPortId) + + val upstreamComponent = findUpstreamComponent(fromLink) + var expression = upstreamComponent.getExpression() + val type = upstreamComponent.resultType + if (inputPort.type != type) { + expression = inputPort.contentType.adapt(expression, type) + } + tmpPortMap[toPortId] = expression + } + + var usesReturnValue = false + val outputPort = shaderInstance.shader.outputPort + if (outputPort.isReturnValue()) { + usesReturnValue = true + resultVar = namespace.internalQualify("result") + } else { + resultVar = namespace.qualify(outputPort.id) + tmpPortMap[outputPort.id] = resultVar + } + + portMap = tmpPortMap + resultInReturnValue = usesReturnValue + } + + override val outputVar: String = resultVar + override val resultType: GlslType + get() = shaderInstance.shader.outputPort.dataType + + private val resolvedPortMap get() = + portMap + mapOf(shaderInstance.shader.outputPort.id to outputVar) + + override fun appendStructs(buf: StringBuilder) { + val openShader = shaderInstance.shader + val portStructs = openShader.portStructs + openShader.glslCode.structs.forEach { struct -> + if (!portStructs.contains(struct.glslType)) { + buf.append(struct.glslType.toGlsl(namespace, portStructs.map { it.name }.toSet())) + } + } + } + + override fun appendDeclarations(buf: StringBuilder) { + val openShader = shaderInstance.shader + + buf.append("// Shader: ", openShader.title, "; namespace: ", prefix, "\n") + buf.append("// ", openShader.title, "\n") + + buf.append("\n") + with(openShader.outputPort) { + buf.append("${dataType.glslLiteral} $resultVar = ${contentType.initializer(dataType)};\n") + } + + buf.append(openShader.toGlsl(namespace, resolvedPortMap), "\n") + } + + override fun appendInvokeAndSet(buf: StringBuilder, prefix: String) { + buf.append(prefix, "// Invoke ", title, "\n") + val invocationGlsl = shaderInstance.shader.invocationGlsl(namespace, resultVar, resolvedPortMap) + buf.append(prefix, invocationGlsl, ";\n") + buf.append("\n") + } + + override fun getExpression(): String { + val outputPort = shaderInstance.shader.outputPort + return if (outputPort.isReturnValue()) { + resultVar + } else { + namespace.qualify(outputPort.id) + } + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/ShaderInstanceOptions.kt b/src/commonMain/kotlin/baaahs/gl/patch/ShaderInstanceOptions.kt new file mode 100644 index 0000000000..bac3d65a1c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/ShaderInstanceOptions.kt @@ -0,0 +1,182 @@ +package baaahs.gl.patch + +import baaahs.app.ui.editor.LinkOption +import baaahs.app.ui.editor.PortLinkOption +import baaahs.fixtures.DeviceType +import baaahs.gl.Toolchain +import baaahs.gl.glsl.LinkException +import baaahs.gl.openShader +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OpenShader +import baaahs.plugin.Plugins +import baaahs.show.ShaderChannel +import baaahs.show.live.OpenPatch +import baaahs.show.live.OpenShow +import baaahs.show.live.OpenShowVisitor +import baaahs.show.mutable.* +import baaahs.util.Logger + +class ChannelsInfo { + internal val shaderChannels: MutableMap> + internal val deviceTypes: Collection + + constructor( + parentShow: OpenShow? = null, + deviceTypes: Collection + ) { + val shaderChannels = shaderChannelsFromDeviceTypes(deviceTypes) + + parentShow?.let { + object : OpenShowVisitor() { + override fun visitPatch(openPatch: OpenPatch) { + super.visitPatch(openPatch) + + openPatch.shaderInstances.forEach { shaderInstance -> + val contentType = shaderInstance.shader.outputPort.contentType + shaderChannels.getOrPut(contentType, ::mutableSetOf) + .add(shaderInstance.shaderChannel.toMutable()) + } + } + }.visitShow(parentShow) + } + + this.shaderChannels = shaderChannels + this.deviceTypes = deviceTypes + } + + constructor( + parentMutableShow: MutableShow? = null, + deviceTypes: Collection, + toolchain: Toolchain + ) { + val shaderChannels = shaderChannelsFromDeviceTypes(deviceTypes) + + parentMutableShow?.accept(object : MutableShowVisitor { + override fun visit(mutableShaderInstance: MutableShaderInstance) { + try { + val shader = mutableShaderInstance.mutableShader.build() + val contentType = toolchain.openShader(shader).outputPort.contentType + shaderChannels.getOrPut(contentType, ::mutableSetOf) + .add(mutableShaderInstance.shaderChannel) + } catch (e: Exception) { + // It's okay, just ignore it. + } + } + }) + this.shaderChannels = shaderChannels + this.deviceTypes = deviceTypes + } + + private fun shaderChannelsFromDeviceTypes(deviceTypes: Collection): MutableMap> { + val shaderChannels = mutableMapOf>() + + val likelyPipelineArtifactTypes = deviceTypes.flatMap { it.likelyPipelines }.map { it.second } + likelyPipelineArtifactTypes.forEach { contentType -> + shaderChannels.getOrPut(contentType, ::mutableSetOf) + .add(ShaderChannel.Main.toMutable()) + } + return shaderChannels + } + + operator fun get(contentType: ContentType): Set? { + return shaderChannels[contentType] + } +} + +class ShaderInstanceOptions( + shader: OpenShader, + val shaderChannel: ShaderChannel = ShaderChannel.Main, + channelsInfo: ChannelsInfo, + defaultPorts: Map = emptyMap(), + currentLinks: Map, + private val plugins: Plugins +) { + val shaderChannels: List + val inputPortLinkOptions: Map> + + init { + fun suggestLinksFor(inputPort: InputPort): ArrayList { + val options = arrayListOf() + + val exactContentType = inputPort.contentType + val expandedContentTypes = plugins.suggestContentTypes(inputPort) - exactContentType + val contentTypes = listOfNotNull(exactContentType) + expandedContentTypes + + contentTypes.forEach { contentType -> + val defaultPort = defaultPorts[contentType] + options.add( + if (defaultPort != null) { + PortLinkOption( + defaultPort, + isExactContentType = contentType == exactContentType, + isLocalShaderOut = true, + isDefaultBinding = true + ) + } else { + PortLinkOption( + MutableShaderChannel(shaderChannel.id), + isExactContentType = contentType == exactContentType, + isDefaultBinding = true, + ) + } + ) + + channelsInfo[contentType]?.forEach { mutableShaderChannel -> + options.add( + PortLinkOption( + // TODO: this is dumb and broken. + mutableShaderChannel, + isShaderChannel = true, + isExactContentType = contentType == exactContentType + ) + ) + } + + if (contentType == shader.outputPort.contentType) { + options.add( + PortLinkOption( + shaderChannel.toMutable(), + createsFilter = true, + isShaderChannel = true, + isExactContentType = contentType == exactContentType + ) + ) + } + } + + if (inputPort.hasPluginRef()) { + try { + val dataSource = plugins.resolveDataSource(inputPort) + options.add(PortLinkOption(MutableDataSourcePort(dataSource), isPluginRef = true)) + } catch (e: LinkException) { + logger.warn(e) { "Incorrect plugin reference." } + } + } + + plugins.suggestDataSources(inputPort, contentTypes.toSet()).forEach { portLinkOption -> + options.add(portLinkOption) + } + return options + } + + val map = shader.inputPorts.associate { inputPort -> + val currentLink = currentLinks[inputPort.id] + val options = suggestLinksFor(inputPort) + + listOfNotNull(currentLink).map { PortLinkOption(it) } + + val alreadyAdded = mutableSetOf() + val sortedOptions = options + .sortedBy { 0f - it.priority } + .filter { alreadyAdded.add(it.getMutablePort()) } + + inputPort.id to sortedOptions + } + + this.shaderChannels = channelsInfo.shaderChannels.values.flatten().sortedBy { it.title } + this.inputPortLinkOptions = map + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/patch/UnresolvedPatch.kt b/src/commonMain/kotlin/baaahs/gl/patch/UnresolvedPatch.kt new file mode 100644 index 0000000000..aabd2b5d7e --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/UnresolvedPatch.kt @@ -0,0 +1,73 @@ +package baaahs.gl.patch + +import baaahs.show.Shader +import baaahs.show.Surfaces +import baaahs.show.mutable.MutableConstPort +import baaahs.show.mutable.MutablePatch +import baaahs.show.mutable.MutableShaderChannel +import baaahs.show.mutable.MutableShaderInstance +import baaahs.util.Logger + +class UnresolvedPatch(private val unresolvedShaderInstances: List) { + fun editShader(shader: Shader): UnresolvedShaderInstance { + // TODO: src == src is probably the wrong check here: + return unresolvedShaderInstances.find { it.mutableShader.src == shader.src } + ?: error("Couldn't find shader \"${shader.title}\"") + } + + fun editAll(callback: UnresolvedShaderInstance.() -> Unit): UnresolvedPatch { + unresolvedShaderInstances.forEach { it.callback() } + return this + } + + fun isAmbiguous() = unresolvedShaderInstances.any { it.isAmbiguous() } + + fun confirm(): MutablePatch { + if (isAmbiguous()) { + error("ambiguous! " + + unresolvedShaderInstances + .filter { it.isAmbiguous() } + .map { it.describeAmbiguity() } + ) + } + + // Create a shader instance editor for each shader. + val shaderInstances = unresolvedShaderInstances.associate { + it.mutableShader.build() to MutableShaderInstance( + it.mutableShader, + it.incomingLinksOptions.entries.associate { (port, fromPortOptions) -> + port.id to + (fromPortOptions.firstOrNull()?.getMutablePort() + ?: MutableConstPort(port.type.defaultInitializer, port.type)) + }.toMutableMap(), + MutableShaderChannel(it.shaderChannel.id), + it.priority + ) + } + + return MutablePatch(shaderInstances.values.toList(), Surfaces.AllSurfaces) + } + + fun dumpOptions(): UnresolvedPatch { + logger.info { "Unresolved Patch:" } + unresolvedShaderInstances.forEach { unresolvedShaderInstance -> + logger.info { "* ${unresolvedShaderInstance.mutableShader.title}" } + unresolvedShaderInstance.incomingLinksOptions.forEach { (inputPort, linkOptions) -> + logger.info { " ${inputPort.id} (${inputPort.contentType}) ->" } + linkOptions.forEach { linkOption -> + logger.info { " * ${linkOption.title}"} + } + } + } + return this + } + + fun acceptSuggestedLinkOptions(): UnresolvedPatch { + unresolvedShaderInstances.forEach { it.takeFirstIfAmbiguous() } + return this + } + + companion object { + private val logger = Logger() + } +} diff --git a/src/commonMain/kotlin/baaahs/gl/patch/UnresolvedShaderInstance.kt b/src/commonMain/kotlin/baaahs/gl/patch/UnresolvedShaderInstance.kt new file mode 100644 index 0000000000..e4a6cd3c3e --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/patch/UnresolvedShaderInstance.kt @@ -0,0 +1,61 @@ +package baaahs.gl.patch + +import baaahs.app.ui.editor.LinkOption +import baaahs.gl.shader.InputPort +import baaahs.show.ShaderChannel +import baaahs.show.mutable.MutableShader +import baaahs.show.mutable.MutableShaderChannel +import baaahs.unknown + +class UnresolvedShaderInstance( + val mutableShader: MutableShader, + val incomingLinksOptions: Map>, + var shaderChannel: ShaderChannel = ShaderChannel.Main, + var priority: Float +) { + fun isAmbiguous() = incomingLinksOptions.values.any { it.size > 1 } + + fun describeAmbiguity(): String { + return mutableShader.title + ": " + + incomingLinksOptions + .filter { (_, links) -> links.size > 1 } + .map { (portId, links) -> + "$portId->(${links.joinToString(",") { it.title }}" + } + } + + fun acceptSymbolicChannelLinks() { + incomingLinksOptions.values.forEach { options -> + val shaderChannelOptions = options.filter { it.getMutablePort() is MutableShaderChannel } + if (options.size > 1 && shaderChannelOptions.size == 1) { + options.clear() + options.add(shaderChannelOptions.first()) + } + } + } + + fun linkOptionsFor(portId: String): MutableList { + val key = incomingLinksOptions.keys.find { it.id == portId } + ?: throw error(unknown("port", portId, incomingLinksOptions.keys.map { it.id })) + return linkOptionsFor(key) + } + + fun linkOptionsFor(inputPort: InputPort) = + incomingLinksOptions.getValue(inputPort) + + override fun toString(): String { + return "UnresolvedShaderInstance(shader=${mutableShader.title})" + } + + fun takeFirstIfAmbiguous() { + if (isAmbiguous()) { + incomingLinksOptions.values.forEach { options -> + if (options.size > 1) { + val first = options.first() + options.clear() + options.add(first) + } + } + } + } +} diff --git a/src/commonMain/kotlin/baaahs/gl/preview/GadgetAdjuster.kt b/src/commonMain/kotlin/baaahs/gl/preview/GadgetAdjuster.kt new file mode 100644 index 0000000000..aefacca1bd --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/preview/GadgetAdjuster.kt @@ -0,0 +1,36 @@ +package baaahs.gl.preview + +import baaahs.gadgets.Slider +import baaahs.util.Clock + +class GadgetAdjuster(val gadgets: List, val clock: Clock) { + fun adjustGadgets() { + val now = clock.now() / 2 + val count = gadgets.size + + val activeGadget = now.rem(count).toInt() + val rem = now.rem(1f).toFloat() + val degree = (if (rem >= .5f) (1f - rem) else rem) * 2 + + var mask = 0x01 + gadgets.forEachIndexed() { index, gadgetData -> + val isHigh = (index and mask) != 0 + + val myDegree = if (activeGadget == index) { + if (isHigh) 1f - degree else degree + } else { + if (isHigh) 1f else 0f + } + + val gadget = gadgetData.gadget + if (gadget is Slider) { + val range = gadget.maxValue - gadget.minValue + val scaled = range * myDegree + gadget.minValue + gadget.value = scaled + + } + + mask = mask.shl(1) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/preview/PreviewShaderBuilder.kt b/src/commonMain/kotlin/baaahs/gl/preview/PreviewShaderBuilder.kt new file mode 100644 index 0000000000..d08dc61cd0 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/preview/PreviewShaderBuilder.kt @@ -0,0 +1,241 @@ +package baaahs.gl.preview + +import baaahs.BaseShowPlayer +import baaahs.Gadget +import baaahs.fixtures.* +import baaahs.getValue +import baaahs.gl.Toolchain +import baaahs.gl.data.Feed +import baaahs.gl.glsl.* +import baaahs.gl.openShader +import baaahs.gl.patch.ContentType +import baaahs.gl.patch.LinkedPatch +import baaahs.gl.render.RenderEngine +import baaahs.gl.shader.OpenShader +import baaahs.glsl.Shaders +import baaahs.model.ModelInfo +import baaahs.show.DataSource +import baaahs.show.DataSourceBuilder +import baaahs.show.Shader +import baaahs.show.mutable.MutableConstPort +import baaahs.show.mutable.MutablePatch +import baaahs.ui.IObservable +import baaahs.ui.Observable +import baaahs.util.Logger +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch + +interface ShaderBuilder : IObservable { + val shader: Shader + val state: State + val gadgets: List + val shaderAnalysis: ShaderAnalysis? + val openShader: OpenShader? + val linkedPatch: LinkedPatch? + val glslProgram: GlslProgram? + val glslErrors: List + + fun startBuilding() + fun startCompile(renderEngine: RenderEngine) + + /** Contrary to expectations, linking happens before compiling in this world. */ + enum class State { + Unbuilt, + Analyzing, + Linking, + Linked, + Compiling, + Success, + Errors + } + + class GadgetPreview( + val id: String, + val gadget: Gadget, + val controlledDataSource: DataSource? + ) +} + +class PreviewShaderBuilder( + override val shader: Shader, + private val toolchain: Toolchain, + private val modelInfo: ModelInfo, + private val coroutineScope: CoroutineScope = GlobalScope +) : Observable(), ShaderBuilder { + override var state: ShaderBuilder.State = + ShaderBuilder.State.Unbuilt + private set + + override var shaderAnalysis: ShaderAnalysis? = null + private set + override var openShader: OpenShader? = null + private set + var previewPatch: MutablePatch? = null + private set + override var linkedPatch: LinkedPatch? = null + private set + override var glslProgram: GlslProgram? = null + private set + + override val gadgets: List get() = mutableGadgets + private val mutableGadgets: MutableList = arrayListOf() + + override val glslErrors: List get() = + (shaderAnalysis?.errors ?: emptyList()) + compileErrors + + private var compileErrors: List = emptyList() + + val feeds = mutableListOf() + + private val previewShaders = PreviewShaders(toolchain) + + override fun startBuilding() { + state = ShaderBuilder.State.Analyzing + notifyChanged() + + coroutineScope.launch { + analyze() + } + } + + fun analyze() { + val shaderAnalysis = toolchain.analyze(shader) + this.shaderAnalysis = shaderAnalysis + openShader = toolchain.openShader(shaderAnalysis) + state = ShaderBuilder.State.Linking + notifyChanged() + + coroutineScope.launch { + link() + } + } + + fun link() { + try { + val openShader = openShader!! + val shaderType = openShader.shaderType + val shaders = shaderType.pickPreviewShaders(openShader, previewShaders) + val resultContentType = shaderType.previewResultContentType() + val defaultPorts = if (shaderType.injectUvCoordinateForPreview) { + mapOf(ContentType.UvCoordinate to MutableConstPort("gl_FragCoord", GlslType.Vec2)) + } else emptyMap() + + previewPatch = toolchain.autoWire(shaders, defaultPorts = defaultPorts) +// .dumpOptions() + .acceptSuggestedLinkOptions() + .confirm() + linkedPatch = previewPatch?.openForPreview(toolchain, resultContentType) + state = ShaderBuilder.State.Linked + } catch (e: GlslException) { + compileErrors = e.errors + state = ShaderBuilder.State.Errors + } catch (e: Exception) { + logger.warn(e) { "Failed to analyze shader." } + compileErrors = listOf(GlslError(e.message ?: e.toString())) + state = ShaderBuilder.State.Errors + } + notifyChanged() + } + + override fun startCompile(renderEngine: RenderEngine) { + state = ShaderBuilder.State.Compiling + notifyChanged() + + coroutineScope.launch { + val showPlayer = object : BaseShowPlayer(toolchain, modelInfo) { + override fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource?) { + mutableGadgets.add(ShaderBuilder.GadgetPreview(id, gadget, controlledDataSource)) + super.registerGadget(id, gadget, controlledDataSource) + } + } + + compile(renderEngine) { id, dataSource -> + dataSource.buildControl()?.let { + showPlayer.registerGadget(dataSource.suggestId(), it.gadget, dataSource) + } + + dataSource.createFeed(showPlayer, id) + .also { feeds.add(it) } + } + } + } + + private fun compile(renderEngine: RenderEngine, feedResolver: FeedResolver) { + try { + glslProgram = linkedPatch?.let { renderEngine.compile(it, feedResolver) } + state = ShaderBuilder.State.Success + } catch (e: GlslException) { + compileErrors = e.errors + state = ShaderBuilder.State.Errors + } catch (e: Exception) { + logger.warn(e) { "Failed to compile patch." } + compileErrors = listOf(GlslError(e.message ?: e.toString())) + state = ShaderBuilder.State.Errors + } + notifyChanged() + } + + fun release() { + feeds.forEach { feed -> feed.release() } + } + + fun finalize() { + release() + } + + companion object { + private val logger = Logger("ShaderEditor") + + val screenCoordsProjection: Shader = + Shader( + "Screen Coords", + /**language=glsl*/ + """ + uniform vec2 previewResolution; // @@baaahs.Core:PreviewResolution @type preview-resolution + + // @return uv-coordinate + vec2 main( + vec4 fragCoords // @@baaahs.Core:RasterCoordinate @type raster-coordinate + ) { + return fragCoords.xy / previewResolution; + } + """.trimIndent() + ) + } +} + +class PreviewShaders(val toolchain: Toolchain) { + private fun analyze(shader: Shader) = toolchain.openShader(shader) + + val screenCoordsProjection by lazy { analyze(PreviewShaderBuilder.screenCoordsProjection) } + val pixelUvIdentity by lazy { analyze(Shaders.pixelUvIdentity) } + val smpteColorBars by lazy { analyze(Shaders.smpteColorBars) } +} + +object ProjectionPreviewDevice: DeviceType { + override val id: String get() = "ProjectionPreview" + override val title: String get() = "Projection Preview" + override val dataSourceBuilders: List> get() = PixelArrayDevice.dataSourceBuilders + override val resultParams: List + get() = listOf( + ResultParam("Vertex Location", Vec2ResultType) + ) + override val resultContentType: ContentType + get() = ContentType.UvCoordinate + + override val likelyPipelines: List> + get() = emptyList() + + override val errorIndicatorShader: Shader + get() = Shader( + "Ω Guru Meditation Error Ω", + "" + ) + + fun getVertexLocations(resultViews: List): Vec2ResultType.Vec2ResultView { + return resultViews[0] as Vec2ResultType.Vec2ResultView + } + + override fun toString(): String = id +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/preview/ShaderPreview.kt b/src/commonMain/kotlin/baaahs/gl/preview/ShaderPreview.kt new file mode 100644 index 0000000000..546b507184 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/preview/ShaderPreview.kt @@ -0,0 +1,15 @@ +package baaahs.gl.preview + +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.render.RenderEngine + +interface ShaderPreview { + val renderEngine: RenderEngine + + fun start() + fun stop() + fun destroy() + fun setProgram(program: GlslProgram?) + fun render() + fun resize(width: Int, height: Int) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/preview/ShaderPreviewBootstrapper.kt b/src/commonMain/kotlin/baaahs/gl/preview/ShaderPreviewBootstrapper.kt new file mode 100644 index 0000000000..f5920d7ec6 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/preview/ShaderPreviewBootstrapper.kt @@ -0,0 +1,9 @@ +package baaahs.gl.preview + +expect interface ShaderPreviewBootstrapper + +expect object MovingHeadPreviewBootstrapper : ShaderPreviewBootstrapper + +expect object ProjectionPreviewBootstrapper : ShaderPreviewBootstrapper + +expect object QuadPreviewBootstrapper : ShaderPreviewBootstrapper diff --git a/src/commonMain/kotlin/baaahs/gl/render/ModelRenderEngine.kt b/src/commonMain/kotlin/baaahs/gl/render/ModelRenderEngine.kt new file mode 100644 index 0000000000..5d427ccc45 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/render/ModelRenderEngine.kt @@ -0,0 +1,260 @@ +package baaahs.gl.render + +import baaahs.fixtures.DeviceType +import baaahs.fixtures.DeviceTypeRenderPlan +import baaahs.fixtures.Fixture +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.data.PerPixelEngineFeed +import baaahs.gl.glsl.FeedResolver +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.LinkedPatch +import baaahs.model.ModelInfo +import baaahs.util.Logger +import com.danielgergely.kgl.GL_COLOR_BUFFER_BIT +import com.danielgergely.kgl.GL_DEPTH_BUFFER_BIT +import kotlin.math.max +import kotlin.math.min + +class ModelRenderEngine( + gl: GlContext, + private val modelInfo: ModelInfo, + private val deviceType: DeviceType, + private val minTextureWidth: Int = 16 +) : RenderEngine(gl) { + private val renderTargetsToAdd: MutableList = mutableListOf() + private val renderTargetsToRemove: MutableList = mutableListOf() + var pixelCount: Int = 0 + var nextPixelOffset: Int = 0 + var nextRectOffset: Int = 0 + + private val renderTargets: MutableList = mutableListOf() + private var renderPlan: DeviceTypeRenderPlan? = null + + private val resultBuffers = gl.runInContext { + deviceType.resultParams + .mapIndexed { index, deviceParam -> deviceParam.allocate(gl, index) } + } + + private val frameBuffer = gl.runInContext { + gl.createFrameBuffer() + .also { fb -> resultBuffers.forEach { it.attachTo(fb) } } + .also { it.check() } + } + + var arrangement: Arrangement + // Workaround for compile error on case-insensitive FS: + init { arrangement = gl.runInContext { Arrangement(0, emptyList()) } } + + fun addFixture(fixture: Fixture): FixtureRenderTarget { + if (fixture.deviceType != deviceType) { + throw IllegalArgumentException( + "This RenderEngine can't accept ${fixture.deviceType} devices, only $deviceType." + ) + } + + val rects = mapFixturePixelsToRects( + nextPixelOffset, + fbMaxPixWidth, + fixture + ) + val renderTarget = FixtureRenderTarget( + fixture, nextRectOffset, rects, modelInfo, fixture.pixelCount, nextPixelOffset, resultBuffers + ) + nextPixelOffset += fixture.pixelCount + nextRectOffset += rects.size + + renderTargetsToAdd.add(renderTarget) + return renderTarget + } + + fun removeRenderTarget(renderTarget: FixtureRenderTarget) { + renderTargetsToRemove.add(renderTarget) + } + + override fun compile(linkedPatch: LinkedPatch, feedResolver: FeedResolver): GlslProgram { + logger.info { "Compiling ${linkedPatch.rootNode.title} on ${deviceType::class.simpleName}"} + return super.compile(linkedPatch, feedResolver) + } + + override fun onBind(engineFeed: EngineFeed) { + engineFeed.maybeResizeAndPopulate(arrangement, renderTargets) + } + + private fun EngineFeed.maybeResizeAndPopulate(arrangement: Arrangement?, renderTargets: List) { + if (this is PerPixelEngineFeed) { + resize(arrangement?.safeWidth ?: 1, arrangement?.safeHeight ?: 1) { + renderTargets.forEach { renderTarget -> + setOnBuffer(renderTarget) + } + } + } + } + + override fun beforeFrame() { + incorporateNewFixtures() + } + + override fun bindResults() { + if (resultBuffers.isNotEmpty()) { + frameBuffer.bind() + } + } + + override fun render() { + gl.setViewport(0, 0, arrangement.pixWidth, arrangement.pixHeight) + gl.check { clearColor(.1f, .2f, 0f, 1f) } + gl.check { clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) } + + arrangement.render() + } + + override fun afterFrame() { + copyResultsToCpuBuffer() + } + + private fun copyResultsToCpuBuffer() { + resultBuffers.forEach { it.afterFrame(frameBuffer) } + } + + // This must be run from within a GL context. + private fun incorporateNewFixtures() { + if (renderTargetsToRemove.isNotEmpty()) { +// TODO("remove TBD") + } + + if (renderTargetsToAdd.isNotEmpty()) { + val newPixelCount = nextPixelOffset + + arrangement.release() + + renderTargets.addAll(renderTargetsToAdd) + arrangement = gl.runInContext { Arrangement(newPixelCount, renderTargetsToAdd) } + + renderTargetsToAdd.clear() + + pixelCount = newPixelCount + } + } + + fun setRenderPlan(renderPlan: DeviceTypeRenderPlan?) { + this.renderPlan = renderPlan + } + + override fun onRelease() { + arrangement.release() + resultBuffers.forEach { it.release() } + frameBuffer.release() + } + + val Int.bufWidth: Int get() = max(minTextureWidth, min(this, fbMaxPixWidth)) + val Int.bufHeight: Int get() = this / fbMaxPixWidth + 1 + val Int.bufSize: Int get() = bufWidth * bufHeight + + inner class Arrangement(val pixelCount: Int, addedRenderTargets: List) { + init { + logger.info { "Creating ${deviceType::class.simpleName} arrangement with $pixelCount pixels" } + } + + val pixWidth = pixelCount.bufWidth + val pixHeight = pixelCount.bufHeight + val safeWidth = max(pixWidth, 1.bufWidth) + val safeHeight = max(pixHeight, 1.bufHeight) + + init { + engineFeeds.values.forEach { engineFeed -> + engineFeed.maybeResizeAndPopulate(this, addedRenderTargets) + } + + resultBuffers.forEach { + it.resize(safeWidth, safeHeight) + } + } + + private val quad: Quad = + Quad(gl, renderTargets.flatMap { + it.rects.map { rect -> + // Remap from pixel coordinates to normalized device coordinates. + Quad.Rect( + -(rect.top / pixHeight * 2 - 1), + rect.left / pixWidth * 2 - 1, + -(rect.bottom / pixHeight * 2 - 1), + rect.right / pixWidth * 2 - 1 + ) + } + }) + + fun release() { + logger.debug { "Release arrangement with ${renderTargets.count()} fixtures and $pixelCount pixels" } + + quad.release() + } + + fun render() { + engineFeeds.values.forEach { it.aboutToRenderFrame(renderTargets) } + + renderPlan?.forEach { programRenderPlan -> + val program = programRenderPlan.program + if (program != null) { + gl.useProgram(program) + program.aboutToRenderFrame() + + quad.prepareToRender(program.vertexAttribLocation) { + programRenderPlan.renderTargets.forEach { renderTarget -> + renderTarget as FixtureRenderTarget + renderTarget.usingProgram(program) + program.aboutToRenderFixture(renderTarget) + quad.renderRects(renderTarget) + } + } + } else { + programRenderPlan.renderTargets.forEach { renderTarget -> + renderTarget as FixtureRenderTarget + renderTarget.usingProgram(null) + } + } + } + } + } + + companion object { + private val logger = Logger() + private const val fbMaxPixWidth = 1024 + + /** Resulting Rect is in pixel coordinates starting at (0,0) with Y increasing. */ + internal fun mapFixturePixelsToRects(nextPix: Int, pixWidth: Int, fixture: Fixture): List { + fun makeQuad(offsetPix: Int, widthPix: Int): Quad.Rect { + val xStartPixel = offsetPix % pixWidth + val yStartPixel = offsetPix / pixWidth + val xEndPixel = xStartPixel + widthPix + val yEndPixel = yStartPixel + 1 + return Quad.Rect( + yStartPixel.toFloat(), + xStartPixel.toFloat(), + yEndPixel.toFloat(), + xEndPixel.toFloat() + ) + } + + var nextPixelOffset = nextPix + var pixelsLeft = fixture.pixelCount + val rects = mutableListOf() + while (pixelsLeft > 0) { + val rowPixelOffset = nextPixelOffset % pixWidth + val rowPixelsLeft = pixWidth - rowPixelOffset + val rowPixelsTaken = min(pixelsLeft, rowPixelsLeft) + rects.add(makeQuad(nextPixelOffset, rowPixelsTaken)) + + nextPixelOffset += rowPixelsTaken + pixelsLeft -= rowPixelsTaken + } + return rects + } + + fun Quad.renderRects(renderTarget: FixtureRenderTarget) { + renderTarget.rects.indices.forEach { i -> + this.renderRect(renderTarget.rect0Index + i) + } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/render/PreviewRenderEngine.kt b/src/commonMain/kotlin/baaahs/gl/render/PreviewRenderEngine.kt new file mode 100644 index 0000000000..90cca6dd17 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/render/PreviewRenderEngine.kt @@ -0,0 +1,66 @@ +package baaahs.gl.render + +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.glsl.GlslProgram +import com.danielgergely.kgl.GL_COLOR_BUFFER_BIT +import com.danielgergely.kgl.GL_DEPTH_BUFFER_BIT + +class PreviewRenderEngine( + gl: GlContext, + private var width: Int, + private var height: Int +) : RenderEngine(gl) { + private val quad = gl.runInContext { Quad(gl, listOf(Quad.quadRect2x2)) } + private var program: GlslProgram? = null + + fun useProgram(glslProgram: GlslProgram?) { + this.program?.release() + + this.program = glslProgram + glslProgram?.setResolution() + } + + private fun GlslProgram.setResolution() { + setResolution(width.toFloat(), height.toFloat()) + } + + fun onResize(width: Int, height: Int) { + this.width = width + this.height = height + program?.setResolution() + } + + override fun onBind(engineFeed: EngineFeed) { + } + + override fun beforeFrame() { + } + + override fun bindResults() { + } + + public override fun render() { + val program = program ?: return + + gl.useProgram(program) + program.aboutToRenderFrame() + + gl.check { viewport(0, 0, width, height) } + gl.check { clearColor(1f, 0f, 0f, 1f) } + gl.check { clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) } + + program.aboutToRenderFrame() + quad.prepareToRender(program.vertexAttribLocation) { + quad.renderRect(0) + } + } + + override fun afterFrame() { + } + + override fun onRelease() { + program?.release() + quad.release() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/render/Quad.kt b/src/commonMain/kotlin/baaahs/gl/render/Quad.kt new file mode 100644 index 0000000000..f258cb5e87 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/render/Quad.kt @@ -0,0 +1,72 @@ +package baaahs.gl.render + +import baaahs.gl.GlContext +import com.danielgergely.kgl.* + +class Quad(private val gl: GlContext, rects: List) { + private val vertices = rects.flatMap { rect -> + listOf( + // First triangle: + rect.right, rect.top, + rect.left, rect.top, + rect.left, rect.bottom, + // Second triangle: + rect.left, rect.bottom, + rect.right, rect.bottom, + rect.right, rect.top + ) + }.toFloatArray() + + private var vao: VertexArrayObject = gl.check { createVertexArray() } + private var quadVertexBuffer: GlBuffer = gl.check { createBuffers(1)[0] } + private val sourceData = bufferOf(vertices) + private var released = false + + init { + gl.check { bindVertexArray(vao) } + gl.check { bindBuffer(GL_ARRAY_BUFFER, quadVertexBuffer) } + gl.check { bufferData(GL_ARRAY_BUFFER, sourceData, vertices.size, GL_STATIC_DRAW) } + gl.check { bindBuffer(GL_ARRAY_BUFFER, null) } + gl.check { bindVertexArray(null) } + } + + private fun bufferOf(floats: FloatArray): Buffer = FloatBuffer(floats) + + internal fun prepareToRender(vertexAttr: Int, fn: () -> Unit) { + gl.check { bindVertexArray(vao) } // <- required on lwjgl, not on webgl :-( + gl.check { bindBuffer(GL_ARRAY_BUFFER, quadVertexBuffer) } + gl.check { vertexAttribPointer(vertexAttr, 2, GL_FLOAT, false, 0, 0) } + gl.check { enableVertexAttribArray(vertexAttr) } + + fn() + + gl.check { disableVertexAttribArray(vertexAttr) } + gl.check { bindBuffer(GL_ARRAY_BUFFER, null) } + gl.check { bindVertexArray(null) } + } + + internal fun renderRect(rectIndex: Int) { + // Draw the triangles + gl.check { drawArrays(GL_TRIANGLES, rectIndex * 6, 6) } + } + + fun release() { + if (!released) { + gl.runInContext { + gl.check { deleteBuffer(quadVertexBuffer) } + gl.check { deleteVertexArray(vao) } + } + released = true + } + } + + fun finalize() { + release() + } + + data class Rect(val top: Float, val left: Float, val bottom: Float, val right: Float) + + companion object { + val quadRect2x2 = Rect(1f, -1f, -1f, 1f) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/render/RenderEngine.kt b/src/commonMain/kotlin/baaahs/gl/render/RenderEngine.kt new file mode 100644 index 0000000000..90be1085d1 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/render/RenderEngine.kt @@ -0,0 +1,104 @@ +package baaahs.gl.render + +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.data.Feed +import baaahs.gl.glsl.FeedResolver +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.LinkedPatch +import baaahs.show.DataSource +import baaahs.timeSync +import com.danielgergely.kgl.GL_COLOR_BUFFER_BIT +import com.danielgergely.kgl.GL_DEPTH_BUFFER_BIT +import kotlin.math.roundToInt + +abstract class RenderEngine(val gl: GlContext) { + internal val engineFeeds = mutableMapOf() + + val stats = Stats() + + fun cachedEngineFeed(feed: Feed): EngineFeed { + return engineFeeds.getOrPut(feed) { bindFeed(feed) } + } + + open fun compile(linkedPatch: LinkedPatch, feedResolver: FeedResolver): GlslProgram { + return GlslProgram(gl, linkedPatch) { id: String, dataSource: DataSource -> + val feed = feedResolver.openFeed(id, dataSource) + feed?.let { cachedEngineFeed(it)} + } + } + + private fun bindFeed(feed: Feed): EngineFeed = + feed.bind(gl).also { engineFeed -> onBind(engineFeed) } + + abstract fun onBind(engineFeed: EngineFeed) + + fun draw() { + gl.runInContext { + stats.prepareMs += timeSync { beforeFrame() } + bindResults() + stats.renderMs += timeSync { wrappedRender() } + stats.finishMs += timeSync { gl.check { finish() } } + stats.readPxMs += timeSync { afterFrame() } + } + + stats.frameCount++ + } + + /** This is run from within a GL context. */ + abstract fun beforeFrame() + + /** This is run from within a GL context. */ + abstract fun bindResults() + + private fun wrappedRender() { + gl.check { clearColor(0f, .5f, 0f, 1f) } + gl.check { clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) } + render() + } + + /** This is run from within a GL context. */ + protected abstract fun render() + + /** This is run from within a GL context. */ + abstract fun afterFrame() + + fun release() { + gl.runInContext { + onRelease() + engineFeeds.values.forEach { it.release() } + } + } + + /** This is run from within a GL context. */ + abstract fun onRelease() + + class Stats { + var prepareMs = 0; internal set + var renderMs = 0; internal set + var finishMs = 0; internal set + var readPxMs = 0; internal set + var frameCount = 0; internal set + + fun dump() { + val count = frameCount * 1f + fun Int.pretty() = ((this / count * 10).roundToInt() / 10f).toString() + println( + "Average time drawing $frameCount frames:\n" + + " prepareMs=${prepareMs.pretty()}ms/frame\n" + + " renderMs=${renderMs.pretty()}ms/frame\n" + + " finishMs=${finishMs.pretty()}ms/frame\n" + + " readPxMs=${readPxMs.pretty()}ms/frame\n" + + " totalMs=${(prepareMs + renderMs + finishMs + readPxMs).pretty()}ms/frame" + ) + } + + fun reset() { + prepareMs = 0 + renderMs = 0 + finishMs = 0 + readPxMs = 0 + frameCount = 0 + } + } +} diff --git a/src/commonMain/kotlin/baaahs/gl/render/RenderManager.kt b/src/commonMain/kotlin/baaahs/gl/render/RenderManager.kt new file mode 100644 index 0000000000..9d812af7ce --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/render/RenderManager.kt @@ -0,0 +1,53 @@ +package baaahs.gl.render + +import baaahs.fixtures.DeviceType +import baaahs.fixtures.Fixture +import baaahs.fixtures.RenderPlan +import baaahs.getBang +import baaahs.gl.GlContext +import baaahs.gl.glsl.FeedResolver +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.LinkedPatch +import baaahs.model.Model +import baaahs.util.Logger + +class RenderManager( + private val model: Model, + private val createContext: () -> GlContext +) { + private val renderEngines = model.allEntities.map { it.deviceType }.distinct() + .associateWith { deviceType -> ModelRenderEngine(createContext(), model, deviceType) } + + fun getEngineFor(deviceType: DeviceType): ModelRenderEngine = + renderEngines.getBang(deviceType, "render engine") + + fun draw() { + renderEngines.values.forEach { it.draw() } + } + + fun addFixture(fixture: Fixture): FixtureRenderTarget { + return getEngineFor(fixture.deviceType).addFixture(fixture) + } + + fun removeRenderTarget(renderTarget: FixtureRenderTarget) { + getEngineFor(renderTarget.fixture.deviceType).removeRenderTarget(renderTarget) + } + + fun compile(deviceType: DeviceType, linkedPatch: LinkedPatch, feedResolver: FeedResolver): GlslProgram { + return getEngineFor(deviceType).compile(linkedPatch, feedResolver) + } + + fun setRenderPlan(renderPlan: RenderPlan) { + renderEngines.forEach { (deviceType, engine) -> + val deviceTypeRenderPlan = renderPlan.deviceTypes[deviceType] + engine.setRenderPlan(deviceTypeRenderPlan) + if (deviceTypeRenderPlan == null) { + logger.debug { "No render plan for ${deviceType.title}" } + } + } + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/render/RenderTarget.kt b/src/commonMain/kotlin/baaahs/gl/render/RenderTarget.kt new file mode 100644 index 0000000000..d93c8f1d3c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/render/RenderTarget.kt @@ -0,0 +1,47 @@ +package baaahs.gl.render + +import baaahs.fixtures.Fixture +import baaahs.fixtures.ResultBuffer +import baaahs.gl.glsl.GlslProgram +import baaahs.model.ModelInfo + +interface RenderTarget { + val fixture: Fixture + val modelInfo: ModelInfo + val pixelCount: Int + + fun sendFrame() + fun release() +} + +class FixtureRenderTarget( + override val fixture: Fixture, + val rect0Index: Int, + val rects: List, // these are in pixels, (0,0) at top left + override val modelInfo: ModelInfo, + override val pixelCount: Int, + val pixel0Index: Int, + resultBuffers: List +) : RenderTarget { + var program: GlslProgram? = null + private set + + val resultViews = resultBuffers.map { it.getView(pixel0Index, pixelCount) } + + override fun sendFrame() { + fixture.transport.send(fixture, resultViews) + } + + override fun release() { + program = null + } + + /** Only call me from [RenderEngine]! */ + internal fun usingProgram(program: GlslProgram?) { + this.program = program + } + + override fun toString(): String { + return "RenderTarget(fixture=$fixture, rect0Index=$rect0Index, rects=$rects, pixel0Index=$pixel0Index)" + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/InputPort.kt b/src/commonMain/kotlin/baaahs/gl/shader/InputPort.kt new file mode 100644 index 0000000000..e724fffaa6 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/InputPort.kt @@ -0,0 +1,35 @@ +package baaahs.gl.shader + +import baaahs.englishize +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.plugin.PluginRef +import kotlinx.serialization.json.JsonObject + +data class InputPort( + val id: String, + val contentType: ContentType, + val type: GlslType = contentType.glslType, + val title: String = id.englishize(), + val pluginRef: PluginRef? = null, + val pluginConfig: JsonObject? = null, + val glslArgSite: GlslCode.GlslArgSite? = null, + val varName: String = id, + + /** There's no declaration for this input, e.g. gl_FragCoord. */ + val isImplicit: Boolean = false +) { + val isGlobal: Boolean get() = glslArgSite?.isGlobalInput ?: isImplicit + + fun hasPluginRef() = pluginRef != null + + fun suggestVarName(): String { + val postfix = pluginRef?.resourceName ?: type.glslLiteral + return id.decapitalize() + postfix.capitalize() + } + + fun dataTypeIs(glslType: GlslType): Boolean { + return type == glslType + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/OpenShader.kt b/src/commonMain/kotlin/baaahs/gl/shader/OpenShader.kt new file mode 100644 index 0000000000..4e1e3975ff --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/OpenShader.kt @@ -0,0 +1,113 @@ +package baaahs.gl.shader + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslCode.GlslFunction +import baaahs.gl.glsl.GlslCode.Namespace +import baaahs.gl.glsl.GlslError +import baaahs.gl.glsl.GlslType +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.shader.dialect.ShaderDialect +import baaahs.gl.shader.type.ShaderType +import baaahs.only +import baaahs.show.Shader +import baaahs.unknown +import kotlin.collections.set + +interface OpenShader : RefCounted { + val shader: Shader + val src: String get() = glslCode.src + val glslCode: GlslCode + val title: String + val entryPoint: GlslFunction + + val inputPorts: List + val outputPort: OutputPort + + val shaderType: ShaderType + val shaderDialect: ShaderDialect + + val errors: List + + fun findInputPortOrNull(portId: String): InputPort? = + inputPorts.find { it.id == portId } + + fun findInputPort(portId: String): InputPort = + findInputPortOrNull(portId) + ?: error(unknown("input port", portId, inputPorts)) + + val portStructs: List get() = + (inputPorts.map { it.contentType.glslType } + outputPort.contentType.glslType) + .filterIsInstance() + + fun toGlsl(namespace: Namespace, portMap: Map = emptyMap()): String + + fun invocationGlsl( + namespace: Namespace, + resultVar: String, + portMap: Map = emptyMap() + ): String + + class Base( + override val shader: Shader, + override val glslCode: GlslCode, + override val entryPoint: GlslFunction, + override val inputPorts: List, + override val outputPort: OutputPort, + override val shaderType: ShaderType, + override val shaderDialect: ShaderDialect, + override val errors: List = emptyList() + ) : OpenShader, RefCounted by RefCounter() { + + constructor(shaderAnalysis: ShaderAnalysis, shaderType: ShaderType) : this( + shaderAnalysis.shader, shaderAnalysis.glslCode, shaderAnalysis.entryPoint!!, + shaderAnalysis.inputPorts, shaderAnalysis.outputPorts.only(), shaderType, + shaderAnalysis.shaderDialect + ) + + override val title: String get() = shader.title + + override fun toGlsl(namespace: Namespace, portMap: Map): String { + val buf = StringBuilder() + + val nonUniformGlobalsMap = hashMapOf() + glslCode.globalVars.forEach { glslVar -> + if (!glslVar.isUniform && !glslVar.isVarying) { + nonUniformGlobalsMap[glslVar.name] = namespace.qualify(glslVar.name) + buf.append(glslVar.toGlsl(namespace, glslCode.symbolNames, emptyMap())) + buf.append("\n") + } + } + + val uniformGlobalsMap = portMap.filter { (id, _) -> + val inputPort = findInputPortOrNull(id) + + inputPort?.isGlobal == true || + (outputPort.id == id && !outputPort.isParam) + } + + val symbolsToNamespace = glslCode.symbolNames.toSet() - portStructs.map { it.name} + val symbolMap = uniformGlobalsMap + nonUniformGlobalsMap + glslCode.functions.forEach { glslFunction -> + buf.append(glslFunction.toGlsl(namespace, symbolsToNamespace, symbolMap)) + buf.append("\n") + } + + return buf.toString() + } + + override fun invocationGlsl(namespace: Namespace, resultVar: String, portMap: Map): String { + return entryPoint.invocationGlsl(namespace, resultVar, portMap) + } + + override fun equals(other: Any?): Boolean = + other != null + && other is Base + && this::class == other::class + && this.src == other.src + + override fun hashCode(): Int = + src.hashCode() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/OutputPort.kt b/src/commonMain/kotlin/baaahs/gl/shader/OutputPort.kt new file mode 100644 index 0000000000..0809d0d9ba --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/OutputPort.kt @@ -0,0 +1,21 @@ +package baaahs.gl.shader + +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType + +data class OutputPort( + val contentType: ContentType, + val description: String? = contentType.title, + val id: String = ReturnValue, + val dataType: GlslType = contentType.glslType, + val isParam: Boolean = false, + val lineNumber: Int? = null +) { + val argSiteName: String = if (isReturnValue()) "[return value]" else id + + fun isReturnValue() = id == ReturnValue + + companion object { + const val ReturnValue = "_" + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/dialect/GenericShaderDialect.kt b/src/commonMain/kotlin/baaahs/gl/shader/dialect/GenericShaderDialect.kt new file mode 100644 index 0000000000..b19ed2e371 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/dialect/GenericShaderDialect.kt @@ -0,0 +1,49 @@ +package baaahs.gl.shader.dialect + +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.listOf +import baaahs.plugin.Plugins + +object GenericShaderDialect : HintedShaderDialect("baaahs.Core:Generic") { + override val title: String = "Generic" + override val entryPointName: String = "main" + + override val implicitInputPorts = listOf( + InputPort("gl_FragCoord", ContentType.UvCoordinate, GlslType.Vec4, "Coordinates") + ) + + override val wellKnownInputPorts = listOf( + InputPort("resolution", ContentType.Resolution, GlslType.Vec2, "Resolution"), + InputPort("mouse", ContentType.Mouse, GlslType.Vec2, "Mouse"), + InputPort("time", ContentType.Time, GlslType.Float, "Time") + ) + + override fun matches(glslCode: GlslCode): MatchLevel { + return glslCode.findFunctionOrNull(entryPointName) + ?.let { MatchLevel.Poor } + ?: MatchLevel.NoMatch + } + + override fun additionalOutputPorts(glslCode: GlslCode, plugins: Plugins): List { + return if (glslCode.refersToGlobal("gl_FragColor")) { + OutputPort(ContentType.Color, id = "gl_FragColor", dataType = GlslType.Vec4, description = "Output Color") + .listOf() + } else emptyList() + } + + private val defaultContentTypes = mapOf( + GlslType.Vec4 to ContentType.Color + ) + + override fun adjustOutputPorts(outputPorts: List): List { + return outputPorts.map { + if (it.contentType == ContentType.Unknown) { + it.copy(contentType = defaultContentTypes[it.dataType] ?: ContentType.Unknown) + } else it + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/dialect/HintedShaderDialect.kt b/src/commonMain/kotlin/baaahs/gl/shader/dialect/HintedShaderDialect.kt new file mode 100644 index 0000000000..b0b3c67e13 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/dialect/HintedShaderDialect.kt @@ -0,0 +1,148 @@ +package baaahs.gl.shader.dialect + +import baaahs.getValue +import baaahs.gl.glsl.* +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.plugin.Plugins +import baaahs.show.Shader + +abstract class HintedShaderDialect(id: String) : ShaderDialect(id) { + open val implicitInputPorts: List = emptyList() + open val wellKnownInputPorts: List = emptyList() + open val defaultInputPortsByType: Map = emptyMap() + abstract val entryPointName: String + + override fun matches(glslCode: GlslCode): MatchLevel { + return glslCode.findFunctionOrNull(entryPointName) + ?.let { MatchLevel.Good } + ?: MatchLevel.NoMatch + } + + open fun additionalOutputPorts(glslCode: GlslCode, plugins: Plugins): List = emptyList() + + open fun adjustInputPorts(inputPorts: List): List = inputPorts + open fun adjustOutputPorts(outputPorts: List): List = outputPorts + + private val wellKnownInputPortsById by lazy { wellKnownInputPorts.associateBy { it.id } } + + override fun analyze(glslCode: GlslCode, plugins: Plugins, shader: Shader?): ShaderAnalysis { + val proFormaInputPorts: List = + implicitInputPorts.mapNotNull { glslCode.ifRefersTo(it)?.copy(isImplicit = true) } + + val entryPoint = findEntryPointOrNull(glslCode) + + val entryPointParams = + entryPoint?.params?.filter { it.isIn } ?: emptyList() + + val inputPorts = adjustInputPorts( + proFormaInputPorts + + (glslCode.globalInputVars + entryPointParams).map { + it.resolveInputPort(entryPoint, plugins) + } + + findMagicInputPorts(glslCode) + ) + + val entryPointReturn: OutputPort? = + if (entryPoint == null || entryPoint.returnType == GlslType.Void) null else { + val contentType = entryPoint.hint?.contentType("return", plugins) + ?: ContentType.unknown(entryPoint.returnType) + OutputPort(contentType, dataType = entryPoint.returnType) + } + + val outputPorts = adjustOutputPorts( + listOfNotNull(entryPointReturn) + + (entryPoint?.getParamOutputPorts(plugins) ?: emptyList()) + + additionalOutputPorts(glslCode, plugins) + ) + + return object : ShaderAnalysis { + override val glslCode = glslCode + override val shaderDialect = this@HintedShaderDialect + override val entryPoint = entryPoint + override val inputPorts = inputPorts + override val outputPorts = outputPorts + + override val isValid: Boolean = + entryPoint != null && + outputPorts.size == 1 + + override val errors: List = arrayListOf().apply { + operator fun GlslError.unaryPlus() = this@apply.add(this) + + if (entryPoint == null) + +GlslError("No entry point \"$entryPointName\" among ${glslCode.functionNames.sorted()}") + + if (outputPorts.isEmpty()) + +GlslError("No output port found.") + + if (outputPorts.size > 1) + +GlslError("Too many output ports found: " + + "${outputPorts.map { it.argSiteName }.sorted()}.", entryPoint?.lineNumber) + + inputPorts.forEach { inputPort -> + if (inputPort.contentType.isUnknown()) + +GlslError("Input port \"${inputPort.id}\" " + + "content type is \"${inputPort.contentType.id}\"", inputPort.glslArgSite?.lineNumber) + } + + outputPorts.forEach { outputPort -> + if (outputPort.contentType.isUnknown()) + +GlslError("Output port \"${outputPort.argSiteName}\" " + + "content type is \"${outputPort.contentType.id}\"", + outputPort.lineNumber ?: entryPoint?.lineNumber) + } + } + + override val shader: Shader = shader + ?: Shader( + findTitle(glslCode) ?: "Untitled Shader", + glslCode.src + ) + + } + } + + private fun GlslCode.GlslArgSite.resolveInputPort(entryPoint: GlslCode.GlslFunction?, plugins: Plugins) = + (wellKnownInputPortsById[name]?.copy(type = type, glslArgSite = this) + ?: defaultInputPortsByType[type] + ?.copy(id = name, varName = name, glslArgSite = this) + ?: toInputPort(plugins, entryPoint)) + + private fun GlslCode.ifRefersTo(inputPort: InputPort) = + if (refersToGlobal(inputPort.id)) inputPort else null + + open fun findTitle(glslCode: GlslCode): String? { + return Regex("^// (.*)").find(glslCode.src)?.groupValues?.get(1) + } + + fun findEntryPoint(glslCode: GlslCode): GlslCode.GlslFunction { + return glslCode.findFunction(entryPointName) + } + + fun findEntryPointOrNull(glslCode: GlslCode): GlslCode.GlslFunction? { + return glslCode.findFunctionOrNull(entryPointName) + } + + open fun findMagicInputPorts(glslCode: GlslCode): List = emptyList() +} + +fun GlslCode.GlslFunction.findContentType(param: GlslCode.GlslParam, plugins: Plugins): ContentType? = + param.hint?.contentType(plugins) + ?: findParamHint(param.name, plugins) + +fun GlslCode.GlslFunction.findParamHint(paramName: String, plugins: Plugins): ContentType? { + return hint?.tags("param") + ?.map { it.split(Regex("\\s+"), limit = 2) } + ?.filter { it.size == 2 && it.first() == paramName } + ?.map { plugins.resolveContentType(it.last()) } + ?.firstOrNull() +} + +fun GlslCode.GlslFunction.getParamOutputPorts(plugins: Plugins) = + params.filter { it.isOut && it.type != GlslType.Void } + .map { param -> + val contentType = findContentType(param, plugins) ?: ContentType.unknown(param.type) + OutputPort(contentType, dataType = param.type, id = param.name, isParam = true) + } diff --git a/src/commonMain/kotlin/baaahs/gl/shader/dialect/ShaderDialect.kt b/src/commonMain/kotlin/baaahs/gl/shader/dialect/ShaderDialect.kt new file mode 100644 index 0000000000..4954995baa --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/dialect/ShaderDialect.kt @@ -0,0 +1,22 @@ +package baaahs.gl.shader.dialect + +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.plugin.Plugins +import baaahs.show.Shader + +abstract class ShaderDialect(val id: String) { + + abstract val title: String + + abstract fun matches(glslCode: GlslCode): MatchLevel + + abstract fun analyze(glslCode: GlslCode, plugins: Plugins, shader: Shader? = null): ShaderAnalysis +} + +enum class MatchLevel { + NoMatch, + Poor, + Good, + Excellent +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/dialect/ShaderToyShaderDialect.kt b/src/commonMain/kotlin/baaahs/gl/shader/dialect/ShaderToyShaderDialect.kt new file mode 100644 index 0000000000..25c5cdb0e0 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/dialect/ShaderToyShaderDialect.kt @@ -0,0 +1,127 @@ +package baaahs.gl.shader.dialect + +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslError +import baaahs.gl.glsl.GlslType +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.plugin.Plugins +import baaahs.show.Shader + +object ShaderToyShaderDialect : HintedShaderDialect("baaahs.Core:ShaderToy") { + + override val entryPointName: String = "mainImage" + + override val wellKnownInputPorts = listOf( +// uniform vec3 iResolution; // viewport resolution (in pixels) +// uniform float iTime; // shader playback time (in seconds) +// uniform float iTimeDelta; // render time (in seconds) +// uniform int iFrame; // shader playback frame +// uniform float iChannelTime[4]; // channel playback time (in seconds) +// uniform vec3 iChannelResolution[4]; // channel resolution (in pixels) +// uniform vec4 iMouse; // mouse pixel coords. xy: current (if MLB down), zw: click +// uniform samplerXX iChannel0..3; // input channel. XX = 2D/Cube +// uniform vec4 iDate; // (year, month, day, time in seconds) +// uniform float iSampleRate; // sound sample rate (i.e., 44100) + + InputPort("iResolution", ContentType.Resolution, GlslType.Vec3, "Resolution"), + +// float iTime (or iGlobalTime ) : seconds(+fracs) since the shader (re)started. + InputPort("iTime", ContentType.Time, GlslType.Float, "Time"), +// InputPort("iGlobalTime", ContentType.Time, GlslType.Float, "Global Time"), + +// float iTimeDelta: duration since the previous frame. +/* + InputPort("iTimeDelta", GlslType.Float, "Time Delta"), + +// int iFrame: frames since the shader (re)started. + InputPort("iFrame", GlslType.Float, "Frame"), +// float iFrameRate: average FPS. + InputPort("iFrameRate", GlslType.Float, "Frame Rate"), + +// float iChannelTime[4] : current time in video or sound. + InputPort("iChannelTime", GlslType.from("float[4]"), "Channel Time"), +*/ + InputPort("iMouse", ContentType.Mouse, GlslType.Vec4, "Mouse"), + +// vec4 iDate: year-1, month-1, day, seconds(+fracs) since midnight. +/* + InputPort("iDate", GlslType.Vec4, "Date"), + InputPort("iSampleRate", GlslType.Float, "Sample Rate"), + InputPort("iChannelResolution", GlslType.from("vec3[4]"), "Channel Resolution"), +*/ + +// uniform samplerXX iChanneli; + InputPort("iChannel0", ContentType.Media, GlslType.Sampler2D, "Channel 0"), + InputPort("iChannel1", ContentType.Media, GlslType.Sampler2D, "Channel 1"), + InputPort("iChannel2", ContentType.Media, GlslType.Sampler2D, "Channel 2"), + InputPort("iChannel3", ContentType.Media, GlslType.Sampler2D, "Channel 3") + ).map { it.copy(isImplicit = true) } + + override val defaultInputPortsByType: Map = listOf( + InputPort("sm_FragCoord", ContentType.UvCoordinate, GlslType.Vec2, "U/V Coordinates") + ).associateBy { it.type } + + private val iPortsById = wellKnownInputPorts.associateBy { it.id } + + override fun adjustInputPorts(inputPorts: List): List { + return inputPorts.map { + if (it.type == GlslType.Vec2 && it.contentType.isUnknown()) { + it.copy(contentType = ContentType.UvCoordinate) + } else it + } + } + + override fun adjustOutputPorts(outputPorts: List): List { + return outputPorts.map { + if (it.dataType == GlslType.Vec4 && !it.isReturnValue() && it.contentType.isUnknown()) { + it.copy(contentType = ContentType.Color, description = "Output Color") + } else it + } + } + + override fun findMagicInputPorts(glslCode: GlslCode): List { + // ShaderToy shaders have a set of uniforms that are automatically declared; + // see if we're using any of them. + val iVars = glslCode.functions.flatMap { glslFunction -> + Regex("\\w+").findAll(glslFunction.fullText).map { it.value }.filter { word -> + iPortsById.containsKey(word) + }.toList() + }.toSet() + + return wellKnownInputPorts.filter { inputPort -> iVars.contains(inputPort.id) } + } + + override val title: String = "Paint" + + override fun analyze(glslCode: GlslCode, plugins: Plugins, shader: Shader?): ShaderAnalysis { + val shaderAnalysis = super.analyze(glslCode, plugins, shader) + val entryPoint = shaderAnalysis.entryPoint + return if (entryPoint == null) shaderAnalysis else { + val haveCoordInArg = entryPoint.params.any { it.isIn && it.type == GlslType.Vec2 } + val haveColorOutArg = entryPoint.params.any { it.isOut && it.type == GlslType.Vec4 } + + if (haveCoordInArg && haveColorOutArg) shaderAnalysis else { + WrappedShaderAnalysis( + shaderAnalysis, listOf( + GlslError( + "Missing arguments. " + + "Signature should be \"void mainImage(in vec2 fragCoord, out vec4 fragColor)\".", + row = entryPoint.lineNumber + ) + ) + ) + } + } + } + + class WrappedShaderAnalysis( + private val delegate: ShaderAnalysis, + override val errors: List + ) : ShaderAnalysis by delegate { + override val isValid: Boolean + get() = false + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/type/DistortionShader.kt b/src/commonMain/kotlin/baaahs/gl/shader/type/DistortionShader.kt new file mode 100644 index 0000000000..6a4212d73e --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/type/DistortionShader.kt @@ -0,0 +1,39 @@ +package baaahs.gl.shader.type + +import baaahs.app.ui.CommonIcons +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.preview.PreviewShaders +import baaahs.gl.preview.QuadPreviewBootstrapper +import baaahs.gl.preview.ShaderPreviewBootstrapper +import baaahs.gl.shader.OpenShader +import baaahs.ui.Icon + +object DistortionShader : ShaderType { + override val title: String = "Distortion" + + override val icon: Icon = CommonIcons.DistortionShader + + override val displayOrder: Float = 0.5f + + override val template: String = """ + uniform float scale; // @@Slider min=0.25 max=4 default=1 + + vec2 main(vec2 uvIn) { + return (uvIn - .5) / scale + .5; + } + """.trimIndent() + + override val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + get() = QuadPreviewBootstrapper + + override fun matches(shaderAnalysis: ShaderAnalysis): ShaderType.MatchLevel { + return if (shaderAnalysis.signatureMatches(ContentType.UvCoordinate, ContentType.UvCoordinate)) + ShaderType.MatchLevel.MatchAndFilter + else ShaderType.MatchLevel.NoMatch + } + + override fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List { + return listOf(previewShaders.screenCoordsProjection, openShader, previewShaders.smpteColorBars) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/type/FilterShader.kt b/src/commonMain/kotlin/baaahs/gl/shader/type/FilterShader.kt new file mode 100644 index 0000000000..75af287d56 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/type/FilterShader.kt @@ -0,0 +1,39 @@ +package baaahs.gl.shader.type + +import baaahs.app.ui.CommonIcons +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.preview.PreviewShaders +import baaahs.gl.preview.QuadPreviewBootstrapper +import baaahs.gl.preview.ShaderPreviewBootstrapper +import baaahs.gl.shader.OpenShader +import baaahs.ui.Icon + +object FilterShader : ShaderType { + override val title: String = "Filter" + + override val icon: Icon = CommonIcons.FilterShader + + override val displayOrder: Float = 1.5f + + override val template: String = """ + // @return color + // @param inColor color + vec4 main(vec4 inColor) { + return inColor; + } + """.trimIndent() + + override val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + get() = QuadPreviewBootstrapper + + override fun matches(shaderAnalysis: ShaderAnalysis): ShaderType.MatchLevel { + return if (shaderAnalysis.signatureMatches(ContentType.Color, ContentType.Color)) + ShaderType.MatchLevel.MatchAndFilter + else ShaderType.MatchLevel.NoMatch + } + + override fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List { + return listOf(previewShaders.screenCoordsProjection, openShader, previewShaders.smpteColorBars) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/type/MoverShader.kt b/src/commonMain/kotlin/baaahs/gl/shader/type/MoverShader.kt new file mode 100644 index 0000000000..c74082be4b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/type/MoverShader.kt @@ -0,0 +1,51 @@ +package baaahs.gl.shader.type + +import baaahs.app.ui.CommonIcons +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.preview.MovingHeadPreviewBootstrapper +import baaahs.gl.preview.PreviewShaders +import baaahs.gl.preview.ShaderPreviewBootstrapper +import baaahs.gl.shader.OpenShader +import baaahs.plugin.core.MovingHeadParams +import baaahs.ui.Icon + +object MoverShader : ShaderType { + override val title: String = "Mover" + + override val icon: Icon = CommonIcons.None + + override val displayOrder: Float = 5f + + /**language=glsl*/ + override val template: String = """ + struct MovingHeadParams { + float pan; + float tilt; + float colorWheel; + float dimmer; + }; + + // @param params moving-head-params + void main(out MovingHeadParams params) { + params.pan = 0.; + params.tilt = .5; + params.colorWheel = 0.; + } + """.trimIndent() + + override val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + get() = MovingHeadPreviewBootstrapper + + override fun matches(shaderAnalysis: ShaderAnalysis): ShaderType.MatchLevel { + return if (shaderAnalysis.outputIs(MovingHeadParams.contentType)) + ShaderType.MatchLevel.Match + else ShaderType.MatchLevel.NoMatch + } + + override fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List { + return listOf(openShader) + } + + override fun previewResultContentType(): ContentType = MovingHeadParams.contentType +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/type/PaintShader.kt b/src/commonMain/kotlin/baaahs/gl/shader/type/PaintShader.kt new file mode 100644 index 0000000000..e6a8380ee0 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/type/PaintShader.kt @@ -0,0 +1,39 @@ +package baaahs.gl.shader.type + +import baaahs.app.ui.CommonIcons +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.preview.PreviewShaders +import baaahs.gl.preview.QuadPreviewBootstrapper +import baaahs.gl.preview.ShaderPreviewBootstrapper +import baaahs.gl.shader.OpenShader +import baaahs.ui.Icon + +object PaintShader : ShaderType { + override val title: String = "Paint" + + override val icon: Icon = CommonIcons.PaintShader + + override val displayOrder: Float = 1f + + override val template: String = """ + // @return color + // @param uvIn uv-coordinate + vec4 main(vec2 uvIn) { + return vec4(uvIn, 0., 1.); + } + """.trimIndent() + + override val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + get() = QuadPreviewBootstrapper + + override fun matches(shaderAnalysis: ShaderAnalysis): ShaderType.MatchLevel { + return if (shaderAnalysis.outputIs(ContentType.Color)) + ShaderType.MatchLevel.Match + else ShaderType.MatchLevel.NoMatch + } + + override fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List { + return listOf(previewShaders.screenCoordsProjection, openShader) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/type/ProjectionShader.kt b/src/commonMain/kotlin/baaahs/gl/shader/type/ProjectionShader.kt new file mode 100644 index 0000000000..ce0c28e5ad --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/type/ProjectionShader.kt @@ -0,0 +1,49 @@ +package baaahs.gl.shader.type + +import baaahs.app.ui.CommonIcons +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.preview.PreviewShaders +import baaahs.gl.preview.ProjectionPreviewBootstrapper +import baaahs.gl.preview.ShaderPreviewBootstrapper +import baaahs.gl.shader.OpenShader +import baaahs.ui.Icon + +object ProjectionShader : ShaderType { + override val title: String = "Projection" + + override val icon: Icon = CommonIcons.ProjectionShader + + override val displayOrder: Float = 0f + + override val template: String = """ + struct ModelInfo { + vec3 center; + vec3 extents; + }; + uniform ModelInfo modelInfo; + + // @return uv-coordinate + // @param pixelLocation xyz-coordinate + vec2 main(vec3 pixelLocation) { + vec3 start = modelInfo.center - modelInfo.extents / 2.; + vec3 rel = (pixelLocation - start) / modelInfo.extents; + return rel.xy; + } + """.trimIndent() + + override val injectUvCoordinateForPreview: Boolean get() = false + + override val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + get() = ProjectionPreviewBootstrapper + + override fun matches(shaderAnalysis: ShaderAnalysis): ShaderType.MatchLevel { + return if (shaderAnalysis.signatureMatches(ContentType.XyzCoordinate, ContentType.UvCoordinate)) + ShaderType.MatchLevel.Match + else ShaderType.MatchLevel.NoMatch + } + + override fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List { + return listOf(openShader, previewShaders.pixelUvIdentity) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/gl/shader/type/ShaderType.kt b/src/commonMain/kotlin/baaahs/gl/shader/type/ShaderType.kt new file mode 100644 index 0000000000..578312df82 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/gl/shader/type/ShaderType.kt @@ -0,0 +1,61 @@ +package baaahs.gl.shader.type + +import baaahs.app.ui.CommonIcons +import baaahs.gl.glsl.ShaderAnalysis +import baaahs.gl.patch.ContentType +import baaahs.gl.preview.PreviewShaders +import baaahs.gl.preview.QuadPreviewBootstrapper +import baaahs.gl.preview.ShaderPreviewBootstrapper +import baaahs.gl.shader.OpenShader +import baaahs.show.mutable.MutableShader +import baaahs.ui.Icon + +interface ShaderType { + val title: String + val icon: Icon + val displayOrder: Float + val template: String + val injectUvCoordinateForPreview: Boolean get() = true + val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + + fun newShaderFromTemplate(): MutableShader { + return MutableShader("Untitled $title Shader", template) + } + + fun matches(shaderAnalysis: ShaderAnalysis): MatchLevel + + fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List + + fun previewResultContentType(): ContentType = ContentType.Color + + + fun ShaderAnalysis.anyInputIs(contentType: ContentType) = + inputPorts.any { it.contentType == contentType } + + fun ShaderAnalysis.outputIs(contentType: ContentType) = + outputPorts.firstOrNull()?.contentType == contentType + + fun ShaderAnalysis.signatureMatches(inputContentType: ContentType, outputContentType: ContentType) = + outputIs(outputContentType) && anyInputIs(inputContentType) + + object Unknown : ShaderType { + override val title: String get() = "Unknown" + override val icon: Icon get() = CommonIcons.UnknownShader + override val displayOrder: Float = Float.MAX_VALUE + override val template: String get() = error("n/a") + override val shaderPreviewBootstrapper: ShaderPreviewBootstrapper + get() = QuadPreviewBootstrapper // TODO: Something else, what? + + override fun matches(shaderAnalysis: ShaderAnalysis): MatchLevel = MatchLevel.NoMatch + + override fun pickPreviewShaders(openShader: OpenShader, previewShaders: PreviewShaders): List { + return listOf(openShader) + } + } + + enum class MatchLevel { + NoMatch, + Match, + MatchAndFilter // This is dumb, figure out something better. + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/glsl/GuruMeditationError.kt b/src/commonMain/kotlin/baaahs/glsl/GuruMeditationError.kt new file mode 100644 index 0000000000..c6f037eb6b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/glsl/GuruMeditationError.kt @@ -0,0 +1,47 @@ +package baaahs.glsl + +import baaahs.BaseShowPlayer +import baaahs.Gadget +import baaahs.fixtures.DeviceType +import baaahs.gl.RootToolchain +import baaahs.gl.Toolchain +import baaahs.gl.autoWire +import baaahs.gl.patch.LinkedPatch +import baaahs.gl.patch.PatchResolver +import baaahs.model.ModelInfo +import baaahs.only +import baaahs.plugin.Plugins +import baaahs.show.DataSource +import baaahs.show.ShaderChannel +import baaahs.show.live.ShowOpener +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.ShowBuilder + +class GuruMeditationError(deviceType: DeviceType) { + private val shader = deviceType.errorIndicatorShader + val linkedPatch: LinkedPatch + + init { + val plugins = Plugins.safe(Plugins.dummyContext) + val toolchain = RootToolchain(plugins) + val showBuilder = ShowBuilder() + val mutablePatch = toolchain.autoWire(shader) + .acceptSuggestedLinkOptions() + .confirm() + val show = MutableShow("error").apply { + addPatch(mutablePatch) + }.build(showBuilder) + + val showPlayer = FakeShowPlayer(toolchain) + val openShow = ShowOpener(toolchain, show, showPlayer).openShow() + val openPatch = openShow.patches.only("patch") + linkedPatch = PatchResolver.buildPortDiagram(openPatch) + .resolvePatch(ShaderChannel.Main, deviceType.resultContentType, openShow.allDataSources) + ?: error("Couldn't build guru meditation error patch.") + } +} + +private class FakeShowPlayer(toolchain: Toolchain) : BaseShowPlayer(toolchain, ModelInfo.Empty) { + override fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource?): Unit = error("not implemented") + override fun useGadget(id: String): T = error("not implemented") +} diff --git a/src/commonMain/kotlin/baaahs/glsl/Shaders.kt b/src/commonMain/kotlin/baaahs/glsl/Shaders.kt new file mode 100644 index 0000000000..86e657d171 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/glsl/Shaders.kt @@ -0,0 +1,196 @@ +package baaahs.glsl + +import baaahs.show.Shader + +object Shaders { + val smpteColorBars = Shader( + "SMTPE Color Bars", + /**language=glsl*/ + """ + // Robby Kraft + // from https://www.shadertoy.com/view/XlGXRz + + void mainImage( out vec4 fragColor, in vec2 fragCoord ) + { + float br = 0.75; // a less popular SMPTE version uses 1.0 + + vec2 st = fragCoord.xy/iResolution.xy; + + bool sev1 = bool( step(st.x, 1.0/7.0) ); + bool sev2 = bool( step(st.x, 2.0/7.0) ); + bool sev3 = bool( step(st.x, 3.0/7.0) ); + bool sev4 = bool( step(st.x, 4.0/7.0) ); + bool sev5 = bool( step(st.x, 5.0/7.0) ); + bool sev6 = bool( step(st.x, 6.0/7.0) ); + + bool row1 = !bool( step(st.y, 0.3333) ); + bool row2 = !bool( step(st.y, 0.25) ); + + ///////////////////////////////////////// + // R : 0.75 1.0 1.0 1.0 + // G : 0.75 1.0 1.0 1.0 + // B : 0.75 1.0 1.0 1.0 + ///////////////////////////////////////// + float top_red = br * float((sev6 && !sev4) || sev2 ); + float top_green = br * float(sev4); + float top_blue = br * float(!sev6 || (sev5 && !sev4) || (sev3 && !sev2) || sev1 ); + + ///////////////////////////////////////// + // R : 1.0 0.75 + // G : 1.0 0.75 + // B : 1.0 1.0 1.0 0.75 + ///////////////////////////////////////// + float mid_red = 0.075*float( (sev6 && !sev5)||(sev4 && !sev3)||(sev2 && !sev1) ) + br * float(!sev6 || (sev3 && !sev2) ); + float mid_green = 0.075*float( (sev6 && !sev5)||(sev4 && !sev3)||(sev2 && !sev1) ) + br * float(!sev6 || (sev5 && !sev4) ); + float mid_blue = 0.075*float( (sev6 && !sev5)||(sev4 && !sev3)||(sev2 && !sev1) ) + br * float(!sev6 || (sev5 && !sev4) || (sev3 && !sev2) || sev1); + + /////////////////////// + // R: 0.00 1.0 0.22 + // G: 0.24 1.0 0.00 + // B: 0.35 1.0 0.5 + /////////////////////// + bool fourth1 = bool( step(st.x, 1.0*(5.0/7.0)/4.0 )); + bool fourth2 = bool( step(st.x, 2.0*(5.0/7.0)/4.0 )); + bool fourth3 = bool( step(st.x, 3.0*(5.0/7.0)/4.0 )); + bool fourth4 = bool( step(st.x, (5.0/7.0) )); + + bool littleThird1 = bool( step(st.x, 5.0/7.0 + 1.0/7.0/3.0) ); + bool littleThird2 = bool( step(st.x, 5.0/7.0 + 1.0/7.0/3.0*2.0) ); + bool littleThird3 = bool( step(st.x, 5.0/7.0 + 1.0/7.0/3.0*3.0) ); + + float bottom_red = float(fourth2 && !fourth1) + 0.22*float(fourth3 && !fourth2) + 0.075*float(fourth4 && !fourth3) + 0.075*float(littleThird2 && !littleThird1) + 0.15*float(littleThird3 && !littleThird2) + 0.075*float(!sev6); + float bottom_green = 0.24*float(fourth1) + float(fourth2 && !fourth1) + 0.075*float(fourth4 && !fourth3) + 0.075*float(littleThird2 && !littleThird1) + 0.15*float(littleThird3 && !littleThird2) + 0.075*float(!sev6); + float bottom_blue = 0.35*float(fourth1) + float(fourth2 && !fourth1) + 0.5*float(fourth3 && !fourth2) + 0.075*float(fourth4 && !fourth3) + 0.075*float(littleThird2 && !littleThird1) + 0.15*float(littleThird3 && !littleThird2) + 0.075*float(!sev6); + + fragColor = vec4(top_red*float(row1) + mid_red*float(row2 && !row1) + bottom_red*float(!row2), + top_green*float(row1) + mid_green*float(row2 && !row1) + bottom_green*float(!row2), + top_blue*float(row1) + mid_blue*float(row2 && !row1) + bottom_blue*float(!row2),1.); + } + """.trimIndent() + ) + + val red = Shader( + "Solid Red", + /**language=glsl*/ + """ + void mainImage(out vec4 fragColor, in vec2 fragCoord) { + fragColor = (1., 0., 0., 1.); + } + """.trimIndent() + ) + + val blue = Shader( + "Solid Blue", + /**language=glsl*/ + """ + void mainImage(out vec4 fragColor, in vec2 fragCoord) { + fragColor = (0., 0., 1., 1.); + } + """.trimIndent() + ) + + val checkerboard = Shader( + "Checkerboard", + /**language=glsl*/ + """ + uniform float checkerboardSize = 10.0; // @@Slider min=.001 max=1 default=.1 + + void mainImage(out vec4 fragColor, in vec2 fragCoord) { + vec2 pos = floor(fragCoord / checkerboardSize); + vec3 patternMask = vec3(mod(pos.x + mod(pos.y, 2.0), 2.0)); + fragColor = vec4(patternMask.xyz, 1.); + } + """.trimIndent() + ) + + val ripple = Shader( + "Ripple", + /**language=glsl*/ + """ + uniform float time; + uniform float rippleAmount; // @type float + + // @return uv-coordinate + // @param uvIn uv-coordinate + vec2 main(vec2 uvIn) { + vec2 p = -1.0 + 2.0 * uvIn; + float len = length(p); + return uvIn + (p/len)*sin(len*12.0-time*4.0)*0.1 * rippleAmount; + } + """.trimIndent() + ) + + val flipY = Shader( + "Flip Y", + /**language=glsl*/ + """ + // Flip Y + + // @return uv-coordinate + // @param uvIn uv-coordinate + vec2 main(vec2 uvIn) { + return vec2(uvIn.x, 1. - uvIn.y); + } + """.trimIndent() + ) + + val cylindricalProjection = Shader( + "Cylindrical Projection", + /**language=glsl*/ + """ + // Cylindrical Projection + // !SparkleMotion:internal + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + uniform ModelInfo modelInfo; + + const float PI = 3.141592654; + + // @return uv-coordinate + // @param pixelLocation xyz-coordinate + vec2 main(vec3 pixelLocation) { + vec3 pixelOffset = pixelLocation - modelInfo.center; + vec3 normalDelta = normalize(pixelOffset); + float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π] + if (theta < 0.0) theta += (2.0f * PI); // theta in range [0,2π) + float u = theta / (2.0f * PI) * 2.; // u in range [0,1) + float v = (pixelOffset.y + modelInfo.extents.y / 2.0f) / modelInfo.extents.y; + return vec2(u, v); + } + """.trimIndent() + ) + + val xyProjection = Shader( + "XY Projection", + /**language=glsl*/ + """ + // XY Projection + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + uniform ModelInfo modelInfo; + + // @return uv-coordinate + // @param pixelLocation xyz-coordinate + vec2 main(vec3 pixelLocation) { + vec3 pixelOffset = (pixelLocation - modelInfo.center) / modelInfo.extents + .5; + return vec2(1.-pixelOffset.x, pixelOffset.y); + } + """.trimIndent() + ) + + val pixelUvIdentity = Shader( + "Pixel U/V Identity", + /**language=glsl*/ + """ + void mainImage(out vec4 fragColor, in vec2 fragCoord) { + fragColor = vec4(fragCoord.x, fragCoord.y, 0., 1.); + } + """.trimIndent() + ) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/glsl/SurfacePixelStrategy.kt b/src/commonMain/kotlin/baaahs/glsl/SurfacePixelStrategy.kt new file mode 100644 index 0000000000..2f07531396 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/glsl/SurfacePixelStrategy.kt @@ -0,0 +1,85 @@ +package baaahs.glsl + +import baaahs.geom.Vector3F +import baaahs.model.Model +import baaahs.model.ModelInfo +import kotlin.random.Random + +interface SurfacePixelStrategy { + fun forFixture(pixelCount: Int, surface: Model.Surface?, model: ModelInfo): List { + return if (surface != null) { + forKnownSurface(pixelCount, surface, model) + } else { + forUnknownSurface(pixelCount, model) + } + } + + fun forKnownSurface(pixelCount: Int, surface: Model.Surface, model: ModelInfo): List + fun forUnknownSurface(pixelCount: Int, modelInfo: ModelInfo): List +} + +class RandomSurfacePixelStrategy(private val random: Random = Random) : SurfacePixelStrategy { + override fun forKnownSurface(pixelCount: Int, surface: Model.Surface, model: ModelInfo): List { + // Randomly pick locations within the surface. + val surfaceVertices = surface.allVertices().toList() + var lastPixelLocation = surfaceVertices.random() + return (0 until pixelCount).map { + lastPixelLocation = (lastPixelLocation + surfaceVertices.random(random)) / 2f + lastPixelLocation + } + } + + override fun forUnknownSurface(pixelCount: Int, modelInfo: ModelInfo): List { + // Randomly pick locations. TODO: this should be based on model extents. + val min = Vector3F(0f, 0f, 0f) + val max = Vector3F(100f, 100f, 100f) + val scale = max - min + + return (0 until pixelCount).map { + Vector3F(random.nextFloat(), random.nextFloat(), random.nextFloat()) * scale + min + } + } +} + +class LinearSurfacePixelStrategy(private val random: Random = Random) : SurfacePixelStrategy { + override fun forKnownSurface(pixelCount: Int, surface: Model.Surface, model: ModelInfo): List { + // Generate pixel locations along a line from one vertex to the surface's center. + val surfaceVertices = surface.allVertices() + if (surfaceVertices.isEmpty()) return forUnknownSurface(pixelCount, model) + + val surfaceCenter = surfaceVertices.average() + val vertex1 = surfaceVertices.first() + + return interpolate(vertex1, surfaceCenter, pixelCount) + } + + override fun forUnknownSurface(pixelCount: Int, modelInfo: ModelInfo): List { + val min = modelInfo.boundsMin + val max = modelInfo.boundsMax + + val scale = max - min + val vertex1 = Vector3F(random.nextFloat(), random.nextFloat(), random.nextFloat()) * scale + min + val vertex2 = Vector3F(random.nextFloat(), random.nextFloat(), random.nextFloat()) * scale + min + + return interpolate(vertex1, vertex2, pixelCount) + } + + private fun Collection.average(): Vector3F { + if (isEmpty()) return Vector3F.origin + + return reduce { acc, vector3F -> acc + vector3F } / size.toFloat() + } + + private fun interpolate(from: Vector3F, to: Vector3F, steps: Int): List { + return if (steps == 1) { + listOf(from) + } else { + (0 until steps).map { interpolate(from, to, it / (steps - 1f)) } + } + } + + private fun interpolate(from: Vector3F, to: Vector3F, degree: Float): Vector3F { + val delta = to - from + return from + delta * degree + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/glsl/Uniform.kt b/src/commonMain/kotlin/baaahs/glsl/Uniform.kt new file mode 100644 index 0000000000..3b5bd98612 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/glsl/Uniform.kt @@ -0,0 +1,28 @@ +package baaahs.glsl + +import baaahs.geom.Vector3F +import baaahs.gl.GlContext +import baaahs.gl.glsl.GlslProgram +import com.danielgergely.kgl.Kgl +import com.danielgergely.kgl.UniformLocation + +class Uniform internal constructor( + private val glslProgram: GlslProgram, + private val uniformLocation: UniformLocation +) { + fun set(x: Int) = withProgram { uniform1i(uniformLocation, x) } + fun set(x: Int, y: Int) = withProgram { uniform2i(uniformLocation, x, y) } + fun set(x: Int, y: Int, z: Int) = withProgram { uniform3i(uniformLocation, x, y, z) } + fun set(x: Float) = withProgram { uniform1f(uniformLocation, x) } + fun set(x: Float, y: Float) = withProgram { uniform2f(uniformLocation, x, y) } + fun set(x: Float, y: Float, z: Float) = withProgram { uniform3f(uniformLocation, x, y, z) } + fun set(x: Float, y: Float, z: Float, w: Float) = withProgram { uniform4f(uniformLocation, x, y, z, w) } + + fun set(vector3F: Vector3F) = set(vector3F.x, vector3F.y, vector3F.z) + + fun set(textureUnit: GlContext.TextureUnit) = textureUnit.setUniform(this) + + private fun withProgram(fn: Kgl.() -> T): T { + return glslProgram.withProgram(fn) + } +} diff --git a/src/commonMain/kotlin/baaahs/imaging/Imaging.kt b/src/commonMain/kotlin/baaahs/imaging/Imaging.kt new file mode 100644 index 0000000000..cfa42eaa7c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/imaging/Imaging.kt @@ -0,0 +1,49 @@ +package baaahs.imaging + +import baaahs.MediaDevices + +public interface Image { + val width: Int + val height: Int + + fun toBitmap(): Bitmap +} + +public interface Bitmap { + val width: Int + val height: Int + + fun drawImage(image: Image) + + fun drawImage( + image: Image, + sX: Int, sY: Int, sWidth: Int, sHeight: Int, + dX: Int, dY: Int, dWidth: Int, dHeight: Int + ) + + fun copyFrom(other: Bitmap) + + fun lighten(other: Bitmap) + + fun darken(other: Bitmap) + + fun subtract(other: Bitmap) + + fun withData( + region: MediaDevices.Region = MediaDevices.Region.containing(this), + fn: (data: UByteClampedArray) -> Boolean + ) + + fun asImage(): Image + fun toDataUrl(): String + + fun clone(): Bitmap +} + +interface UByteClampedArray { + val size: Int + operator fun get(index: Int): Int + operator fun set(index: Int, value: UByte) +} + +expect class NativeBitmap(width: Int, height: Int) : Bitmap \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/io.kt b/src/commonMain/kotlin/baaahs/io.kt deleted file mode 100644 index e2a600bb34..0000000000 --- a/src/commonMain/kotlin/baaahs/io.kt +++ /dev/null @@ -1,76 +0,0 @@ -package baaahs - -class ByteArrayWriter(private var bytes: ByteArray = ByteArray(128), var offset: Int = 0) { - constructor(size: Int) : this(ByteArray(size)) - - fun writeBoolean(b: Boolean) { - growIfNecessary(1) - bytes[offset++] = if (b) 1 else 0 - } - - fun writeByte(b: Byte) { - growIfNecessary(1) - bytes[offset++] = b - } - - fun writeShort(s: Short) { - growIfNecessary(2) - bytes[offset++] = s.toInt().shr(8).and(0xff).toByte() - bytes[offset++] = s.toInt().and(0xff).toByte() - } - - fun writeChar(c: Char) = writeShort(c.toShort()) - - fun writeInt(l: Int) { - growIfNecessary(4) - bytes[offset++] = l.shr(24).and(0xff).toByte() - bytes[offset++] = l.shr(16).and(0xff).toByte() - bytes[offset++] = l.shr(8).and(0xff).toByte() - bytes[offset++] = l.and(0xff).toByte() - } - - fun writeString(s: String) { - growIfNecessary(4 + 2 * s.length) - writeInt(s.length) - for (i in s.indices) { - writeChar(s[i]) - } - } - - fun toBytes(): ByteArray { - return bytes.copyOf(offset) - } - - private fun growIfNecessary(by: Int) { - if (offset + by >= bytes.size) { - bytes = bytes.copyOf(bytes.size * 2) - } - } -} - -class ByteArrayReader(val bytes: ByteArray, var offset: Int = 0) { - fun readBoolean(): Boolean = bytes[offset] != 0.toByte() - - fun readByte(): Byte = bytes[offset++] - - fun readShort(): Short = - (bytes[offset++].toInt() and 0xff shl 8) - .or(bytes[offset++].toInt() and 0xff).toShort() - - fun readChar(): Char = readShort().toChar() - - fun readInt(): Int = - (bytes[offset++].toInt() and 0xff shl 24) - .or(bytes[offset++].toInt() and 0xff shl 16) - .or(bytes[offset++].toInt() and 0xff shl 8) - .or(bytes[offset++].toInt() and 0xff) - - fun readString(): String { - var length = readInt() - val buf = StringBuilder(length) - for (i in 0 until length) { - buf.append(readChar()) - } - return buf.toString() - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/io/ByteArrayReader.kt b/src/commonMain/kotlin/baaahs/io/ByteArrayReader.kt new file mode 100644 index 0000000000..06b4ea9dfa --- /dev/null +++ b/src/commonMain/kotlin/baaahs/io/ByteArrayReader.kt @@ -0,0 +1,71 @@ +package baaahs.io + +import kotlin.math.min + +class ByteArrayReader(val bytes: ByteArray, offset: Int = 0) { + var offset = offset + set(value) { + if (value > bytes.size) { + throw IllegalStateException("array index out of bounds") + } + field = value + } + + fun readBoolean(): Boolean = bytes[offset++].toInt() != 0 + + fun readByte(): Byte = bytes[offset++] + + fun readShort(): Short = + (bytes[offset++].toInt() and 0xff shl 8) + .or(bytes[offset++].toInt() and 0xff).toShort() + + fun readChar(): Char = readShort().toChar() + + fun readInt(): Int = + (bytes[offset++].toInt() and 0xff shl 24) + .or(bytes[offset++].toInt() and 0xff shl 16) + .or(bytes[offset++].toInt() and 0xff shl 8) + .or(bytes[offset++].toInt() and 0xff) + + fun readLong(): Long = + (readInt().toLong() and 0xffffffff shl 32) + .or(readInt().toLong() and 0xffffffff) + + fun readFloat(): Float = Float.fromBits(readInt()) + + fun readString(): String = readBytes().decodeToString() + + fun readNullableString(): String? = if (readBoolean()) readString() else null + + fun readBytes(): ByteArray { + val count = readInt() + return readNBytes(count) + } + + fun readNBytes(count: Int): ByteArray { + val bytes = bytes.copyOfRange(offset, offset + count) + offset += count + return bytes + } + + fun readNBytes(dest: ByteArray): ByteArray { + val bytes = bytes.copyInto(dest, + destinationOffset = 0, startIndex = offset, endIndex = offset + dest.size) + offset += dest.size + return bytes + } + + /** + * Reads up to as many bytes as are present in `buffer`, or as many bytes are available in the incoming byte array, + * and returns the number of bytes actually read. Any unread incoming bytes are skipped. + */ + fun readBytes(buffer: ByteArray): Int { + val count = readInt() + val toCopy = min(buffer.size, count) + bytes.copyInto(buffer, 0, offset, offset + toCopy) + offset += count + return toCopy + } + + fun hasMoreBytes(): Boolean = offset < bytes.size +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/io/ByteArrayWriter.kt b/src/commonMain/kotlin/baaahs/io/ByteArrayWriter.kt new file mode 100644 index 0000000000..fb47215d12 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/io/ByteArrayWriter.kt @@ -0,0 +1,90 @@ +package baaahs.io + +class ByteArrayWriter(private var bytes: ByteArray = ByteArray(128), var offset: Int = 0) { + constructor(size: Int) : this(ByteArray(size)) + + fun writeBoolean(b: Boolean) { + growIfNecessary(1) + bytes[offset++] = if (b) 1 else 0 + } + + fun writeByte(b: Byte) { + growIfNecessary(1) + bytes[offset++] = b + } + + fun writeShort(i: Int) { + if (i and 0xffff != i) { + throw IllegalArgumentException("$i doesn't fit in a short") + } + writeShort(i.toShort()) + } + + fun writeShort(s: Short) { + growIfNecessary(2) + bytes[offset++] = s.toInt().shr(8).and(0xff).toByte() + bytes[offset++] = s.toInt().and(0xff).toByte() + } + + fun writeChar(c: Char) = writeShort(c.toShort()) + + fun writeInt(i: Int) { + growIfNecessary(4) + bytes[offset++] = i.shr(24).and(0xff).toByte() + bytes[offset++] = i.shr(16).and(0xff).toByte() + bytes[offset++] = i.shr(8).and(0xff).toByte() + bytes[offset++] = i.and(0xff).toByte() + } + + fun writeLong(l: Long) { + growIfNecessary(8) + writeInt(l.shr(32).and(0xffffffff).toInt()) + writeInt(l.and(0xffffffff).toInt()) + } + + fun writeFloat(f: Float) { + writeInt(f.toBits()) + } + + fun writeString(s: String) { + writeBytes(s.encodeToByteArray()) + } + + fun writeNullableString(s: String?) { + writeBoolean(s != null) + if (s != null) { + writeString(s) + } + } + + fun writeBytes(data: ByteArray, startIndex: Int = 0, endIndex: Int = data.size) { + val size = endIndex - startIndex + + growIfNecessary(4 + size) + writeInt(size) + + data.copyInto(bytes, offset, startIndex, endIndex) + offset += size + } + + fun writeNBytes(data: ByteArray, startIndex: Int = 0, endIndex: Int = data.size) { + val size = endIndex - startIndex + + growIfNecessary(size) + + data.copyInto(bytes, offset, startIndex, endIndex) + offset += size + } + + fun toBytes(): ByteArray { + return bytes.copyOf(offset) + } + + private fun growIfNecessary(by: Int) { + if (offset + by > bytes.size) { + var newSize = bytes.size * 2 + while (offset + by > newSize) newSize *= 2 + bytes = bytes.copyOf(newSize) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/io/Fs.kt b/src/commonMain/kotlin/baaahs/io/Fs.kt new file mode 100644 index 0000000000..8ac0a6352a --- /dev/null +++ b/src/commonMain/kotlin/baaahs/io/Fs.kt @@ -0,0 +1,124 @@ +@file:UseContextualSerialization(Fs::class) + +package baaahs.io + +import kotlinx.serialization.Polymorphic +import kotlinx.serialization.Serializable +import kotlinx.serialization.UseContextualSerialization + +@Polymorphic +interface Fs { + val name: String + val rootFile: File get() = File(this, "", true) + + suspend fun listFiles(directory: File): List + suspend fun loadFile(file: File): String? + suspend fun saveFile(file: File, content: ByteArray, allowOverwrite: Boolean = false) + suspend fun saveFile(file: File, content: String, allowOverwrite: Boolean = false) + + fun resolve(vararg pathParts: String): File { + return File(this, pathParts.joinToString("/")) + } + + suspend fun exists(file: File): Boolean + + suspend fun isDirectory(file: File): Boolean { + return file.isDirectory ?: error("Is $file a directory? Answer unclear.") + } + + @Serializable + class File( + val fs: Fs, + val pathParts: List, + /** If this is known to be a directory or not then `true` or `false`, otherwise `null` */ + internal val isDirectory: Boolean? = null + ) : Comparable { + constructor(fs: Fs, fullPath: String, isDirectory: Boolean? = null) : this( + fs, + fullPath.split("/").filter { it.isNotEmpty() && it != "." && it != ".." }, + isDirectory + ) + + val fullPath: String get() = pathParts.joinToString("/") + val parentPath: String get() = pathParts.subList(0, pathParts.size - 1).joinToString("/") + val name: String get() = pathParts.lastOrNull() ?: "" + val isRoot: Boolean get() = pathParts.isEmpty() + val parent: File? get() = if (isRoot) null else File(fs, parentPath, true) + + + suspend fun listFiles(): List = fs.listFiles(this) + suspend fun read(): String? = fs.loadFile(this) + suspend fun write(content: String, allowOverwrite: Boolean) = fs.saveFile(this, content, allowOverwrite) + suspend fun exists(): Boolean = fs.exists(this) + suspend fun isDir(): Boolean = fs.isDirectory(this) + + fun isWithin(parent: File): Boolean { + return if (parent.isRoot) { + true + } else { + parentPath.startsWith("${parent.fullPath}/") + } + } + + fun resolve(relPath: String, isDirectory: Boolean? = null): File { + return if (isRoot) { + File(fs, relPath, isDirectory) + } else { + File(fs, "${fullPath}/$relPath", isDirectory) + } + } + +// TODO fun resolve(relPath: String, isDirectory: Boolean? = null): RemoteFile { +// val resolvedPathParts = ArrayList(pathParts) +// var looksLikeDirectory = true +// relPath.split("/").forEach { +// when (it) { +// "." -> { +// looksLikeDirectory = true +// } +// ".." -> { +// if (resolvedPathParts.size > 0) resolvedPathParts.removeLast() +// looksLikeDirectory = true +// } +// else -> { +// resolvedPathParts.add(it) +// looksLikeDirectory = false // TODO not really true. +// } +// } +// } +// return RemoteFile(fsId, resolvedPathParts.joinToString("/"), isDirectory ?: looksLikeDirectory) +// } + + fun withExtension(extension: String): File { + return if (!name.endsWith(extension)) { + File(fs, "$fullPath$extension", isDirectory) + } else this + } + + override fun toString(): String { + return "${fs.name}:$fullPath" + } + + override fun compareTo(other: File): Int { + return fullPath.compareTo(other.fullPath) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other !is File) return false + + if (fs != other.fs) return false + if (isDirectory != other.isDirectory) return false + if (pathParts != other.pathParts) return false + + return true + } + + override fun hashCode(): Int { + var result = fs.hashCode() + result = 31 * result + (isDirectory?.hashCode() ?: 0) + result = 31 * result + pathParts.hashCode() + return result + } + } +} diff --git a/src/commonMain/kotlin/baaahs/io/PubSubRemoteFsClientBackend.kt b/src/commonMain/kotlin/baaahs/io/PubSubRemoteFsClientBackend.kt new file mode 100644 index 0000000000..fa641ec6f0 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/io/PubSubRemoteFsClientBackend.kt @@ -0,0 +1,152 @@ +package baaahs.io + +import baaahs.PubSub +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.launch +import kotlinx.serialization.Polymorphic +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +class PubSubRemoteFsClientBackend( + pubSub: PubSub.Client +) : FsClientSideSerializer(), RemoteFsBackend { + override val name: String + get() = "Backend for RemoteFs" + + override val backend: RemoteFsBackend + get() = this + + private var nextRequestId = 0 + private val responseChannels = hashMapOf>() + private val commandPort = createCommandPort() + + private val pubSubChannel = + pubSub.openCommandChannel(commandPort) { response -> + val responseChannel = responseChannels.remove(response.requestId)!! + GlobalScope.launch { + responseChannel.send(response) + } + } + + private suspend fun sendCommand(command: RemoteFsOp): R { + val responseChannel = Channel(1) + responseChannels[command.requestId] = responseChannel + pubSubChannel.send(command) + @Suppress("UNCHECKED_CAST") + return responseChannel.receive() as R + } + + override suspend fun listFiles(directory: Fs.File): List { + val reply: RemoteFsOp.Response.ListFilesResponse = sendCommand(RemoteFsOp.ListFiles(nextRequestId++, directory)) + return reply.files + } + + override suspend fun loadFile(file: Fs.File): String? { + val reply: RemoteFsOp.Response.LoadFileResponse = sendCommand(RemoteFsOp.LoadFile(nextRequestId++, file)) + return reply.contents + } + + override suspend fun saveFile(file: Fs.File, content: ByteArray, allowOverwrite: Boolean) { + return saveFile(file, content.decodeToString()) + } + + override suspend fun saveFile(file: Fs.File, content: String, allowOverwrite: Boolean) { + sendCommand(RemoteFsOp.SaveFile(nextRequestId++, file, content, allowOverwrite)) + } + + override suspend fun exists(file: Fs.File): Boolean { + val reply: RemoteFsOp.Response.ExistsResponse = sendCommand(RemoteFsOp.Exists(nextRequestId++, file)) + return reply.exists + } + + override suspend fun isDirectory(file: Fs.File): Boolean { + val reply: RemoteFsOp.Response.IsDirectoryResponse = sendCommand(RemoteFsOp.IsDirectory(nextRequestId++, file)) + return reply.exists + } +} + +@Polymorphic +@Serializable +sealed class RemoteFsOp { + abstract val requestId: Int + + abstract suspend fun perform(): Response + + @Serializable + @SerialName("ListFiles") + data class ListFiles(override val requestId: Int, val directory: Fs.File) : RemoteFsOp() { + override suspend fun perform(): Response = + Response.ListFilesResponse(requestId, directory.listFiles()) + } + + @Serializable + @SerialName("LoadFile") + class LoadFile(override val requestId: Int, val file: Fs.File) : RemoteFsOp() { + override suspend fun perform(): Response = + Response.LoadFileResponse(requestId, file.read()) + } + + @Serializable + @SerialName("SaveFile") + class SaveFile(override val requestId: Int, val file: Fs.File, val content: String, val allowOverwrite: Boolean) : RemoteFsOp() { + override suspend fun perform(): Response { + file.write(content, allowOverwrite) + return Response.SaveFileResponse(requestId) + } + } + + @Serializable + @SerialName("Exists") + class Exists(override val requestId: Int, val file: Fs.File) : RemoteFsOp() { + override suspend fun perform(): Response { + return Response.ExistsResponse(requestId, file.exists()) + } + } + + @Serializable + @SerialName("IsDirectory") + class IsDirectory(override val requestId: Int, val file: Fs.File) : RemoteFsOp() { + override suspend fun perform(): Response { + return Response.IsDirectoryResponse(requestId, file.isDir()) + } + } + + @Polymorphic + @Serializable + sealed class Response { + abstract val requestId: Int + + @Serializable + @SerialName("ListFiles") + class ListFilesResponse(override val requestId: Int, val files: List) : RemoteFsOp.Response() + + @Serializable + @SerialName("LoadFile") + class LoadFileResponse(override val requestId: Int, val contents: String?) : RemoteFsOp.Response() + + @Serializable + @SerialName("SaveFile") + class SaveFileResponse(override val requestId: Int) : RemoteFsOp.Response() + + @Serializable + @SerialName("Exists") + class ExistsResponse(override val requestId: Int, val exists: Boolean) : RemoteFsOp.Response() + + @Serializable + @SerialName("IsDirectory") + class IsDirectoryResponse(override val requestId: Int, val exists: Boolean) : RemoteFsOp.Response() + } +} + +class PubSubRemoteFsServerBackend( + pubSub: PubSub.Server, + serializer: RemoteFsSerializer +) { + init { + val commandPort = serializer.createCommandPort() + pubSub.listenOnCommandChannel(commandPort) { command, reply -> + reply(command.perform()) + } + } +} diff --git a/src/commonMain/kotlin/baaahs/io/RemoteFs.kt b/src/commonMain/kotlin/baaahs/io/RemoteFs.kt new file mode 100644 index 0000000000..e5c8838721 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/io/RemoteFs.kt @@ -0,0 +1,142 @@ +package baaahs.io + +import baaahs.PubSub +import baaahs.sim.FakeFs +import baaahs.sim.MergedFs +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.SerializationException +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.descriptors.buildClassSerialDescriptor +import kotlinx.serialization.encoding.* +import kotlinx.serialization.modules.SerializersModule +import kotlinx.serialization.modules.polymorphic +import kotlin.reflect.KClass + +@Serializable +data class RemoteFs( + override val name: String, + internal val fsId: Int, + private val remoteFsBackend: RemoteFsBackend +) : Fs by remoteFsBackend + +class FsServerSideSerializer : KSerializer, RemoteFsSerializer { + private val fses = mutableListOf() + + override val descriptor: SerialDescriptor = + buildClassSerialDescriptor("baaahs.io.Fs") { + element("name", String.serializer().descriptor) + element("fsId", Int.serializer().descriptor) + } + + override fun deserialize(decoder: Decoder): Fs { + return decoder.decodeStructure(descriptor) { + var fsId: Int? = null + loop@ while (true) { + when (val i = decodeElementIndex(descriptor)) { + CompositeDecoder.DECODE_DONE -> break@loop + 0 -> decodeStringElement(descriptor, 0) // ignored + 1 -> fsId = decodeIntElement(descriptor, 1) + else -> throw SerializationException("Unknown index $i") + } + } + + fses[fsId ?: throw MissingFieldException("fsId")] + } + } + + override fun serialize(encoder: Encoder, value: Fs) { + var fsId = fses.indexOf(value) + if (fsId == -1) { + fsId = fses.size + fses.add(value) + } + + encoder.encodeStructure(descriptor) { + encodeStringElement(descriptor, 0, value.name) + encodeIntElement(descriptor, 1, fsId) + } + } + + override val serialModule: SerializersModule = SerializersModule { + knownFsClasses.forEach { + @Suppress("UNCHECKED_CAST") + contextual(it as KClass, this@FsServerSideSerializer) + } + } +} + +abstract class FsClientSideSerializer : KSerializer, RemoteFsSerializer { + abstract val backend: RemoteFsBackend + + override val descriptor: SerialDescriptor = + buildClassSerialDescriptor("baaahs.io.Fs") { + element("name", String.serializer().descriptor) + element("fsId", Int.serializer().descriptor) + } + + override fun deserialize(decoder: Decoder): RemoteFs { + return decoder.decodeStructure(descriptor) { + var name: String? = null + var fsId: Int? = null + loop@ while (true) { + when (val i = decodeElementIndex(descriptor)) { + CompositeDecoder.DECODE_DONE -> break@loop + 0 -> name = decodeStringElement(descriptor, 0) + 1 -> fsId = decodeIntElement(descriptor, 1) + else -> throw SerializationException("Unknown index $i") + } + } + RemoteFs( + name ?: throw MissingFieldException("name"), + fsId ?: throw MissingFieldException("fsId"), + backend + ) + } + } + + override fun serialize(encoder: Encoder, value: RemoteFs) { + encoder.encodeStructure(descriptor) { + encodeStringElement(descriptor, 0, value.name) + encodeIntElement(descriptor, 1, value.fsId) + } + } + + override val serialModule: SerializersModule = SerializersModule { + knownFsClasses.forEach { + @Suppress("UNCHECKED_CAST") + contextual(it as KClass, this@FsClientSideSerializer) + } + } +} + +internal class MissingFieldException(fieldName: String) : + SerializationException("Field '$fieldName' is required, but it was missing") + +interface RemoteFsSerializer { + val serialModule: SerializersModule + + @Suppress("UNCHECKED_CAST") + val asSerializer: KSerializer + get() = this as KSerializer + + fun createCommandPort(): PubSub.CommandPort { + return PubSub.CommandPort( + "pinky/remoteFs", + RemoteFsOp.serializer(), + RemoteFsOp.Response.serializer(), + SerializersModule { + polymorphic(RemoteFsOp::class) + polymorphic(RemoteFsOp.Response::class) + include(serialModule) + } + ) + } +} + +interface RemoteFsBackend : Fs + +expect val platformFsClasses: Set> +val knownFsClasses: Set> + get() = platformFsClasses + setOf(Fs::class, FakeFs::class, MergedFs::class, RemoteFs::class) diff --git a/src/commonMain/kotlin/baaahs/mapper/DateTimeSerializer.kt b/src/commonMain/kotlin/baaahs/mapper/DateTimeSerializer.kt new file mode 100644 index 0000000000..3a3450649c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/mapper/DateTimeSerializer.kt @@ -0,0 +1,20 @@ +package baaahs.mapper + +import com.soywiz.klock.DateTime +import kotlinx.serialization.KSerializer +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder + +object DateTimeSerializer : KSerializer { + override val descriptor = PrimitiveSerialDescriptor("DateTime", PrimitiveKind.STRING) + + override fun deserialize(decoder: Decoder): DateTime { + return DateTime(decoder.decodeDouble()) + } + + override fun serialize(encoder: Encoder, obj: DateTime) { + encoder.encodeDouble(obj.unixMillis) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/mapper/ImageProcessing.kt b/src/commonMain/kotlin/baaahs/mapper/ImageProcessing.kt new file mode 100644 index 0000000000..a1a7f68012 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/mapper/ImageProcessing.kt @@ -0,0 +1,172 @@ +package baaahs.mapper + +import baaahs.MediaDevices +import baaahs.imaging.Bitmap +import kotlin.math.max + +class ImageProcessing { + + class Histogram(val data: IntArray, val total: Int) { + fun sumValues(range: IntRange): Int { + var total = 0 + for (i in range) { + total += data[i] + } + return total + } + } + + companion object { + val rgbaPixelDetectionIndex = 1 // green + + fun channelHistogram( + channel: Int, + bitmap: Bitmap + ): Histogram { + val hist = IntArray(256) { 0 } + bitmap.withData { + val totalBytes = it.size + for (i in channel until totalBytes step 4) { + hist[it[i].toInt() and 0xFF]++ + } + false + } + return Histogram(hist, bitmap.width * bitmap.height) + } + + /** + * @param newBitmap Newly-captured bitmap from camera with some element lit. + * @param baseBitmap Base bitmap from camera with all elements off. + * @param deltaBitmap Bitmap to receive diff. + * @param withinRegion Region within which to find changes. + */ + fun diff( + newBitmap: Bitmap, + baseBitmap: Bitmap, + deltaBitmap: Bitmap, + maskBitmap: Bitmap? = null, + withinRegion: MediaDevices.Region = MediaDevices.Region.containing(baseBitmap) + ): Analysis { + deltaBitmap.copyFrom(baseBitmap) + deltaBitmap.subtract(newBitmap) + if (maskBitmap != null) { + deltaBitmap.darken(maskBitmap) + } + + return analyze(deltaBitmap, withinRegion) + } + + @OptIn(ExperimentalUnsignedTypes::class) + fun pixels( + bitmap: Bitmap, + regionOfInterest: MediaDevices.Region = MediaDevices.Region.containing(bitmap), + fn: (x: Int, y: Int, value: Int) -> Unit + ) { + bitmap.withData { data -> + for (y in regionOfInterest.yRange) { + for (x in regionOfInterest.xRange) { + val pixelByteIndex = (x + y * bitmap.width) * 4 + val pixValue = data[pixelByteIndex + rgbaPixelDetectionIndex] + fn(x, y, pixValue) + } + } + + false + } + } + + @OptIn(ExperimentalUnsignedTypes::class) + fun analyze( + bitmap: Bitmap, + regionOfInterest: MediaDevices.Region = MediaDevices.Region.containing(bitmap) + ): Analysis { + val hist = IntArray(256) { 0 } + val xMin = ShortArray(bitmap.width) { if (regionOfInterest.xRange.contains(it)) 0xFF else 0 } + val xMax = ShortArray(bitmap.width) { 0x00 } + val yMin = ShortArray(bitmap.height) { if (regionOfInterest.yRange.contains(it)) 0xFF else 0 } + val yMax = ShortArray(bitmap.height) { 0x00 } + + bitmap.withData { data -> + // Get histogram and per-row and -column min and max diffs. + + for (y in regionOfInterest.yRange) { + for (x in regionOfInterest.xRange) { + val pixelByteIndex = (x + y * bitmap.width) * 4 + val pixValue = data[pixelByteIndex + rgbaPixelDetectionIndex].toShort() + + if (pixValue < xMin[x]) xMin[x] = pixValue + if (pixValue > xMax[x]) xMax[x] = pixValue + if (pixValue < yMin[y]) yMin[y] = pixValue + if (pixValue > yMax[y]) yMax[y] = pixValue + hist[pixValue.toInt()]++ + } + } + + false + } + + return Analysis( + bitmap.width, + bitmap.height, + regionOfInterest, + Histogram(hist, bitmap.width * bitmap.height), + xMin, + xMax, + yMin, + yMax + ) + } + + fun Collection.histogram(range: IntRange): IntArray { + val hist = IntArray(range.last - range.first) + forEach { i -> hist[i - range.first]++ } + return hist + } + } + + class Analysis( + val width: Int, + val height: Int, + val regionOfInterest: MediaDevices.Region, + val hist: Histogram, + val xMin: ShortArray, + val xMax: ShortArray, + val yMin: ShortArray, + val yMax: ShortArray + ) { + val minValue: Int by lazy { xMin.copyOfRange(regionOfInterest.xRange).minOrNull()!!.toInt() } + val maxValue: Int by lazy { xMax.copyOfRange(regionOfInterest.xRange).maxOrNull()!!.toInt() } + + val minChangeToDetect = 10f + val scale: Float by lazy { max(minChangeToDetect, (maxValue - minValue).toFloat()) } + fun thresholdValueFor(threshold: Float) = (threshold * scale).toInt().toShort() + minValue + + fun detectChangeRegion( + threshold: Float + ): MediaDevices.Region { +// val b255 = 255.toUByte() + + val thresholdValue = thresholdValueFor(threshold) + val minX = xMax.indexOfFirst { rowMaxValue -> rowMaxValue >= thresholdValue } + val minY = yMax.indexOfFirst { colMaxValue -> colMaxValue >= thresholdValue } + val maxX = xMax.indexOfLast { rowMaxValue -> rowMaxValue >= thresholdValue } + val maxY = yMax.indexOfLast { colMaxValue -> colMaxValue >= thresholdValue } + return MediaDevices.Region(minX, minY, maxX, maxY) + } + + private fun ShortArray.copyOfRange(intRange: IntRange): ShortArray { + return copyOfRange(intRange.first, intRange.last) + } + + fun hasBrightSpots(): Boolean { + this.hist.data.reduce { acc, i -> + if (i - acc > 3) { // one or two brigher pixels don't count + return true + } + i + } + return false + } + } +} + diff --git a/src/commonMain/kotlin/baaahs/mapper/MappingResults.kt b/src/commonMain/kotlin/baaahs/mapper/MappingResults.kt new file mode 100644 index 0000000000..a8b56900aa --- /dev/null +++ b/src/commonMain/kotlin/baaahs/mapper/MappingResults.kt @@ -0,0 +1,51 @@ +package baaahs.mapper + +import baaahs.BrainId +import baaahs.geom.Vector3F +import baaahs.model.Model +import baaahs.util.Logger + +interface MappingResults { + fun dataFor(brainId: BrainId): Info? + + fun dataFor(surfaceName: String): Info? + + class Info( + val surface: Model.Surface, + + /** Pixel's estimated position within the model. */ + val pixelLocations: List? + ) +} + +class SessionMappingResults(model: Model, mappingSessions: List) : MappingResults { + val brainData = mutableMapOf() + + init { + mappingSessions.forEach { mappingSession -> + mappingSession.surfaces.forEach { surfaceData -> + val brainId = BrainId(surfaceData.brainId) + val surfaceName = surfaceData.surfaceName + + try { + val modelSurface = model.findSurface(surfaceName) + val pixelLocations = surfaceData.pixels.map { it?.modelPosition } + + brainData[brainId] = MappingResults.Info(modelSurface, pixelLocations) + } catch (e: Exception) { + logger.warn(e) { "Skipping $surfaceName" } + } + } + } + } + + override fun dataFor(brainId: BrainId): MappingResults.Info? = brainData[brainId] + + override fun dataFor(surfaceName: String): MappingResults.Info? { + return brainData.values.find { it.surface.name == surfaceName } + } + + companion object { + private val logger = Logger("SessionMappingResults") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/mapper/MappingSession.kt b/src/commonMain/kotlin/baaahs/mapper/MappingSession.kt new file mode 100644 index 0000000000..f7930c3fef --- /dev/null +++ b/src/commonMain/kotlin/baaahs/mapper/MappingSession.kt @@ -0,0 +1,39 @@ +package baaahs.mapper + +import baaahs.geom.Matrix4 +import baaahs.geom.Vector2F +import baaahs.geom.Vector3F +import com.soywiz.klock.DateTime +import kotlinx.serialization.Serializable + +@Serializable +data class MappingSession( + val startedAt: Double, + val surfaces: List, + val cameraMatrix: Matrix4, + val baseImage: String?, + val version: Int = 0, + val savedAt: Double = DateTime.nowUnix(), + val notes: String? = null +) { + val startedAtDateTime: DateTime get() = DateTime(startedAt) + + @Serializable + data class SurfaceData( + val brainId: String, + val panelName: String, // TODO: rename to fixtureName + val pixels: List, + val deltaImage: String?, + val screenAreaInSqPixels: Float?, + val screenAngle: Float? + ) { + val surfaceName: String get() = panelName + + @Serializable + data class PixelData( + val modelPosition: Vector3F?, + val screenPosition: Vector2F?, + val deltaImage: String? + ) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/mapper/PinkyMapperHandlers.kt b/src/commonMain/kotlin/baaahs/mapper/PinkyMapperHandlers.kt new file mode 100644 index 0000000000..e7e72f5fa2 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/mapper/PinkyMapperHandlers.kt @@ -0,0 +1,35 @@ +package baaahs.mapper + +import baaahs.api.ws.WebSocketRouter +import baaahs.decodeBase64 +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.jsonPrimitive + +class PinkyMapperHandlers(val storage: Storage) { + fun register(builder: WebSocketRouter.HandlerBuilder) { + builder.apply { + handle("listSessions") { + json.encodeToJsonElement(ListSerializer(String.serializer()), storage.listSessions().map { it.name }) + } + + handle("saveImage") { args -> + val name = args[1].jsonPrimitive.contentOrNull + val imageDataBase64 = args[2].jsonPrimitive.contentOrNull + val imageData = decodeBase64(imageDataBase64!!) + storage.saveImage(name!!, imageData) + JsonNull + } + + handle("saveSession") { args -> + val mappingSession = json.decodeFromJsonElement( + MappingSession.serializer(), args[1] + ) + storage.saveSession(mappingSession) + JsonNull + } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/mapper/Storage.kt b/src/commonMain/kotlin/baaahs/mapper/Storage.kt new file mode 100644 index 0000000000..e108ff052e --- /dev/null +++ b/src/commonMain/kotlin/baaahs/mapper/Storage.kt @@ -0,0 +1,91 @@ +package baaahs.mapper; + +import baaahs.PinkyConfig +import baaahs.io.Fs +import baaahs.model.Model +import baaahs.plugin.Plugins +import baaahs.show.Show +import baaahs.show.ShowMigrator +import baaahs.util.Logger +import com.soywiz.klock.DateFormat +import com.soywiz.klock.DateTime +import kotlinx.serialization.KSerializer +import kotlinx.serialization.json.Json + +class Storage(val fs: Fs, val plugins: Plugins) { + private val configFile = fs.resolve("config.json") + + companion object { + private val logger = Logger("Storage") + val json = Json { isLenient = true } + + private val format = DateFormat("yyyy''MM''dd'-'HH''mm''ss") + + fun formatDateTime(dateTime: DateTime): String { + return dateTime.format(format) + } + } + + suspend fun listSessions(): List { + val mappingSessionsDir = fs.resolve("mapping-sessions") + return fs.listFiles(mappingSessionsDir).filter { it.name.endsWith(".json") } + } + + suspend fun saveSession(mappingSession: MappingSession): Fs.File { + val file = + fs.resolve( + "mapping-sessions", + "${formatDateTime(mappingSession.startedAtDateTime)}-v${mappingSession.version}.json" + ) + fs.saveFile(file, json.encodeToString(MappingSession.serializer(), mappingSession)) + return file + } + + suspend fun saveImage(name: String, imageData: ByteArray) { + val file = fs.resolve("mapping-sessions", "images", name) + fs.saveFile(file, imageData) + } + + suspend fun loadMappingData(model: Model): MappingResults { + val sessions = arrayListOf() + val path = fs.resolve("mapping", model.name) + fs.listFiles(path).forEach { dir -> + fs.listFiles(dir) + .sortedBy { it.name } + .filter { it.name.endsWith(".json") } + .forEach { f -> + val mappingJson = fs.loadFile(f) + val mappingSession = json.decodeFromString(MappingSession.serializer(), mappingJson!!) + mappingSession.surfaces.forEach { surface -> + logger.debug { "Found pixel mapping for ${surface.panelName} (${surface.brainId})" } + } + sessions.add(mappingSession) + } + } + return SessionMappingResults(model, sessions) + } + + suspend fun loadConfig(): PinkyConfig? { + return loadJson(configFile, PinkyConfig.serializer()) + } + + suspend fun updateConfig(update: PinkyConfig.() -> PinkyConfig) { + val oldConfig = loadConfig() ?: PinkyConfig(null) + val newConfig = oldConfig.update() + configFile.write(json.encodeToString(PinkyConfig.serializer(), newConfig), true) + } + + private suspend fun loadJson(configFile: Fs.File, serializer: KSerializer): T? { + return fs.loadFile(configFile)?.let { plugins.json.decodeFromString(serializer, it) } + } + + suspend fun loadShow(file: Fs.File): Show? { + return loadJson(file, ShowMigrator) + } + + suspend fun saveShow(file: Fs.File, show: Show) { + file.write(plugins.json.encodeToString(ShowMigrator, show), true) + } + + fun resolve(path: String): Fs.File = fs.resolve(path) +} diff --git a/src/commonMain/kotlin/baaahs/model/Model.kt b/src/commonMain/kotlin/baaahs/model/Model.kt new file mode 100644 index 0000000000..58f0048754 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/model/Model.kt @@ -0,0 +1,85 @@ +package baaahs.model + +import baaahs.fixtures.DeviceType +import baaahs.geom.Vector3F +import baaahs.geom.boundingBox +import baaahs.geom.center + +abstract class Model : ModelInfo { + abstract val name: String + abstract val movingHeads: List + abstract val allSurfaces: List + abstract val allEntities: List + + abstract val geomVertices: List + + private val allSurfacesByName: Map by lazy { allSurfaces.associateBy { it.name } } + + fun findSurface(name: String) = + allSurfacesByName[name] ?: throw RuntimeException("no such model surface $name") + + val allVertices by lazy { + val allVertices = hashSetOf() + allSurfaces.map { allVertices.addAll(it.allVertices()) } + allVertices + } + + val modelBounds by lazy { + boundingBox(allVertices) + } + + val modelExtents by lazy { + val (min, max) = modelBounds + max - min + } + override val extents + get() = modelExtents + + val modelCenter by lazy { + center(allVertices) + } + override val center: Vector3F + get() = modelCenter + + interface Entity { + val name: String + val description: String + val deviceType: DeviceType + } + + interface FixtureInfo { + val origin: Vector3F? + val heading: Vector3F? + } + + /** A named surface in the geometry model. */ + open class Surface( + override val name: String, + override val description: String, + override val deviceType: DeviceType, + val expectedPixelCount: Int?, + val faces: List, + val lines: List + ) : Entity { + open fun allVertices(): Collection { + val vertices = hashSetOf() + vertices.addAll(lines.flatMap { it.vertices }) + return vertices + } + } + + data class Line(val vertices: List) + + class Face( + private val allVertices: List, + val vertexA: Int, + val vertexB: Int, + val vertexC: Int + ) { + val a: Vector3F get() = allVertices[vertexA] + val b: Vector3F get() = allVertices[vertexB] + val c: Vector3F get() = allVertices[vertexC] + + val vertices: Array = arrayOf(a, b, c) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/model/ModelInfo.kt b/src/commonMain/kotlin/baaahs/model/ModelInfo.kt new file mode 100644 index 0000000000..7635dcbdb2 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/model/ModelInfo.kt @@ -0,0 +1,18 @@ +package baaahs.model + +import baaahs.geom.Vector3F + +interface ModelInfo { + val center: Vector3F + val extents: Vector3F + + val boundsMin get() = center - extents / 2f + val boundsMax get() = center + extents / 2f + + object Empty : ModelInfo { + override val center: Vector3F + get() = Vector3F.origin + override val extents: Vector3F + get() = Vector3F.origin + } +} diff --git a/src/commonMain/kotlin/baaahs/model/MovingHead.kt b/src/commonMain/kotlin/baaahs/model/MovingHead.kt new file mode 100644 index 0000000000..7e47e9fee1 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/model/MovingHead.kt @@ -0,0 +1,139 @@ +package baaahs.model + +import baaahs.Color +import baaahs.dmx.Dmx +import baaahs.dmx.Shenzarpy +import baaahs.fixtures.DeviceType +import baaahs.fixtures.MovingHeadDevice +import baaahs.geom.Vector3F +import kotlinx.serialization.Serializable + +abstract class MovingHead( + override val name: String, + override val description: String, + val baseDmxChannel: Int, + override val origin: Vector3F, + override val heading: Vector3F +) : Model.Entity, Model.FixtureInfo { + abstract val dmxChannelCount: Int + + abstract val colorModel: ColorModel + abstract val colorWheelColors: List + /** Seconds required to rotate through full color wheel range. */ + abstract val colorWheelMotorSpeed: Float + + abstract val dimmerChannel: Dmx.Channel + abstract val shutterChannel: Dmx.Channel + + abstract val panChannel: Dmx.Channel + abstract val panFineChannel: Dmx.Channel? + /** In radians. */ + abstract val panRange: ClosedRange + /** Seconds required to rotate through full pan range. */ + abstract val panMotorSpeed: Float + + abstract val tiltChannel: Dmx.Channel + abstract val tiltFineChannel: Dmx.Channel? + /** In radians. */ + abstract val tiltRange: ClosedRange + /** Seconds required to rotate through full tilt range. */ + abstract val tiltMotorSpeed: Float + + enum class ColorModel { + ColorWheel, + RGB, + RGBW + } + + abstract class BaseBuffer(private val movingHead: MovingHead) : Buffer { + override var pan: Float + get() = getFloat(movingHead.panChannel, movingHead.panFineChannel) + set(value) = setFloat(movingHead.panChannel, movingHead.panFineChannel, value) + + override var tilt: Float + get() = getFloat(movingHead.tiltChannel, movingHead.tiltFineChannel) + set(value) = setFloat(movingHead.tiltChannel, movingHead.tiltFineChannel, value) + + override var dimmer: Float + get() = getFloat(movingHead.dimmerChannel) + set(value) = setFloat(movingHead.dimmerChannel, value) + override var shutter: Int + get() = dmxBuffer[movingHead.shutterChannel].toInt() + set(value) { dmxBuffer[movingHead.shutterChannel] = value.toByte() } + } + + interface Buffer { + val dmxBuffer: Dmx.Buffer + + /** In radians. */ + var pan: Float + /** In radians. */ + var tilt: Float + /** `0` is completely dimmed, `1` is completely open. */ + var dimmer: Float + /** Rotation of color wheel in `(0..1]`. */ + var colorWheelPosition: Float + var shutter: Int + + fun List.closestColorFor(color: Color): Byte { + var bestMatch = Shenzarpy.WheelColor.WHITE + var bestDistance = 1f + + forEach { wheelColor -> + val distance = wheelColor.color.distanceTo(color) + if (distance < bestDistance) { + bestMatch = wheelColor + bestDistance = distance + } + } + + return bestMatch.ordinal.toByte() + } + + fun getFloat(channel: Dmx.Channel): Float { + val byteVal = dmxBuffer[channel].toInt() and 0xff + return ((byteVal shl 8) + byteVal) / 65535f + } + + fun getFloat(coarseChannel: Dmx.Channel, fineChannel: Dmx.Channel?): Float { + if (fineChannel == null) { + return getFloat(coarseChannel) + } + + val firstByte = dmxBuffer[coarseChannel].toInt() and 0xff + val secondByte = dmxBuffer[fineChannel].toInt() and 0xff + val scaled = firstByte * 256 + secondByte + return scaled / 65535f + } + + fun setFloat(channel: Dmx.Channel, value: Float) { + val scaled = (value * 65535).toInt() + dmxBuffer[channel] = (scaled shr 8).toByte() + } + + fun setFloat(coarseChannel: Dmx.Channel, fineChannel: Dmx.Channel?, value: Float) { + if (fineChannel == null) { + return setFloat(coarseChannel, value) + } + + val scaled = (value * 65535).toInt() + dmxBuffer[coarseChannel] = (scaled shr 8).toByte() + dmxBuffer[fineChannel] = (scaled and 0xff).toByte() + } + } + + fun newBuffer(universe: Dmx.Universe): Buffer { + return newBuffer(universe.writer(baseDmxChannel, dmxChannelCount)) + } + + abstract fun newBuffer(dmxBuffer: Dmx.Buffer): Buffer + + @Serializable + data class MovingHeadPosition( + val x: Int, + val y: Int + ) + + override val deviceType: DeviceType + get() = MovingHeadDevice +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/model/ObjModel.kt b/src/commonMain/kotlin/baaahs/model/ObjModel.kt new file mode 100644 index 0000000000..b33ec3fa74 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/model/ObjModel.kt @@ -0,0 +1,88 @@ +package baaahs.model + +import baaahs.geom.Vector3F +import baaahs.getResource +import baaahs.util.Logger + +abstract class ObjModel(private val objResourceName: String) : Model() { + override val movingHeads: List + get() = emptyList() + override val geomVertices: List get() = vertices + lateinit var vertices: List + lateinit var surfaces: List + + override val allSurfaces get() = surfaces + override val allEntities: List get() = allSurfaces + movingHeads + private val surfacesByName = mutableMapOf() + + abstract fun createSurface(name: String, faces: List, lines: List): Surface + + open fun load() { + val vertices: MutableList = mutableListOf() + val panels: MutableList = mutableListOf() + var surfaceName: String? = null + var faceVerts = mutableListOf>() + var lines = mutableListOf() + + val surfacesByEdge = mutableMapOf, MutableList>() + val edgesBySurface = mutableMapOf>>() + + fun buildSurface() { + surfaceName?.let { + val faces = faceVerts.map { Face(vertices, it[0], it[1], it[2]) } + val surface = createSurface(it, faces, lines) + panels.add(surface) + surfacesByName[it] = surface + + surfaceName = null + faceVerts = mutableListOf() + lines = mutableListOf() + } + } + + logger.debug { "Loading model data from $objResourceName..." } + getResource(objResourceName) + .split("\n") + .map { it.trim() } + .forEach { line -> + val parts = line.split(" ") + val args = parts.subList(1, parts.size) + + when (parts[0]) { + "v" -> { + if (args.size != 3) throw Exception("invalid vertex line: $line") + val coords = args.map { it.toFloat() } + vertices.add(Vector3F(coords[0], coords[1], coords[2])) + } + "o" -> { + buildSurface() + surfaceName = args.joinToString(" ") + } + "f" -> { + val verts = args.map { it.toInt() - 1 } + faceVerts.add(verts) + } + "l" -> { + val vertIs = args.map { it.toInt() - 1 } + val points = vertIs.map { vi -> vertices[vi] } + + val sortedVerts = vertIs.sorted() + surfacesByEdge.getOrPut(sortedVerts) { mutableListOf() }.add(surfaceName!!) + edgesBySurface.getOrPut(surfaceName!!) { mutableListOf() }.add(sortedVerts) + + lines.add(Line(points)) + } + } + } + + buildSurface() + + logger.debug { "${this::class.simpleName} has ${panels.size} panels and ${vertices.size} vertices" } + this.vertices = vertices + this.surfaces = panels + } + + companion object { + val logger = Logger("ObjModel") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/models/Decom2019Model.kt b/src/commonMain/kotlin/baaahs/models/Decom2019Model.kt new file mode 100644 index 0000000000..c5cd654696 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/models/Decom2019Model.kt @@ -0,0 +1,13 @@ +package baaahs.models + +import baaahs.fixtures.PixelArrayDevice +import baaahs.model.Model +import baaahs.model.ObjModel + +class Decom2019Model : ObjModel("decom-2019-panels.obj") { + override val name: String = "Decom2019" + + override fun createSurface(name: String, faces: List, lines: List): Model.Surface { + return Surface(name, name, PixelArrayDevice, 16 * 60, faces, lines) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/models/SheepModel.kt b/src/commonMain/kotlin/baaahs/models/SheepModel.kt new file mode 100644 index 0000000000..f5302c4bf7 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/models/SheepModel.kt @@ -0,0 +1,54 @@ +package baaahs.models + +import baaahs.dmx.Shenzarpy +import baaahs.fixtures.PixelArrayDevice +import baaahs.geom.Vector3F +import baaahs.getResource +import baaahs.model.MovingHead +import baaahs.model.ObjModel +import kotlin.math.PI + +class SheepModel : ObjModel("baaahs-model.obj") { + override val name: String = "BAAAHS" + private val pixelsPerPanel = hashMapOf() + + private val wallEyedness = (0.1f * PI / 2).toFloat() + + override val movingHeads: List = arrayListOf( + Shenzarpy( + "leftEye", + "Left Eye", + 1, + origin = Vector3F(489.0f, 202.361f, 27.5f), + heading = Vector3F(0f, -wallEyedness, (PI / 2).toFloat()) + ), + Shenzarpy( + "rightEye", + "Right Eye", + 17, + origin = Vector3F(489.0f, 202.361f, -24.5f), + heading = Vector3F(0f, wallEyedness, (PI / 2).toFloat()) + ) + ) + + override fun load() { + getResource("baaahs-panel-info.txt") + .split("\n") + .map { it.split(Regex("\\s+")) } + .forEach { pixelsPerPanel[it[0]] = it[1].toInt() * 60 } + + super.load() + } + + override fun createSurface(name: String, faces: List, lines: List): Surface { + val expectedPixelCount = pixelsPerPanel[name] + if (expectedPixelCount == null) { + logger.debug { "No pixel count found for $name" } + } + return Surface(name, "Panel $name", PixelArrayDevice, expectedPixelCount, faces, lines) + } + + companion object { + fun Panel(name: String) = Surface(name, name, PixelArrayDevice, null, emptyList(), emptyList()) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/models/SuiGenerisModel.kt b/src/commonMain/kotlin/baaahs/models/SuiGenerisModel.kt new file mode 100644 index 0000000000..d47fad1ac8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/models/SuiGenerisModel.kt @@ -0,0 +1,13 @@ +package baaahs.models + +import baaahs.fixtures.PixelArrayDevice +import baaahs.model.Model +import baaahs.model.ObjModel + +class SuiGenerisModel : ObjModel("sui-generis.obj") { + override val name: String = "Decom2019" // todo: it's weird that we're reusing Decom2019 here. + + override fun createSurface(name: String, faces: List, lines: List): Surface { + return Model.Surface(name, name, PixelArrayDevice, 10 * 60, faces, lines) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/net/FragmentingUdpLink.kt b/src/commonMain/kotlin/baaahs/net/FragmentingUdpLink.kt new file mode 100644 index 0000000000..402bc5477b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/net/FragmentingUdpLink.kt @@ -0,0 +1,197 @@ +package baaahs.net + +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import baaahs.util.Logger +import kotlin.jvm.Synchronized +import kotlin.math.min + +class FragmentingUdpLink(private val wrappedLink: Network.Link) : Network.Link { + override val myAddress: Network.Address get() = wrappedLink.myAddress + override val udpMtu: Int get() = wrappedLink.udpMtu + + /** + * Header is 12 bytes long; format is: + * * message ID (short) + * * this frame size (short) + * * total payload size (long) + * * this frame offset (long) + */ + companion object { + const val headerSize = 12 + + val logger = Logger("FragmentingUdpLink") + } + + private val mtu = wrappedLink.udpMtu + private var nextMessageId: Short = 0 + + private var fragments = mutableListOf() + + class Fragment(val messageId: Short, val offset: Int, val bytes: ByteArray) { + override fun toString(): String { + return "Fragment(messageId=$messageId, offset=$offset, bytes=${bytes.size})" + } + } + + override fun listenUdp(port: Int, udpListener: Network.UdpListener): Network.UdpSocket { + return FragmentingUdpSocket(wrappedLink.listenUdp(port, object : Network.UdpListener { + private var incompleteCount = 0 + + @Synchronized + override fun receive(fromAddress: Network.Address, fromPort: Int, bytes: ByteArray) { + // reassemble fragmented payloads... + val reader = ByteArrayReader(bytes) + val messageId = reader.readShort() + val size = reader.readShort().toInt() + val totalSize = reader.readInt() + val offset = reader.readInt() +// println("Received UDP: messageId=$messageId thisFrameSize=${size} totalSize=${totalSize} offset=${offset} packetSize=${bytes.size}") + + if (size + headerSize > bytes.size) { + logger.debug { "Discarding short UDP message: ${size + headerSize} > ${bytes.size} available" } + return + } + + val frameBytes = reader.readNBytes(size) + if (offset == 0 && size == totalSize) { + udpListener.receive(fromAddress, fromPort, frameBytes) + } else { + addFragment(messageId, offset, frameBytes) + +// println("received fragment: ${thisFragment}") + if (offset + size == totalSize) { + // final fragment, try to reassemble… + + val myFragments = removeMessageId(messageId) + + val actualTotalSize = myFragments.map { it.bytes.size }.reduce { acc, i -> acc + i } + if (actualTotalSize == totalSize) { + val reassembleBytes = ByteArray(totalSize) + myFragments.forEach { + it.bytes.copyInto(reassembleBytes, it.offset) + } + + udpListener.receive(fromAddress, fromPort, reassembleBytes) + } else { + if (incompleteCount++ < 5) { + val maybeFinal = if (incompleteCount == 5) { + "FINAL WARNING: " + } else "" + + logger.debug { + "${maybeFinal}incomplete fragmented UDP packet from $fromAddress:$fromPort:" + + " actualTotalSize=$actualTotalSize != totalSize=$totalSize" + + " for messageId=$messageId" + + " (have ${myFragments.map { it.bytes.size }.joinToString(",")})" + } + } + + replaceFragments(myFragments) + } + } + } + } + })) + } + + @Synchronized + private fun addFragment(messageId: Short, offset: Int, frameBytes: ByteArray) { + val fragmentCount = fragments.size + if (fragmentCount > 200) { + fragments = fragments.subList(fragmentCount - 50, fragmentCount) + } + val thisFragment = Fragment(messageId, offset, frameBytes) + fragments.add(thisFragment) + } + + @Synchronized + private fun replaceFragments(myFragments: List) { + fragments.addAll(myFragments) + } + + private fun removeMessageId(messageId: Short): List { + val myFragments = popMessageFragments(messageId) + + val offsets = hashSetOf() + myFragments.removeAll { fragment -> + val alreadyThere = !offsets.add(fragment.offset) +// if (alreadyThere) { +// println("already there: ${fragment}") +// println("from: $myFragments") +// } + alreadyThere // duplicate, ignore + } + + if (myFragments.isEmpty()) { + println("remaining fragments = ${fragments}") + } + + return myFragments.sortedBy { it.offset } + } + + @Synchronized + private fun popMessageFragments(messageId: Short): ArrayList { + val myFragments = arrayListOf() + + fragments.removeAll { fragment -> + val remove = fragment.messageId == messageId + if (remove) myFragments.add(fragment) + remove + } + return myFragments + } + + inner class FragmentingUdpSocket(private val delegate: Network.UdpSocket) : Network.UdpSocket { + override val serverPort: Int get() = delegate.serverPort + + /** Sends payloads which might be larger than the network's MTU. */ + override fun sendUdp(toAddress: Network.Address, port: Int, bytes: ByteArray) { + transmitMultipartUdp(bytes) { fragment -> delegate.sendUdp(toAddress, port, fragment) } + } + + /** Broadcasts payloads which might be larger than the network's MTU. */ + override fun broadcastUdp(port: Int, bytes: ByteArray) { + transmitMultipartUdp(bytes) { fragment -> delegate.broadcastUdp(port, fragment) } + } + + /** Sends payloads which might be larger than the network's MTU. */ + private fun transmitMultipartUdp(bytes: ByteArray, fn: (bytes: ByteArray) -> Unit) { + val maxSize = 65535 * 2 // arbitrary but probably sensible + if (bytes.size > maxSize) { + throw IllegalArgumentException("buffer too big! ${bytes.size} must be < $maxSize") + } + + val messageId = nextMessageId++ + val messageCount = (bytes.size - 1) / (mtu - headerSize) + 1 + val buf = ByteArray(mtu) + var offset = 0 + for (i in 0 until messageCount) { + val writer = ByteArrayWriter(buf) + val thisFrameSize = min((mtu - headerSize), bytes.size - offset) + writer.writeShort(messageId) + writer.writeShort(thisFrameSize.toShort()) + writer.writeInt(bytes.size) + writer.writeInt(offset) + writer.writeNBytes(bytes, offset, offset + thisFrameSize) + fn(writer.toBytes()) + +// println("Sending UDP: messageId=$messageId thisFrameSize=${thisFrameSize.toShort()} totalSize=${bytes.size} offset=${offset}") + + offset += thisFrameSize + } + } + } + + override fun startHttpServer(port: Int): Network.HttpServer = + wrappedLink.startHttpServer(port) + + override fun connectWebSocket( + toAddress: Network.Address, + port: Int, + path: String, + webSocketListener: Network.WebSocketListener + ): Network.TcpConnection = + wrappedLink.connectWebSocket(toAddress, port, path, webSocketListener) + +} diff --git a/src/commonMain/kotlin/baaahs/net/Network.kt b/src/commonMain/kotlin/baaahs/net/Network.kt new file mode 100644 index 0000000000..969cc05b63 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/net/Network.kt @@ -0,0 +1,70 @@ +package baaahs.net + +import baaahs.proto.Message + +interface Network { + fun link(name: String): Link + + interface Link { + val myAddress: Address + + val udpMtu: Int + fun listenUdp(port: Int, udpListener: UdpListener): UdpSocket + + fun startHttpServer(port: Int): HttpServer + fun connectWebSocket( + toAddress: Address, + port: Int, + path: String, + webSocketListener: WebSocketListener + ): TcpConnection + } + + interface Address + + interface UdpListener { + fun receive(fromAddress: Address, fromPort: Int, bytes: ByteArray) + } + + interface UdpSocket { + val serverPort: Int + + fun sendUdp(toAddress: Address, port: Int, bytes: ByteArray) + fun sendUdp(toAddress: Address, port: Int, message: Message) = sendUdp(toAddress, port, message.toBytes()) + fun broadcastUdp(port: Int, bytes: ByteArray) + fun broadcastUdp(port: Int, message: Message) = broadcastUdp(port, message.toBytes()) + } + + interface TcpConnection { + val fromAddress: Address + val toAddress: Address + val port: Int + + fun send(bytes: ByteArray) + + fun send(message: Message) { + send(message.toBytes()) + } + } + + interface HttpServer { + fun listenWebSocket(path: String, webSocketListener: WebSocketListener) { + listenWebSocket(path) { webSocketListener } + } + + fun listenWebSocket(path: String, onConnect: (incomingConnection: TcpConnection) -> WebSocketListener) + } + + interface WebSocketListener { + fun connected(tcpConnection: TcpConnection) + fun receive(tcpConnection: TcpConnection, bytes: ByteArray) + fun reset(tcpConnection: TcpConnection) + } + + object UdpProxy { + val BROADCAST_OP = 'B' + val LISTEN_OP = 'L' + val SEND_OP = 'S' + val RECEIVE_OP = 'R' + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/CorePlugin.kt b/src/commonMain/kotlin/baaahs/plugin/CorePlugin.kt new file mode 100644 index 0000000000..1153627a57 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/CorePlugin.kt @@ -0,0 +1,609 @@ +package baaahs.plugin + +import baaahs.* +import baaahs.app.ui.CommonIcons +import baaahs.fixtures.* +import baaahs.gadgets.ColorPicker +import baaahs.gadgets.RadioButtonStrip +import baaahs.gadgets.Slider +import baaahs.gl.GlContext +import baaahs.gl.data.* +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.* +import baaahs.gl.shader.dialect.GenericShaderDialect +import baaahs.gl.shader.dialect.ShaderToyShaderDialect +import baaahs.gl.shader.type.* +import baaahs.glsl.Uniform +import baaahs.plugin.core.FixtureInfoDataSource +import baaahs.show.* +import baaahs.show.mutable.* +import baaahs.util.Logger +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient +import kotlinx.serialization.json.* + +class CorePlugin(private val pluginContext: PluginContext) : Plugin { + override val packageName: String = id + override val title: String = "SparkleMotion Core" + + override val contentTypes: List get() = + ContentType.coreTypes + + dataSourceBuilders.map { it.contentType } + + deviceTypes.map { it.resultContentType } + + deviceTypes.flatMap { it.dataSourceBuilders.map { builder -> builder.contentType } } + + override val dataSourceBuilders get() = CorePlugin.dataSourceBuilders + + override val addControlMenuItems: List get() = listOf( + AddControlMenuItem("New Button…", CommonIcons.Button) { mutableShow -> + MutableButtonControl(ButtonControl("New Button"), mutableShow) + }, + + AddControlMenuItem("New Button Group…", CommonIcons.ButtonGroup) { mutableShow -> + MutableButtonGroupControl( + "New Button Group", + ButtonGroupControl.Direction.Horizontal, + mutableShow = mutableShow + ) + }, + + AddControlMenuItem("New Color Palette…", CommonIcons.ColorPalette) { mutableShow -> + TODO("not implemented") + }, + + AddControlMenuItem("New Visualizer…", CommonIcons.Visualizer) { mutableShow -> + MutableVisualizerControl() + } + ) + + override val controlSerializers + get() = listOf( + classSerializer(GadgetControl.serializer()), + classSerializer(ButtonControl.serializer()), + classSerializer(ButtonGroupControl.serializer()), + classSerializer(VisualizerControl.serializer()) + ) + + override val deviceTypes: List + get() = listOf( + PixelArrayDevice, + MovingHeadDevice + ) + + override val shaderDialects + get() = listOf( + GenericShaderDialect, + ShaderToyShaderDialect + ) + + override val shaderTypes: List + get() = listOf( + ProjectionShader, + DistortionShader, + PaintShader, + FilterShader, + MoverShader + ) + + /** + * Sparkle Motion always uses a resolution of (1, 1), except for previews, which + * use [PreviewResolutionDataSource] instead. + */ + @Serializable + @SerialName("baaahs.Core:Resolution") + data class ResolutionDataSource(@Transient val `_`: Boolean = true) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "Resolution" + override val contentType: ContentType get() = ContentType.Resolution + override val serializerRegistrar get() = classSerializer(serializer()) + + override fun build(inputPort: InputPort): ResolutionDataSource = + ResolutionDataSource() + } + + override val pluginPackage: String get() = id + override val title: String get() = "Resolution" + override fun getType(): GlslType = GlslType.Vec2 + override val contentType: ContentType + get() = ContentType.Resolution + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + object : Feed, RefCounted by RefCounter() { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed = + SingleUniformFeed(glslProgram, this@ResolutionDataSource, id) { uniform -> + uniform.set(1f, 1f) + } + } + + override fun release() = Unit + } + } + + @Serializable + @SerialName("baaahs.Core:PreviewResolution") + data class PreviewResolutionDataSource(@Transient val `_`: Boolean = true) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "PreviewResolution" + override val contentType: ContentType get() = ContentType.PreviewResolution + override val serializerRegistrar get() = classSerializer(serializer()) + override fun build(inputPort: InputPort): PreviewResolutionDataSource = + PreviewResolutionDataSource() + } + + override val pluginPackage: String get() = id + override val title: String get() = "PreviewResolution" + override fun getType(): GlslType = GlslType.Vec2 + override val contentType: ContentType + get() = ContentType.PreviewResolution + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + object : Feed, RefCounted by RefCounter() { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed = object : ProgramFeed, GlslProgram.ResolutionListener { + private val uniform = glslProgram.getUniform(getVarName(id)) + override val isValid: Boolean = uniform != null + + private var x = 1f + private var y = 1f + + override fun onResolution(x: Float, y: Float) { + this.x = x + this.y = y + } + + override fun setOnProgram() { + uniform?.set(x, y) + } + } + } + + override fun release() = Unit + } + } + + @Serializable + @SerialName("baaahs.Core:Time") + data class TimeDataSource(@Transient val `_`: Boolean = true) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "Time" + override val contentType: ContentType get() = ContentType.Time + override val serializerRegistrar get() = classSerializer(serializer()) + override fun build(inputPort: InputPort): TimeDataSource = + TimeDataSource() + } + + override val pluginPackage: String get() = id + override val title: String get() = "Time" + override fun getType(): GlslType = GlslType.Float + override val contentType: ContentType + get() = ContentType.Time + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + object : Feed, RefCounted by RefCounter() { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed { + val clock = showPlayer.toolchain.plugins.pluginContext.clock + return SingleUniformFeed(glslProgram, this@TimeDataSource, id) { uniform -> + val thisTime = (clock.now() % 10000.0).toFloat() + uniform.set(thisTime) + } + } + } + + override fun release() = Unit + } + } + + @Deprecated("Obsolete, going away soon.") + @Serializable + @SerialName("baaahs.Core:PixelCoordsTexture") + data class PixelCoordsTextureDataSource(@Transient val `_`: Boolean = true) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "PixelCoords" + override val contentType: ContentType get() = ContentType.PixelCoordinatesTexture + override val serializerRegistrar get() = classSerializer(serializer()) + override fun looksValid(inputPort: InputPort): Boolean = false + override fun build(inputPort: InputPort): PixelCoordsTextureDataSource = + PixelCoordsTextureDataSource() + } + + override val pluginPackage: String get() = id + override val title: String get() = "Pixel Coordinates Texture" + override fun getType(): GlslType = GlslType.Sampler2D + override val contentType: ContentType + get() = ContentType.PixelCoordinatesTexture + override fun suggestId(): String = "pixelCoordsTexture" + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + object : Feed, RefCounted by RefCounter() { + override fun release() = super.release() + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed = object : ProgramFeed { + override val isValid: Boolean get() = false + } + } + } + } + + @Serializable + @SerialName("baaahs.Core:ModelInfo") + data class ModelInfoDataSource(@Transient val `_`: Boolean = true) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "Model Info" + override val contentType: ContentType get() = ContentType.ModelInfo + override val serializerRegistrar get() = classSerializer(serializer()) + private val modelInfoType = ContentType.ModelInfo.glslType + + // TODO: dataType should be something like "{vec3,vec3}" probably. + override fun looksValid(inputPort: InputPort): Boolean = + inputPort.type == modelInfoType || inputPort.contentType == ContentType.ModelInfo + + override fun build(inputPort: InputPort): ModelInfoDataSource = + ModelInfoDataSource() + } + + override val pluginPackage: String get() = id + override val title: String get() = "Model Info" + override fun getType(): GlslType = modelInfoType + override val contentType: ContentType + get() = ContentType.ModelInfo + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed { + return object : Feed, RefCounted by RefCounter() { + private val varPrefix = getVarName(id) + + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed { + val modelInfo = showPlayer.modelInfo + val center by lazy { modelInfo.center } + val extents by lazy { modelInfo.extents } + + return object : ProgramFeed { + override val updateMode: UpdateMode get() = UpdateMode.ONCE + val centerUniform = glslProgram.getUniform("${varPrefix}.center") + val extentsUniform = glslProgram.getUniform("${varPrefix}.extents") + + override val isValid: Boolean + get() = centerUniform != null && extentsUniform != null + + override fun setOnProgram() { + centerUniform?.set(center) + extentsUniform?.set(extents) + } + } + } + } + + override fun release() = Unit + } + } + } + + @Serializable + @SerialName("baaahs.Core:RasterCoordinate") + data class RasterCoordinateDataSource(@Transient val `_`: Boolean = true) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "RasterCoordinate" + override val contentType: ContentType get() = ContentType.RasterCoordinate + override val serializerRegistrar get() = classSerializer(serializer()) + override fun build(inputPort: InputPort): RasterCoordinateDataSource = + RasterCoordinateDataSource() + } + + override val pluginPackage: String get() = id + override val title: String get() = "Raster Coordinate" + override fun getType(): GlslType = GlslType.Vec4 + override val contentType: ContentType + get() = ContentType.RasterCoordinate + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + object : Feed, RefCounted by RefCounter() { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram) = object : ProgramFeed {} + } + + override fun release() = Unit + } + + override fun isImplicit(): Boolean = true + override fun getVarName(id: String): String = "gl_FragCoord" + } + + interface GadgetDataSource : DataSource { + @SerialName("title") + val gadgetTitle: String + + override fun buildControl(): MutableGadgetControl { + return MutableGadgetControl(createGadget(), this) + } + + fun createGadget(): T + + fun set(gadget: T, uniform: Uniform) + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed { + val gadget = showPlayer.useGadget(this) + ?: run { + logger.debug { "No control gadget registered for datasource $id, creating one. This is probably busted." } + createGadget() + } + + return object : GadgetFeed, RefCounted by RefCounter() { + override val id: String = id + override val gadget: Gadget = gadget + + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed { + return SingleUniformFeed(glslProgram, this@GadgetDataSource, id) { uniform -> + this@GadgetDataSource.set(gadget, uniform) + } + } + } + + override fun release() = Unit + } + } + } + + interface GadgetFeed : Feed { + val id: String + val gadget: Gadget + } + + @Serializable + @SerialName("baaahs.Core:Slider") + data class SliderDataSource( + @SerialName("title") + override val gadgetTitle: String, + val initialValue: Float, + val minValue: Float, + val maxValue: Float, + val stepValue: Float? = null + ) : GadgetDataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "Slider" + override val contentType: ContentType get() = ContentType.Float + override val serializerRegistrar get() = classSerializer(serializer()) + + override fun looksValid(inputPort: InputPort): Boolean = + inputPort.dataTypeIs(GlslType.Float) + + override fun build(inputPort: InputPort): SliderDataSource { + val config = inputPort.pluginConfig + return SliderDataSource( + inputPort.title, + initialValue = config.getFloat("default") ?: 1f, + minValue = config.getFloat("min") ?: 0f, + maxValue = config.getFloat("max") ?: 1f, + stepValue = config.getFloat("step") + ) + } + + private fun JsonObject?.getFloat(key: String): Float? { + return try { + this?.get(key)?.jsonPrimitive?.float + } catch (e: NumberFormatException) { + logger.debug(e) { + "Invalid number for key \"$key\": ${this?.get(key)?.jsonPrimitive?.contentOrNull}" + } + null + } + } + } + + override val pluginPackage: String get() = id + override val title: String get() = "$gadgetTitle $resourceName" + override fun getType(): GlslType = GlslType.Float + override val contentType: ContentType + get() = ContentType.Float + override fun suggestId(): String = "$gadgetTitle Slider".camelize() + + override fun createGadget(): Slider = + Slider(gadgetTitle, initialValue, minValue, maxValue, stepValue) + + override fun set(gadget: Slider, uniform: Uniform) { + uniform.set(gadget.value) + } + } + + @Serializable + @SerialName("baaahs.Core:XyPad") + data class XyPadDataSource( + @SerialName("title") + val gadgetTitle: String, + val varPrefix: String + ) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "XyPad" + override val contentType: ContentType get() = ContentType.XyCoordinate + override val serializerRegistrar get() = classSerializer(serializer()) + + override fun looksValid(inputPort: InputPort): Boolean = + inputPort.dataTypeIs(GlslType.Vec2) + + override fun build(inputPort: InputPort): XyPadDataSource = + XyPadDataSource(inputPort.title, inputPort.suggestVarName()) + } + + override val pluginPackage: String get() = id + override val title: String get() = "XY Pad" + override fun getType(): GlslType = GlslType.Vec2 + override val contentType: ContentType + get() = ContentType.XyCoordinate + override fun suggestId(): String = "$gadgetTitle XY Pad".camelize() + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed { + return object : Feed, RefCounted by RefCounter() { +// val xControl = showPlayer.useGadget("${varPrefix}_x") +// val yControl = showPlayer.useGadget("${varPrefix}_y") + + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed { + return object : ProgramFeed { + override val isValid: Boolean + get() = false + + override fun setOnProgram() { + // uniform.set(xControl.value, yControl.value) + } + } + } + } + + override fun release() = Unit + } + } + } + + @Serializable + @SerialName("baaahs.Core:ColorPicker") + data class ColorPickerDataSource( + @SerialName("title") + override val gadgetTitle: String, + val initialValue: Color + ) : GadgetDataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "ColorPicker" + override val contentType: ContentType get() = ContentType.Color + override val serializerRegistrar get() = classSerializer(serializer()) + + override fun looksValid(inputPort: InputPort): Boolean = + inputPort.dataTypeIs(GlslType.Vec4) + + override fun build(inputPort: InputPort): ColorPickerDataSource { + val default = inputPort.pluginConfig?.get("default")?.jsonPrimitive?.contentOrNull + + return ColorPickerDataSource( + inputPort.title, + initialValue = default?.let { Color.from(it) } ?: Color.WHITE + ) + } + } + + override val pluginPackage: String get() = id + override val title: String get() = "$gadgetTitle $resourceName" + override fun getType(): GlslType = GlslType.Vec4 + override val contentType: ContentType + get() = ContentType.Color + override fun suggestId(): String = "$gadgetTitle Color Picker".camelize() + + override fun createGadget(): ColorPicker = ColorPicker(gadgetTitle, initialValue) + + override fun set(gadget: ColorPicker, uniform: Uniform) { + val color = gadget.color +// when (inputPortRef.type) { +// GlslType.Vec3 -> uniform.set(color.redF, color.greenF, color.blueF) +// GlslType.Vec4 -> + uniform.set(color.redF, color.greenF, color.blueF, color.alphaF) +// } + } + } + + @Serializable + @SerialName("baaahs.Core:RadioButtonStrip") + data class RadioButtonStripDataSource( + @SerialName("title") + override val gadgetTitle: String, + val options: List, + val initialSelectionIndex: Int + ) : GadgetDataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "Radio Button Strip" + override val contentType: ContentType get() = ContentType.Int + override val serializerRegistrar get() = classSerializer(serializer()) + + override fun looksValid(inputPort: InputPort): Boolean = + inputPort.dataTypeIs(GlslType.Int) + + override fun build(inputPort: InputPort): RadioButtonStripDataSource { + val config = inputPort.pluginConfig + + val initialSelectionIndex = config?.getValue("default")?.jsonPrimitive?.int ?: 0 + + val options = config + ?.let { it["options"]?.jsonArray } + ?.map { it.jsonPrimitive.content } + ?: error("no options given") + + return RadioButtonStripDataSource( + inputPort.title, + options, + initialSelectionIndex + ) + } + } + + override val pluginPackage: String get() = id + override val title: String get() = resourceName + override fun getType(): GlslType = GlslType.Int + override val contentType: ContentType + get() = ContentType.Int + + override fun createGadget(): RadioButtonStrip { + return RadioButtonStrip(gadgetTitle, options, initialSelectionIndex) + } + + override fun set(gadget: RadioButtonStrip, uniform: Uniform) { + TODO("not implemented") + } + } + + @Serializable + @SerialName("baaahs.Core:Image") + data class ImageDataSource(val imageTitle: String) : DataSource { + companion object : DataSourceBuilder { + override val resourceName: String get() = "Image" + override val contentType: ContentType get() = ContentType.Color + override val serializerRegistrar get() = classSerializer(serializer()) + override fun looksValid(inputPort: InputPort): Boolean = + inputPort.dataTypeIs(GlslType.Sampler2D) + + override fun build(inputPort: InputPort): ImageDataSource = + ImageDataSource(inputPort.title) + } + + override val pluginPackage: String get() = id + override val title: String get() = "Image" + override fun getType(): GlslType = GlslType.Sampler2D + override val contentType: ContentType get() = ContentType.Color + + override fun suggestId(): String = "$imageTitle Image".camelize() + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + object : Feed, RefCounted by RefCounter() { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed = + SingleUniformFeed(glslProgram, this@ImageDataSource, id) { + // no-op + } + } + + override fun release() = Unit + } + } + + companion object : PluginBuilder { + override val id = "baaahs.Core" + + override fun build(pluginContext: PluginContext) = CorePlugin(pluginContext) + + private val dataSourceBuilders = listOf( + PixelCoordsTextureDataSource, + ModelInfoDataSource, + XyPadDataSource, + ColorPickerDataSource, + TimeDataSource, + ResolutionDataSource, + PreviewResolutionDataSource, + SliderDataSource, + FixtureInfoDataSource, + RasterCoordinateDataSource + ) + + private val logger = Logger("CorePlugin") + } +} diff --git a/src/commonMain/kotlin/baaahs/plugin/Plugin.kt b/src/commonMain/kotlin/baaahs/plugin/Plugin.kt new file mode 100644 index 0000000000..e313c41f52 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/Plugin.kt @@ -0,0 +1,81 @@ +package baaahs.plugin + +import baaahs.fixtures.DeviceType +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.dialect.ShaderDialect +import baaahs.gl.shader.type.ShaderType +import baaahs.show.AddControlMenuItem +import baaahs.show.Control +import baaahs.show.DataSource +import baaahs.show.DataSourceBuilder +import baaahs.util.Clock +import kotlinx.serialization.InternalSerializationApi +import kotlinx.serialization.KSerializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.descriptors.StructureKind +import kotlinx.serialization.descriptors.buildSerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.modules.PolymorphicModuleBuilder +import kotlin.reflect.KClass + +interface Plugin { + val packageName: String + val title: String + + val addControlMenuItems: List + get() = emptyList() + + val contentTypes: List + get() = emptyList() + + val controlSerializers: List> + get() = emptyList() + + val dataSourceBuilders: List> + get() = emptyList() + + val deviceTypes: List + get() = emptyList() + + val shaderDialects: List + get() = emptyList() + + val shaderTypes: List + get() = emptyList() +} + +class SerializerRegistrar(val klass: KClass, val serializer: KSerializer) { + fun register(polymorphicModuleBuilder: PolymorphicModuleBuilder) { + polymorphicModuleBuilder.subclass(klass, serializer) + } +} + +@OptIn(InternalSerializationApi::class) +class ObjectSerializer(serialName: String, private val objectInstance: T) : KSerializer { + override val descriptor: SerialDescriptor = buildSerialDescriptor(serialName, StructureKind.OBJECT) + + override fun serialize(encoder: Encoder, value: T) { + encoder.beginStructure(descriptor).endStructure(descriptor) + } + + override fun deserialize(decoder: Decoder): T { + decoder.beginStructure(descriptor).endStructure(descriptor) + return objectInstance + } +} + +inline fun classSerializer(serializer: KSerializer) = + SerializerRegistrar(T::class, serializer) + +inline fun objectSerializer(serialName: String, t: T) = + classSerializer(ObjectSerializer(serialName, t)) + +interface PluginBuilder { + val id: String + fun build(pluginContext: PluginContext): Plugin +} + +class PluginContext( + val clock: Clock +) \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/Plugins.kt b/src/commonMain/kotlin/baaahs/plugin/Plugins.kt new file mode 100644 index 0000000000..12a5fcd7ac --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/Plugins.kt @@ -0,0 +1,290 @@ +package baaahs.plugin + +import baaahs.Gadget +import baaahs.app.ui.editor.PortLinkOption +import baaahs.fixtures.DeviceType +import baaahs.getBang +import baaahs.gl.glsl.GlslType +import baaahs.gl.glsl.LinkException +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.* +import baaahs.show.* +import baaahs.show.mutable.MutableDataSourcePort +import baaahs.util.Clock +import baaahs.util.Time +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.modules.SerializersModule +import kotlinx.serialization.modules.SerializersModuleBuilder +import kotlinx.serialization.modules.polymorphic +import kotlin.reflect.KClass + +@Serializable +data class PluginRef( + /** A unique ID for plugin. Should be lowercase alphanums and dots, like a package name. */ + val pluginId: String, + /** A unique ID for a resource within a plugin. Should be CamelCase alphanums, like a class name. */ + val resourceName: String +) { + fun toRef() = "$pluginId:$resourceName" + + companion object { + fun hasPackage(identString: String): Boolean { + return identString.contains(":") + } + + fun from(identString: String): PluginRef { + val result = Regex("(([\\w.]+):)?(\\w+)").matchEntire(identString) + return if (result != null) { + val (_, pluginId, resourceName) = result.destructured + if (pluginId.isEmpty()) { + PluginRef(Plugins.default, resourceName) + } else if (!pluginId.contains(".")) { + PluginRef("baaahs.$pluginId", resourceName) + } else { + PluginRef(pluginId, resourceName) + } + } else { + PluginRef(Plugins.default, identString) + } + } + } +} + +class Plugins private constructor( + val pluginContext: PluginContext, + private val plugins: List +) { + constructor( + pluginBuilders: List, + pluginContext: PluginContext + ) : this(pluginContext, pluginBuilders.map { it.build(pluginContext) }) + + constructor( + vararg pluginBuilders: PluginBuilder, + pluginContext: PluginContext + ) : this(pluginContext, pluginBuilders.map { it.build(pluginContext) }) + + private val byPackage: Map = plugins.associateBy { it.packageName } + + val addControlMenuItems: List = plugins.flatMap { it.addControlMenuItems } + + private val contentTypes = ContentTypes() + + private val controlSerialModule = SerializersModule { + registerSerializers { controlSerializers } + } + + private val dataSourceBuilders = DataSourceBuilders() + + val deviceTypes = DeviceTypes() + + val shaderDialects = ShaderDialects() + val shaderTypes = ShaderTypes() + + private inline fun SerializersModuleBuilder.registerSerializers( + getSerializersFn: Plugin.() -> List> + ) { + polymorphic(T::class) { + plugins.forEach { plugin -> + plugin.getSerializersFn().forEach { classSerializer -> + with(classSerializer) { register(this@polymorphic) } + } + } + } + } + + val serialModule = SerializersModule { + include(Gadget.serialModule) + include(contentTypes.serialModule) + include(controlSerialModule) + include(dataSourceBuilders.serialModule) + include(deviceTypes.serialModule) + } + + val json = Json { serializersModule = this@Plugins.serialModule } + + fun findPlugin(pluginKlass: KClass): T { + @Suppress("UNCHECKED_CAST") + return plugins.find { it::class == pluginKlass } as T + } + + inline fun findPlugin(): T = findPlugin(T::class) + + fun resolveContentType(name: String): ContentType? { + return contentTypes.byId[name] + } + + fun resolveContentType(glslType: GlslType): ContentType { + return if (glslType is GlslType.Struct) + contentTypes.all.firstOrNull() { it.glslType == glslType } + ?: ContentType.unknown(glslType) + else ContentType.unknown(glslType) + } + + fun suggestContentTypes(inputPort: InputPort): Set { + val glslType = inputPort.type + return contentTypes.matchingType(glslType) + } + + fun findDataSourceBuilder(pluginRef: PluginRef): DataSourceBuilder { + return dataSourceBuilders.byPluginRef[pluginRef] + ?: throw LinkException("unknown plugin resource $pluginRef") + } + + fun resolveDataSource(inputPort: InputPort): DataSource { + val pluginRef = inputPort.pluginRef ?: error("no plugin specified") + val builder = findDataSourceBuilder(pluginRef) + return builder.build(inputPort) + } + + fun suggestDataSources( + inputPort: InputPort, + suggestedContentTypes: Set = emptySet() + ): List { + val suggestions = (setOfNotNull(inputPort.contentType) + suggestedContentTypes).flatMap { contentType -> + val dataSourceCandidates = + dataSourceBuilders.buildForContentType(contentType, inputPort) + + deviceTypes.buildForContentType(contentType, inputPort) + + dataSourceCandidates.map { dataSource -> + PortLinkOption( + MutableDataSourcePort(dataSource), + wasPurposeBuilt = dataSource.appearsToBePurposeBuiltFor(inputPort), + isPluginSuggestion = true, + isExactContentType = dataSource.contentType == inputPort.contentType + // TODO: This is dodgy. Trying to get Slider to win over channel ref. + || inputPort.contentType.isUnknown() + ) + } + } + + return if (suggestions.isNotEmpty()) { + suggestions + } else { + dataSourceBuilders.all.map { + it.suggestDataSources(inputPort, suggestedContentTypes) + }.flatten() + } + } + + private fun getPlugin(packageName: String): Plugin { + return byPackage[packageName] + ?: error("no such plugin \"$packageName\"") + } + + fun decodeDataSource(pluginId: String, pluginData: JsonObject): DataSource { + TODO("not implemented") + } + + operator fun plus(pluginBuilder: PluginBuilder): Plugins { + return Plugins(pluginContext, plugins + pluginBuilder.build(pluginContext)) + } + + fun find(packageName: String): Plugin { + return byPackage.getBang(packageName, "package") + } + + companion object { + fun safe(pluginContext: PluginContext): Plugins = + Plugins(listOf(CorePlugin), pluginContext) + + val default = CorePlugin.id + + /** Don't use me except from [baaahs.show.SampleData] and [baaahs.glsl.GuruMeditationError]. */ + internal val dummyContext = PluginContext(ZeroClock()) + + private class ZeroClock : Clock { + override fun now(): Time = 0.0 + } + } + + inner class ContentTypes { + val all = plugins.flatMap { it.contentTypes }.toSet() + internal val byId = all.associateBy { it.id } + private val byGlslType = all.filter { it.suggest }.groupBy({ it.glslType }, { it }) + + val serialModule = SerializersModule { + contextual(ContentType::class, object : KSerializer { + override val descriptor: SerialDescriptor + get() = String.serializer().descriptor + + override fun deserialize(decoder: Decoder): ContentType { + val id = decoder.decodeString() + return byId[id] ?: error("Unknown content type \"$id\"") + } + + override fun serialize(encoder: Encoder, value: ContentType) { + encoder.encodeString(value.id) + } + }) + } + + fun matchingType(glslType: GlslType): Set { + val exactMatches = byGlslType[glslType] ?: emptyList() + return exactMatches.toSet() + } + } + + inner class DataSourceBuilders { + private val withPlugin = plugins.flatMap { plugin -> plugin.dataSourceBuilders.map { plugin to it } } + + val all = withPlugin.map { it.second } + + val byPluginRef = withPlugin.associate { (plugin, builder) -> + PluginRef(plugin.packageName, builder.resourceName) to builder + } + + val byContentType = all.groupBy { builder -> builder.contentType } + + val serialModule = SerializersModule { + registerSerializers { + dataSourceBuilders.map { it.serializerRegistrar } + + deviceTypes.flatMap { it.dataSourceBuilders.map { builder -> builder.serializerRegistrar } } + } + } + + fun buildForContentType( + contentType: ContentType?, + inputPort: InputPort + ) = ( + dataSourceBuilders.byContentType[contentType] + ?.map { it.build(inputPort) } + ?: emptyList() + ) + } + + inner class DeviceTypes { + val all = plugins.flatMap { it.deviceTypes } + + val serialModule = SerializersModule { + val serializer = DeviceType.Serializer(all.associateBy { it.id }) + + contextual(DeviceType::class, serializer) + all.forEach { deviceType -> + @Suppress("UNCHECKED_CAST") + contextual(deviceType::class as KClass, serializer) + } + } + + fun buildForContentType(contentType: ContentType, inputPort: InputPort): List { + return all.flatMap { deviceType -> + deviceType.dataSourceBuilders.filter { dataSource -> dataSource.contentType == contentType } + }.map { it.build(inputPort) } + } + } + + inner class ShaderDialects { + val all = plugins.flatMap { it.shaderDialects } + } + + inner class ShaderTypes { + val all = plugins.flatMap { it.shaderTypes } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatData.kt b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatData.kt new file mode 100644 index 0000000000..293214ff3d --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatData.kt @@ -0,0 +1,81 @@ +package baaahs.plugin.beatlink + +import baaahs.ui.IObservable +import baaahs.ui.Observable +import baaahs.util.Clock +import baaahs.util.Time +import kotlinx.serialization.Serializable +import kotlin.math.* + +@Serializable +data class BeatData( + /** Some moment in history when we saw a beat 1. */ + val measureStartTime: Time, + + val beatIntervalMs: Int, + + val beatsPerMeasure: Int = 4, + + val confidence: Float = 1f +) { + private val beatIntervalSec: Double get() = beatIntervalMs / 1000.0 + + val bpm: Float + get() { + if (beatIntervalMs == 0) return 0.0.toFloat() + return (60_000 / beatIntervalMs).toFloat() + } + + fun beatWithinMeasure(clock: Clock): Float { + if (beatIntervalMs == 0) return -1f + val elapsedSinceStartOfMeasure = clock.now() - measureStartTime + return ((elapsedSinceStartOfMeasure / beatIntervalSec).toFloat()) % beatsPerMeasure + } + + fun timeSinceMeasure(clock: Clock): Float { + if (beatIntervalMs == 0) return -1f + val elapsedSinceStartOfMeasure = clock.now() - measureStartTime + return (elapsedSinceStartOfMeasure / beatIntervalSec).toFloat() + } + + /** + * Returns 1.0 if we're on a beat, 0.0 when we're furthest from the last beat, + * and anywhere in between otherwise. + */ + fun fractionTillNextBeat(clock: Clock): Float { + return if (beatIntervalMs == 0) -1f else return clamp(sineWithEarlyAttack(clock)) * confidence + } + + fun millisTillNextBeat(clock: Clock): Int { + val elapsedSinceStartOfMeasure = (clock.now() - measureStartTime) + return ((beatIntervalSec - elapsedSinceStartOfMeasure % beatIntervalSec) * 1000).roundToInt() + } + + // TODO: make these into pluggable strategies that can be selected by shows. + private fun sineWithEarlyAttack(clock: Clock): Float { + return (((sin(beatWithinMeasure(clock) % 1f - .87) * 2 * PI) * 1.25 + 1) / 2.0).toFloat() + } + + private fun sawtooth(clock: Clock): Float { + return 1 - beatWithinMeasure(clock) % 1.0f + } + + /** Returns 1.0 if we're on the start of the measure, 0.0 when we're furthest from the start of the measure, + * and anywhere in between otherwise. */ + fun fractionTillNextMeasure(clock: Clock): Float = + if (beatIntervalMs == 0) -1f else 1 - timeSinceMeasure(clock) + + private fun clamp(f: Float): Float = min(1f, max(f, 0f)) +} + + +interface BeatSource : IObservable { + fun getBeatData(): BeatData + + object None : Observable(), BeatSource { + val none = BeatData(0.0, 0, 4, 0f) + + override fun getBeatData(): BeatData = none + } +} + diff --git a/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkControl.kt b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkControl.kt new file mode 100644 index 0000000000..01390b8716 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkControl.kt @@ -0,0 +1,61 @@ +package baaahs.plugin.beatlink + +import baaahs.Gadget +import baaahs.ShowPlayer +import baaahs.app.ui.EditorPanel +import baaahs.app.ui.editor.EditableManager +import baaahs.show.Control +import baaahs.show.live.ControlProps +import baaahs.show.live.OpenContext +import baaahs.show.live.OpenControl +import baaahs.show.mutable.MutableControl +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.ShowBuilder +import baaahs.ui.Renderer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + +@Serializable +@SerialName("baaahs.BeatLink:BeatLink") +data class BeatLinkControl(@Transient private val `_`: Boolean = false) : Control { + override val title: String get() = "BeatLink" + + override fun createMutable(mutableShow: MutableShow): MutableControl { + return MutableBeatLinkControl() + } + + override fun open(id: String, openContext: OpenContext, showPlayer: ShowPlayer): OpenControl { + return OpenBeatLinkControl(id, showPlayer) + } +} + +class MutableBeatLinkControl : MutableControl { + override val title: String get() = "BeatLink" + + override var asBuiltId: String? = null + + override fun getEditorPanels(editableManager: EditableManager): List { + return emptyList() + } + + override fun build(showBuilder: ShowBuilder): Control { + return BeatLinkControl() + } + +} + +class OpenBeatLinkControl( + override val id: String, + private val showPlayer: ShowPlayer +) : OpenControl { + override val gadget: Gadget? + get() = null + + override fun toNewMutable(mutableShow: MutableShow): MutableControl { + return MutableBeatLinkControl() + } + + override fun getRenderer(controlProps: ControlProps): Renderer = + beatLinkViews.forControl(this, controlProps) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkPlugin.kt b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkPlugin.kt new file mode 100644 index 0000000000..b6bccb9b62 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkPlugin.kt @@ -0,0 +1,116 @@ +package baaahs.plugin.beatlink + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.ShowPlayer +import baaahs.app.ui.CommonIcons +import baaahs.app.ui.editor.PortLinkOption +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.data.ProgramFeed +import baaahs.gl.data.SingleUniformFeed +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.plugin.* +import baaahs.show.* +import baaahs.show.mutable.MutableDataSourcePort +import kotlinx.serialization.SerialName +import kotlinx.serialization.descriptors.* + +class BeatLinkPlugin internal constructor( + internal val beatSource: BeatSource, + pluginContext: PluginContext +) : Plugin { + override val packageName: String = id + override val title: String = "Beat Link" + + private val clock = pluginContext.clock + + // We'll just make one up-front. We only ever want one (because equality + // is using object identity), and there's no overhead. + internal val beatLinkDataSource = BeatLinkDataSource() + + override val addControlMenuItems: List + get() = listOf( + AddControlMenuItem("New BeatLink Control…", CommonIcons.BeatLinkControl) { mutableShow -> + MutableBeatLinkControl() + } + ) + override val contentTypes: List + get() = listOf(beatDataContentType) + + override val controlSerializers + get() = listOf( + classSerializer(BeatLinkControl.serializer()) + ) + + override val dataSourceBuilders: List> + get() = listOf( + object : DataSourceBuilder { + override val resourceName: String get() = "BeatLink" + override val contentType: ContentType get() = beatDataContentType + override val serializerRegistrar get() = + objectSerializer("baaahs.BeatLink:BeatLink", beatLinkDataSource) + + override fun suggestDataSources( + inputPort: InputPort, + suggestedContentTypes: Set + ): List { + return if (inputPort.contentType == beatDataContentType + || suggestedContentTypes.contains(beatDataContentType) + || inputPort.type == GlslType.Float + ) { + listOf( + PortLinkOption( + MutableDataSourcePort(beatLinkDataSource), + wasPurposeBuilt = true, + isExactContentType = inputPort.contentType == beatDataContentType, + isPluginSuggestion = true + ) + ) + } else emptyList() + } + + override fun build(inputPort: InputPort): BeatLinkDataSource = beatLinkDataSource + } + ) + + @SerialName("baaahs.BeatLink:BeatLink") + inner class BeatLinkDataSource internal constructor(): DataSource { + override val pluginPackage: String get() = id + override val title: String get() = "BeatLink" + override fun getType(): GlslType = GlslType.Float + override val contentType: ContentType + get() = beatDataContentType + + override fun createFeed(showPlayer: ShowPlayer, id: String): baaahs.gl.data.Feed { + return object : baaahs.gl.data.Feed, RefCounted by RefCounter() { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram): ProgramFeed = + SingleUniformFeed(glslProgram, this@BeatLinkDataSource, id) { uniform -> + uniform.set(beatSource.getBeatData().fractionTillNextBeat(clock)) + } + } + + override fun release() { + super.release() + } + } + } + } + + companion object { + val id = "baaahs.BeatLink" + val beatDataContentType = ContentType("beat-link", "Beat Link", GlslType.Float) + } + + class Builder(internal val beatSource: BeatSource) : PluginBuilder { + override val id = BeatLinkPlugin.id + + override fun build(pluginContext: PluginContext): Plugin { + return BeatLinkPlugin(beatSource, pluginContext) + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkViews.kt b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkViews.kt new file mode 100644 index 0000000000..3682397af5 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/beatlink/BeatLinkViews.kt @@ -0,0 +1,11 @@ +package baaahs.plugin.beatlink + +import baaahs.show.live.ControlProps +import baaahs.ui.Renderer + +interface BeatLinkViews { + fun forControl(openButtonControl: OpenBeatLinkControl, controlProps: ControlProps): Renderer +} + +val beatLinkViews by lazy { getBeatLinkViews() } +expect fun getBeatLinkViews(): BeatLinkViews \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/core/FixtureInfo.kt b/src/commonMain/kotlin/baaahs/plugin/core/FixtureInfo.kt new file mode 100644 index 0000000000..105149e909 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/core/FixtureInfo.kt @@ -0,0 +1,83 @@ +package baaahs.plugin.core + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.ShowPlayer +import baaahs.geom.Vector3F +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.data.Feed +import baaahs.gl.data.ProgramFeed +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.gl.render.RenderTarget +import baaahs.gl.shader.InputPort +import baaahs.model.Model +import baaahs.plugin.CorePlugin +import baaahs.plugin.classSerializer +import baaahs.show.DataSource +import baaahs.show.DataSourceBuilder +import baaahs.show.UpdateMode +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.Transient + + +val fixtureInfoStruct = GlslType.Struct( + "FixtureInfo", + "origin" to GlslType.Vec3, + "heading" to GlslType.Vec3 +) + +val fixtureInfoContentType = ContentType("fixture-info", "Fixture Info", fixtureInfoStruct) + +@Serializable +@SerialName("baaahs.Core.FixtureInfo") +data class FixtureInfoDataSource(@Transient val `_`: Boolean = true) : DataSource { + override val pluginPackage: String get() = CorePlugin.id + override val title: String get() = "Fixture Info" + override fun getType(): GlslType = fixtureInfoStruct + override val contentType: ContentType + get() = fixtureInfoContentType + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed { + return FixtureInfoFeed(getVarName(id)) + } + + companion object : DataSourceBuilder { + override val resourceName: String get() = "baaahs.Core.FixtureInfo" + override val contentType: ContentType get() = fixtureInfoContentType + override val serializerRegistrar get() = classSerializer(serializer()) + + override fun build(inputPort: InputPort): FixtureInfoDataSource { + return FixtureInfoDataSource() + } + } +} + +class FixtureInfoFeed( + private val id: String, + private val refCounter: RefCounter = RefCounter() +) : Feed, RefCounted by refCounter { + override fun bind(gl: GlContext): EngineFeed = object : EngineFeed { + override fun bind(glslProgram: GlslProgram) = object : ProgramFeed { + override val updateMode: UpdateMode get() = UpdateMode.PER_FIXTURE + + private val originUniform = glslProgram.getUniform("$id.origin") + private val headingUniform = glslProgram.getUniform("$id.heading") + + override val isValid: Boolean get() = originUniform != null && headingUniform != null + + override fun setOnProgram(renderTarget: RenderTarget) { + val fixtureInfo = renderTarget.fixture.modelEntity as? Model.FixtureInfo + originUniform!!.set(fixtureInfo?.origin ?: Vector3F.origin) + headingUniform!!.set(fixtureInfo?.heading ?: Vector3F.origin) + } + } + } + + override fun release() { + refCounter.release() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/plugin/core/MovingHeadParams.kt b/src/commonMain/kotlin/baaahs/plugin/core/MovingHeadParams.kt new file mode 100644 index 0000000000..a87ea8b7e6 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/plugin/core/MovingHeadParams.kt @@ -0,0 +1,64 @@ +package baaahs.plugin.core + +import baaahs.fixtures.FloatsResultType +import baaahs.fixtures.ResultBuffer +import baaahs.fixtures.ResultType +import baaahs.gl.GlContext +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import com.danielgergely.kgl.GL_RGBA + +data class MovingHeadParams( + val pan: Float, + val tilt: Float, + val colorWheel: Float, + val dimmer: Float +) { + + companion object { + val struct = GlslType.Struct( + "MovingHeadParams", + "pan" to GlslType.Float, + "tilt" to GlslType.Float, + "colorWheel" to GlslType.Float, + "dimmer" to GlslType.Float, + defaultInitializer = "MovingHeadParams(0., 0., 0., 1.)" + ) + + val contentType = ContentType( + "moving-head-params", "Moving Head Params", + struct, outputRepresentation = GlslType.Vec4 + ) + + val resultType: ResultType = object : FloatsResultType(4, GlContext.GL_RGBA32F, GL_RGBA) { + override fun createParamBuffer(gl: GlContext, index: Int): ResultBuffer { + return ParamBuffer(gl, index, this) + } + } + } + + class ParamBuffer(gl: GlContext, index: Int, type: ResultType) : FloatsResultType.Buffer(gl, index, type) { + operator fun get(pixelIndex: Int): MovingHeadParams { + val offset = pixelIndex * type.stride + + return MovingHeadParams( + pan = floatBuffer[offset], + tilt = floatBuffer[offset + 1], + colorWheel = floatBuffer[offset + 2], + dimmer = floatBuffer[offset + 3] + ) + } + + override fun getView(pixelOffset: Int, pixelCount: Int): baaahs.fixtures.ResultView { + return ResultView(this, pixelOffset, pixelCount) + } + } + + class ResultView( + val buffer: ParamBuffer, + pixelOffset: Int, + pixelCount: Int + ) : baaahs.fixtures.ResultView(pixelOffset, pixelCount) { + operator fun get(pixelIndex: Int): MovingHeadParams = buffer[pixelOffset + pixelIndex] + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/proto/Protocol.kt b/src/commonMain/kotlin/baaahs/proto/Protocol.kt new file mode 100644 index 0000000000..40f290c26c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/proto/Protocol.kt @@ -0,0 +1,224 @@ +package baaahs.proto + +import baaahs.BrainId +import baaahs.BrainShader +import baaahs.geom.Vector2F +import baaahs.geom.Vector3F +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter + +object Ports { + const val PINKY = 8002 + const val BRAIN = 8003 + + const val PINKY_UI_TCP = 8004 + const val PINKY_MAPPER_TCP = 8005 + const val SIMULATOR_BRIDGE_TCP = 8006 +} + +enum class Type { + // UDP: + BRAIN_HELLO, + BRAIN_PANEL_SHADE, + MAPPER_HELLO, + BRAIN_ID_REQUEST, + BRAIN_MAPPING, + PING, + USE_FIRMWARE; + + companion object { + val values = values() + fun get(i: Byte) = values[i.toInt()] + } +} + +fun parse(bytes: ByteArray): Message { + val reader = ByteArrayReader(bytes) + return when (Type.get(reader.readByte())) { + Type.BRAIN_HELLO -> BrainHelloMessage.parse(reader) + Type.BRAIN_PANEL_SHADE -> BrainShaderMessage.parse(reader) + Type.MAPPER_HELLO -> MapperHelloMessage.parse(reader) + Type.BRAIN_ID_REQUEST -> BrainIdRequest.parse(reader) + Type.BRAIN_MAPPING -> BrainMappingMessage.parse(reader) + Type.PING -> PingMessage.parse(reader) + Type.USE_FIRMWARE -> UseFirmwareMessage.parse(reader) + } +} + +class BrainHelloMessage(val brainId: String, val surfaceName: String?, val firmwareVersion: String? = null, + val idfVersion: String? = null) : Message(Type.BRAIN_HELLO) { + companion object { + fun parse(reader: ByteArrayReader): BrainHelloMessage { + val brainId = reader.readString() + val surfaceName = reader.readNullableString() + val firmwareVersion = if (reader.hasMoreBytes()) reader.readNullableString() else null + val idfVersion = if (reader.hasMoreBytes()) reader.readNullableString() else null + return BrainHelloMessage(brainId, surfaceName, firmwareVersion, idfVersion) + } + } + + override fun serialize(writer: ByteArrayWriter) { + writer.writeString(brainId) + writer.writeNullableString(surfaceName) + writer.writeNullableString(firmwareVersion) + writer.writeNullableString(idfVersion) + } + + override fun toString(): String { + return "BrainHello $brainId, $surfaceName, $firmwareVersion, $idfVersion" + } +} + +class BrainShaderMessage(val brainShader: BrainShader<*>, val buffer: BrainShader.Buffer, val pongData: ByteArray? = null) : + Message(Type.BRAIN_PANEL_SHADE) { + companion object { + /** + * Suboptimal parser; on the Brain we'll do better than this. + */ + fun parse(reader: ByteArrayReader): BrainShaderMessage { + val pongData = if (reader.readBoolean()) reader.readBytes() else null + val shaderDesc = reader.readBytes() + val shader = BrainShader.parse(ByteArrayReader(shaderDesc)) + val buffer = shader.readBuffer(reader) + return BrainShaderMessage(shader, buffer, pongData) + } + } + + override fun serialize(writer: ByteArrayWriter) { + writer.writeBoolean(pongData != null) + if (pongData != null) writer.writeBytes(pongData) + writer.writeBytes(brainShader.descriptorBytes) + buffer.serialize(writer) + } +} + +/** + * The message that Pinky will send to a brain when Pinky has decided that + * the Brain should use a particular firmware. The url can point anywhere, + * either self hosted by Pinky or out into the nether reaches of the Interwebs. + * What could possibly go wrong? Pinky would __never__ tell a brain to go + * download a wikipedia article and use that as a firmware. It just won't + * be nice. + */ +class UseFirmwareMessage(val url: String) : + Message(Type.USE_FIRMWARE) { + companion object { + fun parse(reader: ByteArrayReader): UseFirmwareMessage { + return UseFirmwareMessage(reader.readString()) + } + } + + override fun serialize(writer: ByteArrayWriter) { + writer.writeString(url) + } +} + +class MapperHelloMessage(val isRunning: Boolean) : Message(Type.MAPPER_HELLO) { + companion object { + fun parse(reader: ByteArrayReader): MapperHelloMessage { + return MapperHelloMessage(reader.readBoolean()) + } + } + + override fun serialize(writer: ByteArrayWriter) { + writer.writeBoolean(isRunning) + } +} + +class BrainIdRequest : Message(Type.BRAIN_ID_REQUEST) { + companion object { + fun parse(reader: ByteArrayReader) = BrainIdRequest() + } + + override fun serialize(writer: ByteArrayWriter) { + } +} + +class BrainMappingMessage( + val brainId: BrainId, + val fixtureName: String?, + val uvMapName: String?, + val panelUvTopLeft: Vector2F, + val panelUvBottomRight: Vector2F, + val pixelCount: Int, + val pixelLocations: List +) : Message(Type.BRAIN_MAPPING) { + + companion object { + fun parse(reader: ByteArrayReader) = BrainMappingMessage( + BrainId(reader.readString()), // brainId + reader.readNullableString(), // surfaceName + reader.readNullableString(), // uvMapName + reader.readVector2F(), // panelUvTopLeft + reader.readVector2F(), // panelUvBottomRight + reader.readInt(), // pixelCount + reader.readRelativeVerticesList() + ) + + private fun ByteArrayReader.readVector2F() = Vector2F(readFloat(), readFloat()) + + private fun ByteArrayWriter.writeVector2F(v: Vector2F) { + writeFloat(v.x) + writeFloat(v.y) + } + + private fun ByteArrayReader.readRelativeVerticesList(): List { + val vertexCount = readInt() + return (0 until vertexCount).map { + Vector3F(readFloat(), readFloat(), readFloat()) + } + } + + private fun ByteArrayWriter.writeRelativeVerticesList(pixelLocations: List) { + writeInt(pixelLocations.size) + pixelLocations.forEach { vertex -> + writeFloat(vertex.x) + writeFloat(vertex.y) + writeFloat(vertex.z) + } + } + } + + override fun serialize(writer: ByteArrayWriter) { + writer.writeString(brainId.uuid) + writer.writeNullableString(fixtureName) + writer.writeNullableString(uvMapName) + writer.writeVector2F(panelUvTopLeft) + writer.writeVector2F(panelUvBottomRight) + writer.writeInt(pixelCount) + + val vertexCount = pixelLocations.size + writer.writeInt(vertexCount) + writer.writeRelativeVerticesList(pixelLocations) + } +} + +class PingMessage(val data: ByteArray, val isPong: Boolean = false) : Message(Type.PING) { + companion object { + fun parse(reader: ByteArrayReader): PingMessage { + val isPong = reader.readBoolean() + val data = reader.readBytes() + return PingMessage(data, isPong) + } + } + + override fun serialize(writer: ByteArrayWriter) { + writer.writeBoolean(isPong) + writer.writeBytes(data) + } +} + +open class Message(val type: Type) { + // TODO: send message length as the first four bytes, plus maybe sequence/reassembly info for UDP + fun toBytes(): ByteArray { + val writer = ByteArrayWriter(1 + size()) + writer.writeByte(type.ordinal.toByte()) + serialize(writer) + return writer.toBytes() + } + + open fun serialize(writer: ByteArrayWriter) { + } + + open fun size(): Int = 127 +} diff --git a/src/commonMain/kotlin/baaahs/shaders/PixelBrainShader.kt b/src/commonMain/kotlin/baaahs/shaders/PixelBrainShader.kt new file mode 100644 index 0000000000..44f05de7ef --- /dev/null +++ b/src/commonMain/kotlin/baaahs/shaders/PixelBrainShader.kt @@ -0,0 +1,284 @@ +package baaahs.shaders + +import baaahs.* +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import kotlin.math.min + +/** + * A shader that allows control of individual pixels' colors directly from a show. + * + * This is a suboptimal shader for most purposes, consider writing a custom shader instead! + */ +class PixelBrainShader(private val encoding: Encoding = Encoding.DIRECT_ARGB) : BrainShader(BrainShaderId.PIXEL) { + + enum class Encoding { + DIRECT_ARGB { + override fun createBuffer(shader: PixelBrainShader, pixelCount: Int) = + shader.DirectColorBuffer(pixelCount) + }, + DIRECT_RGB { + override fun createBuffer(shader: PixelBrainShader, pixelCount: Int) = + shader.DirectColorBuffer(pixelCount, true) + }, + INDEXED_2 { + override fun createBuffer(shader: PixelBrainShader, pixelCount: Int) = + shader.IndexedBuffer(1, pixelCount) + }, + INDEXED_4 { + override fun createBuffer(shader: PixelBrainShader, pixelCount: Int) = + shader.IndexedBuffer(2, pixelCount) + }, + INDEXED_16 { + override fun createBuffer(shader: PixelBrainShader, pixelCount: Int) = + shader.IndexedBuffer(4, pixelCount) + }; + + abstract fun createBuffer(shader: PixelBrainShader, pixelCount: Int): Buffer + + companion object { + val values = values() + fun get(i: Byte): Encoding { + return values[i.toInt()] + } + } + } + + override fun serializeConfig(writer: ByteArrayWriter) { + writer.writeByte(encoding.ordinal.toByte()) + } + + override fun createBuffer(pixelCount: Int): Buffer { +// if (pixelCount == SparkleMotion.PIXEL_COUNT_UNKNOWN) { +// SparkleMotion.DEFAULT_PIXEL_COUNT +// } else { +// pixelCount +// } + + return encoding.createBuffer(this, pixelCount) + } + + override fun createRenderer(): BrainShader.Renderer = Renderer() + + override fun readBuffer(reader: ByteArrayReader): Buffer { + val incomingPixelCount = reader.readShort().toInt() + val buf = encoding.createBuffer(this, incomingPixelCount) + buf.read(reader, incomingPixelCount) + return buf + } + + companion object : BrainShaderReader { + override fun parse(reader: ByteArrayReader): PixelBrainShader { + val encoding = Encoding.get(reader.readByte()) + return PixelBrainShader(encoding) + } + } + + abstract inner class Buffer : BrainShader.Buffer { + override val brainShader: BrainShader<*> + get() = this@PixelBrainShader + + override fun read(reader: ByteArrayReader) { + val incomingPixelCount = reader.readShort().toInt() + read(reader, incomingPixelCount) + } + + abstract val colors: MutableList + abstract val palette: Array + protected abstract operator fun get(pixelIndex: Int): Color + protected abstract operator fun set(pixelIndex: Int, color: Color) + internal abstract operator fun set(pixelIndex: Int, paletteIndex: Int) + abstract fun setAll(color: Color) + abstract fun setAll(paletteIndex: Int) + abstract val indices: IntRange + abstract fun read(reader: ByteArrayReader, incomingPixelCount: Int) + } + + inner class DirectColorBuffer(private val pixelCount: Int, private val rgb24BitMode: Boolean = false) : Buffer() { + override val palette: Array = emptyArray() + private var colorsBuf: Array = Array(pixelCount) { Color.WHITE } + override val colors: MutableList + get() = object : AbstractMutableList() { + override fun add(index: Int, element: Color): Unit = throw UnsupportedOperationException() + + override fun removeAt(index: Int): Color = throw UnsupportedOperationException() + + override fun set(index: Int, element: Color): Color { + val oldValue = get(index) + this@DirectColorBuffer.set(index, element) + return oldValue + } + + override val size = pixelCount + + override fun get(index: Int): Color = this@DirectColorBuffer.get(index) + } + + /** [serialize] and [read] are asymmetrical because pixel count is read in [Buffer.read]. */ + override fun serialize(writer: ByteArrayWriter) { + writer.writeShort(pixelCount) + colorsBuf.forEach { color -> writeColor(color, writer) } + } + + /** [serialize] and [read] are asymmetrical because pixel count is read in [Buffer.read]. */ + override fun read(reader: ByteArrayReader, incomingPixelCount: Int) { + // if there are more colors in the buffer than pixels, drop from the end + val countFromBuffer = min(colorsBuf.size, incomingPixelCount) + for (i in 0 until countFromBuffer) { + colorsBuf[i] = readColor(reader) + } + + // if there are more pixels than colors in the buffer, repeat + for (i in countFromBuffer until colorsBuf.size) { + colorsBuf[i] = colorsBuf[i % countFromBuffer] + } + } + + private fun writeColor(color: Color, writer: ByteArrayWriter) { + if (rgb24BitMode) { + writer.writeByte(color.redB) + writer.writeByte(color.greenB) + writer.writeByte(color.blueB) + } else { + writer.writeInt(color.argb) + } + } + + private fun readColor(reader: ByteArrayReader): Color { + return if (rgb24BitMode) { + Color(reader.readByte(), reader.readByte(), reader.readByte()) + } else { + Color(reader.readInt()) + } + } + + override operator fun get(pixelIndex: Int): Color = colorsBuf[pixelIndex] + override fun set(pixelIndex: Int, color: Color) { + colorsBuf[pixelIndex] = color + } + + override fun set(pixelIndex: Int, paletteIndex: Int): Unit = + throw UnsupportedOperationException("Indexed colors aren't available in this mode") + + override fun setAll(color: Color) { + for (i in colorsBuf.indices) set(i, color) + } + + override fun setAll(paletteIndex: Int): Unit = + throw UnsupportedOperationException("Indexed colors aren't available in this mode") + + override val indices = colorsBuf.indices + } + + inner class IndexedBuffer(private val bitsPerPixel: Int, private val pixelCount: Int) : Buffer() { + override val palette: Array = Array(1 shl bitsPerPixel) { Color.WHITE } + internal val dataBuf: ByteArray = ByteArray(bufferSizeFor(pixelCount)) { 0 } + + override val colors: MutableList + get() = object : AbstractMutableList() { + override val size: Int = pixelCount + + override fun add(index: Int, element: Color): Unit = throw UnsupportedOperationException() + + override fun removeAt(index: Int): Color = throw UnsupportedOperationException() + + override fun set(index: Int, element: Color): Color = + throw IllegalArgumentException("Can't set color directly when using indexed color buffers") + + override fun get(index: Int): Color = this@IndexedBuffer.get(index) + } + + override fun get(pixelIndex: Int): Color { + return palette[paletteIndex(pixelIndex)] + } + + override fun set(pixelIndex: Int, color: Color): Unit = + throw IllegalArgumentException("Can't set color directly when using indexed color buffers") + + override fun set(pixelIndex: Int, paletteIndex: Int) { + val mask: Int + val pixelsPerByte: Int + val maxIndex: Int + when (bitsPerPixel) { + 1 -> { + mask = 0x01; pixelsPerByte = 8; maxIndex = 1 + } + 2 -> { + mask = 0x03; pixelsPerByte = 4; maxIndex = 3 + } + 4 -> { + mask = 0x0F; pixelsPerByte = 2; maxIndex = 15 + } + else -> throw IllegalStateException() + } + + if (paletteIndex < 0 || paletteIndex > maxIndex) + throw IllegalArgumentException("Invalid color index $paletteIndex") + + + val bufOffset = pixelIndex / pixelsPerByte % dataBuf.size + val positionInByte = pixelsPerByte - pixelIndex % pixelsPerByte - 1 + val bitShift = positionInByte * bitsPerPixel + val byte = (dataBuf[bufOffset].toInt() and (mask shl bitShift).inv()) or (paletteIndex shl bitShift) + dataBuf[bufOffset] = byte.toByte() + } + + /** [serialize] and [read] are asymmetrical because pixel count is read in [Buffer.read]. */ + override fun serialize(writer: ByteArrayWriter) { + writer.writeShort(pixelCount) + palette.forEach { paletteColor -> writer.writeInt(paletteColor.argb) } + writer.writeNBytes(dataBuf) + } + + /** [serialize] and [read] are asymmetrical because pixel count is read in [Buffer.read]. */ + override fun read(reader: ByteArrayReader, incomingPixelCount: Int) { + palette.indices.forEach { i -> palette[i] = Color.from(reader.readInt()) } + reader.readNBytes(dataBuf) + } + + override fun setAll(color: Color): Unit = + throw IllegalArgumentException("Can't set color directly when using indexed color buffers") + + override fun setAll(paletteIndex: Int) { + for (i in indices) set(i, paletteIndex) + } + + override val indices = 0 until pixelCount + + private fun paletteIndex(pixelIndex: Int): Int { + val mask: Int + val pixelsPerByte: Int + when (bitsPerPixel) { + 1 -> { + mask = 0x01; pixelsPerByte = 8 + } + 2 -> { + mask = 0x03; pixelsPerByte = 4 + } + 4 -> { + mask = 0x0F; pixelsPerByte = 2 + } + else -> throw IllegalStateException() + } + + val bufOffset = pixelIndex / pixelsPerByte % dataBuf.size + val positionInByte = pixelsPerByte - pixelIndex % pixelsPerByte - 1 + val bitShift = positionInByte * bitsPerPixel + return dataBuf[bufOffset].toInt() shr bitShift and mask + } + + private fun bufferSizeFor(pixelCount: Int): Int { + return when (bitsPerPixel) { + 1 -> (pixelCount + 7) / 8 + 2 -> (pixelCount + 3) / 4 + 4 -> (pixelCount + 1) / 2 + else -> throw IllegalStateException() + } + } + } + + class Renderer : BrainShader.Renderer { + override fun draw(buffer: Buffer, pixelIndex: Int): Color = buffer.colors[pixelIndex] + } + +} diff --git a/src/commonMain/kotlin/baaahs/shaders/SolidBrainShader.kt b/src/commonMain/kotlin/baaahs/shaders/SolidBrainShader.kt new file mode 100644 index 0000000000..ea23c1a8a5 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/shaders/SolidBrainShader.kt @@ -0,0 +1,42 @@ +package baaahs.shaders + +import baaahs.BrainShader +import baaahs.BrainShaderId +import baaahs.BrainShaderReader +import baaahs.Color +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter + +/** + * A shader that sets all pixels to a single color. + */ +class SolidBrainShader : BrainShader(BrainShaderId.SOLID) { + override fun createBuffer(pixelCount: Int): Buffer = Buffer() + + override fun readBuffer(reader: ByteArrayReader): Buffer = Buffer().apply { read(reader) } + + override fun createRenderer(): Renderer = Renderer() + + companion object : BrainShaderReader { + override fun parse(reader: ByteArrayReader) = SolidBrainShader() + } + + inner class Buffer : BrainShader.Buffer { + override val brainShader: BrainShader<*> + get() = this@SolidBrainShader + + var color: Color = Color.WHITE + + override fun serialize(writer: ByteArrayWriter) { + color.serialize(writer) + } + + override fun read(reader: ByteArrayReader) { + color = Color.parse(reader) + } + } + + class Renderer : BrainShader.Renderer { + override fun draw(buffer: Buffer, pixelIndex: Int): Color = buffer.color + } +} diff --git a/src/commonMain/kotlin/baaahs/shaders/SoundAnalysisPlugin.kt b/src/commonMain/kotlin/baaahs/shaders/SoundAnalysisPlugin.kt new file mode 100644 index 0000000000..2c00591bce --- /dev/null +++ b/src/commonMain/kotlin/baaahs/shaders/SoundAnalysisPlugin.kt @@ -0,0 +1,86 @@ +package baaahs.shaders + +import baaahs.SoundAnalyzer +import baaahs.gl.glsl.GlslProgram +import baaahs.glsl.Uniform +import com.danielgergely.kgl.FloatBuffer +import com.danielgergely.kgl.Kgl + +class SoundAnalysisPlugin(val soundAnalyzer: SoundAnalyzer, val historySize: Int = 300) { + private var textureBuffer = FloatArray(0) + private var textureGlBuffer = FloatBuffer(0) + + init { + soundAnalyzer.listen(object : SoundAnalyzer.AnalysisListener { + override fun onSample(analysis: SoundAnalyzer.Analysis) { + val analysisBufferSize = soundAnalyzer.frequencies.size + val expectedBufferSize = analysisBufferSize * historySize + if (textureBuffer.size != expectedBufferSize) { + textureBuffer = FloatArray(expectedBufferSize) + textureGlBuffer = FloatBuffer(expectedBufferSize) + } + + // Shift historical data down one row. + textureBuffer.copyInto(textureBuffer, analysisBufferSize, 0, expectedBufferSize - analysisBufferSize) + + // Copy this sample's data into the buffer. + analysis.magnitudes.forEachIndexed { index, magitude -> + textureBuffer[index] = magitude * analysisBufferSize + } + } + }) + } + + fun forProgram(gl: Kgl, program: GlslProgram): ProgramContext { + return ProgramContext(gl, program) + } + + inner class ProgramContext(private val gl: Kgl, private val program: GlslProgram) { + val glslPreamble: String = "uniform sampler2D sm_soundAnalysis;" + + private var soundAnalysisUniform: Uniform? = null + + fun afterCompile() { +// soundAnalysisUniform = gl.check { Uniform.find(program, "sm_soundAnalysis") } + } + + fun forRender(): RenderContext? { + val analysisBufferSize = soundAnalyzer.frequencies.size + val expectedBufferSize = analysisBufferSize * historySize + + val uniform = soundAnalysisUniform + if (uniform == null || textureBuffer.size != expectedBufferSize) { + return null + } else { + return RenderContext(uniform) + } + } + + inner class RenderContext(uniform: Uniform) { +// private val texture = gl.check { gl.createTexture() } +// private val textureId = program.obtainTextureId() +// +// init { +// textureGlBuffer.position = 0 +// textureGlBuffer.put(textureBuffer) +// +// gl.check { gl.activeTexture(GL_TEXTURE0 + textureId) } +// gl.check { gl.bindTexture(GL_TEXTURE_2D, texture) } +// gl.check { gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST) } +// gl.check { gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) } +// gl.check { +// gl.texImage2D( +// GL_TEXTURE_2D, 0, +// GL_R32F, soundAnalyzer.frequencies.size, historySize, 0, +// GL_RED, GL_FLOAT, textureGlBuffer +// ) +// } +// uniform.set(textureId) +// } +// +// fun release() { +// gl.check { gl.deleteTexture(texture) } +// } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/Control.kt b/src/commonMain/kotlin/baaahs/show/Control.kt new file mode 100644 index 0000000000..79c8ca5a61 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/Control.kt @@ -0,0 +1,124 @@ +package baaahs.show + +import baaahs.Gadget +import baaahs.ShowPlayer +import baaahs.app.ui.Editable +import baaahs.camelize +import baaahs.show.live.* +import baaahs.show.mutable.* +import baaahs.ui.Icon +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +interface Control : Editable { + override val title: String + fun suggestId(): String = "control" + + /** Don't call this directly; use [MutableShow.findControl]. */ + fun createMutable(mutableShow: MutableShow): MutableControl + + fun open(id: String, openContext: OpenContext, showPlayer: ShowPlayer): OpenControl +} + +data class AddControlMenuItem( + val label: String, + val icon: Icon, + val createControlFn: (mutableShow: MutableShow) -> MutableControl +) + +@Serializable +@SerialName("baaahs.Core:Gadget") +data class GadgetControl( + val gadget: Gadget, + val controlledDataSourceId: String +) : Control { + override val title: String + get() = gadget.title + + override fun suggestId(): String = controlledDataSourceId + "Control" + + override fun createMutable(mutableShow: MutableShow): MutableGadgetControl { + return MutableGadgetControl(gadget, mutableShow.findDataSource(controlledDataSourceId).dataSource) + } + + override fun open(id: String, openContext: OpenContext, showPlayer: ShowPlayer): OpenControl { + val controlledDataSource = openContext.getDataSource(controlledDataSourceId) + showPlayer.registerGadget(id, gadget, controlledDataSource) + return OpenGadgetControl(id, gadget, controlledDataSource) + } +} + +@Serializable +@SerialName("baaahs.Core:Button") +data class ButtonControl( + override val title: String, + val activationType: ActivationType = ActivationType.Toggle, + override val patches: List = emptyList(), + override val eventBindings: List = emptyList(), + override val controlLayout: Map> = emptyMap() +) : PatchHolder, Control { + + enum class ActivationType { + Toggle, + Momentary + } + + override fun suggestId(): String = title.camelize() + "Button" + + override fun createMutable(mutableShow: MutableShow): MutableButtonControl { + return MutableButtonControl(this, mutableShow) + } + + override fun open(id: String, openContext: OpenContext, showPlayer: ShowPlayer): OpenButtonControl { + return OpenButtonControl(id, this, openContext) + .also { showPlayer.registerGadget(id, it.gadget) } + } +} + +@Serializable +@SerialName("baaahs.Core:ButtonGroup") +data class ButtonGroupControl( + override val title: String, + val direction: Direction, + val buttonIds: List +) : Control { + + enum class Direction { + Horizontal, + Vertical + } + + override fun suggestId(): String = title.camelize() + "ButtonGroup" + + override fun createMutable(mutableShow: MutableShow): MutableButtonGroupControl { + return MutableButtonGroupControl(title, direction, buttonIds.map { + mutableShow.findControl(it) as MutableButtonControl + }.toMutableList(), mutableShow) + } + + override fun open(id: String, openContext: OpenContext, showPlayer: ShowPlayer): OpenButtonGroupControl { + return OpenButtonGroupControl(id, this, openContext) + } +} + +@Serializable +@SerialName("baaahs.Core:Visualizer") +data class VisualizerControl( + val surfaceDisplayMode: SurfaceDisplayMode = SurfaceDisplayMode.Continuous, + val rotate: Boolean = false +): Control { + enum class SurfaceDisplayMode { + Pixels, + Continuous + } + + override val title: String get() = "Visualizer" + + override fun createMutable(mutableShow: MutableShow): MutableVisualizerControl { + return MutableVisualizerControl(surfaceDisplayMode, rotate) + } + + override fun open(id: String, openContext: OpenContext, showPlayer: ShowPlayer): OpenControl { + return OpenVisualizerControl(id, this) + } +} diff --git a/src/commonMain/kotlin/baaahs/show/DataSource.kt b/src/commonMain/kotlin/baaahs/show/DataSource.kt new file mode 100644 index 0000000000..468b07510d --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/DataSource.kt @@ -0,0 +1,90 @@ +package baaahs.show + +import baaahs.ShowPlayer +import baaahs.app.ui.editor.PortLinkOption +import baaahs.camelize +import baaahs.gl.data.Feed +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.plugin.SerializerRegistrar +import baaahs.show.mutable.MutableDataSourcePort +import baaahs.show.mutable.MutableGadgetControl +import kotlinx.serialization.Polymorphic + + +interface DataSourceBuilder { + /** The unique ID for this resource within a plugin. Should be CamelCase alphanums, like a class name. */ + val resourceName: String + val contentType: ContentType + val serializerRegistrar: SerializerRegistrar + + fun suggestDataSources( + inputPort: InputPort, + suggestedContentTypes: Set = emptySet() + ): List { + return if (looksValid(inputPort)) { + listOf(build(inputPort)).map { dataSource -> + PortLinkOption( + MutableDataSourcePort(dataSource), + wasPurposeBuilt = dataSource.appearsToBePurposeBuiltFor(inputPort), + isPluginSuggestion = true, + isExactContentType = dataSource.contentType == inputPort.contentType + ) + } + } else emptyList() + } + + fun looksValid(inputPort: InputPort): Boolean = false + + fun build(inputPort: InputPort): T +} + +internal fun DataSource.appearsToBePurposeBuiltFor(inputPort: InputPort) = + title.camelize().toLowerCase().contains(inputPort.title.camelize().toLowerCase()) + +@Polymorphic +interface DataSource { + val pluginPackage: String + /** Short English name for this datasource. */ + val title: String + + // TODO: kill this + fun isImplicit(): Boolean = false + fun getType(): GlslType + val contentType: ContentType + fun getVarName(id: String): String = "in_$id" + + fun createFeed(showPlayer: ShowPlayer, id: String): Feed + + fun suggestId(): String = title.camelize() + + fun buildControl(): MutableGadgetControl? = null + + fun appendDeclaration(buf: StringBuilder, id: String) { + if (!isImplicit()) + buf.append("uniform ${getType().glslLiteral} ${getVarName(id)};\n") + } + + fun invocationGlsl(varName: String): String? = null + + fun appendInvokeAndSet(buf: StringBuilder, prefix: String, varName: String) { + val invocationGlsl = invocationGlsl(varName) + if (invocationGlsl != null) { + buf.append(prefix, "// Invoke ", title, "\n") + buf.append(prefix, invocationGlsl, ";\n") + buf.append("\n") + } + } +} + +enum class UpdateMode { + /** The data from this data source will never change. */ + ONCE, + + /** The data from this data source may be different for each frame. */ + PER_FRAME, + + /** The data from this data source may be different for each fixture. */ + PER_FIXTURE +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/FixtureShaders.kt b/src/commonMain/kotlin/baaahs/show/FixtureShaders.kt new file mode 100644 index 0000000000..51675b450b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/FixtureShaders.kt @@ -0,0 +1,121 @@ +package baaahs.show + +object FixtureShaders { + val fireBallGlsl = Shader( + "Fire Ball", + /**language=glsl*/ + """ + // Fire Ball + // From http://glslsandbox.com/e#61108.0 + + // Fire ball by David Robles + + #ifdef GL_ES + precision mediump float; + #endif + + //#extension GL_OES_standard_derivatives : enable + #ifdef GL_ES + precision mediump float; + #endif + + uniform float time; + uniform vec2 resolution; + + const float PI = 3.141592; + + vec2 hash( vec2 p ) // replace this by something better + { + p = vec2( dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)) ); + return -1.0 + 2.0*fract(sin(p)*43758.5453123); + } + + float noise( in vec2 p ) + { + const float K1 = 0.366025404; // (sqrt(3)-1)/2; + const float K2 = 0.211324865; // (3-sqrt(3))/6; + + vec2 i = floor( p + (p.x+p.y)*K1 ); + vec2 a = p - i + (i.x+i.y)*K2; + float m = step(a.y,a.x); + vec2 o = vec2(m,1.0-m); + vec2 b = a - o + K2; + vec2 c = a - 1.0 + 2.0*K2; + vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 ); + vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0))); + return dot( n, vec3(70.0) ); + } + + float circleShape(vec2 coord, vec2 pos){ + float dist = distance(coord, pos); + return clamp( log(dist*(15.+4.*noise(vec2(time*.8)))) ,0.,1.); + } + + vec2 sineWave(vec2 p){ + float Ax = .05; + float wx = 1.50 * PI; + float x = sin(wx * p.x) * Ax * sin(noise(vec2(time))); + + float Ay = .05; + float wy = PI * 10.; + float y = sin(wy*p.y) * Ay * noise(vec2(time)); + + return vec2(p.x + x, p.y + y); + } + + void main( void ) { + + vec2 pos = gl_FragCoord.xy / resolution.xy; + vec2 uv = pos; + + uv += vec2(-.5, -.5); + uv *= vec2(2.3, 1.3); + + float luz = clamp(1.05 - (pow(uv.x, 2.) + pow(uv.y * 1.6, 6.))*2., 0., 1.); + //vec3 color = vec3(0.3059, 0.1922, 0.0431); + vec3 color = vec3(0.7333, 0.2902, 0.0314); + //vec3 color = vec3(0.3882, 0.1686, 0.251); + float grad = circleShape(sineWave(pos), vec2(.5, .32)); + + float ruido = 0.; + + pos *= 5.0; + float xoff = 1.05; + float yoff = 2.1; + mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 ); + ruido = 0.7500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido += 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + + + ruido = 0.5 + 0.5*ruido; + ruido = clamp(ruido, 0., 1.); + + ///////////////////////////////////////////////////////////// + pos = uv; + pos *= 3.0; + float ruido2 = 0.; + xoff = 1.5; + yoff = 1.5; + m = mat2( -2.1, .5, -.5, 2.1 ); + ruido2 = 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido2 += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido2 += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido2 += 0.0625*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + + ruido2 = 0.5 + 0.5*ruido2; + ruido2 = clamp(ruido2, 0., 1.); + + float f = 0.; + f += 1.0 - ( (1.0-luz) / (ruido2 + 0.001) ); + f /= grad; + f /= ruido; + + gl_FragColor = vec4(f*color*luz*(.5-.5*noise(vec2(time*.8))), 1.); + //gl_FragColor = vec4(color/grad, 1.); + + } + """.trimIndent() + ) +} diff --git a/src/commonMain/kotlin/baaahs/show/PatchHolder.kt b/src/commonMain/kotlin/baaahs/show/PatchHolder.kt new file mode 100644 index 0000000000..2c3bb01894 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/PatchHolder.kt @@ -0,0 +1,19 @@ +package baaahs.show + +import baaahs.app.ui.Editable + +interface PatchHolder : Editable { + override val title: String + val patches: List + val eventBindings: List + val controlLayout: Map> +} + +class EmptyPatchHolder(override val title: String) : PatchHolder { + override val patches: List + get() = emptyList() + override val eventBindings: List + get() = emptyList() + override val controlLayout: Map> + get() = emptyMap() +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/PortRef.kt b/src/commonMain/kotlin/baaahs/show/PortRef.kt new file mode 100644 index 0000000000..d3606c7ddc --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/PortRef.kt @@ -0,0 +1,40 @@ +package baaahs.show + +import baaahs.getBang +import baaahs.gl.glsl.GlslType +import baaahs.show.mutable.* +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +sealed class PortRef { + abstract fun dereference(mutableShow: MutableShow): MutablePort +} + +@Serializable @SerialName("datasource") +data class DataSourceRef(val dataSourceId: String) : PortRef() { + override fun dereference(mutableShow: MutableShow): MutablePort = + mutableShow.dataSources.getBang(dataSourceId, "datasource") +} + +interface ShaderPortRef { + val shaderInstanceId: String +} + +@Serializable @SerialName("shader-channel") +data class ShaderChannelRef(val shaderChannel: ShaderChannel) : PortRef() { + override fun dereference(mutableShow: MutableShow): MutablePort = + MutableShaderChannel(shaderChannel.id) +} + +@Serializable @SerialName("output") +data class OutputPortRef(val portId: String) : PortRef() { + override fun dereference(mutableShow: MutableShow): MutablePort = + MutableOutputPort(portId) +} + +@Serializable @SerialName("const") +data class ConstPortRef(val glsl: String, val type: String) : PortRef() { + override fun dereference(mutableShow: MutableShow): MutablePort = + MutableConstPort(glsl, GlslType.from(type)) +} diff --git a/src/commonMain/kotlin/baaahs/show/SampleData.kt b/src/commonMain/kotlin/baaahs/show/SampleData.kt new file mode 100644 index 0000000000..741e5c7d79 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/SampleData.kt @@ -0,0 +1,278 @@ +package baaahs.show + +import baaahs.Color +import baaahs.app.ui.editor.PortLinkOption +import baaahs.gl.RootToolchain +import baaahs.gl.autoWire +import baaahs.glsl.Shaders +import baaahs.plugin.CorePlugin +import baaahs.plugin.Plugins +import baaahs.plugin.beatlink.BeatLinkPlugin +import baaahs.plugin.beatlink.BeatSource +import baaahs.show.ButtonGroupControl.Direction.Horizontal +import baaahs.show.ButtonGroupControl.Direction.Vertical +import baaahs.show.mutable.* +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put + +object SampleData { + val stdLayout = buildJsonObject { + put("direction", "row") + put("splitPercentage", 70) + + put("first", buildJsonObject { + put("direction", "column") + put("splitPercentage", 20) + + put("first", "Scenes") + + put("second", buildJsonObject { + put("direction", "column") + put("splitPercentage", 60) + + put("first", "Backdrops") + put("second", "More Controls") + }) + }) + + put("second", buildJsonObject { + put("direction", "column") + put("splitPercentage", 20) + + put("first", "Preview") + + put("second", buildJsonObject { + put("direction", "column") + put("splitPercentage", 60) + + put("first", "Effects") + put("second", "Transition") + }) + }) + } + + val plugins = Plugins.safe(Plugins.dummyContext) + + BeatLinkPlugin.Builder(BeatSource.None) + val beatLinkPlugin = plugins.findPlugin() + + private val toolchain = RootToolchain(plugins) + + private val uvShader get() = wireUp(Shaders.xyProjection) + + private val showDefaultPaint = toolchain.autoWire( + Shader( + "Darkness", + /**language=glsl*/ + """ + void main(void) { + gl_FragColor = vec4(0., 0., 0., 1.); + } + """.trimIndent() + ) + ) + .acceptSuggestedLinkOptions() + .confirm() + + private val brightnessFilter = toolchain.autoWire( + Shader( + "Brightness", + /**language=glsl*/ + """ + uniform float brightness; // @@Slider min=0 max=1.25 default=1 + + // @return color + // @param inColor color + vec4 main(vec4 inColor) { + vec4 clampedColor = clamp(inColor, 0., 1.); + return vec4(clampedColor.rgb * brightness, clampedColor.a); + } + """.trimIndent() + ) + ) + .acceptSuggestedLinkOptions() + .confirm() + + private val saturationFilter = toolchain.autoWire( + Shader( + "Saturation", + /**language=glsl*/ + """ + uniform float saturation; // @@Slider min=0 max=1.25 default=1 + + // All components are in the range [0…1], including hue. + vec3 rgb2hsv(vec3 c) + { + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); + } + + + // All components are in the range [0…1], including hue. + vec3 hsv2rgb(vec3 c) + { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); + } + + // @return color + // @param inColor color + vec4 main(vec4 inColor) { + if (saturation == 1.) return inColor; + + vec4 clampedColor = clamp(inColor, 0., 1.); + vec3 hsv = rgb2hsv(clampedColor.rgb); + hsv.y *= saturation; + return vec4(hsv2rgb(hsv), clampedColor.a); + } + """.trimIndent() + ) + ) + .acceptSuggestedLinkOptions() + .confirm() + + private val redYellowGreenPatch = toolchain.autoWire( + Shader( + "GLSL Hue Test Pattern", + /**language=glsl*/ + """ + uniform vec2 resolution; + void main(void) { + gl_FragColor = vec4(gl_FragCoord.xy / resolution, 0.0, 1.0); + } + """.trimIndent() + ) + ) + .acceptSuggestedLinkOptions() + .confirm() + + private val blueAquaGreenPatch = toolchain.autoWire( + Shader( + "Another GLSL Hue Test Pattern", + /**language=glsl*/ + """ + uniform vec2 resolution; + uniform float redness; + void main(void) { + gl_FragColor = vec4(redness, gl_FragCoord.xy / resolution, 1.0); + } + """.trimIndent() + ) + ) + .acceptSuggestedLinkOptions() + .confirm() + + private val fireBallPatch = toolchain.autoWire(FixtureShaders.fireBallGlsl) + .acceptSuggestedLinkOptions() + .confirm() + + val defaultLayout = Layout(stdLayout) + val layouts = Layouts( + listOf("Scenes", "Backdrops", "More Controls", "Preview", "Effects", "Transition"), + mapOf("default" to defaultLayout) + ) + + val color = CorePlugin.ColorPickerDataSource("Color", Color.WHITE) + val brightness = CorePlugin.SliderDataSource( + "Brightness", 1f, 0f, 1.25f, null + ) + val saturation = CorePlugin.SliderDataSource( + "Saturation", 1f, 0f, 1.25f, null + ) + val intensity = CorePlugin.SliderDataSource( + "Intensity", 1f, 0f, 1f, null + ) + val checkerboardSize = CorePlugin.SliderDataSource( + "Checkerboard Size", .1f, .001f, 1f, null + ) + + val sampleShow: Show get() = MutableShow("Sample Show") { + println("Initialize sampleShow!") + editLayouts { + copyFrom(layouts) + } + + addPatch(uvShader) + addPatch(showDefaultPaint) + addPatch(brightnessFilter) + addPatch(saturationFilter) + + addButtonGroup("Scenes", "Scenes", Horizontal) { + addButton("Pleistocene") { + addButtonGroup("Backdrops", "Backdrops", Vertical) { + addButton("Red Yellow Green") { + addPatch(redYellowGreenPatch) + } + + addButton("Fire") { + addPatch(fireBallPatch) + addControl("Backdrops", intensity.buildControl()) + } + + addButton("Checkerboard") { + addPatch( + wireUp( + Shaders.checkerboard, + mapOf("checkerboardSize" to checkerboardSize.editor()) + ) + ) + addControl("Backdrops", checkerboardSize.buildControl()) + } + } + } + + addButton("Holocene") { + addButtonGroup("Backdrops", "Backdrops", Vertical) { + addButton("Blue Aqua Green") { + addPatch(blueAquaGreenPatch) + } + } + } + } + + addControl("More Controls", color.buildControl()) + addControl("More Controls", brightness.buildControl()) + addControl("More Controls", saturation.buildControl()) + + addButton("Effects", "Wobble") { + addPatch(wireUp(Shaders.ripple)) + } + }.getShow() + + val sampleShowWithBeatLink: Show get() = MutableShow(sampleShow).apply { + addPatch { + addShaderInstance(Shader( + "BeatLink", + /**language=glsl*/ + """ + uniform float beat; + void main(void) { + gl_FragColor = vec4(beat, 0., 0., 1.); + } + """.trimIndent() + )) { + link("beat", MutableDataSourcePort(beatLinkPlugin.beatLinkDataSource)) + } + } + }.getShow() + + private fun wireUp(shader: Shader, ports: Map = emptyMap()): MutablePatch { + val unresolvedPatch = toolchain.autoWire(shader) + unresolvedPatch.editShader(shader).apply { + ports.forEach { (portId, port) -> + linkOptionsFor(portId).apply { + clear() + add(PortLinkOption(port)) + } + } + } + return unresolvedPatch + .acceptSuggestedLinkOptions() + .confirm() + } +} diff --git a/src/commonMain/kotlin/baaahs/show/Show.kt b/src/commonMain/kotlin/baaahs/show/Show.kt new file mode 100644 index 0000000000..3141c0017c --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/Show.kt @@ -0,0 +1,180 @@ +package baaahs.show + +import baaahs.SparkleMotion +import baaahs.app.ui.Editable +import baaahs.camelize +import baaahs.fixtures.DeviceType +import baaahs.fixtures.Fixture +import baaahs.getBang +import baaahs.plugin.Plugins +import baaahs.show.ButtonGroupControl.Direction +import baaahs.show.mutable.MutableShaderChannel +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.MutableShowVisitor +import baaahs.show.mutable.VisitationLog +import kotlinx.serialization.Contextual +import kotlinx.serialization.KSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject + +@Serializable +data class Show( + override val title: String, + override val patches: List = emptyList(), + override val eventBindings: List = emptyList(), + override val controlLayout: Map> = emptyMap(), + val layouts: Layouts = Layouts(), + val shaders: Map = emptyMap(), + val shaderInstances: Map = emptyMap(), + val controls: Map = emptyMap(), + val dataSources: Map = emptyMap() +) : PatchHolder, Editable { + fun toJson(json: Json): JsonElement { + return json.encodeToJsonElement(serializer(), this) + } + + fun getControl(id: String): Control = controls.getBang(id, "control") + + fun getDataSource(id: String): DataSource = dataSources.getBang(id, "data source") + + fun getShader(id: String): Shader = shaders.getBang(id, "shader") + + companion object { + val EmptyShow = Show("Empty Show") + + fun fromJson(plugins: Plugins, s: String): Show { + val json = Json { serializersModule = plugins.serialModule } + return json.decodeFromString(serializer(), s) + } + } +} + +@Serializable +data class Patch( + val shaderInstanceIds: List, + val surfaces: Surfaces +) { + init { if (SparkleMotion.EXTRA_ASSERTIONS) shaderInstanceIds.assertNoDuplicates() } +} + +fun List.assertNoDuplicates(items: String = "items") { + val duplicates = groupBy { it }.mapValues { (_, v) -> v.size }.filterValues { it > 1 } + if (duplicates.isNotEmpty()) { + throw error("duplicate $items: $duplicates") + } +} + +@Serializable +data class EventBinding( + val inputType: String, + val inputData: JsonElement, + val target: DataSourceRef +) + +@Serializable +data class Surfaces( + val name: String, + /** Set of [DeviceType]s that this object matches. If the set is empty, every DeviceType matches. */ + @Contextual + val deviceTypes: Set = emptySet() +) { + fun matches(fixture: Fixture): Boolean { + return true + } + + fun accept(visitor: MutableShowVisitor, log: VisitationLog = VisitationLog()) { + if (log.surfaces.add(this)) visitor.visit(this) + } + + companion object { + val AllSurfaces = Surfaces("All Surfaces", emptySet()) + } +} + +@Serializable +data class Layouts( + val panelNames: List = emptyList(), + val map: Map = emptyMap() +) + +@Serializable +data class Layout( + val rootNode: JsonObject +) + +@Serializable +data class Shader( + val title: String, + /**language=glsl*/ + val src: String +) { + fun suggestId(): String = title.camelize() +} + +@Serializable +data class ShaderInstance( + val shaderId: String, + val incomingLinks: Map, + val shaderChannel: ShaderChannel = ShaderChannel.Main, + val priority: Float = 0f +) + +@Serializable(with = ShaderChannel.ShaderChannelSerializer::class) +data class ShaderChannel(val id: String) { + fun toMutable(): MutableShaderChannel = MutableShaderChannel(id) + + companion object { + val Main = ShaderChannel("main") + } + + class ShaderChannelSerializer : + KSerializer { + override val descriptor: SerialDescriptor + get() = PrimitiveSerialDescriptor( + "id", + PrimitiveKind.STRING + ) + + + override fun deserialize(decoder: Decoder): ShaderChannel { + return ShaderChannel(decoder.decodeString()) + } + + override fun serialize(encoder: Encoder, value: ShaderChannel) { + encoder.encodeString(value.id) + } + } +} + +fun buildEmptyShow(): Show { + return MutableShow("Untitled").apply { + editLayouts { + copyFrom( + Layouts( + listOf("Scenes", "Patches", "More Controls", "Preview", "Controls"), + mapOf("default" to SampleData.defaultLayout) + ) + ) + } + + addButtonGroup( + "Scenes", "Scenes", Direction.Horizontal + ) { + addButton("Scene 1") { + addButtonGroup( + "Backdrops", "Backdrops", Direction.Vertical + ) { + addButton("All Dark") { + } + } + } + } + }.getShow() +} diff --git a/src/commonMain/kotlin/baaahs/show/ShowMigrator.kt b/src/commonMain/kotlin/baaahs/show/ShowMigrator.kt new file mode 100644 index 0000000000..e579ba597a --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/ShowMigrator.kt @@ -0,0 +1,89 @@ +package baaahs.show + +import baaahs.gl.patch.ContentType +import kotlinx.serialization.json.* + +object ShowMigrator : JsonTransformingSerializer(Show.serializer()) { + private const val currentVersion = 2 + private const val versionKey = "version" + + override fun transformDeserialize(element: JsonElement): JsonElement { + if (element !is JsonObject) return element + val fromVersion = element[versionKey]?.jsonPrimitive?.int ?: 0 + if (fromVersion == currentVersion) + return element.toMutableMap() + .apply { remove(versionKey) }.toJsonObj() + + val newJson = element.toMutableMap() + newJson.remove(versionKey) + + if (fromVersion < 1) { + FromV0.apply(newJson) + } + + if (fromVersion < 2) { + FromV1.apply(newJson) + } + + return newJson.toJsonObj() + } + + override fun transformSerialize(element: JsonElement): JsonElement { + if (element !is JsonObject) return element + return element.toMutableMap().apply { + put(versionKey, JsonPrimitive(currentVersion)) + }.toJsonObj() + } + + private fun Map.toJsonObj(): JsonObject = buildJsonObject { + forEach { (k, v) -> put(k, v) } + } + + fun MutableMap.mapObjsInDict( + key: String, + callback: (id: String, item: MutableMap) -> Unit + ) { + (this[key] as JsonObject?)?.mapValues { (id, obj) -> + val objMap = (obj as JsonObject).toMutableMap() + callback(id, objMap) + objMap.toJsonObj() + }?.also { this[key] = it.toJsonObj() } + } + + object FromV0 { + private val dataSourceTypeMap = mapOf( + "baaahs.plugin.CorePlugin.Resolution" to "baaahs.Core:Resolution", + "baaahs.plugin.CorePlugin.PreviewResolution" to "baaahs.Core:PreviewResolution", + "baaahs.plugin.CorePlugin.Time" to "baaahs.Core:Time", + "baaahs.plugin.CorePlugin.PixelCoordsTexture" to "baaahs.Core:PixelCoordsTexture", + "baaahs.plugin.CorePlugin.ScreenUvCoord" to "baaahs.Core:ScreenUvCoord", + "baaahs.plugin.CorePlugin.ModelInfoDataSource" to "baaahs.Core:ModelInfo", + "baaahs.plugin.CorePlugin.SliderDataSource" to "baaahs.Core:Slider", + "baaahs.plugin.CorePlugin.XyPad" to "baaahs.Core:XyPad", + "baaahs.plugin.CorePlugin.ColorPicker" to "baaahs.Core:ColorPicker", + "baaahs.plugin.CorePlugin.RadioButtonStripProvider" to "baaahs.Core:RadioButtonStrip", + "baaahs.plugin.CorePlugin.ImageSource" to "baaahs.Core:Image" + ) + + fun apply(newJson: MutableMap) { + newJson.mapObjsInDict("dataSources") { _, dataSource -> + val type = dataSource["type"]?.jsonPrimitive?.contentOrNull + if (type == "baaahs.plugin.CorePlugin.ModelInfoDataSource") { + dataSource.remove("structType") + } + + if (type != null) { + dataSourceTypeMap[type]?.let { dataSource["type"] = JsonPrimitive(it) } + } + } + } + } + + object FromV1 { + fun apply(newJson: MutableMap) { + newJson.mapObjsInDict("shaders") { _, shader -> + shader.remove("type")?.jsonPrimitive?.contentOrNull + } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/ControlDisplay.kt b/src/commonMain/kotlin/baaahs/show/live/ControlDisplay.kt new file mode 100644 index 0000000000..a55d76d656 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/ControlDisplay.kt @@ -0,0 +1,269 @@ +package baaahs.show.live + +import baaahs.camelize +import baaahs.getBang +import baaahs.show.Layouts +import baaahs.show.mutable.EditHandler +import baaahs.show.mutable.MutableControl +import baaahs.show.mutable.MutableShow +import baaahs.ui.DragNDrop +import baaahs.ui.Draggable +import baaahs.ui.DropTarget + +class ControlDisplay( + internal val show: OpenShow, + internal val editHandler: EditHandler, + internal val dragNDrop: DragNDrop +) { + private val allPanelBuckets = AllPanelBuckets(show.layouts) + private val placedControls = hashSetOf() + val additionalDropTargets = mutableMapOf() + val unplacedControlsDropTarget = UnplacedControlsDropTarget() + val unplacedControlsDropTargetId = dragNDrop.addDropTarget(unplacedControlsDropTarget) + + init { + object : OpenShowVisitor() { + val breadcrumbs = arrayListOf() + + override fun visitPatchHolder(openPatchHolder: OpenPatchHolder) { + allPanelBuckets.addTargetPatchHolder(openPatchHolder, breadcrumbs.size) + + breadcrumbs.add(openPatchHolder) + super.visitPatchHolder(openPatchHolder) + breadcrumbs.removeLast() + } + + override fun visitPlacedControl(panelName: String, openControl: OpenControl) { + allPanelBuckets.addControl(panelName, openControl, breadcrumbs) + super.visitPlacedControl(panelName, openControl) + } + + override fun visitControl(openControl: OpenControl) { + placedControls.add(openControl) + + if (openControl.isActive()) { + super.visitControl(openControl) + } + } + }.visitShow(show) + } + + private val suggestedControls: List + init { + val dataSourcesWithoutControls = show.allDataSources.values - + show.allControls.flatMap { it.controlledDataSources() } + suggestedControls = dataSourcesWithoutControls.mapNotNull { it.buildControl()?.open() } + } + val unplacedControls = (show.allControls + suggestedControls) + .filter { !placedControls.contains(it) } + + fun render(panelTitle: String, renderBucket: RenderBucket) { + allPanelBuckets.render(panelTitle, renderBucket) + } + + fun renderUnplacedControls(block: (index: Int, control: OpenControl) -> Unit) { + unplacedControls.forEachIndexed { index, control -> block(index, control) } + } + + fun release() { + allPanelBuckets.release() + dragNDrop.removeDropTarget(unplacedControlsDropTarget) + additionalDropTargets.values.forEach { it.release() } + } + + fun dropTargetFor(buttonGroupControl: OpenButtonGroupControl): DropTarget { + return additionalDropTargets.getOrPut(buttonGroupControl) { + buttonGroupControl.createDropTarget(this) + } + } + + inner class AllPanelBuckets(layouts: Layouts) { + private val byPanel = layouts.panelNames.associateWith { panelTitle -> PanelBuckets(panelTitle) } + private val sections = mutableListOf
() + private var serialInt = 0 + + fun addTargetPatchHolder(openPatchHolder: OpenPatchHolder, depth: Int) { + val section = Section(openPatchHolder, depth, serialInt++) + sections.add(section) + byPanel.forEach { (_, panelBuckets) -> + panelBuckets.addSection(section) + } + } + + fun addControl(panelName: String, openControl: OpenControl, breadcrumbs: ArrayList) { + byPanel.getBang(panelName, "panel") + .addControl(openControl, breadcrumbs) + } + + fun render(panelTitle: String, renderBucket: RenderBucket) { + val panelBuckets = byPanel.getBang(panelTitle, "panel") + panelBuckets.render(sections, renderBucket) + } + + fun release() { + byPanel.values.forEach { it.release() } + } + } + + inner class PanelBuckets( + private val panelTitle: String + ) { + val byContainer = + mapOf().toMutableMap() + + fun addSection(section: Section) { + byContainer.getOrPut(section.container) { PanelBucket(section) } + } + + fun addControl(openControl: OpenControl, breadcrumbs: List) { + val container = breadcrumbs.last() + byContainer[container]!!.add(openControl) + } + + fun render(sections: List
, renderBucket: RenderBucket) { + sections.sortedWith( + compareBy
{ it.depth } + .thenBy { it.serialInt } + ).forEach { section -> + val panelBucket = byContainer[section.container] + ?: PanelBucket(section) + renderBucket(panelBucket) + } + } + + fun release() { + byContainer.values.forEach { it.release() } + byContainer.clear() + } + + inner class PanelBucket(val section: Section) : DropTarget { + val panelTitle: String get() = this@PanelBuckets.panelTitle + + val controls = mutableListOf() + override val type: String get() = "ControlContainer" + + override val dropTargetId = dragNDrop.addDropTarget(this) + + fun add(control: OpenControl) { + val nextIndex = controls.size + controls.add(PlacedControl(control, nextIndex)) + } + + fun release() { + dragNDrop.removeDropTarget(this) + } + + override fun suggestId(): String { + return "$panelTitle ${section.title} $type".camelize() + } + + override fun moveDraggable(fromIndex: Int, toIndex: Int) { + show.edit { + val mutablePatchHolder = findPatchHolder(section.container) + val mutableControls = mutablePatchHolder.editControlLayout(panelTitle) + val mutableControl = mutableControls.removeAt(fromIndex) + mutableControls.add(toIndex, mutableControl) + }.commit(editHandler) + } + + override fun willAccept(draggable: Draggable): Boolean { + return draggable is PlaceableControl + } + + override fun getDraggable(index: Int): Draggable { + return controls[index] + } + + override fun insertDraggable(draggable: Draggable, index: Int) { + draggable as PlaceableControl + draggable.mutableShow + .findPatchHolder(section.container) + .editControlLayout(panelTitle) + .add(index, draggable.mutableControl) + } + + override fun removeDraggable(draggable: Draggable) { + draggable as PlaceableControl + draggable.remove() + } + + inner class PlacedControl(val control: OpenControl, val index: Int) : PlaceableControl { + override val mutableShow: MutableShow by lazy { show.edit() } + override lateinit var mutableControl: MutableControl + + override fun remove() { + val mutablePatchHolder = mutableShow.findPatchHolder(section.container) + mutableControl = mutablePatchHolder.removeControl(panelTitle, index) + } + + override fun onMove() { + mutableShow.commit(editHandler) + } + } + } + } + + inner class UnplacedControlsDropTarget : DropTarget { + override val type: String get() = "ControlContainer" + override val dropTargetId: String get() = "not implemented" + + override fun moveDraggable(fromIndex: Int, toIndex: Int) { + // No-op. + } + + override fun willAccept(draggable: Draggable): Boolean { + return draggable is PlaceableControl + } + + override fun getDraggable(index: Int): Draggable { + return UnplacedControl(index) + } + + override fun insertDraggable(draggable: Draggable, index: Int) { + // No-op. + } + + override fun removeDraggable(draggable: Draggable) { + // No-op. + } + } + + inner class UnplacedControl(val index: Int) : PlaceableControl { + override val mutableShow: MutableShow by lazy { show.edit() } + override val mutableControl: MutableControl by lazy { + val subject = unplacedControls[index] + if (suggestedControls.contains(subject)) { + subject.toNewMutable(mutableShow) + } else { + mutableShow.findControl(subject.id) + } + } + + override fun remove() { + } + + override fun onMove() { + mutableShow.commit(editHandler) + } + } + + interface PlaceableControl : Draggable { + val mutableShow: MutableShow + val mutableControl: MutableControl + + fun remove() + } + + class Section( + val container: OpenPatchHolder, + val depth: Int, + val serialInt: Int + ) { + val title: String + get() = container.title + } +} + +typealias RenderBucket = ( + panelBucket: ControlDisplay.PanelBuckets.PanelBucket +) -> Unit diff --git a/src/commonMain/kotlin/baaahs/show/live/LinkedShaderInstance.kt b/src/commonMain/kotlin/baaahs/show/live/LinkedShaderInstance.kt new file mode 100644 index 0000000000..b7e09034f8 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/LinkedShaderInstance.kt @@ -0,0 +1,30 @@ +package baaahs.show.live + +import baaahs.gl.patch.Component +import baaahs.gl.patch.ProgramLinker +import baaahs.gl.patch.ProgramNode +import baaahs.gl.patch.ShaderComponent +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.show.ShaderChannel + +class LinkedShaderInstance( + val shader: OpenShader, + val incomingLinks: Map, + val shaderChannel: ShaderChannel, + val priority: Float +) : ProgramNode { + override val title: String get() = shader.title + override val outputPort: OutputPort get() = shader.outputPort + + override fun getNodeId(programLinker: ProgramLinker): String = programLinker.idFor(shader.shader) + + override fun traverse(programLinker: ProgramLinker, depth: Int) { + programLinker.visit(shader) + incomingLinks.forEach { (_, link) -> programLinker.visit(link) } + } + + override fun buildComponent(id: String, index: Int, findUpstreamComponent: (ProgramNode) -> Component): Component { + return ShaderComponent(id, index, this, findUpstreamComponent) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/LiveShaderInstance.kt b/src/commonMain/kotlin/baaahs/show/live/LiveShaderInstance.kt new file mode 100644 index 0000000000..a8b3d70ecc --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/LiveShaderInstance.kt @@ -0,0 +1,207 @@ +package baaahs.show.live + +import baaahs.Severity +import baaahs.ShowProblem +import baaahs.getBang +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.* +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.show.* +import baaahs.util.CacheBuilder +import baaahs.util.Logger + +class LiveShaderInstance( + val shader: OpenShader, + val incomingLinks: Map, + val shaderChannel: ShaderChannel, + val priority: Float = 0f, + val extraLinks: Set = emptySet(), + val missingLinks: Set = emptySet() +) { + val title get() = shader.title + + val isFilter: Boolean get() = with (shader) { + inputPorts.any { + it.contentType == outputPort.contentType && incomingLinks[it.id]?.let { link -> + link is ShaderChannelLink && link.shaderChannel == shaderChannel + } == true + } + } + + val problems: List get() = + arrayListOf().apply { + if (extraLinks.isNotEmpty()) { + add( + ShowProblem( + "Extra incoming links on shader \"$title\"", + "Unknown ports: ${extraLinks.sorted().joinToString(", ")}", + severity = Severity.WARN + ) + ) + } + if (missingLinks.isNotEmpty()) { + add( + ShowProblem( + "Missing incoming links on shader \"$title", + "No link for ports: ${missingLinks.sorted().joinToString(", ")}", + severity = Severity.ERROR + ) + ) + } + if (shader.outputPort.contentType.isUnknown()) { + add( + ShowProblem( + "Result content type is unknown for shader \"$title\".", severity = Severity.ERROR + ) + ) + } + if (shader.errors.isNotEmpty()) { + add( + ShowProblem( + "GLSL errors in shader \"$title\".", severity = Severity.ERROR + ) + ) + } + } + + fun release() { + shader.release() + } + + fun finalResolve(resolver: PortDiagram.Resolver): ProgramNode { + val resolvedIncomingLinks = incomingLinks.mapValues { (portId, link) -> + val inputPort = shader.findInputPort(portId) + resolver.resolveLink(inputPort, link) + } + + return LinkedShaderInstance(shader, resolvedIncomingLinks, shaderChannel, priority) + } + + override fun toString(): String { + return "LiveShaderInstance(shader=${shader.title}, incomingLinks=${incomingLinks.keys.sorted()}, shaderChannel=$shaderChannel)" + } + + + interface Link { + fun finalResolve(inputPort: InputPort, resolver: PortDiagram.Resolver): ProgramNode + } + + data class ShaderOutLink(val shaderInstance: LiveShaderInstance) : Link { + override fun finalResolve(inputPort: InputPort, resolver: PortDiagram.Resolver): ProgramNode { + return shaderInstance.finalResolve(resolver) + } + } + + data class DataSourceLink(val dataSource: DataSource, val varName: String) : Link, ProgramNode { + override val title: String get() = dataSource.title + override val outputPort: OutputPort get() = OutputPort(dataSource.contentType) + + override fun getNodeId(programLinker: ProgramLinker): String = varName + + override fun traverse(programLinker: ProgramLinker, depth: Int) { + programLinker.visit(this) + } + + override fun finalResolve(inputPort: InputPort, resolver: PortDiagram.Resolver): ProgramNode = + resolver.resolveChannel( + inputPort.copy(contentType = dataSource.contentType), + ShaderChannel(varName) + ) + + override fun buildComponent( + id: String, + index: Int, + findUpstreamComponent: (ProgramNode) -> Component + ): Component { + return DataSourceComponent(dataSource, varName) + } + } + + data class ShaderChannelLink(val shaderChannel: ShaderChannel) : Link { + override fun finalResolve(inputPort: InputPort, resolver: PortDiagram.Resolver): ProgramNode = + resolver.resolveChannel(inputPort, shaderChannel) + } + + data class ConstLink(val glsl: String, val type: GlslType) : Link { + override fun finalResolve(inputPort: InputPort, resolver: PortDiagram.Resolver): ProgramNode { + return ConstNode(glsl, OutputPort(ContentType.unknown(type), dataType = type)) + } + } +} + +fun DataSource.link(varName: String) = LiveShaderInstance.DataSourceLink(this, varName) + +class ShaderInstanceResolver( + private val openShaders: CacheBuilder, + private val shaderInstances: Map, + private val dataSources: Map +) { + private val liveShaderInstances = hashMapOf() + + init { + shaderInstances.keys.forEach { shaderInstanceId -> + resolve(shaderInstanceId) + } + } + + private fun findDataSource(id: String) = dataSources.getBang(id, "data source") + private fun findShader(id: String): OpenShader = openShaders.getBang(id, "open shader") + private fun findShaderInstance(id: String): ShaderInstance = shaderInstances.getBang(id, "shader instance") + + private fun resolve(id: String): LiveShaderInstance { + liveShaderInstances[id]?.let { return it } + + val shaderInstance = findShaderInstance(id) + val shader = findShader(shaderInstance.shaderId) + val knownInputPorts = shader.inputPorts.associateBy { it.id } + + val links = shaderInstance.incomingLinks + .filterKeys { portId -> + knownInputPorts.contains(portId).also { containsKey -> + if (!containsKey) + logger.warn { + "Unknown port mapping \"$portId\" for shader \"${shader.title}\" " + + "(have ${knownInputPorts.keys.sorted()})" + } + } + } + .mapValues { (_, portRef) -> + when (portRef) { + is DataSourceRef -> findDataSource(portRef.dataSourceId).link(portRef.dataSourceId) + is ShaderChannelRef -> LiveShaderInstance.ShaderChannelLink(portRef.shaderChannel) + is OutputPortRef -> TODO() + is ConstPortRef -> LiveShaderInstance.ConstLink(portRef.glsl, GlslType.from(portRef.type)) + } + } + + return build(shader, shaderInstance, links) + .also { liveShaderInstances[id] = it } + } + + fun getResolvedShaderInstances() = liveShaderInstances + + companion object { + fun build( + shader: OpenShader, + shaderInstance: ShaderInstance, + links: Map + ): LiveShaderInstance { + val ports = shader.inputPorts.map { it.id } + val extraLinks = shaderInstance.incomingLinks.keys - ports + val missingLinks = ports - shaderInstance.incomingLinks.keys + + return LiveShaderInstance( + shader, + links, + shaderInstance.shaderChannel, + shaderInstance.priority, + extraLinks = extraLinks, + missingLinks = missingLinks.toSet() + ); + } + + private val logger = Logger("ShaderInstanceResolver") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/OpenControl.kt b/src/commonMain/kotlin/baaahs/show/live/OpenControl.kt new file mode 100644 index 0000000000..736ada4977 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/OpenControl.kt @@ -0,0 +1,222 @@ +package baaahs.show.live + +import baaahs.Gadget +import baaahs.app.ui.ControlEditIntent +import baaahs.app.ui.EditIntent +import baaahs.gadgets.Switch +import baaahs.show.ButtonControl +import baaahs.show.ButtonGroupControl +import baaahs.show.DataSource +import baaahs.show.VisualizerControl +import baaahs.show.mutable.* +import baaahs.ui.Draggable +import baaahs.ui.DropTarget +import baaahs.ui.Renderer +import kotlinx.serialization.json.JsonElement + +interface OpenControl { + val id: String + val gadget: Gadget? + fun isActive(): Boolean = true + fun getState(): Map? = gadget?.state + fun applyState(state: Map) = gadget?.applyState(state) + fun controlledDataSources(): Set = emptySet() + fun addTo(activePatchSetBuilder: ActivePatchSetBuilder, panelId: String, depth: Int) {} + fun applyConstraints() {} + fun toNewMutable(mutableShow: MutableShow): MutableControl + fun getRenderer(controlProps: ControlProps): Renderer + fun getEditIntent(): EditIntent? = ControlEditIntent(id) +} + +class OpenGadgetControl( + override val id: String, + override val gadget: Gadget, + val controlledDataSource: DataSource +) : OpenControl { + override fun controlledDataSources(): Set = + setOf(controlledDataSource) + + override fun toNewMutable(mutableShow: MutableShow): MutableControl = + MutableGadgetControl(gadget, controlledDataSource) + + override fun getRenderer(controlProps: ControlProps): Renderer = + controlViews.forGadget(this, controlProps) + + override fun getEditIntent(): EditIntent? = null +} + +class OpenButtonControl( + override val id: String, + private val buttonControl: ButtonControl, + openContext: OpenContext +) : OpenPatchHolder(buttonControl, openContext), OpenControl { + override val gadget: Switch = Switch(buttonControl.title) + + val type get() = buttonControl.activationType + + var isPressed: Boolean + get() = gadget.enabled + set(value) { gadget.enabled = value } + + override fun isActive(): Boolean = isPressed + + override fun addTo(activePatchSetBuilder: ActivePatchSetBuilder, panelId: String, depth: Int) { + if (isPressed) { + addTo(activePatchSetBuilder, depth) + } + } + + override fun toNewMutable(mutableShow: MutableShow): MutableControl = + MutableButtonControl(buttonControl, mutableShow) + + override fun getRenderer(controlProps: ControlProps): Renderer = + controlViews.forButton(this, controlProps) + + fun click() { + isPressed = !isPressed + } +} + +class OpenButtonGroupControl( + override val id: String, + private val buttonGroupControl: ButtonGroupControl, + openContext: OpenContext +) : OpenControl, ControlContainer { + val title: String + get() = buttonGroupControl.title + + override val gadget: Gadget? + get() = null + + val direction = buttonGroupControl.direction + + val buttons = buttonGroupControl.buttonIds.map { + openContext.getControl(it) as OpenButtonControl + } + + override fun containedControls(): List = buttons + + override fun applyConstraints() { + val active = buttons.map { it.isPressed } + val countActive = active.count { it } + if (countActive == 0) { + buttons.firstOrNull()?.isPressed = true + } else if (countActive > 1) { + val firstActive = active.indexOfFirst { it } + buttons.forEachIndexed { index, openButtonControl -> + openButtonControl.isPressed = index == firstActive + } + } + } + + override fun toNewMutable(mutableShow: MutableShow): MutableControl = + error("not implemented for button groups") + + override fun getRenderer(controlProps: ControlProps): Renderer = + controlViews.forButtonGroup(this, controlProps) + + fun clickOn(buttonIndex: Int) { + buttons.forEachIndexed { index, openButtonControl -> + openButtonControl.isPressed = index == buttonIndex + } + } + + override fun addTo(activePatchSetBuilder: ActivePatchSetBuilder, panelId: String, depth: Int) { + buttons.forEach { it.addTo(activePatchSetBuilder, panelId, depth + 1) } + } + + fun createDropTarget(controlDisplay: ControlDisplay) = + ButtonGroupDropTarget(controlDisplay) + + inner class ButtonGroupDropTarget( + private val controlDisplay: ControlDisplay + ) : DropTarget { + override val dropTargetId = controlDisplay.dragNDrop.addDropTarget(this) + override val type: String get() = "ControlContainer" + + override fun moveDraggable(fromIndex: Int, toIndex: Int) { + controlDisplay.show.edit { + findButtonGroup() + .moveButton(fromIndex, toIndex) + }.commit(controlDisplay.editHandler) + } + + override fun willAccept(draggable: Draggable): Boolean { + return draggable is ControlDisplay.PlaceableControl + } + + override fun getDraggable(index: Int): Draggable = object : ControlDisplay.PlaceableControl { + override val mutableShow: MutableShow by lazy { controlDisplay.show.edit() } + override lateinit var mutableControl: MutableControl + + override fun willMoveTo(destination: DropTarget): Boolean = true + + override fun remove() { + mutableControl = mutableShow.findButtonGroup() + .buttons + .removeAt(index) + } + + override fun onMove() { + mutableShow.commit(controlDisplay.editHandler) + } + } + + override fun insertDraggable(draggable: Draggable, index: Int) { + draggable as ControlDisplay.PlaceableControl + draggable.mutableShow.findButtonGroup() + .buttons + .add(index, draggable.mutableControl as MutableButtonControl) + } + + override fun removeDraggable(draggable: Draggable) { + draggable as ControlDisplay.PlaceableControl + draggable.remove() + } + + private fun MutableShow.findButtonGroup() = + findControl(id) as MutableButtonGroupControl + + fun release() { + controlDisplay.dragNDrop.removeDropTarget(this) + } + } +} + +class OpenVisualizerControl( + override val id: String, + private val visualizerControl: VisualizerControl +) : OpenControl { + override val gadget: Gadget? get() = null + + override fun toNewMutable(mutableShow: MutableShow): MutableControl = + visualizerControl.createMutable(mutableShow) + + override fun getRenderer(controlProps: ControlProps): Renderer = + controlViews.forVisualizer(this, controlProps) + + override fun getEditIntent(): EditIntent = + ControlEditIntent(id) + + val rotate get() = visualizerControl.rotate +} + +interface ControlContainer { + fun containedControls() : List +} + +interface ControlViews { + fun forGadget(openGadgetControl: OpenGadgetControl, controlProps: ControlProps): Renderer + fun forButton(openButtonControl: OpenButtonControl, controlProps: ControlProps): Renderer + fun forButtonGroup(openButtonGroupControl: OpenButtonGroupControl, controlProps: ControlProps): Renderer + fun forVisualizer(openVisualizerControl: OpenVisualizerControl, controlProps: ControlProps): Renderer +} + +data class ControlProps( + val onShowStateChange: () -> Unit, + val editMode: Boolean, + val controlDisplay: ControlDisplay? +) + +val controlViews by lazy { getControlViews() } +expect fun getControlViews(): ControlViews \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/OpenPatch.kt b/src/commonMain/kotlin/baaahs/show/live/OpenPatch.kt new file mode 100644 index 0000000000..3f3329f80b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/OpenPatch.kt @@ -0,0 +1,31 @@ +package baaahs.show.live + +import baaahs.fixtures.Fixture +import baaahs.show.Patch +import baaahs.show.Surfaces + +class OpenPatch( + val shaderInstances: List, + val surfaces: Surfaces +) { + constructor(patch: Patch, openContext: OpenContext): this( + patch.shaderInstanceIds.map { + openContext.getShaderInstance(it) + }, + patch.surfaces + ) + + val serial = nextSerial++ + + val problems get() = shaderInstances.flatMap { it.problems } + + override fun toString(): String { + return "OpenPatch(shaderInstances=$shaderInstances, surfaces=$surfaces)" + } + + fun matches(fixture: Fixture) = surfaces.matches(fixture) + + companion object { + private var nextSerial = 0 + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/OpenPatchHolder.kt b/src/commonMain/kotlin/baaahs/show/live/OpenPatchHolder.kt new file mode 100644 index 0000000000..d2f79733c6 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/OpenPatchHolder.kt @@ -0,0 +1,29 @@ +package baaahs.show.live + +import baaahs.Severity +import baaahs.getValue +import baaahs.severity +import baaahs.show.PatchHolder + +open class OpenPatchHolder( + patchHolder: PatchHolder, + openContext: OpenContext +) { + val title = patchHolder.title + val patches = patchHolder.patches.map { OpenPatch(it, openContext) } + val problems get() = patches.flatMap { it.problems } + val problemLevel: Severity? by lazy { problems.severity() } + + val controlLayout: Map> = + patchHolder.controlLayout.mapValues { (_, controlRefs) -> + controlRefs.map { openContext.getControl(it) } + } + + fun addTo(activePatchSetBuilder: ActivePatchSetBuilder, depth: Int) { + activePatchSetBuilder.add(this, depth) + + controlLayout.forEach { (panelId, openControls) -> + openControls.forEach { openControl -> openControl.addTo(activePatchSetBuilder, panelId, depth + 1) } + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/OpenShow.kt b/src/commonMain/kotlin/baaahs/show/live/OpenShow.kt new file mode 100644 index 0000000000..5313f3dd91 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/OpenShow.kt @@ -0,0 +1,169 @@ +package baaahs.show.live + +import baaahs.* +import baaahs.show.DataSource +import baaahs.show.Show +import baaahs.show.mutable.MutableShow +import baaahs.util.Logger + +interface OpenContext { + val allControls: List + + fun findControl(id: String): OpenControl? + fun getControl(id: String): OpenControl + fun getDataSource(id: String): DataSource + fun getShaderInstance(it: String): LiveShaderInstance + fun release() +} + +class OpenShow( + private val show: Show, + private val showPlayer: ShowPlayer, + private val openContext: OpenContext, +) : OpenPatchHolder(show, openContext), RefCounted by RefCounter() { + val id = randomId("show") + val allProblems: List + get() = run { + arrayListOf().apply { + object : OpenShowVisitor() { + override fun visitPatchHolder(openPatchHolder: OpenPatchHolder) { + addAll(openPatchHolder.problems) + super.visitPatchHolder(openPatchHolder) + } + }.apply { visitShow(this@OpenShow) } + } + } + val layouts get() = show.layouts + val allDataSources = show.dataSources + val allControls: List = openContext.allControls + + val feeds = show.dataSources.entries.associate { (id, dataSource) -> + val feed = showPlayer.openFeed(id, dataSource) + dataSource to feed + } + + /** + * Don't hold on to MutableShows; create them, apply changes, and commit or abandon them promptly! + */ + fun edit(block: MutableShow.() -> Unit = {}): MutableShow = + MutableShow(show).apply(block) + + fun activePatchSet(): ActivePatchSet { + val builder = ActivePatchSetBuilder() + addTo(builder, 0) + return builder.build() + } + + override fun onFullRelease() { + openContext.release() + feeds.values.forEach { it.release() } + } + + fun applyConstraints() { + allControls.forEach { it.applyConstraints() } + } + + fun getEnabledSwitchState(): Set { + return allControls + .filterIsInstance() + .mapNotNull { if (it.isPressed) it.id else null } + .toSet() + } + + fun getShowState(): ShowState { + return ShowState( + allControls.mapNotNull { control -> + control.getState()?.let { control.id to it } + }.associate { it } + ) + } + + fun applyState(showState: ShowState) { + showState.controls.forEach { (id, state) -> + val control = openContext.findControl(id) + if (control != null) { + control.applyState(state) + } else { + logger.debug { "Can't apply state to unknown control \"$id\"" } + } + } + } + + companion object { + private val logger = Logger("OpenShow") + } +} + +data class ActivePatchSet(val activePatches: List) + +class ActivePatchSetBuilder { + private val items = arrayListOf() + private var nextSerial = 0 + + fun add(patchHolder: OpenPatchHolder, depth: Int, layoutContainerId: String = "") { + items.add(Item(patchHolder, depth, layoutContainerId, nextSerial++)) + } + + fun build(): ActivePatchSet { + return ActivePatchSet( + items.sortedWith( + compareBy { it.depth } + .thenBy { it.layoutContainerId } + .thenBy { it.serial } + ).map { it.patchHolder } + .flatMap { it.patches } + ) + } + + private data class Item( + val patchHolder: OpenPatchHolder, + val depth: Int, + val layoutContainerId: String, + val serial: Int + ) +} + +abstract class OpenShowVisitor { + open fun visitShow(openShow: OpenShow) { + visitPatchHolder(openShow) + } + + open fun visitPatchHolder(openPatchHolder: OpenPatchHolder) { + openPatchHolder.patches.forEach { + visitPatch(it) + } + + openPatchHolder.controlLayout.forEach { (panelName, openControls) -> + openControls.forEach { openControl -> + visitPlacedControl(panelName, openControl) + } + } + } + + open fun visitPlacedControl(panelName: String, openControl: OpenControl) { + visitControl(openControl) + } + + open fun visitButtonGroupButton(controlContainer: ControlContainer, openControl: OpenControl) { + visitControl(openControl) + } + + open fun visitControl(openControl: OpenControl) { + if (openControl is OpenPatchHolder) { + visitPatchHolder(openControl) + } + + if (openControl is ControlContainer) { + visitControlContainer(openControl) + } + } + + open fun visitControlContainer(controlContainer: ControlContainer) { + controlContainer.containedControls().forEach { containedControl -> + visitButtonGroupButton(controlContainer, containedControl) + } + } + + open fun visitPatch(openPatch: OpenPatch) { + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/live/ShowOpener.kt b/src/commonMain/kotlin/baaahs/show/live/ShowOpener.kt new file mode 100644 index 0000000000..d5c11e21cc --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/live/ShowOpener.kt @@ -0,0 +1,69 @@ +package baaahs.show.live + +import baaahs.ShowPlayer +import baaahs.ShowState +import baaahs.getBang +import baaahs.gl.Toolchain +import baaahs.gl.openShader +import baaahs.gl.shader.OpenShader +import baaahs.show.DataSource +import baaahs.show.Shader +import baaahs.show.Show +import baaahs.util.CacheBuilder +import baaahs.util.Logger + +open class ShowOpener( + private val toolchain: Toolchain, + private val show: Show, + private val showPlayer: ShowPlayer +): OpenContext { + init { logger.debug { "Opening show ${show.title}" } } + + private val openControlCache = CacheBuilder { controlId -> + show.getControl(controlId).open(controlId, this, showPlayer) + } + + override val allControls: List get() = openControlCache.all.values.toList() + + private val openShaders = CacheBuilder { shaderId -> + openShader(show.shaders.getBang(shaderId, "shaders")) + } + + private val resolver = ShaderInstanceResolver( + openShaders, + show.shaderInstances, + show.dataSources + ) + + private val allShaderInstances = resolver.getResolvedShaderInstances() + + override fun findControl(id: String): OpenControl? = + if (show.controls.containsKey(id)) openControlCache[id] else null + + override fun getControl(id: String): OpenControl = openControlCache[id] + + override fun getDataSource(id: String): DataSource = + show.dataSources.getBang(id, "data source") + + override fun getShaderInstance(it: String): LiveShaderInstance = + allShaderInstances.getBang(it, "shader instance") + + fun openShow(showState: ShowState? = null): OpenShow { + return OpenShow(show, showPlayer, this) + .also { if (showState != null) it.applyState(showState) } + .also { it.applyConstraints() } + } + + open fun openShader(shader: Shader) = + toolchain.openShader(shader) + + override fun release() { +// allControls.forEach { it.release() } +// openShaders.forEach { it.release() } +// allShaderInstances.forEach { it.release() } + } + + companion object { + private val logger = Logger() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/mutable/EditingShader.kt b/src/commonMain/kotlin/baaahs/show/mutable/EditingShader.kt new file mode 100644 index 0000000000..30ee73c2a3 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/mutable/EditingShader.kt @@ -0,0 +1,181 @@ +package baaahs.show.mutable + +import baaahs.app.ui.editor.LinkOption +import baaahs.gl.Toolchain +import baaahs.gl.patch.ShaderInstanceOptions +import baaahs.gl.preview.ShaderBuilder +import baaahs.gl.shader.InputPort +import baaahs.randomId +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.ui.Observable +import baaahs.ui.addObserver +import baaahs.util.Logger + +class EditingShader( + private val parentMutableShow: MutableShow, + private val parentMutablePatch: MutablePatch, + val mutableShaderInstance: MutableShaderInstance, + private val toolchain: Toolchain, + private val createShaderBuilder: (Shader) -> ShaderBuilder, +) : Observable() { + val id = randomId("EditingShader") + var state = State.Building + + val mutableShader: MutableShader get() = mutableShaderInstance.mutableShader + val title: String get() = mutableShader.title + + var shaderBuilder: ShaderBuilder = createShaderBuilder(mutableShader.build()) + private set + + private var shaderInstanceOptions: ShaderInstanceOptions? = null + private val linksSelectedByAHuman = HashMap(mutableShaderInstance.incomingLinks) + + val gadgets get() = shaderBuilder.gadgets + val openShader get() = shaderBuilder.openShader + val inputPorts get() = openShader?.inputPorts?.sortedBy { it.title } + + val extraLinks: Map + get() { + return openShader?.let { + val inputPortIds = it.inputPorts.map { port -> port.id }.toSet() + mutableShaderInstance.incomingLinks.filter { (id, _) -> + !inputPortIds.contains(id) + } + } ?: emptyMap() + } + + init { + startBuilding() + } + + private fun maybeNotifyStateChanging(newState: State) { + if (state != newState) { + state = newState + notifyChanged() + } + } + + fun updateSrc(newSrc: String) { + if (mutableShader.src != newSrc) { + mutableShader.src = newSrc + + shaderBuilder = createShaderBuilder(mutableShader.build()) + startBuilding() + } + } + + private fun startBuilding() { + shaderInstanceOptions = null + + shaderBuilder.addObserver { + if (it.state == ShaderBuilder.State.Success) + maybeUpdateIncomingLinks() + + val newState = when (it.state) { + ShaderBuilder.State.Success -> State.Success + ShaderBuilder.State.Errors -> State.Errors + else -> State.Building + } + + maybeNotifyStateChanging(newState) + } + shaderBuilder.startBuilding() + state = State.Building + notifyChanged() + } + + private fun maybeUpdateIncomingLinks() { + openShader?.inputPorts?.forEach { inputPort -> + if (!linksSelectedByAHuman.containsKey(inputPort.id)) { + getShaderInstanceOptions() + ?.inputPortLinkOptions?.get(inputPort.id)?.firstOrNull() + ?.getMutablePort() + ?.let { mutableShaderInstance.incomingLinks[inputPort.id] = it } + } + } + } + + fun getShaderInstanceOptions(): ShaderInstanceOptions? { + val currentOpenShader = openShader + if (shaderInstanceOptions == null && currentOpenShader != null) { + val showBuilder = ShowBuilder() + parentMutablePatch.build(showBuilder) + + shaderInstanceOptions = toolchain.wiringOptions(currentOpenShader, parentMutableShow, mutableShaderInstance) + } + return shaderInstanceOptions + } + + fun getShaderChannelOptions(excludeMain: Boolean = false): List { + return mutableListOf().apply { + getShaderInstanceOptions()?.shaderChannels?.let { addAll(it) } + if (excludeMain) removeAll { it.id == ShaderChannel.Main.id } + if (none { it.id == mutableShaderInstance.shaderChannel.id }) { + add(0, mutableShaderInstance.shaderChannel) + } + }.sortedBy { it.title } + } + + fun linkOptionsFor(inputPort: InputPort): List? = linkOptionsFor(inputPort.id) + fun linkOptionsFor(portId: String): List? { + return getShaderInstanceOptions() + ?.inputPortLinkOptions + ?.get(portId) + } + + fun changeInputPortLink(inputPort: InputPort, linkOption: LinkOption?) = + changeInputPortLink(inputPort.id, linkOption) + fun changeInputPortLink(portId: String, linkOption: LinkOption?) { + val incomingLinks = mutableShaderInstance.incomingLinks + if (linkOption == null) { + incomingLinks.remove(portId) + } else { + val mutablePort = linkOption.getMutablePort() + if (mutablePort != null) { + incomingLinks[portId] = mutablePort + linksSelectedByAHuman[portId] = mutablePort + } else { + TODO("what to do?") + } + } + + // Prune any unknown port mappings (e.g. if a uniform was removed). + val knownInputPortIds = openShader!!.inputPorts.map { it.id } + incomingLinks.keys.minus(knownInputPortIds).forEach { unknownKey -> + logger.debug { "Removing unknown mapping for unknown port \"$unknownKey\"" } + incomingLinks.remove(unknownKey) + } + } + + fun getInputPortLink(inputPort: InputPort) = getInputPortLink(inputPort.id) + private fun getInputPortLink(portId: String): MutablePort? { + return mutableShaderInstance.incomingLinks[portId] + } + + fun isBuilding(): Boolean = state == State.Building + + // if (it.state == EditingShader.State.Success) { +// val shader = it.shaderBuilder.shader +// val wiringGuess = appContext.toolchain.autoWire(shader) +// .acceptSymbolicChannelLinks() +// .takeFirstIfAmbiguous() +// .resolve() +// // TODO Improve on this. +// val editingIncomingLinks = props.mutableShaderInstance.incomingLinks +// val guessIncomingLinks = wiringGuess.mutableShaderInstances.first().incomingLinks +// +// editingIncomingLinks.clear() +// editingIncomingLinks.putAll(guessIncomingLinks) +// } + + companion object { + private val logger = Logger() + } + + enum class State { + Building, + Success, + Errors + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/mutable/MutableControl.kt b/src/commonMain/kotlin/baaahs/show/mutable/MutableControl.kt new file mode 100644 index 0000000000..6c105c3e90 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/mutable/MutableControl.kt @@ -0,0 +1,136 @@ +package baaahs.show.mutable + +import baaahs.Gadget +import baaahs.app.ui.EditorPanel +import baaahs.app.ui.MutableEditable +import baaahs.app.ui.editor.* +import baaahs.camelize +import baaahs.randomId +import baaahs.show.* +import baaahs.show.live.OpenControl +import baaahs.show.live.OpenGadgetControl + +interface MutableControl : MutableEditable { + var asBuiltId: String? + fun build(showBuilder: ShowBuilder): Control + fun accept(visitor: MutableShowVisitor, log: VisitationLog) { + if (log.controls.add(this)) visitor.visit(this) + } + + fun buildAndStashId(showBuilder: ShowBuilder): String { + return showBuilder.idFor(build(showBuilder)) + .also { asBuiltId = it } + } +} + +data class MutableGadgetControl( + var gadget: Gadget, + val controlledDataSource: DataSource +) : MutableControl { + override val title: String + get() = gadget.title + + override var asBuiltId: String? = null + + override fun getEditorPanels(editableManager: EditableManager): List { + return emptyList() + } + + override fun build(showBuilder: ShowBuilder): Control { + return GadgetControl(gadget, showBuilder.idFor(controlledDataSource)) + } + + fun open(): OpenControl { + return OpenGadgetControl(randomId(gadget.title.camelize()), gadget, controlledDataSource) + } +} + +class MutableButtonControl( + baseButtonControl: ButtonControl, + override val mutableShow: MutableShow +) : MutablePatchHolder(baseButtonControl), MutableControl { + var activationType: ButtonControl.ActivationType = baseButtonControl.activationType + + override var asBuiltId: String? = null + + override fun getPropertiesComponents(): List { + return super.getPropertiesComponents() + ButtonPropsEditor(this) + } + + override fun build(showBuilder: ShowBuilder): Control { + return ButtonControl( + title, + activationType, + patches = patches.map { it.build(showBuilder) }, + eventBindings = eventBindings, + controlLayout = buildControlLayout(showBuilder) + ) + } + + override fun accept(visitor: MutableShowVisitor, log: VisitationLog) { + super.accept(visitor, log) + super.accept(visitor, log) + } +} + +data class MutableButtonGroupControl( + override var title: String, + var direction: ButtonGroupControl.Direction, + val buttons: MutableList = arrayListOf(), + val mutableShow: MutableShow +) : MutableControl { + override var asBuiltId: String? = null + + fun addButton(title: String, block: MutableButtonControl.() -> Unit): MutableButtonControl { + val control = MutableButtonControl(ButtonControl(title), mutableShow) + control.block() + buttons.add(control) + return control + } + + override fun getEditorPanels(editableManager: EditableManager): List { + return listOf( + GenericPropertiesEditorPanel( + editableManager, + ButtonGroupPropsEditor(this) + ) + ) + } + + override fun build(showBuilder: ShowBuilder): Control { + return ButtonGroupControl(title, direction, buttons.map { mutableButtonControl -> + mutableButtonControl.buildAndStashId(showBuilder) + }) + } + + override fun accept(visitor: MutableShowVisitor, log: VisitationLog) { + super.accept(visitor, log) + buttons.forEach { it.accept(visitor, log) } + } + + fun moveButton(fromIndex: Int, toIndex: Int) { + buttons.add(toIndex, buttons.removeAt(fromIndex)) + } +} + +data class MutableVisualizerControl( + var surfaceDisplayMode: VisualizerControl.SurfaceDisplayMode = VisualizerControl.SurfaceDisplayMode.Continuous, + var rotate: Boolean = false +) : MutableControl { + override val title: String get() = "Visualizer" + + override var asBuiltId: String? = null + + override fun getEditorPanels(editableManager: EditableManager): List { + return listOf( + GenericPropertiesEditorPanel( + editableManager, + VisualizerPropsEditor(this) + ) + ) + } + + override fun build(showBuilder: ShowBuilder): Control { + return VisualizerControl(surfaceDisplayMode, rotate) + } +} diff --git a/src/commonMain/kotlin/baaahs/show/mutable/MutablePort.kt b/src/commonMain/kotlin/baaahs/show/mutable/MutablePort.kt new file mode 100644 index 0000000000..22d050f783 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/mutable/MutablePort.kt @@ -0,0 +1,76 @@ +package baaahs.show.mutable + +import baaahs.app.ui.CommonIcons +import baaahs.englishize +import baaahs.gl.glsl.GlslType +import baaahs.show.* +import baaahs.ui.Icon + +interface MutablePort { + val title: String + val icon: Icon + val groupName: String? + + fun toRef(showBuilder: ShowBuilder): PortRef + fun accept(visitor: MutableShowVisitor, log: VisitationLog) +} + +data class MutableDataSourcePort(val dataSource: DataSource) : MutablePort { + override val title: String get() = dataSource.title + override val icon: Icon get() = CommonIcons.DataSource + override val groupName: String get() = "Data Source:" + + override fun toRef(showBuilder: ShowBuilder): PortRef = + DataSourceRef(showBuilder.idFor(dataSource)) + + override fun accept(visitor: MutableShowVisitor, log: VisitationLog) { + if (log.dataSources.add(this)) visitor.visit(dataSource) + } +} +fun DataSource.editor() = MutableDataSourcePort(this) + +data class MutableShaderChannel(val id: String) : MutablePort { + override val title: String get() = "${id.englishize()} Channel" + override val icon: Icon get() = CommonIcons.ShaderChannel + override val groupName: String get() = "Channel:" + + override fun toRef(showBuilder: ShowBuilder): PortRef = + ShaderChannelRef(build()) + + fun build(): ShaderChannel = + ShaderChannel(id) + + override fun accept(visitor: MutableShowVisitor, log: VisitationLog) { + if (log.shaderChannels.add(this)) visitor.visit(this) + } + + companion object { + fun from(id: String): MutableShaderChannel { + return if (id.isNotBlank()) + MutableShaderChannel(id) else ShaderChannel.Main.toMutable() + } + } +} +fun ShaderChannel.editor() = MutableShaderChannel(this.id) + +data class MutableOutputPort(private val portId: String) : MutablePort { + override val title: String get() = "$portId Output" + override val icon: Icon get() = error("not implemented") + override val groupName: String get() = error("not implemented") + + override fun toRef(showBuilder: ShowBuilder): PortRef = + OutputPortRef(portId) + + override fun accept(visitor: MutableShowVisitor, log: VisitationLog) {} +} + +data class MutableConstPort(private val glsl: String, private val type: GlslType) : MutablePort { + override val title: String get() = "const($glsl)" + override val icon: Icon get() = error("not implemented") + override val groupName: String get() = error("not implemented") + + override fun toRef(showBuilder: ShowBuilder): PortRef = + ConstPortRef(glsl, type.glslLiteral) + + override fun accept(visitor: MutableShowVisitor, log: VisitationLog) {} +} diff --git a/src/commonMain/kotlin/baaahs/show/mutable/MutableShow.kt b/src/commonMain/kotlin/baaahs/show/mutable/MutableShow.kt new file mode 100644 index 0000000000..3ff75ac201 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/mutable/MutableShow.kt @@ -0,0 +1,473 @@ +package baaahs.show.mutable + +import baaahs.* +import baaahs.app.ui.EditorPanel +import baaahs.app.ui.MutableEditable +import baaahs.app.ui.editor.* +import baaahs.gl.Toolchain +import baaahs.gl.openShader +import baaahs.gl.patch.ContentType +import baaahs.gl.patch.LinkedPatch +import baaahs.gl.patch.PatchResolver +import baaahs.gl.shader.OpenShader +import baaahs.show.* +import baaahs.show.live.* +import baaahs.util.CacheBuilder +import baaahs.util.UniqueIds + +interface EditHandler { + fun onShowEdit(mutableShow: MutableShow, pushToUndoStack: Boolean = true) + fun onShowEdit(show: Show, pushToUndoStack: Boolean = true) + fun onShowEdit(show: Show, showState: ShowState, pushToUndoStack: Boolean = true) +} + +abstract class MutablePatchHolder( + private val basePatchHolder: PatchHolder +) : MutableEditable { + protected abstract val mutableShow: MutableShow + + override var title = basePatchHolder.title + + override fun getEditorPanels(editableManager: EditableManager): List { + return listOf( + GenericPropertiesEditorPanel(editableManager, getPropertiesComponents()), + PatchHolderEditorPanel(editableManager, this) + ) + } + + open fun getPropertiesComponents(): List { + return listOf(TitlePropsEditor(this)) + } + + val patches by lazy { + basePatchHolder.patches.map { MutablePatch(it, mutableShow) }.toMutableList() + } + val eventBindings = basePatchHolder.eventBindings.toMutableList() + + internal val controlLayout by lazy { + basePatchHolder.controlLayout + .mapValues { (_, v) -> + v.map { mutableShow.findControl(it) }.toMutableList() + }.toMutableMap() + } + + fun addPatch(block: MutablePatch.() -> Unit): MutablePatchHolder { + val mutablePatch = MutablePatch( + emptyList(), + Surfaces.AllSurfaces + ) + mutablePatch.block() + addPatch(mutablePatch) + return this + } + + fun addPatch(mutablePatch: MutablePatch): MutablePatchHolder { + val existingPatch = patches.find { it.surfaces == mutablePatch.surfaces } + if (existingPatch != null) { + existingPatch.mutableShaderInstances.addAll(mutablePatch.mutableShaderInstances) + if (SparkleMotion.EXTRA_ASSERTIONS) existingPatch.mutableShaderInstances.assertNoDuplicates() + } else { + patches.add(mutablePatch) + } + return this + } + + fun editPatch(index: Int, block: MutablePatch.() -> Unit): MutablePatchHolder { + patches[index].block() + return this + } + + fun addControl(panel: String, control: MutableControl) { + controlLayout.getOrPut(panel) { arrayListOf() }.add(control) + } + + fun addButton(panel: String, title: String, block: MutableButtonControl.() -> Unit): MutableButtonControl { + val control = MutableButtonControl(ButtonControl(title), mutableShow) + control.block() + addControl(panel, control) + return control + } + + fun addButtonGroup( + panel: String, + title: String, + direction: ButtonGroupControl.Direction = ButtonGroupControl.Direction.Horizontal, + block: MutableButtonGroupControl.() -> Unit + ): MutableButtonGroupControl { + val control = MutableButtonGroupControl(title, direction, mutableListOf(), mutableShow) + control.block() + addControl(panel, control) + return control + } + + fun removeControl(panel: String, index: Int): MutableControl { + return controlLayout.getOrPut(panel) { arrayListOf() }.removeAt(index) + } + + fun findControlDataSources(): Set { + return controlLayout.values.flatMap { + it.filterIsInstance().map { it.dataSource } + }.toSet() + } + + fun editControlLayout(panelName: String): MutableList { + return controlLayout.getOrPut(panelName) { mutableListOf() } + } + + internal fun buildControlLayout(showBuilder: ShowBuilder): Map> { + return controlLayout.mapValues { (_, v) -> + v.map { mutableControl -> + mutableControl.buildAndStashId(showBuilder) + } + } + } + + open fun accept(visitor: MutableShowVisitor, log: VisitationLog = VisitationLog()) { + if (log.patchHolders.add(this)) visitor.visit(this) + patches.forEach { it.accept(visitor, log) } + controlLayout.forEach { (_, controls) -> + controls.forEach { it.accept(visitor, log) } + } + } +} + +class MutableShow( + baseShow: Show +) : MutablePatchHolder(baseShow), MutableEditable { + override val mutableShow: MutableShow get() = this + + internal val controls = CacheBuilder { id -> + baseShow.controls.getBang(id, "control").createMutable(this) + } + + internal val dataSources = baseShow.dataSources + .mapValues { (_, shader) -> MutableDataSourcePort(shader) } + .toMutableMap() + + internal val shaders = baseShow.shaders + .mapValues { (_, shader) -> MutableShader(shader) } + .toMutableMap() + + private val shaderChannels = CacheBuilder { + MutableShaderChannel(it.id) + } + + private val shaderInstances = baseShow.shaderInstances + .mapValues { (_, shaderInstance) -> + MutableShaderInstance( + findShader(shaderInstance.shaderId), + hashMapOf(), + shaderChannels[shaderInstance.shaderChannel], + shaderInstance.priority + ) + }.toMutableMap() + + init { + // Second pass required here since they might refer to each other. + baseShow.shaderInstances.forEach { (id, shaderInstance) -> + val editor = findShaderInstance(id) + val resolvedIncomingLinks = shaderInstance.incomingLinks.mapValues { (_, fromPortRef) -> + fromPortRef.dereference(this) + } + editor.incomingLinks.putAll(resolvedIncomingLinks) + } + } + + private val mutableLayouts = MutableLayouts(baseShow.layouts) + + constructor(title: String, block: MutableShow.() -> Unit = {}) : this(Show(title)) { + this.block() + } + + fun invoke(block: MutableShow.() -> Unit) = this.block() + + fun editLayouts(block: MutableLayouts.() -> Unit): MutableShow { + mutableLayouts.apply(block) + return this + } + + fun isChanged(baseShow: Show): Boolean { + return baseShow != getShow() + } + + fun build(showBuilder: ShowBuilder): Show { + return Show( + title, + patches = patches.map { it.build(showBuilder) }, + eventBindings = eventBindings, + controlLayout = buildControlLayout(showBuilder), + layouts = mutableLayouts.build(), + shaders = showBuilder.getShaders(), + shaderInstances = showBuilder.getShaderInstances(), + dataSources = showBuilder.getDataSources(), + controls = showBuilder.getControls() + ) + } + + fun getShow() = build(ShowBuilder()) + + fun findControl(controlId: String): MutableControl = + controls.getBang(controlId, "control") + + fun edit(buttonGroupControl: OpenButtonGroupControl, block: MutableButtonGroupControl.() -> Unit = {}) { + (findControl(buttonGroupControl.id) as MutableButtonGroupControl).block() + } + + fun findDataSource(dataSourceId: String): MutableDataSourcePort = + dataSources.getBang(dataSourceId, "data source") + + fun findPatchHolder(openPatchHolder: OpenPatchHolder): MutablePatchHolder { + return when (openPatchHolder) { + is OpenShow -> this + + // Yuck. + is OpenButtonControl -> return findControl(openPatchHolder.id) as MutableButtonControl + + else -> error("huh? $openPatchHolder isn't a show or a button?") + } + } + + fun findShader(shaderId: String): MutableShader = + shaders.getBang(shaderId, "shader") + + fun findShaderInstance(id: String): MutableShaderInstance = + shaderInstances.getBang(id, "shader instance") + + fun commit(editHandler: EditHandler) { + editHandler.onShowEdit(this) + } + + companion object { + fun create(title: String): Show { + return Show(title = title) + } + } +} + +class MutableLayouts(baseLayouts: Layouts) { + var panelNames = baseLayouts.panelNames.toMutableList() + val map = baseLayouts.map.toMutableMap() + + fun copyFrom(layouts: Layouts) { + panelNames.clear() + panelNames.addAll(layouts.panelNames) + + map.clear() + map.putAll(layouts.map) + } + + fun build(): Layouts { + return Layouts(panelNames, map) + } +} + +class MutablePatch { + val id: String = randomId("patch-editor") + + val mutableShaderInstances: MutableList + var surfaces: Surfaces + + constructor( + mutableShaderInstances: List = emptyList(), + surfaces: Surfaces = Surfaces.AllSurfaces + ) { + if (SparkleMotion.EXTRA_ASSERTIONS) mutableShaderInstances.assertNoDuplicates() + this.mutableShaderInstances = mutableShaderInstances.toMutableList() + this.surfaces = surfaces + } + + constructor(basePatch: Patch, show: MutableShow) { + mutableShaderInstances = basePatch.shaderInstanceIds.map { shaderInstanceId -> + show.findShaderInstance(shaderInstanceId) + }.toMutableList() + if (SparkleMotion.EXTRA_ASSERTIONS) mutableShaderInstances.assertNoDuplicates() + + this.surfaces = basePatch.surfaces + } + + constructor(block: MutablePatch.() -> Unit = {}) { + this.mutableShaderInstances = arrayListOf() + this.surfaces = Surfaces.AllSurfaces + + block() + } + + fun build(showBuilder: ShowBuilder): Patch = + Patch( + mutableShaderInstances.map { showBuilder.idFor(it.build(showBuilder)) }, + surfaces + ) + + fun accept(visitor: MutableShowVisitor, log: VisitationLog = VisitationLog()) { + if (log.patches.add(this)) visitor.visit(this) + + surfaces.accept(visitor, log) + mutableShaderInstances.forEach { it.accept(visitor, log) } + } + + /** Build a [LinkedPatch] independent of an [baaahs.show.live.OpenShow]. */ + fun openForPreview(toolchain: Toolchain, resultContentType: ContentType): LinkedPatch? { + val showBuilder = ShowBuilder() + build(showBuilder) + + val openShaders = CacheBuilder { shaderId -> + toolchain.openShader(showBuilder.getShaders().getBang(shaderId, "shader")) + } + + val resolvedShaderInstances = + ShaderInstanceResolver(openShaders, showBuilder.getShaderInstances(), showBuilder.getDataSources()) + .getResolvedShaderInstances() + val openPatch = OpenPatch(resolvedShaderInstances.values.toList(), surfaces) + + val portDiagram = PatchResolver.buildPortDiagram(openPatch) + return portDiagram.resolvePatch(ShaderChannel.Main, resultContentType, showBuilder.getDataSources()) + } + + fun addShaderInstance(mutableShaderInstance: MutableShaderInstance): MutablePatch { + mutableShaderInstances.add(mutableShaderInstance) + if (SparkleMotion.EXTRA_ASSERTIONS) mutableShaderInstances.assertNoDuplicates() + return this + } + + fun addShaderInstance(shader: Shader, block: MutableShaderInstance.() -> Unit = {}): MutableShaderInstance { + return addShaderInstance(MutableShader(shader), block) + } + + fun addShaderInstance(shader: MutableShader, block: MutableShaderInstance.() -> Unit = {}): MutableShaderInstance { + val mutableShaderInstance = MutableShaderInstance(shader) + mutableShaderInstance.block() + mutableShaderInstances.add(mutableShaderInstance) + if (SparkleMotion.EXTRA_ASSERTIONS) mutableShaderInstances.assertNoDuplicates() + return mutableShaderInstance + } + + fun findShaderInstanceFor(shader: Shader): MutableShaderInstance { + return mutableShaderInstances.find { it.mutableShader.build() == shader } + ?: error("No shader instance for ${shader.title}.") + } + + fun remove(mutableShaderInstance: MutableShaderInstance) { + mutableShaderInstances.remove(mutableShaderInstance) + } + + fun getEditorPanel(editableManager: EditableManager) = + PatchEditorPanel(editableManager, this) +} + +data class MutableShader( + var title: String, + /**language=glsl*/ + var src: String +) { + constructor(shader: Shader) : this(shader.title, shader.src) + + fun build(): Shader { + return Shader(title, src) + } + + fun accept(visitor: MutableShowVisitor, log: VisitationLog = VisitationLog()) { + if (log.shaders.add(this)) visitor.visit(this) + } + + override fun toString(): String { + return "MutableShader(title='$title', src='[${src.length} chars]')" + } +} + +data class MutableShaderInstance( + val mutableShader: MutableShader, + val incomingLinks: MutableMap = hashMapOf(), + var shaderChannel: MutableShaderChannel = ShaderChannel.Main.editor(), + var priority: Float = 0f +) { + val id = randomId("MutableShaderInstance") + + fun findDataSources(): List { + return incomingLinks.mapNotNull { (_, from) -> + (from as? MutableDataSourcePort)?.dataSource + } + } + + fun findShaderChannels(): List { + return (incomingLinks.values.map { link -> + link as? MutableShaderChannel + } + shaderChannel).filterNotNull() + } + + fun link(portId: String, toPort: DataSource) { + incomingLinks[portId] = toPort.editor() + } + + fun link(portId: String, toPort: MutablePort) { + incomingLinks[portId] = toPort + } + + fun build(showBuilder: ShowBuilder): ShaderInstance { + return ShaderInstance( + showBuilder.idFor(mutableShader.build()), + incomingLinks.mapValues { (_, portRef) -> + portRef.toRef(showBuilder) + }, + shaderChannel.build(), + priority + ) + } + + fun accept(visitor: MutableShowVisitor, log: VisitationLog = VisitationLog()) { + if (log.shaderInstances.add(this)) visitor.visit(this) + mutableShader.accept(visitor, log) + shaderChannel.accept(visitor, log) + incomingLinks.forEach { (_, port) -> port.accept(visitor, log) } + } + + fun getEditorPanel(patchEditorPanel: PatchEditorPanel): EditorPanel = + patchEditorPanel.ShaderInstanceEditorPanel(this) + + fun isFilter(openShader: OpenShader): Boolean = with(openShader) { + inputPorts.any { + it.contentType == outputPort.contentType && incomingLinks[it.id]?.let { link -> + link is MutableShaderChannel && link.id == shaderChannel.id + } == true + } + } +} + + +class ShowBuilder { + private val controlIds = UniqueIds() + private val dataSourceIds = UniqueIds() + private val shaderIds = UniqueIds() + private val shaderInstanceIds = UniqueIds() + + fun idFor(control: Control): String { + return controlIds.idFor(control) { control.suggestId() } + } + + fun idFor(dataSource: DataSource): String { + return dataSourceIds.idFor(dataSource) { dataSource.suggestId() } + } + + fun idFor(shader: Shader): String { + return shaderIds.idFor(shader) { shader.suggestId() } + } + + fun idFor(shaderInstance: ShaderInstance): String { + return shaderInstanceIds.idFor(shaderInstance) { "${shaderInstance.shaderId}-inst" } + } + + fun getControls(): Map = controlIds.all() + fun getDataSources(): Map = dataSourceIds.all() + fun getShaders(): Map = shaderIds.all() + fun getShaderInstances(): Map = shaderInstanceIds.all() +} + +class VisitationLog { + val patchHolders = mutableSetOf() + val patches = mutableSetOf() + val surfaces = mutableSetOf() + val shaderInstances = mutableSetOf() + val shaders = mutableSetOf() + val shaderChannels = mutableSetOf() + val controls = mutableSetOf() + val dataSources = mutableSetOf() +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/show/mutable/MutableShowVisitor.kt b/src/commonMain/kotlin/baaahs/show/mutable/MutableShowVisitor.kt new file mode 100644 index 0000000000..21a2367f27 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/show/mutable/MutableShowVisitor.kt @@ -0,0 +1,15 @@ +package baaahs.show.mutable + +import baaahs.show.DataSource +import baaahs.show.Surfaces + +interface MutableShowVisitor { + fun visit(mutablePatchHolder: MutablePatchHolder) {} + fun visit(mutablePatch: MutablePatch) {} + fun visit(surfaces: Surfaces) {} + fun visit(mutableControl: MutableControl) {} + fun visit(mutableShaderInstance: MutableShaderInstance) {} + fun visit(mutableShader: MutableShader) {} + fun visit(mutableShaderChannel: MutableShaderChannel) {} + fun visit(dataSource: DataSource) {} +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/shows/BakedInShaders.kt b/src/commonMain/kotlin/baaahs/shows/BakedInShaders.kt new file mode 100644 index 0000000000..d21c480f51 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/shows/BakedInShaders.kt @@ -0,0 +1,27 @@ +package baaahs.shows + +import baaahs.getResource + +class BakedInShaders { + companion object { + private val allBakedInShaders: List by lazy { + getResource("_RESOURCE_FILES_") + .split("\n") + .filter { it.startsWith("baaahs/shows/") && it.endsWith(".glsl")} + .map { fileName -> + val shaderSource = getResource(fileName) + val nameFromGlsl = Regex("^// (.*)").find(shaderSource)?.groupValues?.get(1) + val name = nameFromGlsl ?: fileName + .split("/").last() + .replace(".glsl", "") + .replace("_", " ") + BakedInShader(name, shaderSource) + } + } + + val all = + allBakedInShaders.sortedBy { it.name.toLowerCase() } + } + + class BakedInShader(val name: String, val src: String) +} diff --git a/src/commonMain/kotlin/baaahs/shows/PanelTweenShow.kt b/src/commonMain/kotlin/baaahs/shows/PanelTweenShow.kt new file mode 100644 index 0000000000..2500ba24cc --- /dev/null +++ b/src/commonMain/kotlin/baaahs/shows/PanelTweenShow.kt @@ -0,0 +1,43 @@ +//package baaahs.shows +// +//import baaahs.Color +//import baaahs.Show +//import baaahs.ShowContext +//import baaahs.gadgets.PalettePicker +//import baaahs.model.Model +// TODO: Reimplement using GLSL. +//object PanelTweenShow : Show("PanelTweenShow") { +// override fun createRenderer(model: Model, showContext: ShowContext): Renderer { +// val initialColors = listOf( +// Color.from("#FF8A47"), +// Color.from("#FC6170"), +// Color.from("#8CEEEE"), +// Color.from("#26BFBF"), +// Color.from("#FFD747") +// ) +// +// return object : Renderer { +// val palettePicker = showContext.getGadget("palette", PalettePicker("Palette", initialColors)) +// +//// val solidShader = SolidShader() +//// +//// val shaderBuffers = showContext.allSurfaces.map { surface -> +//// showContext.getShaderBuffer(surface, solidShader) +//// } +//// val fadeTimeMs = 500 +// +// override fun nextFrame() { +//// val now = getTimeMillis().and(0xfffffff).toInt() +//// val colors = palettePicker.colors +//// shaderBuffers.forEachIndexed() { number, buf -> +//// val colorIndex = (now / fadeTimeMs + number) % colors.size +//// val startColor = colors[colorIndex] +//// val endColor = colors[(colorIndex + 1) % colors.size] +//// val tweenedColor = startColor.fade(endColor, (now % fadeTimeMs) / fadeTimeMs.toFloat()) +//// +//// buf.color = tweenedColor +//// } +// } +// } +// } +//} diff --git a/src/commonMain/kotlin/baaahs/sim/FakeDmxUniverse.kt b/src/commonMain/kotlin/baaahs/sim/FakeDmxUniverse.kt new file mode 100644 index 0000000000..d6fa4f0134 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/sim/FakeDmxUniverse.kt @@ -0,0 +1,31 @@ +package baaahs.sim + +import baaahs.dmx.Dmx + +class FakeDmxUniverse : Dmx.Universe() { + private val channelsOut = ByteArray(512) + private val channelsIn = ByteArray(512) + private val listeners = mutableListOf<() -> Unit>() + + override fun writer(baseChannel: Int, channelCount: Int) = + Dmx.Buffer(channelsOut, baseChannel, channelCount) + + fun reader(baseChannel: Int, channelCount: Int, listener: () -> Unit): Dmx.Buffer { + listeners.add(listener) + return Dmx.Buffer(channelsIn, baseChannel, channelCount) + } + + override fun sendFrame() { + channelsOut.copyInto(channelsIn) + updateListeners() + } + + override fun allOff() { + for (i in 0 until 512) channelsIn[i] = 0 + updateListeners() + } + + private fun updateListeners() { + listeners.forEach { it() } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/sim/FakeFs.kt b/src/commonMain/kotlin/baaahs/sim/FakeFs.kt new file mode 100644 index 0000000000..c505ccc5ff --- /dev/null +++ b/src/commonMain/kotlin/baaahs/sim/FakeFs.kt @@ -0,0 +1,72 @@ +package baaahs.sim + +import baaahs.io.Fs +import baaahs.util.Logger + +class FakeFs(override val name: String = "FakeFs") : BaseFakeFs() { + private val files = mutableMapOf() + + override val keys: List + get() = files.keys.toList() + + override suspend fun loadFile(file: Fs.File): String? { + logger.debug { "FakeFs.loadFile($file)" } + return files[file.fullPath]?.decodeToString() + } + + override suspend fun saveFile(file: Fs.File, content: ByteArray, allowOverwrite: Boolean) { + logger.debug { "FakeFs.createFile($file) -> ${content.size} bytes" } + addFile(file, content, allowOverwrite) + } + + override suspend fun saveFile(file: Fs.File, content: String, allowOverwrite: Boolean) { + saveFile(file, content.encodeToByteArray(), allowOverwrite) + } + + private fun addFile(file: Fs.File, content: ByteArray, allowOverwrite: Boolean) { + val path = file.fullPath + if (files.containsKey(path) && !allowOverwrite) { + throw Exception("$path already exists") + } + files[path] = content + } + + fun renameFile(from: Fs.File, to: Fs.File) { + files[to.fullPath] = files.remove(from.fullPath)!! + } +} + +abstract class BaseFakeFs : Fs { + protected abstract val keys: List + + override suspend fun listFiles(directory: Fs.File): List { + val prefix = if (directory.isRoot) "" else "${directory.fullPath}/" + val entries = keys + .filter { directory.isRoot || it.startsWith(prefix) } + .map { + val inPath = it.substring(prefix.length) + val slash = inPath.indexOf('/') + if (slash == -1) { + directory.resolve(inPath, false) + } else { + directory.resolve(inPath.substring(0, slash), true) + } + }.distinct() + logger.debug { "FakeFs.listFiles($directory) -> $entries" } + return entries + } + + override suspend fun exists(file: Fs.File): Boolean { + val allKeys = keys + return allKeys.contains(file.fullPath) || + allKeys.any { resolve(it).isWithin(file) } + } + + override suspend fun isDirectory(file: Fs.File): Boolean { + return file.isDirectory ?: keys.any { it.startsWith(file.fullPath + "/") } + } + + companion object { + val logger = Logger("FakeFs") + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/sim/FakeNetwork.kt b/src/commonMain/kotlin/baaahs/sim/FakeNetwork.kt new file mode 100644 index 0000000000..2129d95dff --- /dev/null +++ b/src/commonMain/kotlin/baaahs/sim/FakeNetwork.kt @@ -0,0 +1,200 @@ +package baaahs.sim + +import baaahs.net.Network +import baaahs.util.Logger +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlin.coroutines.CoroutineContext +import kotlin.coroutines.EmptyCoroutineContext +import kotlin.random.Random + +class FakeNetwork( + private val networkDelay: Int = 1, + coroutineContext: CoroutineContext = EmptyCoroutineContext +) : Network { + private val addressCounters = hashMapOf() + val facade = Facade() + + private val coroutineScope: CoroutineScope = object : CoroutineScope { + override val coroutineContext: CoroutineContext get() = coroutineContext + } + private val udpListeners: MutableMap, Network.UdpListener> = hashMapOf() + private val udpListenersByPort: MutableMap> = hashMapOf() + + private val httpServersByPort: + MutableMap, FakeLink.FakeHttpServer> = hashMapOf() + + override fun link(name: String): FakeLink { + val next = addressCounters.getOrElse(name) { 1 } + addressCounters[name] = next + 1 + val address = FakeAddress("$name$next") + return FakeLink(address) + } + + var packetLossRate: Float = .05f + var packetsReceived: Int = 0 + var packetsDropped: Int = 0 + + private fun sendPacketShouldSucceed() = Random.nextFloat() > packetLossRate / 2 + private fun receivePacketShouldSucceed() = Random.nextFloat() > packetLossRate / 2 + + inner class FakeLink(override val myAddress: Network.Address) : Network.Link { + override val udpMtu = 1500 + private var nextAvailablePort = 65000 + var webSocketListeners = mutableListOf() + var tcpConnections = mutableListOf() + + override fun listenUdp(port: Int, udpListener: Network.UdpListener): Network.UdpSocket { + val serverPort = if (port == 0) nextAvailablePort++ else port + udpListeners.put(Pair(myAddress, serverPort), udpListener) + val portListeners = udpListenersByPort.getOrPut(serverPort) { mutableListOf() } + portListeners.add(udpListener) + return FakeUdpSocket(serverPort) + } + + override fun startHttpServer(port: Int): Network.HttpServer { + val fakeHttpServer = FakeHttpServer(port) + httpServersByPort[myAddress to port] = fakeHttpServer + return fakeHttpServer + } + + override fun connectWebSocket( + toAddress: Network.Address, + port: Int, + path: String, + webSocketListener: Network.WebSocketListener + ): Network.TcpConnection { + webSocketListeners.add(webSocketListener) + + val fakeHttpServer = httpServersByPort[toAddress to port] + if (fakeHttpServer == null) { + logger.warn { "No HTTP server at $toAddress:$port for $path" } + } + + val onConnectCallback = fakeHttpServer?.webSocketListeners?.get(path) + if (onConnectCallback == null) { + val connection = FakeTcpConnection(myAddress, toAddress, port, null) + coroutineScope.launch { + networkDelay() + webSocketListener.reset(connection) + } + tcpConnections.add(connection) + return connection + } else { + logger.warn { "No WebSocket listener at $toAddress:$port$path" } + } + + lateinit var clientSideConnection: FakeTcpConnection + val serverSideConnection = FakeTcpConnection(myAddress, toAddress, port, webSocketListener) { + clientSideConnection + } + + val serverListener = onConnectCallback(serverSideConnection) + + clientSideConnection = FakeTcpConnection(myAddress, toAddress, port, serverListener) { + serverSideConnection + } + + coroutineScope.launch { + networkDelay() + serverListener.connected(serverSideConnection) + webSocketListener.connected(clientSideConnection) + } + + tcpConnections.add(clientSideConnection) + return clientSideConnection + } + + inner class FakeTcpConnection( + override val fromAddress: Network.Address, + override val toAddress: Network.Address, + override val port: Int, + private val webSocketListener: Network.WebSocketListener? = null, + private val otherListener: (() -> Network.TcpConnection)? = null + ) : Network.TcpConnection { + override fun send(bytes: ByteArray) { + coroutineScope.launch { + webSocketListener?.receive(otherListener!!(), bytes) + } + } + } + + private inner class FakeUdpSocket(override val serverPort: Int) : Network.UdpSocket { + override fun sendUdp(toAddress: Network.Address, port: Int, bytes: ByteArray) { + if (!sendPacketShouldSucceed()) { + packetsDropped++.updates(facade) + return + } + + val listener = udpListeners[Pair(toAddress, port)] + if (listener != null) transmitUdp(myAddress, serverPort, listener, bytes) + } + + override fun broadcastUdp(port: Int, bytes: ByteArray) { + if (!sendPacketShouldSucceed()) { + packetsDropped++.updates(facade) + return + } + + udpListenersByPort[port]?.forEach { listener -> + transmitUdp(myAddress, serverPort, listener, bytes) + } + } + + private fun transmitUdp( + fromAddress: Network.Address, + fromPort: Int, + udpListener: Network.UdpListener, + bytes: ByteArray + ) { + coroutineScope.launch { + networkDelay() + + if (!receivePacketShouldSucceed()) { + packetsDropped++.updates(facade) + } else { + packetsReceived++.updates(facade) + + udpListener.receive(fromAddress, fromPort, bytes) + } + } + } + } + + internal inner class FakeHttpServer(val port: Int) : Network.HttpServer { + val webSocketListeners: MutableMap Network.WebSocketListener> = + mutableMapOf() + + override fun listenWebSocket( + path: String, + onConnect: (incomingConnection: Network.TcpConnection) -> Network.WebSocketListener + ) { + webSocketListeners[path] = onConnect + } + } + } + + private suspend fun networkDelay() { + if (networkDelay != 0) delay(networkDelay.toLong()) + } + + private data class FakeAddress(val name: String) : Network.Address { + override fun toString(): String = name + } + + companion object { + val logger = Logger("FakeNetwork") + } + + inner class Facade : baaahs.ui.Facade() { + var packetLossRate: Float + get() = this@FakeNetwork.packetLossRate + set(value) { this@FakeNetwork.packetLossRate = value } + val packetsReceived: Int get() = this@FakeNetwork.packetsReceived + val packetsDropped: Int get() = this@FakeNetwork.packetsDropped + } + + @Suppress("unused") + fun Any?.updates(facade: Facade) = facade.notifyChanged() +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/sim/MergedFs.kt b/src/commonMain/kotlin/baaahs/sim/MergedFs.kt new file mode 100644 index 0000000000..6afa3dd554 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/sim/MergedFs.kt @@ -0,0 +1,35 @@ +package baaahs.sim + +import baaahs.io.Fs + +class MergedFs( + val baseFs: Fs, + val overlayFs: Fs, + override val name: String = "${baseFs.name} + ${overlayFs.name}" +) : Fs { + override suspend fun listFiles(directory: Fs.File): List { + return (baseFs.listFiles(directory) + overlayFs.listFiles(directory)) + .distinct() + .map { Fs.File(this, it.fullPath, it.isDirectory) } + } + + override suspend fun loadFile(file: Fs.File): String? { + return overlayFs.loadFile(file) ?: baseFs.loadFile(file) + } + + override suspend fun saveFile(file: Fs.File, content: ByteArray, allowOverwrite: Boolean) { + baseFs.saveFile(file, content, allowOverwrite) + } + + override suspend fun saveFile(file: Fs.File, content: String, allowOverwrite: Boolean) { + baseFs.saveFile(file, content, allowOverwrite) + } + + override suspend fun exists(file: Fs.File): Boolean { + return baseFs.exists(file) || overlayFs.exists(file) + } + + override suspend fun isDirectory(file: Fs.File): Boolean { + return if (overlayFs.exists(file)) overlayFs.exists(file) else baseFs.isDirectory(file) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/ui/DragNDrop.kt b/src/commonMain/kotlin/baaahs/ui/DragNDrop.kt new file mode 100644 index 0000000000..110c28361f --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ui/DragNDrop.kt @@ -0,0 +1,56 @@ +package baaahs.ui + +import baaahs.camelize +import baaahs.util.UniqueIds + +abstract class DragNDrop { + protected val dropTargets = UniqueIds() + + protected fun onMove(source: DropTarget, sourceIndex: Int, dest: DropTarget, destIndex: Int) { + if (source == dest) { + if (sourceIndex != destIndex) { + dest.moveDraggable(sourceIndex, destIndex) + } + } else { + val draggable = source.getDraggable(sourceIndex) + if (dest.willAccept(draggable) && draggable.willMoveTo(dest)) { + source.removeDraggable(draggable) + dest.insertDraggable(draggable, destIndex) + draggable.onMove() + } + } + } + + fun addDropTarget(dropTarget: DropTarget): String { + return dropTargets.idFor(dropTarget) { dropTarget.suggestId() } + } + + fun removeDropTarget(dropTarget: DropTarget) { + dropTargets.remove(dropTarget) || throw IllegalStateException("Unregistered drop target.") + } + + fun removeDropTarget(id: String) { + dropTargets.removeId(id) || throw IllegalStateException("Unregistered drop target.") + } + + fun reset() { + dropTargets.clear() + } +} + +interface DropTarget{ + val type: String + val dropTargetId: String + + fun suggestId(): String = type.camelize() + fun moveDraggable(fromIndex: Int, toIndex: Int) + fun willAccept(draggable: Draggable): Boolean + fun getDraggable(index: Int): Draggable + fun insertDraggable(draggable: Draggable, index: Int) + fun removeDraggable(draggable: Draggable) +} + +interface Draggable { + fun willMoveTo(destination: DropTarget): Boolean = true + fun onMove() {} +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/ui/Facade.kt b/src/commonMain/kotlin/baaahs/ui/Facade.kt new file mode 100644 index 0000000000..af146e3751 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ui/Facade.kt @@ -0,0 +1,3 @@ +package baaahs.ui + +open class Facade : Observable(), Observer diff --git a/src/commonMain/kotlin/baaahs/ui/Observable.kt b/src/commonMain/kotlin/baaahs/ui/Observable.kt new file mode 100644 index 0000000000..dd982d3be2 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ui/Observable.kt @@ -0,0 +1,38 @@ +package baaahs.ui + +interface IObservable { + fun addObserver(observer: Observer): Observer + fun removeObserver(observer: Observer) +} + +open class Observable : IObservable { + private val observers = mutableListOf() + + override fun addObserver(observer: Observer): Observer { + observers.add(observer) + return observer + } + + override fun removeObserver(observer: Observer) { + observers.remove(observer) + } + + fun notifyChanged() { + observers.forEach { it.notifyChanged() } + } +} + +fun T.addObserver(fireImmediately: Boolean = false, callback: (T) -> Unit): RemovableObserver { + val observer = RemovableObserver(this, callback) + addObserver(observer) + if (fireImmediately) callback(this) + return observer +} + +class RemovableObserver( + private val observable: T, + private val callback: (T) -> Unit +) : Observer { + override fun notifyChanged() = callback.invoke(observable) + fun remove() = observable.removeObserver(this) +} diff --git a/src/commonMain/kotlin/baaahs/ui/Observer.kt b/src/commonMain/kotlin/baaahs/ui/Observer.kt new file mode 100644 index 0000000000..3cf56276a5 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ui/Observer.kt @@ -0,0 +1,5 @@ +package baaahs.ui + +interface Observer { + fun notifyChanged() +} diff --git a/src/commonMain/kotlin/baaahs/ui/Renderer.kt b/src/commonMain/kotlin/baaahs/ui/Renderer.kt new file mode 100644 index 0000000000..a0d13eba86 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/ui/Renderer.kt @@ -0,0 +1,5 @@ +package baaahs.ui + +expect interface Renderer + +expect interface Icon \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util.kt b/src/commonMain/kotlin/baaahs/util.kt new file mode 100644 index 0000000000..c7a42c76a9 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util.kt @@ -0,0 +1,105 @@ +package baaahs + +import baaahs.util.Clock +import baaahs.util.asMillis +import kotlinx.coroutines.delay +import kotlin.math.PI +import kotlin.math.max +import kotlin.math.min +import kotlin.random.Random +import kotlin.reflect.KProperty + +fun Collection.only(description: String = "item"): E { + if (size != 1) + throw IllegalArgumentException("Expected one $description, found $size: $this") + else return iterator().next() +} + +fun List.replacing(index: Int, replacement: T): List { + return this.mapIndexed { i, t -> if (i == index) replacement else t } +} + +fun toRadians(degrees: Float) = (degrees * PI / 180).toFloat() + +fun constrain(value: Float, minValue: Float, maxValue: Float): Float { + return max(min(value, maxValue), minValue) +} + +suspend fun randomDelay(timeMs: Int) { + delay(Random.nextInt(timeMs).toLong()) +} + +fun unknown(type: String, key: T, among: Collection): String { + return "unknown $type \"$key\" among [${among.map { it.toString() }.sorted().joinToString(", ")}]" +} + +fun Map?.getBang(key: K, type: String): V { + if (this == null) { + error("map for $type is null") + } + + return get(key) + ?: error(unknown(type, key, keys)) +} + +fun Int.boundedBy(range: IntRange): Int { + return when { + this < range.first -> range.first + this > range.last -> range.last + else -> this + } +} + + +expect val internalTimerClock: Clock + +expect fun doRunBlocking(block: suspend () -> Unit) + +expect fun getResource(name: String): String + +expect fun decodeBase64(s: String): ByteArray + +internal suspend fun time(function: suspend () -> Unit) = internalTimerClock.time(function) +internal suspend fun Clock.time(function: suspend () -> Unit): Int { + val then = now() + function.invoke() + return (now() - then).asMillis().toInt() +} + +internal fun timeSync(function: () -> Unit) = internalTimerClock.timeSync(function) +internal fun Clock.timeSync(function: () -> Unit): Int { + val then = now() + function.invoke() + return (now() - then).asMillis().toInt() +} + +fun String.camelize(): String = + replace(Regex("([A-Z]+)"), " $1") + .split(Regex("[^A-Za-z0-9]+")) + .joinToString("") { it.toLowerCase().capitalize() } + .decapitalize() + +fun String.englishize(): String { + return Regex("([A-Z](?=[a-z]+)|[A-Z]+(?![a-z]))").replace(this) { + " " + it.value + }.capitalize() +} + + +fun randomId(prefix: String): String { + return prefix + + "-" + + Random.nextInt(0, Int.MAX_VALUE).toString(16) + + "-" + + Random.nextInt(0, Int.MAX_VALUE).toString(16) +} + +fun T.listOf() = listOf(this) + +// Workaround for https://youtrack.jetbrains.com/issue/KT-38501. +fun debugger(arg: String = "?") { + println("Debugger breakpoint: $arg") +} + +// Workaround for https://youtrack.jetbrains.com/issue/KT-41471. +operator fun Lazy.getValue(thisRef: Any?, property: KProperty<*>) = value \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util/CacheBuilder.kt b/src/commonMain/kotlin/baaahs/util/CacheBuilder.kt new file mode 100644 index 0000000000..69b9807b3b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/CacheBuilder.kt @@ -0,0 +1,15 @@ +package baaahs.util + +import baaahs.unknown + +class CacheBuilder(val createFn: (K) -> V) { + private val map = mutableMapOf() + + val all: Map get() = map + + operator fun get(key: K): V { + return map.getOrPut(key) { createFn(key) } + } + + fun getBang(key: K, type: String): V = get(key) ?: error(unknown(type, key, map.keys)) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util/Framerate.kt b/src/commonMain/kotlin/baaahs/util/Framerate.kt new file mode 100644 index 0000000000..45b654d333 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/Framerate.kt @@ -0,0 +1,27 @@ +package baaahs.util + +import baaahs.ui.Observable +import kotlin.math.roundToInt + +class Framerate : Observable() { + var elapsedMs: Int = 0 + private set + val fps: Int get() = (1000f / elapsedMs).roundToInt() + + var averageElapsedMs: Float = 0f + private set + val averageFps: Int get() = (1000f / averageElapsedMs).roundToInt() + + fun elapsed(ms: Int) { + elapsedMs = ms + + averageElapsedMs = if (averageElapsedMs == 0f) { + // Probably means this is the first datapoint we've received. + ms.toFloat() + } else { + (averageElapsedMs * 99 + elapsedMs) / 100 + } + + notifyChanged() + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util/Logger.kt b/src/commonMain/kotlin/baaahs/util/Logger.kt new file mode 100644 index 0000000000..9ccd35fb82 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/Logger.kt @@ -0,0 +1,61 @@ +package baaahs.util + +import com.soywiz.klock.DateFormat +import com.soywiz.klock.DateTime + +class Logger(val id: String) { + fun debug(exception: Throwable? = null, message: () -> String) { + log(id, LogLevel.DEBUG, message, exception) + } + + fun info(message: () -> String) { + log(id, LogLevel.INFO, message) + } + + fun warn(message: () -> String) { + log(id, LogLevel.WARN, message) + } + + fun warn(exception: Throwable, message: () -> String) { + log(id, LogLevel.WARN, message, exception) + } + + fun error(message: () -> String) { + log(id, LogLevel.ERROR, message) + } + + fun error(exception: Throwable, message: () -> String) { + log(id, LogLevel.ERROR, message, exception) + } + + fun group(message: String, block: () -> T): T { + logGroupBegin(id, message) + return try { + block() + } finally { + logGroupEnd(id, message) + } + } + + companion object { + private val FORMAT by lazy { DateFormat("yyyy-MM-dd HH:mm:ss.SSS") } + + fun ts(): String { + return DateTime.now().format(FORMAT) + } + + } +} + +enum class LogLevel { + DEBUG, + INFO, + WARN, + ERROR +} + +inline fun Logger() = Logger(T::class.simpleName ?: "unknown") + +expect fun log(id: String, level: LogLevel, message: () -> String, exception: Throwable? = null) +expect fun logGroupBegin(id: String, message: String) +expect fun logGroupEnd(id: String, message: String) diff --git a/src/commonMain/kotlin/baaahs/util/Stats.kt b/src/commonMain/kotlin/baaahs/util/Stats.kt new file mode 100644 index 0000000000..1b15a0deed --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/Stats.kt @@ -0,0 +1,37 @@ +package baaahs.util + +import baaahs.internalTimerClock +import kotlin.math.roundToInt +import kotlin.properties.ReadOnlyProperty + +open class Stats { + private val statistics = mutableMapOf() + + protected fun statistic(): ReadOnlyProperty { + return ReadOnlyProperty { thisRef, property -> + thisRef.statistics.getOrPut(property.name) { Statistic(property.name) } + } + } + + fun summarize(): String = statistics.values.joinToString("\n") { it.summarize() } + + class Statistic(val name: String) { + var calls = 0 + var elapsedTime = Interval(0) + + fun time(block: () -> T): T { + val startTime = internalTimerClock.now() + return try { + block.invoke() + } finally { + calls++ + elapsedTime += internalTimerClock.now() - startTime + } + } + + fun summarize(): String { + val avgTimeMs = elapsedTime / calls * 1000 + return "$name: $calls calls, avg ${avgTimeMs.roundToInt()}ms, total ${(elapsedTime * 1000).roundToInt()}ms" + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util/Time.kt b/src/commonMain/kotlin/baaahs/util/Time.kt new file mode 100644 index 0000000000..9f19d12527 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/Time.kt @@ -0,0 +1,12 @@ +package baaahs.util + +import kotlin.math.roundToLong + +typealias Time = Double +fun Interval(n: Number): Time = n.toDouble() + +interface Clock { + fun now(): Time +} + +fun Time.asMillis(): Long = (this * 1000).roundToLong() \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util/UndoStack.kt b/src/commonMain/kotlin/baaahs/util/UndoStack.kt new file mode 100644 index 0000000000..e4ac0d665e --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/UndoStack.kt @@ -0,0 +1,36 @@ +package baaahs.util + +class UndoStack(private val capacity: Int = 100) { + val stack = ArrayList() + var position = -1 + + fun reset(initialState: T?) { + stack.clear() + initialState?.let { stack.add(initialState) } + position = 0 + } + + fun changed(newState: T) { + truncate(position + 1) + + stack.add(newState) + position++ + } + + fun undo(): T = stack[--position] + fun canUndo(): Boolean = position > 0 + + fun redo(): T = stack[++position] + fun canRedo(): Boolean = position < stack.size - 1 + + private fun truncate(size: Int) { + while (position >= capacity) { + stack.removeAt(0) + position-- + } + + while (stack.size > size) { + stack.removeAt(stack.size - 1) + } + } +} diff --git a/src/commonMain/kotlin/baaahs/util/UniqueIds.kt b/src/commonMain/kotlin/baaahs/util/UniqueIds.kt new file mode 100644 index 0000000000..03cf68febf --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/UniqueIds.kt @@ -0,0 +1,52 @@ +package baaahs.util + +import baaahs.unknown + +class UniqueIds { + private val toId = mutableMapOf() + private val byId = mutableMapOf() + + fun all() = byId.toMap() + + operator fun get(id: String): T? = byId[id] + + fun getBang(id: String, type: String): T { + return byId.get(id) ?: error(unknown(type, id, byId.keys)) + } + + fun idFor(value: T, suggest: () -> String): String { + return toId.getOrPut(value) { + val suggestedId = suggest() + byId.putWithUniqueId(suggestedId, value) + } + } + + fun remove(value: T): Boolean { + val id = toId.remove(value) ?: return false + byId.remove(id) + return true + } + + fun removeId(id: String): Boolean { + val value = byId.remove(id) ?: return false + toId.remove(value) + return true + } + + fun clear() { + toId.clear() + byId.clear() + } +} + +fun MutableMap.putWithUniqueId(prefix: String, value: V): String { + val key = if (!containsKey(prefix)) { + prefix + } else { + var i = 2 + while (containsKey("${prefix}$i")) i++ + "${prefix}$i" + } + put(key, value) + return key +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/util/misc.kt b/src/commonMain/kotlin/baaahs/util/misc.kt new file mode 100644 index 0000000000..e3427d2f3a --- /dev/null +++ b/src/commonMain/kotlin/baaahs/util/misc.kt @@ -0,0 +1,5 @@ +package baaahs.util + +import kotlin.math.roundToInt + +fun Float?.percent() = this?.let { "${(it * 100f).roundToInt()}%" } ?: "—%" \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/visualizer/VizScene.kt b/src/commonMain/kotlin/baaahs/visualizer/VizScene.kt new file mode 100644 index 0000000000..c5a258c3b3 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/visualizer/VizScene.kt @@ -0,0 +1,7 @@ +package baaahs.visualizer + +expect class VizScene { + fun add(obj: VizObj) +} + +expect class VizObj \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/visualizer/movers/Beam.kt b/src/commonMain/kotlin/baaahs/visualizer/movers/Beam.kt new file mode 100644 index 0000000000..5e4f6aaa12 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/visualizer/movers/Beam.kt @@ -0,0 +1,46 @@ +package baaahs.visualizer.movers + +import baaahs.model.MovingHead +import baaahs.visualizer.VizScene + +interface Beam { + fun addTo(scene: VizScene) + fun update(state: State) + + companion object { + fun selectFor(movingHead: MovingHead): Beam { + return when (movingHead.colorModel) { + MovingHead.ColorModel.ColorWheel -> ColorWheelBeam(movingHead) + MovingHead.ColorModel.RGB -> RgbBeam(movingHead) + MovingHead.ColorModel.RGBW -> RgbBeam(movingHead) + } + } + } +} + +class ColorWheelBeam(movingHead: MovingHead) : Beam { + private val primaryCone = Cone(movingHead, ColorMode.Primary) + private val secondaryCone = Cone(movingHead, ColorMode.Secondary) + + override fun addTo(scene: VizScene) { + primaryCone.addTo(scene) + secondaryCone.addTo(scene) + } + + override fun update(state: State) { + primaryCone.update(state) + secondaryCone.update(state) + } +} + +class RgbBeam(movingHead: MovingHead) : Beam { + private val cone = Cone(movingHead) + + override fun addTo(scene: VizScene) { + cone.addTo(scene) + } + + override fun update(state: State) { + cone.update(state) + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/visualizer/movers/State.kt b/src/commonMain/kotlin/baaahs/visualizer/movers/State.kt new file mode 100644 index 0000000000..f880b4bd31 --- /dev/null +++ b/src/commonMain/kotlin/baaahs/visualizer/movers/State.kt @@ -0,0 +1,34 @@ +package baaahs.visualizer.movers + +import baaahs.Color +import baaahs.model.MovingHead +import kotlin.math.absoluteValue +import kotlin.math.min + +data class State( + val pan: Float = 0f, + val tilt: Float = 0f, + val colorWheelPosition: Float = 0f, + val dimmer: Float = 1f, + val color: Color = Color.BLACK +) { + fun moveToward(momentumState: State, requestedState: State, movingHead: MovingHead, elapsed: Float): State { + return State( + move(pan, momentumState.pan, movingHead.panMotorSpeed, elapsed), + move(tilt, momentumState.tilt, movingHead.tiltMotorSpeed, elapsed), + // TODO: The color wheel can spin freely so we should pick the shortest path (e.g. from .9 -> .1). + move(colorWheelPosition, momentumState.colorWheelPosition, movingHead.colorWheelMotorSpeed, elapsed), + requestedState.dimmer, + requestedState.color + ) + } + + fun move(startingPoint: Float, destination: Float, motorSpeed: Float, elapsed: Float): Float { + if (destination == startingPoint) return startingPoint + + val maxDist = elapsed / motorSpeed + val targetDist = destination - startingPoint + val dist = min(targetDist.absoluteValue, maxDist) + return startingPoint + if (destination < startingPoint) -dist else dist + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/baaahs/visualizer/movers/VizMovingHead.kt b/src/commonMain/kotlin/baaahs/visualizer/movers/VizMovingHead.kt new file mode 100644 index 0000000000..5c753a2e0b --- /dev/null +++ b/src/commonMain/kotlin/baaahs/visualizer/movers/VizMovingHead.kt @@ -0,0 +1,77 @@ +package baaahs.visualizer.movers + +import baaahs.Color +import baaahs.model.MovingHead +import baaahs.sim.FakeDmxUniverse +import baaahs.util.Clock +import baaahs.visualizer.VizScene +import kotlin.math.absoluteValue + +class VizMovingHead( + private val movingHead: MovingHead, + dmxUniverse: FakeDmxUniverse, + private val clock: Clock, + private val beam: Beam = Beam.selectFor(movingHead) +) { + private val buffer = run { + val dmxBufferReader = dmxUniverse.reader(movingHead.baseDmxChannel, movingHead.dmxChannelCount) { + receivedDmxFrame() + } + movingHead.newBuffer(dmxBufferReader) + } + + private var lastUpdate = clock.now() + private var currentState = State() + private var momentumState = State() + + fun addTo(scene: VizScene) { + beam.addTo(scene) + } + + private fun receivedDmxFrame() { + val now = clock.now() + val elapsed = (now - lastUpdate).toFloat() + + val requestedState = State( + buffer.pan, + buffer.tilt, + buffer.colorWheelPosition, + buffer.dimmer + ) + + val attainableState = currentState.moveToward(momentumState, requestedState, movingHead, elapsed) + beam.update(attainableState) + + lastUpdate = now + currentState = attainableState + momentumState = requestedState + } +} + +enum class ColorMode( + val isClipped: Boolean, + val getColor: MovingHead.(State) -> Color +) { + Rgb(false, { state -> state.color }), + Primary(true, { state -> this.colorAtPosition(state.colorWheelPosition) }), + Secondary(true, { state -> this.colorAtPosition(state.colorWheelPosition, next = true) }) +} + +fun ClosedRange.scale(value: Float) = + (endInclusive - start) * value + start + +val ClosedRange.diff + get() = + (endInclusive - start).absoluteValue + +fun MovingHead.colorAtPosition(position: Float, next: Boolean = false): Color { + var colorIndex = (position.absoluteValue % 1f * colorWheelColors.size).toInt() + if (next) colorIndex = (colorIndex + 1) % colorWheelColors.size + return colorWheelColors[colorIndex].color +} + +expect class Cone(movingHead: MovingHead, colorMode: ColorMode = ColorMode.Rgb) { + fun addTo(scene: VizScene) + + fun update(state: State) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/sample/Sample.kt b/src/commonMain/kotlin/sample/Sample.kt deleted file mode 100644 index 8cd23de5e0..0000000000 --- a/src/commonMain/kotlin/sample/Sample.kt +++ /dev/null @@ -1,11 +0,0 @@ -package sample - -expect class Sample() { - fun checkMe(): Int -} - -expect object Platform { - val name: String -} - -fun hello(): String = "Hello from ${Platform.name}" \ No newline at end of file diff --git a/src/commonMain/resources/baaahs-model.obj b/src/commonMain/resources/baaahs-model.obj new file mode 100644 index 0000000000..b5ffd7a992 --- /dev/null +++ b/src/commonMain/resources/baaahs-model.obj @@ -0,0 +1,1827 @@ +# OBJ model file (sort of) +# Exported from SketchUp with BAAAHS::Geometry and massaged by @tgvarik +# File units = inches + +v -20.536 90.552 -71.329 +v -60.471 118.515 -106.139 +v -38.673 161.32 -82.139 +v -20.536 90.552 72.052 +v -38.673 161.32 82.861 +v -60.471 118.515 106.861 +v -57.929 75.089 -106.139 +v -57.929 75.089 106.861 +v -54.59 17.938 -82.139 +v -54.59 17.938 82.861 +v -79.542 190.665 -58.139 +v -107.735 184.672 -70.139 +v -79.542 190.665 58.861 +v -107.735 184.672 70.861 +v -97.991 127.29 -106.139 +v -97.991 127.29 106.861 +v -130.695 94.586 -106.139 +v -130.695 94.586 106.861 +v -77.314 25.919 -94.139 +v -77.314 25.919 94.861 +v -108.212 22.449 -82.139 +v -108.212 22.449 82.861 +v -63.915 1.188 -74.139 +v -96.665 1.188 -74.139 +v -96.665 1.188 74.861 +v -63.915 1.188 74.861 +v -130.907 162.735 -94.139 +v -144.1 176.943 -70.139 +v -130.907 162.735 94.861 +v -144.1 176.943 70.861 +v -167.131 12.657 -74.139 +v -167.131 12.657 74.861 +v -177.484 111.006 -106.139 +v -179.55 137.571 -94.139 +v -179.55 137.571 94.861 +v -177.484 111.006 106.861 +v -211.423 68.356 -106.139 +v -211.423 68.356 106.861 +v -153.052 167.001 76.922 +v -267.065 189.739 78.928 +v -271.6 144.033 82.861 +v -271.6 144.033 -82.139 +v -252.672 120.23 -89.688 +v -232.54 94.912 -97.717 +v -252.672 120.23 90.41 +v -232.54 94.912 98.439 +v -237.042 27.111 -70.139 +v -237.042 27.111 70.861 +v -350.686 196.403 -46.139 +v -279.94 189.739 -70.139 +v -336.282 157.617 -90.139 +v -311.668 191.493 77.517 +v -350.686 196.403 46.861 +v -336.282 157.617 90.861 +v -276.091 168.647 -74.139 +v -321.878 118.831 -94.139 +v -321.878 118.831 94.861 +v -313.542 82.725 -82.139 +v -313.542 82.725 82.861 +v -304.721 41.104 -82.139 +v -304.721 41.104 82.861 +v -386.74 137.917 -82.139 +v -386.74 137.917 82.861 +v -341.744 119.776 -106.139 +v -341.744 119.776 106.861 +v -321.914 29.939 -82.139 +v -321.914 29.939 82.861 +v -362.395 120.552 -106.139 +v -362.395 120.552 106.861 +v -330.551 15.163 -70.139 +v -357.679 26.124 -82.139 +v -357.679 26.124 82.861 +v -330.551 15.163 70.861 +v -337.673 1.188 -66.139 +v -385.253 3.731 -66.139 +v -391.397 17.717 -70.139 +v -337.673 1.188 66.861 +v -385.253 3.731 66.861 +v -391.397 17.717 70.861 +v -411.149 155.054 -54.139 +v -411.149 155.054 54.861 +v -402.339 93.794 -64.139 +v -402.339 93.794 64.861 +v -102 194.61 -46.799 +v -102 194.61 47.522 +v -380.917 175.728 -3.639 +v -396.033 165.391 -28.889 +v -385.697 172.459 5.611 +v -398.423 163.757 30.236 +v -415.748 129.593 -46.514 +v -415.748 129.593 47.236 +v -402.189 65.133 -32.11 +v -397.816 136.359 -29.822 +v -399.245 142.234 30.803 +v -399.569 133.761 31.026 +v -402.189 65.133 32.833 +v -399.453 109.694 1.218 +v -388.07 165.391 -1.327 +v -82.8 216.565 -46.499 +v -68.4 202.165 -53.7 +v -39.6 216.565 -46.499 +v -46.782 201.518 -53.7 +v -32.4 216.565 -53.7 +v -32.4 216.565 -96.899 +v -46.8 202.165 -82.499 +v -68.4 202.165 -82.499 +v -82.8 216.565 -96.899 +v -46.8 223.765 -53.7 +v -75.573 223.765 -53.7 +v -75.573 223.765 -89.7 +v -46.8 223.765 -89.7 +v -32.4 216.565 97.275 +v -46.782 201.518 54.075 +v -32.4 216.565 54.075 +v -39.6 216.565 46.875 +v -68.4 202.165 54.075 +v -82.8 216.565 46.875 +v -68.4 202.165 82.875 +v -82.8 216.565 97.275 +v -46.8 202.165 82.875 +v -46.8 223.765 54.075 +v -75.573 223.765 54.075 +v -75.573 223.765 90.075 +v -46.8 223.765 90.075 +v -82.907 238.165 -25.2 +v -90 194.61 -46.799 +v -111.6 202.165 -25.2 +v -82.907 238.165 25.2 +v -111.6 202.165 25.2 +v -90 194.61 46.8 +v -77.069 210.834 -46.799 +v -77.15 211.214 -46.499 +v -79.872 231.865 31.5 +v -72.502 216.565 46.8 +v -25.307 238.165 -25.2 +v -32.4 216.565 -46.799 +v -25.307 238.165 25.2 +v -32.4 216.565 46.8 +v -40.197 215.565 -46.799 +v -32.4 158.965 -46.799 +v -32.4 158.965 46.8 +v -24.995 219.033 -36.925 +v -16.066 222.01 -25.021 +v -10.8 223.765 -18 +v -24.995 219.033 36.926 +v -16.066 222.01 25.022 +v -10.8 223.765 18 +v -97.254 220.165 0 +v -26.664 186.774 -39.149 +v -24.169 183.658 -35.825 +v -26.662 216.81 -39.149 +v -26.997 186.326 39.598 +v -24.169 183.658 35.826 +v -26.997 216.361 39.598 +v -10.8 216.361 10.798 +v -10.8 216.361 -10.797 +v -10.8 166.374 -22.099 +v -10.8 122.965 -25.2 +v -12.987 171.504 -24.18 +v -20.966 181.245 -32.412 +v -10.8 166.374 22.1 +v -10.8 122.965 25.2 +v -12.987 171.504 24.181 +v -20.966 181.245 32.413 +v -10.8 150.392 -10.797 +v -10.8 150.392 10.798 +v -19.748 96.708 -36.997 +v -28.695 70.451 -48.794 +v -19.748 96.708 37.359 +v -28.695 70.451 49.517 +v -54.59 17.938 -60.764 +v -47.029 33.271 57.991 +v -54.59 17.938 61.486 +v -63.915 1.188 -57.139 +v -63.915 1.188 57.861 +v -15.274 109.836 6.08 +v -21.985 90.144 -21.357 +v -47.029 33.271 -21.29 +v -47.029 33.271 -57.269 +v -47.029 33.271 25.638 +v -33.063 61.593 -42.241 +v -42.259 42.943 5.703 +v -36.258 55.113 39.666 +v -4.77 216.361 10.798 +v -10.743 223.561 17.998 +v -4.77 216.361 -10.797 +v -10.762 223.539 -17.975 +v -19.17 223.561 -32.397 +v -10.909 223.561 -18.184 +v -19.28 218.749 -37.21 +v -12.745 215.389 -25.519 +v -14.34 214.945 -28.487 +v -15.793 213.643 -31.27 +v -16.396 212.612 -32.47 +v -17.1 211.575 -33.628 +v -18.178 208.88 -35.398 +v -18.855 205.74 -36.511 +v -19.086 202.371 -36.891 +v -19.28 188.714 -37.21 +v -18.855 199.001 -36.511 +v -18.178 195.862 -35.398 +v -17.1 193.167 -33.628 +v -15.697 191.1 -31.322 +v -14.063 189.803 -28.637 +v -12.311 189.362 -25.758 +v -11.97 171.926 -25.197 +v -11.97 189.449 -25.197 +v 1.195 158.761 -25.197 +v -10.692 189.553 -25.197 +v -8.747 189.95 -25.197 +v -6.825 190.595 -25.197 +v -5.079 191.706 -25.197 +v -3.427 193.045 -25.197 +v -2.851 193.631 -25.197 +v -2.659 193.886 -25.197 +v 16.83 174.397 -25.197 +v -1.751 195.334 -23.531 +v -1.162 197.249 -21.761 +v -1.086 198.339 -20.936 +v -1.059 199.577 -20.042 +v 31.23 180.361 -10.797 +v -1.495 201.947 -18.674 +v -1.598 202.371 -18.447 +v -2.637 204.743 -17.505 +v -3.059 205.57 -17.219 +v -4.193 207.142 -16.908 +v -5.574 208.832 -16.69 +v -6.033 209.253 -16.717 +v -7.853 210.725 -16.963 +v -8.196 211.574 -17.517 +v -9.564 213.644 -19.841 +v -11.116 214.945 -22.57 +v 31.23 180.361 10.798 +v -4.558 205.896 18.049 +v -6.345 208.02 17.81 +v -7.221 208.94 17.779 +v -8.345 209.824 17.949 +v -8.971 211.646 19.2 +v -10.176 213.715 21.612 +v -11.581 215.016 24.42 +v -13.088 215.46 27.435 +v -19.17 216.361 39.598 +v -14.595 215.016 30.449 +v -15.999 213.715 33.257 +v -17.205 211.646 35.669 +v -18.13 208.95 37.52 +v -18.712 205.81 38.683 +v -18.911 202.44 39.08 +v -19.17 186.326 39.598 +v -18.712 199.07 38.683 +v -18.13 195.93 37.52 +v -17.205 193.233 35.669 +v -15.999 191.164 33.257 +v -14.595 189.863 30.449 +v -13.088 189.42 27.435 +v -11.97 189.749 25.198 +v -11.97 171.926 25.198 +v -23.508 223.561 32.398 +v -19.17 223.561 32.398 +v 1.195 158.761 25.198 +v -4.77 144.361 10.798 +v -4.77 144.361 -10.797 +v -23.508 223.561 -32.397 +v 24.03 144.361 -10.797 +v 16.83 158.761 -25.197 +v 31.204 151.535 -10.797 +v 31.23 151.561 -3.597 +v 31.204 151.535 10.798 +v 16.83 158.761 25.198 +v 16.83 174.397 25.198 +v -2.022 199.516 20.767 +v -2.148 200.137 20.417 +v -2.75 202.44 19.214 +v -3.134 203.281 18.891 +v -4.427 205.719 18.081 +v -2.026 197.045 22.518 +v -2.551 194.972 24.354 +v -2.996 194.223 25.198 +v -4.539 192.572 25.198 +v -4.672 192.457 25.198 +v -6.288 191.432 25.198 +v -8.133 190.545 25.198 +v -10.045 189.897 25.198 +v 24.03 144.361 10.798 +v -383.415 173.341 -13.553 +v -409.199 186.189 -13.534 +v -416.097 205.35 -27.934 +v -383.14 173.927 8.066 +v -409.199 186.189 8.066 +v -370.494 183.891 22.466 +v -416.097 205.35 22.466 +v -377.008 186.956 -27.934 +v -406.517 208.799 15.238 +v -362.53 188.101 15.238 +v -406.517 208.799 -17.659 +v -362.53 188.101 -17.659 +o 1D +f 1 2 3 +l 1 2 +l 2 3 +l 1 3 +o 1P +f 4 5 6 +l 4 5 +l 5 6 +l 4 6 +o 2D +f 1 7 2 +l 1 7 +l 7 2 +l 1 2 +o 2P +f 4 6 8 +l 4 6 +l 6 8 +l 4 8 +o 3D +f 1 9 7 +l 1 9 +l 9 7 +l 1 7 +o 3P +f 4 8 10 +l 4 8 +l 8 10 +l 4 10 +o 4D +f 11 3 12 +l 11 3 +l 3 12 +l 11 12 +o 4P +f 5 13 14 +l 5 13 +l 13 14 +l 5 14 +o 5D +f 3 2 12 +l 3 2 +l 2 12 +l 3 12 +o 5P +f 5 14 6 +l 5 14 +l 14 6 +l 5 6 +o 6D +f 2 15 12 +l 2 15 +l 15 12 +l 2 12 +o 6P +f 6 14 16 +l 6 14 +l 14 16 +l 6 16 +o 7D +f 15 7 17 +f 7 15 2 +l 7 17 +l 15 17 +l 15 2 +l 7 2 +o 7P +f 8 16 18 +f 16 8 6 +l 16 18 +l 8 18 +l 8 6 +l 16 6 +o 8D +f 9 19 7 +f 7 19 17 +l 9 19 +l 9 7 +l 19 17 +l 7 17 +o 8P +f 8 18 20 +f 10 8 20 +l 8 18 +l 18 20 +l 8 10 +l 20 10 +o 9D +f 19 21 17 +l 19 21 +l 21 17 +l 19 17 +o 9P +f 20 18 22 +l 20 18 +l 18 22 +l 20 22 +o 10D +f 9 23 19 +f 23 24 19 +f 19 24 21 +l 9 23 +l 9 19 +l 23 24 +l 24 21 +l 19 21 +o 10P +f 20 22 25 +f 26 20 25 +f 10 20 26 +l 20 22 +l 22 25 +l 25 26 +l 20 10 +l 26 10 +o 11D +f 12 27 28 +l 12 27 +l 27 28 +l 12 28 +o 11P +f 29 14 30 +l 29 14 +l 14 30 +l 29 30 +o 12D +f 15 27 12 +l 15 27 +l 27 12 +l 15 12 +o 12P +f 16 14 29 +l 16 14 +l 14 29 +l 16 29 +o 13D +f 15 17 27 +l 15 17 +l 17 27 +l 15 27 +o 13P +f 16 29 18 +l 16 29 +l 29 18 +l 16 18 +o 14D +f 21 31 17 +l 21 31 +l 31 17 +l 21 17 +o 14P +f 22 18 32 +l 22 18 +l 18 32 +l 22 32 +o 15D +f 27 33 34 +f 34 28 27 +l 27 33 +l 33 34 +l 34 28 +l 27 28 +o 15P +f 35 29 30 +f 29 35 36 +l 29 30 +l 35 30 +l 35 36 +l 29 36 +o 16D +f 17 33 27 +l 17 33 +l 33 27 +l 17 27 +o 16P +f 18 29 36 +l 18 29 +l 29 36 +l 18 36 +o 17D +f 17 37 33 +l 17 37 +l 37 33 +l 17 33 +o 17P +f 18 36 38 +l 18 36 +l 36 38 +l 18 38 +o 18D +f 17 31 37 +l 17 31 +l 31 37 +l 17 37 +o 18P +f 18 38 32 +l 18 38 +l 38 32 +l 18 32 +o 19AP +f 39 40 41 +l 39 40 +l 40 41 +l 39 41 +o 19BP +f 39 41 35 +l 39 41 +l 41 35 +l 39 35 +o 20D +f 33 42 34 +l 33 42 +l 42 34 +l 33 34 +o 20P +f 36 35 41 +l 36 35 +l 35 41 +l 36 41 +o 21D +f 33 43 42 +f 43 33 44 +f 44 33 37 +l 43 42 +l 33 42 +l 43 44 +l 33 37 +l 44 37 +o 21P +f 45 36 41 +f 36 45 46 +f 36 46 38 +l 36 41 +l 45 41 +l 45 46 +l 46 38 +l 36 38 +o 22D +f 37 47 44 +l 37 47 +l 47 44 +l 37 44 +o 22P +f 38 46 48 +l 38 46 +l 46 48 +l 38 48 +o 23D +f 31 47 37 +l 31 47 +l 47 37 +l 31 37 +o 23P +f 32 38 48 +l 32 38 +l 38 48 +l 32 48 +o 24D +f 49 50 51 +l 49 50 +l 50 51 +l 49 51 +o 24P +f 52 53 54 +l 52 53 +l 53 54 +l 52 54 +o 25D +f 55 51 50 +l 55 51 +l 51 50 +l 55 50 +o 25P +f 40 52 54 +l 40 52 +l 52 54 +l 40 54 +o 26D +f 42 56 55 +f 55 56 51 +l 42 56 +l 42 55 +l 56 51 +l 55 51 +o 26P +f 41 54 57 +f 40 54 41 +l 54 57 +l 41 57 +l 54 40 +l 41 40 +o 27D +f 42 58 56 +l 42 58 +l 58 56 +l 42 56 +o 27P +f 41 57 59 +l 41 57 +l 57 59 +l 41 59 +o 28D +f 43 58 42 +l 43 58 +l 58 42 +l 43 42 +o 28P +f 45 41 59 +l 45 41 +l 41 59 +l 45 59 +o 29D +f 44 58 43 +l 44 58 +l 58 43 +l 44 43 +o 29P +f 46 45 59 +l 46 45 +l 45 59 +l 46 59 +o 30D +f 44 60 58 +l 44 60 +l 60 58 +l 44 58 +o 30P +f 46 59 61 +l 46 59 +l 59 61 +l 46 61 +o 31D +f 44 47 60 +l 44 47 +l 47 60 +l 44 60 +o 31P +f 46 61 48 +l 46 61 +l 61 48 +l 46 48 +o 32D +f 51 62 49 +l 51 62 +l 62 49 +l 51 49 +o 32P +f 54 53 63 +l 54 53 +l 53 63 +l 54 63 +o 33D +f 56 64 51 +l 56 64 +l 64 51 +l 56 51 +o 33P +f 57 54 65 +l 57 54 +l 54 65 +l 57 65 +o 34D +f 60 66 58 +f 58 66 64 +f 58 64 56 +l 60 66 +l 60 58 +l 66 64 +l 64 56 +l 58 56 +o 34P +f 61 59 67 +f 59 57 67 +f 57 65 67 +l 61 59 +l 61 67 +l 59 57 +l 57 65 +l 67 65 +o 35D +f 51 68 62 +l 51 68 +l 68 62 +l 51 62 +o 35P +f 54 63 69 +l 54 63 +l 63 69 +l 54 69 +o 36D +f 51 64 68 +l 51 64 +l 64 68 +l 51 68 +o 36P +f 54 69 65 +l 54 69 +l 69 65 +l 54 65 +o 37D +f 70 71 68 +f 66 70 68 +f 66 68 64 +l 70 71 +l 71 68 +l 70 66 +l 68 64 +l 66 64 +o 37P +f 65 69 72 +f 65 72 73 +f 65 73 67 +l 65 69 +l 69 72 +l 72 73 +l 73 67 +l 65 67 +o 38D +f 74 75 71 +f 71 75 76 +f 70 74 71 +l 74 75 +l 75 76 +l 71 76 +l 74 70 +l 71 70 +o 38P +f 73 72 77 +f 77 72 78 +f 72 79 78 +l 73 72 +l 73 77 +l 77 78 +l 72 79 +l 78 79 +o 39D +f 49 62 80 +l 49 62 +l 62 80 +l 49 80 +o 39P +f 53 81 63 +l 53 81 +l 81 63 +l 53 63 +o 40D +f 80 62 82 +l 80 62 +l 62 82 +l 80 82 +o 40P +f 81 83 63 +l 81 83 +l 83 63 +l 81 63 +o 41D +f 62 68 82 +l 62 68 +l 68 82 +l 62 82 +o 41P +f 63 83 69 +l 63 83 +l 83 69 +l 63 69 +o 42D +f 68 76 82 +l 68 76 +l 76 82 +l 68 82 +o 42P +f 69 83 79 +l 69 83 +l 83 79 +l 69 79 +o 43D +f 71 76 68 +l 71 76 +l 76 68 +l 71 68 +o 43P +f 72 69 79 +l 72 69 +l 69 79 +l 72 79 +# Panel doesn't exist. +#o 44D +#f 84 11 12 +#l 84 11 +#l 11 12 +#l 84 12 +# Panel doesn't exist. +#o 44P +#f 13 85 14 +#l 13 85 +#l 85 14 +#l 13 14 +# Panel doesn't exist. +#o 45D +#f 84 12 28 +#l 84 12 +#l 12 28 +#l 84 28 +# Panel doesn't exist. +#o 45P +#f 14 85 30 +#l 14 85 +#l 85 30 +#l 14 30 +o R1 +f 53 49 86 +l 53 49 +l 49 86 +l 53 86 +o R2D +f 87 49 80 +f 49 87 86 +l 49 80 +l 87 80 +l 87 86 +l 49 86 +o R2P +f 88 53 86 +f 53 88 89 +f 53 89 81 +l 53 86 +l 88 86 +l 88 89 +l 89 81 +l 53 81 +o R3D +f 87 80 90 +l 87 80 +l 80 90 +l 87 90 +o R3P +f 81 89 91 +l 81 89 +l 89 91 +l 81 91 +o R4D +f 92 87 90 +f 87 92 93 +l 87 90 +l 92 90 +l 92 93 +l 87 93 +o R4P +f 91 89 94 +f 91 94 95 +f 91 95 96 +l 91 89 +l 89 94 +l 94 95 +l 95 96 +l 91 96 +# Panel doesn't exist. +#o R8D +#f 93 92 96 +#f 93 96 97 +#l 93 92 +#l 92 96 +#l 96 97 +#l 93 97 +# Panel doesn't exist. +#o R8P +#f 95 97 96 +#l 95 97 +#l 97 96 +#l 95 96 +o R5D +f 80 82 90 +l 80 82 +l 82 90 +l 80 90 +o R5P +f 81 91 83 +l 81 91 +l 91 83 +l 81 83 +o R6D +f 90 82 92 +l 90 82 +l 82 92 +l 90 92 +o R6P +f 91 96 83 +l 91 96 +l 96 83 +l 91 83 +o R7D +f 82 76 92 +l 82 76 +l 76 92 +l 82 92 +o R7P +f 83 96 79 +l 83 96 +l 96 79 +l 83 79 +# Panel doesn't exist. +#o R9D +#f 86 93 98 +#f 86 98 88 +#f 86 87 93 +#l 93 98 +#l 98 88 +#l 86 88 +#l 86 87 +#l 93 87 +# Panel doesn't exist. +#o R9P +#f 98 89 88 +#f 98 94 89 +#l 89 88 +#l 98 88 +#l 98 94 +#l 89 94 +o EarBD +f 99 100 101 +f 100 102 101 +f 101 102 103 +f 103 102 104 +f 105 104 102 +f 105 106 104 +f 107 104 106 +f 99 107 100 +f 106 100 107 +f 106 105 100 +f 105 102 100 +l 99 100 +l 100 101 +l 99 101 +l 100 102 +l 101 102 +l 102 103 +l 101 103 +l 102 104 +l 103 104 +l 104 105 +l 102 105 +l 105 106 +l 104 106 +l 104 107 +l 106 107 +l 99 107 +l 100 107 +l 100 106 +l 100 105 +o EarAD +f 103 108 101 +f 108 109 101 +f 99 101 109 +f 107 110 104 +f 111 104 110 +f 104 111 103 +f 108 103 111 +f 111 110 108 +f 109 108 110 +f 109 110 99 +f 107 99 110 +l 103 108 +l 108 101 +l 103 101 +l 108 109 +l 101 109 +l 101 99 +l 109 99 +l 107 110 +l 110 104 +l 107 104 +l 104 111 +l 110 111 +l 103 111 +l 103 104 +l 108 111 +l 108 110 +l 109 110 +l 99 110 +l 99 107 +o EarBP +f 112 113 114 +f 113 115 114 +f 113 116 115 +f 116 117 115 +f 116 118 117 +f 119 117 118 +f 119 118 112 +f 120 112 118 +f 120 113 112 +f 116 113 120 +f 118 116 120 +l 112 113 +l 113 114 +l 112 114 +l 113 115 +l 114 115 +l 113 116 +l 115 116 +l 116 117 +l 115 117 +l 116 118 +l 117 118 +l 117 119 +l 118 119 +l 112 118 +l 112 119 +l 112 120 +l 118 120 +l 113 120 +l 116 120 +o EarAP +f 114 115 121 +f 121 115 122 +f 117 122 115 +f 117 119 122 +f 123 122 119 +f 122 123 121 +f 124 121 123 +f 124 112 121 +f 114 121 112 +f 119 112 123 +f 124 123 112 +l 114 115 +l 115 121 +l 114 121 +l 115 122 +l 121 122 +l 122 117 +l 115 117 +l 117 119 +l 122 119 +l 122 123 +l 119 123 +l 121 123 +l 121 124 +l 123 124 +l 124 112 +l 121 112 +l 114 112 +l 119 112 +l 123 112 +o F19D +f 125 126 127 +l 125 126 +l 126 127 +l 125 127 +o F19P +f 128 129 130 +l 128 129 +l 129 130 +l 128 130 +o F18D +f 125 131 126 +f 131 125 132 +l 131 126 +l 125 126 +l 125 132 +l 131 132 +o F18P +f 130 133 128 +f 133 130 134 +l 133 128 +l 130 128 +l 130 134 +l 133 134 +o F17D +f 135 136 125 +l 135 136 +l 136 125 +l 135 125 +o F17P +f 137 128 138 +l 137 128 +l 128 138 +l 137 138 +o F20D +f 136 132 125 +f 132 136 131 +f 131 136 139 +l 132 125 +l 136 125 +l 132 131 +l 136 139 +l 131 139 +o F20P +f 133 138 128 +f 138 133 134 +l 138 128 +l 133 128 +l 133 134 +l 138 134 +o F16D +f 131 140 126 +f 140 131 139 +f 140 139 136 +l 140 126 +l 131 126 +l 131 139 +l 139 136 +l 140 136 +o F16P +f 141 134 130 +f 134 141 138 +l 134 130 +l 141 130 +l 141 138 +l 134 138 +o F12D +f 135 142 136 +f 142 135 143 +f 143 135 144 +l 142 136 +l 135 136 +l 142 143 +l 135 144 +l 143 144 +o F12P +f 145 137 138 +f 137 145 146 +f 137 146 147 +l 137 138 +l 145 138 +l 145 146 +l 146 147 +l 137 147 +o F21D +f 148 125 127 +f 125 148 128 +l 125 127 +l 148 127 +l 148 128 +l 125 128 +o F21P +f 128 148 129 +l 128 148 +l 148 129 +l 128 129 +o F13D +f 140 149 150 +f 149 140 136 +f 149 136 151 +f 151 136 142 +l 149 150 +l 140 150 +l 140 136 +l 149 151 +l 136 142 +l 151 142 +o F13P +f 141 152 138 +f 152 141 153 +f 138 152 154 +f 138 154 145 +l 141 138 +l 141 153 +l 152 153 +l 152 154 +l 154 145 +l 138 145 +o F1D +f 140 3 11 +l 140 3 +l 3 11 +l 140 11 +o F1P +f 13 5 141 +l 13 5 +l 5 141 +l 13 141 +o F10 +f 147 155 156 +f 147 156 144 +l 147 155 +l 155 156 +l 156 144 +l 147 144 +o F22 +f 125 137 135 +f 137 125 128 +l 137 135 +l 125 135 +l 125 128 +l 137 128 +o F11 +f 137 144 135 +f 144 137 147 +l 144 135 +l 137 135 +l 137 147 +l 144 147 +o F14D +f 140 157 158 +f 157 140 150 +f 157 150 159 +f 159 150 160 +l 157 158 +l 140 158 +l 140 150 +l 157 159 +l 150 160 +l 159 160 +o F14P +f 161 141 162 +f 141 161 153 +f 153 161 163 +f 153 163 164 +l 141 162 +l 161 162 +l 141 153 +l 161 163 +l 163 164 +l 153 164 +o F15 +f 158 165 162 +f 165 158 157 +f 162 165 166 +f 161 162 166 +l 158 162 +l 158 157 +l 165 157 +l 165 166 +l 162 161 +l 166 161 +o F2D +f 3 140 158 +l 3 140 +l 140 158 +l 3 158 +o F2P +f 5 162 141 +l 5 162 +l 162 141 +l 5 141 +o F4D +f 1 167 168 +f 167 1 158 +l 167 168 +l 1 168 +l 1 158 +l 167 158 +o F4P +f 169 4 170 +f 4 169 162 +l 4 170 +l 169 170 +l 169 162 +l 4 162 +o F5D +f 1 168 171 +l 1 168 +l 168 171 +l 1 171 +o F5P +f 172 4 173 +f 4 172 170 +l 4 173 +l 172 173 +l 172 170 +l 4 170 +o F6D +f 1 171 9 +l 1 171 +l 171 9 +l 1 9 +# F6P doesn't exist because of the exit. +#o F6P +#f 173 4 10 +#l 173 4 +#l 4 10 +#l 173 10 +o F7D +f 9 171 23 +f 171 174 23 +l 9 171 +l 9 23 +l 171 174 +l 23 174 +# F7P doesn't exist because of the exit. +#o F7P +#f 173 10 26 +#f 173 26 175 +#l 173 10 +#l 10 26 +#l 26 175 +#l 173 175 +o F10D +f 158 176 167 +l 158 176 +l 176 167 +l 158 167 +o F10P +f 176 162 169 +f 162 176 158 +l 162 169 +l 176 169 +l 176 158 +l 162 158 +o F25 +f 176 169 177 +l 176 169 +l 169 177 +l 176 177 +o F22D +f 167 177 168 +f 167 176 177 +l 177 168 +l 167 168 +l 167 176 +l 177 176 +o F22P +f 169 170 177 +l 169 170 +l 170 177 +l 169 177 +o F23D +f 178 179 168 +l 178 179 +l 179 168 +l 178 168 +o F23P +f 170 172 180 +l 170 172 +l 172 180 +l 170 180 +o F24D +f 181 182 178 +l 181 182 +l 182 178 +l 181 178 +o F24P +f 182 180 178 +f 180 182 183 +l 180 178 +l 182 178 +l 182 183 +l 180 183 +o F3D +f 3 158 1 +l 3 158 +l 158 1 +l 3 1 +o F3P +f 5 4 162 +l 5 4 +l 4 162 +l 5 162 +o Face +f 184 155 185 +f 186 155 184 +f 155 186 156 +f 186 187 156 +f 188 187 186 +f 187 188 189 +f 187 188 189 +f 188 187 186 +f 186 187 187 +f 188 186 190 +f 191 190 186 +f 192 190 191 +f 193 190 192 +f 190 193 194 +f 195 190 194 +f 196 190 195 +f 197 190 196 +f 198 190 197 +f 198 199 190 +f 200 199 198 +f 201 199 200 +f 202 199 201 +f 203 199 202 +f 204 199 203 +f 199 204 205 +f 205 206 199 +f 206 205 207 +f 207 208 206 +f 208 207 209 +f 208 209 210 +f 208 210 211 +f 208 211 211 +f 208 211 212 +f 208 212 213 +f 208 213 214 +f 208 214 215 +f 208 215 216 +f 217 216 215 +f 216 217 218 +f 216 218 219 +f 216 219 220 +f 220 221 216 +f 222 221 220 +f 223 221 222 +f 224 221 223 +f 225 221 224 +f 226 221 225 +f 226 186 221 +f 227 186 226 +f 228 186 227 +f 186 228 229 +f 230 186 229 +f 186 230 231 +f 186 231 232 +f 186 232 191 +f 186 233 221 +f 233 186 184 +f 184 234 233 +f 184 235 234 +f 184 236 235 +f 236 184 237 +f 184 238 237 +f 238 184 239 +f 239 184 240 +f 240 184 241 +f 242 241 184 +f 242 243 241 +f 242 244 243 +f 242 245 244 +f 242 246 245 +f 242 247 246 +f 242 248 247 +f 249 248 242 +f 248 249 250 +f 250 249 251 +f 251 249 252 +f 252 249 253 +f 253 249 254 +f 254 249 255 +f 249 256 255 +f 256 249 257 +f 249 163 257 +f 249 164 163 +f 249 153 164 +f 249 152 153 +f 152 249 152 +f 249 154 152 +f 154 249 242 +f 258 154 242 +f 154 258 154 +f 258 242 259 +f 259 242 184 +f 259 184 185 +f 259 185 258 +f 161 257 163 +f 257 161 260 +f 260 161 261 +f 261 161 166 +f 161 163 166 +f 166 262 261 +f 262 166 165 +f 165 208 262 +f 157 208 165 +f 157 206 208 +f 206 157 159 +f 206 159 199 +f 160 199 159 +f 160 150 199 +f 150 149 199 +f 151 199 149 +f 199 151 190 +f 263 190 151 +f 190 263 188 +f 189 188 263 +f 187 189 263 +f 187 187 189 +f 187 187 156 +f 151 149 149 +f 208 264 262 +f 264 208 265 +f 208 216 265 +f 221 265 216 +f 265 221 266 +f 221 267 266 +f 267 221 268 +f 268 221 233 +f 233 269 268 +f 269 233 270 +f 233 271 270 +f 233 272 271 +f 233 273 272 +f 233 274 273 +f 233 275 274 +f 233 234 275 +f 276 270 271 +f 277 270 276 +f 270 277 278 +f 278 260 270 +f 279 260 278 +f 280 260 279 +f 281 260 280 +f 282 260 281 +f 283 260 282 +f 283 257 260 +f 257 283 256 +f 270 260 269 +f 260 284 269 +f 284 260 261 +f 262 284 261 +f 284 262 264 +f 266 284 264 +f 284 266 267 +f 267 266 266 +f 266 266 265 +f 266 264 265 +f 284 267 268 +f 284 268 268 +f 268 269 268 +f 268 269 284 +l 184 155 +l 155 185 +l 184 185 +l 155 186 +l 184 186 +l 186 156 +l 155 156 +l 186 187 +l 156 187 +l 187 188 +l 186 188 +l 188 189 +l 187 189 +l 187 187 +l 186 190 +l 188 190 +l 190 191 +l 186 191 +l 192 190 +l 192 191 +l 193 190 +l 192 193 +l 193 194 +l 194 190 +l 195 190 +l 194 195 +l 196 190 +l 195 196 +l 197 190 +l 196 197 +l 198 190 +l 197 198 +l 198 199 +l 199 190 +l 199 200 +l 198 200 +l 199 201 +l 200 201 +l 199 202 +l 201 202 +l 199 203 +l 202 203 +l 199 204 +l 203 204 +l 204 205 +l 199 205 +l 205 206 +l 199 206 +l 205 207 +l 206 207 +l 207 208 +l 206 208 +l 207 209 +l 208 209 +l 209 210 +l 208 210 +l 210 211 +l 208 211 +l 211 211 +l 211 212 +l 208 212 +l 212 213 +l 208 213 +l 213 214 +l 208 214 +l 214 215 +l 208 215 +l 215 216 +l 208 216 +l 216 217 +l 215 217 +l 217 218 +l 216 218 +l 218 219 +l 216 219 +l 219 220 +l 216 220 +l 220 221 +l 216 221 +l 221 222 +l 220 222 +l 221 223 +l 222 223 +l 221 224 +l 223 224 +l 221 225 +l 224 225 +l 221 226 +l 225 226 +l 186 226 +l 186 221 +l 186 227 +l 226 227 +l 186 228 +l 227 228 +l 228 229 +l 186 229 +l 186 230 +l 229 230 +l 230 231 +l 186 231 +l 231 232 +l 186 232 +l 232 191 +l 186 233 +l 221 233 +l 184 233 +l 184 234 +l 233 234 +l 184 235 +l 234 235 +l 184 236 +l 235 236 +l 184 237 +l 236 237 +l 184 238 +l 237 238 +l 184 239 +l 238 239 +l 184 240 +l 239 240 +l 184 241 +l 240 241 +l 241 242 +l 184 242 +l 242 243 +l 241 243 +l 242 244 +l 243 244 +l 242 245 +l 244 245 +l 242 246 +l 245 246 +l 242 247 +l 246 247 +l 242 248 +l 247 248 +l 248 249 +l 242 249 +l 249 250 +l 248 250 +l 249 251 +l 250 251 +l 249 252 +l 251 252 +l 249 253 +l 252 253 +l 249 254 +l 253 254 +l 249 255 +l 254 255 +l 249 256 +l 255 256 +l 249 257 +l 256 257 +l 249 163 +l 257 163 +l 249 164 +l 163 164 +l 249 153 +l 164 153 +l 249 152 +l 153 152 +l 152 152 +l 249 154 +l 152 154 +l 242 154 +l 154 258 +l 242 258 +l 154 154 +l 242 259 +l 258 259 +l 184 259 +l 185 259 +l 185 258 +l 257 161 +l 163 161 +l 161 260 +l 257 260 +l 161 261 +l 260 261 +l 161 166 +l 261 166 +l 163 166 +l 166 262 +l 261 262 +l 166 165 +l 262 165 +l 208 165 +l 208 262 +l 208 157 +l 165 157 +l 206 157 +l 157 159 +l 206 159 +l 199 159 +l 199 160 +l 159 160 +l 160 150 +l 199 150 +l 150 149 +l 199 149 +l 199 151 +l 149 151 +l 190 151 +l 190 263 +l 151 263 +l 188 263 +l 189 263 +l 187 263 +l 149 149 +l 208 264 +l 262 264 +l 208 265 +l 264 265 +l 216 265 +l 221 265 +l 221 266 +l 265 266 +l 221 267 +l 266 267 +l 268 221 +l 268 267 +l 268 233 +l 269 233 +l 268 269 +l 270 233 +l 269 270 +l 271 233 +l 270 271 +l 272 233 +l 271 272 +l 273 233 +l 272 273 +l 274 233 +l 273 274 +l 275 233 +l 274 275 +l 275 234 +l 270 276 +l 271 276 +l 270 277 +l 276 277 +l 277 278 +l 270 278 +l 278 260 +l 270 260 +l 279 260 +l 278 279 +l 280 260 +l 279 280 +l 281 260 +l 280 281 +l 282 260 +l 281 282 +l 283 260 +l 282 283 +l 283 257 +l 283 256 +l 269 260 +l 284 260 +l 269 284 +l 284 261 +l 284 262 +l 284 264 +l 284 266 +l 264 266 +l 284 267 +l 266 266 +l 268 284 +l 268 268 +o TailB +f 285 286 287 +f 288 286 285 +f 288 289 286 +f 290 289 288 +f 289 290 291 +f 292 285 287 +f 286 291 287 +f 291 286 289 +l 285 286 +l 286 287 +l 285 287 +l 286 288 +l 285 288 +l 288 289 +l 286 289 +l 289 290 +l 288 290 +l 290 291 +l 289 291 +l 285 292 +l 287 292 +l 286 291 +l 287 291 +o TailA +f 290 293 291 +f 293 290 294 +f 293 294 295 +f 296 295 294 +f 295 296 287 +f 292 287 296 +f 295 287 291 +f 295 291 293 +l 290 293 +l 293 291 +l 290 291 +l 290 294 +l 293 294 +l 294 295 +l 293 295 +l 295 296 +l 294 296 +l 296 287 +l 295 287 +l 287 292 +l 296 292 +l 291 287 +l 291 295 diff --git a/src/commonMain/resources/baaahs-panel-info.txt b/src/commonMain/resources/baaahs-panel-info.txt new file mode 100644 index 0000000000..85d09217cb --- /dev/null +++ b/src/commonMain/resources/baaahs-panel-info.txt @@ -0,0 +1,155 @@ +1D 9 +1P 9 +2D 6 +2P 6 +3D 9 +3P 9 +4D 4 +4P 4 +5D 11 +5P 11 +6D 7 +6P 7 +7D 13 +7P 13 +8D 15 +8P 15 +9D 7 +9P 7 +10D 7 +10P 7 +11D 3 +11P 3 +12D 5 +12P 5 +13D 5 +13P 6 +14D 13 +14P 13 +15D 9 +15P 9 +16D 9 +16P 9 +17D 7 +17P 7 +18D 17 +18P 17 +19AP 16 +19BP 13 +20D 7 +20P 7 +21D 15 +21P 15 +22D 6 +22P 6 +23D 11 +23P 11 +24D 11 +24P 6 +25D 4 +25P 5 +26D 11 +26P 15 +27D 6 +27P 6 +28D 6 +28P 6 +29D 6 +29P 7 +30D 10 +30P 10 +31D 14 +31P 14 +32D 9 +32P 9 +33D 3 +33P 3 +34D 11 +34P 11 +35D 5 +35P 5 +36D 2 +36P 2 +37D 18 +37P 18 +38D 7 +38P 7 +39D 8 +39P 8 +40D 6 +40P 6 +41D 5 +41P 5 +42D 13 +42P 13 +43D 10 +43P 10 +44D 2 +44P 2 +45D 3 +45P 3 +51 9 +52D 9 +52P 11 +53D 2 +53P 2 +54D 7 +54P 6 +55D 0 +55P 0 +56D 2 +56P 2 +57D 5 +57P 5 +58D 7 +58P 7 +59D 4 +59P 3 +60D 36 +60P 36 +61D 4 +61P 4 +62D 2 +62P 2 +63D 5 +63P 5 +64D 4 +64P 3 +65D 11 +65P 12 +66D 2 +66P 2 +67D 6 +67P 3 +68D 3 +68P 3 +69D 5 +69P 5 +70 1 +71 0 +72 5 +80D 6 +80P 6 +83 8 +84D 15 +84P 15 +85D 5 +85P 5 +86D 4 +86P 4 +87D 5 +87P 5 +88D 2 +88P 2 +89D 3 +89P 4 +90 3 +91D 3 +91P 5 +92D 4 +92P 4 +93D 3 +93P 3 +Face 58 +Tail 0 +F19P 4 \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/AcidAtTheDisco.glsl b/src/commonMain/resources/baaahs/shows/AcidAtTheDisco.glsl new file mode 100644 index 0000000000..3f372a4815 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/AcidAtTheDisco.glsl @@ -0,0 +1,17 @@ +// Acid at the Disco +// From: https://www.shadertoy.com/view/4sfXRB + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy / iResolution.xy; + float time = iTime; + float depth = sin(uv.y*2.0+sin(time)*1.5+1.0+sin(uv.x*3.0+time*1.2))*cos(uv.y*2.0+time)+sin((uv.x*3.0+time)); + float texey = (uv.x-0.5); + float xband = sin(sqrt(uv.y/uv.y)*16.0/(depth)+time*3.0); + float final = ( + sin(texey/abs(depth)*32.0+time*16.0+sin(uv.y*uv.x*32.0*sin(depth*3.0)))*(depth)*xband + ); + + + fragColor = vec4(-final*abs(sin(time)),(-final*sin(time)*2.0),(final),1.0)*1.5; +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/AquaticFlood.glsl b/src/commonMain/resources/baaahs/shows/AquaticFlood.glsl new file mode 100644 index 0000000000..26b902f8cd --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/AquaticFlood.glsl @@ -0,0 +1,43 @@ +// Aquatic Flood +// From http://glslsandbox.com/e#46102 + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 resolution; +// SPARKLEMOTION GADGET: Beat { "name": "beat" } +uniform float sm_beat; + +void main(void) +{ + vec2 uv = gl_FragCoord.xy / resolution.xy; + //uv.x *= resolution.x/resolution.y; + float dist = 0.; + uv.x = -2.+4.*uv.x; + uv.y = -1.+2.*uv.y; + // comment the next line to see the fully zoomed out view + uv *=pow(.1,4.+cos(.1*time)); + uv.x += .275015;//; + uv.y += .0060445;// + //uv /= 5.; + //vec4 col =vec4(1.); + vec2 z = vec2(0.0); + + float warp_factor = 1.; + float time_warp = sm_beat / (1. / warp_factor) - (warp_factor / 2.) + 1.; + vec4 beat_flash = vec4(time_warp); + + int trap=0; + for(int i = 0; i < 400; i++){ + if(dot(z,z)>4.){trap = i;break;} + dist = min( 1e20, dot(z,z))+cos(float(i)*12.+3.*time); + z = mat2(z,-z.y,z.x)*z + uv; + } + dist = sqrt(dist); + float orb = sqrt(float(trap))/64.; + gl_FragColor=vec4(0.,log(dist)*sqrt(dist)-orb-orb,log(dist)*sqrt(dist-abs(sin(time))),1.)*beat_flash; + //if(orb == 0.){gl_FragColor = vec4(0.);} + //gl_FragColor = (orb!=0. ? 1.-orb*vec4(9.,5.,3.,0.):vec4(0.)); +} diff --git a/src/commonMain/resources/baaahs/shows/BlueDream.glsl b/src/commonMain/resources/baaahs/shows/BlueDream.glsl new file mode 100644 index 0000000000..2124ce2873 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/BlueDream.glsl @@ -0,0 +1,49 @@ +// Blue Dream + +#ifdef GL_ES +precision mediump float; +#endif + +uniform vec2 resolution; +uniform float time; +// SPARKLEMOTION GADGET: Beat { "name": "beat" } +uniform float sm_beat; + +float rand(vec2 n) { + return fract(cos(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); +} + +float noise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y); +} + +float fbm(vec2 n) { + float total = 0.0, amplitude = 2.0; + for (int i = 0; i < 18; i++) { + total += (noise(n) * amplitude); + n += n; + amplitude *= atan(0.4345); + } + return total; +} + +void main() { + const vec3 c1 = vec3(26.0/255.0, 111.0/255.0, 97.0/255.0); + const vec3 c2 = vec3(73.0/255.0, 64.0/255.0, 181.4/255.0); + const vec3 c3 = vec3(0.9, 0., 0.0); + const vec3 c4 = vec3(64.0/255.0, 1.0/255.0, 114.4/255.0); + const vec3 c5 = vec3(0.1); + const vec3 c6 = vec3(0.3, 0.4, 0.2); + + vec2 p = abs(gl_FragCoord.xy) * (sin(sm_beat*2.*3.141)) / (resolution.xx); + float q =abs(exp2(fbm(p - time * 0.08))); + vec2 r = abs(vec2(fbm(p + q + time * 0.125 - p.x - p.y), fbm(p + q - time * 1.0))); + vec3 c = mix(c1, c2, fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + + + gl_FragColor = abs(vec4((c )* sqrt(1.), 1.0)); + gl_FragColor.xyz *= 1.; + gl_FragColor.w = 1.1; +} diff --git a/src/commonMain/resources/baaahs/shows/BlueSteel.glsl b/src/commonMain/resources/baaahs/shows/BlueSteel.glsl new file mode 100644 index 0000000000..c08eef1c32 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/BlueSteel.glsl @@ -0,0 +1,53 @@ +// Blue Steel +// From https://www.shadertoy.com/view/wt2GWK + +#define t iTime + +vec2 hash22(vec2 p) +{ + return fract(sin(vec2(dot(p,vec2(263.135,198.742)),dot(p,vec2(624.235,321.217))))*13.635); +} + +float vorohearts( vec2 x) +{ + vec2 n = floor(-x); + vec2 f = fract(-x); + + float md = 1.0; + + for( int j=-1; j<=1; j++ ) + { + for( int i=-1; i<=1; i++ ) + { + vec2 g = vec2(float(i), float(j)); + vec2 o = hash22( n + g ); + vec2 r = g - f + (.5+.5*sin(t+o*6.28)); + r.x *= .8*(1.+sin(.5+sin(6.*t))*.03); + r.y *= .95+sin(1.5+sin(3.*t))*.07; + r.y += .08; + r.y -= sqrt(abs(r.x))*.52; + float d = length(r); + if( d < md ) {md = d;} + } + } + return md; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = (fragCoord - .5*iResolution.xy)/iResolution.y; + + //Heart uv + uv = uv*3.; + float d = vorohearts(uv); + d = smoothstep(.58, .25, d); + + //Heart color + vec3 p = vec3(1.6*d*(.6+sin(.5+sin(6.*t))*.1), d*(1.8+sin(.5+sin(6.*t))*.3), 2.1*(1.+sin(.5+sin(6.*t))*.3)); + vec3 col = vec3(d) * p; + + //Background + col += vorohearts(uv) * .35 * p; + + fragColor = vec4(col,1.); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/BluesClues.glsl b/src/commonMain/resources/baaahs/shows/BluesClues.glsl new file mode 100644 index 0000000000..e70003afcb --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/BluesClues.glsl @@ -0,0 +1,235 @@ +// Blue's Clues +// From https://www.shadertoy.com/view/wljSzR + +// Sphere tracer by mzeo +// +// inspired by http://www.youtube.com/watch?v=kuesTvUYsSc#t=377 +// +// waves by @hintz + +#ifdef GL_ES +precision mediump float; +const vec3 df = vec3(0.05, 0.0, 0.0); +#else +const vec3 df = vec3(0.01, 0.0, 0.0); +#endif + +#define AUTO_CAMERA + +// input + +// Constants +// Camera +const vec3 origin = vec3(0, 0, 0); +const int steps = 128; +const vec3 sun = vec3(1.0, .5, -1.0); + +const int miterations = 32; + +// Ball +struct Ball +{ + vec3 pos; + float size; +}; + +const Ball ball = Ball(vec3(0, 0, 5), 0.5); + +struct Balls +{ + vec3 dir; + vec3 p; + float dist; +}; + +const Balls balls = Balls(vec3(1, 0, 0), vec3(0, 0, 0), 1.0); + +// Floor + +struct Plane +{ + vec3 n; + float d; +}; + +const Plane plane = Plane(vec3(0, 1, 0), -1.0); + +// Distance +struct Dist +{ + float dist; + int id; +}; + + +Dist and(Dist a, Dist b) +{ + if (a.dist < b.dist) + { + return a; + } + + return b; +} + +Dist fBall(Ball ball, vec3 p) +{ + return Dist(length(ball.pos - p) - ball.size, 0); +} + +Ball get(Balls balls, float t) +{ + float a = abs(mod(t, 6.0) - 3.0); + vec3 p = balls.p + balls.dir * t * balls.dist + a * a * vec3(0, -0.15, 0); + return Ball(p, ball.size); +} + +Dist fBalls(Balls balls, vec3 p) +{ + float t = dot(p - balls.p, balls.dir) / balls.dist; + float t0 = t - fract(t + fract(iTime) * 2.0); + float t1 = t0 + 1.0; + + return and( + fBall(get(balls, t0), p), + fBall(get(balls, t1), p)); +} + +Dist fPlane(Plane plane, vec3 p) +{ + return Dist(dot(plane.n, p) - plane.d - 0.4*cos(length(p.xz) - iTime), 1); +} + +Dist f(vec3 p) +{ + return and( + fBalls(balls, p), + fPlane(plane, p)); +} + +vec3 grad(vec3 p) +{ + float f0 = f(p).dist; + + return normalize(vec3( + f(p + df.xyz).dist, + f(p + df.yxz).dist, + f(p + df.yzx).dist) - f0); +} + +float mandel(vec2 c) +{ + vec2 z = c; + + for(int i = 0; i < miterations; ++i) + { + z = vec2(z.x*z.x - z.y*z.y, 1.5*z.x*z.y) + c; + if (length(z) > 40.0) return float(i) / float(miterations); + } + + return 0.0; +} + +vec3 floorTexture(vec3 p) +{ + mat2 rot = mat2(vec2(1, 1), vec2(1, -1)); + vec2 c = rot * (p.xz + vec2(-0.7, -1.0)) * 0.2; + float i = mandel(c); + return clamp(vec3(i * 10.0, i * i *10.0, i*i*i*5.0).zyx, vec3(0,0,0), vec3(2,2,2)); +} + + +vec4 shade(vec3 p, vec3 ray, int id) +{ + vec3 n = grad(p); + float diffuse = clamp(dot(normalize(sun), n), 0.0, 1.0); + + vec3 color; + float ref; + + if (id == 0) + { + color = vec3(0,1,0); + ref = 0.1; + } + else + { + color = floorTexture(p); + ref = 0.5; + } + + return vec4(color * diffuse, 1) * ref; +} + +vec4 combine(vec4 a, vec4 b) +{ + return a + b * (1.0 - a.w); +} + +vec4 sky(vec3 ray) +{ + float sun = dot(ray, normalize(sun)); + sun = (sun > 0.0) ? pow(sun, 150.0) * 3.0 : 0.0; + float horizon = 1.0 - abs(ray.y); + vec3 blue = vec3(0.1, 0.3, 0.6); + vec3 red = vec3(0.6, 0.3, 0.) * 2.0; + return vec4(vec3(0.9, 0.8, 0.5) * sun + blue * horizon + red * pow(horizon, 8.0), 1); +} + +vec4 trace(vec3 origin, vec3 ray) +{ + vec3 p = origin; + Dist dist = Dist(10.0, 2); + vec4 result = vec4(0, 0, 0, 0); + + for(int i = 0; i < steps; ++i) + { + dist = f(p); + if (dist.dist > 0.01) + { + p += ray * dist.dist; + float absorb = exp(-dist.dist * 0.05); + vec4 s = sky(ray) * (1.0 - absorb); + + result = combine(result, s); + } + else if (result.w < 0.99) + { + vec3 n = grad(p); + vec4 s = shade(p, ray, dist.id); + ray = reflect(ray, n); + p += n * 0.01; + + result = combine(result, s); + } + else + { + break; + } + } + + return combine(result, sky(ray)); +} +void mainImage(out vec4 fragColor,in vec2 fragCoord) +{ + float scale = 2.0 / max(iResolution.x, iResolution.y); + vec3 ray = vec3((fragCoord.xy - iResolution.xy / 2.0) * scale, 1); + + //#ifdef AUTO_CAMERA + float yaw = cos(iTime) * -0.25 + 0.1; + float angle = iTime * 0.5; + //#else + //float yaw = iMouse.y - 0.15; + //float angle = iMouse.x * 8.0; + //#endif + + vec3 from = (vec3(sin(angle), 0, cos(angle)) * cos(yaw) + vec3(0, sin(yaw) * 1.0, 0)) * 5.0; + //vec3 from = origin + vec3((iMouse.xy - vec2(0.5,0.0)) * vec2(15.0, 3.0), -5); + vec3 to = vec3(0, -1, 0); + vec3 up = vec3(0, 1, 0); + vec3 dir = normalize(to - from); + vec3 left = normalize(cross(up, dir)); + mat3 rot = mat3(left, cross(dir, left), dir); + + fragColor = trace(from, rot * normalize(ray)); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/CircularDependency.glsl b/src/commonMain/resources/baaahs/shows/CircularDependency.glsl new file mode 100644 index 0000000000..d287bb22cb --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/CircularDependency.glsl @@ -0,0 +1,44 @@ +// Circular Dependency +// From http://glslsandbox.com/e#56705 + +/* + * Original shader from: https://www.shadertoy.com/view/Wtf3zl + */ + +#ifdef GL_ES +precision mediump float; +#endif + +// glslsandbox uniforms +uniform float time; +uniform vec2 resolution; +uniform vec2 mouse; + +// shadertoy emulation +#define iTime time +#define iResolution resolution + +// --------[ Original ShaderToy begins here ]---------- // +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord/iResolution.xy; + uv-=.5; + uv.x*= iResolution.x/iResolution.y; + + vec3 col = vec3(0.5); + float d =length(uv)*20.; + float a = atan(uv.y, uv.x); + col.r = smoothstep(0.1, .2, abs(mod(d+iTime, 2.)-1.)); + col.g = col.r*floor(mod(d*.5+.5+iTime*.5, 2.)); + float f = smoothstep(-.1, .1,sin(a*3.+(sin(iTime*.5)*2.)*d-iTime)); + col.rg = mix(1.-col.rg, col.rg, f); + + // Output to screen + fragColor = vec4(col,1.0); +} +// --------[ Original ShaderToy ends here ]---------- // + +void main(void) +{ + mainImage(gl_FragColor, gl_FragCoord.xy); +} diff --git a/src/commonMain/resources/baaahs/shows/Colorgasm.glsl b/src/commonMain/resources/baaahs/shows/Colorgasm.glsl new file mode 100644 index 0000000000..bf072c8794 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Colorgasm.glsl @@ -0,0 +1,97 @@ +// Colorgasm +// From: https://www.shadertoy.com/view/4dffRs + +/* +others did lab color space better than THIS: +https://www.shadertoy.com/results?query=lab + +https://en.wikipedia.org/wiki/Lab_color_space#CIELAB +[HUNTER lab] and [CIE lab lch] both include CIExyz + +[HUNTER lab] uses square roots pow(x, 1./2.) +[CIElab lch] uses cubic roots pow(x, 1./3.) + +this is just +https://www.shadertoy.com/view/Mdlfzf +made a bit smaller +*/ + +vec3 rgb2xyz (in vec3 rgb) { + float r = rgb.r; + float g = rgb.g; + float b = rgb.b; + r = r > 0.04045 ? pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); + g = g > 0.04045 ? pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); + b = b > 0.04045 ? pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); + float x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); + float y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); + float z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); + //i think theres a big error hee, but it is never used so it doesnt occur. + vec3 xyz = vec3( + (r * 0.4124) + (g * 0.3576) + (b * 0.1805) * 100.0, + (r * 0.2126) + (g * 0.7152) + (b * 0.0722) * 100.0, + (r * 0.0193) + (g * 0.1192) + (b * 0.9505) * 100.0); + return(xyz);} + +vec3 xyz2lab (in vec3 xyz) { + float x = xyz.x / 95.047; + float y = xyz.y / 100.0; + float z = xyz.z / 108.883; + x = x > 0.008856 ? pow(x, 1.0 / 3.0) : (7.787 * x) + (16.0 / 116.0); + y = y > 0.008856 ? pow(y, 1.0 / 3.0) : (7.787 * y) + (16.0 / 116.0); + z = z > 0.008856 ? pow(z, 1.0 / 3.0) : (7.787 * z) + (16.0 / 116.0); + vec3 lab = vec3((116.0 * y) - 16.0, 500.0 * (x - y), 200.0 * (y - z)); + return(lab);} + +vec3 rgb2lab(in vec3 rgb){return xyz2lab(rgb2xyz(rgb));} + +float add(vec3 a){return a.x+a.y+a.z;} + #define satt(a,b) clamp(a,b(0),b(1)) +float sat(float a){return satt(a,float);} +vec3 sat(vec3 a){return satt(a,vec3);} + //vec4 sat(vec4 a){return satt(a,vec4);} + #define x2r(r) b.r=mix(p.r,b.r* 12.92,step(b.r,b1)) +vec3 xyz2rgb(in vec3 a){a/=100.;const float b1=.0031308/12.92;vec3 b,p; + b.r=add(a*vec3(3.2406,-1.5372,-.4986)); + b.g=add(a*vec3(-.9689,1.8758,.0415)); + b.b=add(a*vec3(.0557,-.2040,1.0570));//color matrix + p=((1.055 * pow(b,vec3(1./2.4)))-.055); + b*=12.92;x2r(r);x2r(g);x2r(b); + return sat(b);} + #define l2x(y) a.y=mix(p.y,(a.y+b1)/7.787,step(p.y,.008856)) +vec3 lab2xyz (in vec3 l){vec3 a,p;const float b1=-16./116.; + a.y=(l.x+16.)/116.;a.x=l.y/500.+ a.y;a.z=a.y-l.z/200.;//.xz include .y + p=pow(a,vec3(3.));l2x(x);l2x(y);l2x(z);return a*vec3(95.047,100.,108.883);} +vec3 lab2rgb (in vec3 a){return xyz2rgb(lab2xyz(a));} + + +const vec3 lab0=vec3( 20.,100.,-50.); +const vec3 lab1=vec3(100., 50.,-50.); + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 A; // First gradient point. + if(iMouse.z > 0.0) { + A = vec2(iMouse); + } else { + A = vec2( + (sin(iTime * 0.1) * 0.5 + .5) * iResolution.x, + (cos(iTime * 0.3) * 0.5 + .5) * iResolution.y + ); + } + vec2 B = vec2( + (sin(-iTime * -0.2) * 0.5 + .50) * iResolution.x, + (-cos(iTime * -0.1) * 0.5 + .50) * iResolution.y + ); // Second gradient point. + + vec2 V = B - A; + + float s = dot(fragCoord.xy-A, V) / dot(V, V); // Vector projection. + s = clamp(s, 0.0, 1.0); // Saturate scaler. + + // color = pow(color, vec3(1.0/1.0)); // sRGB gamma encode. + fragColor = vec4(lab2rgb(vec3( + (sin(iTime + s * 20.0) + 1.0) / 2.0 * 50.0 + 25.0, + cos(s + iTime) * 100.0, + sin(s * 6.283) * 100.0 + )), 1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/DevilsPlayground.glsl b/src/commonMain/resources/baaahs/shows/DevilsPlayground.glsl new file mode 100644 index 0000000000..6bae5bbf45 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/DevilsPlayground.glsl @@ -0,0 +1,13 @@ +// Devil's Playground + +uniform float time; +uniform vec2 resolution; + +#define PI 3.14159265359 + +void main(void) +{ + vec2 uv = gl_FragCoord.xy / resolution.xy; + gl_FragColor = vec4(0); + gl_FragColor.r = sin(88.*uv.x) + sin(55.*uv.y) + 0.5+2.*sin(time*2.); +} diff --git a/src/commonMain/resources/baaahs/shows/EvolutionOfAcid.glsl b/src/commonMain/resources/baaahs/shows/EvolutionOfAcid.glsl new file mode 100644 index 0000000000..7a89b0879b --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/EvolutionOfAcid.glsl @@ -0,0 +1,101 @@ +// Evolution of Acid +// From http://glslsandbox.com/e#45963 + +#ifdef GL_ES +precision highp float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +#define time (time + 100.0) +#define PI 3.14159265358979323846 + +float box(vec2 _st, vec2 _size, float _smoothEdges){ + _size = vec2(1.75)-_size*0.75; + vec2 aa = vec2(_smoothEdges*0.5); + vec2 uv = smoothstep(_size,_size+aa,_st); + uv *= smoothstep(_size,_size+aa,vec2(1.0)-_st); + return uv.x*uv.y; +} + +vec2 tile(vec2 _st, float _zoom){ + _st *= _zoom; + return fract(_st); +} + +vec2 rotate2D(vec2 _st, float _angle, vec2 shift){ + _st -= 0.5 + shift.x; + _st = mat2(cos(_angle),-sin(_angle), + sin(_angle),cos(_angle)) * _st; + _st += 0.5 + shift.y; + return _st; +} + +void main(void){ + vec2 v = (gl_FragCoord.xy - resolution/2.0) / min(resolution.y,resolution.x) * 5.0; + vec2 vv = v; vec2 vvv = v; + float tm = time*0.02; + vec2 mspt = (vec2( + sin(tm)+cos(tm*0.2)+sin(tm*0.5)+cos(tm*-0.4)+sin(tm*1.3), + cos(tm)+sin(tm*0.1)+cos(tm*0.8)+sin(tm*-1.1)+cos(tm*1.5) + )+15.0)*0.03; + + + vec2 simple = (vec2(sin(tm), cos(tm)) + 1.5) * 0.15; + float R = 0.0; + float RR = 0.0; + float RRR = 0.0; + float a = (.6-simple.x)*6.2; + float C = cos(a); + float S = sin(a); + vec2 xa=vec2(C, -S); + vec2 ya=vec2(S, C); + vec2 shift = vec2( 1.2, 1.62); + float Z = 1.0 + simple.y*6.0; + float ZZ = 1.0 + (simple.y)*6.2; + float ZZZ = 1.0 + (simple.y)*6.9; + + vec2 b = gl_FragCoord.xy/(resolution); + b = rotate2D(b, PI*Z, 0.05*xa); + //b = vec2(box(b,vec2(1.1),0.95)); + + for ( int i = 0; i < 25; i++ ){ + float br = dot(b,b); + float r = dot(v,v); + if ( r > sin(tm) + 3.0 ) + { + r = (sin(tm) + 3.0)/r ; + v.x = v.x * r + 0.; + v.y = v.y * r + 0.; + } + if ( br > 0.75 ) + { + br = (0.56)/br ; + //v.x = v.x * r + 0.; + //v.y = v.y * r + 0.; + } + + R *= 1.05; + R += br;//b.x; + if(i < 24){ + RR *= 1.05; + RR += br;//b.x; + if(i <23){ + RRR *= 1.05; + RRR += br;//b.x; + } + } + + v = vec2( dot(v, xa), dot(v, ya)) * Z + shift; + //b = vec2( dot(b.xy, xa), dot(b.xy, ya)) * Z + shift; + //b = rotate2D(vec2( dot(v, xa), dot(v, ya)), PI*Z, ya); + //b = vec2( dot(b, xa), dot(b, ya)); + b = vec2(box(v,vec2(5.),0.9)) + shift * 0.42; + } + float c = ((mod(R,2.0)>1.0)?1.0-fract(R):fract(R)); + float cc = ((mod(RR,2.0)>1.0)?1.0-fract(RR):fract(RR)); + float ccc = ((mod(RRR,2.0)>1.0)?1.0-fract(RRR):fract(RRR)); + gl_FragColor = vec4(ccc,cc,c, 1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/FaeriePulse.glsl b/src/commonMain/resources/baaahs/shows/FaeriePulse.glsl new file mode 100644 index 0000000000..1d2175646b --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/FaeriePulse.glsl @@ -0,0 +1,38 @@ +// Færie Pulse +// From http://glslsandbox.com/e#46723 + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 resolution; + +float rand(int seed, float ray) { + return mod(sin(float(seed)*1.0+ray*1.0)*1.0, 1.0); +} + +mat2 rotate2d(float _angle) { + return mat2(cos(_angle), -sin(_angle), sin(_angle), cos(_angle)); +} + +void main() { + vec2 uv = gl_FragCoord.xy / resolution.xy; + vec3 uv3 = vec3(sin(time*0.1), uv); + vec2 center = resolution / max(resolution.x, resolution.y) * 0.5; + + //float a = rand(5234, uv.x)*6.2+time*5.0*(rand(2534, uv.y)-rand(3545, uv.x)); + float a = distance(uv, center)*rand(5234, uv.x)-6.2*(rand(2534, uv.y)); + + float ac = cos(time*0.1-a); + float as = sin(time*0.1+a); + uv3 *= mat3( + ac, as, 0.0, -as, ac, 0.0, 0.0, 0.0, 1.0); + uv.x = uv3.x; + uv.y = uv3.y; + //uv = rotate2d(time*0.1)*uv; + uv = mod(uv, 0.5) * 2.0; + //uv.x = cos(time-a); + //uv.y = sin(time+a); + gl_FragColor = vec4(uv, cos(distance(uv, center)), 1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/FireBall.glsl b/src/commonMain/resources/baaahs/shows/FireBall.glsl new file mode 100644 index 0000000000..c66a5a256a --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/FireBall.glsl @@ -0,0 +1,111 @@ +// Fire Ball +// From http://glslsandbox.com/e#61108.0 + +// Fire ball by David Robles + +#ifdef GL_ES +precision mediump float; +#endif + +//#extension GL_OES_standard_derivatives : enable +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 resolution; + +const float PI = 3.141592; + +vec2 hash( vec2 p ) // replace this by something better +{ + p = vec2( dot(p,vec2(127.1,311.7)), dot(p,vec2(269.5,183.3)) ); + return -1.0 + 2.0*fract(sin(p)*43758.5453123); +} + +float noise( in vec2 p ) +{ + const float K1 = 0.366025404; // (sqrt(3)-1)/2; + const float K2 = 0.211324865; // (3-sqrt(3))/6; + + vec2 i = floor( p + (p.x+p.y)*K1 ); + vec2 a = p - i + (i.x+i.y)*K2; + float m = step(a.y,a.x); + vec2 o = vec2(m,1.0-m); + vec2 b = a - o + K2; + vec2 c = a - 1.0 + 2.0*K2; + vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 ); + vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0))); + return dot( n, vec3(70.0) ); +} + +float circleShape(vec2 coord, vec2 pos){ + float dist = distance(coord, pos); + return clamp( log(dist*(15.+4.*noise(vec2(time*.8)))) ,0.,1.); +} + +vec2 sineWave(vec2 p){ + float Ax = .05; + float wx = 1.50 * PI; + float x = sin(wx * p.x) * Ax * sin(noise(vec2(time))); + + float Ay = .05; + float wy = PI * 10.; + float y = sin(wy*p.y) * Ay * noise(vec2(time)); + + return vec2(p.x + x, p.y + y); +} + +void main( void ) { + + vec2 pos = gl_FragCoord.xy / resolution.xy; + vec2 uv = pos; + + uv += vec2(-.5, -.5); + uv *= vec2(2.3, 1.3); + + float luz = clamp(1.05 - (pow(uv.x, 2.) + pow(uv.y * 1.6, 6.))*2., 0., 1.); + //vec3 color = vec3(0.3059, 0.1922, 0.0431); + vec3 color = vec3(0.7333, 0.2902, 0.0314); + //vec3 color = vec3(0.3882, 0.1686, 0.251); + float grad = circleShape(sineWave(pos), vec2(.5, .32)); + + float ruido = 0.; + + pos *= 5.0; + float xoff = 1.05; + float yoff = 2.1; + mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 ); + ruido = 0.7500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido += 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + + + ruido = 0.5 + 0.5*ruido; + ruido = clamp(ruido, 0., 1.); + + ///////////////////////////////////////////////////////////// + pos = uv; + pos *= 3.0; + float ruido2 = 0.; + xoff = 1.5; + yoff = 1.5; + m = mat2( -2.1, .5, -.5, 2.1 ); + ruido2 = 0.2500*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido2 += 0.5000*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido2 += 0.1250*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + ruido2 += 0.0625*noise(vec2(abs(pos.x-time*xoff), abs(pos.y-time*yoff))); pos = m*pos; + + ruido2 = 0.5 + 0.5*ruido2; + ruido2 = clamp(ruido2, 0., 1.); + + float f = 0.; + f += 1.0 - ( (1.0-luz) / (ruido2 + 0.001) ); + f /= grad; + f /= ruido; + + gl_FragColor = vec4(f*color*luz*(.5-.5*noise(vec2(time*.8))), 1.); + //gl_FragColor = vec4(color/grad, 1.); + +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/FireClouds.glsl b/src/commonMain/resources/baaahs/shows/FireClouds.glsl new file mode 100644 index 0000000000..1208751da6 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/FireClouds.glsl @@ -0,0 +1,86 @@ +// Fire Clouds +// From http://glslsandbox.com/e#60948.0 + +#ifdef GL_ES +precision lowp float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +float rand(vec2 n) { + return fract(sin(cos(dot(n, vec2(12.9898,12.1414)))) * 83758.5453); +} + +float noise(vec2 n) { + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0), vec2(1.0), fract(n)); + return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y); +} + +float fbm(vec2 n) { + float total = 0.0, amplitude = 1.0; + for (int i = 0; i <5; i++) { + total += noise(n) * amplitude; + n += n*1.7; + amplitude *= 0.47; + } + return total; +} + +void main() { + + const vec3 c1 = vec3(0.5, 0.0, 0.1); + const vec3 c2 = vec3(0.9, 0.1, 0.0); + const vec3 c3 = vec3(0.2, 0.1, 0.7); + const vec3 c4 = vec3(1.0, 0.9, 0.1); + const vec3 c5 = vec3(0.1); + const vec3 c6 = vec3(0.9); + + vec2 speed = vec2(1.2, 0.1); + float shift = 1.327+sin(time*2.0)/2.4; + float alpha = 1.0; + + //change the constant term for all kinds of cool distance versions, + //make plus/minus to switch between + //ground fire and fire rain! + float dist = 3.5-sin(time*0.4)/1.89; + + vec2 p = gl_FragCoord.xy * dist / resolution.xx; + p.x -= time/1.1; + float q = fbm(p - time * 0.01+1.0*sin(time)/10.0); + float qb = fbm(p - time * 0.002+0.1*cos(time)/5.0); + float q2 = fbm(p - time * 0.44 - 5.0*cos(time)/7.0) - 6.0; + float q3 = fbm(p - time * 0.9 - 10.0*cos(time)/30.0)-4.0; + float q4 = fbm(p - time * 2.0 - 20.0*sin(time)/20.0)+2.0; + q = (q + qb - .4 * q2 -2.0*q3 + .6*q4)/3.8; + vec2 r = vec2(fbm(p + q /2.0 + time * speed.x - p.x - p.y), fbm(p + q - time * speed.y)); + vec3 c = mix(c1, c2, fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + vec3 color = vec3(c * cos(shift * gl_FragCoord.y / resolution.y)); + color += .05; + color.r *= .8; + vec3 hsv = rgb2hsv(color); + hsv.y *= hsv.z * 1.1; + hsv.z *= hsv.y * 1.13; + hsv.y = (2.2-hsv.z*.9)*1.20; + color = hsv2rgb(hsv); + gl_FragColor = vec4(color.x, color.y, color.z, alpha); +} diff --git a/src/commonMain/resources/baaahs/shows/FireDancer.glsl b/src/commonMain/resources/baaahs/shows/FireDancer.glsl new file mode 100644 index 0000000000..6cf92f961e --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/FireDancer.glsl @@ -0,0 +1,28 @@ +// Fire Dancer +// From http://glslsandbox.com/e#55301 + +#ifdef GL_ES +precision mediump float; +#endif + +// SPARKLEMOTION GADGET: Slider {name: "Scale", initialValue: 10.0, minValue: 0.0, maxValue: 100.0} +uniform float scale; + +uniform float time; +uniform vec2 resolution; + +#define N 6 + +void main( void ) { + vec2 v= (gl_FragCoord.xy-(resolution*0.5))/min(resolution.y,resolution.x)*scale; + float t=time * 0.4,r=0.0; + for (int i=0;i 16.0) break; + zT.x = (z.x * z.x - z.y * z.y) + z0.x; + zT.y = (z.y * z.x + z.x * z.y) + z0.y; + z = zT; + F++; + } + gl_FragColor = (F == float(ITERATIONS)) ? vec4(0.0, 0.0, 0.0, 1) : color(.5*time*F - log2(log2(dot(sin(z),(z))))); +} diff --git a/src/commonMain/resources/baaahs/shows/GSpot.glsl b/src/commonMain/resources/baaahs/shows/GSpot.glsl new file mode 100644 index 0000000000..d21a8fffd9 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/GSpot.glsl @@ -0,0 +1,72 @@ +// G-spot +// From: https://www.shadertoy.com/view/ltBcRc + + +#define l 120 +void mainImage(out vec4 FragColor,vec2 FragCoord){ + vec2 v = (FragCoord.xy - iResolution.xy/2.) / min(iResolution.y,iResolution.x) * 30.; + vec2 vv = v;// vec2 vvv = v; + float ft = iTime+360.1; + float tm = ft*0.1; + float tm2 = ft*0.3; + vec2 mspt = (vec2( + sin(tm)+cos(tm*0.2)+sin(tm*0.5)+cos(tm*-0.4)+sin(tm*1.3), + cos(tm)+sin(tm*0.1)+cos(tm*0.8)+sin(tm*-1.1)+cos(tm*1.5) + )+1.0)*0.35; //5x harmonics, scale back to [0,1] + float R = 0.0; + float RR = 0.0; + float RRR = 0.0; + float a = (1.-mspt.x)*0.5; + float C = cos(tm2*0.03+a*0.01)*1.1; + float S = sin(tm2*0.033+a*0.23)*1.1; + float C2 = cos(tm2*0.024+a*0.23)*3.1; + float S2 = sin(tm2*0.03+a*0.01)*3.3; + vec2 xa=vec2(C, -S); + vec2 ya=vec2(S, C); + vec2 xa2=vec2(C2, -S2); + vec2 ya2=vec2(S2, C2); + vec2 shift = vec2( 0.033, 0.14); + vec2 shift2 = vec2( -0.023, -0.22); + float Z = 0.4 + mspt.y*0.3; + float m = 0.99+sin(iTime*0.03)*0.003; + for ( int i = 0; i < l; i++ ){ + float r = dot(v,v); + float r2 = dot(vv,vv); + if ( r > 1.0 ) + { + r = (1.0)/r ; + v.x = v.x * r; + v.y = v.y * r; + } + if ( r2 > 1.0 ) + { + r2 = (1.0)/r2 ; + vv.x = vv.x * r2; + vv.y = vv.y * r2; + } + R *= m; + R += r; + R *= m; + R += r2; + if(i < l-1){ + RR *= m; + RR += r; + RR *= m; + RR += r2; + if(i < l-2){ + RRR *= m; + RRR += r; + RRR *= m; + RRR += r2; + } + } + + v = vec2( dot(v, xa), dot(v, ya)) * Z + shift; + vv = vec2( dot(vv, xa2), dot(vv, ya2)) * Z + shift2; + } + + float c = ((mod(R,2.0)>1.0)?1.0-fract(R):fract(R)); + float cc = ((mod(RR,2.0)>1.0)?1.0-fract(RR):fract(RR)); + float ccc = ((mod(RRR,2.0)>1.0)?1.0-fract(RRR):fract(RRR)); + FragColor = vec4(ccc, cc, c, 1.0); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/Gadzooks.glsl b/src/commonMain/resources/baaahs/shows/Gadzooks.glsl new file mode 100644 index 0000000000..e129dd888e --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Gadzooks.glsl @@ -0,0 +1,38 @@ +// Gadzooks +// From: http://glslsandbox.com/e#43036.0 + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +void main( void ) { + + vec2 p = gl_FragCoord.xy / resolution.xy; + p = p * 2.0 - 1.0; + p.x *= resolution.x / resolution.y; + + float col = 0.0; + + //mandelbrote + //vec2 z = vec2(0.0, 0.0); + //juillaset + vec2 z = p; + vec2 ms = mouse.xy * 2.0 - 1.0; + ms.x *= resolution.x / resolution.y; + + for(int i = 0; i < 5; i++) + { + //mandelbrote + z = vec2(z.x * z.x - z.y * z.y + cos(time) *2.0, 2.0 * z.x * z.y) + ms; + //julliaset + //z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + P; + } + col = length(z); + + gl_FragColor = vec4(vec3(z.x, z.y, col), 1.0); + +} diff --git a/src/commonMain/resources/baaahs/shows/GaiasOrgasm.glsl b/src/commonMain/resources/baaahs/shows/GaiasOrgasm.glsl new file mode 100644 index 0000000000..a9ec9aae0c --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/GaiasOrgasm.glsl @@ -0,0 +1,45 @@ +// Gaia's Orgasm +// From http://glslsandbox.com/e#46597 + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 resolution; +//from https://www.shadertoy.com/view/4dl3zn + +void main( void ) { + + vec2 uv = -1.0 + 2.0*gl_FragCoord.xy / resolution.xy; + uv.x *= resolution.x / resolution.y; + + // background + vec3 color = vec3(0.8 + 0.2*uv.y); + + // bubbles + for( int i=0; i<40; i++ ) + { + // bubble seeds + float pha = sin(float(i)*546.13+1.0)*0.5 + 0.5; + float siz = pow( sin(float(i)*651.74+5.0)*0.5 + 0.5, 4.0 ); + float pox = sin(float(i)*321.55+4.1) * resolution.x / resolution.y; + + // buble size, position and color + float rad = 0.1 + 0.5*siz; + vec2 pos = vec2( pox, -1.0-rad + (2.0+2.0*rad)*mod(pha+0.1*time*(0.2+0.8*siz),1.0)); + float dis = length( uv - pos ); + vec3 col = mix( vec3(0.94,0.3,0.0), vec3(0.1,0.4,0.8), 0.5+0.5*sin(float(i)*1.2+1.9)); + // col+= 8.0*smoothstep( rad*0.95, rad, dis ); + + // render + float f = length(uv-pos)/rad; + f = sqrt(clamp(1.0-f*f,0.0,1.0)); + color -= col.zyx *(1.0-smoothstep( rad*0.95, rad, dis )) * f; + } + + // vigneting + color *= sqrt(1.5-0.5*length(uv)); + + gl_FragColor = vec4(color,1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/GardenParty.glsl b/src/commonMain/resources/baaahs/shows/GardenParty.glsl new file mode 100644 index 0000000000..73329f1a93 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/GardenParty.glsl @@ -0,0 +1,33 @@ +// Garden Party +// From http://glslsandbox.com/e#56555 + +/* lame-ass tunnel by kusma */ + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +void main( void ) { + vec2 position = (gl_FragCoord.xy - resolution * 0.5) / resolution.yy; + float th = atan(position.y, position.x) / (2.0 * 3.1415926); + th += mod(time*0.2, 1.0); + float dd = length(position)+0.2*sin(th*2.0*3.1415926*6.0)*length(position); + dd = pow(dd,1.0); + float d = 0.5 / dd + 1.4*time; + + vec3 uv = vec3(th + d, th - d, th + sin(d)); + float a = 0.5 + cos(uv.x * 3.1415926 * 2.0) * 0.3; + float b = 0.5 + cos(uv.y * 3.1415926 * 8.0) * 0.3; + float c = 0.5 + cos(uv.z * 3.1415926 * 6.0) * 0.5; + float f = abs(sin(time*2.0)); + + + vec3 color = mix(vec3(1.0, 0.8, 1.0-f), vec3(0.5*f, 0, 0), pow(a, 0.2)) * 3.; + color += mix(vec3(0.8, 0.9, 1.0), vec3(0.1, 0.1, 0.2), pow(b, 0.1)) * 0.75; + color += mix(vec3(0.9, 0.8, 1.0), vec3(0.1, 0.2, 0.2), pow(c, 0.1)) * 0.75; + gl_FragColor = vec4(color * clamp(dd, 0.0, 1.0), 1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/GeometricBiology.glsl b/src/commonMain/resources/baaahs/shows/GeometricBiology.glsl new file mode 100644 index 0000000000..37f901465a --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/GeometricBiology.glsl @@ -0,0 +1,53 @@ +// Geometric Biology +// From http://glslsandbox.com/e#45693 + +//Modified from: https://www.shadertoy.com/view/MslGD8 + +// Created by inigo quilez - iq/2013 +// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; +// SPARKLEMOTION GADGET: Beat { "name": "beat" } +uniform float sm_beat; + +vec2 hash( vec2 p ) { p=vec2(dot(p,vec2(127.1,311.7)),dot(p,vec2(269.5,183.3))); return fract(sin(p)*18.5453); } + +// return distance, and cell id +vec2 voronoi( in vec2 x ) +{ + vec2 n = floor( x ); + vec2 f = fract( x ); + + vec3 m = vec3( 8.0 ); + for( int j=-1; j<=1; j++ ) + for( int i=-1; i<=1; i++ ) + { + vec2 g = vec2( float(i), float(j) ); + vec2 o = hash( n + g ); + vec2 r = g - f + (0.5+0.5*sin(time+6.2831*o)); + float d = dot( r, r ); + if( d -1.0) + gl.mouse = resolution.xy*0.5; + else + gl.mouse = mouse.xy; + } + else gl.mouse = mouse.xy; + + gl.mp = (2.0*abs(gl.mouse)-vec2(resolution.xy))/resolution.y; + + gl.aspect = resolution.x / resolution.y; + gl.frag = fragCoord; + gl.ifrag = ivec2(fragCoord); + gl.uv = (fragCoord+fragCoord-resolution.xy)/resolution.y; + + gl.ambient = 0.03; + gl.shadow = 0.25; +} + +float powi(int a, int b) { return pow(float(a), float(b)); } +float log10(float a) { return log(a)/log(10.0); } +float clamp01(float v) { return clamp(v, 0.0, 1.0); } +vec3 clamp01(vec3 v) { return clamp(v, 0.0, 1.0); } + + // 00000000 00000000 000 000 000 000000000 + // 000 000 000 000 000 0000 000 000 + // 00000000 0000000 000 000 0 000 000 + // 000 000 000 000 000 0000 000 + // 000 000 000 000 000 000 000 + + #ifndef TOY +float print(ivec2 pos, int ch) +{ + ivec2 r = gl.ifrag-pos; bool i = r.y>0 && r.x>0 && r.x<=text.size.y && r.y<=text.size.y; + return i ? texelFetch(iChannel2,ivec2((ch%16)*64,(1024-64-64*(ch/16)))+r*64/text.size.y,0).r : 0.0; +} + +float print(ivec2 pos, float v) +{ + float c = 0.0; ivec2 a = text.adv; + float fv = fract(v); + v = (fv > 0.995 || fv < 0.005) ? round(v) : v; + float f = abs(v); + int i = (fv == 0.0) ? 1 : fract(v*10.0) == 0.0 ? -1 : -2; + int ch, u = max(1,int(log10(f))+1); + ivec2 p = pos+6*a; + for (; i <= u; i++) { + if (i == 0) ch = 46; + else if (i > 0) ch = 48+int(mod(f, powi(10,i))/powi(10,i-1)); + else ch = 48+int(mod(f+0.005, powi(10,i+1))/powi(10,i)); + c = max(c, print(p-i*a, ch)*float(i+3)/30.0); } + if (v < 0.0) c = max(c, print(p-i*a, 45)*float(i)/30.0); + return c; +} + +float print(ivec2 pos, vec4 v) +{ + float c = 0.0; + for (int i = 0; i < 4; i++) { + c = max(c, print(pos, v[i])); + pos += text.adv*8; } + return c; +} + +float print(ivec2 pos, vec3 v) +{ + float c = 0.0; + for (int i = 0; i < 3; i++) { + c = max(c, print(pos, v[i])); + pos += text.adv*8; } + return c; +} + +float print(ivec2 pos, vec2 v) +{ + float c = 0.0; + for (int i = 0; i < 2; i++) { + c = max(c, print(pos, v[i])); + pos += text.adv*8; } + return c; +} + +float print(int x, int y, int v) { return print(ivec2(text.size.x*x,text.size.y*y), float(v)); } +float print(int x, int y, float v) { return print(ivec2(text.size.x*x,text.size.y*y), v); } +float print(int x, int y, vec4 v) { return print(ivec2(text.size.x*x,text.size.y*y), v); } +float print(int x, int y, vec3 v) { return print(ivec2(text.size.x*x,text.size.y*y), v); } +float print(int x, int y, vec2 v) { return print(ivec2(text.size.x*x,text.size.y*y), v); } +float print(int x, int y, ivec3 v) { return print(ivec2(text.size.x*x,text.size.y*y), vec3(v)); } + #endif + +// 000 000 0000000 0000000 000 000 +// 000 000 000 000 000 000 000 +// 000000000 000000000 0000000 000000000 +// 000 000 000 000 000 000 000 +// 000 000 000 000 0000000 000 000 + +float hash11(float p) +{ + p = fract(p * 0.1031); + p *= p + 33.33; + p *= p + p; + return fract(p); +} + +vec3 hash33(vec3 p3) +{ + p3 = fract(p3 * vec3(12.3,456.7,8912.3)); + p3 += dot(p3, p3.yxz+33.33); + return fract((p3.xxy + p3.yxx)*p3.zyx); +} + +vec3 hash31(float p) +{ + return hash33(vec3(p)); +} + +float hash12(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * .1031); + p3 += dot(p3, p3.yzx + 33.33); + return fract((p3.x + p3.y) * p3.z); +} + +float gradientNoise(vec2 v) +{ + return fract(52.9829189 * fract(dot(v, vec2(0.06711056, 0.00583715)))); +} + +// 000 000 0000000 000 +// 000 000 000 000 +// 000000000 0000000 000 +// 000 000 000 000 +// 000 000 0000000 0000000 + +vec3 hsl2rgb( in vec3 c ) +{ + vec3 rgb = clamp( abs(mod(c.x*6.0+vec3(0.0,4.0,2.0),6.0)-3.0)-1.0, 0.0, 1.0 ); + return c.z + c.y * (rgb-0.5)*(1.0-abs(2.0*c.z-1.0)); +} + +vec3 hsl(float h, float s, float l) { return hsl2rgb(vec3(h,s,l)); } + +vec3 rgb2hsl( vec3 col ) +{ + float minc = min( col.r, min(col.g, col.b) ); + float maxc = max( col.r, max(col.g, col.b) ); + vec3 mask = step(col.grr,col.rgb) * step(col.bbg,col.rgb); + vec3 h = mask * (vec3(0.0,2.0,4.0) + (col.gbr-col.brg)/(maxc-minc + EPS)) / 6.0; + return vec3( fract( 1.0 + h.x + h.y + h.z ), + (maxc-minc)/(1.0-abs(minc+maxc-1.0) + EPS), + (minc+maxc)*0.5); +} + +vec3 colsat(vec3 col, float sat) +{ + vec3 h = rgb2hsl(col); + return hsl(h.x,sat,h.z); +} + +vec3 gray(vec3 col) +{ + return colsat(col, 0.0); +} + +// 00 00 0000000 000000000 00000000 000 000 000 +// 000 000 000 000 000 000 000 000 000 000 +// 000000000 000000000 000 0000000 000 00000 +// 000 0 000 000 000 000 000 000 000 000 000 +// 000 000 000 000 000 000 000 000 000 000 + +mat3 alignMatrix(vec3 dir) +{ + vec3 f = normalize(dir); + vec3 s = normalize(cross(f, vec3(0.48, 0.6, 0.64))); + vec3 u = cross(s, f); + return mat3(u, s, f); +} + +// 00000000 0000000 000000000 +// 000 000 000 000 000 +// 0000000 000 000 000 +// 000 000 000 000 000 +// 000 000 0000000 000 + +float rad2deg(float r) { return 180.0 * r / PI; } +float deg2rad(float d) { return PI * d / 180.0; } + +vec3 rad2deg(vec3 v) { return 180.0 * v / PI; } +vec3 deg2rad(vec3 v) { return PI * v / 180.0; } + +mat3 rotMat(vec3 u, float angle) +{ + float s = sin(deg2rad(angle)); + float c = cos(deg2rad(angle)); + float i = 1.0-c; + + return mat3( + c+u.x*u.x*i, u.x*u.y*i-u.z*s, u.x*u.z*i+u.y*s, + u.y*u.x*i+u.z*s, c+u.y*u.y*i, u.y*u.z*i-u.x*s, + u.z*u.x*i-u.y*s, u.z*u.y*i+u.x*s, c+u.z*u.z*i + ); +} + +vec3 rotAxisAngle(vec3 position, vec3 axis, float angle) +{ + mat3 m = rotMat(axis, angle); + return m * position; +} + +// 00000000 0000000 000 0000000 00000000 +// 000 000 000 000 000 000 000 000 000 +// 00000000 000 000 000 000000000 0000000 +// 000 000 000 000 000 000 000 000 +// 000 0000000 0000000 000 000 000 000 + +vec3 polar(vec3 v) +{ + float radius = length(v); + float phi = atan(v.y, v.x); + float rho = acos(v.z/radius); + return vec3(phi, rho, radius); +} + +vec3 unpolar(vec3 v) +{ + float s = sin(v.y); + float x = s * cos(v.x); + float y = s * sin(v.x); + float z = cos(v.y); + return vec3(x, y, z)*v.z; +} + +vec3 polar2(vec3 v) +{ + float radius = length(v); + float phi = atan(v.z, v.x); + float rho = acos(v.y/radius); + return vec3(phi, rho, radius); +} + +vec3 unpolar2(vec3 v) +{ + float s = sin(v.y); + float x = s * cos(v.x); + float z = s * sin(v.x); + float y = cos(v.y); + return vec3(x, y, z)*v.z; +} + +// 0000000 000 000 0000000 000000000 +// 000 000 000 000 000 000 000 +// 000 00 00 000 000 000000000 000 +// 000 0000 000 000 000 000 000 +// 00000 00 0000000 000 000 000 + +vec4 quatAxisAngle(vec3 axis, float angle) +{ + float half_angle = deg2rad(angle*0.5); + return vec4(axis*sin(half_angle), cos(half_angle)); +} + +vec4 quatConj(vec4 q) +{ + return vec4(-q.x, -q.y, -q.z, q.w); +} + +vec4 quatMul(vec4 q1, vec4 q2) +{ + vec4 qr; + qr.x = (q1.w * q2.x) + (q1.x * q2.w) + (q1.y * q2.z) - (q1.z * q2.y); + qr.y = (q1.w * q2.y) - (q1.x * q2.z) + (q1.y * q2.w) + (q1.z * q2.x); + qr.z = (q1.w * q2.z) + (q1.x * q2.y) - (q1.y * q2.x) + (q1.z * q2.w); + qr.w = (q1.w * q2.w) - (q1.x * q2.x) - (q1.y * q2.y) - (q1.z * q2.z); + return qr; +} + +vec3 rotAxisAngleQuat(vec3 p, vec3 axis, float angle) +{ + vec4 qr = quatAxisAngle(axis, angle); + return quatMul(quatMul(qr, vec4(p, 0)), quatConj(qr)).xyz; +} + +vec3 rotRayAngle(vec3 p, vec3 ro, vec3 rd, float angle) +{ + return rotAxisAngle(p-ro, rd-ro, angle)+ro; +} + +vec3 rotY(vec3 v, float d) +{ + float r = deg2rad(d); + float c = cos(r); + float s = sin(r); + return vec3(v.x*c+v.z*s, v.y, v.z*c+v.x*s); +} + +vec3 rotX(vec3 v, float d) +{ + float r = deg2rad(d); + float c = cos(r); + float s = sin(r); + return vec3(v.x, v.y*c+v.z*s, v.z*c+v.y*s); +} + +vec3 rotZ(vec3 v, float d) +{ + float r = deg2rad(d); + float c = cos(r); + float s = sin(r); + return vec3(v.x*c+v.y*s, v.y*c+v.x*s, v.z); +} + +// 0000000 00000000 0000000 00 00 +// 000 000 000 000 000 000 +// 000 0000 0000000 000 000 000000000 +// 000 000 000 000 000 000 0 000 +// 0000000 00000000 0000000 000 000 + +vec3 posOnPlane(vec3 p, vec3 a, vec3 n) +{ + return p-dot(p-a,n)*n; +} + +vec3 posOnRay(vec3 ro, vec3 rd, vec3 p) +{ + return ro + max(0.0, dot(p - ro, rd) / dot(rd, rd)) * rd; +} + +bool rayIntersectsSphere(vec3 ro, vec3 rd, vec3 ctr, float r) +{ + return length(posOnRay(ro, rd, ctr) - ctr) < r; +} + +// 0000000 00000000 +// 000 000 000 000 +// 000 000 00000000 +// 000 000 000 +// 0000000 000 + +float opUnion(float d1, float d2, float k) +{ + float h = clamp(0.5 + 0.5*(d2-d1)/k, 0.0, 1.0); + return mix(d2, d1, h) - k*h*(1.0-h); +} + +float opDiff(float d1, float d2, float k) +{ + float h = clamp(0.5 - 0.5*(d2+d1)/k, 0.0, 1.0); + return mix(d1, -d2, h) + k*h*(1.0-h); +} + +float opInter(float d1, float d2, float k) +{ + + float h = clamp(0.5 - 0.5*(d2-d1)/k, 0.0, 1.0); + return mix(d2, d1, h) + k*h*(1.0-h); +} + +float opDiff (float d1, float d2) { return opDiff (d1, d2, 0.0); } +float opUnion(float d1, float d2) { return opUnion(d1, d2, 0.5); } +float opInter(float d1, float d2) { return opInter(d1, d2, 0.2); } + +// 0000000 0000000 +// 000 000 000 +// 0000000 000 000 +// 000 000 000 +// 0000000 0000000 + +float sdSphere(vec3 a, float r) +{ + return length(gl.sdf.pos-a)-r; +} + +float sdPill(vec3 a, float r, vec3 n) +{ + vec3 p = gl.sdf.pos-a; + float d = abs(dot(normalize(n),normalize(p))); + float f = smoothstep(0.0, 1.3, d); + return length(p) - r + f * length(n); +} + +float sdPlane(vec3 a, vec3 n) +{ + return dot(n, gl.sdf.pos-a); +} + +float sdPlane(vec3 n) +{ + return dot(n, gl.sdf.pos); +} + +float sdBox(vec3 a, vec3 b, float r) +{ + vec3 q = abs(gl.sdf.pos-a)-b; + return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0) - r; +} + +float sdEllipsoid(vec3 a, vec3 r) +{ + vec3 p = gl.sdf.pos-a; + float k0 = length(p/r); + float k1 = length(p/(r*r)); + return k0*(k0-1.0)/k1; +} + +float sdCone(vec3 a, vec3 b, float r1, float r2) +{ + vec3 ab = b-a; + vec3 ap = gl.sdf.pos-a; + float t = dot(ab,ap) / dot(ab,ab); + t = clamp(t, 0.0, 1.0); + vec3 c = a + t*ab; + return length(gl.sdf.pos-c)-(t*r2+(1.0-t)*r1); +} + +float sdLine(vec3 a, vec3 n, float r) +{ + vec3 p = gl.sdf.pos-a; + return length(p-n*dot(p,n))-r; +} + +float sdCapsule(vec3 a, vec3 b, float r) +{ + vec3 ab = b-a; + vec3 ap = gl.sdf.pos-a; + float t = dot(ab,ap) / dot(ab,ab); + t = clamp(t, 0.0, 1.0); + vec3 c = a + t*ab; + return length(gl.sdf.pos-c)-r; +} + +float sdCylinder(vec3 a, vec3 b, float r, float cr) +{ + vec3 ba = b - a; + vec3 pa = gl.sdf.pos - a; + float baba = dot(ba,ba); + float paba = dot(pa,ba); + float x = length(pa*baba-ba*paba) - r*baba; + float y = abs(paba-baba*0.5)-baba*0.5; + float x2 = x*x; + float y2 = y*y*baba; + float d = (max(x,y)<0.0)?-min(x2,y2):(((x>0.0)?x2:0.0)+((y>0.0)?y2:0.0)); + return sign(d)*sqrt(abs(d))/baba - cr; +} + +vec3 posOnPlane(vec3 p, vec3 n) +{ + return p-dot(p,n)*n; +} + +float sdTorus(vec3 p, vec3 a, vec3 n, float rl, float rs) +{ + vec3 q = p-a; + return length(vec2(length(posOnPlane(q, n))-rl,abs(dot(n, q))))-rs; +} + +// 0000000 0000000 0000000 000 0000000 +// 000 000 000 000 000 000 000 +// 0000000 000000000 0000000 000 0000000 +// 000 000 000 000 000 000 000 +// 0000000 000 000 0000000 000 0000000 + +void basis(vec3 n, out vec3 right, out vec3 front) +{ + if (n.y < -0.999999) + { + right = -vz; + front = -vx; + } + else + { + float a = 1.0/(1.0+n.y); + float b = -n.x*n.z*a; + right = vec3(1.0-n.x*n.x*a,-n.x,b); + front = vec3(b,-n.z,1.0-n.z*n.z*a); + } +} + +// 0000000 0000000 00 00 +// 000 000 000 000 000 +// 000 000000000 000000000 +// 000 000 000 000 0 000 +// 0000000 000 000 000 000 + +void lookAtFrom(vec3 tgt, vec3 pos) +{ + cam.tgt = tgt; + cam.pos = pos; + cam.pos2tgt = cam.tgt-cam.pos; + cam.dir = normalize(cam.pos2tgt); + cam.x = normalize(cross(cam.dir, vy)); + cam.up = normalize(cross(cam.x,cam.dir)); + cam.dist = length(cam.pos2tgt); +} +void lookAt (vec3 tgt) { lookAtFrom(tgt, cam.pos); } +void lookFrom(vec3 pos) { lookAtFrom(cam.tgt, pos); } +void lookPan (vec3 pan) { lookAtFrom(cam.tgt+pan, cam.pos+pan); } +void lookPitch(float ang) { + cam.pos2tgt = rotAxisAngle(cam.pos2tgt, cam.x, ang); + cam.tgt = cam.pos + cam.pos2tgt; + cam.dir = normalize(cam.pos2tgt); + cam.up = normalize(cross(cam.x,cam.dir)); +} +void orbitPitch(float pitch) +{ + cam.pos2tgt = rotAxisAngle(cam.pos2tgt, cam.x, pitch); + cam.pos = cam.tgt - cam.pos2tgt; + cam.dir = normalize(cam.pos2tgt); + cam.up = normalize(cross(cam.x,cam.dir)); +} +void orbitYaw(float yaw) +{ + cam.pos2tgt = rotAxisAngle(cam.pos2tgt, cam.up, yaw); + cam.pos = cam.tgt - cam.pos2tgt; + cam.dir = normalize(cam.pos2tgt); + cam.up = normalize(cross(cam.x,cam.dir)); +} +void orbit(float pitch, float yaw) +{ + orbitYaw(yaw); + orbitPitch(pitch); +} + +void initCam(float dist, vec2 rot) +{ + lookAtFrom(v0, rotAxisAngle(rotAxisAngle(vec3(0,0,-dist), -vx, 89.0*rot.y), vy, -90.0*rot.x)); + cam.fov = PI2; // 4.0; +} + +// 00000000 0000000 0000000 000000000 +// 000 000 000 000 000 000 +// 00000000 000 000 0000000 000 +// 000 000 000 000 000 +// 000 0000000 0000000 000 + +vec4 postProc(vec3 col, bool dither, bool gamma, bool vignette) +{ + if (dither) col -= vec3(gradientNoise(gl.frag)/256.0); + if (gamma) col = pow(col, vec3(1.0/2.2)); + if (vignette) col *= vec3(smoothstep(1.8, 0.5, length(gl.uv)/max(gl.aspect,1.0))); + return vec4(col, 1.0); +} + +// https://www.shadertoy.com/view/4lyGzR 'Biomine' by Shane + +#define keys(x,y) texelFetch(iChannel0, ivec2(x,y), 0) +bool keyState(int key) { return keys(key, 2).x < 0.5; } +bool keyDown(int key) { return keys(key, 0).x > 0.5; } + + #define ZERO min(iFrame,0) + #define CAM_DIST 0.01 + #define MAX_STEPS 256 + #define MIN_DIST 0.001 + #define MAX_DIST 60.0 + + #define NONE 0 + #define GYRO 1 + #define HEAD 2 + #define TAIL 3 + +bool space, anim, soft, occl, light, dither, foggy, rotate, normal, depthb; + +float hash(float n) { return fract(cos(n)*45758.5453); } +mat2 rot2(float a) { vec2 v = sin(vec2(1.570796, 0) + a); return mat2(v, -v.y, v.x); } + +float at; +int screen; + +float noise3D(in vec3 p) +{ + const vec3 s = vec3(7, 157, 113); + vec3 ip = floor(p); p -= ip; + vec4 h = vec4(0., s.yz, s.y + s.z) + dot(ip, s); + p = p*p*(3. - 2.*p); + h = mix(fract(sin(h)*43758.5453), fract(sin(h + s.x)*43758.5453), p.x); + h.xy = mix(h.xz, h.yw, p.y); + return mix(h.x, h.y, p.z); +} + +float drawSphere(in vec3 p) +{ + p = fract(p)-.5; + return dot(p, p); +} + +float cellTile(in vec3 p) +{ + vec4 d; + d.x = drawSphere(p - vec3(.81, .62, .53)); p.xy = vec2(p.y-p.x, p.y + p.x)*.7071; + d.y = drawSphere(p - vec3(.39, .2, .11)); p.yz = vec2(p.z-p.y, p.z + p.y)*.7071; + d.z = drawSphere(p - vec3(.62, .24, .06)); p.xz = vec2(p.z-p.x, p.z + p.x)*.7071; + d.w = drawSphere(p - vec3(.2, .82, .64)); + d.xy = min(d.xz, d.yw); + return min(d.x, d.y)*2.66; +} + +// 0000000 000 000 00000000 0000000 +// 000 000 000 000 000 000 000 +// 000 0000 00000 0000000 000 000 +// 000 000 000 000 000 000 000 +// 0000000 000 000 000 0000000 + +void gyro() +{ + vec3 p = gl.sdf.pos; + float d = dot(cos(p*PI2), sin(p.yzx*PI2)) + 1.25; + + sdMat(GYRO, d); +} + +// 00000000 000 000 000 00000000 00000000 +// 000 000 000 000 000 000 000 +// 000000 000 00000 0000000 0000000 +// 000 000 000 000 000 000 +// 000 0000000 000 00000000 000 000 + +vec3 tailPos(float t) +{ + t += at; + return vec3(-t,0,0)+vz*(2.5+0.4*(1.35 + cos(1.7+t*PI2)))+vy*(0.05-0.5*(sin(-PI2+t*PI2))); +} + +void flyer() +{ + vec3 tp = tailPos(-0.5/8.0); + vec3 hp = tailPos( 1.0/8.0); + float d = sdSphere(tp, 0.13); + d = opUnion(d, sdCapsule(hp, tp, 0.05), 0.1); + + sdMat(HEAD, d); + +float id = floor((gl.light1.x-gl.sdf.pos.x)*8.0); +gl.sdf.pos.x = fract((gl.sdf.pos.x-gl.light1.x)*8.0); +if (id < -1.0 && id > -30.0) +{ + tp = tailPos(id/8.0); + d = min(d, sdEllipsoid(vec3(0.5,tp.yz), vec3(8.0,1,1)*(0.06*(1.0+id/30.0)))); +} + + sdMat(TAIL, d); +} + +// 00 00 0000000 00000000 +// 000 000 000 000 000 000 +// 000000000 000000000 00000000 +// 000 0 000 000 000 000 +// 000 000 000 000 000 + +void distort(inout vec3 p) +{ + if (iMouse.z < 1.0) + p *= rotMat(normalize(cam.x), 0.6*length((p-cam.pos).yz)); +} + +float map(vec3 p) +{ + float t = sin(iTime)*0.5+0.5; + + distort(p); + + gl.sdf = SDF(MAX_DIST, p, NONE); + + gyro(); + + if (gl.march) flyer(); + + return gl.sdf.dist; +} + +// 0000000 000 000 00 00 00000000 +// 000 000 000 000 000 000 000 000 +// 0000000 000 000 000000000 00000000 +// 000 000 000 000 000 0 000 000 +// 0000000 0000000 000 000 000 + +float bumpSurf( in vec3 p) +{ + return cellTile(p*8.0)*2.0 + 0.1*noise3D(p*150.0); +} + +vec3 doBumpMap(in vec3 p, in vec3 nor, float factor) +{ + distort(p); + + const vec2 e = vec2(0.001, 0); + float ref = bumpSurf(p); + vec3 grad = (vec3(bumpSurf(p - e.xyy), + bumpSurf(p - e.yxy), + bumpSurf(p - e.yyx))-ref)/e.x; + grad -= nor*dot(nor, grad); + return normalize(nor + grad*factor); +} + +// 00 00 0000000 00000000 0000000 000 000 +// 000 000 000 000 000 000 000 000 000 +// 000000000 000000000 0000000 000 000000000 +// 000 0 000 000 000 000 000 000 000 000 +// 000 000 000 000 000 000 0000000 000 000 + +float march(in vec3 ro, in vec3 rd) +{ + float t = 0.0, h; + for(int i = ZERO; i < 72; i++) + { + h = map(ro+rd*t); + if (abs(h)<0.001*max(t*.25, 1.) || t>MAX_DIST) break; + t += step(h, 1.)*h*.2 + h*.5; + } + return min(t, MAX_DIST); +} + +vec3 getNormal(in vec3 p) +{ + const vec2 e = vec2(0.002, 0); + return normalize(vec3(map(p + e.xyy) - map(p - e.xyy), map(p + e.yxy) - map(p - e.yxy), map(p + e.yyx) - map(p - e.yyx))); +} + +// 0000000 000 000 0000000 0000000 0000000 000 000 +// 000 000 000 000 000 000 000 000 000 000 0 000 +// 0000000 000000000 000000000 000 000 000 000 000000000 +// 000 000 000 000 000 000 000 000 000 000 000 +// 0000000 000 000 000 000 0000000 0000000 00 00 + +float softShadow(vec3 ro, vec3 rd, float start, float end, float k) +{ + float shade = 1.0; + float dist = start; + + for (int i=ZERO; i<16; i++) + { + float h = map(ro + rd*dist); + shade = min(shade, k*h/dist); + + dist += clamp(h, 0.01, 0.25); + + if (h<0.001 || dist > end) break; + } + return min(max(shade, 0.) + 0.1, 1.0); +} + +// 0000000 00 00 0000000 000 00000000 000 000 000000000 +// 000 000 000 000 000 000 000 000 0000 000 000 +// 000000000 000000000 0000000 000 0000000 000 0 000 000 +// 000 000 000 0 000 000 000 000 000 000 0000 000 +// 000 000 000 000 0000000 000 00000000 000 000 000 + +float calculateAO( in vec3 p, in vec3 n ) +{ + float ao = 0.0, l; + const float maxDist = 3.; + const float nbIte = 1.0; + for( float i=1.; i< nbIte+.5; i++ ) + { + l = (i + hash(i))*.5/nbIte*maxDist; + ao += (l - map( p + n*l ))/(1.+ l); + } + return clamp(1.- ao/nbIte, 0., 1.); +} + +// 000 000 0000000 000 000 000000000 +// 000 000 000 000 000 000 +// 000 000 000 0000 000000000 000 +// 000 000 000 000 000 000 000 +// 0000000 000 0000000 000 000 000 + +vec3 getLight(vec3 p, vec3 n, vec3 rd, float d) +{ + vec3 col = v0; + vec3 frc = v0; + + float ff; + + vec3 p2l = gl.light1-p; + float lightDist = length(p2l); + float atten = pow(max(0.0, 1.0-lightDist/40.0), 6.0); + + int mat = gl.sdf.mat; + + switch (mat) + { + case GYRO: + col = vec3(1,0,0); + frc = vec3(0.8, 0.5, 0); + n = doBumpMap(p, n, dither ? 0.006 : 0.008); + ff = 32.0 * atten * atten * atten; + break; + case HEAD: + case TAIL: + col = vec3(1,0.5,0); + frc = vec3(1,0.5,0); + ff = mat == HEAD ? 100.0 : 18.0; + p2l -= cam.dir*0.2; + break; + } + + float ao = occl ? calculateAO(p, n) : 1.0; + + vec3 ln = normalize(p2l); + + float ambience = 0.01; + float diff = max(dot(n, ln), 0.0); + float spec = pow(max(dot(reflect(-ln, n), -rd), 0.0), 32.0); + float fre = pow(clamp(dot(n, rd) + 1.0, 0.0, 1.0), 1.0); + + float shading = softShadow(p, ln, 0.05, lightDist, 8.0); + + if (mat == GYRO) + { + col *= diff + ambience + spec + frc*pow(fre,4.0)*ff; + col *= atten*shading*ao; + } + else if (mat == TAIL) + { + col = col * (0.5 + diff + spec) + frc*pow(fre,4.0)*ff; + } + else + { + col += frc*pow(fre,4.0)*ff; + } + + if (light) col = vec3(atten*shading*ao*(diff + ambience + spec +pow(fre,4.0)*ff)); + else if (foggy) col = mix(vec3(0.001,0.0,0.0), col, 1.0/(1.0+d*d/MAX_DIST)); + + return col; +} +// 00 00 0000000 000 000 000 +// 000 000 000 000 000 0000 000 +// 000000000 000000000 000 000 0 000 +// 000 0 000 000 000 000 000 0000 +// 000 000 000 000 000 000 000 + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + initGlobal(fragCoord, iResolution, iMouse, iTime); + gl.zero = ZERO; + for (int i = KEY_1; i <= KEY_9; i++) { if (keyDown(i)) { gl.option = i-KEY_1+1; break; } } + + rotate = keyState(KEY_R); + anim = keyState(KEY_RIGHT); + occl = keyState(KEY_UP); + dither = keyState(KEY_D); + normal = !keyState(KEY_X); + depthb = !keyState(KEY_Z); + light = !keyState(KEY_LEFT); + space = !keyState(KEY_SPACE); + foggy = keyState(KEY_F); + + if (anim) + at = 0.5*iTime; + + initCam(CAM_DIST, vec2(0)); + + lookAtFrom(vec3(0,0,2.5), vec3(0,0,0)); + lookPan(vec3(-at,0,0)); + if (rotate) + orbit(-sin(at*PI2)*5.0, sin(at*PI2)*5.0); + + if (iMouse.z > 0.0) + lookAtFrom(vec3(-at,0,2.5), vec3(-at,0,2.5) + rotAxisAngle(vec3(0,0,-2.5-1.5*gl.mp.y), vy, gl.mp.x*90.0)); + + #ifndef TOY + if (space) lookAtFrom(iCenter, iCamera); + #endif + + gl.uv = (2.0*fragCoord-iResolution.xy)/iResolution.y; + vec3 rd = normalize(gl.uv.x*cam.x + gl.uv.y*cam.up + cam.fov*cam.dir); + + gl.light1 = vec3(-at,0,0)+vz*(2.5+0.4*(1.35 + cos(1.7+at*PI2)))+vy*(0.35-0.5*(sin(-PI2+at*PI2))); + + gl.march = true; + float d = march(cam.pos, rd); + vec3 p = cam.pos + d * rd; + vec3 n = getNormal(p); + vec3 col = v0; + gl.march = false; + + if (normal || depthb) + { + vec3 nc = normal ? d >= MAX_DIST ? black : n : white; + vec3 zc = depthb ? vec3(1.0-pow(d/MAX_DIST,0.1)) : white; + col = nc*zc; + } + else + { + col = getLight(p, n, rd, d); + } + + #ifndef TOY + col += vec3(print(0,0,vec2(iFrameRate, iTime))); + #endif + + fragColor = vec4(sqrt(clamp(col, 0., 1.)), 1.0); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/Huearthquake.glsl b/src/commonMain/resources/baaahs/shows/Huearthquake.glsl new file mode 100644 index 0000000000..7063c6dea6 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Huearthquake.glsl @@ -0,0 +1,94 @@ +// Huearthquake +// From http://glslsandbox.com/e#46400 + +#ifdef GL_ES +precision mediump float; +#endif + +#define PI 3.14159265358 +#define TWO_PI 6.28318530718 + +uniform vec2 resolution; +uniform float time; + +vec3 colorA = vec3(0.149, 0.141, 0.912); +vec3 colorB = vec3(1.000, 0.833, 0.224); + +vec3 rgb2hsb( in vec3 c ){ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), + vec4(c.gb, K.xy), + step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), + vec4(c.r, p.yzx), + step(p.x, c.r)); + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), + d / (q.x + e), + q.x); +} + +// Function from Iñigo Quiles +// https://www.shadertoy.com/view/MsS3Wc +vec3 hsb2rgb( in vec3 c ){ + vec3 rgb = clamp(abs(mod(c.x*6.0+vec3(0.0,4.0,2.0), + 6.0)-3.0)-1.0, + 0.0, + 1.0 ); + rgb = rgb*rgb*(3.0-2.0*rgb); + return c.z * mix(vec3(1.0), rgb, c.y); +} + +/* Coordinate and unit utils */ +vec2 coord(in vec2 p) { + p = p / resolution.xy; + // correct aspect ratio + if (resolution.x > resolution.y) { + p.x *= resolution.x / resolution.y; + p.x += (resolution.y - resolution.x) / resolution.y / 2.0; + } else { + p.y *= resolution.y / resolution.x; + p.y += (resolution.x - resolution.y) / resolution.x / 2.0; + } + // centering + p -= 0.5; + p *= vec2(-1.0, 1.0); + return p; +} +#define rx 1.0 / min(resolution.x, resolution.y) +#define uv gl_FragCoord.xy / resolution.xy +#define st coord(gl_FragCoord.xy) +#define mx coord(u_mouse) + +mat2 rot(in float angle) { + return mat2(cos(angle), -sin(angle), + sin(angle), cos(angle)); +} + +float wave(in vec2 pt, in float f, in float v) { + float r = length(pt); + float a = atan(pt.y, pt.x); + return sin(r * TWO_PI * f - v * time); +} + +void main() { + vec2 pt = st; + + float f = 10.0 * abs(sin(0.1 * time)); + float v = 10.0; + float g = wave(pt, f, v); + + for (float k = 0.0; k < 8.0; k++) { + float t = PI / 4.0 * k; + vec2 offset = 0.5 * vec2(cos(t), sin(t)); + g += wave(pt + offset, f, v); + } + + g *= 0.5; + g = step(g, 0.0); + + vec3 rgb = mix(colorA, colorB, g); + + gl_FragColor = vec4(rgb, 1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/Huenami.glsl b/src/commonMain/resources/baaahs/shows/Huenami.glsl new file mode 100644 index 0000000000..71f0b3ba20 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Huenami.glsl @@ -0,0 +1,26 @@ +// Huenami +// From: http://glslsandbox.com/e#44092.1 + +// amiga internal vendetta or coppermaster style plasma; +// gigatron base source from here; +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 resolution; +#define t time +void main( void ) { + vec2 p=gl_FragCoord.xy/resolution; + + + p= floor(p*32.)/32.; + vec3 a=vec3(0.5, 0.5, 0.5); + vec3 b=vec3(0.5, 0.5, 0.5); + vec3 c=vec3(t/4., t*0.4, t/2.); + vec3 d=vec3(0.0, 0.33, 0.67); + vec3 col = b+a*sin(8.0*(c+p.y+sin(p.x+p.x+t) )); + //col*= b+a*sin(10.0*(c+p.y+cos(p.y+p.y+t) )); + + gl_FragColor=vec4(col, 1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/HypnoSwirl.glsl b/src/commonMain/resources/baaahs/shows/HypnoSwirl.glsl new file mode 100644 index 0000000000..0d1d4c98e7 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/HypnoSwirl.glsl @@ -0,0 +1,113 @@ +// Hypno-Swirl +// From http://glslsandbox.com/e#46292 + +#ifdef GL_ES + precision mediump float; +#endif + +// System functions to define needed vars and such stuff +#define COLORS(num) int colors = num; float segment = 1.0 / float(num); float offset = segment / 2.0; +#define COLOR_START(col) color = gradient(col, col, 0.0, offset, value); vec3 start_col = col; vec3 last_col = col; +#define COLOR_END() BLEED(last_col, start_col); +#define COLOR_ACTUAL(col, step) color = gradient(color, col, offset + bleed, offset + segment - bleed, value); offset=offset+step; last_col = col; + +// User facing functions +#define COLORL(col, length) BLEED(last_col, col); COLOR_ACTUAL(col, length); +#define BLEED(col_l, col_r) color = gradient(color, col_l, offset - bleed, offset, value); color = gradient(color, col_r, offset, offset + bleed, value); +#define COLOR(col) COLORL(col, segment); +uniform float time; +uniform vec2 resolution; + +vec3 hsv2rgb(vec3); +vec4 gradient(vec4 base, vec3 stop, float start, float end, float grayscale); +vec4 gradient(vec3 base, vec3 stop, float start, float end, float grayscale); + +const float pi = 3.141592654; + +// Spiral settings +const int segments = 4; +const float fold = 6.0; +const float fold_k = 0.1; +const float delay = 15.0; // In seconds (?) +const float bleed_base = 0.01; +const float brightness = 0.5; + +// Colors are HSV +// Some tips: V (third param) controls how much the color "glows" +// basically. This allows to, for example, mute other color's +// value, and make a nice effect of glow for one color. +const vec3 col1 = vec3(0.65, 0.8, 1.0); // Rich blue +const vec3 col2 = vec3(0.85, 1.0, 0.9); // Pink cotton +const vec3 col3 = vec3(1.00, 1.0, 0.8); // Red +const vec3 col4 = vec3(0.15, 1.0, 0.9); // Banana yellow +const vec3 col5 = vec3(0.45, 1.0, 0.9); // Minty green + +void main(void) { + vec2 uv = (gl_FragCoord.xy - 0.5 * resolution.xy) / resolution.yy; + float r = length(uv); // Distance + float theta = atan(uv.y, uv.x); // Radial coord + float value = float(fract( + float(segments) / 2.0 * theta / pi + + fold * pow(r, fold_k) - float(segments) * time / delay + )); + vec4 color; + // c2 - bleed - c1 - bleed - c2 + float bleed = bleed_base * (1.0 - r); + bleed = clamp(bleed, 0.0, bleed_base); + + // COLORS(N) defines the amount of gradient segments for every segment. + // Mismatch of N and amount of COLOR() (including start) statements is undefined. + + // To "enable" a preset, remove / after active one, and add it to one you want to use + /* Cotton candy "preset" */ + COLORS(2); + COLOR_START(col1); + COLOR(col2); + /**/ + + /* Something I dunno * + COLORS(5); + COLOR_START(col1); + COLOR(col2); + COLOR(col3); + COLOR(col4); + COLOR(col5); + /**/ + + /* Black and yellow * + COLORS(2); + COLOR_START(vec3(0.0, 0.0, 0.1)); + COLOR(vec3(0.121, 1.0, 1.0)); + /**/ + + /* Glowing blue * + COLORS(4); + COLOR_START(vec3(0.5, 1.0, 1.0)); + COLOR(vec3(0.5, 0.5, 0.2)); + COLOR(vec3(0.55, 1.0, 0.8)); + COLOR(vec3(0.5, 0.5, 0.2)); + /**/ + + + COLOR_END(); + // + + //MAYBE not needed idk + //color = gradient(color, col2, 0.75 + bleed, 1.00, value);/**/ + gl_FragColor = color; +} + +vec3 hsv2rgb(vec3 c) { + c.z = c.z * brightness; + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +vec4 gradient(vec4 base, vec3 stop, float start, float end, float grayscale) { + return mix(base, vec4(hsv2rgb(stop), 1.0), smoothstep(start, end, grayscale)); +} + +vec4 gradient(vec3 base, vec3 stop, float start, float end, float grayscale) { + return gradient(vec4(hsv2rgb(base), 1.0), stop, start, end, grayscale); +} diff --git a/src/commonMain/resources/baaahs/shows/JacobianUndistortion.glsl b/src/commonMain/resources/baaahs/shows/JacobianUndistortion.glsl new file mode 100644 index 0000000000..a94cb3fae9 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/JacobianUndistortion.glsl @@ -0,0 +1,29 @@ +// Tuto: Jacobians and undistortion +// from https://www.shadertoy.com/view/WlByRW + +#define Circle(U,r) smoothstep(50./R.y,0., abs(length(U)-r)-.02 ) + +void mainImage( out vec4 O, vec2 u ) +{ + vec2 R = iResolution.xy, + U = ( 2.*u - R ) / R.y, I, L; // normalized coordinates + + U += .5*U*mat2(cos(2.*U+iTime),sin(2.*U-iTime)); // distorted coordinates + U *= 4.; + + I =floor(U); L = 2.*fract(U)-1.; // draw distorted checker + O = vec4 (.4*mod(I.x+I.y,2.) ); + + O.r += Circle(L,.4); // draw circle in distorted space + + mat2 J = transpose(mat2(dFdx(U),dFdy(U))) *R.y/8.; // the Jacobian store the local distorted frame + L *= inverse(J); // undistort by applying the inverse transform + // or if you prefer right-multiplying matrices : + // mat2 J = mat2(dFdx(U),dFdy(U)) *R.y/8.; // the Jacobian store the local distorted frame + // L = inverse(J)*L; // undistort by applying the inverse transform + O.g += Circle(L,.4); // draw circle in undistorted space + + O.b = ( .5+.5*determinant(J) ) *.6; // det(J) shows compression in distortion + //O.b = length(vec4(J))/3.; + O.a = 1.; +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/OrangeSnowflake.glsl b/src/commonMain/resources/baaahs/shows/OrangeSnowflake.glsl new file mode 100644 index 0000000000..040f006d2b --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/OrangeSnowflake.glsl @@ -0,0 +1,162 @@ +// Orange Snowflake +// Based on http://glslsandbox.com/e#61105.0 + +/* + * Original shader from: https://www.shadertoy.com/view/wl3XW8 + */ + +#ifdef GL_ES +precision mediump float; +#endif + +// glslsandbox uniforms +uniform float time; +uniform vec2 resolution; + +// shadertoy emulation +float iTime = 0.0; +#define iResolution resolution + +// --------[ Original ShaderToy begins here ]---------- // +// Code by Flopine +// Thanks to wsmind, leon, XT95, lsdlive, lamogui, Coyhot, Alkama and YX for teaching me +// Thanks LJ for giving me the love of shadercoding :3 + +// Thanks to the Cookie Collective, which build a cozy and safe environment for me +// and other to sprout :) https://twitter.com/CookieDemoparty + +#define hr vec2(1., sqrt(3.)) +#define PI 3.141592 +#define TAU (2.*PI) +#define time (iTime*0.5) + +float hash21 (vec2 x) +{return fract(sin(dot(x,vec2(12.4,18.4)))*1245.4);} + +mat2 rot (float a) +{return mat2 (cos(a),sin(a),-sin(a),cos(a));} + +void mo (inout vec2 p, vec2 d) +{ + p = abs(p)-d; + if (p.y>p.x) p = p.yx; +} + +float stmin (float a, float b, float k, float n) +{ + float st = k/n; + float u = b-k; + return min(min(a,b), 0.5*(u+a+abs(mod(u-a+st,2.*st)-st))); +} + +float hd (vec2 uv) +{ + uv = abs(uv); + return max(uv.x, dot(uv, normalize(hr))); +} + +vec4 hgrid (vec2 uv,float detail) +{ + uv *= detail; + vec2 ga = mod(uv,hr)-hr*0.5; + vec2 gb = mod(uv-hr*0.5,hr)-hr*0.5; + vec2 guv = (dot(ga,ga)< dot(gb,gb))? ga: gb; + + vec2 gid = uv-guv; + + guv.y = 0.5-hd(guv); + + return vec4(guv,gid); +} + +float hexf (vec2 uv) +{ + float det = 3.; + float speed = 0.5; + float d = 0.; + for (float i=0.; i<3.; i++) + { + float ratio = i/5.; + uv *= rot(TAU/(5.)); + uv = (mod(i,2.) == 0.) ? vec2(uv.x+iTime*speed,uv.y) : vec2(uv.x,uv.y+iTime*speed); + d += step(hgrid(uv, det).y,0.03); + speed -= 0.1; + det ++; + } + return d; +} + +float box (vec3 p, vec3 c) +{ + vec3 q = abs(p)-c; + return min(0.,max(q.x,max(q.y,q.z))) + length(max(q,0.)); +} + +float fractal (vec3 p) +{ + float size = 1.; + float d = box(p,vec3(size)); + for (float i=0.; i<5.; i++) + { + float ratio = i/5.; + p.yz *= rot(time); + mo(p.xz, vec2(2.+ratio)); + mo(p.xy, vec2(0.5+ratio)); + p.xy *= rot(time+ratio); + size -= ratio*1.5; + d= stmin(d,box(p,vec3(size)),1., 4.); + } + return d; +} + +float g1 = 0.; +float SDF (vec3 p) +{ + float d = fractal(p); + g1 += 0.1/(0.1+d*d); + return d; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = (2.*fragCoord-iResolution.xy)/iResolution.y; + + float mask = 1.0;//step(0.3, abs(sin(length(uv)-PI*time))+0.01); + float fx = 0.0;//clamp(mix(1.-hexf(uv), hexf(uv), mask),0.,1.); + + float dither = hash21(uv); + + vec3 ro = vec3(0.,0.,-10.), + p = ro, + rd = normalize(vec3(uv,1.)), + col = vec3(0.); + + float shad = 0.; + + for (float i=0.; i<64.; i++) + { + float d = SDF(p); + if (d<0.01) + { + shad = i/64.; + break; + } + d *= 0.7+dither*0.1; + p += d*rd; + } + + col = vec3(2.,length(uv*0.5),0.1)*g1*0.2; + col *= (1.-fx); + + // Output to screen + fragColor = vec4(col,1.0); +} + // --------[ Original ShaderToy ends here ]---------- // + + #undef time + +void main(void) +{ + iTime = time * 0.5; + mainImage(gl_FragColor, gl_FragCoord.xy); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/OrangeTang.glsl b/src/commonMain/resources/baaahs/shows/OrangeTang.glsl new file mode 100644 index 0000000000..a1b8ebc75e --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/OrangeTang.glsl @@ -0,0 +1,33 @@ +// Orange Tang +// From http://glslsandbox.com/e#56718 + +precision mediump float; + +uniform float time; +//uniform vec2 resolution; + +// SPARKLEMOTION GADGET: Slider {name: "MouseX", initialValue: 0.5, minValue: 0.0, maxValue: 1.0} +uniform float mouseX; + +// SPARKLEMOTION GADGET: Slider {name: "MouseY", initialValue: 0.5, minValue: 0.0, maxValue: 1.0} +uniform float mouseY; + +//uniform vec2 mouse; +//varying vec2 surfacePosition; + +void main( void ) { + vec2 p = gl_FragCoord.xy; + float speed = 0.25; + vec3 color = vec3(1.,0.5,.25); + vec2 loc = vec2( + cos(time/4.0*speed)/1.9-cos(time/2.0*speed)/3.8, + sin(time/4.0*speed)/1.9-sin(time/2.0*speed)/3.8 + ); + float depth; + for(int i = 0; i < 50; i+=1){ + p = vec2(p.x*p.x-p.y*p.y, 2.0*p.x*p.y)+loc; + depth = float(i); + if((p.x*p.x+p.y*p.y) >= mouseY*4.0) break; + } + gl_FragColor = vec4(clamp( (mouseX+.5)*color*depth*0.05, 0.0, 1.0), 1.0 ); +} diff --git a/src/commonMain/resources/baaahs/shows/PicassosNightmareShow.glsl b/src/commonMain/resources/baaahs/shows/PicassosNightmareShow.glsl new file mode 100644 index 0000000000..7c001d2bd0 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/PicassosNightmareShow.glsl @@ -0,0 +1,48 @@ +// Picasso's Nightmare +// From http://glslsandbox.com/e#56499 + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; +const float n_circles = 800.0; +const float max_radius = 1.0; +const float min_radius = 0.5; +const float seed1 = 69.7; +const float seed2 = 82.4; +const float seed3 = 62.5; + +float rand(float x, float seed) { + return fract(sin(x) * seed); +} + +float randFromTo(float x, float seed, float min, float max){ + return rand(x, seed) * (max - min) + min; +} + +bool drawCircle(vec2 pos, vec2 center, float radius, inout vec3 color) { + vec2 translatedCenter = vec2(sin(time) * randFromTo(center.x, seed1, -1.8, 1.8) + center.x, sin(time) * randFromTo(center.y, seed1, -1., 1.) + center.y); + float distance = distance(pos, translatedCenter); + bool ret = distance <= radius; + if (ret) { + float m = max (0.2, smoothstep(radius, radius / 3., distance)); + color = vec3(rand(center.x, seed1) * m,rand(center.y, seed2) * m, rand(center.x + center.y, seed3) * m); + } + return ret; +} + +void drawCircles(vec2 pos, float radiusMultiplier, inout vec3 color) { + for (float i=0.; i 0.0) return tx; + float hm = map(ori + dir * tm); + float tmid = 0.0; + for(int i = 0; i < NUM_STEPS; i++) { + tmid = mix(tm,tx, hm/(hm-hx)); + p = ori + dir * tmid; + float hmid = map(p); + if(hmid < 0.0) { + tx = tmid; + hx = hmid; + } else { + tm = tmid; + hm = hmid; + } + } + return tmid; +} + +// main +void main(void) { + vec2 uv = gl_FragCoord.xy / resolution; + uv = uv * 2.0 - 1.0; + uv.x *= resolution.x / resolution.y; + float time = 0.0; + + // ray + vec3 ang = vec3(sin(time*3.0)*0.1,sin(time)*0.2+0.3,time); + mat4 rot = fromEuler(ang); + + vec3 ori = vec3(0.0,3.5,time*5.0); + vec3 dir = normalize(vec3(uv.xy,-2.0)); + dir.z += length(uv) * 0.15; + dir = rotate(normalize(dir),rot); + + // tracing + vec3 p; + float dens = hftracing(ori,dir,p); + vec3 dist = p - ori; + vec3 n = getNormal(p, dot(dist,dist)*EPSILON_NRM); + + // color + vec3 color = sea_color(p,n,dir,dist); + + gl_FragColor = vec4(color,1.0); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/Seascape.glsl b/src/commonMain/resources/baaahs/shows/Seascape.glsl new file mode 100644 index 0000000000..1c8c6e57c3 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Seascape.glsl @@ -0,0 +1,204 @@ +// Seascape +// From https://www.shadertoy.com/view/Ms2SD1 + +/* + * "Seascape" by Alexander Alekseev aka TDM - 2014 + * License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + * Contact: tdmaav@gmail.com + */ + +const int NUM_STEPS = 8; +const float PI = 3.141592; +const float EPSILON = 1e-3; +#define EPSILON_NRM (0.1 / iResolution.x) +#define AA + +// sea +const int ITER_GEOMETRY = 3; +const int ITER_FRAGMENT = 5; +const float SEA_HEIGHT = 0.6; +const float SEA_CHOPPY = 4.0; +const float SEA_SPEED = 0.8; +const float SEA_FREQ = 0.16; +const vec3 SEA_BASE = vec3(0.0,0.09,0.18); +const vec3 SEA_WATER_COLOR = vec3(0.8,0.9,0.6)*0.6; +#define SEA_TIME (1.0 + iTime * SEA_SPEED) +const mat2 octave_m = mat2(1.6,1.2,-1.2,1.6); + +// math +mat3 fromEuler(vec3 ang) { + vec2 a1 = vec2(sin(ang.x),cos(ang.x)); + vec2 a2 = vec2(sin(ang.y),cos(ang.y)); + vec2 a3 = vec2(sin(ang.z),cos(ang.z)); + mat3 m; + m[0] = vec3(a1.y*a3.y+a1.x*a2.x*a3.x,a1.y*a2.x*a3.x+a3.y*a1.x,-a2.y*a3.x); + m[1] = vec3(-a2.y*a1.x,a1.y*a2.y,a2.x); + m[2] = vec3(a3.y*a1.x*a2.x+a1.y*a3.x,a1.x*a3.x-a1.y*a3.y*a2.x,a2.y*a3.y); + return m; +} +float hash( vec2 p ) { + float h = dot(p,vec2(127.1,311.7)); + return fract(sin(h)*43758.5453123); +} +float noise( in vec2 p ) { + vec2 i = floor( p ); + vec2 f = fract( p ); + vec2 u = f*f*(3.0-2.0*f); + return -1.0+2.0*mix( mix( hash( i + vec2(0.0,0.0) ), + hash( i + vec2(1.0,0.0) ), u.x), + mix( hash( i + vec2(0.0,1.0) ), + hash( i + vec2(1.0,1.0) ), u.x), u.y); +} + +// lighting +float diffuse(vec3 n,vec3 l,float p) { + return pow(dot(n,l) * 0.4 + 0.6,p); +} +float specular(vec3 n,vec3 l,vec3 e,float s) { + float nrm = (s + 8.0) / (PI * 8.0); + return pow(max(dot(reflect(e,n),l),0.0),s) * nrm; +} + +// sky +vec3 getSkyColor(vec3 e) { + e.y = (max(e.y,0.0)*0.8+0.2)*0.8; + return vec3(pow(1.0-e.y,2.0), 1.0-e.y, 0.6+(1.0-e.y)*0.4) * 1.1; +} + +// sea +float sea_octave(vec2 uv, float choppy) { + uv += noise(uv); + vec2 wv = 1.0-abs(sin(uv)); + vec2 swv = abs(cos(uv)); + wv = mix(wv,swv,wv); + return pow(1.0-pow(wv.x * wv.y,0.65),choppy); +} + +float map(vec3 p) { + float freq = SEA_FREQ; + float amp = SEA_HEIGHT; + float choppy = SEA_CHOPPY; + vec2 uv = p.xz; uv.x *= 0.75; + + float d, h = 0.0; + for(int i = 0; i < ITER_GEOMETRY; i++) { + d = sea_octave((uv+SEA_TIME)*freq,choppy); + d += sea_octave((uv-SEA_TIME)*freq,choppy); + h += d * amp; + uv *= octave_m; freq *= 1.9; amp *= 0.22; + choppy = mix(choppy,1.0,0.2); + } + return p.y - h; +} + +float map_detailed(vec3 p) { + float freq = SEA_FREQ; + float amp = SEA_HEIGHT; + float choppy = SEA_CHOPPY; + vec2 uv = p.xz; uv.x *= 0.75; + + float d, h = 0.0; + for(int i = 0; i < ITER_FRAGMENT; i++) { + d = sea_octave((uv+SEA_TIME)*freq,choppy); + d += sea_octave((uv-SEA_TIME)*freq,choppy); + h += d * amp; + uv *= octave_m; freq *= 1.9; amp *= 0.22; + choppy = mix(choppy,1.0,0.2); + } + return p.y - h; +} + +vec3 getSeaColor(vec3 p, vec3 n, vec3 l, vec3 eye, vec3 dist) { + float fresnel = clamp(1.0 - dot(n,-eye), 0.0, 1.0); + fresnel = pow(fresnel,3.0) * 0.5; + + vec3 reflected = getSkyColor(reflect(eye,n)); + vec3 refracted = SEA_BASE + diffuse(n,l,80.0) * SEA_WATER_COLOR * 0.12; + + vec3 color = mix(refracted,reflected,fresnel); + + float atten = max(1.0 - dot(dist,dist) * 0.001, 0.0); + color += SEA_WATER_COLOR * (p.y - SEA_HEIGHT) * 0.18 * atten; + + color += vec3(specular(n,l,eye,60.0)); + + return color; +} + +// tracing +vec3 getNormal(vec3 p, float eps) { + vec3 n; + n.y = map_detailed(p); + n.x = map_detailed(vec3(p.x+eps,p.y,p.z)) - n.y; + n.z = map_detailed(vec3(p.x,p.y,p.z+eps)) - n.y; + n.y = eps; + return normalize(n); +} + +float heightMapTracing(vec3 ori, vec3 dir, out vec3 p) { + float tm = 0.0; + float tx = 1000.0; + float hx = map(ori + dir * tx); + if(hx > 0.0) return tx; + float hm = map(ori + dir * tm); + float tmid = 0.0; + for(int i = 0; i < NUM_STEPS; i++) { + tmid = mix(tm,tx, hm/(hm-hx)); + p = ori + dir * tmid; + float hmid = map(p); + if(hmid < 0.0) { + tx = tmid; + hx = hmid; + } else { + tm = tmid; + hm = hmid; + } + } + return tmid; +} + +vec3 getPixel(in vec2 coord, float time) { + vec2 uv = coord / iResolution.xy; + uv = uv * 2.0 - 1.0; + uv.x *= iResolution.x / iResolution.y; + + // ray + vec3 ang = vec3(sin(time*3.0)*0.1,sin(time)*0.2+0.3,time); + vec3 ori = vec3(0.0,3.5,time*5.0); + vec3 dir = normalize(vec3(uv.xy,-2.0)); dir.z += length(uv) * 0.14; + dir = normalize(dir) * fromEuler(ang); + + // tracing + vec3 p; + heightMapTracing(ori,dir,p); + vec3 dist = p - ori; + vec3 n = getNormal(p, dot(dist,dist) * EPSILON_NRM); + vec3 light = normalize(vec3(0.0,1.0,0.8)); + + // color + return mix( + getSkyColor(dir), + getSeaColor(p,n,light,dir,dist), + pow(smoothstep(0.0,-0.02,dir.y),0.2)); +} + +// main +void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + float time = iTime * 0.3 + iMouse.x*0.01; + + #ifdef AA + vec3 color = vec3(0.0); + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + vec2 uv = fragCoord+vec2(i,j)/3.0; + color += getPixel(uv, time); + } + } + color /= 9.0; + #else + vec3 color = getPixel(fragCoord, time); + #endif + + // post + fragColor = vec4(pow(color,vec3(0.65)), 1.0); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/ShatteredWeb.glsl b/src/commonMain/resources/baaahs/shows/ShatteredWeb.glsl new file mode 100644 index 0000000000..6769a9e177 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/ShatteredWeb.glsl @@ -0,0 +1,67 @@ +// Shattered Web +// From http://glslsandbox.com/e#46315 + +#ifdef GL_ES +precision mediump float; +#endif + + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; +// SPARKLEMOTION GADGET: Beat { "name": "beat" } +uniform float sm_beat; + +vec2 random2( vec2 p ) { + return fract(sin(vec2(dot(p,vec2(127.1,311.7)),dot(p,vec2(269.5,183.3))))*43758.5453); +} + +void main() { + vec2 st = gl_FragCoord.xy/resolution.xy; + st.x *= resolution.x/resolution.y; + vec3 color = vec3(.0); + + // Scale + st *= 5.; + + // Tile the space + vec2 i_st = floor(st); + vec2 f_st = fract(st); + + float m_dist = 10.; // minimun distance + vec2 m_point; // minimum point + + for (int j=-1; j<=1; j++ ) { + for (int i=-1; i<=1; i++ ) { + vec2 neighbor = vec2(float(i),float(j)); + vec2 point = random2(i_st + neighbor); + point = 0.5 + 0.5*sin(time + 6.2831*point); + vec2 diff = neighbor + point - f_st; + float dist = length(diff); + + if( dist < m_dist ) { + m_dist = dist; + m_point = point; + } + } + } + + // Assign a color using the closest point position + color += dot(m_point,vec2(.3,.6)); + + // Add distance field to closest point center + // color.g = m_dist; + + // Show isolines + color -= abs(sin(40.0*m_dist))*0.07; + + color *= vec3(sm_beat*0.4+0.6); + + // Draw cell center + color += 1.-step(.05, m_dist); + + // Draw grid +// color.r += step(.98, f_st.x) + step(.98, f_st.y); + + gl_FragColor = vec4(color,1.0); +} diff --git a/src/commonMain/resources/baaahs/shows/Snow.glsl b/src/commonMain/resources/baaahs/shows/Snow.glsl new file mode 100644 index 0000000000..0a5602db85 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Snow.glsl @@ -0,0 +1,266 @@ +// Snow +// +// From https://www.shadertoy.com/view/Xsd3zf +/* Panteleymonov Aleksandr Konstantinovich 2015 +// +// if i write this string my code will be 0 chars, :) */ + +// shadertoy emulation +#ifdef GL_ES +//precision mediump float; +#endif + +#define iTime time +uniform float time; +#define iResolution resolution +uniform vec2 resolution; +#define iMouse mouse +uniform vec3 mouse; + +// SPARKLEMOTION GADGET: Slider {name: "Flake Size", initialValue: 1.0, minValue: 0.01, maxValue: 2.0} +uniform float flakeSize; + +// SPARKLEMOTION GADGET: Slider {name: "Blueness", initialValue: 1.0, minValue: 0.0, maxValue: 1.0} +uniform float blueness; + +#define iterations 15.0 +#define depth 0.0125 +#define layers 8.0 +#define layersblob 20 +#define step 1.0 +#define far 10000.0 + +float radius=0.25; // radius of Snowflakes. maximum for this demo 0.25. +float zoom=1.0; // use this to change details. optimal 0.1 - 4.0. + +vec3 light=vec3(0.0,0.0,1.0); +vec2 seed=vec2(0.0,0.0); +float iteratorc=iterations; +float powr; +float res; + +vec4 NC0=vec4(0.0,157.0,113.0,270.0); +vec4 NC1=vec4(1.0,158.0,114.0,271.0); + +lowp vec4 hash4( mediump vec4 n ) { return fract(sin(n)*1399763.5453123); } +lowp float noize2( mediump vec2 x ) +{ + vec2 p = floor(x); + lowp vec2 f = fract(x); + f = f*f*(3.0-2.0*f); + float n = p.x + p.y*157.0; + lowp vec4 h = hash4(vec4(n)+vec4(NC0.xy,NC1.xy)); + lowp vec2 s1 = mix(h.xy,h.zw,f.xx); + return mix(s1.x,s1.y,f.y); +} + +lowp float noise222( mediump vec2 x, mediump vec2 y, mediump vec2 z ) +{ + mediump vec4 lx = vec4(x*y.x,x*y.y); + mediump vec4 p = floor(lx); + lowp vec4 f = fract(lx); + f = f*f*(3.0-2.0*f); + mediump vec2 n = p.xz + p.yw*157.0; + lowp vec4 h = mix(hash4(n.xxyy+NC0.xyxy),hash4(n.xxyy+NC1.xyxy),f.xxzz); + return dot(mix(h.xz,h.yw,f.yw),z); +} + +lowp float noize3( mediump vec3 x ) +{ + mediump vec3 p = floor(x); + lowp vec3 f = fract(x); + f = f*f*(3.0-2.0*f); + mediump float n = p.x + dot(p.yz,vec2(157.0,113.0)); + lowp vec4 s1 = mix(hash4(vec4(n)+NC0),hash4(vec4(n)+NC1),f.xxxx); + return mix(mix(s1.x,s1.y,f.y),mix(s1.z,s1.w,f.y),f.z); +} +lowp vec2 noise3_2( mediump vec3 x ) { return vec2(noize3(x),noize3(x+100.0)); } + +float map(mediump vec2 rad) +{ + float a; + if (res<0.0015) { + //a = noize2(rad.xy*20.6)*0.9+noize2(rad.xy*100.6)*0.1; + a = noise222(rad.xy,vec2(20.6,100.6),vec2(0.9,0.1)); + } else if (res<0.005) { + //float a1 = mix(noize2(rad.xy*10.6),1.0,l); + //a = texture(iChannel0,rad*0.3).x; + a = noize2(rad.xy*20.6); + //if (a1=-depth)) + { + mediump vec3 r3 = r2; + mediump float len = len1; + if (len>=rq) { + mediump vec3 n3 = cross(norm,n); + mediump float a = inversesqrt(rq-mind*mind)*abs(dot(ray,n3)); + mediump vec3 dt = ray/a; + r1 =- d*norm-mind*n-dt; + if (len2>=rq) { + r2 =- d*norm-mind*n+dt; + } + ds = dot(r2-r1,ray); + } + ds = (abs(ds)+0.1)/(iterations); + ds = mix(depth,ds,0.2); + if (ds>0.01) ds=0.01; + mediump float ir = 0.35/r; + r *= zoom; + ray = ray*ds*5.0; + for (float m=0.0; m=iteratorc) break; + mediump float l = length(r1.xy); //inversesqrt(dot(r1.xy,r1.xy)); + lowp vec2 c3 = abs(r1.xy/l); + if (c3.x>0.5) c3=abs(c3*0.5+vec2(-c3.y,c3.x)*0.86602540); + mediump float g = l+c3.x*c3.x; //*1.047197551; + l *= zoom; + mediump float h = l-r-0.1; + l = pow(l,powr)+0.1; + h = max(h,mix(map(c3*l+seed),1.0,abs(r1.z*invd)))+g*ir-0.245; //0.7*0.35=0.245 //*0.911890636 + if ((hdepth+0.01) break; + r1 += ray*h; + ray*=0.99; + } + if (abs(r1.z)0.0) addrot=(iMouse.xy-iResolution.xy*0.5)*res; + + float mxcl = 1.0; + vec3 addpos=vec3(0.0); + pos.z = 1.0; + mxc=1.0; + radius = 0.25; + float mzd=(zoom-0.1)/layers; + for (int i=0; i0.2 && i0 && dot(nray,nray)!=0.0 && dot(nray1,nray1)!=0.0 && dot(nray2,nray2)!=0.0) refcolor=filterFlake(refcolor,(pos+addpos)*mr,nray,nray1,nray2); + //cc+=refcolor*0.5; + gl_FragColor=mix(cc,gl_FragColor,min(1.0,gl_FragColor.w)); + } + seedn = vec3(sb,pos.z)+vec3(0.5,1000.0,300.0); + if (noize3(seedn*10.0)>0.4) { + float raf = 0.3+noize3(seedn*100.0); + addpos.xy = sb+vec2(0.2,0.2-sTime)+noise3_2(seedn*100.0)*0.6; + float l = length(ray*dot(ray,pos+addpos)-pos-addpos); + l = max(0.0,(1.0-l*10.0*raf)); + gl_FragColor.xyzw += vec4(mix(vec3(1.),vec3(1.0,1.2,3.0),blueness),1.0)*pow(l,5.0)*(pow(0.6+raf,2.0)-0.6)*mxcl; + } + mxc -= 1.1/layers; + pos.z += step; + iteratorc += 2.0; + mxcl -= 1.1/float(layersblob); + zoom-= mzd; + } + + vec3 cr = mix(vec3(0.0),vec3(0.0,0.0,0.4)*blueness,(-0.55+p.y)*2.0); + gl_FragColor.xyz += mix((cr.xyz-gl_FragColor.xyz)*0.1,vec3(0.5,0.75,1.0)*blueness,clamp((-p.y+1.0)*0.5,0.0,1.0)); + + gl_FragColor = min( vec4(1.0), gl_FragColor ); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/SolidColor.glsl b/src/commonMain/resources/baaahs/shows/SolidColor.glsl new file mode 100644 index 0000000000..8dd0e7bd45 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/SolidColor.glsl @@ -0,0 +1,16 @@ +// Solid Color.glsl + +uniform float time; +uniform vec2 resolution; +uniform vec4 color; // @@ColorPicker default=#3300ff +uniform float brightness; // @@Slider default=.75 +uniform float sparkliness; // @@Slider default=.02 max=.5 + +float random (vec2 st) { + return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123 + time); +} + +void main() { + gl_FragColor = color * brightness + + ((sparkliness < random(gl_FragCoord.xy / resolution.xy)) ? vec4(0.) : vec4(1.)); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/SpasticRainbow.glsl b/src/commonMain/resources/baaahs/shows/SpasticRainbow.glsl new file mode 100644 index 0000000000..9a62b35e72 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/SpasticRainbow.glsl @@ -0,0 +1,41 @@ +// Spastic Rainbow +// From http://glslsandbox.com/e#56433 + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + + +#define PI 3.14159265 + +float rcos(float x,float phase){ + return (cos((x+phase)*2.*PI)+.5); + +} +highp float rand(vec2 co) +{ + highp float a = 12.9898; + highp float b = 78.233; + highp float c = 43758.5453; + highp float dt= dot(co.xy ,vec2(a,b)); + highp float sn= mod(dt,3.14); + return fract(sin(sn) * c); +} + +vec3 rain(float x){ + return vec3(rcos(x,0.),rcos(x,2./3.),rcos(x,1./3.)); +} + +void main() { + vec2 st = gl_FragCoord.xy/resolution; + + for(float i=0.;i<20.0;i++){ + vec2 pos=vec2(rand(vec2(i,i)),rand(vec2(i+1.,i+2.))); + + vec2 sst=st-vec2(mod(pos+mod(time,1.),1.)); + + gl_FragColor.rgb+=(rain(rand(pos))*.4)/(length(sst)*60.0); + } + + gl_FragColor.a=1.0; +} diff --git a/src/commonMain/resources/baaahs/shows/Spectrum.glsl- b/src/commonMain/resources/baaahs/shows/Spectrum.glsl- new file mode 100644 index 0000000000..330c8b5cb4 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Spectrum.glsl- @@ -0,0 +1,21 @@ +// Spectrum + +#ifdef GL_ES +precision mediump float; +#endif + +// glslsandbox uniforms +uniform float time; +uniform vec2 resolution; + +// SPARKLEMOTION GADGET: Slider {name: "Scale", initialValue: 1.0, minValue: 0.0, maxValue: 2.0} +uniform float scale; + +void main(void) +{ + float mag = texture(sm_soundAnalysis, vec2(gl_FragCoord.y, pow(gl_FragCoord.x - .25, scale))).r; + float magNow = texture(sm_soundAnalysis, vec2(gl_FragCoord.y, 0)).r; + gl_FragColor = vec4(mag, mag, magNow, 1.0); + +} + diff --git a/src/commonMain/resources/baaahs/shows/Strings.glsl b/src/commonMain/resources/baaahs/shows/Strings.glsl new file mode 100644 index 0000000000..48c5d9423d --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Strings.glsl @@ -0,0 +1,88 @@ +// Strings +// from https://www.shadertoy.com/view/WldXRS + +#define LINE_FUNKINESS 23.23 + + +float Hash21(vec2 p) { + p = fract(p*vec2(123.34, 456.21)); + p += dot(p, p+45.32); + return fract(p.x*p.y); +} + +vec3 makeLine(vec2 uv, vec2 r_uv, float row_id, float scale, float i, float n) +{ + float direction = sign(n * 2. - 1.); + + vec2 current_uv = vec2(r_uv); + + current_uv.y += sin(r_uv.x + iTime * direction * 2.23 * n + row_id * 2.3623) * LINE_FUNKINESS * n * (sin(iTime + n * 80.932) * 0.5 + 0.5) * (sin(iTime) * 0.5 + 0.5); + + + vec3 current_col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4) + row_id * 23.61232); + return scale / pow(abs(current_uv.y - i * 2.), (1.5 + n*2.) * (1. + sin(iTime + 3.14159*0.5) * 0.5)) * current_col; +} + + + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + + float rows = 25.0; + // Normalized pixel coordinates (from 0 to 1) + vec2 uv = fragCoord/iResolution.xy; + + uv.y += iTime * 0.05; + + float a = iTime * 0.1;// + length(uv) * 3.141592653589 * sin(iTime * 0.12316); + float s = sin(a); + float c = cos(a); + + uv *= mat2(c, -s, s, c); + + + uv.x *= iResolution.x / iResolution.y;; + + uv.y *= rows; + + float row_id = floor(uv.y); + vec2 r_uv = vec2(uv.x, fract(uv.y)); + r_uv = r_uv * 2.0 - 1.0; + + // Time varying pixel color + //vec3 col = 0.5 + 0.5*cos(iTime+uv.xyx+vec3(0,2,4)) * c; + + + float mag = 0.005 * rows; + vec3 col = vec3(0.0); + for(float i = -rows; i <= rows; i++) + { + float current_row_id = row_id + i; + float n = Hash21(vec2(current_row_id, mag)); + col += makeLine(uv, r_uv, current_row_id, mag + sin(iTime * 0.5 + n * 6.1412) * 0.1, i, n); + } + + for(float i = -rows; i <= rows; i++) + { + float current_row_id = row_id + i; + float n = Hash21(vec2(current_row_id, mag * 0.1)); + col += makeLine(uv, r_uv, current_row_id, mag * 0.1 + sin(iTime * 0.5 + n * 14.6875) * 0.01, i, n); + } + + for(float i = -rows; i <= rows; i++) + { + float current_row_id = row_id + i; + float n = Hash21(vec2(current_row_id, mag * 0.05)); + col += makeLine(uv, r_uv, current_row_id, mag * 0.05 + sin(iTime * 0.5 + n * 23.78563) * 0.01, i, n); + } + + + + + + float power = 2.0; + col = vec3(pow(col.x, power), pow(col.y, power), pow(col.z, power)); + + // Output to screen + fragColor = vec4(col,1.0); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/SunsetDelight.glsl b/src/commonMain/resources/baaahs/shows/SunsetDelight.glsl new file mode 100644 index 0000000000..fd0c3be7ea --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/SunsetDelight.glsl @@ -0,0 +1,235 @@ +// Sunset Delight +// From http://glslsandbox.com/e#56573 + +// Fireball +// Awd +// @AlexWDunn +//mod by an+ + +#ifdef GL_ES +precision highp float; +#endif + +uniform vec2 resolution; +uniform float time; +//uniform vec2 mouse; +uniform float zoom; + +// SPARKLEMOTION GADGET: Slider {name: "MouseX", initialValue: 1.0, minValue: 0.0, maxValue: 1.5} +uniform float mouseX; + +// SPARKLEMOTION GADGET: Slider {name: "MouseY", initialValue: 1.0, minValue: 0.0, maxValue: 1.5} +uniform float mouseY; + +#define saturate(oo) clamp(oo, 0.0, 1.0) + +// Quality Settings +#define MarchSteps 6 + +// Scene Settings +#define ExpPosition vec3(0.0) +#define Radius 2.0 +#define Background vec4(0.1, 0.0, 0.0, 1.0) + +// Noise Settings +#define NoiseSteps 4 +#define NoiseAmplitude 0.1 +#define NoiseFrequency 2.2 +#define Animation vec3(0.0, .0, 0.5) + +// Colour Gradient +#define Color1 vec4(0.0, 0.0, 0.0, 1.0) +#define Color2 vec4(.0, .0, 1.0, 1.0) +#define Color3 vec4(1.0, .0, 0., 1.0) +#define Color4 vec4(0.4, 0.8, 0., 1.0) + + + +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : ijm +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// + +vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } +vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } +vec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); } +vec4 taylorInvSqrt(vec4 r){ return 1.79284291400159 - 0.85373472095314 * r; } + +float snoise(vec3 v) +{ + const vec2 C = vec2(1.0/6.0, 1.0/3.0); + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, C.yyy)); + vec3 x0 = v - i + dot(i, C.xxx); + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min(g.xyz, l.zxy); + vec3 i2 = max(g.xyz, l.zxy); + vec3 x1 = x0 - i1 + C.xxx; + vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289(i); + vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0)) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_); // mod(j,N) + + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + + vec4 h = 1.0 - abs(x) - abs(y); + vec4 b0 = vec4(x.xy, y.xy); + vec4 b1 = vec4(x.zw, y.zw); + + vec4 s0 = floor(b0) * 2.0 + 1.0; + vec4 s1 = floor(b1) * 2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy; + vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww; + + vec3 p0 = vec3(a0.xy, h.x); + vec3 p1 = vec3(a0.zw, h.y); + vec3 p2 = vec3(a1.xy, h.z); + vec3 p3 = vec3(a1.zw, h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); + m = m * m; + + return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3))); +} + +float Turbulence(vec3 position, float minFreq, float maxFreq, float qWidth) +{ + float value = 0.0; + float cutoff = clamp(0.5/qWidth, 0.0, maxFreq); + float fade; + float fOut = minFreq; + + for(int i=NoiseSteps ; i>=0 ; i++) + { + if(fOut >= 0.5 * cutoff) break; + + fOut *= 2.0; + value += abs(snoise(position * fOut))/fOut; + } + + fade = clamp(2.0 * (cutoff-fOut)/cutoff, 0.0, 1.0); + value += fade * abs(snoise(position * fOut))/fOut; + + return 1.0-value; +} + +float SphereDist(vec3 position) +{ + return length(position - ExpPosition) - Radius; +} + +vec4 Shade(float distance) +{ + float c1 = saturate(distance*5.0 + 0.5); + float c2 = saturate(distance*5.0); + float c3 = saturate(distance*3.4 - 0.5); + + vec4 a = mix(Color1,Color2, c1); + vec4 b = mix(a, Color3, c2); + return mix(b, Color4, c3); +} + + +// Draws the scene +float RenderScene(vec3 position, out float distance) +{ + float noise = Turbulence(position * NoiseFrequency + Animation*time, 0.1, 1.5, 0.03) * NoiseAmplitude; + noise = saturate(abs(noise)); + distance = SphereDist(position) - noise; + + return noise; +} + +// Basic ray marching method. +vec4 March(vec3 rayOrigin, vec3 rayStep) +{ + vec3 position = rayOrigin; + + float distance; + float displacement; + + for(int step = MarchSteps; step >=0 ; --step) + { + displacement = RenderScene(position, distance); + + if(distance < 0.05) break; + + position += rayStep * distance; + } + return mix(Shade(displacement), Background, float(distance >= 0.5)); +} + +bool IntersectSphere(vec3 ro, vec3 rd, vec3 pos, float radius, out vec3 intersectPoint) +{ + vec3 relDistance = (ro - pos); + + float b = dot(relDistance, rd); + float c = dot(relDistance, relDistance) - radius*radius; + float d = b*b - c; + + intersectPoint = ro + rd*(-b - sqrt(d)); + + return d >= 0.0; +} + +void main(void) +{ + vec2 p = (gl_FragCoord.xy / resolution.xy) * 2.0 - 1.0; + + p.x *= resolution.x/resolution.y; + + float rotx = mouseY * 4.0; + float roty = -mouseX * 4.0; + float zoom = 5.0; + + // camera + vec3 ro = zoom * normalize(vec3(cos(roty), cos(rotx), sin(roty))); + vec3 ww = normalize(vec3(0.0, 0.0, 0.0) - ro); + vec3 uu = normalize(cross( vec3(0.0, 1.0, 0.0), ww)); + vec3 vv = normalize(cross(ww, uu)); + vec3 rd = normalize(p.x*uu + p.y*vv + 4.5*ww); + + vec4 col = Background; + + vec3 origin; + + if(IntersectSphere(ro, rd, ExpPosition, Radius + NoiseAmplitude*6.0, origin)) + { + col = March(origin, rd); + } + + gl_FragColor = col; +} diff --git a/src/commonMain/resources/baaahs/shows/TvTestPattern.glsl b/src/commonMain/resources/baaahs/shows/TvTestPattern.glsl new file mode 100644 index 0000000000..ea45feebd5 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/TvTestPattern.glsl @@ -0,0 +1,26 @@ +// TV Test Pattern +// From http://glslsandbox.com/e#46744 + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 resolution; + +float sq(float x) { + return x*x; +} + +void main() { + vec2 p = gl_FragCoord.xy / resolution.x * 0.7; + vec3 col; + for(float j = 0.0; j < 3.0; j++){ + for(float i = 1.0; i < 10.0; i++){ + p.x += 0.1 / (i + j) * sin(i * 7.0 * p.y + time + cos((time / (1. * i)) * i + j)); + p.y += 0.1 / (i + j)* cos(i * 1.0 * p.x + time + sin((time / (2. * i)) * i + j)); + } + col[int(j)] = sin(75.0*sq(p.x)) + sin(75.0*sq(p.y)); + } + gl_FragColor = vec4(col, 1.); +} diff --git a/src/commonMain/resources/baaahs/shows/Waves.glsl b/src/commonMain/resources/baaahs/shows/Waves.glsl new file mode 100644 index 0000000000..1dbe868e01 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/Waves.glsl @@ -0,0 +1,37 @@ +// Waves +// Adapted from http://glslsandbox.com/e#61168.1 + +//#extension GL_OES_standard_derivatives : enable + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +void main( void ) { + + vec2 position = ( gl_FragCoord.xy / resolution.xy ); + float num = 2.0; + float frequency = 6.28; + + vec3 color = vec3( + sin(frequency * position.x + 0.0 + time) * 0.5 + 0.5, + sin(frequency * position.x + 2.0 + time) * 0.5 + 0.5, + sin(frequency * position.x + 4.0 + time) * 0.5 + 0.5 + sin(time * 4.) + ); + // color = vec3(1.0); + + color += vec3(position.y * 2.0 - 1.0); + + color = vec3( + floor(color.r * num - 0.5) / num + 0.5, + floor(color.g * num - 0.5) / num + 0.5, + floor(color.b * num - 0.5) / num + 0.5 + ); + + gl_FragColor = vec4( color, 1.0 ); + +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/WobblyColorGrid.glsl b/src/commonMain/resources/baaahs/shows/WobblyColorGrid.glsl new file mode 100644 index 0000000000..89aa904041 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/WobblyColorGrid.glsl @@ -0,0 +1,39 @@ +// Wobbly Color Grid +// From http://glslsandbox.com/e#60808.1 + +// modded by Mik - v1.1 + +#ifdef GL_ES +precision mediump float; +#endif + +//#extension GL_OES_standard_derivatives : enable + +//varying vec2 surfacePosition; +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +void main(void){ + + float PI = 3.141592; + vec2 p = gl_FragCoord.xy/resolution*2.; + + float time = time + length(p)*cos(time/4. - .0001*length(p)*cos(time/PI + .0001*length(p)*cos(time*time/PI))); + vec3 color = vec3(0., length(p), 0.); + + float f = 0.0; + + for(float i = 0.0; i < 15.0; i++){ + + float s = sin(mouse.x +time + mouse.x * i * PI / 10.0) * .85; + float c = cos(mouse.y + time + mouse.y * i * PI / 10.0) * .93; + + f += 0.001 / (abs(p.x + c / (.35+length(p))) * abs(p.y + s / (.35+length(p)))) / (.5+length(p)); + color.r += s * 1.0 * PI; + color.b += c * 1.0 * PI; + } + + + gl_FragColor = vec4(vec3(f * color), 1.0); +} \ No newline at end of file diff --git a/src/commonMain/resources/baaahs/shows/YasQueen.glsl b/src/commonMain/resources/baaahs/shows/YasQueen.glsl new file mode 100644 index 0000000000..1cb39a8938 --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/YasQueen.glsl @@ -0,0 +1,29 @@ +// Yas Queen +// From http://glslsandbox.com/e#46613 + +#ifdef GL_ES +precision mediump float; +#endif + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; +// EXAMPLE FROM https://www.shadertoy.com/view/lstfRH +#define PI 3.141592653589793 + +vec3 hsv2rgb(vec3 c) { + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} +void main( void ) { + + vec3 col; + float x = gl_FragCoord.x + sin(time/PI) * resolution.x / 4.0; + float y = gl_FragCoord.y + cos(time/PI) * resolution.y / 2.0; + float hue = sin(x / resolution.x) + cos(y / resolution.y) + sin((x + y) / 500.0) + cos(sqrt(x * x + y * y) / 100.0); + + col = hsv2rgb(vec3(hue + time/8.0, 1.0, mod(time, 1000.0))); + + gl_FragColor = vec4(col, 1); +} diff --git a/src/commonMain/resources/baaahs/shows/ZebraMadness.glsl b/src/commonMain/resources/baaahs/shows/ZebraMadness.glsl new file mode 100644 index 0000000000..5983820d2e --- /dev/null +++ b/src/commonMain/resources/baaahs/shows/ZebraMadness.glsl @@ -0,0 +1,64 @@ +// Zebra Madness +// From http://glslsandbox.com/e#56511 + +uniform float time; +uniform vec2 mouse; +uniform vec2 resolution; + +vec4 circle(vec2 p, vec2 c) +{ + p-=c; + if (p.x*p.x+p.y*p.y<0.001) return vec4(1.0,1.0,1.0,1.0); + return vec4(0.0,0.0,0.0,0.0); +} + + +vec2 md(vec2 p) { + p.x = mod(p.x,0.2); + p.y = mod(p.y,0.2); + return p; +} +vec4 map0(vec2 p, float z) +{ + p.x/=z; + p.y/=z; + p = md(p); + return circle(p,vec2(0.1,0.1)); +} +vec4 map1(vec2 p,float d, float m) { + d = mod(d,1.3); + + vec4 ca = map0(p,m*0.1+d); + vec4 c0 = map0(p,m*0.3+d); + vec4 c1 = map0(p,m*0.5+d); + vec4 c2 = map0(p,m*0.7+d); + vec4 c3 = map0(p,m*0.9+d); + vec4 c4 = map0(p,m*1.1+d); + vec4 c5 = map0(p,m*1.3+d); + return ca+c0+c1+c2+c3+c4+c5; +} +vec4 map2(vec2 p, float d) +{ + vec4 c0 = map1(p,d,0.1); + vec4 c1 = map1(p,d,0.2); + vec4 c2 = map1(p,d,0.3); + vec4 c3 = map1(p,d,0.4); + vec4 c4 = map1(p,d,0.5); + return c0+c1+c2+c3+c4; +} + +void main( void ) { + + vec2 position = ( gl_FragCoord.xy / resolution.yy ) ; + position.x-=0.6; + position.y-=0.5; + + float color = 0.0; + color += sin( position.x * cos( time / 15.0 ) * 80.0 ) + cos( position.y * cos( time / 15.0 ) * 10.0 ); + color += sin( position.y * sin( time / 10.0 ) * 40.0 ) + cos( position.x * sin( time / 25.0 ) * 40.0 ); + color += sin( position.x * sin( time / 5.0 ) * 10.0 ) + sin( position.y * sin( time / 35.0 ) * 80.0 ); + color *= sin( time / 10.0 ) * 0.5; + + //position = md(position); + gl_FragColor = color * map2(position, time/1.0) + map2(position, (time - .5)/1.0) / 50.; //circle(position,vec2(0.1,0.1)); +} diff --git a/src/commonMain/resources/decom-2019-panels.obj b/src/commonMain/resources/decom-2019-panels.obj new file mode 100644 index 0000000000..9856195616 --- /dev/null +++ b/src/commonMain/resources/decom-2019-panels.obj @@ -0,0 +1,55 @@ +# OBJ model file (sort of) +# Built by hand by @xian +# File units = inches + +v 0 48 0 +v 0 120 0 +v 48 120 0 +v 48 48 0 + +v 60 48 0 +v 60 120 0 +v 108 120 0 +v 108 48 0 + +v 120 48 0 +v 120 120 0 +v 168 120 0 +v 168 48 0 + +v -60 72 0 +v -60 120 0 +v -12 120 0 +v -12 72 0 + +o Panel 1 +f 1 3 2 +f 1 4 3 +l 1 2 +l 2 3 +l 3 4 +l 4 1 + +o Panel 2 +f 5 7 6 +f 5 8 7 +l 5 6 +l 6 7 +l 7 8 +l 8 5 + +o Panel 3 +f 9 11 10 +f 9 12 11 +l 9 10 +l 10 11 +l 11 12 +l 12 9 + +o Panel 4 +f 13 15 14 +f 13 16 15 +l 13 14 +l 14 15 +l 15 16 +l 16 13 diff --git a/src/commonMain/resources/sui-generis.obj b/src/commonMain/resources/sui-generis.obj new file mode 100644 index 0000000000..9568925ec8 --- /dev/null +++ b/src/commonMain/resources/sui-generis.obj @@ -0,0 +1,29 @@ +# OBJ model file (sort of) +# Built by hand by @xian +# File units = inches + +v 0 48 0 +v 0 120 0 +v 48 120 0 +v 48 48 0 + +v 60 48 0 +v 60 120 0 +v 108 120 0 +v 108 48 0 + +o Panel 1 +f 1 2 3 +f 1 3 4 +l 1 2 +l 2 3 +l 3 4 +l 4 1 + +o Panel 2 +f 5 6 7 +f 5 7 8 +l 5 6 +l 6 7 +l 7 8 +l 8 5 diff --git a/src/commonMain/resources/visualizer/textures/round.png b/src/commonMain/resources/visualizer/textures/round.png new file mode 100644 index 0000000000..86063ae45b Binary files /dev/null and b/src/commonMain/resources/visualizer/textures/round.png differ diff --git a/src/commonTest/kotlin/baaahs/BrainManagerSpec.kt b/src/commonTest/kotlin/baaahs/BrainManagerSpec.kt new file mode 100644 index 0000000000..42e9c679c0 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/BrainManagerSpec.kt @@ -0,0 +1,76 @@ +package baaahs + +import baaahs.fixtures.NullTransport +import baaahs.geom.Vector3F +import baaahs.gl.override +import baaahs.glsl.LinearSurfacePixelStrategy +import baaahs.mapper.MappingResults +import baaahs.proto.BrainHelloMessage +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import mockk +import org.spekframework.spek2.Spek +import kotlin.random.Random + +object BrainManagerSpec : Spek({ + describe { + val resultsByBrainId by value { mutableMapOf() } + val resultsBySurfaceName by value { mutableMapOf() } + val mappingResults by value { FakeMappingResults(resultsByBrainId, resultsBySurfaceName) } + + val brainManager by value { + BrainManager( + mockk(), PermissiveFirmwareDaddy(), TestModel, mappingResults, + mockk(), Pinky.NetworkStats(), FakeClock(), LinearSurfacePixelStrategy(Random(1)) + ) + } + + context("#createFixtureFor") { + val brainId by value { "brain1" } + val msgSurfaceName by value { null } + val surface by value { TestModelSurface("surface1", 2, vertices = listOf( + Vector3F(1f, 1f, 1f), + Vector3F(2f, 2f, 1f), + Vector3F(1f, 2f, 2f), + Vector3F(2f, 1f, 2f) + )) } + val pixelLocations by value?> { null } + val mappingInfo by value { MappingResults.Info(surface, pixelLocations) } + val brainHelloMessage by value { BrainHelloMessage(brainId, msgSurfaceName, null, null) } + + val subject by value { brainManager.createFixtureFor(brainHelloMessage, NullTransport) } + + context("when the brain id is mapped to a model element") { + override(resultsByBrainId) { mapOf(BrainId(brainId) to mappingInfo) } + + it("should create a fixture") { + expect(subject.modelEntity).toBe(surface) + expect(subject.pixelCount).toBe(2) + expect(subject.pixelLocations).toBe(LinearSurfacePixelStrategy(Random(1)).forKnownSurface(2, surface, TestModel)) + } + } + + context("when the surface name is specified") { + override(msgSurfaceName) { "surface1" } + override(resultsBySurfaceName) { mapOf(msgSurfaceName to mappingInfo) } + + it("should create a fixture") { + expect(subject.modelEntity).toBe(surface) + expect(subject.pixelCount).toBe(2) + expect(subject.pixelLocations).toBe(LinearSurfacePixelStrategy(Random(1)).forKnownSurface(2, surface, TestModel)) + } + } + } + } +}) + +class FakeMappingResults( + resultsByBrainId: Map = mapOf(), + resultsBySurfaceName: Map = mapOf() +) : MappingResults { + val resultsByBrainId = resultsByBrainId.toMutableMap() + val resultsBySurfaceName = resultsBySurfaceName.toMutableMap() + + override fun dataFor(brainId: BrainId) = resultsByBrainId[brainId] + override fun dataFor(surfaceName: String) = resultsBySurfaceName[surfaceName] +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/ColorTest.kt b/src/commonTest/kotlin/baaahs/ColorTest.kt new file mode 100644 index 0000000000..1bf8ef56d3 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/ColorTest.kt @@ -0,0 +1,86 @@ +package baaahs; + +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test +import kotlin.test.assertEquals + +public class ColorTest { + @Test + fun testBounds() { + Color.WHITE + assertEquals(Color(255, 255, 0, 255), + Color(266, 1024, -17, 350)) + + assertEquals(Color(255, 255, 0, 255), + Color(26.6f, 10.24f, -17f, 350f)) + + assertEquals(Color(1f, 1f, 0f, 1f), + Color(26.6f, 10.24f, -17f, 350f)) + } + + @Test + fun testFromInt() { + val white = Color.from(0xfefdff) + assertEquals(listOf(254, 253, 255), listOf(white.redI, white.greenI, white.blueI)) + } + + @Test + fun testFromRGBString() { + expect(Color.from("#fefdfc")).toBe(Color.from(0xfffefdfc.toInt())) + + expect(Color.from("#edc")).toBe(Color.from(0xffeeddcc.toInt())) + } + + @Test + fun testFromARGBString() { + expect(Color.from("#fffefdfc")).toBe(Color.from(0xfffefdfc.toInt())) + expect(Color.from("#f7fefdfc")).toBe(Color.from(0xf7fefdfc.toInt())) + expect(Color.from("#00fefdfc")).toBe(Color.from(0x00fefdfc)) + + expect(Color.from("#fedc")).toBe(Color.from(0xffeeddcc.toInt())) + expect(Color.from("#7edc")).toBe(Color.from(0x77eeddcc)) + expect(Color.from("#0edc")).toBe(Color.from(0x00eeddcc)) + } + + @Test + fun testFromBytes() { + val white = Color(0xfe.toByte(), 0xfd.toByte(), 0xff.toByte()) + assertEquals(listOf(254, 253, 255), listOf(white.redI, white.greenI, white.blueI)) + } + + @Test + fun testDistanceTo() { + assertEquals(1f, Color.WHITE.distanceTo(Color.BLACK)) + assertEquals(0f, Color.WHITE.distanceTo(Color.WHITE)) + } + + @Test + fun testToHexString() { + assertEquals("#fefdff", Color.from("#fefdff").toHexString()) + assertEquals("#f7fefdff", Color.from("#f7fefdff").toHexString()) + assertEquals("#01010101", Color.from("#01010101").toHexString()) + assertEquals("#000000", Color.from("#ff000000").toHexString()) + assertEquals("#00000000", Color.from("#00000000").toHexString()) + } + + @Test + fun testWithSaturation() { + val red = Color.from("#ff0000") + assertEquals(red, red.withSaturation(1f)) + assertEquals(Color.from("#ff7f7f"), red.withSaturation(.5f)) + } + + @Test + fun testPlus() { + assertEquals(Color.YELLOW, Color.RED.plus(Color.GREEN)) + assertEquals(Color.WHITE, Color.YELLOW.plus(Color.BLUE)) + } + + @Test + fun testFade() { + assertEquals(Color.RED, Color.RED.fade(Color.GREEN, 0f)) + assertEquals(Color.GREEN, Color.RED.fade(Color.GREEN, 1f)) + assertEquals(Color.from("#7f7f00"), Color.RED.fade(Color.GREEN, 0.5f)) + } +} diff --git a/src/commonTest/kotlin/baaahs/DmxTest.kt b/src/commonTest/kotlin/baaahs/DmxTest.kt new file mode 100644 index 0000000000..910de02e50 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/DmxTest.kt @@ -0,0 +1,24 @@ +package baaahs; + +import baaahs.dmx.Shenzarpy +import baaahs.geom.Vector3F +import baaahs.sim.FakeDmxUniverse +import kotlin.math.abs +import kotlin.test.Test +import kotlin.test.assertTrue + +class DmxTest { + @Test + fun testShenzarpyPan() { + val shenzarpy = Shenzarpy("x", "x", 0, Vector3F.origin, Vector3F.origin) + val universe = FakeDmxUniverse() + val buffer = shenzarpy.newBuffer(universe) + + val original = toRadians(30f) + buffer.pan = original + + assertTrue { + abs(original - buffer.pan) < 0.01 + } + } +} diff --git a/src/commonTest/kotlin/baaahs/GadgetTest.kt b/src/commonTest/kotlin/baaahs/GadgetTest.kt new file mode 100644 index 0000000000..e45fb70da6 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/GadgetTest.kt @@ -0,0 +1,42 @@ +package baaahs + +import baaahs.sim.FakeNetwork +import ext.TestCoroutineContext +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.serialization.builtins.serializer +import kotlin.test.Test + +@InternalCoroutinesApi +class GadgetTest { + private val testCoroutineContext = TestCoroutineContext("network") + private val network = FakeNetwork(0, coroutineContext = testCoroutineContext) + private val serverLink = network.link("test") + private val clientLink = network.link("test") + + @Test + fun whenGadgetValuesChange_shouldNotifyListeners() { + val someGadget = SomeGadget(123) + + val log1 = mutableListOf() + val listener1: GadgetListener = { _ -> log1.add("changed") } + someGadget.listen(listener1) + + val log2 = mutableListOf() + val listener2: GadgetListener = { _ -> log2.add("changed") } + someGadget.listen(listener2) + + someGadget.value = 321 + log1.assertContents("changed") + log2.assertContents("changed") + + someGadget.withoutTriggering(listener1) { someGadget.value = 789 } + log1.assertEmpty() + log2.assertContents("changed") + } + + class SomeGadget(initialValue: Int) : Gadget() { + override val title: String get() = TODO("not implemented") + + var value: Int by updatable("value", initialValue, Int.serializer()) + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/MovingHeadTest.kt b/src/commonTest/kotlin/baaahs/MovingHeadTest.kt new file mode 100644 index 0000000000..1e3425e2fd --- /dev/null +++ b/src/commonTest/kotlin/baaahs/MovingHeadTest.kt @@ -0,0 +1,18 @@ +package baaahs + +import baaahs.dmx.Dmx +import kotlin.test.Test +import kotlin.test.assertTrue + +class MovingHeadTest { + val testMovingHead = TestMovingHead() + val buffer = testMovingHead.newBuffer(Dmx.Buffer(ByteArray(16), 0, 16)) + + @Test + fun floatValues() { + buffer.pan = 0.75f + buffer.tilt = 1f + assertTrue(0.75f - buffer.pan < 0.001) + assertTrue(1f - buffer.tilt < 0.001) + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/PinkySpec.kt b/src/commonTest/kotlin/baaahs/PinkySpec.kt new file mode 100644 index 0000000000..62e8935fd7 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/PinkySpec.kt @@ -0,0 +1,213 @@ +package baaahs + +import baaahs.geom.Matrix4 +import baaahs.gl.override +import baaahs.gl.render.RenderManager +import baaahs.gl.testPlugins +import baaahs.mapper.MappingSession +import baaahs.mapper.Storage +import baaahs.model.Model +import baaahs.models.SheepModel +import baaahs.net.FragmentingUdpLink +import baaahs.net.TestNetwork +import baaahs.plugin.beatlink.BeatData +import baaahs.plugin.beatlink.BeatSource +import baaahs.proto.BrainHelloMessage +import baaahs.proto.Type +import baaahs.show.SampleData +import baaahs.shows.FakeGlContext +import baaahs.sim.FakeDmxUniverse +import baaahs.sim.FakeFs +import baaahs.ui.Observable +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.coroutines.Runnable +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe +import kotlin.coroutines.CoroutineContext + +@Suppress("unused") +@InternalCoroutinesApi +object PinkySpec : Spek({ + describe("Pinky") { + val fakeGlslContext by value { FakeGlContext() } + val network by value { TestNetwork(1_000_000) } + val clientAddress by value { TestNetwork.Address("client") } + val clientPort = 1234 + + val panel17 = SheepModel.Panel("17") + val model = ModelForTest(listOf(panel17)) + + val fakeFs by value { FakeFs() } + val pinky by value { + Pinky( + model, + network, + FakeDmxUniverse(), + FakeClock(), + fakeFs, + PermissiveFirmwareDaddy(), + StubSoundAnalyzer(), + renderManager = fakeGlslContext.runInContext { RenderManager(model) { fakeGlslContext } }, + plugins = testPlugins(), + pinkyMainDispatcher = object : CoroutineDispatcher() { + override fun dispatch(context: CoroutineContext, block: Runnable) { + block.run() + } + } + ) + } + val pinkyLink by value { network.links.only() } + val fixtureManager by value { pinky.fixtureManager } + val renderTargets by value { fixtureManager.getRenderTargets_ForTestOnly() } + + val panelMappings by value { emptyList>() } + + beforeEachTest { + pinky.switchTo(SampleData.sampleShow) + + doRunBlocking { + panelMappings.forEach { (brainId, surface) -> + val surfaceData = MappingSession.SurfaceData( + brainId.uuid, surface.name, emptyList(), null, null, null + ) + val mappingSessionPath = Storage(fakeFs, testPlugins()).saveSession( + MappingSession( + 0.0, listOf(surfaceData), + Matrix4(doubleArrayOf()), null, notes = "Simulated pixels" + ) + ) + fakeFs.renameFile(mappingSessionPath, fakeFs.resolve("mapping/${model.name}/$mappingSessionPath")) + } + + pinky.launchStartupJobs() + } + } + + describe("brains reporting to Pinky") { + val brainHelloMessage by value { nuffin() } + + beforeEachTest { + pinky.receive(clientAddress, clientPort, brainHelloMessage.toBytes()) + pinky.updateFixtures() + pinky.renderAndSendNextFrame() + } + + describe("which are unmapped") { + override(brainHelloMessage) { BrainHelloMessage("brain1", null) } + + it("should notify show of anonymous surface") { + val fixture = renderTargets.keys.only() + expect(fixture.modelEntity).toBe(null) + } + + it("should send pixels but not not send mapping to the brain") { + val packetTypes = pinkyLink.packetsToSend.map { Type.get(it[FragmentingUdpLink.headerSize]) } + expect(packetTypes) + .containsExactly(Type.BRAIN_PANEL_SHADE) // Should send no mapping packet. + } + } + + context("which are mapped to surfaces") { + override(panelMappings) { listOf(BrainId("brain1") to panel17) } + + context("for which the brain provides its mapping") { + override(brainHelloMessage) { BrainHelloMessage("brain1", panel17.name) } + + it("should notify show") { + val fixture = renderTargets.keys.only() + expect(fixture.modelEntity).toBe(panel17) + expect(fixture.name).toBe(panel17.name) + } + + it("should send pixels but not mapping to the brain") { + val packetTypes = pinkyLink.packetsToSend.map { Type.get(it[FragmentingUdpLink.headerSize]) } + expect(packetTypes) + .containsExactly(Type.BRAIN_PANEL_SHADE) // Should send no mapping packet. + } + } + + context("for which Pinky has a mapping") { + override(brainHelloMessage) { BrainHelloMessage("brain1", null) } + + it("should notify show") { + val packetTypes = pinkyLink.packetsToSend.map { Type.get(it[FragmentingUdpLink.headerSize]) } + expect(packetTypes) + .containsExactly(Type.BRAIN_MAPPING,Type.BRAIN_PANEL_SHADE) // Should send a mapping packet. + } + + it("should send mapping and pixels to the brain") { + val fixture = renderTargets.keys.only() + expect(fixture.modelEntity).toBe(panel17) + } + + context("then when the brain re-sends its hello with its newfound mapping") { + it("should cause no changes") { + pinky.renderAndSendNextFrame() + + pinky.receive(clientAddress, clientPort, BrainHelloMessage("brain1", panel17.name).toBytes()) + pinky.updateFixtures() + pinky.renderAndSendNextFrame() + pinky.renderAndSendNextFrame() + expect(renderTargets.size).toBe(1) + val fixture = renderTargets.keys.only() + expect(fixture.modelEntity).toBe(panel17) + } + } + + context("in the case of a brain race condition") { + it("should notify show") { + pinky.renderAndSendNextFrame() + + // Remap to 17L... + pinky.receive(clientAddress, clientPort, BrainHelloMessage("brain1", panel17.name).toBytes()) + // ... but a packet also made it through identifying brain1 as unmapped. + pinky.receive(clientAddress, clientPort, BrainHelloMessage("brain1", null).toBytes()) + pinky.updateFixtures() + pinky.renderAndSendNextFrame() + pinky.renderAndSendNextFrame() + + // Pinky should have sent out another BrainMappingMessage message; todo: verify that! + + pinky.receive(clientAddress, clientPort, BrainHelloMessage("brain1", panel17.name).toBytes()) + pinky.updateFixtures() + pinky.renderAndSendNextFrame() + pinky.renderAndSendNextFrame() + + expect(renderTargets.size).toBe(1) + expect(renderTargets.keys.only().modelEntity).toBe(panel17) + + pinky.receive(clientAddress, clientPort, BrainHelloMessage("brain1", panel17.name).toBytes()) + pinky.updateFixtures() + pinky.renderAndSendNextFrame() + pinky.renderAndSendNextFrame() + expect(renderTargets.size).toBe(1) + val fixture = renderTargets.keys.only() + expect(fixture.modelEntity).toBe(panel17) + } + } + } + } + + + + } + } +}) + +class StubBeatSource : Observable(), BeatSource { + override fun getBeatData(): BeatData = BeatData(0.0, 0, confidence = 0f) +} + +class StubSoundAnalyzer : SoundAnalyzer { + override val frequencies = floatArrayOf() + + override fun listen(analysisListener: SoundAnalyzer.AnalysisListener) { + } + + override fun unlisten(analysisListener: SoundAnalyzer.AnalysisListener) { + } +} diff --git a/src/commonTest/kotlin/baaahs/PubSubSpec.kt b/src/commonTest/kotlin/baaahs/PubSubSpec.kt new file mode 100644 index 0000000000..a5b53362fb --- /dev/null +++ b/src/commonTest/kotlin/baaahs/PubSubSpec.kt @@ -0,0 +1,242 @@ +package baaahs + +import baaahs.sim.FakeNetwork +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import ext.Second +import ext.TestCoroutineContext +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.serialization.Serializable +import kotlinx.serialization.builtins.nullable +import kotlinx.serialization.builtins.serializer +import org.spekframework.spek2.Spek +import kotlin.test.assertEquals + +@InternalCoroutinesApi +object PubSubSpec : Spek({ + describe { + val testCoroutineContext by value { TestCoroutineContext("network") } + val network by value { FakeNetwork(0, coroutineContext = testCoroutineContext) } + + val serverNetwork by value { network.link("server") } + val server by value { PubSub.listen(serverNetwork.startHttpServer(1234), testCoroutineContext) } + val serverLog by value { mutableListOf() } + + val client1Network by value { network.link("client1") } + val client1 by value { + PubSub.Client( + client1Network, + serverNetwork.myAddress, + 1234, + CoroutineScope(testCoroutineContext) + ) + } + val client1Log by value { mutableListOf() } + + val client2Network by value { network.link("client2") } + val client2 by value { PubSub.connect(client2Network, serverNetwork.myAddress, 1234) } + val client2Log by value { mutableListOf() } + + val topic1 by value { PubSub.Topic("/one", String.serializer()) } + + beforeEachTest { + // Server needs to come up first, then client1 and client2. + server.run {} + client1.run {} + client2.run {} + } + + afterEachTest { + expect(testCoroutineContext.exceptions).isEmpty() + } + + it("should notify subscribers of changes") { + val client1TopicObserver = client1.subscribe(topic1) { client1Log.add("topic1 changed: $it") } + + val serverTopicObserver = server.publish(topic1, "value") { + serverLog.add("topic1 changed: $it") + } + + val client2TopicObserver = client2.subscribe(topic1) { client2Log.add("topic1 changed: $it") } + testCoroutineContext.runAll() + + serverLog.assertEmpty() + client1Log.assertContents("topic1 changed: value") + client2Log.assertContents("topic1 changed: value") + + serverTopicObserver.onChange("new value") + testCoroutineContext.runAll() + + serverLog.assertEmpty() + client1Log.assertContents("topic1 changed: new value") + client2Log.assertContents("topic1 changed: new value") + + client2TopicObserver.onChange("from client 2") + testCoroutineContext.runAll() + + serverLog.assertContents("topic1 changed: from client 2") + client1Log.assertContents("topic1 changed: from client 2") + client2Log.assertEmpty() + } + + it("should notify early subscribers of changes too") { + val serverTopicObserver = server.publish(topic1, "first value") { + serverLog.add("topic1 changed: $it") + } + + serverTopicObserver.onChange("second value") + + client1.subscribe(topic1) { client1Log.add("topic1 changed: $it") } + testCoroutineContext.runAll() + + serverLog.assertEmpty() + client1Log.assertContents("topic1 changed: second value") + } + + context("when a client unsubscribes") { + it("should prevent future updates and unregister from server when appropriate") { + val client1Log2 = mutableListOf() + + val serverTopicObserver = server.publish(topic1, "value") { + serverLog.add("topic1 changed: $it") + } + + val serverTopicInfo = server.getTopicInfo(topic1.name)!! + assertEquals(1, serverTopicInfo.listeners_TEST_ONLY.size) // assume + + val client1TopicObserver1 = client1.subscribe(topic1) { client1Log.add("topic1 changed1: $it") } + val client1TopicObserver2 = client1.subscribe(topic1) { client1Log2.add("topic1 changed2: $it") } + testCoroutineContext.runAll() + + client1Log.assertContents("topic1 changed1: value") + client1Log2.assertContents("topic1 changed2: value") + assertEquals(2, serverTopicInfo.listeners_TEST_ONLY.size) // sanity check + + client1TopicObserver1.unsubscribe() + serverTopicObserver.onChange("new value") + testCoroutineContext.runAll() + + client1Log.assertEmpty() + client1Log2.assertContents("topic1 changed2: new value") + assertEquals(2, serverTopicInfo.listeners_TEST_ONLY.size) + + client1TopicObserver2.unsubscribe() + serverTopicObserver.onChange("another new value") + testCoroutineContext.runAll() + + client1Log.assertEmpty() + client1Log2.assertEmpty() + assertEquals(1, serverTopicInfo.listeners_TEST_ONLY.size) + } + } + + context("before connection is made") { + it("isConnected should return false") { + expect(client1.isConnected).toBe(false) + testCoroutineContext.runAll() + expect(client1.isConnected).toBe(true) + } + } + + context("when websocket is connected") { + it("isConnected should notify listeners") { + client1.addStateChangeListener { client1Log.add("isConnected was changed to ${client1.isConnected}") } + testCoroutineContext.runAll() + client1Log.assertContents("isConnected was changed to true") + } + } + + context("when connection is reset") { + it("should notify listener of state change") { + testCoroutineContext.runAll() + expect(client1.isConnected).toBe(true) + + client1.addStateChangeListener { client1Log.add("isConnected was changed to ${client1.isConnected}") } + + // trigger a connection reset + client1Network.webSocketListeners[0].reset(client1Network.tcpConnections[0]) + + client1Log.assertContents("isConnected was changed to false") + } + + it("should attempt to reconnect every second") { + expect(client1Network.tcpConnections.size).toBe(1) + + // trigger a connection reset + client1Network.webSocketListeners[0].reset(client1Network.tcpConnections[0]) + expect(client1.isConnected).toBe(false) + + expect(client1Network.tcpConnections.size).toBe(1) + + // don't attempt a new connection until a second has passed + testCoroutineContext.triggerActions() + expect(client1Network.tcpConnections.size).toBe(1) + + testCoroutineContext.advanceTimeBy(2, Second()) + testCoroutineContext.triggerActions() + + // assert that there was a new outgoing connection + expect(client1Network.tcpConnections.size).toBe(2) + expect(client1.isConnected).toBe(true) + } + + it("should resubscribe to topics") { + val client1TopicObserver = client1.subscribe(topic1) { client1Log.add("topic1 changed: $it") } + + val serverTopicObserver = server.publish(topic1, "value") { + serverLog.add("topic1 changed: $it") + } + + expect(client1Network.tcpConnections.size).toBe(1) + testCoroutineContext.triggerActions() + client1Log.assertContents("topic1 changed: value") + + // trigger a connection reset + client1Network.webSocketListeners[0].reset(client1Network.tcpConnections[0]) + expect(client1.isConnected).toBe(false) + + expect(client1Network.tcpConnections.size).toBe(1) + + // don't attempt a new connection until a second has passed + testCoroutineContext.triggerActions() + expect(client1Network.tcpConnections.size).toBe(1) + + testCoroutineContext.advanceTimeBy(2, Second()) + testCoroutineContext.triggerActions() + + // assert that there was a new outgoing connection + expect(client1Network.tcpConnections.size).toBe(2) + expect(client1.isConnected).toBe(true) + + serverTopicObserver.onChange("new value") + testCoroutineContext.triggerActions() + client1Log.assertContents("topic1 changed: new value") + } + } + + context("with nullable class serializer") { + it("should work") { + val nullableTopic = PubSub.Topic("/x", Thing.serializer().nullable) + + val serverTopicObserver = server.publish(nullableTopic, Thing("value")) { + serverLog.add("topic1 changed: ${it?.string}") + } + + client1.subscribe(nullableTopic) { + client1Log.add("topic1 changed: ${it?.string}") + } + testCoroutineContext.runAll() + client1Log.assertContents("topic1 changed: value") + + serverTopicObserver.onChange(null) + testCoroutineContext.runAll() + client1Log.assertContents("topic1 changed: null") + } + } + } +}) + +@Serializable +data class Thing(val string: String) diff --git a/src/commonTest/kotlin/baaahs/ShowRunnerTest.kt b/src/commonTest/kotlin/baaahs/ShowRunnerTest.kt new file mode 100644 index 0000000000..8257cf5212 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/ShowRunnerTest.kt @@ -0,0 +1,287 @@ +package baaahs + +import baaahs.fixtures.* +import baaahs.gadgets.Slider +import baaahs.gl.render.RenderManager +import baaahs.gl.render.RenderTarget +import baaahs.gl.testPlugins +import baaahs.gl.testToolchain +import baaahs.mapper.Storage +import baaahs.models.SheepModel +import baaahs.net.TestNetwork +import baaahs.show.SampleData +import baaahs.shows.FakeGlContext +import baaahs.sim.FakeDmxUniverse +import baaahs.sim.FakeFs +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import ext.TestCoroutineContext +import kotlinx.coroutines.InternalCoroutinesApi +import kotlin.test.BeforeTest +import kotlin.test.Ignore +import kotlin.test.Test + +@InternalCoroutinesApi +class ShowRunnerTest { + private lateinit var testCoroutineContext: TestCoroutineContext + private val network = TestNetwork(0) + private val serverNetwork = network.link("test") + private lateinit var server: PubSub.Server + + private val fs = FakeFs() + + private lateinit var renderTargets: Map + private val surface1Messages = mutableListOf() + private val surface1Fixture = + Fixture(SheepModel.Panel("surface 1"), 1, emptyList(), PixelArrayDevice, + transport = FakeTransport { _, _ -> surface1Messages.add("frame") }) + private val surface2Messages = mutableListOf() + private val surface2Fixture = + Fixture(SheepModel.Panel("surface 2"), 1, emptyList(), PixelArrayDevice, + transport = FakeTransport { _, _ -> surface2Messages.add("frame") }) + private lateinit var fakeGlslContext: FakeGlContext + private lateinit var dmxUniverse: FakeDmxUniverse + private val dmxEvents = mutableListOf() + private val sheepModel = SheepModel().apply { surfaces = emptyList() } + private lateinit var stageManager: StageManager + private lateinit var fixtureManager: FixtureManager + + @BeforeTest + fun setUp() { + testCoroutineContext = TestCoroutineContext("network") + server = PubSub.listen(serverNetwork.startHttpServer(1234), testCoroutineContext) + fakeGlslContext = FakeGlContext() + dmxUniverse = FakeDmxUniverse() + dmxUniverse.reader(1, 1) { dmxEvents.add("dmx frame sent") } + val model = TestModel + val renderManager = RenderManager(model) { fakeGlslContext } + fixtureManager = FixtureManager(renderManager) + MovingHeadManager(fixtureManager, dmxUniverse, emptyList()) + stageManager = StageManager( + testToolchain, renderManager, server, Storage(fs, testPlugins()), fixtureManager, + FakeClock(), sheepModel, testCoroutineContext + ) + stageManager.switchTo(SampleData.sampleShow) + renderTargets = fixtureManager.getRenderTargets_ForTestOnly() + surface1Messages.clear() + surface2Messages.clear() + dmxEvents.clear() + } + + @Test @Ignore // TODO + fun whenNoKnownSurfaces_shouldStillCreateShow() { + stageManager.renderAndSendNextFrame() + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(0) + } + + @Test + fun shouldRenderShow() { + fixtureManager.fixturesChanged(listOf(surface1Fixture, surface2Fixture), emptyList()) + stageManager.renderAndSendNextFrame() + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(1) + expect(surface2Messages.size).toBe(1) + + stageManager.renderAndSendNextFrame() + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(2) + expect(surface2Messages.size).toBe(2) + + val buffer1 = surface1Messages[0] +// expect(testShow1.fakeShader) { buffer1.shader } +// expect(Color.WHITE) { buffer1.color } + + val buffer2 = surface1Messages[0] +// expect(testShow1.fakeShader) { buffer2.shader } +// expect(Color.WHITE) { (buffer2).color } + } + + @Test + fun inProcrastinationMode_whenSurfacesAreAddedOrRemoved_shouldUpdateShowAfterNextFrame() { + stageManager.renderAndSendNextFrame(false) // No surfaces so no show created, nothing rendered. + expect(renderTargets.size).toBe(0) + + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame(false) // Create a new show with one surface but don't render to it yet. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(0) + + stageManager.renderAndSendNextFrame(false) // Render and include that surface. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(1) + + fixtureManager.fixturesChanged(listOf(surface2Fixture), emptyList()) + stageManager.renderAndSendNextFrame(false) // Add another surface, but still only render to the first. + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(2) + expect(surface2Messages.size).toBe(0) + + stageManager.renderAndSendNextFrame(false) // Render to both. + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(3) + expect(surface2Messages.size).toBe(1) + + fixtureManager.fixturesChanged(emptyList(), listOf(surface1Fixture)) + stageManager.renderAndSendNextFrame(false) // Remove the first surface, but still render to both. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(2) + + stageManager.renderAndSendNextFrame(false) // Render again to the remaining surface. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(3) + } + + @Test + fun inNoProcrastinationMode_whenSurfacesAreAddedOrRemoved_shouldUpdateShowAfterNextFrame() { + stageManager.renderAndSendNextFrame() // No surfaces so no show created, nothing rendered. + expect(renderTargets.size).toBe(0) + + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Create a new show with one surface and render to it. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(1) + + stageManager.renderAndSendNextFrame() // Render again. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(2) + + fixtureManager.fixturesChanged(listOf(surface2Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Add another surface, render to both. + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(3) + expect(surface2Messages.size).toBe(1) + + stageManager.renderAndSendNextFrame() // Render again to both. + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(2) + + fixtureManager.fixturesChanged(emptyList(), listOf(surface1Fixture)) + stageManager.renderAndSendNextFrame() // Remove the first surface and render to only the second. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(3) + + stageManager.renderAndSendNextFrame() // Render another frame on the remaining surface. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(4) + } + + @Test @Ignore // all shows support surface changes. + fun forShowsThatDontSupportSurfaceChanges_whenSurfacesAreAddedOrRemoved_shouldRecreateShowAfterNextFrame() { +// renderSurfaces.supportsSurfaceChange = false + + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Render a frame. + expect(renderTargets.size).toBe(1) + expect(surface1Messages.size).toBe(1) + + fixtureManager.fixturesChanged(listOf(surface2Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Prior show renders a frame, new show is created with two surfaces. + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(2) + expect(surface2Messages.size).toBe(0) + + stageManager.renderAndSendNextFrame() // Render a frame with the new show. + expect(renderTargets.size).toBe(2) + expect(surface1Messages.size).toBe(3) + expect(surface2Messages.size).toBe(1) + + fixtureManager.fixturesChanged(emptyList(), listOf(surface1Fixture)) + stageManager.renderAndSendNextFrame() // Render another frame on both surfaces, then recreate the show with new surfaces. + expect(renderTargets.size).toBe(3) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(2) + + stageManager.renderAndSendNextFrame() // Render another frame on the remaining surface. + expect(renderTargets.size).toBe(3) + expect(surface1Messages.size).toBe(4) + expect(surface2Messages.size).toBe(3) + } + + @Test + fun forShowsThatDontSupportSurfaceChanges_whenShowIsRecreated_gadgetSettingsAreRestored() { +// renderSurfaces.supportsSurfaceChange = false + + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Create show and request gadgets. + expect(renderTargets.size).toBe(1) + + val originalSlider = stageManager.useGadget("brightnessSliderControl") + expect(originalSlider.value).toBe(1.0f) + originalSlider.value = 0.5f + + fixtureManager.fixturesChanged(listOf(surface2Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Recreate show and restore gadget state. + expect(renderTargets.size).toBe(2) + + val recreatedSlider = stageManager.useGadget("brightnessSliderControl") + expect(recreatedSlider.value).toBe(0.5f) + } + + @Test + fun forShowsThatDontSupportSurfaceChanges_whenShowIsRecreated_publishedActiveGadgetsAreUnchanged() { +// renderSurfaces.supportsSurfaceChange = false + + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Create show and request gadgets. + expect(renderTargets.size).toBe(1) + + expect(serverNetwork.packetsToSend.size).toBe(0) + + val originalSlider = stageManager.useGadget("brightnessSliderControl") + expect(originalSlider.value).toBe(1.0f) + originalSlider.value = 0.5f + + fixtureManager.fixturesChanged(listOf(surface2Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Recreate show and restore gadget state. + expect(renderTargets.size).toBe(2) + + val recreatedSlider = stageManager.useGadget("brightnessSliderControl") + expect(recreatedSlider.value).toBe(0.5f) + } + + @Test + fun shouldUpdateDmxAfterEveryFrame() { + expect(dmxEvents).isEmpty() + + stageManager.renderAndSendNextFrame() + + expect(dmxEvents).containsExactly("dmx frame sent") + } + + @Ignore + @Test + fun shouldSyncGadgetsProperly() { + TODO("write me") + } + + @Test + fun whenSurfaceIsReAddedAndNewBufferIsRegistered_shouldHaveForgottenAboutOldOne() { + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Creates show and registers a buffer for surface1. + + fixtureManager.fixturesChanged(emptyList(), listOf(surface1Fixture)) + stageManager.renderAndSendNextFrame() // Removes old buffer for surface1. + + fixtureManager.fixturesChanged(listOf(surface1Fixture), emptyList()) + stageManager.renderAndSendNextFrame() // Creates new buffer for surface1. + + stageManager.renderAndSendNextFrame() // Renders frame, expect no exceptions due to too many buffers. + } + + class FakeTransport( + override val name: String = "Fake Transport", + private val fn: (fixture: Fixture, resultViews: List) -> Unit + ) : Transport { + override fun send(fixture: Fixture, resultViews: List) { + fn(fixture, resultViews) + } + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/StageManagerSpec.kt b/src/commonTest/kotlin/baaahs/StageManagerSpec.kt new file mode 100644 index 0000000000..f1066456d1 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/StageManagerSpec.kt @@ -0,0 +1,124 @@ +package baaahs + +import baaahs.fixtures.FixtureManager +import baaahs.gl.render.RenderManager +import baaahs.gl.testPlugins +import baaahs.gl.testToolchain +import baaahs.io.FakeRemoteFsBackend +import baaahs.io.FsClientSideSerializer +import baaahs.mapper.Storage +import baaahs.model.Model +import baaahs.models.SheepModel +import baaahs.show.SampleData +import baaahs.show.mutable.MutableShow +import baaahs.shows.FakeGlContext +import baaahs.sim.FakeFs +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.verbs.expect +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.coroutines.Runnable +import org.spekframework.spek2.Spek +import kotlin.coroutines.CoroutineContext + +@InternalCoroutinesApi +object StageManagerSpec : Spek({ + describe { + val panel17 = SheepModel.Panel("17") + val model = SheepModel().apply { surfaces = listOf(panel17) } as Model + + val plugins by value { testPlugins() } + val fakeFs by value { FakeFs() } + val pubSub by value { TestPubSub() } + val fakeGlslContext by value { FakeGlContext() } + val renderManager by value { RenderManager(TestModel) { fakeGlslContext } } + val baseShow by value { SampleData.sampleShow } + + val stageManager by value { + StageManager( + testToolchain, + renderManager, + pubSub.server, + Storage(fakeFs, plugins), + FixtureManager(renderManager), + FakeClock(), + model, + object : CoroutineDispatcher() { + override fun dispatch(context: CoroutineContext, block: Runnable) { + block.run() + } + } + ) + } + val editingClient by value { pubSub.client("editingClient") } + val fsClientSideSerializer by value { + object : FsClientSideSerializer() { + override val backend = FakeRemoteFsBackend() + } + } + var editingClientShowEditorState: ShowEditorState? = null + val editingClientChannel by value { + editingClient.subscribe(ShowEditorState.createTopic(plugins, fsClientSideSerializer)) { + editingClient.log.add("update showEditorState: ${it?.show?.title}") + editingClientShowEditorState = it + } + } + + val otherClient by value { pubSub.client("otherClient") } + val otherClientChannel by value { + otherClient.subscribe(ShowEditorState.createTopic(plugins, fsClientSideSerializer)) { + println("otherClient heard from pubsub") + otherClient.log.add("update showEditorState: ${it?.show?.title}") + } + } + + beforeEachTest { + editingClientShowEditorState = null + editingClientChannel.let {} + otherClientChannel.let {} + stageManager.switchTo(baseShow, file = fakeFs.resolve("fake-file.sparkle")) + pubSub.testCoroutineContext.runAll() + } + +// afterEachTest { +// expect(emptyList()) { pubSub.testCoroutineContext.exceptions } +// } + + it("a pubsub update is received on both clients") { + expect(editingClient.log) + .containsExactly("update showEditorState: Sample Show") + expect(otherClient.log) + .containsExactly("update showEditorState: Sample Show") + } + + context("when a ShowEditorState change arrives from a client") { + val editedShow by value { MutableShow(baseShow).apply { title = "Edited show" }.getShow() } + + beforeEachTest { + editingClient.log.clear() + otherClient.log.clear() + + editingClientChannel.onChange( + ShowEditorState( + editedShow, + ShowState(emptyMap()), + isUnsaved = true, + file = editingClientShowEditorState!!.file + ) + ) + pubSub.testCoroutineContext.runAll() + } + + it("no additional pubsub updates are received by the editing client") { + expect(editingClient.log) + .isEmpty() + } + + it("a pubsub update is received by the other client") { + expect(otherClient.log) + .containsExactly("update showEditorState: Edited show") + } + } + } +}) diff --git a/src/commonTest/kotlin/baaahs/TestMovingHead.kt b/src/commonTest/kotlin/baaahs/TestMovingHead.kt new file mode 100644 index 0000000000..decc4e5ef4 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/TestMovingHead.kt @@ -0,0 +1,44 @@ +package baaahs + +import baaahs.dmx.Dmx +import baaahs.dmx.Shenzarpy +import baaahs.geom.Vector3F +import baaahs.model.MovingHead + +class TestMovingHead( + override val dmxChannelCount: Int = 10, + + override val colorModel: ColorModel = ColorModel.RGB, + override val colorWheelColors: List = emptyList(), + override val colorWheelMotorSpeed: Float = 1f, + + override val dimmerChannel: Dmx.Channel = TestChannel(5), + + override val panChannel: Dmx.Channel = TestChannel(1), + override val panFineChannel: Dmx.Channel = TestChannel(2), + override val panRange: ClosedRange = toRadians(0f)..toRadians(540f), + override val panMotorSpeed: Float = 1f, + + override val tiltChannel: Dmx.Channel = TestChannel(3), + override val tiltFineChannel: Dmx.Channel = TestChannel(4), + override val tiltRange: ClosedRange = toRadians(-110f)..toRadians(110f), + override val tiltMotorSpeed: Float = 1f, + + override val shutterChannel: Dmx.Channel = TestChannel(6) +) : MovingHead("test", "Test", 1, Vector3F.origin, Vector3F.origin) { + override fun newBuffer(dmxBuffer: Dmx.Buffer) = Buffer(dmxBuffer) + + inner class Buffer(override val dmxBuffer: Dmx.Buffer) : BaseBuffer(this) { + override var colorWheelPosition: Float + get() = colorWheel.toInt() / 128f + set(value) { colorWheel = (value * 128f).toInt().toByte() } + + private val colorWheelChannel: Dmx.Channel get() = Shenzarpy.Channel.COLOR_WHEEL + + private var colorWheel: Byte + get() = dmxBuffer[colorWheelChannel] + set(value) { dmxBuffer[colorWheelChannel] = value } + } + + class TestChannel(override val offset: Int) : Dmx.Channel +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/TestPubSub.kt b/src/commonTest/kotlin/baaahs/TestPubSub.kt new file mode 100644 index 0000000000..c946ed8f01 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/TestPubSub.kt @@ -0,0 +1,23 @@ +package baaahs + +import baaahs.sim.FakeNetwork +import ext.TestCoroutineContext +import kotlinx.coroutines.InternalCoroutinesApi + +@InternalCoroutinesApi +class TestPubSub( + val testCoroutineContext: TestCoroutineContext = TestCoroutineContext("network"), + val network: FakeNetwork = FakeNetwork(0, testCoroutineContext) +) : PubSub() { + val serverNetwork = network.link("server") + val server = listen(serverNetwork.startHttpServer(1234), testCoroutineContext) + val serverLog = mutableListOf() + + fun client(clientName: String): TestClient = TestClient(clientName) + + inner class TestClient( + val clientName: String + ) : Client(network.link(clientName), serverNetwork.myAddress, 1234) { + val log = mutableListOf() + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/TestUtil.kt b/src/commonTest/kotlin/baaahs/TestUtil.kt new file mode 100644 index 0000000000..1364453f52 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/TestUtil.kt @@ -0,0 +1,166 @@ +package baaahs + +import baaahs.fixtures.* +import baaahs.geom.Vector3F +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.openShader +import baaahs.gl.patch.ProgramLinker +import baaahs.gl.patch.ProgramNode +import baaahs.gl.render.ModelRenderEngine +import baaahs.gl.render.RenderTarget +import baaahs.gl.testToolchain +import baaahs.model.Model +import baaahs.model.MovingHead +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.show.live.LinkedShaderInstance +import baaahs.shows.FakeGlContext +import baaahs.shows.FakeShowPlayer +import baaahs.util.Clock +import baaahs.util.Time +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.verbs.expect +import ch.tutteli.atrium.creating.Expect +import ch.tutteli.atrium.logic._logicAppend +import ch.tutteli.atrium.logic.notToBe +import ch.tutteli.atrium.logic.toBe +import kotlinx.serialization.KSerializer +import kotlinx.serialization.json.Json +import org.spekframework.spek2.dsl.GroupBody +import org.spekframework.spek2.dsl.Skip +import org.spekframework.spek2.meta.* +import org.spekframework.spek2.style.specification.Suite +import org.spekframework.spek2.style.specification.describe +import kotlin.reflect.KFunction +import kotlin.reflect.KProperty +import kotlin.test.assertEquals + +@Suppress("UNCHECKED_CAST") +fun nuffin(): T = null as T + +fun MutableList.assertEmpty() { + expect(this).isEmpty() + this.clear() +} + +fun MutableList.assertContents(s: String) { + expect(this).containsExactly(s) + this.clear() +} + +var json = Json { serializersModule = Gadget.serialModule } + +fun serializationRoundTrip(serializer: KSerializer, obj: T): T { + val jsonString = json.encodeToString(serializer, obj) + return json.decodeFromString(serializer, jsonString) +} + +fun toBeSpecified(): T = error("override me!") + +class FakeClock(var time: Time = 0.0) : Clock { + override fun now(): Time = time +} + +class FakeModelEntity( + override val name: String, + override val deviceType: DeviceType = PixelArrayDevice, + override val description: String = name +) : Model.Entity + +class TestModelSurface( + name: String, + expectedPixelCount: Int? = 1, + private val vertices: Collection = emptyList() +) : Model.Surface(name, name, PixelArrayDevice, expectedPixelCount, emptyList(), emptyList()) { + override fun allVertices(): Collection = vertices +} + +fun fakeModel(entities: List) = ModelForTest(entities) + +object TestModel : ModelForTest(listOf(TestModelSurface("Panel"))) + +open class ModelForTest(private val entities: List) : Model() { + override val name: String = "Test Model" + override val movingHeads: List get() = entities.filterIsInstance() + override val allSurfaces: List get() = entities.filterIsInstance() + override val allEntities: List get() = entities + override val geomVertices: List = emptyList() + + override val center: Vector3F + get() = Vector3F(.5f, .5f, .5f) + override val extents: Vector3F + get() = Vector3F(1f, 1f, 1f) +} + +class TestRenderContext( + vararg val modelEntities: Model.Entity = arrayOf(FakeModelEntity("device1")) +) { + val model = fakeModel(modelEntities.toList()) + val deviceType = modelEntities.map { it.deviceType }.distinct().only("device type") + val gl = FakeGlContext() + val renderEngine = ModelRenderEngine(gl, model, deviceType, minTextureWidth = 1) + val showPlayer = FakeShowPlayer() + val renderTargets = mutableListOf() + + fun createProgram(shaderSrc: String, incomingLinks: Map): GlslProgram { + val openShader = testToolchain.openShader(Shader("Title", shaderSrc)) + val liveShaderInstance = LinkedShaderInstance(openShader, incomingLinks, ShaderChannel.Main, 0f) + val linkedPatch = ProgramLinker(liveShaderInstance).buildLinkedPatch() + return renderEngine.compile(linkedPatch) { id, dataSource -> dataSource.createFeed(showPlayer, id) } + } + + fun addFixtures() { + renderTargets.addAll( + modelEntities.map { entity -> + renderEngine.addFixture(Fixture(entity, 1, emptyList(), deviceType, transport = NullTransport)) + } + ) + } + + fun applyProgram(program: GlslProgram) { + renderEngine.setRenderPlan( + DeviceTypeRenderPlan( + listOf(ProgramRenderPlan(program, renderTargets)) + ) + ) + } +} + +expect fun assumeTrue(boolean: Boolean) + +@Synonym(SynonymType.GROUP) +@Descriptions(Description(DescriptionLocation.VALUE_PARAMETER, 0)) +inline fun GroupBody.describe(skip: Skip = Skip.No, noinline body: Suite.() -> Unit) { + describe(T::class.toString(), skip, body) +} + +@Synonym(SynonymType.GROUP) +@Descriptions(Description(DescriptionLocation.VALUE_PARAMETER, 0)) +fun GroupBody.describe(fn: KFunction<*>, skip: Skip = Skip.No, body: Suite.() -> Unit) { + describe(fn.toString(), skip, body) +} + +@Synonym(SynonymType.GROUP) +@Descriptions(Description(DescriptionLocation.VALUE_PARAMETER, 0)) +fun GroupBody.describe(prop: KProperty<*>, skip: Skip = Skip.No, body: Suite.() -> Unit) { + describe(prop.toString(), skip, body) +} + +fun expectEmptySet(block: () -> Set<*>) { + val collection = block() + assertEquals(0, collection.size, "Expected 0 items but have: $collection") +} + +fun expectEmptyList(block: () -> List<*>) { + val collection = block() + assertEquals(0, collection.size, "Expected 0 items but have: $collection") +} + +fun expectEmptyMap(block: () -> Map<*, *>) { + val collection = block() + assertEquals(0, collection.size, "Expected 0 items but have: ${collection.keys}") +} + +fun Expect.toEqual(expected: T): Expect = _logicAppend { toBe(expected) } +fun Expect.toNotEqual(expected: T): Expect = _logicAppend { notToBe(expected) } diff --git a/src/commonTest/kotlin/baaahs/app/ui/editor/EditableManagerSpec.kt b/src/commonTest/kotlin/baaahs/app/ui/editor/EditableManagerSpec.kt new file mode 100644 index 0000000000..4b42fbb290 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/app/ui/editor/EditableManagerSpec.kt @@ -0,0 +1,211 @@ +package baaahs.app.ui.editor + +import baaahs.app.ui.AddButtonToButtonGroupEditIntent +import baaahs.app.ui.ControlEditIntent +import baaahs.app.ui.EditIntent +import baaahs.app.ui.ShowEditIntent +import baaahs.describe +import baaahs.gl.override +import baaahs.gl.testToolchain +import baaahs.show.SampleData +import baaahs.show.Show +import baaahs.show.mutable.MutableButtonControl +import baaahs.show.mutable.MutableButtonGroupControl +import baaahs.show.mutable.MutablePatchHolder +import baaahs.show.mutable.MutableShow +import baaahs.ui.addObserver +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import kotlin.test.assertSame +import kotlin.test.assertTrue + +object EditableManagerSpec : Spek({ + describe { + val showUpdates by value { arrayListOf() } + val editableManager by value { + EditableManager { showUpdates.add(it) } + } + val facadeUpdates by value { arrayListOf() } + + beforeEachTest { + editableManager.addObserver { facadeUpdates.add("updated") } + } + + context("when there's no active session") { + it("isEditing() is false") { + expect(editableManager.isEditing()).toBe(false) + } + + it("editorPanels is empty") { + expect(editableManager.editorPanels).isEmpty() + } + } + + context("when there's an active session") { + val baseShow by value { SampleData.sampleShow } + val editIntent by value { ShowEditIntent() } + val session: EditableManager.Session by value { editableManager.session!! } + + beforeEachTest { + editableManager.openEditor(baseShow, editIntent, testToolchain) + } + + it("isEditing() is true") { + expect(editableManager.isEditing()).toBe(true) + } + + it("editorPanels comes from the show") { + expect(editableManager.editorPanels.map { it.title }) + .toBe(arrayListOf("Properties", "Patches")) + } + + it("selectedPanel defaults to the first") { + expect(editableManager.selectedPanel?.title).toBe("Properties") + } + + it("creates a MutableShow") { + expect(editableManager.session!!.mutableShow.getShow()).toBe(baseShow) + } + + it("finds the relevant MutableEditable") { + assertSame(session.mutableShow, session.mutableEditable) + } + + it("pushes it onto the undo stack") { + assertSame(baseShow, editableManager.undoStack.stack.first().show) + } + + it("is not modified") { + expect(editableManager.isModified()).toBe(false) + } + + context("when a change has been made to the editable") { + beforeEachTest { + (session.mutableEditable as MutablePatchHolder).title = "different title" + editableManager.onChange() + } + + it("pushes the changed show onto the undo stack") { + expect(editableManager.undoStack.stack.map { it.show.title }) + .containsExactly("Sample Show", "different title") + } + + it("is modified") { + expect(editableManager.isModified()).toBe(true) + } + + context("when changes are applied") { + var priorMutableShow: MutableShow? = null + + beforeEachTest { + priorMutableShow = session.mutableShow + editableManager.applyChanges() + } + + it("calls onApply callback with new show") { + expect(showUpdates.map { it.title }).containsExactly("different title") + } + + it("still has the same undo stack") { + expect(editableManager.undoStack.stack.map { it.show.title }) + .containsExactly("Sample Show","different title") + } + + it("is not modified") { + expect(editableManager.isModified()).toBe(false) + } + + it("has a different MutableShow") { + assertTrue { priorMutableShow !== editableManager.session!!.mutableShow } + } + + context("and user clicks Undo") { + beforeEachTest { + editableManager.undo() + } + + it("is modified") { + expect(editableManager.isModified()).toBe(true) + } + + context("and user clicks Redo") { + beforeEachTest { + editableManager.redo() + } + + it("is not modified") { + expect(editableManager.isModified()).toBe(false) + } + } + } + } + } + + context("when the EditIntent creates a new object") { + val baseButtonGroupId by value { baseShow.findControlIdByTitle("Scenes") } + override(editIntent) { AddButtonToButtonGroupEditIntent(baseButtonGroupId) } + val mutableButtonGroup by value { + session.mutableShow.findControl(baseButtonGroupId) as MutableButtonGroupControl + } + val mutableButton by value { session.mutableEditable as MutableButtonControl } + + it("creates a new empty button") { + expect(mutableButton.title).toBe("New Button") + } + + it("adds the new button to the MutableButtonGroup") { + expect(mutableButtonGroup.buttons.map { it.title }) + .containsExactly("Pleistocene","Holocene","New Button") + } + + it("returns the new button as the MutableEditable") { + expect(session.mutableEditable).toBe(mutableButtonGroup.buttons.last()) + } + + it("is modified because a button has been added to the button group") { + expect(editableManager.isModified()).toBe(true) + } + + context("when a change has been made to the editable") { + beforeEachTest { + mutableButton.title = "My new button" + editableManager.onChange() + } + + it("pushes the changed show with the same edit intent onto the undo stack") { + expect(editableManager.undoStack.stack.map { it.editIntent }) + .containsExactly(editIntent,editIntent) + } + + context("when changes are applied") { + beforeEachTest { + editableManager.applyChanges() + } + val newShow by value { showUpdates.last() } + val savedButtonId by value { newShow.findControlIdByTitle("My new button") } + + it("still has the same undo stack") { + expect(editableManager.undoStack.stack.map { it.editIntent }) + .containsExactly(editIntent,editIntent) + } + + it("is not modified") { + expect(editableManager.isModified()).toBe(false) + } + + it("has a new EditIntent which modifies the now-existing button") { + val newEditIntent = editableManager.session!!.editIntent + expect(newEditIntent).toBe(ControlEditIntent(savedButtonId)) + } + } + } + } + } + } +}) + +private fun Show.findControlIdByTitle(title: String) = + controls.entries.find { (_, v) -> v.title == title }!!.key \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/app/ui/editor/EditableSpec.kt b/src/commonTest/kotlin/baaahs/app/ui/editor/EditableSpec.kt new file mode 100644 index 0000000000..25b2721470 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/app/ui/editor/EditableSpec.kt @@ -0,0 +1,44 @@ +package baaahs.app.ui.editor + +import baaahs.app.ui.ControlEditIntent +import baaahs.describe +import baaahs.gl.testToolchain +import baaahs.show.mutable.MutableButtonControl +import baaahs.show.mutable.MutableShow +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object EditableSpec : Spek({ + describe { + val baseShow by value { + MutableShow("test show") { + addButton("main", "main button") { } + }.getShow() + + .also { println("it = ${it}") } + } + val editIntent by value { ControlEditIntent("mainButtonButton") } + val editableManager by value { + EditableManager { } + .apply { openEditor(baseShow, editIntent, testToolchain) } + } + val mutableButton by value { + editableManager.session!!.mutableEditable as MutableButtonControl + } + + context("when the id of its control changes") { + beforeEachTest { + mutableButton.title = "new title for button" + editableManager.onChange() + editableManager.undo() + editableManager.redo() + } + + it("provides an appropriate refreshed edit intent for the undo stack") { + val newEditIntent = (editableManager.session!!.editIntent as ControlEditIntent) + expect(newEditIntent.controlId).toBe("newTitleForButtonButton") + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gadgets/ColorPickerTest.kt b/src/commonTest/kotlin/baaahs/gadgets/ColorPickerTest.kt new file mode 100644 index 0000000000..4049b1bf39 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gadgets/ColorPickerTest.kt @@ -0,0 +1,35 @@ +package baaahs.gadgets + +import baaahs.Color +import baaahs.serializationRoundTrip +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotEquals + +class ColorPickerTest { + @Test + fun testColorPickerGadgetSerialization_stateShouldNotBeSent() { + val slider = ColorPicker("name", Color(123456)) + slider.color = Color(654321) + + val otherColorPicker = serializationRoundTrip(ColorPicker.serializer(), slider) + expect(otherColorPicker.title).toBe("name") + expect(otherColorPicker.color).toBe(Color(123456)) + + otherColorPicker.state.putAll(slider.state) + expect(otherColorPicker.color).toBe(Color(654321)) + } + + @Test + fun testEquality() { + val exemplar = ColorPicker("A", Color(123456)) + assertEquals(exemplar, ColorPicker("A", Color(123456))) + assertNotEquals(exemplar, ColorPicker("B", Color(123456))) + assertNotEquals(exemplar, ColorPicker("A", Color(654321))) + + // Gadgets' current values don't affect their equality. + assertEquals(exemplar, ColorPicker("A", Color(123456)).apply { color = Color(654321) }) + } +} diff --git a/src/commonTest/kotlin/baaahs/gadgets/PalettePickerTest.kt b/src/commonTest/kotlin/baaahs/gadgets/PalettePickerTest.kt new file mode 100644 index 0000000000..5b91f91bc0 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gadgets/PalettePickerTest.kt @@ -0,0 +1,39 @@ +package baaahs.gadgets + +import baaahs.Color +import baaahs.serializationRoundTrip +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotEquals + +class PalettePickerTest { + @Test + fun testPalettePickerGadgetSerialization_stateShouldNotBeSent() { + val palettePicker = PalettePicker("name", listOf(Color(123456))) + palettePicker.colors = listOf(Color(654321), Color(234156)) + + val otherPalettePicker = serializationRoundTrip(PalettePicker.serializer(), palettePicker) + expect(otherPalettePicker.title).toBe("name") + expect(otherPalettePicker.colors).containsExactly(Color(123456)) + + otherPalettePicker.state.putAll(palettePicker.state) + expect(otherPalettePicker.colors).containsExactly(Color(654321),Color(234156)) + } + + @Test + fun testEquality() { + val colorSetA = listOf(Color(123456), Color(654321)) + + val exemplar = PalettePicker("A", colorSetA) + assertEquals(exemplar, PalettePicker("A", colorSetA)) + assertNotEquals(exemplar, PalettePicker("B", colorSetA)) + assertNotEquals(exemplar, PalettePicker("A", listOf(Color(654321)))) + assertNotEquals(exemplar, PalettePicker("A", listOf(Color(654321), Color(123456)))) + + // Gadgets' current values don't affect their equality. + assertEquals(exemplar, PalettePicker("A", colorSetA).apply { colors = listOf(Color(654321)) }) + } +} diff --git a/src/commonTest/kotlin/baaahs/gadgets/SliderTest.kt b/src/commonTest/kotlin/baaahs/gadgets/SliderTest.kt new file mode 100644 index 0000000000..7c28979837 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gadgets/SliderTest.kt @@ -0,0 +1,34 @@ +package baaahs.gadgets + +import baaahs.serializationRoundTrip +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotEquals + +class SliderTest { + @Test + fun testSliderGadgetSerialization_stateShouldNotBeSent() { + val slider = Slider("name", .25f) + slider.value = .75f + + val otherSlider = serializationRoundTrip(Slider.serializer(), slider) + expect(otherSlider.title).toBe("name") + expect(otherSlider.value).toBe(.25f) + + otherSlider.state.putAll(slider.state) + expect(otherSlider.value).toBe(.75f) + } + + @Test + fun testEquality() { + val exemplar = Slider("A", .25f) + assertEquals(exemplar, Slider("A", .25f)) + assertNotEquals(exemplar, Slider("B", .25f)) + assertNotEquals(exemplar, Slider("A", .75f)) + + // Gadgets' current values don't affect their equality. + assertEquals(exemplar, Slider("A", .25f).apply { value = .75f }) + } +} diff --git a/src/commonTest/kotlin/baaahs/gl/CachingToolchainSpec.kt b/src/commonTest/kotlin/baaahs/gl/CachingToolchainSpec.kt new file mode 100644 index 0000000000..43037b419a --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/CachingToolchainSpec.kt @@ -0,0 +1,46 @@ +package baaahs.gl + +import baaahs.describe +import baaahs.show.Shader +import ch.tutteli.atrium.api.fluent.en_GB.isNotSameAs +import ch.tutteli.atrium.api.fluent.en_GB.isSameAs +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object CachingToolchainSpec : Spek({ + describe { + val cache1 by value { CachingToolchain(testToolchain) } + val someShader by value { + Shader("Some Shader", "void main() { ... }") + } + + it("sanity check that the root toolchain doesn't cache") { + val analysis1 = testToolchain.analyze(someShader) + val analysis2 = testToolchain.analyze(someShader) + expect(analysis1).isNotSameAs(analysis2) + } + + it("caches Shader -> ShaderAnalysis") { + val analysis1 = cache1.analyze(someShader) + val analysis2 = cache1.analyze(someShader) + expect(analysis1).isSameAs(analysis2) + } + + context("when there's another layer of caching") { + val cache2 by value { CachingToolchain(cache1) } + + it("caches Shader -> ShaderAnalysis") { + val analysis1 = cache1.analyze(someShader) + val analysis2 = cache2.analyze(someShader) + expect(analysis1).isSameAs(analysis2) + } + + it("caches at the outermost layer only") { + val analysis2 = cache2.analyze(someShader) + val analysis1 = cache1.analyze(someShader) + expect(analysis1).isNotSameAs(analysis2) + } + + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/PreviewShaderBuilderSpec.kt b/src/commonTest/kotlin/baaahs/gl/PreviewShaderBuilderSpec.kt new file mode 100644 index 0000000000..04dc9acf38 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/PreviewShaderBuilderSpec.kt @@ -0,0 +1,117 @@ +package baaahs.gl + +import baaahs.describe +import baaahs.gadgets.Slider +import baaahs.gl.preview.PreviewShaderBuilder +import baaahs.gl.preview.ShaderBuilder +import baaahs.gl.render.PreviewRenderEngine +import baaahs.glsl.Shaders +import baaahs.model.ModelInfo +import baaahs.show.Shader +import baaahs.shows.FakeGlContext +import baaahs.toNotEqual +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import ext.TestCoroutineContext +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.InternalCoroutinesApi +import org.spekframework.spek2.Spek +import kotlin.test.assertNotNull + +@InternalCoroutinesApi +object PreviewShaderBuilderSpec : Spek({ + describe { + val shader by value { Shaders.checkerboard } + val testCoroutineContext by value { TestCoroutineContext("global") } + val previewShaderBuilder by value { + PreviewShaderBuilder(shader, testToolchain, ModelInfo.Empty, CoroutineScope(testCoroutineContext)) + } + val renderEngine by value { PreviewRenderEngine(FakeGlContext(), 100, 100) } + + it("is in Unbuilt state") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Unbuilt) + } + + context("when startBuilding() is called") { + beforeEachTest { + previewShaderBuilder.startBuilding() + } + + it("is in Analyzing state") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Analyzing) + } + + context("after idle") { + beforeEachTest { testCoroutineContext.processOneEvent() } + + it("is in Linking state") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Linking) + expect(previewShaderBuilder.openShader).toNotEqual(null) + } + + context("after idle") { + beforeEachTest { testCoroutineContext.runAll() } + + it("is in Linked state") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Linked) + } + + it("has a previewPatch") { + assertNotNull(previewShaderBuilder.previewPatch) + } + + it("has a linkedPatch") { + assertNotNull(previewShaderBuilder.linkedPatch) + } + + it("has no gadgets yet") { + expect(previewShaderBuilder.gadgets).isEmpty() + } + + context("when there's a problem parsing hints") { + override(shader) { + Shader( + "Shader", + /**language=glsl*/ + """ + uniform float foo; // @@something.bad + vec4 main(vec4 inColor) { + return inColor; + } + """.trimIndent() + ) + } + + it("should not result in a build error") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Linked) + expect(previewShaderBuilder.openShader!!.errors).isEmpty() + } + } + + context("when startCompile() is called") { + beforeEachTest { previewShaderBuilder.startCompile(renderEngine) } + + it("is in Compiling state") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Compiling) + } + + context("after idle") { + beforeEachTest { testCoroutineContext.runAll() } + + it("is in Success state") { + expect(previewShaderBuilder.state).toBe(ShaderBuilder.State.Success) + } + + it("has gadgets") { + expect(previewShaderBuilder.gadgets.map { it.gadget }) + .containsExactly(Slider("Checkerboard Size", .1f, .001f, 1f)) + } + } + } + } + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/TestUtil.kt b/src/commonTest/kotlin/baaahs/gl/TestUtil.kt new file mode 100644 index 0000000000..25d9e24b2a --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/TestUtil.kt @@ -0,0 +1,101 @@ +package baaahs.gl + +import baaahs.FakeClock +import baaahs.fixtures.DeviceTypeRenderPlan +import baaahs.fixtures.ProgramRenderPlan +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.render.RenderTarget +import baaahs.plugin.PluginContext +import baaahs.plugin.Plugins +import baaahs.show.mutable.MutableShaderInstance +import baaahs.util.Clock +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.dsl.LifecycleAware +import org.spekframework.spek2.dsl.Skip +import org.spekframework.spek2.meta.* +import org.spekframework.spek2.style.specification.Suite +import kotlin.test.assertEquals + +fun testPlugins(clock: Clock = FakeClock(0.0)) = + Plugins.safe(PluginContext(clock)) + +fun LifecycleAware.override(letValue: T, factory: () -> T) { + value(letValue, factory) +} + +fun String.esc() = replace("\n", "\\n") + +fun GlslCode.GlslStatement.esc(lineNumbers: Boolean): String { + val buf = StringBuilder() + buf.append(fullText.trim().esc()) + if (comments.isNotEmpty()) + buf.append(" // ${comments.joinToString(" ") { it.trim().esc() }}") + if (lineNumbers) + buf.append(" # $lineNumber") + return buf.toString() +} + +fun renderPlanFor( + glslProgram: GlslProgram, + vararg renderTargets: RenderTarget +) = DeviceTypeRenderPlan(listOf(ProgramRenderPlan(glslProgram, renderTargets.toList()))) + +fun expectStatements( + expected: List, + actual: () -> List, + checkLineNumbers: Boolean = false +) { + assertEquals( + expected.joinToString("\n") { it.esc(checkLineNumbers) }, + actual().joinToString("\n") { it.esc(checkLineNumbers) } + ) +} + +fun expects(expected: Collection, block: () -> Collection) { + val actual = block() + fun T.prettier() = + if (this is MutableShaderInstance) { + "MutableShaderInstance(\n" + + " mutableShader=$mutableShader\n" + + " incomingLinks=\n" + + "${incomingLinks.prettier(" ")}\n" + + " shaderChannel=$shaderChannel\n" + + " priority=$priority\n" + + ")" + } else this.toString() + + if (actual != expected) + assertEquals( + expected.joinToString("\n") { it.prettier() }, + actual.joinToString("\n") { it.prettier() } + ) +} + +fun Map<*, *>.prettier(pfx: String = "") = + entries.sortedBy { (k, _) -> k.toString() }.joinToString("\n") { (k, v) -> "$pfx$k: $v" } + +fun expects(expected: Map, block: () -> Map) { + val actual = block() + if (actual != expected) + assertEquals(expected.prettier(), actual.prettier()) +} + +@Synonym(SynonymType.TEST) +@Descriptions(Description(DescriptionLocation.VALUE_PARAMETER, 0)) +fun Suite.expectValue(expected: T, skip: Skip = Skip.No, actual: () -> T) { + delegate.test("should equal", skip, delegate.defaultTimeout) { + expect(actual()).toBe(expected) + } +} + +fun undefined(): T = throw NotImplementedError("value not given") + + +// This is because atrium doesn't trigger IntelliJ's nice diff compare popup. :-( +internal fun kexpect(actual: T): ToBe = ToBe(actual) + +internal class ToBe(private val actual: T) { + fun toBe(expected: T) = assertEquals(expected, actual) +} diff --git a/src/commonTest/kotlin/baaahs/gl/Toolchain.kt b/src/commonTest/kotlin/baaahs/gl/Toolchain.kt new file mode 100644 index 0000000000..072932b0ff --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/Toolchain.kt @@ -0,0 +1,3 @@ +package baaahs.gl + +val testToolchain = RootToolchain(testPlugins()) diff --git a/src/commonTest/kotlin/baaahs/gl/ToolchainSpec.kt b/src/commonTest/kotlin/baaahs/gl/ToolchainSpec.kt new file mode 100644 index 0000000000..caab8ac70a --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/ToolchainSpec.kt @@ -0,0 +1,34 @@ +package baaahs.gl + +import baaahs.describe +import baaahs.only +import baaahs.show.Shader +import ch.tutteli.atrium.api.fluent.en_GB.startsWith +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object ToolchainSpec : Spek({ + describe { + val toolchain by value { RootToolchain(testPlugins()) } + context("analyze") { + val shaderText by value { + Shader( + "Title", + """ + struct Whatever { + float a; + float b; + } + void main() { ... }; + """.trimIndent() + ) + } + + it("catches analyzer exceptions") { + val analysis = toolchain.analyze(shaderText) + expect(analysis.errors.only().message) + .startsWith("huh? couldn't find a struct") + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/glsl/GlslAnalyzerSpec.kt b/src/commonTest/kotlin/baaahs/gl/glsl/GlslAnalyzerSpec.kt new file mode 100644 index 0000000000..3a7f363a65 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/glsl/GlslAnalyzerSpec.kt @@ -0,0 +1,200 @@ +package baaahs.gl.glsl + +import baaahs.describe +import baaahs.gl.expects +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.dialect.GenericShaderDialect +import baaahs.gl.shader.dialect.ShaderToyShaderDialect +import baaahs.gl.testPlugins +import baaahs.gl.testToolchain +import baaahs.glsl.Shaders +import baaahs.toBeSpecified +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object GlslAnalyzerSpec : Spek({ + describe { + context("given some GLSL code") { + val glslParser by value { GlslParser() } + val glslAnalyzer by value { GlslAnalyzer(testPlugins()) } + val shaderText by value { toBeSpecified() } + + context("#detectDialect") { + override(shaderText) { "void main() {}" } + + val dialect by value { glslAnalyzer.detectDialect(glslParser.parse(shaderText)) } + + it("is generic") { + expect(dialect).toBe(GenericShaderDialect) + } + + context("for shaders having a mainImage function") { + override(shaderText) { "void mainImage() {}" } + + it("is ShaderToy") { + expect(dialect).toBe(ShaderToyShaderDialect) + } + } + } + + context("#validate") { + val validationResult by value { glslAnalyzer.analyze(glslParser.parse(shaderText)) } + + context("when there are problems in the shader") { + override(shaderText) { + """ + uniform float foo; // @type unknown-type + vec4 main(vec4 inColor) { + return inColor; + } + """.trimIndent() + } + + it("should report them in the ValidationResult") { + expect(validationResult.errors.toSet()).containsExactly( + GlslError("Input port \"foo\" content type is \"unknown/float\"", 1), + GlslError("Input port \"inColor\" content type is \"unknown/vec4\"", 2), + GlslError("Output port \"[return value]\" content type is \"unknown/vec4\"", 2) + ) + } + } + } + + context("#import") { + val importedShader by value { testToolchain.import(shaderText) } + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + void main() { } + """.trimIndent() + } + + it("finds the title") { + expect(importedShader.title).toBe("This Shader's Name") + } + } + + context("#openShader") { + val openShader by value { glslAnalyzer.openShader(testToolchain.parse(shaderText)) } + + context("with generic shader") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float time; + uniform vec2 resolution; + uniform float blueness; + + void main( void ) { + vec2 uv = gl_FragCoord.xy / resolution.xy; + gl_FragColor = vec4(uv.xy, 0., 1.); + } + """.trimIndent() + } + + it("finds the entry point function") { + expect(openShader.entryPoint.name).toBe("main") + } + + it("creates inputs for implicit uniforms") { + expect(openShader.inputPorts.map { it.copy(glslArgSite = null) }) + .containsExactly( + InputPort( + "gl_FragCoord", + ContentType.UvCoordinate, + GlslType.Vec4, + "Coordinates", + isImplicit = true + ), + InputPort("time", ContentType.Time, GlslType.Float, "Time"), + InputPort("resolution", ContentType.Resolution, GlslType.Vec2, "Resolution"), + InputPort("blueness", ContentType.unknown(GlslType.Float), GlslType.Float, "Blueness") + ) + } + } + + context("with shadertoy shader") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff + + uniform float blueness; + + void mainImage( out vec4 fragColor, in vec2 fragCoord ) + { + vec2 uv = fragCoord.xy / iResolution.xy; + fragColor = vec4(uv * iTime, -uv.x * blueness, 1.0); + } + """.trimIndent() + } + + it("identifies mainImage() as the entry point") { + expect(openShader.entryPoint.name).toBe("mainImage") + } + + it("creates inputs for implicit uniforms") { + expects( + listOf( + InputPort("blueness", ContentType.unknown(GlslType.Float), GlslType.Float, "Blueness"), + InputPort("fragCoord", ContentType.UvCoordinate, GlslType.Vec2, "U/V Coordinates"), + InputPort( + "iResolution", + ContentType.Resolution, + GlslType.Vec3, + "Resolution", + isImplicit = true + ), + InputPort("iTime", ContentType.Time, GlslType.Float, "Time", isImplicit = true) + ) + ) { openShader.inputPorts.map { it.copy(glslArgSite = null) } } + } + } + + context("with U/V translation shader") { + override(shaderText) { Shaders.cylindricalProjection.src } + + it("identifies mainImage() as the entry point") { + expect(openShader.entryPoint.name).toBe("main") + } + + it("creates inputs for implicit uniforms") { + expects( + listOf( + InputPort( + "modelInfo", ContentType.ModelInfo, + ContentType.ModelInfo.glslType, "Model Info" + ), + InputPort( + "pixelLocation", ContentType.XyzCoordinate, + GlslType.Vec3, "Pixel Location" + ), + ) + ) { openShader.inputPorts.map { it.copy(glslArgSite = null) } } + } + } + + context("with invalid shader") { + override(shaderText) { "" } + + it("provides a fake entry point function") { + expect(openShader.entryPoint.name) + .toEqual("invalid") + } + } + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/glsl/GlslCodeSpec.kt b/src/commonTest/kotlin/baaahs/gl/glsl/GlslCodeSpec.kt new file mode 100644 index 0000000000..4e5b9d8451 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/glsl/GlslCodeSpec.kt @@ -0,0 +1,308 @@ +package baaahs.gl.glsl + +import baaahs.gl.expectValue +import baaahs.gl.override +import baaahs.gl.undefined +import baaahs.only +import baaahs.plugin.PluginRef +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.put +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +object GlslCodeSpec : Spek({ + describe("statements") { + val text by value { undefined() } + val statements by value { GlslParser().findStatements(text) } + val statement by value { statements.only("statement") } + + context("variables") { + val variable by value { (statement as GlslCode.GlslVar).copy(lineNumber = null) } + + context("unqualified") { + override(text) { "int i;" } + expectValue(GlslCode.GlslVar("i", GlslType.Int, "int i;")) { variable } + } + + context("const") { + override(text) { "const int i = 3;" } + expectValue(GlslCode.GlslVar("i", GlslType.Int, "const int i = 3;", isConst = true)) { variable } + } + + context("uniform") { + override(text) { "uniform vec3 vector;" } + expectValue( + GlslCode.GlslVar( + "vector", + GlslType.Vec3, + "uniform vec3 vector;", + isUniform = true + ) + ) { variable } + } + + // For now, `varying` on a global var indicates that it's a streamed content type. Maybe worth reconsidering. + context("varying") { + override(text) { "varying vec4 otherColor;" } + expectValue( + GlslCode.GlslVar( + "otherColor", + GlslType.Vec4, + "varying vec4 otherColor;", + isVarying = true + ) + ) { variable } + } + + context("tag hints") { + override(text) { "varying vec4 otherColor; // @type color @something else" } + + it("makes hint tags available") { + expect(variable.hint?.tag("type")).toBe("color") + expect(variable.hint?.tag("something")).toBe("else") + } + + it("returns null for non-existent tags") { + expect(variable.hint?.tag("nope")).toBe(null) + expect(variable.hint?.tags("nope")).toBe(emptyList()) + } + + context("when tags are repeated") { + override(text) { "// @thing abc\n// @thing def\nvec4 otherColor;" } + + it("each is available via tags()") { + expect(variable.hint!!.tags("thing")) + .containsExactly("abc", "def") + } + + it("tag() returns the first") { + expect(variable.hint!!.tag("thing")) + .toEqual("abc") + } + } + + context("with a plugin reference") { + override(text) { "varying vec4 otherColor; // @@ColorPicker default=orange palette=pastels" } + + it("builds a PluginRef") { + expect(variable.hint?.pluginRef) + .toEqual(PluginRef("baaahs.Core", "ColorPicker")) + } + + context("when plugin id is fully specified") { + override(text) { "varying vec4 otherColor; // @@foo.Plugin:ColorPicker default=orange palette=pastels" } + + it("builds a PluginRef") { + expect(variable.hint?.pluginRef) + .toEqual(PluginRef("foo.Plugin", "ColorPicker")) + } + } + + context("when plugin id is partially specified") { + override(text) { "varying vec4 otherColor; // @@Plugin:ColorPicker default=orange palette=pastels" } + + it("builds a PluginRef") { + expect(variable.hint?.pluginRef) + .toEqual(PluginRef("baaahs.Plugin", "ColorPicker")) + } + } + } + } + } + + context("functions") { + val function by value { (statement as GlslCode.GlslFunction).copy(lineNumber = null) } + + context("simple") { + override(text) { "float rand(vec2 uv) { return fract(sin(dot(uv.xy,vec2(12.9898,78.233))) * 43758.5453); }" } + expectValue( + GlslCode.GlslFunction( + "rand", GlslType.Float, + listOf(GlslCode.GlslParam("uv", GlslType.Vec2, isIn = true, lineNumber = 1)), + "float rand(vec2 uv) { return fract(sin(dot(uv.xy,vec2(12.9898,78.233))) * 43758.5453); }" + ) + ) { function } + } + + context("void params") { + override(text) { "float zero( void ) { return 0.; }" } + expectValue( + GlslCode.GlslFunction( + "zero", GlslType.Float, emptyList(), + "float zero( void ) { return 0.; }" + ) + ) { function } + } + + context("with hints") { + override(text) { "float zero( void ) { return 0.; }" } + expectValue( + GlslCode.GlslFunction( + "zero", GlslType.Float, emptyList(), + "float zero( void ) { return 0.; }" + ) + ) { function } + } + + context("using a struct in its signature") { + override(function) { (statements[1] as GlslCode.GlslFunction).copy(lineNumber = null) } + val expectedStruct by value { + GlslCode.GlslStruct( + "SomeStruct", mapOf("a" to GlslType.Int), + fullText = "struct SomeStruct { int a };", varName = null, + lineNumber = 2 + ) + } + + context("as the return value") { + override(text) { "struct SomeStruct { int a };\nSomeStruct rand(vec2 uv) { return xxx; }" } + + it("has the struct return type") { + expect(function).toBe( + GlslCode.GlslFunction( + "rand", GlslType.Struct(expectedStruct), + listOf(GlslCode.GlslParam("uv", GlslType.Vec2, isIn = true, lineNumber = 2)), + "SomeStruct rand(vec2 uv) { return xxx; }" + ) + ) + } + } + + context("as a param") { + override(text) { "struct SomeStruct { int a };\nint rand(SomeStruct someStruct) { return xxx; }" } + + it("has the struct return type") { + expect(function).toBe( + GlslCode.GlslFunction( + "rand", GlslType.Int, + listOf(GlslCode.GlslParam("someStruct", GlslType.Struct(expectedStruct), isIn = true, lineNumber = 2)), + "int rand(SomeStruct someStruct) { return xxx; }" + ) + ) + } + } + } + + } + + context("struct") { + val struct by value { (statements[0] as GlslCode.GlslStruct).copy(lineNumber = null) } + val expectedStruct by value { + GlslCode.GlslStruct( + "MovingHead", + mapOf("pan" to GlslType.Float, "tilt" to GlslType.Float), + null, + false, + """ + struct MovingHead { + float pan; // in radians + float tilt; // in radians + }; + """.trimIndent() + ) + } + + override(text) { + """ + struct MovingHead { + float pan; // in radians + float tilt; // in radians + }; + + uniform MovingHead movingHead; + """.trimIndent() + } + + it("should return a GlslStruct") { + expect(struct).toBe(expectedStruct) + expect(struct.varName).toBe(null) + } + + it("should apply the same struct type to uniforms") { + expect((statements[1] as GlslCode.GlslVar)) + .toBe( + GlslCode.GlslVar( + "movingHead", + GlslType.Struct(expectedStruct.copy(lineNumber = 2)), + "uniform MovingHead movingHead;", + isUniform = true, + lineNumber = 6 + ) + ) + } + + context("also declaring a variable") { + override(text) { + """ + struct MovingHead { + float pan; // in radians + float tilt; // in radians + } movingHead; + """.trimIndent() + } + + it("should return a GlslStruct") { + expect(struct).toBe( + GlslCode.GlslStruct( + "MovingHead", + mapOf("pan" to GlslType.Float, "tilt" to GlslType.Float), + "movingHead", + false, + text + ) + ) + } + } + } + } + + describe("GlslVar") { + context("with comments") { + val hintClassStr by value { "whatever.package.Plugin:Thing" } + val glslVar by value { + GlslCode.GlslVar( + "varName", GlslType.Float, isUniform = true, + comments = listOf(" @@$hintClassStr", " key=value", " key2=value2") + ) + } + + it("parses hints") { + expect(glslVar.hint!!.pluginRef) + .toBe(PluginRef("whatever.package.Plugin", "Thing")) + + expect(glslVar.hint!!.config) + .toBe(buildJsonObject { + put("key", "value") + put("key2", "value2") + }) + } + + context("when package is unspecified") { + override(hintClassStr) { "Thing" } + + it("defaults to baaahs.Core") { + expect(glslVar.hint!!.pluginRef) + .toBe(PluginRef("baaahs.Core", "Thing")) + } + } + + context("when package is partially specified") { + override(hintClassStr) { "FooPlugin:Thing" } + + it("defaults to baaahs.Core") { + expect(glslVar.hint!!.pluginRef) + .toBe(PluginRef("baaahs.FooPlugin", "Thing")) + } + } + } + + it("englishizes camel case names") { + expect(GlslCode.GlslVar("aManAPlanAAARGHPanamaISay", GlslType.Vec3).title) + .toBe("A Man A Plan AAARGH Panama I Say") + } + } +}) diff --git a/src/commonTest/kotlin/baaahs/gl/glsl/GlslParserSpec.kt b/src/commonTest/kotlin/baaahs/gl/glsl/GlslParserSpec.kt new file mode 100644 index 0000000000..c3844d72d7 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/glsl/GlslParserSpec.kt @@ -0,0 +1,403 @@ +package baaahs.gl.glsl + +import baaahs.describe +import baaahs.gl.expectStatements +import baaahs.gl.glsl.GlslCode.* +import baaahs.gl.override +import baaahs.only +import baaahs.toBeSpecified +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object GlslParserSpec : Spek({ + describe { + context("given some GLSL code") { + val glslParser by value { GlslParser() } + val shaderText by value { toBeSpecified() } + + context("#parse") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + precision mediump float; + uniform float time; // trailing comment + + // @@HintClass + // key=value + // key2=value2 + uniform vec2 resolution; + + // @@AnotherClass key=value key2=value2 + uniform struct FixtureInfo { + vec3 origin; + vec3 heading; + } leftEye; + + void mainFunc( out vec4 fragColor, in vec2 fragCoord ) + { + vec2 uv = fragCoord.xy / resolution.xy; + fragColor = vec4(uv.xy, 0., 1.); + } + + void main() { + mainFunc(gl_FragColor, gl_FragCoord); + } + """.trimIndent() + } + val glslCode by value { glslParser.parse(shaderText) } + + it("finds statements including line numbers") { + expectStatements( + listOf( + GlslOther( + "unknown", + "precision mediump float;", + lineNumber = 4, + listOf("This Shader's Name", "Other stuff.") + ), + GlslVar( + "time", + GlslType.Float, + "uniform float time;", + isUniform = true, + lineNumber = 5, + comments = listOf(" trailing comment") + ), + GlslVar( + "resolution", + GlslType.Vec2, + "uniform vec2 resolution;", + isUniform = true, + lineNumber = 10, + comments = listOf(" @@HintClass", " key=value", " key2=value2") + ), + GlslVar( + "leftEye", + GlslType.Struct( + "FixtureInfo", + mapOf("origin" to GlslType.Vec3, "heading" to GlslType.Vec3) + ), + "uniform struct FixtureInfo {\n" + + " vec3 origin;\n" + + " vec3 heading;\n" + + "} leftEye;", + isUniform = true, + lineNumber = 13, + comments = listOf("@@AnotherClass key=value key2=value2") + ), + GlslFunction( + "mainFunc", + GlslType.Void, + params = listOf( + GlslParam("fragColor", GlslType.Vec4, isOut = true), + GlslParam("fragCoord", GlslType.Vec2, isIn = true) + ), + fullText = "void mainFunc( out vec4 fragColor, in vec2 fragCoord )\n" + + "{\n" + + " vec2 uv = fragCoord.xy / resolution.xy;\n" + + " fragColor = vec4(uv.xy, 0., 1.);\n" + + "}", + lineNumber = 18 + ), + GlslFunction( + "mainFunc", + GlslType.Void, + params = emptyList(), + fullText = "void main() {\n" + + " mainFunc(gl_FragColor, gl_FragCoord);\n" + + "}", + lineNumber = 24 + ) + ), { glslParser.findStatements(shaderText) }, true + ) + } + + it("finds the global variables") { + expect(glslCode.globalVars.toList()) + .containsExactly( + GlslVar( + "time", GlslType.Float, + fullText = "uniform float time;", isUniform = true, lineNumber = 5, + comments = listOf(" trailing comment") + ), GlslVar( + "resolution", GlslType.Vec2, + fullText = "uniform vec2 resolution;", isUniform = true, lineNumber = 10, + comments = listOf(" @@HintClass", " key=value", " key2=value2") + ), GlslVar( + "leftEye", + GlslType.Struct( + "FixtureInfo", + mapOf("origin" to GlslType.Vec3, "heading" to GlslType.Vec3) + ), + fullText = "uniform FixtureInfo leftEye;", lineNumber = 13, + comments = listOf(" @@AnotherClass key=value key2=value2") + ) + ) + } + + it("finds the functions") { + expect(glslCode.functions.map { it.prettify() }) + .containsExactly( + "void mainFunc(out vec4 fragColor, in vec2 fragCoord)", + "void main()" + ) + } + + it("finds the structs") { + expect(glslCode.structs.map { "${it.lineNumber}: ${it.fullText}" }) + .containsExactly( + "13: uniform struct FixtureInfo {\n vec3 origin;\n vec3 heading;\n} leftEye;" + ) + } + + context("with #ifdefs") { + override(shaderText) { + /**language=glsl*/ + """ + // Shader Name + + #ifdef NOT_DEFINED + uniform float shouldNotBeDefined; + #define A_NOT_DEFINED + #define DEF_VAL shouldNotBeThis + #else + uniform float shouldBeDefined; + #define B_IS_DEFINED + #define DEF_VAL shouldBeThis + #endif + #define PI 3.14159 + + uniform vec2 DEF_VAL; + #ifdef A_NOT_DEFINED + void this_is_super_busted() { + #endif + #ifndef B_IS_DEFINED + } + #endif + + #ifdef B_IS_DEFINED + void mainFunc(out vec4 fragColor, in vec2 fragCoord) { fragColor = vec4(uv.xy, PI, 1.); } + #endif + #undef PI + void main() { mainFunc(gl_FragColor, gl_FragCoord); } + """.trimIndent() + } + + it("finds the global variables and performs substitutions") { + expect(glslCode.globalVars.toList()).containsExactly( + GlslVar( + "shouldBeDefined", GlslType.Float, + fullText = "uniform float shouldBeDefined;", isUniform = true, lineNumber = 8 + ), + GlslVar( + "shouldBeThis", GlslType.Vec2, + // TODO: 18 is wrong, should be 14! + fullText = "uniform vec2 shouldBeThis;", isUniform = true, lineNumber = 18 + ) + ) + } + + it("finds the functions and performs substitutions") { + expect(glslCode.functions.map { it.prettify() }).containsExactly( + "void mainFunc(out vec4 fragColor, in vec2 fragCoord)", + "void main()" + ) + } + + context("with define macros") { + override(shaderText) { + /**language=glsl*/ + """ + #define iResolution resolution + #define dividedBy(a,b) (a / b) + #define circle(U, r) smoothstep(0., 1., abs(length(U)-r)-.02 ) + + uniform vec2 resolution; + void main() { + #ifdef xyz + foo(); + #endif + gl_FragColor = circle(gl_FragCoord, iResolution.x); + gl_FragColor = circle(dividedBy(gl_FragCoord, 1.0), iResolution.x); + } + """.trimIndent() + } + + it("handles nested macro expansions") { + val glslFunction = glslCode.functions.only() + + val glsl = glslFunction.toGlsl(Namespace("ns"), emptySet(), emptyMap()) + + expect(glsl.trim()) + .toBe( + "#line 6\n" + + "void ns_main() {\n" + + "\n" + + "\n" + + "\n" + + " gl_FragColor = smoothstep(0., 1., abs(length(gl_FragCoord)-resolution.x)-.02 );\n" + + " gl_FragColor = smoothstep(0., 1., abs(length((gl_FragCoord / 1.0))-resolution.x)-.02 );\n" + + "}\n".trimIndent() + ) + } + } + } + + context("with overloaded functions") { + override(shaderText) { + """ + vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } + vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } + void main() {} + """.trimIndent() + } + + it("finds both functions") { + expect(glslCode.functions.map { it.prettify() }) + .containsExactly( + "vec3 mod289(in vec3 x)", + "vec4 mod289(in vec4 x)", + "void main()" + ) + } + } + + context("with a comment before a function") { + override(shaderText) { + """ + uniform float time; // @type time1 + // @return time2 + float main() { return time + sin(time); } + """.trimIndent() + } + + it("attaches the comment to that function") { + expectStatements( + listOf( + GlslVar( + "time", + GlslType.Float, + "uniform float time;", lineNumber = 1, + comments = listOf(" @type time1"), + isUniform = true + ), + GlslFunction( + "main", + GlslType.Void, + params = emptyList(), // TODO: 1 seems wrong here, shouldn't it be 3? + fullText = "float main() { return time + sin(time); }\n", + lineNumber = 3, + comments = listOf(" @return time2") + ), + ), { glslParser.findStatements(shaderText) }, true + ) + } + } + + context("block comments") { + override(shaderText) { + """ + /* Block comment! @return float */ + float main() { return time + sin(time); } + """.trimIndent() + } + + it("finds the comment") { + expect(glslCode.findFunction("main")) + .toEqual( + GlslFunction( + "main", GlslType.Float, emptyList(), + "float main() { return time + sin(time); }", 2, + comments = listOf(" Block comment! @return float ") + ) + ) + } + + context("multi-line") { + override(shaderText) { + """ + /** + * Block comment! + * @return float + */ + float main() { return time + sin(time); } + """.trimIndent() + } + + it("finds the comment") { + expect(glslCode.findFunction("main")) + .toEqual( + GlslFunction( + "main", GlslType.Float, emptyList(), + "float main() { return time + sin(time); }", 5, + comments = listOf("*\n * Block comment!\n * @return float\n ") + ) + ) + } + } + + context("on params") { + override(shaderText) { + """ + float main(float time /* @type time */) { return time + sin(time); } + """.trimIndent() + } + + it("finds the comment") { + expect(glslCode.findFunction("main")) + .toEqual( + GlslFunction( + "main", GlslType.Float, listOf( + GlslParam( + "time", GlslType.Float, true, false, 1, + comments = listOf(" @type time ") + ) + ), + "float main(float time ) { return time + sin(time); }", 1 + ) + ) + } + } + } + } + + context("const initializers") { + override(shaderText) { "const vec3 baseColor = vec3(0.0,0.09,0.18);\nvoid main() {}" } + val glslCode by value { glslParser.parse(shaderText) } + + it("handles const initializers") { + expect(glslCode.globalVars.only("global var")) + .toBe( + GlslVar( + "baseColor", GlslType.Vec3, "const vec3 baseColor = vec3(0.0,0.09,0.18);", + isConst = true, + lineNumber = 1 + ) + ) + } + } + } + } +}) + +private fun GlslFunction.prettify() = + "${returnType.glslLiteral} ${name}(${params.joinToString(", ") { it.prettify() }})" + +private fun GlslParam.prettify(): String = "${ + when (isIn to isOut) { + false to false -> "" + true to false -> "in " + false to true -> "out " + true to true -> "inout " + else -> error("huh?") + } +}${type.glslLiteral} ${name}${ + if (comments.isNotEmpty()) " /* ${comments.joinToString(" ")} */" else "" +}" + diff --git a/src/commonTest/kotlin/baaahs/gl/patch/AutoWirerSpec.kt b/src/commonTest/kotlin/baaahs/gl/patch/AutoWirerSpec.kt new file mode 100644 index 0000000000..883f4733a9 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/patch/AutoWirerSpec.kt @@ -0,0 +1,438 @@ +package baaahs.gl.patch + +import baaahs.fixtures.PixelLocationDataSource +import baaahs.gl.* +import baaahs.gl.render.DeviceTypeForTest +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.glsl.Shaders.cylindricalProjection +import baaahs.only +import baaahs.plugin.CorePlugin +import baaahs.plugin.core.FixtureInfoDataSource +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.show.live.FakeOpenShader +import baaahs.show.live.LinkedShaderInstance +import baaahs.show.live.link +import baaahs.show.mutable.MutableShader +import baaahs.show.mutable.MutableShaderInstance +import baaahs.show.mutable.editor +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.dsl.Skip +import org.spekframework.spek2.style.specification.describe + +object AutoWirerSpec : Spek({ + describe("AutoWirer") { + val autoWirer by value { AutoWirer(testPlugins()) } + val toolchain by value { RootToolchain(testPlugins(), autoWirer = autoWirer) } + val deviceType by value { + DeviceTypeForTest( + likelyPipelines = listOf( + ContentType.XyzCoordinate to ContentType.UvCoordinate, + ContentType.UvCoordinate to ContentType.Color + ) + ) + } + + describe(".autoWire") { + val portId by value { "brightness" } + val portContentType by value { ContentType.Float } + val portGlslType by value { portContentType.glslType } + val outContentType by value { ContentType.Color } + val mainShader by value { + FakeOpenShader( + listOf(InputPort(portId, portContentType, portGlslType)), + OutputPort(outContentType) + ) + } + val shaders by value { listOf(mainShader) } + val shaderChannel by value { ShaderChannel.Main } + val suggestions by value { + autoWirer.autoWire(shaders, shaderChannel = shaderChannel, deviceTypes = listOf(deviceType)) + } + val patch by value { suggestions.acceptSuggestedLinkOptions().confirm() } + val mutableLinks by value { patch.mutableShaderInstances.only().incomingLinks } + val portLink by value { mutableLinks[portId] } + + context("for content types of artifacts in potential render pipelines") { + override(portId) { "uv" } + override(portContentType) { ContentType.UvCoordinate } + + it("suggests the shader's channel") { + expect(portLink).toBe(ShaderChannel.Main.editor()) + } + + context("even when it's on on a different channel") { + override(shaderChannel) { ShaderChannel("other") } + + it("suggests the main channel") { + expect(portLink).toBe(ShaderChannel.Main.editor()) + } + } + } + + context("when there's a good datasource match") { + context("e.g. for time") { + override(portId) { "time" } + override(portContentType) { ContentType.Time } + + it("suggests the data source's channel") { + expect(portLink).toBe(CorePlugin.TimeDataSource().editor()) + } + + // TODO: get these working? + context("when the output type matches", skip = Skip.Yes("Not working yet")) { + override(outContentType) { portContentType } + + it("suggests the data source's channel") { + expect(portLink).toBe(CorePlugin.TimeDataSource().editor()) + } + + context("and the shader's channel matches the data source's channel") { + override(shaderChannel) { ShaderChannel("time") } + + it("suggests the data source's channel") { + expect(portLink).toBe(CorePlugin.TimeDataSource().editor()) + } + } + } + } + + context("for an arbitrary float") { + override(portId) { "brightness" } + override(portContentType) { ContentType.Float } + + it("suggests a Slider data source channel link") { + expect(portLink) + .toBe(CorePlugin.SliderDataSource("Brightness", 1f, 0f, 1f).editor()) + } + } + +// TODO: context("for an arbitrary unknown/float") { +// TODO: override(portId) { "brightness" } +// TODO: override(portContentType) { ContentType.unknown(Float) } +// +// TODO: it("suggests a Slider data source channel link") { +// TODO: expect(portLink) +// TODO: .toBe(CorePlugin.SliderDataSource("Brightness", 1f, 0f, 1f).editor()) +// TODO: } +// TODO: } + } + + context("when input port's content type matches the shader's output type") { + override(outContentType) { portContentType } + + it("suggests pulling from the shader channel, making it a filter") { + expect(portLink).toBe(ShaderChannel.Main.editor()) + } + + context("when shader is on another channel") { + override(shaderChannel) { ShaderChannel("other") } + + it("suggests pulling from that shader channel, making it a filter") { + expect(portLink).toBe(ShaderChannel("other").editor()) + } + } + } + } + + describe(".autoWire integration") { + val shaderText by value { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float time; + uniform vec2 resolution; + uniform float blueness; + int someGlobalVar; + const int someConstVar = 123; + + int anotherFunc(int i) { return i; } + + void main( void ) { + vec2 uv = gl_FragCoord.xy / resolution.xy; + someGlobalVar = anotherFunc(someConstVar); + gl_FragColor = vec4(uv.xy, blueness, 1.); + } + """.trimIndent() + } + val mainShader by value { toolchain.import(shaderText) } + val shaders by value { arrayOf(mainShader) } + val patch by value { + autoWirer.autoWire(shaders.open(toolchain), deviceTypes = listOf(deviceType)) + .acceptSuggestedLinkOptions().confirm() + } + val linkedPatch by value { patch.openForPreview(toolchain, ContentType.Color)!! } + val rootProgramNode by value { linkedPatch.rootNode as LinkedShaderInstance } + val mutableLinks by value { patch.mutableShaderInstances.only().incomingLinks } + val links by value { rootProgramNode.incomingLinks } + + it("picks TimeDataSource for time") { + expect(mutableLinks["time"]) + .toBe(CorePlugin.TimeDataSource().editor()) + + expect(links["time"]) + .toBe(CorePlugin.TimeDataSource().link("time")) + } + + it("picks ResolutionDataSource for resolution") { + expect(mutableLinks["resolution"]) + .toBe(CorePlugin.ResolutionDataSource().editor()) + + expect(links["resolution"]) + .toBe(CorePlugin.ResolutionDataSource().link("resolution")) + } + + it("picks a Slider for blueness") { + expect(links["blueness"]) + .toBe( + CorePlugin.SliderDataSource("Blueness", 1f, 0f, 1f, null) + .link("bluenessSlider") + ) + } + + it("picks Main channel for gl_FragCoord") { + expect(mutableLinks["gl_FragCoord"]) + .toBe(ShaderChannel.Main.editor()) + + expect(links["gl_FragCoord"]) + .toBe(DefaultValueNode(ContentType.UvCoordinate)) + } + + it("builds a linked patch") { + expect(rootProgramNode.incomingLinks) + .toBe( + mapOf( + "gl_FragCoord" to DefaultValueNode(ContentType.UvCoordinate), + "time" to CorePlugin.TimeDataSource().link("time"), + "resolution" to CorePlugin.ResolutionDataSource().link("resolution"), + "blueness" to CorePlugin.SliderDataSource("Blueness", 1f, 0f, 1f, null) + .link("bluenessSlider") + ) + ) + } + + context("with a uv-coordinate input port") { + override(shaderText) { + /**language=glsl*/ + """ + uniform vec2 resolution; + vec2 anotherFunc(vec2 fragCoord) { return fragCoord; } + // @param fragCoord uv-coordinate + void main(vec2 fragCoord) { + vec2 uv = anotherFunc(fragCoord) / resolution.xy; + gl_FragColor = vec4(uv.xy, 0., 1.); + } + """.trimIndent() + } + + it("should pull from something") { + expects( + listOf( + MutableShaderInstance( + MutableShader(mainShader), + hashMapOf( + "fragCoord" to ShaderChannel.Main.editor(), + "resolution" to CorePlugin.ResolutionDataSource().editor(), + ), + shaderChannel = ShaderChannel.Main.editor(), + priority = 0f + ) + ) + ) { patch.mutableShaderInstances } + } + } + + context("with a ShaderToy shader") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float blueness; + int someGlobalVar; + const int someConstVar = 123; + + int anotherFunc(int i) { return i; } + + void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 uv = fragCoord.xy / iResolution.xy; + someGlobalVar = anotherFunc(someConstVar) + int(iTime); + fragColor = vec4(uv.xy, blueness, 1.); + } + """.trimIndent() + } + + it("creates a reasonable guess patch") { + expects( + listOf( + MutableShaderInstance( + MutableShader(mainShader), + hashMapOf( + "iTime" to CorePlugin.TimeDataSource().editor(), + "blueness" to CorePlugin.SliderDataSource("Blueness", 1f, 0f, 1f, null).editor(), + "iResolution" to CorePlugin.ResolutionDataSource().editor(), + "fragCoord" to ShaderChannel.Main.editor() + ), + shaderChannel = ShaderChannel.Main.editor(), + priority = 0f + ) + ) + ) { patch.mutableShaderInstances } + } + + it("builds a linked patch") { + rootProgramNode.incomingLinks.forEach { (port, link) -> + println("port $port -> $link") + } + expects( + mapOf( + "blueness" to CorePlugin.SliderDataSource("Blueness", 1f, 0f, 1f, null) + .link("bluenessSlider"), + "iResolution" to CorePlugin.ResolutionDataSource().link("resolution"), + "iTime" to CorePlugin.TimeDataSource().link("time"), + "fragCoord" to DefaultValueNode(ContentType.UvCoordinate) + ) + ) { rootProgramNode.incomingLinks } + } + } + + context("with a UV projection shader") { + val uvShader = cylindricalProjection + val uvShaderInst by value { MutableShaderInstance(MutableShader(uvShader)) } + + override(shaders) { arrayOf(mainShader, uvShader) } + + it("creates a reasonable guess patch") { + expects( + listOf( + MutableShaderInstance( + MutableShader(mainShader), + hashMapOf( + "time" to CorePlugin.TimeDataSource().editor(), + "resolution" to CorePlugin.ResolutionDataSource().editor(), + "blueness" to CorePlugin.SliderDataSource("Blueness", 1f, 0f, 1f, null).editor(), + "gl_FragCoord" to ShaderChannel.Main.editor() + ), + shaderChannel = ShaderChannel.Main.editor() + ), + uvShaderInst.apply { + incomingLinks.putAll( + mapOf( + "modelInfo" to CorePlugin.ModelInfoDataSource().editor(), + "pixelLocation" to PixelLocationDataSource().editor() + ) + ) + shaderChannel = ShaderChannel.Main.editor() + } + ) + ) { patch.mutableShaderInstances } + } + } + + context("with a filter shader") { + val filterShader by value { + Shader( + "Brightness Filter", + """ + uniform float brightness; // @@Slider min=0 max=1 default=1 + + // @param colorIn color + void main(vec4 colorIn) { + gl_FragColor = colorIn * brightness; + } + """.trimIndent() + ) + } + + override(shaders) { arrayOf(filterShader) } + + it("creates a reasonable guess patch") { + expects( + listOf( + MutableShaderInstance( + MutableShader(filterShader), + hashMapOf( + "brightness" to CorePlugin.SliderDataSource("Brightness", 1f, 0f, 1f, null) + .editor(), + "colorIn" to ShaderChannel.Main.editor() + ), + shaderChannel = ShaderChannel.Main.editor() + ) + ) + ) { patch.mutableShaderInstances } + } + } + + context("with a distortion shader") { + val filterShader = Shader( + "Flip Y", + """ + // @return uv-coordinate + // @param uvIn uv-coordinate + vec2 main(vec2 uvIn) { + return vec2(uvIn.x, 1.0 - uvIn.y); + } + """.trimIndent() + ) + + + override(shaders) { arrayOf(filterShader) } + + it("creates a reasonable guess patch") { + expects( + listOf( + MutableShaderInstance( + MutableShader(filterShader), + hashMapOf( + "uvIn" to ShaderChannel.Main.editor() + ), + shaderChannel = ShaderChannel.Main.editor() + ) + ) + ) { patch.mutableShaderInstances } + } + } + + context("with a shader for a non-PixelArrayDevice fixture") { + override(shaderText) { + /**language=glsl*/ + """ + struct FixtureInfo { + vec3 origin; + vec3 heading; + }; + + uniform FixtureInfo fixtureInfo; + + vec4 main() { + return vec4(fixtureInfo.heading.xy, fixtureInfo.origin.xy); + } + """.trimIndent() + } + + it("creates a reasonable guess patch") { + expect(patch.mutableShaderInstances) + .containsExactly( + MutableShaderInstance( + MutableShader(mainShader), + hashMapOf( + "fixtureInfo" to FixtureInfoDataSource().editor() + ) + ) + ) + } + } + } + } +}) + +private fun Array.open(toolchain: Toolchain): Collection = + map { toolchain.openShader(it) } \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/patch/ContentTypeSpec.kt b/src/commonTest/kotlin/baaahs/gl/patch/ContentTypeSpec.kt new file mode 100644 index 0000000000..1efae197ea --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/patch/ContentTypeSpec.kt @@ -0,0 +1,26 @@ +package baaahs.gl.patch + +import baaahs.describe +import baaahs.gl.glsl.GlslType +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object ContentTypeSpec : Spek({ + describe { + context("unknown content types") { + it("constructs an unknown content type from a GLSL type") { + expect(ContentType.unknown(GlslType.Float)) + .toBe(ContentType("unknown/float", "Unknown float", GlslType.Float, false)) + expect(ContentType.unknown(GlslType.Vec4)) + .toBe(ContentType("unknown/vec4", "Unknown vec4", GlslType.Vec4, false)) + } + + it("#isUnknown is true") { + expect(ContentType.unknown(GlslType.Float).isUnknown()).toBe(true) + expect(ContentType.Unknown.isUnknown()).toBe(true) + expect(ContentType.Color.isUnknown()).toBe(false) + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/patch/GlslGenerationSpec.kt b/src/commonTest/kotlin/baaahs/gl/patch/GlslGenerationSpec.kt new file mode 100644 index 0000000000..379c588dbc --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/patch/GlslGenerationSpec.kt @@ -0,0 +1,823 @@ +package baaahs.gl.patch + +import baaahs.fixtures.PixelLocationDataSource +import baaahs.gl.kexpect +import baaahs.gl.override +import baaahs.gl.patch.ContentType.Companion.Color +import baaahs.gl.testToolchain +import baaahs.glsl.Shaders.cylindricalProjection +import baaahs.plugin.CorePlugin +import baaahs.plugin.core.FixtureInfoDataSource +import baaahs.plugin.core.MovingHeadParams +import baaahs.show.ShaderChannel +import baaahs.show.mutable.MutableDataSourcePort +import baaahs.show.mutable.MutablePatch +import baaahs.show.mutable.MutableShaderChannel +import baaahs.show.mutable.editor +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe +import kotlin.test.fail + +object GlslGenerationSpec : Spek({ + describe("Generation of GLSL from patches") { + val shaderText by value { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float blueness; + uniform vec2 resolution; + uniform float time; + int someGlobalVar; + const int someConstVar = 123; + + int anotherFunc(int i) { return i; } + + void main( void ) { + vec2 uv = gl_FragCoord.xy / resolution.xy; + someGlobalVar = anotherFunc(someConstVar); + gl_FragColor = vec4(uv.xy, blueness, 1.); + } + """.trimIndent() + } + val glslAnalyzer by value { testToolchain.glslAnalyzer } + val mainShader by value { testToolchain.import(shaderText) } + val mutablePatch by value { MutablePatch { } } + val resultContentType by value { Color } + val linkedPatch by value { + mutablePatch.openForPreview(testToolchain, resultContentType) + ?: fail("openForPreview returned null, maybe no shaders on mutablePatch?") + } + val glsl by value { linkedPatch.toGlsl().trim() } + + context("with screen coordinates for preview") { + beforeEachTest { + mutablePatch.addShaderInstance(mainShader) { + link("fragCoord", CorePlugin.RasterCoordinateDataSource()) + link("resolution", CorePlugin.ResolutionDataSource()) + link("time", CorePlugin.TimeDataSource()) + link( + "blueness", + CorePlugin.SliderDataSource("Blueness", 0f, 0f, 1f, null) + ) + shaderChannel = ShaderChannel.Main.editor() + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + // Data source: Blueness Slider + uniform float in_bluenessSlider; + + // Data source: Resolution + uniform vec2 in_resolution; + + // Data source: Time + uniform float in_time; + + // Shader: This Shader's Name; namespace: p0 + // This Shader's Name + + vec4 p0_thisShaderSName_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 7 + int p0_thisShaderSName_someGlobalVar; + + #line 8 + const int p0_thisShaderSName_someConstVar = 123; + + #line 10 + int p0_thisShaderSName_anotherFunc(int i) { return i; } + + #line 12 + void p0_thisShaderSName_main( void ) { + vec2 uv = gl_FragCoord.xy / in_resolution.xy; + p0_thisShaderSName_someGlobalVar = p0_thisShaderSName_anotherFunc(p0_thisShaderSName_someConstVar); + p0_thisShaderSName_gl_FragColor = vec4(uv.xy, in_bluenessSlider, 1.); + } + + + #line 10001 + void main() { + // Invoke This Shader's Name + p0_thisShaderSName_main(); + + sm_result = p0_thisShaderSName_gl_FragColor; + } + """.trimIndent() + ) + } + } + + context("with param input ports") { + override(shaderText) { + /**language=glsl*/ + """ + uniform vec2 resolution; + vec2 anotherFunc(vec2 fragCoord) { return fragCoord; } + + // @param fragCoord uv-coordinate + void main(vec2 fragCoord) { + vec2 uv = anotherFunc(fragCoord) / resolution.xy; + gl_FragColor = vec4(uv.xy, 0., 1.); + } + """.trimIndent() + } + + beforeEachTest { + mutablePatch.addShaderInstance(mainShader) { + link("resolution", CorePlugin.ResolutionDataSource()) + link("fragCoord", CorePlugin.RasterCoordinateDataSource()) + shaderChannel = ShaderChannel.Main.editor() + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + // Data source: Resolution + uniform vec2 in_resolution; + + // Shader: Untitled Shader; namespace: p0 + // Untitled Shader + + vec4 p0_untitledShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + vec2 p0_untitledShader_anotherFunc(vec2 fragCoord) { return fragCoord; } + + #line 5 + void p0_untitledShader_main(vec2 fragCoord) { + vec2 uv = p0_untitledShader_anotherFunc(fragCoord) / in_resolution.xy; + p0_untitledShader_gl_FragColor = vec4(uv.xy, 0., 1.); + } + + + #line 10001 + void main() { + // Invoke Untitled Shader + p0_untitledShader_main(gl_FragCoord.xy); + + sm_result = p0_untitledShader_gl_FragColor; + } + """.trimIndent() + ) + } + } + + context("with a ShaderToy paint shader") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float blueness; + int someGlobalVar; + const int someConstVar = 123; + + int anotherFunc(int i) { return i; } + + void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 uv = fragCoord.xy / iResolution.xy; + someGlobalVar = anotherFunc(someConstVar) + iTime * 0.; + fragColor = vec4(uv.xy, blueness, 1.); + } + """.trimIndent() + } + + beforeEachTest { + mutablePatch.addShaderInstance(mainShader) { + link( + "blueness", + CorePlugin.SliderDataSource("Blueness", 0f, 0f, 1f, null) + ) + link("iResolution", CorePlugin.ResolutionDataSource()) + link("iTime", CorePlugin.TimeDataSource()) + link("fragCoord", CorePlugin.RasterCoordinateDataSource()) + shaderChannel = ShaderChannel.Main.editor() + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + // Data source: Blueness Slider + uniform float in_bluenessSlider; + + // Data source: Resolution + uniform vec2 in_resolution; + + // Data source: Time + uniform float in_time; + + // Shader: This Shader's Name; namespace: p0 + // This Shader's Name + + vec4 p0_thisShaderSName_fragColor = vec4(0., 0., 0., 1.); + + #line 5 + int p0_thisShaderSName_someGlobalVar; + + #line 6 + const int p0_thisShaderSName_someConstVar = 123; + + #line 8 + int p0_thisShaderSName_anotherFunc(int i) { return i; } + + #line 10 + void p0_thisShaderSName_mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 uv = fragCoord.xy / in_resolution.xy; + p0_thisShaderSName_someGlobalVar = p0_thisShaderSName_anotherFunc(p0_thisShaderSName_someConstVar) + in_time * 0.; + fragColor = vec4(uv.xy, in_bluenessSlider, 1.); + } + + + #line 10001 + void main() { + // Invoke This Shader's Name + p0_thisShaderSName_mainImage(p0_thisShaderSName_fragColor, gl_FragCoord.xy); + + sm_result = p0_thisShaderSName_fragColor; + } + """.trimIndent() + ) + } + } + + describe("with projection shader") { + beforeEachTest { + mutablePatch.apply { + addShaderInstance(cylindricalProjection) { + link("pixelLocation", PixelLocationDataSource()) + link("modelInfo", CorePlugin.ModelInfoDataSource()) + shaderChannel = ShaderChannel.Main.editor() + } + + addShaderInstance(mainShader) { + link("gl_FragCoord", ShaderChannel.Main.toMutable()) + link("resolution", CorePlugin.ResolutionDataSource()) + link("time", CorePlugin.TimeDataSource()) + link("blueness", CorePlugin.SliderDataSource("Blueness", 0f, 0f, 1f, null)) + shaderChannel = ShaderChannel.Main.editor() + } + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + + // Data source: Blueness Slider + uniform float in_bluenessSlider; + + // Data source: Model Info + uniform ModelInfo in_modelInfo; + + // Data source: Pixel Location + uniform sampler2D ds_pixelLocation_texture; + vec3 ds_pixelLocation_getPixelCoords(vec2 rasterCoord) { + return texelFetch(ds_pixelLocation_texture, ivec2(rasterCoord.xy), 0).xyz; + } + vec3 in_pixelLocation; + + // Data source: Resolution + uniform vec2 in_resolution; + + // Data source: Time + uniform float in_time; + + // Shader: Cylindrical Projection; namespace: p0 + // Cylindrical Projection + + vec2 p0_cylindricalProjectioni_result = vec2(0.); + + #line 10 + const float p0_cylindricalProjection_PI = 3.141592654; + + #line 14 + vec2 p0_cylindricalProjection_main(vec3 pixelLocation) { + vec3 pixelOffset = pixelLocation - in_modelInfo.center; + vec3 normalDelta = normalize(pixelOffset); + float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π] + if (theta < 0.0) theta += (2.0f * p0_cylindricalProjection_PI); // theta in range [0,2π) + float u = theta / (2.0f * p0_cylindricalProjection_PI) * 2.; // u in range [0,1) + float v = (pixelOffset.y + in_modelInfo.extents.y / 2.0f) / in_modelInfo.extents.y; + return vec2(u, v); + } + + // Shader: This Shader's Name; namespace: p1 + // This Shader's Name + + vec4 p1_thisShaderSName_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 7 + int p1_thisShaderSName_someGlobalVar; + + #line 8 + const int p1_thisShaderSName_someConstVar = 123; + + #line 10 + int p1_thisShaderSName_anotherFunc(int i) { return i; } + + #line 12 + void p1_thisShaderSName_main( void ) { + vec2 uv = p0_cylindricalProjectioni_result.xy / in_resolution.xy; + p1_thisShaderSName_someGlobalVar = p1_thisShaderSName_anotherFunc(p1_thisShaderSName_someConstVar); + p1_thisShaderSName_gl_FragColor = vec4(uv.xy, in_bluenessSlider, 1.); + } + + + #line 10001 + void main() { + // Invoke Pixel Location + in_pixelLocation = ds_pixelLocation_getPixelCoords(gl_FragCoord.xy); + + // Invoke Cylindrical Projection + p0_cylindricalProjectioni_result = p0_cylindricalProjection_main(in_pixelLocation); + + // Invoke This Shader's Name + p1_thisShaderSName_main(); + + sm_result = p1_thisShaderSName_gl_FragColor; + } + """.trimIndent() + ) + } + } + + describe("mixing from another channel") { + val otherShaderActualChannel by value { "other" } + + override(shaderText) { + """ + // Cross-fade shader + uniform float fade; + + // @return color + // @param inColor color + // @param inColor2 color + vec4 main(vec4 inColor, vec4 inColor2) { + return mix(inColor, inColor2, fade); + } + """.trimIndent() + } + + val mainPaintShader by value { + testToolchain.import( + """ + // Main Paint Shader + void main( void ) { + gl_FragColor = vec4(1., 0., 0., 1.); + } + """.trimIndent() + ) + } + + val otherPaintShader by value { + testToolchain.import( + """ + // Other Paint Shader + void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + fragColor = vec4(0., 1., 0., 1.); + } + """.trimIndent() + ) + } + + beforeEachTest { + mutablePatch.addShaderInstance(mainPaintShader) + mutablePatch.addShaderInstance(otherPaintShader) { + link("fragCoord", MutableDataSourcePort(CorePlugin.RasterCoordinateDataSource())) + shaderChannel = MutableShaderChannel.from(otherShaderActualChannel) + } + + mutablePatch.addShaderInstance(mainShader) { + link("fade", CorePlugin.SliderDataSource("Fade", 0f, 0f, 1f, null)) + link("inColor", MutableShaderChannel("main")) + link("inColor2", MutableShaderChannel("other")) + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + // Data source: Fade Slider + uniform float in_fadeSlider; + + // Shader: Main Paint Shader; namespace: p0 + // Main Paint Shader + + vec4 p0_mainPaintShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p0_mainPaintShader_main( void ) { + p0_mainPaintShader_gl_FragColor = vec4(1., 0., 0., 1.); + } + + // Shader: Other Paint Shader; namespace: p1 + // Other Paint Shader + + vec4 p1_otherPaintShader_fragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p1_otherPaintShader_mainImage( out vec4 fragColor, in vec2 fragCoord ) { + fragColor = vec4(0., 1., 0., 1.); + } + + // Shader: Cross-fade shader; namespace: p2 + // Cross-fade shader + + vec4 p2_crossFadeShaderi_result = vec4(0., 0., 0., 1.); + + #line 7 + vec4 p2_crossFadeShader_main(vec4 inColor, vec4 inColor2) { + return mix(inColor, inColor2, in_fadeSlider); + } + + + #line 10001 + void main() { + // Invoke Main Paint Shader + p0_mainPaintShader_main(); + + // Invoke Other Paint Shader + p1_otherPaintShader_mainImage(p1_otherPaintShader_fragColor, gl_FragCoord.xy); + + // Invoke Cross-fade shader + p2_crossFadeShaderi_result = p2_crossFadeShader_main(p0_mainPaintShader_gl_FragColor, p1_otherPaintShader_fragColor); + + sm_result = p2_crossFadeShaderi_result; + } + """.trimIndent() + ) + } + + context("when there's no paint shader on the other channel") { + override(otherShaderActualChannel) { "notOther" } + + it("should give a warning") { + expect(linkedPatch.warnings).containsExactly( + "No upstream shader found, using default for color.\n" + + "Stack:\n" + + " Resolving Track[main/color] -> [Cross-fade shader].inColor2 (color)" + ) + } + + it("should use default for that content type") { + // TODO: WRONG WRONG WRONG we should tell the user that something's wrong? + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + // Data source: Fade Slider + uniform float in_fadeSlider; + + // Shader: Main Paint Shader; namespace: p0 + // Main Paint Shader + + vec4 p0_mainPaintShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p0_mainPaintShader_main( void ) { + p0_mainPaintShader_gl_FragColor = vec4(1., 0., 0., 1.); + } + + // Shader: Cross-fade shader; namespace: p1 + // Cross-fade shader + + vec4 p1_crossFadeShaderi_result = vec4(0., 0., 0., 1.); + + #line 7 + vec4 p1_crossFadeShader_main(vec4 inColor, vec4 inColor2) { + return mix(inColor, inColor2, in_fadeSlider); + } + + + #line 10001 + void main() { + // Invoke Main Paint Shader + p0_mainPaintShader_main(); + + // Invoke Cross-fade shader + p1_crossFadeShaderi_result = p1_crossFadeShader_main(p0_mainPaintShader_gl_FragColor, vec4(0.)); + + sm_result = p1_crossFadeShaderi_result; + } + """.trimIndent() + ) + } + } + } + + context("with a shader using a struct uniform") { + override(shaderText) { + /**language=glsl*/ + """ + struct FixtureInfo { + vec3 origin; + vec3 heading; // in Euler angles + }; + + uniform FixtureInfo fixtureInfo; + + struct MovingHeadParams { + float pan; + float tilt; + float colorWheel; + float dimmer; + }; + + // @param params moving-head-params + void main(out MovingHeadParams params) { + params.pan = fixtureInfo.origin.x; + params.tilt = fixtureInfo.origin.y, + params.colorWheel = fixtureInfo.heading.x, + params.dimmer = fixtureInfo.heading.y; + } + """.trimIndent() + } + override(resultContentType) { MovingHeadParams.contentType } + + beforeEachTest { + mutablePatch.addShaderInstance(mainShader) { + link("fixtureInfo", FixtureInfoDataSource()) + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct MovingHeadParams { + float pan; + float tilt; + float colorWheel; + float dimmer; + }; + + struct FixtureInfo { + vec3 origin; + vec3 heading; + }; + + // Data source: Fixture Info + uniform FixtureInfo in_fixtureInfo; + + // Shader: Untitled Shader; namespace: p0 + // Untitled Shader + + MovingHeadParams p0_untitledShader_params = MovingHeadParams(0., 0., 0., 1.); + + #line 16 + void p0_untitledShader_main(out MovingHeadParams params) { + params.pan = in_fixtureInfo.origin.x; + params.tilt = in_fixtureInfo.origin.y, + params.colorWheel = in_fixtureInfo.heading.x, + params.dimmer = in_fixtureInfo.heading.y; + } + + + #line 10001 + void main() { + // Invoke Untitled Shader + p0_untitledShader_main(p0_untitledShader_params); + + sm_result = vec4( + p0_untitledShader_params.pan, + p0_untitledShader_params.tilt, + p0_untitledShader_params.colorWheel, + p0_untitledShader_params.dimmer + ); + } + """.trimIndent() + ) + } + } + + context("with a shader using a struct internally") { + override(shaderText) { + /**language=glsl*/ + """ + struct AnotherStruct { + float first; + float second; + }; + AnotherStruct a; + + struct MovingHeadParams { + float pan; + float tilt; + float colorWheel; + float dimmer; + }; + + // @return moving-head-params + MovingHeadParams main() { + AnotherStruct b; + return MovingHeadParams(a.first, a.second, 0., 0.); + } + """.trimIndent() + } + override(resultContentType) { MovingHeadParams.contentType } + + beforeEachTest { + mutablePatch.addShaderInstance(mainShader) { + link("fixtureInfo", FixtureInfoDataSource()) + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct MovingHeadParams { + float pan; + float tilt; + float colorWheel; + float dimmer; + }; + + struct p0_untitledShader_AnotherStruct { + float first; + float second; + }; + + // Shader: Untitled Shader; namespace: p0 + // Untitled Shader + + MovingHeadParams p0_untitledShaderi_result = MovingHeadParams(0., 0., 0., 1.); + + #line 5 + p0_untitledShader_AnotherStruct p0_untitledShader_a; + + #line 15 + MovingHeadParams p0_untitledShader_main() { + p0_untitledShader_AnotherStruct b; + return MovingHeadParams(p0_untitledShader_a.first, p0_untitledShader_a.second, 0., 0.); + } + + + #line 10001 + void main() { + // Invoke Untitled Shader + p0_untitledShaderi_result = p0_untitledShader_main(); + + sm_result = vec4( + p0_untitledShaderi_result.pan, + p0_untitledShaderi_result.tilt, + p0_untitledShaderi_result.colorWheel, + p0_untitledShaderi_result.dimmer + ); + } + """.trimIndent() + ) + } + } + + context("with a shader using a struct internally, declaring a global") { + override(shaderText) { + /**language=glsl*/ + """ + struct AnotherStruct { + float first; + float second; + } a; + + // @return color + vec4 main() { + AnotherStruct b; + return vec4(a.first, a.second, 0., 0.); + } + """.trimIndent() + } + override(resultContentType) { Color } + + beforeEachTest { + mutablePatch.addShaderInstance(mainShader) { + link("fixtureInfo", FixtureInfoDataSource()) + } + } + + it("generates GLSL") { + kexpect(glsl).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct p0_untitledShader_AnotherStruct { + float first; + float second; + }; + + // Shader: Untitled Shader; namespace: p0 + // Untitled Shader + + vec4 p0_untitledShaderi_result = vec4(0., 0., 0., 1.); + + #line 1 + p0_untitledShader_AnotherStruct p0_untitledShader_a; + + #line 7 + vec4 p0_untitledShader_main() { + p0_untitledShader_AnotherStruct b; + return vec4(p0_untitledShader_a.first, p0_untitledShader_a.second, 0., 0.); + } + + + #line 10001 + void main() { + // Invoke Untitled Shader + p0_untitledShaderi_result = p0_untitledShader_main(); + + sm_result = p0_untitledShaderi_result; + } + """.trimIndent() + ) + } + } + } +}) + diff --git a/src/commonTest/kotlin/baaahs/gl/patch/PatchResolverSpec.kt b/src/commonTest/kotlin/baaahs/gl/patch/PatchResolverSpec.kt new file mode 100644 index 0000000000..034bf1b7df --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/patch/PatchResolverSpec.kt @@ -0,0 +1,512 @@ +package baaahs.gl.patch + +import baaahs.TestModel +import baaahs.app.ui.editor.PortLinkOption +import baaahs.fixtures.PixelArrayDevice +import baaahs.getBang +import baaahs.gl.autoWire +import baaahs.gl.kexpect +import baaahs.gl.patch.ContentType.Companion.Color +import baaahs.gl.render.RenderManager +import baaahs.gl.testToolchain +import baaahs.glsl.Shaders +import baaahs.only +import baaahs.plugin.CorePlugin +import baaahs.shaders.fakeFixture +import baaahs.show.DataSource +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.show.live.ActivePatchSet +import baaahs.show.live.OpenButtonControl +import baaahs.show.live.ShowOpener +import baaahs.show.mutable.* +import baaahs.shows.FakeGlContext +import baaahs.shows.FakeShowPlayer +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +@Suppress("unused") +object PatchResolverSpec : Spek({ + describe("Layering of patch links") { + fun autoWire(vararg shaders: Shader, shaderChannel: ShaderChannel = ShaderChannel.Main): MutablePatch { + return testToolchain.autoWire(*shaders, shaderChannel = shaderChannel) + .acceptSuggestedLinkOptions().confirm() + } + + val uvShader = Shaders.cylindricalProjection + val blackShader by value { + Shader( + "Black Shader", "void main() {\n gl_FragColor = vec4(0.);\n}" + ) + } + val orangeShader by value { + Shader( + "Orange Shader", + /**language=glsl*/ + """ + uniform float time; + void main() { + gl_FragColor = vec4(1., .5, time, gl_FragCoord.x); + } + """.trimIndent() + ) + } + val brightnessFilter by value { + Shader( + "Brightness Filter", + /**language=glsl*/ + """ + uniform float brightness; // @@Slider min=0 max=1 default=1 + // @return color + // @param colorIn color + vec4 main(vec4 colorIn) { + return colorIn * brightness; + } + """.trimIndent() + ) + } + val wobblyTimeFilter by value { + Shader( + "Wobbly Time Filter", + /**language=glsl*/ + src = """ + uniform float time; // @type time + // @return time + float main() { return time + sin(time); } + """.trimIndent() + ) + } + val mutableShow by value { + MutableShow("test show") { + editLayouts { panelNames = mutableListOf("Main") } + } + } + val show by value { + val show = mutableShow.build(ShowBuilder()) + ShowOpener(testToolchain, show, FakeShowPlayer()).openShow() + } + val linkedPatch by value { generateLinkedPatch(show.allDataSources, show.activePatchSet()) } + + fun clickButton(id: String) { + (show.allControls.associateBy { it.id }.getBang(id, "control") as OpenButtonControl) + .click() + } + + context("for a show with a couple buttons") { + beforeEachTest { + mutableShow.apply { + addPatch(autoWire(uvShader, blackShader)) + + addButton("Main", "Brightness") { + addPatch(autoWire(brightnessFilter)) + } + + addButton("Main", "Orange") { + addPatch(autoWire(orangeShader).apply { + this.mutableShaderInstances.first().incomingLinks.forEach { (k, v) -> + println("$k = $v") + } + }) + } + } + } + + it("merges layered patches into a single patch") { + clickButton("brightnessButton") + clickButton("orangeButton") + + kexpect(linkedPatch.toGlsl()).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + + // Data source: Brightness Slider + uniform float in_brightnessSlider; + + // Data source: Model Info + uniform ModelInfo in_modelInfo; + + // Data source: Pixel Location + uniform sampler2D ds_pixelLocation_texture; + vec3 ds_pixelLocation_getPixelCoords(vec2 rasterCoord) { + return texelFetch(ds_pixelLocation_texture, ivec2(rasterCoord.xy), 0).xyz; + } + vec3 in_pixelLocation; + + // Data source: Time + uniform float in_time; + + // Shader: Cylindrical Projection; namespace: p0 + // Cylindrical Projection + + vec2 p0_cylindricalProjectioni_result = vec2(0.); + + #line 10 + const float p0_cylindricalProjection_PI = 3.141592654; + + #line 14 + vec2 p0_cylindricalProjection_main(vec3 pixelLocation) { + vec3 pixelOffset = pixelLocation - in_modelInfo.center; + vec3 normalDelta = normalize(pixelOffset); + float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π] + if (theta < 0.0) theta += (2.0f * p0_cylindricalProjection_PI); // theta in range [0,2π) + float u = theta / (2.0f * p0_cylindricalProjection_PI) * 2.; // u in range [0,1) + float v = (pixelOffset.y + in_modelInfo.extents.y / 2.0f) / in_modelInfo.extents.y; + return vec2(u, v); + } + + // Shader: Orange Shader; namespace: p1 + // Orange Shader + + vec4 p1_orangeShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p1_orangeShader_main() { + p1_orangeShader_gl_FragColor = vec4(1., .5, in_time, p0_cylindricalProjectioni_result.x); + } + + // Shader: Brightness Filter; namespace: p2 + // Brightness Filter + + vec4 p2_brightnessFilteri_result = vec4(0., 0., 0., 1.); + + #line 4 + vec4 p2_brightnessFilter_main(vec4 colorIn) { + return colorIn * in_brightnessSlider; + } + + + #line 10001 + void main() { + // Invoke Pixel Location + in_pixelLocation = ds_pixelLocation_getPixelCoords(gl_FragCoord.xy); + + // Invoke Cylindrical Projection + p0_cylindricalProjectioni_result = p0_cylindricalProjection_main(in_pixelLocation); + + // Invoke Orange Shader + p1_orangeShader_main(); + + // Invoke Brightness Filter + p2_brightnessFilteri_result = p2_brightnessFilter_main(p1_orangeShader_gl_FragColor); + + sm_result = p2_brightnessFilteri_result; + } + + """.trimIndent() + ) + } + + context("with a data source filter") { + beforeEachTest { + mutableShow.apply { + addButton("Main", "Time Wobble") { + addPatch(autoWire(wobblyTimeFilter, shaderChannel = ShaderChannel("time")).apply { + mutableShaderInstances.only("shader instance") + .incomingLinks["time"] = MutableDataSourcePort(CorePlugin.TimeDataSource()) + }) + } + } + } + + it("merges layered patches into a single patch") { + clickButton("brightnessButton") + clickButton("orangeButton") + clickButton("timeWobbleButton") + + kexpect(linkedPatch.toGlsl()).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + + // Data source: Brightness Slider + uniform float in_brightnessSlider; + + // Data source: Model Info + uniform ModelInfo in_modelInfo; + + // Data source: Pixel Location + uniform sampler2D ds_pixelLocation_texture; + vec3 ds_pixelLocation_getPixelCoords(vec2 rasterCoord) { + return texelFetch(ds_pixelLocation_texture, ivec2(rasterCoord.xy), 0).xyz; + } + vec3 in_pixelLocation; + + // Data source: Time + uniform float in_time; + + // Shader: Cylindrical Projection; namespace: p0 + // Cylindrical Projection + + vec2 p0_cylindricalProjectioni_result = vec2(0.); + + #line 10 + const float p0_cylindricalProjection_PI = 3.141592654; + + #line 14 + vec2 p0_cylindricalProjection_main(vec3 pixelLocation) { + vec3 pixelOffset = pixelLocation - in_modelInfo.center; + vec3 normalDelta = normalize(pixelOffset); + float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π] + if (theta < 0.0) theta += (2.0f * p0_cylindricalProjection_PI); // theta in range [0,2π) + float u = theta / (2.0f * p0_cylindricalProjection_PI) * 2.; // u in range [0,1) + float v = (pixelOffset.y + in_modelInfo.extents.y / 2.0f) / in_modelInfo.extents.y; + return vec2(u, v); + } + + // Shader: Wobbly Time Filter; namespace: p1 + // Wobbly Time Filter + + float p1_wobblyTimeFilteri_result = 0.; + + #line 3 + float p1_wobblyTimeFilter_main() { return in_time + sin(in_time); } + + // Shader: Orange Shader; namespace: p2 + // Orange Shader + + vec4 p2_orangeShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p2_orangeShader_main() { + p2_orangeShader_gl_FragColor = vec4(1., .5, p1_wobblyTimeFilteri_result, p0_cylindricalProjectioni_result.x); + } + + // Shader: Brightness Filter; namespace: p3 + // Brightness Filter + + vec4 p3_brightnessFilteri_result = vec4(0., 0., 0., 1.); + + #line 4 + vec4 p3_brightnessFilter_main(vec4 colorIn) { + return colorIn * in_brightnessSlider; + } + + + #line 10001 + void main() { + // Invoke Pixel Location + in_pixelLocation = ds_pixelLocation_getPixelCoords(gl_FragCoord.xy); + + // Invoke Cylindrical Projection + p0_cylindricalProjectioni_result = p0_cylindricalProjection_main(in_pixelLocation); + + // Invoke Wobbly Time Filter + p1_wobblyTimeFilteri_result = p1_wobblyTimeFilter_main(); + + // Invoke Orange Shader + p2_orangeShader_main(); + + // Invoke Brightness Filter + p3_brightnessFilteri_result = p3_brightnessFilter_main(p2_orangeShader_gl_FragColor); + + sm_result = p3_brightnessFilteri_result; + } + + """.trimIndent() + ) + } + } + } + + context("with a color mixer") { + beforeEachTest { + mutableShow.apply { + addPatch(autoWire(uvShader, blackShader)) + addPatch( + autoWire( + Shader( + "A Main Shader", + /**language=glsl*/ + """ + uniform float time; + void main() { + gl_FragColor = vec4(time, time, time, gl_FragCoord.x); + } + """.trimIndent() + ), shaderChannel = ShaderChannel("main") + ) + ) + addPatch( + testToolchain.autoWire( + Shader( + "Fade", + /**language=glsl*/ + """ + uniform float fade; + varying vec4 otherColorStream; // @type color + + // @return color + // @param colorIn color + vec4 main(vec4 colorIn) { + return mix(colorIn, otherColorStream, fade); + } + """.trimIndent() + ) + ).editAll { + linkOptionsFor("otherColorStream").apply { + clear() + add(PortLinkOption(MutableShaderChannel("other"))) + } + }.acceptSuggestedLinkOptions().confirm() + ) + addPatch(autoWire(orangeShader, shaderChannel = ShaderChannel("other"))) + addPatch(autoWire(wobblyTimeFilter, shaderChannel = ShaderChannel("time"))) + } + } + + it("merges layered patches into a single patch") { + kexpect(linkedPatch.toGlsl()).toBe( + /**language=glsl*/ + """ + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + + // Data source: Fade Slider + uniform float in_fadeSlider; + + // Data source: Model Info + uniform ModelInfo in_modelInfo; + + // Data source: Pixel Location + uniform sampler2D ds_pixelLocation_texture; + vec3 ds_pixelLocation_getPixelCoords(vec2 rasterCoord) { + return texelFetch(ds_pixelLocation_texture, ivec2(rasterCoord.xy), 0).xyz; + } + vec3 in_pixelLocation; + + // Data source: Time + uniform float in_time; + + // Shader: Cylindrical Projection; namespace: p0 + // Cylindrical Projection + + vec2 p0_cylindricalProjectioni_result = vec2(0.); + + #line 10 + const float p0_cylindricalProjection_PI = 3.141592654; + + #line 14 + vec2 p0_cylindricalProjection_main(vec3 pixelLocation) { + vec3 pixelOffset = pixelLocation - in_modelInfo.center; + vec3 normalDelta = normalize(pixelOffset); + float theta = atan(abs(normalDelta.z), normalDelta.x); // theta in range [-π,π] + if (theta < 0.0) theta += (2.0f * p0_cylindricalProjection_PI); // theta in range [0,2π) + float u = theta / (2.0f * p0_cylindricalProjection_PI) * 2.; // u in range [0,1) + float v = (pixelOffset.y + in_modelInfo.extents.y / 2.0f) / in_modelInfo.extents.y; + return vec2(u, v); + } + + // Shader: Wobbly Time Filter; namespace: p1 + // Wobbly Time Filter + + float p1_wobblyTimeFilteri_result = 0.; + + #line 3 + float p1_wobblyTimeFilter_main() { return in_time + sin(in_time); } + + // Shader: A Main Shader; namespace: p2 + // A Main Shader + + vec4 p2_aMainShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p2_aMainShader_main() { + p2_aMainShader_gl_FragColor = vec4(p1_wobblyTimeFilteri_result, p1_wobblyTimeFilteri_result, p1_wobblyTimeFilteri_result, p0_cylindricalProjectioni_result.x); + } + + // Shader: Orange Shader; namespace: p3 + // Orange Shader + + vec4 p3_orangeShader_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p3_orangeShader_main() { + p3_orangeShader_gl_FragColor = vec4(1., .5, p1_wobblyTimeFilteri_result, p0_cylindricalProjectioni_result.x); + } + + // Shader: Fade; namespace: p4 + // Fade + + vec4 p4_fadei_result = vec4(0., 0., 0., 1.); + + #line 6 + vec4 p4_fade_main(vec4 colorIn) { + return mix(colorIn, p3_orangeShader_gl_FragColor, in_fadeSlider); + } + + + #line 10001 + void main() { + // Invoke Pixel Location + in_pixelLocation = ds_pixelLocation_getPixelCoords(gl_FragCoord.xy); + + // Invoke Cylindrical Projection + p0_cylindricalProjectioni_result = p0_cylindricalProjection_main(in_pixelLocation); + + // Invoke Wobbly Time Filter + p1_wobblyTimeFilteri_result = p1_wobblyTimeFilter_main(); + + // Invoke A Main Shader + p2_aMainShader_main(); + + // Invoke Orange Shader + p3_orangeShader_main(); + + // Invoke Fade + p4_fadei_result = p4_fade_main(p2_aMainShader_gl_FragColor); + + sm_result = p4_fadei_result; + } + + """.trimIndent() + ) + } + } + } +}) + +private fun generateLinkedPatch(dataSources: Map, activePatchSet: ActivePatchSet): LinkedPatch { + val model = TestModel + val renderManager = RenderManager(model) { FakeGlContext() } + val fixture = model.allEntities.first() + val renderTarget = renderManager.addFixture(fakeFixture(1, fixture)) + val patchResolution = PatchResolver(listOf(renderTarget), activePatchSet, renderManager) + val portDiagram = patchResolution.portDiagrams + .getBang(PixelArrayDevice, "device type") + .only("port diagram to render targets") + .first + return portDiagram.resolvePatch(ShaderChannel.Main, Color, dataSources)!! +} diff --git a/src/commonTest/kotlin/baaahs/gl/patch/PortDiagramSpec.kt b/src/commonTest/kotlin/baaahs/gl/patch/PortDiagramSpec.kt new file mode 100644 index 0000000000..ed94555c7d --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/patch/PortDiagramSpec.kt @@ -0,0 +1,77 @@ +package baaahs.gl.patch + +import baaahs.describe +import baaahs.gl.openShader +import baaahs.gl.patch.PortDiagram.ChannelEntry +import baaahs.gl.shader.type.FilterShader +import baaahs.gl.testToolchain +import baaahs.show.Shader +import baaahs.show.ShaderChannel +import baaahs.show.live.LiveShaderInstance +import baaahs.show.live.fakeShader +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import kotlin.test.assertTrue + +object PortDiagramSpec : Spek({ + describe { + context("shader prioritization") { + fun Shader.enliven(links: Map = emptyMap()) = + LiveShaderInstance(testToolchain.openShader(this), links, ShaderChannel.Main, 0f) + + val shaderA by value { fakeShader("Shader A").enliven() } + val shaderB by value { fakeShader("Shader B").enliven() } + val filterShaderA by value { + fakeShader("Shader A", FilterShader) + .enliven(mapOf("inColor" to LiveShaderInstance.ShaderChannelLink(ShaderChannel.Main))) + } + + it("shaders with higher priority always come first") { + ChannelEntry(shaderA, priority = 1f, level = 0) + .shouldComeBefore(ChannelEntry(shaderB, priority = 0f, level = 0)) + + ChannelEntry(shaderB, priority = 1f, level = 0) + .shouldComeBefore(ChannelEntry(shaderA, priority = 0f, level = 0)) + + ChannelEntry(shaderA, priority = 1f, level = 0) + .shouldComeBefore(ChannelEntry(shaderB, priority = 0f, level = 10)) + + ChannelEntry(shaderA, priority = 1f, level = 0) + .shouldComeBefore(ChannelEntry(filterShaderA, priority = 0f, level = 0)) + + } + + it("shaders with the same priority at a lower level in the tree come first") { + ChannelEntry(shaderA, priority = 0f, level = 1) + .shouldComeBefore(ChannelEntry(shaderB, priority = 0f, level = 0)) + + ChannelEntry(shaderB, priority = 0f, level = 1) + .shouldComeBefore(ChannelEntry(shaderA, priority = 0f, level = 0)) + } + + it("filter shaders with the same priority should come before non-filter shaders") { + ChannelEntry(filterShaderA, priority = 0f, level = 0) + .shouldComeBefore(ChannelEntry(shaderA, priority = 0f, level = 0)) + + ChannelEntry(filterShaderA, priority = 0f, level = 0) + .shouldComeBefore(ChannelEntry(shaderA, priority = 0f, level = 1)) + } + + it("when all other aspects are equal, sort by lexical order of shader name") { + ChannelEntry(shaderA, priority = 0f, level = 0) + .shouldComeBefore(ChannelEntry(shaderB, priority = 0f, level = 0)) + } + } + } +}) + +fun ChannelEntry.shouldComeBefore(other: ChannelEntry) { + val comparison = PortDiagram.Candidates.comparator.compare(this, other) + assertTrue("${this.shaderInstance.title} should come before ${other.shaderInstance.title}, " + + "but ${if (comparison == 0) "they are equivalent" else "it comes after"}") { comparison == -1 } + + // Verify that we're actually sorting using that comparator. + expect(PortDiagram.Candidates(listOf(this, other)).iterator().asSequence().toList()) + .containsExactly(this.shaderInstance, other.shaderInstance) +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/render/ModelRenderEngineSpec.kt b/src/commonTest/kotlin/baaahs/gl/render/ModelRenderEngineSpec.kt new file mode 100644 index 0000000000..65b2637606 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/render/ModelRenderEngineSpec.kt @@ -0,0 +1,290 @@ +package baaahs.gl.render + +import baaahs.TestModel +import baaahs.describe +import baaahs.englishize +import baaahs.fixtures.DeviceType +import baaahs.fixtures.Fixture +import baaahs.fixtures.NullTransport +import baaahs.fixtures.ResultParam +import baaahs.geom.Vector3F +import baaahs.gl.* +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.ContentType +import baaahs.gl.patch.ContentType.Companion.Color +import baaahs.gl.patch.ProgramLinker +import baaahs.gl.shader.InputPort +import baaahs.only +import baaahs.plugin.SerializerRegistrar +import baaahs.show.* +import baaahs.show.Shader +import baaahs.show.live.LinkedShaderInstance +import baaahs.show.live.link +import baaahs.shows.FakeGlContext +import baaahs.shows.FakeShowPlayer +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import com.danielgergely.kgl.* +import org.spekframework.spek2.Spek + +@Suppress("unused") +object ModelRenderEngineSpec : Spek({ + describe { + val gl by value { FakeGlContext() } + val updateMode by value { UpdateMode.ONCE } + val fixtureDataSource by value { PerFixtureDataSourceForTest(updateMode) } + val pixelDataSource by value { PerPixelDataSourceForTest(updateMode) } + val dataSource by value { fixtureDataSource } + val deviceType by value { DeviceTypeForTest(dataSource) } + val renderEngine by value { ModelRenderEngine(gl, TestModel, deviceType, minTextureWidth = 1) } + val texture by value { gl.textures.only("texture") } + + context("when engine has just been started") { + beforeEachTest { renderEngine.run { /* No-op. */ } } + + it("should have no feeds open yet") { + expect(fixtureDataSource.feeds.size).toBe(0) + expect(fixtureDataSource.engineFeeds.size).toBe(0) + expect(fixtureDataSource.programFeeds.size).toBe(0) + } + + context("when the engine is released") { + beforeEachTest { renderEngine.release() } + + it("should release Feeds and EngineFeeds") { + expect(fixtureDataSource.feeds.all { it.released }).toBe(true) + expect(fixtureDataSource.engineFeeds.all { it.released }).toBe(true) + } + } + } + + context("when a program is compiled") { + val shader by value { + Shader( + "Title", """ + uniform float time; + + void main(void) { gl_FragColor = doesntMatter(gl_FragCoord); } + """.trimIndent() + ) + } + val openShader by value { testToolchain.openShader(shader) } + val incomingLinks by value { mapOf("gl_FragCoord" to dataSource.link("coord")) } + val linkedPatch by value { + val rootNode = LinkedShaderInstance(openShader, incomingLinks, ShaderChannel.Main, 0f) + ProgramLinker(rootNode).buildLinkedPatch() + } + val program by value { + renderEngine.compile(linkedPatch) { id, dataSource -> dataSource.createFeed(FakeShowPlayer(), id) } + } + val initialProgram by value> { arrayOf(program) } // Array is a workaround for a bug in by value. + val fakeGlProgram by value { gl.programs.only("program") } + + beforeEachTest { initialProgram.run { } } + + it("should bind EngineFeeds for each data source") { + expect(fixtureDataSource.feeds.size).toBe(1) + expect(fixtureDataSource.engineFeeds.size).toBe(1) + expect(fixtureDataSource.programFeeds.size).toBe(1) + } + + it("should bind program uniforms") { + expect(fakeGlProgram.uniformNames()).toBe(setOf("perFixtureData")) + } + + context("when the data source is per-pixel") { + override(dataSource) { pixelDataSource } + + it("should allocate a texture to hold per-pixel data") { + expect(texture.width to texture.height).toBe(1 to 1) + expect(texture.internalFormat).toBe(GlContext.GL_RGB32F) + expect(texture.format).toBe(GL_RED) + expect(texture.type).toBe(GL_FLOAT) + expect(texture.params[GL_TEXTURE_MIN_FILTER]).toBe(GL_NEAREST) + expect(texture.params[GL_TEXTURE_MAG_FILTER]).toBe(GL_NEAREST) + + val buffer = texture.buffer + println("buffer = $buffer") +// expect(300) { buffer. } + } + } + + context("when the program is released") { + beforeEachTest { program.release() } + + it("should release Feeds and EngineFeeds") { + expect(fixtureDataSource.feeds.all { it.released }).toBe(false) + expect(fixtureDataSource.engineFeeds.all { it.released }).toBe(false) + expect(fixtureDataSource.programFeeds.all { it.released }).toBe(true) + } + } + + context("when the engine is released") { + beforeEachTest { renderEngine.release() } + + it("should release EngineFeeds") { + expect(fixtureDataSource.engineFeeds.all { it.released }).toBe(true) + } + + context("when the data source is per-pixel") { + override(dataSource) { pixelDataSource } + + it("should release the texture") { + expect(texture.isDeleted).toBe(true) + expect(gl.allocatedTextureUnits).isEmpty() + } + } + } + + context("when a fixtures are added") { + val fixture1Target by value { + renderEngine.addFixture(testFixture(deviceType, 1, 0f)) + } + val fixture2Target by value { + renderEngine.addFixture(testFixture(deviceType, 2, 0.1f)) + } + val addTwoFixtures by value { { fixture1Target.run { }; fixture2Target.run { } } } + val renderPlan by value { renderPlanFor(initialProgram[0]!!, fixture1Target, fixture2Target) } + val drawTwoFrames by value { + { + renderEngine.setRenderPlan(renderPlan) + renderEngine.draw() + renderEngine.draw() + } + } + + beforeEachTest { addTwoFixtures() } + + context("when two frames are rendered") { + beforeEachTest { + // Two frames so we can observe when uniforms are updated. + drawTwoFrames() + } + + it("should set uniforms appropriately") { + expect(fakeGlProgram.renders.map { it.uniforms["perFixtureData"] }) + .containsExactly(0,0,0,0) + } + + context("when updateMode is per frame") { + override(updateMode) { UpdateMode.PER_FRAME } + it("should set uniforms appropriately") { + expect(fakeGlProgram.renders.map { it.uniforms["perFixtureData"] }) + .containsExactly(0,0,1,1) + } + } + + context("when updateMode is per fixture") { + override(updateMode) { UpdateMode.PER_FIXTURE } + it("should set uniforms appropriately") { + expect(fakeGlProgram.renders.map { it.uniforms["perFixtureData"] }) + .containsExactly(0,1,2,3) + } + } + + context("when the data source is per-pixel") { + override(dataSource) { pixelDataSource } + + it("should allocate a texture to hold per-pixel data for all fixtures") { + expect(texture.width to texture.height) + .toBe(3 to 1) + expect(fakeGlProgram.renders.map { it.textureBuffers.only("texture buffer") }) + .containsExactly( + listOf(10f, 20f, 21f), // First frame, fixture1. + listOf(10f, 20f, 21f), // First frame, fixture2. + listOf(10f, 20f, 21f), // Second frame, fixture1. + listOf(10f, 20f, 21f) // Second frame, fixture2. + ) + } + + context("when updateMode is per frame") { + override(updateMode) { UpdateMode.PER_FRAME } + + it("should allocate a texture to hold per-pixel data for all fixtures") { + expect(texture.width to texture.height) + .toBe(3 to 1) + expect(fakeGlProgram.renders.map { it.textureBuffers.only("texture buffer") }) + .containsExactly( + // 10f-41f are currently issued when the feed is first bound; + // we could eliminate that overhead but probably not really worth it. + listOf(30f, 40f, 41f), // First frame, fixture1. + listOf(30f, 40f, 41f), // First frame, fixture2. + listOf(50f, 60f, 61f), // Second frame, fixture1. + listOf(50f, 60f, 61f) // Second frame, fixture2. + ) + } + } + + context("when per-pixel data source isn't provided by the fixture, and the fixtures were previously rendered to without the data source") { + override(deviceType) { DeviceTypeForTest() } + override(initialProgram) { arrayOf(null) } + override(drawTwoFrames) { {} } + + beforeEachTest { + // This causes program to be compiled finally. + renderEngine.setRenderPlan(renderPlanFor(program, fixture1Target, fixture2Target)) + renderEngine.draw() + renderEngine.draw() + } + + it("should allocate a texture to hold per-pixel data for all fixtures") { + expect(texture.width to texture.height) + .toBe(3 to 1) + expect(fakeGlProgram.renders.map { it.textureBuffers.only("texture buffer") }) + .containsExactly( + listOf(10f, 20f, 21f), // First frame, fixture1. + listOf(10f, 20f, 21f), // First frame, fixture2. + listOf(10f, 20f, 21f), // Second frame, fixture1. + listOf(10f, 20f, 21f) // Second frame, fixture2. + ) + } + } + } + } + } + } + } +}) + +private fun testFixture(deviceType: DeviceTypeForTest, pixelCount: Int, initial: Float = 0f) = + Fixture(null, pixelCount, someVectors(pixelCount, initial), deviceType, transport = NullTransport) + +private fun someVectors(count: Int, initial: Float = 0f): List = + (0 until count).map { Vector3F(initial + count / 10f, 0f, 0f) } + +class DeviceTypeForTest( + vararg val fixtureDataSources: DataSource, + override val resultContentType: ContentType = Color, + override val id: String = "testDevice", + override val title: String = id.englishize(), + override val likelyPipelines: List> = + with(ContentType) { + listOf( + XyzCoordinate to UvCoordinate, + UvCoordinate to Color + ) + } +) : DeviceType { + override val dataSourceBuilders: List> + get() = fixtureDataSources.map { dataSource -> + object : DataSourceBuilder { + override val resourceName: String get() = "resName$dataSource" + override val contentType: ContentType get() = dataSource.contentType + override val serializerRegistrar: SerializerRegistrar get() = TODO("not implemented") + override fun build(inputPort: InputPort): DataSource = dataSource + } + } + + override val resultParams: List + get() = emptyList() + override val errorIndicatorShader: Shader + get() = Shader("Ω Guru Meditation Error Ω", "") + override fun toString(): String = id +} + +fun Boolean.truify(): Boolean { + if (this) error("already true!") + return true +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/render/PerFixtureDataSourceForTest.kt b/src/commonTest/kotlin/baaahs/gl/render/PerFixtureDataSourceForTest.kt new file mode 100644 index 0000000000..335fea15f2 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/render/PerFixtureDataSourceForTest.kt @@ -0,0 +1,57 @@ +package baaahs.gl.render + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.ShowPlayer +import baaahs.gl.GlContext +import baaahs.gl.data.EngineFeed +import baaahs.gl.data.Feed +import baaahs.gl.data.ProgramFeed +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.show.DataSource +import baaahs.show.UpdateMode + +class PerFixtureDataSourceForTest(val updateMode: UpdateMode) : DataSource { + override val pluginPackage: String get() = error("not implemented") + override val title: String get() = "Per Fixture Data Source For Test" + override fun getType(): GlslType = GlslType.Float + override val contentType: ContentType get() = ContentType.Unknown + + val feeds = mutableListOf() + val engineFeeds = mutableListOf() + val programFeeds = mutableListOf() + + var counter = 0 + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + TestFeed(id).also { feeds.add(it) } + + inner class TestFeed(val id: String) : Feed, RefCounted by RefCounter() { + var released = false + override fun bind(gl: GlContext): EngineFeed = TestEngineFeed().also { engineFeeds.add(it) } + override fun release() = run { super.release(); released = released.truify() } + } + + inner class TestEngineFeed : EngineFeed { + var released = false + override fun bind(glslProgram: GlslProgram): ProgramFeed = TestProgramFeed(glslProgram).also { programFeeds.add(it) } + override fun release() = run { super.release(); released = released.truify() } + } + + inner class TestProgramFeed(glslProgram: GlslProgram) : ProgramFeed { + override val updateMode: UpdateMode get() = this@PerFixtureDataSourceForTest.updateMode + + val uniform = glslProgram.getUniform("perFixtureData") + var released = false + + override fun setOnProgram() = run { + uniform?.set(counter++) + } as Unit + + override fun setOnProgram(renderTarget: RenderTarget) = setOnProgram() + + override fun release() = run { super.release(); released = released.truify() } + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/render/PerPixelDataSourceForTest.kt b/src/commonTest/kotlin/baaahs/gl/render/PerPixelDataSourceForTest.kt new file mode 100644 index 0000000000..4be909b1fc --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/render/PerPixelDataSourceForTest.kt @@ -0,0 +1,61 @@ +package baaahs.gl.render + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.ShowPlayer +import baaahs.fixtures.FloatsParamBuffer +import baaahs.fixtures.ParamBuffer +import baaahs.gl.GlContext +import baaahs.gl.data.* +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.glsl.GlslType +import baaahs.gl.patch.ContentType +import baaahs.show.DataSource +import baaahs.show.UpdateMode + +class PerPixelDataSourceForTest(val updateMode: UpdateMode) : DataSource { + override val pluginPackage: String get() = error("not implemented") + override val title: String get() = "Per Pixel Data Source For Test" + override fun getType(): GlslType = GlslType.Float + override val contentType: ContentType get() = ContentType.Unknown + + val feeds = mutableListOf() + val engineFeeds = mutableListOf() + val programFeeds = mutableListOf() + + var counter = 0f + + override fun createFeed(showPlayer: ShowPlayer, id: String): Feed = + TestFeed(id).also { feeds.add(it) } + + inner class TestFeed(val id: String) : Feed, RefCounted by RefCounter() { + var released = false + override fun bind(gl: GlContext): EngineFeed = TestEngineFeed(gl).also { engineFeeds.add(it) } + override fun release() = run { super.release(); released = released.truify() } + } + + inner class TestEngineFeed(gl: GlContext) : PerPixelEngineFeed { + var released = false + override val updateMode: UpdateMode get() = this@PerPixelDataSourceForTest.updateMode + override val buffer: FloatsParamBuffer = FloatsParamBuffer("---", 1, gl) + + override fun setOnBuffer(renderTarget: RenderTarget) = run { + renderTarget as FixtureRenderTarget + counter++ + buffer.scoped(renderTarget) { pixelIndex -> + counter * 10 + pixelIndex + } + Unit + } + + override fun bind(glslProgram: GlslProgram): PerPixelProgramFeed = TestProgramFeed(glslProgram).also { programFeeds.add(it) } + override fun release() = run { super.release(); released = released.truify() } + + inner class TestProgramFeed(glslProgram: GlslProgram) : PerPixelProgramFeed(updateMode) { + override val buffer: ParamBuffer get() = this@TestEngineFeed.buffer + override val uniform = glslProgram.getUniform("perPixelDataTexture") ?: error("no uniform") + var released = false + override fun release() = run { super.release(); released = released.truify() } + } + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/render/RenderEngineTest.kt b/src/commonTest/kotlin/baaahs/gl/render/RenderEngineTest.kt new file mode 100644 index 0000000000..75eed09c7d --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/render/RenderEngineTest.kt @@ -0,0 +1,305 @@ +package baaahs.gl.render + +import baaahs.Color +import baaahs.TestModel +import baaahs.TestModelSurface +import baaahs.fixtures.ColorResultType +import baaahs.fixtures.Fixture +import baaahs.fixtures.NullTransport +import baaahs.fixtures.PixelArrayDevice +import baaahs.gadgets.Slider +import baaahs.geom.Vector3F +import baaahs.gl.* +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.ContentType +import baaahs.plugin.CorePlugin +import baaahs.show.Shader +import baaahs.shows.FakeShowPlayer +import kotlin.math.abs +import kotlin.random.Random +import kotlin.test.* + +class RenderEngineTest { + // assumeTrue() doesn't work in js runners; instead, bail manually. + // TODO: Do something better. +// @BeforeTest +// fun verifyGlslAvailable() = assumeTrue(GlslBase.manager.available) + + fun glslAvailable(): Boolean { + val available = GlBase.manager.available + if (!available) { + println("WARNING: OpenGL not available, skipping test!") + } + return available + } + + private lateinit var glContext: GlContext + private lateinit var renderEngine: ModelRenderEngine + private lateinit var fakeShowPlayer: FakeShowPlayer + + @BeforeTest + fun setUp() { + if (glslAvailable()) { + glContext = GlBase.manager.createContext() + renderEngine = ModelRenderEngine(glContext, TestModel, PixelArrayDevice) + fakeShowPlayer = FakeShowPlayer() + } + } + + @AfterTest + fun tearDown() { + if (glslAvailable()) { + glContext.release() + renderEngine.release() + } + } + + // TODO: Need to swap out uvShader for simpler test version to get this passing. + + @Test + fun testSimpleRendering() { + if (!glslAvailable()) return + + val program = + /**language=glsl*/ + """ + uniform float time; + void main() { + gl_FragColor = vec4(gl_FragCoord.xy, 0.5, 1.); + } + """.trimIndent() + + val glslProgram = compileAndBind(program) + val renderTarget = renderEngine.addFixture(fakeSurface()) + renderEngine.setRenderPlan(renderPlanFor(glslProgram, renderTarget)) + + renderEngine.draw() + + expectColor( + Color(0f, .1f, .5f), + Color(.2f, .3f, .5f), + Color(.4f, .5f, .5f) + ) { renderTarget.colors.toList() } + } + + @Test + fun testRenderingWithUniform() { + if (!glslAvailable()) return + + val program = + /**language=glsl*/ + """ + uniform float time; + uniform float blue; // @@Slider + + void main() { + gl_FragColor = vec4(gl_FragCoord.xy, blue, 1.); + } + """.trimIndent() + + val glslProgram = compileAndBind(program) + val renderTarget = renderEngine.addFixture(fakeSurface()) + renderEngine.setRenderPlan(renderPlanFor(glslProgram, renderTarget)) + + fakeShowPlayer.getGadget("blueSlider").value = .1f + renderEngine.draw() + + expectColor( + Color(0f, .1f, .1f), + Color(.2f, .3f, .1f), + Color(.4f, .5f, .1f) + ) { renderTarget.colors.toList() } + + fakeShowPlayer.getGadget("blueSlider").value = .2f + renderEngine.draw() + + expectColor( + Color(0f, .1f, .2f), + Color(.2f, .3f, .2f), + Color(.4f, .5f, .2f) + ) { renderTarget.colors.toList() } + } + + @Test + fun testRenderingWithMultipleFixtures() { + if (!glslAvailable()) return + + val program = + /**language=glsl*/ + """ + uniform float time; + void main() { + gl_FragColor = vec4(gl_FragCoord.xy, 0.5, 1.); + } + """.trimIndent() + + val glslProgram = compileAndBind(program) + + val renderTarget1 = renderEngine.addFixture(fakeSurface("s1")) + val renderTarget2 = renderEngine.addFixture(fakeSurface("s2", 2)) + val renderTarget3 = renderEngine.addFixture(fakeSurface("s3")) + renderEngine.setRenderPlan(renderPlanFor(glslProgram, renderTarget1, renderTarget2, renderTarget3)) + + renderEngine.draw() + + expectColor( + Color(0f, .1f, .5f), + Color(.2f, .3f, .5f), + Color(.4f, .5f, .5f) + ) { renderTarget1.colors.toList() } + + expectColor( + Color(0f, .1f, .5f), + Color(.2f, .3f, .5f) + ) { renderTarget2.colors.toList() } + + expectColor( + Color(0f, .1f, .5f), + Color(.2f, .3f, .5f), + Color(.4f, .5f, .5f) + ) { renderTarget3.colors.toList() } + } + + @Ignore @Test // TODO: Per-surface uniform control TBD + fun testRenderingSurfacesWithDifferentBufferValues() { + if (!glslAvailable()) return + + val program = + /**language=glsl*/ + """ + // SPARKLEMOTION GADGET: Slider {name: "Blue", initialValue: 1.0, minValue: 0.0, maxValue: 1.0} + uniform float blue; + + uniform float time; + void main() { + gl_FragColor = vec4(gl_FragCoord.xy, blue, 1.); + } + """.trimIndent() + + val glslProgram = compileAndBind(program) + + val renderTarget1 = renderEngine.addFixture(fakeSurface("s1")) + val renderTarget2 = renderEngine.addFixture(fakeSurface("s2")) + renderEngine.setRenderPlan(renderPlanFor(glslProgram, renderTarget1, renderTarget2)) + + // TODO: yuck, let's not do this [first part] +// renderTarget1.uniforms.updateFrom(arrayOf(1f, 1f, 1f, 1f, 1f, 1f, .2f)) +// renderTarget2.uniforms.updateFrom(arrayOf(1f, 1f, 1f, 1f, 1f, 1f, .3f)) + + renderEngine.draw() + + expectColor( + Color(0f, .1f, .2f), + Color(.2f, .3f, .2f), + Color(.4f, .503f, .2f) + ) { renderTarget1.colors.toList() } + + // Interpolation between vertex 0 and the surface's center. + expectColor( + Color(.6f, .6f, .3f), + Color(.651f, .651f, .3f), + Color(.7f, .7f, .3f) + ) { renderTarget2.colors.toList() } + } + + @Test + fun mapFixturePanelsToRects_shouldWrapAsNecessary() { + + // .... + // xxx. + expect(listOf( + Quad.Rect(1f, 0f, 2f, 3f) + )) { ModelRenderEngine.mapFixturePixelsToRects(4, 4, createSurface("A", 3)) } + + // ...x + // xxxx + // xx.. + expect(listOf( + Quad.Rect(0f, 3f, 1f, 4f), + Quad.Rect(1f, 0f, 2f, 4f), + Quad.Rect(2f, 0f, 3f, 2f) + )) { ModelRenderEngine.mapFixturePixelsToRects(3, 4, createSurface("A", 7)) } + } + + private fun fakeSurface(name: String = "xyz", pixelCount: Int = 3): Fixture { + return Fixture( + TestModelSurface(name), + pixelCount, + /** + * e.g.: + * Vector3F(0f, .1f, 0f), + * Vector3F(.2f, .3f, 0f), + * Vector3F(.4f, .5f, 0f) + */ + (0 until pixelCount).map { i -> + val offset = i * .2f + Vector3F(0f + offset, .1f + offset, 0f) + }, + PixelArrayDevice, + transport = NullTransport + ) + } + + private fun createSurface(name: String, pixelCount: Int): Fixture { + return Fixture( + TestModelSurface(name), pixelCount, + (0 until pixelCount).map { Vector3F(Random.nextFloat(), Random.nextFloat(), Random.nextFloat()) }, + PixelArrayDevice, + transport = NullTransport + ) + } + + private fun compileAndBind(program: String): GlslProgram { + val shader = testToolchain.import(program) + val linkedPatch = testToolchain + .autoWire(directXyProjection, shader) + .acceptSuggestedLinkOptions() + .confirm() + .openForPreview(testToolchain, ContentType.Color)!! + return renderEngine.compile(linkedPatch) { id, dataSource -> + if (dataSource is CorePlugin.GadgetDataSource<*>) { + fakeShowPlayer.registerGadget(id, dataSource.createGadget(), dataSource) + } + dataSource.createFeed(fakeShowPlayer, id) + } + } + + // More forgiving color equality checking, allows each channel to be off by one. + fun expectColor(vararg expected: Color, actualFn: () -> List) { + val actual = actualFn() + val nearlyEqual = expected.zip(actual) { exp, act -> + val diff = exp - act + (diff.redI <= 1 && diff.greenI <= 1 && diff.blueI <= 1) + }.all { it } + if (!nearlyEqual) { + expect(expected.toList()) { actual } + } + } + + operator fun Color.minus(other: Color) = + Color(abs(redI - other.redI), abs(greenI - other.greenI), abs(blueI - other.blueI), abs(alphaI - other.alphaI)) +} + +private val directXyProjection = Shader( + "Direct XY Projection", + /**language=glsl*/ + """ + // Direct XY Projection + // !SparkleMotion:internal + + struct ModelInfo { + vec3 center; + vec3 extents; + }; + uniform ModelInfo modelInfo; + + // @return uv-coordinate + // @param pixelLocation xyz-coordinate + vec2 main(vec3 pixelLocation) { + return vec2(pixelLocation.x, pixelLocation.y); + } + """.trimIndent() +) + +val FixtureRenderTarget.colors: ColorResultType.ColorResultView + get() = PixelArrayDevice.getColorResults(this.resultViews) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/shader/OpenShaderSpec.kt b/src/commonTest/kotlin/baaahs/gl/shader/OpenShaderSpec.kt new file mode 100644 index 0000000000..4bf41e556d --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/shader/OpenShaderSpec.kt @@ -0,0 +1,48 @@ +package baaahs.gl.shader + +import baaahs.describe +import baaahs.gl.glsl.GlslCode +import baaahs.gl.override +import baaahs.gl.testToolchain +import baaahs.show.Shader +import baaahs.toEqual +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +@Suppress("unused") +object OpenShaderSpec : Spek({ + describe { + val src by value { + "void main(float intensity) { gl_FragColor = vec4(gl_FragCoord, 0., 1.); };" + } + val shader by value { Shader("Title", src) } + val shaderAnalysis by value { testToolchain.analyze(shader) } + val openShader by value { testToolchain.openShader(shaderAnalysis) } + val invocationStatement by value { + openShader.invocationGlsl( + GlslCode.Namespace("p"), "toResultVar", + mapOf("time" to "timeVal", "intensity" to "intensityVal") + ) + } + + it("generates an invocation statement") { + expect(invocationStatement).toEqual("p_main(intensityVal)") + } + + context("with additional parameters") { + override(src) { + """ + // @return time + float main( + float intensity, + float time // @type time + ) { return time + sin(time) * intensity; } + """.trimIndent() + } + + it("generates an invocation statement") { + expect(invocationStatement).toEqual("toResultVar = p_main(intensityVal, timeVal)") + } + } + } +}) diff --git a/src/commonTest/kotlin/baaahs/gl/shader/dialect/GenericShaderDialectSpec.kt b/src/commonTest/kotlin/baaahs/gl/shader/dialect/GenericShaderDialectSpec.kt new file mode 100644 index 0000000000..2de4ddb6b9 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/shader/dialect/GenericShaderDialectSpec.kt @@ -0,0 +1,109 @@ +package baaahs.gl.shader.dialect + +import baaahs.describe +import baaahs.gl.glsl.GlslAnalyzer +import baaahs.gl.glsl.GlslError +import baaahs.gl.glsl.GlslType +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.gl.testToolchain +import baaahs.show.Shader +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.contains +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +@Suppress("unused") +object GenericShaderDialectSpec : Spek({ + describe { + val src by value { + """ + // @return time + float main( + float time // @type time + ) { return time + sin(time); } + """.trimIndent() + } + val dialect by value { GenericShaderDialect } + val plugins by value { testToolchain.plugins } + val analyzer by value { GlslAnalyzer(plugins) } + val shaderAnalysis by value { testToolchain.analyze(Shader("Shader", src)) } + val glslCode by value { shaderAnalysis.glslCode } + val openShader by value { analyzer.openShader(shaderAnalysis) } + + context("shaders having a main() function") { + it("is a poor match (so this one acts as a fallback)") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.Poor) + } + + it("finds the input port") { + expect(shaderAnalysis.inputPorts.str()).containsExactly( + "time time:float (Time)" + ) + } + + context("when a shader refers to gl_FragColor") { + override(src) { "void main() { gl_FragColor = vec4(0.); }" } + + it("finds the output port") { + expect(shaderAnalysis.outputPorts).containsExactly( + OutputPort(ContentType.Color, description = "Output Color", id = "gl_FragColor") + ) + } + } + + context("when a shader refers to gl_FragCoord") { + override(src) { "vec4 main() { return vec4(gl_FragCoord.xy, 0., 0.); }" } + + it("includes it as an input port") { + expect(openShader.inputPorts).containsExactly( + InputPort( + "gl_FragCoord", ContentType.UvCoordinate, GlslType.Vec4, + "Coordinates", isImplicit = true + ) + ) + } + } + + context("with additional parameters") { + override(src) { "void main(float intensity) { gl_FragColor = vec4(gl_FragCoord, 0., 1.); };" } + + it("continues to be a match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.Poor) + } + + it("finds the input port") { + expect(openShader.inputPorts.str()).containsExactly( + "gl_FragCoord uv-coordinate:vec4 (Coordinates)", + "intensity unknown/float:float (Intensity)" + ) + } + } + + context("with multiple out parameters") { + override(src) { + "void main(in vec2 fragCoord, out vec4 fragColor, out float other) { gl_FragColor = vec4(gl_FragCoord, 0., 1.); };" + } + + it("fails to validate") { + expect(shaderAnalysis.isValid).toBe(false) + + expect(shaderAnalysis.errors).contains( + GlslError("Too many output ports found: [fragColor, gl_FragColor, other].", row = 1) + ) + } + } + } + + context("shaders without a main() function") { + override(src) { "void mainImage(void) { ... };" } + it("is not a match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.NoMatch) + } + } + } +}) diff --git a/src/commonTest/kotlin/baaahs/gl/shader/dialect/HintedShaderDialectSpec.kt b/src/commonTest/kotlin/baaahs/gl/shader/dialect/HintedShaderDialectSpec.kt new file mode 100644 index 0000000000..2604a86560 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/shader/dialect/HintedShaderDialectSpec.kt @@ -0,0 +1,123 @@ +package baaahs.gl.shader.dialect + +import baaahs.describe +import baaahs.gl.glsl.GlslParser +import baaahs.gl.glsl.GlslType +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.patch.ContentType.Companion.Color +import baaahs.gl.patch.ContentType.Companion.Float +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.gl.testPlugins +import baaahs.only +import baaahs.plugin.PluginRef +import baaahs.toBeSpecified +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.verbs.expect +import kotlinx.serialization.json.buildJsonObject +import org.spekframework.spek2.Spek + +@Suppress("unused") +object HintedShaderDialectSpec : Spek({ + describe { + val shaderText by value { toBeSpecified() } + val dialect by value { HintedShaderDialectForTest() } + val plugins by value { testPlugins() } + val glslCode by value { GlslParser().parse(shaderText) } + val shaderAnalysis by value { dialect.analyze(glslCode, plugins, null) } + + context("determining a method's output ports") { + context("when there are none") { + override(shaderText) { "void main() {}" } + + it("should return none") { + expect(shaderAnalysis.outputPorts).isEmpty() + } + } + + context("when main() returns a value") { + override(shaderText) { "vec4 main() { return vec4(1.); }" } + + it("should return it") { + expect(shaderAnalysis.outputPorts).containsExactly( + OutputPort( + ContentType.unknown(GlslType.Vec4), + id = OutputPort.ReturnValue, + dataType = GlslType.Vec4 + ) + ) + } + + context("and has a @return hint") { + override(shaderText) { "// @return color\nvec4 main() { return vec4(1.); }" } + + it("should return it") { + expect(shaderAnalysis.outputPorts).containsExactly( + OutputPort(Color, id = OutputPort.ReturnValue, dataType = GlslType.Vec4) + ) + } + } + } + + context("when main() includes out params") { + override(shaderText) { "void main(out vec4 colorOut) {}" } + + it("should return it") { + expect(shaderAnalysis.outputPorts).containsExactly( + OutputPort( + ContentType.unknown(GlslType.Vec4), + id = "colorOut", dataType = GlslType.Vec4, isParam = true + ) + ) + } + + context("and has a @param hint") { + override(shaderText) { "// @param colorOut color\nvoid main(out vec4 colorOut) {}" } + + it("should return it") { + expect(shaderAnalysis.outputPorts).containsExactly( + OutputPort(Color, id = "colorOut", dataType = GlslType.Vec4, isParam = true) + ) + } + } + + context("and has a @type hint on the param") { + override(shaderText) { "void main(\n out vec4 colorOut // @type color\n) {}" } + + it("should return it") { + expect(shaderAnalysis.outputPorts).containsExactly( + OutputPort(Color, id = "colorOut", dataType = GlslType.Vec4, isParam = true) + ) + } + } + } + } + + context("determining a method's input ports") { + context("when an in param specifies a plugin datasource") { + override(shaderText) { "void main(\n float arg // @@Slider\n) {}" } + val inputPort by value { shaderAnalysis.inputPorts.only("input port") } + + it("should use the data source's content type") { + expect(inputPort.copy(glslArgSite = null)) + .toEqual( + InputPort( + "arg", Float, + pluginRef = PluginRef("baaahs.Core", "Slider"), + pluginConfig = buildJsonObject {} + ) + ) + } + } + } + } +}) + +class HintedShaderDialectForTest : HintedShaderDialect("xxx") { + override val entryPointName: String = "main" + override val title: String + get() = TODO("not implemented") +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/shader/dialect/ShaderToyShaderDialectSpec.kt b/src/commonTest/kotlin/baaahs/gl/shader/dialect/ShaderToyShaderDialectSpec.kt new file mode 100644 index 0000000000..5b970c776f --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/shader/dialect/ShaderToyShaderDialectSpec.kt @@ -0,0 +1,172 @@ +package baaahs.gl.shader.dialect + +import baaahs.describe +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslError +import baaahs.gl.override +import baaahs.gl.patch.ContentType.Companion.Color +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.gl.shader.type.PaintShader +import baaahs.gl.testToolchain +import baaahs.show.Shader +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.* +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +@Suppress("unused") +object ShaderToyShaderDialectSpec : Spek({ + describe { + val src by value { "void mainImage(out vec4 fragColor, in vec2 fragCoord) { ... };" } + val shader by value { Shader("Title", src) } + val dialect by value { ShaderToyShaderDialect } + val shaderAnalysis by value { testToolchain.analyze(shader) } + val glslCode by value { shaderAnalysis.glslCode } + val openShader by value { OpenShader.Base(shaderAnalysis, PaintShader) } + val invocationStatement by value { + openShader.invocationGlsl( + GlslCode.Namespace("p"), "toResultVar", + mapOf("fragCoord" to "fragCoordVal.xy", "intensity" to "intensityVal") + ) + } + + context("shaders having a void mainImage(out vec4, in vec2) function") { + it("is an good match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.Good) + } + + it("finds the input port") { + expect(openShader.inputPorts.str()).containsExactly( + "fragCoord uv-coordinate:vec2 (U/V Coordinates)" + ) + } + + it("finds the output port") { + expect(openShader.outputPort).toEqual( + OutputPort(Color, description = "Output Color", id = "fragColor", isParam = true) + ) + } + + it("generates an invocation statement") { + expect(invocationStatement).toEqual("p_mainImage(toResultVar, fragCoordVal.xy)") + } + + context("with the parameters out of order") { + override(src) { "void mainImage(in vec2 fragCoord, out vec4 fragColor) { ... };" } + + it("is an good match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.Good) + } + + it("generates an invocation statement") { + expect(invocationStatement).toEqual("p_mainImage(fragCoordVal.xy, toResultVar)") + } + } + + context("with additional parameters") { + override(src) { "void mainImage(in vec2 fragCoord, out vec4 fragColor, in float intensity) { ... };" } + + it("is an good match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.Good) + } + + it("finds the input port") { + expect(openShader.inputPorts.str()).containsExactly( + "fragCoord uv-coordinate:vec2 (U/V Coordinates)", + "intensity unknown/float:float (Intensity)" + ) + } + + it("generates an invocation statement") { + expect(invocationStatement).toEqual("p_mainImage(fragCoordVal.xy, toResultVar, intensityVal)") + } + } + + context("with uniforms") { + override(src) { + "uniform float intensity;\nvoid mainImage(in vec2 fragCoord, out vec4 fragColor) { ... };" + } + + it("finds the input port") { + expect(openShader.inputPorts.str()).contains.inAnyOrder.only.values( + "fragCoord uv-coordinate:vec2 (U/V Coordinates)", + "intensity unknown/float:float (Intensity)" + ) + } + } + + context("with ShaderToy magic uniforms") { + override(src) { + """ + void mainImage(in vec2 fragCoord, out vec4 fragColor) { iResolution iTime iMouse };" } + """.trimIndent() + } + + it("identifies the uniforms and maps them to the correct content types") { + expect(openShader.inputPorts.str()).contains.inAnyOrder.only.values( + "fragCoord uv-coordinate:vec2 (U/V Coordinates)", + "iResolution resolution:vec3 (Resolution)", + "iTime time:float (Time)", + "iMouse mouse:vec4 (Mouse)" + ) + } + } + + context("with multiple out parameters") { + override(src) { + "uniform float intensity;\nvoid mainImage(in vec2 fragCoord, out vec4 fragColor, out float other) { ... };" + } + + it("fails to validate") { + expect(shaderAnalysis.isValid).toBe(false) + + expect(shaderAnalysis.errors).contains( + GlslError("Too many output ports found: [fragColor, other].", row = 2) + ) + } + } + + context("with missing parameters") { + override(src) { "void mainImage() { ... };" } + + it("is still a match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.Good) + } + + it("fails validation") { + expect(shaderAnalysis.isValid).toBe(false) + expect(shaderAnalysis.errors).containsExactly( + GlslError( + "Missing arguments. " + + "Signature should be \"void mainImage(in vec2 fragCoord, out vec4 fragColor)\".", + row = 1 + ) + ) + } + } + } + + context("shaders without a mainImage function") { + override(src) { "void main(void) { ... };" } + + it("is not a match") { + expect(dialect.matches(glslCode)).toEqual(MatchLevel.NoMatch) + } + + it("fails to validate") { + expect(shaderAnalysis.isValid).toBe(false) + expect(shaderAnalysis.errors).containsExactly( + GlslError("No output port found.") + ) + } + } + } +}) + +fun List.str(): List { + return map { + with(it) { "$id ${contentType.id}:${type.glslLiteral} ($title)" } + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/shader/type/FilterShaderSpec.kt b/src/commonTest/kotlin/baaahs/gl/shader/type/FilterShaderSpec.kt new file mode 100644 index 0000000000..5bc25869be --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/shader/type/FilterShaderSpec.kt @@ -0,0 +1,60 @@ +package baaahs.gl.shader.type + +import baaahs.describe +import baaahs.gl.openShader +import baaahs.gl.override +import baaahs.gl.testToolchain +import baaahs.show.Shader +import baaahs.toBeSpecified +import baaahs.toEqual +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +@Suppress("unused") +object FilterShaderSpec : Spek({ + describe { + val shaderText by value { toBeSpecified() } + val shader by value { Shader("Shader", shaderText) } + val shaderAnalysis by value { testToolchain.analyze(shader) } + val openShader by value { testToolchain.openShader(shader) } + val shaderType by value { FilterShader } + + context("when return type and any input are color") { + override(shaderText) { + """ + // @return color + // @param inColor color + vec4 main(vec4 inColor) { ... } + """.trimIndent() + } + + it("#match returns MatchAndFilter") { + expect(FilterShader.matches(shaderAnalysis)) + .toEqual(ShaderType.MatchLevel.MatchAndFilter) + } + } + + context("when return type is color and no input is color") { + override(shaderText) { + """ + // @return color + vec4 main(vec4 foo) { ... } + """.trimIndent() + } + + it("#match returns NoMatch") { + expect(FilterShader.matches(shaderAnalysis)) + .toEqual(ShaderType.MatchLevel.NoMatch) + } + } + + context("#template") { + override(shaderText) { shaderType.newShaderFromTemplate().src } + + it("generates a filter shader") { + expect(openShader.shaderType) + .toEqual(shaderType) + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/gl/shader/type/PaintShaderSpec.kt b/src/commonTest/kotlin/baaahs/gl/shader/type/PaintShaderSpec.kt new file mode 100644 index 0000000000..c9f6779382 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/gl/shader/type/PaintShaderSpec.kt @@ -0,0 +1,317 @@ +package baaahs.gl.shader.type + +import baaahs.describe +import baaahs.gl.expects +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslType +import baaahs.gl.openShader +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.testToolchain +import baaahs.show.Shader +import baaahs.toBeSpecified +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +@Suppress("unused") +object PaintShaderSpec : Spek({ + describe { + val shaderText by value { toBeSpecified() } + val shader by value { Shader("Title", shaderText) } + val shaderAnalysis by value { testToolchain.analyze(shader) } + val openShader by value { testToolchain.openShader(shader) } + val shaderType by value { PaintShader } + + context("when return type is color") { + override(shaderText) { + """ + // @return color + // @param uvIn uv-coordinate + vec4 main(vec4 uvIn) { ... } + """.trimIndent() + } + + it("#match returns Match") { + expect(PaintShader.matches(shaderAnalysis)) + .toEqual(ShaderType.MatchLevel.Match) + } + } + + context("when using gl_FragColor and gl_FragCoord") { + override(shaderText) { + """ + void main() { gl_FragColor = gl_FragCoord; } + """.trimIndent() + } + + it("#match returns Match") { + expect(PaintShader.matches(shaderAnalysis)) + .toEqual(ShaderType.MatchLevel.Match) + } + } + + context("when return type isn't color") { + override(shaderText) { + """ + vec4 main(vec4 foo) { ... } + """.trimIndent() + } + + it("#match returns NoMatch") { + expect(PaintShader.matches(shaderAnalysis)) + .toEqual(ShaderType.MatchLevel.NoMatch) + } + } + + context("#template") { + override(shaderText) { shaderType.newShaderFromTemplate().src } + + it("generates a paint shader") { + expect(openShader.shaderType) + .toEqual(shaderType) + } + } + } + + // TODO: This should be in GenericShaderPrototype probably;. + describe("PaintShader") { + val shaderText by value { toBeSpecified() } + val openShader by value { testToolchain.openShader(Shader("Title", shaderText)) } + val namespace by value { GlslCode.Namespace("p0") } + + context("generic shaders") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float time; + uniform vec2 resolution; + uniform vec2 mouse; + uniform float blueness; + int someGlobalVar; + const int someConstVar = 123; + + float identity(float value) { return value; } + + void main( void ) { + vec2 uv = gl_FragCoord.xy / resolution.xy; + gl_FragColor = vec4(uv.xy, identity(blueness), 1.); + } + """.trimIndent() + } + + it("finds magic uniforms") { + expects( + listOf( + InputPort( + "gl_FragCoord", + ContentType.UvCoordinate, + GlslType.Vec4, + "Coordinates", + isImplicit = true + ), + InputPort("time", ContentType.Time, GlslType.Float, "Time"), + InputPort("resolution", ContentType.Resolution, GlslType.Vec2, "Resolution"), + InputPort("mouse", ContentType.Mouse, GlslType.Vec2, "Mouse"), + InputPort("blueness", ContentType.unknown(GlslType.Float), GlslType.Float, "Blueness") + ) + ) { openShader.inputPorts.map { it.copy(glslArgSite = null) } } + } + + it("generates function declarations") { + expect( + openShader.toGlsl( + namespace, + mapOf( + "resolution" to "in_resolution", + "blueness" to "aquamarinity", + "identity" to "p0_identity", + "gl_FragColor" to "sm_result" + ) + ).trim() + ) + .toBe( + """ + #line 8 + int p0_someGlobalVar; + + #line 9 + const int p0_someConstVar = 123; + + #line 11 + float p0_identity(float value) { return value; } + + #line 13 + void p0_main( void ) { + vec2 uv = gl_FragCoord.xy / in_resolution.xy; + sm_result = vec4(uv.xy, p0_identity(aquamarinity), 1.); + } + """.trimIndent() + ) + } + + it("generates invocation GLSL") { + expect(openShader.invocationGlsl(namespace, "resultVar")) + .toBe("p0_main()") + } + + context("using entry point parameters") { + override(shaderText) { + /**language=glsl*/ + """ + uniform float time; + // @param uv uv-coordinate + void main(vec2 uv) { gl_FragColor = vec4(uv.xy, 0., 1.); } + """.trimIndent() + } + + it("identifies uniform and param input ports and excludes gl_FragCoord") { + expects( + listOf( + InputPort( + "time", ContentType.Time, GlslType.Float, "Time", + glslArgSite = GlslCode.GlslVar( + "time", GlslType.Float, "uniform float time;", isUniform = true, lineNumber = 1 + ) + ), + InputPort( + "uv", ContentType.UvCoordinate, GlslType.Vec2, "Uv", + glslArgSite = GlslCode.GlslParam("uv", GlslType.Vec2, isIn = true, lineNumber = 3) + ) + ) + ) { openShader.inputPorts } + } + + it("generates invocation GLSL") { + expect( + openShader.invocationGlsl( + namespace, "resultVar", mapOf( + "uv" to "uvArg" + ) + ) + ) + .toBe("p0_main(uvArg)") + } + + context("with a type annotation") { + override(shaderText) { + /**language=glsl*/ + """ + uniform float time; + void main( + vec2 uv // @type uv-coordinate + ) { + gl_FragColor = vec4(uv.xy, 0., 1.); + } + """.trimIndent() + } + + it("identifies the param's content type properly") { + expects( + listOf( + InputPort( + "time", ContentType.Time, GlslType.Float, "Time", + glslArgSite = GlslCode.GlslVar( + "time", GlslType.Float, "uniform float time;", isUniform = true, lineNumber = 1 + ) + ), + InputPort( + "uv", ContentType.UvCoordinate, GlslType.Vec2, "Uv", + glslArgSite = GlslCode.GlslParam( + "uv", GlslType.Vec2, isIn = true, lineNumber = 2, + comments = listOf(" @type uv-coordinate") + ) + ) + ) + ) { openShader.inputPorts } + } + } + } + } + + context("ShaderToy shaders") { + override(shaderText) { + /**language=glsl*/ + """ + // This Shader's Name + // Other stuff. + + uniform float blueness; + int someGlobalVar; + const int someConstVar = 123; + + float identity(float value) { return value; } + + void mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 uv = fragCoord.xy / iResolution.xy * iTime; + fragColor = vec4(uv.xy / iMouse, identity(blueness), 1.); + } + """.trimIndent() + } + + describe("#inputPorts") { + it("finds magic uniforms") { + expects( + listOf( + InputPort("blueness", ContentType.unknown(GlslType.Float), GlslType.Float, "Blueness"), + InputPort("fragCoord", ContentType.UvCoordinate, GlslType.Vec2, "U/V Coordinates"), + InputPort( + "iResolution", + ContentType.Resolution, + GlslType.Vec3, + "Resolution", + isImplicit = true + ), + InputPort("iTime", ContentType.Time, GlslType.Float, "Time", isImplicit = true), + InputPort("iMouse", ContentType.Mouse, GlslType.Vec4, "Mouse", isImplicit = true) + ) + ) { openShader.inputPorts.map { it.copy(glslArgSite = null) } } + } + } + + it("generates function declarations") { + expect( + openShader.toGlsl( + namespace, mapOf( + "iResolution" to "in_resolution", + "iMouse" to "in_mouse", + "iTime" to "in_time", + "blueness" to "aquamarinity", + "identity" to "p0_identity", + "fragCoord" to "gl_FragCoord.xy" + ) + ).trim() + ) + .toBe( + """ + #line 5 + int p0_someGlobalVar; + + #line 6 + const int p0_someConstVar = 123; + + #line 8 + float p0_identity(float value) { return value; } + + #line 10 + void p0_mainImage( out vec4 fragColor, in vec2 fragCoord ) { + vec2 uv = fragCoord.xy / in_resolution.xy * in_time; + fragColor = vec4(uv.xy / in_mouse, p0_identity(aquamarinity), 1.); + } + """.trimIndent() + ) + } + + it("generates invocation GLSL") { + expect(openShader.invocationGlsl(namespace, "resultVar", mapOf("fragCoord" to "gl_FragCoord.xy"))) + .toBe("p0_mainImage(resultVar, gl_FragCoord.xy)") + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/glsl/GuruMeditationErrorSpec.kt b/src/commonTest/kotlin/baaahs/glsl/GuruMeditationErrorSpec.kt new file mode 100644 index 0000000000..9e1385fb4e --- /dev/null +++ b/src/commonTest/kotlin/baaahs/glsl/GuruMeditationErrorSpec.kt @@ -0,0 +1,23 @@ +package baaahs.glsl + +import baaahs.describe +import baaahs.fixtures.PixelArrayDevice +import baaahs.show.live.LinkedShaderInstance +import baaahs.shows.FakeGlContext +import baaahs.shows.FakeKgl +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object GuruMeditationErrorSpec : Spek({ + describe { + val gl by value { FakeGlContext(FakeKgl()) } + val guruMeditationError by value { GuruMeditationError(PixelArrayDevice) } + + it("should create a RenderPlan") { + val rootNode = guruMeditationError.linkedPatch.rootNode as LinkedShaderInstance + expect(rootNode.shader.shader) + .toBe(PixelArrayDevice.errorIndicatorShader) + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/glsl/LinearSurfacePixelStrategySpek.kt b/src/commonTest/kotlin/baaahs/glsl/LinearSurfacePixelStrategySpek.kt new file mode 100644 index 0000000000..4891465d9b --- /dev/null +++ b/src/commonTest/kotlin/baaahs/glsl/LinearSurfacePixelStrategySpek.kt @@ -0,0 +1,49 @@ +package baaahs.glsl + +import baaahs.TestModel +import baaahs.TestModelSurface +import baaahs.describe +import baaahs.geom.Vector3F +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import kotlin.random.Random + +@Suppress("unused") +object LinearSurfacePixelStrategySpek : Spek({ + describe { + val strategy by value { LinearSurfacePixelStrategy(Random(1)) } + context("#forKnownSurface") { + val surfaceWithVertices by value { + TestModelSurface( + "zyx", vertices = listOf( + Vector3F(1f, 1f, 1f), + Vector3F(2f, 2f, 1f), + Vector3F(1f, 2f, 2f), + Vector3F(2f, 1f, 2f) + ) + ) + } + + it("interpolates between vertex 0 and the surface's center") { + expect(strategy.forKnownSurface(3, surfaceWithVertices, TestModel)) + .containsExactly( + Vector3F(1f, 1f, 1f), + Vector3F(1.25f, 1.25f, 1.25f), + Vector3F(1.5f, 1.5f, 1.5f) + ) + } + } + + context("#forUnknownSurface") { + it("interpolates between vertex 0 and the surface's center") { + expect(strategy.forUnknownSurface(3, TestModel)) + .containsExactly( + Vector3F(x=0.13972723f, y=0.6433261f, z=0.87724733f), + Vector3F(x=0.3837537f, y=0.7586312f, z=0.57177293f), + Vector3F(x=0.62778014f, y=0.8739363f, z=0.26629853f) + ) + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/io/FileSerializationSpec.kt b/src/commonTest/kotlin/baaahs/io/FileSerializationSpec.kt new file mode 100644 index 0000000000..9c23e62ca5 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/io/FileSerializationSpec.kt @@ -0,0 +1,127 @@ +package baaahs.io + +import baaahs.sim.FakeFs +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import ext.TestCoroutineContext +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.coroutines.launch +import kotlinx.serialization.json.* +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +@InternalCoroutinesApi +object FileSerializationSpec : Spek({ + describe("Remote file serialization") { + val actualFs1 by value { FakeFs() } + val actualFile1 by value { actualFs1.resolve("some", "file.txt") } + + val actualFs2 by value { FakeFs() } + val actualFile2 by value { actualFs2.resolve("another", "file.txt") } + + val fakeRemoteFsBackend by value { FakeRemoteFsBackend() } + + val clientJson by value { + val fsClientSideSerializer = object : FsClientSideSerializer() { + override val backend: RemoteFsBackend + get() = fakeRemoteFsBackend + + } + Json { serializersModule = fsClientSideSerializer.serialModule } + } + + val serverJson by value { + val fsServerSideSerializer = FsServerSideSerializer() + Json { + encodeDefaults = true + serializersModule = fsServerSideSerializer.serialModule + } + } + + context("server-side serializer") { + it("sends Fs objects by id ref") { + val actualFile1Json = serverJson.encodeToJsonElement(Fs.File.serializer(), actualFile1) + expect(actualFile1Json).toBe(buildJsonObject { + put("fs", buildJsonObject { put("name", actualFile1.fs.name); put("fsId", 0) }) + put("pathParts", buildJsonArray { add("some"); add("file.txt") }) + put("isDirectory", JsonNull) + }) + + val actualFile2Json = serverJson.encodeToJsonElement(Fs.File.serializer(), actualFile2) + expect(actualFile2Json).toBe(buildJsonObject { + put("fs", buildJsonObject { put("name", actualFile2.fs.name); put("fsId", 1) }) + put("pathParts", buildJsonArray { add("another"); add("file.txt") }) + put("isDirectory", JsonNull) + }) + + val thirdFile = actualFile1.parent!!.resolve("foo.txt") + val thirdFileJson = serverJson.encodeToJsonElement(Fs.File.serializer(), thirdFile) + expect(thirdFileJson).toBe(buildJsonObject { + put("fs", buildJsonObject { put("name", thirdFile.fs.name); put("fsId", 0) }) + put("pathParts", buildJsonArray { add("some"); add("foo.txt") }) + put("isDirectory", JsonNull) + }) + } + } + + context("client-side serializer") { + val testCoroutineContext by value { TestCoroutineContext("network") } + + it("converts all Fs types to RemoteFs") { + val remoteFile1 = clientJson.decodeFromJsonElement(Fs.File.serializer(), buildJsonObject { + put("fs", buildJsonObject { put("name", "Name"); put("fsId", 0) }) + put("pathParts", buildJsonArray { add("some"); add("file.txt") }) + put("isDirectory", JsonNull) + }) + expect(remoteFile1.fullPath).toBe("some/file.txt") + + val resultFiles = mutableListOf() + CoroutineScope(testCoroutineContext).launch { + resultFiles.addAll(remoteFile1.fs.listFiles(remoteFile1)) + } + testCoroutineContext.runAll() + + expect(resultFiles.map { it.fullPath }).containsExactly("fake/response.txt") + } + } + + context("round trip") { + val jsonFromServer by value { serverJson.encodeToString(Fs.File.serializer(), actualFile1) } + val clientSideFile by value { clientJson.decodeFromString(Fs.File.serializer(), jsonFromServer) } + val jsonFromClient by value { clientJson.encodeToString(Fs.File.serializer(), clientSideFile) } + val serverSideFile by value { serverJson.decodeFromString(Fs.File.serializer(), jsonFromClient) } + + it("converts file to RemoteFs and back again to actual Fs") { + expect(serverSideFile.fullPath).toBe(actualFile1.fullPath) + expect(serverSideFile.fs).toBe(actualFile1.fs) + } + } + } +}) + +class FakeRemoteFsBackend : RemoteFsBackend { + override val name: String + get() = "Remote Fs" + + override suspend fun listFiles(directory: Fs.File): List { + return listOf(Fs.File(this, "fake/response.txt", false)) + } + + override suspend fun loadFile(file: Fs.File): String? { + TODO("not implemented") + } + + override suspend fun saveFile(file: Fs.File, content: ByteArray, allowOverwrite: Boolean) { + TODO("not implemented") + } + + override suspend fun saveFile(file: Fs.File, content: String, allowOverwrite: Boolean) { + TODO("not implemented") + } + + override suspend fun exists(file: Fs.File): Boolean { + TODO("not implemented") + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/io/IoTest.kt b/src/commonTest/kotlin/baaahs/io/IoTest.kt new file mode 100644 index 0000000000..e564bc16b9 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/io/IoTest.kt @@ -0,0 +1,27 @@ +package baaahs.io + +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test + +class IoTest { + @Test + fun testByteArrays() { + val writer = ByteArrayWriter(bytes = ByteArray(2)) + writer.writeBytes(byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8)) + + val reader = ByteArrayReader(writer.toBytes()) + expect(reader.readBytes().toList()) + .toBe(byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8).toList()) + } + + @Test + fun testPartialByteArrays() { + val writer = ByteArrayWriter(bytes = ByteArray(2)) + writer.writeBytes(byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8), 6) + + val reader = ByteArrayReader(writer.toBytes()) + expect(reader.readBytes().toList()) + .toBe(byteArrayOf(7, 8).toList()) + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/net/FragmentingUdpLinkTest.kt b/src/commonTest/kotlin/baaahs/net/FragmentingUdpLinkTest.kt new file mode 100644 index 0000000000..c2c33a9984 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/net/FragmentingUdpLinkTest.kt @@ -0,0 +1,70 @@ +package baaahs.net + +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.random.Random +import kotlin.test.BeforeTest +import kotlin.test.Test + +class FragmentingUdpLinkTest { + private val port = 1234 + private val mtu = 1400 + + private val receivedPayloads = mutableListOf() + private val sendTestLink = TestNetwork.Link(mtu) + private val sendLink = FragmentingUdpLink(sendTestLink) + private val recvTestLink = TestNetwork.Link(mtu) + private val recvLink = FragmentingUdpLink(recvTestLink) + + @BeforeTest + fun setUp() { + recvLink.listenUdp(port, object : Network.UdpListener { + override fun receive(fromAddress: Network.Address, fromPort: Int, bytes: ByteArray) { + receivedPayloads += bytes + } + }) + } + + + @Test + fun shouldSendSmallPayloadsThroughDirectly() { + val smallPayload = byteArrayOf(0, 1, 2, 3) + send(smallPayload) + + expect(receivedPayloads.size).toBe(1) + expect(receivedPayloads.first().toList()).toBe(smallPayload.toList()) + expect(recvTestLink.receviedPackets.size).toBe(1) + } + + @Test + fun shouldFragmentAndReassembleLargerPayloads() { + val mediumPayload = Random.nextBytes((1400 * 4.5).toInt()) + send(mediumPayload) + + expect(receivedPayloads.size).toBe(1) + expect(receivedPayloads.first().toList()).toBe(mediumPayload.toList()) + expect(recvTestLink.receviedPackets.size).toBe(5) + } + + @Test + fun shouldFragmentAndReassemblePayloadsLargerThan64k() { + val mediumPayload = Random.nextBytes(100_000) + send(mediumPayload) + + expect(receivedPayloads.size).toBe(1) + expect(receivedPayloads.first().toList()).toBe(mediumPayload.toList()) + expect(recvTestLink.receviedPackets.size).toBe(73) + } + + ///////////////////////// + + private fun send(smallPayload: ByteArray) { + sendLink.listenUdp(0, object : Network.UdpListener { + override fun receive(fromAddress: Network.Address, fromPort: Int, bytes: ByteArray) { + } + }).sendUdp(recvLink.myAddress, port, smallPayload) + sendTestLink.sendTo(recvTestLink) + } + + fun defrag(bytes: ByteArray) = bytes.slice(FragmentingUdpLink.headerSize until bytes.size).toByteArray() +} diff --git a/src/commonTest/kotlin/baaahs/net/TestNetwork.kt b/src/commonTest/kotlin/baaahs/net/TestNetwork.kt new file mode 100644 index 0000000000..662736645d --- /dev/null +++ b/src/commonTest/kotlin/baaahs/net/TestNetwork.kt @@ -0,0 +1,72 @@ +package baaahs.net + +class TestNetwork(var defaultMtu: Int = 1400) : Network { + val links = mutableListOf() + + override fun link(name: String): Link { + return Link(defaultMtu).also { links.add(it) } + } + + class Link(mtu: Int) : Network.Link { + override val myAddress = Address() + val packetsToSend = mutableListOf() + val receviedPackets = mutableListOf() + + private var udpListener: Network.UdpListener? = null + + fun sendTo(link: Link) { + packetsToSend.forEach { bytes -> + link.receiveUdp(bytes) + } + packetsToSend.clear() + } + + private fun receiveUdp(bytes: ByteArray) { + receviedPackets += bytes + udpListener?.receive(myAddress, 1234, bytes) + } + + override val udpMtu = mtu + + override fun listenUdp(port: Int, udpListener: Network.UdpListener): Network.UdpSocket { + this.udpListener = udpListener + return TestUdpSocket(port) + } + + inner class TestUdpSocket(override val serverPort: Int) : Network.UdpSocket { + override fun sendUdp(toAddress: Network.Address, port: Int, bytes: ByteArray) { + packetsToSend += bytes + } + + override fun broadcastUdp(port: Int, bytes: ByteArray) { + packetsToSend += bytes + } + + } + + override fun startHttpServer(port: Int): Network.HttpServer = object : Network.HttpServer { + override fun listenWebSocket( + path: String, + onConnect: (incomingConnection: Network.TcpConnection) -> Network.WebSocketListener + ) { +// TODO("TestNetwork.Link.listenWebSocket not implemented") + } + } + + override fun connectWebSocket( + toAddress: Network.Address, + port: Int, + path: String, + webSocketListener: Network.WebSocketListener + ): Network.TcpConnection { + TODO("Link.connectWebSocket not implemented") + } + } + + + class Address(private val name: String = "some address") : Network.Address { + override fun toString(): String { + return name + } + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/plugin/CorePluginSpec.kt b/src/commonTest/kotlin/baaahs/plugin/CorePluginSpec.kt new file mode 100644 index 0000000000..d56405a580 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/plugin/CorePluginSpec.kt @@ -0,0 +1,41 @@ +package baaahs.plugin + +import baaahs.FakeClock +import baaahs.describe +import baaahs.gl.RootToolchain +import baaahs.gl.autoWire +import baaahs.gl.glsl.GlslProgram +import baaahs.gl.patch.ContentType +import baaahs.gl.testPlugins +import baaahs.glsl.Shaders +import baaahs.only +import baaahs.shows.FakeGlContext +import baaahs.shows.FakeShowPlayer +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object CorePluginSpec : Spek({ + describe { + val clock by value { FakeClock(0.0) } + val dataSource by value { CorePlugin.TimeDataSource() } + val toolchain by value { RootToolchain(testPlugins(clock) ) } + val feed by value { dataSource.createFeed(FakeShowPlayer(toolchain = toolchain), "time") } + val gl by value { FakeGlContext() } + val glFeed by value { feed.bind(gl) } + val program by value { + val linkedPatch = toolchain.autoWire(Shaders.red).acceptSuggestedLinkOptions() + .confirm().openForPreview(toolchain, ContentType.Color)!! + GlslProgram(gl, linkedPatch) { _, _ -> null } + } + val programFeed by value { glFeed.bind(program) } + + it("should pass the time as a float, truncating high bits") { + clock.time = 1234567890.1234 + gl.runInContext { programFeed.setOnProgram() } + + val glProgram = gl.programs.only("program") + expect(glProgram.getUniform("in_time")).toBe(7890.1234f) + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/plugin/PluginsSpec.kt b/src/commonTest/kotlin/baaahs/plugin/PluginsSpec.kt new file mode 100644 index 0000000000..443949f693 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/plugin/PluginsSpec.kt @@ -0,0 +1,20 @@ +package baaahs.plugin + +import baaahs.FakeClock +import baaahs.describe +import baaahs.gl.patch.ContentType.Companion.Color +import baaahs.toEqual +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +@Suppress("unused") +object PluginsSpec : Spek({ + describe { + val plugins by value { Plugins(listOf(CorePlugin), PluginContext(FakeClock())) } + + it("should resolve content types") { + expect(plugins.resolveContentType("color")) + .toEqual(Color) + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/plugin/beatlink/BeatDataTest.kt b/src/commonTest/kotlin/baaahs/plugin/beatlink/BeatDataTest.kt new file mode 100644 index 0000000000..457ca4b602 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/plugin/beatlink/BeatDataTest.kt @@ -0,0 +1,57 @@ +package baaahs.plugin.beatlink + +import baaahs.FakeClock +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test +import kotlin.test.assertNotEquals + +class BeatDataTest { + val realisticTime = 1605473794.0 + + @Test + fun calculateBpm() { + expect(BeatData(0.0, 500).bpm).toBe(120f) + } + + @Test + fun calculateBeatWithinMeasure() { + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(0.0))).toBe(0f) + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(2.0))).toBe(0f) + + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(0.5))).toBe(1f) + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(2.5))).toBe(1f) + + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(1.0))).toBe(2f) + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(3.0))).toBe(2f) + + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(1.5))).toBe(3f) + expect(BeatData(0.0, 500).beatWithinMeasure(FakeClock(3.5))).toBe(3f) + } + + @Test + fun whenConfidenceIsBelowOne_fractionTillNextBeatDecays() { + val beatData = BeatData(0.0, 500) + val clock = FakeClock(0.49) + + assertNotEquals(0f, beatData.fractionTillNextBeat(clock)) + expect(beatData.copy(confidence = .5f).fractionTillNextBeat(clock)).toBe(beatData.fractionTillNextBeat(clock) / 2) + } + + @Test + fun whenNoBeatDataPresent_beatAndTimeAreNegativeOne() { + expect(BeatData(0.0, 0).beatWithinMeasure(FakeClock(0.0))).toBe(-1f) + expect(BeatData(0.0, 0).timeSinceMeasure(FakeClock(0.0))).toBe(-1f) + expect(BeatData(0.0, 0).fractionTillNextBeat(FakeClock(0.0))).toBe(-1f) + expect(BeatData(0.0, 0).fractionTillNextBeat(FakeClock(0.0))).toBe(-1f) + } + + @Test + fun testMillisTillNextBeat() { + expect(BeatData(0.0, 100).millisTillNextBeat(FakeClock(0.025))).toBe(75) + expect(BeatData(0.0, 100).millisTillNextBeat(FakeClock(0.325))).toBe(75) + + expect(BeatData(0.0, 100).millisTillNextBeat(FakeClock(realisticTime + 0.025))).toBe(75) + expect(BeatData(0.0, 100).millisTillNextBeat(FakeClock(realisticTime + 0.325))).toBe(75) + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/plugin/core/FixtureInfoDataSourceSpec.kt b/src/commonTest/kotlin/baaahs/plugin/core/FixtureInfoDataSourceSpec.kt new file mode 100644 index 0000000000..0a96f2c8f9 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/plugin/core/FixtureInfoDataSourceSpec.kt @@ -0,0 +1,54 @@ +package baaahs.plugin.core + +import baaahs.TestMovingHead +import baaahs.TestRenderContext +import baaahs.describe +import baaahs.geom.Vector3F +import baaahs.show.live.link +import baaahs.toEqual +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +@Suppress("unused") +object FixtureInfoDataSourceSpec : Spek({ + describe { + val movingHead by value { TestMovingHead() } + + val shaderText by value { + """ + struct FixtureInfo { + vec3 origin; + vec3 heading; + }; + uniform FixtureInfo fixtureInfo; + + void main(void) { + gl_FragColor = vec4(fixtureInfo.origin.xy, fixtureInfo.heading.zw); + } + """.trimIndent() + } + + val testRenderContext by value { TestRenderContext(movingHead) } + val program by value { testRenderContext.createProgram(shaderText, mapOf( + "fixtureInfo" to FixtureInfoDataSource().link("fixtureInfo") + )) } + + beforeEachTest { + testRenderContext.addFixtures() + testRenderContext.applyProgram(program) + testRenderContext.renderEngine.draw() + } + + it("should set uniforms for origin and heading") { + val glProgram = testRenderContext.gl.findProgram(program.id) + + val originUniform = glProgram.getUniform>("in_fixtureInfo.origin") + expect(originUniform.asVector3F()).toEqual(movingHead.origin) + + val headingUniform = glProgram.getUniform>("in_fixtureInfo.heading") + expect(headingUniform.asVector3F()).toEqual(movingHead.heading) + } + } +}) + +fun Iterable.asVector3F() = with(iterator()) { Vector3F(next(), next(), next()) } \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shaders/PixelShaderTest.kt b/src/commonTest/kotlin/baaahs/shaders/PixelShaderTest.kt new file mode 100644 index 0000000000..3942dcff7a --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shaders/PixelShaderTest.kt @@ -0,0 +1,166 @@ +package baaahs.shaders + +import baaahs.Color +import baaahs.Pixels +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlin.test.Test + +class PixelShaderTest { + private val fixture = fakeFixture(5) + private val rgbColors = arrayOf( + Color.from("#111111"), + Color.from("#333333"), + Color.from("#777777"), + Color.from("#cccccc"), + Color.from("#ffffff") + ) + private val argbColors = arrayOf( + Color.from("#ff111111"), + Color.from("#ff333333"), + Color.from("#77777777"), + Color.from("#ffcccccc"), + Color.from("#00ffffff") + ) + + @Test + fun forDirect32Bit_shouldTransmitAndRender() { + val dstBuf = transmit(directBuffer(argbColors, PixelBrainShader.Encoding.DIRECT_ARGB), fixture) + expect(dstBuf.getColors()) + .toBe("#111111,#333333,#77777777,#cccccc,#00ffffff") + expect(render(dstBuf, fixture).getColors()) + .toBe("#111111,#333333,#77777777,#cccccc,#00ffffff") + } + + @Test + fun forDirect24Bit_shouldTransmitAndRenderIgnoringAlpha() { + val dstBuf = transmit(directBuffer(argbColors, PixelBrainShader.Encoding.DIRECT_RGB), fixture) + expect(dstBuf.getColors()) + .toBe("#111111,#333333,#777777,#cccccc,#ffffff") + expect(render(dstBuf, fixture).getColors()) + .toBe("#111111,#333333,#777777,#cccccc,#ffffff") + } + + @Test + fun forIndexed2_shouldSetDataBufCorrectly() { + val dstBuf = indexedBuffer( + arrayOf(Color.BLACK, Color.YELLOW), arrayOf(0, 0, 0, 0, 0), PixelBrainShader.Encoding.INDEXED_2 + ) as PixelBrainShader.IndexedBuffer + expect(dstBuf.dataBuf.size).toBe(1) + expect(dstBuf.byte(0)).toBe(0x00) + + dstBuf[0] = 1 + expect(dstBuf.byte(0)).toBe(0x80) + dstBuf[2] = 1 + expect(dstBuf.byte(0)).toBe(0xA0) + dstBuf[4] = 1 + expect(dstBuf.byte(0)).toBe(0xA8) + } + + @Test + fun forIndexed4_shouldSetDataBufCorrectly() { + val dstBuf = indexedBuffer( + arrayOf(Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN), + arrayOf(0, 0, 0, 0, 0), PixelBrainShader.Encoding.INDEXED_4 + ) as PixelBrainShader.IndexedBuffer + + expect(dstBuf.dataBuf.size).toBe(2) + expect(dstBuf.bytes()).toBe("00 00") + + dstBuf[0] = 1 // orange + expect(dstBuf.bytes()).toBe("40 00") + + dstBuf[2] = 3 // green + expect(dstBuf.bytes()).toBe("4c 00") + + dstBuf[4] = 2 // yellow + expect(dstBuf.bytes()).toBe("4c 80") + + expect(dstBuf.colors[0]).toBe(Color.ORANGE) + expect(dstBuf.colors[2]).toBe(Color.GREEN) + expect(dstBuf.colors[4]).toBe(Color.YELLOW) + } + + @Test + fun forIndexed16_shouldSetDataBufCorrectly() { + val dstBuf = indexedBuffer( + arrayOf(Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.PURPLE), + arrayOf(0, 0, 0, 0, 0), PixelBrainShader.Encoding.INDEXED_16 + ) as PixelBrainShader.IndexedBuffer + + expect(dstBuf.dataBuf.size).toBe(3) + expect(dstBuf.bytes()).toBe("00 00 00") + + dstBuf[0] = 1 // orange + expect(dstBuf.bytes()).toBe("10 00 00") + + dstBuf[2] = 3 // green + expect(dstBuf.bytes()).toBe("10 30 00") + + dstBuf[4] = 15 // unset, so white + expect(dstBuf.bytes()).toBe("10 30 f0") + + expect(dstBuf.colors[0]).toBe(Color.ORANGE) + expect(dstBuf.colors[2]).toBe(Color.GREEN) + expect(dstBuf.colors[4]).toBe(Color.WHITE) + } + + @Test + fun forIndexed2_shouldTransmitAndRender() { + val dstBuf = transmit( + indexedBuffer( + arrayOf(Color.BLACK, Color.YELLOW), + arrayOf(0, 1, 0, 1, 0), + PixelBrainShader.Encoding.INDEXED_2 + ), fixture + ) + expect(dstBuf.getColors()) + .toBe("#000000,#ffff00,#000000,#ffff00,#000000") + expect(render(dstBuf, fixture).getColors()) + .toBe("#000000,#ffff00,#000000,#ffff00,#000000") + } + + @Test + fun whenFewerPixels_shouldTruncate() { + val pixels = render(directBuffer(rgbColors), fakeFixture(3)) + expect(pixels.joinToString(",") { it.toHexString() }) + .toBe("#111111,#333333,#777777") + } + + @Test + fun whenMorePixels_shouldRepeat() { + val pixels = render(directBuffer(rgbColors), fakeFixture(12)) + expect(pixels.joinToString(",") { it.toHexString() }) + .toBe("#111111,#333333,#777777,#cccccc,#ffffff," + + "#111111,#333333,#777777,#cccccc,#ffffff," + + "#111111,#333333") + } + + private fun directBuffer( + colors: Array, + encoding: PixelBrainShader.Encoding = PixelBrainShader.Encoding.DIRECT_ARGB + ): PixelBrainShader.Buffer { + val shader = PixelBrainShader(encoding) + return shader.createBuffer(fixture.pixelCount).apply { + (0 until 5).forEach { i -> this.colors[i] = colors[i] } + } + } + + private fun indexedBuffer( + palette: Array, + colorIndices: Array, + encoding: PixelBrainShader.Encoding + ): PixelBrainShader.Buffer { + val shader = PixelBrainShader(encoding) + return shader.createBuffer(fixture.pixelCount).apply { + palette.forEachIndexed { index, color -> this.palette[index] = color } + colorIndices.forEachIndexed { pixelIndex, colorIndex -> this[pixelIndex] = colorIndex } + } + } + + private fun PixelBrainShader.Buffer.getColors() = colors.map { it.toHexString() }.joinToString(",") + private fun Pixels.getColors() = map { it.toHexString() }.joinToString(",") + private fun PixelBrainShader.IndexedBuffer.byte(index: Int) = dataBuf[index].toInt() and 0xFF + private fun PixelBrainShader.IndexedBuffer.bytes() = + dataBuf.joinToString(" ") { (it.toInt() and 0xFF).toString(16).padStart(2, '0') } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shaders/util.kt b/src/commonTest/kotlin/baaahs/shaders/util.kt new file mode 100644 index 0000000000..22923e9603 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shaders/util.kt @@ -0,0 +1,73 @@ +package baaahs.shaders + +import baaahs.BrainShader +import baaahs.Color +import baaahs.Pixels +import baaahs.fixtures.DeviceType +import baaahs.fixtures.Fixture +import baaahs.fixtures.NullTransport +import baaahs.fixtures.PixelArrayDevice +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import baaahs.model.Model +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect + +private fun send(srcBrainShader: BrainShader, srcBuf: T, fixture: Fixture): Pair, T> { + val writer = ByteArrayWriter() + srcBrainShader.serialize(writer) + srcBuf.serialize(writer) + val bytes = writer.toBytes() + + val reader = ByteArrayReader(bytes) + expect(reader.readByte()).toBe(srcBrainShader.idBrain.ordinal.toByte()) + + @Suppress("UNCHECKED_CAST") + val dstBrainShader: BrainShader = srcBrainShader.idBrain.reader.parse(reader) as BrainShader + val dstBuf = dstBrainShader.createBuffer(fixture.pixelCount) + dstBuf.read(reader) + return Pair(dstBrainShader, dstBuf) +} + +@Suppress("UNCHECKED_CAST") +internal fun transmit(srcBuf: T, fixture: Fixture): T { + val (_: BrainShader, dstBuf) = send(srcBuf.brainShader as BrainShader, srcBuf, fixture) + return dstBuf +} + +@Suppress("UNCHECKED_CAST") +internal fun render(srcBuf: T, fixture: Fixture): Pixels { + val (dstBrainShader: BrainShader, dstBuf) = send(srcBuf.brainShader as BrainShader, srcBuf, fixture) + val pixels = FakePixels(fixture.pixelCount) + val renderer = dstBrainShader.createRenderer() + renderer.beginFrame(dstBuf, pixels.size) + for (i in pixels.indices) { + pixels[i] = renderer.draw(dstBuf, i) + } + renderer.endFrame() + return pixels +} + +internal fun render(srcBrainShaderAndBuffer: Pair, T>, fixture: Fixture): Pixels = + render(srcBrainShaderAndBuffer.second, fixture) + +fun fakeFixture( + pixelCount: Int, + modelEntity: Model.Entity? = null, + deviceType: DeviceType = modelEntity?.deviceType ?: PixelArrayDevice +) = + Fixture(modelEntity, pixelCount, emptyList(), deviceType, "Fake ${deviceType.title}", transport = NullTransport) + +class FakePixels(override val size: Int) : Pixels { + private val buf = Array(size) { Color.BLACK } + + override fun get(i: Int): Color = buf[i] + + override fun set(i: Int, color: Color) { + buf[i] = color + } + + override fun set(colors: Array) { + colors.copyInto(buf) + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/MutableShowSpec.kt b/src/commonTest/kotlin/baaahs/show/MutableShowSpec.kt new file mode 100644 index 0000000000..2921c16255 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/MutableShowSpec.kt @@ -0,0 +1,300 @@ +package baaahs.show + +import baaahs.gl.Toolchain +import baaahs.gl.autoWire +import baaahs.gl.glsl.GlslType +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.gl.testToolchain +import baaahs.only +import baaahs.show.live.FakeOpenShader +import baaahs.show.mutable.* +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe +import kotlin.collections.set + +object MutableShowSpec : Spek({ + describe("MutableShow") { + val shader0 by value { testToolchain.testPatch("shader 0") } + val shader1a by value { testToolchain.testPatch("shader 1a") } + val shader2a by value { testToolchain.testPatch("shader 2a") } + + val baseMutableShow by value { + MutableShow("test show").apply { + addPatch(shader0) + + addButtonGroup("main", "scene 1") { + addButton("patchset 1a") { addPatch(shader1a) } + } + addButtonGroup("main", "scene 2") { + addButton("patchset 2a") { addPatch(shader2a) } + addButton("patchset 2b") { addPatch(testToolchain.testPatch("shader 2b")) } + addButton("patchset 2c") { addPatch(testToolchain.testPatch("shader 2c")) } + } +// addControl("Scenes", MutableButtonGroupControl("Scenes", ButtonGroupControl.Direction.Horizontal, this)) + } + } + val baseShow by value { baseMutableShow.build(ShowBuilder()) } +// fun Show.showState() = ShowState.from(this).selectScene(1).selectPatchSet(1) +// val baseShowState by value { baseShow.showState() } + val mutableShow by value { MutableShow(baseShow) } + val show by value { mutableShow.build(ShowBuilder()) } +// val showState by value { mutableShow.getShowState() } + + context("base show") { +// it("has the expected initial scenes and patchsets") { +// expect( +// listOf("scene 1 (patchset 1a)", "scene 2 (patchset 2a, patchset 2b, patchset 2c)") +// ) { show.desc() } +// } + + it("has the expected initial shaders") { + expect(show.shaders.values.map { it.title }.toSet()) + .toBe(setOf("shader 0", "shader 1a", "shader 2a", "shader 2b", "shader 2c")) + } + + it("has the expected initial datasources") { + expect(show.dataSources.values.map { it.title }.toSet()) + .toBe(setOf("Time", "Resolution", "Blueness Slider")) + } + } + + it("leaves everything as-is if no changes are made") { + expect(baseShow).toBe(show) + } + + context("editing a shader instance") { + val editor by value { mutableShow.patches.only().mutableShaderInstances.only() } + + context("when weird port mappings are added") { + beforeEachTest { + editor.incomingLinks["nonsense"] = MutableConstPort("invalid", GlslType.from("?unknown?")) + } + + it("should retain them, I guess?") { + val id = show.patches.only().shaderInstanceIds.only() + val shaderInstance = show.shaderInstances[id]!! + expect(shaderInstance.incomingLinks.keys) + .toBe(setOf("nonsense", "time", "blueness", "resolution", "gl_FragCoord")) + } + } + + context(".isFilter") { + val inputPorts by value { listOf() } + val outputPort by value { OutputPort(ContentType.Color) } + val openShader by value { FakeOpenShader(inputPorts, outputPort) } + val mutableShader by value { MutableShader("Test shader", "Src for shader") } + val incomingLinks by value { mutableMapOf() } + val shaderChannel by value { ShaderChannel.Main.toMutable() } + val instance by value { MutableShaderInstance(mutableShader, incomingLinks, shaderChannel) } + + context("with no input port links") { + it("isn't a filter") { expect(instance.isFilter(openShader)).toBe(false) } + } + + context("when an input port's content type matches the return content type") { + override(inputPorts) { listOf(InputPort("color", ContentType.Color)) } + override(incomingLinks) { mapOf("color" to MutableConstPort("foo", GlslType.Vec4)) } + + it("isn't a filter") { expect(instance.isFilter(openShader)).toBe(false) } + + context("linked to a shader channel") { + override(incomingLinks) { mapOf("color" to ShaderChannel.Main.toMutable()) } + + context("on the same channel") { + it("is a filter") { expect(instance.isFilter(openShader)).toBe(true) } + } + + context("on a different channel") { + override(shaderChannel) { ShaderChannel("other").toMutable() } + it("isn't a filter") { expect(instance.isFilter(openShader)).toBe(false) } + } + } + } + + context("when the return content type doesn't match any of the input ports") { + override(outputPort) { OutputPort(ContentType.XyCoordinate) } + it("is a filter") { + expect(instance.isFilter(openShader)).toBe(false) + } + } + } + } + +// context("adding a patchset") { +// beforeEachTest { +// mutableShow.apply { +// editScene(1) { +// addButton("patchset 2b") { addPatch(toolchain.testPatch("shader 2b")) } +// } +// } +// } +// +// it("collects shaders") { +// expect( +// setOf("Cylindrical Projection", "shader 1a", "shader 2a", "shader 2b", "shader 2c") +// ) { show.shaders.values.map { it.title }.toSet() } +// } +// } + +// context("editing a patchset") { +// beforeEachTest { +// mutableShow.editScene(1) { +// editPatchSet(1) { title = "modified $title" } +// } +// } +// +// it("applies changes") { +// expect( +// listOf("scene 1 (patchset 1a)", "scene 2 (patchset 2a, modified patchset 2b, patchset 2c)") +// ) { show.desc() } +// } +// } + +// context("reordering scenes") { +// val fromIndex = 1 +// val toIndex = 0 +// +// beforeEachTest { +// baseMutableShow.apply { +// addButtonGroup("scene 3") { +// addButton("patchset 3a") { addPatch(toolchain.testPatch("shader 3a")) } +// } +// } +// +// mutableShow.moveScene(fromIndex, toIndex) +// } +// +// it("reorders scenes") { +// expect( +// listOf( +// "scene 2 (patchset 2a, patchset 2b, patchset 2c)", +// "scene 1 (patchset 1a)", +// "scene 3 (patchset 3a)" +// ) +// ) { show.desc() } +// } +// +// it("reorders patchset selections in show state") { +// expect(listOf(1, 0, 0)) { showState.patchSetSelections } +// } +// +// context("if the 'from' scene was selected for that scene") { +// override(baseShowState) { baseShow.showState().selectScene(fromIndex) } +// it("keeps the same scene selected") { +// expect(ShowState(toIndex, listOf(1, 0, 0))) { showState } +// } +// } +// +// context("if the 'to' scene was selected for that scene") { +// override(baseShowState) { baseShow.showState().selectScene(toIndex) } +// it("keeps the same scene selected") { +// expect(ShowState(fromIndex, listOf(1, 0, 0))) { showState } +// } +// } +// +// context("if some other scene was selected") { +// override(baseShowState) { baseShow.showState().selectScene(2) } +// it("doesn't update show state") { +// expect(ShowState(2, listOf(1, 0, 0))) { showState } +// } +// } +// +// } + +// context("reordering patchsets") { +// val fromIndex = 1 +// val toIndex = 2 +// +// override(baseShowState) { ShowState(1, listOf(2, 0)) } +// +// beforeEachTest { +// mutableShow.apply { +// editScene(1) { movePatchSet(fromIndex, toIndex) } +// } +// } +// +// it("reorders patchsets") { +// expect( +// listOf("scene 1 (patchset 1a)", "scene 2 (patchset 2a, patchset 2c, patchset 2b)") +// ) { show.desc() } +// } +// +// context("if the 'from' patchset was selected for that scene") { +// override(baseShowState) { baseShow.showState().selectPatchSet(fromIndex) } +// it("keeps the same patchset selected") { +// expect(ShowState(1, listOf(0, toIndex))) { showState } +// } +// } +// +// context("if the 'to' patchset was selected for that scene") { +// override(baseShowState) { baseShow.showState().selectPatchSet(toIndex) } +// it("keeps the same patchset selected") { +// expect(ShowState(1, listOf(0, fromIndex))) { showState } +// } +// } +// +// context("if some other patchset was selected") { +// override(baseShowState) { baseShow.showState().selectPatchSet(0) } +// it("doesn't update show state") { +// expect(ShowState(1, listOf(0, 0))) { showState } +// } +// } +// } + + context("editing MutablePatchHolders") { + it("adds to existing patch for the given surface, if it exists") { + mutableShow.addPatch(testToolchain.testPatch("show shader 1a")) + mutableShow.addPatch(testToolchain.testPatch("show shader 1b")) + + expect(show.patches.map { patch -> + patch.surfaces to + patch.shaderInstanceIds.map { + show.shaderInstances[it]?.shaderId?.let { shaderId -> + show.shaders[shaderId]?.title + } ?: "?!?" + } + }.associate { it }).toBe( + mapOf( + Surfaces.AllSurfaces to listOf( + "shader 0", + "show shader 1a", + "show shader 1b" + ) + ) + ) + } + } + } +}) + +private fun Toolchain.testPatch(title: String): MutablePatch { + val shader = Shader( + title, + """ + // $title + uniform float time; + uniform vec2 resolution; + uniform float blueness; + int someGlobalVar; + const int someConstVar = 123; + + int anotherFunc(int i) { return i; } + + void main( void ) { + vec2 uv = gl_FragCoord.xy / resolution.xy; + someGlobalVar = anotherFunc(someConstVar); + gl_FragColor = vec4(uv.xy, blueness, 1.); + } + """.trimIndent() + ) + + return autoWire(shader).acceptSuggestedLinkOptions().confirm() +} + +//private fun Show.desc(): List = +// scenes.map { "${it.title} (${it.patchSets.joinToString(", ") { it.title }})" } \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/live/ControlDisplaySpec.kt b/src/commonTest/kotlin/baaahs/show/live/ControlDisplaySpec.kt new file mode 100644 index 0000000000..0055d01119 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/live/ControlDisplaySpec.kt @@ -0,0 +1,89 @@ +package baaahs.show.live + +import baaahs.describe +import baaahs.gl.testToolchain +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.ShowBuilder +import baaahs.shows.FakeShowPlayer +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object ControlDisplaySpec : Spek({ + describe { + val mutableShow by value { + MutableShow("Show") + .editLayouts { copyFrom(createLayouts("Panel 1", "Panel 2", "Panel 3")) } + } + val show by value { mutableShow.build(ShowBuilder()) } + + val showPlayer by value { FakeShowPlayer() } + val showOpener by value { ShowOpener(testToolchain, show, showPlayer) } + val openShow by value { showOpener.openShow() } + val editHandler by value { FakeEditHandler() } + val dragNDrop by value { FakeDragNDrop() } + val controlDisplay by value { + ControlDisplay(openShow, editHandler, dragNDrop) + } + + context("empty show") { + it("renders all empty sections") { + expect(openShow.fakeRender(controlDisplay)).toBe(""" + Panel 1: + |Show| + Panel 2: + |Show| + Panel 3: + |Show| + """.trimIndent()) + expect(controlDisplay.unplacedControls).isEmpty() + } + } + + context("a show with button groups") { + beforeEachTest { mutableShow.addFixtureControls() } + + val panel1 by value { openShow.controlLayout["Panel 1"] ?: emptyList() } + val scenesButtonGroup by value { panel1.first() as OpenButtonGroupControl } + val scene1Button by value { scenesButtonGroup.buttons.first() } + val backdrops1ButtonGroup by value { scene1Button.controlLayout["Panel 2"]!!.first() as OpenButtonGroupControl } + val backdrop11Button by value { backdrops1ButtonGroup.buttons.first() } + + it("renders controls correctly") { + expect(openShow.fakeRender(controlDisplay)).toBe(""" + Panel 1: + |Show| scenesButtonGroup[*scene1Button*, scene2Button] + |Scene 1| + |Backdrop 1.1| + Panel 2: + |Show| + |Scene 1| backdropsButtonGroup[*backdrop11Button*, backdrop12Button] + |Backdrop 1.1| + Panel 3: + |Show| + |Scene 1| slider1SliderControl + |Backdrop 1.1| + """.trimIndent()) + } + + it("lists controls that aren't visible on screen as unplaced") { + expect(controlDisplay.unplacedControls.map { it.id }.toSet()) + .toBe(setOf("slider2SliderControl", "backdrop21Button", "backdrop22Button", "backdropsButtonGroup2")) + } + + it("has the first item in the button group selected by default") { + expect(scenesButtonGroup.buttons.map { it.isPressed }) + .containsExactly(true,false) + + expect(openShow.activePatchSet().activePatches.prettyPrint()) + .toBe((openShow.patches + scene1Button.patches + backdrop11Button.patches).prettyPrint()) + } + } + } +}) + +fun List.prettyPrint(): List { + return flatMap { it.shaderInstances.map { it.shader.title } } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/live/ControlDragNDropSpec.kt b/src/commonTest/kotlin/baaahs/show/live/ControlDragNDropSpec.kt new file mode 100644 index 0000000000..ef673e8b12 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/live/ControlDragNDropSpec.kt @@ -0,0 +1,198 @@ +package baaahs.show.live + +import baaahs.getBang +import baaahs.gl.override +import baaahs.show.live.ControlDisplay.PanelBuckets.PanelBucket +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.ShowBuilder +import baaahs.shows.FakeShowPlayer +import baaahs.toBeSpecified +import baaahs.ui.Draggable +import baaahs.ui.DropTarget +import baaahs.unknown +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +object ControlDragNDropSpec : Spek({ + describe("Control Drag & Drop") { + val mutableShow by value { + MutableShow("Show") + .editLayouts { copyFrom(createLayouts("Panel 1", "Panel 2", "Panel 3")) } + } + val show by value { mutableShow.build(ShowBuilder()) } + + val showPlayer by value { FakeShowPlayer() } + val openShow by value { showPlayer.openShow(show) } + val editHandler by value { FakeEditHandler() } + val dragNDrop by value { FakeDragNDrop() } + val controlDisplay by value { ControlDisplay(openShow, editHandler, dragNDrop) } + + fun renderEditedShow(): String { + val editedOpenShow = showPlayer.openShow(editHandler.updatedShow, openShow.getShowState()) + val newControlDisplay = ControlDisplay(editedOpenShow, editHandler, dragNDrop) + return editedOpenShow.fakeRender(newControlDisplay) + } + + beforeEachTest { + mutableShow.addFixtureControls() + mutableShow.addButton("Panel 1", "Button A") {} + mutableShow.addButton("Panel 1", "Button B") {} + } + + val panelBuckets by value { + openShow.layouts.panelNames.associateWith { panelName -> + controlDisplay.renderBuckets(panelName) + } + } + + fun findBucket(panelName: String, sectionTitle: String): PanelBucket { + val panelBucket = panelBuckets.getBang(panelName, "Panel") + return panelBucket.find { it.section.title == sectionTitle } + ?: error(unknown("section", sectionTitle, panelBucket.map { it.section.title })) + } + + val fromDropTarget by value { toBeSpecified() } + val toDropTarget by value { toBeSpecified() } + val draggedControl by value { toBeSpecified() } + + it("has the expected initial state") { + expect(openShow.fakeRender(controlDisplay)).toBe( + """ + Panel 1: + |Show| scenesButtonGroup[*scene1Button*, scene2Button], buttonAButton, buttonBButton + |Scene 1| + |Backdrop 1.1| + Panel 2: + |Show| + |Scene 1| backdropsButtonGroup[*backdrop11Button*, backdrop12Button] + |Backdrop 1.1| + Panel 3: + |Show| + |Scene 1| slider1SliderControl + |Backdrop 1.1| + """.trimIndent() + ) + } + + context("when a button is dragged") { + override(fromDropTarget) { findBucket("Panel 1", "Show") } + override(draggedControl) { fromDropTarget.getDraggable(1) } + + context("and dropped within the same DropTarget") { + override(toDropTarget) { fromDropTarget } + + it("can be dropped back in the same bucket") { + expect(draggedControl.willMoveTo(toDropTarget)).toBe(true) + expect(toDropTarget.willAccept(draggedControl)).toBe(true) + } + + it("reorders controls in the parent") { + dragNDrop.doMove(fromDropTarget, 1, fromDropTarget, 2) + + expect(editHandler.updatedShow.controlLayout.getBang("Panel 1", "panels")) + .containsExactly("scenesButtonGroup", "buttonBButton", "buttonAButton") + } + } + + context("and dropped to another PanelBucket") { + override(toDropTarget) { findBucket("Panel 1", "Scene 1") } + + it("can be dropped back into another bucket") { + expect(draggedControl.willMoveTo(toDropTarget)).toBe(true) + expect(toDropTarget.willAccept(draggedControl)).toBe(true) + } + + it("removes the control from prior parent and adds it to the new parent") { + dragNDrop.doMove(fromDropTarget, 1, toDropTarget, 0) + + expect(renderEditedShow()).toBe( + """ + Panel 1: + |Show| scenesButtonGroup[*scene1Button*, scene2Button], buttonBButton + |Scene 1| buttonAButton + |Backdrop 1.1| + Panel 2: + |Show| + |Scene 1| backdropsButtonGroup[*backdrop11Button*, backdrop12Button] + |Backdrop 1.1| + Panel 3: + |Show| + |Scene 1| slider1SliderControl + |Backdrop 1.1| + """.trimIndent() + ) + } + } + + context("and dropped to a ButtonGroup") { + override(toDropTarget) { + (openShow.allControls.find { it.id == "scenesButtonGroup" } as OpenButtonGroupControl) + .createDropTarget(controlDisplay) + } + + it("can be dropped into a button group") { + expect(draggedControl.willMoveTo(toDropTarget)).toBe(true) + expect(toDropTarget.willAccept(draggedControl)).toBe(true) + } + + it("removes the control from prior parent and adds it to the new parent") { + dragNDrop.doMove(fromDropTarget, 1, toDropTarget, 0) + + expect(renderEditedShow()).toBe( + """ + Panel 1: + |Show| scenesButtonGroup[buttonAButton, *scene1Button*, scene2Button], buttonBButton + |Scene 1| + |Backdrop 1.1| + Panel 2: + |Show| + |Scene 1| backdropsButtonGroup[*backdrop11Button*, backdrop12Button] + |Backdrop 1.1| + Panel 3: + |Show| + |Scene 1| slider1SliderControl + |Backdrop 1.1| + """.trimIndent() + ) + } + } + + context("from a ButtonGroup to a panel") { + override(fromDropTarget) { + (openShow.allControls.find { it.id == "scenesButtonGroup" } as OpenButtonGroupControl) + .createDropTarget(controlDisplay) + } + override(toDropTarget) { findBucket("Panel 1", "Scene 1") } + + it("can be dropped") { + expect(draggedControl.willMoveTo(toDropTarget)).toBe(true) + expect(toDropTarget.willAccept(draggedControl)).toBe(true) + } + + it("removes the control from prior parent and adds it to the new parent") { + dragNDrop.doMove(fromDropTarget, 1, toDropTarget, 0) + + expect(renderEditedShow()).toBe( + """ + Panel 1: + |Show| scenesButtonGroup[*scene1Button*], buttonAButton, buttonBButton + |Scene 1| scene2Button + |Backdrop 1.1| + Panel 2: + |Show| + |Scene 1| backdropsButtonGroup[*backdrop11Button*, backdrop12Button] + |Backdrop 1.1| + Panel 3: + |Show| + |Scene 1| slider1SliderControl + |Backdrop 1.1| + """.trimIndent() + ) + } + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/live/FakeOpenShader.kt b/src/commonTest/kotlin/baaahs/show/live/FakeOpenShader.kt new file mode 100644 index 0000000000..c363806b3c --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/live/FakeOpenShader.kt @@ -0,0 +1,45 @@ +package baaahs.show.live + +import baaahs.RefCounted +import baaahs.RefCounter +import baaahs.gl.glsl.GlslCode +import baaahs.gl.glsl.GlslError +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.gl.shader.dialect.ShaderDialect +import baaahs.gl.shader.type.ShaderType +import baaahs.show.Shader + +class FakeOpenShader( + override val inputPorts: List, + override val outputPort: OutputPort, + override val title: String = "Test shader" +) : OpenShader, RefCounted by RefCounter() { + override val shader: Shader + get() = Shader(title, "fake src for $title") + + override val glslCode: GlslCode + get() = GlslCode(shader.src, emptyList()) + + override val entryPoint: GlslCode.GlslFunction + get() = TODO("not implemented") + + override fun toGlsl(namespace: GlslCode.Namespace, portMap: Map): String = + "// GLSL for $title" + + override fun invocationGlsl( + namespace: GlslCode.Namespace, + resultVar: String, + portMap: Map + ): String = "// invocationGlsl for $title;\n" + + override val shaderType: ShaderType + get() = TODO("not implemented") + + override val shaderDialect: ShaderDialect + get() = TODO("not implemented") + + override val errors: List + get() = emptyList() +} diff --git a/src/commonTest/kotlin/baaahs/show/live/LiveShaderInstanceSpec.kt b/src/commonTest/kotlin/baaahs/show/live/LiveShaderInstanceSpec.kt new file mode 100644 index 0000000000..a5e776ef34 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/live/LiveShaderInstanceSpec.kt @@ -0,0 +1,71 @@ +package baaahs.show.live + +import baaahs.Severity +import baaahs.ShowProblem +import baaahs.describe +import baaahs.gl.glsl.GlslType +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.shader.InputPort +import baaahs.gl.shader.OutputPort +import baaahs.show.ShaderChannel +import baaahs.show.live.LiveShaderInstance.* +import ch.tutteli.atrium.api.fluent.en_GB.contains +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object LiveShaderInstanceSpec : Spek({ + describe { + val inputPorts by value { listOf() } + val outputPort by value { OutputPort(ContentType.Color) } + val links by value { mapOf() } + val shaderChannel by value { ShaderChannel.Main } + val instance by value { LiveShaderInstance(FakeOpenShader(inputPorts, outputPort), links, shaderChannel) } + + context(".isFilter") { + context("with no input port links") { + it("isn't a filter") { expect(instance.isFilter).toBe(false) } + } + + context("when an input port's content type matches the return content type") { + override(inputPorts) { listOf(InputPort("color", ContentType.Color)) } + override(links) { mapOf("color" to ConstLink("foo", GlslType.Vec4)) } + + it("isn't a filter") { expect(instance.isFilter).toBe(false) } + + context("linked to a shader channel") { + override(links) { mapOf("color" to ShaderChannelLink(ShaderChannel.Main)) } + + context("on the same channel") { + it("is a filter") { expect(instance.isFilter).toBe(true) } + } + + context("on a different channel") { + override(shaderChannel) { ShaderChannel("other") } + it("isn't a filter") { expect(instance.isFilter).toBe(false) } + } + } + } + + context("when the return content type doesn't match any of the input ports") { + override(outputPort) { OutputPort(ContentType.XyCoordinate) } + it("is a filter") { + expect(instance.isFilter).toBe(false) + } + } + } + + context(".problems") { + context("when the output port's content type is unknown") { + override(outputPort) { OutputPort(ContentType.Unknown) } + + it("fails to validate") { + println("problems: ${instance.problems}") + expect(instance.problems.map { it.copy(id = "") }) + .contains(ShowProblem("Result content type is unknown for shader \"${instance.title}\".", severity = Severity.ERROR, id = "")) + } + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/live/OpenShowSpec.kt b/src/commonTest/kotlin/baaahs/show/live/OpenShowSpec.kt new file mode 100644 index 0000000000..d21c79048c --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/live/OpenShowSpec.kt @@ -0,0 +1,102 @@ +package baaahs.show.live + +import baaahs.describe +import baaahs.gl.glsl.GlslType +import baaahs.gl.testToolchain +import baaahs.only +import baaahs.show.Layout +import baaahs.show.Layouts +import baaahs.show.Shader +import baaahs.show.mutable.MutableConstPort +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.ShowBuilder +import baaahs.shows.FakeShowPlayer +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlinx.serialization.json.buildJsonObject +import org.spekframework.spek2.Spek +import kotlin.collections.set + +object OpenShowSpec : Spek({ + describe { + val mutableShow by value { MutableShow("Show") } + val show by value { mutableShow.build(ShowBuilder()) } + + val showPlayer by value { FakeShowPlayer() } + val showOpener by value { ShowOpener(testToolchain, show, showPlayer) } + val openShow by value { showOpener.openShow() } + + beforeEachTest { + mutableShow.editLayouts { + copyFrom( + Layouts( + listOf("Panel 1", "Panel 2", "Panel 3"), + mapOf("default" to Layout(buildJsonObject { })) + ) + ) + } + } + + context("empty show") { + it("creates an empty OpenShow") { + expect(openShow.title).toBe("Show") + + expect(openShow.activePatchSet().activePatches).isEmpty() + } + } + + context("a show with button groups") { + beforeEachTest { + mutableShow.addPatch(testToolchain.wireUp(fakeShader("Show Shader"))) + + mutableShow.addButtonGroup("Panel 1", "Scenes") { + addButton("First Scene") { + addPatch(testToolchain.wireUp(fakeShader("First Scene Shader"))) + } + + addButton("Second Scene") { + addPatch(testToolchain.wireUp(fakeShader("Second Scene Shader"))) + } + } + } + + val panel1 by value { openShow.controlLayout["Panel 1"] ?: emptyList() } + val scenesButtonGroup by value { panel1.first() as OpenButtonGroupControl } + + it("creates an OpenShow") { + expect(scenesButtonGroup.title) + .toBe("Scenes") + expect(scenesButtonGroup.buttons.map { it.title }) + .containsExactly("First Scene","Second Scene") + } + + it("has the first item in the button group selected by default") { + expect(scenesButtonGroup.buttons.map { it.isPressed }) + .containsExactly(true,false) + + expect(openShow.activePatchSet().activePatches) + .toBe(openShow.patches + scenesButtonGroup.buttons[0].patches) + } + } + + context("when a shader instance has weird incoming links") { + beforeEachTest { + mutableShow.addPatch( + testToolchain.wireUp( + Shader("Weird Shader", "uniform float time;\nvoid main() { gl_FragColor = gl_FragCoord + time; }") + ).apply { + mutableShaderInstances.only().incomingLinks["nonsense"] = + MutableConstPort("invalid", GlslType.Companion.from("?huh?")) + } + ) + } + + it("ignores links to unknown ports") { + expect(openShow.patches.only().shaderInstances.only().incomingLinks.keys) + .toBe(setOf("gl_FragCoord", "time")) + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/live/TestUtil.kt b/src/commonTest/kotlin/baaahs/show/live/TestUtil.kt new file mode 100644 index 0000000000..be3f8291de --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/live/TestUtil.kt @@ -0,0 +1,139 @@ +package baaahs.show.live + +import baaahs.ShowState +import baaahs.app.ui.editor.PortLinkOption +import baaahs.gl.Toolchain +import baaahs.gl.autoWire +import baaahs.gl.shader.type.PaintShader +import baaahs.gl.shader.type.ProjectionShader +import baaahs.gl.shader.type.ShaderType +import baaahs.gl.testToolchain +import baaahs.plugin.CorePlugin +import baaahs.show.Layout +import baaahs.show.Layouts +import baaahs.show.Shader +import baaahs.show.Show +import baaahs.show.mutable.EditHandler +import baaahs.show.mutable.MutablePatch +import baaahs.show.mutable.MutablePort +import baaahs.show.mutable.MutableShow +import baaahs.ui.DragNDrop +import baaahs.ui.DropTarget +import kotlinx.serialization.json.buildJsonObject + +fun Toolchain.wireUp(shader: Shader, ports: Map = emptyMap()): MutablePatch { + val unresolvedPatch = autoWire(shader) + unresolvedPatch.editShader(shader).apply { + ports.forEach { (portId, port) -> + linkOptionsFor(portId).apply { + clear() + add(PortLinkOption(port)) + } + } + } + return unresolvedPatch.acceptSuggestedLinkOptions().confirm() +} + +fun fakeShader(title: String, type: ShaderType = PaintShader) = + type.newShaderFromTemplate().apply { this.title = title }.build() + +class FakeEditHandler : EditHandler { + val calls = arrayListOf>() + lateinit var updatedShow: Show + + override fun onShowEdit(mutableShow: MutableShow, pushToUndoStack: Boolean) { + calls.add(listOf(mutableShow, pushToUndoStack)) + updatedShow = mutableShow.getShow() + } + + override fun onShowEdit(show: Show, pushToUndoStack: Boolean) { + onShowEdit(show, ShowState(emptyMap()), pushToUndoStack) + } + + override fun onShowEdit(show: Show, showState: ShowState, pushToUndoStack: Boolean) { + calls.add(listOf(show, showState, pushToUndoStack)) + updatedShow = show + } +} + +class FakeDragNDrop : DragNDrop() { + fun getDropTargets() = dropTargets.all() + + fun doMove(source: DropTarget, sourceIndex: Int, dest: DropTarget, destIndex: Int) { + onMove(source, sourceIndex, dest, destIndex) + } +} + +fun OpenControl.fakeRender(): String { + return when (this) { + is OpenButtonGroupControl -> "$id[${buttons.joinToString(", ") { it.fakeRender() }}]" + is OpenButtonControl -> if (isPressed) "*$id*" else id + else -> id + } +} + +fun OpenShow.fakeRender(controlDisplay: ControlDisplay): String { + val buf = StringBuilder() + + layouts.panelNames.forEach { panelName -> + buf.append("$panelName:\n") + controlDisplay.render(panelName) { panelBucket -> + buf.append(" |${panelBucket.section.title}|") + if (panelBucket.controls.isNotEmpty()) { + buf.append(" ${panelBucket.controls.joinToString(", ") { it.control.fakeRender() }}") + } + buf.append("\n") + } + } + + return buf.trim().replace(Regex("\\s+\n"), "\n") +} + +fun createLayouts(vararg panelNames: String): Layouts { + return Layouts(panelNames.toList(), mapOf("default" to Layout(buildJsonObject { }))) +} + +fun MutableShow.addFixtureControls() { + val slider1 = CorePlugin.SliderDataSource("slider1", 0f, 0f, 1f, 1f) + val slider2 = CorePlugin.SliderDataSource("slider2", 0f, 0f, 1f, 1f) + + addPatch(testToolchain.wireUp(fakeShader("Show Projection", ProjectionShader))) + + addButtonGroup("Panel 1", "Scenes") { + addButton("Scene 1") { + addPatch(testToolchain.wireUp(fakeShader("Scene 1 Shader"))) + + addButtonGroup("Panel 2", "Backdrops") { + addButton("Backdrop 1.1") { + addPatch(testToolchain.wireUp(fakeShader("Backdrop 1.1 Shader"))) + } + addButton("Backdrop 1.2") { + addPatch(testToolchain.wireUp(fakeShader("Backdrop 1.2 Shader"))) + addControl("Panel 3", slider2.buildControl()) + } + } + addControl("Panel 3", slider1.buildControl()) + } + + addButton("Scene 2") { + addPatch(testToolchain.wireUp(fakeShader("Scene 2 Shader"))) + + addButtonGroup("Panel 2", "Backdrops") { + addButton("Backdrop 2.1") { + addPatch(testToolchain.wireUp(fakeShader("Backdrop 2.1 Shader"))) + addControl("Panel 3", slider2.buildControl()) + } + addButton("Backdrop 2.2") { + addPatch(testToolchain.wireUp(fakeShader("Backdrop 2.2 Shader"))) + addControl("Panel 3", slider1.buildControl()) + } + } + } + } +} + +fun ControlDisplay.renderBuckets(panelName: String): List { + val buckets = arrayListOf() + render(panelName) { panelBucket -> buckets.add(panelBucket) } + return buckets +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/show/mutable/MutableShowVisitorSpec.kt b/src/commonTest/kotlin/baaahs/show/mutable/MutableShowVisitorSpec.kt new file mode 100644 index 0000000000..c6898f93ae --- /dev/null +++ b/src/commonTest/kotlin/baaahs/show/mutable/MutableShowVisitorSpec.kt @@ -0,0 +1,111 @@ +package baaahs.show.mutable + +import baaahs.describe +import baaahs.gl.expects +import baaahs.show.DataSource +import baaahs.show.SampleData +import baaahs.show.Surfaces +import org.spekframework.spek2.Spek + +object MutableShowVisitorSpec : Spek({ + val show by value { MutableShow(SampleData.sampleShow) } + + describe { + val visitor by value { CollectingVisitor() } + val visitorCounts by value { + visitor.items.groupBy { it }.mapValues { (_, v) -> v.size } + } + + context("when visiting a show") { + it("should visit things but only once") { + show.accept(visitor) + + expects( + mapOf( + "Some patch holder" to 8, // These represent distinct items that don't have distinguishing short names. + "Some patch" to 6, // These represent distinct items that don't have distinguishing short names. + "Control Backdrops" to 2, // There really are two controls named "Backdrops" + "Control Blue Aqua Green" to 1, + "Control Brightness" to 1, + "Control Checkerboard Size" to 1, + "Control Checkerboard" to 1, + "Control Color" to 1, + "Control Fire" to 1, + "Control Holocene" to 1, + "Control Intensity" to 1, + "Control Pleistocene" to 1, + "Control Red Yellow Green" to 1, + "Control Saturation" to 1, + "Control Scenes" to 1, + "Control Wobble" to 1, + "Data source Brightness Slider" to 1, + "Data source Checkerboard Size Slider" to 1, + "Data source Model Info" to 1, + "Data source Pixel Location" to 1, + "Data source Redness Slider" to 1, + "Data source Resolution" to 1, + "Data source Saturation Slider" to 1, + "Data source Time" to 1, + "Data source Ripple Amount Slider" to 1, + "Shader Another GLSL Hue Test Pattern" to 1, + "Shader Brightness" to 1, + "Shader Checkerboard" to 1, + "Shader Darkness" to 1, + "Shader Fire Ball" to 1, + "Shader GLSL Hue Test Pattern" to 1, + "Shader Ripple" to 1, + "Shader Saturation" to 1, + "Shader XY Projection" to 1, + "Shader channel main" to 1, + "Shader instance Another GLSL Hue Test Pattern" to 1, + "Shader instance Brightness" to 1, + "Shader instance Checkerboard" to 1, + "Shader instance Darkness" to 1, + "Shader instance Fire Ball" to 1, + "Shader instance GLSL Hue Test Pattern" to 1, + "Shader instance Ripple" to 1, + "Shader instance Saturation" to 1, + "Shader instance XY Projection" to 1, + "Surfaces All Surfaces" to 1, + ) + ) { visitorCounts } + } + } + } +}) + +class CollectingVisitor : MutableShowVisitor { + val items = mutableListOf() + + override fun visit(mutablePatchHolder: MutablePatchHolder) { + items.add("Some patch holder") + } + + override fun visit(mutablePatch: MutablePatch) { + items.add("Some patch") + } + + override fun visit(surfaces: Surfaces) { + items.add("Surfaces ${surfaces.name}") + } + + override fun visit(mutableControl: MutableControl) { + items.add("Control ${mutableControl.title}") + } + + override fun visit(mutableShaderInstance: MutableShaderInstance) { + items.add("Shader instance ${mutableShaderInstance.mutableShader.title}") + } + + override fun visit(mutableShader: MutableShader) { + items.add("Shader ${mutableShader.title}") + } + + override fun visit(mutableShaderChannel: MutableShaderChannel) { + items.add("Shader channel ${mutableShaderChannel.id}") + } + + override fun visit(dataSource: DataSource) { + items.add("Data source ${dataSource.title}") + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shows/FakeKgl.kt b/src/commonTest/kotlin/baaahs/shows/FakeKgl.kt new file mode 100644 index 0000000000..da8dc2dd9f --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shows/FakeKgl.kt @@ -0,0 +1,439 @@ +package baaahs.shows + +import baaahs.getBang +import baaahs.gl.GlContext +import com.danielgergely.kgl.* + +class FakeGlContext(private val kgl: FakeKgl = FakeKgl()) : GlContext(kgl, "1234") { + val programs get() = kgl.programs.let { it.subList(1, it.size) } + val textures get() = kgl.textures.let { it.subList(1, it.size) } + val allocatedTextureUnits get() = textureUnits + + override fun runInContext(fn: () -> T): T { + ++kgl.nestLevel + try { return fn() } finally { kgl.nestLevel-- } + } + + fun getTextureConfig(textureUnit: Int): FakeKgl.TextureConfig { + return kgl.getTextureConfig(textureUnit) + ?: error("no texture bound on unit $textureUnit") + } + + fun findProgram(id: Program) = kgl.programs[id as Int] +} + +// Until mockk works on JS: +class FakeKgl : Kgl { + var nestLevel = 0 + + internal val shaders = arrayListOf(FakeShader(0)) // 1-based + internal val programs = arrayListOf(FakeProgram()) // 1-based + private var activeProgram: FakeProgram? = null + + private val uniforms = arrayListOf(null) // 1-based + + internal val textures = arrayListOf(TextureConfig()) // 1-based + private var activeTextureUnit: Int? = null + private var textureUnits: MutableMap = mutableMapOf() + private var targets: MutableMap = mutableMapOf() + + private fun checkContext() { + if (nestLevel == 0) error("ran GL command outside of context!") + } + + inner class FakeShader(val type: Int) { + var src: String? = null + } + + inner class FakeProgram { + val shaders = mutableMapOf() + private val uniformIdsByName = mutableMapOf() + val renders = mutableListOf() + + fun getUniformLocation(name: String): UniformLocation? { + return fake(uniformIdsByName.getOrPut(name) { + uniforms.add(null) + uniforms.size - 1 + }) + } + + @Suppress("UNCHECKED_CAST") + fun getUniform(name: String): T { + return uniforms[uniformIdsByName.getBang(name, "uniform")] as T + } + + fun uniformNames() = uniformIdsByName.keys.toSet() + + fun recordRender() { + renders.add( + RenderState(uniformIdsByName.mapValues { (_, uniformId) -> uniforms[uniformId] }) + ) + } + } + + inner class RenderState(val uniforms: Map) { + val textureBuffers = textures.subList(1, textures.size) + .map { it.buffer?.contents() ?: emptyList() } + } + + class TextureConfig( + var params: MutableMap = mutableMapOf(), + var level: Int? = null, + var internalFormat: Int? = null, + var width: Int? = null, + var height: Int? = null, + var border: Int? = null, + var format: Int? = null, + var type: Int? = null, + var buffer: Buffer? = null, + var offset: Int? = null + ) { + var isDeleted: Boolean = false + + fun delete() { + if (isDeleted) error("Already deleted.") + isDeleted = true + } + } + + override fun activeTexture(texture: Int) { + checkContext() + activeTextureUnit = texture - GL_TEXTURE0 + } + + override fun attachShader(programId: Program, shaderId: Shader) { + checkContext() + + val fakeProgram = programs[programId as Int] + val fakeShader = shaders[shaderId as Int] + fakeProgram.shaders[fakeShader.type] = fakeShader + } + + override fun bindAttribLocation(programId: Program, index: Int, name: String) { checkContext() } + + override fun bindBuffer(target: Int, bufferId: GlBuffer?) { checkContext() } + + override fun bindFramebuffer(target: Int, framebuffer: Framebuffer?) { checkContext() } + + override fun bindRenderbuffer(target: Int, renderbuffer: Renderbuffer?) { checkContext() } + + override fun bindTexture(target: Int, texture: Texture?) { + checkContext() + if (texture == null) { + targets.remove(target) + textureUnits.remove(activeTextureUnit) + } else { + @Suppress("CAST_NEVER_SUCCEEDS") + val boundTextureConfig = textures[texture as Int] + targets[target] = boundTextureConfig + textureUnits[activeTextureUnit!!] = boundTextureConfig + } + } + + override fun bindVertexArray(vertexArrayObject: VertexArrayObject?) { checkContext() } + + override fun blendFunc(sFactor: Int, dFactor: Int) { checkContext() } + + override fun bufferData(target: Int, sourceData: Buffer, size: Int, usage: Int, offset: Int) { checkContext() } + + override fun checkFramebufferStatus(target: Int): Int = 1 + + override fun clear(mask: Int) { checkContext() } + + override fun clearColor(r: Float, g: Float, b: Float, a: Float) { checkContext() } + + override fun compileShader(shaderId: Shader) { checkContext() } + + override fun createBuffer(): GlBuffer = fake(1) + + override fun createBuffers(count: Int): Array = Array(count) { createBuffer() } + + override fun createFramebuffer(): Framebuffer = fake(1) + + override fun createProgram(): Program? { + checkContext() + programs.add(FakeProgram()) + return fake(programs.size - 1) + } + + override fun createRenderbuffer(): Renderbuffer { + checkContext() + return fake(1) + } + + override fun createShader(type: Int): Shader? { + checkContext() + shaders.add(FakeShader(type)) + return fake(shaders.size - 1) + } + + override fun createTexture(): Texture { + checkContext() + textures.add(TextureConfig()) + return fake(textures.size - 1) + } + + override fun createTextures(n: Int): Array = Array(n) { createTexture() } + + override fun createVertexArray(): VertexArrayObject { + checkContext() + return fake(1) + } + + override fun cullFace(mode: Int) { checkContext() } + + override fun deleteBuffer(buffer: GlBuffer) { checkContext() } + + override fun deleteFramebuffer(framebuffer: Framebuffer) { checkContext() } + + override fun deleteRenderbuffer(renderbuffer: Renderbuffer) { checkContext() } + + override fun deleteShader(shaderId: Shader) { checkContext() } + + override fun deleteTexture(texture: Texture) { + checkContext() + val textureConfig = textures[defake(texture)] + textureConfig.delete() + } + + override fun deleteVertexArray(vertexArrayObject: VertexArrayObject) { checkContext() } + + override fun disable(cap: Int) { checkContext() } + + override fun disableVertexAttribArray(location: Int) { checkContext() } + + override fun drawArrays(mode: Int, first: Int, count: Int) { + checkContext() + activeProgram?.recordRender() + } + + override fun enable(cap: Int) { checkContext() } + + override fun enableVertexAttribArray(location: Int) { checkContext() } + + override fun finish() { checkContext() } + + override fun framebufferRenderbuffer( + target: Int, + attachment: Int, + renderbuffertarget: Int, + renderbuffer: Renderbuffer + ) { + checkContext() + } + + override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: Texture, level: Int) { checkContext() } + + override fun generateMipmap(target: Int) { checkContext() } + + override fun getAttribLocation(programId: Program, name: String): Int { + checkContext() + return 1 + } + + override fun getError(): Int { + checkContext() + return 0 + } + + override fun getProgramInfoLog(program: Program): String? { + checkContext() + return null + } + + override fun getProgramParameter(program: Program, pname: Int): Int { + checkContext() + return GL_TRUE + } + + override fun getShaderInfoLog(shaderId: Shader): String? { + checkContext() + return null + } + + override fun getShaderParameter(shader: Shader, pname: Int): Int { + checkContext() + return GL_TRUE + } + + override fun getUniformLocation(programId: Program, name: String): UniformLocation? { + checkContext() + @Suppress("CAST_NEVER_SUCCEEDS") + return programs[programId as Int].getUniformLocation(name) + } + + override fun isFramebuffer(framebuffer: Framebuffer): Boolean { + checkContext() + return true + } + + override fun isRenderbuffer(renderbuffer: Renderbuffer): Boolean { + checkContext() + return true + } + + override fun linkProgram(programId: Program) { checkContext() } + + override fun readPixels( + x: Int, + y: Int, + width: Int, + height: Int, + format: Int, + type: Int, + buffer: Buffer, + offset: Int + ) { + checkContext() + } + + override fun renderbufferStorage(target: Int, internalformat: Int, width: Int, height: Int) { checkContext() } + + override fun shaderSource(shaderId: Shader, source: String) { + checkContext() + val fakeShader = shaders[shaderId as Int] + fakeShader.src = source + } + + override fun texImage2D(target: Int, level: Int, internalFormat: Int, border: Int, resource: TextureResource) { checkContext() } + + override fun texImage2D( + target: Int, + level: Int, + internalFormat: Int, + width: Int, + height: Int, + border: Int, + format: Int, + type: Int, + buffer: Buffer, + offset: Int + ) { + checkContext() + targets[target]!!.apply { + this.level = level + this.internalFormat = internalFormat + this.width = width + this.height = height + this.border = border + this.format = format + this.type = type + this.buffer = buffer + this.offset = offset + } + } + + override fun texParameteri(target: Int, pname: Int, value: Int) { + checkContext() + targets[target]!!.params[pname] = value + } + + fun UniformLocation.set(value: Any) { + @Suppress("CAST_NEVER_SUCCEEDS") + uniforms[this as Int] = value + } + + override fun uniform1f(location: UniformLocation, f: Float) { + checkContext() + location.set(f) + } + + override fun uniform1i(location: UniformLocation, i: Int) { + checkContext() + location.set(i) + } + + override fun uniform2f(location: UniformLocation, x: Float, y: Float) { + checkContext() + location.set(listOf(x, y)) + } + + override fun uniform2i(location: UniformLocation, x: Int, y: Int) { + checkContext() + location.set(listOf(x, y)) + } + + override fun uniform3f(location: UniformLocation, x: Float, y: Float, z: Float) { + checkContext() + location.set(listOf(x, y, z)) + } + + override fun uniform3fv(location: UniformLocation, value: FloatArray) { + checkContext() + location.set(value) + } + + override fun uniform3i(location: UniformLocation, x: Int, y: Int, z: Int) { + checkContext() + location.set(listOf(x, y, z)) + } + + override fun uniform4f(location: UniformLocation, x: Float, y: Float, z: Float, w: Float) { + checkContext() + location.set(listOf(x, y, z, w)) + } + + override fun uniform4i(location: UniformLocation, x: Int, y: Int, z: Int, w: Int) { + checkContext() + location.set(listOf(x, y, z, w)) + } + + override fun uniformMatrix3fv(location: UniformLocation, transpose: Boolean, value: FloatArray) { checkContext() } + + override fun uniformMatrix4fv(location: UniformLocation, transpose: Boolean, value: FloatArray) { checkContext() } + + override fun useProgram(programId: Program) { + checkContext() + @Suppress("CAST_NEVER_SUCCEEDS") + activeProgram = programs[programId as Int] + } + + override fun vertexAttribPointer( + location: Int, + size: Int, + type: Int, + normalized: Boolean, + stride: Int, + offset: Int + ) { + checkContext() + } + + override fun viewport(x: Int, y: Int, width: Int, height: Int) { checkContext() } + + private fun fake(i: Int): T { + @Suppress("UNCHECKED_CAST") + return i as T + } + + private fun defake(i: T): Int { + @Suppress("UNCHECKED_CAST") + return i as Int + } + + fun getTextureConfig(textureUnit: Int): TextureConfig? { + return textureUnits[textureUnit] + } + + companion object { + private fun dump(callback: (Int) -> T): List = + arrayListOf() + .also { list -> + try { + var i = 0 + while (true) list.add(callback(i++)) + } catch (e: Exception) { + // Cool, out of items. + } + } + + fun ByteBuffer.contents() = dump { i -> this[i] } + fun FloatBuffer.contents() = dump { i -> this[i] } + fun Buffer.contents() = + when(this) { + is ByteBuffer -> this.contents() + is FloatBuffer -> this.contents() + else -> error("unknown type") + } + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shows/FakeShowPlayer.kt b/src/commonTest/kotlin/baaahs/shows/FakeShowPlayer.kt new file mode 100644 index 0000000000..b0d649a59e --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shows/FakeShowPlayer.kt @@ -0,0 +1,52 @@ +package baaahs.shows + +import baaahs.Gadget +import baaahs.ShowPlayer +import baaahs.getBang +import baaahs.gl.Toolchain +import baaahs.gl.data.Feed +import baaahs.gl.shader.OpenShader +import baaahs.gl.testToolchain +import baaahs.model.ModelInfo +import baaahs.show.DataSource +import baaahs.show.Shader + +class FakeShowPlayer( + override val modelInfo: ModelInfo = ModelInfo.Empty, + override val toolchain: Toolchain = testToolchain +) : ShowPlayer { + private val shaders = mutableMapOf() + private val feeds = mutableMapOf() + val gadgets: MutableMap = mutableMapOf() + override val dataSources: List get() = feeds.keys.toList() + private val dataSourceGadgets: MutableMap = mutableMapOf() + + override fun openFeed(id: String, dataSource: DataSource): Feed = + feeds.getOrPut(dataSource) { dataSource.createFeed(this, id) } + + override fun useFeed(dataSource: DataSource): Feed = + feeds.getBang(dataSource, "feed") + + override fun registerGadget(id: String, gadget: T, controlledDataSource: DataSource?) { + gadgets[id] = gadget + controlledDataSource?.let { dataSourceGadgets[controlledDataSource] = gadget } + } + + override fun releaseUnused() { + } + + override fun useGadget(id: String): T { + @Suppress("UNCHECKED_CAST") + return gadgets.getBang(id, "gadget") as T + } + + override fun useGadget(dataSource: DataSource): T? { + @Suppress("UNCHECKED_CAST") + return dataSourceGadgets[dataSource] as T? + } + + fun getGadget(name: String): T { + @Suppress("UNCHECKED_CAST") + return gadgets.getBang(name, "gadget") as T + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shows/ShowMigrationSpec.kt b/src/commonTest/kotlin/baaahs/shows/ShowMigrationSpec.kt new file mode 100644 index 0000000000..fb8d60a73d --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shows/ShowMigrationSpec.kt @@ -0,0 +1,92 @@ +package baaahs.shows + +import baaahs.describe +import baaahs.gl.override +import baaahs.gl.testPlugins +import baaahs.plugin.CorePlugin +import baaahs.show.Show +import baaahs.show.ShowMigrator +import baaahs.toBeSpecified +import baaahs.toEqual +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import kotlinx.serialization.json.* +import org.spekframework.spek2.Spek + +object ShowMigrationSpec : Spek({ + describe { + val json by value { Json { serializersModule = testPlugins().serialModule } } + val fromJson by value { toBeSpecified() } + val show by value { json.decodeFromJsonElement(ShowMigrator, fromJson) } + val newJson by value { json.encodeToJsonElement(Show.serializer(), show) } + + context("from v0") { + override(fromJson) { + buildJsonObject { + put("title", "Show") + put("dataSources", buildJsonObject { + put("modelInfo", buildJsonObject { + put("type", "baaahs.plugin.CorePlugin.ModelInfoDataSource") + put("structType", "ModelInfo") + }) + put("time", buildJsonObject { + put("type", "baaahs.plugin.CorePlugin.Time") + }) + }) + put("patches", buildJsonArray { + add(buildJsonObject { + put("shaderInstanceIds", buildJsonArray { }) + put("surfaces", buildJsonObject { + put("name", "All Surfaces") + }) + }) + }) + } + } + + it("ignores `structType` and maps from old class names") { + expect(show.dataSources["modelInfo"]).toBe(CorePlugin.ModelInfoDataSource()) + expect(show.dataSources["time"]).toBe(CorePlugin.TimeDataSource()) + } + + it("permits missing surfaces.deviceTypes") { + expect(show.patches[0].surfaces.deviceTypes).toBe(emptySet()) + } + } + + context("from v1") { + override(fromJson) { + buildJsonObject { + put("version", 1) + put("title", "Show") + put("shaders", buildJsonObject { + put("shader1", buildJsonObject { + put("title", "1"); put("type", "Anything"); put("src", "// nothing") + }) + }) + } + } + + it("drops Shader.type") { + expect( + newJson + .jsonObject["shaders"]!! + .jsonObject["shader1"]!! + .jsonObject + ).toEqual( + buildJsonObject { + put("title", JsonPrimitive("1")) + put("src", JsonPrimitive("// nothing")) + } + ) + } + } + + context("when writing") { + val toJson by value { json.encodeToJsonElement(ShowMigrator, Show("test")) } + it("includes version") { + expect(toJson.jsonObject["version"]?.jsonPrimitive?.intOrNull).toBe(2) + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shows/ShowRunnerSpec.kt b/src/commonTest/kotlin/baaahs/shows/ShowRunnerSpec.kt new file mode 100644 index 0000000000..d112e767bc --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shows/ShowRunnerSpec.kt @@ -0,0 +1,150 @@ +import baaahs.* +import baaahs.fixtures.FixtureManager +import baaahs.gadgets.ColorPicker +import baaahs.gl.GlContext.Companion.GL_RGB32F +import baaahs.gl.autoWire +import baaahs.gl.override +import baaahs.gl.render.RenderManager +import baaahs.gl.testPlugins +import baaahs.gl.testToolchain +import baaahs.glsl.Shaders +import baaahs.mapper.Storage +import baaahs.plugin.CorePlugin +import baaahs.shaders.fakeFixture +import baaahs.show.Shader +import baaahs.show.mutable.MutableShow +import baaahs.show.mutable.ShowBuilder +import baaahs.shows.FakeGlContext +import baaahs.sim.FakeFs +import baaahs.sim.FakeNetwork +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import com.danielgergely.kgl.* +import ext.TestCoroutineContext +import kotlinx.coroutines.InternalCoroutinesApi +import kotlinx.serialization.json.JsonPrimitive +import org.spekframework.spek2.Spek + +@InternalCoroutinesApi +@Suppress("unused") +object ShowRunnerSpec : Spek({ + describe { + val shaderSrc by value { + /**language=glsl*/ + "void main() { gl_FragColor = vec4(gl_FragCoord, 0., 1.); }" + } + + val fakeGlslContext by value { FakeGlContext() } + val model by value { TestModel } + val fixtures by value { listOf(fakeFixture(100)) } + val mutableShow by value { + MutableShow("test show") { + addPatch( + testToolchain.autoWire(Shaders.cylindricalProjection, Shaders.blue) + .acceptSuggestedLinkOptions() + .confirm() + ) + addButtonGroup( + "Panel", "Scenes" + ) { + addButton("test scene") { + addButtonGroup( + "Panel", "Backdrops" + ) { + addButton("test patchset") { + addPatch( + testToolchain.autoWire(Shader("Untitled", shaderSrc)) + .acceptSuggestedLinkOptions() + .confirm() + ) + } + } + } + } + } + } + val show by value { mutableShow.build(ShowBuilder()) } + val showState by value { + ShowState( + mapOf( + "testPatchsetButton" to mapOf("enabled" to JsonPrimitive(true)), + "testSceneButton" to mapOf("enabled" to JsonPrimitive(true)) + ) + ) + } + val testCoroutineContext by value { TestCoroutineContext("Test") } + val pubSub by value { PubSub.Server(FakeNetwork().link("test").startHttpServer(0), testCoroutineContext) } + val renderManager by value { RenderManager(TestModel) { fakeGlslContext } } + val fixtureManager by value { FixtureManager(renderManager) } + val stageManager by value { + val fs = FakeFs() + StageManager( + testToolchain, renderManager, pubSub, Storage(fs, testPlugins()), fixtureManager, + FakeClock(), model, testCoroutineContext) + } + + val fakeProgram by value { fakeGlslContext.programs.only("program") } + + val addControls by value { {} } + + beforeEachTest { + addControls() + stageManager.switchTo(show, showState) + fixtureManager.fixturesChanged(fixtures, emptyList()) + stageManager.renderAndSendNextFrame() + } + + context("port wiring") { + it("wires up UV texture stuff") { + val pixelCoordsTextureUnit = fakeProgram.getUniform("ds_pixelLocation_texture") as Int + val textureConfig = fakeGlslContext.getTextureConfig(pixelCoordsTextureUnit) + + expect(textureConfig.width to textureConfig.height).toBe(100 to 1) + expect(textureConfig.internalFormat).toBe(GL_RGB32F) + expect(textureConfig.format).toBe(GL_RGB) + expect(textureConfig.type).toBe(GL_FLOAT) + expect(textureConfig.params[GL_TEXTURE_MIN_FILTER]).toBe(GL_NEAREST) + expect(textureConfig.params[GL_TEXTURE_MAG_FILTER]).toBe(GL_NEAREST) + } + + context("for vec4 uniforms") { + override(shaderSrc) { + /**language=glsl*/ + """ + uniform vec4 color; // @@ColorPicker + void main() { gl_FragColor = color; } + """.trimIndent() + } + + override(addControls) { + { + val colorPickerDataSource = CorePlugin.ColorPickerDataSource("Color", Color.WHITE) + mutableShow.addControl("Panel", colorPickerDataSource.buildControl()) + } + } + + val colorPickerGadget by value { + stageManager.useGadget("colorColorPickerControl") + } + + it("wires it up as a color picker") { + expect(colorPickerGadget.title).toBe("Color") + expect(colorPickerGadget.initialValue).toBe(Color.WHITE) + } + + it("sets the uniform from the gadget's initial value") { + val colorUniform = fakeProgram.getUniform>("in_colorColorPicker") + expect(colorUniform).toBe(arrayListOf(1f, 1f, 1f, 1f)) + } + + it("sets the uniform when the gadget value changes") { + colorPickerGadget.color = Color.YELLOW + + stageManager.renderAndSendNextFrame() + val colorUniform = fakeProgram.getUniform>("in_colorColorPicker") + expect(colorUniform).toBe(arrayListOf(1f, 1f, 0f, 1f)) + } + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/shows/ShowSerializationSpec.kt b/src/commonTest/kotlin/baaahs/shows/ShowSerializationSpec.kt new file mode 100644 index 0000000000..3d4b7b5696 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/shows/ShowSerializationSpec.kt @@ -0,0 +1,229 @@ +package baaahs.shows + +import baaahs.Gadget +import baaahs.fixtures.PixelLocationDataSource +import baaahs.gadgets.ColorPicker +import baaahs.gadgets.Slider +import baaahs.gl.kexpect +import baaahs.plugin.CorePlugin +import baaahs.plugin.Plugins +import baaahs.plugin.beatlink.BeatLinkControl +import baaahs.plugin.beatlink.BeatLinkPlugin +import baaahs.show.* +import kotlinx.serialization.json.* +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +@Suppress("unused") +object ShowSerializationSpec : Spek({ + describe("Show serialization") { + val plugins by value { SampleData.plugins } + val jsonWithDefaults by value { Json(plugins.json) { encodeDefaults = true } } + val jsonPrettyPrint by value { Json(plugins.json) { prettyPrint = true } } + val origShow by value { SampleData.sampleShowWithBeatLink } + val showJson by value { origShow.toJson(jsonWithDefaults) } + + context("to json") { + it("serializes") { + plugins.expectJson(forJson(origShow)) { showJson } + } + } + + context("fromJson") { + it("deserializes equally") { + plugins.expectJson(forJson(origShow)) { + val jsonStr = jsonPrettyPrint.encodeToString( + JsonElement.serializer(), origShow.toJson(jsonWithDefaults)) + forJson(Show.fromJson(plugins, jsonStr)) + } + } + } + } +}) + +private fun JsonObjectBuilder.mapTo(k: String, v: JsonElement) = put(k, v) + +private fun JsonObjectBuilder.addPatchHolder(patchHolder: PatchHolder) { + put("patches", patchHolder.patches.jsonMap { jsonFor(it) }) + put("eventBindings", patchHolder.eventBindings.jsonMap { jsonFor(it) }) + put("controlLayout", patchHolder.controlLayout.jsonMap { it.jsonMap { JsonPrimitive(it) } }) +} + +private fun Map.jsonMap(block: JsonObjectBuilder.(V) -> JsonElement): JsonObject { + return buildJsonObject { entries.forEach { (k, v) -> put(k, block(v)) } } +} + +private fun List.jsonMap(block: (T) -> JsonElement): JsonArray { + return buildJsonArray { forEach { add(block(it)) } } +} + +private fun forJson(show: Show): JsonObject { + return buildJsonObject { + put("title", show.title) + addPatchHolder(show) + put("layouts", buildJsonObject { + put("panelNames", show.layouts.panelNames.jsonMap { JsonPrimitive(it) }) + put("map", show.layouts.map.jsonMap { + buildJsonObject { put("rootNode", it.rootNode) } + }) + }) + put("shaders", show.shaders.jsonMap { jsonFor(it) }) + put("shaderInstances", show.shaderInstances.jsonMap { jsonFor(it) }) + put("controls", show.controls.jsonMap { jsonFor(it) }) + put("dataSources", show.dataSources.jsonMap { jsonFor(it) }) + } +} + +private fun jsonFor(eventBinding: EventBinding) = buildJsonObject { } + +fun jsonFor(control: Control): JsonElement { + return when (control) { + is GadgetControl -> buildJsonObject { + put("type", "baaahs.Core:Gadget") + put("gadget", jsonFor(control.gadget)) + put("controlledDataSourceId", control.controlledDataSourceId) + } + is ButtonGroupControl -> buildJsonObject { + put("type", "baaahs.Core:ButtonGroup") + put("title", control.title) + put("direction", control.direction.name) + put("buttonIds", control.buttonIds.jsonMap { JsonPrimitive(it) }) + } + is ButtonControl -> buildJsonObject { + put("type", "baaahs.Core:Button") + put("title", control.title) + put("activationType", control.activationType.name) + addPatchHolder(control) + } + is BeatLinkControl -> buildJsonObject { + put("type", "baaahs.BeatLink:BeatLink") + } + else -> buildJsonObject { put("type", "unknown") } + } +} + +fun jsonFor(gadget: Gadget): JsonElement { + return when (gadget) { + is Slider -> buildJsonObject { + put("type", "baaahs.Core:Slider") + put("title", gadget.title) + put("initialValue", gadget.initialValue) + put("minValue", gadget.minValue) + put("maxValue", gadget.maxValue) + put("stepValue", gadget.stepValue) + } + is ColorPicker -> buildJsonObject { + put("type", "baaahs.Core:ColorPicker") + put("title", gadget.title) + put("initialValue", gadget.initialValue.toInt()) + } + else -> buildJsonObject { put("type", "unknown") } + } + +} + +fun jsonFor(dataSource: DataSource): JsonElement { + return when (dataSource) { + is CorePlugin.SliderDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:Slider") + put("title", dataSource.gadgetTitle) + put("initialValue", dataSource.initialValue) + put("minValue", dataSource.minValue) + put("maxValue", dataSource.maxValue) + put("stepValue", dataSource.stepValue) + } + } + is CorePlugin.ColorPickerDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:ColorPicker") + put("title", dataSource.gadgetTitle) + put("initialValue", dataSource.initialValue.toInt()) + } + } + is CorePlugin.ResolutionDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:Resolution") + } + } + is CorePlugin.TimeDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:Time") + } + } + is CorePlugin.PixelCoordsTextureDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:PixelCoordsTexture") + } + } + is PixelLocationDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:PixelLocation") + } + } + is CorePlugin.ModelInfoDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:ModelInfo") + } + } + is CorePlugin.RasterCoordinateDataSource -> { + buildJsonObject { + put("type", "baaahs.Core:RasterCoordinate") + } + } + is BeatLinkPlugin.BeatLinkDataSource -> buildJsonObject { + put("type", "baaahs.BeatLink:BeatLink") + } + else -> buildJsonObject { put("type", "unknown") } + } +} + +private fun jsonFor(patch: Patch): JsonObject { + return buildJsonObject { + put("shaderInstanceIds", patch.shaderInstanceIds.jsonMap { JsonPrimitive(it) }) + put("surfaces", buildJsonObject { + put("name", "All Surfaces") + put("deviceTypes", buildJsonArray { }) + }) + } +} + +private fun jsonFor(portRef: PortRef): JsonObject { + return when (portRef) { + is DataSourceRef -> buildJsonObject { + put("type", "datasource") + put("dataSourceId", portRef.dataSourceId) + } + is ShaderChannelRef -> buildJsonObject { + put("type", "shader-channel") + put("shaderChannel", portRef.shaderChannel.id) + } + is OutputPortRef -> buildJsonObject { + put("type", "output") + put("portId", portRef.portId) + } + else -> error("huh? $portRef") + } +} + +private fun jsonFor(shader: Shader) = buildJsonObject { + put("title", shader.title) + put("src", shader.src) +} + +private fun jsonFor(shaderInstance: ShaderInstance) = buildJsonObject { + put("shaderId", shaderInstance.shaderId) + put("incomingLinks", shaderInstance.incomingLinks.jsonMap { jsonFor(it) }) + put("shaderChannel", shaderInstance.shaderChannel.id) + put("priority", shaderInstance.priority) +} + +fun Plugins.expectJson(expected: JsonElement, block: () -> JsonElement) { + val serialModule = serialModule + val json = Json { + prettyPrint = true + serializersModule = serialModule + } + fun JsonElement.toStr() = json.encodeToString(JsonElement.serializer(), this) + kexpect(block().toStr()).toBe(expected.toStr()) +} diff --git a/src/commonTest/kotlin/baaahs/util/UndoStackSpec.kt b/src/commonTest/kotlin/baaahs/util/UndoStackSpec.kt new file mode 100644 index 0000000000..37a87cd809 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/util/UndoStackSpec.kt @@ -0,0 +1,105 @@ +package baaahs.util + +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +object UndoStackSpec : Spek({ + describe("UndoStack") { + val size by value { 3 } + val undoStack by value { UndoStack(size) } + val editor by value { FakeEditor("base", undoStack) } + + it("starts empty") { + expect(editor.undo()).toBe(false) + expect(editor.redo()).toBe(false) + } + + context("when a change is pushed") { + beforeEachTest { editor.change("first change") } + + it("can be undone") { + expect(editor.undo()).toBe(true) + expect(editor.contents).toBe("base") + expect(undoStack.canUndo()).toBe(false) + } + + it("redo isn't available") { + expect(editor.redo()).toBe(false) + } + + it("can be undone and redone") { + expect(editor.undo()).toBe(true) + expect(editor.redo()).toBe(true) + expect(editor.contents).toBe("first change") + expect(editor.redo()).toBe(false) + } + + context("multiple changes") { + beforeEachTest { + editor.change("second change") + editor.change("third change") + } + + it("can be undone and redone") { + expect(editor.contents).toBe("third change") + expect(editor.undo()).toBe(true) + expect(editor.undo()).toBe(true) + expect(editor.undo()).toBe(true) + expect(editor.contents).toBe("base") + expect(editor.undo()).toBe(false) + expect(editor.redo()).toBe(true) + expect(editor.redo()).toBe(true) + expect(editor.redo()).toBe(true) + expect(editor.contents).toBe("third change") + expect(editor.redo()).toBe(false) + } + + it("changes discard redo") { + expect(editor.undo()).toBe(true) + expect(editor.undo()).toBe(true) + expect(editor.contents).toBe("first change") + editor.change("another change") + expect(editor.redo()).toBe(false) + } + + context("when capacity is exceeded") { + beforeEachTest { editor.change("fourth change") } + + it("drops eldest history") { + expect(editor.undo()).toBe(true) + expect(editor.undo()).toBe(true) + expect(editor.undo()).toBe(true) + expect(editor.undo()).toBe(false) + expect(editor.contents).toBe("first change") + } + } + } + } + } +}) + +private class FakeEditor(initialContents: String, private val undoStack: UndoStack) { + var contents: String = initialContents + init { undoStack.reset(initialContents) } + + fun change(newContents: String) { + contents = newContents + undoStack.changed(newContents) + } + + fun undo(): Boolean { + return if (undoStack.canUndo()) { + contents = undoStack.undo() + true + } else false + } + + fun redo(): Boolean { + return if (undoStack.canRedo()) { + contents = undoStack.redo() + true + } else false + } +} diff --git a/src/commonTest/kotlin/baaahs/util/UtilSpec.kt b/src/commonTest/kotlin/baaahs/util/UtilSpec.kt new file mode 100644 index 0000000000..f465b2da9d --- /dev/null +++ b/src/commonTest/kotlin/baaahs/util/UtilSpec.kt @@ -0,0 +1,18 @@ +package baaahs.util + +import baaahs.camelize +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +object UtilSpec : Spek({ + describe("baaahs.util") { + describe("String.camelize") { + it("camelizes") { + expect("Some String".camelize()).toBe("someString") + expect("Some_ABC String!".camelize()).toBe("someAbcString") + } + } + } +}) \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/visualizer/movers/StateSpec.kt b/src/commonTest/kotlin/baaahs/visualizer/movers/StateSpec.kt new file mode 100644 index 0000000000..1a75cff699 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/visualizer/movers/StateSpec.kt @@ -0,0 +1,53 @@ +package baaahs.visualizer.movers + +import baaahs.TestMovingHead +import baaahs.describe +import baaahs.toEqual +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek +import kotlin.math.absoluteValue + +object StateSpec : Spek({ + describe { + val startingState by value { State() } + val destinationState by value { State(.75f, .75f, .25f, 1f) } + val movingHead by value { + TestMovingHead( + panMotorSpeed = 2f, + tiltMotorSpeed = 1f, + colorWheelMotorSpeed = 1f + ) + } + + context("#moveToward") { + val elapsedTime by value { .25f } + val interpolatedState by value { + startingState.moveToward(destinationState, destinationState, movingHead, elapsedTime) + } + + it("should move as far as motors can move in the elapsed time") { + interpolatedState.shouldRoughlyEqual( + State( + pan = .125f, + tilt = .25f, + colorWheelPosition = .25f, + dimmer = 1f + ) + ) + } + } + } +}) + +fun State.shouldRoughlyEqual(otherState: State, difference: Float = .0001f) { + if ( + (pan - otherState.pan).absoluteValue < difference && + (tilt - otherState.tilt).absoluteValue < difference && + (colorWheelPosition - otherState.colorWheelPosition).absoluteValue < difference && + (dimmer - otherState.dimmer).absoluteValue < difference + ) { + // cool! + } else { + expect(this).toEqual(otherState) + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/baaahs/visualizer/movers/VizMovingHeadSpec.kt b/src/commonTest/kotlin/baaahs/visualizer/movers/VizMovingHeadSpec.kt new file mode 100644 index 0000000000..4062cce946 --- /dev/null +++ b/src/commonTest/kotlin/baaahs/visualizer/movers/VizMovingHeadSpec.kt @@ -0,0 +1,106 @@ +package baaahs.visualizer.movers + +import baaahs.FakeClock +import baaahs.TestMovingHead +import baaahs.describe +import baaahs.sim.FakeDmxUniverse +import baaahs.visualizer.VizScene +import org.spekframework.spek2.Spek + +object VizMovingHeadSpec: Spek({ + describe { + val movingHead by value { + TestMovingHead( + panMotorSpeed = 2f, + tiltMotorSpeed = 1f, + colorWheelMotorSpeed = 1f + ) + } + val dmxUniverse by value { FakeDmxUniverse() } + val fakeClock by value { FakeClock() } + val beam by value { BeamForTest() } + val vizMovingHead by value { VizMovingHead(movingHead, dmxUniverse, fakeClock, beam) } + + val sendDmxFrame by value { + { elapsedTime, pan, tilt, colorWheelPosition, dimmer -> + fakeClock.time += elapsedTime + + val buffer = movingHead.newBuffer(dmxUniverse) + buffer.pan = pan + buffer.tilt = tilt + buffer.colorWheelPosition = colorWheelPosition + buffer.dimmer = dimmer + dmxUniverse.sendFrame() + } + } + + beforeEachTest { vizMovingHead.run {} } + + context("when a frame requests motor movement") { + beforeEachTest { + sendDmxFrame(1/16f, 1/4f, 0f, 0f, 1f) + } + + it("doesn't move immediately") { + beam.currentState.shouldRoughlyEqual( + State(0f, 0f, 0f, 1f) + ) + } + + context("on the next frame") { + beforeEachTest { + sendDmxFrame(1/16f, 1/4f, 0f, 0f, 1f) + } + + it("moves as far as it could have moved in the time between frames") { + beam.currentState.shouldRoughlyEqual( + State(1/32f, 0f, 0f, 1f) + ) + } + } + + context("then moving back") { + beforeEachTest { + sendDmxFrame(1/16f, 0f, 0f, 0f, 1f) + } + + it("moves as far as it could have moved in the time between frames") { + beam.currentState.shouldRoughlyEqual( + State(1/32f, 0f, 0f, 1f) + ) + } + + context("after another frame") { + beforeEachTest { + sendDmxFrame(1/16f, 0f, 0f, 0f, 1f) + } + + it("moves as far as it could have moved in the time between frames") { + beam.currentState.shouldRoughlyEqual( + State(0f, 0f, 0f, 1f) + ) + } + } + } + } + } +}) + +typealias UpdateMoverState = ( + elapsedTime: Float, + pan: Float, + tilt: Float, + colorWheelPosition: Float, + dimmer: Float +) -> Unit + +class BeamForTest : Beam { + var currentState = State() + + override fun addTo(scene: VizScene) { + } + + override fun update(state: State) { + currentState = state + } +} \ No newline at end of file diff --git a/src/commonTest/kotlin/ext/TestCoroutineContext.kt b/src/commonTest/kotlin/ext/TestCoroutineContext.kt new file mode 100644 index 0000000000..8556a7147d --- /dev/null +++ b/src/commonTest/kotlin/ext/TestCoroutineContext.kt @@ -0,0 +1,250 @@ +package ext + +//@file:Suppress("PackageDirectoryMismatch") + +import baaahs.util.Logger +import kotlinx.coroutines.* +import kotlin.coroutines.CoroutineContext + +private const val MAX_DELAY = Long.MAX_VALUE / 2 // cannot delay for too long on Android + +@InternalCoroutinesApi +@Suppress("unused") +class TestCoroutineContext constructor(private val name: String?) : CoroutineContext { + private val handler = TestHandler() + private val context: CoroutineContext + private val caughtExceptions = mutableListOf() + + /** + * Exceptions that were caught during a [launch] or a [async] + [Deferred.await]. + */ + val exceptions: List get() = caughtExceptions + + init { + context = Dispatcher() + CoroutineExceptionHandler(this::handleException) + } + + override fun fold(initial: R, operation: (R, CoroutineContext.Element) -> R): R = + context.fold(initial, operation) + + override fun get(key: CoroutineContext.Key): E? = context[key] + + override fun minusKey(key: CoroutineContext.Key<*>) = context.minusKey(key) + + /** + * @return The current virtual clock-time as it is known to this CoroutineContext + */ + fun now(unit: TimeUnit = Millisecond()) = handler.now(unit) + + /** + * Moves the CoroutineContext's virtual clock forward by a specified amount of time. + * + * @param delayTime + * the amount of time to move the CoroutineContext's clock forward + * @param unit + * the units of time that [delayTime] is expressed in + */ + fun advanceTimeBy(delayTime: Long, unit: TimeUnit = Millisecond()) { + handler.advanceTimeBy(delayTime, unit) + } + + /** + * Moves the CoroutineContext's clock-time to a particular moment in time. + * + * @param delayTime + * the point in time to move the CoroutineContext's clock to + * @param unit + * the units of time that [delayTime] is expressed in + */ + fun advanceTimeTo(delayTime: Long, unit: TimeUnit = Millisecond()) { + handler.advanceTimeTo(delayTime, unit) + } + + /** + * Triggers any actions that have not yet been triggered and that are scheduled to be triggered at or + * before this CoroutineContext's present virtual time. + */ + fun triggerActions() { + handler.triggerActions() + } + + /** + * Cancels all not yet triggered actions. Be careful calling this, since it can seriously + * mess with your coroutines work. This method should usually be called on tear-down of a + * unit test. + */ + fun cancelAllActions() { + handler.cancelAllActions() + } + + fun processOneEvent() = handler.processOneEvent() + fun runAll() = handler.runAll() + + override fun toString() = name ?: handler.toString() + override fun equals(other: Any?) = other is TestCoroutineContext && other.handler === handler + override fun hashCode() = handler.hashCode() + + private fun handleException(@Suppress("UNUSED_PARAMETER") context: CoroutineContext, exception: Throwable) { + logger.error(exception) { "Exception in coroutine" } + caughtExceptions += exception + } + + @InternalCoroutinesApi + private inner class Dispatcher : CoroutineDispatcher(), Delay { + override fun dispatch(context: CoroutineContext, block: Runnable) { + handler.post(block) + } + + override fun scheduleResumeAfterDelay(timeMillis: Long, continuation: CancellableContinuation) { + handler.postDelayed(Runnable { + with(continuation) { resumeUndispatched(Unit) } + }, timeMillis.coerceAtMost(MAX_DELAY)) + } + + override fun invokeOnTimeout(timeMillis: Long, block: Runnable, context: CoroutineContext): DisposableHandle { + handler.postDelayed(block, timeMillis.coerceAtMost(MAX_DELAY)) + return object : DisposableHandle { + override fun dispose() { + handler.removeCallbacks(block) + } + } + } + +// override fun processNextEvent() = handler.processNextEvent() + } + + companion object { + private val logger = Logger() + } +} + +private class TestHandler { + /** The ordered queue for the runnable tasks. */ + private val queue = PriorityBlockingQueue() + /** The per-scheduler global order counter. */ + /*@Volatile*/ private var counter = 0L + // Storing time in nanoseconds internally. + /*@Volatile*/ private var time = 0L + private val nanosecond = Nanosecond() + + private val nextEventTime get() = if (queue.isEmpty()) Long.MAX_VALUE else 0L + + internal fun post(block: Runnable) { + val run = TimedRunnable(block, counter++) + queue.add(run) + } + + internal fun postDelayed(block: Runnable, delayTime: Long) { + val run = TimedRunnable(block, counter++, time + delayTime.milliseconds.longValue * 1_000_000L) + queue.add(run) + } + + internal fun removeCallbacks(block: Runnable) { + queue.remove(TimedRunnable(block)) + } + + internal fun now(unit: TimeUnit) = time.nanoseconds.convertedTo(unit) + + internal fun advanceTimeBy(delayTime: Long, unit: TimeUnit): Long { + val oldTime = time + advanceTimeTo(time + unit.convert(delayTime, nanosecond), nanosecond) + return unit.convert(time - oldTime, nanosecond) + } + + internal fun advanceTimeTo(delayTime: Long, unit: TimeUnit) { + val targetTime = unit.convert(delayTime, nanosecond) + triggerActions(targetTime) + + if (targetTime > time) { + time = targetTime + } + } + + internal fun triggerActions() { + triggerActions(time) + } + + internal fun cancelAllActions() { + queue.clear() + } + + internal fun processNextEvent(): Long { + val current = queue.peek() + if (current != null) { + /** Automatically advance time for [EventLoop]-callbacks */ + triggerActions(current.time) + } + + return nextEventTime + } + + fun processOneEvent() { + val current = queue.peek() + if (current != null) { + queue.remove(current) + current.run() + } + } + + private fun triggerActions(targetTime: Long) { + while (true) { + val current = queue.peek() + if (current == null || current.time > targetTime) { + break + } + // If the scheduled time is 0 (immediate) use current virtual time + time = if (current.time == 0L) time else current.time + + queue.remove(current) + current.run() + } + } + + fun runAll() { + while (!queue.isEmpty()) { + advanceTimeTo(queue.peek()!!.time, nanosecond) + } + } +} + +class PriorityBlockingQueue> { + val items: MutableList = mutableListOf() + + fun add(t: T) { + items.add(t) + sort() + } + + fun peek() = if (items.isEmpty()) null else items[0] + + fun remove(t: T) = items.remove(t) + + fun clear() = items.clear() + + fun isEmpty() = items.isEmpty() + + private fun sort() { + items.sortWith(Comparator { a, b -> a!!.compareTo(b!!) }) + } +} + +private class TimedRunnable( + private val run: Runnable, + private val count: Long = 0, + internal val time: Long = 0 // nanos +) : Comparable, Runnable { + override fun run() { + run.run() + } + + override fun compareTo(other: TimedRunnable) = if (time == other.time) { + count.compareTo(other.count) + } else { + time.compareTo(other.time) + } + + override fun hashCode() = run.hashCode() + override fun equals(other: Any?) = other is TimedRunnable && (run == other.run) + + override fun toString() = "TimedRunnable(time = $time, run = $run)" +} \ No newline at end of file diff --git a/src/commonTest/kotlin/ext/Time.kt b/src/commonTest/kotlin/ext/Time.kt new file mode 100644 index 0000000000..8179e9872f --- /dev/null +++ b/src/commonTest/kotlin/ext/Time.kt @@ -0,0 +1,129 @@ +package ext + +import kotlin.math.round +import kotlin.math.roundToLong + +interface TimeUnit { + val timeIntervalRatio: Double + fun conversionRate(otherTimeUnit: OtherUnit): Double { + return timeIntervalRatio / otherTimeUnit.timeIntervalRatio + } + + fun convert(l: Long, unit: TimeUnit): Long = (l * conversionRate(unit)).roundToLong() +} + + +class Interval(value: Number, factory: () -> T) { + + val unit: T = factory() + + val value = value.toDouble() + + val longValue = round(this.value).toLong() + + val inDays: Interval get() = convertedTo(Day()) + val inHours: Interval get() = convertedTo(Hour()) + val inMinutes: Interval get() = convertedTo(Minute()) + val inSeconds: Interval get() = convertedTo(Second()) + val inMilliseconds: Interval get() = convertedTo(Millisecond()) + val inMicroseconds: Interval get() = convertedTo(Microsecond()) + val inNanoseconds: Interval get() = convertedTo(Nanosecond()) + + fun convertedTo(timeUnit: T): Interval { + return Interval(value * unit.conversionRate(timeUnit)) { throw RuntimeException() } + } + + operator fun plus(other: Interval): Interval { + val newValue = value + other.value * other.unit.conversionRate(unit) + return Interval(newValue) { unit } + } + + operator fun minus(other: Interval): Interval { + val newValue = value - other.value * other.unit.conversionRate(unit) + return Interval(newValue) { unit } + } + + operator fun times(other: Number): Interval { + return Interval(value * other.toDouble()) { unit } + } + + operator fun div(other: Number): Interval { + return Interval(value / other.toDouble()) { unit } + } + + operator fun inc() = Interval(value + 1) { unit } + + operator fun dec() = Interval(value - 1) { unit } + + operator fun compareTo(other: Interval) = inMilliseconds.value.compareTo(other.inMilliseconds.value) + + operator fun contains(other: Interval) = inMilliseconds.value >= other.inMilliseconds.value + + override fun equals(other: Any?): Boolean { + if (other == null || other !is Interval) return false + return compareTo(other) == 0 + } + + override fun hashCode() = inMilliseconds.value.hashCode() + + override fun toString(): String { + val unitString = unit::class.simpleName?.toLowerCase() + val isWhole = value % 1 == 0.0 + return (if (isWhole) longValue.toString() else value.toString()) + .plus(" ") + .plus(if (value == 1.0) unitString else unitString.plus("s")) + } +} + + +class Day : TimeUnit { + override val timeIntervalRatio = 86400.0 +} + +class Hour : TimeUnit { + override val timeIntervalRatio = 3600.0 +} + +class Minute : TimeUnit { + override val timeIntervalRatio = 60.0 +} + +class Second : TimeUnit { + override val timeIntervalRatio = 1.0 +} + +class Millisecond : TimeUnit { + override val timeIntervalRatio = 0.001 +} + +class Microsecond : TimeUnit { + override val timeIntervalRatio = 0.000001 +} + +class Nanosecond : TimeUnit { + override val timeIntervalRatio = 1e-9 +} + + +val Number.days: Interval + get() = Interval(this) { Day() } + +val Number.hours: Interval + get() = Interval(this) { Hour() } + +val Number.minutes: Interval + get() = Interval(this) { Minute() } + +val Number.seconds: Interval + get() = Interval(this) { Second() } + +val Number.milliseconds: Interval + get() = Interval(this) { Millisecond() } + +val Number.microseconds: Interval + get() = Interval(this) { Microsecond() } + +val Number.nanoseconds: Interval + get() = Interval(this) { Nanosecond() } + + diff --git a/src/commonTest/kotlin/mockk.kt b/src/commonTest/kotlin/mockk.kt new file mode 100644 index 0000000000..2adcea6cf3 --- /dev/null +++ b/src/commonTest/kotlin/mockk.kt @@ -0,0 +1,9 @@ +import kotlin.reflect.KClass + +expect inline fun mockk( + name: String? = null, + relaxed: Boolean = false, + vararg moreInterfaces: KClass<*>, + relaxUnitFun: Boolean = false, + crossinline block: T.() -> Unit = {} +): T diff --git a/src/commonTest/kotlin/sample/SampleTests.kt b/src/commonTest/kotlin/sample/SampleTests.kt deleted file mode 100644 index 9ab366879f..0000000000 --- a/src/commonTest/kotlin/sample/SampleTests.kt +++ /dev/null @@ -1,11 +0,0 @@ -package sample - -import kotlin.test.Test -import kotlin.test.assertTrue - -class SampleTests { - @Test - fun testMe() { - assertTrue(Sample().checkMe() > 0) - } -} \ No newline at end of file diff --git a/src/jsMain/js/FakeClientDevice.jsx b/src/jsMain/js/FakeClientDevice.jsx new file mode 100644 index 0000000000..189956034c --- /dev/null +++ b/src/jsMain/js/FakeClientDevice.jsx @@ -0,0 +1,125 @@ +import React, {Component} from 'react'; +import Draggable from 'react-draggable'; +import classNames from 'classnames'; +import styles from './FakeClientDevice.scss'; +import PropTypes from 'prop-types'; + +const BORDER_WIDTH = 10; + +export default class FakeClientDevice extends Component { + constructor(props) { + super(props); + + this.state = { isOpen: true }; + + this.clientDeviceContentRef = React.createRef(); + } + + get width() { + return this.props.width / 2; + } + + get height() { + return this.props.height / 2; + } + + get containerStyle() { + return { + width: `${this.width + BORDER_WIDTH * 2}px`, + height: `${this.height + BORDER_WIDTH * 2}px`, + }; + } + + get contentStyle() { + return { + width: `100%`, + height: `100%`, + }; + } + + onZoomOut = () => { + console.log('TODO: Implement onZoomOut'); + }; + + onZoomIn = () => { + console.log('TODO: Implement onZoomin'); + }; + + onDragStart = (e, draggableData) => { + const draggableNode = draggableData.node; + const contentNode = this.clientDeviceContentRef.current; + let eventNode = e.target; + + while (eventNode != null) { + if (eventNode === contentNode) { + return false; + } else if (eventNode === draggableNode) { + return true; + } else { + eventNode = eventNode.parentNode; + } + } + }; + + onClose = () => { + this.setState({ isOpen: false }); + this.props.hostedWebApp.onClose(); + }; + + render() { + if (!this.state.isOpen) { + return (
); + } + + return ( + { + return this.onDragStart(e, data); + }} + > +
+
+ + + +
+
+
+ {this.props.hostedWebApp.render()} +
+
+ + ); + } +} + +FakeClientDevice.propTypes = { + width: PropTypes.number.isRequired, + height: PropTypes.number.isRequired, + hostedWebApp: PropTypes.object.isRequired, + onClose: PropTypes.func.isRequired, +}; diff --git a/src/jsMain/js/FakeClientDevice.scss b/src/jsMain/js/FakeClientDevice.scss new file mode 100644 index 0000000000..57385921b3 --- /dev/null +++ b/src/jsMain/js/FakeClientDevice.scss @@ -0,0 +1,60 @@ +.FakeClientDevice--pad { + z-index: 1000; + position: absolute; + border: 1px solid #404040; + border-radius: 8px; + background-image: linear-gradient(to bottom right, #eee, #fff); + cursor: grab; + padding: 28px 40px 28px 28px; + color: white; + right: 5px; + bottom: 5px; + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.15); + + .FakeClientDevice-home-button { + position: absolute; + width: 18px; + height: 18px; + right: 6px; + top: 50%; + border: 1px solid black; + border-radius: 50%; + background-image: radial-gradient(#fff, #ddd); + } + + .FakeClientDevice-controls { + position: absolute; + font-size: 14px; + top: 0; + padding: 4px; + right: 0; + color: #222; + z-index: 1; + } + + .FakeClientDevice--content { + overflow: hidden; + cursor: default; + position: relative; + width: auto; + height: auto; + padding: 2px; + border: 2px solid #373737; + background-color: #4F4F4F; + + nav { + margin-bottom: 8px; + } + } +} + +.iconButton { + color: #222222; + padding: 4px; + margin-left: 8px; + cursor: pointer; + + &:hover { + color: #e3e3e3; + } +} diff --git a/src/jsMain/js/app/components/ColorWheel/ColorWheel.scss b/src/jsMain/js/app/components/ColorWheel/ColorWheel.scss new file mode 100644 index 0000000000..b3e18628fc --- /dev/null +++ b/src/jsMain/js/app/components/ColorWheel/ColorWheel.scss @@ -0,0 +1,83 @@ +.root { + border-radius: 0.5em; + color: black; + display: inline-block; + position: relative; + min-height: 200px; + min-width: 200px; +} + +.canvasWrapper { + position: relative; +} + +.canvas { + top: 0; + left: 0; + width: 100%; + position: absolute; +} + +.draggablePicker { + z-index: 0; + top: -10px; + left: -10px; + position: absolute; + + &.dragging { + z-index: 10; + } +} + +.picker { + top: 0; + left: 0; + cursor: grab; + width: 20px; + height: 20px; + background: white; + border-radius: 100%; + border: 2px solid white; + transition: border-color 0.1s, color 0s; + + &:hover { + box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15); + } + + &.selected { + border: 2px solid black; + } + + &.grabbing { + cursor: grabbing; + } +} + + +.harmonyModes { + display: flex; + flex: 1 1 auto; + margin-top: 1em; + justify-content: space-between; +} + +.harmonyMode { + text-transform: uppercase; + font-size: 12px; + color: white; + background: rgba(32, 32, 32, 0.91); + border: none; + display: flex; + flex: 1 1 auto; + cursor: pointer; + padding: 8px; + outline: 0; + + &.active { + background: #4BBDC2; + } + + & + & { + border-left: 1px solid rgba(13, 13, 13, 0.91); + } +} diff --git a/src/jsMain/js/app/components/ColorWheel/index.jsx b/src/jsMain/js/app/components/ColorWheel/index.jsx new file mode 100644 index 0000000000..d78a39eedd --- /dev/null +++ b/src/jsMain/js/app/components/ColorWheel/index.jsx @@ -0,0 +1,258 @@ +import React, {Component} from 'react'; +import PropTypes from 'prop-types'; +import styles from './ColorWheel.scss'; +import classNames from 'classnames'; +import chroma from 'chroma-js'; +import throttle from 'lodash/throttle'; +import Draggable from 'react-draggable'; +import {rgb2xy, xy2polar, xy2rgb} from '../../../utils/colorUtils'; +import {disableScroll, enableScroll} from '../utils'; + +import {baaahs} from 'sparklemotion'; + +const pickerRadius = 12; + +const HARMONY_MODES = { + custom: 'custom', + triad: 'triad', + analogous: 'analogous', +}; + +function fromColorToRgbArray(color) { + return [color.redI, color.greenI, color.blueI]; +} + +function fromRgbArrayToColor(rgbArray) { + return baaahs.Color.Companion.fromInts(...rgbArray); +} + +class ColorWheel extends Component { + constructor(props) { + super(props); + + this.state = { + colors: props.colors.map(fromColorToRgbArray), + radius: 10, + selectedIndex: -1, + grabbingIndex: -1, + clientWidth: 20, + harmonyMode: HARMONY_MODES.custom, + }; + + // Send color updates once every 150ms while the picker is dragged + this._throttledHandleColorChange = throttle(this._handleColorChange, 150); + } + + updateWheel() { + const { radius } = this.state; + if (!this._canvasEl || !radius) return; + + const width = radius * 2; + const height = radius * 2; + const featheringPx = 1; + + let ctx = this._canvasEl.getContext('2d'); + let image = ctx.createImageData(width, height); + let data = image.data; + + for (let x = -radius; x < radius; x++) { + for (let y = -radius; y < radius; y++) { + let [r] = xy2polar(x, y); + // Figure out the starting index of this pixel in the image data array. + let rowLength = 2 * radius; + let adjustedX = x + radius; // convert x from [-radius, radius] to [0, radius*2] (the coordinates of the image data array) + let adjustedY = y + radius; // convert y from [-radius, radius] to [0, radius*2] (the coordinates of the image data array) + let pixelWidth = 4; // each pixel requires 4 slots in the data array + let index = (adjustedX + adjustedY * rowLength) * pixelWidth; + + let [red, green, blue] = xy2rgb(x, y, radius); + let alpha = 255; + if (r >= radius - featheringPx) { + alpha = Math.max( + 255 - 255 * ((r - (radius - featheringPx)) / featheringPx), + 0 + ); + } + + data[index] = red; + data[index + 1] = green; + data[index + 2] = blue; + data[index + 3] = alpha; + } + } + + ctx.putImageData(image, 0, 0); + } + + _handleColorChange = () => { + this.props.onChange(this.state.colors.map(fromRgbArrayToColor)); + }; + + _onPickerDragged(ev, data, index) { + const { x, y } = data; + const updatedColors = this._getUpdatedColors(x, y, index); + this.setState( + { selectedIndex: index, grabbingIndex: index, colors: updatedColors }, + () => this._throttledHandleColorChange() + ); + } + + _onPickerMouseUp(ev, data, index) { + const { x, y } = data; + const updatedColors = this._getUpdatedColors(x, y, index); + this.setState( + { + colors: updatedColors, + grabbingIndex: -1, + }, + () => this._handleColorChange() + ); + } + + _getUpdatedColors(x, y, index) { + const { radius, colors, harmonyMode } = this.state; + const color = xy2rgb(x - radius, y - radius, radius); + + const updatedColors = colors.slice(); + updatedColors[index] = color; + + if (harmonyMode === HARMONY_MODES.triad) { + for (let i = 1; i < colors.length; i++) { + const nextIndex = (index + i) % colors.length; + const [currentHue, s, v] = chroma.rgb(colors[index]).hsv(); + const nextHue = currentHue + (((360 / colors.length) * i) % 360); + const nextColor = chroma.hsv(nextHue, s, v).rgb(); + updatedColors[nextIndex] = nextColor; + } + } else if (harmonyMode === HARMONY_MODES.analogous) { + const analogousHueSpread = 90; + const spreadStep = analogousHueSpread / colors.length; + for (let i = 1; i < colors.length; i++) { + const nextIndex = (index + i) % colors.length; + const [currentHue, s, v] = chroma.rgb(colors[index]).hsv(); + let indexOffset = i + Math.floor(colors.length / 2); + if (i >= colors.length / 2) indexOffset += 1; + const nextHue = + (currentHue - analogousHueSpread + spreadStep * indexOffset) % 360; + const nextColor = chroma.hsv(nextHue, s, v).rgb(); + updatedColors[nextIndex] = nextColor; + } + } + + return updatedColors; + } + + _renderPicker(picker, index) { + const { radius, selectedIndex, grabbingIndex } = this.state; + const { color } = picker; + const [r, g, b] = color; + const position = rgb2xy(color, radius); + return ( + { + return this._onPickerDragged(e, data, index); + }} + onStart={disableScroll} + onStop={(e, data) => { + enableScroll(); + return this._onPickerMouseUp(e, data, index); + }} + bounds={{ top: 0, left: 0, right: radius * 2, bottom: radius * 2 }} + > +
+
{ + this.setState({ + selectedIndex: index, + grabbingIndex: index, + }); + }} + /> +
+ + ); + } + + _renderPalettePicker() { + return ( +
+ {Object.keys(HARMONY_MODES).map((harmonyMode) => ( + + ))} +
+ ); + } + + render() { + const { radius, colors } = this.state; + const { isPalette } = this.props; + + return ( +
{ + if (!el) return; + + const { clientWidth } = el; + const newRadius = clientWidth / 2; + if (radius != newRadius) { + this.setState({ radius: newRadius }, () => this.updateWheel()); + } + }} + className={styles.root} + > +
+ (this._canvasEl = el)} + onMouseDown={() => { + this.setState({ + selectedIndex: -1, + }); + }} + /> +
+ {radius != null && + colors.map((color, i) => this._renderPicker({ color }, i))} + {isPalette && this._renderPalettePicker()} +
+ ); + } +} + +ColorWheel.propTypes = { + colors: PropTypes.arrayOf(PropTypes.any/*instanceOf(baaahs.Color)*/).isRequired, + onChange: PropTypes.func.isRequired, + isPalette: PropTypes.bool, +}; + +ColorWheel.defaultProps = { + isPalette: false, +}; + +export default ColorWheel; diff --git a/src/jsMain/js/app/components/EyeControls/index.jsx b/src/jsMain/js/app/components/EyeControls/index.jsx new file mode 100644 index 0000000000..cb938c9b1d --- /dev/null +++ b/src/jsMain/js/app/components/EyeControls/index.jsx @@ -0,0 +1,67 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +class EyeControls extends React.Component { + constructor(props) { + super(props); + + this.state = { + x: 0, + y: 0, + color: 'white', + }; + } + + handlePanTiltChange = (event, axis) => { + console.log( + `setting side: ${this.props.side} | ${axis}: ${event.target.value}` + ); + console.log( + 'Maybe make server call here to send updated eye value to Pinky?' + ); + this.setState({ [axis]: event.target.value }); + }; + + render() { + return ( +
+
+ + { + this.handlePanTiltChange(event, 'x'); + }} + /> + {this.state.x} +
+
+ + { + this.handlePanTiltChange(event, 'y'); + }} + /> + {this.state.y} +
+
Eye Color: {this.state.color}
+
+ ); + } +} + +EyeControls.propTypes = { + side: PropTypes.oneOf(['party', 'business']).isRequired, + pubSub: PropTypes.shape().isRequired, +}; + +export default EyeControls; diff --git a/src/jsMain/js/app/components/Eyes/Eyes.scss b/src/jsMain/js/app/components/Eyes/Eyes.scss new file mode 100644 index 0000000000..8ed1ca85c4 --- /dev/null +++ b/src/jsMain/js/app/components/Eyes/Eyes.scss @@ -0,0 +1,9 @@ +.grid-slider { + margin-top: 20px; + margin-left: 10px; +} + +.moving-heads__wrapper { + display: inline-block; + padding: 20px; +} diff --git a/src/jsMain/js/app/components/Eyes/index.jsx b/src/jsMain/js/app/components/Eyes/index.jsx new file mode 100644 index 0000000000..74f4bfbc45 --- /dev/null +++ b/src/jsMain/js/app/components/Eyes/index.jsx @@ -0,0 +1,222 @@ +import React, {Fragment} from 'react'; +import PropTypes from 'prop-types'; +import GridSlider from '../GridSlider'; +import Modal from '../Modal'; + +import s from './Eyes.scss'; + +import {baaahs} from 'sparklemotion'; + +class Eyes extends React.Component { + constructor(props) { + super(props); + + this.state = { + movingHeads: [], + selected: [], + gridSliderPosition: [127, 127], + presets: {}, + showModal: '', + }; + } + + componentDidMount() { + this.movingHeadDisplay = new baaahs.MovingHeadDisplay( + this.props.pubSub, + (movingHeads) => { + this.setState({ movingHeads, selected: [movingHeads[0]] }); + } + ); + + this.movingHeadDisplay.addPresetsListener(this.presetListenerFn); + } + + componentWillUnmount() { + if (this.movingHeadDisplay) { + this.movingHeadDisplay.removePresetsListener(this.presetListenerFn); + } + } + + presetListenerFn = (presetsJson) => { + const presets = JSON.parse(presetsJson); + + this.setState({ presets: presets }); + } + + handlePanTiltChange = ({ x, y }) => { + this.setState({ gridSliderPosition: [x, y] }); + this.state.selected.forEach((movingHead) => { + movingHead.position = new baaahs.MovingHead.MovingHeadPosition(x, y); + }); + }; + + handleSelectMovingHead = (e) => { + const { selected } = this.state; + const toggledHead = this.state.movingHeads.find( + (head) => head.name === e.target.value + ); + if (e.target.checked) { + this.setState({ selected: [...selected, toggledHead] }); + } else { + this.setState({ + selected: [ + ...this.state.selected.filter((head) => head !== toggledHead), + ], + }); + } + }; + + handlePresetSelect = (presetName) => { + switch (this.state.showModal) { + case 'load': + this.loadPreset(presetName); + break; + case 'save': + this.savePreset(presetName); + break; + } + this.setState({ showModal: false }); + }; + + loadPreset = (presetName) => { + const { x, y } = this.state.presets[presetName]; + this.handlePanTiltChange({ x, y }); + }; + + savePreset = (presetName) => { + const [x, y] = this.state.gridSliderPosition; + + this.movingHeadDisplay.savePreset( + presetName, + new baaahs.MovingHead.MovingHeadPosition(x, y) + ); + }; + + renderRadioButtons = () => { + const { movingHeads, selected } = this.state; + return ( +
+ {movingHeads.map((movingHead) => { + const { name } = movingHead; + return ( + + + -1} + onChange={this.handleSelectMovingHead} + /> + + ); + })} +
+ ); + }; + + renderEyeControls = () => { + const { + gridSliderPosition: [x, y], + } = this.state; + + return ( + + { + this.handlePanTiltChange(data); + }} + x={x} + y={y} + minValue={0} + maxValue={255} + height={500} + width={500} + /> + + ); + }; + + renderLoadModal = () => { + return ( + + {Object.keys(this.state.presets).map((presetName) => { + return ( + + ); + })} + + ); + }; + + render() { + return ( + +
+
+ {this.renderRadioButtons()} + {this.renderEyeControls()} +
+
+ + +
+
+ + { + this.setState({ showModal: false }); + }} + > + {Object.keys(this.state.presets).map((presetName) => { + return ( + + ); + })} + {this.state.showModal === 'save' && ( + { + this.savePreset(e.target.value); + }} + onKeyPress={(e) => { + if (e.key === 'Enter') { + this.savePreset(e.target.value); + e.preventDefault(); + } + }} + /> + )} + +
+ ); + } +} + +Eyes.propTypes = { + pubSub: PropTypes.instanceOf(Object).isRequired, +}; + +export default Eyes; diff --git a/src/jsMain/js/app/components/GridSlider/GridSlider.scss b/src/jsMain/js/app/components/GridSlider/GridSlider.scss new file mode 100644 index 0000000000..2c76a807f8 --- /dev/null +++ b/src/jsMain/js/app/components/GridSlider/GridSlider.scss @@ -0,0 +1,10 @@ +.grid-slider__wrapper { + border: 2px solid black; + display: flex; +} + +.grid-slider__slider { + border-radius: 100%; + border: 2px solid white; + cursor: pointer; +} diff --git a/src/jsMain/js/app/components/GridSlider/index.jsx b/src/jsMain/js/app/components/GridSlider/index.jsx new file mode 100644 index 0000000000..8c45bb06ce --- /dev/null +++ b/src/jsMain/js/app/components/GridSlider/index.jsx @@ -0,0 +1,85 @@ +import React, { Fragment } from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import Draggable from 'react-draggable'; +import s from './GridSlider.scss'; +import { disableScroll, enableScroll } from '../utils'; + +const pickerRadius = 12; + +const GridSlider = (props) => { + const _handleDragSlider = (e, { x, y }) => { + const data = { + x: Math.round(x * (props.maxValue / props.width)), + y: Math.round(y * (props.maxValue / props.height)), + }; + + props.onChange(e, data); + }; + + const _renderSlider = () => { + return ( + +
+ + ); + }; + + return ( +
+ {_renderSlider()} +
+ ); +}; + +GridSlider.propTypes = { + height: PropTypes.number, + width: PropTypes.number, + minValue: PropTypes.number, + maxValue: PropTypes.number, + x: PropTypes.number, + y: PropTypes.number, + onChange: PropTypes.func, + className: PropTypes.string, +}; + +GridSlider.defaultProps = { + height: 150, + width: 150, + minValue: 0, + maxValue: 255, + x: 150 / 2, + y: 150 / 2, + onChange: () => { + console.warn('You should implement a onChange handler for '); + }, + className: null, +}; + +export default GridSlider; diff --git a/src/jsMain/js/app/components/Modal/Modal.scss b/src/jsMain/js/app/components/Modal/Modal.scss new file mode 100644 index 0000000000..fd76eb84a9 --- /dev/null +++ b/src/jsMain/js/app/components/Modal/Modal.scss @@ -0,0 +1,55 @@ +.modal__container { + position: absolute; + top: 0; + height: 100%; + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.modal__backdrop { + background-color: rgba(0, 0, 0, 0.6); + z-index: 998; + height: 100%; + width: 100%; + position: absolute; + top: 0; +} + +.modal__wrapper { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + z-index: 999; + position: absolute; + background-color: #333838; +} + +.modal__wrapper--small { + height: 40%; + width: 50%; +} + +.modal__wrapper--medium { + height: 60%; + width: 70%; +} + +.modal__wrapper--large { + height: 70%; + width: 80%; +} + +.close-button { + background-color: transparent; + color: #747F7F; + font-size: 1.2em; + position: absolute; + top: -19px; + right: -23px; + border-radius: 50%; + border: none; + cursor: pointer; +} diff --git a/src/jsMain/js/app/components/Modal/index.jsx b/src/jsMain/js/app/components/Modal/index.jsx new file mode 100644 index 0000000000..ba1087a4f8 --- /dev/null +++ b/src/jsMain/js/app/components/Modal/index.jsx @@ -0,0 +1,45 @@ +import React, { Fragment } from 'react'; +import ReactDOM from 'react-dom'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import { MODAL_PORTAL_DOM_NODE_ID } from '../../constants'; +import styles from './Modal.scss'; + +const Modal = (props) => { + if (!props.isOpen) return null; + + return ReactDOM.createPortal( +
+
+
+ {props.displayCloseButton && ( + + )} + {props.children} +
+
, + document.getElementById(MODAL_PORTAL_DOM_NODE_ID) + ); +}; + +Modal.propTypes = { + isOpen: PropTypes.bool.isRequired, + children: PropTypes.any, + onClose: PropTypes.func, + size: PropTypes.oneOf(['small', 'medium', 'large']), +}; + +Modal.defaultProps = { + onClose: () => {}, + size: 'medium', + displayCloseButton: true, +}; + +export default Modal; diff --git a/src/jsMain/js/app/components/ShowList/Show.jsx b/src/jsMain/js/app/components/ShowList/Show.jsx new file mode 100644 index 0000000000..99a3291c36 --- /dev/null +++ b/src/jsMain/js/app/components/ShowList/Show.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import classNames from 'classnames'; +import PropTypes from 'prop-types'; +import styles from './ShowList.scss'; + +const Show = ({ name, isSelected, handleSelectShow }) => ( +
  • { + handleSelectShow(name); + }} + className={classNames(styles['show-list--item'], { + [styles['selected']]: isSelected, + })} + > + {name} +
  • +); + +Show.propTypes = { + name: PropTypes.string.isRequired, +}; + +export default Show; diff --git a/src/jsMain/js/app/components/ShowList/ShowList.scss b/src/jsMain/js/app/components/ShowList/ShowList.scss new file mode 100644 index 0000000000..da6c89ddb9 --- /dev/null +++ b/src/jsMain/js/app/components/ShowList/ShowList.scss @@ -0,0 +1,36 @@ +.show-list--wrapper { + height: auto; + width: 100%; + padding-left: .25em; + padding-right: 1em; + color: white; + background-color: #747F7F +} + +.show-list { + list-style: none; + padding-left: 0; + margin-top: 0; + +} + +.show-list--title { + padding: 10px; + font-size: 1.2em; + font-weight: bold; +} + +.show-list--item { + padding: 5px 0 5px 10px; + font-size: 1.2em; + cursor: pointer; + + &:hover { + background-color: #72F2EB; + color: black; + } +} + +.selected { + background-color: #FF4858 !important; +} diff --git a/src/jsMain/js/app/components/ShowList/index.jsx b/src/jsMain/js/app/components/ShowList/index.jsx new file mode 100644 index 0000000000..6376d1c79c --- /dev/null +++ b/src/jsMain/js/app/components/ShowList/index.jsx @@ -0,0 +1,59 @@ +import React, {Component} from 'react'; +import PropTypes from 'prop-types'; +import Show from './Show'; +import styles from './ShowList.scss'; + +import {baaahs} from 'sparklemotion'; + +class ShowList extends Component { + state = { + availableShows: [], + }; + + componentDidMount() { + this.subscribeToChannels(); + } + + subscribeToChannels() { + this.props.pubSub.subscribe(baaahs.Topics.availableShows, (response) => { + const availableShows = response.toArray(); + + this.setState({ availableShows }); + }); + } + + render() { + const { availableShows } = this.state; + const { selectedShow } = this.props; + + return ( +
    +
    Show List
    +
      + {availableShows.map((showName) => ( + { + this.props.onSelect(showName); + }} + /> + ))} +
    +
    + ); + } +} + +ShowList.propTypes = { + pubSub: PropTypes.object, + selectedShow: PropTypes.string, +}; + +ShowList.defaultProps = { + pubSub: {}, + selectedShow: '', +}; + +export default ShowList; diff --git a/src/jsMain/js/app/components/TabBar/TabBar.scss b/src/jsMain/js/app/components/TabBar/TabBar.scss new file mode 100644 index 0000000000..b2cd703754 --- /dev/null +++ b/src/jsMain/js/app/components/TabBar/TabBar.scss @@ -0,0 +1,26 @@ +.tab-bar__wrapper { + width: 100%; + height: 3vh; + background-color: #747F7F; + border-top: 2px solid #333838; + border-bottom: 2px solid #333838; + display: flex; +} + +.tab-bar__button { + border: none; + background-color: #747F7F; + width: 100%; + border-left: 1px solid #333838; + border-bottom: 0 solid #747F7F; + color: #FFFFFF; + font-size: 1.2em; + + &:last-child { + border-right: 1px solid #333838; + } +} + +.tab-bar__button--active { + border-bottom: 3px solid #FF4858; +} diff --git a/src/jsMain/js/app/components/TabBar/index.jsx b/src/jsMain/js/app/components/TabBar/index.jsx new file mode 100644 index 0000000000..3d85dab508 --- /dev/null +++ b/src/jsMain/js/app/components/TabBar/index.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import styles from './TabBar.scss'; + +const TabBar = ({ tabs, activeTab, onTabClick }) => ( +
    + {tabs.map((tab) => ( + + ))} +
    +); + +TabBar.propTypes = { + tabs: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired, + activeTab: PropTypes.string, + onTabClick: PropTypes.func.isRequired, +}; + +TabBar.defaultProps = { + activeTab: '', +}; + +export default TabBar; diff --git a/src/jsMain/js/app/components/gadgets/ColorPicker/index.jsx b/src/jsMain/js/app/components/gadgets/ColorPicker/index.jsx new file mode 100644 index 0000000000..7aab91873d --- /dev/null +++ b/src/jsMain/js/app/components/gadgets/ColorPicker/index.jsx @@ -0,0 +1,40 @@ +import React from 'react'; +import ColorWheel from '../../ColorWheel'; + +class ColorPicker extends React.Component { + constructor(props) { + super(props); + + this.state = { + colors: [props.gadget.color], + }; + } + + componentDidMount() { + this.props.gadget.listen(this._handleChangeFromServer); + } + + componentWillUnmount() { + this.props.gadget.unlisten(this._handleChangeFromServer); + } + + _handleChangeFromUi = ([colors]) => { + this.setState({ colors: [colors] }); + this.props.gadget.color = colors; + }; + + _handleChangeFromServer = () => { + this.setState({ colors: [this.props.gadget.color] }); + }; + + render() { + return ( + + ); + } +} + +export default ColorPicker; diff --git a/src/jsMain/js/app/components/gadgets/PalettePicker/index.jsx b/src/jsMain/js/app/components/gadgets/PalettePicker/index.jsx new file mode 100644 index 0000000000..c38dba453b --- /dev/null +++ b/src/jsMain/js/app/components/gadgets/PalettePicker/index.jsx @@ -0,0 +1,44 @@ +import React from 'react'; +import ColorWheel from '../../ColorWheel'; +import kotlin from 'kotlin'; + +class PalettePicker extends React.Component { + constructor(props) { + super(props); + + this.state = { + colors: props.gadget.colors.toArray(), + }; + } + + componentDidMount() { + this.props.gadget.listen(this._handleChangeFromServer); + } + + componentWillUnmount() { + this.props.gadget.unlisten(this._handleChangeFromServer); + } + + _handleChangeFromUi = (colors) => { + this.setState({ colors }); + this.props.gadget.colors = new kotlin.kotlin.collections.ArrayList(colors); + }; + + _handleChangeFromServer = () => { + this.setState({ colors: this.props.gadget.colors.toArray() }); + }; + + render() { + const { colors } = this.state; + + return ( + + ); + } +} + +export default PalettePicker; diff --git a/src/jsMain/js/app/components/gadgets/Slider/Slider.scss b/src/jsMain/js/app/components/gadgets/Slider/Slider.scss new file mode 100644 index 0000000000..b1d21ff6b2 --- /dev/null +++ b/src/jsMain/js/app/components/gadgets/Slider/Slider.scss @@ -0,0 +1,61 @@ +.slider--wrapper { + display: flex; + width: 60px; + flex-direction: column; + align-items: flex-start; + font-size: 14px; + margin-bottom: 8px; + text-shadow: 0px 1px 1px black; +} + +.slider--label { + width: 100%; + flex: 0 0 auto; + text-align: center; + margin-bottom: 20px; +} + +.slider--touch-area { + position: absolute; + transform: translate(-50%, -50%); + background-color: transparent; + z-index: 5; + width: 42px; + height: 45px; + cursor: pointer; +} + +.slider--handle-wrapper { + position: absolute; + transform: translate(-50%, -50%); + z-index: 2; + width: 20px; + height: 40px; + border-radius: 2px; + box-shadow: 1px 1px 1px 1px rgba(0, 0, 0, 0.3); + background: linear-gradient(#6ABBC0, #00A4D1); + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + + .slider--handle-notch { + height: 1px; + background-color: black; + border-bottom: 1px solid #B8D5CF; + width: 100%; + } + + .slider--handle-notch-middle { + height: 2px; + border-bottom: none; + box-shadow: 0px 0px 3px #00FF28; + background-color: #00E622; + width: 50%; + } + + .slider--handle-notch-lower { + border-bottom: none; + border-top: 1px solid #B8D5CF; + } +} diff --git a/src/jsMain/js/app/components/gadgets/Slider/index.jsx b/src/jsMain/js/app/components/gadgets/Slider/index.jsx new file mode 100644 index 0000000000..589a3cc65e --- /dev/null +++ b/src/jsMain/js/app/components/gadgets/Slider/index.jsx @@ -0,0 +1,160 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import throttle from 'lodash/throttle'; +import sass from './Slider.scss'; +import {Handles, Rail, Slider, Ticks, Tracks} from 'react-compound-slider'; +import {Handle, SliderRail, Tick, Track} from './slider-parts'; +import {disableScroll, enableScroll} from '../../utils'; + +const sliderStyle = { + position: 'relative', + height: '200px', + marginLeft: '45%', + touchAction: 'none', +}; + +const domain = [0, 1]; + +class RangeSlider extends React.Component { + constructor(props) { + super(props); + + this.state = { + value: props.gadget.value + }; + } + + componentDidMount() { + this.listener = () => this._handleChangeFromServer() + this.props.gadget.listen(this.listener); + } + + componentWillUnmount() { + try { + this.props.gadget.unlisten(this.listener); + } catch (e) { + // TODO: Why is this happening? It causes the UI to disappear. :-( + console.warn("Failed to unlisten on", this.props.gadget, e); + } finally { + this.listener = null; + } + } + + get domain() { + const { gadget } = this.props; + const { minValue, maxValue } = gadget; + + let domain = [0, 1]; + + if (minValue !== null && maxValue !== null) { + domain = [minValue, maxValue]; + } + + return domain; + } + + get stepValue() { + const { gadget } = this.props; + const { stepValue } = gadget; + + if (stepValue !== null) { + return stepValue; + } + + return 0.01; + } + + _handleChangeFromServer = () => { + this.setState({ value: this.props.gadget.value }); + }; + + onUpdate = throttle((value) => { + this.onChange(value); + }, 10); + + onChange = (value) => { + this.props.gadget.withoutTriggering(this.listener, () => { + this.props.gadget.value = value; + }); + }; + + render() { + const { value } = this.state; + + return ( +
    + + { + this.onUpdate(values[0]); + }} + onChange={(values) => { + this.onChange(values[0]); + }} + values={[value]} + > + + {({ getRailProps }) => } + + + {({ handles, getHandleProps }) => ( +
    + {handles.map((handle) => ( + + ))} +
    + )} +
    + + {({ tracks, getTrackProps }) => ( +
    + {tracks.map(({ id, source, target }) => ( + + ))} +
    + )} +
    + + {({ ticks }) => ( +
    + {ticks.map((tick) => ( + + ))} +
    + )} +
    +
    +
    + ); + } +} + +RangeSlider.propTypes = { + gadget: PropTypes.object, +}; + +RangeSlider.defaultProps = { + gadget: {}, +}; + +export default RangeSlider; diff --git a/src/jsMain/js/app/components/gadgets/Slider/slider-parts.jsx b/src/jsMain/js/app/components/gadgets/Slider/slider-parts.jsx new file mode 100644 index 0000000000..ae1487717e --- /dev/null +++ b/src/jsMain/js/app/components/gadgets/Slider/slider-parts.jsx @@ -0,0 +1,235 @@ +import React, { Fragment } from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import styles from './Slider.scss'; + +// ******************************************************* +// RAIL +// ******************************************************* +const railOuterStyle = { + position: 'absolute', + height: '100%', + width: 42, + transform: 'translate(-50%, 0%)', + borderRadius: 7, + cursor: 'pointer', +}; + +const railInnerStyle = { + position: 'absolute', + height: '100%', + width: 7, + transform: 'translate(-50%, 0%)', + borderRadius: 7, + pointerEvents: 'none', + boxShadow: `rgba(0, 0, 0, .85) 1px 1px 1px inset, rgba(255, 255, 255, 0.2) -1px -1px 1px inset`, +}; + +export function SliderRail({ getRailProps }) { + return ( + +
    +
    + + ); +} + +SliderRail.propTypes = { + getRailProps: PropTypes.func.isRequired, +}; + +// ******************************************************* +// HANDLE COMPONENT +// ******************************************************* +export function Handle({ + domain: [min, max], + handle: { id, value, percent }, + getHandleProps, +}) { + return ( + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + ); +} + +Handle.propTypes = { + domain: PropTypes.array.isRequired, + handle: PropTypes.shape({ + id: PropTypes.string.isRequired, + value: PropTypes.number.isRequired, + percent: PropTypes.number.isRequired, + }).isRequired, + getHandleProps: PropTypes.func.isRequired, +}; + +// ******************************************************* +// KEYBOARD HANDLE COMPONENT +// Uses button to allow keyboard events +// ******************************************************* +export function KeyboardHandle({ + domain: [min, max], + handle: { id, value, percent }, + getHandleProps, +}) { + return ( + - - -
    -
    Brains:
    -
    -
    -
    -
    - - -
    -
    - - - - - - - - - + + + - \ No newline at end of file + diff --git a/src/jsMain/resources/index.js b/src/jsMain/resources/index.js deleted file mode 100644 index f7791a7298..0000000000 --- a/src/jsMain/resources/index.js +++ /dev/null @@ -1,170 +0,0 @@ -let controls, camera, scene, renderer, geom, object, pointMaterial, faceMaterial, lineMaterial, panelMaterial, - raycaster, mouse, sphere; - -let panels = []; - -let select = document.getElementById('panelSelect'); -let info2 = document.getElementById('info2'); -let sheepView = document.getElementById('sheepView'); - -select.onchange = onSelectChange; - -mouse = new THREE.Vector2(); - - -function onSelectChange(event) { - let idx = parseInt(event.target.value); - for (let i = 0; i < panels.length; ++i) { - panels[i].faces.visible = i === idx; - for (let line of panels[i].lines) { - line.material = i === idx ? panelMaterial : lineMaterial; - } - - } - // surface area - let area = 0; - for (let face of panels[idx].faces.geometry.faces) { - let a = panels[idx].faces.geometry.vertices[face.a]; - let b = panels[idx].faces.geometry.vertices[face.b]; - let c = panels[idx].faces.geometry.vertices[face.c]; - let u = b.clone().sub(a); - let v = c.clone().sub(a); - area += Math.sqrt((u.y * v.z - u.z * v.y) ** 2 + (u.z * v.x - u.x * v.z) ** 2 + (u.x * v.y - u.y * v.x) ** 2) / 2; - } - info2.innerText = `Total surface area: ${(area / 144).toFixed(2)} sq. ft.`; -} - -function onMouseMove(event) { - event.preventDefault(); - mouse.x = (event.clientX / sheepView.offsetWidth) * 2 - 1; - mouse.y = -(event.clientY / sheepView.offsetHeight) * 2 + 1; -} - -function selectPanel(panel, isSelected) { - panel.faces.visible = isSelected; - for (let line of panel.lines) { - line.material = isSelected ? panelMaterial : lineMaterial; - } -} - -function setPanelColor(panel, color) { - panel.faces.visible = true; - panel.faceMaterial.color.r = color.red / 256.0; - panel.faceMaterial.color.g = color.green / 256.0; - panel.faceMaterial.color.b = color.blue / 256.0; -} - -function initThreeJs(sheepModel, threeJsPanelBin) { - sheepView.addEventListener('mousemove', onMouseMove, false); - camera = new THREE.PerspectiveCamera(45, sheepView.offsetWidth / sheepView.offsetHeight, 1, 10000); - camera.position.z = 1000; - controls = new THREE.OrbitControls(camera, sheepView); - scene = new THREE.Scene(); - pointMaterial = new THREE.PointsMaterial({color: 0xffffff}); - lineMaterial = new THREE.LineBasicMaterial({color: 0x222222}); - panelMaterial = new THREE.LineBasicMaterial({color: 0x2222222}); - scene.add(camera); - renderer = new THREE.WebGLRenderer(); - renderer.setPixelRatio(window.devicePixelRatio); - renderer.setSize(sheepView.offsetWidth, sheepView.offsetHeight); - sheepView.appendChild(renderer.domElement); - geom = new THREE.Geometry(); - raycaster = new THREE.Raycaster(); - raycaster.params.Points.threshold = 1; - sphere = new THREE.Mesh(new THREE.SphereBufferGeometry(1, 32, 32), new THREE.MeshBasicMaterial({color: 0xff0000})); - scene.add(sphere); - - // convert from SheepModel to THREE - sheepModel.vertices.toArray().forEach(v => { - geom.vertices.push(new THREE.Vector3(v.x, v.y, v.z)); - }); -} - -function addPanel(p) { - let faces = new THREE.Geometry(); - let panelVertices = []; - faces.faces = p.faces.faces.toArray().map(face => { - let localVerts = []; - face.vertexIds.toArray().forEach(vi => { - let v = geom.vertices[vi]; - let lvi = panelVertices.indexOf(v); - if (lvi === -1) { - lvi = panelVertices.length; - panelVertices.push(v); - } - localVerts.push(lvi) - }); - return new THREE.Face3(...localVerts); - }); - faces.vertices = panelVertices; - let lines = p.lines.toArray().map(line => { - let lineGeo = new THREE.Geometry(); - lineGeo.vertices = line.points.toArray().map(pt => new THREE.Vector3(pt.x, pt.y, pt.z)); - return lineGeo; - }); - - let faceMaterial = new THREE.MeshBasicMaterial({color: 0xaa0000,}); - faceMaterial.side = THREE.DoubleSide; - faceMaterial.transparent = true; - faceMaterial.opacity = 0.75; - - var panel = { - name: p.name, - faceMaterial: faceMaterial, - faces: new THREE.Mesh(faces, faceMaterial), - lines: lines.map(line => new THREE.Line(line, lineMaterial)) - }; - - panel.faces.visible = false; - scene.add(panel.faces); - panel.lines.forEach((line) => { - scene.add(line); - }); - - panels.push(panel); - - select.options[select.options.length] = new Option(p.name, (panels.length - 1).toString()); - - return panel; -} - -function startRender() { - geom.computeBoundingSphere(); - object = new THREE.Points(geom, pointMaterial); - scene.add(object); - controls.target = geom.boundingSphere.center; - camera.lookAt(geom.boundingSphere.center); - - render(); -} - -var REFRESH_DELAY = 50; // ms - -function render() { - setTimeout(() => { - requestAnimationFrame(render); - }, REFRESH_DELAY); - - var rotSpeed = .01; - var x = camera.position.x; - var z = camera.position.z; - camera.position.x = x * Math.cos(rotSpeed) + z * Math.sin(rotSpeed); - camera.position.z = z * Math.cos(rotSpeed * 2) - x * Math.sin(rotSpeed * 2); - camera.lookAt(scene.position); - - controls.update(); - raycaster.setFromCamera(mouse, camera); - let intersections = raycaster.intersectObject(object); - if (intersections.length) { - let sorted = object.geometry.vertices.slice().sort((a, b) => (new THREE.Vector3()).subVectors(a, intersections[0].point).length() - (new THREE.Vector3()).subVectors(b, intersections[0].point).length()); - let nearest = sorted[0]; - sphere.position.copy(nearest); - sphere.visible = true; - let index = object.geometry.vertices.indexOf(nearest); - document.getElementById('info').innerText = (index + 1).toString(); - } else { - sphere.visible = false; - document.getElementById('info').innerText = ''; - } - renderer.render(scene, camera); -} \ No newline at end of file diff --git a/src/jsMain/resources/lib/OrbitControls.js b/src/jsMain/resources/lib/OrbitControls.js deleted file mode 100644 index d604a0d39f..0000000000 --- a/src/jsMain/resources/lib/OrbitControls.js +++ /dev/null @@ -1,1062 +0,0 @@ -/** - * @author qiao / https://github.com/qiao - * @author mrdoob / http://mrdoob.com - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author erich666 / http://erichaines.com - */ - -// This set of controls performs orbiting, dollying (zooming), and panning. -// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). -// -// Orbit - left mouse / touch: one-finger move -// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish -// Pan - right mouse, or left mouse + ctrl/meta/shiftKey, or arrow keys / touch: two-finger move - -THREE.OrbitControls = function ( object, domElement ) { - - this.object = object; - - this.domElement = ( domElement !== undefined ) ? domElement : document; - - // Set to false to disable this control - this.enabled = true; - - // "target" sets the location of focus, where the object orbits around - this.target = new THREE.Vector3(); - - // How far you can dolly in and out ( PerspectiveCamera only ) - this.minDistance = 0; - this.maxDistance = Infinity; - - // How far you can zoom in and out ( OrthographicCamera only ) - this.minZoom = 0; - this.maxZoom = Infinity; - - // How far you can orbit vertically, upper and lower limits. - // Range is 0 to Math.PI radians. - this.minPolarAngle = 0; // radians - this.maxPolarAngle = Math.PI; // radians - - // How far you can orbit horizontally, upper and lower limits. - // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. - this.minAzimuthAngle = - Infinity; // radians - this.maxAzimuthAngle = Infinity; // radians - - // Set to true to enable damping (inertia) - // If damping is enabled, you must call controls.update() in your animation loop - this.enableDamping = false; - this.dampingFactor = 0.25; - - // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. - // Set to false to disable zooming - this.enableZoom = true; - this.zoomSpeed = 1.0; - - // Set to false to disable rotating - this.enableRotate = true; - this.rotateSpeed = 1.0; - - // Set to false to disable panning - this.enablePan = true; - this.panSpeed = 1.0; - this.screenSpacePanning = false; // if true, pan in screen-space - this.keyPanSpeed = 7.0; // pixels moved per arrow key push - - // Set to true to automatically rotate around the target - // If auto-rotate is enabled, you must call controls.update() in your animation loop - this.autoRotate = false; - this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 - - // Set to false to disable use of the keys - this.enableKeys = true; - - // The four arrow keys - this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; - - // Mouse buttons - this.mouseButtons = { LEFT: THREE.MOUSE.LEFT, MIDDLE: THREE.MOUSE.MIDDLE, RIGHT: THREE.MOUSE.RIGHT }; - - // for reset - this.target0 = this.target.clone(); - this.position0 = this.object.position.clone(); - this.zoom0 = this.object.zoom; - - // - // public methods - // - - this.getPolarAngle = function () { - - return spherical.phi; - - }; - - this.getAzimuthalAngle = function () { - - return spherical.theta; - - }; - - this.saveState = function () { - - scope.target0.copy( scope.target ); - scope.position0.copy( scope.object.position ); - scope.zoom0 = scope.object.zoom; - - }; - - this.reset = function () { - - scope.target.copy( scope.target0 ); - scope.object.position.copy( scope.position0 ); - scope.object.zoom = scope.zoom0; - - scope.object.updateProjectionMatrix(); - scope.dispatchEvent( changeEvent ); - - scope.update(); - - state = STATE.NONE; - - }; - - // this method is exposed, but perhaps it would be better if we can make it private... - this.update = function () { - - var offset = new THREE.Vector3(); - - // so camera.up is the orbit axis - var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); - var quatInverse = quat.clone().inverse(); - - var lastPosition = new THREE.Vector3(); - var lastQuaternion = new THREE.Quaternion(); - - return function update() { - - var position = scope.object.position; - - offset.copy( position ).sub( scope.target ); - - // rotate offset to "y-axis-is-up" space - offset.applyQuaternion( quat ); - - // angle from z-axis around y-axis - spherical.setFromVector3( offset ); - - if ( scope.autoRotate && state === STATE.NONE ) { - - rotateLeft( getAutoRotationAngle() ); - - } - - spherical.theta += sphericalDelta.theta; - spherical.phi += sphericalDelta.phi; - - // restrict theta to be between desired limits - spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); - - // restrict phi to be between desired limits - spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); - - spherical.makeSafe(); - - - spherical.radius *= scale; - - // restrict radius to be between desired limits - spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); - - // move target to panned location - scope.target.add( panOffset ); - - offset.setFromSpherical( spherical ); - - // rotate offset back to "camera-up-vector-is-up" space - offset.applyQuaternion( quatInverse ); - - position.copy( scope.target ).add( offset ); - - scope.object.lookAt( scope.target ); - - if ( scope.enableDamping === true ) { - - sphericalDelta.theta *= ( 1 - scope.dampingFactor ); - sphericalDelta.phi *= ( 1 - scope.dampingFactor ); - - panOffset.multiplyScalar( 1 - scope.dampingFactor ); - - } else { - - sphericalDelta.set( 0, 0, 0 ); - - panOffset.set( 0, 0, 0 ); - - } - - scale = 1; - - // update condition is: - // min(camera displacement, camera rotation in radians)^2 > EPS - // using small-angle approximation cos(x/2) = 1 - x^2 / 8 - - if ( zoomChanged || - lastPosition.distanceToSquared( scope.object.position ) > EPS || - 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { - - scope.dispatchEvent( changeEvent ); - - lastPosition.copy( scope.object.position ); - lastQuaternion.copy( scope.object.quaternion ); - zoomChanged = false; - - return true; - - } - - return false; - - }; - - }(); - - this.dispose = function () { - - scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); - scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); - scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); - - scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); - scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); - scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); - - document.removeEventListener( 'mousemove', onMouseMove, false ); - document.removeEventListener( 'mouseup', onMouseUp, false ); - - window.removeEventListener( 'keydown', onKeyDown, false ); - - //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? - - }; - - // - // internals - // - - var scope = this; - - var changeEvent = { type: 'change' }; - var startEvent = { type: 'start' }; - var endEvent = { type: 'end' }; - - var STATE = { NONE: - 1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY_PAN: 4 }; - - var state = STATE.NONE; - - var EPS = 0.000001; - - // current position in spherical coordinates - var spherical = new THREE.Spherical(); - var sphericalDelta = new THREE.Spherical(); - - var scale = 1; - var panOffset = new THREE.Vector3(); - var zoomChanged = false; - - var rotateStart = new THREE.Vector2(); - var rotateEnd = new THREE.Vector2(); - var rotateDelta = new THREE.Vector2(); - - var panStart = new THREE.Vector2(); - var panEnd = new THREE.Vector2(); - var panDelta = new THREE.Vector2(); - - var dollyStart = new THREE.Vector2(); - var dollyEnd = new THREE.Vector2(); - var dollyDelta = new THREE.Vector2(); - - function getAutoRotationAngle() { - - return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; - - } - - function getZoomScale() { - - return Math.pow( 0.95, scope.zoomSpeed ); - - } - - function rotateLeft( angle ) { - - sphericalDelta.theta -= angle; - - } - - function rotateUp( angle ) { - - sphericalDelta.phi -= angle; - - } - - var panLeft = function () { - - var v = new THREE.Vector3(); - - return function panLeft( distance, objectMatrix ) { - - v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix - v.multiplyScalar( - distance ); - - panOffset.add( v ); - - }; - - }(); - - var panUp = function () { - - var v = new THREE.Vector3(); - - return function panUp( distance, objectMatrix ) { - - if ( scope.screenSpacePanning === true ) { - - v.setFromMatrixColumn( objectMatrix, 1 ); - - } else { - - v.setFromMatrixColumn( objectMatrix, 0 ); - v.crossVectors( scope.object.up, v ); - - } - - v.multiplyScalar( distance ); - - panOffset.add( v ); - - }; - - }(); - - // deltaX and deltaY are in pixels; right and down are positive - var pan = function () { - - var offset = new THREE.Vector3(); - - return function pan( deltaX, deltaY ) { - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - if ( scope.object.isPerspectiveCamera ) { - - // perspective - var position = scope.object.position; - offset.copy( position ).sub( scope.target ); - var targetDistance = offset.length(); - - // half of the fov is center to top of screen - targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); - - // we use only clientHeight here so aspect ratio does not distort speed - panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); - panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); - - } else if ( scope.object.isOrthographicCamera ) { - - // orthographic - panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); - panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); - - } else { - - // camera neither orthographic nor perspective - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); - scope.enablePan = false; - - } - - }; - - }(); - - function dollyIn( dollyScale ) { - - if ( scope.object.isPerspectiveCamera ) { - - scale /= dollyScale; - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - function dollyOut( dollyScale ) { - - if ( scope.object.isPerspectiveCamera ) { - - scale *= dollyScale; - - } else if ( scope.object.isOrthographicCamera ) { - - scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); - scope.object.updateProjectionMatrix(); - zoomChanged = true; - - } else { - - console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); - scope.enableZoom = false; - - } - - } - - // - // event callbacks - update the object state - // - - function handleMouseDownRotate( event ) { - - //console.log( 'handleMouseDownRotate' ); - - rotateStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownDolly( event ) { - - //console.log( 'handleMouseDownDolly' ); - - dollyStart.set( event.clientX, event.clientY ); - - } - - function handleMouseDownPan( event ) { - - //console.log( 'handleMouseDownPan' ); - - panStart.set( event.clientX, event.clientY ); - - } - - function handleMouseMoveRotate( event ) { - - //console.log( 'handleMouseMoveRotate' ); - - rotateEnd.set( event.clientX, event.clientY ); - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - - } - - function handleMouseMoveDolly( event ) { - - //console.log( 'handleMouseMoveDolly' ); - - dollyEnd.set( event.clientX, event.clientY ); - - dollyDelta.subVectors( dollyEnd, dollyStart ); - - if ( dollyDelta.y > 0 ) { - - dollyIn( getZoomScale() ); - - } else if ( dollyDelta.y < 0 ) { - - dollyOut( getZoomScale() ); - - } - - dollyStart.copy( dollyEnd ); - - scope.update(); - - } - - function handleMouseMovePan( event ) { - - //console.log( 'handleMouseMovePan' ); - - panEnd.set( event.clientX, event.clientY ); - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - scope.update(); - - } - - function handleMouseUp( event ) { - - // console.log( 'handleMouseUp' ); - - } - - function handleMouseWheel( event ) { - - // console.log( 'handleMouseWheel' ); - - if ( event.deltaY < 0 ) { - - dollyOut( getZoomScale() ); - - } else if ( event.deltaY > 0 ) { - - dollyIn( getZoomScale() ); - - } - - scope.update(); - - } - - function handleKeyDown( event ) { - - //console.log( 'handleKeyDown' ); - - // prevent the browser from scrolling on cursor up/down - - event.preventDefault(); - - switch ( event.keyCode ) { - - case scope.keys.UP: - pan( 0, scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.BOTTOM: - pan( 0, - scope.keyPanSpeed ); - scope.update(); - break; - - case scope.keys.LEFT: - pan( scope.keyPanSpeed, 0 ); - scope.update(); - break; - - case scope.keys.RIGHT: - pan( - scope.keyPanSpeed, 0 ); - scope.update(); - break; - - } - - } - - function handleTouchStartRotate( event ) { - - //console.log( 'handleTouchStartRotate' ); - - rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - - } - - function handleTouchStartDollyPan( event ) { - - //console.log( 'handleTouchStartDollyPan' ); - - if ( scope.enableZoom ) { - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - - var distance = Math.sqrt( dx * dx + dy * dy ); - - dollyStart.set( 0, distance ); - - } - - if ( scope.enablePan ) { - - var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); - var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); - - panStart.set( x, y ); - - } - - } - - function handleTouchMoveRotate( event ) { - - //console.log( 'handleTouchMoveRotate' ); - - rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); - - rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); - - var element = scope.domElement === document ? scope.domElement.body : scope.domElement; - - rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height - - rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); - - rotateStart.copy( rotateEnd ); - - scope.update(); - - } - - function handleTouchMoveDollyPan( event ) { - - //console.log( 'handleTouchMoveDollyPan' ); - - if ( scope.enableZoom ) { - - var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; - var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; - - var distance = Math.sqrt( dx * dx + dy * dy ); - - dollyEnd.set( 0, distance ); - - dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); - - dollyIn( dollyDelta.y ); - - dollyStart.copy( dollyEnd ); - - } - - if ( scope.enablePan ) { - - var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); - var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); - - panEnd.set( x, y ); - - panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); - - pan( panDelta.x, panDelta.y ); - - panStart.copy( panEnd ); - - } - - scope.update(); - - } - - function handleTouchEnd( event ) { - - //console.log( 'handleTouchEnd' ); - - } - - // - // event handlers - FSM: listen for events and reset state - // - - function onMouseDown( event ) { - - if ( scope.enabled === false ) return; - - // Prevent the browser from scrolling. - - event.preventDefault(); - - // Manually set the focus since calling preventDefault above - // prevents the browser from setting it automatically. - - scope.domElement.focus ? scope.domElement.focus() : window.focus(); - - switch ( event.button ) { - - case scope.mouseButtons.LEFT: - - if ( event.ctrlKey || event.metaKey || event.shiftKey ) { - - if ( scope.enablePan === false ) return; - - handleMouseDownPan( event ); - - state = STATE.PAN; - - } else { - - if ( scope.enableRotate === false ) return; - - handleMouseDownRotate( event ); - - state = STATE.ROTATE; - - } - - break; - - case scope.mouseButtons.MIDDLE: - - if ( scope.enableZoom === false ) return; - - handleMouseDownDolly( event ); - - state = STATE.DOLLY; - - break; - - case scope.mouseButtons.RIGHT: - - if ( scope.enablePan === false ) return; - - handleMouseDownPan( event ); - - state = STATE.PAN; - - break; - - } - - if ( state !== STATE.NONE ) { - - document.addEventListener( 'mousemove', onMouseMove, false ); - document.addEventListener( 'mouseup', onMouseUp, false ); - - scope.dispatchEvent( startEvent ); - - } - - } - - function onMouseMove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - switch ( state ) { - - case STATE.ROTATE: - - if ( scope.enableRotate === false ) return; - - handleMouseMoveRotate( event ); - - break; - - case STATE.DOLLY: - - if ( scope.enableZoom === false ) return; - - handleMouseMoveDolly( event ); - - break; - - case STATE.PAN: - - if ( scope.enablePan === false ) return; - - handleMouseMovePan( event ); - - break; - - } - - } - - function onMouseUp( event ) { - - if ( scope.enabled === false ) return; - - handleMouseUp( event ); - - document.removeEventListener( 'mousemove', onMouseMove, false ); - document.removeEventListener( 'mouseup', onMouseUp, false ); - - scope.dispatchEvent( endEvent ); - - state = STATE.NONE; - - } - - function onMouseWheel( event ) { - - if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; - - event.preventDefault(); - event.stopPropagation(); - - scope.dispatchEvent( startEvent ); - - handleMouseWheel( event ); - - scope.dispatchEvent( endEvent ); - - } - - function onKeyDown( event ) { - - if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; - - handleKeyDown( event ); - - } - - function onTouchStart( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.enableRotate === false ) return; - - handleTouchStartRotate( event ); - - state = STATE.TOUCH_ROTATE; - - break; - - case 2: // two-fingered touch: dolly-pan - - if ( scope.enableZoom === false && scope.enablePan === false ) return; - - handleTouchStartDollyPan( event ); - - state = STATE.TOUCH_DOLLY_PAN; - - break; - - default: - - state = STATE.NONE; - - } - - if ( state !== STATE.NONE ) { - - scope.dispatchEvent( startEvent ); - - } - - } - - function onTouchMove( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - event.stopPropagation(); - - switch ( event.touches.length ) { - - case 1: // one-fingered touch: rotate - - if ( scope.enableRotate === false ) return; - if ( state !== STATE.TOUCH_ROTATE ) return; // is this needed? - - handleTouchMoveRotate( event ); - - break; - - case 2: // two-fingered touch: dolly-pan - - if ( scope.enableZoom === false && scope.enablePan === false ) return; - if ( state !== STATE.TOUCH_DOLLY_PAN ) return; // is this needed? - - handleTouchMoveDollyPan( event ); - - break; - - default: - - state = STATE.NONE; - - } - - } - - function onTouchEnd( event ) { - - if ( scope.enabled === false ) return; - - handleTouchEnd( event ); - - scope.dispatchEvent( endEvent ); - - state = STATE.NONE; - - } - - function onContextMenu( event ) { - - if ( scope.enabled === false ) return; - - event.preventDefault(); - - } - - // - - scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); - - scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); - scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); - - scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); - scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); - scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); - - window.addEventListener( 'keydown', onKeyDown, false ); - - // force an update at start - - this.update(); - -}; - -THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); -THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; - -Object.defineProperties( THREE.OrbitControls.prototype, { - - center: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .center has been renamed to .target' ); - return this.target; - - } - - }, - - // backward compatibility - - noZoom: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); - return ! this.enableZoom; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.' ); - this.enableZoom = ! value; - - } - - }, - - noRotate: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); - return ! this.enableRotate; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.' ); - this.enableRotate = ! value; - - } - - }, - - noPan: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); - return ! this.enablePan; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.' ); - this.enablePan = ! value; - - } - - }, - - noKeys: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); - return ! this.enableKeys; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.' ); - this.enableKeys = ! value; - - } - - }, - - staticMoving: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); - return ! this.enableDamping; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.' ); - this.enableDamping = ! value; - - } - - }, - - dynamicDampingFactor: { - - get: function () { - - console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); - return this.dampingFactor; - - }, - - set: function ( value ) { - - console.warn( 'THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.' ); - this.dampingFactor = value; - - } - - } - -} ); diff --git a/src/jsMain/resources/lib/kotlin.js b/src/jsMain/resources/lib/kotlin.js deleted file mode 100644 index 6162e6d25e..0000000000 --- a/src/jsMain/resources/lib/kotlin.js +++ /dev/null @@ -1,43733 +0,0 @@ -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define('kotlin', ['exports'], factory); - } - else if (typeof exports === 'object') { - factory(module.exports); - } - else { - root.kotlin = {}; - factory(root.kotlin); - } -}(this, function (Kotlin) { - var _ = Kotlin; - Kotlin.isBooleanArray = function (a) { - return (Array.isArray(a) || a instanceof Int8Array) && a.$type$ === 'BooleanArray'; - }; - Kotlin.isByteArray = function (a) { - return a instanceof Int8Array && a.$type$ !== 'BooleanArray'; - }; - Kotlin.isShortArray = function (a) { - return a instanceof Int16Array; - }; - Kotlin.isCharArray = function (a) { - return a instanceof Uint16Array && a.$type$ === 'CharArray'; - }; - Kotlin.isIntArray = function (a) { - return a instanceof Int32Array; - }; - Kotlin.isFloatArray = function (a) { - return a instanceof Float32Array; - }; - Kotlin.isDoubleArray = function (a) { - return a instanceof Float64Array; - }; - Kotlin.isLongArray = function (a) { - return Array.isArray(a) && a.$type$ === 'LongArray'; - }; - Kotlin.isArray = function (a) { - return Array.isArray(a) && !a.$type$; - }; - Kotlin.isArrayish = function (a) { - return Array.isArray(a) || ArrayBuffer.isView(a); - }; - Kotlin.arrayToString = function (a) { - var toString = Kotlin.isCharArray(a) ? String.fromCharCode : Kotlin.toString; - return '[' + Array.prototype.map.call(a, function (e) { - return toString(e); - }).join(', ') + ']'; - }; - Kotlin.arrayDeepToString = function (arr) { - return Kotlin.kotlin.collections.contentDeepToStringImpl(arr); - }; - Kotlin.arrayEquals = function (a, b) { - if (a === b) { - return true; - } - if (!Kotlin.isArrayish(b) || a.length !== b.length) { - return false; - } - for (var i = 0, n = a.length; i < n; i++) { - if (!Kotlin.equals(a[i], b[i])) { - return false; - } - } - return true; - }; - Kotlin.arrayDeepEquals = function (a, b) { - return Kotlin.kotlin.collections.contentDeepEqualsImpl(a, b); - }; - Kotlin.arrayHashCode = function (arr) { - var result = 1; - for (var i = 0, n = arr.length; i < n; i++) { - result = (31 * result | 0) + Kotlin.hashCode(arr[i]) | 0; - } - return result; - }; - Kotlin.arrayDeepHashCode = function (arr) { - return Kotlin.kotlin.collections.contentDeepHashCodeImpl(arr); - }; - Kotlin.primitiveArraySort = function (array) { - array.sort(Kotlin.doubleCompareTo); - }; - Kotlin.getCallableRef = function (name, f) { - f.callableName = name; - return f; - }; - Kotlin.getPropertyCallableRef = function (name, paramCount, getter, setter) { - getter.get = getter; - getter.set = setter; - getter.callableName = name; - return getPropertyRefClass(getter, setter, propertyRefClassMetadataCache[paramCount]); - }; - function getPropertyRefClass(obj, setter, cache) { - obj.$metadata$ = getPropertyRefMetadata(typeof setter === 'function' ? cache.mutable : cache.immutable); - obj.constructor = obj; - return obj; - } - var propertyRefClassMetadataCache = [{mutable: {value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KMutableProperty0; - }}, immutable: {value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KProperty0; - }}}, {mutable: {value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KMutableProperty1; - }}, immutable: {value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KProperty1; - }}}]; - function getPropertyRefMetadata(cache) { - if (cache.value === null) { - cache.value = {interfaces: [cache.implementedInterface()], baseClass: null, functions: {}, properties: {}, types: {}, staticMembers: {}}; - } - return cache.value; - } - Kotlin.toShort = function (a) { - return (a & 65535) << 16 >> 16; - }; - Kotlin.toByte = function (a) { - return (a & 255) << 24 >> 24; - }; - Kotlin.toChar = function (a) { - return a & 65535; - }; - Kotlin.numberToLong = function (a) { - return a instanceof Kotlin.Long ? a : Kotlin.Long.fromNumber(a); - }; - Kotlin.numberToInt = function (a) { - return a instanceof Kotlin.Long ? a.toInt() : Kotlin.doubleToInt(a); - }; - Kotlin.numberToShort = function (a) { - return Kotlin.toShort(Kotlin.numberToInt(a)); - }; - Kotlin.numberToByte = function (a) { - return Kotlin.toByte(Kotlin.numberToInt(a)); - }; - Kotlin.numberToDouble = function (a) { - return +a; - }; - Kotlin.numberToChar = function (a) { - return Kotlin.toChar(Kotlin.numberToInt(a)); - }; - Kotlin.doubleToInt = function (a) { - if (a > 2147483647) - return 2147483647; - if (a < -2147483648) - return -2147483648; - return a | 0; - }; - Kotlin.toBoxedChar = function (a) { - if (a == null) - return a; - if (a instanceof Kotlin.BoxedChar) - return a; - return new Kotlin.BoxedChar(a); - }; - Kotlin.unboxChar = function (a) { - if (a == null) - return a; - return Kotlin.toChar(a); - }; - Kotlin.equals = function (obj1, obj2) { - if (obj1 == null) { - return obj2 == null; - } - if (obj2 == null) { - return false; - } - if (obj1 !== obj1) { - return obj2 !== obj2; - } - if (typeof obj1 === 'object' && typeof obj1.equals === 'function') { - return obj1.equals(obj2); - } - if (typeof obj1 === 'number' && typeof obj2 === 'number') { - return obj1 === obj2 && (obj1 !== 0 || 1 / obj1 === 1 / obj2); - } - return obj1 === obj2; - }; - Kotlin.hashCode = function (obj) { - if (obj == null) { - return 0; - } - var objType = typeof obj; - if ('object' === objType) { - return 'function' === typeof obj.hashCode ? obj.hashCode() : getObjectHashCode(obj); - } - if ('function' === objType) { - return getObjectHashCode(obj); - } - if ('number' === objType) { - return Kotlin.numberHashCode(obj); - } - if ('boolean' === objType) { - return Number(obj); - } - var str = String(obj); - return getStringHashCode(str); - }; - Kotlin.toString = function (o) { - if (o == null) { - return 'null'; - } - else if (Kotlin.isArrayish(o)) { - return '[...]'; - } - else { - return o.toString(); - } - }; - var POW_2_32 = 4.294967296E9; - var OBJECT_HASH_CODE_PROPERTY_NAME = 'kotlinHashCodeValue$'; - function getObjectHashCode(obj) { - if (!(OBJECT_HASH_CODE_PROPERTY_NAME in obj)) { - var hash = Math.random() * POW_2_32 | 0; - Object.defineProperty(obj, OBJECT_HASH_CODE_PROPERTY_NAME, {value: hash, enumerable: false}); - } - return obj[OBJECT_HASH_CODE_PROPERTY_NAME]; - } - function getStringHashCode(str) { - var hash = 0; - for (var i = 0; i < str.length; i++) { - var code = str.charCodeAt(i); - hash = hash * 31 + code | 0; - } - return hash; - } - Kotlin.identityHashCode = getObjectHashCode; - Kotlin.Long = function (low, high) { - this.low_ = low | 0; - this.high_ = high | 0; - }; - Kotlin.Long.$metadata$ = {kind: 'class', simpleName: 'Long', interfaces: []}; - Kotlin.Long.IntCache_ = {}; - Kotlin.Long.fromInt = function (value) { - if (-128 <= value && value < 128) { - var cachedObj = Kotlin.Long.IntCache_[value]; - if (cachedObj) { - return cachedObj; - } - } - var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - Kotlin.Long.IntCache_[value] = obj; - } - return obj; - }; - Kotlin.Long.fromNumber = function (value) { - if (isNaN(value) || !isFinite(value)) { - return Kotlin.Long.ZERO; - } - else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) { - return Kotlin.Long.MIN_VALUE; - } - else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) { - return Kotlin.Long.MAX_VALUE; - } - else if (value < 0) { - return Kotlin.Long.fromNumber(-value).negate(); - } - else { - return new Kotlin.Long(value % Kotlin.Long.TWO_PWR_32_DBL_ | 0, value / Kotlin.Long.TWO_PWR_32_DBL_ | 0); - } - }; - Kotlin.Long.fromBits = function (lowBits, highBits) { - return new Kotlin.Long(lowBits, highBits); - }; - Kotlin.Long.fromString = function (str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - if (str.charAt(0) == '-') { - return Kotlin.Long.fromString(str.substring(1), radix).negate(); - } - else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8)); - var result = Kotlin.Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = Kotlin.Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(Kotlin.Long.fromNumber(value)); - } - else { - result = result.multiply(radixToPower); - result = result.add(Kotlin.Long.fromNumber(value)); - } - } - return result; - }; - Kotlin.Long.TWO_PWR_16_DBL_ = 1 << 16; - Kotlin.Long.TWO_PWR_24_DBL_ = 1 << 24; - Kotlin.Long.TWO_PWR_32_DBL_ = Kotlin.Long.TWO_PWR_16_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_; - Kotlin.Long.TWO_PWR_31_DBL_ = Kotlin.Long.TWO_PWR_32_DBL_ / 2; - Kotlin.Long.TWO_PWR_48_DBL_ = Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_; - Kotlin.Long.TWO_PWR_64_DBL_ = Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_32_DBL_; - Kotlin.Long.TWO_PWR_63_DBL_ = Kotlin.Long.TWO_PWR_64_DBL_ / 2; - Kotlin.Long.ZERO = Kotlin.Long.fromInt(0); - Kotlin.Long.ONE = Kotlin.Long.fromInt(1); - Kotlin.Long.NEG_ONE = Kotlin.Long.fromInt(-1); - Kotlin.Long.MAX_VALUE = Kotlin.Long.fromBits(4.294967295E9 | 0, 2147483647 | 0); - Kotlin.Long.MIN_VALUE = Kotlin.Long.fromBits(0, 2.147483648E9 | 0); - Kotlin.Long.TWO_PWR_24_ = Kotlin.Long.fromInt(1 << 24); - Kotlin.Long.prototype.toInt = function () { - return this.low_; - }; - Kotlin.Long.prototype.toNumber = function () { - return this.high_ * Kotlin.Long.TWO_PWR_32_DBL_ + this.getLowBitsUnsigned(); - }; - Kotlin.Long.prototype.hashCode = function () { - return this.high_ ^ this.low_; - }; - Kotlin.Long.prototype.toString = function (opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - if (this.isZero()) { - return '0'; - } - if (this.isNegative()) { - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - var radixLong = Kotlin.Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } - else { - return '-' + this.negate().toString(radix); - } - } - var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 6)); - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } - else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } - }; - Kotlin.Long.prototype.getHighBits = function () { - return this.high_; - }; - Kotlin.Long.prototype.getLowBits = function () { - return this.low_; - }; - Kotlin.Long.prototype.getLowBitsUnsigned = function () { - return this.low_ >= 0 ? this.low_ : Kotlin.Long.TWO_PWR_32_DBL_ + this.low_; - }; - Kotlin.Long.prototype.getNumBitsAbs = function () { - if (this.isNegative()) { - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - return 64; - } - else { - return this.negate().getNumBitsAbs(); - } - } - else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & 1 << bit) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } - }; - Kotlin.Long.prototype.isZero = function () { - return this.high_ == 0 && this.low_ == 0; - }; - Kotlin.Long.prototype.isNegative = function () { - return this.high_ < 0; - }; - Kotlin.Long.prototype.isOdd = function () { - return (this.low_ & 1) == 1; - }; - Kotlin.Long.prototype.equalsLong = function (other) { - return this.high_ == other.high_ && this.low_ == other.low_; - }; - Kotlin.Long.prototype.notEqualsLong = function (other) { - return this.high_ != other.high_ || this.low_ != other.low_; - }; - Kotlin.Long.prototype.lessThan = function (other) { - return this.compare(other) < 0; - }; - Kotlin.Long.prototype.lessThanOrEqual = function (other) { - return this.compare(other) <= 0; - }; - Kotlin.Long.prototype.greaterThan = function (other) { - return this.compare(other) > 0; - }; - Kotlin.Long.prototype.greaterThanOrEqual = function (other) { - return this.compare(other) >= 0; - }; - Kotlin.Long.prototype.compare = function (other) { - if (this.equalsLong(other)) { - return 0; - } - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - if (this.subtract(other).isNegative()) { - return -1; - } - else { - return 1; - } - }; - Kotlin.Long.prototype.negate = function () { - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - return Kotlin.Long.MIN_VALUE; - } - else { - return this.not().add(Kotlin.Long.ONE); - } - }; - Kotlin.Long.prototype.add = function (other) { - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 65535; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 65535; - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 65535; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 65535; - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 65535; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 65535; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 65535; - c48 += a48 + b48; - c48 &= 65535; - return Kotlin.Long.fromBits(c16 << 16 | c00, c48 << 16 | c32); - }; - Kotlin.Long.prototype.subtract = function (other) { - return this.add(other.negate()); - }; - Kotlin.Long.prototype.multiply = function (other) { - if (this.isZero()) { - return Kotlin.Long.ZERO; - } - else if (other.isZero()) { - return Kotlin.Long.ZERO; - } - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - return other.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO; - } - else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { - return this.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO; - } - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } - else { - return this.negate().multiply(other).negate(); - } - } - else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - if (this.lessThan(Kotlin.Long.TWO_PWR_24_) && other.lessThan(Kotlin.Long.TWO_PWR_24_)) { - return Kotlin.Long.fromNumber(this.toNumber() * other.toNumber()); - } - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 65535; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 65535; - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 65535; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 65535; - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 65535; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 65535; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 65535; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 65535; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 65535; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 65535; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 65535; - return Kotlin.Long.fromBits(c16 << 16 | c00, c48 << 16 | c32); - }; - Kotlin.Long.prototype.div = function (other) { - if (other.isZero()) { - throw Error('division by zero'); - } - else if (this.isZero()) { - return Kotlin.Long.ZERO; - } - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - if (other.equalsLong(Kotlin.Long.ONE) || other.equalsLong(Kotlin.Long.NEG_ONE)) { - return Kotlin.Long.MIN_VALUE; - } - else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { - return Kotlin.Long.ONE; - } - else { - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equalsLong(Kotlin.Long.ZERO)) { - return other.isNegative() ? Kotlin.Long.ONE : Kotlin.Long.NEG_ONE; - } - else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } - else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { - return Kotlin.Long.ZERO; - } - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } - else { - return this.negate().div(other).negate(); - } - } - else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - var res = Kotlin.Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48); - var approxRes = Kotlin.Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = Kotlin.Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - if (approxRes.isZero()) { - approxRes = Kotlin.Long.ONE; - } - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; - }; - Kotlin.Long.prototype.modulo = function (other) { - return this.subtract(this.div(other).multiply(other)); - }; - Kotlin.Long.prototype.not = function () { - return Kotlin.Long.fromBits(~this.low_, ~this.high_); - }; - Kotlin.Long.prototype.and = function (other) { - return Kotlin.Long.fromBits(this.low_ & other.low_, this.high_ & other.high_); - }; - Kotlin.Long.prototype.or = function (other) { - return Kotlin.Long.fromBits(this.low_ | other.low_, this.high_ | other.high_); - }; - Kotlin.Long.prototype.xor = function (other) { - return Kotlin.Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); - }; - Kotlin.Long.prototype.shiftLeft = function (numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } - else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return Kotlin.Long.fromBits(low << numBits, high << numBits | low >>> 32 - numBits); - } - else { - return Kotlin.Long.fromBits(0, low << numBits - 32); - } - } - }; - Kotlin.Long.prototype.shiftRight = function (numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } - else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Kotlin.Long.fromBits(low >>> numBits | high << 32 - numBits, high >> numBits); - } - else { - return Kotlin.Long.fromBits(high >> numBits - 32, high >= 0 ? 0 : -1); - } - } - }; - Kotlin.Long.prototype.shiftRightUnsigned = function (numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } - else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Kotlin.Long.fromBits(low >>> numBits | high << 32 - numBits, high >>> numBits); - } - else if (numBits == 32) { - return Kotlin.Long.fromBits(high, 0); - } - else { - return Kotlin.Long.fromBits(high >>> numBits - 32, 0); - } - } - }; - Kotlin.Long.prototype.equals = function (other) { - return other instanceof Kotlin.Long && this.equalsLong(other); - }; - Kotlin.Long.prototype.compareTo_11rb$ = Kotlin.Long.prototype.compare; - Kotlin.Long.prototype.inc = function () { - return this.add(Kotlin.Long.ONE); - }; - Kotlin.Long.prototype.dec = function () { - return this.add(Kotlin.Long.NEG_ONE); - }; - Kotlin.Long.prototype.valueOf = function () { - return this.toNumber(); - }; - Kotlin.Long.prototype.unaryPlus = function () { - return this; - }; - Kotlin.Long.prototype.unaryMinus = Kotlin.Long.prototype.negate; - Kotlin.Long.prototype.inv = Kotlin.Long.prototype.not; - Kotlin.Long.prototype.rangeTo = function (other) { - return new Kotlin.kotlin.ranges.LongRange(this, other); - }; - Kotlin.defineModule = function (id, declaration) { - }; - Kotlin.defineInlineFunction = function (tag, fun) { - return fun; - }; - Kotlin.wrapFunction = function (fun) { - var f = function () { - f = fun(); - return f.apply(this, arguments); - }; - return function () { - return f.apply(this, arguments); - }; - }; - Kotlin.isTypeOf = function (type) { - return function (object) { - return typeof object === type; - }; - }; - Kotlin.isInstanceOf = function (klass) { - return function (object) { - return Kotlin.isType(object, klass); - }; - }; - Kotlin.orNull = function (fn) { - return function (object) { - return object == null || fn(object); - }; - }; - Kotlin.andPredicate = function (a, b) { - return function (object) { - return a(object) && b(object); - }; - }; - Kotlin.kotlinModuleMetadata = function (abiVersion, moduleName, data) { - }; - Kotlin.suspendCall = function (value) { - return value; - }; - Kotlin.coroutineResult = function (qualifier) { - throwMarkerError(); - }; - Kotlin.coroutineController = function (qualifier) { - throwMarkerError(); - }; - Kotlin.coroutineReceiver = function (qualifier) { - throwMarkerError(); - }; - Kotlin.setCoroutineResult = function (value, qualifier) { - throwMarkerError(); - }; - function throwMarkerError() { - throw new Error('This marker function should never been called. ' + 'Looks like compiler did not eliminate it properly. ' + 'Please, report an issue if you caught this exception.'); - } - Kotlin.getFunctionById = function (id, defaultValue) { - return function () { - return defaultValue; - }; - }; - Kotlin.compareTo = function (a, b) { - var typeA = typeof a; - if (typeA === 'number') { - if (typeof b === 'number') { - return Kotlin.doubleCompareTo(a, b); - } - return Kotlin.primitiveCompareTo(a, b); - } - if (typeA === 'string' || typeA === 'boolean') { - return Kotlin.primitiveCompareTo(a, b); - } - return a.compareTo_11rb$(b); - }; - Kotlin.primitiveCompareTo = function (a, b) { - return a < b ? -1 : a > b ? 1 : 0; - }; - Kotlin.doubleCompareTo = function (a, b) { - if (a < b) - return -1; - if (a > b) - return 1; - if (a === b) { - if (a !== 0) - return 0; - var ia = 1 / a; - return ia === 1 / b ? 0 : ia < 0 ? -1 : 1; - } - return a !== a ? b !== b ? 0 : 1 : -1; - }; - Kotlin.charInc = function (value) { - return Kotlin.toChar(value + 1); - }; - Kotlin.charDec = function (value) { - return Kotlin.toChar(value - 1); - }; - Kotlin.imul = Math.imul || imul; - Kotlin.imulEmulated = imul; - function imul(a, b) { - return (a & 4.29490176E9) * (b & 65535) + (a & 65535) * (b | 0) | 0; - } - (function () { - var buf = new ArrayBuffer(8); - var bufFloat64 = new Float64Array(buf); - var bufFloat32 = new Float32Array(buf); - var bufInt32 = new Int32Array(buf); - var lowIndex = 0; - var highIndex = 1; - bufFloat64[0] = -1; - if (bufInt32[lowIndex] !== 0) { - lowIndex = 1; - highIndex = 0; - } - Kotlin.doubleToBits = function (value) { - return Kotlin.doubleToRawBits(isNaN(value) ? NaN : value); - }; - Kotlin.doubleToRawBits = function (value) { - bufFloat64[0] = value; - return Kotlin.Long.fromBits(bufInt32[lowIndex], bufInt32[highIndex]); - }; - Kotlin.doubleFromBits = function (value) { - bufInt32[lowIndex] = value.low_; - bufInt32[highIndex] = value.high_; - return bufFloat64[0]; - }; - Kotlin.floatToBits = function (value) { - return Kotlin.floatToRawBits(isNaN(value) ? NaN : value); - }; - Kotlin.floatToRawBits = function (value) { - bufFloat32[0] = value; - return bufInt32[0]; - }; - Kotlin.floatFromBits = function (value) { - bufInt32[0] = value; - return bufFloat32[0]; - }; - Kotlin.doubleSignBit = function (value) { - bufFloat64[0] = value; - return bufInt32[highIndex] & 2.147483648E9; - }; - Kotlin.numberHashCode = function (obj) { - if ((obj | 0) === obj) { - return obj | 0; - } - else { - bufFloat64[0] = obj; - return (bufInt32[highIndex] * 31 | 0) + bufInt32[lowIndex] | 0; - } - }; - }()); - Kotlin.ensureNotNull = function (x) { - return x != null ? x : Kotlin.throwNPE(); - }; - if (typeof String.prototype.startsWith === 'undefined') { - String.prototype.startsWith = function (searchString, position) { - position = position || 0; - return this.lastIndexOf(searchString, position) === position; - }; - } - if (typeof String.prototype.endsWith === 'undefined') { - String.prototype.endsWith = function (searchString, position) { - var subjectString = this.toString(); - if (position === undefined || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - } - if (typeof Math.sign === 'undefined') { - Math.sign = function (x) { - x = +x; - if (x === 0 || isNaN(x)) { - return Number(x); - } - return x > 0 ? 1 : -1; - }; - } - if (typeof Math.trunc === 'undefined') { - Math.trunc = function (x) { - if (isNaN(x)) { - return NaN; - } - if (x > 0) { - return Math.floor(x); - } - return Math.ceil(x); - }; - } - (function () { - var epsilon = 2.220446049250313E-16; - var taylor_2_bound = Math.sqrt(epsilon); - var taylor_n_bound = Math.sqrt(taylor_2_bound); - var upper_taylor_2_bound = 1 / taylor_2_bound; - var upper_taylor_n_bound = 1 / taylor_n_bound; - if (typeof Math.sinh === 'undefined') { - Math.sinh = function (x) { - if (Math.abs(x) < taylor_n_bound) { - var result = x; - if (Math.abs(x) > taylor_2_bound) { - result += x * x * x / 6; - } - return result; - } - else { - var y = Math.exp(x); - var y1 = 1 / y; - if (!isFinite(y)) - return Math.exp(x - Math.LN2); - if (!isFinite(y1)) - return -Math.exp(-x - Math.LN2); - return (y - y1) / 2; - } - }; - } - if (typeof Math.cosh === 'undefined') { - Math.cosh = function (x) { - var y = Math.exp(x); - var y1 = 1 / y; - if (!isFinite(y) || !isFinite(y1)) - return Math.exp(Math.abs(x) - Math.LN2); - return (y + y1) / 2; - }; - } - if (typeof Math.tanh === 'undefined') { - Math.tanh = function (x) { - if (Math.abs(x) < taylor_n_bound) { - var result = x; - if (Math.abs(x) > taylor_2_bound) { - result -= x * x * x / 3; - } - return result; - } - else { - var a = Math.exp(+x), b = Math.exp(-x); - return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (a + b); - } - }; - } - if (typeof Math.asinh === 'undefined') { - var asinh = function (x) { - if (x >= +taylor_n_bound) { - if (x > upper_taylor_n_bound) { - if (x > upper_taylor_2_bound) { - return Math.log(x) + Math.LN2; - } - else { - return Math.log(x * 2 + 1 / (x * 2)); - } - } - else { - return Math.log(x + Math.sqrt(x * x + 1)); - } - } - else if (x <= -taylor_n_bound) { - return -asinh(-x); - } - else { - var result = x; - if (Math.abs(x) >= taylor_2_bound) { - var x3 = x * x * x; - result -= x3 / 6; - } - return result; - } - }; - Math.asinh = asinh; - } - if (typeof Math.acosh === 'undefined') { - Math.acosh = function (x) { - if (x < 1) { - return NaN; - } - else if (x - 1 >= taylor_n_bound) { - if (x > upper_taylor_2_bound) { - return Math.log(x) + Math.LN2; - } - else { - return Math.log(x + Math.sqrt(x * x - 1)); - } - } - else { - var y = Math.sqrt(x - 1); - var result = y; - if (y >= taylor_2_bound) { - var y3 = y * y * y; - result -= y3 / 12; - } - return Math.sqrt(2) * result; - } - }; - } - if (typeof Math.atanh === 'undefined') { - Math.atanh = function (x) { - if (Math.abs(x) < taylor_n_bound) { - var result = x; - if (Math.abs(x) > taylor_2_bound) { - result += x * x * x / 3; - } - return result; - } - return Math.log((1 + x) / (1 - x)) / 2; - }; - } - if (typeof Math.log1p === 'undefined') { - Math.log1p = function (x) { - if (Math.abs(x) < taylor_n_bound) { - var x2 = x * x; - var x3 = x2 * x; - var x4 = x3 * x; - return -x4 / 4 + x3 / 3 - x2 / 2 + x; - } - return Math.log(x + 1); - }; - } - if (typeof Math.expm1 === 'undefined') { - Math.expm1 = function (x) { - if (Math.abs(x) < taylor_n_bound) { - var x2 = x * x; - var x3 = x2 * x; - var x4 = x3 * x; - return x4 / 24 + x3 / 6 + x2 / 2 + x; - } - return Math.exp(x) - 1; - }; - } - }()); - if (typeof Math.hypot === 'undefined') { - Math.hypot = function () { - var y = 0; - var length = arguments.length; - for (var i = 0; i < length; i++) { - if (arguments[i] === Infinity || arguments[i] === -Infinity) { - return Infinity; - } - y += arguments[i] * arguments[i]; - } - return Math.sqrt(y); - }; - } - if (typeof Math.log10 === 'undefined') { - Math.log10 = function (x) { - return Math.log(x) * Math.LOG10E; - }; - } - if (typeof Math.log2 === 'undefined') { - Math.log2 = function (x) { - return Math.log(x) * Math.LOG2E; - }; - } - if (typeof ArrayBuffer.isView === 'undefined') { - ArrayBuffer.isView = function (a) { - return a != null && a.__proto__ != null && a.__proto__.__proto__ === Int8Array.prototype.__proto__; - }; - } - (function () { - function normalizeOffset(offset, length) { - if (offset < 0) - return Math.max(0, offset + length); - return Math.min(offset, length); - } - function typedArraySlice(begin, end) { - if (typeof end === 'undefined') { - end = this.length; - } - begin = normalizeOffset(begin || 0, this.length); - end = Math.max(begin, normalizeOffset(end, this.length)); - return new this.constructor(this.subarray(begin, end)); - } - var arrays = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array]; - for (var i = 0; i < arrays.length; ++i) { - var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.slice === 'undefined') { - Object.defineProperty(TypedArray.prototype, 'slice', {value: typedArraySlice}); - } - } - try { - (function () { - }.apply(null, new Int32Array(0))); - } - catch (e) { - var apply = Function.prototype.apply; - Object.defineProperty(Function.prototype, 'apply', {value: function (self, array) { - return apply.call(this, self, [].slice.call(array)); - }}); - } - for (var i = 0; i < arrays.length; ++i) { - var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.map === 'undefined') { - Object.defineProperty(TypedArray.prototype, 'map', {value: function (callback, self) { - return [].slice.call(this).map(callback, self); - }}); - } - } - var totalOrderComparator = function (a, b) { - if (a < b) - return -1; - if (a > b) - return 1; - if (a === b) { - if (a !== 0) - return 0; - var ia = 1 / a; - return ia === 1 / b ? 0 : ia < 0 ? -1 : 1; - } - return a !== a ? b !== b ? 0 : 1 : -1; - }; - for (var i = 0; i < arrays.length; ++i) { - var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.sort === 'undefined') { - Object.defineProperty(TypedArray.prototype, 'sort', {value: function (compareFunction) { - return Array.prototype.sort.call(this, compareFunction || totalOrderComparator); - }}); - } - } - }()); - Kotlin.Kind = {CLASS: 'class', INTERFACE: 'interface', OBJECT: 'object'}; - Kotlin.callGetter = function (thisObject, klass, propertyName) { - var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName); - if (propertyDescriptor != null && propertyDescriptor.get != null) { - return propertyDescriptor.get.call(thisObject); - } - propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); - if (propertyDescriptor != null && 'value' in propertyDescriptor) { - return thisObject[propertyName]; - } - return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName); - }; - Kotlin.callSetter = function (thisObject, klass, propertyName, value) { - var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName); - if (propertyDescriptor != null && propertyDescriptor.set != null) { - propertyDescriptor.set.call(thisObject, value); - return; - } - propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); - if (propertyDescriptor != null && 'value' in propertyDescriptor) { - thisObject[propertyName] = value; - return; - } - Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value); - }; - function isInheritanceFromInterface(ctor, iface) { - if (ctor === iface) - return true; - var metadata = ctor.$metadata$; - if (metadata != null) { - var interfaces = metadata.interfaces; - for (var i = 0; i < interfaces.length; i++) { - if (isInheritanceFromInterface(interfaces[i], iface)) { - return true; - } - } - } - var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null; - var superConstructor = superPrototype != null ? superPrototype.constructor : null; - return superConstructor != null && isInheritanceFromInterface(superConstructor, iface); - } - Kotlin.isType = function (object, klass) { - if (klass === Object) { - switch (typeof object) { - case 'string': - case 'number': - case 'boolean': - case 'function': - return true; - default:return object instanceof Object; - } - } - if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) { - return false; - } - if (typeof klass === 'function' && object instanceof klass) { - return true; - } - var proto = Object.getPrototypeOf(klass); - var constructor = proto != null ? proto.constructor : null; - if (constructor != null && '$metadata$' in constructor) { - var metadata = constructor.$metadata$; - if (metadata.kind === Kotlin.Kind.OBJECT) { - return object === klass; - } - } - var klassMetadata = klass.$metadata$; - if (klassMetadata == null) { - return object instanceof klass; - } - if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) { - return isInheritanceFromInterface(object.constructor, klass); - } - return false; - }; - Kotlin.isNumber = function (a) { - return typeof a == 'number' || a instanceof Kotlin.Long; - }; - Kotlin.isChar = function (value) { - return value instanceof Kotlin.BoxedChar; - }; - Kotlin.isComparable = function (value) { - var type = typeof value; - return type === 'string' || type === 'boolean' || Kotlin.isNumber(value) || Kotlin.isType(value, Kotlin.kotlin.Comparable); - }; - Kotlin.isCharSequence = function (value) { - return typeof value === 'string' || Kotlin.isType(value, Kotlin.kotlin.CharSequence); - }; - (function() { - 'use strict'; - var Kind_INTERFACE = Kotlin.Kind.INTERFACE; - var Kind_OBJECT = Kotlin.Kind.OBJECT; - var Kind_CLASS = Kotlin.Kind.CLASS; - var defineInlineFunction = Kotlin.defineInlineFunction; - var wrapFunction = Kotlin.wrapFunction; - var equals = Kotlin.equals; - var L0 = Kotlin.Long.ZERO; - function Comparable() { - } - Comparable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Comparable', interfaces: []}; - function Enum() { - Enum$Companion_getInstance(); - this.name$ = ''; - this.ordinal$ = 0; - } - Object.defineProperty(Enum.prototype, 'name', {get: function () { - return this.name$; - }}); - Object.defineProperty(Enum.prototype, 'ordinal', {get: function () { - return this.ordinal$; - }}); - Enum.prototype.compareTo_11rb$ = function (other) { - return Kotlin.primitiveCompareTo(this.ordinal, other.ordinal); - }; - Enum.prototype.equals = function (other) { - return this === other; - }; - Enum.prototype.hashCode = function () { - return Kotlin.identityHashCode(this); - }; - Enum.prototype.toString = function () { - return this.name; - }; - function Enum$Companion() { - Enum$Companion_instance = this; - } - Enum$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var Enum$Companion_instance = null; - function Enum$Companion_getInstance() { - if (Enum$Companion_instance === null) { - new Enum$Companion(); - } - return Enum$Companion_instance; - } - Enum.$metadata$ = {kind: Kind_CLASS, simpleName: 'Enum', interfaces: [Comparable]}; - function newArray(size, initValue) { - return fillArrayVal(Array(size), initValue); - } - var arrayWithFun = defineInlineFunction('kotlin.newArrayF', wrapFunction(function () { - var Array_0 = Array; - return function (size, init) { - var array = Array_0(size); - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - array[i] = init(i); - } - return array; - }; - })); - var fillArrayFun = defineInlineFunction('kotlin.fillArray', function (array, init) { - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - array[i] = init(i); - } - return array; - }); - function booleanArray(size, init) { - var tmp$; - var result = Array(size); - result.$type$ = 'BooleanArray'; - if (init == null || equals(init, true)) - tmp$ = fillArrayVal(result, false); - else if (equals(init, false)) - tmp$ = result; - else { - var tmp$_0; - tmp$_0 = result.length - 1 | 0; - for (var i = 0; i <= tmp$_0; i++) { - result[i] = init(i); - } - tmp$ = result; - } - return tmp$; - } - var booleanArrayWithFun = defineInlineFunction('kotlin.booleanArrayF', wrapFunction(function () { - var booleanArray = _.booleanArray; - return function (size, init) { - var array = booleanArray(size, false); - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - array[i] = init(i); - } - return array; - }; - })); - function charArray(size, init) { - var tmp$; - var result = new Uint16Array(size); - result.$type$ = 'CharArray'; - if (init == null || equals(init, true) || equals(init, false)) - tmp$ = result; - else { - var tmp$_0; - tmp$_0 = result.length - 1 | 0; - for (var i = 0; i <= tmp$_0; i++) { - result[i] = init(i); - } - tmp$ = result; - } - return tmp$; - } - var charArrayWithFun = defineInlineFunction('kotlin.charArrayF', wrapFunction(function () { - var charArray = _.charArray; - var unboxChar = Kotlin.unboxChar; - return function (size, init) { - var tmp$; - var array = charArray(size, null); - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - var value = unboxChar(init(i)); - array[i] = value; - } - return array; - }; - })); - var untypedCharArrayWithFun = defineInlineFunction('kotlin.untypedCharArrayF', wrapFunction(function () { - var Array_0 = Array; - var unboxChar = Kotlin.unboxChar; - return function (size, init) { - var tmp$; - var array = Array_0(size); - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - var value = unboxChar(init(i)); - array[i] = value; - } - return array; - }; - })); - function longArray(size, init) { - var tmp$; - var result = Array(size); - result.$type$ = 'LongArray'; - if (init == null || equals(init, true)) - tmp$ = fillArrayVal(result, L0); - else if (equals(init, false)) - tmp$ = result; - else { - var tmp$_0; - tmp$_0 = result.length - 1 | 0; - for (var i = 0; i <= tmp$_0; i++) { - result[i] = init(i); - } - tmp$ = result; - } - return tmp$; - } - var longArrayWithFun = defineInlineFunction('kotlin.longArrayF', wrapFunction(function () { - var longArray = _.longArray; - return function (size, init) { - var array = longArray(size, false); - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - array[i] = init(i); - } - return array; - }; - })); - function fillArrayVal(array, initValue) { - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - array[i] = initValue; - } - return array; - } - function DoubleCompanionObject() { - DoubleCompanionObject_instance = this; - this.MIN_VALUE = Number.MIN_VALUE; - this.MAX_VALUE = Number.MAX_VALUE; - this.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; - this.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; - this.NaN = Number.NaN; - } - DoubleCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'DoubleCompanionObject', interfaces: []}; - var DoubleCompanionObject_instance = null; - function DoubleCompanionObject_getInstance() { - if (DoubleCompanionObject_instance === null) { - new DoubleCompanionObject(); - } - return DoubleCompanionObject_instance; - } - function FloatCompanionObject() { - FloatCompanionObject_instance = this; - this.MIN_VALUE = Number.MIN_VALUE; - this.MAX_VALUE = Number.MAX_VALUE; - this.POSITIVE_INFINITY = Number.POSITIVE_INFINITY; - this.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY; - this.NaN = Number.NaN; - } - FloatCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'FloatCompanionObject', interfaces: []}; - var FloatCompanionObject_instance = null; - function FloatCompanionObject_getInstance() { - if (FloatCompanionObject_instance === null) { - new FloatCompanionObject(); - } - return FloatCompanionObject_instance; - } - function IntCompanionObject() { - IntCompanionObject_instance = this; - this.MIN_VALUE = -2147483648; - this.MAX_VALUE = 2147483647; - this.SIZE_BYTES = 4; - this.SIZE_BITS = 32; - } - IntCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'IntCompanionObject', interfaces: []}; - var IntCompanionObject_instance = null; - function IntCompanionObject_getInstance() { - if (IntCompanionObject_instance === null) { - new IntCompanionObject(); - } - return IntCompanionObject_instance; - } - function LongCompanionObject() { - LongCompanionObject_instance = this; - this.MIN_VALUE = Kotlin.Long.MIN_VALUE; - this.MAX_VALUE = Kotlin.Long.MAX_VALUE; - this.SIZE_BYTES = 8; - this.SIZE_BITS = 64; - } - LongCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'LongCompanionObject', interfaces: []}; - var LongCompanionObject_instance = null; - function LongCompanionObject_getInstance() { - if (LongCompanionObject_instance === null) { - new LongCompanionObject(); - } - return LongCompanionObject_instance; - } - function ShortCompanionObject() { - ShortCompanionObject_instance = this; - this.MIN_VALUE = -32768 | 0; - this.MAX_VALUE = 32767; - this.SIZE_BYTES = 2; - this.SIZE_BITS = 16; - } - ShortCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'ShortCompanionObject', interfaces: []}; - var ShortCompanionObject_instance = null; - function ShortCompanionObject_getInstance() { - if (ShortCompanionObject_instance === null) { - new ShortCompanionObject(); - } - return ShortCompanionObject_instance; - } - function ByteCompanionObject() { - ByteCompanionObject_instance = this; - this.MIN_VALUE = -128 | 0; - this.MAX_VALUE = 127; - this.SIZE_BYTES = 1; - this.SIZE_BITS = 8; - } - ByteCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'ByteCompanionObject', interfaces: []}; - var ByteCompanionObject_instance = null; - function ByteCompanionObject_getInstance() { - if (ByteCompanionObject_instance === null) { - new ByteCompanionObject(); - } - return ByteCompanionObject_instance; - } - function CharCompanionObject() { - CharCompanionObject_instance = this; - this.MIN_VALUE = 0; - this.MAX_VALUE = 65535; - this.MIN_HIGH_SURROGATE = 55296; - this.MAX_HIGH_SURROGATE = 56319; - this.MIN_LOW_SURROGATE = 56320; - this.MAX_LOW_SURROGATE = 57343; - this.MIN_SURROGATE = this.MIN_HIGH_SURROGATE; - this.MAX_SURROGATE = this.MAX_LOW_SURROGATE; - this.SIZE_BYTES = 2; - this.SIZE_BITS = 16; - } - CharCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'CharCompanionObject', interfaces: []}; - var CharCompanionObject_instance = null; - function CharCompanionObject_getInstance() { - if (CharCompanionObject_instance === null) { - new CharCompanionObject(); - } - return CharCompanionObject_instance; - } - function StringCompanionObject() { - StringCompanionObject_instance = this; - } - StringCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'StringCompanionObject', interfaces: []}; - var StringCompanionObject_instance = null; - function StringCompanionObject_getInstance() { - if (StringCompanionObject_instance === null) { - new StringCompanionObject(); - } - return StringCompanionObject_instance; - } - function BooleanCompanionObject() { - BooleanCompanionObject_instance = this; - } - BooleanCompanionObject.$metadata$ = {kind: Kind_OBJECT, simpleName: 'BooleanCompanionObject', interfaces: []}; - var BooleanCompanionObject_instance = null; - function BooleanCompanionObject_getInstance() { - if (BooleanCompanionObject_instance === null) { - new BooleanCompanionObject(); - } - return BooleanCompanionObject_instance; - } - var package$kotlin = _.kotlin || (_.kotlin = {}); - package$kotlin.Comparable = Comparable; - Object.defineProperty(Enum, 'Companion', {get: Enum$Companion_getInstance}); - package$kotlin.Enum = Enum; - _.newArray = newArray; - _.fillArray = fillArrayFun; - _.newArrayF = arrayWithFun; - _.booleanArray = booleanArray; - _.booleanArrayF = booleanArrayWithFun; - _.charArray = charArray; - _.charArrayF = charArrayWithFun; - _.untypedCharArrayF = untypedCharArrayWithFun; - _.longArray = longArray; - _.longArrayF = longArrayWithFun; - var package$js = package$kotlin.js || (package$kotlin.js = {}); - var package$internal = package$js.internal || (package$js.internal = {}); - Object.defineProperty(package$internal, 'DoubleCompanionObject', {get: DoubleCompanionObject_getInstance}); - Object.defineProperty(package$internal, 'FloatCompanionObject', {get: FloatCompanionObject_getInstance}); - Object.defineProperty(package$internal, 'IntCompanionObject', {get: IntCompanionObject_getInstance}); - Object.defineProperty(package$internal, 'LongCompanionObject', {get: LongCompanionObject_getInstance}); - Object.defineProperty(package$internal, 'ShortCompanionObject', {get: ShortCompanionObject_getInstance}); - Object.defineProperty(package$internal, 'ByteCompanionObject', {get: ByteCompanionObject_getInstance}); - Object.defineProperty(package$internal, 'CharCompanionObject', {get: CharCompanionObject_getInstance}); - Kotlin.defineModule('kotlin', _); - - }()); - (function() { - 'use strict'; - var defineInlineFunction = Kotlin.defineInlineFunction; - var wrapFunction = Kotlin.wrapFunction; - var equals = Kotlin.equals; - var Any = Object; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - var sort = Kotlin.primitiveArraySort; - var kotlin_js_internal_DoubleCompanionObject = Kotlin.kotlin.js.internal.DoubleCompanionObject; - var L0 = Kotlin.Long.ZERO; - var toChar = Kotlin.toChar; - var L_1 = Kotlin.Long.NEG_ONE; - var toByte = Kotlin.toByte; - var L_128 = Kotlin.Long.fromInt(-128); - var L127 = Kotlin.Long.fromInt(127); - var kotlin_js_internal_ByteCompanionObject = Kotlin.kotlin.js.internal.ByteCompanionObject; - var numberToInt = Kotlin.numberToInt; - var L_2147483648 = Kotlin.Long.fromInt(-2147483648); - var L2147483647 = Kotlin.Long.fromInt(2147483647); - var Long$Companion$MIN_VALUE = Kotlin.Long.MIN_VALUE; - var Long$Companion$MAX_VALUE = Kotlin.Long.MAX_VALUE; - var toShort = Kotlin.toShort; - var L_32768 = Kotlin.Long.fromInt(-32768); - var L32767 = Kotlin.Long.fromInt(32767); - var kotlin_js_internal_ShortCompanionObject = Kotlin.kotlin.js.internal.ShortCompanionObject; - var toString = Kotlin.toString; - var Kind_CLASS = Kotlin.Kind.CLASS; - var contentEquals = Kotlin.arrayEquals; - var contentHashCode = Kotlin.arrayHashCode; - var Kind_INTERFACE = Kotlin.Kind.INTERFACE; - var Kind_OBJECT = Kotlin.Kind.OBJECT; - var L1 = Kotlin.Long.ONE; - var Enum = Kotlin.kotlin.Enum; - var Comparable = Kotlin.kotlin.Comparable; - var kotlin_js_internal_CharCompanionObject = Kotlin.kotlin.js.internal.CharCompanionObject; - var ensureNotNull = Kotlin.ensureNotNull; - var arrayToString = Kotlin.arrayToString; - var hashCode = Kotlin.hashCode; - var Throwable = Error; - var toRawBits = Kotlin.doubleToRawBits; - var kotlin_js_internal_FloatCompanionObject = Kotlin.kotlin.js.internal.FloatCompanionObject; - var contentDeepEquals = Kotlin.arrayDeepEquals; - var L_7390468764508069838 = new Kotlin.Long(-1478467534, -1720727600); - var L8246714829545688274 = new Kotlin.Long(-888910638, 1920087921); - var L3406603774387020532 = new Kotlin.Long(1993859828, 793161749); - var DeprecationLevel = Kotlin.kotlin.DeprecationLevel; - var L4294967295 = new Kotlin.Long(-1, 0); - var L_9223372036854775807 = new Kotlin.Long(1, -2147483648); - CharProgressionIterator.prototype = Object.create(CharIterator.prototype); - CharProgressionIterator.prototype.constructor = CharProgressionIterator; - IntProgressionIterator.prototype = Object.create(IntIterator.prototype); - IntProgressionIterator.prototype.constructor = IntProgressionIterator; - LongProgressionIterator.prototype = Object.create(LongIterator.prototype); - LongProgressionIterator.prototype.constructor = LongProgressionIterator; - CharRange.prototype = Object.create(CharProgression.prototype); - CharRange.prototype.constructor = CharRange; - IntRange.prototype = Object.create(IntProgression.prototype); - IntRange.prototype.constructor = IntRange; - LongRange.prototype = Object.create(LongProgression.prototype); - LongRange.prototype.constructor = LongRange; - AnnotationTarget.prototype = Object.create(Enum.prototype); - AnnotationTarget.prototype.constructor = AnnotationTarget; - AnnotationRetention.prototype = Object.create(Enum.prototype); - AnnotationRetention.prototype.constructor = AnnotationRetention; - KParameter$Kind.prototype = Object.create(Enum.prototype); - KParameter$Kind.prototype.constructor = KParameter$Kind; - KVariance.prototype = Object.create(Enum.prototype); - KVariance.prototype.constructor = KVariance; - KVisibility.prototype = Object.create(Enum.prototype); - KVisibility.prototype.constructor = KVisibility; - AbstractList.prototype = Object.create(AbstractCollection.prototype); - AbstractList.prototype.constructor = AbstractList; - asList$ObjectLiteral.prototype = Object.create(AbstractList.prototype); - asList$ObjectLiteral.prototype.constructor = asList$ObjectLiteral; - booleanArrayIterator$ObjectLiteral.prototype = Object.create(BooleanIterator.prototype); - booleanArrayIterator$ObjectLiteral.prototype.constructor = booleanArrayIterator$ObjectLiteral; - byteArrayIterator$ObjectLiteral.prototype = Object.create(ByteIterator.prototype); - byteArrayIterator$ObjectLiteral.prototype.constructor = byteArrayIterator$ObjectLiteral; - shortArrayIterator$ObjectLiteral.prototype = Object.create(ShortIterator.prototype); - shortArrayIterator$ObjectLiteral.prototype.constructor = shortArrayIterator$ObjectLiteral; - charArrayIterator$ObjectLiteral.prototype = Object.create(CharIterator.prototype); - charArrayIterator$ObjectLiteral.prototype.constructor = charArrayIterator$ObjectLiteral; - intArrayIterator$ObjectLiteral.prototype = Object.create(IntIterator.prototype); - intArrayIterator$ObjectLiteral.prototype.constructor = intArrayIterator$ObjectLiteral; - floatArrayIterator$ObjectLiteral.prototype = Object.create(FloatIterator.prototype); - floatArrayIterator$ObjectLiteral.prototype.constructor = floatArrayIterator$ObjectLiteral; - doubleArrayIterator$ObjectLiteral.prototype = Object.create(DoubleIterator.prototype); - doubleArrayIterator$ObjectLiteral.prototype.constructor = doubleArrayIterator$ObjectLiteral; - longArrayIterator$ObjectLiteral.prototype = Object.create(LongIterator.prototype); - longArrayIterator$ObjectLiteral.prototype.constructor = longArrayIterator$ObjectLiteral; - AbstractMutableCollection.prototype = Object.create(AbstractCollection.prototype); - AbstractMutableCollection.prototype.constructor = AbstractMutableCollection; - AbstractMutableList$ListIteratorImpl.prototype = Object.create(AbstractMutableList$IteratorImpl.prototype); - AbstractMutableList$ListIteratorImpl.prototype.constructor = AbstractMutableList$ListIteratorImpl; - AbstractMutableList.prototype = Object.create(AbstractMutableCollection.prototype); - AbstractMutableList.prototype.constructor = AbstractMutableList; - AbstractMutableList$SubList.prototype = Object.create(AbstractMutableList.prototype); - AbstractMutableList$SubList.prototype.constructor = AbstractMutableList$SubList; - AbstractMutableSet.prototype = Object.create(AbstractMutableCollection.prototype); - AbstractMutableSet.prototype.constructor = AbstractMutableSet; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype = Object.create(AbstractMutableSet.prototype); - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype.constructor = AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype = Object.create(AbstractMutableCollection.prototype); - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.constructor = AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral; - AbstractMutableMap.prototype = Object.create(AbstractMap.prototype); - AbstractMutableMap.prototype.constructor = AbstractMutableMap; - ArrayList.prototype = Object.create(AbstractMutableList.prototype); - ArrayList.prototype.constructor = ArrayList; - HashMap$EntrySet.prototype = Object.create(AbstractMutableSet.prototype); - HashMap$EntrySet.prototype.constructor = HashMap$EntrySet; - HashMap.prototype = Object.create(AbstractMutableMap.prototype); - HashMap.prototype.constructor = HashMap; - HashSet.prototype = Object.create(AbstractMutableSet.prototype); - HashSet.prototype.constructor = HashSet; - LinkedHashMap$ChainEntry.prototype = Object.create(AbstractMutableMap$SimpleEntry.prototype); - LinkedHashMap$ChainEntry.prototype.constructor = LinkedHashMap$ChainEntry; - LinkedHashMap$EntrySet.prototype = Object.create(AbstractMutableSet.prototype); - LinkedHashMap$EntrySet.prototype.constructor = LinkedHashMap$EntrySet; - LinkedHashMap.prototype = Object.create(HashMap.prototype); - LinkedHashMap.prototype.constructor = LinkedHashMap; - LinkedHashSet.prototype = Object.create(HashSet.prototype); - LinkedHashSet.prototype.constructor = LinkedHashSet; - NodeJsOutput.prototype = Object.create(BaseOutput.prototype); - NodeJsOutput.prototype.constructor = NodeJsOutput; - OutputToConsoleLog.prototype = Object.create(BaseOutput.prototype); - OutputToConsoleLog.prototype.constructor = OutputToConsoleLog; - BufferedOutput.prototype = Object.create(BaseOutput.prototype); - BufferedOutput.prototype.constructor = BufferedOutput; - BufferedOutputToConsoleLog.prototype = Object.create(BufferedOutput.prototype); - BufferedOutputToConsoleLog.prototype.constructor = BufferedOutputToConsoleLog; - asList$ObjectLiteral_0.prototype = Object.create(AbstractList.prototype); - asList$ObjectLiteral_0.prototype.constructor = asList$ObjectLiteral_0; - Error_0.prototype = Object.create(Throwable.prototype); - Error_0.prototype.constructor = Error_0; - Exception.prototype = Object.create(Throwable.prototype); - Exception.prototype.constructor = Exception; - RuntimeException.prototype = Object.create(Exception.prototype); - RuntimeException.prototype.constructor = RuntimeException; - IllegalArgumentException.prototype = Object.create(RuntimeException.prototype); - IllegalArgumentException.prototype.constructor = IllegalArgumentException; - IllegalStateException.prototype = Object.create(RuntimeException.prototype); - IllegalStateException.prototype.constructor = IllegalStateException; - IndexOutOfBoundsException.prototype = Object.create(RuntimeException.prototype); - IndexOutOfBoundsException.prototype.constructor = IndexOutOfBoundsException; - ConcurrentModificationException.prototype = Object.create(RuntimeException.prototype); - ConcurrentModificationException.prototype.constructor = ConcurrentModificationException; - UnsupportedOperationException.prototype = Object.create(RuntimeException.prototype); - UnsupportedOperationException.prototype.constructor = UnsupportedOperationException; - NumberFormatException.prototype = Object.create(IllegalArgumentException.prototype); - NumberFormatException.prototype.constructor = NumberFormatException; - NullPointerException.prototype = Object.create(RuntimeException.prototype); - NullPointerException.prototype.constructor = NullPointerException; - ClassCastException.prototype = Object.create(RuntimeException.prototype); - ClassCastException.prototype.constructor = ClassCastException; - AssertionError.prototype = Object.create(Error_0.prototype); - AssertionError.prototype.constructor = AssertionError; - NoSuchElementException.prototype = Object.create(RuntimeException.prototype); - NoSuchElementException.prototype.constructor = NoSuchElementException; - ArithmeticException.prototype = Object.create(RuntimeException.prototype); - ArithmeticException.prototype.constructor = ArithmeticException; - NoWhenBranchMatchedException.prototype = Object.create(RuntimeException.prototype); - NoWhenBranchMatchedException.prototype.constructor = NoWhenBranchMatchedException; - UninitializedPropertyAccessException.prototype = Object.create(RuntimeException.prototype); - UninitializedPropertyAccessException.prototype.constructor = UninitializedPropertyAccessException; - SimpleKClassImpl.prototype = Object.create(KClassImpl.prototype); - SimpleKClassImpl.prototype.constructor = SimpleKClassImpl; - PrimitiveKClassImpl.prototype = Object.create(KClassImpl.prototype); - PrimitiveKClassImpl.prototype.constructor = PrimitiveKClassImpl; - NothingKClassImpl.prototype = Object.create(KClassImpl.prototype); - NothingKClassImpl.prototype.constructor = NothingKClassImpl; - RegexOption.prototype = Object.create(Enum.prototype); - RegexOption.prototype.constructor = RegexOption; - findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.prototype = Object.create(AbstractList.prototype); - findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.prototype.constructor = findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral; - findNext$ObjectLiteral$groups$ObjectLiteral.prototype = Object.create(AbstractCollection.prototype); - findNext$ObjectLiteral$groups$ObjectLiteral.prototype.constructor = findNext$ObjectLiteral$groups$ObjectLiteral; - Experimental$Level.prototype = Object.create(Enum.prototype); - Experimental$Level.prototype.constructor = Experimental$Level; - State.prototype = Object.create(Enum.prototype); - State.prototype.constructor = State; - AbstractList$SubList.prototype = Object.create(AbstractList.prototype); - AbstractList$SubList.prototype.constructor = AbstractList$SubList; - AbstractList$ListIteratorImpl.prototype = Object.create(AbstractList$IteratorImpl.prototype); - AbstractList$ListIteratorImpl.prototype.constructor = AbstractList$ListIteratorImpl; - AbstractSet.prototype = Object.create(AbstractCollection.prototype); - AbstractSet.prototype.constructor = AbstractSet; - AbstractMap$get_AbstractMap$keys$ObjectLiteral.prototype = Object.create(AbstractSet.prototype); - AbstractMap$get_AbstractMap$keys$ObjectLiteral.prototype.constructor = AbstractMap$get_AbstractMap$keys$ObjectLiteral; - AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype = Object.create(AbstractCollection.prototype); - AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype.constructor = AbstractMap$get_AbstractMap$values$ObjectLiteral; - ReversedListReadOnly.prototype = Object.create(AbstractList.prototype); - ReversedListReadOnly.prototype.constructor = ReversedListReadOnly; - ReversedList.prototype = Object.create(AbstractMutableList.prototype); - ReversedList.prototype.constructor = ReversedList; - SequenceBuilderIterator.prototype = Object.create(SequenceScope.prototype); - SequenceBuilderIterator.prototype.constructor = SequenceBuilderIterator; - DistinctIterator.prototype = Object.create(AbstractIterator.prototype); - DistinctIterator.prototype.constructor = DistinctIterator; - MovingSubList.prototype = Object.create(AbstractList.prototype); - MovingSubList.prototype.constructor = MovingSubList; - RingBuffer$iterator$ObjectLiteral.prototype = Object.create(AbstractIterator.prototype); - RingBuffer$iterator$ObjectLiteral.prototype.constructor = RingBuffer$iterator$ObjectLiteral; - RingBuffer.prototype = Object.create(AbstractList.prototype); - RingBuffer.prototype.constructor = RingBuffer; - InvocationKind.prototype = Object.create(Enum.prototype); - InvocationKind.prototype.constructor = InvocationKind; - CoroutineSingletons.prototype = Object.create(Enum.prototype); - CoroutineSingletons.prototype.constructor = CoroutineSingletons; - RequireKotlinVersionKind.prototype = Object.create(Enum.prototype); - RequireKotlinVersionKind.prototype.constructor = RequireKotlinVersionKind; - Random$Default.prototype = Object.create(Random.prototype); - Random$Default.prototype.constructor = Random$Default; - Random$Companion.prototype = Object.create(Random.prototype); - Random$Companion.prototype.constructor = Random$Companion; - XorWowRandom.prototype = Object.create(Random.prototype); - XorWowRandom.prototype.constructor = XorWowRandom; - iterator$ObjectLiteral.prototype = Object.create(CharIterator.prototype); - iterator$ObjectLiteral.prototype.constructor = iterator$ObjectLiteral; - LazyThreadSafetyMode.prototype = Object.create(Enum.prototype); - LazyThreadSafetyMode.prototype.constructor = LazyThreadSafetyMode; - NotImplementedError.prototype = Object.create(Error_0.prototype); - NotImplementedError.prototype.constructor = NotImplementedError; - UByteArray$Iterator.prototype = Object.create(UByteIterator.prototype); - UByteArray$Iterator.prototype.constructor = UByteArray$Iterator; - UIntArray$Iterator.prototype = Object.create(UIntIterator.prototype); - UIntArray$Iterator.prototype.constructor = UIntArray$Iterator; - UIntRange.prototype = Object.create(UIntProgression.prototype); - UIntRange.prototype.constructor = UIntRange; - UIntProgressionIterator.prototype = Object.create(UIntIterator.prototype); - UIntProgressionIterator.prototype.constructor = UIntProgressionIterator; - ULongArray$Iterator.prototype = Object.create(ULongIterator.prototype); - ULongArray$Iterator.prototype.constructor = ULongArray$Iterator; - ULongRange_0.prototype = Object.create(ULongProgression.prototype); - ULongRange_0.prototype.constructor = ULongRange_0; - ULongProgressionIterator.prototype = Object.create(ULongIterator.prototype); - ULongProgressionIterator.prototype.constructor = ULongProgressionIterator; - UShortArray$Iterator.prototype = Object.create(UShortIterator.prototype); - UShortArray$Iterator.prototype.constructor = UShortArray$Iterator; - var component1 = defineInlineFunction('kotlin.kotlin.collections.component1_us0mfu$', function ($receiver) { - return $receiver[0]; - }); - var component1_0 = defineInlineFunction('kotlin.kotlin.collections.component1_964n91$', function ($receiver) { - return $receiver[0]; - }); - var component1_1 = defineInlineFunction('kotlin.kotlin.collections.component1_i2lc79$', function ($receiver) { - return $receiver[0]; - }); - var component1_2 = defineInlineFunction('kotlin.kotlin.collections.component1_tmsbgo$', function ($receiver) { - return $receiver[0]; - }); - var component1_3 = defineInlineFunction('kotlin.kotlin.collections.component1_se6h4x$', function ($receiver) { - return $receiver[0]; - }); - var component1_4 = defineInlineFunction('kotlin.kotlin.collections.component1_rjqryz$', function ($receiver) { - return $receiver[0]; - }); - var component1_5 = defineInlineFunction('kotlin.kotlin.collections.component1_bvy38s$', function ($receiver) { - return $receiver[0]; - }); - var component1_6 = defineInlineFunction('kotlin.kotlin.collections.component1_l1lu5t$', function ($receiver) { - return $receiver[0]; - }); - var component1_7 = defineInlineFunction('kotlin.kotlin.collections.component1_355ntz$', function ($receiver) { - return $receiver[0]; - }); - var component2 = defineInlineFunction('kotlin.kotlin.collections.component2_us0mfu$', function ($receiver) { - return $receiver[1]; - }); - var component2_0 = defineInlineFunction('kotlin.kotlin.collections.component2_964n91$', function ($receiver) { - return $receiver[1]; - }); - var component2_1 = defineInlineFunction('kotlin.kotlin.collections.component2_i2lc79$', function ($receiver) { - return $receiver[1]; - }); - var component2_2 = defineInlineFunction('kotlin.kotlin.collections.component2_tmsbgo$', function ($receiver) { - return $receiver[1]; - }); - var component2_3 = defineInlineFunction('kotlin.kotlin.collections.component2_se6h4x$', function ($receiver) { - return $receiver[1]; - }); - var component2_4 = defineInlineFunction('kotlin.kotlin.collections.component2_rjqryz$', function ($receiver) { - return $receiver[1]; - }); - var component2_5 = defineInlineFunction('kotlin.kotlin.collections.component2_bvy38s$', function ($receiver) { - return $receiver[1]; - }); - var component2_6 = defineInlineFunction('kotlin.kotlin.collections.component2_l1lu5t$', function ($receiver) { - return $receiver[1]; - }); - var component2_7 = defineInlineFunction('kotlin.kotlin.collections.component2_355ntz$', function ($receiver) { - return $receiver[1]; - }); - var component3 = defineInlineFunction('kotlin.kotlin.collections.component3_us0mfu$', function ($receiver) { - return $receiver[2]; - }); - var component3_0 = defineInlineFunction('kotlin.kotlin.collections.component3_964n91$', function ($receiver) { - return $receiver[2]; - }); - var component3_1 = defineInlineFunction('kotlin.kotlin.collections.component3_i2lc79$', function ($receiver) { - return $receiver[2]; - }); - var component3_2 = defineInlineFunction('kotlin.kotlin.collections.component3_tmsbgo$', function ($receiver) { - return $receiver[2]; - }); - var component3_3 = defineInlineFunction('kotlin.kotlin.collections.component3_se6h4x$', function ($receiver) { - return $receiver[2]; - }); - var component3_4 = defineInlineFunction('kotlin.kotlin.collections.component3_rjqryz$', function ($receiver) { - return $receiver[2]; - }); - var component3_5 = defineInlineFunction('kotlin.kotlin.collections.component3_bvy38s$', function ($receiver) { - return $receiver[2]; - }); - var component3_6 = defineInlineFunction('kotlin.kotlin.collections.component3_l1lu5t$', function ($receiver) { - return $receiver[2]; - }); - var component3_7 = defineInlineFunction('kotlin.kotlin.collections.component3_355ntz$', function ($receiver) { - return $receiver[2]; - }); - var component4 = defineInlineFunction('kotlin.kotlin.collections.component4_us0mfu$', function ($receiver) { - return $receiver[3]; - }); - var component4_0 = defineInlineFunction('kotlin.kotlin.collections.component4_964n91$', function ($receiver) { - return $receiver[3]; - }); - var component4_1 = defineInlineFunction('kotlin.kotlin.collections.component4_i2lc79$', function ($receiver) { - return $receiver[3]; - }); - var component4_2 = defineInlineFunction('kotlin.kotlin.collections.component4_tmsbgo$', function ($receiver) { - return $receiver[3]; - }); - var component4_3 = defineInlineFunction('kotlin.kotlin.collections.component4_se6h4x$', function ($receiver) { - return $receiver[3]; - }); - var component4_4 = defineInlineFunction('kotlin.kotlin.collections.component4_rjqryz$', function ($receiver) { - return $receiver[3]; - }); - var component4_5 = defineInlineFunction('kotlin.kotlin.collections.component4_bvy38s$', function ($receiver) { - return $receiver[3]; - }); - var component4_6 = defineInlineFunction('kotlin.kotlin.collections.component4_l1lu5t$', function ($receiver) { - return $receiver[3]; - }); - var component4_7 = defineInlineFunction('kotlin.kotlin.collections.component4_355ntz$', function ($receiver) { - return $receiver[3]; - }); - var component5 = defineInlineFunction('kotlin.kotlin.collections.component5_us0mfu$', function ($receiver) { - return $receiver[4]; - }); - var component5_0 = defineInlineFunction('kotlin.kotlin.collections.component5_964n91$', function ($receiver) { - return $receiver[4]; - }); - var component5_1 = defineInlineFunction('kotlin.kotlin.collections.component5_i2lc79$', function ($receiver) { - return $receiver[4]; - }); - var component5_2 = defineInlineFunction('kotlin.kotlin.collections.component5_tmsbgo$', function ($receiver) { - return $receiver[4]; - }); - var component5_3 = defineInlineFunction('kotlin.kotlin.collections.component5_se6h4x$', function ($receiver) { - return $receiver[4]; - }); - var component5_4 = defineInlineFunction('kotlin.kotlin.collections.component5_rjqryz$', function ($receiver) { - return $receiver[4]; - }); - var component5_5 = defineInlineFunction('kotlin.kotlin.collections.component5_bvy38s$', function ($receiver) { - return $receiver[4]; - }); - var component5_6 = defineInlineFunction('kotlin.kotlin.collections.component5_l1lu5t$', function ($receiver) { - return $receiver[4]; - }); - var component5_7 = defineInlineFunction('kotlin.kotlin.collections.component5_355ntz$', function ($receiver) { - return $receiver[4]; - }); - function contains($receiver, element) { - return indexOf($receiver, element) >= 0; - } - function contains_0($receiver, element) { - return indexOf_0($receiver, element) >= 0; - } - function contains_1($receiver, element) { - return indexOf_1($receiver, element) >= 0; - } - function contains_2($receiver, element) { - return indexOf_2($receiver, element) >= 0; - } - function contains_3($receiver, element) { - return indexOf_3($receiver, element) >= 0; - } - function contains_4($receiver, element) { - return indexOf_4($receiver, element) >= 0; - } - function contains_5($receiver, element) { - return indexOf_5($receiver, element) >= 0; - } - function contains_6($receiver, element) { - return indexOf_6($receiver, element) >= 0; - } - function contains_7($receiver, element) { - return indexOf_7($receiver, element) >= 0; - } - var elementAt = defineInlineFunction('kotlin.kotlin.collections.elementAt_8ujjk8$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_0 = defineInlineFunction('kotlin.kotlin.collections.elementAt_mrm5p$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_1 = defineInlineFunction('kotlin.kotlin.collections.elementAt_m2jy6x$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_2 = defineInlineFunction('kotlin.kotlin.collections.elementAt_c03ot6$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_3 = defineInlineFunction('kotlin.kotlin.collections.elementAt_3aefkx$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_4 = defineInlineFunction('kotlin.kotlin.collections.elementAt_rblqex$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_5 = defineInlineFunction('kotlin.kotlin.collections.elementAt_xgrzbe$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_6 = defineInlineFunction('kotlin.kotlin.collections.elementAt_1qu12l$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAt_7 = defineInlineFunction('kotlin.kotlin.collections.elementAt_gtcw5h$', function ($receiver, index) { - return $receiver[index]; - }); - var elementAtOrElse = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_qyicq6$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_0 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_1pvgfa$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_1 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_shq4vo$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_2 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_xumoj0$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_3 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_uafoqm$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_4 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_ln6iwk$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_5 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_lnau98$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_6 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_v8pqlw$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var elementAtOrElse_7 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_sjvy5y$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : unboxChar(defaultValue(index)); - }; - })); - var elementAtOrNull = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_8ujjk8$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_8ujjk8$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_0 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_mrm5p$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_mrm5p$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_1 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_m2jy6x$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_m2jy6x$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_2 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_c03ot6$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_c03ot6$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_3 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_3aefkx$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_3aefkx$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_4 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_rblqex$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_rblqex$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_5 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_xgrzbe$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_xgrzbe$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_6 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_1qu12l$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_1qu12l$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var elementAtOrNull_7 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_gtcw5h$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_gtcw5h$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var find = defineInlineFunction('kotlin.kotlin.collections.find_sfx99b$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_0 = defineInlineFunction('kotlin.kotlin.collections.find_c3i447$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_1 = defineInlineFunction('kotlin.kotlin.collections.find_247xw3$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_2 = defineInlineFunction('kotlin.kotlin.collections.find_il4kyb$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_3 = defineInlineFunction('kotlin.kotlin.collections.find_i1oc7r$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_4 = defineInlineFunction('kotlin.kotlin.collections.find_u4nq1f$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_5 = defineInlineFunction('kotlin.kotlin.collections.find_3vq27r$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_6 = defineInlineFunction('kotlin.kotlin.collections.find_xffwn9$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var find_7 = defineInlineFunction('kotlin.kotlin.collections.find_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }; - })); - var findLast = defineInlineFunction('kotlin.kotlin.collections.findLast_sfx99b$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_m7z4lg$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_0 = defineInlineFunction('kotlin.kotlin.collections.findLast_c3i447$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_964n91$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_1 = defineInlineFunction('kotlin.kotlin.collections.findLast_247xw3$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_i2lc79$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_2 = defineInlineFunction('kotlin.kotlin.collections.findLast_il4kyb$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_tmsbgo$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_3 = defineInlineFunction('kotlin.kotlin.collections.findLast_i1oc7r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_se6h4x$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_4 = defineInlineFunction('kotlin.kotlin.collections.findLast_u4nq1f$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_rjqryz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_5 = defineInlineFunction('kotlin.kotlin.collections.findLast_3vq27r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_bvy38s$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_6 = defineInlineFunction('kotlin.kotlin.collections.findLast_xffwn9$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_l1lu5t$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - var findLast_7 = defineInlineFunction('kotlin.kotlin.collections.findLast_3ji0pj$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_355ntz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(toBoxedChar(element))) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - function first($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_0($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_1($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_2($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_3($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_4($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_5($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_6($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - function first_7($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[0]; - } - var first_8 = defineInlineFunction('kotlin.kotlin.collections.first_sfx99b$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_9 = defineInlineFunction('kotlin.kotlin.collections.first_c3i447$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_10 = defineInlineFunction('kotlin.kotlin.collections.first_247xw3$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_11 = defineInlineFunction('kotlin.kotlin.collections.first_il4kyb$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_12 = defineInlineFunction('kotlin.kotlin.collections.first_i1oc7r$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_13 = defineInlineFunction('kotlin.kotlin.collections.first_u4nq1f$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_14 = defineInlineFunction('kotlin.kotlin.collections.first_3vq27r$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_15 = defineInlineFunction('kotlin.kotlin.collections.first_xffwn9$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var first_16 = defineInlineFunction('kotlin.kotlin.collections.first_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - function firstOrNull($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_0($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_1($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_2($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_3($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_4($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_5($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_6($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - function firstOrNull_7($receiver) { - return $receiver.length === 0 ? null : $receiver[0]; - } - var firstOrNull_8 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_sfx99b$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_9 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_c3i447$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_10 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_247xw3$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_11 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_il4kyb$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_12 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_i1oc7r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_13 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_u4nq1f$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_14 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_3vq27r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_15 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_xffwn9$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return element; - } - return null; - }); - var firstOrNull_16 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - return element; - } - return null; - }; - })); - var getOrElse = defineInlineFunction('kotlin.kotlin.collections.getOrElse_qyicq6$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_0 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_1pvgfa$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_1 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_shq4vo$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_2 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_xumoj0$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_3 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_uafoqm$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_4 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_ln6iwk$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_5 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_lnau98$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_6 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_v8pqlw$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : defaultValue(index); - }; - })); - var getOrElse_7 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_sjvy5y$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : unboxChar(defaultValue(index)); - }; - })); - function getOrNull($receiver, index) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver[index] : null; - } - function getOrNull_0($receiver, index) { - return index >= 0 && index <= get_lastIndex_0($receiver) ? $receiver[index] : null; - } - function getOrNull_1($receiver, index) { - return index >= 0 && index <= get_lastIndex_1($receiver) ? $receiver[index] : null; - } - function getOrNull_2($receiver, index) { - return index >= 0 && index <= get_lastIndex_2($receiver) ? $receiver[index] : null; - } - function getOrNull_3($receiver, index) { - return index >= 0 && index <= get_lastIndex_3($receiver) ? $receiver[index] : null; - } - function getOrNull_4($receiver, index) { - return index >= 0 && index <= get_lastIndex_4($receiver) ? $receiver[index] : null; - } - function getOrNull_5($receiver, index) { - return index >= 0 && index <= get_lastIndex_5($receiver) ? $receiver[index] : null; - } - function getOrNull_6($receiver, index) { - return index >= 0 && index <= get_lastIndex_6($receiver) ? $receiver[index] : null; - } - function getOrNull_7($receiver, index) { - return index >= 0 && index <= get_lastIndex_7($receiver) ? $receiver[index] : null; - } - function indexOf($receiver, element) { - if (element == null) { - for (var index = 0; index !== $receiver.length; ++index) { - if ($receiver[index] == null) { - return index; - } - } - } - else { - for (var index_0 = 0; index_0 !== $receiver.length; ++index_0) { - if (equals(element, $receiver[index_0])) { - return index_0; - } - } - } - return -1; - } - function indexOf_0($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function indexOf_1($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function indexOf_2($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function indexOf_3($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (equals(element, $receiver[index])) { - return index; - } - } - return -1; - } - function indexOf_4($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function indexOf_5($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function indexOf_6($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function indexOf_7($receiver, element) { - for (var index = 0; index !== $receiver.length; ++index) { - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - var indexOfFirst = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_sfx99b$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_0 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_c3i447$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_1 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_247xw3$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_2 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_il4kyb$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_3 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_i1oc7r$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_4 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_u4nq1f$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_5 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_3vq27r$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_6 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_xffwn9$', function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }); - var indexOfFirst_7 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - for (var index = 0; index !== $receiver.length; ++index) { - if (predicate(toBoxedChar($receiver[index]))) { - return index; - } - } - return -1; - }; - })); - var indexOfLast = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_sfx99b$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_m7z4lg$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_0 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_c3i447$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_964n91$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_1 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_247xw3$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_i2lc79$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_2 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_il4kyb$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_tmsbgo$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_3 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_i1oc7r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_se6h4x$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_4 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_u4nq1f$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_rjqryz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_5 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_3vq27r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_bvy38s$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_6 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_xffwn9$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_l1lu5t$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate($receiver[index])) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_7 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_3ji0pj$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_355ntz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate(toBoxedChar($receiver[index]))) { - return index; - } - } - return -1; - }; - })); - function last($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex($receiver)]; - } - function last_0($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_0($receiver)]; - } - function last_1($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_1($receiver)]; - } - function last_2($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_2($receiver)]; - } - function last_3($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_3($receiver)]; - } - function last_4($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_4($receiver)]; - } - function last_5($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_5($receiver)]; - } - function last_6($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_6($receiver)]; - } - function last_7($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[get_lastIndex_7($receiver)]; - } - var last_8 = defineInlineFunction('kotlin.kotlin.collections.last_sfx99b$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_m7z4lg$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_9 = defineInlineFunction('kotlin.kotlin.collections.last_c3i447$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_964n91$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_10 = defineInlineFunction('kotlin.kotlin.collections.last_247xw3$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_i2lc79$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_11 = defineInlineFunction('kotlin.kotlin.collections.last_il4kyb$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_tmsbgo$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_12 = defineInlineFunction('kotlin.kotlin.collections.last_i1oc7r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_se6h4x$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_13 = defineInlineFunction('kotlin.kotlin.collections.last_u4nq1f$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_rjqryz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_14 = defineInlineFunction('kotlin.kotlin.collections.last_3vq27r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_bvy38s$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_15 = defineInlineFunction('kotlin.kotlin.collections.last_xffwn9$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_l1lu5t$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - var last_16 = defineInlineFunction('kotlin.kotlin.collections.last_3ji0pj$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_355ntz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var toBoxedChar = Kotlin.toBoxedChar; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(toBoxedChar(element))) - return element; - } - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - }; - })); - function lastIndexOf($receiver, element) { - var tmp$, tmp$_0; - if (element == null) { - tmp$ = reversed_8(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if ($receiver[index] == null) { - return index; - } - } - } - else { - tmp$_0 = reversed_8(get_indices($receiver)).iterator(); - while (tmp$_0.hasNext()) { - var index_0 = tmp$_0.next(); - if (equals(element, $receiver[index_0])) { - return index_0; - } - } - } - return -1; - } - function lastIndexOf_0($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_0($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastIndexOf_1($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_1($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastIndexOf_2($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_2($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastIndexOf_3($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_3($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (equals(element, $receiver[index])) { - return index; - } - } - return -1; - } - function lastIndexOf_4($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_4($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastIndexOf_5($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_5($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastIndexOf_6($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_6($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastIndexOf_7($receiver, element) { - var tmp$; - tmp$ = reversed_8(get_indices_7($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (element === $receiver[index]) { - return index; - } - } - return -1; - } - function lastOrNull($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_0($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_1($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_2($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_3($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_4($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_5($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_6($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - function lastOrNull_7($receiver) { - return $receiver.length === 0 ? null : $receiver[$receiver.length - 1 | 0]; - } - var lastOrNull_8 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_sfx99b$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_m7z4lg$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_9 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_c3i447$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_964n91$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_10 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_247xw3$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_i2lc79$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_11 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_il4kyb$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_tmsbgo$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_12 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_i1oc7r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_se6h4x$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_13 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_u4nq1f$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_rjqryz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_14 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_3vq27r$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_bvy38s$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_15 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_xffwn9$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_l1lu5t$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(element)) - return element; - } - return null; - }; - })); - var lastOrNull_16 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_3ji0pj$', wrapFunction(function () { - var get_indices = _.kotlin.collections.get_indices_355ntz$; - var reversed = _.kotlin.collections.reversed_7wnvza$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver[index]; - if (predicate(toBoxedChar(element))) - return element; - } - return null; - }; - })); - var random = defineInlineFunction('kotlin.kotlin.collections.random_us0mfu$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_lj338n$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_0 = defineInlineFunction('kotlin.kotlin.collections.random_964n91$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_ciead0$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_1 = defineInlineFunction('kotlin.kotlin.collections.random_i2lc79$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_wayomy$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_2 = defineInlineFunction('kotlin.kotlin.collections.random_tmsbgo$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_os0q87$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_3 = defineInlineFunction('kotlin.kotlin.collections.random_se6h4x$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_2uk8lc$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_4 = defineInlineFunction('kotlin.kotlin.collections.random_rjqryz$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_zcvl96$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_5 = defineInlineFunction('kotlin.kotlin.collections.random_bvy38s$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_k31a39$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_6 = defineInlineFunction('kotlin.kotlin.collections.random_l1lu5t$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_mwcbea$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_7 = defineInlineFunction('kotlin.kotlin.collections.random_355ntz$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_8kgqmy$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - function random_8($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_9($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_10($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_11($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_12($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_13($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_14($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_15($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function random_16($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Array is empty.'); - return $receiver[random.nextInt_za3lpa$($receiver.length)]; - } - function single($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_0($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_1($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_2($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_3($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_4($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_5($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_6($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - function single_7($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Array is empty.'); - case 1: - tmp$ = $receiver[0]; - break; - default:throw IllegalArgumentException_init_0('Array has more than one element.'); - } - return tmp$; - } - var single_8 = defineInlineFunction('kotlin.kotlin.collections.single_sfx99b$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return (tmp$_0 = single) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - }; - })); - var single_9 = defineInlineFunction('kotlin.kotlin.collections.single_c3i447$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); - }; - })); - var single_10 = defineInlineFunction('kotlin.kotlin.collections.single_247xw3$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); - }; - })); - var single_11 = defineInlineFunction('kotlin.kotlin.collections.single_il4kyb$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); - }; - })); - var single_12 = defineInlineFunction('kotlin.kotlin.collections.single_i1oc7r$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return Kotlin.isType(tmp$_0 = single, Kotlin.Long) ? tmp$_0 : throwCCE(); - }; - })); - var single_13 = defineInlineFunction('kotlin.kotlin.collections.single_u4nq1f$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); - }; - })); - var single_14 = defineInlineFunction('kotlin.kotlin.collections.single_3vq27r$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return typeof (tmp$_0 = single) === 'number' ? tmp$_0 : throwCCE(); - }; - })); - var single_15 = defineInlineFunction('kotlin.kotlin.collections.single_xffwn9$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return typeof (tmp$_0 = single) === 'boolean' ? tmp$_0 : throwCCE(); - }; - })); - var single_16 = defineInlineFunction('kotlin.kotlin.collections.single_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var unboxChar = Kotlin.unboxChar; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) { - if (found) - throw IllegalArgumentException_init('Array contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Array contains no element matching the predicate.'); - return unboxChar(Kotlin.isChar(tmp$_0 = toBoxedChar(single)) ? tmp$_0 : throwCCE()); - }; - })); - function singleOrNull($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_0($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_1($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_2($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_3($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_4($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_5($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_6($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - function singleOrNull_7($receiver) { - return $receiver.length === 1 ? $receiver[0] : null; - } - var singleOrNull_8 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_sfx99b$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_9 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_c3i447$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_10 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_247xw3$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_11 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_il4kyb$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_12 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_i1oc7r$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_13 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_u4nq1f$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_14 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_3vq27r$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_15 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_xffwn9$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - var singleOrNull_16 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }; - })); - function drop($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_0($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_0($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_1($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_1($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_2($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_2($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_3($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_3($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_4($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_4($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_5($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_5($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_6($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_6($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function drop_7($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return takeLast_7($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_0($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_0($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_1($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_1($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_2($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_2($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_3($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_3($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_4($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_4($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_5($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_5($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_6($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_6($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_7($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_7($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - var dropLastWhile = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_sfx99b$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - var take = _.kotlin.collections.take_8ujjk8$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_0 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_c3i447$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - var take = _.kotlin.collections.take_mrm5p$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_1 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_247xw3$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - var take = _.kotlin.collections.take_m2jy6x$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_2 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_il4kyb$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - var take = _.kotlin.collections.take_c03ot6$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_3 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_i1oc7r$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - var take = _.kotlin.collections.take_3aefkx$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_4 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_u4nq1f$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - var take = _.kotlin.collections.take_rblqex$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_5 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_3vq27r$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - var take = _.kotlin.collections.take_xgrzbe$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_6 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_xffwn9$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - var take = _.kotlin.collections.take_1qu12l$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropLastWhile_7 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_3ji0pj$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var toBoxedChar = Kotlin.toBoxedChar; - var take = _.kotlin.collections.take_gtcw5h$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate(toBoxedChar($receiver[index]))) { - return take($receiver, index + 1 | 0); - } - } - return emptyList(); - }; - })); - var dropWhile = defineInlineFunction('kotlin.kotlin.collections.dropWhile_sfx99b$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_0 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_c3i447$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_1 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_247xw3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_2 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_il4kyb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_3 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_i1oc7r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_4 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_u4nq1f$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_5 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_3vq27r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_6 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_xffwn9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var dropWhile_7 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_3ji0pj$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - if (yielding) - list.add_11rb$(toBoxedChar(item)); - else if (!predicate(toBoxedChar(item))) { - list.add_11rb$(toBoxedChar(item)); - yielding = true; - } - } - return list; - }; - })); - var filter = defineInlineFunction('kotlin.kotlin.collections.filter_sfx99b$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_0 = defineInlineFunction('kotlin.kotlin.collections.filter_c3i447$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_1 = defineInlineFunction('kotlin.kotlin.collections.filter_247xw3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_2 = defineInlineFunction('kotlin.kotlin.collections.filter_il4kyb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_3 = defineInlineFunction('kotlin.kotlin.collections.filter_i1oc7r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_4 = defineInlineFunction('kotlin.kotlin.collections.filter_u4nq1f$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_5 = defineInlineFunction('kotlin.kotlin.collections.filter_3vq27r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_6 = defineInlineFunction('kotlin.kotlin.collections.filter_xffwn9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filter_7 = defineInlineFunction('kotlin.kotlin.collections.filter_3ji0pj$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - destination.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - var filterIndexed = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_1x1hc5$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_muebcr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_na3tu9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_j54otz$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_8y5rp7$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_ngxnyp$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_4abx9h$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_40mjvt$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_es6ekl$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - var index_0 = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); - var element = toBoxedChar(item); - if (predicate(index_0, element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterIndexedTo = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_yy1162$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_0 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_9utof$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_1 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_9c7hyn$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_2 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_xxq4i$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_3 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_sp77il$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_4 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_1eenap$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_5 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_a0ikl4$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_6 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_m16605$', wrapFunction(function () { - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (predicate((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_7 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_evsozx$', wrapFunction(function () { - var unboxChar = Kotlin.unboxChar; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - var index_0 = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); - var element = toBoxedChar(item); - if (predicate(index_0, element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterIsInstance = defineInlineFunction('kotlin.kotlin.collections.filterIsInstance_d9eiz9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function (R_0, isR, $receiver) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (isR(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterIsInstanceTo = defineInlineFunction('kotlin.kotlin.collections.filterIsInstanceTo_fz41hi$', function (R_0, isR, $receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (isR(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNot = defineInlineFunction('kotlin.kotlin.collections.filterNot_sfx99b$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_0 = defineInlineFunction('kotlin.kotlin.collections.filterNot_c3i447$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_1 = defineInlineFunction('kotlin.kotlin.collections.filterNot_247xw3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_2 = defineInlineFunction('kotlin.kotlin.collections.filterNot_il4kyb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_3 = defineInlineFunction('kotlin.kotlin.collections.filterNot_i1oc7r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_4 = defineInlineFunction('kotlin.kotlin.collections.filterNot_u4nq1f$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_5 = defineInlineFunction('kotlin.kotlin.collections.filterNot_3vq27r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_6 = defineInlineFunction('kotlin.kotlin.collections.filterNot_xffwn9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterNot_7 = defineInlineFunction('kotlin.kotlin.collections.filterNot_3ji0pj$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (!predicate(toBoxedChar(element))) - destination.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - function filterNotNull($receiver) { - return filterNotNullTo($receiver, ArrayList_init()); - } - function filterNotNullTo($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (element != null) - destination.add_11rb$(element); - } - return destination; - } - var filterNotTo = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_ywpv22$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_0 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_oqzfqb$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_1 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_pth3ij$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_2 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_fz4mzi$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_3 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_xddlih$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_4 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_b4wiqz$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_5 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_y6u45w$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_6 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_soq3qv$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNotTo_7 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_7as3in$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (!predicate(toBoxedChar(element))) - destination.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - var filterTo = defineInlineFunction('kotlin.kotlin.collections.filterTo_ywpv22$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_0 = defineInlineFunction('kotlin.kotlin.collections.filterTo_oqzfqb$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_1 = defineInlineFunction('kotlin.kotlin.collections.filterTo_pth3ij$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_2 = defineInlineFunction('kotlin.kotlin.collections.filterTo_fz4mzi$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_3 = defineInlineFunction('kotlin.kotlin.collections.filterTo_xddlih$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_4 = defineInlineFunction('kotlin.kotlin.collections.filterTo_b4wiqz$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_5 = defineInlineFunction('kotlin.kotlin.collections.filterTo_y6u45w$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_6 = defineInlineFunction('kotlin.kotlin.collections.filterTo_soq3qv$', function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_7 = defineInlineFunction('kotlin.kotlin.collections.filterTo_7as3in$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - destination.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - function slice($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_3($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_0($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_4($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_1($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_5($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_2($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_6($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_3($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_7($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_4($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_8($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_5($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_9($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_6($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList(copyOfRange_10($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_7($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return asList_7(copyOfRange_11($receiver, indices.start, indices.endInclusive + 1 | 0)); - } - function slice_8($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_9($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_10($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_11($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_12($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_13($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_14($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_15($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver[index]); - } - return list; - } - function slice_16($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$(toBoxedChar($receiver[index])); - } - return list; - } - function sliceArray($receiver, indices) { - var tmp$, tmp$_0; - var result = arrayOfNulls($receiver, indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_0($receiver, indices) { - var tmp$, tmp$_0; - var result = new Int8Array(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_1($receiver, indices) { - var tmp$, tmp$_0; - var result = new Int16Array(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_2($receiver, indices) { - var tmp$, tmp$_0; - var result = new Int32Array(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_3($receiver, indices) { - var tmp$, tmp$_0; - var result = Kotlin.longArray(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_4($receiver, indices) { - var tmp$, tmp$_0; - var result = new Float32Array(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_5($receiver, indices) { - var tmp$, tmp$_0; - var result = new Float64Array(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_6($receiver, indices) { - var tmp$, tmp$_0; - var result = Kotlin.booleanArray(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_7($receiver, indices) { - var tmp$, tmp$_0; - var result = Kotlin.charArray(indices.size); - var targetIndex = 0; - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var sourceIndex = tmp$.next(); - result[tmp$_0 = targetIndex, targetIndex = tmp$_0 + 1 | 0, tmp$_0] = $receiver[sourceIndex]; - } - return result; - } - function sliceArray_8($receiver, indices) { - if (indices.isEmpty()) - return copyOfRange_3($receiver, 0, 0); - return copyOfRange_3($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_9($receiver, indices) { - if (indices.isEmpty()) - return new Int8Array(0); - return copyOfRange_4($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_10($receiver, indices) { - if (indices.isEmpty()) - return new Int16Array(0); - return copyOfRange_5($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_11($receiver, indices) { - if (indices.isEmpty()) - return new Int32Array(0); - return copyOfRange_6($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_12($receiver, indices) { - if (indices.isEmpty()) - return Kotlin.longArray(0); - return copyOfRange_7($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_13($receiver, indices) { - if (indices.isEmpty()) - return new Float32Array(0); - return copyOfRange_8($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_14($receiver, indices) { - if (indices.isEmpty()) - return new Float64Array(0); - return copyOfRange_9($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_15($receiver, indices) { - if (indices.isEmpty()) - return Kotlin.booleanArray(0); - return copyOfRange_10($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function sliceArray_16($receiver, indices) { - if (indices.isEmpty()) - return Kotlin.charArray(0); - return copyOfRange_11($receiver, indices.start, indices.endInclusive + 1 | 0); - } - function take($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_0($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_0($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_1($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_1($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_2($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_2($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_3($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_3($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_4($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_4($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_5($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_5($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_6($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_6($receiver); - if (n === 1) - return listOf($receiver[0]); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return list; - } - function take_7($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (n >= $receiver.length) - return toList_7($receiver); - if (n === 1) - return listOf(toBoxedChar($receiver[0])); - var count = 0; - var list = ArrayList_init_0(n); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(toBoxedChar(item)); - } - return list; - } - function takeLast($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_0($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_0($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_1($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_1($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_2($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_2($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_3($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_3($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_4($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_4($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_5($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_5($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_6($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_6($receiver); - if (n === 1) - return listOf($receiver[size - 1 | 0]); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver[index]); - return list; - } - function takeLast_7($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.length; - if (n >= size) - return toList_7($receiver); - if (n === 1) - return listOf(toBoxedChar($receiver[size - 1 | 0])); - var list = ArrayList_init_0(n); - for (var index = size - n | 0; index < size; index++) - list.add_11rb$(toBoxedChar($receiver[index])); - return list; - } - var takeLastWhile = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_sfx99b$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - var drop = _.kotlin.collections.drop_8ujjk8$; - var toList = _.kotlin.collections.toList_us0mfu$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_0 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_c3i447$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - var drop = _.kotlin.collections.drop_mrm5p$; - var toList = _.kotlin.collections.toList_964n91$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_1 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_247xw3$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - var drop = _.kotlin.collections.drop_m2jy6x$; - var toList = _.kotlin.collections.toList_i2lc79$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_2 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_il4kyb$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - var drop = _.kotlin.collections.drop_c03ot6$; - var toList = _.kotlin.collections.toList_tmsbgo$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_3 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_i1oc7r$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - var drop = _.kotlin.collections.drop_3aefkx$; - var toList = _.kotlin.collections.toList_se6h4x$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_4 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_u4nq1f$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - var drop = _.kotlin.collections.drop_rblqex$; - var toList = _.kotlin.collections.toList_rjqryz$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_5 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_3vq27r$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - var drop = _.kotlin.collections.drop_xgrzbe$; - var toList = _.kotlin.collections.toList_bvy38s$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_6 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_xffwn9$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - var drop = _.kotlin.collections.drop_1qu12l$; - var toList = _.kotlin.collections.toList_l1lu5t$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate($receiver[index])) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeLastWhile_7 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_3ji0pj$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var toBoxedChar = Kotlin.toBoxedChar; - var drop = _.kotlin.collections.drop_gtcw5h$; - var toList = _.kotlin.collections.toList_355ntz$; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate(toBoxedChar($receiver[index]))) { - return drop($receiver, index + 1 | 0); - } - } - return toList($receiver); - }; - })); - var takeWhile = defineInlineFunction('kotlin.kotlin.collections.takeWhile_sfx99b$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_0 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_c3i447$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_1 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_247xw3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_2 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_il4kyb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_3 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_i1oc7r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_4 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_u4nq1f$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_5 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_3vq27r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_6 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_xffwn9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - var takeWhile_7 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_3ji0pj$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - if (!predicate(toBoxedChar(item))) - break; - list.add_11rb$(toBoxedChar(item)); - } - return list; - }; - })); - function reverse($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_0($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_0($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_1($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_1($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_2($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_2($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_3($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_3($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_4($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_4($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_5($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_5($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_6($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_6($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reverse_7($receiver) { - var midPoint = ($receiver.length / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_7($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver[index]; - $receiver[index] = $receiver[reverseIndex]; - $receiver[reverseIndex] = tmp; - reverseIndex = reverseIndex - 1 | 0; - } - } - function reversed($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList($receiver); - reverse_8(list); - return list; - } - function reversed_0($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_0($receiver); - reverse_8(list); - return list; - } - function reversed_1($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_1($receiver); - reverse_8(list); - return list; - } - function reversed_2($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_2($receiver); - reverse_8(list); - return list; - } - function reversed_3($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_3($receiver); - reverse_8(list); - return list; - } - function reversed_4($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_4($receiver); - reverse_8(list); - return list; - } - function reversed_5($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_5($receiver); - reverse_8(list); - return list; - } - function reversed_6($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_6($receiver); - reverse_8(list); - return list; - } - function reversed_7($receiver) { - if ($receiver.length === 0) - return emptyList(); - var list = toMutableList_7($receiver); - reverse_8(list); - return list; - } - function reversedArray($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = arrayOfNulls($receiver, $receiver.length); - var lastIndex = get_lastIndex($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_0($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = new Int8Array($receiver.length); - var lastIndex = get_lastIndex_0($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_1($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = new Int16Array($receiver.length); - var lastIndex = get_lastIndex_1($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_2($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = new Int32Array($receiver.length); - var lastIndex = get_lastIndex_2($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_3($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = Kotlin.longArray($receiver.length); - var lastIndex = get_lastIndex_3($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_4($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = new Float32Array($receiver.length); - var lastIndex = get_lastIndex_4($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_5($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = new Float64Array($receiver.length); - var lastIndex = get_lastIndex_5($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_6($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = Kotlin.booleanArray($receiver.length); - var lastIndex = get_lastIndex_6($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - function reversedArray_7($receiver) { - if ($receiver.length === 0) - return $receiver; - var result = Kotlin.charArray($receiver.length); - var lastIndex = get_lastIndex_7($receiver); - for (var i = 0; i <= lastIndex; i++) - result[lastIndex - i | 0] = $receiver[i]; - return result; - } - var sortBy = defineInlineFunction('kotlin.kotlin.collections.sortBy_99hh6x$', wrapFunction(function () { - var sortWith = _.kotlin.collections.sortWith_iwcb0m$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - if ($receiver.length > 1) { - sortWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - } - }; - })); - var sortByDescending = defineInlineFunction('kotlin.kotlin.collections.sortByDescending_99hh6x$', wrapFunction(function () { - var sortWith = _.kotlin.collections.sortWith_iwcb0m$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - if ($receiver.length > 1) { - sortWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - } - }; - })); - function sortDescending($receiver) { - sortWith($receiver, reverseOrder()); - } - function sortDescending_0($receiver) { - if ($receiver.length > 1) { - sort($receiver); - reverse_0($receiver); - } - } - function sortDescending_1($receiver) { - if ($receiver.length > 1) { - sort($receiver); - reverse_1($receiver); - } - } - function sortDescending_2($receiver) { - if ($receiver.length > 1) { - sort($receiver); - reverse_2($receiver); - } - } - function sortDescending_3($receiver) { - if ($receiver.length > 1) { - sort_0($receiver); - reverse_3($receiver); - } - } - function sortDescending_4($receiver) { - if ($receiver.length > 1) { - sort($receiver); - reverse_4($receiver); - } - } - function sortDescending_5($receiver) { - if ($receiver.length > 1) { - sort($receiver); - reverse_5($receiver); - } - } - function sortDescending_6($receiver) { - if ($receiver.length > 1) { - sort($receiver); - reverse_7($receiver); - } - } - function sorted($receiver) { - return asList(sortedArray($receiver)); - } - function sorted_0($receiver) { - var $receiver_0 = toTypedArray_3($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sorted_1($receiver) { - var $receiver_0 = toTypedArray_4($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sorted_2($receiver) { - var $receiver_0 = toTypedArray_5($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sorted_3($receiver) { - var $receiver_0 = toTypedArray_6($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sorted_4($receiver) { - var $receiver_0 = toTypedArray_7($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sorted_5($receiver) { - var $receiver_0 = toTypedArray_8($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sorted_6($receiver) { - var $receiver_0 = toTypedArray_10($receiver); - sort_1($receiver_0); - return asList($receiver_0); - } - function sortedArray($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sort_1($receiver_0); - return $receiver_0; - } - function sortedArray_0($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return $receiver_0; - } - function sortedArray_1($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return $receiver_0; - } - function sortedArray_2($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return $receiver_0; - } - function sortedArray_3($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = copyOf_11($receiver); - sort_0($receiver_0); - return $receiver_0; - } - function sortedArray_4($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return $receiver_0; - } - function sortedArray_5($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return $receiver_0; - } - function sortedArray_6($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = copyOf_15($receiver); - sort($receiver_0); - return $receiver_0; - } - function sortedArrayDescending($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortWith($receiver_0, reverseOrder()); - return $receiver_0; - } - function sortedArrayDescending_0($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortDescending_0($receiver_0); - return $receiver_0; - } - function sortedArrayDescending_1($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortDescending_1($receiver_0); - return $receiver_0; - } - function sortedArrayDescending_2($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortDescending_2($receiver_0); - return $receiver_0; - } - function sortedArrayDescending_3($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = copyOf_11($receiver); - sortDescending_3($receiver_0); - return $receiver_0; - } - function sortedArrayDescending_4($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortDescending_4($receiver_0); - return $receiver_0; - } - function sortedArrayDescending_5($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortDescending_5($receiver_0); - return $receiver_0; - } - function sortedArrayDescending_6($receiver) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = copyOf_15($receiver); - sortDescending_6($receiver_0); - return $receiver_0; - } - function sortedArrayWith($receiver, comparator) { - if ($receiver.length === 0) - return $receiver; - var $receiver_0 = $receiver.slice(); - sortWith($receiver_0, comparator); - return $receiver_0; - } - var sortedBy = defineInlineFunction('kotlin.kotlin.collections.sortedBy_99hh6x$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_iwcb0m$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_0 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_jirwv8$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_movtv6$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_1 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_p0tdr4$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_u08rls$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_2 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_30vlmi$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_rsw9pc$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_3 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_hom4ws$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_wqwa2y$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_4 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_ksd00w$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_1sg7gg$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_5 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_fvpt30$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_jucva8$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_6 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_xt360o$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_7ffj0g$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedBy_7 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_epurks$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_7ncb86$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedByDescending = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_99hh6x$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_iwcb0m$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_0 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_jirwv8$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_movtv6$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_1 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_p0tdr4$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_u08rls$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_2 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_30vlmi$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_rsw9pc$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_3 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_hom4ws$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_wqwa2y$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_4 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_ksd00w$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_1sg7gg$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_5 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_fvpt30$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_jucva8$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_6 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_xt360o$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_7ffj0g$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - var sortedByDescending_7 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_epurks$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_7ncb86$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - function sortedDescending($receiver) { - return sortedWith($receiver, reverseOrder()); - } - function sortedDescending_0($receiver) { - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return reversed_0($receiver_0); - } - function sortedDescending_1($receiver) { - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return reversed_1($receiver_0); - } - function sortedDescending_2($receiver) { - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return reversed_2($receiver_0); - } - function sortedDescending_3($receiver) { - var $receiver_0 = copyOf_11($receiver); - sort_0($receiver_0); - return reversed_3($receiver_0); - } - function sortedDescending_4($receiver) { - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return reversed_4($receiver_0); - } - function sortedDescending_5($receiver) { - var $receiver_0 = $receiver.slice(); - sort($receiver_0); - return reversed_5($receiver_0); - } - function sortedDescending_6($receiver) { - var $receiver_0 = copyOf_15($receiver); - sort($receiver_0); - return reversed_7($receiver_0); - } - function sortedWith($receiver, comparator) { - return asList(sortedArrayWith($receiver, comparator)); - } - function sortedWith_0($receiver, comparator) { - var $receiver_0 = toTypedArray_3($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_1($receiver, comparator) { - var $receiver_0 = toTypedArray_4($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_2($receiver, comparator) { - var $receiver_0 = toTypedArray_5($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_3($receiver, comparator) { - var $receiver_0 = toTypedArray_6($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_4($receiver, comparator) { - var $receiver_0 = toTypedArray_7($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_5($receiver, comparator) { - var $receiver_0 = toTypedArray_8($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_6($receiver, comparator) { - var $receiver_0 = toTypedArray_9($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function sortedWith_7($receiver, comparator) { - var $receiver_0 = toTypedArray_10($receiver); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - function get_indices($receiver) { - return new IntRange(0, get_lastIndex($receiver)); - } - function get_indices_0($receiver) { - return new IntRange(0, get_lastIndex_0($receiver)); - } - function get_indices_1($receiver) { - return new IntRange(0, get_lastIndex_1($receiver)); - } - function get_indices_2($receiver) { - return new IntRange(0, get_lastIndex_2($receiver)); - } - function get_indices_3($receiver) { - return new IntRange(0, get_lastIndex_3($receiver)); - } - function get_indices_4($receiver) { - return new IntRange(0, get_lastIndex_4($receiver)); - } - function get_indices_5($receiver) { - return new IntRange(0, get_lastIndex_5($receiver)); - } - function get_indices_6($receiver) { - return new IntRange(0, get_lastIndex_6($receiver)); - } - function get_indices_7($receiver) { - return new IntRange(0, get_lastIndex_7($receiver)); - } - var isEmpty = defineInlineFunction('kotlin.kotlin.collections.isEmpty_us0mfu$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_0 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_964n91$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_1 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_i2lc79$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_2 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_tmsbgo$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_3 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_se6h4x$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_4 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_rjqryz$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_5 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_bvy38s$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_6 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_l1lu5t$', function ($receiver) { - return $receiver.length === 0; - }); - var isEmpty_7 = defineInlineFunction('kotlin.kotlin.collections.isEmpty_355ntz$', function ($receiver) { - return $receiver.length === 0; - }); - var isNotEmpty = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_us0mfu$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_0 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_964n91$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_1 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_i2lc79$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_2 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_tmsbgo$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_3 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_se6h4x$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_4 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_rjqryz$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_5 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_bvy38s$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_6 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_l1lu5t$', function ($receiver) { - return !($receiver.length === 0); - }); - var isNotEmpty_7 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_355ntz$', function ($receiver) { - return !($receiver.length === 0); - }); - function get_lastIndex($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_0($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_1($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_2($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_3($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_4($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_5($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_6($receiver) { - return $receiver.length - 1 | 0; - } - function get_lastIndex_7($receiver) { - return $receiver.length - 1 | 0; - } - function toBooleanArray($receiver) { - var result = Kotlin.booleanArray($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - function toByteArray($receiver) { - var result = new Int8Array($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - function toCharArray($receiver) { - var result = Kotlin.charArray($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = unboxChar($receiver[index]); - } - return result; - } - function toDoubleArray($receiver) { - var result = new Float64Array($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - function toFloatArray($receiver) { - var result = new Float32Array($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - function toIntArray($receiver) { - var result = new Int32Array($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - function toLongArray($receiver) { - var result = Kotlin.longArray($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - function toShortArray($receiver) { - var result = new Int16Array($receiver.length); - for (var index = 0; index !== $receiver.length; ++index) { - result[index] = $receiver[index]; - } - return result; - } - var associate = defineInlineFunction('kotlin.kotlin.collections.associate_51p84z$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_0 = defineInlineFunction('kotlin.kotlin.collections.associate_hllm27$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_1 = defineInlineFunction('kotlin.kotlin.collections.associate_21tl2r$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_2 = defineInlineFunction('kotlin.kotlin.collections.associate_ff74x3$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_3 = defineInlineFunction('kotlin.kotlin.collections.associate_d7c9rj$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_4 = defineInlineFunction('kotlin.kotlin.collections.associate_ddcx1p$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_5 = defineInlineFunction('kotlin.kotlin.collections.associate_neh4lr$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_6 = defineInlineFunction('kotlin.kotlin.collections.associate_su3lit$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associate_7 = defineInlineFunction('kotlin.kotlin.collections.associate_2m77bl$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var pair = transform(toBoxedChar(element)); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associateBy = defineInlineFunction('kotlin.kotlin.collections.associateBy_73x53s$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_0 = defineInlineFunction('kotlin.kotlin.collections.associateBy_i1orpu$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_1 = defineInlineFunction('kotlin.kotlin.collections.associateBy_2yxo7i$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_2 = defineInlineFunction('kotlin.kotlin.collections.associateBy_vhfi20$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_3 = defineInlineFunction('kotlin.kotlin.collections.associateBy_oifiz6$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_4 = defineInlineFunction('kotlin.kotlin.collections.associateBy_5k9h5a$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_5 = defineInlineFunction('kotlin.kotlin.collections.associateBy_hbdsc2$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_6 = defineInlineFunction('kotlin.kotlin.collections.associateBy_8oadti$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_7 = defineInlineFunction('kotlin.kotlin.collections.associateBy_pmkh76$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), toBoxedChar(element)); - } - return destination; - }; - })); - var associateBy_8 = defineInlineFunction('kotlin.kotlin.collections.associateBy_67lihi$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_9 = defineInlineFunction('kotlin.kotlin.collections.associateBy_prlkfp$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_10 = defineInlineFunction('kotlin.kotlin.collections.associateBy_emzy0b$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_11 = defineInlineFunction('kotlin.kotlin.collections.associateBy_5wtufc$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_12 = defineInlineFunction('kotlin.kotlin.collections.associateBy_hq1329$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_13 = defineInlineFunction('kotlin.kotlin.collections.associateBy_jjomwl$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_14 = defineInlineFunction('kotlin.kotlin.collections.associateBy_bvjqb8$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_15 = defineInlineFunction('kotlin.kotlin.collections.associateBy_hxvtq7$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateBy_16 = defineInlineFunction('kotlin.kotlin.collections.associateBy_nlw5ll$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var associateByTo = defineInlineFunction('kotlin.kotlin.collections.associateByTo_jnbl5d$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_0 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_6rsi3p$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_1 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_mvhbwl$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_2 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_jk03w$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_3 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_fajp69$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_4 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_z2kljv$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_5 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_s8dkm4$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_6 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_ro4olb$', function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_7 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_deafr$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), toBoxedChar(element)); - } - return destination; - }; - })); - var associateByTo_8 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_8rzqwv$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_9 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_cne8q6$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_10 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_gcgqha$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_11 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_snsha9$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_12 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_ryii4m$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_13 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_6a7lri$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_14 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_lxofut$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_15 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_u9h8ze$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateByTo_16 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_u7k4io$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var associateTo = defineInlineFunction('kotlin.kotlin.collections.associateTo_t6a58$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_0 = defineInlineFunction('kotlin.kotlin.collections.associateTo_30k0gw$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_1 = defineInlineFunction('kotlin.kotlin.collections.associateTo_pdwiok$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_2 = defineInlineFunction('kotlin.kotlin.collections.associateTo_yjydda$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_3 = defineInlineFunction('kotlin.kotlin.collections.associateTo_o9od0g$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_4 = defineInlineFunction('kotlin.kotlin.collections.associateTo_642zho$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_5 = defineInlineFunction('kotlin.kotlin.collections.associateTo_t00y2o$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_6 = defineInlineFunction('kotlin.kotlin.collections.associateTo_l2eg58$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateTo_7 = defineInlineFunction('kotlin.kotlin.collections.associateTo_7k1sps$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var pair = transform(toBoxedChar(element)); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - function toCollection($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_0($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_1($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_2($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_3($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_4($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_5($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_6($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(item); - } - return destination; - } - function toCollection_7($receiver, destination) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - destination.add_11rb$(toBoxedChar(item)); - } - return destination; - } - function toHashSet($receiver) { - return toCollection($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_0($receiver) { - return toCollection_0($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_1($receiver) { - return toCollection_1($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_2($receiver) { - return toCollection_2($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_3($receiver) { - return toCollection_3($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_4($receiver) { - return toCollection_4($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_5($receiver) { - return toCollection_5($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_6($receiver) { - return toCollection_6($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toHashSet_7($receiver) { - return toCollection_7($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toList($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList($receiver); - break; - } - return tmp$; - } - function toList_0($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_0($receiver); - break; - } - return tmp$; - } - function toList_1($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_1($receiver); - break; - } - return tmp$; - } - function toList_2($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_2($receiver); - break; - } - return tmp$; - } - function toList_3($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_3($receiver); - break; - } - return tmp$; - } - function toList_4($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_4($receiver); - break; - } - return tmp$; - } - function toList_5($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_5($receiver); - break; - } - return tmp$; - } - function toList_6($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf($receiver[0]); - break; - default:tmp$ = toMutableList_6($receiver); - break; - } - return tmp$; - } - function toList_7($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf(toBoxedChar($receiver[0])); - break; - default:tmp$ = toMutableList_7($receiver); - break; - } - return tmp$; - } - function toMutableList($receiver) { - return ArrayList_init_1(asCollection($receiver)); - } - function toMutableList_0($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_1($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_2($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_3($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_4($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_5($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_6($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - list.add_11rb$(item); - } - return list; - } - function toMutableList_7($receiver) { - var tmp$; - var list = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - list.add_11rb$(toBoxedChar(item)); - } - return list; - } - function toSet($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_0($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_0($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_1($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_1($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_2($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_2($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_3($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_3($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_4($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_4($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_5($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_5($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_6($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf($receiver[0]); - break; - default:tmp$ = toCollection_6($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - function toSet_7($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf(toBoxedChar($receiver[0])); - break; - default:tmp$ = toCollection_7($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - var flatMap = defineInlineFunction('kotlin.kotlin.collections.flatMap_m96iup$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_0 = defineInlineFunction('kotlin.kotlin.collections.flatMap_7g5j6z$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_1 = defineInlineFunction('kotlin.kotlin.collections.flatMap_2azm6x$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_2 = defineInlineFunction('kotlin.kotlin.collections.flatMap_k7x5xb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_3 = defineInlineFunction('kotlin.kotlin.collections.flatMap_jv6p05$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_4 = defineInlineFunction('kotlin.kotlin.collections.flatMap_a6ay1l$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_5 = defineInlineFunction('kotlin.kotlin.collections.flatMap_kx9v79$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_6 = defineInlineFunction('kotlin.kotlin.collections.flatMap_io4c5r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMap_7 = defineInlineFunction('kotlin.kotlin.collections.flatMap_m4binf$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var addAll = _.kotlin.collections.addAll_ipc267$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var list = transform(toBoxedChar(element)); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_qpz03$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_0 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_hrglhs$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_1 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_9q2ddu$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_2 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_ae7k4k$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_3 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_6h8o5s$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_4 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_fngh32$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_5 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_53zyz4$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_6 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_9hj6lm$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_7 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_5s36kw$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var addAll = _.kotlin.collections.addAll_ipc267$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var list = transform(toBoxedChar(element)); - addAll(destination, list); - } - return destination; - }; - })); - var groupBy = defineInlineFunction('kotlin.kotlin.collections.groupBy_73x53s$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_0 = defineInlineFunction('kotlin.kotlin.collections.groupBy_i1orpu$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_1 = defineInlineFunction('kotlin.kotlin.collections.groupBy_2yxo7i$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_2 = defineInlineFunction('kotlin.kotlin.collections.groupBy_vhfi20$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_3 = defineInlineFunction('kotlin.kotlin.collections.groupBy_oifiz6$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_4 = defineInlineFunction('kotlin.kotlin.collections.groupBy_5k9h5a$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_5 = defineInlineFunction('kotlin.kotlin.collections.groupBy_hbdsc2$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_6 = defineInlineFunction('kotlin.kotlin.collections.groupBy_8oadti$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_7 = defineInlineFunction('kotlin.kotlin.collections.groupBy_pmkh76$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - var groupBy_8 = defineInlineFunction('kotlin.kotlin.collections.groupBy_67lihi$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_9 = defineInlineFunction('kotlin.kotlin.collections.groupBy_prlkfp$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_10 = defineInlineFunction('kotlin.kotlin.collections.groupBy_emzy0b$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_11 = defineInlineFunction('kotlin.kotlin.collections.groupBy_5wtufc$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_12 = defineInlineFunction('kotlin.kotlin.collections.groupBy_hq1329$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_13 = defineInlineFunction('kotlin.kotlin.collections.groupBy_jjomwl$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_14 = defineInlineFunction('kotlin.kotlin.collections.groupBy_bvjqb8$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_15 = defineInlineFunction('kotlin.kotlin.collections.groupBy_hxvtq7$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupBy_16 = defineInlineFunction('kotlin.kotlin.collections.groupBy_nlw5ll$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var groupByTo = defineInlineFunction('kotlin.kotlin.collections.groupByTo_1qxbxg$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_0 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_6kmz48$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_1 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_bo8r4m$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_2 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_q1iim5$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_3 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_mu2a4k$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_4 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_x0uw5m$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_5 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_xcz1ip$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_6 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_mrd1pq$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_7 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_axxeqe$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - var groupByTo_8 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_ha2xv2$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_9 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_lnembp$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_10 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_n3jh2d$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_11 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_ted19q$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_12 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_bzm9l3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_13 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_4auzph$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_14 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_akngni$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_15 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_au1frb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_16 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_cmmt3n$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var groupingBy = defineInlineFunction('kotlin.kotlin.collections.groupingBy_73x53s$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Grouping = _.kotlin.collections.Grouping; - function groupingBy$ObjectLiteral(this$groupingBy, closure$keySelector) { - this.this$groupingBy = this$groupingBy; - this.closure$keySelector = closure$keySelector; - } - groupingBy$ObjectLiteral.prototype.sourceIterator = function () { - return Kotlin.arrayIterator(this.this$groupingBy); - }; - groupingBy$ObjectLiteral.prototype.keyOf_11rb$ = function (element) { - return this.closure$keySelector(element); - }; - groupingBy$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Grouping]}; - return function ($receiver, keySelector) { - return new groupingBy$ObjectLiteral($receiver, keySelector); - }; - })); - var map = defineInlineFunction('kotlin.kotlin.collections.map_73x53s$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_0 = defineInlineFunction('kotlin.kotlin.collections.map_i1orpu$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_1 = defineInlineFunction('kotlin.kotlin.collections.map_2yxo7i$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_2 = defineInlineFunction('kotlin.kotlin.collections.map_vhfi20$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_3 = defineInlineFunction('kotlin.kotlin.collections.map_oifiz6$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_4 = defineInlineFunction('kotlin.kotlin.collections.map_5k9h5a$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_5 = defineInlineFunction('kotlin.kotlin.collections.map_hbdsc2$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_6 = defineInlineFunction('kotlin.kotlin.collections.map_8oadti$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var map_7 = defineInlineFunction('kotlin.kotlin.collections.map_pmkh76$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - destination.add_11rb$(transform(toBoxedChar(item))); - } - return destination; - }; - })); - var mapIndexed = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_d05wzo$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_b1mzcm$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_17cht6$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_n9l81o$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_6hpo96$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_xqj56$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_623t7u$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_tk88gi$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }; - })); - var mapIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_8r1kga$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))); - } - return destination; - }; - })); - var mapIndexedNotNull = defineInlineFunction('kotlin.kotlin.collections.mapIndexedNotNull_aytly7$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - var tmp$_1; - if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedNotNullTo = defineInlineFunction('kotlin.kotlin.collections.mapIndexedNotNullTo_97f7ib$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - var tmp$_1; - if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedTo = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_d8bv34$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_0 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_797pmj$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_1 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_5akchx$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_2 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_ey1r33$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_3 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_yqgxdn$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_4 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_3uie0r$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_5 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_3zacuz$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_6 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_r9wz1$', function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item)); - } - return destination; - }); - var mapIndexedTo_7 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_d11l8l$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))); - } - return destination; - }; - })); - var mapNotNull = defineInlineFunction('kotlin.kotlin.collections.mapNotNull_oxs7gb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapNotNullTo = defineInlineFunction('kotlin.kotlin.collections.mapNotNullTo_cni40x$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapTo = defineInlineFunction('kotlin.kotlin.collections.mapTo_4g4n0c$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_0 = defineInlineFunction('kotlin.kotlin.collections.mapTo_lvjep5$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_1 = defineInlineFunction('kotlin.kotlin.collections.mapTo_jtf97t$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_2 = defineInlineFunction('kotlin.kotlin.collections.mapTo_18cmir$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_3 = defineInlineFunction('kotlin.kotlin.collections.mapTo_6e2q1j$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_4 = defineInlineFunction('kotlin.kotlin.collections.mapTo_jpuhm1$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_5 = defineInlineFunction('kotlin.kotlin.collections.mapTo_u2n9ft$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_6 = defineInlineFunction('kotlin.kotlin.collections.mapTo_jrz1ox$', function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - destination.add_11rb$(transform(item)); - } - return destination; - }); - var mapTo_7 = defineInlineFunction('kotlin.kotlin.collections.mapTo_bsh7dj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - destination.add_11rb$(transform(toBoxedChar(item))); - } - return destination; - }; - })); - function withIndex$lambda(this$withIndex) { - return function () { - return Kotlin.arrayIterator(this$withIndex); - }; - } - function withIndex($receiver) { - return new IndexingIterable(withIndex$lambda($receiver)); - } - function withIndex$lambda_0(this$withIndex) { - return function () { - return Kotlin.byteArrayIterator(this$withIndex); - }; - } - function withIndex_0($receiver) { - return new IndexingIterable(withIndex$lambda_0($receiver)); - } - function withIndex$lambda_1(this$withIndex) { - return function () { - return Kotlin.shortArrayIterator(this$withIndex); - }; - } - function withIndex_1($receiver) { - return new IndexingIterable(withIndex$lambda_1($receiver)); - } - function withIndex$lambda_2(this$withIndex) { - return function () { - return Kotlin.intArrayIterator(this$withIndex); - }; - } - function withIndex_2($receiver) { - return new IndexingIterable(withIndex$lambda_2($receiver)); - } - function withIndex$lambda_3(this$withIndex) { - return function () { - return Kotlin.longArrayIterator(this$withIndex); - }; - } - function withIndex_3($receiver) { - return new IndexingIterable(withIndex$lambda_3($receiver)); - } - function withIndex$lambda_4(this$withIndex) { - return function () { - return Kotlin.floatArrayIterator(this$withIndex); - }; - } - function withIndex_4($receiver) { - return new IndexingIterable(withIndex$lambda_4($receiver)); - } - function withIndex$lambda_5(this$withIndex) { - return function () { - return Kotlin.doubleArrayIterator(this$withIndex); - }; - } - function withIndex_5($receiver) { - return new IndexingIterable(withIndex$lambda_5($receiver)); - } - function withIndex$lambda_6(this$withIndex) { - return function () { - return Kotlin.booleanArrayIterator(this$withIndex); - }; - } - function withIndex_6($receiver) { - return new IndexingIterable(withIndex$lambda_6($receiver)); - } - function withIndex$lambda_7(this$withIndex) { - return function () { - return Kotlin.charArrayIterator(this$withIndex); - }; - } - function withIndex_7($receiver) { - return new IndexingIterable(withIndex$lambda_7($receiver)); - } - function distinct($receiver) { - return toList_8(toMutableSet($receiver)); - } - function distinct_0($receiver) { - return toList_8(toMutableSet_0($receiver)); - } - function distinct_1($receiver) { - return toList_8(toMutableSet_1($receiver)); - } - function distinct_2($receiver) { - return toList_8(toMutableSet_2($receiver)); - } - function distinct_3($receiver) { - return toList_8(toMutableSet_3($receiver)); - } - function distinct_4($receiver) { - return toList_8(toMutableSet_4($receiver)); - } - function distinct_5($receiver) { - return toList_8(toMutableSet_5($receiver)); - } - function distinct_6($receiver) { - return toList_8(toMutableSet_6($receiver)); - } - function distinct_7($receiver) { - return toList_8(toMutableSet_7($receiver)); - } - var distinctBy = defineInlineFunction('kotlin.kotlin.collections.distinctBy_73x53s$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_0 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_i1orpu$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_1 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_2yxo7i$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_2 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_vhfi20$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_3 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_oifiz6$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_4 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_5k9h5a$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_5 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_hbdsc2$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_6 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_8oadti$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = $receiver[tmp$]; - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - var distinctBy_7 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_pmkh76$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var e = unboxChar($receiver[tmp$]); - var key = selector(toBoxedChar(e)); - if (set.add_11rb$(key)) - list.add_11rb$(toBoxedChar(e)); - } - return list; - }; - })); - function intersect($receiver, other) { - var set = toMutableSet($receiver); - retainAll_2(set, other); - return set; - } - function intersect_0($receiver, other) { - var set = toMutableSet_0($receiver); - retainAll_2(set, other); - return set; - } - function intersect_1($receiver, other) { - var set = toMutableSet_1($receiver); - retainAll_2(set, other); - return set; - } - function intersect_2($receiver, other) { - var set = toMutableSet_2($receiver); - retainAll_2(set, other); - return set; - } - function intersect_3($receiver, other) { - var set = toMutableSet_3($receiver); - retainAll_2(set, other); - return set; - } - function intersect_4($receiver, other) { - var set = toMutableSet_4($receiver); - retainAll_2(set, other); - return set; - } - function intersect_5($receiver, other) { - var set = toMutableSet_5($receiver); - retainAll_2(set, other); - return set; - } - function intersect_6($receiver, other) { - var set = toMutableSet_6($receiver); - retainAll_2(set, other); - return set; - } - function intersect_7($receiver, other) { - var set = toMutableSet_7($receiver); - retainAll_2(set, other); - return set; - } - function subtract($receiver, other) { - var set = toMutableSet($receiver); - removeAll_2(set, other); - return set; - } - function subtract_0($receiver, other) { - var set = toMutableSet_0($receiver); - removeAll_2(set, other); - return set; - } - function subtract_1($receiver, other) { - var set = toMutableSet_1($receiver); - removeAll_2(set, other); - return set; - } - function subtract_2($receiver, other) { - var set = toMutableSet_2($receiver); - removeAll_2(set, other); - return set; - } - function subtract_3($receiver, other) { - var set = toMutableSet_3($receiver); - removeAll_2(set, other); - return set; - } - function subtract_4($receiver, other) { - var set = toMutableSet_4($receiver); - removeAll_2(set, other); - return set; - } - function subtract_5($receiver, other) { - var set = toMutableSet_5($receiver); - removeAll_2(set, other); - return set; - } - function subtract_6($receiver, other) { - var set = toMutableSet_6($receiver); - removeAll_2(set, other); - return set; - } - function subtract_7($receiver, other) { - var set = toMutableSet_7($receiver); - removeAll_2(set, other); - return set; - } - function toMutableSet($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_0($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_1($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_2($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_3($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_4($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_5($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_6($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - set.add_11rb$(item); - } - return set; - } - function toMutableSet_7($receiver) { - var tmp$; - var set = LinkedHashSet_init_3(mapCapacity($receiver.length)); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - set.add_11rb$(toBoxedChar(item)); - } - return set; - } - function union($receiver, other) { - var set = toMutableSet($receiver); - addAll(set, other); - return set; - } - function union_0($receiver, other) { - var set = toMutableSet_0($receiver); - addAll(set, other); - return set; - } - function union_1($receiver, other) { - var set = toMutableSet_1($receiver); - addAll(set, other); - return set; - } - function union_2($receiver, other) { - var set = toMutableSet_2($receiver); - addAll(set, other); - return set; - } - function union_3($receiver, other) { - var set = toMutableSet_3($receiver); - addAll(set, other); - return set; - } - function union_4($receiver, other) { - var set = toMutableSet_4($receiver); - addAll(set, other); - return set; - } - function union_5($receiver, other) { - var set = toMutableSet_5($receiver); - addAll(set, other); - return set; - } - function union_6($receiver, other) { - var set = toMutableSet_6($receiver); - addAll(set, other); - return set; - } - function union_7($receiver, other) { - var set = toMutableSet_7($receiver); - addAll(set, other); - return set; - } - var all = defineInlineFunction('kotlin.kotlin.collections.all_sfx99b$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_0 = defineInlineFunction('kotlin.kotlin.collections.all_c3i447$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_1 = defineInlineFunction('kotlin.kotlin.collections.all_247xw3$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_2 = defineInlineFunction('kotlin.kotlin.collections.all_il4kyb$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_3 = defineInlineFunction('kotlin.kotlin.collections.all_i1oc7r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_4 = defineInlineFunction('kotlin.kotlin.collections.all_u4nq1f$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_5 = defineInlineFunction('kotlin.kotlin.collections.all_3vq27r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_6 = defineInlineFunction('kotlin.kotlin.collections.all_xffwn9$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (!predicate(element)) - return false; - } - return true; - }); - var all_7 = defineInlineFunction('kotlin.kotlin.collections.all_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (!predicate(toBoxedChar(element))) - return false; - } - return true; - }; - })); - function any($receiver) { - return !($receiver.length === 0); - } - function any_0($receiver) { - return !($receiver.length === 0); - } - function any_1($receiver) { - return !($receiver.length === 0); - } - function any_2($receiver) { - return !($receiver.length === 0); - } - function any_3($receiver) { - return !($receiver.length === 0); - } - function any_4($receiver) { - return !($receiver.length === 0); - } - function any_5($receiver) { - return !($receiver.length === 0); - } - function any_6($receiver) { - return !($receiver.length === 0); - } - function any_7($receiver) { - return !($receiver.length === 0); - } - var any_8 = defineInlineFunction('kotlin.kotlin.collections.any_sfx99b$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_9 = defineInlineFunction('kotlin.kotlin.collections.any_c3i447$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_10 = defineInlineFunction('kotlin.kotlin.collections.any_247xw3$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_11 = defineInlineFunction('kotlin.kotlin.collections.any_il4kyb$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_12 = defineInlineFunction('kotlin.kotlin.collections.any_i1oc7r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_13 = defineInlineFunction('kotlin.kotlin.collections.any_u4nq1f$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_14 = defineInlineFunction('kotlin.kotlin.collections.any_3vq27r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_15 = defineInlineFunction('kotlin.kotlin.collections.any_xffwn9$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return true; - } - return false; - }); - var any_16 = defineInlineFunction('kotlin.kotlin.collections.any_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - return true; - } - return false; - }; - })); - var count = defineInlineFunction('kotlin.kotlin.collections.count_us0mfu$', function ($receiver) { - return $receiver.length; - }); - var count_0 = defineInlineFunction('kotlin.kotlin.collections.count_964n91$', function ($receiver) { - return $receiver.length; - }); - var count_1 = defineInlineFunction('kotlin.kotlin.collections.count_i2lc79$', function ($receiver) { - return $receiver.length; - }); - var count_2 = defineInlineFunction('kotlin.kotlin.collections.count_tmsbgo$', function ($receiver) { - return $receiver.length; - }); - var count_3 = defineInlineFunction('kotlin.kotlin.collections.count_se6h4x$', function ($receiver) { - return $receiver.length; - }); - var count_4 = defineInlineFunction('kotlin.kotlin.collections.count_rjqryz$', function ($receiver) { - return $receiver.length; - }); - var count_5 = defineInlineFunction('kotlin.kotlin.collections.count_bvy38s$', function ($receiver) { - return $receiver.length; - }); - var count_6 = defineInlineFunction('kotlin.kotlin.collections.count_l1lu5t$', function ($receiver) { - return $receiver.length; - }); - var count_7 = defineInlineFunction('kotlin.kotlin.collections.count_355ntz$', function ($receiver) { - return $receiver.length; - }); - var count_8 = defineInlineFunction('kotlin.kotlin.collections.count_sfx99b$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_9 = defineInlineFunction('kotlin.kotlin.collections.count_c3i447$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_10 = defineInlineFunction('kotlin.kotlin.collections.count_247xw3$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_11 = defineInlineFunction('kotlin.kotlin.collections.count_il4kyb$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_12 = defineInlineFunction('kotlin.kotlin.collections.count_i1oc7r$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_13 = defineInlineFunction('kotlin.kotlin.collections.count_u4nq1f$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_14 = defineInlineFunction('kotlin.kotlin.collections.count_3vq27r$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_15 = defineInlineFunction('kotlin.kotlin.collections.count_xffwn9$', function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var count_16 = defineInlineFunction('kotlin.kotlin.collections.count_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - count = count + 1 | 0; - } - return count; - }; - })); - var fold = defineInlineFunction('kotlin.kotlin.collections.fold_agj4oo$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_0 = defineInlineFunction('kotlin.kotlin.collections.fold_fl151e$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_1 = defineInlineFunction('kotlin.kotlin.collections.fold_9nnzbm$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_2 = defineInlineFunction('kotlin.kotlin.collections.fold_sgag36$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_3 = defineInlineFunction('kotlin.kotlin.collections.fold_sc6mze$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_4 = defineInlineFunction('kotlin.kotlin.collections.fold_fnzdea$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_5 = defineInlineFunction('kotlin.kotlin.collections.fold_mnppu8$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_6 = defineInlineFunction('kotlin.kotlin.collections.fold_43zc0i$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var fold_7 = defineInlineFunction('kotlin.kotlin.collections.fold_8nwlk6$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - accumulator = operation(accumulator, toBoxedChar(element)); - } - return accumulator; - }; - })); - var foldIndexed = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_oj0mn0$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_qzmh7i$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_aijnee$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_28ylm2$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_37s2ie$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_faee2y$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_ufoyfg$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_z82r06$', function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, element); - } - return accumulator; - }); - var foldIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_sfak8u$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, toBoxedChar(element)); - } - return accumulator; - }; - })); - var foldRight = defineInlineFunction('kotlin.kotlin.collections.foldRight_svmc2u$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_0 = defineInlineFunction('kotlin.kotlin.collections.foldRight_wssfls$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_1 = defineInlineFunction('kotlin.kotlin.collections.foldRight_9ug2j2$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_2 = defineInlineFunction('kotlin.kotlin.collections.foldRight_8vbxp4$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_3 = defineInlineFunction('kotlin.kotlin.collections.foldRight_1fuzy8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_4 = defineInlineFunction('kotlin.kotlin.collections.foldRight_lsgf76$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_5 = defineInlineFunction('kotlin.kotlin.collections.foldRight_v5l2cg$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_6 = defineInlineFunction('kotlin.kotlin.collections.foldRight_ej6ng6$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$], accumulator); - } - return accumulator; - }; - })); - var foldRight_7 = defineInlineFunction('kotlin.kotlin.collections.foldRight_i7w5ds$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(toBoxedChar($receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]), accumulator); - } - return accumulator; - }; - })); - var foldRightIndexed = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_et4u4i$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_le73fo$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_8zkega$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_ltx404$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_qk9kf8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_95xca2$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_lxtlx8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_gkwrji$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var foldRightIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_ivb0f8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, toBoxedChar($receiver[index]), accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var forEach = defineInlineFunction('kotlin.kotlin.collections.forEach_je628z$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_0 = defineInlineFunction('kotlin.kotlin.collections.forEach_l09evt$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_1 = defineInlineFunction('kotlin.kotlin.collections.forEach_q32uhv$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_2 = defineInlineFunction('kotlin.kotlin.collections.forEach_4l7qrh$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_3 = defineInlineFunction('kotlin.kotlin.collections.forEach_j4vz15$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_4 = defineInlineFunction('kotlin.kotlin.collections.forEach_w9sc9v$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_5 = defineInlineFunction('kotlin.kotlin.collections.forEach_txsb7r$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_6 = defineInlineFunction('kotlin.kotlin.collections.forEach_g04iob$', function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - action(element); - } - }); - var forEach_7 = defineInlineFunction('kotlin.kotlin.collections.forEach_kxoc7t$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, action) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - action(toBoxedChar(element)); - } - }; - })); - var forEachIndexed = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_arhcu7$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_1b870r$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_2042pt$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_71hk2v$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_xp2l85$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_fd0uwv$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_fchhez$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_jzv3dz$', function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = $receiver[tmp$]; - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), item); - } - }); - var forEachIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_u1r9l7$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var item = unboxChar($receiver[tmp$]); - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item)); - } - }; - })); - function max($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - if (isNaN_1(max)) - return max; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_1(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_0($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - if (isNaN_2(max)) - return max; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_2(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_1($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (Kotlin.compareTo(max, e) < 0) - max = e; - } - return max; - } - function max_2($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_0($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (max < e) - max = e; - } - return max; - } - function max_3($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_1($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (max < e) - max = e; - } - return max; - } - function max_4($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_2($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (max < e) - max = e; - } - return max; - } - function max_5($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_3($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (max.compareTo_11rb$(e) < 0) - max = e; - } - return max; - } - function max_6($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - if (isNaN_2(max)) - return max; - tmp$ = get_lastIndex_4($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_2(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_7($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - if (isNaN_1(max)) - return max; - tmp$ = get_lastIndex_5($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_1(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_8($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_7($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (max < e) - max = e; - } - return max; - } - var maxBy = defineInlineFunction('kotlin.kotlin.collections.maxBy_99hh6x$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_0 = defineInlineFunction('kotlin.kotlin.collections.maxBy_jirwv8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_1 = defineInlineFunction('kotlin.kotlin.collections.maxBy_p0tdr4$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_2 = defineInlineFunction('kotlin.kotlin.collections.maxBy_30vlmi$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_3 = defineInlineFunction('kotlin.kotlin.collections.maxBy_hom4ws$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_4 = defineInlineFunction('kotlin.kotlin.collections.maxBy_ksd00w$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_5 = defineInlineFunction('kotlin.kotlin.collections.maxBy_fvpt30$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_6 = defineInlineFunction('kotlin.kotlin.collections.maxBy_xt360o$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(maxElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - var maxBy_7 = defineInlineFunction('kotlin.kotlin.collections.maxBy_epurks$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver[0]; - var maxValue = selector(toBoxedChar(maxElem)); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(toBoxedChar(e)); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - function maxWith($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_0($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_0($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_1($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_1($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_2($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_2($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_3($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_3($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_4($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_4($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_5($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_5($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_6($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_6($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function maxWith_7($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver[0]; - tmp$ = get_lastIndex_7($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(toBoxedChar(max), toBoxedChar(e)) < 0) - max = e; - } - return max; - } - function min($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - if (isNaN_1(min)) - return min; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_1(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_0($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - if (isNaN_2(min)) - return min; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_2(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_1($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (Kotlin.compareTo(min, e) > 0) - min = e; - } - return min; - } - function min_2($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_0($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (min > e) - min = e; - } - return min; - } - function min_3($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_1($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (min > e) - min = e; - } - return min; - } - function min_4($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_2($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (min > e) - min = e; - } - return min; - } - function min_5($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_3($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (min.compareTo_11rb$(e) > 0) - min = e; - } - return min; - } - function min_6($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - if (isNaN_2(min)) - return min; - tmp$ = get_lastIndex_4($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_2(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_7($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - if (isNaN_1(min)) - return min; - tmp$ = get_lastIndex_5($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (isNaN_1(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_8($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_7($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (min > e) - min = e; - } - return min; - } - var minBy = defineInlineFunction('kotlin.kotlin.collections.minBy_99hh6x$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_0 = defineInlineFunction('kotlin.kotlin.collections.minBy_jirwv8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_1 = defineInlineFunction('kotlin.kotlin.collections.minBy_p0tdr4$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_2 = defineInlineFunction('kotlin.kotlin.collections.minBy_30vlmi$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_3 = defineInlineFunction('kotlin.kotlin.collections.minBy_hom4ws$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_4 = defineInlineFunction('kotlin.kotlin.collections.minBy_ksd00w$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_5 = defineInlineFunction('kotlin.kotlin.collections.minBy_fvpt30$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_6 = defineInlineFunction('kotlin.kotlin.collections.minBy_xt360o$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(minElem); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - var minBy_7 = defineInlineFunction('kotlin.kotlin.collections.minBy_epurks$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver[0]; - var minValue = selector(toBoxedChar(minElem)); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - var v = selector(toBoxedChar(e)); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - function minWith($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_0($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_0($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_1($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_1($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_2($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_2($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_3($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_3($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_4($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_4($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_5($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_5($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_6($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_6($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function minWith_7($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver[0]; - tmp$ = get_lastIndex_7($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver[i]; - if (comparator.compare(toBoxedChar(min), toBoxedChar(e)) > 0) - min = e; - } - return min; - } - function none($receiver) { - return $receiver.length === 0; - } - function none_0($receiver) { - return $receiver.length === 0; - } - function none_1($receiver) { - return $receiver.length === 0; - } - function none_2($receiver) { - return $receiver.length === 0; - } - function none_3($receiver) { - return $receiver.length === 0; - } - function none_4($receiver) { - return $receiver.length === 0; - } - function none_5($receiver) { - return $receiver.length === 0; - } - function none_6($receiver) { - return $receiver.length === 0; - } - function none_7($receiver) { - return $receiver.length === 0; - } - var none_8 = defineInlineFunction('kotlin.kotlin.collections.none_sfx99b$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_9 = defineInlineFunction('kotlin.kotlin.collections.none_c3i447$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_10 = defineInlineFunction('kotlin.kotlin.collections.none_247xw3$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_11 = defineInlineFunction('kotlin.kotlin.collections.none_il4kyb$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_12 = defineInlineFunction('kotlin.kotlin.collections.none_i1oc7r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_13 = defineInlineFunction('kotlin.kotlin.collections.none_u4nq1f$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_14 = defineInlineFunction('kotlin.kotlin.collections.none_3vq27r$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_15 = defineInlineFunction('kotlin.kotlin.collections.none_xffwn9$', function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) - return false; - } - return true; - }); - var none_16 = defineInlineFunction('kotlin.kotlin.collections.none_3ji0pj$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) - return false; - } - return true; - }; - })); - var reduce = defineInlineFunction('kotlin.kotlin.collections.reduce_5bz9yp$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_0 = defineInlineFunction('kotlin.kotlin.collections.reduce_ua0gmo$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_1 = defineInlineFunction('kotlin.kotlin.collections.reduce_5x6csy$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_2 = defineInlineFunction('kotlin.kotlin.collections.reduce_vuuzha$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_3 = defineInlineFunction('kotlin.kotlin.collections.reduce_8z4g8g$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_4 = defineInlineFunction('kotlin.kotlin.collections.reduce_m57mj6$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_5 = defineInlineFunction('kotlin.kotlin.collections.reduce_5rthjk$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_6 = defineInlineFunction('kotlin.kotlin.collections.reduce_if3lfm$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduce_7 = defineInlineFunction('kotlin.kotlin.collections.reduce_724a40$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = unboxChar(operation(toBoxedChar(accumulator), toBoxedChar($receiver[index]))); - } - return accumulator; - }; - })); - var reduceIndexed = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_f61gul$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_y1rlg4$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_ctdw5m$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_y7bnwe$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_54m7jg$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_mzocqy$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_i4uovg$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_fqu0be$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = operation(index, accumulator, $receiver[index]); - } - return accumulator; - }; - })); - var reduceIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_n25zu4$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[0]; - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = unboxChar(operation(index, toBoxedChar(accumulator), toBoxedChar($receiver[index]))); - } - return accumulator; - }; - })); - var reduceRight = defineInlineFunction('kotlin.kotlin.collections.reduceRight_m9c08d$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_0 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_ua0gmo$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_1 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_5x6csy$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_2 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_vuuzha$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_3 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_8z4g8g$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_4 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_m57mj6$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_5 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_5rthjk$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_6 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_if3lfm$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0], accumulator); - } - return accumulator; - }; - })); - var reduceRight_7 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_724a40$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = unboxChar(operation(toBoxedChar($receiver[tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0]), toBoxedChar(accumulator))); - } - return accumulator; - }; - })); - var reduceRightIndexed = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_cf9tch$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_m7z4lg$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_0 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_y1rlg4$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_964n91$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_1 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_ctdw5m$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_i2lc79$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_2 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_y7bnwe$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_tmsbgo$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_3 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_54m7jg$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_se6h4x$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_4 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_mzocqy$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_rjqryz$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_5 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_i4uovg$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_bvy38s$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_6 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_fqu0be$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_l1lu5t$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = operation(index, $receiver[index], accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var reduceRightIndexed_7 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_n25zu4$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_355ntz$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty array can't be reduced."); - var accumulator = $receiver[tmp$ = index, index = tmp$ - 1 | 0, tmp$]; - while (index >= 0) { - accumulator = unboxChar(operation(index, toBoxedChar($receiver[index]), toBoxedChar(accumulator))); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var sumBy = defineInlineFunction('kotlin.kotlin.collections.sumBy_9qh8u2$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_0 = defineInlineFunction('kotlin.kotlin.collections.sumBy_s616nk$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_1 = defineInlineFunction('kotlin.kotlin.collections.sumBy_sccsus$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_2 = defineInlineFunction('kotlin.kotlin.collections.sumBy_n2f0qi$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_3 = defineInlineFunction('kotlin.kotlin.collections.sumBy_8jxuvk$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_4 = defineInlineFunction('kotlin.kotlin.collections.sumBy_lv6o8c$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_5 = defineInlineFunction('kotlin.kotlin.collections.sumBy_a4xh9s$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_6 = defineInlineFunction('kotlin.kotlin.collections.sumBy_d84lg4$', function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumBy_7 = defineInlineFunction('kotlin.kotlin.collections.sumBy_izzzcg$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, selector) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - sum = sum + selector(toBoxedChar(element)) | 0; - } - return sum; - }; - })); - var sumByDouble = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_vyz3zq$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_0 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_kkr9hw$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_1 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_u2ap1s$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_2 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_suc1jq$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_3 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_rqe08c$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_4 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_8jdnkg$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_5 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_vuwwjw$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_6 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_1f8lq0$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += selector(element); - } - return sum; - }); - var sumByDouble_7 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_ik7e6s$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, selector) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - sum += selector(toBoxedChar(element)); - } - return sum; - }; - })); - function requireNoNulls($receiver) { - var tmp$, tmp$_0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (element == null) { - throw IllegalArgumentException_init_0('null element found in ' + $receiver + '.'); - } - } - return Kotlin.isArray(tmp$_0 = $receiver) ? tmp$_0 : throwCCE_0(); - } - var partition = defineInlineFunction('kotlin.kotlin.collections.partition_sfx99b$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_0 = defineInlineFunction('kotlin.kotlin.collections.partition_c3i447$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_1 = defineInlineFunction('kotlin.kotlin.collections.partition_247xw3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_2 = defineInlineFunction('kotlin.kotlin.collections.partition_il4kyb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_3 = defineInlineFunction('kotlin.kotlin.collections.partition_i1oc7r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_4 = defineInlineFunction('kotlin.kotlin.collections.partition_u4nq1f$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_5 = defineInlineFunction('kotlin.kotlin.collections.partition_3vq27r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_6 = defineInlineFunction('kotlin.kotlin.collections.partition_xffwn9$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_7 = defineInlineFunction('kotlin.kotlin.collections.partition_3ji0pj$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if (predicate(toBoxedChar(element))) { - first.add_11rb$(toBoxedChar(element)); - } - else { - second.add_11rb$(toBoxedChar(element)); - } - } - return new Pair_init(first, second); - }; - })); - var Math_0 = Math; - function zip($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_0($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_1($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_2($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_3($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_4($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_5($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_6($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_7($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to(toBoxedChar($receiver[i]), other[i])); - } - return list; - } - var zip_8 = defineInlineFunction('kotlin.kotlin.collections.zip_t5fk8e$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_9 = defineInlineFunction('kotlin.kotlin.collections.zip_c731w7$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_10 = defineInlineFunction('kotlin.kotlin.collections.zip_ochmv5$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_11 = defineInlineFunction('kotlin.kotlin.collections.zip_fvmov$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_12 = defineInlineFunction('kotlin.kotlin.collections.zip_g0832p$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_13 = defineInlineFunction('kotlin.kotlin.collections.zip_cpiwht$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_14 = defineInlineFunction('kotlin.kotlin.collections.zip_p5twxn$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_15 = defineInlineFunction('kotlin.kotlin.collections.zip_6fiayp$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_16 = defineInlineFunction('kotlin.kotlin.collections.zip_xwrum3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform(toBoxedChar($receiver[i]), other[i])); - } - return list; - }; - })); - function zip_17($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_18($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_19($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_20($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_21($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_22($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_23($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_24($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - } - function zip_25($receiver, other) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to(toBoxedChar($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0]), element)); - } - return list; - } - var zip_26 = defineInlineFunction('kotlin.kotlin.collections.zip_aoaibi$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_27 = defineInlineFunction('kotlin.kotlin.collections.zip_2fxjb5$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_28 = defineInlineFunction('kotlin.kotlin.collections.zip_ey57vj$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_29 = defineInlineFunction('kotlin.kotlin.collections.zip_582drv$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_30 = defineInlineFunction('kotlin.kotlin.collections.zip_5584fz$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_31 = defineInlineFunction('kotlin.kotlin.collections.zip_dszx9d$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_32 = defineInlineFunction('kotlin.kotlin.collections.zip_p8lavz$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_33 = defineInlineFunction('kotlin.kotlin.collections.zip_e6btvt$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0], element)); - } - return list; - }; - })); - var zip_34 = defineInlineFunction('kotlin.kotlin.collections.zip_imz1rz$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = $receiver.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault(other, 10), arraySize)); - var i = 0; - tmp$ = other.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform(toBoxedChar($receiver[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0]), element)); - } - return list; - }; - })); - function zip_35($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_36($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_37($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_38($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_39($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_40($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_41($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to($receiver[i], other[i])); - } - return list; - } - function zip_42($receiver, other) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(to(toBoxedChar($receiver[i]), toBoxedChar(other[i]))); - } - return list; - } - var zip_43 = defineInlineFunction('kotlin.kotlin.collections.zip_fvjg0r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_44 = defineInlineFunction('kotlin.kotlin.collections.zip_u8n9wb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_45 = defineInlineFunction('kotlin.kotlin.collections.zip_2l2rw1$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_46 = defineInlineFunction('kotlin.kotlin.collections.zip_3bxm8r$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_47 = defineInlineFunction('kotlin.kotlin.collections.zip_h04u5h$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_48 = defineInlineFunction('kotlin.kotlin.collections.zip_t5hjvf$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_49 = defineInlineFunction('kotlin.kotlin.collections.zip_l9qpsl$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform($receiver[i], other[i])); - } - return list; - }; - })); - var zip_50 = defineInlineFunction('kotlin.kotlin.collections.zip_rvvoh1$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - var Math_0 = Math; - return function ($receiver, other, transform) { - var size = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(size); - for (var i = 0; i < size; i++) { - list.add_11rb$(transform(toBoxedChar($receiver[i]), toBoxedChar(other[i]))); - } - return list; - }; - })); - function joinTo($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - appendElement_0(buffer, element, transform); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_0($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_1($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_2($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_3($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_4($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_5($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_6($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(element)); - else - buffer.append_gw00v9$(element.toString()); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinTo_7($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = unboxChar($receiver[tmp$]); - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - if (transform != null) - buffer.append_gw00v9$(transform(toBoxedChar(element))); - else - buffer.append_s8itvh$(element); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinToString($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_0($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_0($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_1($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_1($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_2($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_2($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_3($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_3($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_4($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_4($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_5($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_5($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_6($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_6($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function joinToString_7($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_7($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function asIterable$lambda(this$asIterable) { - return function () { - return Kotlin.arrayIterator(this$asIterable); - }; - } - function Iterable$ObjectLiteral(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Iterable$ObjectLiteral.prototype.iterator = function () { - return this.closure$iterator(); - }; - Iterable$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterable]}; - function asIterable($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda($receiver)); - } - function asIterable$lambda_0(this$asIterable) { - return function () { - return Kotlin.byteArrayIterator(this$asIterable); - }; - } - function asIterable_0($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_0($receiver)); - } - function asIterable$lambda_1(this$asIterable) { - return function () { - return Kotlin.shortArrayIterator(this$asIterable); - }; - } - function asIterable_1($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_1($receiver)); - } - function asIterable$lambda_2(this$asIterable) { - return function () { - return Kotlin.intArrayIterator(this$asIterable); - }; - } - function asIterable_2($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_2($receiver)); - } - function asIterable$lambda_3(this$asIterable) { - return function () { - return Kotlin.longArrayIterator(this$asIterable); - }; - } - function asIterable_3($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_3($receiver)); - } - function asIterable$lambda_4(this$asIterable) { - return function () { - return Kotlin.floatArrayIterator(this$asIterable); - }; - } - function asIterable_4($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_4($receiver)); - } - function asIterable$lambda_5(this$asIterable) { - return function () { - return Kotlin.doubleArrayIterator(this$asIterable); - }; - } - function asIterable_5($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_5($receiver)); - } - function asIterable$lambda_6(this$asIterable) { - return function () { - return Kotlin.booleanArrayIterator(this$asIterable); - }; - } - function asIterable_6($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_6($receiver)); - } - function asIterable$lambda_7(this$asIterable) { - return function () { - return Kotlin.charArrayIterator(this$asIterable); - }; - } - function asIterable_7($receiver) { - if ($receiver.length === 0) - return emptyList(); - return new Iterable$ObjectLiteral(asIterable$lambda_7($receiver)); - } - function asSequence$lambda(this$asSequence) { - return function () { - return Kotlin.arrayIterator(this$asSequence); - }; - } - function Sequence$ObjectLiteral(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function asSequence($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda($receiver)); - } - function asSequence$lambda_0(this$asSequence) { - return function () { - return Kotlin.byteArrayIterator(this$asSequence); - }; - } - function asSequence_0($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_0($receiver)); - } - function asSequence$lambda_1(this$asSequence) { - return function () { - return Kotlin.shortArrayIterator(this$asSequence); - }; - } - function asSequence_1($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_1($receiver)); - } - function asSequence$lambda_2(this$asSequence) { - return function () { - return Kotlin.intArrayIterator(this$asSequence); - }; - } - function asSequence_2($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_2($receiver)); - } - function asSequence$lambda_3(this$asSequence) { - return function () { - return Kotlin.longArrayIterator(this$asSequence); - }; - } - function asSequence_3($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_3($receiver)); - } - function asSequence$lambda_4(this$asSequence) { - return function () { - return Kotlin.floatArrayIterator(this$asSequence); - }; - } - function asSequence_4($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_4($receiver)); - } - function asSequence$lambda_5(this$asSequence) { - return function () { - return Kotlin.doubleArrayIterator(this$asSequence); - }; - } - function asSequence_5($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_5($receiver)); - } - function asSequence$lambda_6(this$asSequence) { - return function () { - return Kotlin.booleanArrayIterator(this$asSequence); - }; - } - function asSequence_6($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_6($receiver)); - } - function asSequence$lambda_7(this$asSequence) { - return function () { - return Kotlin.charArrayIterator(this$asSequence); - }; - } - function asSequence_7($receiver) { - if ($receiver.length === 0) - return emptySequence(); - return new Sequence$ObjectLiteral(asSequence$lambda_7($receiver)); - } - function average($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_0($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_1($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_2($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_3($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_4($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_5($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_6($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_7($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_8($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_9($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_10($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - count = count + 1 | 0; - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function sum($receiver) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + element; - } - return sum; - } - function sum_0($receiver) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + element; - } - return sum; - } - function sum_1($receiver) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + element | 0; - } - return sum; - } - function sum_2($receiver) { - var tmp$; - var sum = L0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum.add(element); - } - return sum; - } - function sum_3($receiver) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - } - return sum; - } - function sum_4($receiver) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - } - return sum; - } - function sum_5($receiver) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + element; - } - return sum; - } - function sum_6($receiver) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + element; - } - return sum; - } - function sum_7($receiver) { - var tmp$; - var sum = 0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum + element | 0; - } - return sum; - } - function sum_8($receiver) { - var tmp$; - var sum = L0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum = sum.add(element); - } - return sum; - } - function sum_9($receiver) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - } - return sum; - } - function sum_10($receiver) { - var tmp$; - var sum = 0.0; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - sum += element; - } - return sum; - } - var component1_8 = defineInlineFunction('kotlin.kotlin.collections.component1_2p1efm$', function ($receiver) { - return $receiver.get_za3lpa$(0); - }); - var component2_8 = defineInlineFunction('kotlin.kotlin.collections.component2_2p1efm$', function ($receiver) { - return $receiver.get_za3lpa$(1); - }); - var component3_8 = defineInlineFunction('kotlin.kotlin.collections.component3_2p1efm$', function ($receiver) { - return $receiver.get_za3lpa$(2); - }); - var component4_8 = defineInlineFunction('kotlin.kotlin.collections.component4_2p1efm$', function ($receiver) { - return $receiver.get_za3lpa$(3); - }); - var component5_8 = defineInlineFunction('kotlin.kotlin.collections.component5_2p1efm$', function ($receiver) { - return $receiver.get_za3lpa$(4); - }); - function contains_8($receiver, element) { - if (Kotlin.isType($receiver, Collection)) - return $receiver.contains_11rb$(element); - return indexOf_8($receiver, element) >= 0; - } - function elementAt$lambda(closure$index) { - return function (it) { - throw new IndexOutOfBoundsException("Collection doesn't contain element at index " + closure$index + '.'); - }; - } - function elementAt_8($receiver, index) { - if (Kotlin.isType($receiver, List)) - return $receiver.get_za3lpa$(index); - return elementAtOrElse_8($receiver, index, elementAt$lambda(index)); - } - var elementAt_9 = defineInlineFunction('kotlin.kotlin.collections.elementAt_yzln2o$', function ($receiver, index) { - return $receiver.get_za3lpa$(index); - }); - function elementAtOrElse_8($receiver, index, defaultValue) { - var tmp$; - if (Kotlin.isType($receiver, List)) { - return index >= 0 && index <= get_lastIndex_8($receiver) ? $receiver.get_za3lpa$(index) : defaultValue(index); - } - if (index < 0) - return defaultValue(index); - var iterator = $receiver.iterator(); - var count = 0; - while (iterator.hasNext()) { - var element = iterator.next(); - if (index === (tmp$ = count, count = tmp$ + 1 | 0, tmp$)) - return element; - } - return defaultValue(index); - } - var elementAtOrElse_9 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrElse_q7vxk6$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_55thoc$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver.get_za3lpa$(index) : defaultValue(index); - }; - })); - function elementAtOrNull_8($receiver, index) { - var tmp$; - if (Kotlin.isType($receiver, List)) - return getOrNull_8($receiver, index); - if (index < 0) - return null; - var iterator = $receiver.iterator(); - var count = 0; - while (iterator.hasNext()) { - var element = iterator.next(); - if (index === (tmp$ = count, count = tmp$ + 1 | 0, tmp$)) - return element; - } - return null; - } - var elementAtOrNull_9 = defineInlineFunction('kotlin.kotlin.collections.elementAtOrNull_yzln2o$', wrapFunction(function () { - var getOrNull = _.kotlin.collections.getOrNull_yzln2o$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var find_8 = defineInlineFunction('kotlin.kotlin.collections.find_6jwkkr$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var findLast_8 = defineInlineFunction('kotlin.kotlin.collections.findLast_6jwkkr$', function ($receiver, predicate) { - var tmp$; - var last = null; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - last = element; - } - } - return last; - }); - var findLast_9 = defineInlineFunction('kotlin.kotlin.collections.findLast_dmm9ex$', function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - var element = iterator.previous(); - if (predicate(element)) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }); - function first_17($receiver) { - if (Kotlin.isType($receiver, List)) - return first_18($receiver); - else { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw new NoSuchElementException('Collection is empty.'); - return iterator.next(); - } - } - function first_18($receiver) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('List is empty.'); - return $receiver.get_za3lpa$(0); - } - var first_19 = defineInlineFunction('kotlin.kotlin.collections.first_6jwkkr$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Collection contains no element matching the predicate.'); - }; - })); - function firstOrNull_17($receiver) { - if (Kotlin.isType($receiver, List)) - if ($receiver.isEmpty()) - return null; - else - return $receiver.get_za3lpa$(0); - else { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - return iterator.next(); - } - } - function firstOrNull_18($receiver) { - return $receiver.isEmpty() ? null : $receiver.get_za3lpa$(0); - } - var firstOrNull_19 = defineInlineFunction('kotlin.kotlin.collections.firstOrNull_6jwkkr$', function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return element; - } - return null; - }); - var getOrElse_8 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_q7vxk6$', wrapFunction(function () { - var get_lastIndex = _.kotlin.collections.get_lastIndex_55thoc$; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver.get_za3lpa$(index) : defaultValue(index); - }; - })); - function getOrNull_8($receiver, index) { - return index >= 0 && index <= get_lastIndex_8($receiver) ? $receiver.get_za3lpa$(index) : null; - } - function indexOf_8($receiver, element) { - var tmp$; - if (Kotlin.isType($receiver, List)) - return $receiver.indexOf_11rb$(element); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (equals(element, item)) - return index; - index = index + 1 | 0; - } - return -1; - } - function indexOf_9($receiver, element) { - return $receiver.indexOf_11rb$(element); - } - var indexOfFirst_8 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_6jwkkr$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, predicate) { - var tmp$; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (predicate(item)) - return index; - index = index + 1 | 0; - } - return -1; - }; - })); - var indexOfFirst_9 = defineInlineFunction('kotlin.kotlin.collections.indexOfFirst_dmm9ex$', function ($receiver, predicate) { - var tmp$; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (predicate(item)) - return index; - index = index + 1 | 0; - } - return -1; - }); - var indexOfLast_8 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_6jwkkr$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, predicate) { - var tmp$; - var lastIndex = -1; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (predicate(item)) - lastIndex = index; - index = index + 1 | 0; - } - return lastIndex; - }; - })); - var indexOfLast_9 = defineInlineFunction('kotlin.kotlin.collections.indexOfLast_dmm9ex$', function ($receiver, predicate) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - if (predicate(iterator.previous())) { - return iterator.nextIndex(); - } - } - return -1; - }); - function last_17($receiver) { - if (Kotlin.isType($receiver, List)) - return last_18($receiver); - else { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw new NoSuchElementException('Collection is empty.'); - var last = iterator.next(); - while (iterator.hasNext()) - last = iterator.next(); - return last; - } - } - function last_18($receiver) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('List is empty.'); - return $receiver.get_za3lpa$(get_lastIndex_8($receiver)); - } - var last_19 = defineInlineFunction('kotlin.kotlin.collections.last_6jwkkr$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var last = null; - var found = false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - last = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Collection contains no element matching the predicate.'); - return (tmp$_0 = last) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - }; - })); - var last_20 = defineInlineFunction('kotlin.kotlin.collections.last_dmm9ex$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - var element = iterator.previous(); - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('List contains no element matching the predicate.'); - }; - })); - function lastIndexOf_8($receiver, element) { - var tmp$; - if (Kotlin.isType($receiver, List)) - return $receiver.lastIndexOf_11rb$(element); - var lastIndex = -1; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (equals(element, item)) - lastIndex = index; - index = index + 1 | 0; - } - return lastIndex; - } - function lastIndexOf_9($receiver, element) { - return $receiver.lastIndexOf_11rb$(element); - } - function lastOrNull_17($receiver) { - if (Kotlin.isType($receiver, List)) - return $receiver.isEmpty() ? null : $receiver.get_za3lpa$($receiver.size - 1 | 0); - else { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var last = iterator.next(); - while (iterator.hasNext()) - last = iterator.next(); - return last; - } - } - function lastOrNull_18($receiver) { - return $receiver.isEmpty() ? null : $receiver.get_za3lpa$($receiver.size - 1 | 0); - } - var lastOrNull_19 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_6jwkkr$', function ($receiver, predicate) { - var tmp$; - var last = null; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - last = element; - } - } - return last; - }); - var lastOrNull_20 = defineInlineFunction('kotlin.kotlin.collections.lastOrNull_dmm9ex$', function ($receiver, predicate) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - var element = iterator.previous(); - if (predicate(element)) - return element; - } - return null; - }); - var random_17 = defineInlineFunction('kotlin.kotlin.collections.random_4c7yge$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_iscd7z$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - function random_18($receiver, random) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('Collection is empty.'); - return elementAt_8($receiver, random.nextInt_za3lpa$($receiver.size)); - } - function single_17($receiver) { - if (Kotlin.isType($receiver, List)) - return single_18($receiver); - else { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw new NoSuchElementException('Collection is empty.'); - var single = iterator.next(); - if (iterator.hasNext()) - throw IllegalArgumentException_init_0('Collection has more than one element.'); - return single; - } - } - function single_18($receiver) { - var tmp$; - switch ($receiver.size) { - case 0: - throw new NoSuchElementException('List is empty.'); - case 1: - tmp$ = $receiver.get_za3lpa$(0); - break; - default:throw IllegalArgumentException_init_0('List has more than one element.'); - } - return tmp$; - } - var single_19 = defineInlineFunction('kotlin.kotlin.collections.single_6jwkkr$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Collection contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Collection contains no element matching the predicate.'); - return (tmp$_0 = single) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - }; - })); - function singleOrNull_17($receiver) { - if (Kotlin.isType($receiver, List)) - return $receiver.size === 1 ? $receiver.get_za3lpa$(0) : null; - else { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var single = iterator.next(); - if (iterator.hasNext()) - return null; - return single; - } - } - function singleOrNull_18($receiver) { - return $receiver.size === 1 ? $receiver.get_za3lpa$(0) : null; - } - var singleOrNull_19 = defineInlineFunction('kotlin.kotlin.collections.singleOrNull_6jwkkr$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - function drop_8($receiver, n) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return toList_8($receiver); - var list; - if (Kotlin.isType($receiver, Collection)) { - var resultSize = $receiver.size - n | 0; - if (resultSize <= 0) - return emptyList(); - if (resultSize === 1) - return listOf(last_17($receiver)); - list = ArrayList_init_0(resultSize); - if (Kotlin.isType($receiver, List)) { - if (Kotlin.isType($receiver, RandomAccess)) { - tmp$ = $receiver.size; - for (var index = n; index < tmp$; index++) - list.add_11rb$($receiver.get_za3lpa$(index)); - } - else { - tmp$_0 = $receiver.listIterator_za3lpa$(n); - while (tmp$_0.hasNext()) { - var item = tmp$_0.next(); - list.add_11rb$(item); - } - } - return list; - } - } - else { - list = ArrayList_init(); - } - var count = 0; - tmp$_1 = $receiver.iterator(); - while (tmp$_1.hasNext()) { - var item_0 = tmp$_1.next(); - if ((tmp$_2 = count, count = tmp$_2 + 1 | 0, tmp$_2) >= n) - list.add_11rb$(item_0); - } - return optimizeReadOnlyList(list); - } - function dropLast_8($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_8($receiver, coerceAtLeast_2($receiver.size - n | 0, 0)); - } - var dropLastWhile_8 = defineInlineFunction('kotlin.kotlin.collections.dropLastWhile_dmm9ex$', wrapFunction(function () { - var take = _.kotlin.collections.take_ba2ldo$; - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver, predicate) { - if (!$receiver.isEmpty()) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - if (!predicate(iterator.previous())) { - return take($receiver, iterator.nextIndex() + 1 | 0); - } - } - } - return emptyList(); - }; - })); - var dropWhile_8 = defineInlineFunction('kotlin.kotlin.collections.dropWhile_6jwkkr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var yielding = false; - var list = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (yielding) - list.add_11rb$(item); - else if (!predicate(item)) { - list.add_11rb$(item); - yielding = true; - } - } - return list; - }; - })); - var filter_8 = defineInlineFunction('kotlin.kotlin.collections.filter_6jwkkr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.filterIndexed_p81qtj$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (predicate(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIndexedTo_8 = defineInlineFunction('kotlin.kotlin.collections.filterIndexedTo_i2yxnm$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (predicate(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIsInstance_0 = defineInlineFunction('kotlin.kotlin.collections.filterIsInstance_6nw4pr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function (R_0, isR, $receiver) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (isR(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - var filterIsInstanceTo_0 = defineInlineFunction('kotlin.kotlin.collections.filterIsInstanceTo_v8wdbu$', function (R_0, isR, $receiver, destination) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (isR(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterNot_8 = defineInlineFunction('kotlin.kotlin.collections.filterNot_6jwkkr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }; - })); - function filterNotNull_0($receiver) { - return filterNotNullTo_0($receiver, ArrayList_init()); - } - function filterNotNullTo_0($receiver, destination) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (element != null) - destination.add_11rb$(element); - } - return destination; - } - var filterNotTo_8 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_cslyey$', function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_8 = defineInlineFunction('kotlin.kotlin.collections.filterTo_cslyey$', function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - function slice_17($receiver, indices) { - if (indices.isEmpty()) { - return emptyList(); - } - return toList_8($receiver.subList_vux9f0$(indices.start, indices.endInclusive + 1 | 0)); - } - function slice_18($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return emptyList(); - var list = ArrayList_init_0(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - list.add_11rb$($receiver.get_za3lpa$(index)); - } - return list; - } - function take_8($receiver, n) { - var tmp$, tmp$_0; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - if (Kotlin.isType($receiver, Collection)) { - if (n >= $receiver.size) - return toList_8($receiver); - if (n === 1) - return listOf(first_17($receiver)); - } - var count = 0; - var list = ArrayList_init_0(n); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if ((tmp$_0 = count, count = tmp$_0 + 1 | 0, tmp$_0) === n) - break; - list.add_11rb$(item); - } - return optimizeReadOnlyList(list); - } - function takeLast_8($receiver, n) { - var tmp$; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - return emptyList(); - var size = $receiver.size; - if (n >= size) - return toList_8($receiver); - if (n === 1) - return listOf(last_18($receiver)); - var list = ArrayList_init_0(n); - if (Kotlin.isType($receiver, RandomAccess)) { - for (var index = size - n | 0; index < size; index++) - list.add_11rb$($receiver.get_za3lpa$(index)); - } - else { - tmp$ = $receiver.listIterator_za3lpa$(size - n | 0); - while (tmp$.hasNext()) { - var item = tmp$.next(); - list.add_11rb$(item); - } - } - return list; - } - var takeLastWhile_8 = defineInlineFunction('kotlin.kotlin.collections.takeLastWhile_dmm9ex$', wrapFunction(function () { - var emptyList = _.kotlin.collections.emptyList_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toList = _.kotlin.collections.toList_7wnvza$; - return function ($receiver, predicate) { - if ($receiver.isEmpty()) - return emptyList(); - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - if (!predicate(iterator.previous())) { - iterator.next(); - var expectedSize = $receiver.size - iterator.nextIndex() | 0; - if (expectedSize === 0) - return emptyList(); - var $receiver_0 = ArrayList_init(expectedSize); - while (iterator.hasNext()) - $receiver_0.add_11rb$(iterator.next()); - return $receiver_0; - } - } - return toList($receiver); - }; - })); - var takeWhile_8 = defineInlineFunction('kotlin.kotlin.collections.takeWhile_6jwkkr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, predicate) { - var tmp$; - var list = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (!predicate(item)) - break; - list.add_11rb$(item); - } - return list; - }; - })); - function reversed_8($receiver) { - if (Kotlin.isType($receiver, Collection) && $receiver.size <= 1) - return toList_8($receiver); - var list = toMutableList_8($receiver); - reverse_8(list); - return list; - } - var sortBy_0 = defineInlineFunction('kotlin.kotlin.collections.sortBy_yag3x6$', wrapFunction(function () { - var sortWith = _.kotlin.collections.sortWith_nqfjgj$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - if ($receiver.size > 1) { - sortWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - } - }; - })); - var sortByDescending_0 = defineInlineFunction('kotlin.kotlin.collections.sortByDescending_yag3x6$', wrapFunction(function () { - var sortWith = _.kotlin.collections.sortWith_nqfjgj$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - if ($receiver.size > 1) { - sortWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - } - }; - })); - function sortDescending_7($receiver) { - sortWith_0($receiver, reverseOrder()); - } - function sorted_7($receiver) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) { - if ($receiver.size <= 1) - return toList_8($receiver); - var $receiver_0 = Kotlin.isArray(tmp$ = copyToArray($receiver)) ? tmp$ : throwCCE_0(); - sort_1($receiver_0); - return asList($receiver_0); - } - var $receiver_1 = toMutableList_8($receiver); - sort_10($receiver_1); - return $receiver_1; - } - var sortedBy_8 = defineInlineFunction('kotlin.kotlin.collections.sortedBy_nd8ern$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_eknfly$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedByDescending_8 = defineInlineFunction('kotlin.kotlin.collections.sortedByDescending_nd8ern$', wrapFunction(function () { - var sortedWith = _.kotlin.collections.sortedWith_eknfly$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - function sortedDescending_7($receiver) { - return sortedWith_8($receiver, reverseOrder()); - } - function sortedWith_8($receiver, comparator) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) { - if ($receiver.size <= 1) - return toList_8($receiver); - var $receiver_0 = Kotlin.isArray(tmp$ = copyToArray($receiver)) ? tmp$ : throwCCE_0(); - sortWith($receiver_0, comparator); - return asList($receiver_0); - } - var $receiver_1 = toMutableList_8($receiver); - sortWith_0($receiver_1, comparator); - return $receiver_1; - } - function toBooleanArray_0($receiver) { - var tmp$, tmp$_0; - var result = Kotlin.booleanArray($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toByteArray_0($receiver) { - var tmp$, tmp$_0; - var result = new Int8Array($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toCharArray_0($receiver) { - var tmp$, tmp$_0; - var result = Kotlin.charArray($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toDoubleArray_0($receiver) { - var tmp$, tmp$_0; - var result = new Float64Array($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toFloatArray_0($receiver) { - var tmp$, tmp$_0; - var result = new Float32Array($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toIntArray_0($receiver) { - var tmp$, tmp$_0; - var result = new Int32Array($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toLongArray_0($receiver) { - var tmp$, tmp$_0; - var result = Kotlin.longArray($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function toShortArray_0($receiver) { - var tmp$, tmp$_0; - var result = new Int16Array($receiver.size); - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - var associate_8 = defineInlineFunction('kotlin.kotlin.collections.associate_wbhhmp$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity(collectionSizeOrDefault($receiver, 10)), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associateBy_17 = defineInlineFunction('kotlin.kotlin.collections.associateBy_dvm6j0$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity(collectionSizeOrDefault($receiver, 10)), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_18 = defineInlineFunction('kotlin.kotlin.collections.associateBy_6kgnfi$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity(collectionSizeOrDefault($receiver, 10)), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateByTo_17 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_q9k9lv$', function ($receiver, destination, keySelector) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_18 = defineInlineFunction('kotlin.kotlin.collections.associateByTo_5s21dh$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateTo_8 = defineInlineFunction('kotlin.kotlin.collections.associateTo_tp6zhs$', function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateWith = defineInlineFunction('kotlin.kotlin.collections.associateWith_dvm6j0$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, valueSelector) { - var result = LinkedHashMap_init(coerceAtLeast(mapCapacity(collectionSizeOrDefault($receiver, 10)), 16)); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result.put_xwzc9p$(element, valueSelector(element)); - } - return result; - }; - })); - var associateWithTo = defineInlineFunction('kotlin.kotlin.collections.associateWithTo_u35i63$', function ($receiver, destination, valueSelector) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(element, valueSelector(element)); - } - return destination; - }); - function toCollection_8($receiver, destination) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(item); - } - return destination; - } - function toHashSet_8($receiver) { - return toCollection_8($receiver, HashSet_init_2(mapCapacity(collectionSizeOrDefault($receiver, 12)))); - } - function toList_8($receiver) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) { - switch ($receiver.size) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf(Kotlin.isType($receiver, List) ? $receiver.get_za3lpa$(0) : $receiver.iterator().next()); - break; - default:tmp$ = toMutableList_9($receiver); - break; - } - return tmp$; - } - return optimizeReadOnlyList(toMutableList_8($receiver)); - } - function toMutableList_8($receiver) { - if (Kotlin.isType($receiver, Collection)) - return toMutableList_9($receiver); - return toCollection_8($receiver, ArrayList_init()); - } - function toMutableList_9($receiver) { - return ArrayList_init_1($receiver); - } - function toSet_8($receiver) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) { - switch ($receiver.size) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf(Kotlin.isType($receiver, List) ? $receiver.get_za3lpa$(0) : $receiver.iterator().next()); - break; - default:tmp$ = toCollection_8($receiver, LinkedHashSet_init_3(mapCapacity($receiver.size))); - break; - } - return tmp$; - } - return optimizeReadOnlySet(toCollection_8($receiver, LinkedHashSet_init_0())); - } - var flatMap_8 = defineInlineFunction('kotlin.kotlin.collections.flatMap_en2w03$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_8 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_farraf$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var groupBy_17 = defineInlineFunction('kotlin.kotlin.collections.groupBy_dvm6j0$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_18 = defineInlineFunction('kotlin.kotlin.collections.groupBy_6kgnfi$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_17 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_2nn80$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_18 = defineInlineFunction('kotlin.kotlin.collections.groupByTo_spnc2q$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupingBy_0 = defineInlineFunction('kotlin.kotlin.collections.groupingBy_dvm6j0$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Grouping = _.kotlin.collections.Grouping; - function groupingBy$ObjectLiteral(this$groupingBy, closure$keySelector) { - this.this$groupingBy = this$groupingBy; - this.closure$keySelector = closure$keySelector; - } - groupingBy$ObjectLiteral.prototype.sourceIterator = function () { - return this.this$groupingBy.iterator(); - }; - groupingBy$ObjectLiteral.prototype.keyOf_11rb$ = function (element) { - return this.closure$keySelector(element); - }; - groupingBy$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Grouping]}; - return function ($receiver, keySelector) { - return new groupingBy$ObjectLiteral($receiver, keySelector); - }; - })); - var map_8 = defineInlineFunction('kotlin.kotlin.collections.map_dvm6j0$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var mapIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.mapIndexed_yigmvk$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, transform) { - var destination = ArrayList_init(collectionSizeOrDefault($receiver, 10)); - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)); - } - return destination; - }; - })); - var mapIndexedNotNull_0 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedNotNull_aw5p9p$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - var tmp$_1; - if ((tmp$_1 = transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedNotNullTo_0 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedNotNullTo_s7kjlj$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - var tmp$_1; - if ((tmp$_1 = transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedTo_8 = defineInlineFunction('kotlin.kotlin.collections.mapIndexedTo_qixlg$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)); - } - return destination; - }; - })); - var mapNotNull_0 = defineInlineFunction('kotlin.kotlin.collections.mapNotNull_3fhhkf$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapNotNullTo_0 = defineInlineFunction('kotlin.kotlin.collections.mapNotNullTo_p5b1il$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapTo_8 = defineInlineFunction('kotlin.kotlin.collections.mapTo_h3il0w$', function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(item)); - } - return destination; - }); - function withIndex$lambda_8(this$withIndex) { - return function () { - return this$withIndex.iterator(); - }; - } - function withIndex_8($receiver) { - return new IndexingIterable(withIndex$lambda_8($receiver)); - } - function distinct_8($receiver) { - return toList_8(toMutableSet_8($receiver)); - } - var distinctBy_8 = defineInlineFunction('kotlin.kotlin.collections.distinctBy_dvm6j0$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, selector) { - var tmp$; - var set = HashSet_init(); - var list = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = selector(e); - if (set.add_11rb$(key)) - list.add_11rb$(e); - } - return list; - }; - })); - function intersect_8($receiver, other) { - var set = toMutableSet_8($receiver); - retainAll_2(set, other); - return set; - } - function subtract_8($receiver, other) { - var set = toMutableSet_8($receiver); - removeAll_2(set, other); - return set; - } - function toMutableSet_8($receiver) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) - tmp$ = LinkedHashSet_init_1($receiver); - else - tmp$ = toCollection_8($receiver, LinkedHashSet_init_0()); - return tmp$; - } - function union_8($receiver, other) { - var set = toMutableSet_8($receiver); - addAll(set, other); - return set; - } - var all_8 = defineInlineFunction('kotlin.kotlin.collections.all_6jwkkr$', wrapFunction(function () { - var Collection = _.kotlin.collections.Collection; - return function ($receiver, predicate) { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) - return true; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) - return false; - } - return true; - }; - })); - function any_17($receiver) { - if (Kotlin.isType($receiver, Collection)) - return !$receiver.isEmpty(); - return $receiver.iterator().hasNext(); - } - var any_18 = defineInlineFunction('kotlin.kotlin.collections.any_6jwkkr$', wrapFunction(function () { - var Collection = _.kotlin.collections.Collection; - return function ($receiver, predicate) { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) - return false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return true; - } - return false; - }; - })); - function count_17($receiver) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) - return $receiver.size; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - checkCountOverflow((count = count + 1 | 0, count)); - } - return count; - } - var count_18 = defineInlineFunction('kotlin.kotlin.collections.count_4c7yge$', function ($receiver) { - return $receiver.size; - }); - var count_19 = defineInlineFunction('kotlin.kotlin.collections.count_6jwkkr$', wrapFunction(function () { - var Collection = _.kotlin.collections.Collection; - var checkCountOverflow = _.kotlin.collections.checkCountOverflow_za3lpa$; - return function ($receiver, predicate) { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) - return 0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - checkCountOverflow((count = count + 1 | 0, count)); - } - return count; - }; - })); - var fold_8 = defineInlineFunction('kotlin.kotlin.collections.fold_l1hrho$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var foldIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.foldIndexed_a080b4$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - accumulator = operation(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), accumulator, element); - } - return accumulator; - }; - })); - var foldRight_8 = defineInlineFunction('kotlin.kotlin.collections.foldRight_flo3fi$', function ($receiver, initial, operation) { - var accumulator = initial; - if (!$receiver.isEmpty()) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - accumulator = operation(iterator.previous(), accumulator); - } - } - return accumulator; - }); - var foldRightIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.foldRightIndexed_nj6056$', function ($receiver, initial, operation) { - var accumulator = initial; - if (!$receiver.isEmpty()) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - while (iterator.hasPrevious()) { - var index = iterator.previousIndex(); - accumulator = operation(index, iterator.previous(), accumulator); - } - } - return accumulator; - }); - var forEach_8 = defineInlineFunction('kotlin.kotlin.collections.forEach_i7id1t$', function ($receiver, action) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - action(element); - } - }); - var forEachIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.forEachIndexed_g8ms6t$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - action(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item); - } - }; - })); - function max_9($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - if (isNaN_1(max)) - return max; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_1(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_10($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - if (isNaN_2(max)) - return max; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_2(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_11($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (Kotlin.compareTo(max, e) < 0) - max = e; - } - return max; - } - var maxBy_8 = defineInlineFunction('kotlin.kotlin.collections.maxBy_nd8ern$', function ($receiver, selector) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var maxElem = iterator.next(); - var maxValue = selector(maxElem); - while (iterator.hasNext()) { - var e = iterator.next(); - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }); - function maxWith_8($receiver, comparator) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function min_9($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - if (isNaN_1(min)) - return min; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_1(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_10($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - if (isNaN_2(min)) - return min; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_2(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_11($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (Kotlin.compareTo(min, e) > 0) - min = e; - } - return min; - } - var minBy_8 = defineInlineFunction('kotlin.kotlin.collections.minBy_nd8ern$', function ($receiver, selector) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var minElem = iterator.next(); - var minValue = selector(minElem); - while (iterator.hasNext()) { - var e = iterator.next(); - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }); - function minWith_8($receiver, comparator) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function none_17($receiver) { - if (Kotlin.isType($receiver, Collection)) - return $receiver.isEmpty(); - return !$receiver.iterator().hasNext(); - } - var none_18 = defineInlineFunction('kotlin.kotlin.collections.none_6jwkkr$', wrapFunction(function () { - var Collection = _.kotlin.collections.Collection; - return function ($receiver, predicate) { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) - return true; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return false; - } - return true; - }; - })); - var onEach = defineInlineFunction('kotlin.kotlin.collections.onEach_w8vc4v$', wrapFunction(function () { - return function ($receiver, action) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - action(element); - } - return $receiver; - }; - })); - var reduce_8 = defineInlineFunction('kotlin.kotlin.collections.reduce_lrrcxv$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw UnsupportedOperationException_init("Empty collection can't be reduced."); - var accumulator = iterator.next(); - while (iterator.hasNext()) { - accumulator = operation(accumulator, iterator.next()); - } - return accumulator; - }; - })); - var reduceIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.reduceIndexed_8txfjb$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, operation) { - var tmp$; - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw UnsupportedOperationException_init("Empty collection can't be reduced."); - var index = 1; - var accumulator = iterator.next(); - while (iterator.hasNext()) { - accumulator = operation(checkIndexOverflow((tmp$ = index, index = tmp$ + 1 | 0, tmp$)), accumulator, iterator.next()); - } - return accumulator; - }; - })); - var reduceRight_8 = defineInlineFunction('kotlin.kotlin.collections.reduceRight_y5l5zf$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - if (!iterator.hasPrevious()) - throw UnsupportedOperationException_init("Empty list can't be reduced."); - var accumulator = iterator.previous(); - while (iterator.hasPrevious()) { - accumulator = operation(iterator.previous(), accumulator); - } - return accumulator; - }; - })); - var reduceRightIndexed_8 = defineInlineFunction('kotlin.kotlin.collections.reduceRightIndexed_1a67zb$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var iterator = $receiver.listIterator_za3lpa$($receiver.size); - if (!iterator.hasPrevious()) - throw UnsupportedOperationException_init("Empty list can't be reduced."); - var accumulator = iterator.previous(); - while (iterator.hasPrevious()) { - var index = iterator.previousIndex(); - accumulator = operation(index, iterator.previous(), accumulator); - } - return accumulator; - }; - })); - var sumBy_8 = defineInlineFunction('kotlin.kotlin.collections.sumBy_1nckxa$', function ($receiver, selector) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumByDouble_8 = defineInlineFunction('kotlin.kotlin.collections.sumByDouble_k0tf9a$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += selector(element); - } - return sum; - }); - function requireNoNulls_0($receiver) { - var tmp$, tmp$_0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (element == null) { - throw IllegalArgumentException_init_0('null element found in ' + $receiver + '.'); - } - } - return Kotlin.isType(tmp$_0 = $receiver, Iterable) ? tmp$_0 : throwCCE_0(); - } - function requireNoNulls_1($receiver) { - var tmp$, tmp$_0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (element == null) { - throw IllegalArgumentException_init_0('null element found in ' + $receiver + '.'); - } - } - return Kotlin.isType(tmp$_0 = $receiver, List) ? tmp$_0 : throwCCE_0(); - } - function chunked($receiver, size) { - return windowed($receiver, size, size, true); - } - function chunked_0($receiver, size, transform) { - return windowed_0($receiver, size, size, true, transform); - } - function minus($receiver, element) { - var result = ArrayList_init_0(collectionSizeOrDefault($receiver, 10)); - var removed = {v: false}; - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element_0 = tmp$.next(); - var predicate$result; - if (!removed.v && equals(element_0, element)) { - removed.v = true; - predicate$result = false; - } - else { - predicate$result = true; - } - if (predicate$result) - result.add_11rb$(element_0); - } - return result; - } - function minus_0($receiver, elements) { - if (elements.length === 0) - return toList_8($receiver); - var other = toHashSet(elements); - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!other.contains_11rb$(element)) - destination.add_11rb$(element); - } - return destination; - } - function minus_1($receiver, elements) { - var other = convertToSetForSetOperationWith(elements, $receiver); - if (other.isEmpty()) - return toList_8($receiver); - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!other.contains_11rb$(element)) - destination.add_11rb$(element); - } - return destination; - } - function minus_2($receiver, elements) { - var other = toHashSet_9(elements); - if (other.isEmpty()) - return toList_8($receiver); - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!other.contains_11rb$(element)) - destination.add_11rb$(element); - } - return destination; - } - var minusElement = defineInlineFunction('kotlin.kotlin.collections.minusElement_2ws7j4$', wrapFunction(function () { - var minus = _.kotlin.collections.minus_2ws7j4$; - return function ($receiver, element) { - return minus($receiver, element); - }; - })); - var partition_8 = defineInlineFunction('kotlin.kotlin.collections.partition_6jwkkr$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - function plus($receiver, element) { - if (Kotlin.isType($receiver, Collection)) - return plus_0($receiver, element); - var result = ArrayList_init(); - addAll(result, $receiver); - result.add_11rb$(element); - return result; - } - function plus_0($receiver, element) { - var result = ArrayList_init_0($receiver.size + 1 | 0); - result.addAll_brywnq$($receiver); - result.add_11rb$(element); - return result; - } - function plus_1($receiver, elements) { - if (Kotlin.isType($receiver, Collection)) - return plus_2($receiver, elements); - var result = ArrayList_init(); - addAll(result, $receiver); - addAll_1(result, elements); - return result; - } - function plus_2($receiver, elements) { - var result = ArrayList_init_0($receiver.size + elements.length | 0); - result.addAll_brywnq$($receiver); - addAll_1(result, elements); - return result; - } - function plus_3($receiver, elements) { - if (Kotlin.isType($receiver, Collection)) - return plus_4($receiver, elements); - var result = ArrayList_init(); - addAll(result, $receiver); - addAll(result, elements); - return result; - } - function plus_4($receiver, elements) { - if (Kotlin.isType(elements, Collection)) { - var result = ArrayList_init_0($receiver.size + elements.size | 0); - result.addAll_brywnq$($receiver); - result.addAll_brywnq$(elements); - return result; - } - else { - var result_0 = ArrayList_init_1($receiver); - addAll(result_0, elements); - return result_0; - } - } - function plus_5($receiver, elements) { - var result = ArrayList_init(); - addAll(result, $receiver); - addAll_0(result, elements); - return result; - } - function plus_6($receiver, elements) { - var result = ArrayList_init_0($receiver.size + 10 | 0); - result.addAll_brywnq$($receiver); - addAll_0(result, elements); - return result; - } - var plusElement = defineInlineFunction('kotlin.kotlin.collections.plusElement_2ws7j4$', wrapFunction(function () { - var plus = _.kotlin.collections.plus_2ws7j4$; - return function ($receiver, element) { - return plus($receiver, element); - }; - })); - var plusElement_0 = defineInlineFunction('kotlin.kotlin.collections.plusElement_qloxvw$', wrapFunction(function () { - var plus = _.kotlin.collections.plus_qloxvw$; - return function ($receiver, element) { - return plus($receiver, element); - }; - })); - function windowed($receiver, size, step, partialWindows) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - checkWindowSizeStep(size, step); - if (Kotlin.isType($receiver, RandomAccess) && Kotlin.isType($receiver, List)) { - var thisSize = $receiver.size; - var result = ArrayList_init_0((thisSize + step - 1 | 0) / step | 0); - var index = {v: 0}; - while (index.v < thisSize) { - var windowSize = coerceAtMost_2(size, thisSize - index.v | 0); - if (windowSize < size && !partialWindows) - break; - var list = ArrayList_init_0(windowSize); - for (var index_0 = 0; index_0 < windowSize; index_0++) { - list.add_11rb$($receiver.get_za3lpa$(index_0 + index.v | 0)); - } - result.add_11rb$(list); - index.v = index.v + step | 0; - } - return result; - } - var result_0 = ArrayList_init(); - var $receiver_0 = windowedIterator($receiver.iterator(), size, step, partialWindows, false); - while ($receiver_0.hasNext()) { - var element = $receiver_0.next(); - result_0.add_11rb$(element); - } - return result_0; - } - function windowed_0($receiver, size, step, partialWindows, transform) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - checkWindowSizeStep(size, step); - if (Kotlin.isType($receiver, RandomAccess) && Kotlin.isType($receiver, List)) { - var thisSize = $receiver.size; - var result = ArrayList_init_0((thisSize + step - 1 | 0) / step | 0); - var window_0 = new MovingSubList($receiver); - var index = 0; - while (index < thisSize) { - window_0.move_vux9f0$(index, coerceAtMost_2(index + size | 0, thisSize)); - if (!partialWindows && window_0.size < size) - break; - result.add_11rb$(transform(window_0)); - index = index + step | 0; - } - return result; - } - var result_0 = ArrayList_init(); - var $receiver_0 = windowedIterator($receiver.iterator(), size, step, partialWindows, true); - while ($receiver_0.hasNext()) { - var element = $receiver_0.next(); - result_0.add_11rb$(transform(element)); - } - return result_0; - } - function zip_51($receiver, other) { - var tmp$, tmp$_0; - var arraySize = other.length; - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault($receiver, 10), arraySize)); - var i = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(to(element, other[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0])); - } - return list; - } - var zip_52 = defineInlineFunction('kotlin.kotlin.collections.zip_curaua$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var tmp$, tmp$_0; - var arraySize = other.length; - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault($receiver, 10), arraySize)); - var i = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (i >= arraySize) - break; - list.add_11rb$(transform(element, other[tmp$_0 = i, i = tmp$_0 + 1 | 0, tmp$_0])); - } - return list; - }; - })); - function zip_53($receiver, other) { - var first = $receiver.iterator(); - var second = other.iterator(); - var list = ArrayList_init_0(Math_0.min(collectionSizeOrDefault($receiver, 10), collectionSizeOrDefault(other, 10))); - while (first.hasNext() && second.hasNext()) { - list.add_11rb$(to(first.next(), second.next())); - } - return list; - } - var zip_54 = defineInlineFunction('kotlin.kotlin.collections.zip_3h9v02$', wrapFunction(function () { - var collectionSizeOrDefault = _.kotlin.collections.collectionSizeOrDefault_ba2ldo$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var Math_0 = Math; - return function ($receiver, other, transform) { - var first = $receiver.iterator(); - var second = other.iterator(); - var list = ArrayList_init(Math_0.min(collectionSizeOrDefault($receiver, 10), collectionSizeOrDefault(other, 10))); - while (first.hasNext() && second.hasNext()) { - list.add_11rb$(transform(first.next(), second.next())); - } - return list; - }; - })); - function zipWithNext($receiver) { - var zipWithNext$result; - zipWithNext$break: do { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) { - zipWithNext$result = emptyList(); - break zipWithNext$break; - } - var result = ArrayList_init(); - var current = iterator.next(); - while (iterator.hasNext()) { - var next = iterator.next(); - result.add_11rb$(to(current, next)); - current = next; - } - zipWithNext$result = result; - } - while (false); - return zipWithNext$result; - } - var zipWithNext_0 = defineInlineFunction('kotlin.kotlin.collections.zipWithNext_kvcuaw$', wrapFunction(function () { - var emptyList = _.kotlin.collections.emptyList_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, transform) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return emptyList(); - var result = ArrayList_init(); - var current = iterator.next(); - while (iterator.hasNext()) { - var next = iterator.next(); - result.add_11rb$(transform(current, next)); - current = next; - } - return result; - }; - })); - function joinTo_8($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - appendElement_0(buffer, element, transform); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinToString_8($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_8($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - var asIterable_8 = defineInlineFunction('kotlin.kotlin.collections.asIterable_7wnvza$', function ($receiver) { - return $receiver; - }); - function asSequence$lambda_8(this$asSequence) { - return function () { - return this$asSequence.iterator(); - }; - } - function Sequence$ObjectLiteral_0(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral_0.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral_0.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function asSequence_8($receiver) { - return new Sequence$ObjectLiteral_0(asSequence$lambda_8($receiver)); - } - function average_11($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_12($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_13($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_14($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_15($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_16($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function sum_11($receiver) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + element; - } - return sum; - } - function sum_12($receiver) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + element; - } - return sum; - } - function sum_13($receiver) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + element | 0; - } - return sum; - } - function sum_14($receiver) { - var tmp$; - var sum = L0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum.add(element); - } - return sum; - } - function sum_15($receiver) { - var tmp$; - var sum = 0.0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - } - return sum; - } - function sum_16($receiver) { - var tmp$; - var sum = 0.0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - } - return sum; - } - function maxOf(a, b, c, comparator) { - return maxOf_0(a, maxOf_0(b, c, comparator), comparator); - } - function maxOf_0(a, b, comparator) { - return comparator.compare(a, b) >= 0 ? a : b; - } - function minOf(a, b, c, comparator) { - return minOf_0(a, minOf_0(b, c, comparator), comparator); - } - function minOf_0(a, b, comparator) { - return comparator.compare(a, b) <= 0 ? a : b; - } - function toList_9($receiver) { - if ($receiver.size === 0) - return emptyList(); - var iterator = $receiver.entries.iterator(); - if (!iterator.hasNext()) - return emptyList(); - var first = iterator.next(); - if (!iterator.hasNext()) { - return listOf(new Pair(first.key, first.value)); - } - var result = ArrayList_init_0($receiver.size); - result.add_11rb$(new Pair(first.key, first.value)); - do { - var $receiver_0 = iterator.next(); - result.add_11rb$(new Pair($receiver_0.key, $receiver_0.value)); - } - while (iterator.hasNext()); - return result; - } - var flatMap_9 = defineInlineFunction('kotlin.kotlin.collections.flatMap_2r9935$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_9 = defineInlineFunction('kotlin.kotlin.collections.flatMapTo_qdz8ho$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var map_9 = defineInlineFunction('kotlin.kotlin.collections.map_8169ik$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.size); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(item)); - } - return destination; - }; - })); - var mapNotNull_1 = defineInlineFunction('kotlin.kotlin.collections.mapNotNull_9b72hb$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapNotNullTo_1 = defineInlineFunction('kotlin.kotlin.collections.mapNotNullTo_ir6y9a$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapTo_9 = defineInlineFunction('kotlin.kotlin.collections.mapTo_qxe4nl$', function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(item)); - } - return destination; - }); - var all_9 = defineInlineFunction('kotlin.kotlin.collections.all_9peqz9$', function ($receiver, predicate) { - var tmp$; - if ($receiver.isEmpty()) - return true; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) - return false; - } - return true; - }); - function any_19($receiver) { - return !$receiver.isEmpty(); - } - var any_20 = defineInlineFunction('kotlin.kotlin.collections.any_9peqz9$', function ($receiver, predicate) { - var tmp$; - if ($receiver.isEmpty()) - return false; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return true; - } - return false; - }); - var count_20 = defineInlineFunction('kotlin.kotlin.collections.count_abgq59$', function ($receiver) { - return $receiver.size; - }); - var count_21 = defineInlineFunction('kotlin.kotlin.collections.count_9peqz9$', function ($receiver, predicate) { - var tmp$; - if ($receiver.isEmpty()) - return 0; - var count = 0; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - count = count + 1 | 0; - } - return count; - }); - var forEach_9 = defineInlineFunction('kotlin.kotlin.collections.forEach_62casv$', function ($receiver, action) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - action(element); - } - }); - var maxBy_9 = defineInlineFunction('kotlin.kotlin.collections.maxBy_44nibo$', function ($receiver, selector) { - var $receiver_0 = $receiver.entries; - var maxBy$result; - maxBy$break: do { - var iterator = $receiver_0.iterator(); - if (!iterator.hasNext()) { - maxBy$result = null; - break maxBy$break; - } - var maxElem = iterator.next(); - var maxValue = selector(maxElem); - while (iterator.hasNext()) { - var e = iterator.next(); - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - maxBy$result = maxElem; - } - while (false); - return maxBy$result; - }); - var maxWith_9 = defineInlineFunction('kotlin.kotlin.collections.maxWith_e3q53g$', wrapFunction(function () { - var maxWith = _.kotlin.collections.maxWith_eknfly$; - return function ($receiver, comparator) { - return maxWith($receiver.entries, comparator); - }; - })); - var minBy_9 = defineInlineFunction('kotlin.kotlin.collections.minBy_44nibo$', function ($receiver, selector) { - var $receiver_0 = $receiver.entries; - var minBy$result; - minBy$break: do { - var iterator = $receiver_0.iterator(); - if (!iterator.hasNext()) { - minBy$result = null; - break minBy$break; - } - var minElem = iterator.next(); - var minValue = selector(minElem); - while (iterator.hasNext()) { - var e = iterator.next(); - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - minBy$result = minElem; - } - while (false); - return minBy$result; - }); - function minWith_9($receiver, comparator) { - return minWith_8($receiver.entries, comparator); - } - function none_19($receiver) { - return $receiver.isEmpty(); - } - var none_20 = defineInlineFunction('kotlin.kotlin.collections.none_9peqz9$', function ($receiver, predicate) { - var tmp$; - if ($receiver.isEmpty()) - return true; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return false; - } - return true; - }); - var onEach_0 = defineInlineFunction('kotlin.kotlin.collections.onEach_bdwhnn$', wrapFunction(function () { - return function ($receiver, action) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - action(element); - } - return $receiver; - }; - })); - var asIterable_9 = defineInlineFunction('kotlin.kotlin.collections.asIterable_abgq59$', function ($receiver) { - return $receiver.entries; - }); - function asSequence_9($receiver) { - return asSequence_8($receiver.entries); - } - var random_19 = defineInlineFunction('kotlin.kotlin.ranges.random_9tsm8a$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.ranges.random_xmiyix$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_20 = defineInlineFunction('kotlin.kotlin.ranges.random_37ivyf$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.ranges.random_6753zu$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_21 = defineInlineFunction('kotlin.kotlin.ranges.random_m1hxcj$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.ranges.random_bx1m1g$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - function random_22($receiver, random) { - try { - return nextInt(random, $receiver); - } - catch (e) { - if (Kotlin.isType(e, IllegalArgumentException)) { - throw new NoSuchElementException(e.message); - } - else - throw e; - } - } - function random_23($receiver, random) { - try { - return nextLong(random, $receiver); - } - catch (e) { - if (Kotlin.isType(e, IllegalArgumentException)) { - throw new NoSuchElementException(e.message); - } - else - throw e; - } - } - function random_24($receiver, random) { - try { - return toChar(random.nextInt_vux9f0$($receiver.first | 0, ($receiver.last | 0) + 1 | 0)); - } - catch (e) { - if (Kotlin.isType(e, IllegalArgumentException)) { - throw new NoSuchElementException(e.message); - } - else - throw e; - } - } - var contains_9 = defineInlineFunction('kotlin.kotlin.ranges.contains_j7m49l$', function ($receiver, element) { - return element != null && $receiver.contains_mef7kx$(element); - }); - var contains_10 = defineInlineFunction('kotlin.kotlin.ranges.contains_zgs5kf$', function ($receiver, element) { - return element != null && $receiver.contains_mef7kx$(element); - }); - var contains_11 = defineInlineFunction('kotlin.kotlin.ranges.contains_zdvzsf$', function ($receiver, element) { - return element != null && $receiver.contains_mef7kx$(element); - }); - function contains_12($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_13($receiver, value) { - return $receiver.contains_mef7kx$(Kotlin.Long.fromInt(value)); - } - function contains_14($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_15($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_16($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_17($receiver, value) { - var it = toIntExactOrNull_0(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_18($receiver, value) { - var it = toLongExactOrNull(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_19($receiver, value) { - var it = toByteExactOrNull_2(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_20($receiver, value) { - var it = toShortExactOrNull_1(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_21($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_22($receiver, value) { - var it = toIntExactOrNull_1(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_23($receiver, value) { - var it = toLongExactOrNull_0(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_24($receiver, value) { - var it = toByteExactOrNull_3(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_25($receiver, value) { - var it = toShortExactOrNull_2(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_26($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_27($receiver, value) { - return $receiver.contains_mef7kx$(Kotlin.Long.fromInt(value)); - } - function contains_28($receiver, value) { - var it = toByteExactOrNull(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_29($receiver, value) { - var it = toShortExactOrNull(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_30($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_31($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_32($receiver, value) { - var it = toIntExactOrNull(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_33($receiver, value) { - var it = toByteExactOrNull_0(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_34($receiver, value) { - var it = toShortExactOrNull_0(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_35($receiver, value) { - return $receiver.contains_mef7kx$(value.toNumber()); - } - function contains_36($receiver, value) { - return $receiver.contains_mef7kx$(value.toNumber()); - } - function contains_37($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_38($receiver, value) { - return $receiver.contains_mef7kx$(Kotlin.Long.fromInt(value)); - } - function contains_39($receiver, value) { - var it = toByteExactOrNull_1(value); - return it != null ? $receiver.contains_mef7kx$(it) : false; - } - function contains_40($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function contains_41($receiver, value) { - return $receiver.contains_mef7kx$(value); - } - function downTo($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_0($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$($receiver, Kotlin.Long.fromInt(to), L_1); - } - function downTo_1($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_2($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_3($receiver, to) { - return CharProgression$Companion_getInstance().fromClosedRange_ayra44$($receiver, to, -1); - } - function downTo_4($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_5($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$($receiver, Kotlin.Long.fromInt(to), L_1); - } - function downTo_6($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_7($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_8($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$(Kotlin.Long.fromInt($receiver), to, L_1); - } - function downTo_9($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$($receiver, to, L_1); - } - function downTo_10($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$(Kotlin.Long.fromInt($receiver), to, L_1); - } - function downTo_11($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$(Kotlin.Long.fromInt($receiver), to, L_1); - } - function downTo_12($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_13($receiver, to) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$($receiver, Kotlin.Long.fromInt(to), L_1); - } - function downTo_14($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function downTo_15($receiver, to) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver, to, -1); - } - function reversed_9($receiver) { - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver.last, $receiver.first, -$receiver.step | 0); - } - function reversed_10($receiver) { - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$($receiver.last, $receiver.first, $receiver.step.unaryMinus()); - } - function reversed_11($receiver) { - return CharProgression$Companion_getInstance().fromClosedRange_ayra44$($receiver.last, $receiver.first, -$receiver.step | 0); - } - function step($receiver, step) { - checkStepIsPositive(step > 0, step); - return IntProgression$Companion_getInstance().fromClosedRange_qt1dr2$($receiver.first, $receiver.last, $receiver.step > 0 ? step : -step | 0); - } - function step_0($receiver, step) { - checkStepIsPositive(step.toNumber() > 0, step); - return LongProgression$Companion_getInstance().fromClosedRange_b9bd0d$($receiver.first, $receiver.last, $receiver.step.toNumber() > 0 ? step : step.unaryMinus()); - } - function step_1($receiver, step) { - checkStepIsPositive(step > 0, step); - return CharProgression$Companion_getInstance().fromClosedRange_ayra44$($receiver.first, $receiver.last, $receiver.step > 0 ? step : -step | 0); - } - function toByteExactOrNull($receiver) { - return -128 <= $receiver && $receiver <= 127 ? toByte($receiver) : null; - } - function toByteExactOrNull_0($receiver) { - return L_128.lessThanOrEqual($receiver) && $receiver.lessThanOrEqual(L127) ? toByte($receiver.toInt()) : null; - } - function toByteExactOrNull_1($receiver) { - return contains_37(new IntRange(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE), $receiver) ? toByte($receiver) : null; - } - function toByteExactOrNull_2($receiver) { - return rangeTo_1(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toByte(numberToInt($receiver)) : null; - } - function toByteExactOrNull_3($receiver) { - return rangeTo_1(kotlin_js_internal_ByteCompanionObject.MIN_VALUE, kotlin_js_internal_ByteCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toByte(numberToInt($receiver)) : null; - } - function toIntExactOrNull($receiver) { - return L_2147483648.lessThanOrEqual($receiver) && $receiver.lessThanOrEqual(L2147483647) ? $receiver.toInt() : null; - } - function toIntExactOrNull_0($receiver) { - return rangeTo_1(-2147483648, 2147483647).contains_mef7kx$($receiver) ? numberToInt($receiver) : null; - } - function toIntExactOrNull_1($receiver) { - return rangeTo_1(-2147483648, 2147483647).contains_mef7kx$($receiver) ? numberToInt($receiver) : null; - } - function toLongExactOrNull($receiver) { - return rangeTo_1(Long$Companion$MIN_VALUE.toNumber(), Long$Companion$MAX_VALUE.toNumber()).contains_mef7kx$($receiver) ? Kotlin.Long.fromNumber($receiver) : null; - } - function toLongExactOrNull_0($receiver) { - return rangeTo_1(Long$Companion$MIN_VALUE.toNumber(), Long$Companion$MAX_VALUE.toNumber()).contains_mef7kx$($receiver) ? Kotlin.Long.fromNumber($receiver) : null; - } - function toShortExactOrNull($receiver) { - return -32768 <= $receiver && $receiver <= 32767 ? toShort($receiver) : null; - } - function toShortExactOrNull_0($receiver) { - return L_32768.lessThanOrEqual($receiver) && $receiver.lessThanOrEqual(L32767) ? toShort($receiver.toInt()) : null; - } - function toShortExactOrNull_1($receiver) { - return rangeTo_1(kotlin_js_internal_ShortCompanionObject.MIN_VALUE, kotlin_js_internal_ShortCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toShort(numberToInt($receiver)) : null; - } - function toShortExactOrNull_2($receiver) { - return rangeTo_1(kotlin_js_internal_ShortCompanionObject.MIN_VALUE, kotlin_js_internal_ShortCompanionObject.MAX_VALUE).contains_mef7kx$($receiver) ? toShort(numberToInt($receiver)) : null; - } - function until($receiver, to) { - return new IntRange($receiver, to - 1 | 0); - } - function until_0($receiver, to) { - return $receiver.rangeTo(Kotlin.Long.fromInt(to).subtract(Kotlin.Long.fromInt(1))); - } - function until_1($receiver, to) { - return new IntRange($receiver, to - 1 | 0); - } - function until_2($receiver, to) { - return new IntRange($receiver, to - 1 | 0); - } - function until_3($receiver, to) { - if (to <= 0) - return CharRange$Companion_getInstance().EMPTY; - return new CharRange($receiver, toChar(to - 1)); - } - function until_4($receiver, to) { - if (to <= -2147483648) - return IntRange$Companion_getInstance().EMPTY; - return new IntRange($receiver, to - 1 | 0); - } - function until_5($receiver, to) { - return $receiver.rangeTo(Kotlin.Long.fromInt(to).subtract(Kotlin.Long.fromInt(1))); - } - function until_6($receiver, to) { - if (to <= -2147483648) - return IntRange$Companion_getInstance().EMPTY; - return new IntRange($receiver, to - 1 | 0); - } - function until_7($receiver, to) { - if (to <= -2147483648) - return IntRange$Companion_getInstance().EMPTY; - return new IntRange($receiver, to - 1 | 0); - } - function until_8($receiver, to) { - if (to.compareTo_11rb$(Long$Companion$MIN_VALUE) <= 0) - return LongRange$Companion_getInstance().EMPTY; - return Kotlin.Long.fromInt($receiver).rangeTo(to.subtract(Kotlin.Long.fromInt(1))); - } - function until_9($receiver, to) { - if (to.compareTo_11rb$(Long$Companion$MIN_VALUE) <= 0) - return LongRange$Companion_getInstance().EMPTY; - return $receiver.rangeTo(to.subtract(Kotlin.Long.fromInt(1))); - } - function until_10($receiver, to) { - if (to.compareTo_11rb$(Long$Companion$MIN_VALUE) <= 0) - return LongRange$Companion_getInstance().EMPTY; - return Kotlin.Long.fromInt($receiver).rangeTo(to.subtract(Kotlin.Long.fromInt(1))); - } - function until_11($receiver, to) { - if (to.compareTo_11rb$(Long$Companion$MIN_VALUE) <= 0) - return LongRange$Companion_getInstance().EMPTY; - return Kotlin.Long.fromInt($receiver).rangeTo(to.subtract(Kotlin.Long.fromInt(1))); - } - function until_12($receiver, to) { - return new IntRange($receiver, to - 1 | 0); - } - function until_13($receiver, to) { - return $receiver.rangeTo(Kotlin.Long.fromInt(to).subtract(Kotlin.Long.fromInt(1))); - } - function until_14($receiver, to) { - return new IntRange($receiver, to - 1 | 0); - } - function until_15($receiver, to) { - return new IntRange($receiver, to - 1 | 0); - } - function coerceAtLeast($receiver, minimumValue) { - return Kotlin.compareTo($receiver, minimumValue) < 0 ? minimumValue : $receiver; - } - function coerceAtLeast_0($receiver, minimumValue) { - return $receiver < minimumValue ? minimumValue : $receiver; - } - function coerceAtLeast_1($receiver, minimumValue) { - return $receiver < minimumValue ? minimumValue : $receiver; - } - function coerceAtLeast_2($receiver, minimumValue) { - return $receiver < minimumValue ? minimumValue : $receiver; - } - function coerceAtLeast_3($receiver, minimumValue) { - return $receiver.compareTo_11rb$(minimumValue) < 0 ? minimumValue : $receiver; - } - function coerceAtLeast_4($receiver, minimumValue) { - return $receiver < minimumValue ? minimumValue : $receiver; - } - function coerceAtLeast_5($receiver, minimumValue) { - return $receiver < minimumValue ? minimumValue : $receiver; - } - function coerceAtMost($receiver, maximumValue) { - return Kotlin.compareTo($receiver, maximumValue) > 0 ? maximumValue : $receiver; - } - function coerceAtMost_0($receiver, maximumValue) { - return $receiver > maximumValue ? maximumValue : $receiver; - } - function coerceAtMost_1($receiver, maximumValue) { - return $receiver > maximumValue ? maximumValue : $receiver; - } - function coerceAtMost_2($receiver, maximumValue) { - return $receiver > maximumValue ? maximumValue : $receiver; - } - function coerceAtMost_3($receiver, maximumValue) { - return $receiver.compareTo_11rb$(maximumValue) > 0 ? maximumValue : $receiver; - } - function coerceAtMost_4($receiver, maximumValue) { - return $receiver > maximumValue ? maximumValue : $receiver; - } - function coerceAtMost_5($receiver, maximumValue) { - return $receiver > maximumValue ? maximumValue : $receiver; - } - function coerceIn($receiver, minimumValue, maximumValue) { - if (minimumValue !== null && maximumValue !== null) { - if (Kotlin.compareTo(minimumValue, maximumValue) > 0) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + toString(maximumValue) + ' is less than minimum ' + toString(minimumValue) + '.'); - if (Kotlin.compareTo($receiver, minimumValue) < 0) - return minimumValue; - if (Kotlin.compareTo($receiver, maximumValue) > 0) - return maximumValue; - } - else { - if (minimumValue !== null && Kotlin.compareTo($receiver, minimumValue) < 0) - return minimumValue; - if (maximumValue !== null && Kotlin.compareTo($receiver, maximumValue) > 0) - return maximumValue; - } - return $receiver; - } - function coerceIn_0($receiver, minimumValue, maximumValue) { - if (minimumValue > maximumValue) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + maximumValue + ' is less than minimum ' + minimumValue + '.'); - if ($receiver < minimumValue) - return minimumValue; - if ($receiver > maximumValue) - return maximumValue; - return $receiver; - } - function coerceIn_1($receiver, minimumValue, maximumValue) { - if (minimumValue > maximumValue) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + maximumValue + ' is less than minimum ' + minimumValue + '.'); - if ($receiver < minimumValue) - return minimumValue; - if ($receiver > maximumValue) - return maximumValue; - return $receiver; - } - function coerceIn_2($receiver, minimumValue, maximumValue) { - if (minimumValue > maximumValue) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + maximumValue + ' is less than minimum ' + minimumValue + '.'); - if ($receiver < minimumValue) - return minimumValue; - if ($receiver > maximumValue) - return maximumValue; - return $receiver; - } - function coerceIn_3($receiver, minimumValue, maximumValue) { - if (minimumValue.compareTo_11rb$(maximumValue) > 0) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + maximumValue.toString() + ' is less than minimum ' + minimumValue.toString() + '.'); - if ($receiver.compareTo_11rb$(minimumValue) < 0) - return minimumValue; - if ($receiver.compareTo_11rb$(maximumValue) > 0) - return maximumValue; - return $receiver; - } - function coerceIn_4($receiver, minimumValue, maximumValue) { - if (minimumValue > maximumValue) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + maximumValue + ' is less than minimum ' + minimumValue + '.'); - if ($receiver < minimumValue) - return minimumValue; - if ($receiver > maximumValue) - return maximumValue; - return $receiver; - } - function coerceIn_5($receiver, minimumValue, maximumValue) { - if (minimumValue > maximumValue) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: maximum ' + maximumValue + ' is less than minimum ' + minimumValue + '.'); - if ($receiver < minimumValue) - return minimumValue; - if ($receiver > maximumValue) - return maximumValue; - return $receiver; - } - function coerceIn_6($receiver, range) { - var tmp$; - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); - if (range.lessThanOrEquals_n65qkk$($receiver, range.start) && !range.lessThanOrEquals_n65qkk$(range.start, $receiver)) - tmp$ = range.start; - else if (range.lessThanOrEquals_n65qkk$(range.endInclusive, $receiver) && !range.lessThanOrEquals_n65qkk$($receiver, range.endInclusive)) - tmp$ = range.endInclusive; - else - tmp$ = $receiver; - return tmp$; - } - function coerceIn_7($receiver, range) { - var tmp$; - if (Kotlin.isType(range, ClosedFloatingPointRange)) { - return coerceIn_6($receiver, range); - } - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); - if (Kotlin.compareTo($receiver, range.start) < 0) - tmp$ = range.start; - else if (Kotlin.compareTo($receiver, range.endInclusive) > 0) - tmp$ = range.endInclusive; - else - tmp$ = $receiver; - return tmp$; - } - function coerceIn_8($receiver, range) { - var tmp$; - if (Kotlin.isType(range, ClosedFloatingPointRange)) { - return coerceIn_6($receiver, range); - } - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); - if ($receiver < range.start) - tmp$ = range.start; - else if ($receiver > range.endInclusive) - tmp$ = range.endInclusive; - else - tmp$ = $receiver; - return tmp$; - } - function coerceIn_9($receiver, range) { - var tmp$; - if (Kotlin.isType(range, ClosedFloatingPointRange)) { - return coerceIn_6($receiver, range); - } - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot coerce value to an empty range: ' + range + '.'); - if ($receiver.compareTo_11rb$(range.start) < 0) - tmp$ = range.start; - else if ($receiver.compareTo_11rb$(range.endInclusive) > 0) - tmp$ = range.endInclusive; - else - tmp$ = $receiver; - return tmp$; - } - function contains_42($receiver, element) { - return indexOf_10($receiver, element) >= 0; - } - function elementAt$lambda_0(closure$index) { - return function (it) { - throw new IndexOutOfBoundsException("Sequence doesn't contain element at index " + closure$index + '.'); - }; - } - function elementAt_10($receiver, index) { - return elementAtOrElse_10($receiver, index, elementAt$lambda_0(index)); - } - function elementAtOrElse_10($receiver, index, defaultValue) { - var tmp$; - if (index < 0) - return defaultValue(index); - var iterator = $receiver.iterator(); - var count = 0; - while (iterator.hasNext()) { - var element = iterator.next(); - if (index === (tmp$ = count, count = tmp$ + 1 | 0, tmp$)) - return element; - } - return defaultValue(index); - } - function elementAtOrNull_10($receiver, index) { - var tmp$; - if (index < 0) - return null; - var iterator = $receiver.iterator(); - var count = 0; - while (iterator.hasNext()) { - var element = iterator.next(); - if (index === (tmp$ = count, count = tmp$ + 1 | 0, tmp$)) - return element; - } - return null; - } - var find_9 = defineInlineFunction('kotlin.kotlin.sequences.find_euau3h$', function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }); - var findLast_10 = defineInlineFunction('kotlin.kotlin.sequences.findLast_euau3h$', function ($receiver, predicate) { - var tmp$; - var last = null; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - last = element; - } - } - return last; - }); - function first_20($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw new NoSuchElementException('Sequence is empty.'); - return iterator.next(); - } - var first_21 = defineInlineFunction('kotlin.kotlin.sequences.first_euau3h$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return element; - } - throw new NoSuchElementException_init('Sequence contains no element matching the predicate.'); - }; - })); - function firstOrNull_20($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - return iterator.next(); - } - var firstOrNull_21 = defineInlineFunction('kotlin.kotlin.sequences.firstOrNull_euau3h$', function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return element; - } - return null; - }); - function indexOf_10($receiver, element) { - var tmp$; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (equals(element, item)) - return index; - index = index + 1 | 0; - } - return -1; - } - var indexOfFirst_10 = defineInlineFunction('kotlin.kotlin.sequences.indexOfFirst_euau3h$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, predicate) { - var tmp$; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (predicate(item)) - return index; - index = index + 1 | 0; - } - return -1; - }; - })); - var indexOfLast_10 = defineInlineFunction('kotlin.kotlin.sequences.indexOfLast_euau3h$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, predicate) { - var tmp$; - var lastIndex = -1; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (predicate(item)) - lastIndex = index; - index = index + 1 | 0; - } - return lastIndex; - }; - })); - function last_21($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw new NoSuchElementException('Sequence is empty.'); - var last = iterator.next(); - while (iterator.hasNext()) - last = iterator.next(); - return last; - } - var last_22 = defineInlineFunction('kotlin.kotlin.sequences.last_euau3h$', wrapFunction(function () { - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var last = null; - var found = false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - last = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Sequence contains no element matching the predicate.'); - return (tmp$_0 = last) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - }; - })); - function lastIndexOf_10($receiver, element) { - var tmp$; - var lastIndex = -1; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - checkIndexOverflow(index); - if (equals(element, item)) - lastIndex = index; - index = index + 1 | 0; - } - return lastIndex; - } - function lastOrNull_21($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var last = iterator.next(); - while (iterator.hasNext()) - last = iterator.next(); - return last; - } - var lastOrNull_22 = defineInlineFunction('kotlin.kotlin.sequences.lastOrNull_euau3h$', function ($receiver, predicate) { - var tmp$; - var last = null; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - last = element; - } - } - return last; - }); - function single_20($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw new NoSuchElementException('Sequence is empty.'); - var single = iterator.next(); - if (iterator.hasNext()) - throw IllegalArgumentException_init_0('Sequence has more than one element.'); - return single; - } - var single_21 = defineInlineFunction('kotlin.kotlin.sequences.single_euau3h$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - if (found) - throw IllegalArgumentException_init('Sequence contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Sequence contains no element matching the predicate.'); - return (tmp$_0 = single) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - }; - })); - function singleOrNull_20($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var single = iterator.next(); - if (iterator.hasNext()) - return null; - return single; - } - var singleOrNull_21 = defineInlineFunction('kotlin.kotlin.sequences.singleOrNull_euau3h$', function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }); - function drop_9($receiver, n) { - var tmp$; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - tmp$ = $receiver; - else if (Kotlin.isType($receiver, DropTakeSequence)) - tmp$ = $receiver.drop_za3lpa$(n); - else - tmp$ = new DropSequence($receiver, n); - return tmp$; - } - function dropWhile_9($receiver, predicate) { - return new DropWhileSequence($receiver, predicate); - } - function filter_9($receiver, predicate) { - return new FilteringSequence($receiver, true, predicate); - } - function filterIndexed$lambda(closure$predicate) { - return function (it) { - return closure$predicate(it.index, it.value); - }; - } - function filterIndexed$lambda_0(it) { - return it.value; - } - function filterIndexed_9($receiver, predicate) { - return new TransformingSequence(new FilteringSequence(new IndexingSequence($receiver), true, filterIndexed$lambda(predicate)), filterIndexed$lambda_0); - } - var filterIndexedTo_9 = defineInlineFunction('kotlin.kotlin.sequences.filterIndexedTo_t68vbo$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (predicate(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) - destination.add_11rb$(item); - } - return destination; - }; - })); - var filterIsInstance_1 = defineInlineFunction('kotlin.kotlin.sequences.filterIsInstance_1ivc31$', wrapFunction(function () { - var filter = _.kotlin.sequences.filter_euau3h$; - var Sequence = _.kotlin.sequences.Sequence; - var throwCCE = Kotlin.throwCCE; - function filterIsInstance$lambda(typeClosure$R, isR) { - return function (it) { - return isR(it); - }; - } - return function (R_0, isR, $receiver) { - var tmp$; - return Kotlin.isType(tmp$ = filter($receiver, filterIsInstance$lambda(R_0, isR)), Sequence) ? tmp$ : throwCCE(); - }; - })); - var filterIsInstanceTo_1 = defineInlineFunction('kotlin.kotlin.sequences.filterIsInstanceTo_e33yd4$', function (R_0, isR, $receiver, destination) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (isR(element)) - destination.add_11rb$(element); - } - return destination; - }); - function filterNot_9($receiver, predicate) { - return new FilteringSequence($receiver, false, predicate); - } - function filterNotNull$lambda(it) { - return it == null; - } - function filterNotNull_1($receiver) { - var tmp$; - return Kotlin.isType(tmp$ = filterNot_9($receiver, filterNotNull$lambda), Sequence) ? tmp$ : throwCCE_0(); - } - function filterNotNullTo_1($receiver, destination) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (element != null) - destination.add_11rb$(element); - } - return destination; - } - var filterNotTo_9 = defineInlineFunction('kotlin.kotlin.sequences.filterNotTo_zemxx4$', function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - var filterTo_9 = defineInlineFunction('kotlin.kotlin.sequences.filterTo_zemxx4$', function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - destination.add_11rb$(element); - } - return destination; - }); - function take_9($receiver, n) { - var tmp$; - if (!(n >= 0)) { - var message = 'Requested element count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - if (n === 0) - tmp$ = emptySequence(); - else if (Kotlin.isType($receiver, DropTakeSequence)) - tmp$ = $receiver.take_za3lpa$(n); - else - tmp$ = new TakeSequence($receiver, n); - return tmp$; - } - function takeWhile_9($receiver, predicate) { - return new TakeWhileSequence($receiver, predicate); - } - function sorted$ObjectLiteral(this$sorted) { - this.this$sorted = this$sorted; - } - sorted$ObjectLiteral.prototype.iterator = function () { - var sortedList = toMutableList_10(this.this$sorted); - sort_10(sortedList); - return sortedList.iterator(); - }; - sorted$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function sorted_8($receiver) { - return new sorted$ObjectLiteral($receiver); - } - var sortedBy_9 = defineInlineFunction('kotlin.kotlin.sequences.sortedBy_aht3pn$', wrapFunction(function () { - var sortedWith = _.kotlin.sequences.sortedWith_vjgqpk$; - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareBy$lambda(selector))); - }; - })); - var sortedByDescending_9 = defineInlineFunction('kotlin.kotlin.sequences.sortedByDescending_aht3pn$', wrapFunction(function () { - var sortedWith = _.kotlin.sequences.sortedWith_vjgqpk$; - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return sortedWith($receiver, new Comparator$ObjectLiteral(compareByDescending$lambda(selector))); - }; - })); - function sortedDescending_8($receiver) { - return sortedWith_9($receiver, reverseOrder()); - } - function sortedWith$ObjectLiteral(this$sortedWith, closure$comparator) { - this.this$sortedWith = this$sortedWith; - this.closure$comparator = closure$comparator; - } - sortedWith$ObjectLiteral.prototype.iterator = function () { - var sortedList = toMutableList_10(this.this$sortedWith); - sortWith_0(sortedList, this.closure$comparator); - return sortedList.iterator(); - }; - sortedWith$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function sortedWith_9($receiver, comparator) { - return new sortedWith$ObjectLiteral($receiver, comparator); - } - var associate_9 = defineInlineFunction('kotlin.kotlin.sequences.associate_ohgugh$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, transform) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associateBy_19 = defineInlineFunction('kotlin.kotlin.sequences.associateBy_z5avom$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }; - })); - var associateBy_20 = defineInlineFunction('kotlin.kotlin.sequences.associateBy_rpj48c$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }; - })); - var associateByTo_19 = defineInlineFunction('kotlin.kotlin.sequences.associateByTo_pdrkj5$', function ($receiver, destination, keySelector) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), element); - } - return destination; - }); - var associateByTo_20 = defineInlineFunction('kotlin.kotlin.sequences.associateByTo_vqogar$', function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(keySelector(element), valueTransform(element)); - } - return destination; - }); - var associateTo_9 = defineInlineFunction('kotlin.kotlin.sequences.associateTo_xiiici$', function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var pair = transform(element); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }); - var associateWith_0 = defineInlineFunction('kotlin.kotlin.sequences.associateWith_z5avom$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, valueSelector) { - var result = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result.put_xwzc9p$(element, valueSelector(element)); - } - return result; - }; - })); - var associateWithTo_0 = defineInlineFunction('kotlin.kotlin.sequences.associateWithTo_uyy78t$', function ($receiver, destination, valueSelector) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(element, valueSelector(element)); - } - return destination; - }); - function toCollection_9($receiver, destination) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(item); - } - return destination; - } - function toHashSet_9($receiver) { - return toCollection_9($receiver, HashSet_init()); - } - function toList_10($receiver) { - return optimizeReadOnlyList(toMutableList_10($receiver)); - } - function toMutableList_10($receiver) { - return toCollection_9($receiver, ArrayList_init()); - } - function toSet_9($receiver) { - return optimizeReadOnlySet(toCollection_9($receiver, LinkedHashSet_init_0())); - } - function flatMap$lambda(it) { - return it.iterator(); - } - function flatMap_10($receiver, transform) { - return new FlatteningSequence($receiver, transform, flatMap$lambda); - } - var flatMapTo_10 = defineInlineFunction('kotlin.kotlin.sequences.flatMapTo_skhdnd$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_tj7pfx$; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var list = transform(element); - addAll(destination, list); - } - return destination; - }; - })); - var groupBy_19 = defineInlineFunction('kotlin.kotlin.sequences.groupBy_z5avom$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupBy_20 = defineInlineFunction('kotlin.kotlin.sequences.groupBy_rpj48c$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupByTo_19 = defineInlineFunction('kotlin.kotlin.sequences.groupByTo_m5ds0u$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(element); - } - return destination; - }; - })); - var groupByTo_20 = defineInlineFunction('kotlin.kotlin.sequences.groupByTo_r8laog$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var key = keySelector(element); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(element)); - } - return destination; - }; - })); - var groupingBy_1 = defineInlineFunction('kotlin.kotlin.sequences.groupingBy_z5avom$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Grouping = _.kotlin.collections.Grouping; - function groupingBy$ObjectLiteral(this$groupingBy, closure$keySelector) { - this.this$groupingBy = this$groupingBy; - this.closure$keySelector = closure$keySelector; - } - groupingBy$ObjectLiteral.prototype.sourceIterator = function () { - return this.this$groupingBy.iterator(); - }; - groupingBy$ObjectLiteral.prototype.keyOf_11rb$ = function (element) { - return this.closure$keySelector(element); - }; - groupingBy$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Grouping]}; - return function ($receiver, keySelector) { - return new groupingBy$ObjectLiteral($receiver, keySelector); - }; - })); - function map_10($receiver, transform) { - return new TransformingSequence($receiver, transform); - } - function mapIndexed_9($receiver, transform) { - return new TransformingIndexedSequence($receiver, transform); - } - function mapIndexedNotNull_1($receiver, transform) { - return filterNotNull_1(new TransformingIndexedSequence($receiver, transform)); - } - var mapIndexedNotNullTo_1 = defineInlineFunction('kotlin.kotlin.sequences.mapIndexedNotNullTo_eyjglh$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - var tmp$_1; - if ((tmp$_1 = transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedTo_9 = defineInlineFunction('kotlin.kotlin.sequences.mapIndexedTo_49r4ke$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item)); - } - return destination; - }; - })); - function mapNotNull_2($receiver, transform) { - return filterNotNull_1(new TransformingSequence($receiver, transform)); - } - var mapNotNullTo_2 = defineInlineFunction('kotlin.kotlin.sequences.mapNotNullTo_u5l3of$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var tmp$_0; - if ((tmp$_0 = transform(element)) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapTo_10 = defineInlineFunction('kotlin.kotlin.sequences.mapTo_kntv26$', function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(transform(item)); - } - return destination; - }); - function withIndex_9($receiver) { - return new IndexingSequence($receiver); - } - function distinct$lambda(it) { - return it; - } - function distinct_9($receiver) { - return distinctBy_9($receiver, distinct$lambda); - } - function distinctBy_9($receiver, selector) { - return new DistinctSequence($receiver, selector); - } - function toMutableSet_9($receiver) { - var tmp$; - var set = LinkedHashSet_init_0(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - set.add_11rb$(item); - } - return set; - } - var all_10 = defineInlineFunction('kotlin.kotlin.sequences.all_euau3h$', function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) - return false; - } - return true; - }); - function any_21($receiver) { - return $receiver.iterator().hasNext(); - } - var any_22 = defineInlineFunction('kotlin.kotlin.sequences.any_euau3h$', function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return true; - } - return false; - }); - function count_22($receiver) { - var tmp$; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - checkCountOverflow((count = count + 1 | 0, count)); - } - return count; - } - var count_23 = defineInlineFunction('kotlin.kotlin.sequences.count_euau3h$', wrapFunction(function () { - var checkCountOverflow = _.kotlin.collections.checkCountOverflow_za3lpa$; - return function ($receiver, predicate) { - var tmp$; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - checkCountOverflow((count = count + 1 | 0, count)); - } - return count; - }; - })); - var fold_9 = defineInlineFunction('kotlin.kotlin.sequences.fold_azbry2$', function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - accumulator = operation(accumulator, element); - } - return accumulator; - }); - var foldIndexed_9 = defineInlineFunction('kotlin.kotlin.sequences.foldIndexed_wxmp26$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - accumulator = operation(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), accumulator, element); - } - return accumulator; - }; - })); - var forEach_10 = defineInlineFunction('kotlin.kotlin.sequences.forEach_o41pun$', function ($receiver, action) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - action(element); - } - }); - var forEachIndexed_9 = defineInlineFunction('kotlin.kotlin.sequences.forEachIndexed_iyis71$', wrapFunction(function () { - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - action(checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)), item); - } - }; - })); - function max_12($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - if (isNaN_1(max)) - return max; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_1(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_13($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - if (isNaN_2(max)) - return max; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_2(e)) - return e; - if (max < e) - max = e; - } - return max; - } - function max_14($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (Kotlin.compareTo(max, e) < 0) - max = e; - } - return max; - } - var maxBy_10 = defineInlineFunction('kotlin.kotlin.sequences.maxBy_aht3pn$', function ($receiver, selector) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var maxElem = iterator.next(); - var maxValue = selector(maxElem); - while (iterator.hasNext()) { - var e = iterator.next(); - var v = selector(e); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }); - function maxWith_10($receiver, comparator) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var max = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (comparator.compare(max, e) < 0) - max = e; - } - return max; - } - function min_12($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - if (isNaN_1(min)) - return min; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_1(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_13($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - if (isNaN_2(min)) - return min; - while (iterator.hasNext()) { - var e = iterator.next(); - if (isNaN_2(e)) - return e; - if (min > e) - min = e; - } - return min; - } - function min_14($receiver) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (Kotlin.compareTo(min, e) > 0) - min = e; - } - return min; - } - var minBy_10 = defineInlineFunction('kotlin.kotlin.sequences.minBy_aht3pn$', function ($receiver, selector) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var minElem = iterator.next(); - var minValue = selector(minElem); - while (iterator.hasNext()) { - var e = iterator.next(); - var v = selector(e); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }); - function minWith_10($receiver, comparator) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - return null; - var min = iterator.next(); - while (iterator.hasNext()) { - var e = iterator.next(); - if (comparator.compare(min, e) > 0) - min = e; - } - return min; - } - function none_21($receiver) { - return !$receiver.iterator().hasNext(); - } - var none_22 = defineInlineFunction('kotlin.kotlin.sequences.none_euau3h$', function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) - return false; - } - return true; - }); - function onEach$lambda(closure$action) { - return function (it) { - closure$action(it); - return it; - }; - } - function onEach_1($receiver, action) { - return map_10($receiver, onEach$lambda(action)); - } - var reduce_9 = defineInlineFunction('kotlin.kotlin.sequences.reduce_linb1r$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - return function ($receiver, operation) { - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw UnsupportedOperationException_init("Empty sequence can't be reduced."); - var accumulator = iterator.next(); - while (iterator.hasNext()) { - accumulator = operation(accumulator, iterator.next()); - } - return accumulator; - }; - })); - var reduceIndexed_9 = defineInlineFunction('kotlin.kotlin.sequences.reduceIndexed_8denzp$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, operation) { - var tmp$; - var iterator = $receiver.iterator(); - if (!iterator.hasNext()) - throw UnsupportedOperationException_init("Empty sequence can't be reduced."); - var index = 1; - var accumulator = iterator.next(); - while (iterator.hasNext()) { - accumulator = operation(checkIndexOverflow((tmp$ = index, index = tmp$ + 1 | 0, tmp$)), accumulator, iterator.next()); - } - return accumulator; - }; - })); - var sumBy_9 = defineInlineFunction('kotlin.kotlin.sequences.sumBy_gvemys$', function ($receiver, selector) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + selector(element) | 0; - } - return sum; - }); - var sumByDouble_9 = defineInlineFunction('kotlin.kotlin.sequences.sumByDouble_b4hqx8$', function ($receiver, selector) { - var tmp$; - var sum = 0.0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += selector(element); - } - return sum; - }); - function requireNoNulls$lambda(this$requireNoNulls) { - return function (it) { - if (it == null) { - throw IllegalArgumentException_init_0('null element found in ' + this$requireNoNulls + '.'); - } - return it; - }; - } - function requireNoNulls_2($receiver) { - return map_10($receiver, requireNoNulls$lambda($receiver)); - } - function chunked_1($receiver, size) { - return windowed_1($receiver, size, size, true); - } - function chunked_2($receiver, size, transform) { - return windowed_2($receiver, size, size, true, transform); - } - function minus$ObjectLiteral(this$minus, closure$element) { - this.this$minus = this$minus; - this.closure$element = closure$element; - } - function minus$ObjectLiteral$iterator$lambda(closure$removed, closure$element) { - return function (it) { - if (!closure$removed.v && equals(it, closure$element)) { - closure$removed.v = true; - return false; - } - else - return true; - }; - } - minus$ObjectLiteral.prototype.iterator = function () { - var removed = {v: false}; - return filter_9(this.this$minus, minus$ObjectLiteral$iterator$lambda(removed, this.closure$element)).iterator(); - }; - minus$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function minus_3($receiver, element) { - return new minus$ObjectLiteral($receiver, element); - } - function minus$ObjectLiteral_0(closure$elements, this$minus) { - this.closure$elements = closure$elements; - this.this$minus = this$minus; - } - function minus$ObjectLiteral$iterator$lambda_0(closure$other) { - return function (it) { - return closure$other.contains_11rb$(it); - }; - } - minus$ObjectLiteral_0.prototype.iterator = function () { - var other = toHashSet(this.closure$elements); - return filterNot_9(this.this$minus, minus$ObjectLiteral$iterator$lambda_0(other)).iterator(); - }; - minus$ObjectLiteral_0.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function minus_4($receiver, elements) { - if (elements.length === 0) - return $receiver; - return new minus$ObjectLiteral_0(elements, $receiver); - } - function minus$ObjectLiteral_1(closure$elements, this$minus) { - this.closure$elements = closure$elements; - this.this$minus = this$minus; - } - function minus$ObjectLiteral$iterator$lambda_1(closure$other) { - return function (it) { - return closure$other.contains_11rb$(it); - }; - } - minus$ObjectLiteral_1.prototype.iterator = function () { - var other = convertToSetForSetOperation(this.closure$elements); - if (other.isEmpty()) - return this.this$minus.iterator(); - else - return filterNot_9(this.this$minus, minus$ObjectLiteral$iterator$lambda_1(other)).iterator(); - }; - minus$ObjectLiteral_1.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function minus_5($receiver, elements) { - return new minus$ObjectLiteral_1(elements, $receiver); - } - function minus$ObjectLiteral_2(closure$elements, this$minus) { - this.closure$elements = closure$elements; - this.this$minus = this$minus; - } - function minus$ObjectLiteral$iterator$lambda_2(closure$other) { - return function (it) { - return closure$other.contains_11rb$(it); - }; - } - minus$ObjectLiteral_2.prototype.iterator = function () { - var other = toHashSet_9(this.closure$elements); - if (other.isEmpty()) - return this.this$minus.iterator(); - else - return filterNot_9(this.this$minus, minus$ObjectLiteral$iterator$lambda_2(other)).iterator(); - }; - minus$ObjectLiteral_2.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function minus_6($receiver, elements) { - return new minus$ObjectLiteral_2(elements, $receiver); - } - var minusElement_0 = defineInlineFunction('kotlin.kotlin.sequences.minusElement_9h40j2$', wrapFunction(function () { - var minus = _.kotlin.sequences.minus_9h40j2$; - return function ($receiver, element) { - return minus($receiver, element); - }; - })); - var partition_9 = defineInlineFunction('kotlin.kotlin.sequences.partition_euau3h$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = ArrayList_init(); - var second = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - first.add_11rb$(element); - } - else { - second.add_11rb$(element); - } - } - return new Pair_init(first, second); - }; - })); - function plus_7($receiver, element) { - return flatten_1(sequenceOf([$receiver, sequenceOf([element])])); - } - function plus_8($receiver, elements) { - return plus_9($receiver, asList(elements)); - } - function plus_9($receiver, elements) { - return flatten_1(sequenceOf([$receiver, asSequence_8(elements)])); - } - function plus_10($receiver, elements) { - return flatten_1(sequenceOf([$receiver, elements])); - } - var plusElement_1 = defineInlineFunction('kotlin.kotlin.sequences.plusElement_9h40j2$', wrapFunction(function () { - var plus = _.kotlin.sequences.plus_9h40j2$; - return function ($receiver, element) { - return plus($receiver, element); - }; - })); - function windowed_1($receiver, size, step, partialWindows) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - return windowedSequence_1($receiver, size, step, partialWindows, false); - } - function windowed_2($receiver, size, step, partialWindows, transform) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - return map_10(windowedSequence_1($receiver, size, step, partialWindows, true), transform); - } - function zip$lambda(t1, t2) { - return to(t1, t2); - } - function zip_55($receiver, other) { - return new MergingSequence($receiver, other, zip$lambda); - } - function zip_56($receiver, other, transform) { - return new MergingSequence($receiver, other, transform); - } - function zipWithNext$lambda(a, b) { - return to(a, b); - } - function zipWithNext_1($receiver) { - return zipWithNext_2($receiver, zipWithNext$lambda); - } - function Coroutine$zipWithNext$lambda(this$zipWithNext_0, closure$transform_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$zipWithNext = this$zipWithNext_0; - this.local$closure$transform = closure$transform_0; - this.local$iterator = void 0; - this.local$current = void 0; - this.local$next = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$zipWithNext$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; - Coroutine$zipWithNext$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$zipWithNext$lambda.prototype.constructor = Coroutine$zipWithNext$lambda; - Coroutine$zipWithNext$lambda.prototype.doResume = function () { - do - try { - switch (this.state_0) { - case 0: - this.local$iterator = this.local$this$zipWithNext.iterator(); - if (!this.local$iterator.hasNext()) { - return; - } - else { - this.state_0 = 2; - continue; - } - - case 1: - throw this.exception_0; - case 2: - this.local$current = this.local$iterator.next(); - this.state_0 = 3; - continue; - case 3: - if (!this.local$iterator.hasNext()) { - this.state_0 = 5; - continue; - } - - this.local$next = this.local$iterator.next(); - this.state_0 = 4; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$transform(this.local$current, this.local$next), this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - case 4: - this.local$current = this.local$next; - this.state_0 = 3; - continue; - case 5: - return Unit; - default:this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } - catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } - else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } - } - while (true); - }; - function zipWithNext$lambda_0(this$zipWithNext_0, closure$transform_0) { - return function ($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$zipWithNext$lambda(this$zipWithNext_0, closure$transform_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - }; - } - function zipWithNext_2($receiver, transform) { - return sequence(zipWithNext$lambda_0($receiver, transform)); - } - function joinTo_9($receiver, buffer, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - var tmp$; - buffer.append_gw00v9$(prefix); - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if ((count = count + 1 | 0, count) > 1) - buffer.append_gw00v9$(separator); - if (limit < 0 || count <= limit) { - appendElement_0(buffer, element, transform); - } - else - break; - } - if (limit >= 0 && count > limit) - buffer.append_gw00v9$(truncated); - buffer.append_gw00v9$(postfix); - return buffer; - } - function joinToString_9($receiver, separator, prefix, postfix, limit, truncated, transform) { - if (separator === void 0) - separator = ', '; - if (prefix === void 0) - prefix = ''; - if (postfix === void 0) - postfix = ''; - if (limit === void 0) - limit = -1; - if (truncated === void 0) - truncated = '...'; - if (transform === void 0) - transform = null; - return joinTo_9($receiver, StringBuilder_init_1(), separator, prefix, postfix, limit, truncated, transform).toString(); - } - function asIterable$lambda_8(this$asIterable) { - return function () { - return this$asIterable.iterator(); - }; - } - function Iterable$ObjectLiteral_0(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Iterable$ObjectLiteral_0.prototype.iterator = function () { - return this.closure$iterator(); - }; - Iterable$ObjectLiteral_0.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterable]}; - function asIterable_10($receiver) { - return new Iterable$ObjectLiteral_0(asIterable$lambda_8($receiver)); - } - var asSequence_10 = defineInlineFunction('kotlin.kotlin.sequences.asSequence_veqyi0$', function ($receiver) { - return $receiver; - }); - function average_17($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_18($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_19($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_20($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_21($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function average_22($receiver) { - var tmp$; - var sum = 0.0; - var count = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - checkCountOverflow((count = count + 1 | 0, count)); - } - return count === 0 ? kotlin_js_internal_DoubleCompanionObject.NaN : sum / count; - } - function sum_17($receiver) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + element; - } - return sum; - } - function sum_18($receiver) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + element; - } - return sum; - } - function sum_19($receiver) { - var tmp$; - var sum = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum + element | 0; - } - return sum; - } - function sum_20($receiver) { - var tmp$; - var sum = L0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum = sum.add(element); - } - return sum; - } - function sum_21($receiver) { - var tmp$; - var sum = 0.0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - } - return sum; - } - function sum_22($receiver) { - var tmp$; - var sum = 0.0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - sum += element; - } - return sum; - } - function minus_7($receiver, element) { - var result = LinkedHashSet_init_3(mapCapacity($receiver.size)); - var removed = {v: false}; - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element_0 = tmp$.next(); - var predicate$result; - if (!removed.v && equals(element_0, element)) { - removed.v = true; - predicate$result = false; - } - else { - predicate$result = true; - } - if (predicate$result) - result.add_11rb$(element_0); - } - return result; - } - function minus_8($receiver, elements) { - var result = LinkedHashSet_init_1($receiver); - removeAll_4(result, elements); - return result; - } - function minus_9($receiver, elements) { - var other = convertToSetForSetOperationWith(elements, $receiver); - if (other.isEmpty()) - return toSet_8($receiver); - if (Kotlin.isType(other, Set)) { - var destination = LinkedHashSet_init_0(); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!other.contains_11rb$(element)) - destination.add_11rb$(element); - } - return destination; - } - var result = LinkedHashSet_init_1($receiver); - result.removeAll_brywnq$(other); - return result; - } - function minus_10($receiver, elements) { - var result = LinkedHashSet_init_1($receiver); - removeAll_3(result, elements); - return result; - } - var minusElement_1 = defineInlineFunction('kotlin.kotlin.collections.minusElement_xfiyik$', wrapFunction(function () { - var minus = _.kotlin.collections.minus_xfiyik$; - return function ($receiver, element) { - return minus($receiver, element); - }; - })); - function plus_11($receiver, element) { - var result = LinkedHashSet_init_3(mapCapacity($receiver.size + 1 | 0)); - result.addAll_brywnq$($receiver); - result.add_11rb$(element); - return result; - } - function plus_12($receiver, elements) { - var result = LinkedHashSet_init_3(mapCapacity($receiver.size + elements.length | 0)); - result.addAll_brywnq$($receiver); - addAll_1(result, elements); - return result; - } - function plus_13($receiver, elements) { - var tmp$, tmp$_0; - var result = LinkedHashSet_init_3(mapCapacity((tmp$_0 = (tmp$ = collectionSizeOrNull(elements)) != null ? $receiver.size + tmp$ | 0 : null) != null ? tmp$_0 : $receiver.size * 2 | 0)); - result.addAll_brywnq$($receiver); - addAll(result, elements); - return result; - } - function plus_14($receiver, elements) { - var result = LinkedHashSet_init_3(mapCapacity($receiver.size * 2 | 0)); - result.addAll_brywnq$($receiver); - addAll_0(result, elements); - return result; - } - var plusElement_2 = defineInlineFunction('kotlin.kotlin.collections.plusElement_xfiyik$', wrapFunction(function () { - var plus = _.kotlin.collections.plus_xfiyik$; - return function ($receiver, element) { - return plus($receiver, element); - }; - })); - var elementAt_11 = defineInlineFunction('kotlin.kotlin.text.elementAt_94bcnn$', function ($receiver, index) { - return $receiver.charCodeAt(index); - }); - var elementAtOrElse_11 = defineInlineFunction('kotlin.kotlin.text.elementAtOrElse_qdauc8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver.charCodeAt(index) : unboxChar(defaultValue(index)); - }; - })); - var elementAtOrNull_11 = defineInlineFunction('kotlin.kotlin.text.elementAtOrNull_94bcnn$', wrapFunction(function () { - var getOrNull = _.kotlin.text.getOrNull_94bcnn$; - return function ($receiver, index) { - return getOrNull($receiver, index); - }; - })); - var find_10 = defineInlineFunction('kotlin.kotlin.text.find_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }; - })); - var findLast_11 = defineInlineFunction('kotlin.kotlin.text.findLast_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var reversed = _.kotlin.ranges.reversed_zf1xzc$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var lastOrNull$result; - lastOrNull$break: do { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver.charCodeAt(index); - if (predicate(toBoxedChar(element))) { - lastOrNull$result = element; - break lastOrNull$break; - } - } - lastOrNull$result = null; - } - while (false); - return lastOrNull$result; - }; - })); - function first_22($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Char sequence is empty.'); - return $receiver.charCodeAt(0); - } - var first_23 = defineInlineFunction('kotlin.kotlin.text.first_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) - return element; - } - throw new NoSuchElementException_init('Char sequence contains no character matching the predicate.'); - }; - })); - function firstOrNull_22($receiver) { - return $receiver.length === 0 ? null : $receiver.charCodeAt(0); - } - var firstOrNull_23 = defineInlineFunction('kotlin.kotlin.text.firstOrNull_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) - return element; - } - return null; - }; - })); - var getOrElse_9 = defineInlineFunction('kotlin.kotlin.text.getOrElse_qdauc8$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, index, defaultValue) { - return index >= 0 && index <= get_lastIndex($receiver) ? $receiver.charCodeAt(index) : unboxChar(defaultValue(index)); - }; - })); - function getOrNull_9($receiver, index) { - return index >= 0 && index <= get_lastIndex_9($receiver) ? $receiver.charCodeAt(index) : null; - } - var indexOfFirst_11 = defineInlineFunction('kotlin.kotlin.text.indexOfFirst_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { - if (predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return index; - } - } - return -1; - }; - })); - var indexOfLast_11 = defineInlineFunction('kotlin.kotlin.text.indexOfLast_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var reversed = _.kotlin.ranges.reversed_zf1xzc$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return index; - } - } - return -1; - }; - })); - function last_23($receiver) { - if ($receiver.length === 0) - throw new NoSuchElementException('Char sequence is empty.'); - return $receiver.charCodeAt(get_lastIndex_9($receiver)); - } - var last_24 = defineInlineFunction('kotlin.kotlin.text.last_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var reversed = _.kotlin.ranges.reversed_zf1xzc$; - var toBoxedChar = Kotlin.toBoxedChar; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver.charCodeAt(index); - if (predicate(toBoxedChar(element))) - return element; - } - throw new NoSuchElementException_init('Char sequence contains no character matching the predicate.'); - }; - })); - function lastOrNull_23($receiver) { - return $receiver.length === 0 ? null : $receiver.charCodeAt($receiver.length - 1 | 0); - } - var lastOrNull_24 = defineInlineFunction('kotlin.kotlin.text.lastOrNull_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var reversed = _.kotlin.ranges.reversed_zf1xzc$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - var element = $receiver.charCodeAt(index); - if (predicate(toBoxedChar(element))) - return element; - } - return null; - }; - })); - var random_25 = defineInlineFunction('kotlin.kotlin.text.random_gw00vp$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.text.random_kewcp8$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - function random_26($receiver, random) { - if ($receiver.length === 0) - throw new NoSuchElementException('Char sequence is empty.'); - return $receiver.charCodeAt(random.nextInt_za3lpa$($receiver.length)); - } - function single_22($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - throw new NoSuchElementException('Char sequence is empty.'); - case 1: - tmp$ = $receiver.charCodeAt(0); - break; - default:throw IllegalArgumentException_init_0('Char sequence has more than one element.'); - } - return tmp$; - } - var single_23 = defineInlineFunction('kotlin.kotlin.text.single_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - var unboxChar = Kotlin.unboxChar; - var NoSuchElementException_init = _.kotlin.NoSuchElementException; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, predicate) { - var tmp$, tmp$_0; - var single = null; - var found = false; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) { - if (found) - throw IllegalArgumentException_init('Char sequence contains more than one matching element.'); - single = element; - found = true; - } - } - if (!found) - throw new NoSuchElementException_init('Char sequence contains no character matching the predicate.'); - return unboxChar(Kotlin.isChar(tmp$_0 = toBoxedChar(single)) ? tmp$_0 : throwCCE()); - }; - })); - function singleOrNull_22($receiver) { - return $receiver.length === 1 ? $receiver.charCodeAt(0) : null; - } - var singleOrNull_23 = defineInlineFunction('kotlin.kotlin.text.singleOrNull_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - var single = null; - var found = false; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) { - if (found) - return null; - single = element; - found = true; - } - } - if (!found) - return null; - return single; - }; - })); - function drop_10($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return Kotlin.subSequence($receiver, coerceAtMost_2(n, $receiver.length), $receiver.length); - } - function drop_11($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return $receiver.substring(coerceAtMost_2(n, $receiver.length)); - } - function dropLast_9($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_10($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - function dropLast_10($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return take_11($receiver, coerceAtLeast_2($receiver.length - n | 0, 0)); - } - var dropLastWhile_9 = defineInlineFunction('kotlin.kotlin.text.dropLastWhile_2pivbd$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) - return Kotlin.subSequence($receiver, 0, index + 1 | 0); - return ''; - }; - })); - var dropLastWhile_10 = defineInlineFunction('kotlin.kotlin.text.dropLastWhile_ouje1d$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return $receiver.substring(0, index + 1 | 0); - } - return ''; - }; - })); - var dropWhile_10 = defineInlineFunction('kotlin.kotlin.text.dropWhile_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) - return Kotlin.subSequence($receiver, index, $receiver.length); - return ''; - }; - })); - var dropWhile_11 = defineInlineFunction('kotlin.kotlin.text.dropWhile_ouje1d$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return $receiver.substring(index); - } - return ''; - }; - })); - var filter_10 = defineInlineFunction('kotlin.kotlin.text.filter_2pivbd$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var destination = StringBuilder_init(); - var tmp$; - tmp$ = $receiver.length; - for (var index = 0; index < tmp$; index++) { - var element = $receiver.charCodeAt(index); - if (predicate(toBoxedChar(element))) - destination.append_s8itvh$(element); - } - return destination; - }; - })); - var filter_11 = defineInlineFunction('kotlin.kotlin.text.filter_ouje1d$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var destination = StringBuilder_init(); - var tmp$; - tmp$ = $receiver.length; - for (var index = 0; index < tmp$; index++) { - var element = $receiver.charCodeAt(index); - if (predicate(toBoxedChar(element))) - destination.append_s8itvh$(element); - } - return destination.toString(); - }; - })); - var filterIndexed_10 = defineInlineFunction('kotlin.kotlin.text.filterIndexed_3xan9v$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var unboxChar = Kotlin.unboxChar; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var destination = StringBuilder_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - var index_0 = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); - var element = toBoxedChar(item); - if (predicate(index_0, element)) - destination.append_s8itvh$(unboxChar(element)); - } - return destination; - }; - })); - var filterIndexed_11 = defineInlineFunction('kotlin.kotlin.text.filterIndexed_4cgdv1$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var unboxChar = Kotlin.unboxChar; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var destination = StringBuilder_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - var index_0 = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); - var element = toBoxedChar(item); - if (predicate(index_0, element)) - destination.append_s8itvh$(unboxChar(element)); - } - return destination.toString(); - }; - })); - var filterIndexedTo_10 = defineInlineFunction('kotlin.kotlin.text.filterIndexedTo_2omorh$', wrapFunction(function () { - var unboxChar = Kotlin.unboxChar; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, destination, predicate) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - var index_0 = (tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0); - var element = toBoxedChar(item); - if (predicate(index_0, element)) - destination.append_s8itvh$(unboxChar(element)); - } - return destination; - }; - })); - var filterNot_10 = defineInlineFunction('kotlin.kotlin.text.filterNot_2pivbd$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var destination = StringBuilder_init(); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (!predicate(toBoxedChar(element))) - destination.append_s8itvh$(element); - } - return destination; - }; - })); - var filterNot_11 = defineInlineFunction('kotlin.kotlin.text.filterNot_ouje1d$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var destination = StringBuilder_init(); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (!predicate(toBoxedChar(element))) - destination.append_s8itvh$(element); - } - return destination.toString(); - }; - })); - var filterNotTo_10 = defineInlineFunction('kotlin.kotlin.text.filterNotTo_2vcf41$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, predicate) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (!predicate(toBoxedChar(element))) - destination.append_s8itvh$(element); - } - return destination; - }; - })); - var filterTo_10 = defineInlineFunction('kotlin.kotlin.text.filterTo_2vcf41$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.length; - for (var index = 0; index < tmp$; index++) { - var element = $receiver.charCodeAt(index); - if (predicate(toBoxedChar(element))) - destination.append_s8itvh$(element); - } - return destination; - }; - })); - function slice_19($receiver, indices) { - if (indices.isEmpty()) - return ''; - return subSequence_0($receiver, indices); - } - function slice_20($receiver, indices) { - if (indices.isEmpty()) - return ''; - return substring_1($receiver, indices); - } - function slice_21($receiver, indices) { - var tmp$; - var size = collectionSizeOrDefault(indices, 10); - if (size === 0) - return ''; - var result = StringBuilder_init(size); - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var i = tmp$.next(); - result.append_s8itvh$($receiver.charCodeAt(i)); - } - return result; - } - var slice_22 = defineInlineFunction('kotlin.kotlin.text.slice_djwhei$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var slice = _.kotlin.text.slice_ymrxhc$; - return function ($receiver, indices) { - var tmp$; - return slice(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(), indices).toString(); - }; - })); - function take_10($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return Kotlin.subSequence($receiver, 0, coerceAtMost_2(n, $receiver.length)); - } - function take_11($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return $receiver.substring(0, coerceAtMost_2(n, $receiver.length)); - } - function takeLast_9($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var length = $receiver.length; - return Kotlin.subSequence($receiver, length - coerceAtMost_2(n, length) | 0, length); - } - function takeLast_10($receiver, n) { - if (!(n >= 0)) { - var message = 'Requested character count ' + n + ' is less than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var length = $receiver.length; - return $receiver.substring(length - coerceAtMost_2(n, length) | 0); - } - var takeLastWhile_9 = defineInlineFunction('kotlin.kotlin.text.takeLastWhile_2pivbd$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return Kotlin.subSequence($receiver, index + 1 | 0, $receiver.length); - } - } - return Kotlin.subSequence($receiver, 0, $receiver.length); - }; - })); - var takeLastWhile_10 = defineInlineFunction('kotlin.kotlin.text.takeLastWhile_ouje1d$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - for (var index = get_lastIndex($receiver); index >= 0; index--) { - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return $receiver.substring(index + 1 | 0); - } - } - return $receiver; - }; - })); - var takeWhile_10 = defineInlineFunction('kotlin.kotlin.text.takeWhile_2pivbd$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.length; - for (var index = 0; index < tmp$; index++) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return Kotlin.subSequence($receiver, 0, index); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); - }; - })); - var takeWhile_11 = defineInlineFunction('kotlin.kotlin.text.takeWhile_ouje1d$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = $receiver.length; - for (var index = 0; index < tmp$; index++) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) { - return $receiver.substring(0, index); - } - return $receiver; - }; - })); - function reversed_12($receiver) { - return StringBuilder_init_0($receiver).reverse(); - } - var reversed_13 = defineInlineFunction('kotlin.kotlin.text.reversed_pdl1vz$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var reversed = _.kotlin.text.reversed_gw00vp$; - return function ($receiver) { - var tmp$; - return reversed(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE()).toString(); - }; - })); - var associate_10 = defineInlineFunction('kotlin.kotlin.text.associate_b3xl1f$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var pair = transform(toBoxedChar(element)); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associateBy_21 = defineInlineFunction('kotlin.kotlin.text.associateBy_16h5q4$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), toBoxedChar(element)); - } - return destination; - }; - })); - var associateBy_22 = defineInlineFunction('kotlin.kotlin.text.associateBy_m7aj6v$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector, valueTransform) { - var capacity = coerceAtLeast(mapCapacity($receiver.length), 16); - var destination = LinkedHashMap_init(capacity); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var associateByTo_21 = defineInlineFunction('kotlin.kotlin.text.associateByTo_lm6k0r$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), toBoxedChar(element)); - } - return destination; - }; - })); - var associateByTo_22 = defineInlineFunction('kotlin.kotlin.text.associateByTo_woixqq$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - destination.put_xwzc9p$(keySelector(toBoxedChar(element)), valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var associateTo_10 = defineInlineFunction('kotlin.kotlin.text.associateTo_1pzh9q$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var pair = transform(toBoxedChar(element)); - destination.put_xwzc9p$(pair.first, pair.second); - } - return destination; - }; - })); - var associateWith_1 = defineInlineFunction('kotlin.kotlin.text.associateWith_16h5q4$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var coerceAtLeast = _.kotlin.ranges.coerceAtLeast_dqglrj$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, valueSelector) { - var result = LinkedHashMap_init(coerceAtLeast(mapCapacity($receiver.length), 16)); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - result.put_xwzc9p$(toBoxedChar(element), valueSelector(toBoxedChar(element))); - } - return result; - }; - })); - var associateWithTo_1 = defineInlineFunction('kotlin.kotlin.text.associateWithTo_dykjl$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, valueSelector) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - destination.put_xwzc9p$(toBoxedChar(element), valueSelector(toBoxedChar(element))); - } - return destination; - }; - })); - function toCollection_10($receiver, destination) { - var tmp$; - tmp$ = iterator_4($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - destination.add_11rb$(toBoxedChar(item)); - } - return destination; - } - function toHashSet_10($receiver) { - return toCollection_10($receiver, HashSet_init_2(mapCapacity($receiver.length))); - } - function toList_11($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptyList(); - break; - case 1: - tmp$ = listOf(toBoxedChar($receiver.charCodeAt(0))); - break; - default:tmp$ = toMutableList_11($receiver); - break; - } - return tmp$; - } - function toMutableList_11($receiver) { - return toCollection_10($receiver, ArrayList_init_0($receiver.length)); - } - function toSet_10($receiver) { - var tmp$; - switch ($receiver.length) { - case 0: - tmp$ = emptySet(); - break; - case 1: - tmp$ = setOf(toBoxedChar($receiver.charCodeAt(0))); - break; - default:tmp$ = toCollection_10($receiver, LinkedHashSet_init_3(mapCapacity($receiver.length))); - break; - } - return tmp$; - } - var flatMap_11 = defineInlineFunction('kotlin.kotlin.text.flatMap_83nucd$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var addAll = _.kotlin.collections.addAll_ipc267$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var list = transform(toBoxedChar(element)); - addAll(destination, list); - } - return destination; - }; - })); - var flatMapTo_11 = defineInlineFunction('kotlin.kotlin.text.flatMapTo_kg2lzy$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var addAll = _.kotlin.collections.addAll_ipc267$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var list = transform(toBoxedChar(element)); - addAll(destination, list); - } - return destination; - }; - })); - var groupBy_21 = defineInlineFunction('kotlin.kotlin.text.groupBy_16h5q4$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - var groupBy_22 = defineInlineFunction('kotlin.kotlin.text.groupBy_m7aj6v$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, keySelector, valueTransform) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var groupByTo_21 = defineInlineFunction('kotlin.kotlin.text.groupByTo_mntg7c$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(toBoxedChar(element)); - } - return destination; - }; - })); - var groupByTo_22 = defineInlineFunction('kotlin.kotlin.text.groupByTo_dgnza9$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, keySelector, valueTransform) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var key = keySelector(toBoxedChar(element)); - var tmp$_0; - var value = destination.get_11rb$(key); - if (value == null) { - var answer = ArrayList_init(); - destination.put_xwzc9p$(key, answer); - tmp$_0 = answer; - } - else { - tmp$_0 = value; - } - var list = tmp$_0; - list.add_11rb$(valueTransform(toBoxedChar(element))); - } - return destination; - }; - })); - var groupingBy_2 = defineInlineFunction('kotlin.kotlin.text.groupingBy_16h5q4$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var Kind_CLASS = Kotlin.Kind.CLASS; - var Grouping = _.kotlin.collections.Grouping; - function groupingBy$ObjectLiteral(this$groupingBy, closure$keySelector) { - this.this$groupingBy = this$groupingBy; - this.closure$keySelector = closure$keySelector; - } - groupingBy$ObjectLiteral.prototype.sourceIterator = function () { - return iterator(this.this$groupingBy); - }; - groupingBy$ObjectLiteral.prototype.keyOf_11rb$ = function (element) { - return this.closure$keySelector(toBoxedChar(element)); - }; - groupingBy$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Grouping]}; - return function ($receiver, keySelector) { - return new groupingBy$ObjectLiteral($receiver, keySelector); - }; - })); - var map_11 = defineInlineFunction('kotlin.kotlin.text.map_16h5q4$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - destination.add_11rb$(transform(toBoxedChar(item))); - } - return destination; - }; - })); - var mapIndexed_10 = defineInlineFunction('kotlin.kotlin.text.mapIndexed_bnyqco$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, transform) { - var destination = ArrayList_init($receiver.length); - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))); - } - return destination; - }; - })); - var mapIndexedNotNull_2 = defineInlineFunction('kotlin.kotlin.text.mapIndexedNotNull_iqd6dn$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - var tmp$_1; - if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedNotNullTo_2 = defineInlineFunction('kotlin.kotlin.text.mapIndexedNotNullTo_cynlyo$', wrapFunction(function () { - var unboxChar = Kotlin.unboxChar; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - var tmp$_1; - if ((tmp$_1 = transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))) != null) { - destination.add_11rb$(tmp$_1); - } - } - return destination; - }; - })); - var mapIndexedTo_10 = defineInlineFunction('kotlin.kotlin.text.mapIndexedTo_4f8103$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - destination.add_11rb$(transform((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item))); - } - return destination; - }; - })); - var mapNotNull_3 = defineInlineFunction('kotlin.kotlin.text.mapNotNull_10i1d3$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var unboxChar = Kotlin.unboxChar; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, transform) { - var destination = ArrayList_init(); - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var tmp$_0; - if ((tmp$_0 = transform(toBoxedChar(element))) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapNotNullTo_3 = defineInlineFunction('kotlin.kotlin.text.mapNotNullTo_jcwsr8$', wrapFunction(function () { - var unboxChar = Kotlin.unboxChar; - var wrapFunction = Kotlin.wrapFunction; - var Unit = Kotlin.kotlin.Unit; - var mapNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (element) { - var tmp$; - if ((tmp$ = closure$transform(element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - var tmp$_0; - if ((tmp$_0 = transform(toBoxedChar(element))) != null) { - destination.add_11rb$(tmp$_0); - } - } - return destination; - }; - })); - var mapTo_11 = defineInlineFunction('kotlin.kotlin.text.mapTo_wrnknd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - destination.add_11rb$(transform(toBoxedChar(item))); - } - return destination; - }; - })); - function withIndex$lambda_9(this$withIndex) { - return function () { - return iterator_4(this$withIndex); - }; - } - function withIndex_10($receiver) { - return new IndexingIterable(withIndex$lambda_9($receiver)); - } - var all_11 = defineInlineFunction('kotlin.kotlin.text.all_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (!predicate(toBoxedChar(element))) - return false; - } - return true; - }; - })); - function any_23($receiver) { - return !($receiver.length === 0); - } - var any_24 = defineInlineFunction('kotlin.kotlin.text.any_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) - return true; - } - return false; - }; - })); - var count_24 = defineInlineFunction('kotlin.kotlin.text.count_gw00vp$', function ($receiver) { - return $receiver.length; - }); - var count_25 = defineInlineFunction('kotlin.kotlin.text.count_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - var count = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) - count = count + 1 | 0; - } - return count; - }; - })); - var fold_10 = defineInlineFunction('kotlin.kotlin.text.fold_riyz04$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, initial, operation) { - var tmp$; - var accumulator = initial; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - accumulator = operation(accumulator, toBoxedChar(element)); - } - return accumulator; - }; - })); - var foldIndexed_10 = defineInlineFunction('kotlin.kotlin.text.foldIndexed_l9i73k$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, initial, operation) { - var tmp$, tmp$_0; - var index = 0; - var accumulator = initial; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - accumulator = operation((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), accumulator, toBoxedChar(element)); - } - return accumulator; - }; - })); - var foldRight_9 = defineInlineFunction('kotlin.kotlin.text.foldRight_xy5j5e$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, initial, operation) { - var tmp$; - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(toBoxedChar($receiver.charCodeAt((tmp$ = index, index = tmp$ - 1 | 0, tmp$))), accumulator); - } - return accumulator; - }; - })); - var foldRightIndexed_9 = defineInlineFunction('kotlin.kotlin.text.foldRightIndexed_bpin9y$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, initial, operation) { - var index = get_lastIndex($receiver); - var accumulator = initial; - while (index >= 0) { - accumulator = operation(index, toBoxedChar($receiver.charCodeAt(index)), accumulator); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var forEach_11 = defineInlineFunction('kotlin.kotlin.text.forEach_57f55l$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, action) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - action(toBoxedChar(element)); - } - }; - })); - var forEachIndexed_10 = defineInlineFunction('kotlin.kotlin.text.forEachIndexed_q254al$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, action) { - var tmp$, tmp$_0; - var index = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var item = unboxChar(tmp$.next()); - action((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0), toBoxedChar(item)); - } - }; - })); - function max_15($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver.charCodeAt(0); - tmp$ = get_lastIndex_9($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver.charCodeAt(i); - if (max < e) - max = e; - } - return max; - } - var maxBy_11 = defineInlineFunction('kotlin.kotlin.text.maxBy_lwkw4q$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var maxElem = $receiver.charCodeAt(0); - var maxValue = selector(toBoxedChar(maxElem)); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver.charCodeAt(i); - var v = selector(toBoxedChar(e)); - if (Kotlin.compareTo(maxValue, v) < 0) { - maxElem = e; - maxValue = v; - } - } - return maxElem; - }; - })); - function maxWith_11($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var max = $receiver.charCodeAt(0); - tmp$ = get_lastIndex_9($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver.charCodeAt(i); - if (comparator.compare(toBoxedChar(max), toBoxedChar(e)) < 0) - max = e; - } - return max; - } - function min_15($receiver) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver.charCodeAt(0); - tmp$ = get_lastIndex_9($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver.charCodeAt(i); - if (min > e) - min = e; - } - return min; - } - var minBy_11 = defineInlineFunction('kotlin.kotlin.text.minBy_lwkw4q$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - return function ($receiver, selector) { - var tmp$; - if ($receiver.length === 0) - return null; - var minElem = $receiver.charCodeAt(0); - var minValue = selector(toBoxedChar(minElem)); - tmp$ = get_lastIndex($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver.charCodeAt(i); - var v = selector(toBoxedChar(e)); - if (Kotlin.compareTo(minValue, v) > 0) { - minElem = e; - minValue = v; - } - } - return minElem; - }; - })); - function minWith_11($receiver, comparator) { - var tmp$; - if ($receiver.length === 0) - return null; - var min = $receiver.charCodeAt(0); - tmp$ = get_lastIndex_9($receiver); - for (var i = 1; i <= tmp$; i++) { - var e = $receiver.charCodeAt(i); - if (comparator.compare(toBoxedChar(min), toBoxedChar(e)) > 0) - min = e; - } - return min; - } - function none_23($receiver) { - return $receiver.length === 0; - } - var none_24 = defineInlineFunction('kotlin.kotlin.text.none_2pivbd$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) - return false; - } - return true; - }; - })); - var onEach_2 = defineInlineFunction('kotlin.kotlin.text.onEach_jdhw1f$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, action) { - var tmp$; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - action(toBoxedChar(element)); - } - return $receiver; - }; - })); - var reduce_10 = defineInlineFunction('kotlin.kotlin.text.reduce_bc19pa$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty char sequence can't be reduced."); - var accumulator = $receiver.charCodeAt(0); - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = unboxChar(operation(toBoxedChar(accumulator), toBoxedChar($receiver.charCodeAt(index)))); - } - return accumulator; - }; - })); - var reduceIndexed_10 = defineInlineFunction('kotlin.kotlin.text.reduceIndexed_8uyn22$', wrapFunction(function () { - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$; - if ($receiver.length === 0) - throw UnsupportedOperationException_init("Empty char sequence can't be reduced."); - var accumulator = $receiver.charCodeAt(0); - tmp$ = get_lastIndex($receiver); - for (var index = 1; index <= tmp$; index++) { - accumulator = unboxChar(operation(index, toBoxedChar(accumulator), toBoxedChar($receiver.charCodeAt(index)))); - } - return accumulator; - }; - })); - var reduceRight_9 = defineInlineFunction('kotlin.kotlin.text.reduceRight_bc19pa$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$, tmp$_0; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty char sequence can't be reduced."); - var accumulator = $receiver.charCodeAt((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); - while (index >= 0) { - accumulator = unboxChar(operation(toBoxedChar($receiver.charCodeAt((tmp$_0 = index, index = tmp$_0 - 1 | 0, tmp$_0))), toBoxedChar(accumulator))); - } - return accumulator; - }; - })); - var reduceRightIndexed_9 = defineInlineFunction('kotlin.kotlin.text.reduceRightIndexed_8uyn22$', wrapFunction(function () { - var get_lastIndex = _.kotlin.text.get_lastIndex_gw00vp$; - var UnsupportedOperationException_init = _.kotlin.UnsupportedOperationException_init_pdl1vj$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, operation) { - var tmp$; - var index = get_lastIndex($receiver); - if (index < 0) - throw UnsupportedOperationException_init("Empty char sequence can't be reduced."); - var accumulator = $receiver.charCodeAt((tmp$ = index, index = tmp$ - 1 | 0, tmp$)); - while (index >= 0) { - accumulator = unboxChar(operation(index, toBoxedChar($receiver.charCodeAt(index)), toBoxedChar(accumulator))); - index = index - 1 | 0; - } - return accumulator; - }; - })); - var sumBy_10 = defineInlineFunction('kotlin.kotlin.text.sumBy_kg4n8i$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, selector) { - var tmp$; - var sum = 0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - sum = sum + selector(toBoxedChar(element)) | 0; - } - return sum; - }; - })); - var sumByDouble_10 = defineInlineFunction('kotlin.kotlin.text.sumByDouble_4bpanu$', wrapFunction(function () { - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - return function ($receiver, selector) { - var tmp$; - var sum = 0.0; - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - sum += selector(toBoxedChar(element)); - } - return sum; - }; - })); - function chunked_3($receiver, size) { - return windowed_3($receiver, size, size, true); - } - function chunked_4($receiver, size, transform) { - return windowed_4($receiver, size, size, true, transform); - } - function chunkedSequence$lambda(it) { - return it.toString(); - } - function chunkedSequence($receiver, size) { - return chunkedSequence_0($receiver, size, chunkedSequence$lambda); - } - function chunkedSequence_0($receiver, size, transform) { - return windowedSequence_0($receiver, size, size, true, transform); - } - var partition_10 = defineInlineFunction('kotlin.kotlin.text.partition_2pivbd$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = StringBuilder_init(); - var second = StringBuilder_init(); - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) { - first.append_s8itvh$(element); - } - else { - second.append_s8itvh$(element); - } - } - return new Pair_init(first, second); - }; - })); - var partition_11 = defineInlineFunction('kotlin.kotlin.text.partition_ouje1d$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - var iterator = _.kotlin.text.iterator_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - var unboxChar = Kotlin.unboxChar; - var Pair_init = _.kotlin.Pair; - return function ($receiver, predicate) { - var tmp$; - var first = StringBuilder_init(); - var second = StringBuilder_init(); - tmp$ = iterator($receiver); - while (tmp$.hasNext()) { - var element = unboxChar(tmp$.next()); - if (predicate(toBoxedChar(element))) { - first.append_s8itvh$(element); - } - else { - second.append_s8itvh$(element); - } - } - return new Pair_init(first.toString(), second.toString()); - }; - })); - function windowed$lambda(it) { - return it.toString(); - } - function windowed_3($receiver, size, step, partialWindows) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - return windowed_4($receiver, size, step, partialWindows, windowed$lambda); - } - function windowed_4($receiver, size, step, partialWindows, transform) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - var tmp$; - checkWindowSizeStep(size, step); - var thisSize = $receiver.length; - var result = ArrayList_init_0((thisSize + step - 1 | 0) / step | 0); - var index = 0; - while (index < thisSize) { - var end = index + size | 0; - if (end > thisSize) { - if (partialWindows) - tmp$ = thisSize; - else - break; - } - else - tmp$ = end; - var coercedEnd = tmp$; - result.add_11rb$(transform(Kotlin.subSequence($receiver, index, coercedEnd))); - index = index + step | 0; - } - return result; - } - function windowedSequence$lambda(it) { - return it.toString(); - } - function windowedSequence($receiver, size, step, partialWindows) { - if (step === void 0) - step = 1; - if (partialWindows === void 0) - partialWindows = false; - return windowedSequence_0($receiver, size, step, partialWindows, windowedSequence$lambda); - } - function windowedSequence$lambda_0(closure$transform, closure$size, this$windowedSequence) { - return function (index) { - return closure$transform(Kotlin.subSequence(this$windowedSequence, index, coerceAtMost_2(index + closure$size | 0, this$windowedSequence.length))); - }; - } - function windowedSequence_0($receiver, size, step_0, partialWindows, transform) { - if (step_0 === void 0) - step_0 = 1; - if (partialWindows === void 0) - partialWindows = false; - checkWindowSizeStep(size, step_0); - var windows = step(partialWindows ? get_indices_9($receiver) : until_4(0, $receiver.length - size + 1 | 0), step_0); - return map_10(asSequence_8(windows), windowedSequence$lambda_0(transform, size, $receiver)); - } - function zip_57($receiver, other) { - var length = Math_0.min($receiver.length, other.length); - var list = ArrayList_init_0(length); - for (var i = 0; i < length; i++) { - list.add_11rb$(to(toBoxedChar($receiver.charCodeAt(i)), toBoxedChar(other.charCodeAt(i)))); - } - return list; - } - var zip_58 = defineInlineFunction('kotlin.kotlin.text.zip_tac5w1$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - var Math_0 = Math; - return function ($receiver, other, transform) { - var length = Math_0.min($receiver.length, other.length); - var list = ArrayList_init(length); - for (var i = 0; i < length; i++) { - list.add_11rb$(transform(toBoxedChar($receiver.charCodeAt(i)), toBoxedChar(other.charCodeAt(i)))); - } - return list; - }; - })); - function zipWithNext_3($receiver) { - var zipWithNext$result; - zipWithNext$break: do { - var size = $receiver.length - 1 | 0; - if (size < 1) { - zipWithNext$result = emptyList(); - break zipWithNext$break; - } - var result = ArrayList_init_0(size); - for (var index = 0; index < size; index++) { - result.add_11rb$(to(toBoxedChar($receiver.charCodeAt(index)), toBoxedChar($receiver.charCodeAt(index + 1 | 0)))); - } - zipWithNext$result = result; - } - while (false); - return zipWithNext$result; - } - var zipWithNext_4 = defineInlineFunction('kotlin.kotlin.text.zipWithNext_hf4kax$', wrapFunction(function () { - var emptyList = _.kotlin.collections.emptyList_287e2$; - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, transform) { - var size = $receiver.length - 1 | 0; - if (size < 1) - return emptyList(); - var result = ArrayList_init(size); - for (var index = 0; index < size; index++) { - result.add_11rb$(transform(toBoxedChar($receiver.charCodeAt(index)), toBoxedChar($receiver.charCodeAt(index + 1 | 0)))); - } - return result; - }; - })); - function asIterable$lambda_9(this$asIterable) { - return function () { - return iterator_4(this$asIterable); - }; - } - function Iterable$ObjectLiteral_1(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Iterable$ObjectLiteral_1.prototype.iterator = function () { - return this.closure$iterator(); - }; - Iterable$ObjectLiteral_1.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterable]}; - function asIterable_11($receiver) { - var tmp$ = typeof $receiver === 'string'; - if (tmp$) { - tmp$ = $receiver.length === 0; - } - if (tmp$) - return emptyList(); - return new Iterable$ObjectLiteral_1(asIterable$lambda_9($receiver)); - } - function asSequence$lambda_9(this$asSequence) { - return function () { - return iterator_4(this$asSequence); - }; - } - function Sequence$ObjectLiteral_1(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral_1.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral_1.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function asSequence_11($receiver) { - var tmp$ = typeof $receiver === 'string'; - if (tmp$) { - tmp$ = $receiver.length === 0; - } - if (tmp$) - return emptySequence(); - return new Sequence$ObjectLiteral_1(asSequence$lambda_9($receiver)); - } - var random_27 = defineInlineFunction('kotlin.kotlin.collections.random_9hsmwz$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_b7l3ya$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_28 = defineInlineFunction('kotlin.kotlin.collections.random_rnn80q$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_2qnwpx$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_29 = defineInlineFunction('kotlin.kotlin.collections.random_o5f02i$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_i3mfo9$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_30 = defineInlineFunction('kotlin.kotlin.collections.random_k4ndbq$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.collections.random_7icwln$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - function random_31($receiver, random) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('Array is empty.'); - return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); - } - function random_32($receiver, random) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('Array is empty.'); - return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); - } - function random_33($receiver, random) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('Array is empty.'); - return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); - } - function random_34($receiver, random) { - if ($receiver.isEmpty()) - throw new NoSuchElementException('Array is empty.'); - return $receiver.get_za3lpa$(random.nextInt_za3lpa$($receiver.size)); - } - var asByteArray = defineInlineFunction('kotlin.kotlin.collections.asByteArray_o5f02i$', function ($receiver) { - return $receiver.storage; - }); - var asIntArray = defineInlineFunction('kotlin.kotlin.collections.asIntArray_9hsmwz$', function ($receiver) { - return $receiver.storage; - }); - var asLongArray = defineInlineFunction('kotlin.kotlin.collections.asLongArray_rnn80q$', function ($receiver) { - return $receiver.storage; - }); - var asShortArray = defineInlineFunction('kotlin.kotlin.collections.asShortArray_k4ndbq$', function ($receiver) { - return $receiver.storage; - }); - var asUByteArray = defineInlineFunction('kotlin.kotlin.collections.asUByteArray_964n91$', wrapFunction(function () { - var UByteArray_init = _.kotlin.UByteArray; - return function ($receiver) { - return new UByteArray_init($receiver); - }; - })); - var asUIntArray = defineInlineFunction('kotlin.kotlin.collections.asUIntArray_tmsbgo$', wrapFunction(function () { - var UIntArray_init = _.kotlin.UIntArray; - return function ($receiver) { - return new UIntArray_init($receiver); - }; - })); - var asULongArray = defineInlineFunction('kotlin.kotlin.collections.asULongArray_se6h4x$', wrapFunction(function () { - var ULongArray_init = _.kotlin.ULongArray; - return function ($receiver) { - return new ULongArray_init($receiver); - }; - })); - var asUShortArray = defineInlineFunction('kotlin.kotlin.collections.asUShortArray_i2lc79$', wrapFunction(function () { - var UShortArray_init = _.kotlin.UShortArray; - return function ($receiver) { - return new UShortArray_init($receiver); - }; - })); - function contentEquals_0($receiver, other) { - return contentEquals($receiver.storage, other.storage); - } - function contentEquals_1($receiver, other) { - return contentEquals($receiver.storage, other.storage); - } - function contentEquals_2($receiver, other) { - return contentEquals($receiver.storage, other.storage); - } - function contentEquals_3($receiver, other) { - return contentEquals($receiver.storage, other.storage); - } - function contentHashCode_0($receiver) { - return contentHashCode($receiver.storage); - } - function contentHashCode_1($receiver) { - return contentHashCode($receiver.storage); - } - function contentHashCode_2($receiver) { - return contentHashCode($receiver.storage); - } - function contentHashCode_3($receiver) { - return contentHashCode($receiver.storage); - } - function contentToString($receiver) { - return joinToString_8($receiver, ', ', '[', ']'); - } - function contentToString_0($receiver) { - return joinToString_8($receiver, ', ', '[', ']'); - } - function contentToString_1($receiver) { - return joinToString_8($receiver, ', ', '[', ']'); - } - function contentToString_2($receiver) { - return joinToString_8($receiver, ', ', '[', ']'); - } - var copyInto = defineInlineFunction('kotlin.kotlin.collections.copyInto_obrcu7$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.size; - arrayCopy($receiver.storage, destination.storage, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_0 = defineInlineFunction('kotlin.kotlin.collections.copyInto_jkamab$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.size; - arrayCopy($receiver.storage, destination.storage, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_1 = defineInlineFunction('kotlin.kotlin.collections.copyInto_qvi9gr$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.size; - arrayCopy($receiver.storage, destination.storage, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_2 = defineInlineFunction('kotlin.kotlin.collections.copyInto_7fpan5$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.size; - arrayCopy($receiver.storage, destination.storage, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyOf = defineInlineFunction('kotlin.kotlin.collections.copyOf_9hsmwz$', wrapFunction(function () { - var UIntArray_init = _.kotlin.UIntArray; - return function ($receiver) { - return new UIntArray_init($receiver.storage.slice()); - }; - })); - var copyOf_0 = defineInlineFunction('kotlin.kotlin.collections.copyOf_rnn80q$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_se6h4x$; - var ULongArray_init = _.kotlin.ULongArray; - return function ($receiver) { - return new ULongArray_init(copyOf($receiver.storage)); - }; - })); - var copyOf_1 = defineInlineFunction('kotlin.kotlin.collections.copyOf_o5f02i$', wrapFunction(function () { - var UByteArray_init = _.kotlin.UByteArray; - return function ($receiver) { - return new UByteArray_init($receiver.storage.slice()); - }; - })); - var copyOf_2 = defineInlineFunction('kotlin.kotlin.collections.copyOf_k4ndbq$', wrapFunction(function () { - var UShortArray_init = _.kotlin.UShortArray; - return function ($receiver) { - return new UShortArray_init($receiver.storage.slice()); - }; - })); - var copyOf_3 = defineInlineFunction('kotlin.kotlin.collections.copyOf_h8io69$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_c03ot6$; - var UIntArray_init = _.kotlin.UIntArray; - return function ($receiver, newSize) { - return new UIntArray_init(copyOf($receiver.storage, newSize)); - }; - })); - var copyOf_4 = defineInlineFunction('kotlin.kotlin.collections.copyOf_k9lyrg$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_3aefkx$; - var ULongArray_init = _.kotlin.ULongArray; - return function ($receiver, newSize) { - return new ULongArray_init(copyOf($receiver.storage, newSize)); - }; - })); - var copyOf_5 = defineInlineFunction('kotlin.kotlin.collections.copyOf_hlz5c8$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_mrm5p$; - var UByteArray_init = _.kotlin.UByteArray; - return function ($receiver, newSize) { - return new UByteArray_init(copyOf($receiver.storage, newSize)); - }; - })); - var copyOf_6 = defineInlineFunction('kotlin.kotlin.collections.copyOf_7156lo$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_m2jy6x$; - var UShortArray_init = _.kotlin.UShortArray; - return function ($receiver, newSize) { - return new UShortArray_init(copyOf($receiver.storage, newSize)); - }; - })); - var copyOfRange = defineInlineFunction('kotlin.kotlin.collections.copyOfRange_cb631t$', wrapFunction(function () { - var copyOfRange = _.kotlin.collections.copyOfRange_6pxxqk$; - var UIntArray_init = _.kotlin.UIntArray; - return function ($receiver, fromIndex, toIndex) { - return new UIntArray_init(copyOfRange($receiver.storage, fromIndex, toIndex)); - }; - })); - var copyOfRange_0 = defineInlineFunction('kotlin.kotlin.collections.copyOfRange_xv12r2$', wrapFunction(function () { - var copyOfRange = _.kotlin.collections.copyOfRange_2n8m0j$; - var ULongArray_init = _.kotlin.ULongArray; - return function ($receiver, fromIndex, toIndex) { - return new ULongArray_init(copyOfRange($receiver.storage, fromIndex, toIndex)); - }; - })); - var copyOfRange_1 = defineInlineFunction('kotlin.kotlin.collections.copyOfRange_csz0hm$', wrapFunction(function () { - var copyOfRange = _.kotlin.collections.copyOfRange_ietg8x$; - var UByteArray_init = _.kotlin.UByteArray; - return function ($receiver, fromIndex, toIndex) { - return new UByteArray_init(copyOfRange($receiver.storage, fromIndex, toIndex)); - }; - })); - var copyOfRange_2 = defineInlineFunction('kotlin.kotlin.collections.copyOfRange_7s1pa$', wrapFunction(function () { - var copyOfRange = _.kotlin.collections.copyOfRange_qxueih$; - var UShortArray_init = _.kotlin.UShortArray; - return function ($receiver, fromIndex, toIndex) { - return new UShortArray_init(copyOfRange($receiver.storage, fromIndex, toIndex)); - }; - })); - var toByteArray_1 = defineInlineFunction('kotlin.kotlin.collections.toByteArray_o5f02i$', function ($receiver) { - return $receiver.storage.slice(); - }); - var toIntArray_1 = defineInlineFunction('kotlin.kotlin.collections.toIntArray_9hsmwz$', function ($receiver) { - return $receiver.storage.slice(); - }); - var toLongArray_1 = defineInlineFunction('kotlin.kotlin.collections.toLongArray_rnn80q$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_se6h4x$; - return function ($receiver) { - return copyOf($receiver.storage); - }; - })); - var toShortArray_1 = defineInlineFunction('kotlin.kotlin.collections.toShortArray_k4ndbq$', function ($receiver) { - return $receiver.storage.slice(); - }); - function toTypedArray$lambda(this$toTypedArray) { - return function (index) { - return this$toTypedArray.get_za3lpa$(index); - }; - } - function toTypedArray($receiver) { - return Kotlin.newArrayF($receiver.size, toTypedArray$lambda($receiver)); - } - function toTypedArray$lambda_0(this$toTypedArray) { - return function (index) { - return this$toTypedArray.get_za3lpa$(index); - }; - } - function toTypedArray_0($receiver) { - return Kotlin.newArrayF($receiver.size, toTypedArray$lambda_0($receiver)); - } - function toTypedArray$lambda_1(this$toTypedArray) { - return function (index) { - return this$toTypedArray.get_za3lpa$(index); - }; - } - function toTypedArray_1($receiver) { - return Kotlin.newArrayF($receiver.size, toTypedArray$lambda_1($receiver)); - } - function toTypedArray$lambda_2(this$toTypedArray) { - return function (index) { - return this$toTypedArray.get_za3lpa$(index); - }; - } - function toTypedArray_2($receiver) { - return Kotlin.newArrayF($receiver.size, toTypedArray$lambda_2($receiver)); - } - var toUByteArray = defineInlineFunction('kotlin.kotlin.collections.toUByteArray_964n91$', wrapFunction(function () { - var UByteArray_init = _.kotlin.UByteArray; - return function ($receiver) { - return new UByteArray_init($receiver.slice()); - }; - })); - var toUIntArray = defineInlineFunction('kotlin.kotlin.collections.toUIntArray_tmsbgo$', wrapFunction(function () { - var UIntArray_init = _.kotlin.UIntArray; - return function ($receiver) { - return new UIntArray_init($receiver.slice()); - }; - })); - var toULongArray = defineInlineFunction('kotlin.kotlin.collections.toULongArray_se6h4x$', wrapFunction(function () { - var copyOf = _.kotlin.collections.copyOf_se6h4x$; - var ULongArray_init = _.kotlin.ULongArray; - return function ($receiver) { - return new ULongArray_init(copyOf($receiver)); - }; - })); - var toUShortArray = defineInlineFunction('kotlin.kotlin.collections.toUShortArray_i2lc79$', wrapFunction(function () { - var UShortArray_init = _.kotlin.UShortArray; - return function ($receiver) { - return new UShortArray_init($receiver.slice()); - }; - })); - var random_35 = defineInlineFunction('kotlin.kotlin.ranges.random_fouy9j$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.ranges.random_7v08js$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - var random_36 = defineInlineFunction('kotlin.kotlin.ranges.random_6ij5nc$', wrapFunction(function () { - var Random = _.kotlin.random.Random; - var random = _.kotlin.ranges.random_nk0vix$; - return function ($receiver) { - return random($receiver, Random.Default); - }; - })); - function random_37($receiver, random) { - try { - return nextUInt_2(random, $receiver); - } - catch (e) { - if (Kotlin.isType(e, IllegalArgumentException)) { - throw new NoSuchElementException(e.message); - } - else - throw e; - } - } - function random_38($receiver, random) { - try { - return nextULong_2(random, $receiver); - } - catch (e) { - if (Kotlin.isType(e, IllegalArgumentException)) { - throw new NoSuchElementException(e.message); - } - else - throw e; - } - } - var contains_43 = defineInlineFunction('kotlin.kotlin.ranges.contains_dwfzbl$', function ($receiver, element) { - return element != null && $receiver.contains_mef7kx$(element); - }); - var contains_44 = defineInlineFunction('kotlin.kotlin.ranges.contains_ky6e3h$', function ($receiver, element) { - return element != null && $receiver.contains_mef7kx$(element); - }); - function downTo_16($receiver, to) { - return UIntProgression$Companion_getInstance().fromClosedRange_fjk8us$(new UInt($receiver.data & 255), new UInt(to.data & 255), -1); - } - function downTo_17($receiver, to) { - return UIntProgression$Companion_getInstance().fromClosedRange_fjk8us$($receiver, to, -1); - } - function downTo_18($receiver, to) { - return ULongProgression$Companion_getInstance().fromClosedRange_15zasp$($receiver, to, L_1); - } - function downTo_19($receiver, to) { - return UIntProgression$Companion_getInstance().fromClosedRange_fjk8us$(new UInt($receiver.data & 65535), new UInt(to.data & 65535), -1); - } - function reversed_14($receiver) { - return UIntProgression$Companion_getInstance().fromClosedRange_fjk8us$($receiver.last, $receiver.first, -$receiver.step | 0); - } - function reversed_15($receiver) { - return ULongProgression$Companion_getInstance().fromClosedRange_15zasp$($receiver.last, $receiver.first, $receiver.step.unaryMinus()); - } - function step_2($receiver, step) { - checkStepIsPositive(step > 0, step); - return UIntProgression$Companion_getInstance().fromClosedRange_fjk8us$($receiver.first, $receiver.last, $receiver.step > 0 ? step : -step | 0); - } - function step_3($receiver, step) { - checkStepIsPositive(step.toNumber() > 0, step); - return ULongProgression$Companion_getInstance().fromClosedRange_15zasp$($receiver.first, $receiver.last, $receiver.step.toNumber() > 0 ? step : step.unaryMinus()); - } - function until_16($receiver, to) { - return new UIntRange(new UInt($receiver.data & 255), new UInt(to.toUInt().data - (new UInt(1)).data | 0)); - } - function until_17($receiver, to) { - if (uintCompare(to.data, UInt$Companion_getInstance().MIN_VALUE.data) <= 0) - return UIntRange$Companion_getInstance().EMPTY; - return new UIntRange($receiver, new UInt(to.data - (new UInt(1)).data | 0)); - } - function until_18($receiver, to) { - if (ulongCompare(to.data, ULong$Companion_getInstance().MIN_VALUE.data) <= 0) - return ULongRange$Companion_getInstance().EMPTY; - return new ULongRange_0($receiver, new ULong(to.data.subtract((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data))); - } - function until_19($receiver, to) { - return new UIntRange(new UInt($receiver.data & 65535), new UInt((new UInt(to.data & 65535)).data - (new UInt(1)).data | 0)); - } - var PI; - var E; - function Annotation() { - } - Annotation.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Annotation', interfaces: []}; - function CharSequence() { - } - CharSequence.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'CharSequence', interfaces: []}; - function Iterable() { - } - Iterable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Iterable', interfaces: []}; - function MutableIterable() { - } - MutableIterable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableIterable', interfaces: [Iterable]}; - function Collection() { - } - Collection.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Collection', interfaces: [Iterable]}; - function MutableCollection() { - } - MutableCollection.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableCollection', interfaces: [MutableIterable, Collection]}; - function List() { - } - List.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'List', interfaces: [Collection]}; - function MutableList() { - } - MutableList.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableList', interfaces: [MutableCollection, List]}; - function Set() { - } - Set.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Set', interfaces: [Collection]}; - function MutableSet() { - } - MutableSet.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableSet', interfaces: [MutableCollection, Set]}; - function Map() { - } - Map.prototype.getOrDefault_xwzc9p$ = function (key, defaultValue) { - var tmp$; - return (tmp$ = null) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }; - function Map$Entry() { - } - Map$Entry.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Entry', interfaces: []}; - Map.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Map', interfaces: []}; - function MutableMap() { - } - MutableMap.prototype.remove_xwzc9p$ = function (key, value) { - return true; - }; - function MutableMap$MutableEntry() { - } - MutableMap$MutableEntry.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableEntry', interfaces: [Map$Entry]}; - MutableMap.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableMap', interfaces: [Map]}; - function Function_0() { - } - Function_0.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Function', interfaces: []}; - function Iterator() { - } - Iterator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Iterator', interfaces: []}; - function MutableIterator() { - } - MutableIterator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableIterator', interfaces: [Iterator]}; - function ListIterator() { - } - ListIterator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ListIterator', interfaces: [Iterator]}; - function MutableListIterator() { - } - MutableListIterator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableListIterator', interfaces: [MutableIterator, ListIterator]}; - function ByteIterator() { - } - ByteIterator.prototype.next = function () { - return this.nextByte(); - }; - ByteIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'ByteIterator', interfaces: [Iterator]}; - function CharIterator() { - } - CharIterator.prototype.next = function () { - return toBoxedChar(this.nextChar()); - }; - CharIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharIterator', interfaces: [Iterator]}; - function ShortIterator() { - } - ShortIterator.prototype.next = function () { - return this.nextShort(); - }; - ShortIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'ShortIterator', interfaces: [Iterator]}; - function IntIterator() { - } - IntIterator.prototype.next = function () { - return this.nextInt(); - }; - IntIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'IntIterator', interfaces: [Iterator]}; - function LongIterator() { - } - LongIterator.prototype.next = function () { - return this.nextLong(); - }; - LongIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongIterator', interfaces: [Iterator]}; - function FloatIterator() { - } - FloatIterator.prototype.next = function () { - return this.nextFloat(); - }; - FloatIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'FloatIterator', interfaces: [Iterator]}; - function DoubleIterator() { - } - DoubleIterator.prototype.next = function () { - return this.nextDouble(); - }; - DoubleIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'DoubleIterator', interfaces: [Iterator]}; - function BooleanIterator() { - } - BooleanIterator.prototype.next = function () { - return this.nextBoolean(); - }; - BooleanIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'BooleanIterator', interfaces: [Iterator]}; - function CharProgressionIterator(first, last, step) { - CharIterator.call(this); - this.step = step; - this.finalElement_0 = last | 0; - this.hasNext_0 = this.step > 0 ? first <= last : first >= last; - this.next_0 = this.hasNext_0 ? first | 0 : this.finalElement_0; - } - CharProgressionIterator.prototype.hasNext = function () { - return this.hasNext_0; - }; - CharProgressionIterator.prototype.nextChar = function () { - var value = this.next_0; - if (value === this.finalElement_0) { - if (!this.hasNext_0) - throw NoSuchElementException_init(); - this.hasNext_0 = false; - } - else { - this.next_0 = this.next_0 + this.step | 0; - } - return toChar(value); - }; - CharProgressionIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharProgressionIterator', interfaces: [CharIterator]}; - function IntProgressionIterator(first, last, step) { - IntIterator.call(this); - this.step = step; - this.finalElement_0 = last; - this.hasNext_0 = this.step > 0 ? first <= last : first >= last; - this.next_0 = this.hasNext_0 ? first : this.finalElement_0; - } - IntProgressionIterator.prototype.hasNext = function () { - return this.hasNext_0; - }; - IntProgressionIterator.prototype.nextInt = function () { - var value = this.next_0; - if (value === this.finalElement_0) { - if (!this.hasNext_0) - throw NoSuchElementException_init(); - this.hasNext_0 = false; - } - else { - this.next_0 = this.next_0 + this.step | 0; - } - return value; - }; - IntProgressionIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'IntProgressionIterator', interfaces: [IntIterator]}; - function LongProgressionIterator(first, last, step) { - LongIterator.call(this); - this.step = step; - this.finalElement_0 = last; - this.hasNext_0 = this.step.toNumber() > 0 ? first.compareTo_11rb$(last) <= 0 : first.compareTo_11rb$(last) >= 0; - this.next_0 = this.hasNext_0 ? first : this.finalElement_0; - } - LongProgressionIterator.prototype.hasNext = function () { - return this.hasNext_0; - }; - LongProgressionIterator.prototype.nextLong = function () { - var value = this.next_0; - if (equals(value, this.finalElement_0)) { - if (!this.hasNext_0) - throw NoSuchElementException_init(); - this.hasNext_0 = false; - } - else { - this.next_0 = this.next_0.add(this.step); - } - return value; - }; - LongProgressionIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongProgressionIterator', interfaces: [LongIterator]}; - function CharProgression(start, endInclusive, step) { - CharProgression$Companion_getInstance(); - if (step === 0) - throw IllegalArgumentException_init_0('Step must be non-zero.'); - if (step === -2147483648) - throw IllegalArgumentException_init_0('Step must be greater than Int.MIN_VALUE to avoid overflow on negation.'); - this.first = start; - this.last = toChar(getProgressionLastElement(start | 0, endInclusive | 0, step)); - this.step = step; - } - CharProgression.prototype.iterator = function () { - return new CharProgressionIterator(this.first, this.last, this.step); - }; - CharProgression.prototype.isEmpty = function () { - return this.step > 0 ? this.first > this.last : this.first < this.last; - }; - CharProgression.prototype.equals = function (other) { - return Kotlin.isType(other, CharProgression) && (this.isEmpty() && other.isEmpty() || (this.first === other.first && this.last === other.last && this.step === other.step)); - }; - CharProgression.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * ((31 * (this.first | 0) | 0) + (this.last | 0) | 0) | 0) + this.step | 0; - }; - CharProgression.prototype.toString = function () { - return this.step > 0 ? String.fromCharCode(this.first) + '..' + String.fromCharCode(this.last) + ' step ' + this.step : String.fromCharCode(this.first) + ' downTo ' + String.fromCharCode(this.last) + ' step ' + (-this.step | 0); - }; - function CharProgression$Companion() { - CharProgression$Companion_instance = this; - } - CharProgression$Companion.prototype.fromClosedRange_ayra44$ = function (rangeStart, rangeEnd, step) { - return new CharProgression(rangeStart, rangeEnd, step); - }; - CharProgression$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var CharProgression$Companion_instance = null; - function CharProgression$Companion_getInstance() { - if (CharProgression$Companion_instance === null) { - new CharProgression$Companion(); - } - return CharProgression$Companion_instance; - } - CharProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharProgression', interfaces: [Iterable]}; - function IntProgression(start, endInclusive, step) { - IntProgression$Companion_getInstance(); - if (step === 0) - throw IllegalArgumentException_init_0('Step must be non-zero.'); - if (step === -2147483648) - throw IllegalArgumentException_init_0('Step must be greater than Int.MIN_VALUE to avoid overflow on negation.'); - this.first = start; - this.last = getProgressionLastElement(start, endInclusive, step); - this.step = step; - } - IntProgression.prototype.iterator = function () { - return new IntProgressionIterator(this.first, this.last, this.step); - }; - IntProgression.prototype.isEmpty = function () { - return this.step > 0 ? this.first > this.last : this.first < this.last; - }; - IntProgression.prototype.equals = function (other) { - return Kotlin.isType(other, IntProgression) && (this.isEmpty() && other.isEmpty() || (this.first === other.first && this.last === other.last && this.step === other.step)); - }; - IntProgression.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * ((31 * this.first | 0) + this.last | 0) | 0) + this.step | 0; - }; - IntProgression.prototype.toString = function () { - return this.step > 0 ? this.first.toString() + '..' + this.last + ' step ' + this.step : this.first.toString() + ' downTo ' + this.last + ' step ' + (-this.step | 0); - }; - function IntProgression$Companion() { - IntProgression$Companion_instance = this; - } - IntProgression$Companion.prototype.fromClosedRange_qt1dr2$ = function (rangeStart, rangeEnd, step) { - return new IntProgression(rangeStart, rangeEnd, step); - }; - IntProgression$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var IntProgression$Companion_instance = null; - function IntProgression$Companion_getInstance() { - if (IntProgression$Companion_instance === null) { - new IntProgression$Companion(); - } - return IntProgression$Companion_instance; - } - IntProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'IntProgression', interfaces: [Iterable]}; - function LongProgression(start, endInclusive, step) { - LongProgression$Companion_getInstance(); - if (equals(step, L0)) - throw IllegalArgumentException_init_0('Step must be non-zero.'); - if (equals(step, Long$Companion$MIN_VALUE)) - throw IllegalArgumentException_init_0('Step must be greater than Long.MIN_VALUE to avoid overflow on negation.'); - this.first = start; - this.last = getProgressionLastElement_0(start, endInclusive, step); - this.step = step; - } - LongProgression.prototype.iterator = function () { - return new LongProgressionIterator(this.first, this.last, this.step); - }; - LongProgression.prototype.isEmpty = function () { - return this.step.toNumber() > 0 ? this.first.compareTo_11rb$(this.last) > 0 : this.first.compareTo_11rb$(this.last) < 0; - }; - LongProgression.prototype.equals = function (other) { - return Kotlin.isType(other, LongProgression) && (this.isEmpty() && other.isEmpty() || (equals(this.first, other.first) && equals(this.last, other.last) && equals(this.step, other.step))); - }; - LongProgression.prototype.hashCode = function () { - return this.isEmpty() ? -1 : Kotlin.Long.fromInt(31).multiply(Kotlin.Long.fromInt(31).multiply(this.first.xor(this.first.shiftRightUnsigned(32))).add(this.last.xor(this.last.shiftRightUnsigned(32)))).add(this.step.xor(this.step.shiftRightUnsigned(32))).toInt(); - }; - LongProgression.prototype.toString = function () { - return this.step.toNumber() > 0 ? this.first.toString() + '..' + this.last.toString() + ' step ' + this.step.toString() : this.first.toString() + ' downTo ' + this.last.toString() + ' step ' + this.step.unaryMinus().toString(); - }; - function LongProgression$Companion() { - LongProgression$Companion_instance = this; - } - LongProgression$Companion.prototype.fromClosedRange_b9bd0d$ = function (rangeStart, rangeEnd, step) { - return new LongProgression(rangeStart, rangeEnd, step); - }; - LongProgression$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var LongProgression$Companion_instance = null; - function LongProgression$Companion_getInstance() { - if (LongProgression$Companion_instance === null) { - new LongProgression$Companion(); - } - return LongProgression$Companion_instance; - } - LongProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongProgression', interfaces: [Iterable]}; - function ClosedRange() { - } - ClosedRange.prototype.contains_mef7kx$ = function (value) { - return Kotlin.compareTo(value, this.start) >= 0 && Kotlin.compareTo(value, this.endInclusive) <= 0; - }; - ClosedRange.prototype.isEmpty = function () { - return Kotlin.compareTo(this.start, this.endInclusive) > 0; - }; - ClosedRange.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ClosedRange', interfaces: []}; - function CharRange(start, endInclusive) { - CharRange$Companion_getInstance(); - CharProgression.call(this, start, endInclusive, 1); - } - Object.defineProperty(CharRange.prototype, 'start', {get: function () { - return toBoxedChar(this.first); - }}); - Object.defineProperty(CharRange.prototype, 'endInclusive', {get: function () { - return toBoxedChar(this.last); - }}); - CharRange.prototype.contains_mef7kx$ = function (value) { - return this.first <= value && value <= this.last; - }; - CharRange.prototype.isEmpty = function () { - return this.first > this.last; - }; - CharRange.prototype.equals = function (other) { - return Kotlin.isType(other, CharRange) && (this.isEmpty() && other.isEmpty() || (this.first === other.first && this.last === other.last)); - }; - CharRange.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * (this.first | 0) | 0) + (this.last | 0) | 0; - }; - CharRange.prototype.toString = function () { - return String.fromCharCode(this.first) + '..' + String.fromCharCode(this.last); - }; - function CharRange$Companion() { - CharRange$Companion_instance = this; - this.EMPTY = new CharRange(toChar(1), toChar(0)); - } - CharRange$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var CharRange$Companion_instance = null; - function CharRange$Companion_getInstance() { - if (CharRange$Companion_instance === null) { - new CharRange$Companion(); - } - return CharRange$Companion_instance; - } - CharRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'CharRange', interfaces: [ClosedRange, CharProgression]}; - function IntRange(start, endInclusive) { - IntRange$Companion_getInstance(); - IntProgression.call(this, start, endInclusive, 1); - } - Object.defineProperty(IntRange.prototype, 'start', {get: function () { - return this.first; - }}); - Object.defineProperty(IntRange.prototype, 'endInclusive', {get: function () { - return this.last; - }}); - IntRange.prototype.contains_mef7kx$ = function (value) { - return this.first <= value && value <= this.last; - }; - IntRange.prototype.isEmpty = function () { - return this.first > this.last; - }; - IntRange.prototype.equals = function (other) { - return Kotlin.isType(other, IntRange) && (this.isEmpty() && other.isEmpty() || (this.first === other.first && this.last === other.last)); - }; - IntRange.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * this.first | 0) + this.last | 0; - }; - IntRange.prototype.toString = function () { - return this.first.toString() + '..' + this.last; - }; - function IntRange$Companion() { - IntRange$Companion_instance = this; - this.EMPTY = new IntRange(1, 0); - } - IntRange$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var IntRange$Companion_instance = null; - function IntRange$Companion_getInstance() { - if (IntRange$Companion_instance === null) { - new IntRange$Companion(); - } - return IntRange$Companion_instance; - } - IntRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'IntRange', interfaces: [ClosedRange, IntProgression]}; - function LongRange(start, endInclusive) { - LongRange$Companion_getInstance(); - LongProgression.call(this, start, endInclusive, L1); - } - Object.defineProperty(LongRange.prototype, 'start', {get: function () { - return this.first; - }}); - Object.defineProperty(LongRange.prototype, 'endInclusive', {get: function () { - return this.last; - }}); - LongRange.prototype.contains_mef7kx$ = function (value) { - return this.first.compareTo_11rb$(value) <= 0 && value.compareTo_11rb$(this.last) <= 0; - }; - LongRange.prototype.isEmpty = function () { - return this.first.compareTo_11rb$(this.last) > 0; - }; - LongRange.prototype.equals = function (other) { - return Kotlin.isType(other, LongRange) && (this.isEmpty() && other.isEmpty() || (equals(this.first, other.first) && equals(this.last, other.last))); - }; - LongRange.prototype.hashCode = function () { - return this.isEmpty() ? -1 : Kotlin.Long.fromInt(31).multiply(this.first.xor(this.first.shiftRightUnsigned(32))).add(this.last.xor(this.last.shiftRightUnsigned(32))).toInt(); - }; - LongRange.prototype.toString = function () { - return this.first.toString() + '..' + this.last.toString(); - }; - function LongRange$Companion() { - LongRange$Companion_instance = this; - this.EMPTY = new LongRange(L1, L0); - } - LongRange$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var LongRange$Companion_instance = null; - function LongRange$Companion_getInstance() { - if (LongRange$Companion_instance === null) { - new LongRange$Companion(); - } - return LongRange$Companion_instance; - } - LongRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'LongRange', interfaces: [ClosedRange, LongProgression]}; - function Unit() { - Unit_instance = this; - } - Unit.prototype.toString = function () { - return 'kotlin.Unit'; - }; - Unit.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Unit', interfaces: []}; - var Unit_instance = null; - function Unit_getInstance() { - if (Unit_instance === null) { - new Unit(); - } - return Unit_instance; - } - function AnnotationTarget(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function AnnotationTarget_initFields() { - AnnotationTarget_initFields = function () { - }; - AnnotationTarget$CLASS_instance = new AnnotationTarget('CLASS', 0); - AnnotationTarget$ANNOTATION_CLASS_instance = new AnnotationTarget('ANNOTATION_CLASS', 1); - AnnotationTarget$TYPE_PARAMETER_instance = new AnnotationTarget('TYPE_PARAMETER', 2); - AnnotationTarget$PROPERTY_instance = new AnnotationTarget('PROPERTY', 3); - AnnotationTarget$FIELD_instance = new AnnotationTarget('FIELD', 4); - AnnotationTarget$LOCAL_VARIABLE_instance = new AnnotationTarget('LOCAL_VARIABLE', 5); - AnnotationTarget$VALUE_PARAMETER_instance = new AnnotationTarget('VALUE_PARAMETER', 6); - AnnotationTarget$CONSTRUCTOR_instance = new AnnotationTarget('CONSTRUCTOR', 7); - AnnotationTarget$FUNCTION_instance = new AnnotationTarget('FUNCTION', 8); - AnnotationTarget$PROPERTY_GETTER_instance = new AnnotationTarget('PROPERTY_GETTER', 9); - AnnotationTarget$PROPERTY_SETTER_instance = new AnnotationTarget('PROPERTY_SETTER', 10); - AnnotationTarget$TYPE_instance = new AnnotationTarget('TYPE', 11); - AnnotationTarget$EXPRESSION_instance = new AnnotationTarget('EXPRESSION', 12); - AnnotationTarget$FILE_instance = new AnnotationTarget('FILE', 13); - AnnotationTarget$TYPEALIAS_instance = new AnnotationTarget('TYPEALIAS', 14); - } - var AnnotationTarget$CLASS_instance; - function AnnotationTarget$CLASS_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$CLASS_instance; - } - var AnnotationTarget$ANNOTATION_CLASS_instance; - function AnnotationTarget$ANNOTATION_CLASS_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$ANNOTATION_CLASS_instance; - } - var AnnotationTarget$TYPE_PARAMETER_instance; - function AnnotationTarget$TYPE_PARAMETER_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$TYPE_PARAMETER_instance; - } - var AnnotationTarget$PROPERTY_instance; - function AnnotationTarget$PROPERTY_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$PROPERTY_instance; - } - var AnnotationTarget$FIELD_instance; - function AnnotationTarget$FIELD_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$FIELD_instance; - } - var AnnotationTarget$LOCAL_VARIABLE_instance; - function AnnotationTarget$LOCAL_VARIABLE_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$LOCAL_VARIABLE_instance; - } - var AnnotationTarget$VALUE_PARAMETER_instance; - function AnnotationTarget$VALUE_PARAMETER_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$VALUE_PARAMETER_instance; - } - var AnnotationTarget$CONSTRUCTOR_instance; - function AnnotationTarget$CONSTRUCTOR_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$CONSTRUCTOR_instance; - } - var AnnotationTarget$FUNCTION_instance; - function AnnotationTarget$FUNCTION_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$FUNCTION_instance; - } - var AnnotationTarget$PROPERTY_GETTER_instance; - function AnnotationTarget$PROPERTY_GETTER_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$PROPERTY_GETTER_instance; - } - var AnnotationTarget$PROPERTY_SETTER_instance; - function AnnotationTarget$PROPERTY_SETTER_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$PROPERTY_SETTER_instance; - } - var AnnotationTarget$TYPE_instance; - function AnnotationTarget$TYPE_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$TYPE_instance; - } - var AnnotationTarget$EXPRESSION_instance; - function AnnotationTarget$EXPRESSION_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$EXPRESSION_instance; - } - var AnnotationTarget$FILE_instance; - function AnnotationTarget$FILE_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$FILE_instance; - } - var AnnotationTarget$TYPEALIAS_instance; - function AnnotationTarget$TYPEALIAS_getInstance() { - AnnotationTarget_initFields(); - return AnnotationTarget$TYPEALIAS_instance; - } - AnnotationTarget.$metadata$ = {kind: Kind_CLASS, simpleName: 'AnnotationTarget', interfaces: [Enum]}; - function AnnotationTarget$values() { - return [AnnotationTarget$CLASS_getInstance(), AnnotationTarget$ANNOTATION_CLASS_getInstance(), AnnotationTarget$TYPE_PARAMETER_getInstance(), AnnotationTarget$PROPERTY_getInstance(), AnnotationTarget$FIELD_getInstance(), AnnotationTarget$LOCAL_VARIABLE_getInstance(), AnnotationTarget$VALUE_PARAMETER_getInstance(), AnnotationTarget$CONSTRUCTOR_getInstance(), AnnotationTarget$FUNCTION_getInstance(), AnnotationTarget$PROPERTY_GETTER_getInstance(), AnnotationTarget$PROPERTY_SETTER_getInstance(), AnnotationTarget$TYPE_getInstance(), AnnotationTarget$EXPRESSION_getInstance(), AnnotationTarget$FILE_getInstance(), AnnotationTarget$TYPEALIAS_getInstance()]; - } - AnnotationTarget.values = AnnotationTarget$values; - function AnnotationTarget$valueOf(name) { - switch (name) { - case 'CLASS': - return AnnotationTarget$CLASS_getInstance(); - case 'ANNOTATION_CLASS': - return AnnotationTarget$ANNOTATION_CLASS_getInstance(); - case 'TYPE_PARAMETER': - return AnnotationTarget$TYPE_PARAMETER_getInstance(); - case 'PROPERTY': - return AnnotationTarget$PROPERTY_getInstance(); - case 'FIELD': - return AnnotationTarget$FIELD_getInstance(); - case 'LOCAL_VARIABLE': - return AnnotationTarget$LOCAL_VARIABLE_getInstance(); - case 'VALUE_PARAMETER': - return AnnotationTarget$VALUE_PARAMETER_getInstance(); - case 'CONSTRUCTOR': - return AnnotationTarget$CONSTRUCTOR_getInstance(); - case 'FUNCTION': - return AnnotationTarget$FUNCTION_getInstance(); - case 'PROPERTY_GETTER': - return AnnotationTarget$PROPERTY_GETTER_getInstance(); - case 'PROPERTY_SETTER': - return AnnotationTarget$PROPERTY_SETTER_getInstance(); - case 'TYPE': - return AnnotationTarget$TYPE_getInstance(); - case 'EXPRESSION': - return AnnotationTarget$EXPRESSION_getInstance(); - case 'FILE': - return AnnotationTarget$FILE_getInstance(); - case 'TYPEALIAS': - return AnnotationTarget$TYPEALIAS_getInstance(); - default:throwISE('No enum constant kotlin.annotation.AnnotationTarget.' + name); - } - } - AnnotationTarget.valueOf_61zpoe$ = AnnotationTarget$valueOf; - function AnnotationRetention(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function AnnotationRetention_initFields() { - AnnotationRetention_initFields = function () { - }; - AnnotationRetention$SOURCE_instance = new AnnotationRetention('SOURCE', 0); - AnnotationRetention$BINARY_instance = new AnnotationRetention('BINARY', 1); - AnnotationRetention$RUNTIME_instance = new AnnotationRetention('RUNTIME', 2); - } - var AnnotationRetention$SOURCE_instance; - function AnnotationRetention$SOURCE_getInstance() { - AnnotationRetention_initFields(); - return AnnotationRetention$SOURCE_instance; - } - var AnnotationRetention$BINARY_instance; - function AnnotationRetention$BINARY_getInstance() { - AnnotationRetention_initFields(); - return AnnotationRetention$BINARY_instance; - } - var AnnotationRetention$RUNTIME_instance; - function AnnotationRetention$RUNTIME_getInstance() { - AnnotationRetention_initFields(); - return AnnotationRetention$RUNTIME_instance; - } - AnnotationRetention.$metadata$ = {kind: Kind_CLASS, simpleName: 'AnnotationRetention', interfaces: [Enum]}; - function AnnotationRetention$values() { - return [AnnotationRetention$SOURCE_getInstance(), AnnotationRetention$BINARY_getInstance(), AnnotationRetention$RUNTIME_getInstance()]; - } - AnnotationRetention.values = AnnotationRetention$values; - function AnnotationRetention$valueOf(name) { - switch (name) { - case 'SOURCE': - return AnnotationRetention$SOURCE_getInstance(); - case 'BINARY': - return AnnotationRetention$BINARY_getInstance(); - case 'RUNTIME': - return AnnotationRetention$RUNTIME_getInstance(); - default:throwISE('No enum constant kotlin.annotation.AnnotationRetention.' + name); - } - } - AnnotationRetention.valueOf_61zpoe$ = AnnotationRetention$valueOf; - function Target(allowedTargets) { - this.allowedTargets = allowedTargets; - } - Target.$metadata$ = {kind: Kind_CLASS, simpleName: 'Target', interfaces: [Annotation]}; - function Retention(value) { - if (value === void 0) - value = AnnotationRetention$RUNTIME_getInstance(); - this.value = value; - } - Retention.$metadata$ = {kind: Kind_CLASS, simpleName: 'Retention', interfaces: [Annotation]}; - function Repeatable() { - } - Repeatable.$metadata$ = {kind: Kind_CLASS, simpleName: 'Repeatable', interfaces: [Annotation]}; - function MustBeDocumented() { - } - MustBeDocumented.$metadata$ = {kind: Kind_CLASS, simpleName: 'MustBeDocumented', interfaces: [Annotation]}; - function PureReifiable() { - } - PureReifiable.$metadata$ = {kind: Kind_CLASS, simpleName: 'PureReifiable', interfaces: [Annotation]}; - function PlatformDependent() { - } - PlatformDependent.$metadata$ = {kind: Kind_CLASS, simpleName: 'PlatformDependent', interfaces: [Annotation]}; - function mod(a, b) { - var mod = a % b; - return mod >= 0 ? mod : mod + b | 0; - } - function mod_0(a, b) { - var mod = a.modulo(b); - return mod.toNumber() >= 0 ? mod : mod.add(b); - } - function differenceModulo(a, b, c) { - return mod(mod(a, c) - mod(b, c) | 0, c); - } - function differenceModulo_0(a, b, c) { - return mod_0(mod_0(a, c).subtract(mod_0(b, c)), c); - } - function getProgressionLastElement(start, end, step) { - if (step > 0) - return start >= end ? end : end - differenceModulo(end, start, step) | 0; - else if (step < 0) - return start <= end ? end : end + differenceModulo(start, end, -step | 0) | 0; - else - throw IllegalArgumentException_init_0('Step is zero.'); - } - function getProgressionLastElement_0(start, end, step) { - if (step.toNumber() > 0) - return start.compareTo_11rb$(end) >= 0 ? end : end.subtract(differenceModulo_0(end, start, step)); - else if (step.toNumber() < 0) - return start.compareTo_11rb$(end) <= 0 ? end : end.add(differenceModulo_0(start, end, step.unaryMinus())); - else - throw IllegalArgumentException_init_0('Step is zero.'); - } - function KAnnotatedElement() { - } - KAnnotatedElement.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KAnnotatedElement', interfaces: []}; - function KCallable() { - } - KCallable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KCallable', interfaces: [KAnnotatedElement]}; - function KClass() { - } - KClass.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KClass', interfaces: [KClassifier, KAnnotatedElement, KDeclarationContainer]}; - function KClassifier() { - } - KClassifier.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KClassifier', interfaces: []}; - function KDeclarationContainer() { - } - KDeclarationContainer.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KDeclarationContainer', interfaces: []}; - function KFunction() { - } - KFunction.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KFunction', interfaces: [Function_0, KCallable]}; - function KParameter() { - } - function KParameter$Kind(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function KParameter$Kind_initFields() { - KParameter$Kind_initFields = function () { - }; - KParameter$Kind$INSTANCE_instance = new KParameter$Kind('INSTANCE', 0); - KParameter$Kind$EXTENSION_RECEIVER_instance = new KParameter$Kind('EXTENSION_RECEIVER', 1); - KParameter$Kind$VALUE_instance = new KParameter$Kind('VALUE', 2); - } - var KParameter$Kind$INSTANCE_instance; - function KParameter$Kind$INSTANCE_getInstance() { - KParameter$Kind_initFields(); - return KParameter$Kind$INSTANCE_instance; - } - var KParameter$Kind$EXTENSION_RECEIVER_instance; - function KParameter$Kind$EXTENSION_RECEIVER_getInstance() { - KParameter$Kind_initFields(); - return KParameter$Kind$EXTENSION_RECEIVER_instance; - } - var KParameter$Kind$VALUE_instance; - function KParameter$Kind$VALUE_getInstance() { - KParameter$Kind_initFields(); - return KParameter$Kind$VALUE_instance; - } - KParameter$Kind.$metadata$ = {kind: Kind_CLASS, simpleName: 'Kind', interfaces: [Enum]}; - function KParameter$Kind$values() { - return [KParameter$Kind$INSTANCE_getInstance(), KParameter$Kind$EXTENSION_RECEIVER_getInstance(), KParameter$Kind$VALUE_getInstance()]; - } - KParameter$Kind.values = KParameter$Kind$values; - function KParameter$Kind$valueOf(name) { - switch (name) { - case 'INSTANCE': - return KParameter$Kind$INSTANCE_getInstance(); - case 'EXTENSION_RECEIVER': - return KParameter$Kind$EXTENSION_RECEIVER_getInstance(); - case 'VALUE': - return KParameter$Kind$VALUE_getInstance(); - default:throwISE('No enum constant kotlin.reflect.KParameter.Kind.' + name); - } - } - KParameter$Kind.valueOf_61zpoe$ = KParameter$Kind$valueOf; - KParameter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KParameter', interfaces: [KAnnotatedElement]}; - function KProperty() { - } - function KProperty$Accessor() { - } - KProperty$Accessor.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Accessor', interfaces: []}; - function KProperty$Getter() { - } - KProperty$Getter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Getter', interfaces: [KFunction, KProperty$Accessor]}; - KProperty.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KProperty', interfaces: [KCallable]}; - function KMutableProperty() { - } - function KMutableProperty$Setter() { - } - KMutableProperty$Setter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Setter', interfaces: [KFunction, KProperty$Accessor]}; - KMutableProperty.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KMutableProperty', interfaces: [KProperty]}; - function KProperty0() { - } - function KProperty0$Getter() { - } - KProperty0$Getter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Getter', interfaces: [KProperty$Getter]}; - KProperty0.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KProperty0', interfaces: [KProperty]}; - function KMutableProperty0() { - } - function KMutableProperty0$Setter() { - } - KMutableProperty0$Setter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Setter', interfaces: [KMutableProperty$Setter]}; - KMutableProperty0.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KMutableProperty0', interfaces: [KMutableProperty, KProperty0]}; - function KProperty1() { - } - function KProperty1$Getter() { - } - KProperty1$Getter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Getter', interfaces: [KProperty$Getter]}; - KProperty1.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KProperty1', interfaces: [KProperty]}; - function KMutableProperty1() { - } - function KMutableProperty1$Setter() { - } - KMutableProperty1$Setter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Setter', interfaces: [KMutableProperty$Setter]}; - KMutableProperty1.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KMutableProperty1', interfaces: [KMutableProperty, KProperty1]}; - function KProperty2() { - } - function KProperty2$Getter() { - } - KProperty2$Getter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Getter', interfaces: [KProperty$Getter]}; - KProperty2.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KProperty2', interfaces: [KProperty]}; - function KMutableProperty2() { - } - function KMutableProperty2$Setter() { - } - KMutableProperty2$Setter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Setter', interfaces: [KMutableProperty$Setter]}; - KMutableProperty2.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KMutableProperty2', interfaces: [KMutableProperty, KProperty2]}; - function KType() { - } - KType.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KType', interfaces: [KAnnotatedElement]}; - function KTypeProjection(variance, type) { - KTypeProjection$Companion_getInstance(); - this.variance = variance; - this.type = type; - } - function KTypeProjection$Companion() { - KTypeProjection$Companion_instance = this; - this.STAR = new KTypeProjection(null, null); - } - KTypeProjection$Companion.prototype.invariant_saj79j$ = function (type) { - return new KTypeProjection(KVariance$INVARIANT_getInstance(), type); - }; - KTypeProjection$Companion.prototype.contravariant_saj79j$ = function (type) { - return new KTypeProjection(KVariance$IN_getInstance(), type); - }; - KTypeProjection$Companion.prototype.covariant_saj79j$ = function (type) { - return new KTypeProjection(KVariance$OUT_getInstance(), type); - }; - KTypeProjection$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var KTypeProjection$Companion_instance = null; - function KTypeProjection$Companion_getInstance() { - if (KTypeProjection$Companion_instance === null) { - new KTypeProjection$Companion(); - } - return KTypeProjection$Companion_instance; - } - KTypeProjection.$metadata$ = {kind: Kind_CLASS, simpleName: 'KTypeProjection', interfaces: []}; - KTypeProjection.prototype.component1 = function () { - return this.variance; - }; - KTypeProjection.prototype.component2 = function () { - return this.type; - }; - KTypeProjection.prototype.copy_wulwk3$ = function (variance, type) { - return new KTypeProjection(variance === void 0 ? this.variance : variance, type === void 0 ? this.type : type); - }; - KTypeProjection.prototype.toString = function () { - return 'KTypeProjection(variance=' + Kotlin.toString(this.variance) + (', type=' + Kotlin.toString(this.type)) + ')'; - }; - KTypeProjection.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.variance) | 0; - result = result * 31 + Kotlin.hashCode(this.type) | 0; - return result; - }; - KTypeProjection.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.variance, other.variance) && Kotlin.equals(this.type, other.type))))); - }; - function KTypeParameter() { - } - KTypeParameter.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'KTypeParameter', interfaces: [KClassifier]}; - function KVariance(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function KVariance_initFields() { - KVariance_initFields = function () { - }; - KVariance$INVARIANT_instance = new KVariance('INVARIANT', 0); - KVariance$IN_instance = new KVariance('IN', 1); - KVariance$OUT_instance = new KVariance('OUT', 2); - } - var KVariance$INVARIANT_instance; - function KVariance$INVARIANT_getInstance() { - KVariance_initFields(); - return KVariance$INVARIANT_instance; - } - var KVariance$IN_instance; - function KVariance$IN_getInstance() { - KVariance_initFields(); - return KVariance$IN_instance; - } - var KVariance$OUT_instance; - function KVariance$OUT_getInstance() { - KVariance_initFields(); - return KVariance$OUT_instance; - } - KVariance.$metadata$ = {kind: Kind_CLASS, simpleName: 'KVariance', interfaces: [Enum]}; - function KVariance$values() { - return [KVariance$INVARIANT_getInstance(), KVariance$IN_getInstance(), KVariance$OUT_getInstance()]; - } - KVariance.values = KVariance$values; - function KVariance$valueOf(name) { - switch (name) { - case 'INVARIANT': - return KVariance$INVARIANT_getInstance(); - case 'IN': - return KVariance$IN_getInstance(); - case 'OUT': - return KVariance$OUT_getInstance(); - default:throwISE('No enum constant kotlin.reflect.KVariance.' + name); - } - } - KVariance.valueOf_61zpoe$ = KVariance$valueOf; - function KVisibility(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function KVisibility_initFields() { - KVisibility_initFields = function () { - }; - KVisibility$PUBLIC_instance = new KVisibility('PUBLIC', 0); - KVisibility$PROTECTED_instance = new KVisibility('PROTECTED', 1); - KVisibility$INTERNAL_instance = new KVisibility('INTERNAL', 2); - KVisibility$PRIVATE_instance = new KVisibility('PRIVATE', 3); - } - var KVisibility$PUBLIC_instance; - function KVisibility$PUBLIC_getInstance() { - KVisibility_initFields(); - return KVisibility$PUBLIC_instance; - } - var KVisibility$PROTECTED_instance; - function KVisibility$PROTECTED_getInstance() { - KVisibility_initFields(); - return KVisibility$PROTECTED_instance; - } - var KVisibility$INTERNAL_instance; - function KVisibility$INTERNAL_getInstance() { - KVisibility_initFields(); - return KVisibility$INTERNAL_instance; - } - var KVisibility$PRIVATE_instance; - function KVisibility$PRIVATE_getInstance() { - KVisibility_initFields(); - return KVisibility$PRIVATE_instance; - } - KVisibility.$metadata$ = {kind: Kind_CLASS, simpleName: 'KVisibility', interfaces: [Enum]}; - function KVisibility$values() { - return [KVisibility$PUBLIC_getInstance(), KVisibility$PROTECTED_getInstance(), KVisibility$INTERNAL_getInstance(), KVisibility$PRIVATE_getInstance()]; - } - KVisibility.values = KVisibility$values; - function KVisibility$valueOf(name) { - switch (name) { - case 'PUBLIC': - return KVisibility$PUBLIC_getInstance(); - case 'PROTECTED': - return KVisibility$PROTECTED_getInstance(); - case 'INTERNAL': - return KVisibility$INTERNAL_getInstance(); - case 'PRIVATE': - return KVisibility$PRIVATE_getInstance(); - default:throwISE('No enum constant kotlin.reflect.KVisibility.' + name); - } - } - KVisibility.valueOf_61zpoe$ = KVisibility$valueOf; - function asList($receiver) { - return new ArrayList($receiver); - } - var asList_0 = defineInlineFunction('kotlin.kotlin.collections.asList_964n91$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - var asList_1 = defineInlineFunction('kotlin.kotlin.collections.asList_i2lc79$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - var asList_2 = defineInlineFunction('kotlin.kotlin.collections.asList_tmsbgo$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - var asList_3 = defineInlineFunction('kotlin.kotlin.collections.asList_se6h4x$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - var asList_4 = defineInlineFunction('kotlin.kotlin.collections.asList_rjqryz$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - var asList_5 = defineInlineFunction('kotlin.kotlin.collections.asList_bvy38s$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - var asList_6 = defineInlineFunction('kotlin.kotlin.collections.asList_l1lu5t$', wrapFunction(function () { - var asList = _.kotlin.collections.asList_us0mfu$; - return function ($receiver) { - return asList($receiver); - }; - })); - function asList$ObjectLiteral(this$asList) { - this.this$asList = this$asList; - AbstractList.call(this); - } - Object.defineProperty(asList$ObjectLiteral.prototype, 'size', {get: function () { - return this.this$asList.length; - }}); - asList$ObjectLiteral.prototype.isEmpty = function () { - return this.this$asList.length === 0; - }; - asList$ObjectLiteral.prototype.contains_11rb$ = function (element) { - return contains_7(this.this$asList, element); - }; - asList$ObjectLiteral.prototype.get_za3lpa$ = function (index) { - return toBoxedChar(this.this$asList[index]); - }; - asList$ObjectLiteral.prototype.indexOf_11rb$ = function (element) { - return indexOf_7(this.this$asList, element); - }; - asList$ObjectLiteral.prototype.lastIndexOf_11rb$ = function (element) { - return lastIndexOf_7(this.this$asList, element); - }; - asList$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [RandomAccess, AbstractList]}; - function asList_7($receiver) { - return new asList$ObjectLiteral($receiver); - } - var copyInto_3 = defineInlineFunction('kotlin.kotlin.collections.copyInto_bpr3is$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_4 = defineInlineFunction('kotlin.kotlin.collections.copyInto_tpo7sv$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_5 = defineInlineFunction('kotlin.kotlin.collections.copyInto_caitwp$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_6 = defineInlineFunction('kotlin.kotlin.collections.copyInto_1zk1dd$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_7 = defineInlineFunction('kotlin.kotlin.collections.copyInto_1csvzz$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_8 = defineInlineFunction('kotlin.kotlin.collections.copyInto_94rtex$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_9 = defineInlineFunction('kotlin.kotlin.collections.copyInto_bogo1$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_10 = defineInlineFunction('kotlin.kotlin.collections.copyInto_ufe64f$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyInto_11 = defineInlineFunction('kotlin.kotlin.collections.copyInto_c3e475$', wrapFunction(function () { - var arrayCopy = _.kotlin.collections.arrayCopy; - return function ($receiver, destination, destinationOffset, startIndex, endIndex) { - if (destinationOffset === void 0) - destinationOffset = 0; - if (startIndex === void 0) - startIndex = 0; - if (endIndex === void 0) - endIndex = $receiver.length; - arrayCopy($receiver, destination, destinationOffset, startIndex, endIndex); - return destination; - }; - })); - var copyOf_7 = defineInlineFunction('kotlin.kotlin.collections.copyOf_us0mfu$', function ($receiver) { - return $receiver.slice(); - }); - var copyOf_8 = defineInlineFunction('kotlin.kotlin.collections.copyOf_964n91$', function ($receiver) { - return $receiver.slice(); - }); - var copyOf_9 = defineInlineFunction('kotlin.kotlin.collections.copyOf_i2lc79$', function ($receiver) { - return $receiver.slice(); - }); - var copyOf_10 = defineInlineFunction('kotlin.kotlin.collections.copyOf_tmsbgo$', function ($receiver) { - return $receiver.slice(); - }); - function copyOf_11($receiver) { - var type = 'LongArray'; - var array = $receiver.slice(); - array.$type$ = type; - return array; - } - var copyOf_12 = defineInlineFunction('kotlin.kotlin.collections.copyOf_rjqryz$', function ($receiver) { - return $receiver.slice(); - }); - var copyOf_13 = defineInlineFunction('kotlin.kotlin.collections.copyOf_bvy38s$', function ($receiver) { - return $receiver.slice(); - }); - function copyOf_14($receiver) { - var type = 'BooleanArray'; - var array = $receiver.slice(); - array.$type$ = type; - return array; - } - function copyOf_15($receiver) { - var type = 'CharArray'; - var array = $receiver.slice(); - array.$type$ = type; - return array; - } - function copyOf_16($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Int8Array(newSize)); - } - function copyOf_17($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Int16Array(newSize)); - } - function copyOf_18($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Int32Array(newSize)); - } - function copyOf_19($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var type = 'LongArray'; - var array = arrayCopyResize($receiver, newSize, L0); - array.$type$ = type; - return array; - } - function copyOf_20($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Float32Array(newSize)); - } - function copyOf_21($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return fillFrom($receiver, new Float64Array(newSize)); - } - function copyOf_22($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var type = 'BooleanArray'; - var array = arrayCopyResize($receiver, newSize, false); - array.$type$ = type; - return array; - } - function copyOf_23($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var type = 'CharArray'; - var array = fillFrom($receiver, Kotlin.charArray(newSize)); - array.$type$ = type; - return array; - } - function copyOf_24($receiver, newSize) { - if (!(newSize >= 0)) { - var message = 'Invalid new array size: ' + newSize + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return arrayCopyResize($receiver, newSize, null); - } - function copyOfRange_3($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - return $receiver.slice(fromIndex, toIndex); - } - function copyOfRange_4($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - return $receiver.slice(fromIndex, toIndex); - } - function copyOfRange_5($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - return $receiver.slice(fromIndex, toIndex); - } - function copyOfRange_6($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - return $receiver.slice(fromIndex, toIndex); - } - function copyOfRange_7($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - var type = 'LongArray'; - var array = $receiver.slice(fromIndex, toIndex); - array.$type$ = type; - return array; - } - function copyOfRange_8($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - return $receiver.slice(fromIndex, toIndex); - } - function copyOfRange_9($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - return $receiver.slice(fromIndex, toIndex); - } - function copyOfRange_10($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - var type = 'BooleanArray'; - var array = $receiver.slice(fromIndex, toIndex); - array.$type$ = type; - return array; - } - function copyOfRange_11($receiver, fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, $receiver.length); - var type = 'CharArray'; - var array = $receiver.slice(fromIndex, toIndex); - array.$type$ = type; - return array; - } - var plus_15 = defineInlineFunction('kotlin.kotlin.collections.plus_mjy6jw$', function ($receiver, element) { - return $receiver.concat([element]); - }); - var plus_16 = defineInlineFunction('kotlin.kotlin.collections.plus_jlnu8a$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, new Int8Array([element])); - }; - })); - var plus_17 = defineInlineFunction('kotlin.kotlin.collections.plus_s7ir3o$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, new Int16Array([element])); - }; - })); - var plus_18 = defineInlineFunction('kotlin.kotlin.collections.plus_c03ot6$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, new Int32Array([element])); - }; - })); - var plus_19 = defineInlineFunction('kotlin.kotlin.collections.plus_uxdaoa$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, Kotlin.longArrayOf(element)); - }; - })); - var plus_20 = defineInlineFunction('kotlin.kotlin.collections.plus_omthmc$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, new Float32Array([element])); - }; - })); - var plus_21 = defineInlineFunction('kotlin.kotlin.collections.plus_taaqy$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, new Float64Array([element])); - }; - })); - var plus_22 = defineInlineFunction('kotlin.kotlin.collections.plus_yax8s4$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, Kotlin.booleanArrayOf(element)); - }; - })); - var plus_23 = defineInlineFunction('kotlin.kotlin.collections.plus_o2f9me$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, element) { - return primitiveArrayConcat($receiver, Kotlin.charArrayOf(element)); - }; - })); - function plus_24($receiver, elements) { - return arrayPlusCollection($receiver, elements); - } - function plus_25($receiver, elements) { - return fillFromCollection(copyOf_16($receiver, $receiver.length + elements.size | 0), $receiver.length, elements); - } - function plus_26($receiver, elements) { - return fillFromCollection(copyOf_17($receiver, $receiver.length + elements.size | 0), $receiver.length, elements); - } - function plus_27($receiver, elements) { - return fillFromCollection(copyOf_18($receiver, $receiver.length + elements.size | 0), $receiver.length, elements); - } - function plus_28($receiver, elements) { - return arrayPlusCollection($receiver, elements); - } - function plus_29($receiver, elements) { - return fillFromCollection(copyOf_20($receiver, $receiver.length + elements.size | 0), $receiver.length, elements); - } - function plus_30($receiver, elements) { - return fillFromCollection(copyOf_21($receiver, $receiver.length + elements.size | 0), $receiver.length, elements); - } - function plus_31($receiver, elements) { - return arrayPlusCollection($receiver, elements); - } - function plus_32($receiver, elements) { - return fillFromCollection(copyOf_23($receiver, $receiver.length + elements.size | 0), $receiver.length, elements); - } - var plus_33 = defineInlineFunction('kotlin.kotlin.collections.plus_vu4gah$', function ($receiver, elements) { - return $receiver.concat(elements); - }); - var plus_34 = defineInlineFunction('kotlin.kotlin.collections.plus_ndt7zj$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_35 = defineInlineFunction('kotlin.kotlin.collections.plus_907jet$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_36 = defineInlineFunction('kotlin.kotlin.collections.plus_mgkctd$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_37 = defineInlineFunction('kotlin.kotlin.collections.plus_tq12cv$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_38 = defineInlineFunction('kotlin.kotlin.collections.plus_tec1tx$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_39 = defineInlineFunction('kotlin.kotlin.collections.plus_pmvpm9$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_40 = defineInlineFunction('kotlin.kotlin.collections.plus_qsfoml$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plus_41 = defineInlineFunction('kotlin.kotlin.collections.plus_wxyzfz$', wrapFunction(function () { - var primitiveArrayConcat = _.primitiveArrayConcat; - return function ($receiver, elements) { - return primitiveArrayConcat($receiver, elements); - }; - })); - var plusElement_3 = defineInlineFunction('kotlin.kotlin.collections.plusElement_mjy6jw$', function ($receiver, element) { - return $receiver.concat([element]); - }); - function sort$lambda(a, b) { - return a.compareTo_11rb$(b); - } - function sort_0($receiver) { - if ($receiver.length > 1) { - $receiver.sort(sort$lambda); - } - } - function sort_1($receiver) { - if ($receiver.length > 1) - sortArray($receiver); - } - function sort_2($receiver, comparison) { - if ($receiver.length > 1) - sortArrayWith($receiver, comparison); - } - var sort_3 = defineInlineFunction('kotlin.kotlin.collections.sort_hcmc5n$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - var sort_4 = defineInlineFunction('kotlin.kotlin.collections.sort_6749zv$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - var sort_5 = defineInlineFunction('kotlin.kotlin.collections.sort_vuuzha$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - var sort_6 = defineInlineFunction('kotlin.kotlin.collections.sort_y2xy0v$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - var sort_7 = defineInlineFunction('kotlin.kotlin.collections.sort_rx1g57$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - var sort_8 = defineInlineFunction('kotlin.kotlin.collections.sort_qgorx0$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - var sort_9 = defineInlineFunction('kotlin.kotlin.collections.sort_vuimop$', function ($receiver, comparison) { - $receiver.sort(comparison); - }); - function sortWith($receiver, comparator) { - if ($receiver.length > 1) - sortArrayWith_0($receiver, comparator); - } - function toTypedArray_3($receiver) { - return [].slice.call($receiver); - } - function toTypedArray_4($receiver) { - return [].slice.call($receiver); - } - function toTypedArray_5($receiver) { - return [].slice.call($receiver); - } - function toTypedArray_6($receiver) { - return [].slice.call($receiver); - } - function toTypedArray_7($receiver) { - return [].slice.call($receiver); - } - function toTypedArray_8($receiver) { - return [].slice.call($receiver); - } - function toTypedArray_9($receiver) { - return [].slice.call($receiver); - } - function toTypedArray$lambda_3(this$toTypedArray) { - return function (index) { - return toBoxedChar(this$toTypedArray[index]); - }; - } - function toTypedArray_10($receiver) { - return Kotlin.newArrayF($receiver.length, toTypedArray$lambda_3($receiver)); - } - function reverse_8($receiver) { - var midPoint = ($receiver.size / 2 | 0) - 1 | 0; - if (midPoint < 0) - return; - var reverseIndex = get_lastIndex_8($receiver); - for (var index = 0; index <= midPoint; index++) { - var tmp = $receiver.get_za3lpa$(index); - $receiver.set_wxm5ur$(index, $receiver.get_za3lpa$(reverseIndex)); - $receiver.set_wxm5ur$(reverseIndex, tmp); - reverseIndex = reverseIndex - 1 | 0; - } - } - function maxOf_1(a, b) { - return Kotlin.compareTo(a, b) >= 0 ? a : b; - } - var maxOf_2 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_5gdoe6$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var maxOf_3 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_8bdmd0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var maxOf_4 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_vux9f0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var maxOf_5 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_3pjtqy$', function (a, b) { - return a.compareTo_11rb$(b) >= 0 ? a : b; - }); - var maxOf_6 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_dleff0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var maxOf_7 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_lu1900$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - function maxOf_8(a, b, c) { - return maxOf_1(a, maxOf_1(b, c)); - } - var maxOf_9 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_d9r5kp$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.max(a, b, c); - }; - })); - var maxOf_10 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_i3nxhr$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.max(a, b, c); - }; - })); - var maxOf_11 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_qt1dr2$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.max(a, b, c); - }; - })); - var maxOf_12 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_b9bd0d$', function (a, b, c) { - var b_0 = b.compareTo_11rb$(c) >= 0 ? b : c; - return a.compareTo_11rb$(b_0) >= 0 ? a : b_0; - }); - var maxOf_13 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_y2kzbl$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.max(a, b, c); - }; - })); - var maxOf_14 = defineInlineFunction('kotlin.kotlin.comparisons.maxOf_yvo9jy$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.max(a, b, c); - }; - })); - function minOf_1(a, b) { - return Kotlin.compareTo(a, b) <= 0 ? a : b; - } - var minOf_2 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_5gdoe6$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var minOf_3 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_8bdmd0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var minOf_4 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_vux9f0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var minOf_5 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_3pjtqy$', function (a, b) { - return a.compareTo_11rb$(b) <= 0 ? a : b; - }); - var minOf_6 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_dleff0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var minOf_7 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_lu1900$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - function minOf_8(a, b, c) { - return minOf_1(a, minOf_1(b, c)); - } - var minOf_9 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_d9r5kp$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.min(a, b, c); - }; - })); - var minOf_10 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_i3nxhr$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.min(a, b, c); - }; - })); - var minOf_11 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_qt1dr2$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.min(a, b, c); - }; - })); - var minOf_12 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_b9bd0d$', function (a, b, c) { - var b_0 = b.compareTo_11rb$(c) <= 0 ? b : c; - return a.compareTo_11rb$(b_0) <= 0 ? a : b_0; - }); - var minOf_13 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_y2kzbl$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.min(a, b, c); - }; - })); - var minOf_14 = defineInlineFunction('kotlin.kotlin.comparisons.minOf_yvo9jy$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b, c) { - return Math_0.min(a, b, c); - }; - })); - var buttonset = defineInlineFunction('kotlin.jquery.ui.buttonset_vwohdt$', function ($receiver) { - return $receiver.buttonset(); - }); - var dialog = defineInlineFunction('kotlin.jquery.ui.dialog_vwohdt$', function ($receiver) { - return $receiver.dialog(); - }); - var dialog_0 = defineInlineFunction('kotlin.jquery.ui.dialog_pm4xy9$', function ($receiver, params) { - return $receiver.dialog(params); - }); - var dialog_1 = defineInlineFunction('kotlin.jquery.ui.dialog_zc05ld$', function ($receiver, mode, param) { - return $receiver.dialog(mode, param); - }); - var dialog_2 = defineInlineFunction('kotlin.jquery.ui.dialog_v89ba5$', function ($receiver, mode) { - return $receiver.dialog(mode); - }); - var dialog_3 = defineInlineFunction('kotlin.jquery.ui.dialog_pfp31$', function ($receiver, mode, param, value) { - return $receiver.dialog(mode, param, value); - }); - var button = defineInlineFunction('kotlin.jquery.ui.button_vwohdt$', function ($receiver) { - return $receiver.button(); - }); - var accordion = defineInlineFunction('kotlin.jquery.ui.accordion_vwohdt$', function ($receiver) { - return $receiver.accordion(); - }); - var draggable = defineInlineFunction('kotlin.jquery.ui.draggable_pm4xy9$', function ($receiver, params) { - return $receiver.draggable(params); - }); - var selectable = defineInlineFunction('kotlin.jquery.ui.selectable_vwohdt$', function ($receiver) { - return $receiver.selectable(); - }); - function Comparator() { - } - Comparator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Comparator', interfaces: []}; - var Comparator_0 = defineInlineFunction('kotlin.kotlin.Comparator_x4fedy$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function (comparison) { - return new Comparator$ObjectLiteral(comparison); - }; - })); - function native(name) { - if (name === void 0) - name = ''; - this.name = name; - } - native.$metadata$ = {kind: Kind_CLASS, simpleName: 'native', interfaces: [Annotation]}; - function nativeGetter() { - } - nativeGetter.$metadata$ = {kind: Kind_CLASS, simpleName: 'nativeGetter', interfaces: [Annotation]}; - function nativeSetter() { - } - nativeSetter.$metadata$ = {kind: Kind_CLASS, simpleName: 'nativeSetter', interfaces: [Annotation]}; - function nativeInvoke() { - } - nativeInvoke.$metadata$ = {kind: Kind_CLASS, simpleName: 'nativeInvoke', interfaces: [Annotation]}; - function library(name) { - if (name === void 0) - name = ''; - this.name = name; - } - library.$metadata$ = {kind: Kind_CLASS, simpleName: 'library', interfaces: [Annotation]}; - function marker() { - } - marker.$metadata$ = {kind: Kind_CLASS, simpleName: 'marker', interfaces: [Annotation]}; - function JsName(name) { - this.name = name; - } - JsName.$metadata$ = {kind: Kind_CLASS, simpleName: 'JsName', interfaces: [Annotation]}; - function JsModule(import_0) { - this.import = import_0; - } - JsModule.$metadata$ = {kind: Kind_CLASS, simpleName: 'JsModule', interfaces: [Annotation]}; - function JsNonModule() { - } - JsNonModule.$metadata$ = {kind: Kind_CLASS, simpleName: 'JsNonModule', interfaces: [Annotation]}; - function JsQualifier(value) { - this.value = value; - } - JsQualifier.$metadata$ = {kind: Kind_CLASS, simpleName: 'JsQualifier', interfaces: [Annotation]}; - function Volatile() { - } - Volatile.$metadata$ = {kind: Kind_CLASS, simpleName: 'Volatile', interfaces: [Annotation]}; - function Synchronized() { - } - Synchronized.$metadata$ = {kind: Kind_CLASS, simpleName: 'Synchronized', interfaces: [Annotation]}; - function arrayIterator$ObjectLiteral(closure$arr) { - this.closure$arr = closure$arr; - this.index = 0; - } - arrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$arr.length; - }; - arrayIterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (this.index < this.closure$arr.length) { - return this.closure$arr[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - arrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - function arrayIterator(array, type) { - if (type == null) { - var arr = array; - return new arrayIterator$ObjectLiteral(arr); - } - else - switch (type) { - case 'BooleanArray': - return booleanArrayIterator(array); - case 'ByteArray': - return byteArrayIterator(array); - case 'ShortArray': - return shortArrayIterator(array); - case 'CharArray': - return charArrayIterator(array); - case 'IntArray': - return intArrayIterator(array); - case 'LongArray': - return longArrayIterator(array); - case 'FloatArray': - return floatArrayIterator(array); - case 'DoubleArray': - return doubleArrayIterator(array); - default:throw IllegalStateException_init_0('Unsupported type argument for arrayIterator: ' + toString(type)); - } - } - function booleanArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - BooleanIterator.call(this); - this.index = 0; - } - booleanArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - booleanArrayIterator$ObjectLiteral.prototype.nextBoolean = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - booleanArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [BooleanIterator]}; - function booleanArrayIterator(array) { - return new booleanArrayIterator$ObjectLiteral(array); - } - function byteArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - ByteIterator.call(this); - this.index = 0; - } - byteArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - byteArrayIterator$ObjectLiteral.prototype.nextByte = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - byteArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [ByteIterator]}; - function byteArrayIterator(array) { - return new byteArrayIterator$ObjectLiteral(array); - } - function shortArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - ShortIterator.call(this); - this.index = 0; - } - shortArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - shortArrayIterator$ObjectLiteral.prototype.nextShort = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - shortArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [ShortIterator]}; - function shortArrayIterator(array) { - return new shortArrayIterator$ObjectLiteral(array); - } - function charArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - CharIterator.call(this); - this.index = 0; - } - charArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - charArrayIterator$ObjectLiteral.prototype.nextChar = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - charArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CharIterator]}; - function charArrayIterator(array) { - return new charArrayIterator$ObjectLiteral(array); - } - function intArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - IntIterator.call(this); - this.index = 0; - } - intArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - intArrayIterator$ObjectLiteral.prototype.nextInt = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - intArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [IntIterator]}; - function intArrayIterator(array) { - return new intArrayIterator$ObjectLiteral(array); - } - function floatArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - FloatIterator.call(this); - this.index = 0; - } - floatArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - floatArrayIterator$ObjectLiteral.prototype.nextFloat = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - floatArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [FloatIterator]}; - function floatArrayIterator(array) { - return new floatArrayIterator$ObjectLiteral(array); - } - function doubleArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - DoubleIterator.call(this); - this.index = 0; - } - doubleArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - doubleArrayIterator$ObjectLiteral.prototype.nextDouble = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - doubleArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [DoubleIterator]}; - function doubleArrayIterator(array) { - return new doubleArrayIterator$ObjectLiteral(array); - } - function longArrayIterator$ObjectLiteral(closure$array) { - this.closure$array = closure$array; - LongIterator.call(this); - this.index = 0; - } - longArrayIterator$ObjectLiteral.prototype.hasNext = function () { - return this.index < this.closure$array.length; - }; - longArrayIterator$ObjectLiteral.prototype.nextLong = function () { - var tmp$; - if (this.index < this.closure$array.length) { - return this.closure$array[tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$]; - } - else - throw new NoSuchElementException(this.index.toString()); - }; - longArrayIterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [LongIterator]}; - function longArrayIterator(array) { - return new longArrayIterator$ObjectLiteral(array); - } - function PropertyMetadata(name) { - this.callableName = name; - } - PropertyMetadata.$metadata$ = {kind: Kind_CLASS, simpleName: 'PropertyMetadata', interfaces: []}; - function noWhenBranchMatched() { - throw NoWhenBranchMatchedException_init(); - } - function subSequence(c, startIndex, endIndex) { - if (typeof c === 'string') { - return c.substring(startIndex, endIndex); - } - else { - return c.subSequence_vux9f0$(startIndex, endIndex); - } - } - function captureStack(baseClass, instance) { - if (Error.captureStackTrace) { - Error.captureStackTrace(instance, get_js(Kotlin.getKClassFromExpression(instance))); - } - else { - instance.stack = (new Error()).stack; - } - } - function newThrowable(message, cause) { - var tmp$; - var throwable = new Error(); - if (equals(typeof message, 'undefined')) { - tmp$ = cause != null ? cause.toString() : null; - } - else { - tmp$ = message; - } - throwable.message = tmp$; - throwable.cause = cause; - throwable.name = 'Throwable'; - return throwable; - } - function BoxedChar(c) { - this.c = c; - } - BoxedChar.prototype.equals = function (other) { - return Kotlin.isType(other, BoxedChar) && this.c === other.c; - }; - BoxedChar.prototype.hashCode = function () { - return this.c; - }; - BoxedChar.prototype.toString = function () { - return String.fromCharCode(unboxChar(this.c)); - }; - BoxedChar.prototype.compareTo_11rb$ = function (other) { - return this.c - other; - }; - BoxedChar.prototype.valueOf = function () { - return this.c; - }; - BoxedChar.$metadata$ = {kind: Kind_CLASS, simpleName: 'BoxedChar', interfaces: [Comparable]}; - var concat = defineInlineFunction('kotlin.concat_2r4q7p$', function (args) { - var typed = Array(args.length); - for (var i = 0; i !== args.length; ++i) { - var arr = args[i]; - if (!Kotlin.isArray(arr)) { - typed[i] = [].slice.call(arr); - } - else { - typed[i] = arr; - } - } - return [].concat.apply([], typed); - }); - function arrayConcat(a, b) { - var args = arguments; - var typed = Array(args.length); - for (var i = 0; i !== args.length; ++i) { - var arr = args[i]; - if (!Kotlin.isArray(arr)) { - typed[i] = [].slice.call(arr); - } - else { - typed[i] = arr; - } - } - return [].concat.apply([], typed); - } - function primitiveArrayConcat(a, b) { - var args = arguments; - if (Kotlin.isArray(a) && a.$type$ === undefined) { - var typed = Array(args.length); - for (var i = 0; i !== args.length; ++i) { - var arr = args[i]; - if (!Kotlin.isArray(arr)) { - typed[i] = [].slice.call(arr); - } - else { - typed[i] = arr; - } - } - return [].concat.apply([], typed); - } - else { - var size = 0; - for (var i_0 = 0; i_0 !== args.length; ++i_0) { - var tmp$; - size = size + (typeof (tmp$ = args[i_0].length) === 'number' ? tmp$ : throwCCE_0()) | 0; - } - var result = new a.constructor(size); - if (a.$type$ !== undefined) { - result.$type$ = a.$type$; - } - size = 0; - for (var i_1 = 0; i_1 !== args.length; ++i_1) { - var tmp$_0, tmp$_1; - var arr_0 = args[i_1]; - tmp$_0 = arr_0.length; - for (var j = 0; j < tmp$_0; j++) { - result[tmp$_1 = size, size = tmp$_1 + 1 | 0, tmp$_1] = arr_0[j]; - } - } - return result; - } - } - function booleanArrayOf() { - var type = 'BooleanArray'; - var array = [].slice.call(arguments); - array.$type$ = type; - return array; - } - function charArrayOf() { - var type = 'CharArray'; - var array = new Uint16Array([].slice.call(arguments)); - array.$type$ = type; - return array; - } - function longArrayOf() { - var type = 'LongArray'; - var array = [].slice.call(arguments); - array.$type$ = type; - return array; - } - var withType = defineInlineFunction('kotlin.withType', function (type, array) { - array.$type$ = type; - return array; - }); - function isWhitespace($receiver) { - return matches(String.fromCharCode($receiver), '[\\s\\xA0]'); - } - var toLowerCase = defineInlineFunction('kotlin.kotlin.text.toLowerCase_myv2d0$', wrapFunction(function () { - var toChar = Kotlin.toChar; - return function ($receiver) { - return toChar(String.fromCharCode($receiver | 0).toLowerCase().charCodeAt(0)); - }; - })); - var toUpperCase = defineInlineFunction('kotlin.kotlin.text.toUpperCase_myv2d0$', wrapFunction(function () { - var toChar = Kotlin.toChar; - return function ($receiver) { - return toChar(String.fromCharCode($receiver | 0).toUpperCase().charCodeAt(0)); - }; - })); - function isHighSurrogate($receiver) { - return (new CharRange(kotlin_js_internal_CharCompanionObject.MIN_HIGH_SURROGATE, kotlin_js_internal_CharCompanionObject.MAX_HIGH_SURROGATE)).contains_mef7kx$($receiver); - } - function isLowSurrogate($receiver) { - return (new CharRange(kotlin_js_internal_CharCompanionObject.MIN_LOW_SURROGATE, kotlin_js_internal_CharCompanionObject.MAX_LOW_SURROGATE)).contains_mef7kx$($receiver); - } - var orEmpty = defineInlineFunction('kotlin.kotlin.collections.orEmpty_oachgz$', function ($receiver) { - return $receiver != null ? $receiver : []; - }); - var toTypedArray_11 = defineInlineFunction('kotlin.kotlin.collections.toTypedArray_4c7yge$', wrapFunction(function () { - var copyToArray = _.kotlin.collections.copyToArray; - return function ($receiver) { - return copyToArray($receiver); - }; - })); - function copyToArray(collection) { - return collection.toArray !== undefined ? collection.toArray() : copyToArrayImpl(collection); - } - function copyToArrayImpl(collection) { - var array = []; - var iterator = collection.iterator(); - while (iterator.hasNext()) - array.push(iterator.next()); - return array; - } - function copyToArrayImpl_0(collection, array) { - var tmp$; - if (array.length < collection.size) { - return copyToArrayImpl(collection); - } - var iterator = collection.iterator(); - var index = 0; - while (iterator.hasNext()) { - array[tmp$ = index, index = tmp$ + 1 | 0, tmp$] = iterator.next(); - } - if (index < array.length) { - array[index] = null; - } - return array; - } - function listOf(element) { - return arrayListOf_0([element]); - } - function setOf(element) { - return hashSetOf_0([element]); - } - function mapOf(pair) { - return hashMapOf_0([pair]); - } - function fill($receiver, value) { - var tmp$; - tmp$ = get_lastIndex_8($receiver); - for (var index = 0; index <= tmp$; index++) { - $receiver.set_wxm5ur$(index, value); - } - } - function shuffle($receiver) { - shuffle_0($receiver, Random$Default_getInstance()); - } - function shuffled($receiver) { - var $receiver_0 = toMutableList_8($receiver); - shuffle($receiver_0); - return $receiver_0; - } - function sort_10($receiver) { - collectionsSort($receiver, naturalOrder()); - } - function sortWith_0($receiver, comparator) { - collectionsSort($receiver, comparator); - } - function collectionsSort(list, comparator) { - if (list.size <= 1) - return; - var array = copyToArray(list); - sortArrayWith_0(array, comparator); - for (var i = 0; i < array.length; i++) { - list.set_wxm5ur$(i, array[i]); - } - } - function arrayOfNulls(reference, size) { - return Kotlin.newArray(size, null); - } - function arrayCopy(source, destination, destinationOffset, startIndex, endIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(startIndex, endIndex, source.length); - var rangeSize = endIndex - startIndex | 0; - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(destinationOffset, destinationOffset + rangeSize | 0, destination.length); - if (ArrayBuffer.isView(destination) && ArrayBuffer.isView(source)) { - var subrange = source.subarray(startIndex, endIndex); - destination.set(subrange, destinationOffset); - } - else { - if (source !== destination || destinationOffset <= startIndex) { - for (var index = 0; index < rangeSize; index++) { - destination[destinationOffset + index | 0] = source[startIndex + index | 0]; - } - } - else { - for (var index_0 = rangeSize - 1 | 0; index_0 >= 0; index_0--) { - destination[destinationOffset + index_0 | 0] = source[startIndex + index_0 | 0]; - } - } - } - } - var toSingletonMapOrSelf = defineInlineFunction('kotlin.kotlin.collections.toSingletonMapOrSelf_1vp4qn$', function ($receiver) { - return $receiver; - }); - var toSingletonMap = defineInlineFunction('kotlin.kotlin.collections.toSingletonMap_3imywq$', wrapFunction(function () { - var toMutableMap = _.kotlin.collections.toMutableMap_abgq59$; - return function ($receiver) { - return toMutableMap($receiver); - }; - })); - var copyToArrayOfAny = defineInlineFunction('kotlin.kotlin.collections.copyToArrayOfAny_e0iprw$', function ($receiver, isVarargs) { - return isVarargs ? $receiver : $receiver.slice(); - }); - function checkIndexOverflow(index) { - if (index < 0) { - throwIndexOverflow(); - } - return index; - } - function checkCountOverflow(count) { - if (count < 0) { - throwCountOverflow(); - } - return count; - } - function AbstractMutableCollection() { - AbstractCollection.call(this); - } - AbstractMutableCollection.prototype.remove_11rb$ = function (element) { - var iterator = this.iterator(); - while (iterator.hasNext()) { - if (equals(iterator.next(), element)) { - iterator.remove(); - return true; - } - } - return false; - }; - AbstractMutableCollection.prototype.addAll_brywnq$ = function (elements) { - var tmp$; - var modified = false; - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (this.add_11rb$(element)) - modified = true; - } - return modified; - }; - function AbstractMutableCollection$removeAll$lambda(closure$elements) { - return function (it) { - return closure$elements.contains_11rb$(it); - }; - } - AbstractMutableCollection.prototype.removeAll_brywnq$ = function (elements) { - var tmp$; - return removeAll_0(Kotlin.isType(tmp$ = this, MutableIterable) ? tmp$ : throwCCE_0(), AbstractMutableCollection$removeAll$lambda(elements)); - }; - function AbstractMutableCollection$retainAll$lambda(closure$elements) { - return function (it) { - return !closure$elements.contains_11rb$(it); - }; - } - AbstractMutableCollection.prototype.retainAll_brywnq$ = function (elements) { - var tmp$; - return removeAll_0(Kotlin.isType(tmp$ = this, MutableIterable) ? tmp$ : throwCCE_0(), AbstractMutableCollection$retainAll$lambda(elements)); - }; - AbstractMutableCollection.prototype.clear = function () { - var iterator = this.iterator(); - while (iterator.hasNext()) { - iterator.next(); - iterator.remove(); - } - }; - AbstractMutableCollection.prototype.toJSON = function () { - return this.toArray(); - }; - AbstractMutableCollection.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMutableCollection', interfaces: [MutableCollection, AbstractCollection]}; - function AbstractMutableList() { - AbstractMutableCollection.call(this); - this.modCount = 0; - } - AbstractMutableList.prototype.add_11rb$ = function (element) { - this.add_wxm5ur$(this.size, element); - return true; - }; - AbstractMutableList.prototype.addAll_u57x28$ = function (index, elements) { - var tmp$, tmp$_0; - var _index = index; - var changed = false; - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - this.add_wxm5ur$((tmp$_0 = _index, _index = tmp$_0 + 1 | 0, tmp$_0), e); - changed = true; - } - return changed; - }; - AbstractMutableList.prototype.clear = function () { - this.removeRange_vux9f0$(0, this.size); - }; - function AbstractMutableList$removeAll$lambda(closure$elements) { - return function (it) { - return closure$elements.contains_11rb$(it); - }; - } - AbstractMutableList.prototype.removeAll_brywnq$ = function (elements) { - return removeAll_1(this, AbstractMutableList$removeAll$lambda(elements)); - }; - function AbstractMutableList$retainAll$lambda(closure$elements) { - return function (it) { - return !closure$elements.contains_11rb$(it); - }; - } - AbstractMutableList.prototype.retainAll_brywnq$ = function (elements) { - return removeAll_1(this, AbstractMutableList$retainAll$lambda(elements)); - }; - AbstractMutableList.prototype.iterator = function () { - return new AbstractMutableList$IteratorImpl(this); - }; - AbstractMutableList.prototype.contains_11rb$ = function (element) { - return this.indexOf_11rb$(element) >= 0; - }; - AbstractMutableList.prototype.indexOf_11rb$ = function (element) { - var tmp$; - tmp$ = get_lastIndex_8(this); - for (var index = 0; index <= tmp$; index++) { - if (equals(this.get_za3lpa$(index), element)) { - return index; - } - } - return -1; - }; - AbstractMutableList.prototype.lastIndexOf_11rb$ = function (element) { - for (var index = get_lastIndex_8(this); index >= 0; index--) { - if (equals(this.get_za3lpa$(index), element)) { - return index; - } - } - return -1; - }; - AbstractMutableList.prototype.listIterator = function () { - return this.listIterator_za3lpa$(0); - }; - AbstractMutableList.prototype.listIterator_za3lpa$ = function (index) { - return new AbstractMutableList$ListIteratorImpl(this, index); - }; - AbstractMutableList.prototype.subList_vux9f0$ = function (fromIndex, toIndex) { - return new AbstractMutableList$SubList(this, fromIndex, toIndex); - }; - AbstractMutableList.prototype.removeRange_vux9f0$ = function (fromIndex, toIndex) { - var iterator = this.listIterator_za3lpa$(fromIndex); - var times = toIndex - fromIndex | 0; - for (var index = 0; index < times; index++) { - iterator.next(); - iterator.remove(); - } - }; - AbstractMutableList.prototype.equals = function (other) { - if (other === this) - return true; - if (!Kotlin.isType(other, List)) - return false; - return AbstractList$Companion_getInstance().orderedEquals_e92ka7$(this, other); - }; - AbstractMutableList.prototype.hashCode = function () { - return AbstractList$Companion_getInstance().orderedHashCode_nykoif$(this); - }; - function AbstractMutableList$IteratorImpl($outer) { - this.$outer = $outer; - this.index_0 = 0; - this.last_0 = -1; - } - AbstractMutableList$IteratorImpl.prototype.hasNext = function () { - return this.index_0 < this.$outer.size; - }; - AbstractMutableList$IteratorImpl.prototype.next = function () { - var tmp$; - if (!this.hasNext()) - throw NoSuchElementException_init(); - this.last_0 = (tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$); - return this.$outer.get_za3lpa$(this.last_0); - }; - AbstractMutableList$IteratorImpl.prototype.remove = function () { - if (!(this.last_0 !== -1)) { - var message = 'Call next() or previous() before removing element from the iterator.'; - throw IllegalStateException_init_0(message.toString()); - } - this.$outer.removeAt_za3lpa$(this.last_0); - this.index_0 = this.last_0; - this.last_0 = -1; - }; - AbstractMutableList$IteratorImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'IteratorImpl', interfaces: [MutableIterator]}; - function AbstractMutableList$ListIteratorImpl($outer, index) { - this.$outer = $outer; - AbstractMutableList$IteratorImpl.call(this, this.$outer); - AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.$outer.size); - this.index_0 = index; - } - AbstractMutableList$ListIteratorImpl.prototype.hasPrevious = function () { - return this.index_0 > 0; - }; - AbstractMutableList$ListIteratorImpl.prototype.nextIndex = function () { - return this.index_0; - }; - AbstractMutableList$ListIteratorImpl.prototype.previous = function () { - if (!this.hasPrevious()) - throw NoSuchElementException_init(); - this.last_0 = (this.index_0 = this.index_0 - 1 | 0, this.index_0); - return this.$outer.get_za3lpa$(this.last_0); - }; - AbstractMutableList$ListIteratorImpl.prototype.previousIndex = function () { - return this.index_0 - 1 | 0; - }; - AbstractMutableList$ListIteratorImpl.prototype.add_11rb$ = function (element) { - this.$outer.add_wxm5ur$(this.index_0, element); - this.index_0 = this.index_0 + 1 | 0; - this.last_0 = -1; - }; - AbstractMutableList$ListIteratorImpl.prototype.set_11rb$ = function (element) { - if (!(this.last_0 !== -1)) { - var message = 'Call next() or previous() before updating element value with the iterator.'; - throw IllegalStateException_init_0(message.toString()); - } - this.$outer.set_wxm5ur$(this.last_0, element); - }; - AbstractMutableList$ListIteratorImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'ListIteratorImpl', interfaces: [MutableListIterator, AbstractMutableList$IteratorImpl]}; - function AbstractMutableList$SubList(list, fromIndex, toIndex) { - AbstractMutableList.call(this); - this.list_0 = list; - this.fromIndex_0 = fromIndex; - this._size_0 = 0; - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(this.fromIndex_0, toIndex, this.list_0.size); - this._size_0 = toIndex - this.fromIndex_0 | 0; - } - AbstractMutableList$SubList.prototype.add_wxm5ur$ = function (index, element) { - AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this._size_0); - this.list_0.add_wxm5ur$(this.fromIndex_0 + index | 0, element); - this._size_0 = this._size_0 + 1 | 0; - }; - AbstractMutableList$SubList.prototype.get_za3lpa$ = function (index) { - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this._size_0); - return this.list_0.get_za3lpa$(this.fromIndex_0 + index | 0); - }; - AbstractMutableList$SubList.prototype.removeAt_za3lpa$ = function (index) { - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this._size_0); - var result = this.list_0.removeAt_za3lpa$(this.fromIndex_0 + index | 0); - this._size_0 = this._size_0 - 1 | 0; - return result; - }; - AbstractMutableList$SubList.prototype.set_wxm5ur$ = function (index, element) { - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this._size_0); - return this.list_0.set_wxm5ur$(this.fromIndex_0 + index | 0, element); - }; - Object.defineProperty(AbstractMutableList$SubList.prototype, 'size', {get: function () { - return this._size_0; - }}); - AbstractMutableList$SubList.$metadata$ = {kind: Kind_CLASS, simpleName: 'SubList', interfaces: [RandomAccess, AbstractMutableList]}; - AbstractMutableList.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMutableList', interfaces: [MutableList, AbstractMutableCollection]}; - function AbstractMutableMap() { - AbstractMap.call(this); - this._keys_qe2m0n$_0 = null; - this._values_kxdlqh$_0 = null; - } - function AbstractMutableMap$SimpleEntry(key, value) { - this.key_5xhq3d$_0 = key; - this._value_0 = value; - } - Object.defineProperty(AbstractMutableMap$SimpleEntry.prototype, 'key', {get: function () { - return this.key_5xhq3d$_0; - }}); - Object.defineProperty(AbstractMutableMap$SimpleEntry.prototype, 'value', {get: function () { - return this._value_0; - }}); - AbstractMutableMap$SimpleEntry.prototype.setValue_11rc$ = function (newValue) { - var oldValue = this._value_0; - this._value_0 = newValue; - return oldValue; - }; - AbstractMutableMap$SimpleEntry.prototype.hashCode = function () { - return AbstractMap$Companion_getInstance().entryHashCode_9fthdn$(this); - }; - AbstractMutableMap$SimpleEntry.prototype.toString = function () { - return AbstractMap$Companion_getInstance().entryToString_9fthdn$(this); - }; - AbstractMutableMap$SimpleEntry.prototype.equals = function (other) { - return AbstractMap$Companion_getInstance().entryEquals_js7fox$(this, other); - }; - AbstractMutableMap$SimpleEntry.$metadata$ = {kind: Kind_CLASS, simpleName: 'SimpleEntry', interfaces: [MutableMap$MutableEntry]}; - function AbstractMutableMap$AbstractMutableMap$SimpleEntry_init(entry, $this) { - $this = $this || Object.create(AbstractMutableMap$SimpleEntry.prototype); - AbstractMutableMap$SimpleEntry.call($this, entry.key, entry.value); - return $this; - } - AbstractMutableMap.prototype.clear = function () { - this.entries.clear(); - }; - function AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral(this$AbstractMutableMap) { - this.this$AbstractMutableMap = this$AbstractMutableMap; - AbstractMutableSet.call(this); - } - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype.add_11rb$ = function (element) { - throw UnsupportedOperationException_init_0('Add is not supported on keys'); - }; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype.clear = function () { - this.this$AbstractMutableMap.clear(); - }; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype.contains_11rb$ = function (element) { - return this.this$AbstractMutableMap.containsKey_11rb$(element); - }; - function AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral$iterator$ObjectLiteral(closure$entryIterator) { - this.closure$entryIterator = closure$entryIterator; - } - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.closure$entryIterator.hasNext(); - }; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral$iterator$ObjectLiteral.prototype.next = function () { - return this.closure$entryIterator.next().key; - }; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral$iterator$ObjectLiteral.prototype.remove = function () { - this.closure$entryIterator.remove(); - }; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [MutableIterator]}; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype.iterator = function () { - var entryIterator = this.this$AbstractMutableMap.entries.iterator(); - return new AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral$iterator$ObjectLiteral(entryIterator); - }; - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype.remove_11rb$ = function (element) { - if (this.this$AbstractMutableMap.containsKey_11rb$(element)) { - this.this$AbstractMutableMap.remove_11rb$(element); - return true; - } - return false; - }; - Object.defineProperty(AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.prototype, 'size', {get: function () { - return this.this$AbstractMutableMap.size; - }}); - AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractMutableSet]}; - Object.defineProperty(AbstractMutableMap.prototype, 'keys', {get: function () { - if (this._keys_qe2m0n$_0 == null) { - this._keys_qe2m0n$_0 = new AbstractMutableMap$get_AbstractMutableMap$keys$ObjectLiteral(this); - } - return ensureNotNull(this._keys_qe2m0n$_0); - }}); - AbstractMutableMap.prototype.putAll_a2k3zr$ = function (from) { - var tmp$; - tmp$ = from.entries.iterator(); - while (tmp$.hasNext()) { - var tmp$_0 = tmp$.next(); - var key = tmp$_0.key; - var value = tmp$_0.value; - this.put_xwzc9p$(key, value); - } - }; - function AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral(this$AbstractMutableMap) { - this.this$AbstractMutableMap = this$AbstractMutableMap; - AbstractMutableCollection.call(this); - } - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.add_11rb$ = function (element) { - throw UnsupportedOperationException_init_0('Add is not supported on values'); - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.clear = function () { - this.this$AbstractMutableMap.clear(); - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.contains_11rb$ = function (element) { - return this.this$AbstractMutableMap.containsValue_11rc$(element); - }; - function AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral$iterator$ObjectLiteral(closure$entryIterator) { - this.closure$entryIterator = closure$entryIterator; - } - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.closure$entryIterator.hasNext(); - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral$iterator$ObjectLiteral.prototype.next = function () { - return this.closure$entryIterator.next().value; - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral$iterator$ObjectLiteral.prototype.remove = function () { - this.closure$entryIterator.remove(); - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [MutableIterator]}; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.iterator = function () { - var entryIterator = this.this$AbstractMutableMap.entries.iterator(); - return new AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral$iterator$ObjectLiteral(entryIterator); - }; - Object.defineProperty(AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype, 'size', {get: function () { - return this.this$AbstractMutableMap.size; - }}); - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.equals = function (other) { - if (this === other) - return true; - if (!Kotlin.isType(other, Collection)) - return false; - return AbstractList$Companion_getInstance().orderedEquals_e92ka7$(this, other); - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.prototype.hashCode = function () { - return AbstractList$Companion_getInstance().orderedHashCode_nykoif$(this); - }; - AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractMutableCollection]}; - Object.defineProperty(AbstractMutableMap.prototype, 'values', {get: function () { - if (this._values_kxdlqh$_0 == null) { - this._values_kxdlqh$_0 = new AbstractMutableMap$get_AbstractMutableMap$values$ObjectLiteral(this); - } - return ensureNotNull(this._values_kxdlqh$_0); - }}); - AbstractMutableMap.prototype.remove_11rb$ = function (key) { - var iter = this.entries.iterator(); - while (iter.hasNext()) { - var entry = iter.next(); - var k = entry.key; - if (equals(key, k)) { - var value = entry.value; - iter.remove(); - return value; - } - } - return null; - }; - AbstractMutableMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMutableMap', interfaces: [MutableMap, AbstractMap]}; - function AbstractMutableSet() { - AbstractMutableCollection.call(this); - } - AbstractMutableSet.prototype.equals = function (other) { - if (other === this) - return true; - if (!Kotlin.isType(other, Set)) - return false; - return AbstractSet$Companion_getInstance().setEquals_y8f7en$(this, other); - }; - AbstractMutableSet.prototype.hashCode = function () { - return AbstractSet$Companion_getInstance().unorderedHashCode_nykoif$(this); - }; - AbstractMutableSet.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMutableSet', interfaces: [MutableSet, AbstractMutableCollection]}; - function ArrayList(array) { - AbstractMutableList.call(this); - this.array_hd7ov6$_0 = array; - } - ArrayList.prototype.trimToSize = function () { - }; - ArrayList.prototype.ensureCapacity_za3lpa$ = function (minCapacity) { - }; - Object.defineProperty(ArrayList.prototype, 'size', {get: function () { - return this.array_hd7ov6$_0.length; - }}); - ArrayList.prototype.get_za3lpa$ = function (index) { - var tmp$; - return (tmp$ = this.array_hd7ov6$_0[this.rangeCheck_xcmk5o$_0(index)]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }; - ArrayList.prototype.set_wxm5ur$ = function (index, element) { - var tmp$; - this.rangeCheck_xcmk5o$_0(index); - var $receiver = this.array_hd7ov6$_0[index]; - this.array_hd7ov6$_0[index] = element; - return (tmp$ = $receiver) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }; - ArrayList.prototype.add_11rb$ = function (element) { - this.array_hd7ov6$_0.push(element); - this.modCount = this.modCount + 1 | 0; - return true; - }; - ArrayList.prototype.add_wxm5ur$ = function (index, element) { - this.array_hd7ov6$_0.splice(this.insertionRangeCheck_xwivfl$_0(index), 0, element); - this.modCount = this.modCount + 1 | 0; - }; - ArrayList.prototype.addAll_brywnq$ = function (elements) { - if (elements.isEmpty()) - return false; - this.array_hd7ov6$_0 = this.array_hd7ov6$_0.concat(copyToArray(elements)); - this.modCount = this.modCount + 1 | 0; - return true; - }; - ArrayList.prototype.addAll_u57x28$ = function (index, elements) { - this.insertionRangeCheck_xwivfl$_0(index); - if (index === this.size) - return this.addAll_brywnq$(elements); - if (elements.isEmpty()) - return false; - if (index === this.size) - return this.addAll_brywnq$(elements); - else if (index === 0) { - this.array_hd7ov6$_0 = copyToArray(elements).concat(this.array_hd7ov6$_0); - } - else { - this.array_hd7ov6$_0 = copyOfRange_3(this.array_hd7ov6$_0, 0, index).concat(copyToArray(elements), copyOfRange_3(this.array_hd7ov6$_0, index, this.size)); - } - this.modCount = this.modCount + 1 | 0; - return true; - }; - ArrayList.prototype.removeAt_za3lpa$ = function (index) { - this.rangeCheck_xcmk5o$_0(index); - this.modCount = this.modCount + 1 | 0; - return index === get_lastIndex_8(this) ? this.array_hd7ov6$_0.pop() : this.array_hd7ov6$_0.splice(index, 1)[0]; - }; - ArrayList.prototype.remove_11rb$ = function (element) { - var tmp$; - tmp$ = this.array_hd7ov6$_0; - for (var index = 0; index !== tmp$.length; ++index) { - if (equals(this.array_hd7ov6$_0[index], element)) { - this.array_hd7ov6$_0.splice(index, 1); - this.modCount = this.modCount + 1 | 0; - return true; - } - } - return false; - }; - ArrayList.prototype.removeRange_vux9f0$ = function (fromIndex, toIndex) { - this.modCount = this.modCount + 1 | 0; - this.array_hd7ov6$_0.splice(fromIndex, toIndex - fromIndex | 0); - }; - ArrayList.prototype.clear = function () { - this.array_hd7ov6$_0 = []; - this.modCount = this.modCount + 1 | 0; - }; - ArrayList.prototype.indexOf_11rb$ = function (element) { - return indexOf(this.array_hd7ov6$_0, element); - }; - ArrayList.prototype.lastIndexOf_11rb$ = function (element) { - return lastIndexOf(this.array_hd7ov6$_0, element); - }; - ArrayList.prototype.toString = function () { - return arrayToString(this.array_hd7ov6$_0); - }; - ArrayList.prototype.toArray = function () { - return [].slice.call(this.array_hd7ov6$_0); - }; - ArrayList.prototype.rangeCheck_xcmk5o$_0 = function (index) { - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.size); - return index; - }; - ArrayList.prototype.insertionRangeCheck_xwivfl$_0 = function (index) { - AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.size); - return index; - }; - ArrayList.$metadata$ = {kind: Kind_CLASS, simpleName: 'ArrayList', interfaces: [RandomAccess, AbstractMutableList, MutableList]}; - function ArrayList_init($this) { - $this = $this || Object.create(ArrayList.prototype); - ArrayList.call($this, []); - return $this; - } - function ArrayList_init_0(initialCapacity, $this) { - if (initialCapacity === void 0) - initialCapacity = 0; - $this = $this || Object.create(ArrayList.prototype); - ArrayList.call($this, []); - return $this; - } - function ArrayList_init_1(elements, $this) { - $this = $this || Object.create(ArrayList.prototype); - ArrayList.call($this, copyToArray(elements)); - return $this; - } - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - function sortArrayWith(array, comparison) { - if (getStableSortingIsSupported()) { - array.sort(comparison); - } - else { - mergeSort(array, 0, get_lastIndex(array), new Comparator$ObjectLiteral(comparison)); - } - } - function sortArrayWith$lambda(closure$comparator) { - return function (a, b) { - return closure$comparator.compare(a, b); - }; - } - function sortArrayWith_0(array, comparator) { - if (getStableSortingIsSupported()) { - var comparison = sortArrayWith$lambda(comparator); - array.sort(comparison); - } - else { - mergeSort(array, 0, get_lastIndex(array), comparator); - } - } - function sortArray$lambda(a, b) { - return Kotlin.compareTo(a, b); - } - function sortArray(array) { - if (getStableSortingIsSupported()) { - var comparison = sortArray$lambda; - array.sort(comparison); - } - else { - mergeSort(array, 0, get_lastIndex(array), naturalOrder()); - } - } - var _stableSortingIsSupported; - function getStableSortingIsSupported$lambda(a, b) { - return (a & 3) - (b & 3) | 0; - } - function getStableSortingIsSupported() { - if (_stableSortingIsSupported != null) { - return _stableSortingIsSupported; - } - _stableSortingIsSupported = false; - var array = []; - for (var index = 0; index < 600; index++) - array.push(index); - var comparison = getStableSortingIsSupported$lambda; - array.sort(comparison); - for (var index_0 = 1; index_0 < array.length; index_0++) { - var a = array[index_0 - 1 | 0]; - var b = array[index_0]; - if ((a & 3) === (b & 3) && a >= b) - return false; - } - _stableSortingIsSupported = true; - return true; - } - function mergeSort(array, start, endInclusive, comparator) { - var buffer = Kotlin.newArray(array.length, null); - var result = mergeSort_0(array, buffer, start, endInclusive, comparator); - if (result !== array) { - var tmp$, tmp$_0; - var index = 0; - for (tmp$ = 0; tmp$ !== result.length; ++tmp$) { - var item = result[tmp$]; - array[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = item; - } - } - } - function mergeSort_0(array, buffer, start, end, comparator) { - if (start === end) { - return array; - } - var median = (start + end | 0) / 2 | 0; - var left = mergeSort_0(array, buffer, start, median, comparator); - var right = mergeSort_0(array, buffer, median + 1 | 0, end, comparator); - var target = left === buffer ? array : buffer; - var leftIndex = start; - var rightIndex = median + 1 | 0; - for (var i = start; i <= end; i++) { - if (leftIndex <= median && rightIndex <= end) { - var leftValue = left[leftIndex]; - var rightValue = right[rightIndex]; - if (comparator.compare(leftValue, rightValue) <= 0) { - target[i] = leftValue; - leftIndex = leftIndex + 1 | 0; - } - else { - target[i] = rightValue; - rightIndex = rightIndex + 1 | 0; - } - } - else if (leftIndex <= median) { - target[i] = left[leftIndex]; - leftIndex = leftIndex + 1 | 0; - } - else { - target[i] = right[rightIndex]; - rightIndex = rightIndex + 1 | 0; - } - } - return target; - } - function contentDeepHashCodeImpl($receiver) { - var tmp$, tmp$_0; - var result = 1; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (element == null) - tmp$_0 = 0; - else if (Kotlin.isArrayish(element)) { - tmp$_0 = contentDeepHashCodeImpl(element); - } - else if (Kotlin.isType(element, UByteArray)) - tmp$_0 = contentHashCode_2(element); - else if (Kotlin.isType(element, UShortArray)) - tmp$_0 = contentHashCode_3(element); - else if (Kotlin.isType(element, UIntArray)) - tmp$_0 = contentHashCode_0(element); - else if (Kotlin.isType(element, ULongArray)) - tmp$_0 = contentHashCode_1(element); - else - tmp$_0 = hashCode(element); - var elementHash = tmp$_0; - result = (31 * result | 0) + elementHash | 0; - } - return result; - } - function EqualityComparator() { - } - function EqualityComparator$HashCode() { - EqualityComparator$HashCode_instance = this; - } - EqualityComparator$HashCode.prototype.equals_oaftn8$ = function (value1, value2) { - return equals(value1, value2); - }; - EqualityComparator$HashCode.prototype.getHashCode_s8jyv4$ = function (value) { - var tmp$; - return (tmp$ = value != null ? hashCode(value) : null) != null ? tmp$ : 0; - }; - EqualityComparator$HashCode.$metadata$ = {kind: Kind_OBJECT, simpleName: 'HashCode', interfaces: [EqualityComparator]}; - var EqualityComparator$HashCode_instance = null; - function EqualityComparator$HashCode_getInstance() { - if (EqualityComparator$HashCode_instance === null) { - new EqualityComparator$HashCode(); - } - return EqualityComparator$HashCode_instance; - } - EqualityComparator.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'EqualityComparator', interfaces: []}; - function HashMap() { - this.internalMap_uxhen5$_0 = null; - this.equality_vgh6cm$_0 = null; - this._entries_7ih87x$_0 = null; - } - function HashMap$EntrySet($outer) { - this.$outer = $outer; - AbstractMutableSet.call(this); - } - HashMap$EntrySet.prototype.add_11rb$ = function (element) { - throw UnsupportedOperationException_init_0('Add is not supported on entries'); - }; - HashMap$EntrySet.prototype.clear = function () { - this.$outer.clear(); - }; - HashMap$EntrySet.prototype.contains_11rb$ = function (element) { - return this.$outer.containsEntry_8hxqw4$(element); - }; - HashMap$EntrySet.prototype.iterator = function () { - return this.$outer.internalMap_uxhen5$_0.iterator(); - }; - HashMap$EntrySet.prototype.remove_11rb$ = function (element) { - if (this.contains_11rb$(element)) { - this.$outer.remove_11rb$(element.key); - return true; - } - return false; - }; - Object.defineProperty(HashMap$EntrySet.prototype, 'size', {get: function () { - return this.$outer.size; - }}); - HashMap$EntrySet.$metadata$ = {kind: Kind_CLASS, simpleName: 'EntrySet', interfaces: [AbstractMutableSet]}; - HashMap.prototype.clear = function () { - this.internalMap_uxhen5$_0.clear(); - }; - HashMap.prototype.containsKey_11rb$ = function (key) { - return this.internalMap_uxhen5$_0.contains_11rb$(key); - }; - HashMap.prototype.containsValue_11rc$ = function (value) { - var $receiver = this.internalMap_uxhen5$_0; - var any$result; - any$break: do { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { - any$result = false; - break any$break; - } - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (this.equality_vgh6cm$_0.equals_oaftn8$(element.value, value)) { - any$result = true; - break any$break; - } - } - any$result = false; - } - while (false); - return any$result; - }; - Object.defineProperty(HashMap.prototype, 'entries', {get: function () { - if (this._entries_7ih87x$_0 == null) { - this._entries_7ih87x$_0 = this.createEntrySet(); - } - return ensureNotNull(this._entries_7ih87x$_0); - }}); - HashMap.prototype.createEntrySet = function () { - return new HashMap$EntrySet(this); - }; - HashMap.prototype.get_11rb$ = function (key) { - return this.internalMap_uxhen5$_0.get_11rb$(key); - }; - HashMap.prototype.put_xwzc9p$ = function (key, value) { - return this.internalMap_uxhen5$_0.put_xwzc9p$(key, value); - }; - HashMap.prototype.remove_11rb$ = function (key) { - return this.internalMap_uxhen5$_0.remove_11rb$(key); - }; - Object.defineProperty(HashMap.prototype, 'size', {get: function () { - return this.internalMap_uxhen5$_0.size; - }}); - HashMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'HashMap', interfaces: [AbstractMutableMap, MutableMap]}; - function HashMap_init(internalMap, $this) { - $this = $this || Object.create(HashMap.prototype); - AbstractMutableMap.call($this); - HashMap.call($this); - $this.internalMap_uxhen5$_0 = internalMap; - $this.equality_vgh6cm$_0 = internalMap.equality; - return $this; - } - function HashMap_init_0($this) { - $this = $this || Object.create(HashMap.prototype); - HashMap_init(new InternalHashCodeMap(EqualityComparator$HashCode_getInstance()), $this); - return $this; - } - function HashMap_init_1(initialCapacity, loadFactor, $this) { - if (loadFactor === void 0) - loadFactor = 0.0; - $this = $this || Object.create(HashMap.prototype); - HashMap_init_0($this); - if (!(initialCapacity >= 0)) { - var message = 'Negative initial capacity: ' + initialCapacity; - throw IllegalArgumentException_init_0(message.toString()); - } - if (!(loadFactor >= 0)) { - var message_0 = 'Non-positive load factor: ' + loadFactor; - throw IllegalArgumentException_init_0(message_0.toString()); - } - return $this; - } - function HashMap_init_2(initialCapacity, $this) { - $this = $this || Object.create(HashMap.prototype); - HashMap_init_1(initialCapacity, 0.0, $this); - return $this; - } - function HashMap_init_3(original, $this) { - $this = $this || Object.create(HashMap.prototype); - HashMap_init_0($this); - $this.putAll_a2k3zr$(original); - return $this; - } - function stringMapOf(pairs) { - var $receiver = HashMap_init(new InternalStringMap(EqualityComparator$HashCode_getInstance())); - putAll($receiver, pairs); - return $receiver; - } - function HashSet() { - this.map_eot64i$_0 = null; - } - HashSet.prototype.add_11rb$ = function (element) { - var old = this.map_eot64i$_0.put_xwzc9p$(element, this); - return old == null; - }; - HashSet.prototype.clear = function () { - this.map_eot64i$_0.clear(); - }; - HashSet.prototype.contains_11rb$ = function (element) { - return this.map_eot64i$_0.containsKey_11rb$(element); - }; - HashSet.prototype.isEmpty = function () { - return this.map_eot64i$_0.isEmpty(); - }; - HashSet.prototype.iterator = function () { - return this.map_eot64i$_0.keys.iterator(); - }; - HashSet.prototype.remove_11rb$ = function (element) { - return this.map_eot64i$_0.remove_11rb$(element) != null; - }; - Object.defineProperty(HashSet.prototype, 'size', {get: function () { - return this.map_eot64i$_0.size; - }}); - HashSet.$metadata$ = {kind: Kind_CLASS, simpleName: 'HashSet', interfaces: [AbstractMutableSet, MutableSet]}; - function HashSet_init($this) { - $this = $this || Object.create(HashSet.prototype); - AbstractMutableSet.call($this); - HashSet.call($this); - $this.map_eot64i$_0 = HashMap_init_0(); - return $this; - } - function HashSet_init_0(elements, $this) { - $this = $this || Object.create(HashSet.prototype); - AbstractMutableSet.call($this); - HashSet.call($this); - $this.map_eot64i$_0 = HashMap_init_2(elements.size); - $this.addAll_brywnq$(elements); - return $this; - } - function HashSet_init_1(initialCapacity, loadFactor, $this) { - if (loadFactor === void 0) - loadFactor = 0.0; - $this = $this || Object.create(HashSet.prototype); - AbstractMutableSet.call($this); - HashSet.call($this); - $this.map_eot64i$_0 = HashMap_init_1(initialCapacity, loadFactor); - return $this; - } - function HashSet_init_2(initialCapacity, $this) { - $this = $this || Object.create(HashSet.prototype); - HashSet_init_1(initialCapacity, 0.0, $this); - return $this; - } - function HashSet_init_3(map, $this) { - $this = $this || Object.create(HashSet.prototype); - AbstractMutableSet.call($this); - HashSet.call($this); - $this.map_eot64i$_0 = map; - return $this; - } - function stringSetOf(elements) { - var $receiver = HashSet_init_3(stringMapOf([])); - addAll_1($receiver, elements); - return $receiver; - } - function InternalHashCodeMap(equality) { - this.equality_mamlu8$_0 = equality; - this.backingMap_0 = this.createJsMap(); - this.size_x3bm7r$_0 = 0; - } - Object.defineProperty(InternalHashCodeMap.prototype, 'equality', {get: function () { - return this.equality_mamlu8$_0; - }}); - Object.defineProperty(InternalHashCodeMap.prototype, 'size', {get: function () { - return this.size_x3bm7r$_0; - }, set: function (size) { - this.size_x3bm7r$_0 = size; - }}); - InternalHashCodeMap.prototype.put_xwzc9p$ = function (key, value) { - var hashCode = this.equality.getHashCode_s8jyv4$(key); - var chainOrEntry = this.getChainOrEntryOrNull_0(hashCode); - if (chainOrEntry == null) { - this.backingMap_0[hashCode] = new AbstractMutableMap$SimpleEntry(key, value); - } - else { - if (!Kotlin.isArray(chainOrEntry)) { - var entry = chainOrEntry; - if (this.equality.equals_oaftn8$(entry.key, key)) { - return entry.setValue_11rc$(value); - } - else { - this.backingMap_0[hashCode] = [entry, new AbstractMutableMap$SimpleEntry(key, value)]; - this.size = this.size + 1 | 0; - return null; - } - } - else { - var chain = chainOrEntry; - var entry_0 = this.findEntryInChain_0(chain, key); - if (entry_0 != null) { - return entry_0.setValue_11rc$(value); - } - chain.push(new AbstractMutableMap$SimpleEntry(key, value)); - } - } - this.size = this.size + 1 | 0; - return null; - }; - InternalHashCodeMap.prototype.remove_11rb$ = function (key) { - var tmp$; - var hashCode = this.equality.getHashCode_s8jyv4$(key); - tmp$ = this.getChainOrEntryOrNull_0(hashCode); - if (tmp$ == null) { - return null; - } - var chainOrEntry = tmp$; - if (!Kotlin.isArray(chainOrEntry)) { - var entry = chainOrEntry; - if (this.equality.equals_oaftn8$(entry.key, key)) { - delete this.backingMap_0[hashCode]; - this.size = this.size - 1 | 0; - return entry.value; - } - else { - return null; - } - } - else { - var chain = chainOrEntry; - for (var index = 0; index !== chain.length; ++index) { - var entry_0 = chain[index]; - if (this.equality.equals_oaftn8$(key, entry_0.key)) { - if (chain.length === 1) { - chain.length = 0; - delete this.backingMap_0[hashCode]; - } - else { - chain.splice(index, 1); - } - this.size = this.size - 1 | 0; - return entry_0.value; - } - } - } - return null; - }; - InternalHashCodeMap.prototype.clear = function () { - this.backingMap_0 = this.createJsMap(); - this.size = 0; - }; - InternalHashCodeMap.prototype.contains_11rb$ = function (key) { - return this.getEntry_0(key) != null; - }; - InternalHashCodeMap.prototype.get_11rb$ = function (key) { - var tmp$; - return (tmp$ = this.getEntry_0(key)) != null ? tmp$.value : null; - }; - InternalHashCodeMap.prototype.getEntry_0 = function (key) { - var tmp$; - tmp$ = this.getChainOrEntryOrNull_0(this.equality.getHashCode_s8jyv4$(key)); - if (tmp$ == null) { - return null; - } - var chainOrEntry = tmp$; - if (!Kotlin.isArray(chainOrEntry)) { - var entry = chainOrEntry; - if (this.equality.equals_oaftn8$(entry.key, key)) { - return entry; - } - else { - return null; - } - } - else { - var chain = chainOrEntry; - return this.findEntryInChain_0(chain, key); - } - }; - InternalHashCodeMap.prototype.findEntryInChain_0 = function ($receiver, key) { - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - if (this.equality.equals_oaftn8$(element.key, key)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }; - function InternalHashCodeMap$iterator$ObjectLiteral(this$InternalHashCodeMap) { - this.this$InternalHashCodeMap = this$InternalHashCodeMap; - this.state = -1; - this.keys = Object.keys(this$InternalHashCodeMap.backingMap_0); - this.keyIndex = -1; - this.chainOrEntry = null; - this.isChain = false; - this.itemIndex = -1; - this.lastEntry = null; - } - InternalHashCodeMap$iterator$ObjectLiteral.prototype.computeNext_0 = function () { - if (this.chainOrEntry != null && this.isChain) { - var chainSize = this.chainOrEntry.length; - if ((this.itemIndex = this.itemIndex + 1 | 0, this.itemIndex) < chainSize) - return 0; - } - if ((this.keyIndex = this.keyIndex + 1 | 0, this.keyIndex) < this.keys.length) { - this.chainOrEntry = this.this$InternalHashCodeMap.backingMap_0[this.keys[this.keyIndex]]; - this.isChain = Kotlin.isArray(this.chainOrEntry); - this.itemIndex = 0; - return 0; - } - else { - this.chainOrEntry = null; - return 1; - } - }; - InternalHashCodeMap$iterator$ObjectLiteral.prototype.hasNext = function () { - if (this.state === -1) - this.state = this.computeNext_0(); - return this.state === 0; - }; - InternalHashCodeMap$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (!this.hasNext()) - throw NoSuchElementException_init(); - if (this.isChain) { - tmp$ = this.chainOrEntry[this.itemIndex]; - } - else { - tmp$ = this.chainOrEntry; - } - var lastEntry = tmp$; - this.lastEntry = lastEntry; - this.state = -1; - return lastEntry; - }; - InternalHashCodeMap$iterator$ObjectLiteral.prototype.remove = function () { - if (this.lastEntry == null) { - var message = 'Required value was null.'; - throw IllegalStateException_init_0(message.toString()); - } - this.this$InternalHashCodeMap.remove_11rb$(ensureNotNull(this.lastEntry).key); - this.lastEntry = null; - this.itemIndex = this.itemIndex - 1 | 0; - }; - InternalHashCodeMap$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [MutableIterator]}; - InternalHashCodeMap.prototype.iterator = function () { - return new InternalHashCodeMap$iterator$ObjectLiteral(this); - }; - InternalHashCodeMap.prototype.getChainOrEntryOrNull_0 = function (hashCode) { - var chainOrEntry = this.backingMap_0[hashCode]; - return chainOrEntry === undefined ? null : chainOrEntry; - }; - InternalHashCodeMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'InternalHashCodeMap', interfaces: [InternalMap]}; - function InternalMap() { - } - InternalMap.prototype.createJsMap = function () { - var result = Object.create(null); - result['foo'] = 1; - delete result['foo']; - return result; - }; - InternalMap.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'InternalMap', interfaces: [MutableIterable]}; - function InternalStringMap(equality) { - this.equality_qma612$_0 = equality; - this.backingMap_0 = this.createJsMap(); - this.size_6u3ykz$_0 = 0; - } - Object.defineProperty(InternalStringMap.prototype, 'equality', {get: function () { - return this.equality_qma612$_0; - }}); - Object.defineProperty(InternalStringMap.prototype, 'size', {get: function () { - return this.size_6u3ykz$_0; - }, set: function (size) { - this.size_6u3ykz$_0 = size; - }}); - InternalStringMap.prototype.contains_11rb$ = function (key) { - if (!(typeof key === 'string')) - return false; - return this.backingMap_0[key] !== undefined; - }; - InternalStringMap.prototype.get_11rb$ = function (key) { - if (!(typeof key === 'string')) - return null; - var value = this.backingMap_0[key]; - return value !== undefined ? value : null; - }; - InternalStringMap.prototype.put_xwzc9p$ = function (key, value) { - if (!(typeof key === 'string')) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var oldValue = this.backingMap_0[key]; - this.backingMap_0[key] = value; - if (oldValue === undefined) { - this.size = this.size + 1 | 0; - return null; - } - else { - return oldValue; - } - }; - InternalStringMap.prototype.remove_11rb$ = function (key) { - if (!(typeof key === 'string')) - return null; - var value = this.backingMap_0[key]; - if (value !== undefined) { - delete this.backingMap_0[key]; - this.size = this.size - 1 | 0; - return value; - } - else { - return null; - } - }; - InternalStringMap.prototype.clear = function () { - this.backingMap_0 = this.createJsMap(); - this.size = 0; - }; - function InternalStringMap$iterator$ObjectLiteral(this$InternalStringMap) { - this.this$InternalStringMap = this$InternalStringMap; - this.keys_0 = Object.keys(this$InternalStringMap.backingMap_0); - this.iterator_0 = Kotlin.arrayIterator(this.keys_0); - this.lastKey_0 = null; - } - InternalStringMap$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.iterator_0.hasNext(); - }; - InternalStringMap$iterator$ObjectLiteral.prototype.next = function () { - var tmp$, tmp$_0; - var key = this.iterator_0.next(); - this.lastKey_0 = key; - tmp$_0 = (tmp$ = key) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - return this.this$InternalStringMap.newMapEntry_0(tmp$_0); - }; - InternalStringMap$iterator$ObjectLiteral.prototype.remove = function () { - var tmp$, tmp$_0; - tmp$_0 = this.this$InternalStringMap; - var value = this.lastKey_0; - var checkNotNull$result; - if (value == null) { - var message = 'Required value was null.'; - throw IllegalStateException_init_0(message.toString()); - } - else { - checkNotNull$result = value; - } - tmp$_0.remove_11rb$((tmp$ = checkNotNull$result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0()); - }; - InternalStringMap$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [MutableIterator]}; - InternalStringMap.prototype.iterator = function () { - return new InternalStringMap$iterator$ObjectLiteral(this); - }; - function InternalStringMap$newMapEntry$ObjectLiteral(closure$key, this$InternalStringMap) { - this.closure$key = closure$key; - this.this$InternalStringMap = this$InternalStringMap; - } - Object.defineProperty(InternalStringMap$newMapEntry$ObjectLiteral.prototype, 'key', {get: function () { - return this.closure$key; - }}); - Object.defineProperty(InternalStringMap$newMapEntry$ObjectLiteral.prototype, 'value', {get: function () { - return this.this$InternalStringMap.get_11rb$(this.closure$key); - }}); - InternalStringMap$newMapEntry$ObjectLiteral.prototype.setValue_11rc$ = function (newValue) { - return this.this$InternalStringMap.put_xwzc9p$(this.closure$key, newValue); - }; - InternalStringMap$newMapEntry$ObjectLiteral.prototype.hashCode = function () { - return AbstractMap$Companion_getInstance().entryHashCode_9fthdn$(this); - }; - InternalStringMap$newMapEntry$ObjectLiteral.prototype.toString = function () { - return AbstractMap$Companion_getInstance().entryToString_9fthdn$(this); - }; - InternalStringMap$newMapEntry$ObjectLiteral.prototype.equals = function (other) { - return AbstractMap$Companion_getInstance().entryEquals_js7fox$(this, other); - }; - InternalStringMap$newMapEntry$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [MutableMap$MutableEntry]}; - InternalStringMap.prototype.newMapEntry_0 = function (key) { - return new InternalStringMap$newMapEntry$ObjectLiteral(key, this); - }; - InternalStringMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'InternalStringMap', interfaces: [InternalMap]}; - function LinkedHashMap() { - this.head_1lr44l$_0 = null; - this.map_97q5dv$_0 = null; - } - function LinkedHashMap$ChainEntry(key, value) { - AbstractMutableMap$SimpleEntry.call(this, key, value); - this.next_8be2vx$ = null; - this.prev_8be2vx$ = null; - } - LinkedHashMap$ChainEntry.$metadata$ = {kind: Kind_CLASS, simpleName: 'ChainEntry', interfaces: [AbstractMutableMap$SimpleEntry]}; - function LinkedHashMap$EntrySet($outer) { - this.$outer = $outer; - AbstractMutableSet.call(this); - } - function LinkedHashMap$EntrySet$EntryIterator($outer) { - this.$outer = $outer; - this.last_0 = null; - this.next_0 = null; - this.next_0 = this.$outer.$outer.head_1lr44l$_0; - } - LinkedHashMap$EntrySet$EntryIterator.prototype.hasNext = function () { - return this.next_0 !== null; - }; - LinkedHashMap$EntrySet$EntryIterator.prototype.next = function () { - if (!this.hasNext()) - throw NoSuchElementException_init(); - var current = ensureNotNull(this.next_0); - this.last_0 = current; - var $receiver = current.next_8be2vx$; - this.$outer.$outer; - this.next_0 = $receiver !== this.$outer.$outer.head_1lr44l$_0 ? $receiver : null; - return current; - }; - LinkedHashMap$EntrySet$EntryIterator.prototype.remove = function () { - if (!(this.last_0 != null)) { - var message = 'Check failed.'; - throw IllegalStateException_init_0(message.toString()); - } - this.$outer.$outer.remove_aul5td$_0(ensureNotNull(this.last_0)); - this.$outer.$outer.map_97q5dv$_0.remove_11rb$(ensureNotNull(this.last_0).key); - this.last_0 = null; - }; - LinkedHashMap$EntrySet$EntryIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'EntryIterator', interfaces: [MutableIterator]}; - LinkedHashMap$EntrySet.prototype.add_11rb$ = function (element) { - throw UnsupportedOperationException_init_0('Add is not supported on entries'); - }; - LinkedHashMap$EntrySet.prototype.clear = function () { - this.$outer.clear(); - }; - LinkedHashMap$EntrySet.prototype.contains_11rb$ = function (element) { - return this.$outer.containsEntry_8hxqw4$(element); - }; - LinkedHashMap$EntrySet.prototype.iterator = function () { - return new LinkedHashMap$EntrySet$EntryIterator(this); - }; - LinkedHashMap$EntrySet.prototype.remove_11rb$ = function (element) { - if (this.contains_11rb$(element)) { - this.$outer.remove_11rb$(element.key); - return true; - } - return false; - }; - Object.defineProperty(LinkedHashMap$EntrySet.prototype, 'size', {get: function () { - return this.$outer.size; - }}); - LinkedHashMap$EntrySet.$metadata$ = {kind: Kind_CLASS, simpleName: 'EntrySet', interfaces: [AbstractMutableSet]}; - LinkedHashMap.prototype.addToEnd_ufg2hg$_0 = function ($receiver) { - if (!($receiver.next_8be2vx$ == null && $receiver.prev_8be2vx$ == null)) { - var message = 'Check failed.'; - throw IllegalStateException_init_0(message.toString()); - } - var _head = this.head_1lr44l$_0; - if (_head == null) { - this.head_1lr44l$_0 = $receiver; - $receiver.next_8be2vx$ = $receiver; - $receiver.prev_8be2vx$ = $receiver; - } - else { - var value = _head.prev_8be2vx$; - var checkNotNull$result; - if (value == null) { - var message_0 = 'Required value was null.'; - throw IllegalStateException_init_0(message_0.toString()); - } - else { - checkNotNull$result = value; - } - var _tail = checkNotNull$result; - $receiver.prev_8be2vx$ = _tail; - $receiver.next_8be2vx$ = _head; - _head.prev_8be2vx$ = $receiver; - _tail.next_8be2vx$ = $receiver; - } - }; - LinkedHashMap.prototype.remove_aul5td$_0 = function ($receiver) { - if ($receiver.next_8be2vx$ === $receiver) { - this.head_1lr44l$_0 = null; - } - else { - if (this.head_1lr44l$_0 === $receiver) { - this.head_1lr44l$_0 = $receiver.next_8be2vx$; - } - ensureNotNull($receiver.next_8be2vx$).prev_8be2vx$ = $receiver.prev_8be2vx$; - ensureNotNull($receiver.prev_8be2vx$).next_8be2vx$ = $receiver.next_8be2vx$; - } - $receiver.next_8be2vx$ = null; - $receiver.prev_8be2vx$ = null; - }; - LinkedHashMap.prototype.clear = function () { - this.map_97q5dv$_0.clear(); - this.head_1lr44l$_0 = null; - }; - LinkedHashMap.prototype.containsKey_11rb$ = function (key) { - return this.map_97q5dv$_0.containsKey_11rb$(key); - }; - LinkedHashMap.prototype.containsValue_11rc$ = function (value) { - var tmp$; - tmp$ = this.head_1lr44l$_0; - if (tmp$ == null) { - return false; - } - var node = tmp$; - do { - if (equals(node.value, value)) { - return true; - } - node = ensureNotNull(node.next_8be2vx$); - } - while (node !== this.head_1lr44l$_0); - return false; - }; - LinkedHashMap.prototype.createEntrySet = function () { - return new LinkedHashMap$EntrySet(this); - }; - LinkedHashMap.prototype.get_11rb$ = function (key) { - var tmp$; - return (tmp$ = this.map_97q5dv$_0.get_11rb$(key)) != null ? tmp$.value : null; - }; - LinkedHashMap.prototype.put_xwzc9p$ = function (key, value) { - var old = this.map_97q5dv$_0.get_11rb$(key); - if (old == null) { - var newEntry = new LinkedHashMap$ChainEntry(key, value); - this.map_97q5dv$_0.put_xwzc9p$(key, newEntry); - this.addToEnd_ufg2hg$_0(newEntry); - return null; - } - else { - return old.setValue_11rc$(value); - } - }; - LinkedHashMap.prototype.remove_11rb$ = function (key) { - var entry = this.map_97q5dv$_0.remove_11rb$(key); - if (entry != null) { - this.remove_aul5td$_0(entry); - return entry.value; - } - return null; - }; - Object.defineProperty(LinkedHashMap.prototype, 'size', {get: function () { - return this.map_97q5dv$_0.size; - }}); - LinkedHashMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'LinkedHashMap', interfaces: [HashMap, MutableMap]}; - function LinkedHashMap_init($this) { - $this = $this || Object.create(LinkedHashMap.prototype); - HashMap_init_0($this); - LinkedHashMap.call($this); - $this.map_97q5dv$_0 = HashMap_init_0(); - return $this; - } - function LinkedHashMap_init_0(backingMap, $this) { - $this = $this || Object.create(LinkedHashMap.prototype); - HashMap_init_0($this); - LinkedHashMap.call($this); - var tmp$; - $this.map_97q5dv$_0 = Kotlin.isType(tmp$ = backingMap, HashMap) ? tmp$ : throwCCE_0(); - return $this; - } - function LinkedHashMap_init_1(initialCapacity, loadFactor, $this) { - if (loadFactor === void 0) - loadFactor = 0.0; - $this = $this || Object.create(LinkedHashMap.prototype); - HashMap_init_1(initialCapacity, loadFactor, $this); - LinkedHashMap.call($this); - $this.map_97q5dv$_0 = HashMap_init_0(); - return $this; - } - function LinkedHashMap_init_2(initialCapacity, $this) { - $this = $this || Object.create(LinkedHashMap.prototype); - LinkedHashMap_init_1(initialCapacity, 0.0, $this); - return $this; - } - function LinkedHashMap_init_3(original, $this) { - $this = $this || Object.create(LinkedHashMap.prototype); - HashMap_init_0($this); - LinkedHashMap.call($this); - $this.map_97q5dv$_0 = HashMap_init_0(); - $this.putAll_a2k3zr$(original); - return $this; - } - function linkedStringMapOf(pairs) { - var $receiver = LinkedHashMap_init_0(stringMapOf([])); - putAll($receiver, pairs); - return $receiver; - } - function LinkedHashSet() { - } - LinkedHashSet.$metadata$ = {kind: Kind_CLASS, simpleName: 'LinkedHashSet', interfaces: [HashSet, MutableSet]}; - function LinkedHashSet_init(map, $this) { - $this = $this || Object.create(LinkedHashSet.prototype); - HashSet_init_3(map, $this); - LinkedHashSet.call($this); - return $this; - } - function LinkedHashSet_init_0($this) { - $this = $this || Object.create(LinkedHashSet.prototype); - HashSet_init_3(LinkedHashMap_init(), $this); - LinkedHashSet.call($this); - return $this; - } - function LinkedHashSet_init_1(elements, $this) { - $this = $this || Object.create(LinkedHashSet.prototype); - HashSet_init_3(LinkedHashMap_init(), $this); - LinkedHashSet.call($this); - $this.addAll_brywnq$(elements); - return $this; - } - function LinkedHashSet_init_2(initialCapacity, loadFactor, $this) { - if (loadFactor === void 0) - loadFactor = 0.0; - $this = $this || Object.create(LinkedHashSet.prototype); - HashSet_init_3(LinkedHashMap_init_1(initialCapacity, loadFactor), $this); - LinkedHashSet.call($this); - return $this; - } - function LinkedHashSet_init_3(initialCapacity, $this) { - $this = $this || Object.create(LinkedHashSet.prototype); - LinkedHashSet_init_2(initialCapacity, 0.0, $this); - return $this; - } - function linkedStringSetOf(elements) { - var $receiver = LinkedHashSet_init(linkedStringMapOf([])); - addAll_1($receiver, elements); - return $receiver; - } - function RandomAccess() { - } - RandomAccess.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'RandomAccess', interfaces: []}; - var deleteProperty = defineInlineFunction('kotlin.kotlin.collections.deleteProperty_dgzutr$', function (obj, property) { - delete obj[property]; - }); - var synchronized = defineInlineFunction('kotlin.kotlin.synchronized_eocq09$', wrapFunction(function () { - return function (lock, block) { - return block(); - }; - })); - function BaseOutput() { - } - BaseOutput.prototype.println = function () { - this.print_s8jyv4$('\n'); - }; - BaseOutput.prototype.println_s8jyv4$ = function (message) { - this.print_s8jyv4$(message); - this.println(); - }; - BaseOutput.prototype.flush = function () { - }; - BaseOutput.$metadata$ = {kind: Kind_CLASS, simpleName: 'BaseOutput', interfaces: []}; - function NodeJsOutput(outputStream) { - BaseOutput.call(this); - this.outputStream = outputStream; - } - NodeJsOutput.prototype.print_s8jyv4$ = function (message) { - return this.outputStream.write(String(message)); - }; - NodeJsOutput.$metadata$ = {kind: Kind_CLASS, simpleName: 'NodeJsOutput', interfaces: [BaseOutput]}; - function OutputToConsoleLog() { - BaseOutput.call(this); - } - OutputToConsoleLog.prototype.print_s8jyv4$ = function (message) { - console.log(message); - }; - OutputToConsoleLog.prototype.println_s8jyv4$ = function (message) { - console.log(message); - }; - OutputToConsoleLog.prototype.println = function () { - console.log(''); - }; - OutputToConsoleLog.$metadata$ = {kind: Kind_CLASS, simpleName: 'OutputToConsoleLog', interfaces: [BaseOutput]}; - function BufferedOutput() { - BaseOutput.call(this); - this.buffer = ''; - } - BufferedOutput.prototype.print_s8jyv4$ = function (message) { - this.buffer += String(message); - }; - BufferedOutput.prototype.flush = function () { - this.buffer = ''; - }; - BufferedOutput.$metadata$ = {kind: Kind_CLASS, simpleName: 'BufferedOutput', interfaces: [BaseOutput]}; - function BufferedOutputToConsoleLog() { - BufferedOutput.call(this); - } - BufferedOutputToConsoleLog.prototype.print_s8jyv4$ = function (message) { - var s = String(message); - var i = lastIndexOf_11(s, 10); - if (i >= 0) { - this.buffer = this.buffer + s.substring(0, i); - this.flush(); - s = s.substring(i + 1 | 0); - } - this.buffer = this.buffer + s; - }; - BufferedOutputToConsoleLog.prototype.flush = function () { - console.log(this.buffer); - this.buffer = ''; - }; - BufferedOutputToConsoleLog.$metadata$ = {kind: Kind_CLASS, simpleName: 'BufferedOutputToConsoleLog', interfaces: [BufferedOutput]}; - var output; - function String_0(value) { - return String(value); - } - function println() { - output.println(); - } - function println_0(message) { - output.println_s8jyv4$(message); - } - function print(message) { - output.print_s8jyv4$(message); - } - function CoroutineImpl(resultContinuation) { - this.resultContinuation_0 = resultContinuation; - this.state_0 = 0; - this.exceptionState_0 = 0; - this.result_0 = null; - this.exception_0 = null; - this.finallyPath_0 = null; - this.context_hxcuhl$_0 = this.resultContinuation_0.context; - this.intercepted__0 = null; - } - Object.defineProperty(CoroutineImpl.prototype, 'context', {get: function () { - return this.context_hxcuhl$_0; - }}); - CoroutineImpl.prototype.intercepted = function () { - var tmp$, tmp$_0, tmp$_1; - var tmp$_2; - if ((tmp$_1 = this.intercepted__0) != null) - tmp$_2 = tmp$_1; - else { - var $receiver = (tmp$_0 = (tmp$ = this.context.get_j3r2sn$(ContinuationInterceptor$Key_getInstance())) != null ? tmp$.interceptContinuation_wj8d80$(this) : null) != null ? tmp$_0 : this; - this.intercepted__0 = $receiver; - tmp$_2 = $receiver; - } - return tmp$_2; - }; - var throwCCE = Kotlin.throwCCE; - CoroutineImpl.prototype.resumeWith_tl1gpc$ = function (result) { - var current = {v: this}; - var getOrNull$result; - var tmp$; - if (result.isFailure) { - getOrNull$result = null; - } - else { - getOrNull$result = (tmp$ = result.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } - var currentResult = {v: getOrNull$result}; - var currentException = {v: result.exceptionOrNull()}; - while (true) { - var $receiver = current.v; - var tmp$_0; - var completion = $receiver.resultContinuation_0; - if (currentException.v == null) { - $receiver.result_0 = currentResult.v; - } - else { - $receiver.state_0 = $receiver.exceptionState_0; - $receiver.exception_0 = currentException.v; - } - try { - var outcome = $receiver.doResume(); - if (outcome === get_COROUTINE_SUSPENDED()) - return; - currentResult.v = outcome; - currentException.v = null; - } - catch (exception) { - currentResult.v = null; - currentException.v = exception; - } - $receiver.releaseIntercepted_0(); - if (Kotlin.isType(completion, CoroutineImpl)) { - current.v = completion; - } - else { - var tmp$_1; - if ((tmp$_0 = currentException.v) != null) { - completion.resumeWith_tl1gpc$(new Result(createFailure(tmp$_0))); - tmp$_1 = Unit; - } - else - tmp$_1 = null; - if (tmp$_1 == null) { - completion.resumeWith_tl1gpc$(new Result(currentResult.v)); - } - return; - } - } - }; - CoroutineImpl.prototype.releaseIntercepted_0 = function () { - var intercepted = this.intercepted__0; - if (intercepted != null && intercepted !== this) { - ensureNotNull(this.context.get_j3r2sn$(ContinuationInterceptor$Key_getInstance())).releaseInterceptedContinuation_k98bjh$(intercepted); - } - this.intercepted__0 = CompletedContinuation_getInstance(); - }; - CoroutineImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'CoroutineImpl', interfaces: [Continuation]}; - function CompletedContinuation() { - CompletedContinuation_instance = this; - } - Object.defineProperty(CompletedContinuation.prototype, 'context', {get: function () { - throw IllegalStateException_init_0('This continuation is already complete'.toString()); - }}); - CompletedContinuation.prototype.resumeWith_tl1gpc$ = function (result) { - throw IllegalStateException_init_0('This continuation is already complete'.toString()); - }; - CompletedContinuation.prototype.toString = function () { - return 'This continuation is already complete'; - }; - CompletedContinuation.$metadata$ = {kind: Kind_OBJECT, simpleName: 'CompletedContinuation', interfaces: [Continuation]}; - var CompletedContinuation_instance = null; - function CompletedContinuation_getInstance() { - if (CompletedContinuation_instance === null) { - new CompletedContinuation(); - } - return CompletedContinuation_instance; - } - function SafeContinuation(delegate, initialResult) { - this.delegate_0 = delegate; - this.result_0 = initialResult; - } - Object.defineProperty(SafeContinuation.prototype, 'context', {get: function () { - return this.delegate_0.context; - }}); - SafeContinuation.prototype.resumeWith_tl1gpc$ = function (result) { - var cur = this.result_0; - if (cur === CoroutineSingletons$UNDECIDED_getInstance()) - this.result_0 = result.value; - else if (cur === get_COROUTINE_SUSPENDED()) { - this.result_0 = CoroutineSingletons$RESUMED_getInstance(); - this.delegate_0.resumeWith_tl1gpc$(result); - } - else - throw IllegalStateException_init_0('Already resumed'); - }; - SafeContinuation.prototype.getOrThrow = function () { - var tmp$; - if (this.result_0 === CoroutineSingletons$UNDECIDED_getInstance()) { - this.result_0 = get_COROUTINE_SUSPENDED(); - return get_COROUTINE_SUSPENDED(); - } - var result = this.result_0; - if (result === CoroutineSingletons$RESUMED_getInstance()) - tmp$ = get_COROUTINE_SUSPENDED(); - else if (Kotlin.isType(result, Result$Failure)) - throw result.exception; - else - tmp$ = result; - return tmp$; - }; - SafeContinuation.$metadata$ = {kind: Kind_CLASS, simpleName: 'SafeContinuation', interfaces: [Continuation]}; - function SafeContinuation_init(delegate, $this) { - $this = $this || Object.create(SafeContinuation.prototype); - SafeContinuation.call($this, delegate, CoroutineSingletons$UNDECIDED_getInstance()); - return $this; - } - var startCoroutineUninterceptedOrReturn = defineInlineFunction('kotlin.kotlin.coroutines.intrinsics.startCoroutineUninterceptedOrReturn_x18nsh$', function ($receiver, completion) { - return $receiver(completion, false); - }); - var startCoroutineUninterceptedOrReturn_0 = defineInlineFunction('kotlin.kotlin.coroutines.intrinsics.startCoroutineUninterceptedOrReturn_3a617i$', function ($receiver, receiver, completion) { - return $receiver(receiver, completion, false); - }); - function createCoroutineUnintercepted$lambda(this$createCoroutineUnintercepted, closure$completion) { - return function () { - return this$createCoroutineUnintercepted(closure$completion); - }; - } - createCoroutineFromSuspendFunction$ObjectLiteral.prototype = Object.create(CoroutineImpl.prototype); - createCoroutineFromSuspendFunction$ObjectLiteral.prototype.constructor = createCoroutineFromSuspendFunction$ObjectLiteral; - function createCoroutineFromSuspendFunction$ObjectLiteral(closure$block, resultContinuation) { - this.closure$block = closure$block; - CoroutineImpl.call(this, resultContinuation); - } - createCoroutineFromSuspendFunction$ObjectLiteral.prototype.doResume = function () { - var tmp$; - if ((tmp$ = this.exception_0) != null) { - throw tmp$; - } - return this.closure$block(); - }; - createCoroutineFromSuspendFunction$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CoroutineImpl]}; - function createCoroutineUnintercepted($receiver, completion) { - if ($receiver.length == 2) { - return $receiver(completion, true); - } - else { - var tmp$; - return new createCoroutineFromSuspendFunction$ObjectLiteral(createCoroutineUnintercepted$lambda($receiver, completion), Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE_0()); - } - } - function createCoroutineUnintercepted$lambda_0(this$createCoroutineUnintercepted, closure$receiver, closure$completion) { - return function () { - return this$createCoroutineUnintercepted(closure$receiver, closure$completion); - }; - } - function createCoroutineUnintercepted_0($receiver, receiver, completion) { - if ($receiver.length == 3) { - return $receiver(receiver, completion, true); - } - else { - var tmp$; - return new createCoroutineFromSuspendFunction$ObjectLiteral(createCoroutineUnintercepted$lambda_0($receiver, receiver, completion), Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE_0()); - } - } - function intercepted($receiver) { - var tmp$, tmp$_0, tmp$_1; - return (tmp$_1 = (tmp$_0 = Kotlin.isType(tmp$ = $receiver, CoroutineImpl) ? tmp$ : null) != null ? tmp$_0.intercepted() : null) != null ? tmp$_1 : $receiver; - } - var createCoroutineFromSuspendFunction = wrapFunction(function () { - createCoroutineFromSuspendFunction$ObjectLiteral.prototype = Object.create(CoroutineImpl.prototype); - createCoroutineFromSuspendFunction$ObjectLiteral.prototype.constructor = createCoroutineFromSuspendFunction$ObjectLiteral; - function createCoroutineFromSuspendFunction$ObjectLiteral(closure$block, resultContinuation) { - this.closure$block = closure$block; - CoroutineImpl.call(this, resultContinuation); - } - createCoroutineFromSuspendFunction$ObjectLiteral.prototype.doResume = function () { - var tmp$; - if ((tmp$ = this.exception_0) != null) { - throw tmp$; - } - return this.closure$block(); - }; - createCoroutineFromSuspendFunction$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CoroutineImpl]}; - return function (completion, block) { - var tmp$; - return new createCoroutineFromSuspendFunction$ObjectLiteral(block, Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE_0()); - }; - }); - function EmptyContinuation$lambda(result) { - var tmp$; - throwOnFailure(result); - (tmp$ = result.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - return Unit; - } - var EmptyContinuation; - var dateLocaleOptions = defineInlineFunction('kotlin.kotlin.js.dateLocaleOptions_49uy1x$', function (init) { - var result = new Object(); - init(result); - return result; - }); - function createElement($receiver, name, init) { - var $receiver_0 = $receiver.createElement(name); - init($receiver_0); - return $receiver_0; - } - function appendElement($receiver, name, init) { - var $receiver_0 = createElement(ensureNotNull($receiver.ownerDocument), name, init); - $receiver.appendChild($receiver_0); - return $receiver_0; - } - function hasClass($receiver, cssClass) { - var tmp$ = $receiver.className; - return Regex_init_0('(^|.*' + '\\' + 's+)' + cssClass + '(' + '$' + '|' + '\\' + 's+.*)').matches_6bul2c$(tmp$); - } - function addClass($receiver, cssClasses) { - var destination = ArrayList_init(); - var tmp$; - for (tmp$ = 0; tmp$ !== cssClasses.length; ++tmp$) { - var element = cssClasses[tmp$]; - if (!hasClass($receiver, element)) - destination.add_11rb$(element); - } - var missingClasses = destination; - if (!missingClasses.isEmpty()) { - var tmp$_0; - var presentClasses = trim_3(Kotlin.isCharSequence(tmp$_0 = $receiver.className) ? tmp$_0 : throwCCE()).toString(); - var $receiver_0 = StringBuilder_init_1(); - $receiver_0.append_gw00v9$(presentClasses); - if (!(presentClasses.length === 0)) { - $receiver_0.append_gw00v9$(' '); - } - joinTo_8(missingClasses, $receiver_0, ' '); - $receiver.className = $receiver_0.toString(); - return true; - } - return false; - } - function removeClass($receiver, cssClasses) { - var any$result; - any$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== cssClasses.length; ++tmp$) { - var element = cssClasses[tmp$]; - if (hasClass($receiver, element)) { - any$result = true; - break any$break; - } - } - any$result = false; - } - while (false); - if (any$result) { - var toBeRemoved = toSet(cssClasses); - var tmp$_0; - var tmp$_1 = trim_3(Kotlin.isCharSequence(tmp$_0 = $receiver.className) ? tmp$_0 : throwCCE()).toString(); - var $receiver_0 = Regex_init_0('\\s+').split_905azu$(tmp$_1, 0); - var destination = ArrayList_init(); - var tmp$_2; - tmp$_2 = $receiver_0.iterator(); - while (tmp$_2.hasNext()) { - var element_0 = tmp$_2.next(); - if (!toBeRemoved.contains_11rb$(element_0)) - destination.add_11rb$(element_0); - } - $receiver.className = joinToString_8(destination, ' '); - return true; - } - return false; - } - function get_isText($receiver) { - return $receiver.nodeType === Node.TEXT_NODE || $receiver.nodeType === Node.CDATA_SECTION_NODE; - } - function get_isElement($receiver) { - return $receiver.nodeType === Node.ELEMENT_NODE; - } - function EventListener(handler) { - return new EventListenerHandler(handler); - } - function EventListenerHandler(handler) { - this.handler_0 = handler; - } - EventListenerHandler.prototype.handleEvent = function (event) { - this.handler_0(event); - }; - EventListenerHandler.prototype.toString = function () { - return 'EventListenerHandler(' + this.handler_0 + ')'; - }; - EventListenerHandler.$metadata$ = {kind: Kind_CLASS, simpleName: 'EventListenerHandler', interfaces: []}; - function asList$ObjectLiteral_0(this$asList) { - this.this$asList = this$asList; - AbstractList.call(this); - } - Object.defineProperty(asList$ObjectLiteral_0.prototype, 'size', {get: function () { - return this.this$asList.length; - }}); - asList$ObjectLiteral_0.prototype.get_za3lpa$ = function (index) { - if (index >= 0 && index <= get_lastIndex_8(this)) { - return this.this$asList.item(index); - } - else - throw new IndexOutOfBoundsException('index ' + index + ' is not in range [0..' + get_lastIndex_8(this) + ']'); - }; - asList$ObjectLiteral_0.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractList]}; - function asList_8($receiver) { - return new asList$ObjectLiteral_0($receiver); - } - function clear($receiver) { - while ($receiver.hasChildNodes()) { - $receiver.removeChild(ensureNotNull($receiver.firstChild)); - } - } - function appendText($receiver, text) { - $receiver.appendChild(ensureNotNull($receiver.ownerDocument).createTextNode(text)); - return $receiver; - } - var asDynamic = defineInlineFunction('kotlin.kotlin.js.asDynamic_mzud1t$', function ($receiver) { - return $receiver; - }); - var unsafeCast = defineInlineFunction('kotlin.kotlin.js.unsafeCast_3752g7$', function ($receiver) { - return $receiver; - }); - var unsafeCast_0 = defineInlineFunction('kotlin.kotlin.js.unsafeCastDynamic', function ($receiver) { - return $receiver; - }); - function iterator($receiver) { - var tmp$, tmp$_0; - var r = $receiver; - if ($receiver['iterator'] != null) - tmp$_0 = $receiver['iterator'](); - else if (Kotlin.isArrayish(r)) { - tmp$_0 = Kotlin.arrayIterator(r); - } - else - tmp$_0 = (Kotlin.isType(tmp$ = r, Iterable) ? tmp$ : throwCCE_0()).iterator(); - return tmp$_0; - } - function throwNPE(message) { - throw new NullPointerException(message); - } - function throwCCE_0() { - throw new ClassCastException('Illegal cast'); - } - function throwISE(message) { - throw IllegalStateException_init_0(message); - } - function throwUPAE(propertyName) { - throw UninitializedPropertyAccessException_init_0('lateinit property ' + propertyName + ' has not been initialized'); - } - function Error_0(message, cause) { - Throwable.call(this); - var tmp$; - tmp$ = cause != null ? cause : null; - this.message_q7r8iu$_0 = typeof message === 'undefined' && tmp$ != null ? Kotlin.toString(tmp$) : message; - this.cause_us9j0c$_0 = tmp$; - Kotlin.captureStack(Throwable, this); - this.name = 'Error'; - } - Object.defineProperty(Error_0.prototype, 'message', {get: function () { - return this.message_q7r8iu$_0; - }}); - Object.defineProperty(Error_0.prototype, 'cause', {get: function () { - return this.cause_us9j0c$_0; - }}); - Error_0.$metadata$ = {kind: Kind_CLASS, simpleName: 'Error', interfaces: [Throwable]}; - function Error_init($this) { - $this = $this || Object.create(Error_0.prototype); - Error_0.call($this, null, null); - get_js(getKClass(Error_0)).call($this, null, null); - return $this; - } - function Error_init_0(message, $this) { - $this = $this || Object.create(Error_0.prototype); - Error_0.call($this, message, null); - get_js(getKClass(Error_0)).call($this, message, null); - return $this; - } - function Error_init_1(cause, $this) { - $this = $this || Object.create(Error_0.prototype); - Error_0.call($this, undefined, cause); - get_js(getKClass(Error_0)).call($this, undefined, cause); - return $this; - } - function Exception(message, cause) { - Throwable.call(this); - var tmp$; - tmp$ = cause != null ? cause : null; - this.message_8yp7un$_0 = typeof message === 'undefined' && tmp$ != null ? Kotlin.toString(tmp$) : message; - this.cause_th0jdv$_0 = tmp$; - Kotlin.captureStack(Throwable, this); - this.name = 'Exception'; - } - Object.defineProperty(Exception.prototype, 'message', {get: function () { - return this.message_8yp7un$_0; - }}); - Object.defineProperty(Exception.prototype, 'cause', {get: function () { - return this.cause_th0jdv$_0; - }}); - Exception.$metadata$ = {kind: Kind_CLASS, simpleName: 'Exception', interfaces: [Throwable]}; - function Exception_init($this) { - $this = $this || Object.create(Exception.prototype); - Exception.call($this, null, null); - get_js(getKClass(Exception)).call($this, null, null); - return $this; - } - function Exception_init_0(message, $this) { - $this = $this || Object.create(Exception.prototype); - Exception.call($this, message, null); - get_js(getKClass(Exception)).call($this, message, null); - return $this; - } - function Exception_init_1(cause, $this) { - $this = $this || Object.create(Exception.prototype); - Exception.call($this, undefined, cause); - get_js(getKClass(Exception)).call($this, undefined, cause); - return $this; - } - function RuntimeException(message, cause) { - Exception.call(this, message, cause); - this.name = 'RuntimeException'; - } - RuntimeException.$metadata$ = {kind: Kind_CLASS, simpleName: 'RuntimeException', interfaces: [Exception]}; - function RuntimeException_init($this) { - $this = $this || Object.create(RuntimeException.prototype); - RuntimeException.call($this, null, null); - return $this; - } - function RuntimeException_init_0(message, $this) { - $this = $this || Object.create(RuntimeException.prototype); - RuntimeException.call($this, message, null); - return $this; - } - function RuntimeException_init_1(cause, $this) { - $this = $this || Object.create(RuntimeException.prototype); - RuntimeException.call($this, undefined, cause); - return $this; - } - function IllegalArgumentException(message, cause) { - RuntimeException.call(this, message, cause); - this.name = 'IllegalArgumentException'; - } - IllegalArgumentException.$metadata$ = {kind: Kind_CLASS, simpleName: 'IllegalArgumentException', interfaces: [RuntimeException]}; - function IllegalArgumentException_init($this) { - $this = $this || Object.create(IllegalArgumentException.prototype); - IllegalArgumentException.call($this, null, null); - return $this; - } - function IllegalArgumentException_init_0(message, $this) { - $this = $this || Object.create(IllegalArgumentException.prototype); - IllegalArgumentException.call($this, message, null); - return $this; - } - function IllegalArgumentException_init_1(cause, $this) { - $this = $this || Object.create(IllegalArgumentException.prototype); - IllegalArgumentException.call($this, undefined, cause); - return $this; - } - function IllegalStateException(message, cause) { - RuntimeException.call(this, message, cause); - this.name = 'IllegalStateException'; - } - IllegalStateException.$metadata$ = {kind: Kind_CLASS, simpleName: 'IllegalStateException', interfaces: [RuntimeException]}; - function IllegalStateException_init($this) { - $this = $this || Object.create(IllegalStateException.prototype); - IllegalStateException.call($this, null, null); - return $this; - } - function IllegalStateException_init_0(message, $this) { - $this = $this || Object.create(IllegalStateException.prototype); - IllegalStateException.call($this, message, null); - return $this; - } - function IllegalStateException_init_1(cause, $this) { - $this = $this || Object.create(IllegalStateException.prototype); - IllegalStateException.call($this, undefined, cause); - return $this; - } - function IndexOutOfBoundsException(message) { - RuntimeException_init_0(message, this); - this.name = 'IndexOutOfBoundsException'; - } - IndexOutOfBoundsException.$metadata$ = {kind: Kind_CLASS, simpleName: 'IndexOutOfBoundsException', interfaces: [RuntimeException]}; - function IndexOutOfBoundsException_init($this) { - $this = $this || Object.create(IndexOutOfBoundsException.prototype); - IndexOutOfBoundsException.call($this, null); - return $this; - } - function ConcurrentModificationException(message, cause) { - RuntimeException.call(this, message, cause); - this.name = 'ConcurrentModificationException'; - } - ConcurrentModificationException.$metadata$ = {kind: Kind_CLASS, simpleName: 'ConcurrentModificationException', interfaces: [RuntimeException]}; - function ConcurrentModificationException_init($this) { - $this = $this || Object.create(ConcurrentModificationException.prototype); - ConcurrentModificationException.call($this, null, null); - return $this; - } - function ConcurrentModificationException_init_0(message, $this) { - $this = $this || Object.create(ConcurrentModificationException.prototype); - ConcurrentModificationException.call($this, message, null); - return $this; - } - function ConcurrentModificationException_init_1(cause, $this) { - $this = $this || Object.create(ConcurrentModificationException.prototype); - ConcurrentModificationException.call($this, undefined, cause); - return $this; - } - function UnsupportedOperationException(message, cause) { - RuntimeException.call(this, message, cause); - this.name = 'UnsupportedOperationException'; - } - UnsupportedOperationException.$metadata$ = {kind: Kind_CLASS, simpleName: 'UnsupportedOperationException', interfaces: [RuntimeException]}; - function UnsupportedOperationException_init($this) { - $this = $this || Object.create(UnsupportedOperationException.prototype); - UnsupportedOperationException.call($this, null, null); - return $this; - } - function UnsupportedOperationException_init_0(message, $this) { - $this = $this || Object.create(UnsupportedOperationException.prototype); - UnsupportedOperationException.call($this, message, null); - return $this; - } - function UnsupportedOperationException_init_1(cause, $this) { - $this = $this || Object.create(UnsupportedOperationException.prototype); - UnsupportedOperationException.call($this, undefined, cause); - return $this; - } - function NumberFormatException(message) { - IllegalArgumentException_init_0(message, this); - this.name = 'NumberFormatException'; - } - NumberFormatException.$metadata$ = {kind: Kind_CLASS, simpleName: 'NumberFormatException', interfaces: [IllegalArgumentException]}; - function NumberFormatException_init($this) { - $this = $this || Object.create(NumberFormatException.prototype); - NumberFormatException.call($this, null); - return $this; - } - function NullPointerException(message) { - RuntimeException_init_0(message, this); - this.name = 'NullPointerException'; - } - NullPointerException.$metadata$ = {kind: Kind_CLASS, simpleName: 'NullPointerException', interfaces: [RuntimeException]}; - function NullPointerException_init($this) { - $this = $this || Object.create(NullPointerException.prototype); - NullPointerException.call($this, null); - return $this; - } - function ClassCastException(message) { - RuntimeException_init_0(message, this); - this.name = 'ClassCastException'; - } - ClassCastException.$metadata$ = {kind: Kind_CLASS, simpleName: 'ClassCastException', interfaces: [RuntimeException]}; - function ClassCastException_init($this) { - $this = $this || Object.create(ClassCastException.prototype); - ClassCastException.call($this, null); - return $this; - } - function AssertionError(message, cause) { - Error_0.call(this, message, cause); - this.name = 'AssertionError'; - } - AssertionError.$metadata$ = {kind: Kind_CLASS, simpleName: 'AssertionError', interfaces: [Error_0]}; - function AssertionError_init($this) { - $this = $this || Object.create(AssertionError.prototype); - AssertionError_init_0(null, $this); - return $this; - } - function AssertionError_init_0(message, $this) { - $this = $this || Object.create(AssertionError.prototype); - AssertionError.call($this, message, null); - return $this; - } - function AssertionError_init_1(message, $this) { - $this = $this || Object.create(AssertionError.prototype); - var tmp$; - AssertionError.call($this, toString(message), Kotlin.isType(tmp$ = message, Throwable) ? tmp$ : null); - return $this; - } - function NoSuchElementException(message) { - RuntimeException_init_0(message, this); - this.name = 'NoSuchElementException'; - } - NoSuchElementException.$metadata$ = {kind: Kind_CLASS, simpleName: 'NoSuchElementException', interfaces: [RuntimeException]}; - function NoSuchElementException_init($this) { - $this = $this || Object.create(NoSuchElementException.prototype); - NoSuchElementException.call($this, null); - return $this; - } - function ArithmeticException(message) { - RuntimeException_init_0(message, this); - this.name = 'ArithmeticException'; - } - ArithmeticException.$metadata$ = {kind: Kind_CLASS, simpleName: 'ArithmeticException', interfaces: [RuntimeException]}; - function ArithmeticException_init($this) { - $this = $this || Object.create(ArithmeticException.prototype); - ArithmeticException.call($this, null); - return $this; - } - function NoWhenBranchMatchedException(message, cause) { - RuntimeException.call(this, message, cause); - this.name = 'NoWhenBranchMatchedException'; - } - NoWhenBranchMatchedException.$metadata$ = {kind: Kind_CLASS, simpleName: 'NoWhenBranchMatchedException', interfaces: [RuntimeException]}; - function NoWhenBranchMatchedException_init($this) { - $this = $this || Object.create(NoWhenBranchMatchedException.prototype); - NoWhenBranchMatchedException.call($this, null, null); - return $this; - } - function NoWhenBranchMatchedException_init_0(message, $this) { - $this = $this || Object.create(NoWhenBranchMatchedException.prototype); - NoWhenBranchMatchedException.call($this, message, null); - return $this; - } - function NoWhenBranchMatchedException_init_1(cause, $this) { - $this = $this || Object.create(NoWhenBranchMatchedException.prototype); - NoWhenBranchMatchedException.call($this, undefined, cause); - return $this; - } - function UninitializedPropertyAccessException(message, cause) { - RuntimeException.call(this, message, cause); - this.name = 'UninitializedPropertyAccessException'; - } - UninitializedPropertyAccessException.$metadata$ = {kind: Kind_CLASS, simpleName: 'UninitializedPropertyAccessException', interfaces: [RuntimeException]}; - function UninitializedPropertyAccessException_init($this) { - $this = $this || Object.create(UninitializedPropertyAccessException.prototype); - UninitializedPropertyAccessException.call($this, null, null); - return $this; - } - function UninitializedPropertyAccessException_init_0(message, $this) { - $this = $this || Object.create(UninitializedPropertyAccessException.prototype); - UninitializedPropertyAccessException.call($this, message, null); - return $this; - } - function UninitializedPropertyAccessException_init_1(cause, $this) { - $this = $this || Object.create(UninitializedPropertyAccessException.prototype); - UninitializedPropertyAccessException.call($this, undefined, cause); - return $this; - } - function eachCount($receiver) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var tmp$_0; - destination.put_xwzc9p$(key, (accumulator == null && !destination.containsKey_11rb$(key) ? 0 : (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE()) + 1 | 0); - } - return destination; - } - function Serializable() { - } - Serializable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Serializable', interfaces: []}; - function min_16($receiver, a, b) { - return a.compareTo_11rb$(b) <= 0 ? a : b; - } - function max_16($receiver, a, b) { - return a.compareTo_11rb$(b) >= 0 ? a : b; - } - var jsTypeOf = defineInlineFunction('kotlin.kotlin.js.jsTypeOf_s8jyv4$', function (a) { - return typeof a; - }); - function json(pairs) { - var tmp$; - var res = {}; - for (tmp$ = 0; tmp$ !== pairs.length; ++tmp$) { - var tmp$_0 = pairs[tmp$]; - var name = tmp$_0.component1(), value = tmp$_0.component2(); - res[name] = value; - } - return res; - } - function add($receiver, other) { - var tmp$; - var keys = Object.keys(other); - for (tmp$ = 0; tmp$ !== keys.length; ++tmp$) { - var key = keys[tmp$]; - if (other.hasOwnProperty(key)) { - $receiver[key] = other[key]; - } - } - return $receiver; - } - var emptyArray = defineInlineFunction('kotlin.kotlin.emptyArray_287e2$', function () { - return []; - }); - function lazy(initializer) { - return new UnsafeLazyImpl(initializer); - } - function lazy_0(mode, initializer) { - return new UnsafeLazyImpl(initializer); - } - function lazy_1(lock, initializer) { - return new UnsafeLazyImpl(initializer); - } - function fillFrom(src, dst) { - var tmp$; - var srcLen = src.length; - var dstLen = dst.length; - var index = 0; - while (index < srcLen && index < dstLen) { - dst[index] = src[tmp$ = index, index = tmp$ + 1 | 0, tmp$]; - } - return dst; - } - function arrayCopyResize(source, newSize, defaultValue) { - var tmp$; - var result = source.slice(0, newSize); - if (source.$type$ !== undefined) { - result.$type$ = source.$type$; - } - var index = source.length; - if (newSize > index) { - result.length = newSize; - while (index < newSize) { - result[tmp$ = index, index = tmp$ + 1 | 0, tmp$] = defaultValue; - } - } - return result; - } - function arrayPlusCollection(array, collection) { - var tmp$, tmp$_0; - var result = array.slice(); - result.length += collection.size; - if (array.$type$ !== undefined) { - result.$type$ = array.$type$; - } - var index = array.length; - tmp$ = collection.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - result[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return result; - } - function fillFromCollection(dst, startIndex, collection) { - var tmp$, tmp$_0; - var index = startIndex; - tmp$ = collection.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - dst[tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0] = element; - } - return dst; - } - var copyArrayType = defineInlineFunction('kotlin.kotlin.copyArrayType_dgzutr$', function (from, to) { - if (from.$type$ !== undefined) { - to.$type$ = from.$type$; - } - }); - var jsIsType = defineInlineFunction('kotlin.kotlin.jsIsType_dgzutr$', function (obj, jsClass) { - return Kotlin.isType(obj, jsClass); - }); - var sin = defineInlineFunction('kotlin.kotlin.math.sin_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sin(x); - }; - })); - var cos = defineInlineFunction('kotlin.kotlin.math.cos_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.cos(x); - }; - })); - var tan = defineInlineFunction('kotlin.kotlin.math.tan_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.tan(x); - }; - })); - var asin = defineInlineFunction('kotlin.kotlin.math.asin_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.asin(x); - }; - })); - var acos = defineInlineFunction('kotlin.kotlin.math.acos_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.acos(x); - }; - })); - var atan = defineInlineFunction('kotlin.kotlin.math.atan_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.atan(x); - }; - })); - var atan2 = defineInlineFunction('kotlin.kotlin.math.atan2_lu1900$', wrapFunction(function () { - var Math_0 = Math; - return function (y, x) { - return Math_0.atan2(y, x); - }; - })); - var sinh = defineInlineFunction('kotlin.kotlin.math.sinh_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sinh(x); - }; - })); - var cosh = defineInlineFunction('kotlin.kotlin.math.cosh_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.cosh(x); - }; - })); - var tanh = defineInlineFunction('kotlin.kotlin.math.tanh_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.tanh(x); - }; - })); - var asinh = defineInlineFunction('kotlin.kotlin.math.asinh_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.asinh(x); - }; - })); - var acosh = defineInlineFunction('kotlin.kotlin.math.acosh_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.acosh(x); - }; - })); - var atanh = defineInlineFunction('kotlin.kotlin.math.atanh_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.atanh(x); - }; - })); - var hypot = defineInlineFunction('kotlin.kotlin.math.hypot_lu1900$', wrapFunction(function () { - var Math_0 = Math; - return function (x, y) { - return Math_0.hypot(x, y); - }; - })); - var sqrt = defineInlineFunction('kotlin.kotlin.math.sqrt_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sqrt(x); - }; - })); - var exp = defineInlineFunction('kotlin.kotlin.math.exp_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.exp(x); - }; - })); - var expm1 = defineInlineFunction('kotlin.kotlin.math.expm1_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.expm1(x); - }; - })); - function log(x, base) { - if (base <= 0.0 || base === 1.0) - return kotlin_js_internal_DoubleCompanionObject.NaN; - return Math.log(x) / Math.log(base); - } - var ln = defineInlineFunction('kotlin.kotlin.math.ln_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log(x); - }; - })); - var log10 = defineInlineFunction('kotlin.kotlin.math.log10_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log10(x); - }; - })); - var log2 = defineInlineFunction('kotlin.kotlin.math.log2_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log2(x); - }; - })); - var ln1p = defineInlineFunction('kotlin.kotlin.math.ln1p_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log1p(x); - }; - })); - var ceil = defineInlineFunction('kotlin.kotlin.math.ceil_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.ceil(x); - }; - })); - var floor = defineInlineFunction('kotlin.kotlin.math.floor_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.floor(x); - }; - })); - var truncate = defineInlineFunction('kotlin.kotlin.math.truncate_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.trunc(x); - }; - })); - function round(x) { - if (x % 0.5 !== 0.0) { - return Math.round(x); - } - var floor = Math_0.floor(x); - return floor % 2 === 0.0 ? floor : Math_0.ceil(x); - } - var abs = defineInlineFunction('kotlin.kotlin.math.abs_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.abs(x); - }; - })); - var sign = defineInlineFunction('kotlin.kotlin.math.sign_14dthe$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sign(x); - }; - })); - var min_17 = defineInlineFunction('kotlin.kotlin.math.min_lu1900$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var max_17 = defineInlineFunction('kotlin.kotlin.math.max_lu1900$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var pow = defineInlineFunction('kotlin.kotlin.math.pow_38ydlf$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver, x) { - return Math_0.pow($receiver, x); - }; - })); - var pow_0 = defineInlineFunction('kotlin.kotlin.math.pow_j6vyb1$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver, n) { - return Math_0.pow($receiver, n); - }; - })); - var get_absoluteValue = defineInlineFunction('kotlin.kotlin.math.get_absoluteValue_yrwdxr$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver) { - return Math_0.abs($receiver); - }; - })); - var get_sign = defineInlineFunction('kotlin.kotlin.math.get_sign_yrwdxr$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver) { - return Math_0.sign($receiver); - }; - })); - function withSign($receiver, sign) { - var thisSignBit = Kotlin.doubleSignBit($receiver); - var newSignBit = Kotlin.doubleSignBit(sign); - return thisSignBit === newSignBit ? $receiver : -$receiver; - } - var withSign_0 = defineInlineFunction('kotlin.kotlin.math.withSign_j6vyb1$', wrapFunction(function () { - var withSign = _.kotlin.math.withSign_38ydlf$; - return function ($receiver, sign) { - return withSign($receiver, sign); - }; - })); - function get_ulp($receiver) { - if ($receiver < 0) - return get_ulp(-$receiver); - else if (isNaN_1($receiver) || $receiver === kotlin_js_internal_DoubleCompanionObject.POSITIVE_INFINITY) - return $receiver; - else if ($receiver === kotlin_js_internal_DoubleCompanionObject.MAX_VALUE) - return $receiver - nextDown($receiver); - else - return nextUp($receiver) - $receiver; - } - function nextUp($receiver) { - if (isNaN_1($receiver) || $receiver === kotlin_js_internal_DoubleCompanionObject.POSITIVE_INFINITY) - return $receiver; - else if ($receiver === 0.0) - return kotlin_js_internal_DoubleCompanionObject.MIN_VALUE; - else { - var bits = toRawBits($receiver).add(Kotlin.Long.fromInt($receiver > 0 ? 1 : -1)); - return Kotlin.doubleFromBits(bits); - } - } - function nextDown($receiver) { - if (isNaN_1($receiver) || $receiver === kotlin_js_internal_DoubleCompanionObject.NEGATIVE_INFINITY) - return $receiver; - else if ($receiver === 0.0) - return -kotlin_js_internal_DoubleCompanionObject.MIN_VALUE; - else { - var bits = toRawBits($receiver).add(Kotlin.Long.fromInt($receiver > 0 ? -1 : 1)); - return Kotlin.doubleFromBits(bits); - } - } - function nextTowards($receiver, to) { - if (isNaN_1($receiver) || isNaN_1(to)) - return kotlin_js_internal_DoubleCompanionObject.NaN; - else if (to === $receiver) - return to; - else if (to > $receiver) - return nextUp($receiver); - else - return nextDown($receiver); - } - function roundToInt($receiver) { - if (isNaN_1($receiver)) - throw IllegalArgumentException_init_0('Cannot round NaN value.'); - else if ($receiver > 2147483647) - return 2147483647; - else if ($receiver < -2147483648) - return -2147483648; - else { - return numberToInt(Math.round($receiver)); - } - } - function roundToLong($receiver) { - if (isNaN_1($receiver)) - throw IllegalArgumentException_init_0('Cannot round NaN value.'); - else if ($receiver > Long$Companion$MAX_VALUE.toNumber()) - return Long$Companion$MAX_VALUE; - else if ($receiver < Long$Companion$MIN_VALUE.toNumber()) - return Long$Companion$MIN_VALUE; - else { - return Kotlin.Long.fromNumber(Math.round($receiver)); - } - } - var sin_0 = defineInlineFunction('kotlin.kotlin.math.sin_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sin(x); - }; - })); - var cos_0 = defineInlineFunction('kotlin.kotlin.math.cos_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.cos(x); - }; - })); - var tan_0 = defineInlineFunction('kotlin.kotlin.math.tan_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.tan(x); - }; - })); - var asin_0 = defineInlineFunction('kotlin.kotlin.math.asin_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.asin(x); - }; - })); - var acos_0 = defineInlineFunction('kotlin.kotlin.math.acos_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.acos(x); - }; - })); - var atan_0 = defineInlineFunction('kotlin.kotlin.math.atan_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.atan(x); - }; - })); - var atan2_0 = defineInlineFunction('kotlin.kotlin.math.atan2_dleff0$', wrapFunction(function () { - var Math_0 = Math; - return function (y, x) { - return Math_0.atan2(y, x); - }; - })); - var sinh_0 = defineInlineFunction('kotlin.kotlin.math.sinh_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sinh(x); - }; - })); - var cosh_0 = defineInlineFunction('kotlin.kotlin.math.cosh_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.cosh(x); - }; - })); - var tanh_0 = defineInlineFunction('kotlin.kotlin.math.tanh_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.tanh(x); - }; - })); - var asinh_0 = defineInlineFunction('kotlin.kotlin.math.asinh_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.asinh(x); - }; - })); - var acosh_0 = defineInlineFunction('kotlin.kotlin.math.acosh_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.acosh(x); - }; - })); - var atanh_0 = defineInlineFunction('kotlin.kotlin.math.atanh_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.atanh(x); - }; - })); - var hypot_0 = defineInlineFunction('kotlin.kotlin.math.hypot_dleff0$', wrapFunction(function () { - var Math_0 = Math; - return function (x, y) { - return Math_0.hypot(x, y); - }; - })); - var sqrt_0 = defineInlineFunction('kotlin.kotlin.math.sqrt_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sqrt(x); - }; - })); - var exp_0 = defineInlineFunction('kotlin.kotlin.math.exp_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.exp(x); - }; - })); - var expm1_0 = defineInlineFunction('kotlin.kotlin.math.expm1_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.expm1(x); - }; - })); - var log_0 = defineInlineFunction('kotlin.kotlin.math.log_dleff0$', wrapFunction(function () { - var log = _.kotlin.math.log_lu1900$; - return function (x, base) { - return log(x, base); - }; - })); - var ln_0 = defineInlineFunction('kotlin.kotlin.math.ln_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log(x); - }; - })); - var log10_0 = defineInlineFunction('kotlin.kotlin.math.log10_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log10(x); - }; - })); - var log2_0 = defineInlineFunction('kotlin.kotlin.math.log2_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log2(x); - }; - })); - var ln1p_0 = defineInlineFunction('kotlin.kotlin.math.ln1p_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.log1p(x); - }; - })); - var ceil_0 = defineInlineFunction('kotlin.kotlin.math.ceil_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.ceil(x); - }; - })); - var floor_0 = defineInlineFunction('kotlin.kotlin.math.floor_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.floor(x); - }; - })); - var truncate_0 = defineInlineFunction('kotlin.kotlin.math.truncate_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.trunc(x); - }; - })); - var round_0 = defineInlineFunction('kotlin.kotlin.math.round_mx4ult$', wrapFunction(function () { - var round = _.kotlin.math.round_14dthe$; - return function (x) { - return round(x); - }; - })); - var abs_0 = defineInlineFunction('kotlin.kotlin.math.abs_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.abs(x); - }; - })); - var sign_0 = defineInlineFunction('kotlin.kotlin.math.sign_mx4ult$', wrapFunction(function () { - var Math_0 = Math; - return function (x) { - return Math_0.sign(x); - }; - })); - var min_18 = defineInlineFunction('kotlin.kotlin.math.min_dleff0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var max_18 = defineInlineFunction('kotlin.kotlin.math.max_dleff0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var pow_1 = defineInlineFunction('kotlin.kotlin.math.pow_yni7l$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver, x) { - return Math_0.pow($receiver, x); - }; - })); - var pow_2 = defineInlineFunction('kotlin.kotlin.math.pow_lcymw2$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver, n) { - return Math_0.pow($receiver, n); - }; - })); - var get_absoluteValue_0 = defineInlineFunction('kotlin.kotlin.math.get_absoluteValue_81szk$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver) { - return Math_0.abs($receiver); - }; - })); - var get_sign_0 = defineInlineFunction('kotlin.kotlin.math.get_sign_81szk$', wrapFunction(function () { - var Math_0 = Math; - return function ($receiver) { - return Math_0.sign($receiver); - }; - })); - var withSign_1 = defineInlineFunction('kotlin.kotlin.math.withSign_yni7l$', wrapFunction(function () { - var withSign = _.kotlin.math.withSign_38ydlf$; - return function ($receiver, sign) { - return withSign($receiver, sign); - }; - })); - var withSign_2 = defineInlineFunction('kotlin.kotlin.math.withSign_lcymw2$', wrapFunction(function () { - var withSign = _.kotlin.math.withSign_38ydlf$; - return function ($receiver, sign) { - return withSign($receiver, sign); - }; - })); - var roundToInt_0 = defineInlineFunction('kotlin.kotlin.math.roundToInt_81szk$', wrapFunction(function () { - var roundToInt = _.kotlin.math.roundToInt_yrwdxr$; - return function ($receiver) { - return roundToInt($receiver); - }; - })); - var roundToLong_0 = defineInlineFunction('kotlin.kotlin.math.roundToLong_81szk$', wrapFunction(function () { - var roundToLong = _.kotlin.math.roundToLong_yrwdxr$; - return function ($receiver) { - return roundToLong($receiver); - }; - })); - function abs_1(n) { - return n < 0 ? -n | 0 | 0 : n; - } - var min_19 = defineInlineFunction('kotlin.kotlin.math.min_vux9f0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.min(a, b); - }; - })); - var max_19 = defineInlineFunction('kotlin.kotlin.math.max_vux9f0$', wrapFunction(function () { - var Math_0 = Math; - return function (a, b) { - return Math_0.max(a, b); - }; - })); - var get_absoluteValue_1 = defineInlineFunction('kotlin.kotlin.math.get_absoluteValue_s8ev3n$', wrapFunction(function () { - var abs = _.kotlin.math.abs_za3lpa$; - return function ($receiver) { - return abs($receiver); - }; - })); - function get_sign_1($receiver) { - if ($receiver < 0) - return -1; - else if ($receiver > 0) - return 1; - else - return 0; - } - function abs_2(n) { - return n.toNumber() < 0 ? n.unaryMinus() : n; - } - var min_20 = defineInlineFunction('kotlin.kotlin.math.min_3pjtqy$', function (a, b) { - return a.compareTo_11rb$(b) <= 0 ? a : b; - }); - var max_20 = defineInlineFunction('kotlin.kotlin.math.max_3pjtqy$', function (a, b) { - return a.compareTo_11rb$(b) >= 0 ? a : b; - }); - var get_absoluteValue_2 = defineInlineFunction('kotlin.kotlin.math.get_absoluteValue_mts6qi$', wrapFunction(function () { - var abs = _.kotlin.math.abs_s8cxhz$; - return function ($receiver) { - return abs($receiver); - }; - })); - function get_sign_2($receiver) { - if ($receiver.toNumber() < 0) - return -1; - else if ($receiver.toNumber() > 0) - return 1; - else - return 0; - } - function toBoolean($receiver) { - return equals($receiver.toLowerCase(), 'true'); - } - function toByte_0($receiver) { - var tmp$; - return (tmp$ = toByteOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toByte_1($receiver, radix) { - var tmp$; - return (tmp$ = toByteOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toShort_0($receiver) { - var tmp$; - return (tmp$ = toShortOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toShort_1($receiver, radix) { - var tmp$; - return (tmp$ = toShortOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toInt($receiver) { - var tmp$; - return (tmp$ = toIntOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toInt_0($receiver, radix) { - var tmp$; - return (tmp$ = toIntOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toLong($receiver) { - var tmp$; - return (tmp$ = toLongOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toLong_0($receiver, radix) { - var tmp$; - return (tmp$ = toLongOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toDouble($receiver) { - var $receiver_0 = +$receiver; - if (isNaN_1($receiver_0) && !isNaN_0($receiver) || ($receiver_0 === 0.0 && isBlank($receiver))) - numberFormatError($receiver); - return $receiver_0; - } - var toFloat = defineInlineFunction('kotlin.kotlin.text.toFloat_pdl1vz$', wrapFunction(function () { - var toDouble = _.kotlin.text.toDouble_pdl1vz$; - return function ($receiver) { - return toDouble($receiver); - }; - })); - function toDoubleOrNull($receiver) { - var $receiver_0 = +$receiver; - return !(isNaN_1($receiver_0) && !isNaN_0($receiver) || ($receiver_0 === 0.0 && isBlank($receiver))) ? $receiver_0 : null; - } - var toFloatOrNull = defineInlineFunction('kotlin.kotlin.text.toFloatOrNull_pdl1vz$', wrapFunction(function () { - var toDoubleOrNull = _.kotlin.text.toDoubleOrNull_pdl1vz$; - return function ($receiver) { - return toDoubleOrNull($receiver); - }; - })); - var toString_0 = defineInlineFunction('kotlin.kotlin.text.toString_798l30$', wrapFunction(function () { - var toString = _.kotlin.text.toString_dqglrj$; - return function ($receiver, radix) { - return toString($receiver, radix); - }; - })); - var toString_1 = defineInlineFunction('kotlin.kotlin.text.toString_di2vk2$', wrapFunction(function () { - var toString = _.kotlin.text.toString_dqglrj$; - return function ($receiver, radix) { - return toString($receiver, radix); - }; - })); - function toString_2($receiver, radix) { - return $receiver.toString(checkRadix(radix)); - } - function toString_3($receiver, radix) { - return $receiver.toString(checkRadix(radix)); - } - function isNaN_0($receiver) { - switch ($receiver.toLowerCase()) { - case 'nan': - case '+nan': - case '-nan': - return true; - default:return false; - } - } - function checkRadix(radix) { - if (!(2 <= radix && radix <= 36)) { - throw IllegalArgumentException_init_0('radix ' + radix + ' was not in valid range 2..36'); - } - return radix; - } - function digitOf(char, radix) { - var tmp$; - if (char >= 48 && char <= 57) - tmp$ = char - 48; - else if (char >= 65 && char <= 90) - tmp$ = char - 65 + 10 | 0; - else if (char >= 97 && char <= 122) - tmp$ = char - 97 + 10 | 0; - else - tmp$ = -1; - var it = tmp$; - return it >= radix ? -1 : it; - } - function isNaN_1($receiver) { - return $receiver !== $receiver; - } - function isNaN_2($receiver) { - return $receiver !== $receiver; - } - function isInfinite($receiver) { - return $receiver === kotlin_js_internal_DoubleCompanionObject.POSITIVE_INFINITY || $receiver === kotlin_js_internal_DoubleCompanionObject.NEGATIVE_INFINITY; - } - function isInfinite_0($receiver) { - return $receiver === kotlin_js_internal_FloatCompanionObject.POSITIVE_INFINITY || $receiver === kotlin_js_internal_FloatCompanionObject.NEGATIVE_INFINITY; - } - function isFinite($receiver) { - return !isInfinite($receiver) && !isNaN_1($receiver); - } - function isFinite_0($receiver) { - return !isInfinite_0($receiver) && !isNaN_2($receiver); - } - var fromBits = defineInlineFunction('kotlin.kotlin.fromBits_pkt8ie$', function ($receiver, bits) { - return Kotlin.doubleFromBits(bits); - }); - var fromBits_0 = defineInlineFunction('kotlin.kotlin.fromBits_4ql4v8$', function ($receiver, bits) { - return Kotlin.floatFromBits(bits); - }); - var then = defineInlineFunction('kotlin.kotlin.js.then_eyvp0y$', function ($receiver, onFulfilled) { - return $receiver.then(onFulfilled); - }); - var then_0 = defineInlineFunction('kotlin.kotlin.js.then_a5sxob$', function ($receiver, onFulfilled, onRejected) { - return $receiver.then(onFulfilled, onRejected); - }); - function defaultPlatformRandom() { - return Random_0(Math.random() * Math.pow(2, 32) | 0); - } - function fastLog2(value) { - var v = value; - var log = -1; - while (v !== 0) { - v = v >>> 1; - log = log + 1 | 0; - } - return log; - } - var INV_2_26; - var INV_2_53; - function doubleFromParts(hi26, low27) { - return hi26 * INV_2_26 + low27 * INV_2_53; - } - var rangeTo = defineInlineFunction('kotlin.kotlin.ranges.rangeTo_yni7l$', wrapFunction(function () { - var rangeTo = _.kotlin.ranges.rangeTo_38ydlf$; - return function ($receiver, that) { - return rangeTo($receiver, that); - }; - })); - function get_jsClass($receiver) { - switch (typeof $receiver) { - case 'string': - return String; - case 'number': - return Number; - case 'boolean': - return Boolean; - default:return Object.getPrototypeOf($receiver).constructor; - } - } - function get_js($receiver) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, KClassImpl) ? tmp$ : throwCCE_0()).jClass; - } - function get_kotlin($receiver) { - return getKClass($receiver); - } - function KClassImpl(jClass) { - this.jClass_1ppatx$_0 = jClass; - } - Object.defineProperty(KClassImpl.prototype, 'jClass', {get: function () { - return this.jClass_1ppatx$_0; - }}); - Object.defineProperty(KClassImpl.prototype, 'annotations', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'constructors', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isAbstract', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isCompanion', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isData', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isFinal', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isInner', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isOpen', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'isSealed', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'members', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'nestedClasses', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'objectInstance', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'qualifiedName', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'supertypes', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'typeParameters', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'sealedSubclasses', {get: function () { - throw new NotImplementedError(); - }}); - Object.defineProperty(KClassImpl.prototype, 'visibility', {get: function () { - throw new NotImplementedError(); - }}); - KClassImpl.prototype.equals = function (other) { - return Kotlin.isType(other, KClassImpl) && equals(this.jClass, other.jClass); - }; - KClassImpl.prototype.hashCode = function () { - var tmp$, tmp$_0; - return (tmp$_0 = (tmp$ = this.simpleName) != null ? hashCode(tmp$) : null) != null ? tmp$_0 : 0; - }; - KClassImpl.prototype.toString = function () { - return 'class ' + toString(this.simpleName); - }; - KClassImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'KClassImpl', interfaces: [KClass]}; - function SimpleKClassImpl(jClass) { - KClassImpl.call(this, jClass); - var tmp$; - this.simpleName_m7mxi0$_0 = (tmp$ = jClass.$metadata$) != null ? tmp$.simpleName : null; - } - Object.defineProperty(SimpleKClassImpl.prototype, 'simpleName', {get: function () { - return this.simpleName_m7mxi0$_0; - }}); - SimpleKClassImpl.prototype.isInstance_s8jyv4$ = function (value) { - var jsClass = this.jClass; - return Kotlin.isType(value, jsClass); - }; - SimpleKClassImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'SimpleKClassImpl', interfaces: [KClassImpl]}; - function PrimitiveKClassImpl(jClass, givenSimpleName, isInstanceFunction) { - KClassImpl.call(this, jClass); - this.givenSimpleName_0 = givenSimpleName; - this.isInstanceFunction_0 = isInstanceFunction; - } - PrimitiveKClassImpl.prototype.equals = function (other) { - if (!Kotlin.isType(other, PrimitiveKClassImpl)) - return false; - return KClassImpl.prototype.equals.call(this, other) && equals(this.givenSimpleName_0, other.givenSimpleName_0); - }; - Object.defineProperty(PrimitiveKClassImpl.prototype, 'simpleName', {get: function () { - return this.givenSimpleName_0; - }}); - PrimitiveKClassImpl.prototype.isInstance_s8jyv4$ = function (value) { - return this.isInstanceFunction_0(value); - }; - PrimitiveKClassImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'PrimitiveKClassImpl', interfaces: [KClassImpl]}; - function NothingKClassImpl() { - NothingKClassImpl_instance = this; - KClassImpl.call(this, Object); - this.simpleName_lnzy73$_0 = 'Nothing'; - } - Object.defineProperty(NothingKClassImpl.prototype, 'simpleName', {get: function () { - return this.simpleName_lnzy73$_0; - }}); - NothingKClassImpl.prototype.isInstance_s8jyv4$ = function (value) { - return false; - }; - Object.defineProperty(NothingKClassImpl.prototype, 'jClass', {get: function () { - throw UnsupportedOperationException_init_0("There's no native JS class for Nothing type"); - }}); - NothingKClassImpl.prototype.equals = function (other) { - return other === this; - }; - NothingKClassImpl.prototype.hashCode = function () { - return 0; - }; - NothingKClassImpl.$metadata$ = {kind: Kind_OBJECT, simpleName: 'NothingKClassImpl', interfaces: [KClassImpl]}; - var NothingKClassImpl_instance = null; - function NothingKClassImpl_getInstance() { - if (NothingKClassImpl_instance === null) { - new NothingKClassImpl(); - } - return NothingKClassImpl_instance; - } - function PrimitiveClasses() { - PrimitiveClasses_instance = this; - this.anyClass = new PrimitiveKClassImpl(Object, 'Any', PrimitiveClasses$anyClass$lambda); - this.numberClass = new PrimitiveKClassImpl(Number, 'Number', PrimitiveClasses$numberClass$lambda); - this.nothingClass = NothingKClassImpl_getInstance(); - this.booleanClass = new PrimitiveKClassImpl(Boolean, 'Boolean', PrimitiveClasses$booleanClass$lambda); - this.byteClass = new PrimitiveKClassImpl(Number, 'Byte', PrimitiveClasses$byteClass$lambda); - this.shortClass = new PrimitiveKClassImpl(Number, 'Short', PrimitiveClasses$shortClass$lambda); - this.intClass = new PrimitiveKClassImpl(Number, 'Int', PrimitiveClasses$intClass$lambda); - this.floatClass = new PrimitiveKClassImpl(Number, 'Float', PrimitiveClasses$floatClass$lambda); - this.doubleClass = new PrimitiveKClassImpl(Number, 'Double', PrimitiveClasses$doubleClass$lambda); - this.arrayClass = new PrimitiveKClassImpl(Array, 'Array', PrimitiveClasses$arrayClass$lambda); - this.stringClass = new PrimitiveKClassImpl(String, 'String', PrimitiveClasses$stringClass$lambda); - this.throwableClass = new PrimitiveKClassImpl(Error, 'Throwable', PrimitiveClasses$throwableClass$lambda); - this.booleanArrayClass = new PrimitiveKClassImpl(Array, 'BooleanArray', PrimitiveClasses$booleanArrayClass$lambda); - this.charArrayClass = new PrimitiveKClassImpl(Uint16Array, 'CharArray', PrimitiveClasses$charArrayClass$lambda); - this.byteArrayClass = new PrimitiveKClassImpl(Int8Array, 'ByteArray', PrimitiveClasses$byteArrayClass$lambda); - this.shortArrayClass = new PrimitiveKClassImpl(Int16Array, 'ShortArray', PrimitiveClasses$shortArrayClass$lambda); - this.intArrayClass = new PrimitiveKClassImpl(Int32Array, 'IntArray', PrimitiveClasses$intArrayClass$lambda); - this.longArrayClass = new PrimitiveKClassImpl(Array, 'LongArray', PrimitiveClasses$longArrayClass$lambda); - this.floatArrayClass = new PrimitiveKClassImpl(Float32Array, 'FloatArray', PrimitiveClasses$floatArrayClass$lambda); - this.doubleArrayClass = new PrimitiveKClassImpl(Float64Array, 'DoubleArray', PrimitiveClasses$doubleArrayClass$lambda); - } - function PrimitiveClasses$functionClass$lambda$lambda(closure$arity) { - return function (it) { - return typeof it === 'function' && it.length == closure$arity; - }; - } - PrimitiveClasses.prototype.functionClass = function (arity) { - var tmp$; - var tmp$_0; - if ((tmp$ = functionClasses[arity]) != null) - tmp$_0 = tmp$; - else { - var result = new PrimitiveKClassImpl(Function, 'Function' + arity, PrimitiveClasses$functionClass$lambda$lambda(arity)); - functionClasses[arity] = result; - tmp$_0 = result; - } - return tmp$_0; - }; - function PrimitiveClasses$anyClass$lambda(it) { - return Kotlin.isType(it, Any); - } - function PrimitiveClasses$numberClass$lambda(it) { - return Kotlin.isNumber(it); - } - function PrimitiveClasses$booleanClass$lambda(it) { - return typeof it === 'boolean'; - } - function PrimitiveClasses$byteClass$lambda(it) { - return typeof it === 'number'; - } - function PrimitiveClasses$shortClass$lambda(it) { - return typeof it === 'number'; - } - function PrimitiveClasses$intClass$lambda(it) { - return typeof it === 'number'; - } - function PrimitiveClasses$floatClass$lambda(it) { - return typeof it === 'number'; - } - function PrimitiveClasses$doubleClass$lambda(it) { - return typeof it === 'number'; - } - function PrimitiveClasses$arrayClass$lambda(it) { - return Kotlin.isArray(it); - } - function PrimitiveClasses$stringClass$lambda(it) { - return typeof it === 'string'; - } - function PrimitiveClasses$throwableClass$lambda(it) { - return Kotlin.isType(it, Throwable); - } - function PrimitiveClasses$booleanArrayClass$lambda(it) { - return Kotlin.isBooleanArray(it); - } - function PrimitiveClasses$charArrayClass$lambda(it) { - return Kotlin.isCharArray(it); - } - function PrimitiveClasses$byteArrayClass$lambda(it) { - return Kotlin.isByteArray(it); - } - function PrimitiveClasses$shortArrayClass$lambda(it) { - return Kotlin.isShortArray(it); - } - function PrimitiveClasses$intArrayClass$lambda(it) { - return Kotlin.isIntArray(it); - } - function PrimitiveClasses$longArrayClass$lambda(it) { - return Kotlin.isLongArray(it); - } - function PrimitiveClasses$floatArrayClass$lambda(it) { - return Kotlin.isFloatArray(it); - } - function PrimitiveClasses$doubleArrayClass$lambda(it) { - return Kotlin.isDoubleArray(it); - } - PrimitiveClasses.$metadata$ = {kind: Kind_OBJECT, simpleName: 'PrimitiveClasses', interfaces: []}; - var PrimitiveClasses_instance = null; - function PrimitiveClasses_getInstance() { - if (PrimitiveClasses_instance === null) { - new PrimitiveClasses(); - } - return PrimitiveClasses_instance; - } - var functionClasses; - function getKClass(jClass) { - return getOrCreateKClass(jClass); - } - function getKClassFromExpression(e) { - var tmp$; - switch (typeof e) { - case 'string': - tmp$ = PrimitiveClasses_getInstance().stringClass; - break; - case 'number': - tmp$ = (e | 0) === e ? PrimitiveClasses_getInstance().intClass : PrimitiveClasses_getInstance().doubleClass; - break; - case 'boolean': - tmp$ = PrimitiveClasses_getInstance().booleanClass; - break; - case 'function': - tmp$ = PrimitiveClasses_getInstance().functionClass(e.length); - break; - default:if (Kotlin.isBooleanArray(e)) - tmp$ = PrimitiveClasses_getInstance().booleanArrayClass; - else if (Kotlin.isCharArray(e)) - tmp$ = PrimitiveClasses_getInstance().charArrayClass; - else if (Kotlin.isByteArray(e)) - tmp$ = PrimitiveClasses_getInstance().byteArrayClass; - else if (Kotlin.isShortArray(e)) - tmp$ = PrimitiveClasses_getInstance().shortArrayClass; - else if (Kotlin.isIntArray(e)) - tmp$ = PrimitiveClasses_getInstance().intArrayClass; - else if (Kotlin.isLongArray(e)) - tmp$ = PrimitiveClasses_getInstance().longArrayClass; - else if (Kotlin.isFloatArray(e)) - tmp$ = PrimitiveClasses_getInstance().floatArrayClass; - else if (Kotlin.isDoubleArray(e)) - tmp$ = PrimitiveClasses_getInstance().doubleArrayClass; - else if (Kotlin.isType(e, KClass)) - tmp$ = getKClass(KClass); - else if (Kotlin.isArray(e)) - tmp$ = PrimitiveClasses_getInstance().arrayClass; - else { - var constructor = Object.getPrototypeOf(e).constructor; - if (constructor === Object) - tmp$ = PrimitiveClasses_getInstance().anyClass; - else if (constructor === Error) - tmp$ = PrimitiveClasses_getInstance().throwableClass; - else { - var jsClass = constructor; - tmp$ = getOrCreateKClass(jsClass); - } - } - - break; - } - return tmp$; - } - function getOrCreateKClass(jClass) { - var tmp$; - if (jClass === String) { - return PrimitiveClasses_getInstance().stringClass; - } - var metadata = jClass.$metadata$; - if (metadata != null) { - if (metadata.$kClass$ == null) { - var kClass = new SimpleKClassImpl(jClass); - metadata.$kClass$ = kClass; - tmp$ = kClass; - } - else { - tmp$ = metadata.$kClass$; - } - } - else { - tmp$ = new SimpleKClassImpl(jClass); - } - return tmp$; - } - function RegexOption(name, ordinal, value) { - Enum.call(this); - this.value = value; - this.name$ = name; - this.ordinal$ = ordinal; - } - function RegexOption_initFields() { - RegexOption_initFields = function () { - }; - RegexOption$IGNORE_CASE_instance = new RegexOption('IGNORE_CASE', 0, 'i'); - RegexOption$MULTILINE_instance = new RegexOption('MULTILINE', 1, 'm'); - } - var RegexOption$IGNORE_CASE_instance; - function RegexOption$IGNORE_CASE_getInstance() { - RegexOption_initFields(); - return RegexOption$IGNORE_CASE_instance; - } - var RegexOption$MULTILINE_instance; - function RegexOption$MULTILINE_getInstance() { - RegexOption_initFields(); - return RegexOption$MULTILINE_instance; - } - RegexOption.$metadata$ = {kind: Kind_CLASS, simpleName: 'RegexOption', interfaces: [Enum]}; - function RegexOption$values() { - return [RegexOption$IGNORE_CASE_getInstance(), RegexOption$MULTILINE_getInstance()]; - } - RegexOption.values = RegexOption$values; - function RegexOption$valueOf(name) { - switch (name) { - case 'IGNORE_CASE': - return RegexOption$IGNORE_CASE_getInstance(); - case 'MULTILINE': - return RegexOption$MULTILINE_getInstance(); - default:throwISE('No enum constant kotlin.text.RegexOption.' + name); - } - } - RegexOption.valueOf_61zpoe$ = RegexOption$valueOf; - function MatchGroup(value) { - this.value = value; - } - MatchGroup.$metadata$ = {kind: Kind_CLASS, simpleName: 'MatchGroup', interfaces: []}; - MatchGroup.prototype.component1 = function () { - return this.value; - }; - MatchGroup.prototype.copy_61zpoe$ = function (value) { - return new MatchGroup(value === void 0 ? this.value : value); - }; - MatchGroup.prototype.toString = function () { - return 'MatchGroup(value=' + Kotlin.toString(this.value) + ')'; - }; - MatchGroup.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.value) | 0; - return result; - }; - MatchGroup.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.value, other.value)))); - }; - function Regex(pattern, options) { - Regex$Companion_getInstance(); - this.pattern = pattern; - this.options = toSet_8(options); - var destination = ArrayList_init_0(collectionSizeOrDefault(options, 10)); - var tmp$; - tmp$ = options.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(item.value); - } - this.nativePattern_0 = new RegExp(pattern, joinToString_8(destination, '') + 'g'); - } - Regex.prototype.matches_6bul2c$ = function (input) { - reset(this.nativePattern_0); - var match = this.nativePattern_0.exec(input.toString()); - return match != null && match.index === 0 && this.nativePattern_0.lastIndex === input.length; - }; - Regex.prototype.containsMatchIn_6bul2c$ = function (input) { - reset(this.nativePattern_0); - return this.nativePattern_0.test(input.toString()); - }; - Regex.prototype.find_905azu$ = function (input, startIndex) { - if (startIndex === void 0) - startIndex = 0; - return findNext(this.nativePattern_0, input.toString(), startIndex); - }; - function Regex$findAll$lambda(closure$input, closure$startIndex, this$Regex) { - return function () { - return this$Regex.find_905azu$(closure$input, closure$startIndex); - }; - } - function Regex$findAll$lambda_0(match) { - return match.next(); - } - Regex.prototype.findAll_905azu$ = function (input, startIndex) { - if (startIndex === void 0) - startIndex = 0; - return generateSequence_1(Regex$findAll$lambda(input, startIndex, this), Regex$findAll$lambda_0); - }; - Regex.prototype.matchEntire_6bul2c$ = function (input) { - if (startsWith_1(this.pattern, 94) && endsWith_0(this.pattern, 36)) - return this.find_905azu$(input); - else - return (new Regex('^' + trimEnd_2(trimStart_2(this.pattern, Kotlin.charArrayOf(94)), Kotlin.charArrayOf(36)) + '$', this.options)).find_905azu$(input); - }; - Regex.prototype.replace_x2uqeu$ = function (input, replacement) { - return input.toString().replace(this.nativePattern_0, replacement); - }; - Regex.prototype.replace_20wsma$ = defineInlineFunction('kotlin.kotlin.text.Regex.replace_20wsma$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init_za3lpa$; - var ensureNotNull = Kotlin.ensureNotNull; - return function (input, transform) { - var match = this.find_905azu$(input); - if (match == null) - return input.toString(); - var lastStart = 0; - var length = input.length; - var sb = StringBuilder_init(length); - do { - var foundMatch = ensureNotNull(match); - sb.append_ezbsdh$(input, lastStart, foundMatch.range.start); - sb.append_gw00v9$(transform(foundMatch)); - lastStart = foundMatch.range.endInclusive + 1 | 0; - match = foundMatch.next(); - } - while (lastStart < length && match != null); - if (lastStart < length) { - sb.append_ezbsdh$(input, lastStart, length); - } - return sb.toString(); - }; - })); - Regex.prototype.replaceFirst_x2uqeu$ = function (input, replacement) { - var $receiver = this.options; - var destination = ArrayList_init_0(collectionSizeOrDefault($receiver, 10)); - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(item.value); - } - var nonGlobalOptions = joinToString_8(destination, ''); - return input.toString().replace(new RegExp(this.pattern, nonGlobalOptions), replacement); - }; - Regex.prototype.split_905azu$ = function (input, limit) { - if (limit === void 0) - limit = 0; - var tmp$; - if (!(limit >= 0)) { - var message = 'Limit must be non-negative, but was ' + limit; - throw IllegalArgumentException_init_0(message.toString()); - } - var it = this.findAll_905azu$(input); - var matches = limit === 0 ? it : take_9(it, limit - 1 | 0); - var result = ArrayList_init(); - var lastStart = 0; - tmp$ = matches.iterator(); - while (tmp$.hasNext()) { - var match = tmp$.next(); - result.add_11rb$(Kotlin.subSequence(input, lastStart, match.range.start).toString()); - lastStart = match.range.endInclusive + 1 | 0; - } - result.add_11rb$(Kotlin.subSequence(input, lastStart, input.length).toString()); - return result; - }; - Regex.prototype.toString = function () { - return this.nativePattern_0.toString(); - }; - function Regex$Companion() { - Regex$Companion_instance = this; - this.patternEscape_0 = new RegExp('[-\\\\^$*+?.()|[\\]{}]', 'g'); - this.replacementEscape_0 = new RegExp('\\$', 'g'); - } - Regex$Companion.prototype.fromLiteral_61zpoe$ = function (literal) { - return Regex_init_0(this.escape_61zpoe$(literal)); - }; - Regex$Companion.prototype.escape_61zpoe$ = function (literal) { - return literal.replace(this.patternEscape_0, '\\$&'); - }; - Regex$Companion.prototype.escapeReplacement_61zpoe$ = function (literal) { - return literal.replace(this.replacementEscape_0, '$$$$'); - }; - Regex$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var Regex$Companion_instance = null; - function Regex$Companion_getInstance() { - if (Regex$Companion_instance === null) { - new Regex$Companion(); - } - return Regex$Companion_instance; - } - Regex.$metadata$ = {kind: Kind_CLASS, simpleName: 'Regex', interfaces: []}; - function Regex_init(pattern, option, $this) { - $this = $this || Object.create(Regex.prototype); - Regex.call($this, pattern, setOf(option)); - return $this; - } - function Regex_init_0(pattern, $this) { - $this = $this || Object.create(Regex.prototype); - Regex.call($this, pattern, emptySet()); - return $this; - } - function Regex_0(pattern, option) { - return new Regex(pattern, setOf(option)); - } - function Regex_1(pattern) { - return new Regex(pattern, emptySet()); - } - function findNext$ObjectLiteral(closure$match, this$findNext, closure$input, closure$range) { - this.closure$match = closure$match; - this.this$findNext = this$findNext; - this.closure$input = closure$input; - this.closure$range = closure$range; - this.range_co6b9w$_0 = closure$range; - this.groups_qcaztb$_0 = new findNext$ObjectLiteral$groups$ObjectLiteral(closure$match); - this.groupValues__0 = null; - } - Object.defineProperty(findNext$ObjectLiteral.prototype, 'range', {get: function () { - return this.range_co6b9w$_0; - }}); - Object.defineProperty(findNext$ObjectLiteral.prototype, 'value', {get: function () { - return ensureNotNull(this.closure$match[0]); - }}); - Object.defineProperty(findNext$ObjectLiteral.prototype, 'groups', {get: function () { - return this.groups_qcaztb$_0; - }}); - function findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral(closure$match) { - this.closure$match = closure$match; - AbstractList.call(this); - } - Object.defineProperty(findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.prototype, 'size', {get: function () { - return this.closure$match.length; - }}); - findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.prototype.get_za3lpa$ = function (index) { - var tmp$; - return (tmp$ = this.closure$match[index]) != null ? tmp$ : ''; - }; - findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractList]}; - Object.defineProperty(findNext$ObjectLiteral.prototype, 'groupValues', {get: function () { - if (this.groupValues__0 == null) { - this.groupValues__0 = new findNext$ObjectLiteral$get_findNext$ObjectLiteral$groupValues$ObjectLiteral(this.closure$match); - } - return ensureNotNull(this.groupValues__0); - }}); - findNext$ObjectLiteral.prototype.next = function () { - return findNext(this.this$findNext, this.closure$input, this.closure$range.isEmpty() ? this.closure$range.start + 1 | 0 : this.closure$range.endInclusive + 1 | 0); - }; - function findNext$ObjectLiteral$groups$ObjectLiteral(closure$match) { - this.closure$match = closure$match; - AbstractCollection.call(this); - } - Object.defineProperty(findNext$ObjectLiteral$groups$ObjectLiteral.prototype, 'size', {get: function () { - return this.closure$match.length; - }}); - function findNext$ObjectLiteral$groups$ObjectLiteral$iterator$lambda(this$) { - return function (it) { - return this$.get_za3lpa$(it); - }; - } - findNext$ObjectLiteral$groups$ObjectLiteral.prototype.iterator = function () { - return map_10(asSequence_8(get_indices_8(this)), findNext$ObjectLiteral$groups$ObjectLiteral$iterator$lambda(this)).iterator(); - }; - findNext$ObjectLiteral$groups$ObjectLiteral.prototype.get_za3lpa$ = function (index) { - var tmp$; - return (tmp$ = this.closure$match[index]) != null ? new MatchGroup(tmp$) : null; - }; - findNext$ObjectLiteral$groups$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractCollection, MatchGroupCollection]}; - findNext$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [MatchResult]}; - function findNext($receiver, input, from) { - $receiver.lastIndex = from; - var match = $receiver.exec(input); - if (match == null) - return null; - var range = new IntRange(match.index, $receiver.lastIndex - 1 | 0); - return new findNext$ObjectLiteral(match, $receiver, input, range); - } - function reset($receiver) { - $receiver.lastIndex = 0; - } - var get_0 = defineInlineFunction('kotlin.kotlin.js.get_kmxd4d$', function ($receiver, index) { - return $receiver[index]; - }); - var asArray = defineInlineFunction('kotlin.kotlin.js.asArray_tgewol$', function ($receiver) { - return $receiver; - }); - function ConstrainedOnceSequence(sequence) { - this.sequenceRef_0 = sequence; - } - ConstrainedOnceSequence.prototype.iterator = function () { - var tmp$; - tmp$ = this.sequenceRef_0; - if (tmp$ == null) { - throw IllegalStateException_init_0('This sequence can be consumed only once.'); - } - var sequence = tmp$; - this.sequenceRef_0 = null; - return sequence.iterator(); - }; - ConstrainedOnceSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'ConstrainedOnceSequence', interfaces: [Sequence]}; - function String_1(chars) { - var tmp$; - var result = ''; - for (tmp$ = 0; tmp$ !== chars.length; ++tmp$) { - var char = unboxChar(chars[tmp$]); - result += String.fromCharCode(char); - } - return result; - } - function String_2(chars, offset, length) { - var tmp$; - if (offset < 0 || length < 0 || (chars.length - offset | 0) < length) - throw new IndexOutOfBoundsException('size: ' + chars.length + '; offset: ' + offset + '; length: ' + length); - var result = ''; - tmp$ = offset + length | 0; - for (var index = offset; index < tmp$; index++) { - result += String.fromCharCode(chars[index]); - } - return result; - } - var toUpperCase_0 = defineInlineFunction('kotlin.kotlin.text.toUpperCase_pdl1vz$', function ($receiver) { - return $receiver.toUpperCase(); - }); - var toLowerCase_0 = defineInlineFunction('kotlin.kotlin.text.toLowerCase_pdl1vz$', function ($receiver) { - return $receiver.toLowerCase(); - }); - var nativeIndexOf = defineInlineFunction('kotlin.kotlin.text.nativeIndexOf_qhc31e$', function ($receiver, str, fromIndex) { - return $receiver.indexOf(str, fromIndex); - }); - var nativeLastIndexOf = defineInlineFunction('kotlin.kotlin.text.nativeLastIndexOf_qhc31e$', function ($receiver, str, fromIndex) { - return $receiver.lastIndexOf(str, fromIndex); - }); - var nativeStartsWith = defineInlineFunction('kotlin.kotlin.text.nativeStartsWith_qhc31e$', function ($receiver, s, position) { - return $receiver.startsWith(s, position); - }); - var nativeEndsWith = defineInlineFunction('kotlin.kotlin.text.nativeEndsWith_7azisw$', function ($receiver, s) { - return $receiver.endsWith(s); - }); - var substring = defineInlineFunction('kotlin.kotlin.text.substring_6ic1pp$', function ($receiver, startIndex) { - return $receiver.substring(startIndex); - }); - var substring_0 = defineInlineFunction('kotlin.kotlin.text.substring_qgyqat$', function ($receiver, startIndex, endIndex) { - return $receiver.substring(startIndex, endIndex); - }); - var concat_0 = defineInlineFunction('kotlin.kotlin.text.concat_rjktp$', function ($receiver, str) { - return $receiver.concat(str); - }); - var match = defineInlineFunction('kotlin.kotlin.text.match_rjktp$', function ($receiver, regex) { - return $receiver.match(regex); - }); - var nativeReplace = defineInlineFunction('kotlin.kotlin.text.nativeReplace_qmc7pb$', function ($receiver, pattern, replacement) { - return $receiver.replace(pattern, replacement); - }); - function compareTo($receiver, other, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (ignoreCase) { - var n1 = $receiver.length; - var n2 = other.length; - var min = Math_0.min(n1, n2); - if (min === 0) - return n1 - n2 | 0; - var start = 0; - while (true) { - var end = Math_0.min(start + 16 | 0, min); - var s1 = $receiver.substring(start, end); - var s2 = other.substring(start, end); - if (!equals(s1, s2)) { - s1 = s1.toUpperCase(); - s2 = s2.toUpperCase(); - if (!equals(s1, s2)) { - s1 = s1.toLowerCase(); - s2 = s2.toLowerCase(); - if (!equals(s1, s2)) { - return Kotlin.compareTo(s1, s2); - } - } - } - if (end === min) - break; - start = end; - } - return n1 - n2 | 0; - } - else { - return Kotlin.compareTo($receiver, other); - } - } - function STRING_CASE_INSENSITIVE_ORDER$lambda(a, b) { - return compareTo(a, b, true); - } - var STRING_CASE_INSENSITIVE_ORDER; - function get_CASE_INSENSITIVE_ORDER($receiver) { - return STRING_CASE_INSENSITIVE_ORDER; - } - var nativeIndexOf_0 = defineInlineFunction('kotlin.kotlin.text.nativeIndexOf_p4qy6f$', function ($receiver, ch, fromIndex) { - return $receiver.indexOf(String.fromCharCode(ch), fromIndex); - }); - var nativeLastIndexOf_0 = defineInlineFunction('kotlin.kotlin.text.nativeLastIndexOf_p4qy6f$', function ($receiver, ch, fromIndex) { - return $receiver.lastIndexOf(String.fromCharCode(ch), fromIndex); - }); - function startsWith($receiver, prefix, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase) { - return $receiver.startsWith(prefix, 0); - } - else - return regionMatches($receiver, 0, prefix, 0, prefix.length, ignoreCase); - } - function startsWith_0($receiver, prefix, startIndex, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase) { - return $receiver.startsWith(prefix, startIndex); - } - else - return regionMatches($receiver, startIndex, prefix, 0, prefix.length, ignoreCase); - } - function endsWith($receiver, suffix, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase) { - return $receiver.endsWith(suffix); - } - else - return regionMatches($receiver, $receiver.length - suffix.length | 0, suffix, 0, suffix.length, ignoreCase); - } - function matches($receiver, regex) { - var result = $receiver.match(regex); - return result != null && result.length !== 0; - } - function isBlank($receiver) { - return $receiver.length === 0 || matches(typeof $receiver === 'string' ? $receiver : $receiver.toString(), '^[\\s\\xA0]+$'); - } - function equals_0($receiver, other, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - var tmp$; - if ($receiver == null) - tmp$ = other == null; - else { - var tmp$_0; - if (!ignoreCase) - tmp$_0 = equals($receiver, other); - else { - var tmp$_1 = other != null; - if (tmp$_1) { - tmp$_1 = equals($receiver.toLowerCase(), other.toLowerCase()); - } - tmp$_0 = tmp$_1; - } - tmp$ = tmp$_0; - } - return tmp$; - } - function regionMatches($receiver, thisOffset, other, otherOffset, length, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return regionMatchesImpl($receiver, thisOffset, other, otherOffset, length, ignoreCase); - } - function capitalize($receiver) { - return $receiver.length > 0 ? $receiver.substring(0, 1).toUpperCase() + $receiver.substring(1) : $receiver; - } - function decapitalize($receiver) { - return $receiver.length > 0 ? $receiver.substring(0, 1).toLowerCase() + $receiver.substring(1) : $receiver; - } - function repeat($receiver, n) { - var tmp$; - if (!(n >= 0)) { - var message = "Count 'n' must be non-negative, but was " + n + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - switch (n) { - case 0: - tmp$ = ''; - break; - case 1: - tmp$ = $receiver.toString(); - break; - default:var result = ''; - if (!($receiver.length === 0)) { - var s = $receiver.toString(); - var count = n; - while (true) { - if ((count & 1) === 1) { - result += s; - } - count = count >>> 1; - if (count === 0) { - break; - } - s += s; - } - } - - return result; - } - return tmp$; - } - function replace($receiver, oldValue, newValue, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return $receiver.replace(new RegExp(Regex$Companion_getInstance().escape_61zpoe$(oldValue), ignoreCase ? 'gi' : 'g'), Regex$Companion_getInstance().escapeReplacement_61zpoe$(newValue)); - } - function replace_0($receiver, oldChar, newChar, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return $receiver.replace(new RegExp(Regex$Companion_getInstance().escape_61zpoe$(String.fromCharCode(oldChar)), ignoreCase ? 'gi' : 'g'), String.fromCharCode(newChar)); - } - function replaceFirst($receiver, oldValue, newValue, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return $receiver.replace(new RegExp(Regex$Companion_getInstance().escape_61zpoe$(oldValue), ignoreCase ? 'i' : ''), Regex$Companion_getInstance().escapeReplacement_61zpoe$(newValue)); - } - function replaceFirst_0($receiver, oldChar, newChar, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return $receiver.replace(new RegExp(Regex$Companion_getInstance().escape_61zpoe$(String.fromCharCode(oldChar)), ignoreCase ? 'i' : ''), String.fromCharCode(newChar)); - } - function Appendable() { - } - Appendable.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Appendable', interfaces: []}; - function StringBuilder(content) { - if (content === void 0) - content = ''; - this.string_0 = content; - } - Object.defineProperty(StringBuilder.prototype, 'length', {get: function () { - return this.string_0.length; - }}); - StringBuilder.prototype.charCodeAt = function (index) { - return this.string_0.charCodeAt(index); - }; - StringBuilder.prototype.subSequence_vux9f0$ = function (startIndex, endIndex) { - return this.string_0.substring(startIndex, endIndex); - }; - StringBuilder.prototype.append_s8itvh$ = function (c) { - this.string_0 += String.fromCharCode(c); - return this; - }; - StringBuilder.prototype.append_gw00v9$ = function (csq) { - this.string_0 += toString(csq); - return this; - }; - StringBuilder.prototype.append_ezbsdh$ = function (csq, start, end) { - this.string_0 += toString(csq).substring(start, end); - return this; - }; - StringBuilder.prototype.append_s8jyv4$ = function (obj) { - this.string_0 += toString(obj); - return this; - }; - StringBuilder.prototype.reverse = function () { - this.string_0 = this.string_0.split('').reverse().join(''); - return this; - }; - StringBuilder.prototype.clear = function () { - this.string_0 = ''; - return this; - }; - StringBuilder.prototype.toString = function () { - return this.string_0; - }; - StringBuilder.$metadata$ = {kind: Kind_CLASS, simpleName: 'StringBuilder', interfaces: [CharSequence, Appendable]}; - function StringBuilder_init(capacity, $this) { - $this = $this || Object.create(StringBuilder.prototype); - StringBuilder_init_1($this); - return $this; - } - function StringBuilder_init_0(content, $this) { - $this = $this || Object.create(StringBuilder.prototype); - StringBuilder.call($this, content.toString()); - return $this; - } - function StringBuilder_init_1($this) { - $this = $this || Object.create(StringBuilder.prototype); - StringBuilder.call($this, ''); - return $this; - } - var clear_0 = defineInlineFunction('kotlin.kotlin.text.clear_dn5lc7$', function ($receiver) { - return $receiver.clear(); - }); - var WebGLContextAttributes = defineInlineFunction('kotlin.org.khronos.webgl.WebGLContextAttributes_2tn698$', function (alpha, depth, stencil, antialias, premultipliedAlpha, preserveDrawingBuffer, preferLowPowerToHighPerformance, failIfMajorPerformanceCaveat) { - if (alpha === void 0) - alpha = true; - if (depth === void 0) - depth = true; - if (stencil === void 0) - stencil = false; - if (antialias === void 0) - antialias = true; - if (premultipliedAlpha === void 0) - premultipliedAlpha = true; - if (preserveDrawingBuffer === void 0) - preserveDrawingBuffer = false; - if (preferLowPowerToHighPerformance === void 0) - preferLowPowerToHighPerformance = false; - if (failIfMajorPerformanceCaveat === void 0) - failIfMajorPerformanceCaveat = false; - var o = {}; - o['alpha'] = alpha; - o['depth'] = depth; - o['stencil'] = stencil; - o['antialias'] = antialias; - o['premultipliedAlpha'] = premultipliedAlpha; - o['preserveDrawingBuffer'] = preserveDrawingBuffer; - o['preferLowPowerToHighPerformance'] = preferLowPowerToHighPerformance; - o['failIfMajorPerformanceCaveat'] = failIfMajorPerformanceCaveat; - return o; - }); - var WebGLContextEventInit = defineInlineFunction('kotlin.org.khronos.webgl.WebGLContextEventInit_cndsqx$', function (statusMessage, bubbles, cancelable, composed) { - if (statusMessage === void 0) - statusMessage = ''; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['statusMessage'] = statusMessage; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var get_1 = defineInlineFunction('kotlin.org.khronos.webgl.get_xri1zq$', function ($receiver, index) { - return $receiver[index]; - }); - var set_0 = defineInlineFunction('kotlin.org.khronos.webgl.set_wq71gh$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_2 = defineInlineFunction('kotlin.org.khronos.webgl.get_9zp3y9$', function ($receiver, index) { - return $receiver[index]; - }); - var set_1 = defineInlineFunction('kotlin.org.khronos.webgl.set_amemmi$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_3 = defineInlineFunction('kotlin.org.khronos.webgl.get_2joiyx$', function ($receiver, index) { - return $receiver[index]; - }); - var set_2 = defineInlineFunction('kotlin.org.khronos.webgl.set_ttcilq$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_4 = defineInlineFunction('kotlin.org.khronos.webgl.get_cwlqq1$', function ($receiver, index) { - return $receiver[index]; - }); - var set_3 = defineInlineFunction('kotlin.org.khronos.webgl.set_3szanw$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_5 = defineInlineFunction('kotlin.org.khronos.webgl.get_vhpjqk$', function ($receiver, index) { - return $receiver[index]; - }); - var set_4 = defineInlineFunction('kotlin.org.khronos.webgl.set_vhgf5b$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_6 = defineInlineFunction('kotlin.org.khronos.webgl.get_6ngfjl$', function ($receiver, index) { - return $receiver[index]; - }); - var set_5 = defineInlineFunction('kotlin.org.khronos.webgl.set_yyuw59$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_7 = defineInlineFunction('kotlin.org.khronos.webgl.get_jzcbyy$', function ($receiver, index) { - return $receiver[index]; - }); - var set_6 = defineInlineFunction('kotlin.org.khronos.webgl.set_7aci94$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_8 = defineInlineFunction('kotlin.org.khronos.webgl.get_vvlk2q$', function ($receiver, index) { - return $receiver[index]; - }); - var set_7 = defineInlineFunction('kotlin.org.khronos.webgl.set_rpd3xf$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var get_9 = defineInlineFunction('kotlin.org.khronos.webgl.get_yg2kxp$', function ($receiver, index) { - return $receiver[index]; - }); - var set_8 = defineInlineFunction('kotlin.org.khronos.webgl.set_ogqgs1$', function ($receiver, index, value) { - $receiver[index] = value; - }); - var ClipboardEventInit = defineInlineFunction('kotlin.org.w3c.dom.clipboard.ClipboardEventInit_s22cuj$', function (clipboardData, bubbles, cancelable, composed) { - if (clipboardData === void 0) - clipboardData = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['clipboardData'] = clipboardData; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ClipboardPermissionDescriptor = defineInlineFunction('kotlin.org.w3c.dom.clipboard.ClipboardPermissionDescriptor_1v8dbw$', function (allowWithoutGesture) { - if (allowWithoutGesture === void 0) - allowWithoutGesture = false; - var o = {}; - o['allowWithoutGesture'] = allowWithoutGesture; - return o; - }); - var get_10 = defineInlineFunction('kotlin.org.w3c.dom.css.get_hzg8kz$', function ($receiver, index) { - return $receiver[index]; - }); - var get_11 = defineInlineFunction('kotlin.org.w3c.dom.css.get_vcm0yf$', function ($receiver, index) { - return $receiver[index]; - }); - var get_12 = defineInlineFunction('kotlin.org.w3c.dom.css.get_yovegz$', function ($receiver, index) { - return $receiver[index]; - }); - var get_13 = defineInlineFunction('kotlin.org.w3c.dom.css.get_nb2c3o$', function ($receiver, index) { - return $receiver[index]; - }); - var UIEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.UIEventInit_b3va2d$', function (view, detail, bubbles, cancelable, composed) { - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var FocusEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.FocusEventInit_4fuajv$', function (relatedTarget, view, detail, bubbles, cancelable, composed) { - if (relatedTarget === void 0) - relatedTarget = null; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['relatedTarget'] = relatedTarget; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var MouseEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.MouseEventInit_w16xh5$', function (screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { - if (screenX === void 0) - screenX = 0; - if (screenY === void 0) - screenY = 0; - if (clientX === void 0) - clientX = 0; - if (clientY === void 0) - clientY = 0; - if (button === void 0) - button = 0; - if (buttons === void 0) - buttons = 0; - if (relatedTarget === void 0) - relatedTarget = null; - if (ctrlKey === void 0) - ctrlKey = false; - if (shiftKey === void 0) - shiftKey = false; - if (altKey === void 0) - altKey = false; - if (metaKey === void 0) - metaKey = false; - if (modifierAltGraph === void 0) - modifierAltGraph = false; - if (modifierCapsLock === void 0) - modifierCapsLock = false; - if (modifierFn === void 0) - modifierFn = false; - if (modifierFnLock === void 0) - modifierFnLock = false; - if (modifierHyper === void 0) - modifierHyper = false; - if (modifierNumLock === void 0) - modifierNumLock = false; - if (modifierScrollLock === void 0) - modifierScrollLock = false; - if (modifierSuper === void 0) - modifierSuper = false; - if (modifierSymbol === void 0) - modifierSymbol = false; - if (modifierSymbolLock === void 0) - modifierSymbolLock = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['screenX'] = screenX; - o['screenY'] = screenY; - o['clientX'] = clientX; - o['clientY'] = clientY; - o['button'] = button; - o['buttons'] = buttons; - o['relatedTarget'] = relatedTarget; - o['ctrlKey'] = ctrlKey; - o['shiftKey'] = shiftKey; - o['altKey'] = altKey; - o['metaKey'] = metaKey; - o['modifierAltGraph'] = modifierAltGraph; - o['modifierCapsLock'] = modifierCapsLock; - o['modifierFn'] = modifierFn; - o['modifierFnLock'] = modifierFnLock; - o['modifierHyper'] = modifierHyper; - o['modifierNumLock'] = modifierNumLock; - o['modifierScrollLock'] = modifierScrollLock; - o['modifierSuper'] = modifierSuper; - o['modifierSymbol'] = modifierSymbol; - o['modifierSymbolLock'] = modifierSymbolLock; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var EventModifierInit = defineInlineFunction('kotlin.org.w3c.dom.events.EventModifierInit_d8w15x$', function (ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { - if (ctrlKey === void 0) - ctrlKey = false; - if (shiftKey === void 0) - shiftKey = false; - if (altKey === void 0) - altKey = false; - if (metaKey === void 0) - metaKey = false; - if (modifierAltGraph === void 0) - modifierAltGraph = false; - if (modifierCapsLock === void 0) - modifierCapsLock = false; - if (modifierFn === void 0) - modifierFn = false; - if (modifierFnLock === void 0) - modifierFnLock = false; - if (modifierHyper === void 0) - modifierHyper = false; - if (modifierNumLock === void 0) - modifierNumLock = false; - if (modifierScrollLock === void 0) - modifierScrollLock = false; - if (modifierSuper === void 0) - modifierSuper = false; - if (modifierSymbol === void 0) - modifierSymbol = false; - if (modifierSymbolLock === void 0) - modifierSymbolLock = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['ctrlKey'] = ctrlKey; - o['shiftKey'] = shiftKey; - o['altKey'] = altKey; - o['metaKey'] = metaKey; - o['modifierAltGraph'] = modifierAltGraph; - o['modifierCapsLock'] = modifierCapsLock; - o['modifierFn'] = modifierFn; - o['modifierFnLock'] = modifierFnLock; - o['modifierHyper'] = modifierHyper; - o['modifierNumLock'] = modifierNumLock; - o['modifierScrollLock'] = modifierScrollLock; - o['modifierSuper'] = modifierSuper; - o['modifierSymbol'] = modifierSymbol; - o['modifierSymbolLock'] = modifierSymbolLock; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var WheelEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.WheelEventInit_jungk3$', function (deltaX, deltaY, deltaZ, deltaMode, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { - if (deltaX === void 0) - deltaX = 0.0; - if (deltaY === void 0) - deltaY = 0.0; - if (deltaZ === void 0) - deltaZ = 0.0; - if (deltaMode === void 0) - deltaMode = 0; - if (screenX === void 0) - screenX = 0; - if (screenY === void 0) - screenY = 0; - if (clientX === void 0) - clientX = 0; - if (clientY === void 0) - clientY = 0; - if (button === void 0) - button = 0; - if (buttons === void 0) - buttons = 0; - if (relatedTarget === void 0) - relatedTarget = null; - if (ctrlKey === void 0) - ctrlKey = false; - if (shiftKey === void 0) - shiftKey = false; - if (altKey === void 0) - altKey = false; - if (metaKey === void 0) - metaKey = false; - if (modifierAltGraph === void 0) - modifierAltGraph = false; - if (modifierCapsLock === void 0) - modifierCapsLock = false; - if (modifierFn === void 0) - modifierFn = false; - if (modifierFnLock === void 0) - modifierFnLock = false; - if (modifierHyper === void 0) - modifierHyper = false; - if (modifierNumLock === void 0) - modifierNumLock = false; - if (modifierScrollLock === void 0) - modifierScrollLock = false; - if (modifierSuper === void 0) - modifierSuper = false; - if (modifierSymbol === void 0) - modifierSymbol = false; - if (modifierSymbolLock === void 0) - modifierSymbolLock = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['deltaX'] = deltaX; - o['deltaY'] = deltaY; - o['deltaZ'] = deltaZ; - o['deltaMode'] = deltaMode; - o['screenX'] = screenX; - o['screenY'] = screenY; - o['clientX'] = clientX; - o['clientY'] = clientY; - o['button'] = button; - o['buttons'] = buttons; - o['relatedTarget'] = relatedTarget; - o['ctrlKey'] = ctrlKey; - o['shiftKey'] = shiftKey; - o['altKey'] = altKey; - o['metaKey'] = metaKey; - o['modifierAltGraph'] = modifierAltGraph; - o['modifierCapsLock'] = modifierCapsLock; - o['modifierFn'] = modifierFn; - o['modifierFnLock'] = modifierFnLock; - o['modifierHyper'] = modifierHyper; - o['modifierNumLock'] = modifierNumLock; - o['modifierScrollLock'] = modifierScrollLock; - o['modifierSuper'] = modifierSuper; - o['modifierSymbol'] = modifierSymbol; - o['modifierSymbolLock'] = modifierSymbolLock; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var InputEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.InputEventInit_zb3n3s$', function (data, isComposing, view, detail, bubbles, cancelable, composed) { - if (data === void 0) - data = ''; - if (isComposing === void 0) - isComposing = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['data'] = data; - o['isComposing'] = isComposing; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var KeyboardEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.KeyboardEventInit_f1dyzo$', function (key, code, location, repeat, isComposing, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { - if (key === void 0) - key = ''; - if (code === void 0) - code = ''; - if (location === void 0) - location = 0; - if (repeat === void 0) - repeat = false; - if (isComposing === void 0) - isComposing = false; - if (ctrlKey === void 0) - ctrlKey = false; - if (shiftKey === void 0) - shiftKey = false; - if (altKey === void 0) - altKey = false; - if (metaKey === void 0) - metaKey = false; - if (modifierAltGraph === void 0) - modifierAltGraph = false; - if (modifierCapsLock === void 0) - modifierCapsLock = false; - if (modifierFn === void 0) - modifierFn = false; - if (modifierFnLock === void 0) - modifierFnLock = false; - if (modifierHyper === void 0) - modifierHyper = false; - if (modifierNumLock === void 0) - modifierNumLock = false; - if (modifierScrollLock === void 0) - modifierScrollLock = false; - if (modifierSuper === void 0) - modifierSuper = false; - if (modifierSymbol === void 0) - modifierSymbol = false; - if (modifierSymbolLock === void 0) - modifierSymbolLock = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['key'] = key; - o['code'] = code; - o['location'] = location; - o['repeat'] = repeat; - o['isComposing'] = isComposing; - o['ctrlKey'] = ctrlKey; - o['shiftKey'] = shiftKey; - o['altKey'] = altKey; - o['metaKey'] = metaKey; - o['modifierAltGraph'] = modifierAltGraph; - o['modifierCapsLock'] = modifierCapsLock; - o['modifierFn'] = modifierFn; - o['modifierFnLock'] = modifierFnLock; - o['modifierHyper'] = modifierHyper; - o['modifierNumLock'] = modifierNumLock; - o['modifierScrollLock'] = modifierScrollLock; - o['modifierSuper'] = modifierSuper; - o['modifierSymbol'] = modifierSymbol; - o['modifierSymbolLock'] = modifierSymbolLock; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var CompositionEventInit = defineInlineFunction('kotlin.org.w3c.dom.events.CompositionEventInit_d8ew9s$', function (data, view, detail, bubbles, cancelable, composed) { - if (data === void 0) - data = ''; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['data'] = data; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var get_14 = defineInlineFunction('kotlin.org.w3c.dom.get_faw09z$', function ($receiver, name) { - return $receiver[name]; - }); - var get_15 = defineInlineFunction('kotlin.org.w3c.dom.get_ewayf0$', function ($receiver, name) { - return $receiver[name]; - }); - var set_9 = defineInlineFunction('kotlin.org.w3c.dom.set_hw3ic1$', function ($receiver, index, option) { - $receiver[index] = option; - }); - var get_16 = defineInlineFunction('kotlin.org.w3c.dom.get_82muyz$', function ($receiver, name) { - return $receiver[name]; - }); - var set_10 = defineInlineFunction('kotlin.org.w3c.dom.set_itmgw7$', function ($receiver, name, value) { - $receiver[name] = value; - }); - var get_17 = defineInlineFunction('kotlin.org.w3c.dom.get_x9t80x$', function ($receiver, index) { - return $receiver[index]; - }); - var get_18 = defineInlineFunction('kotlin.org.w3c.dom.get_s80h6u$', function ($receiver, index) { - return $receiver[index]; - }); - var get_19 = defineInlineFunction('kotlin.org.w3c.dom.get_60td5e$', function ($receiver, index) { - return $receiver[index]; - }); - var get_20 = defineInlineFunction('kotlin.org.w3c.dom.get_5fk35t$', function ($receiver, index) { - return $receiver[index]; - }); - var TrackEventInit = defineInlineFunction('kotlin.org.w3c.dom.TrackEventInit_mfyf40$', function (track, bubbles, cancelable, composed) { - if (track === void 0) - track = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['track'] = track; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var get_21 = defineInlineFunction('kotlin.org.w3c.dom.get_o5xz3$', function ($receiver, index) { - return $receiver[index]; - }); - var get_22 = defineInlineFunction('kotlin.org.w3c.dom.get_ws6i9t$', function ($receiver, name) { - return $receiver[name]; - }); - var get_23 = defineInlineFunction('kotlin.org.w3c.dom.get_kaa3nr$', function ($receiver, index) { - return $receiver[index]; - }); - var set_11 = defineInlineFunction('kotlin.org.w3c.dom.set_9jj6cz$', function ($receiver, index, option) { - $receiver[index] = option; - }); - var RelatedEventInit = defineInlineFunction('kotlin.org.w3c.dom.RelatedEventInit_j4rtn8$', function (relatedTarget, bubbles, cancelable, composed) { - if (relatedTarget === void 0) - relatedTarget = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['relatedTarget'] = relatedTarget; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var AssignedNodesOptions = defineInlineFunction('kotlin.org.w3c.dom.AssignedNodesOptions_1v8dbw$', function (flatten) { - if (flatten === void 0) - flatten = false; - var o = {}; - o['flatten'] = flatten; - return o; - }); - var CanvasRenderingContext2DSettings = defineInlineFunction('kotlin.org.w3c.dom.CanvasRenderingContext2DSettings_1v8dbw$', function (alpha) { - if (alpha === void 0) - alpha = true; - var o = {}; - o['alpha'] = alpha; - return o; - }); - var HitRegionOptions = defineInlineFunction('kotlin.org.w3c.dom.HitRegionOptions_6a0gjt$', function (path, fillRule, id, parentID, cursor, control, label, role) { - if (path === void 0) - path = null; - if (fillRule === void 0) { - fillRule = 'nonzero'; - } - if (id === void 0) - id = ''; - if (parentID === void 0) - parentID = null; - if (cursor === void 0) - cursor = 'inherit'; - if (control === void 0) - control = null; - if (label === void 0) - label = null; - if (role === void 0) - role = null; - var o = {}; - o['path'] = path; - o['fillRule'] = fillRule; - o['id'] = id; - o['parentID'] = parentID; - o['cursor'] = cursor; - o['control'] = control; - o['label'] = label; - o['role'] = role; - return o; - }); - var ImageBitmapRenderingContextSettings = defineInlineFunction('kotlin.org.w3c.dom.ImageBitmapRenderingContextSettings_1v8dbw$', function (alpha) { - if (alpha === void 0) - alpha = true; - var o = {}; - o['alpha'] = alpha; - return o; - }); - var ElementDefinitionOptions = defineInlineFunction('kotlin.org.w3c.dom.ElementDefinitionOptions_pdl1vj$', function (extends_0) { - if (extends_0 === void 0) - extends_0 = undefined; - var o = {}; - o['extends'] = extends_0; - return o; - }); - var get_24 = defineInlineFunction('kotlin.org.w3c.dom.get_c2gw6m$', function ($receiver, index) { - return $receiver[index]; - }); - var DragEventInit = defineInlineFunction('kotlin.org.w3c.dom.DragEventInit_rb6t3c$', function (dataTransfer, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { - if (dataTransfer === void 0) - dataTransfer = null; - if (screenX === void 0) - screenX = 0; - if (screenY === void 0) - screenY = 0; - if (clientX === void 0) - clientX = 0; - if (clientY === void 0) - clientY = 0; - if (button === void 0) - button = 0; - if (buttons === void 0) - buttons = 0; - if (relatedTarget === void 0) - relatedTarget = null; - if (ctrlKey === void 0) - ctrlKey = false; - if (shiftKey === void 0) - shiftKey = false; - if (altKey === void 0) - altKey = false; - if (metaKey === void 0) - metaKey = false; - if (modifierAltGraph === void 0) - modifierAltGraph = false; - if (modifierCapsLock === void 0) - modifierCapsLock = false; - if (modifierFn === void 0) - modifierFn = false; - if (modifierFnLock === void 0) - modifierFnLock = false; - if (modifierHyper === void 0) - modifierHyper = false; - if (modifierNumLock === void 0) - modifierNumLock = false; - if (modifierScrollLock === void 0) - modifierScrollLock = false; - if (modifierSuper === void 0) - modifierSuper = false; - if (modifierSymbol === void 0) - modifierSymbol = false; - if (modifierSymbolLock === void 0) - modifierSymbolLock = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['dataTransfer'] = dataTransfer; - o['screenX'] = screenX; - o['screenY'] = screenY; - o['clientX'] = clientX; - o['clientY'] = clientY; - o['button'] = button; - o['buttons'] = buttons; - o['relatedTarget'] = relatedTarget; - o['ctrlKey'] = ctrlKey; - o['shiftKey'] = shiftKey; - o['altKey'] = altKey; - o['metaKey'] = metaKey; - o['modifierAltGraph'] = modifierAltGraph; - o['modifierCapsLock'] = modifierCapsLock; - o['modifierFn'] = modifierFn; - o['modifierFnLock'] = modifierFnLock; - o['modifierHyper'] = modifierHyper; - o['modifierNumLock'] = modifierNumLock; - o['modifierScrollLock'] = modifierScrollLock; - o['modifierSuper'] = modifierSuper; - o['modifierSymbol'] = modifierSymbol; - o['modifierSymbolLock'] = modifierSymbolLock; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var PopStateEventInit = defineInlineFunction('kotlin.org.w3c.dom.PopStateEventInit_m0in9k$', function (state, bubbles, cancelable, composed) { - if (state === void 0) - state = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['state'] = state; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var HashChangeEventInit = defineInlineFunction('kotlin.org.w3c.dom.HashChangeEventInit_pex3e4$', function (oldURL, newURL, bubbles, cancelable, composed) { - if (oldURL === void 0) - oldURL = ''; - if (newURL === void 0) - newURL = ''; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['oldURL'] = oldURL; - o['newURL'] = newURL; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var PageTransitionEventInit = defineInlineFunction('kotlin.org.w3c.dom.PageTransitionEventInit_bx6eq4$', function (persisted, bubbles, cancelable, composed) { - if (persisted === void 0) - persisted = false; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['persisted'] = persisted; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ErrorEventInit = defineInlineFunction('kotlin.org.w3c.dom.ErrorEventInit_k9ji8a$', function (message, filename, lineno, colno, error, bubbles, cancelable, composed) { - if (message === void 0) - message = ''; - if (filename === void 0) - filename = ''; - if (lineno === void 0) - lineno = 0; - if (colno === void 0) - colno = 0; - if (error === void 0) - error = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['message'] = message; - o['filename'] = filename; - o['lineno'] = lineno; - o['colno'] = colno; - o['error'] = error; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var PromiseRejectionEventInit = defineInlineFunction('kotlin.org.w3c.dom.PromiseRejectionEventInit_jhmgqd$', function (promise, reason, bubbles, cancelable, composed) { - if (reason === void 0) - reason = undefined; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['promise'] = promise; - o['reason'] = reason; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var get_25 = defineInlineFunction('kotlin.org.w3c.dom.get_l671a0$', function ($receiver, index) { - return $receiver[index]; - }); - var get_26 = defineInlineFunction('kotlin.org.w3c.dom.get_ldwsk8$', function ($receiver, name) { - return $receiver[name]; - }); - var get_27 = defineInlineFunction('kotlin.org.w3c.dom.get_iatcyr$', function ($receiver, index) { - return $receiver[index]; - }); - var get_28 = defineInlineFunction('kotlin.org.w3c.dom.get_usmy71$', function ($receiver, name) { - return $receiver[name]; - }); - var get_29 = defineInlineFunction('kotlin.org.w3c.dom.get_t3yadb$', function ($receiver, index) { - return $receiver[index]; - }); - var get_30 = defineInlineFunction('kotlin.org.w3c.dom.get_bempxb$', function ($receiver, name) { - return $receiver[name]; - }); - var ImageBitmapOptions = defineInlineFunction('kotlin.org.w3c.dom.ImageBitmapOptions_qp88pe$', function (imageOrientation, premultiplyAlpha, colorSpaceConversion, resizeWidth, resizeHeight, resizeQuality) { - if (imageOrientation === void 0) { - imageOrientation = 'none'; - } - if (premultiplyAlpha === void 0) { - premultiplyAlpha = 'default'; - } - if (colorSpaceConversion === void 0) { - colorSpaceConversion = 'default'; - } - if (resizeWidth === void 0) - resizeWidth = undefined; - if (resizeHeight === void 0) - resizeHeight = undefined; - if (resizeQuality === void 0) { - resizeQuality = 'low'; - } - var o = {}; - o['imageOrientation'] = imageOrientation; - o['premultiplyAlpha'] = premultiplyAlpha; - o['colorSpaceConversion'] = colorSpaceConversion; - o['resizeWidth'] = resizeWidth; - o['resizeHeight'] = resizeHeight; - o['resizeQuality'] = resizeQuality; - return o; - }); - var MessageEventInit = defineInlineFunction('kotlin.org.w3c.dom.MessageEventInit_146zbu$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { - if (data === void 0) - data = null; - if (origin === void 0) - origin = ''; - if (lastEventId === void 0) - lastEventId = ''; - if (source === void 0) - source = null; - if (ports === void 0) - ports = []; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['data'] = data; - o['origin'] = origin; - o['lastEventId'] = lastEventId; - o['source'] = source; - o['ports'] = ports; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var EventSourceInit = defineInlineFunction('kotlin.org.w3c.dom.EventSourceInit_1v8dbw$', function (withCredentials) { - if (withCredentials === void 0) - withCredentials = false; - var o = {}; - o['withCredentials'] = withCredentials; - return o; - }); - var CloseEventInit = defineInlineFunction('kotlin.org.w3c.dom.CloseEventInit_wdtuj7$', function (wasClean, code, reason, bubbles, cancelable, composed) { - if (wasClean === void 0) - wasClean = false; - if (code === void 0) - code = 0; - if (reason === void 0) - reason = ''; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['wasClean'] = wasClean; - o['code'] = code; - o['reason'] = reason; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var WorkerOptions = defineInlineFunction('kotlin.org.w3c.dom.WorkerOptions_sllxcl$', function (type, credentials) { - if (type === void 0) { - type = 'classic'; - } - if (credentials === void 0) { - credentials = 'omit'; - } - var o = {}; - o['type'] = type; - o['credentials'] = credentials; - return o; - }); - var get_31 = defineInlineFunction('kotlin.org.w3c.dom.get_bsm031$', function ($receiver, key) { - return $receiver[key]; - }); - var set_12 = defineInlineFunction('kotlin.org.w3c.dom.set_9wlwlb$', function ($receiver, key, value) { - $receiver[key] = value; - }); - var StorageEventInit = defineInlineFunction('kotlin.org.w3c.dom.StorageEventInit_asvzxz$', function (key, oldValue, newValue, url, storageArea, bubbles, cancelable, composed) { - if (key === void 0) - key = null; - if (oldValue === void 0) - oldValue = null; - if (newValue === void 0) - newValue = null; - if (url === void 0) - url = ''; - if (storageArea === void 0) - storageArea = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['key'] = key; - o['oldValue'] = oldValue; - o['newValue'] = newValue; - o['url'] = url; - o['storageArea'] = storageArea; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var EventInit = defineInlineFunction('kotlin.org.w3c.dom.EventInit_uic7jo$', function (bubbles, cancelable, composed) { - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var CustomEventInit = defineInlineFunction('kotlin.org.w3c.dom.CustomEventInit_m0in9k$', function (detail, bubbles, cancelable, composed) { - if (detail === void 0) - detail = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var EventListenerOptions = defineInlineFunction('kotlin.org.w3c.dom.EventListenerOptions_1v8dbw$', function (capture) { - if (capture === void 0) - capture = false; - var o = {}; - o['capture'] = capture; - return o; - }); - var AddEventListenerOptions = defineInlineFunction('kotlin.org.w3c.dom.AddEventListenerOptions_uic7jo$', function (passive, once, capture) { - if (passive === void 0) - passive = false; - if (once === void 0) - once = false; - if (capture === void 0) - capture = false; - var o = {}; - o['passive'] = passive; - o['once'] = once; - o['capture'] = capture; - return o; - }); - var get_32 = defineInlineFunction('kotlin.org.w3c.dom.get_axj990$', function ($receiver, index) { - return $receiver[index]; - }); - var get_33 = defineInlineFunction('kotlin.org.w3c.dom.get_l6emzv$', function ($receiver, index) { - return $receiver[index]; - }); - var get_34 = defineInlineFunction('kotlin.org.w3c.dom.get_kzcjh1$', function ($receiver, name) { - return $receiver[name]; - }); - var MutationObserverInit = defineInlineFunction('kotlin.org.w3c.dom.MutationObserverInit_c5um2n$', function (childList, attributes, characterData, subtree, attributeOldValue, characterDataOldValue, attributeFilter) { - if (childList === void 0) - childList = false; - if (attributes === void 0) - attributes = undefined; - if (characterData === void 0) - characterData = undefined; - if (subtree === void 0) - subtree = false; - if (attributeOldValue === void 0) - attributeOldValue = undefined; - if (characterDataOldValue === void 0) - characterDataOldValue = undefined; - if (attributeFilter === void 0) - attributeFilter = undefined; - var o = {}; - o['childList'] = childList; - o['attributes'] = attributes; - o['characterData'] = characterData; - o['subtree'] = subtree; - o['attributeOldValue'] = attributeOldValue; - o['characterDataOldValue'] = characterDataOldValue; - o['attributeFilter'] = attributeFilter; - return o; - }); - var GetRootNodeOptions = defineInlineFunction('kotlin.org.w3c.dom.GetRootNodeOptions_1v8dbw$', function (composed) { - if (composed === void 0) - composed = false; - var o = {}; - o['composed'] = composed; - return o; - }); - var ElementCreationOptions = defineInlineFunction('kotlin.org.w3c.dom.ElementCreationOptions_pdl1vj$', function (is_) { - if (is_ === void 0) - is_ = undefined; - var o = {}; - o['is'] = is_; - return o; - }); - var ShadowRootInit = defineInlineFunction('kotlin.org.w3c.dom.ShadowRootInit_16lofx$', function (mode) { - var o = {}; - o['mode'] = mode; - return o; - }); - var get_35 = defineInlineFunction('kotlin.org.w3c.dom.get_rjm7cj$', function ($receiver, index) { - return $receiver[index]; - }); - var get_36 = defineInlineFunction('kotlin.org.w3c.dom.get_oszak3$', function ($receiver, qualifiedName) { - return $receiver[qualifiedName]; - }); - var get_37 = defineInlineFunction('kotlin.org.w3c.dom.get_o72cm9$', function ($receiver, index) { - return $receiver[index]; - }); - var DOMPointInit = defineInlineFunction('kotlin.org.w3c.dom.DOMPointInit_rd1tgs$', function (x, y, z, w) { - if (x === void 0) - x = 0.0; - if (y === void 0) - y = 0.0; - if (z === void 0) - z = 0.0; - if (w === void 0) - w = 1.0; - var o = {}; - o['x'] = x; - o['y'] = y; - o['z'] = z; - o['w'] = w; - return o; - }); - var DOMRectInit = defineInlineFunction('kotlin.org.w3c.dom.DOMRectInit_rd1tgs$', function (x, y, width, height) { - if (x === void 0) - x = 0.0; - if (y === void 0) - y = 0.0; - if (width === void 0) - width = 0.0; - if (height === void 0) - height = 0.0; - var o = {}; - o['x'] = x; - o['y'] = y; - o['width'] = width; - o['height'] = height; - return o; - }); - var get_38 = defineInlineFunction('kotlin.org.w3c.dom.get_p225ue$', function ($receiver, index) { - return $receiver[index]; - }); - var ScrollOptions = defineInlineFunction('kotlin.org.w3c.dom.ScrollOptions_pa3cpp$', function (behavior) { - if (behavior === void 0) { - behavior = 'auto'; - } - var o = {}; - o['behavior'] = behavior; - return o; - }); - var ScrollToOptions = defineInlineFunction('kotlin.org.w3c.dom.ScrollToOptions_5ufhvn$', function (left, top, behavior) { - if (left === void 0) - left = undefined; - if (top === void 0) - top = undefined; - if (behavior === void 0) { - behavior = 'auto'; - } - var o = {}; - o['left'] = left; - o['top'] = top; - o['behavior'] = behavior; - return o; - }); - var MediaQueryListEventInit = defineInlineFunction('kotlin.org.w3c.dom.MediaQueryListEventInit_vkedzz$', function (media, matches, bubbles, cancelable, composed) { - if (media === void 0) - media = ''; - if (matches === void 0) - matches = false; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['media'] = media; - o['matches'] = matches; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ScrollIntoViewOptions = defineInlineFunction('kotlin.org.w3c.dom.ScrollIntoViewOptions_2qltkz$', function (block, inline, behavior) { - if (block === void 0) { - block = 'center'; - } - if (inline === void 0) { - inline = 'center'; - } - if (behavior === void 0) { - behavior = 'auto'; - } - var o = {}; - o['block'] = block; - o['inline'] = inline; - o['behavior'] = behavior; - return o; - }); - var BoxQuadOptions = defineInlineFunction('kotlin.org.w3c.dom.BoxQuadOptions_tnnyad$', function (box, relativeTo) { - if (box === void 0) { - box = 'border'; - } - if (relativeTo === void 0) - relativeTo = undefined; - var o = {}; - o['box'] = box; - o['relativeTo'] = relativeTo; - return o; - }); - var ConvertCoordinateOptions = defineInlineFunction('kotlin.org.w3c.dom.ConvertCoordinateOptions_8oj3e4$', function (fromBox, toBox) { - if (fromBox === void 0) { - fromBox = 'border'; - } - if (toBox === void 0) { - toBox = 'border'; - } - var o = {}; - o['fromBox'] = fromBox; - o['toBox'] = toBox; - return o; - }); - var get_LOADING = defineInlineFunction('kotlin.org.w3c.dom.get_LOADING_cuyr1n$', function ($receiver) { - return 'loading'; - }); - var get_INTERACTIVE = defineInlineFunction('kotlin.org.w3c.dom.get_INTERACTIVE_cuyr1n$', function ($receiver) { - return 'interactive'; - }); - var get_COMPLETE = defineInlineFunction('kotlin.org.w3c.dom.get_COMPLETE_cuyr1n$', function ($receiver) { - return 'complete'; - }); - var get_EMPTY = defineInlineFunction('kotlin.org.w3c.dom.get_EMPTY_k3kzzn$', function ($receiver) { - return ''; - }); - var get_MAYBE = defineInlineFunction('kotlin.org.w3c.dom.get_MAYBE_k3kzzn$', function ($receiver) { - return 'maybe'; - }); - var get_PROBABLY = defineInlineFunction('kotlin.org.w3c.dom.get_PROBABLY_k3kzzn$', function ($receiver) { - return 'probably'; - }); - var get_DISABLED = defineInlineFunction('kotlin.org.w3c.dom.get_DISABLED_ygmcel$', function ($receiver) { - return 'disabled'; - }); - var get_HIDDEN = defineInlineFunction('kotlin.org.w3c.dom.get_HIDDEN_ygmcel$', function ($receiver) { - return 'hidden'; - }); - var get_SHOWING = defineInlineFunction('kotlin.org.w3c.dom.get_SHOWING_ygmcel$', function ($receiver) { - return 'showing'; - }); - var get_SUBTITLES = defineInlineFunction('kotlin.org.w3c.dom.get_SUBTITLES_fw7o78$', function ($receiver) { - return 'subtitles'; - }); - var get_CAPTIONS = defineInlineFunction('kotlin.org.w3c.dom.get_CAPTIONS_fw7o78$', function ($receiver) { - return 'captions'; - }); - var get_DESCRIPTIONS = defineInlineFunction('kotlin.org.w3c.dom.get_DESCRIPTIONS_fw7o78$', function ($receiver) { - return 'descriptions'; - }); - var get_CHAPTERS = defineInlineFunction('kotlin.org.w3c.dom.get_CHAPTERS_fw7o78$', function ($receiver) { - return 'chapters'; - }); - var get_METADATA = defineInlineFunction('kotlin.org.w3c.dom.get_METADATA_fw7o78$', function ($receiver) { - return 'metadata'; - }); - var get_SELECT = defineInlineFunction('kotlin.org.w3c.dom.get_SELECT_efic67$', function ($receiver) { - return 'select'; - }); - var get_START = defineInlineFunction('kotlin.org.w3c.dom.get_START_efic67$', function ($receiver) { - return 'start'; - }); - var get_END = defineInlineFunction('kotlin.org.w3c.dom.get_END_efic67$', function ($receiver) { - return 'end'; - }); - var get_PRESERVE = defineInlineFunction('kotlin.org.w3c.dom.get_PRESERVE_efic67$', function ($receiver) { - return 'preserve'; - }); - var get_NONZERO = defineInlineFunction('kotlin.org.w3c.dom.get_NONZERO_mhbikd$', function ($receiver) { - return 'nonzero'; - }); - var get_EVENODD = defineInlineFunction('kotlin.org.w3c.dom.get_EVENODD_mhbikd$', function ($receiver) { - return 'evenodd'; - }); - var get_LOW = defineInlineFunction('kotlin.org.w3c.dom.get_LOW_lt2gtk$', function ($receiver) { - return 'low'; - }); - var get_MEDIUM = defineInlineFunction('kotlin.org.w3c.dom.get_MEDIUM_lt2gtk$', function ($receiver) { - return 'medium'; - }); - var get_HIGH = defineInlineFunction('kotlin.org.w3c.dom.get_HIGH_lt2gtk$', function ($receiver) { - return 'high'; - }); - var get_BUTT = defineInlineFunction('kotlin.org.w3c.dom.get_BUTT_w26v20$', function ($receiver) { - return 'butt'; - }); - var get_ROUND = defineInlineFunction('kotlin.org.w3c.dom.get_ROUND_w26v20$', function ($receiver) { - return 'round'; - }); - var get_SQUARE = defineInlineFunction('kotlin.org.w3c.dom.get_SQUARE_w26v20$', function ($receiver) { - return 'square'; - }); - var get_ROUND_0 = defineInlineFunction('kotlin.org.w3c.dom.get_ROUND_1xtghu$', function ($receiver) { - return 'round'; - }); - var get_BEVEL = defineInlineFunction('kotlin.org.w3c.dom.get_BEVEL_1xtghu$', function ($receiver) { - return 'bevel'; - }); - var get_MITER = defineInlineFunction('kotlin.org.w3c.dom.get_MITER_1xtghu$', function ($receiver) { - return 'miter'; - }); - var get_START_0 = defineInlineFunction('kotlin.org.w3c.dom.get_START_hbi5si$', function ($receiver) { - return 'start'; - }); - var get_END_0 = defineInlineFunction('kotlin.org.w3c.dom.get_END_hbi5si$', function ($receiver) { - return 'end'; - }); - var get_LEFT = defineInlineFunction('kotlin.org.w3c.dom.get_LEFT_hbi5si$', function ($receiver) { - return 'left'; - }); - var get_RIGHT = defineInlineFunction('kotlin.org.w3c.dom.get_RIGHT_hbi5si$', function ($receiver) { - return 'right'; - }); - var get_CENTER = defineInlineFunction('kotlin.org.w3c.dom.get_CENTER_hbi5si$', function ($receiver) { - return 'center'; - }); - var get_TOP = defineInlineFunction('kotlin.org.w3c.dom.get_TOP_oz2y96$', function ($receiver) { - return 'top'; - }); - var get_HANGING = defineInlineFunction('kotlin.org.w3c.dom.get_HANGING_oz2y96$', function ($receiver) { - return 'hanging'; - }); - var get_MIDDLE = defineInlineFunction('kotlin.org.w3c.dom.get_MIDDLE_oz2y96$', function ($receiver) { - return 'middle'; - }); - var get_ALPHABETIC = defineInlineFunction('kotlin.org.w3c.dom.get_ALPHABETIC_oz2y96$', function ($receiver) { - return 'alphabetic'; - }); - var get_IDEOGRAPHIC = defineInlineFunction('kotlin.org.w3c.dom.get_IDEOGRAPHIC_oz2y96$', function ($receiver) { - return 'ideographic'; - }); - var get_BOTTOM = defineInlineFunction('kotlin.org.w3c.dom.get_BOTTOM_oz2y96$', function ($receiver) { - return 'bottom'; - }); - var get_LTR = defineInlineFunction('kotlin.org.w3c.dom.get_LTR_qxot9j$', function ($receiver) { - return 'ltr'; - }); - var get_RTL = defineInlineFunction('kotlin.org.w3c.dom.get_RTL_qxot9j$', function ($receiver) { - return 'rtl'; - }); - var get_INHERIT = defineInlineFunction('kotlin.org.w3c.dom.get_INHERIT_qxot9j$', function ($receiver) { - return 'inherit'; - }); - var get_AUTO = defineInlineFunction('kotlin.org.w3c.dom.get_AUTO_huqvoj$', function ($receiver) { - return 'auto'; - }); - var get_MANUAL = defineInlineFunction('kotlin.org.w3c.dom.get_MANUAL_huqvoj$', function ($receiver) { - return 'manual'; - }); - var get_NONE = defineInlineFunction('kotlin.org.w3c.dom.get_NONE_xgljrz$', function ($receiver) { - return 'none'; - }); - var get_FLIPY = defineInlineFunction('kotlin.org.w3c.dom.get_FLIPY_xgljrz$', function ($receiver) { - return 'flipY'; - }); - var get_NONE_0 = defineInlineFunction('kotlin.org.w3c.dom.get_NONE_b5608t$', function ($receiver) { - return 'none'; - }); - var get_PREMULTIPLY = defineInlineFunction('kotlin.org.w3c.dom.get_PREMULTIPLY_b5608t$', function ($receiver) { - return 'premultiply'; - }); - var get_DEFAULT = defineInlineFunction('kotlin.org.w3c.dom.get_DEFAULT_b5608t$', function ($receiver) { - return 'default'; - }); - var get_NONE_1 = defineInlineFunction('kotlin.org.w3c.dom.get_NONE_xqeuit$', function ($receiver) { - return 'none'; - }); - var get_DEFAULT_0 = defineInlineFunction('kotlin.org.w3c.dom.get_DEFAULT_xqeuit$', function ($receiver) { - return 'default'; - }); - var get_PIXELATED = defineInlineFunction('kotlin.org.w3c.dom.get_PIXELATED_32fsn1$', function ($receiver) { - return 'pixelated'; - }); - var get_LOW_0 = defineInlineFunction('kotlin.org.w3c.dom.get_LOW_32fsn1$', function ($receiver) { - return 'low'; - }); - var get_MEDIUM_0 = defineInlineFunction('kotlin.org.w3c.dom.get_MEDIUM_32fsn1$', function ($receiver) { - return 'medium'; - }); - var get_HIGH_0 = defineInlineFunction('kotlin.org.w3c.dom.get_HIGH_32fsn1$', function ($receiver) { - return 'high'; - }); - var get_BLOB = defineInlineFunction('kotlin.org.w3c.dom.get_BLOB_qxle9l$', function ($receiver) { - return 'blob'; - }); - var get_ARRAYBUFFER = defineInlineFunction('kotlin.org.w3c.dom.get_ARRAYBUFFER_qxle9l$', function ($receiver) { - return 'arraybuffer'; - }); - var get_CLASSIC = defineInlineFunction('kotlin.org.w3c.dom.get_CLASSIC_xc77to$', function ($receiver) { - return 'classic'; - }); - var get_MODULE = defineInlineFunction('kotlin.org.w3c.dom.get_MODULE_xc77to$', function ($receiver) { - return 'module'; - }); - var get_OPEN = defineInlineFunction('kotlin.org.w3c.dom.get_OPEN_knhupb$', function ($receiver) { - return 'open'; - }); - var get_CLOSED = defineInlineFunction('kotlin.org.w3c.dom.get_CLOSED_knhupb$', function ($receiver) { - return 'closed'; - }); - var get_AUTO_0 = defineInlineFunction('kotlin.org.w3c.dom.get_AUTO_gi1pud$', function ($receiver) { - return 'auto'; - }); - var get_INSTANT = defineInlineFunction('kotlin.org.w3c.dom.get_INSTANT_gi1pud$', function ($receiver) { - return 'instant'; - }); - var get_SMOOTH = defineInlineFunction('kotlin.org.w3c.dom.get_SMOOTH_gi1pud$', function ($receiver) { - return 'smooth'; - }); - var get_START_1 = defineInlineFunction('kotlin.org.w3c.dom.get_START_ltkif$', function ($receiver) { - return 'start'; - }); - var get_CENTER_0 = defineInlineFunction('kotlin.org.w3c.dom.get_CENTER_ltkif$', function ($receiver) { - return 'center'; - }); - var get_END_1 = defineInlineFunction('kotlin.org.w3c.dom.get_END_ltkif$', function ($receiver) { - return 'end'; - }); - var get_NEAREST = defineInlineFunction('kotlin.org.w3c.dom.get_NEAREST_ltkif$', function ($receiver) { - return 'nearest'; - }); - var get_MARGIN = defineInlineFunction('kotlin.org.w3c.dom.get_MARGIN_eb1l8y$', function ($receiver) { - return 'margin'; - }); - var get_BORDER = defineInlineFunction('kotlin.org.w3c.dom.get_BORDER_eb1l8y$', function ($receiver) { - return 'border'; - }); - var get_PADDING = defineInlineFunction('kotlin.org.w3c.dom.get_PADDING_eb1l8y$', function ($receiver) { - return 'padding'; - }); - var get_CONTENT = defineInlineFunction('kotlin.org.w3c.dom.get_CONTENT_eb1l8y$', function ($receiver) { - return 'content'; - }); - var MediaTrackSupportedConstraints = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaTrackSupportedConstraints_ntfy24$', function (width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId) { - if (width === void 0) - width = true; - if (height === void 0) - height = true; - if (aspectRatio === void 0) - aspectRatio = true; - if (frameRate === void 0) - frameRate = true; - if (facingMode === void 0) - facingMode = true; - if (resizeMode === void 0) - resizeMode = true; - if (volume === void 0) - volume = true; - if (sampleRate === void 0) - sampleRate = true; - if (sampleSize === void 0) - sampleSize = true; - if (echoCancellation === void 0) - echoCancellation = true; - if (autoGainControl === void 0) - autoGainControl = true; - if (noiseSuppression === void 0) - noiseSuppression = true; - if (latency === void 0) - latency = true; - if (channelCount === void 0) - channelCount = true; - if (deviceId === void 0) - deviceId = true; - if (groupId === void 0) - groupId = true; - var o = {}; - o['width'] = width; - o['height'] = height; - o['aspectRatio'] = aspectRatio; - o['frameRate'] = frameRate; - o['facingMode'] = facingMode; - o['resizeMode'] = resizeMode; - o['volume'] = volume; - o['sampleRate'] = sampleRate; - o['sampleSize'] = sampleSize; - o['echoCancellation'] = echoCancellation; - o['autoGainControl'] = autoGainControl; - o['noiseSuppression'] = noiseSuppression; - o['latency'] = latency; - o['channelCount'] = channelCount; - o['deviceId'] = deviceId; - o['groupId'] = groupId; - return o; - }); - var MediaTrackCapabilities = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaTrackCapabilities_61f3zg$', function (width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId) { - if (width === void 0) - width = undefined; - if (height === void 0) - height = undefined; - if (aspectRatio === void 0) - aspectRatio = undefined; - if (frameRate === void 0) - frameRate = undefined; - if (facingMode === void 0) - facingMode = undefined; - if (resizeMode === void 0) - resizeMode = undefined; - if (volume === void 0) - volume = undefined; - if (sampleRate === void 0) - sampleRate = undefined; - if (sampleSize === void 0) - sampleSize = undefined; - if (echoCancellation === void 0) - echoCancellation = undefined; - if (autoGainControl === void 0) - autoGainControl = undefined; - if (noiseSuppression === void 0) - noiseSuppression = undefined; - if (latency === void 0) - latency = undefined; - if (channelCount === void 0) - channelCount = undefined; - if (deviceId === void 0) - deviceId = undefined; - if (groupId === void 0) - groupId = undefined; - var o = {}; - o['width'] = width; - o['height'] = height; - o['aspectRatio'] = aspectRatio; - o['frameRate'] = frameRate; - o['facingMode'] = facingMode; - o['resizeMode'] = resizeMode; - o['volume'] = volume; - o['sampleRate'] = sampleRate; - o['sampleSize'] = sampleSize; - o['echoCancellation'] = echoCancellation; - o['autoGainControl'] = autoGainControl; - o['noiseSuppression'] = noiseSuppression; - o['latency'] = latency; - o['channelCount'] = channelCount; - o['deviceId'] = deviceId; - o['groupId'] = groupId; - return o; - }); - var MediaTrackConstraints = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaTrackConstraints_hfkjcw$', function (advanced, width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId) { - if (advanced === void 0) - advanced = undefined; - if (width === void 0) - width = undefined; - if (height === void 0) - height = undefined; - if (aspectRatio === void 0) - aspectRatio = undefined; - if (frameRate === void 0) - frameRate = undefined; - if (facingMode === void 0) - facingMode = undefined; - if (resizeMode === void 0) - resizeMode = undefined; - if (volume === void 0) - volume = undefined; - if (sampleRate === void 0) - sampleRate = undefined; - if (sampleSize === void 0) - sampleSize = undefined; - if (echoCancellation === void 0) - echoCancellation = undefined; - if (autoGainControl === void 0) - autoGainControl = undefined; - if (noiseSuppression === void 0) - noiseSuppression = undefined; - if (latency === void 0) - latency = undefined; - if (channelCount === void 0) - channelCount = undefined; - if (deviceId === void 0) - deviceId = undefined; - if (groupId === void 0) - groupId = undefined; - var o = {}; - o['advanced'] = advanced; - o['width'] = width; - o['height'] = height; - o['aspectRatio'] = aspectRatio; - o['frameRate'] = frameRate; - o['facingMode'] = facingMode; - o['resizeMode'] = resizeMode; - o['volume'] = volume; - o['sampleRate'] = sampleRate; - o['sampleSize'] = sampleSize; - o['echoCancellation'] = echoCancellation; - o['autoGainControl'] = autoGainControl; - o['noiseSuppression'] = noiseSuppression; - o['latency'] = latency; - o['channelCount'] = channelCount; - o['deviceId'] = deviceId; - o['groupId'] = groupId; - return o; - }); - var MediaTrackConstraintSet = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaTrackConstraintSet_cbtu8k$', function (width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId) { - if (width === void 0) - width = undefined; - if (height === void 0) - height = undefined; - if (aspectRatio === void 0) - aspectRatio = undefined; - if (frameRate === void 0) - frameRate = undefined; - if (facingMode === void 0) - facingMode = undefined; - if (resizeMode === void 0) - resizeMode = undefined; - if (volume === void 0) - volume = undefined; - if (sampleRate === void 0) - sampleRate = undefined; - if (sampleSize === void 0) - sampleSize = undefined; - if (echoCancellation === void 0) - echoCancellation = undefined; - if (autoGainControl === void 0) - autoGainControl = undefined; - if (noiseSuppression === void 0) - noiseSuppression = undefined; - if (latency === void 0) - latency = undefined; - if (channelCount === void 0) - channelCount = undefined; - if (deviceId === void 0) - deviceId = undefined; - if (groupId === void 0) - groupId = undefined; - var o = {}; - o['width'] = width; - o['height'] = height; - o['aspectRatio'] = aspectRatio; - o['frameRate'] = frameRate; - o['facingMode'] = facingMode; - o['resizeMode'] = resizeMode; - o['volume'] = volume; - o['sampleRate'] = sampleRate; - o['sampleSize'] = sampleSize; - o['echoCancellation'] = echoCancellation; - o['autoGainControl'] = autoGainControl; - o['noiseSuppression'] = noiseSuppression; - o['latency'] = latency; - o['channelCount'] = channelCount; - o['deviceId'] = deviceId; - o['groupId'] = groupId; - return o; - }); - var MediaTrackSettings = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaTrackSettings_uaqjjf$', function (width, height, aspectRatio, frameRate, facingMode, resizeMode, volume, sampleRate, sampleSize, echoCancellation, autoGainControl, noiseSuppression, latency, channelCount, deviceId, groupId) { - if (width === void 0) - width = undefined; - if (height === void 0) - height = undefined; - if (aspectRatio === void 0) - aspectRatio = undefined; - if (frameRate === void 0) - frameRate = undefined; - if (facingMode === void 0) - facingMode = undefined; - if (resizeMode === void 0) - resizeMode = undefined; - if (volume === void 0) - volume = undefined; - if (sampleRate === void 0) - sampleRate = undefined; - if (sampleSize === void 0) - sampleSize = undefined; - if (echoCancellation === void 0) - echoCancellation = undefined; - if (autoGainControl === void 0) - autoGainControl = undefined; - if (noiseSuppression === void 0) - noiseSuppression = undefined; - if (latency === void 0) - latency = undefined; - if (channelCount === void 0) - channelCount = undefined; - if (deviceId === void 0) - deviceId = undefined; - if (groupId === void 0) - groupId = undefined; - var o = {}; - o['width'] = width; - o['height'] = height; - o['aspectRatio'] = aspectRatio; - o['frameRate'] = frameRate; - o['facingMode'] = facingMode; - o['resizeMode'] = resizeMode; - o['volume'] = volume; - o['sampleRate'] = sampleRate; - o['sampleSize'] = sampleSize; - o['echoCancellation'] = echoCancellation; - o['autoGainControl'] = autoGainControl; - o['noiseSuppression'] = noiseSuppression; - o['latency'] = latency; - o['channelCount'] = channelCount; - o['deviceId'] = deviceId; - o['groupId'] = groupId; - return o; - }); - var MediaStreamTrackEventInit = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaStreamTrackEventInit_echihd$', function (track, bubbles, cancelable, composed) { - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['track'] = track; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var OverconstrainedErrorEventInit = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.OverconstrainedErrorEventInit_3wh255$', function (error, bubbles, cancelable, composed) { - if (error === void 0) - error = null; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['error'] = error; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var MediaStreamConstraints = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.MediaStreamConstraints_wn2jw4$', function (video, audio) { - if (video === void 0) - video = false; - if (audio === void 0) - audio = false; - var o = {}; - o['video'] = video; - o['audio'] = audio; - return o; - }); - var DoubleRange = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.DoubleRange_jma9l8$', function (max, min) { - if (max === void 0) - max = undefined; - if (min === void 0) - min = undefined; - var o = {}; - o['max'] = max; - o['min'] = min; - return o; - }); - var ConstrainDoubleRange = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.ConstrainDoubleRange_rd1tgs$', function (exact, ideal, max, min) { - if (exact === void 0) - exact = undefined; - if (ideal === void 0) - ideal = undefined; - if (max === void 0) - max = undefined; - if (min === void 0) - min = undefined; - var o = {}; - o['exact'] = exact; - o['ideal'] = ideal; - o['max'] = max; - o['min'] = min; - return o; - }); - var ULongRange = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.ULongRange_1g3ugi$', function (max, min) { - if (max === void 0) - max = undefined; - if (min === void 0) - min = undefined; - var o = {}; - o['max'] = max; - o['min'] = min; - return o; - }); - var ConstrainULongRange = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.ConstrainULongRange_po2tg0$', function (exact, ideal, max, min) { - if (exact === void 0) - exact = undefined; - if (ideal === void 0) - ideal = undefined; - if (max === void 0) - max = undefined; - if (min === void 0) - min = undefined; - var o = {}; - o['exact'] = exact; - o['ideal'] = ideal; - o['max'] = max; - o['min'] = min; - return o; - }); - var ConstrainBooleanParameters = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.ConstrainBooleanParameters_vhjpus$', function (exact, ideal) { - if (exact === void 0) - exact = undefined; - if (ideal === void 0) - ideal = undefined; - var o = {}; - o['exact'] = exact; - o['ideal'] = ideal; - return o; - }); - var ConstrainDOMStringParameters = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.ConstrainDOMStringParameters_wn2jw4$', function (exact, ideal) { - if (exact === void 0) - exact = undefined; - if (ideal === void 0) - ideal = undefined; - var o = {}; - o['exact'] = exact; - o['ideal'] = ideal; - return o; - }); - var Capabilities = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.Capabilities', function () { - var o = {}; - return o; - }); - var Settings = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.Settings', function () { - var o = {}; - return o; - }); - var ConstraintSet = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.ConstraintSet', function () { - var o = {}; - return o; - }); - var Constraints = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.Constraints_v92fax$', function (advanced) { - if (advanced === void 0) - advanced = undefined; - var o = {}; - o['advanced'] = advanced; - return o; - }); - var get_LIVE = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_LIVE_tsyfvu$', function ($receiver) { - return 'live'; - }); - var get_ENDED = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_ENDED_tsyfvu$', function ($receiver) { - return 'ended'; - }); - var get_USER = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_USER_ctcynt$', function ($receiver) { - return 'user'; - }); - var get_ENVIRONMENT = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_ENVIRONMENT_ctcynt$', function ($receiver) { - return 'environment'; - }); - var get_LEFT_0 = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_LEFT_ctcynt$', function ($receiver) { - return 'left'; - }); - var get_RIGHT_0 = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_RIGHT_ctcynt$', function ($receiver) { - return 'right'; - }); - var get_NONE_2 = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_NONE_qdzhpp$', function ($receiver) { - return 'none'; - }); - var get_CROP_AND_SCALE = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_CROP_AND_SCALE_qdzhpp$', function ($receiver) { - return 'crop-and-scale'; - }); - var get_AUDIOINPUT = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_AUDIOINPUT_bcgeby$', function ($receiver) { - return 'audioinput'; - }); - var get_AUDIOOUTPUT = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_AUDIOOUTPUT_bcgeby$', function ($receiver) { - return 'audiooutput'; - }); - var get_VIDEOINPUT = defineInlineFunction('kotlin.org.w3c.dom.mediacapture.get_VIDEOINPUT_bcgeby$', function ($receiver) { - return 'videoinput'; - }); - var PointerEventInit = defineInlineFunction('kotlin.org.w3c.dom.pointerevents.PointerEventInit_1dxnaw$', function (pointerId, width, height, pressure, tangentialPressure, tiltX, tiltY, twist, pointerType, isPrimary, screenX, screenY, clientX, clientY, button, buttons, relatedTarget, ctrlKey, shiftKey, altKey, metaKey, modifierAltGraph, modifierCapsLock, modifierFn, modifierFnLock, modifierHyper, modifierNumLock, modifierScrollLock, modifierSuper, modifierSymbol, modifierSymbolLock, view, detail, bubbles, cancelable, composed) { - if (pointerId === void 0) - pointerId = 0; - if (width === void 0) - width = 1.0; - if (height === void 0) - height = 1.0; - if (pressure === void 0) - pressure = 0.0; - if (tangentialPressure === void 0) - tangentialPressure = 0.0; - if (tiltX === void 0) - tiltX = 0; - if (tiltY === void 0) - tiltY = 0; - if (twist === void 0) - twist = 0; - if (pointerType === void 0) - pointerType = ''; - if (isPrimary === void 0) - isPrimary = false; - if (screenX === void 0) - screenX = 0; - if (screenY === void 0) - screenY = 0; - if (clientX === void 0) - clientX = 0; - if (clientY === void 0) - clientY = 0; - if (button === void 0) - button = 0; - if (buttons === void 0) - buttons = 0; - if (relatedTarget === void 0) - relatedTarget = null; - if (ctrlKey === void 0) - ctrlKey = false; - if (shiftKey === void 0) - shiftKey = false; - if (altKey === void 0) - altKey = false; - if (metaKey === void 0) - metaKey = false; - if (modifierAltGraph === void 0) - modifierAltGraph = false; - if (modifierCapsLock === void 0) - modifierCapsLock = false; - if (modifierFn === void 0) - modifierFn = false; - if (modifierFnLock === void 0) - modifierFnLock = false; - if (modifierHyper === void 0) - modifierHyper = false; - if (modifierNumLock === void 0) - modifierNumLock = false; - if (modifierScrollLock === void 0) - modifierScrollLock = false; - if (modifierSuper === void 0) - modifierSuper = false; - if (modifierSymbol === void 0) - modifierSymbol = false; - if (modifierSymbolLock === void 0) - modifierSymbolLock = false; - if (view === void 0) - view = null; - if (detail === void 0) - detail = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['pointerId'] = pointerId; - o['width'] = width; - o['height'] = height; - o['pressure'] = pressure; - o['tangentialPressure'] = tangentialPressure; - o['tiltX'] = tiltX; - o['tiltY'] = tiltY; - o['twist'] = twist; - o['pointerType'] = pointerType; - o['isPrimary'] = isPrimary; - o['screenX'] = screenX; - o['screenY'] = screenY; - o['clientX'] = clientX; - o['clientY'] = clientY; - o['button'] = button; - o['buttons'] = buttons; - o['relatedTarget'] = relatedTarget; - o['ctrlKey'] = ctrlKey; - o['shiftKey'] = shiftKey; - o['altKey'] = altKey; - o['metaKey'] = metaKey; - o['modifierAltGraph'] = modifierAltGraph; - o['modifierCapsLock'] = modifierCapsLock; - o['modifierFn'] = modifierFn; - o['modifierFnLock'] = modifierFnLock; - o['modifierHyper'] = modifierHyper; - o['modifierNumLock'] = modifierNumLock; - o['modifierScrollLock'] = modifierScrollLock; - o['modifierSuper'] = modifierSuper; - o['modifierSymbol'] = modifierSymbol; - o['modifierSymbolLock'] = modifierSymbolLock; - o['view'] = view; - o['detail'] = detail; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var SVGBoundingBoxOptions = defineInlineFunction('kotlin.org.w3c.dom.svg.SVGBoundingBoxOptions_bx6eq4$', function (fill, stroke, markers, clipped) { - if (fill === void 0) - fill = true; - if (stroke === void 0) - stroke = false; - if (markers === void 0) - markers = false; - if (clipped === void 0) - clipped = false; - var o = {}; - o['fill'] = fill; - o['stroke'] = stroke; - o['markers'] = markers; - o['clipped'] = clipped; - return o; - }); - var get_39 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_2fgwj9$', function ($receiver, index) { - return $receiver[index]; - }); - var set_13 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_xg4o68$', function ($receiver, index, newItem) { - $receiver[index] = newItem; - }); - var get_40 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_nujcb1$', function ($receiver, index) { - return $receiver[index]; - }); - var set_14 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_vul1sp$', function ($receiver, index, newItem) { - $receiver[index] = newItem; - }); - var get_41 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_ml6vgw$', function ($receiver, index) { - return $receiver[index]; - }); - var set_15 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_tsl60p$', function ($receiver, index, newItem) { - $receiver[index] = newItem; - }); - var get_42 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_f2nmth$', function ($receiver, index) { - return $receiver[index]; - }); - var set_16 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_nr97t$', function ($receiver, index, newItem) { - $receiver[index] = newItem; - }); - var get_43 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_xcci3g$', function ($receiver, index) { - return $receiver[index]; - }); - var set_17 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_7s907r$', function ($receiver, index, newItem) { - $receiver[index] = newItem; - }); - var get_44 = defineInlineFunction('kotlin.org.w3c.dom.svg.get_r7cbpc$', function ($receiver, index) { - return $receiver[index]; - }); - var set_18 = defineInlineFunction('kotlin.org.w3c.dom.svg.set_8k1hvb$', function ($receiver, index, newItem) { - $receiver[index] = newItem; - }); - var RequestInit = defineInlineFunction('kotlin.org.w3c.fetch.RequestInit_302zsh$', function (method, headers, body, referrer, referrerPolicy, mode, credentials, cache, redirect, integrity, keepalive, window_0) { - if (method === void 0) - method = undefined; - if (headers === void 0) - headers = undefined; - if (body === void 0) - body = undefined; - if (referrer === void 0) - referrer = undefined; - if (referrerPolicy === void 0) - referrerPolicy = undefined; - if (mode === void 0) - mode = undefined; - if (credentials === void 0) - credentials = undefined; - if (cache === void 0) - cache = undefined; - if (redirect === void 0) - redirect = undefined; - if (integrity === void 0) - integrity = undefined; - if (keepalive === void 0) - keepalive = undefined; - if (window_0 === void 0) - window_0 = undefined; - var o = {}; - o['method'] = method; - o['headers'] = headers; - o['body'] = body; - o['referrer'] = referrer; - o['referrerPolicy'] = referrerPolicy; - o['mode'] = mode; - o['credentials'] = credentials; - o['cache'] = cache; - o['redirect'] = redirect; - o['integrity'] = integrity; - o['keepalive'] = keepalive; - o['window'] = window_0; - return o; - }); - var ResponseInit = defineInlineFunction('kotlin.org.w3c.fetch.ResponseInit_gk6zn2$', function (status, statusText, headers) { - if (status === void 0) - status = 200; - if (statusText === void 0) - statusText = 'OK'; - if (headers === void 0) - headers = undefined; - var o = {}; - o['status'] = status; - o['statusText'] = statusText; - o['headers'] = headers; - return o; - }); - var get_EMPTY_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_EMPTY_ih0r03$', function ($receiver) { - return ''; - }); - var get_AUDIO = defineInlineFunction('kotlin.org.w3c.fetch.get_AUDIO_ih0r03$', function ($receiver) { - return 'audio'; - }); - var get_FONT = defineInlineFunction('kotlin.org.w3c.fetch.get_FONT_ih0r03$', function ($receiver) { - return 'font'; - }); - var get_IMAGE = defineInlineFunction('kotlin.org.w3c.fetch.get_IMAGE_ih0r03$', function ($receiver) { - return 'image'; - }); - var get_SCRIPT = defineInlineFunction('kotlin.org.w3c.fetch.get_SCRIPT_ih0r03$', function ($receiver) { - return 'script'; - }); - var get_STYLE = defineInlineFunction('kotlin.org.w3c.fetch.get_STYLE_ih0r03$', function ($receiver) { - return 'style'; - }); - var get_TRACK = defineInlineFunction('kotlin.org.w3c.fetch.get_TRACK_ih0r03$', function ($receiver) { - return 'track'; - }); - var get_VIDEO = defineInlineFunction('kotlin.org.w3c.fetch.get_VIDEO_ih0r03$', function ($receiver) { - return 'video'; - }); - var get_EMPTY_1 = defineInlineFunction('kotlin.org.w3c.fetch.get_EMPTY_dgizjn$', function ($receiver) { - return ''; - }); - var get_DOCUMENT = defineInlineFunction('kotlin.org.w3c.fetch.get_DOCUMENT_dgizjn$', function ($receiver) { - return 'document'; - }); - var get_EMBED = defineInlineFunction('kotlin.org.w3c.fetch.get_EMBED_dgizjn$', function ($receiver) { - return 'embed'; - }); - var get_FONT_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_FONT_dgizjn$', function ($receiver) { - return 'font'; - }); - var get_IMAGE_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_IMAGE_dgizjn$', function ($receiver) { - return 'image'; - }); - var get_MANIFEST = defineInlineFunction('kotlin.org.w3c.fetch.get_MANIFEST_dgizjn$', function ($receiver) { - return 'manifest'; - }); - var get_MEDIA = defineInlineFunction('kotlin.org.w3c.fetch.get_MEDIA_dgizjn$', function ($receiver) { - return 'media'; - }); - var get_OBJECT = defineInlineFunction('kotlin.org.w3c.fetch.get_OBJECT_dgizjn$', function ($receiver) { - return 'object'; - }); - var get_REPORT = defineInlineFunction('kotlin.org.w3c.fetch.get_REPORT_dgizjn$', function ($receiver) { - return 'report'; - }); - var get_SCRIPT_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_SCRIPT_dgizjn$', function ($receiver) { - return 'script'; - }); - var get_SERVICEWORKER = defineInlineFunction('kotlin.org.w3c.fetch.get_SERVICEWORKER_dgizjn$', function ($receiver) { - return 'serviceworker'; - }); - var get_SHAREDWORKER = defineInlineFunction('kotlin.org.w3c.fetch.get_SHAREDWORKER_dgizjn$', function ($receiver) { - return 'sharedworker'; - }); - var get_STYLE_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_STYLE_dgizjn$', function ($receiver) { - return 'style'; - }); - var get_WORKER = defineInlineFunction('kotlin.org.w3c.fetch.get_WORKER_dgizjn$', function ($receiver) { - return 'worker'; - }); - var get_XSLT = defineInlineFunction('kotlin.org.w3c.fetch.get_XSLT_dgizjn$', function ($receiver) { - return 'xslt'; - }); - var get_NAVIGATE = defineInlineFunction('kotlin.org.w3c.fetch.get_NAVIGATE_jvdbus$', function ($receiver) { - return 'navigate'; - }); - var get_SAME_ORIGIN = defineInlineFunction('kotlin.org.w3c.fetch.get_SAME_ORIGIN_jvdbus$', function ($receiver) { - return 'same-origin'; - }); - var get_NO_CORS = defineInlineFunction('kotlin.org.w3c.fetch.get_NO_CORS_jvdbus$', function ($receiver) { - return 'no-cors'; - }); - var get_CORS = defineInlineFunction('kotlin.org.w3c.fetch.get_CORS_jvdbus$', function ($receiver) { - return 'cors'; - }); - var get_OMIT = defineInlineFunction('kotlin.org.w3c.fetch.get_OMIT_yuzaxt$', function ($receiver) { - return 'omit'; - }); - var get_SAME_ORIGIN_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_SAME_ORIGIN_yuzaxt$', function ($receiver) { - return 'same-origin'; - }); - var get_INCLUDE = defineInlineFunction('kotlin.org.w3c.fetch.get_INCLUDE_yuzaxt$', function ($receiver) { - return 'include'; - }); - var get_DEFAULT_1 = defineInlineFunction('kotlin.org.w3c.fetch.get_DEFAULT_iyytcp$', function ($receiver) { - return 'default'; - }); - var get_NO_STORE = defineInlineFunction('kotlin.org.w3c.fetch.get_NO_STORE_iyytcp$', function ($receiver) { - return 'no-store'; - }); - var get_RELOAD = defineInlineFunction('kotlin.org.w3c.fetch.get_RELOAD_iyytcp$', function ($receiver) { - return 'reload'; - }); - var get_NO_CACHE = defineInlineFunction('kotlin.org.w3c.fetch.get_NO_CACHE_iyytcp$', function ($receiver) { - return 'no-cache'; - }); - var get_FORCE_CACHE = defineInlineFunction('kotlin.org.w3c.fetch.get_FORCE_CACHE_iyytcp$', function ($receiver) { - return 'force-cache'; - }); - var get_ONLY_IF_CACHED = defineInlineFunction('kotlin.org.w3c.fetch.get_ONLY_IF_CACHED_iyytcp$', function ($receiver) { - return 'only-if-cached'; - }); - var get_FOLLOW = defineInlineFunction('kotlin.org.w3c.fetch.get_FOLLOW_tow8et$', function ($receiver) { - return 'follow'; - }); - var get_ERROR = defineInlineFunction('kotlin.org.w3c.fetch.get_ERROR_tow8et$', function ($receiver) { - return 'error'; - }); - var get_MANUAL_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_MANUAL_tow8et$', function ($receiver) { - return 'manual'; - }); - var get_BASIC = defineInlineFunction('kotlin.org.w3c.fetch.get_BASIC_1el1vz$', function ($receiver) { - return 'basic'; - }); - var get_CORS_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_CORS_1el1vz$', function ($receiver) { - return 'cors'; - }); - var get_DEFAULT_2 = defineInlineFunction('kotlin.org.w3c.fetch.get_DEFAULT_1el1vz$', function ($receiver) { - return 'default'; - }); - var get_ERROR_0 = defineInlineFunction('kotlin.org.w3c.fetch.get_ERROR_1el1vz$', function ($receiver) { - return 'error'; - }); - var get_OPAQUE = defineInlineFunction('kotlin.org.w3c.fetch.get_OPAQUE_1el1vz$', function ($receiver) { - return 'opaque'; - }); - var get_OPAQUEREDIRECT = defineInlineFunction('kotlin.org.w3c.fetch.get_OPAQUEREDIRECT_1el1vz$', function ($receiver) { - return 'opaqueredirect'; - }); - var BlobPropertyBag = defineInlineFunction('kotlin.org.w3c.files.BlobPropertyBag_pdl1vj$', function (type) { - if (type === void 0) - type = ''; - var o = {}; - o['type'] = type; - return o; - }); - var FilePropertyBag = defineInlineFunction('kotlin.org.w3c.files.FilePropertyBag_3gd7sg$', function (lastModified, type) { - if (lastModified === void 0) - lastModified = undefined; - if (type === void 0) - type = ''; - var o = {}; - o['lastModified'] = lastModified; - o['type'] = type; - return o; - }); - var get_45 = defineInlineFunction('kotlin.org.w3c.files.get_frimup$', function ($receiver, index) { - return $receiver[index]; - }); - var NotificationOptions = defineInlineFunction('kotlin.org.w3c.notifications.NotificationOptions_kxkl36$', function (dir, lang, body, tag, image, icon, badge, sound, vibrate, timestamp, renotify, silent, noscreen, requireInteraction, sticky, data, actions) { - if (dir === void 0) { - dir = 'auto'; - } - if (lang === void 0) - lang = ''; - if (body === void 0) - body = ''; - if (tag === void 0) - tag = ''; - if (image === void 0) - image = undefined; - if (icon === void 0) - icon = undefined; - if (badge === void 0) - badge = undefined; - if (sound === void 0) - sound = undefined; - if (vibrate === void 0) - vibrate = undefined; - if (timestamp === void 0) - timestamp = undefined; - if (renotify === void 0) - renotify = false; - if (silent === void 0) - silent = false; - if (noscreen === void 0) - noscreen = false; - if (requireInteraction === void 0) - requireInteraction = false; - if (sticky === void 0) - sticky = false; - if (data === void 0) - data = null; - if (actions === void 0) - actions = []; - var o = {}; - o['dir'] = dir; - o['lang'] = lang; - o['body'] = body; - o['tag'] = tag; - o['image'] = image; - o['icon'] = icon; - o['badge'] = badge; - o['sound'] = sound; - o['vibrate'] = vibrate; - o['timestamp'] = timestamp; - o['renotify'] = renotify; - o['silent'] = silent; - o['noscreen'] = noscreen; - o['requireInteraction'] = requireInteraction; - o['sticky'] = sticky; - o['data'] = data; - o['actions'] = actions; - return o; - }); - var NotificationAction = defineInlineFunction('kotlin.org.w3c.notifications.NotificationAction_eaqb6n$', function (action, title, icon) { - if (icon === void 0) - icon = undefined; - var o = {}; - o['action'] = action; - o['title'] = title; - o['icon'] = icon; - return o; - }); - var GetNotificationOptions = defineInlineFunction('kotlin.org.w3c.notifications.GetNotificationOptions_pdl1vj$', function (tag) { - if (tag === void 0) - tag = ''; - var o = {}; - o['tag'] = tag; - return o; - }); - var NotificationEventInit = defineInlineFunction('kotlin.org.w3c.notifications.NotificationEventInit_wmlth4$', function (notification, action, bubbles, cancelable, composed) { - if (action === void 0) - action = ''; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['notification'] = notification; - o['action'] = action; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var get_DEFAULT_3 = defineInlineFunction('kotlin.org.w3c.notifications.get_DEFAULT_4wcaio$', function ($receiver) { - return 'default'; - }); - var get_DENIED = defineInlineFunction('kotlin.org.w3c.notifications.get_DENIED_4wcaio$', function ($receiver) { - return 'denied'; - }); - var get_GRANTED = defineInlineFunction('kotlin.org.w3c.notifications.get_GRANTED_4wcaio$', function ($receiver) { - return 'granted'; - }); - var get_AUTO_1 = defineInlineFunction('kotlin.org.w3c.notifications.get_AUTO_6wyje4$', function ($receiver) { - return 'auto'; - }); - var get_LTR_0 = defineInlineFunction('kotlin.org.w3c.notifications.get_LTR_6wyje4$', function ($receiver) { - return 'ltr'; - }); - var get_RTL_0 = defineInlineFunction('kotlin.org.w3c.notifications.get_RTL_6wyje4$', function ($receiver) { - return 'rtl'; - }); - var RegistrationOptions = defineInlineFunction('kotlin.org.w3c.workers.RegistrationOptions_dbr88v$', function (scope, type) { - if (scope === void 0) - scope = undefined; - if (type === void 0) { - type = 'classic'; - } - var o = {}; - o['scope'] = scope; - o['type'] = type; - return o; - }); - var ServiceWorkerMessageEventInit = defineInlineFunction('kotlin.org.w3c.workers.ServiceWorkerMessageEventInit_d2wyw1$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { - if (data === void 0) - data = undefined; - if (origin === void 0) - origin = undefined; - if (lastEventId === void 0) - lastEventId = undefined; - if (source === void 0) - source = undefined; - if (ports === void 0) - ports = undefined; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['data'] = data; - o['origin'] = origin; - o['lastEventId'] = lastEventId; - o['source'] = source; - o['ports'] = ports; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ClientQueryOptions = defineInlineFunction('kotlin.org.w3c.workers.ClientQueryOptions_d3lhiw$', function (includeUncontrolled, type) { - if (includeUncontrolled === void 0) - includeUncontrolled = false; - if (type === void 0) { - type = 'window'; - } - var o = {}; - o['includeUncontrolled'] = includeUncontrolled; - o['type'] = type; - return o; - }); - var ExtendableEventInit = defineInlineFunction('kotlin.org.w3c.workers.ExtendableEventInit_uic7jo$', function (bubbles, cancelable, composed) { - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ForeignFetchOptions = defineInlineFunction('kotlin.org.w3c.workers.ForeignFetchOptions_aye5cc$', function (scopes, origins) { - var o = {}; - o['scopes'] = scopes; - o['origins'] = origins; - return o; - }); - var FetchEventInit = defineInlineFunction('kotlin.org.w3c.workers.FetchEventInit_bfhkw8$', function (request, clientId, isReload, bubbles, cancelable, composed) { - if (clientId === void 0) - clientId = null; - if (isReload === void 0) - isReload = false; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['request'] = request; - o['clientId'] = clientId; - o['isReload'] = isReload; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ForeignFetchEventInit = defineInlineFunction('kotlin.org.w3c.workers.ForeignFetchEventInit_kdt7mo$', function (request, origin, bubbles, cancelable, composed) { - if (origin === void 0) - origin = 'null'; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['request'] = request; - o['origin'] = origin; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var ForeignFetchResponse = defineInlineFunction('kotlin.org.w3c.workers.ForeignFetchResponse_ikkqih$', function (response, origin, headers) { - if (origin === void 0) - origin = undefined; - if (headers === void 0) - headers = undefined; - var o = {}; - o['response'] = response; - o['origin'] = origin; - o['headers'] = headers; - return o; - }); - var ExtendableMessageEventInit = defineInlineFunction('kotlin.org.w3c.workers.ExtendableMessageEventInit_ud4veo$', function (data, origin, lastEventId, source, ports, bubbles, cancelable, composed) { - if (data === void 0) - data = undefined; - if (origin === void 0) - origin = undefined; - if (lastEventId === void 0) - lastEventId = undefined; - if (source === void 0) - source = undefined; - if (ports === void 0) - ports = undefined; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['data'] = data; - o['origin'] = origin; - o['lastEventId'] = lastEventId; - o['source'] = source; - o['ports'] = ports; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var CacheQueryOptions = defineInlineFunction('kotlin.org.w3c.workers.CacheQueryOptions_dh4ton$', function (ignoreSearch, ignoreMethod, ignoreVary, cacheName) { - if (ignoreSearch === void 0) - ignoreSearch = false; - if (ignoreMethod === void 0) - ignoreMethod = false; - if (ignoreVary === void 0) - ignoreVary = false; - if (cacheName === void 0) - cacheName = undefined; - var o = {}; - o['ignoreSearch'] = ignoreSearch; - o['ignoreMethod'] = ignoreMethod; - o['ignoreVary'] = ignoreVary; - o['cacheName'] = cacheName; - return o; - }); - var CacheBatchOperation = defineInlineFunction('kotlin.org.w3c.workers.CacheBatchOperation_e4hn3k$', function (type, request, response, options) { - if (type === void 0) - type = undefined; - if (request === void 0) - request = undefined; - if (response === void 0) - response = undefined; - if (options === void 0) - options = undefined; - var o = {}; - o['type'] = type; - o['request'] = request; - o['response'] = response; - o['options'] = options; - return o; - }); - var get_INSTALLING = defineInlineFunction('kotlin.org.w3c.workers.get_INSTALLING_7rndk9$', function ($receiver) { - return 'installing'; - }); - var get_INSTALLED = defineInlineFunction('kotlin.org.w3c.workers.get_INSTALLED_7rndk9$', function ($receiver) { - return 'installed'; - }); - var get_ACTIVATING = defineInlineFunction('kotlin.org.w3c.workers.get_ACTIVATING_7rndk9$', function ($receiver) { - return 'activating'; - }); - var get_ACTIVATED = defineInlineFunction('kotlin.org.w3c.workers.get_ACTIVATED_7rndk9$', function ($receiver) { - return 'activated'; - }); - var get_REDUNDANT = defineInlineFunction('kotlin.org.w3c.workers.get_REDUNDANT_7rndk9$', function ($receiver) { - return 'redundant'; - }); - var get_AUXILIARY = defineInlineFunction('kotlin.org.w3c.workers.get_AUXILIARY_1foc4s$', function ($receiver) { - return 'auxiliary'; - }); - var get_TOP_LEVEL = defineInlineFunction('kotlin.org.w3c.workers.get_TOP_LEVEL_1foc4s$', function ($receiver) { - return 'top-level'; - }); - var get_NESTED = defineInlineFunction('kotlin.org.w3c.workers.get_NESTED_1foc4s$', function ($receiver) { - return 'nested'; - }); - var get_NONE_3 = defineInlineFunction('kotlin.org.w3c.workers.get_NONE_1foc4s$', function ($receiver) { - return 'none'; - }); - var get_WINDOW = defineInlineFunction('kotlin.org.w3c.workers.get_WINDOW_jpgnoe$', function ($receiver) { - return 'window'; - }); - var get_WORKER_0 = defineInlineFunction('kotlin.org.w3c.workers.get_WORKER_jpgnoe$', function ($receiver) { - return 'worker'; - }); - var get_SHAREDWORKER_0 = defineInlineFunction('kotlin.org.w3c.workers.get_SHAREDWORKER_jpgnoe$', function ($receiver) { - return 'sharedworker'; - }); - var get_ALL = defineInlineFunction('kotlin.org.w3c.workers.get_ALL_jpgnoe$', function ($receiver) { - return 'all'; - }); - var ProgressEventInit = defineInlineFunction('kotlin.org.w3c.xhr.ProgressEventInit_swrtea$', function (lengthComputable, loaded, total, bubbles, cancelable, composed) { - if (lengthComputable === void 0) - lengthComputable = false; - if (loaded === void 0) - loaded = 0; - if (total === void 0) - total = 0; - if (bubbles === void 0) - bubbles = false; - if (cancelable === void 0) - cancelable = false; - if (composed === void 0) - composed = false; - var o = {}; - o['lengthComputable'] = lengthComputable; - o['loaded'] = loaded; - o['total'] = total; - o['bubbles'] = bubbles; - o['cancelable'] = cancelable; - o['composed'] = composed; - return o; - }); - var get_EMPTY_2 = defineInlineFunction('kotlin.org.w3c.xhr.get_EMPTY_8edqmh$', function ($receiver) { - return ''; - }); - var get_ARRAYBUFFER_0 = defineInlineFunction('kotlin.org.w3c.xhr.get_ARRAYBUFFER_8edqmh$', function ($receiver) { - return 'arraybuffer'; - }); - var get_BLOB_0 = defineInlineFunction('kotlin.org.w3c.xhr.get_BLOB_8edqmh$', function ($receiver) { - return 'blob'; - }); - var get_DOCUMENT_0 = defineInlineFunction('kotlin.org.w3c.xhr.get_DOCUMENT_8edqmh$', function ($receiver) { - return 'document'; - }); - var get_JSON = defineInlineFunction('kotlin.org.w3c.xhr.get_JSON_8edqmh$', function ($receiver) { - return 'json'; - }); - var get_TEXT = defineInlineFunction('kotlin.org.w3c.xhr.get_TEXT_8edqmh$', function ($receiver) { - return 'text'; - }); - function Experimental(level) { - if (level === void 0) - level = Experimental$Level$ERROR_getInstance(); - this.level = level; - } - function Experimental$Level(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function Experimental$Level_initFields() { - Experimental$Level_initFields = function () { - }; - Experimental$Level$WARNING_instance = new Experimental$Level('WARNING', 0); - Experimental$Level$ERROR_instance = new Experimental$Level('ERROR', 1); - } - var Experimental$Level$WARNING_instance; - function Experimental$Level$WARNING_getInstance() { - Experimental$Level_initFields(); - return Experimental$Level$WARNING_instance; - } - var Experimental$Level$ERROR_instance; - function Experimental$Level$ERROR_getInstance() { - Experimental$Level_initFields(); - return Experimental$Level$ERROR_instance; - } - Experimental$Level.$metadata$ = {kind: Kind_CLASS, simpleName: 'Level', interfaces: [Enum]}; - function Experimental$Level$values() { - return [Experimental$Level$WARNING_getInstance(), Experimental$Level$ERROR_getInstance()]; - } - Experimental$Level.values = Experimental$Level$values; - function Experimental$Level$valueOf(name) { - switch (name) { - case 'WARNING': - return Experimental$Level$WARNING_getInstance(); - case 'ERROR': - return Experimental$Level$ERROR_getInstance(); - default:throwISE('No enum constant kotlin.Experimental.Level.' + name); - } - } - Experimental$Level.valueOf_61zpoe$ = Experimental$Level$valueOf; - Experimental.$metadata$ = {kind: Kind_CLASS, simpleName: 'Experimental', interfaces: [Annotation]}; - function UseExperimental(markerClass) { - this.markerClass = markerClass; - } - UseExperimental.$metadata$ = {kind: Kind_CLASS, simpleName: 'UseExperimental', interfaces: [Annotation]}; - function WasExperimental(markerClass) { - this.markerClass = markerClass; - } - WasExperimental.$metadata$ = {kind: Kind_CLASS, simpleName: 'WasExperimental', interfaces: [Annotation]}; - function BuilderInference() { - } - BuilderInference.$metadata$ = {kind: Kind_CLASS, simpleName: 'BuilderInference', interfaces: [Annotation]}; - function ExperimentalMultiplatform() { - } - ExperimentalMultiplatform.$metadata$ = {kind: Kind_CLASS, simpleName: 'ExperimentalMultiplatform', interfaces: [Annotation]}; - function OptionalExpectation() { - } - OptionalExpectation.$metadata$ = {kind: Kind_CLASS, simpleName: 'OptionalExpectation', interfaces: [Annotation]}; - function AbstractCollection() { - } - AbstractCollection.prototype.contains_11rb$ = function (element) { - var any$result; - any$break: do { - var tmp$; - if (Kotlin.isType(this, Collection) && this.isEmpty()) { - any$result = false; - break any$break; - } - tmp$ = this.iterator(); - while (tmp$.hasNext()) { - var element_0 = tmp$.next(); - if (equals(element_0, element)) { - any$result = true; - break any$break; - } - } - any$result = false; - } - while (false); - return any$result; - }; - AbstractCollection.prototype.containsAll_brywnq$ = function (elements) { - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!this.contains_11rb$(element)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - AbstractCollection.prototype.isEmpty = function () { - return this.size === 0; - }; - function AbstractCollection$toString$lambda(this$AbstractCollection) { - return function (it) { - return it === this$AbstractCollection ? '(this Collection)' : toString(it); - }; - } - AbstractCollection.prototype.toString = function () { - return joinToString_8(this, ', ', '[', ']', void 0, void 0, AbstractCollection$toString$lambda(this)); - }; - AbstractCollection.prototype.toArray = function () { - return copyToArrayImpl(this); - }; - AbstractCollection.prototype.toArray_ro6dgy$ = function (array) { - return copyToArrayImpl_0(this, array); - }; - AbstractCollection.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractCollection', interfaces: [Collection]}; - function State(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function State_initFields() { - State_initFields = function () { - }; - State$Ready_instance = new State('Ready', 0); - State$NotReady_instance = new State('NotReady', 1); - State$Done_instance = new State('Done', 2); - State$Failed_instance = new State('Failed', 3); - } - var State$Ready_instance; - function State$Ready_getInstance() { - State_initFields(); - return State$Ready_instance; - } - var State$NotReady_instance; - function State$NotReady_getInstance() { - State_initFields(); - return State$NotReady_instance; - } - var State$Done_instance; - function State$Done_getInstance() { - State_initFields(); - return State$Done_instance; - } - var State$Failed_instance; - function State$Failed_getInstance() { - State_initFields(); - return State$Failed_instance; - } - State.$metadata$ = {kind: Kind_CLASS, simpleName: 'State', interfaces: [Enum]}; - function State$values() { - return [State$Ready_getInstance(), State$NotReady_getInstance(), State$Done_getInstance(), State$Failed_getInstance()]; - } - State.values = State$values; - function State$valueOf(name) { - switch (name) { - case 'Ready': - return State$Ready_getInstance(); - case 'NotReady': - return State$NotReady_getInstance(); - case 'Done': - return State$Done_getInstance(); - case 'Failed': - return State$Failed_getInstance(); - default:throwISE('No enum constant kotlin.collections.State.' + name); - } - } - State.valueOf_61zpoe$ = State$valueOf; - function AbstractIterator() { - this.state_smy23j$_0 = State$NotReady_getInstance(); - this.nextValue_phdh64$_0 = null; - } - AbstractIterator.prototype.hasNext = function () { - var tmp$; - if (!(this.state_smy23j$_0 !== State$Failed_getInstance())) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init_0(message.toString()); - } - switch (this.state_smy23j$_0.name) { - case 'Done': - tmp$ = false; - break; - case 'Ready': - tmp$ = true; - break; - default:tmp$ = this.tryToComputeNext_ser32m$_0(); - break; - } - return tmp$; - }; - AbstractIterator.prototype.next = function () { - var tmp$; - if (!this.hasNext()) - throw NoSuchElementException_init(); - this.state_smy23j$_0 = State$NotReady_getInstance(); - return (tmp$ = this.nextValue_phdh64$_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }; - AbstractIterator.prototype.tryToComputeNext_ser32m$_0 = function () { - this.state_smy23j$_0 = State$Failed_getInstance(); - this.computeNext(); - return this.state_smy23j$_0 === State$Ready_getInstance(); - }; - AbstractIterator.prototype.setNext_11rb$ = function (value) { - this.nextValue_phdh64$_0 = value; - this.state_smy23j$_0 = State$Ready_getInstance(); - }; - AbstractIterator.prototype.done = function () { - this.state_smy23j$_0 = State$Done_getInstance(); - }; - AbstractIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractIterator', interfaces: [Iterator]}; - function AbstractList() { - AbstractList$Companion_getInstance(); - AbstractCollection.call(this); - } - AbstractList.prototype.iterator = function () { - return new AbstractList$IteratorImpl(this); - }; - AbstractList.prototype.indexOf_11rb$ = function (element) { - var indexOfFirst$result; - indexOfFirst$break: do { - var tmp$; - var index = 0; - tmp$ = this.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if (equals(item, element)) { - indexOfFirst$result = index; - break indexOfFirst$break; - } - index = index + 1 | 0; - } - indexOfFirst$result = -1; - } - while (false); - return indexOfFirst$result; - }; - AbstractList.prototype.lastIndexOf_11rb$ = function (element) { - var indexOfLast$result; - indexOfLast$break: do { - var iterator = this.listIterator_za3lpa$(this.size); - while (iterator.hasPrevious()) { - if (equals(iterator.previous(), element)) { - indexOfLast$result = iterator.nextIndex(); - break indexOfLast$break; - } - } - indexOfLast$result = -1; - } - while (false); - return indexOfLast$result; - }; - AbstractList.prototype.listIterator = function () { - return new AbstractList$ListIteratorImpl(this, 0); - }; - AbstractList.prototype.listIterator_za3lpa$ = function (index) { - return new AbstractList$ListIteratorImpl(this, index); - }; - AbstractList.prototype.subList_vux9f0$ = function (fromIndex, toIndex) { - return new AbstractList$SubList(this, fromIndex, toIndex); - }; - function AbstractList$SubList(list, fromIndex, toIndex) { - AbstractList.call(this); - this.list_0 = list; - this.fromIndex_0 = fromIndex; - this._size_0 = 0; - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(this.fromIndex_0, toIndex, this.list_0.size); - this._size_0 = toIndex - this.fromIndex_0 | 0; - } - AbstractList$SubList.prototype.get_za3lpa$ = function (index) { - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this._size_0); - return this.list_0.get_za3lpa$(this.fromIndex_0 + index | 0); - }; - Object.defineProperty(AbstractList$SubList.prototype, 'size', {get: function () { - return this._size_0; - }}); - AbstractList$SubList.$metadata$ = {kind: Kind_CLASS, simpleName: 'SubList', interfaces: [RandomAccess, AbstractList]}; - AbstractList.prototype.equals = function (other) { - if (other === this) - return true; - if (!Kotlin.isType(other, List)) - return false; - return AbstractList$Companion_getInstance().orderedEquals_e92ka7$(this, other); - }; - AbstractList.prototype.hashCode = function () { - return AbstractList$Companion_getInstance().orderedHashCode_nykoif$(this); - }; - function AbstractList$IteratorImpl($outer) { - this.$outer = $outer; - this.index_0 = 0; - } - AbstractList$IteratorImpl.prototype.hasNext = function () { - return this.index_0 < this.$outer.size; - }; - AbstractList$IteratorImpl.prototype.next = function () { - var tmp$, tmp$_0; - if (!this.hasNext()) - throw NoSuchElementException_init(); - tmp$_0 = (tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$); - return this.$outer.get_za3lpa$(tmp$_0); - }; - AbstractList$IteratorImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'IteratorImpl', interfaces: [Iterator]}; - function AbstractList$ListIteratorImpl($outer, index) { - this.$outer = $outer; - AbstractList$IteratorImpl.call(this, this.$outer); - AbstractList$Companion_getInstance().checkPositionIndex_6xvm5r$(index, this.$outer.size); - this.index_0 = index; - } - AbstractList$ListIteratorImpl.prototype.hasPrevious = function () { - return this.index_0 > 0; - }; - AbstractList$ListIteratorImpl.prototype.nextIndex = function () { - return this.index_0; - }; - AbstractList$ListIteratorImpl.prototype.previous = function () { - if (!this.hasPrevious()) - throw NoSuchElementException_init(); - return this.$outer.get_za3lpa$((this.index_0 = this.index_0 - 1 | 0, this.index_0)); - }; - AbstractList$ListIteratorImpl.prototype.previousIndex = function () { - return this.index_0 - 1 | 0; - }; - AbstractList$ListIteratorImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'ListIteratorImpl', interfaces: [ListIterator, AbstractList$IteratorImpl]}; - function AbstractList$Companion() { - AbstractList$Companion_instance = this; - } - AbstractList$Companion.prototype.checkElementIndex_6xvm5r$ = function (index, size) { - if (index < 0 || index >= size) { - throw new IndexOutOfBoundsException('index: ' + index + ', size: ' + size); - } - }; - AbstractList$Companion.prototype.checkPositionIndex_6xvm5r$ = function (index, size) { - if (index < 0 || index > size) { - throw new IndexOutOfBoundsException('index: ' + index + ', size: ' + size); - } - }; - AbstractList$Companion.prototype.checkRangeIndexes_cub51b$ = function (fromIndex, toIndex, size) { - if (fromIndex < 0 || toIndex > size) { - throw new IndexOutOfBoundsException('fromIndex: ' + fromIndex + ', toIndex: ' + toIndex + ', size: ' + size); - } - if (fromIndex > toIndex) { - throw IllegalArgumentException_init_0('fromIndex: ' + fromIndex + ' > toIndex: ' + toIndex); - } - }; - AbstractList$Companion.prototype.orderedHashCode_nykoif$ = function (c) { - var tmp$, tmp$_0; - var hashCode_0 = 1; - tmp$ = c.iterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - hashCode_0 = (31 * hashCode_0 | 0) + ((tmp$_0 = e != null ? hashCode(e) : null) != null ? tmp$_0 : 0) | 0; - } - return hashCode_0; - }; - AbstractList$Companion.prototype.orderedEquals_e92ka7$ = function (c, other) { - var tmp$; - if (c.size !== other.size) - return false; - var otherIterator = other.iterator(); - tmp$ = c.iterator(); - while (tmp$.hasNext()) { - var elem = tmp$.next(); - var elemOther = otherIterator.next(); - if (!equals(elem, elemOther)) { - return false; - } - } - return true; - }; - AbstractList$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var AbstractList$Companion_instance = null; - function AbstractList$Companion_getInstance() { - if (AbstractList$Companion_instance === null) { - new AbstractList$Companion(); - } - return AbstractList$Companion_instance; - } - AbstractList.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractList', interfaces: [List, AbstractCollection]}; - function AbstractMap() { - AbstractMap$Companion_getInstance(); - this._keys_up5z3z$_0 = null; - this._values_6nw1f1$_0 = null; - } - AbstractMap.prototype.containsKey_11rb$ = function (key) { - return this.implFindEntry_8k1i24$_0(key) != null; - }; - AbstractMap.prototype.containsValue_11rc$ = function (value) { - var $receiver = this.entries; - var any$result; - any$break: do { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { - any$result = false; - break any$break; - } - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (equals(element.value, value)) { - any$result = true; - break any$break; - } - } - any$result = false; - } - while (false); - return any$result; - }; - AbstractMap.prototype.containsEntry_8hxqw4$ = function (entry) { - if (!Kotlin.isType(entry, Map$Entry)) - return false; - var key = entry.key; - var value = entry.value; - var tmp$; - var ourValue = (Kotlin.isType(tmp$ = this, Map) ? tmp$ : throwCCE()).get_11rb$(key); - if (!equals(value, ourValue)) { - return false; - } - var tmp$_0 = ourValue == null; - if (tmp$_0) { - var tmp$_1; - tmp$_0 = !(Kotlin.isType(tmp$_1 = this, Map) ? tmp$_1 : throwCCE()).containsKey_11rb$(key); - } - if (tmp$_0) { - return false; - } - return true; - }; - AbstractMap.prototype.equals = function (other) { - if (other === this) - return true; - if (!Kotlin.isType(other, Map)) - return false; - if (this.size !== other.size) - return false; - var $receiver = other.entries; - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType($receiver, Collection) && $receiver.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!this.containsEntry_8hxqw4$(element)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - AbstractMap.prototype.get_11rb$ = function (key) { - var tmp$; - return (tmp$ = this.implFindEntry_8k1i24$_0(key)) != null ? tmp$.value : null; - }; - AbstractMap.prototype.hashCode = function () { - return hashCode(this.entries); - }; - AbstractMap.prototype.isEmpty = function () { - return this.size === 0; - }; - Object.defineProperty(AbstractMap.prototype, 'size', {get: function () { - return this.entries.size; - }}); - function AbstractMap$get_AbstractMap$keys$ObjectLiteral(this$AbstractMap) { - this.this$AbstractMap = this$AbstractMap; - AbstractSet.call(this); - } - AbstractMap$get_AbstractMap$keys$ObjectLiteral.prototype.contains_11rb$ = function (element) { - return this.this$AbstractMap.containsKey_11rb$(element); - }; - function AbstractMap$get_AbstractMap$keys$ObjectLiteral$iterator$ObjectLiteral(closure$entryIterator) { - this.closure$entryIterator = closure$entryIterator; - } - AbstractMap$get_AbstractMap$keys$ObjectLiteral$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.closure$entryIterator.hasNext(); - }; - AbstractMap$get_AbstractMap$keys$ObjectLiteral$iterator$ObjectLiteral.prototype.next = function () { - return this.closure$entryIterator.next().key; - }; - AbstractMap$get_AbstractMap$keys$ObjectLiteral$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - AbstractMap$get_AbstractMap$keys$ObjectLiteral.prototype.iterator = function () { - var entryIterator = this.this$AbstractMap.entries.iterator(); - return new AbstractMap$get_AbstractMap$keys$ObjectLiteral$iterator$ObjectLiteral(entryIterator); - }; - Object.defineProperty(AbstractMap$get_AbstractMap$keys$ObjectLiteral.prototype, 'size', {get: function () { - return this.this$AbstractMap.size; - }}); - AbstractMap$get_AbstractMap$keys$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractSet]}; - Object.defineProperty(AbstractMap.prototype, 'keys', {get: function () { - if (this._keys_up5z3z$_0 == null) { - this._keys_up5z3z$_0 = new AbstractMap$get_AbstractMap$keys$ObjectLiteral(this); - } - return ensureNotNull(this._keys_up5z3z$_0); - }}); - function AbstractMap$toString$lambda(this$AbstractMap) { - return function (it) { - return this$AbstractMap.toString_55he67$_0(it); - }; - } - AbstractMap.prototype.toString = function () { - return joinToString_8(this.entries, ', ', '{', '}', void 0, void 0, AbstractMap$toString$lambda(this)); - }; - AbstractMap.prototype.toString_55he67$_0 = function (entry) { - return this.toString_kthv8s$_0(entry.key) + '=' + this.toString_kthv8s$_0(entry.value); - }; - AbstractMap.prototype.toString_kthv8s$_0 = function (o) { - return o === this ? '(this Map)' : toString(o); - }; - function AbstractMap$get_AbstractMap$values$ObjectLiteral(this$AbstractMap) { - this.this$AbstractMap = this$AbstractMap; - AbstractCollection.call(this); - } - AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype.contains_11rb$ = function (element) { - return this.this$AbstractMap.containsValue_11rc$(element); - }; - function AbstractMap$get_AbstractMap$values$ObjectLiteral$iterator$ObjectLiteral(closure$entryIterator) { - this.closure$entryIterator = closure$entryIterator; - } - AbstractMap$get_AbstractMap$values$ObjectLiteral$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.closure$entryIterator.hasNext(); - }; - AbstractMap$get_AbstractMap$values$ObjectLiteral$iterator$ObjectLiteral.prototype.next = function () { - return this.closure$entryIterator.next().value; - }; - AbstractMap$get_AbstractMap$values$ObjectLiteral$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype.iterator = function () { - var entryIterator = this.this$AbstractMap.entries.iterator(); - return new AbstractMap$get_AbstractMap$values$ObjectLiteral$iterator$ObjectLiteral(entryIterator); - }; - Object.defineProperty(AbstractMap$get_AbstractMap$values$ObjectLiteral.prototype, 'size', {get: function () { - return this.this$AbstractMap.size; - }}); - AbstractMap$get_AbstractMap$values$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractCollection]}; - Object.defineProperty(AbstractMap.prototype, 'values', {get: function () { - if (this._values_6nw1f1$_0 == null) { - this._values_6nw1f1$_0 = new AbstractMap$get_AbstractMap$values$ObjectLiteral(this); - } - return ensureNotNull(this._values_6nw1f1$_0); - }}); - AbstractMap.prototype.implFindEntry_8k1i24$_0 = function (key) { - var $receiver = this.entries; - var firstOrNull$result; - firstOrNull$break: do { - var tmp$; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (equals(element.key, key)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - return firstOrNull$result; - }; - function AbstractMap$Companion() { - AbstractMap$Companion_instance = this; - } - AbstractMap$Companion.prototype.entryHashCode_9fthdn$ = function (e) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - return ((tmp$_0 = (tmp$ = e.key) != null ? hashCode(tmp$) : null) != null ? tmp$_0 : 0) ^ ((tmp$_2 = (tmp$_1 = e.value) != null ? hashCode(tmp$_1) : null) != null ? tmp$_2 : 0); - }; - AbstractMap$Companion.prototype.entryToString_9fthdn$ = function (e) { - return toString(e.key) + '=' + toString(e.value); - }; - AbstractMap$Companion.prototype.entryEquals_js7fox$ = function (e, other) { - if (!Kotlin.isType(other, Map$Entry)) - return false; - return equals(e.key, other.key) && equals(e.value, other.value); - }; - AbstractMap$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var AbstractMap$Companion_instance = null; - function AbstractMap$Companion_getInstance() { - if (AbstractMap$Companion_instance === null) { - new AbstractMap$Companion(); - } - return AbstractMap$Companion_instance; - } - AbstractMap.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractMap', interfaces: [Map]}; - function AbstractSet() { - AbstractSet$Companion_getInstance(); - AbstractCollection.call(this); - } - AbstractSet.prototype.equals = function (other) { - if (other === this) - return true; - if (!Kotlin.isType(other, Set)) - return false; - return AbstractSet$Companion_getInstance().setEquals_y8f7en$(this, other); - }; - AbstractSet.prototype.hashCode = function () { - return AbstractSet$Companion_getInstance().unorderedHashCode_nykoif$(this); - }; - function AbstractSet$Companion() { - AbstractSet$Companion_instance = this; - } - AbstractSet$Companion.prototype.unorderedHashCode_nykoif$ = function (c) { - var tmp$; - var hashCode_0 = 0; - tmp$ = c.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - var tmp$_0; - hashCode_0 = hashCode_0 + ((tmp$_0 = element != null ? hashCode(element) : null) != null ? tmp$_0 : 0) | 0; - } - return hashCode_0; - }; - AbstractSet$Companion.prototype.setEquals_y8f7en$ = function (c, other) { - if (c.size !== other.size) - return false; - return c.containsAll_brywnq$(other); - }; - AbstractSet$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var AbstractSet$Companion_instance = null; - function AbstractSet$Companion_getInstance() { - if (AbstractSet$Companion_instance === null) { - new AbstractSet$Companion(); - } - return AbstractSet$Companion_instance; - } - AbstractSet.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractSet', interfaces: [Set, AbstractCollection]}; - function flatten($receiver) { - var tmp$; - var tmp$_0; - var sum = 0; - for (tmp$_0 = 0; tmp$_0 !== $receiver.length; ++tmp$_0) { - var element = $receiver[tmp$_0]; - sum = sum + element.length | 0; - } - var result = ArrayList_init_0(sum); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element_0 = $receiver[tmp$]; - addAll_1(result, element_0); - } - return result; - } - function unzip($receiver) { - var tmp$; - var listT = ArrayList_init_0($receiver.length); - var listR = ArrayList_init_0($receiver.length); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var pair = $receiver[tmp$]; - listT.add_11rb$(pair.first); - listR.add_11rb$(pair.second); - } - return to(listT, listR); - } - var isNullOrEmpty = defineInlineFunction('kotlin.kotlin.collections.isNullOrEmpty_tfvi98$', wrapFunction(function () { - return function ($receiver) { - var tmp$ = $receiver == null; - if (!tmp$) { - tmp$ = $receiver.length === 0; - } - return tmp$; - }; - })); - var ifEmpty = defineInlineFunction('kotlin.kotlin.collections.ifEmpty_wfsi02$', function ($receiver, defaultValue) { - return $receiver.length === 0 ? defaultValue() : $receiver; - }); - function contentDeepEqualsImpl($receiver, other) { - if ($receiver === other) - return true; - if ($receiver.length !== other.length) - return false; - for (var i = 0; i !== $receiver.length; ++i) { - var v1 = $receiver[i]; - var v2 = other[i]; - if (v1 === v2) { - continue; - } - else if (v1 == null || v2 == null) { - return false; - } - if (Kotlin.isArray(v1) && Kotlin.isArray(v2)) { - if (!contentDeepEquals(v1, v2)) - return false; - } - else if (Kotlin.isByteArray(v1) && Kotlin.isByteArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isShortArray(v1) && Kotlin.isShortArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isIntArray(v1) && Kotlin.isIntArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isLongArray(v1) && Kotlin.isLongArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isFloatArray(v1) && Kotlin.isFloatArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isDoubleArray(v1) && Kotlin.isDoubleArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isCharArray(v1) && Kotlin.isCharArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isBooleanArray(v1) && Kotlin.isBooleanArray(v2)) { - if (!contentEquals(v1, v2)) - return false; - } - else if (Kotlin.isType(v1, UByteArray) && Kotlin.isType(v2, UByteArray)) { - if (!contentEquals_2(v1, v2)) - return false; - } - else if (Kotlin.isType(v1, UShortArray) && Kotlin.isType(v2, UShortArray)) { - if (!contentEquals_3(v1, v2)) - return false; - } - else if (Kotlin.isType(v1, UIntArray) && Kotlin.isType(v2, UIntArray)) { - if (!contentEquals_0(v1, v2)) - return false; - } - else if (Kotlin.isType(v1, ULongArray) && Kotlin.isType(v2, ULongArray)) { - if (!contentEquals_1(v1, v2)) - return false; - } - else if (!equals(v1, v2)) - return false; - } - return true; - } - function contentDeepToStringImpl($receiver) { - var length = (coerceAtMost_2($receiver.length, 429496729) * 5 | 0) + 2 | 0; - var $receiver_0 = StringBuilder_init(length); - contentDeepToStringInternal($receiver, $receiver_0, ArrayList_init()); - return $receiver_0.toString(); - } - function contentDeepToStringInternal($receiver, result, processed) { - if (processed.contains_11rb$($receiver)) { - result.append_gw00v9$('[...]'); - return; - } - processed.add_11rb$($receiver); - result.append_s8itvh$(91); - for (var i = 0; i !== $receiver.length; ++i) { - if (i !== 0) { - result.append_gw00v9$(', '); - } - var element = $receiver[i]; - if (element == null) - result.append_gw00v9$('null'); - else if (Kotlin.isArray(element)) - contentDeepToStringInternal(element, result, processed); - else if (Kotlin.isByteArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isShortArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isIntArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isLongArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isFloatArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isDoubleArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isCharArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isBooleanArray(element)) - result.append_gw00v9$(arrayToString(element)); - else if (Kotlin.isType(element, UByteArray)) - result.append_gw00v9$(contentToString_1(element)); - else if (Kotlin.isType(element, UShortArray)) - result.append_gw00v9$(contentToString_2(element)); - else if (Kotlin.isType(element, UIntArray)) - result.append_gw00v9$(contentToString(element)); - else if (Kotlin.isType(element, ULongArray)) - result.append_gw00v9$(contentToString_0(element)); - else - result.append_gw00v9$(element.toString()); - } - result.append_s8itvh$(93); - processed.removeAt_za3lpa$(get_lastIndex_8(processed)); - } - function EmptyIterator() { - EmptyIterator_instance = this; - } - EmptyIterator.prototype.hasNext = function () { - return false; - }; - EmptyIterator.prototype.hasPrevious = function () { - return false; - }; - EmptyIterator.prototype.nextIndex = function () { - return 0; - }; - EmptyIterator.prototype.previousIndex = function () { - return -1; - }; - EmptyIterator.prototype.next = function () { - throw NoSuchElementException_init(); - }; - EmptyIterator.prototype.previous = function () { - throw NoSuchElementException_init(); - }; - EmptyIterator.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptyIterator', interfaces: [ListIterator]}; - var EmptyIterator_instance = null; - function EmptyIterator_getInstance() { - if (EmptyIterator_instance === null) { - new EmptyIterator(); - } - return EmptyIterator_instance; - } - function EmptyList() { - EmptyList_instance = this; - this.serialVersionUID_0 = L_7390468764508069838; - } - EmptyList.prototype.equals = function (other) { - return Kotlin.isType(other, List) && other.isEmpty(); - }; - EmptyList.prototype.hashCode = function () { - return 1; - }; - EmptyList.prototype.toString = function () { - return '[]'; - }; - Object.defineProperty(EmptyList.prototype, 'size', {get: function () { - return 0; - }}); - EmptyList.prototype.isEmpty = function () { - return true; - }; - EmptyList.prototype.contains_11rb$ = function (element) { - return false; - }; - EmptyList.prototype.containsAll_brywnq$ = function (elements) { - return elements.isEmpty(); - }; - EmptyList.prototype.get_za3lpa$ = function (index) { - throw new IndexOutOfBoundsException("Empty list doesn't contain element at index " + index + '.'); - }; - EmptyList.prototype.indexOf_11rb$ = function (element) { - return -1; - }; - EmptyList.prototype.lastIndexOf_11rb$ = function (element) { - return -1; - }; - EmptyList.prototype.iterator = function () { - return EmptyIterator_getInstance(); - }; - EmptyList.prototype.listIterator = function () { - return EmptyIterator_getInstance(); - }; - EmptyList.prototype.listIterator_za3lpa$ = function (index) { - if (index !== 0) - throw new IndexOutOfBoundsException('Index: ' + index); - return EmptyIterator_getInstance(); - }; - EmptyList.prototype.subList_vux9f0$ = function (fromIndex, toIndex) { - if (fromIndex === 0 && toIndex === 0) - return this; - throw new IndexOutOfBoundsException('fromIndex: ' + fromIndex + ', toIndex: ' + toIndex); - }; - EmptyList.prototype.readResolve_0 = function () { - return EmptyList_getInstance(); - }; - EmptyList.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptyList', interfaces: [RandomAccess, Serializable, List]}; - var EmptyList_instance = null; - function EmptyList_getInstance() { - if (EmptyList_instance === null) { - new EmptyList(); - } - return EmptyList_instance; - } - function asCollection($receiver) { - return new ArrayAsCollection($receiver, false); - } - function ArrayAsCollection(values, isVarargs) { - this.values = values; - this.isVarargs = isVarargs; - } - Object.defineProperty(ArrayAsCollection.prototype, 'size', {get: function () { - return this.values.length; - }}); - ArrayAsCollection.prototype.isEmpty = function () { - return this.values.length === 0; - }; - ArrayAsCollection.prototype.contains_11rb$ = function (element) { - return contains(this.values, element); - }; - ArrayAsCollection.prototype.containsAll_brywnq$ = function (elements) { - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!this.contains_11rb$(element)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - ArrayAsCollection.prototype.iterator = function () { - return Kotlin.arrayIterator(this.values); - }; - ArrayAsCollection.prototype.toArray = function () { - var $receiver = this.values; - return this.isVarargs ? $receiver : $receiver.slice(); - }; - ArrayAsCollection.$metadata$ = {kind: Kind_CLASS, simpleName: 'ArrayAsCollection', interfaces: [Collection]}; - function emptyList() { - return EmptyList_getInstance(); - } - function listOf_0(elements) { - return elements.length > 0 ? asList(elements) : emptyList(); - } - var listOf_1 = defineInlineFunction('kotlin.kotlin.collections.listOf_287e2$', wrapFunction(function () { - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function () { - return emptyList(); - }; - })); - var mutableListOf = defineInlineFunction('kotlin.kotlin.collections.mutableListOf_287e2$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function () { - return ArrayList_init(); - }; - })); - var arrayListOf = defineInlineFunction('kotlin.kotlin.collections.arrayListOf_287e2$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - return function () { - return ArrayList_init(); - }; - })); - function mutableListOf_0(elements) { - return elements.length === 0 ? ArrayList_init() : ArrayList_init_1(new ArrayAsCollection(elements, true)); - } - function arrayListOf_0(elements) { - return elements.length === 0 ? ArrayList_init() : ArrayList_init_1(new ArrayAsCollection(elements, true)); - } - function listOfNotNull(element) { - return element != null ? listOf(element) : emptyList(); - } - function listOfNotNull_0(elements) { - return filterNotNull(elements); - } - var List_0 = defineInlineFunction('kotlin.kotlin.collections.List_rz0iom$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function (size, init) { - var list = ArrayList_init(size); - for (var index = 0; index < size; index++) { - list.add_11rb$(init(index)); - } - return list; - }; - })); - var MutableList_0 = defineInlineFunction('kotlin.kotlin.collections.MutableList_rz0iom$', wrapFunction(function () { - var ArrayList_init = _.kotlin.collections.ArrayList_init_ww73n8$; - return function (size, init) { - var list = ArrayList_init(size); - for (var index = 0; index < size; index++) { - list.add_11rb$(init(index)); - } - return list; - }; - })); - function get_indices_8($receiver) { - return new IntRange(0, $receiver.size - 1 | 0); - } - function get_lastIndex_8($receiver) { - return $receiver.size - 1 | 0; - } - var isNotEmpty_8 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_4c7yge$', function ($receiver) { - return !$receiver.isEmpty(); - }); - var isNullOrEmpty_0 = defineInlineFunction('kotlin.kotlin.collections.isNullOrEmpty_13nbcr$', wrapFunction(function () { - return function ($receiver) { - return $receiver == null || $receiver.isEmpty(); - }; - })); - var orEmpty_0 = defineInlineFunction('kotlin.kotlin.collections.orEmpty_13nbcr$', wrapFunction(function () { - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver) { - return $receiver != null ? $receiver : emptyList(); - }; - })); - var orEmpty_1 = defineInlineFunction('kotlin.kotlin.collections.orEmpty_63d8zf$', wrapFunction(function () { - var emptyList = _.kotlin.collections.emptyList_287e2$; - return function ($receiver) { - return $receiver != null ? $receiver : emptyList(); - }; - })); - var ifEmpty_0 = defineInlineFunction('kotlin.kotlin.collections.ifEmpty_tc13va$', function ($receiver, defaultValue) { - return $receiver.isEmpty() ? defaultValue() : $receiver; - }); - var containsAll = defineInlineFunction('kotlin.kotlin.collections.containsAll_4mi8vl$', function ($receiver, elements) { - return $receiver.containsAll_brywnq$(elements); - }); - function optimizeReadOnlyList($receiver) { - switch ($receiver.size) { - case 0: - return emptyList(); - case 1: - return listOf($receiver.get_za3lpa$(0)); - default:return $receiver; - } - } - function binarySearch($receiver, element, fromIndex, toIndex) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = $receiver.size; - rangeCheck($receiver.size, fromIndex, toIndex); - var low = fromIndex; - var high = toIndex - 1 | 0; - while (low <= high) { - var mid = low + high >>> 1; - var midVal = $receiver.get_za3lpa$(mid); - var cmp = compareValues(midVal, element); - if (cmp < 0) - low = mid + 1 | 0; - else if (cmp > 0) - high = mid - 1 | 0; - else - return mid; - } - return -(low + 1 | 0) | 0; - } - function binarySearch_0($receiver, element, comparator, fromIndex, toIndex) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = $receiver.size; - rangeCheck($receiver.size, fromIndex, toIndex); - var low = fromIndex; - var high = toIndex - 1 | 0; - while (low <= high) { - var mid = low + high >>> 1; - var midVal = $receiver.get_za3lpa$(mid); - var cmp = comparator.compare(midVal, element); - if (cmp < 0) - low = mid + 1 | 0; - else if (cmp > 0) - high = mid - 1 | 0; - else - return mid; - } - return -(low + 1 | 0) | 0; - } - var binarySearchBy = defineInlineFunction('kotlin.kotlin.collections.binarySearchBy_7gj2ve$', wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - var binarySearch = _.kotlin.collections.binarySearch_sr7qim$; - function binarySearchBy$lambda(closure$selector, closure$key) { - return function (it) { - return compareValues(closure$selector(it), closure$key); - }; - } - return function ($receiver, key, fromIndex, toIndex, selector) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = $receiver.size; - return binarySearch($receiver, fromIndex, toIndex, binarySearchBy$lambda(selector, key)); - }; - })); - function binarySearch_1($receiver, fromIndex, toIndex, comparison) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = $receiver.size; - rangeCheck($receiver.size, fromIndex, toIndex); - var low = fromIndex; - var high = toIndex - 1 | 0; - while (low <= high) { - var mid = low + high >>> 1; - var midVal = $receiver.get_za3lpa$(mid); - var cmp = comparison(midVal); - if (cmp < 0) - low = mid + 1 | 0; - else if (cmp > 0) - high = mid - 1 | 0; - else - return mid; - } - return -(low + 1 | 0) | 0; - } - function rangeCheck(size, fromIndex, toIndex) { - if (fromIndex > toIndex) - throw IllegalArgumentException_init_0('fromIndex (' + fromIndex + ') is greater than toIndex (' + toIndex + ').'); - else if (fromIndex < 0) - throw new IndexOutOfBoundsException('fromIndex (' + fromIndex + ') is less than zero.'); - else if (toIndex > size) - throw new IndexOutOfBoundsException('toIndex (' + toIndex + ') is greater than size (' + size + ').'); - } - function throwIndexOverflow() { - throw new ArithmeticException('Index overflow has happened.'); - } - function throwCountOverflow() { - throw new ArithmeticException('Count overflow has happened.'); - } - function Grouping() { - } - Grouping.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Grouping', interfaces: []}; - var aggregate = defineInlineFunction('kotlin.kotlin.collections.aggregate_kz95qp$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, operation) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - destination.put_xwzc9p$(key, operation(key, accumulator, e, accumulator == null && !destination.containsKey_11rb$(key))); - } - return destination; - }; - })); - var aggregateTo = defineInlineFunction('kotlin.kotlin.collections.aggregateTo_qtifb3$', function ($receiver, destination, operation) { - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - destination.put_xwzc9p$(key, operation(key, accumulator, e, accumulator == null && !destination.containsKey_11rb$(key))); - } - return destination; - }); - var fold_11 = defineInlineFunction('kotlin.kotlin.collections.fold_2g9ybd$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, initialValueSelector, operation) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var tmp$_0; - destination.put_xwzc9p$(key, operation(key, accumulator == null && !destination.containsKey_11rb$(key) ? initialValueSelector(key, e) : (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e)); - } - return destination; - }; - })); - var foldTo = defineInlineFunction('kotlin.kotlin.collections.foldTo_ldb57n$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, destination, initialValueSelector, operation) { - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var tmp$_0; - destination.put_xwzc9p$(key, operation(key, accumulator == null && !destination.containsKey_11rb$(key) ? initialValueSelector(key, e) : (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e)); - } - return destination; - }; - })); - var fold_12 = defineInlineFunction('kotlin.kotlin.collections.fold_id3q3f$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, initialValue, operation) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var tmp$_0; - destination.put_xwzc9p$(key, operation(accumulator == null && !destination.containsKey_11rb$(key) ? initialValue : (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e)); - } - return destination; - }; - })); - var foldTo_0 = defineInlineFunction('kotlin.kotlin.collections.foldTo_1dwgsv$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, destination, initialValue, operation) { - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var tmp$_0; - destination.put_xwzc9p$(key, operation(accumulator == null && !destination.containsKey_11rb$(key) ? initialValue : (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e)); - } - return destination; - }; - })); - var reduce_11 = defineInlineFunction('kotlin.kotlin.collections.reduce_hy0spo$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, operation) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var operation$result; - var tmp$_0; - if (accumulator == null && !destination.containsKey_11rb$(key)) { - operation$result = e; - } - else { - operation$result = operation(key, (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e); - } - destination.put_xwzc9p$(key, operation$result); - } - return destination; - }; - })); - var reduceTo = defineInlineFunction('kotlin.kotlin.collections.reduceTo_vpctix$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, destination, operation) { - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var operation$result; - var tmp$_0; - if (accumulator == null && !destination.containsKey_11rb$(key)) { - operation$result = e; - } - else { - operation$result = operation(key, (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), e); - } - destination.put_xwzc9p$(key, operation$result); - } - return destination; - }; - })); - function eachCountTo($receiver, destination) { - var tmp$; - tmp$ = $receiver.sourceIterator(); - while (tmp$.hasNext()) { - var e = tmp$.next(); - var key = $receiver.keyOf_11rb$(e); - var accumulator = destination.get_11rb$(key); - var tmp$_0; - destination.put_xwzc9p$(key, (accumulator == null && !destination.containsKey_11rb$(key) ? 0 : (tmp$_0 = accumulator) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE()) + 1 | 0); - } - return destination; - } - function IndexedValue(index, value) { - this.index = index; - this.value = value; - } - IndexedValue.$metadata$ = {kind: Kind_CLASS, simpleName: 'IndexedValue', interfaces: []}; - IndexedValue.prototype.component1 = function () { - return this.index; - }; - IndexedValue.prototype.component2 = function () { - return this.value; - }; - IndexedValue.prototype.copy_wxm5ur$ = function (index, value) { - return new IndexedValue(index === void 0 ? this.index : index, value === void 0 ? this.value : value); - }; - IndexedValue.prototype.toString = function () { - return 'IndexedValue(index=' + Kotlin.toString(this.index) + (', value=' + Kotlin.toString(this.value)) + ')'; - }; - IndexedValue.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.index) | 0; - result = result * 31 + Kotlin.hashCode(this.value) | 0; - return result; - }; - IndexedValue.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.index, other.index) && Kotlin.equals(this.value, other.value))))); - }; - var Iterable_0 = defineInlineFunction('kotlin.kotlin.collections.Iterable_ms0qmx$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Iterable = _.kotlin.collections.Iterable; - function Iterable$ObjectLiteral(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Iterable$ObjectLiteral.prototype.iterator = function () { - return this.closure$iterator(); - }; - Iterable$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterable]}; - return function (iterator) { - return new Iterable$ObjectLiteral(iterator); - }; - })); - function IndexingIterable(iteratorFactory) { - this.iteratorFactory_0 = iteratorFactory; - } - IndexingIterable.prototype.iterator = function () { - return new IndexingIterator(this.iteratorFactory_0()); - }; - IndexingIterable.$metadata$ = {kind: Kind_CLASS, simpleName: 'IndexingIterable', interfaces: [Iterable]}; - function collectionSizeOrNull($receiver) { - return Kotlin.isType($receiver, Collection) ? $receiver.size : null; - } - function collectionSizeOrDefault($receiver, default_0) { - return Kotlin.isType($receiver, Collection) ? $receiver.size : default_0; - } - function safeToConvertToSet($receiver) { - return $receiver.size > 2 && Kotlin.isType($receiver, ArrayList); - } - function convertToSetForSetOperationWith($receiver, source) { - if (Kotlin.isType($receiver, Set)) - return $receiver; - else if (Kotlin.isType($receiver, Collection)) - if (Kotlin.isType(source, Collection) && source.size < 2) - return $receiver; - else - return safeToConvertToSet($receiver) ? toHashSet_8($receiver) : $receiver; - else - return toHashSet_8($receiver); - } - function convertToSetForSetOperation($receiver) { - if (Kotlin.isType($receiver, Set)) - return $receiver; - else if (Kotlin.isType($receiver, Collection)) - return safeToConvertToSet($receiver) ? toHashSet_8($receiver) : $receiver; - else - return toHashSet_8($receiver); - } - function flatten_0($receiver) { - var tmp$; - var result = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - addAll(result, element); - } - return result; - } - function unzip_0($receiver) { - var tmp$; - var expectedSize = collectionSizeOrDefault($receiver, 10); - var listT = ArrayList_init_0(expectedSize); - var listR = ArrayList_init_0(expectedSize); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var pair = tmp$.next(); - listT.add_11rb$(pair.first); - listR.add_11rb$(pair.second); - } - return to(listT, listR); - } - var iterator_0 = defineInlineFunction('kotlin.kotlin.collections.iterator_35ci02$', function ($receiver) { - return $receiver; - }); - function withIndex_11($receiver) { - return new IndexingIterator($receiver); - } - var forEach_12 = defineInlineFunction('kotlin.kotlin.collections.forEach_p594rv$', function ($receiver, operation) { - while ($receiver.hasNext()) { - var element = $receiver.next(); - operation(element); - } - }); - function IndexingIterator(iterator) { - this.iterator_0 = iterator; - this.index_0 = 0; - } - IndexingIterator.prototype.hasNext = function () { - return this.iterator_0.hasNext(); - }; - IndexingIterator.prototype.next = function () { - var tmp$; - return new IndexedValue(checkIndexOverflow((tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$)), this.iterator_0.next()); - }; - IndexingIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'IndexingIterator', interfaces: [Iterator]}; - var getValue = defineInlineFunction('kotlin.kotlin.collections.getValue_u8h43m$', wrapFunction(function () { - var getOrImplicitDefault = _.kotlin.collections.getOrImplicitDefault_t9ocha$; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, thisRef, property) { - var tmp$; - return (tmp$ = getOrImplicitDefault($receiver, property.callableName)) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - }; - })); - var getValue_0 = defineInlineFunction('kotlin.kotlin.collections.getValue_th1e6g$', wrapFunction(function () { - var getOrImplicitDefault = _.kotlin.collections.getOrImplicitDefault_t9ocha$; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, thisRef, property) { - var tmp$; - return (tmp$ = getOrImplicitDefault($receiver, property.callableName)) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - }; - })); - var getValue_1 = defineInlineFunction('kotlin.kotlin.collections.getValue_ag2o6f$', wrapFunction(function () { - var getOrImplicitDefault = _.kotlin.collections.getOrImplicitDefault_t9ocha$; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, thisRef, property) { - var tmp$; - return (tmp$ = getOrImplicitDefault($receiver, property.callableName)) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - }; - })); - var setValue = defineInlineFunction('kotlin.kotlin.collections.setValue_p0hbkv$', function ($receiver, thisRef, property, value) { - $receiver.put_xwzc9p$(property.callableName, value); - }); - function getOrImplicitDefault($receiver, key) { - if (Kotlin.isType($receiver, MapWithDefault)) - return $receiver.getOrImplicitDefault_11rb$(key); - var getOrElseNullable$result; - var tmp$; - var value = $receiver.get_11rb$(key); - if (value == null && !$receiver.containsKey_11rb$(key)) { - throw new NoSuchElementException('Key ' + key + ' is missing in the map.'); - } - else { - getOrElseNullable$result = (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } - return getOrElseNullable$result; - } - function withDefault($receiver, defaultValue) { - if (Kotlin.isType($receiver, MapWithDefault)) - return withDefault($receiver.map, defaultValue); - else - return new MapWithDefaultImpl($receiver, defaultValue); - } - function withDefault_0($receiver, defaultValue) { - if (Kotlin.isType($receiver, MutableMapWithDefault)) - return withDefault_0($receiver.map, defaultValue); - else - return new MutableMapWithDefaultImpl($receiver, defaultValue); - } - function MapWithDefault() { - } - MapWithDefault.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MapWithDefault', interfaces: [Map]}; - function MutableMapWithDefault() { - } - MutableMapWithDefault.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MutableMapWithDefault', interfaces: [MapWithDefault, MutableMap]}; - function MapWithDefaultImpl(map, default_0) { - this.map_tyjeqh$_0 = map; - this.default_0 = default_0; - } - Object.defineProperty(MapWithDefaultImpl.prototype, 'map', {get: function () { - return this.map_tyjeqh$_0; - }}); - MapWithDefaultImpl.prototype.equals = function (other) { - return equals(this.map, other); - }; - MapWithDefaultImpl.prototype.hashCode = function () { - return hashCode(this.map); - }; - MapWithDefaultImpl.prototype.toString = function () { - return this.map.toString(); - }; - Object.defineProperty(MapWithDefaultImpl.prototype, 'size', {get: function () { - return this.map.size; - }}); - MapWithDefaultImpl.prototype.isEmpty = function () { - return this.map.isEmpty(); - }; - MapWithDefaultImpl.prototype.containsKey_11rb$ = function (key) { - return this.map.containsKey_11rb$(key); - }; - MapWithDefaultImpl.prototype.containsValue_11rc$ = function (value) { - return this.map.containsValue_11rc$(value); - }; - MapWithDefaultImpl.prototype.get_11rb$ = function (key) { - return this.map.get_11rb$(key); - }; - Object.defineProperty(MapWithDefaultImpl.prototype, 'keys', {get: function () { - return this.map.keys; - }}); - Object.defineProperty(MapWithDefaultImpl.prototype, 'values', {get: function () { - return this.map.values; - }}); - Object.defineProperty(MapWithDefaultImpl.prototype, 'entries', {get: function () { - return this.map.entries; - }}); - MapWithDefaultImpl.prototype.getOrImplicitDefault_11rb$ = function (key) { - var $receiver = this.map; - var getOrElseNullable$result; - var tmp$; - var value = $receiver.get_11rb$(key); - if (value == null && !$receiver.containsKey_11rb$(key)) { - getOrElseNullable$result = this.default_0(key); - } - else { - getOrElseNullable$result = (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } - return getOrElseNullable$result; - }; - MapWithDefaultImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'MapWithDefaultImpl', interfaces: [MapWithDefault]}; - function MutableMapWithDefaultImpl(map, default_0) { - this.map_a09uzx$_0 = map; - this.default_0 = default_0; - } - Object.defineProperty(MutableMapWithDefaultImpl.prototype, 'map', {get: function () { - return this.map_a09uzx$_0; - }}); - MutableMapWithDefaultImpl.prototype.equals = function (other) { - return equals(this.map, other); - }; - MutableMapWithDefaultImpl.prototype.hashCode = function () { - return hashCode(this.map); - }; - MutableMapWithDefaultImpl.prototype.toString = function () { - return this.map.toString(); - }; - Object.defineProperty(MutableMapWithDefaultImpl.prototype, 'size', {get: function () { - return this.map.size; - }}); - MutableMapWithDefaultImpl.prototype.isEmpty = function () { - return this.map.isEmpty(); - }; - MutableMapWithDefaultImpl.prototype.containsKey_11rb$ = function (key) { - return this.map.containsKey_11rb$(key); - }; - MutableMapWithDefaultImpl.prototype.containsValue_11rc$ = function (value) { - return this.map.containsValue_11rc$(value); - }; - MutableMapWithDefaultImpl.prototype.get_11rb$ = function (key) { - return this.map.get_11rb$(key); - }; - Object.defineProperty(MutableMapWithDefaultImpl.prototype, 'keys', {get: function () { - return this.map.keys; - }}); - Object.defineProperty(MutableMapWithDefaultImpl.prototype, 'values', {get: function () { - return this.map.values; - }}); - Object.defineProperty(MutableMapWithDefaultImpl.prototype, 'entries', {get: function () { - return this.map.entries; - }}); - MutableMapWithDefaultImpl.prototype.put_xwzc9p$ = function (key, value) { - return this.map.put_xwzc9p$(key, value); - }; - MutableMapWithDefaultImpl.prototype.remove_11rb$ = function (key) { - return this.map.remove_11rb$(key); - }; - MutableMapWithDefaultImpl.prototype.putAll_a2k3zr$ = function (from) { - this.map.putAll_a2k3zr$(from); - }; - MutableMapWithDefaultImpl.prototype.clear = function () { - this.map.clear(); - }; - MutableMapWithDefaultImpl.prototype.getOrImplicitDefault_11rb$ = function (key) { - var $receiver = this.map; - var getOrElseNullable$result; - var tmp$; - var value = $receiver.get_11rb$(key); - if (value == null && !$receiver.containsKey_11rb$(key)) { - getOrElseNullable$result = this.default_0(key); - } - else { - getOrElseNullable$result = (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } - return getOrElseNullable$result; - }; - MutableMapWithDefaultImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'MutableMapWithDefaultImpl', interfaces: [MutableMapWithDefault]}; - function EmptyMap() { - EmptyMap_instance = this; - this.serialVersionUID_0 = L8246714829545688274; - } - EmptyMap.prototype.equals = function (other) { - return Kotlin.isType(other, Map) && other.isEmpty(); - }; - EmptyMap.prototype.hashCode = function () { - return 0; - }; - EmptyMap.prototype.toString = function () { - return '{}'; - }; - Object.defineProperty(EmptyMap.prototype, 'size', {get: function () { - return 0; - }}); - EmptyMap.prototype.isEmpty = function () { - return true; - }; - EmptyMap.prototype.containsKey_11rb$ = function (key) { - return false; - }; - EmptyMap.prototype.containsValue_11rc$ = function (value) { - return false; - }; - EmptyMap.prototype.get_11rb$ = function (key) { - return null; - }; - Object.defineProperty(EmptyMap.prototype, 'entries', {get: function () { - return EmptySet_getInstance(); - }}); - Object.defineProperty(EmptyMap.prototype, 'keys', {get: function () { - return EmptySet_getInstance(); - }}); - Object.defineProperty(EmptyMap.prototype, 'values', {get: function () { - return EmptyList_getInstance(); - }}); - EmptyMap.prototype.readResolve_0 = function () { - return EmptyMap_getInstance(); - }; - EmptyMap.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptyMap', interfaces: [Serializable, Map]}; - var EmptyMap_instance = null; - function EmptyMap_getInstance() { - if (EmptyMap_instance === null) { - new EmptyMap(); - } - return EmptyMap_instance; - } - function emptyMap() { - var tmp$; - return Kotlin.isType(tmp$ = EmptyMap_getInstance(), Map) ? tmp$ : throwCCE_0(); - } - function mapOf_0(pairs) { - return pairs.length > 0 ? toMap_2(pairs, LinkedHashMap_init_2(mapCapacity(pairs.length))) : emptyMap(); - } - var mapOf_1 = defineInlineFunction('kotlin.kotlin.collections.mapOf_q3lmfv$', wrapFunction(function () { - var emptyMap = _.kotlin.collections.emptyMap_q3lmfv$; - return function () { - return emptyMap(); - }; - })); - var mutableMapOf = defineInlineFunction('kotlin.kotlin.collections.mutableMapOf_q3lmfv$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function () { - return LinkedHashMap_init(); - }; - })); - function mutableMapOf_0(pairs) { - var $receiver = LinkedHashMap_init_2(mapCapacity(pairs.length)); - putAll($receiver, pairs); - return $receiver; - } - var hashMapOf = defineInlineFunction('kotlin.kotlin.collections.hashMapOf_q3lmfv$', wrapFunction(function () { - var HashMap_init = _.kotlin.collections.HashMap_init_q3lmfv$; - return function () { - return HashMap_init(); - }; - })); - function hashMapOf_0(pairs) { - var $receiver = HashMap_init_2(mapCapacity(pairs.length)); - putAll($receiver, pairs); - return $receiver; - } - var linkedMapOf = defineInlineFunction('kotlin.kotlin.collections.linkedMapOf_q3lmfv$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function () { - return LinkedHashMap_init(); - }; - })); - function linkedMapOf_0(pairs) { - return toMap_2(pairs, LinkedHashMap_init_2(mapCapacity(pairs.length))); - } - function mapCapacity(expectedSize) { - if (expectedSize < 3) { - return expectedSize + 1 | 0; - } - if (expectedSize < 1073741824) { - return expectedSize + (expectedSize / 3 | 0) | 0; - } - return 2147483647; - } - var INT_MAX_POWER_OF_TWO; - var isNotEmpty_9 = defineInlineFunction('kotlin.kotlin.collections.isNotEmpty_abgq59$', function ($receiver) { - return !$receiver.isEmpty(); - }); - var isNullOrEmpty_1 = defineInlineFunction('kotlin.kotlin.collections.isNullOrEmpty_13qzv0$', wrapFunction(function () { - return function ($receiver) { - return $receiver == null || $receiver.isEmpty(); - }; - })); - var orEmpty_2 = defineInlineFunction('kotlin.kotlin.collections.orEmpty_f3wkhh$', wrapFunction(function () { - var emptyMap = _.kotlin.collections.emptyMap_q3lmfv$; - return function ($receiver) { - return $receiver != null ? $receiver : emptyMap(); - }; - })); - var ifEmpty_1 = defineInlineFunction('kotlin.kotlin.collections.ifEmpty_geskui$', function ($receiver, defaultValue) { - return $receiver.isEmpty() ? defaultValue() : $receiver; - }); - var contains_45 = defineInlineFunction('kotlin.kotlin.collections.contains_4pa84t$', wrapFunction(function () { - var Map = _.kotlin.collections.Map; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, key) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, Map) ? tmp$ : throwCCE()).containsKey_11rb$(key); - }; - })); - var get_46 = defineInlineFunction('kotlin.kotlin.collections.get_4pa84t$', wrapFunction(function () { - var Map = _.kotlin.collections.Map; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, key) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, Map) ? tmp$ : throwCCE()).get_11rb$(key); - }; - })); - var set_19 = defineInlineFunction('kotlin.kotlin.collections.set_6y9eq4$', function ($receiver, key, value) { - $receiver.put_xwzc9p$(key, value); - }); - var containsKey = defineInlineFunction('kotlin.kotlin.collections.containsKey_ysgkzk$', wrapFunction(function () { - var Map = _.kotlin.collections.Map; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, key) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, Map) ? tmp$ : throwCCE()).containsKey_11rb$(key); - }; - })); - var containsValue = defineInlineFunction('kotlin.kotlin.collections.containsValue_bvbopf$', function ($receiver, value) { - return $receiver.containsValue_11rc$(value); - }); - var remove = defineInlineFunction('kotlin.kotlin.collections.remove_vbdv38$', wrapFunction(function () { - var MutableMap = _.kotlin.collections.MutableMap; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, key) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableMap) ? tmp$ : throwCCE()).remove_11rb$(key); - }; - })); - var component1_9 = defineInlineFunction('kotlin.kotlin.collections.component1_gzf0zl$', function ($receiver) { - return $receiver.key; - }); - var component2_9 = defineInlineFunction('kotlin.kotlin.collections.component2_gzf0zl$', function ($receiver) { - return $receiver.value; - }); - var toPair = defineInlineFunction('kotlin.kotlin.collections.toPair_gzf0zl$', wrapFunction(function () { - var Pair_init = _.kotlin.Pair; - return function ($receiver) { - return new Pair_init($receiver.key, $receiver.value); - }; - })); - var getOrElse_10 = defineInlineFunction('kotlin.kotlin.collections.getOrElse_illxjf$', function ($receiver, key, defaultValue) { - var tmp$; - return (tmp$ = $receiver.get_11rb$(key)) != null ? tmp$ : defaultValue(); - }); - var getOrElseNullable = defineInlineFunction('kotlin.kotlin.collections.getOrElseNullable_e54js$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, key, defaultValue) { - var tmp$; - var value = $receiver.get_11rb$(key); - if (value == null && !$receiver.containsKey_11rb$(key)) { - return defaultValue(); - } - else { - return (tmp$ = value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } - }; - })); - function getValue_2($receiver, key) { - return getOrImplicitDefault($receiver, key); - } - var getOrPut = defineInlineFunction('kotlin.kotlin.collections.getOrPut_9wl75a$', function ($receiver, key, defaultValue) { - var tmp$; - var value = $receiver.get_11rb$(key); - if (value == null) { - var answer = defaultValue(); - $receiver.put_xwzc9p$(key, answer); - tmp$ = answer; - } - else { - tmp$ = value; - } - return tmp$; - }); - var iterator_1 = defineInlineFunction('kotlin.kotlin.collections.iterator_abgq59$', function ($receiver) { - return $receiver.entries.iterator(); - }); - var iterator_2 = defineInlineFunction('kotlin.kotlin.collections.iterator_5rvit3$', function ($receiver) { - return $receiver.entries.iterator(); - }); - var mapValuesTo = defineInlineFunction('kotlin.kotlin.collections.mapValuesTo_8auxj8$', wrapFunction(function () { - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(element.key, transform(element)); - } - return destination; - }; - })); - var mapKeysTo = defineInlineFunction('kotlin.kotlin.collections.mapKeysTo_l1xmvz$', wrapFunction(function () { - return function ($receiver, destination, transform) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(transform(element), element.value); - } - return destination; - }; - })); - function putAll($receiver, pairs) { - var tmp$; - for (tmp$ = 0; tmp$ !== pairs.length; ++tmp$) { - var tmp$_0 = pairs[tmp$]; - var key = tmp$_0.component1(), value = tmp$_0.component2(); - $receiver.put_xwzc9p$(key, value); - } - } - function putAll_0($receiver, pairs) { - var tmp$; - tmp$ = pairs.iterator(); - while (tmp$.hasNext()) { - var tmp$_0 = tmp$.next(); - var key = tmp$_0.component1(), value = tmp$_0.component2(); - $receiver.put_xwzc9p$(key, value); - } - } - function putAll_1($receiver, pairs) { - var tmp$; - tmp$ = pairs.iterator(); - while (tmp$.hasNext()) { - var tmp$_0 = tmp$.next(); - var key = tmp$_0.component1(), value = tmp$_0.component2(); - $receiver.put_xwzc9p$(key, value); - } - } - var mapValues = defineInlineFunction('kotlin.kotlin.collections.mapValues_8169ik$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var destination = LinkedHashMap_init(mapCapacity($receiver.size)); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(element.key, transform(element)); - } - return destination; - }; - })); - var mapKeys = defineInlineFunction('kotlin.kotlin.collections.mapKeys_8169ik$', wrapFunction(function () { - var mapCapacity = _.kotlin.collections.mapCapacity_za3lpa$; - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_bwtc7$; - return function ($receiver, transform) { - var destination = LinkedHashMap_init(mapCapacity($receiver.size)); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - destination.put_xwzc9p$(transform(element), element.value); - } - return destination; - }; - })); - var filterKeys = defineInlineFunction('kotlin.kotlin.collections.filterKeys_bbcyu0$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, predicate) { - var tmp$; - var result = LinkedHashMap_init(); - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var entry = tmp$.next(); - if (predicate(entry.key)) { - result.put_xwzc9p$(entry.key, entry.value); - } - } - return result; - }; - })); - var filterValues = defineInlineFunction('kotlin.kotlin.collections.filterValues_btttvb$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, predicate) { - var tmp$; - var result = LinkedHashMap_init(); - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var entry = tmp$.next(); - if (predicate(entry.value)) { - result.put_xwzc9p$(entry.key, entry.value); - } - } - return result; - }; - })); - var filterTo_11 = defineInlineFunction('kotlin.kotlin.collections.filterTo_6i6lq2$', function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - destination.put_xwzc9p$(element.key, element.value); - } - } - return destination; - }); - var filter_12 = defineInlineFunction('kotlin.kotlin.collections.filter_9peqz9$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, predicate) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (predicate(element)) { - destination.put_xwzc9p$(element.key, element.value); - } - } - return destination; - }; - })); - var filterNotTo_11 = defineInlineFunction('kotlin.kotlin.collections.filterNotTo_6i6lq2$', function ($receiver, destination, predicate) { - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) { - destination.put_xwzc9p$(element.key, element.value); - } - } - return destination; - }); - var filterNot_12 = defineInlineFunction('kotlin.kotlin.collections.filterNot_9peqz9$', wrapFunction(function () { - var LinkedHashMap_init = _.kotlin.collections.LinkedHashMap_init_q3lmfv$; - return function ($receiver, predicate) { - var destination = LinkedHashMap_init(); - var tmp$; - tmp$ = $receiver.entries.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!predicate(element)) { - destination.put_xwzc9p$(element.key, element.value); - } - } - return destination; - }; - })); - function toMap($receiver) { - var tmp$; - if (Kotlin.isType($receiver, Collection)) { - switch ($receiver.size) { - case 0: - tmp$ = emptyMap(); - break; - case 1: - tmp$ = mapOf(Kotlin.isType($receiver, List) ? $receiver.get_za3lpa$(0) : $receiver.iterator().next()); - break; - default:tmp$ = toMap_0($receiver, LinkedHashMap_init_2(mapCapacity($receiver.size))); - break; - } - return tmp$; - } - return optimizeReadOnlyMap(toMap_0($receiver, LinkedHashMap_init())); - } - function toMap_0($receiver, destination) { - putAll_0(destination, $receiver); - return destination; - } - function toMap_1($receiver) { - switch ($receiver.length) { - case 0: - return emptyMap(); - case 1: - return mapOf($receiver[0]); - default:return toMap_2($receiver, LinkedHashMap_init_2(mapCapacity($receiver.length))); - } - } - function toMap_2($receiver, destination) { - putAll(destination, $receiver); - return destination; - } - function toMap_3($receiver) { - return optimizeReadOnlyMap(toMap_4($receiver, LinkedHashMap_init())); - } - function toMap_4($receiver, destination) { - putAll_1(destination, $receiver); - return destination; - } - function toMap_5($receiver) { - switch ($receiver.size) { - case 0: - return emptyMap(); - case 1: - return toMutableMap($receiver); - default:return toMutableMap($receiver); - } - } - function toMutableMap($receiver) { - return LinkedHashMap_init_3($receiver); - } - function toMap_6($receiver, destination) { - destination.putAll_a2k3zr$($receiver); - return destination; - } - function plus_42($receiver, pair) { - var tmp$; - if ($receiver.isEmpty()) - tmp$ = mapOf(pair); - else { - var $receiver_0 = LinkedHashMap_init_3($receiver); - $receiver_0.put_xwzc9p$(pair.first, pair.second); - tmp$ = $receiver_0; - } - return tmp$; - } - function plus_43($receiver, pairs) { - var tmp$; - if ($receiver.isEmpty()) - tmp$ = toMap(pairs); - else { - var $receiver_0 = LinkedHashMap_init_3($receiver); - putAll_0($receiver_0, pairs); - tmp$ = $receiver_0; - } - return tmp$; - } - function plus_44($receiver, pairs) { - var tmp$; - if ($receiver.isEmpty()) - tmp$ = toMap_1(pairs); - else { - var $receiver_0 = LinkedHashMap_init_3($receiver); - putAll($receiver_0, pairs); - tmp$ = $receiver_0; - } - return tmp$; - } - function plus_45($receiver, pairs) { - var $receiver_0 = LinkedHashMap_init_3($receiver); - putAll_1($receiver_0, pairs); - return optimizeReadOnlyMap($receiver_0); - } - function plus_46($receiver, map) { - var $receiver_0 = LinkedHashMap_init_3($receiver); - $receiver_0.putAll_a2k3zr$(map); - return $receiver_0; - } - var plusAssign = defineInlineFunction('kotlin.kotlin.collections.plusAssign_iu53pl$', function ($receiver, pair) { - $receiver.put_xwzc9p$(pair.first, pair.second); - }); - var plusAssign_0 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_cweazw$', wrapFunction(function () { - var putAll = _.kotlin.collections.putAll_cweazw$; - return function ($receiver, pairs) { - putAll($receiver, pairs); - }; - })); - var plusAssign_1 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_5gv49o$', wrapFunction(function () { - var putAll = _.kotlin.collections.putAll_5gv49o$; - return function ($receiver, pairs) { - putAll($receiver, pairs); - }; - })); - var plusAssign_2 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_2ud8ki$', wrapFunction(function () { - var putAll = _.kotlin.collections.putAll_2ud8ki$; - return function ($receiver, pairs) { - putAll($receiver, pairs); - }; - })); - var plusAssign_3 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_i7ax6h$', function ($receiver, map) { - $receiver.putAll_a2k3zr$(map); - }); - function minus_11($receiver, key) { - var $receiver_0 = toMutableMap($receiver); - $receiver_0.remove_11rb$(key); - return optimizeReadOnlyMap($receiver_0); - } - function minus_12($receiver, keys) { - var $receiver_0 = toMutableMap($receiver); - removeAll_2($receiver_0.keys, keys); - return optimizeReadOnlyMap($receiver_0); - } - function minus_13($receiver, keys) { - var $receiver_0 = toMutableMap($receiver); - removeAll_4($receiver_0.keys, keys); - return optimizeReadOnlyMap($receiver_0); - } - function minus_14($receiver, keys) { - var $receiver_0 = toMutableMap($receiver); - removeAll_3($receiver_0.keys, keys); - return optimizeReadOnlyMap($receiver_0); - } - var minusAssign = defineInlineFunction('kotlin.kotlin.collections.minusAssign_5rmzjt$', function ($receiver, key) { - $receiver.remove_11rb$(key); - }); - var minusAssign_0 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_zgveeq$', wrapFunction(function () { - var removeAll = _.kotlin.collections.removeAll_ipc267$; - return function ($receiver, keys) { - removeAll($receiver.keys, keys); - }; - })); - var minusAssign_1 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_kom96y$', wrapFunction(function () { - var removeAll = _.kotlin.collections.removeAll_ye1y7v$; - return function ($receiver, keys) { - removeAll($receiver.keys, keys); - }; - })); - var minusAssign_2 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_1zq34s$', wrapFunction(function () { - var removeAll = _.kotlin.collections.removeAll_tj7pfx$; - return function ($receiver, keys) { - removeAll($receiver.keys, keys); - }; - })); - function optimizeReadOnlyMap($receiver) { - switch ($receiver.size) { - case 0: - return emptyMap(); - case 1: - return $receiver; - default:return $receiver; - } - } - var remove_0 = defineInlineFunction('kotlin.kotlin.collections.remove_cz4ny2$', wrapFunction(function () { - var MutableCollection = _.kotlin.collections.MutableCollection; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, element) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).remove_11rb$(element); - }; - })); - var removeAll = defineInlineFunction('kotlin.kotlin.collections.removeAll_qrknmz$', wrapFunction(function () { - var MutableCollection = _.kotlin.collections.MutableCollection; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, elements) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).removeAll_brywnq$(elements); - }; - })); - var retainAll = defineInlineFunction('kotlin.kotlin.collections.retainAll_qrknmz$', wrapFunction(function () { - var MutableCollection = _.kotlin.collections.MutableCollection; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, elements) { - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).retainAll_brywnq$(elements); - }; - })); - var remove_1 = defineInlineFunction('kotlin.kotlin.collections.remove_tkbrz9$', function ($receiver, index) { - return $receiver.removeAt_za3lpa$(index); - }); - var plusAssign_4 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_mohyd4$', function ($receiver, element) { - $receiver.add_11rb$(element); - }); - var plusAssign_5 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_ipc267$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ipc267$; - return function ($receiver, elements) { - addAll($receiver, elements); - }; - })); - var plusAssign_6 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_x8tvoq$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_ye1y7v$; - return function ($receiver, elements) { - addAll($receiver, elements); - }; - })); - var plusAssign_7 = defineInlineFunction('kotlin.kotlin.collections.plusAssign_tj7pfx$', wrapFunction(function () { - var addAll = _.kotlin.collections.addAll_tj7pfx$; - return function ($receiver, elements) { - addAll($receiver, elements); - }; - })); - var minusAssign_3 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_mohyd4$', function ($receiver, element) { - $receiver.remove_11rb$(element); - }); - var minusAssign_4 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_ipc267$', wrapFunction(function () { - var removeAll = _.kotlin.collections.removeAll_ipc267$; - return function ($receiver, elements) { - removeAll($receiver, elements); - }; - })); - var minusAssign_5 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_x8tvoq$', wrapFunction(function () { - var removeAll = _.kotlin.collections.removeAll_ye1y7v$; - return function ($receiver, elements) { - removeAll($receiver, elements); - }; - })); - var minusAssign_6 = defineInlineFunction('kotlin.kotlin.collections.minusAssign_tj7pfx$', wrapFunction(function () { - var removeAll = _.kotlin.collections.removeAll_tj7pfx$; - return function ($receiver, elements) { - removeAll($receiver, elements); - }; - })); - function addAll($receiver, elements) { - var tmp$; - if (Kotlin.isType(elements, Collection)) - return $receiver.addAll_brywnq$(elements); - else { - var result = false; - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if ($receiver.add_11rb$(item)) - result = true; - } - return result; - } - } - function addAll_0($receiver, elements) { - var tmp$; - var result = false; - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - if ($receiver.add_11rb$(item)) - result = true; - } - return result; - } - function addAll_1($receiver, elements) { - return $receiver.addAll_brywnq$(asList(elements)); - } - function removeAll_0($receiver, predicate) { - return filterInPlace($receiver, predicate, true); - } - function retainAll_0($receiver, predicate) { - return filterInPlace($receiver, predicate, false); - } - function filterInPlace($receiver, predicate, predicateResultToRemove) { - var result = {v: false}; - var $receiver_0 = $receiver.iterator(); - while ($receiver_0.hasNext()) - if (predicate($receiver_0.next()) === predicateResultToRemove) { - $receiver_0.remove(); - result.v = true; - } - return result.v; - } - function removeAll_1($receiver, predicate) { - return filterInPlace_0($receiver, predicate, true); - } - function retainAll_1($receiver, predicate) { - return filterInPlace_0($receiver, predicate, false); - } - function filterInPlace_0($receiver, predicate, predicateResultToRemove) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - if (!Kotlin.isType($receiver, RandomAccess)) - return filterInPlace(Kotlin.isType(tmp$ = $receiver, MutableIterable) ? tmp$ : throwCCE_0(), predicate, predicateResultToRemove); - var writeIndex = 0; - tmp$_0 = get_lastIndex_8($receiver); - for (var readIndex = 0; readIndex <= tmp$_0; readIndex++) { - var element = $receiver.get_za3lpa$(readIndex); - if (predicate(element) === predicateResultToRemove) - continue; - if (writeIndex !== readIndex) - $receiver.set_wxm5ur$(writeIndex, element); - writeIndex = writeIndex + 1 | 0; - } - if (writeIndex < $receiver.size) { - tmp$_1 = get_lastIndex_8($receiver); - tmp$_2 = writeIndex; - for (var removeIndex = tmp$_1; removeIndex >= tmp$_2; removeIndex--) - $receiver.removeAt_za3lpa$(removeIndex); - return true; - } - else { - return false; - } - } - function removeAll_2($receiver, elements) { - var elements_0 = convertToSetForSetOperationWith(elements, $receiver); - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).removeAll_brywnq$(elements_0); - } - function removeAll_3($receiver, elements) { - var set = toHashSet_9(elements); - return !set.isEmpty() && $receiver.removeAll_brywnq$(set); - } - function removeAll_4($receiver, elements) { - return !(elements.length === 0) && $receiver.removeAll_brywnq$(toHashSet(elements)); - } - function retainAll_2($receiver, elements) { - var elements_0 = convertToSetForSetOperationWith(elements, $receiver); - var tmp$; - return (Kotlin.isType(tmp$ = $receiver, MutableCollection) ? tmp$ : throwCCE()).retainAll_brywnq$(elements_0); - } - function retainAll_3($receiver, elements) { - if (!(elements.length === 0)) - return $receiver.retainAll_brywnq$(toHashSet(elements)); - else - return retainNothing($receiver); - } - function retainAll_4($receiver, elements) { - var set = toHashSet_9(elements); - if (!set.isEmpty()) - return $receiver.retainAll_brywnq$(set); - else - return retainNothing($receiver); - } - function retainNothing($receiver) { - var result = !$receiver.isEmpty(); - $receiver.clear(); - return result; - } - function shuffle_0($receiver, random) { - for (var i = get_lastIndex_8($receiver); i >= 1; i--) { - var j = random.nextInt_za3lpa$(i + 1 | 0); - var copy = $receiver.get_za3lpa$(i); - $receiver.set_wxm5ur$(i, $receiver.get_za3lpa$(j)); - $receiver.set_wxm5ur$(j, copy); - } - } - function shuffled_0($receiver, random) { - var $receiver_0 = toMutableList_8($receiver); - shuffle_0($receiver_0, random); - return $receiver_0; - } - function ReversedListReadOnly(delegate) { - AbstractList.call(this); - this.delegate_0 = delegate; - } - Object.defineProperty(ReversedListReadOnly.prototype, 'size', {get: function () { - return this.delegate_0.size; - }}); - ReversedListReadOnly.prototype.get_za3lpa$ = function (index) { - return this.delegate_0.get_za3lpa$(reverseElementIndex(this, index)); - }; - ReversedListReadOnly.$metadata$ = {kind: Kind_CLASS, simpleName: 'ReversedListReadOnly', interfaces: [AbstractList]}; - function ReversedList(delegate) { - AbstractMutableList.call(this); - this.delegate_0 = delegate; - } - Object.defineProperty(ReversedList.prototype, 'size', {get: function () { - return this.delegate_0.size; - }}); - ReversedList.prototype.get_za3lpa$ = function (index) { - return this.delegate_0.get_za3lpa$(reverseElementIndex(this, index)); - }; - ReversedList.prototype.clear = function () { - this.delegate_0.clear(); - }; - ReversedList.prototype.removeAt_za3lpa$ = function (index) { - return this.delegate_0.removeAt_za3lpa$(reverseElementIndex(this, index)); - }; - ReversedList.prototype.set_wxm5ur$ = function (index, element) { - return this.delegate_0.set_wxm5ur$(reverseElementIndex(this, index), element); - }; - ReversedList.prototype.add_wxm5ur$ = function (index, element) { - this.delegate_0.add_wxm5ur$(reversePositionIndex(this, index), element); - }; - ReversedList.$metadata$ = {kind: Kind_CLASS, simpleName: 'ReversedList', interfaces: [AbstractMutableList]}; - function reverseElementIndex($receiver, index) { - var tmp$; - tmp$ = get_lastIndex_8($receiver); - if (0 <= index && index <= tmp$) - return get_lastIndex_8($receiver) - index | 0; - else - throw new IndexOutOfBoundsException('Element index ' + index + ' must be in range [' + new IntRange(0, get_lastIndex_8($receiver)) + '].'); - } - function reversePositionIndex($receiver, index) { - var tmp$; - tmp$ = $receiver.size; - if (0 <= index && index <= tmp$) - return $receiver.size - index | 0; - else - throw new IndexOutOfBoundsException('Position index ' + index + ' must be in range [' + new IntRange(0, $receiver.size) + '].'); - } - function asReversed($receiver) { - return new ReversedListReadOnly($receiver); - } - function asReversed_0($receiver) { - return new ReversedList($receiver); - } - function Sequence() { - } - Sequence.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Sequence', interfaces: []}; - function sequence$lambda(closure$block) { - return function () { - return iterator_3(closure$block); - }; - } - function Sequence$ObjectLiteral_2(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral_2.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral_2.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function sequence(block) { - return new Sequence$ObjectLiteral_2(sequence$lambda(block)); - } - var buildSequence = defineInlineFunction('kotlin.kotlin.sequences.buildSequence_o0x0bg$', wrapFunction(function () { - var iterator = _.kotlin.sequences.iterator_o0x0bg$; - function buildSequence$lambda(closure$builderAction) { - return function () { - return iterator(closure$builderAction); - }; - } - var Kind_CLASS = Kotlin.Kind.CLASS; - var Sequence = _.kotlin.sequences.Sequence; - function Sequence$ObjectLiteral(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - return function (builderAction) { - return new Sequence$ObjectLiteral(buildSequence$lambda(builderAction)); - }; - })); - function iterator_3(block) { - var iterator = new SequenceBuilderIterator(); - iterator.nextStep = createCoroutineUnintercepted_0(block, iterator, iterator); - return iterator; - } - var buildIterator = defineInlineFunction('kotlin.kotlin.sequences.buildIterator_o0x0bg$', wrapFunction(function () { - var iterator = _.kotlin.sequences.iterator_o0x0bg$; - return function (builderAction) { - return iterator(builderAction); - }; - })); - function SequenceScope() { - } - SequenceScope.prototype.yieldAll_p1ys8y$ = function (elements, continuation) { - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) - return; - return this.yieldAll_1phuh2$(elements.iterator(), continuation); - }; - SequenceScope.prototype.yieldAll_swo9gw$ = function (sequence, continuation) { - return this.yieldAll_1phuh2$(sequence.iterator(), continuation); - }; - SequenceScope.$metadata$ = {kind: Kind_CLASS, simpleName: 'SequenceScope', interfaces: []}; - var State_NotReady; - var State_ManyNotReady; - var State_ManyReady; - var State_Ready; - var State_Done; - var State_Failed; - function SequenceBuilderIterator() { - SequenceScope.call(this); - this.state_0 = 0; - this.nextValue_0 = null; - this.nextIterator_0 = null; - this.nextStep = null; - } - SequenceBuilderIterator.prototype.hasNext = function () { - while (true) { - switch (this.state_0) { - case 0: - break; - case 1: - if (ensureNotNull(this.nextIterator_0).hasNext()) { - this.state_0 = 2; - return true; - } - else { - this.nextIterator_0 = null; - } - - break; - case 4: - return false; - case 3: - case 2: - return true; - default:throw this.exceptionalState_0(); - } - this.state_0 = 5; - var step = ensureNotNull(this.nextStep); - this.nextStep = null; - step.resumeWith_tl1gpc$(new Result(Unit_getInstance())); - } - }; - SequenceBuilderIterator.prototype.next = function () { - var tmp$; - switch (this.state_0) { - case 0: - case 1: - return this.nextNotReady_0(); - case 2: - this.state_0 = 1; - return ensureNotNull(this.nextIterator_0).next(); - case 3: - this.state_0 = 0; - var result = (tmp$ = this.nextValue_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - this.nextValue_0 = null; - return result; - default:throw this.exceptionalState_0(); - } - }; - SequenceBuilderIterator.prototype.nextNotReady_0 = function () { - if (!this.hasNext()) - throw NoSuchElementException_init(); - else - return this.next(); - }; - SequenceBuilderIterator.prototype.exceptionalState_0 = function () { - switch (this.state_0) { - case 4: - return NoSuchElementException_init(); - case 5: - return IllegalStateException_init_0('Iterator has failed.'); - default:return IllegalStateException_init_0('Unexpected state of the iterator: ' + this.state_0); - } - }; - function SequenceBuilderIterator$yield$lambda(this$SequenceBuilderIterator) { - return function (c) { - this$SequenceBuilderIterator.nextStep = c; - return get_COROUTINE_SUSPENDED(); - }; - } - SequenceBuilderIterator.prototype.yield_11rb$ = function (value, continuation) { - this.nextValue_0 = value; - this.state_0 = 3; - return SequenceBuilderIterator$yield$lambda(this)(continuation); - }; - function SequenceBuilderIterator$yieldAll$lambda(this$SequenceBuilderIterator) { - return function (c) { - this$SequenceBuilderIterator.nextStep = c; - return get_COROUTINE_SUSPENDED(); - }; - } - SequenceBuilderIterator.prototype.yieldAll_1phuh2$ = function (iterator, continuation) { - if (!iterator.hasNext()) - return; - this.nextIterator_0 = iterator; - this.state_0 = 2; - return SequenceBuilderIterator$yieldAll$lambda(this)(continuation); - }; - SequenceBuilderIterator.prototype.resumeWith_tl1gpc$ = function (result) { - var tmp$; - throwOnFailure(result); - (tmp$ = result.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - this.state_0 = 4; - }; - Object.defineProperty(SequenceBuilderIterator.prototype, 'context', {get: function () { - return EmptyCoroutineContext_getInstance(); - }}); - SequenceBuilderIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'SequenceBuilderIterator', interfaces: [Continuation, Iterator, SequenceScope]}; - var Sequence_0 = defineInlineFunction('kotlin.kotlin.sequences.Sequence_ms0qmx$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Sequence = _.kotlin.sequences.Sequence; - function Sequence$ObjectLiteral(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - return function (iterator) { - return new Sequence$ObjectLiteral(iterator); - }; - })); - function asSequence$lambda_10(this$asSequence) { - return function () { - return this$asSequence; - }; - } - function Sequence$ObjectLiteral_3(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral_3.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral_3.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function asSequence_12($receiver) { - return constrainOnce(new Sequence$ObjectLiteral_3(asSequence$lambda_10($receiver))); - } - function sequenceOf(elements) { - return elements.length === 0 ? emptySequence() : asSequence(elements); - } - function emptySequence() { - return EmptySequence_getInstance(); - } - function EmptySequence() { - EmptySequence_instance = this; - } - EmptySequence.prototype.iterator = function () { - return EmptyIterator_getInstance(); - }; - EmptySequence.prototype.drop_za3lpa$ = function (n) { - return EmptySequence_getInstance(); - }; - EmptySequence.prototype.take_za3lpa$ = function (n) { - return EmptySequence_getInstance(); - }; - EmptySequence.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptySequence', interfaces: [DropTakeSequence, Sequence]}; - var EmptySequence_instance = null; - function EmptySequence_getInstance() { - if (EmptySequence_instance === null) { - new EmptySequence(); - } - return EmptySequence_instance; - } - var orEmpty_3 = defineInlineFunction('kotlin.kotlin.sequences.orEmpty_eamxo5$', wrapFunction(function () { - var emptySequence = _.kotlin.sequences.emptySequence_287e2$; - return function ($receiver) { - return $receiver != null ? $receiver : emptySequence(); - }; - })); - function Coroutine$ifEmpty$lambda(this$ifEmpty_0, closure$defaultValue_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$ifEmpty = this$ifEmpty_0; - this.local$closure$defaultValue = closure$defaultValue_0; - this.local$$receiver = $receiver_0; - } - Coroutine$ifEmpty$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; - Coroutine$ifEmpty$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$ifEmpty$lambda.prototype.constructor = Coroutine$ifEmpty$lambda; - Coroutine$ifEmpty$lambda.prototype.doResume = function () { - do - try { - switch (this.state_0) { - case 0: - var iterator = this.local$this$ifEmpty.iterator(); - if (iterator.hasNext()) { - this.state_0 = 3; - this.result_0 = this.local$$receiver.yieldAll_1phuh2$(iterator, this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - else { - this.state_0 = 2; - this.result_0 = this.local$$receiver.yieldAll_swo9gw$(this.local$closure$defaultValue(), this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - - case 1: - throw this.exception_0; - case 2: - return Unit; - case 3: - return Unit; - case 4: - return; - default:this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } - catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } - else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } - } - while (true); - }; - function ifEmpty$lambda(this$ifEmpty_0, closure$defaultValue_0) { - return function ($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$ifEmpty$lambda(this$ifEmpty_0, closure$defaultValue_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - }; - } - function ifEmpty_2($receiver, defaultValue) { - return sequence(ifEmpty$lambda($receiver, defaultValue)); - } - function flatten$lambda(it) { - return it.iterator(); - } - function flatten_1($receiver) { - return flatten_3($receiver, flatten$lambda); - } - function flatten$lambda_0(it) { - return it.iterator(); - } - function flatten_2($receiver) { - return flatten_3($receiver, flatten$lambda_0); - } - function flatten$lambda_1(it) { - return it; - } - function flatten_3($receiver, iterator) { - var tmp$; - if (Kotlin.isType($receiver, TransformingSequence)) { - return (Kotlin.isType(tmp$ = $receiver, TransformingSequence) ? tmp$ : throwCCE_0()).flatten_1tglza$(iterator); - } - return new FlatteningSequence($receiver, flatten$lambda_1, iterator); - } - function unzip_1($receiver) { - var tmp$; - var listT = ArrayList_init(); - var listR = ArrayList_init(); - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var pair = tmp$.next(); - listT.add_11rb$(pair.first); - listR.add_11rb$(pair.second); - } - return to(listT, listR); - } - function FilteringSequence(sequence, sendWhen, predicate) { - if (sendWhen === void 0) - sendWhen = true; - this.sequence_0 = sequence; - this.sendWhen_0 = sendWhen; - this.predicate_0 = predicate; - } - function FilteringSequence$iterator$ObjectLiteral(this$FilteringSequence) { - this.this$FilteringSequence = this$FilteringSequence; - this.iterator = this$FilteringSequence.sequence_0.iterator(); - this.nextState = -1; - this.nextItem = null; - } - FilteringSequence$iterator$ObjectLiteral.prototype.calcNext_0 = function () { - while (this.iterator.hasNext()) { - var item = this.iterator.next(); - if (this.this$FilteringSequence.predicate_0(item) === this.this$FilteringSequence.sendWhen_0) { - this.nextItem = item; - this.nextState = 1; - return; - } - } - this.nextState = 0; - }; - FilteringSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (this.nextState === -1) - this.calcNext_0(); - if (this.nextState === 0) - throw NoSuchElementException_init(); - var result = this.nextItem; - this.nextItem = null; - this.nextState = -1; - return (tmp$ = result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }; - FilteringSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - if (this.nextState === -1) - this.calcNext_0(); - return this.nextState === 1; - }; - FilteringSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - FilteringSequence.prototype.iterator = function () { - return new FilteringSequence$iterator$ObjectLiteral(this); - }; - FilteringSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'FilteringSequence', interfaces: [Sequence]}; - function TransformingSequence(sequence, transformer) { - this.sequence_0 = sequence; - this.transformer_0 = transformer; - } - function TransformingSequence$iterator$ObjectLiteral(this$TransformingSequence) { - this.this$TransformingSequence = this$TransformingSequence; - this.iterator = this$TransformingSequence.sequence_0.iterator(); - } - TransformingSequence$iterator$ObjectLiteral.prototype.next = function () { - return this.this$TransformingSequence.transformer_0(this.iterator.next()); - }; - TransformingSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.iterator.hasNext(); - }; - TransformingSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - TransformingSequence.prototype.iterator = function () { - return new TransformingSequence$iterator$ObjectLiteral(this); - }; - TransformingSequence.prototype.flatten_1tglza$ = function (iterator) { - return new FlatteningSequence(this.sequence_0, this.transformer_0, iterator); - }; - TransformingSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'TransformingSequence', interfaces: [Sequence]}; - function TransformingIndexedSequence(sequence, transformer) { - this.sequence_0 = sequence; - this.transformer_0 = transformer; - } - function TransformingIndexedSequence$iterator$ObjectLiteral(this$TransformingIndexedSequence) { - this.this$TransformingIndexedSequence = this$TransformingIndexedSequence; - this.iterator = this$TransformingIndexedSequence.sequence_0.iterator(); - this.index = 0; - } - TransformingIndexedSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - return this.this$TransformingIndexedSequence.transformer_0(checkIndexOverflow((tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$)), this.iterator.next()); - }; - TransformingIndexedSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.iterator.hasNext(); - }; - TransformingIndexedSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - TransformingIndexedSequence.prototype.iterator = function () { - return new TransformingIndexedSequence$iterator$ObjectLiteral(this); - }; - TransformingIndexedSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'TransformingIndexedSequence', interfaces: [Sequence]}; - function IndexingSequence(sequence) { - this.sequence_0 = sequence; - } - function IndexingSequence$iterator$ObjectLiteral(this$IndexingSequence) { - this.iterator = this$IndexingSequence.sequence_0.iterator(); - this.index = 0; - } - IndexingSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - return new IndexedValue(checkIndexOverflow((tmp$ = this.index, this.index = tmp$ + 1 | 0, tmp$)), this.iterator.next()); - }; - IndexingSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.iterator.hasNext(); - }; - IndexingSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - IndexingSequence.prototype.iterator = function () { - return new IndexingSequence$iterator$ObjectLiteral(this); - }; - IndexingSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'IndexingSequence', interfaces: [Sequence]}; - function MergingSequence(sequence1, sequence2, transform) { - this.sequence1_0 = sequence1; - this.sequence2_0 = sequence2; - this.transform_0 = transform; - } - function MergingSequence$iterator$ObjectLiteral(this$MergingSequence) { - this.this$MergingSequence = this$MergingSequence; - this.iterator1 = this$MergingSequence.sequence1_0.iterator(); - this.iterator2 = this$MergingSequence.sequence2_0.iterator(); - } - MergingSequence$iterator$ObjectLiteral.prototype.next = function () { - return this.this$MergingSequence.transform_0(this.iterator1.next(), this.iterator2.next()); - }; - MergingSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.iterator1.hasNext() && this.iterator2.hasNext(); - }; - MergingSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - MergingSequence.prototype.iterator = function () { - return new MergingSequence$iterator$ObjectLiteral(this); - }; - MergingSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'MergingSequence', interfaces: [Sequence]}; - function FlatteningSequence(sequence, transformer, iterator) { - this.sequence_0 = sequence; - this.transformer_0 = transformer; - this.iterator_0 = iterator; - } - function FlatteningSequence$iterator$ObjectLiteral(this$FlatteningSequence) { - this.this$FlatteningSequence = this$FlatteningSequence; - this.iterator = this$FlatteningSequence.sequence_0.iterator(); - this.itemIterator = null; - } - FlatteningSequence$iterator$ObjectLiteral.prototype.next = function () { - if (!this.ensureItemIterator_0()) - throw NoSuchElementException_init(); - return ensureNotNull(this.itemIterator).next(); - }; - FlatteningSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.ensureItemIterator_0(); - }; - FlatteningSequence$iterator$ObjectLiteral.prototype.ensureItemIterator_0 = function () { - var tmp$; - if (((tmp$ = this.itemIterator) != null ? tmp$.hasNext() : null) === false) - this.itemIterator = null; - while (this.itemIterator == null) { - if (!this.iterator.hasNext()) { - return false; - } - else { - var element = this.iterator.next(); - var nextItemIterator = this.this$FlatteningSequence.iterator_0(this.this$FlatteningSequence.transformer_0(element)); - if (nextItemIterator.hasNext()) { - this.itemIterator = nextItemIterator; - return true; - } - } - } - return true; - }; - FlatteningSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - FlatteningSequence.prototype.iterator = function () { - return new FlatteningSequence$iterator$ObjectLiteral(this); - }; - FlatteningSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'FlatteningSequence', interfaces: [Sequence]}; - function DropTakeSequence() { - } - DropTakeSequence.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'DropTakeSequence', interfaces: [Sequence]}; - function SubSequence(sequence, startIndex, endIndex) { - this.sequence_0 = sequence; - this.startIndex_0 = startIndex; - this.endIndex_0 = endIndex; - if (!(this.startIndex_0 >= 0)) { - var message = 'startIndex should be non-negative, but is ' + this.startIndex_0; - throw IllegalArgumentException_init_0(message.toString()); - } - if (!(this.endIndex_0 >= 0)) { - var message_0 = 'endIndex should be non-negative, but is ' + this.endIndex_0; - throw IllegalArgumentException_init_0(message_0.toString()); - } - if (!(this.endIndex_0 >= this.startIndex_0)) { - var message_1 = 'endIndex should be not less than startIndex, but was ' + this.endIndex_0 + ' < ' + this.startIndex_0; - throw IllegalArgumentException_init_0(message_1.toString()); - } - } - Object.defineProperty(SubSequence.prototype, 'count_0', {get: function () { - return this.endIndex_0 - this.startIndex_0 | 0; - }}); - SubSequence.prototype.drop_za3lpa$ = function (n) { - return n >= this.count_0 ? emptySequence() : new SubSequence(this.sequence_0, this.startIndex_0 + n | 0, this.endIndex_0); - }; - SubSequence.prototype.take_za3lpa$ = function (n) { - return n >= this.count_0 ? this : new SubSequence(this.sequence_0, this.startIndex_0, this.startIndex_0 + n | 0); - }; - function SubSequence$iterator$ObjectLiteral(this$SubSequence) { - this.this$SubSequence = this$SubSequence; - this.iterator = this$SubSequence.sequence_0.iterator(); - this.position = 0; - } - SubSequence$iterator$ObjectLiteral.prototype.drop_0 = function () { - while (this.position < this.this$SubSequence.startIndex_0 && this.iterator.hasNext()) { - this.iterator.next(); - this.position = this.position + 1 | 0; - } - }; - SubSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - this.drop_0(); - return this.position < this.this$SubSequence.endIndex_0 && this.iterator.hasNext(); - }; - SubSequence$iterator$ObjectLiteral.prototype.next = function () { - this.drop_0(); - if (this.position >= this.this$SubSequence.endIndex_0) - throw NoSuchElementException_init(); - this.position = this.position + 1 | 0; - return this.iterator.next(); - }; - SubSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - SubSequence.prototype.iterator = function () { - return new SubSequence$iterator$ObjectLiteral(this); - }; - SubSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'SubSequence', interfaces: [DropTakeSequence, Sequence]}; - function TakeSequence(sequence, count) { - this.sequence_0 = sequence; - this.count_0 = count; - if (!(this.count_0 >= 0)) { - var message = 'count must be non-negative, but was ' + this.count_0 + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - } - TakeSequence.prototype.drop_za3lpa$ = function (n) { - return n >= this.count_0 ? emptySequence() : new SubSequence(this.sequence_0, n, this.count_0); - }; - TakeSequence.prototype.take_za3lpa$ = function (n) { - return n >= this.count_0 ? this : new TakeSequence(this.sequence_0, n); - }; - function TakeSequence$iterator$ObjectLiteral(this$TakeSequence) { - this.left = this$TakeSequence.count_0; - this.iterator = this$TakeSequence.sequence_0.iterator(); - } - TakeSequence$iterator$ObjectLiteral.prototype.next = function () { - if (this.left === 0) - throw NoSuchElementException_init(); - this.left = this.left - 1 | 0; - return this.iterator.next(); - }; - TakeSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - return this.left > 0 && this.iterator.hasNext(); - }; - TakeSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - TakeSequence.prototype.iterator = function () { - return new TakeSequence$iterator$ObjectLiteral(this); - }; - TakeSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'TakeSequence', interfaces: [DropTakeSequence, Sequence]}; - function TakeWhileSequence(sequence, predicate) { - this.sequence_0 = sequence; - this.predicate_0 = predicate; - } - function TakeWhileSequence$iterator$ObjectLiteral(this$TakeWhileSequence) { - this.this$TakeWhileSequence = this$TakeWhileSequence; - this.iterator = this$TakeWhileSequence.sequence_0.iterator(); - this.nextState = -1; - this.nextItem = null; - } - TakeWhileSequence$iterator$ObjectLiteral.prototype.calcNext_0 = function () { - if (this.iterator.hasNext()) { - var item = this.iterator.next(); - if (this.this$TakeWhileSequence.predicate_0(item)) { - this.nextState = 1; - this.nextItem = item; - return; - } - } - this.nextState = 0; - }; - TakeWhileSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (this.nextState === -1) - this.calcNext_0(); - if (this.nextState === 0) - throw NoSuchElementException_init(); - var result = (tmp$ = this.nextItem) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - this.nextItem = null; - this.nextState = -1; - return result; - }; - TakeWhileSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - if (this.nextState === -1) - this.calcNext_0(); - return this.nextState === 1; - }; - TakeWhileSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - TakeWhileSequence.prototype.iterator = function () { - return new TakeWhileSequence$iterator$ObjectLiteral(this); - }; - TakeWhileSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'TakeWhileSequence', interfaces: [Sequence]}; - function DropSequence(sequence, count) { - this.sequence_0 = sequence; - this.count_0 = count; - if (!(this.count_0 >= 0)) { - var message = 'count must be non-negative, but was ' + this.count_0 + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - } - DropSequence.prototype.drop_za3lpa$ = function (n) { - var n1 = this.count_0 + n | 0; - return n1 < 0 ? new DropSequence(this, n) : new DropSequence(this.sequence_0, n1); - }; - DropSequence.prototype.take_za3lpa$ = function (n) { - var n1 = this.count_0 + n | 0; - return n1 < 0 ? new TakeSequence(this, n) : new SubSequence(this.sequence_0, this.count_0, n1); - }; - function DropSequence$iterator$ObjectLiteral(this$DropSequence) { - this.iterator = this$DropSequence.sequence_0.iterator(); - this.left = this$DropSequence.count_0; - } - DropSequence$iterator$ObjectLiteral.prototype.drop_0 = function () { - while (this.left > 0 && this.iterator.hasNext()) { - this.iterator.next(); - this.left = this.left - 1 | 0; - } - }; - DropSequence$iterator$ObjectLiteral.prototype.next = function () { - this.drop_0(); - return this.iterator.next(); - }; - DropSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - this.drop_0(); - return this.iterator.hasNext(); - }; - DropSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - DropSequence.prototype.iterator = function () { - return new DropSequence$iterator$ObjectLiteral(this); - }; - DropSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'DropSequence', interfaces: [DropTakeSequence, Sequence]}; - function DropWhileSequence(sequence, predicate) { - this.sequence_0 = sequence; - this.predicate_0 = predicate; - } - function DropWhileSequence$iterator$ObjectLiteral(this$DropWhileSequence) { - this.this$DropWhileSequence = this$DropWhileSequence; - this.iterator = this$DropWhileSequence.sequence_0.iterator(); - this.dropState = -1; - this.nextItem = null; - } - DropWhileSequence$iterator$ObjectLiteral.prototype.drop_0 = function () { - while (this.iterator.hasNext()) { - var item = this.iterator.next(); - if (!this.this$DropWhileSequence.predicate_0(item)) { - this.nextItem = item; - this.dropState = 1; - return; - } - } - this.dropState = 0; - }; - DropWhileSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (this.dropState === -1) - this.drop_0(); - if (this.dropState === 1) { - var result = (tmp$ = this.nextItem) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - this.nextItem = null; - this.dropState = 0; - return result; - } - return this.iterator.next(); - }; - DropWhileSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - if (this.dropState === -1) - this.drop_0(); - return this.dropState === 1 || this.iterator.hasNext(); - }; - DropWhileSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - DropWhileSequence.prototype.iterator = function () { - return new DropWhileSequence$iterator$ObjectLiteral(this); - }; - DropWhileSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'DropWhileSequence', interfaces: [Sequence]}; - function DistinctSequence(source, keySelector) { - this.source_0 = source; - this.keySelector_0 = keySelector; - } - DistinctSequence.prototype.iterator = function () { - return new DistinctIterator(this.source_0.iterator(), this.keySelector_0); - }; - DistinctSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'DistinctSequence', interfaces: [Sequence]}; - function DistinctIterator(source, keySelector) { - AbstractIterator.call(this); - this.source_0 = source; - this.keySelector_0 = keySelector; - this.observed_0 = HashSet_init(); - } - DistinctIterator.prototype.computeNext = function () { - while (this.source_0.hasNext()) { - var next = this.source_0.next(); - var key = this.keySelector_0(next); - if (this.observed_0.add_11rb$(key)) { - this.setNext_11rb$(next); - return; - } - } - this.done(); - }; - DistinctIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'DistinctIterator', interfaces: [AbstractIterator]}; - function GeneratorSequence(getInitialValue, getNextValue) { - this.getInitialValue_0 = getInitialValue; - this.getNextValue_0 = getNextValue; - } - function GeneratorSequence$iterator$ObjectLiteral(this$GeneratorSequence) { - this.this$GeneratorSequence = this$GeneratorSequence; - this.nextItem = null; - this.nextState = -2; - } - GeneratorSequence$iterator$ObjectLiteral.prototype.calcNext_0 = function () { - this.nextItem = this.nextState === -2 ? this.this$GeneratorSequence.getInitialValue_0() : this.this$GeneratorSequence.getNextValue_0(ensureNotNull(this.nextItem)); - this.nextState = this.nextItem == null ? 0 : 1; - }; - GeneratorSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (this.nextState < 0) - this.calcNext_0(); - if (this.nextState === 0) - throw NoSuchElementException_init(); - var result = Kotlin.isType(tmp$ = this.nextItem, Any) ? tmp$ : throwCCE_0(); - this.nextState = -1; - return result; - }; - GeneratorSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - if (this.nextState < 0) - this.calcNext_0(); - return this.nextState === 1; - }; - GeneratorSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - GeneratorSequence.prototype.iterator = function () { - return new GeneratorSequence$iterator$ObjectLiteral(this); - }; - GeneratorSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'GeneratorSequence', interfaces: [Sequence]}; - function constrainOnce($receiver) { - return Kotlin.isType($receiver, ConstrainedOnceSequence) ? $receiver : new ConstrainedOnceSequence($receiver); - } - function generateSequence$lambda(closure$nextFunction) { - return function (it) { - return closure$nextFunction(); - }; - } - function generateSequence(nextFunction) { - return constrainOnce(new GeneratorSequence(nextFunction, generateSequence$lambda(nextFunction))); - } - function generateSequence$lambda_0(closure$seed) { - return function () { - return closure$seed; - }; - } - function generateSequence_0(seed, nextFunction) { - return seed == null ? EmptySequence_getInstance() : new GeneratorSequence(generateSequence$lambda_0(seed), nextFunction); - } - function generateSequence_1(seedFunction, nextFunction) { - return new GeneratorSequence(seedFunction, nextFunction); - } - function EmptySet() { - EmptySet_instance = this; - this.serialVersionUID_0 = L3406603774387020532; - } - EmptySet.prototype.equals = function (other) { - return Kotlin.isType(other, Set) && other.isEmpty(); - }; - EmptySet.prototype.hashCode = function () { - return 0; - }; - EmptySet.prototype.toString = function () { - return '[]'; - }; - Object.defineProperty(EmptySet.prototype, 'size', {get: function () { - return 0; - }}); - EmptySet.prototype.isEmpty = function () { - return true; - }; - EmptySet.prototype.contains_11rb$ = function (element) { - return false; - }; - EmptySet.prototype.containsAll_brywnq$ = function (elements) { - return elements.isEmpty(); - }; - EmptySet.prototype.iterator = function () { - return EmptyIterator_getInstance(); - }; - EmptySet.prototype.readResolve_0 = function () { - return EmptySet_getInstance(); - }; - EmptySet.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptySet', interfaces: [Serializable, Set]}; - var EmptySet_instance = null; - function EmptySet_getInstance() { - if (EmptySet_instance === null) { - new EmptySet(); - } - return EmptySet_instance; - } - function emptySet() { - return EmptySet_getInstance(); - } - function setOf_0(elements) { - return elements.length > 0 ? toSet(elements) : emptySet(); - } - var setOf_1 = defineInlineFunction('kotlin.kotlin.collections.setOf_287e2$', wrapFunction(function () { - var emptySet = _.kotlin.collections.emptySet_287e2$; - return function () { - return emptySet(); - }; - })); - var mutableSetOf = defineInlineFunction('kotlin.kotlin.collections.mutableSetOf_287e2$', wrapFunction(function () { - var LinkedHashSet_init = _.kotlin.collections.LinkedHashSet_init_287e2$; - return function () { - return LinkedHashSet_init(); - }; - })); - function mutableSetOf_0(elements) { - return toCollection(elements, LinkedHashSet_init_3(mapCapacity(elements.length))); - } - var hashSetOf = defineInlineFunction('kotlin.kotlin.collections.hashSetOf_287e2$', wrapFunction(function () { - var HashSet_init = _.kotlin.collections.HashSet_init_287e2$; - return function () { - return HashSet_init(); - }; - })); - function hashSetOf_0(elements) { - return toCollection(elements, HashSet_init_2(mapCapacity(elements.length))); - } - var linkedSetOf = defineInlineFunction('kotlin.kotlin.collections.linkedSetOf_287e2$', wrapFunction(function () { - var LinkedHashSet_init = _.kotlin.collections.LinkedHashSet_init_287e2$; - return function () { - return LinkedHashSet_init(); - }; - })); - function linkedSetOf_0(elements) { - return toCollection(elements, LinkedHashSet_init_3(mapCapacity(elements.length))); - } - var orEmpty_4 = defineInlineFunction('kotlin.kotlin.collections.orEmpty_og2qkj$', wrapFunction(function () { - var emptySet = _.kotlin.collections.emptySet_287e2$; - return function ($receiver) { - return $receiver != null ? $receiver : emptySet(); - }; - })); - function optimizeReadOnlySet($receiver) { - switch ($receiver.size) { - case 0: - return emptySet(); - case 1: - return setOf($receiver.iterator().next()); - default:return $receiver; - } - } - function checkWindowSizeStep(size, step) { - if (!(size > 0 && step > 0)) { - var message = size !== step ? 'Both size ' + size + ' and step ' + step + ' must be greater than zero.' : 'size ' + size + ' must be greater than zero.'; - throw IllegalArgumentException_init_0(message.toString()); - } - } - function windowedSequence$lambda_1(this$windowedSequence, closure$size, closure$step, closure$partialWindows, closure$reuseBuffer) { - return function () { - return windowedIterator(this$windowedSequence.iterator(), closure$size, closure$step, closure$partialWindows, closure$reuseBuffer); - }; - } - function Sequence$ObjectLiteral_4(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral_4.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral_4.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function windowedSequence_1($receiver, size, step, partialWindows, reuseBuffer) { - checkWindowSizeStep(size, step); - return new Sequence$ObjectLiteral_4(windowedSequence$lambda_1($receiver, size, step, partialWindows, reuseBuffer)); - } - function Coroutine$windowedIterator$lambda(closure$step_0, closure$size_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$closure$step = closure$step_0; - this.local$closure$size = closure$size_0; - this.local$closure$iterator = closure$iterator_0; - this.local$closure$reuseBuffer = closure$reuseBuffer_0; - this.local$closure$partialWindows = closure$partialWindows_0; - this.local$tmp$ = void 0; - this.local$tmp$_0 = void 0; - this.local$gap = void 0; - this.local$buffer = void 0; - this.local$skip = void 0; - this.local$e = void 0; - this.local$buffer_0 = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$windowedIterator$lambda.$metadata$ = {kind: Kotlin.Kind.CLASS, simpleName: null, interfaces: [CoroutineImpl]}; - Coroutine$windowedIterator$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$windowedIterator$lambda.prototype.constructor = Coroutine$windowedIterator$lambda; - Coroutine$windowedIterator$lambda.prototype.doResume = function () { - do - try { - switch (this.state_0) { - case 0: - this.local$gap = this.local$closure$step - this.local$closure$size | 0; - if (this.local$gap >= 0) { - this.local$buffer = ArrayList_init_0(this.local$closure$size); - this.local$skip = 0; - this.local$tmp$ = this.local$closure$iterator; - this.state_0 = 12; - continue; - } - else { - this.local$buffer_0 = new RingBuffer(this.local$closure$size); - this.local$tmp$_0 = this.local$closure$iterator; - this.state_0 = 2; - continue; - } - - case 1: - throw this.exception_0; - case 2: - if (!this.local$tmp$_0.hasNext()) { - this.state_0 = 5; - continue; - } - - var e_0 = this.local$tmp$_0.next(); - this.local$buffer_0.add_11rb$(e_0); - if (this.local$buffer_0.isFull()) { - this.state_0 = 3; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$reuseBuffer ? this.local$buffer_0 : ArrayList_init_1(this.local$buffer_0), this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - else { - this.state_0 = 4; - continue; - } - - case 3: - this.local$buffer_0.removeFirst_za3lpa$(this.local$closure$step); - this.state_0 = 4; - continue; - case 4: - this.state_0 = 2; - continue; - case 5: - if (this.local$closure$partialWindows) { - this.state_0 = 6; - continue; - } - else { - this.state_0 = 11; - continue; - } - - case 6: - if (this.local$buffer_0.size <= this.local$closure$step) { - this.state_0 = 8; - continue; - } - - this.state_0 = 7; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$closure$reuseBuffer ? this.local$buffer_0 : ArrayList_init_1(this.local$buffer_0), this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - case 7: - this.local$buffer_0.removeFirst_za3lpa$(this.local$closure$step); - this.state_0 = 6; - continue; - case 8: - if (!this.local$buffer_0.isEmpty()) { - this.state_0 = 9; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$buffer_0, this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - else { - this.state_0 = 10; - continue; - } - - case 9: - return Unit; - case 10: - this.state_0 = 11; - continue; - case 11: - this.state_0 = 20; - continue; - case 12: - if (!this.local$tmp$.hasNext()) { - this.state_0 = 16; - continue; - } - - this.local$e = this.local$tmp$.next(); - if (this.local$skip > 0) { - this.local$skip = this.local$skip - 1 | 0; - this.state_0 = 12; - continue; - } - else { - this.state_0 = 13; - continue; - } - - case 13: - this.local$buffer.add_11rb$(this.local$e); - if (this.local$buffer.size === this.local$closure$size) { - this.state_0 = 14; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$buffer, this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - else { - this.state_0 = 15; - continue; - } - - case 14: - if (this.local$closure$reuseBuffer) - this.local$buffer.clear(); - else - this.local$buffer = ArrayList_init_0(this.local$closure$size); - this.local$skip = this.local$gap; - this.state_0 = 15; - continue; - case 15: - this.state_0 = 12; - continue; - case 16: - if (!this.local$buffer.isEmpty()) { - if (this.local$closure$partialWindows || this.local$buffer.size === this.local$closure$size) { - this.state_0 = 17; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$buffer, this); - if (this.result_0 === get_COROUTINE_SUSPENDED()) - return get_COROUTINE_SUSPENDED(); - continue; - } - else { - this.state_0 = 18; - continue; - } - } - else { - this.state_0 = 19; - continue; - } - - case 17: - return Unit; - case 18: - this.state_0 = 19; - continue; - case 19: - this.state_0 = 20; - continue; - case 20: - return Unit; - default:this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } - catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } - else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } - } - while (true); - }; - function windowedIterator$lambda(closure$step_0, closure$size_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0) { - return function ($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$windowedIterator$lambda(closure$step_0, closure$size_0, closure$iterator_0, closure$reuseBuffer_0, closure$partialWindows_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - }; - } - function windowedIterator(iterator, size, step, partialWindows, reuseBuffer) { - if (!iterator.hasNext()) - return EmptyIterator_getInstance(); - return iterator_3(windowedIterator$lambda(step, size, iterator, reuseBuffer, partialWindows)); - } - function MovingSubList(list) { - AbstractList.call(this); - this.list_0 = list; - this.fromIndex_0 = 0; - this._size_0 = 0; - } - MovingSubList.prototype.move_vux9f0$ = function (fromIndex, toIndex) { - AbstractList$Companion_getInstance().checkRangeIndexes_cub51b$(fromIndex, toIndex, this.list_0.size); - this.fromIndex_0 = fromIndex; - this._size_0 = toIndex - fromIndex | 0; - }; - MovingSubList.prototype.get_za3lpa$ = function (index) { - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this._size_0); - return this.list_0.get_za3lpa$(this.fromIndex_0 + index | 0); - }; - Object.defineProperty(MovingSubList.prototype, 'size', {get: function () { - return this._size_0; - }}); - MovingSubList.$metadata$ = {kind: Kind_CLASS, simpleName: 'MovingSubList', interfaces: [RandomAccess, AbstractList]}; - function RingBuffer(capacity) { - AbstractList.call(this); - this.capacity = capacity; - if (!(this.capacity >= 0)) { - var message = 'ring buffer capacity should not be negative but it is ' + this.capacity; - throw IllegalArgumentException_init_0(message.toString()); - } - this.buffer_0 = Kotlin.newArray(this.capacity, null); - this.startIndex_0 = 0; - this.size_4goa01$_0 = 0; - } - Object.defineProperty(RingBuffer.prototype, 'size', {get: function () { - return this.size_4goa01$_0; - }, set: function (size) { - this.size_4goa01$_0 = size; - }}); - RingBuffer.prototype.get_za3lpa$ = function (index) { - var tmp$; - AbstractList$Companion_getInstance().checkElementIndex_6xvm5r$(index, this.size); - return (tmp$ = this.buffer_0[(this.startIndex_0 + index | 0) % this.capacity]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }; - RingBuffer.prototype.isFull = function () { - return this.size === this.capacity; - }; - function RingBuffer$iterator$ObjectLiteral(this$RingBuffer) { - this.this$RingBuffer = this$RingBuffer; - AbstractIterator.call(this); - this.count_0 = this$RingBuffer.size; - this.index_0 = this$RingBuffer.startIndex_0; - } - RingBuffer$iterator$ObjectLiteral.prototype.computeNext = function () { - var tmp$; - if (this.count_0 === 0) { - this.done(); - } - else { - this.setNext_11rb$((tmp$ = this.this$RingBuffer.buffer_0[this.index_0]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0()); - this.index_0 = (this.index_0 + 1 | 0) % this.this$RingBuffer.capacity; - this.count_0 = this.count_0 - 1 | 0; - } - }; - RingBuffer$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [AbstractIterator]}; - RingBuffer.prototype.iterator = function () { - return new RingBuffer$iterator$ObjectLiteral(this); - }; - RingBuffer.prototype.toArray_ro6dgy$ = function (array) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - var result = array.length < this.size ? copyOf_24(array, this.size) : Kotlin.isArray(tmp$ = array) ? tmp$ : throwCCE_0(); - var size = this.size; - var widx = 0; - var idx = this.startIndex_0; - while (widx < size && idx < this.capacity) { - result[widx] = (tmp$_0 = this.buffer_0[idx]) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE_0(); - widx = widx + 1 | 0; - idx = idx + 1 | 0; - } - idx = 0; - while (widx < size) { - result[widx] = (tmp$_1 = this.buffer_0[idx]) == null || Kotlin.isType(tmp$_1, Any) ? tmp$_1 : throwCCE_0(); - widx = widx + 1 | 0; - idx = idx + 1 | 0; - } - if (result.length > this.size) - result[this.size] = null; - return Kotlin.isArray(tmp$_2 = result) ? tmp$_2 : throwCCE_0(); - }; - RingBuffer.prototype.toArray = function () { - return this.toArray_ro6dgy$(Kotlin.newArray(this.size, null)); - }; - RingBuffer.prototype.add_11rb$ = function (element) { - if (this.isFull()) { - throw IllegalStateException_init_0('ring buffer is full'); - } - this.buffer_0[(this.startIndex_0 + this.size | 0) % this.capacity] = element; - this.size = this.size + 1 | 0; - }; - RingBuffer.prototype.removeFirst_za3lpa$ = function (n) { - if (!(n >= 0)) { - var message = "n shouldn't be negative but it is " + n; - throw IllegalArgumentException_init_0(message.toString()); - } - if (!(n <= this.size)) { - var message_0 = "n shouldn't be greater than the buffer size: n = " + n + ', size = ' + this.size; - throw IllegalArgumentException_init_0(message_0.toString()); - } - if (n > 0) { - var start = this.startIndex_0; - var end = (start + n | 0) % this.capacity; - if (start > end) { - this.fill_0(this.buffer_0, null, start, this.capacity); - this.fill_0(this.buffer_0, null, 0, end); - } - else { - this.fill_0(this.buffer_0, null, start, end); - } - this.startIndex_0 = end; - this.size = this.size - n | 0; - } - }; - RingBuffer.prototype.forward_0 = function ($receiver, n) { - return ($receiver + n | 0) % this.capacity; - }; - RingBuffer.prototype.fill_0 = function ($receiver, element, fromIndex, toIndex) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = $receiver.length; - for (var idx = fromIndex; idx < toIndex; idx++) { - $receiver[idx] = element; - } - }; - RingBuffer.$metadata$ = {kind: Kind_CLASS, simpleName: 'RingBuffer', interfaces: [RandomAccess, AbstractList]}; - function compareValuesBy(a, b, selectors) { - if (!(selectors.length > 0)) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return compareValuesByImpl(a, b, selectors); - } - function compareValuesByImpl(a, b, selectors) { - var tmp$; - for (tmp$ = 0; tmp$ !== selectors.length; ++tmp$) { - var fn = selectors[tmp$]; - var v1 = fn(a); - var v2 = fn(b); - var diff = compareValues(v1, v2); - if (diff !== 0) - return diff; - } - return 0; - } - var compareValuesBy_0 = defineInlineFunction('kotlin.kotlin.comparisons.compareValuesBy_tsaocy$', wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (a, b, selector) { - return compareValues(selector(a), selector(b)); - }; - })); - var compareValuesBy_1 = defineInlineFunction('kotlin.kotlin.comparisons.compareValuesBy_5evai1$', function (a, b, comparator, selector) { - return comparator.compare(selector(a), selector(b)); - }); - function compareValues(a, b) { - var tmp$; - if (a === b) - return 0; - if (a == null) - return -1; - if (b == null) - return 1; - return Kotlin.compareTo(Kotlin.isComparable(tmp$ = a) ? tmp$ : throwCCE_0(), b); - } - function compareBy$lambda(closure$selectors) { - return function (a, b) { - return compareValuesByImpl(a, b, closure$selectors); - }; - } - function Comparator$ObjectLiteral_0(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral_0.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral_0.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - function compareBy(selectors) { - if (!(selectors.length > 0)) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return new Comparator$ObjectLiteral_0(compareBy$lambda(selectors)); - } - var compareBy_0 = defineInlineFunction('kotlin.kotlin.comparisons.compareBy_34mekm$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var compareBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(a), selector(b)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function (selector) { - return new Comparator$ObjectLiteral(compareBy$lambda(selector)); - }; - })); - var compareBy_1 = defineInlineFunction('kotlin.kotlin.comparisons.compareBy_82qo4j$', wrapFunction(function () { - function compareBy$lambda(closure$comparator, closure$selector) { - return function (a, b) { - var comparator = closure$comparator; - var selector = closure$selector; - return comparator.compare(selector(a), selector(b)); - }; - } - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function (comparator, selector) { - return new Comparator$ObjectLiteral(compareBy$lambda(comparator, selector)); - }; - })); - var compareByDescending = defineInlineFunction('kotlin.kotlin.comparisons.compareByDescending_34mekm$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var compareByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (closure$selector) { - return function (a, b) { - var selector = closure$selector; - return compareValues(selector(b), selector(a)); - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function (selector) { - return new Comparator$ObjectLiteral(compareByDescending$lambda(selector)); - }; - })); - var compareByDescending_0 = defineInlineFunction('kotlin.kotlin.comparisons.compareByDescending_82qo4j$', wrapFunction(function () { - function compareByDescending$lambda(closure$comparator, closure$selector) { - return function (a, b) { - var comparator = closure$comparator; - var selector = closure$selector; - return comparator.compare(selector(b), selector(a)); - }; - } - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function (comparator, selector) { - return new Comparator$ObjectLiteral(compareByDescending$lambda(comparator, selector)); - }; - })); - var thenBy = defineInlineFunction('kotlin.kotlin.comparisons.thenBy_8bk9gc$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var thenBy$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (this$thenBy, closure$selector) { - return function (a, b) { - var previousCompare = this$thenBy.compare(a, b); - var tmp$; - if (previousCompare !== 0) - tmp$ = previousCompare; - else { - var selector = closure$selector; - tmp$ = compareValues(selector(a), selector(b)); - } - return tmp$; - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return new Comparator$ObjectLiteral(thenBy$lambda($receiver, selector)); - }; - })); - var thenBy_0 = defineInlineFunction('kotlin.kotlin.comparisons.thenBy_g2gg1x$', wrapFunction(function () { - function thenBy$lambda(this$thenBy, closure$comparator, closure$selector) { - return function (a, b) { - var previousCompare = this$thenBy.compare(a, b); - var tmp$; - if (previousCompare !== 0) - tmp$ = previousCompare; - else { - var comparator = closure$comparator; - var selector = closure$selector; - tmp$ = comparator.compare(selector(a), selector(b)); - } - return tmp$; - }; - } - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, comparator, selector) { - return new Comparator$ObjectLiteral(thenBy$lambda($receiver, comparator, selector)); - }; - })); - var thenByDescending = defineInlineFunction('kotlin.kotlin.comparisons.thenByDescending_8bk9gc$', wrapFunction(function () { - var wrapFunction = Kotlin.wrapFunction; - var thenByDescending$lambda = wrapFunction(function () { - var compareValues = _.kotlin.comparisons.compareValues_s00gnj$; - return function (this$thenByDescending, closure$selector) { - return function (a, b) { - var previousCompare = this$thenByDescending.compare(a, b); - var tmp$; - if (previousCompare !== 0) - tmp$ = previousCompare; - else { - var selector = closure$selector; - tmp$ = compareValues(selector(b), selector(a)); - } - return tmp$; - }; - }; - }); - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, selector) { - return new Comparator$ObjectLiteral(thenByDescending$lambda($receiver, selector)); - }; - })); - var thenByDescending_0 = defineInlineFunction('kotlin.kotlin.comparisons.thenByDescending_g2gg1x$', wrapFunction(function () { - function thenByDescending$lambda(this$thenByDescending, closure$comparator, closure$selector) { - return function (a, b) { - var previousCompare = this$thenByDescending.compare(a, b); - var tmp$; - if (previousCompare !== 0) - tmp$ = previousCompare; - else { - var comparator = closure$comparator; - var selector = closure$selector; - tmp$ = comparator.compare(selector(b), selector(a)); - } - return tmp$; - }; - } - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, comparator, selector) { - return new Comparator$ObjectLiteral(thenByDescending$lambda($receiver, comparator, selector)); - }; - })); - var thenComparator = defineInlineFunction('kotlin.kotlin.comparisons.thenComparator_yg42ks$', wrapFunction(function () { - function thenComparator$lambda(this$thenComparator, closure$comparison) { - return function (a, b) { - var previousCompare = this$thenComparator.compare(a, b); - return previousCompare !== 0 ? previousCompare : closure$comparison(a, b); - }; - } - var Kind_CLASS = Kotlin.Kind.CLASS; - var Comparator = _.kotlin.Comparator; - function Comparator$ObjectLiteral(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - return function ($receiver, comparison) { - return new Comparator$ObjectLiteral(thenComparator$lambda($receiver, comparison)); - }; - })); - function then$lambda(this$then, closure$comparator) { - return function (a, b) { - var previousCompare = this$then.compare(a, b); - return previousCompare !== 0 ? previousCompare : closure$comparator.compare(a, b); - }; - } - function then_1($receiver, comparator) { - return new Comparator$ObjectLiteral_0(then$lambda($receiver, comparator)); - } - function thenDescending$lambda(this$thenDescending, closure$comparator) { - return function (a, b) { - var previousCompare = this$thenDescending.compare(a, b); - return previousCompare !== 0 ? previousCompare : closure$comparator.compare(b, a); - }; - } - function thenDescending($receiver, comparator) { - return new Comparator$ObjectLiteral_0(thenDescending$lambda($receiver, comparator)); - } - function nullsFirst$lambda(closure$comparator) { - return function (a, b) { - if (a === b) - return 0; - else if (a == null) - return -1; - else if (b == null) - return 1; - else - return closure$comparator.compare(a, b); - }; - } - function nullsFirst(comparator) { - return new Comparator$ObjectLiteral_0(nullsFirst$lambda(comparator)); - } - var nullsFirst_0 = defineInlineFunction('kotlin.kotlin.comparisons.nullsFirst_dahdeg$', wrapFunction(function () { - var naturalOrder = _.kotlin.comparisons.naturalOrder_dahdeg$; - var nullsFirst = _.kotlin.comparisons.nullsFirst_c94i6r$; - return function () { - return nullsFirst(naturalOrder()); - }; - })); - function nullsLast$lambda(closure$comparator) { - return function (a, b) { - if (a === b) - return 0; - else if (a == null) - return 1; - else if (b == null) - return -1; - else - return closure$comparator.compare(a, b); - }; - } - function nullsLast(comparator) { - return new Comparator$ObjectLiteral_0(nullsLast$lambda(comparator)); - } - var nullsLast_0 = defineInlineFunction('kotlin.kotlin.comparisons.nullsLast_dahdeg$', wrapFunction(function () { - var naturalOrder = _.kotlin.comparisons.naturalOrder_dahdeg$; - var nullsLast = _.kotlin.comparisons.nullsLast_c94i6r$; - return function () { - return nullsLast(naturalOrder()); - }; - })); - function naturalOrder() { - var tmp$; - return Kotlin.isType(tmp$ = NaturalOrderComparator_getInstance(), Comparator) ? tmp$ : throwCCE_0(); - } - function reverseOrder() { - var tmp$; - return Kotlin.isType(tmp$ = ReverseOrderComparator_getInstance(), Comparator) ? tmp$ : throwCCE_0(); - } - function reversed_16($receiver) { - var tmp$, tmp$_0; - if (Kotlin.isType($receiver, ReversedComparator)) - return $receiver.comparator; - else if (equals($receiver, NaturalOrderComparator_getInstance())) - return Kotlin.isType(tmp$ = ReverseOrderComparator_getInstance(), Comparator) ? tmp$ : throwCCE_0(); - else if (equals($receiver, ReverseOrderComparator_getInstance())) - return Kotlin.isType(tmp$_0 = NaturalOrderComparator_getInstance(), Comparator) ? tmp$_0 : throwCCE_0(); - else - return new ReversedComparator($receiver); - } - function ReversedComparator(comparator) { - this.comparator = comparator; - } - ReversedComparator.prototype.compare = function (a, b) { - return this.comparator.compare(b, a); - }; - ReversedComparator.prototype.reversed = function () { - return this.comparator; - }; - ReversedComparator.$metadata$ = {kind: Kind_CLASS, simpleName: 'ReversedComparator', interfaces: [Comparator]}; - function NaturalOrderComparator() { - NaturalOrderComparator_instance = this; - } - NaturalOrderComparator.prototype.compare = function (a, b) { - return Kotlin.compareTo(a, b); - }; - NaturalOrderComparator.prototype.reversed = function () { - return ReverseOrderComparator_getInstance(); - }; - NaturalOrderComparator.$metadata$ = {kind: Kind_OBJECT, simpleName: 'NaturalOrderComparator', interfaces: [Comparator]}; - var NaturalOrderComparator_instance = null; - function NaturalOrderComparator_getInstance() { - if (NaturalOrderComparator_instance === null) { - new NaturalOrderComparator(); - } - return NaturalOrderComparator_instance; - } - function ReverseOrderComparator() { - ReverseOrderComparator_instance = this; - } - ReverseOrderComparator.prototype.compare = function (a, b) { - return Kotlin.compareTo(b, a); - }; - ReverseOrderComparator.prototype.reversed = function () { - return NaturalOrderComparator_getInstance(); - }; - ReverseOrderComparator.$metadata$ = {kind: Kind_OBJECT, simpleName: 'ReverseOrderComparator', interfaces: [Comparator]}; - var ReverseOrderComparator_instance = null; - function ReverseOrderComparator_getInstance() { - if (ReverseOrderComparator_instance === null) { - new ReverseOrderComparator(); - } - return ReverseOrderComparator_instance; - } - function ExperimentalContracts() { - } - ExperimentalContracts.$metadata$ = {kind: Kind_CLASS, simpleName: 'ExperimentalContracts', interfaces: [Annotation]}; - function ContractBuilder() { - } - ContractBuilder.prototype.callsInPlace_yys88$ = function (lambda, kind, callback$default) { - if (kind === void 0) - kind = InvocationKind$UNKNOWN_getInstance(); - return callback$default ? callback$default(lambda, kind) : this.callsInPlace_yys88$$default(lambda, kind); - }; - ContractBuilder.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ContractBuilder', interfaces: []}; - function InvocationKind(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function InvocationKind_initFields() { - InvocationKind_initFields = function () { - }; - InvocationKind$AT_MOST_ONCE_instance = new InvocationKind('AT_MOST_ONCE', 0); - InvocationKind$AT_LEAST_ONCE_instance = new InvocationKind('AT_LEAST_ONCE', 1); - InvocationKind$EXACTLY_ONCE_instance = new InvocationKind('EXACTLY_ONCE', 2); - InvocationKind$UNKNOWN_instance = new InvocationKind('UNKNOWN', 3); - } - var InvocationKind$AT_MOST_ONCE_instance; - function InvocationKind$AT_MOST_ONCE_getInstance() { - InvocationKind_initFields(); - return InvocationKind$AT_MOST_ONCE_instance; - } - var InvocationKind$AT_LEAST_ONCE_instance; - function InvocationKind$AT_LEAST_ONCE_getInstance() { - InvocationKind_initFields(); - return InvocationKind$AT_LEAST_ONCE_instance; - } - var InvocationKind$EXACTLY_ONCE_instance; - function InvocationKind$EXACTLY_ONCE_getInstance() { - InvocationKind_initFields(); - return InvocationKind$EXACTLY_ONCE_instance; - } - var InvocationKind$UNKNOWN_instance; - function InvocationKind$UNKNOWN_getInstance() { - InvocationKind_initFields(); - return InvocationKind$UNKNOWN_instance; - } - InvocationKind.$metadata$ = {kind: Kind_CLASS, simpleName: 'InvocationKind', interfaces: [Enum]}; - function InvocationKind$values() { - return [InvocationKind$AT_MOST_ONCE_getInstance(), InvocationKind$AT_LEAST_ONCE_getInstance(), InvocationKind$EXACTLY_ONCE_getInstance(), InvocationKind$UNKNOWN_getInstance()]; - } - InvocationKind.values = InvocationKind$values; - function InvocationKind$valueOf(name) { - switch (name) { - case 'AT_MOST_ONCE': - return InvocationKind$AT_MOST_ONCE_getInstance(); - case 'AT_LEAST_ONCE': - return InvocationKind$AT_LEAST_ONCE_getInstance(); - case 'EXACTLY_ONCE': - return InvocationKind$EXACTLY_ONCE_getInstance(); - case 'UNKNOWN': - return InvocationKind$UNKNOWN_getInstance(); - default:throwISE('No enum constant kotlin.contracts.InvocationKind.' + name); - } - } - InvocationKind.valueOf_61zpoe$ = InvocationKind$valueOf; - var contract = defineInlineFunction('kotlin.kotlin.contracts.contract_ijyxoo$', function (builder) { - }); - function Effect() { - } - Effect.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Effect', interfaces: []}; - function ConditionalEffect() { - } - ConditionalEffect.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ConditionalEffect', interfaces: [Effect]}; - function SimpleEffect() { - } - SimpleEffect.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'SimpleEffect', interfaces: [Effect]}; - function Returns() { - } - Returns.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Returns', interfaces: [SimpleEffect]}; - function ReturnsNotNull() { - } - ReturnsNotNull.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ReturnsNotNull', interfaces: [SimpleEffect]}; - function CallsInPlace() { - } - CallsInPlace.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'CallsInPlace', interfaces: [Effect]}; - function Continuation() { - } - Continuation.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Continuation', interfaces: []}; - function RestrictsSuspension() { - } - RestrictsSuspension.$metadata$ = {kind: Kind_CLASS, simpleName: 'RestrictsSuspension', interfaces: [Annotation]}; - var resume = defineInlineFunction('kotlin.kotlin.coroutines.resume_7seulj$', wrapFunction(function () { - var Result = _.kotlin.Result; - return function ($receiver, value) { - $receiver.resumeWith_tl1gpc$(new Result(value)); - }; - })); - var resumeWithException = defineInlineFunction('kotlin.kotlin.coroutines.resumeWithException_wltuli$', wrapFunction(function () { - var Result = _.kotlin.Result; - var createFailure = _.kotlin.createFailure_tcv7n7$; - return function ($receiver, exception) { - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); - }; - })); - var Continuation_0 = defineInlineFunction('kotlin.kotlin.coroutines.Continuation_tj26d7$', wrapFunction(function () { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Continuation = _.kotlin.coroutines.Continuation; - function Continuation$ObjectLiteral(closure$context, closure$resumeWith) { - this.closure$context = closure$context; - this.closure$resumeWith = closure$resumeWith; - } - Object.defineProperty(Continuation$ObjectLiteral.prototype, 'context', {get: function () { - return this.closure$context; - }}); - Continuation$ObjectLiteral.prototype.resumeWith_tl1gpc$ = function (result) { - this.closure$resumeWith(result); - }; - Continuation$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Continuation]}; - return function (context, resumeWith) { - return new Continuation$ObjectLiteral(context, resumeWith); - }; - })); - function createCoroutine($receiver, completion) { - return new SafeContinuation(intercepted(createCoroutineUnintercepted($receiver, completion)), get_COROUTINE_SUSPENDED()); - } - function createCoroutine_0($receiver, receiver, completion) { - return new SafeContinuation(intercepted(createCoroutineUnintercepted_0($receiver, receiver, completion)), get_COROUTINE_SUSPENDED()); - } - function startCoroutine($receiver, completion) { - intercepted(createCoroutineUnintercepted($receiver, completion)).resumeWith_tl1gpc$(new Result(Unit_getInstance())); - } - function startCoroutine_0($receiver, receiver, completion) { - intercepted(createCoroutineUnintercepted_0($receiver, receiver, completion)).resumeWith_tl1gpc$(new Result(Unit_getInstance())); - } - function suspendCoroutine$lambda(closure$block) { - return function (c) { - var safe = SafeContinuation_init(intercepted(c)); - closure$block(safe); - return safe.getOrThrow(); - }; - } - function suspendCoroutine(block_0, continuation) { - return suspendCoroutine$lambda(block_0)(continuation); - } - defineInlineFunction('kotlin.kotlin.coroutines.suspendCoroutine_922awp$', wrapFunction(function () { - var intercepted = _.kotlin.coroutines.intrinsics.intercepted_f9mg25$; - var SafeContinuation_init = _.kotlin.coroutines.SafeContinuation_init_wj8d80$; - function suspendCoroutine$lambda(closure$block) { - return function (c) { - var safe = SafeContinuation_init(intercepted(c)); - closure$block(safe); - return safe.getOrThrow(); - }; - } - return function (block_0, continuation) { - Kotlin.suspendCall(suspendCoroutine$lambda(block_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - }; - })); - var get_coroutineContext = defineInlineFunction('kotlin.kotlin.coroutines.get_coroutineContext', wrapFunction(function () { - var NotImplementedError_init = _.kotlin.NotImplementedError; - return function () { - throw new NotImplementedError_init('Implemented as intrinsic'); - }; - })); - function ContinuationInterceptor() { - ContinuationInterceptor$Key_getInstance(); - } - function ContinuationInterceptor$Key() { - ContinuationInterceptor$Key_instance = this; - } - ContinuationInterceptor$Key.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Key', interfaces: [CoroutineContext$Key]}; - var ContinuationInterceptor$Key_instance = null; - function ContinuationInterceptor$Key_getInstance() { - if (ContinuationInterceptor$Key_instance === null) { - new ContinuationInterceptor$Key(); - } - return ContinuationInterceptor$Key_instance; - } - ContinuationInterceptor.prototype.releaseInterceptedContinuation_k98bjh$ = function (continuation) { - }; - ContinuationInterceptor.prototype.get_j3r2sn$ = function (key) { - var tmp$; - return key === ContinuationInterceptor$Key_getInstance() ? Kotlin.isType(tmp$ = this, CoroutineContext$Element) ? tmp$ : throwCCE_0() : null; - }; - ContinuationInterceptor.prototype.minusKey_yeqjby$ = function (key) { - return key === ContinuationInterceptor$Key_getInstance() ? EmptyCoroutineContext_getInstance() : this; - }; - ContinuationInterceptor.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ContinuationInterceptor', interfaces: [CoroutineContext$Element]}; - function CoroutineContext() { - } - function CoroutineContext$plus$lambda(acc, element) { - var removed = acc.minusKey_yeqjby$(element.key); - if (removed === EmptyCoroutineContext_getInstance()) - return element; - else { - var interceptor = removed.get_j3r2sn$(ContinuationInterceptor$Key_getInstance()); - if (interceptor == null) - return new CombinedContext(removed, element); - else { - var left = removed.minusKey_yeqjby$(ContinuationInterceptor$Key_getInstance()); - return left === EmptyCoroutineContext_getInstance() ? new CombinedContext(element, interceptor) : new CombinedContext(new CombinedContext(left, element), interceptor); - } - } - } - CoroutineContext.prototype.plus_1fupul$ = function (context) { - return context === EmptyCoroutineContext_getInstance() ? this : context.fold_3cc69b$(this, CoroutineContext$plus$lambda); - }; - function CoroutineContext$Key() { - } - CoroutineContext$Key.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Key', interfaces: []}; - function CoroutineContext$Element() { - } - CoroutineContext$Element.prototype.get_j3r2sn$ = function (key) { - var tmp$; - return equals(this.key, key) ? Kotlin.isType(tmp$ = this, CoroutineContext$Element) ? tmp$ : throwCCE_0() : null; - }; - CoroutineContext$Element.prototype.fold_3cc69b$ = function (initial, operation) { - return operation(initial, this); - }; - CoroutineContext$Element.prototype.minusKey_yeqjby$ = function (key) { - return equals(this.key, key) ? EmptyCoroutineContext_getInstance() : this; - }; - CoroutineContext$Element.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Element', interfaces: [CoroutineContext]}; - CoroutineContext.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'CoroutineContext', interfaces: []}; - function AbstractCoroutineContextElement(key) { - this.key_no4tas$_0 = key; - } - Object.defineProperty(AbstractCoroutineContextElement.prototype, 'key', {get: function () { - return this.key_no4tas$_0; - }}); - AbstractCoroutineContextElement.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractCoroutineContextElement', interfaces: [CoroutineContext$Element]}; - function EmptyCoroutineContext() { - EmptyCoroutineContext_instance = this; - this.serialVersionUID_0 = L0; - } - EmptyCoroutineContext.prototype.readResolve_0 = function () { - return EmptyCoroutineContext_getInstance(); - }; - EmptyCoroutineContext.prototype.get_j3r2sn$ = function (key) { - return null; - }; - EmptyCoroutineContext.prototype.fold_3cc69b$ = function (initial, operation) { - return initial; - }; - EmptyCoroutineContext.prototype.plus_1fupul$ = function (context) { - return context; - }; - EmptyCoroutineContext.prototype.minusKey_yeqjby$ = function (key) { - return this; - }; - EmptyCoroutineContext.prototype.hashCode = function () { - return 0; - }; - EmptyCoroutineContext.prototype.toString = function () { - return 'EmptyCoroutineContext'; - }; - EmptyCoroutineContext.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptyCoroutineContext', interfaces: [Serializable, CoroutineContext]}; - var EmptyCoroutineContext_instance = null; - function EmptyCoroutineContext_getInstance() { - if (EmptyCoroutineContext_instance === null) { - new EmptyCoroutineContext(); - } - return EmptyCoroutineContext_instance; - } - function CombinedContext(left, element) { - this.left_0 = left; - this.element_0 = element; - } - CombinedContext.prototype.get_j3r2sn$ = function (key) { - var tmp$; - var cur = this; - while (true) { - if ((tmp$ = cur.element_0.get_j3r2sn$(key)) != null) { - return tmp$; - } - var next = cur.left_0; - if (Kotlin.isType(next, CombinedContext)) { - cur = next; - } - else { - return next.get_j3r2sn$(key); - } - } - }; - CombinedContext.prototype.fold_3cc69b$ = function (initial, operation) { - return operation(this.left_0.fold_3cc69b$(initial, operation), this.element_0); - }; - CombinedContext.prototype.minusKey_yeqjby$ = function (key) { - var tmp$; - if (this.element_0.get_j3r2sn$(key) != null) { - return this.left_0; - } - var newLeft = this.left_0.minusKey_yeqjby$(key); - if (newLeft === this.left_0) - tmp$ = this; - else if (newLeft === EmptyCoroutineContext_getInstance()) - tmp$ = this.element_0; - else - tmp$ = new CombinedContext(newLeft, this.element_0); - return tmp$; - }; - CombinedContext.prototype.size_0 = function () { - var tmp$, tmp$_0; - var cur = this; - var size = 2; - while (true) { - tmp$_0 = Kotlin.isType(tmp$ = cur.left_0, CombinedContext) ? tmp$ : null; - if (tmp$_0 == null) { - return size; - } - cur = tmp$_0; - size = size + 1 | 0; - } - }; - CombinedContext.prototype.contains_0 = function (element) { - return equals(this.get_j3r2sn$(element.key), element); - }; - CombinedContext.prototype.containsAll_0 = function (context) { - var tmp$; - var cur = context; - while (true) { - if (!this.contains_0(cur.element_0)) - return false; - var next = cur.left_0; - if (Kotlin.isType(next, CombinedContext)) { - cur = next; - } - else { - return this.contains_0(Kotlin.isType(tmp$ = next, CoroutineContext$Element) ? tmp$ : throwCCE_0()); - } - } - }; - CombinedContext.prototype.equals = function (other) { - return this === other || (Kotlin.isType(other, CombinedContext) && other.size_0() === this.size_0() && other.containsAll_0(this)); - }; - CombinedContext.prototype.hashCode = function () { - return hashCode(this.left_0) + hashCode(this.element_0) | 0; - }; - function CombinedContext$toString$lambda(acc, element) { - return acc.length === 0 ? element.toString() : acc + ', ' + element; - } - CombinedContext.prototype.toString = function () { - return '[' + this.fold_3cc69b$('', CombinedContext$toString$lambda) + ']'; - }; - function CombinedContext$writeReplace$lambda(closure$elements, closure$index) { - return function (f, element) { - var tmp$; - closure$elements[tmp$ = closure$index.v, closure$index.v = tmp$ + 1 | 0, tmp$] = element; - return Unit; - }; - } - CombinedContext.prototype.writeReplace_0 = function () { - var tmp$; - var n = this.size_0(); - var elements = Kotlin.newArray(n, null); - var index = {v: 0}; - this.fold_3cc69b$(Unit_getInstance(), CombinedContext$writeReplace$lambda(elements, index)); - if (!(index.v === n)) { - var message = 'Check failed.'; - throw IllegalStateException_init_0(message.toString()); - } - return new CombinedContext$Serialized(Kotlin.isArray(tmp$ = elements) ? tmp$ : throwCCE_0()); - }; - function CombinedContext$Serialized(elements) { - CombinedContext$Serialized$Companion_getInstance(); - this.elements = elements; - } - function CombinedContext$Serialized$Companion() { - CombinedContext$Serialized$Companion_instance = this; - this.serialVersionUID_0 = L0; - } - CombinedContext$Serialized$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var CombinedContext$Serialized$Companion_instance = null; - function CombinedContext$Serialized$Companion_getInstance() { - if (CombinedContext$Serialized$Companion_instance === null) { - new CombinedContext$Serialized$Companion(); - } - return CombinedContext$Serialized$Companion_instance; - } - CombinedContext$Serialized.prototype.readResolve_0 = function () { - var $receiver = this.elements; - var tmp$; - var accumulator = EmptyCoroutineContext_getInstance(); - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - accumulator = accumulator.plus_1fupul$(element); - } - return accumulator; - }; - CombinedContext$Serialized.$metadata$ = {kind: Kind_CLASS, simpleName: 'Serialized', interfaces: [Serializable]}; - CombinedContext.$metadata$ = {kind: Kind_CLASS, simpleName: 'CombinedContext', interfaces: [Serializable, CoroutineContext]}; - function suspendCoroutineUninterceptedOrReturn(block, continuation) { - throw new NotImplementedError('Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic'); - } - defineInlineFunction('kotlin.kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn_zb0pmy$', wrapFunction(function () { - var NotImplementedError_init = _.kotlin.NotImplementedError; - return function (block, continuation) { - throw new NotImplementedError_init('Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic'); - }; - })); - function get_COROUTINE_SUSPENDED() { - return CoroutineSingletons$COROUTINE_SUSPENDED_getInstance(); - } - function CoroutineSingletons(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function CoroutineSingletons_initFields() { - CoroutineSingletons_initFields = function () { - }; - CoroutineSingletons$COROUTINE_SUSPENDED_instance = new CoroutineSingletons('COROUTINE_SUSPENDED', 0); - CoroutineSingletons$UNDECIDED_instance = new CoroutineSingletons('UNDECIDED', 1); - CoroutineSingletons$RESUMED_instance = new CoroutineSingletons('RESUMED', 2); - } - var CoroutineSingletons$COROUTINE_SUSPENDED_instance; - function CoroutineSingletons$COROUTINE_SUSPENDED_getInstance() { - CoroutineSingletons_initFields(); - return CoroutineSingletons$COROUTINE_SUSPENDED_instance; - } - var CoroutineSingletons$UNDECIDED_instance; - function CoroutineSingletons$UNDECIDED_getInstance() { - CoroutineSingletons_initFields(); - return CoroutineSingletons$UNDECIDED_instance; - } - var CoroutineSingletons$RESUMED_instance; - function CoroutineSingletons$RESUMED_getInstance() { - CoroutineSingletons_initFields(); - return CoroutineSingletons$RESUMED_instance; - } - CoroutineSingletons.$metadata$ = {kind: Kind_CLASS, simpleName: 'CoroutineSingletons', interfaces: [Enum]}; - function CoroutineSingletons$values() { - return [CoroutineSingletons$COROUTINE_SUSPENDED_getInstance(), CoroutineSingletons$UNDECIDED_getInstance(), CoroutineSingletons$RESUMED_getInstance()]; - } - CoroutineSingletons.values = CoroutineSingletons$values; - function CoroutineSingletons$valueOf(name) { - switch (name) { - case 'COROUTINE_SUSPENDED': - return CoroutineSingletons$COROUTINE_SUSPENDED_getInstance(); - case 'UNDECIDED': - return CoroutineSingletons$UNDECIDED_getInstance(); - case 'RESUMED': - return CoroutineSingletons$RESUMED_getInstance(); - default:throwISE('No enum constant kotlin.coroutines.intrinsics.CoroutineSingletons.' + name); - } - } - CoroutineSingletons.valueOf_61zpoe$ = CoroutineSingletons$valueOf; - var and = defineInlineFunction('kotlin.kotlin.experimental.and_buxqzf$', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function ($receiver, other) { - return toByte($receiver & other); - }; - })); - var or = defineInlineFunction('kotlin.kotlin.experimental.or_buxqzf$', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function ($receiver, other) { - return toByte($receiver | other); - }; - })); - var xor = defineInlineFunction('kotlin.kotlin.experimental.xor_buxqzf$', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function ($receiver, other) { - return toByte($receiver ^ other); - }; - })); - var inv = defineInlineFunction('kotlin.kotlin.experimental.inv_mz3mee$', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function ($receiver) { - return toByte(~$receiver); - }; - })); - var and_0 = defineInlineFunction('kotlin.kotlin.experimental.and_mvfjzl$', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function ($receiver, other) { - return toShort($receiver & other); - }; - })); - var or_0 = defineInlineFunction('kotlin.kotlin.experimental.or_mvfjzl$', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function ($receiver, other) { - return toShort($receiver | other); - }; - })); - var xor_0 = defineInlineFunction('kotlin.kotlin.experimental.xor_mvfjzl$', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function ($receiver, other) { - return toShort($receiver ^ other); - }; - })); - var inv_0 = defineInlineFunction('kotlin.kotlin.experimental.inv_5vcgdc$', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function ($receiver) { - return toShort(~$receiver); - }; - })); - function ExperimentalTypeInference() { - } - ExperimentalTypeInference.$metadata$ = {kind: Kind_CLASS, simpleName: 'ExperimentalTypeInference', interfaces: [Annotation]}; - function NoInfer() { - } - NoInfer.$metadata$ = {kind: Kind_CLASS, simpleName: 'NoInfer', interfaces: [Annotation]}; - function Exact() { - } - Exact.$metadata$ = {kind: Kind_CLASS, simpleName: 'Exact', interfaces: [Annotation]}; - function LowPriorityInOverloadResolution() { - } - LowPriorityInOverloadResolution.$metadata$ = {kind: Kind_CLASS, simpleName: 'LowPriorityInOverloadResolution', interfaces: [Annotation]}; - function HidesMembers() { - } - HidesMembers.$metadata$ = {kind: Kind_CLASS, simpleName: 'HidesMembers', interfaces: [Annotation]}; - function OnlyInputTypes() { - } - OnlyInputTypes.$metadata$ = {kind: Kind_CLASS, simpleName: 'OnlyInputTypes', interfaces: [Annotation]}; - function InlineOnly() { - } - InlineOnly.$metadata$ = {kind: Kind_CLASS, simpleName: 'InlineOnly', interfaces: [Annotation]}; - function DynamicExtension() { - } - DynamicExtension.$metadata$ = {kind: Kind_CLASS, simpleName: 'DynamicExtension', interfaces: [Annotation]}; - function AccessibleLateinitPropertyLiteral() { - } - AccessibleLateinitPropertyLiteral.$metadata$ = {kind: Kind_CLASS, simpleName: 'AccessibleLateinitPropertyLiteral', interfaces: [Annotation]}; - function RequireKotlin(version, message, level, versionKind, errorCode) { - if (message === void 0) - message = ''; - if (level === void 0) - level = DeprecationLevel.ERROR; - if (versionKind === void 0) - versionKind = RequireKotlinVersionKind$LANGUAGE_VERSION_getInstance(); - if (errorCode === void 0) - errorCode = -1; - this.version = version; - this.message = message; - this.level = level; - this.versionKind = versionKind; - this.errorCode = errorCode; - } - RequireKotlin.$metadata$ = {kind: Kind_CLASS, simpleName: 'RequireKotlin', interfaces: [Annotation]}; - function RequireKotlinVersionKind(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function RequireKotlinVersionKind_initFields() { - RequireKotlinVersionKind_initFields = function () { - }; - RequireKotlinVersionKind$LANGUAGE_VERSION_instance = new RequireKotlinVersionKind('LANGUAGE_VERSION', 0); - RequireKotlinVersionKind$COMPILER_VERSION_instance = new RequireKotlinVersionKind('COMPILER_VERSION', 1); - RequireKotlinVersionKind$API_VERSION_instance = new RequireKotlinVersionKind('API_VERSION', 2); - } - var RequireKotlinVersionKind$LANGUAGE_VERSION_instance; - function RequireKotlinVersionKind$LANGUAGE_VERSION_getInstance() { - RequireKotlinVersionKind_initFields(); - return RequireKotlinVersionKind$LANGUAGE_VERSION_instance; - } - var RequireKotlinVersionKind$COMPILER_VERSION_instance; - function RequireKotlinVersionKind$COMPILER_VERSION_getInstance() { - RequireKotlinVersionKind_initFields(); - return RequireKotlinVersionKind$COMPILER_VERSION_instance; - } - var RequireKotlinVersionKind$API_VERSION_instance; - function RequireKotlinVersionKind$API_VERSION_getInstance() { - RequireKotlinVersionKind_initFields(); - return RequireKotlinVersionKind$API_VERSION_instance; - } - RequireKotlinVersionKind.$metadata$ = {kind: Kind_CLASS, simpleName: 'RequireKotlinVersionKind', interfaces: [Enum]}; - function RequireKotlinVersionKind$values() { - return [RequireKotlinVersionKind$LANGUAGE_VERSION_getInstance(), RequireKotlinVersionKind$COMPILER_VERSION_getInstance(), RequireKotlinVersionKind$API_VERSION_getInstance()]; - } - RequireKotlinVersionKind.values = RequireKotlinVersionKind$values; - function RequireKotlinVersionKind$valueOf(name) { - switch (name) { - case 'LANGUAGE_VERSION': - return RequireKotlinVersionKind$LANGUAGE_VERSION_getInstance(); - case 'COMPILER_VERSION': - return RequireKotlinVersionKind$COMPILER_VERSION_getInstance(); - case 'API_VERSION': - return RequireKotlinVersionKind$API_VERSION_getInstance(); - default:throwISE('No enum constant kotlin.internal.RequireKotlinVersionKind.' + name); - } - } - RequireKotlinVersionKind.valueOf_61zpoe$ = RequireKotlinVersionKind$valueOf; - function ContractsDsl() { - } - ContractsDsl.$metadata$ = {kind: Kind_CLASS, simpleName: 'ContractsDsl', interfaces: [Annotation]}; - function Delegates() { - Delegates_instance = this; - } - Delegates.prototype.notNull_30y1fr$ = function () { - return new NotNullVar(); - }; - Delegates.prototype.observable_2ulm9r$ = defineInlineFunction('kotlin.kotlin.properties.Delegates.observable_2ulm9r$', wrapFunction(function () { - var ObservableProperty = _.kotlin.properties.ObservableProperty; - var Kind_CLASS = Kotlin.Kind.CLASS; - Delegates$observable$ObjectLiteral.prototype = Object.create(ObservableProperty.prototype); - Delegates$observable$ObjectLiteral.prototype.constructor = Delegates$observable$ObjectLiteral; - function Delegates$observable$ObjectLiteral(closure$onChange, initialValue_0) { - this.closure$onChange = closure$onChange; - ObservableProperty.call(this, initialValue_0); - } - Delegates$observable$ObjectLiteral.prototype.afterChange_jxtfl0$ = function (property, oldValue, newValue) { - this.closure$onChange(property, oldValue, newValue); - }; - Delegates$observable$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [ObservableProperty]}; - return function (initialValue, onChange) { - return new Delegates$observable$ObjectLiteral(onChange, initialValue); - }; - })); - Delegates.prototype.vetoable_61sx1h$ = defineInlineFunction('kotlin.kotlin.properties.Delegates.vetoable_61sx1h$', wrapFunction(function () { - var ObservableProperty = _.kotlin.properties.ObservableProperty; - var Kind_CLASS = Kotlin.Kind.CLASS; - Delegates$vetoable$ObjectLiteral.prototype = Object.create(ObservableProperty.prototype); - Delegates$vetoable$ObjectLiteral.prototype.constructor = Delegates$vetoable$ObjectLiteral; - function Delegates$vetoable$ObjectLiteral(closure$onChange, initialValue_0) { - this.closure$onChange = closure$onChange; - ObservableProperty.call(this, initialValue_0); - } - Delegates$vetoable$ObjectLiteral.prototype.beforeChange_jxtfl0$ = function (property, oldValue, newValue) { - return this.closure$onChange(property, oldValue, newValue); - }; - Delegates$vetoable$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [ObservableProperty]}; - return function (initialValue, onChange) { - return new Delegates$vetoable$ObjectLiteral(onChange, initialValue); - }; - })); - Delegates.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Delegates', interfaces: []}; - var Delegates_instance = null; - function Delegates_getInstance() { - if (Delegates_instance === null) { - new Delegates(); - } - return Delegates_instance; - } - function NotNullVar() { - this.value_0 = null; - } - NotNullVar.prototype.getValue_lrcp0p$ = function (thisRef, property) { - var tmp$; - tmp$ = this.value_0; - if (tmp$ == null) { - throw IllegalStateException_init_0('Property ' + property.callableName + ' should be initialized before get.'); - } - return tmp$; - }; - NotNullVar.prototype.setValue_9rddgb$ = function (thisRef, property, value) { - this.value_0 = value; - }; - NotNullVar.$metadata$ = {kind: Kind_CLASS, simpleName: 'NotNullVar', interfaces: [ReadWriteProperty]}; - function ReadOnlyProperty() { - } - ReadOnlyProperty.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ReadOnlyProperty', interfaces: []}; - function ReadWriteProperty() { - } - ReadWriteProperty.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ReadWriteProperty', interfaces: []}; - function ObservableProperty(initialValue) { - this.value_kuqkmn$_0 = initialValue; - } - ObservableProperty.prototype.beforeChange_jxtfl0$ = function (property, oldValue, newValue) { - return true; - }; - ObservableProperty.prototype.afterChange_jxtfl0$ = function (property, oldValue, newValue) { - }; - ObservableProperty.prototype.getValue_lrcp0p$ = function (thisRef, property) { - return this.value_kuqkmn$_0; - }; - ObservableProperty.prototype.setValue_9rddgb$ = function (thisRef, property, value) { - var oldValue = this.value_kuqkmn$_0; - if (!this.beforeChange_jxtfl0$(property, oldValue, value)) { - return; - } - this.value_kuqkmn$_0 = value; - this.afterChange_jxtfl0$(property, oldValue, value); - }; - ObservableProperty.$metadata$ = {kind: Kind_CLASS, simpleName: 'ObservableProperty', interfaces: [ReadWriteProperty]}; - function Random() { - Random$Default_getInstance(); - } - Random.prototype.nextInt = function () { - return this.nextBits_za3lpa$(32); - }; - Random.prototype.nextInt_za3lpa$ = function (until) { - return this.nextInt_vux9f0$(0, until); - }; - Random.prototype.nextInt_vux9f0$ = function (from, until) { - var tmp$; - checkRangeBounds(from, until); - var n = until - from | 0; - if (n > 0 || n === -2147483648) { - if ((n & (-n | 0)) === n) { - var bitCount = fastLog2(n); - tmp$ = this.nextBits_za3lpa$(bitCount); - } - else { - var v; - do { - var bits = this.nextInt() >>> 1; - v = bits % n; - } - while ((bits - v + (n - 1) | 0) < 0); - tmp$ = v; - } - var rnd = tmp$; - return from + rnd | 0; - } - else { - while (true) { - var rnd_0 = this.nextInt(); - if (from <= rnd_0 && rnd_0 < until) - return rnd_0; - } - } - }; - Random.prototype.nextLong = function () { - return Kotlin.Long.fromInt(this.nextInt()).shiftLeft(32).add(Kotlin.Long.fromInt(this.nextInt())); - }; - Random.prototype.nextLong_s8cxhz$ = function (until) { - return this.nextLong_3pjtqy$(L0, until); - }; - Random.prototype.nextLong_3pjtqy$ = function (from, until) { - var tmp$; - checkRangeBounds_0(from, until); - var n = until.subtract(from); - if (n.toNumber() > 0) { - var rnd; - if (equals(n.and(n.unaryMinus()), n)) { - var nLow = n.toInt(); - var nHigh = n.shiftRightUnsigned(32).toInt(); - if (nLow !== 0) { - var bitCount = fastLog2(nLow); - tmp$ = Kotlin.Long.fromInt(this.nextBits_za3lpa$(bitCount)).and(L4294967295); - } - else if (nHigh === 1) - tmp$ = Kotlin.Long.fromInt(this.nextInt()).and(L4294967295); - else { - var bitCount_0 = fastLog2(nHigh); - tmp$ = Kotlin.Long.fromInt(this.nextBits_za3lpa$(bitCount_0)).shiftLeft(32).add(Kotlin.Long.fromInt(this.nextInt())); - } - rnd = tmp$; - } - else { - var v; - do { - var bits = this.nextLong().shiftRightUnsigned(1); - v = bits.modulo(n); - } - while (bits.subtract(v).add(n.subtract(Kotlin.Long.fromInt(1))).toNumber() < 0); - rnd = v; - } - return from.add(rnd); - } - else { - while (true) { - var rnd_0 = this.nextLong(); - if (from.lessThanOrEqual(rnd_0) && rnd_0.lessThan(until)) - return rnd_0; - } - } - }; - Random.prototype.nextBoolean = function () { - return this.nextBits_za3lpa$(1) !== 0; - }; - Random.prototype.nextDouble = function () { - return doubleFromParts(this.nextBits_za3lpa$(26), this.nextBits_za3lpa$(27)); - }; - Random.prototype.nextDouble_14dthe$ = function (until) { - return this.nextDouble_lu1900$(0.0, until); - }; - Random.prototype.nextDouble_lu1900$ = function (from, until) { - var tmp$; - checkRangeBounds_1(from, until); - var size = until - from; - if (isInfinite(size) && isFinite(from) && isFinite(until)) { - var r1 = this.nextDouble() * (until / 2 - from / 2); - tmp$ = from + r1 + r1; - } - else { - tmp$ = from + this.nextDouble() * size; - } - var r = tmp$; - return r >= until ? nextDown(until) : r; - }; - Random.prototype.nextFloat = function () { - return this.nextBits_za3lpa$(24) / 16777216; - }; - function Random$nextBytes$lambda(closure$fromIndex, closure$toIndex, closure$array) { - return function () { - return 'fromIndex (' + closure$fromIndex + ') or toIndex (' + closure$toIndex + ') are out of range: 0..' + closure$array.length + '.'; - }; - } - Random.prototype.nextBytes_mj6st8$$default = function (array, fromIndex, toIndex) { - if (!(0 <= fromIndex && fromIndex <= array.length ? 0 <= toIndex && toIndex <= array.length : false)) { - var message = Random$nextBytes$lambda(fromIndex, toIndex, array)(); - throw IllegalArgumentException_init_0(message.toString()); - } - if (!(fromIndex <= toIndex)) { - var message_0 = 'fromIndex (' + fromIndex + ') must be not greater than toIndex (' + toIndex + ').'; - throw IllegalArgumentException_init_0(message_0.toString()); - } - var steps = (toIndex - fromIndex | 0) / 4 | 0; - var position = {v: fromIndex}; - for (var index = 0; index < steps; index++) { - var v = this.nextInt(); - array[position.v] = toByte(v); - array[position.v + 1 | 0] = toByte(v >>> 8); - array[position.v + 2 | 0] = toByte(v >>> 16); - array[position.v + 3 | 0] = toByte(v >>> 24); - position.v = position.v + 4 | 0; - } - var remainder = toIndex - position.v | 0; - var vr = this.nextBits_za3lpa$(remainder * 8 | 0); - for (var i = 0; i < remainder; i++) { - array[position.v + i | 0] = toByte(vr >>> (i * 8 | 0)); - } - return array; - }; - Random.prototype.nextBytes_mj6st8$ = function (array, fromIndex, toIndex, callback$default) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = array.length; - return callback$default ? callback$default(array, fromIndex, toIndex) : this.nextBytes_mj6st8$$default(array, fromIndex, toIndex); - }; - Random.prototype.nextBytes_fqrh44$ = function (array) { - return this.nextBytes_mj6st8$(array, 0, array.length); - }; - Random.prototype.nextBytes_za3lpa$ = function (size) { - return this.nextBytes_fqrh44$(new Int8Array(size)); - }; - function Random$Default() { - Random$Default_instance = this; - Random.call(this); - this.defaultRandom_0 = defaultPlatformRandom(); - this.Companion = Random$Companion_getInstance(); - } - Random$Default.prototype.nextBits_za3lpa$ = function (bitCount) { - return this.defaultRandom_0.nextBits_za3lpa$(bitCount); - }; - Random$Default.prototype.nextInt = function () { - return this.defaultRandom_0.nextInt(); - }; - Random$Default.prototype.nextInt_za3lpa$ = function (until) { - return this.defaultRandom_0.nextInt_za3lpa$(until); - }; - Random$Default.prototype.nextInt_vux9f0$ = function (from, until) { - return this.defaultRandom_0.nextInt_vux9f0$(from, until); - }; - Random$Default.prototype.nextLong = function () { - return this.defaultRandom_0.nextLong(); - }; - Random$Default.prototype.nextLong_s8cxhz$ = function (until) { - return this.defaultRandom_0.nextLong_s8cxhz$(until); - }; - Random$Default.prototype.nextLong_3pjtqy$ = function (from, until) { - return this.defaultRandom_0.nextLong_3pjtqy$(from, until); - }; - Random$Default.prototype.nextBoolean = function () { - return this.defaultRandom_0.nextBoolean(); - }; - Random$Default.prototype.nextDouble = function () { - return this.defaultRandom_0.nextDouble(); - }; - Random$Default.prototype.nextDouble_14dthe$ = function (until) { - return this.defaultRandom_0.nextDouble_14dthe$(until); - }; - Random$Default.prototype.nextDouble_lu1900$ = function (from, until) { - return this.defaultRandom_0.nextDouble_lu1900$(from, until); - }; - Random$Default.prototype.nextFloat = function () { - return this.defaultRandom_0.nextFloat(); - }; - Random$Default.prototype.nextBytes_fqrh44$ = function (array) { - return this.defaultRandom_0.nextBytes_fqrh44$(array); - }; - Random$Default.prototype.nextBytes_za3lpa$ = function (size) { - return this.defaultRandom_0.nextBytes_za3lpa$(size); - }; - Random$Default.prototype.nextBytes_mj6st8$$default = function (array, fromIndex, toIndex) { - return this.defaultRandom_0.nextBytes_mj6st8$(array, fromIndex, toIndex); - }; - Random$Default.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Default', interfaces: [Random]}; - var Random$Default_instance = null; - function Random$Default_getInstance() { - if (Random$Default_instance === null) { - new Random$Default(); - } - return Random$Default_instance; - } - function Random$Companion() { - Random$Companion_instance = this; - Random.call(this); - } - Random$Companion.prototype.nextBits_za3lpa$ = function (bitCount) { - return Random$Default_getInstance().nextBits_za3lpa$(bitCount); - }; - Random$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: [Random]}; - var Random$Companion_instance = null; - function Random$Companion_getInstance() { - if (Random$Companion_instance === null) { - new Random$Companion(); - } - return Random$Companion_instance; - } - Random.$metadata$ = {kind: Kind_CLASS, simpleName: 'Random', interfaces: []}; - function Random_0(seed) { - return XorWowRandom_init(seed, seed >> 31); - } - function Random_1(seed) { - return XorWowRandom_init(seed.toInt(), seed.shiftRight(32).toInt()); - } - function nextInt($receiver, range) { - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot get random in empty range: ' + range); - else if (range.last < 2147483647) - return $receiver.nextInt_vux9f0$(range.first, range.last + 1 | 0); - else if (range.first > -2147483648) - return $receiver.nextInt_vux9f0$(range.first - 1 | 0, range.last) + 1 | 0; - else - return $receiver.nextInt(); - } - function nextLong($receiver, range) { - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot get random in empty range: ' + range); - else if (range.last.compareTo_11rb$(Long$Companion$MAX_VALUE) < 0) - return $receiver.nextLong_3pjtqy$(range.start, range.endInclusive.add(Kotlin.Long.fromInt(1))); - else if (range.start.compareTo_11rb$(Long$Companion$MIN_VALUE) > 0) - return $receiver.nextLong_3pjtqy$(range.start.subtract(Kotlin.Long.fromInt(1)), range.endInclusive).add(Kotlin.Long.fromInt(1)); - else - return $receiver.nextLong(); - } - function takeUpperBits($receiver, bitCount) { - return $receiver >>> 32 - bitCount & (-bitCount | 0) >> 31; - } - function checkRangeBounds(from, until) { - if (!(until > from)) { - var message = boundsErrorMessage(from, until); - throw IllegalArgumentException_init_0(message.toString()); - } - } - function checkRangeBounds_0(from, until) { - if (!(until.compareTo_11rb$(from) > 0)) { - var message = boundsErrorMessage(from, until); - throw IllegalArgumentException_init_0(message.toString()); - } - } - function checkRangeBounds_1(from, until) { - if (!(until > from)) { - var message = boundsErrorMessage(from, until); - throw IllegalArgumentException_init_0(message.toString()); - } - } - function boundsErrorMessage(from, until) { - return 'Random range is empty: [' + from.toString() + ', ' + until.toString() + ').'; - } - function nextUInt($receiver) { - return new UInt($receiver.nextInt()); - } - function nextUInt_0($receiver, until) { - return nextUInt_1($receiver, new UInt(0), until); - } - function nextUInt_1($receiver, from, until) { - checkUIntRangeBounds(from, until); - var signedFrom = from.data ^ -2147483648; - var signedUntil = until.data ^ -2147483648; - var signedResult = $receiver.nextInt_vux9f0$(signedFrom, signedUntil) ^ -2147483648; - return new UInt(signedResult); - } - function nextUInt_2($receiver, range) { - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot get random in empty range: ' + range); - else { - if (uintCompare(range.last.data, UInt$Companion_getInstance().MAX_VALUE.data) < 0) { - return nextUInt_1($receiver, range.first, new UInt(range.last.data + (new UInt(1)).data | 0)); - } - else { - if (uintCompare(range.first.data, UInt$Companion_getInstance().MIN_VALUE.data) > 0) { - return new UInt(nextUInt_1($receiver, new UInt(range.first.data - (new UInt(1)).data | 0), range.last).data + (new UInt(1)).data | 0); - } - else - return nextUInt($receiver); - } - } - } - function nextULong($receiver) { - return new ULong($receiver.nextLong()); - } - function nextULong_0($receiver, until) { - return nextULong_1($receiver, new ULong(Kotlin.Long.ZERO), until); - } - function nextULong_1($receiver, from, until) { - checkULongRangeBounds(from, until); - var signedFrom = from.data.xor(Long$Companion$MIN_VALUE); - var signedUntil = until.data.xor(Long$Companion$MIN_VALUE); - var signedResult = $receiver.nextLong_3pjtqy$(signedFrom, signedUntil).xor(Long$Companion$MIN_VALUE); - return new ULong(signedResult); - } - function nextULong_2($receiver, range) { - if (range.isEmpty()) - throw IllegalArgumentException_init_0('Cannot get random in empty range: ' + range); - else { - if (ulongCompare(range.last.data, ULong$Companion_getInstance().MAX_VALUE.data) < 0) { - return nextULong_1($receiver, range.first, new ULong(range.last.data.add((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data))); - } - else { - if (ulongCompare(range.first.data, ULong$Companion_getInstance().MIN_VALUE.data) > 0) { - return new ULong(nextULong_1($receiver, new ULong(range.first.data.subtract((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data)), range.last).data.add((new ULong(Kotlin.Long.fromInt((new UInt(1)).data).and(L4294967295))).data)); - } - else - return nextULong($receiver); - } - } - } - function nextUBytes($receiver, array) { - $receiver.nextBytes_fqrh44$(array.storage); - return array; - } - function nextUBytes_0($receiver, size) { - return new UByteArray($receiver.nextBytes_za3lpa$(size)); - } - function nextUBytes_1($receiver, array, fromIndex, toIndex) { - if (fromIndex === void 0) - fromIndex = 0; - if (toIndex === void 0) - toIndex = array.size; - $receiver.nextBytes_mj6st8$(array.storage, fromIndex, toIndex); - return array; - } - function checkUIntRangeBounds(from, until) { - if (!(uintCompare(until.data, from.data) > 0)) { - var message = boundsErrorMessage(from, until); - throw IllegalArgumentException_init_0(message.toString()); - } - } - function checkULongRangeBounds(from, until) { - if (!(ulongCompare(until.data, from.data) > 0)) { - var message = boundsErrorMessage(from, until); - throw IllegalArgumentException_init_0(message.toString()); - } - } - function XorWowRandom(x, y, z, w, v, addend) { - Random.call(this); - this.x_0 = x; - this.y_0 = y; - this.z_0 = z; - this.w_0 = w; - this.v_0 = v; - this.addend_0 = addend; - if (!((this.x_0 | this.y_0 | this.z_0 | this.w_0 | this.v_0) !== 0)) { - var message = 'Initial state must have at least one non-zero element.'; - throw IllegalArgumentException_init_0(message.toString()); - } - for (var index = 0; index < 64; index++) { - this.nextInt(); - } - } - XorWowRandom.prototype.nextInt = function () { - var t = this.x_0; - t = t ^ t >>> 2; - this.x_0 = this.y_0; - this.y_0 = this.z_0; - this.z_0 = this.w_0; - var v0 = this.v_0; - this.w_0 = v0; - t = t ^ t << 1 ^ v0 ^ v0 << 4; - this.v_0 = t; - this.addend_0 = this.addend_0 + 362437 | 0; - return t + this.addend_0 | 0; - }; - XorWowRandom.prototype.nextBits_za3lpa$ = function (bitCount) { - return takeUpperBits(this.nextInt(), bitCount); - }; - XorWowRandom.$metadata$ = {kind: Kind_CLASS, simpleName: 'XorWowRandom', interfaces: [Random]}; - function XorWowRandom_init(seed1, seed2, $this) { - $this = $this || Object.create(XorWowRandom.prototype); - XorWowRandom.call($this, seed1, seed2, 0, 0, ~seed1, seed1 << 10 ^ seed2 >>> 4); - return $this; - } - function ClosedFloatingPointRange() { - } - ClosedFloatingPointRange.prototype.contains_mef7kx$ = function (value) { - return this.lessThanOrEquals_n65qkk$(this.start, value) && this.lessThanOrEquals_n65qkk$(value, this.endInclusive); - }; - ClosedFloatingPointRange.prototype.isEmpty = function () { - return !this.lessThanOrEquals_n65qkk$(this.start, this.endInclusive); - }; - ClosedFloatingPointRange.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ClosedFloatingPointRange', interfaces: [ClosedRange]}; - function ComparableRange(start, endInclusive) { - this.start_p1gsmm$_0 = start; - this.endInclusive_jj4lf7$_0 = endInclusive; - } - Object.defineProperty(ComparableRange.prototype, 'start', {get: function () { - return this.start_p1gsmm$_0; - }}); - Object.defineProperty(ComparableRange.prototype, 'endInclusive', {get: function () { - return this.endInclusive_jj4lf7$_0; - }}); - ComparableRange.prototype.equals = function (other) { - return Kotlin.isType(other, ComparableRange) && (this.isEmpty() && other.isEmpty() || (equals(this.start, other.start) && equals(this.endInclusive, other.endInclusive))); - }; - ComparableRange.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * hashCode(this.start) | 0) + hashCode(this.endInclusive) | 0; - }; - ComparableRange.prototype.toString = function () { - return this.start.toString() + '..' + this.endInclusive; - }; - ComparableRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'ComparableRange', interfaces: [ClosedRange]}; - function ClosedDoubleRange(start, endInclusive) { - this._start_0 = start; - this._endInclusive_0 = endInclusive; - } - Object.defineProperty(ClosedDoubleRange.prototype, 'start', {get: function () { - return this._start_0; - }}); - Object.defineProperty(ClosedDoubleRange.prototype, 'endInclusive', {get: function () { - return this._endInclusive_0; - }}); - ClosedDoubleRange.prototype.lessThanOrEquals_n65qkk$ = function (a, b) { - return a <= b; - }; - ClosedDoubleRange.prototype.contains_mef7kx$ = function (value) { - return value >= this._start_0 && value <= this._endInclusive_0; - }; - ClosedDoubleRange.prototype.isEmpty = function () { - return !(this._start_0 <= this._endInclusive_0); - }; - ClosedDoubleRange.prototype.equals = function (other) { - return Kotlin.isType(other, ClosedDoubleRange) && (this.isEmpty() && other.isEmpty() || (this._start_0 === other._start_0 && this._endInclusive_0 === other._endInclusive_0)); - }; - ClosedDoubleRange.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * hashCode(this._start_0) | 0) + hashCode(this._endInclusive_0) | 0; - }; - ClosedDoubleRange.prototype.toString = function () { - return this._start_0.toString() + '..' + this._endInclusive_0; - }; - ClosedDoubleRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'ClosedDoubleRange', interfaces: [ClosedFloatingPointRange]}; - function rangeTo_0($receiver, that) { - return new ComparableRange($receiver, that); - } - function rangeTo_1($receiver, that) { - return new ClosedDoubleRange($receiver, that); - } - var contains_46 = defineInlineFunction('kotlin.kotlin.ranges.contains_gpq3rh$', function ($receiver, element) { - return element != null && $receiver.contains_mef7kx$(element); - }); - function checkStepIsPositive(isPositive, step) { - if (!isPositive) - throw IllegalArgumentException_init_0('Step must be positive, was: ' + step.toString() + '.'); - } - var plus_47 = defineInlineFunction('kotlin.kotlin.text.plus_elu61a$', function ($receiver, other) { - return String.fromCharCode($receiver) + other; - }); - function equals_1($receiver, other, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if ($receiver === other) - return true; - if (!ignoreCase) - return false; - if (toChar(String.fromCharCode($receiver | 0).toUpperCase().charCodeAt(0)) === toChar(String.fromCharCode(other | 0).toUpperCase().charCodeAt(0))) - return true; - if (toChar(String.fromCharCode($receiver | 0).toLowerCase().charCodeAt(0)) === toChar(String.fromCharCode(other | 0).toLowerCase().charCodeAt(0))) - return true; - return false; - } - function isSurrogate($receiver) { - return (new CharRange(kotlin_js_internal_CharCompanionObject.MIN_SURROGATE, kotlin_js_internal_CharCompanionObject.MAX_SURROGATE)).contains_mef7kx$($receiver); - } - function trimMargin($receiver, marginPrefix) { - if (marginPrefix === void 0) - marginPrefix = '|'; - return replaceIndentByMargin($receiver, '', marginPrefix); - } - var Unit_0 = Kotlin.kotlin.Unit; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit_0; - }; - }; - }); - function replaceIndentByMargin($receiver, newIndent, marginPrefix) { - if (newIndent === void 0) - newIndent = ''; - if (marginPrefix === void 0) - marginPrefix = '|'; - if (!!isBlank(marginPrefix)) { - var message = 'marginPrefix must be non-blank string.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var lines_0 = lines($receiver); - var resultSizeEstimate = $receiver.length + Kotlin.imul(newIndent.length, lines_0.size) | 0; - var indentAddFunction = getIndentFunction(newIndent); - var lastIndex = get_lastIndex_8(lines_0); - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = lines_0.iterator(); - loop_label: while (tmp$.hasNext()) { - var item = tmp$.next(); - var tmp$_1; - var index_0 = checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)); - var tmp$_2, tmp$_3; - var tmp$_4; - if ((index_0 === 0 || index_0 === lastIndex) && isBlank(item)) - tmp$_4 = null; - else { - var indentCutFunction$result; - var indexOfFirst$result; - indexOfFirst$break: do { - var tmp$_5, tmp$_6, tmp$_7, tmp$_8; - tmp$_5 = get_indices_9(item); - tmp$_6 = tmp$_5.first; - tmp$_7 = tmp$_5.last; - tmp$_8 = tmp$_5.step; - for (var index_1 = tmp$_6; index_1 <= tmp$_7; index_1 += tmp$_8) { - if (!isWhitespace(unboxChar(toBoxedChar(item.charCodeAt(index_1))))) { - indexOfFirst$result = index_1; - break indexOfFirst$break; - } - } - indexOfFirst$result = -1; - } - while (false); - var firstNonWhitespaceIndex = indexOfFirst$result; - if (firstNonWhitespaceIndex === -1) { - indentCutFunction$result = null; - } - else if (startsWith_0(item, marginPrefix, firstNonWhitespaceIndex)) { - indentCutFunction$result = item.substring(firstNonWhitespaceIndex + marginPrefix.length | 0); - } - else { - indentCutFunction$result = null; - } - tmp$_4 = (tmp$_3 = (tmp$_2 = indentCutFunction$result) != null ? indentAddFunction(tmp$_2) : null) != null ? tmp$_3 : item; - } - if ((tmp$_1 = tmp$_4) != null) { - destination.add_11rb$(tmp$_1); - } - } - return joinTo_8(destination, StringBuilder_init(resultSizeEstimate), '\n').toString(); - } - function trimIndent($receiver) { - return replaceIndent($receiver, ''); - } - function replaceIndent($receiver, newIndent) { - if (newIndent === void 0) - newIndent = ''; - var tmp$; - var lines_0 = lines($receiver); - var destination = ArrayList_init(); - var tmp$_0; - tmp$_0 = lines_0.iterator(); - while (tmp$_0.hasNext()) { - var element = tmp$_0.next(); - if (!isBlank(element)) - destination.add_11rb$(element); - } - var $receiver_0 = destination; - var destination_0 = ArrayList_init_0(collectionSizeOrDefault($receiver_0, 10)); - var tmp$_1; - tmp$_1 = $receiver_0.iterator(); - while (tmp$_1.hasNext()) { - var item = tmp$_1.next(); - destination_0.add_11rb$(indentWidth(item)); - } - var minCommonIndent = (tmp$ = min_11(destination_0)) != null ? tmp$ : 0; - var resultSizeEstimate = $receiver.length + Kotlin.imul(newIndent.length, lines_0.size) | 0; - var indentAddFunction = getIndentFunction(newIndent); - var lastIndex = get_lastIndex_8(lines_0); - var destination_1 = ArrayList_init(); - var tmp$_2, tmp$_3; - var index = 0; - tmp$_2 = lines_0.iterator(); - while (tmp$_2.hasNext()) { - var item_0 = tmp$_2.next(); - var tmp$_4; - var index_0 = checkIndexOverflow((tmp$_3 = index, index = tmp$_3 + 1 | 0, tmp$_3)); - var tmp$_5, tmp$_6; - if ((tmp$_4 = (index_0 === 0 || index_0 === lastIndex) && isBlank(item_0) ? null : (tmp$_6 = (tmp$_5 = drop_11(item_0, minCommonIndent)) != null ? indentAddFunction(tmp$_5) : null) != null ? tmp$_6 : item_0) != null) { - destination_1.add_11rb$(tmp$_4); - } - } - return joinTo_8(destination_1, StringBuilder_init(resultSizeEstimate), '\n').toString(); - } - function prependIndent$lambda(closure$indent) { - return function (it) { - if (isBlank(it)) - if (it.length < closure$indent.length) - return closure$indent; - else - return it; - else - return closure$indent + it; - }; - } - function prependIndent($receiver, indent) { - if (indent === void 0) - indent = ' '; - return joinToString_9(map_10(lineSequence($receiver), prependIndent$lambda(indent)), '\n'); - } - function indentWidth($receiver) { - var indexOfFirst$result; - indexOfFirst$break: do { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices_9($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { - if (!isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { - indexOfFirst$result = index; - break indexOfFirst$break; - } - } - indexOfFirst$result = -1; - } - while (false); - var it = indexOfFirst$result; - return it === -1 ? $receiver.length : it; - } - function getIndentFunction$lambda(line) { - return line; - } - function getIndentFunction$lambda_0(closure$indent) { - return function (line) { - return closure$indent + line; - }; - } - function getIndentFunction(indent) { - if (indent.length === 0) - return getIndentFunction$lambda; - else - return getIndentFunction$lambda_0(indent); - } - var reindent = wrapFunction(function () { - var Unit = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var ArrayList_init = _.kotlin.collections.ArrayList_init_287e2$; - var mapIndexedNotNullTo$lambda = wrapFunction(function () { - return function (closure$transform, closure$destination) { - return function (index, element) { - var tmp$; - if ((tmp$ = closure$transform(index, element)) != null) { - closure$destination.add_11rb$(tmp$); - } - return Unit; - }; - }; - }); - var checkIndexOverflow = _.kotlin.collections.checkIndexOverflow_za3lpa$; - return function ($receiver, resultSizeEstimate, indentAddFunction, indentCutFunction) { - var lastIndex = get_lastIndex_8($receiver); - var destination = ArrayList_init(); - var tmp$, tmp$_0; - var index = 0; - tmp$ = $receiver.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - var tmp$_1; - var index_0 = checkIndexOverflow((tmp$_0 = index, index = tmp$_0 + 1 | 0, tmp$_0)); - var tmp$_2, tmp$_3; - if ((tmp$_1 = (index_0 === 0 || index_0 === lastIndex) && isBlank(item) ? null : (tmp$_3 = (tmp$_2 = indentCutFunction(item)) != null ? indentAddFunction(tmp$_2) : null) != null ? tmp$_3 : item) != null) { - destination.add_11rb$(tmp$_1); - } - } - return joinTo_8(destination, StringBuilder_init(resultSizeEstimate), '\n').toString(); - }; - }); - var buildString = defineInlineFunction('kotlin.kotlin.text.buildString_obkquz$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init; - return function (builderAction) { - var $receiver = StringBuilder_init(); - builderAction($receiver); - return $receiver.toString(); - }; - })); - var buildString_0 = defineInlineFunction('kotlin.kotlin.text.buildString_5yrlj9$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init_za3lpa$; - return function (capacity, builderAction) { - var $receiver = StringBuilder_init(capacity); - builderAction($receiver); - return $receiver.toString(); - }; - })); - function append($receiver, value) { - var tmp$; - for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { - var item = value[tmp$]; - $receiver.append_gw00v9$(item); - } - return $receiver; - } - function append_0($receiver, value) { - var tmp$; - for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { - var item = value[tmp$]; - $receiver.append_gw00v9$(item); - } - return $receiver; - } - function append_1($receiver, value) { - var tmp$; - for (tmp$ = 0; tmp$ !== value.length; ++tmp$) { - var item = value[tmp$]; - $receiver.append_s8jyv4$(item); - } - return $receiver; - } - function appendElement_0($receiver, element, transform) { - if (transform != null) - $receiver.append_gw00v9$(transform(element)); - else if (element == null || Kotlin.isCharSequence(element)) - $receiver.append_gw00v9$(element); - else if (Kotlin.isChar(element)) - $receiver.append_s8itvh$(unboxChar(element)); - else - $receiver.append_gw00v9$(toString(element)); - } - function toByteOrNull($receiver) { - return toByteOrNull_0($receiver, 10); - } - function toByteOrNull_0($receiver, radix) { - var tmp$; - tmp$ = toIntOrNull_0($receiver, radix); - if (tmp$ == null) { - return null; - } - var int = tmp$; - if (int < kotlin_js_internal_ByteCompanionObject.MIN_VALUE || int > kotlin_js_internal_ByteCompanionObject.MAX_VALUE) - return null; - return toByte(int); - } - function toShortOrNull($receiver) { - return toShortOrNull_0($receiver, 10); - } - function toShortOrNull_0($receiver, radix) { - var tmp$; - tmp$ = toIntOrNull_0($receiver, radix); - if (tmp$ == null) { - return null; - } - var int = tmp$; - if (int < kotlin_js_internal_ShortCompanionObject.MIN_VALUE || int > kotlin_js_internal_ShortCompanionObject.MAX_VALUE) - return null; - return toShort(int); - } - function toIntOrNull($receiver) { - return toIntOrNull_0($receiver, 10); - } - function toIntOrNull_0($receiver, radix) { - var tmp$; - checkRadix(radix); - var length = $receiver.length; - if (length === 0) - return null; - var start; - var isNegative; - var limit; - var firstChar = $receiver.charCodeAt(0); - if (firstChar < 48) { - if (length === 1) - return null; - start = 1; - if (firstChar === 45) { - isNegative = true; - limit = -2147483648; - } - else if (firstChar === 43) { - isNegative = false; - limit = -2147483647; - } - else - return null; - } - else { - start = 0; - isNegative = false; - limit = -2147483647; - } - var limitBeforeMul = limit / radix | 0; - var result = 0; - tmp$ = length - 1 | 0; - for (var i = start; i <= tmp$; i++) { - var digit = digitOf($receiver.charCodeAt(i), radix); - if (digit < 0) - return null; - if (result < limitBeforeMul) - return null; - result = Kotlin.imul(result, radix); - if (result < (limit + digit | 0)) - return null; - result = result - digit | 0; - } - return isNegative ? result : -result | 0; - } - function toLongOrNull($receiver) { - return toLongOrNull_0($receiver, 10); - } - function toLongOrNull_0($receiver, radix) { - var tmp$; - checkRadix(radix); - var length = $receiver.length; - if (length === 0) - return null; - var start; - var isNegative; - var limit; - var firstChar = $receiver.charCodeAt(0); - if (firstChar < 48) { - if (length === 1) - return null; - start = 1; - if (firstChar === 45) { - isNegative = true; - limit = Long$Companion$MIN_VALUE; - } - else if (firstChar === 43) { - isNegative = false; - limit = L_9223372036854775807; - } - else - return null; - } - else { - start = 0; - isNegative = false; - limit = L_9223372036854775807; - } - var limitBeforeMul = limit.div(Kotlin.Long.fromInt(radix)); - var result = L0; - tmp$ = length - 1 | 0; - for (var i = start; i <= tmp$; i++) { - var digit = digitOf($receiver.charCodeAt(i), radix); - if (digit < 0) - return null; - if (result.compareTo_11rb$(limitBeforeMul) < 0) - return null; - result = result.multiply(Kotlin.Long.fromInt(radix)); - if (result.compareTo_11rb$(limit.add(Kotlin.Long.fromInt(digit))) < 0) - return null; - result = result.subtract(Kotlin.Long.fromInt(digit)); - } - return isNegative ? result : result.unaryMinus(); - } - function numberFormatError(input) { - throw new NumberFormatException("Invalid number format: '" + input + "'"); - } - var trim = defineInlineFunction('kotlin.kotlin.text.trim_2pivbd$', wrapFunction(function () { - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var startIndex = 0; - var endIndex = $receiver.length - 1 | 0; - var startFound = false; - while (startIndex <= endIndex) { - var index = !startFound ? startIndex : endIndex; - var match = predicate(toBoxedChar($receiver.charCodeAt(index))); - if (!startFound) { - if (!match) - startFound = true; - else - startIndex = startIndex + 1 | 0; - } - else { - if (!match) - break; - else - endIndex = endIndex - 1 | 0; - } - } - return Kotlin.subSequence($receiver, startIndex, endIndex + 1 | 0); - }; - })); - var trim_0 = defineInlineFunction('kotlin.kotlin.text.trim_ouje1d$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - var $receiver_0 = Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(); - var startIndex = 0; - var endIndex = $receiver_0.length - 1 | 0; - var startFound = false; - while (startIndex <= endIndex) { - var index = !startFound ? startIndex : endIndex; - var match = predicate(toBoxedChar($receiver_0.charCodeAt(index))); - if (!startFound) { - if (!match) - startFound = true; - else - startIndex = startIndex + 1 | 0; - } - else { - if (!match) - break; - else - endIndex = endIndex - 1 | 0; - } - } - return Kotlin.subSequence($receiver_0, startIndex, endIndex + 1 | 0).toString(); - }; - })); - var trimStart = defineInlineFunction('kotlin.kotlin.text.trimStart_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) - return Kotlin.subSequence($receiver, index, $receiver.length); - return ''; - }; - })); - var trimStart_0 = defineInlineFunction('kotlin.kotlin.text.trimStart_ouje1d$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - var $receiver_0 = Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(); - var trimStart$result; - trimStart$break: do { - var tmp$_0, tmp$_1, tmp$_2, tmp$_3; - tmp$_0 = get_indices($receiver_0); - tmp$_1 = tmp$_0.first; - tmp$_2 = tmp$_0.last; - tmp$_3 = tmp$_0.step; - for (var index = tmp$_1; index <= tmp$_2; index += tmp$_3) - if (!predicate(toBoxedChar($receiver_0.charCodeAt(index)))) { - trimStart$result = Kotlin.subSequence($receiver_0, index, $receiver_0.length); - break trimStart$break; - } - trimStart$result = ''; - } - while (false); - return trimStart$result.toString(); - }; - })); - var trimEnd = defineInlineFunction('kotlin.kotlin.text.trimEnd_2pivbd$', wrapFunction(function () { - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var reversed = _.kotlin.ranges.reversed_zf1xzc$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - tmp$ = reversed(get_indices($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (!predicate(toBoxedChar($receiver.charCodeAt(index)))) - return Kotlin.subSequence($receiver, 0, index + 1 | 0); - } - return ''; - }; - })); - var trimEnd_0 = defineInlineFunction('kotlin.kotlin.text.trimEnd_ouje1d$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var get_indices = _.kotlin.text.get_indices_gw00vp$; - var reversed = _.kotlin.ranges.reversed_zf1xzc$; - var toBoxedChar = Kotlin.toBoxedChar; - return function ($receiver, predicate) { - var tmp$; - var $receiver_0 = Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(); - var trimEnd$result; - trimEnd$break: do { - var tmp$_0; - tmp$_0 = reversed(get_indices($receiver_0)).iterator(); - while (tmp$_0.hasNext()) { - var index = tmp$_0.next(); - if (!predicate(toBoxedChar($receiver_0.charCodeAt(index)))) { - trimEnd$result = Kotlin.subSequence($receiver_0, 0, index + 1 | 0); - break trimEnd$break; - } - } - trimEnd$result = ''; - } - while (false); - return trimEnd$result.toString(); - }; - })); - function trim_1($receiver, chars) { - var startIndex = 0; - var endIndex = $receiver.length - 1 | 0; - var startFound = false; - while (startIndex <= endIndex) { - var index = !startFound ? startIndex : endIndex; - var match = contains_7(chars, unboxChar(toBoxedChar($receiver.charCodeAt(index)))); - if (!startFound) { - if (!match) - startFound = true; - else - startIndex = startIndex + 1 | 0; - } - else { - if (!match) - break; - else - endIndex = endIndex - 1 | 0; - } - } - return Kotlin.subSequence($receiver, startIndex, endIndex + 1 | 0); - } - function trim_2($receiver, chars) { - var tmp$; - var $receiver_0 = Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(); - var startIndex = 0; - var endIndex = $receiver_0.length - 1 | 0; - var startFound = false; - while (startIndex <= endIndex) { - var index = !startFound ? startIndex : endIndex; - var match = contains_7(chars, unboxChar(toBoxedChar($receiver_0.charCodeAt(index)))); - if (!startFound) { - if (!match) - startFound = true; - else - startIndex = startIndex + 1 | 0; - } - else { - if (!match) - break; - else - endIndex = endIndex - 1 | 0; - } - } - return Kotlin.subSequence($receiver_0, startIndex, endIndex + 1 | 0).toString(); - } - function trimStart_1($receiver, chars) { - var trimStart$result; - trimStart$break: do { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices_9($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { - if (!contains_7(chars, unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { - trimStart$result = Kotlin.subSequence($receiver, index, $receiver.length); - break trimStart$break; - } - } - trimStart$result = ''; - } - while (false); - return trimStart$result; - } - function trimStart_2($receiver, chars) { - var tmp$; - var $receiver_0 = Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(); - var trimStart$result; - trimStart$break: do { - var tmp$_0, tmp$_1, tmp$_2, tmp$_3; - tmp$_0 = get_indices_9($receiver_0); - tmp$_1 = tmp$_0.first; - tmp$_2 = tmp$_0.last; - tmp$_3 = tmp$_0.step; - for (var index = tmp$_1; index <= tmp$_2; index += tmp$_3) { - if (!contains_7(chars, unboxChar(toBoxedChar($receiver_0.charCodeAt(index))))) { - trimStart$result = Kotlin.subSequence($receiver_0, index, $receiver_0.length); - break trimStart$break; - } - } - trimStart$result = ''; - } - while (false); - return trimStart$result.toString(); - } - function trimEnd_1($receiver, chars) { - var trimEnd$result; - trimEnd$break: do { - var tmp$; - tmp$ = reversed_9(get_indices_9($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (!contains_7(chars, unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { - trimEnd$result = Kotlin.subSequence($receiver, 0, index + 1 | 0); - break trimEnd$break; - } - } - trimEnd$result = ''; - } - while (false); - return trimEnd$result; - } - function trimEnd_2($receiver, chars) { - var tmp$; - var $receiver_0 = Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(); - var trimEnd$result; - trimEnd$break: do { - var tmp$_0; - tmp$_0 = reversed_9(get_indices_9($receiver_0)).iterator(); - while (tmp$_0.hasNext()) { - var index = tmp$_0.next(); - if (!contains_7(chars, unboxChar(toBoxedChar($receiver_0.charCodeAt(index))))) { - trimEnd$result = Kotlin.subSequence($receiver_0, 0, index + 1 | 0); - break trimEnd$break; - } - } - trimEnd$result = ''; - } - while (false); - return trimEnd$result.toString(); - } - function trim_3($receiver) { - var startIndex = 0; - var endIndex = $receiver.length - 1 | 0; - var startFound = false; - while (startIndex <= endIndex) { - var index = !startFound ? startIndex : endIndex; - var match = isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index)))); - if (!startFound) { - if (!match) - startFound = true; - else - startIndex = startIndex + 1 | 0; - } - else { - if (!match) - break; - else - endIndex = endIndex - 1 | 0; - } - } - return Kotlin.subSequence($receiver, startIndex, endIndex + 1 | 0); - } - var trim_4 = defineInlineFunction('kotlin.kotlin.text.trim_pdl1vz$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var trim = _.kotlin.text.trim_gw00vp$; - return function ($receiver) { - var tmp$; - return trim(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE()).toString(); - }; - })); - function trimStart_3($receiver) { - var trimStart$result; - trimStart$break: do { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - tmp$ = get_indices_9($receiver); - tmp$_0 = tmp$.first; - tmp$_1 = tmp$.last; - tmp$_2 = tmp$.step; - for (var index = tmp$_0; index <= tmp$_1; index += tmp$_2) { - if (!isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { - trimStart$result = Kotlin.subSequence($receiver, index, $receiver.length); - break trimStart$break; - } - } - trimStart$result = ''; - } - while (false); - return trimStart$result; - } - var trimStart_4 = defineInlineFunction('kotlin.kotlin.text.trimStart_pdl1vz$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var trimStart = _.kotlin.text.trimStart_gw00vp$; - return function ($receiver) { - var tmp$; - return trimStart(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE()).toString(); - }; - })); - function trimEnd_3($receiver) { - var trimEnd$result; - trimEnd$break: do { - var tmp$; - tmp$ = reversed_9(get_indices_9($receiver)).iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (!isWhitespace(unboxChar(toBoxedChar($receiver.charCodeAt(index))))) { - trimEnd$result = Kotlin.subSequence($receiver, 0, index + 1 | 0); - break trimEnd$break; - } - } - trimEnd$result = ''; - } - while (false); - return trimEnd$result; - } - var trimEnd_4 = defineInlineFunction('kotlin.kotlin.text.trimEnd_pdl1vz$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var trimEnd = _.kotlin.text.trimEnd_gw00vp$; - return function ($receiver) { - var tmp$; - return trimEnd(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE()).toString(); - }; - })); - function padStart($receiver, length, padChar) { - if (padChar === void 0) - padChar = 32; - var tmp$; - if (length < 0) - throw IllegalArgumentException_init_0('Desired length ' + length + ' is less than zero.'); - if (length <= $receiver.length) - return Kotlin.subSequence($receiver, 0, $receiver.length); - var sb = StringBuilder_init(length); - tmp$ = length - $receiver.length | 0; - for (var i = 1; i <= tmp$; i++) - sb.append_s8itvh$(padChar); - sb.append_gw00v9$($receiver); - return sb; - } - function padStart_0($receiver, length, padChar) { - if (padChar === void 0) - padChar = 32; - var tmp$; - return padStart(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE_0(), length, padChar).toString(); - } - function padEnd($receiver, length, padChar) { - if (padChar === void 0) - padChar = 32; - var tmp$; - if (length < 0) - throw IllegalArgumentException_init_0('Desired length ' + length + ' is less than zero.'); - if (length <= $receiver.length) - return Kotlin.subSequence($receiver, 0, $receiver.length); - var sb = StringBuilder_init(length); - sb.append_gw00v9$($receiver); - tmp$ = length - $receiver.length | 0; - for (var i = 1; i <= tmp$; i++) - sb.append_s8itvh$(padChar); - return sb; - } - function padEnd_0($receiver, length, padChar) { - if (padChar === void 0) - padChar = 32; - var tmp$; - return padEnd(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE_0(), length, padChar).toString(); - } - var isNullOrEmpty_2 = defineInlineFunction('kotlin.kotlin.text.isNullOrEmpty_qc8d1o$', wrapFunction(function () { - return function ($receiver) { - return $receiver == null || $receiver.length === 0; - }; - })); - var isEmpty_8 = defineInlineFunction('kotlin.kotlin.text.isEmpty_gw00vp$', function ($receiver) { - return $receiver.length === 0; - }); - var isNotEmpty_10 = defineInlineFunction('kotlin.kotlin.text.isNotEmpty_gw00vp$', function ($receiver) { - return $receiver.length > 0; - }); - var isNotBlank = defineInlineFunction('kotlin.kotlin.text.isNotBlank_gw00vp$', wrapFunction(function () { - var isBlank = _.kotlin.text.isBlank_gw00vp$; - return function ($receiver) { - return !isBlank($receiver); - }; - })); - var isNullOrBlank = defineInlineFunction('kotlin.kotlin.text.isNullOrBlank_qc8d1o$', wrapFunction(function () { - var isBlank = _.kotlin.text.isBlank_gw00vp$; - return function ($receiver) { - return $receiver == null || isBlank($receiver); - }; - })); - function iterator$ObjectLiteral(this$iterator) { - this.this$iterator = this$iterator; - CharIterator.call(this); - this.index_0 = 0; - } - iterator$ObjectLiteral.prototype.nextChar = function () { - var tmp$, tmp$_0; - tmp$_0 = (tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$); - return this.this$iterator.charCodeAt(tmp$_0); - }; - iterator$ObjectLiteral.prototype.hasNext = function () { - return this.index_0 < this.this$iterator.length; - }; - iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [CharIterator]}; - function iterator_4($receiver) { - return new iterator$ObjectLiteral($receiver); - } - var orEmpty_5 = defineInlineFunction('kotlin.kotlin.text.orEmpty_5cw0du$', function ($receiver) { - return $receiver != null ? $receiver : ''; - }); - var ifEmpty_3 = defineInlineFunction('kotlin.kotlin.text.ifEmpty_pevw8y$', function ($receiver, defaultValue) { - return $receiver.length === 0 ? defaultValue() : $receiver; - }); - var ifBlank = defineInlineFunction('kotlin.kotlin.text.ifBlank_pevw8y$', wrapFunction(function () { - var isBlank = _.kotlin.text.isBlank_gw00vp$; - return function ($receiver, defaultValue) { - return isBlank($receiver) ? defaultValue() : $receiver; - }; - })); - function get_indices_9($receiver) { - return new IntRange(0, $receiver.length - 1 | 0); - } - function get_lastIndex_9($receiver) { - return $receiver.length - 1 | 0; - } - function hasSurrogatePairAt($receiver, index) { - var tmp$; - tmp$ = $receiver.length - 2 | 0; - return 0 <= index && index <= tmp$ && isHighSurrogate($receiver.charCodeAt(index)) && isLowSurrogate($receiver.charCodeAt(index + 1 | 0)); - } - function substring_1($receiver, range) { - return $receiver.substring(range.start, range.endInclusive + 1 | 0); - } - function subSequence_0($receiver, range) { - return Kotlin.subSequence($receiver, range.start, range.endInclusive + 1 | 0); - } - var subSequence_1 = defineInlineFunction('kotlin.kotlin.text.subSequence_qgyqat$', function ($receiver, start, end) { - return $receiver.substring(start, end); - }); - var substring_2 = defineInlineFunction('kotlin.kotlin.text.substring_qdpigv$', function ($receiver, startIndex, endIndex) { - if (endIndex === void 0) - endIndex = $receiver.length; - return Kotlin.subSequence($receiver, startIndex, endIndex).toString(); - }); - function substring_3($receiver, range) { - return Kotlin.subSequence($receiver, range.start, range.endInclusive + 1 | 0).toString(); - } - function substringBefore($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_12($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(0, index); - } - function substringBefore_0($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_13($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(0, index); - } - function substringAfter($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_12($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(index + 1 | 0, $receiver.length); - } - function substringAfter_0($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_13($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(index + delimiter.length | 0, $receiver.length); - } - function substringBeforeLast($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_11($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(0, index); - } - function substringBeforeLast_0($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_12($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(0, index); - } - function substringAfterLast($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_11($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(index + 1 | 0, $receiver.length); - } - function substringAfterLast_0($receiver, delimiter, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_12($receiver, delimiter); - return index === -1 ? missingDelimiterValue : $receiver.substring(index + delimiter.length | 0, $receiver.length); - } - function replaceRange($receiver, startIndex, endIndex, replacement) { - if (endIndex < startIndex) - throw new IndexOutOfBoundsException('End index (' + endIndex + ') is less than start index (' + startIndex + ').'); - var sb = StringBuilder_init_1(); - sb.append_ezbsdh$($receiver, 0, startIndex); - sb.append_gw00v9$(replacement); - sb.append_ezbsdh$($receiver, endIndex, $receiver.length); - return sb; - } - var replaceRange_0 = defineInlineFunction('kotlin.kotlin.text.replaceRange_r96sod$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var replaceRange = _.kotlin.text.replaceRange_p5j4qv$; - return function ($receiver, startIndex, endIndex, replacement) { - var tmp$; - return replaceRange(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(), startIndex, endIndex, replacement).toString(); - }; - })); - function replaceRange_1($receiver, range, replacement) { - return replaceRange($receiver, range.start, range.endInclusive + 1 | 0, replacement); - } - var replaceRange_2 = defineInlineFunction('kotlin.kotlin.text.replaceRange_laqjpa$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var replaceRange = _.kotlin.text.replaceRange_r6gztw$; - return function ($receiver, range, replacement) { - var tmp$; - return replaceRange(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(), range, replacement).toString(); - }; - })); - function removeRange($receiver, startIndex, endIndex) { - if (endIndex < startIndex) - throw new IndexOutOfBoundsException('End index (' + endIndex + ') is less than start index (' + startIndex + ').'); - if (endIndex === startIndex) - return Kotlin.subSequence($receiver, 0, $receiver.length); - var sb = StringBuilder_init($receiver.length - (endIndex - startIndex) | 0); - sb.append_ezbsdh$($receiver, 0, startIndex); - sb.append_ezbsdh$($receiver, endIndex, $receiver.length); - return sb; - } - var removeRange_0 = defineInlineFunction('kotlin.kotlin.text.removeRange_qgyqat$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var removeRange = _.kotlin.text.removeRange_qdpigv$; - return function ($receiver, startIndex, endIndex) { - var tmp$; - return removeRange(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(), startIndex, endIndex).toString(); - }; - })); - function removeRange_1($receiver, range) { - return removeRange($receiver, range.start, range.endInclusive + 1 | 0); - } - var removeRange_2 = defineInlineFunction('kotlin.kotlin.text.removeRange_fc3b62$', wrapFunction(function () { - var throwCCE = Kotlin.throwCCE; - var removeRange = _.kotlin.text.removeRange_i511yc$; - return function ($receiver, range) { - var tmp$; - return removeRange(Kotlin.isCharSequence(tmp$ = $receiver) ? tmp$ : throwCCE(), range).toString(); - }; - })); - function removePrefix($receiver, prefix) { - if (startsWith_2($receiver, prefix)) { - return Kotlin.subSequence($receiver, prefix.length, $receiver.length); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); - } - function removePrefix_0($receiver, prefix) { - if (startsWith_2($receiver, prefix)) { - return $receiver.substring(prefix.length); - } - return $receiver; - } - function removeSuffix($receiver, suffix) { - if (endsWith_1($receiver, suffix)) { - return Kotlin.subSequence($receiver, 0, $receiver.length - suffix.length | 0); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); - } - function removeSuffix_0($receiver, suffix) { - if (endsWith_1($receiver, suffix)) { - return $receiver.substring(0, $receiver.length - suffix.length | 0); - } - return $receiver; - } - function removeSurrounding($receiver, prefix, suffix) { - if ($receiver.length >= (prefix.length + suffix.length | 0) && startsWith_2($receiver, prefix) && endsWith_1($receiver, suffix)) { - return Kotlin.subSequence($receiver, prefix.length, $receiver.length - suffix.length | 0); - } - return Kotlin.subSequence($receiver, 0, $receiver.length); - } - function removeSurrounding_0($receiver, prefix, suffix) { - if ($receiver.length >= (prefix.length + suffix.length | 0) && startsWith_2($receiver, prefix) && endsWith_1($receiver, suffix)) { - return $receiver.substring(prefix.length, $receiver.length - suffix.length | 0); - } - return $receiver; - } - function removeSurrounding_1($receiver, delimiter) { - return removeSurrounding($receiver, delimiter, delimiter); - } - function removeSurrounding_2($receiver, delimiter) { - return removeSurrounding_0($receiver, delimiter, delimiter); - } - function replaceBefore($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_12($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), 0, index, replacement).toString(); - } - return tmp$; - } - function replaceBefore_0($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_13($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), 0, index, replacement).toString(); - } - return tmp$; - } - function replaceAfter($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_12($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var startIndex = index + 1 | 0; - var endIndex = $receiver.length; - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), startIndex, endIndex, replacement).toString(); - } - return tmp$; - } - function replaceAfter_0($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = indexOf_13($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var startIndex = index + delimiter.length | 0; - var endIndex = $receiver.length; - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), startIndex, endIndex, replacement).toString(); - } - return tmp$; - } - function replaceAfterLast($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_12($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var startIndex = index + delimiter.length | 0; - var endIndex = $receiver.length; - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), startIndex, endIndex, replacement).toString(); - } - return tmp$; - } - function replaceAfterLast_0($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_11($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var startIndex = index + 1 | 0; - var endIndex = $receiver.length; - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), startIndex, endIndex, replacement).toString(); - } - return tmp$; - } - function replaceBeforeLast($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_11($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), 0, index, replacement).toString(); - } - return tmp$; - } - function replaceBeforeLast_0($receiver, delimiter, replacement, missingDelimiterValue) { - if (missingDelimiterValue === void 0) - missingDelimiterValue = $receiver; - var index = lastIndexOf_12($receiver, delimiter); - var tmp$; - if (index === -1) - tmp$ = missingDelimiterValue; - else { - var tmp$_0; - tmp$ = replaceRange(Kotlin.isCharSequence(tmp$_0 = $receiver) ? tmp$_0 : throwCCE(), 0, index, replacement).toString(); - } - return tmp$; - } - var replace_1 = defineInlineFunction('kotlin.kotlin.text.replace_tb98gq$', function ($receiver, regex, replacement) { - return regex.replace_x2uqeu$($receiver, replacement); - }); - var replace_2 = defineInlineFunction('kotlin.kotlin.text.replace_3avfay$', wrapFunction(function () { - var StringBuilder_init = _.kotlin.text.StringBuilder_init_za3lpa$; - var ensureNotNull = Kotlin.ensureNotNull; - return function ($receiver, regex, transform) { - var replace_20wsma$result; - replace_20wsma$break: do { - var match = regex.find_905azu$($receiver); - if (match == null) { - replace_20wsma$result = $receiver.toString(); - break replace_20wsma$break; - } - var lastStart = 0; - var length = $receiver.length; - var sb = StringBuilder_init(length); - do { - var foundMatch = ensureNotNull(match); - sb.append_ezbsdh$($receiver, lastStart, foundMatch.range.start); - sb.append_gw00v9$(transform(foundMatch)); - lastStart = foundMatch.range.endInclusive + 1 | 0; - match = foundMatch.next(); - } - while (lastStart < length && match != null); - if (lastStart < length) { - sb.append_ezbsdh$($receiver, lastStart, length); - } - replace_20wsma$result = sb.toString(); - } - while (false); - return replace_20wsma$result; - }; - })); - var replaceFirst_1 = defineInlineFunction('kotlin.kotlin.text.replaceFirst_tb98gq$', function ($receiver, regex, replacement) { - return regex.replaceFirst_x2uqeu$($receiver, replacement); - }); - var matches_0 = defineInlineFunction('kotlin.kotlin.text.matches_t3gu14$', function ($receiver, regex) { - return regex.matches_6bul2c$($receiver); - }); - function regionMatchesImpl($receiver, thisOffset, other, otherOffset, length, ignoreCase) { - if (otherOffset < 0 || thisOffset < 0 || thisOffset > ($receiver.length - length | 0) || otherOffset > (other.length - length | 0)) { - return false; - } - for (var index = 0; index < length; index++) { - if (!equals_1($receiver.charCodeAt(thisOffset + index | 0), other.charCodeAt(otherOffset + index | 0), ignoreCase)) - return false; - } - return true; - } - function startsWith_1($receiver, char, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return $receiver.length > 0 && equals_1($receiver.charCodeAt(0), char, ignoreCase); - } - function endsWith_0($receiver, char, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return $receiver.length > 0 && equals_1($receiver.charCodeAt(get_lastIndex_9($receiver)), char, ignoreCase); - } - function startsWith_2($receiver, prefix, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase && typeof $receiver === 'string' && typeof prefix === 'string') - return startsWith($receiver, prefix); - else - return regionMatchesImpl($receiver, 0, prefix, 0, prefix.length, ignoreCase); - } - function startsWith_3($receiver, prefix, startIndex, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase && typeof $receiver === 'string' && typeof prefix === 'string') - return startsWith_0($receiver, prefix, startIndex); - else - return regionMatchesImpl($receiver, startIndex, prefix, 0, prefix.length, ignoreCase); - } - function endsWith_1($receiver, suffix, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase && typeof $receiver === 'string' && typeof suffix === 'string') - return endsWith($receiver, suffix); - else - return regionMatchesImpl($receiver, $receiver.length - suffix.length | 0, suffix, 0, suffix.length, ignoreCase); - } - function commonPrefixWith($receiver, other, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - var shortestLength = Math_0.min($receiver.length, other.length); - var i = 0; - while (i < shortestLength && equals_1($receiver.charCodeAt(i), other.charCodeAt(i), ignoreCase)) { - i = i + 1 | 0; - } - if (hasSurrogatePairAt($receiver, i - 1 | 0) || hasSurrogatePairAt(other, i - 1 | 0)) { - i = i - 1 | 0; - } - return Kotlin.subSequence($receiver, 0, i).toString(); - } - function commonSuffixWith($receiver, other, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - var thisLength = $receiver.length; - var otherLength = other.length; - var shortestLength = Math_0.min(thisLength, otherLength); - var i = 0; - while (i < shortestLength && equals_1($receiver.charCodeAt(thisLength - i - 1 | 0), other.charCodeAt(otherLength - i - 1 | 0), ignoreCase)) { - i = i + 1 | 0; - } - if (hasSurrogatePairAt($receiver, thisLength - i - 1 | 0) || hasSurrogatePairAt(other, otherLength - i - 1 | 0)) { - i = i - 1 | 0; - } - return Kotlin.subSequence($receiver, thisLength - i | 0, thisLength).toString(); - } - function indexOfAny($receiver, chars, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - var tmp$, tmp$_0; - if (!ignoreCase && chars.length === 1 && typeof $receiver === 'string') { - var char = single_7(chars); - return $receiver.indexOf(String.fromCharCode(char), startIndex); - } - tmp$ = coerceAtLeast_2(startIndex, 0); - tmp$_0 = get_lastIndex_9($receiver); - loop_label: for (var index = tmp$; index <= tmp$_0; index++) { - var charAtIndex = $receiver.charCodeAt(index); - var any$result; - any$break: do { - var tmp$_1; - for (tmp$_1 = 0; tmp$_1 !== chars.length; ++tmp$_1) { - var element = unboxChar(chars[tmp$_1]); - if (equals_1(unboxChar(toBoxedChar(element)), charAtIndex, ignoreCase)) { - any$result = true; - break any$break; - } - } - any$result = false; - } - while (false); - if (any$result) - return index; - } - return -1; - } - function lastIndexOfAny($receiver, chars, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = get_lastIndex_9($receiver); - if (ignoreCase === void 0) - ignoreCase = false; - if (!ignoreCase && chars.length === 1 && typeof $receiver === 'string') { - var char = single_7(chars); - return $receiver.lastIndexOf(String.fromCharCode(char), startIndex); - } - loop_label: for (var index = coerceAtMost_2(startIndex, get_lastIndex_9($receiver)); index >= 0; index--) { - var charAtIndex = $receiver.charCodeAt(index); - var any$result; - any$break: do { - var tmp$; - for (tmp$ = 0; tmp$ !== chars.length; ++tmp$) { - var element = unboxChar(chars[tmp$]); - if (equals_1(unboxChar(toBoxedChar(element)), charAtIndex, ignoreCase)) { - any$result = true; - break any$break; - } - } - any$result = false; - } - while (false); - if (any$result) - return index; - } - return -1; - } - function indexOf_11($receiver, other, startIndex, endIndex, ignoreCase, last) { - if (last === void 0) - last = false; - var tmp$, tmp$_0; - var indices = !last ? new IntRange(coerceAtLeast_2(startIndex, 0), coerceAtMost_2(endIndex, $receiver.length)) : downTo_4(coerceAtMost_2(startIndex, get_lastIndex_9($receiver)), coerceAtLeast_2(endIndex, 0)); - if (typeof $receiver === 'string' && typeof other === 'string') { - tmp$ = indices.iterator(); - while (tmp$.hasNext()) { - var index = tmp$.next(); - if (regionMatches(other, 0, $receiver, index, other.length, ignoreCase)) - return index; - } - } - else { - tmp$_0 = indices.iterator(); - while (tmp$_0.hasNext()) { - var index_0 = tmp$_0.next(); - if (regionMatchesImpl(other, 0, $receiver, index_0, other.length, ignoreCase)) - return index_0; - } - } - return -1; - } - function findAnyOf($receiver, strings, startIndex, ignoreCase, last) { - var tmp$, tmp$_0; - if (!ignoreCase && strings.size === 1) { - var string = single_17(strings); - var index = !last ? indexOf_13($receiver, string, startIndex) : lastIndexOf_12($receiver, string, startIndex); - return index < 0 ? null : to(index, string); - } - var indices = !last ? new IntRange(coerceAtLeast_2(startIndex, 0), $receiver.length) : downTo_4(coerceAtMost_2(startIndex, get_lastIndex_9($receiver)), 0); - if (typeof $receiver === 'string') { - tmp$ = indices.iterator(); - loop_label: while (tmp$.hasNext()) { - var index_0 = tmp$.next(); - var firstOrNull$result; - firstOrNull$break: do { - var tmp$_1; - tmp$_1 = strings.iterator(); - while (tmp$_1.hasNext()) { - var element = tmp$_1.next(); - if (regionMatches(element, 0, $receiver, index_0, element.length, ignoreCase)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } - while (false); - var matchingString = firstOrNull$result; - if (matchingString != null) - return to(index_0, matchingString); - } - } - else { - tmp$_0 = indices.iterator(); - loop_label: while (tmp$_0.hasNext()) { - var index_1 = tmp$_0.next(); - var firstOrNull$result_0; - firstOrNull$break: do { - var tmp$_2; - tmp$_2 = strings.iterator(); - while (tmp$_2.hasNext()) { - var element_0 = tmp$_2.next(); - if (regionMatchesImpl(element_0, 0, $receiver, index_1, element_0.length, ignoreCase)) { - firstOrNull$result_0 = element_0; - break firstOrNull$break; - } - } - firstOrNull$result_0 = null; - } - while (false); - var matchingString_0 = firstOrNull$result_0; - if (matchingString_0 != null) - return to(index_1, matchingString_0); - } - } - return null; - } - function findAnyOf_0($receiver, strings, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - return findAnyOf($receiver, strings, startIndex, ignoreCase, false); - } - function findLastAnyOf($receiver, strings, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = get_lastIndex_9($receiver); - if (ignoreCase === void 0) - ignoreCase = false; - return findAnyOf($receiver, strings, startIndex, ignoreCase, true); - } - function indexOfAny_0($receiver, strings, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - var tmp$, tmp$_0; - return (tmp$_0 = (tmp$ = findAnyOf($receiver, strings, startIndex, ignoreCase, false)) != null ? tmp$.first : null) != null ? tmp$_0 : -1; - } - function lastIndexOfAny_0($receiver, strings, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = get_lastIndex_9($receiver); - if (ignoreCase === void 0) - ignoreCase = false; - var tmp$, tmp$_0; - return (tmp$_0 = (tmp$ = findAnyOf($receiver, strings, startIndex, ignoreCase, true)) != null ? tmp$.first : null) != null ? tmp$_0 : -1; - } - function indexOf_12($receiver, char, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - return ignoreCase || !(typeof $receiver === 'string') ? indexOfAny($receiver, Kotlin.charArrayOf(char), startIndex, ignoreCase) : $receiver.indexOf(String.fromCharCode(char), startIndex); - } - function indexOf_13($receiver, string, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - return ignoreCase || !(typeof $receiver === 'string') ? indexOf_11($receiver, string, startIndex, $receiver.length, ignoreCase) : $receiver.indexOf(string, startIndex); - } - function lastIndexOf_11($receiver, char, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = get_lastIndex_9($receiver); - if (ignoreCase === void 0) - ignoreCase = false; - return ignoreCase || !(typeof $receiver === 'string') ? lastIndexOfAny($receiver, Kotlin.charArrayOf(char), startIndex, ignoreCase) : $receiver.lastIndexOf(String.fromCharCode(char), startIndex); - } - function lastIndexOf_12($receiver, string, startIndex, ignoreCase) { - if (startIndex === void 0) - startIndex = get_lastIndex_9($receiver); - if (ignoreCase === void 0) - ignoreCase = false; - return ignoreCase || !(typeof $receiver === 'string') ? indexOf_11($receiver, string, startIndex, 0, ignoreCase, true) : $receiver.lastIndexOf(string, startIndex); - } - function contains_47($receiver, other, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return typeof other === 'string' ? indexOf_13($receiver, other, void 0, ignoreCase) >= 0 : indexOf_11($receiver, other, 0, $receiver.length, ignoreCase) >= 0; - } - function contains_48($receiver, char, ignoreCase) { - if (ignoreCase === void 0) - ignoreCase = false; - return indexOf_12($receiver, char, void 0, ignoreCase) >= 0; - } - var contains_49 = defineInlineFunction('kotlin.kotlin.text.contains_t3gu14$', function ($receiver, regex) { - return regex.containsMatchIn_6bul2c$($receiver); - }); - function DelimitedRangesSequence(input, startIndex, limit, getNextMatch) { - this.input_0 = input; - this.startIndex_0 = startIndex; - this.limit_0 = limit; - this.getNextMatch_0 = getNextMatch; - } - function DelimitedRangesSequence$iterator$ObjectLiteral(this$DelimitedRangesSequence) { - this.this$DelimitedRangesSequence = this$DelimitedRangesSequence; - this.nextState = -1; - this.currentStartIndex = coerceIn_2(this$DelimitedRangesSequence.startIndex_0, 0, this$DelimitedRangesSequence.input_0.length); - this.nextSearchIndex = this.currentStartIndex; - this.nextItem = null; - this.counter = 0; - } - DelimitedRangesSequence$iterator$ObjectLiteral.prototype.calcNext_0 = function () { - if (this.nextSearchIndex < 0) { - this.nextState = 0; - this.nextItem = null; - } - else { - if (this.this$DelimitedRangesSequence.limit_0 > 0 && (this.counter = this.counter + 1 | 0, this.counter) >= this.this$DelimitedRangesSequence.limit_0 || this.nextSearchIndex > this.this$DelimitedRangesSequence.input_0.length) { - this.nextItem = new IntRange(this.currentStartIndex, get_lastIndex_9(this.this$DelimitedRangesSequence.input_0)); - this.nextSearchIndex = -1; - } - else { - var match = this.this$DelimitedRangesSequence.getNextMatch_0(this.this$DelimitedRangesSequence.input_0, this.nextSearchIndex); - if (match == null) { - this.nextItem = new IntRange(this.currentStartIndex, get_lastIndex_9(this.this$DelimitedRangesSequence.input_0)); - this.nextSearchIndex = -1; - } - else { - var index = match.component1(), length = match.component2(); - this.nextItem = until_4(this.currentStartIndex, index); - this.currentStartIndex = index + length | 0; - this.nextSearchIndex = this.currentStartIndex + (length === 0 ? 1 : 0) | 0; - } - } - this.nextState = 1; - } - }; - DelimitedRangesSequence$iterator$ObjectLiteral.prototype.next = function () { - var tmp$; - if (this.nextState === -1) - this.calcNext_0(); - if (this.nextState === 0) - throw NoSuchElementException_init(); - var result = Kotlin.isType(tmp$ = this.nextItem, IntRange) ? tmp$ : throwCCE_0(); - this.nextItem = null; - this.nextState = -1; - return result; - }; - DelimitedRangesSequence$iterator$ObjectLiteral.prototype.hasNext = function () { - if (this.nextState === -1) - this.calcNext_0(); - return this.nextState === 1; - }; - DelimitedRangesSequence$iterator$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Iterator]}; - DelimitedRangesSequence.prototype.iterator = function () { - return new DelimitedRangesSequence$iterator$ObjectLiteral(this); - }; - DelimitedRangesSequence.$metadata$ = {kind: Kind_CLASS, simpleName: 'DelimitedRangesSequence', interfaces: [Sequence]}; - function rangesDelimitedBy$lambda(closure$delimiters, closure$ignoreCase) { - return function ($receiver, currentIndex) { - var it = indexOfAny($receiver, closure$delimiters, currentIndex, closure$ignoreCase); - return it < 0 ? null : to(it, 1); - }; - } - function rangesDelimitedBy($receiver, delimiters, startIndex, ignoreCase, limit) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - if (limit === void 0) - limit = 0; - if (!(limit >= 0)) { - var message = 'Limit must be non-negative, but was ' + limit + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - return new DelimitedRangesSequence($receiver, startIndex, limit, rangesDelimitedBy$lambda(delimiters, ignoreCase)); - } - function rangesDelimitedBy$lambda_0(closure$delimitersList, closure$ignoreCase) { - return function ($receiver, currentIndex) { - var tmp$; - return (tmp$ = findAnyOf($receiver, closure$delimitersList, currentIndex, closure$ignoreCase, false)) != null ? to(tmp$.first, tmp$.second.length) : null; - }; - } - function rangesDelimitedBy_0($receiver, delimiters, startIndex, ignoreCase, limit) { - if (startIndex === void 0) - startIndex = 0; - if (ignoreCase === void 0) - ignoreCase = false; - if (limit === void 0) - limit = 0; - if (!(limit >= 0)) { - var message = 'Limit must be non-negative, but was ' + limit + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var delimitersList = asList(delimiters); - return new DelimitedRangesSequence($receiver, startIndex, limit, rangesDelimitedBy$lambda_0(delimitersList, ignoreCase)); - } - function splitToSequence$lambda(this$splitToSequence) { - return function (it) { - return substring_3(this$splitToSequence, it); - }; - } - function splitToSequence($receiver, delimiters, ignoreCase, limit) { - if (ignoreCase === void 0) - ignoreCase = false; - if (limit === void 0) - limit = 0; - return map_10(rangesDelimitedBy_0($receiver, delimiters, void 0, ignoreCase, limit), splitToSequence$lambda($receiver)); - } - function split($receiver, delimiters, ignoreCase, limit) { - if (ignoreCase === void 0) - ignoreCase = false; - if (limit === void 0) - limit = 0; - if (delimiters.length === 1) { - var delimiter = delimiters[0]; - if (!(delimiter.length === 0)) { - return split_1($receiver, delimiter, ignoreCase, limit); - } - } - var $receiver_0 = asIterable_10(rangesDelimitedBy_0($receiver, delimiters, void 0, ignoreCase, limit)); - var destination = ArrayList_init_0(collectionSizeOrDefault($receiver_0, 10)); - var tmp$; - tmp$ = $receiver_0.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(substring_3($receiver, item)); - } - return destination; - } - function splitToSequence$lambda_0(this$splitToSequence) { - return function (it) { - return substring_3(this$splitToSequence, it); - }; - } - function splitToSequence_0($receiver, delimiters, ignoreCase, limit) { - if (ignoreCase === void 0) - ignoreCase = false; - if (limit === void 0) - limit = 0; - return map_10(rangesDelimitedBy($receiver, delimiters, void 0, ignoreCase, limit), splitToSequence$lambda_0($receiver)); - } - function split_0($receiver, delimiters, ignoreCase, limit) { - if (ignoreCase === void 0) - ignoreCase = false; - if (limit === void 0) - limit = 0; - if (delimiters.length === 1) { - return split_1($receiver, String.fromCharCode(delimiters[0]), ignoreCase, limit); - } - var $receiver_0 = asIterable_10(rangesDelimitedBy($receiver, delimiters, void 0, ignoreCase, limit)); - var destination = ArrayList_init_0(collectionSizeOrDefault($receiver_0, 10)); - var tmp$; - tmp$ = $receiver_0.iterator(); - while (tmp$.hasNext()) { - var item = tmp$.next(); - destination.add_11rb$(substring_3($receiver, item)); - } - return destination; - } - function split_1($receiver, delimiter, ignoreCase, limit) { - if (!(limit >= 0)) { - var message = 'Limit must be non-negative, but was ' + limit + '.'; - throw IllegalArgumentException_init_0(message.toString()); - } - var currentOffset = 0; - var nextIndex = indexOf_13($receiver, delimiter, currentOffset, ignoreCase); - if (nextIndex === -1 || limit === 1) { - return listOf($receiver.toString()); - } - var isLimited = limit > 0; - var result = ArrayList_init_0(isLimited ? coerceAtMost_2(limit, 10) : 10); - do { - result.add_11rb$(Kotlin.subSequence($receiver, currentOffset, nextIndex).toString()); - currentOffset = nextIndex + delimiter.length | 0; - if (isLimited && result.size === (limit - 1 | 0)) - break; - nextIndex = indexOf_13($receiver, delimiter, currentOffset, ignoreCase); - } - while (nextIndex !== -1); - result.add_11rb$(Kotlin.subSequence($receiver, currentOffset, $receiver.length).toString()); - return result; - } - var split_2 = defineInlineFunction('kotlin.kotlin.text.split_yymnie$', function ($receiver, regex, limit) { - if (limit === void 0) - limit = 0; - return regex.split_905azu$($receiver, limit); - }); - function lineSequence($receiver) { - return splitToSequence($receiver, ['\r\n', '\n', '\r']); - } - function lines($receiver) { - return toList_10(lineSequence($receiver)); - } - function Typography() { - Typography_instance = this; - this.quote = toBoxedChar(34); - this.dollar = toBoxedChar(36); - this.amp = toBoxedChar(38); - this.less = toBoxedChar(60); - this.greater = toBoxedChar(62); - this.nbsp = toBoxedChar(160); - this.times = toBoxedChar(215); - this.cent = toBoxedChar(162); - this.pound = toBoxedChar(163); - this.section = toBoxedChar(167); - this.copyright = toBoxedChar(169); - this.leftGuillemete = toBoxedChar(171); - this.rightGuillemete = toBoxedChar(187); - this.registered = toBoxedChar(174); - this.degree = toBoxedChar(176); - this.plusMinus = toBoxedChar(177); - this.paragraph = toBoxedChar(182); - this.middleDot = toBoxedChar(183); - this.half = toBoxedChar(189); - this.ndash = toBoxedChar(8211); - this.mdash = toBoxedChar(8212); - this.leftSingleQuote = toBoxedChar(8216); - this.rightSingleQuote = toBoxedChar(8217); - this.lowSingleQuote = toBoxedChar(8218); - this.leftDoubleQuote = toBoxedChar(8220); - this.rightDoubleQuote = toBoxedChar(8221); - this.lowDoubleQuote = toBoxedChar(8222); - this.dagger = toBoxedChar(8224); - this.doubleDagger = toBoxedChar(8225); - this.bullet = toBoxedChar(8226); - this.ellipsis = toBoxedChar(8230); - this.prime = toBoxedChar(8242); - this.doublePrime = toBoxedChar(8243); - this.euro = toBoxedChar(8364); - this.tm = toBoxedChar(8482); - this.almostEqual = toBoxedChar(8776); - this.notEqual = toBoxedChar(8800); - this.lessOrEqual = toBoxedChar(8804); - this.greaterOrEqual = toBoxedChar(8805); - } - Typography.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Typography', interfaces: []}; - var Typography_instance = null; - function Typography_getInstance() { - if (Typography_instance === null) { - new Typography(); - } - return Typography_instance; - } - function MatchGroupCollection() { - } - MatchGroupCollection.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MatchGroupCollection', interfaces: [Collection]}; - function MatchNamedGroupCollection() { - } - MatchNamedGroupCollection.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MatchNamedGroupCollection', interfaces: [MatchGroupCollection]}; - function MatchResult() { - } - Object.defineProperty(MatchResult.prototype, 'destructured', {get: function () { - return new MatchResult$Destructured(this); - }}); - function MatchResult$Destructured(match) { - this.match = match; - } - MatchResult$Destructured.prototype.component1 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component1', function () { - return this.match.groupValues.get_za3lpa$(1); - }); - MatchResult$Destructured.prototype.component2 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component2', function () { - return this.match.groupValues.get_za3lpa$(2); - }); - MatchResult$Destructured.prototype.component3 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component3', function () { - return this.match.groupValues.get_za3lpa$(3); - }); - MatchResult$Destructured.prototype.component4 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component4', function () { - return this.match.groupValues.get_za3lpa$(4); - }); - MatchResult$Destructured.prototype.component5 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component5', function () { - return this.match.groupValues.get_za3lpa$(5); - }); - MatchResult$Destructured.prototype.component6 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component6', function () { - return this.match.groupValues.get_za3lpa$(6); - }); - MatchResult$Destructured.prototype.component7 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component7', function () { - return this.match.groupValues.get_za3lpa$(7); - }); - MatchResult$Destructured.prototype.component8 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component8', function () { - return this.match.groupValues.get_za3lpa$(8); - }); - MatchResult$Destructured.prototype.component9 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component9', function () { - return this.match.groupValues.get_za3lpa$(9); - }); - MatchResult$Destructured.prototype.component10 = defineInlineFunction('kotlin.kotlin.text.MatchResult.Destructured.component10', function () { - return this.match.groupValues.get_za3lpa$(10); - }); - MatchResult$Destructured.prototype.toList = function () { - return this.match.groupValues.subList_vux9f0$(1, this.match.groupValues.size); - }; - MatchResult$Destructured.$metadata$ = {kind: Kind_CLASS, simpleName: 'Destructured', interfaces: []}; - MatchResult.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'MatchResult', interfaces: []}; - var toRegex = defineInlineFunction('kotlin.kotlin.text.toRegex_pdl1vz$', wrapFunction(function () { - var Regex_init = _.kotlin.text.Regex_init_61zpoe$; - return function ($receiver) { - return Regex_init($receiver); - }; - })); - var toRegex_0 = defineInlineFunction('kotlin.kotlin.text.toRegex_2jdgi1$', wrapFunction(function () { - var Regex_init = _.kotlin.text.Regex_init_sb3q2$; - return function ($receiver, option) { - return Regex_init($receiver, option); - }; - })); - var toRegex_1 = defineInlineFunction('kotlin.kotlin.text.toRegex_8ioxci$', wrapFunction(function () { - var Regex_init = _.kotlin.text.Regex; - return function ($receiver, options) { - return new Regex_init($receiver, options); - }; - })); - var hashCode_0 = defineInlineFunction('kotlin.kotlin.hashCode_mzud1t$', wrapFunction(function () { - var hashCode = Kotlin.hashCode; - return function ($receiver) { - var tmp$; - return (tmp$ = $receiver != null ? hashCode($receiver) : null) != null ? tmp$ : 0; - }; - })); - function KotlinVersion(major, minor, patch) { - KotlinVersion$Companion_getInstance(); - this.major = major; - this.minor = minor; - this.patch = patch; - this.version_0 = this.versionOf_0(this.major, this.minor, this.patch); - } - KotlinVersion.prototype.versionOf_0 = function (major, minor, patch) { - if (!(0 <= major && major <= 255 && (0 <= minor && minor <= 255) && (0 <= patch && patch <= 255))) { - var message = 'Version components are out of range: ' + major + '.' + minor + '.' + patch; - throw IllegalArgumentException_init_0(message.toString()); - } - return (major << 16) + (minor << 8) + patch | 0; - }; - KotlinVersion.prototype.toString = function () { - return this.major.toString() + '.' + this.minor + '.' + this.patch; - }; - KotlinVersion.prototype.equals = function (other) { - var tmp$, tmp$_0; - if (this === other) - return true; - tmp$_0 = Kotlin.isType(tmp$ = other, KotlinVersion) ? tmp$ : null; - if (tmp$_0 == null) { - return false; - } - var otherVersion = tmp$_0; - return this.version_0 === otherVersion.version_0; - }; - KotlinVersion.prototype.hashCode = function () { - return this.version_0; - }; - KotlinVersion.prototype.compareTo_11rb$ = function (other) { - return this.version_0 - other.version_0 | 0; - }; - KotlinVersion.prototype.isAtLeast_vux9f0$ = function (major, minor) { - return this.major > major || (this.major === major && this.minor >= minor); - }; - KotlinVersion.prototype.isAtLeast_qt1dr2$ = function (major, minor, patch) { - return this.major > major || (this.major === major && (this.minor > minor || (this.minor === minor && this.patch >= patch))); - }; - function KotlinVersion$Companion() { - KotlinVersion$Companion_instance = this; - this.MAX_COMPONENT_VALUE = 255; - this.CURRENT = new KotlinVersion(1, 3, 20); - } - KotlinVersion$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var KotlinVersion$Companion_instance = null; - function KotlinVersion$Companion_getInstance() { - if (KotlinVersion$Companion_instance === null) { - new KotlinVersion$Companion(); - } - return KotlinVersion$Companion_instance; - } - KotlinVersion.$metadata$ = {kind: Kind_CLASS, simpleName: 'KotlinVersion', interfaces: [Comparable]}; - function KotlinVersion_init(major, minor, $this) { - $this = $this || Object.create(KotlinVersion.prototype); - KotlinVersion.call($this, major, minor, 0); - return $this; - } - var get_isInitialized = defineInlineFunction('kotlin.kotlin.get_isInitialized_texjl9$', wrapFunction(function () { - var NotImplementedError_init = _.kotlin.NotImplementedError; - return function ($receiver) { - throw new NotImplementedError_init('Implementation is intrinsic'); - }; - })); - function Lazy() { - } - Lazy.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Lazy', interfaces: []}; - function lazyOf(value) { - return new InitializedLazyImpl(value); - } - var getValue_3 = defineInlineFunction('kotlin.kotlin.getValue_thokl7$', function ($receiver, thisRef, property) { - return $receiver.value; - }); - function LazyThreadSafetyMode(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function LazyThreadSafetyMode_initFields() { - LazyThreadSafetyMode_initFields = function () { - }; - LazyThreadSafetyMode$SYNCHRONIZED_instance = new LazyThreadSafetyMode('SYNCHRONIZED', 0); - LazyThreadSafetyMode$PUBLICATION_instance = new LazyThreadSafetyMode('PUBLICATION', 1); - LazyThreadSafetyMode$NONE_instance = new LazyThreadSafetyMode('NONE', 2); - } - var LazyThreadSafetyMode$SYNCHRONIZED_instance; - function LazyThreadSafetyMode$SYNCHRONIZED_getInstance() { - LazyThreadSafetyMode_initFields(); - return LazyThreadSafetyMode$SYNCHRONIZED_instance; - } - var LazyThreadSafetyMode$PUBLICATION_instance; - function LazyThreadSafetyMode$PUBLICATION_getInstance() { - LazyThreadSafetyMode_initFields(); - return LazyThreadSafetyMode$PUBLICATION_instance; - } - var LazyThreadSafetyMode$NONE_instance; - function LazyThreadSafetyMode$NONE_getInstance() { - LazyThreadSafetyMode_initFields(); - return LazyThreadSafetyMode$NONE_instance; - } - LazyThreadSafetyMode.$metadata$ = {kind: Kind_CLASS, simpleName: 'LazyThreadSafetyMode', interfaces: [Enum]}; - function LazyThreadSafetyMode$values() { - return [LazyThreadSafetyMode$SYNCHRONIZED_getInstance(), LazyThreadSafetyMode$PUBLICATION_getInstance(), LazyThreadSafetyMode$NONE_getInstance()]; - } - LazyThreadSafetyMode.values = LazyThreadSafetyMode$values; - function LazyThreadSafetyMode$valueOf(name) { - switch (name) { - case 'SYNCHRONIZED': - return LazyThreadSafetyMode$SYNCHRONIZED_getInstance(); - case 'PUBLICATION': - return LazyThreadSafetyMode$PUBLICATION_getInstance(); - case 'NONE': - return LazyThreadSafetyMode$NONE_getInstance(); - default:throwISE('No enum constant kotlin.LazyThreadSafetyMode.' + name); - } - } - LazyThreadSafetyMode.valueOf_61zpoe$ = LazyThreadSafetyMode$valueOf; - function UNINITIALIZED_VALUE() { - UNINITIALIZED_VALUE_instance = this; - } - UNINITIALIZED_VALUE.$metadata$ = {kind: Kind_OBJECT, simpleName: 'UNINITIALIZED_VALUE', interfaces: []}; - var UNINITIALIZED_VALUE_instance = null; - function UNINITIALIZED_VALUE_getInstance() { - if (UNINITIALIZED_VALUE_instance === null) { - new UNINITIALIZED_VALUE(); - } - return UNINITIALIZED_VALUE_instance; - } - function UnsafeLazyImpl(initializer) { - this.initializer_0 = initializer; - this._value_0 = UNINITIALIZED_VALUE_getInstance(); - } - Object.defineProperty(UnsafeLazyImpl.prototype, 'value', {get: function () { - var tmp$; - if (this._value_0 === UNINITIALIZED_VALUE_getInstance()) { - this._value_0 = ensureNotNull(this.initializer_0)(); - this.initializer_0 = null; - } - return (tmp$ = this._value_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE_0(); - }}); - UnsafeLazyImpl.prototype.isInitialized = function () { - return this._value_0 !== UNINITIALIZED_VALUE_getInstance(); - }; - UnsafeLazyImpl.prototype.toString = function () { - return this.isInitialized() ? toString(this.value) : 'Lazy value not initialized yet.'; - }; - UnsafeLazyImpl.prototype.writeReplace_0 = function () { - return new InitializedLazyImpl(this.value); - }; - UnsafeLazyImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'UnsafeLazyImpl', interfaces: [Serializable, Lazy]}; - function InitializedLazyImpl(value) { - this.value_7taq70$_0 = value; - } - Object.defineProperty(InitializedLazyImpl.prototype, 'value', {get: function () { - return this.value_7taq70$_0; - }}); - InitializedLazyImpl.prototype.isInitialized = function () { - return true; - }; - InitializedLazyImpl.prototype.toString = function () { - return toString(this.value); - }; - InitializedLazyImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'InitializedLazyImpl', interfaces: [Serializable, Lazy]}; - var require_0 = defineInlineFunction('kotlin.kotlin.require_6taknv$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - return function (value) { - if (!value) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init(message.toString()); - } - }; - })); - var require_1 = defineInlineFunction('kotlin.kotlin.require_4ina18$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - return function (value, lazyMessage) { - if (!value) { - var message = lazyMessage(); - throw IllegalArgumentException_init(message.toString()); - } - }; - })); - var requireNotNull = defineInlineFunction('kotlin.kotlin.requireNotNull_issdgt$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - return function (value) { - var requireNotNull$result; - if (value == null) { - var message = 'Required value was null.'; - throw IllegalArgumentException_init(message.toString()); - } - else { - requireNotNull$result = value; - } - return requireNotNull$result; - }; - })); - var requireNotNull_0 = defineInlineFunction('kotlin.kotlin.requireNotNull_p3yddy$', wrapFunction(function () { - var IllegalArgumentException_init = _.kotlin.IllegalArgumentException_init_pdl1vj$; - return function (value, lazyMessage) { - if (value == null) { - var message = lazyMessage(); - throw IllegalArgumentException_init(message.toString()); - } - else { - return value; - } - }; - })); - var check = defineInlineFunction('kotlin.kotlin.check_6taknv$', wrapFunction(function () { - var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; - return function (value) { - if (!value) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - }; - })); - var check_0 = defineInlineFunction('kotlin.kotlin.check_4ina18$', wrapFunction(function () { - var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; - return function (value, lazyMessage) { - if (!value) { - var message = lazyMessage(); - throw IllegalStateException_init(message.toString()); - } - }; - })); - var checkNotNull = defineInlineFunction('kotlin.kotlin.checkNotNull_issdgt$', wrapFunction(function () { - var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; - return function (value) { - var checkNotNull$result; - if (value == null) { - var message = 'Required value was null.'; - throw IllegalStateException_init(message.toString()); - } - else { - checkNotNull$result = value; - } - return checkNotNull$result; - }; - })); - var checkNotNull_0 = defineInlineFunction('kotlin.kotlin.checkNotNull_p3yddy$', wrapFunction(function () { - var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; - return function (value, lazyMessage) { - if (value == null) { - var message = lazyMessage(); - throw IllegalStateException_init(message.toString()); - } - else { - return value; - } - }; - })); - var error = defineInlineFunction('kotlin.kotlin.error_za3rmp$', wrapFunction(function () { - var IllegalStateException_init = _.kotlin.IllegalStateException_init_pdl1vj$; - return function (message) { - throw IllegalStateException_init(message.toString()); - }; - })); - function Result(value) { - Result$Companion_getInstance(); - this.value = value; - } - Object.defineProperty(Result.prototype, 'isSuccess', {get: function () { - return !Kotlin.isType(this.value, Result$Failure); - }}); - Object.defineProperty(Result.prototype, 'isFailure', {get: function () { - return Kotlin.isType(this.value, Result$Failure); - }}); - Result.prototype.getOrNull = defineInlineFunction('kotlin.kotlin.Result.getOrNull', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function () { - var tmp$; - if (this.isFailure) - return null; - else - return (tmp$ = this.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - }; - })); - Result.prototype.exceptionOrNull = function () { - if (Kotlin.isType(this.value, Result$Failure)) - return this.value.exception; - else - return null; - }; - Result.prototype.toString = function () { - if (Kotlin.isType(this.value, Result$Failure)) - return this.value.toString(); - else - return 'Success(' + toString(this.value) + ')'; - }; - function Result$Companion() { - Result$Companion_instance = this; - } - Result$Companion.prototype.success_mh5how$ = defineInlineFunction('kotlin.kotlin.Result.Companion.success_mh5how$', wrapFunction(function () { - var Result_init = _.kotlin.Result; - return function (value) { - return new Result_init(value); - }; - })); - Result$Companion.prototype.failure_lsqlk3$ = defineInlineFunction('kotlin.kotlin.Result.Companion.failure_lsqlk3$', wrapFunction(function () { - var createFailure = _.kotlin.createFailure_tcv7n7$; - var Result_init = _.kotlin.Result; - return function (exception) { - return new Result_init(createFailure(exception)); - }; - })); - Result$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var Result$Companion_instance = null; - function Result$Companion_getInstance() { - if (Result$Companion_instance === null) { - new Result$Companion(); - } - return Result$Companion_instance; - } - function Result$Failure(exception) { - this.exception = exception; - } - Result$Failure.prototype.equals = function (other) { - return Kotlin.isType(other, Result$Failure) && equals(this.exception, other.exception); - }; - Result$Failure.prototype.hashCode = function () { - return hashCode(this.exception); - }; - Result$Failure.prototype.toString = function () { - return 'Failure(' + this.exception + ')'; - }; - Result$Failure.$metadata$ = {kind: Kind_CLASS, simpleName: 'Failure', interfaces: [Serializable]}; - Result.$metadata$ = {kind: Kind_CLASS, simpleName: 'Result', interfaces: [Serializable]}; - Result.prototype.unbox = function () { - return this.value; - }; - Result.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.value) | 0; - return result; - }; - Result.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.value, other.value)))); - }; - function createFailure(exception) { - return new Result$Failure(exception); - } - function throwOnFailure($receiver) { - if (Kotlin.isType($receiver.value, Result$Failure)) - throw $receiver.value.exception; - } - var runCatching = defineInlineFunction('kotlin.kotlin.runCatching_klfg04$', wrapFunction(function () { - var Result = _.kotlin.Result; - var Throwable = Error; - var createFailure = _.kotlin.createFailure_tcv7n7$; - return function (block) { - var tmp$; - try { - tmp$ = new Result(block()); - } - catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$ = new Result(createFailure(e)); - } - else - throw e; - } - return tmp$; - }; - })); - var runCatching_0 = defineInlineFunction('kotlin.kotlin.runCatching_96jf0l$', wrapFunction(function () { - var Result = _.kotlin.Result; - var Throwable = Error; - var createFailure = _.kotlin.createFailure_tcv7n7$; - return function ($receiver, block) { - var tmp$; - try { - tmp$ = new Result(block($receiver)); - } - catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$ = new Result(createFailure(e)); - } - else - throw e; - } - return tmp$; - }; - })); - var getOrThrow = defineInlineFunction('kotlin.kotlin.getOrThrow_rnsj6g$', wrapFunction(function () { - var throwOnFailure = _.kotlin.throwOnFailure_iacion$; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver) { - var tmp$; - throwOnFailure($receiver); - return (tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - }; - })); - var getOrElse_11 = defineInlineFunction('kotlin.kotlin.getOrElse_h5t2n1$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, onFailure) { - var tmp$, tmp$_0; - var exception = $receiver.exceptionOrNull(); - if (exception == null) - tmp$_0 = (tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - else - tmp$_0 = onFailure(exception); - return tmp$_0; - }; - })); - var getOrDefault = defineInlineFunction('kotlin.kotlin.getOrDefault_98but8$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, defaultValue) { - var tmp$; - if ($receiver.isFailure) - return defaultValue; - return (tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - }; - })); - var fold_13 = defineInlineFunction('kotlin.kotlin.fold_whgilm$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, onSuccess, onFailure) { - var tmp$, tmp$_0; - var exception = $receiver.exceptionOrNull(); - if (exception == null) { - tmp$_0 = onSuccess((tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - } - else - tmp$_0 = onFailure(exception); - return tmp$_0; - }; - })); - var map_12 = defineInlineFunction('kotlin.kotlin.map_dgb8k9$', wrapFunction(function () { - var Result = _.kotlin.Result; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, transform) { - var tmp$; - var tmp$_0; - if ($receiver.isSuccess) { - Result.Companion; - tmp$_0 = new Result(transform((tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE())); - } - else - tmp$_0 = new Result($receiver.value); - return tmp$_0; - }; - })); - var mapCatching = defineInlineFunction('kotlin.kotlin.mapCatching_dgb8k9$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var Result_init = _.kotlin.Result; - var Throwable = Error; - var createFailure = _.kotlin.createFailure_tcv7n7$; - return function ($receiver, transform) { - var tmp$; - if ($receiver.isSuccess) { - var tmp$_0; - try { - var tmp$_1; - tmp$_0 = new Result_init(transform((tmp$_1 = $receiver.value) == null || Kotlin.isType(tmp$_1, Any) ? tmp$_1 : throwCCE())); - } - catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$_0 = new Result_init(createFailure(e)); - } - else - throw e; - } - tmp$ = tmp$_0; - } - else - tmp$ = new Result_init($receiver.value); - return tmp$; - }; - })); - var recover = defineInlineFunction('kotlin.kotlin.recover_h5t2n1$', wrapFunction(function () { - var Result = _.kotlin.Result; - return function ($receiver, transform) { - var tmp$; - var exception = $receiver.exceptionOrNull(); - if (exception == null) - tmp$ = $receiver; - else { - tmp$ = new Result(transform(exception)); - } - return tmp$; - }; - })); - var recoverCatching = defineInlineFunction('kotlin.kotlin.recoverCatching_h5t2n1$', wrapFunction(function () { - var Result = _.kotlin.Result; - var Throwable = Error; - var createFailure = _.kotlin.createFailure_tcv7n7$; - return function ($receiver, transform) { - var tmp$; - var value = $receiver.value; - var exception = $receiver.exceptionOrNull(); - if (exception == null) - tmp$ = $receiver; - else { - var tmp$_0; - try { - tmp$_0 = new Result(transform(exception)); - } - catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$_0 = new Result(createFailure(e)); - } - else - throw e; - } - tmp$ = tmp$_0; - } - return tmp$; - }; - })); - var onFailure = defineInlineFunction('kotlin.kotlin.onFailure_peshbw$', wrapFunction(function () { - return function ($receiver, action) { - var tmp$; - if ((tmp$ = $receiver.exceptionOrNull()) != null) { - action(tmp$); - } - return $receiver; - }; - })); - var onSuccess = defineInlineFunction('kotlin.kotlin.onSuccess_3t3bof$', wrapFunction(function () { - var Any = Object; - var throwCCE = Kotlin.throwCCE; - return function ($receiver, action) { - var tmp$; - if ($receiver.isSuccess) { - action((tmp$ = $receiver.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - } - return $receiver; - }; - })); - function NotImplementedError(message) { - if (message === void 0) - message = 'An operation is not implemented.'; - Error_init_0(message, this); - this.name = 'NotImplementedError'; - } - NotImplementedError.$metadata$ = {kind: Kind_CLASS, simpleName: 'NotImplementedError', interfaces: [Error_0]}; - var TODO = defineInlineFunction('kotlin.kotlin.TODO', wrapFunction(function () { - var NotImplementedError_init = _.kotlin.NotImplementedError; - return function () { - throw new NotImplementedError_init(); - }; - })); - var TODO_0 = defineInlineFunction('kotlin.kotlin.TODO_61zpoe$', wrapFunction(function () { - var NotImplementedError_init = _.kotlin.NotImplementedError; - return function (reason) { - throw new NotImplementedError_init('An operation is not implemented: ' + reason); - }; - })); - var run = defineInlineFunction('kotlin.kotlin.run_klfg04$', wrapFunction(function () { - return function (block) { - return block(); - }; - })); - var run_0 = defineInlineFunction('kotlin.kotlin.run_96jf0l$', wrapFunction(function () { - return function ($receiver, block) { - return block($receiver); - }; - })); - var with_0 = defineInlineFunction('kotlin.kotlin.with_ywwgyq$', wrapFunction(function () { - return function (receiver, block) { - return block(receiver); - }; - })); - var apply = defineInlineFunction('kotlin.kotlin.apply_9bxh2u$', wrapFunction(function () { - return function ($receiver, block) { - block($receiver); - return $receiver; - }; - })); - var also = defineInlineFunction('kotlin.kotlin.also_9bxh2u$', wrapFunction(function () { - return function ($receiver, block) { - block($receiver); - return $receiver; - }; - })); - var let_0 = defineInlineFunction('kotlin.kotlin.let_96jf0l$', wrapFunction(function () { - return function ($receiver, block) { - return block($receiver); - }; - })); - var takeIf = defineInlineFunction('kotlin.kotlin.takeIf_ujn5f2$', wrapFunction(function () { - return function ($receiver, predicate) { - return predicate($receiver) ? $receiver : null; - }; - })); - var takeUnless = defineInlineFunction('kotlin.kotlin.takeUnless_ujn5f2$', wrapFunction(function () { - return function ($receiver, predicate) { - return !predicate($receiver) ? $receiver : null; - }; - })); - var repeat_0 = defineInlineFunction('kotlin.kotlin.repeat_8b5ljp$', wrapFunction(function () { - return function (times, action) { - for (var index = 0; index < times; index++) { - action(index); - } - }; - })); - var suspend = defineInlineFunction('kotlin.kotlin.suspend_lnyleu$', function (block) { - return block; - }); - function Pair(first, second) { - this.first = first; - this.second = second; - } - Pair.prototype.toString = function () { - return '(' + this.first + ', ' + this.second + ')'; - }; - Pair.$metadata$ = {kind: Kind_CLASS, simpleName: 'Pair', interfaces: [Serializable]}; - Pair.prototype.component1 = function () { - return this.first; - }; - Pair.prototype.component2 = function () { - return this.second; - }; - Pair.prototype.copy_xwzc9p$ = function (first, second) { - return new Pair(first === void 0 ? this.first : first, second === void 0 ? this.second : second); - }; - Pair.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.first) | 0; - result = result * 31 + Kotlin.hashCode(this.second) | 0; - return result; - }; - Pair.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.first, other.first) && Kotlin.equals(this.second, other.second))))); - }; - function to($receiver, that) { - return new Pair($receiver, that); - } - function toList_12($receiver) { - return listOf_0([$receiver.first, $receiver.second]); - } - function Triple(first, second, third) { - this.first = first; - this.second = second; - this.third = third; - } - Triple.prototype.toString = function () { - return '(' + this.first + ', ' + this.second + ', ' + this.third + ')'; - }; - Triple.$metadata$ = {kind: Kind_CLASS, simpleName: 'Triple', interfaces: [Serializable]}; - Triple.prototype.component1 = function () { - return this.first; - }; - Triple.prototype.component2 = function () { - return this.second; - }; - Triple.prototype.component3 = function () { - return this.third; - }; - Triple.prototype.copy_1llc0w$ = function (first, second, third) { - return new Triple(first === void 0 ? this.first : first, second === void 0 ? this.second : second, third === void 0 ? this.third : third); - }; - Triple.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.first) | 0; - result = result * 31 + Kotlin.hashCode(this.second) | 0; - result = result * 31 + Kotlin.hashCode(this.third) | 0; - return result; - }; - Triple.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && (Kotlin.equals(this.first, other.first) && Kotlin.equals(this.second, other.second) && Kotlin.equals(this.third, other.third))))); - }; - function toList_13($receiver) { - return listOf_0([$receiver.first, $receiver.second, $receiver.third]); - } - function UByte(data) { - UByte$Companion_getInstance(); - this.data = data; - } - function UByte$Companion() { - UByte$Companion_instance = this; - this.MIN_VALUE = new UByte(0); - this.MAX_VALUE = new UByte(-1 | 0); - this.SIZE_BYTES = 1; - this.SIZE_BITS = 8; - } - UByte$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var UByte$Companion_instance = null; - function UByte$Companion_getInstance() { - if (UByte$Companion_instance === null) { - new UByte$Companion(); - } - return UByte$Companion_instance; - } - UByte.prototype.compareTo_11rb$ = defineInlineFunction('kotlin.kotlin.UByte.compareTo_11rb$', function (other) { - return Kotlin.primitiveCompareTo(this.data & 255, other.data & 255); - }); - UByte.prototype.compareTo_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UByte.compareTo_6hrhkk$', function (other) { - return Kotlin.primitiveCompareTo(this.data & 255, other.data & 65535); - }); - UByte.prototype.compareTo_s87ys9$ = defineInlineFunction('kotlin.kotlin.UByte.compareTo_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintCompare = _.kotlin.uintCompare_vux9f0$; - return function (other) { - return uintCompare((new UInt_init(this.data & 255)).data, other.data); - }; - })); - UByte.prototype.compareTo_mpgczg$ = defineInlineFunction('kotlin.kotlin.UByte.compareTo_mpgczg$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare((new ULong_init(Kotlin.Long.fromInt(this.data).and(L255))).data, other.data); - }; - })); - UByte.prototype.plus_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.plus_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 255)).data + (new UInt_init(other.data & 255)).data | 0); - }; - })); - UByte.prototype.plus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UByte.plus_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 255)).data + (new UInt_init(other.data & 65535)).data | 0); - }; - })); - UByte.prototype.plus_s87ys9$ = defineInlineFunction('kotlin.kotlin.UByte.plus_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 255)).data + other.data | 0); - }; - })); - UByte.prototype.plus_mpgczg$ = defineInlineFunction('kotlin.kotlin.UByte.plus_mpgczg$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L255))).data.add(other.data)); - }; - })); - UByte.prototype.minus_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.minus_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 255)).data - (new UInt_init(other.data & 255)).data | 0); - }; - })); - UByte.prototype.minus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UByte.minus_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 255)).data - (new UInt_init(other.data & 65535)).data | 0); - }; - })); - UByte.prototype.minus_s87ys9$ = defineInlineFunction('kotlin.kotlin.UByte.minus_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 255)).data - other.data | 0); - }; - })); - UByte.prototype.minus_mpgczg$ = defineInlineFunction('kotlin.kotlin.UByte.minus_mpgczg$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L255))).data.subtract(other.data)); - }; - })); - UByte.prototype.times_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.times_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul((new UInt_init(this.data & 255)).data, (new UInt_init(other.data & 255)).data)); - }; - })); - UByte.prototype.times_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UByte.times_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul((new UInt_init(this.data & 255)).data, (new UInt_init(other.data & 65535)).data)); - }; - })); - UByte.prototype.times_s87ys9$ = defineInlineFunction('kotlin.kotlin.UByte.times_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul((new UInt_init(this.data & 255)).data, other.data)); - }; - })); - UByte.prototype.times_mpgczg$ = defineInlineFunction('kotlin.kotlin.UByte.times_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L255))).data.multiply(other.data)); - }; - })); - UByte.prototype.div_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.div_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(new UInt_init(this.data & 255), new UInt_init(other.data & 255)); - }; - })); - UByte.prototype.div_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UByte.div_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(new UInt_init(this.data & 255), new UInt_init(other.data & 65535)); - }; - })); - UByte.prototype.div_s87ys9$ = defineInlineFunction('kotlin.kotlin.UByte.div_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(new UInt_init(this.data & 255), other); - }; - })); - UByte.prototype.div_mpgczg$ = defineInlineFunction('kotlin.kotlin.UByte.div_mpgczg$', wrapFunction(function () { - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(new ULong_init(Kotlin.Long.fromInt(this.data).and(L255)), other); - }; - })); - UByte.prototype.rem_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.rem_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(new UInt_init(this.data & 255), new UInt_init(other.data & 255)); - }; - })); - UByte.prototype.rem_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UByte.rem_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(new UInt_init(this.data & 255), new UInt_init(other.data & 65535)); - }; - })); - UByte.prototype.rem_s87ys9$ = defineInlineFunction('kotlin.kotlin.UByte.rem_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(new UInt_init(this.data & 255), other); - }; - })); - UByte.prototype.rem_mpgczg$ = defineInlineFunction('kotlin.kotlin.UByte.rem_mpgczg$', wrapFunction(function () { - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(new ULong_init(Kotlin.Long.fromInt(this.data).and(L255)), other); - }; - })); - UByte.prototype.inc = defineInlineFunction('kotlin.kotlin.UByte.inc', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function () { - return new UByte_init(toByte(this.data + 1)); - }; - })); - UByte.prototype.dec = defineInlineFunction('kotlin.kotlin.UByte.dec', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function () { - return new UByte_init(toByte(this.data - 1)); - }; - })); - UByte.prototype.rangeTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.rangeTo_mpmjao$', wrapFunction(function () { - var UIntRange_init = _.kotlin.ranges.UIntRange; - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UIntRange_init(new UInt_init(this.data & 255), new UInt_init(other.data & 255)); - }; - })); - UByte.prototype.and_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.and_mpmjao$', wrapFunction(function () { - var UByte_init = _.kotlin.UByte; - var toByte = Kotlin.toByte; - return function (other) { - return new UByte_init(toByte(this.data & other.data)); - }; - })); - UByte.prototype.or_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.or_mpmjao$', wrapFunction(function () { - var UByte_init = _.kotlin.UByte; - var toByte = Kotlin.toByte; - return function (other) { - return new UByte_init(toByte(this.data | other.data)); - }; - })); - UByte.prototype.xor_mpmjao$ = defineInlineFunction('kotlin.kotlin.UByte.xor_mpmjao$', wrapFunction(function () { - var UByte_init = _.kotlin.UByte; - var toByte = Kotlin.toByte; - return function (other) { - return new UByte_init(toByte(this.data ^ other.data)); - }; - })); - UByte.prototype.inv = defineInlineFunction('kotlin.kotlin.UByte.inv', wrapFunction(function () { - var UByte_init = _.kotlin.UByte; - var toByte = Kotlin.toByte; - return function () { - return new UByte_init(toByte(~this.data)); - }; - })); - UByte.prototype.toByte = defineInlineFunction('kotlin.kotlin.UByte.toByte', function () { - return this.data; - }); - UByte.prototype.toShort = defineInlineFunction('kotlin.kotlin.UByte.toShort', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function () { - return toShort(this.data & 255); - }; - })); - UByte.prototype.toInt = defineInlineFunction('kotlin.kotlin.UByte.toInt', function () { - return this.data & 255; - }); - UByte.prototype.toLong = defineInlineFunction('kotlin.kotlin.UByte.toLong', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - return function () { - return Kotlin.Long.fromInt(this.data).and(L255); - }; - })); - UByte.prototype.toUByte = defineInlineFunction('kotlin.kotlin.UByte.toUByte', function () { - return this; - }); - UByte.prototype.toUShort = defineInlineFunction('kotlin.kotlin.UByte.toUShort', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - var toShort = Kotlin.toShort; - return function () { - return new UShort_init(toShort(this.data & 255)); - }; - })); - UByte.prototype.toUInt = defineInlineFunction('kotlin.kotlin.UByte.toUInt', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function () { - return new UInt_init(this.data & 255); - }; - })); - UByte.prototype.toULong = defineInlineFunction('kotlin.kotlin.UByte.toULong', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - return function () { - return new ULong_init(Kotlin.Long.fromInt(this.data).and(L255)); - }; - })); - UByte.prototype.toString = function () { - return (this.data & 255).toString(); - }; - UByte.$metadata$ = {kind: Kind_CLASS, simpleName: 'UByte', interfaces: [Comparable]}; - UByte.prototype.unbox = function () { - return this.data; - }; - UByte.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.data) | 0; - return result; - }; - UByte.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.data, other.data)))); - }; - var toUByte = defineInlineFunction('kotlin.kotlin.toUByte_mz3mee$', wrapFunction(function () { - var UByte_init = _.kotlin.UByte; - return function ($receiver) { - return new UByte_init($receiver); - }; - })); - var toUByte_0 = defineInlineFunction('kotlin.kotlin.toUByte_5vcgdc$', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function ($receiver) { - return new UByte_init(toByte($receiver)); - }; - })); - var toUByte_1 = defineInlineFunction('kotlin.kotlin.toUByte_s8ev3n$', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function ($receiver) { - return new UByte_init(toByte($receiver)); - }; - })); - var toUByte_2 = defineInlineFunction('kotlin.kotlin.toUByte_mts6qi$', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function ($receiver) { - return new UByte_init(toByte($receiver.toInt())); - }; - })); - function UByteArray(storage) { - this.storage = storage; - } - UByteArray.prototype.get_za3lpa$ = function (index) { - return new UByte(this.storage[index]); - }; - UByteArray.prototype.set_2c6cbe$ = function (index, value) { - this.storage[index] = value.data; - }; - Object.defineProperty(UByteArray.prototype, 'size', {get: function () { - return this.storage.length; - }}); - UByteArray.prototype.iterator = function () { - return new UByteArray$Iterator(this.storage); - }; - function UByteArray$Iterator(array) { - UByteIterator.call(this); - this.array_0 = array; - this.index_0 = 0; - } - UByteArray$Iterator.prototype.hasNext = function () { - return this.index_0 < this.array_0.length; - }; - UByteArray$Iterator.prototype.nextUByte = function () { - var tmp$; - if (this.index_0 < this.array_0.length) { - return new UByte(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else - throw new NoSuchElementException(this.index_0.toString()); - }; - UByteArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [UByteIterator]}; - UByteArray.prototype.contains_11rb$ = function (element) { - return contains_0(this.storage, element.data); - }; - UByteArray.prototype.containsAll_brywnq$ = function (elements) { - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!contains_0(this.storage, element.data)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - UByteArray.prototype.isEmpty = function () { - return this.storage.length === 0; - }; - UByteArray.$metadata$ = {kind: Kind_CLASS, simpleName: 'UByteArray', interfaces: [Collection]}; - function UByteArray_init(size, $this) { - $this = $this || Object.create(UByteArray.prototype); - UByteArray.call($this, new Int8Array(size)); - return $this; - } - UByteArray.prototype.unbox = function () { - return this.storage; - }; - UByteArray.prototype.toString = function () { - return 'UByteArray(storage=' + Kotlin.toString(this.storage) + ')'; - }; - UByteArray.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.storage) | 0; - return result; - }; - UByteArray.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.storage, other.storage)))); - }; - var UByteArray_0 = defineInlineFunction('kotlin.kotlin.UByteArray_r6jda2$', wrapFunction(function () { - var UByteArray_init = _.kotlin.UByteArray; - function UByteArray$lambda(closure$init) { - return function (index) { - return closure$init(index).data; - }; - } - return function (size, init) { - return new UByteArray_init(Kotlin.fillArray(new Int8Array(size), UByteArray$lambda(init))); - }; - })); - var ubyteArrayOf = defineInlineFunction('kotlin.kotlin.ubyteArrayOf_heqmip$', function (elements) { - return elements; - }); - function UInt(data) { - UInt$Companion_getInstance(); - this.data = data; - } - function UInt$Companion() { - UInt$Companion_instance = this; - this.MIN_VALUE = new UInt(0); - this.MAX_VALUE = new UInt(-1); - this.SIZE_BYTES = 4; - this.SIZE_BITS = 32; - } - UInt$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var UInt$Companion_instance = null; - function UInt$Companion_getInstance() { - if (UInt$Companion_instance === null) { - new UInt$Companion(); - } - return UInt$Companion_instance; - } - UInt.prototype.compareTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.compareTo_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintCompare = _.kotlin.uintCompare_vux9f0$; - return function (other) { - return uintCompare(this.data, (new UInt_init(other.data & 255)).data); - }; - })); - UInt.prototype.compareTo_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UInt.compareTo_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintCompare = _.kotlin.uintCompare_vux9f0$; - return function (other) { - return uintCompare(this.data, (new UInt_init(other.data & 65535)).data); - }; - })); - UInt.prototype.compareTo_11rb$ = defineInlineFunction('kotlin.kotlin.UInt.compareTo_11rb$', wrapFunction(function () { - var uintCompare = _.kotlin.uintCompare_vux9f0$; - return function (other) { - return uintCompare(this.data, other.data); - }; - })); - UInt.prototype.compareTo_mpgczg$ = defineInlineFunction('kotlin.kotlin.UInt.compareTo_mpgczg$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare((new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295))).data, other.data); - }; - })); - UInt.prototype.plus_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.plus_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data + (new UInt_init(other.data & 255)).data | 0); - }; - })); - UInt.prototype.plus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UInt.plus_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data + (new UInt_init(other.data & 65535)).data | 0); - }; - })); - UInt.prototype.plus_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.plus_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data + other.data | 0); - }; - })); - UInt.prototype.plus_mpgczg$ = defineInlineFunction('kotlin.kotlin.UInt.plus_mpgczg$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295))).data.add(other.data)); - }; - })); - UInt.prototype.minus_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.minus_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data - (new UInt_init(other.data & 255)).data | 0); - }; - })); - UInt.prototype.minus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UInt.minus_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data - (new UInt_init(other.data & 65535)).data | 0); - }; - })); - UInt.prototype.minus_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.minus_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data - other.data | 0); - }; - })); - UInt.prototype.minus_mpgczg$ = defineInlineFunction('kotlin.kotlin.UInt.minus_mpgczg$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295))).data.subtract(other.data)); - }; - })); - UInt.prototype.times_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.times_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul(this.data, (new UInt_init(other.data & 255)).data)); - }; - })); - UInt.prototype.times_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UInt.times_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul(this.data, (new UInt_init(other.data & 65535)).data)); - }; - })); - UInt.prototype.times_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.times_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul(this.data, other.data)); - }; - })); - UInt.prototype.times_mpgczg$ = defineInlineFunction('kotlin.kotlin.UInt.times_mpgczg$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295))).data.multiply(other.data)); - }; - })); - UInt.prototype.div_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.div_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(this, new UInt_init(other.data & 255)); - }; - })); - UInt.prototype.div_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UInt.div_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(this, new UInt_init(other.data & 65535)); - }; - })); - UInt.prototype.div_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.div_s87ys9$', wrapFunction(function () { - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(this, other); - }; - })); - UInt.prototype.div_mpgczg$ = defineInlineFunction('kotlin.kotlin.UInt.div_mpgczg$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295)), other); - }; - })); - UInt.prototype.rem_mpmjao$ = defineInlineFunction('kotlin.kotlin.UInt.rem_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(this, new UInt_init(other.data & 255)); - }; - })); - UInt.prototype.rem_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UInt.rem_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(this, new UInt_init(other.data & 65535)); - }; - })); - UInt.prototype.rem_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.rem_s87ys9$', wrapFunction(function () { - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(this, other); - }; - })); - UInt.prototype.rem_mpgczg$ = defineInlineFunction('kotlin.kotlin.UInt.rem_mpgczg$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295)), other); - }; - })); - UInt.prototype.inc = defineInlineFunction('kotlin.kotlin.UInt.inc', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function () { - return new UInt_init(this.data + 1 | 0); - }; - })); - UInt.prototype.dec = defineInlineFunction('kotlin.kotlin.UInt.dec', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function () { - return new UInt_init(this.data - 1 | 0); - }; - })); - UInt.prototype.rangeTo_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.rangeTo_s87ys9$', wrapFunction(function () { - var UIntRange_init = _.kotlin.ranges.UIntRange; - return function (other) { - return new UIntRange_init(this, other); - }; - })); - UInt.prototype.shl_za3lpa$ = defineInlineFunction('kotlin.kotlin.UInt.shl_za3lpa$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (bitCount) { - return new UInt_init(this.data << bitCount); - }; - })); - UInt.prototype.shr_za3lpa$ = defineInlineFunction('kotlin.kotlin.UInt.shr_za3lpa$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (bitCount) { - return new UInt_init(this.data >>> bitCount); - }; - })); - UInt.prototype.and_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.and_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data & other.data); - }; - })); - UInt.prototype.or_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.or_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data | other.data); - }; - })); - UInt.prototype.xor_s87ys9$ = defineInlineFunction('kotlin.kotlin.UInt.xor_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(this.data ^ other.data); - }; - })); - UInt.prototype.inv = defineInlineFunction('kotlin.kotlin.UInt.inv', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function () { - return new UInt_init(~this.data); - }; - })); - UInt.prototype.toByte = defineInlineFunction('kotlin.kotlin.UInt.toByte', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function () { - return toByte(this.data); - }; - })); - UInt.prototype.toShort = defineInlineFunction('kotlin.kotlin.UInt.toShort', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function () { - return toShort(this.data); - }; - })); - UInt.prototype.toInt = defineInlineFunction('kotlin.kotlin.UInt.toInt', function () { - return this.data; - }); - UInt.prototype.toLong = defineInlineFunction('kotlin.kotlin.UInt.toLong', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - return function () { - return Kotlin.Long.fromInt(this.data).and(L4294967295); - }; - })); - UInt.prototype.toUByte = defineInlineFunction('kotlin.kotlin.UInt.toUByte', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function () { - return new UByte_init(toByte(this.data)); - }; - })); - UInt.prototype.toUShort = defineInlineFunction('kotlin.kotlin.UInt.toUShort', wrapFunction(function () { - var toShort = Kotlin.toShort; - var UShort_init = _.kotlin.UShort; - return function () { - return new UShort_init(toShort(this.data)); - }; - })); - UInt.prototype.toUInt = defineInlineFunction('kotlin.kotlin.UInt.toUInt', function () { - return this; - }); - UInt.prototype.toULong = defineInlineFunction('kotlin.kotlin.UInt.toULong', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function () { - return new ULong_init(Kotlin.Long.fromInt(this.data).and(L4294967295)); - }; - })); - UInt.prototype.toString = function () { - return Kotlin.Long.fromInt(this.data).and(L4294967295).toString(); - }; - UInt.$metadata$ = {kind: Kind_CLASS, simpleName: 'UInt', interfaces: [Comparable]}; - UInt.prototype.unbox = function () { - return this.data; - }; - UInt.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.data) | 0; - return result; - }; - UInt.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.data, other.data)))); - }; - var toUInt = defineInlineFunction('kotlin.kotlin.toUInt_mz3mee$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function ($receiver) { - return new UInt_init($receiver); - }; - })); - var toUInt_0 = defineInlineFunction('kotlin.kotlin.toUInt_5vcgdc$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function ($receiver) { - return new UInt_init($receiver); - }; - })); - var toUInt_1 = defineInlineFunction('kotlin.kotlin.toUInt_s8ev3n$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function ($receiver) { - return new UInt_init($receiver); - }; - })); - var toUInt_2 = defineInlineFunction('kotlin.kotlin.toUInt_mts6qi$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function ($receiver) { - return new UInt_init($receiver.toInt()); - }; - })); - function UIntArray(storage) { - this.storage = storage; - } - UIntArray.prototype.get_za3lpa$ = function (index) { - return new UInt(this.storage[index]); - }; - UIntArray.prototype.set_6sqrdv$ = function (index, value) { - this.storage[index] = value.data; - }; - Object.defineProperty(UIntArray.prototype, 'size', {get: function () { - return this.storage.length; - }}); - UIntArray.prototype.iterator = function () { - return new UIntArray$Iterator(this.storage); - }; - function UIntArray$Iterator(array) { - UIntIterator.call(this); - this.array_0 = array; - this.index_0 = 0; - } - UIntArray$Iterator.prototype.hasNext = function () { - return this.index_0 < this.array_0.length; - }; - UIntArray$Iterator.prototype.nextUInt = function () { - var tmp$; - if (this.index_0 < this.array_0.length) { - return new UInt(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else - throw new NoSuchElementException(this.index_0.toString()); - }; - UIntArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [UIntIterator]}; - UIntArray.prototype.contains_11rb$ = function (element) { - return contains_2(this.storage, element.data); - }; - UIntArray.prototype.containsAll_brywnq$ = function (elements) { - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!contains_2(this.storage, element.data)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - UIntArray.prototype.isEmpty = function () { - return this.storage.length === 0; - }; - UIntArray.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntArray', interfaces: [Collection]}; - function UIntArray_init(size, $this) { - $this = $this || Object.create(UIntArray.prototype); - UIntArray.call($this, new Int32Array(size)); - return $this; - } - UIntArray.prototype.unbox = function () { - return this.storage; - }; - UIntArray.prototype.toString = function () { - return 'UIntArray(storage=' + Kotlin.toString(this.storage) + ')'; - }; - UIntArray.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.storage) | 0; - return result; - }; - UIntArray.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.storage, other.storage)))); - }; - var UIntArray_0 = defineInlineFunction('kotlin.kotlin.UIntArray_8ai2qn$', wrapFunction(function () { - var UIntArray_init = _.kotlin.UIntArray; - function UIntArray$lambda(closure$init) { - return function (index) { - return closure$init(index).data; - }; - } - return function (size, init) { - return new UIntArray_init(Kotlin.fillArray(new Int32Array(size), UIntArray$lambda(init))); - }; - })); - var uintArrayOf = defineInlineFunction('kotlin.kotlin.uintArrayOf_b6v1wk$', function (elements) { - return elements; - }); - function UIntRange(start, endInclusive) { - UIntRange$Companion_getInstance(); - UIntProgression.call(this, start, endInclusive, 1); - } - Object.defineProperty(UIntRange.prototype, 'start', {get: function () { - return this.first; - }}); - Object.defineProperty(UIntRange.prototype, 'endInclusive', {get: function () { - return this.last; - }}); - UIntRange.prototype.contains_mef7kx$ = function (value) { - var tmp$ = uintCompare(this.first.data, value.data) <= 0; - if (tmp$) { - tmp$ = uintCompare(value.data, this.last.data) <= 0; - } - return tmp$; - }; - UIntRange.prototype.isEmpty = function () { - return uintCompare(this.first.data, this.last.data) > 0; - }; - UIntRange.prototype.equals = function (other) { - var tmp$, tmp$_0; - return Kotlin.isType(other, UIntRange) && (this.isEmpty() && other.isEmpty() || (((tmp$ = this.first) != null ? tmp$.equals(other.first) : null) && ((tmp$_0 = this.last) != null ? tmp$_0.equals(other.last) : null))); - }; - UIntRange.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * this.first.data | 0) + this.last.data | 0; - }; - UIntRange.prototype.toString = function () { - return this.first.toString() + '..' + this.last; - }; - function UIntRange$Companion() { - UIntRange$Companion_instance = this; - this.EMPTY = new UIntRange(UInt$Companion_getInstance().MAX_VALUE, UInt$Companion_getInstance().MIN_VALUE); - } - UIntRange$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var UIntRange$Companion_instance = null; - function UIntRange$Companion_getInstance() { - if (UIntRange$Companion_instance === null) { - new UIntRange$Companion(); - } - return UIntRange$Companion_instance; - } - UIntRange.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntRange', interfaces: [ClosedRange, UIntProgression]}; - function UIntProgression(start, endInclusive, step) { - UIntProgression$Companion_getInstance(); - if (step === 0) - throw IllegalArgumentException_init_0('Step must be non-zero.'); - if (step === -2147483648) - throw IllegalArgumentException_init_0('Step must be greater than Int.MIN_VALUE to avoid overflow on negation.'); - this.first = start; - this.last = getProgressionLastElement_1(start, endInclusive, step); - this.step = step; - } - UIntProgression.prototype.iterator = function () { - return new UIntProgressionIterator(this.first, this.last, this.step); - }; - UIntProgression.prototype.isEmpty = function () { - return this.step > 0 ? uintCompare(this.first.data, this.last.data) > 0 : uintCompare(this.first.data, this.last.data) < 0; - }; - UIntProgression.prototype.equals = function (other) { - var tmp$, tmp$_0; - return Kotlin.isType(other, UIntProgression) && (this.isEmpty() && other.isEmpty() || (((tmp$ = this.first) != null ? tmp$.equals(other.first) : null) && ((tmp$_0 = this.last) != null ? tmp$_0.equals(other.last) : null) && this.step === other.step)); - }; - UIntProgression.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * ((31 * this.first.data | 0) + this.last.data | 0) | 0) + this.step | 0; - }; - UIntProgression.prototype.toString = function () { - return this.step > 0 ? this.first.toString() + '..' + this.last + ' step ' + this.step : this.first.toString() + ' downTo ' + this.last + ' step ' + (-this.step | 0); - }; - function UIntProgression$Companion() { - UIntProgression$Companion_instance = this; - } - UIntProgression$Companion.prototype.fromClosedRange_fjk8us$ = function (rangeStart, rangeEnd, step) { - return new UIntProgression(rangeStart, rangeEnd, step); - }; - UIntProgression$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var UIntProgression$Companion_instance = null; - function UIntProgression$Companion_getInstance() { - if (UIntProgression$Companion_instance === null) { - new UIntProgression$Companion(); - } - return UIntProgression$Companion_instance; - } - UIntProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntProgression', interfaces: [Iterable]}; - function UIntProgressionIterator(first, last, step) { - UIntIterator.call(this); - this.finalElement_0 = last; - this.hasNext_0 = step > 0 ? uintCompare(first.data, last.data) <= 0 : uintCompare(first.data, last.data) >= 0; - this.step_0 = new UInt(step); - this.next_0 = this.hasNext_0 ? first : this.finalElement_0; - } - UIntProgressionIterator.prototype.hasNext = function () { - return this.hasNext_0; - }; - UIntProgressionIterator.prototype.nextUInt = function () { - var value = this.next_0; - if (value != null ? value.equals(this.finalElement_0) : null) { - if (!this.hasNext_0) - throw NoSuchElementException_init(); - this.hasNext_0 = false; - } - else { - this.next_0 = new UInt(this.next_0.data + this.step_0.data | 0); - } - return value; - }; - UIntProgressionIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntProgressionIterator', interfaces: [UIntIterator]}; - function UByteIterator() { - } - UByteIterator.prototype.next = function () { - return this.nextUByte(); - }; - UByteIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'UByteIterator', interfaces: [Iterator]}; - function UShortIterator() { - } - UShortIterator.prototype.next = function () { - return this.nextUShort(); - }; - UShortIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'UShortIterator', interfaces: [Iterator]}; - function UIntIterator() { - } - UIntIterator.prototype.next = function () { - return this.nextUInt(); - }; - UIntIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'UIntIterator', interfaces: [Iterator]}; - function ULongIterator() { - } - ULongIterator.prototype.next = function () { - return this.nextULong(); - }; - ULongIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongIterator', interfaces: [Iterator]}; - function ULong(data) { - ULong$Companion_getInstance(); - this.data = data; - } - function ULong$Companion() { - ULong$Companion_instance = this; - this.MIN_VALUE = new ULong(L0); - this.MAX_VALUE = new ULong(L_1); - this.SIZE_BYTES = 8; - this.SIZE_BITS = 64; - } - ULong$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var ULong$Companion_instance = null; - function ULong$Companion_getInstance() { - if (ULong$Companion_instance === null) { - new ULong$Companion(); - } - return ULong$Companion_instance; - } - ULong.prototype.compareTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.compareTo_mpmjao$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare(this.data, (new ULong_init(Kotlin.Long.fromInt(other.data).and(L255))).data); - }; - })); - ULong.prototype.compareTo_6hrhkk$ = defineInlineFunction('kotlin.kotlin.ULong.compareTo_6hrhkk$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare(this.data, (new ULong_init(Kotlin.Long.fromInt(other.data).and(L65535))).data); - }; - })); - ULong.prototype.compareTo_s87ys9$ = defineInlineFunction('kotlin.kotlin.ULong.compareTo_s87ys9$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare(this.data, (new ULong_init(Kotlin.Long.fromInt(other.data).and(L4294967295))).data); - }; - })); - ULong.prototype.compareTo_11rb$ = defineInlineFunction('kotlin.kotlin.ULong.compareTo_11rb$', wrapFunction(function () { - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare(this.data, other.data); - }; - })); - ULong.prototype.plus_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.plus_mpmjao$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.add((new ULong_init(Kotlin.Long.fromInt(other.data).and(L255))).data)); - }; - })); - ULong.prototype.plus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.ULong.plus_6hrhkk$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.add((new ULong_init(Kotlin.Long.fromInt(other.data).and(L65535))).data)); - }; - })); - ULong.prototype.plus_s87ys9$ = defineInlineFunction('kotlin.kotlin.ULong.plus_s87ys9$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.add((new ULong_init(Kotlin.Long.fromInt(other.data).and(L4294967295))).data)); - }; - })); - ULong.prototype.plus_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.plus_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.add(other.data)); - }; - })); - ULong.prototype.minus_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.minus_mpmjao$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.subtract((new ULong_init(Kotlin.Long.fromInt(other.data).and(L255))).data)); - }; - })); - ULong.prototype.minus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.ULong.minus_6hrhkk$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.subtract((new ULong_init(Kotlin.Long.fromInt(other.data).and(L65535))).data)); - }; - })); - ULong.prototype.minus_s87ys9$ = defineInlineFunction('kotlin.kotlin.ULong.minus_s87ys9$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.subtract((new ULong_init(Kotlin.Long.fromInt(other.data).and(L4294967295))).data)); - }; - })); - ULong.prototype.minus_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.minus_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.subtract(other.data)); - }; - })); - ULong.prototype.times_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.times_mpmjao$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.multiply((new ULong_init(Kotlin.Long.fromInt(other.data).and(L255))).data)); - }; - })); - ULong.prototype.times_6hrhkk$ = defineInlineFunction('kotlin.kotlin.ULong.times_6hrhkk$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.multiply((new ULong_init(Kotlin.Long.fromInt(other.data).and(L65535))).data)); - }; - })); - ULong.prototype.times_s87ys9$ = defineInlineFunction('kotlin.kotlin.ULong.times_s87ys9$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.multiply((new ULong_init(Kotlin.Long.fromInt(other.data).and(L4294967295))).data)); - }; - })); - ULong.prototype.times_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.times_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.multiply(other.data)); - }; - })); - ULong.prototype.div_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.div_mpmjao$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(this, new ULong_init(Kotlin.Long.fromInt(other.data).and(L255))); - }; - })); - ULong.prototype.div_6hrhkk$ = defineInlineFunction('kotlin.kotlin.ULong.div_6hrhkk$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(this, new ULong_init(Kotlin.Long.fromInt(other.data).and(L65535))); - }; - })); - ULong.prototype.div_s87ys9$ = defineInlineFunction('kotlin.kotlin.ULong.div_s87ys9$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(this, new ULong_init(Kotlin.Long.fromInt(other.data).and(L4294967295))); - }; - })); - ULong.prototype.div_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.div_mpgczg$', wrapFunction(function () { - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(this, other); - }; - })); - ULong.prototype.rem_mpmjao$ = defineInlineFunction('kotlin.kotlin.ULong.rem_mpmjao$', wrapFunction(function () { - var L255 = Kotlin.Long.fromInt(255); - var ULong_init = _.kotlin.ULong; - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(this, new ULong_init(Kotlin.Long.fromInt(other.data).and(L255))); - }; - })); - ULong.prototype.rem_6hrhkk$ = defineInlineFunction('kotlin.kotlin.ULong.rem_6hrhkk$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(this, new ULong_init(Kotlin.Long.fromInt(other.data).and(L65535))); - }; - })); - ULong.prototype.rem_s87ys9$ = defineInlineFunction('kotlin.kotlin.ULong.rem_s87ys9$', wrapFunction(function () { - var L4294967295 = new Kotlin.Long(-1, 0); - var ULong_init = _.kotlin.ULong; - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(this, new ULong_init(Kotlin.Long.fromInt(other.data).and(L4294967295))); - }; - })); - ULong.prototype.rem_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.rem_mpgczg$', wrapFunction(function () { - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(this, other); - }; - })); - ULong.prototype.inc = defineInlineFunction('kotlin.kotlin.ULong.inc', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function () { - return new ULong_init(this.data.inc()); - }; - })); - ULong.prototype.dec = defineInlineFunction('kotlin.kotlin.ULong.dec', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function () { - return new ULong_init(this.data.dec()); - }; - })); - ULong.prototype.rangeTo_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.rangeTo_mpgczg$', wrapFunction(function () { - var ULongRange_init = _.kotlin.ranges.ULongRange; - return function (other) { - return new ULongRange_init(this, other); - }; - })); - ULong.prototype.shl_za3lpa$ = defineInlineFunction('kotlin.kotlin.ULong.shl_za3lpa$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (bitCount) { - return new ULong_init(this.data.shiftLeft(bitCount)); - }; - })); - ULong.prototype.shr_za3lpa$ = defineInlineFunction('kotlin.kotlin.ULong.shr_za3lpa$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (bitCount) { - return new ULong_init(this.data.shiftRightUnsigned(bitCount)); - }; - })); - ULong.prototype.and_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.and_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.and(other.data)); - }; - })); - ULong.prototype.or_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.or_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.or(other.data)); - }; - })); - ULong.prototype.xor_mpgczg$ = defineInlineFunction('kotlin.kotlin.ULong.xor_mpgczg$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init(this.data.xor(other.data)); - }; - })); - ULong.prototype.inv = defineInlineFunction('kotlin.kotlin.ULong.inv', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function () { - return new ULong_init(this.data.inv()); - }; - })); - ULong.prototype.toByte = defineInlineFunction('kotlin.kotlin.ULong.toByte', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function () { - return toByte(this.data.toInt()); - }; - })); - ULong.prototype.toShort = defineInlineFunction('kotlin.kotlin.ULong.toShort', wrapFunction(function () { - var toShort = Kotlin.toShort; - return function () { - return toShort(this.data.toInt()); - }; - })); - ULong.prototype.toInt = defineInlineFunction('kotlin.kotlin.ULong.toInt', function () { - return this.data.toInt(); - }); - ULong.prototype.toLong = defineInlineFunction('kotlin.kotlin.ULong.toLong', function () { - return this.data; - }); - ULong.prototype.toUByte = defineInlineFunction('kotlin.kotlin.ULong.toUByte', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function () { - return new UByte_init(toByte(this.data.toInt())); - }; - })); - ULong.prototype.toUShort = defineInlineFunction('kotlin.kotlin.ULong.toUShort', wrapFunction(function () { - var toShort = Kotlin.toShort; - var UShort_init = _.kotlin.UShort; - return function () { - return new UShort_init(toShort(this.data.toInt())); - }; - })); - ULong.prototype.toUInt = defineInlineFunction('kotlin.kotlin.ULong.toUInt', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function () { - return new UInt_init(this.data.toInt()); - }; - })); - ULong.prototype.toULong = defineInlineFunction('kotlin.kotlin.ULong.toULong', function () { - return this; - }); - ULong.prototype.toString = function () { - return ulongToString(this.data); - }; - ULong.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULong', interfaces: [Comparable]}; - ULong.prototype.unbox = function () { - return this.data; - }; - ULong.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.data) | 0; - return result; - }; - ULong.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.data, other.data)))); - }; - var toULong = defineInlineFunction('kotlin.kotlin.toULong_mz3mee$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function ($receiver) { - return new ULong_init(Kotlin.Long.fromInt($receiver)); - }; - })); - var toULong_0 = defineInlineFunction('kotlin.kotlin.toULong_5vcgdc$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function ($receiver) { - return new ULong_init(Kotlin.Long.fromInt($receiver)); - }; - })); - var toULong_1 = defineInlineFunction('kotlin.kotlin.toULong_s8ev3n$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function ($receiver) { - return new ULong_init(Kotlin.Long.fromInt($receiver)); - }; - })); - var toULong_2 = defineInlineFunction('kotlin.kotlin.toULong_mts6qi$', wrapFunction(function () { - var ULong_init = _.kotlin.ULong; - return function ($receiver) { - return new ULong_init($receiver); - }; - })); - function ULongArray(storage) { - this.storage = storage; - } - ULongArray.prototype.get_za3lpa$ = function (index) { - return new ULong(this.storage[index]); - }; - ULongArray.prototype.set_2ccimm$ = function (index, value) { - this.storage[index] = value.data; - }; - Object.defineProperty(ULongArray.prototype, 'size', {get: function () { - return this.storage.length; - }}); - ULongArray.prototype.iterator = function () { - return new ULongArray$Iterator(this.storage); - }; - function ULongArray$Iterator(array) { - ULongIterator.call(this); - this.array_0 = array; - this.index_0 = 0; - } - ULongArray$Iterator.prototype.hasNext = function () { - return this.index_0 < this.array_0.length; - }; - ULongArray$Iterator.prototype.nextULong = function () { - var tmp$; - if (this.index_0 < this.array_0.length) { - return new ULong(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else - throw new NoSuchElementException(this.index_0.toString()); - }; - ULongArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [ULongIterator]}; - ULongArray.prototype.contains_11rb$ = function (element) { - return contains_3(this.storage, element.data); - }; - ULongArray.prototype.containsAll_brywnq$ = function (elements) { - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!contains_3(this.storage, element.data)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - ULongArray.prototype.isEmpty = function () { - return this.storage.length === 0; - }; - ULongArray.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongArray', interfaces: [Collection]}; - function ULongArray_init(size, $this) { - $this = $this || Object.create(ULongArray.prototype); - ULongArray.call($this, Kotlin.longArray(size)); - return $this; - } - ULongArray.prototype.unbox = function () { - return this.storage; - }; - ULongArray.prototype.toString = function () { - return 'ULongArray(storage=' + Kotlin.toString(this.storage) + ')'; - }; - ULongArray.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.storage) | 0; - return result; - }; - ULongArray.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.storage, other.storage)))); - }; - var ULongArray_0 = defineInlineFunction('kotlin.kotlin.ULongArray_r17xm6$', wrapFunction(function () { - var ULongArray_init = _.kotlin.ULongArray; - function ULongArray$lambda(closure$init) { - return function (index) { - return closure$init(index).data; - }; - } - return function (size, init) { - return new ULongArray_init(Kotlin.longArrayF(size, ULongArray$lambda(init))); - }; - })); - var ulongArrayOf = defineInlineFunction('kotlin.kotlin.ulongArrayOf_imqi6j$', function (elements) { - return elements; - }); - function ULongRange_0(start, endInclusive) { - ULongRange$Companion_getInstance(); - ULongProgression.call(this, start, endInclusive, L1); - } - Object.defineProperty(ULongRange_0.prototype, 'start', {get: function () { - return this.first; - }}); - Object.defineProperty(ULongRange_0.prototype, 'endInclusive', {get: function () { - return this.last; - }}); - ULongRange_0.prototype.contains_mef7kx$ = function (value) { - var tmp$ = ulongCompare(this.first.data, value.data) <= 0; - if (tmp$) { - tmp$ = ulongCompare(value.data, this.last.data) <= 0; - } - return tmp$; - }; - ULongRange_0.prototype.isEmpty = function () { - return ulongCompare(this.first.data, this.last.data) > 0; - }; - ULongRange_0.prototype.equals = function (other) { - var tmp$, tmp$_0; - return Kotlin.isType(other, ULongRange_0) && (this.isEmpty() && other.isEmpty() || (((tmp$ = this.first) != null ? tmp$.equals(other.first) : null) && ((tmp$_0 = this.last) != null ? tmp$_0.equals(other.last) : null))); - }; - ULongRange_0.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * (new ULong(this.first.data.xor((new ULong(this.first.data.shiftRightUnsigned(32))).data))).data.toInt() | 0) + (new ULong(this.last.data.xor((new ULong(this.last.data.shiftRightUnsigned(32))).data))).data.toInt() | 0; - }; - ULongRange_0.prototype.toString = function () { - return this.first.toString() + '..' + this.last; - }; - function ULongRange$Companion() { - ULongRange$Companion_instance = this; - this.EMPTY = new ULongRange_0(ULong$Companion_getInstance().MAX_VALUE, ULong$Companion_getInstance().MIN_VALUE); - } - ULongRange$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var ULongRange$Companion_instance = null; - function ULongRange$Companion_getInstance() { - if (ULongRange$Companion_instance === null) { - new ULongRange$Companion(); - } - return ULongRange$Companion_instance; - } - ULongRange_0.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongRange', interfaces: [ClosedRange, ULongProgression]}; - function ULongProgression(start, endInclusive, step) { - ULongProgression$Companion_getInstance(); - if (equals(step, L0)) - throw IllegalArgumentException_init_0('Step must be non-zero.'); - if (equals(step, Long$Companion$MIN_VALUE)) - throw IllegalArgumentException_init_0('Step must be greater than Long.MIN_VALUE to avoid overflow on negation.'); - this.first = start; - this.last = getProgressionLastElement_2(start, endInclusive, step); - this.step = step; - } - ULongProgression.prototype.iterator = function () { - return new ULongProgressionIterator(this.first, this.last, this.step); - }; - ULongProgression.prototype.isEmpty = function () { - return this.step.toNumber() > 0 ? ulongCompare(this.first.data, this.last.data) > 0 : ulongCompare(this.first.data, this.last.data) < 0; - }; - ULongProgression.prototype.equals = function (other) { - var tmp$, tmp$_0; - return Kotlin.isType(other, ULongProgression) && (this.isEmpty() && other.isEmpty() || (((tmp$ = this.first) != null ? tmp$.equals(other.first) : null) && ((tmp$_0 = this.last) != null ? tmp$_0.equals(other.last) : null) && equals(this.step, other.step))); - }; - ULongProgression.prototype.hashCode = function () { - return this.isEmpty() ? -1 : (31 * ((31 * (new ULong(this.first.data.xor((new ULong(this.first.data.shiftRightUnsigned(32))).data))).data.toInt() | 0) + (new ULong(this.last.data.xor((new ULong(this.last.data.shiftRightUnsigned(32))).data))).data.toInt() | 0) | 0) + this.step.xor(this.step.shiftRightUnsigned(32)).toInt() | 0; - }; - ULongProgression.prototype.toString = function () { - return this.step.toNumber() > 0 ? this.first.toString() + '..' + this.last + ' step ' + this.step.toString() : this.first.toString() + ' downTo ' + this.last + ' step ' + this.step.unaryMinus().toString(); - }; - function ULongProgression$Companion() { - ULongProgression$Companion_instance = this; - } - ULongProgression$Companion.prototype.fromClosedRange_15zasp$ = function (rangeStart, rangeEnd, step) { - return new ULongProgression(rangeStart, rangeEnd, step); - }; - ULongProgression$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var ULongProgression$Companion_instance = null; - function ULongProgression$Companion_getInstance() { - if (ULongProgression$Companion_instance === null) { - new ULongProgression$Companion(); - } - return ULongProgression$Companion_instance; - } - ULongProgression.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongProgression', interfaces: [Iterable]}; - function ULongProgressionIterator(first, last, step) { - ULongIterator.call(this); - this.finalElement_0 = last; - this.hasNext_0 = step.toNumber() > 0 ? ulongCompare(first.data, last.data) <= 0 : ulongCompare(first.data, last.data) >= 0; - this.step_0 = new ULong(step); - this.next_0 = this.hasNext_0 ? first : this.finalElement_0; - } - ULongProgressionIterator.prototype.hasNext = function () { - return this.hasNext_0; - }; - ULongProgressionIterator.prototype.nextULong = function () { - var value = this.next_0; - if (value != null ? value.equals(this.finalElement_0) : null) { - if (!this.hasNext_0) - throw NoSuchElementException_init(); - this.hasNext_0 = false; - } - else { - this.next_0 = new ULong(this.next_0.data.add(this.step_0.data)); - } - return value; - }; - ULongProgressionIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'ULongProgressionIterator', interfaces: [ULongIterator]}; - function differenceModulo_1(a, b, c) { - var ac = uintRemainder(a, c); - var bc = uintRemainder(b, c); - return uintCompare(ac.data, bc.data) >= 0 ? new UInt(ac.data - bc.data | 0) : new UInt((new UInt(ac.data - bc.data | 0)).data + c.data | 0); - } - function differenceModulo_2(a, b, c) { - var ac = ulongRemainder(a, c); - var bc = ulongRemainder(b, c); - return ulongCompare(ac.data, bc.data) >= 0 ? new ULong(ac.data.subtract(bc.data)) : new ULong((new ULong(ac.data.subtract(bc.data))).data.add(c.data)); - } - function getProgressionLastElement_1(start, end, step) { - if (step > 0) { - return uintCompare(start.data, end.data) >= 0 ? end : new UInt(end.data - differenceModulo_1(end, start, new UInt(step)).data | 0); - } - else if (step < 0) { - return uintCompare(start.data, end.data) <= 0 ? end : new UInt(end.data + differenceModulo_1(start, end, new UInt(-step | 0)).data | 0); - } - else - throw IllegalArgumentException_init_0('Step is zero.'); - } - function getProgressionLastElement_2(start, end, step) { - if (step.toNumber() > 0) { - return ulongCompare(start.data, end.data) >= 0 ? end : new ULong(end.data.subtract(differenceModulo_2(end, start, new ULong(step)).data)); - } - else if (step.toNumber() < 0) { - return ulongCompare(start.data, end.data) <= 0 ? end : new ULong(end.data.add(differenceModulo_2(start, end, new ULong(step.unaryMinus())).data)); - } - else - throw IllegalArgumentException_init_0('Step is zero.'); - } - function UShort(data) { - UShort$Companion_getInstance(); - this.data = data; - } - function UShort$Companion() { - UShort$Companion_instance = this; - this.MIN_VALUE = new UShort(0); - this.MAX_VALUE = new UShort(-1 | 0); - this.SIZE_BYTES = 2; - this.SIZE_BITS = 16; - } - UShort$Companion.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Companion', interfaces: []}; - var UShort$Companion_instance = null; - function UShort$Companion_getInstance() { - if (UShort$Companion_instance === null) { - new UShort$Companion(); - } - return UShort$Companion_instance; - } - UShort.prototype.compareTo_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.compareTo_mpmjao$', function (other) { - return Kotlin.primitiveCompareTo(this.data & 65535, other.data & 255); - }); - UShort.prototype.compareTo_11rb$ = defineInlineFunction('kotlin.kotlin.UShort.compareTo_11rb$', function (other) { - return Kotlin.primitiveCompareTo(this.data & 65535, other.data & 65535); - }); - UShort.prototype.compareTo_s87ys9$ = defineInlineFunction('kotlin.kotlin.UShort.compareTo_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintCompare = _.kotlin.uintCompare_vux9f0$; - return function (other) { - return uintCompare((new UInt_init(this.data & 65535)).data, other.data); - }; - })); - UShort.prototype.compareTo_mpgczg$ = defineInlineFunction('kotlin.kotlin.UShort.compareTo_mpgczg$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - var ulongCompare = _.kotlin.ulongCompare_3pjtqy$; - return function (other) { - return ulongCompare((new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535))).data, other.data); - }; - })); - UShort.prototype.plus_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.plus_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 65535)).data + (new UInt_init(other.data & 255)).data | 0); - }; - })); - UShort.prototype.plus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.plus_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 65535)).data + (new UInt_init(other.data & 65535)).data | 0); - }; - })); - UShort.prototype.plus_s87ys9$ = defineInlineFunction('kotlin.kotlin.UShort.plus_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 65535)).data + other.data | 0); - }; - })); - UShort.prototype.plus_mpgczg$ = defineInlineFunction('kotlin.kotlin.UShort.plus_mpgczg$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535))).data.add(other.data)); - }; - })); - UShort.prototype.minus_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.minus_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 65535)).data - (new UInt_init(other.data & 255)).data | 0); - }; - })); - UShort.prototype.minus_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.minus_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 65535)).data - (new UInt_init(other.data & 65535)).data | 0); - }; - })); - UShort.prototype.minus_s87ys9$ = defineInlineFunction('kotlin.kotlin.UShort.minus_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init((new UInt_init(this.data & 65535)).data - other.data | 0); - }; - })); - UShort.prototype.minus_mpgczg$ = defineInlineFunction('kotlin.kotlin.UShort.minus_mpgczg$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535))).data.subtract(other.data)); - }; - })); - UShort.prototype.times_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.times_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul((new UInt_init(this.data & 65535)).data, (new UInt_init(other.data & 255)).data)); - }; - })); - UShort.prototype.times_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.times_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul((new UInt_init(this.data & 65535)).data, (new UInt_init(other.data & 65535)).data)); - }; - })); - UShort.prototype.times_s87ys9$ = defineInlineFunction('kotlin.kotlin.UShort.times_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UInt_init(Kotlin.imul((new UInt_init(this.data & 65535)).data, other.data)); - }; - })); - UShort.prototype.times_mpgczg$ = defineInlineFunction('kotlin.kotlin.UShort.times_mpgczg$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function (other) { - return new ULong_init((new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535))).data.multiply(other.data)); - }; - })); - UShort.prototype.div_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.div_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(new UInt_init(this.data & 65535), new UInt_init(other.data & 255)); - }; - })); - UShort.prototype.div_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.div_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(new UInt_init(this.data & 65535), new UInt_init(other.data & 65535)); - }; - })); - UShort.prototype.div_s87ys9$ = defineInlineFunction('kotlin.kotlin.UShort.div_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintDivide = _.kotlin.uintDivide_oqfnby$; - return function (other) { - return uintDivide(new UInt_init(this.data & 65535), other); - }; - })); - UShort.prototype.div_mpgczg$ = defineInlineFunction('kotlin.kotlin.UShort.div_mpgczg$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - var ulongDivide = _.kotlin.ulongDivide_jpm79w$; - return function (other) { - return ulongDivide(new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535)), other); - }; - })); - UShort.prototype.rem_mpmjao$ = defineInlineFunction('kotlin.kotlin.UShort.rem_mpmjao$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(new UInt_init(this.data & 65535), new UInt_init(other.data & 255)); - }; - })); - UShort.prototype.rem_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.rem_6hrhkk$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(new UInt_init(this.data & 65535), new UInt_init(other.data & 65535)); - }; - })); - UShort.prototype.rem_s87ys9$ = defineInlineFunction('kotlin.kotlin.UShort.rem_s87ys9$', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - var uintRemainder = _.kotlin.uintRemainder_oqfnby$; - return function (other) { - return uintRemainder(new UInt_init(this.data & 65535), other); - }; - })); - UShort.prototype.rem_mpgczg$ = defineInlineFunction('kotlin.kotlin.UShort.rem_mpgczg$', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - var ulongRemainder = _.kotlin.ulongRemainder_jpm79w$; - return function (other) { - return ulongRemainder(new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535)), other); - }; - })); - UShort.prototype.inc = defineInlineFunction('kotlin.kotlin.UShort.inc', wrapFunction(function () { - var toShort = Kotlin.toShort; - var UShort_init = _.kotlin.UShort; - return function () { - return new UShort_init(toShort(this.data + 1)); - }; - })); - UShort.prototype.dec = defineInlineFunction('kotlin.kotlin.UShort.dec', wrapFunction(function () { - var toShort = Kotlin.toShort; - var UShort_init = _.kotlin.UShort; - return function () { - return new UShort_init(toShort(this.data - 1)); - }; - })); - UShort.prototype.rangeTo_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.rangeTo_6hrhkk$', wrapFunction(function () { - var UIntRange_init = _.kotlin.ranges.UIntRange; - var UInt_init = _.kotlin.UInt; - return function (other) { - return new UIntRange_init(new UInt_init(this.data & 65535), new UInt_init(other.data & 65535)); - }; - })); - UShort.prototype.and_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.and_6hrhkk$', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - var toShort = Kotlin.toShort; - return function (other) { - return new UShort_init(toShort(this.data & other.data)); - }; - })); - UShort.prototype.or_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.or_6hrhkk$', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - var toShort = Kotlin.toShort; - return function (other) { - return new UShort_init(toShort(this.data | other.data)); - }; - })); - UShort.prototype.xor_6hrhkk$ = defineInlineFunction('kotlin.kotlin.UShort.xor_6hrhkk$', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - var toShort = Kotlin.toShort; - return function (other) { - return new UShort_init(toShort(this.data ^ other.data)); - }; - })); - UShort.prototype.inv = defineInlineFunction('kotlin.kotlin.UShort.inv', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - var toShort = Kotlin.toShort; - return function () { - return new UShort_init(toShort(~this.data)); - }; - })); - UShort.prototype.toByte = defineInlineFunction('kotlin.kotlin.UShort.toByte', wrapFunction(function () { - var toByte = Kotlin.toByte; - return function () { - return toByte(this.data); - }; - })); - UShort.prototype.toShort = defineInlineFunction('kotlin.kotlin.UShort.toShort', function () { - return this.data; - }); - UShort.prototype.toInt = defineInlineFunction('kotlin.kotlin.UShort.toInt', function () { - return this.data & 65535; - }); - UShort.prototype.toLong = defineInlineFunction('kotlin.kotlin.UShort.toLong', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - return function () { - return Kotlin.Long.fromInt(this.data).and(L65535); - }; - })); - UShort.prototype.toUByte = defineInlineFunction('kotlin.kotlin.UShort.toUByte', wrapFunction(function () { - var toByte = Kotlin.toByte; - var UByte_init = _.kotlin.UByte; - return function () { - return new UByte_init(toByte(this.data)); - }; - })); - UShort.prototype.toUShort = defineInlineFunction('kotlin.kotlin.UShort.toUShort', function () { - return this; - }); - UShort.prototype.toUInt = defineInlineFunction('kotlin.kotlin.UShort.toUInt', wrapFunction(function () { - var UInt_init = _.kotlin.UInt; - return function () { - return new UInt_init(this.data & 65535); - }; - })); - UShort.prototype.toULong = defineInlineFunction('kotlin.kotlin.UShort.toULong', wrapFunction(function () { - var L65535 = Kotlin.Long.fromInt(65535); - var ULong_init = _.kotlin.ULong; - return function () { - return new ULong_init(Kotlin.Long.fromInt(this.data).and(L65535)); - }; - })); - UShort.prototype.toString = function () { - return (this.data & 65535).toString(); - }; - UShort.$metadata$ = {kind: Kind_CLASS, simpleName: 'UShort', interfaces: [Comparable]}; - UShort.prototype.unbox = function () { - return this.data; - }; - UShort.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.data) | 0; - return result; - }; - UShort.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.data, other.data)))); - }; - var toUShort = defineInlineFunction('kotlin.kotlin.toUShort_mz3mee$', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - return function ($receiver) { - return new UShort_init($receiver); - }; - })); - var toUShort_0 = defineInlineFunction('kotlin.kotlin.toUShort_5vcgdc$', wrapFunction(function () { - var UShort_init = _.kotlin.UShort; - return function ($receiver) { - return new UShort_init($receiver); - }; - })); - var toUShort_1 = defineInlineFunction('kotlin.kotlin.toUShort_s8ev3n$', wrapFunction(function () { - var toShort = Kotlin.toShort; - var UShort_init = _.kotlin.UShort; - return function ($receiver) { - return new UShort_init(toShort($receiver)); - }; - })); - var toUShort_2 = defineInlineFunction('kotlin.kotlin.toUShort_mts6qi$', wrapFunction(function () { - var toShort = Kotlin.toShort; - var UShort_init = _.kotlin.UShort; - return function ($receiver) { - return new UShort_init(toShort($receiver.toInt())); - }; - })); - function UShortArray(storage) { - this.storage = storage; - } - UShortArray.prototype.get_za3lpa$ = function (index) { - return new UShort(this.storage[index]); - }; - UShortArray.prototype.set_1pe3u2$ = function (index, value) { - this.storage[index] = value.data; - }; - Object.defineProperty(UShortArray.prototype, 'size', {get: function () { - return this.storage.length; - }}); - UShortArray.prototype.iterator = function () { - return new UShortArray$Iterator(this.storage); - }; - function UShortArray$Iterator(array) { - UShortIterator.call(this); - this.array_0 = array; - this.index_0 = 0; - } - UShortArray$Iterator.prototype.hasNext = function () { - return this.index_0 < this.array_0.length; - }; - UShortArray$Iterator.prototype.nextUShort = function () { - var tmp$; - if (this.index_0 < this.array_0.length) { - return new UShort(this.array_0[tmp$ = this.index_0, this.index_0 = tmp$ + 1 | 0, tmp$]); - } - else - throw new NoSuchElementException(this.index_0.toString()); - }; - UShortArray$Iterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'Iterator', interfaces: [UShortIterator]}; - UShortArray.prototype.contains_11rb$ = function (element) { - return contains_1(this.storage, element.data); - }; - UShortArray.prototype.containsAll_brywnq$ = function (elements) { - var all$result; - all$break: do { - var tmp$; - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) { - all$result = true; - break all$break; - } - tmp$ = elements.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - if (!contains_1(this.storage, element.data)) { - all$result = false; - break all$break; - } - } - all$result = true; - } - while (false); - return all$result; - }; - UShortArray.prototype.isEmpty = function () { - return this.storage.length === 0; - }; - UShortArray.$metadata$ = {kind: Kind_CLASS, simpleName: 'UShortArray', interfaces: [Collection]}; - function UShortArray_init(size, $this) { - $this = $this || Object.create(UShortArray.prototype); - UShortArray.call($this, new Int16Array(size)); - return $this; - } - UShortArray.prototype.unbox = function () { - return this.storage; - }; - UShortArray.prototype.toString = function () { - return 'UShortArray(storage=' + Kotlin.toString(this.storage) + ')'; - }; - UShortArray.prototype.hashCode = function () { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.storage) | 0; - return result; - }; - UShortArray.prototype.equals = function (other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.storage, other.storage)))); - }; - var UShortArray_0 = defineInlineFunction('kotlin.kotlin.UShortArray_hj0epe$', wrapFunction(function () { - var UShortArray_init = _.kotlin.UShortArray; - function UShortArray$lambda(closure$init) { - return function (index) { - return closure$init(index).data; - }; - } - return function (size, init) { - return new UShortArray_init(Kotlin.fillArray(new Int16Array(size), UShortArray$lambda(init))); - }; - })); - var ushortArrayOf = defineInlineFunction('kotlin.kotlin.ushortArrayOf_golzdd$', function (elements) { - return elements; - }); - function toString_4($receiver, radix) { - return toString_3($receiver.data & 255, radix); - } - function toString_5($receiver, radix) { - return toString_3($receiver.data & 65535, radix); - } - function toString_6($receiver, radix) { - return toString_2(Kotlin.Long.fromInt($receiver.data).and(L4294967295), radix); - } - function toString_7($receiver, radix) { - return ulongToString_0($receiver.data, checkRadix(radix)); - } - function toUByte_3($receiver) { - var tmp$; - return (tmp$ = toUByteOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toUByte_4($receiver, radix) { - var tmp$; - return (tmp$ = toUByteOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toUShort_3($receiver) { - var tmp$; - return (tmp$ = toUShortOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toUShort_4($receiver, radix) { - var tmp$; - return (tmp$ = toUShortOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toUInt_3($receiver) { - var tmp$; - return (tmp$ = toUIntOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toUInt_4($receiver, radix) { - var tmp$; - return (tmp$ = toUIntOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toULong_3($receiver) { - var tmp$; - return (tmp$ = toULongOrNull($receiver)) != null ? tmp$ : numberFormatError($receiver); - } - function toULong_4($receiver, radix) { - var tmp$; - return (tmp$ = toULongOrNull_0($receiver, radix)) != null ? tmp$ : numberFormatError($receiver); - } - function toUByteOrNull($receiver) { - return toUByteOrNull_0($receiver, 10); - } - function toUByteOrNull_0($receiver, radix) { - var tmp$; - tmp$ = toUIntOrNull_0($receiver, radix); - if (tmp$ == null) { - return null; - } - var int = tmp$; - if (uintCompare(int.data, (new UInt(UByte$Companion_getInstance().MAX_VALUE.data & 255)).data) > 0) - return null; - return new UByte(toByte(int.data)); - } - function toUShortOrNull($receiver) { - return toUShortOrNull_0($receiver, 10); - } - function toUShortOrNull_0($receiver, radix) { - var tmp$; - tmp$ = toUIntOrNull_0($receiver, radix); - if (tmp$ == null) { - return null; - } - var int = tmp$; - if (uintCompare(int.data, (new UInt(UShort$Companion_getInstance().MAX_VALUE.data & 65535)).data) > 0) - return null; - return new UShort(toShort(int.data)); - } - function toUIntOrNull($receiver) { - return toUIntOrNull_0($receiver, 10); - } - function toUIntOrNull_0($receiver, radix) { - checkRadix(radix); - var length = $receiver.length; - if (length === 0) - return null; - var limit = UInt$Companion_getInstance().MAX_VALUE; - var start; - var firstChar = $receiver.charCodeAt(0); - if (firstChar < 48) { - if (length === 1 || firstChar !== 43) - return null; - start = 1; - } - else { - start = 0; - } - var uradix = new UInt(radix); - var limitBeforeMul = uintDivide(limit, uradix); - var result = new UInt(0); - for (var i = start; i < length; i++) { - var digit = digitOf($receiver.charCodeAt(i), radix); - if (digit < 0) - return null; - if (uintCompare(result.data, limitBeforeMul.data) > 0) - return null; - result = new UInt(Kotlin.imul(result.data, uradix.data)); - var beforeAdding = result; - result = new UInt(result.data + (new UInt(digit)).data | 0); - if (uintCompare(result.data, beforeAdding.data) < 0) - return null; - } - return result; - } - function toULongOrNull($receiver) { - return toULongOrNull_0($receiver, 10); - } - function toULongOrNull_0($receiver, radix) { - checkRadix(radix); - var length = $receiver.length; - if (length === 0) - return null; - var limit = ULong$Companion_getInstance().MAX_VALUE; - var start; - var firstChar = $receiver.charCodeAt(0); - if (firstChar < 48) { - if (length === 1 || firstChar !== 43) - return null; - start = 1; - } - else { - start = 0; - } - var uradix = new UInt(radix); - var limitBeforeMul = ulongDivide(limit, new ULong(Kotlin.Long.fromInt(uradix.data).and(L4294967295))); - var result = new ULong(Kotlin.Long.ZERO); - for (var i = start; i < length; i++) { - var digit = digitOf($receiver.charCodeAt(i), radix); - if (digit < 0) - return null; - if (ulongCompare(result.data, limitBeforeMul.data) > 0) - return null; - result = new ULong(result.data.multiply((new ULong(Kotlin.Long.fromInt(uradix.data).and(L4294967295))).data)); - var beforeAdding = result; - result = new ULong(result.data.add((new ULong(Kotlin.Long.fromInt((new UInt(digit)).data).and(L4294967295))).data)); - if (ulongCompare(result.data, beforeAdding.data) < 0) - return null; - } - return result; - } - function uintCompare(v1, v2) { - return Kotlin.primitiveCompareTo(v1 ^ -2147483648, v2 ^ -2147483648); - } - function ulongCompare(v1, v2) { - return v1.xor(Long$Companion$MIN_VALUE).compareTo_11rb$(v2.xor(Long$Companion$MIN_VALUE)); - } - function uintDivide(v1, v2) { - return new UInt(Kotlin.Long.fromInt(v1.data).and(L4294967295).div(Kotlin.Long.fromInt(v2.data).and(L4294967295)).toInt()); - } - function uintRemainder(v1, v2) { - return new UInt(Kotlin.Long.fromInt(v1.data).and(L4294967295).modulo(Kotlin.Long.fromInt(v2.data).and(L4294967295)).toInt()); - } - function ulongDivide(v1, v2) { - var dividend = v1.data; - var divisor = v2.data; - if (divisor.toNumber() < 0) { - return ulongCompare(v1.data, v2.data) < 0 ? new ULong(L0) : new ULong(L1); - } - if (dividend.toNumber() >= 0) { - return new ULong(dividend.div(divisor)); - } - var quotient = dividend.shiftRightUnsigned(1).div(divisor).shiftLeft(1); - var rem = dividend.subtract(quotient.multiply(divisor)); - return new ULong(quotient.add(Kotlin.Long.fromInt(ulongCompare((new ULong(rem)).data, (new ULong(divisor)).data) >= 0 ? 1 : 0))); - } - function ulongRemainder(v1, v2) { - var tmp$; - var dividend = v1.data; - var divisor = v2.data; - if (divisor.toNumber() < 0) { - if (ulongCompare(v1.data, v2.data) < 0) { - tmp$ = v1; - } - else { - tmp$ = new ULong(v1.data.subtract(v2.data)); - } - return tmp$; - } - if (dividend.toNumber() >= 0) { - return new ULong(dividend.modulo(divisor)); - } - var quotient = dividend.shiftRightUnsigned(1).div(divisor).shiftLeft(1); - var rem = dividend.subtract(quotient.multiply(divisor)); - return new ULong(rem.subtract(ulongCompare((new ULong(rem)).data, (new ULong(divisor)).data) >= 0 ? divisor : L0)); - } - function ulongToString(v) { - return ulongToString_0(v, 10); - } - function ulongToString_0(v, base) { - if (v.toNumber() >= 0) - return toString_2(v, base); - var quotient = v.shiftRightUnsigned(1).div(Kotlin.Long.fromInt(base)).shiftLeft(1); - var rem = v.subtract(quotient.multiply(Kotlin.Long.fromInt(base))); - if (rem.toNumber() >= base) { - rem = rem.subtract(Kotlin.Long.fromInt(base)); - quotient = quotient.add(Kotlin.Long.fromInt(1)); - } - return toString_2(quotient, base) + toString_2(rem, base); - } - function ExperimentalUnsignedTypes() { - } - ExperimentalUnsignedTypes.$metadata$ = {kind: Kind_CLASS, simpleName: 'ExperimentalUnsignedTypes', interfaces: [Annotation]}; - var package$kotlin = _.kotlin || (_.kotlin = {}); - var package$collections = package$kotlin.collections || (package$kotlin.collections = {}); - package$collections.contains_mjy6jw$ = contains; - package$collections.contains_jlnu8a$ = contains_0; - package$collections.contains_s7ir3o$ = contains_1; - package$collections.contains_c03ot6$ = contains_2; - package$collections.contains_uxdaoa$ = contains_3; - package$collections.contains_omthmc$ = contains_4; - package$collections.contains_taaqy$ = contains_5; - package$collections.contains_yax8s4$ = contains_6; - package$collections.contains_o2f9me$ = contains_7; - package$collections.get_lastIndex_m7z4lg$ = get_lastIndex; - package$collections.get_lastIndex_964n91$ = get_lastIndex_0; - package$collections.get_lastIndex_i2lc79$ = get_lastIndex_1; - package$collections.get_lastIndex_tmsbgo$ = get_lastIndex_2; - package$collections.get_lastIndex_se6h4x$ = get_lastIndex_3; - package$collections.get_lastIndex_rjqryz$ = get_lastIndex_4; - package$collections.get_lastIndex_bvy38s$ = get_lastIndex_5; - package$collections.get_lastIndex_l1lu5t$ = get_lastIndex_6; - package$collections.get_lastIndex_355ntz$ = get_lastIndex_7; - package$collections.getOrNull_8ujjk8$ = getOrNull; - package$collections.getOrNull_mrm5p$ = getOrNull_0; - package$collections.getOrNull_m2jy6x$ = getOrNull_1; - package$collections.getOrNull_c03ot6$ = getOrNull_2; - package$collections.getOrNull_3aefkx$ = getOrNull_3; - package$collections.getOrNull_rblqex$ = getOrNull_4; - package$collections.getOrNull_xgrzbe$ = getOrNull_5; - package$collections.getOrNull_1qu12l$ = getOrNull_6; - package$collections.getOrNull_gtcw5h$ = getOrNull_7; - package$collections.firstOrNull_sfx99b$ = firstOrNull_8; - package$collections.firstOrNull_c3i447$ = firstOrNull_9; - package$collections.firstOrNull_247xw3$ = firstOrNull_10; - package$collections.firstOrNull_il4kyb$ = firstOrNull_11; - package$collections.firstOrNull_i1oc7r$ = firstOrNull_12; - package$collections.firstOrNull_u4nq1f$ = firstOrNull_13; - package$collections.firstOrNull_3vq27r$ = firstOrNull_14; - package$collections.firstOrNull_xffwn9$ = firstOrNull_15; - package$collections.firstOrNull_3ji0pj$ = firstOrNull_16; - package$collections.lastOrNull_sfx99b$ = lastOrNull_8; - package$collections.lastOrNull_c3i447$ = lastOrNull_9; - package$collections.lastOrNull_247xw3$ = lastOrNull_10; - package$collections.lastOrNull_il4kyb$ = lastOrNull_11; - package$collections.lastOrNull_i1oc7r$ = lastOrNull_12; - package$collections.lastOrNull_u4nq1f$ = lastOrNull_13; - package$collections.lastOrNull_3vq27r$ = lastOrNull_14; - package$collections.lastOrNull_xffwn9$ = lastOrNull_15; - package$collections.lastOrNull_3ji0pj$ = lastOrNull_16; - package$collections.first_us0mfu$ = first; - package$collections.first_964n91$ = first_0; - package$collections.first_i2lc79$ = first_1; - package$collections.first_tmsbgo$ = first_2; - package$collections.first_se6h4x$ = first_3; - package$collections.first_rjqryz$ = first_4; - package$collections.first_bvy38s$ = first_5; - package$collections.first_l1lu5t$ = first_6; - package$collections.first_355ntz$ = first_7; - package$collections.first_sfx99b$ = first_8; - package$collections.first_c3i447$ = first_9; - package$collections.first_247xw3$ = first_10; - package$collections.first_il4kyb$ = first_11; - package$collections.first_i1oc7r$ = first_12; - package$collections.first_u4nq1f$ = first_13; - package$collections.first_3vq27r$ = first_14; - package$collections.first_xffwn9$ = first_15; - package$collections.first_3ji0pj$ = first_16; - package$collections.firstOrNull_us0mfu$ = firstOrNull; - package$collections.firstOrNull_964n91$ = firstOrNull_0; - package$collections.firstOrNull_i2lc79$ = firstOrNull_1; - package$collections.firstOrNull_tmsbgo$ = firstOrNull_2; - package$collections.firstOrNull_se6h4x$ = firstOrNull_3; - package$collections.firstOrNull_rjqryz$ = firstOrNull_4; - package$collections.firstOrNull_bvy38s$ = firstOrNull_5; - package$collections.firstOrNull_l1lu5t$ = firstOrNull_6; - package$collections.firstOrNull_355ntz$ = firstOrNull_7; - package$collections.indexOf_mjy6jw$ = indexOf; - package$collections.indexOf_jlnu8a$ = indexOf_0; - package$collections.indexOf_s7ir3o$ = indexOf_1; - package$collections.indexOf_c03ot6$ = indexOf_2; - package$collections.indexOf_uxdaoa$ = indexOf_3; - package$collections.indexOf_omthmc$ = indexOf_4; - package$collections.indexOf_taaqy$ = indexOf_5; - package$collections.indexOf_yax8s4$ = indexOf_6; - package$collections.indexOf_o2f9me$ = indexOf_7; - package$collections.indexOfFirst_sfx99b$ = indexOfFirst; - package$collections.indexOfFirst_c3i447$ = indexOfFirst_0; - package$collections.indexOfFirst_247xw3$ = indexOfFirst_1; - package$collections.indexOfFirst_il4kyb$ = indexOfFirst_2; - package$collections.indexOfFirst_i1oc7r$ = indexOfFirst_3; - package$collections.indexOfFirst_u4nq1f$ = indexOfFirst_4; - package$collections.indexOfFirst_3vq27r$ = indexOfFirst_5; - package$collections.indexOfFirst_xffwn9$ = indexOfFirst_6; - package$collections.indexOfFirst_3ji0pj$ = indexOfFirst_7; - package$collections.get_indices_m7z4lg$ = get_indices; - package$collections.reversed_7wnvza$ = reversed_8; - package$collections.indexOfLast_sfx99b$ = indexOfLast; - package$collections.get_indices_964n91$ = get_indices_0; - package$collections.indexOfLast_c3i447$ = indexOfLast_0; - package$collections.get_indices_i2lc79$ = get_indices_1; - package$collections.indexOfLast_247xw3$ = indexOfLast_1; - package$collections.get_indices_tmsbgo$ = get_indices_2; - package$collections.indexOfLast_il4kyb$ = indexOfLast_2; - package$collections.get_indices_se6h4x$ = get_indices_3; - package$collections.indexOfLast_i1oc7r$ = indexOfLast_3; - package$collections.get_indices_rjqryz$ = get_indices_4; - package$collections.indexOfLast_u4nq1f$ = indexOfLast_4; - package$collections.get_indices_bvy38s$ = get_indices_5; - package$collections.indexOfLast_3vq27r$ = indexOfLast_5; - package$collections.get_indices_l1lu5t$ = get_indices_6; - package$collections.indexOfLast_xffwn9$ = indexOfLast_6; - package$collections.get_indices_355ntz$ = get_indices_7; - package$collections.indexOfLast_3ji0pj$ = indexOfLast_7; - package$collections.last_us0mfu$ = last; - package$collections.last_964n91$ = last_0; - package$collections.last_i2lc79$ = last_1; - package$collections.last_tmsbgo$ = last_2; - package$collections.last_se6h4x$ = last_3; - package$collections.last_rjqryz$ = last_4; - package$collections.last_bvy38s$ = last_5; - package$collections.last_l1lu5t$ = last_6; - package$collections.last_355ntz$ = last_7; - package$collections.last_sfx99b$ = last_8; - package$collections.last_c3i447$ = last_9; - package$collections.last_247xw3$ = last_10; - package$collections.last_il4kyb$ = last_11; - package$collections.last_i1oc7r$ = last_12; - package$collections.last_u4nq1f$ = last_13; - package$collections.last_3vq27r$ = last_14; - package$collections.last_xffwn9$ = last_15; - package$collections.last_3ji0pj$ = last_16; - package$collections.lastIndexOf_mjy6jw$ = lastIndexOf; - package$collections.lastIndexOf_jlnu8a$ = lastIndexOf_0; - package$collections.lastIndexOf_s7ir3o$ = lastIndexOf_1; - package$collections.lastIndexOf_c03ot6$ = lastIndexOf_2; - package$collections.lastIndexOf_uxdaoa$ = lastIndexOf_3; - package$collections.lastIndexOf_omthmc$ = lastIndexOf_4; - package$collections.lastIndexOf_taaqy$ = lastIndexOf_5; - package$collections.lastIndexOf_yax8s4$ = lastIndexOf_6; - package$collections.lastIndexOf_o2f9me$ = lastIndexOf_7; - package$collections.lastOrNull_us0mfu$ = lastOrNull; - package$collections.lastOrNull_964n91$ = lastOrNull_0; - package$collections.lastOrNull_i2lc79$ = lastOrNull_1; - package$collections.lastOrNull_tmsbgo$ = lastOrNull_2; - package$collections.lastOrNull_se6h4x$ = lastOrNull_3; - package$collections.lastOrNull_rjqryz$ = lastOrNull_4; - package$collections.lastOrNull_bvy38s$ = lastOrNull_5; - package$collections.lastOrNull_l1lu5t$ = lastOrNull_6; - package$collections.lastOrNull_355ntz$ = lastOrNull_7; - var package$random = package$kotlin.random || (package$kotlin.random = {}); - package$random.Random = Random; - package$collections.random_lj338n$ = random_8; - package$collections.random_ciead0$ = random_9; - package$collections.random_wayomy$ = random_10; - package$collections.random_os0q87$ = random_11; - package$collections.random_2uk8lc$ = random_12; - package$collections.random_zcvl96$ = random_13; - package$collections.random_k31a39$ = random_14; - package$collections.random_mwcbea$ = random_15; - package$collections.random_8kgqmy$ = random_16; - package$collections.single_us0mfu$ = single; - package$collections.single_964n91$ = single_0; - package$collections.single_i2lc79$ = single_1; - package$collections.single_tmsbgo$ = single_2; - package$collections.single_se6h4x$ = single_3; - package$collections.single_rjqryz$ = single_4; - package$collections.single_bvy38s$ = single_5; - package$collections.single_l1lu5t$ = single_6; - package$collections.single_355ntz$ = single_7; - package$kotlin.IllegalArgumentException_init_pdl1vj$ = IllegalArgumentException_init_0; - package$collections.single_sfx99b$ = single_8; - package$collections.single_c3i447$ = single_9; - package$collections.single_247xw3$ = single_10; - package$collections.single_il4kyb$ = single_11; - package$collections.single_i1oc7r$ = single_12; - package$collections.single_u4nq1f$ = single_13; - package$collections.single_3vq27r$ = single_14; - package$collections.single_xffwn9$ = single_15; - package$collections.single_3ji0pj$ = single_16; - package$collections.singleOrNull_us0mfu$ = singleOrNull; - package$collections.singleOrNull_964n91$ = singleOrNull_0; - package$collections.singleOrNull_i2lc79$ = singleOrNull_1; - package$collections.singleOrNull_tmsbgo$ = singleOrNull_2; - package$collections.singleOrNull_se6h4x$ = singleOrNull_3; - package$collections.singleOrNull_rjqryz$ = singleOrNull_4; - package$collections.singleOrNull_bvy38s$ = singleOrNull_5; - package$collections.singleOrNull_l1lu5t$ = singleOrNull_6; - package$collections.singleOrNull_355ntz$ = singleOrNull_7; - package$collections.singleOrNull_sfx99b$ = singleOrNull_8; - package$collections.singleOrNull_c3i447$ = singleOrNull_9; - package$collections.singleOrNull_247xw3$ = singleOrNull_10; - package$collections.singleOrNull_il4kyb$ = singleOrNull_11; - package$collections.singleOrNull_i1oc7r$ = singleOrNull_12; - package$collections.singleOrNull_u4nq1f$ = singleOrNull_13; - package$collections.singleOrNull_3vq27r$ = singleOrNull_14; - package$collections.singleOrNull_xffwn9$ = singleOrNull_15; - package$collections.singleOrNull_3ji0pj$ = singleOrNull_16; - package$collections.drop_8ujjk8$ = drop; - package$collections.drop_mrm5p$ = drop_0; - package$collections.drop_m2jy6x$ = drop_1; - package$collections.drop_c03ot6$ = drop_2; - package$collections.drop_3aefkx$ = drop_3; - package$collections.drop_rblqex$ = drop_4; - package$collections.drop_xgrzbe$ = drop_5; - package$collections.drop_1qu12l$ = drop_6; - package$collections.drop_gtcw5h$ = drop_7; - package$collections.dropLast_8ujjk8$ = dropLast; - package$collections.dropLast_mrm5p$ = dropLast_0; - package$collections.dropLast_m2jy6x$ = dropLast_1; - package$collections.dropLast_c03ot6$ = dropLast_2; - package$collections.dropLast_3aefkx$ = dropLast_3; - package$collections.dropLast_rblqex$ = dropLast_4; - package$collections.dropLast_xgrzbe$ = dropLast_5; - package$collections.dropLast_1qu12l$ = dropLast_6; - package$collections.dropLast_gtcw5h$ = dropLast_7; - package$collections.take_8ujjk8$ = take; - package$collections.emptyList_287e2$ = emptyList; - package$collections.dropLastWhile_sfx99b$ = dropLastWhile; - package$collections.take_mrm5p$ = take_0; - package$collections.dropLastWhile_c3i447$ = dropLastWhile_0; - package$collections.take_m2jy6x$ = take_1; - package$collections.dropLastWhile_247xw3$ = dropLastWhile_1; - package$collections.take_c03ot6$ = take_2; - package$collections.dropLastWhile_il4kyb$ = dropLastWhile_2; - package$collections.take_3aefkx$ = take_3; - package$collections.dropLastWhile_i1oc7r$ = dropLastWhile_3; - package$collections.take_rblqex$ = take_4; - package$collections.dropLastWhile_u4nq1f$ = dropLastWhile_4; - package$collections.take_xgrzbe$ = take_5; - package$collections.dropLastWhile_3vq27r$ = dropLastWhile_5; - package$collections.take_1qu12l$ = take_6; - package$collections.dropLastWhile_xffwn9$ = dropLastWhile_6; - package$collections.take_gtcw5h$ = take_7; - package$collections.dropLastWhile_3ji0pj$ = dropLastWhile_7; - package$collections.ArrayList_init_287e2$ = ArrayList_init; - package$collections.dropWhile_sfx99b$ = dropWhile; - package$collections.dropWhile_c3i447$ = dropWhile_0; - package$collections.dropWhile_247xw3$ = dropWhile_1; - package$collections.dropWhile_il4kyb$ = dropWhile_2; - package$collections.dropWhile_i1oc7r$ = dropWhile_3; - package$collections.dropWhile_u4nq1f$ = dropWhile_4; - package$collections.dropWhile_3vq27r$ = dropWhile_5; - package$collections.dropWhile_xffwn9$ = dropWhile_6; - package$collections.dropWhile_3ji0pj$ = dropWhile_7; - package$collections.filterTo_ywpv22$ = filterTo; - package$collections.filter_sfx99b$ = filter; - package$collections.filterTo_oqzfqb$ = filterTo_0; - package$collections.filter_c3i447$ = filter_0; - package$collections.filterTo_pth3ij$ = filterTo_1; - package$collections.filter_247xw3$ = filter_1; - package$collections.filterTo_fz4mzi$ = filterTo_2; - package$collections.filter_il4kyb$ = filter_2; - package$collections.filterTo_xddlih$ = filterTo_3; - package$collections.filter_i1oc7r$ = filter_3; - package$collections.filterTo_b4wiqz$ = filterTo_4; - package$collections.filter_u4nq1f$ = filter_4; - package$collections.filterTo_y6u45w$ = filterTo_5; - package$collections.filter_3vq27r$ = filter_5; - package$collections.filterTo_soq3qv$ = filterTo_6; - package$collections.filter_xffwn9$ = filter_6; - package$collections.filterTo_7as3in$ = filterTo_7; - package$collections.filter_3ji0pj$ = filter_7; - package$collections.filterIndexedTo_yy1162$ = filterIndexedTo; - package$collections.filterIndexed_1x1hc5$ = filterIndexed; - package$collections.filterIndexedTo_9utof$ = filterIndexedTo_0; - package$collections.filterIndexed_muebcr$ = filterIndexed_0; - package$collections.filterIndexedTo_9c7hyn$ = filterIndexedTo_1; - package$collections.filterIndexed_na3tu9$ = filterIndexed_1; - package$collections.filterIndexedTo_xxq4i$ = filterIndexedTo_2; - package$collections.filterIndexed_j54otz$ = filterIndexed_2; - package$collections.filterIndexedTo_sp77il$ = filterIndexedTo_3; - package$collections.filterIndexed_8y5rp7$ = filterIndexed_3; - package$collections.filterIndexedTo_1eenap$ = filterIndexedTo_4; - package$collections.filterIndexed_ngxnyp$ = filterIndexed_4; - package$collections.filterIndexedTo_a0ikl4$ = filterIndexedTo_5; - package$collections.filterIndexed_4abx9h$ = filterIndexed_5; - package$collections.filterIndexedTo_m16605$ = filterIndexedTo_6; - package$collections.filterIndexed_40mjvt$ = filterIndexed_6; - package$collections.filterIndexedTo_evsozx$ = filterIndexedTo_7; - package$collections.filterIndexed_es6ekl$ = filterIndexed_7; - package$collections.forEachIndexed_arhcu7$ = forEachIndexed; - package$collections.forEachIndexed_1b870r$ = forEachIndexed_0; - package$collections.forEachIndexed_2042pt$ = forEachIndexed_1; - package$collections.forEachIndexed_71hk2v$ = forEachIndexed_2; - package$collections.forEachIndexed_xp2l85$ = forEachIndexed_3; - package$collections.forEachIndexed_fd0uwv$ = forEachIndexed_4; - package$collections.forEachIndexed_fchhez$ = forEachIndexed_5; - package$collections.forEachIndexed_jzv3dz$ = forEachIndexed_6; - package$collections.forEachIndexed_u1r9l7$ = forEachIndexed_7; - package$collections.filterNotTo_ywpv22$ = filterNotTo; - package$collections.filterNot_sfx99b$ = filterNot; - package$collections.filterNotTo_oqzfqb$ = filterNotTo_0; - package$collections.filterNot_c3i447$ = filterNot_0; - package$collections.filterNotTo_pth3ij$ = filterNotTo_1; - package$collections.filterNot_247xw3$ = filterNot_1; - package$collections.filterNotTo_fz4mzi$ = filterNotTo_2; - package$collections.filterNot_il4kyb$ = filterNot_2; - package$collections.filterNotTo_xddlih$ = filterNotTo_3; - package$collections.filterNot_i1oc7r$ = filterNot_3; - package$collections.filterNotTo_b4wiqz$ = filterNotTo_4; - package$collections.filterNot_u4nq1f$ = filterNot_4; - package$collections.filterNotTo_y6u45w$ = filterNotTo_5; - package$collections.filterNot_3vq27r$ = filterNot_5; - package$collections.filterNotTo_soq3qv$ = filterNotTo_6; - package$collections.filterNot_xffwn9$ = filterNot_6; - package$collections.filterNotTo_7as3in$ = filterNotTo_7; - package$collections.filterNot_3ji0pj$ = filterNot_7; - package$collections.filterNotNull_emfgvx$ = filterNotNull; - package$collections.filterNotNullTo_hhiqfl$ = filterNotNullTo; - package$collections.slice_l0m14x$ = slice; - package$collections.slice_dww5cs$ = slice_0; - package$collections.slice_stgke$ = slice_1; - package$collections.slice_bo8l67$ = slice_2; - package$collections.slice_renlpk$ = slice_3; - package$collections.slice_l0yznm$ = slice_4; - package$collections.slice_eezeoj$ = slice_5; - package$collections.slice_99nmd2$ = slice_6; - package$collections.slice_bq4su$ = slice_7; - package$collections.slice_ojs19h$ = slice_8; - package$collections.slice_9qpjb4$ = slice_9; - package$collections.slice_uttdbu$ = slice_10; - package$collections.slice_e3izir$ = slice_11; - package$collections.slice_b97tkk$ = slice_12; - package$collections.slice_43gn6u$ = slice_13; - package$collections.slice_tsyzex$ = slice_14; - package$collections.slice_5rv4nu$ = slice_15; - package$collections.slice_f1e7g2$ = slice_16; - package$collections.sliceArray_fzrmze$ = sliceArray; - package$collections.sliceArray_c5a9lg$ = sliceArray_0; - package$collections.sliceArray_w9izwu$ = sliceArray_1; - package$collections.sliceArray_q1yphb$ = sliceArray_2; - package$collections.sliceArray_ofyxrs$ = sliceArray_3; - package$collections.sliceArray_3hmy1e$ = sliceArray_4; - package$collections.sliceArray_rv5q3n$ = sliceArray_5; - package$collections.sliceArray_ht9wl6$ = sliceArray_6; - package$collections.sliceArray_6pwjvi$ = sliceArray_7; - package$collections.sliceArray_8r7b3e$ = sliceArray_8; - package$collections.sliceArray_dww5cs$ = sliceArray_9; - package$collections.sliceArray_stgke$ = sliceArray_10; - package$collections.sliceArray_bo8l67$ = sliceArray_11; - package$collections.sliceArray_renlpk$ = sliceArray_12; - package$collections.sliceArray_l0yznm$ = sliceArray_13; - package$collections.sliceArray_eezeoj$ = sliceArray_14; - package$collections.sliceArray_99nmd2$ = sliceArray_15; - package$collections.sliceArray_bq4su$ = sliceArray_16; - package$collections.takeLast_8ujjk8$ = takeLast; - package$collections.takeLast_mrm5p$ = takeLast_0; - package$collections.takeLast_m2jy6x$ = takeLast_1; - package$collections.takeLast_c03ot6$ = takeLast_2; - package$collections.takeLast_3aefkx$ = takeLast_3; - package$collections.takeLast_rblqex$ = takeLast_4; - package$collections.takeLast_xgrzbe$ = takeLast_5; - package$collections.takeLast_1qu12l$ = takeLast_6; - package$collections.takeLast_gtcw5h$ = takeLast_7; - package$collections.toList_us0mfu$ = toList; - package$collections.takeLastWhile_sfx99b$ = takeLastWhile; - package$collections.toList_964n91$ = toList_0; - package$collections.takeLastWhile_c3i447$ = takeLastWhile_0; - package$collections.toList_i2lc79$ = toList_1; - package$collections.takeLastWhile_247xw3$ = takeLastWhile_1; - package$collections.toList_tmsbgo$ = toList_2; - package$collections.takeLastWhile_il4kyb$ = takeLastWhile_2; - package$collections.toList_se6h4x$ = toList_3; - package$collections.takeLastWhile_i1oc7r$ = takeLastWhile_3; - package$collections.toList_rjqryz$ = toList_4; - package$collections.takeLastWhile_u4nq1f$ = takeLastWhile_4; - package$collections.toList_bvy38s$ = toList_5; - package$collections.takeLastWhile_3vq27r$ = takeLastWhile_5; - package$collections.toList_l1lu5t$ = toList_6; - package$collections.takeLastWhile_xffwn9$ = takeLastWhile_6; - package$collections.toList_355ntz$ = toList_7; - package$collections.takeLastWhile_3ji0pj$ = takeLastWhile_7; - package$collections.takeWhile_sfx99b$ = takeWhile; - package$collections.takeWhile_c3i447$ = takeWhile_0; - package$collections.takeWhile_247xw3$ = takeWhile_1; - package$collections.takeWhile_il4kyb$ = takeWhile_2; - package$collections.takeWhile_i1oc7r$ = takeWhile_3; - package$collections.takeWhile_u4nq1f$ = takeWhile_4; - package$collections.takeWhile_3vq27r$ = takeWhile_5; - package$collections.takeWhile_xffwn9$ = takeWhile_6; - package$collections.takeWhile_3ji0pj$ = takeWhile_7; - package$collections.reverse_4b5429$ = reverse; - package$collections.reverse_964n91$ = reverse_0; - package$collections.reverse_i2lc79$ = reverse_1; - package$collections.reverse_tmsbgo$ = reverse_2; - package$collections.reverse_se6h4x$ = reverse_3; - package$collections.reverse_rjqryz$ = reverse_4; - package$collections.reverse_bvy38s$ = reverse_5; - package$collections.reverse_l1lu5t$ = reverse_6; - package$collections.reverse_355ntz$ = reverse_7; - package$collections.reversed_us0mfu$ = reversed; - package$collections.reversed_964n91$ = reversed_0; - package$collections.reversed_i2lc79$ = reversed_1; - package$collections.reversed_tmsbgo$ = reversed_2; - package$collections.reversed_se6h4x$ = reversed_3; - package$collections.reversed_rjqryz$ = reversed_4; - package$collections.reversed_bvy38s$ = reversed_5; - package$collections.reversed_l1lu5t$ = reversed_6; - package$collections.reversed_355ntz$ = reversed_7; - package$collections.reversedArray_4b5429$ = reversedArray; - package$collections.reversedArray_964n91$ = reversedArray_0; - package$collections.reversedArray_i2lc79$ = reversedArray_1; - package$collections.reversedArray_tmsbgo$ = reversedArray_2; - package$collections.reversedArray_se6h4x$ = reversedArray_3; - package$collections.reversedArray_rjqryz$ = reversedArray_4; - package$collections.reversedArray_bvy38s$ = reversedArray_5; - package$collections.reversedArray_l1lu5t$ = reversedArray_6; - package$collections.reversedArray_355ntz$ = reversedArray_7; - package$collections.sortWith_iwcb0m$ = sortWith; - package$collections.sortBy_99hh6x$ = sortBy; - package$collections.sortByDescending_99hh6x$ = sortByDescending; - package$collections.sortDescending_pbinho$ = sortDescending; - package$collections.sortDescending_964n91$ = sortDescending_0; - package$collections.sortDescending_i2lc79$ = sortDescending_1; - package$collections.sortDescending_tmsbgo$ = sortDescending_2; - package$collections.sortDescending_se6h4x$ = sortDescending_3; - package$collections.sortDescending_rjqryz$ = sortDescending_4; - package$collections.sortDescending_bvy38s$ = sortDescending_5; - package$collections.sortDescending_355ntz$ = sortDescending_6; - package$collections.sorted_pbinho$ = sorted; - package$collections.sorted_964n91$ = sorted_0; - package$collections.sorted_i2lc79$ = sorted_1; - package$collections.sorted_tmsbgo$ = sorted_2; - package$collections.sorted_se6h4x$ = sorted_3; - package$collections.sorted_rjqryz$ = sorted_4; - package$collections.sorted_bvy38s$ = sorted_5; - package$collections.sorted_355ntz$ = sorted_6; - package$collections.sortedArray_j2hqw1$ = sortedArray; - package$collections.sortedArray_964n91$ = sortedArray_0; - package$collections.sortedArray_i2lc79$ = sortedArray_1; - package$collections.sortedArray_tmsbgo$ = sortedArray_2; - package$collections.sortedArray_se6h4x$ = sortedArray_3; - package$collections.sortedArray_rjqryz$ = sortedArray_4; - package$collections.sortedArray_bvy38s$ = sortedArray_5; - package$collections.sortedArray_355ntz$ = sortedArray_6; - package$collections.sortedArrayDescending_j2hqw1$ = sortedArrayDescending; - package$collections.sortedArrayDescending_964n91$ = sortedArrayDescending_0; - package$collections.sortedArrayDescending_i2lc79$ = sortedArrayDescending_1; - package$collections.sortedArrayDescending_tmsbgo$ = sortedArrayDescending_2; - package$collections.sortedArrayDescending_se6h4x$ = sortedArrayDescending_3; - package$collections.sortedArrayDescending_rjqryz$ = sortedArrayDescending_4; - package$collections.sortedArrayDescending_bvy38s$ = sortedArrayDescending_5; - package$collections.sortedArrayDescending_355ntz$ = sortedArrayDescending_6; - package$collections.sortedArrayWith_iwcb0m$ = sortedArrayWith; - package$collections.sortedWith_iwcb0m$ = sortedWith; - package$collections.sortedBy_99hh6x$ = sortedBy; - package$collections.sortedWith_movtv6$ = sortedWith_0; - package$collections.sortedBy_jirwv8$ = sortedBy_0; - package$collections.sortedWith_u08rls$ = sortedWith_1; - package$collections.sortedBy_p0tdr4$ = sortedBy_1; - package$collections.sortedWith_rsw9pc$ = sortedWith_2; - package$collections.sortedBy_30vlmi$ = sortedBy_2; - package$collections.sortedWith_wqwa2y$ = sortedWith_3; - package$collections.sortedBy_hom4ws$ = sortedBy_3; - package$collections.sortedWith_1sg7gg$ = sortedWith_4; - package$collections.sortedBy_ksd00w$ = sortedBy_4; - package$collections.sortedWith_jucva8$ = sortedWith_5; - package$collections.sortedBy_fvpt30$ = sortedBy_5; - package$collections.sortedWith_7ffj0g$ = sortedWith_6; - package$collections.sortedBy_xt360o$ = sortedBy_6; - package$collections.sortedWith_7ncb86$ = sortedWith_7; - package$collections.sortedBy_epurks$ = sortedBy_7; - package$collections.sortedByDescending_99hh6x$ = sortedByDescending; - package$collections.sortedByDescending_jirwv8$ = sortedByDescending_0; - package$collections.sortedByDescending_p0tdr4$ = sortedByDescending_1; - package$collections.sortedByDescending_30vlmi$ = sortedByDescending_2; - package$collections.sortedByDescending_hom4ws$ = sortedByDescending_3; - package$collections.sortedByDescending_ksd00w$ = sortedByDescending_4; - package$collections.sortedByDescending_fvpt30$ = sortedByDescending_5; - package$collections.sortedByDescending_xt360o$ = sortedByDescending_6; - package$collections.sortedByDescending_epurks$ = sortedByDescending_7; - package$collections.sortedDescending_pbinho$ = sortedDescending; - package$collections.sortedDescending_964n91$ = sortedDescending_0; - package$collections.sortedDescending_i2lc79$ = sortedDescending_1; - package$collections.sortedDescending_tmsbgo$ = sortedDescending_2; - package$collections.sortedDescending_se6h4x$ = sortedDescending_3; - package$collections.sortedDescending_rjqryz$ = sortedDescending_4; - package$collections.sortedDescending_bvy38s$ = sortedDescending_5; - package$collections.sortedDescending_355ntz$ = sortedDescending_6; - package$collections.toBooleanArray_xbflon$ = toBooleanArray; - package$collections.toByteArray_vn5r1x$ = toByteArray; - package$collections.toCharArray_vfshuv$ = toCharArray; - package$collections.toDoubleArray_pnorak$ = toDoubleArray; - package$collections.toFloatArray_529xol$ = toFloatArray; - package$collections.toIntArray_5yd9ji$ = toIntArray; - package$collections.toLongArray_r2b9hd$ = toLongArray; - package$collections.toShortArray_t8c1id$ = toShortArray; - package$collections.mapCapacity_za3lpa$ = mapCapacity; - var package$ranges = package$kotlin.ranges || (package$kotlin.ranges = {}); - package$ranges.coerceAtLeast_dqglrj$ = coerceAtLeast_2; - package$collections.LinkedHashMap_init_bwtc7$ = LinkedHashMap_init_2; - package$collections.associateTo_t6a58$ = associateTo; - package$collections.associate_51p84z$ = associate; - package$collections.associateTo_30k0gw$ = associateTo_0; - package$collections.associate_hllm27$ = associate_0; - package$collections.associateTo_pdwiok$ = associateTo_1; - package$collections.associate_21tl2r$ = associate_1; - package$collections.associateTo_yjydda$ = associateTo_2; - package$collections.associate_ff74x3$ = associate_2; - package$collections.associateTo_o9od0g$ = associateTo_3; - package$collections.associate_d7c9rj$ = associate_3; - package$collections.associateTo_642zho$ = associateTo_4; - package$collections.associate_ddcx1p$ = associate_4; - package$collections.associateTo_t00y2o$ = associateTo_5; - package$collections.associate_neh4lr$ = associate_5; - package$collections.associateTo_l2eg58$ = associateTo_6; - package$collections.associate_su3lit$ = associate_6; - package$collections.associateTo_7k1sps$ = associateTo_7; - package$collections.associate_2m77bl$ = associate_7; - package$collections.associateByTo_jnbl5d$ = associateByTo; - package$collections.associateBy_73x53s$ = associateBy; - package$collections.associateByTo_6rsi3p$ = associateByTo_0; - package$collections.associateBy_i1orpu$ = associateBy_0; - package$collections.associateByTo_mvhbwl$ = associateByTo_1; - package$collections.associateBy_2yxo7i$ = associateBy_1; - package$collections.associateByTo_jk03w$ = associateByTo_2; - package$collections.associateBy_vhfi20$ = associateBy_2; - package$collections.associateByTo_fajp69$ = associateByTo_3; - package$collections.associateBy_oifiz6$ = associateBy_3; - package$collections.associateByTo_z2kljv$ = associateByTo_4; - package$collections.associateBy_5k9h5a$ = associateBy_4; - package$collections.associateByTo_s8dkm4$ = associateByTo_5; - package$collections.associateBy_hbdsc2$ = associateBy_5; - package$collections.associateByTo_ro4olb$ = associateByTo_6; - package$collections.associateBy_8oadti$ = associateBy_6; - package$collections.associateByTo_deafr$ = associateByTo_7; - package$collections.associateBy_pmkh76$ = associateBy_7; - package$collections.associateByTo_8rzqwv$ = associateByTo_8; - package$collections.associateBy_67lihi$ = associateBy_8; - package$collections.associateByTo_cne8q6$ = associateByTo_9; - package$collections.associateBy_prlkfp$ = associateBy_9; - package$collections.associateByTo_gcgqha$ = associateByTo_10; - package$collections.associateBy_emzy0b$ = associateBy_10; - package$collections.associateByTo_snsha9$ = associateByTo_11; - package$collections.associateBy_5wtufc$ = associateBy_11; - package$collections.associateByTo_ryii4m$ = associateByTo_12; - package$collections.associateBy_hq1329$ = associateBy_12; - package$collections.associateByTo_6a7lri$ = associateByTo_13; - package$collections.associateBy_jjomwl$ = associateBy_13; - package$collections.associateByTo_lxofut$ = associateByTo_14; - package$collections.associateBy_bvjqb8$ = associateBy_14; - package$collections.associateByTo_u9h8ze$ = associateByTo_15; - package$collections.associateBy_hxvtq7$ = associateBy_15; - package$collections.associateByTo_u7k4io$ = associateByTo_16; - package$collections.associateBy_nlw5ll$ = associateBy_16; - package$collections.toCollection_5n4o2z$ = toCollection; - package$collections.toCollection_iu3dad$ = toCollection_0; - package$collections.toCollection_wvb8kp$ = toCollection_1; - package$collections.toCollection_u9aek7$ = toCollection_2; - package$collections.toCollection_j1hzal$ = toCollection_3; - package$collections.toCollection_tkc3iv$ = toCollection_4; - package$collections.toCollection_hivqqf$ = toCollection_5; - package$collections.toCollection_v35pav$ = toCollection_6; - package$collections.toCollection_qezmjj$ = toCollection_7; - package$collections.toHashSet_us0mfu$ = toHashSet; - package$collections.toHashSet_964n91$ = toHashSet_0; - package$collections.toHashSet_i2lc79$ = toHashSet_1; - package$collections.toHashSet_tmsbgo$ = toHashSet_2; - package$collections.toHashSet_se6h4x$ = toHashSet_3; - package$collections.toHashSet_rjqryz$ = toHashSet_4; - package$collections.toHashSet_bvy38s$ = toHashSet_5; - package$collections.toHashSet_l1lu5t$ = toHashSet_6; - package$collections.toHashSet_355ntz$ = toHashSet_7; - package$collections.toMutableList_us0mfu$ = toMutableList; - package$collections.toMutableList_964n91$ = toMutableList_0; - package$collections.toMutableList_i2lc79$ = toMutableList_1; - package$collections.toMutableList_tmsbgo$ = toMutableList_2; - package$collections.toMutableList_se6h4x$ = toMutableList_3; - package$collections.toMutableList_rjqryz$ = toMutableList_4; - package$collections.toMutableList_bvy38s$ = toMutableList_5; - package$collections.toMutableList_l1lu5t$ = toMutableList_6; - package$collections.toMutableList_355ntz$ = toMutableList_7; - package$collections.toSet_us0mfu$ = toSet; - package$collections.toSet_964n91$ = toSet_0; - package$collections.toSet_i2lc79$ = toSet_1; - package$collections.toSet_tmsbgo$ = toSet_2; - package$collections.toSet_se6h4x$ = toSet_3; - package$collections.toSet_rjqryz$ = toSet_4; - package$collections.toSet_bvy38s$ = toSet_5; - package$collections.toSet_l1lu5t$ = toSet_6; - package$collections.toSet_355ntz$ = toSet_7; - package$collections.flatMapTo_qpz03$ = flatMapTo; - package$collections.flatMap_m96iup$ = flatMap; - package$collections.flatMapTo_hrglhs$ = flatMapTo_0; - package$collections.flatMap_7g5j6z$ = flatMap_0; - package$collections.flatMapTo_9q2ddu$ = flatMapTo_1; - package$collections.flatMap_2azm6x$ = flatMap_1; - package$collections.flatMapTo_ae7k4k$ = flatMapTo_2; - package$collections.flatMap_k7x5xb$ = flatMap_2; - package$collections.flatMapTo_6h8o5s$ = flatMapTo_3; - package$collections.flatMap_jv6p05$ = flatMap_3; - package$collections.flatMapTo_fngh32$ = flatMapTo_4; - package$collections.flatMap_a6ay1l$ = flatMap_4; - package$collections.flatMapTo_53zyz4$ = flatMapTo_5; - package$collections.flatMap_kx9v79$ = flatMap_5; - package$collections.flatMapTo_9hj6lm$ = flatMapTo_6; - package$collections.flatMap_io4c5r$ = flatMap_6; - package$collections.flatMapTo_5s36kw$ = flatMapTo_7; - package$collections.flatMap_m4binf$ = flatMap_7; - package$collections.addAll_ipc267$ = addAll; - package$collections.LinkedHashMap_init_q3lmfv$ = LinkedHashMap_init; - package$collections.groupByTo_1qxbxg$ = groupByTo; - package$collections.groupBy_73x53s$ = groupBy; - package$collections.groupByTo_6kmz48$ = groupByTo_0; - package$collections.groupBy_i1orpu$ = groupBy_0; - package$collections.groupByTo_bo8r4m$ = groupByTo_1; - package$collections.groupBy_2yxo7i$ = groupBy_1; - package$collections.groupByTo_q1iim5$ = groupByTo_2; - package$collections.groupBy_vhfi20$ = groupBy_2; - package$collections.groupByTo_mu2a4k$ = groupByTo_3; - package$collections.groupBy_oifiz6$ = groupBy_3; - package$collections.groupByTo_x0uw5m$ = groupByTo_4; - package$collections.groupBy_5k9h5a$ = groupBy_4; - package$collections.groupByTo_xcz1ip$ = groupByTo_5; - package$collections.groupBy_hbdsc2$ = groupBy_5; - package$collections.groupByTo_mrd1pq$ = groupByTo_6; - package$collections.groupBy_8oadti$ = groupBy_6; - package$collections.groupByTo_axxeqe$ = groupByTo_7; - package$collections.groupBy_pmkh76$ = groupBy_7; - package$collections.groupByTo_ha2xv2$ = groupByTo_8; - package$collections.groupBy_67lihi$ = groupBy_8; - package$collections.groupByTo_lnembp$ = groupByTo_9; - package$collections.groupBy_prlkfp$ = groupBy_9; - package$collections.groupByTo_n3jh2d$ = groupByTo_10; - package$collections.groupBy_emzy0b$ = groupBy_10; - package$collections.groupByTo_ted19q$ = groupByTo_11; - package$collections.groupBy_5wtufc$ = groupBy_11; - package$collections.groupByTo_bzm9l3$ = groupByTo_12; - package$collections.groupBy_hq1329$ = groupBy_12; - package$collections.groupByTo_4auzph$ = groupByTo_13; - package$collections.groupBy_jjomwl$ = groupBy_13; - package$collections.groupByTo_akngni$ = groupByTo_14; - package$collections.groupBy_bvjqb8$ = groupBy_14; - package$collections.groupByTo_au1frb$ = groupByTo_15; - package$collections.groupBy_hxvtq7$ = groupBy_15; - package$collections.groupByTo_cmmt3n$ = groupByTo_16; - package$collections.groupBy_nlw5ll$ = groupBy_16; - package$collections.getOrPut_9wl75a$ = getOrPut; - package$collections.Grouping = Grouping; - package$collections.groupingBy_73x53s$ = groupingBy; - package$collections.ArrayList_init_ww73n8$ = ArrayList_init_0; - package$collections.mapTo_4g4n0c$ = mapTo; - package$collections.map_73x53s$ = map; - package$collections.mapTo_lvjep5$ = mapTo_0; - package$collections.map_i1orpu$ = map_0; - package$collections.mapTo_jtf97t$ = mapTo_1; - package$collections.map_2yxo7i$ = map_1; - package$collections.mapTo_18cmir$ = mapTo_2; - package$collections.map_vhfi20$ = map_2; - package$collections.mapTo_6e2q1j$ = mapTo_3; - package$collections.map_oifiz6$ = map_3; - package$collections.mapTo_jpuhm1$ = mapTo_4; - package$collections.map_5k9h5a$ = map_4; - package$collections.mapTo_u2n9ft$ = mapTo_5; - package$collections.map_hbdsc2$ = map_5; - package$collections.mapTo_jrz1ox$ = mapTo_6; - package$collections.map_8oadti$ = map_6; - package$collections.mapTo_bsh7dj$ = mapTo_7; - package$collections.map_pmkh76$ = map_7; - package$collections.mapIndexedTo_d8bv34$ = mapIndexedTo; - package$collections.mapIndexed_d05wzo$ = mapIndexed; - package$collections.mapIndexedTo_797pmj$ = mapIndexedTo_0; - package$collections.mapIndexed_b1mzcm$ = mapIndexed_0; - package$collections.mapIndexedTo_5akchx$ = mapIndexedTo_1; - package$collections.mapIndexed_17cht6$ = mapIndexed_1; - package$collections.mapIndexedTo_ey1r33$ = mapIndexedTo_2; - package$collections.mapIndexed_n9l81o$ = mapIndexed_2; - package$collections.mapIndexedTo_yqgxdn$ = mapIndexedTo_3; - package$collections.mapIndexed_6hpo96$ = mapIndexed_3; - package$collections.mapIndexedTo_3uie0r$ = mapIndexedTo_4; - package$collections.mapIndexed_xqj56$ = mapIndexed_4; - package$collections.mapIndexedTo_3zacuz$ = mapIndexedTo_5; - package$collections.mapIndexed_623t7u$ = mapIndexed_5; - package$collections.mapIndexedTo_r9wz1$ = mapIndexedTo_6; - package$collections.mapIndexed_tk88gi$ = mapIndexed_6; - package$collections.mapIndexedTo_d11l8l$ = mapIndexedTo_7; - package$collections.mapIndexed_8r1kga$ = mapIndexed_7; - package$collections.mapIndexedNotNullTo_97f7ib$ = mapIndexedNotNullTo; - package$collections.mapIndexedNotNull_aytly7$ = mapIndexedNotNull; - package$collections.mapNotNullTo_cni40x$ = mapNotNullTo; - package$collections.mapNotNull_oxs7gb$ = mapNotNull; - package$collections.forEach_je628z$ = forEach; - package$collections.withIndex_us0mfu$ = withIndex; - package$collections.withIndex_964n91$ = withIndex_0; - package$collections.withIndex_i2lc79$ = withIndex_1; - package$collections.withIndex_tmsbgo$ = withIndex_2; - package$collections.withIndex_se6h4x$ = withIndex_3; - package$collections.withIndex_rjqryz$ = withIndex_4; - package$collections.withIndex_bvy38s$ = withIndex_5; - package$collections.withIndex_l1lu5t$ = withIndex_6; - package$collections.withIndex_355ntz$ = withIndex_7; - package$collections.distinct_us0mfu$ = distinct; - package$collections.distinct_964n91$ = distinct_0; - package$collections.distinct_i2lc79$ = distinct_1; - package$collections.distinct_tmsbgo$ = distinct_2; - package$collections.distinct_se6h4x$ = distinct_3; - package$collections.distinct_rjqryz$ = distinct_4; - package$collections.distinct_bvy38s$ = distinct_5; - package$collections.distinct_l1lu5t$ = distinct_6; - package$collections.distinct_355ntz$ = distinct_7; - package$collections.HashSet_init_287e2$ = HashSet_init; - package$collections.distinctBy_73x53s$ = distinctBy; - package$collections.distinctBy_i1orpu$ = distinctBy_0; - package$collections.distinctBy_2yxo7i$ = distinctBy_1; - package$collections.distinctBy_vhfi20$ = distinctBy_2; - package$collections.distinctBy_oifiz6$ = distinctBy_3; - package$collections.distinctBy_5k9h5a$ = distinctBy_4; - package$collections.distinctBy_hbdsc2$ = distinctBy_5; - package$collections.distinctBy_8oadti$ = distinctBy_6; - package$collections.distinctBy_pmkh76$ = distinctBy_7; - package$collections.intersect_fe0ubx$ = intersect; - package$collections.intersect_hrvwcl$ = intersect_0; - package$collections.intersect_ao5c0d$ = intersect_1; - package$collections.intersect_e3izir$ = intersect_2; - package$collections.intersect_665vtv$ = intersect_3; - package$collections.intersect_v6evar$ = intersect_4; - package$collections.intersect_prhtir$ = intersect_5; - package$collections.intersect_s6pdl9$ = intersect_6; - package$collections.intersect_ux50q1$ = intersect_7; - package$collections.subtract_fe0ubx$ = subtract; - package$collections.subtract_hrvwcl$ = subtract_0; - package$collections.subtract_ao5c0d$ = subtract_1; - package$collections.subtract_e3izir$ = subtract_2; - package$collections.subtract_665vtv$ = subtract_3; - package$collections.subtract_v6evar$ = subtract_4; - package$collections.subtract_prhtir$ = subtract_5; - package$collections.subtract_s6pdl9$ = subtract_6; - package$collections.subtract_ux50q1$ = subtract_7; - package$collections.toMutableSet_us0mfu$ = toMutableSet; - package$collections.toMutableSet_964n91$ = toMutableSet_0; - package$collections.toMutableSet_i2lc79$ = toMutableSet_1; - package$collections.toMutableSet_tmsbgo$ = toMutableSet_2; - package$collections.toMutableSet_se6h4x$ = toMutableSet_3; - package$collections.toMutableSet_rjqryz$ = toMutableSet_4; - package$collections.toMutableSet_bvy38s$ = toMutableSet_5; - package$collections.toMutableSet_l1lu5t$ = toMutableSet_6; - package$collections.toMutableSet_355ntz$ = toMutableSet_7; - package$collections.union_fe0ubx$ = union; - package$collections.union_hrvwcl$ = union_0; - package$collections.union_ao5c0d$ = union_1; - package$collections.union_e3izir$ = union_2; - package$collections.union_665vtv$ = union_3; - package$collections.union_v6evar$ = union_4; - package$collections.union_prhtir$ = union_5; - package$collections.union_s6pdl9$ = union_6; - package$collections.union_ux50q1$ = union_7; - package$collections.all_sfx99b$ = all; - package$collections.all_c3i447$ = all_0; - package$collections.all_247xw3$ = all_1; - package$collections.all_il4kyb$ = all_2; - package$collections.all_i1oc7r$ = all_3; - package$collections.all_u4nq1f$ = all_4; - package$collections.all_3vq27r$ = all_5; - package$collections.all_xffwn9$ = all_6; - package$collections.all_3ji0pj$ = all_7; - package$collections.any_us0mfu$ = any; - package$collections.any_964n91$ = any_0; - package$collections.any_i2lc79$ = any_1; - package$collections.any_tmsbgo$ = any_2; - package$collections.any_se6h4x$ = any_3; - package$collections.any_rjqryz$ = any_4; - package$collections.any_bvy38s$ = any_5; - package$collections.any_l1lu5t$ = any_6; - package$collections.any_355ntz$ = any_7; - package$collections.any_sfx99b$ = any_8; - package$collections.any_c3i447$ = any_9; - package$collections.any_247xw3$ = any_10; - package$collections.any_il4kyb$ = any_11; - package$collections.any_i1oc7r$ = any_12; - package$collections.any_u4nq1f$ = any_13; - package$collections.any_3vq27r$ = any_14; - package$collections.any_xffwn9$ = any_15; - package$collections.any_3ji0pj$ = any_16; - package$collections.count_sfx99b$ = count_8; - package$collections.count_c3i447$ = count_9; - package$collections.count_247xw3$ = count_10; - package$collections.count_il4kyb$ = count_11; - package$collections.count_i1oc7r$ = count_12; - package$collections.count_u4nq1f$ = count_13; - package$collections.count_3vq27r$ = count_14; - package$collections.count_xffwn9$ = count_15; - package$collections.count_3ji0pj$ = count_16; - package$collections.fold_agj4oo$ = fold; - package$collections.fold_fl151e$ = fold_0; - package$collections.fold_9nnzbm$ = fold_1; - package$collections.fold_sgag36$ = fold_2; - package$collections.fold_sc6mze$ = fold_3; - package$collections.fold_fnzdea$ = fold_4; - package$collections.fold_mnppu8$ = fold_5; - package$collections.fold_43zc0i$ = fold_6; - package$collections.fold_8nwlk6$ = fold_7; - package$collections.foldIndexed_oj0mn0$ = foldIndexed; - package$collections.foldIndexed_qzmh7i$ = foldIndexed_0; - package$collections.foldIndexed_aijnee$ = foldIndexed_1; - package$collections.foldIndexed_28ylm2$ = foldIndexed_2; - package$collections.foldIndexed_37s2ie$ = foldIndexed_3; - package$collections.foldIndexed_faee2y$ = foldIndexed_4; - package$collections.foldIndexed_ufoyfg$ = foldIndexed_5; - package$collections.foldIndexed_z82r06$ = foldIndexed_6; - package$collections.foldIndexed_sfak8u$ = foldIndexed_7; - package$collections.foldRight_svmc2u$ = foldRight; - package$collections.foldRight_wssfls$ = foldRight_0; - package$collections.foldRight_9ug2j2$ = foldRight_1; - package$collections.foldRight_8vbxp4$ = foldRight_2; - package$collections.foldRight_1fuzy8$ = foldRight_3; - package$collections.foldRight_lsgf76$ = foldRight_4; - package$collections.foldRight_v5l2cg$ = foldRight_5; - package$collections.foldRight_ej6ng6$ = foldRight_6; - package$collections.foldRight_i7w5ds$ = foldRight_7; - package$collections.foldRightIndexed_et4u4i$ = foldRightIndexed; - package$collections.foldRightIndexed_le73fo$ = foldRightIndexed_0; - package$collections.foldRightIndexed_8zkega$ = foldRightIndexed_1; - package$collections.foldRightIndexed_ltx404$ = foldRightIndexed_2; - package$collections.foldRightIndexed_qk9kf8$ = foldRightIndexed_3; - package$collections.foldRightIndexed_95xca2$ = foldRightIndexed_4; - package$collections.foldRightIndexed_lxtlx8$ = foldRightIndexed_5; - package$collections.foldRightIndexed_gkwrji$ = foldRightIndexed_6; - package$collections.foldRightIndexed_ivb0f8$ = foldRightIndexed_7; - package$collections.forEach_l09evt$ = forEach_0; - package$collections.forEach_q32uhv$ = forEach_1; - package$collections.forEach_4l7qrh$ = forEach_2; - package$collections.forEach_j4vz15$ = forEach_3; - package$collections.forEach_w9sc9v$ = forEach_4; - package$collections.forEach_txsb7r$ = forEach_5; - package$collections.forEach_g04iob$ = forEach_6; - package$collections.forEach_kxoc7t$ = forEach_7; - package$collections.max_pnorak$ = max; - package$collections.max_529xol$ = max_0; - package$collections.max_pbinho$ = max_1; - package$collections.max_964n91$ = max_2; - package$collections.max_i2lc79$ = max_3; - package$collections.max_tmsbgo$ = max_4; - package$collections.max_se6h4x$ = max_5; - package$collections.max_rjqryz$ = max_6; - package$collections.max_bvy38s$ = max_7; - package$collections.max_355ntz$ = max_8; - package$collections.maxBy_99hh6x$ = maxBy; - package$collections.maxBy_jirwv8$ = maxBy_0; - package$collections.maxBy_p0tdr4$ = maxBy_1; - package$collections.maxBy_30vlmi$ = maxBy_2; - package$collections.maxBy_hom4ws$ = maxBy_3; - package$collections.maxBy_ksd00w$ = maxBy_4; - package$collections.maxBy_fvpt30$ = maxBy_5; - package$collections.maxBy_xt360o$ = maxBy_6; - package$collections.maxBy_epurks$ = maxBy_7; - package$collections.maxWith_iwcb0m$ = maxWith; - package$collections.maxWith_movtv6$ = maxWith_0; - package$collections.maxWith_u08rls$ = maxWith_1; - package$collections.maxWith_rsw9pc$ = maxWith_2; - package$collections.maxWith_wqwa2y$ = maxWith_3; - package$collections.maxWith_1sg7gg$ = maxWith_4; - package$collections.maxWith_jucva8$ = maxWith_5; - package$collections.maxWith_7ffj0g$ = maxWith_6; - package$collections.maxWith_7ncb86$ = maxWith_7; - package$collections.min_pnorak$ = min; - package$collections.min_529xol$ = min_0; - package$collections.min_pbinho$ = min_1; - package$collections.min_964n91$ = min_2; - package$collections.min_i2lc79$ = min_3; - package$collections.min_tmsbgo$ = min_4; - package$collections.min_se6h4x$ = min_5; - package$collections.min_rjqryz$ = min_6; - package$collections.min_bvy38s$ = min_7; - package$collections.min_355ntz$ = min_8; - package$collections.minBy_99hh6x$ = minBy; - package$collections.minBy_jirwv8$ = minBy_0; - package$collections.minBy_p0tdr4$ = minBy_1; - package$collections.minBy_30vlmi$ = minBy_2; - package$collections.minBy_hom4ws$ = minBy_3; - package$collections.minBy_ksd00w$ = minBy_4; - package$collections.minBy_fvpt30$ = minBy_5; - package$collections.minBy_xt360o$ = minBy_6; - package$collections.minBy_epurks$ = minBy_7; - package$collections.minWith_iwcb0m$ = minWith; - package$collections.minWith_movtv6$ = minWith_0; - package$collections.minWith_u08rls$ = minWith_1; - package$collections.minWith_rsw9pc$ = minWith_2; - package$collections.minWith_wqwa2y$ = minWith_3; - package$collections.minWith_1sg7gg$ = minWith_4; - package$collections.minWith_jucva8$ = minWith_5; - package$collections.minWith_7ffj0g$ = minWith_6; - package$collections.minWith_7ncb86$ = minWith_7; - package$collections.none_us0mfu$ = none; - package$collections.none_964n91$ = none_0; - package$collections.none_i2lc79$ = none_1; - package$collections.none_tmsbgo$ = none_2; - package$collections.none_se6h4x$ = none_3; - package$collections.none_rjqryz$ = none_4; - package$collections.none_bvy38s$ = none_5; - package$collections.none_l1lu5t$ = none_6; - package$collections.none_355ntz$ = none_7; - package$collections.none_sfx99b$ = none_8; - package$collections.none_c3i447$ = none_9; - package$collections.none_247xw3$ = none_10; - package$collections.none_il4kyb$ = none_11; - package$collections.none_i1oc7r$ = none_12; - package$collections.none_u4nq1f$ = none_13; - package$collections.none_3vq27r$ = none_14; - package$collections.none_xffwn9$ = none_15; - package$collections.none_3ji0pj$ = none_16; - package$kotlin.UnsupportedOperationException_init_pdl1vj$ = UnsupportedOperationException_init_0; - package$collections.reduce_5bz9yp$ = reduce; - package$collections.reduce_ua0gmo$ = reduce_0; - package$collections.reduce_5x6csy$ = reduce_1; - package$collections.reduce_vuuzha$ = reduce_2; - package$collections.reduce_8z4g8g$ = reduce_3; - package$collections.reduce_m57mj6$ = reduce_4; - package$collections.reduce_5rthjk$ = reduce_5; - package$collections.reduce_if3lfm$ = reduce_6; - package$collections.reduce_724a40$ = reduce_7; - package$collections.reduceIndexed_f61gul$ = reduceIndexed; - package$collections.reduceIndexed_y1rlg4$ = reduceIndexed_0; - package$collections.reduceIndexed_ctdw5m$ = reduceIndexed_1; - package$collections.reduceIndexed_y7bnwe$ = reduceIndexed_2; - package$collections.reduceIndexed_54m7jg$ = reduceIndexed_3; - package$collections.reduceIndexed_mzocqy$ = reduceIndexed_4; - package$collections.reduceIndexed_i4uovg$ = reduceIndexed_5; - package$collections.reduceIndexed_fqu0be$ = reduceIndexed_6; - package$collections.reduceIndexed_n25zu4$ = reduceIndexed_7; - package$collections.reduceRight_m9c08d$ = reduceRight; - package$collections.reduceRight_ua0gmo$ = reduceRight_0; - package$collections.reduceRight_5x6csy$ = reduceRight_1; - package$collections.reduceRight_vuuzha$ = reduceRight_2; - package$collections.reduceRight_8z4g8g$ = reduceRight_3; - package$collections.reduceRight_m57mj6$ = reduceRight_4; - package$collections.reduceRight_5rthjk$ = reduceRight_5; - package$collections.reduceRight_if3lfm$ = reduceRight_6; - package$collections.reduceRight_724a40$ = reduceRight_7; - package$collections.reduceRightIndexed_cf9tch$ = reduceRightIndexed; - package$collections.reduceRightIndexed_y1rlg4$ = reduceRightIndexed_0; - package$collections.reduceRightIndexed_ctdw5m$ = reduceRightIndexed_1; - package$collections.reduceRightIndexed_y7bnwe$ = reduceRightIndexed_2; - package$collections.reduceRightIndexed_54m7jg$ = reduceRightIndexed_3; - package$collections.reduceRightIndexed_mzocqy$ = reduceRightIndexed_4; - package$collections.reduceRightIndexed_i4uovg$ = reduceRightIndexed_5; - package$collections.reduceRightIndexed_fqu0be$ = reduceRightIndexed_6; - package$collections.reduceRightIndexed_n25zu4$ = reduceRightIndexed_7; - package$collections.sumBy_9qh8u2$ = sumBy; - package$collections.sumBy_s616nk$ = sumBy_0; - package$collections.sumBy_sccsus$ = sumBy_1; - package$collections.sumBy_n2f0qi$ = sumBy_2; - package$collections.sumBy_8jxuvk$ = sumBy_3; - package$collections.sumBy_lv6o8c$ = sumBy_4; - package$collections.sumBy_a4xh9s$ = sumBy_5; - package$collections.sumBy_d84lg4$ = sumBy_6; - package$collections.sumBy_izzzcg$ = sumBy_7; - package$collections.sumByDouble_vyz3zq$ = sumByDouble; - package$collections.sumByDouble_kkr9hw$ = sumByDouble_0; - package$collections.sumByDouble_u2ap1s$ = sumByDouble_1; - package$collections.sumByDouble_suc1jq$ = sumByDouble_2; - package$collections.sumByDouble_rqe08c$ = sumByDouble_3; - package$collections.sumByDouble_8jdnkg$ = sumByDouble_4; - package$collections.sumByDouble_vuwwjw$ = sumByDouble_5; - package$collections.sumByDouble_1f8lq0$ = sumByDouble_6; - package$collections.sumByDouble_ik7e6s$ = sumByDouble_7; - package$collections.requireNoNulls_9b7vla$ = requireNoNulls; - package$collections.partition_sfx99b$ = partition; - package$collections.partition_c3i447$ = partition_0; - package$collections.partition_247xw3$ = partition_1; - package$collections.partition_il4kyb$ = partition_2; - package$collections.partition_i1oc7r$ = partition_3; - package$collections.partition_u4nq1f$ = partition_4; - package$collections.partition_3vq27r$ = partition_5; - package$collections.partition_xffwn9$ = partition_6; - package$collections.partition_3ji0pj$ = partition_7; - package$collections.zip_r9t3v7$ = zip; - package$collections.zip_f8fqmg$ = zip_0; - package$collections.zip_ty5cjm$ = zip_1; - package$collections.zip_hh3at1$ = zip_2; - package$collections.zip_1qoa9o$ = zip_3; - package$collections.zip_84cwbm$ = zip_4; - package$collections.zip_eqchap$ = zip_5; - package$collections.zip_jvo9m6$ = zip_6; - package$collections.zip_stlr6e$ = zip_7; - package$collections.zip_t5fk8e$ = zip_8; - package$collections.zip_c731w7$ = zip_9; - package$collections.zip_ochmv5$ = zip_10; - package$collections.zip_fvmov$ = zip_11; - package$collections.zip_g0832p$ = zip_12; - package$collections.zip_cpiwht$ = zip_13; - package$collections.zip_p5twxn$ = zip_14; - package$collections.zip_6fiayp$ = zip_15; - package$collections.zip_xwrum3$ = zip_16; - package$collections.zip_evp5ax$ = zip_17; - package$collections.zip_bguba6$ = zip_18; - package$collections.zip_1xs6vw$ = zip_19; - package$collections.zip_rs3hg1$ = zip_20; - package$collections.zip_spy2lm$ = zip_21; - package$collections.zip_s1ag1o$ = zip_22; - package$collections.zip_qczpth$ = zip_23; - package$collections.zip_za56m0$ = zip_24; - package$collections.zip_jfs5m8$ = zip_25; - package$collections.collectionSizeOrDefault_ba2ldo$ = collectionSizeOrDefault; - package$collections.zip_aoaibi$ = zip_26; - package$collections.zip_2fxjb5$ = zip_27; - package$collections.zip_ey57vj$ = zip_28; - package$collections.zip_582drv$ = zip_29; - package$collections.zip_5584fz$ = zip_30; - package$collections.zip_dszx9d$ = zip_31; - package$collections.zip_p8lavz$ = zip_32; - package$collections.zip_e6btvt$ = zip_33; - package$collections.zip_imz1rz$ = zip_34; - package$collections.zip_ndt7zj$ = zip_35; - package$collections.zip_907jet$ = zip_36; - package$collections.zip_mgkctd$ = zip_37; - package$collections.zip_tq12cv$ = zip_38; - package$collections.zip_tec1tx$ = zip_39; - package$collections.zip_pmvpm9$ = zip_40; - package$collections.zip_qsfoml$ = zip_41; - package$collections.zip_wxyzfz$ = zip_42; - package$collections.zip_fvjg0r$ = zip_43; - package$collections.zip_u8n9wb$ = zip_44; - package$collections.zip_2l2rw1$ = zip_45; - package$collections.zip_3bxm8r$ = zip_46; - package$collections.zip_h04u5h$ = zip_47; - package$collections.zip_t5hjvf$ = zip_48; - package$collections.zip_l9qpsl$ = zip_49; - package$collections.zip_rvvoh1$ = zip_50; - package$collections.joinTo_aust33$ = joinTo; - package$collections.joinTo_5gzrdz$ = joinTo_0; - package$collections.joinTo_9p6wnv$ = joinTo_1; - package$collections.joinTo_sylrwb$ = joinTo_2; - package$collections.joinTo_d79htt$ = joinTo_3; - package$collections.joinTo_ohfn4r$ = joinTo_4; - package$collections.joinTo_ghgesr$ = joinTo_5; - package$collections.joinTo_7e5iud$ = joinTo_6; - package$collections.joinTo_gm3uff$ = joinTo_7; - package$collections.joinToString_cgipc5$ = joinToString; - package$collections.joinToString_s78119$ = joinToString_0; - package$collections.joinToString_khecbp$ = joinToString_1; - package$collections.joinToString_vk9fgb$ = joinToString_2; - package$collections.joinToString_q4l9w5$ = joinToString_3; - package$collections.joinToString_cph1y3$ = joinToString_4; - package$collections.joinToString_raq4np$ = joinToString_5; - package$collections.joinToString_fgvu1x$ = joinToString_6; - package$collections.joinToString_xqrb1d$ = joinToString_7; - package$collections.asIterable_us0mfu$ = asIterable; - package$collections.asIterable_964n91$ = asIterable_0; - package$collections.asIterable_i2lc79$ = asIterable_1; - package$collections.asIterable_tmsbgo$ = asIterable_2; - package$collections.asIterable_se6h4x$ = asIterable_3; - package$collections.asIterable_rjqryz$ = asIterable_4; - package$collections.asIterable_bvy38s$ = asIterable_5; - package$collections.asIterable_l1lu5t$ = asIterable_6; - package$collections.asIterable_355ntz$ = asIterable_7; - package$collections.asSequence_us0mfu$ = asSequence; - package$collections.asSequence_964n91$ = asSequence_0; - package$collections.asSequence_i2lc79$ = asSequence_1; - package$collections.asSequence_tmsbgo$ = asSequence_2; - package$collections.asSequence_se6h4x$ = asSequence_3; - package$collections.asSequence_rjqryz$ = asSequence_4; - package$collections.asSequence_bvy38s$ = asSequence_5; - package$collections.asSequence_l1lu5t$ = asSequence_6; - package$collections.asSequence_355ntz$ = asSequence_7; - package$collections.average_vn5r1x$ = average; - package$collections.average_t8c1id$ = average_0; - package$collections.average_5yd9ji$ = average_1; - package$collections.average_r2b9hd$ = average_2; - package$collections.average_529xol$ = average_3; - package$collections.average_pnorak$ = average_4; - package$collections.average_964n91$ = average_5; - package$collections.average_i2lc79$ = average_6; - package$collections.average_tmsbgo$ = average_7; - package$collections.average_se6h4x$ = average_8; - package$collections.average_rjqryz$ = average_9; - package$collections.average_bvy38s$ = average_10; - package$collections.sum_vn5r1x$ = sum; - package$collections.sum_t8c1id$ = sum_0; - package$collections.sum_5yd9ji$ = sum_1; - package$collections.sum_r2b9hd$ = sum_2; - package$collections.sum_529xol$ = sum_3; - package$collections.sum_pnorak$ = sum_4; - package$collections.sum_964n91$ = sum_5; - package$collections.sum_i2lc79$ = sum_6; - package$collections.sum_tmsbgo$ = sum_7; - package$collections.sum_se6h4x$ = sum_8; - package$collections.sum_rjqryz$ = sum_9; - package$collections.sum_bvy38s$ = sum_10; - package$collections.contains_2ws7j4$ = contains_8; - package$collections.elementAt_ba2ldo$ = elementAt_8; - package$collections.elementAtOrElse_qeve62$ = elementAtOrElse_8; - package$collections.get_lastIndex_55thoc$ = get_lastIndex_8; - package$collections.elementAtOrNull_ba2ldo$ = elementAtOrNull_8; - package$collections.getOrNull_yzln2o$ = getOrNull_8; - package$collections.firstOrNull_6jwkkr$ = firstOrNull_19; - package$collections.lastOrNull_6jwkkr$ = lastOrNull_19; - package$collections.lastOrNull_dmm9ex$ = lastOrNull_20; - package$collections.first_7wnvza$ = first_17; - package$collections.first_2p1efm$ = first_18; - package$collections.first_6jwkkr$ = first_19; - package$collections.firstOrNull_7wnvza$ = firstOrNull_17; - package$collections.firstOrNull_2p1efm$ = firstOrNull_18; - package$collections.indexOf_2ws7j4$ = indexOf_8; - package$collections.indexOf_bv23uc$ = indexOf_9; - package$collections.checkIndexOverflow_za3lpa$ = checkIndexOverflow; - package$collections.indexOfFirst_6jwkkr$ = indexOfFirst_8; - package$collections.indexOfFirst_dmm9ex$ = indexOfFirst_9; - package$collections.indexOfLast_6jwkkr$ = indexOfLast_8; - package$collections.indexOfLast_dmm9ex$ = indexOfLast_9; - package$collections.last_7wnvza$ = last_17; - package$collections.last_2p1efm$ = last_18; - package$collections.last_6jwkkr$ = last_19; - package$collections.last_dmm9ex$ = last_20; - package$collections.lastIndexOf_2ws7j4$ = lastIndexOf_8; - package$collections.lastIndexOf_bv23uc$ = lastIndexOf_9; - package$collections.lastOrNull_7wnvza$ = lastOrNull_17; - package$collections.lastOrNull_2p1efm$ = lastOrNull_18; - package$collections.random_iscd7z$ = random_18; - package$collections.single_7wnvza$ = single_17; - package$collections.single_2p1efm$ = single_18; - package$collections.single_6jwkkr$ = single_19; - package$collections.singleOrNull_7wnvza$ = singleOrNull_17; - package$collections.singleOrNull_2p1efm$ = singleOrNull_18; - package$collections.singleOrNull_6jwkkr$ = singleOrNull_19; - package$collections.drop_ba2ldo$ = drop_8; - package$collections.dropLast_yzln2o$ = dropLast_8; - package$collections.take_ba2ldo$ = take_8; - package$collections.dropLastWhile_dmm9ex$ = dropLastWhile_8; - package$collections.dropWhile_6jwkkr$ = dropWhile_8; - package$collections.filterTo_cslyey$ = filterTo_8; - package$collections.filter_6jwkkr$ = filter_8; - package$collections.filterIndexedTo_i2yxnm$ = filterIndexedTo_8; - package$collections.filterIndexed_p81qtj$ = filterIndexed_8; - package$collections.forEachIndexed_g8ms6t$ = forEachIndexed_8; - package$collections.filterNotTo_cslyey$ = filterNotTo_8; - package$collections.filterNot_6jwkkr$ = filterNot_8; - package$collections.filterNotNull_m3lr2h$ = filterNotNull_0; - package$collections.filterNotNullTo_u9kwcl$ = filterNotNullTo_0; - package$collections.slice_6bjbi1$ = slice_17; - package$collections.slice_b9tsm5$ = slice_18; - package$collections.takeLast_yzln2o$ = takeLast_8; - package$collections.toList_7wnvza$ = toList_8; - package$collections.takeLastWhile_dmm9ex$ = takeLastWhile_8; - package$collections.takeWhile_6jwkkr$ = takeWhile_8; - package$collections.sortWith_nqfjgj$ = sortWith_0; - package$collections.sortBy_yag3x6$ = sortBy_0; - package$collections.sortByDescending_yag3x6$ = sortByDescending_0; - package$collections.sortDescending_4wi501$ = sortDescending_7; - package$collections.sorted_exjks8$ = sorted_7; - package$collections.sortedWith_eknfly$ = sortedWith_8; - package$collections.sortedBy_nd8ern$ = sortedBy_8; - package$collections.sortedByDescending_nd8ern$ = sortedByDescending_8; - package$collections.sortedDescending_exjks8$ = sortedDescending_7; - package$collections.toBooleanArray_xmyvgf$ = toBooleanArray_0; - package$collections.toByteArray_kdx1v$ = toByteArray_0; - package$collections.toCharArray_rr68x$ = toCharArray_0; - package$collections.toDoubleArray_tcduak$ = toDoubleArray_0; - package$collections.toFloatArray_zwy31$ = toFloatArray_0; - package$collections.toIntArray_fx3nzu$ = toIntArray_0; - package$collections.toLongArray_558emf$ = toLongArray_0; - package$collections.toShortArray_p5z1wt$ = toShortArray_0; - package$collections.associateTo_tp6zhs$ = associateTo_8; - package$collections.associate_wbhhmp$ = associate_8; - package$collections.associateByTo_q9k9lv$ = associateByTo_17; - package$collections.associateBy_dvm6j0$ = associateBy_17; - package$collections.associateByTo_5s21dh$ = associateByTo_18; - package$collections.associateBy_6kgnfi$ = associateBy_18; - package$collections.associateWithTo_u35i63$ = associateWithTo; - package$collections.associateWith_dvm6j0$ = associateWith; - package$collections.toCollection_5cfyqp$ = toCollection_8; - package$collections.toHashSet_7wnvza$ = toHashSet_8; - package$collections.toMutableList_7wnvza$ = toMutableList_8; - package$collections.toMutableList_4c7yge$ = toMutableList_9; - package$collections.toSet_7wnvza$ = toSet_8; - package$collections.flatMapTo_farraf$ = flatMapTo_8; - package$collections.flatMap_en2w03$ = flatMap_8; - package$collections.groupByTo_2nn80$ = groupByTo_17; - package$collections.groupBy_dvm6j0$ = groupBy_17; - package$collections.groupByTo_spnc2q$ = groupByTo_18; - package$collections.groupBy_6kgnfi$ = groupBy_18; - package$collections.groupingBy_dvm6j0$ = groupingBy_0; - package$collections.mapTo_h3il0w$ = mapTo_8; - package$collections.map_dvm6j0$ = map_8; - package$collections.mapIndexedTo_qixlg$ = mapIndexedTo_8; - package$collections.mapIndexed_yigmvk$ = mapIndexed_8; - package$collections.mapIndexedNotNullTo_s7kjlj$ = mapIndexedNotNullTo_0; - package$collections.mapIndexedNotNull_aw5p9p$ = mapIndexedNotNull_0; - package$collections.mapNotNullTo_p5b1il$ = mapNotNullTo_0; - package$collections.mapNotNull_3fhhkf$ = mapNotNull_0; - package$collections.forEach_i7id1t$ = forEach_8; - package$collections.withIndex_7wnvza$ = withIndex_8; - package$collections.distinct_7wnvza$ = distinct_8; - package$collections.distinctBy_dvm6j0$ = distinctBy_8; - package$collections.intersect_q4559j$ = intersect_8; - package$collections.subtract_q4559j$ = subtract_8; - package$collections.toMutableSet_7wnvza$ = toMutableSet_8; - package$collections.union_q4559j$ = union_8; - package$collections.Collection = Collection; - package$collections.all_6jwkkr$ = all_8; - package$collections.any_7wnvza$ = any_17; - package$collections.any_6jwkkr$ = any_18; - package$collections.count_7wnvza$ = count_17; - package$collections.checkCountOverflow_za3lpa$ = checkCountOverflow; - package$collections.count_6jwkkr$ = count_19; - package$collections.fold_l1hrho$ = fold_8; - package$collections.foldIndexed_a080b4$ = foldIndexed_8; - package$collections.foldRight_flo3fi$ = foldRight_8; - package$collections.foldRightIndexed_nj6056$ = foldRightIndexed_8; - package$collections.max_l63kqw$ = max_9; - package$collections.max_lvsncp$ = max_10; - package$collections.max_exjks8$ = max_11; - package$collections.maxBy_nd8ern$ = maxBy_8; - package$collections.maxWith_eknfly$ = maxWith_8; - package$collections.min_l63kqw$ = min_9; - package$collections.min_lvsncp$ = min_10; - package$collections.min_exjks8$ = min_11; - package$collections.minBy_nd8ern$ = minBy_8; - package$collections.minWith_eknfly$ = minWith_8; - package$collections.none_7wnvza$ = none_17; - package$collections.none_6jwkkr$ = none_18; - package$collections.onEach_w8vc4v$ = onEach; - package$collections.reduce_lrrcxv$ = reduce_8; - package$collections.reduceIndexed_8txfjb$ = reduceIndexed_8; - package$collections.reduceRight_y5l5zf$ = reduceRight_8; - package$collections.reduceRightIndexed_1a67zb$ = reduceRightIndexed_8; - package$collections.sumBy_1nckxa$ = sumBy_8; - package$collections.sumByDouble_k0tf9a$ = sumByDouble_8; - package$collections.requireNoNulls_m3lr2h$ = requireNoNulls_0; - package$collections.requireNoNulls_whsx6z$ = requireNoNulls_1; - package$collections.chunked_ba2ldo$ = chunked; - package$collections.chunked_oqjilr$ = chunked_0; - package$collections.minus_2ws7j4$ = minus; - package$collections.minus_4gmyjx$ = minus_0; - package$collections.minus_q4559j$ = minus_1; - package$collections.minus_i0e5px$ = minus_2; - package$collections.partition_6jwkkr$ = partition_8; - package$collections.plus_2ws7j4$ = plus; - package$collections.plus_qloxvw$ = plus_0; - package$collections.plus_4gmyjx$ = plus_1; - package$collections.plus_drqvgf$ = plus_2; - package$collections.plus_q4559j$ = plus_3; - package$collections.plus_mydzjv$ = plus_4; - package$collections.plus_i0e5px$ = plus_5; - package$collections.plus_hjm0xj$ = plus_6; - package$collections.windowed_vo9c23$ = windowed; - package$collections.windowed_au5p4$ = windowed_0; - package$collections.zip_xiheex$ = zip_51; - package$collections.zip_curaua$ = zip_52; - package$collections.zip_45mdf7$ = zip_53; - package$collections.zip_3h9v02$ = zip_54; - package$collections.zipWithNext_7wnvza$ = zipWithNext; - package$collections.zipWithNext_kvcuaw$ = zipWithNext_0; - package$collections.joinTo_gcc71v$ = joinTo_8; - package$collections.joinToString_fmv235$ = joinToString_8; - package$collections.asSequence_7wnvza$ = asSequence_8; - package$collections.average_922ytb$ = average_11; - package$collections.average_oz9asn$ = average_12; - package$collections.average_plj8ka$ = average_13; - package$collections.average_dmxgdv$ = average_14; - package$collections.average_lvsncp$ = average_15; - package$collections.average_l63kqw$ = average_16; - package$collections.sum_922ytb$ = sum_11; - package$collections.sum_oz9asn$ = sum_12; - package$collections.sum_plj8ka$ = sum_13; - package$collections.sum_dmxgdv$ = sum_14; - package$collections.sum_lvsncp$ = sum_15; - package$collections.sum_l63kqw$ = sum_16; - var package$comparisons = package$kotlin.comparisons || (package$kotlin.comparisons = {}); - package$comparisons.maxOf_7cibz0$ = maxOf; - package$comparisons.maxOf_z1gega$ = maxOf_0; - package$comparisons.minOf_7cibz0$ = minOf; - package$comparisons.minOf_z1gega$ = minOf_0; - package$collections.toList_abgq59$ = toList_9; - package$collections.flatMapTo_qdz8ho$ = flatMapTo_9; - package$collections.flatMap_2r9935$ = flatMap_9; - package$collections.mapTo_qxe4nl$ = mapTo_9; - package$collections.map_8169ik$ = map_9; - package$collections.mapNotNullTo_ir6y9a$ = mapNotNullTo_1; - package$collections.mapNotNull_9b72hb$ = mapNotNull_1; - package$collections.forEach_62casv$ = forEach_9; - package$collections.all_9peqz9$ = all_9; - package$collections.any_abgq59$ = any_19; - package$collections.any_9peqz9$ = any_20; - package$collections.count_9peqz9$ = count_21; - package$collections.minBy_44nibo$ = minBy_9; - package$collections.minWith_e3q53g$ = minWith_9; - package$collections.none_abgq59$ = none_19; - package$collections.none_9peqz9$ = none_20; - package$collections.onEach_bdwhnn$ = onEach_0; - package$collections.asSequence_abgq59$ = asSequence_9; - package$ranges.random_xmiyix$ = random_22; - package$ranges.random_6753zu$ = random_23; - package$ranges.random_bx1m1g$ = random_24; - package$ranges.contains_8t4apg$ = contains_12; - package$ranges.contains_ptt68h$ = contains_13; - package$ranges.contains_a0sexr$ = contains_14; - package$ranges.contains_st7t5o$ = contains_15; - package$ranges.contains_w4n8vz$ = contains_16; - package$ranges.contains_bupbvv$ = contains_17; - package$ranges.contains_vs2922$ = contains_18; - package$ranges.contains_fnkcb2$ = contains_19; - package$ranges.contains_sc6rfc$ = contains_20; - package$ranges.contains_lmtni0$ = contains_21; - package$ranges.contains_b3prtk$ = contains_22; - package$ranges.contains_jdujeb$ = contains_23; - package$ranges.contains_ng3igv$ = contains_24; - package$ranges.contains_qlzezp$ = contains_25; - package$ranges.contains_u6rtyw$ = contains_26; - package$ranges.contains_wwtm9y$ = contains_27; - package$ranges.contains_sy6r8u$ = contains_28; - package$ranges.contains_wegtiw$ = contains_29; - package$ranges.contains_x0ackb$ = contains_30; - package$ranges.contains_84mv1k$ = contains_31; - package$ranges.contains_8sy4e8$ = contains_32; - package$ranges.contains_pyp6pl$ = contains_33; - package$ranges.contains_a0yl8z$ = contains_34; - package$ranges.contains_stdzgw$ = contains_35; - package$ranges.contains_w4tf77$ = contains_36; - package$ranges.contains_basjzs$ = contains_37; - package$ranges.contains_jkxbkj$ = contains_38; - package$ranges.contains_nn6an3$ = contains_39; - package$ranges.contains_tzp1so$ = contains_40; - package$ranges.contains_1thfvp$ = contains_41; - package$ranges.downTo_ehttk$ = downTo; - package$ranges.downTo_2ou2j3$ = downTo_0; - package$ranges.downTo_buxqzf$ = downTo_1; - package$ranges.downTo_7mbe97$ = downTo_2; - package$ranges.downTo_ui3wc7$ = downTo_3; - package$ranges.downTo_dqglrj$ = downTo_4; - package$ranges.downTo_if0zpk$ = downTo_5; - package$ranges.downTo_798l30$ = downTo_6; - package$ranges.downTo_di2vk2$ = downTo_7; - package$ranges.downTo_ebnic$ = downTo_8; - package$ranges.downTo_2p08ub$ = downTo_9; - package$ranges.downTo_bv3xan$ = downTo_10; - package$ranges.downTo_7m57xz$ = downTo_11; - package$ranges.downTo_c8b4g4$ = downTo_12; - package$ranges.downTo_cltogl$ = downTo_13; - package$ranges.downTo_cqjimh$ = downTo_14; - package$ranges.downTo_mvfjzl$ = downTo_15; - package$ranges.reversed_zf1xzc$ = reversed_9; - package$ranges.reversed_3080cb$ = reversed_10; - package$ranges.reversed_uthk7p$ = reversed_11; - package$ranges.step_xsgg7u$ = step; - package$ranges.step_9rx6pe$ = step_0; - package$ranges.step_kf5xo7$ = step_1; - package$ranges.toByteExactOrNull_8e50z4$ = toByteExactOrNull; - package$ranges.toByteExactOrNull_nzsbcz$ = toByteExactOrNull_0; - package$ranges.toByteExactOrNull_ybd44d$ = toByteExactOrNull_1; - package$ranges.toByteExactOrNull_1zw1ma$ = toByteExactOrNull_2; - package$ranges.toByteExactOrNull_umcohv$ = toByteExactOrNull_3; - package$ranges.toIntExactOrNull_nzsbcz$ = toIntExactOrNull; - package$ranges.toIntExactOrNull_1zw1ma$ = toIntExactOrNull_0; - package$ranges.toIntExactOrNull_umcohv$ = toIntExactOrNull_1; - package$ranges.toLongExactOrNull_1zw1ma$ = toLongExactOrNull; - package$ranges.toLongExactOrNull_umcohv$ = toLongExactOrNull_0; - package$ranges.toShortExactOrNull_8e50z4$ = toShortExactOrNull; - package$ranges.toShortExactOrNull_nzsbcz$ = toShortExactOrNull_0; - package$ranges.toShortExactOrNull_1zw1ma$ = toShortExactOrNull_1; - package$ranges.toShortExactOrNull_umcohv$ = toShortExactOrNull_2; - package$ranges.until_ehttk$ = until; - package$ranges.until_2ou2j3$ = until_0; - package$ranges.until_buxqzf$ = until_1; - package$ranges.until_7mbe97$ = until_2; - package$ranges.until_ui3wc7$ = until_3; - package$ranges.until_dqglrj$ = until_4; - package$ranges.until_if0zpk$ = until_5; - package$ranges.until_798l30$ = until_6; - package$ranges.until_di2vk2$ = until_7; - package$ranges.until_ebnic$ = until_8; - package$ranges.until_2p08ub$ = until_9; - package$ranges.until_bv3xan$ = until_10; - package$ranges.until_7m57xz$ = until_11; - package$ranges.until_c8b4g4$ = until_12; - package$ranges.until_cltogl$ = until_13; - package$ranges.until_cqjimh$ = until_14; - package$ranges.until_mvfjzl$ = until_15; - package$ranges.coerceAtLeast_8xshf9$ = coerceAtLeast; - package$ranges.coerceAtLeast_buxqzf$ = coerceAtLeast_0; - package$ranges.coerceAtLeast_mvfjzl$ = coerceAtLeast_1; - package$ranges.coerceAtLeast_2p08ub$ = coerceAtLeast_3; - package$ranges.coerceAtLeast_yni7l$ = coerceAtLeast_4; - package$ranges.coerceAtLeast_38ydlf$ = coerceAtLeast_5; - package$ranges.coerceAtMost_8xshf9$ = coerceAtMost; - package$ranges.coerceAtMost_buxqzf$ = coerceAtMost_0; - package$ranges.coerceAtMost_mvfjzl$ = coerceAtMost_1; - package$ranges.coerceAtMost_dqglrj$ = coerceAtMost_2; - package$ranges.coerceAtMost_2p08ub$ = coerceAtMost_3; - package$ranges.coerceAtMost_yni7l$ = coerceAtMost_4; - package$ranges.coerceAtMost_38ydlf$ = coerceAtMost_5; - package$ranges.coerceIn_99j3dd$ = coerceIn; - package$ranges.coerceIn_glfpss$ = coerceIn_0; - package$ranges.coerceIn_jn2ilo$ = coerceIn_1; - package$ranges.coerceIn_e4yvb3$ = coerceIn_2; - package$ranges.coerceIn_ekzx8g$ = coerceIn_3; - package$ranges.coerceIn_wj6e7o$ = coerceIn_4; - package$ranges.coerceIn_nig4hr$ = coerceIn_5; - package$ranges.coerceIn_52zmhz$ = coerceIn_6; - package$ranges.coerceIn_jqk3rj$ = coerceIn_7; - package$ranges.coerceIn_nayhkp$ = coerceIn_8; - package$ranges.coerceIn_k7ygy9$ = coerceIn_9; - var package$sequences = package$kotlin.sequences || (package$kotlin.sequences = {}); - package$sequences.contains_9h40j2$ = contains_42; - package$sequences.elementAt_wuwhe2$ = elementAt_10; - package$sequences.elementAtOrElse_i0ukx8$ = elementAtOrElse_10; - package$sequences.elementAtOrNull_wuwhe2$ = elementAtOrNull_10; - package$sequences.firstOrNull_euau3h$ = firstOrNull_21; - package$sequences.lastOrNull_euau3h$ = lastOrNull_22; - package$sequences.first_veqyi0$ = first_20; - package$sequences.first_euau3h$ = first_21; - package$sequences.firstOrNull_veqyi0$ = firstOrNull_20; - package$sequences.indexOf_9h40j2$ = indexOf_10; - package$sequences.indexOfFirst_euau3h$ = indexOfFirst_10; - package$sequences.indexOfLast_euau3h$ = indexOfLast_10; - package$sequences.last_veqyi0$ = last_21; - package$sequences.last_euau3h$ = last_22; - package$sequences.lastIndexOf_9h40j2$ = lastIndexOf_10; - package$sequences.lastOrNull_veqyi0$ = lastOrNull_21; - package$sequences.single_veqyi0$ = single_20; - package$sequences.single_euau3h$ = single_21; - package$sequences.singleOrNull_veqyi0$ = singleOrNull_20; - package$sequences.singleOrNull_euau3h$ = singleOrNull_21; - package$sequences.drop_wuwhe2$ = drop_9; - package$sequences.dropWhile_euau3h$ = dropWhile_9; - package$sequences.filter_euau3h$ = filter_9; - package$sequences.filterIndexed_m6ft53$ = filterIndexed_9; - package$sequences.forEachIndexed_iyis71$ = forEachIndexed_9; - package$sequences.filterIndexedTo_t68vbo$ = filterIndexedTo_9; - package$sequences.Sequence = Sequence; - package$sequences.filterNot_euau3h$ = filterNot_9; - package$sequences.filterNotNull_q2m9h7$ = filterNotNull_1; - package$sequences.filterNotNullTo_jmgotp$ = filterNotNullTo_1; - package$sequences.filterNotTo_zemxx4$ = filterNotTo_9; - package$sequences.filterTo_zemxx4$ = filterTo_9; - package$sequences.take_wuwhe2$ = take_9; - package$sequences.takeWhile_euau3h$ = takeWhile_9; - package$sequences.sorted_gtzq52$ = sorted_8; - package$sequences.sortedWith_vjgqpk$ = sortedWith_9; - package$sequences.sortedBy_aht3pn$ = sortedBy_9; - package$sequences.sortedByDescending_aht3pn$ = sortedByDescending_9; - package$sequences.sortedDescending_gtzq52$ = sortedDescending_8; - package$sequences.associateTo_xiiici$ = associateTo_9; - package$sequences.associate_ohgugh$ = associate_9; - package$sequences.associateByTo_pdrkj5$ = associateByTo_19; - package$sequences.associateBy_z5avom$ = associateBy_19; - package$sequences.associateByTo_vqogar$ = associateByTo_20; - package$sequences.associateBy_rpj48c$ = associateBy_20; - package$sequences.associateWithTo_uyy78t$ = associateWithTo_0; - package$sequences.associateWith_z5avom$ = associateWith_0; - package$sequences.toCollection_gtszxp$ = toCollection_9; - package$sequences.toHashSet_veqyi0$ = toHashSet_9; - package$sequences.toList_veqyi0$ = toList_10; - package$sequences.toMutableList_veqyi0$ = toMutableList_10; - package$sequences.toSet_veqyi0$ = toSet_9; - package$sequences.flatMap_49vfel$ = flatMap_10; - package$collections.addAll_tj7pfx$ = addAll_0; - package$sequences.flatMapTo_skhdnd$ = flatMapTo_10; - package$sequences.groupByTo_m5ds0u$ = groupByTo_19; - package$sequences.groupBy_z5avom$ = groupBy_19; - package$sequences.groupByTo_r8laog$ = groupByTo_20; - package$sequences.groupBy_rpj48c$ = groupBy_20; - package$sequences.groupingBy_z5avom$ = groupingBy_1; - package$sequences.map_z5avom$ = map_10; - package$sequences.mapIndexed_b7yuyq$ = mapIndexed_9; - package$sequences.mapIndexedNotNull_pqenxb$ = mapIndexedNotNull_1; - package$sequences.mapIndexedNotNullTo_eyjglh$ = mapIndexedNotNullTo_1; - package$sequences.mapIndexedTo_49r4ke$ = mapIndexedTo_9; - package$sequences.mapNotNull_qpz9h9$ = mapNotNull_2; - package$sequences.forEach_o41pun$ = forEach_10; - package$sequences.mapNotNullTo_u5l3of$ = mapNotNullTo_2; - package$sequences.mapTo_kntv26$ = mapTo_10; - package$sequences.withIndex_veqyi0$ = withIndex_9; - package$sequences.distinct_veqyi0$ = distinct_9; - package$sequences.distinctBy_z5avom$ = distinctBy_9; - package$sequences.toMutableSet_veqyi0$ = toMutableSet_9; - package$sequences.all_euau3h$ = all_10; - package$sequences.any_veqyi0$ = any_21; - package$sequences.any_euau3h$ = any_22; - package$sequences.count_veqyi0$ = count_22; - package$sequences.count_euau3h$ = count_23; - package$sequences.fold_azbry2$ = fold_9; - package$sequences.foldIndexed_wxmp26$ = foldIndexed_9; - package$sequences.max_1bslqu$ = max_12; - package$sequences.max_8rwv2f$ = max_13; - package$sequences.max_gtzq52$ = max_14; - package$sequences.maxBy_aht3pn$ = maxBy_10; - package$sequences.maxWith_vjgqpk$ = maxWith_10; - package$sequences.min_1bslqu$ = min_12; - package$sequences.min_8rwv2f$ = min_13; - package$sequences.min_gtzq52$ = min_14; - package$sequences.minBy_aht3pn$ = minBy_10; - package$sequences.minWith_vjgqpk$ = minWith_10; - package$sequences.none_veqyi0$ = none_21; - package$sequences.none_euau3h$ = none_22; - package$sequences.onEach_o41pun$ = onEach_1; - package$sequences.reduce_linb1r$ = reduce_9; - package$sequences.reduceIndexed_8denzp$ = reduceIndexed_9; - package$sequences.sumBy_gvemys$ = sumBy_9; - package$sequences.sumByDouble_b4hqx8$ = sumByDouble_9; - package$sequences.requireNoNulls_q2m9h7$ = requireNoNulls_2; - package$sequences.chunked_wuwhe2$ = chunked_1; - package$sequences.chunked_b62g8t$ = chunked_2; - package$sequences.minus_9h40j2$ = minus_3; - package$sequences.minus_5jckhn$ = minus_4; - package$sequences.minus_639hpx$ = minus_5; - package$sequences.minus_v0iwhp$ = minus_6; - package$sequences.partition_euau3h$ = partition_9; - package$sequences.plus_9h40j2$ = plus_7; - package$sequences.plus_5jckhn$ = plus_8; - package$sequences.plus_639hpx$ = plus_9; - package$sequences.plus_v0iwhp$ = plus_10; - package$sequences.windowed_1ll6yl$ = windowed_1; - package$sequences.windowed_4fyara$ = windowed_2; - package$sequences.zip_r7q3s9$ = zip_55; - package$sequences.zip_etk53i$ = zip_56; - package$sequences.zipWithNext_veqyi0$ = zipWithNext_1; - package$sequences.zipWithNext_k332kq$ = zipWithNext_2; - package$sequences.joinTo_q99qgx$ = joinTo_9; - package$sequences.joinToString_853xkz$ = joinToString_9; - package$sequences.asIterable_veqyi0$ = asIterable_10; - package$sequences.average_in95sd$ = average_17; - package$sequences.average_wxyyw7$ = average_18; - package$sequences.average_j17fkc$ = average_19; - package$sequences.average_n83ncx$ = average_20; - package$sequences.average_8rwv2f$ = average_21; - package$sequences.average_1bslqu$ = average_22; - package$sequences.sum_in95sd$ = sum_17; - package$sequences.sum_wxyyw7$ = sum_18; - package$sequences.sum_j17fkc$ = sum_19; - package$sequences.sum_n83ncx$ = sum_20; - package$sequences.sum_8rwv2f$ = sum_21; - package$sequences.sum_1bslqu$ = sum_22; - package$collections.minus_xfiyik$ = minus_7; - package$collections.minus_ws1dkn$ = minus_8; - package$collections.minus_khz7k3$ = minus_9; - package$collections.minus_dk0kmn$ = minus_10; - package$collections.plus_xfiyik$ = plus_11; - package$collections.plus_ws1dkn$ = plus_12; - package$collections.plus_khz7k3$ = plus_13; - package$collections.plus_dk0kmn$ = plus_14; - var package$text = package$kotlin.text || (package$kotlin.text = {}); - package$text.get_lastIndex_gw00vp$ = get_lastIndex_9; - package$text.getOrNull_94bcnn$ = getOrNull_9; - package$text.firstOrNull_2pivbd$ = firstOrNull_23; - package$text.lastOrNull_2pivbd$ = lastOrNull_24; - package$text.first_gw00vp$ = first_22; - package$text.iterator_gw00vp$ = iterator_4; - package$text.first_2pivbd$ = first_23; - package$text.firstOrNull_gw00vp$ = firstOrNull_22; - package$text.get_indices_gw00vp$ = get_indices_9; - package$text.indexOfFirst_2pivbd$ = indexOfFirst_11; - package$text.indexOfLast_2pivbd$ = indexOfLast_11; - package$text.last_gw00vp$ = last_23; - package$text.last_2pivbd$ = last_24; - package$text.lastOrNull_gw00vp$ = lastOrNull_23; - package$text.random_kewcp8$ = random_26; - package$text.single_gw00vp$ = single_22; - package$text.single_2pivbd$ = single_23; - package$text.singleOrNull_gw00vp$ = singleOrNull_22; - package$text.singleOrNull_2pivbd$ = singleOrNull_23; - package$text.drop_94bcnn$ = drop_10; - package$text.drop_6ic1pp$ = drop_11; - package$text.dropLast_94bcnn$ = dropLast_9; - package$text.dropLast_6ic1pp$ = dropLast_10; - package$text.dropLastWhile_2pivbd$ = dropLastWhile_9; - package$text.dropLastWhile_ouje1d$ = dropLastWhile_10; - package$text.dropWhile_2pivbd$ = dropWhile_10; - package$text.dropWhile_ouje1d$ = dropWhile_11; - package$text.StringBuilder_init = StringBuilder_init_1; - package$text.filterTo_2vcf41$ = filterTo_10; - package$text.filter_2pivbd$ = filter_10; - package$text.filter_ouje1d$ = filter_11; - package$text.filterIndexedTo_2omorh$ = filterIndexedTo_10; - package$text.filterIndexed_3xan9v$ = filterIndexed_10; - package$text.filterIndexed_4cgdv1$ = filterIndexed_11; - package$text.forEachIndexed_q254al$ = forEachIndexed_10; - package$text.filterNotTo_2vcf41$ = filterNotTo_10; - package$text.filterNot_2pivbd$ = filterNot_10; - package$text.filterNot_ouje1d$ = filterNot_11; - package$text.slice_i511yc$ = slice_19; - package$text.slice_fc3b62$ = slice_20; - package$text.slice_ymrxhc$ = slice_21; - package$text.take_94bcnn$ = take_10; - package$text.take_6ic1pp$ = take_11; - package$text.takeLast_94bcnn$ = takeLast_9; - package$text.takeLast_6ic1pp$ = takeLast_10; - package$text.takeLastWhile_2pivbd$ = takeLastWhile_9; - package$text.takeLastWhile_ouje1d$ = takeLastWhile_10; - package$text.takeWhile_2pivbd$ = takeWhile_10; - package$text.takeWhile_ouje1d$ = takeWhile_11; - package$text.reversed_gw00vp$ = reversed_12; - package$text.associateTo_1pzh9q$ = associateTo_10; - package$text.associate_b3xl1f$ = associate_10; - package$text.associateByTo_lm6k0r$ = associateByTo_21; - package$text.associateBy_16h5q4$ = associateBy_21; - package$text.associateByTo_woixqq$ = associateByTo_22; - package$text.associateBy_m7aj6v$ = associateBy_22; - package$text.associateWithTo_dykjl$ = associateWithTo_1; - package$text.associateWith_16h5q4$ = associateWith_1; - package$text.toCollection_7uruwd$ = toCollection_10; - package$text.toHashSet_gw00vp$ = toHashSet_10; - package$text.toList_gw00vp$ = toList_11; - package$text.toMutableList_gw00vp$ = toMutableList_11; - package$text.toSet_gw00vp$ = toSet_10; - package$text.flatMapTo_kg2lzy$ = flatMapTo_11; - package$text.flatMap_83nucd$ = flatMap_11; - package$text.groupByTo_mntg7c$ = groupByTo_21; - package$text.groupBy_16h5q4$ = groupBy_21; - package$text.groupByTo_dgnza9$ = groupByTo_22; - package$text.groupBy_m7aj6v$ = groupBy_22; - package$text.groupingBy_16h5q4$ = groupingBy_2; - package$text.mapTo_wrnknd$ = mapTo_11; - package$text.map_16h5q4$ = map_11; - package$text.mapIndexedTo_4f8103$ = mapIndexedTo_10; - package$text.mapIndexed_bnyqco$ = mapIndexed_10; - package$text.mapIndexedNotNullTo_cynlyo$ = mapIndexedNotNullTo_2; - package$text.mapIndexedNotNull_iqd6dn$ = mapIndexedNotNull_2; - package$text.mapNotNullTo_jcwsr8$ = mapNotNullTo_3; - package$text.mapNotNull_10i1d3$ = mapNotNull_3; - package$text.forEach_57f55l$ = forEach_11; - package$text.withIndex_gw00vp$ = withIndex_10; - package$text.all_2pivbd$ = all_11; - package$text.any_gw00vp$ = any_23; - package$text.any_2pivbd$ = any_24; - package$text.count_2pivbd$ = count_25; - package$text.fold_riyz04$ = fold_10; - package$text.foldIndexed_l9i73k$ = foldIndexed_10; - package$text.foldRight_xy5j5e$ = foldRight_9; - package$text.foldRightIndexed_bpin9y$ = foldRightIndexed_9; - package$text.max_gw00vp$ = max_15; - package$text.maxBy_lwkw4q$ = maxBy_11; - package$text.maxWith_mfvi1w$ = maxWith_11; - package$text.min_gw00vp$ = min_15; - package$text.minBy_lwkw4q$ = minBy_11; - package$text.minWith_mfvi1w$ = minWith_11; - package$text.none_gw00vp$ = none_23; - package$text.none_2pivbd$ = none_24; - package$text.onEach_jdhw1f$ = onEach_2; - package$text.reduce_bc19pa$ = reduce_10; - package$text.reduceIndexed_8uyn22$ = reduceIndexed_10; - package$text.reduceRight_bc19pa$ = reduceRight_9; - package$text.reduceRightIndexed_8uyn22$ = reduceRightIndexed_9; - package$text.sumBy_kg4n8i$ = sumBy_10; - package$text.sumByDouble_4bpanu$ = sumByDouble_10; - package$text.chunked_94bcnn$ = chunked_3; - package$text.chunked_hq8uo9$ = chunked_4; - package$text.chunkedSequence_94bcnn$ = chunkedSequence; - package$text.chunkedSequence_hq8uo9$ = chunkedSequence_0; - package$text.partition_2pivbd$ = partition_10; - package$text.partition_ouje1d$ = partition_11; - package$text.windowed_l0nco6$ = windowed_3; - package$text.windowed_tbil1a$ = windowed_4; - package$text.windowedSequence_l0nco6$ = windowedSequence; - package$text.windowedSequence_tbil1a$ = windowedSequence_0; - package$text.zip_b6aurr$ = zip_57; - package$text.zip_tac5w1$ = zip_58; - package$text.zipWithNext_gw00vp$ = zipWithNext_3; - package$text.zipWithNext_hf4kax$ = zipWithNext_4; - package$text.asIterable_gw00vp$ = asIterable_11; - package$text.asSequence_gw00vp$ = asSequence_11; - package$collections.random_b7l3ya$ = random_31; - package$collections.random_2qnwpx$ = random_32; - package$collections.random_i3mfo9$ = random_33; - package$collections.random_7icwln$ = random_34; - package$collections.contentEquals_yvstjl$ = contentEquals_0; - package$collections.contentEquals_oi0tr9$ = contentEquals_1; - package$collections.contentEquals_7u5a2r$ = contentEquals_2; - package$collections.contentEquals_7t078x$ = contentEquals_3; - package$collections.contentHashCode_9hsmwz$ = contentHashCode_0; - package$collections.contentHashCode_rnn80q$ = contentHashCode_1; - package$collections.contentHashCode_o5f02i$ = contentHashCode_2; - package$collections.contentHashCode_k4ndbq$ = contentHashCode_3; - package$collections.contentToString_9hsmwz$ = contentToString; - package$collections.contentToString_rnn80q$ = contentToString_0; - package$collections.contentToString_o5f02i$ = contentToString_1; - package$collections.contentToString_k4ndbq$ = contentToString_2; - package$collections.copyOf_tmsbgo$ = copyOf_10; - package$collections.copyOf_se6h4x$ = copyOf_11; - package$collections.copyOf_964n91$ = copyOf_8; - package$collections.copyOf_i2lc79$ = copyOf_9; - package$collections.copyOf_c03ot6$ = copyOf_18; - package$collections.copyOf_3aefkx$ = copyOf_19; - package$collections.copyOf_mrm5p$ = copyOf_16; - package$collections.copyOf_m2jy6x$ = copyOf_17; - package$collections.copyOfRange_6pxxqk$ = copyOfRange_6; - package$collections.copyOfRange_2n8m0j$ = copyOfRange_7; - package$collections.copyOfRange_ietg8x$ = copyOfRange_4; - package$collections.copyOfRange_qxueih$ = copyOfRange_5; - package$collections.toTypedArray_9hsmwz$ = toTypedArray; - package$collections.toTypedArray_rnn80q$ = toTypedArray_0; - package$collections.toTypedArray_o5f02i$ = toTypedArray_1; - package$collections.toTypedArray_k4ndbq$ = toTypedArray_2; - package$ranges.random_7v08js$ = random_37; - package$ranges.random_nk0vix$ = random_38; - package$ranges.downTo_y54h1t$ = downTo_16; - package$ranges.downTo_ibvkqp$ = downTo_17; - package$ranges.downTo_y9o4wh$ = downTo_18; - package$ranges.downTo_rdgzmv$ = downTo_19; - package$ranges.reversed_i0sryf$ = reversed_14; - package$ranges.reversed_pys8o6$ = reversed_15; - package$ranges.step_f4enhh$ = step_2; - package$ranges.step_7edafj$ = step_3; - package$ranges.until_y54h1t$ = until_16; - package$ranges.until_ibvkqp$ = until_17; - package$ranges.until_y9o4wh$ = until_18; - package$ranges.until_rdgzmv$ = until_19; - var package$math = package$kotlin.math || (package$kotlin.math = {}); - Object.defineProperty(package$math, 'PI', {get: function () { - return PI; - }}); - Object.defineProperty(package$math, 'E', {get: function () { - return E; - }}); - package$kotlin.Annotation = Annotation; - package$kotlin.CharSequence = CharSequence; - package$collections.Iterable = Iterable; - package$collections.MutableIterable = MutableIterable; - package$collections.MutableCollection = MutableCollection; - package$collections.List = List; - package$collections.MutableList = MutableList; - package$collections.Set = Set; - package$collections.MutableSet = MutableSet; - Map.Entry = Map$Entry; - package$collections.Map = Map; - MutableMap.MutableEntry = MutableMap$MutableEntry; - package$collections.MutableMap = MutableMap; - package$kotlin.Function = Function_0; - package$collections.Iterator = Iterator; - package$collections.MutableIterator = MutableIterator; - package$collections.ListIterator = ListIterator; - package$collections.MutableListIterator = MutableListIterator; - package$collections.ByteIterator = ByteIterator; - package$collections.CharIterator = CharIterator; - package$collections.ShortIterator = ShortIterator; - package$collections.IntIterator = IntIterator; - package$collections.LongIterator = LongIterator; - package$collections.FloatIterator = FloatIterator; - package$collections.DoubleIterator = DoubleIterator; - package$collections.BooleanIterator = BooleanIterator; - package$ranges.CharProgressionIterator = CharProgressionIterator; - package$ranges.IntProgressionIterator = IntProgressionIterator; - package$ranges.LongProgressionIterator = LongProgressionIterator; - Object.defineProperty(CharProgression, 'Companion', {get: CharProgression$Companion_getInstance}); - package$ranges.CharProgression = CharProgression; - Object.defineProperty(IntProgression, 'Companion', {get: IntProgression$Companion_getInstance}); - package$ranges.IntProgression = IntProgression; - Object.defineProperty(LongProgression, 'Companion', {get: LongProgression$Companion_getInstance}); - package$ranges.LongProgression = LongProgression; - package$ranges.ClosedRange = ClosedRange; - Object.defineProperty(CharRange, 'Companion', {get: CharRange$Companion_getInstance}); - package$ranges.CharRange = CharRange; - Object.defineProperty(IntRange, 'Companion', {get: IntRange$Companion_getInstance}); - package$ranges.IntRange = IntRange; - Object.defineProperty(LongRange, 'Companion', {get: LongRange$Companion_getInstance}); - package$ranges.LongRange = LongRange; - Object.defineProperty(package$kotlin, 'Unit', {get: Unit_getInstance}); - Object.defineProperty(AnnotationTarget, 'CLASS', {get: AnnotationTarget$CLASS_getInstance}); - Object.defineProperty(AnnotationTarget, 'ANNOTATION_CLASS', {get: AnnotationTarget$ANNOTATION_CLASS_getInstance}); - Object.defineProperty(AnnotationTarget, 'TYPE_PARAMETER', {get: AnnotationTarget$TYPE_PARAMETER_getInstance}); - Object.defineProperty(AnnotationTarget, 'PROPERTY', {get: AnnotationTarget$PROPERTY_getInstance}); - Object.defineProperty(AnnotationTarget, 'FIELD', {get: AnnotationTarget$FIELD_getInstance}); - Object.defineProperty(AnnotationTarget, 'LOCAL_VARIABLE', {get: AnnotationTarget$LOCAL_VARIABLE_getInstance}); - Object.defineProperty(AnnotationTarget, 'VALUE_PARAMETER', {get: AnnotationTarget$VALUE_PARAMETER_getInstance}); - Object.defineProperty(AnnotationTarget, 'CONSTRUCTOR', {get: AnnotationTarget$CONSTRUCTOR_getInstance}); - Object.defineProperty(AnnotationTarget, 'FUNCTION', {get: AnnotationTarget$FUNCTION_getInstance}); - Object.defineProperty(AnnotationTarget, 'PROPERTY_GETTER', {get: AnnotationTarget$PROPERTY_GETTER_getInstance}); - Object.defineProperty(AnnotationTarget, 'PROPERTY_SETTER', {get: AnnotationTarget$PROPERTY_SETTER_getInstance}); - Object.defineProperty(AnnotationTarget, 'TYPE', {get: AnnotationTarget$TYPE_getInstance}); - Object.defineProperty(AnnotationTarget, 'EXPRESSION', {get: AnnotationTarget$EXPRESSION_getInstance}); - Object.defineProperty(AnnotationTarget, 'FILE', {get: AnnotationTarget$FILE_getInstance}); - Object.defineProperty(AnnotationTarget, 'TYPEALIAS', {get: AnnotationTarget$TYPEALIAS_getInstance}); - var package$annotation = package$kotlin.annotation || (package$kotlin.annotation = {}); - package$annotation.AnnotationTarget = AnnotationTarget; - Object.defineProperty(AnnotationRetention, 'SOURCE', {get: AnnotationRetention$SOURCE_getInstance}); - Object.defineProperty(AnnotationRetention, 'BINARY', {get: AnnotationRetention$BINARY_getInstance}); - Object.defineProperty(AnnotationRetention, 'RUNTIME', {get: AnnotationRetention$RUNTIME_getInstance}); - package$annotation.AnnotationRetention = AnnotationRetention; - package$annotation.Target = Target; - package$annotation.Retention = Retention; - package$annotation.Repeatable = Repeatable; - package$annotation.MustBeDocumented = MustBeDocumented; - var package$internal = package$kotlin.internal || (package$kotlin.internal = {}); - package$internal.PureReifiable = PureReifiable; - package$internal.PlatformDependent = PlatformDependent; - package$internal.getProgressionLastElement_qt1dr2$ = getProgressionLastElement; - package$internal.getProgressionLastElement_b9bd0d$ = getProgressionLastElement_0; - var package$reflect = package$kotlin.reflect || (package$kotlin.reflect = {}); - package$reflect.KAnnotatedElement = KAnnotatedElement; - package$reflect.KCallable = KCallable; - package$reflect.KClass = KClass; - package$reflect.KClassifier = KClassifier; - package$reflect.KDeclarationContainer = KDeclarationContainer; - package$reflect.KFunction = KFunction; - Object.defineProperty(KParameter$Kind, 'INSTANCE', {get: KParameter$Kind$INSTANCE_getInstance}); - Object.defineProperty(KParameter$Kind, 'EXTENSION_RECEIVER', {get: KParameter$Kind$EXTENSION_RECEIVER_getInstance}); - Object.defineProperty(KParameter$Kind, 'VALUE', {get: KParameter$Kind$VALUE_getInstance}); - KParameter.Kind = KParameter$Kind; - package$reflect.KParameter = KParameter; - KProperty.Accessor = KProperty$Accessor; - KProperty.Getter = KProperty$Getter; - package$reflect.KProperty = KProperty; - KMutableProperty.Setter = KMutableProperty$Setter; - package$reflect.KMutableProperty = KMutableProperty; - KProperty0.Getter = KProperty0$Getter; - package$reflect.KProperty0 = KProperty0; - KMutableProperty0.Setter = KMutableProperty0$Setter; - package$reflect.KMutableProperty0 = KMutableProperty0; - KProperty1.Getter = KProperty1$Getter; - package$reflect.KProperty1 = KProperty1; - KMutableProperty1.Setter = KMutableProperty1$Setter; - package$reflect.KMutableProperty1 = KMutableProperty1; - KProperty2.Getter = KProperty2$Getter; - package$reflect.KProperty2 = KProperty2; - KMutableProperty2.Setter = KMutableProperty2$Setter; - package$reflect.KMutableProperty2 = KMutableProperty2; - package$reflect.KType = KType; - Object.defineProperty(KTypeProjection, 'Companion', {get: KTypeProjection$Companion_getInstance}); - package$reflect.KTypeProjection = KTypeProjection; - package$reflect.KTypeParameter = KTypeParameter; - Object.defineProperty(KVariance, 'INVARIANT', {get: KVariance$INVARIANT_getInstance}); - Object.defineProperty(KVariance, 'IN', {get: KVariance$IN_getInstance}); - Object.defineProperty(KVariance, 'OUT', {get: KVariance$OUT_getInstance}); - package$reflect.KVariance = KVariance; - Object.defineProperty(KVisibility, 'PUBLIC', {get: KVisibility$PUBLIC_getInstance}); - Object.defineProperty(KVisibility, 'PROTECTED', {get: KVisibility$PROTECTED_getInstance}); - Object.defineProperty(KVisibility, 'INTERNAL', {get: KVisibility$INTERNAL_getInstance}); - Object.defineProperty(KVisibility, 'PRIVATE', {get: KVisibility$PRIVATE_getInstance}); - package$reflect.KVisibility = KVisibility; - package$collections.asList_us0mfu$ = asList; - package$collections.asList_355ntz$ = asList_7; - package$collections.arrayCopy = arrayCopy; - package$collections.copyOf_us0mfu$ = copyOf_7; - package$collections.copyOf_rjqryz$ = copyOf_12; - package$collections.copyOf_bvy38s$ = copyOf_13; - package$collections.copyOf_l1lu5t$ = copyOf_14; - package$collections.copyOf_355ntz$ = copyOf_15; - package$collections.copyOf_rblqex$ = copyOf_20; - package$collections.copyOf_xgrzbe$ = copyOf_21; - package$collections.copyOf_1qu12l$ = copyOf_22; - package$collections.copyOf_gtcw5h$ = copyOf_23; - package$collections.copyOf_8ujjk8$ = copyOf_24; - package$collections.copyOfRange_5f8l3u$ = copyOfRange_3; - package$collections.copyOfRange_kh1mav$ = copyOfRange_8; - package$collections.copyOfRange_yfnal4$ = copyOfRange_9; - package$collections.copyOfRange_ke2ov9$ = copyOfRange_10; - package$collections.copyOfRange_wlitf7$ = copyOfRange_11; - package$collections.plus_mjy6jw$ = plus_15; - package$collections.plus_ndt7zj$ = plus_34; - package$collections.plus_jlnu8a$ = plus_16; - package$collections.plus_907jet$ = plus_35; - package$collections.plus_s7ir3o$ = plus_17; - package$collections.plus_mgkctd$ = plus_36; - package$collections.plus_c03ot6$ = plus_18; - package$collections.plus_tq12cv$ = plus_37; - package$collections.plus_uxdaoa$ = plus_19; - package$collections.plus_tec1tx$ = plus_38; - package$collections.plus_omthmc$ = plus_20; - package$collections.plus_pmvpm9$ = plus_39; - package$collections.plus_taaqy$ = plus_21; - package$collections.plus_qsfoml$ = plus_40; - package$collections.plus_yax8s4$ = plus_22; - package$collections.plus_wxyzfz$ = plus_41; - package$collections.plus_o2f9me$ = plus_23; - package$collections.plus_b32j0n$ = plus_24; - package$collections.plus_lamh9t$ = plus_25; - package$collections.plus_tizwwv$ = plus_26; - package$collections.plus_q1yphb$ = plus_27; - package$collections.plus_nmtg5l$ = plus_28; - package$collections.plus_gtiwrj$ = plus_29; - package$collections.plus_5ltrxd$ = plus_30; - package$collections.plus_cr20yn$ = plus_31; - package$collections.plus_4ow3it$ = plus_32; - package$collections.plus_vu4gah$ = plus_33; - _.primitiveArrayConcat = primitiveArrayConcat; - package$collections.plusElement_mjy6jw$ = plusElement_3; - package$collections.sort_se6h4x$ = sort_0; - package$collections.sort_pbinho$ = sort_1; - package$collections.sort_ra7spe$ = sort_2; - package$collections.toTypedArray_964n91$ = toTypedArray_3; - package$collections.toTypedArray_i2lc79$ = toTypedArray_4; - package$collections.toTypedArray_tmsbgo$ = toTypedArray_5; - package$collections.toTypedArray_se6h4x$ = toTypedArray_6; - package$collections.toTypedArray_rjqryz$ = toTypedArray_7; - package$collections.toTypedArray_bvy38s$ = toTypedArray_8; - package$collections.toTypedArray_l1lu5t$ = toTypedArray_9; - package$collections.toTypedArray_355ntz$ = toTypedArray_10; - package$collections.reverse_vvxzk3$ = reverse_8; - package$comparisons.maxOf_sdesaw$ = maxOf_1; - package$comparisons.maxOf_3pjtqy$ = maxOf_5; - package$comparisons.maxOf_73gzaq$ = maxOf_8; - package$comparisons.minOf_sdesaw$ = minOf_1; - package$comparisons.minOf_3pjtqy$ = minOf_5; - package$comparisons.minOf_73gzaq$ = minOf_8; - var package$jquery = _.jquery || (_.jquery = {}); - var package$ui = package$jquery.ui || (package$jquery.ui = {}); - package$ui.buttonset_vwohdt$ = buttonset; - package$ui.dialog_vwohdt$ = dialog; - package$ui.dialog_pm4xy9$ = dialog_0; - package$ui.dialog_zc05ld$ = dialog_1; - package$ui.dialog_v89ba5$ = dialog_2; - package$ui.dialog_pfp31$ = dialog_3; - package$ui.button_vwohdt$ = button; - package$ui.accordion_vwohdt$ = accordion; - package$ui.draggable_pm4xy9$ = draggable; - package$ui.selectable_vwohdt$ = selectable; - package$kotlin.Comparator = Comparator; - package$kotlin.Comparator_x4fedy$ = Comparator_0; - var package$js = package$kotlin.js || (package$kotlin.js = {}); - package$js.native = native; - package$js.nativeGetter = nativeGetter; - package$js.nativeSetter = nativeSetter; - package$js.nativeInvoke = nativeInvoke; - package$js.library = library; - package$js.marker = marker; - package$js.JsName = JsName; - package$js.JsModule = JsModule; - package$js.JsNonModule = JsNonModule; - package$js.JsQualifier = JsQualifier; - var package$jvm = package$kotlin.jvm || (package$kotlin.jvm = {}); - package$jvm.Volatile = Volatile; - package$jvm.Synchronized = Synchronized; - _.arrayIterator = arrayIterator; - _.booleanArrayIterator = booleanArrayIterator; - _.byteArrayIterator = byteArrayIterator; - _.shortArrayIterator = shortArrayIterator; - _.charArrayIterator = charArrayIterator; - _.intArrayIterator = intArrayIterator; - _.floatArrayIterator = floatArrayIterator; - _.doubleArrayIterator = doubleArrayIterator; - _.longArrayIterator = longArrayIterator; - _.PropertyMetadata = PropertyMetadata; - _.noWhenBranchMatched = noWhenBranchMatched; - _.subSequence = subSequence; - _.captureStack = captureStack; - _.newThrowable = newThrowable; - _.BoxedChar = BoxedChar; - _.arrayConcat = arrayConcat; - _.booleanArrayOf = booleanArrayOf; - _.charArrayOf = charArrayOf; - _.longArrayOf = longArrayOf; - package$text.isWhitespace_myv2d0$ = isWhitespace; - package$text.isHighSurrogate_myv2d0$ = isHighSurrogate; - package$text.isLowSurrogate_myv2d0$ = isLowSurrogate; - package$kotlin.emptyArray_287e2$ = emptyArray; - package$collections.copyToArray = copyToArray; - package$collections.copyToArrayImpl = copyToArrayImpl; - package$collections.copyToExistingArrayImpl = copyToArrayImpl_0; - package$collections.listOf_mh5how$ = listOf; - package$collections.setOf_mh5how$ = setOf; - package$collections.mapOf_x2b85n$ = mapOf; - package$collections.fill_dwdffb$ = fill; - package$collections.shuffle_vvxzk3$ = shuffle; - package$collections.shuffled_7wnvza$ = shuffled; - package$collections.sort_4wi501$ = sort_10; - package$collections.arrayOfNulls_83b1gz$ = arrayOfNulls; - package$collections.toSingletonMapOrSelf_1vp4qn$ = toSingletonMapOrSelf; - package$collections.toMutableMap_abgq59$ = toMutableMap; - package$collections.toSingletonMap_3imywq$ = toSingletonMap; - package$collections.copyToArrayOfAny_e0iprw$ = copyToArrayOfAny; - package$collections.AbstractMutableCollection = AbstractMutableCollection; - package$collections.AbstractMutableList = AbstractMutableList; - AbstractMutableMap.SimpleEntry_init_trwmqg$ = AbstractMutableMap$AbstractMutableMap$SimpleEntry_init; - AbstractMutableMap.SimpleEntry = AbstractMutableMap$SimpleEntry; - package$collections.AbstractMutableMap = AbstractMutableMap; - package$collections.AbstractMutableSet = AbstractMutableSet; - package$collections.ArrayList_init_mqih57$ = ArrayList_init_1; - package$collections.ArrayList = ArrayList; - package$collections.sortArrayWith_w8adym$ = sortArrayWith; - package$collections.sortArrayWith_6xblhi$ = sortArrayWith_0; - package$collections.sortArray_5zbtrs$ = sortArray; - package$collections.contentDeepHashCodeImpl = contentDeepHashCodeImpl; - Object.defineProperty(EqualityComparator, 'HashCode', {get: EqualityComparator$HashCode_getInstance}); - package$collections.EqualityComparator = EqualityComparator; - package$collections.HashMap_init_va96d4$ = HashMap_init; - package$collections.HashMap_init_q3lmfv$ = HashMap_init_0; - package$collections.HashMap_init_xf5xz2$ = HashMap_init_1; - package$collections.HashMap_init_bwtc7$ = HashMap_init_2; - package$collections.HashMap_init_73mtqc$ = HashMap_init_3; - package$collections.HashMap = HashMap; - package$collections.stringMapOf_gkrhic$ = stringMapOf; - package$collections.HashSet_init_mqih57$ = HashSet_init_0; - package$collections.HashSet_init_2wofer$ = HashSet_init_1; - package$collections.HashSet_init_ww73n8$ = HashSet_init_2; - package$collections.HashSet_init_nn01ho$ = HashSet_init_3; - package$collections.HashSet = HashSet; - package$collections.stringSetOf_vqirvp$ = stringSetOf; - package$collections.InternalHashCodeMap = InternalHashCodeMap; - package$collections.InternalMap = InternalMap; - package$collections.InternalStringMap = InternalStringMap; - package$collections.LinkedHashMap_init_p5wce1$ = LinkedHashMap_init_0; - package$collections.LinkedHashMap_init_xf5xz2$ = LinkedHashMap_init_1; - package$collections.LinkedHashMap_init_73mtqc$ = LinkedHashMap_init_3; - package$collections.LinkedHashMap = LinkedHashMap; - package$collections.linkedStringMapOf_gkrhic$ = linkedStringMapOf; - package$collections.LinkedHashSet_init_nkfcz7$ = LinkedHashSet_init; - package$collections.LinkedHashSet_init_287e2$ = LinkedHashSet_init_0; - package$collections.LinkedHashSet_init_mqih57$ = LinkedHashSet_init_1; - package$collections.LinkedHashSet_init_2wofer$ = LinkedHashSet_init_2; - package$collections.LinkedHashSet_init_ww73n8$ = LinkedHashSet_init_3; - package$collections.LinkedHashSet = LinkedHashSet; - package$collections.linkedStringSetOf_vqirvp$ = linkedStringSetOf; - package$collections.RandomAccess = RandomAccess; - var package$contracts = package$kotlin.contracts || (package$kotlin.contracts = {}); - package$contracts.InvocationKind = InvocationKind; - var package$io = package$kotlin.io || (package$kotlin.io = {}); - package$io.BaseOutput = BaseOutput; - package$io.NodeJsOutput = NodeJsOutput; - package$io.OutputToConsoleLog = OutputToConsoleLog; - package$io.BufferedOutput = BufferedOutput; - package$io.BufferedOutputToConsoleLog = BufferedOutputToConsoleLog; - Object.defineProperty(package$io, 'output', {get: function () { - return output; - }, set: function (value) { - output = value; - }}); - package$io.println = println; - package$io.println_s8jyv4$ = println_0; - package$io.print_s8jyv4$ = print; - var package$coroutines = package$kotlin.coroutines || (package$kotlin.coroutines = {}); - package$coroutines.CoroutineImpl = CoroutineImpl; - Object.defineProperty(package$coroutines, 'CompletedContinuation', {get: CompletedContinuation_getInstance}); - package$coroutines.SafeContinuation_init_wj8d80$ = SafeContinuation_init; - package$coroutines.SafeContinuation = SafeContinuation; - var package$intrinsics = package$coroutines.intrinsics || (package$coroutines.intrinsics = {}); - package$intrinsics.createCoroutineUnintercepted_x18nsh$ = createCoroutineUnintercepted; - package$intrinsics.createCoroutineUnintercepted_3a617i$ = createCoroutineUnintercepted_0; - package$intrinsics.intercepted_f9mg25$ = intercepted; - var package$js_0 = package$coroutines.js || (package$coroutines.js = {}); - var package$internal_0 = package$js_0.internal || (package$js_0.internal = {}); - Object.defineProperty(package$internal_0, 'EmptyContinuation', {get: function () { - return EmptyContinuation; - }}); - package$js.dateLocaleOptions_49uy1x$ = dateLocaleOptions; - var package$dom = package$kotlin.dom || (package$kotlin.dom = {}); - package$dom.createElement_7cgwi1$ = createElement; - package$dom.appendElement_ldvnw0$ = appendElement; - package$dom.hasClass_46n0ku$ = hasClass; - package$dom.addClass_hhb33f$ = addClass; - package$dom.removeClass_hhb33f$ = removeClass; - package$dom.get_isText_asww5s$ = get_isText; - package$dom.get_isElement_asww5s$ = get_isElement; - var package$org = _.org || (_.org = {}); - var package$w3c = package$org.w3c || (package$org.w3c = {}); - var package$dom_0 = package$w3c.dom || (package$w3c.dom = {}); - var package$events = package$dom_0.events || (package$dom_0.events = {}); - package$events.EventListener_gbr1zf$ = EventListener; - package$dom_0.asList_kt9thq$ = asList_8; - package$dom.clear_asww5s$ = clear; - package$dom.appendText_46n0ku$ = appendText; - package$js.iterator_s8jyvk$ = iterator; - _.throwNPE = throwNPE; - _.throwCCE = throwCCE_0; - _.throwISE = throwISE; - _.throwUPAE = throwUPAE; - package$kotlin.Error_init = Error_init; - package$kotlin.Error_init_pdl1vj$ = Error_init_0; - package$kotlin.Error_init_dbl4no$ = Error_init_1; - package$kotlin.Error = Error_0; - package$kotlin.Exception_init = Exception_init; - package$kotlin.Exception_init_pdl1vj$ = Exception_init_0; - package$kotlin.Exception_init_dbl4no$ = Exception_init_1; - package$kotlin.Exception = Exception; - package$kotlin.RuntimeException_init = RuntimeException_init; - package$kotlin.RuntimeException_init_pdl1vj$ = RuntimeException_init_0; - package$kotlin.RuntimeException_init_dbl4no$ = RuntimeException_init_1; - package$kotlin.RuntimeException = RuntimeException; - package$kotlin.IllegalArgumentException_init = IllegalArgumentException_init; - package$kotlin.IllegalArgumentException_init_dbl4no$ = IllegalArgumentException_init_1; - package$kotlin.IllegalArgumentException = IllegalArgumentException; - package$kotlin.IllegalStateException_init = IllegalStateException_init; - package$kotlin.IllegalStateException_init_pdl1vj$ = IllegalStateException_init_0; - package$kotlin.IllegalStateException_init_dbl4no$ = IllegalStateException_init_1; - package$kotlin.IllegalStateException = IllegalStateException; - package$kotlin.IndexOutOfBoundsException_init = IndexOutOfBoundsException_init; - package$kotlin.IndexOutOfBoundsException = IndexOutOfBoundsException; - package$kotlin.ConcurrentModificationException_init = ConcurrentModificationException_init; - package$kotlin.ConcurrentModificationException_init_pdl1vj$ = ConcurrentModificationException_init_0; - package$kotlin.ConcurrentModificationException_init_dbl4no$ = ConcurrentModificationException_init_1; - package$kotlin.ConcurrentModificationException = ConcurrentModificationException; - package$kotlin.UnsupportedOperationException_init = UnsupportedOperationException_init; - package$kotlin.UnsupportedOperationException_init_dbl4no$ = UnsupportedOperationException_init_1; - package$kotlin.UnsupportedOperationException = UnsupportedOperationException; - package$kotlin.NumberFormatException_init = NumberFormatException_init; - package$kotlin.NumberFormatException = NumberFormatException; - package$kotlin.NullPointerException_init = NullPointerException_init; - package$kotlin.NullPointerException = NullPointerException; - package$kotlin.ClassCastException_init = ClassCastException_init; - package$kotlin.ClassCastException = ClassCastException; - package$kotlin.AssertionError_init = AssertionError_init; - package$kotlin.AssertionError_init_pdl1vj$ = AssertionError_init_0; - package$kotlin.AssertionError_init_s8jyv4$ = AssertionError_init_1; - package$kotlin.AssertionError = AssertionError; - package$kotlin.NoSuchElementException_init = NoSuchElementException_init; - package$kotlin.NoSuchElementException = NoSuchElementException; - package$kotlin.ArithmeticException_init = ArithmeticException_init; - package$kotlin.ArithmeticException = ArithmeticException; - package$kotlin.NoWhenBranchMatchedException_init = NoWhenBranchMatchedException_init; - package$kotlin.NoWhenBranchMatchedException_init_pdl1vj$ = NoWhenBranchMatchedException_init_0; - package$kotlin.NoWhenBranchMatchedException_init_dbl4no$ = NoWhenBranchMatchedException_init_1; - package$kotlin.NoWhenBranchMatchedException = NoWhenBranchMatchedException; - package$kotlin.UninitializedPropertyAccessException_init = UninitializedPropertyAccessException_init; - package$kotlin.UninitializedPropertyAccessException_init_pdl1vj$ = UninitializedPropertyAccessException_init_0; - package$kotlin.UninitializedPropertyAccessException_init_dbl4no$ = UninitializedPropertyAccessException_init_1; - package$kotlin.UninitializedPropertyAccessException = UninitializedPropertyAccessException; - package$collections.eachCount_kji7v9$ = eachCount; - package$io.Serializable = Serializable; - package$js.min_bug313$ = min_16; - package$js.max_bug313$ = max_16; - package$js.json_pyyo18$ = json; - package$js.add_g26eq9$ = add; - package$kotlin.lazy_klfg04$ = lazy; - package$kotlin.lazy_kls4a0$ = lazy_0; - package$kotlin.lazy_c7lj6g$ = lazy_1; - package$kotlin.fillFrom_dgzutr$ = fillFrom; - package$kotlin.arrayCopyResize_xao4iu$ = arrayCopyResize; - package$kotlin.arrayPlusCollection_ksxw79$ = arrayPlusCollection; - package$kotlin.fillFromCollection_40q1uj$ = fillFromCollection; - package$kotlin.copyArrayType_dgzutr$ = copyArrayType; - package$kotlin.jsIsType_dgzutr$ = jsIsType; - package$math.log_lu1900$ = log; - package$math.round_14dthe$ = round; - package$math.withSign_38ydlf$ = withSign; - package$math.get_ulp_yrwdxr$ = get_ulp; - package$math.nextUp_yrwdxr$ = nextUp; - package$math.nextDown_yrwdxr$ = nextDown; - package$math.nextTowards_38ydlf$ = nextTowards; - package$math.roundToInt_yrwdxr$ = roundToInt; - package$math.roundToLong_yrwdxr$ = roundToLong; - package$math.abs_za3lpa$ = abs_1; - package$math.get_sign_s8ev3n$ = get_sign_1; - package$math.abs_s8cxhz$ = abs_2; - package$math.min_3pjtqy$ = min_20; - package$math.max_3pjtqy$ = max_20; - package$math.get_sign_mts6qi$ = get_sign_2; - package$text.toBoolean_pdl1vz$ = toBoolean; - package$text.toByte_pdl1vz$ = toByte_0; - package$text.toByte_6ic1pp$ = toByte_1; - package$text.toShort_pdl1vz$ = toShort_0; - package$text.toShort_6ic1pp$ = toShort_1; - package$text.toInt_pdl1vz$ = toInt; - package$text.toInt_6ic1pp$ = toInt_0; - package$text.toLong_pdl1vz$ = toLong; - package$text.toLong_6ic1pp$ = toLong_0; - package$text.toDouble_pdl1vz$ = toDouble; - package$text.toDoubleOrNull_pdl1vz$ = toDoubleOrNull; - package$text.toString_dqglrj$ = toString_3; - package$text.toString_if0zpk$ = toString_2; - package$text.checkRadix_za3lpa$ = checkRadix; - package$text.digitOf_xvg9q0$ = digitOf; - package$kotlin.isNaN_yrwdxr$ = isNaN_1; - package$kotlin.isNaN_81szk$ = isNaN_2; - package$kotlin.isInfinite_yrwdxr$ = isInfinite; - package$kotlin.isInfinite_81szk$ = isInfinite_0; - package$kotlin.isFinite_yrwdxr$ = isFinite; - package$kotlin.isFinite_81szk$ = isFinite_0; - package$js.then_eyvp0y$ = then; - package$js.then_a5sxob$ = then_0; - package$random.defaultPlatformRandom_8be2vx$ = defaultPlatformRandom; - package$random.fastLog2_kcn2v3$ = fastLog2; - package$random.doubleFromParts_6xvm5r$ = doubleFromParts; - package$ranges.rangeTo_38ydlf$ = rangeTo_1; - package$js.get_jsClass_irb06o$ = get_jsClass; - package$js.get_js_1yb8b7$ = get_js; - package$js.get_kotlin_2sk2mx$ = get_kotlin; - var package$js_1 = package$reflect.js || (package$reflect.js = {}); - var package$internal_1 = package$js_1.internal || (package$js_1.internal = {}); - package$internal_1.KClassImpl = KClassImpl; - package$internal_1.SimpleKClassImpl = SimpleKClassImpl; - package$internal_1.PrimitiveKClassImpl = PrimitiveKClassImpl; - Object.defineProperty(package$internal_1, 'NothingKClassImpl', {get: NothingKClassImpl_getInstance}); - Object.defineProperty(package$internal_1, 'PrimitiveClasses', {get: PrimitiveClasses_getInstance}); - _.getKClass = getKClass; - _.getKClassFromExpression = getKClassFromExpression; - Object.defineProperty(RegexOption, 'IGNORE_CASE', {get: RegexOption$IGNORE_CASE_getInstance}); - Object.defineProperty(RegexOption, 'MULTILINE', {get: RegexOption$MULTILINE_getInstance}); - package$text.RegexOption = RegexOption; - package$text.MatchGroup = MatchGroup; - package$text.StringBuilder_init_za3lpa$ = StringBuilder_init; - Object.defineProperty(Regex, 'Companion', {get: Regex$Companion_getInstance}); - package$text.Regex_init_sb3q2$ = Regex_init; - package$text.Regex_init_61zpoe$ = Regex_init_0; - package$text.Regex = Regex; - package$text.Regex_sb3q2$ = Regex_0; - package$text.Regex_61zpoe$ = Regex_1; - package$js.reset_xjqeni$ = reset; - package$js.get_kmxd4d$ = get_0; - package$js.asArray_tgewol$ = asArray; - package$sequences.ConstrainedOnceSequence = ConstrainedOnceSequence; - package$text.String_4hbowm$ = String_1; - package$text.String_8chfmy$ = String_2; - package$text.compareTo_7epoxm$ = compareTo; - package$text.get_CASE_INSENSITIVE_ORDER_6eet4j$ = get_CASE_INSENSITIVE_ORDER; - package$text.startsWith_7epoxm$ = startsWith; - package$text.startsWith_3azpy2$ = startsWith_0; - package$text.endsWith_7epoxm$ = endsWith; - package$text.matches_rjktp$ = matches; - package$text.isBlank_gw00vp$ = isBlank; - package$text.equals_igcy3c$ = equals_0; - package$text.regionMatches_h3ii2q$ = regionMatches; - package$text.capitalize_pdl1vz$ = capitalize; - package$text.decapitalize_pdl1vz$ = decapitalize; - package$text.repeat_94bcnn$ = repeat; - package$text.replace_680rmw$ = replace; - package$text.replace_r2fvfm$ = replace_0; - package$text.replaceFirst_680rmw$ = replaceFirst; - package$text.replaceFirst_r2fvfm$ = replaceFirst_0; - package$text.Appendable = Appendable; - package$text.StringBuilder_init_6bul2c$ = StringBuilder_init_0; - package$text.StringBuilder = StringBuilder; - package$text.clear_dn5lc7$ = clear_0; - package$dom_0.get_NONZERO_mhbikd$ = get_NONZERO; - package$dom_0.get_NONE_xgljrz$ = get_NONE; - package$dom_0.get_DEFAULT_b5608t$ = get_DEFAULT; - package$dom_0.get_DEFAULT_xqeuit$ = get_DEFAULT_0; - package$dom_0.get_LOW_32fsn1$ = get_LOW_0; - package$dom_0.get_CLASSIC_xc77to$ = get_CLASSIC; - var package$fetch = package$w3c.fetch || (package$w3c.fetch = {}); - package$fetch.get_OMIT_yuzaxt$ = get_OMIT; - package$dom_0.get_AUTO_gi1pud$ = get_AUTO_0; - package$dom_0.get_CENTER_ltkif$ = get_CENTER_0; - package$dom_0.get_BORDER_eb1l8y$ = get_BORDER; - package$dom_0.get_LOADING_cuyr1n$ = get_LOADING; - package$dom_0.get_INTERACTIVE_cuyr1n$ = get_INTERACTIVE; - package$dom_0.get_COMPLETE_cuyr1n$ = get_COMPLETE; - package$dom_0.get_EMPTY_k3kzzn$ = get_EMPTY; - package$dom_0.get_MAYBE_k3kzzn$ = get_MAYBE; - package$dom_0.get_PROBABLY_k3kzzn$ = get_PROBABLY; - package$dom_0.get_DISABLED_ygmcel$ = get_DISABLED; - package$dom_0.get_HIDDEN_ygmcel$ = get_HIDDEN; - package$dom_0.get_SHOWING_ygmcel$ = get_SHOWING; - package$dom_0.get_SUBTITLES_fw7o78$ = get_SUBTITLES; - package$dom_0.get_CAPTIONS_fw7o78$ = get_CAPTIONS; - package$dom_0.get_DESCRIPTIONS_fw7o78$ = get_DESCRIPTIONS; - package$dom_0.get_CHAPTERS_fw7o78$ = get_CHAPTERS; - package$dom_0.get_METADATA_fw7o78$ = get_METADATA; - package$dom_0.get_SELECT_efic67$ = get_SELECT; - package$dom_0.get_START_efic67$ = get_START; - package$dom_0.get_END_efic67$ = get_END; - package$dom_0.get_PRESERVE_efic67$ = get_PRESERVE; - package$dom_0.get_EVENODD_mhbikd$ = get_EVENODD; - package$dom_0.get_LOW_lt2gtk$ = get_LOW; - package$dom_0.get_MEDIUM_lt2gtk$ = get_MEDIUM; - package$dom_0.get_HIGH_lt2gtk$ = get_HIGH; - package$dom_0.get_BUTT_w26v20$ = get_BUTT; - package$dom_0.get_ROUND_w26v20$ = get_ROUND; - package$dom_0.get_SQUARE_w26v20$ = get_SQUARE; - package$dom_0.get_ROUND_1xtghu$ = get_ROUND_0; - package$dom_0.get_BEVEL_1xtghu$ = get_BEVEL; - package$dom_0.get_MITER_1xtghu$ = get_MITER; - package$dom_0.get_START_hbi5si$ = get_START_0; - package$dom_0.get_END_hbi5si$ = get_END_0; - package$dom_0.get_LEFT_hbi5si$ = get_LEFT; - package$dom_0.get_RIGHT_hbi5si$ = get_RIGHT; - package$dom_0.get_CENTER_hbi5si$ = get_CENTER; - package$dom_0.get_TOP_oz2y96$ = get_TOP; - package$dom_0.get_HANGING_oz2y96$ = get_HANGING; - package$dom_0.get_MIDDLE_oz2y96$ = get_MIDDLE; - package$dom_0.get_ALPHABETIC_oz2y96$ = get_ALPHABETIC; - package$dom_0.get_IDEOGRAPHIC_oz2y96$ = get_IDEOGRAPHIC; - package$dom_0.get_BOTTOM_oz2y96$ = get_BOTTOM; - package$dom_0.get_LTR_qxot9j$ = get_LTR; - package$dom_0.get_RTL_qxot9j$ = get_RTL; - package$dom_0.get_INHERIT_qxot9j$ = get_INHERIT; - package$dom_0.get_AUTO_huqvoj$ = get_AUTO; - package$dom_0.get_MANUAL_huqvoj$ = get_MANUAL; - package$dom_0.get_FLIPY_xgljrz$ = get_FLIPY; - package$dom_0.get_NONE_b5608t$ = get_NONE_0; - package$dom_0.get_PREMULTIPLY_b5608t$ = get_PREMULTIPLY; - package$dom_0.get_NONE_xqeuit$ = get_NONE_1; - package$dom_0.get_PIXELATED_32fsn1$ = get_PIXELATED; - package$dom_0.get_MEDIUM_32fsn1$ = get_MEDIUM_0; - package$dom_0.get_HIGH_32fsn1$ = get_HIGH_0; - package$dom_0.get_BLOB_qxle9l$ = get_BLOB; - package$dom_0.get_ARRAYBUFFER_qxle9l$ = get_ARRAYBUFFER; - package$dom_0.get_MODULE_xc77to$ = get_MODULE; - package$dom_0.get_OPEN_knhupb$ = get_OPEN; - package$dom_0.get_CLOSED_knhupb$ = get_CLOSED; - package$dom_0.get_INSTANT_gi1pud$ = get_INSTANT; - package$dom_0.get_SMOOTH_gi1pud$ = get_SMOOTH; - package$dom_0.get_START_ltkif$ = get_START_1; - package$dom_0.get_END_ltkif$ = get_END_1; - package$dom_0.get_NEAREST_ltkif$ = get_NEAREST; - package$dom_0.get_MARGIN_eb1l8y$ = get_MARGIN; - package$dom_0.get_PADDING_eb1l8y$ = get_PADDING; - package$dom_0.get_CONTENT_eb1l8y$ = get_CONTENT; - var package$mediacapture = package$dom_0.mediacapture || (package$dom_0.mediacapture = {}); - package$mediacapture.get_LIVE_tsyfvu$ = get_LIVE; - package$mediacapture.get_ENDED_tsyfvu$ = get_ENDED; - package$mediacapture.get_USER_ctcynt$ = get_USER; - package$mediacapture.get_ENVIRONMENT_ctcynt$ = get_ENVIRONMENT; - package$mediacapture.get_LEFT_ctcynt$ = get_LEFT_0; - package$mediacapture.get_RIGHT_ctcynt$ = get_RIGHT_0; - package$mediacapture.get_NONE_qdzhpp$ = get_NONE_2; - package$mediacapture.get_CROP_AND_SCALE_qdzhpp$ = get_CROP_AND_SCALE; - package$mediacapture.get_AUDIOINPUT_bcgeby$ = get_AUDIOINPUT; - package$mediacapture.get_AUDIOOUTPUT_bcgeby$ = get_AUDIOOUTPUT; - package$mediacapture.get_VIDEOINPUT_bcgeby$ = get_VIDEOINPUT; - package$fetch.get_EMPTY_ih0r03$ = get_EMPTY_0; - package$fetch.get_AUDIO_ih0r03$ = get_AUDIO; - package$fetch.get_FONT_ih0r03$ = get_FONT; - package$fetch.get_IMAGE_ih0r03$ = get_IMAGE; - package$fetch.get_SCRIPT_ih0r03$ = get_SCRIPT; - package$fetch.get_STYLE_ih0r03$ = get_STYLE; - package$fetch.get_TRACK_ih0r03$ = get_TRACK; - package$fetch.get_VIDEO_ih0r03$ = get_VIDEO; - package$fetch.get_EMPTY_dgizjn$ = get_EMPTY_1; - package$fetch.get_DOCUMENT_dgizjn$ = get_DOCUMENT; - package$fetch.get_EMBED_dgizjn$ = get_EMBED; - package$fetch.get_FONT_dgizjn$ = get_FONT_0; - package$fetch.get_IMAGE_dgizjn$ = get_IMAGE_0; - package$fetch.get_MANIFEST_dgizjn$ = get_MANIFEST; - package$fetch.get_MEDIA_dgizjn$ = get_MEDIA; - package$fetch.get_OBJECT_dgizjn$ = get_OBJECT; - package$fetch.get_REPORT_dgizjn$ = get_REPORT; - package$fetch.get_SCRIPT_dgizjn$ = get_SCRIPT_0; - package$fetch.get_SERVICEWORKER_dgizjn$ = get_SERVICEWORKER; - package$fetch.get_SHAREDWORKER_dgizjn$ = get_SHAREDWORKER; - package$fetch.get_STYLE_dgizjn$ = get_STYLE_0; - package$fetch.get_WORKER_dgizjn$ = get_WORKER; - package$fetch.get_XSLT_dgizjn$ = get_XSLT; - package$fetch.get_NAVIGATE_jvdbus$ = get_NAVIGATE; - package$fetch.get_SAME_ORIGIN_jvdbus$ = get_SAME_ORIGIN; - package$fetch.get_NO_CORS_jvdbus$ = get_NO_CORS; - package$fetch.get_CORS_jvdbus$ = get_CORS; - package$fetch.get_SAME_ORIGIN_yuzaxt$ = get_SAME_ORIGIN_0; - package$fetch.get_INCLUDE_yuzaxt$ = get_INCLUDE; - package$fetch.get_DEFAULT_iyytcp$ = get_DEFAULT_1; - package$fetch.get_NO_STORE_iyytcp$ = get_NO_STORE; - package$fetch.get_RELOAD_iyytcp$ = get_RELOAD; - package$fetch.get_NO_CACHE_iyytcp$ = get_NO_CACHE; - package$fetch.get_FORCE_CACHE_iyytcp$ = get_FORCE_CACHE; - package$fetch.get_ONLY_IF_CACHED_iyytcp$ = get_ONLY_IF_CACHED; - package$fetch.get_FOLLOW_tow8et$ = get_FOLLOW; - package$fetch.get_ERROR_tow8et$ = get_ERROR; - package$fetch.get_MANUAL_tow8et$ = get_MANUAL_0; - package$fetch.get_BASIC_1el1vz$ = get_BASIC; - package$fetch.get_CORS_1el1vz$ = get_CORS_0; - package$fetch.get_DEFAULT_1el1vz$ = get_DEFAULT_2; - package$fetch.get_ERROR_1el1vz$ = get_ERROR_0; - package$fetch.get_OPAQUE_1el1vz$ = get_OPAQUE; - package$fetch.get_OPAQUEREDIRECT_1el1vz$ = get_OPAQUEREDIRECT; - var package$notifications = package$w3c.notifications || (package$w3c.notifications = {}); - package$notifications.get_AUTO_6wyje4$ = get_AUTO_1; - package$notifications.get_DEFAULT_4wcaio$ = get_DEFAULT_3; - package$notifications.get_DENIED_4wcaio$ = get_DENIED; - package$notifications.get_GRANTED_4wcaio$ = get_GRANTED; - package$notifications.get_LTR_6wyje4$ = get_LTR_0; - package$notifications.get_RTL_6wyje4$ = get_RTL_0; - var package$workers = package$w3c.workers || (package$w3c.workers = {}); - package$workers.get_WINDOW_jpgnoe$ = get_WINDOW; - package$workers.get_INSTALLING_7rndk9$ = get_INSTALLING; - package$workers.get_INSTALLED_7rndk9$ = get_INSTALLED; - package$workers.get_ACTIVATING_7rndk9$ = get_ACTIVATING; - package$workers.get_ACTIVATED_7rndk9$ = get_ACTIVATED; - package$workers.get_REDUNDANT_7rndk9$ = get_REDUNDANT; - package$workers.get_AUXILIARY_1foc4s$ = get_AUXILIARY; - package$workers.get_TOP_LEVEL_1foc4s$ = get_TOP_LEVEL; - package$workers.get_NESTED_1foc4s$ = get_NESTED; - package$workers.get_NONE_1foc4s$ = get_NONE_3; - package$workers.get_WORKER_jpgnoe$ = get_WORKER_0; - package$workers.get_SHAREDWORKER_jpgnoe$ = get_SHAREDWORKER_0; - package$workers.get_ALL_jpgnoe$ = get_ALL; - var package$xhr = package$w3c.xhr || (package$w3c.xhr = {}); - package$xhr.get_EMPTY_8edqmh$ = get_EMPTY_2; - package$xhr.get_ARRAYBUFFER_8edqmh$ = get_ARRAYBUFFER_0; - package$xhr.get_BLOB_8edqmh$ = get_BLOB_0; - package$xhr.get_DOCUMENT_8edqmh$ = get_DOCUMENT_0; - package$xhr.get_JSON_8edqmh$ = get_JSON; - package$xhr.get_TEXT_8edqmh$ = get_TEXT; - Object.defineProperty(Experimental$Level, 'WARNING', {get: Experimental$Level$WARNING_getInstance}); - Object.defineProperty(Experimental$Level, 'ERROR', {get: Experimental$Level$ERROR_getInstance}); - Experimental.Level = Experimental$Level; - package$kotlin.Experimental = Experimental; - package$kotlin.UseExperimental = UseExperimental; - package$kotlin.WasExperimental = WasExperimental; - package$kotlin.BuilderInference = BuilderInference; - package$kotlin.ExperimentalMultiplatform = ExperimentalMultiplatform; - package$kotlin.OptionalExpectation = OptionalExpectation; - package$collections.AbstractCollection = AbstractCollection; - package$collections.AbstractIterator = AbstractIterator; - Object.defineProperty(AbstractList, 'Companion', {get: AbstractList$Companion_getInstance}); - package$collections.AbstractList = AbstractList; - Object.defineProperty(AbstractMap, 'Companion', {get: AbstractMap$Companion_getInstance}); - package$collections.AbstractMap = AbstractMap; - Object.defineProperty(AbstractSet, 'Companion', {get: AbstractSet$Companion_getInstance}); - package$collections.AbstractSet = AbstractSet; - package$collections.flatten_yrqxlj$ = flatten; - package$collections.unzip_v2dak7$ = unzip; - package$collections.contentDeepEqualsImpl = contentDeepEqualsImpl; - package$collections.contentDeepToStringImpl = contentDeepToStringImpl; - Object.defineProperty(package$collections, 'EmptyIterator', {get: EmptyIterator_getInstance}); - Object.defineProperty(package$collections, 'EmptyList', {get: EmptyList_getInstance}); - package$collections.asCollection_vj43ah$ = asCollection; - package$collections.listOf_i5x0yv$ = listOf_0; - package$collections.mutableListOf_i5x0yv$ = mutableListOf_0; - package$collections.arrayListOf_i5x0yv$ = arrayListOf_0; - package$collections.listOfNotNull_issdgt$ = listOfNotNull; - package$collections.listOfNotNull_jurz7g$ = listOfNotNull_0; - package$collections.get_indices_gzk92b$ = get_indices_8; - package$collections.optimizeReadOnlyList_qzupvv$ = optimizeReadOnlyList; - package$collections.binarySearch_jhx6be$ = binarySearch; - package$collections.binarySearch_vikexg$ = binarySearch_0; - package$comparisons.compareValues_s00gnj$ = compareValues; - package$collections.binarySearch_sr7qim$ = binarySearch_1; - package$collections.binarySearchBy_7gj2ve$ = binarySearchBy; - package$collections.throwIndexOverflow = throwIndexOverflow; - package$collections.throwCountOverflow = throwCountOverflow; - package$collections.aggregateTo_qtifb3$ = aggregateTo; - package$collections.aggregate_kz95qp$ = aggregate; - package$collections.fold_2g9ybd$ = fold_11; - package$collections.foldTo_ldb57n$ = foldTo; - package$collections.fold_id3q3f$ = fold_12; - package$collections.foldTo_1dwgsv$ = foldTo_0; - package$collections.reduce_hy0spo$ = reduce_11; - package$collections.reduceTo_vpctix$ = reduceTo; - package$collections.eachCountTo_i5vr9n$ = eachCountTo; - package$collections.IndexedValue = IndexedValue; - package$collections.IndexingIterable = IndexingIterable; - package$collections.collectionSizeOrNull_7wnvza$ = collectionSizeOrNull; - package$collections.convertToSetForSetOperationWith_wo44v8$ = convertToSetForSetOperationWith; - package$collections.convertToSetForSetOperation_tw993d$ = convertToSetForSetOperation; - package$collections.flatten_u0ad8z$ = flatten_0; - package$collections.unzip_6hr0sd$ = unzip_0; - package$collections.withIndex_35ci02$ = withIndex_11; - package$collections.forEach_p594rv$ = forEach_12; - package$collections.IndexingIterator = IndexingIterator; - package$collections.getOrImplicitDefault_t9ocha$ = getOrImplicitDefault; - package$collections.withDefault_jgsead$ = withDefault; - package$collections.withDefault_btzz9u$ = withDefault_0; - package$collections.emptyMap_q3lmfv$ = emptyMap; - package$collections.mapOf_qfcya0$ = mapOf_0; - package$collections.mutableMapOf_qfcya0$ = mutableMapOf_0; - package$collections.hashMapOf_qfcya0$ = hashMapOf_0; - package$collections.linkedMapOf_qfcya0$ = linkedMapOf_0; - package$collections.getOrElseNullable_e54js$ = getOrElseNullable; - package$collections.getValue_t9ocha$ = getValue_2; - package$collections.mapValuesTo_8auxj8$ = mapValuesTo; - package$collections.mapKeysTo_l1xmvz$ = mapKeysTo; - package$collections.putAll_5gv49o$ = putAll; - package$collections.putAll_cweazw$ = putAll_0; - package$collections.putAll_2ud8ki$ = putAll_1; - package$collections.mapValues_8169ik$ = mapValues; - package$collections.mapKeys_8169ik$ = mapKeys; - package$collections.filterKeys_bbcyu0$ = filterKeys; - package$collections.filterValues_btttvb$ = filterValues; - package$collections.filterTo_6i6lq2$ = filterTo_11; - package$collections.filter_9peqz9$ = filter_12; - package$collections.filterNotTo_6i6lq2$ = filterNotTo_11; - package$collections.filterNot_9peqz9$ = filterNot_12; - package$collections.toMap_6hr0sd$ = toMap; - package$collections.toMap_jbpz7q$ = toMap_0; - package$collections.toMap_v2dak7$ = toMap_1; - package$collections.toMap_ujwnei$ = toMap_2; - package$collections.toMap_ah2ab9$ = toMap_3; - package$collections.toMap_vxlxo8$ = toMap_4; - package$collections.toMap_abgq59$ = toMap_5; - package$collections.toMap_d6li1s$ = toMap_6; - package$collections.plus_e8164j$ = plus_42; - package$collections.plus_cm8adq$ = plus_43; - package$collections.plus_z7hp2i$ = plus_44; - package$collections.plus_kc70o4$ = plus_45; - package$collections.plus_iwxh38$ = plus_46; - package$collections.minus_4pa84t$ = minus_11; - package$collections.minus_uk696c$ = minus_12; - package$collections.minus_8blsds$ = minus_13; - package$collections.minus_nyfmny$ = minus_14; - package$collections.removeAll_ipc267$ = removeAll_2; - package$collections.removeAll_ye1y7v$ = removeAll_4; - package$collections.removeAll_tj7pfx$ = removeAll_3; - package$collections.optimizeReadOnlyMap_1vp4qn$ = optimizeReadOnlyMap; - package$collections.addAll_ye1y7v$ = addAll_1; - package$collections.removeAll_uhyeqt$ = removeAll_0; - package$collections.retainAll_uhyeqt$ = retainAll_0; - package$collections.removeAll_qafx1e$ = removeAll_1; - package$collections.retainAll_qafx1e$ = retainAll_1; - package$collections.retainAll_ipc267$ = retainAll_2; - package$collections.retainAll_ye1y7v$ = retainAll_3; - package$collections.retainAll_tj7pfx$ = retainAll_4; - package$collections.shuffle_9jeydg$ = shuffle_0; - package$collections.shuffled_4173s5$ = shuffled_0; - package$collections.asReversed_2p1efm$ = asReversed; - package$collections.asReversed_vvxzk3$ = asReversed_0; - package$sequences.sequence_o0x0bg$ = sequence; - package$sequences.iterator_o0x0bg$ = iterator_3; - package$sequences.SequenceScope = SequenceScope; - package$sequences.asSequence_35ci02$ = asSequence_12; - package$sequences.sequenceOf_i5x0yv$ = sequenceOf; - package$sequences.emptySequence_287e2$ = emptySequence; - package$sequences.ifEmpty_za92oh$ = ifEmpty_2; - package$sequences.flatten_41nmvn$ = flatten_1; - package$sequences.flatten_d9bjs1$ = flatten_2; - package$sequences.unzip_ah2ab9$ = unzip_1; - package$sequences.FilteringSequence = FilteringSequence; - package$sequences.TransformingSequence = TransformingSequence; - package$sequences.TransformingIndexedSequence = TransformingIndexedSequence; - package$sequences.IndexingSequence = IndexingSequence; - package$sequences.MergingSequence = MergingSequence; - package$sequences.FlatteningSequence = FlatteningSequence; - package$sequences.DropTakeSequence = DropTakeSequence; - package$sequences.SubSequence = SubSequence; - package$sequences.TakeSequence = TakeSequence; - package$sequences.TakeWhileSequence = TakeWhileSequence; - package$sequences.DropSequence = DropSequence; - package$sequences.DropWhileSequence = DropWhileSequence; - package$sequences.DistinctSequence = DistinctSequence; - package$sequences.constrainOnce_veqyi0$ = constrainOnce; - package$sequences.generateSequence_9ce4rd$ = generateSequence; - package$sequences.generateSequence_gexuht$ = generateSequence_0; - package$sequences.generateSequence_c6s9hp$ = generateSequence_1; - Object.defineProperty(package$collections, 'EmptySet', {get: EmptySet_getInstance}); - package$collections.emptySet_287e2$ = emptySet; - package$collections.setOf_i5x0yv$ = setOf_0; - package$collections.mutableSetOf_i5x0yv$ = mutableSetOf_0; - package$collections.hashSetOf_i5x0yv$ = hashSetOf_0; - package$collections.linkedSetOf_i5x0yv$ = linkedSetOf_0; - package$collections.optimizeReadOnlySet_94kdbt$ = optimizeReadOnlySet; - package$collections.checkWindowSizeStep_6xvm5r$ = checkWindowSizeStep; - package$collections.windowedSequence_38k18b$ = windowedSequence_1; - package$collections.windowedIterator_4ozct4$ = windowedIterator; - package$collections.MovingSubList = MovingSubList; - package$comparisons.compareValuesBy_d999kh$ = compareValuesBy; - package$comparisons.compareBy_bvgy4j$ = compareBy; - package$comparisons.then_15rrmw$ = then_1; - package$comparisons.thenDescending_15rrmw$ = thenDescending; - package$comparisons.nullsFirst_c94i6r$ = nullsFirst; - package$comparisons.naturalOrder_dahdeg$ = naturalOrder; - package$comparisons.nullsLast_c94i6r$ = nullsLast; - package$comparisons.reverseOrder_dahdeg$ = reverseOrder; - package$comparisons.reversed_2avth4$ = reversed_16; - package$contracts.ExperimentalContracts = ExperimentalContracts; - package$contracts.ContractBuilder = ContractBuilder; - Object.defineProperty(InvocationKind, 'AT_MOST_ONCE', {get: InvocationKind$AT_MOST_ONCE_getInstance}); - Object.defineProperty(InvocationKind, 'AT_LEAST_ONCE', {get: InvocationKind$AT_LEAST_ONCE_getInstance}); - Object.defineProperty(InvocationKind, 'EXACTLY_ONCE', {get: InvocationKind$EXACTLY_ONCE_getInstance}); - Object.defineProperty(InvocationKind, 'UNKNOWN', {get: InvocationKind$UNKNOWN_getInstance}); - package$contracts.Effect = Effect; - package$contracts.ConditionalEffect = ConditionalEffect; - package$contracts.SimpleEffect = SimpleEffect; - package$contracts.Returns = Returns; - package$contracts.ReturnsNotNull = ReturnsNotNull; - package$contracts.CallsInPlace = CallsInPlace; - package$coroutines.Continuation = Continuation; - package$coroutines.RestrictsSuspension = RestrictsSuspension; - package$kotlin.Result = Result; - package$coroutines.createCoroutine_x18nsh$ = createCoroutine; - package$coroutines.createCoroutine_3a617i$ = createCoroutine_0; - package$coroutines.startCoroutine_x18nsh$ = startCoroutine; - package$coroutines.startCoroutine_3a617i$ = startCoroutine_0; - package$intrinsics.get_COROUTINE_SUSPENDED = get_COROUTINE_SUSPENDED; - Object.defineProperty(package$coroutines, 'coroutineContext', {get: get_coroutineContext}); - Object.defineProperty(ContinuationInterceptor, 'Key', {get: ContinuationInterceptor$Key_getInstance}); - package$coroutines.ContinuationInterceptor = ContinuationInterceptor; - CoroutineContext.Key = CoroutineContext$Key; - CoroutineContext.Element = CoroutineContext$Element; - package$coroutines.CoroutineContext = CoroutineContext; - package$coroutines.AbstractCoroutineContextElement = AbstractCoroutineContextElement; - Object.defineProperty(package$coroutines, 'EmptyCoroutineContext', {get: EmptyCoroutineContext_getInstance}); - package$coroutines.CombinedContext = CombinedContext; - Object.defineProperty(package$intrinsics, 'COROUTINE_SUSPENDED', {get: get_COROUTINE_SUSPENDED}); - Object.defineProperty(CoroutineSingletons, 'COROUTINE_SUSPENDED', {get: CoroutineSingletons$COROUTINE_SUSPENDED_getInstance}); - Object.defineProperty(CoroutineSingletons, 'UNDECIDED', {get: CoroutineSingletons$UNDECIDED_getInstance}); - Object.defineProperty(CoroutineSingletons, 'RESUMED', {get: CoroutineSingletons$RESUMED_getInstance}); - package$intrinsics.CoroutineSingletons = CoroutineSingletons; - var package$experimental = package$kotlin.experimental || (package$kotlin.experimental = {}); - package$experimental.ExperimentalTypeInference = ExperimentalTypeInference; - package$internal.NoInfer = NoInfer; - package$internal.Exact = Exact; - package$internal.LowPriorityInOverloadResolution = LowPriorityInOverloadResolution; - package$internal.HidesMembers = HidesMembers; - package$internal.OnlyInputTypes = OnlyInputTypes; - package$internal.InlineOnly = InlineOnly; - package$internal.DynamicExtension = DynamicExtension; - package$internal.AccessibleLateinitPropertyLiteral = AccessibleLateinitPropertyLiteral; - package$internal.RequireKotlin = RequireKotlin; - Object.defineProperty(RequireKotlinVersionKind, 'LANGUAGE_VERSION', {get: RequireKotlinVersionKind$LANGUAGE_VERSION_getInstance}); - Object.defineProperty(RequireKotlinVersionKind, 'COMPILER_VERSION', {get: RequireKotlinVersionKind$COMPILER_VERSION_getInstance}); - Object.defineProperty(RequireKotlinVersionKind, 'API_VERSION', {get: RequireKotlinVersionKind$API_VERSION_getInstance}); - package$internal.RequireKotlinVersionKind = RequireKotlinVersionKind; - package$internal.ContractsDsl = ContractsDsl; - var package$properties = package$kotlin.properties || (package$kotlin.properties = {}); - package$properties.ObservableProperty = ObservableProperty; - Object.defineProperty(package$properties, 'Delegates', {get: Delegates_getInstance}); - package$properties.ReadOnlyProperty = ReadOnlyProperty; - package$properties.ReadWriteProperty = ReadWriteProperty; - Object.defineProperty(Random, 'Default', {get: Random$Default_getInstance}); - Object.defineProperty(Random, 'Companion', {get: Random$Companion_getInstance}); - package$random.Random_za3lpa$ = Random_0; - package$random.Random_s8cxhz$ = Random_1; - package$random.nextInt_ixthlz$ = nextInt; - package$random.nextLong_lq3jag$ = nextLong; - package$random.takeUpperBits_b6l1hq$ = takeUpperBits; - package$random.checkRangeBounds_6xvm5r$ = checkRangeBounds; - package$random.checkRangeBounds_cfj5zr$ = checkRangeBounds_0; - package$random.checkRangeBounds_sdh6z7$ = checkRangeBounds_1; - package$random.boundsErrorMessage_dgzutr$ = boundsErrorMessage; - package$random.nextUInt_j8mu42$ = nextUInt; - package$random.nextUInt_nppi6x$ = nextUInt_0; - package$random.nextUInt_3yup1w$ = nextUInt_1; - package$random.nextUInt_d63giy$ = nextUInt_2; - package$random.nextULong_j8mu42$ = nextULong; - package$random.nextULong_otw1ua$ = nextULong_0; - package$random.nextULong_3bt3ku$ = nextULong_1; - package$random.nextULong_f33ad7$ = nextULong_2; - package$random.nextUBytes_dg37c5$ = nextUBytes; - package$random.nextUBytes_wucvsg$ = nextUBytes_0; - package$random.nextUBytes_h8e49n$ = nextUBytes_1; - package$random.checkUIntRangeBounds_xgezkr$ = checkUIntRangeBounds; - package$random.checkULongRangeBounds_jmpl8x$ = checkULongRangeBounds; - package$random.XorWowRandom_init_6xvm5r$ = XorWowRandom_init; - package$random.XorWowRandom = XorWowRandom; - package$ranges.ClosedFloatingPointRange = ClosedFloatingPointRange; - package$ranges.rangeTo_8xshf9$ = rangeTo_0; - package$ranges.checkStepIsPositive_44uddq$ = checkStepIsPositive; - package$text.equals_4lte5s$ = equals_1; - package$text.isSurrogate_myv2d0$ = isSurrogate; - package$text.trimMargin_rjktp$ = trimMargin; - package$text.replaceIndentByMargin_j4ogox$ = replaceIndentByMargin; - package$text.trimIndent_pdl1vz$ = trimIndent; - package$text.replaceIndent_rjktp$ = replaceIndent; - package$text.prependIndent_rjktp$ = prependIndent; - package$text.append_1mr2mh$ = append; - package$text.append_4v9nlb$ = append_0; - package$text.append_s3yiwm$ = append_1; - package$text.appendElement_k2zgzt$ = appendElement_0; - package$text.toByteOrNull_pdl1vz$ = toByteOrNull; - package$text.toByteOrNull_6ic1pp$ = toByteOrNull_0; - package$text.toShortOrNull_pdl1vz$ = toShortOrNull; - package$text.toShortOrNull_6ic1pp$ = toShortOrNull_0; - package$text.toIntOrNull_pdl1vz$ = toIntOrNull; - package$text.toIntOrNull_6ic1pp$ = toIntOrNull_0; - package$text.toLongOrNull_pdl1vz$ = toLongOrNull; - package$text.toLongOrNull_6ic1pp$ = toLongOrNull_0; - package$text.numberFormatError_y4putb$ = numberFormatError; - package$text.trim_2pivbd$ = trim; - package$text.trim_ouje1d$ = trim_0; - package$text.trimStart_2pivbd$ = trimStart; - package$text.trimStart_ouje1d$ = trimStart_0; - package$text.trimEnd_2pivbd$ = trimEnd; - package$text.trimEnd_ouje1d$ = trimEnd_0; - package$text.trim_8d0cet$ = trim_1; - package$text.trim_wqw3xr$ = trim_2; - package$text.trimStart_8d0cet$ = trimStart_1; - package$text.trimStart_wqw3xr$ = trimStart_2; - package$text.trimEnd_8d0cet$ = trimEnd_1; - package$text.trimEnd_wqw3xr$ = trimEnd_2; - package$text.trim_gw00vp$ = trim_3; - package$text.trimStart_gw00vp$ = trimStart_3; - package$text.trimEnd_gw00vp$ = trimEnd_3; - package$text.padStart_yk9sg4$ = padStart; - package$text.padStart_vrc1nu$ = padStart_0; - package$text.padEnd_yk9sg4$ = padEnd; - package$text.padEnd_vrc1nu$ = padEnd_0; - package$text.hasSurrogatePairAt_94bcnn$ = hasSurrogatePairAt; - package$text.substring_fc3b62$ = substring_1; - package$text.subSequence_i511yc$ = subSequence_0; - package$text.substring_i511yc$ = substring_3; - package$text.substringBefore_8cymmc$ = substringBefore; - package$text.substringBefore_j4ogox$ = substringBefore_0; - package$text.substringAfter_8cymmc$ = substringAfter; - package$text.substringAfter_j4ogox$ = substringAfter_0; - package$text.substringBeforeLast_8cymmc$ = substringBeforeLast; - package$text.substringBeforeLast_j4ogox$ = substringBeforeLast_0; - package$text.substringAfterLast_8cymmc$ = substringAfterLast; - package$text.substringAfterLast_j4ogox$ = substringAfterLast_0; - package$text.replaceRange_p5j4qv$ = replaceRange; - package$text.replaceRange_r6gztw$ = replaceRange_1; - package$text.removeRange_qdpigv$ = removeRange; - package$text.removeRange_i511yc$ = removeRange_1; - package$text.removePrefix_b6aurr$ = removePrefix; - package$text.removePrefix_gsj5wt$ = removePrefix_0; - package$text.removeSuffix_b6aurr$ = removeSuffix; - package$text.removeSuffix_gsj5wt$ = removeSuffix_0; - package$text.removeSurrounding_xhcipd$ = removeSurrounding; - package$text.removeSurrounding_90ijwr$ = removeSurrounding_0; - package$text.removeSurrounding_b6aurr$ = removeSurrounding_1; - package$text.removeSurrounding_gsj5wt$ = removeSurrounding_2; - package$text.replaceBefore_gvb6y2$ = replaceBefore; - package$text.replaceBefore_q1ioxb$ = replaceBefore_0; - package$text.replaceAfter_gvb6y2$ = replaceAfter; - package$text.replaceAfter_q1ioxb$ = replaceAfter_0; - package$text.replaceAfterLast_q1ioxb$ = replaceAfterLast; - package$text.replaceAfterLast_gvb6y2$ = replaceAfterLast_0; - package$text.replaceBeforeLast_gvb6y2$ = replaceBeforeLast; - package$text.replaceBeforeLast_q1ioxb$ = replaceBeforeLast_0; - package$text.regionMatchesImpl_4c7s8r$ = regionMatchesImpl; - package$text.startsWith_sgbm27$ = startsWith_1; - package$text.endsWith_sgbm27$ = endsWith_0; - package$text.startsWith_li3zpu$ = startsWith_2; - package$text.startsWith_pebkaa$ = startsWith_3; - package$text.endsWith_li3zpu$ = endsWith_1; - package$text.commonPrefixWith_li3zpu$ = commonPrefixWith; - package$text.commonSuffixWith_li3zpu$ = commonSuffixWith; - package$text.indexOfAny_junqau$ = indexOfAny; - package$text.lastIndexOfAny_junqau$ = lastIndexOfAny; - package$text.findAnyOf_7utkvz$ = findAnyOf_0; - package$text.findLastAnyOf_7utkvz$ = findLastAnyOf; - package$text.indexOfAny_7utkvz$ = indexOfAny_0; - package$text.lastIndexOfAny_7utkvz$ = lastIndexOfAny_0; - package$text.indexOf_8eortd$ = indexOf_12; - package$text.indexOf_l5u8uk$ = indexOf_13; - package$text.lastIndexOf_8eortd$ = lastIndexOf_11; - package$text.lastIndexOf_l5u8uk$ = lastIndexOf_12; - package$text.contains_li3zpu$ = contains_47; - package$text.contains_sgbm27$ = contains_48; - package$text.splitToSequence_ip8yn$ = splitToSequence; - package$text.split_ip8yn$ = split; - package$text.splitToSequence_o64adg$ = splitToSequence_0; - package$text.split_o64adg$ = split_0; - package$text.lineSequence_gw00vp$ = lineSequence; - package$text.lines_gw00vp$ = lines; - Object.defineProperty(package$text, 'Typography', {get: Typography_getInstance}); - package$text.MatchGroupCollection = MatchGroupCollection; - package$text.MatchNamedGroupCollection = MatchNamedGroupCollection; - MatchResult.Destructured = MatchResult$Destructured; - package$text.MatchResult = MatchResult; - Object.defineProperty(KotlinVersion, 'Companion', {get: KotlinVersion$Companion_getInstance}); - package$kotlin.KotlinVersion_init_vux9f0$ = KotlinVersion_init; - package$kotlin.KotlinVersion = KotlinVersion; - package$kotlin.Lazy = Lazy; - package$kotlin.lazyOf_mh5how$ = lazyOf; - Object.defineProperty(LazyThreadSafetyMode, 'SYNCHRONIZED', {get: LazyThreadSafetyMode$SYNCHRONIZED_getInstance}); - Object.defineProperty(LazyThreadSafetyMode, 'PUBLICATION', {get: LazyThreadSafetyMode$PUBLICATION_getInstance}); - Object.defineProperty(LazyThreadSafetyMode, 'NONE', {get: LazyThreadSafetyMode$NONE_getInstance}); - package$kotlin.LazyThreadSafetyMode = LazyThreadSafetyMode; - Object.defineProperty(package$kotlin, 'UNINITIALIZED_VALUE', {get: UNINITIALIZED_VALUE_getInstance}); - package$kotlin.UnsafeLazyImpl = UnsafeLazyImpl; - package$kotlin.InitializedLazyImpl = InitializedLazyImpl; - package$kotlin.createFailure_tcv7n7$ = createFailure; - Object.defineProperty(Result, 'Companion', {get: Result$Companion_getInstance}); - Result.Failure = Result$Failure; - package$kotlin.throwOnFailure_iacion$ = throwOnFailure; - package$kotlin.NotImplementedError = NotImplementedError; - package$kotlin.Pair = Pair; - package$kotlin.to_ujzrz7$ = to; - package$kotlin.toList_tt9upe$ = toList_12; - package$kotlin.Triple = Triple; - package$kotlin.toList_z6mquf$ = toList_13; - Object.defineProperty(UByte, 'Companion', {get: UByte$Companion_getInstance}); - package$kotlin.UByte = UByte; - package$kotlin.UByteArray_init_za3lpa$ = UByteArray_init; - package$kotlin.UByteArray = UByteArray; - Object.defineProperty(UInt, 'Companion', {get: UInt$Companion_getInstance}); - package$kotlin.uintCompare_vux9f0$ = uintCompare; - package$kotlin.uintDivide_oqfnby$ = uintDivide; - package$kotlin.uintRemainder_oqfnby$ = uintRemainder; - package$kotlin.UInt = UInt; - package$kotlin.UIntArray_init_za3lpa$ = UIntArray_init; - package$kotlin.UIntArray = UIntArray; - Object.defineProperty(UIntRange, 'Companion', {get: UIntRange$Companion_getInstance}); - package$ranges.UIntRange = UIntRange; - Object.defineProperty(UIntProgression, 'Companion', {get: UIntProgression$Companion_getInstance}); - package$ranges.UIntProgression = UIntProgression; - package$collections.UByteIterator = UByteIterator; - package$collections.UShortIterator = UShortIterator; - package$collections.UIntIterator = UIntIterator; - package$collections.ULongIterator = ULongIterator; - Object.defineProperty(ULong, 'Companion', {get: ULong$Companion_getInstance}); - package$kotlin.ulongCompare_3pjtqy$ = ulongCompare; - package$kotlin.ulongDivide_jpm79w$ = ulongDivide; - package$kotlin.ulongRemainder_jpm79w$ = ulongRemainder; - package$kotlin.ULong = ULong; - package$kotlin.ULongArray_init_za3lpa$ = ULongArray_init; - package$kotlin.ULongArray = ULongArray; - Object.defineProperty(ULongRange_0, 'Companion', {get: ULongRange$Companion_getInstance}); - package$ranges.ULongRange = ULongRange_0; - Object.defineProperty(ULongProgression, 'Companion', {get: ULongProgression$Companion_getInstance}); - package$ranges.ULongProgression = ULongProgression; - package$internal.getProgressionLastElement_fjk8us$ = getProgressionLastElement_1; - package$internal.getProgressionLastElement_15zasp$ = getProgressionLastElement_2; - Object.defineProperty(UShort, 'Companion', {get: UShort$Companion_getInstance}); - package$kotlin.UShort = UShort; - package$kotlin.UShortArray_init_za3lpa$ = UShortArray_init; - package$kotlin.UShortArray = UShortArray; - package$text.toString_aogav3$ = toString_4; - package$text.toString_pqjt0d$ = toString_5; - package$text.toString_k13f4a$ = toString_6; - package$text.toString_hc3rh$ = toString_7; - package$text.toUByte_pdl1vz$ = toUByte_3; - package$text.toUByte_6ic1pp$ = toUByte_4; - package$text.toUShort_pdl1vz$ = toUShort_3; - package$text.toUShort_6ic1pp$ = toUShort_4; - package$text.toUInt_pdl1vz$ = toUInt_3; - package$text.toUInt_6ic1pp$ = toUInt_4; - package$text.toULong_pdl1vz$ = toULong_3; - package$text.toULong_6ic1pp$ = toULong_4; - package$text.toUByteOrNull_pdl1vz$ = toUByteOrNull; - package$text.toUByteOrNull_6ic1pp$ = toUByteOrNull_0; - package$text.toUShortOrNull_pdl1vz$ = toUShortOrNull; - package$text.toUShortOrNull_6ic1pp$ = toUShortOrNull_0; - package$text.toUIntOrNull_pdl1vz$ = toUIntOrNull; - package$text.toUIntOrNull_6ic1pp$ = toUIntOrNull_0; - package$text.toULongOrNull_pdl1vz$ = toULongOrNull; - package$text.toULongOrNull_6ic1pp$ = toULongOrNull_0; - package$kotlin.ulongToString_8e33dg$ = ulongToString; - package$kotlin.ulongToString_plstum$ = ulongToString_0; - package$kotlin.ExperimentalUnsignedTypes = ExperimentalUnsignedTypes; - MutableMap.prototype.getOrDefault_xwzc9p$ = Map.prototype.getOrDefault_xwzc9p$; - AbstractMap.prototype.getOrDefault_xwzc9p$ = Map.prototype.getOrDefault_xwzc9p$; - AbstractMutableMap.prototype.remove_xwzc9p$ = MutableMap.prototype.remove_xwzc9p$; - InternalHashCodeMap.prototype.createJsMap = InternalMap.prototype.createJsMap; - InternalStringMap.prototype.createJsMap = InternalMap.prototype.createJsMap; - Object.defineProperty(findNext$ObjectLiteral.prototype, 'destructured', Object.getOwnPropertyDescriptor(MatchResult.prototype, 'destructured')); - MapWithDefault.prototype.getOrDefault_xwzc9p$ = Map.prototype.getOrDefault_xwzc9p$; - MutableMapWithDefault.prototype.remove_xwzc9p$ = MutableMap.prototype.remove_xwzc9p$; - MutableMapWithDefault.prototype.getOrDefault_xwzc9p$ = MutableMap.prototype.getOrDefault_xwzc9p$; - MapWithDefaultImpl.prototype.getOrDefault_xwzc9p$ = MapWithDefault.prototype.getOrDefault_xwzc9p$; - MutableMapWithDefaultImpl.prototype.remove_xwzc9p$ = MutableMapWithDefault.prototype.remove_xwzc9p$; - MutableMapWithDefaultImpl.prototype.getOrDefault_xwzc9p$ = MutableMapWithDefault.prototype.getOrDefault_xwzc9p$; - EmptyMap.prototype.getOrDefault_xwzc9p$ = Map.prototype.getOrDefault_xwzc9p$; - CoroutineContext$Element.prototype.plus_1fupul$ = CoroutineContext.prototype.plus_1fupul$; - ContinuationInterceptor.prototype.fold_3cc69b$ = CoroutineContext$Element.prototype.fold_3cc69b$; - ContinuationInterceptor.prototype.plus_1fupul$ = CoroutineContext$Element.prototype.plus_1fupul$; - AbstractCoroutineContextElement.prototype.get_j3r2sn$ = CoroutineContext$Element.prototype.get_j3r2sn$; - AbstractCoroutineContextElement.prototype.fold_3cc69b$ = CoroutineContext$Element.prototype.fold_3cc69b$; - AbstractCoroutineContextElement.prototype.minusKey_yeqjby$ = CoroutineContext$Element.prototype.minusKey_yeqjby$; - AbstractCoroutineContextElement.prototype.plus_1fupul$ = CoroutineContext$Element.prototype.plus_1fupul$; - CombinedContext.prototype.plus_1fupul$ = CoroutineContext.prototype.plus_1fupul$; - ComparableRange.prototype.contains_mef7kx$ = ClosedRange.prototype.contains_mef7kx$; - ComparableRange.prototype.isEmpty = ClosedRange.prototype.isEmpty; - PI = 3.141592653589793; - E = 2.718281828459045; - _stableSortingIsSupported = null; - var isNode = typeof process !== 'undefined' && process.versions && !!process.versions.node; - output = isNode ? new NodeJsOutput(process.stdout) : new BufferedOutputToConsoleLog(); - function Continuation$ObjectLiteral(closure$context, closure$resumeWith) { - this.closure$context = closure$context; - this.closure$resumeWith = closure$resumeWith; - } - Object.defineProperty(Continuation$ObjectLiteral.prototype, 'context', {get: function () { - return this.closure$context; - }}); - Continuation$ObjectLiteral.prototype.resumeWith_tl1gpc$ = function (result) { - this.closure$resumeWith(result); - }; - Continuation$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Continuation]}; - EmptyContinuation = new Continuation$ObjectLiteral(EmptyCoroutineContext_getInstance(), EmptyContinuation$lambda); - INV_2_26 = Math_0.pow(2.0, -26); - INV_2_53 = Math_0.pow(2.0, -53); - functionClasses = Kotlin.newArray(0, null); - function Comparator$ObjectLiteral_1(closure$comparison) { - this.closure$comparison = closure$comparison; - } - Comparator$ObjectLiteral_1.prototype.compare = function (a, b) { - return this.closure$comparison(a, b); - }; - Comparator$ObjectLiteral_1.$metadata$ = {kind: Kind_CLASS, interfaces: [Comparator]}; - STRING_CASE_INSENSITIVE_ORDER = new Comparator$ObjectLiteral_1(STRING_CASE_INSENSITIVE_ORDER$lambda); - INT_MAX_POWER_OF_TWO = 1073741824; - State_NotReady = 0; - State_ManyNotReady = 1; - State_ManyReady = 2; - State_Ready = 3; - State_Done = 4; - State_Failed = 5; - Kotlin.defineModule('kotlin', _); - - }()); - (function() { - 'use strict'; - var Kind_CLASS = Kotlin.Kind.CLASS; - var Any = Object; - var IllegalStateException_init = Kotlin.kotlin.IllegalStateException_init_pdl1vj$; - var defineInlineFunction = Kotlin.defineInlineFunction; - var wrapFunction = Kotlin.wrapFunction; - var Kind_OBJECT = Kotlin.Kind.OBJECT; - var Kind_INTERFACE = Kotlin.Kind.INTERFACE; - var throwCCE = Kotlin.throwCCE; - var equals = Kotlin.equals; - var hashCode = Kotlin.hashCode; - var toString = Kotlin.toString; - var Annotation = Kotlin.kotlin.Annotation; - var Unit = Kotlin.kotlin.Unit; - var Collection = Kotlin.kotlin.collections.Collection; - var ensureNotNull = Kotlin.ensureNotNull; - var NoSuchElementException_init = Kotlin.kotlin.NoSuchElementException_init; - var Iterator = Kotlin.kotlin.collections.Iterator; - SequenceBuilderIterator.prototype = Object.create(SequenceBuilder.prototype); - SequenceBuilderIterator.prototype.constructor = SequenceBuilderIterator; - function CoroutineImpl(resultContinuation) { - this.resultContinuation_0 = resultContinuation; - this.state_0 = 0; - this.exceptionState_0 = 0; - this.result_0 = null; - this.exception_0 = null; - this.finallyPath_0 = null; - this.context_xate5b$_0 = this.resultContinuation_0.context; - var tmp$, tmp$_0; - this.facade = (tmp$_0 = (tmp$ = this.context.get_8oh8b3$(ContinuationInterceptor$Key_getInstance())) != null ? tmp$.interceptContinuation_n4f53e$(this) : null) != null ? tmp$_0 : this; - } - Object.defineProperty(CoroutineImpl.prototype, 'context', {get: function () { - return this.context_xate5b$_0; - }}); - CoroutineImpl.prototype.resume_11rb$ = function (value) { - this.result_0 = value; - this.doResumeWrapper_0(); - }; - CoroutineImpl.prototype.resumeWithException_tcv7n7$ = function (exception) { - this.state_0 = this.exceptionState_0; - this.exception_0 = exception; - this.doResumeWrapper_0(); - }; - var Throwable = Error; - CoroutineImpl.prototype.doResumeWrapper_0 = function () { - var completion = this.resultContinuation_0; - var tmp$; - try { - var result = this.doResume(); - if (result !== COROUTINE_SUSPENDED) { - (Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE()).resume_11rb$(result); - } - } - catch (t) { - if (Kotlin.isType(t, Throwable)) { - completion.resumeWithException_tcv7n7$(t); - } - else - throw t; - } - }; - CoroutineImpl.$metadata$ = {kind: Kind_CLASS, simpleName: 'CoroutineImpl', interfaces: [Continuation]}; - var UNDECIDED; - var RESUMED; - function Fail(exception) { - this.exception = exception; - } - Fail.$metadata$ = {kind: Kind_CLASS, simpleName: 'Fail', interfaces: []}; - function SafeContinuation(delegate, initialResult) { - this.delegate_0 = delegate; - this.result_0 = initialResult; - } - Object.defineProperty(SafeContinuation.prototype, 'context', {get: function () { - return this.delegate_0.context; - }}); - SafeContinuation.prototype.resume_11rb$ = function (value) { - if (this.result_0 === UNDECIDED) - this.result_0 = value; - else if (this.result_0 === COROUTINE_SUSPENDED) { - this.result_0 = RESUMED; - this.delegate_0.resume_11rb$(value); - } - else { - throw IllegalStateException_init('Already resumed'); - } - }; - SafeContinuation.prototype.resumeWithException_tcv7n7$ = function (exception) { - if (this.result_0 === UNDECIDED) - this.result_0 = new Fail(exception); - else if (this.result_0 === COROUTINE_SUSPENDED) { - this.result_0 = RESUMED; - this.delegate_0.resumeWithException_tcv7n7$(exception); - } - else { - throw IllegalStateException_init('Already resumed'); - } - }; - SafeContinuation.prototype.getResult = function () { - var tmp$; - if (this.result_0 === UNDECIDED) { - this.result_0 = COROUTINE_SUSPENDED; - } - var result = this.result_0; - if (result === RESUMED) - tmp$ = COROUTINE_SUSPENDED; - else if (Kotlin.isType(result, Fail)) - throw result.exception; - else { - tmp$ = result; - } - return tmp$; - }; - SafeContinuation.$metadata$ = {kind: Kind_CLASS, simpleName: 'SafeContinuation', interfaces: [Continuation]}; - function SafeContinuation_init(delegate, $this) { - $this = $this || Object.create(SafeContinuation.prototype); - SafeContinuation.call($this, delegate, UNDECIDED); - return $this; - } - var startCoroutineUninterceptedOrReturn = defineInlineFunction('kotlin.kotlin.coroutines.experimental.intrinsics.startCoroutineUninterceptedOrReturn_xtwlez$', function ($receiver, completion) { - return $receiver(completion, false); - }); - var startCoroutineUninterceptedOrReturn_0 = defineInlineFunction('kotlin.kotlin.coroutines.experimental.intrinsics.startCoroutineUninterceptedOrReturn_uao1qo$', function ($receiver, receiver, completion) { - return $receiver(receiver, completion, false); - }); - function createCoroutineUnchecked($receiver, receiver, completion) { - return $receiver(receiver, completion, true).facade; - } - function createCoroutineUnchecked_0($receiver, completion) { - return $receiver(completion, true).facade; - } - var COROUTINE_SUSPENDED; - function CoroutineSuspendedMarker() { - CoroutineSuspendedMarker_instance = this; - } - CoroutineSuspendedMarker.$metadata$ = {kind: Kind_OBJECT, simpleName: 'CoroutineSuspendedMarker', interfaces: []}; - var CoroutineSuspendedMarker_instance = null; - function CoroutineSuspendedMarker_getInstance() { - if (CoroutineSuspendedMarker_instance === null) { - new CoroutineSuspendedMarker(); - } - return CoroutineSuspendedMarker_instance; - } - function ContinuationInterceptor() { - ContinuationInterceptor$Key_getInstance(); - } - function ContinuationInterceptor$Key() { - ContinuationInterceptor$Key_instance = this; - } - ContinuationInterceptor$Key.$metadata$ = {kind: Kind_OBJECT, simpleName: 'Key', interfaces: [CoroutineContext$Key]}; - var ContinuationInterceptor$Key_instance = null; - function ContinuationInterceptor$Key_getInstance() { - if (ContinuationInterceptor$Key_instance === null) { - new ContinuationInterceptor$Key(); - } - return ContinuationInterceptor$Key_instance; - } - ContinuationInterceptor.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'ContinuationInterceptor', interfaces: [CoroutineContext$Element]}; - function CoroutineContext() { - } - function CoroutineContext$plus$lambda(acc, element) { - var removed = acc.minusKey_ds72xk$(element.key); - if (removed === EmptyCoroutineContext_getInstance()) - return element; - else { - var interceptor = removed.get_8oh8b3$(ContinuationInterceptor$Key_getInstance()); - if (interceptor == null) - return new CombinedContext(removed, element); - else { - var left = removed.minusKey_ds72xk$(ContinuationInterceptor$Key_getInstance()); - return left === EmptyCoroutineContext_getInstance() ? new CombinedContext(element, interceptor) : new CombinedContext(new CombinedContext(left, element), interceptor); - } - } - } - CoroutineContext.prototype.plus_dvqyjb$ = function (context) { - return context === EmptyCoroutineContext_getInstance() ? this : context.fold_m9u1mr$(this, CoroutineContext$plus$lambda); - }; - function CoroutineContext$Element() { - } - CoroutineContext$Element.prototype.get_8oh8b3$ = function (key) { - var tmp$; - return this.key === key ? Kotlin.isType(tmp$ = this, CoroutineContext$Element) ? tmp$ : throwCCE() : null; - }; - CoroutineContext$Element.prototype.fold_m9u1mr$ = function (initial, operation) { - return operation(initial, this); - }; - CoroutineContext$Element.prototype.minusKey_ds72xk$ = function (key) { - return this.key === key ? EmptyCoroutineContext_getInstance() : this; - }; - CoroutineContext$Element.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Element', interfaces: [CoroutineContext]}; - function CoroutineContext$Key() { - } - CoroutineContext$Key.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Key', interfaces: []}; - CoroutineContext.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'CoroutineContext', interfaces: []}; - function AbstractCoroutineContextElement(key) { - this.key_5qfgrq$_0 = key; - } - Object.defineProperty(AbstractCoroutineContextElement.prototype, 'key', {get: function () { - return this.key_5qfgrq$_0; - }}); - AbstractCoroutineContextElement.$metadata$ = {kind: Kind_CLASS, simpleName: 'AbstractCoroutineContextElement', interfaces: [CoroutineContext$Element]}; - function EmptyCoroutineContext() { - EmptyCoroutineContext_instance = this; - } - EmptyCoroutineContext.prototype.get_8oh8b3$ = function (key) { - return null; - }; - EmptyCoroutineContext.prototype.fold_m9u1mr$ = function (initial, operation) { - return initial; - }; - EmptyCoroutineContext.prototype.plus_dvqyjb$ = function (context) { - return context; - }; - EmptyCoroutineContext.prototype.minusKey_ds72xk$ = function (key) { - return this; - }; - EmptyCoroutineContext.prototype.hashCode = function () { - return 0; - }; - EmptyCoroutineContext.prototype.toString = function () { - return 'EmptyCoroutineContext'; - }; - EmptyCoroutineContext.$metadata$ = {kind: Kind_OBJECT, simpleName: 'EmptyCoroutineContext', interfaces: [CoroutineContext]}; - var EmptyCoroutineContext_instance = null; - function EmptyCoroutineContext_getInstance() { - if (EmptyCoroutineContext_instance === null) { - new EmptyCoroutineContext(); - } - return EmptyCoroutineContext_instance; - } - function CombinedContext(left, element) { - this.left = left; - this.element = element; - } - CombinedContext.prototype.get_8oh8b3$ = function (key) { - var tmp$; - var cur = this; - while (true) { - if ((tmp$ = cur.element.get_8oh8b3$(key)) != null) { - return tmp$; - } - var next = cur.left; - if (Kotlin.isType(next, CombinedContext)) { - cur = next; - } - else { - return next.get_8oh8b3$(key); - } - } - }; - CombinedContext.prototype.fold_m9u1mr$ = function (initial, operation) { - return operation(this.left.fold_m9u1mr$(initial, operation), this.element); - }; - CombinedContext.prototype.minusKey_ds72xk$ = function (key) { - var tmp$; - if (this.element.get_8oh8b3$(key) != null) { - return this.left; - } - var newLeft = this.left.minusKey_ds72xk$(key); - if (newLeft === this.left) - tmp$ = this; - else if (newLeft === EmptyCoroutineContext_getInstance()) - tmp$ = this.element; - else - tmp$ = new CombinedContext(newLeft, this.element); - return tmp$; - }; - CombinedContext.prototype.size_0 = function () { - return Kotlin.isType(this.left, CombinedContext) ? this.left.size_0() + 1 | 0 : 2; - }; - CombinedContext.prototype.contains_0 = function (element) { - return equals(this.get_8oh8b3$(element.key), element); - }; - CombinedContext.prototype.containsAll_0 = function (context) { - var tmp$; - var cur = context; - while (true) { - if (!this.contains_0(cur.element)) - return false; - var next = cur.left; - if (Kotlin.isType(next, CombinedContext)) { - cur = next; - } - else { - return this.contains_0(Kotlin.isType(tmp$ = next, CoroutineContext$Element) ? tmp$ : throwCCE()); - } - } - }; - CombinedContext.prototype.equals = function (other) { - return this === other || (Kotlin.isType(other, CombinedContext) && other.size_0() === this.size_0() && other.containsAll_0(this)); - }; - CombinedContext.prototype.hashCode = function () { - return hashCode(this.left) + hashCode(this.element) | 0; - }; - function CombinedContext$toString$lambda(acc, element) { - return acc.length === 0 ? element.toString() : acc + ', ' + toString(element); - } - CombinedContext.prototype.toString = function () { - return '[' + this.fold_m9u1mr$('', CombinedContext$toString$lambda) + ']'; - }; - CombinedContext.$metadata$ = {kind: Kind_CLASS, simpleName: 'CombinedContext', interfaces: [CoroutineContext]}; - function Continuation() { - } - Continuation.$metadata$ = {kind: Kind_INTERFACE, simpleName: 'Continuation', interfaces: []}; - function RestrictsSuspension() { - } - RestrictsSuspension.$metadata$ = {kind: Kind_CLASS, simpleName: 'RestrictsSuspension', interfaces: [Annotation]}; - function startCoroutine($receiver, receiver, completion) { - createCoroutineUnchecked($receiver, receiver, completion).resume_11rb$(Unit); - } - function startCoroutine_0($receiver, completion) { - createCoroutineUnchecked_0($receiver, completion).resume_11rb$(Unit); - } - function createCoroutine($receiver, receiver, completion) { - return new SafeContinuation(createCoroutineUnchecked($receiver, receiver, completion), COROUTINE_SUSPENDED); - } - function createCoroutine_0($receiver, completion) { - return new SafeContinuation(createCoroutineUnchecked_0($receiver, completion), COROUTINE_SUSPENDED); - } - function suspendCoroutine$lambda(closure$block) { - return function (c) { - var safe = SafeContinuation_init(c); - closure$block(safe); - return safe.getResult(); - }; - } - function suspendCoroutineOrReturn$lambda(closure$block) { - return function (cont) { - return closure$block(cont.facade); - }; - } - function suspendCoroutine(block_0, continuation) { - return suspendCoroutineOrReturn$lambda(suspendCoroutine$lambda(block_0))(continuation); - } - defineInlineFunction('kotlin.kotlin.coroutines.experimental.suspendCoroutine_z3e1t3$', wrapFunction(function () { - var SafeContinuation_init = _.kotlin.coroutines.experimental.SafeContinuation_init_n4f53e$; - function suspendCoroutine$lambda(closure$block) { - return function (c) { - var safe = SafeContinuation_init(c); - closure$block(safe); - return safe.getResult(); - }; - } - function suspendCoroutineOrReturn$lambda(closure$block) { - return function (cont) { - return closure$block(cont.facade); - }; - } - return function (block_0, continuation) { - Kotlin.suspendCall(suspendCoroutineOrReturn$lambda(suspendCoroutine$lambda(block_0))(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - }; - })); - var get_coroutineContext = defineInlineFunction('kotlin.kotlin.coroutines.experimental.get_coroutineContext', wrapFunction(function () { - var NotImplementedError_init = Kotlin.kotlin.NotImplementedError; - return function () { - throw new NotImplementedError_init('Implemented as intrinsic'); - }; - })); - var processBareContinuationResume = defineInlineFunction('kotlin.kotlin.coroutines.experimental.processBareContinuationResume_xjdw2a$', wrapFunction(function () { - var COROUTINE_SUSPENDED = _.kotlin.coroutines.experimental.intrinsics.COROUTINE_SUSPENDED; - var Continuation = _.kotlin.coroutines.experimental.Continuation; - var throwCCE = Kotlin.throwCCE; - var Throwable = Error; - return function (completion, block) { - var tmp$; - try { - var result = block(); - if (result !== COROUTINE_SUSPENDED) { - (Kotlin.isType(tmp$ = completion, Continuation) ? tmp$ : throwCCE()).resume_11rb$(result); - } - } - catch (t) { - if (Kotlin.isType(t, Throwable)) { - completion.resumeWithException_tcv7n7$(t); - } - else - throw t; - } - }; - })); - function buildSequence$lambda(closure$builderAction) { - return function () { - return buildIterator(closure$builderAction); - }; - } - var Sequence = Kotlin.kotlin.sequences.Sequence; - function Sequence$ObjectLiteral(closure$iterator) { - this.closure$iterator = closure$iterator; - } - Sequence$ObjectLiteral.prototype.iterator = function () { - return this.closure$iterator(); - }; - Sequence$ObjectLiteral.$metadata$ = {kind: Kind_CLASS, interfaces: [Sequence]}; - function buildSequence(builderAction) { - return new Sequence$ObjectLiteral(buildSequence$lambda(builderAction)); - } - function buildIterator(builderAction) { - var iterator = new SequenceBuilderIterator(); - iterator.nextStep = createCoroutineUnchecked(builderAction, iterator, iterator); - return iterator; - } - function SequenceBuilder() { - } - SequenceBuilder.prototype.yieldAll_p1ys8y$ = function (elements, continuation) { - if (Kotlin.isType(elements, Collection) && elements.isEmpty()) - return; - return this.yieldAll_1phuh2$(elements.iterator(), continuation); - }; - SequenceBuilder.prototype.yieldAll_swo9gw$ = function (sequence, continuation) { - return this.yieldAll_1phuh2$(sequence.iterator(), continuation); - }; - SequenceBuilder.$metadata$ = {kind: Kind_CLASS, simpleName: 'SequenceBuilder', interfaces: []}; - var State_NotReady; - var State_ManyNotReady; - var State_ManyReady; - var State_Ready; - var State_Done; - var State_Failed; - function SequenceBuilderIterator() { - SequenceBuilder.call(this); - this.state_0 = 0; - this.nextValue_0 = null; - this.nextIterator_0 = null; - this.nextStep = null; - } - SequenceBuilderIterator.prototype.hasNext = function () { - while (true) { - switch (this.state_0) { - case 0: - break; - case 1: - if (ensureNotNull(this.nextIterator_0).hasNext()) { - this.state_0 = 2; - return true; - } - else { - this.nextIterator_0 = null; - } - - break; - case 4: - return false; - case 3: - case 2: - return true; - default:throw this.exceptionalState_0(); - } - this.state_0 = 5; - var step = ensureNotNull(this.nextStep); - this.nextStep = null; - step.resume_11rb$(Unit); - } - }; - SequenceBuilderIterator.prototype.next = function () { - var tmp$; - switch (this.state_0) { - case 0: - case 1: - return this.nextNotReady_0(); - case 2: - this.state_0 = 1; - return ensureNotNull(this.nextIterator_0).next(); - case 3: - this.state_0 = 0; - var result = (tmp$ = this.nextValue_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - this.nextValue_0 = null; - return result; - default:throw this.exceptionalState_0(); - } - }; - SequenceBuilderIterator.prototype.nextNotReady_0 = function () { - if (!this.hasNext()) - throw NoSuchElementException_init(); - else - return this.next(); - }; - SequenceBuilderIterator.prototype.exceptionalState_0 = function () { - switch (this.state_0) { - case 4: - return NoSuchElementException_init(); - case 5: - return IllegalStateException_init('Iterator has failed.'); - default:return IllegalStateException_init('Unexpected state of the iterator: ' + this.state_0); - } - }; - function SequenceBuilderIterator$yield$lambda(this$SequenceBuilderIterator) { - return function (c) { - this$SequenceBuilderIterator.nextStep = c; - return COROUTINE_SUSPENDED; - }; - } - function suspendCoroutineOrReturn$lambda_0(closure$block) { - return function (cont) { - return closure$block(cont.facade); - }; - } - SequenceBuilderIterator.prototype.yield_11rb$ = function (value, continuation) { - this.nextValue_0 = value; - this.state_0 = 3; - return suspendCoroutineOrReturn$lambda_0(SequenceBuilderIterator$yield$lambda(this))(continuation); - }; - function SequenceBuilderIterator$yieldAll$lambda(this$SequenceBuilderIterator) { - return function (c) { - this$SequenceBuilderIterator.nextStep = c; - return COROUTINE_SUSPENDED; - }; - } - SequenceBuilderIterator.prototype.yieldAll_1phuh2$ = function (iterator, continuation) { - if (!iterator.hasNext()) - return; - this.nextIterator_0 = iterator; - this.state_0 = 2; - return suspendCoroutineOrReturn$lambda_0(SequenceBuilderIterator$yieldAll$lambda(this))(continuation); - }; - SequenceBuilderIterator.prototype.resume_11rb$ = function (value) { - this.state_0 = 4; - }; - SequenceBuilderIterator.prototype.resumeWithException_tcv7n7$ = function (exception) { - throw exception; - }; - Object.defineProperty(SequenceBuilderIterator.prototype, 'context', {get: function () { - return EmptyCoroutineContext_getInstance(); - }}); - SequenceBuilderIterator.$metadata$ = {kind: Kind_CLASS, simpleName: 'SequenceBuilderIterator', interfaces: [Continuation, Iterator, SequenceBuilder]}; - function suspendCoroutineOrReturn$lambda_1(closure$block) { - return function (cont) { - return closure$block(cont.facade); - }; - } - function suspendCoroutineOrReturn(block_0, continuation) { - return suspendCoroutineOrReturn$lambda_1(block_0)(continuation); - } - defineInlineFunction('kotlin.kotlin.coroutines.experimental.intrinsics.suspendCoroutineOrReturn_8ufn2u$', wrapFunction(function () { - function suspendCoroutineOrReturn$lambda(closure$block) { - return function (cont) { - return closure$block(cont.facade); - }; - } - return function (block_0, continuation) { - Kotlin.suspendCall(suspendCoroutineOrReturn$lambda(block_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - }; - })); - var NotImplementedError_init = Kotlin.kotlin.NotImplementedError; - function suspendCoroutineUninterceptedOrReturn(block, continuation) { - throw new NotImplementedError_init('Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic'); - } - defineInlineFunction('kotlin.kotlin.coroutines.experimental.intrinsics.suspendCoroutineUninterceptedOrReturn_8ufn2u$', wrapFunction(function () { - var NotImplementedError_init = Kotlin.kotlin.NotImplementedError; - return function (block, continuation) { - throw new NotImplementedError_init('Implementation of suspendCoroutineUninterceptedOrReturn is intrinsic'); - }; - })); - var intercepted = defineInlineFunction('kotlin.kotlin.coroutines.experimental.intrinsics.intercepted_5cx0c9$', wrapFunction(function () { - var NotImplementedError_init = Kotlin.kotlin.NotImplementedError; - return function ($receiver) { - throw new NotImplementedError_init('Implementation of intercepted is intrinsic'); - }; - })); - var package$kotlin = _.kotlin || (_.kotlin = {}); - var package$coroutines = package$kotlin.coroutines || (package$kotlin.coroutines = {}); - var package$experimental = package$coroutines.experimental || (package$coroutines.experimental = {}); - package$experimental.CoroutineImpl = CoroutineImpl; - package$experimental.SafeContinuation_init_n4f53e$ = SafeContinuation_init; - package$experimental.SafeContinuation = SafeContinuation; - var package$intrinsics = package$experimental.intrinsics || (package$experimental.intrinsics = {}); - package$intrinsics.createCoroutineUnchecked_uao1qo$ = createCoroutineUnchecked; - package$intrinsics.createCoroutineUnchecked_xtwlez$ = createCoroutineUnchecked_0; - Object.defineProperty(package$intrinsics, 'COROUTINE_SUSPENDED', {get: function () { - return COROUTINE_SUSPENDED; - }}); - Object.defineProperty(ContinuationInterceptor, 'Key', {get: ContinuationInterceptor$Key_getInstance}); - package$experimental.ContinuationInterceptor = ContinuationInterceptor; - CoroutineContext.Element = CoroutineContext$Element; - CoroutineContext.Key = CoroutineContext$Key; - package$experimental.CoroutineContext = CoroutineContext; - package$experimental.AbstractCoroutineContextElement = AbstractCoroutineContextElement; - Object.defineProperty(package$experimental, 'EmptyCoroutineContext', {get: EmptyCoroutineContext_getInstance}); - package$experimental.CombinedContext = CombinedContext; - package$experimental.Continuation = Continuation; - package$experimental.RestrictsSuspension = RestrictsSuspension; - package$experimental.startCoroutine_uao1qo$ = startCoroutine; - package$experimental.startCoroutine_xtwlez$ = startCoroutine_0; - package$experimental.createCoroutine_uao1qo$ = createCoroutine; - package$experimental.createCoroutine_xtwlez$ = createCoroutine_0; - Object.defineProperty(package$experimental, 'coroutineContext', {get: get_coroutineContext}); - package$experimental.buildSequence_of7nec$ = buildSequence; - package$experimental.buildIterator_of7nec$ = buildIterator; - package$experimental.SequenceBuilder = SequenceBuilder; - CoroutineContext$Element.prototype.plus_dvqyjb$ = CoroutineContext.prototype.plus_dvqyjb$; - ContinuationInterceptor.prototype.get_8oh8b3$ = CoroutineContext$Element.prototype.get_8oh8b3$; - ContinuationInterceptor.prototype.fold_m9u1mr$ = CoroutineContext$Element.prototype.fold_m9u1mr$; - ContinuationInterceptor.prototype.minusKey_ds72xk$ = CoroutineContext$Element.prototype.minusKey_ds72xk$; - ContinuationInterceptor.prototype.plus_dvqyjb$ = CoroutineContext$Element.prototype.plus_dvqyjb$; - AbstractCoroutineContextElement.prototype.get_8oh8b3$ = CoroutineContext$Element.prototype.get_8oh8b3$; - AbstractCoroutineContextElement.prototype.fold_m9u1mr$ = CoroutineContext$Element.prototype.fold_m9u1mr$; - AbstractCoroutineContextElement.prototype.minusKey_ds72xk$ = CoroutineContext$Element.prototype.minusKey_ds72xk$; - AbstractCoroutineContextElement.prototype.plus_dvqyjb$ = CoroutineContext$Element.prototype.plus_dvqyjb$; - CombinedContext.prototype.plus_dvqyjb$ = CoroutineContext.prototype.plus_dvqyjb$; - UNDECIDED = new Any(); - RESUMED = new Any(); - COROUTINE_SUSPENDED = CoroutineSuspendedMarker_getInstance(); - State_NotReady = 0; - State_ManyNotReady = 1; - State_ManyReady = 2; - State_Ready = 3; - State_Done = 4; - State_Failed = 5; - Kotlin.defineModule('kotlin', _); - - }()); -})); - -//# sourceMappingURL=kotlin.js.map diff --git a/src/jsMain/resources/lib/kotlin.meta.js b/src/jsMain/resources/lib/kotlin.meta.js deleted file mode 100644 index 805c67cae0..0000000000 --- a/src/jsMain/resources/lib/kotlin.meta.js +++ /dev/null @@ -1,2 +0,0 @@ -// Kotlin.kotlin_module_metadata(393729, "kotlin", "H4sIAAAAAAAAAOx9CXhc1XWwZ5HmzdN2NZJseWxAyNiyZWwPY0QMYhstRrLlJZLNlhYyksa2QNIos2hL2rKELThAICFbkzZL6UJoU0iDm5Q0CRTI0mYlpFloGpqme2nTpEnbv/3Puct797133503kmj7f99vf5p3l3PO3c6559z77jt3nRFJfLnN/Ihhxvvyi7nJ/lPZgll7c740PTVrmv35mblsITs+nTMjw7MlMzRhxidoWu5Y3qzJl07lADr3hnJ2umjG+vL56Vx21oxkZpdM41S2eKo/P5kzjVJ+rFSYmj1p1vJnbD47Xc4dOWGGbyqatQeKh7MzOTM6i7/kaCE/lyuUlg7lStnJbClr1k9kp6exChSqLlsoZJf687MTWajOMTOUNUPjZv3R8vj0VPFUbjIzN2U2UJjhUq6QLeULZt1Efno6N1Gays8WTcNKjh2G6mNtEqy1uweWoAZTE8eW5nJmDSVhRksYaR1nDcs4yDbx5loJ9X0SmNkoI0FTm8eXSjknhfo+SLJi8T4BgE2eK5ULubFSduJmM3p8dqpkxsezxVz/dLYIHX2gyALxY6cK+QU6PMbUbLGUnZ3Imc0TMISugnBU7YL6BQB0jQhCDWsnWK9Gs4WTRbOGQQBdwJvNTpvm8Cz0Uu7I7PSS2TKZhw53NadxgCba/T5gA5mJE9P5bMmJ0LAf06youd8CMeMnc6WDvLWF3AkcPrOWJ9TexJ4bLJj9hfzM4OJcIVcswiCbIegEyDtS6C/ksqUcRyPQEmf5dcDSVsQY5tlm83R+9qSrA0cgye7AEQFg1lmw0IH1s7kFe0RiM1Cd7EngpYlsuZgzW2bz15zKzfYVYJROHcqWJoBbzda5wtTMVGlqnnUT5+tE8VS+4O6sMUyzO2vMAjHriuXxMRDCHA4/HWsrZgJTANbsZG7RNHKzkzxUwlr29w/y0PCYCB0+OmjGaej40cygWT/HpZHKnrEwVTqF4pH4VNhsMv5L/AuRde3rzDAJmbVGiIQhjM8Ifxr8GefPenhG4dkIsRhpgpiDVDMH28DBNkKsjiR56ib6rCMdPH4uj5/H41v5s4s+Y2QHj3dzuF08vps/07yUvRBrJxdyqIt47mt4/GIev4RDXwqxs8llPLef5w7w+H4ev4rHj/D4Uf4cbV+XvDue7CEtyfBQa2fUWEda07WkDWPwXI/PodCDRtgwHzTqDSNhGCQRNYztLWeMdck+0p4kifqE2bG5O9oeStWkGlL16UZyVlJKSRvk7CSGa5GQTKMdaXSSc5LhVCMUdhY8m9ww5zCYTpmiG6aTwWwBfMLpNLthtiBMmmyDvATUcHvSTNQa6xLhVGuqBXB2QnqrG2cbo3s+5LVxuuvdMOczmD26+u1BmK0kJXVxPbkgaSSiCUhJbRi61cAe3shI9UAxSV7cJjepHgazD/I2c5iz3DD7EGYf6bUKOKfTwEK7w6kaKPhyK73Fjdl7xghBJ12hxKwlVwpukHGuQJwdJBOgtDCCdpI+qHQHr/y5bnJ9rIGDkNfJYba4YQYZzJCuz4cQZjcZxnEFDjzAOBBCB2nI04xhhE+SEYD30BrBvB5yqEoROcSqeRhInsebstVN+jBjy9dC3jaAifLnGDwj8DyGTzfOa1lVjyMru/OOnzHCUObVlM1rodlhr9hdzWCu0cFcw2Cu5TDXqWCuRZgryfUOYa8FYQdY9yRAWVxGvl5w/LukCbfzrpARal+XpiyTiqTCfUaCdUrkQDOp4Z1SSzvl4fCBFhKDYBQGtZYOag0mGsSk+eshVEervf7ABtJA02LOOjSMcuLO5HVQq84roSLxNPAwrQJBQqNJ9txXe+1dUSdKwhltBgoPGrXmOvyf+JVG8+EasBRADRaWwMR8LXtyu5YZqNnJSWYZhE6Y8f3lWWohppmhKyzV+ARCUO1Xm52bAw1qRoqlAthIJfg18Jdm1lCLFkyoU9lZUPkxeExOg21s0U1xM65mYnoKbDor/QKz6VC+jJYdJA/O56BsY3J8mkGhDc2NIGFb157KTZ08BRU8XJ4ZhwJqTuXn4VHPCxyePVIGW9GKmSYPYnL0VGlm2gwVzSgYWpNmfAYLnswvABStAyueJc8AWTBhMFieA9s8twhlot0PEDVgVk2C2VGgULyCxempydxxAC0haAT6w6xZmJosnTLNgRyYZmDXgL1jGUXZ48Vcx2QOuhfsGbTMO06AEdfRdapUmitesmfPOFhrYNvshtXGHjZqe24q7gLS1Bgt8rRdkMbGuKtjDmxloNyBhjDUbzcUf2pq4pRZMwep15q1zBpl0evMxFRxIHciW54uHS3ksN1QucY5FuQZsDp5g2KFEjrPNHBJMo62eSQ/fpNpFHNooOKaAkxo1v584aQZWdg7YUYm8zNmbHA6N4NdF85NJ94fAlsJTYF1JETtpjCEw9xeCpNa/ozxp8GfzfyZ4M/Wdkajjcfb+TPJ07fw+G7+3EuNlzDZBzFCTZowuRJSEiQDvy2kD9Jb0ZhJfiac7CavAbELDd3VgVLWCFK2h0pZCqPNEL1EKC9UexQWFM+lTPGkjFQsEGaaY9aSywKXZuNcTmeaIDiXOHHgeQXaF1WWNxAU510wlz0RNe4i7SGYzSJ96w500DkvlG6HCbWVdlEN/a1lv6nogUYOUUviWEWImzxex+P1vOoNNL6exkMiDs9Gmt5KmvhgEHswDtSirZkKHUiyZzoBuY001+Qwcchb75vXSDZAXp1Vu1qyEZ71UNomXtpmqbROK/UsOxViZztqdA6l1EGf+p45h7e0g7fwXEULk2CuOmvfILXsPE3eVt+8Wmq6huDZRZ+tYMJ6S24kOxwjV0u6KXQjNXBD3NCtBdV4PjOIAGIX9p6Lj1ADbkWmMYFpGvrWgaK8AMBqFGCXGe8k7Q2ct2qp9VoHz4vgaQBaGo16eF6ITy86WAGgIV+qMd8cNuPZiYl8YRJXzX7K8n9q+q4dL5dKUK84exZzoIAmp7LT+ZNmdAb3lYSOptq8BvepZiw9TGNFOntHDxSRymQhe/IkXZibbLqm4XB5KnEpX7quo0tXmIjpdBnl02Ydf9bz6ZNArJZOxtQqTb4tkjyHrMOR7qZTGLW5ItDhNbTDa3EOOYcaTVoAoxJAXA/QZQMAx+HcEVUDXgCA1HCTQfk04oNysZe2QAA7sJHbgQGqhVNTzA8wEQzwHDaF+fbEuwyDMfjnHgmZd5xjs3FmdjZfoszKOKYlU5gqnZrJlaYmBhcncnM0h4yWZ0tTMzk7xWJ5wW51Y1OzE7mDjGoMjC+65xS5YPdeszFTLOYKiDZYKIA5UMMfbANI2q0jfeWp6Uk00E7kCmyjJmtXr/ZYtnAS2L0RrIz8Qm6SRYsmsZvAIZquzowcH7zxaGY0c2jw2OCoaew/frj/2PCRw6ZxdPTI0cHRY9eZ8dFcCWwPpMzFo8UmZOfV9g0fzoxeZ9bnFudyhSk0V8CG2zgoxXDvx66yc6epdjo3exKsPWo+R7ByUbqXXDNFt5wce1TqXakEtST7s8WS3ftiBxqNq9AxtK/o5jPf9vUaZ+fgDlq5gGbqofzk1ImpCdpKm2DcDtbLTTNrRsD2mzZj12RGDw8fvgrGbnT0yKgZHZwtw7QyTTNJ5vDhI8cy2L839o9kxsZw2NPOPjoEluPU3HS2dCJfAEQGVrN/eHBkwGwcOdKfGbnx6szocKZvZNCs6z9yeOzY6PH+Y1BSkxiwG68aPIZjaSeMsYT4seuODmZGhjNjziKPzxanTs4Cn8DwFIEF+NLCDI2a7cPT07mT2elM4WQZge3Wt/GcMeADid030rGA1cKRE3358uxk0c5qGYYFDEzAU8u5yZHs8tLwzNy0GcWQGZ7Km/VjUCHMpRzeMFWUwO31i/0yoIGJ0NVcgOJ0pGepyPUfHx0dPHzMbDmUufbG/iOHjh45DNEbKbM7XkrUzGRvQgGbmZrFxxzuqmreUNjvJOJTxUxpJAe8Zsa5CB85gaN5gdmKLQJRBSU0lj2RKy0dQoT6sesO9w+NHjk8fP3ggFl39HjfyHA/5QQzehiqZ64/nB8rT5zihr7da5sPe7d9pT49nC9hP1IkyKDzRevh8vT00TzdeZcGjK349gNbZSX6LUfoMzuNHDHBZ5Do0ewUCEzGDPWZNSemCtDM2mIOFieTpom9k5+F4i6QwmkzOpGfA6U/mivi0id2Ijs1XQZBi+esktSvAmLF8sREDleA+zmK82UM9LTIgOAYB26yyB4pYGvphj8P1h4rgACBjPebNaVTUwW5znvNmuP4nsSMI2swhogfGj4sgmMwPDf2DR8bM00WvO7Y4JgZpS+SohQxAuthWIvjLFVzHDfyzdrjdC8dVmo5XK5NzZsRmOHxZ55yVhnsCBiV6Nx0Gd9G4AIfWKuWBopmHEmN0lV/BBbEUGWQSpiWSnlaXE0pT/cTSnlaVpT+xkAIaJE17AFx1ioAozXDBAoJ4iJqt4i7/sftl0SG+gVXw3HHWyX+Ikt6uRQDITiMa9Q4LupZuSBTgoIZLYLEwrACNqo9A5e0WbDKzFiOL2LrRFIGRsvgqZA/VRycmSvhOyNRegStNrbxESmeAuDxqVI/TCs0WmB9x195HVe/jDFoJbFPTNojrKdZmEE0HPd7OcMaSPux5ThM6sPHhmH2BPnl3FJ3XHqJ0njc/wWLSQmxcTgPWmNPbOJtZYaytS2VjTAnw+RhTZN1No5jU6j2RqaR6xfAGMmN5kBxgH48C7DLc3NQXG7yyFyu4NJhTWB8O3RX3Uy2cHOuwHZi+Is7z2szc/Dao6ODY2N0yto/DOqnduzI8dH+QbPpmmzRQc88KNqVYrKXLUxRI9reJWs4ihY2GA9s/yt67MjAEfuVai3MnogQnaKvLqXNLv76dm4JJhrkM9XL19pivlyAbojN5hbGEKh+ku3IXE37Kpbl79ti01PjhSwsVVpoylGQT4mPTVsqPC9jna9q66xXs5DleCUqvSqtgYl74mazbhqG9BA3CetpGjSazlsNOINSYNqKKK6IzHApDxn0PaSYBhukl6dYoPyaVOxSmTmUJF5yjmoF48TU9DS+6QTZKeBEBZN6QqRJ7a6337QCdfmlag0Nm6Z4EQrZxk3F4SKtLt3Jit3E9xuj2EzcJ8T3z2y1hSlYXfmNJ4zzHDTNrM2ysoHp3lCegjY28oDom0ihDNbnOKVXB+F+VITIKfX2q04c0WK5SDdZYfAK+XIJlEwR7EyYbmAaZqqtvrgEirSQn6V2RX3ZMXZlqWk00s/txfD8BfCXNk1MHJian4IWNWB4NDeTRQu1AKQc73JpTKDX0RjHa6QRG7GBxo8JuyY0b0bxXT2kO9oWxbenpgFL6dwUbtm2DcJqeBYtDyEejG3AUAHDJTs3B8o1eiI/PWnG87NCb0JQsJGB/NU3BRNvdBx/66kGFXuXTJ8OTkM9TBqkiw/TgDCXIpDU4mgOWEC84zXjltjDFF7cj7IL2GjInWDhmimwtQ+bkWmY1SMz2TkzDov82SK1dGEOmrNGFfhggu5LN/GAlVNbyt6cGwbJmivkJtE6hxIw6fjsNLavkb57PmI1Mlo6laXakza0nknOMRaro4zOI6hgp0AiovQ3XsqPZhdoRpPAEQmNHE3ECe/bIwVRqLzj0Tyaw4XFZEcp38FtIyKyYcjYoqGuwCbua3CE60alSGxqBqdxmH1z9vmE+jGZhSM3zc+YFw/kO2BJ1gHrxA45t8NeFnZMzXbMQfU6mN2858BYxwQ9XnN1HlYbUzBp9EhERGIAArED8zPsDQeqq4MlsxkS6DIGZhe+vW/CMmF2MluYhGzjWBnMsyKEzBHoI2QNCDcdLVADc4qaIZgpliUHS4lvG44tb7HXgs8If0b5s5Y/Y/xp8mcdfzbwZyPfgWmi79gJf9ee4M/1/NnOoZJ003sTx93Mn2fzZwd/buXPbRxrJ8Q2kPN56m7+3MOfKfrcRC6gz830LAE+9/L8C/lzH39eyZ8Z/uznzwH+HOTP/fx5Fa/FEMS2k2GeepA/D9HnTnKYx1/Lnz9Hn7vJz/PnDfx5I89/PX9m+XOcPyf4c5I/c/x5gj9n6fNiWh7W6g0Q6yUFnlriUGX+XObPX6TPKylWDOJvDvHAnSJwlwjcjYEaCLwtBPH95EGR8S4ReI8I/CoLHCAfEDgfRJwR8iEB8WssMEJ+Q6Q8zhiv36rKx1nOKCOCsE8K2DMMdoDD7iefEDmfZIFrbaQ/EFlPicAfMuxBq6RPs5wbbKTPCNjPisAzIvBHIvCcCHxeBL4gAn8smv0n2OxT5Esi42sscIp8XaR8QwReFIE/FYHvsMAG8rJI+aEI/I0I/EgE/kUE/kME/o+oxANhiC+Qt4V5xoeZaJc4a87zfjhFHg/z5v+RAP28CHxRBP4kzKl+NWwaxq0h8hVMoKGvW6FvWKFvQij5s93JMbKNH3roSq2n5wW60hcbUfJCKJlOtCSah7pwp3AmYRi76E7hDlViN93Tb0lND91pnDGiyQT5ZigZTs3SfcawcekZoy65iaelY+RbGKiRM68CzoS0A5D5mxhoSbeQb4f4e4UW+ntlKg8YPw2tw6JroWiDFh1HGudyQk1A6OOIP6oh1B+AUDMQ+iTiX6shNBCAUAsQ+jTi36AhNBiAUFuyl3w3lKzreClEjylgTxLyZ66UGPkeKyNO/jxEt5fDQ+vOGO3JNPl+yBrnk3ycW8hvh+jRohBPhl88dhA25hDnUvIXTvIcjZAPu4ptID+wqR9hJZ5N/hKr8oZ0HZYCgc5wqluifjb5K0w+LPIPQ36fI/+vMbkg8gudeOjJzt9K/haTj6Zr6Su2bujB28IGzp3JMAnxXtuYvNAFBnX9O15XqPqkD9Ze8veANdRFTwd1dQNo2gB8aC/0EKKYIEXrklEjIiH1aZBUxapoXED+gVWXkH/0jPYrzpShWwzsiO3knxAlDC2cg2ecHe+53MVLZ4wG6NJ/Rsii6NIidGlJ6tKN5MceJqES3Z5Mkp8w6a2lJ1vCtvBuTF5M/tVT1Z96Un7mqjxlkgHybz4s5gKHcrdQxlaz2r9j5cqiXWVo17yDlf4Tk4+L/OOQ3yLlX0L+y1PdW8LulFvDqt7fSm4LW/Xp4tVvIM/alZxEsJQKLE5uDzMhVWDsVmHEyJvD0IDdCvizyR1eeMr0Q11njDjk34morxOd8DrohCGpE3rJXWHKeTHydjFP3R12zFNH6TzF5AWmDBK25u+t5J5wIGF0ggUVxreEVyCM/khBhfFCci/S6KOd2QdYp0UP90lY2BOhjpDVF1eQt9pgF/vh0tkeMJRieh/2UlaMVBZGalgaqUlyfzjZDuWaCUFxMVGbYHyZ5wWeYxhYpC8YrUJIXYvXnDGSycvIg3LjY8irYcqpvr0QtnphU/Ii8lCYanTeiAPQiCsDKPCLyNvDVIFzvFHA6w+gr7eQd4Qp18bIwyLwThrg8+EZY3NyG3kXJvULoH4B1D8kuoLDvTsQ3EXkPWFqJPDKXguVHQhgE2wh73VUdkjQH3JU9pcxaUAADQigAXdl3xcIro28H1NrIPtXWFnrMPlsdzIEfpV13DrWxg+Eqf3C23gDtHEwgLlymHzQ5h+cj0KUiz5EpTLdjlzUwmYrzkt5RF3yYai65CHya0ygo0ygh9B+Oc0nKEbEmqDcYums6OuQXD95xE3OXSck562TLOrvDpFfl4SENrKrW0zCF6c7yW+Ek2epLOYNotEA85scJhV3wswJGNbbt4VbrSqsszrIdxbZTX4Lx60EU98y9PujbMjZi39J1HlbzhLw8wD/RgHfooG/inxEbrpBmw5xqfkxNEIhST/d5cljlQhV0Uf2MPkWeCH5bXnorWL01byE/I4KC7X4R4UWryO/G07WJsJGJPWmobtM3ldxEFE8m9zCTAdPn8Y53NnJRvIEdns3jEEJ+1iKz7P4x1z5H3Pl/54r//cc+QPk4x6ZVEoS71E117+BPOlRcArWP1OJ9asYskny+2tYpF8pNyObWfTc7AH079ZxIZ99gjbpZpwbghSmbEyVhZXJJ7z9p5a0M2soaafIJ9e4WL+ShmVTTebsYIpGZu9jXvstKEFNBY+QPwgz69OhwJ5yKrDu4ArsCPnU2hLcSf6QGufdbAK72LYeFM1J42KUFXSS/p5K7aP1OEm76hTU5iTM/5/GQTk1dGf0jFGf3EM+Q5VQN191uvRKgzGXiMOo10D0s2GcrjhCSzdfzmkQnqYI28gztkz9Au8XeVrrSu3DmpyvgmuV4XjeFazezwat93O83s8GrffzFGEXeS+aVld24xZIJdOqUQZvqQ58qDrw4UDgv4zg/YHqTmTwynV3gFeuuwO8ct0R/H0IPhCo7gkZvHLdHeCV6+4Ar1x3BH8/gg8GqnurDF657g7wynV3gFeue2vnTvodVzefaW7e92yYf6TkNTQ3dN9kxMjnYKqj87CtMqxQX6/xiyBPNVSevhBOmEZPotYwU7+0b2+iw/jjcGKTUde3wbgllIgZXwpDifUA/eUwLWW2z1HL7m4o6yvhzkjqtlAaf/o2SrS/5qBNYb+OsLcj7O1O2BccsLeFG8ywsdGMGW87uz2cCuF3DnXGCfqVQxjPpXcbG9ojEIn2hY31fbBgJzXscLBn6g119hvr22MAa1DYemO9De2IhfvWG2E7D0L1NESJXGvcFabn5UN9MFSd0CdnG82JpFF/AKvcsK+FP1v5s+1Bo9FohDZtoG1q2rdRMcDNZ4wwVO9EewLbdaCZfn+Anx2eS9cSj4QPtNOPDRLWbl4t/cCgZWjbaJx+cthy7SOgKiKdm6CNbar+wLpfAiWs72YbXFhOF/26AIntSIb3rUvT7wj2rWN2U7tlSWw/Y0Q7M0B4o0VY1Xm8k/pa/boOSRhAIr46EsnVkYgbz4bazwIam1nwbBrcZNwZat/MP0ncnDoH6IdvChtp+NvbmcMx34RjfknoAuxUI0y/gNg8yr6E2EzNuphZY7wtnQIzIQFc0QhcYVpccVEFLnjNGaOm8+EQltPBeMtFMmxsetAYB7o3AN3rLboXC/qC2/jzEv7sdXHlpS7uvIw/L+fPKzz1PGPUdn6QVuxcZcUajU2WwG7el/6fqmSsswWYu7Mb3wD3dfDpwaD8smX1XHve6kigUG71E8r9xrr2bbTeXVBve3UcTu2gH6VuQJE8YLCJn37vOkJfAq4Hyad51z4Mkh/v3GXcGWk/HxuOvDtaR44A2E76FetoMzlK54g7j73HqDEi5D8jnafDRqx9Z8dhzvI7U7suCR3uS0CDaskoAifY98ktfe3ulAT7YrkF5qnjfP7AL5F3so91r6H70wYksUU7/ViXruKh8uvpN8bdaU6RfwPdcuBsdXpalGQ1+kAHuZ7nKCGHwqM8Z5TnjPIc6C6DdsJtUY8Nb3ZuB+7pskYBJ0fR49usfn6E9jOdNPYAyG4WTNnBC2iwE6eS3bxfd1tTyc/D3w3wdyMSQY5I+3EEctze1XFcW/uFVNGxuQpfPAHlOlpsj1+xmHkRZG5RcynMAK9RzgDBZruw0YFTyW+GjDuN9n20p092hLrRO8Up2uM7+ggw1hT2NDxvgmfoQJzcTBXSsxEITmMSBneQGbaCAkj8DaX2pbGZFJeGbmKgIQU7fgNJMXb8RkgSJl70KC8ali+d4yhRlwiJOrCV5B3bDiH6moi9ObRXsABWVIDRt0kS2G3hKBo2nUdA+i+zZJ0SqyRDdp3rGAKVcUHwSZirr2y/uOOwxMw7LgkfLvW1wjqWv8lJhcUKVd1DBllkvHSAkCUMwRjw95bq3jPIPFLZtx9CCzyUEGWB6NwapaVRzqH19K6MKdtHobbJlbP9dyh3XeHmrm78mu6NnMva3VwGzzfBM+zDbXHyC5iLwYuB8VplxqO/4dQVKvajoTcx1FUw4iivHTLkFDJkxpri28gv4XITZnXo1/cY9Kjb0dDoenJLyJ2+DtKbya0hSwvg+zoCSbc5k8KCjV42kI2utPTDlUw/tAAPxcjtiNRnsVCS3EEL5HrgyqG76i1p2OhQEVcOvdP0yeofussva8A/a1DOSpB7Qqx8Oy1J3kLXtXbdfPP6FXkDqiq48Bx1qDTOCXKvp44JcpqnGVIZb9XU+62aer9VU++3+tY7Se7zHcMkuV9Tl/s1dblfU5f7NXV5APOuUpf3kKYuD2nq8pCmLg9p6vJ2TXlv15T3dk15b/ctr4m8gwqXNd02kYepiEoJ78SEISnh3ZgwbCXYxlKC70jJnJXgOz3ONLaD4kxjOxNOrvwVPy6BuYRNCwFme7qnccZo7DxohNsPwnx2qC8O08qH6WmmAyZ5JEQtL9B69eTXWQPWA7FRk4OACQdG2bnMmmsUU9YjYZyyDlgT1pFLwh8I9TWC5hAHyIAGn8F+i9KxZrD15FFaZDpGPsLKexg15IFN5DGW3oCvcC3CtDZqUW+lS/crraX7nZSONAHEye+w1q2Hhn4Ug4ewoWeR3xWnrc7l89sGWhFBgA3pN0Kj9bwx+64Gwx96nTUleK83MTXyWpca6bfVRURWI450pRq50qtGDDEm74vjmPRbaqTfo0Za3GpEEid/NeKrEPr9NUyVakSlDv63qZF+hRrp/1+gRpRj+D+sRlTq4L9NjWwiT7C8GPkYn87rpczf88/8/wpIoYBU/CUUUEvwqZBQBTQGM+ExWwEddymg32eVlRXQcZ0CGrWmuooK6LivAurXKKD+AAqovxoFdEyjgPoDKqDjwXu9ufMmVEBXuxTQgK1oorICcqSjAkrICgh3s24JeTUQcWqgAUsDDXg00JBbA0kysyINpFnI+ConlQZSaYsBjQYaWKEGGliFBhpQaKABhQbyqfdbNfWuqIGU9eYaSDmGLk2i0kA+damogXzqQjXQNRpt4VOXhzR1qaiBlHXhGmhAp4HUmS5NotJAPjWtqIGUNf1/QgOp+EtooKHgc2GCaqDrYCq83tZAr3NpoE+xiska6HU6DXStNdVV1ECv89VAAxoNNBBAAw1Uo4Gu12iggYAa6HXBe72lkxifDrf/nNBAuCNPF0U/79JJg7buCcs6yZGuXBR1eFVS1Lm3NmippEGPShp2q6RBW1DWWiVpFkXv9KikQYX6+N+2KBpUqKTB/wWLIuUY/g8vigYV6uP/7639TyoWFZcIxTIcfIprpYrlRpjPXm8rlqxLsTzNKiErlqxOsdxgTVgVFUvWV7EMahTLYADFMliNYnm9RrEMBlQs2eC93kZfYo2v7t1t0ng23H7Ueu1ocdwZY33nm4x17RM+hwWaEva3bfvWpSZVZwagsZ/DNoWHwtDY5/mXrjDQsKp6Fj9ppbiQNnnt3Y2jdezFN+0N1JHYuNzqGvfn9CjJCfoieWtiC/liKJlINNJvreincalQaip1slOKjW7wAfqp8zX0pFGfeL3RnPg5z7mTtqrPmcTo88shHvhKyD550mQ0JuqMDYkYfbH91ZDiHM+DIePWcPtNa9HGB400NGs3NKvbt1nuZqiOx9Q8aDwWYo7KHf/boMg3h6xDtS+GExHjjhDNwIAz90/DJnGmfCusoLnODfXtsA/B74RV4N+lqYmPxM27IrYvTclZpdqXJPcsJXxKxkaPHz42fGiQu1P0OrLkfhK9DhYb0eeh7ODScmvp41PR4xLT4WTR9o9Z2d1iFItWuM2S3DD6+gK9wCSHysVSX24gP1Fmvv0cHkj9XHyao9ShEnVu6PXbyVx7Jf6GORDHo4PylSu2C3Hhu7bG4VMlxH2qxLhL8Ri/kiXGfazEuI+VGPV1i88G/mzkzyb+JPzZzJ8J/mzhz1b+bOPP9bweG3g9hIvyTTy+mT/P5s9zeP657euSkXeJY4J4sjTMglE7WEOD9JhPOC0+hq3lx3wi8BeFvxo8nUrB8chjjAXjdtC0g3V2sN4ONtjBRjvYZAeJHWy2gwk72GIHW+1gGw22G8+F2tdjECewDTCBtdMJbGNnFtsV4+2KWe0y4C8Ofyb81cFfPfw1wF8j/DXBH4G/ZvhLwF8L/LXCX9tNzcZ6F33sli2oA9qh8I14hjZhJGECOMs6PxTbF7eANlUA6kGgzRSIHXVCh914BIw+fdFGEC1J0VoTCbzDgk+6sdRZnfA72uhMUxJCnd9uObf+Yci82TQmuey5vfEbQijN+un8BLpAZa4OYyLQWGSemkS8dmFqdjK/YNZew598HoyNF/ILxVwhkaYupFEgw/SCIKcLaeHRH8UtTEyAQK/uV3Q2UL/RkWvvfHMI+6GBHg2L2tGYM4oH5mp49F1GjLX0lodi5qOXWTVyuIJMZMaLpUJ2oiR5hwsNKpw9Up+9kqNH4ax1BR4fpfvVSnnudo49qNPl0DHhkdJ7K5xuMhUtsd08oktG5smspogubM0a6skWqzozVy7lqItL5noyOpmfzdl+L9llFrFirkSjfG4lpcLSsXy/hFwvCqUuxWJj5XEaqB/NAhPMMI+PZnSa+htDX2zMi3EMHX5ioOZG1rdUvTEnyPWi+tQnJEFyjpR6OcWsgwrj5RRT+XKRtZd7TJ4TiQ0ixDIkF7rN1DMhd0bL3SvTpKP5IvXQxdIYGPWpSRNyQDNfmMwVcpODzGVuaEI40W3iGUPChy5zteb1rRujjaWuArNFVjg61JuW2xYr8t6sE518KDtn1kFlC0uiZOg7TKwZxESzgeZZhbOo7XTvoBm6Grr85txS0YyMQZfHmGdNGCGaVstjDYKTGdUaSsbm74M5YFRAsOEYjzVMwfjsh4YxtFDe3GhVvEzVtSRUzd6kSHZy0qyFHxSgmgmQrgI6T6S3rMTZE3MgiIVisLaUPzAGNkeLqxzaa008YvVnFLvabJFghh0+WA1eBnS4TMeYyU8yf6z8MhfmXjXhKpOOzRh2QY6135Qy6nmY5QiHpkZROBo0ZnMLLCSwcHgiIGZmLfxgW5mrTHepCGaxB0biQJMzR3N51s2OzXSaycguQONTMHwFep1hnOayzuO+WPuzc9mJKZi9GnOzxXIhZ8XrZqZmrUgL8ADz6U77pp96ATULUhg4cAYYEYXdcydkHYqtmE6d9z0yd8TUvy0NOS9pZM7TaS4L0Rw0C93XLFouQxGWhxvotOy96jJO02kveF12kyKNcYfcx4cHuLfiOnSFPZor5qeBWQ1KAcc9hqIzhQ7HaRIOUIKODvSa5LXdsAaIieAF/Jk262BmtOXZeRckd1VKZz0WNK4q5Mtz2IgakE+YUBqZl1i7kUgLK2ZQTqTcIzxWUwYeliIm3oC0P0sv7THyhamTU+jX2rjRalOOt8RsZM5bLZq0mDHhALOeTZuTnMG1vrUJhZ3ivoqxx5uE2mQ1WZI9AzuhPddVxpg+KKFXdtYs0ZW0eXg5EeBiWOVhN3YpiNKuKy4322AMgL+mZo8UaAu5C250E8rkmZwQk97wLAV0zj3YijrWQweKWFqzqA6bmGnHwwQATz6Nj0zN3sykllaU0mRZUdRmwLq0MEsOTgHz0bu6juUHZydlfBwE58WcVFwozzqdoTr9B9t+zJuPcj/9Azn0OouWTiPUCj13CtRWSgi18xRMByI14YSiyjs2KVyv2u6O3V6S6R0FDYfy89A1wp6IUiXQZs+ocvEblcnMWBjNoY2Um2Qz+WQO3fnDPNIqp49C71E37eYoFNlXPnECNLkxISa32nGWIl/IUDtV3I88wDXCfuo9PgSmIvoaNmPQXQvZwqT7PlLuyZwKLPdtPkpvCTNg7mGh6ACaYbXoZRVWw2wnwO2tnDt3tz2T03s1NLcdOP2GM7/uts9wl29w7vBd8gvu9votfMHLHr9bhw8fuxHdzR89cs3g6I1H9t947Joj5sYbi0xLAQhKaXFMeOymBtDUBDqB5z7iDctFvNPxtOSVXb6UV3YILftvtr2iS07OZT/lccvgcrjo5164LdfbloPtuslcESrPtiSapciREyeo1WDdzeH06S/fu8EuZEZeQyOPu+bGSaSI1oy4K4RdyWyZa5bnbmaUUhPkCHDtiWlYXdVMUIuEZTHzUWS10DS2CkOFO1bKzcEaBn+bpJXPGB3CCVsJydeI1OFkfIyvTWQn4U1SBpWwDSxhcHEKO+akndGIwlbKWd6S2S1wth/lnKVljZxQlyyEc9YmmFLG/HgnforNjNCZNXNZkD1+lwNNB2xqVtMpkAHxCMtp5hEx9bqTGFTtNBusBvYULrqZA2c+MdBLYCagQtSsqZmhtKJztCYzucJJWnW68sKrCdBjdz3llYnpcnEKprOGGdvKRL6YsaYxKcaqU1Okj3jRdrcv3fDRYCVTf8o+3ujrilKTeYRRT7Crjh0MxtKcnEXYEj83aV9nDeWgmci4rYjzYbmY41MomKLsLhsQbutam3j25MkCm4RDo2Y8Lzz32zW9EMRlYqI8U55m8xG7mqPOwjuWN0OHYLGASwHbQXYkCyvnumzRni3keyDqsw6v99miPUvY1ytgstDXtdkiW3rB055GpBsVAFjoEOad2vIQ3WzncMWEwPbd0xCWrqWWr1eALKnOULR09QNEpOscICZPadliMT8xhd0gOxu3UvuAGNiDY+IGxkZqXB6zIBskSOhdGxEidh7lrQaKalFqcuQCeCwLLcftoAYeOHKCqqgmK8qt70YrgZmu9Vac6iQrxjSQFWXapn4c5mA0NbOFiVNmoxyDtspXTZ4qo2SzK4g22PMYSqxt+rS6M6isyxeq2OELpXCP2Yi6Y3gWlmhM0zbTuy3xdszcHF+FsdscpIQ2DwydL1ukZHu9ZiFbSRsUcB4ClhKxCVhJGxRwlMAmVYYwA2EhTh27s6tLG1guv6EL5TCPOz3Q0w2cCG8s03yiK3ievaChuVZU5FtVxRrByGNCrrQ/X8DpypowztFkUl41UDVBA/JmLYbw6gRxWUYdS2D2BpF02pET9NrbSarNJkBBihDwVXQSlBfkwe8I7iQ0iNA1p9CzfByjPJjLTpziewZWEKQjzncFM7DAtoL8BgI5gV3xA7ZkCa9OYM/h2aP03pMN1pzHXO0fy4+yLRILji62zCZHFCfNflyo0DSY/kAr4WwEq156WRm9JcORBRgmSzuIe0NxFgZFKAoSOrHJEcX5w0qAiMEiEKpnoav5jhOumTB3dpJ2Zh2d5nnTYydg7keDIM4DOLNgELiD3/cQ4xsUMPFPTJitPHa1Y3ayVMpes14GgMKAhOioOEZG6YXBxAqKzFpMoaXnC4MwktYtHvVDU2ALHsrhdVN4XwLLtmjaN0s0W0FsGlUHm1XrJStXuuXJoMGj5ZJ0J0X46gvMmsFFqIZ9PYV1j410O4XySso9eCWlILV9Rwdet9FRWsh3lGD66pgTC7GiuGHSutTNc50Dv/qthRIr4O0jhew8GB1Z4PlzRvILRwtT+QJYScOzaD7gTgLdHSmzN3sMy4ydxP0KEK04DyDTneR7GJAcmzrB9s7r+XYpW2jV8RhlnDhdqRax9eZUEZiOYTRAGLoQep5Gm2Zcm4G1N+WnZlEqMqaZoZdWs84v5oQN7Lq6D9p/YmrRjM3liyUM1ExPzeCKoVQAJqO9XM9I8rnLxHWGUCVgGwrWaLbDQoJaPEkoLnYi8h/EmBzyAPYUBAWJejuMV7rNUJFBWC5udVYQ0iMz2UWEWcQuhgedLSMzU7P0Ki+aOMWmUH61Vx19ZIq4qISiMCIua47O0gVrfpZKR2t+rgTdspwTa2pqRLW4U1G0PYl04yjPxytODUv2+oXeKWbiL69BHYZFBXD9iC+sakf5E6bHMgxYaMxsYEHR83UsykQ9IUUEgMHSoIc2o5yI7eDtlN122LeuVnmVSZOLkHTxD1sDNrAdbbEBGSsw89Fs4QHHK4pWnuh8SWEUhDHaIELMNkzgFVv4zsbWlWaseAos9GncgGYBmOeKUDKk1LMn59uaIsxQeBUlPhi9KK41+NWSibkCygCsZWgeXe7UYj6wEGHPgVxxAmQLm9WIKVLcwDjtNYqDA8SerKA2KSJhNUnJTMuzhD5sKg9J4ISlSSkmS+G45XG6c25GiuUZEP7yDLdX62hQ7BrTCN9ipWG0URk0tU8ZAN/SgTAa3PTBCUTx9h7TwF9mOYgQNxcwyoKNpbzz2i12RZ4VsXdA6iFiL2kaSnl5RwQypT2ReCkv9gJNetUev0eLXwdUx+7d4y8iS3mUTqAnvwOpt6L0bYYVQ5JAhq6+AZPuNvJ7+/iNcRCjHFXKzyJqqzN+BCbY6ROIg/bzpFX5445GS8sgfucfXwaJi/941cv0tR48lqfAThOLVXvZak3mdQvS9mFCiogFWxzTmGRFkFgd/CDH0Heeiqt/GuyhwGt9aqFp9AkdQq/5EfvyeDMQrSymxo9bQdxRZS9L8wWIJ75pKk+vhDw3ABk8vZHHCX82t8sX36/jp0tCZKPjNMk66zQJu9Wnkd7qg/EuHt/Nn3t4eorHe3j8Mv5k9/Ost9Kvos92MsTjh/nzOv68nj/ZzTpn8XJC/Iads6zycjwu6nWKP2+mz/PINI/P0Oc2fgNPiN+5EyLz/LlAn91W/Zb58030SpUQuT3EA3e4Lt8JsTt3MOUekXKvCJwWWW8VKfeLlAdEytvEFTAP4j00F5OHBMQ7BMQ7ReDdIsAv8bmcvFek/IrrWp8Q+aAI8Gt8+skjIuU3ROC3ReCjIvAxQefjIuVJETgjAp8Qgc+IwNMiwC/eOUKeFQFe6GvJ8wLmCyLwRdHyL2PLj5OviIyvioDvDTwhcQNPiHxbBL4jAt8VgT8Tge+JwF+7LuepJ38nAn8vAv8gAv8ogF8R6P8kUv5ZBH4ssn4iUv5VpPxMpPybSPFe+3MbXvvzBnK7uLnnzSJwhwjcKQJ3icDdInCPCLxFBO5lgePkrSLl7eIqoHdgSb9AHmYZv0DeKyA+JAK/KwLPisDnBPJX8B6hN8PAiJxviMCficD3ReAvBdJfIdJboM9Fzt9btYtwkHdHAOQ+4OcIz/lEhMP+sUh5QQReEkjfQ6S3h8ifC9jvi8BfCti/xgCl/K8i72cC/f1RyHkvSEyU5/xGlAJDTX8GoeSjP6zB2x7ElRqJ1F7qFDaRbjWipCHZaN2hkEjVWsfo34ieL68jl1lIbRyJ3ZESTW/BixzOTrQmEqkoun29PhE3vhmiB8h2cZTruDdwPPa1gea0c9JxIH3KIr1lbUmX8QqJcKqBU20iD4Sti4ASqRgkvI0lrOMJMXobBBQcIy+HeIBe8BDFGwsaoJA4FILnXv+Fuvl7E57e/cWEiZXC1PvDZ4wtyV14MYFo0i5WuKaW3QrwdILUyVXthF+E3YNXOwjYGIdtwHscrETReXivwZbkDnZ3Qzxtkhbusz02RD0B/pJd7fdAtc9LJtlNDNjm91lthjYimY3s+oQoEN/lyjqLXajQYA0av1iBVuCsZJpdrCDGoJ5st0c7TfD2hDprAG4JDdEOvIx8WNXKX7MTI6wNUtd/OGzVKI2XHpj8EhADeqQOUVnjvYiP0CIHEMddpIwHNW+xATxUfp1SOQ+9nWNfxNDHejhlQIDeN2AM3SqEaWtyPV474JImHNxOvGuA+XE+SH9HUu009yD1TDaCHqnX4zUCAjcpcBuT9dTbf6oGO/Dc5MXoxd9JqV+m5MuNDcnXVkBN78KLADYk8PORJgfYrSHoOHcSktxFHrfrvL+CPDSCPHjB1fLQCA19wl3bI4EbqkddUUM/Ztd8LEBDveB+DT2IdxywW4rijtp662kB2PWUkvDSm/PwggR2ZjieGpOLhDgUiV9/bEqebV+AYLGprRPiynyYBOJJWuUt0DxFvs+8dh56xrdh8TajRDfKjwH00P07hUr7Qa0HqvUJ9P1OYVGABU4S71Rg09InnLNaA9Twk1qBs1uL7KKHXQG77KtEshW96Xsxt4DOfMo7WzkmKJguvx+SojH0o8+64Q9ZQDn3ngsT4VPO+bpFTeXTWiq70Ke9S6trVaAX3I9VLiafdffatsAir0ddkcg/bdd8ewCR94L7ifx57DNlW7FSz8/02U0ZOcyk8BmPQrD5tlGZ75RSRb5PjXaRP2K80UQlL86xbgulG4FNJARU/ecmLyfPyazkgkknyfPhZBujYf+moqnbQwz/Qj2+l/Uo1kHyefdM2b/CmbIZxuAL9ky5Xz1TJpLnki/Sig4Jo9BpKeIwnUv+uBLIEfInYYcN3paqtaSwwRqjWo+hBYEvicutvsysAGp67SQ/hxFGo9u2czdDVzrG94yxDQxFP+B6ALYWDAja7QvaAKCCK+4IIewnQuRr9hxWk4gMfT3MZ7kEFbqDnTVGmHw9zC+wYJxwMNWXniYvhJMn0fYfOuiy/Y8n2hPrYYL/ehitsOttK+zFMIVPuODjibZEC3qZdwB/Myzqc2fIK7J4ccJXYS0eTkaGvhVWVLiz3YiQb4W7m3n7rdZt8zTFwHUGkvnf0KgLybfDruETEtVCviPmRyaLNbC8wpsxO5PbOFY3Xqxpw6Vq/OFKMlzKH64sw6X94eZluB5/uAUZLuMPtyjDRf3hlmS4Xn+4ZRlu3AWXdva6JU/+fd6VHJFxuIrqJny8LIshfQ5SSCZIwqnZNjqobU9uJt/1GXes34W+uTquaORYyBWsN74biEskvJILT8s1El7ZhaflIglv3oWn5SoJb8GFp+UyCW/RhaflOglvyYWn5UIJb9mFp+XKpHPUpVm+CzhWnafj2O0yji/HIjeOBIIMytt7yEvsFsBI6q6Q8NPg3a65iVtFO0Cvf0/aTPAyPSpQ3G35cyS7CGTvDkS2k7xsk92rlrRWCwYasFdIjpSaoqklV2qappZdqT00dd6VmqGpC67UKE1ddKX20tQlV+o4TaW8tF3VJitum5pdyT6EbPUOFsfyHWWbxnbowb/wLBqdPdgNM9lf2D3Yhj1oU3DkpmhuSc5ttXPTNLfswumhqfM+FDM0d8EnN0pzF31ye2nukk/uOM1dlnP3kB8g+y0B+90TiP06yA+9nWfFzxjnwDT/Q89Cy4LYgrd4NRn3hmxz4m/CiLWF/G1YsuvUfN1mAcGo3BESjC0lp1hyyZWcZsllV3IPS553JWdY8oIrOcqSF13JvSx5yZU8zpIpf5+rbJxjKuxFkDYFY3Nw7Uy3h/wdjuIyjOLpQKO4h/wDWIswkXHeDYDwj4hwd4gzXwCEVxDhnhDnxwAI/4QIp0OcRSsiXEf+Wb21IWzoKNjQIw4zo4P8KJzcxNVKs3f9LXTWQT/SYhTQ9rCJge2xOmIlmVhqlcTKMrH0KonNy8R6VklsQSaWWSWxRZlYdJXElmRivasktiwTG9cRuyYYC9t2UTAG7kruJ//iJJxwEnYZ3z92GFuwnhQVzLrpVJYxFTVI/IkzccQqYp+rCJjZeYdyC//HDgtfqtyYX+VkKVXhS9XhiZrqpKTqlGRyqeqro8aXq5OqVJ20VJ2yTC5dfXXU+HJ10pWq0yNVZ14m11N9ddT4cnV6KlUnI1VnQSaXqb46any5OplK1YlK1VmUyUWrr44aX65OtFJ1eqXqLMnkequvjhpfrk5vpeqMS9VZlsmNV18dNb5cnXFXdQYqTZHyatRnguxK3hhsgtTT8p8eu5KvJ/+q2B7cCFS/Fe5OWPuCYn90m2MutjcFNXP8G5Ul0HpDORFVOSNVlaOb/UcdhWPDQooCQSdso7O5qiCPXphx0aQ84tdlI4Eo6zRGwCakaEEldUFuXbKCJlSirNMyAZuQpgWV1QW59c8KmlCJsk4zBWxCDy1oXl2QW2etoAmVKOu0WcAmZGhBC+qC3HpuBU2oRFmnAQM2IUoLWlQX5NaNK2hCJco6rRmwCb20oCV1QW59uoImVKKs07QBmzBOC1pWF+TWwStoQiXKOu18Q7Vqz9awAZReV3JpZUovaCk6jV4kP107fRt0RyPnKLRqnRh0r2MFxZTUxWh3QVZQTFldjHZ/ZAXFzKuL0e6crKCYBXUx2j2VFRSzqC5Gu9uygmKW1MVo92FWUMyyuhjtDs0bViasqnki6N7NMfIz/WrH4LMMLib+zQ3Kziq7T350JWfJv1fXX3Yp8lQXuLxu8h+4Jd0j5i2wf2Pevf//E8ZO9sD2qGD/Uw2bUcH+lxo2qoK9JaKE7VXB3qqGHVfB3hZhr005LH8pIcXnXfEFV3zRFV9yxfmrMx63Xuype7nLDdmjgvxPFWRGBflfKsioChL71wPZq4K8VQU5roK8jUIOkdsjeDjJ/RZKnD3zHt+id/CyE24Yomfc8C1svx8lBTxIwfPOl9PR1HVIZFAQcR9d6+YHxRlFcdrUry458mapLkAMNyPiXBqBmFQ5cpySOqis5gYjSu6IJAmvKKuBsIDiySvJnRHXUTD367y91jn/mFPE76LdfwNSiIuzQBy5swY/PAp7aaSTOP+1yQUK1OvU9LvJ3apB2ZuOkRdCjmO2rckt5J4IdSrvgZaAzqN+/4cS3peLQ3eZ/L1SZ3I9ux2ghr309aSn2CszT3oajQxFeg971etJz7CXvJ70KHvD5knvZS/SPOnj7H2Znd7pbKXV2zZMV3I3gzno0CuuN482fAP03OOBeu5xn5573KfnHvfpucd9eu5xn5573KfnHvfpucd9eu7xAD1HYUaC99xbIkF6DqFUPUfTFT1H0xU9R9MVPUfTFT1H0xU9R9MVPUfTFT3naKWy584j9wbqiXt9euJen56416cn7vXpiXt9euJen56416cn7vXpiXsD9MTpQD1x2qcnTvv0xGmfnjjt0xOnfXritE9PnPbpidM+PXG6Yk+cTx2M13SaCPKgETHeGnIsdLkiH7qT2nPtDJquTWlOqsaTU+I5KU9OmeekPTnzPKfHk7PAczKenEWeE/XkLPGcXk/OMs8Z5znditbLetNue1fyMgn2IIPt9DvRVovXdg0dlKehHmL6FhVxHL+OyN/f9JBj7lJhshPl4UdrUmn2hyy99MYicfDOxGpayFFXVbfgbCojHyH3RXyOiTaSXscnAHdFPR9BOD46vD+CZ5xOkAeCEvT7AtNpfd4XcX2Z9wCUszN5OXmbbK/IdGP6ej5I63kFecgPX1EvRwUeAgLnQwXejgTi1VfgHbQCV5OH/fCDdczb3R3zMO2YXvJOpNugGACDvCuSjKTuD6WbyXsj+IFVgn9BmtqCH5/sBHb45bVih/fRVl7MCfJppDdJ59dqUUsctVQ9apmjlqtHneeo89WjLnDUhepRFznqYvWoSxx1qXrUZY66HBB1r0DFc22wRuhNspO6Ub+TZHiITEK6WyDdXQXSPQLpniqQTguk05WQLifvX+GU8iu0T1Icn9oQ1WKUqsYoV40xXzXGQtUYi1VjLFWNsRwMY4fAoKwZ0w29BHp3cNB7goOergB6OfnVFWoT/NYfe4fhB+E9D0ZF3vNgVOQ9D0ZF3vNgVOQ9D0ZF3vNgVOQ9D0ZF3mMYOwRGEN6zQCvzngVamfcs0Eq810k+EPF8O2Fv6azD3ZwLyAc1MOkG9MThQrmJfMhGiSksigbc6ra/RY4bYeGtA4PcXwcGuccO7963dbL+KJYFrE/NjBjSxcAaUCxR64NTLK0FxTI1SjjF8lpQnKe2Cqc4vxYUF6gJwykurAXFRWrZcIqLa0FxiRo8nOLSWlBcpnYQp7i8KoqvQ4r0yD+1j9hLHQwFIFrxLD4nfneI2VGc+N1rSvyeELO3OPF71pT46RCzyzjx02tDfCv5sHa+oVvx3cldCGa/I1BNTDHya1RvI3gjgvOZBeMbpLgDsJll0AmDF7VBSlIRpVOBBCimBg9RKuFOokLoPbBUdp2wQpw9sFQqnbBCUD2VXWIvxSxAIX8eolSMnESFZNmwKcywBCTI8F7swLCIBUHlhXGBqaIwIWIrKIwLUBWFCZFbQWFcoKooTIhgNYWlySN6he7yZ4HjfDbiCHHxzy/xRb5ffpmv5P3y5/ly3S9/ga/J/fIX+cLbL3+Jr6798pf5EtqTfyXm21zr9vgRoNc5BcGKK6cg+GvlFATTrIDCBeTXI7ZHH3TipeSfNyZxm/kWg/neYl7LVBv3YgMTv3P3g9J9576eY3U7vjXF76ztdN337hJ+yQdf+927hF/2wdd+/y7hz/vga7+Dl/AXfPC138NL+Is++Nrv4iX8JR987ffxEv6yD772O/lOJ9cotuO7kkk1DP+WXp2n+5Y+JeME+nZ6JBBG0G/qO8lvRPRfYuMX4wJGfIntSuVfYLtSrS+vHan8y2tXKv/i2pXKv7R2pfIvrF2p/MtqTO1QtckxUleS3/RAdKo+y7sj4vPJRtqigH1ifURTlHA8X0VIOCkJpyTjuD9DkHDSEk5ZxnGf+5dweiSceRnHfdBewslIOAsyjvtku4QTlXAWZRz3UXIJp1fCWZJx3Ge3JZxxCWdZxnEflr7cf4RlufQZ367kTvJbWrkAG+kvQ0yfdybPsoCFgPhlc0nxy+Yi45fNZccvmwuRXzaXJr9sLlZ+2Vy+HNk7VJ0kHxISoNifj1bTn4/q+/NRfX8+qu/PR/X9+ai+Px/V9+ej+v58VN+fik6yD5vJ/XkJ+Yi+PzV2zvkWrtW9GqtGgha9rbFhJGjR+RqLRYIWY6GxTyRoMTQaa0SCFiOlsT0kaDFwGktDghbjqLEr9qnGyh5WjXVwCXlsFaP8WFWj/FhVo/xYVaP8WFWj/FhVo/xYVaP8WFWj/FhVo6wYq0A2YD/5baGGnB8tC43lVFF9npcNZ4xdydeR34l4j8lvYKfLiXW6nJHXOK9TECfQEx/1OS5luYqW7O2zKbT1et8vP8WX9375ab6898vv4ct7v/wMX9775Uf58t4vv5cv7/3yx/ny3pPf6ewt+TzRLjF/d6th2rz0upIZ8rsVeh+460shh8UlXKbzKu2lJJxD4kGiLOlFcoyTFymlRHIMnhcprURyjKgXqUeJ5BhmL1JGieQYey9SVInkYAgvUq8SycElXqRxJ9JrnEPtYR3lQCOPXKFGbAvIIfRUbYSdig8m5B0c3l/MLQhfQbcgfEXdgvAVdgvCV9wtCF+BtyB8Rd6C8BX689z9pxT78/2glIJ/Ifkh9Q3sgt3Cz+wlVIf2t4DR8MQqjIYnqjIanqjKaHiiKqPhiaqMhieqMhqeqMpoeKIqo+GJqowGxVgFMhquRUzdN2or3BJqAP75mHzcT9TmkLI2sCj5PQqNRwW3+eFuCYL7WvJxPd92I42tuntCOOXbQ7x7+y2SFjtXImIxuYqI4PKKRFIaIoL5KxJJa4gImahIpEdDRIhKRSIZDREhQRWJRDVEhGBVJNKrISLkrSKRcTeRIyrWs8WwWsbrSk6RJ9EaP8MPxXQ24/VTEdmLtupr8jORFfD466yimqEouxCA2dwtfUMegLiX932JpyjxUjXEPTLhSzxNiZerIe6RFV/iPZT4fDXEPTLkSzxDiS9UQ9wjW77Eo5T4YjXEPTLnS7yXEl+qhrhHFn2Jj1Piy9UQ98joycoiZUvsygUKtyp/P5JsStQl4tRLe8R4IARzAl609fVwe6hbXK/EahUIeC+nfBn5JG+CAOhMsFbUJSCFfYq5WZRgN4KXVRX6Xhc6Ohr/g2otBklrC8+AtpXw1CqszKeqsjKfqsrKfKoqK/OpqqzMp6qyMp+qysp8qior86mqrEzFWAW0Mp96lazM7eRTcp2sW366HTf8sNe3PpD2eS3+Uu8PlbMPTg2AFVLRt4WEvTQKREEqV8bvSo6ST69M62tkZcCiWVG9a2TIl4pXj2tky5eKV2FrZM6Xilcza2TRl4pXBWtk1JeKV9dqZNeXilepamTal4pXe2pk/WhlHlSpSc0cUGAUg/st8c4Jtv+SgLPDKPnMqyBJn1kTSfKhUqUk+VCpUpJ8qFQpST5UqpQkHypVSpIPlSolyYdKlZJUkQerlqTP/LdL0gj57CqsvhEXtV7ytP8usbLl0hbpLo6suzlGBZ7yt/lU4Gl/o08F3uNv9anAM/5mnwpcc+hNBd7rb/ipwMf9LT8J/GL3oFUw/aQd6F7yzGrG+5nqxvuZ6sb7merG+5nqxvuZ6sb7merG+5nqxvuZ6sb7mZWOty+qzzEFCXUz+WZY/ZYS63Shb65OZTdSLPnmKTuuU9IcjzKShKdhLAce5SgJT8NhDjzLpdg2Ka5TvRyP8piEp+E5Bx5lNgmv4glbjke5TsLTcKEDj7KfhKdhR4aXdI6667SsOk+nQH3otWHe2eSPfKcqrMtFmnwdDxKOZ3PhdkeKjg8tXIsTtztSdLxo4VrcuN2RouNHC9fiyO2OFB1PWrgWV253pOj40sK1OHO7I0XHmxauxZ3bHSk6/rRwLQ7d7kjR8ehmN184uPRC31wdn/rSpJw6TJ7199rmvDv1R/bdqXUJC2WvVfleF6kaujFI2dJGBrasDrkkI6eqRC7LyOkqkedl5J4qkRdk5EyVyIsycrRK5CUZubdK5GUZeVyNfJWOZWyWrMQwXcmsgpBYiPArWr0Lgm1I9lzFUkNRxHYo4jnHuonVsjMB1N1b1eo1fGW2H7OKYL2o3Ad3Lukri0NAoiU1UR8xCUi0rCbqIz4Bic6rifqIVUCiC2qiPuIWkOiimqiPGAYkuqQm6iOeAYkuq4n6iO2NwUVBtZVQWZyXHAU4BRmKiXiK8d1RgOKqE/Nu8rz3pUIi0QjkJbFG22sn2IsKWNnz6V7Utq3J15PPYXO+HvbXiQb5PANJ78Jblrcn1idavbcpfyHCe41X23qLOGqVIKnKamjC7BGAZqk6mqkgNMvV0UwHoTlfHc2eIDQXqqOZCUJzsTqa0SA0l6qj2RuE5nJ1NMc9NF8KIdGV3KTeS74YSV7kc+m4+mpxq/D0GNb1sA+ysgW+95Vzom/zuZj8HStuoEH+hPfsZVjbfSur1+0+9bpBPfXI0/IqJp6u5Dz5UvCprR9LuNzn0EKgct8mGOqUVa5ywltpSfY0qCuptBYlpYKUVF6LktJBSppfi5J6gpS0sBYlZYKUtLgWJUWDlLS0FiX1BilpeS1KGveUVFLLsWqeWDMpxjvovly1YcQo+ZXjVWZf1s0TNk2Q/FXQVBhGTMZXQVNhGDFpXgVNhWHE5HYVNBWGEZPQVdBUGEZMFldBU2EYMalbBU2FYcTkKyjNG9QSYL+fWBX/o37+yhrp50DlSjPXV3RyV6mkytKoKymwfg4ko7qSAuvnQJKrKymwfg4kz7qSAuvnQFKuKymwfg4k+7qSAuvnQDOCrqTA+jnQPCHpZ6Ucq+aJNZPiruRPQuSr0tEO50qms51dU9VsnfDg6JrPcP9fWc49tuYNf3WXeReSr/k5Qm8hX3d4A0k1WPt42zgWf9/3dYeHFzVcSYZL+cOVZbi0P9y8DNfjD7cgw2X84RZluKg/3JIM1+sPtyzDjbvg9jl7XX6HpuhzHLiI8WCIvSVWYtYC5gth5Wi1gfkh4egOKkPZfgeonPXYnjxIvuHHN91Ip/IXBg22LXMZJ9bNPkjTo1tMpkIvVUZPadDLldHTGvT5yug9GvSFyugZDfpiZfSoBn2pMnqvBn25Mvq4G33YyUTyB2bVsRB+730+fcE8stLrSDLkxdU7FXhxJU4FXlyJU4EXV+JU4MWVOBV4cSVOBV5ciVOBF1fiVODF6p0KXOEc6up9AwwyArobtyweSzcgMYMnD8vXylxJvrliMrfQ46dXka9VuvrLZvaQ+26UP41gVd50xtgMiutbFb0dYNe1czgnkztyHJzsyHGwqyPHwZOOHAfjOXIc3OXIcbCQI8fBJ5hznrvdHmZgX9J8u9JAbfMbKHZO+AryncBDrfA405A8jgQiQ99lLzZHOuNA4buRbkDsXs8Pc8fx/eEQvdbooRCQi5M/Y6020vXkt8LJGP0O7h0he9bbnfxFuV4j4sw1kLLOXGvIACefbTyMDPVyhDLUX0QSDcYPIlBzM/XO0L4fRtwc91cRrN27Qlb5U/7NarfqUg+caDdMVyPTXeDfRKyiRsjfRpKtvMvlOyadvoWcFrDPbd349aWC2oibWie9lrcizbTv3dz4DZa3IPxKUJxa5yb4jx1H7qSKXqevqOBFPypS1XhihaqlHFUryUTdvhwDV01NRa5aKkjV0o6qlWWibpeRgaumpiJXLR2kaj2Oqs3LRN2eKQNXTU1FrlpPkKplHFVbkIm6HWAGrpqaily1TJCqRR1VW5SJuv1sBq6amopctWiQqvU6qrYkE3W78wxcNTUVuWq9Qao27qjaskzU7TU0cNXUVOSqjbuqdiDYdCwvjX0m465krprJWE/RfyruSk6Sv1Ns7ZzFPldab+3p2I3ZktqmOtJHry331Sy/pCyF3e9+Fts/8pY1UmVZOo1ztaMC2MCQslDQQlvoLfZFZWEeTfQGF112Nsu3+0YCUtdpqMBNSfHCSurC3JprhU2pRF2n0QI3Jc0LK6sLc2u6FTalEnWdBgzclB5e2Ly6MLdmXGFTKlHXaczATcnwwhbUhbk16QqbUom6TsMGbkqUF7aoLsyteVfYlErUdRo5cFN6eWFL6sLcmnqFTalEXafBAzdlnBe2rC7MrdlX2JRK1HUaf3wl6tNzDFinPLuSv7By5Rm0JJ2FcA35e7cD9T7f1WWbEVU1RPGaphOW/xUI27UPTrYrOUb+gb8cTBj0w3Duaqebv5qkrwrpWehG3NWw3iYN+1/rtdOPaGQVROPQs4LoeiD6LTyIAETZfc8uwjBugQk3JHeQK3Gbp9J93zgIbQy0W7rs25ls3fTtTLau+XYmW3d8O5OtC76dydbt3s5k62pvZ7J1rzcmdymaKHvj5A3s0gK2yYAXkn+kG7zVfTm4jWN1V/hKUILTfhEowWm//pPgtF/6SXDar/okOO0XfBKc9ms9CU77ZV7a2euBvrzzwdF6Wb+QvLKi0X0l4Oi+EnB0Xwk4uq8EHN1XAo7uKwFH95WAo/tKwNF9ZQWjq8TRju5e8k/2tydJxRjXk17pltI76YSz1UICSkk6xBYYpCjAUhSsJIGlVGBpClaWwNIqsB4KNi+B9ajAMhRsQQLLqMCiFGxRAouqwHop2JIE1qsCG6dgyxLYuAV2gaqz7aH1dnVXcguplzzG+lzo1caAul03c9nJJXVyWZ08r05eUCcvqpOX1MmOq6fOI/8cqdy69RzK3TwpveSTXvZJn/dJX/BJX/RJX/JJd7Sy09lKMcLSxVnxZEqGCXDRVUPyMvIjVpqBZk97iPbZbeFGsx7t2fZQMgoGrvKGOWqWDXJ0q+tppYBMpAoycbDufuStd8JZbyDaXgXRBjA8Giw5qHUfbbHfV7UlMwDY6j2iwpE03Wi/6H+tkkRX6hzd2z3Fq6V/iVgk7w6RH6N1+hPxXaMJNH4CBm/q3SHXptz3QxQubcKS5KeAk3pPiIb/TQr/Ow/jza7/Qed3mvx/eHI7hH8UTjbz2R2MXEiFLr8OWW/ZqgkacaIObBdtjctmn7wEKLv0KpSdClh2+VUoOx2w7PlXoeyegGUvvAplZwKWvfgqlB0NWPbSq1B2b8Cyl1+FssddZd+pm2rkLYxXd6LpSr6B/CdixBUG5Ks1t03wIul09mpNYlIhpVdttpIKKb9q05JUyPyrNv9IhSy8ahONVMjiqzajSIUsvWpTh1TI8qs2R+SdomnPCq/WXLCJTPp7Otvrl6nbTGhAJNvD1FY7qttaYFiWb6mtdlS30cCwLK9SW+2obtuBYVn+pLbaUd0mBMOyPElttaO6LQmGZfmQ2mpHdRsUDMvyHrXVjuq2KxiW5Tdqqx3VbV5sdAyyw2PUBeos3RaFmlqbPzXthscOkgm+w5tR7/CKZNcOr0h27fCKZNcOr0h27fBmrMF07PCKZNcOr0h27fB6m+izw+sP6NjhPZv8VwXvcf75OsEmHE/2Hien6MTbwpW8x8kpOiG3cCXvcXKKTtQtXMl7nJyiE3gLV/IeJ6foxN7ClbzHySk64bdwJe9xcopuCrBwJe9xcopuItjs5guX9zi/XJ0A+9Js09LUTgr95HdCgXzOtaLaa7LVHoKLxva4iEhfrNpotmeIimglGS0VGK0so6UDo83LaD2B0RZktExgtEUZLRoYbUlG6w2MtiyjjbvRMrrBt1nSf+i78HpRD4mKfuM6kOAmxRdWDuLbk9eTW6KBmHMnEtym/U7G/d34iIu2xLOVqClcPflSK1Wm5nXy5EutXJma172TL7X5ytS8jp18qS1UpuZ16eRLbbEyNa8zJ19qS5Wped04+VJbrkzN68DpWh0v27JWNSejD5BbFZTjjDK/l8SSlF1If7uWfixRA1rE6WOhQgl2/VdAvyu5SG6LJiV3eDblKrxDrqhl89WVrHLGt6IWF8jtjnKr9oW5ghlv0iozsHPMFcyEAUspVVOKd4YMWEq5mlK8M2fAUuarKcU7owYsZaGaUrwzbcBSFqspxTsDByxlqZpSvDNzwFKWqynFO2PPBZdR1bywgpk8S94cBUOLJQtraS1NqobkG8kdUe95R+6WIclOBrZYTQt45UjQwofJncE11Xp5n82aQW3HxxVI2UOiI4R97iUkuiXOehvJeZvfiWTPUjTaVQQ6Pr5r9epN3x03VleEil/13bTkKMDbQVU7lQ3efa8jd69OV+qWrocs4oGVom5JG5BcSU3Os9QNSK6sJudZAgckN68m51kaByS3oCbnWTIHJLeoJudZSgckt6Qm51liByS3rCbnWXpfF5ypVcKqW5IXHaRX6fs56FI9S+6Jqr23rqHqeksA1SUOtVvtWxvVtYPcG+W7a010dy3OR+W2kHtLWICmekROqicVU3zNLoFmLNCMDygRoNamr5VibeUSu2S+QUvsAvi2q5VibaZaKdYWqZVibXx2aZrv2Nnssqtgn0/0tkcCzHTbJxRVgAfI6ai8r0nvW6P7P3yInCMAonFHxG+2v5TTStXQG+BcVNh+pcD2Tu4WdkqNXZKxPXO5hZ1WY5dlbM/UbWH3qLHnZWzPTG1hZ9TYCzK2Z2K2sKNq7EUZ2zMPW9i9auwlGdsz7VrY42rsZRnbM8sOBeAdeZ/Tj3NwUgVKRJ4joE4bHTNRM5vgZNqqyQ7K0M431knH7ckUeauj+g4+J+SD4WSddengLSF24vKtUeklkgyTqnHDsJdFDpiUG4a9FHLApN0w7OWPA6bHDcNe8jhgMm4Y9jLHARN1w7CXNg6YXjcMeznjgBnnMLvdPWqPvqI/u5I/h/DaYVeM8WaktCGRAEru85m3hOTx3UHuC65U7guuVO4LrlTu8yiV+zxK5T5pmB0pklK5z6NU7vMolfs8SsW/+S6lYlWhklKxalZJqdy/hkrl/lUplftXpVTuX5VSuX9VSuX+VSmV+1elVO5flVK5f1VKpTLvBFMqs0jpv0WpMCM9RR6oWp88EECfPBBAnzwQQJ88EECfPBBAnzwQQJ88EECfPBBAn7h6tII+OYbwa6pPcFx3krdFPdfoeM69DN0ZZt89aYEbSV1S/hyFIV2gR6oHJOn7nTD7JkuL0gAoYr6/I8RxDiOOyx1Yhc6xXBiGFd7Crq6eXiM5arX/IH5aoqJ7rHq69UCXtf4gdJGS6vHqqTYA1TinCr2oJOvgDve3V0kHd+xxcocXWMUde5zc4UXycsceJ3d4URTcsSd5PnkwmnT6WuUXbluNsL5v2QYl+ELLFYqtAGevjLPXH8fVCglpUEaq4EmP4jlG1frg5lAQMh6O9iV3MAg5FyP7EhsJQszNv77UUuShIFOc5JzSgeHP9hbGnuRm8vao+qM8nOov9M3VnfNr5FjilN82Ka474yfhlVx4FW4qtuDKLrwKNxVbcPMuvAo3FVtwCy68CjcVW3CLLrwKNxVbcEsuvAo3FVtwyy68CjcVO0bdsSxJ++Tpztttl3F853VU6iOBINPnYFl+3qprLNPvMHmHY7+5ie1eW3Vmjih83W57FlCnGD3XZuwGgzox8dSSeaMI5FjbVdJ2MMMe9pf8tqF1+DHmheSdes3pykOsBqD8Ls0MgTCNYOC9OyprPA5VL1L456d8DtmS7EZ460NX5Tem1iekDtg2D2ybDHspwuptA6dR6fhk1lFS0lNS0oZtBJ3ynigsJiRXdA63dLeGqpsAr3CQQ4+dDu+dt4YqzYQuAimJQEoQ0E6JLgJpiUBaENDOjS4CPRKBHkFAO0m6CGQkAhlBQDtbughEJQJRQUA7bboI9EoEegUB7fzpIjAuERgXBLQT6cGAbBVoFt1F3mvzc0zBkJZRa54xupM9lcA9Zi1F21sJTbYJI9RI7U5uRCRg6W7p2wlOz5VVh2GedY6cZZGFFrvIlrqlby+cZEUWki05ybIsm2zKTbbcLX274SQrspBs2UmWZdlk026y893Stx9OsiILyc47ybIsm2yPm+xCt/TtiJOsyEKyC06yLMsmm3GTXeyWvj1xkhVZSHbRSZZl2WSjbrJL3dK3K06yIgvJLjnJsiybbK+b7HK39O2Lk6zIQrLLTrIsyyY7bpHdKTO7W81GPHsIWmC/PQQtknoPQYui3EPQNsS7GaIFXkFD/DZDtCjKhhxHnOq2AzaTj+JOUQskNzkQbw3x2uOasWqyreQPwkk3QU5urHpySaxlW6LZW8e9nOjh6om24YcIXocXjN6x6ultwkquV1XyDtF0B6dV3ljRAvttrGiR1BsrWhSfjZVfrmpjxRdas7ESCMe1seKL47+xclRGkt2ysFMhtjt/vahIflKGglJUS4lE6XBQSjoBkehdFZReC8qGewkkEToSlJBWKCSCu8j7AtpnBuqelAzur3scmzsaDJ/toPdVuR10FSmtnpOwNwYDEtIMO5LZH5CMbpCQzoXk/VH1l+j+/iHxqi4/rLSBWZHUL4fwVasTnW21vN/a8tKV0C3BBaRJ3zgFoJniZy6D0KRvqALQTPODl0Fo0jdaAWj28NOXQWjSN2ABaGb4EcwgNOkbswA0o/wcZhCa9A1bAJq9/DBmEJr0jVwAmuP8RKaW5h4GO9UdSd2FxzN+GlI66LqJE98BiklCkKn7YSISL2UakO6uphSGUGUps4B0TzWlMIQqS5kDpNPVlMIQgpaSds449kLbd9y7khf54Oh5AD9j/VXczvxAlJ7uhQceoE90Y4rr8zl6hTBePfmBqO6S7g9E7Q9JLkfiYmLbiRS2JdoSLaka9d3iYgPMjc8mMQk/pcZP8TW+G59NWBJ+2u+2e7aYd+OzyUnC7/G7w56t2t34bCKS8DN+N9Oz5bkbn006Er56AKxb1dz4bIKR8Hv9bpFnC243PptMJPxxv7vh2crawn8khATkw9HAHe1eTutE/9wHPVegVry01cOJ2ktQoWy/S1uv00iB/Iln1TKAbrI+GEjAtHfvBirSuvH3GBYpxC6DdC/1oRtAGN1UmTBWpFpBRN1UmYhWpFpBcN1UmeBWpFpBnN1UmThXpFpByN1UmZBXpFpB9N1UmehXpFphQnBTZRNCRaoVpgmLal4jIrb0rZmAoNL7UDVKjxHxK8Kr9D7kUXpMoHTS5sF3KD0mOjq58uA7lB4TEp0EefAdSo+Jg05WPPgOpccYXycVHnyH0mMsruN/D75D6TFm1nG6B9+h9Bjb6njaxr9Ow1zWwn0lrIW65MOr1yWBipQk/sMBdUkAHndTDaBLAnC+m2oAXRJAHtxUA+iSAFLiphpAlwSQHTfVALokgES5qQbQJQHkzE01gC4JIH2SLvEXEVv61kxAupKfCpFf4wdCfOzaznb2iV6ztWXFaWzzWLz253n/fbbvBeQGetpG7R1vs3eDcFtyBlE8a80t4sZcCppxXAz7SDRxrvHr0cRmo66v3XhfKBEzfhOwjHoA+a0oBXk06rk7lhd3BRQX9Gpv6fCgfQpkJ7lROq4k76e73j5gaTt8gR0b9gja7Qvq3KdH2NdwWL9udr5Slzp7t6MQAXJIeUrAH36LL/w28hF5y9qgaNwnQYKe8GbHAB1we5Vw9HCYA65NCdfGXle+vppB8QNWDIofqGpQXr/SQXl9lYOigvcflFbyGFO77OqkzUNhTE2S35ZfDFmDxs75sTxx3lKKl1zxsis+74ovuOKLrviSK77Mzgsq67bljJFKbia/w9QSa411tTa26hzI/agmt5P8ruqsmOOEaqsFg0erRA9IqSmaWnKlpmlq2ZXaQ1PnXakZmrrgSo3S1EVXai9NXXKljtNU2lcdqjY5Tlh2kMe975Fc4/24dXBGipfs8X7cOqoixeft8X7cOhwixRft8X7cOo4hxZdFGzaTJ1RnQCM4aq3Jy8gJzysbn1Pe8NyCN5DLr9FGyJyFXt2l5F5qu5Pnk48pWdO9I3pXBA8yXuQDrd9JxTe9v6cZVHVZl2pxKpW4mXzc580UO7btl6s/tv1xy95ns74d1x/b/rhl0Ut4Fd2ycjzro8ttUlx/bPvjllUu4VV0x8rxrA84t0lx/bHtj1uWtYRX0Q0rx7M+Bt0mxfXHtj9uWccSXkX3q0nnqLuObavzdAcOfei1MRfBT/p+VYd1uUiTr3cR/KT07R2mbHek6F0EP+n6sHe7I0XvIvhJ1yfA2x0pehfBT7o+Ft7uSNG7CH7S9VnxdkeK3kXwk64PkLc7UvQugp90faq83ZGidxH8pOuj5u2OFL2L4Cd9vh1k7nz9cvUugn2wuNPwM1ojAkzDW8P2TWBYyZ2VUGKIEk4VEHiLBSwMEAXFs7xAPjS4uaKnIYB8aHDjRk9DAPnQ4KaQnoYA8qHBDSc9DQHkQ4ObWXoaAsiHBjfK9DQEkA8NbsLpaQggmcYeFTPZ2xFueuiyXotg0+4C2r+vMRWdtCNYmR16BLneZyGoOJ3tpbRBzlbglbxcLOOVPPzL8cpezpXxyh6e5XjzXm6V8eY9fMrxFrwcKuMteHiT4y16uVLGW/TwI8db8nKijLfk4UGOt+zlPhlv2cN3XeQTzJbVe9noTl4vAL3z3KXk+XDyNbj9hntLji2nT0aVyX9gv4hG2udy2jjaaMg2Gr9kwz4VRZCrJZD05YZhFenZ9WVFepKlIu1luqPocuWiy86i3VvDvGh3cuWi5ysXPe8s2r1/zIt2J1cueqFy0QvOot2bzLxod3LlohcrF73oLNq9o/lJ9Qa1T9GNNt0lVzlLznLce9O8HHdy5SYuV27isrNo9wY2L9qd7FP0Vl9xlrZbtsDq+VOSMFfy8NJuRNGLhq+HzQMVqdlLZD2tLqjZH65pzSpRC16zLvLpIDMlLsw+7dpXs+JlV3zeFV9wxRdd8SVXnN+/41cxacy7krvJZ/wmcIU/ju7k+U54u6MU0FuSu8hnZXOkUh+1WuDOnbfPuuxOV6pj5+2zLtvQlerYefusy35zpUo7bzsrNMSxEtlJnpYNJV9gzhdPu/bfnnbtvz3t2n972rX/9rRr/+1p1/7b0479t53kmWoq94yrcs+4KveMq3LPuCr3jKtyz7gq94yjcheRP1J9PFzR684oedZj9q52lhiwaOKyy89TlUwlVaOlkvKjUnJSSWmppP2olJ1U0loqPX5U5p1UerRUMn5UFpxUMloqUT8qi04qUS2VXj8qS04qvVoq435Ulp1Uxr1UjgbkQXtbopJuGSXPvQpc/dyacPVza8LVz60JVz+3Jlz93Jpw9XNrwtXPrQlXP7cmXB2MB4Nz9S7yfHU2wfNKm+B5pU3wvNImeF5pEzyvtAmeV9oEzyttAn1DXLuTn9NvCyr12jYLy9r6U3qUk+DE9p7Sq5wEJ7bwlJ7lJDixTaf0LifBia04pYc5CU5stym9zElwYktN6WlOghPbZkpvc2lVr9usqvQ4t5d8XuX6Q3Zi0Ct/RBpl1vbn7YFKdjOnBL1WigIsRcFKElhKBZamYGUJLK0C66Fg8xJYjwosQ8EWJLCMCixKwRYlsKgKrJeCLUlgvSqwcQq2LIGNW2AXqDrbHiBvV3clu8kX2Bs04as1xXy1Nhn3huyV8BcpeQ7rcQHrhP1jGdbjA9YJ+ycyrF2HqAr2SzJsrwXbq4L9spruuAr2K1FmO39BvEksSXHrPVKjaI9li1vwi1Lceocj5fP3Mjxuc6eyl7sEpMvXrLePLUiXs1lvD3e5S4+qIL8kQ/Z22yyo7F0PzXEV5FeibLb+KoVUvn+8w+nxKWrpym0cq5u9axRw/F2jEq4kw6X84coyXNofbl6G6/GHW5DhMv5wizJc1B9uSYbr9YdbluHGXXBpZ6/b04Bvn+NIfY3yXpCR6pFq9DUhK4qRUsIpRkoJpxgpJZxipJRwipFSwilGSgmnGCklnGKkeqSRcvS6ZqR6rJHaSb5e6cXoX4aS/Bbjsyxg6Z2nMtt+nanMtt9UKrPtl5DKbPv9ojLbfnWozLbfCiqz7Rd+dvYOVSfZ3WuDYn++UE1/vqDvzxf0/fmCvj9f0PfnC/r+fEHfny/o+/MFfX8qOkl+H2r35yXkG/r+1Jw8Od/CtbpXc9ZEgha9rTldIkGLztecJ5GgxVhoTpBI0GJoNGdGJGgxUppTIhK0GDjNuRAJWoyj5iTIPtVY2cOqOe9xCXlxFaP8YlWj/GJVo/xiVaP8YlWj/GJVo/xiVaP8YlWj/GJVo6wYK1nX+I7yevJNdsBA2NE1YjOBp4tRjDDoP2W73NKKAqH3iPSgfg5aBYIYdk7+W2zTXJBPi8rwdDHsEcag33b4HW1mfkel8+guVyL84inWvQIXd3tsLGio6042LXTKfeWaFjrtvlFNC93jvjBNC51x34emhY66rzvTQve6bzPTQo+7LytjDFpxrGx2lTCRJ77DXpxIC1PGEzxdCDeH/i57rSItTRk0TxfCTaE7yUu22Oz3O/n+kj2V7e+2Tr6/ZE9Z++29tpfsqWm/vdf2kj0F7bf32l6yp5r99l7bS/aUst/ea3vJnjr223ttL9lTxH6xGO1Qtcmxwbae/Bl71SQtyZkQ8/SgbkRaBYKoMO/U72n1Bqv691z6wZXq2MD8nmu+d6U6NjC/55q/XamODczvueZjV6rjcwJFmxyd2osQSgdLjns/1f6Y15M/Zy/7pI0PNiI8PajLlVaBINoVYXX7vt5Fnc7D1HFE9nhj3si8MSt8RPkSsz+9Q7IXV6qTv7OqsWprpCblrM9gpfp4/f95L/9pSN5Ybd00FwgqC7ikUj013rmOVVs5H1rOnuskL9uyscVP3l+25X2LLe8v2/K+xZb3l21532LL+8u2vG+x5f1lW9632PL+si3vW2x5f9mW9y22vL9sy/sWW94VbRLxCPt8SANBZ4RB8hfukdq2Ao7qJD+wC9ru170/sLt3u929P7C7d7vdvT+wu/f/cvcmgHEd14Egfp+/fx8oNK5GkwSbTRIkwUPN5iGIOgEQFAAeoBvgIVsS1QAaZEuNbri7wUPOYSuOJMdO4iiO4tiOc9lyYjvxkWOY004mkTOZTeLMTLzJbHY3yYzjZHJpksyMN8lM9r1X79+/Gw2I2dldUeiqX/Xeq1evql7dr/ab4v2qKd79pni/aop3vyner5ri3W+K96umePeb4v2qKd79png98uRQp38ScBk8bHPXach6GTUrvtZ2X0Iy9jVTZGlTZF8zRZY2RfY1U2RpU2RfM0WWNkX2NVNkaVNkXzNFljZF9jVTZGlTZF8zRZY2ReaRJ0e3/qfyhIhlRVx2IhzeqUWtPh1BZ4Iq/P3izzarIN+p4smmE+I/bc6AvkTrE39uFlBYFtCoNTRHoU1HaJ5C1x2hJyj0piN0nEJvOUIDFHrbEfoghd5xhC5S6PMYep8ZWoZQmghtYOnMQKgQwsudI1QJ4T2dI6wRwvs2QNhvIHicW7fczt0NpP8C7829RMcXOqlU94m/RISXaV+/M4S/QoT30BZ+Zwh/jQjvo936zizHvbGV7cs3HHqjxfblGw5F0mL78g2HZmmxffmGQ9W02L58w6F7WmxfvuFQRi22L99waKcW25dvONRVi+1LD2GbUz6v7cuz4j8H0tttZv2jyYh+ksK0688PXI+mkn1QdPKxCuM9PDmMPZie2SSxgWTSg9QxvHl7WfwNKjTrEwNeZmKDuFyax2fsf9BneH8bvUGvq6r70k2ka7Jk56dDyvk0Pjpte//AfKnPM9Xz4m+xp7Xm5lv1BxPMq/xGqmE9zbCeYlh8WWaq6666I31F/N2mtH1+t/htJT3cwgyHBHrirro9/Zyb8EgbwiMdEXbvav6XACa2X/xXexE/njvmPY5I2yBBAwCkPppwxOU4rukRl+e4dY+4Exx30yNunONuecQFOO62R9yDHHfHI26R4/hWbEtJ2EYfHnAhB1zortoPjfq/BdLejctR462auBvUA74rr0jgMCuVFxSkpnJp2vHJMsy5tlTyD2NjGWt18QZtwPw7n+e9AUjNsEY1s6UcxYEXo63rSvKdm8uPnca9yc3DttyYb8pSboLyZBx2ei1KpGnPgETgBuqFZmHaZdSqc6YPYarGLN/YX0CeR+WDKA+m6UEU4nHJLeRzVrD8Q8jT/a148gp2s/Rgh3L0rAf1DaTYsuDfhAwdBZ/zZri5tYJ3o1mZ9riBtrWC121fcsE3uUSb7QveALMW/KZuxbUp+JZy3ELBO5HujQwdBZ/3Znh9awXvRrMy7XH/b2sFr5sn5YJf5xJdb1/wBpi14Dd1J7FNwbeU4xYK3ol0b2ToKPgT3gzf3FrBu9GsTHvcvtxawevHgbjgb3KJ3mxf8AaYteA3dSO0TcG3lOMWCt6JdG9k6Cj4cW+Gb22t4N1oVqY97r5ureB1I79c8Le4RG+1L3gDzFrwm7qP26bgW8pxCwXvRLo3MnQUfMCb4dtbK3g3mpVpj5vHWyt4/WglF/xtLtHb7QveALMW/KZuQ7cp+JZy3ELBO5HujQwdBf+gN8N3tlbwbjQr0x5XwbdW8LqpbC74O1yid9oXvAFmLfhNXU9vU/At5biFgnci3RsZOgp+0Zvh57dW8G40K9MeF/G3VvC6NXMu+Oe5RJ9vX/AGmLXgN2UcoE3Bt5TjFgreiXRvZNj5qoS5suhZCfZ1sirRmsa9WJXYl358C7nxKIp96W/aRFbu/fLKvvSj4uvWYyJJTszMR3t7hvvSzyOBjReJ2zPbwqQME2WLGK60synxT3QG+OoLCx9SVdUv3gn/Qbbi2W7xTp+0Hnf1hcRddVd2mE3kuBdNx85A9cwKjsflDFdI0xWy7gq56Qq55Qq57Qq54wp5Xob06SHSQqofQyOQi/f5vC+36HRkvDUXRkjTFbLuCrnpCrnlCrntCrnjCuFcbLfza6zoU25e8AU0nzr0QVXJ/qKi7kv5RkMA5c8oeQkHuZ7wqYHZHhGmdX2ySj3WNf2qb3ZAaBRkGOsd68r5pwdmVRGjlf+B2W4RN2JC06/5ZoXoTrM54pwKqqRvNgsh1r1FRSSBYK8ZBjCq6AOCkemBQkTuN1x9LeA6E9GVvaWOpKKjlMm8sbo80QXoOwApPr0HfDvJF5iNiAzxCNmIiF16joTIYry0ZQpBAcDYQ3C+QlSksS6PdUFdBj62QXCMqrWSfZei+lLdIDjFJrhE3pcTE8PJmNjPUlByiWRIHMAsgDuKLgj2EKSlGMZ3X/UB9YOyQWFCB6Q3UOi2ksGAqBTG2OWrrwayefWVQKonb0gb8u2ZR6BI6Vx9dyI7hzgg7lxPQcdLGBR6J9Qk8wRSOMolqoo8cYm+Y0QSfcdlWPbDivpOf6oP8q1CpfHNpsRJlifR0beLprsg5v4WMRkxxjEHOGbUBfEA1TtNnEpzwwT/g7ofIPrEQ4RjgZjuyn4d63cic8JVw32Gr/9U4MSR+0aoxveKRygZFUhTfUVBytLqMkoL6rQqHmWRCPEYsxph0dgbANWwcQdIQkwYIL3wPWD9NtIZmB0Wk0Z4v1M67ZuGL1vCchk0yiUrpihrCXEGmiPIh2Q0ZMkqltAMpeCAoZhZbI7umOwbPpDwAEiYduCoQZwDOTs2904pJ0jAaVEgLoSYT8d0OpA6piHEAqubSywnIS5zCLZNBUI8C6gXCgibqWKgvmotomFxJS2kFGVTwvQMUJ9FdxlKZzYpfZDOVU7HN7udw5LAe8JKD7hXCz3iPEiGQgE+jQ25R8xxECbpv/oyBl00SjRNrdjWpCH+LUaD91OQq2T92Y8roPW2kcD9HhV6O0laiLfZlPcI1LInW+jup0hDoryftuFgzbzmiTMgbax70CpCuDo9cFcNZB9HXTNsaJedrfQTYD0tObBoKvAu60qrob4QSGVAaQ0bSmuHQXaXRWnJTMctGehQjQHmih0z+zpq+Owodk+mlHd46PcdLv2eMtjQNV2E669b80PK121BA7NDyIsZYqB31E3scHUTn/NDddnhqC7bDN/uU35d/TnrzECLnGBtGubapMe0rlUewwjPZtypUt25sVLd5VCquyzSbVWlZTmYan4EMv+sV7cEo5NW1V+WXJdLXNBlWHX5bk9dXubqflcNZn9UUUVq76h8qy8AA+xzDo26b2JAhWmQoYp89AsqeUIkpWrzJaXa9G8s7TUEA17ejq5VDwJXNQyT9Y2oSpVFhGX1+kPURntY/dNU1sHqgON75JRSoepmVpG0aNg1uKHysaLRi8T5PrGuP71uKN4UqeqnHdp/wKGM97uV8XYZZCrj/W79u52C7qqh7GnI4YGWDWh/66GDIeS7ajg7hR3yQaNDzojbjiFN2jKkSdOQ5o7HkOat0N+Oth3RpPXetj1Prp5Fzf4E6rxDjvG0fyKVTIBcNF34uTBUrXcg5XsxRXhVThFiwImiTxIKTN/eOTqYwHnZV/zqQOqwo2h2mLqN1LVPHZiIQWtRoTV9I5KbEPBl428iqXZBJnutM5VNqMOBDdXhxp1vQnwT0/5myyTB1EckJ6de7BHvVDiI3/Hw0Iw94l1uIGdP71R/A23UXys196rXbM8cVIXFC8hHHFqZTdDYFq0FfVfVsgegyR3J60ep5NRmF9WfF3Ho8G6F/CN31SiB3pfXT1aZoDkJ+pJCfgP0aF4/aGWC5iXotynkJ9Bn1ZWU39XIjrlq/GutavyIUeNHXJNiy8j9rhojto7n9TNeJlsnJFvfoZCf2FpQv+hLnWTY+2HGhqrEMqoyxzuSxP0y0Db0gUDL0Aeb0Rd9SHbMINsP7eYUtx2fPcuSoivLgORvNT6nmpy731qTW/T1zJlLUQB191SKgI1eH4Vh7fXx21KZI+JVhUamlp6YMurqiS29X1p8AJEepGWuuBoQH/6nf3zXn7/3I+//TcVRYSPZ9/vUX/GlHsoLvV5zCikUJYkxyfMbFbopKRvHDIcy5CnBfjnDARmayDYpmjKzZNTMSEZ8UOFVUzt3Q/ospBf6QrNJcqAr/x/7yR/+7M/+wYf/5j8qLaYtWA1YJPHsLyhYqx42alXaEMWbrVFeGXdVFk9JDFmzFIMs/el7v/CXP/Gtv/f6044STWQn1Nd9qUeB50eI52FmJCI+ovBrOBHx/YpRlL3io1LLqlCWHAgjh2dSj2CXf8r3YWUDEiNeJKDRd5N+eCyvn/M09cO41A8/pJCf9MM59XpqQnbgNBc/C8oLkgeJ/4jCkwp9BN8tPqZYtNKI+7267KcVnHmdzvdBxbFPefflDgAb27mHTAJRR7ytb9vB5e0FByW1DYrOKwka6W/nrsozDftM57txNDDZZii6xzUU9b2mTAyqItkrPqE4yE/RwKEfhgohOWxI4unqHyNhT2hm8MQQ+PvFJxX38NQ2t954dWOb+HHFUxD7oR/1XOVoPXD2HhgPi0+hInCloI+Sh1FReHIgG7omPo35fwQnmQMeInNOPu+qPdm/U6BUzjjGaAdsw+cBjxFZB4KXBfcZGxegvSY9Rm5tp6PeQ1OeZzoGSpBtd4LubCezP6CoL6qpx2kIkZStkOZm1CPx3KxrVhOfoyY//bof/J9XKBHw7xE/aTbOx/M4dJVjLfTJlerXFQ/l+BU/KASpHL+igFfqva8oBU64wAnfVXuzJbUrNW3w5zjaPdEPov1pxTzJjUoiNwNdUdwW9jgpW5CKGxakclfty16HZGZbJBOaSECxWwZHxlgGNFs3KDkjGQgwVoegotpGVJRQP6nJs6wmAxY1GZBq8meloElN/p4PmDrXRlNMTUSSYa7snpXHaIIt2uUvKelo5heUUdmh4uDnUR577xRfUFwLkvssC5Jt1eEmW/zsCfFFj9RGveiHTR5gPPDz9gyg0I3WD5qgz7gG8osk18cKV19N3FUHsj+jQJ83ZROtkZi5fJE7b0h1xCXV13Cw9Cv29KmHdUr6tXbyGPGQx4iZh9cCtlH4YPZbsE5c+OerE22LdYf4VacytVaJzer5rRZfKrsH5j3HrErLNXmRM5aVVMgGpbfb18yVXQQdAi3jS11ss5K1171iVRgECsK6rgWZuHj1nYlCSnxJ8YzJvgNHKgXPkYpj4bkfiHsMQsxF6EGx7GoxF1GAJlv2iOxnaZz0Fu9x0infryv/7xsrfQzHSnNtavuka6wUeF2B0RL21rLj/XlXP/j/r9HS7JD4DVqwGLWncHEatzmf9o6BKvqv3AqXqk8WRw5pjnGyfdFrFJHONqCU5h1jpzOWsVOLIdDclgdVd9Vt2T9ToHn3u08FbGbxw2PX1Ll81W6FxLWMNeLYNR1psWs6ssGu6Yhj7eUKZLXX0GTGGQKrPtPXVEYsms1YUxkxtpNGjDWVEdR7OBpZ4NHIg5bRyINyNPKbNA2Vo5EjwMMQ8ODD6Rq4ftpChXI0Ft2psyLdCN7sv8fySTl2XHGSqUy7Ws6Iq+WMeHekR8Rv6TNE2TbCeG0SEQYdM0O8N33ZLLvCdu9Jw1AujXx3W7c87b0uxFm2O7lALqqLqSvtd5Ohcv1bG6/AhHNYjgqFKG7P/i1M31NX25K8MnHK1YyQQnK3+F2+OzrW5XV3FICeuMc7167MDXiud5hrGiMd8Ii6pcXkzlgD8tic9pTqxpvWKPVvV2A49TaXEpEnZBKWHVRopV6L3YPi35PydbZgzz3QhGUPFOi5NekO3FJbSW13qFLTd77jHfMRy8jVPl98zT1fHGmx3zjSYg9xBJvAKHB63qWTjrlSQ9jdALvTQ3/pwxnSRa/7AGq3I+/95okBj7xvdee3E6nZt2pHWmzVjmxCmO7N2xbi3foWLZVMCeS4y7E/1mv4droOIIx4j4vN0nEdPKDyykMy+9qMmYdcm7Yj2b/C+j3SZkCXOqVULYWw9T1Xz4nV7CGjsOzUPHuPVn0GDN6cfcZ+Z0exnTuKs9BRPNkmvyNOHe+lzUa4j/jXfugjnmpD7UnvHmKksx5icyPbe95XtBv4bmF//d71PfvMjXfXXrxnabXre7YbfQ/p+v0OfZduq+/+Z+n6KHAqcPB2Vx3Ofgr335926JcdE93JuPg/zOXA3W32oa3LEh77x8493tY7uQVhS9Ldo+7MPqkmU9dcXU/Cya5X726n7tFf78z+HI7annHIQo4ecBnmj2jZAroSm8L1ynVY/EfaLfY6d/BVOcTQbVpv8bDyCfE1oiOjLe/7ElfTSVq0lb0J+mR/giOcP6VUR+VCjGRh+gW1kBR/rNg3yAMFPcfeKzcFTfwHPpGfwMEO7l6n39wEblO710We6CxaJjqLcqLz5wr5aaITUV9XUktQhjHpXTa9JdO7Qt5R9QUlFWO6sdx13IR71q/+hQI/f4k/f4U/f63gaewL6r7UDQYtEwsxYqEMLHxdwa+/VehzBL7gfz4B38L8VYboPcf0KhZ6FYPe1xX63AS9VaZXtdCrGvT+QaHPTdCrMb01C701g97/UOizM3qvqL/o17pc/waSfvWjStJuFufvA+1i/yHgHf6PAcKwB/73AIFukFp7LtrzslEuPOP+R9sctuFoUxL5p8AG6fc4gt8ZbC3a5Bey2u8GtNBztWalXNWiS7XVtWK93KhVG9rAhWJzvV6szNWXS/VJiig2a3VN8/AvVkqaf7x6RwtLCvA1U21qSlFTFjW1XrpZqjdKy9pAQfqcJJMcvmwJUxY0bcn8jDDhiTua2ihVSksUeGa9utQs16pHNbVcbZbq1WJF02aqkJfSXLVyR4vooA0tOF6vF+9oylmt1yB1utRYKlWXy9XrWpwDLxcr66WG1m37hER7HQEzq2sVLbhavD23okXny9Wl0lkpwzDmBFjS/EePHNWUJS0wcadZ0kKna+sopeCZSq3Y1ALnapBocP5Grd4EMuUqkIlVLQLXtOp6pdI4U643mlqE/OeK4I3VLSLUAs0bpaoWwl/gUUjXkqsEhljLyyxgU3h5LX4R4ldLIMAL4GiBKv4SroWW/9mbq1p49uYqwcQnzapytqn1QPj59UqzvFKulCYrxUYj+TOK5hNdGvbDioarJ75Ul0Y9C7sBdoPshslVRJTdGIf3pCSVJHxpopdD+9ndzm6G3V3sZtndze4edu9jN8dUj8FXvzhOof3iZKor/ddD6QeMzjuekwbH4/m0GhAChqIUSpuR8gpCAMaz0q5h9K7alT7vgXoShr3bkykYInuiQ6flGY7kZtzkaLQwkE+IRFq3fj6Q8+f7iL8EEwpQqI2zB8TgVjM140bdKhcHRQp6mFA2hkT4shweXFFxsjAdB19E+hB4XAwRsGQ2BEBAlUdH8XyqE9avtCXxJkrmLVbCLA0nead0ku1lMynSbXjNbMTrtA+JnML7ZtPxbIIErJdawElOmgqOw/x6B826hmE8lJ7oDBfcnS1pTDMN70wwpk0yUKc8KPnSj7Wl1AmFHN29S0hccvHcWIJkbgPmIlDSY94Yku+2mDKtbsbsZszuDdNyYXBa7TBlWoIxBWOKDdNyYXBa7TBlWiHGDDFmaMO0XBicVjvMg4TZw5g9jNnjxjCTcQFzMh5IjiwlGTPJmMkNs+TC4LTaYZ4Se99Ec+wId4PmuPeeNcd2lDprjns33Rw9MTpqjns33Rw9MTpqjns33Rw9MTpqjns33Rw9MTpqjns30xw9gTtqjns33Rw9MTpojjvFiGUk42hY2H0eEPv0JRQvEPtQxg6qEqi8LGtrDJLu/s7p7u+c7k5xoH2GdgrNOXYzAIhCXoy2BnC16xcDcqRysA1Oh6PKeTcROY5qkXxH48tJcehecOYi8uY5K4rDbTgbA/Qj6XyyN9kzHcfa2we19yjVXtUrkCwr50K5XmsSeZHfbFGiNYfLeAXBl7caIQ6QLQff7B4RImURg5ZmxMFXxPyitX4t7cBGKwtEN3zv6T6l+lLqqOyHjOzR3nDCXIqcTXESpCRoaVdf7I7pTQLhCjYsIP+KOqolk/Lil5T1Caglg1oXhILriPlUVHu/uYISWapVm/XiUrOhxSaLMGmfqV6sFJdg/j+1slJaalrWKWKTOujpRkXrn7q9VqqXV0vVZrFixLReWjim9QDUchkn8MUKE+/WESfWyxVcH6A1mdiSlRGloIUqxdXF5aKm6isAWuC5cnVZS8xUb9aWihhyFr/D9VJzvV5taOECe4I3cflDS3DEhVrzwnqloiUK9m9tvFqtNYmQphVNfwTgIIPo7TVBzMDQxMyF8cITWswqDC02vnDt/Nz8wrW5C5NTWhy+zk2N65+xqavjkwvnnpBf4UsXzl6Yu3JBC0xV11e12Hx5da1SYumE8aNcamg9i7VapVSsQir1UoMkGp6QQZqqF6AWuFQtA9Iii9Ky1gRlBRwjnh62cGetZF14Sv6V9+KHQosfGApVBhp8kENDjiUQzbYU0mUshQgOT7Lbx+4gx6eY+hB8gTKiUCG2cewOcmNimN2d7GbYtS+dKMbSyQi7+9kdZfcguQFxKNWVngbFuw+a27b8IHRIvdRepYraltuO+mkH66kg/oTwZxgVWhiakioVGnTPqIz2qNdBF/lyfiu0A7CLoNQNoV5WACwCYNrsQREH9uTDRQlQNPqySiIXpc2VHoiNTe8jcrNx0Yv7MvrnoPzMq6Kf9lU1E26AhqH7DC5asCKz5UdO2jJ8TH3JlwoBWPdEF5pX6klqaj+obC2XHNvugEcavUg6oX5JIUsqMaItv/sd3wOO70Hze159ybpjkqIdk7BKg6YgeHbqnozu2dVZfuOQxtCGxZjYEGocoIawsGe3kY0dFXQ5DgDT058I2OtUKxKvqLQ4nvzVndqrEUNba0u1em29CY22oe0cX2xQw5/Uw1CZlm43pyolVESacEZoYT3K/1zpjuY/Cz9t9DUo59VFwF7W0bV50HHFSvn50rIWoeXUKgGjzhYNirssCVyaOc0rxr5yDbQa49Gyu1qSTBgr3NF6qbhcKDVqlZslLVAprQCjDCO1W7GMKl1XeFE9aBwUd3iJeQuV3r5erADNWvMGrjOv1CrL2HWEy6AUIXEtUgMNzVrdXEj2Xy81NWVKU28UGzcma8u8D6CulqvrDZRPoAHZ1dRmbb5Zx0XlELuxW/Vys1QorVEf1Y/SqEC3QLICXJlQzPalge5eXy1dKTdvsK4OYUgF3IJ0lQVt0Ioyg13vUmkNV8L7y/qHPYkl69dwHQRXbJQMRAdDgbXKegOXwrli0KZAUnJhA4yUbiM6eRdu1Gu3qOgSRug89IQlLbpShr68cudiEbIUK5uJXtOCDYJQl2sFyrUWtURjkk4+Nd+zDS0027As6PdPra4177hqcS9QhEKA0cb8emNN9mste/DQQrGOZZwAPmu3Ssvys6EJE54hgpPnxufnrV0+Dx7a9vxivrhSsolOXYa8XcfMxy6uL1bKjRul5fG1shbnmshlrUGac3WSrSaWnHlssTtkdumiQXlfNqSjBRcrtaXntO4laE7NkhlOWyhQN5G3FgMBtV5aKpWh8csaCaLvNevqlFETElCmdVPdJH/D12bMgId7A+x6jxbCPFpQjdFCnN1uHhUI6uV7OLTXMmawbpzsZfcAUz/I7iEOP2LZQMHwPLmDzJUi7uf4U5zqBHxtE5McO8XuGYZ6nKGm4SsjZig0I86ye57dOcZ6C2PNM9YV+NonrnLoE+w+DeORzwUtk7ijuT7q949Cv4Er7HIeeBjmgfqdsqO5Aer9+nMH9IefYmrI3tfuxyWsKfHWNIAzOSTzNhuZPpPMdBsybxFP8kSnX+dtFFf2rYTkMQ4tdwBGK0+ZOeEHuGx0keSzLpLDNGc9OrobDWQA8rAneYFMjYJkrkHGhjtLa4zOJfUz4wY4ELmA0uH1F6+Mj5GhJy/MB6hDb415VixaMN+ksJYtxP7ZxJTdTSf0/GOv+66+FGiRL4tRxfvRpmIe77rEkpoIsu2WYCFu+tmwV8g+PtqpvuiXw1wcuhUETGh9uShdVQ9ADe3KnsAJcyYGEPFTSoxmykmuLP5cgo/ladO+gi08+70+VYH5OzYYwozSlat+zBO4OPTFk0+DvEpK32QjZIhDsK2Fp/EIotzoUMV2Hj+/6pvNoanF6WFZBLwQPZxPiQwvzwwTG9L+6XBOwLR9t8jS1uBuWhHbPSoPEQe5HHbrhiz20HLjwGyfGKG2bhElHXTbR/EIuZ8WCzFslPMfkbnAg1MRmVHwekh8Hi0U9OY1o3r00arGNjo91p9PiPvSZtzA9AAerjHSI/uQPj7yzuWPQ+Y5GOb20eGro5kumrQMMb0Y0NOXKAbocA6wRzSuvhYwDum46l8v1osUD+wHc0HkMfsBnBMNZnCSETilhDqTalYcc+nSmDhuaQIjLeTdJ05QFjSAlqF90oSQjVd/NqmupIKjJguQ/ey78ThmgAb+/0y1xZNnW4N7LZD9qKLP3U75AqFNszLSASuvebOC16FOUih3XMCzS3YBvIG6CyZI1tookgkxZqmDfbOaeJQb357ZhHjMFqfSpan+6fY12KhzdJj2AaKWlib30E52D3p7xEPSXFauJ4W2RyGoVzycjumk4K9P2u25T3IjkWysytb3CJP0rt74uR0+T9Pn/dh8/q2ifsmX2qGrK2qQ/5OUjLvUTB1r0QMuRe2haSZxRWAYMrRzwj2aSKq7kgl1NqmpsVlcJMiOncNVg90QcIFWDfaMXURF8EsKKPK9hmoxWu1Ev9oDfUHBUC592C2NTKTVLntwUhULsrxmu9mSjDZN5wBHWigpqjBWRVfothKUJ3f1OvCCWcpA0SUFmNXHrOf2kn+iaV/ze07jNRjpw4yyUV5qaL3G2Bpm5ddhzI7H2non5wpzlxZmLkxdm780f3Hqwump01rkEjiTM+gNF6bmL50Hj1xCbDOht89HaNqedcwWztRrq3JWtWystdpnsXLmqh9243kFzz2M+UlO2+ucnwCaOdmbq8sF2I0PxG13MGgjgxN8y2R+w9mNbQ662z6b8ebPfoZMTktjM0aJeR8k+5h1LRWHaj4Nrzw6Z0VBz9lRl1DZta+lKiJhmR1Z50P9PLcYgK9uY2U1ze42jt0JX728ctqLK6XpPwzA4FY3JRTLRUnnCGgVPaw7RC6aF9DKkxZdF59+QcVtycdRO0wLxtlOUAPGOBQwDYyEObGA5q9GqI3QoqKQp5JSThZsY2UbKTtzxijWQhd5e9ZFcohGzMIYMQ95ku9BpnBPdjtkbaiztFBfG0DMvgXJA2NeDEslssnMGrM8txSVdMVG9B5kt11q2R0CX8vWxs7wLMGWwy5jguCTp9xpPCS9QdMbIu9J9V1Kim+uwAg+TCu5PjXwLC7b8sKogwO5OjpAO164u7iLorLQlfWDov0jRXu71sMLRxa15aV67YpNbj3ZVGQbXYqrVYbGSp6EBq9QM/NZFkDcJ0ZD1BgVEYHfkNDS92VHRZfRuvw56GmuvotWiEmuQcheWO6o0sYnVCcf5PHvA9p/V7RIuaEv5+qZM9ZI/bX6dc1/69iS5l+urWqBC7iyGSo3Fmhtqbi8TIrKXA/WlhoNCioZq7L6Qme8uIZ6XIeUKjCAa1lW5S17hVb7TJIEJR6g5a3gErBZ1+JSueu01dO1pXXpu1GU/GiqzhkuE6/WbrKKXSSBo0hxzQl0q4Z3CAMa3iEM0h5PiPd6Ip7aVN+Z6jJWl5IMP8j6Mph+2ZfeRcc18HntUB63dvV35tVcOEs3mZT0EdqmCY3KjdsELfYPim7eUQrRr5aL8I63L91PWzM6PA6xgIw/HafJm4aHJvDzCE3rECrWIdWUwWiIprPE3C4azrTjP9sNFVCCBMfO4Pitm27OmAEfVOOvqKoxkvmbkPZTPqPGxUrWjc8h6zYoFv1MdaVUL0Ebsq3P2ndLg5XSzRI456QzVSjMFVptwnayItv5iq8Yv3BhbmF8YWbuwjW5+NumwfuL1WU+Gs97DHRe3nvUwufk/eXqTc1XA9DbtXryZkfHywOsJGAcAF8hrr8hrr8hXiMNGaOAHscoIAVfcTFkjgLS/8GXPkQVLcbVaYB2Dl+KoYqJgopJkooZxMqETz4wdPeouUrS3QZ6j3wuYpRoqu2hiGYbqEPYF22Cz+2b4PMQvZTROe0dndPGtbAFnPbQNrDcCA3AlCZIU5rgWBgDwhCgUYA6FsOZUARmQgljJqSNCTv1Xssu4BtJ7eWQ0ejMOrdrfGkJDwQsVkrnQJGiVr5Yx42u5p1zZYAptj7a0Hkz6b48fu7S1LWL44Xx81MLU4XNNsiWjSrvOFIiTt+B3qW8ZPQimnrm0oVJbJ+aerEwd3GqsPAEaIjbdNph4YmLU1psurxcapwvrS4CWVsT7NYRrj0+tYBcmwHzMmDnudqti/VyrV5u3pmpzgFjlRpvRK5TBsIXaqTAtARSnKmurTdRqTW0BKZtEUjPxUqxuVKrr54uYUeHPVj84nq9VCjBrIB2zuKF0tvXy3VdCnrnGl6F0iteL+lKUAABmK2QIKU+jLK86HxLykblsiUmUqrXa3VzA5M3s6KTcxfmFwqXJhdAp0aQ6/FzM+PzkP7cpcLklKYVgOFik1gU58YvPH5p/PGpa5enCvMoczE5d/7izLmpghESHb84Y3zI+aZYLq+wkj9fW16v1PgSFV4koh3gwCVi6BJ9DEGFghp6nY+x4A0hvfcP0nxM85dQzzaapTXnfJW08GptOfmy975Tl+dZlQDPq/SRQMAYCcR5XqWfUelxnFEZsJ1VUXhGpfDpFIUv8ih8OkXh0ymK62LPHg63n0oJiMO8D3WE3fvYzTHcUXZPsqvvU42x+zDo9k/607vJPk8KtNQxdo+zi+uYKbxj4WOgYQYaZqBhBhqWQCMEtJOBdjLQTgbaOY03LnFwIuEyDJdhuAzDZQy4/bRFgpycYvdBdh8izmg5ZhemLCGHGXKYIYcZctgCeYogdzLkTobcadKkaYsPD3zEQMOqoGFRmT6C/EjcDONmGDdjptIGdxsZG3BJWQpORrqkS5GW7ZJJ9V2WLiIJ3UNCDRkdQGhM9egmrIx04/DsCBLRzH5mI/iHED6qw6ch0QFINGkkmmS310UMsY8jdqw1y/2eWJRmfKtpnkPshI49CtgjgJ11Y7ObYneoNS/dbyr/YrP5J6ye1lg7WmMlW2MlPbAUidW7ubSU7BcVROsjtFxSzjD66d2ArOFDQ93yLQE8ujRIPtyKShVChksw4BJWgekU5GEnGB7lgZ0jwM6owc6BFoU4yu5BJ7uHsEUOeVRsWkVAS9uD0rvN9G4n71FcWxg0NpN28NrCEfi7D/5ybprWec77w9p3mfMcPMakTRQbpbn1JgwD5GJBcKWy3tDP8gTXoEdvmj16mL4rVS0xsU4d5DKjhhbp2xgDuM+9pO0YCzUYJcGgpHSudl2L4VR+tsG0YjVygVKpuIrjleYNJJmUXB/h8RRNwpNexGwHs0KSmD6m85zZbDiJ0Q+IWqfdCB3T8MCH3uV227reLtfxUOtkJoGTmfRNULJRnBLnVTFIS13+6W+h85lYcOleOjqN1zLDMhIDIzR7D8h41RWf3Unjet9Y12NdV9+V0JeaZHUY4JPmM2pGV9mzKi17yWPejuTIjIRqxDoSw7cHurJTag8tgPk2IIWP0aClitDVFx1M0f7KKVWhrfPgRmTsuNRmrgKuRizgdltPWsv0jsqVp+hsGihYvm0MOWDtlHEZN3tBVaifwMx58NJeOnZ6fUgvqj4jexDQVvos6Heuah/fYTZJaDdhrsyyPfqXy3V9f6KmBWlIrC9nBcrVlZrmr0CtD9wq1qta4DQe0bIeY7y0MGnceg/cwfUpOZRehTnKDSCOVG7U1qHl4ulAvCLfKC3VYLQaXS1XYJwqP0IX1nEyovmrtVugFIr1RknTliEtxwHC+LnaUrFSmqOjVQ0Y9taLWhznEMXm+WJzCRcYQpja0by5rBevEI4erzbLq6W31qolLab7SIuEb5VKzyG7MQtjICwYe1OmQ+S5o0XBPbNeqTyBeVXhYxrSa2jd4DtvRdQoALPcILDzJBAMnbeQXgAWtB72PA+8zK2sNEryoBuIVopb99/REtJrpB+V35KFpPywcRHXwyQjDC954TidnVizdtqUeLRZm5mf08XfrM3O4+RlFk0KJJs1WQwW8LAUMmSqxmWT0KEYwsDCnOrnQZs1yxckiezIjwAlqCzw2me4XrpJu1Eb2TOgQ7qsjCMNolVeuYPbWXToFKp2Yw0Pn4Zn9bXS2QZNweyrbaHy6houRm3lXsOmT0+a03Rz6h44A3NIo4uzTUk3nqRHAa1W5WzBx1vWob9aKWMDw2Rja7zcQbT9WN8C5/E0qu/ijKbps+nSstkvb7vUKGW4f4S2duPIxZlMuQrzzeLyEVxjJtnSGd1owfIRllKEymDH1bSSeSmj5SyeVzX9xcWGtt3JAASaHHQ7YqDYFhv7qRIc0ALFpVpD2+EiAKEmBeGM0qL4q9MI4scNx9w6UGyARnUThtBWhBEhir8mYfiA0VCxWfQiBaGtSCFCFH9NUvCR15Q7mnJbG/YilTdp9bjiJLH8/juHMreZGPC1VCpX3HxhaAu+CCGKvzpffpSmq/xs0u92xOCGk1l+JHo/1Bg3FQhsQQXBsZYZ0gH/6lEcfdagf3OJh4JbiEeixMgxyN24s1ZruttFxVJeCXuEFqmYZQVd6tGcdNa0ADh5zb9avK2FbkrLNFHZpcpueA+mQkZoMsCklSoE6unpNmc0ciSiCl2x9Pmh92U6aIXGRcesspp/DfrgwCIM293yhqgW8kakBPzsR8RDGZD2AS1UL1ZxJ43qT4H8R6qgzWXejAT7mI6EPiIBtV1eoRb0/Qe08JXxwoWZC49rwXptHUYRrlKl4BalKlFi5BhVrVG+DmMabKWurNtadbcjRtMsbTogm3Tj7dB/uJoOhrZoOoQQxV+j6WAjd3FiUwrdjhhNs6iEADXiYLMOfab2ANJp1tYOk77NrHA/2sis1Gur1gQy0EE+B1rfTCR8EUBgTAG6uFLRlHmcp8mAQJ2uPdZLz9LdO30upZSsNyCg85b3VNTS7dLSusOmU3AJR2aahl0pUoF+Rxo8iuKOaGUFhjMQZE6sNlyBDhVK16eg+YfXik3EwUZfvA7zxeuV2iLOzKCQa/XSJNbwCIwBmjPV5dJtLbKKB1JwzqYFkE/sypAODRyhUjTREFOp0bTcawmWCRMcmqNWStXr2OtVyov1Yv0ODHmL9edwSFqFXg2y79oT2IlF8gxUacrZM5nV2jJ100bTiEnMx0uYEe0EgpdpWpkp6cv9RkFmbkGXm1msLd/JrEMNvJ5ZlhNZnQhe+3yupH/NS5J4FYjmAj3LpRW8tjTFzFSA/WqNrrpILl3xzxhcRqAJyVgs6hW0xaWFzvJu+bM8zjqJVJbQm6nIXZYMNGlLPvRBSeaZZxvPWLQo1KjGqVOEeQRmLz04LbBPA+TGeot99EAJGoPn5D6AgxBAhnLXYvg7BX807oEuZxkGTguWZNVnG4g0t4Ir9dYtk8CzOCaGOUsZhuCBi+BoGk1gpDpWGqCdisvl29qgbH+69jJzGGscMYM1lZBxDtUnEcBrhY4gNIVpQyYAJWGBSuhQMgIa7vKyvgUbLjZkpxApNlge0LywSLBlRpdqFSxBkqw6owe7t5nkRoWyCDM57Jr2Fw9lFg/gtK5qfASh4eNkZr3awAs/aNnM2B7qMQOZdPLFQEfrJPphL912WMh2Bca6vatfetnOcDtsmwyKeIjd0xw+ze4Mh190XEgp8ArLgoZWxC5RaL+4zO5Vdt/KWNfYXWJ3md0bTO1ZdqvsNtj9JnDD4H5SYc+ndc+P656fkB5FfFkhpBESAcZ8RQf5Pd3zv6EnCJ4/VOD7oPgjHfePdc9/0j3/Wff8je75W93zX3XP13XP/6XT/Seke0K808cJvig9B8X79ZDv9jHoj/jg+5T4mA7xcR3iNT3k0+BJ/3AsvU+824e7zfmU+FYfn+CIyWO8uVFcwbp/+kVVmvp4yZeOZl728TrL/nxYvAdRo9MvZu6qWvqY+Db8jEA4veCJnveQR+6Q3Id2L9PJiDpLBhPf67urRtPDQnESfZ9JVE1fFe/y8cGvqVySDhFPjeIZ4Jcyr6hj6jCQe47IveBL7lBXk0NqdKJf3ZkMqbWkT41B9Nsp+tt9SZib0qptZqyJeyY7xHdQQvmI+E4fr/XIO9Vjd9VY+kHxXRidyN8nXvGlU8k+VUnScyLGGTV/7oFcMOsKwy2XJ8UHfHQqJiy+hxNRfeJVEo+L8+9tz/kHHZxH0m8R36cLWlJ3kfxQe5IfdpF80kmyHcMfaU/9+13UB8VHSZajKM+w+AH6kFtTP+izPDkczQUB5AhVuHB6l/ghe4UbdRRSHPBLVHJRRAPKfyWr24sa4h8RP+xL9yTjSSuN3IOj1s/pl3xI7CEk9pT4UUR/GGjtAFrfiVw+DJ5PkAdPS1qF8CmlrRB+1CGEIJD/zCbIf7Y9+R9zkU+ITyIhtGJ8GHN/Fi07R5LBpH/63yi5ETp5OZUNgj75N8qo+frbVG4kN5JPqar4PxUQFgUxEkholIoilC7dE2IU879zTO6AO5lHxad86fD0FBbJIzIRR2lR0T9kVyQ/7jPqw24PAs5Kk02Iv8eC8F198d0KLuYmpNXf/fJbzZ4V/0jfY6GrL71bsRfLf1escm9bRP+g4Hu0Ak0AB+hdRyKvZfcKxUuhjephJ/Fcmz/7dAvFNwrffLR1E+rvW5zqD9joMsif9GAjSWzgJsNrivonQm4zzAq5pJ8P0SI6bixk6EBeID8AIWZL9oNm1LceMmRNqj2EtiFEtD0EFuSP+/CCFl2wo9sqA3w0MSQE6baQSKI7O+wdDm4vxY+0j+eDkZHZI53B5eUdv8jsyc3B88muyOwjW8MDF+8SarN85HI2QectkQ6edotmP4f3wWj7vBAFUqRIr76Gl4mGrR87rR991o8MfcTlR9Ya02/9SFo/Bqwfu60fe6wfe60fwvjIvhxUXxSpUIZ2X0754jv40Sy8NqSxn3I3kSQ/SSzJEptIu8OSLMWJbOu4JEt4YnRjGL7RGZnIdw7Ltz8jE6c2j5PkUp7ompUb3xFw97N7gN1Rdg+ye4jdw+weYfc+qichkePvo+zm2T3G7nF2T7B7kt372R1jF0+0RGfliRZ08URLAhrzwzTESMAQ4xG+CxHFdzbgG4+qxGZTDBGia2tRS0yGHi9rj/tYS9zxDXHHW+CGxATnYRJdPKXwj3719SQf3kB104fNa3pKdjtA4gwhXPQKzZ8Sj6dPoh0yuV3ZAyptlrYXzyb7k72o0uzB54zxpQAdfF4yB7qQwmavOkPyjwDjF9JjW0kB/tBw4hwV4T8X5ejsORflU0B3qzIZdlGLATWjiEGlt4038tsZHB5qz+7CXjE5avScpEcjYhbj6UkGf/ZJPHWLp1/6JlRop/MYVWAXT5IMQKd8jjrlwbEreJgolRxRnzAOEw2NvY3dJ9l9it2n8ZpqBamnDeqzTH22BfVTQP0kUM+7qD/lSOUZdovsLmJq5zC1bZRa15vn/TRS227wfo55P9eC9yRQTwB1zaBOVB7BIqCzWLO9PBPAS6L4klMU7wBvw4dWaLSywqV6jid6+GiXL/trQv1SUl5xpRY8J9a5g0RGVByTPwRjLBXGWFjhbkLuVpPDMMRKwxArBkMsFfjBmFvgezvB3LaOs4DgnXYEn29J8B0GwW+wEeyn1yFNgvLo4WxBfLMznUctg8N3Ksk9kFAGEtoOCcUhoQgkhFHvUowx4gu2sS2Mnr5F8UprXrxbaZfYt7ZO7EUzsZfsiT0lXpZEeclA1RcRXOTf25r8+0zy3+7My3e0yMt3KjxUwnDNmdj7Wyf2XWZir9gTmxff3VZAH2hN9HtMoq86c/C9LXLwwbaJfV/rxD5kJvZhZ2IfaZHY97cV10dbJ/YDZmI/aE8sI37IXuJGHTBrt9Yuiz/cOtUfMVP9mDOLH/fM4oB4rUX4JzzD83LRQM1H5SOu2SxzOGRfK7CmzTi7dZw9gLO7M5yIjrM3iwsdG+F8ZmPePuuJ0543b5z2vH3W2eA/pxf253XPBz0b/E+2Lt6fMov3p+3kz4mfMYg9ZiH2L1oTu2sS+1klGQViYSL2cwrU+59vW+9/oTXVXzSp/pKzBn7BWqM0s5F9sW2L/uXWif2Kmdi/dCb2qy1a9K+1Tez11ol9yUzs150K8F+1JfobrYn+a5Po/+LMwW+2aJi/5SXGwqwoYzAu4gTsvW6lZa+7ZvS6ZWvaeDDb5P637ZXjrhpEUxkv+lP7jHHECfE7ilx5BDBFLpoFcyO8YJYfwNcCIRqizDU1GKQeFv/Otsq2AfgAvvknh6b7cyPQfv5XFMSB2Z3i973IqBiPQbN7vQESCGAJ/iGf+qpIjWTio7hZMkVvG/tPKfGJ+eRb8FHYc8lMclgaoDD3C+IwQNcX5n5f0SFyB7whflfhcAGZ/wMvpvpwwbDbtmCYG50emD3uWJE0ZKWvPAJTlvVFugx3CNTCZrAg3Hu1UlK7q4ay34CrEYep4AeSYfn4WxTqhw8fu6NFi9mk+DPpxQVqeoUtClO4v9BfvOOQiPhL8kwPFML8HF6B36KLFzT5sF3k6osJCKTX6uJ31XA2h+PfIzTx0HjtG1/p1MRfKzwLAf8bejhiTOHB+vto3K3RkXnHrCELA+1hGGinW08ScOC9G8nk9MmAe3T+NgR6QcFB/tHWiU0C3qOA92AHM5IwuX+nOKcm9k7mvyj2Zc6AtACbb83pU1ghTQL/TTGQjm0F6fjmkF5Rt3s8+GYaZnlPVPuiaZiFzH2oszdXz5RLleV7YVTyzMzUudOaOL/eaE6U9PvtpWWtV+74Fyt4F3qJ6bptifDhSYcFEv0MsXnGcuODlDEgoZ8waTguBkIUGvTEzXPj/GYfBq6v0dnGK+XK8lKxDnhqg4PMQ8l88pPvYyLWnWrzRgmpReFLx9XUeTLaubKmxQBi6Ua9VpWWZDu8TcpXFiML9WK1USYrAZdrFYCqlJJ32z3dtdGNwC6H9WrFsQmvsKUVhZ/wMq1XDzluAu7wvBEY4BuBAcNOtX4jcG+qK00bAIfVl7Ib3AzzkfUHFQ1BSPBIa/CYHfwJBJdXxlS+6xMFtSVNOb347oDXJSvBbo/jvo6D9AkkbdwPc9+u0sn02dGmEM24INY69QEnF3Yyb0My8qaYVH9oBKEbskZuq6ylWySyzU78MSQuNubRKSHVXkxtroE5EjyP4Mb9L/fVKUOWLRJO28md1pfGiFwWyA0DuXRr/nFVqA/Y20XavX9s9129Zg50XDOPY6KDG1xxdCai3+/4y6z2c360xqyrY/02Rpsb5HjOO15cpBNz8q3DViYZ5CEmutLBF5PlEcn1ypo8mK3c1pQqn7HmU9LyXLTtZLN5Ntl2sJiOBlvO99oP6fIZW18F6FeqR9f4IgqdTOUDtJaTs/ICNZ1z5eOgdI7TehiTjlPKM5EqnYkkY8vySOmtqhZF30LtFulsX7OmhTDg0po8EasR0QU8VKVF2U8SUfHc3TxKJYCnJ2V36NEpObsjPHF/tpm8bDPKYlW/aMrC71C3dpMsCHWKfh+EsAifZ4rQJedfGE7vF93QpBXeoFPYhIQPGn2AZhNkRj2Ah2gkZJAhg20gswSJ9lLQlH5IGmuyAJowYYYJe8Lsp22kznhLdsjbftqS6oxmb8c0+zqm2dcxzf6OafZ3THOgY5oDHdLM0RYe0kx1SFtiBBmjM76HOuZ7qGOa6Y5ppjumua1jmts6prm9Y5rbO6a5o2OaOzqmOdwxzeGOae7smObOjutrxkpTr7cbYhi09XrblptdHfO9q2NZZDumme2Q5ijdMrfKYg/R9tLFOYK1SmHPhhzv7ZjjvR1LYaRjmiMd14h9THM/uwc2rBH7mPZ+dg90lEaIMUKMEWqDcZAwwowRZoywG0OSH910FkY3nYXRTWdhtPMsZOmAh1my3uOBgx3Xk3jH9STeMc1DHdM81DHNwx3TPNwxzSMd0zzSMc37OqZ5X8c0cx3TzHVM82jHNI92SHOYjhCh2T7vWjlCR4soPi+PF3nDDdORo9Z0DtFRJJ3ORvzboXs2aIoSOjjaWY7t0BvRHqajU6GW+dpjxLeXMh68Crehose3ozJCx7Z0qcRblsUhF1x76T1gkUd8Q+k5odvQzh6UViJxr2fBAfMhNaqGdpWv9L1X+0LwMVwEOEhHV9sApw6fXviHXREC3meYm1TMZye8WJCAxHAngGRhsxNALKzwRoDxTnmMd8bjLtNqqGFF1174FpBwa5CEwZc3yAdVVdrK9alaUloXfIQiH9W6kj/l135HMRdb+GqftlSrLq3X67jC2j1/o1gvLc+srq5LI3FvfkXcXGHepBlBzxXz6MINfD2MLtHxSjQtQ7Syvi2tbJJ9V/gKspXYIF/DCvLSRNCwEittbvtwJRhXan3ZB3A9zE9vntACVygpzRXJBa7wWAQXuFQIiNICV2QsjmWuyUfhADWqo6YBdQBQkyYqu6IliVfI/O+XI9rrpmUijS8b4juRkdP89FRDGkQJV/l9y54CCOkKvlimm4ckC+61xUapfpMKNsavU/ESWq06eaNYvV4yb7ceMy9ERs4aVDwNV6j6/UegU1lmitXSLemTBlrUm6VmTV6p1TcSNH6N83KxbtggghojscJ4d7JQWtHUhh6UnDPYN/iJFleAF+Y9tlhawdux8kugDHAp0BRBIXmj7TU9xbimp3GtidLlO+d7VUl2+xz7BGlzX0Cu83/Mp76um4DDbexhEUgL/ZAlXQsI5QJ0VQDbvX/2Nmgodzwywq/ETofyb8GNjPTZ5GCyn55zMGyOs90feos3ZA8UXoFyGzYCvcaLKqTc+/90yhqljC3lG1RfKjpqiCHvYmSia3Ynrs+MdeVVmOfKY4ma6OYXLcL4fsU+WmSJeAPk6Wz3WBcA6ifmx7quvpDA1H9DUUdSsVGZV3fSuIVC7/POSpu2EQddwW/39hD9PoDCBQ9tA6h7l52I9FJmlOwpdSUljxcMZ7pG6elWecxgdgelyEsLkLI1PXl48xo+ZmPgoioNdYA5u5c59YhmPhWZwCtqiHdhvzyg/WPQ7InY2EKI7SeET5dWivhmnsVak6dtF7IKwcCZJR02U1vEy/imdYlWVlpC0zOnT09d0OLLkgQnT8vqE2XozeTbkIvl5mRtHdfOKYK1l6HGIhR6B5VwBB15QTlYlPeU0UKBvKQfxlvN6JFPTGqmPQhj3yMIqZQrWgCRJF25icF7GWEMIZbQI/c06JeUf7uHQK7W6ldqtzh/wUaptHxUOnnaBQHV+Lym3NKUm1qouLyMFlnVmQuXr+Wv5U/qvhPHgPESvuW4iDsIjSm0tnWeC0LfoBZLN0pLzxVQ/04QFGv/PgpHw7D2OMyMzYj4pSpu0sB4guzu9ks0zKMVj23L9nOx6cZ4OXvdyyRMfNkEOisoxcCNMmQjCOOU/P2aulJsgOiu5/UuJ1in3iJEToPsjhRkT2gkK8vqkixj7ZJZyFQOlInIJROPAolDzWRdizeLz5UurUFWsWolv+y9g62PW3yupwQijj5IOPoi+4XxLt6L7nJYp9X3ok1rs8fYPZGyW58d4x7wMQ0vho/zBfEJjj3N32fYnYYe7+vhdFbgjUlfXt574e2TBOj9LOn93Wiazw4T84TZRlNrvNqAi9zxvLxvFZ/ukpE48+3hSI0jNa/IMEeGvSJjHBmTkbtpkqxHJjkyaViJ7cUrzrtp1qgD9TFQnx0oSlMtH5LFC7mnmMsHmaGHdIZ86V66lYOBj5iBI7S6jdMUFBJelhnwFNIIrVjHLHCDnnBH6IJNiuEGZMHwax8WUIN9OzzuNqXawk+44emaTx9lDX39G6Y5IqZQ2EhjA94MOKOA2sGftMHbC7bzdFC2Qxvw/zjWgw74N+CMutOefyu8vc51ng7yn24LPyhm9KlxXp4YkU0mG6MFPu3qCwEcIcRoaY6/LJaOf4vuifrJHiSOc4WIpa2k0B4kbqyq4BO0dGPctYSQjD0kH+KqE+KKY8UZMOjRHT2KG7SpgYHZlBGSdsSo8iYj+XYYtHfYNAXi6yFpR4wqmxxhDdtUCGLpIXblMlAYkVd8+eBsip55CVEB4ExSTcqjEhqM5PBKrg+kC8O4L/noIZ0W8mxDJvtTPnymMyOfxPQF0JKpE3+kbXnscZSHV2P+/3iZuNUk3t3toruHvomkis+I4u5POCkvwoYn8mpXUl4HxbD97B5gd5Tdg+ziSnvYsxlwFqGwCQafGoxINOkdNb37TO9+03uAvXSQxrRf/JsXtb+L2obUOJzphslw3WKA3/WOezeONScrtUZpmcc6hDlPtvkDiK2pFDJlmOmnUbGHrR0awUqj/jEYQs5UlyrrDVxhCq6U6w2ghgarjIfbzfOE0rSP+SJ7uNyg95wsln1iyIhh0Mf9OvugI5sGaIxeLNefHAhDGhfoVaIqPYyEv5TFCP7K/Aenzl9ceEKLWmVivkrPg8YeGSuH7RImJYNopA4sXayV9QGhPrqPX7NJJXRNykpUgOeFG8XqXH1KioYfVFjQNCosKdmWw/ujUMgGmEwxASVkLfQofBsiGbBHGuHm7MIYynbj8NVKSE43Yvhr4A06gMxiMmYplqF09yUHb3ISELtkZZEmLW3mBYOXWuTBc0AuLjmzwROI+CVbRlJOOCOmxZC+l6Yn89AmZhoXa40yLafKCY9WNkN0C8HxpRq+NzjePFfChhBbLVfLq+urvEomXxri+Z58TiimI5yvEXzxtgmvyriZqj6BUQpauKQ/rOV5Is5zCn1n4Ua5kXlGr+DPZHCtjObImdXybbTFhrSul+pk8myFa3dmDat3pli/TuebGxloWJni6mL5+nptvZFplFaLMJNdahAS0L9eQ6RmLbNYyshnvZaPeL612LMIYiDpTupNrnfZbGVGYJI4sYcJvcUZIT0VvaxMxAaK1h4WWq7dqi7U6OBckKZ3WuiSLALX0gQJG2ADzRtQUGq9hC0RBNrTrCEivVUzV6dFWEFmzKwhPU06d2cNSoIuw5SsYbwM4HEQTyXG8RnKyCXdm/x7f9uppPkqnf7gpHVxM2wsbsqJZNh12Flf1JQTyrixVGqfUNLhZsLTnz05zO4Rjj/Kbp7cAaYT5gmoIo6zKyegaSMd+QzKdiM3Y4z3AMefSlktou0y8B4md7eB9wjjPcrf4ww3kbJaUjtg4E+Re9DAP8P4j3P8NLuz5OYMuHPsXmDXaoEN3XmW/lvh637xNg59kkOvwdcp8UzKbmftOY6twNcjYpVCT4mbMOn+5f0wwzwLQ4I8jDLO84AMrcMcm6Y3Wfbi9frpQ9kEYB9iUzSHcr2j8AuAFzEObRv10y384zD+Py6Dc8fNYJwGJTk4aQafgOATHHzCDNafusPgkBk8PCpfSsHgYTP4JASf5OCTGLxXLLRh+JLJ8IKF4UsmwwsWhi+ZDC9YGL5kMrxgYfiSyfCCheFLJsMLFoYv6QwfFZdbMqxCvvCtZvRdkj5EeagNSkxcSeshPXI+j69e3kcD1RxiH+wQuxuBdyCwvWCt8pLRtgK2yk1G2wraKj8ZbStwqxy3WaINxnIhK2O2WmEV9jZLtIk7bMW1VR1riRToqFmE9lUO4fvY2RS006uGqFTD1w1Cuwpl84Qsm+mXNLu8H2MTVzihJpqjuBrF8Ljd3gIei1jCS76P06tyeFQtSfbRYuoDgPMU4TyNnw/CZ5E+F9thn+gI+3AL7BBjdwg+vDnwk97g9qwkDfDjG2VlyZ1Y0iUIB3irxEIdJdYKe/hNYZ/cAvaJzsW07BbTCVdtc4C3SmxDMbXF3lBMbbE3FJNHRkMuMZngJXdioc5bYVvsDVthqR2r7mbVFtzdrDzAh9sIYsWdleHOBdEWe0NBrLRj1a2O2oK7BeEBfrKNIK67s3Kyc0G0xd5QENfbseoWRFtwdwW6Lo1z6j1U2uihQm16KBN+lwE/3Ab+pAF/wIDfC/C8quxA2cd4qgUvZ+Ad7gAvJW4A3gCPXMpUpC/ilWuPmJAtZrslZrglzklbjI8PxmFM0IUTaslBqCUHoZYchDw52M5DIXc61hh3OsOe6VhjTro4ONkyPydbpnOyZX5OOtK5j2J2Q8xDHPPQ9EuBFuWNRW0i7GWEvZ0gHETLrIxwuNMUHmaEh9sj7BGVtDzZF+djkl5tYsSEArLof9Q5ZH8M4SQ1HAmnN6RGUB1Qw7Hxrg2pEVRbaocobi+2a6C2Uas8YkKbVNvIUVI/jK2/Y+oE3RH1I6JqTndaTBlrOFmaftGHo/jDOjyMz3p40lOzaH/bTMufzhvgJwj8BIOfcKnJHGchko6LNVYnPpSu/MRWMmB+YnPajp+76ROr5W5X2RiZlEBY2Q+2BkrRpN/HG34RWwuO6Bx4xhAzHKO37UP0RXwZOPK4qXcZR3QGDTqtoXvE26kPwDlpEhcpwragE+6gkDto2B10Ug+qy67PSt4MOuEOMmg1ZB9oRTSDDMQmBZ20QplBHlAhdxCnmCLjeGnPHs4ZE7LF7PLs4Zw4J20xcc8eTsdx93DOGDcH7h7OiXPShePu4Zwx7nTcPZwz5qSLA3cP54xxp+Pu4Zw4Zg+HMQc208PpCB33cIiQ20wPp6fQWQ9n2b0/rG/eB/iQajAt1Qge68cqo7JLiiD7sqIO0P6yVI3BnHpK8U+kaX+UjsMn5X4nuoQx28tbxSrbRA7gAUeV9pRDtClK9nfBR2cZc5qMxvuMaL0nJG94F/iGSIGp4p7tktpF1ii0iVSSwZIMZiQeofOYEUmT7njS7ituOoeuvhAocLzcXN0hQxNmIkq2H8WT0MUDMXjxMp79NiUVp012nyGIbhSEcIphtkeOgHn4HkROOpaIKYaopDZ2+eqrAfiIGx94MOMnFRXfLTb6NoOLJHORdHCR3BQXKWn3OC83urHXPEg0rPzJ/eqkFOl+3Su5Tlq5TjLX/ux19XqqZ9TRbeeNDt3OMp12bcUTna09SEAj7o48e0FdSXW7EoISbZsE5CNBR2tfwyzF2YuWiepqMtXfmnFd+mNdUvpjXRuL2hSjTPNVM00pLGqlg45WOsCtlA9pk2tppQNGKw05W2mIK0Zoq6005dVKQ9xKQ85WOgSMp4xWGuJWGvJupSdkkptvpdscrTSNrTRNrXTAEIStlRpicLSP0JtqpSFrfQ8ZrZSKcIejCLdzEQ5zEQ7rYyhZhNuNIhx2FuEw8z7MUhzebBHu9CrCYS7CYZbusF6EGWB8p1GEw1yEZuK2InyQ+lG9CIc9i3DYLMJhowizjiLchUW4i4pwuyEIWxEaYnAU4fCbKsJhaxEOG0V4P/K4xyjCXVSEu7kI93IR7tVbIXS/3M9mP6Oog6ndRmHulYW5wyjMvZyLvUkTd7PlOWIvzwgV1F4gBF6he12seQ8Qgtn3K6o/tR+yOjKxjQt9Lxe6jUlLuUfpKOje6QFMKEZFvxeKXnJglH6MSh8iEhIsYoJtwBLVkFFHDTmQ/RlFDacOUB3ZbciX6kivU7rIcJ+tmuwFxjcla1PACUmTKgdmJSHT0r83zg/VpkOO2nSQa9Nhrk2HdYXgrE0Hjdp02FmbDnN+DydN3M3WpiNetemwWZsOm7VpeKOshmRtQjuJR4zadJhrk41JW23CQ6mHrbXpcKvadNhWmw53UJtCsjYdddSmnKxNOapNBw352mqTIV13bTr8ZmvTYUdtOtxpbQq9os7yaUC8/vlY0rpCfKtNjDvsttaV/OkR7QOacZ7QuAvYc5bvbJaW9VN18vaJeTm0YT8cGDhXbjRtF0kjZyeLlQqdalMKeFRqfLHRrBfxFU79UGCb027hcuMMHurTQuXG3FoJyJUb8+uNNby1QgfH7DYT8UVDeWOxoWlnjeuLmlYvNdfr8qHF4FlyEk34vWiCJyjYgnKz3CgvlitlvHh49rL5EVjCx0UDxfr1hv7+fAiDJu5o/vPFNeNFSWVB6z97urRUKcojVnwCCUhHJYR86TqGL1s26+tLzRoyPWkIEySnX8/UouWGeZQTRHG62CyibGaqSE8FmZSKFXnSC0+fNbR4tdSAUqN0SpA5eUtqBlIqgqi1+Nv5pe1lOo4lGoQ+v764xAhao7y6VpEvzmuNdbpSiYfx9AOdrnOcdE5UQ444Cf2Sp5EHiNQf5ZSsr5RvI+vy0BpGz63pjziePS+vJBu3OUP8Dqjldqo6vrRUajQAXJ7CCzUkSI8TOWd9xVU7awbTi+Iu8KPWt9tN8KN4/mupRI+7u3DymnIabdtZLtSamHktomMeNb15LXC2LO9ezS+MX5ic0pJTVxemLszPzF24VpianJq5PFXQgvQUqxaYqq6v6s+4kqTkbWmU32WoX/XrWuA5pBbAYrLc0Q3xk6yh6/yOKlakaoOK6hy0a3qR1OA6J99dj8KPftlYixjn/rRu2UTqtWe5hmpLZj0W5cZ5fEZ2GU+1UXOP4J1eqmRadJ3uQskbXerNYr1MdSRy9rLhNet3AORRwAOUVdATEhZ4XKoZ3nJV92p4D7BWBe6OWvx5tNW3dsdydDgyc+HyeGFm/MKC5pu5oPnnLi1ooYuXJs7NTGqRi4W5hanJhanTWBYLU4UL4+e08MXCzOXxhankH3qftzOt3+FV8wBfNddP3Sl85dxuBc96iXiA3ZTj3J39QlfAOHfnYVyU4vfx937Gu59d/ZycPP+WEo/x9zift9Ovdk3azr/tYDj9/JtinH+b4fN2evwsh59l9zy5e414+4ukUbHA5+0usXuZ3SsMf5X5km+RZtjt4jdJ9/D3fuOt0uvsytNxx/ht0uPiFru32b1DbkI8z+472P0Gdr9Rv7y9XV2RV7cL3SJgHF4K0hJAV/bTPogOj9LVPLph65vN4EhkrCs/IIZtT6p1G4+uDeMQAyD6AML5zKWYHimk5bsMYyNXP0Hr5xGgEqcuOQFx3W3iRJu4nhZxSRhG4Q0PDRc4umFEYrzKI1c88MZGDL0ZMcRx8VzQM5HtMDrDbCS8YnFu970BEFcP3fHePSrf9knS2pkv1wuDJbx6p+Zx5q+/JgMDIzT3MgBS20VGVjD6AY7e50y/X4ykjVcTx7py/bk+ZLy9PA+0iRvdYjkc3GIZHWoZ1ysOY21K8pVqmbFeccQS2CMDo+I+vthOHzkSFhUumhUSyRgICFoICajHsyCTgJY30TLiGJd7rEW5v+ma4cum1evSbK0rzp/NQKUhC7meUsCVuM/gi3v9RjOUS3ARvKrEvkEQ7oNtBP9Qm7iH28Q9soUGl8A53zAwPES36yMGk9t4nrE91589CPEpskZgxqdPKY9BCz2d1uv3EGU/lN0DwMMOYkP5hPQxyZ3ZxwFqh4NkxvClgPisENO8FvWAXEW1JTfMyeWAUBYI+aARB9DCqyXRPvLttiW9O1sEjF2U9G5mM2GFy+2xs5Ey2DjHi7oPkP2AEWjhp9MJ822EMSWXZaYegiRGiJ0L8BsQc/AbtLGWJt8F+p2zMbgv+w7A3ksMXiAG5yh7Ec6ODSe3385sxmC2wMzOs50EZNoHTG8DpvusTNOvLzfCrEfU1xVazzggvQdN7yHy7lRfVFIHuHYcyB3GieqzPvUS/F2GvyvZJWAfbcz4TikLoLKfQJUptfdbsRJKJfi2lnU1Ip7EFRSpMHrNlh8RT7HyxzcOdkEi20axc5VdHfaIT3PlUHJpgKKWesQAcdRr8PVnVwAi7W6op3wT14DcM0ZdOyJ5LrZpX4ut21eIOLnPxckRw5fLPgkQGRcnaRPilHINup9l2RBmh/SH0NzdjpXv+7hMDwH1o9xGyAqyjQt77d+Z/SaA3sPtw8lz2gmNfAniS9FbCHWP5kNtMsyje3zG0XiOMrdjkH7e1njQHJKdZ6+msDv7g6h599taDl46sWfAExWzkaJs+JxtB7JzwJIde5wrW9sgW17NK8+Zu8yvsfqgn1rhfupYy37qBiXb26KdlLk54XvG56DLQmv2vRD+rN7MbGOp58x+U8bhWZbj4HVV2Eh2CpehThg2ghJ03OMY5JqaIHy/3fFdt34X5JGUY9nPK+pLaupYppqnR2WqE31JFZKl4xHge4p8sdkon2k4Pv26Hz7koYQYfuyiHeRjeQ1KkfHI/5QOongM1L7in43wQO0rCnhvogzAWzBSLBhcuPKuSlV3Ejg+Lr33m94x8h5VX1JSx/P6YXNdAd6Cv9vwd8dFU5PYDwB2QnpPmd4HTe9D5D2B5BNMPmGQfx7+3gF/3wB/3+hKIvqKmmr5wMhHBrVfVd3rZr5nG9ZreXK5Z2Z1rYKLQrSCpi8ShZ7Vja43pGczS2sdLR15r7i1WE+Sa23GwpK+6OaxwGRZ1tvcWpNhPcZjzclcZ3qzi3Tt16nMhYGeCwAAHksRhTnIvgbmXtkSF+vlVbr0qedcLVbvyFLsNeIshEOzDcvlR41sBklwXkbsWZTFM27GxCYsQVqMAWRcYlG3TSO/LQaJIhjFb8zQFcfE0o1i3Qo7qX9rQl65tERGT5shWlRGc3Xl283ddCPTgqKdMQI0jSI5Z/KOaxwagwUaLx2zUR2I4Nzg9U0rh+f0by1WlSXC3FXphi0zxNdtu+mmp5WheSMAChL9zJC86hltUPlz0s0b9dqtopHLyIL+rcVXuB0xdrGOtav7OpRsdd6sHkmzehgNz7LoKCSopS502+iWGsnf8LkMG+Kowq/hqEK/0xniVY8wrz356I5ixHLDM+IwXxcxnrmxmxDSV5y6jOds9JWm3Y4bngfI9YuD/H2Iv3Ps5m03O+0mhdB9kN2H2bXfyNRXoLp4BaqLV5y6eMXJvGE557hhOc/uZXbfxvw8mepK78ymoUOSc2A6rIN7MjB0RUsmygdhqvmyX82kArRAIY2kykFMMBeaSCRjQjXGeSr0gmgSAnoNsY/vgdHeDp556aMdHVw8ENMDhR6hGWsqmtxPHhQJ20JFPBfTN5px1pjQP3qtH33Wj37rx4D1Y9D6kTI/uq3cX31/AIaDQ5bJdLfOQj9M1c3gkB4cF9vlsoL+uYNyLeTnkNjpWFoI6XntERnOfo8ZlDUO4Go6vT088JJ77F3ZqvpFX6qfO+UB3hvdQOhJskyD0fdxNIqf8w1E1LGLmHNB5mzE1VdPf0jF3vwQpvcXQfWX5Ss2QUpqr3HfMEhPHV+lNOjo7RCMA47TOOAKjCmPGmApNu5ihTha2APDJFOgaU+oE0DnfqazzRPifoB4IK0PUbwgHgCIU2l9CcEL4hRAPMQQOzwhHgKIR4xrll4QjxTwqXgJsdMT4jGAmGCIjCfEBEDwskJulyfEaYA4wxBZT4gzBZx4S4jdnhDTADHLEH2eELMAcZYh9nhCnIV5Jt6n7veIOw/Y+hvmez2xLwDERYYY8YS4CBAFhtjnCVEAiAWGEJ4QCwBxyXiw0gvikv0zh0uxH0dDNykPTReYOGTXdMkQLSiIZJ94q2EdNMgV8YB3k/RqiHJdQuAhoEEvShgRh5ZpqhVslueAzVFPNp0K2SvNqE5PUtPfnPr0C4r2+W3G+DzSgFFhCfrohjZIu2B13I9dnoOQeY7BAbpqfKg6AowX2EdWag1TNR6GcWj/8jQM1cvQwRshyllN6MNwIzDUqK3XkfhzpTvzJaSD5kfMYYMqTfjisHsaxq/zJbLEs7q23ixJwza072kkZrAdO12vrRlfAr8Wis+ZeQwukYVL+VrWMsTS01hoslDrQeArN8oVEzqyVi8tl+kNKmP+ECebPQaIMWTuOVOuQO7Aa5VhdfnKDZhFJM9Uis1mqWqNVQq4bRpt4rN/aNYRN1cfL1WlgAwoabzoegkmFRY7xpZtyxjEoUhkhCDTm9ZkYhRSYnPF3edL9evWaN/CUfjLa8pls44cNb15LWIwaN0cHtQJTKyXK8sl02ZRXI+YX6qtkdHtem0dyggqXgyPAZSr63IGF8ZNTixKMamDTHJIjCz02GzdoPEZaZ5G5gPtL6EdmXlyROn2Uon3hWWIZRzrMIZExKHQ0GryHTwd0VhfLV0pN29oIfRXmlqoIN3gHXosU9/Np6/xSkVT2fyM1R5UL+DQM5B8REOaI2ptqTQKkz+jDDQykCSNpqpkOwl9MVvF7cEve+3ctqCXDBQol7IR2WeNNGvriqyHMEdAMV07XatCDZH+M8UyTnOT8us8TOgMKXWbYTIgIQMMgKj8lh/eVnnii1hTzHqyKCvOuJwx9OP5CJKaXsdoEiz06lVdKdWlrFrax92nq6bMOzLfuC+jzzJ087hHtGi9tFYpLsnCjhYsH2GYo9TQhKpWur2mG08a1Ontt7F6oLWd3eBUoTBX4KwZMpfM6Q2qFXODOoAztXjJpm/EdakizGpAFdqYesXQdq3xJS3Z7jxXuwWz8hpO4Gaq+mOpUGPxcUGyE7VYqS09B/WQac6t6PNyPx748UO5w6S9YdR28Js6EiZxtaUyNjo6AxS4WCxD72CETkBtoRZkVEgtbolcqGnKeU3jQyVIILpcQqXOdvANUAA08ajU4kTW6D26bbEAHi5CTosWw2RyPcDLHFOcQedWCKTb+NQNFsu5fMIIl98x49t8fdEkRZ886TYx5Xd46cZ69TkoG7m0JU0l08OP8SW9e56jPsQwyZbAZjRThS5QGgczrWAtcy+oaboPhA6dj96tLusdmxZhnPGmfqKm2wiZq09VGlCd2Now9xeWaLLZFFqhbk6LS5fVjtNefrctFst4UuvhMras1QkGMxeYoDultq4lnVFAJCLDQOvoybNlfT09/gTQqBEAH6r8QGtWK3TuCH/PoW0yttgXJYdzSDoSK2KEPYA3xHpz3mggRlsIrNSgkwjzMwNaxLArBs1maQlIQ7QuJeujA9ASpopL0OsUpSwSHKDDhq9Dr7gGBRlhD+aKRSiXQykctDsW9uPs148OrkjLgmEqZGjOMfackfnlL5JB6NlaGa2CKeMwEMIeUhtfw0OGlLvQ4voKFgcMCPB8oWGj0Gj+IdCBeJotvFZrNNETrODyHw4b5Oudy1pMJuAwZSitJEbxd4aZ1PCDS8G/CiWgwY8ujx7Tr5d6rysIshEzA+ELKejgMdMPMcFVKll6mNRqfxDCb4NEw+CQlqGzVZx1HY5s99EzpvBDwOUqAeP3eoNM3q039HOjgSr2sqFalco7DMVMZRMBSs2yVNNrFcCK4q+OBIOR5XUcJc5rcenVBZGog+zL9dKFGuakAUNpECe+dCFdvZ02QM0AtCpdYDKp+06XGktQvnIlmsIsIZoModz4YWgEJb++ymoxSl5WiRp9SD2okp/MEZJPWhAkr1R3QfADC1FymECkqY9otFizZl3Bb9b0MX+oWaO6Hm/WrFU/ZnwikGbxB5s1dPzkX68+X17Dx1+ry/h2C5v1TJDci5UrFNzQIvg4rBxy+RGe182lccoohKAsaADZ7Rj0ahns2m0D3gyt6JvdurDFPrTwiJe1u6gOhFbu3hv0PHWnGA+8qJr5xLfCD7sEjLXPbv7u4W/9iW/nEx4DHK+fwtNP39mf+NbNqrvXSPdxvH76bpTDD3H6h/n7CMef4O+T7N7PuRmDr2G2cTfMK6aKcZZOP6s3zVTPM5xuc26O4QvsXmL3MrtX2L3KqT0DX4dEkbGX2S2xu8Kubo2uRu4hPknXRSfnwsDFCwp5usS3KBzysh7ynbrn/egJgue7FPg+JV7RI17VPd+nez6sU/mo9BwSP6JHfVaP+kk96qf1qF/Xo35L93xZT/L3MMnHxe/roH+ge/5Y9/y17vlbHfn7fOz5sPScEj8GnvT7z6WP6YcCp/05P72U4s/34WPz5vouxARzg2Sjwacexle4PqqIRQMryFjH1YhYSh9QFQveDt2f03I7eb1kIEcviB/Bn/tMawojSVW9SMs7b3lFPanm4PM6fd5IblfLyZQanehTjyZD6nNJn4rnEisUu5qEKSQZjc6PrTGDfmTw7a5s/XMxWG/LYMOTwX7RdPKHgj0g1i3BuGjkJ4sHCXEzrUn2IGYQQR9tCXrLCprvA1Qh4YxQFQk81oKAKm6THTm/N+o0PZt+DClcg1rirgWKeH7TQg67ZYxSuiaCHqV4DxM4IN7hSiApzqV5GwBCj2fhVz7R+Y24+ieBRg0kAN8hD6VM+3mNU6X3gALpIfFNXhgYlfOOakNsp/hmg9M9XiQz4p2KMy8GBL/w2QbCb7bvQPqSeJfCfETp92juhITP4g5eNIs7eEctfA+L4+k08y2SdsyTRh4mxbvtZP12sjZBJKyCmI4aRJ52EtmINw9S+V7xrYot8KhB/ynxopIGaSg2okNA9CVlNAn1ootSlq4/d78lJVW8R6K2Yf+2J3niGRLxeyVytPNE2mWsJr7tXqXcWXHPi/d6l1SU0tbLKAqke8X7nKAqGwWytdhAelV8uyUXTKlV8Zj8R238d57cPvEdCrTUMTZf9gC0kzA+dPcgaPXvVpJBgPuA4gE45gH4PV6AD3kAfq8XYMID8INegA97AH7IC/ARD8CPEOC4+H7F1v8/6tYX+bD4AaSWQBpxkFsE5IYkfpBIvA1JSOA9OjIV1h4PEvkUVKg+a3qMqHoTz4gfaqPJ5PPIP6yQho1gHCq2x2zpfgxip/1kTwkVNe05eytqz6g2ijojPt6Wt0D6QfGaC8KlAHvFJxRn65ZlONSael6+EJFAwOPiR9vw4ZUBxNotfowk41Han1R00mPiU+2BgPtPM/c5TkSS3yt+XJGDi7YJHBc/sQXez4rPtMM6AFh7k/3J3lwCK/24Wek/qdiIbUNiK+JzqCw+r2vLHiifzyujmqH4J9ya8fPKJhLh6rJf/JSSjicjyfD0Hqymk8A5zkb2pJRRueHuZ8gHxc8wRxzv5GkP8MQoJkeMfFz8iy1IdETcVbzGiKPmAJNq9CPiZ5m1HgCxiwmwFDeWySDiz4mf24qwWzfCOfHz95bgmPiFVhXXC8kylhoTv7hFzLT4Jc9mhnFHW8S1ycJ28YUWjGDssZaxbUg+Jr64sZKXul2i6xoeoGUNe5v4ZVtBETIUl89Zsb2KqyVlZm9cPNEBd2EPGkGg4cN+ZMwgYTYba8e4x6MP/RUFMfdugMkd1VXxL7Eg97TsIX+VovOj4tcUqVlQT9g0y+sWzfJ/s/fe8Y1eVcJwrK6r4sdyGY9nMjOZTCaT7vFMwhACRLblsSayZSR7Clu8siXbSmTJSPKUvPu+CwECodfQYWmhQyCU0EtYeoel96XuAruUhV3YhfeUe56iZjvJvt/3Bz//rOfcc889t597bjsX0r7D1Pc+uinOceR8XTuZtYkIx3WEI8bHUYKrpgbUa3zCMZbBLE2qKGl8snWYSzHMJiSpMvObND7Vpasy5FBdtj7HyLdidbCR1X2daeSMT7dQyM9nVXbAVGWtrCS2PNv425ZRsM5/Puv8zREd3EpEnTI4Z3y2UYeZaFMXuOTUnAkUhnbt7/M0WkwYX+g0lmndw97T9IuCDt0e58NfJI2js47I0vZLXVtUAw8a/7jVIH9nfBnL+StSWUEoo6/gM+mTjsr4OhONBKEWv4FxJAn8lgV+2wK/w/oYgt9l7ACAh81lHUxBcrCLhXHR+B7SHGtK8/0f1ZDxTx3GttZ+HYrugPGDTVblTuOHHUfBdr4dIr/W+NHGo2AMSsLevPdxOTzM+PHGYS+BsBuLQhT9yPKE8ZNmlgFiiUqYxfYyYHtxZ7asr2nGVeOnjrHa5LnZ8XorEeqyLRn/fO/1g82Xm6nP/Mvmiq7P1q4lyVqf+dl9K6OWnE15+vN7XxgtGqBmu9/4hTT6qKPR3+DsHAc0XeMiR7OENimvc65yNFOOG//m6HCQAqvt77OnoHlGbOXgCuOX7bptt/GrriFL709xhn+zyQz/ZtMZ/s2mM/zv90uGf7uVDF9u/K7TiNmwHHKoM3XUuT6uAx3sHCgMgUydeetB3GaQ/9hURhyzqP/sarcMf7CNXwdhf9T4fWflo4Wq27IhPND4QzMjxW66k9i0HmluvyWN/+oaGnIsl9n13Wu2kJ3Ljf/eUsvoSN2uZXQM1LplbDqI1TL+uNWWcdL4E8rGR7r24rYqfIK0UoEYW8jLcXp0cWwg1gf4dhMhbwxD2aZej3JtzHkMOT+k3fi0qQjHTRF+i2szCzVDxqNd7dWu1n4dlxQe4+qkTLXz7cDyUuOx9px0lM8p41ZXY513kKfbYI4BErXd6JoyHnc/crvUePym83HQuK0p5g0k+sXGE/D9+WiHfYknumyEnfYlnmQnbBjAHIRPdrWIutW+xFPshA/usC/x1FYcW+1LPM3FKwxPd7WcVDUOlZCqgLkq8QwqgI3DHDHDXGzs2Owi+zM71VybZdUjxrNcW1+d5M2FZ1vxBVtvA99uUTy0NcVzLIpEa4rnWhRTrSmeb1FMt6IYN17oajNG7bPGKD3V6TN3EUXRuYZXx04YL3JteiOKpp4vdpngS1x0gbHlDtIjkPFG867OjLe6abXf+HtnXra33h4aN17qGmpZIm2SGTFeZssL2fb3DJ1BLow86AzZtGzlDD9yLWTrGlr3czeMPi93tVwOfIVLR7OD9wJe2Zx8t5V8K+LWxVTH8BvVzIZpbETrNOJUr1Wse/FCl284eqPrby44ecss3qp0GwG03bTN+IsmD8Uef9nk4WKPv2ry8LDHXzd5nMce800ePvC49FTAb9wBYyhPJXXuzx8xodEjgWHIyDJl5FWu2PmBYmx7IDTabzuHFAyUyPvVLvtBpEvD0Aiu34stGv5tryjcEDhv0HUpn4Qxy5uuqnnNq2ruY91y8gdceF8u02P4hhQjUHmlh93P2/sYtOfvY25kXCVk8vSP7gWeEYtLzFxcNK27BI4FjBhZ4ujL9Df74n27bsMwLfgEGWHjyfei994MeQq1TIW7IRXulqloym3bxNg46bhvx2uK4cYCNaHI6ICzaGM+3nE+NiAbvYiVMWdyoCkxQLijFaG2fBflhHmbEnY08DeDkcZ0tYl1f5tI9iOjOmSwu6nF7G3IljkUcpHhUNiqXJuI2iV/LvAh12CP+VSE24QidPnZgHy4hntalRvQULkZZIrZRoJsb8Pq6m3KzeUNuQlA79lLd0rvS76CzKNdFt+Baemztdt9ZI/pIp2uiyBd1zWV8v7Ghhkzd7iOmEfmjtB7J7Z08nsemR3tSFslUVsrbOwFmPJHYr/vv9R2ptAsyf2xqHGJHFAETttifcZlrEXjOxMa26IMe5zB+BZui5Bm+zhP25+Dealz0G2SZv32065olo5jbFUnr8M6GSK+V1GdDFOdHBwxh9rRa4D7iK1OwmJ+EArIHTP3LBuMPe1oro1uOxuuARsnROxox0ynFu3quclEmJssnjVKjztcaLrw91hbOxvavDXK6CvLeLRy9DyQyHFos3snXceCZCXfwK4UNMatZ0cSBLqObTcmUHbDbP3okHC4kKygH+sjk+gKut4xDnc9YofoBXAM4Kh69MuEjGvBb4+YX7jONth40Xx6j/FgRg0rQO0+eWsUgjxE25EE/4jxUGuIlfEOx94XdgUuHjxfl9F5WEYgP5pTeEdDClNmCvdN3toh9Y3hbC2Kw5nG0F2Bi5oPqKIV9/MGL+4wfOxqGj6yKM3gO3v/DCNikGOUJdZsuzEF/LLazxz3Dvz/cNzD4eqS/+fD1a1dZAbAJstHTB139EBD5IMgWKlbDzvFq11GdLWWUSAS2oTVCXktJuSyNglpLoUmCX/sSvNcw0WknuOA1GKIAV88RHHeJpLcdhx5RmBCnaf6QI1NxxyrAa91tcW3xMZueWuX+uXFpr2E5ptwbLssRwjVtag8eA1OuRdrj2i4Eeel29xsYsCNxNvGC3QnrpDP5MrLBdvVWcsog2V4wVclIjIURfR4U3Ntve64Ja4v2cnd/6lcfXHFfj2/4TomX3INL65Xq4WyZsH3dNvcu97QzIOiKOnWoVyQNx8isBkmZ2PkYpHMtKHQZJrMskrWZzG2XQmzG3gjO+369up2osY85huDdHhZIUSh9C3/8HiBDcmtVwt5vP2HRdn6CnvIytmww+a6BR+ywYdt8NU2+Bob/AAbfMQGP9C8+sYXhMN5eypDdPWTbujWlI8cNeWlhqOtHHgzhWUoH5tp+cga3mCtlhO1xRzUMNrp8wFR4uya6tEX4/Hiofb2FfjrL1FLKKkeRmQsShVaqlZWU9rfr9krX2WNy59SwNb6lZ+RNb6YF8HL3acLMzpEt1xxpmpJlvUtXT/+or2FENVJolwvVgt4LxMceP1ZJ7qlgQqoY1ueVFg7+Part7YGuVKh5NHpdCYxPxbPJlRwai41m0wlp+XBgQi3R7npF4DM5xbRABrbrcAbmqVCeRnNRrA9NeWuLNyovIvQwKts4wFSiM2O7k1axh4sAw8KulpluZpbW8FnRUqrlVo9gR1FuXOra3jzFtoy1P9igd8AWDtXLS6vQLz53PIyWijMF5arBaiqPDR6iDPM1urG2VfbrkNjfBhnqVRcqxVrylNYr1bwbnEhh7e4oxpIVzlmz0qutKS6S4WlOt/SfNh6BU3oIeIoFAVeTsX78ejO0nVTJvCUCniPEX+FVbRUOePkUTljD+JdzUPvV8HVYj4Pqa7gPdmFGkiTMuED5YouDbwnm6NiArC0XpuiK7beNXxRAT6UQe8jiKeqFpahtxSwjxhUWvYUdBPGlg0msSfKX9PSw1sHtjXlqq+q87OzmeT0UWon88npLL5TMZs8nphPZ8YTGced4IE2NHSxH+9iF1HWB807z8pPnWR+uLVZiwtmqpXTxXwhvwda956FYjlXPbeHriPXxdhjW1sUvsnk+Hhi2rS8GOaYaguHHjGyT+I9qCIMXHPw5rVKYR80XxjJHCYSfZWlJXwrJMRGLbipNxjvYGM8Crrl4k2ZXB4vgVfpE56B0i/WVgr5+FpR+fPF5WI9vQRNGofOHjJqk4fWbZqr8BXJrXrYzuEE9OlcPVGtQtGadnbIIoXNMA8Zp+iaFYMVER6h5Rq1aSTBbr4isClDFl03oFEchyELh7Wi/4+sWiiQRMV6roQGIywrEmQ/oisDspQxlr0QaC+rlfIM3dLnC+3F5XKlWhjL1Uzf7PqS+Ab5ujsmzAeSDopYuUHA2exQeKs0tGhLSjAw2RJkmlQKIEDmBSICaQsULY1RbNUKBQrRGhvtqVHa29mlaGWIwmZGoo2ZiCANPeVz0Fb9LN1r2l6BZToiIhDTkQebGcJhcdOWJVpYxbiXFiWCiM/QEGGYoGlNYiNzE0HojbrsGeQU3zsjFDFQ7LKgbFbwGR3UM6GK/cWl0VKufJPddpVppyLEHf9EMU/WeMQehAZQ8+5gwMJfrDFnAJhdd7E2Cbk3k6CixVoKhh/T7S2CVJxG07ZQ9RyYYQ4fARiyn66yl+mUxFqZg3TVoDXXC7U11EVoJmAqyQ7jFlGbAzNkN3YRRhXTmkCUyFzW/1MLGNrqhd0QhmVApqUtjJb2L6Ks2SWkd3bVRNmTYnDhRAV7CA+APeybshWUDqA1TWWwM4uTH2YaWKvUtN0Mh2WNrqxlXMO3lssnUImEL03UAgAQj2a7GxEYTNa0VkaWN3LlPPRgX4a/PTwhMydxWEx57YCxUgx1NFjpCLGT+2PM5jAt5qCuUilPaXVWwehWS+uxlqZH2tHjoCMLuoFqQQ+UMTZZlgXZm4DhZRVbZA/7xfOWGSiNGlu32YmqFlYroIOz9Rax4hJiLM87NQkPDpgOdkHLX2dbIUGzGLAU1kCThAoocXn7y4UzXPCAYSkeABRDoo/HlzBs/2qxhrZLpISr2pSdnYhFrsaMFkB4FcxpCzsdFLoqgxCjBvsdPqPnpnJoBw97BH51MUi6OP8Brb/n25hY8dZKoM+pbppOzFYazLlxW70CLYRYL/PtwYl4fo81k98DbWyPzAi2bKLsKtvE4oCN6YM5hstNzoAB8BI0z7KgpytRE+RaiDndVJzdJk4XeW8Dgo0otTDuYprcItOKAfzlChJIqwCWDZhgvSLLAzD1JXszbK8rzC4RlQ5TMYF6RUcUFUhGrnqFbdOIGW7t1t42GzOmgUlvvYJrNiH6iBkdmIWjMRu27RVml/YLoetMoUqaVIOFGoieZ+DaIA24tSUc/kS0W5rSHGV1O8zGCzihAVWrNFeugaYGMpysfXnmMG3eOUqHb05bEatXOGBEA1aqiTzMX6tIOHhEA6JMgVNbKRPIyuEcvl5HOfRAva8CE/hFyaoQ0J2LYN2jggizpN3I8o4h/pYObtnicdqtJMs8LUzykDG3FiZ1TPtuQZ6y1G6A0kJ5hICaM5Gxp7c2t3MePXJnGR4/z3zWTmmTMmFtUiYCroAR1a5ucCnT4Hi//oqxne36O6Spd4LLMM7XHHc5TO6cZz54xyZ2DG2OXEzsnGea2GFz5NuNg5rrIXDtMA7rUA/VVAltOmdCU00qfGwuOWh/rM4wTYv/JX33Gn+jv2IyZ0HTL+pvWduReU4XIXqJPSJeJBZmXsrAHsuozasFeL0AbxLAtG7zLgYM430CfFCAjwvwByF+lEtjnijAk11ihkcwLxPMW1zaSs6nXOB+iPFp8fhPAR7j1sATBXi6W3N5lmCeK8BLBHipAC8T4OUCvEKAVwqfd7p1It7nBveU8X72mDI+AMDQbbWhG4wX4sEifCM9Dd9e+M7Qrpr/GYGdgctjKvBiXrp+SVcsHPj7rpg/oIavOPKyLjy6cmUsGNjGh1q67g64hsbwwrmN2RaZ3EFM9tGrwb0jfjwU5xq+ik/JDALVlUT1PKDyDl3dQAUAXhcf9kHcS/htHWyMr3ZjNvNEPYgXyHtpl+IA/Q4P0+Xnbn3oeTAWAAa4CXYVonfeHfANXS5MOgfW1EN40Ryj8uNVckxZF/odvDvgH9pl3Cl+b0bAYxGdh/4XGG+Ry+scTe/wPiC5i6LHa6GBoT68te0aHoEc9RAWAgaH9uMNbddwH9l57sUb18zFQ799uFUYuDughqJ4rVrToXu/zd0p3IjhGXJPvrOLbjm9E2+GuS5F98iAsdv2VKN3+BA91ejFgrgIwkBBAe2BBjK3JnN3JuvVZL1IdgTvVePr0l4zBSMBvBpNyeg3/mKoh44mv5N2oul5gn1YNj4osffq89nDnuHDkvM+vHUs2KBg03it2CBGH+qizz1dw1dTnB/qgk+XcU8XldUeiHCnLqpYrDFE1Cy4B+Fd127x5tiEHzHqw6PY3ZoTk5mBT2HgzaSmJRPAfsSJvcdiPYdXdN2TH+sSbkPA7WNdl/ZCXz2P46MjoZDca9h4OF4vwAAdU1xrZMuJ3Lsj4ELufRZ3BiBFm2LfMS9FvMl73yLdbHUew+u5DcngCjFr4tMt0tkoW25EXnnjM7Zk32OrAl3yncpo07FE8SYsyAngAP0oNHSV8Tlp973D5xNfv/H5rnYiVA2lMECQYvlC1/D5lNgvdDkCguT4C50crxDua83tKrz5KtEHNxX9F23RB+9j9LvpGTISNq2K6zyQwF+S4vKCiL1oCL948pbu1PbhyeAL8LJsZ5JDxlcoZZfy0HMRjR4WSeuxarfxVbOmIG9fY6FvjixekJRft4S1OYLY2N5KhgP22cma06epdjuZ0R3bXZOPUzq2rqEB45uSB6+VChwyLHznoeZbjoa3jW/senWEdGfXh4TaQ/Jt9/huuxDfbR1iP18j9m6UNk3HDDrSfX+T/L6/KX676H7xsEdXzWXU7G1le4gvEzv8gd8PhZ9PjyD77IH24CVgHCfbst2LV307NBys7gaan3S1aNY2ml6h6XXQhCA1F2oSj258zpjC0D6ZgoZ2EGoX8es1DXz245XfTRX9TzdV9A/C67zC7wDSXRjrjfUM+1AIREAIbCMhcJkjcNgZmCPZauCH4dVe9+TPWHn6GStPNnn+s64ts9yP13E3VTg/31ThXIe3ZjsnsWPof70PoS83jttab0tCW1O+Hm/tGrbO0ItPI1PQCF7FlaFlYAQPysaoAzkb8dFNc/Dp8H4dGoBfsQglCXqF8euuLaX8N/cx5RfqC7zD2yHUBTIBgFT9lsdPPFIJYvd3pgjhJmC5O1WDgfdbzdwg5oAD0ynstXiZtbWKsB2G5n4dKBQzaQ6bYTN4q5UaD4faGwMtCNpQSGs/QPyAhsa0Ic8ZvKWKOHtKAnizE5Ejl+GFzf10WeMLNCWNmFPSP3XZlKovdJkdrmA80tWB4/XI8UGt++9mojliJvyWTtHohHPQNnybEv7oe5vwzURzxBQ0j8GbScO6pTzW5WgpwzYpfKtFdwDpNpR6w2ZeDuE1ya2OjoN4G7JpdESfON597BdVX8y4eobP3/wEbR5ZDAgLaYugjJ9/P03TTuH9RPvUZhfPEbZZcxor4Q/c0lTtTCNrPWvazbOmQSsGW742GUXHPKWMJ7kaQ1xrL/GBgKdluptWaJDbgPEUl03b1bXbNTRtPFU3/KgMSt5LdUfowo5AoiSKrceUIA9qnhOY6vA0XgC9H/kZfDmUpgi8snM53ugUxdrU0toNBtfZqUXLlxHLZ6w6Ry4Max+7LnOGXqaBpF1Ul+OlUSthegGuHfWInXqTI9t+vFy6iTnFfrxiuqm5x3PMRoHK5ABeK9VuSzhAaON5gvfcHYiA+/kOt2G8QNxUSX7g9MKWnAbwVmcL/CV8e5O1XfS5xRVVYZzfD8LgitfwbKQv2SxpFC90mukMg/ulDenGC0bXUWJ4uhfl6repBb/alFpwufHyLTTKy+zUGzerV2ypWb1iy83KwAudDTqNHdMp4314/dGxUIEc+4xXuZyrJ4g9bLza1Ub/sZYmPNbSBMeQNF7TLtQBCLWv08DYMMqnjdc6WAWFlZvYXQrs9ndi5495B7vsDJeN17kslZ5ZbUIz23pEOeP1ri2qf1stnGuNN3QqHF46bkiepZ2+8d6UQ0eeKeNNW81yh1a03xjR149wPnFIT82/0bR4tIuekGxc7gnbBJj4W+FRdBrGnQ196EHGmzVmr8GFYhbug7Wac5erXXIvMN5q74DdxttcYmACNJhLeSby9qYY33FfYrx7oxh3G+902TL/LhcV3qOswjtgvNscrIHgPaSGAvBewlqUoUZKXsRrQYk837dpnu/bJM/9xvtd5nyfN+VwnvhXzfn5QHOGAfhgE8eo8SHbSIrNzXJ3Ep+jxj3YyD/soo7zYZdWlz7saj07aKnaDRr/wLmh9SH7qHqB8RGXuf6hNwBJ9n+UStFGIkXRmuRjG3P52EZcRoyPS374PVavntV33E4zw8g+X3TjtcNPSFJkZa3XWq8ND203PmklFZN4l+7DgaGLjE+ZE6e2KikOjhYZNAZyPJTtVzZsKkwYn5FhMKRX8buNz7rEBBPu3LUclAnZK4sVXUMPaebjRz7tFIHG8NcZn7NSfAnOZffF+mKxYU+b6TbPk6yFuc9boR+CoR/YeljZmKXMg68zvtCUIKbrwMOWoC9uLkEbszxiTri/ZPVXmA649PyA5wt+48uCWBpq1J9CEPgrWwkssw3cdu2CYe6r3B5NdQlll0tP2r/e2P73waD5DZdeIOvVL6kAevKWADbhbcY3rb7qN75FDoxGe8hegOWxy/i2vXc7JkY84Dn88UZxiOci37Z3eUc4uwza5aSj8Hb/bcZ37CnmBXWbh6TY7vFde4jvmVnZ4/TgPLYKKjybgjqLpyHo94XCvssSAq324TY8awwjfYEA6CJcddu1uNtnz/b+VqFkCLLRXWrSYbr+SUa/HzDgbIdO2h/KaPUjBhppf9xUEh5JANH+xMVysaslbW9b2p9ugW8zbXu+/7wFvs207fn+yxb4NtO247vf+OtN1u9f21huVL922s71u934mXOY+7lLhrl9xi9aeRH4rybVfuPf2soFnREtPxx01L/t/leyf0s5IXTOjuGgd/Bzrkn80oyXF7h+aYazL2zCjN4cLPSM3ho8Oi70/7ppUvzrTU6Kzzd+Y5VJxHi+TMJ9w4d5X9bm7UdvkqkKFJDfWHl3hrNnaZudzB7+wcZ8w5mF3gZ1Y6+zpViKAhbp1U3BQ1rL2OtsjM5gVzUFM/uGubDms6sjV7YIoHuIpbjYqvohxr83rDFsLV/XNIffVMb2Gr+1j+tt9oMdNHrgcNJc2pLG13ItxsbPHIiaZXcrmlb8QkP9Rqmxd/KjBoLGgEHdGUP2kn9GYNh+RvF3rtiewH+4YjsCodFtgethEv57F5mvUoE/uIjiv1xss/2/rXFS0oTF2qQZDDgpzbTtsvBmruxT9P0t/Js1D6+df6+d/17jjy1EvlN8t6JpFPF7jT9tgk8zTTOfR7o35tNM08znUZvg00zTPHTdgjSyenyXcxrqsy2pPBrp4q3p4ibdNuOxbpu4s59Peaw9MXaPW9uFuLV1iP3G46wQHVfGH2cx6Ej3+E3ye/ym+EWN29zSZXF9PGo8Ad2j4t5mc5uHXfmo65PcNOiQV+Ms8yo81Hqpg8Q6KtuK9nLjyW5eVOvh7RlriadhMY1T/RSpYUqlYTyVYzIxA8bTkGLMOer6hwaNZzBlk0+f8Uy3eaB0XMbWqPFsaXO6PCx3Q3nczox9HcrDTtK5PHqNh5iJOd9KzHMw8oSVGMvdkJjncUyJDomxk3ROzIDxfLdWTTxWkUUE36DaeKEoX2AV5QMtReiFSL3LSR0Ftc/Cj4SNjA65d/hCO9UuO5Ucerf59xkvsuK80CqxF2OoCavELHdDif09F8dEhxKzk3QusSuNi3XBjFqE/CaJ/dig2fgOmPQ+B+PGU4Z2ysQGlFYaJjaVhqtM+qM2zvr104b1psm7A922AMmtBji21QA3bC7AxcYdWL9HuRI7EA7bCDfH+hLjVVz9GzMfcZBuNuWvxgQlN5Fyi3CzKX8NJ2dj5iMO0s2m/LWYoGObSLlFuNmUv46TszHzEQfpZlP+ekzQDZtIuUW42ZS/gZOzMfMRB+nm2A8Yb2wjkd/YUiJHjTeZagOrUm/ahBrRNbTDThfSe7x79cr5AHs2RGYy30D3MJkzXSPzqHFnQ4rv3GSK7+yU4jvbpPjOTab4zk4pfrPpiQsV2423WMTONYyocVdD5u7aZObu6pS5u9pk7q5NZu6u9plLGG91t7l2QHl7m9sE304KZevz+wvIZoPLCC3ZbeGOQMJ4h7vNFYWtJfUd7o0uLtzXpA4Zd7st+6GguKSsC06XGe9yW9awzZ2KqC59vYpPNrsxse+SxN4j5aoPrcly/wMhVVe32nN4t7sV9j1u4RY2N73e2yFBrTN4I4ZpXd/3Lj10LqBZiYG49vYat1uHSi4lO4DevZcYz7UhIeLLjkycfJynxf2NvYZesMLUHZlAi4eG8YIumXASxmbtei6wNOgacQ27jxl0Ac4FBe1FkTy5/1hMYwKGf4gPA+0/trcR17S8sR/tXn8VLar6R8w9tdHZGJ8T9sb0ikJML1nFrjX6hq7RzazFLtMgXYSyzlX68LjyMB0Y6D7WLRYwIY4eNK344HvPjC14UhoZpOQxGNMglmYxcCuUORbZaAAysRtlzbGgcQF+Jz/iPtZLNo1jtCazm5FdgKTLBuY1A/fkl90QaD+V2Je7ACQNEcCMZol2aQ9A5fSPaJu/w7HhAeBzKYWPmfcr7iCT61cFlge3QZr6HRTbiOcdribN3r33Y12DQ5QHBdNTnzEClNuPRXUu9HYuuK9ucF/T4H5Ag/tIg/uBDe5rG9wPanBf1+B+sMMdNmeTILwzOtV7T0Epbce8XNt18Jgyxvls+uT+TMi4HgiG2GRutxG3wp68A2t1FHz7GaTFKwap9AHEUsoGbnUP7qZyQpvaUbJii/O2FNV61JhqcE8P8T4EuYHZUfhewG3omAb3fs01uGvPBCd4YjQWGIjpe8sxPR+EOjFxo5avY04Jcc0N8covNdljQ/r+wnbBWDvXx3YZJ3TI7cPBFv6GcdIZ9lgPH8MRN4jnYxfx7pcZPNZiA+7WwLGBBjK9JwP4v26J32VfrHakjfrfsYDuGQPa9C6VpqMoMrqAsMcEAx/pGrwIynYvg/sJvDJwa9fg3hEJcTEUsEu6rvS3G12Bv4H/HHJ5lGvwwAhKOUiKrgy6tq3hAiYRGsTAqCI76AXKCMvPA9DFV7iLmxiRqANaoh6wSdQBLVEPdJCoA8e28X3BpkMQUE+XDvGGGkuD213HfMZNSHtskJegm1ZwB2xFGuItc+4hQT4oqV8ueL4v8BHX4CXS9jMxo4Ixnbx19vkBtIzwtNu6MoaxZuLQkm4KqB7hoPrwI7syPUbVxOEh5Q+jKfOaA/UF5F93hPwAhVx3kH3XBVGedkQ5CQHPOAJ+CALGjLMO3I8Id86B+xThbnbgvnoLZup/OWL4W6D6WwfVJ27DpP1vR9J+jzn4Pw6yuykHf+cg+7Ir02s8sstBdyfRParLEetZoLvFSfcxiLbXeLQT+Z5HIvIxTuRbCflYJ/LVlN9buxzp+QUm+3FO3AcwjY93Br6DON7mRH7gNuT4BGfonyHHJzpx30fck5y4j2AsT3Yy/AGVxFOcJTEOYZ/qDPtNDPs0Z9h3Ufae7iT8LRI+w0n4FiJ8ppPwM5jCZzlxb3RD4Gc7A3/4MfhYyjMCb+1S56nemCswHYsE0qZ290E3oPmvjWdL9OaRrRh8qC3fbgfiHnfsye/tUh9MKHeluqz8N61UK+VKTXnPFBaWSypEBiZH15eWClW7YV0xGc0Goou148XCGZupYzaObHC48Vw9l62sV9HOszYfS3ai1cK5eiHFCG1WyrtQQHM6ZEG62xY1sfctcDIonDYURhZ9V3PVm9BcLUZElGq5UCfDR4dGxBRSuFSs10topK0ICTQJrjlsWm0KkGnO+sFrxFyRRgAPP0NHtHEmtBU4VyRSAYEooMEjStWs6LWZ0JoVX6Am8WgII6jpCII1i3XNYl0T1mHNl+1+9oyemk1k52cSmflEKjGVmJ5V3hz5aMOgbiwjsWYaqK0vaF+21h3WSWJaRYmyYIkkiAljMDpbOJtczS0XdHWGOKnsGeLEagaUXJ1KgsdKudW1Qp5R3ScKC0dTaEkVjeQtVbSxbrGmzZY9PXW0yh0iUt0C2ZFeuLGwWFcD5BhDy8Rn6/E6BF1Yrxeg6eZKays5FcyV0e5SMQeYfGENGtnOpVyxlFyayt1Yqc4UqmjANFdeLIzlTqMVt91oDq5QTVXOzKCBq9kKWlO0kakYEKyixaW1UhEyQpH0o1myQvV0YbyaO0Omkymd/lq9UF4sllSPPY2J02g3yn3m0KJyk7G9AiIgeewRJGcS20t/UzBCR6De6uu1KW0qN2j5GBRgAk2u6V4SJsxMFY0tr+p0ZKBfFaqaoN+GgpTryFRPfIyM+MZnZzPJ0TloXyqqUbOJk7NzmQT0THbPTScn0pmprBqMp5LxbGJ8Hm1Jz59Ijs9Ozmfi00cTls9MOjk9O59NPjyhfbzx1MxkXCn6zI8mZ7PKF0+diJ/KqnA8k4mfmh+dm5hIZFSf3QWE0+PJ6aPKgPTFxyaBc3YyPp7IZKFvxsduUN7RVGJ6XIXoMz+WTqUzqpsd49nZeY40YiEyR0dVlJ2Jh83FZ5PpadXndOtAsQYshtScs5kxJ2dEoH9wNDWX4Mx5RtPpFCDgd/54YmzEAg9Z4GHVP5pJn8hCRscTE/G51Oz8icTo0RTkh7OPBajC2jGXjUNBelAIKPfY2AkVGUvFp2bmZ9PziXHw6aHsz3NJoXQYVgajzMKcFaKxVCKemT8eh/SqbkadyCRnE1Px7A0qOpaemkmmEvPZ2fjsXFYNoTuTyGLF6kYxjy0hDvkE2mkgm5ayttxcGTFwY5j5VDoruQuOzaVS8xPxsQSQCzg/lR7HtMxlMpD0+ZlM+mgmPqX6BXE8kQE+up0qF2TfM54Yy6gg/kLi4zMqMg5icdZMtjGemIGWaZWHUoyhCtK+9qJhjKNoNAryn55GDj0NCBDcmunE3PSYCjHMTT7CjuxsYnosmVKDDmeLZEHfm5UYrcrwjSdnJxOYzzQWahw6ZNBq2gRySYfHT03Hp5Jj8+OZ+AnVp0eIeUfn2tkKa3YyLzb2lPJPxLOUFu9EKh2H5NFnHqp7xAYfssGHBaaWbsGHbPBh1T2RiR+l2LkPqxAgphI6aXttDlvhzKdHjyXGZucha4mNaGZPzSTU5W1opOGOzY1CW4vPcPvbtwF1KnE8kVK9dioprT47EhsEtj11gR2bnBa8vbrbkYwnp9CmOvQfdUkbkqlkNot22m3cttlJ56azczMzaegp41B7GWgxKkqf+TiIKZKYit2U+wA22vn4+LjqJygDuc1koQPNjc5mQOqrCKFNZ9/RxHQiE6eEzGAZToKUV76jut0czSTAL6MUAIlp7mZqMnkUOgc1pADBGGRPEjOE6WfhyhIIgo9rwaJ2taegavZAqUCnwF/u/G7kG0hO60Yo0CETOqzCyWno1kkQ6tNzU+p8cdkLMD2D+cNRoUe8LVREUCwcfOAEoaQ8NyQSM8qX4lLwpEBQgguGxjiMZvyV8tLYficWYepviM6qIA2rqXR6RikC0Ti/wDTaqhDAN4icC6bSJ3QJ+xHEggim5qaS0/FpqORuE9QyY89U/CQ2WGjINoGenILRBcd4qLTtRCEdRShoMNqJXmZH1ioBFu9sGgblfvQFcQ292z6CbUN0q4gMuweR9iLmeDxzCpu5sI0R0j4AZNUuG64V6yGbf2Mye8gvmTiBXQX7HSghU4nx5NyULkelXViU3VPJTCadgaLKJGYSWMhSX/0aaKjdgQa0Wb3T2L2Ubzo5hk7PNIwgKjCdnuWGA9B8AmNSbvQYhB/gMD2XnW8YYlv58BDQa/lYQ0QDsonS0mYakEwZSc+BgJ2Yn0pMpTOnVHQGhAjQJ49Ok/jxkaYHNT+TTp06Ch01PTGRTZB8mcV4GtHJVEr1NSC5wgJYxCQzwvYWpLY52hPrj9RU+hweIpYHnFhUyLgNOvB6LG72YNHFTdHhMZkA4TWrdjqQkPVEZjqeEqnV7/DFDBGn7c4uoTUA8oo5vLh3BxiHbUWaHHxTKLHdqGb64Ofqa64GLHzn4weVB4C48uIvDMXZOIrOzPzIuAoLjJ1Z+dkFCjwDujBBfxxLQ8tE7TKqfTg9WdWt3SbBQANiXgvB/kY8y8hQdgyGLFRB0ychNdpB2kWItQAW54PowC6fAtVpjsJD9Ch0vdlJ6KQqaDXTmAnOZ0EA4njE3txgQygWRQ2KtVC3egSH4yE0VNDNGlCoyu10oGbi2axuNBSgrS+CynD4ZhITapsDQ2UzT+rdgMPDUvvCJh57hJkNm7raKzi7wmoGo1RaLsxRRFzQUxInoartziNWEhvz2sqDshkSD8yhGRdVrplgW1bNQrZyCRxgSJ/iuoqAnjGTPJnQefbL/DOggWETOqiCAg1boA07YoGHLPCwBV5tgddY4AMs8IgFPtCM12I7YsU7YsU7YiOw4h2x4h2x4h2x4h2x4h2x4h2x4rV4HbLiPXTQ9D9sQleb0DUm9AATOmJCD1RKBk0QEzGBtRBF3GAjTvQBZTSq0mpHk3I9nTgap0WDk508T3XyfHgLz5m0fnOoFVvTsxVb0/PhVm5BW8ABCVVWC5ecFlxUcKhfzmcb3CCSQBEBaYUCNSwg9JhpIBQXa27G3HTDqLlXY0hiZWdw+gtDuRZ5epbcq2kmUsmZ+VMauUsjYTpOr3nNpE5pUcj+EZgBQCQ4kuIyQdh0oiYTNV0sUwec7vnD/NeEv5r+Dqq+Jvw181erbtKJ49a823cchi8QxH4R4XsdqlvrueeOVjSJ6fhoCqYyu1p5TuOQm4IxdLx1YFJMoBoHW3nS2DvU0gfg8UTrUDRURbSPnsQGRI9UnocnMmm1veU62yi9RNS0+uZbzJVP52qqZ3J2KjVGsLzq1Ju3LzFOFviRDQeSn5KJ5GhddRb4rePjcXUNhHP1em5xJbuSw8fd/Gt6adBXYwSvrWrf2AI+BkRrqqkKP7Elzw8q9NLrnL56roovE3Yjzr76GFqyOQz0daw9hqt2Vwj9Jbm8bikutVACyrFKCR9fobcK8fm3svIs4AZDhHzxxTR+2WQVn1XsdyCzBXq7Bd/QA09ak0OAV2+DRIrPgyh/bSnH777kNdBjepo8fLXqIulb+VodvwFwM6cAYBhSC+amh/Ku0zqtJ4+OCHtk1xfIb4BeDrOVWZbWduUxPc9qrnaTUuTg7DM8TivZYYKzepG5q4YvWAHNFIaJ4Hs1xVJB12QfOvHtjEJeVu9BmOsn1KLy5CMtcteV9wy1IN8Kty7fQqWKPLY5eEAOhI3/rN5b8J/TgE9ziuLbfbYIu86qrnOqR2NtLMKL9BqfblA97LI3pQijZCU7xk5nc2KczrEOIE0osLheKk3QQ0X5QqlgRcUuR1SMMqNipzMqxklU7JKogrTPQO3Js4S/jKBq8SyVcsv4iA4g9BOnN09TTd88QQ8ZFuydM1+s8QOsi7k1NahdxwtV6MvcK/U2C3Z/Amvy+Jb5RBn4aNFRU75Cmdht428zI99SsVysrQCT0jp8ttm6ryP7imXIqn6Hx/LRgqDPFlCXCtRxEEUQE+AzSOU6VUd0uVDGR6MKU8U1fPapG/x5S4hTpgwTMVcu0nNzMcRQCgp5LqoaPanXIKmQjGvZfBJWeddoi6kPvJq3jHDvjp/cw9dlzedhrQf4YrzfeeX4OeBSXKT3Yi/ATUQru3GzZKxIkZvlwpTqtoWbXqnKsuq1UBbdICDtpW75YIlwvoVBzMQ4w2tctbBYpIduuVcO2WR8o5/icYA23fB1KPYkZ7fJUG/8DSBifQ0f5ynkzeKqESFUu5UU3GiVyguUpH76KBka76i1RhwytLdW1d+A0PvAHqilugoUa7pzR4o1XcupCnSKYLGWoJafRx97lwcf6e7RYs3R1oGb7o5AZHZxfKeMx9kQgDdJ4NBa8WyhlIWBo1CEtoYFAKVYKZ1brpTTIhp5YPGul4v4phFIqfwMhoL+ucbfXnuXQmY4fERrudU1fCzvdIHcvmIZIJC5NaiiGrbZmr1ufDW9Oav3IEkcwdi5pHptGHNM8yzlbMQkqnptDpMuqJHpNQwCo473Zv1Zw7dnekxvM4SqW+I/Ure1iiWns0hO25AQXOdWcHBJKRM8rbpOWz5Fy6dooUesACNLNrRFPWKjPrSkum42fQ7ZAhyyAhyyBTgMAc6YPodtAQ5bAQ5DAEPDUzloomcpKfRe71oFlT6HJ0brxCBftV4zR6Hu07lSMW8bAaOnbe0fyqjb6T6tfKf5kWQH4UgDIabKQXCogeBQI8HhBgJMaK8dMVMhdUKpMkoUfBszzw8F42PXp4uFMygv6BlTli0qQK/MTeXOClQst3mF2r+wvgDdt4YvgZYXCyV+rI9ejsa3yvB57NiTPLZXjfCQkEv5Ai79ppHb8MDXZXgB9ur3jbz6fSOXft/IS+8bobuH3gvyGn3gCukXjVz6RSOvMai/O/T3fP3do78Xafor9PNAHo0f1vir6Tug8S7jGvoOmu4H0HfIdB+h707T/UD9vZa+u038g+h7gem+jr4Xmu4H0/ci0/0Qna7rtXtMf8f1N6G/0/r1pDT8XmHMwO+VxsPA5yojoylm6XulcVy7T+jvSf09pb8Pp+81lAI/uPWrQ1caj+VaOqJ9rjQe59YkTxXgeQx4jd8K5pHC5vEeelnIa3zTA+648S1wD33aN/QIIzHkGr5sRAHNBJ2j9BM8aYOnbPBRG3yDDU7Z4GM2OMmwvpAyim80jNN51IPkPUfeB0ZCAH/bo8Oh4zt2x3c9zVx2G9/D859RfWnq6Xj3IqhPPNsJuoFgoBOBAQSDnQjwDslQJ4IeINi5URS7N4rigo2iuHAjgotaEuw3DgIq5ignfVQ22ppuoJGuuzXdYCOd0ZpuqJGuTfp2NtL1tKbbvcl4L9hkvBduMt6LOtE9N+DauxuPvXtG8MQzHns3DD8Q+UcCQEz3vvdeH7jdGHTvQZLAtV0eugiBZ5WDxwaNKHzdwLibIsDz0QZCmaARwe/J2z14vPiKwI+MQYXh9fUKN5++Z5o75P5FkA7in7e3J/BjYzCAKcJ0hhH1aA8mIgI4NbpT3ypxx+TgeJCgiE4TXoSIaiMpnKbtmCPwGcJm0dJnJ1ZIS59duugafaJ0krxHfIDygrY89rblcaGDxx5jH9aaSakbvC3EHrpF0kjR7aC4uAWF4aA40ILCnq4B45IWFD0Q8tINeV+2Ie/LW/E2G8btHlvjMRsGt6N+bKp90lQzPuNK9Nz7tS5sHL3UQhW2UD65T21Uw1cN4fUKA+AwwHw3IDrcP7qLfFu1Jm7hu7gfjThCUW5GdK0f1LmhGGw+A8ahIb4CcVjnU3pG53wCGGrM8rY2WR7YKMsDDVnuvldZ7u6Q5YGmLA/cL1ne3ibLgxtlebAhy8a9yrLRIcuDTVkevF+yvKNNloc2yvJQQ5aD9yrLwQ5ZHmrK8tD9kuXz22R550ZZ3tmQ5Z57leWeDlne2ZTlnfc1yzSu7XKMa1QKe9qUwu6NSmH3/3hb391UCrvvl4rf2ybLF2yU5Qv+x9v6BU1ZvuB+yfK+Nlm+cKMsX/g/3tYvbMryhfdLlve3yfJFG2X5ov/xLF/UlOWL7muWrwrcYQxeTFk+D7weCl4HmCpuBRi1BYhiALx0d+noeej+QRfqyZchh8x2c2Irirj/yPHrj5+8PQpeR9t7Tbb3Srb3Otbe64b2Xqn2XlNtvDCbl2ETuBxyOTwagxrFEjlA9ZgF6CCU0ZwuOSS+GIvkIBCPAFeZeAvXAzauVJiHrMIk96VcG6b7cIP/1Zb7a33YYh9ga7F/QY3AZ/yl/v6V/v61/s7r79/ob05/F/R3UX/z+lvQ3yX9XdbfFf0t6u+N+nuT/pb0d1V/y/pb0d81/X2E/lb1t6a/df1d19/T+ntGf8/q7zn9vVl//5f+/q3+/m/9/T/6+3f09fMNRwQeJcAtAjxagMcI8FgBbhXgcQI8XoDbBHiCAE8U4EkCPFmApwjwVAGeJsDTBXiGAM8U4FkCPFuA2wV4jgDPFeB5AjxfgBcI8EIBXiTAiwV4iQB/L8BLBXiZAC8X4BUCvFKAOwR4lQCvFuA1ArxWgNcJ8HoB3iDAGwV4kwB3CvBmAd4iwF0CvFWAtwnwdgHeIcDdArxTgHcJ8G4B3iPAewV4nwDvF+ADAnxQgA8JcI8AHxbgHwT4iAAfFeBjAnxcgE8I8EkBPiXApwX4jACfFeBzAnxegC8I8EUBviTAPwrwZQG+IsBXBfiaAF8X4BsCfFOAbwnwbQG+I8B3BfieAN8X4J8E+IEAPxTgRwL8WICfCPBTAf5ZgH8R4GcC/FyAXwjwrwL8mwC/FOBXAvxagN8I8O8C/FaA3wnwHwL8pwC/F+APAvyXAP8twB8F+JMAj3SJ/BHgFgEeLcBjBHisALcK8DgBHi/AbQI8QYAnCvAkAZ4swFMEeKoATxPg6QI8Q4BnCvAsAZ4twO0CPEeA5wrwPAGeL8ALBHihAC8S4MUCvESAvxfgpQK8TICXC/AKAV4pwB0CvEqAVwvwGgFeK8DrBHi9AG8Q4I0CvEmAOwV4swBvEeAuAd4qwNsEeLsA7xDgbgHeKcC7BHi3AO8R4L0CvE+A9wvwAQE+KMCHBLhHgA8L8A8CfESAjwrwMQE+LsAnBPikAJ8S4NMCfEaAzwrwOQE+L8AXBPiiAF8S4B8F+LIAXxHgqwJ8TYCvC/ANAb4pwLcE+LYA3xHguwJ8T4DvC/BPAvxAgB8K8CMBfizATwT4qQD/LMC/CPAzAX4uwC8E+FcB/k2AXwrwKwF+LcBvBPh3AX4rwO8E+A8B/lOA3wvwBwH+S4D/FuCPAvxJADImTPJHgFsEIJu+wb3bUNe8hiY9R+D/gTjxsSmd1/5Z6fyz0qmBPyudmT8rnQT8WenM/FnpZPkjwJ+VzsyflU6WPwL8WenM/FnpZPnToHTecQCXTo+Q1ukDjfNYjJ9FiI2AaOEDN/uP7cbnDhAXxLcMcE31MIBPYfA6ILiI3yRwENgOlNAiN5DtxCcKmPcz2S9gxIj8EvA933hWg28QnyRA70PkfXuT93PY+2ryfm6T9xPZ+8HgfTkb9EfvFyAQBeCFAryIAZ8xgV8yc/pioX6JFMIONJLPuJdyBCCtLM+Xi+crxPOV4nkFW2RHz1eJ56sFeI0ArxXyC9HetyMnPt4bAMTrhWh/E1FQjG0H7HQXsdlsB7ORBnrK8JskHc+UoDE2CY1B3yy4y9ny8yaLsYftLuNuyqRZsm8VBm+zmL7dwdQvTP3C1K+Z+oG6D60Xc1uztcBJtDfsyCcIXwHeJcC7BXiPAO8V4A0IKOD0MON97Tm9X4APtGf5wRYsP7SJxN0jwIc3Si6x/IetpHJD3sAyZHzEbXbGkPFRq+uFjI/pXk2Oj1u9rtf4hK6DEd6jYUaftDpezPhUU1fqNT7NOHv37zM+I/Vq6/V9xmcbJQthPydYmwjoMz7fomX0GV8Q7BPtyfqiJOtLVoP/R8F92a1b2w7jK4L7qrTzr7l1Y95tfL2zXIwZ35DQ37Ri+Zbgni64fca3nYUEwHcE+K5QXWZ8r4nqu9KpR+2dm6L5fouo/6kp6qDxA8IR+EMBrzJ+1NS8fizAT1qI3yPGT9sH+OdGgWw2VkrUvzQ1kJjxMyc3Kuyfc+iLW40yRPCLzgQ7jX916xeprwO/fmeb2mn8myTTDGwNXecbv9Qv3Nhz+Cur7/yavS+jcvyN4IeMf3cPhfb8zk0vBfuGH2Jjud/4jxYsf9zEu8/4T4vOxA4Yv3frjU5HNnYbfxBqRymYAc83/qtTTgaM/7b42prybuOPFl/BO/n+ibEPBeyjPJrvLR6T76M9rfj2GI/x6Eo5gJVCnB7r6ZDCC4xbPc05DBqPY+z1QLLLuE072tXmE6wYnt4Uww7jiZL+Vp5P8jS2dJtke7JniA/GWpIN8uvR4iRmPNWjB7ZvWvX7NMY1CL6nC9Yh+J4hWIfge6ZgHYLvWYJ1CL5nS/LfLXKsz7jd0yxkdxjPEcpfSUaf6zFL4Xni+XyPlosv8Gh+SeOF4rmZQe2DThkWNF7ElaNId3pxU2m3G86pv72EyeVQLMwxpeyvMF666VRRG3mZFIqtub/co5vQPuMVwu1LEvaV0mpMfQlUP6F6lXh2II8ZrxbyN1vt7TVNLEzPfcZrxfN14vl6Ad7gMVPxxiYWHcj/wnhTU5lvSZfqVKHXb4p5E4eXM4ddlOc7mzg4G2iUqN68ARVn9S3tU7MFZa9lVpNbY94pz+cbd0ljFDEnzThKU4a3NnlHjLd5rNPIxKOZyI9EaPgbvd/eLgqelbyjUxRBHUUzkY5iiEa8u9vmQjojZ+edm8lOM5EtO/uNd7XNjtnxKa53byZfzUS2fF1lvGfjfGEH8ZgZfN9mMthMZMvgVcb7N86gRMo5/cBmctpMZMvpEeODW8gpAB+ysnzPZrLcTGTL8hHjw1vIssTOef+HzeS9mciW98uMj7Tw/iiPsWEYb+w5uagTMQ9OvcTzY1vh2YHYzvPjW+HZgdji2Wd8ooWG0Gd8sqXe8CkRe6b2ZEqqfcanGzwN4zMeh4pMVJ9tw8IuJvYZn9sEryuMz2/Ey9419xlf2ATTa4wvbpqpvRfsM760Ce7XGf/YQCUrQDI4wAxV9MiveLSPzPyuML66BT0no/iB1wfhDSvFb6sGGb5NYPMk5HXWScgRdD9Un2NVxtcoFXh6VRlft8HfENjk8eCG05XXm6cvnxFwqfNin/SqH7nYHj0by16s1ZQfDaKQKYbs8aNjpeLaTK6+IrZx2lmm3w20ZE2QLPVos7Cj6TkyMYQW6LSp934n3dz0DdPpE9NqZwM6m2DbTOlpANmGt7t2elkpoJOkhAFGm+9oIqKmIos6pXN0538APOPl4moOzSaU11fR/AUmmq+Hk5WEQRvJrGBTxVpdRcEHr+RLTGKlpccWQpvTN7CwyABCuc4xBxHDoDbyQhZZYv+n6c60B+9MmzemfQGP4aWb0z6AfYafcCAW6E5wlxGG36ARAZwyouSnjG797dHfXn0Du4++3cQP8QOD5w25nxtw770ITzd4oRX49emGwBDeAfQZSn/x+HRg7xXYWDx7kDAE/+Fru7x0ghpPYUf42DQexI7qtkZcjQ25nkKu3c1c+8G3h7lusyIYtMDtFsGQBe7QoNma7/mjRz3pZV329owNJxpfqEGtL9ZPVOj1Ake79VfKBTJHEkRbDdhEDjZai+9ommRbPJ8nMmw4aGUlvVYnAx19LbH6vQbz/QZPBe3d+9GwQ/F0QRnxtbVSkS1yjKHtFXt/C4xNJsZuIGvR3JdC49B1Ummy3qg8yfFUQgXSo9k0WUMOzE2Pkdl2FZqbQRthaMD3lApRsmbZREwAYicLL0oBhFaSMJuRSjlfOVMuVXJ5dIJXubK+lidDE5VyZaFWQUs8CJNhqwKIDPfZlaqKzGgnFxuw4VBofeMcmidgq0u5BUw7v9YQrJ3JrXFGfTqKvjgUxXK5kJ+u5As1KTf/UilXr6M5KjSAoDzoqYJo5qQ07XjPgEzPhPG3tpZbLMxlkioMmSlUpS/7zU6NrxAUz0Ia1gqLxaUimryKr+eLFWWgSTAChdZdqy6qcE6nLFuq1FU3EiEkND2LK8VSXrvGyDQQPb4RIHwV0h4lU2OVUqmwyCZXFlluJPLFOplZ6CHDQsICg6kebV7FRmWUcg1EsTI+XsCYbHGhhCUBDZtL2lcpL5TWq0pNVBbXdd1QxaN1BxUkaK2UO6cME6yvVCvryytEtkIWlIAbyNfFm5SaqqzXCrpjIBINbUBVL7INGEjBOsaI1qdUEEXyQiVXzavomIAcNAQk6wXN3IuOOjao/EKJowEW+WpuWQXH4Vc/2sAofLAkJCDZwNCOs8W6eEDXOl0QDzTmIh78Ggcxr6xhhvPrPC7olEAchVVoctAWUDCU8wCYguFqxC1hIareSnm5Ul9jKxyLuTUyWBPRbi09wtpIh1lWxfIa5jKJHzNLxTIZHUHwpsI57HcqckPhnK2oFPmQUTDkAvD6GmYB+ye0bfoW8mT4zBDXaqGeI0xQY7jQEOQi6ENHrTEHQLKK1UvJCGsHl7K4uGiFcLXC5UyOynrd9KBCD2oHpBcSDjKuXmAAcJgDanVB/mKT7QZQEkSNM2IiKEVR08lpstycKouc0hU2nZgyy1MahHZC6oAS7ehYbR2fGqFeAgA+kAJQbbEKPZegQuGmAtUYQphwQmKvxlzVVipnyLOeK6EZJPRcX1gtUnXX1kHalKne6sXVgpZ5QFKvLEOzxSydrpRAXbEa5Jlcsa479JmVApSKOoEfbhwD0C5OF6GQG3q/t1Y/R0bNoNH0jmWzWXSOFxZLOa0HeXNLZKurjFJWHrHx5dYodb6FAuhCBbRoRwaQqCVPVCurJHYD4+kpwigvFaEKC4IeSPEsASGkVkvuwTHmMVapVGE8geyKTO/V3B+2nsubzP3ACxHK8wj8FZoMFK5J46liUXcDJaIzMLyQ5ZoQ2iKrnMXQNRXVkDmAQEFR3iKPWC9Uz2WpunDYr2mopgyHTxwrG6MjjdBX5bYeAi4lGFdOFEGvUzRGgOoIAmv/HI7RFiJNRtk0eLyYL2g6f0Fbx3JBp/dA64FRp5RbgGoNlKDG18kMlcWGI9dvOUFHy+XzdeKjyNscaTl57IWm0Mh39FwS5NhorjqD0s5/ulgr0igzSrU7R+JAi+NqAQRA+TgpJ2oUqql6jtQbBW0HSpJg90LlLNrSgpEYjV7CODlaBQ6L0K/HoLWWeTRZ1U/mhPXbORyBlweK0BoIHXlUx2+SjoF+Es/qUdEzS4/jjOXKMyAXMOZMobZeYtTpXG2MTBFxnwgtlyoLuRLbg5TnpQYZKXTQ3kT572YO48WqjMAaUc2dIZNYKpg3QW+RPq78Wfg/B/9n4H9FuWrgroG7Bu7aCoxsJgucfaggPaxFoAfHPxVYKpZKmXXs3Ew6IW7PGlL5kHZkHPoN4NFomu5KxIKNOXabSFBzKjdBMklA4ZhKZp8QNWAxZyLq8jAdWSIMSoNQzfKAvk22G1PFciFXPVoFXQ/rSSfRdLvODivXOfg/exC+B00TkaiMVWGoYnJxKuxj9SJbntPWI4FRrmTxqwKv6kEJCKmto2VB3xIBoGLl2QRptl5ZM5/T8pLJTamsySJ0+WWMAqktl2GC0ue7yXaniQYEdxMrjGZJFU62Qrs51RYiaAOpQdCwil3M8gjDgG65fPlitX7upP6eUoq+2pAdwdqibJ8t8uxqRU8y+osOtxjTa0CDaCsV6+dUf7IlWhcvVu5Ybk1qFZ3HoB1Br5ZqW1HuHKi2Pqwf0GsUaQfxMg5FAZCWDEXwfS/owIs3nSlCJ/ZCCOj9rrMj0CRGlJ/DnhTglApUK3XucJGFws3FQnVsvUoCw7O4dvAs/Z7D3xGCR0hRBOlAyfEXStCqUT9Ai2QQxoc1hsIGxwPsx4vCzb24dhZ/zqGtuK4Vtc3KlX4jTHcBf0nKAYHxXG1F2wkMlKREbMYGFQzVhWqqiCM2DikpHQa6j80RqBWW2eJnuEbiVi8q2NYXdCnjGIU5hKZIIMsDhBT3R4IHhdhpphjkQoh90GhtQRqsFV9M+67kQEXS+e1l3FwNjVeiFUC0O6hTQ8J1mwU7S2pLZpL3tEtytlBH6Wy+D0f2LitnRnEWEmKYDe1G2MG1cdLpPAXtqVBDK4/KU0PtjsqNku+hlAVWc2d1r1ot5Gqgv5JnCH+nYCgsLtakhMmj28p0vATzOCm6WW0jGlsAyH9zbPAsVVBFr5v04bqdUo+yUu2gjLBRQRUl2Wx5+ag3YLehzuStwZy1oLpyqmtBdS2qrrzqAueSbjklJO3BUYima8ml6UIBZyHQL7jUY6yIYiuHyq3QK4zQ3WEAn6FREVKuWG6SrhRZpnECQlIz82ulCYKs5HBNRNtPHpyulMchQowCh1yaV/Ik2wLZurJiJZGCKbbKyyaY2RyuKoIuXK0TSrQlckRAC67RLJ2DjmGfZ+2A3x+MmK/yjRcXcSgyCVivXMQ0gCKWq+FiyBnQBGgJxfY2Xx+PHTjxZ62TTcuCJsBTf9RMQZtR3noFP/1j69DAVnV7xiEB0gdacL6whDUcWkQlvrrOeqLMAofVoA4wjmRU4jLgoHFEFQItvUx+qOXdCOIH1K9VFJwhHR/ludvmoMT70C5xsQSDPbjslC0tMvZARSbRWCmmhIVtlMcuqUYVOjmVMh1Bc0kENWAYJXDBg5ZO/PnKIpV/2N4AxPqzAxdYAwWruAhaZaB2DmZzqwBpOhQPZmQBE/KCNgCpVSsw1gMZTjJ7zK5iau6RumP51QuDGZpmpic08c3OhqdSnU9zMtk1hxse2YyW11cXCtVsAbR6XGNzrx48iD8j+HMIfw7DzwjiRhA3grgRxB1C3CHEHULcIcQdRtxhxB1G3OHD2M5xYgLThSUV1o9VniNXN0w1puyIXpYA8bPFGg2ohOy6WfUxHuc1x2nOQR6KsQT7K9UiaJMnBTgF8hPFx6G83fvhqpew0Ie1VV/y9RHypP6e0t+Hw5QHv0QSBTHBdcGqf7B2U+HMSfIi8BSBEVMykdNVBw0YlAxX/WblKdZgiFLFWjIP1Y2qh3cJxu+T/AEZTqUEbT8gRQRKmLM0lNFYDGhvlzKpuhvyBdITE8ifUyparziagrjNNmC2K56vGjJRNVte9yrl3iatGaFca6DwroGGs3YI/g/jWisJTu6qCyDq8rVGI+5CQ404koT+QclIFUE994BSsSqG/SF8Hbq38pQKS9DcqxTajSovTqV5KXMqx65ZGL/KxNEN6q7y1dFdQ4us0O+LuKRMGBwtSdaqQLlwhgLhM7RkOLqGoWh5wQt5RPPsKIE5z7iAhothiaUlGhYK9IXJb+UMLojCmItGu0FP53mwF7NRU312BphR9qzTTgzrOqwLaxv1+KwvIfD5XdaZEajmlnmuZTTyo+d+4zg/gKKj3xAh9DJvcB7aRWkBZ7vaiv/QeCGPC+eFPK/yH6U5YHaxAmKrpxkVqEvuexlNonYyV86XcD6yWwRYvCwruk6CPmiT2mMmh8tRNED2SbB0lRWyDOjlStkoIkcLlVVQTs7N1YslGDDmMil5RULUKpVDa9f6IQbIJateUCO2lWM/DAQruGbhh8EYRmAAFpY5iGehArPVEIYxN8oWZazP4gMC6ELtV6FR31x9CtMV0kvRJOZ9i5XKTUVI7OJ6FVOeXawW1+pqAHlCzo4fZYSwD8F4mYPezU9Hnyji7gFqBrhYTszdoFSp7rwuGyuYRuAavS9fWYXWrHwFENp5XO/X2cEWCw1OLa2XSqD54IsUPRZsrr3bUHrC5FmBPs6r9JMAmav+NI+qqWjROXhGaHU2UQYlAxtYGNfYIfG8LxC0asSLYM1mYT1gWVWvlK1k6PW7HjuON5piuFqTy5/D/RBZ5vOxIFf+tdL6MnZqMll+jnX+mLSqjIUL0AvKVVzIrFasPQjaI41gDVnbpCBMsbZAuWfNESeVUgW0SphdKWALimZNB/VmddrKdRAa8xq3YE+Z2rFeMk7wWvfAol0BRUnOAldPp037//LqhImYzooC4VgD0ssMorgNOHWRCZAbhDeaMDqgZHBAtkkQ61gZsJNBIkIawSvuRZk1zUvqMOsgl2D+iVbgHS5PlTr5mZVcfbaSxcVfhf68tKF2mG9qLBZqNSj7pNYpMZv9rdHy1ktIllBok4Q/UevJDaoOQ7uhfZ3IlXB7U9lgQ88arBrp0ZiahQoVzhYWsahBuOHzJgQk0aA4ZGYuqaK4tTJh9b8oPtzAXGiFMahZAjhgedVGz41BJ6qRjqkWBeRXJCwa8g5pDtPyboTlP5tbJuxAKyxUXAA1S9qTUdCjYbDTM5VCYU15QNKXlXu9WoLJI2ufMDmmVV6dXREWfXZkEsZo3ENQPXYs97t+B0reZXBSsioVqeJeSU16iPdMtYjbH/QpQQs3N7ZIowjn7SNy1NpkI98A7jOS2n8hLTPrgkhXW7efnU6ihl3HHU5fXKCrmOvcg05P22Yfvkcij3iEsfBpTohaSpAql4IHzXrGh3Nw1qnXuhS7UqjvBBmeBXUnxCBP44PFMohITK0KViAeBsMstYQPu5gPw8SHQb2AU7ONvbZx2FPDfVt/Xbco2yNN0Gc9OOsCGWiSU8H7aWEKMhY2nz5BKRa1u6AR9jjc1MoNBwrbZKwRAwH7acsCdElcPrFm6VHHpB3KGxq5LXa7C5hE7G7oX+DUW49jel8vqLe6kriOSNPzeP5GEG/WYOyFSSsQxpy+VAGBNVlXaPClVRU/qHeLKxBtv27vDVHrJVfbCNCAgAz0NqKoC2N7Q2roWjW7+PHpnbjurK5+EeoB9hgFvZ8hc33EDfJUvGcrpHvairPmrEyj1lRzjRis8lqh3pDVfpid3lTE+RQWiLnDZI5BDdv47mJtXvmOcW9xFUHnKeDzLqD8KHogh7td1IKpReJaeLmivKxL4JpYgY480HIpeFgvNfjNXV0KLW+WjKXS2QRM2cbS09OJsVk6OpKeSUyr3oJFZi7CdCecSNzgJKnafaZYX4FhlaZ9OVBlA/g4Db0m0RPPw/Q0V11cAfF0uojPumxP1pyYpLk9GjtaqGN/w3KVmgxhltLVJE2WWP0lfVda63bS6kBVraKKorGsUaPuWoUyDMgRFhghQFfCvTXlWUPVLiqq00ylVFw8hw+2lHD2VOJJVrVwGqaXKzmcN1DMpGCbytR8ZeFG7KLeHK0JgoJexxWIxRU8vhPAJSp6b863wmstvtP8JT00DkO1qYeWK5P4UgydNZmCuYvpE0HMaEacFBJ5CsKD+dFoUPXNR+tY8XZOU7y5FBSQUjhTWq6ioIE5J2K8p8mDcji6DpNRU5UO5tbrFT7lENCvYeVxLRTGQ4oT3zAypyqIjvOwEkIY9GdaSiKPqUJ9pZJXUYSnK8f12yrspw8g+Wjrs6Y8dG6km8uivG6q9fpBFuAvm4YBQtEex3EN8cgcPlMslcxIInSaSSiwznGkNt3Ye3mJzSKRJ9R0R1HW81WoFBGAyg4kfF0/9VWvjMLcUXno1/8IvfcSrFdwNoszO1p0y9N8lup5HJuY2ZRo+rWoaxiDmFUpCDt5jJC0RGiuwFP1jUP3q5gqvYeOH/h4fghDJLhgGgO9so9pqySUzFYTZexpcfeLsMpm+U0Y3iwM5hZRz7ihAOVkginatg7pssF6U35UY3Buifuoy8v8dgwuL9xcKWOnKOZBXuiBnpfyqWOGecFaxnh20RivfXgGDWoBuWjEZ1BG/LVCqURVDjP73AILDg8de/LygSIvN+luWgDJIvkYkVO9JHDSaRYJvrh1/Ki5hEm1MVEslECombUREDVaOoU1lPIzTx46NzIkPQZbEow+NZseFsGCXMOtc5qN+3KMDmP/w6ZBh+wCBZmR+gu6b/lWuV+pstWnvHxgxacPmlCm6O0tU4ro+b2Zq4hG6Ok6vyI5yo8QwuS2vDxeqC2q8Co092JZV0yIXVzmgXIlw4djgua8UpcVsrKVlQeGrBpOk87UWLhNmsLNX67Qw1/cunGebpud8ty9vloyqWVF37OCW3CeFXxwLIC/NAQG8BTlGcgCQvUVwnnoIaTAWrWChVqCEqJhSAVAr60SBfWhpLOwcrj8ZZ/xEAL300hSw5QaBCyehsBnKvOVRS5wkh5mRzIXSxxoeecxYNYwTPIqtVqa5/9KVlyqi8pbrKF27YOY8fRhpIwTmJwowmHt5MrwYkXUKDnUDiB3GJaTRQsbEj83OlwEgtYPkj2qF2/GtDssizl8TjVfrJJ+EinqSRGd4MEeDExpcQfGExw2V3Nn8eTzWX0s2r2Km6rwo92y/EtnXfmwQIiWK1cqJSqPqqzIBlDjK+IDpDE+mgMVbh3YCJu4BIxlUdOVpVNtnlodpn0hOmMbr43TQKAd07QbgPVP57RQBaQJNe8Z6rVTVoX5hJybDguZEVBeI1mHE0cRE8PT8wCmYBwPq3WhpgqOuTVuYiAwl60Fq+DiCqo/dNzspsI53v9CslRSSKjySMbaRgySIsq/Ar1iAl9OJZoCHop09JqUpRapIDpYjLtzoHJ6lwqgoKpYhjVr6Od1rFQsXVcOVIZVauLeMp1M9tZouVSdoRVUPhJ0woJp+ICWZk4jcrg9x715KleFCMyWH1gorOROF3HBpFQBAR6olHEVfZFOv+k3Mf10aq5al0lffJW2FPXsbrxA5wVhmosCHLWSGi6Z90zGj+Nr05lMYnp2HleRoOgQlZhOzx2dtGMm5ugRacJECDOVmI2TM0zO6fTsJGrEkenE7Il05ob5xNTM7CmY72onnbHuFpccve4RxHR6Ppuey4wlVChnHuECPQpFOh12DPB7g3jgera4yis7ei0fRwcQBtz/0dPsilPruMTQq114KArVuQwtA8r5VZgQ0GFVxaokTQ68qxQwXC7UsfpYTfLR6UvArtn5+NCFc4Y10INJacajjTR8++WQYxCES5qVX3xvsK4zFzHPuZH+HDptnnWrqah18I0PsvHZRjq4YwZTQQu0mN2AJ+NCi9YhMJjr5GrQ3Qo3KU+digfHaWwt1M89lGwvny31UGH3ijqJCpjZh3QxwoR/EbfK8cxKBVXjNVE/LT3Mr8dIFVyp19cSIJZO4+xzBXxFb69bB8s9KyCYlRvENR9+XF1f1f2jkreGwiLVGq7YFYVL2q7mBfD4cBVriPo2F7jpifMLKgzIBp7lxOqp41iEe6iAnwKdluafnHmYTx3FrEn4y2h1p4UPLxLx9MuhXDpR3brwWOgVqJloqN+idig5QsAqmQ80CFyXZN7rddvIRPopvlS5XM2trTiEIL1faYozEui8RU2eME3FhWi7QjtjuXvZrS8m2Lk+bL1iLRRTgpzbGt5c7VwZhuE8Thehf5226ChPZqFIFmX2GsnZbzDoIDSpcMjo7Fqu7EgQyWjBbEPMLPZAXF6w1UGf5QFKrNmwcgsLIFlzZ4u4/1bAtQ8sbxe0BO8iHnfCxlzCKGHwKPBzvjAFPQFlDXPfyhny8Z3mgy69VhQVK4Yakhiml9VJOH3QWQt4LCVP2io58CAGHUYm5RKU1HU6jVVbX4VmcE756zB/LeLp4/oErs9ZWdbbAGZN1FEzNDcFzPh45XuU9ru0gxiJg0PxERUJFdQvTaPOq5+U5jDaQWGCvNCFRFZZgMtMEOauhufcznA5QxtgJUAQ+mAMVpGciCGY2RVA97PtUmjk2bp9gYBkrNaePGewnqjVoNhwtJpZPGDhxNDJYElqIpNJZ5QPx6rEuPKb14Wm09MJqIvqIs3AvHx0mMLPNU0758o3lUGnccRCot3cSEKBW+MZIwwmoJHjzhQNBTKpIwdrq92ToL6P0c4XL3L1NiB4palcOIOTaB9oiPj1TxbxOBhO3kkdyNDpMB79erJNKC/tr8EkkE5dw7TvDN5DcS1XsEeX8Djn2nptRa8daP1PD5EwCONjvzCLwLE4OY5zF9w8573qEH1Gi3V8STtmc5g3vxZbnUIyiBL0/IJsORrFJgwILjknwWeajbVGTJivJOhijfAczDz3WXU4Q+zkUt9hS2rTMb9tsh+O20L2DPoW+Hthh9Dmeb+euWK5fmSslFtdK+T5CEbXLEynQMvDiuFJDggeFpB4lotG7Z6pxHgyPg8tdT4+ms7MQjs1LNR4Yiw9nrATaXVL7bBQ2cwYKm/z2bmZGeYQJU3oYbgvw4oJSCa5jYcHPzUUcVzTw4UiXIo23b1OLtxct7VAUpON6lUqOQ7vxdnnQRXS6BmcixJuBDJoOx5PgUN0rYuceaaqmS9M87aMjU26qifuBu5bOI7a726mzRaqp4uLBX3/0c/KfE1dTJS80ZCudggRmAKpQ0MuiEneTqbBXd9lmKFNa+XT30ANlNziWbyTK+G4LRigyfI27AIIxNM0DZZjHOb5uhEoRU2WKSzibF7lizALgQLF84sVDqr6GnlxGdZzdJ6WloC7zR0rvRfbYyLSJdmlW3Qcg+x3OE2qIF3ho2YEo9dCvVqAaRC0JxniIzn75o+KOZy8ABzCK3pyOydQEc7dcn9HvMLcADVj1HGnzTXEqN01nZW9FYugpwEBNDjRtXGoOTkEp2FKtkzb2CETBIHXYzpSciml20Sly3gKWvWbCLn+TAvwhg2Np0jsmBl9umGHPaie8kyCeD6DGm1wzLo1uJo7O1tZX1yhnRYoDpqbjhewaYpLdjnCU3a/SM3RgAcc7XmMj07hfQMoUWtZRx/4zFFcA4TLQl3ncPXOxHfX1mkBdExabshGCF0Cp16mn/90cYFeaO9d0dkzM7x4Tg2Zdzv1gj0fQaX5YWBVutyOYm1GL181kw1UNexkpLYJviGoGlwvtwmy3fJpDBThA0GyWx7Kra2N4TYYHR8FB+/xA3BcD3beSm1xbR1GUFBzaOsAJpaV/DpOHTWQXV9QQVyEiy/TuhSIrjwuWPMXfcNYR3WJMyi3o2q4BUUNMChFBPNmblksZkI35k7nJFw0PjubSY7OzeLkHoaRGJ0zmc/i1ld6mnHhsfTUFC4ekGtgPD02R86JTPyohY+YeHLuMp0z6WySmI2lp2fjyenE+PzoKTXU1j/bKux4Mqt35GDs2tHsP5FOpdInUHO7pNkzOTWTSiAqTs7sTGIsOZEca8VnJpMYS5AGGDM9yeQCl0SC+bArBFBy9hQ7+rUjk5hIZBLTYzpEBEbduFWUO2Yy6bFENgsRzENOZzNztnIOziZOatb+hVyNLmerRTlejoe88PozX2kOUd8o8+QyWMoJPlCWhkcQ9ZAgQlqe011va5WbVThTp16zTuKFUHPRXYBaNDQ8jgJvo5R553cb7dFUzZNH5hF7PI0ou5a0AT9mZSPM+j7fssPpF13RLtbGefJsGxOKtQTuGvE5ezr0TKAq1rJ4uoX2nkvQ9dbXzEB0oZ1xM/r+ehnPWJZwJT7E8p+zIUotuyITydRsAhSssbHEzKzpzCTQTocKaWf2huSMCmQn0yfm46mUijIkPUjFyO3oQSrMOO5BKkIuaVkgd+1Os0NpRo4GqBnpBqhC7KI2p/ptDqsB6sikAaod5GzdAFWQPLEBgqCiNXAq3iF9MoIrK4NTfTwtztVadTjpfD5uHZTl7FVYBm/2Z/1f9c6AlKKjPNRUtMrYAkkaS3ANRWYNW7kXdy3wSGc+z1ehIH5Q4FdUZKayRlMT5tXjcBKXfn3FIFO4UU+diXJ7SzSfbFnTlxIizgNAKjE9Pj+bhsIeB2nAcHY2npmF+sGP+EVNF/sGYbgo5dZw4Qo7zWqlHNdav220xS5muoLg0veworTqa3mFyK09I9QddU/FSxDo1KvtEqny1yu8BdCveyydqslVz2nNwY27oiHWpjlsWBPyGbhBOXBIExrok+aJwsCSQFE9p5eUdAMlKotW0rjjU2uIUrPCZYGadssVTo5e8aqRnC8R2OTlg6zjFkeIv3G6rR1mh5YsgZpeAEVthyEmi4pTExo10DiwPEzuQZhb6z3VcAYv9Bb0RWDD7qKGEqkyRnbss7wlFoIxtmieyiKH3oul2e84dDCA12AaUGI4ylP0UdkF6M86zuiYi2eMFqemSlWWizBVMMWvdwFvIypfkVccPKtUxNbhLdqeCYO7KufBaZcS5i104JpREsc2O539kLiRa7LGQoYueCaSxaUG3L/Bu6CoXLtvKpzDg7soggmBh90JCGtaXcZ2F5/vg+rg8StUYz9cCVLBMyuVEu9QBWuQEj5xtQ2aHDRQOTY2Wjkbr+FxLDXY5IF7uLQZ2eRDm+sDTegMVWeMru0tFOrFRfO6W7SwypWtI+sWtxkHXpdrTtRAA1rIu3G1B1ESQS+uD9Hary1WxUfjx9ZxGmHuDYCTZJVnEfG7i+VR0FOntMkLohgvwmBZX1wh9cDaVKBm4cM7xutoGwF+wnameK2axk/c+QTpREv0ZAcEexWonWxjhPYY0uXEWTJgg/2MCOnAyHqBjsR6adaCCxx0zThqXdbnaaqe87A5hYVcnvZoEU23vmj3plvvk04Va3TEDjoiCo40THWXcI8hSs45XIkhdxg3G01ikIeVVAWnmgCwtaAwbRAIgZfNjoRpNR2wNTL1YzNUEDxRWMhCJ8MbA3hmDFXGoOyjg6xbsIwERGVXS+/XKTrIVqPO5amR7RHSzEeJTHXbHHQ8bzuvZaSrzV2wj72yeMgVd3m5y8UYiyfvS4ILwUBKt01wS7GHeczYUD46ygkTgkX7pT9oVnmaMs6gpMpgV8ejY3KPrSBn2sJL9gMCPnLBUL2ilyRDfHRVS0Ny6Kupck9gIVdFgwfldQSCZXPa7cPTdGSPhE68ygkYdGgOa5C7k3osJMcp7fCxNguTH1s2sRhqFUgyxuPT5xf8/D0pwCkCQK6eFOCUnKyFYFRpdAOMLDZRyqEVMcczvOzkzcG8sK76+EYi20Sjk/90FnGF5o20fwYq/SodhkVzDLgfqXeiCyXUfWqF9XwlAaCiVsnTcC8dpuaL36PncB6II48+IeFdq+J47UP1Za2Op05pF7shBQFe+Bw9JxCe+oRSweGRGUSgSmh0ZGdUnOumXR08Y6KvZ6BdHT39tOyyVJaWSEYFAORhCC1iAclKMW/CdBoL4coar0fT7Q+tjXExsSUZ3Yr7KuV1wZt0GIWkq2Rv8z6y3gUzDhqdBOuBhrWgPAv1Sg6Vp0KOb4GfxmZMThRXaBKnx2bsQC/3BjIwzUBrNnhVjWSSPibAcgsHNOHlX9GrA/665qfwbJaGQQdxdFmfDMPWIZIoo8z7M93stpakInyiP6vvr3jWqyB45NyC/ewpbviYDhVPzUzGRxOzMAEOxTOZ+KnRuQmYMihPfG42rbyjieOJlPKMptKjyjeazoyDF3xnZ9NTgJ2bnVWBsfgMThqyyjcGkw7wD4xNAiqRyaIsjMPsYgxQaZx1w6zIj/N6nLP4xxMT8bkUqMrjiexYJqmZBGBuHx9Nwbzey8cJ3KhA+yEZMBUG5EQqOQM9cjI+fRSFrG8yOT6emFaeyeTRSRVKjifSRzPxmUmI05+cnkxkkrMIgNqN06Qkpi8Oc5zjCeVJJSZmlTuVPgE/s5Crqfj0XDyF3wywVt4pKIsEOBPjybkpFTAPP/imIMpUAgiSmFvfVHp8Dpz+6UQ8k8hCdNPp6YcnMmnln4mP0+JBcCZ5MpGK42JFaCaTmIJcJ2dSp1QAHNlEBhIDUHoUsn1KeTOQkVn4oDVI5c7MQoqyMM+DeacfZ2WU6exUOj07Cd+HzUGcyqtnFdm5UZj0pRJZ5Z5Nw9SUtGoUyIo3m+jIkJ9vEZwU4JTyLdCZVrw6jV+Q1Iv/l73vDoyqyv53JpPMzJtJcjOBEEIQRMWCYoxlXXdXNyEBEiGwSUDY/X4Xh2QgI0kmOzOhbPmuIKIoKjZU7G2wi2BBsPfee6/YQbD33z3n3vPeeVPygrvfX/vyx8z73HPP7ee2c1sy3gnbF32JjuisJKCCcCd+vXBZFgDRpc57xWs6k+NgIGJRxshJxgQYcRpEGSt7dQujXSGZcWeyUUzGpt4utA8Rgca03E1LL7gxvWxZ0DUz1smcoBmdeObiObuwOnERaDMX22UNUVuYsXNQ9y+Fbh6Sce1kAVw7iRdNesxLJ+HrxYsm3cInTV68dhKoBn7dIqi/hZperM0h/Bbqqyc9YiB+vWKIvrZyhDSViJ217W7a1Z76u5f+7q3t99Hm/fT3QP39lf4erPl+q82H6NDG6u8EnYbJ0jRc/EFzTdWuwtq2XZp2ERHtZrb+Him/Xh88ASlBvmQ72yXNe4iVLrTwiPMUcIuLCFxCIEXgcgJXE7iWwFoCNxG4mcBtBO4kcA+B+wg84MJ4/hpzGggPks0jBB4j8BSBp5Wj35iOnlGEGpPwLKXueXLzomKpN1leIpt3CXxA4CPF22DybiWbrwj8QGChW4MlBI4jcAKBEwmcQeAsAme7MaipZlArFWGaSTiHWG8kcCeBewncR+B+Ag8QeJDAQwQeJvAIgccIPE7gZQKvquh0mNF5TRGONAnvEOtWAl8S+IrA1wS+IXBUngZHEziWwHF5GEKvGcJSslmWp0v1ZKIsz0Op9ojT8qT5b+J0sjiDwAoC5xA4j8BFBFIErlDe7SCugRtsF7vEtXmGz3eMS1wHFoiuJ94PCXxG4AsCXxL4gcCPZio9GIJLHO+R/p3sEid4SEgInO7BsKTdCiKtJHAOgfMInE/gAgIXEriIwMUEVhG4msBaAjcSuJvAwwSe8uim41mI8yUu8Zyy2UO8RCzvEthI4GMCmwh8RuBzAl8pcLHLLOrT8stVc3VGPpUfgTMJnEXgbAIrCZxL4EoC1xF4mMBzCvxNvECUlwm8QuBtBW6zIvY+WX1E4FMCmwl8RuA7AosKNFhM4BgCSwgcR2ApgZMInEpgJYHzCkgOLy4gKVlFllcRuIbAtQSuI7CawA0EbizQhXkTUR4h8BiBJwg8TeBVAu8R+IDARwQ+JvAVge8J/GCm3kt1kMBVBK4lcB2BNQTWenWcb/Dq6nSTV2bGpy5xM7HcRuB2AncqcL9VqM+T1WsEPiDwEYFPCWwi8BWB7wj8RGCRj4qZwLEElhE4kcBJBE7xaYk8jSinEziDwAoCZxE4m8BKAucQOJfAhQQuIXApgcsIpAisIrCGwA0EbiPwIIHHCTxB4GkCzxB4VoGVbjPDXyGrVwm8RuBtAu8Q2EjgAwKfE/iCwJcEvibwLYEfCPxMYJGfKs/RfiSl3HqAN0XH8AtLNpb5dUt0sp+KicCpBE4jcAaBMwmcQ+A8v5bQ8/0y7HWynSabCwlcQuAyAikFPOJyolxB4GoCdxG4m8A9BO4lcB+B+wk8QOBBBYaLh1QE3eJRiODDstarbJJRfUIhSXvaRM+SB5vUWLpM59gVVtbdYFDTQuAmAhsI3KrAKks2biOr2wncqcBVls/vktV7ClxuOX+frD5R4E3L6lOy2kRgswLvEs/FBDZaYX2ueD6w/PmCnH9F4GsC3xH4mcBRARIbAqcTOFOBbyisLVYQFxDPRQSuJXCddqWYUYxvChC6mbjWEbiFwPqAFsANAcn7s8x65UqiJwNU0j8oJBvQRUFCi4Pah+MJLCNwosm0XJE2q7TASOzhoLQ5Pk88EtSEN4GwLE+8JQkVG/eo+JUIVrirjGpDelSCb34EEQuNAxK/la8M44/1nerL852Qt863Q8WOYk/pcAAyj8piv596D35f9OEhF3L8prpEGh52VRjDA/g+Rn6V3+ZouHqkeBY6esKdxduweuk2gRxL8lgsFytDMRqOUYZBaDibs63khjezpWxvOdWSQYxGjuPzdMzBoN9d+42NfZx6yPa/kEO/4pb/S8IdJ+d60qO9keNTlWN1aNjEDfohT2VYq/KozubReHj6MK9qqcvBp63cJ/3god2nL2EQKL261lUdhEqTX5EveU5SHj8TQBeVaHiWGx4NMsNj3PB4kBXSE9yw0UCDQMOTQZZZT3HD09zwDDc8yw3PccPz3PACN7zIDS9xw8vc8Ao3vMoNr5EBsuf1IGbPBS4uCpW/RBR2kkN3me2rlE/PK5ZBaVUF32j+q4p6No6/yyG09ORW5cmTLlYjXs9nhjfyWURf5YbX8n+5NB8s55Ayfslf4naYKKyABzxyNj47ySmATNodKmkfZmf5FFjucuUOZooc3kiWC93I8p6P5cm73LCNsf+bOA4asT+ouKlsb0TD+8rQgIZbeIFs4eF9xg2rvWgoR8MG7marL0uhR+QoTKbpMjdK5Dc+lMiUMn2nTKtUer9SznvR8JOPFfv3ZABHPypHl7vTcneRXwZzpTt3Sz1FDs0kyxrFcouXxfzufJaH25i7i11yXCf9vVH5+62biejjHhbIWX5tgFSs9GMqbnJXhyBIf0UglB/Kq7rBLYmjfkk0euXYT8biThWLNX7Gfw5P3Wpus5YbruOG68kAHeS1fv2C6iCIXVrTfpMhg31WBXuz8cvzcbwc9Umfnlc+fej75TX9T3KQKH16yV1dIu4wKoKhghD6JX9/553xL/J8vBxdSs9fc2d2Etvo0yFy6Cl9elvVhc8MFIh3lWmLzXSXF01v2kV+hByxSvfv9MXzW/EwNDrrVKPzLe9fvydDbtfDxXXg+mZXtSG2qhh9YOf4hxzJSo7NKjd+MJi4r/Mzw8IAMyzNZxVhUQD9/dT9ywrjIgj+K+X4ZSUz+/8Sn6rksF369LHKzIV5GKnNapRxiupGj8uzudhVvBGU1ULW2vGL/VUn5o0AzeBi/54m6QTXOp9LltIp+tHdPd1VB1R7xdfQC1WOP9awvNqZeLr3zKs63pWdyfRokGRa5qouEFWSZ1B2j4DnxBwe7QJMkKBTXZLrlBxcuwMXGxZL1kXZAzUjVi5TODS7bzvZefqMe7kM6tEcsdqZ4r7WpbgcfVrmdsiF9W7JdWsOrp3TufoMb6DkubGvmNuY8FHnHFlZJrOpuj8R39CviG/IHnHTqw3A9ISTV8TlKHmfgk8/GLnD2wo+feZUMl9DGX/pJMVfg19f9V+KL8guNLuLt2HiWWqrXPJblMG5t8W5yEqCbCLfUe3EQncu9mX9YN/DYmfZmC0iI0rEqcB6pJSVOQfd71ak04D0a0k6WJNKxelB2bK9Cdn0lttOvBiIG92m4zPA8TTpeLpJWpHuX4k4E0i/kaTfm6SzMiNyNpCmStLhZpgrIcxvoFQ/t8I8B/g6JF/U5DsH+N6FuL1nRfjcTMel4jwgbgbi0jyT+A50Wh+A8w8tzvMxvcB5jcsM+4LMlFwIpF5Jmms6vRCcrgL/XrD8uyhbdC4G4hbg/MJK4CXgY430sdYkXZqZ5kuzpRmJGyGQ9y3/LgPHDdLxYSZfCvhS4Phqi29VepmUissz4xcSVwDfFMgYK+ArgPFyYHzd8vDKzEK+Ckj1kjTWdHp1Nmm7JlvuX5uZCy/4MvhC4rosEbwuWwRXZ8bm+mxiviaz2NemF1JI3JAl2Bsygy0VN2YT65syM+vm9NpVKtZlk99bMkWhRLzoy5DLF30Zpa6JdmEtEeszRea9zEpSIjakZ0ypuDVbim/LViNuzyasd2QK/53pxV4i7kpvKzTJ3hTdnVm892SGWSruzZTyUnFfpliWiPszw30gUygfyFY1H8gW8oPZJOGhNEk4y+cesbdvoyjPq3ZX5TcPEwUV5Ti78oWCIdZXyf+Caaki8KQW2A14Q7R5sKkJ9ckuAdFBU38/ddqKImlVksMK/PgdPFhaBEHqB0sHyGgVy2+Z/g7S33L9Hay/8Pxo8Yjb3fCSaeHwUumDONhVWrtDY4EYCT2V/O6uv3vAV6aoso8UyYgOE0OdGHZ0Yugr05BhmBPDcCeGnTRDKBfDLn374Be7QtbpB2N3gzIcgEU+mBTUWQsqDBk9UDKW4Uuxo6HfV6+/VhEMiH3VYEsZqtVoVxn2t2z84gDpIqhgkXKMQVxW7lshygfLMCpqjZBPznEOAtvG0eIc0PiWVu8sznVVhEJFPhdPWNWoEVxRXib5z99G/gu2iX8vcSHw7yXHQRcrVXSxuNSmrZc2l6FyXHLvL1YB3EcyXWFn6svVXuJK5corrgJQ1Sd3ubjGpR8436dqFNnsi2m7bpvSNkCsdmlNmldc78LRXVljSKwBWM1pfnED+oyB3LgtgUhx+DWGMUTJwG9g6Kng7yQcquChWjIk9+8tSfLjk+BBJVS1XMLGWIZhos6pFtVrhh1zMYxz8mG8E0ODE0OjE8NhmmFYLoaJTj40OfkwSTPslIuh2SmIFicfWp3iMEUzjMjFcLgTwzQnhulODH90YviTE8N/ODH8pxPDn52yeoYTwxF9M9TI/ulgu5VSoOJ/pf7XeskML3ZWYcx0qjltmmHXXAyzNMPIXAwdTumMaobdcjHMcWLodGLocopDtxNDzImhx4nhL05dfdwpqxNOdS/pxNDrxDDXiWGeE8N8J4YFTgx/dWqD/uaU1X93YviHE8N/OZXFP/tmGC6OcjlxLHTkWOTIcbQjx2JHjmMcOBxHqcPFElffGTpcHOvIcZwjx1JHjuMdOU5w5FjmyHGiI8dJjhwnO3Isd+Q4xZHjVEeO0xw5TnfkOIM4ds/OERRnuqzxnCHOgvHlnnrO0ghTkf3kNGF/ORUxxDqXGhEWSXyLiyYjhljP8AaGbyUMfp3mAs8OgOmjnDuGxN0q2P3kSFf5JR3c7qIB6nBxB0X8wF84qhsu7urbC4hVBUTqVzgrhhTeq1PoUXZyknSQtPOh3f0qNUvQXSHMpg+m2fSIEpjc/Ronx/lycgwck4G0L873Kqz9RjTh+w1N2kembT+qLpIczMwmhkdAfH6LGegLaQ11o1c8jjMCmaNPqKmBn7ZW5PMp43DxKOXG77LkhkrVc24I4hAZxKGyjLZ9Nvj/7+zul8/BTGn5vV1afmOTFuSotXPU2Dh2AdIYlCdDPAcxqJuWgpr4gpLLlCWXY+3+1Nv8ed0FtHFAkbnzskpKsXglPVNexSAkeA3B+JGNh/SfW4LXCbxB7mf24f5N4n6LwNsE3iHQjzAggQ+4IYHjMYF+8Z4qtpFyvr1R1w+18cVd1SCpQ4nqhZ0x7qpGu/UA8XFWRx/35Wik+ASbEWn9KUVwkwI2vn0sPu2Ng4MhYnMOj6XlLpZlLt8kl198RhniF1sIhjQ03aqcRGE6zC5MDTZhegSFaQLm9d7iS3A7Eda4KNxvCHxL4DuKya7ie9VMNWWThx+V8mNk46Hip9y+/pzDewmOcqtwmkPic5vnUGlC4ot0GqSmHBIzSVexRW5WrfaAbmKi6iYaB4uj3Tq3Frt1cMcgN7DWgCeTMUcGiGPdpvRgU/IHzPelbjPfjyefbtEJBi9exVxtRj+GiGXA0pJZI9C9aXkSAknbW5xMNMdKhWKznKJwErnLrPrjnbkkOIVy41QCpxE43W1VUGzJWnU2r3Bjj4st2ZmAp/CW7HC78E3NbDOn2zmm2TiO9wDtj5iRNeJcSkJ6JfOK8yie5xO4wG3WvwsxijIXDhQXkReZAncxubzEbfMUc2+b3F1K4DICKfLpULGKfLqcLK8gcCWBqwhkq/9Xk/C1iGtyZ0iuODhl0RBxbQ5P0fK63JZ7i9VkeT2FsCZ3QvZW/Xn22K8ldzcwsUuALPwJZaFYbHDrfr6uapT0rVzcqgIvFLfZbKRU3gQ2U5WE3oz+KbwO8DSFb2H09YQh0D2h4WjSDUeFuF2FApvq7nDzFgh4z8Zq/x+6Mb0rd+FkJE+y371t7PdsAzvE7c+Qjv+UUfuz/M2QPxiJQB2Gtv8I+YNmE6IO/W5Y/mbKHwwyoCWElgwyvk3+oDK243j6UfA+osfau0PSZ+nRMm3fzLo88lvgPEK3Hk+yfH+KGmyJn2b0Z3h5jADXf9Zjg2epKvjFcxoCzyIsh5nItI94nnLqBfQ/Rx/9ImVtSLwEcLbpADv6V7bJE7Nxi9obt47M5m+OneNIGwdmVZvOqtfB83qVJW+wrHoTcIfCbwE+UmfVchxHzdB59TZYdWJevWt1X+9RujZS+oeI93PX8crcFQAbt9vJ6Qckgx8S+IjAxwQ+MRsHq3W841/zYIjYlDPykCX/ATkSxhwJic3E+hmAcjU+I5o5BDMt5XDLyrctdj7l+75Qx7p0W+EXX6ha0C3LBYcZlWpS/TngMl1tbsRJdUy6KZO/Hvn7i3QrxHdmf4MlLYcs39uGLJUS/IBAWv2YYaVdjRA/5XDFff6ZRDqNR8ZV8SiFgTm3h3ivwir2F8zJbZtmjtzGaeZIa+o2chunblgoY2FGHEclwICQF3aGghYfausiPPcDpQOgWJXOMXkVpvpjCWBSJhwBCU5If5KygTOPBlEDV0zqgArrpBDZDbLszPNF2RpGbA/m2tuDXlt78IQLEjNPUmK1AUyDLsT/7pn+v7SCyZYbbcoqSFEdJHK07jbMo1EZSpYK86RUhh34Mgcq0Xxd8fYVJ+ZhBGkP4EBxUl6FsOtMqhZYY/q/NpbQ5sd8ctQ4UJyap8cRpVV/JzIENgPK4B85Beq/ZOd8Vp6udcpSgrNRlCRYqYDfPNgFeaIh70r/S0uaef6L0p3P0v0PSPc/dbr3FOfCIa2jXNLz80kGaZcq7oO+UG24XOhq3FlcDLwLrW2sMH4lcCmCxlJxGTAtcmFWrVJEOW7FFEDwP+VDVnRW51Ud7aoN+MpkblyJXLVBafCJq8C5tFKmq8G0hEyrwXSsq7ZEmgrFmjxrzCaT4hX3gD+dsiG8FwGMiYlyXxpllLifKJljoQfyNFD9m2ztHszBLGf9D5HVRmtg/HCeCR9BKOXrUeJ7vw8+hI8pJ+PE4+TkCcvySQs+ldc/j0aKp/sTtsylZ4hPlYikPEsUNauUlOeIoqaXcir5PFFeoHx70fL7JYSyXVR9s+oVPmT4I4Y/ZvgThj9leG2ehW9g+EaGb2L4ZobXMXwLw+sZ3sDwrQzfxvDtDN/B8J0M38Xw3YShAmzBCnC0C2tgcZocSyl+VUmonGETeJ2k+I00KR6phmKO0jdKvLkt0v5Wbml/n8LrU5L2FW9vu7S/8++RdiHezZDZ99Jk1ic2qnZFovdVmyKHZx8A117ol9JMS9neROntl2x7mGx7mGx7mGx7mGx7mGwDfpnGDhK/wjDJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJvIfJPPZOfwWR30u2+cdRm69yuHa0NEBWKklDuMmCSjQRqvkp5AVvF1wW3sTwA7y+/R16xr31aIFOKps9Y501WjCPKGex29SHnXkUOt0OQp8LKT9OVfZdQlSlQlSlQlT/QjQFl+OKj5Qg+sTHqi9kqfawVHtYqj0s1ZjjS3DUtw+GS5n8CTDsrfLbgpssuBkhdcQuPL0tPd4C5Cotuhg3HRGGNzG8mTBE5EiIR7eMR1XtXn0U9VarqD+navU5a0K35jkUuxrayKJe6tJl/XmucpF2W/uw+0VyoNQ+Mvjj5cgHW/PuqhNcjQPEV/qQV7V5VAVnGKdi+VT1IRdbSS7M/PiGVa/PGf6W4e8Y/p7hrXkOAgSRKoah4TIlrDsA4RWcaZ5ISRokkyRHWpXiJ/CttLpU/JxXYYQK5GgeLEeNUIOGozwVaty6EMAgKxMGWZlQJn1R04PsvgwWizwVejyMvkhwtPJOiMVpAQwRx9gp2DwvQZptgdm+IXY9pu4knV7ZA5ysggTHyymsUyh0TRksTqWILScrc+Z8Glm9AkGWUxdaSV0oTI+P81SY0+OlJg6I4+Gs/XKX2m25DAynoCEkTvLw7NFl1QJxP5XibogzPDhOP83VuKM4U0VjoDjLI+cw1ha0Ulj1TVu6V7MNs7JKT08hT7Gc1ZlBM5Hm/ESWqmXrA9s8CFzOWjBwmXM3kKpWFXm6NqADwjrdJTuFM1w4fNdL2qMyl7SrB8kSOdeTMR8b5bTArcr5xZ2hri1yocIkr2oFhHkm/J0Ff2fD30r4O8eFapRXIAFlMt6vItjm/c5y5KayYIh4XR0F78oyljIzykz4/30r48XiDYjjQDmTHa0r2puKkGW2KHPuLbA8xKoQQrwNlHkWxSfeAclOuaRX73mwjmi/8QqXy1x430TjbuJ9ZZltVsoZhfgAGH2gVFP18wDxEYRwOYjsJ6oksdfxYD0EQVrk1pWiDP+LQVLkRLgvZ0HlDKT9CldjhdgMvFcC75a0NsAntoLdVRC1L8DuUMvuAPEl2F29zVHry5k9akPE1x5zf3m6yA0T33j0VKMcNzqkM+wqvqV29DurHf1e0eDAALaejYXiB4+l5uhj/8QA8aMVm5/QR0kV4meAcGj4qHwtJwsBwP73RUQ5Ol/zaOmqEIsVhYkEiaVXHAN2QZn8Jfm2yosJOFZZ7iiOy7dUE1rLgioYj26+0f4CyOelGA1TG+QVx6t4bet+fyFOyLflqKQsy6CcmEE5KYNycr6OyXfUqfb3JIHsqPKxgakUp+TrHvcFd0aPWylOzW0rG+9LPNRpBMWlHr577DJlswR6sRSI6rkuZXE5lrPCVzB8pemgUFyl+q3zXGA0xDVmKIa41sTZDzEY4jrGvZrh61kAa1QA52OcCsUNHn09jp42mZxy2sRcmWovleB1tgTfwoJazzzYwNJ4K8uU33PHtzGm27FqqSDusAVxp2lTKO5SUb5QR/ke5sG9gP+p8H1mrGxHNwxxP4vuAyy6D5oeFYqHVBgXubYf8Nh+wGP7AY//cwc8hotHPH3EYglwPOrAsf2QyPZDItsPiWw/JPKvHxJ5zLEt2n6M5H/uMRID7rozh5ZPmMPJgHjSg1d6KIunTaZC8YwaZ16qrZ433QTFC2wAHBAvgg+XaTa1jqxGrS/TCBZUOz2gcj1TaXz7HoylnMZaKadGTG2Q+hAVtylSJp2ltEd4cGLb1ETZJ8f/bQfKc8yhbJMTPm+AtA6B3D1b5S6boKTQsgh2nlzjMreehID5Ypdt78mBoONbqPIKdynxwymG3jyg8KVcD1kNeTxCOhlWO9DaLmGo7RJwEayUJPMaWO1mLwj/WiiO61zNleyWWFD6Ksh09Zt9ELVyXYorIYq4kUoaVitdoPy7Hv7WwN9a+LvBhVria0BLcBMoPa9VF+VJ2ur8tEKQtOvz0zVklWIN0bJoMQrF2nytR5GzbunBDYp5IPfgRqJlVYPcBDP4bunTzeRTt/Qpm8JlW9QrQqwjdYTJfYuiZI3FeqVvEWIDObsVQGXjEHGblU+3k0JDbZZrHCzuUPoHr7iTrF6g7WZ3kZXpylQx3k2B6IwX4h5i1sEKcS9RzPjfpyhZU3s/2EGuP4BAZueD+UzfNVg8RN6lK9BKycrUUa5zSf5HcvM/ksnvFY8qfU25BtXF4rF8rqOVXj6e28vHM70sF0/Yc4CuFmvcWTyZkRMZTCHxlCWKOlNC4ukMmhDPZGT9s/bikW3MOVBrbtQLHeeB4UTdzJ+fX2EujVyQX2HufryQ4YsYvphhOpoIbi8x/WE3qdiuT5Htjcljuz3FEJcxT1OA9UrjKoYvN3kKxRWqoblJp+Eqloar81mbtjO0T7eoxpSu30gVmTduqEb1YGBapZhGmVcup+0KPLPoVF+Rb70r5PdVhfJ9vt1fzDe3gP1VL36+lN2pavxmQvO6AULxZW1fb4VV31fNNAbNK5hVEl+nZEn8BsutJ10suWpf+60QCGxJM290pvhUWouq5gXP6dvVpN3rudIh7d7ow0/zouls6cdtmUmdU2fn2l4p7Vb2YUc3imbdlollEdAhvNUX5x7Qjd5udqPNXrjJDu5g8op3CbyHYMQGHHrc5rKuY4LCU6pqLLyN6jpqc0nJ4cYkpUvo+4Co5Pggv28/DBjtmXthlzLh+DC/wtoLuwdkyR20OP9hX3mCVeVOZG30i4+xTcE9vZ9oCEx3oYCdo7hGO6+dmVs3R+Ohnn6vntncjXZeP7PxV9jXRky7fVUaME/uojzpU6I+wfHVChrq9qWgTTkpaFNOCtqUk4I25aSgTTkpaFNOCtqUk4I25aSgTTnpX1NO6tWUk3o15aReTTmpV1NO6tWUk3o15aReTTmpV1NO6tWUk3o15aReTTmpV1P/uno15aReTTmpRlNOqtGUk2o05aQaTTmpRlNOqtGUk2o05aQaTTmpRlNOqtGUk2o05aQaTTmpRlNOqtGUk2o05aQaTTmpRlNOqtGUk2o05aT5TDlpPlNOms+Uk+Yz5aT5TDlqPlOOms+Uo+Yz5aj5TDlqPlOOms+Uk+Yz5aj5TDnqNVOOes2Uo14z5ajXTDnqNVOOes2Uo14z5ajXTDnqNVOOes2Uo14z5ajXTDnqNVOOes2Uo15TqfmqQT10Lu2EGwg7GGGWt0ZtHtmEg9z0HW234X7Cu0FVdB783ePCI6+0jQFGylvY7HArw5+zGWuVRf6CsXzJ8Fds8vo1n0F/w5i+ZXgLi8ML7Hwe7f4rsi7ruVfFH6P+PfPiB4Z/ZPgnhhfnWfhnnjxGP6pAZVlaUheaZL1ZlWJ1EsbqvvRc5VHIlatHF1SYVxdtc1ZmzT5zl2yFjMn9LrVLthIID7BsO5uz7w62DzLbYwtyePyfwPmQmdCHFfvxjP0Ehq9kRbqsIHvxnljAvP8WM/IRiomcJV6A+SPBhQoIcVGB1t+8RhJ+MsvD5SYuFKcUYIV4VOfWaSwGpzN8BsMrmFdnMvpZgKuVNuVs5e1jrkwBYTJ0ToGl1Tm3QBba4y779l5QJhWwyedaTHuEsvYJSP8ocUkBTrPaZXovRR+rB4nLCiqCIZ/PpUaZVaNG4LfxVyKlsqYMNtWWhLwhiOaTLq0VLOB7yuC9kcuV1/mNw8QVyuscDFQ7uOhX6hKbBJEeqnTQaihcrnZgmzuqy/mO6hJxZYGm6o1r6S0USupTTBavpiJR6n5p+7Rpa98sjU6fYU5xHjuUe/wssz0un3k8C2yfMwUvpNUTmCXqgq3GUnG9yl/QY6yBIr3BJYlrM4jc72bzfi4Wx+dzJQ9tX2C2ZosGtmvwquvzoMUvlywvumw7hW9RFeYBjI4EDxJ4iMDDCGAXGZPsdaacFopbuGQHxHpIzjJde25mdXmDWUsC4tYC1iDdxqrP7SyQOxi+s8BSx91l4qC4u4BvCLuHcd3L8H0shPtZe7yKVT08EUVZOhPy7CWzYA3xqErkIldah2F1AKxO+9UF1JnV29b+n4lV9+VtbLaWs6Q8XlBh7nOzNVtZ2xdP7vYlrVHZHyL2ChOoY1jT+yQrlad4M4zdx6sgZ0NV97EOE/hoHwn0ipdJzF4hMXuG+f8sw8+ZOAAJz6t6lZZaeR/BsHU6whAvFmQpJkO8xDLT1mMtw6i/ZmZBoXiNBEBl9+sFtt2Wb7Bw32T4LYbfzh6Hd1gc3mUsB7Ho7A2xeT29A93IPH+fl8QEYH8jW4OQVpYfsrCfYr7Z5FSAbxeSb2aD82auBgdt32K2n/C4nYLazXuUus8Qnyo7vK9jE8ObGT6WYb0un4JM/4zRtzC8leHPGf6C4S8JQ5w+xdJ+ux/V/WuWYd+wQUP/pYOPGLdRUr5kI7pveQOaTWwk+btcJXotdgnvuKxRg/x7N1NU+FD0R+bZT9RYyAb45wJaY8IxsNdqa3jvb42NZXvktfKQ58Aib9ZUH+21qvFihvlY9xhv1gxY4rXwsQxnDMk1/pS1GJv48GJFAWTYe322ZBd6K9TxoLQ2GyheTbkYI9E4Op0iwSWYNBiwKYCrnF58laNxF7GK+NPZYKTxuloxDonLFRfQrkBrSbsynSbTtpTlRa7yfo6VDB8qH89K7wSGlzE/T2SYD62PV3tklruydFn/2kiby9pJLFYns5jw0fhyL23Ox6BPYWynei2vTmP00xn9DDMIm6iuYOxn8pBZjM42cVCs9Fp1JyjOUaZKZTqXmXTjXJkh4OdxoWYNCxd25ylFSJzvtd0fiO4uAD/4IdXKLNOPDdhyvv8vTL2uziEracJxTdaC/BfHObtB5D9gPdVCNporqrDmKwcD44dsNLCay09GZK+nyILbUeD2o6ydsd0hMH+G+fmx2TJ/Ak6GixuhIdjkOqjs92WZi+TrvM1cF5PeJPNZ+eesgt/CcnQ9w9usjtngtZiO8TImrpuxclYO/r34TJTOHyyEz1j+3AH+DbUXL47JsNfawmTtEtXkyskKAun2LpYQrkd4nQ16sutsDHG3WcGHi3u8TlsI73XkuM+BQ05FWJPyAMMPsvYip/poBqyvb+Xr6w+DM1hWf4TAowQeI/A4gScIPEngKQJPIxjxUR7k9/2wKg85rl5J2l18AqX3NewSW+/C96Gwb1EXZSO8lbYrbQZ/aqyDtUJ8Rt3YFmxcGovFVlvLI4vycyrTLxQoFF96rT1KMhOeAfoBSsKeNTMqIJ6DeH2uRe8F1srmHqG8yJq4l1iev8zor2gM/K9qHqjyr6ndMV/oAO9mzl9n+A3MS8XzpulcDvfMIALibR7zd5gEW9sPAuJdzvSe6RPrDkJiY0YzHhDvg7sv9aakD8HwlfbkY4qCOeV7LJuGodm6Bd1WkcFVO7j6lrnio4OvGeaz1m9YCrnP32brzCCUQyGU77j2lo9fso8af+RNcBt48D3z4GdWwFZvIoXDZ9FPYTynMbzQ5FF9BOUgqkN/YIEc7bOis9jHovN74PwxR14v8Vn4EtYm2HLkNWwKf8rsdtnMpe8umA/7fsoxzM+l9D7OTJjTxIffmLfUTFhGf9kPLfrxLDP5SOcEll39GPXkaE/TBwY43/7Z7IWPcmMxLc9WJYB9Hu4Gdqexn8yi1sfI5ms9tvKkVYflzLml+rbrLmdAwIvcSuUipwn6+gofbD2FeODNlBfYtvH0eX8Bjn99bOBT6ntflL+LnQy81Hq02ySen0a8Dkcui93bNhK0Zg1p+RKAQZQ1lPjlQ77cqnPUUxzjzqHFOARsl5i2OTT2Nt/P5JUctSbHutO1Jsex8GwqcWzkljJb3i7xtujOfOqQ7O0Pen+8O0v7Yy02nWDK6PmK5zwmZLmHkOczrgtYRbyeVbj1rB1mM5Sca3I/YBO2TEfItgjQPzk2BSz7mkEI1gzUi8TmNYYZot+3cOaaAvdRmXmh8UqVdcIYUNuYF7kV/9msvzQrocQXAdbHop9irde/JPzY3w+hylouLvbpQVYZ3803IG0IfhjemsNkjE8i+qGEWZihVzyJ15BfA+Vkt23yk3uiYvMMpX95rsp8L0r/Kcz6cibGvC+8gtH5BOJKn9VKX8V4rmb4GlZo1zI6796uY1VpNePfwBJ2PXNrG/JPw6txsiWyj1itZaHk9PkqrI2nma23T9wBL+8ud0t0J6DTAd1lors18op7wEtQe93rS69a9ykrr7hfgVLxADg7w40CZnY+PBE8y62hSKG40ac0R25ldRNLx80Mr2P4fXNxRIoQo69neINZtQrFrSqI090qxNu5MevKzRlmbgnxaFriS8VjkNTzXP1L6kOsiucqx4eZBD7CsFmmELME3j3EIpZeKroM+opYrgjwDLUFOhQCXWGKZQDG53AVjm5q3sN55Jl9jAz+zytP+2jtN7Imtz9KzrQeIbsG0q5mtFSLtmGGswpRF4pWGfZfnfgkk59f3I1Ad8TFAJvgs1jrtDjD9mxma44M1K6kJXnl57iZMuM5cAzaiOcJvEAAHw8vHhEFH1e6uXqi2T7rXM+G03xobc2rbT3VS6awB8TLPtRyTKNLiGHTlDv7jC2zUzuPd2q4+eV8N26r0Ts0mu0K69dZn/AGq3BvslJ6i2HbuPG3cHTiAnfOIy8XuqWLd31WGb9HGFzXw2LchW59lkWy5TyT8l4uO/BmNTaIF7n1rjKv+Iia/o8VCIlPVEOEFzxhWhp3F5s0DeaJOKyTVXOVtZNkqT4iIzk394+zma/6BsT7UIgXu1UN+NBnu1f6E1yH/IM+obDaq0eQlLpyK+Wf9ZEr76vTOA2mXYNld0uukzrSbkMfdlv6CO9D5a7RtGtkVz/2VUJr8Y3sS0AM33HVlllXU1ZaV1NWbn8xu2L7i9nl21/MzsKw/UIlxbD9QiXF8H/BhUrbL0Mihu2XISmG7ZchKYbtlyFxL7a/mG3n2H7VEefo88VsfMPrUjcdLDCP31vzVz4fpR1Bcl51mVtPrL5Sk5Jec1LSSxOWSvGNUrGl3OZNNim3Zfudsl1l2a5yW5Od7325rkioFD8ql5dbLi9nLn/K5RJiXwUJvoLmsaXiKD+OtuUk36+ud4LZtO2pPzzpfiUlt8+3/vDFgBaVmQPwsQh8wLQypB8wrawdjg8U4JXjV7kte5ihKQ7Y+als7XssM4oBLzG62lSoqEuMUm7bJUbqoiOLB9/YmmJjOQhIJ7j29Pp2EIv9w9WdBLTgctAO1oLLSGvqDRd+uEbcqlQCdNBMiCV+rYVTFylIYTrWr5V+5o34yqo5JI7xp90M32xuFUbVyCaGNzPMNzvxK7y28K2wfEMUw1/wbcqokLqWK6SO82v101ICxxM4AcGI4ZDiL6yLopQSLE/rmvAsBmbKdeAtPBu/ozhRZcpAcZJfX5Ctt7pA9ZTydyLJ30lK/la7paPlDo6WZziS8bibrqxgKyoex6mRqWG6PreGaU1O700N0xrSMN2d6yYI0Jd4+9Bf7AGRWKsrpqwFp/vh0IxbTUhXmAZgfRhvE/ldzvje6G78kziXpLGPR8mYrulxug39LD8CQ6xUeXuTu7pInO2v8IfyQxCHqlGyRSWHukX1W3JoyWQpuAqEvFLGlTu1CmF6qxNzBTanN1L+mVHKcqOMDCen3uhxTy673VU8VOylxajqYsnCCVbDaqWZGtab3KyM/gnCfQMKt2zkboJu42b4u8X9S59BMPf49e89BNxYs56ExBAXmTkfEBeDjGzQzealrEhs70Q0gQ+3uqsNTP96t1qQNk/JSr+zLTGvd+c6l4ZN/m0qRruERohV/oqhoUBIScsdstQR3ObW+9tuhxW1K1WzWCmuIhndoq58Ny++utPdWCSuIaEDb3BTEIrKnaorGimuhSYU55xYqkWyxJjZEo3r/Lmr5Dl9VNfVfbi7vg+7NX3Yrc1lB+k7BhvPO6zivQHyp1odQ7jRb111FRQ32Uw3K1OZMq2z2d3C7Ayx3vRR714tyyIjd2I8bqRNCwOVjITEBn/mrXa3Ei3LfWzmvoWBXKiEuA0iwXypELcrShY/QuIOK1TzArM702npYqmScBdUzrvh7x74uxf+7sOFCvh7AP4ehKpbJ55UkugTT0EtesxdPUA8468oRvF7nIS3oHqIeM5fUZZF7SEtG8vF835sWIthnzzjkJGbLH19SNfNh/2WAv8RCO4R3co/DoZHqWEcDML+oFsfI3rBbw49dhjxGFaE+9CucYh40a/b7pcIqGEGPnH7MtF+9KZb7iJeoQqY5tJcfECuV4krzQvONUS8lsMvtHw9hxfqMiVM6v2U1DcwF3VSl2NS71ZJ9YuP0A4HY2+qJg4PSr3F8NsMv8Pwuwy/x/BGht9n+AOGPySs9s7B+S6KrdoMDGwh8bF9UJeyyvFeYv+EJ64arB6gtG2mtAXEpyAJt7rB1wDczipH1G7tZrULBm5P8oHbZzRM20JgK4HPCXxB4EsCXxH4msA3BL4l8B2B7wn8QOBHAj8R+JnAUYYGCxGM2Irr42XW5WcwWj7JqLC91RMSJysKe/dDiOXoQ7V+NxG49BNVfqBgwybHg6cY9u7jLtgbeqpRoR4WOc0eknR6uqGdhsQZRoX9NkxJW0G0My2+szJocnxjmGMOfQ+hbPJWEpF56RXnGBVqJnAuReZ0BI2DxXlp0SMrKSyLDKsXP9qw+oLFBm/TjzFoZBoUSwzeE9xsa/uPZb4dZ+hBu+Raalir6oXieIPtdw2KEwxr7hwUy2ze32Lrdk60vAE5PR/l9Ckup+eTXFxA4EICFwGolOBiApcQuJTAZQRSBFYRuJzAFQSuJHAVgasJXINgxEiofFdYkxlZyNeStKmiUI1TFwjv5TTN84rrVVH6xRqSBL9Yq6HMP/NFH5XR15mFY4jVhtXhfsI6X/UekG72fwXBVeuutyzt0oAy1pGmd3m7QXp6sJmxVrBStkeYU9Z1lmfRTDfzKmNM9YO4nPo0dJEL3bWjcIauNjSEzOeEkKg2ASNUG3q3r7FWbF9jLd++xrp9jXX7Guv2Ndbta6zb11gzGLavsW5fY92+xvo/ZY21CmYSz+ReXnkWlldupnmSueT4LC0J3Gz0oTN9APVDK+ku8W2ZSYzcxtH2yKyj7ZFZRtsjzVFyyholp/iTLSk+HlbTsvc8kE+NMiF/rA3g4umH4FtjbaU0FIp1hp4xNFap2dj7YNugWT/GqZmcKu4sbjG0qk05x5Nld7htJ8sOFee6K7I+QiHBeW4NzidwAYEL8QYxOYM4UFxEHnxL7r4jcDGxX+K2eSndjd82d5cSuIxAinw6VKwiny4nyysIXEngKgJpycT50NVuPR/6g7gmd3bkikPfGTREXJvDS7S8Lrfl3mI1WV5P3q7JnYy91Xwze9zXkrsbdLaBnP0FFAwb/qUVIGvZyf6kBH+unR4LMi+be4KC3JAe5IbsQW6wzjWGxHol1agcRD1puvoDHx56Lncr87w7c4s8tjPPUztDlhlLj+ZWghfSthussm832BWSeSU0RTE83IfvEOFCDl0UgqHWQUxfVDEttWLqU/F8yd0cEncYoEjWF1n+XenXjsmzxX0KROAlFfc9wUGQHMjf36uFTIONYq1BkUdZ0zkMr+wDb6vx8aSM2yRx38ArXK13Fynx7iZwD4F7lQL4yzxI8lV840CjTzxiqPfEfeJRQz28HRKPWcX8uNLfVognSCv3pAI+8ZTmHyyetmvsJFgMol7ZWCKeUd5L0rOo+Gz0iueU6s7U4fnE8zoOuR9geoGaU62nFuJFpQo2KYPFS3aKFQshXs5w/koaZbB41U7hzl/LcP56hvM3cjt/M8P5WxmUt4nyDqmd72M6y/uZzvIBhh80qKob4iFGf5joZp18NXedfA3q5EbVvQteJ1+jOkmWpqwKJqshOKbfXm07pY/19PW0enq5vZ4ejrcHWsusH7C0fMjwRwzzfUgfM3rmnqS30gJ/0x54I9DexmMq7uZK8ZlSt79r7Th4l20R25Lb1gzvvbTw3rWHNwpo76jlp0q4Pgh8edPy8M0MDzemeXix3cOxQFvnUgmoEN+q1qTOLKE6toctl50Z1vtpYW20v0L3Ku50uQkCS8Hf2f8vPNeX/iA4buXSWs+t0N58QEu8WDY3u3TZbFWF/YFVNh9klM2Hafn1gb1sjoDs+khtUHFX5dUOk5XuS6OCtPZVZvXDZbKP3c19PzOE2tytBXzvUTPUnU9AfM9I2zD5DYRTaO/85dThW8Nx/1UFpGS1Sy9dkK5ZjYrnQ3ifWufu8IJuWKv5ntbZvOIHQw8SfrBo+jSwED9S86a5ysVPdgq9lZY+oIhCXm7K3XhthsbrB3PRC7rohQFu4vswCsWiABbpp3oTgPnYEgR1Dk5iNlOj94O1rpixz4mCyGa3Luf+qEoreFO4PmVbRpf29ebYauy9D9XDGv3GYm0AJyH6Lb9tX/L5/3cJ55cvtEhpXRyQ/IeaXbh96cW2aJI+5T46wATqfNz+Mtvs4Y4BS33H1xKGj2X4OIaXMnw8wycwvIzhExk+ieGTGcaesk5H8G6M4Ncu3VLtL+t2iTgjUKE24awIyPq11S1JZ6WR4GZLJcmfuVW9OpUbrccE8b5NyhK4tFtd5aYsNjCmW10WE7bOW9z9WUmBRJyKidiqN7vCuXWd3KJm/qrhcLEy4KRgOceBwxDnBirMM9TnmeEUwjluSL95khs3eH9mbfA+X+XPVphjqTilN3TYsXye1rF8Y++Iz8CkfulSSZXe3u3SwWb1VqboDlIZHfgL19OGi7v69sKM+xdpcd9i7xTx4qHPrX3aeDdCHe8jLrFT0jMIr3/4ksaLQXGh1cyrMwSyeTwwZz/xFfQTL6u55f58kPsVtfdkaba++7PW92TM+asp+n5z84eESyzINiPQrg8Jl2VuUZCQ9m3IdF4cUEP3osydCzl3KOCwe3/7sBtvzFqT7RqtG7IRr89GXJuNeJQ7C/HmbMSb0ojqTZTHXWYjeEnAmtZcyvBlDKcYXsXw5QxfwfCVDF/F8NUMX0PYvGDoa7dq89Laq/UMZ2+i2KVp4NlFmMSvMmtl9sr+v6VWNlt3O3lMfcG3XF9gvpK5OlCR/bnMD9xQpb5xWzvG4AiJfi4T9JnXB2z6zKH8WQp1HgHhMXQt540BPeTT45USouizKN+5M0jfZ5KehMvS1wDp1+r1zLUBayJ4g9nZ9L3Ov6TIYdD9b3vb8/MCS2yyvvMJxfMovqZ9geqI9bsZD8PfDzDG/xH+foK/o/JwxzuOwV/FXJHZ+iplq3o/1npmQ4jXyOp1zCNp9ZoauZvb5EPiDawYWFKmB/pVjqHiTbDcU3rwFoByvAXjbd3wypJ5B8YD14Gcv4sZ3zhYvEdBqlvOSRFaKa3s+lZmNQqeJFEXOmI89MZWgEpnh/B4daBn/ywb+71iI4bf1w7/91V+DRMf0ODdSrK6pcirU79cPR9dKT7EXKsuhf30RVjMdeY+48Hio9wp/Ti31X/v29fb+rA1u9PYmjka4jbWcN4OeL7Cd5gjyYC4E8p+kb5F8S4w3Kl3K94d4FuM7gGrCzTfvWC4SI8S72MV936G+d0qD8G224t0Z/gAMP1Kq75MbLvq7iEI4C63isjDAVLWQk18hAXxKMOPseHx4yyBT/CIbwDDwjzF9ZQZdkA8DRZv6BQ9w7x9luHnWBDPM/wC8+hFKzi/2JVSZIiXWKJfZvzf57HovWI6hubkBA+MbB5Wc/nh4pO+hrX4oNunDhwVYlNAzpyA4yCtzh5EdjuJzYGKwbimcIE7VwCfOUahz7YWObY4+rHVgWMn8TlF9ZkcUd1JfOHM8iWxPJczwV85RuVr8mRTznC+IZYXc4bzbd/hmIqdn9xasfMdSMqntI/9qjyw/EFtfg+JH1UrSj00Lqv+lEEbIH4OmB296lmQelQwk/oHsTCoDxBd6q76u5zNv5I+m3+T2si3CLxNQJ1GtVqsy9zSy72dvExnv8mr2Y/OQ/ajgxns18Kt84vzJPsh4pggBloslgQzHqY+VtnleuYM3R/3r7iHio0Na54682A+RGOW5I9UkkuDvCQvQiXtMXmm1nGgpXVkusZtPRd3Apaps4bScbCEwxy8/vEMGub8oIY0cjRTKU5SslMqTg7y0xsjYPCse4ElebpLgPw5Fg3/hr15Dm3TCseWZ4Vjy7PCsUFY4VzbsXfDPuIMaub/hncH55lTq0/ZUHMTw5sZdjq5jDoihvnwlU4uY+B74cXDeZlHu+AsV8YxqgaQ3I9p/eOUII72jssz1aDH5VlK0oVqPXqzy7Td7ErXwC/NsysbNqetWODU5SgYQS/6JYsV/y9pOv83L6zI7D3V5zF2MHYIPV1gfOw28mLx2UbevP3ajLz2WJfhb+uM9syMhePthn+MCQsicyPdyYQRqIdvazg+O5I0PPFIWFrNiSU7o92G+8iE4Z0cj3VFExEjWBdOhlvj4e7ErEjc8AFja2R+0ihoScaj3bON/HnxaDJieKZ0R6U/7ZLZ8CMJuYrMgDE4I199PMkFPRGjEKPSIB3WRduSRsjOC3Sj0ExDHfps2eTPDXf2RoyhpqPJkbiMcCIa666LJNri0Z5kLG7k1XQvMLy1sVhnJNxtlIY7O2PzDo8mO2K9yXGRRLI3HjG8M3tnzuyMJAyjLdzdFukMS4Pha4t19cQSkXbDF+1ORuLd4U7DaOiWuROZ1N25IHSuy3CLHQyPbwfhkv8u4Zb/bpFnFPjyhKd8BzTlS1O+KJAmt/BJilf4JcUnDEkpkPYB/HpFof4W4zdPhPCbL0q1uUzzl2tzheYfor+VGJ5X7CRNA8SI8h0qIhU1ogxmuNilDkJxMhDviFhNPYYxPFzh8cf6TvW5fQOlbFUMFRXSixK0HpphfZYvb8RUaHk8srYXyJodFPRsh1Hll6agNgWkaYBsPpQpKCtTgRDSY0NSSzKoAXWiULYZhdLfotpQqEAMADou2A2ENMkmTadoGjvpUwxdWfNgM7E+MVgh1mAhY4lkDElGnSSTsdRilGmUlerUGuPE4emVKq8tkTDyxrS0yDolRSTcLeXNrDgobQVS+sJSus0KEm0HkS+WbsbFY709ktbcK0XMKwkIfNJLALJOatKEaCJpGO2RzkgygiyqduVHu9sj8428BumdEe1OROJJZRuH/0LpuEEKLRE74pFZRn5XpD0q681E+ChvE8kFnZGWjois9uCkxW6cKBuEaLfyoTvcFTHykd8oJda6SFtnOB5OQrqD4AB8Rn4hTU3SSaIn3KaiHewm45TmBqOgR8YoOh9TOTk8W7MkZCrbZFXF5iI4ZnxNc0t964zmKRPqjfyWDpkao2jspKbWGWNrxtQrcqBh4uRJzZonMLGmeVxDkzIYE+vrGmoULmqqmVjfMtl05Z9cM05Do6V1+gSNvTLzMWijJxyX5aRSojDLGt1gNSQjXTXxeHjBhOgcWcKdke7ZyQ7DI1u7LqNsRptMbaf8l83GjHBSlv7MXtkylsxoDyc6bKRBM+ZFZs6JJjN4g+HO6OzuMTHZ5EAZownCTBh+xC2RzlkSdke7VAEUmbBONlwLjJBljsZltgJPiUXr1eVmkcZGOzsnxtpllEySDE+xjYn1ykgUmhZQtiyEyTLAlmQ4yd22RrukeI/t7VZBh2aG2+bMksU/NZqIzox2RpMLDANos2VF6G43Bli4JpkMt3V0QbKLLCo07kYxM8c6ZaPOCA1dUpAMYREmxaNSflXIijI5lohibBhXc6QnEraF1BL9qyzQmbF4u+zlgupbG0smZZUv4SYVgzJOmhCZlWwOt0d7E8YgTm+Ozu4gC5sfKFd20uHRdilIRYokw+gM98i+N2CaZZjaoFJcwgyTepMJKaKcpNMnGKmlM9pmd9cS6423RWxMKhqGokC6ZF6bmDLfJKh0MIJyrnNPp1xHGzODwkKD8o5TlH+cojwsVJQW2ZBAg6p9VNx+ZWiN9VDuSai8LjXNrIQGmERePJZT5atlVjHQQSqDlBKUi9DM2HzZGsZUbamVI6M5EJ35LR3h9tg8BaN/hRgbM8GyZpasWdIrwLWRWbF4RBsauhOyjzACstsAn1rAkN8mRyxxwwPjH2lQEiA/vV26XhrKABVYjvQQjwv3EBmbsWIL67KzCLrsLIIuekWQWd1NwSkLrzIkAKjWSbRBPKTgdLfFI1hxg5rSHAF5hG5tbGdMimFBW288IYP3t5uNkrc9muiBFsuIdPUkF4yJdHYmjIJZ0U7IIs+sTtnN+eG/NpyIJoxCgFaL5gOj9HqeQrJXnWcYgFo6ZI87R1EPj8vc8MyKQVbB/9hwV7RzgVGKWFYOOfRriSSTsnikjALxMDnKg8IaAIYJ4e7ZvVC35kbicSgPH1CxkSgiVNN+ZK/sUNGx7OsjybYOGemY7jdkpAEu6E52RCANyDY1HI+GZYwGMkNNJ44vk7L/L2bkMbIFUHHRhPpwIlmTkMhGnRCdjWlJGCFGbertisSjbSq1mma2g5gdh0ewQoY6ZEJlqidDk92reoeCDmXn7VjQ0xGRRS6i2MzEo7KQdb8TVa2MHI/gGKdYmxNSSFT5Rrsi2K8UQR5FZy2gPs3TCa1KoRzZJK0a7YdxtapABsDxKgKSnNCZWWRC3f6ZZjNZhSapFfrqgi4cyRhB9dVtuaFM2LQFFFYtk18ZoB3xSDgHCbrKgiOqsfmAZZbIz196IxFLKIkC3aKqoUFNaemJyHmEacL0yDASUlDhH2MrQ5uvUy2J81Wd88vO1CRGqSJ2h+fWxebJWiBBAw4IgYQpApJKTr5EU3oMf2zmkTJ+Y+XgsUhBM7u8Mch82SHnqz7PG4v3SGGQFVzOjaAQjKAGqu0o1KZJs2ZB7SZLlRwy6Q4gJmvNLJhpQR30k2maBacb3p5wezuUfaEGuoAC2ojpCWqDSpOhTdjW90gpqLVa1WLTrMvJIlDr2hOJJ3qgsOZK8WEGPWLw9XTEumU7lpCI8qjgL70xqJcFsn5B1ZfTZFnh/fCvJQMgSUZc1ZpkeCa2E4EkzCQnhBfIvDH8STnGrIEhnFFowgmyRhshMMqpxEyZfVN6lB9FQLO6FqPUblYFErITJ0CRpTGqwjGACJIiZTIAuFFVSaMYDLxaB5Ggy0i5050ZRlppAWLxLmMgGKdA7YdSN2UqLymLxp802YpNqDO5yCRQ1MCsHBdbWA9mGYFGrow2OR6TpSgFuNyipY0/A73d0TbZCtVG26NGoUxXMtoW7lTFYMy1xqTBuTE5OKoNd4ICQDKCyQzSQOPkKDTvxRZulg2nrLdIaIZRcAAhdARyhqgMU6HPlKmc1yFnCNDYyWZpXlTmZ8LIn6eq+DxZ+1TLFwBILaIPDFh9AqBMkSRsTQv+qmp86exIktI/OR6NxSEVvh7KEcGsp6KapEh20bLymXkWSFgcpEqR7rVPpYks3otEuqdBmhPiaMNg0yW/bKDkOADIA+s7cXQAs9Nuq8XwS3mdo2B+QrnBqaqaBoZ7emTfAlPL3i7ZkqtvUE2INdUnRxBQwdot9Y4KtQkyaucpMDHXQU+Ky3i3yWKR2Shbg2S8V4lHfjKahL7FijjOkPNAI5Zd7bPU7aD2KfB5RD4qfAokLhBepBUIv1bdBPQ3qL9F2l7ob0jTB+qvXeWTp1U+eWJH/R2mv8P1d2f8GhgH8G+kVh1Vy69X2l/k1uBiApcSuEyBAnG1Am5xLVmtBpAvrda4pXm4WCvNFSe4KobDkSxUsuzprgpUF4gSWLgef6wBSqKdQIdkcvgkR8iRo7hPjgrJMSwLB6iihoIuOr/aXeUFVXRjkYA9Nz7JDOsuvhGlqKkajgwHu/LVQy01QPRLklG7g3RRjLsvtPeNZaIUvtVK/eQjerNfFII6Sque9gEvipQX0gp0bj61bjyownxxZrCEdJxjF3BQYjqotBwMlTA0je46k1ygRvcjF/llejDA9GAny4MRGppcA00PdlFWRWnBTIRMK6NMay5Qi93yu5v+7q6/e+jvnvo7Sn/30t+94TtiDARqsEyWwY2mkANiH1NpJw1V5iEXybQvW83YDzwJVJMmsRxv2ttfK/Wo7Muko/30JglwdEMZuAppVz50JcRZbiw5rzgbgaSszKDszwsXtxyfk8azizocGjQp1foApw/XEc9XXIPVoUcbl2l1YQ4PZCoOsErmQAv+yoIHWfDXFjzYgr+x4G8t+DsLHmLBQy34ewvWWLDWgmMsWGfBeguOteA4C463YIMFGy14mAUnWHCiBZssOMmCky34Bws2W7DFgq0WnGLBqRY83ILTLDjdgn+04J8s+B8W/E8L/tmCMyx4hAXDFpxpwTYLtlswYsFZFpxtwQ4LRi14pAXnWLDTgl0W7LZgzII9FvyLBeMWTFgwacFeC8614DwLzrfgAgv+1YJ/s+DfLfgPC/6XBf9J0IDbJky8kOFFDB/N8GKGj2F4CcPHuqygRlvk4xjLUoaPZ/gEhpcxfCLDJzF8MsPLGT6F4VMZPo3h0xk+g+EVDJ/J8FkMn83wSobPYfhchs9j+HyGL2D4QoYvYvhihi9h+FKGL2M4xfAqhi9n+AqGr2T4KoavZvgahq9lxUu9hyRfx1hWM3w9w2sYXsvwDQzfyPBNDN/M8DqGb2F4PcMbGL6V4dsYvp3hOxi+k+G7GL6b4XsYvpfh+xi+n+EHGH6Q4YcYfpjhRxh+lOHHGH6c4ScYfpLhpxh+muFnGH6W4ecYfp7hFxh+keGXGH6Z4VcYfpXh1xh+neE3GH6T4bcYftvEtnGQofZVaaZ3GX6P4Y0Mv8/wBwx/yPBHDH/M8CcMf8rwJoY3M/wZw1sY3srw5wx/wfCXDH/F8NcMf8Pwtwx/x/D3DP/A8I8M/8Twzwwf5bbwQoYXMXw0w4sZPobhJQwfy/BxDC9l+HiGT2B4GcMnMnwSwyczvJzhUxg+leHTGD6d4TMYXsHwmYTNWcJgcy6RY5YwCbhgJ1vFL5omNQfhAhO+Xj8IluGHwCzBDIntqqtEiyBcK4KTPm3XBrEoThvhX04D6ytoPH9lGoXmDr6scwfoaHiGzIJAKnBCBNu48LqUoarWlilv0iZ3QbgqBSx25NOaCmV1nZu72VeFY01yhunEVNgmORW5JjlqU8KW0cajgfRNCbSnR4zBXSuoClMbbbxTGviOG9qoQHsT0nbgDEh332Bt6glon/jmG72bh+2EwB0Q/prWGa01zePqW80l/NoptbUTGprGzZg8vqal3igeUzO5dUqzRfA0TWqq59t7zF05pnYn+/acwrbeeNzayGTb1STaI7PCvZ3JyXFMpuQ2EEzuCCcihj+aaI33JoBckFQO/MloV6QlGe7qMQqaertmwlIwhTQ5nOww8nHxXzqVUdT5ijszinpUEHUqQKM8kYz1NHShRiuJWrfwbKVNLAYbTihEf0DxFOmG5cGOcHd7Z0TvlkJPjQE2lvHIEDe8HRr4Sd+5r+FLxnTJlqCbibH26KworNHJSBaEO5OHRRYY3rZkvBNBVyQZBiC6NF9NZ3JcPNzTYVFgGWpCrG2OYRBlbLdRZGG0KyTzeClkcaOYjDIP0T5EhJa2eKyz0+6mpRfcmF62LOiaGetkTtCMTnyJjugsTIIIt7fb883XFu7shOV8WNiAzJCS0xRLdkBehJTUj65b0B3uirbhgkshLECGk20dKqdLlX7U7qcxNtbWm1AMRRZWG9PiUhSl7GhRMxq6e3q1SBRZGFkD0YSuV1DjZPTZfriBdZMmzjisfvqMCZPG1LQ2TGqaMaF+bKva4jMow65pysTJNXVGWYZFc8O48a3G4Ax6S2tNU11Nc51RYgsWo+Vr6wjHx4Cy1AM6ciNvDoiE/EOarzPWppcD42ozQf68jmhbB+qWSazU9o8C6aZGtkfGxFhvQktuuV3/ymyKLKykcmZvMgnrUeoLC8ydsCIxjcB0WaK45jTNKKiL9UL114TpRj6s8kxTn+kQ09m4tJVoi0ci3dMISJt2KenRTsMzNxqZZxQcHu2GRQ3j8I5IpFNHC/Kurn5Ca80M2U7VczNsHDKKmblhWv0Eo8hyjOnwt0c6k2GlpUc4TX+n6+8fc+iUH3TWKedpnbIXdbo+TTOy6pINvY0wXafs1tsIC0ydcqU2j9DfXWw64zyxp/7uren7aPO+2jxGm8fp73j9bdTfw/R3In6HmvGapOkt+vufOn5/1uYZmi+i6d2aHsPvSHObZAK3PRaI+dK0h1hQvkPFosKK6Urhi5sW1ZkjL+IuxLsi7kQ8jO2NVPskBzNcobDe8Lin2g8J6s8B1SExWp9BM/QZtLJ1PlfFly6lx0Tn+zGvDmW4muH9GT6A4QMZ/hXDBzH8a4YPZvg3DP+W4d8xfAjD/4ZsmY4qvwq0btC3E/2bvI6gsrAyozAn/HtTcL0blYfD0X4qC2cKw9OY39OZfzwu/4NK/SE3Kjt3RvsjmR9zGJ7JcBvDRyAuRBxmmIvP/6C8nCjgyI3/3+Xdt27U1e6O9r1ovwviuQzPYzjJwtlelP9K3sNK5CjYvO7BQzGweR1O6nhx8zpc0whLPnAgz8u3rvtgna55sNnE+eTcGRHbur43LNUFJGNQL9WpaXaBmn43q+k3fGGLfCE8DbYC1uJgV3zwYFdxlqgUNQbFznr/vagKNe6Iq3+l1ZpPfnGWK7+wflncqFYFSxvVqiB8YVWwNHOpU8MKggExRAmDtc6pWXasMG/IGmZxD+fcO0l6iYIFLN92hHyDVVB4FGeUjjesRhrquY5WnxuXPwfUDghl6a8zHJU1+vDsslfOugdm8k9bhE9cLsEzmoN0cZH4UnEV08GpwabEZ7HaP7fVAbmtDsxt9avcVgfltvp1bquDc1v9JrfVb3Nb/S631SG5rQ7NYQXFu9FFOqlg7Q6NB+JipiW5A0SNfiZTF2A5vBQjpNzXVhjD6/CsVbCqvHHPNHc+6Q7sBmThLcKVz2ISGBnm2F8Y5tj+hmmehBmcozGpkJWlwawsZnNSoeWTmmDKQH5V5IHg75Ac/layRkqv0tLug1rS0PXVXkmrCX0UHjZlO7KmDBZ8h8nvZP39g/7C4u6wEbdgUzYUm7L87E3ZcFk8f9LFA2u0oFestpoZWA4epuAUK1n7WQwTLDjVYjjccjbNgvtbvNMteKgF/6h59Z07Mr+GV8MuicHmcHIb8ktaTc3tisakZDXMspreRwF8gDm6E+Sn/I3IkqE7952hR1jtdtiCM61MarMgy2aWdbDivYuCsyw424IdBAMiqpKtDJa861VvHcwcC1JZQFIfwgLYWRcADVYoUwqt/ArntpqZO5fbclvlqn3S6sjcrubksIK0HASllo/a+swS8+vl/mEqm/RQhtda2OgEQXTmDp0GQGS1Kwt9V6i1u7Fa26Nr6V/0N4619Q8QyZFYWXfKXll31xsIdGn1WmU+14LzNFRXXsrY7y493FlGMZk79jTUJatdLKu5ua3m5bBip2u/OMT4JJiucw+icheObMAh0uCYcE8Yd5NGYb8wPw9YMSYGew7DsAcdNdmTw/FwVyQZiSdIj27quPMj88NtSTwyGO40Kk2XdZMmKr0uc9unenOA5RRVZmq3aoAbSJlWarJOmRDrnq0sDYZRGWl5CAr4yWHYvt9tlMS6YUt3G9lF2rk2mpYl9DKBCPf0dC4w/ZEWtoPGSpMeaGP2Ac5cPDuStOVyERA4tzSbRzp8Jiq0eCSNVPi+cPtcWE9oN/K6wvPlnyyuYlTc1kXmRtsiDd2zYkYxHm5khDIktMbDbXNsUfG1K552c2XFC8fKeiTBMyfa3W7z6TAg5HeGZ0Y6jYJkrLFlUhNfQgky1rRj2kWxbhVQWweWjIh0w0GPcDJC7IMgD3p74BRopJ1nzo5WzLPaB6XDKYlIHNmMAH5gL3O4SydaGbiTgoSyL0iCrwlDMD4MyCgIq+327mi7YcS6w+3tyGoMTOdUAlIY61ZqeMUli6hd+ZOvCPltnbHuCJZ7TW97NNaqwoWoI6xdIPPbi7wS+ImsJGWqrFPkIqCC0Z6HwS9ZFYHB8Ea61a7i/K5eWBryyhBlpsuCjXUDxfDFunsVMuAsvD4CmZEiTlbywnIuxAqDxNQDC0PZD8YPzppdSuvMlhnCeKKhGbT2RnG4NxkbJ0ODczfxWKcRBJHpjnSqoylCSlBsDK6ndepd7rNw4znqr/2zoJHBTe3mWSBY7OhuW2CI7pisrCBCsM8dXarDEejSSIS7ejqVU43Vwcq5aie83vU+KFu2QOUcPMnemtTH47G4Eo6hOa3UimQEzEYpFvNYMy31soJoYrMZTSQaNVPqGiY1NE2e0moEEE+a0gqGojHNkybPqGmqm9EypgZOIdc31dXXyYrYNLWheVLTxPqmVsODqzSeCQ1TaekyXy3BeKa01DcbxtSGunrtd1alv8OlA6Gr8xzWBPjlAkDz6isDaJ95UJsLtZl05kLTS2xXDeTpqwbyxQDb/vN8MUhfZVAuTaViMJryxRBpGqjXD/LF0LS96Dvr7y7afldt3iNtXWGUtt9bm6vwO1zsp83747dUHKDNv9bf3+jvb/X3UP2l9Yip+nu4/k7T3//Q6wlqvWEPM5xO/e3SX1pv6MFvtcn3F/zuj2bIhX9I04Hiv8p3qLhdVJQIuO/Do3VBvwI93B7Ci1M8UBWpy0b5soSPsx6gNYACWY3hRTgHLKgykBLgFO6sBjdjBFgIhSwEhXdjeHeF7V6EQBfEvBDMC8G8EMwLwb0owY0jFZy0M+pzyjH2I/Ur9BXS3RB7/gjcq9GPWB6AW5tHon+TMvKnKXf+wORlLzm2G4t+7ob+/1OXBdygeJSLGRa6Mktmsws1RTsyhahS/rUz/GfEQaYcDWLEZuqkD4OkI2W2jWIpXJXbDuZnVGOBilXlymf6MyODMstGAR8izOcjmM97MdXmaIV5iq9340RiH/R1TkZmt2dQ/pxBacugzMygzM6gHJlB6cigRDMo4QzKjAzKrAxKJINyRAZlrwzK6FyCdo8btQV72gR+H7Nstudiv3LxKRcqWkaxuiZYXROsrhWyulaYsUAxm+EjGU8H8yfKcJi1zjMYnsVwhPlzBHPrUJtkmuDYxi4sTT6WJh9Lk4+lycfS5GNp8rE0+ViafCxNvm1Mk4+lycfS5GNpsrWJDXiEYF8szJiteLe5eS0RO0uvBtu7hdIKurmo755nhEClw/A93VU7HXS/W1ESGRRQNuwvKQeYFNA57CEpo00KqB6qJWU/kzIvgzI/w9WCDJ//muHqbxmUv9tjCGtGQVBx4EVKprrGC6bmwebIwSfUreg+S3URyGEFfvyRVD4FzbumDSngbBwzk3+72scZOdjM+OFalBm/QjMShenxy7Qy/YCDc8WmH8JkFOl+ZFqBHxG6zqmgsVxU6KWsQVVl1aBqgrWl8vEjG31iOA7MAO1k0kag1I1sHibK9GWAA/CmPzO58j+kb+0MklK9QG3dlKZy2A0rc8w2tlE5ZpnTUxvUJbpb7hzbvY8cwyNuoHofWrtDYwGmasd1+ICSpA/Vl3AViWpeaM1+XK7QqrbRFtwHZNDal0r66kJQ8u2EfsGFfiWovR6+HxAOdu2n8lyGNgKUcTK0AeJX+qpKM8SqMhk3OLO2S2OZOFiXya6sTCDPD+wjz7mKelcMx/CVhQrwQNuutULioDhE+7tb1RBMMyzNwLs1sLSymwwfjqPt2hgU4y2+RqE1srtJPjiNNkzaH8bsg2ICMxXhgTTTT+u8HD3hjvk4TNTa3gG1pwRvNq/rk8GsqSN1TW3qX02d1M+aejpe87mbLq6yrJVkT51hu5FQye9Omg7VZJT8wkrHIPshvBq7MA2zC5N1Ss/Dng7JXt7sEfacDH3V0hX8lfYcDGrlZ49p9NzECqVRHlArpGjhio38worHXvpg4258RW0vybq3rJ40i6DquRvLaqw6o+1VZw9b1fkGV4931K0AzRnIr6BVuvbBvdWq+FirYq5mFJs+sDUjGpSQ1TDL83B/PN81bepisQ2zx6EtVyoG02AoMw6DzblTlphHcmfLrP7FfHb/Yt6ROw7R3FZH5k7vnByuoOh/wGvA99GV/M/9q+Qz+sd2RP/Y9uofW7h/bDP7x9bWP7bR/WNr7x9bpH9ss/rHNrt/bB39Y4v2j+3I/rHN6Wc3gGOWPaX07cPGLPuk1Y990sYst2JzNcrWXGUdtNDsIssIlSZKWQZ2OZuowebUJYuHM3O7assdQ8emKGsMI7k9nJU7hrNzh9WRO6xobqsjc0djTg5XVvHtYiu+rBF2LL6sVnvltnIsvqxWbbmtRue2as9tFclt5Vh8Wa06cltFc1sdmdtqTg6rdfSIVlXWIcq+zSX2abd5qEwW+L44VNk1bV6eu2nAyc1g28yz2DZPySqTu/cheDgQ2s8+EKq2DYSQ4wA7x/6cQx11e9ltXOFKX3b39oTjeJDGXzdp4mSJI3H7cnsxMETGxuGaTVyJ9dXF2nrxfsK8RDJuLtCqlba+zwhNmzihJRKPhjujf5XBlCQIt9IpK088FksaHrhyKNS8TUs2bn2MI18f48hPO8bhhiWaijxQDoymDaUwwdtRLyoUqO2ksmRh1l6oS9av9kbC1k9zQlhcoc5l0u3KKnNPLjR+8qRnbmFPDFer9Lp9cLIyqgU4Ws3nx3z6dapQcG/UmR+9qkhbEPzRxOR4tCscZ3d1+3VcGtrVBoSANmPJ+HD1ETZe5KsrJkNJWBDvTsrymWxaJaOdyWnqM11+5sHlTnoFMv0UEm3EyDg5lHkaiQ4s6aON5rmltBNhtoV788iddYTNPI33/9ghPPsRKjpY9YsuUT9p2y9Rh+vO7XdppV+f7tVrm169lplvXpe+kzbvoivY/vra9F9LU0gcLKvbA3kVd+Xh1ke1GV/o0b618VupOIMMl+ruGfBAhsuY20EMlzMcYnpW9dKhWsurZDxDGd6R4WEMD9dTD8AjGN6ZqU93Zf6PZHg3hndneA+G92R4FMN7Mbw3w6MZ3ofhKob3ZbiaYbV1uoQdBAiygwABdhAgwA4CBLRauFQrVE9yWY0mbEGDRtOHW9AMvVkOFlwNpamA544DCuKKpIIhS+FTam1yHGjBMot3kAXLLThYBwGN8ko334NHAuTTW+MNq2slOSCrgGVF4khWbPJJkkRWbJRBAkpWbPw4MLdVWe6wBuW2Ks9tNThHks0e6dzZxkt7Zly3n5g72ygaF0m2TB1n9uO2/h729nBLq7sPSHKNPoJqhKQBW9VoW4JoxZI2pbmhOTJLdnlw86NPNmndsj9pN0rALd5qHmmncQRcqN8puxkjT7b0hlf+4XWBdHhc9YU+dDgbOjVrSxf4NqOmadyE+tbpk+tn1NWPo94jZLcZ11xTl84NpIF20pSmw5omHd5kDE4nt0yuH9MwtqG+zvD1ym4N+0o6q686ykI01SR0oqjLHojkhu6WnkgbtPjtsBkvYQxqi3XDtZlywGO3UJv1yroj8/AqyDRbwXJPZYYXroiXrLKjCCciAEKMh/p8s/MvY5b1eo8bXv/J6HJQEJktOy0cHfDymqBu5fdLkoYDM2yx5ApNDjRyP/Tp/4EZJNMhM3KHONZJ0MX8pjkoWRAqkelR1B25QzlsicTnyqKxdnFBNmSjFzN3zZKKp5MBNEfC7Wp/kSYY5YzVvL8VIwGFZKdAamvhMny8jnf+JDpHD3eQ98he3DMLLhv3wg3IsAEV9v/F5kTQozHReFtnxFbZIjE5sokvIJq7bb78LTBcceUArwQnS0NSCLvmGy5ZraFOR2aZdVWZE21k9hLABzlyXDJaOq4zNjOsDmnraxMSGDnNDpeB4pWvXrjiAq81NnfaTgz3GMV4oSiLGxQ8M/qS4ZnqQtZiGBXBrkqy8szs7I0b+bPg1gBjQFssLouxJ4ZZSyyDbNQpiQgPhRlLMERZBhbJHZeZKUfLIAhjZT2PTZXByyIzSnuyiIt3rrYdBOyxuBx8d0/C26DJPxqQ69ExtJxmIo2esKwgqiLhxbIguzVJTfHBNAwoeCGryk1okltjyXCn5imUw3tgaVC31eej9BvFJrVFyZFuotthmE2BD4AWrmVyc31N3cT61vGT6mbABQjlGdTm+rET6se0YgrTbSbX17RmcUKN6DCwmdLU0DoDG9FJtY3So9pJU5rqGprG1U6aphpfi4HcVaaRW+qb8bmRSU0SYoWfopvghFEyW6fLukK5kEiqyQwmemA76cRIsiPWjr1IayQh6ew2Za/M1looRvOGiwLYAd06EefCE8NSbOfjZtgWnLuABcjHeLzlQudnKRGgUHk/iNeqE2Hg+NaJEybF08kBOXFIJPRVzthLTahvGtc6HtM/ZqLqzBipfmJLJm1aS4bThqYM0sSJKtsZqWnKxNr65gzOyWNUN8hJ9c1j6pta4dqGDO7WTNI0bGc5iYqYHngp7MbGftIs9RaLoa4nBoPhlV0gAv1gAxSSMqvHegy4KkZpDQyh3uwBa31nuKE2IqODQDzS0xluUwZo7uBGb7PCz99X/qoN9wL5XVCN4gz24Xh6jYHGdSK20EQZAqmbWNN8WH0ziGvLjJbW5kmH1R/eUNc6XlUYbklp3zHDwi7gzOGMSc0NMr/VSERlZprFlNZJqpTsdAorqLoUfdd9QJlUvdAG/fJGDC8rNwLqq4YWhjLgWMcjh2jT8H863letLjdvjSnO/DB+irlFbzKGmT0xkjDrQ5k2p2dtqab38BpVoonx2Dze/cmKHIZOxaw7MGQId6mnnfrUOvnNwQVGbDKrqCXKDFNpM049yqzfV9DjL020Wpugpih79CfWuWC2eUULxhlInUzosPGdWF/fOqm5ZULDmHrEql5yKv5reWBkWzspG14pPlPra2CE2toMt9PMwH3Tw3LZkvPhuRimTayZNl3+nDga6hw5+gyloc4pFODoOxTk6DuUJsdQmhxDacJQ8vGpKFlzIiDn6t0faC/grZtwZ7pQu2fF5U8OJ2apQVczGxZgVf7jpEkTa5rqJtc0zahraKmppSrO6BNrxjU1jJ2eQacyhAHNH2Oxrpru9snwDJ9SHtmHZUF9kVdLWxgeAaJrvUCCQa1mCBpomGPcoraOSNuc+u62zhjq+7wRGnvBmxxGCVrDLCGe0G90FMmOUfplTtGKTbMeqVgE3Z1aBKqSJkGNegpNMw63Q6aR1T2bqTKTA5TVOryCLvUtMXt0M7mB9oh6K61GjqEC0l1bpDnSHg/Pw/GWLjI8AuPXGSEhDNjMHMK2xwfKajUBiNPE12xMoPNiGaYmO4neBHR3OrBSeJ4kHE1OlEO5qOSTo9eEUdzbbecq1kZVvFJsQ2kckAjoqlrwpUZT4MyBh50OLVFLrDPajg8h8TlBSzLWY45i1bVQapSOg3hMQDEaF1jTE/72gHofT78EgBGaF2WtO1JQ+ckHS63wPhIRBuNYbb75sgob4Yfikb/0RuNyDjtfNs4JHLMVJRYkZA9PDwxhc9qKT4BgA26mWA1Hauoap7S0zoB+V45GjaHZqLKyjZswffL4ljRHZu+qRjH6uSJ81UOL+wAYP3aEQUVcY70MMxDP1XX1wPmnVjtzvfWc2qRZ4FJODuU/nKeB43mYzKS2AdFr0uMmIMAoOJJsjqm3RjRTGQxXk+F4Ms3bEJ5jm6lLUUWgoLsNvSlW1cC0RjmAiPK+DEuEdZ2DW+untU6uaR0/Qw3/cZxXM6FhXJMxJJuVHCPVt44Zn93S1L+YlroolK8w2qnIalU/rUZOUiqz2pmDzi41B/Am6L2zBGSQfnfH3S6b6vYFRkE8hifMUBxBeG2dtuwSmlrGTmqeKJvm1uaGaenU5kmtNa31OKBhVHXeKZ0oR4rTshGnqy7fIiKaAP4OtFtQyvwyAbqdA9isUuBLRHSj707ItCUWKMqcyLxpJpoO70SyzsCdlJzwjAkcCIN2AYjqxcsSnHjN6ZZTdzNLwqbKSM1Qm2HVLhjlpkG2Obd69QYtjP9V3JNGx3lVF0mzfjOa+WYkjaSRbSljS5aXxIriJbGzeLTZUmRJHkle4sSOLI3tiWWNMiPZcQKnEEhatgZ6+oPSFAIkYTmlhdBC2KFAgLBDoS2ly+Gc0pae04UD5XQ77bvL2+abkezQ0/6Q3n333ffmvfe99b67GHCADv6Of0msoWWpShpcBgt5At340Gq+dHWaHVpCGwkSBzIrBdY+GLNwaVe37Ef0/hinn8wqN4+BMrnqC4vLBr8oxQmlaarrmaEvkwbRd8m3hF7W+2SDem5xrGeXBqVaRqpjUfXckrLUwvysFuZnM3NSLazB3cr43qrqYX5WD2twd1pm6BrcmzmU5uj6LLN0DejqBEKptiXVx/ZxeJulTlYPDz8YVqqV3cnhXRXqZUMV5u5GORy3zN3VuxP8gDUpYn3uFGOPMlWO4zMVSmv3cyiN4c1xuMDhec73oKWkdodS3HuYw1e0kQ+XV9e1kQ+X10jgtRJ4vI5pnqjDTO1YCKS8XZK8WwLPEMlhRfIRmfJRCbwggY9J4OMS+AQBfveTEvNpCXxGAp+lX5hWv/AFmfJFSsmolO/LlB9Qyh6V8peySX8lgR9J2n+UmH+RwC9k0n9LzKukw5tXS+AxCbxWAo8T0Oc+ITGvk8DrJfAGCbxRAk/WY00XVU2flinvpJSiSvk9QpzmT3qXSvgjmeWL0kHPi/Xcr1+RSd+gzA9z5lMq87fIhY/f/WNw4fMK93vgwucZXzqL7kHIVthBfJhpRnjAgLMGTFZ5mvm57ZWgsHGj+30ydNy+vb6vA7ycgA3uVnbQgyS9QBLp+lQdyylMCcrJqpSqsKPbQetuTZID28Fo35okriDJr01yWpBsrVHrPwED0AmrWQJAPwvtJuUtmlI3q98FSrPVNQrf5Cn8aA3KLg/lgRqUeQ+lW4Nyq4fytEEJj6kppZ0yFiLxE2lk6zk2XqZMiEf1U6rxqhq3H1gZTGgwmdYulfaAdFCjlA5ii2axHJkjg7CNw3YOwdBYLHMeKhPtaiYpomYUfUHjYf0BtwMoxlKoa6Ti/STuHhc/j3GqCThkipPEOAjHuwR2MVYZTU+SeI1I6tbvvT0MKqomi6pZUzWbZbVYVDFNFTOpUhZVq6ZqNanaLKp2TdVu1ittUXVoqg6TaoNFFddUVk9stKg2aapNXFYGRk8nypSRCaCuE88BzV4GVUk3WiVldEkZs1abLaotmqrbpIpYVK6mcs2691hUWzWVlP5XpmcCyiBZc3+I5TOa9eP2wdpJ2dpJAzWSXpCOxbaJX96O9QMNlzaq34gGDzEIGXohA0jr7lSTcUxT3mNQxoDypn70DabioLmwk+L3QhxKAXl1kCfsF3+3otIR6IEkxkgcMZEjn0u7yeIQGbfao01nwbgUeLJRtZN/uwc6FCX9RNIpTnoO8t+Hkb08IPZDHfat0/wzGnzAaB8OuNt4wIFRqhtpwIFRqs1m+bf3S/9oeV3SOQ2u1X/7df8dhfh2iotFB7wyHRCLC1ikAquJixjG0ANTs8CD7uQBES+acbZ4tYF/YhjWwDuNNfAhXutKHJY5XOFwlcPLHF7BNfEOqNkduCbiqBB/d+HamCNnTD3UOFBabCHwUQapEuweD/Lejf4WwBVTN2oOgSem3rGw1PA8KMDHGMyR96Yes7uyenhhfEDHT0F8UO4i4m9I1C8KvphwA6cF2PhA9EWv8VstQ0cOq44Mki+nmABeJ4HXS+ANEnijBN4kgV+XwJMSeLME3iIB9NbE+1D7/8E+9AG0gdjBcp4ueYJqV8eTsSD5gEqAIzyZRPs8OMKrIG4nB1AaYxI/VYFpJ69QVYhz7KgKtyd2VCUd+90F1R3hKc0OpNqI7mkDfqcBv0vCKv8hkf+Ol5d/EIbCqDEUnpVf7jkJvEcC75XA+yTwfvq6v4GdflhNqdvoE7vkFCohOgI9QkVF76M7qIR0TcU1QtdULQR/wMCjayr8yOyPKkn4Dxr0HzLonzdbloQ6jUHP0tKvZtk91FsqPl4xC49UxCd0/FdRc3CSR1cGRpd5kvWebfV4a4fxZhGrkZOBgbdOOTtgKK5NYw7Fp2ol7YBReo3lrDVu0RfnUXVSkBNTT8FN9hQ8qg7xnil41DMFDWKeghrjmYJHPVOwCvFaTcGPnKMpqGz6zRjbTPVtpAjZpvWYr9xK8npcfs4Yr+hzrIfgzyv8taza1K9ddr8eUFceT78e8PSrQcz9qjGefj3g6dcqxGv1K07AWZ6AndS3iDtm495QBx1+3FiDXpTry5ck8GUJfEUCL0ngqxL4mgS+LoFvSOCbEviWBL4tge9I4Lu0lu1AVW5jp5L+1GK0Dn1PwlD1aSA+watv9QMZe1pj+E8N+M/qNLl5Zp2CQk+qU56xyVc52l3TyOmFDr7X6OA/l43+oQT+glr/c1zg9mDzwzyqT4m/+2hFbyfPbM3i+6Nbtp0CQJ9sW0TSj2slBck/Gyz/fyd3YfTMdlAAP5GLwj/IUYwO2boFgN7YTovxiO7XTosC0ffaGZH0UxrpQfK0BkMe3aztEjToY80d6yAHaw+oavSHwbUanq1F4r/VTnTJ1Rpc/P9Dzoj/lBvZfxEmSO7VEtK5XZwGBzq3u58+wHWdnvFiM2ecSM9WOe4l0/qmhovWvN6Z0hBfoLh04LbBWjjy9sLhKg6IZ+FwPQuHQcwLh8Z4Fg4DwwtHFeK1Fo49UN1z3BnnsT3oYI5PAr+m4CpdckHfQHCtKciBbGzoD4r4RYpvgVvR3XgrYu9zebgWsfe5PN+LcP5cMuYP+qDDc64E0PtcLPM17OpFmj80Z+Lkda5VXXKC5HouLvoL/c7BaopOmaEH0Rdyt8YEyTtzq3TBHDeJn6rI3k4elDWNdLfcKj0xJ7xJ0l0e70/oLs+61C3p7sLT4rLREe+S7X+3BJ6RwLMSeE4C76E+OgCFFrGLFmG0y1X2vUYt3mfA7zdrdBgyX4Ss2hddmk+RBvwB9lEnp1xaT7m02baH9Awah7aVjLb9vqz3ByXwIQk8L4EPS+APJPCH1Mgv4EA4bd54XPcj8hPwOtblflRi8IAMhqWlQfURHCLt7guS4mPy035cjp5P2JkF5pMVmHb3UxLzaZn9Mwjk2EtrnPoLK3RQsx1j3Ekv1UlTGcbScVqxRPXSEXY/y4zjKus1ryunPeuKURKvKxrjWVcMDK8rVYjXWlfaYLI7PNk/B90Q4QmOR77yukc+1Mm8S31TNYpW9KKDbKK9Bvc36n6+XjF7zG0h6n7BSlh/k3ge1XdWRcGXxcfoc79E37bb/XJ9uikZD9UlzWN835WMxWVPjTXDJglRvU0KbJ/70nWX89V6Vc7X6rmcpPt1AB8wcGrtvHotZ48O6LqHrQP1KZw5qphHrqWYjfCRTqmPJD71N3FKst2iQ9CHj2JBW5Ku+237BUZgvmNjck3ud23MCcPx5PNB500NHvWc1dKi0zCbGze1XSz1nDCJO40UDc3bs4vFs47/XAH0BX0DEGExKxJKh+IaRelzhaWZYnZ6cHTUCVDUiUv07FIBndbFS/nLxYtGRlJM8YGWieO7MFe+IP4XQewJ/i/NXZJiAiBKCmLMoeW5cvlKsbQA0MoFogBBftAxLa4U54uLTqCcnyvNXwAZBAjRBnfZiYufmzYRodUyPMBDAQV0YbmWlKcUJfBhBtbRAUdx+ZU8vdqDcDdICrCUQYNojFaQwSf95XUdx/nYcVzAAYdqZCQ2gC/6QB8RsTDrHQeUKdhOjku3cNs53Cn1ke+HAQp26IMwQMdAt5w0jEG1zhHxxop4jOOoiSzibkUcH4JEvAHimfeR6l4X/sL+OnJQgUmovwe6eOBFB93Ngo0l0sljMKXBVg22pZUqX7vGpjXYocENGtyoQeDB8StPF2Nhir0V6xrFvkgmwR7ejWmnazPOnyB6x93CbevmNvdwm7eaeLHu97ICn8Q0u9vS0tdtTGFjaIw0ruIp96Zq5atJ++NNzl8HjUnrP5dfEQPZN1AEESJznobOCtQs6OqqMRaZg4E3sHruXL5km2oPXrxQKi4Vy47/Sv7s+UUnkjUoq0zvEEg5DoEX2YaHL5Sc0IiM+h4siwXDByJp2nL64fzcAkiEXs8sollfcy7h5IE54wRz+YdW86AIXgBj706E46QFPj83fyHvRBk3iLGIWJsWSLW87CRlkoEDwcyVwhJrqDHBkIELXuAWhUFG53ypsCLWxYv5/PLcIlhHlwJfvkuwoskKoT3tkPiZAkqzxhmdk4gQSm+WQCRVQlPFxcL8VVZElOVgP+E6zebTjZXadxbHwRXS5Q7lUBlJfF82ph0or8ytrJalrmJUpmNf1RcvgvoC1QZc6xIxyN2hDfYCuKZVWUgTEc1sO/6B7PTooOMbnMxNO8Gh4ZHs7PgMKBINzqJxbf/wkYHhIQimZk6KIJebzDmBkcnx8cnjjm9kUpBERiZzg8NnBrODh4cd/+gRUPUIjk4Mjs8ODTuhI9mJ0ZHh6RknIKDZ7LjjPzI8NJp1QhPZY6OHQEAtNDHJmYMAQUUANT0zmRt2AqQC5Pgmj4zOOLHJifGTZ0ZHiH5IpE5lj84OCzyGOVFyDqgDueHxyewQhFOTOVHF6eyRYVB0ODQ6Icb2YG50asZpBKnt0cHh45OgBuFEpw9nRQEc80/PnAR74zO57OA9jh9tiDsBTvSdmB6vYUw8+YLXgyiICDXg0u9T2wCEQVz6fW4YNeKdNsoVEf/FRuCA99BG3hziKNTlciwpYjEW9fKxiFc9WgeHeDuHGxi/mcNuDrdyuI3DHRzewuGtHJKIVopFslo5bOOwncM0hx1KdOtOFhDaz/U4yPgshyMY9mA6tP6iiPWC3e/006H0h+tw8WwxtNVdZbk2jUu5vy+JmAMWRrutI/o9nlTSd283dOtbDf37lKH7njZ06F1Dhz5gOK/zs9DNNhDgOIAG+LoNmRwyMTtUqwFG5oyLXLgOy0oqOPHsAXEQhRkVGBDp6bQwNg2c31MCs8HC2DR4sAcxF4UZ92COVMXYNQQ3UWkQgrEw9m9NemimPCVPeUo+6mlFzpMr58kFj9+tArNRYWY8uWY99TnmoTnu6ecTnvqc9NDc66E55Sn5Pk8N7/fkOu3pwzMezAOeXHOe3zrr+a2znjrPe3LNe3p1wUOT92DOVcXY5Zz3YC54MAVPOQ/amLeG6jMFuGU1iCOeH4+6dCiL9IUO9+DRluKNHE9wPI5xV5xSnWQgSVOQKFqUy0URz5FXwwBfzh/D4yRYtPXzcbLNnMLiuAcHVXAeB0dTV4T4NixK7TTx4nfZh6LC0Bt0QMVTaNrTUxJU4pl6qARcKhsG0smYOMEaVcAjOBynWyo6I1XRGWAGFgxfN1d0SsrTKamKTkmpTlHiOCkCeyW3I4yemJlvAAZu2UMkHIZZ1udmXcIujQUXjywUBe7MmFe2WxIk7DWcUkFOiUWkbmNC6CY0YrUBP5UyYpXqArEQ//66/Ypio03R6qXYZFO0WRQ/Q7MhICHmz3VX7D8x8c2MuJYrkttLiA3GpCoNd7WqpFbbQOQ1FC73KFmCW2mnLaCSAjppV+1ccpOUSe06Se6NMimtk3bXKrC7Yh+u2RDeVFUJ/kobZp32h2n3froumyLtpbjRpuiwKHYBxWZJISYMiOJmxtpwbGb6yY6yi+I24NNuS+ZxnJoZLKRBFDKwIek5lqgZ2n2NMzTzMmZowv5Nmh3GpDXm5IDGDmoQ20PgkJx9cXeYfyQhb+sw93q8cw+X5G6eFNc4buUhSX5uwwXcUI2xpL7iVvsr9phfkS7aL8acZ/3WRdu4/toMMbgeT82VVrT+yFo3XKXrH4eixAV8OV9auTowd17cBcqDi0Xrxu4DD0dkEIUts/GdGq5+ysWav4wqoX5UK3Ia4P4MejQrUomaL9C+kQLY8IKGDIDSMEKgwuzEIcWsSnRxDi+saAKGr+EhIEL9OzItB2rt2N7xwsW80qz3FUxdeciSw7uydUsdQgdLdAnlW2EQ7lqgESet0lnm1vj+GiwuzZ2FTIZPOvZFB2696I5bJIM/YQqxMwjk7gGGRaNo7HkwK0eZneLSMiMsJ2ABgVldFD9Pv5qApGzZyxtJUsJAYWmudFXazCMccEWAjelQFG/T7Coupntn+urS/NpMmNraQMl/9lpdW+u2CGGI71ERjjdyGOcwwWET07VzKO+DnXyL7BIxl+2wydth0u3h3L1I5bo7HPAutZOxpObTgmo+UMYevAnuNW540JIB8X+DOyhwG1FBB2554iYf6oS7X3opvRGtuoUMq27SYljXC+hzAth+McPgmlOLtFPcndBW1nZixAGDz2GB+S4+Mv4KLNN4ZBzIJFOinACbyQ/zuhTsCyhjZCGxDsNDVHRsCzI1G3DBB56mg1BKQcDRjORIyD58QgnZsxUzKVkPq5ZyK+5XZsPAolibZVGMngJFTRvxrNebbHbTVepJYooRVV/JGeWf3WT87K3wrhHvl3tMYuCGsSQboWtUXQXnu0xaW0bbKj1BhERdZefLupqmSvHpqkkuxTnyR96cIz/kEMKhsDnzQ9wkk10g3J3aX9eDgsv7sYNjYtsCj1MBdCfVIOJ3VsTvsuJtuE+pOH6Eg/gREuIcZHTTCTRzfzPboG+z+xCOWeQM4Jb1CPrXI7h1PYLdTJCuRbBvbQLaaJvpNHx7RRvhK5zQnqNv4A7dVNGhkYoOjVR0aMTboWoj/UWL87aAsZE2LhVXxLYyP0e7YOpQfmXCwEgbVdYWKznAvLQ2rMAWZeYydxfn0tzD2XkqBXdOR2xrlwrk2zBl5prS+ESJmKsGymKQJxfyy6X8POicDs4tLp4FP5PGJkT7MO6L1fcvUkdXe39TtSYH57jWfIxImkTUIsd/dm7hfJ75vL4F5MAvFEpOi0k7hCxc3GkL85CpAEZ/HB/auguJHQbNCelThtg758UJ4qJlCXadQwzvtrz7hkp5/KxXlYY8Wh2gBjmBstjoluCcArbIgAstfkwcnFYKl0SXz11adgJsjCF4uXAWvJ/K802AS0iYzeP6XSmS1bI4KqkvgIFS04Zthc3aFk8JyPSOmqPRaaooCkl8qP6t2NqBoeEJsMcXPJTLTswIoGF8Juc05GbGX55nyNdfH68X0kiBN8gKvD5+8KtHQ8OwT7oiFqnYw32oOAjlt4j/cTeFO3cr50xX8Hs3cphhPPF7Xeb3+vgJ0WUVXh97dmzhGtWjSi781u24f9tc3Y3s39FhbrXPHUFe7yGxr/97g9jYG3Algd2abFEHeLfe/AIq5sFWBSo2+9TltM3grG72ZrkH1zAw4H4XJgYNk6OU6bDBvh014DGCzcL+vg6fGYkdfCOmtxjmWAOGKdeA2QaEt3grapiBDRhmVAOKAb2Dl+s2w5hq2mAopwzGdMrDjN7lYUynDAOzfvyVDvYX0CwwTUZbMy4u5S2gLan4acCkdiye24AHM+jBDHnKGbYxcMjaqvhy4twQUl83YLEeSA5CnBtC6pqdceN8zXTE1t4cAjO8MYrj/1hfo9gF0QgwbYiNeFh5Ipb5Ep4sgl0gWJPYX0du2OGqTYc5eFpOirPGXjwkJbCjAqE66Kq+Jn1Y4htwpwQjsncJD3w6FpTerKm3aLC7Cm+s0+3lbb0Vt3U1CuDkRfv+TiZor05AHLOU5pilNMeMwVv0D/drbEhjb9UstTaJRZYad0MYuwE+yf3w7Zr52+2r8e1E0ubaSW1rfHG8tHfYl/YW/Gzi0u4AxW74ksC924Tm9Q/gR6RTSaeo/j7dKDjAyLPPgFRl7Fq72nLhkElBo27/hH4Zksy8sCZTf0zQG3Fd4Kbav9VZO0nOWpnk10lyKZJJLdfU51tqJ3XXTtLsyEAlO/Lm2km7aif11U66pXY1+mvnqrV6iCS5gsqktM1n1MstfjsdrxyNFYxAxxyNdPJ9LOz8xLTIHxHnUJCbQJOaCbJkOmWgrCNvxEypfbB0luYuF87T6aXFyDKh0QFxzIJzXMJIniFUwxJYfJc2+w3zxmi/ZiA7eM+Zkcnc8WxuSHJrGslyo3x2j5BBY3oob+QIGjIbAgYIyRKQh3I6lTniPLoEBsmW2AtAlBFoM8iJiIZCNVDQow0jyMYaB07OAjYccqarplARMZGmDp+XxS+KOBBBe1nabLxYvLi6DAUlTATld1CihuAosI3Ur8ZUjFLjuu+59rLFQK2az0XxBUNRkhgFU1KE0lrK+fnVUn6Q+kUVHltdsmrjGnGkqCI9Vv0gWY8WYYAiiObywQh/iA+VkiVUX8ESctjRuI+lylBEAKTH6jOtetsOu/XG49dOYB4ESL5U7KLA2YgKEkezGqRxAaC+SVoJkMyARJrkV5s4bOYQrQdktkHhTpdLk85FdRNgrLC2ZWtaCwL/vE4qkPuRDLYyVn5Pa7BDgxs0uFGDmzTYqcEuDd6owYwGN2twiwa9CvgAbtVgrwa3aXC7BndocKcGb2JQLULf3uu81TUWIXVt8pMwlLXoNMwtLNj3XrrYBnnwrie7tbAA8o0hplYXWSm5ZVw4+cqbwEocXc2XrspbsO9i/qrIeQlMcjohDKDQBpDtCpWUQBPJvWkJpyYsaQDIJ5eldXHpBESKiNmuYsIoHIYM8Gjh/FKxlGdjvRwjWVDHodgxcGYSxV+ZXimW4EKNQmi+4rK4SwcG0ZmIs3UWFlCKTJaO5MtlQTglVs7J0nS+dLkwnz+O/e+Ez5XED5N90BEF1hcWSLQrIi6HK5wdPIoQECLbwSJ7kn7C6rmmgrjGry7kZ5eA+Q8uQUCKiwjph/QKHyR0GS7ac4VLJFTnQFPYD0iUQm6W545t7UjMBKi4cVe9TIevzBVWZpdWCotO3TknrBNSmpqbTYWmq+PpZo78jwi8VRByQUkB+0HiV+yVxhdQRrecERg7VHxMw1hkiJzCjIKHk3Iujy8JvFgvHC+sXABr5wm2uG0U0+JBYWnNJloPVROrmD9UcTDCPl8EC9NKxjAu2Uxs99yJotWzRY41l/LnC2Wx35mlOk05xJYsBpMfi3YcGoLkEckeldbZIpY9CyXMr3BiJ47tNcZ0YxEqtpKfvwC+e0z+WLiM1h/hIcSPJE7SykrPLSkLBxu82JtFuY4az2LgF/XoLskfKi7JGRK1Bo8f33Kcdqtcs2fQyKGFCNMAgJq6FWllWH+or51GfEziHys7bdYv0NFuGjs74UWx46EyPDvhIQXaHiwu0ZIWEwB9SYonRFwNAJxh0N4CDQGnSZwSDA4WsfEqWKxVmGeebMBsi5bMjoiULxaWwS4oLJh2D1p9vLFmEk2o7NTo9PLcPPPy4EDGdcdHsuLS6jLY+juHnMHgFf49NDVpNSJwrrAIHV+LX+yQzC2u5m75QvGKxR5m/mtVtquzuqQ+a4BqA1ZbcUQH0dy/WEbjlwvlwtnCYmGFnwbZEUCIz4BiEGYHZ0aPZYEj6DAIz5kN2fFxkTZ7YnR8NJs76YRHJ6ZnBA7IGMRXz4nhacjqQxvK4dzw0OzEUHZipkKiNDwzOXVmfPjY8LgTOD46MTR5XMmTvizm45O+azozApMuiDoDIT79hTmMWKdE+XBYj0xHKK9dxBqZvVjvdmDYyOxFn7uJ8dKBkxQr7eVwO4d9HPazGKkUL91tsBshvJ1/dT8+Hh5AZuMdnEZW/zYoEdIBDgcZf5jjYxzew6Ft569e2fmbZpanrMtxDk9weC+Xex/H72fm52nGn+HwAe6Ls0yX5/Acpz/I8UUOS4wvc1sfFbH9yjrgq6TlOzYTuN99nQTeRLb1dmONg+JbvhkQfvHT76oT8QG0DZh+dyidpbOwwckk503Sqbt2ehUznF5FmXM4CFzSLJ7ao4b/qojBMI0YDNCIwY5MmEVsI06Vx7UU1ajVJL0NeTqd/RGR/Ewd00LkWTPyXJ319os5H0FeZcYQtPUjPGI0e9iAiTncjGzTQ8zZ2Yzvm9f/2/eiHG13f8jq2HHj144YJVxf2RMoAbu1omzZqusv7xaUjd3WH3NnudUJbHXMnTHjZpbbUcC2V7HnY1YVoAOP1cq6DWVhb8IMp4z+oE9/s0n6qBjogvbO6/yC/f8bXzCTIJ3S3dvr+w4yYztBSp02CvVMQZS2TaFQqRT439sV6re8Gd/mRf22N+NTXtTveDO+3VuJd3gzPu2lemcFCu78v4u2Fhr40XiDG1CqTUExJpy00xVlvll4LOM2GqnNboxFEhRFnzPW47pKsM1TAj4qk0BFn9vsyR3Eb1krR6/bYoi+rV126jrL3uK21m53P9s1hE58WHph9SvPblFlJM5wqSYnq0xyK7njMZUUq2QYJ1RSwmBV4i9H+Ze7ahAq9nFEJRlO6jK1kzbXSIJffnOdNKsIQ6TZ+sBkICshsN1VsVU+8nV8yGa3h0tt0KVClU5KE46g0t6LvBJwsHczLxspfC/zDE7mwLRotkvClolUDwkp7udbavcY714qqbWSrdxWKV58K3G40M/uIpoi4y6Nunv06BtLuXut7glQTcc2VR3VsrNSIt8+lS+N+XbK7rpNCoZswncxYHol8F0Mn1NFzrvT5LD2oPnLkDOqnlUglodygF3eUaWcTC4i123q1WHdwSMSbBJLdZTfnHCxpmc23o35E7yjDn410w8PPu1qL5AdbTyVDNeeBiO1krorNouYIDDiugR5QqhmAvI4dMQW7AhXdUQAu6FbjNoJ7M6oO8mfNdYXFI3kAwH1yJG0srAKbFQpPnu/FJ+Flo/Xbt6R2gOz1tIDxY9BvXuq1ntrlXr3inobH8+uKk6UrVzVmt29dn3uhTK28YPbTMWBZIMZ15+v8txSjUxJIvdy2ceupew1m1Fr2VbzfXvlo6Y532PQ8Tuw49GSQB/Ed9aYSZ1jMdQqAqVhmNvbVHffxOvSqdr15KOVSrrZqOejsOqA6VDwXi7Nh17fEtrpzvFr9SY7Tfy/lczhzOvxAhpDu3m8vIjbCPgW7xO/2OZeslY5aPsSbxrFKpvGJneZB+U+XNvwR9Tqd9MY2eEMiWlGbuJ30dv7hbUr2+kWmGBvdYK4e1H/LDfk43hkAssQt+Pi/St68RZNBrOf7fTjq+v9+GUm2FKL4Mp6JTy8HsHVX7IDOt1HmOBALYJXrk0QRtOk+7jzcAu5o8ZWdOcvvYX0W1vInSwP8P+7hfSrEvqNufjTOmlHF6ZDF1jZ8u7uYdExaBb1rrEWsIbqnRddYBtVH13ZQqqeGXePNYKJVHU2E9EnjQy5JNiGNYokozCvqdOTKOq+1oh1uY/XrbcAnJKfKuo+obOqhfKgvVDuthbKROhvWfwELmdZQM1Iu9hNoqMawbIOVV8cckSv/KYRlWeenEO2X3GDTYL5V7uF6k3tX5ucH5hGGCpsIFhPaj70EYXPJXHwhQRUyr1RFWMHSsGDnfzaVhdAjhKpTFsIaz/KrWd0pFIXouJRp6owZcLKgnxel/Q/yM0QchkDqH7Bz/z+FXAfaj74xE4cGT+8srIs3+Zq6Ye4h4ezQ8O56TO54cHhURAs0Koik1PDE6DBPzsxDXYG2u0izbeMZHEJ3wJqvE+YSh/6kTEqIdTa0DHokbT9W5ZZBPW6D68IKiIyGL6spSkG28pC4VK+uLoCbGh8eWq2f2SWsPErBdHRhr0KVk9poU8tqyKtbqCTJgsn3yzZTAXZkpgrgw6KNnmj7ei4xcv5UqmwkD9S4GdK36UCGMUp4+BFUWTwzci15N+wnpKU4s41q+mYKjmCRvZMJJvLZU8OzI6MgAmFgfHJAdvOBKgS+camJyccH/hkWof/XcP8ws+uTaGGJChMrrgpkAupMZSckLxx29iCz20zhG99opQOFKk1VWyASlrtkTzybuY7m0o2gJeiuLss3niATTDUMx/cZa82acwPfP37UanmdNsN6Zfq0idxa00aPNmYwbdtMvi2BN9r0JwyYLL9HjPUbFiZPl1VmV5jjnkwxz2YEx7MSRsDHKof1WmVHQePCqDNCPfkMJ+RUSBUhCANGhY7YjV8BHdEFynIrJGiECUlxQbRzBtEVOE3uC2846o0VJaJcCkommKU0l6jPtXwRn2g5VloI/CVEngsAmGVMLYVZFWSLJ0S09IpTVokxRLcBC5Ns2IQwW2lsZLJJEeATGqq5AJ5k6B49P2RqlDxaWUVn1ZW8YFwB4ewE7dm/gYFc1tQ5adNqvwAkx90q+7GDnLZR0PY6Mosd9kAd9kg4vdWx4twKC11xIa5LM06hk91iPMdxnLa0FxGCFmCY+anF798T7WPaGgQJewBIf63k5AuPHK00ln0FvMMCwK5YVMKF6n3SGzE3YvUhh47K9LfrjPux++MGUEedgNh78QxQeauSDQKeE4bB24Q1T2yRnXx1D6xHsHkegRT6xEcZYJ4LYLcegTTa/5ELT39NI42caLsoas3O0xpw6s3HvzSfLL7H5j3s0sNNQYA"); -// Kotlin.kotlin_module_metadata(393729, "kotlin", "H4sIAAAAAAAAAMUYTXMTyVUajUat1njcHmN7GPMpYwPeBYSy2XXIF5YxK8uLAckGb77YsdTGg8cj7cwIMPmoCqHg7gO1lUrlyC2HVC6ccsgh+RvJNbccUpVjXn9o9GUotrJUymW97ve63/d7M28SKGX+YRb/M4e13WbkuT7G9WbQbEeuT0Os08ctGrh71I8cD59c3AqjwKlHS50TS00/oo+jZY+yI5gMEnCmQ0rt0n2cWoWfXM3163RVCMs8pEHoNn2cunzxMh5dau5twe1G57rq0W1gQiUTVAe84/ohzpSaTY86Ps51UIuehzN1eU+jX7YdL8TpZrRDA5xa9Pexut30GjhZxRnXdyMX7Mk2wTgnYuKz19t+na2KOHWfRji5jNGOE+4sNRsUp1aY7D3Xb4fMADV0n1CMomYtClz/PtYk1JnWcEhwTK5jLaBhe49idQME4vRDx2tTPC6Qd91oZ/lxnbaEeNpdru8EzUfOlkfxVC9D0IEG7FAzwBNuZ9MnUq/37tSW1w7xSBySlb2Wh00m3eu/ZsTCa5ETUaxtO3UHzM5tu77jefu3nGgHpxeDwNkXJnlgTMiPokazKmwc7azuBk4L3IqVByHWKuGawxzgs9+J5b1WtD+UIup1x/XwONwGN9ajsNYOW9TnSYEXfb8ZCS2x011r607AomSAes1HtCG2ISbd8/JEeumzxVoNZ6s0ggRid8e7Z7pIrbSytlj9HJOas037nIMakHz3ma36rfaW54Y7tLHYcvGITKKq8EcWhMnlaA2Sj0KKl9qu1wBPpPddCpmHOGBpimQ+hyx7PY/yxAsxWoGg8sAjl61YpAWOr0LJFmc7K7jSkYWnBqTG93QfnNzlwna1iLZwlq3u8JRMi7iTOA8cT2AyUAJrPEbssGC11gRDncY+zlSXaxs3lq9hzA/fu9b0wUlizUJKG9gUuxuOvx9fG+3iBMIQiPhATuzFJruxdm15aeUaiCH1wcyBnlEEX7FaAJUxXvGhpdCbvrePR7aYG2KzxZYGi9zVkImPI5FinbJf32+BAzq+87dpwL0q7sVOPt4KmuD2sOQEfVkiawA6J9QY5SLSW16zvtvtKwVMQp7YjbgAukTofPWAgtVdGgponbrQHbEBpRZ0Wy5OPXi4h8cqD/duQLa52+DoJc8JoSUCilfb2EAqrEasNXV6+mpkPkthhSSwihIkCb9JomANKSRlJThUOVRJWsIMhwmCJD0n96MSHpHwqITHJTwtz+flflbC8xI/z+GY5K+Qi5L+LUvotgC7CfIdSf2uhN+T8Pvy9A/k6R/Cbppc5dhpUpLwmoTL8tan8taK3H8mb9+C3Qy5zbEzpCaxG7CbI3fk2bsS/lhSH8BunuxKjr6ETQkjCR/K009gVyA/59gC+YWVsL/K2PeIZyNTNZXyTGE2z47NFD+CgOzZ51HSxGaHlu+sC6MFw9RM1UoWcCF3gBT0Ifu5UM78J5k4QDrKmAhlTRWhc/g1SoOAVizg7PsQcIF8acOlIiaBrZkKShWMokFCG8dMLpZ/jRiLD14jzb5K2jbIk5rYkF2hfaRHD0PqcKn8onyYQM2+TR7ZsaaCz7zVZ0tX/0tFHdSK8YfboNkPhlhO5llZzMzPAGN2efJQ9sI9RY08Bpsm303WKtln/vpmFG/0MHtvKucN8oXNb28+VV8jNT9FHFsr6A+UL85vPl3/LVJRiiDIBSBsDRGwINSHCIogNIYIqiDQIUJCELaHCBojGOR+n5YzZAd8oy78Vdl8ofZb5XbScV5n5ZxXCnoR/p8qKlZQ9iuk5D9BZ60U4NIl3cREk5mtVUe6682X6pCvEvl/JVHCQnBTLRFTIzpTAeAIwHSFEANgtij3ZQUwRGLGACLAjBOTYxAZF+aUXyqVAplg4RJxhsNTPHgWsaB2RKxZ8qbFupArT1ZmiM2ul6fzCO5MzwMVgq3JYE8XNMYWkWMgS4fjR8gJpmmxx1bAInKS09nJU7AaKU9Wpe5VaRuz+Ta6bxnzrNfNnEqA6RjMOsObgkbmbGUhUZ4DzFmJOQeQlOeqWW6yuvlq2I3J/Dh6nrLMoijKsYJWUiAoSyBn7FSGheVKMlPJkw+6uSsbik4+7MnnuSHOSv5ZEm1baRag9+XVQ33Zlzmv1LwJWmjzXS7gtfzvk2CgypZXlHTma6s39w7qvTpcvbnKGLnAsSIRVbBjyHep/D+S6LQ1Xuy2dgOS3CCXepq9UcHkY5m4ZyBtPmFRL6sVU2YEgowQ1MmhnJiMc+KlWs0Bkh0km88MwBdYIrKlQS73iquOkSLsmSd0wBxhR3LkI9kJnjF6n3rQHIDbtyU3ZuMk2HiF23iRtY0/JdHfFGuKVzAk3f+r9Ibj0a3BQ9rOcaRYFsucEjKlO6sSMqOW0AvFOgp0uzTY4A+QiY6ZBlo0MdIrGsKF4wtLB8hAJwAxZzLEyYXrrCb/mERJ61Rc53GZlSbQmKmTsjBwIVEwWHs9XbJRoh9tIlIRgamMklWZBkl+eKhjHJYdOeGLhTssP0Z7ObOodqP+VCjADP9dEhp5vrc3QVAT4PMbfdJeXYUnX8Umaxyrk5sx6zPl5wO0akybHbq3HtPOinvykcL0OTr88pT/DWSYdW5e9K74VSxezRbjt5JSAuL/E+4IpZIlP2XPCJYUWfIzbgHPj3t8qfQ7E8rvEGcOueDlW8zktH73j5FNUXYLCfD5LPgcUJ/LShwFlLH5nFXij1hMFhKMPgJlFz+5DekZ8MIBuogT8Z8JJXDZ1FExLstfYqNv/yvz71n859Q7fK/CMBoGLsx59RBb8QQkvi80aOOGE+x2Pg6NL92s3txYX1lbvlfbqN1aXmMT51u+VFmDw9zNoEqjdsC/+wzOfpcHPg0dPrLODrLc8OPPPLQR8+dDrzUwLm749R1a34WRW3xr6p1Ek9Xer1tvGH2742auRyie6Z8936ARG0jj6VN869FXYtfD+Dk8rZpPhkZQlY2gMByl5ACakANoIh5AR+QAZsiRahR2WUIGxtApCS156hjsDDmUGuQUDF7/Vu1PCYZGnuNtPVc8BnOIbnffmHMFJB8Z6UKmO4lokIOI5yCvaPamAozG/hdGZszoNrzwiXKHS4Jd33jQxwoKdMKO8fGLe4+C8FSAuWaQpRgScocMCb3sdabUCLSGo3JIeAdZH8NTLz4k1e9eeoHeZHaNTPO2nf6aJr9AbwxKwvb6mH4DRr9NWv44PLnhIb+gyUGj3zPxVJHKE/QXhb/gpdmrBdAO0CRveToahTsn+J2T0ACJLZvbfwFxVUOJnhcAAA=="); diff --git a/src/jsMain/resources/lib/kotlinx-coroutines-core.js b/src/jsMain/resources/lib/kotlinx-coroutines-core.js deleted file mode 100644 index 92c111c03e..0000000000 --- a/src/jsMain/resources/lib/kotlinx-coroutines-core.js +++ /dev/null @@ -1,21267 +0,0 @@ -(function(root, factory) { - if (typeof define === 'function' && define.amd) - define(['exports', 'kotlin'], factory); - else if (typeof exports === 'object') - factory(module.exports, require('kotlin')); - else { - if (typeof kotlin === 'undefined') { - throw new Error("Error loading module 'kotlinx-coroutines-core'. Its dependency 'kotlin' was not found. Please, check whether 'kotlin' is loaded prior to 'kotlinx-coroutines-core'."); - } - if (false) { - - } - root['kotlinx-coroutines-core'] = factory(typeof this['kotlinx-coroutines-core'] === 'undefined' ? {} : this['kotlinx-coroutines-core'], kotlin); - } -}(this, function(_, Kotlin) { - 'use strict'; - var $$importsForInline$$ = _.$$importsForInline$$ || (_.$$importsForInline$$ = {}); - var Unit = Kotlin.kotlin.Unit; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var Kind_CLASS = Kotlin.Kind.CLASS; - var Continuation = Kotlin.kotlin.coroutines.Continuation; - var Annotation = Kotlin.kotlin.Annotation; - var COROUTINE_SUSPENDED = Kotlin.kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED; - var CoroutineImpl = Kotlin.kotlin.coroutines.CoroutineImpl; - var emptyList = Kotlin.kotlin.collections.emptyList_287e2$; - var throwUPAE = Kotlin.throwUPAE; - - var coroutines = Kotlin.kotlin.coroutines; - var ContinuationInterceptor = Kotlin.kotlin.coroutines.ContinuationInterceptor; - var equals = Kotlin.equals; - var Kind_INTERFACE = Kotlin.Kind.INTERFACE; - var intercepted = Kotlin.kotlin.coroutines.intrinsics.intercepted_f9mg25$; - var defineInlineFunction = Kotlin.defineInlineFunction; - var wrapFunction = Kotlin.wrapFunction; - var Throwable = Error; - var toString = Kotlin.toString; - - var Kind_OBJECT = Kotlin.Kind.OBJECT; - var ensureNotNull = Kotlin.ensureNotNull; - - var AbstractCoroutineContextElement = Kotlin.kotlin.coroutines.AbstractCoroutineContextElement; - var RuntimeException = Kotlin.kotlin.RuntimeException; - var CoroutineContext$Key = Kotlin.kotlin.coroutines.CoroutineContext.Key; - var CoroutineContext$Element = Kotlin.kotlin.coroutines.CoroutineContext.Element; - var startCoroutine = Kotlin.kotlin.coroutines.startCoroutine_x18nsh$; - var startCoroutine_0 = Kotlin.kotlin.coroutines.startCoroutine_3a617i$; - var Enum = Kotlin.kotlin.Enum; - var throwISE = Kotlin.throwISE; - var Long$Companion$MAX_VALUE = Kotlin.Long.MAX_VALUE; - var L0 = Kotlin.Long.ZERO; - var L4294967296 = new Kotlin.Long(0, 1); - var L1 = Kotlin.Long.ONE; - var sequence = Kotlin.kotlin.sequences.sequence_o0x0bg$; - var ArrayList = Kotlin.kotlin.collections.ArrayList; - var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_ww73n8$; - var UnsupportedOperationException_init = Kotlin.kotlin.UnsupportedOperationException_init_pdl1vj$; - var IllegalStateException_init = Kotlin.kotlin.IllegalStateException_init_pdl1vj$; - var emptySequence = Kotlin.kotlin.sequences.emptySequence_287e2$; - var UnsupportedOperationException_init_0 = Kotlin.kotlin.UnsupportedOperationException_init; - var SuspendFunction1 = Function; - var coerceAtMost = Kotlin.kotlin.ranges.coerceAtMost_2p08ub$; - var IllegalArgumentException_init = Kotlin.kotlin.IllegalArgumentException_init_pdl1vj$; - var NoSuchElementException = Kotlin.kotlin.NoSuchElementException; - var IndexedValue = Kotlin.kotlin.collections.IndexedValue; - var IndexOutOfBoundsException = Kotlin.kotlin.IndexOutOfBoundsException; - var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init_0 = Kotlin.kotlin.collections.ArrayList_init_287e2$; - var HashSet_init = Kotlin.kotlin.collections.HashSet_init_287e2$; - var LinkedHashSet_init = Kotlin.kotlin.collections.LinkedHashSet_init_287e2$; - var to = Kotlin.kotlin.to_ujzrz7$; - var indexOf = Kotlin.kotlin.collections.indexOf_mjy6jw$; - var createCoroutineUnintercepted = Kotlin.kotlin.coroutines.intrinsics.createCoroutineUnintercepted_x18nsh$; - var createCoroutineUnintercepted_0 = Kotlin.kotlin.coroutines.intrinsics.createCoroutineUnintercepted_3a617i$; - var shuffle = Kotlin.kotlin.collections.shuffle_vvxzk3$; - var RuntimeException_init = Kotlin.kotlin.RuntimeException_init_pdl1vj$; - var IllegalStateException = Kotlin.kotlin.IllegalStateException; - var hashCode = Kotlin.hashCode; - var L2147483647 = Kotlin.Long.fromInt(2147483647); - var coerceIn = Kotlin.kotlin.ranges.coerceIn_ekzx8g$; - var HashSet_init_0 = Kotlin.kotlin.collections.HashSet_init_ww73n8$; - var get_lastIndex = Kotlin.kotlin.collections.get_lastIndex_55thoc$; - var NoSuchElementException_init = Kotlin.kotlin.NoSuchElementException_init; - var MutableIterator = Kotlin.kotlin.collections.MutableIterator; - var AbstractMutableList = Kotlin.kotlin.collections.AbstractMutableList; - AbstractCoroutine.prototype = Object.create(JobSupport.prototype); - AbstractCoroutine.prototype.constructor = AbstractCoroutine; - CancelHandler.prototype = Object.create(CancelHandlerBase.prototype); - CancelHandler.prototype.constructor = CancelHandler; - AwaitAll$DisposeHandlersOnCancel.prototype = Object.create(CancelHandler.prototype); - AwaitAll$DisposeHandlersOnCancel.prototype.constructor = AwaitAll$DisposeHandlersOnCancel; - CompletionHandlerBase.prototype = Object.create(LinkedListNode.prototype); - CompletionHandlerBase.prototype.constructor = CompletionHandlerBase; - JobNode.prototype = Object.create(CompletionHandlerBase.prototype); - JobNode.prototype.constructor = JobNode; - AwaitAll$AwaitAllNode.prototype = Object.create(JobNode.prototype); - AwaitAll$AwaitAllNode.prototype.constructor = AwaitAll$AwaitAllNode; - DeferredCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - DeferredCoroutine.prototype.constructor = DeferredCoroutine; - LazyDeferredCoroutine.prototype = Object.create(DeferredCoroutine.prototype); - LazyDeferredCoroutine.prototype.constructor = LazyDeferredCoroutine; - StandaloneCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - StandaloneCoroutine.prototype.constructor = StandaloneCoroutine; - LazyStandaloneCoroutine.prototype = Object.create(StandaloneCoroutine.prototype); - LazyStandaloneCoroutine.prototype.constructor = LazyStandaloneCoroutine; - ScopeCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - ScopeCoroutine.prototype.constructor = ScopeCoroutine; - UndispatchedCoroutine.prototype = Object.create(ScopeCoroutine.prototype); - UndispatchedCoroutine.prototype.constructor = UndispatchedCoroutine; - DispatchedCoroutine.prototype = Object.create(ScopeCoroutine.prototype); - DispatchedCoroutine.prototype.constructor = DispatchedCoroutine; - RemoveOnCancel.prototype = Object.create(CancelHandler.prototype); - RemoveOnCancel.prototype.constructor = RemoveOnCancel; - DisposeOnCancel.prototype = Object.create(CancelHandler.prototype); - DisposeOnCancel.prototype.constructor = DisposeOnCancel; - DispatchedTask.prototype = Object.create(SchedulerTask.prototype); - DispatchedTask.prototype.constructor = DispatchedTask; - CancellableContinuationImpl.prototype = Object.create(DispatchedTask.prototype); - CancellableContinuationImpl.prototype.constructor = CancellableContinuationImpl; - InvokeOnCancel.prototype = Object.create(CancelHandler.prototype); - InvokeOnCancel.prototype.constructor = InvokeOnCancel; - CompletableDeferredImpl.prototype = Object.create(JobSupport.prototype); - CompletableDeferredImpl.prototype.constructor = CompletableDeferredImpl; - CancelledContinuation.prototype = Object.create(CompletedExceptionally.prototype); - CancelledContinuation.prototype.constructor = CancelledContinuation; - CoroutineDispatcher.prototype = Object.create(AbstractCoroutineContextElement.prototype); - CoroutineDispatcher.prototype.constructor = CoroutineDispatcher; - CoroutineName.prototype = Object.create(AbstractCoroutineContextElement.prototype); - CoroutineName.prototype.constructor = CoroutineName; - CoroutineStart.prototype = Object.create(Enum.prototype); - CoroutineStart.prototype.constructor = CoroutineStart; - DispatchedContinuation.prototype = Object.create(DispatchedTask.prototype); - DispatchedContinuation.prototype.constructor = DispatchedContinuation; - EventLoop.prototype = Object.create(CoroutineDispatcher.prototype); - EventLoop.prototype.constructor = EventLoop; - JobSupport$ChildCompletion.prototype = Object.create(JobNode.prototype); - JobSupport$ChildCompletion.prototype.constructor = JobSupport$ChildCompletion; - JobSupport$AwaitContinuation.prototype = Object.create(CancellableContinuationImpl.prototype); - JobSupport$AwaitContinuation.prototype.constructor = JobSupport$AwaitContinuation; - JobImpl.prototype = Object.create(JobSupport.prototype); - JobImpl.prototype.constructor = JobImpl; - LinkedListHead.prototype = Object.create(LinkedListNode.prototype); - LinkedListHead.prototype.constructor = LinkedListHead; - NodeList.prototype = Object.create(LinkedListHead.prototype); - NodeList.prototype.constructor = NodeList; - InvokeOnCompletion.prototype = Object.create(JobNode.prototype); - InvokeOnCompletion.prototype.constructor = InvokeOnCompletion; - ResumeOnCompletion.prototype = Object.create(JobNode.prototype); - ResumeOnCompletion.prototype.constructor = ResumeOnCompletion; - ResumeAwaitOnCompletion.prototype = Object.create(JobNode.prototype); - ResumeAwaitOnCompletion.prototype.constructor = ResumeAwaitOnCompletion; - DisposeOnCompletion.prototype = Object.create(JobNode.prototype); - DisposeOnCompletion.prototype.constructor = DisposeOnCompletion; - SelectJoinOnCompletion.prototype = Object.create(JobNode.prototype); - SelectJoinOnCompletion.prototype.constructor = SelectJoinOnCompletion; - SelectAwaitOnCompletion.prototype = Object.create(JobNode.prototype); - SelectAwaitOnCompletion.prototype.constructor = SelectAwaitOnCompletion; - JobCancellingNode.prototype = Object.create(JobNode.prototype); - JobCancellingNode.prototype.constructor = JobCancellingNode; - InvokeOnCancelling.prototype = Object.create(JobCancellingNode.prototype); - InvokeOnCancelling.prototype.constructor = InvokeOnCancelling; - ChildHandleNode.prototype = Object.create(JobCancellingNode.prototype); - ChildHandleNode.prototype.constructor = ChildHandleNode; - ChildContinuation.prototype = Object.create(JobCancellingNode.prototype); - ChildContinuation.prototype.constructor = ChildContinuation; - MainCoroutineDispatcher.prototype = Object.create(CoroutineDispatcher.prototype); - MainCoroutineDispatcher.prototype.constructor = MainCoroutineDispatcher; - NonCancellable.prototype = Object.create(AbstractCoroutineContextElement.prototype); - NonCancellable.prototype.constructor = NonCancellable; - SupervisorJobImpl.prototype = Object.create(JobSupport.prototype); - SupervisorJobImpl.prototype.constructor = SupervisorJobImpl; - SupervisorCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - SupervisorCoroutine.prototype.constructor = SupervisorCoroutine; - TimeoutCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - TimeoutCoroutine.prototype.constructor = TimeoutCoroutine; - CancellationException.prototype = Object.create(IllegalStateException.prototype); - CancellationException.prototype.constructor = CancellationException; - TimeoutCancellationException.prototype = Object.create(CancellationException.prototype); - TimeoutCancellationException.prototype.constructor = TimeoutCancellationException; - Unconfined.prototype = Object.create(CoroutineDispatcher.prototype); - Unconfined.prototype.constructor = Unconfined; - AbstractAtomicDesc.prototype = Object.create(AtomicDesc.prototype); - AbstractAtomicDesc.prototype.constructor = AbstractAtomicDesc; - AddLastDesc.prototype = Object.create(AbstractAtomicDesc.prototype); - AddLastDesc.prototype.constructor = AddLastDesc; - AbstractSendChannel$SendBufferedDesc.prototype = Object.create(AddLastDesc.prototype); - AbstractSendChannel$SendBufferedDesc.prototype.constructor = AbstractSendChannel$SendBufferedDesc; - AbstractSendChannel$SendConflatedDesc.prototype = Object.create(AbstractSendChannel$SendBufferedDesc.prototype); - AbstractSendChannel$SendConflatedDesc.prototype.constructor = AbstractSendChannel$SendConflatedDesc; - RemoveFirstDesc.prototype = Object.create(AbstractAtomicDesc.prototype); - RemoveFirstDesc.prototype.constructor = RemoveFirstDesc; - AbstractSendChannel$TryOfferDesc.prototype = Object.create(RemoveFirstDesc.prototype); - AbstractSendChannel$TryOfferDesc.prototype.constructor = AbstractSendChannel$TryOfferDesc; - AbstractSendChannel$TryEnqueueSendDesc.prototype = Object.create(AddLastDesc.prototype); - AbstractSendChannel$TryEnqueueSendDesc.prototype.constructor = AbstractSendChannel$TryEnqueueSendDesc; - AbstractSendChannel$SendSelect.prototype = Object.create(LinkedListNode.prototype); - AbstractSendChannel$SendSelect.prototype.constructor = AbstractSendChannel$SendSelect; - AbstractSendChannel$SendBuffered.prototype = Object.create(LinkedListNode.prototype); - AbstractSendChannel$SendBuffered.prototype.constructor = AbstractSendChannel$SendBuffered; - AbstractChannel$TryPollDesc.prototype = Object.create(RemoveFirstDesc.prototype); - AbstractChannel$TryPollDesc.prototype.constructor = AbstractChannel$TryPollDesc; - AbstractChannel$TryEnqueueReceiveDesc.prototype = Object.create(AddLastDesc.prototype); - AbstractChannel$TryEnqueueReceiveDesc.prototype.constructor = AbstractChannel$TryEnqueueReceiveDesc; - AbstractChannel$RemoveReceiveOnCancel.prototype = Object.create(CancelHandler.prototype); - AbstractChannel$RemoveReceiveOnCancel.prototype.constructor = AbstractChannel$RemoveReceiveOnCancel; - Receive.prototype = Object.create(LinkedListNode.prototype); - Receive.prototype.constructor = Receive; - AbstractChannel$ReceiveElement.prototype = Object.create(Receive.prototype); - AbstractChannel$ReceiveElement.prototype.constructor = AbstractChannel$ReceiveElement; - AbstractChannel$ReceiveHasNext.prototype = Object.create(Receive.prototype); - AbstractChannel$ReceiveHasNext.prototype.constructor = AbstractChannel$ReceiveHasNext; - AbstractChannel$ReceiveSelect.prototype = Object.create(Receive.prototype); - AbstractChannel$ReceiveSelect.prototype.constructor = AbstractChannel$ReceiveSelect; - AbstractChannel.prototype = Object.create(AbstractSendChannel.prototype); - AbstractChannel.prototype.constructor = AbstractChannel; - SendElement.prototype = Object.create(LinkedListNode.prototype); - SendElement.prototype.constructor = SendElement; - Closed.prototype = Object.create(LinkedListNode.prototype); - Closed.prototype.constructor = Closed; - ArrayBroadcastChannel$Subscriber.prototype = Object.create(AbstractChannel.prototype); - ArrayBroadcastChannel$Subscriber.prototype.constructor = ArrayBroadcastChannel$Subscriber; - ArrayBroadcastChannel.prototype = Object.create(AbstractSendChannel.prototype); - ArrayBroadcastChannel.prototype.constructor = ArrayBroadcastChannel; - ArrayChannel.prototype = Object.create(AbstractChannel.prototype); - ArrayChannel.prototype.constructor = ArrayChannel; - BroadcastCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - BroadcastCoroutine.prototype.constructor = BroadcastCoroutine; - LazyBroadcastCoroutine.prototype = Object.create(BroadcastCoroutine.prototype); - LazyBroadcastCoroutine.prototype.constructor = LazyBroadcastCoroutine; - ClosedSendChannelException.prototype = Object.create(CancellationException.prototype); - ClosedSendChannelException.prototype.constructor = ClosedSendChannelException; - ClosedReceiveChannelException.prototype = Object.create(NoSuchElementException.prototype); - ClosedReceiveChannelException.prototype.constructor = ClosedReceiveChannelException; - ChannelCoroutine.prototype = Object.create(AbstractCoroutine.prototype); - ChannelCoroutine.prototype.constructor = ChannelCoroutine; - ConflatedChannel.prototype = Object.create(AbstractChannel.prototype); - ConflatedChannel.prototype.constructor = ConflatedChannel; - ConflatedBroadcastChannel$Subscriber.prototype = Object.create(ConflatedChannel.prototype); - ConflatedBroadcastChannel$Subscriber.prototype.constructor = ConflatedBroadcastChannel$Subscriber; - LinkedListChannel.prototype = Object.create(AbstractChannel.prototype); - LinkedListChannel.prototype.constructor = LinkedListChannel; - ProducerCoroutine.prototype = Object.create(ChannelCoroutine.prototype); - ProducerCoroutine.prototype.constructor = ProducerCoroutine; - RendezvousChannel.prototype = Object.create(AbstractChannel.prototype); - RendezvousChannel.prototype.constructor = RendezvousChannel; - AtomicOp.prototype = Object.create(OpDescriptor.prototype); - AtomicOp.prototype.constructor = AtomicOp; - SelectBuilderImpl$SelectOnCancelling.prototype = Object.create(JobCancellingNode.prototype); - SelectBuilderImpl$SelectOnCancelling.prototype.constructor = SelectBuilderImpl$SelectOnCancelling; - SelectBuilderImpl$AtomicSelectOp.prototype = Object.create(AtomicOp.prototype); - SelectBuilderImpl$AtomicSelectOp.prototype.constructor = SelectBuilderImpl$AtomicSelectOp; - SelectBuilderImpl$DisposeNode.prototype = Object.create(LinkedListNode.prototype); - SelectBuilderImpl$DisposeNode.prototype.constructor = SelectBuilderImpl$DisposeNode; - SelectBuilderImpl.prototype = Object.create(LinkedListHead.prototype); - SelectBuilderImpl.prototype.constructor = SelectBuilderImpl; - MutexImpl$TryLockDesc$PrepareOp.prototype = Object.create(OpDescriptor.prototype); - MutexImpl$TryLockDesc$PrepareOp.prototype.constructor = MutexImpl$TryLockDesc$PrepareOp; - MutexImpl$TryLockDesc.prototype = Object.create(AtomicDesc.prototype); - MutexImpl$TryLockDesc.prototype.constructor = MutexImpl$TryLockDesc; - MutexImpl$TryEnqueueLockDesc.prototype = Object.create(AddLastDesc.prototype); - MutexImpl$TryEnqueueLockDesc.prototype.constructor = MutexImpl$TryEnqueueLockDesc; - MutexImpl$LockedQueue.prototype = Object.create(LinkedListHead.prototype); - MutexImpl$LockedQueue.prototype.constructor = MutexImpl$LockedQueue; - MutexImpl$LockWaiter.prototype = Object.create(LinkedListNode.prototype); - MutexImpl$LockWaiter.prototype.constructor = MutexImpl$LockWaiter; - MutexImpl$LockCont.prototype = Object.create(MutexImpl$LockWaiter.prototype); - MutexImpl$LockCont.prototype.constructor = MutexImpl$LockCont; - MutexImpl$LockSelect.prototype = Object.create(MutexImpl$LockWaiter.prototype); - MutexImpl$LockSelect.prototype.constructor = MutexImpl$LockSelect; - MutexImpl$UnlockOp.prototype = Object.create(OpDescriptor.prototype); - MutexImpl$UnlockOp.prototype.constructor = MutexImpl$UnlockOp; - JsMainDispatcher.prototype = Object.create(MainCoroutineDispatcher.prototype); - JsMainDispatcher.prototype.constructor = JsMainDispatcher; - UnconfinedEventLoop.prototype = Object.create(EventLoop.prototype); - UnconfinedEventLoop.prototype.constructor = UnconfinedEventLoop; - CompletionHandlerException.prototype = Object.create(RuntimeException.prototype); - CompletionHandlerException.prototype.constructor = CompletionHandlerException; - JobCancellationException.prototype = Object.create(CancellationException.prototype); - JobCancellationException.prototype.constructor = JobCancellationException; - DispatchException.prototype = Object.create(RuntimeException.prototype); - DispatchException.prototype.constructor = DispatchException; - NodeDispatcher$ClearTimeout.prototype = Object.create(CancelHandler.prototype); - NodeDispatcher$ClearTimeout.prototype.constructor = NodeDispatcher$ClearTimeout; - NodeDispatcher.prototype = Object.create(CoroutineDispatcher.prototype); - NodeDispatcher.prototype.constructor = NodeDispatcher; - MessageQueue.prototype = Object.create(ArrayQueue.prototype); - MessageQueue.prototype.constructor = MessageQueue; - WindowDispatcher$queue$ObjectLiteral.prototype = Object.create(MessageQueue.prototype); - WindowDispatcher$queue$ObjectLiteral.prototype.constructor = WindowDispatcher$queue$ObjectLiteral; - WindowDispatcher.prototype = Object.create(CoroutineDispatcher.prototype); - WindowDispatcher.prototype.constructor = WindowDispatcher; - CopyOnWriteList.prototype = Object.create(AbstractMutableList.prototype); - CopyOnWriteList.prototype.constructor = CopyOnWriteList; - function AbstractCoroutine(parentContext, active) { - if (active === void 0) - active = true; - JobSupport.call(this, active); - this.parentContext = parentContext; - this.context_p8rm81$_0 = this.parentContext.plus_1fupul$(this); - } - Object.defineProperty(AbstractCoroutine.prototype, 'context', { - get: function() { - return this.context_p8rm81$_0; -}}); - Object.defineProperty(AbstractCoroutine.prototype, 'coroutineContext', { - get: function() { - return this.context; -}}); - Object.defineProperty(AbstractCoroutine.prototype, 'isActive', { - get: function() { - return Kotlin.callGetter(this, JobSupport.prototype, 'isActive'); -}}); - AbstractCoroutine.prototype.initParentJob_8be2vx$ = function() { - this.initParentJobInternal_8vd9i7$(this.parentContext.get_j3r2sn$(Job$Key_getInstance())); -}; - AbstractCoroutine.prototype.onStart = function() { -}; - AbstractCoroutine.prototype.onStartInternal = function() { - this.onStart(); -}; - AbstractCoroutine.prototype.onCancellation_dbl4no$ = function(cause) { -}; - AbstractCoroutine.prototype.onCompleted_11rb$ = function(value) { -}; - AbstractCoroutine.prototype.onCompletedExceptionally_tcv7n7$ = function(exception) { -}; - AbstractCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - var tmp$; - if (Kotlin.isType(state, CompletedExceptionally)) - this.onCompletedExceptionally_tcv7n7$(state.cause); - else { - this.onCompleted_11rb$((tmp$ = state) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - } -}; - Object.defineProperty(AbstractCoroutine.prototype, 'defaultResumeMode', { - get: function() { - return 0; -}}); - AbstractCoroutine.prototype.resumeWith_tl1gpc$ = function(result) { - this.makeCompletingOnce_42w2xh$(toState(result), this.defaultResumeMode); -}; - AbstractCoroutine.prototype.handleOnCompletionException_tcv7n7$ = function(exception) { - handleCoroutineException(this.parentContext, exception, this); -}; - AbstractCoroutine.prototype.nameString = function() { - var tmp$; - tmp$ = get_coroutineName(this.context); - if (tmp$ == null) { - return JobSupport.prototype.nameString.call(this); - } - var coroutineName = tmp$; - return '"' + coroutineName + '"' + ':' + JobSupport.prototype.nameString.call(this); -}; - AbstractCoroutine.prototype.start_cfq2d3$ = function(start, block) { - this.initParentJob_8be2vx$(); - start.invoke_810yno$(block, this); -}; - AbstractCoroutine.prototype.start_b5ul0p$ = function(start, receiver, block) { - this.initParentJob_8be2vx$(); - start.invoke_3o0yor$(block, receiver, this); -}; - AbstractCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AbstractCoroutine', - interfaces: [CoroutineScope, Continuation, JobSupport, Job]}; - function ExperimentalCoroutinesApi() { - } - ExperimentalCoroutinesApi.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ExperimentalCoroutinesApi', - interfaces: [Annotation]}; - function ObsoleteCoroutinesApi() { - } - ObsoleteCoroutinesApi.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ObsoleteCoroutinesApi', - interfaces: [Annotation]}; - function InternalCoroutinesApi() { - } - InternalCoroutinesApi.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'InternalCoroutinesApi', - interfaces: [Annotation]}; - function Coroutine$awaitAll(deferreds_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$deferreds = deferreds_0; - } - Coroutine$awaitAll.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$awaitAll.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$awaitAll.prototype.constructor = Coroutine$awaitAll; - Coroutine$awaitAll.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (this.local$deferreds.length === 0) { - return emptyList(); - } else { - this.state_0 = 2; - this.result_0 = (new AwaitAll(this.local$deferreds)).await(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } - case 1: - throw this.exception_0; - case 2: - return this.result_0; - case 3: - return; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function awaitAll(deferreds_0, continuation_0, suspended) { - var instance = new Coroutine$awaitAll(deferreds_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - var copyToArray = Kotlin.kotlin.collections.copyToArray; - function Coroutine$awaitAll_0($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$$receiver = $receiver_0; - } - Coroutine$awaitAll_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$awaitAll_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$awaitAll_0.prototype.constructor = Coroutine$awaitAll_0; - Coroutine$awaitAll_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (this.local$$receiver.isEmpty()) { - return emptyList(); - } else { - this.state_0 = 2; - this.result_0 = (new AwaitAll(copyToArray(this.local$$receiver))).await(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } - case 1: - throw this.exception_0; - case 2: - return this.result_0; - case 3: - return; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function awaitAll_0($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$awaitAll_0($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$joinAll(jobs_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$forEach$result = void 0; - this.local$tmp$ = void 0; - this.local$jobs = jobs_0; - } - Coroutine$joinAll.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$joinAll.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$joinAll.prototype.constructor = Coroutine$joinAll; - Coroutine$joinAll.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = 0; - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - if (this.local$tmp$ === this.local$jobs.length) { - this.state_0 = 5; - continue; - } - var element = this.local$jobs[this.local$tmp$]; - this.state_0 = 3; - this.result_0 = element.join(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - this.state_0 = 4; - continue; - case 4: - ++this.local$tmp$; - this.state_0 = 2; - continue; - case 5: - return this.local$forEach$result; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function joinAll(jobs_0, continuation_0, suspended) { - var instance = new Coroutine$joinAll(jobs_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$joinAll_0($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$forEach$result = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$joinAll_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$joinAll_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$joinAll_0.prototype.constructor = Coroutine$joinAll_0; - Coroutine$joinAll_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - if (!this.local$tmp$.hasNext()) { - this.state_0 = 4; - continue; - } - var element = this.local$tmp$.next(); - this.state_0 = 3; - this.result_0 = element.join(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - this.state_0 = 2; - continue; - case 4: - return this.local$forEach$result; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function joinAll_0($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$joinAll_0($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function AwaitAll(deferreds) { - this.deferreds_0 = deferreds; - this.notCompletedCount_0 = this.deferreds_0.length; - } - var Array_0 = Array; - function AwaitAll$await$lambda(this$AwaitAll) { - return function(cont) { - var size = this$AwaitAll.deferreds_0.length; - var array = Array_0(size); - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - var this$AwaitAll_0 = this$AwaitAll; - var deferred = this$AwaitAll_0.deferreds_0[i]; - deferred.start(); - var $receiver = new AwaitAll$AwaitAllNode(this$AwaitAll_0, cont, deferred); - $receiver.handle = deferred.invokeOnCompletion_f05bi3$($receiver); - array[i] = $receiver; - } - var nodes = array; - var disposer = new AwaitAll$DisposeHandlersOnCancel(this$AwaitAll, nodes); - var tmp$_0; - for (tmp$_0 = 0; tmp$_0 !== nodes.length; ++tmp$_0) { - var element = nodes[tmp$_0]; - element.disposer = disposer; - } - if (cont.isCompleted) { - disposer.disposeAll(); - } else { - cont.invokeOnCancellation_f05bi3$(disposer); - } - return Unit; -}; - } - function suspendCancellableCoroutine$lambda(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - AwaitAll.prototype.await = function(continuation) { - return suspendCancellableCoroutine$lambda(AwaitAll$await$lambda(this))(continuation); -}; - function AwaitAll$DisposeHandlersOnCancel($outer, nodes) { - this.$outer = $outer; - CancelHandler.call(this); - this.nodes_0 = nodes; - } - AwaitAll$DisposeHandlersOnCancel.prototype.disposeAll = function() { - var $receiver = this.nodes_0; - var tmp$; - for (tmp$ = 0; tmp$ !== $receiver.length; ++tmp$) { - var element = $receiver[tmp$]; - element.handle.dispose(); - } -}; - AwaitAll$DisposeHandlersOnCancel.prototype.invoke = function(cause) { - this.disposeAll(); -}; - AwaitAll$DisposeHandlersOnCancel.prototype.toString = function() { - return 'DisposeHandlersOnCancel[' + this.nodes_0 + ']'; -}; - AwaitAll$DisposeHandlersOnCancel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DisposeHandlersOnCancel', - interfaces: [CancelHandler]}; - function AwaitAll$AwaitAllNode($outer, continuation, job) { - this.$outer = $outer; - JobNode.call(this, job); - this.continuation_0 = continuation; - this.handle_45x73s$_0 = this.handle_45x73s$_0; - this.disposer = null; - } - Object.defineProperty(AwaitAll$AwaitAllNode.prototype, 'handle', { - get: function() { - if (this.handle_45x73s$_0 == null) - return throwUPAE('handle'); - return this.handle_45x73s$_0; -}, - set: function(handle) { - this.handle_45x73s$_0 = handle; -}}); - var Result = Kotlin.kotlin.Result; - AwaitAll$AwaitAllNode.prototype.invoke = function(cause) { - if (cause != null) { - var token = this.continuation_0.tryResumeWithException_tcv7n7$(cause); - if (token != null) { - this.continuation_0.completeResume_za3rmp$(token); - var disposer = this.disposer; - if (disposer != null) - disposer.disposeAll(); - } - } else if ((function(scope) {return --scope.$outer.notCompletedCount_0;})(this) === 0) { - var tmp$ = this.continuation_0; - var $receiver = this.$outer.deferreds_0; - var destination = ArrayList_init($receiver.length); - var tmp$_0; - for (tmp$_0 = 0; tmp$_0 !== $receiver.length; ++tmp$_0) { - var item = $receiver[tmp$_0]; - destination.add_11rb$(item.getCompleted()); - } - tmp$.resumeWith_tl1gpc$(new Result(destination)); - } -}; - AwaitAll$AwaitAllNode.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AwaitAllNode', - interfaces: [JobNode]}; - AwaitAll.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AwaitAll', - interfaces: []}; - function launch($receiver, context, start, block) { - if (context === void 0) - context = coroutines.EmptyCoroutineContext; - if (start === void 0) - start = CoroutineStart$DEFAULT_getInstance(); - var newContext = newCoroutineContext($receiver, context); - var coroutine = start.isLazy ? new LazyStandaloneCoroutine(newContext, block) : new StandaloneCoroutine(newContext, true); - coroutine.start_b5ul0p$(start, coroutine, block); - return coroutine; - } - function async($receiver, context, start, block) { - if (context === void 0) - context = coroutines.EmptyCoroutineContext; - if (start === void 0) - start = CoroutineStart$DEFAULT_getInstance(); - var newContext = newCoroutineContext($receiver, context); - var coroutine = start.isLazy ? new LazyDeferredCoroutine(newContext, block) : new DeferredCoroutine(newContext, true); - coroutine.start_b5ul0p$(start, coroutine, block); - return coroutine; - } - function DeferredCoroutine(parentContext, active) { - AbstractCoroutine.call(this, parentContext, active); - } - Object.defineProperty(DeferredCoroutine.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - DeferredCoroutine.prototype.getCompleted = function() { - var tmp$; - return (tmp$ = this.getCompletedInternal_8be2vx$()) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - function Coroutine$await($this, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.$this = $this; - } - Coroutine$await.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$await.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$await.prototype.constructor = Coroutine$await; - Coroutine$await.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$; - this.state_0 = 2; - this.result_0 = this.$this.awaitInternal_8be2vx$(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - throw this.exception_0; - case 2: - return (tmp$ = this.result_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - DeferredCoroutine.prototype.await = function(continuation_0, suspended) { - var instance = new Coroutine$await(this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - Object.defineProperty(DeferredCoroutine.prototype, 'onAwait', { - get: function() { - return this; -}}); - DeferredCoroutine.prototype.registerSelectClause1_o3xas4$ = function(select, block) { - this.registerSelectClause1Internal_u6kgbh$(select, block); -}; - DeferredCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DeferredCoroutine', - interfaces: [SelectClause1, Deferred, AbstractCoroutine]}; - function LazyDeferredCoroutine(parentContext, block) { - DeferredCoroutine.call(this, parentContext, false); - this.block_0 = block; - } - LazyDeferredCoroutine.prototype.onStart = function() { - var value = this.block_0; - var checkNotNull$result; - if (value == null) { - var message = 'Already started'; - throw IllegalStateException_init(message.toString()); - } else { - checkNotNull$result = value; - } - var block = checkNotNull$result; - this.block_0 = null; - startCoroutineCancellable_0(block, this, this); -}; - LazyDeferredCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LazyDeferredCoroutine', - interfaces: [DeferredCoroutine]}; - function withContext$lambda(closure$context, closure$block) { - return function(uCont) { - var oldContext = uCont.context; - var newContext = oldContext.plus_1fupul$(closure$context); - if (newContext === oldContext) { - var coroutine = new ScopeCoroutine(newContext, uCont); - return startUndispatchedOrReturn(coroutine, coroutine, closure$block); - } - if (equals(newContext.get_j3r2sn$(ContinuationInterceptor.Key), oldContext.get_j3r2sn$(ContinuationInterceptor.Key))) { - var coroutine_0 = new UndispatchedCoroutine(newContext, uCont); - return startUndispatchedOrReturn(coroutine_0, coroutine_0, closure$block); - } - var coroutine_1 = new DispatchedCoroutine(newContext, uCont); - coroutine_1.initParentJob_8be2vx$(); - startCoroutineCancellable_0(closure$block, coroutine_1, coroutine_1); - return coroutine_1.getResult(); -}; - } - function withContext(context, block, continuation) { - return withContext$lambda(context, block)(continuation); - } - function StandaloneCoroutine(parentContext, active) { - AbstractCoroutine.call(this, parentContext, active); - } - Object.defineProperty(StandaloneCoroutine.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - StandaloneCoroutine.prototype.handleJobException_tcv7n7$ = function(exception) { - handleExceptionViaHandler(this.parentContext, exception); -}; - StandaloneCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'StandaloneCoroutine', - interfaces: [AbstractCoroutine]}; - function LazyStandaloneCoroutine(parentContext, block) { - StandaloneCoroutine.call(this, parentContext, false); - this.block_0 = block; - } - LazyStandaloneCoroutine.prototype.onStart = function() { - var value = this.block_0; - var checkNotNull$result; - if (value == null) { - var message = 'Already started'; - throw IllegalStateException_init(message.toString()); - } else { - checkNotNull$result = value; - } - var block = checkNotNull$result; - this.block_0 = null; - startCoroutineCancellable_0(block, this, this); -}; - LazyStandaloneCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LazyStandaloneCoroutine', - interfaces: [StandaloneCoroutine]}; - function UndispatchedCoroutine(context, uCont) { - ScopeCoroutine.call(this, context, uCont); - } - Object.defineProperty(UndispatchedCoroutine.prototype, 'defaultResumeMode', { - get: function() { - return 3; -}}); - UndispatchedCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'UndispatchedCoroutine', - interfaces: [ScopeCoroutine]}; - var UNDECIDED; - var SUSPENDED; - var RESUMED; - function DispatchedCoroutine(context, uCont) { - ScopeCoroutine.call(this, context, uCont); - this._decision_0 = 0; - } - Object.defineProperty(DispatchedCoroutine.prototype, 'defaultResumeMode', { - get: function() { - return 0; -}}); - DispatchedCoroutine.prototype.trySuspend_0 = function() { - var $receiver = this._decision_0; - while (true) { - switch (this._decision_0) { - case 0: - if ((function(scope) {return scope._decision_0 === 0 ? function() {scope._decision_0 = 1;return true;}() : false})(this)) - return true; - break; - case 2: - return false; - default: - throw IllegalStateException_init('Already suspended'.toString()); - } - } -}; - DispatchedCoroutine.prototype.tryResume_0 = function() { - var $receiver = this._decision_0; - while (true) { - switch (this._decision_0) { - case 0: - if ((function(scope) {return scope._decision_0 === 0 ? function() {scope._decision_0 = 2;return true;}() : false})(this)) - return true; - break; - case 1: - return false; - default: - throw IllegalStateException_init('Already resumed'.toString()); - } - } -}; - DispatchedCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - if (this.tryResume_0()) - return; - ScopeCoroutine.prototype.onCompletionInternal_5apgvt$.call(this, state, mode, suppressed); -}; - DispatchedCoroutine.prototype.getResult = function() { - var tmp$; - if (this.trySuspend_0()) - return COROUTINE_SUSPENDED; - var state = unboxState(this.state_8be2vx$); - if (Kotlin.isType(state, CompletedExceptionally)) - throw state.cause; - return (tmp$ = state) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - DispatchedCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DispatchedCoroutine', - interfaces: [ScopeCoroutine]}; - function CancellableContinuation() { - } - CancellableContinuation.prototype.tryResume_19pj23$ = function(value, idempotent, callback$default) { - if (idempotent === void 0) - idempotent = null; - return callback$default ? callback$default(value, idempotent) : this.tryResume_19pj23$$default(value, idempotent); -}; - CancellableContinuation.prototype.cancel_dbl4no$ = function(cause, callback$default) { - if (cause === void 0) - cause = null; - return callback$default ? callback$default(cause) : this.cancel_dbl4no$$default(cause); -}; - CancellableContinuation.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'CancellableContinuation', - interfaces: [Continuation]}; - function suspendCancellableCoroutine$lambda_0(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - function suspendCancellableCoroutine(block_0, continuation) { - return suspendCancellableCoroutine$lambda_0(block_0)(continuation); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.suspendCancellableCoroutine_o6sdx9$', wrapFunction(function() { - var intercepted = Kotlin.kotlin.coroutines.intrinsics.intercepted_f9mg25$; - var CancellableContinuationImpl_init = _.kotlinx.coroutines.CancellableContinuationImpl; - function suspendCancellableCoroutine$lambda(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl_init(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - return function(block_0, continuation) { - Kotlin.suspendCall(suspendCancellableCoroutine$lambda(block_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function suspendAtomicCancellableCoroutine$lambda(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 0); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - function suspendAtomicCancellableCoroutine(block_0, continuation) { - return suspendAtomicCancellableCoroutine$lambda(block_0)(continuation); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.suspendAtomicCancellableCoroutine_o6sdx9$', wrapFunction(function() { - var intercepted = Kotlin.kotlin.coroutines.intrinsics.intercepted_f9mg25$; - var CancellableContinuationImpl_init = _.kotlinx.coroutines.CancellableContinuationImpl; - function suspendAtomicCancellableCoroutine$lambda(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl_init(intercepted(uCont), 0); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - return function(block_0, continuation) { - Kotlin.suspendCall(suspendAtomicCancellableCoroutine$lambda(block_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function suspendAtomicCancellableCoroutine$lambda_0(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 0); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - function suspendAtomicCancellableCoroutine_0(holdCancellability_0, block_0, continuation) { - if (holdCancellability_0 === void 0) - holdCancellability_0 = false; - return suspendAtomicCancellableCoroutine$lambda_0(block_0)(continuation); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.suspendAtomicCancellableCoroutine_i8nyj0$', wrapFunction(function() { - var intercepted = Kotlin.kotlin.coroutines.intrinsics.intercepted_f9mg25$; - var CancellableContinuationImpl_init = _.kotlinx.coroutines.CancellableContinuationImpl; - function suspendAtomicCancellableCoroutine$lambda(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl_init(intercepted(uCont), 0); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - return function(holdCancellability_0, block_0, continuation) { - if (holdCancellability_0 === void 0) - holdCancellability_0 = false; - Kotlin.suspendCall(suspendAtomicCancellableCoroutine$lambda(block_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function removeOnCancellation($receiver, node) { - $receiver.invokeOnCancellation_f05bi3$(new RemoveOnCancel(node)); - } - function disposeOnCancellation($receiver, handle) { - $receiver.invokeOnCancellation_f05bi3$(new DisposeOnCancel(handle)); - } - function RemoveOnCancel(node) { - CancelHandler.call(this); - this.node_0 = node; - } - RemoveOnCancel.prototype.invoke = function(cause) { - this.node_0.remove(); -}; - RemoveOnCancel.prototype.toString = function() { - return 'RemoveOnCancel[' + this.node_0 + ']'; -}; - RemoveOnCancel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'RemoveOnCancel', - interfaces: [CancelHandler]}; - function DisposeOnCancel(handle) { - CancelHandler.call(this); - this.handle_0 = handle; - } - DisposeOnCancel.prototype.invoke = function(cause) { - this.handle_0.dispose(); -}; - DisposeOnCancel.prototype.toString = function() { - return 'DisposeOnCancel[' + this.handle_0 + ']'; -}; - DisposeOnCancel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DisposeOnCancel', - interfaces: [CancelHandler]}; - var UNDECIDED_0; - var SUSPENDED_0; - var RESUMED_0; - function CancellableContinuationImpl(delegate, resumeMode) { - DispatchedTask.call(this, resumeMode); - this.delegate_dhbmku$_0 = delegate; - this.context_xycjfy$_0 = this.delegate.context; - this._decision_0 = 0; - this._state_0 = Active_getInstance(); - this.parentHandle_0 = null; - } - Object.defineProperty(CancellableContinuationImpl.prototype, 'delegate', { - get: function() { - return this.delegate_dhbmku$_0; -}}); - Object.defineProperty(CancellableContinuationImpl.prototype, 'context', { - get: function() { - return this.context_xycjfy$_0; -}}); - Object.defineProperty(CancellableContinuationImpl.prototype, 'state_8be2vx$', { - get: function() { - return this._state_0; -}}); - Object.defineProperty(CancellableContinuationImpl.prototype, 'isActive', { - get: function() { - return Kotlin.isType(this.state_8be2vx$, NotCompleted); -}}); - Object.defineProperty(CancellableContinuationImpl.prototype, 'isCompleted', { - get: function() { - return !Kotlin.isType(this.state_8be2vx$, NotCompleted); -}}); - Object.defineProperty(CancellableContinuationImpl.prototype, 'isCancelled', { - get: function() { - return Kotlin.isType(this.state_8be2vx$, CancelledContinuation); -}}); - CancellableContinuationImpl.prototype.initCancellability = function() { -}; - CancellableContinuationImpl.prototype.installParentCancellationHandler_0 = function() { - var tmp$; - if (this.isCompleted) - return; - tmp$ = this.delegate.context.get_j3r2sn$(Job$Key_getInstance()); - if (tmp$ == null) { - return; - } - var parent = tmp$; - parent.start(); - var handle = parent.invokeOnCompletion_ct2b2z$(true, void 0, new ChildContinuation(parent, this)); - this.parentHandle_0 = handle; - if (this.isCompleted) { - handle.dispose(); - this.parentHandle_0 = NonDisposableHandle_getInstance(); - } -}; - Object.defineProperty(CancellableContinuationImpl.prototype, 'callerFrame', { - get: function() { - var tmp$; - return Kotlin.isType(tmp$ = this.delegate, CoroutineStackFrame) ? tmp$ : null; -}}); - CancellableContinuationImpl.prototype.getStackTraceElement = function() { - return null; -}; - CancellableContinuationImpl.prototype.takeState = function() { - return this.state_8be2vx$; -}; - CancellableContinuationImpl.prototype.cancel_dbl4no$$default = function(cause) { - var $receiver = this._state_0; - loop_label: - while (true) { - var state = this._state_0; - action$break: - do { - if (!Kotlin.isType(state, NotCompleted)) - return false; - var update = new CancelledContinuation(this, cause, Kotlin.isType(state, CancelHandler)); - if (!(function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) - break action$break; - if (Kotlin.isType(state, CancelHandler)) { - try { - state.invoke(cause); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - handleCoroutineException(this.context, new CompletionHandlerException('Exception in cancellation handler for ' + this, ex)); - } else - throw ex; -} - } - this.disposeParentHandle_0(); - this.dispatchResume_0(0); - return true; - } while (false); - } -}; - CancellableContinuationImpl.prototype.invokeHandlerSafely_0 = function(block) { - try { - block(); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - handleCoroutineException(this.context, new CompletionHandlerException('Exception in cancellation handler for ' + this, ex)); - } else - throw ex; -} -}; - CancellableContinuationImpl.prototype.getContinuationCancellationCause_dqr1mp$ = function(parent) { - return parent.getCancellationException(); -}; - CancellableContinuationImpl.prototype.trySuspend_0 = function() { - var $receiver = this._decision_0; - while (true) { - switch (this._decision_0) { - case 0: - if ((function(scope) {return scope._decision_0 === 0 ? function() {scope._decision_0 = 1;return true;}() : false})(this)) - return true; - break; - case 2: - return false; - default: - throw IllegalStateException_init('Already suspended'.toString()); - } - } -}; - CancellableContinuationImpl.prototype.tryResume_0 = function() { - var $receiver = this._decision_0; - while (true) { - switch (this._decision_0) { - case 0: - if ((function(scope) {return scope._decision_0 === 0 ? function() {scope._decision_0 = 2;return true;}() : false})(this)) - return true; - break; - case 1: - return false; - default: - throw IllegalStateException_init('Already resumed'.toString()); - } - } -}; - CancellableContinuationImpl.prototype.getResult = function() { - this.installParentCancellationHandler_0(); - if (this.trySuspend_0()) - return COROUTINE_SUSPENDED; - var state = this.state_8be2vx$; - if (Kotlin.isType(state, CompletedExceptionally)) - throw recoverStackTrace(state.cause, this); - return this.getSuccessfulResult_tpy1pm$(state); -}; - CancellableContinuationImpl.prototype.resumeWith_tl1gpc$ = function(result) { - this.resumeImpl_0(toState(result), this.resumeMode); -}; - CancellableContinuationImpl.prototype.resumeWithExceptionMode_i32via$ = function(exception, mode) { - this.resumeImpl_0(new CompletedExceptionally(exception), mode); -}; - CancellableContinuationImpl.prototype.invokeOnCancellation_f05bi3$ = function(handler) { - var handleCache = { - v: null}; - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$; - if (Kotlin.isType(state, Active)) { - var tmp$_0; - if ((tmp$ = handleCache.v) != null) - tmp$_0 = tmp$; - else { - var $receiver_0 = this.makeHandler_0(handler); - handleCache.v = $receiver_0; - tmp$_0 = $receiver_0; - } - var node = tmp$_0; - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = node;return true;}() : false})(this)) - return; - } else if (Kotlin.isType(state, CancelHandler)) - this.multipleHandlersError_0(handler, state); - else if (Kotlin.isType(state, CancelledContinuation)) { - if (!state.makeHandled()) - this.multipleHandlersError_0(handler, state); - try { - var tmp$_1, tmp$_2; - invokeIt(handler, (tmp$_2 = Kotlin.isType(tmp$_1 = state, CompletedExceptionally) ? tmp$_1 : null) != null ? tmp$_2.cause : null); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - handleCoroutineException(this.context, new CompletionHandlerException('Exception in cancellation handler for ' + this, ex)); - } else - throw ex; -} - return; - } else { - return; - } - } -}; - CancellableContinuationImpl.prototype.multipleHandlersError_0 = function(handler, state) { - throw IllegalStateException_init(("It's prohibited to register multiple handlers, tried to register " + handler + ', already has ' + toString(state)).toString()); -}; - CancellableContinuationImpl.prototype.makeHandler_0 = function(handler) { - return Kotlin.isType(handler, CancelHandler) ? handler : new InvokeOnCancel(handler); -}; - CancellableContinuationImpl.prototype.dispatchResume_0 = function(mode) { - if (this.tryResume_0()) - return; - dispatch(this, mode); -}; - CancellableContinuationImpl.prototype.resumeImpl_0 = function(proposedUpdate, resumeMode) { - var $receiver = this._state_0; - loop_label: - while (true) { - var state = this._state_0; - action$break: - do { - if (Kotlin.isType(state, NotCompleted)) { - if (!(function(scope) {return scope._state_0 === state ? function() {scope._state_0 = proposedUpdate;return true;}() : false})(this)) - break action$break; - this.disposeParentHandle_0(); - this.dispatchResume_0(resumeMode); - return; - } else if (Kotlin.isType(state, CancelledContinuation)) - if (state.makeResumed()) - return; - this.alreadyResumedError_0(proposedUpdate); - } while (false); - } -}; - CancellableContinuationImpl.prototype.alreadyResumedError_0 = function(proposedUpdate) { - throw IllegalStateException_init(('Already resumed, but proposed with update ' + toString(proposedUpdate)).toString()); -}; - CancellableContinuationImpl.prototype.disposeParentHandle_0 = function() { - var tmp$; - if ((tmp$ = this.parentHandle_0) != null) { - tmp$.dispose(); - this.parentHandle_0 = NonDisposableHandle_getInstance(); - } -}; - CancellableContinuationImpl.prototype.tryResume_19pj23$$default = function(value, idempotent) { - var $receiver = this._state_0; - loop_label: - while (true) { - var state = this._state_0; - action$break: - do { - var tmp$; - if (Kotlin.isType(state, NotCompleted)) { - var update = idempotent == null ? value : new CompletedIdempotentResult(idempotent, value, state); - if (!(function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) - break action$break; - this.disposeParentHandle_0(); - return state; - } else if (Kotlin.isType(state, CompletedIdempotentResult)) { - if (state.idempotentResume === idempotent) { - if (!(state.result === value)) { - var message = 'Non-idempotent resume'; - throw IllegalStateException_init(message.toString()); - } - tmp$ = state.token; - } else { - tmp$ = null; - } - return tmp$; - } else - return null; - } while (false); - } -}; - CancellableContinuationImpl.prototype.tryResumeWithException_tcv7n7$ = function(exception) { - var $receiver = this._state_0; - loop_label: - while (true) { - var state = this._state_0; - action$break: - do { - if (Kotlin.isType(state, NotCompleted)) { - var update = new CompletedExceptionally(exception); - if (!(function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) - break action$break; - this.disposeParentHandle_0(); - return state; - } else - return null; - } while (false); - } -}; - CancellableContinuationImpl.prototype.completeResume_za3rmp$ = function(token) { - this.dispatchResume_0(this.resumeMode); -}; - CancellableContinuationImpl.prototype.resumeUndispatched_hyuxa3$ = function($receiver, value) { - var tmp$; - var dc = Kotlin.isType(tmp$ = this.delegate, DispatchedContinuation) ? tmp$ : null; - this.resumeImpl_0(value, (dc != null ? dc.dispatcher : null) === $receiver ? 3 : this.resumeMode); -}; - CancellableContinuationImpl.prototype.resumeUndispatchedWithException_gd0rtt$ = function($receiver, exception) { - var tmp$; - var dc = Kotlin.isType(tmp$ = this.delegate, DispatchedContinuation) ? tmp$ : null; - this.resumeImpl_0(new CompletedExceptionally(exception), (dc != null ? dc.dispatcher : null) === $receiver ? 3 : this.resumeMode); -}; - CancellableContinuationImpl.prototype.getSuccessfulResult_tpy1pm$ = function(state) { - var tmp$, tmp$_0; - return Kotlin.isType(state, CompletedIdempotentResult) ? (tmp$ = state.result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE() : (tmp$_0 = state) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); -}; - CancellableContinuationImpl.prototype.toString = function() { - return this.nameString() + '(' + toDebugString(this.delegate) + '){' + toString(this.state_8be2vx$) + '}@' + get_hexAddress(this); -}; - CancellableContinuationImpl.prototype.nameString = function() { - return 'CancellableContinuation'; -}; - CancellableContinuationImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CancellableContinuationImpl', - interfaces: [CoroutineStackFrame, CancellableContinuation, DispatchedTask]}; - function NotCompleted() { - } - NotCompleted.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'NotCompleted', - interfaces: []}; - function Active() { - Active_instance = this; - } - Active.prototype.toString = function() { - return 'Active'; -}; - Active.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Active', - interfaces: [NotCompleted]}; - var Active_instance = null; - function Active_getInstance() { - if (Active_instance === null) { - new Active(); - } - return Active_instance; - } - function CancelHandler() { - CancelHandlerBase.call(this); - } - CancelHandler.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CancelHandler', - interfaces: [NotCompleted, CancelHandlerBase]}; - function InvokeOnCancel(handler) { - CancelHandler.call(this); - this.handler_0 = handler; - } - InvokeOnCancel.prototype.invoke = function(cause) { - this.handler_0(cause); -}; - InvokeOnCancel.prototype.toString = function() { - return 'InvokeOnCancel[' + get_classSimpleName(this.handler_0) + '@' + get_hexAddress(this) + ']'; -}; - InvokeOnCancel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'InvokeOnCancel', - interfaces: [CancelHandler]}; - function CompletedIdempotentResult(idempotentResume, result, token) { - this.idempotentResume = idempotentResume; - this.result = result; - this.token = token; - } - CompletedIdempotentResult.prototype.toString = function() { - return 'CompletedIdempotentResult[' + toString(this.result) + ']'; -}; - CompletedIdempotentResult.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CompletedIdempotentResult', - interfaces: []}; - function CompletableDeferred() { - } - CompletableDeferred.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'CompletableDeferred', - interfaces: [Deferred]}; - function CompletableDeferred_0(parent) { - if (parent === void 0) - parent = null; - return new CompletableDeferredImpl(parent); - } - function CompletableDeferred_1(value) { - var $receiver = new CompletableDeferredImpl(null); - $receiver.complete_11rb$(value); - return $receiver; - } - function CompletableDeferredImpl(parent) { - JobSupport.call(this, true); - this.initParentJobInternal_8vd9i7$(parent); - } - Object.defineProperty(CompletableDeferredImpl.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - Object.defineProperty(CompletableDeferredImpl.prototype, 'onCancelComplete', { - get: function() { - return true; -}}); - CompletableDeferredImpl.prototype.getCompleted = function() { - var tmp$; - return (tmp$ = this.getCompletedInternal_8be2vx$()) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - function Coroutine$await_0($this, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.$this = $this; - } - Coroutine$await_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$await_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$await_0.prototype.constructor = Coroutine$await_0; - Coroutine$await_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$; - this.state_0 = 2; - this.result_0 = this.$this.awaitInternal_8be2vx$(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - throw this.exception_0; - case 2: - return (tmp$ = this.result_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - CompletableDeferredImpl.prototype.await = function(continuation_0, suspended) { - var instance = new Coroutine$await_0(this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - Object.defineProperty(CompletableDeferredImpl.prototype, 'onAwait', { - get: function() { - return this; -}}); - CompletableDeferredImpl.prototype.registerSelectClause1_o3xas4$ = function(select, block) { - this.registerSelectClause1Internal_u6kgbh$(select, block); -}; - CompletableDeferredImpl.prototype.complete_11rb$ = function(value) { - return this.makeCompleting_8ea4ql$(value); -}; - CompletableDeferredImpl.prototype.completeExceptionally_tcv7n7$ = function(exception) { - return this.makeCompleting_8ea4ql$(new CompletedExceptionally(exception)); -}; - CompletableDeferredImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CompletableDeferredImpl', - interfaces: [SelectClause1, CompletableDeferred, JobSupport]}; - var throwOnFailure = Kotlin.kotlin.throwOnFailure_iacion$; - function toState($receiver) { - var tmp$; - if ($receiver.isSuccess) { - var tmp$_0; - throwOnFailure($receiver); - tmp$ = (tmp$_0 = $receiver.value) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - } else - tmp$ = new CompletedExceptionally(ensureNotNull($receiver.exceptionOrNull())); - return tmp$; - } - function CompletedExceptionally(cause) { - this.cause = cause; - } - CompletedExceptionally.prototype.toString = function() { - return get_classSimpleName(this) + '[' + this.cause + ']'; -}; - CompletedExceptionally.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CompletedExceptionally', - interfaces: []}; - function CancelledContinuation(continuation, cause, handled) { - CompletedExceptionally.call(this, cause != null ? cause : new CancellationException('Continuation ' + continuation + ' was cancelled normally')); - this.resumed_0 = false; - this.handled_0 = handled; - } - CancelledContinuation.prototype.makeResumed = function() { - return (function(scope) {return scope.resumed_0 === false ? function() {scope.resumed_0 = true;return true;}() : false})(this); -}; - CancelledContinuation.prototype.makeHandled = function() { - return (function(scope) {return scope.handled_0 === false ? function() {scope.handled_0 = true;return true;}() : false})(this); -}; - CancelledContinuation.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CancelledContinuation', - interfaces: [CompletedExceptionally]}; - var isHandlerOf = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.isHandlerOf_pwz74r$', function(T_0, isT, $receiver) { - return isT($receiver); -}); - function CoroutineDispatcher() { - AbstractCoroutineContextElement.call(this, ContinuationInterceptor.Key); - } - CoroutineDispatcher.prototype.isDispatchNeeded_1fupul$ = function(context) { - return true; -}; - CoroutineDispatcher.prototype.dispatchYield_5bn72i$ = function(context, block) { - this.dispatch_5bn72i$(context, block); -}; - CoroutineDispatcher.prototype.interceptContinuation_wj8d80$ = function(continuation) { - return new DispatchedContinuation(this, continuation); -}; - CoroutineDispatcher.prototype.plus_9wrrq5$ = function(other) { - return other; -}; - CoroutineDispatcher.prototype.toString = function() { - return get_classSimpleName(this) + '@' + get_hexAddress(this); -}; - CoroutineDispatcher.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CoroutineDispatcher', - interfaces: [ContinuationInterceptor, AbstractCoroutineContextElement]}; - function handleCoroutineException(context, exception, caller) { - if (caller === void 0) - caller = null; - if (Kotlin.isType(exception, CancellationException)) - return; - var job = context.get_j3r2sn$(Job$Key_getInstance()); - if (job !== null && job !== caller && job.cancel_dbl4no$(exception)) - return; - handleExceptionViaHandler(context, exception); - } - function handleExceptionViaHandler(context, exception) { - var tmp$; - try { - if ((tmp$ = context.get_j3r2sn$(CoroutineExceptionHandler$Key_getInstance())) != null) { - tmp$.handleException_1ur55u$(context, exception); - return; - } - } catch (t) { - if (Kotlin.isType(t, Throwable)) { - handleCoroutineExceptionImpl(context, handlerException(exception, t)); - return; - } else - throw t; -} - handleCoroutineExceptionImpl(context, exception); - } - function handlerException(originalException, thrownException) { - if (originalException === thrownException) - return originalException; - return new RuntimeException('Exception while trying to handle coroutine exception', thrownException); - } - var CoroutineExceptionHandler = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.CoroutineExceptionHandler_kumrnp$', wrapFunction(function() { - var AbstractCoroutineContextElement = Kotlin.kotlin.coroutines.AbstractCoroutineContextElement; - var Kind_CLASS = Kotlin.Kind.CLASS; - var CoroutineExceptionHandler = _.kotlinx.coroutines.CoroutineExceptionHandler; - CoroutineExceptionHandler$ObjectLiteral.prototype = Object.create(AbstractCoroutineContextElement.prototype); - CoroutineExceptionHandler$ObjectLiteral.prototype.constructor = CoroutineExceptionHandler$ObjectLiteral; - function CoroutineExceptionHandler$ObjectLiteral(closure$handler, key) { - this.closure$handler = closure$handler; - AbstractCoroutineContextElement.call(this, key); - } - CoroutineExceptionHandler$ObjectLiteral.prototype.handleException_1ur55u$ = function(context, exception) { - this.closure$handler(context, exception); -}; - CoroutineExceptionHandler$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [CoroutineExceptionHandler, AbstractCoroutineContextElement]}; - return function(handler) { - return new CoroutineExceptionHandler$ObjectLiteral(handler, CoroutineExceptionHandler.Key); -}; -})); - function CoroutineExceptionHandler_0() { - CoroutineExceptionHandler$Key_getInstance(); - } - function CoroutineExceptionHandler$Key() { - CoroutineExceptionHandler$Key_instance = this; - } - CoroutineExceptionHandler$Key.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Key', - interfaces: [CoroutineContext$Key]}; - var CoroutineExceptionHandler$Key_instance = null; - function CoroutineExceptionHandler$Key_getInstance() { - if (CoroutineExceptionHandler$Key_instance === null) { - new CoroutineExceptionHandler$Key(); - } - return CoroutineExceptionHandler$Key_instance; - } - CoroutineExceptionHandler_0.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'CoroutineExceptionHandler', - interfaces: [CoroutineContext$Element]}; - function CoroutineName(name) { - CoroutineName$Key_getInstance(); - AbstractCoroutineContextElement.call(this, CoroutineName$Key_getInstance()); - this.name = name; - } - function CoroutineName$Key() { - CoroutineName$Key_instance = this; - } - CoroutineName$Key.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Key', - interfaces: [CoroutineContext$Key]}; - var CoroutineName$Key_instance = null; - function CoroutineName$Key_getInstance() { - if (CoroutineName$Key_instance === null) { - new CoroutineName$Key(); - } - return CoroutineName$Key_instance; - } - CoroutineName.prototype.toString = function() { - return 'CoroutineName(' + this.name + ')'; -}; - CoroutineName.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CoroutineName', - interfaces: [AbstractCoroutineContextElement]}; - CoroutineName.prototype.component1 = function() { - return this.name; -}; - CoroutineName.prototype.copy_61zpoe$ = function(name) { - return new CoroutineName(name === void 0 ? this.name : name); -}; - CoroutineName.prototype.hashCode = function() { - var result = 0; - result = result * 31 + Kotlin.hashCode(this.name) | 0; - return result; -}; - CoroutineName.prototype.equals = function(other) { - return this === other || (other !== null && (typeof other === 'object' && (Object.getPrototypeOf(this) === Object.getPrototypeOf(other) && Kotlin.equals(this.name, other.name)))); -}; - function CoroutineScope() { - } - CoroutineScope.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'CoroutineScope', - interfaces: []}; - function plus($receiver, context) { - return new ContextScope($receiver.coroutineContext.plus_1fupul$(context)); - } - function MainScope() { - return new ContextScope(SupervisorJob().plus_1fupul$(Dispatchers_getInstance().Main)); - } - function get_isActive($receiver) { - var tmp$, tmp$_0; - return (tmp$_0 = (tmp$ = $receiver.coroutineContext.get_j3r2sn$(Job$Key_getInstance())) != null ? tmp$.isActive : null) != null ? tmp$_0 : true; - } - function GlobalScope() { - GlobalScope_instance = this; - } - Object.defineProperty(GlobalScope.prototype, 'coroutineContext', { - get: function() { - return coroutines.EmptyCoroutineContext; -}}); - GlobalScope.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'GlobalScope', - interfaces: [CoroutineScope]}; - var GlobalScope_instance = null; - function GlobalScope_getInstance() { - if (GlobalScope_instance === null) { - new GlobalScope(); - } - return GlobalScope_instance; - } - function coroutineScope$lambda(closure$block) { - return function(uCont) { - var coroutine = new ScopeCoroutine(uCont.context, uCont); - return startUndispatchedOrReturn(coroutine, coroutine, closure$block); -}; - } - function coroutineScope(block, continuation) { - return coroutineScope$lambda(block)(continuation); - } - function CoroutineScope_0(context) { - return new ContextScope(context.get_j3r2sn$(Job$Key_getInstance()) != null ? context : context.plus_1fupul$(Job_0())); - } - var cancel = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.cancel_e9pf1l$', wrapFunction(function() { - var Job = _.kotlinx.coroutines.Job; - var IllegalStateException_init = Kotlin.kotlin.IllegalStateException_init_pdl1vj$; - return function($receiver) { - var tmp$; - var tmp$_0; - if ((tmp$ = $receiver.coroutineContext.get_j3r2sn$(Job.Key)) != null) - tmp$_0 = tmp$; - else { - throw IllegalStateException_init(('Scope cannot be cancelled because it does not have a job: ' + $receiver).toString()); - } - var job = tmp$_0; - job.cancel(); -}; -})); - function CoroutineStart(name, ordinal) { - Enum.call(this); - this.name$ = name; - this.ordinal$ = ordinal; - } - function CoroutineStart_initFields() { - CoroutineStart_initFields = function() { -}; - CoroutineStart$DEFAULT_instance = new CoroutineStart('DEFAULT', 0); - CoroutineStart$LAZY_instance = new CoroutineStart('LAZY', 1); - CoroutineStart$ATOMIC_instance = new CoroutineStart('ATOMIC', 2); - CoroutineStart$UNDISPATCHED_instance = new CoroutineStart('UNDISPATCHED', 3); - } - var CoroutineStart$DEFAULT_instance; - function CoroutineStart$DEFAULT_getInstance() { - CoroutineStart_initFields(); - return CoroutineStart$DEFAULT_instance; - } - var CoroutineStart$LAZY_instance; - function CoroutineStart$LAZY_getInstance() { - CoroutineStart_initFields(); - return CoroutineStart$LAZY_instance; - } - var CoroutineStart$ATOMIC_instance; - function CoroutineStart$ATOMIC_getInstance() { - CoroutineStart_initFields(); - return CoroutineStart$ATOMIC_instance; - } - var CoroutineStart$UNDISPATCHED_instance; - function CoroutineStart$UNDISPATCHED_getInstance() { - CoroutineStart_initFields(); - return CoroutineStart$UNDISPATCHED_instance; - } - CoroutineStart.prototype.invoke_810yno$ = function(block, completion) { - switch (this.name) { - case 'DEFAULT': - startCoroutineCancellable(block, completion); - break; - case 'ATOMIC': - startCoroutine(block, completion); - break; - case 'UNDISPATCHED': - startCoroutineUndispatched(block, completion); - break; - case 'LAZY': - break; - default: - Kotlin.noWhenBranchMatched(); - break; - } -}; - CoroutineStart.prototype.invoke_3o0yor$ = function(block, receiver, completion) { - switch (this.name) { - case 'DEFAULT': - startCoroutineCancellable_0(block, receiver, completion); - break; - case 'ATOMIC': - startCoroutine_0(block, receiver, completion); - break; - case 'UNDISPATCHED': - startCoroutineUndispatched_0(block, receiver, completion); - break; - case 'LAZY': - break; - default: - Kotlin.noWhenBranchMatched(); - break; - } -}; - Object.defineProperty(CoroutineStart.prototype, 'isLazy', { - get: function() { - return this === CoroutineStart$LAZY_getInstance(); -}}); - CoroutineStart.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CoroutineStart', - interfaces: [Enum]}; - function CoroutineStart$values() { - return [CoroutineStart$DEFAULT_getInstance(), CoroutineStart$LAZY_getInstance(), CoroutineStart$ATOMIC_getInstance(), CoroutineStart$UNDISPATCHED_getInstance()]; - } - CoroutineStart.values = CoroutineStart$values; - function CoroutineStart$valueOf(name) { - switch (name) { - case 'DEFAULT': - return CoroutineStart$DEFAULT_getInstance(); - case 'LAZY': - return CoroutineStart$LAZY_getInstance(); - case 'ATOMIC': - return CoroutineStart$ATOMIC_getInstance(); - case 'UNDISPATCHED': - return CoroutineStart$UNDISPATCHED_getInstance(); - default: - throwISE('No enum constant kotlinx.coroutines.CoroutineStart.' + name); - } - } - CoroutineStart.valueOf_61zpoe$ = CoroutineStart$valueOf; - function Deferred() { - } - Deferred.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Deferred', - interfaces: [Job]}; - function Delay() { - } - function Delay$delay$lambda(closure$time, this$Delay) { - return function(it) { - this$Delay.scheduleResumeAfterDelay_egqmvs$(closure$time, it); - return Unit; -}; - } - function suspendCancellableCoroutine$lambda_1(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - Delay.prototype.delay_s8cxhz$ = function(time, continuation) { - if (time.toNumber() <= 0) - return; - return suspendCancellableCoroutine$lambda_1(Delay$delay$lambda(time, this))(continuation); -}; - Delay.prototype.invokeOnTimeout_8irseu$ = function(timeMillis, block) { - return get_DefaultDelay().invokeOnTimeout_8irseu$(timeMillis, block); -}; - Delay.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Delay', - interfaces: []}; - function delay$lambda(closure$timeMillis) { - return function(cont) { - get_delay(cont.context).scheduleResumeAfterDelay_egqmvs$(closure$timeMillis, cont); - return Unit; -}; - } - function delay(timeMillis, continuation) { - if (timeMillis.toNumber() <= 0) - return; - return suspendCancellableCoroutine$lambda_1(delay$lambda(timeMillis))(continuation); - } - function get_delay($receiver) { - var tmp$, tmp$_0; - return (tmp$_0 = Kotlin.isType(tmp$ = $receiver.get_j3r2sn$(ContinuationInterceptor.Key), Delay) ? tmp$ : null) != null ? tmp$_0 : get_DefaultDelay(); - } - var UNDEFINED; - function executeUnconfined($receiver, contState, mode, doYield, block) { - if (doYield === void 0) - doYield = false; - var tmp$; - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (doYield && eventLoop.isUnconfinedQueueEmpty) - return false; - if (eventLoop.isUnconfinedLoopActive) { - $receiver._state_8be2vx$ = contState; - $receiver.resumeMode = mode; - eventLoop.dispatchUnconfined_4avnfa$($receiver); - tmp$ = true; - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - block(); - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - tmp$ = false; - } - return tmp$; - } - function resumeUnconfined($receiver) { - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (eventLoop.isUnconfinedLoopActive) { - eventLoop.dispatchUnconfined_4avnfa$($receiver); - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - resume($receiver, $receiver.delegate, 3); - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - } - function runUnconfinedEventLoop(eventLoop, block) { - eventLoop.incrementUseCount_6taknv$(true); - try { - block(); - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - function DispatchedContinuation(dispatcher, continuation) { - DispatchedTask.call(this, 0); - this.dispatcher = dispatcher; - this.continuation = continuation; - this._state_8be2vx$ = UNDEFINED; - var tmp$; - this.callerFrame_w1cgfa$_0 = Kotlin.isType(tmp$ = this.continuation, CoroutineStackFrame) ? tmp$ : null; - this.countOrElement_8be2vx$ = threadContextElements(this.context); - } - Object.defineProperty(DispatchedContinuation.prototype, 'callerFrame', { - get: function() { - return this.callerFrame_w1cgfa$_0; -}}); - DispatchedContinuation.prototype.getStackTraceElement = function() { - return null; -}; - DispatchedContinuation.prototype.takeState = function() { - var state = this._state_8be2vx$; - if (!(state !== UNDEFINED)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - this._state_8be2vx$ = UNDEFINED; - return state; -}; - Object.defineProperty(DispatchedContinuation.prototype, 'delegate', { - get: function() { - return this; -}}); - DispatchedContinuation.prototype.resumeWith_tl1gpc$ = function(result) { - var context = this.continuation.context; - var state = toState(result); - if (this.dispatcher.isDispatchNeeded_1fupul$(context)) { - this._state_8be2vx$ = state; - this.resumeMode = 0; - this.dispatcher.dispatch_5bn72i$(context, this); - } else { - executeUnconfined$break: - do { - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (false && eventLoop.isUnconfinedQueueEmpty) { - false; - break executeUnconfined$break; - } - if (eventLoop.isUnconfinedLoopActive) { - this._state_8be2vx$ = state; - this.resumeMode = 0; - eventLoop.dispatchUnconfined_4avnfa$(this); - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - this.context; - this.continuation.resumeWith_tl1gpc$(result); - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - } while (false); - } -}; - DispatchedContinuation.prototype.resumeCancellable_11rb$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.DispatchedContinuation.resumeCancellable_11rb$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeCancellable$lambda = wrapFunction(function() { - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var Unit_0 = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeUndispatched$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - var value = closure$value; - $receiver.resumeWith_tl1gpc$(new Result(value)); - return Unit_0; -}; -}; -}); - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $this = this$DispatchedContinuation; - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = $this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - $this.resumeWith_tl1gpc$(new Result(createFailure(exception))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - var $this_0 = this$DispatchedContinuation; - var value = closure$value; - $this_0.context; - $this_0.continuation.resumeWith_tl1gpc$(new Result(value)); - } - return Unit; -}; -}; -}); - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var DispatchedContinuation$resumeUndispatched$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - var value = closure$value; - $receiver.resumeWith_tl1gpc$(new Result(value)); - return Unit; -}; -}; -}); - return function(value) { - if (this.dispatcher.isDispatchNeeded_1fupul$(this.context)) { - this._state_8be2vx$ = value; - this.resumeMode = 1; - this.dispatcher.dispatch_5bn72i$(this.context, this); - } else { - executeUnconfined$break: - do { - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (false && eventLoop.isUnconfinedQueueEmpty) { - false; - break executeUnconfined$break; - } - if (eventLoop.isUnconfinedLoopActive) { - this._state_8be2vx$ = value; - this.resumeMode = 1; - eventLoop.dispatchUnconfined_4avnfa$(this); - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - this.resumeWith_tl1gpc$(new Result(createFailure(exception))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - this.context; - this.continuation.resumeWith_tl1gpc$(new Result(value)); - } - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - } while (false); - } -}; -})); - DispatchedContinuation.prototype.resumeCancellableWithException_tcv7n7$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.DispatchedContinuation.resumeCancellableWithException_tcv7n7$', wrapFunction(function() { - var CompletedExceptionally_init = _.kotlinx.coroutines.CompletedExceptionally; - var Unit = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeCancellableWithException$lambda = wrapFunction(function() { - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var Unit_0 = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeUndispatchedWithException$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(closure$exception, $receiver)))); - return Unit_0; -}; -}; -}); - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $this = this$DispatchedContinuation; - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = $this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - $this.resumeWith_tl1gpc$(new Result(createFailure(exception))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - var $this_0 = this$DispatchedContinuation; - var exception_0 = closure$exception; - $this_0.context; - var $receiver = $this_0.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception_0, $receiver)))); - } - return Unit; -}; -}; -}); - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var DispatchedContinuation$resumeUndispatchedWithException$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(closure$exception, $receiver)))); - return Unit; -}; -}; -}); - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - return function(exception) { - var context = this.continuation.context; - var state = new CompletedExceptionally_init(exception); - if (this.dispatcher.isDispatchNeeded_1fupul$(context)) { - this._state_8be2vx$ = new CompletedExceptionally_init(exception); - this.resumeMode = 1; - this.dispatcher.dispatch_5bn72i$(context, this); - } else { - executeUnconfined$break: - do { - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (false && eventLoop.isUnconfinedQueueEmpty) { - false; - break executeUnconfined$break; - } - if (eventLoop.isUnconfinedLoopActive) { - this._state_8be2vx$ = state; - this.resumeMode = 1; - eventLoop.dispatchUnconfined_4avnfa$(this); - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception_0 = job.getCancellationException(); - this.resumeWith_tl1gpc$(new Result(createFailure(exception_0))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - this.context; - var $receiver = this.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver)))); - } - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - } while (false); - } -}; -})); - DispatchedContinuation.prototype.resumeCancelled = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.DispatchedContinuation.resumeCancelled', wrapFunction(function() { - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function() { - var job = this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - this.resumeWith_tl1gpc$(new Result(createFailure(exception))); - return true; - } - return false; -}; -})); - DispatchedContinuation.prototype.resumeUndispatched_11rb$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.DispatchedContinuation.resumeUndispatched_11rb$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeUndispatched$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - var value = closure$value; - $receiver.resumeWith_tl1gpc$(new Result(value)); - return Unit; -}; -}; -}); - var Result = Kotlin.kotlin.Result; - return function(value) { - this.context; - this.continuation.resumeWith_tl1gpc$(new Result(value)); -}; -})); - DispatchedContinuation.prototype.resumeUndispatchedWithException_tcv7n7$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.DispatchedContinuation.resumeUndispatchedWithException_tcv7n7$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeUndispatchedWithException$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(closure$exception, $receiver)))); - return Unit; -}; -}; -}); - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(exception) { - this.context; - var $receiver = this.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver)))); -}; -})); - DispatchedContinuation.prototype.dispatchYield_1c3m6u$ = function(value) { - var context = this.continuation.context; - this._state_8be2vx$ = value; - this.resumeMode = 1; - this.dispatcher.dispatchYield_5bn72i$(context, this); -}; - DispatchedContinuation.prototype.toString = function() { - return 'DispatchedContinuation[' + this.dispatcher + ', ' + toDebugString(this.continuation) + ']'; -}; - Object.defineProperty(DispatchedContinuation.prototype, 'context', { - get: function() { - return this.continuation.context; -}}); - DispatchedContinuation.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DispatchedContinuation', - interfaces: [Continuation, CoroutineStackFrame, DispatchedTask]}; - var DispatchedContinuation$resumeCancellable$lambda = wrapFunction(function() { - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var Unit_0 = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeUndispatched$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - var value = closure$value; - $receiver.resumeWith_tl1gpc$(new Result(value)); - return Unit_0; -}; -}; -}); - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $this = this$DispatchedContinuation; - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = $this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - $this.resumeWith_tl1gpc$(new Result(createFailure(exception))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - var $this_0 = this$DispatchedContinuation; - var value = closure$value; - $this_0.context; - $this_0.continuation.resumeWith_tl1gpc$(new Result(value)); - } - return Unit; -}; -}; -}); - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var DispatchedContinuation$resumeUndispatched$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - var value = closure$value; - $receiver.resumeWith_tl1gpc$(new Result(value)); - return Unit; -}; -}; -}); - function resumeCancellable($receiver, value) { - if (Kotlin.isType($receiver, DispatchedContinuation)) { - if ($receiver.dispatcher.isDispatchNeeded_1fupul$($receiver.context)) { - $receiver._state_8be2vx$ = value; - $receiver.resumeMode = 1; - $receiver.dispatcher.dispatch_5bn72i$($receiver.context, $receiver); - } else { - executeUnconfined$break: - do { - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (false && eventLoop.isUnconfinedQueueEmpty) { - false; - break executeUnconfined$break; - } - if (eventLoop.isUnconfinedLoopActive) { - $receiver._state_8be2vx$ = value; - $receiver.resumeMode = 1; - eventLoop.dispatchUnconfined_4avnfa$($receiver); - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = $receiver.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - $receiver.context; - $receiver.continuation.resumeWith_tl1gpc$(new Result(value)); - } - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - } while (false); - } - } else { - $receiver.resumeWith_tl1gpc$(new Result(value)); - } - } - var DispatchedContinuation$resumeCancellableWithException$lambda = wrapFunction(function() { - var Job = _.kotlinx.coroutines.Job; - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var Unit_0 = Kotlin.kotlin.Unit; - var wrapFunction = Kotlin.wrapFunction; - var DispatchedContinuation$resumeUndispatchedWithException$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(closure$exception, $receiver)))); - return Unit_0; -}; -}; -}); - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $this = this$DispatchedContinuation; - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = $this.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - $this.resumeWith_tl1gpc$(new Result(createFailure(exception))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - var $this_0 = this$DispatchedContinuation; - var exception_0 = closure$exception; - $this_0.context; - var $receiver = $this_0.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception_0, $receiver)))); - } - return Unit; -}; -}; -}); - var DispatchedContinuation$resumeUndispatchedWithException$lambda = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(closure$exception, $receiver)))); - return Unit; -}; -}; -}); - function resumeCancellableWithException($receiver, exception) { - if (Kotlin.isType($receiver, DispatchedContinuation)) { - var context = $receiver.continuation.context; - var state = new CompletedExceptionally(exception); - if ($receiver.dispatcher.isDispatchNeeded_1fupul$(context)) { - $receiver._state_8be2vx$ = new CompletedExceptionally(exception); - $receiver.resumeMode = 1; - $receiver.dispatcher.dispatch_5bn72i$(context, $receiver); - } else { - executeUnconfined$break: - do { - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (false && eventLoop.isUnconfinedQueueEmpty) { - false; - break executeUnconfined$break; - } - if (eventLoop.isUnconfinedLoopActive) { - $receiver._state_8be2vx$ = state; - $receiver.resumeMode = 1; - eventLoop.dispatchUnconfined_4avnfa$($receiver); - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - var resumeCancelled$result; - resumeCancelled$break: - do { - var job = $receiver.context.get_j3r2sn$(Job.Key); - if (job != null && !job.isActive) { - var exception_0 = job.getCancellationException(); - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception_0))); - resumeCancelled$result = true; - break resumeCancelled$break; - } - resumeCancelled$result = false; - } while (false); - if (!resumeCancelled$result) { - $receiver.context; - var $receiver_0 = $receiver.continuation; - $receiver_0.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver_0)))); - } - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - } - } while (false); - } - } else { - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver)))); - } - } - function resumeDirect($receiver, value) { - if (Kotlin.isType($receiver, DispatchedContinuation)) { - $receiver.continuation.resumeWith_tl1gpc$(new Result(value)); - } else { - $receiver.resumeWith_tl1gpc$(new Result(value)); - } - } - function resumeDirectWithException($receiver, exception) { - if (Kotlin.isType($receiver, DispatchedContinuation)) { - var $receiver_0 = $receiver.continuation; - $receiver_0.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver_0)))); - } else { - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver)))); - } - } - function DispatchedTask(resumeMode) { - SchedulerTask.call(this); - this.resumeMode = resumeMode; - } - DispatchedTask.prototype.getSuccessfulResult_tpy1pm$ = function(state) { - var tmp$; - return (tmp$ = state) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - DispatchedTask.prototype.getExceptionalResult_s8jyv4$ = function(state) { - var tmp$, tmp$_0; - return (tmp$_0 = Kotlin.isType(tmp$ = state, CompletedExceptionally) ? tmp$ : null) != null ? tmp$_0.cause : null; -}; - DispatchedTask.prototype.run = function() { - var tmp$; - var taskContext = get_taskContext(this); - try { - var delegate = Kotlin.isType(tmp$ = this.delegate, DispatchedContinuation) ? tmp$ : throwCCE(); - var continuation = delegate.continuation; - var context = continuation.context; - var job = get_isCancellableMode(this.resumeMode) ? context.get_j3r2sn$(Job$Key_getInstance()) : null; - var state = this.takeState(); - if (job != null && !job.isActive) { - var exception = job.getCancellationException(); - continuation.resumeWith_tl1gpc$(new Result(createFailure(exception))); - } else { - var exception_0 = this.getExceptionalResult_s8jyv4$(state); - if (exception_0 != null) { - continuation.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception_0, continuation)))); - } else { - var value = this.getSuccessfulResult_tpy1pm$(state); - continuation.resumeWith_tl1gpc$(new Result(value)); - } - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception running ' + this, e); - } else - throw e; -} - finally { - } -}; - DispatchedTask.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DispatchedTask', - interfaces: [SchedulerTask]}; - function yieldUndispatched($receiver) { - var executeUnconfined$result; - executeUnconfined$break: - do { - var tmp$; - var eventLoop = ThreadLocalEventLoop_getInstance().eventLoop_8be2vx$; - if (true && eventLoop.isUnconfinedQueueEmpty) { - executeUnconfined$result = false; - break executeUnconfined$break; - } - if (eventLoop.isUnconfinedLoopActive) { - $receiver._state_8be2vx$ = Unit; - $receiver.resumeMode = 1; - eventLoop.dispatchUnconfined_4avnfa$($receiver); - tmp$ = true; - } else { - eventLoop.incrementUseCount_6taknv$(true); - try { - $receiver.run(); - while (eventLoop.processUnconfinedEvent()) { - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - throw new DispatchException('Unexpected exception in unconfined event loop', e); - } else - throw e; -} - finally { - eventLoop.decrementUseCount_6taknv$(true); - } - tmp$ = false; - } - executeUnconfined$result = tmp$; - } while (false); - return executeUnconfined$result; - } - function dispatch($receiver, mode) { - if (mode === void 0) - mode = 1; - var delegate = $receiver.delegate; - if (get_isDispatchedMode(mode) && Kotlin.isType(delegate, DispatchedContinuation) && get_isCancellableMode(mode) === get_isCancellableMode($receiver.resumeMode)) { - var dispatcher = delegate.dispatcher; - var context = delegate.context; - if (dispatcher.isDispatchNeeded_1fupul$(context)) { - dispatcher.dispatch_5bn72i$(context, $receiver); - } else { - resumeUnconfined($receiver); - } - } else { - resume($receiver, delegate, mode); - } - } - function resume($receiver, delegate, useMode) { - var state = $receiver.takeState(); - var exception = $receiver.getExceptionalResult_s8jyv4$(state); - if (exception != null) { - resumeWithExceptionMode(delegate, exception, useMode); - } else { - resumeMode(delegate, $receiver.getSuccessfulResult_tpy1pm$(state), useMode); - } - } - var resumeWithStackTrace = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.resumeWithStackTrace_45st6c$', wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function($receiver, exception) { - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver)))); -}; -})); - function EventLoop() { - CoroutineDispatcher.call(this); - this.useCount_0 = L0; - this.shared_0 = false; - this.unconfinedQueue_0 = null; - } - EventLoop.prototype.processNextEvent = function() { - if (!this.processUnconfinedEvent()) - return Long$Companion$MAX_VALUE; - return this.nextTime; -}; - Object.defineProperty(EventLoop.prototype, 'isEmpty', { - get: function() { - return this.isUnconfinedQueueEmpty; -}}); - Object.defineProperty(EventLoop.prototype, 'nextTime', { - get: function() { - var tmp$; - tmp$ = this.unconfinedQueue_0; - if (tmp$ == null) { - return Long$Companion$MAX_VALUE; - } - var queue = tmp$; - return queue.isEmpty ? Long$Companion$MAX_VALUE : L0; -}}); - EventLoop.prototype.processUnconfinedEvent = function() { - var tmp$, tmp$_0; - tmp$ = this.unconfinedQueue_0; - if (tmp$ == null) { - return false; - } - var queue = tmp$; - tmp$_0 = queue.removeFirstOrNull(); - if (tmp$_0 == null) { - return false; - } - var task = tmp$_0; - task.run(); - return true; -}; - EventLoop.prototype.shouldBeProcessedFromContext = function() { - return false; -}; - EventLoop.prototype.dispatchUnconfined_4avnfa$ = function(task) { - var tmp$; - var tmp$_0; - if ((tmp$ = this.unconfinedQueue_0) != null) - tmp$_0 = tmp$; - else { - var $receiver = new ArrayQueue(); - this.unconfinedQueue_0 = $receiver; - tmp$_0 = $receiver; - } - var queue = tmp$_0; - queue.addLast_trkh7z$(task); -}; - Object.defineProperty(EventLoop.prototype, 'isActive', { - get: function() { - return this.useCount_0.toNumber() > 0; -}}); - Object.defineProperty(EventLoop.prototype, 'isUnconfinedLoopActive', { - get: function() { - return this.useCount_0.compareTo_11rb$(this.delta_0(true)) >= 0; -}}); - Object.defineProperty(EventLoop.prototype, 'isUnconfinedQueueEmpty', { - get: function() { - var tmp$, tmp$_0; - return (tmp$_0 = (tmp$ = this.unconfinedQueue_0) != null ? tmp$.isEmpty : null) != null ? tmp$_0 : true; -}}); - EventLoop.prototype.delta_0 = function(unconfined) { - return unconfined ? L4294967296 : L1; -}; - EventLoop.prototype.incrementUseCount_6taknv$ = function(unconfined) { - if (unconfined === void 0) - unconfined = false; - this.useCount_0 = this.useCount_0.add(this.delta_0(unconfined)); - if (!unconfined) - this.shared_0 = true; -}; - EventLoop.prototype.decrementUseCount_6taknv$ = function(unconfined) { - if (unconfined === void 0) - unconfined = false; - this.useCount_0 = this.useCount_0.subtract(this.delta_0(unconfined)); - if (this.useCount_0.toNumber() > 0) - return; - if (!equals(this.useCount_0, L0)) { - var message = 'Extra decrementUseCount'; - throw IllegalStateException_init(message.toString()); - } - if (this.shared_0) { - this.shutdown(); - } -}; - EventLoop.prototype.shutdown = function() { -}; - EventLoop.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'EventLoop', - interfaces: [CoroutineDispatcher]}; - function ThreadLocalEventLoop() { - ThreadLocalEventLoop_instance = this; - this.ref_0 = new CommonThreadLocal(); - } - Object.defineProperty(ThreadLocalEventLoop.prototype, 'eventLoop_8be2vx$', { - get: function() { - var tmp$; - var tmp$_0; - if ((tmp$ = this.ref_0.get()) != null) - tmp$_0 = tmp$; - else { - var $receiver = createEventLoop(); - this.ref_0.set_11rb$($receiver); - tmp$_0 = $receiver; - } - return tmp$_0; -}}); - ThreadLocalEventLoop.prototype.currentOrNull_8be2vx$ = function() { - return this.ref_0.get(); -}; - ThreadLocalEventLoop.prototype.resetEventLoop_8be2vx$ = function() { - this.ref_0.set_11rb$(null); -}; - ThreadLocalEventLoop.prototype.setEventLoop_13etkv$ = function(eventLoop) { - this.ref_0.set_11rb$(eventLoop); -}; - ThreadLocalEventLoop.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'ThreadLocalEventLoop', - interfaces: []}; - var ThreadLocalEventLoop_instance = null; - function ThreadLocalEventLoop_getInstance() { - if (ThreadLocalEventLoop_instance === null) { - new ThreadLocalEventLoop(); - } - return ThreadLocalEventLoop_instance; - } - function Job() { - Job$Key_getInstance(); - } - function Job$Key() { - Job$Key_instance = this; - CoroutineExceptionHandler$Key_getInstance(); - } - Job$Key.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Key', - interfaces: [CoroutineContext$Key]}; - var Job$Key_instance = null; - function Job$Key_getInstance() { - if (Job$Key_instance === null) { - new Job$Key(); - } - return Job$Key_instance; - } - Job.prototype.cancel0 = function() { - return this.cancel_dbl4no$(null); -}; - Job.prototype.cancel_dbl4no$ = function(cause, callback$default) { - if (cause === void 0) - cause = null; - return callback$default ? callback$default(cause) : this.cancel_dbl4no$$default(cause); -}; - Job.prototype.invokeOnCompletion_ct2b2z$ = function(onCancelling, invokeImmediately, handler, callback$default) { - if (onCancelling === void 0) - onCancelling = false; - if (invokeImmediately === void 0) - invokeImmediately = true; - return callback$default ? callback$default(onCancelling, invokeImmediately, handler) : this.invokeOnCompletion_ct2b2z$$default(onCancelling, invokeImmediately, handler); -}; - Job.prototype.plus_dqr1mp$ = function(other) { - return other; -}; - Job.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Job', - interfaces: [CoroutineContext$Element]}; - function Job_0(parent) { - if (parent === void 0) - parent = null; - return new JobImpl(parent); - } - function DisposableHandle() { - } - DisposableHandle.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'DisposableHandle', - interfaces: []}; - var DisposableHandle_0 = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.DisposableHandle_o14v8n$', wrapFunction(function() { - var Kind_CLASS = Kotlin.Kind.CLASS; - var DisposableHandle = _.kotlinx.coroutines.DisposableHandle; - function DisposableHandle$ObjectLiteral(closure$block) { - this.closure$block = closure$block; - } - DisposableHandle$ObjectLiteral.prototype.dispose = function() { - this.closure$block(); -}; - DisposableHandle$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [DisposableHandle]}; - return function(block) { - return new DisposableHandle$ObjectLiteral(block); -}; -})); - function ChildJob() { - } - ChildJob.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ChildJob', - interfaces: [Job]}; - function ParentJob() { - } - ParentJob.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ParentJob', - interfaces: [Job]}; - function ChildHandle() { - } - ChildHandle.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ChildHandle', - interfaces: [DisposableHandle]}; - function disposeOnCompletion($receiver, handle) { - return $receiver.invokeOnCompletion_f05bi3$(new DisposeOnCompletion($receiver, handle)); - } - function cancelAndJoin($receiver, continuation) { - $receiver.cancel(); - return $receiver.join(continuation); - } - function cancelChildren($receiver, cause) { - if (cause === void 0) - cause = null; - var tmp$; - tmp$ = $receiver.children.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - element.cancel_dbl4no$(cause); - } - } - function cancelChildren_0($receiver) { - var tmp$; - tmp$ = $receiver.children.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - element.cancel(); - } - } - function get_isActive_0($receiver) { - var tmp$; - return ((tmp$ = $receiver.get_j3r2sn$(Job$Key_getInstance())) != null ? tmp$.isActive : null) === true; - } - function cancel0($receiver) { - var tmp$; - (tmp$ = $receiver.get_j3r2sn$(Job$Key_getInstance())) != null ? (tmp$.cancel() , Unit) : null; - return true; - } - function cancel_0($receiver) { - var tmp$; - (tmp$ = $receiver.get_j3r2sn$(Job$Key_getInstance())) != null ? (tmp$.cancel() , Unit) : null; - } - function cancel_1($receiver, cause) { - if (cause === void 0) - cause = null; - var tmp$, tmp$_0; - return (tmp$_0 = (tmp$ = $receiver.get_j3r2sn$(Job$Key_getInstance())) != null ? tmp$.cancel_dbl4no$(cause) : null) != null ? tmp$_0 : false; - } - function cancelChildren_1($receiver) { - var tmp$, tmp$_0; - if ((tmp$_0 = (tmp$ = $receiver.get_j3r2sn$(Job$Key_getInstance())) != null ? tmp$.children : null) != null) { - var tmp$_1; - tmp$_1 = tmp$_0.iterator(); - while (tmp$_1.hasNext()) { - var element = tmp$_1.next(); - element.cancel(); - } - } - } - function cancelChildren_2($receiver, cause) { - if (cause === void 0) - cause = null; - var tmp$, tmp$_0; - if ((tmp$_0 = (tmp$ = $receiver.get_j3r2sn$(Job$Key_getInstance())) != null ? tmp$.children : null) != null) { - var tmp$_1; - tmp$_1 = tmp$_0.iterator(); - while (tmp$_1.hasNext()) { - var element = tmp$_1.next(); - element.cancel_dbl4no$(cause); - } - } - } - function NonDisposableHandle() { - NonDisposableHandle_instance = this; - } - NonDisposableHandle.prototype.dispose = function() { -}; - NonDisposableHandle.prototype.childCancelled_tcv7n7$ = function(cause) { - return false; -}; - NonDisposableHandle.prototype.toString = function() { - return 'NonDisposableHandle'; -}; - NonDisposableHandle.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'NonDisposableHandle', - interfaces: [ChildHandle, DisposableHandle]}; - var NonDisposableHandle_instance = null; - function NonDisposableHandle_getInstance() { - if (NonDisposableHandle_instance === null) { - new NonDisposableHandle(); - } - return NonDisposableHandle_instance; - } - function JobSupport(active) { - this._state_v70vig$_0 = active ? EMPTY_ACTIVE : EMPTY_NEW; - this.parentHandle_ahojoo$_0 = null; - } - Object.defineProperty(JobSupport.prototype, 'key', { - get: function() { - return Job$Key_getInstance(); -}}); - JobSupport.prototype.initParentJobInternal_8vd9i7$ = function(parent) { - if (!(this.parentHandle_ahojoo$_0 == null)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - if (parent == null) { - this.parentHandle_ahojoo$_0 = NonDisposableHandle_getInstance(); - return; - } - parent.start(); - var handle = parent.attachChild_kx8v25$(this); - this.parentHandle_ahojoo$_0 = handle; - if (this.isCompleted) { - handle.dispose(); - this.parentHandle_ahojoo$_0 = NonDisposableHandle_getInstance(); - } -}; - Object.defineProperty(JobSupport.prototype, 'state_8be2vx$', { - get: function() { - var $receiver = this._state_v70vig$_0; - while (true) { - var state = this._state_v70vig$_0; - if (!Kotlin.isType(state, OpDescriptor)) - return state; - state.perform_s8jyv4$(this); - } -}}); - JobSupport.prototype.loopOnState_46ivxf$_0 = function(block) { - while (true) { - block(this.state_8be2vx$); - } -}; - Object.defineProperty(JobSupport.prototype, 'isActive', { - get: function() { - var state = this.state_8be2vx$; - return Kotlin.isType(state, Incomplete) && state.isActive; -}}); - Object.defineProperty(JobSupport.prototype, 'isCompleted', { - get: function() { - return !Kotlin.isType(this.state_8be2vx$, Incomplete); -}}); - Object.defineProperty(JobSupport.prototype, 'isCancelled', { - get: function() { - var state = this.state_8be2vx$; - return Kotlin.isType(state, CompletedExceptionally) || (Kotlin.isType(state, JobSupport$Finishing) && state.isCancelling); -}}); - JobSupport.prototype.tryFinalizeFinishingState_ke4xjq$_0 = function(state, proposedUpdate, mode) { - var tmp$, tmp$_0, tmp$_1; - if (!(this.state_8be2vx$ === state)) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init(message.toString()); - } - if (!!state.isSealed) { - var message_0 = 'Failed requirement.'; - throw IllegalArgumentException_init(message_0.toString()); - } - if (!state.isCompleting) { - var message_1 = 'Failed requirement.'; - throw IllegalArgumentException_init(message_1.toString()); - } - var proposedException = (tmp$_0 = Kotlin.isType(tmp$ = proposedUpdate, CompletedExceptionally) ? tmp$ : null) != null ? tmp$_0.cause : null; - var suppressed = { - v: false}; - var exceptions = state.sealLocked_dbl4no$(proposedException); - var finalCause = this.getFinalRootCause_3zkch4$_0(state, exceptions); - if (finalCause != null) - suppressed.v = this.suppressExceptions_kr8qts$_0(finalCause, exceptions) || finalCause !== state.rootCause; - var finalException = finalCause; - if (finalException == null) - tmp$_1 = proposedUpdate; - else if (finalException === proposedException) - tmp$_1 = proposedUpdate; - else - tmp$_1 = new CompletedExceptionally(finalException); - var finalState = tmp$_1; - if (finalException != null && !this.cancelParent_7dutpz$_0(finalException)) { - this.handleJobException_tcv7n7$(finalException); - } - if (!(function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = boxIncomplete(finalState);return true;}() : false})(this)) { - var message_2 = 'Unexpected state: ' + toString(this._state_v70vig$_0) + ', expected: ' + state + ', update: ' + toString(finalState); - throw IllegalArgumentException_init(message_2.toString()); - } - this.completeStateFinalization_nn37gt$_0(state, finalState, mode, suppressed.v); - return true; -}; - JobSupport.prototype.getFinalRootCause_3zkch4$_0 = function(state, exceptions) { - var tmp$; - if (exceptions.isEmpty()) { - if (state.isCancelling) - return this.createJobCancellationException_sy2yj3$_0(); - return null; - } - var firstOrNull$result; - firstOrNull$break: - do { - var tmp$_0; - tmp$_0 = exceptions.iterator(); - while (tmp$_0.hasNext()) { - var element = tmp$_0.next(); - if (!Kotlin.isType(element, CancellationException)) { - firstOrNull$result = element; - break firstOrNull$break; - } - } - firstOrNull$result = null; - } while (false); - return (tmp$ = firstOrNull$result) != null ? tmp$ : exceptions.get_za3lpa$(0); -}; - JobSupport.prototype.suppressExceptions_kr8qts$_0 = function(rootCause, exceptions) { - var tmp$; - if (exceptions.size <= 1) - return false; - var seenExceptions = identitySet(exceptions.size); - var suppressed = false; - tmp$ = exceptions.iterator(); - while (tmp$.hasNext()) { - var exception = tmp$.next(); - var unwrapped = unwrap(exception); - if (unwrapped !== rootCause && !Kotlin.isType(unwrapped, CancellationException) && seenExceptions.add_11rb$(unwrapped)) { - suppressed = true; - } - } - return suppressed; -}; - JobSupport.prototype.tryFinalizeSimpleState_8el5e4$_0 = function(state, update, mode) { - if (!(Kotlin.isType(state, Empty) || Kotlin.isType(state, JobNode))) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - if (!!Kotlin.isType(update, CompletedExceptionally)) { - var message_0 = 'Check failed.'; - throw IllegalStateException_init(message_0.toString()); - } - if (!(function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = boxIncomplete(update);return true;}() : false})(this)) - return false; - this.completeStateFinalization_nn37gt$_0(state, update, mode, false); - return true; -}; - JobSupport.prototype.completeStateFinalization_nn37gt$_0 = function(state, update, mode, suppressed) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - if ((tmp$ = this.parentHandle_ahojoo$_0) != null) { - tmp$.dispose(); - this.parentHandle_ahojoo$_0 = NonDisposableHandle_getInstance(); - } - var cause = (tmp$_1 = Kotlin.isType(tmp$_0 = update, CompletedExceptionally) ? tmp$_0 : null) != null ? tmp$_1.cause : null; - if (!this.get_isCancelling_dpdoz8$_0(state)) - this.onCancellation_dbl4no$(cause); - if (Kotlin.isType(state, JobNode)) { - try { - state.invoke(cause); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - this.handleOnCompletionException_tcv7n7$(new CompletionHandlerException('Exception in completion handler ' + state + ' for ' + this, ex)); - } else - throw ex; -} - } else { - (tmp$_2 = state.list) != null ? (this.notifyCompletion_mgxta4$_0(tmp$_2, cause) , Unit) : null; - } - this.onCompletionInternal_5apgvt$(update, mode, suppressed); -}; - JobSupport.prototype.notifyCancelling_xkpzb8$_0 = function(list, cause) { - this.onCancellation_dbl4no$(cause); - var tmp$; - var exception = { - v: null}; - var cur = list._next; - while (!equals(cur, list)) { - if (Kotlin.isType(cur, JobCancellingNode)) { - var node = cur; - var tmp$_0; - try { - node.invoke(cause); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - if (((tmp$_0 = exception.v) != null ? tmp$_0 : null) == null) { - exception.v = new CompletionHandlerException('Exception in completion handler ' + node + ' for ' + this, ex); - } - } else - throw ex; -} - } - cur = cur._next; - } - if ((tmp$ = exception.v) != null) { - this.handleOnCompletionException_tcv7n7$(tmp$); - } - this.cancelParent_7dutpz$_0(cause); -}; - JobSupport.prototype.notifyCompletion_mgxta4$_0 = function($receiver, cause) { - var tmp$; - var exception = { - v: null}; - var cur = $receiver._next; - while (!equals(cur, $receiver)) { - if (Kotlin.isType(cur, JobNode)) { - var node = cur; - var tmp$_0; - try { - node.invoke(cause); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - if (((tmp$_0 = exception.v) != null ? tmp$_0 : null) == null) { - exception.v = new CompletionHandlerException('Exception in completion handler ' + node + ' for ' + this, ex); - } - } else - throw ex; -} - } - cur = cur._next; - } - if ((tmp$ = exception.v) != null) { - this.handleOnCompletionException_tcv7n7$(tmp$); - } -}; - JobSupport.prototype.notifyHandlers_alhslr$_0 = wrapFunction(function() { - var equals = Kotlin.equals; - return function(T_0, isT, list, cause) { - var tmp$; - var exception = { - v: null}; - var cur = list._next; - while (!equals(cur, list)) { - if (isT(cur)) { - var node = cur; - var tmp$_0; - try { - node.invoke(cause); - } catch (ex) { - if (Kotlin.isType(ex, Throwable)) { - if (((tmp$_0 = exception.v) != null ? tmp$_0 : null) == null) { - exception.v = new CompletionHandlerException('Exception in completion handler ' + node + ' for ' + this, ex); - } - } else - throw ex; -} - } - cur = cur._next; - } - if ((tmp$ = exception.v) != null) { - this.handleOnCompletionException_tcv7n7$(tmp$); - } -}; -}); - JobSupport.prototype.start = function() { - while (true) { - switch (this.startInternal_tp1bqd$_0(this.state_8be2vx$)) { - case 0: - return false; - case 1: - return true; - } - } -}; - JobSupport.prototype.startInternal_tp1bqd$_0 = function(state) { - if (Kotlin.isType(state, Empty)) { - if (state.isActive) - return 0; - if (!(function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = EMPTY_ACTIVE;return true;}() : false})(this)) - return -1; - this.onStartInternal(); - return 1; - } else if (Kotlin.isType(state, InactiveNodeList)) { - if (!(function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = state.list;return true;}() : false})(this)) - return -1; - this.onStartInternal(); - return 1; - } else - return 0; -}; - JobSupport.prototype.onStartInternal = function() { -}; - JobSupport.prototype.getCancellationException = function() { - var tmp$, tmp$_0, tmp$_1; - var state = this.state_8be2vx$; - if (Kotlin.isType(state, JobSupport$Finishing)) { - var tmp$_2; - if ((tmp$_0 = (tmp$ = state.rootCause) != null ? this.toCancellationException_rwe8xh$_0(tmp$, 'Job is cancelling') : null) != null) - tmp$_2 = tmp$_0; - else { - throw IllegalStateException_init(('Job is still new or active: ' + this).toString()); - } - tmp$_1 = tmp$_2; - } else if (Kotlin.isType(state, Incomplete)) { - throw IllegalStateException_init(('Job is still new or active: ' + this).toString()); - } else if (Kotlin.isType(state, CompletedExceptionally)) - tmp$_1 = this.toCancellationException_rwe8xh$_0(state.cause, 'Job was cancelled'); - else - tmp$_1 = new JobCancellationException('Job has completed normally', null, this); - return tmp$_1; -}; - JobSupport.prototype.toCancellationException_rwe8xh$_0 = function($receiver, message) { - var tmp$, tmp$_0; - return (tmp$_0 = Kotlin.isType(tmp$ = $receiver, CancellationException) ? tmp$ : null) != null ? tmp$_0 : new JobCancellationException(message, $receiver, this); -}; - JobSupport.prototype.getCompletionCause = function() { - while (true) { - var state = this.state_8be2vx$; - var tmp$, tmp$_0; - if (Kotlin.isType(state, JobSupport$Finishing)) { - var tmp$_1; - if ((tmp$ = state.rootCause) != null) - tmp$_1 = tmp$; - else { - throw IllegalStateException_init(('Job is still new or active: ' + this).toString()); - } - tmp$_0 = tmp$_1; - } else if (Kotlin.isType(state, Incomplete)) { - throw IllegalStateException_init(('Job is still new or active: ' + this).toString()); - } else if (Kotlin.isType(state, CompletedExceptionally)) - tmp$_0 = state.cause; - else - tmp$_0 = null; - return tmp$_0; - } -}; - JobSupport.prototype.invokeOnCompletion_f05bi3$ = function(handler) { - return this.invokeOnCompletion_ct2b2z$(false, true, handler); -}; - JobSupport.prototype.invokeOnCompletion_ct2b2z$$default = function(onCancelling, invokeImmediately, handler) { - var nodeCache = { - v: null}; - loop_label: - while (true) { - var state = this.state_8be2vx$; - block$break: - do { - var tmp$, tmp$_0, tmp$_1, tmp$_2, tmp$_3; - if (Kotlin.isType(state, Empty)) - if (state.isActive) { - var tmp$_4; - if ((tmp$ = nodeCache.v) != null) - tmp$_4 = tmp$; - else { - var $receiver = this.makeNode_9qhc1i$_0(handler, onCancelling); - nodeCache.v = $receiver; - tmp$_4 = $receiver; - } - var node = tmp$_4; - if ((function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = node;return true;}() : false})(this)) - return node; - } else - this.promoteEmptyToNodeList_lchanx$_0(state); - else if (Kotlin.isType(state, Incomplete)) { - var list = state.list; - if (list == null) { - this.promoteSingleToNodeList_ft43ca$_0(Kotlin.isType(tmp$_0 = state, JobNode) ? tmp$_0 : throwCCE()); - } else { - var rootCause = { - v: null}; - var handle = { - v: NonDisposableHandle_getInstance()}; - if (onCancelling && Kotlin.isType(state, JobSupport$Finishing)) { - var tmp$_5; - rootCause.v = state.rootCause; - var tmp$_6 = rootCause.v == null; - if (!tmp$_6) { - tmp$_6 = (Kotlin.isType(handler, ChildHandleNode) && !state.isCompleting); - } - if (tmp$_6) { - var tmp$_7; - if ((tmp$_5 = nodeCache.v) != null) - tmp$_7 = tmp$_5; - else { - var $receiver_0 = this.makeNode_9qhc1i$_0(handler, onCancelling); - nodeCache.v = $receiver_0; - tmp$_7 = $receiver_0; - } - var node_0 = tmp$_7; - if (!this.addLastAtomic_qayz7c$_0(state, list, node_0)) - break block$break; - if (rootCause.v == null) - return node_0; - handle.v = node_0; - } - } - if (rootCause.v != null) { - if (invokeImmediately) - invokeIt(handler, rootCause.v); - return handle.v; - } else { - var tmp$_8; - if ((tmp$_1 = nodeCache.v) != null) - tmp$_8 = tmp$_1; - else { - var $receiver_1 = this.makeNode_9qhc1i$_0(handler, onCancelling); - nodeCache.v = $receiver_1; - tmp$_8 = $receiver_1; - } - var node_1 = tmp$_8; - if (this.addLastAtomic_qayz7c$_0(state, list, node_1)) - return node_1; - } - } - } else { - if (invokeImmediately) { - invokeIt(handler, (tmp$_3 = Kotlin.isType(tmp$_2 = state, CompletedExceptionally) ? tmp$_2 : null) != null ? tmp$_3.cause : null); - } - return NonDisposableHandle_getInstance(); - } - } while (false); - } -}; - JobSupport.prototype.makeNode_9qhc1i$_0 = function(handler, onCancelling) { - var tmp$, tmp$_0, tmp$_1, tmp$_2, tmp$_3, tmp$_4; - var tmp$_5; - if (onCancelling) { - var tmp$_6; - if ((tmp$_0 = Kotlin.isType(tmp$ = handler, JobCancellingNode) ? tmp$ : null) != null) { - if (!(tmp$_0.job === this)) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init(message.toString()); - } - tmp$_6 = tmp$_0; - } else - tmp$_6 = null; - tmp$_5 = (tmp$_1 = tmp$_6) != null ? tmp$_1 : new InvokeOnCancelling(this, handler); - } else { - var tmp$_7; - if ((tmp$_3 = Kotlin.isType(tmp$_2 = handler, JobNode) ? tmp$_2 : null) != null) { - if (!(tmp$_3.job === this && !Kotlin.isType(tmp$_3, JobCancellingNode))) { - var message_0 = 'Failed requirement.'; - throw IllegalArgumentException_init(message_0.toString()); - } - tmp$_7 = tmp$_3; - } else - tmp$_7 = null; - tmp$_5 = (tmp$_4 = tmp$_7) != null ? tmp$_4 : new InvokeOnCompletion(this, handler); - } - return tmp$_5; -}; - function JobSupport$addLastAtomic$lambda(this$JobSupport, closure$expect) { - return function() { - return this$JobSupport.state_8be2vx$ === closure$expect; -}; - } - JobSupport.prototype.addLastAtomic_qayz7c$_0 = function(expect, list, node) { - var addLastIf_w327v9$result; - addLastIf_w327v9$break: - do { - if (!JobSupport$addLastAtomic$lambda(this, expect)()) { - addLastIf_w327v9$result = false; - break addLastIf_w327v9$break; - } - list.addLast_l2j9rm$(node); - addLastIf_w327v9$result = true; - } while (false); - return addLastIf_w327v9$result; -}; - JobSupport.prototype.promoteEmptyToNodeList_lchanx$_0 = function(state) { - var list = new NodeList(); - var update = state.isActive ? list : new InactiveNodeList(list); - (function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = update;return true;}() : false})(this); -}; - JobSupport.prototype.promoteSingleToNodeList_ft43ca$_0 = function(state) { - state.addOneIfEmpty_l2j9rm$(new NodeList()); - var list = state._next; - (function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = list;return true;}() : false})(this); -}; - JobSupport.prototype.join = function(continuation) { - if (!this.joinInternal_ta6o25$_0()) { - checkCompletion(continuation.context); - return; - } - return this.joinSuspend_kfh5g8$_0(continuation); -}; - JobSupport.prototype.joinInternal_ta6o25$_0 = function() { - while (true) { - var state = this.state_8be2vx$; - if (!Kotlin.isType(state, Incomplete)) - return false; - if (this.startInternal_tp1bqd$_0(state) >= 0) - return true; - } -}; - function JobSupport$joinSuspend$lambda(this$JobSupport) { - return function(cont) { - disposeOnCancellation(cont, this$JobSupport.invokeOnCompletion_f05bi3$(new ResumeOnCompletion(this$JobSupport, cont))); - return Unit; -}; - } - function suspendCancellableCoroutine$lambda_2(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - JobSupport.prototype.joinSuspend_kfh5g8$_0 = function(continuation) { - return suspendCancellableCoroutine$lambda_2(JobSupport$joinSuspend$lambda(this))(continuation); -}; - Object.defineProperty(JobSupport.prototype, 'onJoin', { - get: function() { - return this; -}}); - JobSupport.prototype.registerSelectClause0_s9h9qd$ = function(select, block) { - while (true) { - var state = this.state_8be2vx$; - if (select.isSelected) - return; - if (!Kotlin.isType(state, Incomplete)) { - if (select.trySelect_s8jyv4$(null)) { - checkCompletion(select.completion.context); - startCoroutineUnintercepted(block, select.completion); - } - return; - } - if (this.startInternal_tp1bqd$_0(state) === 0) { - select.disposeOnSelect_rvfg84$(this.invokeOnCompletion_f05bi3$(new SelectJoinOnCompletion(this, select, block))); - return; - } - } -}; - JobSupport.prototype.removeNode_nxb11s$ = function(node) { - while (true) { - var state = this.state_8be2vx$; - if (Kotlin.isType(state, JobNode)) { - if (state !== node) - return; - if ((function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = EMPTY_ACTIVE;return true;}() : false})(this)) - return; - } else if (Kotlin.isType(state, Incomplete)) { - if (state.list != null) - node.remove(); - return; - } else - return; - } -}; - Object.defineProperty(JobSupport.prototype, 'onCancelComplete', { - get: function() { - return false; -}}); - JobSupport.prototype.cancel = function() { - this.cancel_dbl4no$(null); -}; - JobSupport.prototype.cancel_dbl4no$$default = function(cause) { - return this.cancelImpl_1dkq74$_0(cause) && this.handlesException; -}; - JobSupport.prototype.parentCancelled_pv1t6x$ = function(parentJob) { - this.cancelImpl_1dkq74$_0(parentJob); -}; - JobSupport.prototype.childCancelled_tcv7n7$ = function(cause) { - return this.cancelImpl_1dkq74$_0(cause) && this.handlesException; -}; - JobSupport.prototype.cancelImpl_1dkq74$_0 = function(cause) { - if (this.onCancelComplete) { - if (this.cancelMakeCompleting_z3ww04$_0(cause)) - return true; - } - return this.makeCancelling_xjon1g$_0(cause); -}; - JobSupport.prototype.cancelMakeCompleting_z3ww04$_0 = function(cause) { - loop_label: - while (true) { - var state = this.state_8be2vx$; - block$break: - do { - if (!Kotlin.isType(state, Incomplete) || (Kotlin.isType(state, JobSupport$Finishing) && state.isCompleting)) { - return false; - } - var proposedUpdate = new CompletedExceptionally(this.createCauseException_kfrsk8$_0(cause)); - switch (this.tryMakeCompleting_ev8xlh$_0(state, proposedUpdate, 0)) { - case 0: - return false; - case 1: - case 2: - return true; - case 3: - break block$break; - default: - throw IllegalStateException_init('unexpected result'.toString()); - } - } while (false); - } -}; - JobSupport.prototype.createJobCancellationException_sy2yj3$_0 = function() { - return new JobCancellationException('Job was cancelled', null, this); -}; - JobSupport.prototype.getChildJobCancellationCause = function() { - var tmp$, tmp$_0; - var state = this.state_8be2vx$; - if (Kotlin.isType(state, JobSupport$Finishing)) - tmp$ = state.rootCause; - else if (Kotlin.isType(state, Incomplete)) { - throw IllegalStateException_init(('Cannot be cancelling child in this state: ' + toString(state)).toString()); - } else if (Kotlin.isType(state, CompletedExceptionally)) - tmp$ = state.cause; - else - tmp$ = null; - var rootCause = tmp$; - if (rootCause == null || (this.handlesException && !Kotlin.isType(rootCause, CancellationException))) { - tmp$_0 = new JobCancellationException('Parent job is ' + this.stateString_u2sjqg$_0(state), rootCause, this); - } else { - tmp$_0 = rootCause; - } - return tmp$_0; -}; - JobSupport.prototype.createCauseException_kfrsk8$_0 = function(cause) { - var tmp$; - if (cause == null || Kotlin.isType(cause, Throwable)) - return cause != null ? cause : this.createJobCancellationException_sy2yj3$_0(); - else - return (Kotlin.isType(tmp$ = cause, ParentJob) ? tmp$ : throwCCE()).getChildJobCancellationCause(); -}; - JobSupport.prototype.makeCancelling_xjon1g$_0 = function(cause) { - var causeExceptionCache = { - v: null}; - loop_label: - while (true) { - var state = this.state_8be2vx$; - block$break: - do { - var tmp$; - if (Kotlin.isType(state, JobSupport$Finishing)) { - var tmp$_0; - if (state.isSealed) - return false; - var wasCancelling = state.isCancelling; - if (cause != null || !wasCancelling) { - var tmp$_1; - if ((tmp$_0 = causeExceptionCache.v) != null) - tmp$_1 = tmp$_0; - else { - var $receiver = this.createCauseException_kfrsk8$_0(cause); - causeExceptionCache.v = $receiver; - tmp$_1 = $receiver; - } - var causeException = tmp$_1; - state.addExceptionLocked_tcv7n7$(causeException); - } - var $receiver_0 = state.rootCause; - var notifyRootCause = !wasCancelling ? $receiver_0 : null; - if (notifyRootCause != null) { - this.notifyCancelling_xkpzb8$_0(state.list, notifyRootCause); - } - return true; - } else if (Kotlin.isType(state, Incomplete)) { - var tmp$_2; - if ((tmp$ = causeExceptionCache.v) != null) - tmp$_2 = tmp$; - else { - var $receiver_1 = this.createCauseException_kfrsk8$_0(cause); - causeExceptionCache.v = $receiver_1; - tmp$_2 = $receiver_1; - } - var causeException_0 = tmp$_2; - if (state.isActive) { - if (this.tryMakeCancelling_v0qvyy$_0(state, causeException_0)) - return true; - } else { - switch (this.tryMakeCompleting_ev8xlh$_0(state, new CompletedExceptionally(causeException_0), 0)) { - case 0: - throw IllegalStateException_init(('Cannot happen in ' + toString(state)).toString()); - case 1: - case 2: - return true; - case 3: - break block$break; - default: - throw IllegalStateException_init('unexpected result'.toString()); - } - } - } else - return false; - } while (false); - } -}; - JobSupport.prototype.getOrPromoteCancellingList_dmij2j$_0 = function(state) { - var tmp$, tmp$_0; - tmp$_0 = state.list; - if (tmp$_0 == null) { - if (Kotlin.isType(state, Empty)) - tmp$ = new NodeList(); - else if (Kotlin.isType(state, JobNode)) { - this.promoteSingleToNodeList_ft43ca$_0(state); - tmp$ = null; - } else { - throw IllegalStateException_init(('State should have list: ' + state).toString()); - } - tmp$_0 = tmp$; - } - return tmp$_0; -}; - JobSupport.prototype.tryMakeCancelling_v0qvyy$_0 = function(state, rootCause) { - var tmp$; - if (!!Kotlin.isType(state, JobSupport$Finishing)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - if (!state.isActive) { - var message_0 = 'Check failed.'; - throw IllegalStateException_init(message_0.toString()); - } - tmp$ = this.getOrPromoteCancellingList_dmij2j$_0(state); - if (tmp$ == null) { - return false; - } - var list = tmp$; - var cancelling = new JobSupport$Finishing(list, false, rootCause); - if (!(function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = cancelling;return true;}() : false})(this)) - return false; - this.notifyCancelling_xkpzb8$_0(list, rootCause); - return true; -}; - JobSupport.prototype.makeCompleting_8ea4ql$ = function(proposedUpdate) { - var loopOnState_46ivxf$_0$result; - loop_label: - while (true) { - var state = this.state_8be2vx$; - block$break: - do { - switch (this.tryMakeCompleting_ev8xlh$_0(state, proposedUpdate, 0)) { - case 0: - return false; - case 1: - case 2: - return true; - case 3: - break block$break; - default: - throw IllegalStateException_init('unexpected result'.toString()); - } - } while (false); - } - return loopOnState_46ivxf$_0$result; -}; - JobSupport.prototype.makeCompletingOnce_42w2xh$ = function(proposedUpdate, mode) { - var loopOnState_46ivxf$_0$result; - loop_label: - while (true) { - var state = this.state_8be2vx$; - block$break: - do { - switch (this.tryMakeCompleting_ev8xlh$_0(state, proposedUpdate, mode)) { - case 0: - throw IllegalStateException_0('Job ' + this + ' is already complete or completing, ' + ('but is being completed with ' + toString(proposedUpdate)), this.get_exceptionOrNull_ejijbb$_0(proposedUpdate)); - case 1: - return true; - case 2: - return false; - case 3: - break block$break; - default: - throw IllegalStateException_init('unexpected result'.toString()); - } - } while (false); - } - return loopOnState_46ivxf$_0$result; -}; - JobSupport.prototype.tryMakeCompleting_ev8xlh$_0 = function(state, proposedUpdate, mode) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - if (!Kotlin.isType(state, Incomplete)) - return 0; - if ((Kotlin.isType(state, Empty) || Kotlin.isType(state, JobNode)) && !Kotlin.isType(state, ChildHandleNode) && !Kotlin.isType(proposedUpdate, CompletedExceptionally)) { - if (!this.tryFinalizeSimpleState_8el5e4$_0(state, proposedUpdate, mode)) - return 3; - return 1; - } - tmp$ = this.getOrPromoteCancellingList_dmij2j$_0(state); - if (tmp$ == null) { - return 3; - } - var list = tmp$; - var finishing = (tmp$_1 = Kotlin.isType(tmp$_0 = state, JobSupport$Finishing) ? tmp$_0 : null) != null ? tmp$_1 : new JobSupport$Finishing(list, false, null); - var notifyRootCause = { - v: null}; - var tmp$_3, tmp$_4; - if (finishing.isCompleting) - return 0; - finishing.isCompleting = true; - if (finishing !== state) { - if (!(function(scope) {return scope._state_v70vig$_0 === state ? function() {scope._state_v70vig$_0 = finishing;return true;}() : false})(this)) - return 3; - } - if (!!finishing.isSealed) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init(message.toString()); - } - var wasCancelling = finishing.isCancelling; - if ((tmp$_4 = Kotlin.isType(tmp$_3 = proposedUpdate, CompletedExceptionally) ? tmp$_3 : null) != null) { - finishing.addExceptionLocked_tcv7n7$(tmp$_4.cause); - } - var $receiver = finishing.rootCause; - notifyRootCause.v = !wasCancelling ? $receiver : null; - if ((tmp$_2 = notifyRootCause.v) != null) { - this.notifyCancelling_xkpzb8$_0(list, tmp$_2); - } - var child = this.firstChild_15hr5g$_0(state); - if (child != null && this.tryWaitForChild_dzo3im$_0(finishing, child, proposedUpdate)) - return 2; - if (this.tryFinalizeFinishingState_ke4xjq$_0(finishing, proposedUpdate, mode)) - return 1; - return 3; -}; - JobSupport.prototype.get_exceptionOrNull_ejijbb$_0 = function($receiver) { - var tmp$, tmp$_0; - return (tmp$_0 = Kotlin.isType(tmp$ = $receiver, CompletedExceptionally) ? tmp$ : null) != null ? tmp$_0.cause : null; -}; - JobSupport.prototype.firstChild_15hr5g$_0 = function(state) { - var tmp$, tmp$_0, tmp$_1; - return (tmp$_1 = Kotlin.isType(tmp$ = state, ChildHandleNode) ? tmp$ : null) != null ? tmp$_1 : (tmp$_0 = state.list) != null ? this.nextChild_n2no7k$_0(tmp$_0) : null; -}; - JobSupport.prototype.tryWaitForChild_dzo3im$_0 = function(state, child, proposedUpdate) { - var tmp$; - var handle = child.childJob.invokeOnCompletion_ct2b2z$(void 0, false, new JobSupport$ChildCompletion(this, state, child, proposedUpdate)); - if (handle !== NonDisposableHandle_getInstance()) - return true; - tmp$ = this.nextChild_n2no7k$_0(child); - if (tmp$ == null) { - return false; - } - var nextChild = tmp$; - return this.tryWaitForChild_dzo3im$_0(state, nextChild, proposedUpdate); -}; - JobSupport.prototype.continueCompleting_vth2d4$_0 = function(state, lastChild, proposedUpdate) { - if (!(this.state_8be2vx$ === state)) { - var message = 'Failed requirement.'; - throw IllegalArgumentException_init(message.toString()); - } - var waitChild = this.nextChild_n2no7k$_0(lastChild); - if (waitChild != null && this.tryWaitForChild_dzo3im$_0(state, waitChild, proposedUpdate)) - return; - if (this.tryFinalizeFinishingState_ke4xjq$_0(state, proposedUpdate, 0)) - return; -}; - JobSupport.prototype.nextChild_n2no7k$_0 = function($receiver) { - var cur = $receiver; - while (cur._removed) { - cur = cur._prev; - } - while (true) { - cur = cur._next; - if (cur._removed) - continue; - if (Kotlin.isType(cur, ChildHandleNode)) - return cur; - if (Kotlin.isType(cur, NodeList)) - return null; - } -}; - function Coroutine$JobSupport$get_JobSupport$children$lambda(this$JobSupport_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$JobSupport = this$JobSupport_0; - this.local$tmp$ = void 0; - this.local$tmp$_0 = void 0; - this.local$cur = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$JobSupport$get_JobSupport$children$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$JobSupport$get_JobSupport$children$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$JobSupport$get_JobSupport$children$lambda.prototype.constructor = Coroutine$JobSupport$get_JobSupport$children$lambda; - Coroutine$JobSupport$get_JobSupport$children$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var state = this.local$this$JobSupport.state_8be2vx$; - if (Kotlin.isType(state, ChildHandleNode)) { - this.state_0 = 8; - this.result_0 = this.local$$receiver.yield_11rb$(state.childJob, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - if (Kotlin.isType(state, Incomplete)) { - if ((this.local$tmp$ = state.list) != null) { - this.local$cur = this.local$tmp$._next; - this.state_0 = 2; - continue; - } else { - this.local$tmp$_0 = null; - this.state_0 = 6; - continue; - } - } else { - this.state_0 = 7; - continue; - } - } - case 1: - throw this.exception_0; - case 2: - if (equals(this.local$cur, this.local$tmp$)) { - this.state_0 = 5; - continue; - } - if (Kotlin.isType(this.local$cur, ChildHandleNode)) { - this.state_0 = 3; - this.result_0 = this.local$$receiver.yield_11rb$(this.local$cur.childJob, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 4; - continue; - } - case 3: - this.state_0 = 4; - continue; - case 4: - this.local$cur = this.local$cur._next; - this.state_0 = 2; - continue; - case 5: - this.local$tmp$_0 = Unit; - this.state_0 = 6; - continue; - case 6: - return this.local$tmp$_0; - case 7: - this.state_0 = 9; - continue; - case 8: - return this.result_0; - case 9: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function JobSupport$get_JobSupport$children$lambda(this$JobSupport_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$JobSupport$get_JobSupport$children$lambda(this$JobSupport_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - Object.defineProperty(JobSupport.prototype, 'children', { - get: function() { - return sequence(JobSupport$get_JobSupport$children$lambda(this)); -}}); - JobSupport.prototype.attachChild_kx8v25$ = function(child) { - var tmp$; - return Kotlin.isType(tmp$ = this.invokeOnCompletion_ct2b2z$(true, void 0, new ChildHandleNode(this, child)), ChildHandle) ? tmp$ : throwCCE(); -}; - JobSupport.prototype.handleOnCompletionException_tcv7n7$ = function(exception) { - throw exception; -}; - JobSupport.prototype.onCancellation_dbl4no$ = function(cause) { -}; - Object.defineProperty(JobSupport.prototype, 'cancelsParent', { - get: function() { - return false; -}}); - Object.defineProperty(JobSupport.prototype, 'handlesException', { - get: function() { - return true; -}}); - JobSupport.prototype.handleJobException_tcv7n7$ = function(exception) { -}; - JobSupport.prototype.cancelParent_7dutpz$_0 = function(cause) { - var tmp$; - if (Kotlin.isType(cause, CancellationException)) - return true; - if (!this.cancelsParent) - return false; - return ((tmp$ = this.parentHandle_ahojoo$_0) != null ? tmp$.childCancelled_tcv7n7$(cause) : null) === true; -}; - JobSupport.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { -}; - JobSupport.prototype.toString = function() { - return this.toDebugString() + '@' + get_hexAddress(this); -}; - JobSupport.prototype.toDebugString = function() { - return this.nameString() + '{' + this.stateString_u2sjqg$_0(this.state_8be2vx$) + '}'; -}; - JobSupport.prototype.nameString = function() { - return get_classSimpleName(this); -}; - JobSupport.prototype.stateString_u2sjqg$_0 = function(state) { - if (Kotlin.isType(state, JobSupport$Finishing)) - if (state.isCancelling) - return 'Cancelling'; - else if (state.isCompleting) - return 'Completing'; - else - return 'Active'; - else if (Kotlin.isType(state, Incomplete)) - return state.isActive ? 'Active' : 'New'; - else if (Kotlin.isType(state, CompletedExceptionally)) - return 'Cancelled'; - else - return 'Completed'; -}; - function JobSupport$Finishing(list, isCompleting, rootCause) { - this.list_m9wkmb$_0 = list; - this.isCompleting = isCompleting; - this.rootCause = rootCause; - this._exceptionsHolder_0 = null; - } - Object.defineProperty(JobSupport$Finishing.prototype, 'list', { - get: function() { - return this.list_m9wkmb$_0; -}}); - Object.defineProperty(JobSupport$Finishing.prototype, 'isSealed', { - get: function() { - return this._exceptionsHolder_0 === SEALED; -}}); - Object.defineProperty(JobSupport$Finishing.prototype, 'isCancelling', { - get: function() { - return this.rootCause != null; -}}); - Object.defineProperty(JobSupport$Finishing.prototype, 'isActive', { - get: function() { - return this.rootCause == null; -}}); - JobSupport$Finishing.prototype.sealLocked_dbl4no$ = function(proposedException) { - var tmp$, tmp$_0; - var eh = this._exceptionsHolder_0; - if (eh == null) - tmp$_0 = this.allocateList_0(); - else if (Kotlin.isType(eh, Throwable)) { - var $receiver = this.allocateList_0(); - $receiver.add_11rb$(eh); - tmp$_0 = $receiver; - } else if (Kotlin.isType(eh, ArrayList)) - tmp$_0 = Kotlin.isType(tmp$ = eh, ArrayList) ? tmp$ : throwCCE(); - else { - throw IllegalStateException_init(('State is ' + toString(eh)).toString()); - } - var list = tmp$_0; - var rootCause = this.rootCause; - if (rootCause != null) { - list.add_wxm5ur$(0, rootCause); - } - if (proposedException != null && !equals(proposedException, rootCause)) - list.add_11rb$(proposedException); - this._exceptionsHolder_0 = SEALED; - return list; -}; - JobSupport$Finishing.prototype.addExceptionLocked_tcv7n7$ = function(exception) { - var tmp$; - var rootCause = this.rootCause; - if (rootCause == null) { - this.rootCause = exception; - return; - } - if (exception === rootCause) - return; - var eh = this._exceptionsHolder_0; - if (eh == null) - this._exceptionsHolder_0 = exception; - else if (Kotlin.isType(eh, Throwable)) { - if (exception === eh) - return; - var $receiver = this.allocateList_0(); - $receiver.add_11rb$(eh); - $receiver.add_11rb$(exception); - this._exceptionsHolder_0 = $receiver; - } else if (Kotlin.isType(eh, ArrayList)) - (Kotlin.isType(tmp$ = eh, ArrayList) ? tmp$ : throwCCE()).add_11rb$(exception); - else { - throw IllegalStateException_init(('State is ' + toString(eh)).toString()); - } -}; - JobSupport$Finishing.prototype.allocateList_0 = function() { - return ArrayList_init(4); -}; - JobSupport$Finishing.prototype.toString = function() { - return 'Finishing[cancelling=' + this.isCancelling + ', completing=' + this.isCompleting + ', rootCause=' + toString(this.rootCause) + ', exceptions=' + toString(this._exceptionsHolder_0) + ', list=' + this.list + ']'; -}; - JobSupport$Finishing.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Finishing', - interfaces: [Incomplete]}; - JobSupport.prototype.get_isCancelling_dpdoz8$_0 = function($receiver) { - return Kotlin.isType($receiver, JobSupport$Finishing) && $receiver.isCancelling; -}; - function JobSupport$ChildCompletion(parent, state, child, proposedUpdate) { - JobNode.call(this, child.childJob); - this.parent_0 = parent; - this.state_0 = state; - this.child_0 = child; - this.proposedUpdate_0 = proposedUpdate; - } - JobSupport$ChildCompletion.prototype.invoke = function(cause) { - this.parent_0.continueCompleting_vth2d4$_0(this.state_0, this.child_0, this.proposedUpdate_0); -}; - JobSupport$ChildCompletion.prototype.toString = function() { - return 'ChildCompletion[' + this.child_0 + ', ' + toString(this.proposedUpdate_0) + ']'; -}; - JobSupport$ChildCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ChildCompletion', - interfaces: [JobNode]}; - function JobSupport$AwaitContinuation(delegate, job) { - CancellableContinuationImpl.call(this, delegate, 1); - this.job_0 = job; - } - JobSupport$AwaitContinuation.prototype.getContinuationCancellationCause_dqr1mp$ = function(parent) { - var tmp$; - var state = this.job_0.state_8be2vx$; - if (Kotlin.isType(state, JobSupport$Finishing)) { - if ((tmp$ = state.rootCause) != null) { - return tmp$; - } - } - if (Kotlin.isType(state, CompletedExceptionally)) - return state.cause; - return parent.getCancellationException(); -}; - JobSupport$AwaitContinuation.prototype.nameString = function() { - return 'AwaitContinuation'; -}; - JobSupport$AwaitContinuation.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AwaitContinuation', - interfaces: [CancellableContinuationImpl]}; - Object.defineProperty(JobSupport.prototype, 'isCompletedExceptionally', { - get: function() { - return Kotlin.isType(this.state_8be2vx$, CompletedExceptionally); -}}); - JobSupport.prototype.getCompletionExceptionOrNull = function() { - var state = this.state_8be2vx$; - if (!!Kotlin.isType(state, Incomplete)) { - var message = 'This job has not completed yet'; - throw IllegalStateException_init(message.toString()); - } - return this.get_exceptionOrNull_ejijbb$_0(state); -}; - JobSupport.prototype.getCompletedInternal_8be2vx$ = function() { - var state = this.state_8be2vx$; - if (!!Kotlin.isType(state, Incomplete)) { - var message = 'This job has not completed yet'; - throw IllegalStateException_init(message.toString()); - } - if (Kotlin.isType(state, CompletedExceptionally)) - throw state.cause; - return unboxState(state); -}; - JobSupport.prototype.awaitInternal_8be2vx$ = function(continuation) { - while (true) { - var state = this.state_8be2vx$; - if (!Kotlin.isType(state, Incomplete)) { - if (Kotlin.isType(state, CompletedExceptionally)) { - throw state.cause; - } - return unboxState(state); - } - if (this.startInternal_tp1bqd$_0(state) >= 0) - break; - } - return this.awaitSuspend_ixl9xw$_0(continuation); -}; - function JobSupport$awaitSuspend$lambda(this$JobSupport) { - return function(uCont) { - var cont = new JobSupport$AwaitContinuation(intercepted(uCont), this$JobSupport); - disposeOnCancellation(cont, this$JobSupport.invokeOnCompletion_f05bi3$(new ResumeAwaitOnCompletion(this$JobSupport, cont))); - return cont.getResult(); -}; - } - JobSupport.prototype.awaitSuspend_ixl9xw$_0 = function(continuation) { - return JobSupport$awaitSuspend$lambda(this)(continuation); -}; - JobSupport.prototype.registerSelectClause1Internal_u6kgbh$ = function(select, block) { - while (true) { - var state = this.state_8be2vx$; - var tmp$; - if (select.isSelected) - return; - if (!Kotlin.isType(state, Incomplete)) { - if (select.trySelect_s8jyv4$(null)) { - if (Kotlin.isType(state, CompletedExceptionally)) { - select.resumeSelectCancellableWithException_tcv7n7$(state.cause); - } else { - startCoroutineUnintercepted_0(block, (tmp$ = unboxState(state)) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(), select.completion); - } - } - return; - } - if (this.startInternal_tp1bqd$_0(state) === 0) { - select.disposeOnSelect_rvfg84$(this.invokeOnCompletion_f05bi3$(new SelectAwaitOnCompletion(this, select, block))); - return; - } - } -}; - JobSupport.prototype.selectAwaitCompletion_u6kgbh$ = function(select, block) { - var tmp$; - var state = this.state_8be2vx$; - if (Kotlin.isType(state, CompletedExceptionally)) - select.resumeSelectCancellableWithException_tcv7n7$(state.cause); - else { - startCoroutineCancellable_0(block, (tmp$ = unboxState(state)) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(), select.completion); - } -}; - JobSupport.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'JobSupport', - interfaces: [SelectClause0, ParentJob, ChildJob, Job]}; - function IncompleteStateBox(state) { - this.state = state; - } - IncompleteStateBox.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'IncompleteStateBox', - interfaces: []}; - function boxIncomplete($receiver) { - return Kotlin.isType($receiver, Incomplete) ? new IncompleteStateBox($receiver) : $receiver; - } - function unboxState($receiver) { - var tmp$, tmp$_0, tmp$_1; - return (tmp$_1 = (tmp$_0 = Kotlin.isType(tmp$ = $receiver, IncompleteStateBox) ? tmp$ : null) != null ? tmp$_0.state : null) != null ? tmp$_1 : $receiver; - } - var COMPLETING_ALREADY_COMPLETING; - var COMPLETING_COMPLETED; - var COMPLETING_WAITING_CHILDREN; - var COMPLETING_RETRY; - var RETRY; - var FALSE; - var TRUE; - var SEALED; - var EMPTY_NEW; - var EMPTY_ACTIVE; - function Empty(isActive) { - this.isActive_hyoax9$_0 = isActive; - } - Object.defineProperty(Empty.prototype, 'isActive', { - get: function() { - return this.isActive_hyoax9$_0; -}}); - Object.defineProperty(Empty.prototype, 'list', { - get: function() { - return null; -}}); - Empty.prototype.toString = function() { - return 'Empty{' + (this.isActive ? 'Active' : 'New') + '}'; -}; - Empty.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Empty', - interfaces: [Incomplete]}; - function JobImpl(parent) { - if (parent === void 0) - parent = null; - JobSupport.call(this, true); - this.initParentJobInternal_8vd9i7$(parent); - } - Object.defineProperty(JobImpl.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - Object.defineProperty(JobImpl.prototype, 'onCancelComplete', { - get: function() { - return true; -}}); - Object.defineProperty(JobImpl.prototype, 'handlesException', { - get: function() { - return false; -}}); - JobImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'JobImpl', - interfaces: [JobSupport]}; - function Incomplete() { - } - Incomplete.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Incomplete', - interfaces: []}; - function JobNode(job) { - CompletionHandlerBase.call(this); - this.job = job; - } - Object.defineProperty(JobNode.prototype, 'isActive', { - get: function() { - return true; -}}); - Object.defineProperty(JobNode.prototype, 'list', { - get: function() { - return null; -}}); - JobNode.prototype.dispose = function() { - var tmp$; - (Kotlin.isType(tmp$ = this.job, JobSupport) ? tmp$ : throwCCE()).removeNode_nxb11s$(this); -}; - JobNode.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'JobNode', - interfaces: [Incomplete, DisposableHandle, CompletionHandlerBase]}; - function NodeList() { - LinkedListHead.call(this); - } - Object.defineProperty(NodeList.prototype, 'isActive', { - get: function() { - return true; -}}); - Object.defineProperty(NodeList.prototype, 'list', { - get: function() { - return this; -}}); - var StringBuilder_init = Kotlin.kotlin.text.StringBuilder_init; - NodeList.prototype.getString_61zpoe$ = function(state) { - var $receiver = StringBuilder_init(); - $receiver.append_gw00v9$('List{'); - $receiver.append_gw00v9$(state); - $receiver.append_gw00v9$('}['); - var first = { - v: true}; - var cur = this._next; - while (!equals(cur, this)) { - if (Kotlin.isType(cur, JobNode)) { - var node = cur; - if (first.v) - first.v = false; - else - $receiver.append_gw00v9$(', '); - $receiver.append_s8jyv4$(node); - } - cur = cur._next; - } - $receiver.append_gw00v9$(']'); - return $receiver.toString(); -}; - NodeList.prototype.toString = function() { - return this.getString_61zpoe$('Active'); -}; - NodeList.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'NodeList', - interfaces: [Incomplete, LinkedListHead]}; - function InactiveNodeList(list) { - this.list_afai45$_0 = list; - } - Object.defineProperty(InactiveNodeList.prototype, 'list', { - get: function() { - return this.list_afai45$_0; -}}); - Object.defineProperty(InactiveNodeList.prototype, 'isActive', { - get: function() { - return false; -}}); - InactiveNodeList.prototype.toString = function() { - return this.list.getString_61zpoe$('New'); -}; - InactiveNodeList.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'InactiveNodeList', - interfaces: [Incomplete]}; - function InvokeOnCompletion(job, handler) { - JobNode.call(this, job); - this.handler_0 = handler; - } - InvokeOnCompletion.prototype.invoke = function(cause) { - this.handler_0(cause); -}; - InvokeOnCompletion.prototype.toString = function() { - return 'InvokeOnCompletion[' + get_classSimpleName(this) + '@' + get_hexAddress(this) + ']'; -}; - InvokeOnCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'InvokeOnCompletion', - interfaces: [JobNode]}; - function ResumeOnCompletion(job, continuation) { - JobNode.call(this, job); - this.continuation_0 = continuation; - } - ResumeOnCompletion.prototype.invoke = function(cause) { - this.continuation_0.resumeWith_tl1gpc$(new Result(Unit)); -}; - ResumeOnCompletion.prototype.toString = function() { - return 'ResumeOnCompletion[' + this.continuation_0 + ']'; -}; - ResumeOnCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ResumeOnCompletion', - interfaces: [JobNode]}; - function ResumeAwaitOnCompletion(job, continuation) { - JobNode.call(this, job); - this.continuation_0 = continuation; - } - ResumeAwaitOnCompletion.prototype.invoke = function(cause) { - var tmp$, tmp$_0; - var state = this.job.state_8be2vx$; - if (!!Kotlin.isType(state, Incomplete)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - if (Kotlin.isType(state, CompletedExceptionally)) { - this.continuation_0.resumeWithExceptionMode_i32via$(state.cause, 0); - } else { - tmp$_0 = this.continuation_0; - var value = (tmp$ = unboxState(state)) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - tmp$_0.resumeWith_tl1gpc$(new Result(value)); - } -}; - ResumeAwaitOnCompletion.prototype.toString = function() { - return 'ResumeAwaitOnCompletion[' + this.continuation_0 + ']'; -}; - ResumeAwaitOnCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ResumeAwaitOnCompletion', - interfaces: [JobNode]}; - function DisposeOnCompletion(job, handle) { - JobNode.call(this, job); - this.handle_0 = handle; - } - DisposeOnCompletion.prototype.invoke = function(cause) { - this.handle_0.dispose(); -}; - DisposeOnCompletion.prototype.toString = function() { - return 'DisposeOnCompletion[' + this.handle_0 + ']'; -}; - DisposeOnCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DisposeOnCompletion', - interfaces: [JobNode]}; - function SelectJoinOnCompletion(job, select, block) { - JobNode.call(this, job); - this.select_0 = select; - this.block_0 = block; - } - SelectJoinOnCompletion.prototype.invoke = function(cause) { - if (this.select_0.trySelect_s8jyv4$(null)) - startCoroutineCancellable(this.block_0, this.select_0.completion); -}; - SelectJoinOnCompletion.prototype.toString = function() { - return 'SelectJoinOnCompletion[' + this.select_0 + ']'; -}; - SelectJoinOnCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SelectJoinOnCompletion', - interfaces: [JobNode]}; - function SelectAwaitOnCompletion(job, select, block) { - JobNode.call(this, job); - this.select_0 = select; - this.block_0 = block; - } - SelectAwaitOnCompletion.prototype.invoke = function(cause) { - if (this.select_0.trySelect_s8jyv4$(null)) - this.job.selectAwaitCompletion_u6kgbh$(this.select_0, this.block_0); -}; - SelectAwaitOnCompletion.prototype.toString = function() { - return 'SelectAwaitOnCompletion[' + this.select_0 + ']'; -}; - SelectAwaitOnCompletion.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SelectAwaitOnCompletion', - interfaces: [JobNode]}; - function JobCancellingNode(job) { - JobNode.call(this, job); - } - JobCancellingNode.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'JobCancellingNode', - interfaces: [JobNode]}; - function InvokeOnCancelling(job, handler) { - JobCancellingNode.call(this, job); - this.handler_0 = handler; - this._invoked_0 = 0; - } - InvokeOnCancelling.prototype.invoke = function(cause) { - if ((function(scope) {return scope._invoked_0 === 0 ? function() {scope._invoked_0 = 1;return true;}() : false})(this)) - this.handler_0(cause); -}; - InvokeOnCancelling.prototype.toString = function() { - return 'InvokeOnCancelling[' + get_classSimpleName(this) + '@' + get_hexAddress(this) + ']'; -}; - InvokeOnCancelling.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'InvokeOnCancelling', - interfaces: [JobCancellingNode]}; - function ChildHandleNode(parent, childJob) { - JobCancellingNode.call(this, parent); - this.childJob = childJob; - } - ChildHandleNode.prototype.invoke = function(cause) { - this.childJob.parentCancelled_pv1t6x$(this.job); -}; - ChildHandleNode.prototype.childCancelled_tcv7n7$ = function(cause) { - return this.job.childCancelled_tcv7n7$(cause); -}; - ChildHandleNode.prototype.toString = function() { - return 'ChildHandle[' + this.childJob + ']'; -}; - ChildHandleNode.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ChildHandleNode', - interfaces: [ChildHandle, JobCancellingNode]}; - function ChildContinuation(parent, child) { - JobCancellingNode.call(this, parent); - this.child = child; - } - ChildContinuation.prototype.invoke = function(cause) { - this.child.cancel_dbl4no$(this.child.getContinuationCancellationCause_dqr1mp$(this.job)); -}; - ChildContinuation.prototype.toString = function() { - return 'ChildContinuation[' + this.child + ']'; -}; - ChildContinuation.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ChildContinuation', - interfaces: [JobCancellingNode]}; - function MainCoroutineDispatcher() { - CoroutineDispatcher.call(this); - } - MainCoroutineDispatcher.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'MainCoroutineDispatcher', - interfaces: [CoroutineDispatcher]}; - function NonCancellable() { - NonCancellable_instance = this; - AbstractCoroutineContextElement.call(this, Job$Key_getInstance()); - } - Object.defineProperty(NonCancellable.prototype, 'isActive', { - get: function() { - return true; -}}); - Object.defineProperty(NonCancellable.prototype, 'isCompleted', { - get: function() { - return false; -}}); - Object.defineProperty(NonCancellable.prototype, 'isCancelled', { - get: function() { - return false; -}}); - NonCancellable.prototype.start = function() { - return false; -}; - NonCancellable.prototype.join = function(continuation) { - throw UnsupportedOperationException_init('This job is always active'); -}; - Object.defineProperty(NonCancellable.prototype, 'onJoin', { - get: function() { - throw UnsupportedOperationException_init('This job is always active'); -}}); - NonCancellable.prototype.getCancellationException = function() { - throw IllegalStateException_init('This job is always active'); -}; - NonCancellable.prototype.invokeOnCompletion_f05bi3$ = function(handler) { - return NonDisposableHandle_getInstance(); -}; - NonCancellable.prototype.invokeOnCompletion_ct2b2z$$default = function(onCancelling, invokeImmediately, handler) { - return NonDisposableHandle_getInstance(); -}; - NonCancellable.prototype.cancel = function() { -}; - NonCancellable.prototype.cancel_dbl4no$$default = function(cause) { - return false; -}; - Object.defineProperty(NonCancellable.prototype, 'children', { - get: function() { - return emptySequence(); -}}); - NonCancellable.prototype.attachChild_kx8v25$ = function(child) { - return NonDisposableHandle_getInstance(); -}; - NonCancellable.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'NonCancellable', - interfaces: [Job, AbstractCoroutineContextElement]}; - var NonCancellable_instance = null; - function NonCancellable_getInstance() { - if (NonCancellable_instance === null) { - new NonCancellable(); - } - return NonCancellable_instance; - } - var MODE_ATOMIC_DEFAULT; - var MODE_CANCELLABLE; - var MODE_DIRECT; - var MODE_UNDISPATCHED; - var MODE_IGNORE; - function get_isCancellableMode($receiver) { - return $receiver === 1; - } - function get_isDispatchedMode($receiver) { - return $receiver === 0 || $receiver === 1; - } - var DispatchedContinuation$resumeUndispatched$lambda_0 = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - return function(this$DispatchedContinuation, closure$value) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - var value = closure$value; - $receiver.resumeWith_tl1gpc$(new Result(value)); - return Unit; -}; -}; -}); - function resumeMode($receiver, value, mode) { - var tmp$; - switch (mode) { - case 0: - $receiver.resumeWith_tl1gpc$(new Result(value)); - break; - case 1: - resumeCancellable($receiver, value); - break; - case 2: - resumeDirect($receiver, value); - break; - case 3: - var $this = Kotlin.isType(tmp$ = $receiver, DispatchedContinuation) ? tmp$ : throwCCE(); - $this.context; - $this.continuation.resumeWith_tl1gpc$(new Result(value)); - break; - case 4: - break; - default: - throw IllegalStateException_init(('Invalid mode ' + mode).toString()); - } - } - var DispatchedContinuation$resumeUndispatchedWithException$lambda_0 = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var recoverStackTrace = _.kotlinx.coroutines.internal.recoverStackTrace_ak2v6d$; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(this$DispatchedContinuation, closure$exception) { - return function() { - var $receiver = this$DispatchedContinuation.continuation; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(closure$exception, $receiver)))); - return Unit; -}; -}; -}); - function resumeWithExceptionMode($receiver, exception, mode) { - var tmp$; - switch (mode) { - case 0: - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break; - case 1: - resumeCancellableWithException($receiver, exception); - break; - case 2: - resumeDirectWithException($receiver, exception); - break; - case 3: - var $this = Kotlin.isType(tmp$ = $receiver, DispatchedContinuation) ? tmp$ : throwCCE(); - $this.context; - var $receiver_0 = $this.continuation; - $receiver_0.resumeWith_tl1gpc$(new Result(createFailure(recoverStackTrace(exception, $receiver_0)))); - break; - case 4: - break; - default: - throw IllegalStateException_init(('Invalid mode ' + mode).toString()); - } - } - function resumeUninterceptedMode($receiver, value, mode) { - switch (mode) { - case 0: - intercepted($receiver).resumeWith_tl1gpc$(new Result(value)); - break; - case 1: - resumeCancellable(intercepted($receiver), value); - break; - case 2: - $receiver.resumeWith_tl1gpc$(new Result(value)); - break; - case 3: - $receiver.context; - $receiver.resumeWith_tl1gpc$(new Result(value)); - break; - case 4: - break; - default: - throw IllegalStateException_init(('Invalid mode ' + mode).toString()); - } - } - function resumeUninterceptedWithExceptionMode($receiver, exception, mode) { - switch (mode) { - case 0: - intercepted($receiver).resumeWith_tl1gpc$(new Result(createFailure(exception))); - break; - case 1: - resumeCancellableWithException(intercepted($receiver), exception); - break; - case 2: - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break; - case 3: - $receiver.context; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break; - case 4: - break; - default: - throw IllegalStateException_init(('Invalid mode ' + mode).toString()); - } - } - function SupervisorJob(parent) { - if (parent === void 0) - parent = null; - return new SupervisorJobImpl(parent); - } - function supervisorScope$lambda(closure$block) { - return function(uCont) { - var coroutine = new SupervisorCoroutine(uCont.context, uCont); - return startUndispatchedOrReturn(coroutine, coroutine, closure$block); -}; - } - function supervisorScope(block, continuation) { - return supervisorScope$lambda(block)(continuation); - } - function SupervisorJobImpl(parent) { - JobSupport.call(this, true); - this.initParentJobInternal_8vd9i7$(parent); - } - Object.defineProperty(SupervisorJobImpl.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - Object.defineProperty(SupervisorJobImpl.prototype, 'onCancelComplete', { - get: function() { - return true; -}}); - Object.defineProperty(SupervisorJobImpl.prototype, 'handlesException', { - get: function() { - return false; -}}); - SupervisorJobImpl.prototype.childCancelled_tcv7n7$ = function(cause) { - return false; -}; - SupervisorJobImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SupervisorJobImpl', - interfaces: [JobSupport]}; - function SupervisorCoroutine(parentContext, uCont) { - AbstractCoroutine.call(this, parentContext, true); - this.uCont = uCont; - } - Object.defineProperty(SupervisorCoroutine.prototype, 'defaultResumeMode', { - get: function() { - return 2; -}}); - SupervisorCoroutine.prototype.childCancelled_tcv7n7$ = function(cause) { - return false; -}; - SupervisorCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - var tmp$; - if (Kotlin.isType(state, CompletedExceptionally)) - resumeUninterceptedWithExceptionMode(this.uCont, state.cause, mode); - else { - resumeUninterceptedMode(this.uCont, (tmp$ = state) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(), mode); - } -}; - SupervisorCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SupervisorCoroutine', - interfaces: [AbstractCoroutine]}; - function withTimeout$lambda(closure$timeMillis, closure$block) { - return function(uCont) { - return setupTimeout(new TimeoutCoroutine(closure$timeMillis, uCont), closure$block); -}; - } - function withTimeout(timeMillis, block, continuation) { - if (timeMillis.compareTo_11rb$(L0) <= 0) - throw TimeoutCancellationException_init('Timed out immediately'); - return withTimeout$lambda(timeMillis, block)(continuation); - } - function withTimeoutOrNull$lambda(closure$timeMillis, closure$coroutine, closure$block) { - return function(uCont) { - var timeoutCoroutine = new TimeoutCoroutine(closure$timeMillis, uCont); - closure$coroutine.v = timeoutCoroutine; - return setupTimeout(timeoutCoroutine, closure$block); -}; - } - function Coroutine$withTimeoutOrNull(timeMillis_0, block_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 7; - this.local$coroutine = void 0; - this.local$e = void 0; - this.local$timeMillis = timeMillis_0; - this.local$block = block_0; - } - Coroutine$withTimeoutOrNull.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$withTimeoutOrNull.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$withTimeoutOrNull.prototype.constructor = Coroutine$withTimeoutOrNull; - Coroutine$withTimeoutOrNull.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (this.local$timeMillis.compareTo_11rb$(L0) <= 0) { - return null; - } else { - this.state_0 = 1; - continue; - } - case 1: - this.local$coroutine = { - v: null}; - this.exceptionState_0 = 3; - this.state_0 = 2; - this.result_0 = withTimeoutOrNull$lambda(this.local$timeMillis, this.local$coroutine, this.local$block)(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - return this.result_0; - case 3: - this.exceptionState_0 = 7; - this.local$e = this.exception_0; - if (Kotlin.isType(this.local$e, TimeoutCancellationException)) { - if (this.local$e.coroutine_8be2vx$ === this.local$coroutine.v) { - return null; - } else { - this.state_0 = 4; - continue; - } - } else { - throw this.local$e; - } - case 4: - throw this.local$e; - case 5: - this.state_0 = 6; - continue; - case 6: - return; - case 7: - throw this.exception_0; - default: - this.state_0 = 7; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 7) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function withTimeoutOrNull(timeMillis_0, block_0, continuation_0, suspended) { - var instance = new Coroutine$withTimeoutOrNull(timeMillis_0, block_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function setupTimeout(coroutine, block) { - var cont = coroutine.uCont; - var context = cont.context; - disposeOnCompletion(coroutine, get_delay(context).invokeOnTimeout_8irseu$(coroutine.time, coroutine)); - return startUndispatchedOrReturnIgnoreTimeout(coroutine, coroutine, block); - } - function TimeoutCoroutine(time, uCont) { - AbstractCoroutine.call(this, uCont.context, true); - this.time = time; - this.uCont = uCont; - } - Object.defineProperty(TimeoutCoroutine.prototype, 'defaultResumeMode', { - get: function() { - return 2; -}}); - Object.defineProperty(TimeoutCoroutine.prototype, 'callerFrame', { - get: function() { - var tmp$, tmp$_0; - return (tmp$_0 = Kotlin.isType(tmp$ = this.uCont, CoroutineStackFrame) ? tmp$ : null) != null ? tmp$_0.callerFrame : null; -}}); - TimeoutCoroutine.prototype.getStackTraceElement = function() { - var tmp$, tmp$_0; - return (tmp$_0 = Kotlin.isType(tmp$ = this.uCont, CoroutineStackFrame) ? tmp$ : null) != null ? tmp$_0.getStackTraceElement() : null; -}; - TimeoutCoroutine.prototype.run = function() { - this.cancel_dbl4no$(TimeoutCancellationException_0(this.time, this)); -}; - TimeoutCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - var tmp$; - if (Kotlin.isType(state, CompletedExceptionally)) - resumeUninterceptedWithExceptionMode(this.uCont, state.cause, mode); - else { - resumeUninterceptedMode(this.uCont, (tmp$ = state) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(), mode); - } -}; - TimeoutCoroutine.prototype.nameString = function() { - return AbstractCoroutine.prototype.nameString.call(this) + '(timeMillis=' + this.time.toString() + ')'; -}; - TimeoutCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TimeoutCoroutine', - interfaces: [CoroutineStackFrame, Runnable, AbstractCoroutine, Continuation]}; - function TimeoutCancellationException(message, coroutine) { - CancellationException.call(this, message); - this.coroutine_8be2vx$ = coroutine; - this.name = 'TimeoutCancellationException'; - } - TimeoutCancellationException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TimeoutCancellationException', - interfaces: [CancellationException]}; - function TimeoutCancellationException_init(message, $this) { - $this = $this || Object.create(TimeoutCancellationException.prototype); - TimeoutCancellationException.call($this, message, null); - return $this; - } - function TimeoutCancellationException_0(time, coroutine) { - return new TimeoutCancellationException('Timed out waiting for ' + time.toString() + ' ms', coroutine); - } - function Unconfined() { - Unconfined_instance = this; - CoroutineDispatcher.call(this); - } - Unconfined.prototype.isDispatchNeeded_1fupul$ = function(context) { - return false; -}; - Unconfined.prototype.dispatch_5bn72i$ = function(context, block) { - throw UnsupportedOperationException_init_0(); -}; - Unconfined.prototype.toString = function() { - return 'Unconfined'; -}; - Unconfined.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Unconfined', - interfaces: [CoroutineDispatcher]}; - var Unconfined_instance = null; - function Unconfined_getInstance() { - if (Unconfined_instance === null) { - new Unconfined(); - } - return Unconfined_instance; - } - function yield$lambda(uCont) { - var tmp$, tmp$_0; - var context = uCont.context; - checkCompletion(context); - tmp$_0 = Kotlin.isType(tmp$ = intercepted(uCont), DispatchedContinuation) ? tmp$ : null; - if (tmp$_0 == null) { - return Unit; - } - var cont = tmp$_0; - if (!cont.dispatcher.isDispatchNeeded_1fupul$(context)) { - return yieldUndispatched(cont) ? COROUTINE_SUSPENDED : Unit; - } - cont.dispatchYield_1c3m6u$(Unit); - return COROUTINE_SUSPENDED; - } - function yield_0(continuation) { - return yield$lambda(continuation); - } - function checkCompletion($receiver) { - var job = $receiver.get_j3r2sn$(Job$Key_getInstance()); - if (job != null && !job.isActive) - throw job.getCancellationException(); - } - function AbstractSendChannel() { - this.queue_0 = new LinkedListHead(); - this.onCloseHandler_0 = null; - } - AbstractSendChannel.prototype.offerInternal_11rb$ = function(element) { - var tmp$; - while (true) { - tmp$ = this.takeFirstReceiveOrPeekClosed(); - if (tmp$ == null) { - return OFFER_FAILED; - } - var receive = tmp$; - var token = receive.tryResumeReceive_19pj23$(element, null); - if (token != null) { - receive.completeResumeReceive_za3rmp$(token); - return receive.offerResult; - } - } -}; - AbstractSendChannel.prototype.offerSelectInternal_ys5ufj$ = function(element, select) { - var offerOp = this.describeTryOffer_0(element); - var failure = select.performAtomicTrySelect_6q0pxr$(offerOp); - if (failure != null) - return failure; - var receive = offerOp.result; - receive.completeResumeReceive_za3rmp$(ensureNotNull(offerOp.resumeToken)); - return receive.offerResult; -}; - Object.defineProperty(AbstractSendChannel.prototype, 'closedForSend_0', { - get: function() { - var tmp$, tmp$_0; - var tmp$_1; - if ((tmp$_0 = Kotlin.isType(tmp$ = this.queue_0._prev, Closed) ? tmp$ : null) != null) { - this.helpClose_0(tmp$_0); - tmp$_1 = tmp$_0; - } else - tmp$_1 = null; - return tmp$_1; -}}); - Object.defineProperty(AbstractSendChannel.prototype, 'closedForReceive_0', { - get: function() { - var tmp$, tmp$_0; - var tmp$_1; - if ((tmp$_0 = Kotlin.isType(tmp$ = this.queue_0._next, Closed) ? tmp$ : null) != null) { - this.helpClose_0(tmp$_0); - tmp$_1 = tmp$_0; - } else - tmp$_1 = null; - return tmp$_1; -}}); - AbstractSendChannel.prototype.takeFirstSendOrPeekClosed_0 = function() { - var $this = this.queue_0; - var removeFirstIfIsInstanceOfOrPeekIf_14urrv$result; - removeFirstIfIsInstanceOfOrPeekIf_14urrv$break: - do { - var next = $this._next; - if (next === $this) { - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = null; - break removeFirstIfIsInstanceOfOrPeekIf_14urrv$break; - } - if (!Kotlin.isType(next, Send)) { - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = null; - break removeFirstIfIsInstanceOfOrPeekIf_14urrv$break; - } - if (Kotlin.isType(next, Closed)) { - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = next; - break removeFirstIfIsInstanceOfOrPeekIf_14urrv$break; - } - if (!next.remove()) { - var message = 'Should remove'; - throw IllegalStateException_init(message.toString()); - } - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = next; - } while (false); - return removeFirstIfIsInstanceOfOrPeekIf_14urrv$result; -}; - AbstractSendChannel.prototype.sendBuffered_0 = function(element) { - var $this = this.queue_0; - var node = new AbstractSendChannel$SendBuffered(element); - addLastIfPrev_s8xlln$break: - do { - var prev = $this._prev; - if (Kotlin.isType(prev, ReceiveOrClosed)) - return prev; - if (!true) { - false; - break addLastIfPrev_s8xlln$break; - } - $this.addLast_l2j9rm$(node); - true; - } while (false); - return null; -}; - AbstractSendChannel.prototype.sendConflated_0 = function(element) { - var node = new AbstractSendChannel$SendBuffered(element); - var $this = this.queue_0; - addLastIfPrev_s8xlln$break: - do { - var prev = $this._prev; - if (Kotlin.isType(prev, ReceiveOrClosed)) - return prev; - if (!true) { - false; - break addLastIfPrev_s8xlln$break; - } - $this.addLast_l2j9rm$(node); - true; - } while (false); - this.conflatePreviousSendBuffered_0(node); - return null; -}; - AbstractSendChannel.prototype.conflatePreviousSendBuffered_0 = function(node) { - var prev = node._prev; - while (Kotlin.isType(prev, AbstractSendChannel$SendBuffered)) { - if (!prev.remove()) { - prev.helpRemove(); - } - prev = prev._prev; - } -}; - AbstractSendChannel.prototype.describeSendBuffered_0 = function(element) { - return new AbstractSendChannel$SendBufferedDesc(this.queue_0, element); -}; - function AbstractSendChannel$SendBufferedDesc(queue, element) { - AddLastDesc.call(this, queue, new AbstractSendChannel$SendBuffered(element)); - } - AbstractSendChannel$SendBufferedDesc.prototype.failure_ru8hrx$ = function(affected, next) { - if (Kotlin.isType(affected, ReceiveOrClosed)) - return OFFER_FAILED; - return null; -}; - AbstractSendChannel$SendBufferedDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SendBufferedDesc', - interfaces: [AddLastDesc]}; - AbstractSendChannel.prototype.describeSendConflated_0 = function(element) { - return new AbstractSendChannel$SendConflatedDesc(this.queue_0, element); -}; - function AbstractSendChannel$SendConflatedDesc(queue, element) { - AbstractSendChannel$SendBufferedDesc.call(this, queue, element); - } - AbstractSendChannel$SendConflatedDesc.prototype.finishOnSuccess_bpl3tg$ = function(affected, next) { - var tmp$, tmp$_0; - AbstractSendChannel$SendBufferedDesc.prototype.finishOnSuccess_bpl3tg$.call(this, affected, next); - (tmp$_0 = Kotlin.isType(tmp$ = affected, AbstractSendChannel$SendBuffered) ? tmp$ : null) != null ? tmp$_0.remove() : null; -}; - AbstractSendChannel$SendConflatedDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SendConflatedDesc', - interfaces: [AbstractSendChannel$SendBufferedDesc]}; - Object.defineProperty(AbstractSendChannel.prototype, 'isClosedForSend', { - get: function() { - return this.closedForSend_0 != null; -}}); - Object.defineProperty(AbstractSendChannel.prototype, 'isFull', { - get: function() { - return !Kotlin.isType(this.queue_0._next, ReceiveOrClosed) && this.isBufferFull; -}}); - AbstractSendChannel.prototype.send_11rb$ = function(element, continuation) { - if (this.offer_11rb$(element)) - return; - return this.sendSuspend_0(element, continuation); -}; - AbstractSendChannel.prototype.offer_11rb$ = function(element) { - var tmp$, tmp$_0, tmp$_1, tmp$_2; - var result = this.offerInternal_11rb$(element); - if (result === OFFER_SUCCESS) - tmp$_2 = true; - else if (result === OFFER_FAILED) { - tmp$_1 = (tmp$_0 = (tmp$ = this.closedForSend_0) != null ? tmp$.sendException : null) != null ? recoverStackTrace_0(tmp$_0) : null; - if (tmp$_1 == null) { - return false; - } - throw tmp$_1; - } else if (Kotlin.isType(result, Closed)) - throw recoverStackTrace_0(result.sendException); - else { - throw IllegalStateException_init(('offerInternal returned ' + result.toString()).toString()); - } - return tmp$_2; -}; - function AbstractSendChannel$sendSuspend$lambda(closure$element, this$AbstractSendChannel) { - return function(cont) { - var send = new SendElement(closure$element, cont); - loop: - while (true) { - var enqueueResult = this$AbstractSendChannel.enqueueSend_0(send); - if (enqueueResult == null) { - removeOnCancellation(cont, send); - return; - } else if (Kotlin.isType(enqueueResult, Closed)) { - this$AbstractSendChannel.helpClose_0(enqueueResult); - var exception = enqueueResult.sendException; - cont.resumeWith_tl1gpc$(new Result(createFailure(exception))); - return; - } - var offerResult = this$AbstractSendChannel.offerInternal_11rb$(closure$element); - if (offerResult === OFFER_SUCCESS) { - cont.resumeWith_tl1gpc$(new Result(Unit)); - return; - } else if (offerResult === OFFER_FAILED) - continue loop; - else if (Kotlin.isType(offerResult, Closed)) { - this$AbstractSendChannel.helpClose_0(offerResult); - var exception_0 = offerResult.sendException; - cont.resumeWith_tl1gpc$(new Result(createFailure(exception_0))); - return; - } else { - throw IllegalStateException_init(('offerInternal returned ' + offerResult.toString()).toString()); - } - } -}; - } - function suspendAtomicCancellableCoroutine$lambda_1(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 0); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - AbstractSendChannel.prototype.sendSuspend_0 = function(element, continuation) { - return suspendAtomicCancellableCoroutine$lambda_1(AbstractSendChannel$sendSuspend$lambda(element, this))(continuation); -}; - function AbstractSendChannel$enqueueSend$lambda(this$AbstractSendChannel) { - return function() { - return this$AbstractSendChannel.isBufferFull; -}; - } - AbstractSendChannel.prototype.enqueueSend_0 = function(send) { - if (this.isBufferAlwaysFull) { - var $this = this.queue_0; - addLastIfPrev_s8xlln$break: - do { - var prev = $this._prev; - if (Kotlin.isType(prev, ReceiveOrClosed)) - return prev; - if (!true) { - false; - break addLastIfPrev_s8xlln$break; - } - $this.addLast_l2j9rm$(send); - true; - } while (false); - } else { - var $this_0 = this.queue_0; - var addLastIfPrevAndIf_dzcug$result; - addLastIfPrevAndIf_dzcug$break: - do { - var prev_0 = $this_0._prev; - if (Kotlin.isType(prev_0, ReceiveOrClosed)) - return prev_0; - if (!true) { - addLastIfPrevAndIf_dzcug$result = false; - break addLastIfPrevAndIf_dzcug$break; - } - if (!AbstractSendChannel$enqueueSend$lambda(this)()) { - addLastIfPrevAndIf_dzcug$result = false; - break addLastIfPrevAndIf_dzcug$break; - } - $this_0.addLast_l2j9rm$(send); - addLastIfPrevAndIf_dzcug$result = true; - } while (false); - if (!addLastIfPrevAndIf_dzcug$result) - return ENQUEUE_FAILED; - } - return null; -}; - AbstractSendChannel.prototype.close_dbl4no$$default = function(cause) { - var tmp$; - var closed = new Closed(cause); - var $this = this.queue_0; - var addLastIfPrev_s8xlln$result; - addLastIfPrev_s8xlln$break: - do { - if (!!Kotlin.isType($this._prev, Closed)) { - addLastIfPrev_s8xlln$result = false; - break addLastIfPrev_s8xlln$break; - } - $this.addLast_l2j9rm$(closed); - addLastIfPrev_s8xlln$result = true; - } while (false); - var closeAdded = addLastIfPrev_s8xlln$result; - if (!closeAdded) { - var actualClosed = Kotlin.isType(tmp$ = this.queue_0._prev, Closed) ? tmp$ : throwCCE(); - this.helpClose_0(actualClosed); - return false; - } - this.helpClose_0(closed); - this.invokeOnCloseHandler_0(cause); - return true; -}; - AbstractSendChannel.prototype.invokeOnCloseHandler_0 = function(cause) { - var tmp$; - var handler = this.onCloseHandler_0; - if (handler !== null && handler !== HANDLER_INVOKED && (function(scope) {return scope.onCloseHandler_0 === handler ? function() {scope.onCloseHandler_0 = HANDLER_INVOKED;return true;}() : false})(this)) { - (typeof (tmp$ = handler) === 'function' ? tmp$ : throwCCE())(cause); - } -}; - AbstractSendChannel.prototype.invokeOnClose_f05bi3$ = function(handler) { - if (!(function(scope) {return scope.onCloseHandler_0 == null ? function() {scope.onCloseHandler_0 = handler;return true;}() : false})(this)) { - var value = this.onCloseHandler_0; - if (value === HANDLER_INVOKED) { - throw IllegalStateException_init('Another handler was already registered and successfully invoked'); - } - throw IllegalStateException_init('Another handler was already registered: ' + toString(value)); - } else { - var closedToken = this.closedForSend_0; - if (closedToken != null && (function(scope) {return scope.onCloseHandler_0 === handler ? function() {scope.onCloseHandler_0 = HANDLER_INVOKED;return true;}() : false})(this)) { - handler(closedToken.closeCause); - } - } -}; - AbstractSendChannel.prototype.helpClose_0 = function(closed) { - var tmp$; - while (true) { - var previous = closed._prev; - if (Kotlin.isType(previous, LinkedListHead) || !Kotlin.isType(previous, Receive)) { - break; - } - if (!previous.remove()) { - previous.helpRemove(); - continue; - } - Kotlin.isType(tmp$ = previous, Receive) ? tmp$ : throwCCE(); - previous.resumeReceiveClosed_1zqbm$(closed); - } - this.onClosedIdempotent_l2j9rm$(closed); -}; - AbstractSendChannel.prototype.onClosedIdempotent_l2j9rm$ = function(closed) { -}; - AbstractSendChannel.prototype.takeFirstReceiveOrPeekClosed = function() { - var $this = this.queue_0; - var removeFirstIfIsInstanceOfOrPeekIf_14urrv$result; - removeFirstIfIsInstanceOfOrPeekIf_14urrv$break: - do { - var next = $this._next; - if (next === $this) { - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = null; - break removeFirstIfIsInstanceOfOrPeekIf_14urrv$break; - } - if (!Kotlin.isType(next, ReceiveOrClosed)) { - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = null; - break removeFirstIfIsInstanceOfOrPeekIf_14urrv$break; - } - if (Kotlin.isType(next, Closed)) { - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = next; - break removeFirstIfIsInstanceOfOrPeekIf_14urrv$break; - } - if (!next.remove()) { - var message = 'Should remove'; - throw IllegalStateException_init(message.toString()); - } - removeFirstIfIsInstanceOfOrPeekIf_14urrv$result = next; - } while (false); - return removeFirstIfIsInstanceOfOrPeekIf_14urrv$result; -}; - AbstractSendChannel.prototype.describeTryOffer_0 = function(element) { - return new AbstractSendChannel$TryOfferDesc(element, this.queue_0); -}; - function AbstractSendChannel$TryOfferDesc(element, queue) { - RemoveFirstDesc.call(this, queue); - this.element = element; - this.resumeToken = null; - } - AbstractSendChannel$TryOfferDesc.prototype.failure_ru8hrx$ = function(affected, next) { - if (!Kotlin.isType(affected, ReceiveOrClosed)) - return OFFER_FAILED; - if (Kotlin.isType(affected, Closed)) - return affected; - return null; -}; - AbstractSendChannel$TryOfferDesc.prototype.validatePrepared_11rb$ = function(node) { - var tmp$; - tmp$ = node.tryResumeReceive_19pj23$(this.element, this); - if (tmp$ == null) { - return false; - } - var token = tmp$; - this.resumeToken = token; - return true; -}; - AbstractSendChannel$TryOfferDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TryOfferDesc', - interfaces: [RemoveFirstDesc]}; - function AbstractSendChannel$TryEnqueueSendDesc($outer, element, select, block) { - this.$outer = $outer; - AddLastDesc.call(this, this.$outer.queue_0, new AbstractSendChannel$SendSelect(element, this.$outer, select, block)); - } - AbstractSendChannel$TryEnqueueSendDesc.prototype.failure_ru8hrx$ = function(affected, next) { - var tmp$, tmp$_0; - if (Kotlin.isType(affected, ReceiveOrClosed)) { - return (tmp$_0 = Kotlin.isType(tmp$ = affected, Closed) ? tmp$ : null) != null ? tmp$_0 : ENQUEUE_FAILED; - } - return null; -}; - AbstractSendChannel$TryEnqueueSendDesc.prototype.onPrepare_bpl3tg$ = function(affected, next) { - if (!this.$outer.isBufferFull) - return ENQUEUE_FAILED; - return AddLastDesc.prototype.onPrepare_bpl3tg$.call(this, affected, next); -}; - AbstractSendChannel$TryEnqueueSendDesc.prototype.finishOnSuccess_bpl3tg$ = function(affected, next) { - AddLastDesc.prototype.finishOnSuccess_bpl3tg$.call(this, affected, next); - this.node.disposeOnSelect(); -}; - AbstractSendChannel$TryEnqueueSendDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TryEnqueueSendDesc', - interfaces: [AddLastDesc]}; - function AbstractSendChannel$get_AbstractSendChannel$onSend$ObjectLiteral(this$AbstractSendChannel) { - this.this$AbstractSendChannel = this$AbstractSendChannel; - } - AbstractSendChannel$get_AbstractSendChannel$onSend$ObjectLiteral.prototype.registerSelectClause2_rol3se$ = function(select, param, block) { - this.this$AbstractSendChannel.registerSelectSend_0(select, param, block); -}; - AbstractSendChannel$get_AbstractSendChannel$onSend$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [SelectClause2]}; - Object.defineProperty(AbstractSendChannel.prototype, 'onSend', { - get: function() { - return new AbstractSendChannel$get_AbstractSendChannel$onSend$ObjectLiteral(this); -}}); - AbstractSendChannel.prototype.registerSelectSend_0 = function(select, element, block) { - var tmp$; - while (true) { - if (select.isSelected) - return; - if (this.isFull) { - var enqueueOp = new AbstractSendChannel$TryEnqueueSendDesc(this, element, select, block); - tmp$ = select.performAtomicIfNotSelected_6q0pxr$(enqueueOp); - if (tmp$ == null) { - return; - } - var enqueueResult = tmp$; - if (enqueueResult === ALREADY_SELECTED) - return; - else if (enqueueResult !== ENQUEUE_FAILED) - if (Kotlin.isType(enqueueResult, Closed)) - throw recoverStackTrace_0(enqueueResult.sendException); - else { - throw IllegalStateException_init(('performAtomicIfNotSelected(TryEnqueueSendDesc) returned ' + enqueueResult.toString()).toString()); - } - } else { - var offerResult = this.offerSelectInternal_ys5ufj$(element, select); - if (offerResult === ALREADY_SELECTED) - return; - else if (offerResult !== OFFER_FAILED) - if (offerResult === OFFER_SUCCESS) { - startCoroutineUnintercepted_0(block, this, select.completion); - return; - } else if (Kotlin.isType(offerResult, Closed)) - throw recoverStackTrace_0(offerResult.sendException); - else { - throw IllegalStateException_init(('offerSelectInternal returned ' + offerResult.toString()).toString()); - } - } - } -}; - AbstractSendChannel.prototype.toString = function() { - return get_classSimpleName(this) + '@' + get_hexAddress(this) + '{' + this.queueDebugStateString_0 + '}' + this.bufferDebugString; -}; - Object.defineProperty(AbstractSendChannel.prototype, 'queueDebugStateString_0', { - get: function() { - var tmp$; - var head = this.queue_0._next; - if (head === this.queue_0) - return 'EmptyQueue'; - if (Kotlin.isType(head, Closed)) - tmp$ = head.toString(); - else if (Kotlin.isType(head, Receive)) - tmp$ = 'ReceiveQueued'; - else if (Kotlin.isType(head, Send)) - tmp$ = 'SendQueued'; - else - tmp$ = 'UNEXPECTED:' + head; - var result = tmp$; - var tail = this.queue_0._prev; - if (tail !== head) { - result += ',queueSize=' + this.countQueueSize_0(); - if (Kotlin.isType(tail, Closed)) - result += ',closedForSend=' + tail; - } - return result; -}}); - AbstractSendChannel.prototype.countQueueSize_0 = function() { - var size = { - v: 0}; - var $this = this.queue_0; - var cur = $this._next; - while (!equals(cur, $this)) { - if (Kotlin.isType(cur, LinkedListNode)) { - size.v = size.v + 1 | 0; - } - cur = cur._next; - } - return size.v; -}; - Object.defineProperty(AbstractSendChannel.prototype, 'bufferDebugString', { - get: function() { - return ''; -}}); - function AbstractSendChannel$SendSelect(pollResult, channel, select, block) { - LinkedListNode.call(this); - this.pollResult_m5nr4l$_0 = pollResult; - this.channel = channel; - this.select = select; - this.block = block; - } - Object.defineProperty(AbstractSendChannel$SendSelect.prototype, 'pollResult', { - get: function() { - return this.pollResult_m5nr4l$_0; -}}); - AbstractSendChannel$SendSelect.prototype.tryResumeSend_s8jyv4$ = function(idempotent) { - return this.select.trySelect_s8jyv4$(idempotent) ? SELECT_STARTED : null; -}; - AbstractSendChannel$SendSelect.prototype.completeResumeSend_za3rmp$ = function(token) { - if (!(token === SELECT_STARTED)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - startCoroutine_0(this.block, this.channel, this.select.completion); -}; - AbstractSendChannel$SendSelect.prototype.disposeOnSelect = function() { - this.select.disposeOnSelect_rvfg84$(this); -}; - AbstractSendChannel$SendSelect.prototype.dispose = function() { - this.remove(); -}; - AbstractSendChannel$SendSelect.prototype.resumeSendClosed_1zqbm$ = function(closed) { - if (this.select.trySelect_s8jyv4$(null)) - this.select.resumeSelectCancellableWithException_tcv7n7$(closed.sendException); -}; - AbstractSendChannel$SendSelect.prototype.toString = function() { - return 'SendSelect(' + toString(this.pollResult) + ')[' + this.channel + ', ' + this.select + ']'; -}; - AbstractSendChannel$SendSelect.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SendSelect', - interfaces: [DisposableHandle, Send, LinkedListNode]}; - function AbstractSendChannel$SendBuffered(element) { - LinkedListNode.call(this); - this.element = element; - } - Object.defineProperty(AbstractSendChannel$SendBuffered.prototype, 'pollResult', { - get: function() { - return this.element; -}}); - AbstractSendChannel$SendBuffered.prototype.tryResumeSend_s8jyv4$ = function(idempotent) { - return SEND_RESUMED; -}; - AbstractSendChannel$SendBuffered.prototype.completeResumeSend_za3rmp$ = function(token) { - if (!(token === SEND_RESUMED)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } -}; - AbstractSendChannel$SendBuffered.prototype.resumeSendClosed_1zqbm$ = function(closed) { -}; - AbstractSendChannel$SendBuffered.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SendBuffered', - interfaces: [Send, LinkedListNode]}; - AbstractSendChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AbstractSendChannel', - interfaces: [SendChannel]}; - function AbstractChannel() { - AbstractSendChannel.call(this); - } - AbstractChannel.prototype.pollInternal = function() { - var tmp$; - while (true) { - tmp$ = this.takeFirstSendOrPeekClosed_0(); - if (tmp$ == null) { - return POLL_FAILED; - } - var send = tmp$; - var token = send.tryResumeSend_s8jyv4$(null); - if (token != null) { - send.completeResumeSend_za3rmp$(token); - return send.pollResult; - } - } -}; - AbstractChannel.prototype.pollSelectInternal_y5yyj0$ = function(select) { - var pollOp = this.describeTryPoll_0(); - var failure = select.performAtomicTrySelect_6q0pxr$(pollOp); - if (failure != null) - return failure; - var send = pollOp.result; - send.completeResumeSend_za3rmp$(ensureNotNull(pollOp.resumeToken)); - return pollOp.pollResult; -}; - Object.defineProperty(AbstractChannel.prototype, 'hasReceiveOrClosed_0', { - get: function() { - return Kotlin.isType(this.queue_0._next, ReceiveOrClosed); -}}); - Object.defineProperty(AbstractChannel.prototype, 'isClosedForReceive', { - get: function() { - return this.closedForReceive_0 != null && this.isBufferEmpty; -}}); - Object.defineProperty(AbstractChannel.prototype, 'isEmpty', { - get: function() { - return !Kotlin.isType(this.queue_0._next, Send) && this.isBufferEmpty; -}}); - AbstractChannel.prototype.receive = function(continuation) { - var result = this.pollInternal(); - if (result !== POLL_FAILED) - return this.receiveResult_0(result); - return this.receiveSuspend_0(continuation); -}; - AbstractChannel.prototype.receiveResult_0 = function(result) { - var tmp$; - if (Kotlin.isType(result, Closed)) - throw recoverStackTrace_0(result.receiveException); - return (tmp$ = result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - function AbstractChannel$receiveSuspend$lambda(this$AbstractChannel) { - return function(cont) { - var tmp$, tmp$_0; - var receive = new AbstractChannel$ReceiveElement(Kotlin.isType(tmp$ = cont, CancellableContinuation) ? tmp$ : throwCCE(), false); - while (true) { - if (this$AbstractChannel.enqueueReceive_0(receive)) { - this$AbstractChannel.removeReceiveOnCancel_0(cont, receive); - return; - } - var result = this$AbstractChannel.pollInternal(); - if (Kotlin.isType(result, Closed)) { - var exception = result.receiveException; - cont.resumeWith_tl1gpc$(new Result(createFailure(exception))); - return; - } - if (result !== POLL_FAILED) { - var value = (tmp$_0 = result) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - cont.resumeWith_tl1gpc$(new Result(value)); - return; - } - } - return Unit; -}; - } - AbstractChannel.prototype.receiveSuspend_0 = function(continuation) { - return suspendAtomicCancellableCoroutine$lambda_1(AbstractChannel$receiveSuspend$lambda(this))(continuation); -}; - function AbstractChannel$enqueueReceive$lambda(this$AbstractChannel) { - return function() { - return this$AbstractChannel.isBufferEmpty; -}; - } - AbstractChannel.prototype.enqueueReceive_0 = function(receive) { - var tmp$; - if (this.isBufferAlwaysEmpty) { - var $this = this.queue_0; - var addLastIfPrev_s8xlln$result; - addLastIfPrev_s8xlln$break: - do { - if (!!Kotlin.isType($this._prev, Send)) { - addLastIfPrev_s8xlln$result = false; - break addLastIfPrev_s8xlln$break; - } - $this.addLast_l2j9rm$(receive); - addLastIfPrev_s8xlln$result = true; - } while (false); - tmp$ = addLastIfPrev_s8xlln$result; - } else { - var $this_0 = this.queue_0; - var addLastIfPrevAndIf_dzcug$result; - addLastIfPrevAndIf_dzcug$break: - do { - if (!!Kotlin.isType($this_0._prev, Send)) { - addLastIfPrevAndIf_dzcug$result = false; - break addLastIfPrevAndIf_dzcug$break; - } - if (!AbstractChannel$enqueueReceive$lambda(this)()) { - addLastIfPrevAndIf_dzcug$result = false; - break addLastIfPrevAndIf_dzcug$break; - } - $this_0.addLast_l2j9rm$(receive); - addLastIfPrevAndIf_dzcug$result = true; - } while (false); - tmp$ = addLastIfPrevAndIf_dzcug$result; - } - var result = tmp$; - if (result) - this.onReceiveEnqueued(); - return result; -}; - AbstractChannel.prototype.receiveOrNull = function(continuation) { - var result = this.pollInternal(); - if (result !== POLL_FAILED) - return this.receiveOrNullResult_0(result); - return this.receiveOrNullSuspend_0(continuation); -}; - AbstractChannel.prototype.receiveOrNullResult_0 = function(result) { - var tmp$; - if (Kotlin.isType(result, Closed)) { - if (result.closeCause != null) - throw recoverStackTrace_0(result.closeCause); - return null; - } - return (tmp$ = result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - function AbstractChannel$receiveOrNullSuspend$lambda(this$AbstractChannel) { - return function(cont) { - var tmp$; - var receive = new AbstractChannel$ReceiveElement(cont, true); - while (true) { - if (this$AbstractChannel.enqueueReceive_0(receive)) { - this$AbstractChannel.removeReceiveOnCancel_0(cont, receive); - return; - } - var result = this$AbstractChannel.pollInternal(); - if (Kotlin.isType(result, Closed)) { - if (result.closeCause == null) { - cont.resumeWith_tl1gpc$(new Result(null)); - } else { - var exception = result.closeCause; - cont.resumeWith_tl1gpc$(new Result(createFailure(exception))); - } - return; - } - if (result !== POLL_FAILED) { - var value = (tmp$ = result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - cont.resumeWith_tl1gpc$(new Result(value)); - return; - } - } - return Unit; -}; - } - AbstractChannel.prototype.receiveOrNullSuspend_0 = function(continuation) { - return suspendAtomicCancellableCoroutine$lambda_1(AbstractChannel$receiveOrNullSuspend$lambda(this))(continuation); -}; - AbstractChannel.prototype.poll = function() { - var result = this.pollInternal(); - return result === POLL_FAILED ? null : this.receiveOrNullResult_0(result); -}; - AbstractChannel.prototype.cancel = function() { - this.cancel_dbl4no$(null); -}; - AbstractChannel.prototype.cancel_dbl4no$$default = function(cause) { - var $receiver = this.close_dbl4no$(cause); - this.cleanupSendQueueOnCancel(); - return $receiver; -}; - AbstractChannel.prototype.cleanupSendQueueOnCancel = function() { - var tmp$, tmp$_0; - var tmp$_1; - if ((tmp$ = this.closedForSend_0) != null) - tmp$_1 = tmp$; - else { - throw IllegalStateException_init('Cannot happen'.toString()); - } - var closed = tmp$_1; - while (true) { - var tmp$_2; - if ((tmp$_0 = this.takeFirstSendOrPeekClosed_0()) != null) - tmp$_2 = tmp$_0; - else { - throw IllegalStateException_init('Cannot happen'.toString()); - } - var send = tmp$_2; - if (Kotlin.isType(send, Closed)) { - if (!(send === closed)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - return; - } - send.resumeSendClosed_1zqbm$(closed); - } -}; - AbstractChannel.prototype.iterator = function() { - return new AbstractChannel$Itr(this); -}; - AbstractChannel.prototype.describeTryPoll_0 = function() { - return new AbstractChannel$TryPollDesc(this.queue_0); -}; - function AbstractChannel$TryPollDesc(queue) { - RemoveFirstDesc.call(this, queue); - this.resumeToken = null; - this.pollResult = null; - } - AbstractChannel$TryPollDesc.prototype.failure_ru8hrx$ = function(affected, next) { - if (Kotlin.isType(affected, Closed)) - return affected; - if (!Kotlin.isType(affected, Send)) - return POLL_FAILED; - return null; -}; - AbstractChannel$TryPollDesc.prototype.validatePrepared_11rb$ = function(node) { - var tmp$, tmp$_0; - tmp$ = node.tryResumeSend_s8jyv4$(this); - if (tmp$ == null) { - return false; - } - var token = tmp$; - this.resumeToken = token; - this.pollResult = (tmp$_0 = node.pollResult) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - return true; -}; - AbstractChannel$TryPollDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TryPollDesc', - interfaces: [RemoveFirstDesc]}; - function AbstractChannel$TryEnqueueReceiveDesc($outer, select, block, nullOnClose) { - this.$outer = $outer; - AddLastDesc.call(this, this.$outer.queue_0, new AbstractChannel$ReceiveSelect(this.$outer, select, block, nullOnClose)); - } - AbstractChannel$TryEnqueueReceiveDesc.prototype.failure_ru8hrx$ = function(affected, next) { - if (Kotlin.isType(affected, Send)) - return ENQUEUE_FAILED; - return null; -}; - AbstractChannel$TryEnqueueReceiveDesc.prototype.onPrepare_bpl3tg$ = function(affected, next) { - if (!this.$outer.isBufferEmpty) - return ENQUEUE_FAILED; - return AddLastDesc.prototype.onPrepare_bpl3tg$.call(this, affected, next); -}; - AbstractChannel$TryEnqueueReceiveDesc.prototype.finishOnSuccess_bpl3tg$ = function(affected, next) { - AddLastDesc.prototype.finishOnSuccess_bpl3tg$.call(this, affected, next); - this.$outer.onReceiveEnqueued(); - this.node.removeOnSelectCompletion(); -}; - AbstractChannel$TryEnqueueReceiveDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TryEnqueueReceiveDesc', - interfaces: [AddLastDesc]}; - function AbstractChannel$get_AbstractChannel$onReceive$ObjectLiteral(this$AbstractChannel) { - this.this$AbstractChannel = this$AbstractChannel; - } - AbstractChannel$get_AbstractChannel$onReceive$ObjectLiteral.prototype.registerSelectClause1_o3xas4$ = function(select, block) { - this.this$AbstractChannel.registerSelectReceive_0(select, block); -}; - AbstractChannel$get_AbstractChannel$onReceive$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [SelectClause1]}; - Object.defineProperty(AbstractChannel.prototype, 'onReceive', { - get: function() { - return new AbstractChannel$get_AbstractChannel$onReceive$ObjectLiteral(this); -}}); - AbstractChannel.prototype.registerSelectReceive_0 = function(select, block) { - var tmp$, tmp$_0, tmp$_1; - while (true) { - if (select.isSelected) - return; - if (this.isEmpty) { - var enqueueOp = new AbstractChannel$TryEnqueueReceiveDesc(this, select, Kotlin.isType(tmp$ = block, SuspendFunction1) ? tmp$ : throwCCE(), false); - tmp$_0 = select.performAtomicIfNotSelected_6q0pxr$(enqueueOp); - if (tmp$_0 == null) { - return; - } - var enqueueResult = tmp$_0; - if (enqueueResult === ALREADY_SELECTED) - return; - else if (enqueueResult !== ENQUEUE_FAILED) { - throw IllegalStateException_init(('performAtomicIfNotSelected(TryEnqueueReceiveDesc) returned ' + enqueueResult.toString()).toString()); - } - } else { - var pollResult = this.pollSelectInternal_y5yyj0$(select); - if (pollResult === ALREADY_SELECTED) - return; - else if (pollResult !== POLL_FAILED) - if (Kotlin.isType(pollResult, Closed)) - throw recoverStackTrace_0(pollResult.receiveException); - else { - startCoroutineUnintercepted_0(block, (tmp$_1 = pollResult) == null || Kotlin.isType(tmp$_1, Any) ? tmp$_1 : throwCCE(), select.completion); - return; - } - } - } -}; - function AbstractChannel$get_AbstractChannel$onReceiveOrNull$ObjectLiteral(this$AbstractChannel) { - this.this$AbstractChannel = this$AbstractChannel; - } - AbstractChannel$get_AbstractChannel$onReceiveOrNull$ObjectLiteral.prototype.registerSelectClause1_o3xas4$ = function(select, block) { - this.this$AbstractChannel.registerSelectReceiveOrNull_0(select, block); -}; - AbstractChannel$get_AbstractChannel$onReceiveOrNull$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [SelectClause1]}; - Object.defineProperty(AbstractChannel.prototype, 'onReceiveOrNull', { - get: function() { - return new AbstractChannel$get_AbstractChannel$onReceiveOrNull$ObjectLiteral(this); -}}); - AbstractChannel.prototype.registerSelectReceiveOrNull_0 = function(select, block) { - var tmp$, tmp$_0; - while (true) { - if (select.isSelected) - return; - if (this.isEmpty) { - var enqueueOp = new AbstractChannel$TryEnqueueReceiveDesc(this, select, block, true); - tmp$ = select.performAtomicIfNotSelected_6q0pxr$(enqueueOp); - if (tmp$ == null) { - return; - } - var enqueueResult = tmp$; - if (enqueueResult === ALREADY_SELECTED) - return; - else if (enqueueResult !== ENQUEUE_FAILED) { - throw IllegalStateException_init(('performAtomicIfNotSelected(TryEnqueueReceiveDesc) returned ' + enqueueResult.toString()).toString()); - } - } else { - var pollResult = this.pollSelectInternal_y5yyj0$(select); - if (pollResult === ALREADY_SELECTED) - return; - else if (pollResult !== POLL_FAILED) - if (Kotlin.isType(pollResult, Closed)) - if (pollResult.closeCause == null) { - if (select.trySelect_s8jyv4$(null)) - startCoroutineUnintercepted_0(block, null, select.completion); - return; - } else { - throw recoverStackTrace_0(pollResult.closeCause); - } - else { - startCoroutineUnintercepted_0(block, (tmp$_0 = pollResult) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), select.completion); - return; - } - } - } -}; - AbstractChannel.prototype.takeFirstReceiveOrPeekClosed = function() { - var $receiver = AbstractSendChannel.prototype.takeFirstReceiveOrPeekClosed.call(this); - if ($receiver != null && !Kotlin.isType($receiver, Closed)) - this.onReceiveDequeued(); - return $receiver; -}; - AbstractChannel.prototype.onReceiveEnqueued = function() { -}; - AbstractChannel.prototype.onReceiveDequeued = function() { -}; - AbstractChannel.prototype.removeReceiveOnCancel_0 = function(cont, receive) { - cont.invokeOnCancellation_f05bi3$(new AbstractChannel$RemoveReceiveOnCancel(this, receive)); -}; - function AbstractChannel$RemoveReceiveOnCancel($outer, receive) { - this.$outer = $outer; - CancelHandler.call(this); - this.receive_0 = receive; - } - AbstractChannel$RemoveReceiveOnCancel.prototype.invoke = function(cause) { - if (this.receive_0.remove()) - this.$outer.onReceiveDequeued(); -}; - AbstractChannel$RemoveReceiveOnCancel.prototype.toString = function() { - return 'RemoveReceiveOnCancel[' + this.receive_0 + ']'; -}; - AbstractChannel$RemoveReceiveOnCancel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'RemoveReceiveOnCancel', - interfaces: [CancelHandler]}; - function AbstractChannel$Itr(channel) { - this.channel = channel; - this.result = POLL_FAILED; - } - AbstractChannel$Itr.prototype.hasNext = function(continuation) { - if (this.result !== POLL_FAILED) - return this.hasNextResult_0(this.result); - this.result = this.channel.pollInternal(); - if (this.result !== POLL_FAILED) - return this.hasNextResult_0(this.result); - return this.hasNextSuspend_0(continuation); -}; - AbstractChannel$Itr.prototype.hasNextResult_0 = function(result) { - if (Kotlin.isType(result, Closed)) { - if (result.closeCause != null) - throw recoverStackTrace_0(result.receiveException); - return false; - } - return true; -}; - function AbstractChannel$Itr$hasNextSuspend$lambda(this$Itr) { - return function(cont) { - var receive = new AbstractChannel$ReceiveHasNext(this$Itr, cont); - while (true) { - if (this$Itr.channel.enqueueReceive_0(receive)) { - this$Itr.channel.removeReceiveOnCancel_0(cont, receive); - return; - } - var result = this$Itr.channel.pollInternal(); - this$Itr.result = result; - if (Kotlin.isType(result, Closed)) { - if (result.closeCause == null) { - cont.resumeWith_tl1gpc$(new Result(false)); - } else { - var exception = result.receiveException; - cont.resumeWith_tl1gpc$(new Result(createFailure(exception))); - } - return; - } - if (result !== POLL_FAILED) { - cont.resumeWith_tl1gpc$(new Result(true)); - return; - } - } - return Unit; -}; - } - AbstractChannel$Itr.prototype.hasNextSuspend_0 = function(continuation) { - return suspendAtomicCancellableCoroutine$lambda_1(AbstractChannel$Itr$hasNextSuspend$lambda(this))(continuation); -}; - AbstractChannel$Itr.prototype.next = function(continuation) { - var tmp$; - var result = this.result; - if (Kotlin.isType(result, Closed)) - throw recoverStackTrace_0(result.receiveException); - if (result !== POLL_FAILED) { - this.result = POLL_FAILED; - return (tmp$ = result) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } - return this.channel.receive(continuation); -}; - AbstractChannel$Itr.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Itr', - interfaces: [ChannelIterator]}; - function AbstractChannel$ReceiveElement(cont, nullOnClose) { - Receive.call(this); - this.cont = cont; - this.nullOnClose = nullOnClose; - } - AbstractChannel$ReceiveElement.prototype.tryResumeReceive_19pj23$ = function(value, idempotent) { - return this.cont.tryResume_19pj23$(value, idempotent); -}; - AbstractChannel$ReceiveElement.prototype.completeResumeReceive_za3rmp$ = function(token) { - this.cont.completeResume_za3rmp$(token); -}; - AbstractChannel$ReceiveElement.prototype.resumeReceiveClosed_1zqbm$ = function(closed) { - if (closed.closeCause == null && this.nullOnClose) { - this.cont.resumeWith_tl1gpc$(new Result(null)); - } else { - var $receiver = this.cont; - var exception = closed.receiveException; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); - } -}; - AbstractChannel$ReceiveElement.prototype.toString = function() { - return 'ReceiveElement[' + this.cont + ',nullOnClose=' + this.nullOnClose + ']'; -}; - AbstractChannel$ReceiveElement.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ReceiveElement', - interfaces: [Receive]}; - function AbstractChannel$ReceiveHasNext(iterator, cont) { - Receive.call(this); - this.iterator = iterator; - this.cont = cont; - } - AbstractChannel$ReceiveHasNext.prototype.tryResumeReceive_19pj23$ = function(value, idempotent) { - var token = this.cont.tryResume_19pj23$(true, idempotent); - if (token != null) { - if (idempotent != null) - return new AbstractChannel$IdempotentTokenValue(token, value); - this.iterator.result = value; - } - return token; -}; - AbstractChannel$ReceiveHasNext.prototype.completeResumeReceive_za3rmp$ = function(token) { - if (Kotlin.isType(token, AbstractChannel$IdempotentTokenValue)) { - this.iterator.result = token.value; - this.cont.completeResume_za3rmp$(token.token); - } else - this.cont.completeResume_za3rmp$(token); -}; - AbstractChannel$ReceiveHasNext.prototype.resumeReceiveClosed_1zqbm$ = function(closed) { - var tmp$; - if (closed.closeCause == null) { - tmp$ = this.cont.tryResume_19pj23$(false); - } else { - tmp$ = this.cont.tryResumeWithException_tcv7n7$(recoverStackTrace(closed.receiveException, this.cont)); - } - var token = tmp$; - if (token != null) { - this.iterator.result = closed; - this.cont.completeResume_za3rmp$(token); - } -}; - AbstractChannel$ReceiveHasNext.prototype.toString = function() { - return 'ReceiveHasNext[' + this.cont + ']'; -}; - AbstractChannel$ReceiveHasNext.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ReceiveHasNext', - interfaces: [Receive]}; - function AbstractChannel$ReceiveSelect($outer, select, block, nullOnClose) { - this.$outer = $outer; - Receive.call(this); - this.select = select; - this.block = block; - this.nullOnClose = nullOnClose; - } - AbstractChannel$ReceiveSelect.prototype.tryResumeReceive_19pj23$ = function(value, idempotent) { - return this.select.trySelect_s8jyv4$(idempotent) ? value != null ? value : NULL_VALUE : null; -}; - AbstractChannel$ReceiveSelect.prototype.completeResumeReceive_za3rmp$ = function(token) { - var tmp$; - var value = (tmp$ = token === NULL_VALUE ? null : token) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - startCoroutine_0(this.block, value, this.select.completion); -}; - AbstractChannel$ReceiveSelect.prototype.resumeReceiveClosed_1zqbm$ = function(closed) { - if (this.select.trySelect_s8jyv4$(null)) { - if (closed.closeCause == null && this.nullOnClose) { - startCoroutine_0(this.block, null, this.select.completion); - } else { - this.select.resumeSelectCancellableWithException_tcv7n7$(closed.receiveException); - } - } -}; - AbstractChannel$ReceiveSelect.prototype.removeOnSelectCompletion = function() { - this.select.disposeOnSelect_rvfg84$(this); -}; - AbstractChannel$ReceiveSelect.prototype.dispose = function() { - if (this.remove()) - this.$outer.onReceiveDequeued(); -}; - AbstractChannel$ReceiveSelect.prototype.toString = function() { - return 'ReceiveSelect[' + this.select + ',nullOnClose=' + this.nullOnClose + ']'; -}; - AbstractChannel$ReceiveSelect.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ReceiveSelect', - interfaces: [DisposableHandle, Receive]}; - function AbstractChannel$IdempotentTokenValue(token, value) { - this.token = token; - this.value = value; - } - AbstractChannel$IdempotentTokenValue.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'IdempotentTokenValue', - interfaces: []}; - AbstractChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AbstractChannel', - interfaces: [Channel, AbstractSendChannel]}; - var OFFER_SUCCESS; - var OFFER_FAILED; - var POLL_FAILED; - var ENQUEUE_FAILED; - var SELECT_STARTED; - var NULL_VALUE; - var CLOSE_RESUMED; - var SEND_RESUMED; - var HANDLER_INVOKED; - function Send() { - } - Send.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Send', - interfaces: []}; - function ReceiveOrClosed() { - } - ReceiveOrClosed.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ReceiveOrClosed', - interfaces: []}; - function SendElement(pollResult, cont) { - LinkedListNode.call(this); - this.pollResult_vo6xxe$_0 = pollResult; - this.cont = cont; - } - Object.defineProperty(SendElement.prototype, 'pollResult', { - get: function() { - return this.pollResult_vo6xxe$_0; -}}); - SendElement.prototype.tryResumeSend_s8jyv4$ = function(idempotent) { - return this.cont.tryResume_19pj23$(Unit, idempotent); -}; - SendElement.prototype.completeResumeSend_za3rmp$ = function(token) { - this.cont.completeResume_za3rmp$(token); -}; - SendElement.prototype.resumeSendClosed_1zqbm$ = function(closed) { - var $receiver = this.cont; - var exception = closed.sendException; - $receiver.resumeWith_tl1gpc$(new Result(createFailure(exception))); -}; - SendElement.prototype.toString = function() { - return 'SendElement(' + toString(this.pollResult) + ')[' + this.cont + ']'; -}; - SendElement.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SendElement', - interfaces: [Send, LinkedListNode]}; - function Closed(closeCause) { - LinkedListNode.call(this); - this.closeCause = closeCause; - } - Object.defineProperty(Closed.prototype, 'sendException', { - get: function() { - var tmp$; - return (tmp$ = this.closeCause) != null ? tmp$ : new ClosedSendChannelException(DEFAULT_CLOSE_MESSAGE); -}}); - Object.defineProperty(Closed.prototype, 'receiveException', { - get: function() { - var tmp$; - return (tmp$ = this.closeCause) != null ? tmp$ : new ClosedReceiveChannelException(DEFAULT_CLOSE_MESSAGE); -}}); - Object.defineProperty(Closed.prototype, 'offerResult', { - get: function() { - return this; -}}); - Object.defineProperty(Closed.prototype, 'pollResult', { - get: function() { - return this; -}}); - Closed.prototype.tryResumeSend_s8jyv4$ = function(idempotent) { - return CLOSE_RESUMED; -}; - Closed.prototype.completeResumeSend_za3rmp$ = function(token) { - if (!(token === CLOSE_RESUMED)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } -}; - Closed.prototype.tryResumeReceive_19pj23$ = function(value, idempotent) { - return CLOSE_RESUMED; -}; - Closed.prototype.completeResumeReceive_za3rmp$ = function(token) { - if (!(token === CLOSE_RESUMED)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } -}; - Closed.prototype.resumeSendClosed_1zqbm$ = function(closed) { - throw IllegalStateException_init('Should be never invoked'.toString()); -}; - Closed.prototype.toString = function() { - return 'Closed[' + toString(this.closeCause) + ']'; -}; - Closed.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Closed', - interfaces: [ReceiveOrClosed, Send, LinkedListNode]}; - function Receive() { - LinkedListNode.call(this); - } - Object.defineProperty(Receive.prototype, 'offerResult', { - get: function() { - return OFFER_SUCCESS; -}}); - Receive.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Receive', - interfaces: [ReceiveOrClosed, LinkedListNode]}; - function ArrayBroadcastChannel(capacity) { - AbstractSendChannel.call(this); - this.capacity = capacity; - if (!(this.capacity >= 1)) { - var message = 'ArrayBroadcastChannel capacity must be at least 1, but ' + this.capacity + ' was specified'; - throw IllegalArgumentException_init(message.toString()); - } - this.bufferLock_0 = new NoOpLock(); - this.buffer_0 = Kotlin.newArray(this.capacity, null); - this.head_0 = L0; - this.tail_0 = L0; - this.size_0 = 0; - this.subscribers_0 = subscriberList(); - } - Object.defineProperty(ArrayBroadcastChannel.prototype, 'isBufferAlwaysFull', { - get: function() { - return false; -}}); - Object.defineProperty(ArrayBroadcastChannel.prototype, 'isBufferFull', { - get: function() { - return this.size_0 >= this.capacity; -}}); - ArrayBroadcastChannel.prototype.openSubscription = function() { - var $receiver = new ArrayBroadcastChannel$Subscriber(this); - this.updateHead_0($receiver); - return $receiver; -}; - ArrayBroadcastChannel.prototype.close_dbl4no$$default = function(cause) { - if (!this.close_dbl4no$(cause, AbstractSendChannel.prototype.close_dbl4no$$default.bind(this))) - return false; - this.checkSubOffers_0(); - return true; -}; - ArrayBroadcastChannel.prototype.cancel_dbl4no$$default = function(cause) { - var $receiver = this.close_dbl4no$(cause); - var tmp$; - tmp$ = this.subscribers_0.iterator(); - while (tmp$.hasNext()) { - var sub = tmp$.next(); - sub.cancel_dbl4no$(cause); - } - return $receiver; -}; - ArrayBroadcastChannel.prototype.offerInternal_11rb$ = function(element) { - var tmp$; - if ((tmp$ = this.closedForSend_0) != null) { - return tmp$; - } - var size = this.size_0; - if (size >= this.capacity) - return OFFER_FAILED; - var tail = this.tail_0; - this.buffer_0[tail.modulo(Kotlin.Long.fromInt(this.capacity)).toInt()] = element; - this.size_0 = size + 1 | 0; - this.tail_0 = tail.add(Kotlin.Long.fromInt(1)); - this.checkSubOffers_0(); - return OFFER_SUCCESS; -}; - ArrayBroadcastChannel.prototype.offerSelectInternal_ys5ufj$ = function(element, select) { - var tmp$; - if ((tmp$ = this.closedForSend_0) != null) { - return tmp$; - } - var size = this.size_0; - if (size >= this.capacity) - return OFFER_FAILED; - if (!select.trySelect_s8jyv4$(null)) { - return ALREADY_SELECTED; - } - var tail = this.tail_0; - this.buffer_0[tail.modulo(Kotlin.Long.fromInt(this.capacity)).toInt()] = element; - this.size_0 = size + 1 | 0; - this.tail_0 = tail.add(Kotlin.Long.fromInt(1)); - this.checkSubOffers_0(); - return OFFER_SUCCESS; -}; - ArrayBroadcastChannel.prototype.checkSubOffers_0 = function() { - var tmp$; - var updated = false; - var hasSubs = false; - tmp$ = this.subscribers_0.iterator(); - while (tmp$.hasNext()) { - var sub = tmp$.next(); - hasSubs = true; - if (sub.checkOffer()) - updated = true; - } - if (updated || !hasSubs) - this.updateHead_0(); -}; - ArrayBroadcastChannel.prototype.updateHead_0 = function(addSub, removeSub) { - if (addSub === void 0) - addSub = null; - if (removeSub === void 0) - removeSub = null; - var send = { - v: null}; - var token = { - v: null}; - action$break: - do { - var tmp$, tmp$_0; - if (addSub != null) { - addSub.subHead = this.tail_0; - var wasEmpty = this.subscribers_0.isEmpty(); - this.subscribers_0.add_11rb$(addSub); - if (!wasEmpty) - return; - } - if (removeSub != null) { - this.subscribers_0.remove_11rb$(removeSub); - if (!equals(this.head_0, removeSub.subHead)) - return; - } - var minHead = this.computeMinHead_0(); - var tail = this.tail_0; - var head = this.head_0; - var targetHead = coerceAtMost(minHead, tail); - if (targetHead.compareTo_11rb$(head) <= 0) - return; - var size = this.size_0; - while (head.compareTo_11rb$(targetHead) < 0) { - this.buffer_0[head.modulo(Kotlin.Long.fromInt(this.capacity)).toInt()] = null; - var wasFull = size >= this.capacity; - this.head_0 = (head = head.inc() , head); - this.size_0 = (size = size - 1 | 0 , size); - if (wasFull) { - while (true) { - tmp$ = this.takeFirstSendOrPeekClosed_0(); - if (tmp$ == null) { - break; - } - send.v = tmp$; - if (Kotlin.isType(send.v, Closed)) - break; - token.v = ensureNotNull(send.v).tryResumeSend_s8jyv4$(null); - if (token.v != null) { - this.buffer_0[tail.modulo(Kotlin.Long.fromInt(this.capacity)).toInt()] = (Kotlin.isType(tmp$_0 = send.v, Send) ? tmp$_0 : throwCCE()).pollResult; - this.size_0 = size + 1 | 0; - this.tail_0 = tail.add(Kotlin.Long.fromInt(1)); - break action$break; - } - } - } - } - return; - } while (false); - ensureNotNull(send.v).completeResumeSend_za3rmp$(ensureNotNull(token.v)); - this.checkSubOffers_0(); - this.updateHead_0(); -}; - ArrayBroadcastChannel.prototype.computeMinHead_0 = function() { - var tmp$; - var minHead = Long$Companion$MAX_VALUE; - tmp$ = this.subscribers_0.iterator(); - while (tmp$.hasNext()) { - var sub = tmp$.next(); - minHead = coerceAtMost(minHead, sub.subHead); - } - return minHead; -}; - ArrayBroadcastChannel.prototype.elementAt_0 = function(index) { - var tmp$; - return (tmp$ = this.buffer_0[index.modulo(Kotlin.Long.fromInt(this.capacity)).toInt()]) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - function ArrayBroadcastChannel$Subscriber(broadcastChannel) { - AbstractChannel.call(this); - this.broadcastChannel_0 = broadcastChannel; - this.subLock_0 = new NoOpLock(); - this.subHead = L0; - } - Object.defineProperty(ArrayBroadcastChannel$Subscriber.prototype, 'isBufferAlwaysEmpty', { - get: function() { - return false; -}}); - Object.defineProperty(ArrayBroadcastChannel$Subscriber.prototype, 'isBufferEmpty', { - get: function() { - return this.subHead.compareTo_11rb$(this.broadcastChannel_0.tail_0) >= 0; -}}); - Object.defineProperty(ArrayBroadcastChannel$Subscriber.prototype, 'isBufferAlwaysFull', { - get: function() { - throw IllegalStateException_init('Should not be used'.toString()); -}}); - Object.defineProperty(ArrayBroadcastChannel$Subscriber.prototype, 'isBufferFull', { - get: function() { - throw IllegalStateException_init('Should not be used'.toString()); -}}); - ArrayBroadcastChannel$Subscriber.prototype.cancel_dbl4no$$default = function(cause) { - var $receiver = this.close_dbl4no$(cause); - if ($receiver) - this.broadcastChannel_0.updateHead_0(void 0, this); - this.clearBuffer_0(); - return $receiver; -}; - ArrayBroadcastChannel$Subscriber.prototype.clearBuffer_0 = function() { - this.subHead = this.broadcastChannel_0.tail_0; -}; - ArrayBroadcastChannel$Subscriber.prototype.checkOffer = function() { - var tmp$, tmp$_0; - var updated = false; - var closed = null; - loop: - while (this.needsToCheckOfferWithoutLock_0()) { - if (!this.subLock_0.tryLock()) - break; - var receive; - var token; - try { - var result = this.peekUnderLock_0(); - if (result === POLL_FAILED) - continue loop; - else if (Kotlin.isType(result, Closed)) { - closed = result; - break loop; - } - tmp$ = this.takeFirstReceiveOrPeekClosed(); - if (tmp$ == null) { - break; - } - receive = tmp$; - if (Kotlin.isType(receive, Closed)) - break; - token = receive.tryResumeReceive_19pj23$((tmp$_0 = result) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), null); - if (token == null) - continue; - var subHead = this.subHead; - this.subHead = subHead.add(Kotlin.Long.fromInt(1)); - updated = true; - } finally { - this.subLock_0.unlock(); - } - ensureNotNull(receive).completeResumeReceive_za3rmp$(ensureNotNull(token)); - } - if (closed != null) { - this.close_dbl4no$(closed.closeCause); - } - return updated; -}; - ArrayBroadcastChannel$Subscriber.prototype.pollInternal = function() { - var tmp$, tmp$_0; - var updated = { - v: false}; - var result = this.peekUnderLock_0(); - if (!Kotlin.isType(result, Closed)) - if (result !== POLL_FAILED) { - var subHead = this.subHead; - this.subHead = subHead.add(Kotlin.Long.fromInt(1)); - updated.v = true; - } - var result_0 = result; - if ((tmp$_0 = Kotlin.isType(tmp$ = result_0, Closed) ? tmp$ : null) != null) { - this.close_dbl4no$(tmp$_0.closeCause); - } - if (this.checkOffer()) - updated.v = true; - if (updated.v) - this.broadcastChannel_0.updateHead_0(); - return result_0; -}; - ArrayBroadcastChannel$Subscriber.prototype.pollSelectInternal_y5yyj0$ = function(select) { - var tmp$, tmp$_0; - var updated = { - v: false}; - var result = this.peekUnderLock_0(); - if (!Kotlin.isType(result, Closed)) - if (result !== POLL_FAILED) { - if (!select.trySelect_s8jyv4$(null)) { - result = ALREADY_SELECTED; - } else { - var subHead = this.subHead; - this.subHead = subHead.add(Kotlin.Long.fromInt(1)); - updated.v = true; - } - } - var result_0 = result; - if ((tmp$_0 = Kotlin.isType(tmp$ = result_0, Closed) ? tmp$ : null) != null) { - this.close_dbl4no$(tmp$_0.closeCause); - } - if (this.checkOffer()) - updated.v = true; - if (updated.v) - this.broadcastChannel_0.updateHead_0(); - return result_0; -}; - ArrayBroadcastChannel$Subscriber.prototype.needsToCheckOfferWithoutLock_0 = function() { - if (this.closedForReceive_0 != null) - return false; - if (this.isBufferEmpty && this.broadcastChannel_0.closedForReceive_0 == null) - return false; - return true; -}; - ArrayBroadcastChannel$Subscriber.prototype.peekUnderLock_0 = function() { - var tmp$; - var subHead = this.subHead; - var closedBroadcast = this.broadcastChannel_0.closedForReceive_0; - var tail = this.broadcastChannel_0.tail_0; - if (subHead.compareTo_11rb$(tail) >= 0) { - return (tmp$ = closedBroadcast != null ? closedBroadcast : this.closedForReceive_0) != null ? tmp$ : POLL_FAILED; - } - var result = this.broadcastChannel_0.elementAt_0(subHead); - var closedSub = this.closedForReceive_0; - if (closedSub != null) - return closedSub; - return result; -}; - ArrayBroadcastChannel$Subscriber.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Subscriber', - interfaces: [AbstractChannel, ReceiveChannel]}; - Object.defineProperty(ArrayBroadcastChannel.prototype, 'bufferDebugString', { - get: function() { - return '(buffer:capacity=' + this.buffer_0.length + ',size=' + this.size_0 + ')'; -}}); - ArrayBroadcastChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ArrayBroadcastChannel', - interfaces: [BroadcastChannel, AbstractSendChannel]}; - function ArrayChannel(capacity) { - AbstractChannel.call(this); - this.capacity = capacity; - if (!(this.capacity >= 1)) { - var message = 'ArrayChannel capacity must be at least 1, but ' + this.capacity + ' was specified'; - throw IllegalArgumentException_init(message.toString()); - } - this.lock_0 = new NoOpLock(); - this.buffer_0 = Kotlin.newArray(this.capacity, null); - this.head_0 = 0; - this.size_0 = 0; - } - Object.defineProperty(ArrayChannel.prototype, 'isBufferAlwaysEmpty', { - get: function() { - return false; -}}); - Object.defineProperty(ArrayChannel.prototype, 'isBufferEmpty', { - get: function() { - return this.size_0 === 0; -}}); - Object.defineProperty(ArrayChannel.prototype, 'isBufferAlwaysFull', { - get: function() { - return false; -}}); - Object.defineProperty(ArrayChannel.prototype, 'isBufferFull', { - get: function() { - return this.size_0 === this.capacity; -}}); - ArrayChannel.prototype.offerInternal_11rb$ = function(element) { - var receive = { - v: null}; - var token = { - v: null}; - action$break: - do { - var tmp$, tmp$_0; - var size = this.size_0; - if ((tmp$ = this.closedForSend_0) != null) { - return tmp$; - } - if (size < this.capacity) { - this.size_0 = size + 1 | 0; - if (size === 0) { - loop: - while (true) { - tmp$_0 = this.takeFirstReceiveOrPeekClosed(); - if (tmp$_0 == null) { - break loop; - } - receive.v = tmp$_0; - if (Kotlin.isType(receive.v, Closed)) { - this.size_0 = size; - return ensureNotNull(receive.v); - } - token.v = ensureNotNull(receive.v).tryResumeReceive_19pj23$(element, null); - if (token.v != null) { - this.size_0 = size; - break action$break; - } - } - } - this.buffer_0[(this.head_0 + size | 0) % this.capacity] = element; - return OFFER_SUCCESS; - } - return OFFER_FAILED; - } while (false); - ensureNotNull(receive.v).completeResumeReceive_za3rmp$(ensureNotNull(token.v)); - return ensureNotNull(receive.v).offerResult; -}; - ArrayChannel.prototype.offerSelectInternal_ys5ufj$ = function(element, select) { - var receive = { - v: null}; - var token = { - v: null}; - action$break: - do { - var tmp$; - var size = this.size_0; - if ((tmp$ = this.closedForSend_0) != null) { - return tmp$; - } - if (size < this.capacity) { - this.size_0 = size + 1 | 0; - if (size === 0) { - loop: - while (true) { - var offerOp = this.describeTryOffer_0(element); - var failure = select.performAtomicTrySelect_6q0pxr$(offerOp); - if (failure == null) { - this.size_0 = size; - receive.v = offerOp.result; - token.v = offerOp.resumeToken; - if (!(token.v != null)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - break action$break; - } else if (failure === OFFER_FAILED) - break loop; - else if (failure === ALREADY_SELECTED || Kotlin.isType(failure, Closed)) { - this.size_0 = size; - return failure; - } else { - throw IllegalStateException_init(('performAtomicTrySelect(describeTryOffer) returned ' + toString(failure)).toString()); - } - } - } - if (!select.trySelect_s8jyv4$(null)) { - this.size_0 = size; - return ALREADY_SELECTED; - } - this.buffer_0[(this.head_0 + size | 0) % this.capacity] = element; - return OFFER_SUCCESS; - } - return OFFER_FAILED; - } while (false); - ensureNotNull(receive.v).completeResumeReceive_za3rmp$(ensureNotNull(token.v)); - return ensureNotNull(receive.v).offerResult; -}; - ArrayChannel.prototype.pollInternal = function() { - var send = { - v: null}; - var token = { - v: null}; - var result = { - v: null}; - var tmp$, tmp$_0; - var size = this.size_0; - if (size === 0) - return (tmp$ = this.closedForSend_0) != null ? tmp$ : POLL_FAILED; - result.v = this.buffer_0[this.head_0]; - this.buffer_0[this.head_0] = null; - this.size_0 = size - 1 | 0; - var replacement = POLL_FAILED; - if (size === this.capacity) { - loop: - while (true) { - tmp$_0 = this.takeFirstSendOrPeekClosed_0(); - if (tmp$_0 == null) { - break; - } - send.v = tmp$_0; - token.v = ensureNotNull(send.v).tryResumeSend_s8jyv4$(null); - if (token.v != null) { - replacement = ensureNotNull(send.v).pollResult; - break loop; - } - } - } - if (replacement !== POLL_FAILED && !Kotlin.isType(replacement, Closed)) { - this.size_0 = size; - this.buffer_0[(this.head_0 + size | 0) % this.capacity] = replacement; - } - this.head_0 = (this.head_0 + 1 | 0) % this.capacity; - if (token.v != null) - ensureNotNull(send.v).completeResumeSend_za3rmp$(ensureNotNull(token.v)); - return result.v; -}; - ArrayChannel.prototype.pollSelectInternal_y5yyj0$ = function(select) { - var send = { - v: null}; - var token = { - v: null}; - var result = { - v: null}; - var tmp$; - var size = this.size_0; - if (size === 0) - return (tmp$ = this.closedForSend_0) != null ? tmp$ : POLL_FAILED; - result.v = this.buffer_0[this.head_0]; - this.buffer_0[this.head_0] = null; - this.size_0 = size - 1 | 0; - var replacement = POLL_FAILED; - if (size === this.capacity) { - loop: - while (true) { - var pollOp = this.describeTryPoll_0(); - var failure = select.performAtomicTrySelect_6q0pxr$(pollOp); - if (failure == null) { - send.v = pollOp.result; - token.v = pollOp.resumeToken; - if (!(token.v != null)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - replacement = ensureNotNull(send.v).pollResult; - break loop; - } else if (failure === POLL_FAILED) - break loop; - else if (failure === ALREADY_SELECTED) { - this.size_0 = size; - this.buffer_0[this.head_0] = result.v; - return failure; - } else if (Kotlin.isType(failure, Closed)) { - send.v = failure; - token.v = failure.tryResumeSend_s8jyv4$(null); - replacement = failure; - break loop; - } else { - throw IllegalStateException_init(('performAtomicTrySelect(describeTryOffer) returned ' + toString(failure)).toString()); - } - } - } - if (replacement !== POLL_FAILED && !Kotlin.isType(replacement, Closed)) { - this.size_0 = size; - this.buffer_0[(this.head_0 + size | 0) % this.capacity] = replacement; - } else { - if (!select.trySelect_s8jyv4$(null)) { - this.size_0 = size; - this.buffer_0[this.head_0] = result.v; - return ALREADY_SELECTED; - } - } - this.head_0 = (this.head_0 + 1 | 0) % this.capacity; - if (token.v != null) - ensureNotNull(send.v).completeResumeSend_za3rmp$(ensureNotNull(token.v)); - return result.v; -}; - ArrayChannel.prototype.cleanupSendQueueOnCancel = function() { - var times = this.size_0; - for (var index = 0; index < times; index++) { - this.buffer_0[this.head_0] = 0; - this.head_0 = (this.head_0 + 1 | 0) % this.capacity; - } - this.size_0 = 0; - AbstractChannel.prototype.cleanupSendQueueOnCancel.call(this); -}; - Object.defineProperty(ArrayChannel.prototype, 'bufferDebugString', { - get: function() { - return '(buffer:capacity=' + this.buffer_0.length + ',size=' + this.size_0 + ')'; -}}); - ArrayChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ArrayChannel', - interfaces: [AbstractChannel]}; - function Coroutine$broadcast$lambda(this$broadcast_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$broadcast = this$broadcast_0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$broadcast$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$broadcast$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$broadcast$lambda.prototype.constructor = Coroutine$broadcast$lambda; - Coroutine$broadcast$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = this.local$this$broadcast.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var e_0 = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$$receiver.send_11rb$(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.state_0 = 2; - continue; - case 7: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function broadcast$lambda(this$broadcast_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$broadcast$lambda(this$broadcast_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function broadcast($receiver, capacity, start) { - if (capacity === void 0) - capacity = 1; - if (start === void 0) - start = CoroutineStart$LAZY_getInstance(); - return broadcast_0(GlobalScope_getInstance(), Dispatchers_getInstance().Unconfined, capacity, start, consumes($receiver), broadcast$lambda($receiver)); - } - function broadcast_0($receiver, context, capacity, start, onCompletion, block) { - if (context === void 0) - context = coroutines.EmptyCoroutineContext; - if (capacity === void 0) - capacity = 1; - if (start === void 0) - start = CoroutineStart$LAZY_getInstance(); - if (onCompletion === void 0) - onCompletion = null; - var newContext = newCoroutineContext($receiver, context); - var channel = BroadcastChannel_0(capacity); - var coroutine = start.isLazy ? new LazyBroadcastCoroutine(newContext, channel, block) : new BroadcastCoroutine(newContext, channel, true); - if (onCompletion != null) - coroutine.invokeOnCompletion_f05bi3$(onCompletion); - coroutine.start_b5ul0p$(start, coroutine, block); - return coroutine; - } - function BroadcastCoroutine(parentContext, _channel, active) { - AbstractCoroutine.call(this, parentContext, active); - this._channel_0 = _channel; - } - Object.defineProperty(BroadcastCoroutine.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - Object.defineProperty(BroadcastCoroutine.prototype, 'isActive', { - get: function() { - return Kotlin.callGetter(this, AbstractCoroutine.prototype, 'isActive'); -}}); - Object.defineProperty(BroadcastCoroutine.prototype, 'channel', { - get: function() { - return this; -}}); - BroadcastCoroutine.prototype.cancel_dbl4no$$default = function(cause) { - var wasCancelled = this._channel_0.cancel_dbl4no$(cause); - if (wasCancelled) - this.cancel_dbl4no$(cause, AbstractCoroutine.prototype.cancel_dbl4no$$default.bind(this)); - return wasCancelled; -}; - BroadcastCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - var tmp$, tmp$_0; - var cause = (tmp$_0 = Kotlin.isType(tmp$ = state, CompletedExceptionally) ? tmp$ : null) != null ? tmp$_0.cause : null; - var processed = this._channel_0.close_dbl4no$(cause); - if (cause != null && !processed && suppressed) - handleExceptionViaHandler(this.context, cause); -}; - Object.defineProperty(BroadcastCoroutine.prototype, 'isClosedForSend', { - get: function() { - return this._channel_0.isClosedForSend; -}}); - Object.defineProperty(BroadcastCoroutine.prototype, 'isFull', { - get: function() { - return this._channel_0.isFull; -}}); - Object.defineProperty(BroadcastCoroutine.prototype, 'onSend', { - get: function() { - return this._channel_0.onSend; -}}); - BroadcastCoroutine.prototype.close_dbl4no$$default = function(cause) { - return this._channel_0.close_dbl4no$$default(cause); -}; - BroadcastCoroutine.prototype.invokeOnClose_f05bi3$ = function(handler) { - return this._channel_0.invokeOnClose_f05bi3$(handler); -}; - BroadcastCoroutine.prototype.offer_11rb$ = function(element) { - return this._channel_0.offer_11rb$(element); -}; - BroadcastCoroutine.prototype.openSubscription = function() { - return this._channel_0.openSubscription(); -}; - BroadcastCoroutine.prototype.send_11rb$ = function(element, continuation) { - return this._channel_0.send_11rb$(element, continuation); -}; - BroadcastCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'BroadcastCoroutine', - interfaces: [BroadcastChannel, ProducerScope, AbstractCoroutine]}; - function LazyBroadcastCoroutine(parentContext, channel, block) { - BroadcastCoroutine.call(this, parentContext, channel, false); - this.block_0 = block; - } - LazyBroadcastCoroutine.prototype.openSubscription = function() { - var subscription = this._channel_0.openSubscription(); - this.start(); - return subscription; -}; - LazyBroadcastCoroutine.prototype.onStart = function() { - var value = this.block_0; - var checkNotNull$result; - if (value == null) { - var message = 'Already started'; - throw IllegalStateException_init(message.toString()); - } else { - checkNotNull$result = value; - } - var block = checkNotNull$result; - this.block_0 = null; - startCoroutineCancellable_0(block, this, this); -}; - LazyBroadcastCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LazyBroadcastCoroutine', - interfaces: [BroadcastCoroutine]}; - function BroadcastChannel() { - } - BroadcastChannel.prototype.cancel_dbl4no$ = function(cause, callback$default) { - if (cause === void 0) - cause = null; - return callback$default ? callback$default(cause) : this.cancel_dbl4no$$default(cause); -}; - BroadcastChannel.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'BroadcastChannel', - interfaces: [SendChannel]}; - function BroadcastChannel_0(capacity) { - switch (capacity) { - case 0: - throw IllegalArgumentException_init('Unsupported 0 capacity for BroadcastChannel'); - case 2147483647: - throw IllegalArgumentException_init('Unsupported UNLIMITED capacity for BroadcastChannel'); - case -1: - return new ConflatedBroadcastChannel(); - default: - return new ArrayBroadcastChannel(capacity); - } - } - function SendChannel() { - } - SendChannel.prototype.close_dbl4no$ = function(cause, callback$default) { - if (cause === void 0) - cause = null; - return callback$default ? callback$default(cause) : this.close_dbl4no$$default(cause); -}; - SendChannel.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'SendChannel', - interfaces: []}; - function ReceiveChannel() { - } - ReceiveChannel.prototype.cancel0 = function() { - return this.cancel_dbl4no$(null); -}; - ReceiveChannel.prototype.cancel_dbl4no$ = function(cause, callback$default) { - if (cause === void 0) - cause = null; - return callback$default ? callback$default(cause) : this.cancel_dbl4no$$default(cause); -}; - ReceiveChannel.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ReceiveChannel', - interfaces: []}; - function ChannelIterator() { - } - ChannelIterator.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ChannelIterator', - interfaces: []}; - function Channel() { - Channel$Factory_getInstance(); - } - function Channel$Factory() { - Channel$Factory_instance = this; - this.UNLIMITED = 2147483647; - this.RENDEZVOUS = 0; - this.CONFLATED = -1; - } - Channel$Factory.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Factory', - interfaces: []}; - var Channel$Factory_instance = null; - function Channel$Factory_getInstance() { - if (Channel$Factory_instance === null) { - new Channel$Factory(); - } - return Channel$Factory_instance; - } - Channel.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Channel', - interfaces: [ReceiveChannel, SendChannel]}; - function Channel_0(capacity) { - if (capacity === void 0) - capacity = 0; - switch (capacity) { - case 0: - return new RendezvousChannel(); - case 2147483647: - return new LinkedListChannel(); - case -1: - return new ConflatedChannel(); - default: - return new ArrayChannel(capacity); - } - } - function ClosedSendChannelException(message) { - CancellationException.call(this, message); - this.name = 'ClosedSendChannelException'; - } - ClosedSendChannelException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ClosedSendChannelException', - interfaces: [CancellationException]}; - function ClosedReceiveChannelException(message) { - NoSuchElementException.call(this, message); - this.name = 'ClosedReceiveChannelException'; - } - ClosedReceiveChannelException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ClosedReceiveChannelException', - interfaces: [NoSuchElementException]}; - function ChannelCoroutine(parentContext, _channel, active) { - AbstractCoroutine.call(this, parentContext, active); - this._channel_0 = _channel; - } - Object.defineProperty(ChannelCoroutine.prototype, 'cancelsParent', { - get: function() { - return true; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'channel', { - get: function() { - return this; -}}); - ChannelCoroutine.prototype.cancel = function() { - this.cancel_dbl4no$(null); -}; - ChannelCoroutine.prototype.cancel0 = function() { - return this.cancel_dbl4no$(null); -}; - ChannelCoroutine.prototype.cancel_dbl4no$$default = function(cause) { - var wasCancelled = this._channel_0.cancel_dbl4no$(cause); - if (wasCancelled) - this.cancel_dbl4no$(cause, AbstractCoroutine.prototype.cancel_dbl4no$$default.bind(this)); - return wasCancelled; -}; - Object.defineProperty(ChannelCoroutine.prototype, 'isClosedForReceive', { - get: function() { - return this._channel_0.isClosedForReceive; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'isClosedForSend', { - get: function() { - return this._channel_0.isClosedForSend; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'isEmpty', { - get: function() { - return this._channel_0.isEmpty; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'isFull', { - get: function() { - return this._channel_0.isFull; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'onReceive', { - get: function() { - return this._channel_0.onReceive; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'onReceiveOrNull', { - get: function() { - return this._channel_0.onReceiveOrNull; -}}); - Object.defineProperty(ChannelCoroutine.prototype, 'onSend', { - get: function() { - return this._channel_0.onSend; -}}); - ChannelCoroutine.prototype.close_dbl4no$$default = function(cause) { - return this._channel_0.close_dbl4no$$default(cause); -}; - ChannelCoroutine.prototype.invokeOnClose_f05bi3$ = function(handler) { - return this._channel_0.invokeOnClose_f05bi3$(handler); -}; - ChannelCoroutine.prototype.iterator = function() { - return this._channel_0.iterator(); -}; - ChannelCoroutine.prototype.offer_11rb$ = function(element) { - return this._channel_0.offer_11rb$(element); -}; - ChannelCoroutine.prototype.poll = function() { - return this._channel_0.poll(); -}; - ChannelCoroutine.prototype.receive = function(continuation) { - return this._channel_0.receive(continuation); -}; - ChannelCoroutine.prototype.receiveOrNull = function(continuation) { - return this._channel_0.receiveOrNull(continuation); -}; - ChannelCoroutine.prototype.send_11rb$ = function(element, continuation) { - return this._channel_0.send_11rb$(element, continuation); -}; - ChannelCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ChannelCoroutine', - interfaces: [Channel, AbstractCoroutine]}; - var DEFAULT_CLOSE_MESSAGE; - var consume = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.consume_364bog$', function($receiver, block) { - var channel = $receiver.openSubscription(); - try { - return block(channel); - } finally { - channel.cancel(); - } -}); - function Coroutine$consumeEach($receiver, action, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$channel = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$action = action; - } - Coroutine$consumeEach.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$consumeEach.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$consumeEach.prototype.constructor = Coroutine$consumeEach; - Coroutine$consumeEach.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$channel = this.local$$receiver.openSubscription(); - this.exceptionState_0 = 7; - this.local$tmp$ = this.local$channel.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var element_0 = this.result_0; - this.local$action(element_0); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [6]; - this.state_0 = 8; - continue; - case 6: - return Unit; - case 7: - this.finallyPath_0 = [9]; - this.state_0 = 8; - continue; - case 8: - this.exceptionState_0 = 9; - this.local$channel.cancel(); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function consumeEach($receiver, action, continuation, suspended) { - var instance = new Coroutine$consumeEach($receiver, action, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.consumeEach_ur1qrk$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - return function($receiver, action, continuation) { - var channel = $receiver.openSubscription(); - try { - var tmp$; - tmp$ = channel.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var element_0 = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - action(element_0); - } - } finally { - channel.cancel(); - } - return Unit; -}; -})); - function consumes$lambda(this$consumes) { - return function(cause) { - this$consumes.cancel_dbl4no$(cause); - return Unit; -}; - } - function consumes($receiver) { - return consumes$lambda($receiver); - } - function consumesAll$lambda(closure$channels) { - return function(cause) { - var tmp$, tmp$_0; - var exception = null; - tmp$ = closure$channels; - for (tmp$_0 = 0; tmp$_0 !== tmp$.length; ++tmp$_0) { - var channel = tmp$[tmp$_0]; - try { - channel.cancel_dbl4no$(cause); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - if (exception == null) { - exception = e; - } - } else - throw e; -} - } - if (exception != null) { - throw exception; - } - return Unit; -}; - } - function consumesAll(channels) { - return consumesAll$lambda(channels); - } - var consume_0 = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.consume_33m5w9$', wrapFunction(function() { - var Throwable = Error; - return function($receiver, block) { - var cause = null; - try { - return block($receiver); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - cause = e; - throw e; - } else - throw e; -} - finally { - $receiver.cancel_dbl4no$(cause); - } -}; -})); - function Coroutine$consumeEach_0($receiver, action, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$action = action; - } - Coroutine$consumeEach_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$consumeEach_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$consumeEach_0.prototype.constructor = Coroutine$consumeEach_0; - Coroutine$consumeEach_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$action(e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - return Unit; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function consumeEach_0($receiver, action, continuation, suspended) { - var instance = new Coroutine$consumeEach_0($receiver, action, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.consumeEach_fsi0yh$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, action, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - action(e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - return Unit; -}; -})); - function Coroutine$consumeEachIndexed($receiver, action, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$action = action; - } - Coroutine$consumeEachIndexed.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$consumeEachIndexed.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$consumeEachIndexed.prototype.constructor = Coroutine$consumeEachIndexed; - Coroutine$consumeEachIndexed.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - this.local$action(new IndexedValue((tmp$_1 = this.local$index.v , this.local$index.v = tmp$_1 + 1 | 0 , tmp$_1), e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function consumeEachIndexed($receiver, action, continuation, suspended) { - var instance = new Coroutine$consumeEachIndexed($receiver, action, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.consumeEachIndexed_pji9r4$', wrapFunction(function() { - var IndexedValue_init = Kotlin.kotlin.collections.IndexedValue; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, action, continuation) { - var index = { - v: 0}; - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - action(new IndexedValue_init((tmp$_1 = index.v , index.v = tmp$_1 + 1 | 0 , tmp$_1), e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$elementAt($receiver_0, index_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 12; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$count = void 0; - this.local$$receiver = $receiver_0; - this.local$index = index_0; - } - Coroutine$elementAt.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$elementAt.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$elementAt.prototype.constructor = Coroutine$elementAt; - Coroutine$elementAt.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.state_0 = 1; - continue; - case 1: - this.local$cause = null; - this.exceptionState_0 = 8; - var tmp$; - if (this.local$index < 0) { - throw new IndexOutOfBoundsException("ReceiveChannel doesn't contain element at index " + this.local$index + '.'); - } - this.local$count = 0; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 2; - continue; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var element = this.result_0; - if (this.local$index === (tmp$ = this.local$count , this.local$count = tmp$ + 1 | 0 , tmp$)) { - this.result_0 = element; - this.exceptionState_0 = 8; - this.finallyPath_0 = [11]; - this.state_0 = 9; - continue; - } else { - this.state_0 = 6; - continue; - } - case 6: - this.state_0 = 2; - continue; - case 7: - throw new IndexOutOfBoundsException("ReceiveChannel doesn't contain element at index " + this.local$index + '.'); - case 8: - this.finallyPath_0 = [12]; - this.exceptionState_0 = 9; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 9: - this.exceptionState_0 = 12; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - if (!false) { - this.state_0 = 11; - continue; - } - this.state_0 = 1; - continue; - case 11: - return this.result_0; - case 12: - throw this.exception_0; - default: - this.state_0 = 12; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 12) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function elementAt($receiver_0, index_0, continuation_0, suspended) { - var instance = new Coroutine$elementAt($receiver_0, index_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$elementAtOrElse($receiver, index, defaultValue, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 13; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$count = void 0; - this.local$$receiver = $receiver; - this.local$index = index; - this.local$defaultValue = defaultValue; - } - Coroutine$elementAtOrElse.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$elementAtOrElse.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$elementAtOrElse.prototype.constructor = Coroutine$elementAtOrElse; - Coroutine$elementAtOrElse.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 1; - var tmp$_1; - if (this.local$index < 0) { - this.exceptionState_0 = 13; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = this.local$defaultValue(this.local$index); - continue; - } else { - this.state_0 = 3; - continue; - } - case 1: - this.finallyPath_0 = [13]; - this.exceptionState_0 = 12; - var e = this.exception_0; - if (Kotlin.isType(e, Throwable)) { - this.local$cause = e; - throw e; - } else - throw e; - case 2: - return this.$returnValue; - case 3: - this.local$count = 0; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 4; - continue; - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - if (!this.result_0) { - this.state_0 = 10; - continue; - } else { - this.state_0 = 6; - continue; - } - case 6: - this.state_0 = 7; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 7: - var element_0 = this.result_0; - if (this.local$index === (tmp$_1 = this.local$count , this.local$count = tmp$_1 + 1 | 0 , tmp$_1)) { - this.exceptionState_0 = 13; - this.finallyPath_0 = [8]; - this.state_0 = 12; - this.$returnValue = element_0; - continue; - } else { - this.state_0 = 9; - continue; - } - case 8: - return this.$returnValue; - case 9: - this.state_0 = 4; - continue; - case 10: - this.exceptionState_0 = 13; - this.finallyPath_0 = [11]; - this.state_0 = 12; - this.$returnValue = this.local$defaultValue(this.local$index); - continue; - case 11: - return this.$returnValue; - case 12: - this.exceptionState_0 = 13; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - throw this.exception_0; - case 14: - return; - default: - this.state_0 = 13; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 13) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function elementAtOrElse($receiver, index, defaultValue, continuation, suspended) { - var instance = new Coroutine$elementAtOrElse($receiver, index, defaultValue, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.elementAtOrElse_m7muas$', wrapFunction(function() { - var Throwable = Error; - return function($receiver, index, defaultValue, continuation) { - var cause = null; - try { - var tmp$_0, tmp$_1; - if (index < 0) - return defaultValue(index); - var count = 0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var element_0 = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (index === (tmp$_1 = count , count = tmp$_1 + 1 | 0 , tmp$_1)) - return element_0; - } - return defaultValue(index); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - cause = e; - throw e; - } else - throw e; -} - finally { - $receiver.cancel_dbl4no$(cause); - } -}; -})); - function Coroutine$elementAtOrNull($receiver_0, index_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 13; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$count = void 0; - this.local$$receiver = $receiver_0; - this.local$index = index_0; - } - Coroutine$elementAtOrNull.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$elementAtOrNull.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$elementAtOrNull.prototype.constructor = Coroutine$elementAtOrNull; - Coroutine$elementAtOrNull.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 1; - var tmp$; - if (this.local$index < 0) { - this.exceptionState_0 = 13; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 1: - this.finallyPath_0 = [13]; - this.exceptionState_0 = 12; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 2: - return this.$returnValue; - case 3: - this.local$count = 0; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 4; - continue; - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - if (!this.result_0) { - this.state_0 = 10; - continue; - } else { - this.state_0 = 6; - continue; - } - case 6: - this.state_0 = 7; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 7: - var element = this.result_0; - if (this.local$index === (tmp$ = this.local$count , this.local$count = tmp$ + 1 | 0 , tmp$)) { - this.exceptionState_0 = 13; - this.finallyPath_0 = [8]; - this.state_0 = 12; - this.$returnValue = element; - continue; - } else { - this.state_0 = 9; - continue; - } - case 8: - return this.$returnValue; - case 9: - this.state_0 = 4; - continue; - case 10: - this.exceptionState_0 = 13; - this.finallyPath_0 = [11]; - this.state_0 = 12; - this.$returnValue = null; - continue; - case 11: - return this.$returnValue; - case 12: - this.exceptionState_0 = 13; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - throw this.exception_0; - case 14: - return; - default: - this.state_0 = 13; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 13) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function elementAtOrNull($receiver_0, index_0, continuation_0, suspended) { - var instance = new Coroutine$elementAtOrNull($receiver_0, index_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$find($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 12; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$find.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$find.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$find.prototype.constructor = Coroutine$find; - Coroutine$find.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.state_0 = 1; - continue; - case 1: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 2; - continue; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var e = this.result_0; - if (this.local$predicate(e)) { - this.result_0 = e; - this.exceptionState_0 = 8; - this.finallyPath_0 = [11]; - this.state_0 = 9; - continue; - } else { - this.state_0 = 6; - continue; - } - case 6: - this.state_0 = 2; - continue; - case 7: - this.exceptionState_0 = 12; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [12]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 12; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - this.result_0 = null; - if (!false) { - this.state_0 = 11; - continue; - } - this.state_0 = 1; - continue; - case 11: - return this.result_0; - case 12: - throw this.exception_0; - default: - this.state_0 = 12; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 12) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function find($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$find($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.find_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - firstOrNull$break: - do { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - Kotlin.setCoroutineResult(e, Kotlin.coroutineReceiver()); - break firstOrNull$break; - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(null, Kotlin.coroutineReceiver()); - } while (false); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$findLast($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$last = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$findLast.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$findLast.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$findLast.prototype.constructor = Coroutine$findLast; - Coroutine$findLast.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$last = { - v: null}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.local$last.v = e; - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - this.result_0 = this.local$last.v; - return this.result_0; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function findLast($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$findLast($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.findLast_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var last = { - v: null}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - last.v = e; - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(last.v, Kotlin.coroutineReceiver()); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$first($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 7; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$first.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$first.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$first.prototype.constructor = Coroutine$first; - Coroutine$first.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 4; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) - throw new NoSuchElementException('ReceiveChannel is empty.'); - this.state_0 = 2; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - this.exceptionState_0 = 7; - this.finallyPath_0 = [3]; - this.state_0 = 5; - this.$returnValue = this.result_0; - continue; - case 3: - return this.$returnValue; - case 4: - this.finallyPath_0 = [7]; - this.exceptionState_0 = 5; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 5: - this.exceptionState_0 = 7; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 6: - return; - case 7: - throw this.exception_0; - default: - this.state_0 = 7; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 7) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function first($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$first($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$first_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$first_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$first_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$first_0.prototype.constructor = Coroutine$first_0; - Coroutine$first_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = e; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - throw new NoSuchElementException('ReceiveChannel contains no element matching the predicate.'); - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function first_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$first_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.first_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var NoSuchElementException_init = Kotlin.kotlin.NoSuchElementException; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - return e; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - throw new NoSuchElementException_init('ReceiveChannel contains no element matching the predicate.'); -}; -})); - function Coroutine$firstOrNull($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$firstOrNull.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$firstOrNull.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$firstOrNull.prototype.constructor = Coroutine$firstOrNull; - Coroutine$firstOrNull.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 9; - this.finallyPath_0 = [2]; - this.state_0 = 7; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.exceptionState_0 = 9; - this.finallyPath_0 = [5]; - this.state_0 = 7; - this.$returnValue = this.result_0; - continue; - case 5: - return this.$returnValue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - return; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function firstOrNull($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$firstOrNull($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$firstOrNull_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$firstOrNull_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$firstOrNull_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$firstOrNull_0.prototype.constructor = Coroutine$firstOrNull_0; - Coroutine$firstOrNull_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = e; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return null; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function firstOrNull_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$firstOrNull_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.firstOrNull_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - return e; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return null; -}; -})); - function Coroutine$indexOf($receiver_0, element_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 11; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$element = element_0; - } - Coroutine$indexOf.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$indexOf.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$indexOf.prototype.constructor = Coroutine$indexOf; - Coroutine$indexOf.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - if (equals(this.local$element, e_0)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = this.local$index.v; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.local$index.v = this.local$index.v + 1 | 0; - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return -1; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function indexOf_0($receiver_0, element_0, continuation_0, suspended) { - var instance = new Coroutine$indexOf($receiver_0, element_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$indexOfFirst($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$indexOfFirst.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$indexOfFirst.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$indexOfFirst.prototype.constructor = Coroutine$indexOfFirst; - Coroutine$indexOfFirst.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = this.local$index.v; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.local$index.v = this.local$index.v + 1 | 0; - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return -1; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function indexOfFirst($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$indexOfFirst($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.indexOfFirst_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var index = { - v: 0}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - return index.v; - index.v = index.v + 1 | 0; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return -1; -}; -})); - function Coroutine$indexOfLast($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$lastIndex = void 0; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$indexOfLast.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$indexOfLast.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$indexOfLast.prototype.constructor = Coroutine$indexOfLast; - Coroutine$indexOfLast.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$lastIndex = { - v: -1}; - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) - this.local$lastIndex.v = this.local$index.v; - this.local$index.v = this.local$index.v + 1 | 0; - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$lastIndex.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function indexOfLast($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$indexOfLast($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.indexOfLast_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var lastIndex = { - v: -1}; - var index = { - v: 0}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - lastIndex.v = index.v; - index.v = index.v + 1 | 0; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return lastIndex.v; -}; -})); - function Coroutine$last($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 12; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$last = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$last.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$last.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$last.prototype.constructor = Coroutine$last; - Coroutine$last.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 9; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) - throw new NoSuchElementException('ReceiveChannel is empty.'); - this.state_0 = 2; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - this.local$last = this.result_0; - this.state_0 = 3; - continue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 5; - continue; - } - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.local$last = this.result_0; - this.state_0 = 3; - continue; - case 7: - this.exceptionState_0 = 12; - this.finallyPath_0 = [8]; - this.state_0 = 10; - this.$returnValue = this.local$last; - continue; - case 8: - return this.$returnValue; - case 9: - this.finallyPath_0 = [12]; - this.exceptionState_0 = 10; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 10: - this.exceptionState_0 = 12; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 11: - return; - case 12: - throw this.exception_0; - default: - this.state_0 = 12; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 12) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function last($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$last($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$last_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$last = void 0; - this.local$found = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$last_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$last_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$last_0.prototype.constructor = Coroutine$last_0; - Coroutine$last_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$_0; - this.local$last = { - v: null}; - this.local$found = { - v: false}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.local$last.v = e; - this.local$found.v = true; - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - if (!this.local$found.v) - throw new NoSuchElementException('ReceiveChannel contains no element matching the predicate.'); - return (tmp$_0 = this.local$last.v) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function last_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$last_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.last_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var NoSuchElementException_init = Kotlin.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var tmp$_0; - var last = { - v: null}; - var found = { - v: false}; - var cause = null; - try { - var tmp$_1; - tmp$_1 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_1.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_1.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - last.v = e; - found.v = true; - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - if (!found.v) - throw new NoSuchElementException_init('ReceiveChannel contains no element matching the predicate.'); - return (tmp$_0 = last.v) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); -}; -})); - function Coroutine$lastIndexOf($receiver_0, element_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 9; - this.local$lastIndex = void 0; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$element = element_0; - } - Coroutine$lastIndexOf.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$lastIndexOf.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$lastIndexOf.prototype.constructor = Coroutine$lastIndexOf; - Coroutine$lastIndexOf.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$lastIndex = { - v: -1}; - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - if (equals(this.local$element, e_0)) - this.local$lastIndex.v = this.local$index.v; - this.local$index.v = this.local$index.v + 1 | 0; - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$lastIndex.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function lastIndexOf($receiver_0, element_0, continuation_0, suspended) { - var instance = new Coroutine$lastIndexOf($receiver_0, element_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$lastOrNull($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 14; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$last = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$lastOrNull.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$lastOrNull.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$lastOrNull.prototype.constructor = Coroutine$lastOrNull; - Coroutine$lastOrNull.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 11; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 14; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$last = this.result_0; - this.state_0 = 5; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - this.local$last = this.result_0; - this.state_0 = 5; - continue; - case 9: - this.exceptionState_0 = 14; - this.finallyPath_0 = [10]; - this.state_0 = 12; - this.$returnValue = this.local$last; - continue; - case 10: - return this.$returnValue; - case 11: - this.finallyPath_0 = [14]; - this.exceptionState_0 = 12; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 12: - this.exceptionState_0 = 14; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - return; - case 14: - throw this.exception_0; - default: - this.state_0 = 14; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 14) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function lastOrNull($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$lastOrNull($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$lastOrNull_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$last = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$lastOrNull_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$lastOrNull_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$lastOrNull_0.prototype.constructor = Coroutine$lastOrNull_0; - Coroutine$lastOrNull_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$last = { - v: null}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.local$last.v = e; - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$last.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function lastOrNull_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$lastOrNull_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.lastOrNull_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var last = { - v: null}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - last.v = e; - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return last.v; -}; -})); - function Coroutine$single($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 8; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$single = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$single.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$single.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$single.prototype.constructor = Coroutine$single; - Coroutine$single.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 5; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) - throw new NoSuchElementException('ReceiveChannel is empty.'); - this.state_0 = 2; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - this.local$single = this.result_0; - this.state_0 = 3; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (this.result_0) - throw IllegalArgumentException_init('ReceiveChannel has more than one element.'); - this.exceptionState_0 = 8; - this.finallyPath_0 = [4]; - this.state_0 = 6; - this.$returnValue = this.local$single; - continue; - case 4: - return this.$returnValue; - case 5: - this.finallyPath_0 = [8]; - this.exceptionState_0 = 6; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 6: - this.exceptionState_0 = 8; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 7: - return; - case 8: - throw this.exception_0; - default: - this.state_0 = 8; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 8) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function single($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$single($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$single_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$single = void 0; - this.local$found = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$single_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$single_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$single_0.prototype.constructor = Coroutine$single_0; - Coroutine$single_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$_0; - this.local$single = { - v: null}; - this.local$found = { - v: false}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - if (this.local$found.v) - throw IllegalArgumentException_init('ReceiveChannel contains more than one matching element.'); - this.local$single.v = e; - this.local$found.v = true; - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - if (!this.local$found.v) - throw new NoSuchElementException('ReceiveChannel contains no element matching the predicate.'); - return (tmp$_0 = this.local$single.v) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function single_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$single_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.single_4c38lx$', wrapFunction(function() { - var IllegalArgumentException_init = Kotlin.kotlin.IllegalArgumentException_init_pdl1vj$; - var Unit = Kotlin.kotlin.Unit; - var NoSuchElementException_init = Kotlin.kotlin.NoSuchElementException; - var Any = Object; - var throwCCE = Kotlin.throwCCE; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var tmp$_0; - var single = { - v: null}; - var found = { - v: false}; - var cause = null; - try { - var tmp$_1; - tmp$_1 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_1.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_1.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - if (found.v) - throw IllegalArgumentException_init('ReceiveChannel contains more than one matching element.'); - single.v = e; - found.v = true; - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - if (!found.v) - throw new NoSuchElementException_init('ReceiveChannel contains no element matching the predicate.'); - return (tmp$_0 = single.v) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); -}; -})); - function Coroutine$singleOrNull($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 12; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$single = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$singleOrNull.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$singleOrNull.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$singleOrNull.prototype.constructor = Coroutine$singleOrNull; - Coroutine$singleOrNull.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 9; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 12; - this.finallyPath_0 = [2]; - this.state_0 = 10; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$single = this.result_0; - this.state_0 = 5; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - if (this.result_0) { - this.exceptionState_0 = 12; - this.finallyPath_0 = [6]; - this.state_0 = 10; - this.$returnValue = null; - continue; - } else { - this.state_0 = 7; - continue; - } - case 6: - return this.$returnValue; - case 7: - this.exceptionState_0 = 12; - this.finallyPath_0 = [8]; - this.state_0 = 10; - this.$returnValue = this.local$single; - continue; - case 8: - return this.$returnValue; - case 9: - this.finallyPath_0 = [12]; - this.exceptionState_0 = 10; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 10: - this.exceptionState_0 = 12; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 11: - return; - case 12: - throw this.exception_0; - default: - this.state_0 = 12; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 12) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function singleOrNull($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$singleOrNull($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$singleOrNull_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 13; - this.local$single = void 0; - this.local$found = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$e = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$singleOrNull_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$singleOrNull_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$singleOrNull_0.prototype.constructor = Coroutine$singleOrNull_0; - Coroutine$singleOrNull_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$single = { - v: null}; - this.local$found = { - v: false}; - this.local$cause = null; - this.exceptionState_0 = 9; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 8; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$e = this.result_0; - if (this.local$predicate(this.local$e)) { - if (this.local$found.v) { - this.exceptionState_0 = 13; - this.finallyPath_0 = [5]; - this.state_0 = 10; - this.$returnValue = null; - continue; - } else { - this.state_0 = 6; - continue; - } - } else { - this.state_0 = 7; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.local$single.v = this.local$e; - this.local$found.v = true; - this.state_0 = 7; - continue; - case 7: - this.state_0 = 1; - continue; - case 8: - this.exceptionState_0 = 13; - this.finallyPath_0 = [11]; - this.state_0 = 10; - continue; - case 9: - this.finallyPath_0 = [13]; - this.exceptionState_0 = 10; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 10: - this.exceptionState_0 = 13; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 11: - this.result_0 = Unit; - if (!this.local$found.v) { - return null; - } else { - this.state_0 = 12; - continue; - } - case 12: - return this.local$single.v; - case 13: - throw this.exception_0; - default: - this.state_0 = 13; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 13) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function singleOrNull_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$singleOrNull_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.singleOrNull_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var single = { - v: null}; - var found = { - v: false}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - if (found.v) - return null; - single.v = e; - found.v = true; - } - } - } catch (e_1) { - if (Kotlin.isType(e_1, Throwable)) { - cause = e_1; - throw e_1; - } else - throw e_1; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - if (!found.v) - return null; - return single.v; -}; -})); - function Coroutine$drop$lambda(closure$n_0, this$drop_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$closure$n = closure$n_0; - this.local$this$drop = this$drop_0; - this.local$tmp$ = void 0; - this.local$tmp$_0 = void 0; - this.local$remaining = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$drop$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$drop$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$drop$lambda.prototype.constructor = Coroutine$drop$lambda; - Coroutine$drop$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (!(this.local$closure$n >= 0)) { - var message = 'Requested element count ' + this.local$closure$n + ' is less than zero.'; - throw IllegalArgumentException_init(message.toString()); - } - this.local$remaining = this.local$closure$n; - if (this.local$remaining > 0) { - this.local$tmp$ = this.local$this$drop.iterator(); - this.state_0 = 2; - continue; - } else { - this.state_0 = 8; - continue; - } - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var e_0 = this.result_0; - this.local$remaining = this.local$remaining - 1 | 0; - if (this.local$remaining === 0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 6; - continue; - } - case 6: - this.state_0 = 2; - continue; - case 7: - this.state_0 = 8; - continue; - case 8: - this.local$tmp$_0 = this.local$this$drop.iterator(); - this.state_0 = 9; - continue; - case 9: - this.state_0 = 10; - this.result_0 = this.local$tmp$_0.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 10: - if (!this.result_0) { - this.state_0 = 14; - continue; - } else { - this.state_0 = 11; - continue; - } - case 11: - this.state_0 = 12; - this.result_0 = this.local$tmp$_0.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 12: - var e_1 = this.result_0; - this.state_0 = 13; - this.result_0 = this.local$$receiver.send_11rb$(e_1, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 13: - this.state_0 = 9; - continue; - case 14: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function drop$lambda(closure$n_0, this$drop_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$drop$lambda(closure$n_0, this$drop_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function drop($receiver, n, context) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), drop$lambda(n, $receiver)); - } - function Coroutine$dropWhile$lambda(this$dropWhile_0, closure$predicate_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$dropWhile = this$dropWhile_0; - this.local$closure$predicate = closure$predicate_0; - this.local$tmp$ = void 0; - this.local$tmp$_0 = void 0; - this.local$e = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$dropWhile$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$dropWhile$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$dropWhile$lambda.prototype.constructor = Coroutine$dropWhile$lambda; - Coroutine$dropWhile$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = this.local$this$dropWhile.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.local$e = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$predicate(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 7; - this.result_0 = this.local$$receiver.send_11rb$(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 8; - continue; - } - case 7: - this.state_0 = 9; - continue; - case 8: - this.state_0 = 2; - continue; - case 9: - this.local$tmp$_0 = this.local$this$dropWhile.iterator(); - this.state_0 = 10; - continue; - case 10: - this.state_0 = 11; - this.result_0 = this.local$tmp$_0.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 11: - if (!this.result_0) { - this.state_0 = 15; - continue; - } else { - this.state_0 = 12; - continue; - } - case 12: - this.state_0 = 13; - this.result_0 = this.local$tmp$_0.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 13: - var e_0 = this.result_0; - this.state_0 = 14; - this.result_0 = this.local$$receiver.send_11rb$(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 14: - this.state_0 = 10; - continue; - case 15: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function dropWhile$lambda(this$dropWhile_0, closure$predicate_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$dropWhile$lambda(this$dropWhile_0, closure$predicate_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function dropWhile($receiver, context, predicate) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), dropWhile$lambda($receiver, predicate)); - } - function Coroutine$filter$lambda(this$filter_0, closure$predicate_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$filter = this$filter_0; - this.local$closure$predicate = closure$predicate_0; - this.local$tmp$ = void 0; - this.local$e = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$filter$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filter$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filter$lambda.prototype.constructor = Coroutine$filter$lambda; - Coroutine$filter$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = this.local$this$filter.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.local$e = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$predicate(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (this.result_0) { - this.state_0 = 7; - this.result_0 = this.local$$receiver.send_11rb$(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 8; - continue; - } - case 7: - this.state_0 = 8; - continue; - case 8: - this.state_0 = 2; - continue; - case 9: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filter$lambda(this$filter_0, closure$predicate_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$filter$lambda(this$filter_0, closure$predicate_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function filter($receiver, context, predicate) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), filter$lambda($receiver, predicate)); - } - function Coroutine$filterIndexed$lambda(this$filterIndexed_0, closure$predicate_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$filterIndexed = this$filterIndexed_0; - this.local$closure$predicate = closure$predicate_0; - this.local$tmp$ = void 0; - this.local$index = void 0; - this.local$e = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$filterIndexed$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterIndexed$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterIndexed$lambda.prototype.constructor = Coroutine$filterIndexed$lambda; - Coroutine$filterIndexed$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$; - this.local$index = 0; - this.local$tmp$ = this.local$this$filterIndexed.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.local$e = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$predicate((tmp$ = this.local$index , this.local$index = tmp$ + 1 | 0 , tmp$), this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (this.result_0) { - this.state_0 = 7; - this.result_0 = this.local$$receiver.send_11rb$(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 8; - continue; - } - case 7: - this.state_0 = 8; - continue; - case 8: - this.state_0 = 2; - continue; - case 9: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterIndexed$lambda(this$filterIndexed_0, closure$predicate_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$filterIndexed$lambda(this$filterIndexed_0, closure$predicate_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function filterIndexed($receiver, context, predicate) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), filterIndexed$lambda($receiver, predicate)); - } - function Coroutine$filterIndexedTo($receiver, destination, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$predicate = predicate; - } - Coroutine$filterIndexedTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterIndexedTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterIndexedTo.prototype.constructor = Coroutine$filterIndexedTo; - Coroutine$filterIndexedTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - var f_0 = new IndexedValue((tmp$_1 = this.local$index.v , this.local$index.v = tmp$_1 + 1 | 0 , tmp$_1), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - if (this.local$predicate(index_1, element_0)) - this.local$destination.add_11rb$(element_0); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterIndexedTo($receiver, destination, predicate, continuation, suspended) { - var instance = new Coroutine$filterIndexedTo($receiver, destination, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.filterIndexedTo_4jknp0$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var IndexedValue_init = Kotlin.kotlin.collections.IndexedValue; - var Throwable = Error; - return function($receiver, destination, predicate, continuation) { - var index_0 = { - v: 0}; - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - var f_0 = new IndexedValue_init((tmp$_1 = index_0.v , index_0.v = tmp$_1 + 1 | 0 , tmp$_1), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - if (predicate(index_1, element_0)) - destination.add_11rb$(element_0); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$filterIndexedTo_0($receiver, destination, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$predicate = predicate; - } - Coroutine$filterIndexedTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterIndexedTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterIndexedTo_0.prototype.constructor = Coroutine$filterIndexedTo_0; - Coroutine$filterIndexedTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - var f_0 = new IndexedValue((tmp$_1 = this.local$index.v , this.local$index.v = tmp$_1 + 1 | 0 , tmp$_1), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - if (this.local$predicate(index_1, element_0)) { - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(element_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - this.state_0 = 6; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.local$destination; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterIndexedTo_0($receiver, destination, predicate, continuation, suspended) { - var instance = new Coroutine$filterIndexedTo_0($receiver, destination, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.filterIndexedTo_170qh7$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var IndexedValue_init = Kotlin.kotlin.collections.IndexedValue; - var Throwable = Error; - return function($receiver, destination, predicate, continuation) { - var index_0 = { - v: 0}; - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - var f_0 = new IndexedValue_init((tmp$_1 = index_0.v , index_0.v = tmp$_1 + 1 | 0 , tmp$_1), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - if (predicate(index_1, element_0)) { - Kotlin.suspendCall(destination.send_11rb$(element_0, Kotlin.coroutineReceiver())); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$filterNot$lambda(closure$predicate_0, it_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$closure$predicate = closure$predicate_0; - this.local$it = it_0; - } - Coroutine$filterNot$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterNot$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterNot$lambda.prototype.constructor = Coroutine$filterNot$lambda; - Coroutine$filterNot$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.state_0 = 2; - this.result_0 = this.local$closure$predicate(this.local$it, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - throw this.exception_0; - case 2: - return !this.result_0; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterNot$lambda(closure$predicate_0) { - return function(it_0, continuation_0, suspended) { - var instance = new Coroutine$filterNot$lambda(closure$predicate_0, it_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function filterNot($receiver, context, predicate) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return filter($receiver, context, filterNot$lambda(predicate)); - } - function Coroutine$filterNotNull$lambda(it_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$it = it_0; - } - Coroutine$filterNotNull$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterNotNull$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterNotNull$lambda.prototype.constructor = Coroutine$filterNotNull$lambda; - Coroutine$filterNotNull$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - return this.local$it != null; - case 1: - throw this.exception_0; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterNotNull$lambda(it_0, continuation_0, suspended) { - var instance = new Coroutine$filterNotNull$lambda(it_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function filterNotNull($receiver) { - var tmp$; - return Kotlin.isType(tmp$ = filter($receiver, void 0, filterNotNull$lambda), ReceiveChannel) ? tmp$ : throwCCE(); - } - function Coroutine$filterNotNullTo($receiver_0, destination_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$destination = destination_0; - } - Coroutine$filterNotNullTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterNotNullTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterNotNullTo.prototype.constructor = Coroutine$filterNotNullTo; - Coroutine$filterNotNullTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - if (e_0 != null) - this.local$destination.add_11rb$(e_0); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterNotNullTo($receiver_0, destination_0, continuation_0, suspended) { - var instance = new Coroutine$filterNotNullTo($receiver_0, destination_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$filterNotNullTo_0($receiver_0, destination_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$destination = destination_0; - } - Coroutine$filterNotNullTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterNotNullTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterNotNullTo_0.prototype.constructor = Coroutine$filterNotNullTo_0; - Coroutine$filterNotNullTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - if (e_0 != null) { - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - this.state_0 = 6; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.local$destination; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterNotNullTo_0($receiver_0, destination_0, continuation_0, suspended) { - var instance = new Coroutine$filterNotNullTo_0($receiver_0, destination_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$filterNotTo($receiver, destination, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$predicate = predicate; - } - Coroutine$filterNotTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterNotTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterNotTo.prototype.constructor = Coroutine$filterNotTo; - Coroutine$filterNotTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (!this.local$predicate(e)) - this.local$destination.add_11rb$(e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterNotTo($receiver, destination, predicate, continuation, suspended) { - var instance = new Coroutine$filterNotTo($receiver, destination, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.filterNotTo_ekipu8$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (!predicate(e)) - destination.add_11rb$(e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$filterNotTo_0($receiver, destination, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$predicate = predicate; - } - Coroutine$filterNotTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterNotTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterNotTo_0.prototype.constructor = Coroutine$filterNotTo_0; - Coroutine$filterNotTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (!this.local$predicate(e)) { - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - this.state_0 = 6; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.local$destination; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterNotTo_0($receiver, destination, predicate, continuation, suspended) { - var instance = new Coroutine$filterNotTo_0($receiver, destination, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.filterNotTo_6rlmvt$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (!predicate(e)) { - Kotlin.suspendCall(destination.send_11rb$(e, Kotlin.coroutineReceiver())); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$filterTo($receiver, destination, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$predicate = predicate; - } - Coroutine$filterTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterTo.prototype.constructor = Coroutine$filterTo; - Coroutine$filterTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) - this.local$destination.add_11rb$(e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterTo($receiver, destination, predicate, continuation, suspended) { - var instance = new Coroutine$filterTo($receiver, destination, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.filterTo_ekipu8$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - destination.add_11rb$(e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$filterTo_0($receiver, destination, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$predicate = predicate; - } - Coroutine$filterTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$filterTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$filterTo_0.prototype.constructor = Coroutine$filterTo_0; - Coroutine$filterTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - this.state_0 = 6; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.local$destination; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function filterTo_0($receiver, destination, predicate, continuation, suspended) { - var instance = new Coroutine$filterTo_0($receiver, destination, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.filterTo_6rlmvt$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - Kotlin.suspendCall(destination.send_11rb$(e, Kotlin.coroutineReceiver())); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$take$lambda(closure$n_0, this$take_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$closure$n = closure$n_0; - this.local$this$take = this$take_0; - this.local$tmp$ = void 0; - this.local$remaining = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$take$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$take$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$take$lambda.prototype.constructor = Coroutine$take$lambda; - Coroutine$take$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (this.local$closure$n === 0) { - return; - } else { - this.state_0 = 2; - continue; - } - case 1: - throw this.exception_0; - case 2: - if (!(this.local$closure$n >= 0)) { - var message = 'Requested element count ' + this.local$closure$n + ' is less than zero.'; - throw IllegalArgumentException_init(message.toString()); - } - this.local$remaining = this.local$closure$n; - this.local$tmp$ = this.local$this$take.iterator(); - this.state_0 = 3; - continue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 5; - continue; - } - case 5: - this.state_0 = 6; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - var e_0 = this.result_0; - this.state_0 = 7; - this.result_0 = this.local$$receiver.send_11rb$(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 7: - this.local$remaining = this.local$remaining - 1 | 0; - if (this.local$remaining === 0) { - return; - } else { - this.state_0 = 8; - continue; - } - case 8: - this.state_0 = 3; - continue; - case 9: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function take$lambda(closure$n_0, this$take_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$take$lambda(closure$n_0, this$take_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function take($receiver, n, context) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), take$lambda(n, $receiver)); - } - function Coroutine$takeWhile$lambda(this$takeWhile_0, closure$predicate_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$takeWhile = this$takeWhile_0; - this.local$closure$predicate = closure$predicate_0; - this.local$tmp$ = void 0; - this.local$e = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$takeWhile$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$takeWhile$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$takeWhile$lambda.prototype.constructor = Coroutine$takeWhile$lambda; - Coroutine$takeWhile$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = this.local$this$takeWhile.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.local$e = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$predicate(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - return; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$$receiver.send_11rb$(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - this.state_0 = 2; - continue; - case 9: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function takeWhile$lambda(this$takeWhile_0, closure$predicate_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$takeWhile$lambda(this$takeWhile_0, closure$predicate_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function takeWhile($receiver, context, predicate) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), takeWhile$lambda($receiver, predicate)); - } - function Coroutine$associate($receiver, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$destination = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$transform = transform; - } - Coroutine$associate.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$associate.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$associate.prototype.constructor = Coroutine$associate; - Coroutine$associate.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$destination = LinkedHashMap_init(); - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var pair_0 = this.local$transform(e); - this.local$destination.put_xwzc9p$(pair_0.first, pair_0.second); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - this.result_0 = this.local$destination; - return this.result_0; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function associate($receiver, transform, continuation, suspended) { - var instance = new Coroutine$associate($receiver, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.associate_9m65rd$', wrapFunction(function() { - var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, transform, continuation) { - var destination = LinkedHashMap_init(); - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var pair_0 = transform(e); - destination.put_xwzc9p$(pair_0.first, pair_0.second); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(destination, Kotlin.coroutineReceiver()); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$associateBy($receiver, keySelector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$destination = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$keySelector = keySelector; - } - Coroutine$associateBy.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$associateBy.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$associateBy.prototype.constructor = Coroutine$associateBy; - Coroutine$associateBy.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$destination = LinkedHashMap_init(); - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$destination.put_xwzc9p$(this.local$keySelector(e), e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - this.result_0 = this.local$destination; - return this.result_0; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function associateBy($receiver, keySelector, continuation, suspended) { - var instance = new Coroutine$associateBy($receiver, keySelector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.associateBy_ku6tnm$', wrapFunction(function() { - var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, keySelector, continuation) { - var destination = LinkedHashMap_init(); - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - destination.put_xwzc9p$(keySelector(e), e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(destination, Kotlin.coroutineReceiver()); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$associateBy_0($receiver, keySelector, valueTransform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$destination = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$keySelector = keySelector; - this.local$valueTransform = valueTransform; - } - Coroutine$associateBy_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$associateBy_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$associateBy_0.prototype.constructor = Coroutine$associateBy_0; - Coroutine$associateBy_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$destination = LinkedHashMap_init(); - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$destination.put_xwzc9p$(this.local$keySelector(e), this.local$valueTransform(e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - this.result_0 = this.local$destination; - return this.result_0; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function associateBy_0($receiver, keySelector, valueTransform, continuation, suspended) { - var instance = new Coroutine$associateBy_0($receiver, keySelector, valueTransform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.associateBy_lt7yd0$', wrapFunction(function() { - var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, keySelector, valueTransform, continuation) { - var destination = LinkedHashMap_init(); - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - destination.put_xwzc9p$(keySelector(e), valueTransform(e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(destination, Kotlin.coroutineReceiver()); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$associateByTo($receiver, destination, keySelector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$keySelector = keySelector; - } - Coroutine$associateByTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$associateByTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$associateByTo.prototype.constructor = Coroutine$associateByTo; - Coroutine$associateByTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$destination.put_xwzc9p$(this.local$keySelector(e), e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function associateByTo($receiver, destination, keySelector, continuation, suspended) { - var instance = new Coroutine$associateByTo($receiver, destination, keySelector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.associateByTo_kkd6mf$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, keySelector, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - destination.put_xwzc9p$(keySelector(e), e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$associateByTo_0($receiver, destination, keySelector, valueTransform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$keySelector = keySelector; - this.local$valueTransform = valueTransform; - } - Coroutine$associateByTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$associateByTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$associateByTo_0.prototype.constructor = Coroutine$associateByTo_0; - Coroutine$associateByTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$destination.put_xwzc9p$(this.local$keySelector(e), this.local$valueTransform(e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function associateByTo_0($receiver, destination, keySelector, valueTransform, continuation, suspended) { - var instance = new Coroutine$associateByTo_0($receiver, destination, keySelector, valueTransform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.associateByTo_pjfcwb$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, keySelector, valueTransform, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - destination.put_xwzc9p$(keySelector(e), valueTransform(e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$associateTo($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$associateTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$associateTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$associateTo.prototype.constructor = Coroutine$associateTo; - Coroutine$associateTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var pair_0 = this.local$transform(e); - this.local$destination.put_xwzc9p$(pair_0.first, pair_0.second); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function associateTo($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$associateTo($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.associateTo_lcmuai$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var pair_0 = transform(e); - destination.put_xwzc9p$(pair_0.first, pair_0.second); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$toChannel($receiver_0, destination_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 10; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$destination = destination_0; - } - Coroutine$toChannel.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$toChannel.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$toChannel.prototype.constructor = Coroutine$toChannel; - Coroutine$toChannel.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 7; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 6; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.state_0 = 1; - continue; - case 6: - this.exceptionState_0 = 10; - this.finallyPath_0 = [9]; - this.state_0 = 8; - continue; - case 7: - this.finallyPath_0 = [10]; - this.exceptionState_0 = 8; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 8: - this.exceptionState_0 = 10; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 9: - this.result_0 = Unit; - return this.local$destination; - case 10: - throw this.exception_0; - default: - this.state_0 = 10; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 10) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function toChannel($receiver_0, destination_0, continuation_0, suspended) { - var instance = new Coroutine$toChannel($receiver_0, destination_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$toCollection($receiver_0, destination_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$destination = destination_0; - } - Coroutine$toCollection.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$toCollection.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$toCollection.prototype.constructor = Coroutine$toCollection; - Coroutine$toCollection.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - this.local$destination.add_11rb$(e_0); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function toCollection($receiver_0, destination_0, continuation_0, suspended) { - var instance = new Coroutine$toCollection($receiver_0, destination_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function toList($receiver, continuation) { - return toMutableList($receiver, continuation); - } - function toMap($receiver, continuation) { - return toMap_0($receiver, LinkedHashMap_init(), continuation); - } - function Coroutine$toMap($receiver_0, destination_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - this.local$destination = destination_0; - } - Coroutine$toMap.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$toMap.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$toMap.prototype.constructor = Coroutine$toMap; - Coroutine$toMap.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - this.local$destination.put_xwzc9p$(e_0.first, e_0.second); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function toMap_0($receiver_0, destination_0, continuation_0, suspended) { - var instance = new Coroutine$toMap($receiver_0, destination_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function toMutableList($receiver, continuation) { - return toCollection($receiver, ArrayList_init_0(), continuation); - } - function toSet($receiver, continuation) { - return toMutableSet($receiver, continuation); - } - function Coroutine$flatMap$lambda(this$flatMap_0, closure$transform_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$flatMap = this$flatMap_0; - this.local$closure$transform = closure$transform_0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$flatMap$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$flatMap$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$flatMap$lambda.prototype.constructor = Coroutine$flatMap$lambda; - Coroutine$flatMap$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$tmp$ = this.local$this$flatMap.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 8; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var e_0 = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$transform(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.state_0 = 7; - this.result_0 = toChannel(this.result_0, this.local$$receiver, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 7: - this.state_0 = 2; - continue; - case 8: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function flatMap$lambda(this$flatMap_0, closure$transform_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$flatMap$lambda(this$flatMap_0, closure$transform_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function flatMap($receiver, context, transform) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), flatMap$lambda($receiver, transform)); - } - function Coroutine$groupBy($receiver, keySelector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$destination = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$keySelector = keySelector; - } - Coroutine$groupBy.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$groupBy.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$groupBy.prototype.constructor = Coroutine$groupBy; - Coroutine$groupBy.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$destination = LinkedHashMap_init(); - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var key_0 = this.local$keySelector(e); - var tmp$_1; - var value_0 = this.local$destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init_0(); - this.local$destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - this.result_0 = this.local$destination; - return this.result_0; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function groupBy($receiver, keySelector, continuation, suspended) { - var instance = new Coroutine$groupBy($receiver, keySelector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.groupBy_ku6tnm$', wrapFunction(function() { - var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, keySelector, continuation) { - var destination = LinkedHashMap_init(); - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var key_0 = keySelector(e); - var tmp$_1; - var value_0 = destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init(); - destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(destination, Kotlin.coroutineReceiver()); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$groupBy_0($receiver, keySelector, valueTransform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$destination = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$keySelector = keySelector; - this.local$valueTransform = valueTransform; - } - Coroutine$groupBy_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$groupBy_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$groupBy_0.prototype.constructor = Coroutine$groupBy_0; - Coroutine$groupBy_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$destination = LinkedHashMap_init(); - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var key_0 = this.local$keySelector(e); - var tmp$_1; - var value_0 = this.local$destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init_0(); - this.local$destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(this.local$valueTransform(e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - this.result_0 = this.local$destination; - return this.result_0; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function groupBy_0($receiver, keySelector, valueTransform, continuation, suspended) { - var instance = new Coroutine$groupBy_0($receiver, keySelector, valueTransform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.groupBy_lt7yd0$', wrapFunction(function() { - var LinkedHashMap_init = Kotlin.kotlin.collections.LinkedHashMap_init_q3lmfv$; - var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, keySelector, valueTransform, continuation) { - var destination = LinkedHashMap_init(); - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var key_0 = keySelector(e); - var tmp$_1; - var value_0 = destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init(); - destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(valueTransform(e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - Kotlin.setCoroutineResult(destination, Kotlin.coroutineReceiver()); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function Coroutine$groupByTo($receiver, destination, keySelector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$keySelector = keySelector; - } - Coroutine$groupByTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$groupByTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$groupByTo.prototype.constructor = Coroutine$groupByTo; - Coroutine$groupByTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var key_0 = this.local$keySelector(e); - var tmp$_1; - var value_0 = this.local$destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init_0(); - this.local$destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function groupByTo($receiver, destination, keySelector, continuation, suspended) { - var instance = new Coroutine$groupByTo($receiver, destination, keySelector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.groupByTo_l6oevu$', wrapFunction(function() { - var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, keySelector, continuation) { - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var key_0 = keySelector(e); - var tmp$_1; - var value_0 = destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init(); - destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$groupByTo_0($receiver, destination, keySelector, valueTransform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$keySelector = keySelector; - this.local$valueTransform = valueTransform; - } - Coroutine$groupByTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$groupByTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$groupByTo_0.prototype.constructor = Coroutine$groupByTo_0; - Coroutine$groupByTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var key_0 = this.local$keySelector(e); - var tmp$_1; - var value_0 = this.local$destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init_0(); - this.local$destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(this.local$valueTransform(e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function groupByTo_0($receiver, destination, keySelector, valueTransform, continuation, suspended) { - var instance = new Coroutine$groupByTo_0($receiver, destination, keySelector, valueTransform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.groupByTo_z9qy88$', wrapFunction(function() { - var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$; - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, keySelector, valueTransform, continuation) { - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var key_0 = keySelector(e); - var tmp$_1; - var value_0 = destination.get_11rb$(key_0); - if (value_0 == null) { - var answer_0 = ArrayList_init(); - destination.put_xwzc9p$(key_0, answer_0); - tmp$_1 = answer_0; - } else { - tmp$_1 = value_0; - } - var list_0 = tmp$_1; - list_0.add_11rb$(valueTransform(e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$map$lambda(closure$transform_0, this$map_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 11; - this.local$closure$transform = closure$transform_0; - this.local$this$map = this$map_0; - this.local$$receiver = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver_0 = $receiver_0; - } - Coroutine$map$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$map$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$map$lambda.prototype.constructor = Coroutine$map$lambda; - Coroutine$map$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$$receiver = this.local$this$map; - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - this.state_0 = 5; - this.result_0 = this.local$closure$transform(e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$$receiver_0.send_11rb$(this.result_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.result_0; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function map$lambda(closure$transform_0, this$map_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$map$lambda(closure$transform_0, this$map_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function map($receiver, context, transform) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), map$lambda(transform, $receiver)); - } - function Coroutine$mapIndexed$lambda(this$mapIndexed_0, closure$transform_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$mapIndexed = this$mapIndexed_0; - this.local$closure$transform = closure$transform_0; - this.local$tmp$ = void 0; - this.local$index = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$mapIndexed$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapIndexed$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapIndexed$lambda.prototype.constructor = Coroutine$mapIndexed$lambda; - Coroutine$mapIndexed$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$; - this.local$index = 0; - this.local$tmp$ = this.local$this$mapIndexed.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 8; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var e_0 = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$transform((tmp$ = this.local$index , this.local$index = tmp$ + 1 | 0 , tmp$), e_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.state_0 = 7; - this.result_0 = this.local$$receiver.send_11rb$(this.result_0, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 7: - this.state_0 = 2; - continue; - case 8: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapIndexed$lambda(this$mapIndexed_0, closure$transform_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$mapIndexed$lambda(this$mapIndexed_0, closure$transform_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function mapIndexed($receiver, context, transform) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), mapIndexed$lambda($receiver, transform)); - } - function mapIndexedNotNull($receiver, context, transform) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return filterNotNull(mapIndexed($receiver, context, transform)); - } - function Coroutine$mapIndexedNotNullTo($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapIndexedNotNullTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapIndexedNotNullTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapIndexedNotNullTo.prototype.constructor = Coroutine$mapIndexedNotNullTo; - Coroutine$mapIndexedNotNullTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_2; - var f_0 = new IndexedValue((tmp$_2 = this.local$index.v , this.local$index.v = tmp$_2 + 1 | 0 , tmp$_2), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - var tmp$_3; - if ((tmp$_3 = this.local$transform(index_1, element_0)) != null) { - this.local$destination.add_11rb$(tmp$_3); - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapIndexedNotNullTo($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapIndexedNotNullTo($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapIndexedNotNullTo_dz8aer$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var IndexedValue_init = Kotlin.kotlin.collections.IndexedValue; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var index_0 = { - v: 0}; - var cause = null; - try { - var tmp$_1; - tmp$_1 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_1.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_1.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_2; - var f_0 = new IndexedValue_init((tmp$_2 = index_0.v , index_0.v = tmp$_2 + 1 | 0 , tmp$_2), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - var tmp$_3; - if ((tmp$_3 = transform(index_1, element_0)) != null) { - destination.add_11rb$(tmp$_3); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$mapIndexedNotNullTo_0($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapIndexedNotNullTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapIndexedNotNullTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapIndexedNotNullTo_0.prototype.constructor = Coroutine$mapIndexedNotNullTo_0; - Coroutine$mapIndexedNotNullTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_2; - var f_0 = new IndexedValue((tmp$_2 = this.local$index.v , this.local$index.v = tmp$_2 + 1 | 0 , tmp$_2), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - var tmp$_3; - if ((tmp$_3 = this.local$transform(index_1, element_0)) != null) { - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(tmp$_3, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - this.state_0 = 6; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.local$destination; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapIndexedNotNullTo_0($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapIndexedNotNullTo_0($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapIndexedNotNullTo_4m0vhw$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var IndexedValue_init = Kotlin.kotlin.collections.IndexedValue; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var index_0 = { - v: 0}; - var cause = null; - try { - var tmp$_1; - tmp$_1 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_1.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_1.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_2; - var f_0 = new IndexedValue_init((tmp$_2 = index_0.v , index_0.v = tmp$_2 + 1 | 0 , tmp$_2), e); - var index_1 = f_0.component1(), element_0 = f_0.component2(); - var tmp$_3; - if ((tmp$_3 = transform(index_1, element_0)) != null) { - Kotlin.suspendCall(destination.send_11rb$(tmp$_3, Kotlin.coroutineReceiver())); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$mapIndexedTo($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapIndexedTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapIndexedTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapIndexedTo.prototype.constructor = Coroutine$mapIndexedTo; - Coroutine$mapIndexedTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - this.local$destination.add_11rb$(this.local$transform((tmp$_1 = this.local$index.v , this.local$index.v = tmp$_1 + 1 | 0 , tmp$_1), e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapIndexedTo($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapIndexedTo($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapIndexedTo_a7sgbu$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var index = { - v: 0}; - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - destination.add_11rb$(transform((tmp$_1 = index.v , index.v = tmp$_1 + 1 | 0 , tmp$_1), e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$mapIndexedTo_0($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 10; - this.local$index = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapIndexedTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapIndexedTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapIndexedTo_0.prototype.constructor = Coroutine$mapIndexedTo_0; - Coroutine$mapIndexedTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 7; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 6; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(this.local$transform((tmp$_1 = this.local$index.v , this.local$index.v = tmp$_1 + 1 | 0 , tmp$_1), e), this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.state_0 = 1; - continue; - case 6: - this.exceptionState_0 = 10; - this.finallyPath_0 = [9]; - this.state_0 = 8; - continue; - case 7: - this.finallyPath_0 = [10]; - this.exceptionState_0 = 8; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 8: - this.exceptionState_0 = 10; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 9: - this.result_0 = Unit; - return this.local$destination; - case 10: - throw this.exception_0; - default: - this.state_0 = 10; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 10) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapIndexedTo_0($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapIndexedTo_0($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapIndexedTo_whewhd$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var index = { - v: 0}; - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - Kotlin.suspendCall(destination.send_11rb$(transform((tmp$_1 = index.v , index.v = tmp$_1 + 1 | 0 , tmp$_1), e), Kotlin.coroutineReceiver())); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function mapNotNull($receiver, context, transform) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return filterNotNull(map($receiver, context, transform)); - } - function Coroutine$mapNotNullTo($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapNotNullTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapNotNullTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapNotNullTo.prototype.constructor = Coroutine$mapNotNullTo; - Coroutine$mapNotNullTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - if ((tmp$_1 = this.local$transform(e)) != null) { - this.local$destination.add_11rb$(tmp$_1); - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapNotNullTo($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapNotNullTo($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapNotNullTo_fo1is7$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - if ((tmp$_1 = transform(e)) != null) { - destination.add_11rb$(tmp$_1); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$mapNotNullTo_0($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapNotNullTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapNotNullTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapNotNullTo_0.prototype.constructor = Coroutine$mapNotNullTo_0; - Coroutine$mapNotNullTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - if ((tmp$_1 = this.local$transform(e)) != null) { - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(tmp$_1, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - this.state_0 = 6; - continue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return this.local$destination; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapNotNullTo_0($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapNotNullTo_0($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapNotNullTo_wo1rcg$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - if ((tmp$_1 = transform(e)) != null) { - Kotlin.suspendCall(destination.send_11rb$(tmp$_1, Kotlin.coroutineReceiver())); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$mapTo($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapTo.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapTo.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapTo.prototype.constructor = Coroutine$mapTo; - Coroutine$mapTo.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$destination.add_11rb$(this.local$transform(e)); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$destination; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapTo($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapTo($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapTo_pa4xkq$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - destination.add_11rb$(transform(e)); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$mapTo_0($receiver, destination, transform, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 10; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$destination = destination; - this.local$transform = transform; - } - Coroutine$mapTo_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$mapTo_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$mapTo_0.prototype.constructor = Coroutine$mapTo_0; - Coroutine$mapTo_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 7; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 6; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.state_0 = 5; - this.result_0 = this.local$destination.send_11rb$(this.local$transform(e), this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.state_0 = 1; - continue; - case 6: - this.exceptionState_0 = 10; - this.finallyPath_0 = [9]; - this.state_0 = 8; - continue; - case 7: - this.finallyPath_0 = [10]; - this.exceptionState_0 = 8; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 8: - this.exceptionState_0 = 10; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 9: - this.result_0 = Unit; - return this.local$destination; - case 10: - throw this.exception_0; - default: - this.state_0 = 10; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 10) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function mapTo_0($receiver, destination, transform, continuation, suspended) { - var instance = new Coroutine$mapTo_0($receiver, destination, transform, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.mapTo_q9ku9f$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, destination, transform, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - Kotlin.suspendCall(destination.send_11rb$(transform(e), Kotlin.coroutineReceiver())); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return destination; -}; -})); - function Coroutine$withIndex$lambda(this$withIndex_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$withIndex = this$withIndex_0; - this.local$tmp$ = void 0; - this.local$index = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$withIndex$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$withIndex$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$withIndex$lambda.prototype.constructor = Coroutine$withIndex$lambda; - Coroutine$withIndex$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - var tmp$; - this.local$index = 0; - this.local$tmp$ = this.local$this$withIndex.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - var e_0 = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$$receiver.send_11rb$(new IndexedValue((tmp$ = this.local$index , this.local$index = tmp$ + 1 | 0 , tmp$), e_0), this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.state_0 = 2; - continue; - case 7: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function withIndex$lambda(this$withIndex_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$withIndex$lambda(this$withIndex_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function withIndex($receiver, context) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), withIndex$lambda($receiver)); - } - function Coroutine$distinct$lambda(it_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$it = it_0; - } - Coroutine$distinct$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$distinct$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$distinct$lambda.prototype.constructor = Coroutine$distinct$lambda; - Coroutine$distinct$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - return this.local$it; - case 1: - throw this.exception_0; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function distinct$lambda(it_0, continuation_0, suspended) { - var instance = new Coroutine$distinct$lambda(it_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function distinct($receiver) { - return distinctBy($receiver, void 0, distinct$lambda); - } - function Coroutine$distinctBy$lambda(this$distinctBy_0, closure$selector_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$distinctBy = this$distinctBy_0; - this.local$closure$selector = closure$selector_0; - this.local$tmp$ = void 0; - this.local$keys = void 0; - this.local$e = void 0; - this.local$k = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$distinctBy$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$distinctBy$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$distinctBy$lambda.prototype.constructor = Coroutine$distinctBy$lambda; - Coroutine$distinctBy$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$keys = HashSet_init(); - this.local$tmp$ = this.local$this$distinctBy.iterator(); - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 5; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 5: - this.local$e = this.result_0; - this.state_0 = 6; - this.result_0 = this.local$closure$selector(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.local$k = this.result_0; - if (!this.local$keys.contains_11rb$(this.local$k)) { - this.state_0 = 7; - this.result_0 = this.local$$receiver.send_11rb$(this.local$e, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - } else { - this.state_0 = 8; - continue; - } - case 7: - this.local$keys.add_11rb$(this.local$k); - this.state_0 = 8; - continue; - case 8: - this.state_0 = 2; - continue; - case 9: - return Unit; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function distinctBy$lambda(this$distinctBy_0, closure$selector_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$distinctBy$lambda(this$distinctBy_0, closure$selector_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function distinctBy($receiver, context, selector) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumes($receiver), distinctBy$lambda($receiver, selector)); - } - function toMutableSet($receiver, continuation) { - return toCollection($receiver, LinkedHashSet_init(), continuation); - } - function Coroutine$all($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$all.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$all.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$all.prototype.constructor = Coroutine$all; - Coroutine$all.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (!this.local$predicate(e)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = false; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return true; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function all($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$all($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.all_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (!predicate(e)) - return false; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return true; -}; -})); - function Coroutine$any($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 6; - this.local$cause = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$any.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$any.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$any.prototype.constructor = Coroutine$any; - Coroutine$any.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 3; - this.state_0 = 1; - this.result_0 = this.local$$receiver.iterator().hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - this.exceptionState_0 = 6; - this.finallyPath_0 = [2]; - this.state_0 = 4; - this.$returnValue = this.result_0; - continue; - case 2: - return this.$returnValue; - case 3: - this.finallyPath_0 = [6]; - this.exceptionState_0 = 4; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 4: - this.exceptionState_0 = 6; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 5: - return; - case 6: - throw this.exception_0; - default: - this.state_0 = 6; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 6) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function any($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$any($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$any_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$any_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$any_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$any_0.prototype.constructor = Coroutine$any_0; - Coroutine$any_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = true; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return false; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function any_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$any_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.any_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - return true; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return false; -}; -})); - function Coroutine$count($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 9; - this.local$count = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$count.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$count.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$count.prototype.constructor = Coroutine$count; - Coroutine$count.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$count = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e_0 = this.result_0; - this.local$count.v = this.local$count.v + 1 | 0; - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$count.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function count($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$count($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$count_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$count = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$count_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$count_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$count_0.prototype.constructor = Coroutine$count_0; - Coroutine$count_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$count = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.local$count.v = this.local$count.v + 1 | 0; - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$count.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function count_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$count_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.count_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var count = { - v: 0}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - count.v = count.v + 1 | 0; - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return count.v; -}; -})); - function Coroutine$fold($receiver, initial, operation, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$accumulator = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$initial = initial; - this.local$operation = operation; - } - Coroutine$fold.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$fold.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$fold.prototype.constructor = Coroutine$fold; - Coroutine$fold.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$accumulator = { - v: this.local$initial}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$accumulator.v = this.local$operation(this.local$accumulator.v, e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$accumulator.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function fold($receiver, initial, operation, continuation, suspended) { - var instance = new Coroutine$fold($receiver, initial, operation, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.fold_kq4l36$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, initial, operation, continuation) { - var accumulator = { - v: initial}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - accumulator.v = operation(accumulator.v, e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return accumulator.v; -}; -})); - function Coroutine$foldIndexed($receiver, initial, operation, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$index = void 0; - this.local$accumulator = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$initial = initial; - this.local$operation = operation; - } - Coroutine$foldIndexed.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$foldIndexed.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$foldIndexed.prototype.constructor = Coroutine$foldIndexed; - Coroutine$foldIndexed.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$index = { - v: 0}; - this.local$accumulator = { - v: this.local$initial}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - var tmp$_1; - this.local$accumulator.v = this.local$operation((tmp$_1 = this.local$index.v , this.local$index.v = tmp$_1 + 1 | 0 , tmp$_1), this.local$accumulator.v, e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$accumulator.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function foldIndexed($receiver, initial, operation, continuation, suspended) { - var instance = new Coroutine$foldIndexed($receiver, initial, operation, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.foldIndexed_wviyg6$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, initial, operation, continuation) { - var index = { - v: 0}; - var accumulator = { - v: initial}; - var cause = null; - try { - var tmp$_0; - tmp$_0 = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$_0.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$_0.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var tmp$_1; - accumulator.v = operation((tmp$_1 = index.v , index.v = tmp$_1 + 1 | 0 , tmp$_1), accumulator.v, e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return accumulator.v; -}; -})); - function Coroutine$maxBy($receiver, selector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 14; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$maxElem = void 0; - this.local$maxValue = void 0; - this.local$$receiver = $receiver; - this.local$selector = selector; - } - Coroutine$maxBy.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$maxBy.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$maxBy.prototype.constructor = Coroutine$maxBy; - Coroutine$maxBy.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 11; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 14; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$maxElem = this.result_0; - this.local$maxValue = this.local$selector(this.local$maxElem); - this.state_0 = 5; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - var e = this.result_0; - var v_0 = this.local$selector(e); - if (Kotlin.compareTo(this.local$maxValue, v_0) < 0) { - this.local$maxElem = e; - this.local$maxValue = v_0; - } - this.state_0 = 5; - continue; - case 9: - this.exceptionState_0 = 14; - this.finallyPath_0 = [10]; - this.state_0 = 12; - this.$returnValue = this.local$maxElem; - continue; - case 10: - return this.$returnValue; - case 11: - this.finallyPath_0 = [14]; - this.exceptionState_0 = 12; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 12: - this.exceptionState_0 = 14; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - return; - case 14: - throw this.exception_0; - default: - this.state_0 = 14; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 14) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function maxBy($receiver, selector, continuation, suspended) { - var instance = new Coroutine$maxBy($receiver, selector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.maxBy_mqfd03$', wrapFunction(function() { - var Throwable = Error; - return function($receiver, selector, continuation) { - var cause = null; - try { - var iterator = $receiver.iterator(); - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - return null; - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - var maxElem = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var maxValue = selector(maxElem); - while (true) { - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var v_0 = selector(e); - if (Kotlin.compareTo(maxValue, v_0) < 0) { - maxElem = e; - maxValue = v_0; - } - } - return maxElem; - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } -}; -})); - function Coroutine$maxWith($receiver_0, comparator_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 14; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$max = void 0; - this.local$$receiver = $receiver_0; - this.local$comparator = comparator_0; - } - Coroutine$maxWith.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$maxWith.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$maxWith.prototype.constructor = Coroutine$maxWith; - Coroutine$maxWith.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 11; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 14; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$max = this.result_0; - this.state_0 = 5; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - var e_0 = this.result_0; - if (this.local$comparator.compare(this.local$max, e_0) < 0) - this.local$max = e_0; - this.state_0 = 5; - continue; - case 9: - this.exceptionState_0 = 14; - this.finallyPath_0 = [10]; - this.state_0 = 12; - this.$returnValue = this.local$max; - continue; - case 10: - return this.$returnValue; - case 11: - this.finallyPath_0 = [14]; - this.exceptionState_0 = 12; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 12: - this.exceptionState_0 = 14; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - return; - case 14: - throw this.exception_0; - default: - this.state_0 = 14; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 14) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function maxWith($receiver_0, comparator_0, continuation_0, suspended) { - var instance = new Coroutine$maxWith($receiver_0, comparator_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$minBy($receiver, selector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 14; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$minElem = void 0; - this.local$minValue = void 0; - this.local$$receiver = $receiver; - this.local$selector = selector; - } - Coroutine$minBy.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$minBy.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$minBy.prototype.constructor = Coroutine$minBy; - Coroutine$minBy.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 11; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 14; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$minElem = this.result_0; - this.local$minValue = this.local$selector(this.local$minElem); - this.state_0 = 5; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - var e = this.result_0; - var v_0 = this.local$selector(e); - if (Kotlin.compareTo(this.local$minValue, v_0) > 0) { - this.local$minElem = e; - this.local$minValue = v_0; - } - this.state_0 = 5; - continue; - case 9: - this.exceptionState_0 = 14; - this.finallyPath_0 = [10]; - this.state_0 = 12; - this.$returnValue = this.local$minElem; - continue; - case 10: - return this.$returnValue; - case 11: - this.finallyPath_0 = [14]; - this.exceptionState_0 = 12; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 12: - this.exceptionState_0 = 14; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - return; - case 14: - throw this.exception_0; - default: - this.state_0 = 14; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 14) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function minBy($receiver, selector, continuation, suspended) { - var instance = new Coroutine$minBy($receiver, selector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.minBy_mqfd03$', wrapFunction(function() { - var Throwable = Error; - return function($receiver, selector, continuation) { - var cause = null; - try { - var iterator = $receiver.iterator(); - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - return null; - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - var minElem = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var minValue = selector(minElem); - while (true) { - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - var v_0 = selector(e); - if (Kotlin.compareTo(minValue, v_0) > 0) { - minElem = e; - minValue = v_0; - } - } - return minElem; - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } -}; -})); - function Coroutine$minWith($receiver_0, comparator_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 14; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$min = void 0; - this.local$$receiver = $receiver_0; - this.local$comparator = comparator_0; - } - Coroutine$minWith.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$minWith.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$minWith.prototype.constructor = Coroutine$minWith; - Coroutine$minWith.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 11; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) { - this.exceptionState_0 = 14; - this.finallyPath_0 = [2]; - this.state_0 = 12; - this.$returnValue = null; - continue; - } else { - this.state_0 = 3; - continue; - } - case 2: - return this.$returnValue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$min = this.result_0; - this.state_0 = 5; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 9; - continue; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - var e_0 = this.result_0; - if (this.local$comparator.compare(this.local$min, e_0) > 0) - this.local$min = e_0; - this.state_0 = 5; - continue; - case 9: - this.exceptionState_0 = 14; - this.finallyPath_0 = [10]; - this.state_0 = 12; - this.$returnValue = this.local$min; - continue; - case 10: - return this.$returnValue; - case 11: - this.finallyPath_0 = [14]; - this.exceptionState_0 = 12; - var e_1 = this.exception_0; - if (Kotlin.isType(e_1, Throwable)) { - this.local$cause = e_1; - throw e_1; - } else - throw e_1; - case 12: - this.exceptionState_0 = 14; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 13: - return; - case 14: - throw this.exception_0; - default: - this.state_0 = 14; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 14) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function minWith($receiver_0, comparator_0, continuation_0, suspended) { - var instance = new Coroutine$minWith($receiver_0, comparator_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$none($receiver_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 6; - this.local$cause = void 0; - this.local$$receiver = $receiver_0; - } - Coroutine$none.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$none.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$none.prototype.constructor = Coroutine$none; - Coroutine$none.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 3; - this.state_0 = 1; - this.result_0 = this.local$$receiver.iterator().hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - this.exceptionState_0 = 6; - this.finallyPath_0 = [2]; - this.state_0 = 4; - this.$returnValue = !this.result_0; - continue; - case 2: - return this.$returnValue; - case 3: - this.finallyPath_0 = [6]; - this.exceptionState_0 = 4; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 4: - this.exceptionState_0 = 6; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 5: - return; - case 6: - throw this.exception_0; - default: - this.state_0 = 6; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 6) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function none($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$none($receiver_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); - } - function Coroutine$none_0($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 11; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$none_0.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$none_0.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$none_0.prototype.constructor = Coroutine$none_0; - Coroutine$none_0.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 8; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.exceptionState_0 = 11; - this.finallyPath_0 = [5]; - this.state_0 = 9; - this.$returnValue = false; - continue; - } else { - this.state_0 = 6; - continue; - } - case 5: - return this.$returnValue; - case 6: - this.state_0 = 1; - continue; - case 7: - this.exceptionState_0 = 11; - this.finallyPath_0 = [10]; - this.state_0 = 9; - continue; - case 8: - this.finallyPath_0 = [11]; - this.exceptionState_0 = 9; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 9: - this.exceptionState_0 = 11; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 10: - this.result_0 = Unit; - return true; - case 11: - throw this.exception_0; - default: - this.state_0 = 11; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 11) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function none_0($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$none_0($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.none_4c38lx$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) - return false; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return true; -}; -})); - function Coroutine$reduce($receiver, operation, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 12; - this.local$cause = void 0; - this.local$iterator = void 0; - this.local$accumulator = void 0; - this.local$$receiver = $receiver; - this.local$operation = operation; - } - Coroutine$reduce.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$reduce.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$reduce.prototype.constructor = Coroutine$reduce; - Coroutine$reduce.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 9; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) - throw UnsupportedOperationException_init("Empty channel can't be reduced."); - this.state_0 = 2; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - this.local$accumulator = this.result_0; - this.state_0 = 3; - continue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 5; - continue; - } - case 5: - this.state_0 = 6; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.local$accumulator = this.local$operation(this.local$accumulator, this.result_0); - this.state_0 = 3; - continue; - case 7: - this.exceptionState_0 = 12; - this.finallyPath_0 = [8]; - this.state_0 = 10; - this.$returnValue = this.local$accumulator; - continue; - case 8: - return this.$returnValue; - case 9: - this.finallyPath_0 = [12]; - this.exceptionState_0 = 10; - var e = this.exception_0; - if (Kotlin.isType(e, Throwable)) { - this.local$cause = e; - throw e; - } else - throw e; - case 10: - this.exceptionState_0 = 12; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 11: - return; - case 12: - throw this.exception_0; - default: - this.state_0 = 12; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 12) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function reduce($receiver, operation, continuation, suspended) { - var instance = new Coroutine$reduce($receiver, operation, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.reduce_vk3vfd$', wrapFunction(function() { - var UnsupportedOperationException_init = Kotlin.kotlin.UnsupportedOperationException_init_pdl1vj$; - var Throwable = Error; - return function($receiver, operation, continuation) { - var cause = null; - try { - var iterator = $receiver.iterator(); - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - throw UnsupportedOperationException_init("Empty channel can't be reduced."); - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - var accumulator = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - while (true) { - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - accumulator = operation(accumulator, Kotlin.coroutineResult(Kotlin.coroutineReceiver())); - } - return accumulator; - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - cause = e; - throw e; - } else - throw e; -} - finally { - $receiver.cancel_dbl4no$(cause); - } -}; -})); - function Coroutine$reduceIndexed($receiver, operation, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 12; - this.local$cause = void 0; - this.local$tmp$_0 = void 0; - this.local$iterator = void 0; - this.local$index = void 0; - this.local$accumulator = void 0; - this.local$$receiver = $receiver; - this.local$operation = operation; - } - Coroutine$reduceIndexed.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$reduceIndexed.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$reduceIndexed.prototype.constructor = Coroutine$reduceIndexed; - Coroutine$reduceIndexed.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$cause = null; - this.exceptionState_0 = 9; - var tmp$_0; - this.local$iterator = this.local$$receiver.iterator(); - this.state_0 = 1; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - if (!this.result_0) - throw UnsupportedOperationException_init("Empty channel can't be reduced."); - this.local$index = 1; - this.state_0 = 2; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - this.local$accumulator = this.result_0; - this.state_0 = 3; - continue; - case 3: - this.state_0 = 4; - this.result_0 = this.local$iterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - if (!this.result_0) { - this.state_0 = 7; - continue; - } else { - this.state_0 = 5; - continue; - } - case 5: - this.local$tmp$_0 = (tmp$_0 = this.local$index , this.local$index = tmp$_0 + 1 | 0 , tmp$_0); - this.state_0 = 6; - this.result_0 = this.local$iterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - this.local$accumulator = this.local$operation(this.local$tmp$_0, this.local$accumulator, this.result_0); - this.state_0 = 3; - continue; - case 7: - this.exceptionState_0 = 12; - this.finallyPath_0 = [8]; - this.state_0 = 10; - this.$returnValue = this.local$accumulator; - continue; - case 8: - return this.$returnValue; - case 9: - this.finallyPath_0 = [12]; - this.exceptionState_0 = 10; - var e = this.exception_0; - if (Kotlin.isType(e, Throwable)) { - this.local$cause = e; - throw e; - } else - throw e; - case 10: - this.exceptionState_0 = 12; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 11: - return; - case 12: - throw this.exception_0; - default: - this.state_0 = 12; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 12) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function reduceIndexed($receiver, operation, continuation, suspended) { - var instance = new Coroutine$reduceIndexed($receiver, operation, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.reduceIndexed_a6mkxp$', wrapFunction(function() { - var UnsupportedOperationException_init = Kotlin.kotlin.UnsupportedOperationException_init_pdl1vj$; - var Throwable = Error; - return function($receiver, operation, continuation) { - var cause = null; - try { - var tmp$_0, tmp$_1; - var iterator = $receiver.iterator(); - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - throw UnsupportedOperationException_init("Empty channel can't be reduced."); - var index = 1; - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - var accumulator = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - while (true) { - Kotlin.suspendCall(iterator.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - tmp$_1 = (tmp$_0 = index , index = tmp$_0 + 1 | 0 , tmp$_0); - Kotlin.suspendCall(iterator.next(Kotlin.coroutineReceiver())); - accumulator = operation(tmp$_1, accumulator, Kotlin.coroutineResult(Kotlin.coroutineReceiver())); - } - return accumulator; - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - cause = e; - throw e; - } else - throw e; -} - finally { - $receiver.cancel_dbl4no$(cause); - } -}; -})); - function Coroutine$sumBy($receiver, selector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$sum = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$selector = selector; - } - Coroutine$sumBy.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$sumBy.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$sumBy.prototype.constructor = Coroutine$sumBy; - Coroutine$sumBy.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$sum = { - v: 0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$sum.v = this.local$sum.v + this.local$selector(e) | 0; - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$sum.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function sumBy($receiver, selector, continuation, suspended) { - var instance = new Coroutine$sumBy($receiver, selector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.sumBy_fl2dz0$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, selector, continuation) { - var sum = { - v: 0}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - sum.v = sum.v + selector(e) | 0; - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return sum.v; -}; -})); - function Coroutine$sumByDouble($receiver, selector, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$sum = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$selector = selector; - } - Coroutine$sumByDouble.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$sumByDouble.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$sumByDouble.prototype.constructor = Coroutine$sumByDouble; - Coroutine$sumByDouble.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$sum = { - v: 0.0}; - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - this.local$sum.v += this.local$selector(e); - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return this.local$sum.v; - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function sumByDouble($receiver, selector, continuation, suspended) { - var instance = new Coroutine$sumByDouble($receiver, selector, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.sumByDouble_jy8qhg$', wrapFunction(function() { - var Unit = Kotlin.kotlin.Unit; - var Throwable = Error; - return function($receiver, selector, continuation) { - var sum = { - v: 0.0}; - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - sum.v += selector(e); - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return sum.v; -}; -})); - function Coroutine$requireNoNulls$lambda(this$requireNoNulls_0, it_0, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.exceptionState_0 = 1; - this.local$this$requireNoNulls = this$requireNoNulls_0; - this.local$it = it_0; - } - Coroutine$requireNoNulls$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$requireNoNulls$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$requireNoNulls$lambda.prototype.constructor = Coroutine$requireNoNulls$lambda; - Coroutine$requireNoNulls$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (this.local$it == null) { - throw IllegalArgumentException_init('null element found in ' + this.local$this$requireNoNulls + '.'); - } - return this.local$it; - case 1: - throw this.exception_0; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function requireNoNulls$lambda(this$requireNoNulls_0) { - return function(it_0, continuation_0, suspended) { - var instance = new Coroutine$requireNoNulls$lambda(this$requireNoNulls_0, it_0, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function requireNoNulls($receiver) { - return map($receiver, void 0, requireNoNulls$lambda($receiver)); - } - var Pair_init = Kotlin.kotlin.Pair; - function Coroutine$partition($receiver, predicate, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 9; - this.local$first = void 0; - this.local$second = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$$receiver = $receiver; - this.local$predicate = predicate; - } - Coroutine$partition.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$partition.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$partition.prototype.constructor = Coroutine$partition; - Coroutine$partition.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$first = ArrayList_init_0(); - this.local$second = ArrayList_init_0(); - this.local$cause = null; - this.exceptionState_0 = 6; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - var e = this.result_0; - if (this.local$predicate(e)) { - this.local$first.add_11rb$(e); - } else { - this.local$second.add_11rb$(e); - } - this.state_0 = 1; - continue; - case 5: - this.exceptionState_0 = 9; - this.finallyPath_0 = [8]; - this.state_0 = 7; - continue; - case 6: - this.finallyPath_0 = [9]; - this.exceptionState_0 = 7; - var e_2 = this.exception_0; - if (Kotlin.isType(e_2, Throwable)) { - this.local$cause = e_2; - throw e_2; - } else - throw e_2; - case 7: - this.exceptionState_0 = 9; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 8: - this.result_0 = Unit; - return new Pair_init(this.local$first, this.local$second); - case 9: - throw this.exception_0; - default: - this.state_0 = 9; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 9) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function partition($receiver, predicate, continuation, suspended) { - var instance = new Coroutine$partition($receiver, predicate, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.channels.partition_4c38lx$', wrapFunction(function() { - var ArrayList_init = Kotlin.kotlin.collections.ArrayList_init_287e2$; - var Unit = Kotlin.kotlin.Unit; - var Pair_init = Kotlin.kotlin.Pair; - var Throwable = Error; - return function($receiver, predicate, continuation) { - var first = ArrayList_init(); - var second = ArrayList_init(); - var cause = null; - try { - var tmp$; - tmp$ = $receiver.iterator(); - while (true) { - Kotlin.suspendCall(tmp$.hasNext(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - Kotlin.suspendCall(tmp$.next(Kotlin.coroutineReceiver())); - var e = Kotlin.coroutineResult(Kotlin.coroutineReceiver()); - if (predicate(e)) { - first.add_11rb$(e); - } else { - second.add_11rb$(e); - } - } - } catch (e_2) { - if (Kotlin.isType(e_2, Throwable)) { - cause = e_2; - throw e_2; - } else - throw e_2; -} - finally { - $receiver.cancel_dbl4no$(cause); - } - Kotlin.setCoroutineResult(Unit, Kotlin.coroutineReceiver()); - return new Pair_init(first, second); -}; -})); - function zip$lambda(t1, t2) { - return to(t1, t2); - } - function zip($receiver, other) { - return zip_0($receiver, other, void 0, zip$lambda); - } - function Coroutine$zip$lambda(closure$other_0, this$zip_0, closure$transform_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 15; - this.local$closure$other = closure$other_0; - this.local$this$zip = this$zip_0; - this.local$closure$transform = closure$transform_0; - this.local$otherIterator = void 0; - this.local$$receiver = void 0; - this.local$cause = void 0; - this.local$tmp$ = void 0; - this.local$e = void 0; - this.local$closure$transform_0 = void 0; - this.local$$receiver_0 = $receiver_0; - } - Coroutine$zip$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$zip$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$zip$lambda.prototype.constructor = Coroutine$zip$lambda; - Coroutine$zip$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.local$otherIterator = this.local$closure$other.iterator(); - this.local$$receiver = this.local$this$zip; - this.local$cause = null; - this.exceptionState_0 = 12; - this.local$tmp$ = this.local$$receiver.iterator(); - this.state_0 = 1; - continue; - case 1: - this.state_0 = 2; - this.result_0 = this.local$tmp$.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 2: - if (!this.result_0) { - this.state_0 = 11; - continue; - } else { - this.state_0 = 3; - continue; - } - case 3: - this.state_0 = 4; - this.result_0 = this.local$tmp$.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 4: - this.local$e = this.result_0; - this.local$closure$transform_0 = this.local$closure$transform; - this.state_0 = 5; - continue; - case 5: - this.state_0 = 6; - this.result_0 = this.local$otherIterator.hasNext(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 6: - if (!this.result_0) { - this.state_0 = 10; - continue; - } else { - this.state_0 = 7; - continue; - } - case 7: - this.state_0 = 8; - this.result_0 = this.local$otherIterator.next(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 8: - var element2 = this.result_0; - this.state_0 = 9; - this.result_0 = this.local$$receiver_0.send_11rb$(this.local$closure$transform_0(this.local$e, element2), this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 9: - if (!false) { - this.state_0 = 10; - continue; - } - this.state_0 = 5; - continue; - case 10: - this.state_0 = 1; - continue; - case 11: - this.exceptionState_0 = 15; - this.finallyPath_0 = [14]; - this.state_0 = 13; - continue; - case 12: - this.finallyPath_0 = [15]; - this.exceptionState_0 = 13; - var e_0 = this.exception_0; - if (Kotlin.isType(e_0, Throwable)) { - this.local$cause = e_0; - throw e_0; - } else - throw e_0; - case 13: - this.exceptionState_0 = 15; - this.local$$receiver.cancel_dbl4no$(this.local$cause); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 14: - this.result_0 = Unit; - return this.result_0; - case 15: - throw this.exception_0; - default: - this.state_0 = 15; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 15) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function zip$lambda_0(closure$other_0, this$zip_0, closure$transform_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$zip$lambda(closure$other_0, this$zip_0, closure$transform_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function zip_0($receiver, other, context, transform) { - if (context === void 0) - context = Dispatchers_getInstance().Unconfined; - return produce_0(GlobalScope_getInstance(), context, void 0, consumesAll([$receiver, other]), zip$lambda_0(other, $receiver, transform)); - } - function ConflatedBroadcastChannel() { - ConflatedBroadcastChannel$Companion_getInstance(); - this._state_0 = ConflatedBroadcastChannel$Companion_getInstance().INITIAL_STATE_0; - this._updating_0 = 0; - this.onCloseHandler_0 = null; - } - function ConflatedBroadcastChannel$Companion() { - ConflatedBroadcastChannel$Companion_instance = this; - this.CLOSED_0 = new ConflatedBroadcastChannel$Closed(null); - this.UNDEFINED_0 = new Symbol('UNDEFINED'); - this.INITIAL_STATE_0 = new ConflatedBroadcastChannel$State(this.UNDEFINED_0, null); - } - ConflatedBroadcastChannel$Companion.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Companion', - interfaces: []}; - var ConflatedBroadcastChannel$Companion_instance = null; - function ConflatedBroadcastChannel$Companion_getInstance() { - if (ConflatedBroadcastChannel$Companion_instance === null) { - new ConflatedBroadcastChannel$Companion(); - } - return ConflatedBroadcastChannel$Companion_instance; - } - function ConflatedBroadcastChannel$State(value, subscribers) { - this.value = value; - this.subscribers = subscribers; - } - ConflatedBroadcastChannel$State.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'State', - interfaces: []}; - function ConflatedBroadcastChannel$Closed(closeCause) { - this.closeCause = closeCause; - } - Object.defineProperty(ConflatedBroadcastChannel$Closed.prototype, 'sendException', { - get: function() { - var tmp$; - return (tmp$ = this.closeCause) != null ? tmp$ : new ClosedSendChannelException(DEFAULT_CLOSE_MESSAGE); -}}); - Object.defineProperty(ConflatedBroadcastChannel$Closed.prototype, 'valueException', { - get: function() { - var tmp$; - return (tmp$ = this.closeCause) != null ? tmp$ : IllegalStateException_init(DEFAULT_CLOSE_MESSAGE); -}}); - ConflatedBroadcastChannel$Closed.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Closed', - interfaces: []}; - Object.defineProperty(ConflatedBroadcastChannel.prototype, 'value', { - get: function() { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed)) - throw state.valueException; - else if (Kotlin.isType(state, ConflatedBroadcastChannel$State)) { - if (state.value === ConflatedBroadcastChannel$Companion_getInstance().UNDEFINED_0) - throw IllegalStateException_init('No value'); - return (tmp$ = state.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } else { - throw IllegalStateException_init(('Invalid state ' + state.toString()).toString()); - } - } -}}); - Object.defineProperty(ConflatedBroadcastChannel.prototype, 'valueOrNull', { - get: function() { - var tmp$; - var state = this._state_0; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed)) - return null; - else if (Kotlin.isType(state, ConflatedBroadcastChannel$State)) { - if (state.value === ConflatedBroadcastChannel$Companion_getInstance().UNDEFINED_0) - return null; - return (tmp$ = state.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); - } else { - throw IllegalStateException_init(('Invalid state ' + state.toString()).toString()); - } -}}); - Object.defineProperty(ConflatedBroadcastChannel.prototype, 'isClosedForSend', { - get: function() { - return Kotlin.isType(this._state_0, ConflatedBroadcastChannel$Closed); -}}); - Object.defineProperty(ConflatedBroadcastChannel.prototype, 'isFull', { - get: function() { - return false; -}}); - ConflatedBroadcastChannel.prototype.openSubscription = function() { - var subscriber = new ConflatedBroadcastChannel$Subscriber(this); - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$, tmp$_0; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed)) { - subscriber.close_dbl4no$(state.closeCause); - return subscriber; - } else if (Kotlin.isType(state, ConflatedBroadcastChannel$State)) { - if (state.value !== ConflatedBroadcastChannel$Companion_getInstance().UNDEFINED_0) { - subscriber.offerInternal_11rb$((tmp$ = state.value) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - } - var update = new ConflatedBroadcastChannel$State(state.value, this.addSubscriber_0((Kotlin.isType(tmp$_0 = state, ConflatedBroadcastChannel$State) ? tmp$_0 : throwCCE()).subscribers, subscriber)); - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) - return subscriber; - } else { - throw IllegalStateException_init(('Invalid state ' + state.toString()).toString()); - } - } -}; - ConflatedBroadcastChannel.prototype.closeSubscriber_0 = function(subscriber) { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed)) - return; - else if (Kotlin.isType(state, ConflatedBroadcastChannel$State)) { - var update = new ConflatedBroadcastChannel$State(state.value, this.removeSubscriber_0(ensureNotNull((Kotlin.isType(tmp$ = state, ConflatedBroadcastChannel$State) ? tmp$ : throwCCE()).subscribers), subscriber)); - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) - return; - } else { - throw IllegalStateException_init(('Invalid state ' + state.toString()).toString()); - } - } -}; - ConflatedBroadcastChannel.prototype.addSubscriber_0 = function(list, subscriber) { - if (list == null) { - var array = Array_0(1); - var tmp$; - tmp$ = array.length - 1 | 0; - for (var i = 0; i <= tmp$; i++) { - array[i] = subscriber; - } - return array; - } - return list.concat([subscriber]); -}; - ConflatedBroadcastChannel.prototype.removeSubscriber_0 = function(list, subscriber) { - var tmp$; - var n = list.length; - var i = indexOf(list, subscriber); - if (!(i >= 0)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - if (n === 1) - return null; - var update = Kotlin.newArray(n - 1 | 0, null); - arraycopy(list, 0, update, 0, i); - arraycopy(list, i + 1 | 0, update, i, n - i - 1 | 0); - return Kotlin.isArray(tmp$ = update) ? tmp$ : throwCCE(); -}; - ConflatedBroadcastChannel.prototype.close_dbl4no$$default = function(cause) { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$, tmp$_0; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed)) - return false; - else if (Kotlin.isType(state, ConflatedBroadcastChannel$State)) { - var update = cause == null ? ConflatedBroadcastChannel$Companion_getInstance().CLOSED_0 : new ConflatedBroadcastChannel$Closed(cause); - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) { - if ((tmp$_0 = (Kotlin.isType(tmp$ = state, ConflatedBroadcastChannel$State) ? tmp$ : throwCCE()).subscribers) != null) { - var tmp$_1; - for (tmp$_1 = 0; tmp$_1 !== tmp$_0.length; ++tmp$_1) { - var element = tmp$_0[tmp$_1]; - element.close_dbl4no$(cause); - } - } - this.invokeOnCloseHandler_0(cause); - return true; - } - } else { - throw IllegalStateException_init(('Invalid state ' + state.toString()).toString()); - } - } -}; - ConflatedBroadcastChannel.prototype.invokeOnCloseHandler_0 = function(cause) { - var tmp$; - var handler = this.onCloseHandler_0; - if (handler !== null && handler !== HANDLER_INVOKED && (function(scope) {return scope.onCloseHandler_0 === handler ? function() {scope.onCloseHandler_0 = HANDLER_INVOKED;return true;}() : false})(this)) { - (typeof (tmp$ = handler) === 'function' ? tmp$ : throwCCE())(cause); - } -}; - ConflatedBroadcastChannel.prototype.invokeOnClose_f05bi3$ = function(handler) { - if (!(function(scope) {return scope.onCloseHandler_0 == null ? function() {scope.onCloseHandler_0 = handler;return true;}() : false})(this)) { - var value = this.onCloseHandler_0; - if (value === HANDLER_INVOKED) { - throw IllegalStateException_init('Another handler was already registered and successfully invoked'); - } else { - throw IllegalStateException_init('Another handler was already registered: ' + toString(value)); - } - } else { - var state = this._state_0; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed) && (function(scope) {return scope.onCloseHandler_0 === handler ? function() {scope.onCloseHandler_0 = HANDLER_INVOKED;return true;}() : false})(this)) { - handler(state.closeCause); - } - } -}; - ConflatedBroadcastChannel.prototype.cancel_dbl4no$$default = function(cause) { - return this.close_dbl4no$(cause); -}; - ConflatedBroadcastChannel.prototype.send_11rb$ = function(element, continuation) { - var tmp$; - if ((tmp$ = this.offerInternal_0(element)) != null) { - throw tmp$.sendException; - } -}; - ConflatedBroadcastChannel.prototype.offer_11rb$ = function(element) { - var tmp$; - if ((tmp$ = this.offerInternal_0(element)) != null) { - throw tmp$.sendException; - } - return true; -}; - ConflatedBroadcastChannel.prototype.offerInternal_0 = function(element) { - if (!(function(scope) {return scope._updating_0 === 0 ? function() {scope._updating_0 = 1;return true;}() : false})(this)) - return null; - try { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$, tmp$_0; - if (Kotlin.isType(state, ConflatedBroadcastChannel$Closed)) - return state; - else if (Kotlin.isType(state, ConflatedBroadcastChannel$State)) { - var update = new ConflatedBroadcastChannel$State(element, (Kotlin.isType(tmp$ = state, ConflatedBroadcastChannel$State) ? tmp$ : throwCCE()).subscribers); - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) { - if ((tmp$_0 = state.subscribers) != null) { - var tmp$_1; - for (tmp$_1 = 0; tmp$_1 !== tmp$_0.length; ++tmp$_1) { - var element_0 = tmp$_0[tmp$_1]; - element_0.offerInternal_11rb$(element); - } - } - return null; - } - } else { - throw IllegalStateException_init(('Invalid state ' + state.toString()).toString()); - } - } - } finally { - this._updating_0 = 0; - } -}; - function ConflatedBroadcastChannel$get_ConflatedBroadcastChannel$onSend$ObjectLiteral(this$ConflatedBroadcastChannel) { - this.this$ConflatedBroadcastChannel = this$ConflatedBroadcastChannel; - } - ConflatedBroadcastChannel$get_ConflatedBroadcastChannel$onSend$ObjectLiteral.prototype.registerSelectClause2_rol3se$ = function(select, param, block) { - this.this$ConflatedBroadcastChannel.registerSelectSend_0(select, param, block); -}; - ConflatedBroadcastChannel$get_ConflatedBroadcastChannel$onSend$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [SelectClause2]}; - Object.defineProperty(ConflatedBroadcastChannel.prototype, 'onSend', { - get: function() { - return new ConflatedBroadcastChannel$get_ConflatedBroadcastChannel$onSend$ObjectLiteral(this); -}}); - ConflatedBroadcastChannel.prototype.registerSelectSend_0 = function(select, element, block) { - var tmp$; - if (!select.trySelect_s8jyv4$(null)) - return; - if ((tmp$ = this.offerInternal_0(element)) != null) { - select.resumeSelectCancellableWithException_tcv7n7$(tmp$.sendException); - return; - } - startCoroutineUnintercepted_0(block, this, select.completion); -}; - function ConflatedBroadcastChannel$Subscriber(broadcastChannel) { - ConflatedChannel.call(this); - this.broadcastChannel_0 = broadcastChannel; - } - ConflatedBroadcastChannel$Subscriber.prototype.cancel_dbl4no$$default = function(cause) { - var $receiver = this.close_dbl4no$(cause); - if ($receiver) - this.broadcastChannel_0.closeSubscriber_0(this); - return $receiver; -}; - ConflatedBroadcastChannel$Subscriber.prototype.offerInternal_11rb$ = function(element) { - return ConflatedChannel.prototype.offerInternal_11rb$.call(this, element); -}; - ConflatedBroadcastChannel$Subscriber.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Subscriber', - interfaces: [ConflatedChannel, ReceiveChannel]}; - ConflatedBroadcastChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ConflatedBroadcastChannel', - interfaces: [BroadcastChannel]}; - function ConflatedBroadcastChannel_init(value, $this) { - $this = $this || Object.create(ConflatedBroadcastChannel.prototype); - ConflatedBroadcastChannel.call($this); - $this._state_0 = new ConflatedBroadcastChannel$State(value, null); - return $this; - } - function ConflatedChannel() { - AbstractChannel.call(this); - } - Object.defineProperty(ConflatedChannel.prototype, 'isBufferAlwaysEmpty', { - get: function() { - return true; -}}); - Object.defineProperty(ConflatedChannel.prototype, 'isBufferEmpty', { - get: function() { - return true; -}}); - Object.defineProperty(ConflatedChannel.prototype, 'isBufferAlwaysFull', { - get: function() { - return false; -}}); - Object.defineProperty(ConflatedChannel.prototype, 'isBufferFull', { - get: function() { - return false; -}}); - ConflatedChannel.prototype.onClosedIdempotent_l2j9rm$ = function(closed) { - this.conflatePreviousSendBuffered_0(closed); -}; - ConflatedChannel.prototype.offerInternal_11rb$ = function(element) { - while (true) { - var result = AbstractChannel.prototype.offerInternal_11rb$.call(this, element); - if (result === OFFER_SUCCESS) - return OFFER_SUCCESS; - else if (result === OFFER_FAILED) { - var sendResult = this.sendConflated_0(element); - if (sendResult == null) - return OFFER_SUCCESS; - else if (Kotlin.isType(sendResult, Closed)) { - this.conflatePreviousSendBuffered_0(sendResult); - return sendResult; - } - } else if (Kotlin.isType(result, Closed)) { - this.conflatePreviousSendBuffered_0(result); - return result; - } else { - throw IllegalStateException_init(('Invalid offerInternal result ' + result.toString()).toString()); - } - } -}; - ConflatedChannel.prototype.offerSelectInternal_ys5ufj$ = function(element, select) { - var tmp$; - while (true) { - var result = this.hasReceiveOrClosed_0 ? AbstractChannel.prototype.offerSelectInternal_ys5ufj$.call(this, element, select) : (tmp$ = select.performAtomicTrySelect_6q0pxr$(this.describeSendConflated_0(element))) != null ? tmp$ : OFFER_SUCCESS; - if (result === ALREADY_SELECTED) - return ALREADY_SELECTED; - else if (result === OFFER_SUCCESS) - return OFFER_SUCCESS; - else if (result !== OFFER_FAILED) - if (Kotlin.isType(result, Closed)) { - this.conflatePreviousSendBuffered_0(result); - return result; - } else { - throw IllegalStateException_init(('Invalid result ' + result.toString()).toString()); - } - } -}; - ConflatedChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ConflatedChannel', - interfaces: [AbstractChannel]}; - function LinkedListChannel() { - AbstractChannel.call(this); - } - Object.defineProperty(LinkedListChannel.prototype, 'isBufferAlwaysEmpty', { - get: function() { - return true; -}}); - Object.defineProperty(LinkedListChannel.prototype, 'isBufferEmpty', { - get: function() { - return true; -}}); - Object.defineProperty(LinkedListChannel.prototype, 'isBufferAlwaysFull', { - get: function() { - return false; -}}); - Object.defineProperty(LinkedListChannel.prototype, 'isBufferFull', { - get: function() { - return false; -}}); - LinkedListChannel.prototype.offerInternal_11rb$ = function(element) { - while (true) { - var result = AbstractChannel.prototype.offerInternal_11rb$.call(this, element); - if (result === OFFER_SUCCESS) - return OFFER_SUCCESS; - else if (result === OFFER_FAILED) { - var sendResult = this.sendBuffered_0(element); - if (sendResult == null) - return OFFER_SUCCESS; - else if (Kotlin.isType(sendResult, Closed)) - return sendResult; - } else if (Kotlin.isType(result, Closed)) - return result; - else { - throw IllegalStateException_init(('Invalid offerInternal result ' + result.toString()).toString()); - } - } -}; - LinkedListChannel.prototype.offerSelectInternal_ys5ufj$ = function(element, select) { - var tmp$; - while (true) { - var result = this.hasReceiveOrClosed_0 ? AbstractChannel.prototype.offerSelectInternal_ys5ufj$.call(this, element, select) : (tmp$ = select.performAtomicTrySelect_6q0pxr$(this.describeSendBuffered_0(element))) != null ? tmp$ : OFFER_SUCCESS; - if (result === ALREADY_SELECTED) - return ALREADY_SELECTED; - else if (result === OFFER_SUCCESS) - return OFFER_SUCCESS; - else if (result !== OFFER_FAILED) - if (Kotlin.isType(result, Closed)) - return result; - else { - throw IllegalStateException_init(('Invalid result ' + result.toString()).toString()); - } - } -}; - LinkedListChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LinkedListChannel', - interfaces: [AbstractChannel]}; - function ProducerScope() { - } - ProducerScope.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'ProducerScope', - interfaces: [SendChannel, CoroutineScope]}; - function produce($receiver, context, capacity, block) { - if (context === void 0) - context = coroutines.EmptyCoroutineContext; - if (capacity === void 0) - capacity = 0; - var channel = Channel_0(capacity); - var newContext = newCoroutineContext($receiver, context); - var coroutine = new ProducerCoroutine(newContext, channel); - coroutine.start_b5ul0p$(CoroutineStart$DEFAULT_getInstance(), coroutine, block); - return coroutine; - } - function produce_0($receiver, context, capacity, onCompletion, block) { - if (context === void 0) - context = coroutines.EmptyCoroutineContext; - if (capacity === void 0) - capacity = 0; - if (onCompletion === void 0) - onCompletion = null; - var channel = Channel_0(capacity); - var newContext = newCoroutineContext($receiver, context); - var coroutine = new ProducerCoroutine(newContext, channel); - if (onCompletion != null) - coroutine.invokeOnCompletion_f05bi3$(onCompletion); - coroutine.start_b5ul0p$(CoroutineStart$DEFAULT_getInstance(), coroutine, block); - return coroutine; - } - function ProducerCoroutine(parentContext, channel) { - ChannelCoroutine.call(this, parentContext, channel, true); - } - Object.defineProperty(ProducerCoroutine.prototype, 'isActive', { - get: function() { - return Kotlin.callGetter(this, ChannelCoroutine.prototype, 'isActive'); -}}); - ProducerCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - var tmp$, tmp$_0; - var cause = (tmp$_0 = Kotlin.isType(tmp$ = state, CompletedExceptionally) ? tmp$ : null) != null ? tmp$_0.cause : null; - var processed = this._channel_0.close_dbl4no$(cause); - if (cause != null && !processed && suppressed) - handleExceptionViaHandler(this.context, cause); -}; - ProducerCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ProducerCoroutine', - interfaces: [ProducerScope, ChannelCoroutine]}; - function RendezvousChannel() { - AbstractChannel.call(this); - } - Object.defineProperty(RendezvousChannel.prototype, 'isBufferAlwaysEmpty', { - get: function() { - return true; -}}); - Object.defineProperty(RendezvousChannel.prototype, 'isBufferEmpty', { - get: function() { - return true; -}}); - Object.defineProperty(RendezvousChannel.prototype, 'isBufferAlwaysFull', { - get: function() { - return true; -}}); - Object.defineProperty(RendezvousChannel.prototype, 'isBufferFull', { - get: function() { - return true; -}}); - RendezvousChannel.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'RendezvousChannel', - interfaces: [AbstractChannel]}; - function ArrayQueue() { - this.elements_0 = Kotlin.newArray(16, null); - this.head_0 = 0; - this.tail_0 = 0; - } - Object.defineProperty(ArrayQueue.prototype, 'isEmpty', { - get: function() { - return this.head_0 === this.tail_0; -}}); - ArrayQueue.prototype.addLast_trkh7z$ = function(element) { - this.elements_0[this.tail_0] = element; - this.tail_0 = this.tail_0 + 1 & this.elements_0.length - 1; - if (this.tail_0 === this.head_0) - this.ensureCapacity_0(); -}; - ArrayQueue.prototype.removeFirstOrNull = function() { - var tmp$; - if (this.head_0 === this.tail_0) - return null; - var element = this.elements_0[this.head_0]; - this.elements_0[this.head_0] = null; - this.head_0 = this.head_0 + 1 & this.elements_0.length - 1; - return Kotlin.isType(tmp$ = element, Any) ? tmp$ : throwCCE(); -}; - ArrayQueue.prototype.clear = function() { - this.head_0 = 0; - this.tail_0 = 0; - this.elements_0 = Kotlin.newArray(this.elements_0.length, null); -}; - ArrayQueue.prototype.ensureCapacity_0 = function() { - var currentSize = this.elements_0.length; - var newCapacity = currentSize << 1; - var newElements = Kotlin.newArray(newCapacity, null); - var remaining = this.elements_0.length - this.head_0 | 0; - arraycopy(this.elements_0, this.head_0, newElements, 0, remaining); - arraycopy(this.elements_0, 0, newElements, remaining, this.head_0); - this.elements_0 = newElements; - this.head_0 = 0; - this.tail_0 = currentSize; -}; - ArrayQueue.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ArrayQueue', - interfaces: []}; - function OpDescriptor() { - } - OpDescriptor.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'OpDescriptor', - interfaces: []}; - var NO_DECISION; - function AtomicOp() { - OpDescriptor.call(this); - this._consensus_c6dvpx$_0 = NO_DECISION; - } - Object.defineProperty(AtomicOp.prototype, 'isDecided', { - get: function() { - return this._consensus_c6dvpx$_0 !== NO_DECISION; -}}); - AtomicOp.prototype.tryDecide_s8jyv4$ = function(decision) { - if (!(decision !== NO_DECISION)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - return (function(scope) {return scope._consensus_c6dvpx$_0 === NO_DECISION ? function() {scope._consensus_c6dvpx$_0 = decision;return true;}() : false})(this); -}; - AtomicOp.prototype.decide_xphakb$_0 = function(decision) { - return this.tryDecide_s8jyv4$(decision) ? decision : this._consensus_c6dvpx$_0; -}; - AtomicOp.prototype.perform_s8jyv4$ = function(affected) { - var tmp$, tmp$_0; - var decision = this._consensus_c6dvpx$_0; - if (decision === NO_DECISION) { - decision = this.decide_xphakb$_0(this.prepare_11rb$((tmp$ = affected) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE())); - } - this.complete_19pj23$((tmp$_0 = affected) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(), decision); - return decision; -}; - AtomicOp.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AtomicOp', - interfaces: [OpDescriptor]}; - function AtomicDesc() { - } - AtomicDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AtomicDesc', - interfaces: []}; - function MainDispatcherFactory() { - } - MainDispatcherFactory.prototype.hintOnError = function() { - return null; -}; - MainDispatcherFactory.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'MainDispatcherFactory', - interfaces: []}; - function ScopeCoroutine(context, uCont) { - AbstractCoroutine.call(this, context, true); - this.uCont = uCont; - } - Object.defineProperty(ScopeCoroutine.prototype, 'callerFrame', { - get: function() { - var tmp$; - return (tmp$ = this.uCont) == null || Kotlin.isType(tmp$, CoroutineStackFrame) ? tmp$ : throwCCE(); -}}); - ScopeCoroutine.prototype.getStackTraceElement = function() { - return null; -}; - Object.defineProperty(ScopeCoroutine.prototype, 'defaultResumeMode', { - get: function() { - return 2; -}}); - ScopeCoroutine.prototype.onCompletionInternal_5apgvt$ = function(state, mode, suppressed) { - var tmp$; - if (Kotlin.isType(state, CompletedExceptionally)) { - var exception = mode === 4 ? state.cause : recoverStackTrace(state.cause, this.uCont); - resumeUninterceptedWithExceptionMode(this.uCont, exception, mode); - } else { - resumeUninterceptedMode(this.uCont, (tmp$ = state) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(), mode); - } -}; - ScopeCoroutine.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ScopeCoroutine', - interfaces: [CoroutineStackFrame, AbstractCoroutine]}; - function tryRecover($receiver, exception) { - var tmp$, tmp$_0, tmp$_1; - tmp$_1 = (tmp$_0 = Kotlin.isType(tmp$ = $receiver, ScopeCoroutine) ? tmp$ : null) != null ? tmp$_0.uCont : null; - if (tmp$_1 == null) { - return exception; - } - var cont = tmp$_1; - return recoverStackTrace(exception, cont); - } - function ContextScope(context) { - this.coroutineContext_glfhxt$_0 = context; - } - Object.defineProperty(ContextScope.prototype, 'coroutineContext', { - get: function() { - return this.coroutineContext_glfhxt$_0; -}}); - ContextScope.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ContextScope', - interfaces: [CoroutineScope]}; - function NonRecoverableThrowable() { - } - NonRecoverableThrowable.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'NonRecoverableThrowable', - interfaces: []}; - function Symbol(symbol) { - this.symbol = symbol; - } - Symbol.prototype.toString = function() { - return this.symbol; -}; - Symbol.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Symbol', - interfaces: []}; - function startCoroutineCancellable($receiver, completion) { - try { - resumeCancellable(intercepted(createCoroutineUnintercepted($receiver, completion)), Unit); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - completion.resumeWith_tl1gpc$(new Result(createFailure(e))); - } else - throw e; -} - } - function startCoroutineCancellable_0($receiver, receiver, completion) { - try { - resumeCancellable(intercepted(createCoroutineUnintercepted_0($receiver, receiver, completion)), Unit); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - completion.resumeWith_tl1gpc$(new Result(createFailure(e))); - } else - throw e; -} - } - var runSafely = wrapFunction(function() { - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - var Result_init = Kotlin.kotlin.Result; - return function(completion, block) { - try { - block(); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - completion.resumeWith_tl1gpc$(new Result_init(createFailure(e))); - } else - throw e; -} -}; -}); - function startCoroutineUnintercepted($receiver, completion) { - startDirect$break: - do { - var tmp$, tmp$_0; - var actualCompletion = completion; - try { - tmp$ = $receiver(actualCompletion, false); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - var exception = e; - actualCompletion.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break startDirect$break; - } else - throw e; -} - var value = tmp$; - if (value !== COROUTINE_SUSPENDED) { - var value_0 = (tmp$_0 = value) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - actualCompletion.resumeWith_tl1gpc$(new Result(value_0)); - } - } while (false); - } - function startCoroutineUnintercepted_0($receiver, receiver, completion) { - startDirect$break: - do { - var tmp$, tmp$_0; - var actualCompletion = completion; - try { - tmp$ = $receiver(receiver, actualCompletion, false); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - var exception = e; - actualCompletion.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break startDirect$break; - } else - throw e; -} - var value = tmp$; - if (value !== COROUTINE_SUSPENDED) { - var value_0 = (tmp$_0 = value) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - actualCompletion.resumeWith_tl1gpc$(new Result(value_0)); - } - } while (false); - } - function startCoroutineUndispatched($receiver, completion) { - startDirect$break: - do { - var tmp$, tmp$_0; - var actualCompletion = completion; - try { - completion.context; - tmp$ = $receiver(actualCompletion, false); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - var exception = e; - actualCompletion.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break startDirect$break; - } else - throw e; -} - var value = tmp$; - if (value !== COROUTINE_SUSPENDED) { - var value_0 = (tmp$_0 = value) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - actualCompletion.resumeWith_tl1gpc$(new Result(value_0)); - } - } while (false); - } - function startCoroutineUndispatched_0($receiver, receiver, completion) { - startDirect$break: - do { - var tmp$, tmp$_0; - var actualCompletion = completion; - try { - completion.context; - tmp$ = $receiver(receiver, actualCompletion, false); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - var exception = e; - actualCompletion.resumeWith_tl1gpc$(new Result(createFailure(exception))); - break startDirect$break; - } else - throw e; -} - var value = tmp$; - if (value !== COROUTINE_SUSPENDED) { - var value_0 = (tmp$_0 = value) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - actualCompletion.resumeWith_tl1gpc$(new Result(value_0)); - } - } while (false); - } - var startDirect = wrapFunction(function() { - var Result = Kotlin.kotlin.Result; - var createFailure = Kotlin.kotlin.createFailure_tcv7n7$; - return function(completion, block) { - var tmp$, tmp$_0; - var actualCompletion = completion; - try { - tmp$ = block(actualCompletion); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - var exception = e; - actualCompletion.resumeWith_tl1gpc$(new Result(createFailure(exception))); - return; - } else - throw e; -} - var value = tmp$; - if (value !== COROUTINE_SUSPENDED) { - var value_0 = (tmp$_0 = value) == null || Kotlin.isType(tmp$_0, Any) ? tmp$_0 : throwCCE(); - actualCompletion.resumeWith_tl1gpc$(new Result(value_0)); - } -}; -}); - function startUndispatchedOrReturn($receiver, receiver, block) { - $receiver.initParentJob_8be2vx$(); - var tmp$, tmp$_0; - try { - tmp$ = block(receiver, $receiver, false); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$ = new CompletedExceptionally(e); - } else - throw e; -} - var result = tmp$; - if (result === COROUTINE_SUSPENDED) - tmp$_0 = COROUTINE_SUSPENDED; - else if ($receiver.makeCompletingOnce_42w2xh$(result, 4)) { - var state = $receiver.state_8be2vx$; - if (Kotlin.isType(state, CompletedExceptionally)) { - if (true) - throw tryRecover($receiver, state.cause); - else if (Kotlin.isType(result, CompletedExceptionally)) - throw tryRecover($receiver, result.cause); - else - tmp$_0 = result; - } else { - tmp$_0 = unboxState(state); - } - } else - tmp$_0 = COROUTINE_SUSPENDED; - return tmp$_0; - } - function startUndispatchedOrReturnIgnoreTimeout($receiver, receiver, block) { - $receiver.initParentJob_8be2vx$(); - var tmp$, tmp$_0; - try { - tmp$ = block(receiver, $receiver, false); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$ = new CompletedExceptionally(e); - } else - throw e; -} - var result = tmp$; - if (result === COROUTINE_SUSPENDED) - tmp$_0 = COROUTINE_SUSPENDED; - else if ($receiver.makeCompletingOnce_42w2xh$(result, 4)) { - var state = $receiver.state_8be2vx$; - if (Kotlin.isType(state, CompletedExceptionally)) { - var e_0 = state.cause; - if (!(Kotlin.isType(e_0, TimeoutCancellationException) && e_0.coroutine_8be2vx$ === $receiver)) - throw tryRecover($receiver, state.cause); - else if (Kotlin.isType(result, CompletedExceptionally)) - throw tryRecover($receiver, result.cause); - else - tmp$_0 = result; - } else { - tmp$_0 = unboxState(state); - } - } else - tmp$_0 = COROUTINE_SUSPENDED; - return tmp$_0; - } - function undispatchedResult($receiver, shouldThrow, startBlock) { - var tmp$, tmp$_0; - try { - tmp$ = startBlock(); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - tmp$ = new CompletedExceptionally(e); - } else - throw e; -} - var result = tmp$; - if (result === COROUTINE_SUSPENDED) - tmp$_0 = COROUTINE_SUSPENDED; - else if ($receiver.makeCompletingOnce_42w2xh$(result, 4)) { - var state = $receiver.state_8be2vx$; - if (Kotlin.isType(state, CompletedExceptionally)) { - if (shouldThrow(state.cause)) - throw tryRecover($receiver, state.cause); - else if (Kotlin.isType(result, CompletedExceptionally)) - throw tryRecover($receiver, result.cause); - else - tmp$_0 = result; - } else { - tmp$_0 = unboxState(state); - } - } else - tmp$_0 = COROUTINE_SUSPENDED; - return tmp$_0; - } - function SelectBuilder() { - } - SelectBuilder.prototype.invoke_en0wgx$ = function($receiver, block) { - this.invoke_ha2bmj$($receiver, null, block); -}; - SelectBuilder.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'SelectBuilder', - interfaces: []}; - function SelectClause0() { - } - SelectClause0.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'SelectClause0', - interfaces: []}; - function SelectClause1() { - } - SelectClause1.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'SelectClause1', - interfaces: []}; - function SelectClause2() { - } - SelectClause2.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'SelectClause2', - interfaces: []}; - function SelectInstance() { - } - SelectInstance.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'SelectInstance', - interfaces: []}; - function select$lambda(closure$builder) { - return function(uCont) { - var scope = new SelectBuilderImpl(uCont); - try { - closure$builder(scope); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - scope.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - return scope.getResult(); -}; - } - function select(builder_0, continuation) { - return select$lambda(builder_0)(continuation); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.selects.select_wd2ujs$', wrapFunction(function() { - var SelectBuilderImpl_init = _.kotlinx.coroutines.selects.SelectBuilderImpl; - var Throwable = Error; - function select$lambda(closure$builder) { - return function(uCont) { - var scope = new SelectBuilderImpl_init(uCont); - try { - closure$builder(scope); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - scope.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - return scope.getResult(); -}; - } - return function(builder_0, continuation) { - Kotlin.suspendCall(select$lambda(builder_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - var ALREADY_SELECTED; - var UNDECIDED_1; - var RESUMED_1; - function SelectBuilderImpl(uCont) { - LinkedListHead.call(this); - this.uCont_0 = uCont; - this._state_0 = this; - this._result_0 = UNDECIDED_1; - this.parentHandle_0 = null; - } - Object.defineProperty(SelectBuilderImpl.prototype, 'context', { - get: function() { - return this.uCont_0.context; -}}); - Object.defineProperty(SelectBuilderImpl.prototype, 'completion', { - get: function() { - return this; -}}); - SelectBuilderImpl.prototype.doResume_0 = wrapFunction(function() { - var IllegalStateException_init_0 = Kotlin.kotlin.IllegalStateException_init_pdl1vj$; - return function(value, block) { - if (!this.isSelected) { - var message = 'Must be selected first'; - throw IllegalStateException_init_0(message.toString()); - } - var $receiver = this._result_0; - while (true) { - var result = this._result_0; - if (result === UNDECIDED_1) { - if ((function(scope) {return scope._result_0 === UNDECIDED_1 ? function() {scope._result_0 = value();return true;}() : false})(this)) - return; - } else if (result === COROUTINE_SUSPENDED) { - if ((function(scope) {return scope._result_0 === COROUTINE_SUSPENDED ? function() {scope._result_0 = RESUMED_1;return true;}() : false})(this)) { - block(); - return; - } - } else - throw IllegalStateException_init('Already resumed'); - } -}; -}); - SelectBuilderImpl.prototype.resumeWith_tl1gpc$ = function(result) { - doResume_0$break: - do { - if (!this.isSelected) { - var message = 'Must be selected first'; - throw IllegalStateException_init(message.toString()); - } - var $receiver = this._result_0; - while (true) { - var result_0 = this._result_0; - if (result_0 === UNDECIDED_1) { - if ((function(scope) {return scope._result_0 === UNDECIDED_1 ? function() {scope._result_0 = toState(result);return true;}() : false})(this)) - break doResume_0$break; - } else if (result_0 === COROUTINE_SUSPENDED) { - if ((function(scope) {return scope._result_0 === COROUTINE_SUSPENDED ? function() {scope._result_0 = RESUMED_1;return true;}() : false})(this)) { - this.uCont_0.resumeWith_tl1gpc$(result); - break doResume_0$break; - } - } else - throw IllegalStateException_init('Already resumed'); - } - } while (false); -}; - SelectBuilderImpl.prototype.resumeSelectCancellableWithException_tcv7n7$ = function(exception) { - doResume_0$break: - do { - if (!this.isSelected) { - var message = 'Must be selected first'; - throw IllegalStateException_init(message.toString()); - } - var $receiver = this._result_0; - while (true) { - var result = this._result_0; - if (result === UNDECIDED_1) { - if ((function(scope) {return scope._result_0 === UNDECIDED_1 ? function() {scope._result_0 = new CompletedExceptionally(exception);return true;}() : false})(this)) - break doResume_0$break; - } else if (result === COROUTINE_SUSPENDED) { - if ((function(scope) {return scope._result_0 === COROUTINE_SUSPENDED ? function() {scope._result_0 = RESUMED_1;return true;}() : false})(this)) { - resumeCancellableWithException(intercepted(this.uCont_0), exception); - break doResume_0$break; - } - } else - throw IllegalStateException_init('Already resumed'); - } - } while (false); -}; - SelectBuilderImpl.prototype.getResult = function() { - if (!this.isSelected) - this.initCancellability_0(); - var result = this._result_0; - if (result === UNDECIDED_1) { - if ((function(scope) {return scope._result_0 === UNDECIDED_1 ? function() {scope._result_0 = COROUTINE_SUSPENDED;return true;}() : false})(this)) - return COROUTINE_SUSPENDED; - result = this._result_0; - } - if (result === RESUMED_1) - throw IllegalStateException_init('Already resumed'); - else if (Kotlin.isType(result, CompletedExceptionally)) - throw result.cause; - else - return result; -}; - SelectBuilderImpl.prototype.initCancellability_0 = function() { - var tmp$; - tmp$ = this.context.get_j3r2sn$(Job$Key_getInstance()); - if (tmp$ == null) { - return; - } - var parent = tmp$; - var newRegistration = parent.invokeOnCompletion_ct2b2z$(true, void 0, new SelectBuilderImpl$SelectOnCancelling(this, parent)); - this.parentHandle_0 = newRegistration; - if (this.isSelected) - newRegistration.dispose(); -}; - function SelectBuilderImpl$SelectOnCancelling($outer, job) { - this.$outer = $outer; - JobCancellingNode.call(this, job); - } - SelectBuilderImpl$SelectOnCancelling.prototype.invoke = function(cause) { - if (this.$outer.trySelect_s8jyv4$(null)) - this.$outer.resumeSelectCancellableWithException_tcv7n7$(this.job.getCancellationException()); -}; - SelectBuilderImpl$SelectOnCancelling.prototype.toString = function() { - return 'SelectOnCancelling[' + this.$outer + ']'; -}; - SelectBuilderImpl$SelectOnCancelling.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SelectOnCancelling', - interfaces: [JobCancellingNode]}; - Object.defineProperty(SelectBuilderImpl.prototype, 'state_0', { - get: function() { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - if (!Kotlin.isType(state, OpDescriptor)) - return state; - state.perform_s8jyv4$(this); - } -}}); - SelectBuilderImpl.prototype.handleBuilderException_tcv7n7$ = function(e) { - if (this.trySelect_s8jyv4$(null)) { - this.resumeWith_tl1gpc$(new Result(createFailure(e))); - } else - handleCoroutineException(this.context, e); -}; - Object.defineProperty(SelectBuilderImpl.prototype, 'isSelected', { - get: function() { - return this.state_0 !== this; -}}); - function SelectBuilderImpl$disposeOnSelect$lambda(this$SelectBuilderImpl) { - return function() { - return this$SelectBuilderImpl.state_0 === this$SelectBuilderImpl; -}; - } - SelectBuilderImpl.prototype.disposeOnSelect_rvfg84$ = function(handle) { - var node = new SelectBuilderImpl$DisposeNode(handle); - loop_label: - while (true) { - var state = this.state_0; - if (state === this) { - var addLastIf_w327v9$result; - addLastIf_w327v9$break: - do { - if (!SelectBuilderImpl$disposeOnSelect$lambda(this)()) { - addLastIf_w327v9$result = false; - break addLastIf_w327v9$break; - } - this.addLast_l2j9rm$(node); - addLastIf_w327v9$result = true; - } while (false); - if (addLastIf_w327v9$result) - return; - } else { - handle.dispose(); - return; - } - } -}; - SelectBuilderImpl.prototype.doAfterSelect_0 = function() { - var tmp$; - (tmp$ = this.parentHandle_0) != null ? (tmp$.dispose() , Unit) : null; - var cur = this._next; - while (!equals(cur, this)) { - if (Kotlin.isType(cur, SelectBuilderImpl$DisposeNode)) { - cur.handle.dispose(); - } - cur = cur._next; - } -}; - SelectBuilderImpl.prototype.trySelect_s8jyv4$ = function(idempotent) { - if (!!Kotlin.isType(idempotent, OpDescriptor)) { - var message = 'cannot use OpDescriptor as idempotent marker'; - throw IllegalStateException_init(message.toString()); - } - while (true) { - var state = this.state_0; - if (state === this) { - if ((function(scope) {return scope._state_0 === scope ? function() {scope._state_0 = idempotent;return true;}() : false})(this)) { - this.doAfterSelect_0(); - return true; - } - } else if (idempotent == null) - return false; - else if (state === idempotent) - return true; - else - return false; - } -}; - SelectBuilderImpl.prototype.performAtomicTrySelect_6q0pxr$ = function(desc) { - return (new SelectBuilderImpl$AtomicSelectOp(this, desc, true)).perform_s8jyv4$(null); -}; - SelectBuilderImpl.prototype.performAtomicIfNotSelected_6q0pxr$ = function(desc) { - return (new SelectBuilderImpl$AtomicSelectOp(this, desc, false)).perform_s8jyv4$(null); -}; - function SelectBuilderImpl$AtomicSelectOp($outer, desc, select) { - this.$outer = $outer; - AtomicOp.call(this); - this.desc = desc; - this.select = select; - } - SelectBuilderImpl$AtomicSelectOp.prototype.prepare_11rb$ = function(affected) { - var tmp$; - if (affected == null) { - if ((tmp$ = this.prepareIfNotSelected()) != null) { - return tmp$; - } - } - return this.desc.prepare_4uxf5b$(this); -}; - SelectBuilderImpl$AtomicSelectOp.prototype.complete_19pj23$ = function(affected, failure) { - this.completeSelect_0(failure); - this.desc.complete_ayrq83$(this, failure); -}; - SelectBuilderImpl$AtomicSelectOp.prototype.prepareIfNotSelected = function() { - var $receiver = this.$outer._state_0; - this.$outer; - while (true) { - var this$SelectBuilderImpl = this.$outer; - var state = this.$outer._state_0; - if (state === this) - return null; - else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this$SelectBuilderImpl); - else if (state === this$SelectBuilderImpl) { - if ((function(scope) {return this$SelectBuilderImpl._state_0 === this$SelectBuilderImpl ? function() {this$SelectBuilderImpl._state_0 = scope;return true;}() : false})(this)) - return null; - } else - return ALREADY_SELECTED; - } -}; - SelectBuilderImpl$AtomicSelectOp.prototype.completeSelect_0 = function(failure) { - var selectSuccess = this.select && failure == null; - var update = selectSuccess ? null : this.$outer; - if ((function(scope) {return scope.$outer._state_0 === scope ? function() {scope.$outer._state_0 = update;return true;}() : false})(this)) { - if (selectSuccess) - this.$outer.doAfterSelect_0(); - } -}; - SelectBuilderImpl$AtomicSelectOp.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AtomicSelectOp', - interfaces: [AtomicOp]}; - SelectBuilderImpl.prototype.invoke_nd4vgy$ = function($receiver, block) { - $receiver.registerSelectClause0_s9h9qd$(this, block); -}; - SelectBuilderImpl.prototype.invoke_veq140$ = function($receiver, block) { - $receiver.registerSelectClause1_o3xas4$(this, block); -}; - SelectBuilderImpl.prototype.invoke_ha2bmj$ = function($receiver, param, block) { - $receiver.registerSelectClause2_rol3se$(this, param, block); -}; - function SelectBuilderImpl$onTimeout$lambda(this$SelectBuilderImpl, closure$block) { - return function() { - if (this$SelectBuilderImpl.trySelect_s8jyv4$(null)) - startCoroutineCancellable(closure$block, this$SelectBuilderImpl.completion); - return Unit; -}; - } - function Runnable$ObjectLiteral(closure$block) { - this.closure$block = closure$block; - } - Runnable$ObjectLiteral.prototype.run = function() { - this.closure$block(); -}; - Runnable$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [Runnable]}; - SelectBuilderImpl.prototype.onTimeout_7xvrws$ = function(timeMillis, block) { - if (timeMillis.compareTo_11rb$(L0) <= 0) { - if (this.trySelect_s8jyv4$(null)) - startCoroutineUnintercepted(block, this.completion); - return; - } - var action = new Runnable$ObjectLiteral(SelectBuilderImpl$onTimeout$lambda(this, block)); - this.disposeOnSelect_rvfg84$(get_delay(this.context).invokeOnTimeout_8irseu$(timeMillis, action)); -}; - function SelectBuilderImpl$DisposeNode(handle) { - LinkedListNode.call(this); - this.handle = handle; - } - SelectBuilderImpl$DisposeNode.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DisposeNode', - interfaces: [LinkedListNode]}; - SelectBuilderImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SelectBuilderImpl', - interfaces: [Continuation, SelectInstance, SelectBuilder, LinkedListHead]}; - function selectUnbiased$lambda(closure$builder) { - return function(uCont) { - var scope = new UnbiasedSelectBuilderImpl(uCont); - try { - closure$builder(scope); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - scope.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - return scope.initSelectResult(); -}; - } - function selectUnbiased(builder_0, continuation) { - return selectUnbiased$lambda(builder_0)(continuation); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.selects.selectUnbiased_wd2ujs$', wrapFunction(function() { - var UnbiasedSelectBuilderImpl_init = _.kotlinx.coroutines.selects.UnbiasedSelectBuilderImpl; - var Throwable = Error; - function selectUnbiased$lambda(closure$builder) { - return function(uCont) { - var scope = new UnbiasedSelectBuilderImpl_init(uCont); - try { - closure$builder(scope); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - scope.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - return scope.initSelectResult(); -}; - } - return function(builder_0, continuation) { - Kotlin.suspendCall(selectUnbiased$lambda(builder_0)(Kotlin.coroutineReceiver())); - return Kotlin.coroutineResult(Kotlin.coroutineReceiver()); -}; -})); - function UnbiasedSelectBuilderImpl(uCont) { - this.instance = new SelectBuilderImpl(uCont); - this.clauses = ArrayList_init_0(); - } - UnbiasedSelectBuilderImpl.prototype.handleBuilderException_tcv7n7$ = function(e) { - this.instance.handleBuilderException_tcv7n7$(e); -}; - UnbiasedSelectBuilderImpl.prototype.initSelectResult = function() { - if (!this.instance.isSelected) { - try { - shuffle(this.clauses); - var tmp$; - tmp$ = this.clauses.iterator(); - while (tmp$.hasNext()) { - var element = tmp$.next(); - element(); - } - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - this.instance.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - } - return this.instance.getResult(); -}; - function UnbiasedSelectBuilderImpl$invoke$lambda(this$UnbiasedSelectBuilderImpl, closure$block, this$invoke) { - return function() { - this$invoke.registerSelectClause0_s9h9qd$(this$UnbiasedSelectBuilderImpl.instance, closure$block); - return Unit; -}; - } - UnbiasedSelectBuilderImpl.prototype.invoke_nd4vgy$ = function($receiver, block) { - this.clauses.add_11rb$(UnbiasedSelectBuilderImpl$invoke$lambda(this, block, $receiver)); -}; - function UnbiasedSelectBuilderImpl$invoke$lambda_0(this$UnbiasedSelectBuilderImpl, closure$block, this$invoke) { - return function() { - this$invoke.registerSelectClause1_o3xas4$(this$UnbiasedSelectBuilderImpl.instance, closure$block); - return Unit; -}; - } - UnbiasedSelectBuilderImpl.prototype.invoke_veq140$ = function($receiver, block) { - this.clauses.add_11rb$(UnbiasedSelectBuilderImpl$invoke$lambda_0(this, block, $receiver)); -}; - function UnbiasedSelectBuilderImpl$invoke$lambda_1(this$UnbiasedSelectBuilderImpl, closure$param, closure$block, this$invoke) { - return function() { - this$invoke.registerSelectClause2_rol3se$(this$UnbiasedSelectBuilderImpl.instance, closure$param, closure$block); - return Unit; -}; - } - UnbiasedSelectBuilderImpl.prototype.invoke_ha2bmj$ = function($receiver, param, block) { - this.clauses.add_11rb$(UnbiasedSelectBuilderImpl$invoke$lambda_1(this, param, block, $receiver)); -}; - function UnbiasedSelectBuilderImpl$onTimeout$lambda(this$UnbiasedSelectBuilderImpl, closure$timeMillis, closure$block) { - return function() { - this$UnbiasedSelectBuilderImpl.instance.onTimeout_7xvrws$(closure$timeMillis, closure$block); - return Unit; -}; - } - UnbiasedSelectBuilderImpl.prototype.onTimeout_7xvrws$ = function(timeMillis, block) { - this.clauses.add_11rb$(UnbiasedSelectBuilderImpl$onTimeout$lambda(this, timeMillis, block)); -}; - UnbiasedSelectBuilderImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'UnbiasedSelectBuilderImpl', - interfaces: [SelectBuilder]}; - function select$lambda_0(closure$builder) { - return function(uCont) { - var scope = new SelectBuilderImpl(uCont); - try { - closure$builder(scope); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - scope.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - return scope.getResult(); -}; - } - function Coroutine$whileSelect(builder, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 1; - this.local$builder = builder; - } - Coroutine$whileSelect.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$whileSelect.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$whileSelect.prototype.constructor = Coroutine$whileSelect; - Coroutine$whileSelect.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.state_0 = 2; - continue; - case 1: - throw this.exception_0; - case 2: - this.state_0 = 3; - this.result_0 = select$lambda_0(this.local$builder)(this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 3: - if (!this.result_0) { - this.state_0 = 5; - continue; - } else { - this.state_0 = 4; - continue; - } - case 4: - this.state_0 = 2; - continue; - case 5: - return; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function whileSelect(builder, continuation, suspended) { - var instance = new Coroutine$whileSelect(builder, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.selects.whileSelect_vmyjlh$', wrapFunction(function() { - var SelectBuilderImpl_init = _.kotlinx.coroutines.selects.SelectBuilderImpl; - var Throwable = Error; - function select$lambda(closure$builder) { - return function(uCont) { - var scope = new SelectBuilderImpl_init(uCont); - try { - closure$builder(scope); - } catch (e) { - if (Kotlin.isType(e, Throwable)) { - scope.handleBuilderException_tcv7n7$(e); - } else - throw e; -} - return scope.getResult(); -}; - } - return function(builder, continuation) { - while (true) { - Kotlin.suspendCall(select$lambda(builder)(Kotlin.coroutineReceiver())); - if (!Kotlin.coroutineResult(Kotlin.coroutineReceiver())) - break; - } -}; -})); - function Mutex() { - } - Mutex.prototype.tryLock_s8jyv4$ = function(owner, callback$default) { - if (owner === void 0) - owner = null; - return callback$default ? callback$default(owner) : this.tryLock_s8jyv4$$default(owner); -}; - Mutex.prototype.lock_s8jyv4$ = function(owner, continuation, callback$default) { - if (owner === void 0) - owner = null; - return callback$default ? callback$default(owner, continuation) : this.lock_s8jyv4$$default(owner, continuation); -}; - Mutex.prototype.unlock_s8jyv4$ = function(owner, callback$default) { - if (owner === void 0) - owner = null; - callback$default ? callback$default(owner) : this.unlock_s8jyv4$$default(owner); -}; - Mutex.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Mutex', - interfaces: []}; - function Mutex_0(locked) { - if (locked === void 0) - locked = false; - return new MutexImpl(locked); - } - function Coroutine$withLock($receiver, owner, action, continuation) { - CoroutineImpl.call(this, continuation); - this.exceptionState_0 = 5; - this.local$$receiver = $receiver; - this.local$owner = owner; - this.local$action = action; - } - Coroutine$withLock.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$withLock.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$withLock.prototype.constructor = Coroutine$withLock; - Coroutine$withLock.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - if (this.local$owner === void 0) - this.local$owner = null; - this.state_0 = 1; - this.result_0 = this.local$$receiver.lock_s8jyv4$(this.local$owner, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - this.exceptionState_0 = 5; - this.finallyPath_0 = [3]; - this.state_0 = 4; - this.$returnValue = this.local$action(); - continue; - case 2: - this.finallyPath_0 = [5]; - this.state_0 = 4; - continue; - case 3: - return this.$returnValue; - case 4: - this.exceptionState_0 = 5; - this.local$$receiver.unlock_s8jyv4$(this.local$owner); - this.state_0 = this.finallyPath_0.shift(); - continue; - case 5: - throw this.exception_0; - case 6: - return; - default: - this.state_0 = 5; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 5) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function withLock($receiver, owner, action, continuation, suspended) { - var instance = new Coroutine$withLock($receiver, owner, action, continuation); - if (suspended) - return instance; - else - return instance.doResume(null); - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.sync.withLock_8701tb$', function($receiver, owner, action, continuation) { - if (owner === void 0) - owner = null; - Kotlin.suspendCall($receiver.lock_s8jyv4$(owner, Kotlin.coroutineReceiver())); - try { - return action(); - } finally { - $receiver.unlock_s8jyv4$(owner); - } -}); - var LOCK_FAIL; - var ENQUEUE_FAIL; - var UNLOCK_FAIL; - var SELECT_SUCCESS; - var LOCKED; - var UNLOCKED; - var EMPTY_LOCKED; - var EMPTY_UNLOCKED; - function Empty_0(locked) { - this.locked = locked; - } - Empty_0.prototype.toString = function() { - return 'Empty[' + this.locked.toString() + ']'; -}; - Empty_0.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'Empty', - interfaces: []}; - function MutexImpl(locked) { - this._state_0 = locked ? EMPTY_LOCKED : EMPTY_UNLOCKED; - } - Object.defineProperty(MutexImpl.prototype, 'isLocked', { - get: function() { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - if (Kotlin.isType(state, Empty_0)) - return state.locked !== UNLOCKED; - else if (Kotlin.isType(state, MutexImpl$LockedQueue)) - return true; - else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this); - else { - throw IllegalStateException_init(('Illegal state ' + toString(state)).toString()); - } - } -}}); - Object.defineProperty(MutexImpl.prototype, 'isLockedEmptyQueueState_8be2vx$', { - get: function() { - var state = this._state_0; - return Kotlin.isType(state, MutexImpl$LockedQueue) && state.isEmpty; -}}); - MutexImpl.prototype.tryLock_s8jyv4$$default = function(owner) { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - if (Kotlin.isType(state, Empty_0)) { - if (state.locked !== UNLOCKED) - return false; - var update = owner == null ? EMPTY_LOCKED : new Empty_0(owner); - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = update;return true;}() : false})(this)) - return true; - } else if (Kotlin.isType(state, MutexImpl$LockedQueue)) { - if (!(state.owner !== owner)) { - var message = 'Already locked by ' + toString(owner); - throw IllegalStateException_init(message.toString()); - } - return false; - } else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this); - else { - throw IllegalStateException_init(('Illegal state ' + toString(state)).toString()); - } - } -}; - MutexImpl.prototype.lock_s8jyv4$$default = function(owner, continuation) { - if (this.tryLock_s8jyv4$(owner)) - return; - return this.lockSuspend_0(owner, continuation); -}; - function MutexImpl$lockSuspend$lambda$lambda$lambda(this$MutexImpl, closure$state) { - return function() { - return this$MutexImpl._state_0 === closure$state; -}; - } - function MutexImpl$lockSuspend$lambda(closure$owner, this$MutexImpl) { - return function(cont) { - var waiter = new MutexImpl$LockCont(closure$owner, cont); - var $receiver = this$MutexImpl._state_0; - loop_label: - while (true) { - var this$MutexImpl_0 = this$MutexImpl; - var closure$owner_0 = closure$owner; - var state = this$MutexImpl._state_0; - if (Kotlin.isType(state, Empty_0)) - if (state.locked !== UNLOCKED) { - (function(scope) {return this$MutexImpl_0._state_0 === state ? function() {this$MutexImpl_0._state_0 = new MutexImpl$LockedQueue(state.locked);return true;}() : false})(this); - } else { - var update = closure$owner_0 == null ? EMPTY_LOCKED : new Empty_0(closure$owner_0); - if ((function(scope) {return this$MutexImpl_0._state_0 === state ? function() {this$MutexImpl_0._state_0 = update;return true;}() : false})(this)) { - cont.resumeWith_tl1gpc$(new Result(Unit)); - return; - } - } - else if (Kotlin.isType(state, MutexImpl$LockedQueue)) { - var curOwner = state.owner; - if (!(curOwner !== closure$owner_0)) { - var message = 'Already locked by ' + toString(closure$owner_0); - throw IllegalStateException_init(message.toString()); - } - var condition = MutexImpl$lockSuspend$lambda$lambda$lambda(this$MutexImpl_0, state); - var addLastIf_w327v9$result; - addLastIf_w327v9$break: - do { - if (!condition()) { - addLastIf_w327v9$result = false; - break addLastIf_w327v9$break; - } - state.addLast_l2j9rm$(waiter); - addLastIf_w327v9$result = true; - } while (false); - if (addLastIf_w327v9$result) { - removeOnCancellation(cont, waiter); - return; - } - } else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this$MutexImpl_0); - else { - throw IllegalStateException_init(('Illegal state ' + toString(state)).toString()); - } - } - return Unit; -}; - } - function suspendAtomicCancellableCoroutine$lambda_2(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 0); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - MutexImpl.prototype.lockSuspend_0 = function(owner, continuation) { - return suspendAtomicCancellableCoroutine$lambda_2(MutexImpl$lockSuspend$lambda(owner, this))(continuation); -}; - Object.defineProperty(MutexImpl.prototype, 'onLock', { - get: function() { - return this; -}}); - MutexImpl.prototype.registerSelectClause2_rol3se$ = function(select, owner, block) { - while (true) { - if (select.isSelected) - return; - var state = this._state_0; - if (Kotlin.isType(state, Empty_0)) - if (state.locked !== UNLOCKED) { - (function(scope) {return scope._state_0 === state ? function() {scope._state_0 = new MutexImpl$LockedQueue(state.locked);return true;}() : false})(this); - } else { - var failure = select.performAtomicTrySelect_6q0pxr$(new MutexImpl$TryLockDesc(this, owner)); - if (failure == null) { - startCoroutineUnintercepted_0(block, this, select.completion); - return; - } else if (failure === ALREADY_SELECTED) - return; - else if (failure !== LOCK_FAIL) { - throw IllegalStateException_init(('performAtomicTrySelect(TryLockDesc) returned ' + toString(failure)).toString()); - } - } - else if (Kotlin.isType(state, MutexImpl$LockedQueue)) { - if (!(state.owner !== owner)) { - var message = 'Already locked by ' + toString(owner); - throw IllegalStateException_init(message.toString()); - } - var enqueueOp = new MutexImpl$TryEnqueueLockDesc(this, owner, state, select, block); - var failure_0 = select.performAtomicIfNotSelected_6q0pxr$(enqueueOp); - if (failure_0 == null) { - select.disposeOnSelect_rvfg84$(enqueueOp.node); - return; - } else if (failure_0 === ALREADY_SELECTED) - return; - else if (failure_0 !== ENQUEUE_FAIL) { - throw IllegalStateException_init(('performAtomicIfNotSelected(TryEnqueueLockDesc) returned ' + toString(failure_0)).toString()); - } - } else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this); - else { - throw IllegalStateException_init(('Illegal state ' + toString(state)).toString()); - } - } -}; - function MutexImpl$TryLockDesc(mutex, owner) { - AtomicDesc.call(this); - this.mutex = mutex; - this.owner = owner; - } - function MutexImpl$TryLockDesc$PrepareOp($outer, op) { - this.$outer = $outer; - OpDescriptor.call(this); - this.op_0 = op; - } - MutexImpl$TryLockDesc$PrepareOp.prototype.perform_s8jyv4$ = function(affected) { - var tmp$; - var update = this.op_0.isDecided ? EMPTY_UNLOCKED : this.op_0; - (function(scope) {return (Kotlin.isType(tmp$ = affected, MutexImpl) ? tmp$ : throwCCE())._state_0 === scope ? function() {(Kotlin.isType(tmp$ = affected, MutexImpl) ? tmp$ : throwCCE())._state_0 = update;return true;}() : false})(this); - return null; -}; - MutexImpl$TryLockDesc$PrepareOp.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'PrepareOp', - interfaces: [OpDescriptor]}; - MutexImpl$TryLockDesc.prototype.prepare_4uxf5b$ = function(op) { - var prepare = new MutexImpl$TryLockDesc$PrepareOp(this, op); - if (!(function(scope) {return scope.mutex._state_0 === EMPTY_UNLOCKED ? function() {scope.mutex._state_0 = prepare;return true;}() : false})(this)) - return LOCK_FAIL; - return prepare.perform_s8jyv4$(this.mutex); -}; - MutexImpl$TryLockDesc.prototype.complete_ayrq83$ = function(op, failure) { - var tmp$; - if (failure != null) - tmp$ = EMPTY_UNLOCKED; - else { - tmp$ = this.owner == null ? EMPTY_LOCKED : new Empty_0(this.owner); - } - var update = tmp$; - (function(scope) {return scope.mutex._state_0 === op ? function() {scope.mutex._state_0 = update;return true;}() : false})(this); -}; - MutexImpl$TryLockDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TryLockDesc', - interfaces: [AtomicDesc]}; - function MutexImpl$TryEnqueueLockDesc(mutex, owner, queue, select, block) { - AddLastDesc.call(this, queue, new MutexImpl$LockSelect(owner, mutex, select, block)); - this.mutex = mutex; - } - MutexImpl$TryEnqueueLockDesc.prototype.onPrepare_bpl3tg$ = function(affected, next) { - if (this.mutex._state_0 !== this.queue) - return ENQUEUE_FAIL; - return AddLastDesc.prototype.onPrepare_bpl3tg$.call(this, affected, next); -}; - MutexImpl$TryEnqueueLockDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'TryEnqueueLockDesc', - interfaces: [AddLastDesc]}; - MutexImpl.prototype.holdsLock_za3rmp$ = function(owner) { - var state = this._state_0; - var block$result; - if (Kotlin.isType(state, Empty_0)) { - block$result = state.locked === owner; - } else if (Kotlin.isType(state, MutexImpl$LockedQueue)) { - block$result = state.owner === owner; - } else { - block$result = false; - } - return block$result; -}; - MutexImpl.prototype.unlock_s8jyv4$$default = function(owner) { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - var tmp$, tmp$_0; - if (Kotlin.isType(state, Empty_0)) { - if (owner == null) { - if (!(state.locked !== UNLOCKED)) { - var message = 'Mutex is not locked'; - throw IllegalStateException_init(message.toString()); - } - } else { - if (!(state.locked === owner)) { - var message_0 = 'Mutex is locked by ' + state.locked.toString() + ' but expected ' + toString(owner); - throw IllegalStateException_init(message_0.toString()); - } - } - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = EMPTY_UNLOCKED;return true;}() : false})(this)) - return; - } else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this); - else if (Kotlin.isType(state, MutexImpl$LockedQueue)) { - if (owner != null) { - if (!(state.owner === owner)) { - var message_1 = 'Mutex is locked by ' + state.owner.toString() + ' but expected ' + toString(owner); - throw IllegalStateException_init(message_1.toString()); - } - } - var waiter = state.removeFirstOrNull(); - if (waiter == null) { - var op = new MutexImpl$UnlockOp(state); - if ((function(scope) {return scope._state_0 === state ? function() {scope._state_0 = op;return true;}() : false})(this) && op.perform_s8jyv4$(this) == null) - return; - } else { - var token = (Kotlin.isType(tmp$ = waiter, MutexImpl$LockWaiter) ? tmp$ : throwCCE()).tryResumeLockWaiter(); - if (token != null) { - state.owner = (tmp$_0 = waiter.owner) != null ? tmp$_0 : LOCKED; - waiter.completeResumeLockWaiter_za3rmp$(token); - return; - } - } - } else { - throw IllegalStateException_init(('Illegal state ' + toString(state)).toString()); - } - } -}; - MutexImpl.prototype.toString = function() { - var $receiver = this._state_0; - while (true) { - var state = this._state_0; - if (Kotlin.isType(state, Empty_0)) - return 'Mutex[' + state.locked.toString() + ']'; - else if (Kotlin.isType(state, OpDescriptor)) - state.perform_s8jyv4$(this); - else if (Kotlin.isType(state, MutexImpl$LockedQueue)) - return 'Mutex[' + state.owner.toString() + ']'; - else { - throw IllegalStateException_init(('Illegal state ' + toString(state)).toString()); - } - } -}; - function MutexImpl$LockedQueue(owner) { - LinkedListHead.call(this); - this.owner = owner; - } - MutexImpl$LockedQueue.prototype.toString = function() { - return 'LockedQueue[' + this.owner.toString() + ']'; -}; - MutexImpl$LockedQueue.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LockedQueue', - interfaces: [LinkedListHead]}; - function MutexImpl$LockWaiter(owner) { - LinkedListNode.call(this); - this.owner = owner; - } - MutexImpl$LockWaiter.prototype.dispose = function() { - this.remove(); -}; - MutexImpl$LockWaiter.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LockWaiter', - interfaces: [DisposableHandle, LinkedListNode]}; - function MutexImpl$LockCont(owner, cont) { - MutexImpl$LockWaiter.call(this, owner); - this.cont = cont; - } - MutexImpl$LockCont.prototype.tryResumeLockWaiter = function() { - return this.cont.tryResume_19pj23$(Unit); -}; - MutexImpl$LockCont.prototype.completeResumeLockWaiter_za3rmp$ = function(token) { - this.cont.completeResume_za3rmp$(token); -}; - MutexImpl$LockCont.prototype.toString = function() { - return 'LockCont[' + toString(this.owner) + ', ' + this.cont + ']'; -}; - MutexImpl$LockCont.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LockCont', - interfaces: [MutexImpl$LockWaiter]}; - function MutexImpl$LockSelect(owner, mutex, select, block) { - MutexImpl$LockWaiter.call(this, owner); - this.mutex = mutex; - this.select = select; - this.block = block; - } - MutexImpl$LockSelect.prototype.tryResumeLockWaiter = function() { - return this.select.trySelect_s8jyv4$(null) ? SELECT_SUCCESS : null; -}; - MutexImpl$LockSelect.prototype.completeResumeLockWaiter_za3rmp$ = function(token) { - if (!(token === SELECT_SUCCESS)) { - var message = 'Check failed.'; - throw IllegalStateException_init(message.toString()); - } - startCoroutine_0(this.block, this.mutex, this.select.completion); -}; - MutexImpl$LockSelect.prototype.toString = function() { - return 'LockSelect[' + toString(this.owner) + ', ' + this.mutex + ', ' + this.select + ']'; -}; - MutexImpl$LockSelect.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LockSelect', - interfaces: [MutexImpl$LockWaiter]}; - function MutexImpl$UnlockOp(queue) { - OpDescriptor.call(this); - this.queue = queue; - } - MutexImpl$UnlockOp.prototype.perform_s8jyv4$ = function(affected) { - var tmp$; - var success = this.queue.isEmpty; - var update = success ? EMPTY_UNLOCKED : this.queue; - (function(scope) {return (Kotlin.isType(tmp$ = affected, MutexImpl) ? tmp$ : throwCCE())._state_0 === scope ? function() {(Kotlin.isType(tmp$ = affected, MutexImpl) ? tmp$ : throwCCE())._state_0 = update;return true;}() : false})(this); - return affected._state_0 === this.queue ? UNLOCK_FAIL : null; -}; - MutexImpl$UnlockOp.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'UnlockOp', - interfaces: [OpDescriptor]}; - MutexImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'MutexImpl', - interfaces: [SelectClause2, Mutex]}; - function CompletionHandlerBase() { - LinkedListNode.call(this); - } - CompletionHandlerBase.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CompletionHandlerBase', - interfaces: [LinkedListNode]}; - var get_asHandler = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.get_asHandler_rrd6of$', function($receiver) { - return $receiver; -}); - function CancelHandlerBase() { - } - CancelHandlerBase.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CancelHandlerBase', - interfaces: []}; - var get_asHandler_0 = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.get_asHandler_dbl61f$', function($receiver) { - return $receiver; -}); - function invokeIt($receiver, cause) { - if (equals(typeof $receiver, 'function')) - $receiver(cause); - else - $receiver.invoke(cause); - } - var UNDEFINED_0; - function createDefaultDispatcher() { - if (!equals(typeof navigator, UNDEFINED_0) && navigator != null && navigator.product == 'ReactNative') - return new NodeDispatcher(); - else if (isJsdom()) - return new NodeDispatcher(); - else { - var tmp$ = !equals(typeof window, UNDEFINED_0) && window != null; - if (tmp$) { - tmp$ = !equals(typeof window.addEventListener, UNDEFINED_0); - } - if (tmp$) - return asCoroutineDispatcher(window); - else - return new NodeDispatcher(); - } - } - function isJsdom() { - var tmp$ = !equals(typeof navigator, UNDEFINED_0) && navigator != null && navigator.userAgent != null; - if (tmp$) { - tmp$ = !equals(typeof navigator.userAgent, UNDEFINED_0); - } - var tmp$_0 = tmp$; - if (tmp$_0) { - tmp$_0 = !equals(typeof navigator.userAgent.match, UNDEFINED_0); - } - return tmp$_0 && navigator.userAgent.match('\\bjsdom\\b'); - } - function get_DefaultDelay() { - var tmp$; - return Kotlin.isType(tmp$ = Dispatchers_getInstance().Default, Delay) ? tmp$ : throwCCE(); - } - function newCoroutineContext($receiver, context) { - var combined = $receiver.coroutineContext.plus_1fupul$(context); - return combined !== Dispatchers_getInstance().Default && combined.get_j3r2sn$(ContinuationInterceptor.Key) == null ? combined.plus_1fupul$(Dispatchers_getInstance().Default) : combined; - } - var withCoroutineContext = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.withCoroutineContext_3ctye2$', function(context, countOrElement, block) { - return block(); -}); - function toDebugString($receiver) { - return $receiver.toString(); - } - function get_coroutineName($receiver) { - return null; - } - function handleCoroutineExceptionImpl(context, exception) { - console.error(exception); - } - var counter; - function get_hexAddress($receiver) { - var tmp$; - var result = $receiver.__debug_counter; - if (typeof result !== 'number') { - result = (counter = counter + 1 | 0 , counter); - $receiver.__debug_counter = result; - } - return (typeof (tmp$ = result) === 'number' ? tmp$ : throwCCE()).toString(); - } - function get_classSimpleName($receiver) { - var tmp$; - return (tmp$ = Kotlin.getKClassFromExpression($receiver).simpleName) != null ? tmp$ : 'Unknown'; - } - function Dispatchers() { - Dispatchers_instance = this; - this.Default = createDefaultDispatcher(); - this.Main = new JsMainDispatcher(this.Default); - this.Unconfined = Unconfined_getInstance(); - } - Dispatchers.$metadata$ = { - kind: Kind_OBJECT, - simpleName: 'Dispatchers', - interfaces: []}; - var Dispatchers_instance = null; - function Dispatchers_getInstance() { - if (Dispatchers_instance === null) { - new Dispatchers(); - } - return Dispatchers_instance; - } - function JsMainDispatcher(delegate) { - MainCoroutineDispatcher.call(this); - this.delegate = delegate; - } - Object.defineProperty(JsMainDispatcher.prototype, 'immediate', { - get: function() { - throw UnsupportedOperationException_init('Immediate dispatching is not supported on JS'); -}}); - JsMainDispatcher.prototype.dispatch_5bn72i$ = function(context, block) { - this.delegate.dispatch_5bn72i$(context, block); -}; - JsMainDispatcher.prototype.isDispatchNeeded_1fupul$ = function(context) { - return this.delegate.isDispatchNeeded_1fupul$(context); -}; - JsMainDispatcher.prototype.dispatchYield_5bn72i$ = function(context, block) { - this.delegate.dispatchYield_5bn72i$(context, block); -}; - JsMainDispatcher.prototype.toString = function() { - return this.delegate.toString(); -}; - JsMainDispatcher.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'JsMainDispatcher', - interfaces: [MainCoroutineDispatcher]}; - function createEventLoop() { - return new UnconfinedEventLoop(); - } - function UnconfinedEventLoop() { - EventLoop.call(this); - } - UnconfinedEventLoop.prototype.dispatch_5bn72i$ = function(context, block) { - throw UnsupportedOperationException_init('runBlocking event loop is not supported'); -}; - UnconfinedEventLoop.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'UnconfinedEventLoop', - interfaces: [EventLoop]}; - function CompletionHandlerException(message, cause) { - RuntimeException_init(withCause(message, cause), this); - this.cause_vrgn1e$_0 = cause; - this.name = 'CompletionHandlerException'; - } - Object.defineProperty(CompletionHandlerException.prototype, 'cause', { - get: function() { - return this.cause_vrgn1e$_0; -}}); - CompletionHandlerException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CompletionHandlerException', - interfaces: [RuntimeException]}; - function CancellationException(message) { - IllegalStateException_init(message, this); - this.name = 'CancellationException'; - } - CancellationException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CancellationException', - interfaces: [IllegalStateException]}; - function JobCancellationException(message, cause, job) { - CancellationException.call(this, withCause(message, cause)); - this.cause_vdkwcs$_0 = cause; - this.job_8be2vx$ = job; - this.name = 'JobCancellationException'; - } - Object.defineProperty(JobCancellationException.prototype, 'cause', { - get: function() { - return this.cause_vdkwcs$_0; -}}); - JobCancellationException.prototype.toString = function() { - return CancellationException.prototype.toString.call(this) + '; job=' + this.job_8be2vx$; -}; - JobCancellationException.prototype.equals = function(other) { - return other === this || (Kotlin.isType(other, JobCancellationException) && equals(other.message, this.message) && equals(other.job_8be2vx$, this.job_8be2vx$) && equals(other.cause, this.cause)); -}; - JobCancellationException.prototype.hashCode = function() { - var tmp$, tmp$_0; - return (((hashCode(ensureNotNull(this.message)) * 31 | 0) + hashCode(this.job_8be2vx$) | 0) * 31 | 0) + ((tmp$_0 = (tmp$ = this.cause) != null ? hashCode(tmp$) : null) != null ? tmp$_0 : 0) | 0; -}; - JobCancellationException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'JobCancellationException', - interfaces: [CancellationException]}; - function DispatchException(message, cause) { - RuntimeException_init(withCause(message, cause), this); - this.name = 'DispatchException'; - } - DispatchException.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'DispatchException', - interfaces: [RuntimeException]}; - function IllegalStateException_0(message, cause) { - return IllegalStateException_init(withCause(message, cause)); - } - function withCause($receiver, cause) { - return cause == null ? $receiver : $receiver + '; caused by ' + toString(cause); - } - var addSuppressedThrowable = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.addSuppressedThrowable_oz8fe6$', function($receiver, other) { -}); - var MAX_DELAY; - function delayToInt(timeMillis) { - return coerceIn(timeMillis, L0, MAX_DELAY).toInt(); - } - function NodeDispatcher() { - CoroutineDispatcher.call(this); - } - function NodeDispatcher$dispatch$lambda(closure$block) { - return function() { - closure$block.run(); - return Unit; -}; - } - NodeDispatcher.prototype.dispatch_5bn72i$ = function(context, block) { - setTimeout(NodeDispatcher$dispatch$lambda(block), 0); -}; - function NodeDispatcher$scheduleResumeAfterDelay$lambda(closure$continuation, this$NodeDispatcher) { - return function() { - var receiver = closure$continuation; - receiver.resumeUndispatched_hyuxa3$(this$NodeDispatcher, Unit); - return Unit; -}; - } - NodeDispatcher.prototype.scheduleResumeAfterDelay_egqmvs$ = function(timeMillis, continuation) { - var handle = setTimeout(NodeDispatcher$scheduleResumeAfterDelay$lambda(continuation, this), delayToInt(timeMillis)); - continuation.invokeOnCancellation_f05bi3$(new NodeDispatcher$ClearTimeout(handle)); -}; - function NodeDispatcher$ClearTimeout(handle) { - CancelHandler.call(this); - this.handle_0 = handle; - } - NodeDispatcher$ClearTimeout.prototype.dispose = function() { - clearTimeout(this.handle_0); -}; - NodeDispatcher$ClearTimeout.prototype.invoke = function(cause) { - this.dispose(); -}; - NodeDispatcher$ClearTimeout.prototype.toString = function() { - return 'ClearTimeout[' + this.handle_0 + ']'; -}; - NodeDispatcher$ClearTimeout.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'ClearTimeout', - interfaces: [DisposableHandle, CancelHandler]}; - function NodeDispatcher$invokeOnTimeout$lambda(closure$block) { - return function() { - closure$block.run(); - return Unit; -}; - } - NodeDispatcher.prototype.invokeOnTimeout_8irseu$ = function(timeMillis, block) { - var handle = setTimeout(NodeDispatcher$invokeOnTimeout$lambda(block), delayToInt(timeMillis)); - return new NodeDispatcher$ClearTimeout(handle); -}; - NodeDispatcher.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'NodeDispatcher', - interfaces: [Delay, CoroutineDispatcher]}; - function WindowDispatcher(window_0) { - CoroutineDispatcher.call(this); - this.window_0 = window_0; - this.messageName_0 = 'dispatchCoroutine'; - this.queue_0 = new WindowDispatcher$queue$ObjectLiteral(this); - this.window_0.addEventListener('message', WindowDispatcher_init$lambda(this), true); - } - WindowDispatcher.prototype.dispatch_5bn72i$ = function(context, block) { - this.queue_0.enqueue_771g0p$(block); -}; - function WindowDispatcher$scheduleResumeAfterDelay$lambda(closure$continuation, this$WindowDispatcher) { - return function() { - var receiver = closure$continuation; - receiver.resumeUndispatched_hyuxa3$(this$WindowDispatcher, Unit); - return Unit; -}; - } - WindowDispatcher.prototype.scheduleResumeAfterDelay_egqmvs$ = function(timeMillis, continuation) { - this.window_0.setTimeout(WindowDispatcher$scheduleResumeAfterDelay$lambda(continuation, this), delayToInt(timeMillis)); -}; - function WindowDispatcher$invokeOnTimeout$lambda(closure$block) { - return function() { - closure$block.run(); - return Unit; -}; - } - function WindowDispatcher$invokeOnTimeout$ObjectLiteral(this$WindowDispatcher, closure$handle) { - this.this$WindowDispatcher = this$WindowDispatcher; - this.closure$handle = closure$handle; - } - WindowDispatcher$invokeOnTimeout$ObjectLiteral.prototype.dispose = function() { - this.this$WindowDispatcher.window_0.clearTimeout(this.closure$handle); -}; - WindowDispatcher$invokeOnTimeout$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [DisposableHandle]}; - WindowDispatcher.prototype.invokeOnTimeout_8irseu$ = function(timeMillis, block) { - var handle = this.window_0.setTimeout(WindowDispatcher$invokeOnTimeout$lambda(block), delayToInt(timeMillis)); - return new WindowDispatcher$invokeOnTimeout$ObjectLiteral(this, handle); -}; - function WindowDispatcher$queue$ObjectLiteral(this$WindowDispatcher) { - this.this$WindowDispatcher = this$WindowDispatcher; - MessageQueue.call(this); - } - WindowDispatcher$queue$ObjectLiteral.prototype.schedule = function() { - this.this$WindowDispatcher.window_0.postMessage(this.this$WindowDispatcher.messageName_0, '*'); -}; - WindowDispatcher$queue$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [MessageQueue]}; - function WindowDispatcher_init$lambda(this$WindowDispatcher) { - return function(event) { - if (event.source == this$WindowDispatcher.window_0 && event.data == this$WindowDispatcher.messageName_0) { - event.stopPropagation(); - this$WindowDispatcher.queue_0.process(); - } - return Unit; -}; - } - WindowDispatcher.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'WindowDispatcher', - interfaces: [Delay, CoroutineDispatcher]}; - function MessageQueue() { - ArrayQueue.call(this); - this.yieldEvery = 16; - this.scheduled_0 = false; - } - MessageQueue.prototype.enqueue_771g0p$ = function(element) { - this.addLast_trkh7z$(element); - if (!this.scheduled_0) { - this.scheduled_0 = true; - this.schedule(); - } -}; - MessageQueue.prototype.process = function() { - try { - var times = this.yieldEvery; - for (var index = 0; index < times; index++) { - var tmp$; - tmp$ = this.removeFirstOrNull(); - if (tmp$ == null) { - return; - } - var element = tmp$; - element.run(); - } - } finally { - if (this.isEmpty) { - this.scheduled_0 = false; - } else { - this.schedule(); - } - } -}; - MessageQueue.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'MessageQueue', - interfaces: [ArrayQueue]}; - function promise($receiver, context, start, block) { - if (context === void 0) - context = coroutines.EmptyCoroutineContext; - if (start === void 0) - start = CoroutineStart$DEFAULT_getInstance(); - return asPromise(async($receiver, context, start, block)); - } - function asPromise$lambda$lambda(this$asPromise, closure$reject, closure$resolve) { - return function(it) { - var e = this$asPromise.getCompletionExceptionOrNull(); - if (e != null) { - closure$reject(e); - } else { - closure$resolve(this$asPromise.getCompleted()); - } - return Unit; -}; - } - function asPromise$lambda(this$asPromise) { - return function(resolve, reject) { - this$asPromise.invokeOnCompletion_f05bi3$(asPromise$lambda$lambda(this$asPromise, reject, resolve)); - return Unit; -}; - } - function asPromise($receiver) { - var promise = new Promise(asPromise$lambda($receiver)); - promise.deferred = $receiver; - return promise; - } - function Coroutine$asDeferred$lambda(this$asDeferred_0, $receiver_0, controller, continuation_0) { - CoroutineImpl.call(this, continuation_0); - this.$controller = controller; - this.exceptionState_0 = 1; - this.local$this$asDeferred = this$asDeferred_0; - } - Coroutine$asDeferred$lambda.$metadata$ = { - kind: Kotlin.Kind.CLASS, - simpleName: null, - interfaces: [CoroutineImpl]}; - Coroutine$asDeferred$lambda.prototype = Object.create(CoroutineImpl.prototype); - Coroutine$asDeferred$lambda.prototype.constructor = Coroutine$asDeferred$lambda; - Coroutine$asDeferred$lambda.prototype.doResume = function() { - do try { - switch (this.state_0) { - case 0: - this.state_0 = 2; - this.result_0 = await_0(this.local$this$asDeferred, this); - if (this.result_0 === COROUTINE_SUSPENDED) - return COROUTINE_SUSPENDED; - continue; - case 1: - throw this.exception_0; - case 2: - return this.result_0; - default: - this.state_0 = 1; - throw new Error('State Machine Unreachable execution'); - } - } catch (e) { - if (this.state_0 === 1) { - this.exceptionState_0 = this.state_0; - throw e; - } else { - this.state_0 = this.exceptionState_0; - this.exception_0 = e; - } -} while (true); -}; - function asDeferred$lambda(this$asDeferred_0) { - return function($receiver_0, continuation_0, suspended) { - var instance = new Coroutine$asDeferred$lambda(this$asDeferred_0, $receiver_0, this, continuation_0); - if (suspended) - return instance; - else - return instance.doResume(null); -}; - } - function asDeferred($receiver) { - var deferred = $receiver.deferred; - return deferred != null ? deferred : async(GlobalScope_getInstance(), void 0, CoroutineStart$UNDISPATCHED_getInstance(), asDeferred$lambda($receiver)); - } - function await$lambda$lambda(closure$cont) { - return function(it) { - closure$cont.resumeWith_tl1gpc$(new Result(it)); - return Unit; -}; - } - function await$lambda$lambda_0(closure$cont) { - return function(it) { - closure$cont.resumeWith_tl1gpc$(new Result(createFailure(it))); - return Unit; -}; - } - function await$lambda(this$await) { - return function(cont) { - this$await.then(await$lambda$lambda(cont), await$lambda$lambda_0(cont)); - return Unit; -}; - } - function suspendCancellableCoroutine$lambda_3(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - function await_0($receiver, continuation) { - return suspendCancellableCoroutine$lambda_3(await$lambda($receiver))(continuation); - } - function Runnable() { - } - Runnable.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'Runnable', - interfaces: []}; - var Runnable_0 = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.Runnable_o14v8n$', wrapFunction(function() { - var Kind_CLASS = Kotlin.Kind.CLASS; - var Runnable = _.kotlinx.coroutines.Runnable; - function Runnable$ObjectLiteral(closure$block) { - this.closure$block = closure$block; - } - Runnable$ObjectLiteral.prototype.run = function() { - this.closure$block(); -}; - Runnable$ObjectLiteral.$metadata$ = { - kind: Kind_CLASS, - interfaces: [Runnable]}; - return function(block) { - return new Runnable$ObjectLiteral(block); -}; -})); - function SchedulerTask() { - } - SchedulerTask.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'SchedulerTask', - interfaces: [Runnable]}; - function get_taskContext($receiver) { - } - var afterTask = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.afterTask_o4pqbf$', function($receiver) { -}); - function asCoroutineDispatcher($receiver) { - var tmp$; - var tmp$_0; - if ((tmp$ = $receiver.coroutineDispatcher) != null) - tmp$_0 = tmp$; - else { - var $receiver_0 = new WindowDispatcher($receiver); - $receiver.coroutineDispatcher = $receiver_0; - tmp$_0 = $receiver_0; - } - return tmp$_0; - } - function awaitAnimationFrame$lambda(this$awaitAnimationFrame) { - return function(cont) { - asWindowAnimationQueue(this$awaitAnimationFrame).enqueue_9bzdco$(cont); - return Unit; -}; - } - function suspendCancellableCoroutine$lambda_4(closure$block) { - return function(uCont) { - var cancellable = new CancellableContinuationImpl(intercepted(uCont), 1); - closure$block(cancellable); - return cancellable.getResult(); -}; - } - function awaitAnimationFrame($receiver, continuation) { - return suspendCancellableCoroutine$lambda_4(awaitAnimationFrame$lambda($receiver))(continuation); - } - function asWindowAnimationQueue($receiver) { - var tmp$; - var tmp$_0; - if ((tmp$ = $receiver.coroutineAnimationQueue) != null) - tmp$_0 = tmp$; - else { - var $receiver_0 = new WindowAnimationQueue($receiver); - $receiver.coroutineAnimationQueue = $receiver_0; - tmp$_0 = $receiver_0; - } - return tmp$_0; - } - function WindowAnimationQueue(window_0) { - this.window_0 = window_0; - this.dispatcher_0 = asCoroutineDispatcher(this.window_0); - this.scheduled_0 = false; - this.current_0 = new ArrayQueue(); - this.next_0 = new ArrayQueue(); - this.timestamp_0 = 0.0; - } - function WindowAnimationQueue$enqueue$lambda(this$WindowAnimationQueue) { - return function(ts) { - this$WindowAnimationQueue.timestamp_0 = ts; - var prev = this$WindowAnimationQueue.current_0; - this$WindowAnimationQueue.current_0 = this$WindowAnimationQueue.next_0; - this$WindowAnimationQueue.next_0 = prev; - this$WindowAnimationQueue.scheduled_0 = false; - this$WindowAnimationQueue.process(); - return Unit; -}; - } - WindowAnimationQueue.prototype.enqueue_9bzdco$ = function(cont) { - this.next_0.addLast_trkh7z$(cont); - if (!this.scheduled_0) { - this.scheduled_0 = true; - this.window_0.requestAnimationFrame(WindowAnimationQueue$enqueue$lambda(this)); - } -}; - WindowAnimationQueue.prototype.process = function() { - var tmp$; - while (true) { - tmp$ = this.current_0.removeFirstOrNull(); - if (tmp$ == null) { - return; - } - var element = tmp$; - element.resumeUndispatched_hyuxa3$(this.dispatcher_0, this.timestamp_0); - } -}; - WindowAnimationQueue.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'WindowAnimationQueue', - interfaces: []}; - function arraycopy(source, srcPos, destination, destinationStart, length) { - var tmp$, tmp$_0; - var destinationIndex = destinationStart; - tmp$ = srcPos + length | 0; - for (var sourceIndex = srcPos; sourceIndex < tmp$; sourceIndex++) { - destination[tmp$_0 = destinationIndex , destinationIndex = tmp$_0 + 1 | 0 , tmp$_0] = source[sourceIndex]; - } - } - var withLock_0 = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.withLock_ehp5tg$', function($receiver, action) { - return action(); -}); - function NoOpLock() { - } - NoOpLock.prototype.tryLock = function() { - return true; -}; - NoOpLock.prototype.unlock = function() { -}; - NoOpLock.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'NoOpLock', - interfaces: []}; - function subscriberList() { - return new CopyOnWriteList(); - } - function identitySet(expectedSize) { - return HashSet_init_0(expectedSize); - } - function CopyOnWriteList(array) { - if (array === void 0) { - array = []; - } - AbstractMutableList.call(this); - this.array_0 = array; - } - Object.defineProperty(CopyOnWriteList.prototype, 'size', { - get: function() { - return this.array_0.length; -}}); - CopyOnWriteList.prototype.add_11rb$ = function(element) { - var tmp$; - var copy = this.array_0.slice(); - copy.push(element); - this.array_0 = Kotlin.isArray(tmp$ = copy) ? tmp$ : throwCCE(); - return true; -}; - CopyOnWriteList.prototype.add_wxm5ur$ = function(index, element) { - var tmp$; - var copy = this.array_0.slice(); - copy.splice(this.insertionRangeCheck_0(index), 0, element); - this.array_0 = Kotlin.isArray(tmp$ = copy) ? tmp$ : throwCCE(); -}; - CopyOnWriteList.prototype.remove_11rb$ = function(element) { - var tmp$; - tmp$ = this.array_0; - for (var index = 0; index !== tmp$.length; ++index) { - var tmp$_0; - if (equals(this.array_0[index], element)) { - var copy = this.array_0.slice(); - copy.splice(index, 1); - this.array_0 = Kotlin.isArray(tmp$_0 = copy) ? tmp$_0 : throwCCE(); - return true; - } - } - return false; -}; - CopyOnWriteList.prototype.removeAt_za3lpa$ = function(index) { - var tmp$, tmp$_0, tmp$_1; - this.rangeCheck_0(index); - var copy = this.array_0.slice(); - if (index === get_lastIndex(this)) { - tmp$ = copy.pop(); - } else { - tmp$ = copy.splice(index, 1)[0]; - } - var result = tmp$; - this.array_0 = Kotlin.isArray(tmp$_0 = copy) ? tmp$_0 : throwCCE(); - return (tmp$_1 = result) == null || Kotlin.isType(tmp$_1, Any) ? tmp$_1 : throwCCE(); -}; - CopyOnWriteList.prototype.iterator = function() { - return new CopyOnWriteList$IteratorImpl(this.array_0); -}; - CopyOnWriteList.prototype.listIterator = function() { - throw UnsupportedOperationException_init('Operation is not supported'); -}; - CopyOnWriteList.prototype.listIterator_za3lpa$ = function(index) { - throw UnsupportedOperationException_init('Operation is not supported'); -}; - CopyOnWriteList.prototype.isEmpty = function() { - return this.size === 0; -}; - CopyOnWriteList.prototype.set_wxm5ur$ = function(index, element) { - throw UnsupportedOperationException_init('Operation is not supported'); -}; - CopyOnWriteList.prototype.get_za3lpa$ = function(index) { - return this.array_0[this.rangeCheck_0(index)]; -}; - function CopyOnWriteList$IteratorImpl(array) { - this.array_0 = array; - this.current_0 = 0; - } - CopyOnWriteList$IteratorImpl.prototype.hasNext = function() { - return this.current_0 !== this.array_0.length; -}; - CopyOnWriteList$IteratorImpl.prototype.next = function() { - var tmp$; - if (!this.hasNext()) { - throw NoSuchElementException_init(); - } - return this.array_0[tmp$ = this.current_0 , this.current_0 = tmp$ + 1 | 0 , tmp$]; -}; - CopyOnWriteList$IteratorImpl.prototype.remove = function() { - throw UnsupportedOperationException_init('Operation is not supported'); -}; - CopyOnWriteList$IteratorImpl.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'IteratorImpl', - interfaces: [MutableIterator]}; - CopyOnWriteList.prototype.insertionRangeCheck_0 = function(index) { - if (index < 0 || index > this.size) { - throw new IndexOutOfBoundsException('index: ' + index + ', size: ' + this.size); - } -}; - CopyOnWriteList.prototype.rangeCheck_0 = function(index) { - if (index < 0 || index >= this.size) { - throw new IndexOutOfBoundsException('index: ' + index + ', size: ' + this.size); - } - return index; -}; - CopyOnWriteList.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CopyOnWriteList', - interfaces: [AbstractMutableList]}; - function LinkedListNode() { - this._next = this; - this._prev = this; - this._removed = false; - } - Object.defineProperty(LinkedListNode.prototype, 'nextNode', { - get: defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.get_nextNode', function() { - return this._next; -})}); - Object.defineProperty(LinkedListNode.prototype, 'prevNode', { - get: defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.get_prevNode', function() { - return this._prev; -})}); - Object.defineProperty(LinkedListNode.prototype, 'isRemoved', { - get: defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.get_isRemoved', function() { - return this._removed; -})}); - LinkedListNode.prototype.addLast_l2j9rm$ = function(node) { - var prev = this._prev; - node._next = this; - node._prev = prev; - prev._next = node; - this._prev = node; -}; - LinkedListNode.prototype.remove = function() { - if (this._removed) - return false; - var prev = this._prev; - var next = this._next; - prev._next = next; - next._prev = prev; - this._removed = true; - return true; -}; - LinkedListNode.prototype.addOneIfEmpty_l2j9rm$ = function(node) { - if (this._next !== this) - return false; - this.addLast_l2j9rm$(node); - return true; -}; - LinkedListNode.prototype.addLastIf_w327v9$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.addLastIf_w327v9$', function(node, condition) { - if (!condition()) - return false; - this.addLast_l2j9rm$(node); - return true; -}); - LinkedListNode.prototype.addLastIfPrev_s8xlln$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.addLastIfPrev_s8xlln$', function(node, predicate) { - if (!predicate(this._prev)) - return false; - this.addLast_l2j9rm$(node); - return true; -}); - LinkedListNode.prototype.addLastIfPrevAndIf_dzcug$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.addLastIfPrevAndIf_dzcug$', function(node, predicate, condition) { - if (!predicate(this._prev)) - return false; - if (!condition()) - return false; - this.addLast_l2j9rm$(node); - return true; -}); - LinkedListNode.prototype.helpRemove = function() { -}; - LinkedListNode.prototype.removeFirstOrNull = function() { - var next = this._next; - if (next === this) - return null; - if (!next.remove()) { - var message = 'Should remove'; - throw IllegalStateException_init(message.toString()); - } - return next; -}; - LinkedListNode.prototype.removeFirstIfIsInstanceOfOrPeekIf_14urrv$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListNode.removeFirstIfIsInstanceOfOrPeekIf_14urrv$', wrapFunction(function() { - var IllegalStateException_init = Kotlin.kotlin.IllegalStateException_init_pdl1vj$; - return function(T_0, isT, predicate) { - var next = this._next; - if (next === this) - return null; - if (!isT(next)) - return null; - if (predicate(next)) - return next; - if (!next.remove()) { - var message = 'Should remove'; - throw IllegalStateException_init(message.toString()); - } - return next; -}; -})); - LinkedListNode.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LinkedListNode', - interfaces: []}; - function AddLastDesc(queue, node) { - AbstractAtomicDesc.call(this); - this.queue = queue; - this.node = node; - } - Object.defineProperty(AddLastDesc.prototype, 'affectedNode', { - get: function() { - return this.queue._prev; -}}); - AddLastDesc.prototype.onPrepare_bpl3tg$ = function(affected, next) { - return null; -}; - AddLastDesc.prototype.onComplete = function() { - this.queue.addLast_l2j9rm$(this.node); -}; - AddLastDesc.prototype.finishOnSuccess_bpl3tg$ = function(affected, next) { -}; - AddLastDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AddLastDesc', - interfaces: [AbstractAtomicDesc]}; - function RemoveFirstDesc(queue) { - AbstractAtomicDesc.call(this); - this.queue = queue; - this.affectedNode_rjf1fm$_0 = this.queue._next; - } - Object.defineProperty(RemoveFirstDesc.prototype, 'result', { - get: function() { - var tmp$; - return (tmp$ = this.affectedNode) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}}); - Object.defineProperty(RemoveFirstDesc.prototype, 'affectedNode', { - get: function() { - return this.affectedNode_rjf1fm$_0; -}}); - RemoveFirstDesc.prototype.validatePrepared_11rb$ = function(node) { - return true; -}; - RemoveFirstDesc.prototype.onPrepare_bpl3tg$ = function(affected, next) { - var tmp$; - this.validatePrepared_11rb$((tmp$ = this.affectedNode) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE()); - return null; -}; - RemoveFirstDesc.prototype.onComplete = function() { - this.queue.removeFirstOrNull(); -}; - RemoveFirstDesc.prototype.finishOnSuccess_bpl3tg$ = function(affected, next) { -}; - RemoveFirstDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'RemoveFirstDesc', - interfaces: [AbstractAtomicDesc]}; - function AbstractAtomicDesc() { - AtomicDesc.call(this); - } - AbstractAtomicDesc.prototype.prepare_4uxf5b$ = function(op) { - var affected = this.affectedNode; - var next = affected._next; - var failure = this.failure_ru8hrx$(affected, next); - if (failure != null) - return failure; - return this.onPrepare_bpl3tg$(affected, next); -}; - AbstractAtomicDesc.prototype.complete_ayrq83$ = function(op, failure) { - this.onComplete(); -}; - AbstractAtomicDesc.prototype.failure_ru8hrx$ = function(affected, next) { - return null; -}; - AbstractAtomicDesc.prototype.retry_ru8hrx$ = function(affected, next) { - return false; -}; - AbstractAtomicDesc.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'AbstractAtomicDesc', - interfaces: [AtomicDesc]}; - function LinkedListHead() { - LinkedListNode.call(this); - } - Object.defineProperty(LinkedListHead.prototype, 'isEmpty', { - get: function() { - return this._next === this; -}}); - LinkedListHead.prototype.forEach_jgwmnf$ = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.LinkedListHead.forEach_jgwmnf$', wrapFunction(function() { - var equals = Kotlin.equals; - return function(T_0, isT, block) { - var cur = this._next; - while (!equals(cur, this)) { - if (isT(cur)) - block(cur); - cur = cur._next; - } -}; -})); - LinkedListHead.prototype.remove = function() { - throw UnsupportedOperationException_init_0(); -}; - LinkedListHead.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'LinkedListHead', - interfaces: [LinkedListNode]}; - var probeCoroutineCreated = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.probeCoroutineCreated_3j0xf1$', function(completion) { - return completion; -}); - function recoverStackTrace(exception, continuation) { - return exception; - } - function recoverStackTrace_0(exception) { - return exception; - } - function recoverAndThrow(exception_0, continuation) { - throw exception_0; - } - defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.recoverAndThrow_8o0b5c$', function(exception_0, continuation) { - throw exception_0; -}); - function unwrap(exception) { - return exception; - } - function CoroutineStackFrame() { - } - CoroutineStackFrame.$metadata$ = { - kind: Kind_INTERFACE, - simpleName: 'CoroutineStackFrame', - interfaces: []}; - var synchronized = defineInlineFunction('kotlinx-coroutines-core.kotlinx.coroutines.internal.synchronized_eocq09$', function(lock, block) { - return block(); -}); - function threadContextElements(context) { - return 0; - } - function CommonThreadLocal() { - this.value_0 = null; - } - CommonThreadLocal.prototype.get = function() { - var tmp$; - return (tmp$ = this.value_0) == null || Kotlin.isType(tmp$, Any) ? tmp$ : throwCCE(); -}; - CommonThreadLocal.prototype.set_11rb$ = function(value) { - this.value_0 = value; -}; - CommonThreadLocal.$metadata$ = { - kind: Kind_CLASS, - simpleName: 'CommonThreadLocal', - interfaces: []}; - var package$kotlinx = _.kotlinx || (_.kotlinx = {}); - var package$coroutines = package$kotlinx.coroutines || (package$kotlinx.coroutines = {}); - package$coroutines.AbstractCoroutine = AbstractCoroutine; - package$coroutines.ExperimentalCoroutinesApi = ExperimentalCoroutinesApi; - package$coroutines.ObsoleteCoroutinesApi = ObsoleteCoroutinesApi; - package$coroutines.InternalCoroutinesApi = InternalCoroutinesApi; - package$coroutines.awaitAll_jdtgiz$ = awaitAll; - package$coroutines.awaitAll_60afti$ = awaitAll_0; - package$coroutines.joinAll_ub8bc8$ = joinAll; - package$coroutines.joinAll_k943iz$ = joinAll_0; - $$importsForInline$$['kotlinx-coroutines-core'] = _; - package$coroutines.launch_s496o7$ = launch; - package$coroutines.async_pda6u4$ = async; - package$coroutines.withContext_i5cbzn$ = withContext; - - package$coroutines.CancellableContinuation = CancellableContinuation; - package$coroutines.removeOnCancellation_1u31dd$ = removeOnCancellation; - package$coroutines.disposeOnCancellation_xredcy$ = disposeOnCancellation; - package$coroutines.CancellableContinuationImpl = CancellableContinuationImpl; - package$coroutines.NotCompleted = NotCompleted; - package$coroutines.CancelHandler = CancelHandler; - package$coroutines.CompletableDeferred = CompletableDeferred; - package$coroutines.CompletableDeferred_xptg6w$ = CompletableDeferred_0; - package$coroutines.CompletableDeferred_mh5how$ = CompletableDeferred_1; - package$coroutines.toState_dwruuz$ = toState; - package$coroutines.CompletedExceptionally = CompletedExceptionally; - package$coroutines.CancelledContinuation = CancelledContinuation; - package$coroutines.CoroutineDispatcher = CoroutineDispatcher; - package$coroutines.handleCoroutineException_qb3u6s$ = handleCoroutineException; - package$coroutines.handleExceptionViaHandler_1ur55u$ = handleExceptionViaHandler; - package$coroutines.handlerException_l3aqr5$ = handlerException; - package$coroutines.CoroutineExceptionHandler = CoroutineExceptionHandler_0; - package$coroutines.CoroutineExceptionHandler_kumrnp$ = CoroutineExceptionHandler; - Object.defineProperty(CoroutineExceptionHandler_0, 'Key', { - get: CoroutineExceptionHandler$Key_getInstance}); - Object.defineProperty(CoroutineName, 'Key', { - get: CoroutineName$Key_getInstance}); - package$coroutines.CoroutineName = CoroutineName; - package$coroutines.CoroutineScope = CoroutineScope; - package$coroutines.plus_7n4184$ = plus; - package$coroutines.MainScope = MainScope; - package$coroutines.get_isActive_e9pf1l$ = get_isActive; - Object.defineProperty(package$coroutines, 'GlobalScope', { - get: GlobalScope_getInstance}); - package$coroutines.coroutineScope_awg8ri$ = coroutineScope; - package$coroutines.CoroutineScope_1fupul$ = CoroutineScope_0; - package$coroutines.Job = Job; - package$coroutines.cancel_e9pf1l$ = cancel; - Object.defineProperty(CoroutineStart, 'DEFAULT', { - get: CoroutineStart$DEFAULT_getInstance}); - Object.defineProperty(CoroutineStart, 'LAZY', { - get: CoroutineStart$LAZY_getInstance}); - Object.defineProperty(CoroutineStart, 'ATOMIC', { - get: CoroutineStart$ATOMIC_getInstance}); - Object.defineProperty(CoroutineStart, 'UNDISPATCHED', { - get: CoroutineStart$UNDISPATCHED_getInstance}); - package$coroutines.CoroutineStart = CoroutineStart; - package$coroutines.Deferred = Deferred; - package$coroutines.Delay = Delay; - package$coroutines.delay_s8cxhz$ = delay; - package$coroutines.get_delay_tcgsej$ = get_delay; - package$coroutines.withCoroutineContext_3ctye2$ = withCoroutineContext; - package$coroutines.resumeWithStackTrace_45st6c$ = resumeWithStackTrace; - package$coroutines.DispatchedContinuation = DispatchedContinuation; - package$coroutines.resumeCancellable_74ftok$ = resumeCancellable; - package$coroutines.resumeCancellableWithException_by4i3t$ = resumeCancellableWithException; - package$coroutines.resumeDirect_74ftok$ = resumeDirect; - package$coroutines.resumeDirectWithException_by4i3t$ = resumeDirectWithException; - package$coroutines.DispatchedTask = DispatchedTask; - package$coroutines.yieldUndispatched_t90a9u$ = yieldUndispatched; - package$coroutines.dispatch_h66hf9$ = dispatch; - package$coroutines.resume_yw0jex$ = resume; - var package$internal = package$coroutines.internal || (package$coroutines.internal = {}); - package$internal.recoverStackTrace_ak2v6d$ = recoverStackTrace; - package$coroutines.EventLoop = EventLoop; - Object.defineProperty(package$coroutines, 'ThreadLocalEventLoop', { - get: ThreadLocalEventLoop_getInstance}); - Object.defineProperty(Job, 'Key', { - get: Job$Key_getInstance}); - package$coroutines.Job_5dx9e$ = Job_0; - package$coroutines.DisposableHandle = DisposableHandle; - package$coroutines.DisposableHandle_o14v8n$ = DisposableHandle_0; - package$coroutines.ChildJob = ChildJob; - package$coroutines.ParentJob = ParentJob; - package$coroutines.ChildHandle = ChildHandle; - package$coroutines.disposeOnCompletion_l1yf65$ = disposeOnCompletion; - package$coroutines.cancelAndJoin_5dx9u$ = cancelAndJoin; - package$coroutines.cancelChildren_ipzvdq$ = cancelChildren; - package$coroutines.cancelChildren_5dx9u$ = cancelChildren_0; - package$coroutines.get_isActive_qdnslq$ = get_isActive_0; - package$coroutines.cancel0_qdnslq$ = cancel0; - package$coroutines.cancel_qdnslq$ = cancel_0; - package$coroutines.cancel_80ha7u$ = cancel_1; - package$coroutines.cancelChildren_qdnslq$ = cancelChildren_1; - package$coroutines.cancelChildren_80ha7u$ = cancelChildren_2; - Object.defineProperty(package$coroutines, 'NonDisposableHandle', { - get: NonDisposableHandle_getInstance}); - package$coroutines.JobSupport = JobSupport; - package$coroutines.unboxState_ntq51o$ = unboxState; - package$coroutines.JobImpl = JobImpl; - package$coroutines.Incomplete = Incomplete; - package$coroutines.JobNode = JobNode; - package$coroutines.NodeList = NodeList; - package$coroutines.InactiveNodeList = InactiveNodeList; - package$coroutines.DisposeOnCompletion = DisposeOnCompletion; - package$coroutines.JobCancellingNode = JobCancellingNode; - package$coroutines.ChildHandleNode = ChildHandleNode; - package$coroutines.ChildContinuation = ChildContinuation; - package$coroutines.MainCoroutineDispatcher = MainCoroutineDispatcher; - Object.defineProperty(package$coroutines, 'NonCancellable', { - get: NonCancellable_getInstance}); - Object.defineProperty(package$coroutines, 'MODE_ATOMIC_DEFAULT', { - get: function() { - return MODE_ATOMIC_DEFAULT; -}}); - Object.defineProperty(package$coroutines, 'MODE_CANCELLABLE', { - get: function() { - return MODE_CANCELLABLE; -}}); - Object.defineProperty(package$coroutines, 'MODE_DIRECT', { - get: function() { - return MODE_DIRECT; -}}); - Object.defineProperty(package$coroutines, 'MODE_UNDISPATCHED', { - get: function() { - return MODE_UNDISPATCHED; -}}); - Object.defineProperty(package$coroutines, 'MODE_IGNORE', { - get: function() { - return MODE_IGNORE; -}}); - package$coroutines.get_isCancellableMode_8e50z4$ = get_isCancellableMode; - package$coroutines.get_isDispatchedMode_8e50z4$ = get_isDispatchedMode; - package$coroutines.resumeMode_mpdt7i$ = resumeMode; - package$coroutines.resumeWithExceptionMode_gffq93$ = resumeWithExceptionMode; - package$coroutines.resumeUninterceptedMode_mpdt7i$ = resumeUninterceptedMode; - package$coroutines.resumeUninterceptedWithExceptionMode_gffq93$ = resumeUninterceptedWithExceptionMode; - package$coroutines.SupervisorJob_5dx9e$ = SupervisorJob; - package$coroutines.supervisorScope_awg8ri$ = supervisorScope; - package$coroutines.withTimeout_ms3uf5$ = withTimeout; - package$coroutines.withTimeoutOrNull_ms3uf5$ = withTimeoutOrNull; - package$coroutines.TimeoutCancellationException_init_y4putb$ = TimeoutCancellationException_init; - package$coroutines.TimeoutCancellationException = TimeoutCancellationException; - package$coroutines.TimeoutCancellationException_mkhm69$ = TimeoutCancellationException_0; - Object.defineProperty(package$coroutines, 'Unconfined', { - get: Unconfined_getInstance}); - package$coroutines.yield = yield_0; - package$coroutines.checkCompletion_tcgsej$ = checkCompletion; - var package$channels = package$coroutines.channels || (package$coroutines.channels = {}); - package$channels.AbstractSendChannel = AbstractSendChannel; - package$channels.AbstractChannel = AbstractChannel; - Object.defineProperty(package$channels, 'OFFER_SUCCESS_8be2vx$', { - get: function() { - return OFFER_SUCCESS; -}}); - Object.defineProperty(package$channels, 'OFFER_FAILED_8be2vx$', { - get: function() { - return OFFER_FAILED; -}}); - Object.defineProperty(package$channels, 'POLL_FAILED_8be2vx$', { - get: function() { - return POLL_FAILED; -}}); - Object.defineProperty(package$channels, 'ENQUEUE_FAILED_8be2vx$', { - get: function() { - return ENQUEUE_FAILED; -}}); - Object.defineProperty(package$channels, 'SELECT_STARTED_8be2vx$', { - get: function() { - return SELECT_STARTED; -}}); - Object.defineProperty(package$channels, 'NULL_VALUE_8be2vx$', { - get: function() { - return NULL_VALUE; -}}); - Object.defineProperty(package$channels, 'CLOSE_RESUMED_8be2vx$', { - get: function() { - return CLOSE_RESUMED; -}}); - Object.defineProperty(package$channels, 'SEND_RESUMED_8be2vx$', { - get: function() { - return SEND_RESUMED; -}}); - Object.defineProperty(package$channels, 'HANDLER_INVOKED_8be2vx$', { - get: function() { - return HANDLER_INVOKED; -}}); - package$channels.Send = Send; - package$channels.ReceiveOrClosed = ReceiveOrClosed; - package$channels.SendElement = SendElement; - package$channels.Closed = Closed; - package$channels.ArrayBroadcastChannel = ArrayBroadcastChannel; - package$channels.ArrayChannel = ArrayChannel; - package$channels.broadcast_k2ejrg$ = broadcast; - package$channels.broadcast_sgee0c$ = broadcast_0; - package$channels.BroadcastChannel = BroadcastChannel; - package$channels.BroadcastChannel_ww73n8$ = BroadcastChannel_0; - package$channels.SendChannel = SendChannel; - package$channels.ReceiveChannel = ReceiveChannel; - package$channels.ChannelIterator = ChannelIterator; - Object.defineProperty(Channel, 'Factory', { - get: Channel$Factory_getInstance}); - package$channels.Channel = Channel; - package$channels.Channel_ww73n8$ = Channel_0; - package$channels.ClosedSendChannelException = ClosedSendChannelException; - package$channels.ClosedReceiveChannelException = ClosedReceiveChannelException; - package$channels.ChannelCoroutine = ChannelCoroutine; - Object.defineProperty(package$channels, 'DEFAULT_CLOSE_MESSAGE_8be2vx$', { - get: function() { - return DEFAULT_CLOSE_MESSAGE; -}}); - package$channels.consume_364bog$ = consume; - package$channels.consumeEach_ur1qrk$ = consumeEach; - package$channels.consumes_ws3w4f$ = consumes; - package$channels.consumesAll_xp5qsr$ = consumesAll; - package$channels.consume_33m5w9$ = consume_0; - package$channels.consumeEach_fsi0yh$ = consumeEach_0; - package$channels.consumeEachIndexed_pji9r4$ = consumeEachIndexed; - package$channels.elementAt_pgf0by$ = elementAt; - package$channels.elementAtOrElse_m7muas$ = elementAtOrElse; - package$channels.elementAtOrNull_pgf0by$ = elementAtOrNull; - package$channels.firstOrNull_4c38lx$ = firstOrNull_0; - package$channels.find_4c38lx$ = find; - package$channels.lastOrNull_4c38lx$ = lastOrNull_0; - package$channels.findLast_4c38lx$ = findLast; - package$channels.first_6u4434$ = first; - package$channels.first_4c38lx$ = first_0; - package$channels.firstOrNull_6u4434$ = firstOrNull; - package$channels.indexOf_on0lyu$ = indexOf_0; - package$channels.indexOfFirst_4c38lx$ = indexOfFirst; - package$channels.indexOfLast_4c38lx$ = indexOfLast; - package$channels.last_6u4434$ = last; - package$channels.last_4c38lx$ = last_0; - package$channels.lastIndexOf_on0lyu$ = lastIndexOf; - package$channels.lastOrNull_6u4434$ = lastOrNull; - package$channels.single_6u4434$ = single; - package$channels.single_4c38lx$ = single_0; - package$channels.singleOrNull_6u4434$ = singleOrNull; - package$channels.singleOrNull_4c38lx$ = singleOrNull_0; - package$channels.drop_df7vpn$ = drop; - package$channels.dropWhile_1jwubq$ = dropWhile; - package$channels.filter_1jwubq$ = filter; - package$channels.filterIndexed_stp5uq$ = filterIndexed; - package$channels.filterIndexedTo_4jknp0$ = filterIndexedTo; - package$channels.filterIndexedTo_170qh7$ = filterIndexedTo_0; - package$channels.filterNot_1jwubq$ = filterNot; - package$channels.filterNotNull_muj20j$ = filterNotNull; - package$channels.filterNotNullTo_s1v2qg$ = filterNotNullTo; - package$channels.filterNotNullTo_akdn9d$ = filterNotNullTo_0; - package$channels.filterNotTo_ekipu8$ = filterNotTo; - package$channels.filterNotTo_6rlmvt$ = filterNotTo_0; - package$channels.filterTo_ekipu8$ = filterTo; - package$channels.filterTo_6rlmvt$ = filterTo_0; - package$channels.take_df7vpn$ = take; - package$channels.takeWhile_1jwubq$ = takeWhile; - package$channels.associateTo_lcmuai$ = associateTo; - package$channels.associate_9m65rd$ = associate; - package$channels.associateByTo_kkd6mf$ = associateByTo; - package$channels.associateBy_ku6tnm$ = associateBy; - package$channels.associateByTo_pjfcwb$ = associateByTo_0; - package$channels.associateBy_lt7yd0$ = associateBy_0; - package$channels.toChannel_j382de$ = toChannel; - package$channels.toCollection_hjft6z$ = toCollection; - package$channels.toList_6u4434$ = toList; - package$channels.toMap_nw618z$ = toMap; - package$channels.toMap_sw7bgw$ = toMap_0; - package$channels.toMutableList_6u4434$ = toMutableList; - package$channels.toSet_6u4434$ = toSet; - package$channels.flatMap_h1qd1k$ = flatMap; - package$channels.groupByTo_l6oevu$ = groupByTo; - package$channels.groupBy_ku6tnm$ = groupBy; - package$channels.groupByTo_z9qy88$ = groupByTo_0; - package$channels.groupBy_lt7yd0$ = groupBy_0; - package$channels.map_610k8f$ = map; - package$channels.mapIndexed_t29sgb$ = mapIndexed; - package$channels.mapIndexedNotNull_ti7rh4$ = mapIndexedNotNull; - package$channels.mapIndexedNotNullTo_dz8aer$ = mapIndexedNotNullTo; - package$channels.mapIndexedNotNullTo_4m0vhw$ = mapIndexedNotNullTo_0; - package$channels.mapIndexedTo_a7sgbu$ = mapIndexedTo; - package$channels.mapIndexedTo_whewhd$ = mapIndexedTo_0; - package$channels.mapNotNull_8vobzo$ = mapNotNull; - package$channels.mapNotNullTo_fo1is7$ = mapNotNullTo; - package$channels.mapNotNullTo_wo1rcg$ = mapNotNullTo_0; - package$channels.mapTo_pa4xkq$ = mapTo; - package$channels.mapTo_q9ku9f$ = mapTo_0; - package$channels.withIndex_nizo4z$ = withIndex; - package$channels.distinct_6u4434$ = distinct; - package$channels.distinctBy_610k8f$ = distinctBy; - package$channels.toMutableSet_6u4434$ = toMutableSet; - package$channels.all_4c38lx$ = all; - package$channels.any_6u4434$ = any; - package$channels.any_4c38lx$ = any_0; - package$channels.count_6u4434$ = count; - package$channels.count_4c38lx$ = count_0; - package$channels.fold_kq4l36$ = fold; - package$channels.foldIndexed_wviyg6$ = foldIndexed; - package$channels.maxBy_mqfd03$ = maxBy; - package$channels.maxWith_2trkuo$ = maxWith; - package$channels.minBy_mqfd03$ = minBy; - package$channels.minWith_2trkuo$ = minWith; - package$channels.none_6u4434$ = none; - package$channels.none_4c38lx$ = none_0; - package$channels.reduce_vk3vfd$ = reduce; - package$channels.reduceIndexed_a6mkxp$ = reduceIndexed; - package$channels.sumBy_fl2dz0$ = sumBy; - package$channels.sumByDouble_jy8qhg$ = sumByDouble; - package$channels.requireNoNulls_muj20j$ = requireNoNulls; - package$channels.partition_4c38lx$ = partition; - package$channels.zip_laxjsd$ = zip; - package$channels.zip_jm6e2j$ = zip_0; - package$channels.ConflatedBroadcastChannel_init_mh5how$ = ConflatedBroadcastChannel_init; - package$channels.ConflatedBroadcastChannel = ConflatedBroadcastChannel; - package$channels.ConflatedChannel = ConflatedChannel; - package$channels.LinkedListChannel = LinkedListChannel; - package$channels.ProducerScope = ProducerScope; - package$channels.produce_f6xzli$ = produce; - package$channels.produce_hfy25i$ = produce_0; - package$channels.RendezvousChannel = RendezvousChannel; - package$internal.ArrayQueue = ArrayQueue; - package$internal.OpDescriptor = OpDescriptor; - package$internal.AtomicOp = AtomicOp; - package$internal.AtomicDesc = AtomicDesc; - package$internal.MainDispatcherFactory = MainDispatcherFactory; - package$internal.ScopeCoroutine = ScopeCoroutine; - package$internal.tryRecover_2f0hiv$ = tryRecover; - package$internal.ContextScope = ContextScope; - package$internal.NonRecoverableThrowable = NonRecoverableThrowable; - package$internal.Symbol = Symbol; - var package$intrinsics = package$coroutines.intrinsics || (package$coroutines.intrinsics = {}); - package$intrinsics.startCoroutineCancellable_81hn2s$ = startCoroutineCancellable; - package$intrinsics.startCoroutineCancellable_kew4v3$ = startCoroutineCancellable_0; - package$intrinsics.startCoroutineUnintercepted_81hn2s$ = startCoroutineUnintercepted; - package$intrinsics.startCoroutineUnintercepted_kew4v3$ = startCoroutineUnintercepted_0; - package$intrinsics.startCoroutineUndispatched_81hn2s$ = startCoroutineUndispatched; - package$intrinsics.startCoroutineUndispatched_kew4v3$ = startCoroutineUndispatched_0; - package$intrinsics.startUndispatchedOrReturn_j6gkos$ = startUndispatchedOrReturn; - package$intrinsics.startUndispatchedOrReturnIgnoreTimeout_j6gkos$ = startUndispatchedOrReturnIgnoreTimeout; - var package$selects = package$coroutines.selects || (package$coroutines.selects = {}); - package$selects.SelectBuilder = SelectBuilder; - package$selects.SelectClause0 = SelectClause0; - package$selects.SelectClause1 = SelectClause1; - package$selects.SelectClause2 = SelectClause2; - package$selects.SelectInstance = SelectInstance; - Object.defineProperty(package$selects, 'ALREADY_SELECTED_8be2vx$', { - get: function() { - return ALREADY_SELECTED; -}}); - package$selects.SelectBuilderImpl = SelectBuilderImpl; - package$selects.UnbiasedSelectBuilderImpl = UnbiasedSelectBuilderImpl; - var package$sync = package$coroutines.sync || (package$coroutines.sync = {}); - package$sync.Mutex = Mutex; - package$sync.Mutex_6taknv$ = Mutex_0; - package$sync.withLock_8701tb$ = withLock; - package$sync.MutexImpl = MutexImpl; - package$coroutines.CompletionHandlerBase = CompletionHandlerBase; - package$coroutines.get_asHandler_rrd6of$ = get_asHandler; - package$coroutines.CancelHandlerBase = CancelHandlerBase; - package$coroutines.get_asHandler_dbl61f$ = get_asHandler_0; - package$coroutines.invokeIt_beznmj$ = invokeIt; - package$coroutines.createDefaultDispatcher_8be2vx$ = createDefaultDispatcher; - Object.defineProperty(package$coroutines, 'DefaultDelay_8be2vx$', { - get: get_DefaultDelay}); - package$coroutines.newCoroutineContext_7n4184$ = newCoroutineContext; - package$coroutines.toDebugString_u0ddlz$ = toDebugString; - package$coroutines.get_coroutineName_tcgsej$ = get_coroutineName; - package$coroutines.handleCoroutineExceptionImpl_yfv4gr$ = handleCoroutineExceptionImpl; - package$coroutines.get_hexAddress_8ea4r1$ = get_hexAddress; - package$coroutines.get_classSimpleName_8ea4r1$ = get_classSimpleName; - Object.defineProperty(package$coroutines, 'Dispatchers', { - get: Dispatchers_getInstance}); - package$coroutines.createEventLoop_8be2vx$ = createEventLoop; - package$coroutines.UnconfinedEventLoop = UnconfinedEventLoop; - package$coroutines.CompletionHandlerException = CompletionHandlerException; - package$coroutines.CancellationException = CancellationException; - package$coroutines.JobCancellationException = JobCancellationException; - package$coroutines.DispatchException = DispatchException; - package$coroutines.IllegalStateException_ly7if3$ = IllegalStateException_0; - package$coroutines.addSuppressedThrowable_oz8fe6$ = addSuppressedThrowable; - package$coroutines.NodeDispatcher = NodeDispatcher; - package$coroutines.WindowDispatcher = WindowDispatcher; - package$coroutines.MessageQueue = MessageQueue; - package$coroutines.promise_pda6u4$ = promise; - package$coroutines.asPromise_ge6odz$ = asPromise; - package$coroutines.asDeferred_t11jrl$ = asDeferred; - package$coroutines.await_t11jrl$ = await_0; - package$coroutines.Runnable = Runnable; - package$coroutines.Runnable_o14v8n$ = Runnable_0; - package$coroutines.SchedulerTask = SchedulerTask; - package$coroutines.get_taskContext_5sfo4y$ = get_taskContext; - package$coroutines.afterTask_o4pqbf$ = afterTask; - package$coroutines.asCoroutineDispatcher_nz12v2$ = asCoroutineDispatcher; - package$coroutines.awaitAnimationFrame_nz12v2$ = awaitAnimationFrame; - package$internal.arraycopy_t6l26v$ = arraycopy; - package$internal.withLock_ehp5tg$ = withLock_0; - package$internal.NoOpLock = NoOpLock; - package$internal.subscriberList_tnbmyv$ = subscriberList; - package$internal.identitySet_46rbr$ = identitySet; - package$internal.CopyOnWriteList = CopyOnWriteList; - package$internal.LinkedListNode = LinkedListNode; - package$internal.AddLastDesc = AddLastDesc; - package$internal.RemoveFirstDesc = RemoveFirstDesc; - package$internal.AbstractAtomicDesc = AbstractAtomicDesc; - package$internal.LinkedListHead = LinkedListHead; - package$internal.probeCoroutineCreated_3j0xf1$ = probeCoroutineCreated; - package$internal.recoverStackTrace_87698k$ = recoverStackTrace_0; - package$internal.recoverAndThrow_8o0b5c$ = recoverAndThrow; - package$internal.unwrap_87698k$ = unwrap; - package$internal.CoroutineStackFrame = CoroutineStackFrame; - package$internal.synchronized_eocq09$ = synchronized; - package$internal.threadContextElements_v4qu62$ = threadContextElements; - package$internal.CommonThreadLocal = CommonThreadLocal; - Job.prototype.plus_1fupul$ = CoroutineContext$Element.prototype.plus_1fupul$; - Job.prototype.fold_3cc69b$ = CoroutineContext$Element.prototype.fold_3cc69b$; - Job.prototype.get_j3r2sn$ = CoroutineContext$Element.prototype.get_j3r2sn$; - Job.prototype.minusKey_yeqjby$ = CoroutineContext$Element.prototype.minusKey_yeqjby$; - ChildJob.prototype.cancel0 = Job.prototype.cancel0; - ChildJob.prototype.plus_dqr1mp$ = Job.prototype.plus_dqr1mp$; - ChildJob.prototype.plus_1fupul$ = Job.prototype.plus_1fupul$; - ChildJob.prototype.fold_3cc69b$ = Job.prototype.fold_3cc69b$; - ChildJob.prototype.get_j3r2sn$ = Job.prototype.get_j3r2sn$; - ChildJob.prototype.minusKey_yeqjby$ = Job.prototype.minusKey_yeqjby$; - ChildJob.prototype.cancel_dbl4no$ = Job.prototype.cancel_dbl4no$; - ChildJob.prototype.invokeOnCompletion_ct2b2z$ = Job.prototype.invokeOnCompletion_ct2b2z$; - ParentJob.prototype.cancel0 = Job.prototype.cancel0; - ParentJob.prototype.plus_dqr1mp$ = Job.prototype.plus_dqr1mp$; - ParentJob.prototype.plus_1fupul$ = Job.prototype.plus_1fupul$; - ParentJob.prototype.fold_3cc69b$ = Job.prototype.fold_3cc69b$; - ParentJob.prototype.get_j3r2sn$ = Job.prototype.get_j3r2sn$; - ParentJob.prototype.minusKey_yeqjby$ = Job.prototype.minusKey_yeqjby$; - ParentJob.prototype.cancel_dbl4no$ = Job.prototype.cancel_dbl4no$; - ParentJob.prototype.invokeOnCompletion_ct2b2z$ = Job.prototype.invokeOnCompletion_ct2b2z$; - JobSupport.prototype.cancel0 = Job.prototype.cancel0; - JobSupport.prototype.plus_dqr1mp$ = Job.prototype.plus_dqr1mp$; - JobSupport.prototype.plus_1fupul$ = Job.prototype.plus_1fupul$; - JobSupport.prototype.fold_3cc69b$ = Job.prototype.fold_3cc69b$; - JobSupport.prototype.get_j3r2sn$ = Job.prototype.get_j3r2sn$; - JobSupport.prototype.minusKey_yeqjby$ = Job.prototype.minusKey_yeqjby$; - JobSupport.prototype.invokeOnCompletion_ct2b2z$ = Job.prototype.invokeOnCompletion_ct2b2z$; - JobSupport.prototype.cancel_dbl4no$ = Job.prototype.cancel_dbl4no$; - Deferred.prototype.cancel0 = Job.prototype.cancel0; - Deferred.prototype.plus_dqr1mp$ = Job.prototype.plus_dqr1mp$; - Deferred.prototype.plus_1fupul$ = Job.prototype.plus_1fupul$; - Deferred.prototype.fold_3cc69b$ = Job.prototype.fold_3cc69b$; - Deferred.prototype.get_j3r2sn$ = Job.prototype.get_j3r2sn$; - Deferred.prototype.minusKey_yeqjby$ = Job.prototype.minusKey_yeqjby$; - Deferred.prototype.cancel_dbl4no$ = Job.prototype.cancel_dbl4no$; - Deferred.prototype.invokeOnCompletion_ct2b2z$ = Job.prototype.invokeOnCompletion_ct2b2z$; - CancellableContinuationImpl.prototype.cancel_dbl4no$ = CancellableContinuation.prototype.cancel_dbl4no$; - CancellableContinuationImpl.prototype.tryResume_19pj23$ = CancellableContinuation.prototype.tryResume_19pj23$; - CompletableDeferred.prototype.cancel0 = Deferred.prototype.cancel0; - CompletableDeferred.prototype.plus_dqr1mp$ = Deferred.prototype.plus_dqr1mp$; - CompletableDeferred.prototype.plus_1fupul$ = Deferred.prototype.plus_1fupul$; - CompletableDeferred.prototype.fold_3cc69b$ = Deferred.prototype.fold_3cc69b$; - CompletableDeferred.prototype.get_j3r2sn$ = Deferred.prototype.get_j3r2sn$; - CompletableDeferred.prototype.minusKey_yeqjby$ = Deferred.prototype.minusKey_yeqjby$; - CompletableDeferred.prototype.cancel_dbl4no$ = Deferred.prototype.cancel_dbl4no$; - CompletableDeferred.prototype.invokeOnCompletion_ct2b2z$ = Deferred.prototype.invokeOnCompletion_ct2b2z$; - CoroutineDispatcher.prototype.get_j3r2sn$ = ContinuationInterceptor.prototype.get_j3r2sn$; - CoroutineDispatcher.prototype.minusKey_yeqjby$ = ContinuationInterceptor.prototype.minusKey_yeqjby$; - CoroutineDispatcher.prototype.releaseInterceptedContinuation_k98bjh$ = ContinuationInterceptor.prototype.releaseInterceptedContinuation_k98bjh$; - CoroutineExceptionHandler_0.prototype.fold_3cc69b$ = CoroutineContext$Element.prototype.fold_3cc69b$; - CoroutineExceptionHandler_0.prototype.get_j3r2sn$ = CoroutineContext$Element.prototype.get_j3r2sn$; - CoroutineExceptionHandler_0.prototype.minusKey_yeqjby$ = CoroutineContext$Element.prototype.minusKey_yeqjby$; - CoroutineExceptionHandler_0.prototype.plus_1fupul$ = CoroutineContext$Element.prototype.plus_1fupul$; - NonCancellable.prototype.plus_dqr1mp$ = Job.prototype.plus_dqr1mp$; - NonCancellable.prototype.cancel0 = Job.prototype.cancel0; - NonCancellable.prototype.invokeOnCompletion_ct2b2z$ = Job.prototype.invokeOnCompletion_ct2b2z$; - NonCancellable.prototype.cancel_dbl4no$ = Job.prototype.cancel_dbl4no$; - AbstractSendChannel.prototype.close_dbl4no$ = SendChannel.prototype.close_dbl4no$; - Channel.prototype.cancel0 = ReceiveChannel.prototype.cancel0; - Channel.prototype.close_dbl4no$ = SendChannel.prototype.close_dbl4no$; - Channel.prototype.cancel_dbl4no$ = ReceiveChannel.prototype.cancel_dbl4no$; - AbstractChannel.prototype.cancel0 = Channel.prototype.cancel0; - AbstractChannel.prototype.cancel_dbl4no$ = Channel.prototype.cancel_dbl4no$; - BroadcastChannel.prototype.close_dbl4no$ = SendChannel.prototype.close_dbl4no$; - ArrayBroadcastChannel.prototype.cancel_dbl4no$ = BroadcastChannel.prototype.cancel_dbl4no$; - ProducerScope.prototype.close_dbl4no$ = SendChannel.prototype.close_dbl4no$; - BroadcastCoroutine.prototype.close_dbl4no$ = ProducerScope.prototype.close_dbl4no$; - ChannelCoroutine.prototype.close_dbl4no$ = Channel.prototype.close_dbl4no$; - ConflatedBroadcastChannel.prototype.close_dbl4no$ = BroadcastChannel.prototype.close_dbl4no$; - ConflatedBroadcastChannel.prototype.cancel_dbl4no$ = BroadcastChannel.prototype.cancel_dbl4no$; - SelectBuilderImpl.prototype.invoke_en0wgx$ = SelectBuilder.prototype.invoke_en0wgx$; - UnbiasedSelectBuilderImpl.prototype.invoke_en0wgx$ = SelectBuilder.prototype.invoke_en0wgx$; - MutexImpl.prototype.tryLock_s8jyv4$ = Mutex.prototype.tryLock_s8jyv4$; - MutexImpl.prototype.lock_s8jyv4$ = Mutex.prototype.lock_s8jyv4$; - MutexImpl.prototype.unlock_s8jyv4$ = Mutex.prototype.unlock_s8jyv4$; - NodeDispatcher.prototype.delay_s8cxhz$ = Delay.prototype.delay_s8cxhz$; - WindowDispatcher.prototype.delay_s8cxhz$ = Delay.prototype.delay_s8cxhz$; - UNDECIDED = 0; - SUSPENDED = 1; - RESUMED = 2; - UNDECIDED_0 = 0; - SUSPENDED_0 = 1; - RESUMED_0 = 2; - UNDEFINED = new Symbol('UNDEFINED'); - COMPLETING_ALREADY_COMPLETING = 0; - COMPLETING_COMPLETED = 1; - COMPLETING_WAITING_CHILDREN = 2; - COMPLETING_RETRY = 3; - RETRY = -1; - FALSE = 0; - TRUE = 1; - SEALED = new Symbol('SEALED'); - EMPTY_NEW = new Empty(false); - EMPTY_ACTIVE = new Empty(true); - MODE_ATOMIC_DEFAULT = 0; - MODE_CANCELLABLE = 1; - MODE_DIRECT = 2; - MODE_UNDISPATCHED = 3; - MODE_IGNORE = 4; - OFFER_SUCCESS = new Symbol('OFFER_SUCCESS'); - OFFER_FAILED = new Symbol('OFFER_FAILED'); - POLL_FAILED = new Symbol('POLL_FAILED'); - ENQUEUE_FAILED = new Symbol('ENQUEUE_FAILED'); - SELECT_STARTED = new Symbol('SELECT_STARTED'); - NULL_VALUE = new Symbol('NULL_VALUE'); - CLOSE_RESUMED = new Symbol('CLOSE_RESUMED'); - SEND_RESUMED = new Symbol('SEND_RESUMED'); - HANDLER_INVOKED = new Symbol('ON_CLOSE_HANDLER_INVOKED'); - DEFAULT_CLOSE_MESSAGE = 'Channel was closed'; - NO_DECISION = new Symbol('NO_DECISION'); - ALREADY_SELECTED = new Symbol('ALREADY_SELECTED'); - UNDECIDED_1 = new Symbol('UNDECIDED'); - RESUMED_1 = new Symbol('RESUMED'); - LOCK_FAIL = new Symbol('LOCK_FAIL'); - ENQUEUE_FAIL = new Symbol('ENQUEUE_FAIL'); - UNLOCK_FAIL = new Symbol('UNLOCK_FAIL'); - SELECT_SUCCESS = new Symbol('SELECT_SUCCESS'); - LOCKED = new Symbol('LOCKED'); - UNLOCKED = new Symbol('UNLOCKED'); - EMPTY_LOCKED = new Empty_0(LOCKED); - EMPTY_UNLOCKED = new Empty_0(UNLOCKED); - UNDEFINED_0 = 'undefined'; - counter = 0; - MAX_DELAY = L2147483647; - Kotlin.defineModule('kotlinx-coroutines-core', _); - return _; -})); diff --git a/src/jsMain/resources/lib/kotlinx-coroutines-core.meta.js b/src/jsMain/resources/lib/kotlinx-coroutines-core.meta.js deleted file mode 100644 index d31b1e4c9e..0000000000 --- a/src/jsMain/resources/lib/kotlinx-coroutines-core.meta.js +++ /dev/null @@ -1 +0,0 @@ -// Kotlin.kotlin_module_metadata(393729, "kotlinx-coroutines-core", "H4sIAAAAAAAAAN29CXxcV3Uwrvdme/NmNLozGkmj8SaPbdlWbGeibIpjJ9bmjBQtjiQndljssTSyxpFnxMzIicNHSQw4rAECOOxQAmFrS2mhNdAFKIXSHWihhVJaugEtLUtpgVLynXPuuW+ZeVqc5fv/fv9fYs19593l3HPPPfece+87p8nwJ172Zc18fMgM3VOuLRZL95nmbLlSXq4VS4WqGe8/Va1V8rO1QQUztRnTHC2fml5eWipXaqYP0mZQljWjg+USZFrO14rlkhmzCk3PlpcKZvNSvlIo1TBP4b6aKazXChKEhornCmZooFxeLORLZmhW5Z2tzxufK8znlxdrU4Xq8tnCeHmuYPpGSjXTKFb7ZS0bFvKlucXCZGmwfHZpsYAoDd83W1gi3PxHS8WaGS5YgPDMQqV8b/7UIuBZhHdHCFfsnFnKny1M1yrF0mkzyL+xcmkwX5otLC7KrgZm88vVghkpq8YKc2bgXH5xuWCmHDCr/fzi4nkzWXagBrgXKgA3A9Vavgad6S+dN/1nsV9mFWhdKVSrUGmoXJqu5YHuLZywypkVosRdxdqCGcT0IhB0Sv5inVBGm3KOCYGMSmG2ANSqmIFTi+XZe8zw4eXSLCLUa7YN31crlKqQVrCZ8zCMVo5rzDbVulVrtX+paAZ5BKIT5ZpND6NWZuoZ/ffmi7X+xUWzY6hYXSpXCzkaqkp1kslqNstfhpuBEhCiagb6K5X8eTOqyk8QeeZkHVhfsFg6V74HOAgGjl5GZ50c2aEGDYbZxaqR2fLiYoF6VTX9Y8UqMPYZGHuD666YQclNppAYYw0SOTMMnFioVApzVdMY4qQZLzm6PlheRs7M18pni7Pzy2a4n1LIroE8dsWMu7o7kAde0s9UzeBodQKYz/QjC5qRYpXxhwbwwSJtcFZSLTbLIDkrzEANiFEyE8jQVteLi8XaedMcKgBPzeaJUxcL56C0UCCgwhhBgrmRoaHhCTN0Frgvf7pgnp9ZKFa75pkBuiBdKnctlkunC5UumABz+7pGaghdLMzXuubLla5TxVK+cr4L8YJ6Zdtd9wKPAmiuQPAidKfrVAFyF7pYBu2zRVDXNfuu2Zfd12Um5dBOuideaIE5pBkmLBAJ2JEoFrdnluKhcK1ynuliFucKZ5fKwN01s90C49SxJURCzqejJWSBfG12AQjVavH5kAJWzM7h+5YKleJZqKx+ImxprMPdyIYVGHIEkDdjViNzM/nqPSDa1Fxvdc7i2XsOY8+BVwuLhdMoO1gUkFAMn5grzBZxEpvBE1K0MPtNFeaB70ESFSqygqiUz8zWrfnFSiE/x7SZG65UyhUztlQp43yYO7o0h1XFVMeYsK08X444a+o6Xag5O+ccwEGSm0HZshmGnCyyokeWTy0Wq9B3JGQSXlBXZ2AxKgwvFpDaZrwR1IoZl2dngV/nlxe5rq5iCXq+uCixcjaveKNVMhc/TufnCyCfLUGXNSNn89Zbs+0sVFpcWrSklqQNU52GrqPSyFFyOGpQ0TQNgwmMN71cXSqU5sw2J1I2e7SNLOKQLlIBB9gSAy4h1r7COsNzZM5slgNvra4SyTln7/iBBx2m0UJx0d1KHEQrtw+ynIRsYBZzmRHKzIMeI5gtrwLDU1OTU+YtJEDwf+blrv4jI11QpOts/jxIga5K4Wz5HAiEYqmrtlAAUVNbriAUMK7CCtDiaIPaNqgdXKeNQZVqWXIONDQeXrJW87C9sLcyvXDyWYLbUCLUbFMpNzU7PErRmIeqBVxCqmbzNCUGF5G3rzGbpXCuyoZxBaflyxRqJqhhM6M0UZRQb6sUTsNCBOzoqi4omzFjEjyCrA21mJ1WyRFLuDH/i6ILAvO0rUE80poTGyuW7inM4fpHxE03ZLOZUEzBogZSz4ZsaVAWWVlTk7PDJeKQAbAoTB1DiRHTgFpLUgtTsOPFAjBXW1Hld3GjKFaVlJwoFOaAbP6lxWXQFMo1lM0/0SZBNsPCW+naedXOLliyaveWuzykeFf51BkcPGTNszA5gLUXQYbs88wLefJd1hLVxUpqV0F2k7j55FUnZbZqobYXSN5VVnjgqthQFhqaAW6fs9uolYn/K8XTC7Wu8jxVeGa5WoOpsLQIAq9Kr50F4JGWXZl5HzIEt2INkZJgvtsLIBbUsLRI+WAPZLNVktZSEydCuQRZrzH9oMmfN4OF5y3nF0HfWchXFwaRU0JDw4f7j47NgPLUf/dx0ABnJsdHBs3o0Ymhkekj/TODueEh0z9cWj4LOlp1LH//eVmtZC5zo835TgE4WZlYBq0uruaZbYUEhgqLoAkG5ujHj4wITYMiYrYoPWEGYJAb5Cwkxosgrqpmqoqr6fIiC7j+eeApWVNcja9NhnZ7/XXxnGlTHTUumAaTFWtJkjLVsaybmxtAbh2gxfUetQxnu6rDMbKhHARYRpxA1nCHKqQi4DrpEFc8/32VZVBxbQauwnBJ68n0j+fBbuvAv166jXm0BBw6D0AwPXhtN1tYabeU9VYbYA9pYPjsEuqZIyVLovoXUbE2ULSQih0ePgc0GyuXl8xQsSrztxerdpv4im0JF/yO5cJyQeY3SjB9cKhBMC7kUYK3LLvzmSZZDTJtgAyV6jgYkLMVGrSjCmTaJYmzankzocbaQQh/DUkdL5bqywvQjlDzmECZd46US4bYpSV8Y3WhvLw4N1A4It8X5g5XymeVbWtUF5Zrc+V7gdX6S2BIMNvl7bQYB1EwUBgqzy4jBrjETRVQvuPLVruQDQwOjEz0Tx03o05t1QxIPT90V//UxMjEbWbktsXyKdA3yF4XIyVpkFsDlrAHk1SSgfJ9ZmzEpZdjHpeeTgbfCTkp5xxvbU6RSzgsjma4CoKlAMVAtExz0gyWS6NlYFLXsgoqWb4G2t8CLfpm2+SpahnRcuvfYzA0XR7r9T7PpX0XGfG7u0BAg3qwTy7bu3aT9giasBlh0UsmdmTK8RAqnsXNkKppFu4jS112iyswQzKVNTNjKKBhYhVWNI7A7jx3FuzXc2dJ9qZQMHrqholiIyWjZSfV4zLHyFnQ5IowWqC8+M8gJf/Ic1WEPq+4CuK7Z2zVA0N7ncsd5axf51K2QlpHIm2UNgJIOxNykavab8OHwSyuLiClEtPnS7MLlXKpeH9hbpJoYEYtAxtzhCtlMOjJWImfsHaNqrny4hyIyahlmRO3F6vThTxK8kR+ztbFx8qzOAOiwGpltLulCCTZREmzCoU4U1zZWY5lglVxa7DjpEa6VqaUY1PArbX67oEVv6VQt7A2A35j+WpN2gWwrINsgK77cbcFXmL91v5SlB6VwWJKlibSJmV6HOwGB8WiEspab6dLbgDl84vF+yXSwWVpSyZ4q8ZZSXgRsJNTPAnSFrLRGNhU2SyhK7KAOV+sqBpIyWAbodEGTTqVb6vXCZdiwgwAMOrBlMUTps0SZhpeT1ZAsJ8t1wo2W0gBKrkQEHBYc67tRpveOFWtpwg+KeJHFmFdnCxJMzI0Aaou7Umi4eZgQ/ls0zLhfp5E2WogjFR9AUtGcf68s7yEKCOX1jLsEq27M2VrUehg+DRJC8cLTwMma27ytGuc+5hoARJSbdLWYUa3OL+56tr5jNC2Bu8tJtRm6bA9Is218lDh1PJpztIJhjdzYMGSAZKY7Y5X00VsUMLjAB93k9cC2RRuAdBdgOrhckVyXBiVE5lsx5l9uFIo1JlYiu527zpqZW9eFqNV1NMc6lm4qGS72YY6daOe3IFg6ENpLr9YLjn0x1YvYHRc7vNJXSmslGWY7ufRCAPdpQJ2Q6H0PHofYtFvhljLAcWFS5gx7JwD0+ggGPAVpZI77MwcrqwexCF4mLZ95I77hL1xhFp1Kzw3bMXGpoh3LF2kg9V85B/XQpmQL1ywjmmb2Vwv2uULVEJc8NbpZVjezhWrMNwWCeM2UC09yZkF3EmDPuYXbY03XLCSvkphnnYsz5ZLjrxm8+xyBcUCS+sYsHWhZtcQdT3FJ/KoqznLb2R6e7NT2FqPTaEy2qc8R83WOqWVWmlz7mXa2ZN3FUugsPaXimepFclAwXsJavrKldOm795rZ03fXBkMQJkZ1CLZPTM4VF7GMfXjdDHDaK/BlD67hNYmqtUyv4ObIrwfLbd6FUIO40gy6KbByfEjY8MzoNme6B+bGu4fOn7CBplJx2tOgpEqHNCp4RlQmTc4IHf1j8j8uZGxoanhCTPKlpS0IqPD40dmjp/oH5wZuXPYbJkmiwQUsGVSP8HgodcTw3eZgcP9Y9PDZni8/9iJoeGx/uNm6/jk0PAJaTifUOa0IOBg/8Tg8NhY/8DYsBkhyNDI1PDgDD+M3DYxOTVsxunBZXGHpoanj45DIiC7Epwe7h+Dx+D0+bOnyotmePro9JHhiSE0zmemjgI+UHx4cAQBlDw8MoHJ5dJcga1AMnhR9pTy54qnUbkzE3Lbft/Q+VIe9Ah5SpSvqt2GlllYxatSnNKINc+69xcWCvf1z82h0AadteqY5bRl6tjiKcwRJIIGmDKWki4LWEHDKCn52NE1I00jrw6forMumTTrPq3skJqFGl6b+VrkC3tOmLQJMVPG85yUXOAbt17wjAa32s2NK+UgWdFZtxdzZzGvyMgarGMLLl4GfRlXK4eWWMNjTMcsB8N6tIqzLoQaBHYbbIBTsJpXlkteExy00JoiSajGCZQ0y0sK3FK1CCpJtbUqFROpRrqONNSMTCyUrd1gdQR1qBHWtaROcdCOmLOOqMi6aDhtMnet2fAuOtXcbW7gnJ7IRfBAyuIn+VB33ExZFAHijgeWzQFaIM12UKinrdNa+0g5nMedJtqiactXPXda8lVrDzqEymOxSpNIJdvzVU8ZG8hXwXYxzUHrANNslRyu8snDneZT5fscWzFptIwtCxf7Axh1yVPs5ICXXcrb2P2lObLGY/JxUJnuGbtCBWuoWNS/h7m0UJi9x7Gmts2595b4mK91zmOHKV64rzC7XCs4tmbCuGCwXjxXljvHBpvBNTwz5ck0OW8GQe8Eo89sLRXubRhu1GiI7MmKS6NgdIJyy84MQa9IIkUlYKhYQfup0/nk3uwT6kTQQrlDQawNbpZy2z1eNB4oJe2TJvs0DGZumQ+Zlksw8DIdJs6WJgyxq+tsMz567uw4HmzNF2FuoMQ2AyAvbwfDdGC5iGZu9fZa4gsRUxdNpt9oEpoZNDShp5ro18+/AfjVRRByBChHUIT4jUG/QWHSb0BE+Vfwbyv/tvFvin+7+Hcn19PDz3v5dx//Xs3vs/x7Df/28u919JsS1/PzDVyuj+E3MfwA/96SaqJe3ApPW8Qhhg7x7+GUpEIOnraJEYbezmXG4KlbjHMLR/n3Lv59Dud+Lv/O8u8c/87z72mqTRML8JQVRYJuEyWu5T76zYr7+fkX4DcEuV+iUSIgLmoMeUglXioT28TLFeRhlXi1SrxWJd6gEo+qxJtV4i0q8XZMBCDxDg2eB8U75YtB8V6V430q8QGZyIoPKsgvKUR/WSaC4ldU4kMqz4dV4rJMTIiPyUTYTnxc5fktmZhSr+LiUyrxaZX4PZX4jGr991Xxz6vEH6pXf6IgX1CJL6rEX6nu/LWCfE0l/lYl/l4l/lEl/kkl/lkl/kUlvq0S31E1f1+h8b+SygHxc6TyPeIJ+eIe8YDOiQd1zvoimSiLF+tc3UWVeEglXqoSL1OJl6vEK2XCLymITT6sw/N94tU6D+xrVdbXqSYv6Zz1rZj1BeJtKse7VeJxmfCJ9+nctffLxBbxYfXqIyrxUVXvl1Tm76h6vqsS/6ES31OJ76vED1TiJ5gwjFdp4qeqov9RiZ+pTD9XiSdU4gEfJx5UiQsq8SKVeLFKvEQlLqrEQz5u4uUq8bB69WqVeK1KfFMN+esU5PUq8QZM+MSjPpjaj2nijfj7bk28yQddeg/MRB8T6a2qwDtVex9Qid9Qrz4rE93i33xM9e/JxAvEa0Fsp39nW3ozTOm0kfAn9Jwv259BwebrDYqNaXi+bITTGa/3pqGLc2l/Ssv6Mc9umKNpPTvRmwb+eXY6ibmzYfrbTH+j2UTuonHZiKTjwoCcBrTQDL/hy0ZzeqsYguTW3hgU3iObggLX5x4yHjF0o+2yYQCSF7GBG6HYcfiN9RoiTc0355ouG4F0mwgA2O/Gy4DGPufD1nIhrGkvNrYJ5AqAxhtaQ/Q60+3iD3yNNW1Ib4ExTPuyb9N6Q+KPsYJnQeI1lBUx2Jg+ID7vs8jUxWTaLIbTIhE1tIR6k8luyFjp3MVDP9agtJ7uEH+IdUV7DWh2EFKR3IWuy0ZH+lbxR/Ait5sq3N27E1DeBtUh0kbC5Gp3Z0OJYAJxbckmsKetqubmdFT8Mda8B7Hsgqc/wacFfNqc7hR/pFGrIfFn1CdVLA4E/VPMGLFf6YjOPvFnEk8ePvhNwm9zbwTw/nOfpJekdhuO9kbxBc/82P42GPgver+1K9gsvuSjBkLiL1TiL32qigh06Mv4ZCJ6Xekd4iuywlbxV760mYCVFAjlB5rjOFnU3i7+2sf9fimRozfqYoULwAqJdI/4qiSBAJaOdv2Or0dS+KLWG4befs3nGKZZ8Tey8y2ZAAzUI75MGGafr8eXe8TX24aMIhKBBD7x2L9dW2EsfY1jqRPaG4EXvv5UeGFD+kbxt1iBj7kzTTMg6Wh6M5MgmXsoB2V4FPzpmrsgdv8bRPb11HG1sSsRNo4nAoax6+98iS7jDXpigxEZ6DD+TyJkPKondCOaMI036pTj731Wq73im+tF92KOuuhP3yb+wVlGMda6ac20EunrxD96VRQWf6HJgbZ5Buq5PveAgQyYE//kLKUmzxW3vzE9Kv6ZOOrpqEuIfyF+V5Dt6bT4FkF65Iz6DY1mFPYhACLw2/JdKBs94zv5QY3g6XSL+A5Jkh5f9nHtsrEFpu+/2iIvI9HsCfPzL0GWHZDlu760DeI8VhnMkhD/jpL1XRrVi/N4S/pu8R+NNeOqgeJRDgSmdkEqvm568MB2iVF7hBzoKuLsSO/1EOU9LY6aM9lf1mxp0i6+jx14L3eA4VvSSfEDlglScGDXQulmcQcTPowr1Al6NPGRlhy1qpEEfP4jxgGYPBHjTpgoZnZ330t0ayb9cM2Z9CYdG2iz2jN4QaVl8GbxZl01jI1FjV9IGMZEwg8F73jE6HTM2f/0QZ13gixFDI5hnUnxI8U9llQ10jHxXz5n1046nq+sb/+9Zt9+7Ktr0V/Xov+ZaVGIn1h9ytFM6ha/SmtoHWtfTQy6lZaIJlxNtoqfypJBqBdEF0gUXOe3WmudP50S/4NZthL66jWRtl/8jMQtF34OiKH/Zd6CjNQKCeWfS6HstZrdLJ6Q7W9LtCVakSo46D3WoKeVLD2jn7zKrV750vvFA36sORPETqa0dVVCYqM7vYHXZDnVYDF2zp0J8SBW7L+yyQ0trDC528UFrC/c41Ixu0DT+SiOkuGE5y7qOBOeJV7kbxRRT4uw2QHK84v9rlGPik/o6VA2B4L1IS1HS9a14iV+Tw6KijOWGAqBlL7ot9lpu/hLL7YLKc1d5frySrksNQxzPeSFQENdL10pl6Ouq8Q9q1WluBUzbwU58jInda5GCZlI7xEvXxUddx17xCtWRas+94VVCeLOvUm80omf3dUHaEolxT+gDI2p11LF3ipe5WdV0N2IyDURVwSh4MN+18rQhCtDWrzaT9W57RtdrsmvoQnYo/j/OUTuTFK8m9TQYxdm3mz4wYTGmgD6HjdUl9DH3dCghL7XDfUjtEW8D6F39x069gAAujJt4v0IKPTpx17kf8TwGe/XMF+b+KAXOCl+yQOtlPhlhD6LoAZocz9/4oknWkB9zmwQv0L5+5qOPTiD8+daq9hWePkhz5e6fPmrni/98uWHPV8a8uWveb4M4suk+PUGqghPqAbQj7ihRIJ28VHUCj6gNZDmNxvGRnhCsebLnuP4sQbiCk+oBlh83AOLBIzbxzF3jHLj8vYJH45ys/gtriR22cjAgP22z235HLvwYg0zXi9+15dezyIAzLyj75M6cZHviordZhdrFZ/08cxoYY7MQBc+JZdABIctRm2VNu3dDmAcgJ9urKBFxJUG1HcYVlkHwEBAMxT7PR9DIlxsKwA/0whMid/3pZW+DG9O8pt0z5B4bmbLGj3uXStDTzNIks/6Mmizwr8Lut/Ujc43wgB/0GfsTOk9tC53NcFLXy9qD7Zgg84MJBJBEcaFLIELWQSxHxUiwaY3S+9RQ7STkYCpDqRWTowmRCflssVREkpu4JIgjvuaCLLJVVdyNCM2c7ktdWpKUGTIXhfQyjZqLwmp7dxyh9hB5aKiWy59fU1ZAVJzNEfrL8ptDUzfIK/GQXEVGsTOVTm3W63KUNRjVR69WtZk1bERyqagrFepJBSYYnVhKiJi+Nt357FLfnhoIeFx5Nhr8IEYR70hUvf5j73EzwPFGl5TJm18Wk+1w5h0DOiGDv2+lujcjlN1zrjgT3XCu/RAKtEubkwnErFENLtxSqGVym4YDYr9iDyMy81149Ju1zbV6V362AV/5n5sZaPkD9DFNg1sTCTEwXTM0f0usKuDoh/VMq92ptoa80PNAB5IxyBLp93ksYuxqbDUY49d3JdZNPRUqkdaszAR9+s3XT/Qnki698igXAY6mgArzWpA6otTHV45semwuA3a2A5JJjiolpm40ZVKQzs7iNwkDbMAwseWgabRrQ0924mTb6c1+W5GyXNZN+ZTm63pZU2r0aS021xWRvdom5hi3pqG3xasEkZ+dJeYIf6GxxRYIA5rClo7Tq3dLXNeI55FFewUz16XnIQ2t4kT1hSjCUk4nZQwhUGHyFuZ5BzlF53iFNsze6wJTa/2wquC45Wj1F4gODH8sceR9pN28ggnQa3NfDhoxFP7Gkh3tZXaDCNxDTCApebKqUcKZAQY4Hk8PhXuig4wSXQn14s6kiOkyhCpyuE8qxH9dXi3zGreOeRvyN0i7uX6NVICIMv5tImAMwA+eR1kSYnn846BBpxriTSacnJgMfV/uIkO8QIWYW4j7MrHth2KvBCKpNdfRB89IB7QrqgZR4d0S/InRzeIBzX3APTy0EC2Ti8xnWtH8drJGnajRj0aES/SHKRjaQWpE7Qi6KMbG1jZsBi5HUa/nofbR8PixRoXTnpwcjtAG5m4HTh1kQXGVFycxY1iFvi9CGoWZWroGinQw1L+Y9LFqvVif9L5cMT5sETVbQWtCupmYpOC4FgfrkUB1WG0p26AaXHjAIhXcVyqN6D/Z+40mlJ98OKmgS0JE+QvWxwJayYkQuJlRInRkHilSryKElOmfLUf+2aKV6g0WCKZY1DvzdZqcGCgLcEzIxERr9G4mX1rLDfCkbUveOwhsiCGjdOpg4Dx1tF28QjhAfRPO0QP/0m7tmRep1lbMq/XUCc7DQjewgj6sgegwoMDcUbSB52+hFXfOhqvb6N9DZyjXNLC9zDgeyvqTjCB36hORd6EiUNXhPBBWDD6eZGz9gsBv7cq/CRndgPobQok2bL7shHO/LsGi+SAtUjadfRbqSFiDj6bGo3idiZUeAmXyMZ22hvbwVnzbo3fDov3KIMYFatm8bg67NudHe7NgAzbLPWqvibvIwaa9UDOX6RG+maOvd4/lRDv0qx5MiRnQVQ8JnOgxmQt0+HMHkOkbqI12Ujw4DmGKSIhPErBzEmgzmHKvSkRFu9ncQLk6OaUXAY6HFXErGxUC8zAbudjRBbgFqSOcBu0kFu3jrDXCKVGoMTogEjw8aTqCcgO+gUCsA4YyPyeZnSn9kD+2+Hf2ABKzF9VElOdgu2B33Hgkc3i17xfdcjVe6v4dftsNsQHBVGQD7ai0i4+ooZf7np1yNU9K3fE9qjd/z25h3TJ3Iqff1Nz8blTWzUzrcZFX2qSJ+ZE9gjqs0CJ+dRE18c06Ngd+/WPadC1T9Tjb/F6RNYxzXVMcR0146KRmpKV3I6VEF9MYMujpvhtjVD4rA8E++9geor25iYkVAMF7Hdlb8PYK7lyfNkHBT+p0SL0ZUc3prjay0Y00w6YG8hXMGKk5ZMS05wJG5/VUjPwIi6TRykZMz6npe7EJNFSPt9lP/9QMy5qqTj3LJ49Rtr+kOQmHqU6s8O1hZiEefg5x8DC0KjTuNHnOGrZzSqJp/njsSlp2UsrVg/L4WflND0M84FAZ3zGpzT482ntjGH8HilJeyH1GZmyZnIs82ygYYb1PY0kqZJNj5Nsiimpw/qlEH+g2dMK1UrhkhswBFbtLZnPakYidbxOsOq2iHWIR2GZu0E2dt1C8v8D8Wd1RGTOwkJzN7IaTE3r+F1eKWD80uJP8XGrfeSnpn37aJf4c/eRvT3dQaHbnOt2m5zxzCZYQJ/tLZ1QGv2DDu+f46Glg25umzsDHbDUfonERMJqD3UgWF0sCSUXnCYPBTrBm9VWposGwL7s0hMRZoqvSG0O0nGpzjmLxKUu5yyxiiLqrW1OtYC+J8V/06GmYw/GYAFgbc+l6wVgJjj6KdeKKB7+4hYSFETN0aEMqkVOEomyW2OeyLwKV/XnNlD5BNCVJWOiWXxVc9DVUGbJOrdSlAptK8ROJde5W4E8eEGDVe5qx67RSZKy0vJqFX/D89JucxUbKCS+TgPpJHg3kNlBHDQOm2XtfcFDQJsYEuUq47N6Kk+LOYjHqZD4BtEOEn+HiVOQ+CZBLhutJKC30qwJi3+g9nANMTK3AGFnadMEO0BbDWtofmpD4gJZqWPA/nOO7RChtj6eRG2hzH7ApgDYzBM2ZB248kqrGRglJr4laXWaGAfL/gjHZAEK7wGdICF+KGcHnur9p9TnE+JH6uLRf9pGz3/JfBHx30oHvxpy/rihdFj8RMoYHLGfKtj/yIpQJfyZpGpyymCz5jCw8786xFpY/BsvDZD8rmbl+XeqV+YxxX/QCzR12sX3tHQMhCajBb0tItwUP6AStMmczNxoPKSn9kK/zwzQGrT4iNFinAXVYyOpHqW+CzpCypYystT3Ev2y0QaSDfjnebTBifzj3J7DpfsmGNkKjUUYhNe3sMnTLs3SYbyZ/J6HYrtxMjXP2oC10RG1hox0g1AmA4NdtTTXLZBvHmqlX8uq6MXOtanOrdWv12nYrwdQWNSIp3cn1mvFr8GmPeushvhYy7wZUVh22IXXWNPiaUII7FBdSacrQi6UeRiRO+eYs087cleIEOmx91oIST322z6QWH6nMtwhHsEuH8SLg2R7qj04Q17RAH3/mMeu4s617i68Xl/7JsjodXzfA9X/zro9SFXRW/S6eyCgsr0dS92gMB0X79BJM0HB8k5datqQ/EWZXPc2FVfXq6q7gu3OZvEunagllUo2Y/zKjPHnHq0zYx7T682YXUSIblA3X6Wn1aidlzuYq+9rAtu+Blu/36mbGpl7QNS8EMb5hoG0pWPZOzNqL93LNrmEKzbbJu11di+VlkoJVUAHSoHMblgmDvREYOl+j96l0V2RMN0tfI8Oc8GQzfXRgesQ4PUAMqBvALnButBap69GxXt155PDUMdaTkCDm9wN6lk0kbdaKx21aK/M7fVbY/Re6lAeK99XcEI/qPWGQGX0nbygUbWbLKENiQ8QfmDxf1CXZBltER/SncogaJ2/qqf5ynH2RRqsjSnxa2p4m7NdQPVfV4Wd20C/JIEtuDK5sA6LX9Z5jYsxAqy8wKtfUa8cKwfwk0KPM2ZehD17seaQVdsde1db0r7sg1qCxcEtCWundU3ZKQvIow+qTSp5FdUVZFRZO575zAASL9HqTKd9HjvvyGY+jz1ya1eYWRGby7yrxehIydNGkGXw7xD8u39/8KP6R/T36cQW0vjaJT4mxUNIfBwTLb1qZEFr+YTOWssm2p2vk5AwzL/F45N7gOZ7i/htBbhAACU82z1PB1rF7+guIG5yt4rfbQTGxSclUO0g6l6binvEpxTb0UIPXPVpfQW1XB/dIX5P5lZjDYnPIOQW17FGq/h9nSjuxCcsPovAF9L7z8k2blHNAjDEohky/oHO2EXE5xVx0P75Q+bGnB8zsU4/uk38EcNttJrFHzumCjX5JzLTaUeTcfGnrjlHJ7/uU2QBJf9MZ95laQO4DChBH1KrRuhK1wyQ9Fe4WNhLxUU2+/9c54FpFl+QbyQPbRVf1IEQF7XeJBjaQln3qjI8vGkVf+HFSH+pgBWL7hvEl+uAjiOQW8VXLIZf/wmNoprjgEaMpsVfKebi2WRz7l7x1/QuE+P7eqpJK689SS4Ynqf86zM75bm9AD6o2zMHZvmqc6YUAKs28TUJQuFkz/qD4m8ksvJae90eTP0+2e664/nR28XX7eK+NTdycr4VNnLwctZou/hbiaJLMmEj33j6GpE3D0xgn7/TiaLOE7hW8fd0qcwF3Cq+qabNB6WoaJixMb6MxvdJHedr28U/qsI83Rs5U4dc/6Tk30qSDXKlxT+7cymESNr9S113PBvqFt+qQ0ctgI5pdEGAafttlno91n1JPF39VxqIHjcTI3P9G8nDHrl0kRKW072O99zKT4tLCSSD1qkNuVQCg8/4DkPqSFqZwr+hdIFm8ZuKZ45QRQ5FCvJJzRFeqAPBg40HglNJcZmls7xz1TeAKAvWRXrQthyw7zmscRoVyrwQlv6XokJ1ihbkM1DJnpUPHNrh1QoHDniOVHeQ0O7aSqeqcTcAET3Ful1r5jWoAb2sXvk4PnCdtUfreaN2hbs71pWhqauh1I7VSsE/WQ6IDEUdG7AvQZRervX6sq/Q1sLD+6bxWng4S62MR5fRnTol93uATZlu3cfe6+dL+u2Z46B5v1Jpj+PZ4gBurv5ISf3/wsQ4KAL/TRBY334sF7Vu0P5+SPyCDBYX/0nT8tjFIXkxED9YytwONHgYGQOvyGy1Ns8iDiV+XTtfEVQFy2BnvAorw2Otu/frP9VXO9Zqf0ob3O2I/Tg0CNM/+2oN5MJrpMGAuuH/StEphVNspd2eKC+ClgHyfR23kl6r8aGcn45rGs11PnTjLzjUY0eD2skvLOOZn0eeuhKkqrrxig1nLphQKtGjh6wTpWY2iGWWqQ63QLzz2KPyHAiEkKKhDZlsgBypg0SV3HMdg6QyA8bn9NQjGpuRB4nkHgq3gx2t0VRfhWYixslUB+7A4Z4V7SM+/0nsIx40TqcO0XlVTKnSV3LgjzPpdTSTBmIJ1/X+NSZQizMvb0efgMpe75KWWVBAwFRj48x1+rLWvYwWZ17eqzoODbzBaZCqqv0J5zwLrbdqzMtV4xb9OG/Rf93aou/MNIMUOwnwcbyEl878LorfS9zHHqlJ2T29xeqprV31adnhhOdZHLxxiGeUzKujvWvtSqAzeKInXK07bxaGMr+MPXhU9sCJe58X7k2A+1pXTNfAOrNa8UZ8m+rxHTYSqVeoMY9mdY8D0kbTzq0m4Xr1Muz2G13dBu1WpzMsWVvdGZbHdF6HVeG+WptwVcn76hsyRwGVN8mdLedlmMYWr2Sra0Nm3viUnnqzps6kwIZ+hbxjvpBD+/GV8itKHK9XuT8gzuEZsExKPa5VvMyXjvAwLWTfghMcr9+/VcMzj4Opt2m0X2ga1qnsQJvRZO0ehvGTYblXF7OSdOx42diY+Rqehb9d65GfGvdE8Eyuq0l+bGwfjeNH7s574NcMpBLqpLl+qBrPbG1Dcz2WoDXj2+tvz7lGM8rNy61Az7HdmBkxPqmn3kHqBA3CKorEajrpZWNTZjfoCe/EmhZWVUguG5szh4CjflG7giPahkPVt+P8eJdkHmTKS/jlxeO4788qW0y8Az+GDSTwY9HsZktzgyX3Lb50SyKSsF+qozJ5now2QId420qZbGUvIt4uv0WVD4wCCegtmcc0IMf7LD3NheQzpa3BIP8if2kyJL80eZcPEHsMm32lJrctnViCEnLObKr7L5nwGb+iJZqNX4C1d4LW3kf8a+d5XX2eVf9LfOOjmvnVnd7BsIzZhXypVFismi1WpAMJMSMzlfNHyouLQ4XqrKkNO0K1tEiXlIfRDS299U+jC1f2ULheR5jmElTO3twj0uPTDIX2UZG3KFxUaD5fXFyuFEwjPz9fmEW34PURHVZyQypdL4pz+cUiOuM9UikskTN1KxSX9AncBv0clu4/p2TgKNnjKTPSL10J03Mzv5SOM62QFVaEjPrYFY2xp9yRxCKl5cXFydLgIrmfnyefrZMljvOiYnmVS4y12SZpzkisFFMqxKGvzBBntKJHcTQvR0gwO3aVigDmG6lV0Cczjf9ITbq5NkPMIlYErtBCntzBm82c4EGM8aNy6RtjHFQcAen5csV4VVZsEunHVHWA4z21VpxQohrGiOJffhZW3COrtAxY5gyOpNDKcS+MouppYxwsKz5ASvlMYwe/tse2pB2ahNj3TmqwVc0mnBlqRoVUIgGUUiNZYdxbi9WBZWDxSv/ivfnzHDmgWQHlY6JYlbkPlyuqh1aUgTC6xpewumgtLdYb9uynYmul0FtkaXkJkSTXexZftcwBz1eKpwosBMxYwTVFzLhV51CBXsw5QDydMHAJlo3iX9v9ND6pycKw5ooLv1bXI7NX0gVUTKZKKh7kRysIkdsxs8J+gyeYW2+reE61jRjmiGSelf1IoXAPD19L/XgKJKocvMIcSZCoE2J7Go4Ti5RL84voFVLmBKpPYj56StgCCrMSzMQUi6KIk8cS7llEgrnF8jTIJdhjH5WT2DZbM4dKxE8ty+ZtD9Nitp7zmi0IlUm4GfgwkjKqYPTU4mBfKhIsymwYenDRDpnXGFYO43oFyyUq5GLuXrONCMOY2j6zA4ScuXGWCQty9FyxvFx1jYGMdEKcP128n6MtJhXru7K2OaHWaJnCMU9oxMxIwR4q018l3+aYVlIwvFBYXJJSv9kKd0CPVtw3RzTCkCJJ0pXXiiFYpjab6ceaTa30WDfFEkxjRygljAfnnAaEcrTq7HZz1dXdCD6qudVpTQgs6JoNbRQCYKBSzs/Nkrd7yZzm9PIpSa6KJYbVO3GqPneounyKNAUZBAcfcaXHYCuTS5SCNRm6Ucmjn1d4NMnzJg8DOcKV/TA3lgqFuepMedB6f5d04ilrWQLEj5bmChV6FA1oG7P5pfwsOgwNynmhgjaa8pGK+RcI1SryUaRq9bPqjsMYGZduk8mZfItNjioB/DVQdjDMGKAJ7wjTqoyAuFwrjBdL0oM4S47+mhkoAtr3maIMA8KVcYwAGYCA8gfJgespMyzlGiajhL/qn580lVVi/iVskthOwRvDqDYfqZTnlmcLlXXGRjVOWKoFR0mtiytmBz6tC4Uog0euGmzUI87oYWilXIGVcnBy4vBYP3rGNqfQU/Tdd04enUbn0GMj4yPSYbZEzO6bFe9khbAsJsmbQQ6ZigOnApXxiuQIRYWTyOHNWAU72CQnj3teOEI3TZRBO1xgOeIorwJZpmV5x2rQGF6vzl96pzW1G5g+jKTNl8g17ODY5DRQpcH3d/PIxMjMSP/YiekZoKYZYJ+stpNt5ZM7RmqYw2Ws1a5qzgrkeII4lwJl2CFFI1TeEeHDIUhkBCbTnnLonBsI4cgiLM5XkHaMIeDB1SvEh7VC1MZtG0NhHldc7whsVRcleF2BSa2ARSnb7XCds+EnHa1HBT298mA98Slgp8L952DpVB1uJnY4odywt7Ff9xMSPD48Pd1/27CZ4Oxd9+arXaynx4Yn7jg6fHT4xOH+EXTZ3pLrnxgaG546MTJx5+TtOB0njo6Nnbizf+zosBmdPHwYXnHWZvk0fXRwEBowI0cmISO/i00Pjw0PziAXTuHsjU7DpLbwA/lbQsWmio7CPWKo+vIADwPR5oqzFKU4D2ZnOF+tlmcpCoVvPL9kareb2p0YbjVfqgLlzpr+I/kirDJWtoHzZuSewnm5kGJUUeLYGSt/syPnTNnUxk2TlwKsPgJqBLALW4ZWVsgYtpZFO3I0hz6uj3scdYpDWMakh+OREq7kaJGGmBAWRYbzswtS9GL4CAdwBFcVjOvDCWnTGIqQoFzJ6L+gV0LzoFCaKgVkMKqKBv65ShlIVzLDmLhroQgio8VavDDAHPB0lINeyzacr6WpMl9cRNf8zfJXYWapSNei7ex4g7QdNONMW4cH8bDMBsJW1QVJaqLF9QgVRCwAPBjyAVJ+MNLn8LlEuwJmgOLwYG74YXRDKNVwRP3z5UVYcjAOThEWpbCMGoWI+PKzs1AIXqvOhE7DOC4B6WSU5jA/QpMhWt8n50GRlonDskl+IjT8GE/IjODfEc5t4gNj5DsL2JjwR7UWt9OKAq0NIGg7agPhCWtQ2aN2Gt4E4En+3AddMGnZqNDyEAIQSScKi5iXRrbKgOnA2WIJyoTgh/L5S2WQnhjZtFaUa9uSlK0rRuWGWYuvtWk0BDGpegmG4POWi5XCRBnRrJrBKoXyAfWWfpWLe+BnnLn0wxE7rMgdqN7K4LaSdcO1shKBUUjarBWslWngArUyDn0z/Di0vKj1OF2oWbMe05Aff3z4hxyZE/Km7/7ikgr2qeVN7ZSXH3OTUUEH5l8NORyY48GTbgYNXfjIibaP3JgjNEgutaXrcp1dlwcs1+WRFDo5j0HaFC0MS6ScbsxN0c41KjfmaX7ewC1sgqeE2My5uwhqksv0NrGVodu5THdKOgTfyfjs5vd7+Hcf57ua32f5+QYu18fwgwzvZ/ggPx/m97fxb45+E2KSn6WD8h3soHyHKPDvaf5d4N8i/57hcvekJKXvI0fl57nW55PzYVM8IN0f68pRuanckuviFSpxSSZuVE7IdfFGlfktyj3221Ti7SrPYyrP49KNtSk+iJ6zb21wOa6L31Q+mD+mIJY78U8oCPsVbxO/o+plL+Ldyme4brsK/zOV5y/Uq79UkC8ryF+pzH+tIF+ViTukF/EgJA4ypl9Xb76hcP97BbFo8g/KZfg/K8h3VZv/riDfU4nvq8Z/oPL8UCV+pBI/UXR7Aul2Sjka15WjcU08LBO3Kj/gpnhUQSwH4I+pV+9Rrz6gIJcV5BMq8cfq1ddV4u9UPf+sIP+hMv9YJdi39yny251+2WC6G4/z5MFNIHuQruoFekP0sWf2WnkvbhC9GXaJnJWtm7PhVwwyI7pbm8Q7ENsT7YlkSstueMRoNnKJsPEZjS5WXEWnGx3Z68/oJwu9aaGjNxxD48+cbsrekuGUbPL2y0Y0vV+8mq6myNZ6VOs39bbi9YiYfKR6Y+j4WjnfpbI7xGs9y+YeOuTMtn+FbOtpYg7vukgPxa/X6ecNenZe1pRBH/+v1+FHF2/QHfVuFZf09EauN5GoL366oZVJ8UY93aKyyWrcjThqT4o3YWZZuyzSUOFZrPBK0fasGKBvdkPf0NhcUbxFT/tyb9XdLaShhbfqPa2JkNEkMQlCAhtbcDRr4G0gLLyunj2kebcle5PZAIIbmkzaTcoEIH0Fba6r07+AV42ePkSumGneo+FtqbpZ3aNnn2t/eHSbY/ZSku44FXuvRqie3rX6PIY319Opd6H3OujblvRux23jQPawdamvI9vO5/mRbBLxexb+OcOOp2/wQtOmgCeG0mH145DOdTJ5UT3otMod7N0ECHU60LmJfjuz1xMC7NGXCLVqRTddQUX75R2Jjro+HARB8j63IOloGK0Vyt60nrKHxPu9y3Zi2aQD93tWqOFmvIy8LrHd0yiid+CnQDA+a4pZ72zrEbM78RqvVaKhIRuXU/iBUV3GRhHpmADb8XOoLXz5PKAuCeAsd/BsLuQm1q+uggysmx/WLXaVrTgQvNv6tsqzsAOzbUiWzRZmajLFVkZsH0VoyAU8UPo1uZS7R2QQP+xaLT8MzUd4aLLX8tv6ocmKj9K96/U3ezde/H6GSPA8vEm+rrr3Y93XQ91tidbstY8YMWB5E1keL0D82mpNLrqbLONXWr7cx5WcjwO3fVzvMa3F7GyjPP+43tuD7e9YvXXZcrJh8XY32CIbVI1c/TQ3dzd+SfYMDdde/CjNrtvgJSrSw18e1M3uEfwojXpu5fQit6OwTYE6JrzNo6oGQq6nomP4TdyVD/86hN6ddTWva5zXUe8x/GDvGcL4k88Ixgfw40FvGbOu0p9+CqXlp4iNZRtWN+9s61vdPrMCgnWNHFgx43qamcevJQ3WXm5aQdtxTOfdqHFut6azSFi+S7H8ypP6JH2AuaI+FcKPMuE1iKQ/YJGU66wTSZ/X7Z5AY/Ui6V78QnMdLfRjCwdWEnrraHixruGj+Alom1K9bb2q9NTMsSpW266qVToIaPX19T6dRtlZ/FK10T7ZLI2yDtswsbt56CkYZq/QvNtje2iLtIdSdrMOMlxRu+vq/F55bbtRGQ2KeZzGDbP7z5607rpffj37pMruoM9t1yF8vLOtp4m9+Anv+imxU3xpvbJqpYzrweo4fjV8BbJqG8qqBtUDyjqkFNmbKDz+8oqq3o9Vr1dRdLVYpyi+AL9vrm/YoIZR5fFs/AA2fuNajUcTSlNZpfnn4xfUjsXZahkUAN2pAHSuoADsQVx2ro6JwqJeYp9fsfEW2biii7eO8FSaXsbPvR1N01Cvt8892PDaarNHs1XPZtfV2yff6Dx+vn6FLLYDW+syVueluiV+Dr9Rfyq81IaNirqRqxcCp1ZsZV1kXFcbz8VP658sd7RiCzHXiNTX/2zP+teF/zpqH0MPAA4hm4k55FhntuwSuh9aq7Y+/IbfW2S34Gf8toWwVCfsx/Db+6cRj28+STx28Lf8a66X3tnWszJNoVOAtFP3c+mBp59Mnb+ooQ+Beht75a3a/zf7s9aUf95lw0wvXRmKT63FQWzxJLpF8OW+pVNkSPjByJCBHoQ4yLsHdfydSAmAr6TNoxb4Ld3Djvj2OloYxBZuWUkcr6vhejtir/jOlex77CDfDetQA72zrc8G/bf16nUrZVyfMvzdlZRht1jIXutRlj71r6xdtuKxwf29p7Jn+/1nbAesX/zgirdMGrZxf/gk9nPqKulGZweWGGvgAY47h1twP/I6OcT5Q8achuZpu+cBVT0nzWJVZBC6Smc2SAvU+2hshapto7CukavQ24Nlv67B21fhd4XqZXXNzD+xM9fWyNwn/ke3Y7/gScyqjOTa8/wZnuHg7otzzTy9ounSjM4cLB0wJ51RU1Wv0rAuy6p2VdC4s+Cup9Eoof2TQJ3g+7nuua3yhDVWSbtrmaS4QA426PNchM5gqJ828SKEbjz2AEfYerEuM7/EI3NSXPSEPuQJfakn9GWe0Jd7Ql/hCX1lI7RnN9D2FVpG+cTawOve9b0NECsolZ45Z/hTfvq0P8BfnYeyQXRBKMLpYNY4o58Mj24Wgj4TjvSaIg7QKECb+fPzCHkWa0tLXx74HXIol5xqEVEs0acpN3wtollWodztfUPD6EYtsmX4q4vO3s2JdCIlh595Im4FKPJlxcCtiajYyF/16tnWxHZY77voNge1ZX107zpJS8gvn9Ghy5od6SJfMR2utya85TS52trhUYMrDxM3czt2MNWrZzuJnLvY3VB6NCF6qBVDXEV1baBPofciB9I32VZO2zVA5sX4wfIm5zgBdTaTF4trLN8HvtEof1F9aUC6KrguLd1T9UqkczrkuJ5ySG9qUex6nybzT7nqmoqoUscuxhQa70c0tvTgpbSA9eV1gMJgxcSNynsTFO9SZAfmuIl6K8NhRSjOy81M5QPc061OCoxuFLcwjYPiVkQPOnCIO9A+1epuR0WGoMacvrwzH0JcM3UkSw9sBJINWN3cBE83ptWa2fW0Yxt31i5xjTubd2H8Jh1ZJt4j5SvezHMRGVhpm2sOaA1zQHc4ylhhDjT20BBDCIFUUAxj6or7rLv6vGc9KFHHkemcQwe0cfTNRZtBGMztzHj4WXyEPGNQFxJMeKiKnhVLENBVyZf9RlfK1yOvkSm67rBS3fuNw1ff0L+hO+UfUN4qOyxvlbG6CTtFb5OjMTFteRrw5/yj7RRoKtYbhYms4GmYeS3WuDdlN+cuon/Ao1yFIe60UneR4GwaNcUxpmgSqjxuSZ2NPCKtAMcmyOE+B224W5bl56R4lnx2CYCYeDbnkiIgIZ7D4ZucQuK5VK/MMUge6zvkqt1rsR+s0a29GRjrxrAL7n0cjFgxOixOrliJm4dXraZL5Jkzb2Q6dPU6ZCs5Jj0F8oHwgYK7YDGKiBHisKFjL0bfbqPk4uDdmLxdJQ0xRlnQW9w4p2JiwhqvnfCM/pKU4CGI5balKXPESKR2s6hx6lw9sGolnWtpgva4+7S1lqLMGPD7VXXCa/cKda25bGUuarDM7/FAcBcs9klV0RUt+u286Edh0VdTVlJ73pp3jcv+l2jZ3ytFXK+lZMKgywHfBwQbZHya6kTdLmCT7S7fOld7y5b/50v9J3QYrX0uXUbl18mfy7aB6YQhdSKQV8519uo6naa+k5qjk3p9JwWFjVhJlp9lWV5aVZYn2QdMxCXDs+tFw5LjcWenlAjmHqNzmbizmy6pTJ6XeyzZ7qAc+bqTPN7YVe+OeXfHxZTNCi2nn7PMdwIYcbJubbh6f7Awd/pMcYHiPLygYRVIil9gHDosrvADcV9Il5DQ0+WDKtSD6GWuzqF78Qte4A6MyqF4e4/jRRIjhchehcRLcLvrOqr8Ia2BAugd9KUS3Imx5JL1uj/geAN5W36lVqeF4hJFYehiqunRuHiYHJ5buCRHN4lXu0B1S1Kb9MDHSFmTaUq8VltR/quaVpngXmtBmyRFh4WcXPY60LGUgQih/HeR93XeL9rE690VyXWvYSUZjYg3yHEI0SgrlR2dhEJKOqqKi+dZjWyVa05cVOpBYQp8yctQzV6Glq1l6Byn4uJeyytqJHsNuuFJi/thXF1LLtIq20uOTS0Rju1EKNblRqcjUlyvfoJTrq9uefFZqZsGWhLN6B1YTegbPXWgkHgHsctoWLyTCEi+sMmHVyyHHrnepVkqxTrUGVhhnU1Kh0O0Wiv/rlXnw+3Oh5r9EBNvRgz2K9MzhnH2gtmbgSQH0APmoz6jKXXjikrgwf36oxrFIZH7yp49D4sPqQ57iYWw9NC0n17jDUlgbr6auJ+cc1/prGqxgsfBQN8ELWSlN62OXjw3+qjm4NM+Av2GC5S7IKYSGD7LZqRbJHkdjBsT73XSaUoRYMoU7yPMpZ+q6gpkNzF2H2THXN3iA1p6s4M3+7KHzjjjEPed7Jee739F1YxuIV+qG4IDKjq40jkWttZ95TRcDweuSaR6olwriTJqK5iKQvxwu/OhZj/ExGUXtR3kw4jIgxiSs34x4kjGMYo5oritu545utXHM5m3+UAtHXLWAgvAsFXfYZvnB7YCjSlg320w8X/Xru4gwD8pJ7nXPGhtYP5L2ugNagHagQtQ11p3vHOPUni6QfTU51p9sK5u8fuyrjAGu1NL4OfkiU8IPeVLx3fCTYNLWuPqcKlfOl909g5HIio+pdlsbKsxIFGVD9pPywx3ysgRUka3H3s0QHgD5FwdZMNKAvrYpYAlhf2ZUQxGM0LGLEZFios/lCxwcUZ6/9UA9EduUNNUm/TLJ0EGgH7+xBNPtGR2GfOp7q7Pa/U8Y8v0/frnNQxK8l0fzLLRFbmie0Ve6LZ5YXXbOCy90MWebgZxW9CXfJ4cE1EWND4oA5nGHpBRBvKj/WqrfF180t3IJzEHn3STdTjWwBaNjDK+Juu0OK1OjG2XqjM7r5DLgpkbrLDovHNi7RI+PmDvATbJJ6tcIPPf6IJwKxdschk0lvU4EEmE0a0gDa3H1tJKWvvYureWmpx6/ArafcxCQTmr/II9dlvltI2D0l8HCosv4oBuIM/wX+Ikakft5Bt3gjr3FVnzRqRIe2oS4Eca4LcZF3ypKcc8/husbLpPP/YiuTsPGP2tc105KqNZU+y8O+1smWeDVnaUtTKsbSsYjbey0diGa6pwGGR3AfgW0AW9wMrQuVVZ3/CYuRlqn6Z6naPWQD2bFpD8JiczC1D4rjqF8djKCuMdnoKhbtHWKCC1sxTqZ3/tN0KpO7q+Vi/KDu4PHfya9g0NtDPTaOdNvyYwzG5GH+FO7eKu7C29beLbTro0Sbr0Novv2KxxlxWn3o2ml0qXkvH1OhpreAr2VrxefmG+h+VoTFtAvVH9eybMqZsxZmAjxVqRkPXUbSBCoxQ9JKXoP3I+ZbuY4p8w43GpWS3b62qERSHP1gajZ9OKRg/HeyB2oJAN/6JJMW9t0bFGFMpc0mDtO9agYT59hu6T0QXRM/lvoUF2dx1iQwMj9lIcdSw4BxN73VddALbaVZcfU0id/9BYd65np6nrobar1q4N/sn66uIj+DMvBLI+++kg65OjXzizBOR7Th0Co7amS0FxPQjZvV4F060EYlTta0FDP2ytjngtydK5YBF3KJHHHverC0awUmRS6YYl1V5OmzyPXrqh9S8Q0bj1pszndVjVb3Kt6kon6x6928NMIDf5tz9i3GKcSESN/9TIRf7Jvv+CQTe+Io/M/1tLdBk/1jg4YR5y/FTj4IT/I3P8TBvtU7pdxyPGRndd/+uo6+caanOztjZ3R5329jhuCShNrdtS1GSkQFtRe691p8HSsFTYDVufsiFu7elxf4P2ZGV1KDqTxsnULsdIRhoUme5V1RKM4SGHh6KNNmXGYTbMNc6GJ8fbkcydgF+I8Vqsw8trE7TbU03qdmzHSjS/qAEPXe3qeJJXPreBef0V6us7pbresLp1Ny4Tj/MysdwwtOfqICtru474joHMG1Brvc61iZxybb2r89gOOu1d36byWrvlcWetjXvfQOxHjH0rurNOQjvLiRjMFuv2yoO+xMuuMh8WK3i4ttxWJ5THQulXTvpRdaSjysM0eY+u9zLtp7+Gcq9qeamWnpr18pJpyLoml2yn1eTC2vZcvbqn6gYn0Kbl0KvgdAUdWuJEoFKoVc7b/qxd/qq1GeWQW7q5NsnlI/k6NQ32slVVjiyl80pyf2r5E5bOKEN5WaftrzZAnjXRIXAVujioXGPGK7ZTcPauFJ1cGipIn5To+OkE+g/DUlVvB6/hYnWoMFucQ4fOc5QwDfytSk9QhQo5UgtDl2U2cuZ2tlyaWagA9kBadP4o/T37TqNfpSr8ibKzSemIr94xn+VSrdE5pZith7QMlpfOT5buqhRr7NlJ+cgegUFCF+kuV58t7OnJcqQdyBOtQ7PLFfJuafnRDkrS2Z4gLe/RTj9S0rWoD8ZDuf1sLQI9K9jaVL50ukDeTR3urKPoGNFqvdVRlwU0K46CEov+mtnqdCyHDJsnp3F56FtFPiSBvvRuBrC0HHzHG0H1zuBDMIbkdq7ePfo1ZuAEzYLokeVTgPhCYQ4dfAVOALOfM40TErk5ZJIpThqYX85KzESpMLPrCLATjO2cdCNmtZIl55EyA3oEdvr9S7je9JfmoA7MPVkqjMzLKWGi717ZvLnVwe8j8yNV5fh9cl56woXSbeP5Ygl9iudrswtAOnY/Gl0s5+eOVIrlCs4bMQvcWyvY2cwOLGYNgeNFFEZAVlIEwSadxUWAYWqTpeFKBYZTOXJfwVtafCKPzlSd88XsL5XKNemYrnWSnHPmF9ER7CwDbWe7IZh4lAgul2jsOibI4TcQgdy92Z7lG+IDKM/xjb74YzQPV/UqG1jGCVjnPT/OXgOlz+pxHPor9Abb4MzU5f+WvK0tLeZrJHOUG9NgVf7arvMjE5MnhoYHR6ZHJieA+XCCQ4fOQ87ycmUWVolqZfZIuep28CgcD9J1Y3CxUDqNPj1BrEEva+frXcVFCzQmhTnyU922VCmfsqk2SBw0J93ssfvHloocGeBjGhgzXLC8rzqCAMQ5mz1zzeisk9Ax26+q5LdVHRhHq+dLs1B5CbCcY7/CiWkHbPLUGXRA3lYjHmTJOqxWI+CseyvorpC8kRNipoGO8by8PSvHlSvEl0h8w7eKVzydvOLhb5B/Q+T/LgzpEPvE00WUfkMixs+Cnzv4OcW/Gxm+mX+7GL6LfcX1kI+4qxh6Df9ezx7rbqBcIfKT12H5tdtPv53iZn57EJ42iFu4BenlboMY4t/budQE/97Bv1Oc/yj/3sW/J/j9PONQ5Hru4fdnGV7ifGWGL/Hv8xhe4d9l/j3Hv+e5/P302yH+D/tauyC9sYXEi5TrthfLxAawdPnVGxTkTSrPm1XibSrxLkikf+RPj0tt26C70gd6m1HnllbEAYrH/HJ8K3pbxCusLUV+80r5JiT1bpFrumw0p7eiCa7K38iVcpw8yhJO78LdJLUvJD+U6IR2H3EAcw8Yl41YuhOP0HUKTktH5n25B3J0TT+Y3iIuoSuYA/RpyYEeeMeZcgdylGHPyhl6I+JRdSHiWpk7g1FqE4z2TWe4Ayf3yw5IvK8Vb9Gsj/I7oRI66DVB8b+5NypmLOx35B4kl0nbLxst6aR4u4pDdCP8prAqAdi/Y3XsN8kj7j72RtRrU4BcSvXQsbdCpSeY3YcHe0DExzQHGkjEMN4Vl6Gs1MbvdZcNvSci3q1l9GwGTJZMjykEpHETONATxZlsPTVD/e/CjPvgcR+8bBJ3ZLA7GHJ0Czy9WUsTiTJqzG/qtVJU+m2ayu+4Bv63mtEtI4QPNIGxayADghEU4UEJg7kjb3KZo5tVCt63AL0D0FM0iyniIN2sSnBp+628QUXp3HYwp1oxB6QyItlQV9CROwh5kqLNymPhAzi2p2V8Yg8cpppFQNVw7N1k7L5bM9pTzUQvHB7ZEMYkwyt1aZU5ERQb6OLLWp1IWp1IrqMTeCHeQkieH3FDU47GEc1zhkjFegzCkkdpAG92biNsghjEuQ+jEu/AZ8Chm3DAu6Q75Y4J2KKbrK1TEwPMx6bCFGNTYNKgcGBR2tvPMBCP3odh+P3c2ubVhh+M+HavAcH4gTrG1epOhWlLoZO2FOJQX5rrC2IQLto5setKgmUt6zLEPobipvzVFrSF2S5htcr1QGkhsmkZ7ozLQu93O3rfihvHBkXAiuLRjp7pM5pSyR4pL2Rvg3gY1oc0vo6x7KWB4evvfU1EIV+mC0q2QZl2upRGogNoiPtEKTLx/ZmThp5K0xHJAWvKbaQr+rdaJxwYcLEf0cldwrsycXn7HsdvAOUqhWt05Jajd4gHKvMhHZDo7JEyXDWxeb9284BIxEBM3GptfrUAbQ6nZZCw7Xy0kCII9vA2WifsN3FJA/UGERIi58xMLEasA9lbxIjV0EbMHBOjFmALZGh3PltV4HHgGLesKhXUbyeWtKnnwAUDHV/nhFh5L+kOYjVJYkXoBrvgfdJApsc4merCkR6l67vIFfSB6lbaD5skrumi/bBgZgIkBIrfAHDFXjFNazAGZe9MaZbESMCyIj+Lok9UskZ2W+6iAUxE3bCnF87lH+hQYYDZLMFT2IR5z5WN7sCr1yTDLFhvzPCL51pR2XZg5Xvp6rQ7W7vIw+oInMhyS2YnXA6KU+vN7tVaQszWF4fuzbG8GWAW2CkK9ElmZyYoKQSUybsow9jEQDAh2QNE9uBUgq66B/qaDjUdezBGqzLAjnnAjhMlnbCwuJtgn9Uh+SwqQslncxKJfqtxOtVNA94uFgC+EzSBM9zD7uwuEBqmWKRh302BkU/T3JJb9D14RNRqPJhJXUURDWnjeS8ez2yCebfPEhi4cRuFX9ympRUdg9teja9xj38biMA45002CjIpKB/H5ShrCSIffSKkVoLIU15+3Ln9wPz38TTbII9hXCsk3d6yGgcmvlcepSE9H8UTs2ssia50mV5AuosC0pIkBBn3fGsiXguD7ppro9vpmqzRixdjJaoh8YBSVh+kqIQ5ATjwfKRDvBfQPKZQlHFn5Rx70p9J4UBdZw/U9TxaEZj0TakbaATw6hjtOO8GYXuREjDqCnbZiD5iZNYRbvBDpvlOnxmuLJem8/OFxfN1O6VOI9W5T+u27+u3h7JmhIIeDBUraD9qM86dI9pl7aT3tk1sR5nDUH6OMHwGB2SpmGl3kaOlObXXMmduqH9H28hoQcNL2ZYz/2RlqlBbrpTsPWiPnYwVgot0r1jbyOlSuVKYKZ4tQA1mYtmRRQVOrC6UlxeViW/b9daesEmVDxA1TehDpQgIzFYTZ8DYRYOzSehspPrJcAuQwdbEbuKb2BRuIvfw+BsjM7kVShhUIiyS/KaNfzv5N031hsXG9KVguls0ARNpMNN8rAT5QNYEWdZoWX/uAgiHpvQBUn80sgzCkMPHBkEY8qchf7t1KA8QVl1gKlJpDUpH7dI9jtDC7tzuenNNZJQ1pY84SjfTZYFwj/pYvNmzppBUr3LNK9R4QIgnjY8G+IinFR+kT/wp4RN/mvG5CyQ35ZQYUZ3NPSqfaZXeCSO/bfWWUJ5FHBW3PzMVD4gOZ8WOKhMixa5Yo/S3GegYgxXEtKqSPK5ZhiQs1BTINfHVLeZjpvfplRVelKPecVAXFGmuMKlhkCUsJljM1uBxvLi4WKxy/LTGHXe3yF0l/pcKIuoKvZc1tTvqI006xKx2pD5SXwDDfpzFeIeOntDRSUKCVKjFRdxZjY+WT9mPtLnvA5DpOwN/1hPNNCZPlrjqJcdBoH1Q55+rPwS04roqAWqf+NnneNb5Xky95MCK1tFckhMj8xPlmnyJ4fNkgNGC5wHjSoeDQRkW0CM66Xoj7TaEppU76qETvC3vHW6RA3I51+tVjsvMYtXqZlQGfmMseQe+IQhl81y5f96KPWgac2W5ma/O8Bxrf/h0QQWZdR8PtUvaMC/Z8cW0gpnA0DuWFiBDW6X5EJEDi7nGpt31bqbCoZzM7SpWJrGyrVVgwBq7QcfuuikLUEAbdfARZOzx8JLrdYakrYtSqubXCsc4nrmv8Qb3mp1HS6eKeYoLVz/tQrOUpy5EYZiOhGk7H6YMs4xAaqpgqfIsp39sarh/6PgJGXzLKzxcSIXgoohwgyNDkAydYgm2gjIUk/NPIW1G7sXYO7LlxN/oK27pg+YCaT9v5/s5vI2f9Rc/beX74VcjnaWZt6fdG/s6B7zxc8AbnXUanTf8BW/4a6zjaBwAxy828e8WzidD32hiK21+Z3gTfDvn6uZcexm+j3+v5lqv4ede/r2WsbiONbUb4SnDBwVhcYBrHeLfw/x7hGub4dJ3MQWOw1OPuJvrfi7nPpVqSn9PS9+Am2U5P61u/t4t8CLv8K7vh4UR17ZglraI9+Yu5ljTuQEN4Ssup6WvJ2M5WF8im64vYfkLiqBF2EqbAQHLpccetL5a6dPrgLVTzMCTDUDHVu538GqYjyw2P+3BBUZvECFCKSjCaby/vVFE0inXfT+1pAfApNyp0BrdhzpFNtiDpuPqZR6nK6SHZH7STeKsSMSzzb0ZKKvUqrhnDTGuYcZRQzKDn9LGe+SuQpJra4FetMPAJK+g1gmPWtkpiqPe9dR3SXdefGzK3EgeG/gzitZsgjYHwcbOto4mZKNg9G4k/SpJF4k2A6wt1555NX0I3d5rV54ijwa4S9SZkBu86dGNYifXsYvqCEBqt0zRPeUefqtg+miS720F7DLU7h6ZBsOaWlCXlKgZeT18m6GnNvQGsxvP6Cc3UT9wc3UzZKJfmenDAUNLCYu5gtktkLur15oTVmqrlTL3+7r2pmgf9HrLjMf9uEPMk1Q9IYk7o0HoxE7aZwqCsjmYtgm0A1TuCJtXwewOUD1HW8Qw95E+EcELZrdxrbh9mVRgg1wAYNXXXNFUaJceEkaZpDw8RPrbG2BydxOrHqe2cedygiBRMWlfS1SV4h3NdC9+0aZGaf3T7dJTnm6XnpHpRrVOxcUNjmHbJj92uKkRtN9mB3UHHC+/blcPB4k5+UHev9yMm7zqu4YAfdY61eLkK/s7Vxp5nKN3gjyMkhwcoF3dIIv0KHC/za51BEfG9ZCJuxxzfw7qbaapEKcruIHRHHn0kOSsr99BPoeLC7+LfF6t1KCVFmol2dVEH8mr1o7QVmqQhq2+NRq0viZXq95982719Zpxmj/+UYtI/YTt9pgY3R4To7thYnR7cH83DKODH/DublgyAG/O7kK0fqqD+NltoWWJnQbpsoIcaJHOT2x58STEwf9fZinuulvfdaBAzV41FRXPsogo3PMICBbk7dDPt5uPhbyNez/eljED8m6Zy5wPoqmOV9warNrA+DLYWxgZe0xmsQzVYLkk72nVbRkoQyC8UF6co1JmoHxviSInU+By2i9ouN0VpobITojMyHdkIIf57pbLonbf9Ky7DKtubtr2s9PgDpyVHbLMbMu4tozpBLQ/XKLLrBYa2pT7uquJb9i04nuvEUkheeVV2fUNtnDdrkhv3a6I497teg12eZt3vcY5IX5XHm9tepj4KUUWaRs78gZq5XsKYJKzWW220p2pukwGpsnY96PpbnY4DFhXN42jNOowXMru99wU6FBsRzxLlJUxvyNYenq5ulQoza1kiUaHx4/MHD8xNjl4u5e1GJOvj05whqgzWLR9BY/fhvFXvrLCP3NsaMOqIiJTMpt9kUybsS6P2ZsMiY+sZlz6yUgKuIxLXYT5OcLmXjMZZDGGJlxGZJSjpzaTMYm5U/DUwqZkC8VQxd/NnHsbP+/g527+3cVmXw+3ssdh2HaySdnCpmQLR01tYVOyhU3JKJmSuDxez8/7+fkAPx9kU/NWeNouDnHpYf7Ncdt3gNH4My3dyuuBgdfp5DFfU/paVOdyk6Q+TPbga/xOQvB6FxVHeAGezO6yzEiw1tAjj8+y1rol8LAXENesnfXAES/gqBfwdi/gmBdwvAHoMCD3gCHgo3NwNAKw9wFQoGmdJGcnBOFjuKbMw/gVSYg1hBa+M4C7/LCmj6Zofz3ipBN/4pOU55euN3gdJNmQvxsUARPzok7QIaJp5c5Set4NkbLgUF0OoGEVA4SEOlSlw5k4VL7RMo02KaUblEkrB359WoXO42cjif1ax0AC+o9XZ6IJQ6Ezull0SRTtcr147K+U+HaR4VYcOYhuVJP6Mperk1bVY/j1XyudBm93uOfanm3LJgcmG5EACNqF7aD07LbW645EBmw/XvuzIcfan7ZtTCR9hm/LIIab0sHsBjDhNkL6GpWmz/BsbJWHpBsAyXYw+TZBns3EG6KON5olhD2vqHLHjExqS69qB8+NTQc9BRgL8nPAG5lpgqIPIaMm2AyKBdwEUzXPAUZbocYt9I2PIk4UrAj1zWmmof52G19HC/gNj6OUq5Uv4ui08ehgY7e5RgIJFXpyI7Fe3HrWrs7hT5EQUv4UHVi5OnUA+rSNJomhuGmFCRKRb12lP40XkaLkC6BhNu4P7e++bte29oOW+DAaJANOEykZLErKL4YBPlAHl86YxsUgwjNyFCxqwxzpsPP2etId8jgIJZV4m84JFkR2gwhL1iGB/HGLcy9Cfr9McklZqP30cOjYA/6pTi8x5XQ3Rp+E6WZTmnXktGBteq/SUf4vakC+CfT7AAA="); diff --git a/src/jsMain/resources/lib/three.js b/src/jsMain/resources/lib/three.js deleted file mode 100644 index 6db35da49d..0000000000 --- a/src/jsMain/resources/lib/three.js +++ /dev/null @@ -1,48037 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = global || self, factory(global.THREE = {})); -}(this, function (exports) { 'use strict'; - - // Polyfills - - if ( Number.EPSILON === undefined ) { - - Number.EPSILON = Math.pow( 2, - 52 ); - - } - - if ( Number.isInteger === undefined ) { - - // Missing in IE - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger - - Number.isInteger = function ( value ) { - - return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; - - }; - - } - - // - - if ( Math.sign === undefined ) { - - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign - - Math.sign = function ( x ) { - - return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; - - }; - - } - - if ( 'name' in Function.prototype === false ) { - - // Missing in IE - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name - - Object.defineProperty( Function.prototype, 'name', { - - get: function () { - - return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; - - } - - } ); - - } - - if ( Object.assign === undefined ) { - - // Missing in IE - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign - - ( function () { - - Object.assign = function ( target ) { - - if ( target === undefined || target === null ) { - - throw new TypeError( 'Cannot convert undefined or null to object' ); - - } - - var output = Object( target ); - - for ( var index = 1; index < arguments.length; index ++ ) { - - var source = arguments[ index ]; - - if ( source !== undefined && source !== null ) { - - for ( var nextKey in source ) { - - if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { - - output[ nextKey ] = source[ nextKey ]; - - } - - } - - } - - } - - return output; - - }; - - } )(); - - } - - /** - * https://github.com/mrdoob/eventdispatcher.js/ - */ - - function EventDispatcher() {} - - Object.assign( EventDispatcher.prototype, { - - addEventListener: function ( type, listener ) { - - if ( this._listeners === undefined ) this._listeners = {}; - - var listeners = this._listeners; - - if ( listeners[ type ] === undefined ) { - - listeners[ type ] = []; - - } - - if ( listeners[ type ].indexOf( listener ) === - 1 ) { - - listeners[ type ].push( listener ); - - } - - }, - - hasEventListener: function ( type, listener ) { - - if ( this._listeners === undefined ) return false; - - var listeners = this._listeners; - - return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; - - }, - - removeEventListener: function ( type, listener ) { - - if ( this._listeners === undefined ) return; - - var listeners = this._listeners; - var listenerArray = listeners[ type ]; - - if ( listenerArray !== undefined ) { - - var index = listenerArray.indexOf( listener ); - - if ( index !== - 1 ) { - - listenerArray.splice( index, 1 ); - - } - - } - - }, - - dispatchEvent: function ( event ) { - - if ( this._listeners === undefined ) return; - - var listeners = this._listeners; - var listenerArray = listeners[ event.type ]; - - if ( listenerArray !== undefined ) { - - event.target = this; - - var array = listenerArray.slice( 0 ); - - for ( var i = 0, l = array.length; i < l; i ++ ) { - - array[ i ].call( this, event ); - - } - - } - - } - - } ); - - var REVISION = '101'; - var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 }; - var CullFaceNone = 0; - var CullFaceBack = 1; - var CullFaceFront = 2; - var CullFaceFrontBack = 3; - var FrontFaceDirectionCW = 0; - var FrontFaceDirectionCCW = 1; - var BasicShadowMap = 0; - var PCFShadowMap = 1; - var PCFSoftShadowMap = 2; - var FrontSide = 0; - var BackSide = 1; - var DoubleSide = 2; - var FlatShading = 1; - var SmoothShading = 2; - var NoColors = 0; - var FaceColors = 1; - var VertexColors = 2; - var NoBlending = 0; - var NormalBlending = 1; - var AdditiveBlending = 2; - var SubtractiveBlending = 3; - var MultiplyBlending = 4; - var CustomBlending = 5; - var AddEquation = 100; - var SubtractEquation = 101; - var ReverseSubtractEquation = 102; - var MinEquation = 103; - var MaxEquation = 104; - var ZeroFactor = 200; - var OneFactor = 201; - var SrcColorFactor = 202; - var OneMinusSrcColorFactor = 203; - var SrcAlphaFactor = 204; - var OneMinusSrcAlphaFactor = 205; - var DstAlphaFactor = 206; - var OneMinusDstAlphaFactor = 207; - var DstColorFactor = 208; - var OneMinusDstColorFactor = 209; - var SrcAlphaSaturateFactor = 210; - var NeverDepth = 0; - var AlwaysDepth = 1; - var LessDepth = 2; - var LessEqualDepth = 3; - var EqualDepth = 4; - var GreaterEqualDepth = 5; - var GreaterDepth = 6; - var NotEqualDepth = 7; - var MultiplyOperation = 0; - var MixOperation = 1; - var AddOperation = 2; - var NoToneMapping = 0; - var LinearToneMapping = 1; - var ReinhardToneMapping = 2; - var Uncharted2ToneMapping = 3; - var CineonToneMapping = 4; - var ACESFilmicToneMapping = 5; - - var UVMapping = 300; - var CubeReflectionMapping = 301; - var CubeRefractionMapping = 302; - var EquirectangularReflectionMapping = 303; - var EquirectangularRefractionMapping = 304; - var SphericalReflectionMapping = 305; - var CubeUVReflectionMapping = 306; - var CubeUVRefractionMapping = 307; - var RepeatWrapping = 1000; - var ClampToEdgeWrapping = 1001; - var MirroredRepeatWrapping = 1002; - var NearestFilter = 1003; - var NearestMipMapNearestFilter = 1004; - var NearestMipMapLinearFilter = 1005; - var LinearFilter = 1006; - var LinearMipMapNearestFilter = 1007; - var LinearMipMapLinearFilter = 1008; - var UnsignedByteType = 1009; - var ByteType = 1010; - var ShortType = 1011; - var UnsignedShortType = 1012; - var IntType = 1013; - var UnsignedIntType = 1014; - var FloatType = 1015; - var HalfFloatType = 1016; - var UnsignedShort4444Type = 1017; - var UnsignedShort5551Type = 1018; - var UnsignedShort565Type = 1019; - var UnsignedInt248Type = 1020; - var AlphaFormat = 1021; - var RGBFormat = 1022; - var RGBAFormat = 1023; - var LuminanceFormat = 1024; - var LuminanceAlphaFormat = 1025; - var RGBEFormat = RGBAFormat; - var DepthFormat = 1026; - var DepthStencilFormat = 1027; - var RedFormat = 1028; - var RGB_S3TC_DXT1_Format = 33776; - var RGBA_S3TC_DXT1_Format = 33777; - var RGBA_S3TC_DXT3_Format = 33778; - var RGBA_S3TC_DXT5_Format = 33779; - var RGB_PVRTC_4BPPV1_Format = 35840; - var RGB_PVRTC_2BPPV1_Format = 35841; - var RGBA_PVRTC_4BPPV1_Format = 35842; - var RGBA_PVRTC_2BPPV1_Format = 35843; - var RGB_ETC1_Format = 36196; - var RGBA_ASTC_4x4_Format = 37808; - var RGBA_ASTC_5x4_Format = 37809; - var RGBA_ASTC_5x5_Format = 37810; - var RGBA_ASTC_6x5_Format = 37811; - var RGBA_ASTC_6x6_Format = 37812; - var RGBA_ASTC_8x5_Format = 37813; - var RGBA_ASTC_8x6_Format = 37814; - var RGBA_ASTC_8x8_Format = 37815; - var RGBA_ASTC_10x5_Format = 37816; - var RGBA_ASTC_10x6_Format = 37817; - var RGBA_ASTC_10x8_Format = 37818; - var RGBA_ASTC_10x10_Format = 37819; - var RGBA_ASTC_12x10_Format = 37820; - var RGBA_ASTC_12x12_Format = 37821; - var LoopOnce = 2200; - var LoopRepeat = 2201; - var LoopPingPong = 2202; - var InterpolateDiscrete = 2300; - var InterpolateLinear = 2301; - var InterpolateSmooth = 2302; - var ZeroCurvatureEnding = 2400; - var ZeroSlopeEnding = 2401; - var WrapAroundEnding = 2402; - var TrianglesDrawMode = 0; - var TriangleStripDrawMode = 1; - var TriangleFanDrawMode = 2; - var LinearEncoding = 3000; - var sRGBEncoding = 3001; - var GammaEncoding = 3007; - var RGBEEncoding = 3002; - var LogLuvEncoding = 3003; - var RGBM7Encoding = 3004; - var RGBM16Encoding = 3005; - var RGBDEncoding = 3006; - var BasicDepthPacking = 3200; - var RGBADepthPacking = 3201; - var TangentSpaceNormalMap = 0; - var ObjectSpaceNormalMap = 1; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - var _Math = { - - DEG2RAD: Math.PI / 180, - RAD2DEG: 180 / Math.PI, - - generateUUID: ( function () { - - // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 - - var lut = []; - - for ( var i = 0; i < 256; i ++ ) { - - lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ); - - } - - return function generateUUID() { - - var d0 = Math.random() * 0xffffffff | 0; - var d1 = Math.random() * 0xffffffff | 0; - var d2 = Math.random() * 0xffffffff | 0; - var d3 = Math.random() * 0xffffffff | 0; - var uuid = lut[ d0 & 0xff ] + lut[ d0 >> 8 & 0xff ] + lut[ d0 >> 16 & 0xff ] + lut[ d0 >> 24 & 0xff ] + '-' + - lut[ d1 & 0xff ] + lut[ d1 >> 8 & 0xff ] + '-' + lut[ d1 >> 16 & 0x0f | 0x40 ] + lut[ d1 >> 24 & 0xff ] + '-' + - lut[ d2 & 0x3f | 0x80 ] + lut[ d2 >> 8 & 0xff ] + '-' + lut[ d2 >> 16 & 0xff ] + lut[ d2 >> 24 & 0xff ] + - lut[ d3 & 0xff ] + lut[ d3 >> 8 & 0xff ] + lut[ d3 >> 16 & 0xff ] + lut[ d3 >> 24 & 0xff ]; - - // .toUpperCase() here flattens concatenated strings to save heap memory space. - return uuid.toUpperCase(); - - }; - - } )(), - - clamp: function ( value, min, max ) { - - return Math.max( min, Math.min( max, value ) ); - - }, - - // compute euclidian modulo of m % n - // https://en.wikipedia.org/wiki/Modulo_operation - - euclideanModulo: function ( n, m ) { - - return ( ( n % m ) + m ) % m; - - }, - - // Linear mapping from range to range - - mapLinear: function ( x, a1, a2, b1, b2 ) { - - return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); - - }, - - // https://en.wikipedia.org/wiki/Linear_interpolation - - lerp: function ( x, y, t ) { - - return ( 1 - t ) * x + t * y; - - }, - - // http://en.wikipedia.org/wiki/Smoothstep - - smoothstep: function ( x, min, max ) { - - if ( x <= min ) return 0; - if ( x >= max ) return 1; - - x = ( x - min ) / ( max - min ); - - return x * x * ( 3 - 2 * x ); - - }, - - smootherstep: function ( x, min, max ) { - - if ( x <= min ) return 0; - if ( x >= max ) return 1; - - x = ( x - min ) / ( max - min ); - - return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); - - }, - - // Random integer from interval - - randInt: function ( low, high ) { - - return low + Math.floor( Math.random() * ( high - low + 1 ) ); - - }, - - // Random float from interval - - randFloat: function ( low, high ) { - - return low + Math.random() * ( high - low ); - - }, - - // Random float from <-range/2, range/2> interval - - randFloatSpread: function ( range ) { - - return range * ( 0.5 - Math.random() ); - - }, - - degToRad: function ( degrees ) { - - return degrees * _Math.DEG2RAD; - - }, - - radToDeg: function ( radians ) { - - return radians * _Math.RAD2DEG; - - }, - - isPowerOfTwo: function ( value ) { - - return ( value & ( value - 1 ) ) === 0 && value !== 0; - - }, - - ceilPowerOfTwo: function ( value ) { - - return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); - - }, - - floorPowerOfTwo: function ( value ) { - - return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author philogb / http://blog.thejit.org/ - * @author egraether / http://egraether.com/ - * @author zz85 / http://www.lab4games.net/zz85/blog - */ - - function Vector2( x, y ) { - - this.x = x || 0; - this.y = y || 0; - - } - - Object.defineProperties( Vector2.prototype, { - - "width": { - - get: function () { - - return this.x; - - }, - - set: function ( value ) { - - this.x = value; - - } - - }, - - "height": { - - get: function () { - - return this.y; - - }, - - set: function ( value ) { - - this.y = value; - - } - - } - - } ); - - Object.assign( Vector2.prototype, { - - isVector2: true, - - set: function ( x, y ) { - - this.x = x; - this.y = y; - - return this; - - }, - - setScalar: function ( scalar ) { - - this.x = scalar; - this.y = scalar; - - return this; - - }, - - setX: function ( x ) { - - this.x = x; - - return this; - - }, - - setY: function ( y ) { - - this.y = y; - - return this; - - }, - - setComponent: function ( index, value ) { - - switch ( index ) { - - case 0: this.x = value; break; - case 1: this.y = value; break; - default: throw new Error( 'index is out of range: ' + index ); - - } - - return this; - - }, - - getComponent: function ( index ) { - - switch ( index ) { - - case 0: return this.x; - case 1: return this.y; - default: throw new Error( 'index is out of range: ' + index ); - - } - - }, - - clone: function () { - - return new this.constructor( this.x, this.y ); - - }, - - copy: function ( v ) { - - this.x = v.x; - this.y = v.y; - - return this; - - }, - - add: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); - - } - - this.x += v.x; - this.y += v.y; - - return this; - - }, - - addScalar: function ( s ) { - - this.x += s; - this.y += s; - - return this; - - }, - - addVectors: function ( a, b ) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - - return this; - - }, - - addScaledVector: function ( v, s ) { - - this.x += v.x * s; - this.y += v.y * s; - - return this; - - }, - - sub: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); - - } - - this.x -= v.x; - this.y -= v.y; - - return this; - - }, - - subScalar: function ( s ) { - - this.x -= s; - this.y -= s; - - return this; - - }, - - subVectors: function ( a, b ) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - - return this; - - }, - - multiply: function ( v ) { - - this.x *= v.x; - this.y *= v.y; - - return this; - - }, - - multiplyScalar: function ( scalar ) { - - this.x *= scalar; - this.y *= scalar; - - return this; - - }, - - divide: function ( v ) { - - this.x /= v.x; - this.y /= v.y; - - return this; - - }, - - divideScalar: function ( scalar ) { - - return this.multiplyScalar( 1 / scalar ); - - }, - - applyMatrix3: function ( m ) { - - var x = this.x, y = this.y; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; - this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; - - return this; - - }, - - min: function ( v ) { - - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - - return this; - - }, - - max: function ( v ) { - - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - - return this; - - }, - - clamp: function ( min, max ) { - - // assumes min < max, componentwise - - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - - return this; - - }, - - clampScalar: function () { - - var min = new Vector2(); - var max = new Vector2(); - - return function clampScalar( minVal, maxVal ) { - - min.set( minVal, minVal ); - max.set( maxVal, maxVal ); - - return this.clamp( min, max ); - - }; - - }(), - - clampLength: function ( min, max ) { - - var length = this.length(); - - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); - - }, - - floor: function () { - - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - - return this; - - }, - - ceil: function () { - - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - - return this; - - }, - - round: function () { - - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - - return this; - - }, - - roundToZero: function () { - - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - - return this; - - }, - - negate: function () { - - this.x = - this.x; - this.y = - this.y; - - return this; - - }, - - dot: function ( v ) { - - return this.x * v.x + this.y * v.y; - - }, - - cross: function ( v ) { - - return this.x * v.y - this.y * v.x; - - }, - - lengthSq: function () { - - return this.x * this.x + this.y * this.y; - - }, - - length: function () { - - return Math.sqrt( this.x * this.x + this.y * this.y ); - - }, - - manhattanLength: function () { - - return Math.abs( this.x ) + Math.abs( this.y ); - - }, - - normalize: function () { - - return this.divideScalar( this.length() || 1 ); - - }, - - angle: function () { - - // computes the angle in radians with respect to the positive x-axis - - var angle = Math.atan2( this.y, this.x ); - - if ( angle < 0 ) angle += 2 * Math.PI; - - return angle; - - }, - - distanceTo: function ( v ) { - - return Math.sqrt( this.distanceToSquared( v ) ); - - }, - - distanceToSquared: function ( v ) { - - var dx = this.x - v.x, dy = this.y - v.y; - return dx * dx + dy * dy; - - }, - - manhattanDistanceTo: function ( v ) { - - return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); - - }, - - setLength: function ( length ) { - - return this.normalize().multiplyScalar( length ); - - }, - - lerp: function ( v, alpha ) { - - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - - return this; - - }, - - lerpVectors: function ( v1, v2, alpha ) { - - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); - - }, - - equals: function ( v ) { - - return ( ( v.x === this.x ) && ( v.y === this.y ) ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - - return array; - - }, - - fromBufferAttribute: function ( attribute, index, offset ) { - - if ( offset !== undefined ) { - - console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); - - } - - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - - return this; - - }, - - rotateAround: function ( center, angle ) { - - var c = Math.cos( angle ), s = Math.sin( angle ); - - var x = this.x - center.x; - var y = this.y - center.y; - - this.x = x * c - y * s + center.x; - this.y = x * s + y * c + center.y; - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author supereggbert / http://www.paulbrunt.co.uk/ - * @author philogb / http://blog.thejit.org/ - * @author jordi_ros / http://plattsoft.com - * @author D1plo1d / http://github.com/D1plo1d - * @author alteredq / http://alteredqualia.com/ - * @author mikael emtinger / http://gomo.se/ - * @author timknip / http://www.floorplanner.com/ - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - */ - - function Matrix4() { - - this.elements = [ - - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - - ]; - - if ( arguments.length > 0 ) { - - console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); - - } - - } - - Object.assign( Matrix4.prototype, { - - isMatrix4: true, - - set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { - - var te = this.elements; - - te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; - te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; - te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; - te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; - - return this; - - }, - - identity: function () { - - this.set( - - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - clone: function () { - - return new Matrix4().fromArray( this.elements ); - - }, - - copy: function ( m ) { - - var te = this.elements; - var me = m.elements; - - te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; - te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; - te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; - te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; - - return this; - - }, - - copyPosition: function ( m ) { - - var te = this.elements, me = m.elements; - - te[ 12 ] = me[ 12 ]; - te[ 13 ] = me[ 13 ]; - te[ 14 ] = me[ 14 ]; - - return this; - - }, - - extractBasis: function ( xAxis, yAxis, zAxis ) { - - xAxis.setFromMatrixColumn( this, 0 ); - yAxis.setFromMatrixColumn( this, 1 ); - zAxis.setFromMatrixColumn( this, 2 ); - - return this; - - }, - - makeBasis: function ( xAxis, yAxis, zAxis ) { - - this.set( - xAxis.x, yAxis.x, zAxis.x, 0, - xAxis.y, yAxis.y, zAxis.y, 0, - xAxis.z, yAxis.z, zAxis.z, 0, - 0, 0, 0, 1 - ); - - return this; - - }, - - extractRotation: function () { - - var v1 = new Vector3(); - - return function extractRotation( m ) { - - // this method does not support reflection matrices - - var te = this.elements; - var me = m.elements; - - var scaleX = 1 / v1.setFromMatrixColumn( m, 0 ).length(); - var scaleY = 1 / v1.setFromMatrixColumn( m, 1 ).length(); - var scaleZ = 1 / v1.setFromMatrixColumn( m, 2 ).length(); - - te[ 0 ] = me[ 0 ] * scaleX; - te[ 1 ] = me[ 1 ] * scaleX; - te[ 2 ] = me[ 2 ] * scaleX; - te[ 3 ] = 0; - - te[ 4 ] = me[ 4 ] * scaleY; - te[ 5 ] = me[ 5 ] * scaleY; - te[ 6 ] = me[ 6 ] * scaleY; - te[ 7 ] = 0; - - te[ 8 ] = me[ 8 ] * scaleZ; - te[ 9 ] = me[ 9 ] * scaleZ; - te[ 10 ] = me[ 10 ] * scaleZ; - te[ 11 ] = 0; - - te[ 12 ] = 0; - te[ 13 ] = 0; - te[ 14 ] = 0; - te[ 15 ] = 1; - - return this; - - }; - - }(), - - makeRotationFromEuler: function ( euler ) { - - if ( ! ( euler && euler.isEuler ) ) { - - console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); - - } - - var te = this.elements; - - var x = euler.x, y = euler.y, z = euler.z; - var a = Math.cos( x ), b = Math.sin( x ); - var c = Math.cos( y ), d = Math.sin( y ); - var e = Math.cos( z ), f = Math.sin( z ); - - if ( euler.order === 'XYZ' ) { - - var ae = a * e, af = a * f, be = b * e, bf = b * f; - - te[ 0 ] = c * e; - te[ 4 ] = - c * f; - te[ 8 ] = d; - - te[ 1 ] = af + be * d; - te[ 5 ] = ae - bf * d; - te[ 9 ] = - b * c; - - te[ 2 ] = bf - ae * d; - te[ 6 ] = be + af * d; - te[ 10 ] = a * c; - - } else if ( euler.order === 'YXZ' ) { - - var ce = c * e, cf = c * f, de = d * e, df = d * f; - - te[ 0 ] = ce + df * b; - te[ 4 ] = de * b - cf; - te[ 8 ] = a * d; - - te[ 1 ] = a * f; - te[ 5 ] = a * e; - te[ 9 ] = - b; - - te[ 2 ] = cf * b - de; - te[ 6 ] = df + ce * b; - te[ 10 ] = a * c; - - } else if ( euler.order === 'ZXY' ) { - - var ce = c * e, cf = c * f, de = d * e, df = d * f; - - te[ 0 ] = ce - df * b; - te[ 4 ] = - a * f; - te[ 8 ] = de + cf * b; - - te[ 1 ] = cf + de * b; - te[ 5 ] = a * e; - te[ 9 ] = df - ce * b; - - te[ 2 ] = - a * d; - te[ 6 ] = b; - te[ 10 ] = a * c; - - } else if ( euler.order === 'ZYX' ) { - - var ae = a * e, af = a * f, be = b * e, bf = b * f; - - te[ 0 ] = c * e; - te[ 4 ] = be * d - af; - te[ 8 ] = ae * d + bf; - - te[ 1 ] = c * f; - te[ 5 ] = bf * d + ae; - te[ 9 ] = af * d - be; - - te[ 2 ] = - d; - te[ 6 ] = b * c; - te[ 10 ] = a * c; - - } else if ( euler.order === 'YZX' ) { - - var ac = a * c, ad = a * d, bc = b * c, bd = b * d; - - te[ 0 ] = c * e; - te[ 4 ] = bd - ac * f; - te[ 8 ] = bc * f + ad; - - te[ 1 ] = f; - te[ 5 ] = a * e; - te[ 9 ] = - b * e; - - te[ 2 ] = - d * e; - te[ 6 ] = ad * f + bc; - te[ 10 ] = ac - bd * f; - - } else if ( euler.order === 'XZY' ) { - - var ac = a * c, ad = a * d, bc = b * c, bd = b * d; - - te[ 0 ] = c * e; - te[ 4 ] = - f; - te[ 8 ] = d * e; - - te[ 1 ] = ac * f + bd; - te[ 5 ] = a * e; - te[ 9 ] = ad * f - bc; - - te[ 2 ] = bc * f - ad; - te[ 6 ] = b * e; - te[ 10 ] = bd * f + ac; - - } - - // bottom row - te[ 3 ] = 0; - te[ 7 ] = 0; - te[ 11 ] = 0; - - // last column - te[ 12 ] = 0; - te[ 13 ] = 0; - te[ 14 ] = 0; - te[ 15 ] = 1; - - return this; - - }, - - makeRotationFromQuaternion: function () { - - var zero = new Vector3( 0, 0, 0 ); - var one = new Vector3( 1, 1, 1 ); - - return function makeRotationFromQuaternion( q ) { - - return this.compose( zero, q, one ); - - }; - - }(), - - lookAt: function () { - - var x = new Vector3(); - var y = new Vector3(); - var z = new Vector3(); - - return function lookAt( eye, target, up ) { - - var te = this.elements; - - z.subVectors( eye, target ); - - if ( z.lengthSq() === 0 ) { - - // eye and target are in the same position - - z.z = 1; - - } - - z.normalize(); - x.crossVectors( up, z ); - - if ( x.lengthSq() === 0 ) { - - // up and z are parallel - - if ( Math.abs( up.z ) === 1 ) { - - z.x += 0.0001; - - } else { - - z.z += 0.0001; - - } - - z.normalize(); - x.crossVectors( up, z ); - - } - - x.normalize(); - y.crossVectors( z, x ); - - te[ 0 ] = x.x; te[ 4 ] = y.x; te[ 8 ] = z.x; - te[ 1 ] = x.y; te[ 5 ] = y.y; te[ 9 ] = z.y; - te[ 2 ] = x.z; te[ 6 ] = y.z; te[ 10 ] = z.z; - - return this; - - }; - - }(), - - multiply: function ( m, n ) { - - if ( n !== undefined ) { - - console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); - return this.multiplyMatrices( m, n ); - - } - - return this.multiplyMatrices( this, m ); - - }, - - premultiply: function ( m ) { - - return this.multiplyMatrices( m, this ); - - }, - - multiplyMatrices: function ( a, b ) { - - var ae = a.elements; - var be = b.elements; - var te = this.elements; - - var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; - var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; - var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; - var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; - - var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; - var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; - var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; - var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; - - te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; - te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; - te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; - te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; - - te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; - te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; - te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; - te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; - - te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; - te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; - te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; - te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; - - te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; - te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; - te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; - te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; - - return this; - - }, - - multiplyScalar: function ( s ) { - - var te = this.elements; - - te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; - te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; - te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; - te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; - - return this; - - }, - - applyToBufferAttribute: function () { - - var v1 = new Vector3(); - - return function applyToBufferAttribute( attribute ) { - - for ( var i = 0, l = attribute.count; i < l; i ++ ) { - - v1.x = attribute.getX( i ); - v1.y = attribute.getY( i ); - v1.z = attribute.getZ( i ); - - v1.applyMatrix4( this ); - - attribute.setXYZ( i, v1.x, v1.y, v1.z ); - - } - - return attribute; - - }; - - }(), - - determinant: function () { - - var te = this.elements; - - var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; - var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; - var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; - var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; - - //TODO: make this more efficient - //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) - - return ( - n41 * ( - + n14 * n23 * n32 - - n13 * n24 * n32 - - n14 * n22 * n33 - + n12 * n24 * n33 - + n13 * n22 * n34 - - n12 * n23 * n34 - ) + - n42 * ( - + n11 * n23 * n34 - - n11 * n24 * n33 - + n14 * n21 * n33 - - n13 * n21 * n34 - + n13 * n24 * n31 - - n14 * n23 * n31 - ) + - n43 * ( - + n11 * n24 * n32 - - n11 * n22 * n34 - - n14 * n21 * n32 - + n12 * n21 * n34 - + n14 * n22 * n31 - - n12 * n24 * n31 - ) + - n44 * ( - - n13 * n22 * n31 - - n11 * n23 * n32 - + n11 * n22 * n33 - + n13 * n21 * n32 - - n12 * n21 * n33 - + n12 * n23 * n31 - ) - - ); - - }, - - transpose: function () { - - var te = this.elements; - var tmp; - - tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; - tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; - tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; - - tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; - tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; - tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; - - return this; - - }, - - setPosition: function ( v ) { - - var te = this.elements; - - te[ 12 ] = v.x; - te[ 13 ] = v.y; - te[ 14 ] = v.z; - - return this; - - }, - - getInverse: function ( m, throwOnDegenerate ) { - - // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm - var te = this.elements, - me = m.elements, - - n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], - n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], - n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], - n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], - - t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, - t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, - t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, - t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; - - var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; - - if ( det === 0 ) { - - var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; - - if ( throwOnDegenerate === true ) { - - throw new Error( msg ); - - } else { - - console.warn( msg ); - - } - - return this.identity(); - - } - - var detInv = 1 / det; - - te[ 0 ] = t11 * detInv; - te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; - te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; - te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; - - te[ 4 ] = t12 * detInv; - te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; - te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; - te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; - - te[ 8 ] = t13 * detInv; - te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; - te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; - te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; - - te[ 12 ] = t14 * detInv; - te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; - te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; - te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; - - return this; - - }, - - scale: function ( v ) { - - var te = this.elements; - var x = v.x, y = v.y, z = v.z; - - te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; - te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; - te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; - te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; - - return this; - - }, - - getMaxScaleOnAxis: function () { - - var te = this.elements; - - var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; - var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; - var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; - - return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); - - }, - - makeTranslation: function ( x, y, z ) { - - this.set( - - 1, 0, 0, x, - 0, 1, 0, y, - 0, 0, 1, z, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationX: function ( theta ) { - - var c = Math.cos( theta ), s = Math.sin( theta ); - - this.set( - - 1, 0, 0, 0, - 0, c, - s, 0, - 0, s, c, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationY: function ( theta ) { - - var c = Math.cos( theta ), s = Math.sin( theta ); - - this.set( - - c, 0, s, 0, - 0, 1, 0, 0, - - s, 0, c, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationZ: function ( theta ) { - - var c = Math.cos( theta ), s = Math.sin( theta ); - - this.set( - - c, - s, 0, 0, - s, c, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeRotationAxis: function ( axis, angle ) { - - // Based on http://www.gamedev.net/reference/articles/article1199.asp - - var c = Math.cos( angle ); - var s = Math.sin( angle ); - var t = 1 - c; - var x = axis.x, y = axis.y, z = axis.z; - var tx = t * x, ty = t * y; - - this.set( - - tx * x + c, tx * y - s * z, tx * z + s * y, 0, - tx * y + s * z, ty * y + c, ty * z - s * x, 0, - tx * z - s * y, ty * z + s * x, t * z * z + c, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeScale: function ( x, y, z ) { - - this.set( - - x, 0, 0, 0, - 0, y, 0, 0, - 0, 0, z, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - makeShear: function ( x, y, z ) { - - this.set( - - 1, y, z, 0, - x, 1, z, 0, - x, y, 1, 0, - 0, 0, 0, 1 - - ); - - return this; - - }, - - compose: function ( position, quaternion, scale ) { - - var te = this.elements; - - var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; - var x2 = x + x, y2 = y + y, z2 = z + z; - var xx = x * x2, xy = x * y2, xz = x * z2; - var yy = y * y2, yz = y * z2, zz = z * z2; - var wx = w * x2, wy = w * y2, wz = w * z2; - - var sx = scale.x, sy = scale.y, sz = scale.z; - - te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; - te[ 1 ] = ( xy + wz ) * sx; - te[ 2 ] = ( xz - wy ) * sx; - te[ 3 ] = 0; - - te[ 4 ] = ( xy - wz ) * sy; - te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; - te[ 6 ] = ( yz + wx ) * sy; - te[ 7 ] = 0; - - te[ 8 ] = ( xz + wy ) * sz; - te[ 9 ] = ( yz - wx ) * sz; - te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; - te[ 11 ] = 0; - - te[ 12 ] = position.x; - te[ 13 ] = position.y; - te[ 14 ] = position.z; - te[ 15 ] = 1; - - return this; - - }, - - decompose: function () { - - var vector = new Vector3(); - var matrix = new Matrix4(); - - return function decompose( position, quaternion, scale ) { - - var te = this.elements; - - var sx = vector.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); - var sy = vector.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); - var sz = vector.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); - - // if determine is negative, we need to invert one scale - var det = this.determinant(); - if ( det < 0 ) sx = - sx; - - position.x = te[ 12 ]; - position.y = te[ 13 ]; - position.z = te[ 14 ]; - - // scale the rotation part - matrix.copy( this ); - - var invSX = 1 / sx; - var invSY = 1 / sy; - var invSZ = 1 / sz; - - matrix.elements[ 0 ] *= invSX; - matrix.elements[ 1 ] *= invSX; - matrix.elements[ 2 ] *= invSX; - - matrix.elements[ 4 ] *= invSY; - matrix.elements[ 5 ] *= invSY; - matrix.elements[ 6 ] *= invSY; - - matrix.elements[ 8 ] *= invSZ; - matrix.elements[ 9 ] *= invSZ; - matrix.elements[ 10 ] *= invSZ; - - quaternion.setFromRotationMatrix( matrix ); - - scale.x = sx; - scale.y = sy; - scale.z = sz; - - return this; - - }; - - }(), - - makePerspective: function ( left, right, top, bottom, near, far ) { - - if ( far === undefined ) { - - console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); - - } - - var te = this.elements; - var x = 2 * near / ( right - left ); - var y = 2 * near / ( top - bottom ); - - var a = ( right + left ) / ( right - left ); - var b = ( top + bottom ) / ( top - bottom ); - var c = - ( far + near ) / ( far - near ); - var d = - 2 * far * near / ( far - near ); - - te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; - te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; - te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; - te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; - - return this; - - }, - - makeOrthographic: function ( left, right, top, bottom, near, far ) { - - var te = this.elements; - var w = 1.0 / ( right - left ); - var h = 1.0 / ( top - bottom ); - var p = 1.0 / ( far - near ); - - var x = ( right + left ) * w; - var y = ( top + bottom ) * h; - var z = ( far + near ) * p; - - te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; - te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; - te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; - te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; - - return this; - - }, - - equals: function ( matrix ) { - - var te = this.elements; - var me = matrix.elements; - - for ( var i = 0; i < 16; i ++ ) { - - if ( te[ i ] !== me[ i ] ) return false; - - } - - return true; - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - for ( var i = 0; i < 16; i ++ ) { - - this.elements[ i ] = array[ i + offset ]; - - } - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - var te = this.elements; - - array[ offset ] = te[ 0 ]; - array[ offset + 1 ] = te[ 1 ]; - array[ offset + 2 ] = te[ 2 ]; - array[ offset + 3 ] = te[ 3 ]; - - array[ offset + 4 ] = te[ 4 ]; - array[ offset + 5 ] = te[ 5 ]; - array[ offset + 6 ] = te[ 6 ]; - array[ offset + 7 ] = te[ 7 ]; - - array[ offset + 8 ] = te[ 8 ]; - array[ offset + 9 ] = te[ 9 ]; - array[ offset + 10 ] = te[ 10 ]; - array[ offset + 11 ] = te[ 11 ]; - - array[ offset + 12 ] = te[ 12 ]; - array[ offset + 13 ] = te[ 13 ]; - array[ offset + 14 ] = te[ 14 ]; - array[ offset + 15 ] = te[ 15 ]; - - return array; - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author bhouston / http://clara.io - */ - - function Quaternion( x, y, z, w ) { - - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this._w = ( w !== undefined ) ? w : 1; - - } - - Object.assign( Quaternion, { - - slerp: function ( qa, qb, qm, t ) { - - return qm.copy( qa ).slerp( qb, t ); - - }, - - slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { - - // fuzz-free, array-based Quaternion SLERP operation - - var x0 = src0[ srcOffset0 + 0 ], - y0 = src0[ srcOffset0 + 1 ], - z0 = src0[ srcOffset0 + 2 ], - w0 = src0[ srcOffset0 + 3 ], - - x1 = src1[ srcOffset1 + 0 ], - y1 = src1[ srcOffset1 + 1 ], - z1 = src1[ srcOffset1 + 2 ], - w1 = src1[ srcOffset1 + 3 ]; - - if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { - - var s = 1 - t, - - cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, - - dir = ( cos >= 0 ? 1 : - 1 ), - sqrSin = 1 - cos * cos; - - // Skip the Slerp for tiny steps to avoid numeric problems: - if ( sqrSin > Number.EPSILON ) { - - var sin = Math.sqrt( sqrSin ), - len = Math.atan2( sin, cos * dir ); - - s = Math.sin( s * len ) / sin; - t = Math.sin( t * len ) / sin; - - } - - var tDir = t * dir; - - x0 = x0 * s + x1 * tDir; - y0 = y0 * s + y1 * tDir; - z0 = z0 * s + z1 * tDir; - w0 = w0 * s + w1 * tDir; - - // Normalize in case we just did a lerp: - if ( s === 1 - t ) { - - var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); - - x0 *= f; - y0 *= f; - z0 *= f; - w0 *= f; - - } - - } - - dst[ dstOffset ] = x0; - dst[ dstOffset + 1 ] = y0; - dst[ dstOffset + 2 ] = z0; - dst[ dstOffset + 3 ] = w0; - - } - - } ); - - Object.defineProperties( Quaternion.prototype, { - - x: { - - get: function () { - - return this._x; - - }, - - set: function ( value ) { - - this._x = value; - this.onChangeCallback(); - - } - - }, - - y: { - - get: function () { - - return this._y; - - }, - - set: function ( value ) { - - this._y = value; - this.onChangeCallback(); - - } - - }, - - z: { - - get: function () { - - return this._z; - - }, - - set: function ( value ) { - - this._z = value; - this.onChangeCallback(); - - } - - }, - - w: { - - get: function () { - - return this._w; - - }, - - set: function ( value ) { - - this._w = value; - this.onChangeCallback(); - - } - - } - - } ); - - Object.assign( Quaternion.prototype, { - - isQuaternion: true, - - set: function ( x, y, z, w ) { - - this._x = x; - this._y = y; - this._z = z; - this._w = w; - - this.onChangeCallback(); - - return this; - - }, - - clone: function () { - - return new this.constructor( this._x, this._y, this._z, this._w ); - - }, - - copy: function ( quaternion ) { - - this._x = quaternion.x; - this._y = quaternion.y; - this._z = quaternion.z; - this._w = quaternion.w; - - this.onChangeCallback(); - - return this; - - }, - - setFromEuler: function ( euler, update ) { - - if ( ! ( euler && euler.isEuler ) ) { - - throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); - - } - - var x = euler._x, y = euler._y, z = euler._z, order = euler.order; - - // http://www.mathworks.com/matlabcentral/fileexchange/ - // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ - // content/SpinCalc.m - - var cos = Math.cos; - var sin = Math.sin; - - var c1 = cos( x / 2 ); - var c2 = cos( y / 2 ); - var c3 = cos( z / 2 ); - - var s1 = sin( x / 2 ); - var s2 = sin( y / 2 ); - var s3 = sin( z / 2 ); - - if ( order === 'XYZ' ) { - - this._x = s1 * c2 * c3 + c1 * s2 * s3; - this._y = c1 * s2 * c3 - s1 * c2 * s3; - this._z = c1 * c2 * s3 + s1 * s2 * c3; - this._w = c1 * c2 * c3 - s1 * s2 * s3; - - } else if ( order === 'YXZ' ) { - - this._x = s1 * c2 * c3 + c1 * s2 * s3; - this._y = c1 * s2 * c3 - s1 * c2 * s3; - this._z = c1 * c2 * s3 - s1 * s2 * c3; - this._w = c1 * c2 * c3 + s1 * s2 * s3; - - } else if ( order === 'ZXY' ) { - - this._x = s1 * c2 * c3 - c1 * s2 * s3; - this._y = c1 * s2 * c3 + s1 * c2 * s3; - this._z = c1 * c2 * s3 + s1 * s2 * c3; - this._w = c1 * c2 * c3 - s1 * s2 * s3; - - } else if ( order === 'ZYX' ) { - - this._x = s1 * c2 * c3 - c1 * s2 * s3; - this._y = c1 * s2 * c3 + s1 * c2 * s3; - this._z = c1 * c2 * s3 - s1 * s2 * c3; - this._w = c1 * c2 * c3 + s1 * s2 * s3; - - } else if ( order === 'YZX' ) { - - this._x = s1 * c2 * c3 + c1 * s2 * s3; - this._y = c1 * s2 * c3 + s1 * c2 * s3; - this._z = c1 * c2 * s3 - s1 * s2 * c3; - this._w = c1 * c2 * c3 - s1 * s2 * s3; - - } else if ( order === 'XZY' ) { - - this._x = s1 * c2 * c3 - c1 * s2 * s3; - this._y = c1 * s2 * c3 - s1 * c2 * s3; - this._z = c1 * c2 * s3 + s1 * s2 * c3; - this._w = c1 * c2 * c3 + s1 * s2 * s3; - - } - - if ( update !== false ) this.onChangeCallback(); - - return this; - - }, - - setFromAxisAngle: function ( axis, angle ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm - - // assumes axis is normalized - - var halfAngle = angle / 2, s = Math.sin( halfAngle ); - - this._x = axis.x * s; - this._y = axis.y * s; - this._z = axis.z * s; - this._w = Math.cos( halfAngle ); - - this.onChangeCallback(); - - return this; - - }, - - setFromRotationMatrix: function ( m ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - var te = m.elements, - - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], - - trace = m11 + m22 + m33, - s; - - if ( trace > 0 ) { - - s = 0.5 / Math.sqrt( trace + 1.0 ); - - this._w = 0.25 / s; - this._x = ( m32 - m23 ) * s; - this._y = ( m13 - m31 ) * s; - this._z = ( m21 - m12 ) * s; - - } else if ( m11 > m22 && m11 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); - - this._w = ( m32 - m23 ) / s; - this._x = 0.25 * s; - this._y = ( m12 + m21 ) / s; - this._z = ( m13 + m31 ) / s; - - } else if ( m22 > m33 ) { - - s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); - - this._w = ( m13 - m31 ) / s; - this._x = ( m12 + m21 ) / s; - this._y = 0.25 * s; - this._z = ( m23 + m32 ) / s; - - } else { - - s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); - - this._w = ( m21 - m12 ) / s; - this._x = ( m13 + m31 ) / s; - this._y = ( m23 + m32 ) / s; - this._z = 0.25 * s; - - } - - this.onChangeCallback(); - - return this; - - }, - - setFromUnitVectors: function () { - - // assumes direction vectors vFrom and vTo are normalized - - var v1 = new Vector3(); - var r; - - var EPS = 0.000001; - - return function setFromUnitVectors( vFrom, vTo ) { - - if ( v1 === undefined ) v1 = new Vector3(); - - r = vFrom.dot( vTo ) + 1; - - if ( r < EPS ) { - - r = 0; - - if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { - - v1.set( - vFrom.y, vFrom.x, 0 ); - - } else { - - v1.set( 0, - vFrom.z, vFrom.y ); - - } - - } else { - - v1.crossVectors( vFrom, vTo ); - - } - - this._x = v1.x; - this._y = v1.y; - this._z = v1.z; - this._w = r; - - return this.normalize(); - - }; - - }(), - - angleTo: function ( q ) { - - return 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) ); - - }, - - rotateTowards: function ( q, step ) { - - var angle = this.angleTo( q ); - - if ( angle === 0 ) return this; - - var t = Math.min( 1, step / angle ); - - this.slerp( q, t ); - - return this; - - }, - - inverse: function () { - - // quaternion is assumed to have unit length - - return this.conjugate(); - - }, - - conjugate: function () { - - this._x *= - 1; - this._y *= - 1; - this._z *= - 1; - - this.onChangeCallback(); - - return this; - - }, - - dot: function ( v ) { - - return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; - - }, - - lengthSq: function () { - - return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; - - }, - - length: function () { - - return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); - - }, - - normalize: function () { - - var l = this.length(); - - if ( l === 0 ) { - - this._x = 0; - this._y = 0; - this._z = 0; - this._w = 1; - - } else { - - l = 1 / l; - - this._x = this._x * l; - this._y = this._y * l; - this._z = this._z * l; - this._w = this._w * l; - - } - - this.onChangeCallback(); - - return this; - - }, - - multiply: function ( q, p ) { - - if ( p !== undefined ) { - - console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); - return this.multiplyQuaternions( q, p ); - - } - - return this.multiplyQuaternions( this, q ); - - }, - - premultiply: function ( q ) { - - return this.multiplyQuaternions( q, this ); - - }, - - multiplyQuaternions: function ( a, b ) { - - // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm - - var qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; - var qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; - - this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; - this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; - this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; - this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; - - this.onChangeCallback(); - - return this; - - }, - - slerp: function ( qb, t ) { - - if ( t === 0 ) return this; - if ( t === 1 ) return this.copy( qb ); - - var x = this._x, y = this._y, z = this._z, w = this._w; - - // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ - - var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; - - if ( cosHalfTheta < 0 ) { - - this._w = - qb._w; - this._x = - qb._x; - this._y = - qb._y; - this._z = - qb._z; - - cosHalfTheta = - cosHalfTheta; - - } else { - - this.copy( qb ); - - } - - if ( cosHalfTheta >= 1.0 ) { - - this._w = w; - this._x = x; - this._y = y; - this._z = z; - - return this; - - } - - var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; - - if ( sqrSinHalfTheta <= Number.EPSILON ) { - - var s = 1 - t; - this._w = s * w + t * this._w; - this._x = s * x + t * this._x; - this._y = s * y + t * this._y; - this._z = s * z + t * this._z; - - return this.normalize(); - - } - - var sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); - var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); - var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, - ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; - - this._w = ( w * ratioA + this._w * ratioB ); - this._x = ( x * ratioA + this._x * ratioB ); - this._y = ( y * ratioA + this._y * ratioB ); - this._z = ( z * ratioA + this._z * ratioB ); - - this.onChangeCallback(); - - return this; - - }, - - equals: function ( quaternion ) { - - return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this._x = array[ offset ]; - this._y = array[ offset + 1 ]; - this._z = array[ offset + 2 ]; - this._w = array[ offset + 3 ]; - - this.onChangeCallback(); - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this._x; - array[ offset + 1 ] = this._y; - array[ offset + 2 ] = this._z; - array[ offset + 3 ] = this._w; - - return array; - - }, - - onChange: function ( callback ) { - - this.onChangeCallback = callback; - - return this; - - }, - - onChangeCallback: function () {} - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author kile / http://kile.stravaganza.org/ - * @author philogb / http://blog.thejit.org/ - * @author mikael emtinger / http://gomo.se/ - * @author egraether / http://egraether.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function Vector3( x, y, z ) { - - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - - } - - Object.assign( Vector3.prototype, { - - isVector3: true, - - set: function ( x, y, z ) { - - this.x = x; - this.y = y; - this.z = z; - - return this; - - }, - - setScalar: function ( scalar ) { - - this.x = scalar; - this.y = scalar; - this.z = scalar; - - return this; - - }, - - setX: function ( x ) { - - this.x = x; - - return this; - - }, - - setY: function ( y ) { - - this.y = y; - - return this; - - }, - - setZ: function ( z ) { - - this.z = z; - - return this; - - }, - - setComponent: function ( index, value ) { - - switch ( index ) { - - case 0: this.x = value; break; - case 1: this.y = value; break; - case 2: this.z = value; break; - default: throw new Error( 'index is out of range: ' + index ); - - } - - return this; - - }, - - getComponent: function ( index ) { - - switch ( index ) { - - case 0: return this.x; - case 1: return this.y; - case 2: return this.z; - default: throw new Error( 'index is out of range: ' + index ); - - } - - }, - - clone: function () { - - return new this.constructor( this.x, this.y, this.z ); - - }, - - copy: function ( v ) { - - this.x = v.x; - this.y = v.y; - this.z = v.z; - - return this; - - }, - - add: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); - - } - - this.x += v.x; - this.y += v.y; - this.z += v.z; - - return this; - - }, - - addScalar: function ( s ) { - - this.x += s; - this.y += s; - this.z += s; - - return this; - - }, - - addVectors: function ( a, b ) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - this.z = a.z + b.z; - - return this; - - }, - - addScaledVector: function ( v, s ) { - - this.x += v.x * s; - this.y += v.y * s; - this.z += v.z * s; - - return this; - - }, - - sub: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); - - } - - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - - return this; - - }, - - subScalar: function ( s ) { - - this.x -= s; - this.y -= s; - this.z -= s; - - return this; - - }, - - subVectors: function ( a, b ) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - this.z = a.z - b.z; - - return this; - - }, - - multiply: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); - return this.multiplyVectors( v, w ); - - } - - this.x *= v.x; - this.y *= v.y; - this.z *= v.z; - - return this; - - }, - - multiplyScalar: function ( scalar ) { - - this.x *= scalar; - this.y *= scalar; - this.z *= scalar; - - return this; - - }, - - multiplyVectors: function ( a, b ) { - - this.x = a.x * b.x; - this.y = a.y * b.y; - this.z = a.z * b.z; - - return this; - - }, - - applyEuler: function () { - - var quaternion = new Quaternion(); - - return function applyEuler( euler ) { - - if ( ! ( euler && euler.isEuler ) ) { - - console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); - - } - - return this.applyQuaternion( quaternion.setFromEuler( euler ) ); - - }; - - }(), - - applyAxisAngle: function () { - - var quaternion = new Quaternion(); - - return function applyAxisAngle( axis, angle ) { - - return this.applyQuaternion( quaternion.setFromAxisAngle( axis, angle ) ); - - }; - - }(), - - applyMatrix3: function ( m ) { - - var x = this.x, y = this.y, z = this.z; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; - this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; - this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; - - return this; - - }, - - applyMatrix4: function ( m ) { - - var x = this.x, y = this.y, z = this.z; - var e = m.elements; - - var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); - - this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; - this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; - this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; - - return this; - - }, - - applyQuaternion: function ( q ) { - - var x = this.x, y = this.y, z = this.z; - var qx = q.x, qy = q.y, qz = q.z, qw = q.w; - - // calculate quat * vector - - var ix = qw * x + qy * z - qz * y; - var iy = qw * y + qz * x - qx * z; - var iz = qw * z + qx * y - qy * x; - var iw = - qx * x - qy * y - qz * z; - - // calculate result * inverse quat - - this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; - this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; - this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; - - return this; - - }, - - project: function ( camera ) { - - return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); - - }, - - unproject: function () { - - var matrix = new Matrix4(); - - return function unproject( camera ) { - - return this.applyMatrix4( matrix.getInverse( camera.projectionMatrix ) ).applyMatrix4( camera.matrixWorld ); - - }; - - }(), - - transformDirection: function ( m ) { - - // input: THREE.Matrix4 affine matrix - // vector interpreted as a direction - - var x = this.x, y = this.y, z = this.z; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; - this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; - this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; - - return this.normalize(); - - }, - - divide: function ( v ) { - - this.x /= v.x; - this.y /= v.y; - this.z /= v.z; - - return this; - - }, - - divideScalar: function ( scalar ) { - - return this.multiplyScalar( 1 / scalar ); - - }, - - min: function ( v ) { - - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - this.z = Math.min( this.z, v.z ); - - return this; - - }, - - max: function ( v ) { - - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - this.z = Math.max( this.z, v.z ); - - return this; - - }, - - clamp: function ( min, max ) { - - // assumes min < max, componentwise - - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - this.z = Math.max( min.z, Math.min( max.z, this.z ) ); - - return this; - - }, - - clampScalar: function () { - - var min = new Vector3(); - var max = new Vector3(); - - return function clampScalar( minVal, maxVal ) { - - min.set( minVal, minVal, minVal ); - max.set( maxVal, maxVal, maxVal ); - - return this.clamp( min, max ); - - }; - - }(), - - clampLength: function ( min, max ) { - - var length = this.length(); - - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); - - }, - - floor: function () { - - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); - - return this; - - }, - - ceil: function () { - - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); - - return this; - - }, - - round: function () { - - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); - - return this; - - }, - - roundToZero: function () { - - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); - - return this; - - }, - - negate: function () { - - this.x = - this.x; - this.y = - this.y; - this.z = - this.z; - - return this; - - }, - - dot: function ( v ) { - - return this.x * v.x + this.y * v.y + this.z * v.z; - - }, - - // TODO lengthSquared? - - lengthSq: function () { - - return this.x * this.x + this.y * this.y + this.z * this.z; - - }, - - length: function () { - - return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); - - }, - - manhattanLength: function () { - - return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); - - }, - - normalize: function () { - - return this.divideScalar( this.length() || 1 ); - - }, - - setLength: function ( length ) { - - return this.normalize().multiplyScalar( length ); - - }, - - lerp: function ( v, alpha ) { - - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - this.z += ( v.z - this.z ) * alpha; - - return this; - - }, - - lerpVectors: function ( v1, v2, alpha ) { - - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); - - }, - - cross: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); - return this.crossVectors( v, w ); - - } - - return this.crossVectors( this, v ); - - }, - - crossVectors: function ( a, b ) { - - var ax = a.x, ay = a.y, az = a.z; - var bx = b.x, by = b.y, bz = b.z; - - this.x = ay * bz - az * by; - this.y = az * bx - ax * bz; - this.z = ax * by - ay * bx; - - return this; - - }, - - projectOnVector: function ( vector ) { - - var scalar = vector.dot( this ) / vector.lengthSq(); - - return this.copy( vector ).multiplyScalar( scalar ); - - }, - - projectOnPlane: function () { - - var v1 = new Vector3(); - - return function projectOnPlane( planeNormal ) { - - v1.copy( this ).projectOnVector( planeNormal ); - - return this.sub( v1 ); - - }; - - }(), - - reflect: function () { - - // reflect incident vector off plane orthogonal to normal - // normal is assumed to have unit length - - var v1 = new Vector3(); - - return function reflect( normal ) { - - return this.sub( v1.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); - - }; - - }(), - - angleTo: function ( v ) { - - var theta = this.dot( v ) / ( Math.sqrt( this.lengthSq() * v.lengthSq() ) ); - - // clamp, to handle numerical problems - - return Math.acos( _Math.clamp( theta, - 1, 1 ) ); - - }, - - distanceTo: function ( v ) { - - return Math.sqrt( this.distanceToSquared( v ) ); - - }, - - distanceToSquared: function ( v ) { - - var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; - - return dx * dx + dy * dy + dz * dz; - - }, - - manhattanDistanceTo: function ( v ) { - - return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); - - }, - - setFromSpherical: function ( s ) { - - return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); - - }, - - setFromSphericalCoords: function ( radius, phi, theta ) { - - var sinPhiRadius = Math.sin( phi ) * radius; - - this.x = sinPhiRadius * Math.sin( theta ); - this.y = Math.cos( phi ) * radius; - this.z = sinPhiRadius * Math.cos( theta ); - - return this; - - }, - - setFromCylindrical: function ( c ) { - - return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); - - }, - - setFromCylindricalCoords: function ( radius, theta, y ) { - - this.x = radius * Math.sin( theta ); - this.y = y; - this.z = radius * Math.cos( theta ); - - return this; - - }, - - setFromMatrixPosition: function ( m ) { - - var e = m.elements; - - this.x = e[ 12 ]; - this.y = e[ 13 ]; - this.z = e[ 14 ]; - - return this; - - }, - - setFromMatrixScale: function ( m ) { - - var sx = this.setFromMatrixColumn( m, 0 ).length(); - var sy = this.setFromMatrixColumn( m, 1 ).length(); - var sz = this.setFromMatrixColumn( m, 2 ).length(); - - this.x = sx; - this.y = sy; - this.z = sz; - - return this; - - }, - - setFromMatrixColumn: function ( m, index ) { - - return this.fromArray( m.elements, index * 4 ); - - }, - - equals: function ( v ) { - - return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - this.z = array[ offset + 2 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - array[ offset + 2 ] = this.z; - - return array; - - }, - - fromBufferAttribute: function ( attribute, index, offset ) { - - if ( offset !== undefined ) { - - console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); - - } - - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - this.z = attribute.getZ( index ); - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author bhouston / http://clara.io - * @author tschw - */ - - function Matrix3() { - - this.elements = [ - - 1, 0, 0, - 0, 1, 0, - 0, 0, 1 - - ]; - - if ( arguments.length > 0 ) { - - console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); - - } - - } - - Object.assign( Matrix3.prototype, { - - isMatrix3: true, - - set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { - - var te = this.elements; - - te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; - te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; - te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; - - return this; - - }, - - identity: function () { - - this.set( - - 1, 0, 0, - 0, 1, 0, - 0, 0, 1 - - ); - - return this; - - }, - - clone: function () { - - return new this.constructor().fromArray( this.elements ); - - }, - - copy: function ( m ) { - - var te = this.elements; - var me = m.elements; - - te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; - te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; - te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; - - return this; - - }, - - setFromMatrix4: function ( m ) { - - var me = m.elements; - - this.set( - - me[ 0 ], me[ 4 ], me[ 8 ], - me[ 1 ], me[ 5 ], me[ 9 ], - me[ 2 ], me[ 6 ], me[ 10 ] - - ); - - return this; - - }, - - applyToBufferAttribute: function () { - - var v1 = new Vector3(); - - return function applyToBufferAttribute( attribute ) { - - for ( var i = 0, l = attribute.count; i < l; i ++ ) { - - v1.x = attribute.getX( i ); - v1.y = attribute.getY( i ); - v1.z = attribute.getZ( i ); - - v1.applyMatrix3( this ); - - attribute.setXYZ( i, v1.x, v1.y, v1.z ); - - } - - return attribute; - - }; - - }(), - - multiply: function ( m ) { - - return this.multiplyMatrices( this, m ); - - }, - - premultiply: function ( m ) { - - return this.multiplyMatrices( m, this ); - - }, - - multiplyMatrices: function ( a, b ) { - - var ae = a.elements; - var be = b.elements; - var te = this.elements; - - var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; - var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; - var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; - - var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; - var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; - var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; - - te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; - te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; - te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; - - te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; - te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; - te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; - - te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; - te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; - te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; - - return this; - - }, - - multiplyScalar: function ( s ) { - - var te = this.elements; - - te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; - te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; - te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; - - return this; - - }, - - determinant: function () { - - var te = this.elements; - - var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], - d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], - g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; - - return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; - - }, - - getInverse: function ( matrix, throwOnDegenerate ) { - - if ( matrix && matrix.isMatrix4 ) { - - console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); - - } - - var me = matrix.elements, - te = this.elements, - - n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], - n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], - n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], - - t11 = n33 * n22 - n32 * n23, - t12 = n32 * n13 - n33 * n12, - t13 = n23 * n12 - n22 * n13, - - det = n11 * t11 + n21 * t12 + n31 * t13; - - if ( det === 0 ) { - - var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; - - if ( throwOnDegenerate === true ) { - - throw new Error( msg ); - - } else { - - console.warn( msg ); - - } - - return this.identity(); - - } - - var detInv = 1 / det; - - te[ 0 ] = t11 * detInv; - te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; - te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; - - te[ 3 ] = t12 * detInv; - te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; - te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; - - te[ 6 ] = t13 * detInv; - te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; - te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; - - return this; - - }, - - transpose: function () { - - var tmp, m = this.elements; - - tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; - tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; - tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; - - return this; - - }, - - getNormalMatrix: function ( matrix4 ) { - - return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); - - }, - - transposeIntoArray: function ( r ) { - - var m = this.elements; - - r[ 0 ] = m[ 0 ]; - r[ 1 ] = m[ 3 ]; - r[ 2 ] = m[ 6 ]; - r[ 3 ] = m[ 1 ]; - r[ 4 ] = m[ 4 ]; - r[ 5 ] = m[ 7 ]; - r[ 6 ] = m[ 2 ]; - r[ 7 ] = m[ 5 ]; - r[ 8 ] = m[ 8 ]; - - return this; - - }, - - setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { - - var c = Math.cos( rotation ); - var s = Math.sin( rotation ); - - this.set( - sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, - - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, - 0, 0, 1 - ); - - }, - - scale: function ( sx, sy ) { - - var te = this.elements; - - te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; - te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; - - return this; - - }, - - rotate: function ( theta ) { - - var c = Math.cos( theta ); - var s = Math.sin( theta ); - - var te = this.elements; - - var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; - var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; - - te[ 0 ] = c * a11 + s * a21; - te[ 3 ] = c * a12 + s * a22; - te[ 6 ] = c * a13 + s * a23; - - te[ 1 ] = - s * a11 + c * a21; - te[ 4 ] = - s * a12 + c * a22; - te[ 7 ] = - s * a13 + c * a23; - - return this; - - }, - - translate: function ( tx, ty ) { - - var te = this.elements; - - te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; - te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; - - return this; - - }, - - equals: function ( matrix ) { - - var te = this.elements; - var me = matrix.elements; - - for ( var i = 0; i < 9; i ++ ) { - - if ( te[ i ] !== me[ i ] ) return false; - - } - - return true; - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - for ( var i = 0; i < 9; i ++ ) { - - this.elements[ i ] = array[ i + offset ]; - - } - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - var te = this.elements; - - array[ offset ] = te[ 0 ]; - array[ offset + 1 ] = te[ 1 ]; - array[ offset + 2 ] = te[ 2 ]; - - array[ offset + 3 ] = te[ 3 ]; - array[ offset + 4 ] = te[ 4 ]; - array[ offset + 5 ] = te[ 5 ]; - - array[ offset + 6 ] = te[ 6 ]; - array[ offset + 7 ] = te[ 7 ]; - array[ offset + 8 ] = te[ 8 ]; - - return array; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author szimek / https://github.com/szimek/ - */ - - var _canvas; - - var ImageUtils = { - - getDataURL: function ( image ) { - - var canvas; - - if ( typeof HTMLCanvasElement == 'undefined' ) { - - return image.src; - - } else if ( image instanceof HTMLCanvasElement ) { - - canvas = image; - - } else { - - if ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); - - _canvas.width = image.width; - _canvas.height = image.height; - - var context = _canvas.getContext( '2d' ); - - if ( image instanceof ImageData ) { - - context.putImageData( image, 0, 0 ); - - } else { - - context.drawImage( image, 0, 0, image.width, image.height ); - - } - - canvas = _canvas; - - } - - if ( canvas.width > 2048 || canvas.height > 2048 ) { - - return canvas.toDataURL( 'image/jpeg', 0.6 ); - - } else { - - return canvas.toDataURL( 'image/png' ); - - } - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author szimek / https://github.com/szimek/ - */ - - var textureId = 0; - - function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { - - Object.defineProperty( this, 'id', { value: textureId ++ } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - - this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE; - this.mipmaps = []; - - this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING; - - this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping; - this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping; - - this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; - this.minFilter = minFilter !== undefined ? minFilter : LinearMipMapLinearFilter; - - this.anisotropy = anisotropy !== undefined ? anisotropy : 1; - - this.format = format !== undefined ? format : RGBAFormat; - this.type = type !== undefined ? type : UnsignedByteType; - - this.offset = new Vector2( 0, 0 ); - this.repeat = new Vector2( 1, 1 ); - this.center = new Vector2( 0, 0 ); - this.rotation = 0; - - this.matrixAutoUpdate = true; - this.matrix = new Matrix3(); - - this.generateMipmaps = true; - this.premultiplyAlpha = false; - this.flipY = true; - this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) - - // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. - // - // Also changing the encoding after already used by a Material will not automatically make the Material - // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. - this.encoding = encoding !== undefined ? encoding : LinearEncoding; - - this.version = 0; - this.onUpdate = null; - - } - - Texture.DEFAULT_IMAGE = undefined; - Texture.DEFAULT_MAPPING = UVMapping; - - Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Texture, - - isTexture: true, - - updateMatrix: function () { - - this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.name = source.name; - - this.image = source.image; - this.mipmaps = source.mipmaps.slice( 0 ); - - this.mapping = source.mapping; - - this.wrapS = source.wrapS; - this.wrapT = source.wrapT; - - this.magFilter = source.magFilter; - this.minFilter = source.minFilter; - - this.anisotropy = source.anisotropy; - - this.format = source.format; - this.type = source.type; - - this.offset.copy( source.offset ); - this.repeat.copy( source.repeat ); - this.center.copy( source.center ); - this.rotation = source.rotation; - - this.matrixAutoUpdate = source.matrixAutoUpdate; - this.matrix.copy( source.matrix ); - - this.generateMipmaps = source.generateMipmaps; - this.premultiplyAlpha = source.premultiplyAlpha; - this.flipY = source.flipY; - this.unpackAlignment = source.unpackAlignment; - this.encoding = source.encoding; - - return this; - - }, - - toJSON: function ( meta ) { - - var isRootObject = ( meta === undefined || typeof meta === 'string' ); - - if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { - - return meta.textures[ this.uuid ]; - - } - - var output = { - - metadata: { - version: 4.5, - type: 'Texture', - generator: 'Texture.toJSON' - }, - - uuid: this.uuid, - name: this.name, - - mapping: this.mapping, - - repeat: [ this.repeat.x, this.repeat.y ], - offset: [ this.offset.x, this.offset.y ], - center: [ this.center.x, this.center.y ], - rotation: this.rotation, - - wrap: [ this.wrapS, this.wrapT ], - - format: this.format, - type: this.type, - encoding: this.encoding, - - minFilter: this.minFilter, - magFilter: this.magFilter, - anisotropy: this.anisotropy, - - flipY: this.flipY, - - premultiplyAlpha: this.premultiplyAlpha, - unpackAlignment: this.unpackAlignment - - }; - - if ( this.image !== undefined ) { - - // TODO: Move to THREE.Image - - var image = this.image; - - if ( image.uuid === undefined ) { - - image.uuid = _Math.generateUUID(); // UGH - - } - - if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { - - var url; - - if ( Array.isArray( image ) ) { - - // process array of images e.g. CubeTexture - - url = []; - - for ( var i = 0, l = image.length; i < l; i ++ ) { - - url.push( ImageUtils.getDataURL( image[ i ] ) ); - - } - - } else { - - // process single image - - url = ImageUtils.getDataURL( image ); - - } - - meta.images[ image.uuid ] = { - uuid: image.uuid, - url: url - }; - - } - - output.image = image.uuid; - - } - - if ( ! isRootObject ) { - - meta.textures[ this.uuid ] = output; - - } - - return output; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - }, - - transformUv: function ( uv ) { - - if ( this.mapping !== UVMapping ) return uv; - - uv.applyMatrix3( this.matrix ); - - if ( uv.x < 0 || uv.x > 1 ) { - - switch ( this.wrapS ) { - - case RepeatWrapping: - - uv.x = uv.x - Math.floor( uv.x ); - break; - - case ClampToEdgeWrapping: - - uv.x = uv.x < 0 ? 0 : 1; - break; - - case MirroredRepeatWrapping: - - if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { - - uv.x = Math.ceil( uv.x ) - uv.x; - - } else { - - uv.x = uv.x - Math.floor( uv.x ); - - } - break; - - } - - } - - if ( uv.y < 0 || uv.y > 1 ) { - - switch ( this.wrapT ) { - - case RepeatWrapping: - - uv.y = uv.y - Math.floor( uv.y ); - break; - - case ClampToEdgeWrapping: - - uv.y = uv.y < 0 ? 0 : 1; - break; - - case MirroredRepeatWrapping: - - if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { - - uv.y = Math.ceil( uv.y ) - uv.y; - - } else { - - uv.y = uv.y - Math.floor( uv.y ); - - } - break; - - } - - } - - if ( this.flipY ) { - - uv.y = 1 - uv.y; - - } - - return uv; - - } - - } ); - - Object.defineProperty( Texture.prototype, "needsUpdate", { - - set: function ( value ) { - - if ( value === true ) this.version ++; - - } - - } ); - - /** - * @author supereggbert / http://www.paulbrunt.co.uk/ - * @author philogb / http://blog.thejit.org/ - * @author mikael emtinger / http://gomo.se/ - * @author egraether / http://egraether.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function Vector4( x, y, z, w ) { - - this.x = x || 0; - this.y = y || 0; - this.z = z || 0; - this.w = ( w !== undefined ) ? w : 1; - - } - - Object.assign( Vector4.prototype, { - - isVector4: true, - - set: function ( x, y, z, w ) { - - this.x = x; - this.y = y; - this.z = z; - this.w = w; - - return this; - - }, - - setScalar: function ( scalar ) { - - this.x = scalar; - this.y = scalar; - this.z = scalar; - this.w = scalar; - - return this; - - }, - - setX: function ( x ) { - - this.x = x; - - return this; - - }, - - setY: function ( y ) { - - this.y = y; - - return this; - - }, - - setZ: function ( z ) { - - this.z = z; - - return this; - - }, - - setW: function ( w ) { - - this.w = w; - - return this; - - }, - - setComponent: function ( index, value ) { - - switch ( index ) { - - case 0: this.x = value; break; - case 1: this.y = value; break; - case 2: this.z = value; break; - case 3: this.w = value; break; - default: throw new Error( 'index is out of range: ' + index ); - - } - - return this; - - }, - - getComponent: function ( index ) { - - switch ( index ) { - - case 0: return this.x; - case 1: return this.y; - case 2: return this.z; - case 3: return this.w; - default: throw new Error( 'index is out of range: ' + index ); - - } - - }, - - clone: function () { - - return new this.constructor( this.x, this.y, this.z, this.w ); - - }, - - copy: function ( v ) { - - this.x = v.x; - this.y = v.y; - this.z = v.z; - this.w = ( v.w !== undefined ) ? v.w : 1; - - return this; - - }, - - add: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); - return this.addVectors( v, w ); - - } - - this.x += v.x; - this.y += v.y; - this.z += v.z; - this.w += v.w; - - return this; - - }, - - addScalar: function ( s ) { - - this.x += s; - this.y += s; - this.z += s; - this.w += s; - - return this; - - }, - - addVectors: function ( a, b ) { - - this.x = a.x + b.x; - this.y = a.y + b.y; - this.z = a.z + b.z; - this.w = a.w + b.w; - - return this; - - }, - - addScaledVector: function ( v, s ) { - - this.x += v.x * s; - this.y += v.y * s; - this.z += v.z * s; - this.w += v.w * s; - - return this; - - }, - - sub: function ( v, w ) { - - if ( w !== undefined ) { - - console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); - return this.subVectors( v, w ); - - } - - this.x -= v.x; - this.y -= v.y; - this.z -= v.z; - this.w -= v.w; - - return this; - - }, - - subScalar: function ( s ) { - - this.x -= s; - this.y -= s; - this.z -= s; - this.w -= s; - - return this; - - }, - - subVectors: function ( a, b ) { - - this.x = a.x - b.x; - this.y = a.y - b.y; - this.z = a.z - b.z; - this.w = a.w - b.w; - - return this; - - }, - - multiplyScalar: function ( scalar ) { - - this.x *= scalar; - this.y *= scalar; - this.z *= scalar; - this.w *= scalar; - - return this; - - }, - - applyMatrix4: function ( m ) { - - var x = this.x, y = this.y, z = this.z, w = this.w; - var e = m.elements; - - this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; - this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; - this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; - this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; - - return this; - - }, - - divideScalar: function ( scalar ) { - - return this.multiplyScalar( 1 / scalar ); - - }, - - setAxisAngleFromQuaternion: function ( q ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm - - // q is assumed to be normalized - - this.w = 2 * Math.acos( q.w ); - - var s = Math.sqrt( 1 - q.w * q.w ); - - if ( s < 0.0001 ) { - - this.x = 1; - this.y = 0; - this.z = 0; - - } else { - - this.x = q.x / s; - this.y = q.y / s; - this.z = q.z / s; - - } - - return this; - - }, - - setAxisAngleFromRotationMatrix: function ( m ) { - - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - var angle, x, y, z, // variables for result - epsilon = 0.01, // margin to allow for rounding errors - epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees - - te = m.elements, - - m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], - m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], - m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; - - if ( ( Math.abs( m12 - m21 ) < epsilon ) && - ( Math.abs( m13 - m31 ) < epsilon ) && - ( Math.abs( m23 - m32 ) < epsilon ) ) { - - // singularity found - // first check for identity matrix which must have +1 for all terms - // in leading diagonal and zero in other terms - - if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && - ( Math.abs( m13 + m31 ) < epsilon2 ) && - ( Math.abs( m23 + m32 ) < epsilon2 ) && - ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { - - // this singularity is identity matrix so angle = 0 - - this.set( 1, 0, 0, 0 ); - - return this; // zero angle, arbitrary axis - - } - - // otherwise this singularity is angle = 180 - - angle = Math.PI; - - var xx = ( m11 + 1 ) / 2; - var yy = ( m22 + 1 ) / 2; - var zz = ( m33 + 1 ) / 2; - var xy = ( m12 + m21 ) / 4; - var xz = ( m13 + m31 ) / 4; - var yz = ( m23 + m32 ) / 4; - - if ( ( xx > yy ) && ( xx > zz ) ) { - - // m11 is the largest diagonal term - - if ( xx < epsilon ) { - - x = 0; - y = 0.707106781; - z = 0.707106781; - - } else { - - x = Math.sqrt( xx ); - y = xy / x; - z = xz / x; - - } - - } else if ( yy > zz ) { - - // m22 is the largest diagonal term - - if ( yy < epsilon ) { - - x = 0.707106781; - y = 0; - z = 0.707106781; - - } else { - - y = Math.sqrt( yy ); - x = xy / y; - z = yz / y; - - } - - } else { - - // m33 is the largest diagonal term so base result on this - - if ( zz < epsilon ) { - - x = 0.707106781; - y = 0.707106781; - z = 0; - - } else { - - z = Math.sqrt( zz ); - x = xz / z; - y = yz / z; - - } - - } - - this.set( x, y, z, angle ); - - return this; // return 180 deg rotation - - } - - // as we have reached here there are no singularities so we can handle normally - - var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + - ( m13 - m31 ) * ( m13 - m31 ) + - ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize - - if ( Math.abs( s ) < 0.001 ) s = 1; - - // prevent divide by zero, should not happen if matrix is orthogonal and should be - // caught by singularity test above, but I've left it in just in case - - this.x = ( m32 - m23 ) / s; - this.y = ( m13 - m31 ) / s; - this.z = ( m21 - m12 ) / s; - this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); - - return this; - - }, - - min: function ( v ) { - - this.x = Math.min( this.x, v.x ); - this.y = Math.min( this.y, v.y ); - this.z = Math.min( this.z, v.z ); - this.w = Math.min( this.w, v.w ); - - return this; - - }, - - max: function ( v ) { - - this.x = Math.max( this.x, v.x ); - this.y = Math.max( this.y, v.y ); - this.z = Math.max( this.z, v.z ); - this.w = Math.max( this.w, v.w ); - - return this; - - }, - - clamp: function ( min, max ) { - - // assumes min < max, componentwise - - this.x = Math.max( min.x, Math.min( max.x, this.x ) ); - this.y = Math.max( min.y, Math.min( max.y, this.y ) ); - this.z = Math.max( min.z, Math.min( max.z, this.z ) ); - this.w = Math.max( min.w, Math.min( max.w, this.w ) ); - - return this; - - }, - - clampScalar: function () { - - var min, max; - - return function clampScalar( minVal, maxVal ) { - - if ( min === undefined ) { - - min = new Vector4(); - max = new Vector4(); - - } - - min.set( minVal, minVal, minVal, minVal ); - max.set( maxVal, maxVal, maxVal, maxVal ); - - return this.clamp( min, max ); - - }; - - }(), - - clampLength: function ( min, max ) { - - var length = this.length(); - - return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); - - }, - - floor: function () { - - this.x = Math.floor( this.x ); - this.y = Math.floor( this.y ); - this.z = Math.floor( this.z ); - this.w = Math.floor( this.w ); - - return this; - - }, - - ceil: function () { - - this.x = Math.ceil( this.x ); - this.y = Math.ceil( this.y ); - this.z = Math.ceil( this.z ); - this.w = Math.ceil( this.w ); - - return this; - - }, - - round: function () { - - this.x = Math.round( this.x ); - this.y = Math.round( this.y ); - this.z = Math.round( this.z ); - this.w = Math.round( this.w ); - - return this; - - }, - - roundToZero: function () { - - this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); - this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); - this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); - this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); - - return this; - - }, - - negate: function () { - - this.x = - this.x; - this.y = - this.y; - this.z = - this.z; - this.w = - this.w; - - return this; - - }, - - dot: function ( v ) { - - return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; - - }, - - lengthSq: function () { - - return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; - - }, - - length: function () { - - return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); - - }, - - manhattanLength: function () { - - return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); - - }, - - normalize: function () { - - return this.divideScalar( this.length() || 1 ); - - }, - - setLength: function ( length ) { - - return this.normalize().multiplyScalar( length ); - - }, - - lerp: function ( v, alpha ) { - - this.x += ( v.x - this.x ) * alpha; - this.y += ( v.y - this.y ) * alpha; - this.z += ( v.z - this.z ) * alpha; - this.w += ( v.w - this.w ) * alpha; - - return this; - - }, - - lerpVectors: function ( v1, v2, alpha ) { - - return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); - - }, - - equals: function ( v ) { - - return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.x = array[ offset ]; - this.y = array[ offset + 1 ]; - this.z = array[ offset + 2 ]; - this.w = array[ offset + 3 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.x; - array[ offset + 1 ] = this.y; - array[ offset + 2 ] = this.z; - array[ offset + 3 ] = this.w; - - return array; - - }, - - fromBufferAttribute: function ( attribute, index, offset ) { - - if ( offset !== undefined ) { - - console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); - - } - - this.x = attribute.getX( index ); - this.y = attribute.getY( index ); - this.z = attribute.getZ( index ); - this.w = attribute.getW( index ); - - return this; - - } - - } ); - - /** - * @author szimek / https://github.com/szimek/ - * @author alteredq / http://alteredqualia.com/ - * @author Marius Kintel / https://github.com/kintel - */ - - /* - In options, we can specify: - * Texture parameters for an auto-generated target texture - * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers - */ - function WebGLRenderTarget( width, height, options ) { - - this.width = width; - this.height = height; - - this.scissor = new Vector4( 0, 0, width, height ); - this.scissorTest = false; - - this.viewport = new Vector4( 0, 0, width, height ); - - options = options || {}; - - this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); - - this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; - this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; - - this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; - this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true; - this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; - - } - - WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: WebGLRenderTarget, - - isWebGLRenderTarget: true, - - setSize: function ( width, height ) { - - if ( this.width !== width || this.height !== height ) { - - this.width = width; - this.height = height; - - this.dispose(); - - } - - this.viewport.set( 0, 0, width, height ); - this.scissor.set( 0, 0, width, height ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.width = source.width; - this.height = source.height; - - this.viewport.copy( source.viewport ); - - this.texture = source.texture.clone(); - - this.depthBuffer = source.depthBuffer; - this.stencilBuffer = source.stencilBuffer; - this.depthTexture = source.depthTexture; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author Mugen87 / https://github.com/Mugen87 - * @author Matt DesLauriers / @mattdesl - */ - - function WebGLMultisampleRenderTarget( width, height, options ) { - - WebGLRenderTarget.call( this, width, height, options ); - - this.samples = 4; - - } - - WebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), { - - constructor: WebGLMultisampleRenderTarget, - - isWebGLMultisampleRenderTarget: true, - - copy: function ( source ) { - - WebGLRenderTarget.prototype.copy.call( this, source ); - - this.samples = source.samples; - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com - */ - - function WebGLRenderTargetCube( width, height, options ) { - - WebGLRenderTarget.call( this, width, height, options ); - - this.activeCubeFace = 0; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5 - this.activeMipMapLevel = 0; - - } - - WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); - WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; - - WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { - - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); - - this.image = { data: data, width: width, height: height }; - - this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; - this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; - - this.generateMipmaps = false; - this.flipY = false; - this.unpackAlignment = 1; - - } - - DataTexture.prototype = Object.create( Texture.prototype ); - DataTexture.prototype.constructor = DataTexture; - - DataTexture.prototype.isDataTexture = true; - - /** - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - */ - - function Box3( min, max ) { - - this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); - this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); - - } - - Object.assign( Box3.prototype, { - - isBox3: true, - - set: function ( min, max ) { - - this.min.copy( min ); - this.max.copy( max ); - - return this; - - }, - - setFromArray: function ( array ) { - - var minX = + Infinity; - var minY = + Infinity; - var minZ = + Infinity; - - var maxX = - Infinity; - var maxY = - Infinity; - var maxZ = - Infinity; - - for ( var i = 0, l = array.length; i < l; i += 3 ) { - - var x = array[ i ]; - var y = array[ i + 1 ]; - var z = array[ i + 2 ]; - - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( z < minZ ) minZ = z; - - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - if ( z > maxZ ) maxZ = z; - - } - - this.min.set( minX, minY, minZ ); - this.max.set( maxX, maxY, maxZ ); - - return this; - - }, - - setFromBufferAttribute: function ( attribute ) { - - var minX = + Infinity; - var minY = + Infinity; - var minZ = + Infinity; - - var maxX = - Infinity; - var maxY = - Infinity; - var maxZ = - Infinity; - - for ( var i = 0, l = attribute.count; i < l; i ++ ) { - - var x = attribute.getX( i ); - var y = attribute.getY( i ); - var z = attribute.getZ( i ); - - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( z < minZ ) minZ = z; - - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - if ( z > maxZ ) maxZ = z; - - } - - this.min.set( minX, minY, minZ ); - this.max.set( maxX, maxY, maxZ ); - - return this; - - }, - - setFromPoints: function ( points ) { - - this.makeEmpty(); - - for ( var i = 0, il = points.length; i < il; i ++ ) { - - this.expandByPoint( points[ i ] ); - - } - - return this; - - }, - - setFromCenterAndSize: function () { - - var v1 = new Vector3(); - - return function setFromCenterAndSize( center, size ) { - - var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); - - this.min.copy( center ).sub( halfSize ); - this.max.copy( center ).add( halfSize ); - - return this; - - }; - - }(), - - setFromObject: function ( object ) { - - this.makeEmpty(); - - return this.expandByObject( object ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( box ) { - - this.min.copy( box.min ); - this.max.copy( box.max ); - - return this; - - }, - - makeEmpty: function () { - - this.min.x = this.min.y = this.min.z = + Infinity; - this.max.x = this.max.y = this.max.z = - Infinity; - - return this; - - }, - - isEmpty: function () { - - // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes - - return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); - - }, - - getCenter: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getCenter() target is now required' ); - target = new Vector3(); - - } - - return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); - - }, - - getSize: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getSize() target is now required' ); - target = new Vector3(); - - } - - return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); - - }, - - expandByPoint: function ( point ) { - - this.min.min( point ); - this.max.max( point ); - - return this; - - }, - - expandByVector: function ( vector ) { - - this.min.sub( vector ); - this.max.add( vector ); - - return this; - - }, - - expandByScalar: function ( scalar ) { - - this.min.addScalar( - scalar ); - this.max.addScalar( scalar ); - - return this; - - }, - - expandByObject: function () { - - // Computes the world-axis-aligned bounding box of an object (including its children), - // accounting for both the object's, and children's, world transforms - - var scope, i, l; - - var v1 = new Vector3(); - - function traverse( node ) { - - var geometry = node.geometry; - - if ( geometry !== undefined ) { - - if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - - for ( i = 0, l = vertices.length; i < l; i ++ ) { - - v1.copy( vertices[ i ] ); - v1.applyMatrix4( node.matrixWorld ); - - scope.expandByPoint( v1 ); - - } - - } else if ( geometry.isBufferGeometry ) { - - var attribute = geometry.attributes.position; - - if ( attribute !== undefined ) { - - for ( i = 0, l = attribute.count; i < l; i ++ ) { - - v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld ); - - scope.expandByPoint( v1 ); - - } - - } - - } - - } - - } - - return function expandByObject( object ) { - - scope = this; - - object.updateMatrixWorld( true ); - - object.traverse( traverse ); - - return this; - - }; - - }(), - - containsPoint: function ( point ) { - - return point.x < this.min.x || point.x > this.max.x || - point.y < this.min.y || point.y > this.max.y || - point.z < this.min.z || point.z > this.max.z ? false : true; - - }, - - containsBox: function ( box ) { - - return this.min.x <= box.min.x && box.max.x <= this.max.x && - this.min.y <= box.min.y && box.max.y <= this.max.y && - this.min.z <= box.min.z && box.max.z <= this.max.z; - - }, - - getParameter: function ( point, target ) { - - // This can potentially have a divide by zero if the box - // has a size dimension of 0. - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getParameter() target is now required' ); - target = new Vector3(); - - } - - return target.set( - ( point.x - this.min.x ) / ( this.max.x - this.min.x ), - ( point.y - this.min.y ) / ( this.max.y - this.min.y ), - ( point.z - this.min.z ) / ( this.max.z - this.min.z ) - ); - - }, - - intersectsBox: function ( box ) { - - // using 6 splitting planes to rule out intersections. - return box.max.x < this.min.x || box.min.x > this.max.x || - box.max.y < this.min.y || box.min.y > this.max.y || - box.max.z < this.min.z || box.min.z > this.max.z ? false : true; - - }, - - intersectsSphere: ( function () { - - var closestPoint = new Vector3(); - - return function intersectsSphere( sphere ) { - - // Find the point on the AABB closest to the sphere center. - this.clampPoint( sphere.center, closestPoint ); - - // If that point is inside the sphere, the AABB and sphere intersect. - return closestPoint.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); - - }; - - } )(), - - intersectsPlane: function ( plane ) { - - // We compute the minimum and maximum dot product values. If those values - // are on the same side (back or front) of the plane, then there is no intersection. - - var min, max; - - if ( plane.normal.x > 0 ) { - - min = plane.normal.x * this.min.x; - max = plane.normal.x * this.max.x; - - } else { - - min = plane.normal.x * this.max.x; - max = plane.normal.x * this.min.x; - - } - - if ( plane.normal.y > 0 ) { - - min += plane.normal.y * this.min.y; - max += plane.normal.y * this.max.y; - - } else { - - min += plane.normal.y * this.max.y; - max += plane.normal.y * this.min.y; - - } - - if ( plane.normal.z > 0 ) { - - min += plane.normal.z * this.min.z; - max += plane.normal.z * this.max.z; - - } else { - - min += plane.normal.z * this.max.z; - max += plane.normal.z * this.min.z; - - } - - return ( min <= - plane.constant && max >= - plane.constant ); - - }, - - intersectsTriangle: ( function () { - - // triangle centered vertices - var v0 = new Vector3(); - var v1 = new Vector3(); - var v2 = new Vector3(); - - // triangle edge vectors - var f0 = new Vector3(); - var f1 = new Vector3(); - var f2 = new Vector3(); - - var testAxis = new Vector3(); - - var center = new Vector3(); - var extents = new Vector3(); - - var triangleNormal = new Vector3(); - - function satForAxes( axes ) { - - var i, j; - - for ( i = 0, j = axes.length - 3; i <= j; i += 3 ) { - - testAxis.fromArray( axes, i ); - // project the aabb onto the seperating axis - var r = extents.x * Math.abs( testAxis.x ) + extents.y * Math.abs( testAxis.y ) + extents.z * Math.abs( testAxis.z ); - // project all 3 vertices of the triangle onto the seperating axis - var p0 = v0.dot( testAxis ); - var p1 = v1.dot( testAxis ); - var p2 = v2.dot( testAxis ); - // actual test, basically see if either of the most extreme of the triangle points intersects r - if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { - - // points of the projected triangle are outside the projected half-length of the aabb - // the axis is seperating and we can exit - return false; - - } - - } - - return true; - - } - - return function intersectsTriangle( triangle ) { - - if ( this.isEmpty() ) { - - return false; - - } - - // compute box center and extents - this.getCenter( center ); - extents.subVectors( this.max, center ); - - // translate triangle to aabb origin - v0.subVectors( triangle.a, center ); - v1.subVectors( triangle.b, center ); - v2.subVectors( triangle.c, center ); - - // compute edge vectors for triangle - f0.subVectors( v1, v0 ); - f1.subVectors( v2, v1 ); - f2.subVectors( v0, v2 ); - - // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb - // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation - // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) - var axes = [ - 0, - f0.z, f0.y, 0, - f1.z, f1.y, 0, - f2.z, f2.y, - f0.z, 0, - f0.x, f1.z, 0, - f1.x, f2.z, 0, - f2.x, - - f0.y, f0.x, 0, - f1.y, f1.x, 0, - f2.y, f2.x, 0 - ]; - if ( ! satForAxes( axes ) ) { - - return false; - - } - - // test 3 face normals from the aabb - axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; - if ( ! satForAxes( axes ) ) { - - return false; - - } - - // finally testing the face normal of the triangle - // use already existing triangle edge vectors here - triangleNormal.crossVectors( f0, f1 ); - axes = [ triangleNormal.x, triangleNormal.y, triangleNormal.z ]; - return satForAxes( axes ); - - }; - - } )(), - - clampPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .clampPoint() target is now required' ); - target = new Vector3(); - - } - - return target.copy( point ).clamp( this.min, this.max ); - - }, - - distanceToPoint: function () { - - var v1 = new Vector3(); - - return function distanceToPoint( point ) { - - var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); - return clampedPoint.sub( point ).length(); - - }; - - }(), - - getBoundingSphere: function () { - - var v1 = new Vector3(); - - return function getBoundingSphere( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box3: .getBoundingSphere() target is now required' ); - target = new Sphere(); - - } - - this.getCenter( target.center ); - - target.radius = this.getSize( v1 ).length() * 0.5; - - return target; - - }; - - }(), - - intersect: function ( box ) { - - this.min.max( box.min ); - this.max.min( box.max ); - - // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. - if ( this.isEmpty() ) this.makeEmpty(); - - return this; - - }, - - union: function ( box ) { - - this.min.min( box.min ); - this.max.max( box.max ); - - return this; - - }, - - applyMatrix4: function () { - - var points = [ - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3(), - new Vector3() - ]; - - return function applyMatrix4( matrix ) { - - // transform of empty box is an empty box. - if ( this.isEmpty() ) return this; - - // NOTE: I am using a binary pattern to specify all 2^3 combinations below - points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 - points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 - points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 - points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 - points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 - points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 - points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 - points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 - - this.setFromPoints( points ); - - return this; - - }; - - }(), - - translate: function ( offset ) { - - this.min.add( offset ); - this.max.add( offset ); - - return this; - - }, - - equals: function ( box ) { - - return box.min.equals( this.min ) && box.max.equals( this.max ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author mrdoob / http://mrdoob.com/ - */ - - function Sphere( center, radius ) { - - this.center = ( center !== undefined ) ? center : new Vector3(); - this.radius = ( radius !== undefined ) ? radius : 0; - - } - - Object.assign( Sphere.prototype, { - - set: function ( center, radius ) { - - this.center.copy( center ); - this.radius = radius; - - return this; - - }, - - setFromPoints: function () { - - var box = new Box3(); - - return function setFromPoints( points, optionalCenter ) { - - var center = this.center; - - if ( optionalCenter !== undefined ) { - - center.copy( optionalCenter ); - - } else { - - box.setFromPoints( points ).getCenter( center ); - - } - - var maxRadiusSq = 0; - - for ( var i = 0, il = points.length; i < il; i ++ ) { - - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); - - } - - this.radius = Math.sqrt( maxRadiusSq ); - - return this; - - }; - - }(), - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( sphere ) { - - this.center.copy( sphere.center ); - this.radius = sphere.radius; - - return this; - - }, - - empty: function () { - - return ( this.radius <= 0 ); - - }, - - containsPoint: function ( point ) { - - return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); - - }, - - distanceToPoint: function ( point ) { - - return ( point.distanceTo( this.center ) - this.radius ); - - }, - - intersectsSphere: function ( sphere ) { - - var radiusSum = this.radius + sphere.radius; - - return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); - - }, - - intersectsBox: function ( box ) { - - return box.intersectsSphere( this ); - - }, - - intersectsPlane: function ( plane ) { - - return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; - - }, - - clampPoint: function ( point, target ) { - - var deltaLengthSq = this.center.distanceToSquared( point ); - - if ( target === undefined ) { - - console.warn( 'THREE.Sphere: .clampPoint() target is now required' ); - target = new Vector3(); - - } - - target.copy( point ); - - if ( deltaLengthSq > ( this.radius * this.radius ) ) { - - target.sub( this.center ).normalize(); - target.multiplyScalar( this.radius ).add( this.center ); - - } - - return target; - - }, - - getBoundingBox: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Sphere: .getBoundingBox() target is now required' ); - target = new Box3(); - - } - - target.set( this.center, this.center ); - target.expandByScalar( this.radius ); - - return target; - - }, - - applyMatrix4: function ( matrix ) { - - this.center.applyMatrix4( matrix ); - this.radius = this.radius * matrix.getMaxScaleOnAxis(); - - return this; - - }, - - translate: function ( offset ) { - - this.center.add( offset ); - - return this; - - }, - - equals: function ( sphere ) { - - return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - */ - - function Plane( normal, constant ) { - - // normal is assumed to be normalized - - this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); - this.constant = ( constant !== undefined ) ? constant : 0; - - } - - Object.assign( Plane.prototype, { - - set: function ( normal, constant ) { - - this.normal.copy( normal ); - this.constant = constant; - - return this; - - }, - - setComponents: function ( x, y, z, w ) { - - this.normal.set( x, y, z ); - this.constant = w; - - return this; - - }, - - setFromNormalAndCoplanarPoint: function ( normal, point ) { - - this.normal.copy( normal ); - this.constant = - point.dot( this.normal ); - - return this; - - }, - - setFromCoplanarPoints: function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - - return function setFromCoplanarPoints( a, b, c ) { - - var normal = v1.subVectors( c, b ).cross( v2.subVectors( a, b ) ).normalize(); - - // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? - - this.setFromNormalAndCoplanarPoint( normal, a ); - - return this; - - }; - - }(), - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( plane ) { - - this.normal.copy( plane.normal ); - this.constant = plane.constant; - - return this; - - }, - - normalize: function () { - - // Note: will lead to a divide by zero if the plane is invalid. - - var inverseNormalLength = 1.0 / this.normal.length(); - this.normal.multiplyScalar( inverseNormalLength ); - this.constant *= inverseNormalLength; - - return this; - - }, - - negate: function () { - - this.constant *= - 1; - this.normal.negate(); - - return this; - - }, - - distanceToPoint: function ( point ) { - - return this.normal.dot( point ) + this.constant; - - }, - - distanceToSphere: function ( sphere ) { - - return this.distanceToPoint( sphere.center ) - sphere.radius; - - }, - - projectPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Plane: .projectPoint() target is now required' ); - target = new Vector3(); - - } - - return target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); - - }, - - intersectLine: function () { - - var v1 = new Vector3(); - - return function intersectLine( line, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Plane: .intersectLine() target is now required' ); - target = new Vector3(); - - } - - var direction = line.delta( v1 ); - - var denominator = this.normal.dot( direction ); - - if ( denominator === 0 ) { - - // line is coplanar, return origin - if ( this.distanceToPoint( line.start ) === 0 ) { - - return target.copy( line.start ); - - } - - // Unsure if this is the correct method to handle this case. - return undefined; - - } - - var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; - - if ( t < 0 || t > 1 ) { - - return undefined; - - } - - return target.copy( direction ).multiplyScalar( t ).add( line.start ); - - }; - - }(), - - intersectsLine: function ( line ) { - - // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. - - var startSign = this.distanceToPoint( line.start ); - var endSign = this.distanceToPoint( line.end ); - - return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); - - }, - - intersectsBox: function ( box ) { - - return box.intersectsPlane( this ); - - }, - - intersectsSphere: function ( sphere ) { - - return sphere.intersectsPlane( this ); - - }, - - coplanarPoint: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Plane: .coplanarPoint() target is now required' ); - target = new Vector3(); - - } - - return target.copy( this.normal ).multiplyScalar( - this.constant ); - - }, - - applyMatrix4: function () { - - var v1 = new Vector3(); - var m1 = new Matrix3(); - - return function applyMatrix4( matrix, optionalNormalMatrix ) { - - var normalMatrix = optionalNormalMatrix || m1.getNormalMatrix( matrix ); - - var referencePoint = this.coplanarPoint( v1 ).applyMatrix4( matrix ); - - var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); - - this.constant = - referencePoint.dot( normal ); - - return this; - - }; - - }(), - - translate: function ( offset ) { - - this.constant -= offset.dot( this.normal ); - - return this; - - }, - - equals: function ( plane ) { - - return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author bhouston / http://clara.io - */ - - function Frustum( p0, p1, p2, p3, p4, p5 ) { - - this.planes = [ - - ( p0 !== undefined ) ? p0 : new Plane(), - ( p1 !== undefined ) ? p1 : new Plane(), - ( p2 !== undefined ) ? p2 : new Plane(), - ( p3 !== undefined ) ? p3 : new Plane(), - ( p4 !== undefined ) ? p4 : new Plane(), - ( p5 !== undefined ) ? p5 : new Plane() - - ]; - - } - - Object.assign( Frustum.prototype, { - - set: function ( p0, p1, p2, p3, p4, p5 ) { - - var planes = this.planes; - - planes[ 0 ].copy( p0 ); - planes[ 1 ].copy( p1 ); - planes[ 2 ].copy( p2 ); - planes[ 3 ].copy( p3 ); - planes[ 4 ].copy( p4 ); - planes[ 5 ].copy( p5 ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( frustum ) { - - var planes = this.planes; - - for ( var i = 0; i < 6; i ++ ) { - - planes[ i ].copy( frustum.planes[ i ] ); - - } - - return this; - - }, - - setFromMatrix: function ( m ) { - - var planes = this.planes; - var me = m.elements; - var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; - var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; - var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; - var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; - - planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); - planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); - planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); - planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); - planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); - planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); - - return this; - - }, - - intersectsObject: function () { - - var sphere = new Sphere(); - - return function intersectsObject( object ) { - - var geometry = object.geometry; - - if ( geometry.boundingSphere === null ) - geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ) - .applyMatrix4( object.matrixWorld ); - - return this.intersectsSphere( sphere ); - - }; - - }(), - - intersectsSprite: function () { - - var sphere = new Sphere(); - - return function intersectsSprite( sprite ) { - - sphere.center.set( 0, 0, 0 ); - sphere.radius = 0.7071067811865476; - sphere.applyMatrix4( sprite.matrixWorld ); - - return this.intersectsSphere( sphere ); - - }; - - }(), - - intersectsSphere: function ( sphere ) { - - var planes = this.planes; - var center = sphere.center; - var negRadius = - sphere.radius; - - for ( var i = 0; i < 6; i ++ ) { - - var distance = planes[ i ].distanceToPoint( center ); - - if ( distance < negRadius ) { - - return false; - - } - - } - - return true; - - }, - - intersectsBox: function () { - - var p = new Vector3(); - - return function intersectsBox( box ) { - - var planes = this.planes; - - for ( var i = 0; i < 6; i ++ ) { - - var plane = planes[ i ]; - - // corner at max distance - - p.x = plane.normal.x > 0 ? box.max.x : box.min.x; - p.y = plane.normal.y > 0 ? box.max.y : box.min.y; - p.z = plane.normal.z > 0 ? box.max.z : box.min.z; - - if ( plane.distanceToPoint( p ) < 0 ) { - - return false; - - } - - } - - return true; - - }; - - }(), - - containsPoint: function ( point ) { - - var planes = this.planes; - - for ( var i = 0; i < 6; i ++ ) { - - if ( planes[ i ].distanceToPoint( point ) < 0 ) { - - return false; - - } - - } - - return true; - - } - - } ); - - var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif"; - - var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; - - var alphatest_fragment = "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif"; - - var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif"; - - var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; - - var begin_vertex = "vec3 transformed = vec3( position );"; - - var beginnormal_vertex = "vec3 objectNormal = vec3( normal );"; - - var bsdfs = "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick( specularColor, dotNV );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}"; - - var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif"; - - var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif"; - - var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; - - var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif"; - - var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif"; - - var color_fragment = "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif"; - - var color_pars_fragment = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; - - var color_pars_vertex = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; - - var color_vertex = "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif"; - - var common = "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}"; - - var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif"; - - var defaultnormal_vertex = "vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif"; - - var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; - - var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif"; - - var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; - - var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; - - var encodings_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; - - var encodings_pars_fragment = "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}"; - - var envmap_fragment = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif"; - - var envmap_pars_fragment = "#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif"; - - var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif"; - - var envmap_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif"; - - var fog_vertex = "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif"; - - var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif"; - - var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; - - var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif"; - - var gradientmap_pars_fragment = "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif"; - - var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif"; - - var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; - - var lights_lambert_vertex = "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif"; - - var lights_pars_begin = "uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif"; - - var envmap_physical_pars_fragment = "#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent ));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif"; - - var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; - - var lights_phong_pars_fragment = "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)"; - - var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif"; - - var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#endif\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\tfloat clearCoatInv = 1.0 - clearCoatDHR;\n\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec3 singleScattering = vec3( 0.0 );\n\t\tvec3 multiScattering = vec3( 0.0 );\n\t\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\t\tvec3 diffuse = material.diffuseColor;\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * singleScattering;\n\t\treflectedLight.indirectDiffuse += multiScattering * cosineWeightedIrradiance;\n\t\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n\t#else\n\t\treflectedLight.indirectSpecular += clearCoatInv * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#endif\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; - - var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearCoatRadiance = vec3( 0.0 );\n#endif"; - - var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), maxMipLevel );\n\t#ifndef STANDARD\n\t\tclearCoatRadiance += getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), maxMipLevel );\n\t#endif\n#endif"; - - var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, irradiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif"; - - var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif"; - - var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n#endif"; - - var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif"; - - var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\tgl_Position.z *= gl_Position.w;\n\t#endif\n#endif"; - - var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif"; - - var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; - - var map_particle_fragment = "#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif"; - - var map_particle_pars_fragment = "#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif"; - - var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; - - var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; - - var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif"; - - var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif"; - - var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif"; - - var normal_fragment_begin = "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n#endif"; - - var normal_fragment_maps = "#ifdef USE_NORMALMAP\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t#ifdef FLIP_SIDED\n\t\t\tnormal = - normal;\n\t\t#endif\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tnormal = normalize( normalMatrix * normal );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif"; - - var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\t#ifdef OBJECTSPACE_NORMALMAP\n\t\tuniform mat3 normalMatrix;\n\t#else\n\t\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\t\tvec2 st0 = dFdx( vUv.st );\n\t\t\tvec2 st1 = dFdy( vUv.st );\n\t\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\t\tvec3 N = normalize( surf_norm );\n\t\t\tmat3 tsn = mat3( S, T, N );\n\t\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\t\tmapN.xy *= normalScale;\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\treturn normalize( tsn * mapN );\n\t\t}\n\t#endif\n#endif"; - - var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}"; - - var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; - - var project_vertex = "vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;"; - - var dithering_fragment = "#if defined( DITHERING )\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; - - var dithering_pars_fragment = "#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif"; - - var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; - - var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; - - var shadowmap_pars_fragment = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif"; - - var shadowmap_pars_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif"; - - var shadowmap_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif"; - - var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}"; - - var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; - - var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif"; - - var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; - - var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n#endif"; - - var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; - - var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; - - var tonemapping_fragment = "#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; - - var tonemapping_pars_fragment = "#ifndef saturate\n\t#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}"; - - var uv_pars_fragment = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif"; - - var uv_pars_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif"; - - var uv_vertex = "#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; - - var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; - - var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif"; - - var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif"; - - var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif"; - - var background_frag = "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; - - var background_vert = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; - - var cube_frag = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}"; - - var cube_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; - - var depth_frag = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}"; - - var depth_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var distanceRGBA_frag = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}"; - - var distanceRGBA_vert = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}"; - - var equirect_frag = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; - - var equirect_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; - - var linedashed_frag = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var linedashed_vert = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; - - var meshbasic_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshbasic_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshlambert_frag = "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshlambert_vert = "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshmatcap_frag = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshmatcap_vert = "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}"; - - var meshphong_frag = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshphysical_frag = "#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var meshphysical_vert = "#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; - - var normal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}"; - - var normal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || ( defined( USE_NORMALMAP ) && ! defined( OBJECTSPACE_NORMALMAP ) )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; - - var points_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var points_vert = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var shadow_frag = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}"; - - var shadow_vert = "#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; - - var sprite_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}"; - - var sprite_vert = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; - - var ShaderChunk = { - alphamap_fragment: alphamap_fragment, - alphamap_pars_fragment: alphamap_pars_fragment, - alphatest_fragment: alphatest_fragment, - aomap_fragment: aomap_fragment, - aomap_pars_fragment: aomap_pars_fragment, - begin_vertex: begin_vertex, - beginnormal_vertex: beginnormal_vertex, - bsdfs: bsdfs, - bumpmap_pars_fragment: bumpmap_pars_fragment, - clipping_planes_fragment: clipping_planes_fragment, - clipping_planes_pars_fragment: clipping_planes_pars_fragment, - clipping_planes_pars_vertex: clipping_planes_pars_vertex, - clipping_planes_vertex: clipping_planes_vertex, - color_fragment: color_fragment, - color_pars_fragment: color_pars_fragment, - color_pars_vertex: color_pars_vertex, - color_vertex: color_vertex, - common: common, - cube_uv_reflection_fragment: cube_uv_reflection_fragment, - defaultnormal_vertex: defaultnormal_vertex, - displacementmap_pars_vertex: displacementmap_pars_vertex, - displacementmap_vertex: displacementmap_vertex, - emissivemap_fragment: emissivemap_fragment, - emissivemap_pars_fragment: emissivemap_pars_fragment, - encodings_fragment: encodings_fragment, - encodings_pars_fragment: encodings_pars_fragment, - envmap_fragment: envmap_fragment, - envmap_pars_fragment: envmap_pars_fragment, - envmap_pars_vertex: envmap_pars_vertex, - envmap_physical_pars_fragment: envmap_physical_pars_fragment, - envmap_vertex: envmap_vertex, - fog_vertex: fog_vertex, - fog_pars_vertex: fog_pars_vertex, - fog_fragment: fog_fragment, - fog_pars_fragment: fog_pars_fragment, - gradientmap_pars_fragment: gradientmap_pars_fragment, - lightmap_fragment: lightmap_fragment, - lightmap_pars_fragment: lightmap_pars_fragment, - lights_lambert_vertex: lights_lambert_vertex, - lights_pars_begin: lights_pars_begin, - lights_phong_fragment: lights_phong_fragment, - lights_phong_pars_fragment: lights_phong_pars_fragment, - lights_physical_fragment: lights_physical_fragment, - lights_physical_pars_fragment: lights_physical_pars_fragment, - lights_fragment_begin: lights_fragment_begin, - lights_fragment_maps: lights_fragment_maps, - lights_fragment_end: lights_fragment_end, - logdepthbuf_fragment: logdepthbuf_fragment, - logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, - logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, - logdepthbuf_vertex: logdepthbuf_vertex, - map_fragment: map_fragment, - map_pars_fragment: map_pars_fragment, - map_particle_fragment: map_particle_fragment, - map_particle_pars_fragment: map_particle_pars_fragment, - metalnessmap_fragment: metalnessmap_fragment, - metalnessmap_pars_fragment: metalnessmap_pars_fragment, - morphnormal_vertex: morphnormal_vertex, - morphtarget_pars_vertex: morphtarget_pars_vertex, - morphtarget_vertex: morphtarget_vertex, - normal_fragment_begin: normal_fragment_begin, - normal_fragment_maps: normal_fragment_maps, - normalmap_pars_fragment: normalmap_pars_fragment, - packing: packing, - premultiplied_alpha_fragment: premultiplied_alpha_fragment, - project_vertex: project_vertex, - dithering_fragment: dithering_fragment, - dithering_pars_fragment: dithering_pars_fragment, - roughnessmap_fragment: roughnessmap_fragment, - roughnessmap_pars_fragment: roughnessmap_pars_fragment, - shadowmap_pars_fragment: shadowmap_pars_fragment, - shadowmap_pars_vertex: shadowmap_pars_vertex, - shadowmap_vertex: shadowmap_vertex, - shadowmask_pars_fragment: shadowmask_pars_fragment, - skinbase_vertex: skinbase_vertex, - skinning_pars_vertex: skinning_pars_vertex, - skinning_vertex: skinning_vertex, - skinnormal_vertex: skinnormal_vertex, - specularmap_fragment: specularmap_fragment, - specularmap_pars_fragment: specularmap_pars_fragment, - tonemapping_fragment: tonemapping_fragment, - tonemapping_pars_fragment: tonemapping_pars_fragment, - uv_pars_fragment: uv_pars_fragment, - uv_pars_vertex: uv_pars_vertex, - uv_vertex: uv_vertex, - uv2_pars_fragment: uv2_pars_fragment, - uv2_pars_vertex: uv2_pars_vertex, - uv2_vertex: uv2_vertex, - worldpos_vertex: worldpos_vertex, - - background_frag: background_frag, - background_vert: background_vert, - cube_frag: cube_frag, - cube_vert: cube_vert, - depth_frag: depth_frag, - depth_vert: depth_vert, - distanceRGBA_frag: distanceRGBA_frag, - distanceRGBA_vert: distanceRGBA_vert, - equirect_frag: equirect_frag, - equirect_vert: equirect_vert, - linedashed_frag: linedashed_frag, - linedashed_vert: linedashed_vert, - meshbasic_frag: meshbasic_frag, - meshbasic_vert: meshbasic_vert, - meshlambert_frag: meshlambert_frag, - meshlambert_vert: meshlambert_vert, - meshmatcap_frag: meshmatcap_frag, - meshmatcap_vert: meshmatcap_vert, - meshphong_frag: meshphong_frag, - meshphong_vert: meshphong_vert, - meshphysical_frag: meshphysical_frag, - meshphysical_vert: meshphysical_vert, - normal_frag: normal_frag, - normal_vert: normal_vert, - points_frag: points_frag, - points_vert: points_vert, - shadow_frag: shadow_frag, - shadow_vert: shadow_vert, - sprite_frag: sprite_frag, - sprite_vert: sprite_vert - }; - - /** - * Uniform Utilities - */ - - function cloneUniforms( src ) { - - var dst = {}; - - for ( var u in src ) { - - dst[ u ] = {}; - - for ( var p in src[ u ] ) { - - var property = src[ u ][ p ]; - - if ( property && ( property.isColor || - property.isMatrix3 || property.isMatrix4 || - property.isVector2 || property.isVector3 || property.isVector4 || - property.isTexture ) ) { - - dst[ u ][ p ] = property.clone(); - - } else if ( Array.isArray( property ) ) { - - dst[ u ][ p ] = property.slice(); - - } else { - - dst[ u ][ p ] = property; - - } - - } - - } - - return dst; - - } - - function mergeUniforms( uniforms ) { - - var merged = {}; - - for ( var u = 0; u < uniforms.length; u ++ ) { - - var tmp = cloneUniforms( uniforms[ u ] ); - - for ( var p in tmp ) { - - merged[ p ] = tmp[ p ]; - - } - - } - - return merged; - - } - - // Legacy - - var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var ColorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, - 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, - 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, - 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, - 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, - 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, - 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, - 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, - 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, - 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, - 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, - 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, - 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, - 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, - 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, - 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, - 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, - 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, - 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, - 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, - 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, - 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, - 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, - 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; - - function Color( r, g, b ) { - - if ( g === undefined && b === undefined ) { - - // r is THREE.Color, hex or string - return this.set( r ); - - } - - return this.setRGB( r, g, b ); - - } - - Object.assign( Color.prototype, { - - isColor: true, - - r: 1, g: 1, b: 1, - - set: function ( value ) { - - if ( value && value.isColor ) { - - this.copy( value ); - - } else if ( typeof value === 'number' ) { - - this.setHex( value ); - - } else if ( typeof value === 'string' ) { - - this.setStyle( value ); - - } - - return this; - - }, - - setScalar: function ( scalar ) { - - this.r = scalar; - this.g = scalar; - this.b = scalar; - - return this; - - }, - - setHex: function ( hex ) { - - hex = Math.floor( hex ); - - this.r = ( hex >> 16 & 255 ) / 255; - this.g = ( hex >> 8 & 255 ) / 255; - this.b = ( hex & 255 ) / 255; - - return this; - - }, - - setRGB: function ( r, g, b ) { - - this.r = r; - this.g = g; - this.b = b; - - return this; - - }, - - setHSL: function () { - - function hue2rgb( p, q, t ) { - - if ( t < 0 ) t += 1; - if ( t > 1 ) t -= 1; - if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t; - if ( t < 1 / 2 ) return q; - if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t ); - return p; - - } - - return function setHSL( h, s, l ) { - - // h,s,l ranges are in 0.0 - 1.0 - h = _Math.euclideanModulo( h, 1 ); - s = _Math.clamp( s, 0, 1 ); - l = _Math.clamp( l, 0, 1 ); - - if ( s === 0 ) { - - this.r = this.g = this.b = l; - - } else { - - var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); - var q = ( 2 * l ) - p; - - this.r = hue2rgb( q, p, h + 1 / 3 ); - this.g = hue2rgb( q, p, h ); - this.b = hue2rgb( q, p, h - 1 / 3 ); - - } - - return this; - - }; - - }(), - - setStyle: function ( style ) { - - function handleAlpha( string ) { - - if ( string === undefined ) return; - - if ( parseFloat( string ) < 1 ) { - - console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); - - } - - } - - - var m; - - if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { - - // rgb / hsl - - var color; - var name = m[ 1 ]; - var components = m[ 2 ]; - - switch ( name ) { - - case 'rgb': - case 'rgba': - - if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { - - // rgb(255,0,0) rgba(255,0,0,0.5) - this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; - this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; - this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; - - handleAlpha( color[ 5 ] ); - - return this; - - } - - if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { - - // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) - this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; - this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; - this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; - - handleAlpha( color[ 5 ] ); - - return this; - - } - - break; - - case 'hsl': - case 'hsla': - - if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { - - // hsl(120,50%,50%) hsla(120,50%,50%,0.5) - var h = parseFloat( color[ 1 ] ) / 360; - var s = parseInt( color[ 2 ], 10 ) / 100; - var l = parseInt( color[ 3 ], 10 ) / 100; - - handleAlpha( color[ 5 ] ); - - return this.setHSL( h, s, l ); - - } - - break; - - } - - } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { - - // hex color - - var hex = m[ 1 ]; - var size = hex.length; - - if ( size === 3 ) { - - // #ff0 - this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; - this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; - this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; - - return this; - - } else if ( size === 6 ) { - - // #ff0000 - this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; - this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; - this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; - - return this; - - } - - } - - if ( style && style.length > 0 ) { - - // color keywords - var hex = ColorKeywords[ style ]; - - if ( hex !== undefined ) { - - // red - this.setHex( hex ); - - } else { - - // unknown color - console.warn( 'THREE.Color: Unknown color ' + style ); - - } - - } - - return this; - - }, - - clone: function () { - - return new this.constructor( this.r, this.g, this.b ); - - }, - - copy: function ( color ) { - - this.r = color.r; - this.g = color.g; - this.b = color.b; - - return this; - - }, - - copyGammaToLinear: function ( color, gammaFactor ) { - - if ( gammaFactor === undefined ) gammaFactor = 2.0; - - this.r = Math.pow( color.r, gammaFactor ); - this.g = Math.pow( color.g, gammaFactor ); - this.b = Math.pow( color.b, gammaFactor ); - - return this; - - }, - - copyLinearToGamma: function ( color, gammaFactor ) { - - if ( gammaFactor === undefined ) gammaFactor = 2.0; - - var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; - - this.r = Math.pow( color.r, safeInverse ); - this.g = Math.pow( color.g, safeInverse ); - this.b = Math.pow( color.b, safeInverse ); - - return this; - - }, - - convertGammaToLinear: function ( gammaFactor ) { - - this.copyGammaToLinear( this, gammaFactor ); - - return this; - - }, - - convertLinearToGamma: function ( gammaFactor ) { - - this.copyLinearToGamma( this, gammaFactor ); - - return this; - - }, - - copySRGBToLinear: function () { - - function SRGBToLinear( c ) { - - return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); - - } - - return function copySRGBToLinear( color ) { - - this.r = SRGBToLinear( color.r ); - this.g = SRGBToLinear( color.g ); - this.b = SRGBToLinear( color.b ); - - return this; - - }; - - }(), - - copyLinearToSRGB: function () { - - function LinearToSRGB( c ) { - - return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; - - } - - return function copyLinearToSRGB( color ) { - - this.r = LinearToSRGB( color.r ); - this.g = LinearToSRGB( color.g ); - this.b = LinearToSRGB( color.b ); - - return this; - - }; - - }(), - - convertSRGBToLinear: function () { - - this.copySRGBToLinear( this ); - - return this; - - }, - - convertLinearToSRGB: function () { - - this.copyLinearToSRGB( this ); - - return this; - - }, - - getHex: function () { - - return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; - - }, - - getHexString: function () { - - return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); - - }, - - getHSL: function ( target ) { - - // h,s,l ranges are in 0.0 - 1.0 - - if ( target === undefined ) { - - console.warn( 'THREE.Color: .getHSL() target is now required' ); - target = { h: 0, s: 0, l: 0 }; - - } - - var r = this.r, g = this.g, b = this.b; - - var max = Math.max( r, g, b ); - var min = Math.min( r, g, b ); - - var hue, saturation; - var lightness = ( min + max ) / 2.0; - - if ( min === max ) { - - hue = 0; - saturation = 0; - - } else { - - var delta = max - min; - - saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); - - switch ( max ) { - - case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; - case g: hue = ( b - r ) / delta + 2; break; - case b: hue = ( r - g ) / delta + 4; break; - - } - - hue /= 6; - - } - - target.h = hue; - target.s = saturation; - target.l = lightness; - - return target; - - }, - - getStyle: function () { - - return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; - - }, - - offsetHSL: function () { - - var hsl = {}; - - return function ( h, s, l ) { - - this.getHSL( hsl ); - - hsl.h += h; hsl.s += s; hsl.l += l; - - this.setHSL( hsl.h, hsl.s, hsl.l ); - - return this; - - }; - - }(), - - add: function ( color ) { - - this.r += color.r; - this.g += color.g; - this.b += color.b; - - return this; - - }, - - addColors: function ( color1, color2 ) { - - this.r = color1.r + color2.r; - this.g = color1.g + color2.g; - this.b = color1.b + color2.b; - - return this; - - }, - - addScalar: function ( s ) { - - this.r += s; - this.g += s; - this.b += s; - - return this; - - }, - - sub: function ( color ) { - - this.r = Math.max( 0, this.r - color.r ); - this.g = Math.max( 0, this.g - color.g ); - this.b = Math.max( 0, this.b - color.b ); - - return this; - - }, - - multiply: function ( color ) { - - this.r *= color.r; - this.g *= color.g; - this.b *= color.b; - - return this; - - }, - - multiplyScalar: function ( s ) { - - this.r *= s; - this.g *= s; - this.b *= s; - - return this; - - }, - - lerp: function ( color, alpha ) { - - this.r += ( color.r - this.r ) * alpha; - this.g += ( color.g - this.g ) * alpha; - this.b += ( color.b - this.b ) * alpha; - - return this; - - }, - - lerpHSL: function () { - - var hslA = { h: 0, s: 0, l: 0 }; - var hslB = { h: 0, s: 0, l: 0 }; - - return function lerpHSL( color, alpha ) { - - this.getHSL( hslA ); - color.getHSL( hslB ); - - var h = _Math.lerp( hslA.h, hslB.h, alpha ); - var s = _Math.lerp( hslA.s, hslB.s, alpha ); - var l = _Math.lerp( hslA.l, hslB.l, alpha ); - - this.setHSL( h, s, l ); - - return this; - - }; - - }(), - - equals: function ( c ) { - - return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); - - }, - - fromArray: function ( array, offset ) { - - if ( offset === undefined ) offset = 0; - - this.r = array[ offset ]; - this.g = array[ offset + 1 ]; - this.b = array[ offset + 2 ]; - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this.r; - array[ offset + 1 ] = this.g; - array[ offset + 2 ] = this.b; - - return array; - - }, - - toJSON: function () { - - return this.getHex(); - - } - - } ); - - /** - * Uniforms library for shared webgl shaders - */ - - var UniformsLib = { - - common: { - - diffuse: { value: new Color( 0xeeeeee ) }, - opacity: { value: 1.0 }, - - map: { value: null }, - uvTransform: { value: new Matrix3() }, - - alphaMap: { value: null }, - - }, - - specularmap: { - - specularMap: { value: null }, - - }, - - envmap: { - - envMap: { value: null }, - flipEnvMap: { value: - 1 }, - reflectivity: { value: 1.0 }, - refractionRatio: { value: 0.98 }, - maxMipLevel: { value: 0 } - - }, - - aomap: { - - aoMap: { value: null }, - aoMapIntensity: { value: 1 } - - }, - - lightmap: { - - lightMap: { value: null }, - lightMapIntensity: { value: 1 } - - }, - - emissivemap: { - - emissiveMap: { value: null } - - }, - - bumpmap: { - - bumpMap: { value: null }, - bumpScale: { value: 1 } - - }, - - normalmap: { - - normalMap: { value: null }, - normalScale: { value: new Vector2( 1, 1 ) } - - }, - - displacementmap: { - - displacementMap: { value: null }, - displacementScale: { value: 1 }, - displacementBias: { value: 0 } - - }, - - roughnessmap: { - - roughnessMap: { value: null } - - }, - - metalnessmap: { - - metalnessMap: { value: null } - - }, - - gradientmap: { - - gradientMap: { value: null } - - }, - - fog: { - - fogDensity: { value: 0.00025 }, - fogNear: { value: 1 }, - fogFar: { value: 2000 }, - fogColor: { value: new Color( 0xffffff ) } - - }, - - lights: { - - ambientLightColor: { value: [] }, - - directionalLights: { value: [], properties: { - direction: {}, - color: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {} - } }, - - directionalShadowMap: { value: [] }, - directionalShadowMatrix: { value: [] }, - - spotLights: { value: [], properties: { - color: {}, - position: {}, - direction: {}, - distance: {}, - coneCos: {}, - penumbraCos: {}, - decay: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {} - } }, - - spotShadowMap: { value: [] }, - spotShadowMatrix: { value: [] }, - - pointLights: { value: [], properties: { - color: {}, - position: {}, - decay: {}, - distance: {}, - - shadow: {}, - shadowBias: {}, - shadowRadius: {}, - shadowMapSize: {}, - shadowCameraNear: {}, - shadowCameraFar: {} - } }, - - pointShadowMap: { value: [] }, - pointShadowMatrix: { value: [] }, - - hemisphereLights: { value: [], properties: { - direction: {}, - skyColor: {}, - groundColor: {} - } }, - - // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src - rectAreaLights: { value: [], properties: { - color: {}, - position: {}, - width: {}, - height: {} - } } - - }, - - points: { - - diffuse: { value: new Color( 0xeeeeee ) }, - opacity: { value: 1.0 }, - size: { value: 1.0 }, - scale: { value: 1.0 }, - map: { value: null }, - uvTransform: { value: new Matrix3() } - - }, - - sprite: { - - diffuse: { value: new Color( 0xeeeeee ) }, - opacity: { value: 1.0 }, - center: { value: new Vector2( 0.5, 0.5 ) }, - rotation: { value: 0.0 }, - map: { value: null }, - uvTransform: { value: new Matrix3() } - - } - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author mikael emtinger / http://gomo.se/ - */ - - var ShaderLib = { - - basic: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.specularmap, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.fog - ] ), - - vertexShader: ShaderChunk.meshbasic_vert, - fragmentShader: ShaderChunk.meshbasic_frag - - }, - - lambert: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.specularmap, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive: { value: new Color( 0x000000 ) } - } - ] ), - - vertexShader: ShaderChunk.meshlambert_vert, - fragmentShader: ShaderChunk.meshlambert_frag - - }, - - phong: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.specularmap, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.gradientmap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive: { value: new Color( 0x000000 ) }, - specular: { value: new Color( 0x111111 ) }, - shininess: { value: 30 } - } - ] ), - - vertexShader: ShaderChunk.meshphong_vert, - fragmentShader: ShaderChunk.meshphong_frag - - }, - - standard: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.envmap, - UniformsLib.aomap, - UniformsLib.lightmap, - UniformsLib.emissivemap, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.roughnessmap, - UniformsLib.metalnessmap, - UniformsLib.fog, - UniformsLib.lights, - { - emissive: { value: new Color( 0x000000 ) }, - roughness: { value: 0.5 }, - metalness: { value: 0.5 }, - envMapIntensity: { value: 1 } // temporary - } - ] ), - - vertexShader: ShaderChunk.meshphysical_vert, - fragmentShader: ShaderChunk.meshphysical_frag - - }, - - matcap: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - UniformsLib.fog, - { - matcap: { value: null } - } - ] ), - - vertexShader: ShaderChunk.meshmatcap_vert, - fragmentShader: ShaderChunk.meshmatcap_frag - - }, - - points: { - - uniforms: mergeUniforms( [ - UniformsLib.points, - UniformsLib.fog - ] ), - - vertexShader: ShaderChunk.points_vert, - fragmentShader: ShaderChunk.points_frag - - }, - - dashed: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.fog, - { - scale: { value: 1 }, - dashSize: { value: 1 }, - totalSize: { value: 2 } - } - ] ), - - vertexShader: ShaderChunk.linedashed_vert, - fragmentShader: ShaderChunk.linedashed_frag - - }, - - depth: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.displacementmap - ] ), - - vertexShader: ShaderChunk.depth_vert, - fragmentShader: ShaderChunk.depth_frag - - }, - - normal: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.bumpmap, - UniformsLib.normalmap, - UniformsLib.displacementmap, - { - opacity: { value: 1.0 } - } - ] ), - - vertexShader: ShaderChunk.normal_vert, - fragmentShader: ShaderChunk.normal_frag - - }, - - sprite: { - - uniforms: mergeUniforms( [ - UniformsLib.sprite, - UniformsLib.fog - ] ), - - vertexShader: ShaderChunk.sprite_vert, - fragmentShader: ShaderChunk.sprite_frag - - }, - - background: { - - uniforms: { - uvTransform: { value: new Matrix3() }, - t2D: { value: null }, - }, - - vertexShader: ShaderChunk.background_vert, - fragmentShader: ShaderChunk.background_frag - - }, - /* ------------------------------------------------------------------------- - // Cube map shader - ------------------------------------------------------------------------- */ - - cube: { - - uniforms: { - tCube: { value: null }, - tFlip: { value: - 1 }, - opacity: { value: 1.0 } - }, - - vertexShader: ShaderChunk.cube_vert, - fragmentShader: ShaderChunk.cube_frag - - }, - - equirect: { - - uniforms: { - tEquirect: { value: null }, - }, - - vertexShader: ShaderChunk.equirect_vert, - fragmentShader: ShaderChunk.equirect_frag - - }, - - distanceRGBA: { - - uniforms: mergeUniforms( [ - UniformsLib.common, - UniformsLib.displacementmap, - { - referencePosition: { value: new Vector3() }, - nearDistance: { value: 1 }, - farDistance: { value: 1000 } - } - ] ), - - vertexShader: ShaderChunk.distanceRGBA_vert, - fragmentShader: ShaderChunk.distanceRGBA_frag - - }, - - shadow: { - - uniforms: mergeUniforms( [ - UniformsLib.lights, - UniformsLib.fog, - { - color: { value: new Color( 0x00000 ) }, - opacity: { value: 1.0 } - }, - ] ), - - vertexShader: ShaderChunk.shadow_vert, - fragmentShader: ShaderChunk.shadow_frag - - } - - }; - - ShaderLib.physical = { - - uniforms: mergeUniforms( [ - ShaderLib.standard.uniforms, - { - clearCoat: { value: 0 }, - clearCoatRoughness: { value: 0 } - } - ] ), - - vertexShader: ShaderChunk.meshphysical_vert, - fragmentShader: ShaderChunk.meshphysical_frag - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLAnimation() { - - var context = null; - var isAnimating = false; - var animationLoop = null; - - function onAnimationFrame( time, frame ) { - - if ( isAnimating === false ) return; - - animationLoop( time, frame ); - - context.requestAnimationFrame( onAnimationFrame ); - - } - - return { - - start: function () { - - if ( isAnimating === true ) return; - if ( animationLoop === null ) return; - - context.requestAnimationFrame( onAnimationFrame ); - - isAnimating = true; - - }, - - stop: function () { - - isAnimating = false; - - }, - - setAnimationLoop: function ( callback ) { - - animationLoop = callback; - - }, - - setContext: function ( value ) { - - context = value; - - } - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLAttributes( gl ) { - - var buffers = new WeakMap(); - - function createBuffer( attribute, bufferType ) { - - var array = attribute.array; - var usage = attribute.dynamic ? 35048 : 35044; - - var buffer = gl.createBuffer(); - - gl.bindBuffer( bufferType, buffer ); - gl.bufferData( bufferType, array, usage ); - - attribute.onUploadCallback(); - - var type = 5126; - - if ( array instanceof Float32Array ) { - - type = 5126; - - } else if ( array instanceof Float64Array ) { - - console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); - - } else if ( array instanceof Uint16Array ) { - - type = 5123; - - } else if ( array instanceof Int16Array ) { - - type = 5122; - - } else if ( array instanceof Uint32Array ) { - - type = 5125; - - } else if ( array instanceof Int32Array ) { - - type = 5124; - - } else if ( array instanceof Int8Array ) { - - type = 5120; - - } else if ( array instanceof Uint8Array ) { - - type = 5121; - - } - - return { - buffer: buffer, - type: type, - bytesPerElement: array.BYTES_PER_ELEMENT, - version: attribute.version - }; - - } - - function updateBuffer( buffer, attribute, bufferType ) { - - var array = attribute.array; - var updateRange = attribute.updateRange; - - gl.bindBuffer( bufferType, buffer ); - - if ( attribute.dynamic === false ) { - - gl.bufferData( bufferType, array, 35044 ); - - } else if ( updateRange.count === - 1 ) { - - // Not using update ranges - - gl.bufferSubData( bufferType, 0, array ); - - } else if ( updateRange.count === 0 ) { - - console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); - - } else { - - gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, - array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); - - updateRange.count = - 1; // reset range - - } - - } - - // - - function get( attribute ) { - - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; - - return buffers.get( attribute ); - - } - - function remove( attribute ) { - - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; - - var data = buffers.get( attribute ); - - if ( data ) { - - gl.deleteBuffer( data.buffer ); - - buffers.delete( attribute ); - - } - - } - - function update( attribute, bufferType ) { - - if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data; - - var data = buffers.get( attribute ); - - if ( data === undefined ) { - - buffers.set( attribute, createBuffer( attribute, bufferType ) ); - - } else if ( data.version < attribute.version ) { - - updateBuffer( data.buffer, attribute, bufferType ); - - data.version = attribute.version; - - } - - } - - return { - - get: get, - remove: remove, - update: update - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function Face3( a, b, c, normal, color, materialIndex ) { - - this.a = a; - this.b = b; - this.c = c; - - this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); - this.vertexNormals = Array.isArray( normal ) ? normal : []; - - this.color = ( color && color.isColor ) ? color : new Color(); - this.vertexColors = Array.isArray( color ) ? color : []; - - this.materialIndex = materialIndex !== undefined ? materialIndex : 0; - - } - - Object.assign( Face3.prototype, { - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.a = source.a; - this.b = source.b; - this.c = source.c; - - this.normal.copy( source.normal ); - this.color.copy( source.color ); - - this.materialIndex = source.materialIndex; - - for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { - - this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); - - } - - for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { - - this.vertexColors[ i ] = source.vertexColors[ i ].clone(); - - } - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - * @author bhouston / http://clara.io - */ - - function Euler( x, y, z, order ) { - - this._x = x || 0; - this._y = y || 0; - this._z = z || 0; - this._order = order || Euler.DefaultOrder; - - } - - Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; - - Euler.DefaultOrder = 'XYZ'; - - Object.defineProperties( Euler.prototype, { - - x: { - - get: function () { - - return this._x; - - }, - - set: function ( value ) { - - this._x = value; - this.onChangeCallback(); - - } - - }, - - y: { - - get: function () { - - return this._y; - - }, - - set: function ( value ) { - - this._y = value; - this.onChangeCallback(); - - } - - }, - - z: { - - get: function () { - - return this._z; - - }, - - set: function ( value ) { - - this._z = value; - this.onChangeCallback(); - - } - - }, - - order: { - - get: function () { - - return this._order; - - }, - - set: function ( value ) { - - this._order = value; - this.onChangeCallback(); - - } - - } - - } ); - - Object.assign( Euler.prototype, { - - isEuler: true, - - set: function ( x, y, z, order ) { - - this._x = x; - this._y = y; - this._z = z; - this._order = order || this._order; - - this.onChangeCallback(); - - return this; - - }, - - clone: function () { - - return new this.constructor( this._x, this._y, this._z, this._order ); - - }, - - copy: function ( euler ) { - - this._x = euler._x; - this._y = euler._y; - this._z = euler._z; - this._order = euler._order; - - this.onChangeCallback(); - - return this; - - }, - - setFromRotationMatrix: function ( m, order, update ) { - - var clamp = _Math.clamp; - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - var te = m.elements; - var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; - var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; - var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; - - order = order || this._order; - - if ( order === 'XYZ' ) { - - this._y = Math.asin( clamp( m13, - 1, 1 ) ); - - if ( Math.abs( m13 ) < 0.99999 ) { - - this._x = Math.atan2( - m23, m33 ); - this._z = Math.atan2( - m12, m11 ); - - } else { - - this._x = Math.atan2( m32, m22 ); - this._z = 0; - - } - - } else if ( order === 'YXZ' ) { - - this._x = Math.asin( - clamp( m23, - 1, 1 ) ); - - if ( Math.abs( m23 ) < 0.99999 ) { - - this._y = Math.atan2( m13, m33 ); - this._z = Math.atan2( m21, m22 ); - - } else { - - this._y = Math.atan2( - m31, m11 ); - this._z = 0; - - } - - } else if ( order === 'ZXY' ) { - - this._x = Math.asin( clamp( m32, - 1, 1 ) ); - - if ( Math.abs( m32 ) < 0.99999 ) { - - this._y = Math.atan2( - m31, m33 ); - this._z = Math.atan2( - m12, m22 ); - - } else { - - this._y = 0; - this._z = Math.atan2( m21, m11 ); - - } - - } else if ( order === 'ZYX' ) { - - this._y = Math.asin( - clamp( m31, - 1, 1 ) ); - - if ( Math.abs( m31 ) < 0.99999 ) { - - this._x = Math.atan2( m32, m33 ); - this._z = Math.atan2( m21, m11 ); - - } else { - - this._x = 0; - this._z = Math.atan2( - m12, m22 ); - - } - - } else if ( order === 'YZX' ) { - - this._z = Math.asin( clamp( m21, - 1, 1 ) ); - - if ( Math.abs( m21 ) < 0.99999 ) { - - this._x = Math.atan2( - m23, m22 ); - this._y = Math.atan2( - m31, m11 ); - - } else { - - this._x = 0; - this._y = Math.atan2( m13, m33 ); - - } - - } else if ( order === 'XZY' ) { - - this._z = Math.asin( - clamp( m12, - 1, 1 ) ); - - if ( Math.abs( m12 ) < 0.99999 ) { - - this._x = Math.atan2( m32, m22 ); - this._y = Math.atan2( m13, m11 ); - - } else { - - this._x = Math.atan2( - m23, m33 ); - this._y = 0; - - } - - } else { - - console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); - - } - - this._order = order; - - if ( update !== false ) this.onChangeCallback(); - - return this; - - }, - - setFromQuaternion: function () { - - var matrix = new Matrix4(); - - return function setFromQuaternion( q, order, update ) { - - matrix.makeRotationFromQuaternion( q ); - - return this.setFromRotationMatrix( matrix, order, update ); - - }; - - }(), - - setFromVector3: function ( v, order ) { - - return this.set( v.x, v.y, v.z, order || this._order ); - - }, - - reorder: function () { - - // WARNING: this discards revolution information -bhouston - - var q = new Quaternion(); - - return function reorder( newOrder ) { - - q.setFromEuler( this ); - - return this.setFromQuaternion( q, newOrder ); - - }; - - }(), - - equals: function ( euler ) { - - return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); - - }, - - fromArray: function ( array ) { - - this._x = array[ 0 ]; - this._y = array[ 1 ]; - this._z = array[ 2 ]; - if ( array[ 3 ] !== undefined ) this._order = array[ 3 ]; - - this.onChangeCallback(); - - return this; - - }, - - toArray: function ( array, offset ) { - - if ( array === undefined ) array = []; - if ( offset === undefined ) offset = 0; - - array[ offset ] = this._x; - array[ offset + 1 ] = this._y; - array[ offset + 2 ] = this._z; - array[ offset + 3 ] = this._order; - - return array; - - }, - - toVector3: function ( optionalResult ) { - - if ( optionalResult ) { - - return optionalResult.set( this._x, this._y, this._z ); - - } else { - - return new Vector3( this._x, this._y, this._z ); - - } - - }, - - onChange: function ( callback ) { - - this.onChangeCallback = callback; - - return this; - - }, - - onChangeCallback: function () {} - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Layers() { - - this.mask = 1 | 0; - - } - - Object.assign( Layers.prototype, { - - set: function ( channel ) { - - this.mask = 1 << channel | 0; - - }, - - enable: function ( channel ) { - - this.mask |= 1 << channel | 0; - - }, - - toggle: function ( channel ) { - - this.mask ^= 1 << channel | 0; - - }, - - disable: function ( channel ) { - - this.mask &= ~ ( 1 << channel | 0 ); - - }, - - test: function ( layers ) { - - return ( this.mask & layers.mask ) !== 0; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author WestLangley / http://github.com/WestLangley - * @author elephantatwork / www.elephantatwork.ch - */ - - var object3DId = 0; - - function Object3D() { - - Object.defineProperty( this, 'id', { value: object3DId ++ } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'Object3D'; - - this.parent = null; - this.children = []; - - this.up = Object3D.DefaultUp.clone(); - - var position = new Vector3(); - var rotation = new Euler(); - var quaternion = new Quaternion(); - var scale = new Vector3( 1, 1, 1 ); - - function onRotationChange() { - - quaternion.setFromEuler( rotation, false ); - - } - - function onQuaternionChange() { - - rotation.setFromQuaternion( quaternion, undefined, false ); - - } - - rotation.onChange( onRotationChange ); - quaternion.onChange( onQuaternionChange ); - - Object.defineProperties( this, { - position: { - configurable: true, - enumerable: true, - value: position - }, - rotation: { - configurable: true, - enumerable: true, - value: rotation - }, - quaternion: { - configurable: true, - enumerable: true, - value: quaternion - }, - scale: { - configurable: true, - enumerable: true, - value: scale - }, - modelViewMatrix: { - value: new Matrix4() - }, - normalMatrix: { - value: new Matrix3() - } - } ); - - this.matrix = new Matrix4(); - this.matrixWorld = new Matrix4(); - - this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; - this.matrixWorldNeedsUpdate = false; - - this.layers = new Layers(); - this.visible = true; - - this.castShadow = false; - this.receiveShadow = false; - - this.frustumCulled = true; - this.renderOrder = 0; - - this.userData = {}; - - } - - Object3D.DefaultUp = new Vector3( 0, 1, 0 ); - Object3D.DefaultMatrixAutoUpdate = true; - - Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Object3D, - - isObject3D: true, - - onBeforeRender: function () {}, - onAfterRender: function () {}, - - applyMatrix: function ( matrix ) { - - this.matrix.multiplyMatrices( matrix, this.matrix ); - - this.matrix.decompose( this.position, this.quaternion, this.scale ); - - }, - - applyQuaternion: function ( q ) { - - this.quaternion.premultiply( q ); - - return this; - - }, - - setRotationFromAxisAngle: function ( axis, angle ) { - - // assumes axis is normalized - - this.quaternion.setFromAxisAngle( axis, angle ); - - }, - - setRotationFromEuler: function ( euler ) { - - this.quaternion.setFromEuler( euler, true ); - - }, - - setRotationFromMatrix: function ( m ) { - - // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - - this.quaternion.setFromRotationMatrix( m ); - - }, - - setRotationFromQuaternion: function ( q ) { - - // assumes q is normalized - - this.quaternion.copy( q ); - - }, - - rotateOnAxis: function () { - - // rotate object on axis in object space - // axis is assumed to be normalized - - var q1 = new Quaternion(); - - return function rotateOnAxis( axis, angle ) { - - q1.setFromAxisAngle( axis, angle ); - - this.quaternion.multiply( q1 ); - - return this; - - }; - - }(), - - rotateOnWorldAxis: function () { - - // rotate object on axis in world space - // axis is assumed to be normalized - // method assumes no rotated parent - - var q1 = new Quaternion(); - - return function rotateOnWorldAxis( axis, angle ) { - - q1.setFromAxisAngle( axis, angle ); - - this.quaternion.premultiply( q1 ); - - return this; - - }; - - }(), - - rotateX: function () { - - var v1 = new Vector3( 1, 0, 0 ); - - return function rotateX( angle ) { - - return this.rotateOnAxis( v1, angle ); - - }; - - }(), - - rotateY: function () { - - var v1 = new Vector3( 0, 1, 0 ); - - return function rotateY( angle ) { - - return this.rotateOnAxis( v1, angle ); - - }; - - }(), - - rotateZ: function () { - - var v1 = new Vector3( 0, 0, 1 ); - - return function rotateZ( angle ) { - - return this.rotateOnAxis( v1, angle ); - - }; - - }(), - - translateOnAxis: function () { - - // translate object by distance along axis in object space - // axis is assumed to be normalized - - var v1 = new Vector3(); - - return function translateOnAxis( axis, distance ) { - - v1.copy( axis ).applyQuaternion( this.quaternion ); - - this.position.add( v1.multiplyScalar( distance ) ); - - return this; - - }; - - }(), - - translateX: function () { - - var v1 = new Vector3( 1, 0, 0 ); - - return function translateX( distance ) { - - return this.translateOnAxis( v1, distance ); - - }; - - }(), - - translateY: function () { - - var v1 = new Vector3( 0, 1, 0 ); - - return function translateY( distance ) { - - return this.translateOnAxis( v1, distance ); - - }; - - }(), - - translateZ: function () { - - var v1 = new Vector3( 0, 0, 1 ); - - return function translateZ( distance ) { - - return this.translateOnAxis( v1, distance ); - - }; - - }(), - - localToWorld: function ( vector ) { - - return vector.applyMatrix4( this.matrixWorld ); - - }, - - worldToLocal: function () { - - var m1 = new Matrix4(); - - return function worldToLocal( vector ) { - - return vector.applyMatrix4( m1.getInverse( this.matrixWorld ) ); - - }; - - }(), - - lookAt: function () { - - // This method does not support objects having non-uniformly-scaled parent(s) - - var q1 = new Quaternion(); - var m1 = new Matrix4(); - var target = new Vector3(); - var position = new Vector3(); - - return function lookAt( x, y, z ) { - - if ( x.isVector3 ) { - - target.copy( x ); - - } else { - - target.set( x, y, z ); - - } - - var parent = this.parent; - - this.updateWorldMatrix( true, false ); - - position.setFromMatrixPosition( this.matrixWorld ); - - if ( this.isCamera || this.isLight ) { - - m1.lookAt( position, target, this.up ); - - } else { - - m1.lookAt( target, position, this.up ); - - } - - this.quaternion.setFromRotationMatrix( m1 ); - - if ( parent ) { - - m1.extractRotation( parent.matrixWorld ); - q1.setFromRotationMatrix( m1 ); - this.quaternion.premultiply( q1.inverse() ); - - } - - }; - - }(), - - add: function ( object ) { - - if ( arguments.length > 1 ) { - - for ( var i = 0; i < arguments.length; i ++ ) { - - this.add( arguments[ i ] ); - - } - - return this; - - } - - if ( object === this ) { - - console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); - return this; - - } - - if ( ( object && object.isObject3D ) ) { - - if ( object.parent !== null ) { - - object.parent.remove( object ); - - } - - object.parent = this; - object.dispatchEvent( { type: 'added' } ); - - this.children.push( object ); - - } else { - - console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); - - } - - return this; - - }, - - remove: function ( object ) { - - if ( arguments.length > 1 ) { - - for ( var i = 0; i < arguments.length; i ++ ) { - - this.remove( arguments[ i ] ); - - } - - return this; - - } - - var index = this.children.indexOf( object ); - - if ( index !== - 1 ) { - - object.parent = null; - - object.dispatchEvent( { type: 'removed' } ); - - this.children.splice( index, 1 ); - - } - - return this; - - }, - - getObjectById: function ( id ) { - - return this.getObjectByProperty( 'id', id ); - - }, - - getObjectByName: function ( name ) { - - return this.getObjectByProperty( 'name', name ); - - }, - - getObjectByProperty: function ( name, value ) { - - if ( this[ name ] === value ) return this; - - for ( var i = 0, l = this.children.length; i < l; i ++ ) { - - var child = this.children[ i ]; - var object = child.getObjectByProperty( name, value ); - - if ( object !== undefined ) { - - return object; - - } - - } - - return undefined; - - }, - - getWorldPosition: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldPosition() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - return target.setFromMatrixPosition( this.matrixWorld ); - - }, - - getWorldQuaternion: function () { - - var position = new Vector3(); - var scale = new Vector3(); - - return function getWorldQuaternion( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' ); - target = new Quaternion(); - - } - - this.updateMatrixWorld( true ); - - this.matrixWorld.decompose( position, target, scale ); - - return target; - - }; - - }(), - - getWorldScale: function () { - - var position = new Vector3(); - var quaternion = new Quaternion(); - - return function getWorldScale( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldScale() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - this.matrixWorld.decompose( position, quaternion, target ); - - return target; - - }; - - }(), - - getWorldDirection: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Object3D: .getWorldDirection() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - var e = this.matrixWorld.elements; - - return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); - - }, - - raycast: function () {}, - - traverse: function ( callback ) { - - callback( this ); - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].traverse( callback ); - - } - - }, - - traverseVisible: function ( callback ) { - - if ( this.visible === false ) return; - - callback( this ); - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].traverseVisible( callback ); - - } - - }, - - traverseAncestors: function ( callback ) { - - var parent = this.parent; - - if ( parent !== null ) { - - callback( parent ); - - parent.traverseAncestors( callback ); - - } - - }, - - updateMatrix: function () { - - this.matrix.compose( this.position, this.quaternion, this.scale ); - - this.matrixWorldNeedsUpdate = true; - - }, - - updateMatrixWorld: function ( force ) { - - if ( this.matrixAutoUpdate ) this.updateMatrix(); - - if ( this.matrixWorldNeedsUpdate || force ) { - - if ( this.parent === null ) { - - this.matrixWorld.copy( this.matrix ); - - } else { - - this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); - - } - - this.matrixWorldNeedsUpdate = false; - - force = true; - - } - - // update children - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].updateMatrixWorld( force ); - - } - - }, - - updateWorldMatrix: function ( updateParents, updateChildren ) { - - var parent = this.parent; - - if ( updateParents === true && parent !== null ) { - - parent.updateWorldMatrix( true, false ); - - } - - if ( this.matrixAutoUpdate ) this.updateMatrix(); - - if ( this.parent === null ) { - - this.matrixWorld.copy( this.matrix ); - - } else { - - this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); - - } - - // update children - - if ( updateChildren === true ) { - - var children = this.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].updateWorldMatrix( false, true ); - - } - - } - - }, - - toJSON: function ( meta ) { - - // meta is a string when called from JSON.stringify - var isRootObject = ( meta === undefined || typeof meta === 'string' ); - - var output = {}; - - // meta is a hash used to collect geometries, materials. - // not providing it implies that this is the root object - // being serialized. - if ( isRootObject ) { - - // initialize meta obj - meta = { - geometries: {}, - materials: {}, - textures: {}, - images: {}, - shapes: {} - }; - - output.metadata = { - version: 4.5, - type: 'Object', - generator: 'Object3D.toJSON' - }; - - } - - // standard Object3D serialization - - var object = {}; - - object.uuid = this.uuid; - object.type = this.type; - - if ( this.name !== '' ) object.name = this.name; - if ( this.castShadow === true ) object.castShadow = true; - if ( this.receiveShadow === true ) object.receiveShadow = true; - if ( this.visible === false ) object.visible = false; - if ( this.frustumCulled === false ) object.frustumCulled = false; - if ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder; - if ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData; - - object.layers = this.layers.mask; - object.matrix = this.matrix.toArray(); - - if ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false; - - // object specific properties - - if ( this.isMesh && this.drawMode !== TrianglesDrawMode ) object.drawMode = this.drawMode; - - // - - function serialize( library, element ) { - - if ( library[ element.uuid ] === undefined ) { - - library[ element.uuid ] = element.toJSON( meta ); - - } - - return element.uuid; - - } - - if ( this.isMesh || this.isLine || this.isPoints ) { - - object.geometry = serialize( meta.geometries, this.geometry ); - - var parameters = this.geometry.parameters; - - if ( parameters !== undefined && parameters.shapes !== undefined ) { - - var shapes = parameters.shapes; - - if ( Array.isArray( shapes ) ) { - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - - serialize( meta.shapes, shape ); - - } - - } else { - - serialize( meta.shapes, shapes ); - - } - - } - - } - - if ( this.material !== undefined ) { - - if ( Array.isArray( this.material ) ) { - - var uuids = []; - - for ( var i = 0, l = this.material.length; i < l; i ++ ) { - - uuids.push( serialize( meta.materials, this.material[ i ] ) ); - - } - - object.material = uuids; - - } else { - - object.material = serialize( meta.materials, this.material ); - - } - - } - - // - - if ( this.children.length > 0 ) { - - object.children = []; - - for ( var i = 0; i < this.children.length; i ++ ) { - - object.children.push( this.children[ i ].toJSON( meta ).object ); - - } - - } - - if ( isRootObject ) { - - var geometries = extractFromCache( meta.geometries ); - var materials = extractFromCache( meta.materials ); - var textures = extractFromCache( meta.textures ); - var images = extractFromCache( meta.images ); - var shapes = extractFromCache( meta.shapes ); - - if ( geometries.length > 0 ) output.geometries = geometries; - if ( materials.length > 0 ) output.materials = materials; - if ( textures.length > 0 ) output.textures = textures; - if ( images.length > 0 ) output.images = images; - if ( shapes.length > 0 ) output.shapes = shapes; - - } - - output.object = object; - - return output; - - // extract data from the cache hash - // remove metadata on each item - // and return as array - function extractFromCache( cache ) { - - var values = []; - for ( var key in cache ) { - - var data = cache[ key ]; - delete data.metadata; - values.push( data ); - - } - return values; - - } - - }, - - clone: function ( recursive ) { - - return new this.constructor().copy( this, recursive ); - - }, - - copy: function ( source, recursive ) { - - if ( recursive === undefined ) recursive = true; - - this.name = source.name; - - this.up.copy( source.up ); - - this.position.copy( source.position ); - this.quaternion.copy( source.quaternion ); - this.scale.copy( source.scale ); - - this.matrix.copy( source.matrix ); - this.matrixWorld.copy( source.matrixWorld ); - - this.matrixAutoUpdate = source.matrixAutoUpdate; - this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; - - this.layers.mask = source.layers.mask; - this.visible = source.visible; - - this.castShadow = source.castShadow; - this.receiveShadow = source.receiveShadow; - - this.frustumCulled = source.frustumCulled; - this.renderOrder = source.renderOrder; - - this.userData = JSON.parse( JSON.stringify( source.userData ) ); - - if ( recursive === true ) { - - for ( var i = 0; i < source.children.length; i ++ ) { - - var child = source.children[ i ]; - this.add( child.clone() ); - - } - - } - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author kile / http://kile.stravaganza.org/ - * @author alteredq / http://alteredqualia.com/ - * @author mikael emtinger / http://gomo.se/ - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author bhouston / http://clara.io - */ - - var geometryId = 0; // Geometry uses even numbers as Id - - function Geometry() { - - Object.defineProperty( this, 'id', { value: geometryId += 2 } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'Geometry'; - - this.vertices = []; - this.colors = []; - this.faces = []; - this.faceVertexUvs = [[]]; - - this.morphTargets = []; - this.morphNormals = []; - - this.skinWeights = []; - this.skinIndices = []; - - this.lineDistances = []; - - this.boundingBox = null; - this.boundingSphere = null; - - // update flags - - this.elementsNeedUpdate = false; - this.verticesNeedUpdate = false; - this.uvsNeedUpdate = false; - this.normalsNeedUpdate = false; - this.colorsNeedUpdate = false; - this.lineDistancesNeedUpdate = false; - this.groupsNeedUpdate = false; - - } - - Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Geometry, - - isGeometry: true, - - applyMatrix: function ( matrix ) { - - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { - - var vertex = this.vertices[ i ]; - vertex.applyMatrix4( matrix ); - - } - - for ( var i = 0, il = this.faces.length; i < il; i ++ ) { - - var face = this.faces[ i ]; - face.normal.applyMatrix3( normalMatrix ).normalize(); - - for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { - - face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); - - } - - } - - if ( this.boundingBox !== null ) { - - this.computeBoundingBox(); - - } - - if ( this.boundingSphere !== null ) { - - this.computeBoundingSphere(); - - } - - this.verticesNeedUpdate = true; - this.normalsNeedUpdate = true; - - return this; - - }, - - rotateX: function () { - - // rotate geometry around world x-axis - - var m1 = new Matrix4(); - - return function rotateX( angle ) { - - m1.makeRotationX( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateY: function () { - - // rotate geometry around world y-axis - - var m1 = new Matrix4(); - - return function rotateY( angle ) { - - m1.makeRotationY( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateZ: function () { - - // rotate geometry around world z-axis - - var m1 = new Matrix4(); - - return function rotateZ( angle ) { - - m1.makeRotationZ( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - translate: function () { - - // translate geometry - - var m1 = new Matrix4(); - - return function translate( x, y, z ) { - - m1.makeTranslation( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - scale: function () { - - // scale geometry - - var m1 = new Matrix4(); - - return function scale( x, y, z ) { - - m1.makeScale( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - lookAt: function () { - - var obj = new Object3D(); - - return function lookAt( vector ) { - - obj.lookAt( vector ); - - obj.updateMatrix(); - - this.applyMatrix( obj.matrix ); - - }; - - }(), - - fromBufferGeometry: function ( geometry ) { - - var scope = this; - - var indices = geometry.index !== null ? geometry.index.array : undefined; - var attributes = geometry.attributes; - - var positions = attributes.position.array; - var normals = attributes.normal !== undefined ? attributes.normal.array : undefined; - var colors = attributes.color !== undefined ? attributes.color.array : undefined; - var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; - var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; - - if ( uvs2 !== undefined ) this.faceVertexUvs[ 1 ] = []; - - for ( var i = 0, j = 0; i < positions.length; i += 3, j += 2 ) { - - scope.vertices.push( new Vector3().fromArray( positions, i ) ); - - if ( colors !== undefined ) { - - scope.colors.push( new Color().fromArray( colors, i ) ); - - } - - } - - function addFace( a, b, c, materialIndex ) { - - var vertexColors = ( colors === undefined ) ? [] : [ - scope.colors[ a ].clone(), - scope.colors[ b ].clone(), - scope.colors[ c ].clone() ]; - - var vertexNormals = ( normals === undefined ) ? [] : [ - new Vector3().fromArray( normals, a * 3 ), - new Vector3().fromArray( normals, b * 3 ), - new Vector3().fromArray( normals, c * 3 ) - ]; - - var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); - - scope.faces.push( face ); - - if ( uvs !== undefined ) { - - scope.faceVertexUvs[ 0 ].push( [ - new Vector2().fromArray( uvs, a * 2 ), - new Vector2().fromArray( uvs, b * 2 ), - new Vector2().fromArray( uvs, c * 2 ) - ] ); - - } - - if ( uvs2 !== undefined ) { - - scope.faceVertexUvs[ 1 ].push( [ - new Vector2().fromArray( uvs2, a * 2 ), - new Vector2().fromArray( uvs2, b * 2 ), - new Vector2().fromArray( uvs2, c * 2 ) - ] ); - - } - - } - - var groups = geometry.groups; - - if ( groups.length > 0 ) { - - for ( var i = 0; i < groups.length; i ++ ) { - - var group = groups[ i ]; - - var start = group.start; - var count = group.count; - - for ( var j = start, jl = start + count; j < jl; j += 3 ) { - - if ( indices !== undefined ) { - - addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); - - } else { - - addFace( j, j + 1, j + 2, group.materialIndex ); - - } - - } - - } - - } else { - - if ( indices !== undefined ) { - - for ( var i = 0; i < indices.length; i += 3 ) { - - addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); - - } - - } else { - - for ( var i = 0; i < positions.length / 3; i += 3 ) { - - addFace( i, i + 1, i + 2 ); - - } - - } - - } - - this.computeFaceNormals(); - - if ( geometry.boundingBox !== null ) { - - this.boundingBox = geometry.boundingBox.clone(); - - } - - if ( geometry.boundingSphere !== null ) { - - this.boundingSphere = geometry.boundingSphere.clone(); - - } - - return this; - - }, - - center: function () { - - var offset = new Vector3(); - - return function center() { - - this.computeBoundingBox(); - - this.boundingBox.getCenter( offset ).negate(); - - this.translate( offset.x, offset.y, offset.z ); - - return this; - - }; - - }(), - - normalize: function () { - - this.computeBoundingSphere(); - - var center = this.boundingSphere.center; - var radius = this.boundingSphere.radius; - - var s = radius === 0 ? 1 : 1.0 / radius; - - var matrix = new Matrix4(); - matrix.set( - s, 0, 0, - s * center.x, - 0, s, 0, - s * center.y, - 0, 0, s, - s * center.z, - 0, 0, 0, 1 - ); - - this.applyMatrix( matrix ); - - return this; - - }, - - computeFaceNormals: function () { - - var cb = new Vector3(), ab = new Vector3(); - - for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { - - var face = this.faces[ f ]; - - var vA = this.vertices[ face.a ]; - var vB = this.vertices[ face.b ]; - var vC = this.vertices[ face.c ]; - - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ); - - cb.normalize(); - - face.normal.copy( cb ); - - } - - }, - - computeVertexNormals: function ( areaWeighted ) { - - if ( areaWeighted === undefined ) areaWeighted = true; - - var v, vl, f, fl, face, vertices; - - vertices = new Array( this.vertices.length ); - - for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { - - vertices[ v ] = new Vector3(); - - } - - if ( areaWeighted ) { - - // vertex normals weighted by triangle areas - // http://www.iquilezles.org/www/articles/normals/normals.htm - - var vA, vB, vC; - var cb = new Vector3(), ab = new Vector3(); - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - vA = this.vertices[ face.a ]; - vB = this.vertices[ face.b ]; - vC = this.vertices[ face.c ]; - - cb.subVectors( vC, vB ); - ab.subVectors( vA, vB ); - cb.cross( ab ); - - vertices[ face.a ].add( cb ); - vertices[ face.b ].add( cb ); - vertices[ face.c ].add( cb ); - - } - - } else { - - this.computeFaceNormals(); - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - vertices[ face.a ].add( face.normal ); - vertices[ face.b ].add( face.normal ); - vertices[ face.c ].add( face.normal ); - - } - - } - - for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { - - vertices[ v ].normalize(); - - } - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - var vertexNormals = face.vertexNormals; - - if ( vertexNormals.length === 3 ) { - - vertexNormals[ 0 ].copy( vertices[ face.a ] ); - vertexNormals[ 1 ].copy( vertices[ face.b ] ); - vertexNormals[ 2 ].copy( vertices[ face.c ] ); - - } else { - - vertexNormals[ 0 ] = vertices[ face.a ].clone(); - vertexNormals[ 1 ] = vertices[ face.b ].clone(); - vertexNormals[ 2 ] = vertices[ face.c ].clone(); - - } - - } - - if ( this.faces.length > 0 ) { - - this.normalsNeedUpdate = true; - - } - - }, - - computeFlatVertexNormals: function () { - - var f, fl, face; - - this.computeFaceNormals(); - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - var vertexNormals = face.vertexNormals; - - if ( vertexNormals.length === 3 ) { - - vertexNormals[ 0 ].copy( face.normal ); - vertexNormals[ 1 ].copy( face.normal ); - vertexNormals[ 2 ].copy( face.normal ); - - } else { - - vertexNormals[ 0 ] = face.normal.clone(); - vertexNormals[ 1 ] = face.normal.clone(); - vertexNormals[ 2 ] = face.normal.clone(); - - } - - } - - if ( this.faces.length > 0 ) { - - this.normalsNeedUpdate = true; - - } - - }, - - computeMorphNormals: function () { - - var i, il, f, fl, face; - - // save original normals - // - create temp variables on first access - // otherwise just copy (for faster repeated calls) - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - if ( ! face.__originalFaceNormal ) { - - face.__originalFaceNormal = face.normal.clone(); - - } else { - - face.__originalFaceNormal.copy( face.normal ); - - } - - if ( ! face.__originalVertexNormals ) face.__originalVertexNormals = []; - - for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { - - if ( ! face.__originalVertexNormals[ i ] ) { - - face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); - - } else { - - face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); - - } - - } - - } - - // use temp geometry to compute face and vertex normals for each morph - - var tmpGeo = new Geometry(); - tmpGeo.faces = this.faces; - - for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { - - // create on first access - - if ( ! this.morphNormals[ i ] ) { - - this.morphNormals[ i ] = {}; - this.morphNormals[ i ].faceNormals = []; - this.morphNormals[ i ].vertexNormals = []; - - var dstNormalsFace = this.morphNormals[ i ].faceNormals; - var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; - - var faceNormal, vertexNormals; - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - faceNormal = new Vector3(); - vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; - - dstNormalsFace.push( faceNormal ); - dstNormalsVertex.push( vertexNormals ); - - } - - } - - var morphNormals = this.morphNormals[ i ]; - - // set vertices to morph target - - tmpGeo.vertices = this.morphTargets[ i ].vertices; - - // compute morph normals - - tmpGeo.computeFaceNormals(); - tmpGeo.computeVertexNormals(); - - // store morph normals - - var faceNormal, vertexNormals; - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - faceNormal = morphNormals.faceNormals[ f ]; - vertexNormals = morphNormals.vertexNormals[ f ]; - - faceNormal.copy( face.normal ); - - vertexNormals.a.copy( face.vertexNormals[ 0 ] ); - vertexNormals.b.copy( face.vertexNormals[ 1 ] ); - vertexNormals.c.copy( face.vertexNormals[ 2 ] ); - - } - - } - - // restore original normals - - for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { - - face = this.faces[ f ]; - - face.normal = face.__originalFaceNormal; - face.vertexNormals = face.__originalVertexNormals; - - } - - }, - - computeBoundingBox: function () { - - if ( this.boundingBox === null ) { - - this.boundingBox = new Box3(); - - } - - this.boundingBox.setFromPoints( this.vertices ); - - }, - - computeBoundingSphere: function () { - - if ( this.boundingSphere === null ) { - - this.boundingSphere = new Sphere(); - - } - - this.boundingSphere.setFromPoints( this.vertices ); - - }, - - merge: function ( geometry, matrix, materialIndexOffset ) { - - if ( ! ( geometry && geometry.isGeometry ) ) { - - console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); - return; - - } - - var normalMatrix, - vertexOffset = this.vertices.length, - vertices1 = this.vertices, - vertices2 = geometry.vertices, - faces1 = this.faces, - faces2 = geometry.faces, - uvs1 = this.faceVertexUvs[ 0 ], - uvs2 = geometry.faceVertexUvs[ 0 ], - colors1 = this.colors, - colors2 = geometry.colors; - - if ( materialIndexOffset === undefined ) materialIndexOffset = 0; - - if ( matrix !== undefined ) { - - normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - } - - // vertices - - for ( var i = 0, il = vertices2.length; i < il; i ++ ) { - - var vertex = vertices2[ i ]; - - var vertexCopy = vertex.clone(); - - if ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix ); - - vertices1.push( vertexCopy ); - - } - - // colors - - for ( var i = 0, il = colors2.length; i < il; i ++ ) { - - colors1.push( colors2[ i ].clone() ); - - } - - // faces - - for ( i = 0, il = faces2.length; i < il; i ++ ) { - - var face = faces2[ i ], faceCopy, normal, color, - faceVertexNormals = face.vertexNormals, - faceVertexColors = face.vertexColors; - - faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); - faceCopy.normal.copy( face.normal ); - - if ( normalMatrix !== undefined ) { - - faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); - - } - - for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { - - normal = faceVertexNormals[ j ].clone(); - - if ( normalMatrix !== undefined ) { - - normal.applyMatrix3( normalMatrix ).normalize(); - - } - - faceCopy.vertexNormals.push( normal ); - - } - - faceCopy.color.copy( face.color ); - - for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { - - color = faceVertexColors[ j ]; - faceCopy.vertexColors.push( color.clone() ); - - } - - faceCopy.materialIndex = face.materialIndex + materialIndexOffset; - - faces1.push( faceCopy ); - - } - - // uvs - - for ( i = 0, il = uvs2.length; i < il; i ++ ) { - - var uv = uvs2[ i ], uvCopy = []; - - if ( uv === undefined ) { - - continue; - - } - - for ( var j = 0, jl = uv.length; j < jl; j ++ ) { - - uvCopy.push( uv[ j ].clone() ); - - } - - uvs1.push( uvCopy ); - - } - - }, - - mergeMesh: function ( mesh ) { - - if ( ! ( mesh && mesh.isMesh ) ) { - - console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); - return; - - } - - if ( mesh.matrixAutoUpdate ) mesh.updateMatrix(); - - this.merge( mesh.geometry, mesh.matrix ); - - }, - - /* - * Checks for duplicate vertices with hashmap. - * Duplicated vertices are removed - * and faces' vertices are updated. - */ - - mergeVertices: function () { - - var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique) - var unique = [], changes = []; - - var v, key; - var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 - var precision = Math.pow( 10, precisionPoints ); - var i, il, face; - var indices, j, jl; - - for ( i = 0, il = this.vertices.length; i < il; i ++ ) { - - v = this.vertices[ i ]; - key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); - - if ( verticesMap[ key ] === undefined ) { - - verticesMap[ key ] = i; - unique.push( this.vertices[ i ] ); - changes[ i ] = unique.length - 1; - - } else { - - //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); - changes[ i ] = changes[ verticesMap[ key ] ]; - - } - - } - - - // if faces are completely degenerate after merging vertices, we - // have to remove them from the geometry. - var faceIndicesToRemove = []; - - for ( i = 0, il = this.faces.length; i < il; i ++ ) { - - face = this.faces[ i ]; - - face.a = changes[ face.a ]; - face.b = changes[ face.b ]; - face.c = changes[ face.c ]; - - indices = [ face.a, face.b, face.c ]; - - // if any duplicate vertices are found in a Face3 - // we have to remove the face as nothing can be saved - for ( var n = 0; n < 3; n ++ ) { - - if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { - - faceIndicesToRemove.push( i ); - break; - - } - - } - - } - - for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { - - var idx = faceIndicesToRemove[ i ]; - - this.faces.splice( idx, 1 ); - - for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { - - this.faceVertexUvs[ j ].splice( idx, 1 ); - - } - - } - - // Use unique set of vertices - - var diff = this.vertices.length - unique.length; - this.vertices = unique; - return diff; - - }, - - setFromPoints: function ( points ) { - - this.vertices = []; - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - var point = points[ i ]; - this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); - - } - - return this; - - }, - - sortFacesByMaterialIndex: function () { - - var faces = this.faces; - var length = faces.length; - - // tag faces - - for ( var i = 0; i < length; i ++ ) { - - faces[ i ]._id = i; - - } - - // sort faces - - function materialIndexSort( a, b ) { - - return a.materialIndex - b.materialIndex; - - } - - faces.sort( materialIndexSort ); - - // sort uvs - - var uvs1 = this.faceVertexUvs[ 0 ]; - var uvs2 = this.faceVertexUvs[ 1 ]; - - var newUvs1, newUvs2; - - if ( uvs1 && uvs1.length === length ) newUvs1 = []; - if ( uvs2 && uvs2.length === length ) newUvs2 = []; - - for ( var i = 0; i < length; i ++ ) { - - var id = faces[ i ]._id; - - if ( newUvs1 ) newUvs1.push( uvs1[ id ] ); - if ( newUvs2 ) newUvs2.push( uvs2[ id ] ); - - } - - if ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1; - if ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2; - - }, - - toJSON: function () { - - var data = { - metadata: { - version: 4.5, - type: 'Geometry', - generator: 'Geometry.toJSON' - } - }; - - // standard Geometry serialization - - data.uuid = this.uuid; - data.type = this.type; - if ( this.name !== '' ) data.name = this.name; - - if ( this.parameters !== undefined ) { - - var parameters = this.parameters; - - for ( var key in parameters ) { - - if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; - - } - - return data; - - } - - var vertices = []; - - for ( var i = 0; i < this.vertices.length; i ++ ) { - - var vertex = this.vertices[ i ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - var faces = []; - var normals = []; - var normalsHash = {}; - var colors = []; - var colorsHash = {}; - var uvs = []; - var uvsHash = {}; - - for ( var i = 0; i < this.faces.length; i ++ ) { - - var face = this.faces[ i ]; - - var hasMaterial = true; - var hasFaceUv = false; // deprecated - var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; - var hasFaceNormal = face.normal.length() > 0; - var hasFaceVertexNormal = face.vertexNormals.length > 0; - var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; - var hasFaceVertexColor = face.vertexColors.length > 0; - - var faceType = 0; - - faceType = setBit( faceType, 0, 0 ); // isQuad - faceType = setBit( faceType, 1, hasMaterial ); - faceType = setBit( faceType, 2, hasFaceUv ); - faceType = setBit( faceType, 3, hasFaceVertexUv ); - faceType = setBit( faceType, 4, hasFaceNormal ); - faceType = setBit( faceType, 5, hasFaceVertexNormal ); - faceType = setBit( faceType, 6, hasFaceColor ); - faceType = setBit( faceType, 7, hasFaceVertexColor ); - - faces.push( faceType ); - faces.push( face.a, face.b, face.c ); - faces.push( face.materialIndex ); - - if ( hasFaceVertexUv ) { - - var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; - - faces.push( - getUvIndex( faceVertexUvs[ 0 ] ), - getUvIndex( faceVertexUvs[ 1 ] ), - getUvIndex( faceVertexUvs[ 2 ] ) - ); - - } - - if ( hasFaceNormal ) { - - faces.push( getNormalIndex( face.normal ) ); - - } - - if ( hasFaceVertexNormal ) { - - var vertexNormals = face.vertexNormals; - - faces.push( - getNormalIndex( vertexNormals[ 0 ] ), - getNormalIndex( vertexNormals[ 1 ] ), - getNormalIndex( vertexNormals[ 2 ] ) - ); - - } - - if ( hasFaceColor ) { - - faces.push( getColorIndex( face.color ) ); - - } - - if ( hasFaceVertexColor ) { - - var vertexColors = face.vertexColors; - - faces.push( - getColorIndex( vertexColors[ 0 ] ), - getColorIndex( vertexColors[ 1 ] ), - getColorIndex( vertexColors[ 2 ] ) - ); - - } - - } - - function setBit( value, position, enabled ) { - - return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); - - } - - function getNormalIndex( normal ) { - - var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); - - if ( normalsHash[ hash ] !== undefined ) { - - return normalsHash[ hash ]; - - } - - normalsHash[ hash ] = normals.length / 3; - normals.push( normal.x, normal.y, normal.z ); - - return normalsHash[ hash ]; - - } - - function getColorIndex( color ) { - - var hash = color.r.toString() + color.g.toString() + color.b.toString(); - - if ( colorsHash[ hash ] !== undefined ) { - - return colorsHash[ hash ]; - - } - - colorsHash[ hash ] = colors.length; - colors.push( color.getHex() ); - - return colorsHash[ hash ]; - - } - - function getUvIndex( uv ) { - - var hash = uv.x.toString() + uv.y.toString(); - - if ( uvsHash[ hash ] !== undefined ) { - - return uvsHash[ hash ]; - - } - - uvsHash[ hash ] = uvs.length / 2; - uvs.push( uv.x, uv.y ); - - return uvsHash[ hash ]; - - } - - data.data = {}; - - data.data.vertices = vertices; - data.data.normals = normals; - if ( colors.length > 0 ) data.data.colors = colors; - if ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility - data.data.faces = faces; - - return data; - - }, - - clone: function () { - - /* - // Handle primitives - - var parameters = this.parameters; - - if ( parameters !== undefined ) { - - var values = []; - - for ( var key in parameters ) { - - values.push( parameters[ key ] ); - - } - - var geometry = Object.create( this.constructor.prototype ); - this.constructor.apply( geometry, values ); - return geometry; - - } - - return new this.constructor().copy( this ); - */ - - return new Geometry().copy( this ); - - }, - - copy: function ( source ) { - - var i, il, j, jl, k, kl; - - // reset - - this.vertices = []; - this.colors = []; - this.faces = []; - this.faceVertexUvs = [[]]; - this.morphTargets = []; - this.morphNormals = []; - this.skinWeights = []; - this.skinIndices = []; - this.lineDistances = []; - this.boundingBox = null; - this.boundingSphere = null; - - // name - - this.name = source.name; - - // vertices - - var vertices = source.vertices; - - for ( i = 0, il = vertices.length; i < il; i ++ ) { - - this.vertices.push( vertices[ i ].clone() ); - - } - - // colors - - var colors = source.colors; - - for ( i = 0, il = colors.length; i < il; i ++ ) { - - this.colors.push( colors[ i ].clone() ); - - } - - // faces - - var faces = source.faces; - - for ( i = 0, il = faces.length; i < il; i ++ ) { - - this.faces.push( faces[ i ].clone() ); - - } - - // face vertex uvs - - for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { - - var faceVertexUvs = source.faceVertexUvs[ i ]; - - if ( this.faceVertexUvs[ i ] === undefined ) { - - this.faceVertexUvs[ i ] = []; - - } - - for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { - - var uvs = faceVertexUvs[ j ], uvsCopy = []; - - for ( k = 0, kl = uvs.length; k < kl; k ++ ) { - - var uv = uvs[ k ]; - - uvsCopy.push( uv.clone() ); - - } - - this.faceVertexUvs[ i ].push( uvsCopy ); - - } - - } - - // morph targets - - var morphTargets = source.morphTargets; - - for ( i = 0, il = morphTargets.length; i < il; i ++ ) { - - var morphTarget = {}; - morphTarget.name = morphTargets[ i ].name; - - // vertices - - if ( morphTargets[ i ].vertices !== undefined ) { - - morphTarget.vertices = []; - - for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { - - morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); - - } - - } - - // normals - - if ( morphTargets[ i ].normals !== undefined ) { - - morphTarget.normals = []; - - for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { - - morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); - - } - - } - - this.morphTargets.push( morphTarget ); - - } - - // morph normals - - var morphNormals = source.morphNormals; - - for ( i = 0, il = morphNormals.length; i < il; i ++ ) { - - var morphNormal = {}; - - // vertex normals - - if ( morphNormals[ i ].vertexNormals !== undefined ) { - - morphNormal.vertexNormals = []; - - for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { - - var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; - var destVertexNormal = {}; - - destVertexNormal.a = srcVertexNormal.a.clone(); - destVertexNormal.b = srcVertexNormal.b.clone(); - destVertexNormal.c = srcVertexNormal.c.clone(); - - morphNormal.vertexNormals.push( destVertexNormal ); - - } - - } - - // face normals - - if ( morphNormals[ i ].faceNormals !== undefined ) { - - morphNormal.faceNormals = []; - - for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { - - morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); - - } - - } - - this.morphNormals.push( morphNormal ); - - } - - // skin weights - - var skinWeights = source.skinWeights; - - for ( i = 0, il = skinWeights.length; i < il; i ++ ) { - - this.skinWeights.push( skinWeights[ i ].clone() ); - - } - - // skin indices - - var skinIndices = source.skinIndices; - - for ( i = 0, il = skinIndices.length; i < il; i ++ ) { - - this.skinIndices.push( skinIndices[ i ].clone() ); - - } - - // line distances - - var lineDistances = source.lineDistances; - - for ( i = 0, il = lineDistances.length; i < il; i ++ ) { - - this.lineDistances.push( lineDistances[ i ] ); - - } - - // bounding box - - var boundingBox = source.boundingBox; - - if ( boundingBox !== null ) { - - this.boundingBox = boundingBox.clone(); - - } - - // bounding sphere - - var boundingSphere = source.boundingSphere; - - if ( boundingSphere !== null ) { - - this.boundingSphere = boundingSphere.clone(); - - } - - // update flags - - this.elementsNeedUpdate = source.elementsNeedUpdate; - this.verticesNeedUpdate = source.verticesNeedUpdate; - this.uvsNeedUpdate = source.uvsNeedUpdate; - this.normalsNeedUpdate = source.normalsNeedUpdate; - this.colorsNeedUpdate = source.colorsNeedUpdate; - this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate; - this.groupsNeedUpdate = source.groupsNeedUpdate; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function BufferAttribute( array, itemSize, normalized ) { - - if ( Array.isArray( array ) ) { - - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); - - } - - this.name = ''; - - this.array = array; - this.itemSize = itemSize; - this.count = array !== undefined ? array.length / itemSize : 0; - this.normalized = normalized === true; - - this.dynamic = false; - this.updateRange = { offset: 0, count: - 1 }; - - this.version = 0; - - } - - Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { - - set: function ( value ) { - - if ( value === true ) this.version ++; - - } - - } ); - - Object.assign( BufferAttribute.prototype, { - - isBufferAttribute: true, - - onUploadCallback: function () {}, - - setArray: function ( array ) { - - if ( Array.isArray( array ) ) { - - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); - - } - - this.count = array !== undefined ? array.length / this.itemSize : 0; - this.array = array; - - return this; - - }, - - setDynamic: function ( value ) { - - this.dynamic = value; - - return this; - - }, - - copy: function ( source ) { - - this.name = source.name; - this.array = new source.array.constructor( source.array ); - this.itemSize = source.itemSize; - this.count = source.count; - this.normalized = source.normalized; - - this.dynamic = source.dynamic; - - return this; - - }, - - copyAt: function ( index1, attribute, index2 ) { - - index1 *= this.itemSize; - index2 *= attribute.itemSize; - - for ( var i = 0, l = this.itemSize; i < l; i ++ ) { - - this.array[ index1 + i ] = attribute.array[ index2 + i ]; - - } - - return this; - - }, - - copyArray: function ( array ) { - - this.array.set( array ); - - return this; - - }, - - copyColorsArray: function ( colors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = colors.length; i < l; i ++ ) { - - var color = colors[ i ]; - - if ( color === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); - color = new Color(); - - } - - array[ offset ++ ] = color.r; - array[ offset ++ ] = color.g; - array[ offset ++ ] = color.b; - - } - - return this; - - }, - - copyVector2sArray: function ( vectors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = vectors.length; i < l; i ++ ) { - - var vector = vectors[ i ]; - - if ( vector === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); - vector = new Vector2(); - - } - - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - - } - - return this; - - }, - - copyVector3sArray: function ( vectors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = vectors.length; i < l; i ++ ) { - - var vector = vectors[ i ]; - - if ( vector === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); - vector = new Vector3(); - - } - - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - array[ offset ++ ] = vector.z; - - } - - return this; - - }, - - copyVector4sArray: function ( vectors ) { - - var array = this.array, offset = 0; - - for ( var i = 0, l = vectors.length; i < l; i ++ ) { - - var vector = vectors[ i ]; - - if ( vector === undefined ) { - - console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); - vector = new Vector4(); - - } - - array[ offset ++ ] = vector.x; - array[ offset ++ ] = vector.y; - array[ offset ++ ] = vector.z; - array[ offset ++ ] = vector.w; - - } - - return this; - - }, - - set: function ( value, offset ) { - - if ( offset === undefined ) offset = 0; - - this.array.set( value, offset ); - - return this; - - }, - - getX: function ( index ) { - - return this.array[ index * this.itemSize ]; - - }, - - setX: function ( index, x ) { - - this.array[ index * this.itemSize ] = x; - - return this; - - }, - - getY: function ( index ) { - - return this.array[ index * this.itemSize + 1 ]; - - }, - - setY: function ( index, y ) { - - this.array[ index * this.itemSize + 1 ] = y; - - return this; - - }, - - getZ: function ( index ) { - - return this.array[ index * this.itemSize + 2 ]; - - }, - - setZ: function ( index, z ) { - - this.array[ index * this.itemSize + 2 ] = z; - - return this; - - }, - - getW: function ( index ) { - - return this.array[ index * this.itemSize + 3 ]; - - }, - - setW: function ( index, w ) { - - this.array[ index * this.itemSize + 3 ] = w; - - return this; - - }, - - setXY: function ( index, x, y ) { - - index *= this.itemSize; - - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - - return this; - - }, - - setXYZ: function ( index, x, y, z ) { - - index *= this.itemSize; - - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - this.array[ index + 2 ] = z; - - return this; - - }, - - setXYZW: function ( index, x, y, z, w ) { - - index *= this.itemSize; - - this.array[ index + 0 ] = x; - this.array[ index + 1 ] = y; - this.array[ index + 2 ] = z; - this.array[ index + 3 ] = w; - - return this; - - }, - - onUpload: function ( callback ) { - - this.onUploadCallback = callback; - - return this; - - }, - - clone: function () { - - return new this.constructor( this.array, this.itemSize ).copy( this ); - - } - - } ); - - // - - function Int8BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); - - } - - Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; - - - function Uint8BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); - - } - - Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; - - - function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); - - } - - Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; - - - function Int16BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); - - } - - Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; - - - function Uint16BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); - - } - - Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; - - - function Int32BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); - - } - - Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; - - - function Uint32BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); - - } - - Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; - - - function Float32BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); - - } - - Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; - - - function Float64BufferAttribute( array, itemSize, normalized ) { - - BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); - - } - - Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); - Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function DirectGeometry() { - - this.vertices = []; - this.normals = []; - this.colors = []; - this.uvs = []; - this.uvs2 = []; - - this.groups = []; - - this.morphTargets = {}; - - this.skinWeights = []; - this.skinIndices = []; - - // this.lineDistances = []; - - this.boundingBox = null; - this.boundingSphere = null; - - // update flags - - this.verticesNeedUpdate = false; - this.normalsNeedUpdate = false; - this.colorsNeedUpdate = false; - this.uvsNeedUpdate = false; - this.groupsNeedUpdate = false; - - } - - Object.assign( DirectGeometry.prototype, { - - computeGroups: function ( geometry ) { - - var group; - var groups = []; - var materialIndex = undefined; - - var faces = geometry.faces; - - for ( var i = 0; i < faces.length; i ++ ) { - - var face = faces[ i ]; - - // materials - - if ( face.materialIndex !== materialIndex ) { - - materialIndex = face.materialIndex; - - if ( group !== undefined ) { - - group.count = ( i * 3 ) - group.start; - groups.push( group ); - - } - - group = { - start: i * 3, - materialIndex: materialIndex - }; - - } - - } - - if ( group !== undefined ) { - - group.count = ( i * 3 ) - group.start; - groups.push( group ); - - } - - this.groups = groups; - - }, - - fromGeometry: function ( geometry ) { - - var faces = geometry.faces; - var vertices = geometry.vertices; - var faceVertexUvs = geometry.faceVertexUvs; - - var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; - var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; - - // morphs - - var morphTargets = geometry.morphTargets; - var morphTargetsLength = morphTargets.length; - - var morphTargetsPosition; - - if ( morphTargetsLength > 0 ) { - - morphTargetsPosition = []; - - for ( var i = 0; i < morphTargetsLength; i ++ ) { - - morphTargetsPosition[ i ] = { - name: morphTargets[ i ].name, - data: [] - }; - - } - - this.morphTargets.position = morphTargetsPosition; - - } - - var morphNormals = geometry.morphNormals; - var morphNormalsLength = morphNormals.length; - - var morphTargetsNormal; - - if ( morphNormalsLength > 0 ) { - - morphTargetsNormal = []; - - for ( var i = 0; i < morphNormalsLength; i ++ ) { - - morphTargetsNormal[ i ] = { - name: morphNormals[ i ].name, - data: [] - }; - - } - - this.morphTargets.normal = morphTargetsNormal; - - } - - // skins - - var skinIndices = geometry.skinIndices; - var skinWeights = geometry.skinWeights; - - var hasSkinIndices = skinIndices.length === vertices.length; - var hasSkinWeights = skinWeights.length === vertices.length; - - // - - if ( vertices.length > 0 && faces.length === 0 ) { - - console.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' ); - - } - - for ( var i = 0; i < faces.length; i ++ ) { - - var face = faces[ i ]; - - this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); - - var vertexNormals = face.vertexNormals; - - if ( vertexNormals.length === 3 ) { - - this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); - - } else { - - var normal = face.normal; - - this.normals.push( normal, normal, normal ); - - } - - var vertexColors = face.vertexColors; - - if ( vertexColors.length === 3 ) { - - this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); - - } else { - - var color = face.color; - - this.colors.push( color, color, color ); - - } - - if ( hasFaceVertexUv === true ) { - - var vertexUvs = faceVertexUvs[ 0 ][ i ]; - - if ( vertexUvs !== undefined ) { - - this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); - - } else { - - console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); - - this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); - - } - - } - - if ( hasFaceVertexUv2 === true ) { - - var vertexUvs = faceVertexUvs[ 1 ][ i ]; - - if ( vertexUvs !== undefined ) { - - this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); - - } else { - - console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); - - this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); - - } - - } - - // morphs - - for ( var j = 0; j < morphTargetsLength; j ++ ) { - - var morphTarget = morphTargets[ j ].vertices; - - morphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); - - } - - for ( var j = 0; j < morphNormalsLength; j ++ ) { - - var morphNormal = morphNormals[ j ].vertexNormals[ i ]; - - morphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c ); - - } - - // skins - - if ( hasSkinIndices ) { - - this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); - - } - - if ( hasSkinWeights ) { - - this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); - - } - - } - - this.computeGroups( geometry ); - - this.verticesNeedUpdate = geometry.verticesNeedUpdate; - this.normalsNeedUpdate = geometry.normalsNeedUpdate; - this.colorsNeedUpdate = geometry.colorsNeedUpdate; - this.uvsNeedUpdate = geometry.uvsNeedUpdate; - this.groupsNeedUpdate = geometry.groupsNeedUpdate; - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function arrayMax( array ) { - - if ( array.length === 0 ) return - Infinity; - - var max = array[ 0 ]; - - for ( var i = 1, l = array.length; i < l; ++ i ) { - - if ( array[ i ] > max ) max = array[ i ]; - - } - - return max; - - } - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - var bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id - - function BufferGeometry() { - - Object.defineProperty( this, 'id', { value: bufferGeometryId += 2 } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'BufferGeometry'; - - this.index = null; - this.attributes = {}; - - this.morphAttributes = {}; - - this.groups = []; - - this.boundingBox = null; - this.boundingSphere = null; - - this.drawRange = { start: 0, count: Infinity }; - - this.userData = {}; - - } - - BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: BufferGeometry, - - isBufferGeometry: true, - - getIndex: function () { - - return this.index; - - }, - - setIndex: function ( index ) { - - if ( Array.isArray( index ) ) { - - this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); - - } else { - - this.index = index; - - } - - }, - - addAttribute: function ( name, attribute ) { - - if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { - - console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); - - return this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); - - } - - if ( name === 'index' ) { - - console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); - this.setIndex( attribute ); - - return this; - - } - - this.attributes[ name ] = attribute; - - return this; - - }, - - getAttribute: function ( name ) { - - return this.attributes[ name ]; - - }, - - removeAttribute: function ( name ) { - - delete this.attributes[ name ]; - - return this; - - }, - - addGroup: function ( start, count, materialIndex ) { - - this.groups.push( { - - start: start, - count: count, - materialIndex: materialIndex !== undefined ? materialIndex : 0 - - } ); - - }, - - clearGroups: function () { - - this.groups = []; - - }, - - setDrawRange: function ( start, count ) { - - this.drawRange.start = start; - this.drawRange.count = count; - - }, - - applyMatrix: function ( matrix ) { - - var position = this.attributes.position; - - if ( position !== undefined ) { - - matrix.applyToBufferAttribute( position ); - position.needsUpdate = true; - - } - - var normal = this.attributes.normal; - - if ( normal !== undefined ) { - - var normalMatrix = new Matrix3().getNormalMatrix( matrix ); - - normalMatrix.applyToBufferAttribute( normal ); - normal.needsUpdate = true; - - } - - if ( this.boundingBox !== null ) { - - this.computeBoundingBox(); - - } - - if ( this.boundingSphere !== null ) { - - this.computeBoundingSphere(); - - } - - return this; - - }, - - rotateX: function () { - - // rotate geometry around world x-axis - - var m1 = new Matrix4(); - - return function rotateX( angle ) { - - m1.makeRotationX( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateY: function () { - - // rotate geometry around world y-axis - - var m1 = new Matrix4(); - - return function rotateY( angle ) { - - m1.makeRotationY( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - rotateZ: function () { - - // rotate geometry around world z-axis - - var m1 = new Matrix4(); - - return function rotateZ( angle ) { - - m1.makeRotationZ( angle ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - translate: function () { - - // translate geometry - - var m1 = new Matrix4(); - - return function translate( x, y, z ) { - - m1.makeTranslation( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - scale: function () { - - // scale geometry - - var m1 = new Matrix4(); - - return function scale( x, y, z ) { - - m1.makeScale( x, y, z ); - - this.applyMatrix( m1 ); - - return this; - - }; - - }(), - - lookAt: function () { - - var obj = new Object3D(); - - return function lookAt( vector ) { - - obj.lookAt( vector ); - - obj.updateMatrix(); - - this.applyMatrix( obj.matrix ); - - }; - - }(), - - center: function () { - - var offset = new Vector3(); - - return function center() { - - this.computeBoundingBox(); - - this.boundingBox.getCenter( offset ).negate(); - - this.translate( offset.x, offset.y, offset.z ); - - return this; - - }; - - }(), - - setFromObject: function ( object ) { - - // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); - - var geometry = object.geometry; - - if ( object.isPoints || object.isLine ) { - - var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); - var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); - - this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); - this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); - - if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { - - var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); - - this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); - - } - - if ( geometry.boundingSphere !== null ) { - - this.boundingSphere = geometry.boundingSphere.clone(); - - } - - if ( geometry.boundingBox !== null ) { - - this.boundingBox = geometry.boundingBox.clone(); - - } - - } else if ( object.isMesh ) { - - if ( geometry && geometry.isGeometry ) { - - this.fromGeometry( geometry ); - - } - - } - - return this; - - }, - - setFromPoints: function ( points ) { - - var position = []; - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - var point = points[ i ]; - position.push( point.x, point.y, point.z || 0 ); - - } - - this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); - - return this; - - }, - - updateFromObject: function ( object ) { - - var geometry = object.geometry; - - if ( object.isMesh ) { - - var direct = geometry.__directGeometry; - - if ( geometry.elementsNeedUpdate === true ) { - - direct = undefined; - geometry.elementsNeedUpdate = false; - - } - - if ( direct === undefined ) { - - return this.fromGeometry( geometry ); - - } - - direct.verticesNeedUpdate = geometry.verticesNeedUpdate; - direct.normalsNeedUpdate = geometry.normalsNeedUpdate; - direct.colorsNeedUpdate = geometry.colorsNeedUpdate; - direct.uvsNeedUpdate = geometry.uvsNeedUpdate; - direct.groupsNeedUpdate = geometry.groupsNeedUpdate; - - geometry.verticesNeedUpdate = false; - geometry.normalsNeedUpdate = false; - geometry.colorsNeedUpdate = false; - geometry.uvsNeedUpdate = false; - geometry.groupsNeedUpdate = false; - - geometry = direct; - - } - - var attribute; - - if ( geometry.verticesNeedUpdate === true ) { - - attribute = this.attributes.position; - - if ( attribute !== undefined ) { - - attribute.copyVector3sArray( geometry.vertices ); - attribute.needsUpdate = true; - - } - - geometry.verticesNeedUpdate = false; - - } - - if ( geometry.normalsNeedUpdate === true ) { - - attribute = this.attributes.normal; - - if ( attribute !== undefined ) { - - attribute.copyVector3sArray( geometry.normals ); - attribute.needsUpdate = true; - - } - - geometry.normalsNeedUpdate = false; - - } - - if ( geometry.colorsNeedUpdate === true ) { - - attribute = this.attributes.color; - - if ( attribute !== undefined ) { - - attribute.copyColorsArray( geometry.colors ); - attribute.needsUpdate = true; - - } - - geometry.colorsNeedUpdate = false; - - } - - if ( geometry.uvsNeedUpdate ) { - - attribute = this.attributes.uv; - - if ( attribute !== undefined ) { - - attribute.copyVector2sArray( geometry.uvs ); - attribute.needsUpdate = true; - - } - - geometry.uvsNeedUpdate = false; - - } - - if ( geometry.lineDistancesNeedUpdate ) { - - attribute = this.attributes.lineDistance; - - if ( attribute !== undefined ) { - - attribute.copyArray( geometry.lineDistances ); - attribute.needsUpdate = true; - - } - - geometry.lineDistancesNeedUpdate = false; - - } - - if ( geometry.groupsNeedUpdate ) { - - geometry.computeGroups( object.geometry ); - this.groups = geometry.groups; - - geometry.groupsNeedUpdate = false; - - } - - return this; - - }, - - fromGeometry: function ( geometry ) { - - geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); - - return this.fromDirectGeometry( geometry.__directGeometry ); - - }, - - fromDirectGeometry: function ( geometry ) { - - var positions = new Float32Array( geometry.vertices.length * 3 ); - this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); - - if ( geometry.normals.length > 0 ) { - - var normals = new Float32Array( geometry.normals.length * 3 ); - this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); - - } - - if ( geometry.colors.length > 0 ) { - - var colors = new Float32Array( geometry.colors.length * 3 ); - this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); - - } - - if ( geometry.uvs.length > 0 ) { - - var uvs = new Float32Array( geometry.uvs.length * 2 ); - this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); - - } - - if ( geometry.uvs2.length > 0 ) { - - var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); - this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); - - } - - // groups - - this.groups = geometry.groups; - - // morphs - - for ( var name in geometry.morphTargets ) { - - var array = []; - var morphTargets = geometry.morphTargets[ name ]; - - for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { - - var morphTarget = morphTargets[ i ]; - - var attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 ); - attribute.name = morphTarget.name; - - array.push( attribute.copyVector3sArray( morphTarget.data ) ); - - } - - this.morphAttributes[ name ] = array; - - } - - // skinning - - if ( geometry.skinIndices.length > 0 ) { - - var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); - this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); - - } - - if ( geometry.skinWeights.length > 0 ) { - - var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); - this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); - - } - - // - - if ( geometry.boundingSphere !== null ) { - - this.boundingSphere = geometry.boundingSphere.clone(); - - } - - if ( geometry.boundingBox !== null ) { - - this.boundingBox = geometry.boundingBox.clone(); - - } - - return this; - - }, - - computeBoundingBox: function () { - - if ( this.boundingBox === null ) { - - this.boundingBox = new Box3(); - - } - - var position = this.attributes.position; - - if ( position !== undefined ) { - - this.boundingBox.setFromBufferAttribute( position ); - - } else { - - this.boundingBox.makeEmpty(); - - } - - if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { - - console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); - - } - - }, - - computeBoundingSphere: function () { - - var box = new Box3(); - var vector = new Vector3(); - - return function computeBoundingSphere() { - - if ( this.boundingSphere === null ) { - - this.boundingSphere = new Sphere(); - - } - - var position = this.attributes.position; - - if ( position ) { - - var center = this.boundingSphere.center; - - box.setFromBufferAttribute( position ); - box.getCenter( center ); - - // hoping to find a boundingSphere with a radius smaller than the - // boundingSphere of the boundingBox: sqrt(3) smaller in the best case - - var maxRadiusSq = 0; - - for ( var i = 0, il = position.count; i < il; i ++ ) { - - vector.x = position.getX( i ); - vector.y = position.getY( i ); - vector.z = position.getZ( i ); - maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) ); - - } - - this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); - - if ( isNaN( this.boundingSphere.radius ) ) { - - console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); - - } - - } - - }; - - }(), - - computeFaceNormals: function () { - - // backwards compatibility - - }, - - computeVertexNormals: function () { - - var index = this.index; - var attributes = this.attributes; - - if ( attributes.position ) { - - var positions = attributes.position.array; - - if ( attributes.normal === undefined ) { - - this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); - - } else { - - // reset existing normals to zero - - var array = attributes.normal.array; - - for ( var i = 0, il = array.length; i < il; i ++ ) { - - array[ i ] = 0; - - } - - } - - var normals = attributes.normal.array; - - var vA, vB, vC; - var pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); - var cb = new Vector3(), ab = new Vector3(); - - // indexed elements - - if ( index ) { - - var indices = index.array; - - for ( var i = 0, il = index.count; i < il; i += 3 ) { - - vA = indices[ i + 0 ] * 3; - vB = indices[ i + 1 ] * 3; - vC = indices[ i + 2 ] * 3; - - pA.fromArray( positions, vA ); - pB.fromArray( positions, vB ); - pC.fromArray( positions, vC ); - - cb.subVectors( pC, pB ); - ab.subVectors( pA, pB ); - cb.cross( ab ); - - normals[ vA ] += cb.x; - normals[ vA + 1 ] += cb.y; - normals[ vA + 2 ] += cb.z; - - normals[ vB ] += cb.x; - normals[ vB + 1 ] += cb.y; - normals[ vB + 2 ] += cb.z; - - normals[ vC ] += cb.x; - normals[ vC + 1 ] += cb.y; - normals[ vC + 2 ] += cb.z; - - } - - } else { - - // non-indexed elements (unconnected triangle soup) - - for ( var i = 0, il = positions.length; i < il; i += 9 ) { - - pA.fromArray( positions, i ); - pB.fromArray( positions, i + 3 ); - pC.fromArray( positions, i + 6 ); - - cb.subVectors( pC, pB ); - ab.subVectors( pA, pB ); - cb.cross( ab ); - - normals[ i ] = cb.x; - normals[ i + 1 ] = cb.y; - normals[ i + 2 ] = cb.z; - - normals[ i + 3 ] = cb.x; - normals[ i + 4 ] = cb.y; - normals[ i + 5 ] = cb.z; - - normals[ i + 6 ] = cb.x; - normals[ i + 7 ] = cb.y; - normals[ i + 8 ] = cb.z; - - } - - } - - this.normalizeNormals(); - - attributes.normal.needsUpdate = true; - - } - - }, - - merge: function ( geometry, offset ) { - - if ( ! ( geometry && geometry.isBufferGeometry ) ) { - - console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); - return; - - } - - if ( offset === undefined ) { - - offset = 0; - - console.warn( - 'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' - + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.' - ); - - } - - var attributes = this.attributes; - - for ( var key in attributes ) { - - if ( geometry.attributes[ key ] === undefined ) continue; - - var attribute1 = attributes[ key ]; - var attributeArray1 = attribute1.array; - - var attribute2 = geometry.attributes[ key ]; - var attributeArray2 = attribute2.array; - - var attributeSize = attribute2.itemSize; - - for ( var i = 0, j = attributeSize * offset; i < attributeArray2.length; i ++, j ++ ) { - - attributeArray1[ j ] = attributeArray2[ i ]; - - } - - } - - return this; - - }, - - normalizeNormals: function () { - - var vector = new Vector3(); - - return function normalizeNormals() { - - var normals = this.attributes.normal; - - for ( var i = 0, il = normals.count; i < il; i ++ ) { - - vector.x = normals.getX( i ); - vector.y = normals.getY( i ); - vector.z = normals.getZ( i ); - - vector.normalize(); - - normals.setXYZ( i, vector.x, vector.y, vector.z ); - - } - - }; - - }(), - - toNonIndexed: function () { - - function convertBufferAttribute( attribute, indices ) { - - var array = attribute.array; - var itemSize = attribute.itemSize; - - var array2 = new array.constructor( indices.length * itemSize ); - - var index = 0, index2 = 0; - - for ( var i = 0, l = indices.length; i < l; i ++ ) { - - index = indices[ i ] * itemSize; - - for ( var j = 0; j < itemSize; j ++ ) { - - array2[ index2 ++ ] = array[ index ++ ]; - - } - - } - - return new BufferAttribute( array2, itemSize ); - - } - - // - - if ( this.index === null ) { - - console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); - return this; - - } - - var geometry2 = new BufferGeometry(); - - var indices = this.index.array; - var attributes = this.attributes; - - // attributes - - for ( var name in attributes ) { - - var attribute = attributes[ name ]; - - var newAttribute = convertBufferAttribute( attribute, indices ); - - geometry2.addAttribute( name, newAttribute ); - - } - - // morph attributes - - var morphAttributes = this.morphAttributes; - - for ( name in morphAttributes ) { - - var morphArray = []; - var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes - - for ( var i = 0, il = morphAttribute.length; i < il; i ++ ) { - - var attribute = morphAttribute[ i ]; - - var newAttribute = convertBufferAttribute( attribute, indices ); - - morphArray.push( newAttribute ); - - } - - geometry2.morphAttributes[ name ] = morphArray; - - } - - // groups - - var groups = this.groups; - - for ( var i = 0, l = groups.length; i < l; i ++ ) { - - var group = groups[ i ]; - geometry2.addGroup( group.start, group.count, group.materialIndex ); - - } - - return geometry2; - - }, - - toJSON: function () { - - var data = { - metadata: { - version: 4.5, - type: 'BufferGeometry', - generator: 'BufferGeometry.toJSON' - } - }; - - // standard BufferGeometry serialization - - data.uuid = this.uuid; - data.type = this.type; - if ( this.name !== '' ) data.name = this.name; - if ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData; - - if ( this.parameters !== undefined ) { - - var parameters = this.parameters; - - for ( var key in parameters ) { - - if ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ]; - - } - - return data; - - } - - data.data = { attributes: {} }; - - var index = this.index; - - if ( index !== null ) { - - var array = Array.prototype.slice.call( index.array ); - - data.data.index = { - type: index.array.constructor.name, - array: array - }; - - } - - var attributes = this.attributes; - - for ( var key in attributes ) { - - var attribute = attributes[ key ]; - - var array = Array.prototype.slice.call( attribute.array ); - - data.data.attributes[ key ] = { - itemSize: attribute.itemSize, - type: attribute.array.constructor.name, - array: array, - normalized: attribute.normalized - }; - - } - - var groups = this.groups; - - if ( groups.length > 0 ) { - - data.data.groups = JSON.parse( JSON.stringify( groups ) ); - - } - - var boundingSphere = this.boundingSphere; - - if ( boundingSphere !== null ) { - - data.data.boundingSphere = { - center: boundingSphere.center.toArray(), - radius: boundingSphere.radius - }; - - } - - return data; - - }, - - clone: function () { - - /* - // Handle primitives - - var parameters = this.parameters; - - if ( parameters !== undefined ) { - - var values = []; - - for ( var key in parameters ) { - - values.push( parameters[ key ] ); - - } - - var geometry = Object.create( this.constructor.prototype ); - this.constructor.apply( geometry, values ); - return geometry; - - } - - return new this.constructor().copy( this ); - */ - - return new BufferGeometry().copy( this ); - - }, - - copy: function ( source ) { - - var name, i, l; - - // reset - - this.index = null; - this.attributes = {}; - this.morphAttributes = {}; - this.groups = []; - this.boundingBox = null; - this.boundingSphere = null; - - // name - - this.name = source.name; - - // index - - var index = source.index; - - if ( index !== null ) { - - this.setIndex( index.clone() ); - - } - - // attributes - - var attributes = source.attributes; - - for ( name in attributes ) { - - var attribute = attributes[ name ]; - this.addAttribute( name, attribute.clone() ); - - } - - // morph attributes - - var morphAttributes = source.morphAttributes; - - for ( name in morphAttributes ) { - - var array = []; - var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes - - for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { - - array.push( morphAttribute[ i ].clone() ); - - } - - this.morphAttributes[ name ] = array; - - } - - // groups - - var groups = source.groups; - - for ( i = 0, l = groups.length; i < l; i ++ ) { - - var group = groups[ i ]; - this.addGroup( group.start, group.count, group.materialIndex ); - - } - - // bounding box - - var boundingBox = source.boundingBox; - - if ( boundingBox !== null ) { - - this.boundingBox = boundingBox.clone(); - - } - - // bounding sphere - - var boundingSphere = source.boundingSphere; - - if ( boundingSphere !== null ) { - - this.boundingSphere = boundingSphere.clone(); - - } - - // draw range - - this.drawRange.start = source.drawRange.start; - this.drawRange.count = source.drawRange.count; - - // user data - - this.userData = source.userData; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // BoxGeometry - - function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { - - Geometry.call( this ); - - this.type = 'BoxGeometry'; - - this.parameters = { - width: width, - height: height, - depth: depth, - widthSegments: widthSegments, - heightSegments: heightSegments, - depthSegments: depthSegments - }; - - this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); - this.mergeVertices(); - - } - - BoxGeometry.prototype = Object.create( Geometry.prototype ); - BoxGeometry.prototype.constructor = BoxGeometry; - - // BoxBufferGeometry - - function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { - - BufferGeometry.call( this ); - - this.type = 'BoxBufferGeometry'; - - this.parameters = { - width: width, - height: height, - depth: depth, - widthSegments: widthSegments, - heightSegments: heightSegments, - depthSegments: depthSegments - }; - - var scope = this; - - width = width || 1; - height = height || 1; - depth = depth || 1; - - // segments - - widthSegments = Math.floor( widthSegments ) || 1; - heightSegments = Math.floor( heightSegments ) || 1; - depthSegments = Math.floor( depthSegments ) || 1; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var numberOfVertices = 0; - var groupStart = 0; - - // build each side of the box geometry - - buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px - buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx - buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py - buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny - buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz - buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { - - var segmentWidth = width / gridX; - var segmentHeight = height / gridY; - - var widthHalf = width / 2; - var heightHalf = height / 2; - var depthHalf = depth / 2; - - var gridX1 = gridX + 1; - var gridY1 = gridY + 1; - - var vertexCounter = 0; - var groupCount = 0; - - var ix, iy; - - var vector = new Vector3(); - - // generate vertices, normals and uvs - - for ( iy = 0; iy < gridY1; iy ++ ) { - - var y = iy * segmentHeight - heightHalf; - - for ( ix = 0; ix < gridX1; ix ++ ) { - - var x = ix * segmentWidth - widthHalf; - - // set values to correct vector component - - vector[ u ] = x * udir; - vector[ v ] = y * vdir; - vector[ w ] = depthHalf; - - // now apply vector to vertex buffer - - vertices.push( vector.x, vector.y, vector.z ); - - // set values to correct vector component - - vector[ u ] = 0; - vector[ v ] = 0; - vector[ w ] = depth > 0 ? 1 : - 1; - - // now apply vector to normal buffer - - normals.push( vector.x, vector.y, vector.z ); - - // uvs - - uvs.push( ix / gridX ); - uvs.push( 1 - ( iy / gridY ) ); - - // counters - - vertexCounter += 1; - - } - - } - - // indices - - // 1. you need three indices to draw a single face - // 2. a single segment consists of two faces - // 3. so we need to generate six (2*3) indices per segment - - for ( iy = 0; iy < gridY; iy ++ ) { - - for ( ix = 0; ix < gridX; ix ++ ) { - - var a = numberOfVertices + ix + gridX1 * iy; - var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); - var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - // increase counter - - groupCount += 6; - - } - - } - - // add a group to the geometry. this will ensure multi material support - - scope.addGroup( groupStart, groupCount, materialIndex ); - - // calculate new start value for groups - - groupStart += groupCount; - - // update total number of vertices - - numberOfVertices += vertexCounter; - - } - - } - - BoxBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // PlaneGeometry - - function PlaneGeometry( width, height, widthSegments, heightSegments ) { - - Geometry.call( this ); - - this.type = 'PlaneGeometry'; - - this.parameters = { - width: width, - height: height, - widthSegments: widthSegments, - heightSegments: heightSegments - }; - - this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); - this.mergeVertices(); - - } - - PlaneGeometry.prototype = Object.create( Geometry.prototype ); - PlaneGeometry.prototype.constructor = PlaneGeometry; - - // PlaneBufferGeometry - - function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { - - BufferGeometry.call( this ); - - this.type = 'PlaneBufferGeometry'; - - this.parameters = { - width: width, - height: height, - widthSegments: widthSegments, - heightSegments: heightSegments - }; - - width = width || 1; - height = height || 1; - - var width_half = width / 2; - var height_half = height / 2; - - var gridX = Math.floor( widthSegments ) || 1; - var gridY = Math.floor( heightSegments ) || 1; - - var gridX1 = gridX + 1; - var gridY1 = gridY + 1; - - var segment_width = width / gridX; - var segment_height = height / gridY; - - var ix, iy; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // generate vertices, normals and uvs - - for ( iy = 0; iy < gridY1; iy ++ ) { - - var y = iy * segment_height - height_half; - - for ( ix = 0; ix < gridX1; ix ++ ) { - - var x = ix * segment_width - width_half; - - vertices.push( x, - y, 0 ); - - normals.push( 0, 0, 1 ); - - uvs.push( ix / gridX ); - uvs.push( 1 - ( iy / gridY ) ); - - } - - } - - // indices - - for ( iy = 0; iy < gridY; iy ++ ) { - - for ( ix = 0; ix < gridX; ix ++ ) { - - var a = ix + gridX1 * iy; - var b = ix + gridX1 * ( iy + 1 ); - var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = ( ix + 1 ) + gridX1 * iy; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - var materialId = 0; - - function Material() { - - Object.defineProperty( this, 'id', { value: materialId ++ } ); - - this.uuid = _Math.generateUUID(); - - this.name = ''; - this.type = 'Material'; - - this.fog = true; - this.lights = true; - - this.blending = NormalBlending; - this.side = FrontSide; - this.flatShading = false; - this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors - - this.opacity = 1; - this.transparent = false; - - this.blendSrc = SrcAlphaFactor; - this.blendDst = OneMinusSrcAlphaFactor; - this.blendEquation = AddEquation; - this.blendSrcAlpha = null; - this.blendDstAlpha = null; - this.blendEquationAlpha = null; - - this.depthFunc = LessEqualDepth; - this.depthTest = true; - this.depthWrite = true; - - this.clippingPlanes = null; - this.clipIntersection = false; - this.clipShadows = false; - - this.shadowSide = null; - - this.colorWrite = true; - - this.precision = null; // override the renderer's default precision for this material - - this.polygonOffset = false; - this.polygonOffsetFactor = 0; - this.polygonOffsetUnits = 0; - - this.dithering = false; - - this.alphaTest = 0; - this.premultipliedAlpha = false; - - this.visible = true; - - this.userData = {}; - - this.needsUpdate = true; - - } - - Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: Material, - - isMaterial: true, - - onBeforeCompile: function () {}, - - setValues: function ( values ) { - - if ( values === undefined ) return; - - for ( var key in values ) { - - var newValue = values[ key ]; - - if ( newValue === undefined ) { - - console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); - continue; - - } - - // for backward compatability if shading is set in the constructor - if ( key === 'shading' ) { - - console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - this.flatShading = ( newValue === FlatShading ) ? true : false; - continue; - - } - - var currentValue = this[ key ]; - - if ( currentValue === undefined ) { - - console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); - continue; - - } - - if ( currentValue && currentValue.isColor ) { - - currentValue.set( newValue ); - - } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { - - currentValue.copy( newValue ); - - } else { - - this[ key ] = newValue; - - } - - } - - }, - - toJSON: function ( meta ) { - - var isRoot = ( meta === undefined || typeof meta === 'string' ); - - if ( isRoot ) { - - meta = { - textures: {}, - images: {} - }; - - } - - var data = { - metadata: { - version: 4.5, - type: 'Material', - generator: 'Material.toJSON' - } - }; - - // standard Material serialization - data.uuid = this.uuid; - data.type = this.type; - - if ( this.name !== '' ) data.name = this.name; - - if ( this.color && this.color.isColor ) data.color = this.color.getHex(); - - if ( this.roughness !== undefined ) data.roughness = this.roughness; - if ( this.metalness !== undefined ) data.metalness = this.metalness; - - if ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex(); - if ( this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity; - - if ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex(); - if ( this.shininess !== undefined ) data.shininess = this.shininess; - if ( this.clearCoat !== undefined ) data.clearCoat = this.clearCoat; - if ( this.clearCoatRoughness !== undefined ) data.clearCoatRoughness = this.clearCoatRoughness; - - if ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid; - if ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid; - if ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid; - - if ( this.aoMap && this.aoMap.isTexture ) { - - data.aoMap = this.aoMap.toJSON( meta ).uuid; - data.aoMapIntensity = this.aoMapIntensity; - - } - - if ( this.bumpMap && this.bumpMap.isTexture ) { - - data.bumpMap = this.bumpMap.toJSON( meta ).uuid; - data.bumpScale = this.bumpScale; - - } - - if ( this.normalMap && this.normalMap.isTexture ) { - - data.normalMap = this.normalMap.toJSON( meta ).uuid; - data.normalMapType = this.normalMapType; - data.normalScale = this.normalScale.toArray(); - - } - - if ( this.displacementMap && this.displacementMap.isTexture ) { - - data.displacementMap = this.displacementMap.toJSON( meta ).uuid; - data.displacementScale = this.displacementScale; - data.displacementBias = this.displacementBias; - - } - - if ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; - if ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; - - if ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; - if ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid; - - if ( this.envMap && this.envMap.isTexture ) { - - data.envMap = this.envMap.toJSON( meta ).uuid; - data.reflectivity = this.reflectivity; // Scale behind envMap - - if ( this.combine !== undefined ) data.combine = this.combine; - if ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity; - - } - - if ( this.gradientMap && this.gradientMap.isTexture ) { - - data.gradientMap = this.gradientMap.toJSON( meta ).uuid; - - } - - if ( this.size !== undefined ) data.size = this.size; - if ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation; - - if ( this.blending !== NormalBlending ) data.blending = this.blending; - if ( this.flatShading === true ) data.flatShading = this.flatShading; - if ( this.side !== FrontSide ) data.side = this.side; - if ( this.vertexColors !== NoColors ) data.vertexColors = this.vertexColors; - - if ( this.opacity < 1 ) data.opacity = this.opacity; - if ( this.transparent === true ) data.transparent = this.transparent; - - data.depthFunc = this.depthFunc; - data.depthTest = this.depthTest; - data.depthWrite = this.depthWrite; - - // rotation (SpriteMaterial) - if ( this.rotation !== 0 ) data.rotation = this.rotation; - - if ( this.polygonOffset === true ) data.polygonOffset = true; - if ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor; - if ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits; - - if ( this.linewidth !== 1 ) data.linewidth = this.linewidth; - if ( this.dashSize !== undefined ) data.dashSize = this.dashSize; - if ( this.gapSize !== undefined ) data.gapSize = this.gapSize; - if ( this.scale !== undefined ) data.scale = this.scale; - - if ( this.dithering === true ) data.dithering = true; - - if ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest; - if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha; - - if ( this.wireframe === true ) data.wireframe = this.wireframe; - if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth; - if ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap; - if ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin; - - if ( this.morphTargets === true ) data.morphTargets = true; - if ( this.skinning === true ) data.skinning = true; - - if ( this.visible === false ) data.visible = false; - if ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData; - - // TODO: Copied from Object3D.toJSON - - function extractFromCache( cache ) { - - var values = []; - - for ( var key in cache ) { - - var data = cache[ key ]; - delete data.metadata; - values.push( data ); - - } - - return values; - - } - - if ( isRoot ) { - - var textures = extractFromCache( meta.textures ); - var images = extractFromCache( meta.images ); - - if ( textures.length > 0 ) data.textures = textures; - if ( images.length > 0 ) data.images = images; - - } - - return data; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.name = source.name; - - this.fog = source.fog; - this.lights = source.lights; - - this.blending = source.blending; - this.side = source.side; - this.flatShading = source.flatShading; - this.vertexColors = source.vertexColors; - - this.opacity = source.opacity; - this.transparent = source.transparent; - - this.blendSrc = source.blendSrc; - this.blendDst = source.blendDst; - this.blendEquation = source.blendEquation; - this.blendSrcAlpha = source.blendSrcAlpha; - this.blendDstAlpha = source.blendDstAlpha; - this.blendEquationAlpha = source.blendEquationAlpha; - - this.depthFunc = source.depthFunc; - this.depthTest = source.depthTest; - this.depthWrite = source.depthWrite; - - this.colorWrite = source.colorWrite; - - this.precision = source.precision; - - this.polygonOffset = source.polygonOffset; - this.polygonOffsetFactor = source.polygonOffsetFactor; - this.polygonOffsetUnits = source.polygonOffsetUnits; - - this.dithering = source.dithering; - - this.alphaTest = source.alphaTest; - this.premultipliedAlpha = source.premultipliedAlpha; - - this.visible = source.visible; - this.userData = JSON.parse( JSON.stringify( source.userData ) ); - - this.clipShadows = source.clipShadows; - this.clipIntersection = source.clipIntersection; - - var srcPlanes = source.clippingPlanes, - dstPlanes = null; - - if ( srcPlanes !== null ) { - - var n = srcPlanes.length; - dstPlanes = new Array( n ); - - for ( var i = 0; i !== n; ++ i ) - dstPlanes[ i ] = srcPlanes[ i ].clone(); - - } - - this.clippingPlanes = dstPlanes; - - this.shadowSide = source.shadowSide; - - return this; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * defines: { "label" : "value" }, - * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, - * - * fragmentShader: , - * vertexShader: , - * - * wireframe: , - * wireframeLinewidth: , - * - * lights: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function ShaderMaterial( parameters ) { - - Material.call( this ); - - this.type = 'ShaderMaterial'; - - this.defines = {}; - this.uniforms = {}; - - this.vertexShader = 'void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}'; - this.fragmentShader = 'void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}'; - - this.linewidth = 1; - - this.wireframe = false; - this.wireframeLinewidth = 1; - - this.fog = false; // set to use scene fog - this.lights = false; // set to use scene lights - this.clipping = false; // set to use user-defined clipping planes - - this.skinning = false; // set to use skinning attribute streams - this.morphTargets = false; // set to use morph targets - this.morphNormals = false; // set to use morph normals - - this.extensions = { - derivatives: false, // set to use derivatives - fragDepth: false, // set to use fragment depth values - drawBuffers: false, // set to use draw buffers - shaderTextureLOD: false // set to use shader texture LOD - }; - - // When rendered geometry doesn't include these attributes but the material does, - // use these default values in WebGL. This avoids errors when buffer data is missing. - this.defaultAttributeValues = { - 'color': [ 1, 1, 1 ], - 'uv': [ 0, 0 ], - 'uv2': [ 0, 0 ] - }; - - this.index0AttributeName = undefined; - this.uniformsNeedUpdate = false; - - if ( parameters !== undefined ) { - - if ( parameters.attributes !== undefined ) { - - console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); - - } - - this.setValues( parameters ); - - } - - } - - ShaderMaterial.prototype = Object.create( Material.prototype ); - ShaderMaterial.prototype.constructor = ShaderMaterial; - - ShaderMaterial.prototype.isShaderMaterial = true; - - ShaderMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.fragmentShader = source.fragmentShader; - this.vertexShader = source.vertexShader; - - this.uniforms = cloneUniforms( source.uniforms ); - - this.defines = Object.assign( {}, source.defines ); - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - - this.lights = source.lights; - this.clipping = source.clipping; - - this.skinning = source.skinning; - - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - this.extensions = source.extensions; - - return this; - - }; - - ShaderMaterial.prototype.toJSON = function ( meta ) { - - var data = Material.prototype.toJSON.call( this, meta ); - - data.uniforms = {}; - - for ( var name in this.uniforms ) { - - var uniform = this.uniforms[ name ]; - var value = uniform.value; - - if ( value && value.isTexture ) { - - data.uniforms[ name ] = { - type: 't', - value: value.toJSON( meta ).uuid - }; - - } else if ( value && value.isColor ) { - - data.uniforms[ name ] = { - type: 'c', - value: value.getHex() - }; - - } else if ( value && value.isVector2 ) { - - data.uniforms[ name ] = { - type: 'v2', - value: value.toArray() - }; - - } else if ( value && value.isVector3 ) { - - data.uniforms[ name ] = { - type: 'v3', - value: value.toArray() - }; - - } else if ( value && value.isVector4 ) { - - data.uniforms[ name ] = { - type: 'v4', - value: value.toArray() - }; - - } else if ( value && value.isMatrix3 ) { - - data.uniforms[ name ] = { - type: 'm3', - value: value.toArray() - }; - - } else if ( value && value.isMatrix4 ) { - - data.uniforms[ name ] = { - type: 'm4', - value: value.toArray() - }; - - } else { - - data.uniforms[ name ] = { - value: value - }; - - // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far - - } - - } - - if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines; - - data.vertexShader = this.vertexShader; - data.fragmentShader = this.fragmentShader; - - var extensions = {}; - - for ( var key in this.extensions ) { - - if ( this.extensions[ key ] === true ) extensions[ key ] = true; - - } - - if ( Object.keys( extensions ).length > 0 ) data.extensions = extensions; - - return data; - - }; - - /** - * @author bhouston / http://clara.io - */ - - function Ray( origin, direction ) { - - this.origin = ( origin !== undefined ) ? origin : new Vector3(); - this.direction = ( direction !== undefined ) ? direction : new Vector3(); - - } - - Object.assign( Ray.prototype, { - - set: function ( origin, direction ) { - - this.origin.copy( origin ); - this.direction.copy( direction ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( ray ) { - - this.origin.copy( ray.origin ); - this.direction.copy( ray.direction ); - - return this; - - }, - - at: function ( t, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Ray: .at() target is now required' ); - target = new Vector3(); - - } - - return target.copy( this.direction ).multiplyScalar( t ).add( this.origin ); - - }, - - lookAt: function ( v ) { - - this.direction.copy( v ).sub( this.origin ).normalize(); - - return this; - - }, - - recast: function () { - - var v1 = new Vector3(); - - return function recast( t ) { - - this.origin.copy( this.at( t, v1 ) ); - - return this; - - }; - - }(), - - closestPointToPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Ray: .closestPointToPoint() target is now required' ); - target = new Vector3(); - - } - - target.subVectors( point, this.origin ); - - var directionDistance = target.dot( this.direction ); - - if ( directionDistance < 0 ) { - - return target.copy( this.origin ); - - } - - return target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); - - }, - - distanceToPoint: function ( point ) { - - return Math.sqrt( this.distanceSqToPoint( point ) ); - - }, - - distanceSqToPoint: function () { - - var v1 = new Vector3(); - - return function distanceSqToPoint( point ) { - - var directionDistance = v1.subVectors( point, this.origin ).dot( this.direction ); - - // point behind the ray - - if ( directionDistance < 0 ) { - - return this.origin.distanceToSquared( point ); - - } - - v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); - - return v1.distanceToSquared( point ); - - }; - - }(), - - distanceSqToSegment: function () { - - var segCenter = new Vector3(); - var segDir = new Vector3(); - var diff = new Vector3(); - - return function distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { - - // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h - // It returns the min distance between the ray and the segment - // defined by v0 and v1 - // It can also set two optional targets : - // - The closest point on the ray - // - The closest point on the segment - - segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); - segDir.copy( v1 ).sub( v0 ).normalize(); - diff.copy( this.origin ).sub( segCenter ); - - var segExtent = v0.distanceTo( v1 ) * 0.5; - var a01 = - this.direction.dot( segDir ); - var b0 = diff.dot( this.direction ); - var b1 = - diff.dot( segDir ); - var c = diff.lengthSq(); - var det = Math.abs( 1 - a01 * a01 ); - var s0, s1, sqrDist, extDet; - - if ( det > 0 ) { - - // The ray and segment are not parallel. - - s0 = a01 * b1 - b0; - s1 = a01 * b0 - b1; - extDet = segExtent * det; - - if ( s0 >= 0 ) { - - if ( s1 >= - extDet ) { - - if ( s1 <= extDet ) { - - // region 0 - // Minimum at interior points of ray and segment. - - var invDet = 1 / det; - s0 *= invDet; - s1 *= invDet; - sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; - - } else { - - // region 1 - - s1 = segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - } else { - - // region 5 - - s1 = - segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - } else { - - if ( s1 <= - extDet ) { - - // region 4 - - s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); - s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } else if ( s1 <= extDet ) { - - // region 3 - - s0 = 0; - s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = s1 * ( s1 + 2 * b1 ) + c; - - } else { - - // region 2 - - s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); - s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - } - - } else { - - // Ray and segment are parallel. - - s1 = ( a01 > 0 ) ? - segExtent : segExtent; - s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); - sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; - - } - - if ( optionalPointOnRay ) { - - optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); - - } - - if ( optionalPointOnSegment ) { - - optionalPointOnSegment.copy( segDir ).multiplyScalar( s1 ).add( segCenter ); - - } - - return sqrDist; - - }; - - }(), - - intersectSphere: function () { - - var v1 = new Vector3(); - - return function intersectSphere( sphere, target ) { - - v1.subVectors( sphere.center, this.origin ); - var tca = v1.dot( this.direction ); - var d2 = v1.dot( v1 ) - tca * tca; - var radius2 = sphere.radius * sphere.radius; - - if ( d2 > radius2 ) return null; - - var thc = Math.sqrt( radius2 - d2 ); - - // t0 = first intersect point - entrance on front of sphere - var t0 = tca - thc; - - // t1 = second intersect point - exit point on back of sphere - var t1 = tca + thc; - - // test to see if both t0 and t1 are behind the ray - if so, return null - if ( t0 < 0 && t1 < 0 ) return null; - - // test to see if t0 is behind the ray: - // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, - // in order to always return an intersect point that is in front of the ray. - if ( t0 < 0 ) return this.at( t1, target ); - - // else t0 is in front of the ray, so return the first collision point scaled by t0 - return this.at( t0, target ); - - }; - - }(), - - intersectsSphere: function ( sphere ) { - - return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); - - }, - - distanceToPlane: function ( plane ) { - - var denominator = plane.normal.dot( this.direction ); - - if ( denominator === 0 ) { - - // line is coplanar, return origin - if ( plane.distanceToPoint( this.origin ) === 0 ) { - - return 0; - - } - - // Null is preferable to undefined since undefined means.... it is undefined - - return null; - - } - - var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; - - // Return if the ray never intersects the plane - - return t >= 0 ? t : null; - - }, - - intersectPlane: function ( plane, target ) { - - var t = this.distanceToPlane( plane ); - - if ( t === null ) { - - return null; - - } - - return this.at( t, target ); - - }, - - intersectsPlane: function ( plane ) { - - // check if the ray lies on the plane first - - var distToPoint = plane.distanceToPoint( this.origin ); - - if ( distToPoint === 0 ) { - - return true; - - } - - var denominator = plane.normal.dot( this.direction ); - - if ( denominator * distToPoint < 0 ) { - - return true; - - } - - // ray origin is behind the plane (and is pointing behind it) - - return false; - - }, - - intersectBox: function ( box, target ) { - - var tmin, tmax, tymin, tymax, tzmin, tzmax; - - var invdirx = 1 / this.direction.x, - invdiry = 1 / this.direction.y, - invdirz = 1 / this.direction.z; - - var origin = this.origin; - - if ( invdirx >= 0 ) { - - tmin = ( box.min.x - origin.x ) * invdirx; - tmax = ( box.max.x - origin.x ) * invdirx; - - } else { - - tmin = ( box.max.x - origin.x ) * invdirx; - tmax = ( box.min.x - origin.x ) * invdirx; - - } - - if ( invdiry >= 0 ) { - - tymin = ( box.min.y - origin.y ) * invdiry; - tymax = ( box.max.y - origin.y ) * invdiry; - - } else { - - tymin = ( box.max.y - origin.y ) * invdiry; - tymax = ( box.min.y - origin.y ) * invdiry; - - } - - if ( ( tmin > tymax ) || ( tymin > tmax ) ) return null; - - // These lines also handle the case where tmin or tmax is NaN - // (result of 0 * Infinity). x !== x returns true if x is NaN - - if ( tymin > tmin || tmin !== tmin ) tmin = tymin; - - if ( tymax < tmax || tmax !== tmax ) tmax = tymax; - - if ( invdirz >= 0 ) { - - tzmin = ( box.min.z - origin.z ) * invdirz; - tzmax = ( box.max.z - origin.z ) * invdirz; - - } else { - - tzmin = ( box.max.z - origin.z ) * invdirz; - tzmax = ( box.min.z - origin.z ) * invdirz; - - } - - if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null; - - if ( tzmin > tmin || tmin !== tmin ) tmin = tzmin; - - if ( tzmax < tmax || tmax !== tmax ) tmax = tzmax; - - //return point closest to the ray (positive side) - - if ( tmax < 0 ) return null; - - return this.at( tmin >= 0 ? tmin : tmax, target ); - - }, - - intersectsBox: ( function () { - - var v = new Vector3(); - - return function intersectsBox( box ) { - - return this.intersectBox( box, v ) !== null; - - }; - - } )(), - - intersectTriangle: function () { - - // Compute the offset origin, edges, and normal. - var diff = new Vector3(); - var edge1 = new Vector3(); - var edge2 = new Vector3(); - var normal = new Vector3(); - - return function intersectTriangle( a, b, c, backfaceCulling, target ) { - - // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h - - edge1.subVectors( b, a ); - edge2.subVectors( c, a ); - normal.crossVectors( edge1, edge2 ); - - // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, - // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by - // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) - // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) - // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) - var DdN = this.direction.dot( normal ); - var sign; - - if ( DdN > 0 ) { - - if ( backfaceCulling ) return null; - sign = 1; - - } else if ( DdN < 0 ) { - - sign = - 1; - DdN = - DdN; - - } else { - - return null; - - } - - diff.subVectors( this.origin, a ); - var DdQxE2 = sign * this.direction.dot( edge2.crossVectors( diff, edge2 ) ); - - // b1 < 0, no intersection - if ( DdQxE2 < 0 ) { - - return null; - - } - - var DdE1xQ = sign * this.direction.dot( edge1.cross( diff ) ); - - // b2 < 0, no intersection - if ( DdE1xQ < 0 ) { - - return null; - - } - - // b1+b2 > 1, no intersection - if ( DdQxE2 + DdE1xQ > DdN ) { - - return null; - - } - - // Line intersects triangle, check if ray does. - var QdN = - sign * diff.dot( normal ); - - // t < 0, no intersection - if ( QdN < 0 ) { - - return null; - - } - - // Ray intersects triangle. - return this.at( QdN / DdN, target ); - - }; - - }(), - - applyMatrix4: function ( matrix4 ) { - - this.origin.applyMatrix4( matrix4 ); - this.direction.transformDirection( matrix4 ); - - return this; - - }, - - equals: function ( ray ) { - - return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author mrdoob / http://mrdoob.com/ - */ - - function Triangle( a, b, c ) { - - this.a = ( a !== undefined ) ? a : new Vector3(); - this.b = ( b !== undefined ) ? b : new Vector3(); - this.c = ( c !== undefined ) ? c : new Vector3(); - - } - - Object.assign( Triangle, { - - getNormal: function () { - - var v0 = new Vector3(); - - return function getNormal( a, b, c, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getNormal() target is now required' ); - target = new Vector3(); - - } - - target.subVectors( c, b ); - v0.subVectors( a, b ); - target.cross( v0 ); - - var targetLengthSq = target.lengthSq(); - if ( targetLengthSq > 0 ) { - - return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); - - } - - return target.set( 0, 0, 0 ); - - }; - - }(), - - // static/instance method to calculate barycentric coordinates - // based on: http://www.blackpawn.com/texts/pointinpoly/default.html - getBarycoord: function () { - - var v0 = new Vector3(); - var v1 = new Vector3(); - var v2 = new Vector3(); - - return function getBarycoord( point, a, b, c, target ) { - - v0.subVectors( c, a ); - v1.subVectors( b, a ); - v2.subVectors( point, a ); - - var dot00 = v0.dot( v0 ); - var dot01 = v0.dot( v1 ); - var dot02 = v0.dot( v2 ); - var dot11 = v1.dot( v1 ); - var dot12 = v1.dot( v2 ); - - var denom = ( dot00 * dot11 - dot01 * dot01 ); - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getBarycoord() target is now required' ); - target = new Vector3(); - - } - - // collinear or singular triangle - if ( denom === 0 ) { - - // arbitrary location outside of triangle? - // not sure if this is the best idea, maybe should be returning undefined - return target.set( - 2, - 1, - 1 ); - - } - - var invDenom = 1 / denom; - var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; - var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; - - // barycentric coordinates must always sum to 1 - return target.set( 1 - u - v, v, u ); - - }; - - }(), - - containsPoint: function () { - - var v1 = new Vector3(); - - return function containsPoint( point, a, b, c ) { - - Triangle.getBarycoord( point, a, b, c, v1 ); - - return ( v1.x >= 0 ) && ( v1.y >= 0 ) && ( ( v1.x + v1.y ) <= 1 ); - - }; - - }(), - - getUV: function () { - - var barycoord = new Vector3(); - - return function getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) { - - this.getBarycoord( point, p1, p2, p3, barycoord ); - - target.set( 0, 0 ); - target.addScaledVector( uv1, barycoord.x ); - target.addScaledVector( uv2, barycoord.y ); - target.addScaledVector( uv3, barycoord.z ); - - return target; - - }; - - }() - - } ); - - Object.assign( Triangle.prototype, { - - set: function ( a, b, c ) { - - this.a.copy( a ); - this.b.copy( b ); - this.c.copy( c ); - - return this; - - }, - - setFromPointsAndIndices: function ( points, i0, i1, i2 ) { - - this.a.copy( points[ i0 ] ); - this.b.copy( points[ i1 ] ); - this.c.copy( points[ i2 ] ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( triangle ) { - - this.a.copy( triangle.a ); - this.b.copy( triangle.b ); - this.c.copy( triangle.c ); - - return this; - - }, - - getArea: function () { - - var v0 = new Vector3(); - var v1 = new Vector3(); - - return function getArea() { - - v0.subVectors( this.c, this.b ); - v1.subVectors( this.a, this.b ); - - return v0.cross( v1 ).length() * 0.5; - - }; - - }(), - - getMidpoint: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getMidpoint() target is now required' ); - target = new Vector3(); - - } - - return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); - - }, - - getNormal: function ( target ) { - - return Triangle.getNormal( this.a, this.b, this.c, target ); - - }, - - getPlane: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .getPlane() target is now required' ); - target = new Vector3(); - - } - - return target.setFromCoplanarPoints( this.a, this.b, this.c ); - - }, - - getBarycoord: function ( point, target ) { - - return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); - - }, - - containsPoint: function ( point ) { - - return Triangle.containsPoint( point, this.a, this.b, this.c ); - - }, - - getUV: function ( point, uv1, uv2, uv3, result ) { - - return Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, result ); - - }, - - intersectsBox: function ( box ) { - - return box.intersectsTriangle( this ); - - }, - - closestPointToPoint: function () { - - var vab = new Vector3(); - var vac = new Vector3(); - var vbc = new Vector3(); - var vap = new Vector3(); - var vbp = new Vector3(); - var vcp = new Vector3(); - - return function closestPointToPoint( p, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' ); - target = new Vector3(); - - } - - var a = this.a, b = this.b, c = this.c; - var v, w; - - // algorithm thanks to Real-Time Collision Detection by Christer Ericson, - // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., - // under the accompanying license; see chapter 5.1.5 for detailed explanation. - // basically, we're distinguishing which of the voronoi regions of the triangle - // the point lies in with the minimum amount of redundant computation. - - vab.subVectors( b, a ); - vac.subVectors( c, a ); - vap.subVectors( p, a ); - var d1 = vab.dot( vap ); - var d2 = vac.dot( vap ); - if ( d1 <= 0 && d2 <= 0 ) { - - // vertex region of A; barycentric coords (1, 0, 0) - return target.copy( a ); - - } - - vbp.subVectors( p, b ); - var d3 = vab.dot( vbp ); - var d4 = vac.dot( vbp ); - if ( d3 >= 0 && d4 <= d3 ) { - - // vertex region of B; barycentric coords (0, 1, 0) - return target.copy( b ); - - } - - var vc = d1 * d4 - d3 * d2; - if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { - - v = d1 / ( d1 - d3 ); - // edge region of AB; barycentric coords (1-v, v, 0) - return target.copy( a ).addScaledVector( vab, v ); - - } - - vcp.subVectors( p, c ); - var d5 = vab.dot( vcp ); - var d6 = vac.dot( vcp ); - if ( d6 >= 0 && d5 <= d6 ) { - - // vertex region of C; barycentric coords (0, 0, 1) - return target.copy( c ); - - } - - var vb = d5 * d2 - d1 * d6; - if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { - - w = d2 / ( d2 - d6 ); - // edge region of AC; barycentric coords (1-w, 0, w) - return target.copy( a ).addScaledVector( vac, w ); - - } - - var va = d3 * d6 - d5 * d4; - if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { - - vbc.subVectors( c, b ); - w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); - // edge region of BC; barycentric coords (0, 1-w, w) - return target.copy( b ).addScaledVector( vbc, w ); // edge region of BC - - } - - // face region - var denom = 1 / ( va + vb + vc ); - // u = va * denom - v = vb * denom; - w = vc * denom; - return target.copy( a ).addScaledVector( vab, v ).addScaledVector( vac, w ); - - }; - - }(), - - equals: function ( triangle ) { - - return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * specularMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * combine: THREE.Multiply, - * reflectivity: , - * refractionRatio: , - * - * depthTest: , - * depthWrite: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: - * } - */ - - function MeshBasicMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshBasicMaterial'; - - this.color = new Color( 0xffffff ); // emissive - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.specularMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.combine = MultiplyOperation; - this.reflectivity = 1; - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - - this.lights = false; - - this.setValues( parameters ); - - } - - MeshBasicMaterial.prototype = Object.create( Material.prototype ); - MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; - - MeshBasicMaterial.prototype.isMeshBasicMaterial = true; - - MeshBasicMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.specularMap = source.specularMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.combine = source.combine; - this.reflectivity = source.reflectivity; - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author mikael emtinger / http://gomo.se/ - * @author jonobr1 / http://jonobr1.com/ - */ - - function Mesh( geometry, material ) { - - Object3D.call( this ); - - this.type = 'Mesh'; - - this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); - - this.drawMode = TrianglesDrawMode; - - this.updateMorphTargets(); - - } - - Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Mesh, - - isMesh: true, - - setDrawMode: function ( value ) { - - this.drawMode = value; - - }, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - this.drawMode = source.drawMode; - - if ( source.morphTargetInfluences !== undefined ) { - - this.morphTargetInfluences = source.morphTargetInfluences.slice(); - - } - - if ( source.morphTargetDictionary !== undefined ) { - - this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); - - } - - return this; - - }, - - updateMorphTargets: function () { - - var geometry = this.geometry; - var m, ml, name; - - if ( geometry.isBufferGeometry ) { - - var morphAttributes = geometry.morphAttributes; - var keys = Object.keys( morphAttributes ); - - if ( keys.length > 0 ) { - - var morphAttribute = morphAttributes[ keys[ 0 ] ]; - - if ( morphAttribute !== undefined ) { - - this.morphTargetInfluences = []; - this.morphTargetDictionary = {}; - - for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { - - name = morphAttribute[ m ].name || String( m ); - - this.morphTargetInfluences.push( 0 ); - this.morphTargetDictionary[ name ] = m; - - } - - } - - } - - } else { - - var morphTargets = geometry.morphTargets; - - if ( morphTargets !== undefined && morphTargets.length > 0 ) { - - console.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); - - } - - } - - }, - - raycast: ( function () { - - var inverseMatrix = new Matrix4(); - var ray = new Ray(); - var sphere = new Sphere(); - - var vA = new Vector3(); - var vB = new Vector3(); - var vC = new Vector3(); - - var tempA = new Vector3(); - var tempB = new Vector3(); - var tempC = new Vector3(); - - var uvA = new Vector2(); - var uvB = new Vector2(); - var uvC = new Vector2(); - - var intersectionPoint = new Vector3(); - var intersectionPointWorld = new Vector3(); - - function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { - - var intersect; - - if ( material.side === BackSide ) { - - intersect = ray.intersectTriangle( pC, pB, pA, true, point ); - - } else { - - intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); - - } - - if ( intersect === null ) return null; - - intersectionPointWorld.copy( point ); - intersectionPointWorld.applyMatrix4( object.matrixWorld ); - - var distance = raycaster.ray.origin.distanceTo( intersectionPointWorld ); - - if ( distance < raycaster.near || distance > raycaster.far ) return null; - - return { - distance: distance, - point: intersectionPointWorld.clone(), - object: object - }; - - } - - function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) { - - vA.fromBufferAttribute( position, a ); - vB.fromBufferAttribute( position, b ); - vC.fromBufferAttribute( position, c ); - - var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint ); - - if ( intersection ) { - - if ( uv ) { - - uvA.fromBufferAttribute( uv, a ); - uvB.fromBufferAttribute( uv, b ); - uvC.fromBufferAttribute( uv, c ); - - intersection.uv = Triangle.getUV( intersectionPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ); - - } - - var face = new Face3( a, b, c ); - Triangle.getNormal( vA, vB, vC, face.normal ); - - intersection.face = face; - - } - - return intersection; - - } - - return function raycast( raycaster, intersects ) { - - var geometry = this.geometry; - var material = this.material; - var matrixWorld = this.matrixWorld; - - if ( material === undefined ) return; - - // Checking boundingSphere distance to ray - - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); - - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; - - // - - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); - - // Check boundingBox before continuing - - if ( geometry.boundingBox !== null ) { - - if ( ray.intersectsBox( geometry.boundingBox ) === false ) return; - - } - - var intersection; - - if ( geometry.isBufferGeometry ) { - - var a, b, c; - var index = geometry.index; - var position = geometry.attributes.position; - var uv = geometry.attributes.uv; - var groups = geometry.groups; - var drawRange = geometry.drawRange; - var i, j, il, jl; - var group, groupMaterial; - var start, end; - - if ( index !== null ) { - - // indexed buffer geometry - - if ( Array.isArray( material ) ) { - - for ( i = 0, il = groups.length; i < il; i ++ ) { - - group = groups[ i ]; - groupMaterial = material[ group.materialIndex ]; - - start = Math.max( group.start, drawRange.start ); - end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); - - for ( j = start, jl = end; j < jl; j += 3 ) { - - a = index.getX( j ); - b = index.getX( j + 1 ); - c = index.getX( j + 2 ); - - intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics - intersection.face.materialIndex = group.materialIndex; - intersects.push( intersection ); - - } - - } - - } - - } else { - - start = Math.max( 0, drawRange.start ); - end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); - - for ( i = start, il = end; i < il; i += 3 ) { - - a = index.getX( i ); - b = index.getX( i + 1 ); - c = index.getX( i + 2 ); - - intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics - intersects.push( intersection ); - - } - - } - - } - - } else if ( position !== undefined ) { - - // non-indexed buffer geometry - - if ( Array.isArray( material ) ) { - - for ( i = 0, il = groups.length; i < il; i ++ ) { - - group = groups[ i ]; - groupMaterial = material[ group.materialIndex ]; - - start = Math.max( group.start, drawRange.start ); - end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); - - for ( j = start, jl = end; j < jl; j += 3 ) { - - a = j; - b = j + 1; - c = j + 2; - - intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics - intersection.face.materialIndex = group.materialIndex; - intersects.push( intersection ); - - } - - } - - } - - } else { - - start = Math.max( 0, drawRange.start ); - end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); - - for ( i = start, il = end; i < il; i += 3 ) { - - a = i; - b = i + 1; - c = i + 2; - - intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c ); - - if ( intersection ) { - - intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics - intersects.push( intersection ); - - } - - } - - } - - } - - } else if ( geometry.isGeometry ) { - - var fvA, fvB, fvC; - var isMultiMaterial = Array.isArray( material ); - - var vertices = geometry.vertices; - var faces = geometry.faces; - var uvs; - - var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; - if ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs; - - for ( var f = 0, fl = faces.length; f < fl; f ++ ) { - - var face = faces[ f ]; - var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; - - if ( faceMaterial === undefined ) continue; - - fvA = vertices[ face.a ]; - fvB = vertices[ face.b ]; - fvC = vertices[ face.c ]; - - if ( faceMaterial.morphTargets === true ) { - - var morphTargets = geometry.morphTargets; - var morphInfluences = this.morphTargetInfluences; - - vA.set( 0, 0, 0 ); - vB.set( 0, 0, 0 ); - vC.set( 0, 0, 0 ); - - for ( var t = 0, tl = morphTargets.length; t < tl; t ++ ) { - - var influence = morphInfluences[ t ]; - - if ( influence === 0 ) continue; - - var targets = morphTargets[ t ].vertices; - - vA.addScaledVector( tempA.subVectors( targets[ face.a ], fvA ), influence ); - vB.addScaledVector( tempB.subVectors( targets[ face.b ], fvB ), influence ); - vC.addScaledVector( tempC.subVectors( targets[ face.c ], fvC ), influence ); - - } - - vA.add( fvA ); - vB.add( fvB ); - vC.add( fvC ); - - fvA = vA; - fvB = vB; - fvC = vC; - - } - - intersection = checkIntersection( this, faceMaterial, raycaster, ray, fvA, fvB, fvC, intersectionPoint ); - - if ( intersection ) { - - if ( uvs && uvs[ f ] ) { - - var uvs_f = uvs[ f ]; - uvA.copy( uvs_f[ 0 ] ); - uvB.copy( uvs_f[ 1 ] ); - uvC.copy( uvs_f[ 2 ] ); - - intersection.uv = Triangle.getUV( intersectionPoint, fvA, fvB, fvC, uvA, uvB, uvC, new Vector2() ); - - } - - intersection.face = face; - intersection.faceIndex = f; - intersects.push( intersection ); - - } - - } - - } - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLBackground( renderer, state, objects, premultipliedAlpha ) { - - var clearColor = new Color( 0x000000 ); - var clearAlpha = 0; - - var planeMesh; - var boxMesh; - // Store the current background texture and its `version` - // so we can recompile the material accordingly. - var currentBackground = null; - var currentBackgroundVersion = 0; - - function render( renderList, scene, camera, forceClear ) { - - var background = scene.background; - - if ( background === null ) { - - setClear( clearColor, clearAlpha ); - currentBackground = null; - currentBackgroundVersion = 0; - - } else if ( background && background.isColor ) { - - setClear( background, 1 ); - forceClear = true; - currentBackground = null; - currentBackgroundVersion = 0; - - } - - if ( renderer.autoClear || forceClear ) { - - renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); - - } - - if ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) { - - if ( boxMesh === undefined ) { - - boxMesh = new Mesh( - new BoxBufferGeometry( 1, 1, 1 ), - new ShaderMaterial( { - type: 'BackgroundCubeMaterial', - uniforms: cloneUniforms( ShaderLib.cube.uniforms ), - vertexShader: ShaderLib.cube.vertexShader, - fragmentShader: ShaderLib.cube.fragmentShader, - side: BackSide, - depthTest: false, - depthWrite: false, - fog: false - } ) - ); - - boxMesh.geometry.removeAttribute( 'normal' ); - boxMesh.geometry.removeAttribute( 'uv' ); - - boxMesh.onBeforeRender = function ( renderer, scene, camera ) { - - this.matrixWorld.copyPosition( camera.matrixWorld ); - - }; - - // enable code injection for non-built-in material - Object.defineProperty( boxMesh.material, 'map', { - - get: function () { - - return this.uniforms.tCube.value; - - } - - } ); - - objects.update( boxMesh ); - - } - - var texture = background.isWebGLRenderTargetCube ? background.texture : background; - boxMesh.material.uniforms.tCube.value = texture; - boxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1; - - if ( currentBackground !== background || - currentBackgroundVersion !== texture.version ) { - - boxMesh.material.needsUpdate = true; - - currentBackground = background; - currentBackgroundVersion = texture.version; - - } - - // push to the pre-sorted opaque render list - renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null ); - - } else if ( background && background.isTexture ) { - - if ( planeMesh === undefined ) { - - planeMesh = new Mesh( - new PlaneBufferGeometry( 2, 2 ), - new ShaderMaterial( { - type: 'BackgroundMaterial', - uniforms: cloneUniforms( ShaderLib.background.uniforms ), - vertexShader: ShaderLib.background.vertexShader, - fragmentShader: ShaderLib.background.fragmentShader, - side: FrontSide, - depthTest: false, - depthWrite: false, - fog: false - } ) - ); - - planeMesh.geometry.removeAttribute( 'normal' ); - - // enable code injection for non-built-in material - Object.defineProperty( planeMesh.material, 'map', { - - get: function () { - - return this.uniforms.t2D.value; - - } - - } ); - - objects.update( planeMesh ); - - } - - planeMesh.material.uniforms.t2D.value = background; - - if ( background.matrixAutoUpdate === true ) { - - background.updateMatrix(); - - } - - planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); - - if ( currentBackground !== background || - currentBackgroundVersion !== background.version ) { - - planeMesh.material.needsUpdate = true; - - currentBackground = background; - currentBackgroundVersion = background.version; - - } - - - // push to the pre-sorted opaque render list - renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null ); - - } - - } - - function setClear( color, alpha ) { - - state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); - - } - - return { - - getClearColor: function () { - - return clearColor; - - }, - setClearColor: function ( color, alpha ) { - - clearColor.set( color ); - clearAlpha = alpha !== undefined ? alpha : 1; - setClear( clearColor, clearAlpha ); - - }, - getClearAlpha: function () { - - return clearAlpha; - - }, - setClearAlpha: function ( alpha ) { - - clearAlpha = alpha; - setClear( clearColor, clearAlpha ); - - }, - render: render - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLBufferRenderer( gl, extensions, info, capabilities ) { - - var mode; - - function setMode( value ) { - - mode = value; - - } - - function render( start, count ) { - - gl.drawArrays( mode, start, count ); - - info.update( count, mode ); - - } - - function renderInstances( geometry, start, count ) { - - var extension; - - if ( capabilities.isWebGL2 ) { - - extension = gl; - - } else { - - extension = extensions.get( 'ANGLE_instanced_arrays' ); - - if ( extension === null ) { - - console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); - return; - - } - - } - - extension[ capabilities.isWebGL2 ? 'drawArraysInstanced' : 'drawArraysInstancedANGLE' ]( mode, start, count, geometry.maxInstancedCount ); - - info.update( count, mode, geometry.maxInstancedCount ); - - } - - // - - this.setMode = setMode; - this.render = render; - this.renderInstances = renderInstances; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLCapabilities( gl, extensions, parameters ) { - - var maxAnisotropy; - - function getMaxAnisotropy() { - - if ( maxAnisotropy !== undefined ) return maxAnisotropy; - - var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); - - if ( extension !== null ) { - - maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); - - } else { - - maxAnisotropy = 0; - - } - - return maxAnisotropy; - - } - - function getMaxPrecision( precision ) { - - if ( precision === 'highp' ) { - - if ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 && - gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) { - - return 'highp'; - - } - - precision = 'mediump'; - - } - - if ( precision === 'mediump' ) { - - if ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 && - gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) { - - return 'mediump'; - - } - - } - - return 'lowp'; - - } - - var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext; - - var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; - var maxPrecision = getMaxPrecision( precision ); - - if ( maxPrecision !== precision ) { - - console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); - precision = maxPrecision; - - } - - var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; - - var maxTextures = gl.getParameter( 34930 ); - var maxVertexTextures = gl.getParameter( 35660 ); - var maxTextureSize = gl.getParameter( 3379 ); - var maxCubemapSize = gl.getParameter( 34076 ); - - var maxAttributes = gl.getParameter( 34921 ); - var maxVertexUniforms = gl.getParameter( 36347 ); - var maxVaryings = gl.getParameter( 36348 ); - var maxFragmentUniforms = gl.getParameter( 36349 ); - - var vertexTextures = maxVertexTextures > 0; - var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' ); - var floatVertexTextures = vertexTextures && floatFragmentTextures; - - var maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0; - - return { - - isWebGL2: isWebGL2, - - getMaxAnisotropy: getMaxAnisotropy, - getMaxPrecision: getMaxPrecision, - - precision: precision, - logarithmicDepthBuffer: logarithmicDepthBuffer, - - maxTextures: maxTextures, - maxVertexTextures: maxVertexTextures, - maxTextureSize: maxTextureSize, - maxCubemapSize: maxCubemapSize, - - maxAttributes: maxAttributes, - maxVertexUniforms: maxVertexUniforms, - maxVaryings: maxVaryings, - maxFragmentUniforms: maxFragmentUniforms, - - vertexTextures: vertexTextures, - floatFragmentTextures: floatFragmentTextures, - floatVertexTextures: floatVertexTextures, - - maxSamples: maxSamples - - }; - - } - - /** - * @author tschw - */ - - function WebGLClipping() { - - var scope = this, - - globalState = null, - numGlobalPlanes = 0, - localClippingEnabled = false, - renderingShadows = false, - - plane = new Plane(), - viewNormalMatrix = new Matrix3(), - - uniform = { value: null, needsUpdate: false }; - - this.uniform = uniform; - this.numPlanes = 0; - this.numIntersection = 0; - - this.init = function ( planes, enableLocalClipping, camera ) { - - var enabled = - planes.length !== 0 || - enableLocalClipping || - // enable state of previous frame - the clipping code has to - // run another frame in order to reset the state: - numGlobalPlanes !== 0 || - localClippingEnabled; - - localClippingEnabled = enableLocalClipping; - - globalState = projectPlanes( planes, camera, 0 ); - numGlobalPlanes = planes.length; - - return enabled; - - }; - - this.beginShadows = function () { - - renderingShadows = true; - projectPlanes( null ); - - }; - - this.endShadows = function () { - - renderingShadows = false; - resetGlobalState(); - - }; - - this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { - - if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { - - // there's no local clipping - - if ( renderingShadows ) { - - // there's no global clipping - - projectPlanes( null ); - - } else { - - resetGlobalState(); - - } - - } else { - - var nGlobal = renderingShadows ? 0 : numGlobalPlanes, - lGlobal = nGlobal * 4, - - dstArray = cache.clippingState || null; - - uniform.value = dstArray; // ensure unique state - - dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); - - for ( var i = 0; i !== lGlobal; ++ i ) { - - dstArray[ i ] = globalState[ i ]; - - } - - cache.clippingState = dstArray; - this.numIntersection = clipIntersection ? this.numPlanes : 0; - this.numPlanes += nGlobal; - - } - - - }; - - function resetGlobalState() { - - if ( uniform.value !== globalState ) { - - uniform.value = globalState; - uniform.needsUpdate = numGlobalPlanes > 0; - - } - - scope.numPlanes = numGlobalPlanes; - scope.numIntersection = 0; - - } - - function projectPlanes( planes, camera, dstOffset, skipTransform ) { - - var nPlanes = planes !== null ? planes.length : 0, - dstArray = null; - - if ( nPlanes !== 0 ) { - - dstArray = uniform.value; - - if ( skipTransform !== true || dstArray === null ) { - - var flatSize = dstOffset + nPlanes * 4, - viewMatrix = camera.matrixWorldInverse; - - viewNormalMatrix.getNormalMatrix( viewMatrix ); - - if ( dstArray === null || dstArray.length < flatSize ) { - - dstArray = new Float32Array( flatSize ); - - } - - for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { - - plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); - - plane.normal.toArray( dstArray, i4 ); - dstArray[ i4 + 3 ] = plane.constant; - - } - - } - - uniform.value = dstArray; - uniform.needsUpdate = true; - - } - - scope.numPlanes = nPlanes; - - return dstArray; - - } - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLExtensions( gl ) { - - var extensions = {}; - - return { - - get: function ( name ) { - - if ( extensions[ name ] !== undefined ) { - - return extensions[ name ]; - - } - - var extension; - - switch ( name ) { - - case 'WEBGL_depth_texture': - extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); - break; - - case 'EXT_texture_filter_anisotropic': - extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); - break; - - case 'WEBGL_compressed_texture_s3tc': - extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); - break; - - case 'WEBGL_compressed_texture_pvrtc': - extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); - break; - - default: - extension = gl.getExtension( name ); - - } - - if ( extension === null ) { - - console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); - - } - - extensions[ name ] = extension; - - return extension; - - } - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLGeometries( gl, attributes, info ) { - - var geometries = {}; - var wireframeAttributes = {}; - - function onGeometryDispose( event ) { - - var geometry = event.target; - var buffergeometry = geometries[ geometry.id ]; - - if ( buffergeometry.index !== null ) { - - attributes.remove( buffergeometry.index ); - - } - - for ( var name in buffergeometry.attributes ) { - - attributes.remove( buffergeometry.attributes[ name ] ); - - } - - geometry.removeEventListener( 'dispose', onGeometryDispose ); - - delete geometries[ geometry.id ]; - - var attribute = wireframeAttributes[ buffergeometry.id ]; - - if ( attribute ) { - - attributes.remove( attribute ); - delete wireframeAttributes[ buffergeometry.id ]; - - } - - // - - info.memory.geometries --; - - } - - function get( object, geometry ) { - - var buffergeometry = geometries[ geometry.id ]; - - if ( buffergeometry ) return buffergeometry; - - geometry.addEventListener( 'dispose', onGeometryDispose ); - - if ( geometry.isBufferGeometry ) { - - buffergeometry = geometry; - - } else if ( geometry.isGeometry ) { - - if ( geometry._bufferGeometry === undefined ) { - - geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); - - } - - buffergeometry = geometry._bufferGeometry; - - } - - geometries[ geometry.id ] = buffergeometry; - - info.memory.geometries ++; - - return buffergeometry; - - } - - function update( geometry ) { - - var index = geometry.index; - var geometryAttributes = geometry.attributes; - - if ( index !== null ) { - - attributes.update( index, 34963 ); - - } - - for ( var name in geometryAttributes ) { - - attributes.update( geometryAttributes[ name ], 34962 ); - - } - - // morph targets - - var morphAttributes = geometry.morphAttributes; - - for ( var name in morphAttributes ) { - - var array = morphAttributes[ name ]; - - for ( var i = 0, l = array.length; i < l; i ++ ) { - - attributes.update( array[ i ], 34962 ); - - } - - } - - } - - function getWireframeAttribute( geometry ) { - - var attribute = wireframeAttributes[ geometry.id ]; - - if ( attribute ) return attribute; - - var indices = []; - - var geometryIndex = geometry.index; - var geometryAttributes = geometry.attributes; - - // console.time( 'wireframe' ); - - if ( geometryIndex !== null ) { - - var array = geometryIndex.array; - - for ( var i = 0, l = array.length; i < l; i += 3 ) { - - var a = array[ i + 0 ]; - var b = array[ i + 1 ]; - var c = array[ i + 2 ]; - - indices.push( a, b, b, c, c, a ); - - } - - } else { - - var array = geometryAttributes.position.array; - - for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { - - var a = i + 0; - var b = i + 1; - var c = i + 2; - - indices.push( a, b, b, c, c, a ); - - } - - } - - // console.timeEnd( 'wireframe' ); - - attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); - - attributes.update( attribute, 34963 ); - - wireframeAttributes[ geometry.id ] = attribute; - - return attribute; - - } - - return { - - get: get, - update: update, - - getWireframeAttribute: getWireframeAttribute - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) { - - var mode; - - function setMode( value ) { - - mode = value; - - } - - var type, bytesPerElement; - - function setIndex( value ) { - - type = value.type; - bytesPerElement = value.bytesPerElement; - - } - - function render( start, count ) { - - gl.drawElements( mode, count, type, start * bytesPerElement ); - - info.update( count, mode ); - - } - - function renderInstances( geometry, start, count ) { - - var extension; - - if ( capabilities.isWebGL2 ) { - - extension = gl; - - } else { - - var extension = extensions.get( 'ANGLE_instanced_arrays' ); - - if ( extension === null ) { - - console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); - return; - - } - - } - - extension[ capabilities.isWebGL2 ? 'drawElementsInstanced' : 'drawElementsInstancedANGLE' ]( mode, count, type, start * bytesPerElement, geometry.maxInstancedCount ); - - info.update( count, mode, geometry.maxInstancedCount ); - - } - - // - - this.setMode = setMode; - this.setIndex = setIndex; - this.render = render; - this.renderInstances = renderInstances; - - } - - /** - * @author Mugen87 / https://github.com/Mugen87 - */ - - function WebGLInfo( gl ) { - - var memory = { - geometries: 0, - textures: 0 - }; - - var render = { - frame: 0, - calls: 0, - triangles: 0, - points: 0, - lines: 0 - }; - - function update( count, mode, instanceCount ) { - - instanceCount = instanceCount || 1; - - render.calls ++; - - switch ( mode ) { - - case 4: - render.triangles += instanceCount * ( count / 3 ); - break; - - case 5: - case 6: - render.triangles += instanceCount * ( count - 2 ); - break; - - case 1: - render.lines += instanceCount * ( count / 2 ); - break; - - case 3: - render.lines += instanceCount * ( count - 1 ); - break; - - case 2: - render.lines += instanceCount * count; - break; - - case 0: - render.points += instanceCount * count; - break; - - default: - console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); - break; - - } - - } - - function reset() { - - render.frame ++; - render.calls = 0; - render.triangles = 0; - render.points = 0; - render.lines = 0; - - } - - return { - memory: memory, - render: render, - programs: null, - autoReset: true, - reset: reset, - update: update - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function absNumericalSort( a, b ) { - - return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); - - } - - function WebGLMorphtargets( gl ) { - - var influencesList = {}; - var morphInfluences = new Float32Array( 8 ); - - function update( object, geometry, material, program ) { - - var objectInfluences = object.morphTargetInfluences; - - var length = objectInfluences.length; - - var influences = influencesList[ geometry.id ]; - - if ( influences === undefined ) { - - // initialise list - - influences = []; - - for ( var i = 0; i < length; i ++ ) { - - influences[ i ] = [ i, 0 ]; - - } - - influencesList[ geometry.id ] = influences; - - } - - var morphTargets = material.morphTargets && geometry.morphAttributes.position; - var morphNormals = material.morphNormals && geometry.morphAttributes.normal; - - // Remove current morphAttributes - - for ( var i = 0; i < length; i ++ ) { - - var influence = influences[ i ]; - - if ( influence[ 1 ] !== 0 ) { - - if ( morphTargets ) geometry.removeAttribute( 'morphTarget' + i ); - if ( morphNormals ) geometry.removeAttribute( 'morphNormal' + i ); - - } - - } - - // Collect influences - - for ( var i = 0; i < length; i ++ ) { - - var influence = influences[ i ]; - - influence[ 0 ] = i; - influence[ 1 ] = objectInfluences[ i ]; - - } - - influences.sort( absNumericalSort ); - - // Add morphAttributes - - for ( var i = 0; i < 8; i ++ ) { - - var influence = influences[ i ]; - - if ( influence ) { - - var index = influence[ 0 ]; - var value = influence[ 1 ]; - - if ( value ) { - - if ( morphTargets ) geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); - if ( morphNormals ) geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); - - morphInfluences[ i ] = value; - continue; - - } - - } - - morphInfluences[ i ] = 0; - - } - - program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); - - } - - return { - - update: update - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLObjects( geometries, info ) { - - var updateList = {}; - - function update( object ) { - - var frame = info.render.frame; - - var geometry = object.geometry; - var buffergeometry = geometries.get( object, geometry ); - - // Update once per frame - - if ( updateList[ buffergeometry.id ] !== frame ) { - - if ( geometry.isGeometry ) { - - buffergeometry.updateFromObject( object ); - - } - - geometries.update( buffergeometry ); - - updateList[ buffergeometry.id ] = frame; - - } - - return buffergeometry; - - } - - function dispose() { - - updateList = {}; - - } - - return { - - update: update, - dispose: dispose - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { - - images = images !== undefined ? images : []; - mapping = mapping !== undefined ? mapping : CubeReflectionMapping; - - Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); - - this.flipY = false; - - } - - CubeTexture.prototype = Object.create( Texture.prototype ); - CubeTexture.prototype.constructor = CubeTexture; - - CubeTexture.prototype.isCubeTexture = true; - - Object.defineProperty( CubeTexture.prototype, 'images', { - - get: function () { - - return this.image; - - }, - - set: function ( value ) { - - this.image = value; - - } - - } ); - - /** - * @author Artur Trzesiok - */ - - function DataTexture3D( data, width, height, depth ) { - - // We're going to add .setXXX() methods for setting properties later. - // Users can still set in DataTexture3D directly. - // - // var texture = new THREE.DataTexture3D( data, width, height, depth ); - // texture.anisotropy = 16; - // - // See #14839 - - Texture.call( this, null ); - - this.image = { data: data, width: width, height: height, depth: depth }; - - this.magFilter = NearestFilter; - this.minFilter = NearestFilter; - - this.generateMipmaps = false; - this.flipY = false; - - } - - DataTexture3D.prototype = Object.create( Texture.prototype ); - DataTexture3D.prototype.constructor = DataTexture3D; - DataTexture3D.prototype.isDataTexture3D = true; - - /** - * @author tschw - * @author Mugen87 / https://github.com/Mugen87 - * @author mrdoob / http://mrdoob.com/ - * - * Uniforms of a program. - * Those form a tree structure with a special top-level container for the root, - * which you get by calling 'new WebGLUniforms( gl, program, renderer )'. - * - * - * Properties of inner nodes including the top-level container: - * - * .seq - array of nested uniforms - * .map - nested uniforms by name - * - * - * Methods of all nodes except the top-level container: - * - * .setValue( gl, value, [renderer] ) - * - * uploads a uniform value(s) - * the 'renderer' parameter is needed for sampler uniforms - * - * - * Static methods of the top-level container (renderer factorizations): - * - * .upload( gl, seq, values, renderer ) - * - * sets uniforms in 'seq' to 'values[id].value' - * - * .seqWithValue( seq, values ) : filteredSeq - * - * filters 'seq' entries with corresponding entry in values - * - * - * Methods of the top-level container (renderer factorizations): - * - * .setValue( gl, name, value ) - * - * sets uniform with name 'name' to 'value' - * - * .set( gl, obj, prop ) - * - * sets uniform from object and property with same name than uniform - * - * .setOptional( gl, obj, prop ) - * - * like .set for an optional property of the object - * - */ - - var emptyTexture = new Texture(); - var emptyTexture3d = new DataTexture3D(); - var emptyCubeTexture = new CubeTexture(); - - // --- Base for inner nodes (including the root) --- - - function UniformContainer() { - - this.seq = []; - this.map = {}; - - } - - // --- Utilities --- - - // Array Caches (provide typed arrays for temporary by size) - - var arrayCacheF32 = []; - var arrayCacheI32 = []; - - // Float32Array caches used for uploading Matrix uniforms - - var mat4array = new Float32Array( 16 ); - var mat3array = new Float32Array( 9 ); - var mat2array = new Float32Array( 4 ); - - // Flattening for arrays of vectors and matrices - - function flatten( array, nBlocks, blockSize ) { - - var firstElem = array[ 0 ]; - - if ( firstElem <= 0 || firstElem > 0 ) return array; - // unoptimized: ! isNaN( firstElem ) - // see http://jacksondunstan.com/articles/983 - - var n = nBlocks * blockSize, - r = arrayCacheF32[ n ]; - - if ( r === undefined ) { - - r = new Float32Array( n ); - arrayCacheF32[ n ] = r; - - } - - if ( nBlocks !== 0 ) { - - firstElem.toArray( r, 0 ); - - for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { - - offset += blockSize; - array[ i ].toArray( r, offset ); - - } - - } - - return r; - - } - - function arraysEqual( a, b ) { - - if ( a.length !== b.length ) return false; - - for ( var i = 0, l = a.length; i < l; i ++ ) { - - if ( a[ i ] !== b[ i ] ) return false; - - } - - return true; - - } - - function copyArray( a, b ) { - - for ( var i = 0, l = b.length; i < l; i ++ ) { - - a[ i ] = b[ i ]; - - } - - } - - // Texture unit allocation - - function allocTexUnits( renderer, n ) { - - var r = arrayCacheI32[ n ]; - - if ( r === undefined ) { - - r = new Int32Array( n ); - arrayCacheI32[ n ] = r; - - } - - for ( var i = 0; i !== n; ++ i ) - r[ i ] = renderer.allocTextureUnit(); - - return r; - - } - - // --- Setters --- - - // Note: Defining these methods externally, because they come in a bunch - // and this way their names minify. - - // Single scalar - - function setValue1f( gl, v ) { - - var cache = this.cache; - - if ( cache[ 0 ] === v ) return; - - gl.uniform1f( this.addr, v ); - - cache[ 0 ] = v; - - } - - function setValue1i( gl, v ) { - - var cache = this.cache; - - if ( cache[ 0 ] === v ) return; - - gl.uniform1i( this.addr, v ); - - cache[ 0 ] = v; - - } - - // Single float vector (from flat array or THREE.VectorN) - - function setValue2fv( gl, v ) { - - var cache = this.cache; - - if ( v.x !== undefined ) { - - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { - - gl.uniform2f( this.addr, v.x, v.y ); - - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - - } - - } else { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform2fv( this.addr, v ); - - copyArray( cache, v ); - - } - - } - - function setValue3fv( gl, v ) { - - var cache = this.cache; - - if ( v.x !== undefined ) { - - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { - - gl.uniform3f( this.addr, v.x, v.y, v.z ); - - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - cache[ 2 ] = v.z; - - } - - } else if ( v.r !== undefined ) { - - if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { - - gl.uniform3f( this.addr, v.r, v.g, v.b ); - - cache[ 0 ] = v.r; - cache[ 1 ] = v.g; - cache[ 2 ] = v.b; - - } - - } else { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform3fv( this.addr, v ); - - copyArray( cache, v ); - - } - - } - - function setValue4fv( gl, v ) { - - var cache = this.cache; - - if ( v.x !== undefined ) { - - if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { - - gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); - - cache[ 0 ] = v.x; - cache[ 1 ] = v.y; - cache[ 2 ] = v.z; - cache[ 3 ] = v.w; - - } - - } else { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform4fv( this.addr, v ); - - copyArray( cache, v ); - - } - - } - - // Single matrix (from flat array or MatrixN) - - function setValue2fm( gl, v ) { - - var cache = this.cache; - var elements = v.elements; - - if ( elements === undefined ) { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniformMatrix2fv( this.addr, false, v ); - - copyArray( cache, v ); - - } else { - - if ( arraysEqual( cache, elements ) ) return; - - mat2array.set( elements ); - - gl.uniformMatrix2fv( this.addr, false, mat2array ); - - copyArray( cache, elements ); - - } - - } - - function setValue3fm( gl, v ) { - - var cache = this.cache; - var elements = v.elements; - - if ( elements === undefined ) { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniformMatrix3fv( this.addr, false, v ); - - copyArray( cache, v ); - - } else { - - if ( arraysEqual( cache, elements ) ) return; - - mat3array.set( elements ); - - gl.uniformMatrix3fv( this.addr, false, mat3array ); - - copyArray( cache, elements ); - - } - - } - - function setValue4fm( gl, v ) { - - var cache = this.cache; - var elements = v.elements; - - if ( elements === undefined ) { - - if ( arraysEqual( cache, v ) ) return; - - gl.uniformMatrix4fv( this.addr, false, v ); - - copyArray( cache, v ); - - } else { - - if ( arraysEqual( cache, elements ) ) return; - - mat4array.set( elements ); - - gl.uniformMatrix4fv( this.addr, false, mat4array ); - - copyArray( cache, elements ); - - } - - } - - // Single texture (2D / Cube) - - function setValueT1( gl, v, renderer ) { - - var cache = this.cache; - var unit = renderer.allocTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - renderer.setTexture2D( v || emptyTexture, unit ); - - } - - function setValueT3D1( gl, v, renderer ) { - - var cache = this.cache; - var unit = renderer.allocTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - renderer.setTexture3D( v || emptyTexture3d, unit ); - - } - - function setValueT6( gl, v, renderer ) { - - var cache = this.cache; - var unit = renderer.allocTextureUnit(); - - if ( cache[ 0 ] !== unit ) { - - gl.uniform1i( this.addr, unit ); - cache[ 0 ] = unit; - - } - - renderer.setTextureCube( v || emptyCubeTexture, unit ); - - } - - // Integer / Boolean vectors or arrays thereof (always flat arrays) - - function setValue2iv( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform2iv( this.addr, v ); - - copyArray( cache, v ); - - } - - function setValue3iv( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform3iv( this.addr, v ); - - copyArray( cache, v ); - - } - - function setValue4iv( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform4iv( this.addr, v ); - - copyArray( cache, v ); - - } - - // Helper to pick the right setter for the singular case - - function getSingularSetter( type ) { - - switch ( type ) { - - case 0x1406: return setValue1f; // FLOAT - case 0x8b50: return setValue2fv; // _VEC2 - case 0x8b51: return setValue3fv; // _VEC3 - case 0x8b52: return setValue4fv; // _VEC4 - - case 0x8b5a: return setValue2fm; // _MAT2 - case 0x8b5b: return setValue3fm; // _MAT3 - case 0x8b5c: return setValue4fm; // _MAT4 - - case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES - case 0x8B5F: return setValueT3D1; // SAMPLER_3D - case 0x8b60: return setValueT6; // SAMPLER_CUBE - - case 0x1404: case 0x8b56: return setValue1i; // INT, BOOL - case 0x8b53: case 0x8b57: return setValue2iv; // _VEC2 - case 0x8b54: case 0x8b58: return setValue3iv; // _VEC3 - case 0x8b55: case 0x8b59: return setValue4iv; // _VEC4 - - } - - } - - // Array of scalars - - function setValue1fv( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform1fv( this.addr, v ); - - copyArray( cache, v ); - - } - function setValue1iv( gl, v ) { - - var cache = this.cache; - - if ( arraysEqual( cache, v ) ) return; - - gl.uniform1iv( this.addr, v ); - - copyArray( cache, v ); - - } - - // Array of vectors (flat or from THREE classes) - - function setValueV2a( gl, v ) { - - var cache = this.cache; - var data = flatten( v, this.size, 2 ); - - if ( arraysEqual( cache, data ) ) return; - - gl.uniform2fv( this.addr, data ); - - this.updateCache( data ); - - } - - function setValueV3a( gl, v ) { - - var cache = this.cache; - var data = flatten( v, this.size, 3 ); - - if ( arraysEqual( cache, data ) ) return; - - gl.uniform3fv( this.addr, data ); - - this.updateCache( data ); - - } - - function setValueV4a( gl, v ) { - - var cache = this.cache; - var data = flatten( v, this.size, 4 ); - - if ( arraysEqual( cache, data ) ) return; - - gl.uniform4fv( this.addr, data ); - - this.updateCache( data ); - - } - - // Array of matrices (flat or from THREE clases) - - function setValueM2a( gl, v ) { - - var cache = this.cache; - var data = flatten( v, this.size, 4 ); - - if ( arraysEqual( cache, data ) ) return; - - gl.uniformMatrix2fv( this.addr, false, data ); - - this.updateCache( data ); - - } - - function setValueM3a( gl, v ) { - - var cache = this.cache; - var data = flatten( v, this.size, 9 ); - - if ( arraysEqual( cache, data ) ) return; - - gl.uniformMatrix3fv( this.addr, false, data ); - - this.updateCache( data ); - - } - - function setValueM4a( gl, v ) { - - var cache = this.cache; - var data = flatten( v, this.size, 16 ); - - if ( arraysEqual( cache, data ) ) return; - - gl.uniformMatrix4fv( this.addr, false, data ); - - this.updateCache( data ); - - } - - // Array of textures (2D / Cube) - - function setValueT1a( gl, v, renderer ) { - - var cache = this.cache; - var n = v.length; - - var units = allocTexUnits( renderer, n ); - - if ( arraysEqual( cache, units ) === false ) { - - gl.uniform1iv( this.addr, units ); - copyArray( cache, units ); - - } - - for ( var i = 0; i !== n; ++ i ) { - - renderer.setTexture2D( v[ i ] || emptyTexture, units[ i ] ); - - } - - } - - function setValueT6a( gl, v, renderer ) { - - var cache = this.cache; - var n = v.length; - - var units = allocTexUnits( renderer, n ); - - if ( arraysEqual( cache, units ) === false ) { - - gl.uniform1iv( this.addr, units ); - copyArray( cache, units ); - - } - - for ( var i = 0; i !== n; ++ i ) { - - renderer.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); - - } - - } - - // Helper to pick the right setter for a pure (bottom-level) array - - function getPureArraySetter( type ) { - - switch ( type ) { - - case 0x1406: return setValue1fv; // FLOAT - case 0x8b50: return setValueV2a; // _VEC2 - case 0x8b51: return setValueV3a; // _VEC3 - case 0x8b52: return setValueV4a; // _VEC4 - - case 0x8b5a: return setValueM2a; // _MAT2 - case 0x8b5b: return setValueM3a; // _MAT3 - case 0x8b5c: return setValueM4a; // _MAT4 - - case 0x8b5e: return setValueT1a; // SAMPLER_2D - case 0x8b60: return setValueT6a; // SAMPLER_CUBE - - case 0x1404: case 0x8b56: return setValue1iv; // INT, BOOL - case 0x8b53: case 0x8b57: return setValue2iv; // _VEC2 - case 0x8b54: case 0x8b58: return setValue3iv; // _VEC3 - case 0x8b55: case 0x8b59: return setValue4iv; // _VEC4 - - } - - } - - // --- Uniform Classes --- - - function SingleUniform( id, activeInfo, addr ) { - - this.id = id; - this.addr = addr; - this.cache = []; - this.setValue = getSingularSetter( activeInfo.type ); - - // this.path = activeInfo.name; // DEBUG - - } - - function PureArrayUniform( id, activeInfo, addr ) { - - this.id = id; - this.addr = addr; - this.cache = []; - this.size = activeInfo.size; - this.setValue = getPureArraySetter( activeInfo.type ); - - // this.path = activeInfo.name; // DEBUG - - } - - PureArrayUniform.prototype.updateCache = function ( data ) { - - var cache = this.cache; - - if ( data instanceof Float32Array && cache.length !== data.length ) { - - this.cache = new Float32Array( data.length ); - - } - - copyArray( cache, data ); - - }; - - function StructuredUniform( id ) { - - this.id = id; - - UniformContainer.call( this ); // mix-in - - } - - StructuredUniform.prototype.setValue = function ( gl, value, renderer ) { - - var seq = this.seq; - - for ( var i = 0, n = seq.length; i !== n; ++ i ) { - - var u = seq[ i ]; - u.setValue( gl, value[ u.id ], renderer ); - - } - - }; - - // --- Top-level --- - - // Parser - builds up the property tree from the path strings - - var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g; - - // extracts - // - the identifier (member name or array index) - // - followed by an optional right bracket (found when array index) - // - followed by an optional left bracket or dot (type of subscript) - // - // Note: These portions can be read in a non-overlapping fashion and - // allow straightforward parsing of the hierarchy that WebGL encodes - // in the uniform names. - - function addUniform( container, uniformObject ) { - - container.seq.push( uniformObject ); - container.map[ uniformObject.id ] = uniformObject; - - } - - function parseUniform( activeInfo, addr, container ) { - - var path = activeInfo.name, - pathLength = path.length; - - // reset RegExp object, because of the early exit of a previous run - RePathPart.lastIndex = 0; - - while ( true ) { - - var match = RePathPart.exec( path ), - matchEnd = RePathPart.lastIndex, - - id = match[ 1 ], - idIsIndex = match[ 2 ] === ']', - subscript = match[ 3 ]; - - if ( idIsIndex ) id = id | 0; // convert to integer - - if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { - - // bare name or "pure" bottom-level array "[0]" suffix - - addUniform( container, subscript === undefined ? - new SingleUniform( id, activeInfo, addr ) : - new PureArrayUniform( id, activeInfo, addr ) ); - - break; - - } else { - - // step into inner node / create it in case it doesn't exist - - var map = container.map, next = map[ id ]; - - if ( next === undefined ) { - - next = new StructuredUniform( id ); - addUniform( container, next ); - - } - - container = next; - - } - - } - - } - - // Root Container - - function WebGLUniforms( gl, program, renderer ) { - - UniformContainer.call( this ); - - this.renderer = renderer; - - var n = gl.getProgramParameter( program, 35718 ); - - for ( var i = 0; i < n; ++ i ) { - - var info = gl.getActiveUniform( program, i ), - addr = gl.getUniformLocation( program, info.name ); - - parseUniform( info, addr, this ); - - } - - } - - WebGLUniforms.prototype.setValue = function ( gl, name, value ) { - - var u = this.map[ name ]; - - if ( u !== undefined ) u.setValue( gl, value, this.renderer ); - - }; - - WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { - - var v = object[ name ]; - - if ( v !== undefined ) this.setValue( gl, name, v ); - - }; - - - // Static interface - - WebGLUniforms.upload = function ( gl, seq, values, renderer ) { - - for ( var i = 0, n = seq.length; i !== n; ++ i ) { - - var u = seq[ i ], - v = values[ u.id ]; - - if ( v.needsUpdate !== false ) { - - // note: always updating when .needsUpdate is undefined - u.setValue( gl, v.value, renderer ); - - } - - } - - }; - - WebGLUniforms.seqWithValue = function ( seq, values ) { - - var r = []; - - for ( var i = 0, n = seq.length; i !== n; ++ i ) { - - var u = seq[ i ]; - if ( u.id in values ) r.push( u ); - - } - - return r; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function addLineNumbers( string ) { - - var lines = string.split( '\n' ); - - for ( var i = 0; i < lines.length; i ++ ) { - - lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; - - } - - return lines.join( '\n' ); - - } - - function WebGLShader( gl, type, string ) { - - var shader = gl.createShader( type ); - - gl.shaderSource( shader, string ); - gl.compileShader( shader ); - - if ( gl.getShaderParameter( shader, 35713 ) === false ) { - - console.error( 'THREE.WebGLShader: Shader couldn\'t compile.' ); - - } - - if ( gl.getShaderInfoLog( shader ) !== '' ) { - - console.warn( 'THREE.WebGLShader: gl.getShaderInfoLog()', type === 35633 ? 'vertex' : 'fragment', gl.getShaderInfoLog( shader ), addLineNumbers( string ) ); - - } - - // --enable-privileged-webgl-extension - // console.log( type, gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); - - return shader; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var programIdCount = 0; - - function getEncodingComponents( encoding ) { - - switch ( encoding ) { - - case LinearEncoding: - return [ 'Linear', '( value )' ]; - case sRGBEncoding: - return [ 'sRGB', '( value )' ]; - case RGBEEncoding: - return [ 'RGBE', '( value )' ]; - case RGBM7Encoding: - return [ 'RGBM', '( value, 7.0 )' ]; - case RGBM16Encoding: - return [ 'RGBM', '( value, 16.0 )' ]; - case RGBDEncoding: - return [ 'RGBD', '( value, 256.0 )' ]; - case GammaEncoding: - return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; - default: - throw new Error( 'unsupported encoding: ' + encoding ); - - } - - } - - function getTexelDecodingFunction( functionName, encoding ) { - - var components = getEncodingComponents( encoding ); - return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; - - } - - function getTexelEncodingFunction( functionName, encoding ) { - - var components = getEncodingComponents( encoding ); - return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; - - } - - function getToneMappingFunction( functionName, toneMapping ) { - - var toneMappingName; - - switch ( toneMapping ) { - - case LinearToneMapping: - toneMappingName = 'Linear'; - break; - - case ReinhardToneMapping: - toneMappingName = 'Reinhard'; - break; - - case Uncharted2ToneMapping: - toneMappingName = 'Uncharted2'; - break; - - case CineonToneMapping: - toneMappingName = 'OptimizedCineon'; - break; - - case ACESFilmicToneMapping: - toneMappingName = 'ACESFilmic'; - break; - - default: - throw new Error( 'unsupported toneMapping: ' + toneMapping ); - - } - - return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; - - } - - function generateExtensions( extensions, parameters, rendererExtensions ) { - - extensions = extensions || {}; - - var chunks = [ - ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || ( parameters.normalMap && ! parameters.objectSpaceNormalMap ) || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', - ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', - ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', - ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' - ]; - - return chunks.filter( filterEmptyLine ).join( '\n' ); - - } - - function generateDefines( defines ) { - - var chunks = []; - - for ( var name in defines ) { - - var value = defines[ name ]; - - if ( value === false ) continue; - - chunks.push( '#define ' + name + ' ' + value ); - - } - - return chunks.join( '\n' ); - - } - - function fetchAttributeLocations( gl, program ) { - - var attributes = {}; - - var n = gl.getProgramParameter( program, 35721 ); - - for ( var i = 0; i < n; i ++ ) { - - var info = gl.getActiveAttrib( program, i ); - var name = info.name; - - // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); - - attributes[ name ] = gl.getAttribLocation( program, name ); - - } - - return attributes; - - } - - function filterEmptyLine( string ) { - - return string !== ''; - - } - - function replaceLightNums( string, parameters ) { - - return string - .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) - .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) - .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) - .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) - .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ); - - } - - function replaceClippingPlaneNums( string, parameters ) { - - return string - .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) - .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); - - } - - function parseIncludes( string ) { - - var pattern = /^[ \t]*#include +<([\w\d./]+)>/gm; - - function replace( match, include ) { - - var replace = ShaderChunk[ include ]; - - if ( replace === undefined ) { - - throw new Error( 'Can not resolve #include <' + include + '>' ); - - } - - return parseIncludes( replace ); - - } - - return string.replace( pattern, replace ); - - } - - function unrollLoops( string ) { - - var pattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; - - function replace( match, start, end, snippet ) { - - var unroll = ''; - - for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { - - unroll += snippet.replace( /\[ i \]/g, '[ ' + i + ' ]' ); - - } - - return unroll; - - } - - return string.replace( pattern, replace ); - - } - - function WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ) { - - var gl = renderer.context; - - var defines = material.defines; - - var vertexShader = shader.vertexShader; - var fragmentShader = shader.fragmentShader; - - var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; - - if ( parameters.shadowMapType === PCFShadowMap ) { - - shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; - - } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { - - shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; - - } - - var envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; - var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; - var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; - - if ( parameters.envMap ) { - - switch ( material.envMap.mapping ) { - - case CubeReflectionMapping: - case CubeRefractionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; - break; - - case CubeUVReflectionMapping: - case CubeUVRefractionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; - break; - - case EquirectangularReflectionMapping: - case EquirectangularRefractionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC'; - break; - - case SphericalReflectionMapping: - envMapTypeDefine = 'ENVMAP_TYPE_SPHERE'; - break; - - } - - switch ( material.envMap.mapping ) { - - case CubeRefractionMapping: - case EquirectangularRefractionMapping: - envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; - break; - - } - - switch ( material.combine ) { - - case MultiplyOperation: - envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; - break; - - case MixOperation: - envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; - break; - - case AddOperation: - envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; - break; - - } - - } - - var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; - - // console.log( 'building new program ' ); - - // - - var customExtensions = capabilities.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions ); - - var customDefines = generateDefines( defines ); - - // - - var program = gl.createProgram(); - - var prefixVertex, prefixFragment; - - if ( material.isRawShaderMaterial ) { - - prefixVertex = [ - - customDefines - - ].filter( filterEmptyLine ).join( '\n' ); - - if ( prefixVertex.length > 0 ) { - - prefixVertex += '\n'; - - } - - prefixFragment = [ - - customExtensions, - customDefines - - ].filter( filterEmptyLine ).join( '\n' ); - - if ( prefixFragment.length > 0 ) { - - prefixFragment += '\n'; - - } - - } else { - - prefixVertex = [ - - 'precision ' + parameters.precision + ' float;', - 'precision ' + parameters.precision + ' int;', - - '#define SHADER_NAME ' + shader.name, - - customDefines, - - parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', - - '#define GAMMA_FACTOR ' + gammaFactorDefine, - - '#define MAX_BONES ' + parameters.maxBones, - ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', - ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', - - parameters.map ? '#define USE_MAP' : '', - parameters.envMap ? '#define USE_ENVMAP' : '', - parameters.envMap ? '#define ' + envMapModeDefine : '', - parameters.lightMap ? '#define USE_LIGHTMAP' : '', - parameters.aoMap ? '#define USE_AOMAP' : '', - parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', - parameters.bumpMap ? '#define USE_BUMPMAP' : '', - parameters.normalMap ? '#define USE_NORMALMAP' : '', - ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', - parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', - parameters.specularMap ? '#define USE_SPECULARMAP' : '', - parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', - parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', - parameters.alphaMap ? '#define USE_ALPHAMAP' : '', - parameters.vertexColors ? '#define USE_COLOR' : '', - - parameters.flatShading ? '#define FLAT_SHADED' : '', - - parameters.skinning ? '#define USE_SKINNING' : '', - parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', - - parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', - parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', - parameters.doubleSided ? '#define DOUBLE_SIDED' : '', - parameters.flipSided ? '#define FLIP_SIDED' : '', - - parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', - parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', - - parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', - - parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', - parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', - - 'uniform mat4 modelMatrix;', - 'uniform mat4 modelViewMatrix;', - 'uniform mat4 projectionMatrix;', - 'uniform mat4 viewMatrix;', - 'uniform mat3 normalMatrix;', - 'uniform vec3 cameraPosition;', - - 'attribute vec3 position;', - 'attribute vec3 normal;', - 'attribute vec2 uv;', - - '#ifdef USE_COLOR', - - ' attribute vec3 color;', - - '#endif', - - '#ifdef USE_MORPHTARGETS', - - ' attribute vec3 morphTarget0;', - ' attribute vec3 morphTarget1;', - ' attribute vec3 morphTarget2;', - ' attribute vec3 morphTarget3;', - - ' #ifdef USE_MORPHNORMALS', - - ' attribute vec3 morphNormal0;', - ' attribute vec3 morphNormal1;', - ' attribute vec3 morphNormal2;', - ' attribute vec3 morphNormal3;', - - ' #else', - - ' attribute vec3 morphTarget4;', - ' attribute vec3 morphTarget5;', - ' attribute vec3 morphTarget6;', - ' attribute vec3 morphTarget7;', - - ' #endif', - - '#endif', - - '#ifdef USE_SKINNING', - - ' attribute vec4 skinIndex;', - ' attribute vec4 skinWeight;', - - '#endif', - - '\n' - - ].filter( filterEmptyLine ).join( '\n' ); - - prefixFragment = [ - - customExtensions, - - 'precision ' + parameters.precision + ' float;', - 'precision ' + parameters.precision + ' int;', - - '#define SHADER_NAME ' + shader.name, - - customDefines, - - parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer - - '#define GAMMA_FACTOR ' + gammaFactorDefine, - - ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', - ( parameters.useFog && parameters.fogExp ) ? '#define FOG_EXP2' : '', - - parameters.map ? '#define USE_MAP' : '', - parameters.matcap ? '#define USE_MATCAP' : '', - parameters.envMap ? '#define USE_ENVMAP' : '', - parameters.envMap ? '#define ' + envMapTypeDefine : '', - parameters.envMap ? '#define ' + envMapModeDefine : '', - parameters.envMap ? '#define ' + envMapBlendingDefine : '', - parameters.lightMap ? '#define USE_LIGHTMAP' : '', - parameters.aoMap ? '#define USE_AOMAP' : '', - parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', - parameters.bumpMap ? '#define USE_BUMPMAP' : '', - parameters.normalMap ? '#define USE_NORMALMAP' : '', - ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', - parameters.specularMap ? '#define USE_SPECULARMAP' : '', - parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', - parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', - parameters.alphaMap ? '#define USE_ALPHAMAP' : '', - parameters.vertexColors ? '#define USE_COLOR' : '', - - parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', - - parameters.flatShading ? '#define FLAT_SHADED' : '', - - parameters.doubleSided ? '#define DOUBLE_SIDED' : '', - parameters.flipSided ? '#define FLIP_SIDED' : '', - - parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', - parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', - - parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', - - parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', - - parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', - parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', - - parameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '', - - 'uniform mat4 viewMatrix;', - 'uniform vec3 cameraPosition;', - - ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', - ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below - ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', - - parameters.dithering ? '#define DITHERING' : '', - - ( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? - ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below - parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', - parameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '', - parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', - parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', - parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', - - parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', - - '\n' - - ].filter( filterEmptyLine ).join( '\n' ); - - } - - vertexShader = parseIncludes( vertexShader ); - vertexShader = replaceLightNums( vertexShader, parameters ); - vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); - - fragmentShader = parseIncludes( fragmentShader ); - fragmentShader = replaceLightNums( fragmentShader, parameters ); - fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); - - vertexShader = unrollLoops( vertexShader ); - fragmentShader = unrollLoops( fragmentShader ); - - if ( capabilities.isWebGL2 && ! material.isRawShaderMaterial ) { - - var isGLSL3ShaderMaterial = false; - - var versionRegex = /^\s*#version\s+300\s+es\s*\n/; - - if ( material.isShaderMaterial && - vertexShader.match( versionRegex ) !== null && - fragmentShader.match( versionRegex ) !== null ) { - - isGLSL3ShaderMaterial = true; - - vertexShader = vertexShader.replace( versionRegex, '' ); - fragmentShader = fragmentShader.replace( versionRegex, '' ); - - } - - // GLSL 3.0 conversion - prefixVertex = [ - '#version 300 es\n', - '#define attribute in', - '#define varying out', - '#define texture2D texture' - ].join( '\n' ) + '\n' + prefixVertex; - - prefixFragment = [ - '#version 300 es\n', - '#define varying in', - isGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;', - isGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor', - '#define gl_FragDepthEXT gl_FragDepth', - '#define texture2D texture', - '#define textureCube texture', - '#define texture2DProj textureProj', - '#define texture2DLodEXT textureLod', - '#define texture2DProjLodEXT textureProjLod', - '#define textureCubeLodEXT textureLod', - '#define texture2DGradEXT textureGrad', - '#define texture2DProjGradEXT textureProjGrad', - '#define textureCubeGradEXT textureGrad' - ].join( '\n' ) + '\n' + prefixFragment; - - } - - var vertexGlsl = prefixVertex + vertexShader; - var fragmentGlsl = prefixFragment + fragmentShader; - - // console.log( '*VERTEX*', vertexGlsl ); - // console.log( '*FRAGMENT*', fragmentGlsl ); - - var glVertexShader = WebGLShader( gl, 35633, vertexGlsl ); - var glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl ); - - gl.attachShader( program, glVertexShader ); - gl.attachShader( program, glFragmentShader ); - - // Force a particular attribute to index 0. - - if ( material.index0AttributeName !== undefined ) { - - gl.bindAttribLocation( program, 0, material.index0AttributeName ); - - } else if ( parameters.morphTargets === true ) { - - // programs with morphTargets displace position out of attribute 0 - gl.bindAttribLocation( program, 0, 'position' ); - - } - - gl.linkProgram( program ); - - var programLog = gl.getProgramInfoLog( program ).trim(); - var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); - var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); - - var runnable = true; - var haveDiagnostics = true; - - // console.log( '**VERTEX**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glVertexShader ) ); - // console.log( '**FRAGMENT**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( glFragmentShader ) ); - - if ( gl.getProgramParameter( program, 35714 ) === false ) { - - runnable = false; - - console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexLog, fragmentLog ); - - } else if ( programLog !== '' ) { - - console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); - - } else if ( vertexLog === '' || fragmentLog === '' ) { - - haveDiagnostics = false; - - } - - if ( haveDiagnostics ) { - - this.diagnostics = { - - runnable: runnable, - material: material, - - programLog: programLog, - - vertexShader: { - - log: vertexLog, - prefix: prefixVertex - - }, - - fragmentShader: { - - log: fragmentLog, - prefix: prefixFragment - - } - - }; - - } - - // clean up - - gl.deleteShader( glVertexShader ); - gl.deleteShader( glFragmentShader ); - - // set up caching for uniform locations - - var cachedUniforms; - - this.getUniforms = function () { - - if ( cachedUniforms === undefined ) { - - cachedUniforms = new WebGLUniforms( gl, program, renderer ); - - } - - return cachedUniforms; - - }; - - // set up caching for attribute locations - - var cachedAttributes; - - this.getAttributes = function () { - - if ( cachedAttributes === undefined ) { - - cachedAttributes = fetchAttributeLocations( gl, program ); - - } - - return cachedAttributes; - - }; - - // free resource - - this.destroy = function () { - - gl.deleteProgram( program ); - this.program = undefined; - - }; - - // DEPRECATED - - Object.defineProperties( this, { - - uniforms: { - get: function () { - - console.warn( 'THREE.WebGLProgram: .uniforms is now .getUniforms().' ); - return this.getUniforms(); - - } - }, - - attributes: { - get: function () { - - console.warn( 'THREE.WebGLProgram: .attributes is now .getAttributes().' ); - return this.getAttributes(); - - } - } - - } ); - - - // - - this.name = shader.name; - this.id = programIdCount ++; - this.code = code; - this.usedTimes = 1; - this.program = program; - this.vertexShader = glVertexShader; - this.fragmentShader = glFragmentShader; - - return this; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLPrograms( renderer, extensions, capabilities ) { - - var programs = []; - - var shaderIDs = { - MeshDepthMaterial: 'depth', - MeshDistanceMaterial: 'distanceRGBA', - MeshNormalMaterial: 'normal', - MeshBasicMaterial: 'basic', - MeshLambertMaterial: 'lambert', - MeshPhongMaterial: 'phong', - MeshToonMaterial: 'phong', - MeshStandardMaterial: 'physical', - MeshPhysicalMaterial: 'physical', - MeshMatcapMaterial: 'matcap', - LineBasicMaterial: 'basic', - LineDashedMaterial: 'dashed', - PointsMaterial: 'points', - ShadowMaterial: 'shadow', - SpriteMaterial: 'sprite' - }; - - var parameterNames = [ - "precision", "supportsVertexTextures", "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", - "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "displacementMap", "specularMap", - "roughnessMap", "metalnessMap", "gradientMap", - "alphaMap", "combine", "vertexColors", "fog", "useFog", "fogExp", - "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", - "maxBones", "useVertexTexture", "morphTargets", "morphNormals", - "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", - "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", - "shadowMapEnabled", "shadowMapType", "toneMapping", 'physicallyCorrectLights', - "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering" - ]; - - - function allocateBones( object ) { - - var skeleton = object.skeleton; - var bones = skeleton.bones; - - if ( capabilities.floatVertexTextures ) { - - return 1024; - - } else { - - // default for when object is not specified - // ( for example when prebuilding shader to be used with multiple objects ) - // - // - leave some extra space for other uniforms - // - limit here is ANGLE's 254 max uniform vectors - // (up to 54 should be safe) - - var nVertexUniforms = capabilities.maxVertexUniforms; - var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); - - var maxBones = Math.min( nVertexMatrices, bones.length ); - - if ( maxBones < bones.length ) { - - console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); - return 0; - - } - - return maxBones; - - } - - } - - function getTextureEncodingFromMap( map, gammaOverrideLinear ) { - - var encoding; - - if ( ! map ) { - - encoding = LinearEncoding; - - } else if ( map.isTexture ) { - - encoding = map.encoding; - - } else if ( map.isWebGLRenderTarget ) { - - console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); - encoding = map.texture.encoding; - - } - - // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. - if ( encoding === LinearEncoding && gammaOverrideLinear ) { - - encoding = GammaEncoding; - - } - - return encoding; - - } - - this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { - - var shaderID = shaderIDs[ material.type ]; - - // heuristics to create shader parameters according to lights in the scene - // (not to blow over maxLights budget) - - var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; - var precision = capabilities.precision; - - if ( material.precision !== null ) { - - precision = capabilities.getMaxPrecision( material.precision ); - - if ( precision !== material.precision ) { - - console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); - - } - - } - - var currentRenderTarget = renderer.getRenderTarget(); - - var parameters = { - - shaderID: shaderID, - - precision: precision, - supportsVertexTextures: capabilities.vertexTextures, - outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), - map: !! material.map, - mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), - matcap: !! material.matcap, - matcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ), - envMap: !! material.envMap, - envMapMode: material.envMap && material.envMap.mapping, - envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), - envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), - lightMap: !! material.lightMap, - aoMap: !! material.aoMap, - emissiveMap: !! material.emissiveMap, - emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), - bumpMap: !! material.bumpMap, - normalMap: !! material.normalMap, - objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, - displacementMap: !! material.displacementMap, - roughnessMap: !! material.roughnessMap, - metalnessMap: !! material.metalnessMap, - specularMap: !! material.specularMap, - alphaMap: !! material.alphaMap, - - gradientMap: !! material.gradientMap, - - combine: material.combine, - - vertexColors: material.vertexColors, - - fog: !! fog, - useFog: material.fog, - fogExp: ( fog && fog.isFogExp2 ), - - flatShading: material.flatShading, - - sizeAttenuation: material.sizeAttenuation, - logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer, - - skinning: material.skinning && maxBones > 0, - maxBones: maxBones, - useVertexTexture: capabilities.floatVertexTextures, - - morphTargets: material.morphTargets, - morphNormals: material.morphNormals, - maxMorphTargets: renderer.maxMorphTargets, - maxMorphNormals: renderer.maxMorphNormals, - - numDirLights: lights.directional.length, - numPointLights: lights.point.length, - numSpotLights: lights.spot.length, - numRectAreaLights: lights.rectArea.length, - numHemiLights: lights.hemi.length, - - numClippingPlanes: nClipPlanes, - numClipIntersection: nClipIntersection, - - dithering: material.dithering, - - shadowMapEnabled: renderer.shadowMap.enabled && object.receiveShadow && shadows.length > 0, - shadowMapType: renderer.shadowMap.type, - - toneMapping: renderer.toneMapping, - physicallyCorrectLights: renderer.physicallyCorrectLights, - - premultipliedAlpha: material.premultipliedAlpha, - - alphaTest: material.alphaTest, - doubleSided: material.side === DoubleSide, - flipSided: material.side === BackSide, - - depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false - - }; - - return parameters; - - }; - - this.getProgramCode = function ( material, parameters ) { - - var array = []; - - if ( parameters.shaderID ) { - - array.push( parameters.shaderID ); - - } else { - - array.push( material.fragmentShader ); - array.push( material.vertexShader ); - - } - - if ( material.defines !== undefined ) { - - for ( var name in material.defines ) { - - array.push( name ); - array.push( material.defines[ name ] ); - - } - - } - - for ( var i = 0; i < parameterNames.length; i ++ ) { - - array.push( parameters[ parameterNames[ i ] ] ); - - } - - array.push( material.onBeforeCompile.toString() ); - - array.push( renderer.gammaOutput ); - - array.push( renderer.gammaFactor ); - - return array.join(); - - }; - - this.acquireProgram = function ( material, shader, parameters, code ) { - - var program; - - // Check if code has been already compiled - for ( var p = 0, pl = programs.length; p < pl; p ++ ) { - - var programInfo = programs[ p ]; - - if ( programInfo.code === code ) { - - program = programInfo; - ++ program.usedTimes; - - break; - - } - - } - - if ( program === undefined ) { - - program = new WebGLProgram( renderer, extensions, code, material, shader, parameters, capabilities ); - programs.push( program ); - - } - - return program; - - }; - - this.releaseProgram = function ( program ) { - - if ( -- program.usedTimes === 0 ) { - - // Remove from unordered set - var i = programs.indexOf( program ); - programs[ i ] = programs[ programs.length - 1 ]; - programs.pop(); - - // Free WebGL resources - program.destroy(); - - } - - }; - - // Exposed for resource monitoring & error feedback via renderer.info: - this.programs = programs; - - } - - /** - * @author fordacious / fordacious.github.io - */ - - function WebGLProperties() { - - var properties = new WeakMap(); - - function get( object ) { - - var map = properties.get( object ); - - if ( map === undefined ) { - - map = {}; - properties.set( object, map ); - - } - - return map; - - } - - function remove( object ) { - - properties.delete( object ); - - } - - function update( object, key, value ) { - - properties.get( object )[ key ] = value; - - } - - function dispose() { - - properties = new WeakMap(); - - } - - return { - get: get, - remove: remove, - update: update, - dispose: dispose - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function painterSortStable( a, b ) { - - if ( a.groupOrder !== b.groupOrder ) { - - return a.groupOrder - b.groupOrder; - - } else if ( a.renderOrder !== b.renderOrder ) { - - return a.renderOrder - b.renderOrder; - - } else if ( a.program && b.program && a.program !== b.program ) { - - return a.program.id - b.program.id; - - } else if ( a.material.id !== b.material.id ) { - - return a.material.id - b.material.id; - - } else if ( a.z !== b.z ) { - - return a.z - b.z; - - } else { - - return a.id - b.id; - - } - - } - - function reversePainterSortStable( a, b ) { - - if ( a.groupOrder !== b.groupOrder ) { - - return a.groupOrder - b.groupOrder; - - } else if ( a.renderOrder !== b.renderOrder ) { - - return a.renderOrder - b.renderOrder; - - } if ( a.z !== b.z ) { - - return b.z - a.z; - - } else { - - return a.id - b.id; - - } - - } - - - function WebGLRenderList() { - - var renderItems = []; - var renderItemsIndex = 0; - - var opaque = []; - var transparent = []; - - function init() { - - renderItemsIndex = 0; - - opaque.length = 0; - transparent.length = 0; - - } - - function getNextRenderItem( object, geometry, material, groupOrder, z, group ) { - - var renderItem = renderItems[ renderItemsIndex ]; - - if ( renderItem === undefined ) { - - renderItem = { - id: object.id, - object: object, - geometry: geometry, - material: material, - program: material.program, - groupOrder: groupOrder, - renderOrder: object.renderOrder, - z: z, - group: group - }; - - renderItems[ renderItemsIndex ] = renderItem; - - } else { - - renderItem.id = object.id; - renderItem.object = object; - renderItem.geometry = geometry; - renderItem.material = material; - renderItem.program = material.program; - renderItem.groupOrder = groupOrder; - renderItem.renderOrder = object.renderOrder; - renderItem.z = z; - renderItem.group = group; - - } - - renderItemsIndex ++; - - return renderItem; - - } - - function push( object, geometry, material, groupOrder, z, group ) { - - var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); - - ( material.transparent === true ? transparent : opaque ).push( renderItem ); - - } - - function unshift( object, geometry, material, groupOrder, z, group ) { - - var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); - - ( material.transparent === true ? transparent : opaque ).unshift( renderItem ); - - } - - function sort() { - - if ( opaque.length > 1 ) opaque.sort( painterSortStable ); - if ( transparent.length > 1 ) transparent.sort( reversePainterSortStable ); - - } - - return { - opaque: opaque, - transparent: transparent, - - init: init, - push: push, - unshift: unshift, - - sort: sort - }; - - } - - function WebGLRenderLists() { - - var lists = {}; - - function onSceneDispose( event ) { - - var scene = event.target; - - scene.removeEventListener( 'dispose', onSceneDispose ); - - delete lists[ scene.id ]; - - } - - function get( scene, camera ) { - - var cameras = lists[ scene.id ]; - var list; - if ( cameras === undefined ) { - - list = new WebGLRenderList(); - lists[ scene.id ] = {}; - lists[ scene.id ][ camera.id ] = list; - - scene.addEventListener( 'dispose', onSceneDispose ); - - } else { - - list = cameras[ camera.id ]; - if ( list === undefined ) { - - list = new WebGLRenderList(); - cameras[ camera.id ] = list; - - } - - } - - return list; - - } - - function dispose() { - - lists = {}; - - } - - return { - get: get, - dispose: dispose - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function UniformsCache() { - - var lights = {}; - - return { - - get: function ( light ) { - - if ( lights[ light.id ] !== undefined ) { - - return lights[ light.id ]; - - } - - var uniforms; - - switch ( light.type ) { - - case 'DirectionalLight': - uniforms = { - direction: new Vector3(), - color: new Color(), - - shadow: false, - shadowBias: 0, - shadowRadius: 1, - shadowMapSize: new Vector2() - }; - break; - - case 'SpotLight': - uniforms = { - position: new Vector3(), - direction: new Vector3(), - color: new Color(), - distance: 0, - coneCos: 0, - penumbraCos: 0, - decay: 0, - - shadow: false, - shadowBias: 0, - shadowRadius: 1, - shadowMapSize: new Vector2() - }; - break; - - case 'PointLight': - uniforms = { - position: new Vector3(), - color: new Color(), - distance: 0, - decay: 0, - - shadow: false, - shadowBias: 0, - shadowRadius: 1, - shadowMapSize: new Vector2(), - shadowCameraNear: 1, - shadowCameraFar: 1000 - }; - break; - - case 'HemisphereLight': - uniforms = { - direction: new Vector3(), - skyColor: new Color(), - groundColor: new Color() - }; - break; - - case 'RectAreaLight': - uniforms = { - color: new Color(), - position: new Vector3(), - halfWidth: new Vector3(), - halfHeight: new Vector3() - // TODO (abelnation): set RectAreaLight shadow uniforms - }; - break; - - } - - lights[ light.id ] = uniforms; - - return uniforms; - - } - - }; - - } - - var count = 0; - - function WebGLLights() { - - var cache = new UniformsCache(); - - var state = { - - id: count ++, - - hash: { - stateID: - 1, - directionalLength: - 1, - pointLength: - 1, - spotLength: - 1, - rectAreaLength: - 1, - hemiLength: - 1, - shadowsLength: - 1 - }, - - ambient: [ 0, 0, 0 ], - directional: [], - directionalShadowMap: [], - directionalShadowMatrix: [], - spot: [], - spotShadowMap: [], - spotShadowMatrix: [], - rectArea: [], - point: [], - pointShadowMap: [], - pointShadowMatrix: [], - hemi: [] - - }; - - var vector3 = new Vector3(); - var matrix4 = new Matrix4(); - var matrix42 = new Matrix4(); - - function setup( lights, shadows, camera ) { - - var r = 0, g = 0, b = 0; - - var directionalLength = 0; - var pointLength = 0; - var spotLength = 0; - var rectAreaLength = 0; - var hemiLength = 0; - - var viewMatrix = camera.matrixWorldInverse; - - for ( var i = 0, l = lights.length; i < l; i ++ ) { - - var light = lights[ i ]; - - var color = light.color; - var intensity = light.intensity; - var distance = light.distance; - - var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; - - if ( light.isAmbientLight ) { - - r += color.r * intensity; - g += color.g * intensity; - b += color.b * intensity; - - } else if ( light.isDirectionalLight ) { - - var uniforms = cache.get( light ); - - uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - vector3.setFromMatrixPosition( light.target.matrixWorld ); - uniforms.direction.sub( vector3 ); - uniforms.direction.transformDirection( viewMatrix ); - - uniforms.shadow = light.castShadow; - - if ( light.castShadow ) { - - var shadow = light.shadow; - - uniforms.shadowBias = shadow.bias; - uniforms.shadowRadius = shadow.radius; - uniforms.shadowMapSize = shadow.mapSize; - - } - - state.directionalShadowMap[ directionalLength ] = shadowMap; - state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; - state.directional[ directionalLength ] = uniforms; - - directionalLength ++; - - } else if ( light.isSpotLight ) { - - var uniforms = cache.get( light ); - - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); - - uniforms.color.copy( color ).multiplyScalar( intensity ); - uniforms.distance = distance; - - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - vector3.setFromMatrixPosition( light.target.matrixWorld ); - uniforms.direction.sub( vector3 ); - uniforms.direction.transformDirection( viewMatrix ); - - uniforms.coneCos = Math.cos( light.angle ); - uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); - uniforms.decay = light.decay; - - uniforms.shadow = light.castShadow; - - if ( light.castShadow ) { - - var shadow = light.shadow; - - uniforms.shadowBias = shadow.bias; - uniforms.shadowRadius = shadow.radius; - uniforms.shadowMapSize = shadow.mapSize; - - } - - state.spotShadowMap[ spotLength ] = shadowMap; - state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; - state.spot[ spotLength ] = uniforms; - - spotLength ++; - - } else if ( light.isRectAreaLight ) { - - var uniforms = cache.get( light ); - - // (a) intensity is the total visible light emitted - //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); - - // (b) intensity is the brightness of the light - uniforms.color.copy( color ).multiplyScalar( intensity ); - - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); - - // extract local rotation of light to derive width/height half vectors - matrix42.identity(); - matrix4.copy( light.matrixWorld ); - matrix4.premultiply( viewMatrix ); - matrix42.extractRotation( matrix4 ); - - uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); - uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); - - uniforms.halfWidth.applyMatrix4( matrix42 ); - uniforms.halfHeight.applyMatrix4( matrix42 ); - - // TODO (abelnation): RectAreaLight distance? - // uniforms.distance = distance; - - state.rectArea[ rectAreaLength ] = uniforms; - - rectAreaLength ++; - - } else if ( light.isPointLight ) { - - var uniforms = cache.get( light ); - - uniforms.position.setFromMatrixPosition( light.matrixWorld ); - uniforms.position.applyMatrix4( viewMatrix ); - - uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); - uniforms.distance = light.distance; - uniforms.decay = light.decay; - - uniforms.shadow = light.castShadow; - - if ( light.castShadow ) { - - var shadow = light.shadow; - - uniforms.shadowBias = shadow.bias; - uniforms.shadowRadius = shadow.radius; - uniforms.shadowMapSize = shadow.mapSize; - uniforms.shadowCameraNear = shadow.camera.near; - uniforms.shadowCameraFar = shadow.camera.far; - - } - - state.pointShadowMap[ pointLength ] = shadowMap; - state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; - state.point[ pointLength ] = uniforms; - - pointLength ++; - - } else if ( light.isHemisphereLight ) { - - var uniforms = cache.get( light ); - - uniforms.direction.setFromMatrixPosition( light.matrixWorld ); - uniforms.direction.transformDirection( viewMatrix ); - uniforms.direction.normalize(); - - uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); - uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); - - state.hemi[ hemiLength ] = uniforms; - - hemiLength ++; - - } - - } - - state.ambient[ 0 ] = r; - state.ambient[ 1 ] = g; - state.ambient[ 2 ] = b; - - state.directional.length = directionalLength; - state.spot.length = spotLength; - state.rectArea.length = rectAreaLength; - state.point.length = pointLength; - state.hemi.length = hemiLength; - - state.hash.stateID = state.id; - state.hash.directionalLength = directionalLength; - state.hash.pointLength = pointLength; - state.hash.spotLength = spotLength; - state.hash.rectAreaLength = rectAreaLength; - state.hash.hemiLength = hemiLength; - state.hash.shadowsLength = shadows.length; - - } - - return { - setup: setup, - state: state - }; - - } - - /** - * @author Mugen87 / https://github.com/Mugen87 - */ - - function WebGLRenderState() { - - var lights = new WebGLLights(); - - var lightsArray = []; - var shadowsArray = []; - - function init() { - - lightsArray.length = 0; - shadowsArray.length = 0; - - } - - function pushLight( light ) { - - lightsArray.push( light ); - - } - - function pushShadow( shadowLight ) { - - shadowsArray.push( shadowLight ); - - } - - function setupLights( camera ) { - - lights.setup( lightsArray, shadowsArray, camera ); - - } - - var state = { - lightsArray: lightsArray, - shadowsArray: shadowsArray, - - lights: lights - }; - - return { - init: init, - state: state, - setupLights: setupLights, - - pushLight: pushLight, - pushShadow: pushShadow - }; - - } - - function WebGLRenderStates() { - - var renderStates = {}; - - function onSceneDispose( event ) { - - var scene = event.target; - - scene.removeEventListener( 'dispose', onSceneDispose ); - - delete renderStates[ scene.id ]; - - } - - function get( scene, camera ) { - - var renderState; - - if ( renderStates[ scene.id ] === undefined ) { - - renderState = new WebGLRenderState(); - renderStates[ scene.id ] = {}; - renderStates[ scene.id ][ camera.id ] = renderState; - - scene.addEventListener( 'dispose', onSceneDispose ); - - } else { - - if ( renderStates[ scene.id ][ camera.id ] === undefined ) { - - renderState = new WebGLRenderState(); - renderStates[ scene.id ][ camera.id ] = renderState; - - } else { - - renderState = renderStates[ scene.id ][ camera.id ]; - - } - - } - - return renderState; - - } - - function dispose() { - - renderStates = {}; - - } - - return { - get: get, - dispose: dispose - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author bhouston / https://clara.io - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * - * opacity: , - * - * map: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * wireframe: , - * wireframeLinewidth: - * } - */ - - function MeshDepthMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshDepthMaterial'; - - this.depthPacking = BasicDepthPacking; - - this.skinning = false; - this.morphTargets = false; - - this.map = null; - - this.alphaMap = null; - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.wireframe = false; - this.wireframeLinewidth = 1; - - this.fog = false; - this.lights = false; - - this.setValues( parameters ); - - } - - MeshDepthMaterial.prototype = Object.create( Material.prototype ); - MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; - - MeshDepthMaterial.prototype.isMeshDepthMaterial = true; - - MeshDepthMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.depthPacking = source.depthPacking; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - - this.map = source.map; - - this.alphaMap = source.alphaMap; - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - - return this; - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * - * referencePosition: , - * nearDistance: , - * farDistance: , - * - * skinning: , - * morphTargets: , - * - * map: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: - * - * } - */ - - function MeshDistanceMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshDistanceMaterial'; - - this.referencePosition = new Vector3(); - this.nearDistance = 1; - this.farDistance = 1000; - - this.skinning = false; - this.morphTargets = false; - - this.map = null; - - this.alphaMap = null; - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.fog = false; - this.lights = false; - - this.setValues( parameters ); - - } - - MeshDistanceMaterial.prototype = Object.create( Material.prototype ); - MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; - - MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; - - MeshDistanceMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.referencePosition.copy( source.referencePosition ); - this.nearDistance = source.nearDistance; - this.farDistance = source.farDistance; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - - this.map = source.map; - - this.alphaMap = source.alphaMap; - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - return this; - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { - - var _frustum = new Frustum(), - _projScreenMatrix = new Matrix4(), - - _shadowMapSize = new Vector2(), - _maxShadowMapSize = new Vector2( maxTextureSize, maxTextureSize ), - - _lookTarget = new Vector3(), - _lightPositionWorld = new Vector3(), - - _MorphingFlag = 1, - _SkinningFlag = 2, - - _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, - - _depthMaterials = new Array( _NumberOfMaterialVariants ), - _distanceMaterials = new Array( _NumberOfMaterialVariants ), - - _materialCache = {}; - - var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide }; - - var cubeDirections = [ - new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), - new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) - ]; - - var cubeUps = [ - new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), - new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) - ]; - - var cube2DViewPorts = [ - new Vector4(), new Vector4(), new Vector4(), - new Vector4(), new Vector4(), new Vector4() - ]; - - // init - - for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { - - var useMorphing = ( i & _MorphingFlag ) !== 0; - var useSkinning = ( i & _SkinningFlag ) !== 0; - - var depthMaterial = new MeshDepthMaterial( { - - depthPacking: RGBADepthPacking, - - morphTargets: useMorphing, - skinning: useSkinning - - } ); - - _depthMaterials[ i ] = depthMaterial; - - // - - var distanceMaterial = new MeshDistanceMaterial( { - - morphTargets: useMorphing, - skinning: useSkinning - - } ); - - _distanceMaterials[ i ] = distanceMaterial; - - } - - // - - var scope = this; - - this.enabled = false; - - this.autoUpdate = true; - this.needsUpdate = false; - - this.type = PCFShadowMap; - - this.render = function ( lights, scene, camera ) { - - if ( scope.enabled === false ) return; - if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; - - if ( lights.length === 0 ) return; - - var _state = _renderer.state; - - // Set GL state for depth map. - _state.setBlending( NoBlending ); - _state.buffers.color.setClear( 1, 1, 1, 1 ); - _state.buffers.depth.setTest( true ); - _state.setScissorTest( false ); - - // render depth map - - var faceCount; - - for ( var i = 0, il = lights.length; i < il; i ++ ) { - - var light = lights[ i ]; - var shadow = light.shadow; - var isPointLight = light && light.isPointLight; - - if ( shadow === undefined ) { - - console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); - continue; - - } - - var shadowCamera = shadow.camera; - - _shadowMapSize.copy( shadow.mapSize ); - _shadowMapSize.min( _maxShadowMapSize ); - - if ( isPointLight ) { - - var vpWidth = _shadowMapSize.x; - var vpHeight = _shadowMapSize.y; - - // These viewports map a cube-map onto a 2D texture with the - // following orientation: - // - // xzXZ - // y Y - // - // X - Positive x direction - // x - Negative x direction - // Y - Positive y direction - // y - Negative y direction - // Z - Positive z direction - // z - Negative z direction - - // positive X - cube2DViewPorts[ 0 ].set( vpWidth * 2, vpHeight, vpWidth, vpHeight ); - // negative X - cube2DViewPorts[ 1 ].set( 0, vpHeight, vpWidth, vpHeight ); - // positive Z - cube2DViewPorts[ 2 ].set( vpWidth * 3, vpHeight, vpWidth, vpHeight ); - // negative Z - cube2DViewPorts[ 3 ].set( vpWidth, vpHeight, vpWidth, vpHeight ); - // positive Y - cube2DViewPorts[ 4 ].set( vpWidth * 3, 0, vpWidth, vpHeight ); - // negative Y - cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight ); - - _shadowMapSize.x *= 4.0; - _shadowMapSize.y *= 2.0; - - } - - if ( shadow.map === null ) { - - var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; - - shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); - shadow.map.texture.name = light.name + ".shadowMap"; - - shadowCamera.updateProjectionMatrix(); - - } - - if ( shadow.isSpotLightShadow ) { - - shadow.update( light ); - - } - - var shadowMap = shadow.map; - var shadowMatrix = shadow.matrix; - - _lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); - shadowCamera.position.copy( _lightPositionWorld ); - - if ( isPointLight ) { - - faceCount = 6; - - // for point lights we set the shadow matrix to be a translation-only matrix - // equal to inverse of the light's position - - shadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z ); - - } else { - - faceCount = 1; - - _lookTarget.setFromMatrixPosition( light.target.matrixWorld ); - shadowCamera.lookAt( _lookTarget ); - shadowCamera.updateMatrixWorld(); - - // compute shadow matrix - - shadowMatrix.set( - 0.5, 0.0, 0.0, 0.5, - 0.0, 0.5, 0.0, 0.5, - 0.0, 0.0, 0.5, 0.5, - 0.0, 0.0, 0.0, 1.0 - ); - - shadowMatrix.multiply( shadowCamera.projectionMatrix ); - shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); - - } - - _renderer.setRenderTarget( shadowMap ); - _renderer.clear(); - - // render shadow map for each cube face (if omni-directional) or - // run a single pass if not - - for ( var face = 0; face < faceCount; face ++ ) { - - if ( isPointLight ) { - - _lookTarget.copy( shadowCamera.position ); - _lookTarget.add( cubeDirections[ face ] ); - shadowCamera.up.copy( cubeUps[ face ] ); - shadowCamera.lookAt( _lookTarget ); - shadowCamera.updateMatrixWorld(); - - var vpDimensions = cube2DViewPorts[ face ]; - _state.viewport( vpDimensions ); - - } - - // update camera matrices and frustum - - _projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); - _frustum.setFromMatrix( _projScreenMatrix ); - - // set object matrices & frustum culling - - renderObject( scene, camera, shadowCamera, isPointLight ); - - } - - } - - scope.needsUpdate = false; - - }; - - function getDepthMaterial( object, material, isPointLight, lightPositionWorld, shadowCameraNear, shadowCameraFar ) { - - var geometry = object.geometry; - - var result = null; - - var materialVariants = _depthMaterials; - var customMaterial = object.customDepthMaterial; - - if ( isPointLight ) { - - materialVariants = _distanceMaterials; - customMaterial = object.customDistanceMaterial; - - } - - if ( ! customMaterial ) { - - var useMorphing = false; - - if ( material.morphTargets ) { - - if ( geometry && geometry.isBufferGeometry ) { - - useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; - - } else if ( geometry && geometry.isGeometry ) { - - useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; - - } - - } - - if ( object.isSkinnedMesh && material.skinning === false ) { - - console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); - - } - - var useSkinning = object.isSkinnedMesh && material.skinning; - - var variantIndex = 0; - - if ( useMorphing ) variantIndex |= _MorphingFlag; - if ( useSkinning ) variantIndex |= _SkinningFlag; - - result = materialVariants[ variantIndex ]; - - } else { - - result = customMaterial; - - } - - if ( _renderer.localClippingEnabled && - material.clipShadows === true && - material.clippingPlanes.length !== 0 ) { - - // in this case we need a unique material instance reflecting the - // appropriate state - - var keyA = result.uuid, keyB = material.uuid; - - var materialsForVariant = _materialCache[ keyA ]; - - if ( materialsForVariant === undefined ) { - - materialsForVariant = {}; - _materialCache[ keyA ] = materialsForVariant; - - } - - var cachedMaterial = materialsForVariant[ keyB ]; - - if ( cachedMaterial === undefined ) { - - cachedMaterial = result.clone(); - materialsForVariant[ keyB ] = cachedMaterial; - - } - - result = cachedMaterial; - - } - - result.visible = material.visible; - result.wireframe = material.wireframe; - - result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ]; - - result.clipShadows = material.clipShadows; - result.clippingPlanes = material.clippingPlanes; - result.clipIntersection = material.clipIntersection; - - result.wireframeLinewidth = material.wireframeLinewidth; - result.linewidth = material.linewidth; - - if ( isPointLight && result.isMeshDistanceMaterial ) { - - result.referencePosition.copy( lightPositionWorld ); - result.nearDistance = shadowCameraNear; - result.farDistance = shadowCameraFar; - - } - - return result; - - } - - function renderObject( object, camera, shadowCamera, isPointLight ) { - - if ( object.visible === false ) return; - - var visible = object.layers.test( camera.layers ); - - if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { - - if ( object.castShadow && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { - - object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); - - var geometry = _objects.update( object ); - var material = object.material; - - if ( Array.isArray( material ) ) { - - var groups = geometry.groups; - - for ( var k = 0, kl = groups.length; k < kl; k ++ ) { - - var group = groups[ k ]; - var groupMaterial = material[ group.materialIndex ]; - - if ( groupMaterial && groupMaterial.visible ) { - - var depthMaterial = getDepthMaterial( object, groupMaterial, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); - _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); - - } - - } - - } else if ( material.visible ) { - - var depthMaterial = getDepthMaterial( object, material, isPointLight, _lightPositionWorld, shadowCamera.near, shadowCamera.far ); - _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); - - } - - } - - } - - var children = object.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - renderObject( children[ i ], camera, shadowCamera, isPointLight ); - - } - - } - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLState( gl, extensions, utils, capabilities ) { - - function ColorBuffer() { - - var locked = false; - - var color = new Vector4(); - var currentColorMask = null; - var currentColorClear = new Vector4( 0, 0, 0, 0 ); - - return { - - setMask: function ( colorMask ) { - - if ( currentColorMask !== colorMask && ! locked ) { - - gl.colorMask( colorMask, colorMask, colorMask, colorMask ); - currentColorMask = colorMask; - - } - - }, - - setLocked: function ( lock ) { - - locked = lock; - - }, - - setClear: function ( r, g, b, a, premultipliedAlpha ) { - - if ( premultipliedAlpha === true ) { - - r *= a; g *= a; b *= a; - - } - - color.set( r, g, b, a ); - - if ( currentColorClear.equals( color ) === false ) { - - gl.clearColor( r, g, b, a ); - currentColorClear.copy( color ); - - } - - }, - - reset: function () { - - locked = false; - - currentColorMask = null; - currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state - - } - - }; - - } - - function DepthBuffer() { - - var locked = false; - - var currentDepthMask = null; - var currentDepthFunc = null; - var currentDepthClear = null; - - return { - - setTest: function ( depthTest ) { - - if ( depthTest ) { - - enable( 2929 ); - - } else { - - disable( 2929 ); - - } - - }, - - setMask: function ( depthMask ) { - - if ( currentDepthMask !== depthMask && ! locked ) { - - gl.depthMask( depthMask ); - currentDepthMask = depthMask; - - } - - }, - - setFunc: function ( depthFunc ) { - - if ( currentDepthFunc !== depthFunc ) { - - if ( depthFunc ) { - - switch ( depthFunc ) { - - case NeverDepth: - - gl.depthFunc( 512 ); - break; - - case AlwaysDepth: - - gl.depthFunc( 519 ); - break; - - case LessDepth: - - gl.depthFunc( 513 ); - break; - - case LessEqualDepth: - - gl.depthFunc( 515 ); - break; - - case EqualDepth: - - gl.depthFunc( 514 ); - break; - - case GreaterEqualDepth: - - gl.depthFunc( 518 ); - break; - - case GreaterDepth: - - gl.depthFunc( 516 ); - break; - - case NotEqualDepth: - - gl.depthFunc( 517 ); - break; - - default: - - gl.depthFunc( 515 ); - - } - - } else { - - gl.depthFunc( 515 ); - - } - - currentDepthFunc = depthFunc; - - } - - }, - - setLocked: function ( lock ) { - - locked = lock; - - }, - - setClear: function ( depth ) { - - if ( currentDepthClear !== depth ) { - - gl.clearDepth( depth ); - currentDepthClear = depth; - - } - - }, - - reset: function () { - - locked = false; - - currentDepthMask = null; - currentDepthFunc = null; - currentDepthClear = null; - - } - - }; - - } - - function StencilBuffer() { - - var locked = false; - - var currentStencilMask = null; - var currentStencilFunc = null; - var currentStencilRef = null; - var currentStencilFuncMask = null; - var currentStencilFail = null; - var currentStencilZFail = null; - var currentStencilZPass = null; - var currentStencilClear = null; - - return { - - setTest: function ( stencilTest ) { - - if ( stencilTest ) { - - enable( 2960 ); - - } else { - - disable( 2960 ); - - } - - }, - - setMask: function ( stencilMask ) { - - if ( currentStencilMask !== stencilMask && ! locked ) { - - gl.stencilMask( stencilMask ); - currentStencilMask = stencilMask; - - } - - }, - - setFunc: function ( stencilFunc, stencilRef, stencilMask ) { - - if ( currentStencilFunc !== stencilFunc || - currentStencilRef !== stencilRef || - currentStencilFuncMask !== stencilMask ) { - - gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); - - currentStencilFunc = stencilFunc; - currentStencilRef = stencilRef; - currentStencilFuncMask = stencilMask; - - } - - }, - - setOp: function ( stencilFail, stencilZFail, stencilZPass ) { - - if ( currentStencilFail !== stencilFail || - currentStencilZFail !== stencilZFail || - currentStencilZPass !== stencilZPass ) { - - gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); - - currentStencilFail = stencilFail; - currentStencilZFail = stencilZFail; - currentStencilZPass = stencilZPass; - - } - - }, - - setLocked: function ( lock ) { - - locked = lock; - - }, - - setClear: function ( stencil ) { - - if ( currentStencilClear !== stencil ) { - - gl.clearStencil( stencil ); - currentStencilClear = stencil; - - } - - }, - - reset: function () { - - locked = false; - - currentStencilMask = null; - currentStencilFunc = null; - currentStencilRef = null; - currentStencilFuncMask = null; - currentStencilFail = null; - currentStencilZFail = null; - currentStencilZPass = null; - currentStencilClear = null; - - } - - }; - - } - - // - - var colorBuffer = new ColorBuffer(); - var depthBuffer = new DepthBuffer(); - var stencilBuffer = new StencilBuffer(); - - var maxVertexAttributes = gl.getParameter( 34921 ); - var newAttributes = new Uint8Array( maxVertexAttributes ); - var enabledAttributes = new Uint8Array( maxVertexAttributes ); - var attributeDivisors = new Uint8Array( maxVertexAttributes ); - - var enabledCapabilities = {}; - - var compressedTextureFormats = null; - - var currentProgram = null; - - var currentBlendingEnabled = null; - var currentBlending = null; - var currentBlendEquation = null; - var currentBlendSrc = null; - var currentBlendDst = null; - var currentBlendEquationAlpha = null; - var currentBlendSrcAlpha = null; - var currentBlendDstAlpha = null; - var currentPremultipledAlpha = false; - - var currentFlipSided = null; - var currentCullFace = null; - - var currentLineWidth = null; - - var currentPolygonOffsetFactor = null; - var currentPolygonOffsetUnits = null; - - var maxTextures = gl.getParameter( 35661 ); - - var lineWidthAvailable = false; - var version = 0; - var glVersion = gl.getParameter( 7938 ); - - if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) { - - version = parseFloat( /^WebGL\ ([0-9])/.exec( glVersion )[ 1 ] ); - lineWidthAvailable = ( version >= 1.0 ); - - } else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) { - - version = parseFloat( /^OpenGL\ ES\ ([0-9])/.exec( glVersion )[ 1 ] ); - lineWidthAvailable = ( version >= 2.0 ); - - } - - var currentTextureSlot = null; - var currentBoundTextures = {}; - - var currentScissor = new Vector4(); - var currentViewport = new Vector4(); - - function createTexture( type, target, count ) { - - var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. - var texture = gl.createTexture(); - - gl.bindTexture( type, texture ); - gl.texParameteri( type, 10241, 9728 ); - gl.texParameteri( type, 10240, 9728 ); - - for ( var i = 0; i < count; i ++ ) { - - gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data ); - - } - - return texture; - - } - - var emptyTextures = {}; - emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 ); - emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 ); - - // init - - colorBuffer.setClear( 0, 0, 0, 1 ); - depthBuffer.setClear( 1 ); - stencilBuffer.setClear( 0 ); - - enable( 2929 ); - depthBuffer.setFunc( LessEqualDepth ); - - setFlipSided( false ); - setCullFace( CullFaceBack ); - enable( 2884 ); - - setBlending( NoBlending ); - - // - - function initAttributes() { - - for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { - - newAttributes[ i ] = 0; - - } - - } - - function enableAttribute( attribute ) { - - enableAttributeAndDivisor( attribute, 0 ); - - } - - function enableAttributeAndDivisor( attribute, meshPerAttribute ) { - - newAttributes[ attribute ] = 1; - - if ( enabledAttributes[ attribute ] === 0 ) { - - gl.enableVertexAttribArray( attribute ); - enabledAttributes[ attribute ] = 1; - - } - - if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { - - var extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' ); - - extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute ); - attributeDivisors[ attribute ] = meshPerAttribute; - - } - - } - - function disableUnusedAttributes() { - - for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { - - if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { - - gl.disableVertexAttribArray( i ); - enabledAttributes[ i ] = 0; - - } - - } - - } - - function enable( id ) { - - if ( enabledCapabilities[ id ] !== true ) { - - gl.enable( id ); - enabledCapabilities[ id ] = true; - - } - - } - - function disable( id ) { - - if ( enabledCapabilities[ id ] !== false ) { - - gl.disable( id ); - enabledCapabilities[ id ] = false; - - } - - } - - function getCompressedTextureFormats() { - - if ( compressedTextureFormats === null ) { - - compressedTextureFormats = []; - - if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || - extensions.get( 'WEBGL_compressed_texture_s3tc' ) || - extensions.get( 'WEBGL_compressed_texture_etc1' ) || - extensions.get( 'WEBGL_compressed_texture_astc' ) ) { - - var formats = gl.getParameter( 34467 ); - - for ( var i = 0; i < formats.length; i ++ ) { - - compressedTextureFormats.push( formats[ i ] ); - - } - - } - - } - - return compressedTextureFormats; - - } - - function useProgram( program ) { - - if ( currentProgram !== program ) { - - gl.useProgram( program ); - - currentProgram = program; - - return true; - - } - - return false; - - } - - function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { - - if ( blending === NoBlending ) { - - if ( currentBlendingEnabled ) { - - disable( 3042 ); - currentBlendingEnabled = false; - - } - - return; - - } - - if ( ! currentBlendingEnabled ) { - - enable( 3042 ); - currentBlendingEnabled = true; - - } - - if ( blending !== CustomBlending ) { - - if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { - - if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { - - gl.blendEquation( 32774 ); - - currentBlendEquation = AddEquation; - currentBlendEquationAlpha = AddEquation; - - } - - if ( premultipliedAlpha ) { - - switch ( blending ) { - - case NormalBlending: - gl.blendFuncSeparate( 1, 771, 1, 771 ); - break; - - case AdditiveBlending: - gl.blendFunc( 1, 1 ); - break; - - case SubtractiveBlending: - gl.blendFuncSeparate( 0, 0, 769, 771 ); - break; - - case MultiplyBlending: - gl.blendFuncSeparate( 0, 768, 0, 770 ); - break; - - default: - console.error( 'THREE.WebGLState: Invalid blending: ', blending ); - break; - - } - - } else { - - switch ( blending ) { - - case NormalBlending: - gl.blendFuncSeparate( 770, 771, 1, 771 ); - break; - - case AdditiveBlending: - gl.blendFunc( 770, 1 ); - break; - - case SubtractiveBlending: - gl.blendFunc( 0, 769 ); - break; - - case MultiplyBlending: - gl.blendFunc( 0, 768 ); - break; - - default: - console.error( 'THREE.WebGLState: Invalid blending: ', blending ); - break; - - } - - } - - currentBlendSrc = null; - currentBlendDst = null; - currentBlendSrcAlpha = null; - currentBlendDstAlpha = null; - - currentBlending = blending; - currentPremultipledAlpha = premultipliedAlpha; - - } - - return; - - } - - // custom blending - - blendEquationAlpha = blendEquationAlpha || blendEquation; - blendSrcAlpha = blendSrcAlpha || blendSrc; - blendDstAlpha = blendDstAlpha || blendDst; - - if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { - - gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); - - currentBlendEquation = blendEquation; - currentBlendEquationAlpha = blendEquationAlpha; - - } - - if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { - - gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); - - currentBlendSrc = blendSrc; - currentBlendDst = blendDst; - currentBlendSrcAlpha = blendSrcAlpha; - currentBlendDstAlpha = blendDstAlpha; - - } - - currentBlending = blending; - currentPremultipledAlpha = null; - - } - - function setMaterial( material, frontFaceCW ) { - - material.side === DoubleSide - ? disable( 2884 ) - : enable( 2884 ); - - var flipSided = ( material.side === BackSide ); - if ( frontFaceCW ) flipSided = ! flipSided; - - setFlipSided( flipSided ); - - ( material.blending === NormalBlending && material.transparent === false ) - ? setBlending( NoBlending ) - : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); - - depthBuffer.setFunc( material.depthFunc ); - depthBuffer.setTest( material.depthTest ); - depthBuffer.setMask( material.depthWrite ); - colorBuffer.setMask( material.colorWrite ); - - setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); - - } - - // - - function setFlipSided( flipSided ) { - - if ( currentFlipSided !== flipSided ) { - - if ( flipSided ) { - - gl.frontFace( 2304 ); - - } else { - - gl.frontFace( 2305 ); - - } - - currentFlipSided = flipSided; - - } - - } - - function setCullFace( cullFace ) { - - if ( cullFace !== CullFaceNone ) { - - enable( 2884 ); - - if ( cullFace !== currentCullFace ) { - - if ( cullFace === CullFaceBack ) { - - gl.cullFace( 1029 ); - - } else if ( cullFace === CullFaceFront ) { - - gl.cullFace( 1028 ); - - } else { - - gl.cullFace( 1032 ); - - } - - } - - } else { - - disable( 2884 ); - - } - - currentCullFace = cullFace; - - } - - function setLineWidth( width ) { - - if ( width !== currentLineWidth ) { - - if ( lineWidthAvailable ) gl.lineWidth( width ); - - currentLineWidth = width; - - } - - } - - function setPolygonOffset( polygonOffset, factor, units ) { - - if ( polygonOffset ) { - - enable( 32823 ); - - if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { - - gl.polygonOffset( factor, units ); - - currentPolygonOffsetFactor = factor; - currentPolygonOffsetUnits = units; - - } - - } else { - - disable( 32823 ); - - } - - } - - function setScissorTest( scissorTest ) { - - if ( scissorTest ) { - - enable( 3089 ); - - } else { - - disable( 3089 ); - - } - - } - - // texture - - function activeTexture( webglSlot ) { - - if ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1; - - if ( currentTextureSlot !== webglSlot ) { - - gl.activeTexture( webglSlot ); - currentTextureSlot = webglSlot; - - } - - } - - function bindTexture( webglType, webglTexture ) { - - if ( currentTextureSlot === null ) { - - activeTexture(); - - } - - var boundTexture = currentBoundTextures[ currentTextureSlot ]; - - if ( boundTexture === undefined ) { - - boundTexture = { type: undefined, texture: undefined }; - currentBoundTextures[ currentTextureSlot ] = boundTexture; - - } - - if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { - - gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); - - boundTexture.type = webglType; - boundTexture.texture = webglTexture; - - } - - } - - function compressedTexImage2D() { - - try { - - gl.compressedTexImage2D.apply( gl, arguments ); - - } catch ( error ) { - - console.error( 'THREE.WebGLState:', error ); - - } - - } - - function texImage2D() { - - try { - - gl.texImage2D.apply( gl, arguments ); - - } catch ( error ) { - - console.error( 'THREE.WebGLState:', error ); - - } - - } - - function texImage3D() { - - try { - - gl.texImage3D.apply( gl, arguments ); - - } catch ( error ) { - - console.error( 'THREE.WebGLState:', error ); - - } - - } - - // - - function scissor( scissor ) { - - if ( currentScissor.equals( scissor ) === false ) { - - gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); - currentScissor.copy( scissor ); - - } - - } - - function viewport( viewport ) { - - if ( currentViewport.equals( viewport ) === false ) { - - gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); - currentViewport.copy( viewport ); - - } - - } - - // - - function reset() { - - for ( var i = 0; i < enabledAttributes.length; i ++ ) { - - if ( enabledAttributes[ i ] === 1 ) { - - gl.disableVertexAttribArray( i ); - enabledAttributes[ i ] = 0; - - } - - } - - enabledCapabilities = {}; - - compressedTextureFormats = null; - - currentTextureSlot = null; - currentBoundTextures = {}; - - currentProgram = null; - - currentBlending = null; - - currentFlipSided = null; - currentCullFace = null; - - colorBuffer.reset(); - depthBuffer.reset(); - stencilBuffer.reset(); - - } - - return { - - buffers: { - color: colorBuffer, - depth: depthBuffer, - stencil: stencilBuffer - }, - - initAttributes: initAttributes, - enableAttribute: enableAttribute, - enableAttributeAndDivisor: enableAttributeAndDivisor, - disableUnusedAttributes: disableUnusedAttributes, - enable: enable, - disable: disable, - getCompressedTextureFormats: getCompressedTextureFormats, - - useProgram: useProgram, - - setBlending: setBlending, - setMaterial: setMaterial, - - setFlipSided: setFlipSided, - setCullFace: setCullFace, - - setLineWidth: setLineWidth, - setPolygonOffset: setPolygonOffset, - - setScissorTest: setScissorTest, - - activeTexture: activeTexture, - bindTexture: bindTexture, - compressedTexImage2D: compressedTexImage2D, - texImage2D: texImage2D, - texImage3D: texImage3D, - - scissor: scissor, - viewport: viewport, - - reset: reset - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { - - var _videoTextures = {}; - var _canvas; - - // - - function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) { - - var scale = 1; - - // handle case if texture exceeds max size - - if ( image.width > maxSize || image.height > maxSize ) { - - scale = maxSize / Math.max( image.width, image.height ); - - } - - // only perform resize if necessary - - if ( scale < 1 || needsPowerOfTwo === true ) { - - // only perform resize for certain image types - - if ( image instanceof HTMLImageElement || image instanceof HTMLCanvasElement || image instanceof ImageBitmap ) { - - if ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); - - // cube textures can't reuse the same canvas - - var canvas = needsNewCanvas ? document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ) : _canvas; - - var floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor; - - canvas.width = floor( scale * image.width ); - canvas.height = floor( scale * image.height ); - - var context = canvas.getContext( '2d' ); - context.drawImage( image, 0, 0, canvas.width, canvas.height ); - - console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + canvas.width + 'x' + canvas.height + ').' ); - - return canvas; - - } else { - - if ( 'data' in image ) { - - console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' ); - - } - - return image; - - } - - } - - return image; - - } - - function isPowerOfTwo( image ) { - - return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); - - } - - function textureNeedsPowerOfTwo( texture ) { - - if ( capabilities.isWebGL2 ) return false; - - return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || - ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); - - } - - function textureNeedsGenerateMipmaps( texture, supportsMips ) { - - return texture.generateMipmaps && supportsMips && - texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; - - } - - function generateMipmap( target, texture, width, height ) { - - _gl.generateMipmap( target ); - - var textureProperties = properties.get( texture ); - - // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11 - textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E; - - } - - function getInternalFormat( glFormat, glType ) { - - if ( ! capabilities.isWebGL2 ) return glFormat; - - var internalFormat = glFormat; - - if ( glFormat === 6403 ) { - - if ( glType === 5126 ) internalFormat = 33326; - if ( glType === 5131 ) internalFormat = 33325; - if ( glType === 5121 ) internalFormat = 33321; - - } - - if ( glFormat === 6407 ) { - - if ( glType === 5126 ) internalFormat = 34837; - if ( glType === 5131 ) internalFormat = 34843; - if ( glType === 5121 ) internalFormat = 32849; - - } - - if ( glFormat === 6408 ) { - - if ( glType === 5126 ) internalFormat = 34836; - if ( glType === 5131 ) internalFormat = 34842; - if ( glType === 5121 ) internalFormat = 32856; - - } - - if ( internalFormat === 33325 || internalFormat === 33326 || - internalFormat === 34842 || internalFormat === 34836 ) { - - extensions.get( 'EXT_color_buffer_float' ); - - } else if ( internalFormat === 34843 || internalFormat === 34837 ) { - - console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' ); - - } - - return internalFormat; - - } - - // Fallback filters for non-power-of-2 textures - - function filterFallback( f ) { - - if ( f === NearestFilter || f === NearestMipMapNearestFilter || f === NearestMipMapLinearFilter ) { - - return 9728; - - } - - return 9729; - - } - - // - - function onTextureDispose( event ) { - - var texture = event.target; - - texture.removeEventListener( 'dispose', onTextureDispose ); - - deallocateTexture( texture ); - - if ( texture.isVideoTexture ) { - - delete _videoTextures[ texture.id ]; - - } - - info.memory.textures --; - - } - - function onRenderTargetDispose( event ) { - - var renderTarget = event.target; - - renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); - - deallocateRenderTarget( renderTarget ); - - info.memory.textures --; - - } - - // - - function deallocateTexture( texture ) { - - var textureProperties = properties.get( texture ); - - if ( texture.image && textureProperties.__image__webglTextureCube ) { - - // cube texture - - _gl.deleteTexture( textureProperties.__image__webglTextureCube ); - - } else { - - // 2D texture - - if ( textureProperties.__webglInit === undefined ) return; - - _gl.deleteTexture( textureProperties.__webglTexture ); - - } - - // remove all webgl properties - properties.remove( texture ); - - } - - function deallocateRenderTarget( renderTarget ) { - - var renderTargetProperties = properties.get( renderTarget ); - var textureProperties = properties.get( renderTarget.texture ); - - if ( ! renderTarget ) return; - - if ( textureProperties.__webglTexture !== undefined ) { - - _gl.deleteTexture( textureProperties.__webglTexture ); - - } - - if ( renderTarget.depthTexture ) { - - renderTarget.depthTexture.dispose(); - - } - - if ( renderTarget.isWebGLRenderTargetCube ) { - - for ( var i = 0; i < 6; i ++ ) { - - _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); - if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); - - } - - } else { - - _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); - if ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); - - } - - properties.remove( renderTarget.texture ); - properties.remove( renderTarget ); - - } - - // - - - - function setTexture2D( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.isVideoTexture ) updateVideoTexture( texture ); - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - var image = texture.image; - - if ( image === undefined ) { - - console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' ); - - } else if ( image.complete === false ) { - - console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); - - } else { - - uploadTexture( textureProperties, texture, slot ); - return; - - } - - } - - state.activeTexture( 33984 + slot ); - state.bindTexture( 3553, textureProperties.__webglTexture ); - - } - - function setTexture3D( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - uploadTexture( textureProperties, texture, slot ); - return; - - } - - state.activeTexture( 33984 + slot ); - state.bindTexture( 32879, textureProperties.__webglTexture ); - - } - - - function setTextureCube( texture, slot ) { - - var textureProperties = properties.get( texture ); - - if ( texture.image.length === 6 ) { - - if ( texture.version > 0 && textureProperties.__version !== texture.version ) { - - if ( ! textureProperties.__image__webglTextureCube ) { - - texture.addEventListener( 'dispose', onTextureDispose ); - - textureProperties.__image__webglTextureCube = _gl.createTexture(); - - info.memory.textures ++; - - } - - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, textureProperties.__image__webglTextureCube ); - - _gl.pixelStorei( 37440, texture.flipY ); - - var isCompressed = ( texture && texture.isCompressedTexture ); - var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); - - var cubeImage = []; - - for ( var i = 0; i < 6; i ++ ) { - - if ( ! isCompressed && ! isDataTexture ) { - - cubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize ); - - } else { - - cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; - - } - - } - - var image = cubeImage[ 0 ], - supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, - glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ), - glInternalFormat = getInternalFormat( glFormat, glType ); - - setTextureParameters( 34067, texture, supportsMips ); - - for ( var i = 0; i < 6; i ++ ) { - - if ( ! isCompressed ) { - - if ( isDataTexture ) { - - state.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); - - } else { - - state.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); - - } - - } else { - - var mipmap, mipmaps = cubeImage[ i ].mipmaps; - - for ( var j = 0, jl = mipmaps.length; j < jl; j ++ ) { - - mipmap = mipmaps[ j ]; - - if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { - - if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { - - state.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); - - } else { - - console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); - - } - - } else { - - state.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); - - } - - } - - } - - } - - if ( ! isCompressed ) { - - textureProperties.__maxMipLevel = 0; - - } else { - - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } - - if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { - - // We assume images for cube map have the same size. - generateMipmap( 34067, texture, image.width, image.height ); - - } - - textureProperties.__version = texture.version; - - if ( texture.onUpdate ) texture.onUpdate( texture ); - - } else { - - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, textureProperties.__image__webglTextureCube ); - - } - - } - - } - - function setTextureCubeDynamic( texture, slot ) { - - state.activeTexture( 33984 + slot ); - state.bindTexture( 34067, properties.get( texture ).__webglTexture ); - - } - - function setTextureParameters( textureType, texture, supportsMips ) { - - var extension; - - if ( supportsMips ) { - - _gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) ); - _gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) ); - - _gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) ); - _gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) ); - - } else { - - _gl.texParameteri( textureType, 10242, 33071 ); - _gl.texParameteri( textureType, 10243, 33071 ); - - if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { - - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' ); - - } - - _gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) ); - _gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) ); - - if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { - - console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' ); - - } - - } - - extension = extensions.get( 'EXT_texture_filter_anisotropic' ); - - if ( extension ) { - - if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return; - if ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return; - - if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { - - _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); - properties.get( texture ).__currentAnisotropy = texture.anisotropy; - - } - - } - - } - - function uploadTexture( textureProperties, texture, slot ) { - - var textureType; - - if ( texture.isDataTexture3D ) { - - textureType = 32879; - - } else { - - textureType = 3553; - - } - - - if ( textureProperties.__webglInit === undefined ) { - - textureProperties.__webglInit = true; - - texture.addEventListener( 'dispose', onTextureDispose ); - - textureProperties.__webglTexture = _gl.createTexture(); - - info.memory.textures ++; - - } - state.activeTexture( 33984 + slot ); - - - state.bindTexture( textureType, textureProperties.__webglTexture ); - - - - _gl.pixelStorei( 37440, texture.flipY ); - _gl.pixelStorei( 37441, texture.premultiplyAlpha ); - _gl.pixelStorei( 3317, texture.unpackAlignment ); - - var needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false; - var image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize ); - - var supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, - glFormat = utils.convert( texture.format ), - glType = utils.convert( texture.type ), - glInternalFormat = getInternalFormat( glFormat, glType ); - - setTextureParameters( textureType, texture, supportsMips ); - - var mipmap, mipmaps = texture.mipmaps; - - if ( texture.isDepthTexture ) { - - // populate depth texture with dummy data - - glInternalFormat = 6402; - - if ( texture.type === FloatType ) { - - if ( ! capabilities.isWebGL2 ) throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); - glInternalFormat = 36012; - - } else if ( capabilities.isWebGL2 ) { - - // WebGL 2.0 requires signed internalformat for glTexImage2D - glInternalFormat = 33189; - - } - - if ( texture.format === DepthFormat && glInternalFormat === 6402 ) { - - // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are - // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT - // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { - - console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); - - texture.type = UnsignedShortType; - glType = utils.convert( texture.type ); - - } - - } - - // Depth stencil textures need the DEPTH_STENCIL internal format - // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.format === DepthStencilFormat ) { - - glInternalFormat = 34041; - - // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are - // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. - // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) - if ( texture.type !== UnsignedInt248Type ) { - - console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); - - texture.type = UnsignedInt248Type; - glType = utils.convert( texture.type ); - - } - - } - - state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); - - } else if ( texture.isDataTexture ) { - - // use manually created mipmaps if available - // if there are no manual mipmaps - // set 0 level mipmap and then use GL to generate other mipmap levels - - if ( mipmaps.length > 0 && supportsMips ) { - - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { - - mipmap = mipmaps[ i ]; - state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); - - } - - texture.generateMipmaps = false; - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } else { - - state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); - textureProperties.__maxMipLevel = 0; - - } - - } else if ( texture.isCompressedTexture ) { - - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { - - mipmap = mipmaps[ i ]; - - if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { - - if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { - - state.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); - - } else { - - console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); - - } - - } else { - - state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); - - } - - } - - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } else if ( texture.isDataTexture3D ) { - - state.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); - textureProperties.__maxMipLevel = 0; - - } else { - - // regular Texture (image, video, canvas) - - // use manually created mipmaps if available - // if there are no manual mipmaps - // set 0 level mipmap and then use GL to generate other mipmap levels - - if ( mipmaps.length > 0 && supportsMips ) { - - for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { - - mipmap = mipmaps[ i ]; - state.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap ); - - } - - texture.generateMipmaps = false; - textureProperties.__maxMipLevel = mipmaps.length - 1; - - } else { - - state.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image ); - textureProperties.__maxMipLevel = 0; - - } - - } - - if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { - - generateMipmap( 3553, texture, image.width, image.height ); - - } - - textureProperties.__version = texture.version; - - if ( texture.onUpdate ) texture.onUpdate( texture ); - - } - - // Render targets - - // Setup storage for target texture and bind it to correct framebuffer - function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { - - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); - _gl.bindFramebuffer( 36160, framebuffer ); - _gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); - _gl.bindFramebuffer( 36160, null ); - - } - - // Setup storage for internal depth/stencil buffers and bind to correct framebuffer - function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) { - - _gl.bindRenderbuffer( 36161, renderbuffer ); - - if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { - - if ( isMultisample ) { - - var samples = getRenderTargetSamples( renderTarget ); - - _gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height ); - - } else { - - _gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height ); - - } - - _gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer ); - - } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { - - if ( isMultisample ) { - - var samples = getRenderTargetSamples( renderTarget ); - - _gl.renderbufferStorageMultisample( 36161, samples, 34041, renderTarget.width, renderTarget.height ); - - } else { - - _gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height ); - - } - - - _gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer ); - - } else { - - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - - if ( isMultisample ) { - - var samples = getRenderTargetSamples( renderTarget ); - - _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); - - } else { - - _gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height ); - - } - - } - - _gl.bindRenderbuffer( 36161, null ); - - } - - // Setup resources for a Depth Texture for a FBO (needs an extension) - function setupDepthTexture( framebuffer, renderTarget ) { - - var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); - if ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' ); - - _gl.bindFramebuffer( 36160, framebuffer ); - - if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { - - throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); - - } - - // upload an empty depth texture with framebuffer size - if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || - renderTarget.depthTexture.image.width !== renderTarget.width || - renderTarget.depthTexture.image.height !== renderTarget.height ) { - - renderTarget.depthTexture.image.width = renderTarget.width; - renderTarget.depthTexture.image.height = renderTarget.height; - renderTarget.depthTexture.needsUpdate = true; - - } - - setTexture2D( renderTarget.depthTexture, 0 ); - - var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; - - if ( renderTarget.depthTexture.format === DepthFormat ) { - - _gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 ); - - } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { - - _gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 ); - - } else { - - throw new Error( 'Unknown depthTexture format' ); - - } - - } - - // Setup GL resources for a non-texture depth buffer - function setupDepthRenderbuffer( renderTarget ) { - - var renderTargetProperties = properties.get( renderTarget ); - - var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); - - if ( renderTarget.depthTexture ) { - - if ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' ); - - setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); - - } else { - - if ( isCube ) { - - renderTargetProperties.__webglDepthbuffer = []; - - for ( var i = 0; i < 6; i ++ ) { - - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] ); - renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); - - } - - } else { - - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); - renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); - - } - - } - - _gl.bindFramebuffer( 36160, null ); - - } - - // Set up GL resources for the render target - function setupRenderTarget( renderTarget ) { - - var renderTargetProperties = properties.get( renderTarget ); - var textureProperties = properties.get( renderTarget.texture ); - - renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); - - textureProperties.__webglTexture = _gl.createTexture(); - - info.memory.textures ++; - - var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); - var isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true ); - var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; - - // Setup framebuffer - - if ( isCube ) { - - renderTargetProperties.__webglFramebuffer = []; - - for ( var i = 0; i < 6; i ++ ) { - - renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); - - } - - } else { - - renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); - - if ( isMultisample ) { - - if ( capabilities.isWebGL2 ) { - - renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); - renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer(); - - _gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer ); - var glFormat = utils.convert( renderTarget.texture.format ); - var glType = utils.convert( renderTarget.texture.type ); - var glInternalFormat = getInternalFormat( glFormat, glType ); - var samples = getRenderTargetSamples( renderTarget ); - _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); - - _gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); - _gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer ); - _gl.bindRenderbuffer( 36161, null ); - - if ( renderTarget.depthBuffer ) { - - renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); - setupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true ); - - } - - _gl.bindFramebuffer( 36160, null ); - - - } else { - - console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); - - } - - } - - } - - // Setup color buffer - - if ( isCube ) { - - state.bindTexture( 34067, textureProperties.__webglTexture ); - setTextureParameters( 34067, renderTarget.texture, supportsMips ); - - for ( var i = 0; i < 6; i ++ ) { - - setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i ); - - } - - if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { - - generateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height ); - - } - - state.bindTexture( 34067, null ); - - } else { - - state.bindTexture( 3553, textureProperties.__webglTexture ); - setTextureParameters( 3553, renderTarget.texture, supportsMips ); - setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 ); - - if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { - - generateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height ); - - } - - state.bindTexture( 3553, null ); - - } - - // Setup depth and stencil buffers - - if ( renderTarget.depthBuffer ) { - - setupDepthRenderbuffer( renderTarget ); - - } - - } - - function updateRenderTargetMipmap( renderTarget ) { - - var texture = renderTarget.texture; - var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; - - if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { - - var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553; - var webglTexture = properties.get( texture ).__webglTexture; - - state.bindTexture( target, webglTexture ); - generateMipmap( target, texture, renderTarget.width, renderTarget.height ); - state.bindTexture( target, null ); - - } - - } - - function updateMultisampleRenderTarget( renderTarget ) { - - if ( renderTarget.isWebGLMultisampleRenderTarget ) { - - if ( capabilities.isWebGL2 ) { - - var renderTargetProperties = properties.get( renderTarget ); - - _gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer ); - _gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer ); - - var width = renderTarget.width; - var height = renderTarget.height; - var mask = 16384; - - if ( renderTarget.depthBuffer ) mask |= 256; - if ( renderTarget.stencilBuffer ) mask |= 1024; - - _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 ); - - } else { - - console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); - - } - - } - - } - - function getRenderTargetSamples( renderTarget ) { - - return ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ? - Math.min( capabilities.maxSamples, renderTarget.samples ) : 0; - - } - - function updateVideoTexture( texture ) { - - var id = texture.id; - var frame = info.render.frame; - - // Check the last frame we updated the VideoTexture - - if ( _videoTextures[ id ] !== frame ) { - - _videoTextures[ id ] = frame; - texture.update(); - - } - - } - - this.setTexture2D = setTexture2D; - this.setTexture3D = setTexture3D; - this.setTextureCube = setTextureCube; - this.setTextureCubeDynamic = setTextureCubeDynamic; - this.setupRenderTarget = setupRenderTarget; - this.updateRenderTargetMipmap = updateRenderTargetMipmap; - this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; - - } - - /** - * @author thespite / http://www.twitter.com/thespite - */ - - function WebGLUtils( gl, extensions, capabilities ) { - - function convert( p ) { - - var extension; - - if ( p === RepeatWrapping ) return 10497; - if ( p === ClampToEdgeWrapping ) return 33071; - if ( p === MirroredRepeatWrapping ) return 33648; - - if ( p === NearestFilter ) return 9728; - if ( p === NearestMipMapNearestFilter ) return 9984; - if ( p === NearestMipMapLinearFilter ) return 9986; - - if ( p === LinearFilter ) return 9729; - if ( p === LinearMipMapNearestFilter ) return 9985; - if ( p === LinearMipMapLinearFilter ) return 9987; - - if ( p === UnsignedByteType ) return 5121; - if ( p === UnsignedShort4444Type ) return 32819; - if ( p === UnsignedShort5551Type ) return 32820; - if ( p === UnsignedShort565Type ) return 33635; - - if ( p === ByteType ) return 5120; - if ( p === ShortType ) return 5122; - if ( p === UnsignedShortType ) return 5123; - if ( p === IntType ) return 5124; - if ( p === UnsignedIntType ) return 5125; - if ( p === FloatType ) return 5126; - - if ( p === HalfFloatType ) { - - if ( capabilities.isWebGL2 ) return 5131; - - extension = extensions.get( 'OES_texture_half_float' ); - - if ( extension !== null ) return extension.HALF_FLOAT_OES; - - } - - if ( p === AlphaFormat ) return 6406; - if ( p === RGBFormat ) return 6407; - if ( p === RGBAFormat ) return 6408; - if ( p === LuminanceFormat ) return 6409; - if ( p === LuminanceAlphaFormat ) return 6410; - if ( p === DepthFormat ) return 6402; - if ( p === DepthStencilFormat ) return 34041; - if ( p === RedFormat ) return 6403; - - if ( p === AddEquation ) return 32774; - if ( p === SubtractEquation ) return 32778; - if ( p === ReverseSubtractEquation ) return 32779; - - if ( p === ZeroFactor ) return 0; - if ( p === OneFactor ) return 1; - if ( p === SrcColorFactor ) return 768; - if ( p === OneMinusSrcColorFactor ) return 769; - if ( p === SrcAlphaFactor ) return 770; - if ( p === OneMinusSrcAlphaFactor ) return 771; - if ( p === DstAlphaFactor ) return 772; - if ( p === OneMinusDstAlphaFactor ) return 773; - - if ( p === DstColorFactor ) return 774; - if ( p === OneMinusDstColorFactor ) return 775; - if ( p === SrcAlphaSaturateFactor ) return 776; - - if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || - p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); - - if ( extension !== null ) { - - if ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; - if ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; - if ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; - if ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; - - } - - } - - if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || - p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); - - if ( extension !== null ) { - - if ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; - if ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; - if ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; - if ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; - - } - - } - - if ( p === RGB_ETC1_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); - - if ( extension !== null ) return extension.COMPRESSED_RGB_ETC1_WEBGL; - - } - - if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || - p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || - p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || - p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || - p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { - - extension = extensions.get( 'WEBGL_compressed_texture_astc' ); - - if ( extension !== null ) { - - return p; - - } - - } - - if ( p === MinEquation || p === MaxEquation ) { - - if ( capabilities.isWebGL2 ) { - - if ( p === MinEquation ) return 32775; - if ( p === MaxEquation ) return 32776; - - } - - extension = extensions.get( 'EXT_blend_minmax' ); - - if ( extension !== null ) { - - if ( p === MinEquation ) return extension.MIN_EXT; - if ( p === MaxEquation ) return extension.MAX_EXT; - - } - - } - - if ( p === UnsignedInt248Type ) { - - if ( capabilities.isWebGL2 ) return 34042; - - extension = extensions.get( 'WEBGL_depth_texture' ); - - if ( extension !== null ) return extension.UNSIGNED_INT_24_8_WEBGL; - - } - - return 0; - - } - - return { convert: convert }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Group() { - - Object3D.call( this ); - - this.type = 'Group'; - - } - - Group.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Group, - - isGroup: true - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author mikael emtinger / http://gomo.se/ - * @author WestLangley / http://github.com/WestLangley - */ - - function Camera() { - - Object3D.call( this ); - - this.type = 'Camera'; - - this.matrixWorldInverse = new Matrix4(); - - this.projectionMatrix = new Matrix4(); - this.projectionMatrixInverse = new Matrix4(); - - } - - Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Camera, - - isCamera: true, - - copy: function ( source, recursive ) { - - Object3D.prototype.copy.call( this, source, recursive ); - - this.matrixWorldInverse.copy( source.matrixWorldInverse ); - - this.projectionMatrix.copy( source.projectionMatrix ); - this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); - - return this; - - }, - - getWorldDirection: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Camera: .getWorldDirection() target is now required' ); - target = new Vector3(); - - } - - this.updateMatrixWorld( true ); - - var e = this.matrixWorld.elements; - - return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize(); - - }, - - updateMatrixWorld: function ( force ) { - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - this.matrixWorldInverse.getInverse( this.matrixWorld ); - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author greggman / http://games.greggman.com/ - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author tschw - */ - - function PerspectiveCamera( fov, aspect, near, far ) { - - Camera.call( this ); - - this.type = 'PerspectiveCamera'; - - this.fov = fov !== undefined ? fov : 50; - this.zoom = 1; - - this.near = near !== undefined ? near : 0.1; - this.far = far !== undefined ? far : 2000; - this.focus = 10; - - this.aspect = aspect !== undefined ? aspect : 1; - this.view = null; - - this.filmGauge = 35; // width of the film (default in millimeters) - this.filmOffset = 0; // horizontal film offset (same unit as gauge) - - this.updateProjectionMatrix(); - - } - - PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { - - constructor: PerspectiveCamera, - - isPerspectiveCamera: true, - - copy: function ( source, recursive ) { - - Camera.prototype.copy.call( this, source, recursive ); - - this.fov = source.fov; - this.zoom = source.zoom; - - this.near = source.near; - this.far = source.far; - this.focus = source.focus; - - this.aspect = source.aspect; - this.view = source.view === null ? null : Object.assign( {}, source.view ); - - this.filmGauge = source.filmGauge; - this.filmOffset = source.filmOffset; - - return this; - - }, - - /** - * Sets the FOV by focal length in respect to the current .filmGauge. - * - * The default film gauge is 35, so that the focal length can be specified for - * a 35mm (full frame) camera. - * - * Values for focal length and film gauge must have the same unit. - */ - setFocalLength: function ( focalLength ) { - - // see http://www.bobatkins.com/photography/technical/field_of_view.html - var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; - - this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); - this.updateProjectionMatrix(); - - }, - - /** - * Calculates the focal length from the current .fov and .filmGauge. - */ - getFocalLength: function () { - - var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); - - return 0.5 * this.getFilmHeight() / vExtentSlope; - - }, - - getEffectiveFOV: function () { - - return _Math.RAD2DEG * 2 * Math.atan( - Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); - - }, - - getFilmWidth: function () { - - // film not completely covered in portrait format (aspect < 1) - return this.filmGauge * Math.min( this.aspect, 1 ); - - }, - - getFilmHeight: function () { - - // film not completely covered in landscape format (aspect > 1) - return this.filmGauge / Math.max( this.aspect, 1 ); - - }, - - /** - * Sets an offset in a larger frustum. This is useful for multi-window or - * multi-monitor/multi-machine setups. - * - * For example, if you have 3x2 monitors and each monitor is 1920x1080 and - * the monitors are in grid like this - * - * +---+---+---+ - * | A | B | C | - * +---+---+---+ - * | D | E | F | - * +---+---+---+ - * - * then for each monitor you would call it like this - * - * var w = 1920; - * var h = 1080; - * var fullWidth = w * 3; - * var fullHeight = h * 2; - * - * --A-- - * camera.setOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); - * --B-- - * camera.setOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); - * --C-- - * camera.setOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); - * --D-- - * camera.setOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); - * --E-- - * camera.setOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); - * --F-- - * camera.setOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); - * - * Note there is no reason monitors have to be the same size or in a grid. - */ - setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { - - this.aspect = fullWidth / fullHeight; - - if ( this.view === null ) { - - this.view = { - enabled: true, - fullWidth: 1, - fullHeight: 1, - offsetX: 0, - offsetY: 0, - width: 1, - height: 1 - }; - - } - - this.view.enabled = true; - this.view.fullWidth = fullWidth; - this.view.fullHeight = fullHeight; - this.view.offsetX = x; - this.view.offsetY = y; - this.view.width = width; - this.view.height = height; - - this.updateProjectionMatrix(); - - }, - - clearViewOffset: function () { - - if ( this.view !== null ) { - - this.view.enabled = false; - - } - - this.updateProjectionMatrix(); - - }, - - updateProjectionMatrix: function () { - - var near = this.near, - top = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, - height = 2 * top, - width = this.aspect * height, - left = - 0.5 * width, - view = this.view; - - if ( this.view !== null && this.view.enabled ) { - - var fullWidth = view.fullWidth, - fullHeight = view.fullHeight; - - left += view.offsetX * width / fullWidth; - top -= view.offsetY * height / fullHeight; - width *= view.width / fullWidth; - height *= view.height / fullHeight; - - } - - var skew = this.filmOffset; - if ( skew !== 0 ) left += near * skew / this.getFilmWidth(); - - this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); - - this.projectionMatrixInverse.getInverse( this.projectionMatrix ); - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.fov = this.fov; - data.object.zoom = this.zoom; - - data.object.near = this.near; - data.object.far = this.far; - data.object.focus = this.focus; - - data.object.aspect = this.aspect; - - if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); - - data.object.filmGauge = this.filmGauge; - data.object.filmOffset = this.filmOffset; - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function ArrayCamera( array ) { - - PerspectiveCamera.call( this ); - - this.cameras = array || []; - - } - - ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { - - constructor: ArrayCamera, - - isArrayCamera: true - - } ); - - /** - * @author jsantell / https://www.jsantell.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - var cameraLPos = new Vector3(); - var cameraRPos = new Vector3(); - - /** - * Assumes 2 cameras that are parallel and share an X-axis, and that - * the cameras' projection and world matrices have already been set. - * And that near and far planes are identical for both cameras. - * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 - */ - function setProjectionFromUnion( camera, cameraL, cameraR ) { - - cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); - cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); - - var ipd = cameraLPos.distanceTo( cameraRPos ); - - var projL = cameraL.projectionMatrix.elements; - var projR = cameraR.projectionMatrix.elements; - - // VR systems will have identical far and near planes, and - // most likely identical top and bottom frustum extents. - // Use the left camera for these values. - var near = projL[ 14 ] / ( projL[ 10 ] - 1 ); - var far = projL[ 14 ] / ( projL[ 10 ] + 1 ); - var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; - var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; - - var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; - var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; - var left = near * leftFov; - var right = near * rightFov; - - // Calculate the new camera's position offset from the - // left camera. xOffset should be roughly half `ipd`. - var zOffset = ipd / ( - leftFov + rightFov ); - var xOffset = zOffset * - leftFov; - - // TODO: Better way to apply this offset? - cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); - camera.translateX( xOffset ); - camera.translateZ( zOffset ); - camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); - camera.matrixWorldInverse.getInverse( camera.matrixWorld ); - - // Find the union of the frustum values of the cameras and scale - // the values so that the near plane's position does not change in world space, - // although must now be relative to the new union camera. - var near2 = near + zOffset; - var far2 = far + zOffset; - var left2 = left - xOffset; - var right2 = right + ( ipd - xOffset ); - var top2 = topFov * far / far2 * near2; - var bottom2 = bottomFov * far / far2 * near2; - - camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebVRManager( renderer ) { - - var scope = this; - - var device = null; - var frameData = null; - - var poseTarget = null; - - var controllers = []; - var standingMatrix = new Matrix4(); - var standingMatrixInverse = new Matrix4(); - - var framebufferScaleFactor = 1.0; - - var frameOfReferenceType = 'stage'; - - if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { - - frameData = new window.VRFrameData(); - window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); - - } - - var matrixWorldInverse = new Matrix4(); - var tempQuaternion = new Quaternion(); - var tempPosition = new Vector3(); - - var cameraL = new PerspectiveCamera(); - cameraL.bounds = new Vector4( 0.0, 0.0, 0.5, 1.0 ); - cameraL.layers.enable( 1 ); - - var cameraR = new PerspectiveCamera(); - cameraR.bounds = new Vector4( 0.5, 0.0, 0.5, 1.0 ); - cameraR.layers.enable( 2 ); - - var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); - cameraVR.layers.enable( 1 ); - cameraVR.layers.enable( 2 ); - - // - - function isPresenting() { - - return device !== null && device.isPresenting === true; - - } - - var currentSize, currentPixelRatio; - - function onVRDisplayPresentChange() { - - if ( isPresenting() ) { - - var eyeParameters = device.getEyeParameters( 'left' ); - var renderWidth = eyeParameters.renderWidth * framebufferScaleFactor; - var renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; - - currentPixelRatio = renderer.getPixelRatio(); - currentSize = renderer.getSize(); - - renderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 ); - - animation.start(); - - } else { - - if ( scope.enabled ) { - - renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); - - } - - animation.stop(); - - } - - } - - // - - var triggers = []; - - function findGamepad( id ) { - - var gamepads = navigator.getGamepads && navigator.getGamepads(); - - for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) { - - var gamepad = gamepads[ i ]; - - if ( gamepad && ( gamepad.id === 'Daydream Controller' || - gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || - gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) || - gamepad.id.startsWith( 'Spatial Controller' ) ) ) { - - if ( j === id ) return gamepad; - - j ++; - - } - - } - - } - - function updateControllers() { - - for ( var i = 0; i < controllers.length; i ++ ) { - - var controller = controllers[ i ]; - - var gamepad = findGamepad( i ); - - if ( gamepad !== undefined && gamepad.pose !== undefined ) { - - if ( gamepad.pose === null ) return; - - // Pose - - var pose = gamepad.pose; - - if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 ); - - if ( pose.position !== null ) controller.position.fromArray( pose.position ); - if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation ); - controller.matrix.compose( controller.position, controller.quaternion, controller.scale ); - controller.matrix.premultiply( standingMatrix ); - controller.matrix.decompose( controller.position, controller.quaternion, controller.scale ); - controller.matrixWorldNeedsUpdate = true; - controller.visible = true; - - // Trigger - - var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1; - - if ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) { - - triggers[ i ] = gamepad.buttons[ buttonId ].pressed; - - if ( triggers[ i ] === true ) { - - controller.dispatchEvent( { type: 'selectstart' } ); - - } else { - - controller.dispatchEvent( { type: 'selectend' } ); - controller.dispatchEvent( { type: 'select' } ); - - } - - } - - } else { - - controller.visible = false; - - } - - } - - } - - // - - this.enabled = false; - - this.getController = function ( id ) { - - var controller = controllers[ id ]; - - if ( controller === undefined ) { - - controller = new Group(); - controller.matrixAutoUpdate = false; - controller.visible = false; - - controllers[ id ] = controller; - - } - - return controller; - - }; - - this.getDevice = function () { - - return device; - - }; - - this.setDevice = function ( value ) { - - if ( value !== undefined ) device = value; - - animation.setContext( value ); - - }; - - this.setFramebufferScaleFactor = function ( value ) { - - framebufferScaleFactor = value; - - }; - - this.setFrameOfReferenceType = function ( value ) { - - frameOfReferenceType = value; - - }; - - this.setPoseTarget = function ( object ) { - - if ( object !== undefined ) poseTarget = object; - - }; - - this.getCamera = function ( camera ) { - - var userHeight = frameOfReferenceType === 'stage' ? 1.6 : 0; - - if ( device === null ) { - - camera.position.set( 0, userHeight, 0 ); - return camera; - - } - - device.depthNear = camera.near; - device.depthFar = camera.far; - - device.getFrameData( frameData ); - - // - - if ( frameOfReferenceType === 'stage' ) { - - var stageParameters = device.stageParameters; - - if ( stageParameters ) { - - standingMatrix.fromArray( stageParameters.sittingToStandingTransform ); - - } else { - - standingMatrix.makeTranslation( 0, userHeight, 0 ); - - } - - } - - - var pose = frameData.pose; - var poseObject = poseTarget !== null ? poseTarget : camera; - - // We want to manipulate poseObject by its position and quaternion components since users may rely on them. - poseObject.matrix.copy( standingMatrix ); - poseObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale ); - - if ( pose.orientation !== null ) { - - tempQuaternion.fromArray( pose.orientation ); - poseObject.quaternion.multiply( tempQuaternion ); - - } - - if ( pose.position !== null ) { - - tempQuaternion.setFromRotationMatrix( standingMatrix ); - tempPosition.fromArray( pose.position ); - tempPosition.applyQuaternion( tempQuaternion ); - poseObject.position.add( tempPosition ); - - } - - poseObject.updateMatrixWorld(); - - if ( device.isPresenting === false ) return camera; - - // - - cameraL.near = camera.near; - cameraR.near = camera.near; - - cameraL.far = camera.far; - cameraR.far = camera.far; - - cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); - cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); - - // TODO (mrdoob) Double check this code - - standingMatrixInverse.getInverse( standingMatrix ); - - if ( frameOfReferenceType === 'stage' ) { - - cameraL.matrixWorldInverse.multiply( standingMatrixInverse ); - cameraR.matrixWorldInverse.multiply( standingMatrixInverse ); - - } - - var parent = poseObject.parent; - - if ( parent !== null ) { - - matrixWorldInverse.getInverse( parent.matrixWorld ); - - cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); - cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); - - } - - // envMap and Mirror needs camera.matrixWorld - - cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); - cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); - - cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); - cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); - - setProjectionFromUnion( cameraVR, cameraL, cameraR ); - - // - - var layers = device.getLayers(); - - if ( layers.length ) { - - var layer = layers[ 0 ]; - - if ( layer.leftBounds !== null && layer.leftBounds.length === 4 ) { - - cameraL.bounds.fromArray( layer.leftBounds ); - - } - - if ( layer.rightBounds !== null && layer.rightBounds.length === 4 ) { - - cameraR.bounds.fromArray( layer.rightBounds ); - - } - - } - - updateControllers(); - - return cameraVR; - - }; - - this.getStandingMatrix = function () { - - return standingMatrix; - - }; - - this.isPresenting = isPresenting; - - // Animation Loop - - var animation = new WebGLAnimation(); - - this.setAnimationLoop = function ( callback ) { - - animation.setAnimationLoop( callback ); - - }; - - this.submitFrame = function () { - - if ( isPresenting() ) device.submitFrame(); - - }; - - this.dispose = function () { - - if ( typeof window !== 'undefined' ) { - - window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); - - } - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function WebXRManager( renderer ) { - - var gl = renderer.context; - - var device = null; - var session = null; - - var framebufferScaleFactor = 1.0; - - var frameOfReference = null; - var frameOfReferenceType = 'stage'; - - var pose = null; - - var controllers = []; - var inputSources = []; - - function isPresenting() { - - return session !== null && frameOfReference !== null; - - } - - // - - var cameraL = new PerspectiveCamera(); - cameraL.layers.enable( 1 ); - cameraL.viewport = new Vector4(); - - var cameraR = new PerspectiveCamera(); - cameraR.layers.enable( 2 ); - cameraR.viewport = new Vector4(); - - var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); - cameraVR.layers.enable( 1 ); - cameraVR.layers.enable( 2 ); - - // - - this.enabled = false; - - this.getController = function ( id ) { - - var controller = controllers[ id ]; - - if ( controller === undefined ) { - - controller = new Group(); - controller.matrixAutoUpdate = false; - controller.visible = false; - - controllers[ id ] = controller; - - } - - return controller; - - }; - - this.getDevice = function () { - - return device; - - }; - - this.setDevice = function ( value ) { - - if ( value !== undefined ) device = value; - if ( value instanceof XRDevice ) gl.setCompatibleXRDevice( value ); - - }; - - // - - function onSessionEvent( event ) { - - var controller = controllers[ inputSources.indexOf( event.inputSource ) ]; - if ( controller ) controller.dispatchEvent( { type: event.type } ); - - } - - function onSessionEnd() { - - renderer.setFramebuffer( null ); - animation.stop(); - - } - - this.setFramebufferScaleFactor = function ( value ) { - - framebufferScaleFactor = value; - - }; - - this.setFrameOfReferenceType = function ( value ) { - - frameOfReferenceType = value; - - }; - - this.setSession = function ( value ) { - - session = value; - - if ( session !== null ) { - - session.addEventListener( 'select', onSessionEvent ); - session.addEventListener( 'selectstart', onSessionEvent ); - session.addEventListener( 'selectend', onSessionEvent ); - session.addEventListener( 'end', onSessionEnd ); - - session.baseLayer = new XRWebGLLayer( session, gl, { framebufferScaleFactor: framebufferScaleFactor } ); - session.requestFrameOfReference( frameOfReferenceType ).then( function ( value ) { - - frameOfReference = value; - - renderer.setFramebuffer( session.baseLayer.framebuffer ); - - animation.setContext( session ); - animation.start(); - - } ); - - // - - inputSources = session.getInputSources(); - - session.addEventListener( 'inputsourceschange', function () { - - inputSources = session.getInputSources(); - console.log( inputSources ); - - for ( var i = 0; i < controllers.length; i ++ ) { - - var controller = controllers[ i ]; - controller.userData.inputSource = inputSources[ i ]; - - } - - } ); - - } - - }; - - function updateCamera( camera, parent ) { - - if ( parent === null ) { - - camera.matrixWorld.copy( camera.matrix ); - - } else { - - camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); - - } - - camera.matrixWorldInverse.getInverse( camera.matrixWorld ); - - } - - this.getCamera = function ( camera ) { - - if ( isPresenting() ) { - - var parent = camera.parent; - var cameras = cameraVR.cameras; - - updateCamera( cameraVR, parent ); - - for ( var i = 0; i < cameras.length; i ++ ) { - - updateCamera( cameras[ i ], parent ); - - } - - // update camera and its children - - camera.matrixWorld.copy( cameraVR.matrixWorld ); - - var children = camera.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - children[ i ].updateMatrixWorld( true ); - - } - - setProjectionFromUnion( cameraVR, cameraL, cameraR ); - - return cameraVR; - - } - - return camera; - - }; - - this.isPresenting = isPresenting; - - // Animation Loop - - var onAnimationFrameCallback = null; - - function onAnimationFrame( time, frame ) { - - pose = frame.getDevicePose( frameOfReference ); - - if ( pose !== null ) { - - var layer = session.baseLayer; - var views = frame.views; - - for ( var i = 0; i < views.length; i ++ ) { - - var view = views[ i ]; - var viewport = layer.getViewport( view ); - var viewMatrix = pose.getViewMatrix( view ); - - var camera = cameraVR.cameras[ i ]; - camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix ); - camera.projectionMatrix.fromArray( view.projectionMatrix ); - camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); - - if ( i === 0 ) { - - cameraVR.matrix.copy( camera.matrix ); - - } - - } - - } - - // - - for ( var i = 0; i < controllers.length; i ++ ) { - - var controller = controllers[ i ]; - - var inputSource = inputSources[ i ]; - - if ( inputSource ) { - - var inputPose = frame.getInputPose( inputSource, frameOfReference ); - - if ( inputPose !== null ) { - - if ( 'targetRay' in inputPose ) { - - controller.matrix.elements = inputPose.targetRay.transformMatrix; - - } else if ( 'pointerMatrix' in inputPose ) { - - // DEPRECATED - - controller.matrix.elements = inputPose.pointerMatrix; - - } - - controller.matrix.decompose( controller.position, controller.rotation, controller.scale ); - controller.visible = true; - - continue; - - } - - } - - controller.visible = false; - - } - - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); - - } - - var animation = new WebGLAnimation(); - animation.setAnimationLoop( onAnimationFrame ); - - this.setAnimationLoop = function ( callback ) { - - onAnimationFrameCallback = callback; - - }; - - this.dispose = function () {}; - - // DEPRECATED - - this.getStandingMatrix = function () { - - console.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' ); - return new THREE.Matrix4(); - - }; - - this.submitFrame = function () {}; - - } - - /** - * @author supereggbert / http://www.paulbrunt.co.uk/ - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * @author szimek / https://github.com/szimek/ - * @author tschw - */ - - function WebGLRenderer( parameters ) { - - console.log( 'THREE.WebGLRenderer', REVISION ); - - parameters = parameters || {}; - - var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), - _context = parameters.context !== undefined ? parameters.context : null, - - _alpha = parameters.alpha !== undefined ? parameters.alpha : false, - _depth = parameters.depth !== undefined ? parameters.depth : true, - _stencil = parameters.stencil !== undefined ? parameters.stencil : true, - _antialias = parameters.antialias !== undefined ? parameters.antialias : false, - _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, - _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, - _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default'; - - var currentRenderList = null; - var currentRenderState = null; - - // public properties - - this.domElement = _canvas; - this.context = null; - - // clearing - - this.autoClear = true; - this.autoClearColor = true; - this.autoClearDepth = true; - this.autoClearStencil = true; - - // scene graph - - this.sortObjects = true; - - // user-defined clipping - - this.clippingPlanes = []; - this.localClippingEnabled = false; - - // physically based shading - - this.gammaFactor = 2.0; // for backwards compatibility - this.gammaInput = false; - this.gammaOutput = false; - - // physical lights - - this.physicallyCorrectLights = false; - - // tone mapping - - this.toneMapping = LinearToneMapping; - this.toneMappingExposure = 1.0; - this.toneMappingWhitePoint = 1.0; - - // morphs - - this.maxMorphTargets = 8; - this.maxMorphNormals = 4; - - // internal properties - - var _this = this, - - _isContextLost = false, - - // internal state cache - - _framebuffer = null, - - _currentRenderTarget = null, - _currentFramebuffer = null, - _currentMaterialId = - 1, - - // geometry and program caching - - _currentGeometryProgram = { - geometry: null, - program: null, - wireframe: false - }, - - _currentCamera = null, - _currentArrayCamera = null, - - _currentViewport = new Vector4(), - _currentScissor = new Vector4(), - _currentScissorTest = null, - - // - - _usedTextureUnits = 0, - - // - - _width = _canvas.width, - _height = _canvas.height, - - _pixelRatio = 1, - - _viewport = new Vector4( 0, 0, _width, _height ), - _scissor = new Vector4( 0, 0, _width, _height ), - _scissorTest = false, - - // frustum - - _frustum = new Frustum(), - - // clipping - - _clipping = new WebGLClipping(), - _clippingEnabled = false, - _localClippingEnabled = false, - - // camera matrices cache - - _projScreenMatrix = new Matrix4(), - - _vector3 = new Vector3(); - - function getTargetPixelRatio() { - - return _currentRenderTarget === null ? _pixelRatio : 1; - - } - - // initialize - - var _gl; - - try { - - var contextAttributes = { - alpha: _alpha, - depth: _depth, - stencil: _stencil, - antialias: _antialias, - premultipliedAlpha: _premultipliedAlpha, - preserveDrawingBuffer: _preserveDrawingBuffer, - powerPreference: _powerPreference - }; - - // event listeners must be registered before WebGL context is created, see #12753 - - _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); - _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); - - _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); - - if ( _gl === null ) { - - if ( _canvas.getContext( 'webgl' ) !== null ) { - - throw new Error( 'Error creating WebGL context with your selected attributes.' ); - - } else { - - throw new Error( 'Error creating WebGL context.' ); - - } - - } - - // Some experimental-webgl implementations do not have getShaderPrecisionFormat - - if ( _gl.getShaderPrecisionFormat === undefined ) { - - _gl.getShaderPrecisionFormat = function () { - - return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 }; - - }; - - } - - } catch ( error ) { - - console.error( 'THREE.WebGLRenderer: ' + error.message ); - - } - - var extensions, capabilities, state, info; - var properties, textures, attributes, geometries, objects; - var programCache, renderLists, renderStates; - - var background, morphtargets, bufferRenderer, indexedBufferRenderer; - - var utils; - - function initGLContext() { - - extensions = new WebGLExtensions( _gl ); - - capabilities = new WebGLCapabilities( _gl, extensions, parameters ); - - if ( ! capabilities.isWebGL2 ) { - - extensions.get( 'WEBGL_depth_texture' ); - extensions.get( 'OES_texture_float' ); - extensions.get( 'OES_texture_half_float' ); - extensions.get( 'OES_texture_half_float_linear' ); - extensions.get( 'OES_standard_derivatives' ); - extensions.get( 'OES_element_index_uint' ); - extensions.get( 'ANGLE_instanced_arrays' ); - - } - - extensions.get( 'OES_texture_float_linear' ); - - utils = new WebGLUtils( _gl, extensions, capabilities ); - - state = new WebGLState( _gl, extensions, utils, capabilities ); - state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); - state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); - - info = new WebGLInfo( _gl ); - properties = new WebGLProperties(); - textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); - attributes = new WebGLAttributes( _gl ); - geometries = new WebGLGeometries( _gl, attributes, info ); - objects = new WebGLObjects( geometries, info ); - morphtargets = new WebGLMorphtargets( _gl ); - programCache = new WebGLPrograms( _this, extensions, capabilities ); - renderLists = new WebGLRenderLists(); - renderStates = new WebGLRenderStates(); - - background = new WebGLBackground( _this, state, objects, _premultipliedAlpha ); - - bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities ); - indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities ); - - info.programs = programCache.programs; - - _this.context = _gl; - _this.capabilities = capabilities; - _this.extensions = extensions; - _this.properties = properties; - _this.renderLists = renderLists; - _this.state = state; - _this.info = info; - - } - - initGLContext(); - - // vr - - var vr = null; - - if ( typeof navigator !== 'undefined' ) { - - vr = ( 'xr' in navigator ) ? new WebXRManager( _this ) : new WebVRManager( _this ); - - } - - this.vr = vr; - - // shadow map - - var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); - - this.shadowMap = shadowMap; - - // API - - this.getContext = function () { - - return _gl; - - }; - - this.getContextAttributes = function () { - - return _gl.getContextAttributes(); - - }; - - this.forceContextLoss = function () { - - var extension = extensions.get( 'WEBGL_lose_context' ); - if ( extension ) extension.loseContext(); - - }; - - this.forceContextRestore = function () { - - var extension = extensions.get( 'WEBGL_lose_context' ); - if ( extension ) extension.restoreContext(); - - }; - - this.getPixelRatio = function () { - - return _pixelRatio; - - }; - - this.setPixelRatio = function ( value ) { - - if ( value === undefined ) return; - - _pixelRatio = value; - - this.setSize( _width, _height, false ); - - }; - - this.getSize = function () { - - return { - width: _width, - height: _height - }; - - }; - - this.setSize = function ( width, height, updateStyle ) { - - if ( vr.isPresenting() ) { - - console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); - return; - - } - - _width = width; - _height = height; - - _canvas.width = width * _pixelRatio; - _canvas.height = height * _pixelRatio; - - if ( updateStyle !== false ) { - - _canvas.style.width = width + 'px'; - _canvas.style.height = height + 'px'; - - } - - this.setViewport( 0, 0, width, height ); - - }; - - this.getDrawingBufferSize = function () { - - return { - width: _width * _pixelRatio, - height: _height * _pixelRatio - }; - - }; - - this.setDrawingBufferSize = function ( width, height, pixelRatio ) { - - _width = width; - _height = height; - - _pixelRatio = pixelRatio; - - _canvas.width = width * pixelRatio; - _canvas.height = height * pixelRatio; - - this.setViewport( 0, 0, width, height ); - - }; - - this.getCurrentViewport = function () { - - return _currentViewport; - - }; - - this.setViewport = function ( x, y, width, height ) { - - _viewport.set( x, _height - y - height, width, height ); - state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ) ); - - }; - - this.setScissor = function ( x, y, width, height ) { - - _scissor.set( x, _height - y - height, width, height ); - state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ) ); - - }; - - this.setScissorTest = function ( boolean ) { - - state.setScissorTest( _scissorTest = boolean ); - - }; - - // Clearing - - this.getClearColor = function () { - - return background.getClearColor(); - - }; - - this.setClearColor = function () { - - background.setClearColor.apply( background, arguments ); - - }; - - this.getClearAlpha = function () { - - return background.getClearAlpha(); - - }; - - this.setClearAlpha = function () { - - background.setClearAlpha.apply( background, arguments ); - - }; - - this.clear = function ( color, depth, stencil ) { - - var bits = 0; - - if ( color === undefined || color ) bits |= 16384; - if ( depth === undefined || depth ) bits |= 256; - if ( stencil === undefined || stencil ) bits |= 1024; - - _gl.clear( bits ); - - }; - - this.clearColor = function () { - - this.clear( true, false, false ); - - }; - - this.clearDepth = function () { - - this.clear( false, true, false ); - - }; - - this.clearStencil = function () { - - this.clear( false, false, true ); - - }; - - // - - this.dispose = function () { - - _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); - _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); - - renderLists.dispose(); - renderStates.dispose(); - properties.dispose(); - objects.dispose(); - - vr.dispose(); - - animation.stop(); - - }; - - // Events - - function onContextLost( event ) { - - event.preventDefault(); - - console.log( 'THREE.WebGLRenderer: Context Lost.' ); - - _isContextLost = true; - - } - - function onContextRestore( /* event */ ) { - - console.log( 'THREE.WebGLRenderer: Context Restored.' ); - - _isContextLost = false; - - initGLContext(); - - } - - function onMaterialDispose( event ) { - - var material = event.target; - - material.removeEventListener( 'dispose', onMaterialDispose ); - - deallocateMaterial( material ); - - } - - // Buffer deallocation - - function deallocateMaterial( material ) { - - releaseMaterialProgramReference( material ); - - properties.remove( material ); - - } - - - function releaseMaterialProgramReference( material ) { - - var programInfo = properties.get( material ).program; - - material.program = undefined; - - if ( programInfo !== undefined ) { - - programCache.releaseProgram( programInfo ); - - } - - } - - // Buffer rendering - - function renderObjectImmediate( object, program ) { - - object.render( function ( object ) { - - _this.renderBufferImmediate( object, program ); - - } ); - - } - - this.renderBufferImmediate = function ( object, program ) { - - state.initAttributes(); - - var buffers = properties.get( object ); - - if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer(); - if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer(); - if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer(); - if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer(); - - var programAttributes = program.getAttributes(); - - if ( object.hasPositions ) { - - _gl.bindBuffer( 34962, buffers.position ); - _gl.bufferData( 34962, object.positionArray, 35048 ); - - state.enableAttribute( programAttributes.position ); - _gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 ); - - } - - if ( object.hasNormals ) { - - _gl.bindBuffer( 34962, buffers.normal ); - _gl.bufferData( 34962, object.normalArray, 35048 ); - - state.enableAttribute( programAttributes.normal ); - _gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 ); - - } - - if ( object.hasUvs ) { - - _gl.bindBuffer( 34962, buffers.uv ); - _gl.bufferData( 34962, object.uvArray, 35048 ); - - state.enableAttribute( programAttributes.uv ); - _gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 ); - - } - - if ( object.hasColors ) { - - _gl.bindBuffer( 34962, buffers.color ); - _gl.bufferData( 34962, object.colorArray, 35048 ); - - state.enableAttribute( programAttributes.color ); - _gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 ); - - } - - state.disableUnusedAttributes(); - - _gl.drawArrays( 4, 0, object.count ); - - object.count = 0; - - }; - - this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { - - var frontFaceCW = ( object.isMesh && object.normalMatrix.determinant() < 0 ); - - state.setMaterial( material, frontFaceCW ); - - var program = setProgram( camera, fog, material, object ); - - var updateBuffers = false; - - if ( _currentGeometryProgram.geometry !== geometry.id || - _currentGeometryProgram.program !== program.id || - _currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) { - - _currentGeometryProgram.geometry = geometry.id; - _currentGeometryProgram.program = program.id; - _currentGeometryProgram.wireframe = material.wireframe === true; - updateBuffers = true; - - } - - if ( object.morphTargetInfluences ) { - - morphtargets.update( object, geometry, material, program ); - - updateBuffers = true; - - } - - // - - var index = geometry.index; - var position = geometry.attributes.position; - var rangeFactor = 1; - - if ( material.wireframe === true ) { - - index = geometries.getWireframeAttribute( geometry ); - rangeFactor = 2; - - } - - var attribute; - var renderer = bufferRenderer; - - if ( index !== null ) { - - attribute = attributes.get( index ); - - renderer = indexedBufferRenderer; - renderer.setIndex( attribute ); - - } - - if ( updateBuffers ) { - - setupVertexAttributes( material, program, geometry ); - - if ( index !== null ) { - - _gl.bindBuffer( 34963, attribute.buffer ); - - } - - } - - // - - var dataCount = Infinity; - - if ( index !== null ) { - - dataCount = index.count; - - } else if ( position !== undefined ) { - - dataCount = position.count; - - } - - var rangeStart = geometry.drawRange.start * rangeFactor; - var rangeCount = geometry.drawRange.count * rangeFactor; - - var groupStart = group !== null ? group.start * rangeFactor : 0; - var groupCount = group !== null ? group.count * rangeFactor : Infinity; - - var drawStart = Math.max( rangeStart, groupStart ); - var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; - - var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); - - if ( drawCount === 0 ) return; - - // - - if ( object.isMesh ) { - - if ( material.wireframe === true ) { - - state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); - renderer.setMode( 1 ); - - } else { - - switch ( object.drawMode ) { - - case TrianglesDrawMode: - renderer.setMode( 4 ); - break; - - case TriangleStripDrawMode: - renderer.setMode( 5 ); - break; - - case TriangleFanDrawMode: - renderer.setMode( 6 ); - break; - - } - - } - - - } else if ( object.isLine ) { - - var lineWidth = material.linewidth; - - if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material - - state.setLineWidth( lineWidth * getTargetPixelRatio() ); - - if ( object.isLineSegments ) { - - renderer.setMode( 1 ); - - } else if ( object.isLineLoop ) { - - renderer.setMode( 2 ); - - } else { - - renderer.setMode( 3 ); - - } - - } else if ( object.isPoints ) { - - renderer.setMode( 0 ); - - } else if ( object.isSprite ) { - - renderer.setMode( 4 ); - - } - - if ( geometry && geometry.isInstancedBufferGeometry ) { - - if ( geometry.maxInstancedCount > 0 ) { - - renderer.renderInstances( geometry, drawStart, drawCount ); - - } - - } else { - - renderer.render( drawStart, drawCount ); - - } - - }; - - function setupVertexAttributes( material, program, geometry ) { - - if ( geometry && geometry.isInstancedBufferGeometry & ! capabilities.isWebGL2 ) { - - if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { - - console.error( 'THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); - return; - - } - - } - - state.initAttributes(); - - var geometryAttributes = geometry.attributes; - - var programAttributes = program.getAttributes(); - - var materialDefaultAttributeValues = material.defaultAttributeValues; - - for ( var name in programAttributes ) { - - var programAttribute = programAttributes[ name ]; - - if ( programAttribute >= 0 ) { - - var geometryAttribute = geometryAttributes[ name ]; - - if ( geometryAttribute !== undefined ) { - - var normalized = geometryAttribute.normalized; - var size = geometryAttribute.itemSize; - - var attribute = attributes.get( geometryAttribute ); - - // TODO Attribute may not be available on context restore - - if ( attribute === undefined ) continue; - - var buffer = attribute.buffer; - var type = attribute.type; - var bytesPerElement = attribute.bytesPerElement; - - if ( geometryAttribute.isInterleavedBufferAttribute ) { - - var data = geometryAttribute.data; - var stride = data.stride; - var offset = geometryAttribute.offset; - - if ( data && data.isInstancedInterleavedBuffer ) { - - state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); - - if ( geometry.maxInstancedCount === undefined ) { - - geometry.maxInstancedCount = data.meshPerAttribute * data.count; - - } - - } else { - - state.enableAttribute( programAttribute ); - - } - - _gl.bindBuffer( 34962, buffer ); - _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement ); - - } else { - - if ( geometryAttribute.isInstancedBufferAttribute ) { - - state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); - - if ( geometry.maxInstancedCount === undefined ) { - - geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; - - } - - } else { - - state.enableAttribute( programAttribute ); - - } - - _gl.bindBuffer( 34962, buffer ); - _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 ); - - } - - } else if ( materialDefaultAttributeValues !== undefined ) { - - var value = materialDefaultAttributeValues[ name ]; - - if ( value !== undefined ) { - - switch ( value.length ) { - - case 2: - _gl.vertexAttrib2fv( programAttribute, value ); - break; - - case 3: - _gl.vertexAttrib3fv( programAttribute, value ); - break; - - case 4: - _gl.vertexAttrib4fv( programAttribute, value ); - break; - - default: - _gl.vertexAttrib1fv( programAttribute, value ); - - } - - } - - } - - } - - } - - state.disableUnusedAttributes(); - - } - - // Compile - - this.compile = function ( scene, camera ) { - - currentRenderState = renderStates.get( scene, camera ); - currentRenderState.init(); - - scene.traverse( function ( object ) { - - if ( object.isLight ) { - - currentRenderState.pushLight( object ); - - if ( object.castShadow ) { - - currentRenderState.pushShadow( object ); - - } - - } - - } ); - - currentRenderState.setupLights( camera ); - - scene.traverse( function ( object ) { - - if ( object.material ) { - - if ( Array.isArray( object.material ) ) { - - for ( var i = 0; i < object.material.length; i ++ ) { - - initMaterial( object.material[ i ], scene.fog, object ); - - } - - } else { - - initMaterial( object.material, scene.fog, object ); - - } - - } - - } ); - - }; - - // Animation Loop - - var onAnimationFrameCallback = null; - - function onAnimationFrame( time ) { - - if ( vr.isPresenting() ) return; - if ( onAnimationFrameCallback ) onAnimationFrameCallback( time ); - - } - - var animation = new WebGLAnimation(); - animation.setAnimationLoop( onAnimationFrame ); - - if ( typeof window !== 'undefined' ) animation.setContext( window ); - - this.setAnimationLoop = function ( callback ) { - - onAnimationFrameCallback = callback; - vr.setAnimationLoop( callback ); - - animation.start(); - - }; - - // Rendering - - this.render = function ( scene, camera, renderTarget, forceClear ) { - - if ( ! ( camera && camera.isCamera ) ) { - - console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); - return; - - } - - if ( _isContextLost ) return; - - // reset caching for this frame - - _currentGeometryProgram.geometry = null; - _currentGeometryProgram.program = null; - _currentGeometryProgram.wireframe = false; - _currentMaterialId = - 1; - _currentCamera = null; - - // update scene graph - - if ( scene.autoUpdate === true ) scene.updateMatrixWorld(); - - // update camera matrices and frustum - - if ( camera.parent === null ) camera.updateMatrixWorld(); - - if ( vr.enabled ) { - - camera = vr.getCamera( camera ); - - } - - // - - currentRenderState = renderStates.get( scene, camera ); - currentRenderState.init(); - - scene.onBeforeRender( _this, scene, camera, renderTarget ); - - _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); - _frustum.setFromMatrix( _projScreenMatrix ); - - _localClippingEnabled = this.localClippingEnabled; - _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); - - currentRenderList = renderLists.get( scene, camera ); - currentRenderList.init(); - - projectObject( scene, camera, 0, _this.sortObjects ); - - if ( _this.sortObjects === true ) { - - currentRenderList.sort(); - - } - - // - - if ( _clippingEnabled ) _clipping.beginShadows(); - - var shadowsArray = currentRenderState.state.shadowsArray; - - shadowMap.render( shadowsArray, scene, camera ); - - currentRenderState.setupLights( camera ); - - if ( _clippingEnabled ) _clipping.endShadows(); - - // - - if ( this.info.autoReset ) this.info.reset(); - - if ( renderTarget === undefined ) { - - renderTarget = null; - - } - - this.setRenderTarget( renderTarget ); - - // - - background.render( currentRenderList, scene, camera, forceClear ); - - // render scene - - var opaqueObjects = currentRenderList.opaque; - var transparentObjects = currentRenderList.transparent; - - if ( scene.overrideMaterial ) { - - var overrideMaterial = scene.overrideMaterial; - - if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial ); - if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial ); - - } else { - - // opaque pass (front-to-back order) - - if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera ); - - // transparent pass (back-to-front order) - - if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera ); - - } - - // - - if ( renderTarget ) { - - // Generate mipmap if we're using any kind of mipmap filtering - - textures.updateRenderTargetMipmap( renderTarget ); - - // resolve multisample renderbuffers to a single-sample texture if necessary - - textures.updateMultisampleRenderTarget( renderTarget ); - - } - - // Ensure depth buffer writing is enabled so it can be cleared on next render - - state.buffers.depth.setTest( true ); - state.buffers.depth.setMask( true ); - state.buffers.color.setMask( true ); - - state.setPolygonOffset( false ); - - scene.onAfterRender( _this, scene, camera ); - - if ( vr.enabled ) { - - vr.submitFrame(); - - } - - // _gl.finish(); - - currentRenderList = null; - currentRenderState = null; - - }; - - function projectObject( object, camera, groupOrder, sortObjects ) { - - if ( object.visible === false ) return; - - var visible = object.layers.test( camera.layers ); - - if ( visible ) { - - if ( object.isGroup ) { - - groupOrder = object.renderOrder; - - } else if ( object.isLight ) { - - currentRenderState.pushLight( object ); - - if ( object.castShadow ) { - - currentRenderState.pushShadow( object ); - - } - - } else if ( object.isSprite ) { - - if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { - - if ( sortObjects ) { - - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); - - } - - var geometry = objects.update( object ); - var material = object.material; - - currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); - - } - - } else if ( object.isImmediateRenderObject ) { - - if ( sortObjects ) { - - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); - - } - - currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null ); - - } else if ( object.isMesh || object.isLine || object.isPoints ) { - - if ( object.isSkinnedMesh ) { - - object.skeleton.update(); - - } - - if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { - - if ( sortObjects ) { - - _vector3.setFromMatrixPosition( object.matrixWorld ) - .applyMatrix4( _projScreenMatrix ); - - } - - var geometry = objects.update( object ); - var material = object.material; - - if ( Array.isArray( material ) ) { - - var groups = geometry.groups; - - for ( var i = 0, l = groups.length; i < l; i ++ ) { - - var group = groups[ i ]; - var groupMaterial = material[ group.materialIndex ]; - - if ( groupMaterial && groupMaterial.visible ) { - - currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group ); - - } - - } - - } else if ( material.visible ) { - - currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); - - } - - } - - } - - } - - var children = object.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - projectObject( children[ i ], camera, groupOrder, sortObjects ); - - } - - } - - function renderObjects( renderList, scene, camera, overrideMaterial ) { - - for ( var i = 0, l = renderList.length; i < l; i ++ ) { - - var renderItem = renderList[ i ]; - - var object = renderItem.object; - var geometry = renderItem.geometry; - var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; - var group = renderItem.group; - - if ( camera.isArrayCamera ) { - - _currentArrayCamera = camera; - - var cameras = camera.cameras; - - for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { - - var camera2 = cameras[ j ]; - - if ( object.layers.test( camera2.layers ) ) { - - if ( 'viewport' in camera2 ) { // XR - - state.viewport( _currentViewport.copy( camera2.viewport ) ); - - } else { - - var bounds = camera2.bounds; - - var x = bounds.x * _width; - var y = bounds.y * _height; - var width = bounds.z * _width; - var height = bounds.w * _height; - - state.viewport( _currentViewport.set( x, y, width, height ).multiplyScalar( _pixelRatio ) ); - - } - - currentRenderState.setupLights( camera2 ); - - renderObject( object, scene, camera2, geometry, material, group ); - - } - - } - - } else { - - _currentArrayCamera = null; - - renderObject( object, scene, camera, geometry, material, group ); - - } - - } - - } - - function renderObject( object, scene, camera, geometry, material, group ) { - - object.onBeforeRender( _this, scene, camera, geometry, material, group ); - currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); - - object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); - object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); - - if ( object.isImmediateRenderObject ) { - - state.setMaterial( material ); - - var program = setProgram( camera, scene.fog, material, object ); - - _currentGeometryProgram.geometry = null; - _currentGeometryProgram.program = null; - _currentGeometryProgram.wireframe = false; - - renderObjectImmediate( object, program ); - - } else { - - _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); - - } - - object.onAfterRender( _this, scene, camera, geometry, material, group ); - currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); - - } - - function initMaterial( material, fog, object ) { - - var materialProperties = properties.get( material ); - - var lights = currentRenderState.state.lights; - var shadowsArray = currentRenderState.state.shadowsArray; - - var lightsHash = materialProperties.lightsHash; - var lightsStateHash = lights.state.hash; - - var parameters = programCache.getParameters( - material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); - - var code = programCache.getProgramCode( material, parameters ); - - var program = materialProperties.program; - var programChange = true; - - if ( program === undefined ) { - - // new material - material.addEventListener( 'dispose', onMaterialDispose ); - - } else if ( program.code !== code ) { - - // changed glsl or parameters - releaseMaterialProgramReference( material ); - - } else if ( lightsHash.stateID !== lightsStateHash.stateID || - lightsHash.directionalLength !== lightsStateHash.directionalLength || - lightsHash.pointLength !== lightsStateHash.pointLength || - lightsHash.spotLength !== lightsStateHash.spotLength || - lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || - lightsHash.hemiLength !== lightsStateHash.hemiLength || - lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) { - - lightsHash.stateID = lightsStateHash.stateID; - lightsHash.directionalLength = lightsStateHash.directionalLength; - lightsHash.pointLength = lightsStateHash.pointLength; - lightsHash.spotLength = lightsStateHash.spotLength; - lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; - lightsHash.hemiLength = lightsStateHash.hemiLength; - lightsHash.shadowsLength = lightsStateHash.shadowsLength; - - programChange = false; - - } else if ( parameters.shaderID !== undefined ) { - - // same glsl and uniform list - return; - - } else { - - // only rebuild uniform list - programChange = false; - - } - - if ( programChange ) { - - if ( parameters.shaderID ) { - - var shader = ShaderLib[ parameters.shaderID ]; - - materialProperties.shader = { - name: material.type, - uniforms: cloneUniforms( shader.uniforms ), - vertexShader: shader.vertexShader, - fragmentShader: shader.fragmentShader - }; - - } else { - - materialProperties.shader = { - name: material.type, - uniforms: material.uniforms, - vertexShader: material.vertexShader, - fragmentShader: material.fragmentShader - }; - - } - - material.onBeforeCompile( materialProperties.shader, _this ); - - // Computing code again as onBeforeCompile may have changed the shaders - code = programCache.getProgramCode( material, parameters ); - - program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); - - materialProperties.program = program; - material.program = program; - - } - - var programAttributes = program.getAttributes(); - - if ( material.morphTargets ) { - - material.numSupportedMorphTargets = 0; - - for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { - - if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { - - material.numSupportedMorphTargets ++; - - } - - } - - } - - if ( material.morphNormals ) { - - material.numSupportedMorphNormals = 0; - - for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { - - if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { - - material.numSupportedMorphNormals ++; - - } - - } - - } - - var uniforms = materialProperties.shader.uniforms; - - if ( ! material.isShaderMaterial && - ! material.isRawShaderMaterial || - material.clipping === true ) { - - materialProperties.numClippingPlanes = _clipping.numPlanes; - materialProperties.numIntersection = _clipping.numIntersection; - uniforms.clippingPlanes = _clipping.uniform; - - } - - materialProperties.fog = fog; - - // store the light setup it was created for - if ( lightsHash === undefined ) { - - materialProperties.lightsHash = lightsHash = {}; - - } - - lightsHash.stateID = lightsStateHash.stateID; - lightsHash.directionalLength = lightsStateHash.directionalLength; - lightsHash.pointLength = lightsStateHash.pointLength; - lightsHash.spotLength = lightsStateHash.spotLength; - lightsHash.rectAreaLength = lightsStateHash.rectAreaLength; - lightsHash.hemiLength = lightsStateHash.hemiLength; - lightsHash.shadowsLength = lightsStateHash.shadowsLength; - - if ( material.lights ) { - - // wire up the material to this renderer's lighting state - - uniforms.ambientLightColor.value = lights.state.ambient; - uniforms.directionalLights.value = lights.state.directional; - uniforms.spotLights.value = lights.state.spot; - uniforms.rectAreaLights.value = lights.state.rectArea; - uniforms.pointLights.value = lights.state.point; - uniforms.hemisphereLights.value = lights.state.hemi; - - uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; - uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; - uniforms.spotShadowMap.value = lights.state.spotShadowMap; - uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; - uniforms.pointShadowMap.value = lights.state.pointShadowMap; - uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; - // TODO (abelnation): add area lights shadow info to uniforms - - } - - var progUniforms = materialProperties.program.getUniforms(), - uniformsList = - WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); - - materialProperties.uniformsList = uniformsList; - - } - - function setProgram( camera, fog, material, object ) { - - _usedTextureUnits = 0; - - var materialProperties = properties.get( material ); - var lights = currentRenderState.state.lights; - - var lightsHash = materialProperties.lightsHash; - var lightsStateHash = lights.state.hash; - - if ( _clippingEnabled ) { - - if ( _localClippingEnabled || camera !== _currentCamera ) { - - var useCache = - camera === _currentCamera && - material.id === _currentMaterialId; - - // we might want to call this function with some ClippingGroup - // object instead of the material, once it becomes feasible - // (#8465, #8379) - _clipping.setState( - material.clippingPlanes, material.clipIntersection, material.clipShadows, - camera, materialProperties, useCache ); - - } - - } - - if ( material.needsUpdate === false ) { - - if ( materialProperties.program === undefined ) { - - material.needsUpdate = true; - - } else if ( material.fog && materialProperties.fog !== fog ) { - - material.needsUpdate = true; - - } else if ( material.lights && ( lightsHash.stateID !== lightsStateHash.stateID || - lightsHash.directionalLength !== lightsStateHash.directionalLength || - lightsHash.pointLength !== lightsStateHash.pointLength || - lightsHash.spotLength !== lightsStateHash.spotLength || - lightsHash.rectAreaLength !== lightsStateHash.rectAreaLength || - lightsHash.hemiLength !== lightsStateHash.hemiLength || - lightsHash.shadowsLength !== lightsStateHash.shadowsLength ) ) { - - material.needsUpdate = true; - - } else if ( materialProperties.numClippingPlanes !== undefined && - ( materialProperties.numClippingPlanes !== _clipping.numPlanes || - materialProperties.numIntersection !== _clipping.numIntersection ) ) { - - material.needsUpdate = true; - - } - - } - - if ( material.needsUpdate ) { - - initMaterial( material, fog, object ); - material.needsUpdate = false; - - } - - var refreshProgram = false; - var refreshMaterial = false; - var refreshLights = false; - - var program = materialProperties.program, - p_uniforms = program.getUniforms(), - m_uniforms = materialProperties.shader.uniforms; - - if ( state.useProgram( program.program ) ) { - - refreshProgram = true; - refreshMaterial = true; - refreshLights = true; - - } - - if ( material.id !== _currentMaterialId ) { - - _currentMaterialId = material.id; - - refreshMaterial = true; - - } - - if ( refreshProgram || _currentCamera !== camera ) { - - p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); - - if ( capabilities.logarithmicDepthBuffer ) { - - p_uniforms.setValue( _gl, 'logDepthBufFC', - 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); - - } - - if ( _currentCamera !== camera ) { - - _currentCamera = camera; - - // lighting uniforms depend on the camera so enforce an update - // now, in case this material supports lights - or later, when - // the next material that does gets activated: - - refreshMaterial = true; // set to true on material change - refreshLights = true; // remains set until update done - - } - - // load material specific uniforms - // (shader material also gets them for the sake of genericity) - - if ( material.isShaderMaterial || - material.isMeshPhongMaterial || - material.isMeshStandardMaterial || - material.envMap ) { - - var uCamPos = p_uniforms.map.cameraPosition; - - if ( uCamPos !== undefined ) { - - uCamPos.setValue( _gl, - _vector3.setFromMatrixPosition( camera.matrixWorld ) ); - - } - - } - - if ( material.isMeshPhongMaterial || - material.isMeshLambertMaterial || - material.isMeshBasicMaterial || - material.isMeshStandardMaterial || - material.isShaderMaterial || - material.skinning ) { - - p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); - - } - - } - - // skinning uniforms must be set even if material didn't change - // auto-setting of texture unit for bone texture must go before other textures - // not sure why, but otherwise weird things happen - - if ( material.skinning ) { - - p_uniforms.setOptional( _gl, object, 'bindMatrix' ); - p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); - - var skeleton = object.skeleton; - - if ( skeleton ) { - - var bones = skeleton.bones; - - if ( capabilities.floatVertexTextures ) { - - if ( skeleton.boneTexture === undefined ) { - - // layout (1 matrix = 4 pixels) - // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) - // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) - // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) - // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) - // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) - - - var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix - size = _Math.ceilPowerOfTwo( size ); - size = Math.max( size, 4 ); - - var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel - boneMatrices.set( skeleton.boneMatrices ); // copy current values - - var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); - boneTexture.needsUpdate = true; - - skeleton.boneMatrices = boneMatrices; - skeleton.boneTexture = boneTexture; - skeleton.boneTextureSize = size; - - } - - p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture ); - p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); - - } else { - - p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); - - } - - } - - } - - if ( refreshMaterial ) { - - p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); - p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); - - if ( material.lights ) { - - // the current material requires lighting info - - // note: all lighting uniforms are always set correctly - // they simply reference the renderer's state for their - // values - // - // use the current material's .needsUpdate flags to set - // the GL state when required - - markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); - - } - - // refresh uniforms common to several materials - - if ( fog && material.fog ) { - - refreshUniformsFog( m_uniforms, fog ); - - } - - if ( material.isMeshBasicMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - } else if ( material.isMeshLambertMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsLambert( m_uniforms, material ); - - } else if ( material.isMeshPhongMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - if ( material.isMeshToonMaterial ) { - - refreshUniformsToon( m_uniforms, material ); - - } else { - - refreshUniformsPhong( m_uniforms, material ); - - } - - } else if ( material.isMeshStandardMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - if ( material.isMeshPhysicalMaterial ) { - - refreshUniformsPhysical( m_uniforms, material ); - - } else { - - refreshUniformsStandard( m_uniforms, material ); - - } - - } else if ( material.isMeshMatcapMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - - refreshUniformsMatcap( m_uniforms, material ); - - } else if ( material.isMeshDepthMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsDepth( m_uniforms, material ); - - } else if ( material.isMeshDistanceMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsDistance( m_uniforms, material ); - - } else if ( material.isMeshNormalMaterial ) { - - refreshUniformsCommon( m_uniforms, material ); - refreshUniformsNormal( m_uniforms, material ); - - } else if ( material.isLineBasicMaterial ) { - - refreshUniformsLine( m_uniforms, material ); - - if ( material.isLineDashedMaterial ) { - - refreshUniformsDash( m_uniforms, material ); - - } - - } else if ( material.isPointsMaterial ) { - - refreshUniformsPoints( m_uniforms, material ); - - } else if ( material.isSpriteMaterial ) { - - refreshUniformsSprites( m_uniforms, material ); - - } else if ( material.isShadowMaterial ) { - - m_uniforms.color.value = material.color; - m_uniforms.opacity.value = material.opacity; - - } - - // RectAreaLight Texture - // TODO (mrdoob): Find a nicer implementation - - if ( m_uniforms.ltc_1 !== undefined ) m_uniforms.ltc_1.value = UniformsLib.LTC_1; - if ( m_uniforms.ltc_2 !== undefined ) m_uniforms.ltc_2.value = UniformsLib.LTC_2; - - WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this ); - - } - - if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { - - WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, _this ); - material.uniformsNeedUpdate = false; - - } - - if ( material.isSpriteMaterial ) { - - p_uniforms.setValue( _gl, 'center', object.center ); - - } - - // common matrices - - p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); - p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); - p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); - - return program; - - } - - // Uniforms (refresh uniforms objects) - - function refreshUniformsCommon( uniforms, material ) { - - uniforms.opacity.value = material.opacity; - - if ( material.color ) { - - uniforms.diffuse.value = material.color; - - } - - if ( material.emissive ) { - - uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); - - } - - if ( material.map ) { - - uniforms.map.value = material.map; - - } - - if ( material.alphaMap ) { - - uniforms.alphaMap.value = material.alphaMap; - - } - - if ( material.specularMap ) { - - uniforms.specularMap.value = material.specularMap; - - } - - if ( material.envMap ) { - - uniforms.envMap.value = material.envMap; - - // don't flip CubeTexture envMaps, flip everything else: - // WebGLRenderTargetCube will be flipped for backwards compatibility - // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture - // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future - uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; - - uniforms.reflectivity.value = material.reflectivity; - uniforms.refractionRatio.value = material.refractionRatio; - - uniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel; - - } - - if ( material.lightMap ) { - - uniforms.lightMap.value = material.lightMap; - uniforms.lightMapIntensity.value = material.lightMapIntensity; - - } - - if ( material.aoMap ) { - - uniforms.aoMap.value = material.aoMap; - uniforms.aoMapIntensity.value = material.aoMapIntensity; - - } - - // uv repeat and offset setting priorities - // 1. color map - // 2. specular map - // 3. normal map - // 4. bump map - // 5. alpha map - // 6. emissive map - - var uvScaleMap; - - if ( material.map ) { - - uvScaleMap = material.map; - - } else if ( material.specularMap ) { - - uvScaleMap = material.specularMap; - - } else if ( material.displacementMap ) { - - uvScaleMap = material.displacementMap; - - } else if ( material.normalMap ) { - - uvScaleMap = material.normalMap; - - } else if ( material.bumpMap ) { - - uvScaleMap = material.bumpMap; - - } else if ( material.roughnessMap ) { - - uvScaleMap = material.roughnessMap; - - } else if ( material.metalnessMap ) { - - uvScaleMap = material.metalnessMap; - - } else if ( material.alphaMap ) { - - uvScaleMap = material.alphaMap; - - } else if ( material.emissiveMap ) { - - uvScaleMap = material.emissiveMap; - - } - - if ( uvScaleMap !== undefined ) { - - // backwards compatibility - if ( uvScaleMap.isWebGLRenderTarget ) { - - uvScaleMap = uvScaleMap.texture; - - } - - if ( uvScaleMap.matrixAutoUpdate === true ) { - - uvScaleMap.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( uvScaleMap.matrix ); - - } - - } - - function refreshUniformsLine( uniforms, material ) { - - uniforms.diffuse.value = material.color; - uniforms.opacity.value = material.opacity; - - } - - function refreshUniformsDash( uniforms, material ) { - - uniforms.dashSize.value = material.dashSize; - uniforms.totalSize.value = material.dashSize + material.gapSize; - uniforms.scale.value = material.scale; - - } - - function refreshUniformsPoints( uniforms, material ) { - - uniforms.diffuse.value = material.color; - uniforms.opacity.value = material.opacity; - uniforms.size.value = material.size * _pixelRatio; - uniforms.scale.value = _height * 0.5; - - uniforms.map.value = material.map; - - if ( material.map !== null ) { - - if ( material.map.matrixAutoUpdate === true ) { - - material.map.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( material.map.matrix ); - - } - - } - - function refreshUniformsSprites( uniforms, material ) { - - uniforms.diffuse.value = material.color; - uniforms.opacity.value = material.opacity; - uniforms.rotation.value = material.rotation; - uniforms.map.value = material.map; - - if ( material.map !== null ) { - - if ( material.map.matrixAutoUpdate === true ) { - - material.map.updateMatrix(); - - } - - uniforms.uvTransform.value.copy( material.map.matrix ); - - } - - } - - function refreshUniformsFog( uniforms, fog ) { - - uniforms.fogColor.value = fog.color; - - if ( fog.isFog ) { - - uniforms.fogNear.value = fog.near; - uniforms.fogFar.value = fog.far; - - } else if ( fog.isFogExp2 ) { - - uniforms.fogDensity.value = fog.density; - - } - - } - - function refreshUniformsLambert( uniforms, material ) { - - if ( material.emissiveMap ) { - - uniforms.emissiveMap.value = material.emissiveMap; - - } - - } - - function refreshUniformsPhong( uniforms, material ) { - - uniforms.specular.value = material.specular; - uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) - - if ( material.emissiveMap ) { - - uniforms.emissiveMap.value = material.emissiveMap; - - } - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - function refreshUniformsToon( uniforms, material ) { - - refreshUniformsPhong( uniforms, material ); - - if ( material.gradientMap ) { - - uniforms.gradientMap.value = material.gradientMap; - - } - - } - - function refreshUniformsStandard( uniforms, material ) { - - uniforms.roughness.value = material.roughness; - uniforms.metalness.value = material.metalness; - - if ( material.roughnessMap ) { - - uniforms.roughnessMap.value = material.roughnessMap; - - } - - if ( material.metalnessMap ) { - - uniforms.metalnessMap.value = material.metalnessMap; - - } - - if ( material.emissiveMap ) { - - uniforms.emissiveMap.value = material.emissiveMap; - - } - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - if ( material.envMap ) { - - //uniforms.envMap.value = material.envMap; // part of uniforms common - uniforms.envMapIntensity.value = material.envMapIntensity; - - } - - } - - function refreshUniformsPhysical( uniforms, material ) { - - refreshUniformsStandard( uniforms, material ); - - uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common - - uniforms.clearCoat.value = material.clearCoat; - uniforms.clearCoatRoughness.value = material.clearCoatRoughness; - - } - - function refreshUniformsMatcap( uniforms, material ) { - - if ( material.matcap ) { - - uniforms.matcap.value = material.matcap; - - } - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - function refreshUniformsDepth( uniforms, material ) { - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - function refreshUniformsDistance( uniforms, material ) { - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - uniforms.referencePosition.value.copy( material.referencePosition ); - uniforms.nearDistance.value = material.nearDistance; - uniforms.farDistance.value = material.farDistance; - - } - - function refreshUniformsNormal( uniforms, material ) { - - if ( material.bumpMap ) { - - uniforms.bumpMap.value = material.bumpMap; - uniforms.bumpScale.value = material.bumpScale; - if ( material.side === BackSide ) uniforms.bumpScale.value *= - 1; - - } - - if ( material.normalMap ) { - - uniforms.normalMap.value = material.normalMap; - uniforms.normalScale.value.copy( material.normalScale ); - if ( material.side === BackSide ) uniforms.normalScale.value.negate(); - - } - - if ( material.displacementMap ) { - - uniforms.displacementMap.value = material.displacementMap; - uniforms.displacementScale.value = material.displacementScale; - uniforms.displacementBias.value = material.displacementBias; - - } - - } - - // If uniforms are marked as clean, they don't need to be loaded to the GPU. - - function markUniformsLightsNeedsUpdate( uniforms, value ) { - - uniforms.ambientLightColor.needsUpdate = value; - - uniforms.directionalLights.needsUpdate = value; - uniforms.pointLights.needsUpdate = value; - uniforms.spotLights.needsUpdate = value; - uniforms.rectAreaLights.needsUpdate = value; - uniforms.hemisphereLights.needsUpdate = value; - - } - - // Textures - - function allocTextureUnit() { - - var textureUnit = _usedTextureUnits; - - if ( textureUnit >= capabilities.maxTextures ) { - - console.warn( 'THREE.WebGLRenderer: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); - - } - - _usedTextureUnits += 1; - - return textureUnit; - - } - - this.allocTextureUnit = allocTextureUnit; - - // this.setTexture2D = setTexture2D; - this.setTexture2D = ( function () { - - var warned = false; - - // backwards compatibility: peel texture.texture - return function setTexture2D( texture, slot ) { - - if ( texture && texture.isWebGLRenderTarget ) { - - if ( ! warned ) { - - console.warn( "THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead." ); - warned = true; - - } - - texture = texture.texture; - - } - - textures.setTexture2D( texture, slot ); - - }; - - }() ); - - this.setTexture3D = ( function () { - - // backwards compatibility: peel texture.texture - return function setTexture3D( texture, slot ) { - - textures.setTexture3D( texture, slot ); - - }; - - }() ); - - this.setTexture = ( function () { - - var warned = false; - - return function setTexture( texture, slot ) { - - if ( ! warned ) { - - console.warn( "THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead." ); - warned = true; - - } - - textures.setTexture2D( texture, slot ); - - }; - - }() ); - - this.setTextureCube = ( function () { - - var warned = false; - - return function setTextureCube( texture, slot ) { - - // backwards compatibility: peel texture.texture - if ( texture && texture.isWebGLRenderTargetCube ) { - - if ( ! warned ) { - - console.warn( "THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); - warned = true; - - } - - texture = texture.texture; - - } - - // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture - // TODO: unify these code paths - if ( ( texture && texture.isCubeTexture ) || - ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { - - // CompressedTexture can have Array in image :/ - - // this function alone should take care of cube textures - textures.setTextureCube( texture, slot ); - - } else { - - // assumed: texture property of THREE.WebGLRenderTargetCube - - textures.setTextureCubeDynamic( texture, slot ); - - } - - }; - - }() ); - - // - - this.setFramebuffer = function ( value ) { - - _framebuffer = value; - - }; - - this.getRenderTarget = function () { - - return _currentRenderTarget; - - }; - - this.setRenderTarget = function ( renderTarget ) { - - _currentRenderTarget = renderTarget; - - if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { - - textures.setupRenderTarget( renderTarget ); - - } - - var framebuffer = _framebuffer; - var isCube = false; - - if ( renderTarget ) { - - var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; - - if ( renderTarget.isWebGLRenderTargetCube ) { - - framebuffer = __webglFramebuffer[ renderTarget.activeCubeFace ]; - isCube = true; - - } else if ( renderTarget.isWebGLMultisampleRenderTarget ) { - - framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer; - - } else { - - framebuffer = __webglFramebuffer; - - } - - _currentViewport.copy( renderTarget.viewport ); - _currentScissor.copy( renderTarget.scissor ); - _currentScissorTest = renderTarget.scissorTest; - - } else { - - _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ); - _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ); - _currentScissorTest = _scissorTest; - - } - - if ( _currentFramebuffer !== framebuffer ) { - - _gl.bindFramebuffer( 36160, framebuffer ); - _currentFramebuffer = framebuffer; - - } - - state.viewport( _currentViewport ); - state.scissor( _currentScissor ); - state.setScissorTest( _currentScissorTest ); - - if ( isCube ) { - - var textureProperties = properties.get( renderTarget.texture ); - _gl.framebufferTexture2D( 36160, 36064, 34069 + renderTarget.activeCubeFace, textureProperties.__webglTexture, renderTarget.activeMipMapLevel ); - - } - - }; - - this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer ) { - - if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); - return; - - } - - var framebuffer = properties.get( renderTarget ).__webglFramebuffer; - - if ( framebuffer ) { - - var restore = false; - - if ( framebuffer !== _currentFramebuffer ) { - - _gl.bindFramebuffer( 36160, framebuffer ); - - restore = true; - - } - - try { - - var texture = renderTarget.texture; - var textureFormat = texture.format; - var textureType = texture.type; - - if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); - return; - - } - - if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513) - ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox - ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); - return; - - } - - if ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) { - - // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) - - if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { - - _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); - - } - - } else { - - console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); - - } - - } finally { - - if ( restore ) { - - _gl.bindFramebuffer( 36160, _currentFramebuffer ); - - } - - } - - } - - }; - - this.copyFramebufferToTexture = function ( position, texture, level ) { - - var width = texture.image.width; - var height = texture.image.height; - var glFormat = utils.convert( texture.format ); - - this.setTexture2D( texture, 0 ); - - _gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 ); - - }; - - this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) { - - var width = srcTexture.image.width; - var height = srcTexture.image.height; - var glFormat = utils.convert( dstTexture.format ); - var glType = utils.convert( dstTexture.type ); - - this.setTexture2D( dstTexture, 0 ); - - if ( srcTexture.isDataTexture ) { - - _gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data ); - - } else { - - _gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image ); - - } - - }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function FogExp2( color, density ) { - - this.name = ''; - - this.color = new Color( color ); - this.density = ( density !== undefined ) ? density : 0.00025; - - } - - FogExp2.prototype.isFogExp2 = true; - - FogExp2.prototype.clone = function () { - - return new FogExp2( this.color, this.density ); - - }; - - FogExp2.prototype.toJSON = function ( /* meta */ ) { - - return { - type: 'FogExp2', - color: this.color.getHex(), - density: this.density - }; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function Fog( color, near, far ) { - - this.name = ''; - - this.color = new Color( color ); - - this.near = ( near !== undefined ) ? near : 1; - this.far = ( far !== undefined ) ? far : 1000; - - } - - Fog.prototype.isFog = true; - - Fog.prototype.clone = function () { - - return new Fog( this.color, this.near, this.far ); - - }; - - Fog.prototype.toJSON = function ( /* meta */ ) { - - return { - type: 'Fog', - color: this.color.getHex(), - near: this.near, - far: this.far - }; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Scene() { - - Object3D.call( this ); - - this.type = 'Scene'; - - this.background = null; - this.fog = null; - this.overrideMaterial = null; - - this.autoUpdate = true; // checked by the renderer - - } - - Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Scene, - - isScene: true, - - copy: function ( source, recursive ) { - - Object3D.prototype.copy.call( this, source, recursive ); - - if ( source.background !== null ) this.background = source.background.clone(); - if ( source.fog !== null ) this.fog = source.fog.clone(); - if ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone(); - - this.autoUpdate = source.autoUpdate; - this.matrixAutoUpdate = source.matrixAutoUpdate; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - if ( this.background !== null ) data.object.background = this.background.toJSON( meta ); - if ( this.fog !== null ) data.object.fog = this.fog.toJSON(); - - return data; - - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InterleavedBuffer( array, stride ) { - - this.array = array; - this.stride = stride; - this.count = array !== undefined ? array.length / stride : 0; - - this.dynamic = false; - this.updateRange = { offset: 0, count: - 1 }; - - this.version = 0; - - } - - Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { - - set: function ( value ) { - - if ( value === true ) this.version ++; - - } - - } ); - - Object.assign( InterleavedBuffer.prototype, { - - isInterleavedBuffer: true, - - onUploadCallback: function () {}, - - setArray: function ( array ) { - - if ( Array.isArray( array ) ) { - - throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); - - } - - this.count = array !== undefined ? array.length / this.stride : 0; - this.array = array; - - return this; - - }, - - setDynamic: function ( value ) { - - this.dynamic = value; - - return this; - - }, - - copy: function ( source ) { - - this.array = new source.array.constructor( source.array ); - this.count = source.count; - this.stride = source.stride; - this.dynamic = source.dynamic; - - return this; - - }, - - copyAt: function ( index1, attribute, index2 ) { - - index1 *= this.stride; - index2 *= attribute.stride; - - for ( var i = 0, l = this.stride; i < l; i ++ ) { - - this.array[ index1 + i ] = attribute.array[ index2 + i ]; - - } - - return this; - - }, - - set: function ( value, offset ) { - - if ( offset === undefined ) offset = 0; - - this.array.set( value, offset ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - onUpload: function ( callback ) { - - this.onUploadCallback = callback; - - return this; - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { - - this.data = interleavedBuffer; - this.itemSize = itemSize; - this.offset = offset; - - this.normalized = normalized === true; - - } - - Object.defineProperties( InterleavedBufferAttribute.prototype, { - - count: { - - get: function () { - - return this.data.count; - - } - - }, - - array: { - - get: function () { - - return this.data.array; - - } - - } - - } ); - - Object.assign( InterleavedBufferAttribute.prototype, { - - isInterleavedBufferAttribute: true, - - setX: function ( index, x ) { - - this.data.array[ index * this.data.stride + this.offset ] = x; - - return this; - - }, - - setY: function ( index, y ) { - - this.data.array[ index * this.data.stride + this.offset + 1 ] = y; - - return this; - - }, - - setZ: function ( index, z ) { - - this.data.array[ index * this.data.stride + this.offset + 2 ] = z; - - return this; - - }, - - setW: function ( index, w ) { - - this.data.array[ index * this.data.stride + this.offset + 3 ] = w; - - return this; - - }, - - getX: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset ]; - - }, - - getY: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset + 1 ]; - - }, - - getZ: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset + 2 ]; - - }, - - getW: function ( index ) { - - return this.data.array[ index * this.data.stride + this.offset + 3 ]; - - }, - - setXY: function ( index, x, y ) { - - index = index * this.data.stride + this.offset; - - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - - return this; - - }, - - setXYZ: function ( index, x, y, z ) { - - index = index * this.data.stride + this.offset; - - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - this.data.array[ index + 2 ] = z; - - return this; - - }, - - setXYZW: function ( index, x, y, z, w ) { - - index = index * this.data.stride + this.offset; - - this.data.array[ index + 0 ] = x; - this.data.array[ index + 1 ] = y; - this.data.array[ index + 2 ] = z; - this.data.array[ index + 3 ] = w; - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * map: new THREE.Texture( ), - * rotation: , - * sizeAttenuation: - * } - */ - - function SpriteMaterial( parameters ) { - - Material.call( this ); - - this.type = 'SpriteMaterial'; - - this.color = new Color( 0xffffff ); - this.map = null; - - this.rotation = 0; - - this.sizeAttenuation = true; - - this.lights = false; - this.transparent = true; - - this.setValues( parameters ); - - } - - SpriteMaterial.prototype = Object.create( Material.prototype ); - SpriteMaterial.prototype.constructor = SpriteMaterial; - SpriteMaterial.prototype.isSpriteMaterial = true; - - SpriteMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - this.map = source.map; - - this.rotation = source.rotation; - - this.sizeAttenuation = source.sizeAttenuation; - - return this; - - }; - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - */ - - var geometry; - - function Sprite( material ) { - - Object3D.call( this ); - - this.type = 'Sprite'; - - if ( geometry === undefined ) { - - geometry = new BufferGeometry(); - - var float32Array = new Float32Array( [ - - 0.5, - 0.5, 0, 0, 0, - 0.5, - 0.5, 0, 1, 0, - 0.5, 0.5, 0, 1, 1, - - 0.5, 0.5, 0, 0, 1 - ] ); - - var interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); - - geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); - geometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); - geometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); - - } - - this.geometry = geometry; - this.material = ( material !== undefined ) ? material : new SpriteMaterial(); - - this.center = new Vector2( 0.5, 0.5 ); - - } - - Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Sprite, - - isSprite: true, - - raycast: ( function () { - - var intersectPoint = new Vector3(); - var worldScale = new Vector3(); - var mvPosition = new Vector3(); - - var alignedPosition = new Vector2(); - var rotatedPosition = new Vector2(); - var viewWorldMatrix = new Matrix4(); - - var vA = new Vector3(); - var vB = new Vector3(); - var vC = new Vector3(); - - var uvA = new Vector2(); - var uvB = new Vector2(); - var uvC = new Vector2(); - - function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { - - // compute position in camera space - alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); - - // to check if rotation is not zero - if ( sin !== undefined ) { - - rotatedPosition.x = ( cos * alignedPosition.x ) - ( sin * alignedPosition.y ); - rotatedPosition.y = ( sin * alignedPosition.x ) + ( cos * alignedPosition.y ); - - } else { - - rotatedPosition.copy( alignedPosition ); - - } - - - vertexPosition.copy( mvPosition ); - vertexPosition.x += rotatedPosition.x; - vertexPosition.y += rotatedPosition.y; - - // transform to world space - vertexPosition.applyMatrix4( viewWorldMatrix ); - - } - - return function raycast( raycaster, intersects ) { - - worldScale.setFromMatrixScale( this.matrixWorld ); - viewWorldMatrix.getInverse( this.modelViewMatrix ).premultiply( this.matrixWorld ); - mvPosition.setFromMatrixPosition( this.modelViewMatrix ); - - var rotation = this.material.rotation; - var sin, cos; - if ( rotation !== 0 ) { - - cos = Math.cos( rotation ); - sin = Math.sin( rotation ); - - } - - var center = this.center; - - transformVertex( vA.set( - 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - transformVertex( vB.set( 0.5, - 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - transformVertex( vC.set( 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - - uvA.set( 0, 0 ); - uvB.set( 1, 0 ); - uvC.set( 1, 1 ); - - // check first triangle - var intersect = raycaster.ray.intersectTriangle( vA, vB, vC, false, intersectPoint ); - - if ( intersect === null ) { - - // check second triangle - transformVertex( vB.set( - 0.5, 0.5, 0 ), mvPosition, center, worldScale, sin, cos ); - uvB.set( 0, 1 ); - - intersect = raycaster.ray.intersectTriangle( vA, vC, vB, false, intersectPoint ); - if ( intersect === null ) { - - return; - - } - - } - - var distance = raycaster.ray.origin.distanceTo( intersectPoint ); - - if ( distance < raycaster.near || distance > raycaster.far ) return; - - intersects.push( { - - distance: distance, - point: intersectPoint.clone(), - uv: Triangle.getUV( intersectPoint, vA, vB, vC, uvA, uvB, uvC, new Vector2() ), - face: null, - object: this - - } ); - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.material ).copy( this ); - - }, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - if ( source.center !== undefined ) this.center.copy( source.center ); - - return this; - - } - - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - function LOD() { - - Object3D.call( this ); - - this.type = 'LOD'; - - Object.defineProperties( this, { - levels: { - enumerable: true, - value: [] - } - } ); - - } - - LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: LOD, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source, false ); - - var levels = source.levels; - - for ( var i = 0, l = levels.length; i < l; i ++ ) { - - var level = levels[ i ]; - - this.addLevel( level.object.clone(), level.distance ); - - } - - return this; - - }, - - addLevel: function ( object, distance ) { - - if ( distance === undefined ) distance = 0; - - distance = Math.abs( distance ); - - var levels = this.levels; - - for ( var l = 0; l < levels.length; l ++ ) { - - if ( distance < levels[ l ].distance ) { - - break; - - } - - } - - levels.splice( l, 0, { distance: distance, object: object } ); - - this.add( object ); - - }, - - getObjectForDistance: function ( distance ) { - - var levels = this.levels; - - for ( var i = 1, l = levels.length; i < l; i ++ ) { - - if ( distance < levels[ i ].distance ) { - - break; - - } - - } - - return levels[ i - 1 ].object; - - }, - - raycast: ( function () { - - var matrixPosition = new Vector3(); - - return function raycast( raycaster, intersects ) { - - matrixPosition.setFromMatrixPosition( this.matrixWorld ); - - var distance = raycaster.ray.origin.distanceTo( matrixPosition ); - - this.getObjectForDistance( distance ).raycast( raycaster, intersects ); - - }; - - }() ), - - update: function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - - return function update( camera ) { - - var levels = this.levels; - - if ( levels.length > 1 ) { - - v1.setFromMatrixPosition( camera.matrixWorld ); - v2.setFromMatrixPosition( this.matrixWorld ); - - var distance = v1.distanceTo( v2 ); - - levels[ 0 ].object.visible = true; - - for ( var i = 1, l = levels.length; i < l; i ++ ) { - - if ( distance >= levels[ i ].distance ) { - - levels[ i - 1 ].object.visible = false; - levels[ i ].object.visible = true; - - } else { - - break; - - } - - } - - for ( ; i < l; i ++ ) { - - levels[ i ].object.visible = false; - - } - - } - - }; - - }(), - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.levels = []; - - var levels = this.levels; - - for ( var i = 0, l = levels.length; i < l; i ++ ) { - - var level = levels[ i ]; - - data.object.levels.push( { - object: level.object.uuid, - distance: level.distance - } ); - - } - - return data; - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author ikerr / http://verold.com - */ - - function SkinnedMesh( geometry, material ) { - - if ( geometry && geometry.isGeometry ) { - - console.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); - - } - - Mesh.call( this, geometry, material ); - - this.type = 'SkinnedMesh'; - - this.bindMode = 'attached'; - this.bindMatrix = new Matrix4(); - this.bindMatrixInverse = new Matrix4(); - - } - - SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { - - constructor: SkinnedMesh, - - isSkinnedMesh: true, - - bind: function ( skeleton, bindMatrix ) { - - this.skeleton = skeleton; - - if ( bindMatrix === undefined ) { - - this.updateMatrixWorld( true ); - - this.skeleton.calculateInverses(); - - bindMatrix = this.matrixWorld; - - } - - this.bindMatrix.copy( bindMatrix ); - this.bindMatrixInverse.getInverse( bindMatrix ); - - }, - - pose: function () { - - this.skeleton.pose(); - - }, - - normalizeSkinWeights: function () { - - var vector = new Vector4(); - - var skinWeight = this.geometry.attributes.skinWeight; - - for ( var i = 0, l = skinWeight.count; i < l; i ++ ) { - - vector.x = skinWeight.getX( i ); - vector.y = skinWeight.getY( i ); - vector.z = skinWeight.getZ( i ); - vector.w = skinWeight.getW( i ); - - var scale = 1.0 / vector.manhattanLength(); - - if ( scale !== Infinity ) { - - vector.multiplyScalar( scale ); - - } else { - - vector.set( 1, 0, 0, 0 ); // do something reasonable - - } - - skinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w ); - - } - - }, - - updateMatrixWorld: function ( force ) { - - Mesh.prototype.updateMatrixWorld.call( this, force ); - - if ( this.bindMode === 'attached' ) { - - this.bindMatrixInverse.getInverse( this.matrixWorld ); - - } else if ( this.bindMode === 'detached' ) { - - this.bindMatrixInverse.getInverse( this.bindMatrix ); - - } else { - - console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); - - } - - }, - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author michael guerrero / http://realitymeltdown.com - * @author ikerr / http://verold.com - */ - - function Skeleton( bones, boneInverses ) { - - // copy the bone array - - bones = bones || []; - - this.bones = bones.slice( 0 ); - this.boneMatrices = new Float32Array( this.bones.length * 16 ); - - // use the supplied bone inverses or calculate the inverses - - if ( boneInverses === undefined ) { - - this.calculateInverses(); - - } else { - - if ( this.bones.length === boneInverses.length ) { - - this.boneInverses = boneInverses.slice( 0 ); - - } else { - - console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); - - this.boneInverses = []; - - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { - - this.boneInverses.push( new Matrix4() ); - - } - - } - - } - - } - - Object.assign( Skeleton.prototype, { - - calculateInverses: function () { - - this.boneInverses = []; - - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { - - var inverse = new Matrix4(); - - if ( this.bones[ i ] ) { - - inverse.getInverse( this.bones[ i ].matrixWorld ); - - } - - this.boneInverses.push( inverse ); - - } - - }, - - pose: function () { - - var bone, i, il; - - // recover the bind-time world matrices - - for ( i = 0, il = this.bones.length; i < il; i ++ ) { - - bone = this.bones[ i ]; - - if ( bone ) { - - bone.matrixWorld.getInverse( this.boneInverses[ i ] ); - - } - - } - - // compute the local matrices, positions, rotations and scales - - for ( i = 0, il = this.bones.length; i < il; i ++ ) { - - bone = this.bones[ i ]; - - if ( bone ) { - - if ( bone.parent && bone.parent.isBone ) { - - bone.matrix.getInverse( bone.parent.matrixWorld ); - bone.matrix.multiply( bone.matrixWorld ); - - } else { - - bone.matrix.copy( bone.matrixWorld ); - - } - - bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); - - } - - } - - }, - - update: ( function () { - - var offsetMatrix = new Matrix4(); - var identityMatrix = new Matrix4(); - - return function update() { - - var bones = this.bones; - var boneInverses = this.boneInverses; - var boneMatrices = this.boneMatrices; - var boneTexture = this.boneTexture; - - // flatten bone matrices to array - - for ( var i = 0, il = bones.length; i < il; i ++ ) { - - // compute the offset between the current and the original transform - - var matrix = bones[ i ] ? bones[ i ].matrixWorld : identityMatrix; - - offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); - offsetMatrix.toArray( boneMatrices, i * 16 ); - - } - - if ( boneTexture !== undefined ) { - - boneTexture.needsUpdate = true; - - } - - }; - - } )(), - - clone: function () { - - return new Skeleton( this.bones, this.boneInverses ); - - }, - - getBoneByName: function ( name ) { - - for ( var i = 0, il = this.bones.length; i < il; i ++ ) { - - var bone = this.bones[ i ]; - - if ( bone.name === name ) { - - return bone; - - } - - } - - return undefined; - - } - - } ); - - /** - * @author mikael emtinger / http://gomo.se/ - * @author alteredq / http://alteredqualia.com/ - * @author ikerr / http://verold.com - */ - - function Bone() { - - Object3D.call( this ); - - this.type = 'Bone'; - - } - - Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Bone, - - isBone: true - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * - * linewidth: , - * linecap: "round", - * linejoin: "round" - * } - */ - - function LineBasicMaterial( parameters ) { - - Material.call( this ); - - this.type = 'LineBasicMaterial'; - - this.color = new Color( 0xffffff ); - - this.linewidth = 1; - this.linecap = 'round'; - this.linejoin = 'round'; - - this.lights = false; - - this.setValues( parameters ); - - } - - LineBasicMaterial.prototype = Object.create( Material.prototype ); - LineBasicMaterial.prototype.constructor = LineBasicMaterial; - - LineBasicMaterial.prototype.isLineBasicMaterial = true; - - LineBasicMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.linewidth = source.linewidth; - this.linecap = source.linecap; - this.linejoin = source.linejoin; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Line( geometry, material, mode ) { - - if ( mode === 1 ) { - - console.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' ); - - } - - Object3D.call( this ); - - this.type = 'Line'; - - this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); - - } - - Line.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Line, - - isLine: true, - - computeLineDistances: ( function () { - - var start = new Vector3(); - var end = new Vector3(); - - return function computeLineDistances() { - - var geometry = this.geometry; - - if ( geometry.isBufferGeometry ) { - - // we assume non-indexed geometry - - if ( geometry.index === null ) { - - var positionAttribute = geometry.attributes.position; - var lineDistances = [ 0 ]; - - for ( var i = 1, l = positionAttribute.count; i < l; i ++ ) { - - start.fromBufferAttribute( positionAttribute, i - 1 ); - end.fromBufferAttribute( positionAttribute, i ); - - lineDistances[ i ] = lineDistances[ i - 1 ]; - lineDistances[ i ] += start.distanceTo( end ); - - } - - geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); - - } else { - - console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); - - } - - } else if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - var lineDistances = geometry.lineDistances; - - lineDistances[ 0 ] = 0; - - for ( var i = 1, l = vertices.length; i < l; i ++ ) { - - lineDistances[ i ] = lineDistances[ i - 1 ]; - lineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] ); - - } - - } - - return this; - - }; - - }() ), - - raycast: ( function () { - - var inverseMatrix = new Matrix4(); - var ray = new Ray(); - var sphere = new Sphere(); - - return function raycast( raycaster, intersects ) { - - var precision = raycaster.linePrecision; - - var geometry = this.geometry; - var matrixWorld = this.matrixWorld; - - // Checking boundingSphere distance to ray - - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); - sphere.radius += precision; - - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; - - // - - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); - - var localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); - var localPrecisionSq = localPrecision * localPrecision; - - var vStart = new Vector3(); - var vEnd = new Vector3(); - var interSegment = new Vector3(); - var interRay = new Vector3(); - var step = ( this && this.isLineSegments ) ? 2 : 1; - - if ( geometry.isBufferGeometry ) { - - var index = geometry.index; - var attributes = geometry.attributes; - var positions = attributes.position.array; - - if ( index !== null ) { - - var indices = index.array; - - for ( var i = 0, l = indices.length - 1; i < l; i += step ) { - - var a = indices[ i ]; - var b = indices[ i + 1 ]; - - vStart.fromArray( positions, a * 3 ); - vEnd.fromArray( positions, b * 3 ); - - var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); - - if ( distSq > localPrecisionSq ) continue; - - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation - - var distance = raycaster.ray.origin.distanceTo( interRay ); - - if ( distance < raycaster.near || distance > raycaster.far ) continue; - - intersects.push( { - - distance: distance, - // What do we want? intersection point on the ray or on the segment?? - // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), - index: i, - face: null, - faceIndex: null, - object: this - - } ); - - } - - } else { - - for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { - - vStart.fromArray( positions, 3 * i ); - vEnd.fromArray( positions, 3 * i + 3 ); - - var distSq = ray.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); - - if ( distSq > localPrecisionSq ) continue; - - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation - - var distance = raycaster.ray.origin.distanceTo( interRay ); - - if ( distance < raycaster.near || distance > raycaster.far ) continue; - - intersects.push( { - - distance: distance, - // What do we want? intersection point on the ray or on the segment?? - // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), - index: i, - face: null, - faceIndex: null, - object: this - - } ); - - } - - } - - } else if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - var nbVertices = vertices.length; - - for ( var i = 0; i < nbVertices - 1; i += step ) { - - var distSq = ray.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); - - if ( distSq > localPrecisionSq ) continue; - - interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation - - var distance = raycaster.ray.origin.distanceTo( interRay ); - - if ( distance < raycaster.near || distance > raycaster.far ) continue; - - intersects.push( { - - distance: distance, - // What do we want? intersection point on the ray or on the segment?? - // point: raycaster.ray.at( distance ), - point: interSegment.clone().applyMatrix4( this.matrixWorld ), - index: i, - face: null, - faceIndex: null, - object: this - - } ); - - } - - } - - }; - - }() ), - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - this.geometry.copy( source.geometry ); - this.material.copy( source.material ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function LineSegments( geometry, material ) { - - Line.call( this, geometry, material ); - - this.type = 'LineSegments'; - - } - - LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { - - constructor: LineSegments, - - isLineSegments: true, - - computeLineDistances: ( function () { - - var start = new Vector3(); - var end = new Vector3(); - - return function computeLineDistances() { - - var geometry = this.geometry; - - if ( geometry.isBufferGeometry ) { - - // we assume non-indexed geometry - - if ( geometry.index === null ) { - - var positionAttribute = geometry.attributes.position; - var lineDistances = []; - - for ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) { - - start.fromBufferAttribute( positionAttribute, i ); - end.fromBufferAttribute( positionAttribute, i + 1 ); - - lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; - lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); - - } - - geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); - - } else { - - console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); - - } - - } else if ( geometry.isGeometry ) { - - var vertices = geometry.vertices; - var lineDistances = geometry.lineDistances; - - for ( var i = 0, l = vertices.length; i < l; i += 2 ) { - - start.copy( vertices[ i ] ); - end.copy( vertices[ i + 1 ] ); - - lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; - lineDistances[ i + 1 ] = lineDistances[ i ] + start.distanceTo( end ); - - } - - } - - return this; - - }; - - }() ) - - } ); - - /** - * @author mgreter / http://github.com/mgreter - */ - - function LineLoop( geometry, material ) { - - Line.call( this, geometry, material ); - - this.type = 'LineLoop'; - - } - - LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { - - constructor: LineLoop, - - isLineLoop: true, - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * map: new THREE.Texture( ), - * - * size: , - * sizeAttenuation: - * - * morphTargets: - * } - */ - - function PointsMaterial( parameters ) { - - Material.call( this ); - - this.type = 'PointsMaterial'; - - this.color = new Color( 0xffffff ); - - this.map = null; - - this.size = 1; - this.sizeAttenuation = true; - - this.morphTargets = false; - - this.lights = false; - - this.setValues( parameters ); - - } - - PointsMaterial.prototype = Object.create( Material.prototype ); - PointsMaterial.prototype.constructor = PointsMaterial; - - PointsMaterial.prototype.isPointsMaterial = true; - - PointsMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.map = source.map; - - this.size = source.size; - this.sizeAttenuation = source.sizeAttenuation; - - this.morphTargets = source.morphTargets; - - return this; - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function Points( geometry, material ) { - - Object3D.call( this ); - - this.type = 'Points'; - - this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); - this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); - - } - - Points.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Points, - - isPoints: true, - - raycast: ( function () { - - var inverseMatrix = new Matrix4(); - var ray = new Ray(); - var sphere = new Sphere(); - - return function raycast( raycaster, intersects ) { - - var object = this; - var geometry = this.geometry; - var matrixWorld = this.matrixWorld; - var threshold = raycaster.params.Points.threshold; - - // Checking boundingSphere distance to ray - - if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere(); - - sphere.copy( geometry.boundingSphere ); - sphere.applyMatrix4( matrixWorld ); - sphere.radius += threshold; - - if ( raycaster.ray.intersectsSphere( sphere ) === false ) return; - - // - - inverseMatrix.getInverse( matrixWorld ); - ray.copy( raycaster.ray ).applyMatrix4( inverseMatrix ); - - var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); - var localThresholdSq = localThreshold * localThreshold; - var position = new Vector3(); - var intersectPoint = new Vector3(); - - function testPoint( point, index ) { - - var rayPointDistanceSq = ray.distanceSqToPoint( point ); - - if ( rayPointDistanceSq < localThresholdSq ) { - - ray.closestPointToPoint( point, intersectPoint ); - intersectPoint.applyMatrix4( matrixWorld ); - - var distance = raycaster.ray.origin.distanceTo( intersectPoint ); - - if ( distance < raycaster.near || distance > raycaster.far ) return; - - intersects.push( { - - distance: distance, - distanceToRay: Math.sqrt( rayPointDistanceSq ), - point: intersectPoint.clone(), - index: index, - face: null, - object: object - - } ); - - } - - } - - if ( geometry.isBufferGeometry ) { - - var index = geometry.index; - var attributes = geometry.attributes; - var positions = attributes.position.array; - - if ( index !== null ) { - - var indices = index.array; - - for ( var i = 0, il = indices.length; i < il; i ++ ) { - - var a = indices[ i ]; - - position.fromArray( positions, a * 3 ); - - testPoint( position, a ); - - } - - } else { - - for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { - - position.fromArray( positions, i * 3 ); - - testPoint( position, i ); - - } - - } - - } else { - - var vertices = geometry.vertices; - - for ( var i = 0, l = vertices.length; i < l; i ++ ) { - - testPoint( vertices[ i ], i ); - - } - - } - - }; - - }() ), - - clone: function () { - - return new this.constructor( this.geometry, this.material ).copy( this ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { - - Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); - - this.format = format !== undefined ? format : RGBFormat; - - this.minFilter = minFilter !== undefined ? minFilter : LinearFilter; - this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; - - this.generateMipmaps = false; - - } - - VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { - - constructor: VideoTexture, - - isVideoTexture: true, - - update: function () { - - var video = this.image; - - if ( video.readyState >= video.HAVE_CURRENT_DATA ) { - - this.needsUpdate = true; - - } - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { - - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); - - this.image = { width: width, height: height }; - this.mipmaps = mipmaps; - - // no flipping for cube textures - // (also flipping doesn't work for compressed textures ) - - this.flipY = false; - - // can't generate mipmaps for compressed textures - // mips must be embedded in DDS files - - this.generateMipmaps = false; - - } - - CompressedTexture.prototype = Object.create( Texture.prototype ); - CompressedTexture.prototype.constructor = CompressedTexture; - - CompressedTexture.prototype.isCompressedTexture = true; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { - - Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); - - this.needsUpdate = true; - - } - - CanvasTexture.prototype = Object.create( Texture.prototype ); - CanvasTexture.prototype.constructor = CanvasTexture; - CanvasTexture.prototype.isCanvasTexture = true; - - /** - * @author Matt DesLauriers / @mattdesl - * @author atix / arthursilber.de - */ - - function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { - - format = format !== undefined ? format : DepthFormat; - - if ( format !== DepthFormat && format !== DepthStencilFormat ) { - - throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); - - } - - if ( type === undefined && format === DepthFormat ) type = UnsignedShortType; - if ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type; - - Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); - - this.image = { width: width, height: height }; - - this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; - this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; - - this.flipY = false; - this.generateMipmaps = false; - - } - - DepthTexture.prototype = Object.create( Texture.prototype ); - DepthTexture.prototype.constructor = DepthTexture; - DepthTexture.prototype.isDepthTexture = true; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - function WireframeGeometry( geometry ) { - - BufferGeometry.call( this ); - - this.type = 'WireframeGeometry'; - - // buffer - - var vertices = []; - - // helper variables - - var i, j, l, o, ol; - var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; - var key, keys = [ 'a', 'b', 'c' ]; - var vertex; - - // different logic for Geometry and BufferGeometry - - if ( geometry && geometry.isGeometry ) { - - // create a data structure that contains all edges without duplicates - - var faces = geometry.faces; - - for ( i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - for ( j = 0; j < 3; j ++ ) { - - edge1 = face[ keys[ j ] ]; - edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; - edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates - edge[ 1 ] = Math.max( edge1, edge2 ); - - key = edge[ 0 ] + ',' + edge[ 1 ]; - - if ( edges[ key ] === undefined ) { - - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; - - } - - } - - } - - // generate vertices - - for ( key in edges ) { - - e = edges[ key ]; - - vertex = geometry.vertices[ e.index1 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - vertex = geometry.vertices[ e.index2 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } else if ( geometry && geometry.isBufferGeometry ) { - - var position, indices, groups; - var group, start, count; - var index1, index2; - - vertex = new Vector3(); - - if ( geometry.index !== null ) { - - // indexed BufferGeometry - - position = geometry.attributes.position; - indices = geometry.index; - groups = geometry.groups; - - if ( groups.length === 0 ) { - - groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; - - } - - // create a data structure that contains all eges without duplicates - - for ( o = 0, ol = groups.length; o < ol; ++ o ) { - - group = groups[ o ]; - - start = group.start; - count = group.count; - - for ( i = start, l = ( start + count ); i < l; i += 3 ) { - - for ( j = 0; j < 3; j ++ ) { - - edge1 = indices.getX( i + j ); - edge2 = indices.getX( i + ( j + 1 ) % 3 ); - edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates - edge[ 1 ] = Math.max( edge1, edge2 ); - - key = edge[ 0 ] + ',' + edge[ 1 ]; - - if ( edges[ key ] === undefined ) { - - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; - - } - - } - - } - - } - - // generate vertices - - for ( key in edges ) { - - e = edges[ key ]; - - vertex.fromBufferAttribute( position, e.index1 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - vertex.fromBufferAttribute( position, e.index2 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } else { - - // non-indexed BufferGeometry - - position = geometry.attributes.position; - - for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { - - for ( j = 0; j < 3; j ++ ) { - - // three edges per triangle, an edge is represented as (index1, index2) - // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) - - index1 = 3 * i + j; - vertex.fromBufferAttribute( position, index1 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - index2 = 3 * i + ( ( j + 1 ) % 3 ); - vertex.fromBufferAttribute( position, index2 ); - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } - - } - - } - - // build geometry - - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - - } - - WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); - WireframeGeometry.prototype.constructor = WireframeGeometry; - - /** - * @author zz85 / https://github.com/zz85 - * @author Mugen87 / https://github.com/Mugen87 - * - * Parametric Surfaces Geometry - * based on the brilliant article by @prideout http://prideout.net/blog/?p=44 - */ - - // ParametricGeometry - - function ParametricGeometry( func, slices, stacks ) { - - Geometry.call( this ); - - this.type = 'ParametricGeometry'; - - this.parameters = { - func: func, - slices: slices, - stacks: stacks - }; - - this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); - this.mergeVertices(); - - } - - ParametricGeometry.prototype = Object.create( Geometry.prototype ); - ParametricGeometry.prototype.constructor = ParametricGeometry; - - // ParametricBufferGeometry - - function ParametricBufferGeometry( func, slices, stacks ) { - - BufferGeometry.call( this ); - - this.type = 'ParametricBufferGeometry'; - - this.parameters = { - func: func, - slices: slices, - stacks: stacks - }; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - var EPS = 0.00001; - - var normal = new Vector3(); - - var p0 = new Vector3(), p1 = new Vector3(); - var pu = new Vector3(), pv = new Vector3(); - - var i, j; - - if ( func.length < 3 ) { - - console.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' ); - - } - - // generate vertices, normals and uvs - - var sliceCount = slices + 1; - - for ( i = 0; i <= stacks; i ++ ) { - - var v = i / stacks; - - for ( j = 0; j <= slices; j ++ ) { - - var u = j / slices; - - // vertex - - func( u, v, p0 ); - vertices.push( p0.x, p0.y, p0.z ); - - // normal - - // approximate tangent vectors via finite differences - - if ( u - EPS >= 0 ) { - - func( u - EPS, v, p1 ); - pu.subVectors( p0, p1 ); - - } else { - - func( u + EPS, v, p1 ); - pu.subVectors( p1, p0 ); - - } - - if ( v - EPS >= 0 ) { - - func( u, v - EPS, p1 ); - pv.subVectors( p0, p1 ); - - } else { - - func( u, v + EPS, p1 ); - pv.subVectors( p1, p0 ); - - } - - // cross product of tangent vectors returns surface normal - - normal.crossVectors( pu, pv ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u, v ); - - } - - } - - // generate indices - - for ( i = 0; i < stacks; i ++ ) { - - for ( j = 0; j < slices; j ++ ) { - - var a = i * sliceCount + j; - var b = i * sliceCount + j + 1; - var c = ( i + 1 ) * sliceCount + j + 1; - var d = ( i + 1 ) * sliceCount + j; - - // faces one and two - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; - - /** - * @author clockworkgeek / https://github.com/clockworkgeek - * @author timothypratley / https://github.com/timothypratley - * @author WestLangley / http://github.com/WestLangley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // PolyhedronGeometry - - function PolyhedronGeometry( vertices, indices, radius, detail ) { - - Geometry.call( this ); - - this.type = 'PolyhedronGeometry'; - - this.parameters = { - vertices: vertices, - indices: indices, - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); - this.mergeVertices(); - - } - - PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); - PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; - - // PolyhedronBufferGeometry - - function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { - - BufferGeometry.call( this ); - - this.type = 'PolyhedronBufferGeometry'; - - this.parameters = { - vertices: vertices, - indices: indices, - radius: radius, - detail: detail - }; - - radius = radius || 1; - detail = detail || 0; - - // default buffer data - - var vertexBuffer = []; - var uvBuffer = []; - - // the subdivision creates the vertex buffer data - - subdivide( detail ); - - // all vertices should lie on a conceptual sphere with a given radius - - appplyRadius( radius ); - - // finally, create the uv data - - generateUVs(); - - // build non-indexed geometry - - this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); - - if ( detail === 0 ) { - - this.computeVertexNormals(); // flat normals - - } else { - - this.normalizeNormals(); // smooth normals - - } - - // helper functions - - function subdivide( detail ) { - - var a = new Vector3(); - var b = new Vector3(); - var c = new Vector3(); - - // iterate over all faces and apply a subdivison with the given detail value - - for ( var i = 0; i < indices.length; i += 3 ) { - - // get the vertices of the face - - getVertexByIndex( indices[ i + 0 ], a ); - getVertexByIndex( indices[ i + 1 ], b ); - getVertexByIndex( indices[ i + 2 ], c ); - - // perform subdivision - - subdivideFace( a, b, c, detail ); - - } - - } - - function subdivideFace( a, b, c, detail ) { - - var cols = Math.pow( 2, detail ); - - // we use this multidimensional array as a data structure for creating the subdivision - - var v = []; - - var i, j; - - // construct all of the vertices for this subdivision - - for ( i = 0; i <= cols; i ++ ) { - - v[ i ] = []; - - var aj = a.clone().lerp( c, i / cols ); - var bj = b.clone().lerp( c, i / cols ); - - var rows = cols - i; - - for ( j = 0; j <= rows; j ++ ) { - - if ( j === 0 && i === cols ) { - - v[ i ][ j ] = aj; - - } else { - - v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); - - } - - } - - } - - // construct all of the faces - - for ( i = 0; i < cols; i ++ ) { - - for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { - - var k = Math.floor( j / 2 ); - - if ( j % 2 === 0 ) { - - pushVertex( v[ i ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k ] ); - pushVertex( v[ i ][ k ] ); - - } else { - - pushVertex( v[ i ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k + 1 ] ); - pushVertex( v[ i + 1 ][ k ] ); - - } - - } - - } - - } - - function appplyRadius( radius ) { - - var vertex = new Vector3(); - - // iterate over the entire buffer and apply the radius to each vertex - - for ( var i = 0; i < vertexBuffer.length; i += 3 ) { - - vertex.x = vertexBuffer[ i + 0 ]; - vertex.y = vertexBuffer[ i + 1 ]; - vertex.z = vertexBuffer[ i + 2 ]; - - vertex.normalize().multiplyScalar( radius ); - - vertexBuffer[ i + 0 ] = vertex.x; - vertexBuffer[ i + 1 ] = vertex.y; - vertexBuffer[ i + 2 ] = vertex.z; - - } - - } - - function generateUVs() { - - var vertex = new Vector3(); - - for ( var i = 0; i < vertexBuffer.length; i += 3 ) { - - vertex.x = vertexBuffer[ i + 0 ]; - vertex.y = vertexBuffer[ i + 1 ]; - vertex.z = vertexBuffer[ i + 2 ]; - - var u = azimuth( vertex ) / 2 / Math.PI + 0.5; - var v = inclination( vertex ) / Math.PI + 0.5; - uvBuffer.push( u, 1 - v ); - - } - - correctUVs(); - - correctSeam(); - - } - - function correctSeam() { - - // handle case when face straddles the seam, see #3269 - - for ( var i = 0; i < uvBuffer.length; i += 6 ) { - - // uv data of a single face - - var x0 = uvBuffer[ i + 0 ]; - var x1 = uvBuffer[ i + 2 ]; - var x2 = uvBuffer[ i + 4 ]; - - var max = Math.max( x0, x1, x2 ); - var min = Math.min( x0, x1, x2 ); - - // 0.9 is somewhat arbitrary - - if ( max > 0.9 && min < 0.1 ) { - - if ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1; - if ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1; - if ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1; - - } - - } - - } - - function pushVertex( vertex ) { - - vertexBuffer.push( vertex.x, vertex.y, vertex.z ); - - } - - function getVertexByIndex( index, vertex ) { - - var stride = index * 3; - - vertex.x = vertices[ stride + 0 ]; - vertex.y = vertices[ stride + 1 ]; - vertex.z = vertices[ stride + 2 ]; - - } - - function correctUVs() { - - var a = new Vector3(); - var b = new Vector3(); - var c = new Vector3(); - - var centroid = new Vector3(); - - var uvA = new Vector2(); - var uvB = new Vector2(); - var uvC = new Vector2(); - - for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { - - a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); - b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); - c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); - - uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); - uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); - uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); - - centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); - - var azi = azimuth( centroid ); - - correctUV( uvA, j + 0, a, azi ); - correctUV( uvB, j + 2, b, azi ); - correctUV( uvC, j + 4, c, azi ); - - } - - } - - function correctUV( uv, stride, vector, azimuth ) { - - if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { - - uvBuffer[ stride ] = uv.x - 1; - - } - - if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { - - uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; - - } - - } - - // Angle around the Y axis, counter-clockwise when looking from above. - - function azimuth( vector ) { - - return Math.atan2( vector.z, - vector.x ); - - } - - - // Angle above the XZ plane. - - function inclination( vector ) { - - return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); - - } - - } - - PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; - - /** - * @author timothypratley / https://github.com/timothypratley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // TetrahedronGeometry - - function TetrahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'TetrahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); - TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; - - // TetrahedronBufferGeometry - - function TetrahedronBufferGeometry( radius, detail ) { - - var vertices = [ - 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 - ]; - - var indices = [ - 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'TetrahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; - - /** - * @author timothypratley / https://github.com/timothypratley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // OctahedronGeometry - - function OctahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'OctahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - OctahedronGeometry.prototype = Object.create( Geometry.prototype ); - OctahedronGeometry.prototype.constructor = OctahedronGeometry; - - // OctahedronBufferGeometry - - function OctahedronBufferGeometry( radius, detail ) { - - var vertices = [ - 1, 0, 0, - 1, 0, 0, 0, 1, 0, - 0, - 1, 0, 0, 0, 1, 0, 0, - 1 - ]; - - var indices = [ - 0, 2, 4, 0, 4, 3, 0, 3, 5, - 0, 5, 2, 1, 2, 5, 1, 5, 3, - 1, 3, 4, 1, 4, 2 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'OctahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; - - /** - * @author timothypratley / https://github.com/timothypratley - * @author Mugen87 / https://github.com/Mugen87 - */ - - // IcosahedronGeometry - - function IcosahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'IcosahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); - IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; - - // IcosahedronBufferGeometry - - function IcosahedronBufferGeometry( radius, detail ) { - - var t = ( 1 + Math.sqrt( 5 ) ) / 2; - - var vertices = [ - - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, - 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, - t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 - ]; - - var indices = [ - 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, - 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, - 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, - 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'IcosahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; - - /** - * @author Abe Pazos / https://hamoid.com - * @author Mugen87 / https://github.com/Mugen87 - */ - - // DodecahedronGeometry - - function DodecahedronGeometry( radius, detail ) { - - Geometry.call( this ); - - this.type = 'DodecahedronGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); - this.mergeVertices(); - - } - - DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); - DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; - - // DodecahedronBufferGeometry - - function DodecahedronBufferGeometry( radius, detail ) { - - var t = ( 1 + Math.sqrt( 5 ) ) / 2; - var r = 1 / t; - - var vertices = [ - - // (±1, ±1, ±1) - - 1, - 1, - 1, - 1, - 1, 1, - - 1, 1, - 1, - 1, 1, 1, - 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, 1, 1, 1, - - // (0, ±1/φ, ±φ) - 0, - r, - t, 0, - r, t, - 0, r, - t, 0, r, t, - - // (±1/φ, ±φ, 0) - - r, - t, 0, - r, t, 0, - r, - t, 0, r, t, 0, - - // (±φ, 0, ±1/φ) - - t, 0, - r, t, 0, - r, - - t, 0, r, t, 0, r - ]; - - var indices = [ - 3, 11, 7, 3, 7, 15, 3, 15, 13, - 7, 19, 17, 7, 17, 6, 7, 6, 15, - 17, 4, 8, 17, 8, 10, 17, 10, 6, - 8, 0, 16, 8, 16, 2, 8, 2, 10, - 0, 12, 1, 0, 1, 18, 0, 18, 16, - 6, 10, 2, 6, 2, 13, 6, 13, 15, - 2, 16, 18, 2, 18, 3, 2, 3, 13, - 18, 1, 9, 18, 9, 11, 18, 11, 3, - 4, 14, 12, 4, 12, 0, 4, 0, 8, - 11, 9, 5, 11, 5, 19, 11, 19, 7, - 19, 5, 14, 19, 14, 4, 19, 4, 17, - 1, 12, 14, 1, 14, 5, 1, 5, 9 - ]; - - PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); - - this.type = 'DodecahedronBufferGeometry'; - - this.parameters = { - radius: radius, - detail: detail - }; - - } - - DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); - DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; - - /** - * @author oosmoxiecode / https://github.com/oosmoxiecode - * @author WestLangley / https://github.com/WestLangley - * @author zz85 / https://github.com/zz85 - * @author miningold / https://github.com/miningold - * @author jonobr1 / https://github.com/jonobr1 - * @author Mugen87 / https://github.com/Mugen87 - * - */ - - // TubeGeometry - - function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { - - Geometry.call( this ); - - this.type = 'TubeGeometry'; - - this.parameters = { - path: path, - tubularSegments: tubularSegments, - radius: radius, - radialSegments: radialSegments, - closed: closed - }; - - if ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' ); - - var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); - - // expose internals - - this.tangents = bufferGeometry.tangents; - this.normals = bufferGeometry.normals; - this.binormals = bufferGeometry.binormals; - - // create geometry - - this.fromBufferGeometry( bufferGeometry ); - this.mergeVertices(); - - } - - TubeGeometry.prototype = Object.create( Geometry.prototype ); - TubeGeometry.prototype.constructor = TubeGeometry; - - // TubeBufferGeometry - - function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { - - BufferGeometry.call( this ); - - this.type = 'TubeBufferGeometry'; - - this.parameters = { - path: path, - tubularSegments: tubularSegments, - radius: radius, - radialSegments: radialSegments, - closed: closed - }; - - tubularSegments = tubularSegments || 64; - radius = radius || 1; - radialSegments = radialSegments || 8; - closed = closed || false; - - var frames = path.computeFrenetFrames( tubularSegments, closed ); - - // expose internals - - this.tangents = frames.tangents; - this.normals = frames.normals; - this.binormals = frames.binormals; - - // helper variables - - var vertex = new Vector3(); - var normal = new Vector3(); - var uv = new Vector2(); - var P = new Vector3(); - - var i, j; - - // buffer - - var vertices = []; - var normals = []; - var uvs = []; - var indices = []; - - // create buffer data - - generateBufferData(); - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // functions - - function generateBufferData() { - - for ( i = 0; i < tubularSegments; i ++ ) { - - generateSegment( i ); - - } - - // if the geometry is not closed, generate the last row of vertices and normals - // at the regular position on the given path - // - // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) - - generateSegment( ( closed === false ) ? tubularSegments : 0 ); - - // uvs are generated in a separate function. - // this makes it easy compute correct values for closed geometries - - generateUVs(); - - // finally create faces - - generateIndices(); - - } - - function generateSegment( i ) { - - // we use getPointAt to sample evenly distributed points from the given path - - P = path.getPointAt( i / tubularSegments, P ); - - // retrieve corresponding normal and binormal - - var N = frames.normals[ i ]; - var B = frames.binormals[ i ]; - - // generate normals and vertices for the current segment - - for ( j = 0; j <= radialSegments; j ++ ) { - - var v = j / radialSegments * Math.PI * 2; - - var sin = Math.sin( v ); - var cos = - Math.cos( v ); - - // normal - - normal.x = ( cos * N.x + sin * B.x ); - normal.y = ( cos * N.y + sin * B.y ); - normal.z = ( cos * N.z + sin * B.z ); - normal.normalize(); - - normals.push( normal.x, normal.y, normal.z ); - - // vertex - - vertex.x = P.x + radius * normal.x; - vertex.y = P.y + radius * normal.y; - vertex.z = P.z + radius * normal.z; - - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } - - function generateIndices() { - - for ( j = 1; j <= tubularSegments; j ++ ) { - - for ( i = 1; i <= radialSegments; i ++ ) { - - var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); - var b = ( radialSegments + 1 ) * j + ( i - 1 ); - var c = ( radialSegments + 1 ) * j + i; - var d = ( radialSegments + 1 ) * ( j - 1 ) + i; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - } - - function generateUVs() { - - for ( i = 0; i <= tubularSegments; i ++ ) { - - for ( j = 0; j <= radialSegments; j ++ ) { - - uv.x = i / tubularSegments; - uv.y = j / radialSegments; - - uvs.push( uv.x, uv.y ); - - } - - } - - } - - } - - TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; - - /** - * @author oosmoxiecode - * @author Mugen87 / https://github.com/Mugen87 - * - * based on http://www.blackpawn.com/texts/pqtorus/ - */ - - // TorusKnotGeometry - - function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { - - Geometry.call( this ); - - this.type = 'TorusKnotGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - tubularSegments: tubularSegments, - radialSegments: radialSegments, - p: p, - q: q - }; - - if ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); - - this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); - this.mergeVertices(); - - } - - TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); - TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; - - // TorusKnotBufferGeometry - - function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { - - BufferGeometry.call( this ); - - this.type = 'TorusKnotBufferGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - tubularSegments: tubularSegments, - radialSegments: radialSegments, - p: p, - q: q - }; - - radius = radius || 1; - tube = tube || 0.4; - tubularSegments = Math.floor( tubularSegments ) || 64; - radialSegments = Math.floor( radialSegments ) || 8; - p = p || 2; - q = q || 3; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var i, j; - - var vertex = new Vector3(); - var normal = new Vector3(); - - var P1 = new Vector3(); - var P2 = new Vector3(); - - var B = new Vector3(); - var T = new Vector3(); - var N = new Vector3(); - - // generate vertices, normals and uvs - - for ( i = 0; i <= tubularSegments; ++ i ) { - - // the radian "u" is used to calculate the position on the torus curve of the current tubular segement - - var u = i / tubularSegments * p * Math.PI * 2; - - // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. - // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions - - calculatePositionOnCurve( u, p, q, radius, P1 ); - calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); - - // calculate orthonormal basis - - T.subVectors( P2, P1 ); - N.addVectors( P2, P1 ); - B.crossVectors( T, N ); - N.crossVectors( B, T ); - - // normalize B, N. T can be ignored, we don't use it - - B.normalize(); - N.normalize(); - - for ( j = 0; j <= radialSegments; ++ j ) { - - // now calculate the vertices. they are nothing more than an extrusion of the torus curve. - // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. - - var v = j / radialSegments * Math.PI * 2; - var cx = - tube * Math.cos( v ); - var cy = tube * Math.sin( v ); - - // now calculate the final vertex position. - // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve - - vertex.x = P1.x + ( cx * N.x + cy * B.x ); - vertex.y = P1.y + ( cx * N.y + cy * B.y ); - vertex.z = P1.z + ( cx * N.z + cy * B.z ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) - - normal.subVectors( vertex, P1 ).normalize(); - - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( i / tubularSegments ); - uvs.push( j / radialSegments ); - - } - - } - - // generate indices - - for ( j = 1; j <= tubularSegments; j ++ ) { - - for ( i = 1; i <= radialSegments; i ++ ) { - - // indices - - var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); - var b = ( radialSegments + 1 ) * j + ( i - 1 ); - var c = ( radialSegments + 1 ) * j + i; - var d = ( radialSegments + 1 ) * ( j - 1 ) + i; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // this function calculates the current position on the torus curve - - function calculatePositionOnCurve( u, p, q, radius, position ) { - - var cu = Math.cos( u ); - var su = Math.sin( u ); - var quOverP = q / p * u; - var cs = Math.cos( quOverP ); - - position.x = radius * ( 2 + cs ) * 0.5 * cu; - position.y = radius * ( 2 + cs ) * su * 0.5; - position.z = radius * Math.sin( quOverP ) * 0.5; - - } - - } - - TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; - - /** - * @author oosmoxiecode - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // TorusGeometry - - function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { - - Geometry.call( this ); - - this.type = 'TorusGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - radialSegments: radialSegments, - tubularSegments: tubularSegments, - arc: arc - }; - - this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); - this.mergeVertices(); - - } - - TorusGeometry.prototype = Object.create( Geometry.prototype ); - TorusGeometry.prototype.constructor = TorusGeometry; - - // TorusBufferGeometry - - function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { - - BufferGeometry.call( this ); - - this.type = 'TorusBufferGeometry'; - - this.parameters = { - radius: radius, - tube: tube, - radialSegments: radialSegments, - tubularSegments: tubularSegments, - arc: arc - }; - - radius = radius || 1; - tube = tube || 0.4; - radialSegments = Math.floor( radialSegments ) || 8; - tubularSegments = Math.floor( tubularSegments ) || 6; - arc = arc || Math.PI * 2; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var center = new Vector3(); - var vertex = new Vector3(); - var normal = new Vector3(); - - var j, i; - - // generate vertices, normals and uvs - - for ( j = 0; j <= radialSegments; j ++ ) { - - for ( i = 0; i <= tubularSegments; i ++ ) { - - var u = i / tubularSegments * arc; - var v = j / radialSegments * Math.PI * 2; - - // vertex - - vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); - vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); - vertex.z = tube * Math.sin( v ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - center.x = radius * Math.cos( u ); - center.y = radius * Math.sin( u ); - normal.subVectors( vertex, center ).normalize(); - - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( i / tubularSegments ); - uvs.push( j / radialSegments ); - - } - - } - - // generate indices - - for ( j = 1; j <= radialSegments; j ++ ) { - - for ( i = 1; i <= tubularSegments; i ++ ) { - - // indices - - var a = ( tubularSegments + 1 ) * j + i - 1; - var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; - var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; - var d = ( tubularSegments + 1 ) * j + i; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; - - /** - * @author Mugen87 / https://github.com/Mugen87 - * Port from https://github.com/mapbox/earcut (v2.1.2) - */ - - var Earcut = { - - triangulate: function ( data, holeIndices, dim ) { - - dim = dim || 2; - - var hasHoles = holeIndices && holeIndices.length, - outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, - outerNode = linkedList( data, 0, outerLen, dim, true ), - triangles = []; - - if ( ! outerNode ) return triangles; - - var minX, minY, maxX, maxY, x, y, invSize; - - if ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); - - // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox - - if ( data.length > 80 * dim ) { - - minX = maxX = data[ 0 ]; - minY = maxY = data[ 1 ]; - - for ( var i = dim; i < outerLen; i += dim ) { - - x = data[ i ]; - y = data[ i + 1 ]; - if ( x < minX ) minX = x; - if ( y < minY ) minY = y; - if ( x > maxX ) maxX = x; - if ( y > maxY ) maxY = y; - - } - - // minX, minY and invSize are later used to transform coords into integers for z-order calculation - - invSize = Math.max( maxX - minX, maxY - minY ); - invSize = invSize !== 0 ? 1 / invSize : 0; - - } - - earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); - - return triangles; - - } - - }; - - // create a circular doubly linked list from polygon points in the specified winding order - - function linkedList( data, start, end, dim, clockwise ) { - - var i, last; - - if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { - - for ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); - - } else { - - for ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last ); - - } - - if ( last && equals( last, last.next ) ) { - - removeNode( last ); - last = last.next; - - } - - return last; - - } - - // eliminate colinear or duplicate points - - function filterPoints( start, end ) { - - if ( ! start ) return start; - if ( ! end ) end = start; - - var p = start, again; - - do { - - again = false; - - if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { - - removeNode( p ); - p = end = p.prev; - if ( p === p.next ) break; - again = true; - - } else { - - p = p.next; - - } - - } while ( again || p !== end ); - - return end; - - } - - // main ear slicing loop which triangulates a polygon (given as a linked list) - - function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { - - if ( ! ear ) return; - - // interlink polygon nodes in z-order - - if ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize ); - - var stop = ear, prev, next; - - // iterate through ears, slicing them one by one - - while ( ear.prev !== ear.next ) { - - prev = ear.prev; - next = ear.next; - - if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { - - // cut off the triangle - triangles.push( prev.i / dim ); - triangles.push( ear.i / dim ); - triangles.push( next.i / dim ); - - removeNode( ear ); - - // skipping the next vertice leads to less sliver triangles - ear = next.next; - stop = next.next; - - continue; - - } - - ear = next; - - // if we looped through the whole remaining polygon and can't find any more ears - - if ( ear === stop ) { - - // try filtering points and slicing again - - if ( ! pass ) { - - earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); - - // if this didn't work, try curing all small self-intersections locally - - } else if ( pass === 1 ) { - - ear = cureLocalIntersections( ear, triangles, dim ); - earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); - - // as a last resort, try splitting the remaining polygon into two - - } else if ( pass === 2 ) { - - splitEarcut( ear, triangles, dim, minX, minY, invSize ); - - } - - break; - - } - - } - - } - - // check whether a polygon node forms a valid ear with adjacent nodes - - function isEar( ear ) { - - var a = ear.prev, - b = ear, - c = ear.next; - - if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear - - // now make sure we don't have other points inside the potential ear - var p = ear.next.next; - - while ( p !== ear.prev ) { - - if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) { - - return false; - - } - - p = p.next; - - } - - return true; - - } - - function isEarHashed( ear, minX, minY, invSize ) { - - var a = ear.prev, - b = ear, - c = ear.next; - - if ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear - - // triangle bbox; min & max are calculated like this for speed - - var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), - minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), - maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), - maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); - - // z-order range for the current triangle bbox; - - var minZ = zOrder( minTX, minTY, minX, minY, invSize ), - maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); - - // first look for points inside the triangle in increasing z-order - - var p = ear.nextZ; - - while ( p && p.z <= maxZ ) { - - if ( p !== ear.prev && p !== ear.next && - pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && - area( p.prev, p, p.next ) >= 0 ) return false; - p = p.nextZ; - - } - - // then look for points in decreasing z-order - - p = ear.prevZ; - - while ( p && p.z >= minZ ) { - - if ( p !== ear.prev && p !== ear.next && - pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && - area( p.prev, p, p.next ) >= 0 ) return false; - - p = p.prevZ; - - } - - return true; - - } - - // go through all polygon nodes and cure small local self-intersections - - function cureLocalIntersections( start, triangles, dim ) { - - var p = start; - - do { - - var a = p.prev, b = p.next.next; - - if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { - - triangles.push( a.i / dim ); - triangles.push( p.i / dim ); - triangles.push( b.i / dim ); - - // remove two nodes involved - - removeNode( p ); - removeNode( p.next ); - - p = start = b; - - } - - p = p.next; - - } while ( p !== start ); - - return p; - - } - - // try splitting polygon into two and triangulate them independently - - function splitEarcut( start, triangles, dim, minX, minY, invSize ) { - - // look for a valid diagonal that divides the polygon into two - - var a = start; - - do { - - var b = a.next.next; - - while ( b !== a.prev ) { - - if ( a.i !== b.i && isValidDiagonal( a, b ) ) { - - // split the polygon in two by the diagonal - - var c = splitPolygon( a, b ); - - // filter colinear points around the cuts - - a = filterPoints( a, a.next ); - c = filterPoints( c, c.next ); - - // run earcut on each half - - earcutLinked( a, triangles, dim, minX, minY, invSize ); - earcutLinked( c, triangles, dim, minX, minY, invSize ); - return; - - } - - b = b.next; - - } - - a = a.next; - - } while ( a !== start ); - - } - - // link every hole into the outer loop, producing a single-ring polygon without holes - - function eliminateHoles( data, holeIndices, outerNode, dim ) { - - var queue = [], i, len, start, end, list; - - for ( i = 0, len = holeIndices.length; i < len; i ++ ) { - - start = holeIndices[ i ] * dim; - end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; - list = linkedList( data, start, end, dim, false ); - if ( list === list.next ) list.steiner = true; - queue.push( getLeftmost( list ) ); - - } - - queue.sort( compareX ); - - // process holes from left to right - - for ( i = 0; i < queue.length; i ++ ) { - - eliminateHole( queue[ i ], outerNode ); - outerNode = filterPoints( outerNode, outerNode.next ); - - } - - return outerNode; - - } - - function compareX( a, b ) { - - return a.x - b.x; - - } - - // find a bridge between vertices that connects hole with an outer ring and and link it - - function eliminateHole( hole, outerNode ) { - - outerNode = findHoleBridge( hole, outerNode ); - - if ( outerNode ) { - - var b = splitPolygon( outerNode, hole ); - - filterPoints( b, b.next ); - - } - - } - - // David Eberly's algorithm for finding a bridge between hole and outer polygon - - function findHoleBridge( hole, outerNode ) { - - var p = outerNode, - hx = hole.x, - hy = hole.y, - qx = - Infinity, - m; - - // find a segment intersected by a ray from the hole's leftmost point to the left; - // segment's endpoint with lesser x will be potential connection point - - do { - - if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { - - var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); - - if ( x <= hx && x > qx ) { - - qx = x; - - if ( x === hx ) { - - if ( hy === p.y ) return p; - if ( hy === p.next.y ) return p.next; - - } - - m = p.x < p.next.x ? p : p.next; - - } - - } - - p = p.next; - - } while ( p !== outerNode ); - - if ( ! m ) return null; - - if ( hx === qx ) return m.prev; // hole touches outer segment; pick lower endpoint - - // look for points inside the triangle of hole point, segment intersection and endpoint; - // if there are no points found, we have a valid connection; - // otherwise choose the point of the minimum angle with the ray as connection point - - var stop = m, - mx = m.x, - my = m.y, - tanMin = Infinity, - tan; - - p = m.next; - - while ( p !== stop ) { - - if ( hx >= p.x && p.x >= mx && hx !== p.x && - pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { - - tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential - - if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { - - m = p; - tanMin = tan; - - } - - } - - p = p.next; - - } - - return m; - - } - - // interlink polygon nodes in z-order - - function indexCurve( start, minX, minY, invSize ) { - - var p = start; - - do { - - if ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize ); - p.prevZ = p.prev; - p.nextZ = p.next; - p = p.next; - - } while ( p !== start ); - - p.prevZ.nextZ = null; - p.prevZ = null; - - sortLinked( p ); - - } - - // Simon Tatham's linked list merge sort algorithm - // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html - - function sortLinked( list ) { - - var i, p, q, e, tail, numMerges, pSize, qSize, inSize = 1; - - do { - - p = list; - list = null; - tail = null; - numMerges = 0; - - while ( p ) { - - numMerges ++; - q = p; - pSize = 0; - - for ( i = 0; i < inSize; i ++ ) { - - pSize ++; - q = q.nextZ; - if ( ! q ) break; - - } - - qSize = inSize; - - while ( pSize > 0 || ( qSize > 0 && q ) ) { - - if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { - - e = p; - p = p.nextZ; - pSize --; - - } else { - - e = q; - q = q.nextZ; - qSize --; - - } - - if ( tail ) tail.nextZ = e; - else list = e; - - e.prevZ = tail; - tail = e; - - } - - p = q; - - } - - tail.nextZ = null; - inSize *= 2; - - } while ( numMerges > 1 ); - - return list; - - } - - // z-order of a point given coords and inverse of the longer side of data bbox - - function zOrder( x, y, minX, minY, invSize ) { - - // coords are transformed into non-negative 15-bit integer range - - x = 32767 * ( x - minX ) * invSize; - y = 32767 * ( y - minY ) * invSize; - - x = ( x | ( x << 8 ) ) & 0x00FF00FF; - x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; - x = ( x | ( x << 2 ) ) & 0x33333333; - x = ( x | ( x << 1 ) ) & 0x55555555; - - y = ( y | ( y << 8 ) ) & 0x00FF00FF; - y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; - y = ( y | ( y << 2 ) ) & 0x33333333; - y = ( y | ( y << 1 ) ) & 0x55555555; - - return x | ( y << 1 ); - - } - - // find the leftmost node of a polygon ring - - function getLeftmost( start ) { - - var p = start, leftmost = start; - - do { - - if ( p.x < leftmost.x ) leftmost = p; - p = p.next; - - } while ( p !== start ); - - return leftmost; - - } - - // check if a point lies within a convex triangle - - function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { - - return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && - ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && - ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; - - } - - // check if a diagonal between two polygon nodes is valid (lies in polygon interior) - - function isValidDiagonal( a, b ) { - - return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && - locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); - - } - - // signed area of a triangle - - function area( p, q, r ) { - - return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); - - } - - // check if two points are equal - - function equals( p1, p2 ) { - - return p1.x === p2.x && p1.y === p2.y; - - } - - // check if two segments intersect - - function intersects( p1, q1, p2, q2 ) { - - if ( ( equals( p1, q1 ) && equals( p2, q2 ) ) || - ( equals( p1, q2 ) && equals( p2, q1 ) ) ) return true; - - return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && - area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; - - } - - // check if a polygon diagonal intersects any polygon segments - - function intersectsPolygon( a, b ) { - - var p = a; - - do { - - if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && - intersects( p, p.next, a, b ) ) { - - return true; - - } - - p = p.next; - - } while ( p !== a ); - - return false; - - } - - // check if a polygon diagonal is locally inside the polygon - - function locallyInside( a, b ) { - - return area( a.prev, a, a.next ) < 0 ? - area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : - area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; - - } - - // check if the middle point of a polygon diagonal is inside the polygon - - function middleInside( a, b ) { - - var p = a, - inside = false, - px = ( a.x + b.x ) / 2, - py = ( a.y + b.y ) / 2; - - do { - - if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && - ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) { - - inside = ! inside; - - } - - p = p.next; - - } while ( p !== a ); - - return inside; - - } - - // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; - // if one belongs to the outer ring and another to a hole, it merges it into a single ring - - function splitPolygon( a, b ) { - - var a2 = new Node( a.i, a.x, a.y ), - b2 = new Node( b.i, b.x, b.y ), - an = a.next, - bp = b.prev; - - a.next = b; - b.prev = a; - - a2.next = an; - an.prev = a2; - - b2.next = a2; - a2.prev = b2; - - bp.next = b2; - b2.prev = bp; - - return b2; - - } - - // create a node and optionally link it with previous one (in a circular doubly linked list) - - function insertNode( i, x, y, last ) { - - var p = new Node( i, x, y ); - - if ( ! last ) { - - p.prev = p; - p.next = p; - - } else { - - p.next = last.next; - p.prev = last; - last.next.prev = p; - last.next = p; - - } - - return p; - - } - - function removeNode( p ) { - - p.next.prev = p.prev; - p.prev.next = p.next; - - if ( p.prevZ ) p.prevZ.nextZ = p.nextZ; - if ( p.nextZ ) p.nextZ.prevZ = p.prevZ; - - } - - function Node( i, x, y ) { - - // vertice index in coordinates array - this.i = i; - - // vertex coordinates - this.x = x; - this.y = y; - - // previous and next vertice nodes in a polygon ring - this.prev = null; - this.next = null; - - // z-order curve value - this.z = null; - - // previous and next nodes in z-order - this.prevZ = null; - this.nextZ = null; - - // indicates whether this is a steiner point - this.steiner = false; - - } - - function signedArea( data, start, end, dim ) { - - var sum = 0; - - for ( var i = start, j = end - dim; i < end; i += dim ) { - - sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); - j = i; - - } - - return sum; - - } - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - */ - - var ShapeUtils = { - - // calculate area of the contour polygon - - area: function ( contour ) { - - var n = contour.length; - var a = 0.0; - - for ( var p = n - 1, q = 0; q < n; p = q ++ ) { - - a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; - - } - - return a * 0.5; - - }, - - isClockWise: function ( pts ) { - - return ShapeUtils.area( pts ) < 0; - - }, - - triangulateShape: function ( contour, holes ) { - - var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] - var holeIndices = []; // array of hole indices - var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] - - removeDupEndPts( contour ); - addContour( vertices, contour ); - - // - - var holeIndex = contour.length; - - holes.forEach( removeDupEndPts ); - - for ( var i = 0; i < holes.length; i ++ ) { - - holeIndices.push( holeIndex ); - holeIndex += holes[ i ].length; - addContour( vertices, holes[ i ] ); - - } - - // - - var triangles = Earcut.triangulate( vertices, holeIndices ); - - // - - for ( var i = 0; i < triangles.length; i += 3 ) { - - faces.push( triangles.slice( i, i + 3 ) ); - - } - - return faces; - - } - - }; - - function removeDupEndPts( points ) { - - var l = points.length; - - if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { - - points.pop(); - - } - - } - - function addContour( vertices, contour ) { - - for ( var i = 0; i < contour.length; i ++ ) { - - vertices.push( contour[ i ].x ); - vertices.push( contour[ i ].y ); - - } - - } - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * - * Creates extruded geometry from a path shape. - * - * parameters = { - * - * curveSegments: , // number of points on the curves - * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too - * depth: , // Depth to extrude the shape - * - * bevelEnabled: , // turn on bevel - * bevelThickness: , // how deep into the original shape bevel goes - * bevelSize: , // how far from shape outline is bevel - * bevelSegments: , // number of bevel layers - * - * extrudePath: // curve to extrude shape along - * - * UVGenerator: // object that provides UV generator functions - * - * } - */ - - // ExtrudeGeometry - - function ExtrudeGeometry( shapes, options ) { - - Geometry.call( this ); - - this.type = 'ExtrudeGeometry'; - - this.parameters = { - shapes: shapes, - options: options - }; - - this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); - this.mergeVertices(); - - } - - ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); - ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; - - ExtrudeGeometry.prototype.toJSON = function () { - - var data = Geometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - var options = this.parameters.options; - - return toJSON( shapes, options, data ); - - }; - - // ExtrudeBufferGeometry - - function ExtrudeBufferGeometry( shapes, options ) { - - BufferGeometry.call( this ); - - this.type = 'ExtrudeBufferGeometry'; - - this.parameters = { - shapes: shapes, - options: options - }; - - shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; - - var scope = this; - - var verticesArray = []; - var uvArray = []; - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - addShape( shape ); - - } - - // build geometry - - this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); - - this.computeVertexNormals(); - - // functions - - function addShape( shape ) { - - var placeholder = []; - - // options - - var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; - var steps = options.steps !== undefined ? options.steps : 1; - var depth = options.depth !== undefined ? options.depth : 100; - - var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; - var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; - var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; - var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; - - var extrudePath = options.extrudePath; - - var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; - - // deprecated options - - if ( options.amount !== undefined ) { - - console.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' ); - depth = options.amount; - - } - - // - - var extrudePts, extrudeByPath = false; - var splineTube, binormal, normal, position2; - - if ( extrudePath ) { - - extrudePts = extrudePath.getSpacedPoints( steps ); - - extrudeByPath = true; - bevelEnabled = false; // bevels not supported for path extrusion - - // SETUP TNB variables - - // TODO1 - have a .isClosed in spline? - - splineTube = extrudePath.computeFrenetFrames( steps, false ); - - // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); - - binormal = new Vector3(); - normal = new Vector3(); - position2 = new Vector3(); - - } - - // Safeguards if bevels are not enabled - - if ( ! bevelEnabled ) { - - bevelSegments = 0; - bevelThickness = 0; - bevelSize = 0; - - } - - // Variables initialization - - var ahole, h, hl; // looping of holes - - var shapePoints = shape.extractPoints( curveSegments ); - - var vertices = shapePoints.shape; - var holes = shapePoints.holes; - - var reverse = ! ShapeUtils.isClockWise( vertices ); - - if ( reverse ) { - - vertices = vertices.reverse(); - - // Maybe we should also check if holes are in the opposite direction, just to be safe ... - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - - if ( ShapeUtils.isClockWise( ahole ) ) { - - holes[ h ] = ahole.reverse(); - - } - - } - - } - - - var faces = ShapeUtils.triangulateShape( vertices, holes ); - - /* Vertices */ - - var contour = vertices; // vertices has all points but contour has only points of circumference - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - - vertices = vertices.concat( ahole ); - - } - - - function scalePt2( pt, vec, size ) { - - if ( ! vec ) console.error( "THREE.ExtrudeGeometry: vec does not exist" ); - - return vec.clone().multiplyScalar( size ).add( pt ); - - } - - var b, bs, t, z, - vert, vlen = vertices.length, - face, flen = faces.length; - - - // Find directions for point movement - - - function getBevelVec( inPt, inPrev, inNext ) { - - // computes for inPt the corresponding point inPt' on a new contour - // shifted by 1 unit (length of normalized vector) to the left - // if we walk along contour clockwise, this new contour is outside the old one - // - // inPt' is the intersection of the two lines parallel to the two - // adjacent edges of inPt at a distance of 1 unit on the left side. - - var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt - - // good reading for geometry algorithms (here: line-line intersection) - // http://geomalgorithms.com/a05-_intersect-1.html - - var v_prev_x = inPt.x - inPrev.x, - v_prev_y = inPt.y - inPrev.y; - var v_next_x = inNext.x - inPt.x, - v_next_y = inNext.y - inPt.y; - - var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); - - // check for collinear edges - var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); - - if ( Math.abs( collinear0 ) > Number.EPSILON ) { - - // not collinear - - // length of vectors for normalizing - - var v_prev_len = Math.sqrt( v_prev_lensq ); - var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); - - // shift adjacent points by unit vectors to the left - - var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); - var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); - - var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); - var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); - - // scaling factor for v_prev to intersection point - - var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - - ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / - ( v_prev_x * v_next_y - v_prev_y * v_next_x ); - - // vector from inPt to intersection point - - v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); - v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); - - // Don't normalize!, otherwise sharp corners become ugly - // but prevent crazy spikes - var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); - if ( v_trans_lensq <= 2 ) { - - return new Vector2( v_trans_x, v_trans_y ); - - } else { - - shrink_by = Math.sqrt( v_trans_lensq / 2 ); - - } - - } else { - - // handle special case of collinear edges - - var direction_eq = false; // assumes: opposite - if ( v_prev_x > Number.EPSILON ) { - - if ( v_next_x > Number.EPSILON ) { - - direction_eq = true; - - } - - } else { - - if ( v_prev_x < - Number.EPSILON ) { - - if ( v_next_x < - Number.EPSILON ) { - - direction_eq = true; - - } - - } else { - - if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { - - direction_eq = true; - - } - - } - - } - - if ( direction_eq ) { - - // console.log("Warning: lines are a straight sequence"); - v_trans_x = - v_prev_y; - v_trans_y = v_prev_x; - shrink_by = Math.sqrt( v_prev_lensq ); - - } else { - - // console.log("Warning: lines are a straight spike"); - v_trans_x = v_prev_x; - v_trans_y = v_prev_y; - shrink_by = Math.sqrt( v_prev_lensq / 2 ); - - } - - } - - return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); - - } - - - var contourMovements = []; - - for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { - - if ( j === il ) j = 0; - if ( k === il ) k = 0; - - // (j)---(i)---(k) - // console.log('i,j,k', i, j , k) - - contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); - - } - - var holesMovements = [], - oneHoleMovements, verticesMovements = contourMovements.concat(); - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - - oneHoleMovements = []; - - for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { - - if ( j === il ) j = 0; - if ( k === il ) k = 0; - - // (j)---(i)---(k) - oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); - - } - - holesMovements.push( oneHoleMovements ); - verticesMovements = verticesMovements.concat( oneHoleMovements ); - - } - - - // Loop bevelSegments, 1 for the front, 1 for the back - - for ( b = 0; b < bevelSegments; b ++ ) { - - //for ( b = bevelSegments; b > 0; b -- ) { - - t = b / bevelSegments; - z = bevelThickness * Math.cos( t * Math.PI / 2 ); - bs = bevelSize * Math.sin( t * Math.PI / 2 ); - - // contract shape - - for ( i = 0, il = contour.length; i < il; i ++ ) { - - vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); - - v( vert.x, vert.y, - z ); - - } - - // expand holes - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - oneHoleMovements = holesMovements[ h ]; - - for ( i = 0, il = ahole.length; i < il; i ++ ) { - - vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); - - v( vert.x, vert.y, - z ); - - } - - } - - } - - bs = bevelSize; - - // Back facing vertices - - for ( i = 0; i < vlen; i ++ ) { - - vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; - - if ( ! extrudeByPath ) { - - v( vert.x, vert.y, 0 ); - - } else { - - // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); - - normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); - binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); - - position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); - - v( position2.x, position2.y, position2.z ); - - } - - } - - // Add stepped vertices... - // Including front facing vertices - - var s; - - for ( s = 1; s <= steps; s ++ ) { - - for ( i = 0; i < vlen; i ++ ) { - - vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; - - if ( ! extrudeByPath ) { - - v( vert.x, vert.y, depth / steps * s ); - - } else { - - // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); - - normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); - binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); - - position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); - - v( position2.x, position2.y, position2.z ); - - } - - } - - } - - - // Add bevel segments planes - - //for ( b = 1; b <= bevelSegments; b ++ ) { - for ( b = bevelSegments - 1; b >= 0; b -- ) { - - t = b / bevelSegments; - z = bevelThickness * Math.cos( t * Math.PI / 2 ); - bs = bevelSize * Math.sin( t * Math.PI / 2 ); - - // contract shape - - for ( i = 0, il = contour.length; i < il; i ++ ) { - - vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); - v( vert.x, vert.y, depth + z ); - - } - - // expand holes - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - oneHoleMovements = holesMovements[ h ]; - - for ( i = 0, il = ahole.length; i < il; i ++ ) { - - vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); - - if ( ! extrudeByPath ) { - - v( vert.x, vert.y, depth + z ); - - } else { - - v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); - - } - - } - - } - - } - - /* Faces */ - - // Top and bottom faces - - buildLidFaces(); - - // Sides faces - - buildSideFaces(); - - - ///// Internal functions - - function buildLidFaces() { - - var start = verticesArray.length / 3; - - if ( bevelEnabled ) { - - var layer = 0; // steps + 1 - var offset = vlen * layer; - - // Bottom faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); - - } - - layer = steps + bevelSegments * 2; - offset = vlen * layer; - - // Top faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); - - } - - } else { - - // Bottom faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 2 ], face[ 1 ], face[ 0 ] ); - - } - - // Top faces - - for ( i = 0; i < flen; i ++ ) { - - face = faces[ i ]; - f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); - - } - - } - - scope.addGroup( start, verticesArray.length / 3 - start, 0 ); - - } - - // Create faces for the z-sides of the shape - - function buildSideFaces() { - - var start = verticesArray.length / 3; - var layeroffset = 0; - sidewalls( contour, layeroffset ); - layeroffset += contour.length; - - for ( h = 0, hl = holes.length; h < hl; h ++ ) { - - ahole = holes[ h ]; - sidewalls( ahole, layeroffset ); - - //, true - layeroffset += ahole.length; - - } - - - scope.addGroup( start, verticesArray.length / 3 - start, 1 ); - - - } - - function sidewalls( contour, layeroffset ) { - - var j, k; - i = contour.length; - - while ( -- i >= 0 ) { - - j = i; - k = i - 1; - if ( k < 0 ) k = contour.length - 1; - - //console.log('b', i,j, i-1, k,vertices.length); - - var s = 0, - sl = steps + bevelSegments * 2; - - for ( s = 0; s < sl; s ++ ) { - - var slen1 = vlen * s; - var slen2 = vlen * ( s + 1 ); - - var a = layeroffset + j + slen1, - b = layeroffset + k + slen1, - c = layeroffset + k + slen2, - d = layeroffset + j + slen2; - - f4( a, b, c, d ); - - } - - } - - } - - function v( x, y, z ) { - - placeholder.push( x ); - placeholder.push( y ); - placeholder.push( z ); - - } - - - function f3( a, b, c ) { - - addVertex( a ); - addVertex( b ); - addVertex( c ); - - var nextIndex = verticesArray.length / 3; - var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); - - addUV( uvs[ 0 ] ); - addUV( uvs[ 1 ] ); - addUV( uvs[ 2 ] ); - - } - - function f4( a, b, c, d ) { - - addVertex( a ); - addVertex( b ); - addVertex( d ); - - addVertex( b ); - addVertex( c ); - addVertex( d ); - - - var nextIndex = verticesArray.length / 3; - var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); - - addUV( uvs[ 0 ] ); - addUV( uvs[ 1 ] ); - addUV( uvs[ 3 ] ); - - addUV( uvs[ 1 ] ); - addUV( uvs[ 2 ] ); - addUV( uvs[ 3 ] ); - - } - - function addVertex( index ) { - - verticesArray.push( placeholder[ index * 3 + 0 ] ); - verticesArray.push( placeholder[ index * 3 + 1 ] ); - verticesArray.push( placeholder[ index * 3 + 2 ] ); - - } - - - function addUV( vector2 ) { - - uvArray.push( vector2.x ); - uvArray.push( vector2.y ); - - } - - } - - } - - ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; - - ExtrudeBufferGeometry.prototype.toJSON = function () { - - var data = BufferGeometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - var options = this.parameters.options; - - return toJSON( shapes, options, data ); - - }; - - // - - var WorldUVGenerator = { - - generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { - - var a_x = vertices[ indexA * 3 ]; - var a_y = vertices[ indexA * 3 + 1 ]; - var b_x = vertices[ indexB * 3 ]; - var b_y = vertices[ indexB * 3 + 1 ]; - var c_x = vertices[ indexC * 3 ]; - var c_y = vertices[ indexC * 3 + 1 ]; - - return [ - new Vector2( a_x, a_y ), - new Vector2( b_x, b_y ), - new Vector2( c_x, c_y ) - ]; - - }, - - generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { - - var a_x = vertices[ indexA * 3 ]; - var a_y = vertices[ indexA * 3 + 1 ]; - var a_z = vertices[ indexA * 3 + 2 ]; - var b_x = vertices[ indexB * 3 ]; - var b_y = vertices[ indexB * 3 + 1 ]; - var b_z = vertices[ indexB * 3 + 2 ]; - var c_x = vertices[ indexC * 3 ]; - var c_y = vertices[ indexC * 3 + 1 ]; - var c_z = vertices[ indexC * 3 + 2 ]; - var d_x = vertices[ indexD * 3 ]; - var d_y = vertices[ indexD * 3 + 1 ]; - var d_z = vertices[ indexD * 3 + 2 ]; - - if ( Math.abs( a_y - b_y ) < 0.01 ) { - - return [ - new Vector2( a_x, 1 - a_z ), - new Vector2( b_x, 1 - b_z ), - new Vector2( c_x, 1 - c_z ), - new Vector2( d_x, 1 - d_z ) - ]; - - } else { - - return [ - new Vector2( a_y, 1 - a_z ), - new Vector2( b_y, 1 - b_z ), - new Vector2( c_y, 1 - c_z ), - new Vector2( d_y, 1 - d_z ) - ]; - - } - - } - }; - - function toJSON( shapes, options, data ) { - - // - - data.shapes = []; - - if ( Array.isArray( shapes ) ) { - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - - data.shapes.push( shape.uuid ); - - } - - } else { - - data.shapes.push( shapes.uuid ); - - } - - // - - if ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON(); - - return data; - - } - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author alteredq / http://alteredqualia.com/ - * - * Text = 3D Text - * - * parameters = { - * font: , // font - * - * size: , // size of the text - * height: , // thickness to extrude text - * curveSegments: , // number of points on the curves - * - * bevelEnabled: , // turn on bevel - * bevelThickness: , // how deep into text bevel goes - * bevelSize: // how far from text outline is bevel - * } - */ - - // TextGeometry - - function TextGeometry( text, parameters ) { - - Geometry.call( this ); - - this.type = 'TextGeometry'; - - this.parameters = { - text: text, - parameters: parameters - }; - - this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); - this.mergeVertices(); - - } - - TextGeometry.prototype = Object.create( Geometry.prototype ); - TextGeometry.prototype.constructor = TextGeometry; - - // TextBufferGeometry - - function TextBufferGeometry( text, parameters ) { - - parameters = parameters || {}; - - var font = parameters.font; - - if ( ! ( font && font.isFont ) ) { - - console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); - return new Geometry(); - - } - - var shapes = font.generateShapes( text, parameters.size ); - - // translate parameters to ExtrudeGeometry API - - parameters.depth = parameters.height !== undefined ? parameters.height : 50; - - // defaults - - if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; - if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; - if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; - - ExtrudeBufferGeometry.call( this, shapes, parameters ); - - this.type = 'TextBufferGeometry'; - - } - - TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); - TextBufferGeometry.prototype.constructor = TextBufferGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author benaadams / https://twitter.com/ben_a_adams - * @author Mugen87 / https://github.com/Mugen87 - */ - - // SphereGeometry - - function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'SphereGeometry'; - - this.parameters = { - radius: radius, - widthSegments: widthSegments, - heightSegments: heightSegments, - phiStart: phiStart, - phiLength: phiLength, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - SphereGeometry.prototype = Object.create( Geometry.prototype ); - SphereGeometry.prototype.constructor = SphereGeometry; - - // SphereBufferGeometry - - function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'SphereBufferGeometry'; - - this.parameters = { - radius: radius, - widthSegments: widthSegments, - heightSegments: heightSegments, - phiStart: phiStart, - phiLength: phiLength, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - radius = radius || 1; - - widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); - heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); - - phiStart = phiStart !== undefined ? phiStart : 0; - phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; - - thetaStart = thetaStart !== undefined ? thetaStart : 0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI; - - var thetaEnd = thetaStart + thetaLength; - - var ix, iy; - - var index = 0; - var grid = []; - - var vertex = new Vector3(); - var normal = new Vector3(); - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // generate vertices, normals and uvs - - for ( iy = 0; iy <= heightSegments; iy ++ ) { - - var verticesRow = []; - - var v = iy / heightSegments; - - for ( ix = 0; ix <= widthSegments; ix ++ ) { - - var u = ix / widthSegments; - - // vertex - - vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); - vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normal.set( vertex.x, vertex.y, vertex.z ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u, 1 - v ); - - verticesRow.push( index ++ ); - - } - - grid.push( verticesRow ); - - } - - // indices - - for ( iy = 0; iy < heightSegments; iy ++ ) { - - for ( ix = 0; ix < widthSegments; ix ++ ) { - - var a = grid[ iy ][ ix + 1 ]; - var b = grid[ iy ][ ix ]; - var c = grid[ iy + 1 ][ ix ]; - var d = grid[ iy + 1 ][ ix + 1 ]; - - if ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d ); - if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; - - /** - * @author Kaleb Murphy - * @author Mugen87 / https://github.com/Mugen87 - */ - - // RingGeometry - - function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'RingGeometry'; - - this.parameters = { - innerRadius: innerRadius, - outerRadius: outerRadius, - thetaSegments: thetaSegments, - phiSegments: phiSegments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - RingGeometry.prototype = Object.create( Geometry.prototype ); - RingGeometry.prototype.constructor = RingGeometry; - - // RingBufferGeometry - - function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'RingBufferGeometry'; - - this.parameters = { - innerRadius: innerRadius, - outerRadius: outerRadius, - thetaSegments: thetaSegments, - phiSegments: phiSegments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - innerRadius = innerRadius || 0.5; - outerRadius = outerRadius || 1; - - thetaStart = thetaStart !== undefined ? thetaStart : 0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - - thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; - phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // some helper variables - - var segment; - var radius = innerRadius; - var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); - var vertex = new Vector3(); - var uv = new Vector2(); - var j, i; - - // generate vertices, normals and uvs - - for ( j = 0; j <= phiSegments; j ++ ) { - - for ( i = 0; i <= thetaSegments; i ++ ) { - - // values are generate from the inside of the ring to the outside - - segment = thetaStart + i / thetaSegments * thetaLength; - - // vertex - - vertex.x = radius * Math.cos( segment ); - vertex.y = radius * Math.sin( segment ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normals.push( 0, 0, 1 ); - - // uv - - uv.x = ( vertex.x / outerRadius + 1 ) / 2; - uv.y = ( vertex.y / outerRadius + 1 ) / 2; - - uvs.push( uv.x, uv.y ); - - } - - // increase the radius for next row of vertices - - radius += radiusStep; - - } - - // indices - - for ( j = 0; j < phiSegments; j ++ ) { - - var thetaSegmentLevel = j * ( thetaSegments + 1 ); - - for ( i = 0; i < thetaSegments; i ++ ) { - - segment = i + thetaSegmentLevel; - - var a = segment; - var b = segment + thetaSegments + 1; - var c = segment + thetaSegments + 2; - var d = segment + 1; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - RingBufferGeometry.prototype.constructor = RingBufferGeometry; - - /** - * @author zz85 / https://github.com/zz85 - * @author bhouston / http://clara.io - * @author Mugen87 / https://github.com/Mugen87 - */ - - // LatheGeometry - - function LatheGeometry( points, segments, phiStart, phiLength ) { - - Geometry.call( this ); - - this.type = 'LatheGeometry'; - - this.parameters = { - points: points, - segments: segments, - phiStart: phiStart, - phiLength: phiLength - }; - - this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); - this.mergeVertices(); - - } - - LatheGeometry.prototype = Object.create( Geometry.prototype ); - LatheGeometry.prototype.constructor = LatheGeometry; - - // LatheBufferGeometry - - function LatheBufferGeometry( points, segments, phiStart, phiLength ) { - - BufferGeometry.call( this ); - - this.type = 'LatheBufferGeometry'; - - this.parameters = { - points: points, - segments: segments, - phiStart: phiStart, - phiLength: phiLength - }; - - segments = Math.floor( segments ) || 12; - phiStart = phiStart || 0; - phiLength = phiLength || Math.PI * 2; - - // clamp phiLength so it's in range of [ 0, 2PI ] - - phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); - - - // buffers - - var indices = []; - var vertices = []; - var uvs = []; - - // helper variables - - var base; - var inverseSegments = 1.0 / segments; - var vertex = new Vector3(); - var uv = new Vector2(); - var i, j; - - // generate vertices and uvs - - for ( i = 0; i <= segments; i ++ ) { - - var phi = phiStart + i * inverseSegments * phiLength; - - var sin = Math.sin( phi ); - var cos = Math.cos( phi ); - - for ( j = 0; j <= ( points.length - 1 ); j ++ ) { - - // vertex - - vertex.x = points[ j ].x * sin; - vertex.y = points[ j ].y; - vertex.z = points[ j ].x * cos; - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // uv - - uv.x = i / segments; - uv.y = j / ( points.length - 1 ); - - uvs.push( uv.x, uv.y ); - - - } - - } - - // indices - - for ( i = 0; i < segments; i ++ ) { - - for ( j = 0; j < ( points.length - 1 ); j ++ ) { - - base = j + i * points.length; - - var a = base; - var b = base + points.length; - var c = base + points.length + 1; - var d = base + 1; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - // generate normals - - this.computeVertexNormals(); - - // if the geometry is closed, we need to average the normals along the seam. - // because the corresponding vertices are identical (but still have different UVs). - - if ( phiLength === Math.PI * 2 ) { - - var normals = this.attributes.normal.array; - var n1 = new Vector3(); - var n2 = new Vector3(); - var n = new Vector3(); - - // this is the buffer offset for the last line of vertices - - base = segments * points.length * 3; - - for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { - - // select the normal of the vertex in the first line - - n1.x = normals[ j + 0 ]; - n1.y = normals[ j + 1 ]; - n1.z = normals[ j + 2 ]; - - // select the normal of the vertex in the last line - - n2.x = normals[ base + j + 0 ]; - n2.y = normals[ base + j + 1 ]; - n2.z = normals[ base + j + 2 ]; - - // average normals - - n.addVectors( n1, n2 ).normalize(); - - // assign the new values to both normals - - normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; - normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; - normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; - - } - - } - - } - - LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; - - /** - * @author jonobr1 / http://jonobr1.com - * @author Mugen87 / https://github.com/Mugen87 - */ - - // ShapeGeometry - - function ShapeGeometry( shapes, curveSegments ) { - - Geometry.call( this ); - - this.type = 'ShapeGeometry'; - - if ( typeof curveSegments === 'object' ) { - - console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); - - curveSegments = curveSegments.curveSegments; - - } - - this.parameters = { - shapes: shapes, - curveSegments: curveSegments - }; - - this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); - this.mergeVertices(); - - } - - ShapeGeometry.prototype = Object.create( Geometry.prototype ); - ShapeGeometry.prototype.constructor = ShapeGeometry; - - ShapeGeometry.prototype.toJSON = function () { - - var data = Geometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - - return toJSON$1( shapes, data ); - - }; - - // ShapeBufferGeometry - - function ShapeBufferGeometry( shapes, curveSegments ) { - - BufferGeometry.call( this ); - - this.type = 'ShapeBufferGeometry'; - - this.parameters = { - shapes: shapes, - curveSegments: curveSegments - }; - - curveSegments = curveSegments || 12; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var groupStart = 0; - var groupCount = 0; - - // allow single and array values for "shapes" parameter - - if ( Array.isArray( shapes ) === false ) { - - addShape( shapes ); - - } else { - - for ( var i = 0; i < shapes.length; i ++ ) { - - addShape( shapes[ i ] ); - - this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support - - groupStart += groupCount; - groupCount = 0; - - } - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - - // helper functions - - function addShape( shape ) { - - var i, l, shapeHole; - - var indexOffset = vertices.length / 3; - var points = shape.extractPoints( curveSegments ); - - var shapeVertices = points.shape; - var shapeHoles = points.holes; - - // check direction of vertices - - if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { - - shapeVertices = shapeVertices.reverse(); - - } - - for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { - - shapeHole = shapeHoles[ i ]; - - if ( ShapeUtils.isClockWise( shapeHole ) === true ) { - - shapeHoles[ i ] = shapeHole.reverse(); - - } - - } - - var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); - - // join vertices of inner and outer paths to a single array - - for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { - - shapeHole = shapeHoles[ i ]; - shapeVertices = shapeVertices.concat( shapeHole ); - - } - - // vertices, normals, uvs - - for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { - - var vertex = shapeVertices[ i ]; - - vertices.push( vertex.x, vertex.y, 0 ); - normals.push( 0, 0, 1 ); - uvs.push( vertex.x, vertex.y ); // world uvs - - } - - // incides - - for ( i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - var a = face[ 0 ] + indexOffset; - var b = face[ 1 ] + indexOffset; - var c = face[ 2 ] + indexOffset; - - indices.push( a, b, c ); - groupCount += 3; - - } - - } - - } - - ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; - - ShapeBufferGeometry.prototype.toJSON = function () { - - var data = BufferGeometry.prototype.toJSON.call( this ); - - var shapes = this.parameters.shapes; - - return toJSON$1( shapes, data ); - - }; - - // - - function toJSON$1( shapes, data ) { - - data.shapes = []; - - if ( Array.isArray( shapes ) ) { - - for ( var i = 0, l = shapes.length; i < l; i ++ ) { - - var shape = shapes[ i ]; - - data.shapes.push( shape.uuid ); - - } - - } else { - - data.shapes.push( shapes.uuid ); - - } - - return data; - - } - - /** - * @author WestLangley / http://github.com/WestLangley - * @author Mugen87 / https://github.com/Mugen87 - */ - - function EdgesGeometry( geometry, thresholdAngle ) { - - BufferGeometry.call( this ); - - this.type = 'EdgesGeometry'; - - this.parameters = { - thresholdAngle: thresholdAngle - }; - - thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; - - // buffer - - var vertices = []; - - // helper variables - - var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); - var edge = [ 0, 0 ], edges = {}, edge1, edge2; - var key, keys = [ 'a', 'b', 'c' ]; - - // prepare source geometry - - var geometry2; - - if ( geometry.isBufferGeometry ) { - - geometry2 = new Geometry(); - geometry2.fromBufferGeometry( geometry ); - - } else { - - geometry2 = geometry.clone(); - - } - - geometry2.mergeVertices(); - geometry2.computeFaceNormals(); - - var sourceVertices = geometry2.vertices; - var faces = geometry2.faces; - - // now create a data structure where each entry represents an edge with its adjoining faces - - for ( var i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - for ( var j = 0; j < 3; j ++ ) { - - edge1 = face[ keys[ j ] ]; - edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; - edge[ 0 ] = Math.min( edge1, edge2 ); - edge[ 1 ] = Math.max( edge1, edge2 ); - - key = edge[ 0 ] + ',' + edge[ 1 ]; - - if ( edges[ key ] === undefined ) { - - edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; - - } else { - - edges[ key ].face2 = i; - - } - - } - - } - - // generate vertices - - for ( key in edges ) { - - var e = edges[ key ]; - - // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. - - if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { - - var vertex = sourceVertices[ e.index1 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - vertex = sourceVertices[ e.index2 ]; - vertices.push( vertex.x, vertex.y, vertex.z ); - - } - - } - - // build geometry - - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - - } - - EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); - EdgesGeometry.prototype.constructor = EdgesGeometry; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - // CylinderGeometry - - function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'CylinderGeometry'; - - this.parameters = { - radiusTop: radiusTop, - radiusBottom: radiusBottom, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - CylinderGeometry.prototype = Object.create( Geometry.prototype ); - CylinderGeometry.prototype.constructor = CylinderGeometry; - - // CylinderBufferGeometry - - function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'CylinderBufferGeometry'; - - this.parameters = { - radiusTop: radiusTop, - radiusBottom: radiusBottom, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - var scope = this; - - radiusTop = radiusTop !== undefined ? radiusTop : 1; - radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; - height = height || 1; - - radialSegments = Math.floor( radialSegments ) || 8; - heightSegments = Math.floor( heightSegments ) || 1; - - openEnded = openEnded !== undefined ? openEnded : false; - thetaStart = thetaStart !== undefined ? thetaStart : 0.0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var index = 0; - var indexArray = []; - var halfHeight = height / 2; - var groupStart = 0; - - // generate geometry - - generateTorso(); - - if ( openEnded === false ) { - - if ( radiusTop > 0 ) generateCap( true ); - if ( radiusBottom > 0 ) generateCap( false ); - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - function generateTorso() { - - var x, y; - var normal = new Vector3(); - var vertex = new Vector3(); - - var groupCount = 0; - - // this will be used to calculate the normal - var slope = ( radiusBottom - radiusTop ) / height; - - // generate vertices, normals and uvs - - for ( y = 0; y <= heightSegments; y ++ ) { - - var indexRow = []; - - var v = y / heightSegments; - - // calculate the radius of the current row - - var radius = v * ( radiusBottom - radiusTop ) + radiusTop; - - for ( x = 0; x <= radialSegments; x ++ ) { - - var u = x / radialSegments; - - var theta = u * thetaLength + thetaStart; - - var sinTheta = Math.sin( theta ); - var cosTheta = Math.cos( theta ); - - // vertex - - vertex.x = radius * sinTheta; - vertex.y = - v * height + halfHeight; - vertex.z = radius * cosTheta; - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normal.set( sinTheta, slope, cosTheta ).normalize(); - normals.push( normal.x, normal.y, normal.z ); - - // uv - - uvs.push( u, 1 - v ); - - // save index of vertex in respective row - - indexRow.push( index ++ ); - - } - - // now save vertices of the row in our index array - - indexArray.push( indexRow ); - - } - - // generate indices - - for ( x = 0; x < radialSegments; x ++ ) { - - for ( y = 0; y < heightSegments; y ++ ) { - - // we use the index array to access the correct indices - - var a = indexArray[ y ][ x ]; - var b = indexArray[ y + 1 ][ x ]; - var c = indexArray[ y + 1 ][ x + 1 ]; - var d = indexArray[ y ][ x + 1 ]; - - // faces - - indices.push( a, b, d ); - indices.push( b, c, d ); - - // update group counter - - groupCount += 6; - - } - - } - - // add a group to the geometry. this will ensure multi material support - - scope.addGroup( groupStart, groupCount, 0 ); - - // calculate new start value for groups - - groupStart += groupCount; - - } - - function generateCap( top ) { - - var x, centerIndexStart, centerIndexEnd; - - var uv = new Vector2(); - var vertex = new Vector3(); - - var groupCount = 0; - - var radius = ( top === true ) ? radiusTop : radiusBottom; - var sign = ( top === true ) ? 1 : - 1; - - // save the index of the first center vertex - centerIndexStart = index; - - // first we generate the center vertex data of the cap. - // because the geometry needs one set of uvs per face, - // we must generate a center vertex per face/segment - - for ( x = 1; x <= radialSegments; x ++ ) { - - // vertex - - vertices.push( 0, halfHeight * sign, 0 ); - - // normal - - normals.push( 0, sign, 0 ); - - // uv - - uvs.push( 0.5, 0.5 ); - - // increase index - - index ++; - - } - - // save the index of the last center vertex - - centerIndexEnd = index; - - // now we generate the surrounding vertices, normals and uvs - - for ( x = 0; x <= radialSegments; x ++ ) { - - var u = x / radialSegments; - var theta = u * thetaLength + thetaStart; - - var cosTheta = Math.cos( theta ); - var sinTheta = Math.sin( theta ); - - // vertex - - vertex.x = radius * sinTheta; - vertex.y = halfHeight * sign; - vertex.z = radius * cosTheta; - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normals.push( 0, sign, 0 ); - - // uv - - uv.x = ( cosTheta * 0.5 ) + 0.5; - uv.y = ( sinTheta * 0.5 * sign ) + 0.5; - uvs.push( uv.x, uv.y ); - - // increase index - - index ++; - - } - - // generate indices - - for ( x = 0; x < radialSegments; x ++ ) { - - var c = centerIndexStart + x; - var i = centerIndexEnd + x; - - if ( top === true ) { - - // face top - - indices.push( i, i + 1, c ); - - } else { - - // face bottom - - indices.push( i + 1, i, c ); - - } - - groupCount += 3; - - } - - // add a group to the geometry. this will ensure multi material support - - scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); - - // calculate new start value for groups - - groupStart += groupCount; - - } - - } - - CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; - - /** - * @author abelnation / http://github.com/abelnation - */ - - // ConeGeometry - - function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); - - this.type = 'ConeGeometry'; - - this.parameters = { - radius: radius, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - } - - ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); - ConeGeometry.prototype.constructor = ConeGeometry; - - // ConeBufferGeometry - - function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { - - CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); - - this.type = 'ConeBufferGeometry'; - - this.parameters = { - radius: radius, - height: height, - radialSegments: radialSegments, - heightSegments: heightSegments, - openEnded: openEnded, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - } - - ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); - ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; - - /** - * @author benaadams / https://twitter.com/ben_a_adams - * @author Mugen87 / https://github.com/Mugen87 - * @author hughes - */ - - // CircleGeometry - - function CircleGeometry( radius, segments, thetaStart, thetaLength ) { - - Geometry.call( this ); - - this.type = 'CircleGeometry'; - - this.parameters = { - radius: radius, - segments: segments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); - this.mergeVertices(); - - } - - CircleGeometry.prototype = Object.create( Geometry.prototype ); - CircleGeometry.prototype.constructor = CircleGeometry; - - // CircleBufferGeometry - - function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { - - BufferGeometry.call( this ); - - this.type = 'CircleBufferGeometry'; - - this.parameters = { - radius: radius, - segments: segments, - thetaStart: thetaStart, - thetaLength: thetaLength - }; - - radius = radius || 1; - segments = segments !== undefined ? Math.max( 3, segments ) : 8; - - thetaStart = thetaStart !== undefined ? thetaStart : 0; - thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; - - // buffers - - var indices = []; - var vertices = []; - var normals = []; - var uvs = []; - - // helper variables - - var i, s; - var vertex = new Vector3(); - var uv = new Vector2(); - - // center point - - vertices.push( 0, 0, 0 ); - normals.push( 0, 0, 1 ); - uvs.push( 0.5, 0.5 ); - - for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { - - var segment = thetaStart + s / segments * thetaLength; - - // vertex - - vertex.x = radius * Math.cos( segment ); - vertex.y = radius * Math.sin( segment ); - - vertices.push( vertex.x, vertex.y, vertex.z ); - - // normal - - normals.push( 0, 0, 1 ); - - // uvs - - uv.x = ( vertices[ i ] / radius + 1 ) / 2; - uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; - - uvs.push( uv.x, uv.y ); - - } - - // indices - - for ( i = 1; i <= segments; i ++ ) { - - indices.push( i, i + 1, 0 ); - - } - - // build geometry - - this.setIndex( indices ); - this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); - this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); - - } - - CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); - CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; - - - - var Geometries = /*#__PURE__*/Object.freeze({ - WireframeGeometry: WireframeGeometry, - ParametricGeometry: ParametricGeometry, - ParametricBufferGeometry: ParametricBufferGeometry, - TetrahedronGeometry: TetrahedronGeometry, - TetrahedronBufferGeometry: TetrahedronBufferGeometry, - OctahedronGeometry: OctahedronGeometry, - OctahedronBufferGeometry: OctahedronBufferGeometry, - IcosahedronGeometry: IcosahedronGeometry, - IcosahedronBufferGeometry: IcosahedronBufferGeometry, - DodecahedronGeometry: DodecahedronGeometry, - DodecahedronBufferGeometry: DodecahedronBufferGeometry, - PolyhedronGeometry: PolyhedronGeometry, - PolyhedronBufferGeometry: PolyhedronBufferGeometry, - TubeGeometry: TubeGeometry, - TubeBufferGeometry: TubeBufferGeometry, - TorusKnotGeometry: TorusKnotGeometry, - TorusKnotBufferGeometry: TorusKnotBufferGeometry, - TorusGeometry: TorusGeometry, - TorusBufferGeometry: TorusBufferGeometry, - TextGeometry: TextGeometry, - TextBufferGeometry: TextBufferGeometry, - SphereGeometry: SphereGeometry, - SphereBufferGeometry: SphereBufferGeometry, - RingGeometry: RingGeometry, - RingBufferGeometry: RingBufferGeometry, - PlaneGeometry: PlaneGeometry, - PlaneBufferGeometry: PlaneBufferGeometry, - LatheGeometry: LatheGeometry, - LatheBufferGeometry: LatheBufferGeometry, - ShapeGeometry: ShapeGeometry, - ShapeBufferGeometry: ShapeBufferGeometry, - ExtrudeGeometry: ExtrudeGeometry, - ExtrudeBufferGeometry: ExtrudeBufferGeometry, - EdgesGeometry: EdgesGeometry, - ConeGeometry: ConeGeometry, - ConeBufferGeometry: ConeBufferGeometry, - CylinderGeometry: CylinderGeometry, - CylinderBufferGeometry: CylinderBufferGeometry, - CircleGeometry: CircleGeometry, - CircleBufferGeometry: CircleBufferGeometry, - BoxGeometry: BoxGeometry, - BoxBufferGeometry: BoxBufferGeometry - }); - - /** - * @author mrdoob / http://mrdoob.com/ - * - * parameters = { - * color: - * } - */ - - function ShadowMaterial( parameters ) { - - Material.call( this ); - - this.type = 'ShadowMaterial'; - - this.color = new Color( 0x000000 ); - this.transparent = true; - - this.setValues( parameters ); - - } - - ShadowMaterial.prototype = Object.create( Material.prototype ); - ShadowMaterial.prototype.constructor = ShadowMaterial; - - ShadowMaterial.prototype.isShadowMaterial = true; - - ShadowMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function RawShaderMaterial( parameters ) { - - ShaderMaterial.call( this, parameters ); - - this.type = 'RawShaderMaterial'; - - } - - RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); - RawShaderMaterial.prototype.constructor = RawShaderMaterial; - - RawShaderMaterial.prototype.isRawShaderMaterial = true; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * color: , - * roughness: , - * metalness: , - * opacity: , - * - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * emissive: , - * emissiveIntensity: - * emissiveMap: new THREE.Texture( ), - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * roughnessMap: new THREE.Texture( ), - * - * metalnessMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * envMapIntensity: - * - * refractionRatio: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshStandardMaterial( parameters ) { - - Material.call( this ); - - this.defines = { 'STANDARD': '' }; - - this.type = 'MeshStandardMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - this.roughness = 0.5; - this.metalness = 0.5; - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.emissive = new Color( 0x000000 ); - this.emissiveIntensity = 1.0; - this.emissiveMap = null; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.roughnessMap = null; - - this.metalnessMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.envMapIntensity = 1.0; - - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshStandardMaterial.prototype = Object.create( Material.prototype ); - MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; - - MeshStandardMaterial.prototype.isMeshStandardMaterial = true; - - MeshStandardMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.defines = { 'STANDARD': '' }; - - this.color.copy( source.color ); - this.roughness = source.roughness; - this.metalness = source.metalness; - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.emissive.copy( source.emissive ); - this.emissiveMap = source.emissiveMap; - this.emissiveIntensity = source.emissiveIntensity; - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.roughnessMap = source.roughnessMap; - - this.metalnessMap = source.metalnessMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.envMapIntensity = source.envMapIntensity; - - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * reflectivity: - * clearCoat: - * clearCoatRoughness: - * } - */ - - function MeshPhysicalMaterial( parameters ) { - - MeshStandardMaterial.call( this ); - - this.defines = { 'PHYSICAL': '' }; - - this.type = 'MeshPhysicalMaterial'; - - this.reflectivity = 0.5; // maps to F0 = 0.04 - - this.clearCoat = 0.0; - this.clearCoatRoughness = 0.0; - - this.setValues( parameters ); - - } - - MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); - MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; - - MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; - - MeshPhysicalMaterial.prototype.copy = function ( source ) { - - MeshStandardMaterial.prototype.copy.call( this, source ); - - this.defines = { 'PHYSICAL': '' }; - - this.reflectivity = source.reflectivity; - - this.clearCoat = source.clearCoat; - this.clearCoatRoughness = source.clearCoatRoughness; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * specular: , - * shininess: , - * opacity: , - * - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * emissive: , - * emissiveIntensity: - * emissiveMap: new THREE.Texture( ), - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * specularMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * combine: THREE.Multiply, - * reflectivity: , - * refractionRatio: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshPhongMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshPhongMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - this.specular = new Color( 0x111111 ); - this.shininess = 30; - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.emissive = new Color( 0x000000 ); - this.emissiveIntensity = 1.0; - this.emissiveMap = null; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.specularMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.combine = MultiplyOperation; - this.reflectivity = 1; - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshPhongMaterial.prototype = Object.create( Material.prototype ); - MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; - - MeshPhongMaterial.prototype.isMeshPhongMaterial = true; - - MeshPhongMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - this.specular.copy( source.specular ); - this.shininess = source.shininess; - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.emissive.copy( source.emissive ); - this.emissiveMap = source.emissiveMap; - this.emissiveIntensity = source.emissiveIntensity; - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.specularMap = source.specularMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.combine = source.combine; - this.reflectivity = source.reflectivity; - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author takahirox / http://github.com/takahirox - * - * parameters = { - * gradientMap: new THREE.Texture( ) - * } - */ - - function MeshToonMaterial( parameters ) { - - MeshPhongMaterial.call( this ); - - this.defines = { 'TOON': '' }; - - this.type = 'MeshToonMaterial'; - - this.gradientMap = null; - - this.setValues( parameters ); - - } - - MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); - MeshToonMaterial.prototype.constructor = MeshToonMaterial; - - MeshToonMaterial.prototype.isMeshToonMaterial = true; - - MeshToonMaterial.prototype.copy = function ( source ) { - - MeshPhongMaterial.prototype.copy.call( this, source ); - - this.gradientMap = source.gradientMap; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * opacity: , - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * wireframe: , - * wireframeLinewidth: - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshNormalMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshNormalMaterial'; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.wireframe = false; - this.wireframeLinewidth = 1; - - this.fog = false; - this.lights = false; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshNormalMaterial.prototype = Object.create( Material.prototype ); - MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; - - MeshNormalMaterial.prototype.isMeshNormalMaterial = true; - - MeshNormalMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * - * map: new THREE.Texture( ), - * - * lightMap: new THREE.Texture( ), - * lightMapIntensity: - * - * aoMap: new THREE.Texture( ), - * aoMapIntensity: - * - * emissive: , - * emissiveIntensity: - * emissiveMap: new THREE.Texture( ), - * - * specularMap: new THREE.Texture( ), - * - * alphaMap: new THREE.Texture( ), - * - * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), - * combine: THREE.Multiply, - * reflectivity: , - * refractionRatio: , - * - * wireframe: , - * wireframeLinewidth: , - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshLambertMaterial( parameters ) { - - Material.call( this ); - - this.type = 'MeshLambertMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - - this.map = null; - - this.lightMap = null; - this.lightMapIntensity = 1.0; - - this.aoMap = null; - this.aoMapIntensity = 1.0; - - this.emissive = new Color( 0x000000 ); - this.emissiveIntensity = 1.0; - this.emissiveMap = null; - - this.specularMap = null; - - this.alphaMap = null; - - this.envMap = null; - this.combine = MultiplyOperation; - this.reflectivity = 1; - this.refractionRatio = 0.98; - - this.wireframe = false; - this.wireframeLinewidth = 1; - this.wireframeLinecap = 'round'; - this.wireframeLinejoin = 'round'; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.setValues( parameters ); - - } - - MeshLambertMaterial.prototype = Object.create( Material.prototype ); - MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; - - MeshLambertMaterial.prototype.isMeshLambertMaterial = true; - - MeshLambertMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - - this.map = source.map; - - this.lightMap = source.lightMap; - this.lightMapIntensity = source.lightMapIntensity; - - this.aoMap = source.aoMap; - this.aoMapIntensity = source.aoMapIntensity; - - this.emissive.copy( source.emissive ); - this.emissiveMap = source.emissiveMap; - this.emissiveIntensity = source.emissiveIntensity; - - this.specularMap = source.specularMap; - - this.alphaMap = source.alphaMap; - - this.envMap = source.envMap; - this.combine = source.combine; - this.reflectivity = source.reflectivity; - this.refractionRatio = source.refractionRatio; - - this.wireframe = source.wireframe; - this.wireframeLinewidth = source.wireframeLinewidth; - this.wireframeLinecap = source.wireframeLinecap; - this.wireframeLinejoin = source.wireframeLinejoin; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * - * parameters = { - * color: , - * opacity: , - * - * matcap: new THREE.Texture( ), - * - * map: new THREE.Texture( ), - * - * bumpMap: new THREE.Texture( ), - * bumpScale: , - * - * normalMap: new THREE.Texture( ), - * normalMapType: THREE.TangentSpaceNormalMap, - * normalScale: , - * - * displacementMap: new THREE.Texture( ), - * displacementScale: , - * displacementBias: , - * - * alphaMap: new THREE.Texture( ), - * - * skinning: , - * morphTargets: , - * morphNormals: - * } - */ - - function MeshMatcapMaterial( parameters ) { - - Material.call( this ); - - this.defines = { 'MATCAP': '' }; - - this.type = 'MeshMatcapMaterial'; - - this.color = new Color( 0xffffff ); // diffuse - - this.matcap = null; - - this.map = null; - - this.bumpMap = null; - this.bumpScale = 1; - - this.normalMap = null; - this.normalMapType = TangentSpaceNormalMap; - this.normalScale = new Vector2( 1, 1 ); - - this.displacementMap = null; - this.displacementScale = 1; - this.displacementBias = 0; - - this.alphaMap = null; - - this.skinning = false; - this.morphTargets = false; - this.morphNormals = false; - - this.lights = false; - - this.setValues( parameters ); - - } - - MeshMatcapMaterial.prototype = Object.create( Material.prototype ); - MeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial; - - MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; - - MeshMatcapMaterial.prototype.copy = function ( source ) { - - Material.prototype.copy.call( this, source ); - - this.defines = { 'MATCAP': '' }; - - this.color.copy( source.color ); - - this.matcap = source.matcap; - - this.map = source.map; - - this.bumpMap = source.bumpMap; - this.bumpScale = source.bumpScale; - - this.normalMap = source.normalMap; - this.normalMapType = source.normalMapType; - this.normalScale.copy( source.normalScale ); - - this.displacementMap = source.displacementMap; - this.displacementScale = source.displacementScale; - this.displacementBias = source.displacementBias; - - this.alphaMap = source.alphaMap; - - this.skinning = source.skinning; - this.morphTargets = source.morphTargets; - this.morphNormals = source.morphNormals; - - return this; - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * - * parameters = { - * color: , - * opacity: , - * - * linewidth: , - * - * scale: , - * dashSize: , - * gapSize: - * } - */ - - function LineDashedMaterial( parameters ) { - - LineBasicMaterial.call( this ); - - this.type = 'LineDashedMaterial'; - - this.scale = 1; - this.dashSize = 3; - this.gapSize = 1; - - this.setValues( parameters ); - - } - - LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); - LineDashedMaterial.prototype.constructor = LineDashedMaterial; - - LineDashedMaterial.prototype.isLineDashedMaterial = true; - - LineDashedMaterial.prototype.copy = function ( source ) { - - LineBasicMaterial.prototype.copy.call( this, source ); - - this.scale = source.scale; - this.dashSize = source.dashSize; - this.gapSize = source.gapSize; - - return this; - - }; - - - - var Materials = /*#__PURE__*/Object.freeze({ - ShadowMaterial: ShadowMaterial, - SpriteMaterial: SpriteMaterial, - RawShaderMaterial: RawShaderMaterial, - ShaderMaterial: ShaderMaterial, - PointsMaterial: PointsMaterial, - MeshPhysicalMaterial: MeshPhysicalMaterial, - MeshStandardMaterial: MeshStandardMaterial, - MeshPhongMaterial: MeshPhongMaterial, - MeshToonMaterial: MeshToonMaterial, - MeshNormalMaterial: MeshNormalMaterial, - MeshLambertMaterial: MeshLambertMaterial, - MeshDepthMaterial: MeshDepthMaterial, - MeshDistanceMaterial: MeshDistanceMaterial, - MeshBasicMaterial: MeshBasicMaterial, - MeshMatcapMaterial: MeshMatcapMaterial, - LineDashedMaterial: LineDashedMaterial, - LineBasicMaterial: LineBasicMaterial, - Material: Material - }); - - /** - * @author tschw - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - */ - - var AnimationUtils = { - - // same as Array.prototype.slice, but also works on typed arrays - arraySlice: function ( array, from, to ) { - - if ( AnimationUtils.isTypedArray( array ) ) { - - // in ios9 array.subarray(from, undefined) will return empty array - // but array.subarray(from) or array.subarray(from, len) is correct - return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); - - } - - return array.slice( from, to ); - - }, - - // converts an array to a specific type - convertArray: function ( array, type, forceClone ) { - - if ( ! array || // let 'undefined' and 'null' pass - ! forceClone && array.constructor === type ) return array; - - if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { - - return new type( array ); // create typed array - - } - - return Array.prototype.slice.call( array ); // create Array - - }, - - isTypedArray: function ( object ) { - - return ArrayBuffer.isView( object ) && - ! ( object instanceof DataView ); - - }, - - // returns an array by which times and values can be sorted - getKeyframeOrder: function ( times ) { - - function compareTime( i, j ) { - - return times[ i ] - times[ j ]; - - } - - var n = times.length; - var result = new Array( n ); - for ( var i = 0; i !== n; ++ i ) result[ i ] = i; - - result.sort( compareTime ); - - return result; - - }, - - // uses the array previously returned by 'getKeyframeOrder' to sort data - sortedArray: function ( values, stride, order ) { - - var nValues = values.length; - var result = new values.constructor( nValues ); - - for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { - - var srcOffset = order[ i ] * stride; - - for ( var j = 0; j !== stride; ++ j ) { - - result[ dstOffset ++ ] = values[ srcOffset + j ]; - - } - - } - - return result; - - }, - - // function for parsing AOS keyframe formats - flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { - - var i = 1, key = jsonKeys[ 0 ]; - - while ( key !== undefined && key[ valuePropertyName ] === undefined ) { - - key = jsonKeys[ i ++ ]; - - } - - if ( key === undefined ) return; // no data - - var value = key[ valuePropertyName ]; - if ( value === undefined ) return; // no data - - if ( Array.isArray( value ) ) { - - do { - - value = key[ valuePropertyName ]; - - if ( value !== undefined ) { - - times.push( key.time ); - values.push.apply( values, value ); // push all elements - - } - - key = jsonKeys[ i ++ ]; - - } while ( key !== undefined ); - - } else if ( value.toArray !== undefined ) { - - // ...assume THREE.Math-ish - - do { - - value = key[ valuePropertyName ]; - - if ( value !== undefined ) { - - times.push( key.time ); - value.toArray( values, values.length ); - - } - - key = jsonKeys[ i ++ ]; - - } while ( key !== undefined ); - - } else { - - // otherwise push as-is - - do { - - value = key[ valuePropertyName ]; - - if ( value !== undefined ) { - - times.push( key.time ); - values.push( value ); - - } - - key = jsonKeys[ i ++ ]; - - } while ( key !== undefined ); - - } - - } - - }; - - /** - * Abstract base class of interpolants over parametric samples. - * - * The parameter domain is one dimensional, typically the time or a path - * along a curve defined by the data. - * - * The sample values can have any dimensionality and derived classes may - * apply special interpretations to the data. - * - * This class provides the interval seek in a Template Method, deferring - * the actual interpolation to derived classes. - * - * Time complexity is O(1) for linear access crossing at most two points - * and O(log N) for random access, where N is the number of positions. - * - * References: - * - * http://www.oodesign.com/template-method-pattern.html - * - * @author tschw - */ - - function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - this.parameterPositions = parameterPositions; - this._cachedIndex = 0; - - this.resultBuffer = resultBuffer !== undefined ? - resultBuffer : new sampleValues.constructor( sampleSize ); - this.sampleValues = sampleValues; - this.valueSize = sampleSize; - - } - - Object.assign( Interpolant.prototype, { - - evaluate: function ( t ) { - - var pp = this.parameterPositions, - i1 = this._cachedIndex, - - t1 = pp[ i1 ], - t0 = pp[ i1 - 1 ]; - - validate_interval: { - - seek: { - - var right; - - linear_scan: { - - //- See http://jsperf.com/comparison-to-undefined/3 - //- slower code: - //- - //- if ( t >= t1 || t1 === undefined ) { - forward_scan: if ( ! ( t < t1 ) ) { - - for ( var giveUpAt = i1 + 2; ; ) { - - if ( t1 === undefined ) { - - if ( t < t0 ) break forward_scan; - - // after end - - i1 = pp.length; - this._cachedIndex = i1; - return this.afterEnd_( i1 - 1, t, t0 ); - - } - - if ( i1 === giveUpAt ) break; // this loop - - t0 = t1; - t1 = pp[ ++ i1 ]; - - if ( t < t1 ) { - - // we have arrived at the sought interval - break seek; - - } - - } - - // prepare binary search on the right side of the index - right = pp.length; - break linear_scan; - - } - - //- slower code: - //- if ( t < t0 || t0 === undefined ) { - if ( ! ( t >= t0 ) ) { - - // looping? - - var t1global = pp[ 1 ]; - - if ( t < t1global ) { - - i1 = 2; // + 1, using the scan for the details - t0 = t1global; - - } - - // linear reverse scan - - for ( var giveUpAt = i1 - 2; ; ) { - - if ( t0 === undefined ) { - - // before start - - this._cachedIndex = 0; - return this.beforeStart_( 0, t, t1 ); - - } - - if ( i1 === giveUpAt ) break; // this loop - - t1 = t0; - t0 = pp[ -- i1 - 1 ]; - - if ( t >= t0 ) { - - // we have arrived at the sought interval - break seek; - - } - - } - - // prepare binary search on the left side of the index - right = i1; - i1 = 0; - break linear_scan; - - } - - // the interval is valid - - break validate_interval; - - } // linear scan - - // binary search - - while ( i1 < right ) { - - var mid = ( i1 + right ) >>> 1; - - if ( t < pp[ mid ] ) { - - right = mid; - - } else { - - i1 = mid + 1; - - } - - } - - t1 = pp[ i1 ]; - t0 = pp[ i1 - 1 ]; - - // check boundary cases, again - - if ( t0 === undefined ) { - - this._cachedIndex = 0; - return this.beforeStart_( 0, t, t1 ); - - } - - if ( t1 === undefined ) { - - i1 = pp.length; - this._cachedIndex = i1; - return this.afterEnd_( i1 - 1, t0, t ); - - } - - } // seek - - this._cachedIndex = i1; - - this.intervalChanged_( i1, t0, t1 ); - - } // validate_interval - - return this.interpolate_( i1, t0, t, t1 ); - - }, - - settings: null, // optional, subclass-specific settings structure - // Note: The indirection allows central control of many interpolants. - - // --- Protected interface - - DefaultSettings_: {}, - - getSettings_: function () { - - return this.settings || this.DefaultSettings_; - - }, - - copySampleValue_: function ( index ) { - - // copies a sample value to the result buffer - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - offset = index * stride; - - for ( var i = 0; i !== stride; ++ i ) { - - result[ i ] = values[ offset + i ]; - - } - - return result; - - }, - - // Template methods for derived classes: - - interpolate_: function ( /* i1, t0, t, t1 */ ) { - - throw new Error( 'call to abstract method' ); - // implementations shall return this.resultBuffer - - }, - - intervalChanged_: function ( /* i1, t0, t1 */ ) { - - // empty - - } - - } ); - - //!\ DECLARE ALIAS AFTER assign prototype ! - Object.assign( Interpolant.prototype, { - - //( 0, t, t0 ), returns this.resultBuffer - beforeStart_: Interpolant.prototype.copySampleValue_, - - //( N-1, tN-1, t ), returns this.resultBuffer - afterEnd_: Interpolant.prototype.copySampleValue_, - - } ); - - /** - * Fast and simple cubic spline interpolant. - * - * It was derived from a Hermitian construction setting the first derivative - * at each sample position to the linear slope between neighboring positions - * over their parameter interval. - * - * @author tschw - */ - - function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - this._weightPrev = - 0; - this._offsetPrev = - 0; - this._weightNext = - 0; - this._offsetNext = - 0; - - } - - CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: CubicInterpolant, - - DefaultSettings_: { - - endingStart: ZeroCurvatureEnding, - endingEnd: ZeroCurvatureEnding - - }, - - intervalChanged_: function ( i1, t0, t1 ) { - - var pp = this.parameterPositions, - iPrev = i1 - 2, - iNext = i1 + 1, - - tPrev = pp[ iPrev ], - tNext = pp[ iNext ]; - - if ( tPrev === undefined ) { - - switch ( this.getSettings_().endingStart ) { - - case ZeroSlopeEnding: - - // f'(t0) = 0 - iPrev = i1; - tPrev = 2 * t0 - t1; - - break; - - case WrapAroundEnding: - - // use the other end of the curve - iPrev = pp.length - 2; - tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; - - break; - - default: // ZeroCurvatureEnding - - // f''(t0) = 0 a.k.a. Natural Spline - iPrev = i1; - tPrev = t1; - - } - - } - - if ( tNext === undefined ) { - - switch ( this.getSettings_().endingEnd ) { - - case ZeroSlopeEnding: - - // f'(tN) = 0 - iNext = i1; - tNext = 2 * t1 - t0; - - break; - - case WrapAroundEnding: - - // use the other end of the curve - iNext = 1; - tNext = t1 + pp[ 1 ] - pp[ 0 ]; - - break; - - default: // ZeroCurvatureEnding - - // f''(tN) = 0, a.k.a. Natural Spline - iNext = i1 - 1; - tNext = t0; - - } - - } - - var halfDt = ( t1 - t0 ) * 0.5, - stride = this.valueSize; - - this._weightPrev = halfDt / ( t0 - tPrev ); - this._weightNext = halfDt / ( tNext - t1 ); - this._offsetPrev = iPrev * stride; - this._offsetNext = iNext * stride; - - }, - - interpolate_: function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - - o1 = i1 * stride, o0 = o1 - stride, - oP = this._offsetPrev, oN = this._offsetNext, - wP = this._weightPrev, wN = this._weightNext, - - p = ( t - t0 ) / ( t1 - t0 ), - pp = p * p, - ppp = pp * p; - - // evaluate polynomials - - var sP = - wP * ppp + 2 * wP * pp - wP * p; - var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; - var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; - var sN = wN * ppp - wN * pp; - - // combine data linearly - - for ( var i = 0; i !== stride; ++ i ) { - - result[ i ] = - sP * values[ oP + i ] + - s0 * values[ o0 + i ] + - s1 * values[ o1 + i ] + - sN * values[ oN + i ]; - - } - - return result; - - } - - } ); - - /** - * @author tschw - */ - - function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: LinearInterpolant, - - interpolate_: function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - - offset1 = i1 * stride, - offset0 = offset1 - stride, - - weight1 = ( t - t0 ) / ( t1 - t0 ), - weight0 = 1 - weight1; - - for ( var i = 0; i !== stride; ++ i ) { - - result[ i ] = - values[ offset0 + i ] * weight0 + - values[ offset1 + i ] * weight1; - - } - - return result; - - } - - } ); - - /** - * - * Interpolant that evaluates to the sample value at the position preceeding - * the parameter. - * - * @author tschw - */ - - function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: DiscreteInterpolant, - - interpolate_: function ( i1 /*, t0, t, t1 */ ) { - - return this.copySampleValue_( i1 - 1 ); - - } - - } ); - - /** - * - * A timed sequence of keyframes for a specific property. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function KeyframeTrack( name, times, values, interpolation ) { - - if ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); - if ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); - - this.name = name; - - this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); - this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); - - this.setInterpolation( interpolation || this.DefaultInterpolation ); - - } - - // Static methods - - Object.assign( KeyframeTrack, { - - // Serialization (in static context, because of constructor invocation - // and automatic invocation of .toJSON): - - toJSON: function ( track ) { - - var trackType = track.constructor; - - var json; - - // derived classes can define a static toJSON method - if ( trackType.toJSON !== undefined ) { - - json = trackType.toJSON( track ); - - } else { - - // by default, we assume the data can be serialized as-is - json = { - - 'name': track.name, - 'times': AnimationUtils.convertArray( track.times, Array ), - 'values': AnimationUtils.convertArray( track.values, Array ) - - }; - - var interpolation = track.getInterpolation(); - - if ( interpolation !== track.DefaultInterpolation ) { - - json.interpolation = interpolation; - - } - - } - - json.type = track.ValueTypeName; // mandatory - - return json; - - } - - } ); - - Object.assign( KeyframeTrack.prototype, { - - constructor: KeyframeTrack, - - TimeBufferType: Float32Array, - - ValueBufferType: Float32Array, - - DefaultInterpolation: InterpolateLinear, - - InterpolantFactoryMethodDiscrete: function ( result ) { - - return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - InterpolantFactoryMethodLinear: function ( result ) { - - return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - InterpolantFactoryMethodSmooth: function ( result ) { - - return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - setInterpolation: function ( interpolation ) { - - var factoryMethod; - - switch ( interpolation ) { - - case InterpolateDiscrete: - - factoryMethod = this.InterpolantFactoryMethodDiscrete; - - break; - - case InterpolateLinear: - - factoryMethod = this.InterpolantFactoryMethodLinear; - - break; - - case InterpolateSmooth: - - factoryMethod = this.InterpolantFactoryMethodSmooth; - - break; - - } - - if ( factoryMethod === undefined ) { - - var message = "unsupported interpolation for " + - this.ValueTypeName + " keyframe track named " + this.name; - - if ( this.createInterpolant === undefined ) { - - // fall back to default, unless the default itself is messed up - if ( interpolation !== this.DefaultInterpolation ) { - - this.setInterpolation( this.DefaultInterpolation ); - - } else { - - throw new Error( message ); // fatal, in this case - - } - - } - - console.warn( 'THREE.KeyframeTrack:', message ); - return this; - - } - - this.createInterpolant = factoryMethod; - - return this; - - }, - - getInterpolation: function () { - - switch ( this.createInterpolant ) { - - case this.InterpolantFactoryMethodDiscrete: - - return InterpolateDiscrete; - - case this.InterpolantFactoryMethodLinear: - - return InterpolateLinear; - - case this.InterpolantFactoryMethodSmooth: - - return InterpolateSmooth; - - } - - }, - - getValueSize: function () { - - return this.values.length / this.times.length; - - }, - - // move all keyframes either forwards or backwards in time - shift: function ( timeOffset ) { - - if ( timeOffset !== 0.0 ) { - - var times = this.times; - - for ( var i = 0, n = times.length; i !== n; ++ i ) { - - times[ i ] += timeOffset; - - } - - } - - return this; - - }, - - // scale all keyframe times by a factor (useful for frame <-> seconds conversions) - scale: function ( timeScale ) { - - if ( timeScale !== 1.0 ) { - - var times = this.times; - - for ( var i = 0, n = times.length; i !== n; ++ i ) { - - times[ i ] *= timeScale; - - } - - } - - return this; - - }, - - // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. - // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values - trim: function ( startTime, endTime ) { - - var times = this.times, - nKeys = times.length, - from = 0, - to = nKeys - 1; - - while ( from !== nKeys && times[ from ] < startTime ) { - - ++ from; - - } - - while ( to !== - 1 && times[ to ] > endTime ) { - - -- to; - - } - - ++ to; // inclusive -> exclusive bound - - if ( from !== 0 || to !== nKeys ) { - - // empty tracks are forbidden, so keep at least one keyframe - if ( from >= to ) to = Math.max( to, 1 ), from = to - 1; - - var stride = this.getValueSize(); - this.times = AnimationUtils.arraySlice( times, from, to ); - this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); - - } - - return this; - - }, - - // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable - validate: function () { - - var valid = true; - - var valueSize = this.getValueSize(); - if ( valueSize - Math.floor( valueSize ) !== 0 ) { - - console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); - valid = false; - - } - - var times = this.times, - values = this.values, - - nKeys = times.length; - - if ( nKeys === 0 ) { - - console.error( 'THREE.KeyframeTrack: Track is empty.', this ); - valid = false; - - } - - var prevTime = null; - - for ( var i = 0; i !== nKeys; i ++ ) { - - var currTime = times[ i ]; - - if ( typeof currTime === 'number' && isNaN( currTime ) ) { - - console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); - valid = false; - break; - - } - - if ( prevTime !== null && prevTime > currTime ) { - - console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); - valid = false; - break; - - } - - prevTime = currTime; - - } - - if ( values !== undefined ) { - - if ( AnimationUtils.isTypedArray( values ) ) { - - for ( var i = 0, n = values.length; i !== n; ++ i ) { - - var value = values[ i ]; - - if ( isNaN( value ) ) { - - console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); - valid = false; - break; - - } - - } - - } - - } - - return valid; - - }, - - // removes equivalent sequential keys as common in morph target sequences - // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) - optimize: function () { - - var times = this.times, - values = this.values, - stride = this.getValueSize(), - - smoothInterpolation = this.getInterpolation() === InterpolateSmooth, - - writeIndex = 1, - lastIndex = times.length - 1; - - for ( var i = 1; i < lastIndex; ++ i ) { - - var keep = false; - - var time = times[ i ]; - var timeNext = times[ i + 1 ]; - - // remove adjacent keyframes scheduled at the same time - - if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { - - if ( ! smoothInterpolation ) { - - // remove unnecessary keyframes same as their neighbors - - var offset = i * stride, - offsetP = offset - stride, - offsetN = offset + stride; - - for ( var j = 0; j !== stride; ++ j ) { - - var value = values[ offset + j ]; - - if ( value !== values[ offsetP + j ] || - value !== values[ offsetN + j ] ) { - - keep = true; - break; - - } - - } - - } else { - - keep = true; - - } - - } - - // in-place compaction - - if ( keep ) { - - if ( i !== writeIndex ) { - - times[ writeIndex ] = times[ i ]; - - var readOffset = i * stride, - writeOffset = writeIndex * stride; - - for ( var j = 0; j !== stride; ++ j ) { - - values[ writeOffset + j ] = values[ readOffset + j ]; - - } - - } - - ++ writeIndex; - - } - - } - - // flush last keyframe (compaction looks ahead) - - if ( lastIndex > 0 ) { - - times[ writeIndex ] = times[ lastIndex ]; - - for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { - - values[ writeOffset + j ] = values[ readOffset + j ]; - - } - - ++ writeIndex; - - } - - if ( writeIndex !== times.length ) { - - this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); - this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); - - } - - return this; - - }, - - clone: function () { - - var times = AnimationUtils.arraySlice( this.times, 0 ); - var values = AnimationUtils.arraySlice( this.values, 0 ); - - var TypedKeyframeTrack = this.constructor; - var track = new TypedKeyframeTrack( this.name, times, values ); - - // Interpolant argument to constructor is not saved, so copy the factory method directly. - track.createInterpolant = this.createInterpolant; - - return track; - - } - - } ); - - /** - * - * A Track of Boolean keyframe values. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function BooleanKeyframeTrack( name, times, values ) { - - KeyframeTrack.call( this, name, times, values ); - - } - - BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: BooleanKeyframeTrack, - - ValueTypeName: 'bool', - ValueBufferType: Array, - - DefaultInterpolation: InterpolateDiscrete, - - InterpolantFactoryMethodLinear: undefined, - InterpolantFactoryMethodSmooth: undefined - - // Note: Actually this track could have a optimized / compressed - // representation of a single value and a custom interpolant that - // computes "firstValue ^ isOdd( index )". - - } ); - - /** - * - * A Track of keyframe values that represent color. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function ColorKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: ColorKeyframeTrack, - - ValueTypeName: 'color' - - // ValueBufferType is inherited - - // DefaultInterpolation is inherited - - // Note: Very basic implementation and nothing special yet. - // However, this is the place for color space parameterization. - - } ); - - /** - * - * A Track of numeric keyframe values. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function NumberKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: NumberKeyframeTrack, - - ValueTypeName: 'number' - - // ValueBufferType is inherited - - // DefaultInterpolation is inherited - - } ); - - /** - * Spherical linear unit quaternion interpolant. - * - * @author tschw - */ - - function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { - - Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); - - } - - QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { - - constructor: QuaternionLinearInterpolant, - - interpolate_: function ( i1, t0, t, t1 ) { - - var result = this.resultBuffer, - values = this.sampleValues, - stride = this.valueSize, - - offset = i1 * stride, - - alpha = ( t - t0 ) / ( t1 - t0 ); - - for ( var end = offset + stride; offset !== end; offset += 4 ) { - - Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); - - } - - return result; - - } - - } ); - - /** - * - * A Track of quaternion keyframe values. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function QuaternionKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: QuaternionKeyframeTrack, - - ValueTypeName: 'quaternion', - - // ValueBufferType is inherited - - DefaultInterpolation: InterpolateLinear, - - InterpolantFactoryMethodLinear: function ( result ) { - - return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); - - }, - - InterpolantFactoryMethodSmooth: undefined // not yet implemented - - } ); - - /** - * - * A Track that interpolates Strings - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function StringKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: StringKeyframeTrack, - - ValueTypeName: 'string', - ValueBufferType: Array, - - DefaultInterpolation: InterpolateDiscrete, - - InterpolantFactoryMethodLinear: undefined, - - InterpolantFactoryMethodSmooth: undefined - - } ); - - /** - * - * A Track of vectored keyframe values. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function VectorKeyframeTrack( name, times, values, interpolation ) { - - KeyframeTrack.call( this, name, times, values, interpolation ); - - } - - VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { - - constructor: VectorKeyframeTrack, - - ValueTypeName: 'vector' - - // ValueBufferType is inherited - - // DefaultInterpolation is inherited - - } ); - - /** - * - * Reusable set of Tracks that represent an animation. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - */ - - function AnimationClip( name, duration, tracks ) { - - this.name = name; - this.tracks = tracks; - this.duration = ( duration !== undefined ) ? duration : - 1; - - this.uuid = _Math.generateUUID(); - - // this means it should figure out its duration by scanning the tracks - if ( this.duration < 0 ) { - - this.resetDuration(); - - } - - } - - function getTrackTypeForValueTypeName( typeName ) { - - switch ( typeName.toLowerCase() ) { - - case 'scalar': - case 'double': - case 'float': - case 'number': - case 'integer': - - return NumberKeyframeTrack; - - case 'vector': - case 'vector2': - case 'vector3': - case 'vector4': - - return VectorKeyframeTrack; - - case 'color': - - return ColorKeyframeTrack; - - case 'quaternion': - - return QuaternionKeyframeTrack; - - case 'bool': - case 'boolean': - - return BooleanKeyframeTrack; - - case 'string': - - return StringKeyframeTrack; - - } - - throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); - - } - - function parseKeyframeTrack( json ) { - - if ( json.type === undefined ) { - - throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); - - } - - var trackType = getTrackTypeForValueTypeName( json.type ); - - if ( json.times === undefined ) { - - var times = [], values = []; - - AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); - - json.times = times; - json.values = values; - - } - - // derived classes can define a static parse method - if ( trackType.parse !== undefined ) { - - return trackType.parse( json ); - - } else { - - // by default, we assume a constructor compatible with the base - return new trackType( json.name, json.times, json.values, json.interpolation ); - - } - - } - - Object.assign( AnimationClip, { - - parse: function ( json ) { - - var tracks = [], - jsonTracks = json.tracks, - frameTime = 1.0 / ( json.fps || 1.0 ); - - for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { - - tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); - - } - - return new AnimationClip( json.name, json.duration, tracks ); - - }, - - toJSON: function ( clip ) { - - var tracks = [], - clipTracks = clip.tracks; - - var json = { - - 'name': clip.name, - 'duration': clip.duration, - 'tracks': tracks, - 'uuid': clip.uuid - - }; - - for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { - - tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); - - } - - return json; - - }, - - CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { - - var numMorphTargets = morphTargetSequence.length; - var tracks = []; - - for ( var i = 0; i < numMorphTargets; i ++ ) { - - var times = []; - var values = []; - - times.push( - ( i + numMorphTargets - 1 ) % numMorphTargets, - i, - ( i + 1 ) % numMorphTargets ); - - values.push( 0, 1, 0 ); - - var order = AnimationUtils.getKeyframeOrder( times ); - times = AnimationUtils.sortedArray( times, 1, order ); - values = AnimationUtils.sortedArray( values, 1, order ); - - // if there is a key at the first frame, duplicate it as the - // last frame as well for perfect loop. - if ( ! noLoop && times[ 0 ] === 0 ) { - - times.push( numMorphTargets ); - values.push( values[ 0 ] ); - - } - - tracks.push( - new NumberKeyframeTrack( - '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', - times, values - ).scale( 1.0 / fps ) ); - - } - - return new AnimationClip( name, - 1, tracks ); - - }, - - findByName: function ( objectOrClipArray, name ) { - - var clipArray = objectOrClipArray; - - if ( ! Array.isArray( objectOrClipArray ) ) { - - var o = objectOrClipArray; - clipArray = o.geometry && o.geometry.animations || o.animations; - - } - - for ( var i = 0; i < clipArray.length; i ++ ) { - - if ( clipArray[ i ].name === name ) { - - return clipArray[ i ]; - - } - - } - - return null; - - }, - - CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { - - var animationToMorphTargets = {}; - - // tested with https://regex101.com/ on trick sequences - // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 - var pattern = /^([\w-]*?)([\d]+)$/; - - // sort morph target names into animation groups based - // patterns like Walk_001, Walk_002, Run_001, Run_002 - for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { - - var morphTarget = morphTargets[ i ]; - var parts = morphTarget.name.match( pattern ); - - if ( parts && parts.length > 1 ) { - - var name = parts[ 1 ]; - - var animationMorphTargets = animationToMorphTargets[ name ]; - if ( ! animationMorphTargets ) { - - animationToMorphTargets[ name ] = animationMorphTargets = []; - - } - - animationMorphTargets.push( morphTarget ); - - } - - } - - var clips = []; - - for ( var name in animationToMorphTargets ) { - - clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); - - } - - return clips; - - }, - - // parse the animation.hierarchy format - parseAnimation: function ( animation, bones ) { - - if ( ! animation ) { - - console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); - return null; - - } - - var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { - - // only return track if there are actually keys. - if ( animationKeys.length !== 0 ) { - - var times = []; - var values = []; - - AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); - - // empty keys are filtered out, so check again - if ( times.length !== 0 ) { - - destTracks.push( new trackType( trackName, times, values ) ); - - } - - } - - }; - - var tracks = []; - - var clipName = animation.name || 'default'; - // automatic length determination in AnimationClip. - var duration = animation.length || - 1; - var fps = animation.fps || 30; - - var hierarchyTracks = animation.hierarchy || []; - - for ( var h = 0; h < hierarchyTracks.length; h ++ ) { - - var animationKeys = hierarchyTracks[ h ].keys; - - // skip empty tracks - if ( ! animationKeys || animationKeys.length === 0 ) continue; - - // process morph targets - if ( animationKeys[ 0 ].morphTargets ) { - - // figure out all morph targets used in this track - var morphTargetNames = {}; - - for ( var k = 0; k < animationKeys.length; k ++ ) { - - if ( animationKeys[ k ].morphTargets ) { - - for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { - - morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; - - } - - } - - } - - // create a track for each morph target with all zero - // morphTargetInfluences except for the keys in which - // the morphTarget is named. - for ( var morphTargetName in morphTargetNames ) { - - var times = []; - var values = []; - - for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { - - var animationKey = animationKeys[ k ]; - - times.push( animationKey.time ); - values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); - - } - - tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); - - } - - duration = morphTargetNames.length * ( fps || 1.0 ); - - } else { - - // ...assume skeletal animation - - var boneName = '.bones[' + bones[ h ].name + ']'; - - addNonemptyTrack( - VectorKeyframeTrack, boneName + '.position', - animationKeys, 'pos', tracks ); - - addNonemptyTrack( - QuaternionKeyframeTrack, boneName + '.quaternion', - animationKeys, 'rot', tracks ); - - addNonemptyTrack( - VectorKeyframeTrack, boneName + '.scale', - animationKeys, 'scl', tracks ); - - } - - } - - if ( tracks.length === 0 ) { - - return null; - - } - - var clip = new AnimationClip( clipName, duration, tracks ); - - return clip; - - } - - } ); - - Object.assign( AnimationClip.prototype, { - - resetDuration: function () { - - var tracks = this.tracks, duration = 0; - - for ( var i = 0, n = tracks.length; i !== n; ++ i ) { - - var track = this.tracks[ i ]; - - duration = Math.max( duration, track.times[ track.times.length - 1 ] ); - - } - - this.duration = duration; - - return this; - - }, - - trim: function () { - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - this.tracks[ i ].trim( 0, this.duration ); - - } - - return this; - - }, - - validate: function () { - - var valid = true; - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - valid = valid && this.tracks[ i ].validate(); - - } - - return valid; - - }, - - optimize: function () { - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - this.tracks[ i ].optimize(); - - } - - return this; - - }, - - - clone: function () { - - var tracks = []; - - for ( var i = 0; i < this.tracks.length; i ++ ) { - - tracks.push( this.tracks[ i ].clone() ); - - } - - return new AnimationClip( this.name, this.duration, tracks ); - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var Cache = { - - enabled: false, - - files: {}, - - add: function ( key, file ) { - - if ( this.enabled === false ) return; - - // console.log( 'THREE.Cache', 'Adding key:', key ); - - this.files[ key ] = file; - - }, - - get: function ( key ) { - - if ( this.enabled === false ) return; - - // console.log( 'THREE.Cache', 'Checking key:', key ); - - return this.files[ key ]; - - }, - - remove: function ( key ) { - - delete this.files[ key ]; - - }, - - clear: function () { - - this.files = {}; - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function LoadingManager( onLoad, onProgress, onError ) { - - var scope = this; - - var isLoading = false; - var itemsLoaded = 0; - var itemsTotal = 0; - var urlModifier = undefined; - - // Refer to #5689 for the reason why we don't set .onStart - // in the constructor - - this.onStart = undefined; - this.onLoad = onLoad; - this.onProgress = onProgress; - this.onError = onError; - - this.itemStart = function ( url ) { - - itemsTotal ++; - - if ( isLoading === false ) { - - if ( scope.onStart !== undefined ) { - - scope.onStart( url, itemsLoaded, itemsTotal ); - - } - - } - - isLoading = true; - - }; - - this.itemEnd = function ( url ) { - - itemsLoaded ++; - - if ( scope.onProgress !== undefined ) { - - scope.onProgress( url, itemsLoaded, itemsTotal ); - - } - - if ( itemsLoaded === itemsTotal ) { - - isLoading = false; - - if ( scope.onLoad !== undefined ) { - - scope.onLoad(); - - } - - } - - }; - - this.itemError = function ( url ) { - - if ( scope.onError !== undefined ) { - - scope.onError( url ); - - } - - }; - - this.resolveURL = function ( url ) { - - if ( urlModifier ) { - - return urlModifier( url ); - - } - - return url; - - }; - - this.setURLModifier = function ( transform ) { - - urlModifier = transform; - return this; - - }; - - } - - var DefaultLoadingManager = new LoadingManager(); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var loading = {}; - - function FileLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( FileLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - if ( url === undefined ) url = ''; - - if ( this.path !== undefined ) url = this.path + url; - - url = this.manager.resolveURL( url ); - - var scope = this; - - var cached = Cache.get( url ); - - if ( cached !== undefined ) { - - scope.manager.itemStart( url ); - - setTimeout( function () { - - if ( onLoad ) onLoad( cached ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - return cached; - - } - - // Check if request is duplicate - - if ( loading[ url ] !== undefined ) { - - loading[ url ].push( { - - onLoad: onLoad, - onProgress: onProgress, - onError: onError - - } ); - - return; - - } - - // Check for data: URI - var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; - var dataUriRegexResult = url.match( dataUriRegex ); - - // Safari can not handle Data URIs through XMLHttpRequest so process manually - if ( dataUriRegexResult ) { - - var mimeType = dataUriRegexResult[ 1 ]; - var isBase64 = !! dataUriRegexResult[ 2 ]; - var data = dataUriRegexResult[ 3 ]; - - data = decodeURIComponent( data ); - - if ( isBase64 ) data = atob( data ); - - try { - - var response; - var responseType = ( this.responseType || '' ).toLowerCase(); - - switch ( responseType ) { - - case 'arraybuffer': - case 'blob': - - var view = new Uint8Array( data.length ); - - for ( var i = 0; i < data.length; i ++ ) { - - view[ i ] = data.charCodeAt( i ); - - } - - if ( responseType === 'blob' ) { - - response = new Blob( [ view.buffer ], { type: mimeType } ); - - } else { - - response = view.buffer; - - } - - break; - - case 'document': - - var parser = new DOMParser(); - response = parser.parseFromString( data, mimeType ); - - break; - - case 'json': - - response = JSON.parse( data ); - - break; - - default: // 'text' or other - - response = data; - - break; - - } - - // Wait for next browser tick like standard XMLHttpRequest event dispatching does - setTimeout( function () { - - if ( onLoad ) onLoad( response ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - } catch ( error ) { - - // Wait for next browser tick like standard XMLHttpRequest event dispatching does - setTimeout( function () { - - if ( onError ) onError( error ); - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }, 0 ); - - } - - } else { - - // Initialise array for duplicate requests - - loading[ url ] = []; - - loading[ url ].push( { - - onLoad: onLoad, - onProgress: onProgress, - onError: onError - - } ); - - var request = new XMLHttpRequest(); - - request.open( 'GET', url, true ); - - request.addEventListener( 'load', function ( event ) { - - var response = this.response; - - Cache.add( url, response ); - - var callbacks = loading[ url ]; - - delete loading[ url ]; - - if ( this.status === 200 || this.status === 0 ) { - - // Some browsers return HTTP Status 0 when using non-http protocol - // e.g. 'file://' or 'data://'. Handle as success. - - if ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onLoad ) callback.onLoad( response ); - - } - - scope.manager.itemEnd( url ); - - } else { - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } - - }, false ); - - request.addEventListener( 'progress', function ( event ) { - - var callbacks = loading[ url ]; - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onProgress ) callback.onProgress( event ); - - } - - }, false ); - - request.addEventListener( 'error', function ( event ) { - - var callbacks = loading[ url ]; - - delete loading[ url ]; - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }, false ); - - request.addEventListener( 'abort', function ( event ) { - - var callbacks = loading[ url ]; - - delete loading[ url ]; - - for ( var i = 0, il = callbacks.length; i < il; i ++ ) { - - var callback = callbacks[ i ]; - if ( callback.onError ) callback.onError( event ); - - } - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - }, false ); - - if ( this.responseType !== undefined ) request.responseType = this.responseType; - if ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials; - - if ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); - - for ( var header in this.requestHeader ) { - - request.setRequestHeader( header, this.requestHeader[ header ] ); - - } - - request.send( null ); - - } - - scope.manager.itemStart( url ); - - return request; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setResponseType: function ( value ) { - - this.responseType = value; - return this; - - }, - - setWithCredentials: function ( value ) { - - this.withCredentials = value; - return this; - - }, - - setMimeType: function ( value ) { - - this.mimeType = value; - return this; - - }, - - setRequestHeader: function ( value ) { - - this.requestHeader = value; - return this; - - } - - } ); - - /** - * @author bhouston / http://clara.io/ - */ - - function AnimationLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( AnimationLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( JSON.parse( text ) ) ); - - }, onProgress, onError ); - - }, - - parse: function ( json, onLoad ) { - - var animations = []; - - for ( var i = 0; i < json.length; i ++ ) { - - var clip = AnimationClip.parse( json[ i ] ); - - animations.push( clip ); - - } - - onLoad( animations ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * - * Abstract Base class to block based textures loader (dds, pvr, ...) - */ - - function CompressedTextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - // override in sub classes - this._parser = null; - - } - - Object.assign( CompressedTextureLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var images = []; - - var texture = new CompressedTexture(); - texture.image = images; - - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.setResponseType( 'arraybuffer' ); - - function loadTexture( i ) { - - loader.load( url[ i ], function ( buffer ) { - - var texDatas = scope._parser( buffer, true ); - - images[ i ] = { - width: texDatas.width, - height: texDatas.height, - format: texDatas.format, - mipmaps: texDatas.mipmaps - }; - - loaded += 1; - - if ( loaded === 6 ) { - - if ( texDatas.mipmapCount === 1 ) - texture.minFilter = LinearFilter; - - texture.format = texDatas.format; - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - } - - }, onProgress, onError ); - - } - - if ( Array.isArray( url ) ) { - - var loaded = 0; - - for ( var i = 0, il = url.length; i < il; ++ i ) { - - loadTexture( i ); - - } - - } else { - - // compressed cubemap texture stored in a single DDS file - - loader.load( url, function ( buffer ) { - - var texDatas = scope._parser( buffer, true ); - - if ( texDatas.isCubemap ) { - - var faces = texDatas.mipmaps.length / texDatas.mipmapCount; - - for ( var f = 0; f < faces; f ++ ) { - - images[ f ] = { mipmaps: [] }; - - for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { - - images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); - images[ f ].format = texDatas.format; - images[ f ].width = texDatas.width; - images[ f ].height = texDatas.height; - - } - - } - - } else { - - texture.image.width = texDatas.width; - texture.image.height = texDatas.height; - texture.mipmaps = texDatas.mipmaps; - - } - - if ( texDatas.mipmapCount === 1 ) { - - texture.minFilter = LinearFilter; - - } - - texture.format = texDatas.format; - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - }, onProgress, onError ); - - } - - return texture; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author Nikos M. / https://github.com/foo123/ - * - * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) - */ - - function DataTextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - // override in sub classes - this._parser = null; - - } - - Object.assign( DataTextureLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var texture = new DataTexture(); - - var loader = new FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.setPath( this.path ); - loader.load( url, function ( buffer ) { - - var texData = scope._parser( buffer ); - - if ( ! texData ) return; - - if ( texData.image !== undefined ) { - - texture.image = texData.image; - - } else if ( texData.data !== undefined ) { - - texture.image.width = texData.width; - texture.image.height = texData.height; - texture.image.data = texData.data; - - } - - texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; - texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; - - texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; - texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipMapLinearFilter; - - texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; - - if ( texData.format !== undefined ) { - - texture.format = texData.format; - - } - if ( texData.type !== undefined ) { - - texture.type = texData.type; - - } - - if ( texData.mipmaps !== undefined ) { - - texture.mipmaps = texData.mipmaps; - - } - - if ( texData.mipmapCount === 1 ) { - - texture.minFilter = LinearFilter; - - } - - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture, texData ); - - }, onProgress, onError ); - - - return texture; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function ImageLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( ImageLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - if ( url === undefined ) url = ''; - - if ( this.path !== undefined ) url = this.path + url; - - url = this.manager.resolveURL( url ); - - var scope = this; - - var cached = Cache.get( url ); - - if ( cached !== undefined ) { - - scope.manager.itemStart( url ); - - setTimeout( function () { - - if ( onLoad ) onLoad( cached ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - return cached; - - } - - var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); - - function onImageLoad() { - - image.removeEventListener( 'load', onImageLoad, false ); - image.removeEventListener( 'error', onImageError, false ); - - Cache.add( url, this ); - - if ( onLoad ) onLoad( this ); - - scope.manager.itemEnd( url ); - - } - - function onImageError( event ) { - - image.removeEventListener( 'load', onImageLoad, false ); - image.removeEventListener( 'error', onImageError, false ); - - if ( onError ) onError( event ); - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } - - image.addEventListener( 'load', onImageLoad, false ); - image.addEventListener( 'error', onImageError, false ); - - if ( url.substr( 0, 5 ) !== 'data:' ) { - - if ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin; - - } - - scope.manager.itemStart( url ); - - image.src = url; - - return image; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function CubeTextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( CubeTextureLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( urls, onLoad, onProgress, onError ) { - - var texture = new CubeTexture(); - - var loader = new ImageLoader( this.manager ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setPath( this.path ); - - var loaded = 0; - - function loadTexture( i ) { - - loader.load( urls[ i ], function ( image ) { - - texture.images[ i ] = image; - - loaded ++; - - if ( loaded === 6 ) { - - texture.needsUpdate = true; - - if ( onLoad ) onLoad( texture ); - - } - - }, undefined, onError ); - - } - - for ( var i = 0; i < urls.length; ++ i ) { - - loadTexture( i ); - - } - - return texture; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function TextureLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( TextureLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - var texture = new Texture(); - - var loader = new ImageLoader( this.manager ); - loader.setCrossOrigin( this.crossOrigin ); - loader.setPath( this.path ); - - loader.load( url, function ( image ) { - - texture.image = image; - - // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. - var isJPEG = url.search( /\.jpe?g($|\?)/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; - - texture.format = isJPEG ? RGBFormat : RGBAFormat; - texture.needsUpdate = true; - - if ( onLoad !== undefined ) { - - onLoad( texture ); - - } - - }, onProgress, onError ); - - return texture; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * Extensible curve object - * - * Some common of curve methods: - * .getPoint( t, optionalTarget ), .getTangent( t ) - * .getPointAt( u, optionalTarget ), .getTangentAt( u ) - * .getPoints(), .getSpacedPoints() - * .getLength() - * .updateArcLengths() - * - * This following curves inherit from THREE.Curve: - * - * -- 2D curves -- - * THREE.ArcCurve - * THREE.CubicBezierCurve - * THREE.EllipseCurve - * THREE.LineCurve - * THREE.QuadraticBezierCurve - * THREE.SplineCurve - * - * -- 3D curves -- - * THREE.CatmullRomCurve3 - * THREE.CubicBezierCurve3 - * THREE.LineCurve3 - * THREE.QuadraticBezierCurve3 - * - * A series of curves can be represented as a THREE.CurvePath. - * - **/ - - /************************************************************** - * Abstract Curve base class - **************************************************************/ - - function Curve() { - - this.type = 'Curve'; - - this.arcLengthDivisions = 200; - - } - - Object.assign( Curve.prototype, { - - // Virtual base class method to overwrite and implement in subclasses - // - t [0 .. 1] - - getPoint: function ( /* t, optionalTarget */ ) { - - console.warn( 'THREE.Curve: .getPoint() not implemented.' ); - return null; - - }, - - // Get point at relative position in curve according to arc length - // - u [0 .. 1] - - getPointAt: function ( u, optionalTarget ) { - - var t = this.getUtoTmapping( u ); - return this.getPoint( t, optionalTarget ); - - }, - - // Get sequence of points using getPoint( t ) - - getPoints: function ( divisions ) { - - if ( divisions === undefined ) divisions = 5; - - var points = []; - - for ( var d = 0; d <= divisions; d ++ ) { - - points.push( this.getPoint( d / divisions ) ); - - } - - return points; - - }, - - // Get sequence of points using getPointAt( u ) - - getSpacedPoints: function ( divisions ) { - - if ( divisions === undefined ) divisions = 5; - - var points = []; - - for ( var d = 0; d <= divisions; d ++ ) { - - points.push( this.getPointAt( d / divisions ) ); - - } - - return points; - - }, - - // Get total curve arc length - - getLength: function () { - - var lengths = this.getLengths(); - return lengths[ lengths.length - 1 ]; - - }, - - // Get list of cumulative segment lengths - - getLengths: function ( divisions ) { - - if ( divisions === undefined ) divisions = this.arcLengthDivisions; - - if ( this.cacheArcLengths && - ( this.cacheArcLengths.length === divisions + 1 ) && - ! this.needsUpdate ) { - - return this.cacheArcLengths; - - } - - this.needsUpdate = false; - - var cache = []; - var current, last = this.getPoint( 0 ); - var p, sum = 0; - - cache.push( 0 ); - - for ( p = 1; p <= divisions; p ++ ) { - - current = this.getPoint( p / divisions ); - sum += current.distanceTo( last ); - cache.push( sum ); - last = current; - - } - - this.cacheArcLengths = cache; - - return cache; // { sums: cache, sum: sum }; Sum is in the last element. - - }, - - updateArcLengths: function () { - - this.needsUpdate = true; - this.getLengths(); - - }, - - // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant - - getUtoTmapping: function ( u, distance ) { - - var arcLengths = this.getLengths(); - - var i = 0, il = arcLengths.length; - - var targetArcLength; // The targeted u distance value to get - - if ( distance ) { - - targetArcLength = distance; - - } else { - - targetArcLength = u * arcLengths[ il - 1 ]; - - } - - // binary search for the index with largest value smaller than target u distance - - var low = 0, high = il - 1, comparison; - - while ( low <= high ) { - - i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats - - comparison = arcLengths[ i ] - targetArcLength; - - if ( comparison < 0 ) { - - low = i + 1; - - } else if ( comparison > 0 ) { - - high = i - 1; - - } else { - - high = i; - break; - - // DONE - - } - - } - - i = high; - - if ( arcLengths[ i ] === targetArcLength ) { - - return i / ( il - 1 ); - - } - - // we could get finer grain at lengths, or use simple interpolation between two points - - var lengthBefore = arcLengths[ i ]; - var lengthAfter = arcLengths[ i + 1 ]; - - var segmentLength = lengthAfter - lengthBefore; - - // determine where we are between the 'before' and 'after' points - - var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; - - // add that fractional amount to t - - var t = ( i + segmentFraction ) / ( il - 1 ); - - return t; - - }, - - // Returns a unit vector tangent at t - // In case any sub curve does not implement its tangent derivation, - // 2 points a small delta apart will be used to find its gradient - // which seems to give a reasonable approximation - - getTangent: function ( t ) { - - var delta = 0.0001; - var t1 = t - delta; - var t2 = t + delta; - - // Capping in case of danger - - if ( t1 < 0 ) t1 = 0; - if ( t2 > 1 ) t2 = 1; - - var pt1 = this.getPoint( t1 ); - var pt2 = this.getPoint( t2 ); - - var vec = pt2.clone().sub( pt1 ); - return vec.normalize(); - - }, - - getTangentAt: function ( u ) { - - var t = this.getUtoTmapping( u ); - return this.getTangent( t ); - - }, - - computeFrenetFrames: function ( segments, closed ) { - - // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf - - var normal = new Vector3(); - - var tangents = []; - var normals = []; - var binormals = []; - - var vec = new Vector3(); - var mat = new Matrix4(); - - var i, u, theta; - - // compute the tangent vectors for each segment on the curve - - for ( i = 0; i <= segments; i ++ ) { - - u = i / segments; - - tangents[ i ] = this.getTangentAt( u ); - tangents[ i ].normalize(); - - } - - // select an initial normal vector perpendicular to the first tangent vector, - // and in the direction of the minimum tangent xyz component - - normals[ 0 ] = new Vector3(); - binormals[ 0 ] = new Vector3(); - var min = Number.MAX_VALUE; - var tx = Math.abs( tangents[ 0 ].x ); - var ty = Math.abs( tangents[ 0 ].y ); - var tz = Math.abs( tangents[ 0 ].z ); - - if ( tx <= min ) { - - min = tx; - normal.set( 1, 0, 0 ); - - } - - if ( ty <= min ) { - - min = ty; - normal.set( 0, 1, 0 ); - - } - - if ( tz <= min ) { - - normal.set( 0, 0, 1 ); - - } - - vec.crossVectors( tangents[ 0 ], normal ).normalize(); - - normals[ 0 ].crossVectors( tangents[ 0 ], vec ); - binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); - - - // compute the slowly-varying normal and binormal vectors for each segment on the curve - - for ( i = 1; i <= segments; i ++ ) { - - normals[ i ] = normals[ i - 1 ].clone(); - - binormals[ i ] = binormals[ i - 1 ].clone(); - - vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); - - if ( vec.length() > Number.EPSILON ) { - - vec.normalize(); - - theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors - - normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); - - } - - binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); - - } - - // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same - - if ( closed === true ) { - - theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); - theta /= segments; - - if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { - - theta = - theta; - - } - - for ( i = 1; i <= segments; i ++ ) { - - // twist a little... - normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); - binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); - - } - - } - - return { - tangents: tangents, - normals: normals, - binormals: binormals - }; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( source ) { - - this.arcLengthDivisions = source.arcLengthDivisions; - - return this; - - }, - - toJSON: function () { - - var data = { - metadata: { - version: 4.5, - type: 'Curve', - generator: 'Curve.toJSON' - } - }; - - data.arcLengthDivisions = this.arcLengthDivisions; - data.type = this.type; - - return data; - - }, - - fromJSON: function ( json ) { - - this.arcLengthDivisions = json.arcLengthDivisions; - - return this; - - } - - } ); - - function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { - - Curve.call( this ); - - this.type = 'EllipseCurve'; - - this.aX = aX || 0; - this.aY = aY || 0; - - this.xRadius = xRadius || 1; - this.yRadius = yRadius || 1; - - this.aStartAngle = aStartAngle || 0; - this.aEndAngle = aEndAngle || 2 * Math.PI; - - this.aClockwise = aClockwise || false; - - this.aRotation = aRotation || 0; - - } - - EllipseCurve.prototype = Object.create( Curve.prototype ); - EllipseCurve.prototype.constructor = EllipseCurve; - - EllipseCurve.prototype.isEllipseCurve = true; - - EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var twoPi = Math.PI * 2; - var deltaAngle = this.aEndAngle - this.aStartAngle; - var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; - - // ensures that deltaAngle is 0 .. 2 PI - while ( deltaAngle < 0 ) deltaAngle += twoPi; - while ( deltaAngle > twoPi ) deltaAngle -= twoPi; - - if ( deltaAngle < Number.EPSILON ) { - - if ( samePoints ) { - - deltaAngle = 0; - - } else { - - deltaAngle = twoPi; - - } - - } - - if ( this.aClockwise === true && ! samePoints ) { - - if ( deltaAngle === twoPi ) { - - deltaAngle = - twoPi; - - } else { - - deltaAngle = deltaAngle - twoPi; - - } - - } - - var angle = this.aStartAngle + t * deltaAngle; - var x = this.aX + this.xRadius * Math.cos( angle ); - var y = this.aY + this.yRadius * Math.sin( angle ); - - if ( this.aRotation !== 0 ) { - - var cos = Math.cos( this.aRotation ); - var sin = Math.sin( this.aRotation ); - - var tx = x - this.aX; - var ty = y - this.aY; - - // Rotate the point about the center of the ellipse. - x = tx * cos - ty * sin + this.aX; - y = tx * sin + ty * cos + this.aY; - - } - - return point.set( x, y ); - - }; - - EllipseCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.aX = source.aX; - this.aY = source.aY; - - this.xRadius = source.xRadius; - this.yRadius = source.yRadius; - - this.aStartAngle = source.aStartAngle; - this.aEndAngle = source.aEndAngle; - - this.aClockwise = source.aClockwise; - - this.aRotation = source.aRotation; - - return this; - - }; - - - EllipseCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.aX = this.aX; - data.aY = this.aY; - - data.xRadius = this.xRadius; - data.yRadius = this.yRadius; - - data.aStartAngle = this.aStartAngle; - data.aEndAngle = this.aEndAngle; - - data.aClockwise = this.aClockwise; - - data.aRotation = this.aRotation; - - return data; - - }; - - EllipseCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.aX = json.aX; - this.aY = json.aY; - - this.xRadius = json.xRadius; - this.yRadius = json.yRadius; - - this.aStartAngle = json.aStartAngle; - this.aEndAngle = json.aEndAngle; - - this.aClockwise = json.aClockwise; - - this.aRotation = json.aRotation; - - return this; - - }; - - function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { - - EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); - - this.type = 'ArcCurve'; - - } - - ArcCurve.prototype = Object.create( EllipseCurve.prototype ); - ArcCurve.prototype.constructor = ArcCurve; - - ArcCurve.prototype.isArcCurve = true; - - /** - * @author zz85 https://github.com/zz85 - * - * Centripetal CatmullRom Curve - which is useful for avoiding - * cusps and self-intersections in non-uniform catmull rom curves. - * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf - * - * curve.type accepts centripetal(default), chordal and catmullrom - * curve.tension is used for catmullrom which defaults to 0.5 - */ - - - /* - Based on an optimized c++ solution in - - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ - - http://ideone.com/NoEbVM - - This CubicPoly class could be used for reusing some variables and calculations, - but for three.js curve use, it could be possible inlined and flatten into a single function call - which can be placed in CurveUtils. - */ - - function CubicPoly() { - - var c0 = 0, c1 = 0, c2 = 0, c3 = 0; - - /* - * Compute coefficients for a cubic polynomial - * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 - * such that - * p(0) = x0, p(1) = x1 - * and - * p'(0) = t0, p'(1) = t1. - */ - function init( x0, x1, t0, t1 ) { - - c0 = x0; - c1 = t0; - c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1; - c3 = 2 * x0 - 2 * x1 + t0 + t1; - - } - - return { - - initCatmullRom: function ( x0, x1, x2, x3, tension ) { - - init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); - - }, - - initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { - - // compute tangents when parameterized in [t1,t2] - var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; - var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; - - // rescale tangents for parametrization in [0,1] - t1 *= dt1; - t2 *= dt1; - - init( x1, x2, t1, t2 ); - - }, - - calc: function ( t ) { - - var t2 = t * t; - var t3 = t2 * t; - return c0 + c1 * t + c2 * t2 + c3 * t3; - - } - - }; - - } - - // - - var tmp = new Vector3(); - var px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly(); - - function CatmullRomCurve3( points, closed, curveType, tension ) { - - Curve.call( this ); - - this.type = 'CatmullRomCurve3'; - - this.points = points || []; - this.closed = closed || false; - this.curveType = curveType || 'centripetal'; - this.tension = tension || 0.5; - - } - - CatmullRomCurve3.prototype = Object.create( Curve.prototype ); - CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; - - CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; - - CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - var points = this.points; - var l = points.length; - - var p = ( l - ( this.closed ? 0 : 1 ) ) * t; - var intPoint = Math.floor( p ); - var weight = p - intPoint; - - if ( this.closed ) { - - intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; - - } else if ( weight === 0 && intPoint === l - 1 ) { - - intPoint = l - 2; - weight = 1; - - } - - var p0, p1, p2, p3; // 4 points - - if ( this.closed || intPoint > 0 ) { - - p0 = points[ ( intPoint - 1 ) % l ]; - - } else { - - // extrapolate first point - tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); - p0 = tmp; - - } - - p1 = points[ intPoint % l ]; - p2 = points[ ( intPoint + 1 ) % l ]; - - if ( this.closed || intPoint + 2 < l ) { - - p3 = points[ ( intPoint + 2 ) % l ]; - - } else { - - // extrapolate last point - tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); - p3 = tmp; - - } - - if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { - - // init Centripetal / Chordal Catmull-Rom - var pow = this.curveType === 'chordal' ? 0.5 : 0.25; - var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); - var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); - var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); - - // safety check for repeated points - if ( dt1 < 1e-4 ) dt1 = 1.0; - if ( dt0 < 1e-4 ) dt0 = dt1; - if ( dt2 < 1e-4 ) dt2 = dt1; - - px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); - py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); - pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); - - } else if ( this.curveType === 'catmullrom' ) { - - px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); - py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); - pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); - - } - - point.set( - px.calc( weight ), - py.calc( weight ), - pz.calc( weight ) - ); - - return point; - - }; - - CatmullRomCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.points = []; - - for ( var i = 0, l = source.points.length; i < l; i ++ ) { - - var point = source.points[ i ]; - - this.points.push( point.clone() ); - - } - - this.closed = source.closed; - this.curveType = source.curveType; - this.tension = source.tension; - - return this; - - }; - - CatmullRomCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.points = []; - - for ( var i = 0, l = this.points.length; i < l; i ++ ) { - - var point = this.points[ i ]; - data.points.push( point.toArray() ); - - } - - data.closed = this.closed; - data.curveType = this.curveType; - data.tension = this.tension; - - return data; - - }; - - CatmullRomCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.points = []; - - for ( var i = 0, l = json.points.length; i < l; i ++ ) { - - var point = json.points[ i ]; - this.points.push( new Vector3().fromArray( point ) ); - - } - - this.closed = json.closed; - this.curveType = json.curveType; - this.tension = json.tension; - - return this; - - }; - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * - * Bezier Curves formulas obtained from - * http://en.wikipedia.org/wiki/Bézier_curve - */ - - function CatmullRom( t, p0, p1, p2, p3 ) { - - var v0 = ( p2 - p0 ) * 0.5; - var v1 = ( p3 - p1 ) * 0.5; - var t2 = t * t; - var t3 = t * t2; - return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; - - } - - // - - function QuadraticBezierP0( t, p ) { - - var k = 1 - t; - return k * k * p; - - } - - function QuadraticBezierP1( t, p ) { - - return 2 * ( 1 - t ) * t * p; - - } - - function QuadraticBezierP2( t, p ) { - - return t * t * p; - - } - - function QuadraticBezier( t, p0, p1, p2 ) { - - return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + - QuadraticBezierP2( t, p2 ); - - } - - // - - function CubicBezierP0( t, p ) { - - var k = 1 - t; - return k * k * k * p; - - } - - function CubicBezierP1( t, p ) { - - var k = 1 - t; - return 3 * k * k * t * p; - - } - - function CubicBezierP2( t, p ) { - - return 3 * ( 1 - t ) * t * t * p; - - } - - function CubicBezierP3( t, p ) { - - return t * t * t * p; - - } - - function CubicBezier( t, p0, p1, p2, p3 ) { - - return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + - CubicBezierP3( t, p3 ); - - } - - function CubicBezierCurve( v0, v1, v2, v3 ) { - - Curve.call( this ); - - this.type = 'CubicBezierCurve'; - - this.v0 = v0 || new Vector2(); - this.v1 = v1 || new Vector2(); - this.v2 = v2 || new Vector2(); - this.v3 = v3 || new Vector2(); - - } - - CubicBezierCurve.prototype = Object.create( Curve.prototype ); - CubicBezierCurve.prototype.constructor = CubicBezierCurve; - - CubicBezierCurve.prototype.isCubicBezierCurve = true; - - CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; - - point.set( - CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), - CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) - ); - - return point; - - }; - - CubicBezierCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - this.v3.copy( source.v3 ); - - return this; - - }; - - CubicBezierCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - data.v3 = this.v3.toArray(); - - return data; - - }; - - CubicBezierCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - this.v3.fromArray( json.v3 ); - - return this; - - }; - - function CubicBezierCurve3( v0, v1, v2, v3 ) { - - Curve.call( this ); - - this.type = 'CubicBezierCurve3'; - - this.v0 = v0 || new Vector3(); - this.v1 = v1 || new Vector3(); - this.v2 = v2 || new Vector3(); - this.v3 = v3 || new Vector3(); - - } - - CubicBezierCurve3.prototype = Object.create( Curve.prototype ); - CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; - - CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; - - CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; - - point.set( - CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), - CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), - CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) - ); - - return point; - - }; - - CubicBezierCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - this.v3.copy( source.v3 ); - - return this; - - }; - - CubicBezierCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - data.v3 = this.v3.toArray(); - - return data; - - }; - - CubicBezierCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - this.v3.fromArray( json.v3 ); - - return this; - - }; - - function LineCurve( v1, v2 ) { - - Curve.call( this ); - - this.type = 'LineCurve'; - - this.v1 = v1 || new Vector2(); - this.v2 = v2 || new Vector2(); - - } - - LineCurve.prototype = Object.create( Curve.prototype ); - LineCurve.prototype.constructor = LineCurve; - - LineCurve.prototype.isLineCurve = true; - - LineCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - if ( t === 1 ) { - - point.copy( this.v2 ); - - } else { - - point.copy( this.v2 ).sub( this.v1 ); - point.multiplyScalar( t ).add( this.v1 ); - - } - - return point; - - }; - - // Line curve is linear, so we can overwrite default getPointAt - - LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { - - return this.getPoint( u, optionalTarget ); - - }; - - LineCurve.prototype.getTangent = function ( /* t */ ) { - - var tangent = this.v2.clone().sub( this.v1 ); - - return tangent.normalize(); - - }; - - LineCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - LineCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - LineCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function LineCurve3( v1, v2 ) { - - Curve.call( this ); - - this.type = 'LineCurve3'; - - this.v1 = v1 || new Vector3(); - this.v2 = v2 || new Vector3(); - - } - - LineCurve3.prototype = Object.create( Curve.prototype ); - LineCurve3.prototype.constructor = LineCurve3; - - LineCurve3.prototype.isLineCurve3 = true; - - LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - if ( t === 1 ) { - - point.copy( this.v2 ); - - } else { - - point.copy( this.v2 ).sub( this.v1 ); - point.multiplyScalar( t ).add( this.v1 ); - - } - - return point; - - }; - - // Line curve is linear, so we can overwrite default getPointAt - - LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { - - return this.getPoint( u, optionalTarget ); - - }; - - LineCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - LineCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - LineCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function QuadraticBezierCurve( v0, v1, v2 ) { - - Curve.call( this ); - - this.type = 'QuadraticBezierCurve'; - - this.v0 = v0 || new Vector2(); - this.v1 = v1 || new Vector2(); - this.v2 = v2 || new Vector2(); - - } - - QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); - QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; - - QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; - - QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2; - - point.set( - QuadraticBezier( t, v0.x, v1.x, v2.x ), - QuadraticBezier( t, v0.y, v1.y, v2.y ) - ); - - return point; - - }; - - QuadraticBezierCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - QuadraticBezierCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - QuadraticBezierCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function QuadraticBezierCurve3( v0, v1, v2 ) { - - Curve.call( this ); - - this.type = 'QuadraticBezierCurve3'; - - this.v0 = v0 || new Vector3(); - this.v1 = v1 || new Vector3(); - this.v2 = v2 || new Vector3(); - - } - - QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); - QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; - - QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; - - QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector3(); - - var v0 = this.v0, v1 = this.v1, v2 = this.v2; - - point.set( - QuadraticBezier( t, v0.x, v1.x, v2.x ), - QuadraticBezier( t, v0.y, v1.y, v2.y ), - QuadraticBezier( t, v0.z, v1.z, v2.z ) - ); - - return point; - - }; - - QuadraticBezierCurve3.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.v0.copy( source.v0 ); - this.v1.copy( source.v1 ); - this.v2.copy( source.v2 ); - - return this; - - }; - - QuadraticBezierCurve3.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.v0 = this.v0.toArray(); - data.v1 = this.v1.toArray(); - data.v2 = this.v2.toArray(); - - return data; - - }; - - QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.v0.fromArray( json.v0 ); - this.v1.fromArray( json.v1 ); - this.v2.fromArray( json.v2 ); - - return this; - - }; - - function SplineCurve( points /* array of Vector2 */ ) { - - Curve.call( this ); - - this.type = 'SplineCurve'; - - this.points = points || []; - - } - - SplineCurve.prototype = Object.create( Curve.prototype ); - SplineCurve.prototype.constructor = SplineCurve; - - SplineCurve.prototype.isSplineCurve = true; - - SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { - - var point = optionalTarget || new Vector2(); - - var points = this.points; - var p = ( points.length - 1 ) * t; - - var intPoint = Math.floor( p ); - var weight = p - intPoint; - - var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; - var p1 = points[ intPoint ]; - var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; - var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; - - point.set( - CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), - CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) - ); - - return point; - - }; - - SplineCurve.prototype.copy = function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.points = []; - - for ( var i = 0, l = source.points.length; i < l; i ++ ) { - - var point = source.points[ i ]; - - this.points.push( point.clone() ); - - } - - return this; - - }; - - SplineCurve.prototype.toJSON = function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.points = []; - - for ( var i = 0, l = this.points.length; i < l; i ++ ) { - - var point = this.points[ i ]; - data.points.push( point.toArray() ); - - } - - return data; - - }; - - SplineCurve.prototype.fromJSON = function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.points = []; - - for ( var i = 0, l = json.points.length; i < l; i ++ ) { - - var point = json.points[ i ]; - this.points.push( new Vector2().fromArray( point ) ); - - } - - return this; - - }; - - - - var Curves = /*#__PURE__*/Object.freeze({ - ArcCurve: ArcCurve, - CatmullRomCurve3: CatmullRomCurve3, - CubicBezierCurve: CubicBezierCurve, - CubicBezierCurve3: CubicBezierCurve3, - EllipseCurve: EllipseCurve, - LineCurve: LineCurve, - LineCurve3: LineCurve3, - QuadraticBezierCurve: QuadraticBezierCurve, - QuadraticBezierCurve3: QuadraticBezierCurve3, - SplineCurve: SplineCurve - }); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * - **/ - - /************************************************************** - * Curved Path - a curve path is simply a array of connected - * curves, but retains the api of a curve - **************************************************************/ - - function CurvePath() { - - Curve.call( this ); - - this.type = 'CurvePath'; - - this.curves = []; - this.autoClose = false; // Automatically closes the path - - } - - CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { - - constructor: CurvePath, - - add: function ( curve ) { - - this.curves.push( curve ); - - }, - - closePath: function () { - - // Add a line curve if start and end of lines are not connected - var startPoint = this.curves[ 0 ].getPoint( 0 ); - var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); - - if ( ! startPoint.equals( endPoint ) ) { - - this.curves.push( new LineCurve( endPoint, startPoint ) ); - - } - - }, - - // To get accurate point with reference to - // entire path distance at time t, - // following has to be done: - - // 1. Length of each sub path have to be known - // 2. Locate and identify type of curve - // 3. Get t for the curve - // 4. Return curve.getPointAt(t') - - getPoint: function ( t ) { - - var d = t * this.getLength(); - var curveLengths = this.getCurveLengths(); - var i = 0; - - // To think about boundaries points. - - while ( i < curveLengths.length ) { - - if ( curveLengths[ i ] >= d ) { - - var diff = curveLengths[ i ] - d; - var curve = this.curves[ i ]; - - var segmentLength = curve.getLength(); - var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; - - return curve.getPointAt( u ); - - } - - i ++; - - } - - return null; - - // loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { - - points.push( points[ 0 ] ); - - } - - return points; - - }, - - copy: function ( source ) { - - Curve.prototype.copy.call( this, source ); - - this.curves = []; - - for ( var i = 0, l = source.curves.length; i < l; i ++ ) { - - var curve = source.curves[ i ]; - - this.curves.push( curve.clone() ); - - } - - this.autoClose = source.autoClose; - - return this; - - }, - - toJSON: function () { - - var data = Curve.prototype.toJSON.call( this ); - - data.autoClose = this.autoClose; - data.curves = []; - - for ( var i = 0, l = this.curves.length; i < l; i ++ ) { - - var curve = this.curves[ i ]; - data.curves.push( curve.toJSON() ); - - } - - return data; - - }, - - fromJSON: function ( json ) { - - Curve.prototype.fromJSON.call( this, json ); - - this.autoClose = json.autoClose; - this.curves = []; - - for ( var i = 0, l = json.curves.length; i < l; i ++ ) { - - var curve = json.curves[ i ]; - this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); - - } - - return this; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * Creates free form 2d path using series of points, lines or curves. - **/ - - function Path( points ) { - - CurvePath.call( this ); - - this.type = 'Path'; - - this.currentPoint = new Vector2(); - - if ( points ) { - - this.setFromPoints( points ); - - } - - } - - Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { - - constructor: Path, - - setFromPoints: function ( points ) { - - this.moveTo( points[ 0 ].x, points[ 0 ].y ); - - for ( var i = 1, l = points.length; i < l; i ++ ) { - - this.lineTo( points[ i ].x, points[ i ].y ); - - } - - }, - - moveTo: function ( x, y ) { - - this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? - - }, - - lineTo: function ( x, y ) { - - var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); - this.curves.push( curve ); - - this.currentPoint.set( x, y ); - - }, - - quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { - - var curve = new QuadraticBezierCurve( - this.currentPoint.clone(), - new Vector2( aCPx, aCPy ), - new Vector2( aX, aY ) - ); - - this.curves.push( curve ); - - this.currentPoint.set( aX, aY ); - - }, - - bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { - - var curve = new CubicBezierCurve( - this.currentPoint.clone(), - new Vector2( aCP1x, aCP1y ), - new Vector2( aCP2x, aCP2y ), - new Vector2( aX, aY ) - ); - - this.curves.push( curve ); - - this.currentPoint.set( aX, aY ); - - }, - - splineThru: function ( pts /*Array of Vector*/ ) { - - var npts = [ this.currentPoint.clone() ].concat( pts ); - - var curve = new SplineCurve( npts ); - this.curves.push( curve ); - - this.currentPoint.copy( pts[ pts.length - 1 ] ); - - }, - - arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { - - var x0 = this.currentPoint.x; - var y0 = this.currentPoint.y; - - this.absarc( aX + x0, aY + y0, aRadius, - aStartAngle, aEndAngle, aClockwise ); - - }, - - absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { - - this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); - - }, - - ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { - - var x0 = this.currentPoint.x; - var y0 = this.currentPoint.y; - - this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); - - }, - - absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { - - var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); - - if ( this.curves.length > 0 ) { - - // if a previous curve is present, attempt to join - var firstPoint = curve.getPoint( 0 ); - - if ( ! firstPoint.equals( this.currentPoint ) ) { - - this.lineTo( firstPoint.x, firstPoint.y ); - - } - - } - - this.curves.push( curve ); - - var lastPoint = curve.getPoint( 1 ); - this.currentPoint.copy( lastPoint ); - - }, - - copy: function ( source ) { - - CurvePath.prototype.copy.call( this, source ); - - this.currentPoint.copy( source.currentPoint ); - - return this; - - }, - - toJSON: function () { - - var data = CurvePath.prototype.toJSON.call( this ); - - data.currentPoint = this.currentPoint.toArray(); - - return data; - - }, - - fromJSON: function ( json ) { - - CurvePath.prototype.fromJSON.call( this, json ); - - this.currentPoint.fromArray( json.currentPoint ); - - return this; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * Defines a 2d shape plane using paths. - **/ - - // STEP 1 Create a path. - // STEP 2 Turn path into shape. - // STEP 3 ExtrudeGeometry takes in Shape/Shapes - // STEP 3a - Extract points from each shape, turn to vertices - // STEP 3b - Triangulate each shape, add faces. - - function Shape( points ) { - - Path.call( this, points ); - - this.uuid = _Math.generateUUID(); - - this.type = 'Shape'; - - this.holes = []; - - } - - Shape.prototype = Object.assign( Object.create( Path.prototype ), { - - constructor: Shape, - - getPointsHoles: function ( divisions ) { - - var holesPts = []; - - for ( var i = 0, l = this.holes.length; i < l; i ++ ) { - - holesPts[ i ] = this.holes[ i ].getPoints( divisions ); - - } - - return holesPts; - - }, - - // get points of shape and holes (keypoints based on segments parameter) - - extractPoints: function ( divisions ) { - - return { - - shape: this.getPoints( divisions ), - holes: this.getPointsHoles( divisions ) - - }; - - }, - - copy: function ( source ) { - - Path.prototype.copy.call( this, source ); - - this.holes = []; - - for ( var i = 0, l = source.holes.length; i < l; i ++ ) { - - var hole = source.holes[ i ]; - - this.holes.push( hole.clone() ); - - } - - return this; - - }, - - toJSON: function () { - - var data = Path.prototype.toJSON.call( this ); - - data.uuid = this.uuid; - data.holes = []; - - for ( var i = 0, l = this.holes.length; i < l; i ++ ) { - - var hole = this.holes[ i ]; - data.holes.push( hole.toJSON() ); - - } - - return data; - - }, - - fromJSON: function ( json ) { - - Path.prototype.fromJSON.call( this, json ); - - this.uuid = json.uuid; - this.holes = []; - - for ( var i = 0, l = json.holes.length; i < l; i ++ ) { - - var hole = json.holes[ i ]; - this.holes.push( new Path().fromJSON( hole ) ); - - } - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function Light( color, intensity ) { - - Object3D.call( this ); - - this.type = 'Light'; - - this.color = new Color( color ); - this.intensity = intensity !== undefined ? intensity : 1; - - this.receiveShadow = undefined; - - } - - Light.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Light, - - isLight: true, - - copy: function ( source ) { - - Object3D.prototype.copy.call( this, source ); - - this.color.copy( source.color ); - this.intensity = source.intensity; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.color = this.color.getHex(); - data.object.intensity = this.intensity; - - if ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex(); - - if ( this.distance !== undefined ) data.object.distance = this.distance; - if ( this.angle !== undefined ) data.object.angle = this.angle; - if ( this.decay !== undefined ) data.object.decay = this.decay; - if ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra; - - if ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON(); - - return data; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function HemisphereLight( skyColor, groundColor, intensity ) { - - Light.call( this, skyColor, intensity ); - - this.type = 'HemisphereLight'; - - this.castShadow = undefined; - - this.position.copy( Object3D.DefaultUp ); - this.updateMatrix(); - - this.groundColor = new Color( groundColor ); - - } - - HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: HemisphereLight, - - isHemisphereLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.groundColor.copy( source.groundColor ); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function LightShadow( camera ) { - - this.camera = camera; - - this.bias = 0; - this.radius = 1; - - this.mapSize = new Vector2( 512, 512 ); - - this.map = null; - this.matrix = new Matrix4(); - - } - - Object.assign( LightShadow.prototype, { - - copy: function ( source ) { - - this.camera = source.camera.clone(); - - this.bias = source.bias; - this.radius = source.radius; - - this.mapSize.copy( source.mapSize ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - toJSON: function () { - - var object = {}; - - if ( this.bias !== 0 ) object.bias = this.bias; - if ( this.radius !== 1 ) object.radius = this.radius; - if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray(); - - object.camera = this.camera.toJSON( false ).object; - delete object.camera.matrix; - - return object; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function SpotLightShadow() { - - LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); - - } - - SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { - - constructor: SpotLightShadow, - - isSpotLightShadow: true, - - update: function ( light ) { - - var camera = this.camera; - - var fov = _Math.RAD2DEG * 2 * light.angle; - var aspect = this.mapSize.width / this.mapSize.height; - var far = light.distance || camera.far; - - if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { - - camera.fov = fov; - camera.aspect = aspect; - camera.far = far; - camera.updateProjectionMatrix(); - - } - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function SpotLight( color, intensity, distance, angle, penumbra, decay ) { - - Light.call( this, color, intensity ); - - this.type = 'SpotLight'; - - this.position.copy( Object3D.DefaultUp ); - this.updateMatrix(); - - this.target = new Object3D(); - - Object.defineProperty( this, 'power', { - get: function () { - - // intensity = power per solid angle. - // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - return this.intensity * Math.PI; - - }, - set: function ( power ) { - - // intensity = power per solid angle. - // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - this.intensity = power / Math.PI; - - } - } ); - - this.distance = ( distance !== undefined ) ? distance : 0; - this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; - this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; - this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. - - this.shadow = new SpotLightShadow(); - - } - - SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: SpotLight, - - isSpotLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.distance = source.distance; - this.angle = source.angle; - this.penumbra = source.penumbra; - this.decay = source.decay; - - this.target = source.target.clone(); - - this.shadow = source.shadow.clone(); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - - function PointLight( color, intensity, distance, decay ) { - - Light.call( this, color, intensity ); - - this.type = 'PointLight'; - - Object.defineProperty( this, 'power', { - get: function () { - - // intensity = power per solid angle. - // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - return this.intensity * 4 * Math.PI; - - }, - set: function ( power ) { - - // intensity = power per solid angle. - // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf - this.intensity = power / ( 4 * Math.PI ); - - } - } ); - - this.distance = ( distance !== undefined ) ? distance : 0; - this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. - - this.shadow = new LightShadow( new PerspectiveCamera( 90, 1, 0.5, 500 ) ); - - } - - PointLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: PointLight, - - isPointLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.distance = source.distance; - this.decay = source.decay; - - this.shadow = source.shadow.clone(); - - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author arose / http://github.com/arose - */ - - function OrthographicCamera( left, right, top, bottom, near, far ) { - - Camera.call( this ); - - this.type = 'OrthographicCamera'; - - this.zoom = 1; - this.view = null; - - this.left = ( left !== undefined ) ? left : - 1; - this.right = ( right !== undefined ) ? right : 1; - this.top = ( top !== undefined ) ? top : 1; - this.bottom = ( bottom !== undefined ) ? bottom : - 1; - - this.near = ( near !== undefined ) ? near : 0.1; - this.far = ( far !== undefined ) ? far : 2000; - - this.updateProjectionMatrix(); - - } - - OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { - - constructor: OrthographicCamera, - - isOrthographicCamera: true, - - copy: function ( source, recursive ) { - - Camera.prototype.copy.call( this, source, recursive ); - - this.left = source.left; - this.right = source.right; - this.top = source.top; - this.bottom = source.bottom; - this.near = source.near; - this.far = source.far; - - this.zoom = source.zoom; - this.view = source.view === null ? null : Object.assign( {}, source.view ); - - return this; - - }, - - setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { - - if ( this.view === null ) { - - this.view = { - enabled: true, - fullWidth: 1, - fullHeight: 1, - offsetX: 0, - offsetY: 0, - width: 1, - height: 1 - }; - - } - - this.view.enabled = true; - this.view.fullWidth = fullWidth; - this.view.fullHeight = fullHeight; - this.view.offsetX = x; - this.view.offsetY = y; - this.view.width = width; - this.view.height = height; - - this.updateProjectionMatrix(); - - }, - - clearViewOffset: function () { - - if ( this.view !== null ) { - - this.view.enabled = false; - - } - - this.updateProjectionMatrix(); - - }, - - updateProjectionMatrix: function () { - - var dx = ( this.right - this.left ) / ( 2 * this.zoom ); - var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); - var cx = ( this.right + this.left ) / 2; - var cy = ( this.top + this.bottom ) / 2; - - var left = cx - dx; - var right = cx + dx; - var top = cy + dy; - var bottom = cy - dy; - - if ( this.view !== null && this.view.enabled ) { - - var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); - var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); - var scaleW = ( this.right - this.left ) / this.view.width; - var scaleH = ( this.top - this.bottom ) / this.view.height; - - left += scaleW * ( this.view.offsetX / zoomW ); - right = left + scaleW * ( this.view.width / zoomW ); - top -= scaleH * ( this.view.offsetY / zoomH ); - bottom = top - scaleH * ( this.view.height / zoomH ); - - } - - this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); - - this.projectionMatrixInverse.getInverse( this.projectionMatrix ); - - }, - - toJSON: function ( meta ) { - - var data = Object3D.prototype.toJSON.call( this, meta ); - - data.object.zoom = this.zoom; - data.object.left = this.left; - data.object.right = this.right; - data.object.top = this.top; - data.object.bottom = this.bottom; - data.object.near = this.near; - data.object.far = this.far; - - if ( this.view !== null ) data.object.view = Object.assign( {}, this.view ); - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function DirectionalLightShadow( ) { - - LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); - - } - - DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { - - constructor: DirectionalLightShadow - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author alteredq / http://alteredqualia.com/ - */ - - function DirectionalLight( color, intensity ) { - - Light.call( this, color, intensity ); - - this.type = 'DirectionalLight'; - - this.position.copy( Object3D.DefaultUp ); - this.updateMatrix(); - - this.target = new Object3D(); - - this.shadow = new DirectionalLightShadow(); - - } - - DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: DirectionalLight, - - isDirectionalLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.target = source.target.clone(); - - this.shadow = source.shadow.clone(); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function AmbientLight( color, intensity ) { - - Light.call( this, color, intensity ); - - this.type = 'AmbientLight'; - - this.castShadow = undefined; - - } - - AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: AmbientLight, - - isAmbientLight: true - - } ); - - /** - * @author abelnation / http://github.com/abelnation - */ - - function RectAreaLight( color, intensity, width, height ) { - - Light.call( this, color, intensity ); - - this.type = 'RectAreaLight'; - - this.width = ( width !== undefined ) ? width : 10; - this.height = ( height !== undefined ) ? height : 10; - - } - - RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { - - constructor: RectAreaLight, - - isRectAreaLight: true, - - copy: function ( source ) { - - Light.prototype.copy.call( this, source ); - - this.width = source.width; - this.height = source.height; - - return this; - - }, - - toJSON: function ( meta ) { - - var data = Light.prototype.toJSON.call( this, meta ); - - data.object.width = this.width; - data.object.height = this.height; - - return data; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function MaterialLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - this.textures = {}; - - } - - Object.assign( MaterialLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( JSON.parse( text ) ) ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - var textures = this.textures; - - function getTexture( name ) { - - if ( textures[ name ] === undefined ) { - - console.warn( 'THREE.MaterialLoader: Undefined texture', name ); - - } - - return textures[ name ]; - - } - - var material = new Materials[ json.type ](); - - if ( json.uuid !== undefined ) material.uuid = json.uuid; - if ( json.name !== undefined ) material.name = json.name; - if ( json.color !== undefined ) material.color.setHex( json.color ); - if ( json.roughness !== undefined ) material.roughness = json.roughness; - if ( json.metalness !== undefined ) material.metalness = json.metalness; - if ( json.emissive !== undefined ) material.emissive.setHex( json.emissive ); - if ( json.specular !== undefined ) material.specular.setHex( json.specular ); - if ( json.shininess !== undefined ) material.shininess = json.shininess; - if ( json.clearCoat !== undefined ) material.clearCoat = json.clearCoat; - if ( json.clearCoatRoughness !== undefined ) material.clearCoatRoughness = json.clearCoatRoughness; - if ( json.vertexColors !== undefined ) material.vertexColors = json.vertexColors; - if ( json.fog !== undefined ) material.fog = json.fog; - if ( json.flatShading !== undefined ) material.flatShading = json.flatShading; - if ( json.blending !== undefined ) material.blending = json.blending; - if ( json.combine !== undefined ) material.combine = json.combine; - if ( json.side !== undefined ) material.side = json.side; - if ( json.opacity !== undefined ) material.opacity = json.opacity; - if ( json.transparent !== undefined ) material.transparent = json.transparent; - if ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest; - if ( json.depthTest !== undefined ) material.depthTest = json.depthTest; - if ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite; - if ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite; - if ( json.wireframe !== undefined ) material.wireframe = json.wireframe; - if ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth; - if ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap; - if ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin; - - if ( json.rotation !== undefined ) material.rotation = json.rotation; - - if ( json.linewidth !== 1 ) material.linewidth = json.linewidth; - if ( json.dashSize !== undefined ) material.dashSize = json.dashSize; - if ( json.gapSize !== undefined ) material.gapSize = json.gapSize; - if ( json.scale !== undefined ) material.scale = json.scale; - - if ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset; - if ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor; - if ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits; - - if ( json.skinning !== undefined ) material.skinning = json.skinning; - if ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets; - if ( json.dithering !== undefined ) material.dithering = json.dithering; - - if ( json.visible !== undefined ) material.visible = json.visible; - if ( json.userData !== undefined ) material.userData = json.userData; - - // Shader Material - - if ( json.uniforms !== undefined ) { - - for ( var name in json.uniforms ) { - - var uniform = json.uniforms[ name ]; - - material.uniforms[ name ] = {}; - - switch ( uniform.type ) { - - case 't': - material.uniforms[ name ].value = getTexture( uniform.value ); - break; - - case 'c': - material.uniforms[ name ].value = new Color().setHex( uniform.value ); - break; - - case 'v2': - material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); - break; - - case 'v3': - material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); - break; - - case 'v4': - material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); - break; - - case 'm3': - material.uniforms[ name ].value = new Matrix3().fromArray( uniform.value ); - - case 'm4': - material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); - break; - - default: - material.uniforms[ name ].value = uniform.value; - - } - - } - - } - - if ( json.defines !== undefined ) material.defines = json.defines; - if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader; - if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader; - - if ( json.extensions !== undefined ) { - - for ( var key in json.extensions ) { - - material.extensions[ key ] = json.extensions[ key ]; - - } - - } - - // Deprecated - - if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading - - // for PointsMaterial - - if ( json.size !== undefined ) material.size = json.size; - if ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation; - - // maps - - if ( json.map !== undefined ) material.map = getTexture( json.map ); - - if ( json.alphaMap !== undefined ) { - - material.alphaMap = getTexture( json.alphaMap ); - material.transparent = true; - - } - - if ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap ); - if ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale; - - if ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap ); - if ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType; - if ( json.normalScale !== undefined ) { - - var normalScale = json.normalScale; - - if ( Array.isArray( normalScale ) === false ) { - - // Blender exporter used to export a scalar. See #7459 - - normalScale = [ normalScale, normalScale ]; - - } - - material.normalScale = new Vector2().fromArray( normalScale ); - - } - - if ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap ); - if ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale; - if ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias; - - if ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap ); - if ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap ); - - if ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap ); - if ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity; - - if ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap ); - - if ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap ); - if ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity; - - if ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity; - - if ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap ); - if ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity; - - if ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap ); - if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity; - - if ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap ); - - return material; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setTextures: function ( value ) { - - this.textures = value; - return this; - - } - - } ); - - /** - * @author Don McCurdy / https://www.donmccurdy.com - */ - - var LoaderUtils = { - - decodeText: function ( array ) { - - if ( typeof TextDecoder !== 'undefined' ) { - - return new TextDecoder().decode( array ); - - } - - // Avoid the String.fromCharCode.apply(null, array) shortcut, which - // throws a "maximum call stack size exceeded" error for large arrays. - - var s = ''; - - for ( var i = 0, il = array.length; i < il; i ++ ) { - - // Implicitly assumes little-endian. - s += String.fromCharCode( array[ i ] ); - - } - - // Merges multi-byte utf-8 characters. - return decodeURIComponent( escape( s ) ); - - }, - - extractUrlBase: function ( url ) { - - var index = url.lastIndexOf( '/' ); - - if ( index === - 1 ) return './'; - - return url.substr( 0, index + 1 ); - - } - - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function BufferGeometryLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( BufferGeometryLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( scope.manager ); - loader.setPath( scope.path ); - loader.load( url, function ( text ) { - - onLoad( scope.parse( JSON.parse( text ) ) ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - var geometry = new BufferGeometry(); - - var index = json.data.index; - - if ( index !== undefined ) { - - var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); - geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); - - } - - var attributes = json.data.attributes; - - for ( var key in attributes ) { - - var attribute = attributes[ key ]; - var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); - - geometry.addAttribute( key, new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ) ); - - } - - var groups = json.data.groups || json.data.drawcalls || json.data.offsets; - - if ( groups !== undefined ) { - - for ( var i = 0, n = groups.length; i !== n; ++ i ) { - - var group = groups[ i ]; - - geometry.addGroup( group.start, group.count, group.materialIndex ); - - } - - } - - var boundingSphere = json.data.boundingSphere; - - if ( boundingSphere !== undefined ) { - - var center = new Vector3(); - - if ( boundingSphere.center !== undefined ) { - - center.fromArray( boundingSphere.center ); - - } - - geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); - - } - - if ( json.name ) geometry.name = json.name; - if ( json.userData ) geometry.userData = json.userData; - - return geometry; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - var TYPED_ARRAYS = { - Int8Array: Int8Array, - Uint8Array: Uint8Array, - // Workaround for IE11 pre KB2929437. See #11440 - Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array, - Int16Array: Int16Array, - Uint16Array: Uint16Array, - Int32Array: Int32Array, - Uint32Array: Uint32Array, - Float32Array: Float32Array, - Float64Array: Float64Array - }; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function ObjectLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - this.resourcePath = ''; - - } - - Object.assign( ObjectLoader.prototype, { - - crossOrigin: 'anonymous', - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var path = ( this.path === undefined ) ? LoaderUtils.extractUrlBase( url ) : this.path; - this.resourcePath = this.resourcePath || path; - - var loader = new FileLoader( scope.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - var json = null; - - try { - - json = JSON.parse( text ); - - } catch ( error ) { - - if ( onError !== undefined ) onError( error ); - - console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); - - return; - - } - - var metadata = json.metadata; - - if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { - - console.error( 'THREE.ObjectLoader: Can\'t load ' + url ); - return; - - } - - scope.parse( json, onLoad ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - }, - - setResourcePath: function ( value ) { - - this.resourcePath = value; - return this; - - }, - - setCrossOrigin: function ( value ) { - - this.crossOrigin = value; - return this; - - }, - - parse: function ( json, onLoad ) { - - var shapes = this.parseShape( json.shapes ); - var geometries = this.parseGeometries( json.geometries, shapes ); - - var images = this.parseImages( json.images, function () { - - if ( onLoad !== undefined ) onLoad( object ); - - } ); - - var textures = this.parseTextures( json.textures, images ); - var materials = this.parseMaterials( json.materials, textures ); - - var object = this.parseObject( json.object, geometries, materials ); - - if ( json.animations ) { - - object.animations = this.parseAnimations( json.animations ); - - } - - if ( json.images === undefined || json.images.length === 0 ) { - - if ( onLoad !== undefined ) onLoad( object ); - - } - - return object; - - }, - - parseShape: function ( json ) { - - var shapes = {}; - - if ( json !== undefined ) { - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var shape = new Shape().fromJSON( json[ i ] ); - - shapes[ shape.uuid ] = shape; - - } - - } - - return shapes; - - }, - - parseGeometries: function ( json, shapes ) { - - var geometries = {}; - - if ( json !== undefined ) { - - var bufferGeometryLoader = new BufferGeometryLoader(); - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var geometry; - var data = json[ i ]; - - switch ( data.type ) { - - case 'PlaneGeometry': - case 'PlaneBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.width, - data.height, - data.widthSegments, - data.heightSegments - ); - - break; - - case 'BoxGeometry': - case 'BoxBufferGeometry': - case 'CubeGeometry': // backwards compatible - - geometry = new Geometries[ data.type ]( - data.width, - data.height, - data.depth, - data.widthSegments, - data.heightSegments, - data.depthSegments - ); - - break; - - case 'CircleGeometry': - case 'CircleBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.segments, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'CylinderGeometry': - case 'CylinderBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radiusTop, - data.radiusBottom, - data.height, - data.radialSegments, - data.heightSegments, - data.openEnded, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'ConeGeometry': - case 'ConeBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.height, - data.radialSegments, - data.heightSegments, - data.openEnded, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'SphereGeometry': - case 'SphereBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.widthSegments, - data.heightSegments, - data.phiStart, - data.phiLength, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'DodecahedronGeometry': - case 'DodecahedronBufferGeometry': - case 'IcosahedronGeometry': - case 'IcosahedronBufferGeometry': - case 'OctahedronGeometry': - case 'OctahedronBufferGeometry': - case 'TetrahedronGeometry': - case 'TetrahedronBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.detail - ); - - break; - - case 'RingGeometry': - case 'RingBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.innerRadius, - data.outerRadius, - data.thetaSegments, - data.phiSegments, - data.thetaStart, - data.thetaLength - ); - - break; - - case 'TorusGeometry': - case 'TorusBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.tube, - data.radialSegments, - data.tubularSegments, - data.arc - ); - - break; - - case 'TorusKnotGeometry': - case 'TorusKnotBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.radius, - data.tube, - data.tubularSegments, - data.radialSegments, - data.p, - data.q - ); - - break; - - case 'LatheGeometry': - case 'LatheBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.points, - data.segments, - data.phiStart, - data.phiLength - ); - - break; - - case 'PolyhedronGeometry': - case 'PolyhedronBufferGeometry': - - geometry = new Geometries[ data.type ]( - data.vertices, - data.indices, - data.radius, - data.details - ); - - break; - - case 'ShapeGeometry': - case 'ShapeBufferGeometry': - - var geometryShapes = []; - - for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { - - var shape = shapes[ data.shapes[ j ] ]; - - geometryShapes.push( shape ); - - } - - geometry = new Geometries[ data.type ]( - geometryShapes, - data.curveSegments - ); - - break; - - - case 'ExtrudeGeometry': - case 'ExtrudeBufferGeometry': - - var geometryShapes = []; - - for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { - - var shape = shapes[ data.shapes[ j ] ]; - - geometryShapes.push( shape ); - - } - - var extrudePath = data.options.extrudePath; - - if ( extrudePath !== undefined ) { - - data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); - - } - - geometry = new Geometries[ data.type ]( - geometryShapes, - data.options - ); - - break; - - case 'BufferGeometry': - - geometry = bufferGeometryLoader.parse( data ); - - break; - - case 'Geometry': - - if ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) { - - var geometryLoader = new THREE.LegacyJSONLoader(); - geometry = geometryLoader.parse( data, this.resourcePath ).geometry; - - - } else { - - console.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".' ); - - } - - break; - - default: - - console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); - - continue; - - } - - geometry.uuid = data.uuid; - - if ( data.name !== undefined ) geometry.name = data.name; - if ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData; - - geometries[ data.uuid ] = geometry; - - } - - } - - return geometries; - - }, - - parseMaterials: function ( json, textures ) { - - var cache = {}; // MultiMaterial - var materials = {}; - - if ( json !== undefined ) { - - var loader = new MaterialLoader(); - loader.setTextures( textures ); - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var data = json[ i ]; - - if ( data.type === 'MultiMaterial' ) { - - // Deprecated - - var array = []; - - for ( var j = 0; j < data.materials.length; j ++ ) { - - var material = data.materials[ j ]; - - if ( cache[ material.uuid ] === undefined ) { - - cache[ material.uuid ] = loader.parse( material ); - - } - - array.push( cache[ material.uuid ] ); - - } - - materials[ data.uuid ] = array; - - } else { - - if ( cache[ data.uuid ] === undefined ) { - - cache[ data.uuid ] = loader.parse( data ); - - } - - materials[ data.uuid ] = cache[ data.uuid ]; - - } - - } - - } - - return materials; - - }, - - parseAnimations: function ( json ) { - - var animations = []; - - for ( var i = 0; i < json.length; i ++ ) { - - var data = json[ i ]; - - var clip = AnimationClip.parse( data ); - - if ( data.uuid !== undefined ) clip.uuid = data.uuid; - - animations.push( clip ); - - } - - return animations; - - }, - - parseImages: function ( json, onLoad ) { - - var scope = this; - var images = {}; - - function loadImage( url ) { - - scope.manager.itemStart( url ); - - return loader.load( url, function () { - - scope.manager.itemEnd( url ); - - }, undefined, function () { - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } ); - - } - - if ( json !== undefined && json.length > 0 ) { - - var manager = new LoadingManager( onLoad ); - - var loader = new ImageLoader( manager ); - loader.setCrossOrigin( this.crossOrigin ); - - for ( var i = 0, il = json.length; i < il; i ++ ) { - - var image = json[ i ]; - var url = image.url; - - if ( Array.isArray( url ) ) { - - // load array of images e.g CubeTexture - - images[ image.uuid ] = []; - - for ( var j = 0, jl = url.length; j < jl; j ++ ) { - - var currentUrl = url[ j ]; - - var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl; - - images[ image.uuid ].push( loadImage( path ) ); - - } - - } else { - - // load single image - - var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url; - - images[ image.uuid ] = loadImage( path ); - - } - - } - - } - - return images; - - }, - - parseTextures: function ( json, images ) { - - function parseConstant( value, type ) { - - if ( typeof value === 'number' ) return value; - - console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); - - return type[ value ]; - - } - - var textures = {}; - - if ( json !== undefined ) { - - for ( var i = 0, l = json.length; i < l; i ++ ) { - - var data = json[ i ]; - - if ( data.image === undefined ) { - - console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); - - } - - if ( images[ data.image ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); - - } - - var texture; - - if ( Array.isArray( images[ data.image ] ) ) { - - texture = new CubeTexture( images[ data.image ] ); - - } else { - - texture = new Texture( images[ data.image ] ); - - } - - texture.needsUpdate = true; - - texture.uuid = data.uuid; - - if ( data.name !== undefined ) texture.name = data.name; - - if ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); - - if ( data.offset !== undefined ) texture.offset.fromArray( data.offset ); - if ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat ); - if ( data.center !== undefined ) texture.center.fromArray( data.center ); - if ( data.rotation !== undefined ) texture.rotation = data.rotation; - - if ( data.wrap !== undefined ) { - - texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); - texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); - - } - - if ( data.format !== undefined ) texture.format = data.format; - if ( data.type !== undefined ) texture.type = data.type; - if ( data.encoding !== undefined ) texture.encoding = data.encoding; - - if ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); - if ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); - if ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy; - - if ( data.flipY !== undefined ) texture.flipY = data.flipY; - - if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha; - if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment; - - textures[ data.uuid ] = texture; - - } - - } - - return textures; - - }, - - parseObject: function ( data, geometries, materials ) { - - var object; - - function getGeometry( name ) { - - if ( geometries[ name ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); - - } - - return geometries[ name ]; - - } - - function getMaterial( name ) { - - if ( name === undefined ) return undefined; - - if ( Array.isArray( name ) ) { - - var array = []; - - for ( var i = 0, l = name.length; i < l; i ++ ) { - - var uuid = name[ i ]; - - if ( materials[ uuid ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); - - } - - array.push( materials[ uuid ] ); - - } - - return array; - - } - - if ( materials[ name ] === undefined ) { - - console.warn( 'THREE.ObjectLoader: Undefined material', name ); - - } - - return materials[ name ]; - - } - - switch ( data.type ) { - - case 'Scene': - - object = new Scene(); - - if ( data.background !== undefined ) { - - if ( Number.isInteger( data.background ) ) { - - object.background = new Color( data.background ); - - } - - } - - if ( data.fog !== undefined ) { - - if ( data.fog.type === 'Fog' ) { - - object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); - - } else if ( data.fog.type === 'FogExp2' ) { - - object.fog = new FogExp2( data.fog.color, data.fog.density ); - - } - - } - - break; - - case 'PerspectiveCamera': - - object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); - - if ( data.focus !== undefined ) object.focus = data.focus; - if ( data.zoom !== undefined ) object.zoom = data.zoom; - if ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge; - if ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset; - if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); - - break; - - case 'OrthographicCamera': - - object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); - - if ( data.zoom !== undefined ) object.zoom = data.zoom; - if ( data.view !== undefined ) object.view = Object.assign( {}, data.view ); - - break; - - case 'AmbientLight': - - object = new AmbientLight( data.color, data.intensity ); - - break; - - case 'DirectionalLight': - - object = new DirectionalLight( data.color, data.intensity ); - - break; - - case 'PointLight': - - object = new PointLight( data.color, data.intensity, data.distance, data.decay ); - - break; - - case 'RectAreaLight': - - object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); - - break; - - case 'SpotLight': - - object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); - - break; - - case 'HemisphereLight': - - object = new HemisphereLight( data.color, data.groundColor, data.intensity ); - - break; - - case 'SkinnedMesh': - - console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); - - case 'Mesh': - - var geometry = getGeometry( data.geometry ); - var material = getMaterial( data.material ); - - if ( geometry.bones && geometry.bones.length > 0 ) { - - object = new SkinnedMesh( geometry, material ); - - } else { - - object = new Mesh( geometry, material ); - - } - - if ( data.drawMode !== undefined ) object.setDrawMode( data.drawMode ); - - break; - - case 'LOD': - - object = new LOD(); - - break; - - case 'Line': - - object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); - - break; - - case 'LineLoop': - - object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); - - break; - - case 'LineSegments': - - object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); - - break; - - case 'PointCloud': - case 'Points': - - object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); - - break; - - case 'Sprite': - - object = new Sprite( getMaterial( data.material ) ); - - break; - - case 'Group': - - object = new Group(); - - break; - - default: - - object = new Object3D(); - - } - - object.uuid = data.uuid; - - if ( data.name !== undefined ) object.name = data.name; - - if ( data.matrix !== undefined ) { - - object.matrix.fromArray( data.matrix ); - - if ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate; - if ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale ); - - } else { - - if ( data.position !== undefined ) object.position.fromArray( data.position ); - if ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation ); - if ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion ); - if ( data.scale !== undefined ) object.scale.fromArray( data.scale ); - - } - - if ( data.castShadow !== undefined ) object.castShadow = data.castShadow; - if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow; - - if ( data.shadow ) { - - if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias; - if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius; - if ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize ); - if ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera ); - - } - - if ( data.visible !== undefined ) object.visible = data.visible; - if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled; - if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder; - if ( data.userData !== undefined ) object.userData = data.userData; - if ( data.layers !== undefined ) object.layers.mask = data.layers; - - if ( data.children !== undefined ) { - - var children = data.children; - - for ( var i = 0; i < children.length; i ++ ) { - - object.add( this.parseObject( children[ i ], geometries, materials ) ); - - } - - } - - if ( data.type === 'LOD' ) { - - var levels = data.levels; - - for ( var l = 0; l < levels.length; l ++ ) { - - var level = levels[ l ]; - var child = object.getObjectByProperty( 'uuid', level.object ); - - if ( child !== undefined ) { - - object.addLevel( child, level.distance ); - - } - - } - - } - - return object; - - } - - } ); - - var TEXTURE_MAPPING = { - UVMapping: UVMapping, - CubeReflectionMapping: CubeReflectionMapping, - CubeRefractionMapping: CubeRefractionMapping, - EquirectangularReflectionMapping: EquirectangularReflectionMapping, - EquirectangularRefractionMapping: EquirectangularRefractionMapping, - SphericalReflectionMapping: SphericalReflectionMapping, - CubeUVReflectionMapping: CubeUVReflectionMapping, - CubeUVRefractionMapping: CubeUVRefractionMapping - }; - - var TEXTURE_WRAPPING = { - RepeatWrapping: RepeatWrapping, - ClampToEdgeWrapping: ClampToEdgeWrapping, - MirroredRepeatWrapping: MirroredRepeatWrapping - }; - - var TEXTURE_FILTER = { - NearestFilter: NearestFilter, - NearestMipMapNearestFilter: NearestMipMapNearestFilter, - NearestMipMapLinearFilter: NearestMipMapLinearFilter, - LinearFilter: LinearFilter, - LinearMipMapNearestFilter: LinearMipMapNearestFilter, - LinearMipMapLinearFilter: LinearMipMapLinearFilter - }; - - /** - * @author thespite / http://clicktorelease.com/ - */ - - - function ImageBitmapLoader( manager ) { - - if ( typeof createImageBitmap === 'undefined' ) { - - console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); - - } - - if ( typeof fetch === 'undefined' ) { - - console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); - - } - - this.manager = manager !== undefined ? manager : DefaultLoadingManager; - this.options = undefined; - - } - - ImageBitmapLoader.prototype = { - - constructor: ImageBitmapLoader, - - setOptions: function setOptions( options ) { - - this.options = options; - - return this; - - }, - - load: function ( url, onLoad, onProgress, onError ) { - - if ( url === undefined ) url = ''; - - if ( this.path !== undefined ) url = this.path + url; - - url = this.manager.resolveURL( url ); - - var scope = this; - - var cached = Cache.get( url ); - - if ( cached !== undefined ) { - - scope.manager.itemStart( url ); - - setTimeout( function () { - - if ( onLoad ) onLoad( cached ); - - scope.manager.itemEnd( url ); - - }, 0 ); - - return cached; - - } - - fetch( url ).then( function ( res ) { - - return res.blob(); - - } ).then( function ( blob ) { - - return createImageBitmap( blob, scope.options ); - - } ).then( function ( imageBitmap ) { - - Cache.add( url, imageBitmap ); - - if ( onLoad ) onLoad( imageBitmap ); - - scope.manager.itemEnd( url ); - - } ).catch( function ( e ) { - - if ( onError ) onError( e ); - - scope.manager.itemError( url ); - scope.manager.itemEnd( url ); - - } ); - - }, - - setCrossOrigin: function ( /* value */ ) { - - return this; - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - }; - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * minimal class for proxing functions to Path. Replaces old "extractSubpaths()" - **/ - - function ShapePath() { - - this.type = 'ShapePath'; - - this.color = new Color(); - - this.subPaths = []; - this.currentPath = null; - - } - - Object.assign( ShapePath.prototype, { - - moveTo: function ( x, y ) { - - this.currentPath = new Path(); - this.subPaths.push( this.currentPath ); - this.currentPath.moveTo( x, y ); - - }, - - lineTo: function ( x, y ) { - - this.currentPath.lineTo( x, y ); - - }, - - quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { - - this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); - - }, - - bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { - - this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); - - }, - - splineThru: function ( pts ) { - - this.currentPath.splineThru( pts ); - - }, - - toShapes: function ( isCCW, noHoles ) { - - function toShapesNoHoles( inSubpaths ) { - - var shapes = []; - - for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { - - var tmpPath = inSubpaths[ i ]; - - var tmpShape = new Shape(); - tmpShape.curves = tmpPath.curves; - - shapes.push( tmpShape ); - - } - - return shapes; - - } - - function isPointInsidePolygon( inPt, inPolygon ) { - - var polyLen = inPolygon.length; - - // inPt on polygon contour => immediate success or - // toggling of inside/outside at every single! intersection point of an edge - // with the horizontal line through inPt, left of inPt - // not counting lowerY endpoints of edges and whole edges on that line - var inside = false; - for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { - - var edgeLowPt = inPolygon[ p ]; - var edgeHighPt = inPolygon[ q ]; - - var edgeDx = edgeHighPt.x - edgeLowPt.x; - var edgeDy = edgeHighPt.y - edgeLowPt.y; - - if ( Math.abs( edgeDy ) > Number.EPSILON ) { - - // not parallel - if ( edgeDy < 0 ) { - - edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; - edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; - - } - if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) continue; - - if ( inPt.y === edgeLowPt.y ) { - - if ( inPt.x === edgeLowPt.x ) return true; // inPt is on contour ? - // continue; // no intersection or edgeLowPt => doesn't count !!! - - } else { - - var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); - if ( perpEdge === 0 ) return true; // inPt is on contour ? - if ( perpEdge < 0 ) continue; - inside = ! inside; // true intersection left of inPt - - } - - } else { - - // parallel or collinear - if ( inPt.y !== edgeLowPt.y ) continue; // parallel - // edge lies on the same horizontal line as inPt - if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || - ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) return true; // inPt: Point on contour ! - // continue; - - } - - } - - return inside; - - } - - var isClockWise = ShapeUtils.isClockWise; - - var subPaths = this.subPaths; - if ( subPaths.length === 0 ) return []; - - if ( noHoles === true ) return toShapesNoHoles( subPaths ); - - - var solid, tmpPath, tmpShape, shapes = []; - - if ( subPaths.length === 1 ) { - - tmpPath = subPaths[ 0 ]; - tmpShape = new Shape(); - tmpShape.curves = tmpPath.curves; - shapes.push( tmpShape ); - return shapes; - - } - - var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); - holesFirst = isCCW ? ! holesFirst : holesFirst; - - // console.log("Holes first", holesFirst); - - var betterShapeHoles = []; - var newShapes = []; - var newShapeHoles = []; - var mainIdx = 0; - var tmpPoints; - - newShapes[ mainIdx ] = undefined; - newShapeHoles[ mainIdx ] = []; - - for ( var i = 0, l = subPaths.length; i < l; i ++ ) { - - tmpPath = subPaths[ i ]; - tmpPoints = tmpPath.getPoints(); - solid = isClockWise( tmpPoints ); - solid = isCCW ? ! solid : solid; - - if ( solid ) { - - if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) mainIdx ++; - - newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; - newShapes[ mainIdx ].s.curves = tmpPath.curves; - - if ( holesFirst ) mainIdx ++; - newShapeHoles[ mainIdx ] = []; - - //console.log('cw', i); - - } else { - - newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); - - //console.log('ccw', i); - - } - - } - - // only Holes? -> probably all Shapes with wrong orientation - if ( ! newShapes[ 0 ] ) return toShapesNoHoles( subPaths ); - - - if ( newShapes.length > 1 ) { - - var ambiguous = false; - var toChange = []; - - for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { - - betterShapeHoles[ sIdx ] = []; - - } - - for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { - - var sho = newShapeHoles[ sIdx ]; - - for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { - - var ho = sho[ hIdx ]; - var hole_unassigned = true; - - for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { - - if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { - - if ( sIdx !== s2Idx ) toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); - if ( hole_unassigned ) { - - hole_unassigned = false; - betterShapeHoles[ s2Idx ].push( ho ); - - } else { - - ambiguous = true; - - } - - } - - } - if ( hole_unassigned ) { - - betterShapeHoles[ sIdx ].push( ho ); - - } - - } - - } - // console.log("ambiguous: ", ambiguous); - if ( toChange.length > 0 ) { - - // console.log("to change: ", toChange); - if ( ! ambiguous ) newShapeHoles = betterShapeHoles; - - } - - } - - var tmpHoles; - - for ( var i = 0, il = newShapes.length; i < il; i ++ ) { - - tmpShape = newShapes[ i ].s; - shapes.push( tmpShape ); - tmpHoles = newShapeHoles[ i ]; - - for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { - - tmpShape.holes.push( tmpHoles[ j ].h ); - - } - - } - - //console.log("shape", shapes); - - return shapes; - - } - - } ); - - /** - * @author zz85 / http://www.lab4games.net/zz85/blog - * @author mrdoob / http://mrdoob.com/ - */ - - - function Font( data ) { - - this.type = 'Font'; - - this.data = data; - - } - - Object.assign( Font.prototype, { - - isFont: true, - - generateShapes: function ( text, size ) { - - if ( size === undefined ) size = 100; - - var shapes = []; - var paths = createPaths( text, size, this.data ); - - for ( var p = 0, pl = paths.length; p < pl; p ++ ) { - - Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); - - } - - return shapes; - - } - - } ); - - function createPaths( text, size, data ) { - - var chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988 - var scale = size / data.resolution; - var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; - - var paths = []; - - var offsetX = 0, offsetY = 0; - - for ( var i = 0; i < chars.length; i ++ ) { - - var char = chars[ i ]; - - if ( char === '\n' ) { - - offsetX = 0; - offsetY -= line_height; - - } else { - - var ret = createPath( char, scale, offsetX, offsetY, data ); - offsetX += ret.offsetX; - paths.push( ret.path ); - - } - - } - - return paths; - - } - - function createPath( char, scale, offsetX, offsetY, data ) { - - var glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; - - if ( ! glyph ) return; - - var path = new ShapePath(); - - var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; - - if ( glyph.o ) { - - var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); - - for ( var i = 0, l = outline.length; i < l; ) { - - var action = outline[ i ++ ]; - - switch ( action ) { - - case 'm': // moveTo - - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; - - path.moveTo( x, y ); - - break; - - case 'l': // lineTo - - x = outline[ i ++ ] * scale + offsetX; - y = outline[ i ++ ] * scale + offsetY; - - path.lineTo( x, y ); - - break; - - case 'q': // quadraticCurveTo - - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - - path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); - - break; - - case 'b': // bezierCurveTo - - cpx = outline[ i ++ ] * scale + offsetX; - cpy = outline[ i ++ ] * scale + offsetY; - cpx1 = outline[ i ++ ] * scale + offsetX; - cpy1 = outline[ i ++ ] * scale + offsetY; - cpx2 = outline[ i ++ ] * scale + offsetX; - cpy2 = outline[ i ++ ] * scale + offsetY; - - path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); - - break; - - } - - } - - } - - return { offsetX: glyph.ha * scale, path: path }; - - } - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function FontLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( FontLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var scope = this; - - var loader = new FileLoader( this.manager ); - loader.setPath( this.path ); - loader.load( url, function ( text ) { - - var json; - - try { - - json = JSON.parse( text ); - - } catch ( e ) { - - console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); - json = JSON.parse( text.substring( 65, text.length - 2 ) ); - - } - - var font = scope.parse( json ); - - if ( onLoad ) onLoad( font ); - - }, onProgress, onError ); - - }, - - parse: function ( json ) { - - return new Font( json ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function Loader() {} - - Loader.Handlers = { - - handlers: [], - - add: function ( regex, loader ) { - - this.handlers.push( regex, loader ); - - }, - - get: function ( file ) { - - var handlers = this.handlers; - - for ( var i = 0, l = handlers.length; i < l; i += 2 ) { - - var regex = handlers[ i ]; - var loader = handlers[ i + 1 ]; - - if ( regex.test( file ) ) { - - return loader; - - } - - } - - return null; - - } - - }; - - Object.assign( Loader.prototype, { - - crossOrigin: 'anonymous', - - onLoadStart: function () {}, - - onLoadProgress: function () {}, - - onLoadComplete: function () {}, - - initMaterials: function ( materials, texturePath, crossOrigin ) { - - var array = []; - - for ( var i = 0; i < materials.length; ++ i ) { - - array[ i ] = this.createMaterial( materials[ i ], texturePath, crossOrigin ); - - } - - return array; - - }, - - createMaterial: ( function () { - - var BlendingMode = { - NoBlending: NoBlending, - NormalBlending: NormalBlending, - AdditiveBlending: AdditiveBlending, - SubtractiveBlending: SubtractiveBlending, - MultiplyBlending: MultiplyBlending, - CustomBlending: CustomBlending - }; - - var color = new Color(); - var textureLoader = new TextureLoader(); - var materialLoader = new MaterialLoader(); - - return function createMaterial( m, texturePath, crossOrigin ) { - - // convert from old material format - - var textures = {}; - - function loadTexture( path, repeat, offset, wrap, anisotropy ) { - - var fullPath = texturePath + path; - var loader = Loader.Handlers.get( fullPath ); - - var texture; - - if ( loader !== null ) { - - texture = loader.load( fullPath ); - - } else { - - textureLoader.setCrossOrigin( crossOrigin ); - texture = textureLoader.load( fullPath ); - - } - - if ( repeat !== undefined ) { - - texture.repeat.fromArray( repeat ); - - if ( repeat[ 0 ] !== 1 ) texture.wrapS = RepeatWrapping; - if ( repeat[ 1 ] !== 1 ) texture.wrapT = RepeatWrapping; - - } - - if ( offset !== undefined ) { - - texture.offset.fromArray( offset ); - - } - - if ( wrap !== undefined ) { - - if ( wrap[ 0 ] === 'repeat' ) texture.wrapS = RepeatWrapping; - if ( wrap[ 0 ] === 'mirror' ) texture.wrapS = MirroredRepeatWrapping; - - if ( wrap[ 1 ] === 'repeat' ) texture.wrapT = RepeatWrapping; - if ( wrap[ 1 ] === 'mirror' ) texture.wrapT = MirroredRepeatWrapping; - - } - - if ( anisotropy !== undefined ) { - - texture.anisotropy = anisotropy; - - } - - var uuid = _Math.generateUUID(); - - textures[ uuid ] = texture; - - return uuid; - - } - - // - - var json = { - uuid: _Math.generateUUID(), - type: 'MeshLambertMaterial' - }; - - for ( var name in m ) { - - var value = m[ name ]; - - switch ( name ) { - - case 'DbgColor': - case 'DbgIndex': - case 'opticalDensity': - case 'illumination': - break; - case 'DbgName': - json.name = value; - break; - case 'blending': - json.blending = BlendingMode[ value ]; - break; - case 'colorAmbient': - case 'mapAmbient': - console.warn( 'THREE.Loader.createMaterial:', name, 'is no longer supported.' ); - break; - case 'colorDiffuse': - json.color = color.fromArray( value ).getHex(); - break; - case 'colorSpecular': - json.specular = color.fromArray( value ).getHex(); - break; - case 'colorEmissive': - json.emissive = color.fromArray( value ).getHex(); - break; - case 'specularCoef': - json.shininess = value; - break; - case 'shading': - if ( value.toLowerCase() === 'basic' ) json.type = 'MeshBasicMaterial'; - if ( value.toLowerCase() === 'phong' ) json.type = 'MeshPhongMaterial'; - if ( value.toLowerCase() === 'standard' ) json.type = 'MeshStandardMaterial'; - break; - case 'mapDiffuse': - json.map = loadTexture( value, m.mapDiffuseRepeat, m.mapDiffuseOffset, m.mapDiffuseWrap, m.mapDiffuseAnisotropy ); - break; - case 'mapDiffuseRepeat': - case 'mapDiffuseOffset': - case 'mapDiffuseWrap': - case 'mapDiffuseAnisotropy': - break; - case 'mapEmissive': - json.emissiveMap = loadTexture( value, m.mapEmissiveRepeat, m.mapEmissiveOffset, m.mapEmissiveWrap, m.mapEmissiveAnisotropy ); - break; - case 'mapEmissiveRepeat': - case 'mapEmissiveOffset': - case 'mapEmissiveWrap': - case 'mapEmissiveAnisotropy': - break; - case 'mapLight': - json.lightMap = loadTexture( value, m.mapLightRepeat, m.mapLightOffset, m.mapLightWrap, m.mapLightAnisotropy ); - break; - case 'mapLightRepeat': - case 'mapLightOffset': - case 'mapLightWrap': - case 'mapLightAnisotropy': - break; - case 'mapAO': - json.aoMap = loadTexture( value, m.mapAORepeat, m.mapAOOffset, m.mapAOWrap, m.mapAOAnisotropy ); - break; - case 'mapAORepeat': - case 'mapAOOffset': - case 'mapAOWrap': - case 'mapAOAnisotropy': - break; - case 'mapBump': - json.bumpMap = loadTexture( value, m.mapBumpRepeat, m.mapBumpOffset, m.mapBumpWrap, m.mapBumpAnisotropy ); - break; - case 'mapBumpScale': - json.bumpScale = value; - break; - case 'mapBumpRepeat': - case 'mapBumpOffset': - case 'mapBumpWrap': - case 'mapBumpAnisotropy': - break; - case 'mapNormal': - json.normalMap = loadTexture( value, m.mapNormalRepeat, m.mapNormalOffset, m.mapNormalWrap, m.mapNormalAnisotropy ); - break; - case 'mapNormalFactor': - json.normalScale = value; - break; - case 'mapNormalRepeat': - case 'mapNormalOffset': - case 'mapNormalWrap': - case 'mapNormalAnisotropy': - break; - case 'mapSpecular': - json.specularMap = loadTexture( value, m.mapSpecularRepeat, m.mapSpecularOffset, m.mapSpecularWrap, m.mapSpecularAnisotropy ); - break; - case 'mapSpecularRepeat': - case 'mapSpecularOffset': - case 'mapSpecularWrap': - case 'mapSpecularAnisotropy': - break; - case 'mapMetalness': - json.metalnessMap = loadTexture( value, m.mapMetalnessRepeat, m.mapMetalnessOffset, m.mapMetalnessWrap, m.mapMetalnessAnisotropy ); - break; - case 'mapMetalnessRepeat': - case 'mapMetalnessOffset': - case 'mapMetalnessWrap': - case 'mapMetalnessAnisotropy': - break; - case 'mapRoughness': - json.roughnessMap = loadTexture( value, m.mapRoughnessRepeat, m.mapRoughnessOffset, m.mapRoughnessWrap, m.mapRoughnessAnisotropy ); - break; - case 'mapRoughnessRepeat': - case 'mapRoughnessOffset': - case 'mapRoughnessWrap': - case 'mapRoughnessAnisotropy': - break; - case 'mapAlpha': - json.alphaMap = loadTexture( value, m.mapAlphaRepeat, m.mapAlphaOffset, m.mapAlphaWrap, m.mapAlphaAnisotropy ); - break; - case 'mapAlphaRepeat': - case 'mapAlphaOffset': - case 'mapAlphaWrap': - case 'mapAlphaAnisotropy': - break; - case 'flipSided': - json.side = BackSide; - break; - case 'doubleSided': - json.side = DoubleSide; - break; - case 'transparency': - console.warn( 'THREE.Loader.createMaterial: transparency has been renamed to opacity' ); - json.opacity = value; - break; - case 'depthTest': - case 'depthWrite': - case 'colorWrite': - case 'opacity': - case 'reflectivity': - case 'transparent': - case 'visible': - case 'wireframe': - json[ name ] = value; - break; - case 'vertexColors': - if ( value === true ) json.vertexColors = VertexColors; - if ( value === 'face' ) json.vertexColors = FaceColors; - break; - default: - console.error( 'THREE.Loader.createMaterial: Unsupported', name, value ); - break; - - } - - } - - if ( json.type === 'MeshBasicMaterial' ) delete json.emissive; - if ( json.type !== 'MeshPhongMaterial' ) delete json.specular; - - if ( json.opacity < 1 ) json.transparent = true; - - materialLoader.setTextures( textures ); - - return materialLoader.parse( json ); - - }; - - } )() - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - var context; - - var AudioContext = { - - getContext: function () { - - if ( context === undefined ) { - - context = new ( window.AudioContext || window.webkitAudioContext )(); - - } - - return context; - - }, - - setContext: function ( value ) { - - context = value; - - } - - }; - - /** - * @author Reece Aaron Lecrivain / http://reecenotes.com/ - */ - - function AudioLoader( manager ) { - - this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; - - } - - Object.assign( AudioLoader.prototype, { - - load: function ( url, onLoad, onProgress, onError ) { - - var loader = new FileLoader( this.manager ); - loader.setResponseType( 'arraybuffer' ); - loader.setPath( this.path ); - loader.load( url, function ( buffer ) { - - // Create a copy of the buffer. The `decodeAudioData` method - // detaches the buffer when complete, preventing reuse. - var bufferCopy = buffer.slice( 0 ); - - var context = AudioContext.getContext(); - context.decodeAudioData( bufferCopy, function ( audioBuffer ) { - - onLoad( audioBuffer ); - - } ); - - }, onProgress, onError ); - - }, - - setPath: function ( value ) { - - this.path = value; - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function StereoCamera() { - - this.type = 'StereoCamera'; - - this.aspect = 1; - - this.eyeSep = 0.064; - - this.cameraL = new PerspectiveCamera(); - this.cameraL.layers.enable( 1 ); - this.cameraL.matrixAutoUpdate = false; - - this.cameraR = new PerspectiveCamera(); - this.cameraR.layers.enable( 2 ); - this.cameraR.matrixAutoUpdate = false; - - } - - Object.assign( StereoCamera.prototype, { - - update: ( function () { - - var instance, focus, fov, aspect, near, far, zoom, eyeSep; - - var eyeRight = new Matrix4(); - var eyeLeft = new Matrix4(); - - return function update( camera ) { - - var needsUpdate = instance !== this || focus !== camera.focus || fov !== camera.fov || - aspect !== camera.aspect * this.aspect || near !== camera.near || - far !== camera.far || zoom !== camera.zoom || eyeSep !== this.eyeSep; - - if ( needsUpdate ) { - - instance = this; - focus = camera.focus; - fov = camera.fov; - aspect = camera.aspect * this.aspect; - near = camera.near; - far = camera.far; - zoom = camera.zoom; - - // Off-axis stereoscopic effect based on - // http://paulbourke.net/stereographics/stereorender/ - - var projectionMatrix = camera.projectionMatrix.clone(); - eyeSep = this.eyeSep / 2; - var eyeSepOnProjection = eyeSep * near / focus; - var ymax = ( near * Math.tan( _Math.DEG2RAD * fov * 0.5 ) ) / zoom; - var xmin, xmax; - - // translate xOffset - - eyeLeft.elements[ 12 ] = - eyeSep; - eyeRight.elements[ 12 ] = eyeSep; - - // for left eye - - xmin = - ymax * aspect + eyeSepOnProjection; - xmax = ymax * aspect + eyeSepOnProjection; - - projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); - projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); - - this.cameraL.projectionMatrix.copy( projectionMatrix ); - - // for right eye - - xmin = - ymax * aspect - eyeSepOnProjection; - xmax = ymax * aspect - eyeSepOnProjection; - - projectionMatrix.elements[ 0 ] = 2 * near / ( xmax - xmin ); - projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); - - this.cameraR.projectionMatrix.copy( projectionMatrix ); - - } - - this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( eyeLeft ); - this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( eyeRight ); - - }; - - } )() - - } ); - - /** - * Camera for rendering cube maps - * - renders scene into axis-aligned cube - * - * @author alteredq / http://alteredqualia.com/ - */ - - function CubeCamera( near, far, cubeResolution, options ) { - - Object3D.call( this ); - - this.type = 'CubeCamera'; - - var fov = 90, aspect = 1; - - var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); - cameraPX.up.set( 0, - 1, 0 ); - cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); - this.add( cameraPX ); - - var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); - cameraNX.up.set( 0, - 1, 0 ); - cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); - this.add( cameraNX ); - - var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); - cameraPY.up.set( 0, 0, 1 ); - cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); - this.add( cameraPY ); - - var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); - cameraNY.up.set( 0, 0, - 1 ); - cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); - this.add( cameraNY ); - - var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); - cameraPZ.up.set( 0, - 1, 0 ); - cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); - this.add( cameraPZ ); - - var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); - cameraNZ.up.set( 0, - 1, 0 ); - cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); - this.add( cameraNZ ); - - options = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; - - this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); - this.renderTarget.texture.name = "CubeCamera"; - - this.update = function ( renderer, scene ) { - - if ( this.parent === null ) this.updateMatrixWorld(); - - var currentRenderTarget = renderer.getRenderTarget(); - - var renderTarget = this.renderTarget; - var generateMipmaps = renderTarget.texture.generateMipmaps; - - renderTarget.texture.generateMipmaps = false; - - renderTarget.activeCubeFace = 0; - renderer.render( scene, cameraPX, renderTarget ); - - renderTarget.activeCubeFace = 1; - renderer.render( scene, cameraNX, renderTarget ); - - renderTarget.activeCubeFace = 2; - renderer.render( scene, cameraPY, renderTarget ); - - renderTarget.activeCubeFace = 3; - renderer.render( scene, cameraNY, renderTarget ); - - renderTarget.activeCubeFace = 4; - renderer.render( scene, cameraPZ, renderTarget ); - - renderTarget.texture.generateMipmaps = generateMipmaps; - - renderTarget.activeCubeFace = 5; - renderer.render( scene, cameraNZ, renderTarget ); - - renderer.setRenderTarget( currentRenderTarget ); - - }; - - this.clear = function ( renderer, color, depth, stencil ) { - - var currentRenderTarget = renderer.getRenderTarget(); - - var renderTarget = this.renderTarget; - - for ( var i = 0; i < 6; i ++ ) { - - renderTarget.activeCubeFace = i; - renderer.setRenderTarget( renderTarget ); - - renderer.clear( color, depth, stencil ); - - } - - renderer.setRenderTarget( currentRenderTarget ); - - }; - - } - - CubeCamera.prototype = Object.create( Object3D.prototype ); - CubeCamera.prototype.constructor = CubeCamera; - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function Clock( autoStart ) { - - this.autoStart = ( autoStart !== undefined ) ? autoStart : true; - - this.startTime = 0; - this.oldTime = 0; - this.elapsedTime = 0; - - this.running = false; - - } - - Object.assign( Clock.prototype, { - - start: function () { - - this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 - - this.oldTime = this.startTime; - this.elapsedTime = 0; - this.running = true; - - }, - - stop: function () { - - this.getElapsedTime(); - this.running = false; - this.autoStart = false; - - }, - - getElapsedTime: function () { - - this.getDelta(); - return this.elapsedTime; - - }, - - getDelta: function () { - - var diff = 0; - - if ( this.autoStart && ! this.running ) { - - this.start(); - return 0; - - } - - if ( this.running ) { - - var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); - - diff = ( newTime - this.oldTime ) / 1000; - this.oldTime = newTime; - - this.elapsedTime += diff; - - } - - return diff; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function AudioListener() { - - Object3D.call( this ); - - this.type = 'AudioListener'; - - this.context = AudioContext.getContext(); - - this.gain = this.context.createGain(); - this.gain.connect( this.context.destination ); - - this.filter = null; - - this.timeDelta = 0; - - } - - AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: AudioListener, - - getInput: function () { - - return this.gain; - - }, - - removeFilter: function ( ) { - - if ( this.filter !== null ) { - - this.gain.disconnect( this.filter ); - this.filter.disconnect( this.context.destination ); - this.gain.connect( this.context.destination ); - this.filter = null; - - } - - return this; - - }, - - getFilter: function () { - - return this.filter; - - }, - - setFilter: function ( value ) { - - if ( this.filter !== null ) { - - this.gain.disconnect( this.filter ); - this.filter.disconnect( this.context.destination ); - - } else { - - this.gain.disconnect( this.context.destination ); - - } - - this.filter = value; - this.gain.connect( this.filter ); - this.filter.connect( this.context.destination ); - - return this; - - }, - - getMasterVolume: function () { - - return this.gain.gain.value; - - }, - - setMasterVolume: function ( value ) { - - this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); - - return this; - - }, - - updateMatrixWorld: ( function () { - - var position = new Vector3(); - var quaternion = new Quaternion(); - var scale = new Vector3(); - - var orientation = new Vector3(); - var clock = new Clock(); - - return function updateMatrixWorld( force ) { - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - var listener = this.context.listener; - var up = this.up; - - this.timeDelta = clock.getDelta(); - - this.matrixWorld.decompose( position, quaternion, scale ); - - orientation.set( 0, 0, - 1 ).applyQuaternion( quaternion ); - - if ( listener.positionX ) { - - // code path for Chrome (see #14393) - - var endTime = this.context.currentTime + this.timeDelta; - - listener.positionX.linearRampToValueAtTime( position.x, endTime ); - listener.positionY.linearRampToValueAtTime( position.y, endTime ); - listener.positionZ.linearRampToValueAtTime( position.z, endTime ); - listener.forwardX.linearRampToValueAtTime( orientation.x, endTime ); - listener.forwardY.linearRampToValueAtTime( orientation.y, endTime ); - listener.forwardZ.linearRampToValueAtTime( orientation.z, endTime ); - listener.upX.linearRampToValueAtTime( up.x, endTime ); - listener.upY.linearRampToValueAtTime( up.y, endTime ); - listener.upZ.linearRampToValueAtTime( up.z, endTime ); - - } else { - - listener.setPosition( position.x, position.y, position.z ); - listener.setOrientation( orientation.x, orientation.y, orientation.z, up.x, up.y, up.z ); - - } - - }; - - } )() - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Reece Aaron Lecrivain / http://reecenotes.com/ - */ - - function Audio( listener ) { - - Object3D.call( this ); - - this.type = 'Audio'; - - this.listener = listener; - this.context = listener.context; - - this.gain = this.context.createGain(); - this.gain.connect( listener.getInput() ); - - this.autoplay = false; - - this.buffer = null; - this.detune = 0; - this.loop = false; - this.startTime = 0; - this.offset = 0; - this.playbackRate = 1; - this.isPlaying = false; - this.hasPlaybackControl = true; - this.sourceType = 'empty'; - - this.filters = []; - - } - - Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { - - constructor: Audio, - - getOutput: function () { - - return this.gain; - - }, - - setNodeSource: function ( audioNode ) { - - this.hasPlaybackControl = false; - this.sourceType = 'audioNode'; - this.source = audioNode; - this.connect(); - - return this; - - }, - - setMediaElementSource: function ( mediaElement ) { - - this.hasPlaybackControl = false; - this.sourceType = 'mediaNode'; - this.source = this.context.createMediaElementSource( mediaElement ); - this.connect(); - - return this; - - }, - - setBuffer: function ( audioBuffer ) { - - this.buffer = audioBuffer; - this.sourceType = 'buffer'; - - if ( this.autoplay ) this.play(); - - return this; - - }, - - play: function () { - - if ( this.isPlaying === true ) { - - console.warn( 'THREE.Audio: Audio is already playing.' ); - return; - - } - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - var source = this.context.createBufferSource(); - - source.buffer = this.buffer; - source.loop = this.loop; - source.onended = this.onEnded.bind( this ); - this.startTime = this.context.currentTime; - source.start( this.startTime, this.offset ); - - this.isPlaying = true; - - this.source = source; - - this.setDetune( this.detune ); - this.setPlaybackRate( this.playbackRate ); - - return this.connect(); - - }, - - pause: function () { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - if ( this.isPlaying === true ) { - - this.source.stop(); - this.source.onended = null; - this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; - this.isPlaying = false; - - } - - return this; - - }, - - stop: function () { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - this.source.stop(); - this.source.onended = null; - this.offset = 0; - this.isPlaying = false; - - return this; - - }, - - connect: function () { - - if ( this.filters.length > 0 ) { - - this.source.connect( this.filters[ 0 ] ); - - for ( var i = 1, l = this.filters.length; i < l; i ++ ) { - - this.filters[ i - 1 ].connect( this.filters[ i ] ); - - } - - this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); - - } else { - - this.source.connect( this.getOutput() ); - - } - - return this; - - }, - - disconnect: function () { - - if ( this.filters.length > 0 ) { - - this.source.disconnect( this.filters[ 0 ] ); - - for ( var i = 1, l = this.filters.length; i < l; i ++ ) { - - this.filters[ i - 1 ].disconnect( this.filters[ i ] ); - - } - - this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); - - } else { - - this.source.disconnect( this.getOutput() ); - - } - - return this; - - }, - - getFilters: function () { - - return this.filters; - - }, - - setFilters: function ( value ) { - - if ( ! value ) value = []; - - if ( this.isPlaying === true ) { - - this.disconnect(); - this.filters = value; - this.connect(); - - } else { - - this.filters = value; - - } - - return this; - - }, - - setDetune: function ( value ) { - - this.detune = value; - - if ( this.source.detune === undefined ) return; // only set detune when available - - if ( this.isPlaying === true ) { - - this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 ); - - } - - return this; - - }, - - getDetune: function () { - - return this.detune; - - }, - - getFilter: function () { - - return this.getFilters()[ 0 ]; - - }, - - setFilter: function ( filter ) { - - return this.setFilters( filter ? [ filter ] : [] ); - - }, - - setPlaybackRate: function ( value ) { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - this.playbackRate = value; - - if ( this.isPlaying === true ) { - - this.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 ); - - } - - return this; - - }, - - getPlaybackRate: function () { - - return this.playbackRate; - - }, - - onEnded: function () { - - this.isPlaying = false; - - }, - - getLoop: function () { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return false; - - } - - return this.loop; - - }, - - setLoop: function ( value ) { - - if ( this.hasPlaybackControl === false ) { - - console.warn( 'THREE.Audio: this Audio has no playback control.' ); - return; - - } - - this.loop = value; - - if ( this.isPlaying === true ) { - - this.source.loop = this.loop; - - } - - return this; - - }, - - getVolume: function () { - - return this.gain.gain.value; - - }, - - setVolume: function ( value ) { - - this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function PositionalAudio( listener ) { - - Audio.call( this, listener ); - - this.panner = this.context.createPanner(); - this.panner.connect( this.gain ); - - } - - PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { - - constructor: PositionalAudio, - - getOutput: function () { - - return this.panner; - - }, - - getRefDistance: function () { - - return this.panner.refDistance; - - }, - - setRefDistance: function ( value ) { - - this.panner.refDistance = value; - - return this; - - }, - - getRolloffFactor: function () { - - return this.panner.rolloffFactor; - - }, - - setRolloffFactor: function ( value ) { - - this.panner.rolloffFactor = value; - - return this; - - }, - - getDistanceModel: function () { - - return this.panner.distanceModel; - - }, - - setDistanceModel: function ( value ) { - - this.panner.distanceModel = value; - - return this; - - }, - - getMaxDistance: function () { - - return this.panner.maxDistance; - - }, - - setMaxDistance: function ( value ) { - - this.panner.maxDistance = value; - - return this; - - }, - - setDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) { - - this.panner.coneInnerAngle = coneInnerAngle; - this.panner.coneOuterAngle = coneOuterAngle; - this.panner.coneOuterGain = coneOuterGain; - - return this; - - }, - - updateMatrixWorld: ( function () { - - var position = new Vector3(); - var quaternion = new Quaternion(); - var scale = new Vector3(); - - var orientation = new Vector3(); - - return function updateMatrixWorld( force ) { - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - if ( this.isPlaying === false ) return; - - this.matrixWorld.decompose( position, quaternion, scale ); - - orientation.set( 0, 0, 1 ).applyQuaternion( quaternion ); - - var panner = this.panner; - - if ( panner.positionX ) { - - // code path for Chrome and Firefox (see #14393) - - var endTime = this.context.currentTime + this.listener.timeDelta; - - panner.positionX.linearRampToValueAtTime( position.x, endTime ); - panner.positionY.linearRampToValueAtTime( position.y, endTime ); - panner.positionZ.linearRampToValueAtTime( position.z, endTime ); - panner.orientationX.linearRampToValueAtTime( orientation.x, endTime ); - panner.orientationY.linearRampToValueAtTime( orientation.y, endTime ); - panner.orientationZ.linearRampToValueAtTime( orientation.z, endTime ); - - } else { - - panner.setPosition( position.x, position.y, position.z ); - panner.setOrientation( orientation.x, orientation.y, orientation.z ); - - } - - }; - - } )() - - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function AudioAnalyser( audio, fftSize ) { - - this.analyser = audio.context.createAnalyser(); - this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; - - this.data = new Uint8Array( this.analyser.frequencyBinCount ); - - audio.getOutput().connect( this.analyser ); - - } - - Object.assign( AudioAnalyser.prototype, { - - getFrequencyData: function () { - - this.analyser.getByteFrequencyData( this.data ); - - return this.data; - - }, - - getAverageFrequency: function () { - - var value = 0, data = this.getFrequencyData(); - - for ( var i = 0; i < data.length; i ++ ) { - - value += data[ i ]; - - } - - return value / data.length; - - } - - } ); - - /** - * - * Buffered scene graph property that allows weighted accumulation. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function PropertyMixer( binding, typeName, valueSize ) { - - this.binding = binding; - this.valueSize = valueSize; - - var bufferType = Float64Array, - mixFunction; - - switch ( typeName ) { - - case 'quaternion': - mixFunction = this._slerp; - break; - - case 'string': - case 'bool': - bufferType = Array; - mixFunction = this._select; - break; - - default: - mixFunction = this._lerp; - - } - - this.buffer = new bufferType( valueSize * 4 ); - // layout: [ incoming | accu0 | accu1 | orig ] - // - // interpolators can use .buffer as their .result - // the data then goes to 'incoming' - // - // 'accu0' and 'accu1' are used frame-interleaved for - // the cumulative result and are compared to detect - // changes - // - // 'orig' stores the original state of the property - - this._mixBufferRegion = mixFunction; - - this.cumulativeWeight = 0; - - this.useCount = 0; - this.referenceCount = 0; - - } - - Object.assign( PropertyMixer.prototype, { - - // accumulate data in the 'incoming' region into 'accu' - accumulate: function ( accuIndex, weight ) { - - // note: happily accumulating nothing when weight = 0, the caller knows - // the weight and shouldn't have made the call in the first place - - var buffer = this.buffer, - stride = this.valueSize, - offset = accuIndex * stride + stride, - - currentWeight = this.cumulativeWeight; - - if ( currentWeight === 0 ) { - - // accuN := incoming * weight - - for ( var i = 0; i !== stride; ++ i ) { - - buffer[ offset + i ] = buffer[ i ]; - - } - - currentWeight = weight; - - } else { - - // accuN := accuN + incoming * weight - - currentWeight += weight; - var mix = weight / currentWeight; - this._mixBufferRegion( buffer, offset, 0, mix, stride ); - - } - - this.cumulativeWeight = currentWeight; - - }, - - // apply the state of 'accu' to the binding when accus differ - apply: function ( accuIndex ) { - - var stride = this.valueSize, - buffer = this.buffer, - offset = accuIndex * stride + stride, - - weight = this.cumulativeWeight, - - binding = this.binding; - - this.cumulativeWeight = 0; - - if ( weight < 1 ) { - - // accuN := accuN + original * ( 1 - cumulativeWeight ) - - var originalValueOffset = stride * 3; - - this._mixBufferRegion( - buffer, offset, originalValueOffset, 1 - weight, stride ); - - } - - for ( var i = stride, e = stride + stride; i !== e; ++ i ) { - - if ( buffer[ i ] !== buffer[ i + stride ] ) { - - // value has changed -> update scene graph - - binding.setValue( buffer, offset ); - break; - - } - - } - - }, - - // remember the state of the bound property and copy it to both accus - saveOriginalState: function () { - - var binding = this.binding; - - var buffer = this.buffer, - stride = this.valueSize, - - originalValueOffset = stride * 3; - - binding.getValue( buffer, originalValueOffset ); - - // accu[0..1] := orig -- initially detect changes against the original - for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { - - buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; - - } - - this.cumulativeWeight = 0; - - }, - - // apply the state previously taken via 'saveOriginalState' to the binding - restoreOriginalState: function () { - - var originalValueOffset = this.valueSize * 3; - this.binding.setValue( this.buffer, originalValueOffset ); - - }, - - - // mix functions - - _select: function ( buffer, dstOffset, srcOffset, t, stride ) { - - if ( t >= 0.5 ) { - - for ( var i = 0; i !== stride; ++ i ) { - - buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; - - } - - } - - }, - - _slerp: function ( buffer, dstOffset, srcOffset, t ) { - - Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); - - }, - - _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { - - var s = 1 - t; - - for ( var i = 0; i !== stride; ++ i ) { - - var j = dstOffset + i; - - buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; - - } - - } - - } ); - - /** - * - * A reference to a real property in the scene graph. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - // Characters [].:/ are reserved for track binding syntax. - var RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; - - function Composite( targetGroup, path, optionalParsedPath ) { - - var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); - - this._targetGroup = targetGroup; - this._bindings = targetGroup.subscribe_( path, parsedPath ); - - } - - Object.assign( Composite.prototype, { - - getValue: function ( array, offset ) { - - this.bind(); // bind all binding - - var firstValidIndex = this._targetGroup.nCachedObjects_, - binding = this._bindings[ firstValidIndex ]; - - // and only call .getValue on the first - if ( binding !== undefined ) binding.getValue( array, offset ); - - }, - - setValue: function ( array, offset ) { - - var bindings = this._bindings; - - for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { - - bindings[ i ].setValue( array, offset ); - - } - - }, - - bind: function () { - - var bindings = this._bindings; - - for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { - - bindings[ i ].bind(); - - } - - }, - - unbind: function () { - - var bindings = this._bindings; - - for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { - - bindings[ i ].unbind(); - - } - - } - - } ); - - - function PropertyBinding( rootNode, path, parsedPath ) { - - this.path = path; - this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); - - this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; - - this.rootNode = rootNode; - - } - - Object.assign( PropertyBinding, { - - Composite: Composite, - - create: function ( root, path, parsedPath ) { - - if ( ! ( root && root.isAnimationObjectGroup ) ) { - - return new PropertyBinding( root, path, parsedPath ); - - } else { - - return new PropertyBinding.Composite( root, path, parsedPath ); - - } - - }, - - /** - * Replaces spaces with underscores and removes unsupported characters from - * node names, to ensure compatibility with parseTrackName(). - * - * @param {string} name Node name to be sanitized. - * @return {string} - */ - sanitizeNodeName: ( function () { - - var reservedRe = new RegExp( '[' + RESERVED_CHARS_RE + ']', 'g' ); - - return function sanitizeNodeName( name ) { - - return name.replace( /\s/g, '_' ).replace( reservedRe, '' ); - - }; - - }() ), - - parseTrackName: function () { - - // Attempts to allow node names from any language. ES5's `\w` regexp matches - // only latin characters, and the unicode \p{L} is not yet supported. So - // instead, we exclude reserved characters and match everything else. - var wordChar = '[^' + RESERVED_CHARS_RE + ']'; - var wordCharOrDot = '[^' + RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; - - // Parent directories, delimited by '/' or ':'. Currently unused, but must - // be matched to parse the rest of the track name. - var directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', wordChar ); - - // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. - var nodeRe = /(WCOD+)?/.source.replace( 'WCOD', wordCharOrDot ); - - // Object on target node, and accessor. May not contain reserved - // characters. Accessor may contain any character except closing bracket. - var objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', wordChar ); - - // Property and accessor. May not contain reserved characters. Accessor may - // contain any non-bracket characters. - var propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', wordChar ); - - var trackRe = new RegExp( '' - + '^' - + directoryRe - + nodeRe - + objectRe - + propertyRe - + '$' - ); - - var supportedObjectNames = [ 'material', 'materials', 'bones' ]; - - return function parseTrackName( trackName ) { - - var matches = trackRe.exec( trackName ); - - if ( ! matches ) { - - throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); - - } - - var results = { - // directoryName: matches[ 1 ], // (tschw) currently unused - nodeName: matches[ 2 ], - objectName: matches[ 3 ], - objectIndex: matches[ 4 ], - propertyName: matches[ 5 ], // required - propertyIndex: matches[ 6 ] - }; - - var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); - - if ( lastDot !== undefined && lastDot !== - 1 ) { - - var objectName = results.nodeName.substring( lastDot + 1 ); - - // Object names must be checked against a whitelist. Otherwise, there - // is no way to parse 'foo.bar.baz': 'baz' must be a property, but - // 'bar' could be the objectName, or part of a nodeName (which can - // include '.' characters). - if ( supportedObjectNames.indexOf( objectName ) !== - 1 ) { - - results.nodeName = results.nodeName.substring( 0, lastDot ); - results.objectName = objectName; - - } - - } - - if ( results.propertyName === null || results.propertyName.length === 0 ) { - - throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); - - } - - return results; - - }; - - }(), - - findNode: function ( root, nodeName ) { - - if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { - - return root; - - } - - // search into skeleton bones. - if ( root.skeleton ) { - - var bone = root.skeleton.getBoneByName( nodeName ); - - if ( bone !== undefined ) { - - return bone; - - } - - } - - // search into node subtree. - if ( root.children ) { - - var searchNodeSubtree = function ( children ) { - - for ( var i = 0; i < children.length; i ++ ) { - - var childNode = children[ i ]; - - if ( childNode.name === nodeName || childNode.uuid === nodeName ) { - - return childNode; - - } - - var result = searchNodeSubtree( childNode.children ); - - if ( result ) return result; - - } - - return null; - - }; - - var subTreeNode = searchNodeSubtree( root.children ); - - if ( subTreeNode ) { - - return subTreeNode; - - } - - } - - return null; - - } - - } ); - - Object.assign( PropertyBinding.prototype, { // prototype, continued - - // these are used to "bind" a nonexistent property - _getValue_unavailable: function () {}, - _setValue_unavailable: function () {}, - - BindingType: { - Direct: 0, - EntireArray: 1, - ArrayElement: 2, - HasFromToArray: 3 - }, - - Versioning: { - None: 0, - NeedsUpdate: 1, - MatrixWorldNeedsUpdate: 2 - }, - - GetterByBindingType: [ - - function getValue_direct( buffer, offset ) { - - buffer[ offset ] = this.node[ this.propertyName ]; - - }, - - function getValue_array( buffer, offset ) { - - var source = this.resolvedProperty; - - for ( var i = 0, n = source.length; i !== n; ++ i ) { - - buffer[ offset ++ ] = source[ i ]; - - } - - }, - - function getValue_arrayElement( buffer, offset ) { - - buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; - - }, - - function getValue_toArray( buffer, offset ) { - - this.resolvedProperty.toArray( buffer, offset ); - - } - - ], - - SetterByBindingTypeAndVersioning: [ - - [ - // Direct - - function setValue_direct( buffer, offset ) { - - this.targetObject[ this.propertyName ] = buffer[ offset ]; - - }, - - function setValue_direct_setNeedsUpdate( buffer, offset ) { - - this.targetObject[ this.propertyName ] = buffer[ offset ]; - this.targetObject.needsUpdate = true; - - }, - - function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { - - this.targetObject[ this.propertyName ] = buffer[ offset ]; - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ], [ - - // EntireArray - - function setValue_array( buffer, offset ) { - - var dest = this.resolvedProperty; - - for ( var i = 0, n = dest.length; i !== n; ++ i ) { - - dest[ i ] = buffer[ offset ++ ]; - - } - - }, - - function setValue_array_setNeedsUpdate( buffer, offset ) { - - var dest = this.resolvedProperty; - - for ( var i = 0, n = dest.length; i !== n; ++ i ) { - - dest[ i ] = buffer[ offset ++ ]; - - } - - this.targetObject.needsUpdate = true; - - }, - - function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { - - var dest = this.resolvedProperty; - - for ( var i = 0, n = dest.length; i !== n; ++ i ) { - - dest[ i ] = buffer[ offset ++ ]; - - } - - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ], [ - - // ArrayElement - - function setValue_arrayElement( buffer, offset ) { - - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; - - }, - - function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { - - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; - this.targetObject.needsUpdate = true; - - }, - - function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { - - this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ], [ - - // HasToFromArray - - function setValue_fromArray( buffer, offset ) { - - this.resolvedProperty.fromArray( buffer, offset ); - - }, - - function setValue_fromArray_setNeedsUpdate( buffer, offset ) { - - this.resolvedProperty.fromArray( buffer, offset ); - this.targetObject.needsUpdate = true; - - }, - - function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { - - this.resolvedProperty.fromArray( buffer, offset ); - this.targetObject.matrixWorldNeedsUpdate = true; - - } - - ] - - ], - - getValue: function getValue_unbound( targetArray, offset ) { - - this.bind(); - this.getValue( targetArray, offset ); - - // Note: This class uses a State pattern on a per-method basis: - // 'bind' sets 'this.getValue' / 'setValue' and shadows the - // prototype version of these methods with one that represents - // the bound state. When the property is not found, the methods - // become no-ops. - - }, - - setValue: function getValue_unbound( sourceArray, offset ) { - - this.bind(); - this.setValue( sourceArray, offset ); - - }, - - // create getter / setter pair for a property in the scene graph - bind: function () { - - var targetObject = this.node, - parsedPath = this.parsedPath, - - objectName = parsedPath.objectName, - propertyName = parsedPath.propertyName, - propertyIndex = parsedPath.propertyIndex; - - if ( ! targetObject ) { - - targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; - - this.node = targetObject; - - } - - // set fail state so we can just 'return' on error - this.getValue = this._getValue_unavailable; - this.setValue = this._setValue_unavailable; - - // ensure there is a value node - if ( ! targetObject ) { - - console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); - return; - - } - - if ( objectName ) { - - var objectIndex = parsedPath.objectIndex; - - // special cases were we need to reach deeper into the hierarchy to get the face materials.... - switch ( objectName ) { - - case 'materials': - - if ( ! targetObject.material ) { - - console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); - return; - - } - - if ( ! targetObject.material.materials ) { - - console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); - return; - - } - - targetObject = targetObject.material.materials; - - break; - - case 'bones': - - if ( ! targetObject.skeleton ) { - - console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); - return; - - } - - // potential future optimization: skip this if propertyIndex is already an integer - // and convert the integer string to a true integer. - - targetObject = targetObject.skeleton.bones; - - // support resolving morphTarget names into indices. - for ( var i = 0; i < targetObject.length; i ++ ) { - - if ( targetObject[ i ].name === objectIndex ) { - - objectIndex = i; - break; - - } - - } - - break; - - default: - - if ( targetObject[ objectName ] === undefined ) { - - console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); - return; - - } - - targetObject = targetObject[ objectName ]; - - } - - - if ( objectIndex !== undefined ) { - - if ( targetObject[ objectIndex ] === undefined ) { - - console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); - return; - - } - - targetObject = targetObject[ objectIndex ]; - - } - - } - - // resolve property - var nodeProperty = targetObject[ propertyName ]; - - if ( nodeProperty === undefined ) { - - var nodeName = parsedPath.nodeName; - - console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + - '.' + propertyName + ' but it wasn\'t found.', targetObject ); - return; - - } - - // determine versioning scheme - var versioning = this.Versioning.None; - - this.targetObject = targetObject; - - if ( targetObject.needsUpdate !== undefined ) { // material - - versioning = this.Versioning.NeedsUpdate; - - } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform - - versioning = this.Versioning.MatrixWorldNeedsUpdate; - - } - - // determine how the property gets bound - var bindingType = this.BindingType.Direct; - - if ( propertyIndex !== undefined ) { - - // access a sub element of the property array (only primitives are supported right now) - - if ( propertyName === "morphTargetInfluences" ) { - - // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. - - // support resolving morphTarget names into indices. - if ( ! targetObject.geometry ) { - - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); - return; - - } - - if ( targetObject.geometry.isBufferGeometry ) { - - if ( ! targetObject.geometry.morphAttributes ) { - - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); - return; - - } - - for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { - - if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { - - propertyIndex = i; - break; - - } - - } - - - } else { - - if ( ! targetObject.geometry.morphTargets ) { - - console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); - return; - - } - - for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { - - if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { - - propertyIndex = i; - break; - - } - - } - - } - - } - - bindingType = this.BindingType.ArrayElement; - - this.resolvedProperty = nodeProperty; - this.propertyIndex = propertyIndex; - - } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { - - // must use copy for Object3D.Euler/Quaternion - - bindingType = this.BindingType.HasFromToArray; - - this.resolvedProperty = nodeProperty; - - } else if ( Array.isArray( nodeProperty ) ) { - - bindingType = this.BindingType.EntireArray; - - this.resolvedProperty = nodeProperty; - - } else { - - this.propertyName = propertyName; - - } - - // select getter / setter - this.getValue = this.GetterByBindingType[ bindingType ]; - this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; - - }, - - unbind: function () { - - this.node = null; - - // back to the prototype version of getValue / setValue - // note: avoiding to mutate the shape of 'this' via 'delete' - this.getValue = this._getValue_unbound; - this.setValue = this._setValue_unbound; - - } - - } ); - - //!\ DECLARE ALIAS AFTER assign prototype ! - Object.assign( PropertyBinding.prototype, { - - // initial state of these methods that calls 'bind' - _getValue_unbound: PropertyBinding.prototype.getValue, - _setValue_unbound: PropertyBinding.prototype.setValue, - - } ); - - /** - * - * A group of objects that receives a shared animation state. - * - * Usage: - * - * - Add objects you would otherwise pass as 'root' to the - * constructor or the .clipAction method of AnimationMixer. - * - * - Instead pass this object as 'root'. - * - * - You can also add and remove objects later when the mixer - * is running. - * - * Note: - * - * Objects of this class appear as one object to the mixer, - * so cache control of the individual objects must be done - * on the group. - * - * Limitation: - * - * - The animated properties must be compatible among the - * all objects in the group. - * - * - A single property can either be controlled through a - * target group or directly, but not both. - * - * @author tschw - */ - - function AnimationObjectGroup() { - - this.uuid = _Math.generateUUID(); - - // cached objects followed by the active ones - this._objects = Array.prototype.slice.call( arguments ); - - this.nCachedObjects_ = 0; // threshold - // note: read by PropertyBinding.Composite - - var indices = {}; - this._indicesByUUID = indices; // for bookkeeping - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - indices[ arguments[ i ].uuid ] = i; - - } - - this._paths = []; // inside: string - this._parsedPaths = []; // inside: { we don't care, here } - this._bindings = []; // inside: Array< PropertyBinding > - this._bindingsIndicesByPath = {}; // inside: indices in these arrays - - var scope = this; - - this.stats = { - - objects: { - get total() { - - return scope._objects.length; - - }, - get inUse() { - - return this.total - scope.nCachedObjects_; - - } - }, - get bindingsPerObject() { - - return scope._bindings.length; - - } - - }; - - } - - Object.assign( AnimationObjectGroup.prototype, { - - isAnimationObjectGroup: true, - - add: function () { - - var objects = this._objects, - nObjects = objects.length, - nCachedObjects = this.nCachedObjects_, - indicesByUUID = this._indicesByUUID, - paths = this._paths, - parsedPaths = this._parsedPaths, - bindings = this._bindings, - nBindings = bindings.length, - knownObject = undefined; - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - var object = arguments[ i ], - uuid = object.uuid, - index = indicesByUUID[ uuid ]; - - if ( index === undefined ) { - - // unknown object -> add it to the ACTIVE region - - index = nObjects ++; - indicesByUUID[ uuid ] = index; - objects.push( object ); - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); - - } - - } else if ( index < nCachedObjects ) { - - knownObject = objects[ index ]; - - // move existing object to the ACTIVE region - - var firstActiveIndex = -- nCachedObjects, - lastCachedObject = objects[ firstActiveIndex ]; - - indicesByUUID[ lastCachedObject.uuid ] = index; - objects[ index ] = lastCachedObject; - - indicesByUUID[ uuid ] = firstActiveIndex; - objects[ firstActiveIndex ] = object; - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ], - lastCached = bindingsForPath[ firstActiveIndex ], - binding = bindingsForPath[ index ]; - - bindingsForPath[ index ] = lastCached; - - if ( binding === undefined ) { - - // since we do not bother to create new bindings - // for objects that are cached, the binding may - // or may not exist - - binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); - - } - - bindingsForPath[ firstActiveIndex ] = binding; - - } - - } else if ( objects[ index ] !== knownObject ) { - - console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + - 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); - - } // else the object is already where we want it to be - - } // for arguments - - this.nCachedObjects_ = nCachedObjects; - - }, - - remove: function () { - - var objects = this._objects, - nCachedObjects = this.nCachedObjects_, - indicesByUUID = this._indicesByUUID, - bindings = this._bindings, - nBindings = bindings.length; - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - var object = arguments[ i ], - uuid = object.uuid, - index = indicesByUUID[ uuid ]; - - if ( index !== undefined && index >= nCachedObjects ) { - - // move existing object into the CACHED region - - var lastCachedIndex = nCachedObjects ++, - firstActiveObject = objects[ lastCachedIndex ]; - - indicesByUUID[ firstActiveObject.uuid ] = index; - objects[ index ] = firstActiveObject; - - indicesByUUID[ uuid ] = lastCachedIndex; - objects[ lastCachedIndex ] = object; - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ], - firstActive = bindingsForPath[ lastCachedIndex ], - binding = bindingsForPath[ index ]; - - bindingsForPath[ index ] = firstActive; - bindingsForPath[ lastCachedIndex ] = binding; - - } - - } - - } // for arguments - - this.nCachedObjects_ = nCachedObjects; - - }, - - // remove & forget - uncache: function () { - - var objects = this._objects, - nObjects = objects.length, - nCachedObjects = this.nCachedObjects_, - indicesByUUID = this._indicesByUUID, - bindings = this._bindings, - nBindings = bindings.length; - - for ( var i = 0, n = arguments.length; i !== n; ++ i ) { - - var object = arguments[ i ], - uuid = object.uuid, - index = indicesByUUID[ uuid ]; - - if ( index !== undefined ) { - - delete indicesByUUID[ uuid ]; - - if ( index < nCachedObjects ) { - - // object is cached, shrink the CACHED region - - var firstActiveIndex = -- nCachedObjects, - lastCachedObject = objects[ firstActiveIndex ], - lastIndex = -- nObjects, - lastObject = objects[ lastIndex ]; - - // last cached object takes this object's place - indicesByUUID[ lastCachedObject.uuid ] = index; - objects[ index ] = lastCachedObject; - - // last object goes to the activated slot and pop - indicesByUUID[ lastObject.uuid ] = firstActiveIndex; - objects[ firstActiveIndex ] = lastObject; - objects.pop(); - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ], - lastCached = bindingsForPath[ firstActiveIndex ], - last = bindingsForPath[ lastIndex ]; - - bindingsForPath[ index ] = lastCached; - bindingsForPath[ firstActiveIndex ] = last; - bindingsForPath.pop(); - - } - - } else { - - // object is active, just swap with the last and pop - - var lastIndex = -- nObjects, - lastObject = objects[ lastIndex ]; - - indicesByUUID[ lastObject.uuid ] = index; - objects[ index ] = lastObject; - objects.pop(); - - // accounting is done, now do the same for all bindings - - for ( var j = 0, m = nBindings; j !== m; ++ j ) { - - var bindingsForPath = bindings[ j ]; - - bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; - bindingsForPath.pop(); - - } - - } // cached or active - - } // if object is known - - } // for arguments - - this.nCachedObjects_ = nCachedObjects; - - }, - - // Internal interface used by befriended PropertyBinding.Composite: - - subscribe_: function ( path, parsedPath ) { - - // returns an array of bindings for the given path that is changed - // according to the contained objects in the group - - var indicesByPath = this._bindingsIndicesByPath, - index = indicesByPath[ path ], - bindings = this._bindings; - - if ( index !== undefined ) return bindings[ index ]; - - var paths = this._paths, - parsedPaths = this._parsedPaths, - objects = this._objects, - nObjects = objects.length, - nCachedObjects = this.nCachedObjects_, - bindingsForPath = new Array( nObjects ); - - index = bindings.length; - - indicesByPath[ path ] = index; - - paths.push( path ); - parsedPaths.push( parsedPath ); - bindings.push( bindingsForPath ); - - for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { - - var object = objects[ i ]; - bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); - - } - - return bindingsForPath; - - }, - - unsubscribe_: function ( path ) { - - // tells the group to forget about a property path and no longer - // update the array previously obtained with 'subscribe_' - - var indicesByPath = this._bindingsIndicesByPath, - index = indicesByPath[ path ]; - - if ( index !== undefined ) { - - var paths = this._paths, - parsedPaths = this._parsedPaths, - bindings = this._bindings, - lastBindingsIndex = bindings.length - 1, - lastBindings = bindings[ lastBindingsIndex ], - lastBindingsPath = path[ lastBindingsIndex ]; - - indicesByPath[ lastBindingsPath ] = index; - - bindings[ index ] = lastBindings; - bindings.pop(); - - parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; - parsedPaths.pop(); - - paths[ index ] = paths[ lastBindingsIndex ]; - paths.pop(); - - } - - } - - } ); - - /** - * - * Action provided by AnimationMixer for scheduling clip playback on specific - * objects. - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - * - */ - - function AnimationAction( mixer, clip, localRoot ) { - - this._mixer = mixer; - this._clip = clip; - this._localRoot = localRoot || null; - - var tracks = clip.tracks, - nTracks = tracks.length, - interpolants = new Array( nTracks ); - - var interpolantSettings = { - endingStart: ZeroCurvatureEnding, - endingEnd: ZeroCurvatureEnding - }; - - for ( var i = 0; i !== nTracks; ++ i ) { - - var interpolant = tracks[ i ].createInterpolant( null ); - interpolants[ i ] = interpolant; - interpolant.settings = interpolantSettings; - - } - - this._interpolantSettings = interpolantSettings; - - this._interpolants = interpolants; // bound by the mixer - - // inside: PropertyMixer (managed by the mixer) - this._propertyBindings = new Array( nTracks ); - - this._cacheIndex = null; // for the memory manager - this._byClipCacheIndex = null; // for the memory manager - - this._timeScaleInterpolant = null; - this._weightInterpolant = null; - - this.loop = LoopRepeat; - this._loopCount = - 1; - - // global mixer time when the action is to be started - // it's set back to 'null' upon start of the action - this._startTime = null; - - // scaled local time of the action - // gets clamped or wrapped to 0..clip.duration according to loop - this.time = 0; - - this.timeScale = 1; - this._effectiveTimeScale = 1; - - this.weight = 1; - this._effectiveWeight = 1; - - this.repetitions = Infinity; // no. of repetitions when looping - - this.paused = false; // true -> zero effective time scale - this.enabled = true; // false -> zero effective weight - - this.clampWhenFinished = false;// keep feeding the last frame? - - this.zeroSlopeAtStart = true;// for smooth interpolation w/o separate - this.zeroSlopeAtEnd = true;// clips for start, loop and end - - } - - Object.assign( AnimationAction.prototype, { - - // State & Scheduling - - play: function () { - - this._mixer._activateAction( this ); - - return this; - - }, - - stop: function () { - - this._mixer._deactivateAction( this ); - - return this.reset(); - - }, - - reset: function () { - - this.paused = false; - this.enabled = true; - - this.time = 0; // restart clip - this._loopCount = - 1;// forget previous loops - this._startTime = null;// forget scheduling - - return this.stopFading().stopWarping(); - - }, - - isRunning: function () { - - return this.enabled && ! this.paused && this.timeScale !== 0 && - this._startTime === null && this._mixer._isActiveAction( this ); - - }, - - // return true when play has been called - isScheduled: function () { - - return this._mixer._isActiveAction( this ); - - }, - - startAt: function ( time ) { - - this._startTime = time; - - return this; - - }, - - setLoop: function ( mode, repetitions ) { - - this.loop = mode; - this.repetitions = repetitions; - - return this; - - }, - - // Weight - - // set the weight stopping any scheduled fading - // although .enabled = false yields an effective weight of zero, this - // method does *not* change .enabled, because it would be confusing - setEffectiveWeight: function ( weight ) { - - this.weight = weight; - - // note: same logic as when updated at runtime - this._effectiveWeight = this.enabled ? weight : 0; - - return this.stopFading(); - - }, - - // return the weight considering fading and .enabled - getEffectiveWeight: function () { - - return this._effectiveWeight; - - }, - - fadeIn: function ( duration ) { - - return this._scheduleFading( duration, 0, 1 ); - - }, - - fadeOut: function ( duration ) { - - return this._scheduleFading( duration, 1, 0 ); - - }, - - crossFadeFrom: function ( fadeOutAction, duration, warp ) { - - fadeOutAction.fadeOut( duration ); - this.fadeIn( duration ); - - if ( warp ) { - - var fadeInDuration = this._clip.duration, - fadeOutDuration = fadeOutAction._clip.duration, - - startEndRatio = fadeOutDuration / fadeInDuration, - endStartRatio = fadeInDuration / fadeOutDuration; - - fadeOutAction.warp( 1.0, startEndRatio, duration ); - this.warp( endStartRatio, 1.0, duration ); - - } - - return this; - - }, - - crossFadeTo: function ( fadeInAction, duration, warp ) { - - return fadeInAction.crossFadeFrom( this, duration, warp ); - - }, - - stopFading: function () { - - var weightInterpolant = this._weightInterpolant; - - if ( weightInterpolant !== null ) { - - this._weightInterpolant = null; - this._mixer._takeBackControlInterpolant( weightInterpolant ); - - } - - return this; - - }, - - // Time Scale Control - - // set the time scale stopping any scheduled warping - // although .paused = true yields an effective time scale of zero, this - // method does *not* change .paused, because it would be confusing - setEffectiveTimeScale: function ( timeScale ) { - - this.timeScale = timeScale; - this._effectiveTimeScale = this.paused ? 0 : timeScale; - - return this.stopWarping(); - - }, - - // return the time scale considering warping and .paused - getEffectiveTimeScale: function () { - - return this._effectiveTimeScale; - - }, - - setDuration: function ( duration ) { - - this.timeScale = this._clip.duration / duration; - - return this.stopWarping(); - - }, - - syncWith: function ( action ) { - - this.time = action.time; - this.timeScale = action.timeScale; - - return this.stopWarping(); - - }, - - halt: function ( duration ) { - - return this.warp( this._effectiveTimeScale, 0, duration ); - - }, - - warp: function ( startTimeScale, endTimeScale, duration ) { - - var mixer = this._mixer, now = mixer.time, - interpolant = this._timeScaleInterpolant, - - timeScale = this.timeScale; - - if ( interpolant === null ) { - - interpolant = mixer._lendControlInterpolant(); - this._timeScaleInterpolant = interpolant; - - } - - var times = interpolant.parameterPositions, - values = interpolant.sampleValues; - - times[ 0 ] = now; - times[ 1 ] = now + duration; - - values[ 0 ] = startTimeScale / timeScale; - values[ 1 ] = endTimeScale / timeScale; - - return this; - - }, - - stopWarping: function () { - - var timeScaleInterpolant = this._timeScaleInterpolant; - - if ( timeScaleInterpolant !== null ) { - - this._timeScaleInterpolant = null; - this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); - - } - - return this; - - }, - - // Object Accessors - - getMixer: function () { - - return this._mixer; - - }, - - getClip: function () { - - return this._clip; - - }, - - getRoot: function () { - - return this._localRoot || this._mixer._root; - - }, - - // Interna - - _update: function ( time, deltaTime, timeDirection, accuIndex ) { - - // called by the mixer - - if ( ! this.enabled ) { - - // call ._updateWeight() to update ._effectiveWeight - - this._updateWeight( time ); - return; - - } - - var startTime = this._startTime; - - if ( startTime !== null ) { - - // check for scheduled start of action - - var timeRunning = ( time - startTime ) * timeDirection; - if ( timeRunning < 0 || timeDirection === 0 ) { - - return; // yet to come / don't decide when delta = 0 - - } - - // start - - this._startTime = null; // unschedule - deltaTime = timeDirection * timeRunning; - - } - - // apply time scale and advance time - - deltaTime *= this._updateTimeScale( time ); - var clipTime = this._updateTime( deltaTime ); - - // note: _updateTime may disable the action resulting in - // an effective weight of 0 - - var weight = this._updateWeight( time ); - - if ( weight > 0 ) { - - var interpolants = this._interpolants; - var propertyMixers = this._propertyBindings; - - for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { - - interpolants[ j ].evaluate( clipTime ); - propertyMixers[ j ].accumulate( accuIndex, weight ); - - } - - } - - }, - - _updateWeight: function ( time ) { - - var weight = 0; - - if ( this.enabled ) { - - weight = this.weight; - var interpolant = this._weightInterpolant; - - if ( interpolant !== null ) { - - var interpolantValue = interpolant.evaluate( time )[ 0 ]; - - weight *= interpolantValue; - - if ( time > interpolant.parameterPositions[ 1 ] ) { - - this.stopFading(); - - if ( interpolantValue === 0 ) { - - // faded out, disable - this.enabled = false; - - } - - } - - } - - } - - this._effectiveWeight = weight; - return weight; - - }, - - _updateTimeScale: function ( time ) { - - var timeScale = 0; - - if ( ! this.paused ) { - - timeScale = this.timeScale; - - var interpolant = this._timeScaleInterpolant; - - if ( interpolant !== null ) { - - var interpolantValue = interpolant.evaluate( time )[ 0 ]; - - timeScale *= interpolantValue; - - if ( time > interpolant.parameterPositions[ 1 ] ) { - - this.stopWarping(); - - if ( timeScale === 0 ) { - - // motion has halted, pause - this.paused = true; - - } else { - - // warp done - apply final time scale - this.timeScale = timeScale; - - } - - } - - } - - } - - this._effectiveTimeScale = timeScale; - return timeScale; - - }, - - _updateTime: function ( deltaTime ) { - - var time = this.time + deltaTime; - var duration = this._clip.duration; - var loop = this.loop; - var loopCount = this._loopCount; - - var pingPong = ( loop === LoopPingPong ); - - if ( deltaTime === 0 ) { - - if ( loopCount === - 1 ) return time; - - return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; - - } - - if ( loop === LoopOnce ) { - - if ( loopCount === - 1 ) { - - // just started - - this._loopCount = 0; - this._setEndings( true, true, false ); - - } - - handle_stop: { - - if ( time >= duration ) { - - time = duration; - - } else if ( time < 0 ) { - - time = 0; - - } else break handle_stop; - - if ( this.clampWhenFinished ) this.paused = true; - else this.enabled = false; - - this._mixer.dispatchEvent( { - type: 'finished', action: this, - direction: deltaTime < 0 ? - 1 : 1 - } ); - - } - - } else { // repetitive Repeat or PingPong - - if ( loopCount === - 1 ) { - - // just started - - if ( deltaTime >= 0 ) { - - loopCount = 0; - - this._setEndings( true, this.repetitions === 0, pingPong ); - - } else { - - // when looping in reverse direction, the initial - // transition through zero counts as a repetition, - // so leave loopCount at -1 - - this._setEndings( this.repetitions === 0, true, pingPong ); - - } - - } - - if ( time >= duration || time < 0 ) { - - // wrap around - - var loopDelta = Math.floor( time / duration ); // signed - time -= duration * loopDelta; - - loopCount += Math.abs( loopDelta ); - - var pending = this.repetitions - loopCount; - - if ( pending <= 0 ) { - - // have to stop (switch state, clamp time, fire event) - - if ( this.clampWhenFinished ) this.paused = true; - else this.enabled = false; - - time = deltaTime > 0 ? duration : 0; - - this._mixer.dispatchEvent( { - type: 'finished', action: this, - direction: deltaTime > 0 ? 1 : - 1 - } ); - - } else { - - // keep running - - if ( pending === 1 ) { - - // entering the last round - - var atStart = deltaTime < 0; - this._setEndings( atStart, ! atStart, pingPong ); - - } else { - - this._setEndings( false, false, pingPong ); - - } - - this._loopCount = loopCount; - - this._mixer.dispatchEvent( { - type: 'loop', action: this, loopDelta: loopDelta - } ); - - } - - } - - if ( pingPong && ( loopCount & 1 ) === 1 ) { - - // invert time for the "pong round" - - this.time = time; - return duration - time; - - } - - } - - this.time = time; - return time; - - }, - - _setEndings: function ( atStart, atEnd, pingPong ) { - - var settings = this._interpolantSettings; - - if ( pingPong ) { - - settings.endingStart = ZeroSlopeEnding; - settings.endingEnd = ZeroSlopeEnding; - - } else { - - // assuming for LoopOnce atStart == atEnd == true - - if ( atStart ) { - - settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; - - } else { - - settings.endingStart = WrapAroundEnding; - - } - - if ( atEnd ) { - - settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; - - } else { - - settings.endingEnd = WrapAroundEnding; - - } - - } - - }, - - _scheduleFading: function ( duration, weightNow, weightThen ) { - - var mixer = this._mixer, now = mixer.time, - interpolant = this._weightInterpolant; - - if ( interpolant === null ) { - - interpolant = mixer._lendControlInterpolant(); - this._weightInterpolant = interpolant; - - } - - var times = interpolant.parameterPositions, - values = interpolant.sampleValues; - - times[ 0 ] = now; - values[ 0 ] = weightNow; - times[ 1 ] = now + duration; - values[ 1 ] = weightThen; - - return this; - - } - - } ); - - /** - * - * Player for AnimationClips. - * - * - * @author Ben Houston / http://clara.io/ - * @author David Sarno / http://lighthaus.us/ - * @author tschw - */ - - function AnimationMixer( root ) { - - this._root = root; - this._initMemoryManager(); - this._accuIndex = 0; - - this.time = 0; - - this.timeScale = 1.0; - - } - - AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { - - constructor: AnimationMixer, - - _bindAction: function ( action, prototypeAction ) { - - var root = action._localRoot || this._root, - tracks = action._clip.tracks, - nTracks = tracks.length, - bindings = action._propertyBindings, - interpolants = action._interpolants, - rootUuid = root.uuid, - bindingsByRoot = this._bindingsByRootAndName, - bindingsByName = bindingsByRoot[ rootUuid ]; - - if ( bindingsByName === undefined ) { - - bindingsByName = {}; - bindingsByRoot[ rootUuid ] = bindingsByName; - - } - - for ( var i = 0; i !== nTracks; ++ i ) { - - var track = tracks[ i ], - trackName = track.name, - binding = bindingsByName[ trackName ]; - - if ( binding !== undefined ) { - - bindings[ i ] = binding; - - } else { - - binding = bindings[ i ]; - - if ( binding !== undefined ) { - - // existing binding, make sure the cache knows - - if ( binding._cacheIndex === null ) { - - ++ binding.referenceCount; - this._addInactiveBinding( binding, rootUuid, trackName ); - - } - - continue; - - } - - var path = prototypeAction && prototypeAction. - _propertyBindings[ i ].binding.parsedPath; - - binding = new PropertyMixer( - PropertyBinding.create( root, trackName, path ), - track.ValueTypeName, track.getValueSize() ); - - ++ binding.referenceCount; - this._addInactiveBinding( binding, rootUuid, trackName ); - - bindings[ i ] = binding; - - } - - interpolants[ i ].resultBuffer = binding.buffer; - - } - - }, - - _activateAction: function ( action ) { - - if ( ! this._isActiveAction( action ) ) { - - if ( action._cacheIndex === null ) { - - // this action has been forgotten by the cache, but the user - // appears to be still using it -> rebind - - var rootUuid = ( action._localRoot || this._root ).uuid, - clipUuid = action._clip.uuid, - actionsForClip = this._actionsByClip[ clipUuid ]; - - this._bindAction( action, - actionsForClip && actionsForClip.knownActions[ 0 ] ); - - this._addInactiveAction( action, clipUuid, rootUuid ); - - } - - var bindings = action._propertyBindings; - - // increment reference counts / sort out state - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { - - var binding = bindings[ i ]; - - if ( binding.useCount ++ === 0 ) { - - this._lendBinding( binding ); - binding.saveOriginalState(); - - } - - } - - this._lendAction( action ); - - } - - }, - - _deactivateAction: function ( action ) { - - if ( this._isActiveAction( action ) ) { - - var bindings = action._propertyBindings; - - // decrement reference counts / sort out state - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { - - var binding = bindings[ i ]; - - if ( -- binding.useCount === 0 ) { - - binding.restoreOriginalState(); - this._takeBackBinding( binding ); - - } - - } - - this._takeBackAction( action ); - - } - - }, - - // Memory manager - - _initMemoryManager: function () { - - this._actions = []; // 'nActiveActions' followed by inactive ones - this._nActiveActions = 0; - - this._actionsByClip = {}; - // inside: - // { - // knownActions: Array< AnimationAction > - used as prototypes - // actionByRoot: AnimationAction - lookup - // } - - - this._bindings = []; // 'nActiveBindings' followed by inactive ones - this._nActiveBindings = 0; - - this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > - - - this._controlInterpolants = []; // same game as above - this._nActiveControlInterpolants = 0; - - var scope = this; - - this.stats = { - - actions: { - get total() { - - return scope._actions.length; - - }, - get inUse() { - - return scope._nActiveActions; - - } - }, - bindings: { - get total() { - - return scope._bindings.length; - - }, - get inUse() { - - return scope._nActiveBindings; - - } - }, - controlInterpolants: { - get total() { - - return scope._controlInterpolants.length; - - }, - get inUse() { - - return scope._nActiveControlInterpolants; - - } - } - - }; - - }, - - // Memory management for AnimationAction objects - - _isActiveAction: function ( action ) { - - var index = action._cacheIndex; - return index !== null && index < this._nActiveActions; - - }, - - _addInactiveAction: function ( action, clipUuid, rootUuid ) { - - var actions = this._actions, - actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ]; - - if ( actionsForClip === undefined ) { - - actionsForClip = { - - knownActions: [ action ], - actionByRoot: {} - - }; - - action._byClipCacheIndex = 0; - - actionsByClip[ clipUuid ] = actionsForClip; - - } else { - - var knownActions = actionsForClip.knownActions; - - action._byClipCacheIndex = knownActions.length; - knownActions.push( action ); - - } - - action._cacheIndex = actions.length; - actions.push( action ); - - actionsForClip.actionByRoot[ rootUuid ] = action; - - }, - - _removeInactiveAction: function ( action ) { - - var actions = this._actions, - lastInactiveAction = actions[ actions.length - 1 ], - cacheIndex = action._cacheIndex; - - lastInactiveAction._cacheIndex = cacheIndex; - actions[ cacheIndex ] = lastInactiveAction; - actions.pop(); - - action._cacheIndex = null; - - - var clipUuid = action._clip.uuid, - actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ], - knownActionsForClip = actionsForClip.knownActions, - - lastKnownAction = - knownActionsForClip[ knownActionsForClip.length - 1 ], - - byClipCacheIndex = action._byClipCacheIndex; - - lastKnownAction._byClipCacheIndex = byClipCacheIndex; - knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; - knownActionsForClip.pop(); - - action._byClipCacheIndex = null; - - - var actionByRoot = actionsForClip.actionByRoot, - rootUuid = ( action._localRoot || this._root ).uuid; - - delete actionByRoot[ rootUuid ]; - - if ( knownActionsForClip.length === 0 ) { - - delete actionsByClip[ clipUuid ]; - - } - - this._removeInactiveBindingsForAction( action ); - - }, - - _removeInactiveBindingsForAction: function ( action ) { - - var bindings = action._propertyBindings; - for ( var i = 0, n = bindings.length; i !== n; ++ i ) { - - var binding = bindings[ i ]; - - if ( -- binding.referenceCount === 0 ) { - - this._removeInactiveBinding( binding ); - - } - - } - - }, - - _lendAction: function ( action ) { - - // [ active actions | inactive actions ] - // [ active actions >| inactive actions ] - // s a - // <-swap-> - // a s - - var actions = this._actions, - prevIndex = action._cacheIndex, - - lastActiveIndex = this._nActiveActions ++, - - firstInactiveAction = actions[ lastActiveIndex ]; - - action._cacheIndex = lastActiveIndex; - actions[ lastActiveIndex ] = action; - - firstInactiveAction._cacheIndex = prevIndex; - actions[ prevIndex ] = firstInactiveAction; - - }, - - _takeBackAction: function ( action ) { - - // [ active actions | inactive actions ] - // [ active actions |< inactive actions ] - // a s - // <-swap-> - // s a - - var actions = this._actions, - prevIndex = action._cacheIndex, - - firstInactiveIndex = -- this._nActiveActions, - - lastActiveAction = actions[ firstInactiveIndex ]; - - action._cacheIndex = firstInactiveIndex; - actions[ firstInactiveIndex ] = action; - - lastActiveAction._cacheIndex = prevIndex; - actions[ prevIndex ] = lastActiveAction; - - }, - - // Memory management for PropertyMixer objects - - _addInactiveBinding: function ( binding, rootUuid, trackName ) { - - var bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ], - - bindings = this._bindings; - - if ( bindingByName === undefined ) { - - bindingByName = {}; - bindingsByRoot[ rootUuid ] = bindingByName; - - } - - bindingByName[ trackName ] = binding; - - binding._cacheIndex = bindings.length; - bindings.push( binding ); - - }, - - _removeInactiveBinding: function ( binding ) { - - var bindings = this._bindings, - propBinding = binding.binding, - rootUuid = propBinding.rootNode.uuid, - trackName = propBinding.path, - bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ], - - lastInactiveBinding = bindings[ bindings.length - 1 ], - cacheIndex = binding._cacheIndex; - - lastInactiveBinding._cacheIndex = cacheIndex; - bindings[ cacheIndex ] = lastInactiveBinding; - bindings.pop(); - - delete bindingByName[ trackName ]; - - remove_empty_map: { - - for ( var _ in bindingByName ) break remove_empty_map; // eslint-disable-line no-unused-vars - - delete bindingsByRoot[ rootUuid ]; - - } - - }, - - _lendBinding: function ( binding ) { - - var bindings = this._bindings, - prevIndex = binding._cacheIndex, - - lastActiveIndex = this._nActiveBindings ++, - - firstInactiveBinding = bindings[ lastActiveIndex ]; - - binding._cacheIndex = lastActiveIndex; - bindings[ lastActiveIndex ] = binding; - - firstInactiveBinding._cacheIndex = prevIndex; - bindings[ prevIndex ] = firstInactiveBinding; - - }, - - _takeBackBinding: function ( binding ) { - - var bindings = this._bindings, - prevIndex = binding._cacheIndex, - - firstInactiveIndex = -- this._nActiveBindings, - - lastActiveBinding = bindings[ firstInactiveIndex ]; - - binding._cacheIndex = firstInactiveIndex; - bindings[ firstInactiveIndex ] = binding; - - lastActiveBinding._cacheIndex = prevIndex; - bindings[ prevIndex ] = lastActiveBinding; - - }, - - - // Memory management of Interpolants for weight and time scale - - _lendControlInterpolant: function () { - - var interpolants = this._controlInterpolants, - lastActiveIndex = this._nActiveControlInterpolants ++, - interpolant = interpolants[ lastActiveIndex ]; - - if ( interpolant === undefined ) { - - interpolant = new LinearInterpolant( - new Float32Array( 2 ), new Float32Array( 2 ), - 1, this._controlInterpolantsResultBuffer ); - - interpolant.__cacheIndex = lastActiveIndex; - interpolants[ lastActiveIndex ] = interpolant; - - } - - return interpolant; - - }, - - _takeBackControlInterpolant: function ( interpolant ) { - - var interpolants = this._controlInterpolants, - prevIndex = interpolant.__cacheIndex, - - firstInactiveIndex = -- this._nActiveControlInterpolants, - - lastActiveInterpolant = interpolants[ firstInactiveIndex ]; - - interpolant.__cacheIndex = firstInactiveIndex; - interpolants[ firstInactiveIndex ] = interpolant; - - lastActiveInterpolant.__cacheIndex = prevIndex; - interpolants[ prevIndex ] = lastActiveInterpolant; - - }, - - _controlInterpolantsResultBuffer: new Float32Array( 1 ), - - // return an action for a clip optionally using a custom root target - // object (this method allocates a lot of dynamic memory in case a - // previously unknown clip/root combination is specified) - clipAction: function ( clip, optionalRoot ) { - - var root = optionalRoot || this._root, - rootUuid = root.uuid, - - clipObject = typeof clip === 'string' ? - AnimationClip.findByName( root, clip ) : clip, - - clipUuid = clipObject !== null ? clipObject.uuid : clip, - - actionsForClip = this._actionsByClip[ clipUuid ], - prototypeAction = null; - - if ( actionsForClip !== undefined ) { - - var existingAction = - actionsForClip.actionByRoot[ rootUuid ]; - - if ( existingAction !== undefined ) { - - return existingAction; - - } - - // we know the clip, so we don't have to parse all - // the bindings again but can just copy - prototypeAction = actionsForClip.knownActions[ 0 ]; - - // also, take the clip from the prototype action - if ( clipObject === null ) - clipObject = prototypeAction._clip; - - } - - // clip must be known when specified via string - if ( clipObject === null ) return null; - - // allocate all resources required to run it - var newAction = new AnimationAction( this, clipObject, optionalRoot ); - - this._bindAction( newAction, prototypeAction ); - - // and make the action known to the memory manager - this._addInactiveAction( newAction, clipUuid, rootUuid ); - - return newAction; - - }, - - // get an existing action - existingAction: function ( clip, optionalRoot ) { - - var root = optionalRoot || this._root, - rootUuid = root.uuid, - - clipObject = typeof clip === 'string' ? - AnimationClip.findByName( root, clip ) : clip, - - clipUuid = clipObject ? clipObject.uuid : clip, - - actionsForClip = this._actionsByClip[ clipUuid ]; - - if ( actionsForClip !== undefined ) { - - return actionsForClip.actionByRoot[ rootUuid ] || null; - - } - - return null; - - }, - - // deactivates all previously scheduled actions - stopAllAction: function () { - - var actions = this._actions, - nActions = this._nActiveActions, - bindings = this._bindings, - nBindings = this._nActiveBindings; - - this._nActiveActions = 0; - this._nActiveBindings = 0; - - for ( var i = 0; i !== nActions; ++ i ) { - - actions[ i ].reset(); - - } - - for ( var i = 0; i !== nBindings; ++ i ) { - - bindings[ i ].useCount = 0; - - } - - return this; - - }, - - // advance the time and update apply the animation - update: function ( deltaTime ) { - - deltaTime *= this.timeScale; - - var actions = this._actions, - nActions = this._nActiveActions, - - time = this.time += deltaTime, - timeDirection = Math.sign( deltaTime ), - - accuIndex = this._accuIndex ^= 1; - - // run active actions - - for ( var i = 0; i !== nActions; ++ i ) { - - var action = actions[ i ]; - - action._update( time, deltaTime, timeDirection, accuIndex ); - - } - - // update scene graph - - var bindings = this._bindings, - nBindings = this._nActiveBindings; - - for ( var i = 0; i !== nBindings; ++ i ) { - - bindings[ i ].apply( accuIndex ); - - } - - return this; - - }, - - // return this mixer's root target object - getRoot: function () { - - return this._root; - - }, - - // free all resources specific to a particular clip - uncacheClip: function ( clip ) { - - var actions = this._actions, - clipUuid = clip.uuid, - actionsByClip = this._actionsByClip, - actionsForClip = actionsByClip[ clipUuid ]; - - if ( actionsForClip !== undefined ) { - - // note: just calling _removeInactiveAction would mess up the - // iteration state and also require updating the state we can - // just throw away - - var actionsToRemove = actionsForClip.knownActions; - - for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { - - var action = actionsToRemove[ i ]; - - this._deactivateAction( action ); - - var cacheIndex = action._cacheIndex, - lastInactiveAction = actions[ actions.length - 1 ]; - - action._cacheIndex = null; - action._byClipCacheIndex = null; - - lastInactiveAction._cacheIndex = cacheIndex; - actions[ cacheIndex ] = lastInactiveAction; - actions.pop(); - - this._removeInactiveBindingsForAction( action ); - - } - - delete actionsByClip[ clipUuid ]; - - } - - }, - - // free all resources specific to a particular root target object - uncacheRoot: function ( root ) { - - var rootUuid = root.uuid, - actionsByClip = this._actionsByClip; - - for ( var clipUuid in actionsByClip ) { - - var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, - action = actionByRoot[ rootUuid ]; - - if ( action !== undefined ) { - - this._deactivateAction( action ); - this._removeInactiveAction( action ); - - } - - } - - var bindingsByRoot = this._bindingsByRootAndName, - bindingByName = bindingsByRoot[ rootUuid ]; - - if ( bindingByName !== undefined ) { - - for ( var trackName in bindingByName ) { - - var binding = bindingByName[ trackName ]; - binding.restoreOriginalState(); - this._removeInactiveBinding( binding ); - - } - - } - - }, - - // remove a targeted clip from the cache - uncacheAction: function ( clip, optionalRoot ) { - - var action = this.existingAction( clip, optionalRoot ); - - if ( action !== null ) { - - this._deactivateAction( action ); - this._removeInactiveAction( action ); - - } - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Uniform( value ) { - - if ( typeof value === 'string' ) { - - console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); - value = arguments[ 1 ]; - - } - - this.value = value; - - } - - Uniform.prototype.clone = function () { - - return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); - - }; - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InstancedBufferGeometry() { - - BufferGeometry.call( this ); - - this.type = 'InstancedBufferGeometry'; - this.maxInstancedCount = undefined; - - } - - InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { - - constructor: InstancedBufferGeometry, - - isInstancedBufferGeometry: true, - - copy: function ( source ) { - - BufferGeometry.prototype.copy.call( this, source ); - - this.maxInstancedCount = source.maxInstancedCount; - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { - - InterleavedBuffer.call( this, array, stride ); - - this.meshPerAttribute = meshPerAttribute || 1; - - } - - InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { - - constructor: InstancedInterleavedBuffer, - - isInstancedInterleavedBuffer: true, - - copy: function ( source ) { - - InterleavedBuffer.prototype.copy.call( this, source ); - - this.meshPerAttribute = source.meshPerAttribute; - - return this; - - } - - } ); - - /** - * @author benaadams / https://twitter.com/ben_a_adams - */ - - function InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) { - - if ( typeof ( normalized ) === 'number' ) { - - meshPerAttribute = normalized; - - normalized = false; - - console.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' ); - - } - - BufferAttribute.call( this, array, itemSize, normalized ); - - this.meshPerAttribute = meshPerAttribute || 1; - - } - - InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { - - constructor: InstancedBufferAttribute, - - isInstancedBufferAttribute: true, - - copy: function ( source ) { - - BufferAttribute.prototype.copy.call( this, source ); - - this.meshPerAttribute = source.meshPerAttribute; - - return this; - - } - - } ); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author bhouston / http://clara.io/ - * @author stephomi / http://stephaneginier.com/ - */ - - function Raycaster( origin, direction, near, far ) { - - this.ray = new Ray( origin, direction ); - // direction is assumed to be normalized (for accurate distance calculations) - - this.near = near || 0; - this.far = far || Infinity; - - this.params = { - Mesh: {}, - Line: {}, - LOD: {}, - Points: { threshold: 1 }, - Sprite: {} - }; - - Object.defineProperties( this.params, { - PointCloud: { - get: function () { - - console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); - return this.Points; - - } - } - } ); - - } - - function ascSort( a, b ) { - - return a.distance - b.distance; - - } - - function intersectObject( object, raycaster, intersects, recursive ) { - - if ( object.visible === false ) return; - - object.raycast( raycaster, intersects ); - - if ( recursive === true ) { - - var children = object.children; - - for ( var i = 0, l = children.length; i < l; i ++ ) { - - intersectObject( children[ i ], raycaster, intersects, true ); - - } - - } - - } - - Object.assign( Raycaster.prototype, { - - linePrecision: 1, - - set: function ( origin, direction ) { - - // direction is assumed to be normalized (for accurate distance calculations) - - this.ray.set( origin, direction ); - - }, - - setFromCamera: function ( coords, camera ) { - - if ( ( camera && camera.isPerspectiveCamera ) ) { - - this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); - this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); - - } else if ( ( camera && camera.isOrthographicCamera ) ) { - - this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera - this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); - - } else { - - console.error( 'THREE.Raycaster: Unsupported camera type.' ); - - } - - }, - - intersectObject: function ( object, recursive, optionalTarget ) { - - var intersects = optionalTarget || []; - - intersectObject( object, this, intersects, recursive ); - - intersects.sort( ascSort ); - - return intersects; - - }, - - intersectObjects: function ( objects, recursive, optionalTarget ) { - - var intersects = optionalTarget || []; - - if ( Array.isArray( objects ) === false ) { - - console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); - return intersects; - - } - - for ( var i = 0, l = objects.length; i < l; i ++ ) { - - intersectObject( objects[ i ], this, intersects, recursive ); - - } - - intersects.sort( ascSort ); - - return intersects; - - } - - } ); - - /** - * @author bhouston / http://clara.io - * @author WestLangley / http://github.com/WestLangley - * - * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system - * - * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up. - * The azimuthal angle (theta) is measured from the positive z-axiz. - */ - - function Spherical( radius, phi, theta ) { - - this.radius = ( radius !== undefined ) ? radius : 1.0; - this.phi = ( phi !== undefined ) ? phi : 0; // polar angle - this.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle - - return this; - - } - - Object.assign( Spherical.prototype, { - - set: function ( radius, phi, theta ) { - - this.radius = radius; - this.phi = phi; - this.theta = theta; - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( other ) { - - this.radius = other.radius; - this.phi = other.phi; - this.theta = other.theta; - - return this; - - }, - - // restrict phi to be betwee EPS and PI-EPS - makeSafe: function () { - - var EPS = 0.000001; - this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); - - return this; - - }, - - setFromVector3: function ( v ) { - - return this.setFromCartesianCoords( v.x, v.y, v.z ); - - }, - - setFromCartesianCoords: function ( x, y, z ) { - - this.radius = Math.sqrt( x * x + y * y + z * z ); - - if ( this.radius === 0 ) { - - this.theta = 0; - this.phi = 0; - - } else { - - this.theta = Math.atan2( x, z ); - this.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) ); - - } - - return this; - - } - - } ); - - /** - * @author Mugen87 / https://github.com/Mugen87 - * - * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system - * - */ - - function Cylindrical( radius, theta, y ) { - - this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane - this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis - this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane - - return this; - - } - - Object.assign( Cylindrical.prototype, { - - set: function ( radius, theta, y ) { - - this.radius = radius; - this.theta = theta; - this.y = y; - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( other ) { - - this.radius = other.radius; - this.theta = other.theta; - this.y = other.y; - - return this; - - }, - - setFromVector3: function ( v ) { - - return this.setFromCartesianCoords( v.x, v.y, v.z ); - - }, - - setFromCartesianCoords: function ( x, y, z ) { - - this.radius = Math.sqrt( x * x + z * z ); - this.theta = Math.atan2( x, z ); - this.y = y; - - return this; - - } - - } ); - - /** - * @author bhouston / http://clara.io - */ - - function Box2( min, max ) { - - this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); - this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); - - } - - Object.assign( Box2.prototype, { - - set: function ( min, max ) { - - this.min.copy( min ); - this.max.copy( max ); - - return this; - - }, - - setFromPoints: function ( points ) { - - this.makeEmpty(); - - for ( var i = 0, il = points.length; i < il; i ++ ) { - - this.expandByPoint( points[ i ] ); - - } - - return this; - - }, - - setFromCenterAndSize: function () { - - var v1 = new Vector2(); - - return function setFromCenterAndSize( center, size ) { - - var halfSize = v1.copy( size ).multiplyScalar( 0.5 ); - this.min.copy( center ).sub( halfSize ); - this.max.copy( center ).add( halfSize ); - - return this; - - }; - - }(), - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( box ) { - - this.min.copy( box.min ); - this.max.copy( box.max ); - - return this; - - }, - - makeEmpty: function () { - - this.min.x = this.min.y = + Infinity; - this.max.x = this.max.y = - Infinity; - - return this; - - }, - - isEmpty: function () { - - // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes - - return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); - - }, - - getCenter: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .getCenter() target is now required' ); - target = new Vector2(); - - } - - return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); - - }, - - getSize: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .getSize() target is now required' ); - target = new Vector2(); - - } - - return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); - - }, - - expandByPoint: function ( point ) { - - this.min.min( point ); - this.max.max( point ); - - return this; - - }, - - expandByVector: function ( vector ) { - - this.min.sub( vector ); - this.max.add( vector ); - - return this; - - }, - - expandByScalar: function ( scalar ) { - - this.min.addScalar( - scalar ); - this.max.addScalar( scalar ); - - return this; - - }, - - containsPoint: function ( point ) { - - return point.x < this.min.x || point.x > this.max.x || - point.y < this.min.y || point.y > this.max.y ? false : true; - - }, - - containsBox: function ( box ) { - - return this.min.x <= box.min.x && box.max.x <= this.max.x && - this.min.y <= box.min.y && box.max.y <= this.max.y; - - }, - - getParameter: function ( point, target ) { - - // This can potentially have a divide by zero if the box - // has a size dimension of 0. - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .getParameter() target is now required' ); - target = new Vector2(); - - } - - return target.set( - ( point.x - this.min.x ) / ( this.max.x - this.min.x ), - ( point.y - this.min.y ) / ( this.max.y - this.min.y ) - ); - - }, - - intersectsBox: function ( box ) { - - // using 4 splitting planes to rule out intersections - - return box.max.x < this.min.x || box.min.x > this.max.x || - box.max.y < this.min.y || box.min.y > this.max.y ? false : true; - - }, - - clampPoint: function ( point, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Box2: .clampPoint() target is now required' ); - target = new Vector2(); - - } - - return target.copy( point ).clamp( this.min, this.max ); - - }, - - distanceToPoint: function () { - - var v1 = new Vector2(); - - return function distanceToPoint( point ) { - - var clampedPoint = v1.copy( point ).clamp( this.min, this.max ); - return clampedPoint.sub( point ).length(); - - }; - - }(), - - intersect: function ( box ) { - - this.min.max( box.min ); - this.max.min( box.max ); - - return this; - - }, - - union: function ( box ) { - - this.min.min( box.min ); - this.max.max( box.max ); - - return this; - - }, - - translate: function ( offset ) { - - this.min.add( offset ); - this.max.add( offset ); - - return this; - - }, - - equals: function ( box ) { - - return box.min.equals( this.min ) && box.max.equals( this.max ); - - } - - } ); - - /** - * @author bhouston / http://clara.io - */ - - function Line3( start, end ) { - - this.start = ( start !== undefined ) ? start : new Vector3(); - this.end = ( end !== undefined ) ? end : new Vector3(); - - } - - Object.assign( Line3.prototype, { - - set: function ( start, end ) { - - this.start.copy( start ); - this.end.copy( end ); - - return this; - - }, - - clone: function () { - - return new this.constructor().copy( this ); - - }, - - copy: function ( line ) { - - this.start.copy( line.start ); - this.end.copy( line.end ); - - return this; - - }, - - getCenter: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .getCenter() target is now required' ); - target = new Vector3(); - - } - - return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); - - }, - - delta: function ( target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .delta() target is now required' ); - target = new Vector3(); - - } - - return target.subVectors( this.end, this.start ); - - }, - - distanceSq: function () { - - return this.start.distanceToSquared( this.end ); - - }, - - distance: function () { - - return this.start.distanceTo( this.end ); - - }, - - at: function ( t, target ) { - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .at() target is now required' ); - target = new Vector3(); - - } - - return this.delta( target ).multiplyScalar( t ).add( this.start ); - - }, - - closestPointToPointParameter: function () { - - var startP = new Vector3(); - var startEnd = new Vector3(); - - return function closestPointToPointParameter( point, clampToLine ) { - - startP.subVectors( point, this.start ); - startEnd.subVectors( this.end, this.start ); - - var startEnd2 = startEnd.dot( startEnd ); - var startEnd_startP = startEnd.dot( startP ); - - var t = startEnd_startP / startEnd2; - - if ( clampToLine ) { - - t = _Math.clamp( t, 0, 1 ); - - } - - return t; - - }; - - }(), - - closestPointToPoint: function ( point, clampToLine, target ) { - - var t = this.closestPointToPointParameter( point, clampToLine ); - - if ( target === undefined ) { - - console.warn( 'THREE.Line3: .closestPointToPoint() target is now required' ); - target = new Vector3(); - - } - - return this.delta( target ).multiplyScalar( t ).add( this.start ); - - }, - - applyMatrix4: function ( matrix ) { - - this.start.applyMatrix4( matrix ); - this.end.applyMatrix4( matrix ); - - return this; - - }, - - equals: function ( line ) { - - return line.start.equals( this.start ) && line.end.equals( this.end ); - - } - - } ); - - /** - * @author alteredq / http://alteredqualia.com/ - */ - - function ImmediateRenderObject( material ) { - - Object3D.call( this ); - - this.material = material; - this.render = function ( /* renderCallback */ ) {}; - - } - - ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); - ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; - - ImmediateRenderObject.prototype.isImmediateRenderObject = true; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function VertexNormalsHelper( object, size, hex, linewidth ) { - - this.object = object; - - this.size = ( size !== undefined ) ? size : 1; - - var color = ( hex !== undefined ) ? hex : 0xff0000; - - var width = ( linewidth !== undefined ) ? linewidth : 1; - - // - - var nNormals = 0; - - var objGeometry = this.object.geometry; - - if ( objGeometry && objGeometry.isGeometry ) { - - nNormals = objGeometry.faces.length * 3; - - } else if ( objGeometry && objGeometry.isBufferGeometry ) { - - nNormals = objGeometry.attributes.normal.count; - - } - - // - - var geometry = new BufferGeometry(); - - var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); - - geometry.addAttribute( 'position', positions ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); - - // - - this.matrixAutoUpdate = false; - - this.update(); - - } - - VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); - VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; - - VertexNormalsHelper.prototype.update = ( function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - var normalMatrix = new Matrix3(); - - return function update() { - - var keys = [ 'a', 'b', 'c' ]; - - this.object.updateMatrixWorld( true ); - - normalMatrix.getNormalMatrix( this.object.matrixWorld ); - - var matrixWorld = this.object.matrixWorld; - - var position = this.geometry.attributes.position; - - // - - var objGeometry = this.object.geometry; - - if ( objGeometry && objGeometry.isGeometry ) { - - var vertices = objGeometry.vertices; - - var faces = objGeometry.faces; - - var idx = 0; - - for ( var i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { - - var vertex = vertices[ face[ keys[ j ] ] ]; - - var normal = face.vertexNormals[ j ]; - - v1.copy( vertex ).applyMatrix4( matrixWorld ); - - v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); - - position.setXYZ( idx, v1.x, v1.y, v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, v2.x, v2.y, v2.z ); - - idx = idx + 1; - - } - - } - - } else if ( objGeometry && objGeometry.isBufferGeometry ) { - - var objPos = objGeometry.attributes.position; - - var objNorm = objGeometry.attributes.normal; - - var idx = 0; - - // for simplicity, ignore index and drawcalls, and render every normal - - for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { - - v1.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); - - v2.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); - - v2.applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); - - position.setXYZ( idx, v1.x, v1.y, v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, v2.x, v2.y, v2.z ); - - idx = idx + 1; - - } - - } - - position.needsUpdate = true; - - }; - - }() ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function SpotLightHelper( light, color ) { - - Object3D.call( this ); - - this.light = light; - this.light.updateMatrixWorld(); - - this.matrix = light.matrixWorld; - this.matrixAutoUpdate = false; - - this.color = color; - - var geometry = new BufferGeometry(); - - var positions = [ - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 1, 0, 1, - 0, 0, 0, - 1, 0, 1, - 0, 0, 0, 0, 1, 1, - 0, 0, 0, 0, - 1, 1 - ]; - - for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { - - var p1 = ( i / l ) * Math.PI * 2; - var p2 = ( j / l ) * Math.PI * 2; - - positions.push( - Math.cos( p1 ), Math.sin( p1 ), 1, - Math.cos( p2 ), Math.sin( p2 ), 1 - ); - - } - - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - - var material = new LineBasicMaterial( { fog: false } ); - - this.cone = new LineSegments( geometry, material ); - this.add( this.cone ); - - this.update(); - - } - - SpotLightHelper.prototype = Object.create( Object3D.prototype ); - SpotLightHelper.prototype.constructor = SpotLightHelper; - - SpotLightHelper.prototype.dispose = function () { - - this.cone.geometry.dispose(); - this.cone.material.dispose(); - - }; - - SpotLightHelper.prototype.update = function () { - - var vector = new Vector3(); - - return function update() { - - this.light.updateMatrixWorld(); - - var coneLength = this.light.distance ? this.light.distance : 1000; - var coneWidth = coneLength * Math.tan( this.light.angle ); - - this.cone.scale.set( coneWidth, coneWidth, coneLength ); - - vector.setFromMatrixPosition( this.light.target.matrixWorld ); - - this.cone.lookAt( vector ); - - if ( this.color !== undefined ) { - - this.cone.material.color.set( this.color ); - - } else { - - this.cone.material.color.copy( this.light.color ); - - } - - }; - - }(); - - /** - * @author Sean Griffin / http://twitter.com/sgrif - * @author Michael Guerrero / http://realitymeltdown.com - * @author mrdoob / http://mrdoob.com/ - * @author ikerr / http://verold.com - * @author Mugen87 / https://github.com/Mugen87 - */ - - function getBoneList( object ) { - - var boneList = []; - - if ( object && object.isBone ) { - - boneList.push( object ); - - } - - for ( var i = 0; i < object.children.length; i ++ ) { - - boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); - - } - - return boneList; - - } - - function SkeletonHelper( object ) { - - var bones = getBoneList( object ); - - var geometry = new BufferGeometry(); - - var vertices = []; - var colors = []; - - var color1 = new Color( 0, 0, 1 ); - var color2 = new Color( 0, 1, 0 ); - - for ( var i = 0; i < bones.length; i ++ ) { - - var bone = bones[ i ]; - - if ( bone.parent && bone.parent.isBone ) { - - vertices.push( 0, 0, 0 ); - vertices.push( 0, 0, 0 ); - colors.push( color1.r, color1.g, color1.b ); - colors.push( color2.r, color2.g, color2.b ); - - } - - } - - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); - - LineSegments.call( this, geometry, material ); - - this.root = object; - this.bones = bones; - - this.matrix = object.matrixWorld; - this.matrixAutoUpdate = false; - - } - - SkeletonHelper.prototype = Object.create( LineSegments.prototype ); - SkeletonHelper.prototype.constructor = SkeletonHelper; - - SkeletonHelper.prototype.updateMatrixWorld = function () { - - var vector = new Vector3(); - - var boneMatrix = new Matrix4(); - var matrixWorldInv = new Matrix4(); - - return function updateMatrixWorld( force ) { - - var bones = this.bones; - - var geometry = this.geometry; - var position = geometry.getAttribute( 'position' ); - - matrixWorldInv.getInverse( this.root.matrixWorld ); - - for ( var i = 0, j = 0; i < bones.length; i ++ ) { - - var bone = bones[ i ]; - - if ( bone.parent && bone.parent.isBone ) { - - boneMatrix.multiplyMatrices( matrixWorldInv, bone.matrixWorld ); - vector.setFromMatrixPosition( boneMatrix ); - position.setXYZ( j, vector.x, vector.y, vector.z ); - - boneMatrix.multiplyMatrices( matrixWorldInv, bone.parent.matrixWorld ); - vector.setFromMatrixPosition( boneMatrix ); - position.setXYZ( j + 1, vector.x, vector.y, vector.z ); - - j += 2; - - } - - } - - geometry.getAttribute( 'position' ).needsUpdate = true; - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - }; - - }(); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - */ - - function PointLightHelper( light, sphereSize, color ) { - - this.light = light; - this.light.updateMatrixWorld(); - - this.color = color; - - var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); - var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); - - Mesh.call( this, geometry, material ); - - this.matrix = this.light.matrixWorld; - this.matrixAutoUpdate = false; - - this.update(); - - - /* - var distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 ); - var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); - - this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); - this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); - - var d = light.distance; - - if ( d === 0.0 ) { - - this.lightDistance.visible = false; - - } else { - - this.lightDistance.scale.set( d, d, d ); - - } - - this.add( this.lightDistance ); - */ - - } - - PointLightHelper.prototype = Object.create( Mesh.prototype ); - PointLightHelper.prototype.constructor = PointLightHelper; - - PointLightHelper.prototype.dispose = function () { - - this.geometry.dispose(); - this.material.dispose(); - - }; - - PointLightHelper.prototype.update = function () { - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - - } else { - - this.material.color.copy( this.light.color ); - - } - - /* - var d = this.light.distance; - - if ( d === 0.0 ) { - - this.lightDistance.visible = false; - - } else { - - this.lightDistance.visible = true; - this.lightDistance.scale.set( d, d, d ); - - } - */ - - }; - - /** - * @author abelnation / http://github.com/abelnation - * @author Mugen87 / http://github.com/Mugen87 - * @author WestLangley / http://github.com/WestLangley - * - * This helper must be added as a child of the light - */ - - function RectAreaLightHelper( light, color ) { - - this.type = 'RectAreaLightHelper'; - - this.light = light; - - this.color = color; // optional hardwired color for the helper - - var positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ]; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.computeBoundingSphere(); - - var material = new LineBasicMaterial( { fog: false } ); - - Line.call( this, geometry, material ); - - // - - var positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; - - var geometry2 = new BufferGeometry(); - geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); - geometry2.computeBoundingSphere(); - - this.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) ); - - this.update(); - - } - - RectAreaLightHelper.prototype = Object.create( Line.prototype ); - RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; - - RectAreaLightHelper.prototype.update = function () { - - this.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 ); - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - this.children[ 0 ].material.color.set( this.color ); - - } else { - - this.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity ); - - // prevent hue shift - var c = this.material.color; - var max = Math.max( c.r, c.g, c.b ); - if ( max > 1 ) c.multiplyScalar( 1 / max ); - - this.children[ 0 ].material.color.copy( this.material.color ); - - } - - }; - - RectAreaLightHelper.prototype.dispose = function () { - - this.geometry.dispose(); - this.material.dispose(); - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); - - }; - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / https://github.com/Mugen87 - */ - - function HemisphereLightHelper( light, size, color ) { - - Object3D.call( this ); - - this.light = light; - this.light.updateMatrixWorld(); - - this.matrix = light.matrixWorld; - this.matrixAutoUpdate = false; - - this.color = color; - - var geometry = new OctahedronBufferGeometry( size ); - geometry.rotateY( Math.PI * 0.5 ); - - this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); - if ( this.color === undefined ) this.material.vertexColors = VertexColors; - - var position = geometry.getAttribute( 'position' ); - var colors = new Float32Array( position.count * 3 ); - - geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); - - this.add( new Mesh( geometry, this.material ) ); - - this.update(); - - } - - HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); - HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; - - HemisphereLightHelper.prototype.dispose = function () { - - this.children[ 0 ].geometry.dispose(); - this.children[ 0 ].material.dispose(); - - }; - - HemisphereLightHelper.prototype.update = function () { - - var vector = new Vector3(); - - var color1 = new Color(); - var color2 = new Color(); - - return function update() { - - var mesh = this.children[ 0 ]; - - if ( this.color !== undefined ) { - - this.material.color.set( this.color ); - - } else { - - var colors = mesh.geometry.getAttribute( 'color' ); - - color1.copy( this.light.color ); - color2.copy( this.light.groundColor ); - - for ( var i = 0, l = colors.count; i < l; i ++ ) { - - var color = ( i < ( l / 2 ) ) ? color1 : color2; - - colors.setXYZ( i, color.r, color.g, color.b ); - - } - - colors.needsUpdate = true; - - } - - mesh.lookAt( vector.setFromMatrixPosition( this.light.matrixWorld ).negate() ); - - }; - - }(); - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function GridHelper( size, divisions, color1, color2 ) { - - size = size || 10; - divisions = divisions || 10; - color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); - color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); - - var center = divisions / 2; - var step = size / divisions; - var halfSize = size / 2; - - var vertices = [], colors = []; - - for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { - - vertices.push( - halfSize, 0, k, halfSize, 0, k ); - vertices.push( k, 0, - halfSize, k, 0, halfSize ); - - var color = i === center ? color1 : color2; - - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - color.toArray( colors, j ); j += 3; - - } - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); - - LineSegments.call( this, geometry, material ); - - } - - GridHelper.prototype = Object.create( LineSegments.prototype ); - GridHelper.prototype.constructor = GridHelper; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / http://github.com/Mugen87 - * @author Hectate / http://www.github.com/Hectate - */ - - function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { - - radius = radius || 10; - radials = radials || 16; - circles = circles || 8; - divisions = divisions || 64; - color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); - color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); - - var vertices = []; - var colors = []; - - var x, z; - var v, i, j, r, color; - - // create the radials - - for ( i = 0; i <= radials; i ++ ) { - - v = ( i / radials ) * ( Math.PI * 2 ); - - x = Math.sin( v ) * radius; - z = Math.cos( v ) * radius; - - vertices.push( 0, 0, 0 ); - vertices.push( x, 0, z ); - - color = ( i & 1 ) ? color1 : color2; - - colors.push( color.r, color.g, color.b ); - colors.push( color.r, color.g, color.b ); - - } - - // create the circles - - for ( i = 0; i <= circles; i ++ ) { - - color = ( i & 1 ) ? color1 : color2; - - r = radius - ( radius / circles * i ); - - for ( j = 0; j < divisions; j ++ ) { - - // first vertex - - v = ( j / divisions ) * ( Math.PI * 2 ); - - x = Math.sin( v ) * r; - z = Math.cos( v ) * r; - - vertices.push( x, 0, z ); - colors.push( color.r, color.g, color.b ); - - // second vertex - - v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); - - x = Math.sin( v ) * r; - z = Math.cos( v ) * r; - - vertices.push( x, 0, z ); - colors.push( color.r, color.g, color.b ); - - } - - } - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); - - LineSegments.call( this, geometry, material ); - - } - - PolarGridHelper.prototype = Object.create( LineSegments.prototype ); - PolarGridHelper.prototype.constructor = PolarGridHelper; - - /** - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function FaceNormalsHelper( object, size, hex, linewidth ) { - - // FaceNormalsHelper only supports THREE.Geometry - - this.object = object; - - this.size = ( size !== undefined ) ? size : 1; - - var color = ( hex !== undefined ) ? hex : 0xffff00; - - var width = ( linewidth !== undefined ) ? linewidth : 1; - - // - - var nNormals = 0; - - var objGeometry = this.object.geometry; - - if ( objGeometry && objGeometry.isGeometry ) { - - nNormals = objGeometry.faces.length; - - } else { - - console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); - - } - - // - - var geometry = new BufferGeometry(); - - var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); - - geometry.addAttribute( 'position', positions ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); - - // - - this.matrixAutoUpdate = false; - this.update(); - - } - - FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); - FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; - - FaceNormalsHelper.prototype.update = ( function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - var normalMatrix = new Matrix3(); - - return function update() { - - this.object.updateMatrixWorld( true ); - - normalMatrix.getNormalMatrix( this.object.matrixWorld ); - - var matrixWorld = this.object.matrixWorld; - - var position = this.geometry.attributes.position; - - // - - var objGeometry = this.object.geometry; - - var vertices = objGeometry.vertices; - - var faces = objGeometry.faces; - - var idx = 0; - - for ( var i = 0, l = faces.length; i < l; i ++ ) { - - var face = faces[ i ]; - - var normal = face.normal; - - v1.copy( vertices[ face.a ] ) - .add( vertices[ face.b ] ) - .add( vertices[ face.c ] ) - .divideScalar( 3 ) - .applyMatrix4( matrixWorld ); - - v2.copy( normal ).applyMatrix3( normalMatrix ).normalize().multiplyScalar( this.size ).add( v1 ); - - position.setXYZ( idx, v1.x, v1.y, v1.z ); - - idx = idx + 1; - - position.setXYZ( idx, v2.x, v2.y, v2.z ); - - idx = idx + 1; - - } - - position.needsUpdate = true; - - }; - - }() ); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author mrdoob / http://mrdoob.com/ - * @author WestLangley / http://github.com/WestLangley - */ - - function DirectionalLightHelper( light, size, color ) { - - Object3D.call( this ); - - this.light = light; - this.light.updateMatrixWorld(); - - this.matrix = light.matrixWorld; - this.matrixAutoUpdate = false; - - this.color = color; - - if ( size === undefined ) size = 1; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( [ - - size, size, 0, - size, size, 0, - size, - size, 0, - - size, - size, 0, - - size, size, 0 - ], 3 ) ); - - var material = new LineBasicMaterial( { fog: false } ); - - this.lightPlane = new Line( geometry, material ); - this.add( this.lightPlane ); - - geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); - - this.targetLine = new Line( geometry, material ); - this.add( this.targetLine ); - - this.update(); - - } - - DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); - DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; - - DirectionalLightHelper.prototype.dispose = function () { - - this.lightPlane.geometry.dispose(); - this.lightPlane.material.dispose(); - this.targetLine.geometry.dispose(); - this.targetLine.material.dispose(); - - }; - - DirectionalLightHelper.prototype.update = function () { - - var v1 = new Vector3(); - var v2 = new Vector3(); - var v3 = new Vector3(); - - return function update() { - - v1.setFromMatrixPosition( this.light.matrixWorld ); - v2.setFromMatrixPosition( this.light.target.matrixWorld ); - v3.subVectors( v2, v1 ); - - this.lightPlane.lookAt( v2 ); - - if ( this.color !== undefined ) { - - this.lightPlane.material.color.set( this.color ); - this.targetLine.material.color.set( this.color ); - - } else { - - this.lightPlane.material.color.copy( this.light.color ); - this.targetLine.material.color.copy( this.light.color ); - - } - - this.targetLine.lookAt( v2 ); - this.targetLine.scale.z = v3.length(); - - }; - - }(); - - /** - * @author alteredq / http://alteredqualia.com/ - * @author Mugen87 / https://github.com/Mugen87 - * - * - shows frustum, line of sight and up of the camera - * - suitable for fast updates - * - based on frustum visualization in lightgl.js shadowmap example - * http://evanw.github.com/lightgl.js/tests/shadowmap.html - */ - - function CameraHelper( camera ) { - - var geometry = new BufferGeometry(); - var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); - - var vertices = []; - var colors = []; - - var pointMap = {}; - - // colors - - var colorFrustum = new Color( 0xffaa00 ); - var colorCone = new Color( 0xff0000 ); - var colorUp = new Color( 0x00aaff ); - var colorTarget = new Color( 0xffffff ); - var colorCross = new Color( 0x333333 ); - - // near - - addLine( 'n1', 'n2', colorFrustum ); - addLine( 'n2', 'n4', colorFrustum ); - addLine( 'n4', 'n3', colorFrustum ); - addLine( 'n3', 'n1', colorFrustum ); - - // far - - addLine( 'f1', 'f2', colorFrustum ); - addLine( 'f2', 'f4', colorFrustum ); - addLine( 'f4', 'f3', colorFrustum ); - addLine( 'f3', 'f1', colorFrustum ); - - // sides - - addLine( 'n1', 'f1', colorFrustum ); - addLine( 'n2', 'f2', colorFrustum ); - addLine( 'n3', 'f3', colorFrustum ); - addLine( 'n4', 'f4', colorFrustum ); - - // cone - - addLine( 'p', 'n1', colorCone ); - addLine( 'p', 'n2', colorCone ); - addLine( 'p', 'n3', colorCone ); - addLine( 'p', 'n4', colorCone ); - - // up - - addLine( 'u1', 'u2', colorUp ); - addLine( 'u2', 'u3', colorUp ); - addLine( 'u3', 'u1', colorUp ); - - // target - - addLine( 'c', 't', colorTarget ); - addLine( 'p', 'c', colorCross ); - - // cross - - addLine( 'cn1', 'cn2', colorCross ); - addLine( 'cn3', 'cn4', colorCross ); - - addLine( 'cf1', 'cf2', colorCross ); - addLine( 'cf3', 'cf4', colorCross ); - - function addLine( a, b, color ) { - - addPoint( a, color ); - addPoint( b, color ); - - } - - function addPoint( id, color ) { - - vertices.push( 0, 0, 0 ); - colors.push( color.r, color.g, color.b ); - - if ( pointMap[ id ] === undefined ) { - - pointMap[ id ] = []; - - } - - pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); - - } - - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - LineSegments.call( this, geometry, material ); - - this.camera = camera; - if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix(); - - this.matrix = camera.matrixWorld; - this.matrixAutoUpdate = false; - - this.pointMap = pointMap; - - this.update(); - - } - - CameraHelper.prototype = Object.create( LineSegments.prototype ); - CameraHelper.prototype.constructor = CameraHelper; - - CameraHelper.prototype.update = function () { - - var geometry, pointMap; - - var vector = new Vector3(); - var camera = new Camera(); - - function setPoint( point, x, y, z ) { - - vector.set( x, y, z ).unproject( camera ); - - var points = pointMap[ point ]; - - if ( points !== undefined ) { - - var position = geometry.getAttribute( 'position' ); - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - position.setXYZ( points[ i ], vector.x, vector.y, vector.z ); - - } - - } - - } - - return function update() { - - geometry = this.geometry; - pointMap = this.pointMap; - - var w = 1, h = 1; - - // we need just camera projection matrix - // world matrix must be identity - - camera.projectionMatrix.copy( this.camera.projectionMatrix ); - - // center / target - - setPoint( 'c', 0, 0, - 1 ); - setPoint( 't', 0, 0, 1 ); - - // near - - setPoint( 'n1', - w, - h, - 1 ); - setPoint( 'n2', w, - h, - 1 ); - setPoint( 'n3', - w, h, - 1 ); - setPoint( 'n4', w, h, - 1 ); - - // far - - setPoint( 'f1', - w, - h, 1 ); - setPoint( 'f2', w, - h, 1 ); - setPoint( 'f3', - w, h, 1 ); - setPoint( 'f4', w, h, 1 ); - - // up - - setPoint( 'u1', w * 0.7, h * 1.1, - 1 ); - setPoint( 'u2', - w * 0.7, h * 1.1, - 1 ); - setPoint( 'u3', 0, h * 2, - 1 ); - - // cross - - setPoint( 'cf1', - w, 0, 1 ); - setPoint( 'cf2', w, 0, 1 ); - setPoint( 'cf3', 0, - h, 1 ); - setPoint( 'cf4', 0, h, 1 ); - - setPoint( 'cn1', - w, 0, - 1 ); - setPoint( 'cn2', w, 0, - 1 ); - setPoint( 'cn3', 0, - h, - 1 ); - setPoint( 'cn4', 0, h, - 1 ); - - geometry.getAttribute( 'position' ).needsUpdate = true; - - }; - - }(); - - /** - * @author mrdoob / http://mrdoob.com/ - * @author Mugen87 / http://github.com/Mugen87 - */ - - function BoxHelper( object, color ) { - - this.object = object; - - if ( color === undefined ) color = 0xffff00; - - var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - var positions = new Float32Array( 8 * 3 ); - - var geometry = new BufferGeometry(); - geometry.setIndex( new BufferAttribute( indices, 1 ) ); - geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); - - this.matrixAutoUpdate = false; - - this.update(); - - } - - BoxHelper.prototype = Object.create( LineSegments.prototype ); - BoxHelper.prototype.constructor = BoxHelper; - - BoxHelper.prototype.update = ( function () { - - var box = new Box3(); - - return function update( object ) { - - if ( object !== undefined ) { - - console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); - - } - - if ( this.object !== undefined ) { - - box.setFromObject( this.object ); - - } - - if ( box.isEmpty() ) return; - - var min = box.min; - var max = box.max; - - /* - 5____4 - 1/___0/| - | 6__|_7 - 2/___3/ - - 0: max.x, max.y, max.z - 1: min.x, max.y, max.z - 2: min.x, min.y, max.z - 3: max.x, min.y, max.z - 4: max.x, max.y, min.z - 5: min.x, max.y, min.z - 6: min.x, min.y, min.z - 7: max.x, min.y, min.z - */ - - var position = this.geometry.attributes.position; - var array = position.array; - - array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; - array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; - array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; - array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; - array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; - array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; - array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; - array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; - - position.needsUpdate = true; - - this.geometry.computeBoundingSphere(); - - }; - - } )(); - - BoxHelper.prototype.setFromObject = function ( object ) { - - this.object = object; - this.update(); - - return this; - - }; - - BoxHelper.prototype.copy = function ( source ) { - - LineSegments.prototype.copy.call( this, source ); - - this.object = source.object; - - return this; - - }; - - BoxHelper.prototype.clone = function () { - - return new this.constructor().copy( this ); - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function Box3Helper( box, hex ) { - - this.type = 'Box3Helper'; - - this.box = box; - - var color = ( hex !== undefined ) ? hex : 0xffff00; - - var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); - - var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; - - var geometry = new BufferGeometry(); - - geometry.setIndex( new BufferAttribute( indices, 1 ) ); - - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - - LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); - - this.geometry.computeBoundingSphere(); - - } - - Box3Helper.prototype = Object.create( LineSegments.prototype ); - Box3Helper.prototype.constructor = Box3Helper; - - Box3Helper.prototype.updateMatrixWorld = function ( force ) { - - var box = this.box; - - if ( box.isEmpty() ) return; - - box.getCenter( this.position ); - - box.getSize( this.scale ); - - this.scale.multiplyScalar( 0.5 ); - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - */ - - function PlaneHelper( plane, size, hex ) { - - this.type = 'PlaneHelper'; - - this.plane = plane; - - this.size = ( size === undefined ) ? 1 : size; - - var color = ( hex !== undefined ) ? hex : 0xffff00; - - var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); - geometry.computeBoundingSphere(); - - Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); - - // - - var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; - - var geometry2 = new BufferGeometry(); - geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); - geometry2.computeBoundingSphere(); - - this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); - - } - - PlaneHelper.prototype = Object.create( Line.prototype ); - PlaneHelper.prototype.constructor = PlaneHelper; - - PlaneHelper.prototype.updateMatrixWorld = function ( force ) { - - var scale = - this.plane.constant; - - if ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter - - this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); - - this.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here - - this.lookAt( this.plane.normal ); - - Object3D.prototype.updateMatrixWorld.call( this, force ); - - }; - - /** - * @author WestLangley / http://github.com/WestLangley - * @author zz85 / http://github.com/zz85 - * @author bhouston / http://clara.io - * - * Creates an arrow for visualizing directions - * - * Parameters: - * dir - Vector3 - * origin - Vector3 - * length - Number - * color - color in hex value - * headLength - Number - * headWidth - Number - */ - - var lineGeometry, coneGeometry; - - function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { - - // dir is assumed to be normalized - - Object3D.call( this ); - - if ( dir === undefined ) dir = new Vector3( 0, 0, 1 ); - if ( origin === undefined ) origin = new Vector3( 0, 0, 0 ); - if ( length === undefined ) length = 1; - if ( color === undefined ) color = 0xffff00; - if ( headLength === undefined ) headLength = 0.2 * length; - if ( headWidth === undefined ) headWidth = 0.2 * headLength; - - if ( lineGeometry === undefined ) { - - lineGeometry = new BufferGeometry(); - lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); - - coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); - coneGeometry.translate( 0, - 0.5, 0 ); - - } - - this.position.copy( origin ); - - this.line = new Line( lineGeometry, new LineBasicMaterial( { color: color } ) ); - this.line.matrixAutoUpdate = false; - this.add( this.line ); - - this.cone = new Mesh( coneGeometry, new MeshBasicMaterial( { color: color } ) ); - this.cone.matrixAutoUpdate = false; - this.add( this.cone ); - - this.setDirection( dir ); - this.setLength( length, headLength, headWidth ); - - } - - ArrowHelper.prototype = Object.create( Object3D.prototype ); - ArrowHelper.prototype.constructor = ArrowHelper; - - ArrowHelper.prototype.setDirection = ( function () { - - var axis = new Vector3(); - var radians; - - return function setDirection( dir ) { - - // dir is assumed to be normalized - - if ( dir.y > 0.99999 ) { - - this.quaternion.set( 0, 0, 0, 1 ); - - } else if ( dir.y < - 0.99999 ) { - - this.quaternion.set( 1, 0, 0, 0 ); - - } else { - - axis.set( dir.z, 0, - dir.x ).normalize(); - - radians = Math.acos( dir.y ); - - this.quaternion.setFromAxisAngle( axis, radians ); - - } - - }; - - }() ); - - ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { - - if ( headLength === undefined ) headLength = 0.2 * length; - if ( headWidth === undefined ) headWidth = 0.2 * headLength; - - this.line.scale.set( 1, Math.max( 0, length - headLength ), 1 ); - this.line.updateMatrix(); - - this.cone.scale.set( headWidth, headLength, headWidth ); - this.cone.position.y = length; - this.cone.updateMatrix(); - - }; - - ArrowHelper.prototype.setColor = function ( color ) { - - this.line.material.color.copy( color ); - this.cone.material.color.copy( color ); - - }; - - ArrowHelper.prototype.copy = function ( source ) { - - Object3D.prototype.copy.call( this, source, false ); - - this.line.copy( source.line ); - this.cone.copy( source.cone ); - - return this; - - }; - - ArrowHelper.prototype.clone = function () { - - return new this.constructor().copy( this ); - - }; - - /** - * @author sroucheray / http://sroucheray.org/ - * @author mrdoob / http://mrdoob.com/ - */ - - function AxesHelper( size ) { - - size = size || 1; - - var vertices = [ - 0, 0, 0, size, 0, 0, - 0, 0, 0, 0, size, 0, - 0, 0, 0, 0, 0, size - ]; - - var colors = [ - 1, 0, 0, 1, 0.6, 0, - 0, 1, 0, 0.6, 1, 0, - 0, 0, 1, 0, 0.6, 1 - ]; - - var geometry = new BufferGeometry(); - geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); - geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); - - var material = new LineBasicMaterial( { vertexColors: VertexColors } ); - - LineSegments.call( this, geometry, material ); - - } - - AxesHelper.prototype = Object.create( LineSegments.prototype ); - AxesHelper.prototype.constructor = AxesHelper; - - /** - * @author mrdoob / http://mrdoob.com/ - */ - - function Face4( a, b, c, d, normal, color, materialIndex ) { - - console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); - return new Face3( a, b, c, normal, color, materialIndex ); - - } - - var LineStrip = 0; - - var LinePieces = 1; - - function MeshFaceMaterial( materials ) { - - console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); - return materials; - - } - - function MultiMaterial( materials ) { - - if ( materials === undefined ) materials = []; - - console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); - materials.isMultiMaterial = true; - materials.materials = materials; - materials.clone = function () { - - return materials.slice(); - - }; - return materials; - - } - - function PointCloud( geometry, material ) { - - console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); - return new Points( geometry, material ); - - } - - function Particle( material ) { - - console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); - return new Sprite( material ); - - } - - function ParticleSystem( geometry, material ) { - - console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); - return new Points( geometry, material ); - - } - - function PointCloudMaterial( parameters ) { - - console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); - - } - - function ParticleBasicMaterial( parameters ) { - - console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); - - } - - function ParticleSystemMaterial( parameters ) { - - console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); - return new PointsMaterial( parameters ); - - } - - function Vertex( x, y, z ) { - - console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); - return new Vector3( x, y, z ); - - } - - // - - function DynamicBufferAttribute( array, itemSize ) { - - console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); - return new BufferAttribute( array, itemSize ).setDynamic( true ); - - } - - function Int8Attribute( array, itemSize ) { - - console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); - return new Int8BufferAttribute( array, itemSize ); - - } - - function Uint8Attribute( array, itemSize ) { - - console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); - return new Uint8BufferAttribute( array, itemSize ); - - } - - function Uint8ClampedAttribute( array, itemSize ) { - - console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); - return new Uint8ClampedBufferAttribute( array, itemSize ); - - } - - function Int16Attribute( array, itemSize ) { - - console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); - return new Int16BufferAttribute( array, itemSize ); - - } - - function Uint16Attribute( array, itemSize ) { - - console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); - return new Uint16BufferAttribute( array, itemSize ); - - } - - function Int32Attribute( array, itemSize ) { - - console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); - return new Int32BufferAttribute( array, itemSize ); - - } - - function Uint32Attribute( array, itemSize ) { - - console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); - return new Uint32BufferAttribute( array, itemSize ); - - } - - function Float32Attribute( array, itemSize ) { - - console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); - return new Float32BufferAttribute( array, itemSize ); - - } - - function Float64Attribute( array, itemSize ) { - - console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); - return new Float64BufferAttribute( array, itemSize ); - - } - - // - - Curve.create = function ( construct, getPoint ) { - - console.log( 'THREE.Curve.create() has been deprecated' ); - - construct.prototype = Object.create( Curve.prototype ); - construct.prototype.constructor = construct; - construct.prototype.getPoint = getPoint; - - return construct; - - }; - - // - - Object.assign( CurvePath.prototype, { - - createPointsGeometry: function ( divisions ) { - - console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); - - // generate geometry from path points (for Line or Points objects) - - var pts = this.getPoints( divisions ); - return this.createGeometry( pts ); - - }, - - createSpacedPointsGeometry: function ( divisions ) { - - console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); - - // generate geometry from equidistant sampling along the path - - var pts = this.getSpacedPoints( divisions ); - return this.createGeometry( pts ); - - }, - - createGeometry: function ( points ) { - - console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); - - var geometry = new Geometry(); - - for ( var i = 0, l = points.length; i < l; i ++ ) { - - var point = points[ i ]; - geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); - - } - - return geometry; - - } - - } ); - - // - - Object.assign( Path.prototype, { - - fromPoints: function ( points ) { - - console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); - this.setFromPoints( points ); - - } - - } ); - - // - - function ClosedSplineCurve3( points ) { - - console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); - - CatmullRomCurve3.call( this, points ); - this.type = 'catmullrom'; - this.closed = true; - - } - - ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); - - // - - function SplineCurve3( points ) { - - console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); - - CatmullRomCurve3.call( this, points ); - this.type = 'catmullrom'; - - } - - SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); - - // - - function Spline( points ) { - - console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); - - CatmullRomCurve3.call( this, points ); - this.type = 'catmullrom'; - - } - - Spline.prototype = Object.create( CatmullRomCurve3.prototype ); - - Object.assign( Spline.prototype, { - - initFromArray: function ( /* a */ ) { - - console.error( 'THREE.Spline: .initFromArray() has been removed.' ); - - }, - getControlPointsArray: function ( /* optionalTarget */ ) { - - console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); - - }, - reparametrizeByArcLength: function ( /* samplingCoef */ ) { - - console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); - - } - - } ); - - // - - function AxisHelper( size ) { - - console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); - return new AxesHelper( size ); - - } - - function BoundingBoxHelper( object, color ) { - - console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); - return new BoxHelper( object, color ); - - } - - function EdgesHelper( object, hex ) { - - console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); - return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); - - } - - GridHelper.prototype.setColors = function () { - - console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); - - }; - - SkeletonHelper.prototype.update = function () { - - console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); - - }; - - function WireframeHelper( object, hex ) { - - console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); - return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); - - } - - // - - Object.assign( Loader.prototype, { - - extractUrlBase: function ( url ) { - - console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); - return LoaderUtils.extractUrlBase( url ); - - } - - } ); - - function XHRLoader( manager ) { - - console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); - return new FileLoader( manager ); - - } - - function BinaryTextureLoader( manager ) { - - console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); - return new DataTextureLoader( manager ); - - } - - Object.assign( ObjectLoader.prototype, { - - setTexturePath: function ( value ) { - - console.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' ); - return this.setResourcePath( value ); - - } - - } ); - - // - - Object.assign( Box2.prototype, { - - center: function ( optionalTarget ) { - - console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); - - }, - empty: function () { - - console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); - return this.isEmpty(); - - }, - isIntersectionBox: function ( box ) { - - console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); - - }, - size: function ( optionalTarget ) { - - console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); - return this.getSize( optionalTarget ); - - } - } ); - - Object.assign( Box3.prototype, { - - center: function ( optionalTarget ) { - - console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); - - }, - empty: function () { - - console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); - return this.isEmpty(); - - }, - isIntersectionBox: function ( box ) { - - console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); - - }, - isIntersectionSphere: function ( sphere ) { - - console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); - return this.intersectsSphere( sphere ); - - }, - size: function ( optionalTarget ) { - - console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); - return this.getSize( optionalTarget ); - - } - } ); - - Line3.prototype.center = function ( optionalTarget ) { - - console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); - return this.getCenter( optionalTarget ); - - }; - - Object.assign( _Math, { - - random16: function () { - - console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); - return Math.random(); - - }, - - nearestPowerOfTwo: function ( value ) { - - console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); - return _Math.floorPowerOfTwo( value ); - - }, - - nextPowerOfTwo: function ( value ) { - - console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); - return _Math.ceilPowerOfTwo( value ); - - } - - } ); - - Object.assign( Matrix3.prototype, { - - flattenToArrayOffset: function ( array, offset ) { - - console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); - return this.toArray( array, offset ); - - }, - multiplyVector3: function ( vector ) { - - console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); - return vector.applyMatrix3( this ); - - }, - multiplyVector3Array: function ( /* a */ ) { - - console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); - - }, - applyToBuffer: function ( buffer /*, offset, length */ ) { - - console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); - return this.applyToBufferAttribute( buffer ); - - }, - applyToVector3Array: function ( /* array, offset, length */ ) { - - console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); - - } - - } ); - - Object.assign( Matrix4.prototype, { - - extractPosition: function ( m ) { - - console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); - return this.copyPosition( m ); - - }, - flattenToArrayOffset: function ( array, offset ) { - - console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); - return this.toArray( array, offset ); - - }, - getPosition: function () { - - var v1; - - return function getPosition() { - - if ( v1 === undefined ) v1 = new Vector3(); - console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); - return v1.setFromMatrixColumn( this, 3 ); - - }; - - }(), - setRotationFromQuaternion: function ( q ) { - - console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); - return this.makeRotationFromQuaternion( q ); - - }, - multiplyToArray: function () { - - console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); - - }, - multiplyVector3: function ( vector ) { - - console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); - - }, - multiplyVector4: function ( vector ) { - - console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); - - }, - multiplyVector3Array: function ( /* a */ ) { - - console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); - - }, - rotateAxis: function ( v ) { - - console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); - v.transformDirection( this ); - - }, - crossVector: function ( vector ) { - - console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); - return vector.applyMatrix4( this ); - - }, - translate: function () { - - console.error( 'THREE.Matrix4: .translate() has been removed.' ); - - }, - rotateX: function () { - - console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); - - }, - rotateY: function () { - - console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); - - }, - rotateZ: function () { - - console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); - - }, - rotateByAxis: function () { - - console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); - - }, - applyToBuffer: function ( buffer /*, offset, length */ ) { - - console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); - return this.applyToBufferAttribute( buffer ); - - }, - applyToVector3Array: function ( /* array, offset, length */ ) { - - console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); - - }, - makeFrustum: function ( left, right, bottom, top, near, far ) { - - console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); - return this.makePerspective( left, right, top, bottom, near, far ); - - } - - } ); - - Plane.prototype.isIntersectionLine = function ( line ) { - - console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); - return this.intersectsLine( line ); - - }; - - Quaternion.prototype.multiplyVector3 = function ( vector ) { - - console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); - return vector.applyQuaternion( this ); - - }; - - Object.assign( Ray.prototype, { - - isIntersectionBox: function ( box ) { - - console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); - return this.intersectsBox( box ); - - }, - isIntersectionPlane: function ( plane ) { - - console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); - return this.intersectsPlane( plane ); - - }, - isIntersectionSphere: function ( sphere ) { - - console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); - return this.intersectsSphere( sphere ); - - } - - } ); - - Object.assign( Triangle.prototype, { - - area: function () { - - console.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' ); - return this.getArea(); - - }, - barycoordFromPoint: function ( point, target ) { - - console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); - return this.getBarycoord( point, target ); - - }, - midpoint: function ( target ) { - - console.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' ); - return this.getMidpoint( target ); - - }, - normal: function ( target ) { - - console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); - return this.getNormal( target ); - - }, - plane: function ( target ) { - - console.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' ); - return this.getPlane( target ); - - } - - } ); - - Object.assign( Triangle, { - - barycoordFromPoint: function ( point, a, b, c, target ) { - - console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); - return Triangle.getBarycoord( point, a, b, c, target ); - - }, - normal: function ( a, b, c, target ) { - - console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); - return Triangle.getNormal( a, b, c, target ); - - } - - } ); - - Object.assign( Shape.prototype, { - - extractAllPoints: function ( divisions ) { - - console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); - return this.extractPoints( divisions ); - - }, - extrude: function ( options ) { - - console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); - return new ExtrudeGeometry( this, options ); - - }, - makeGeometry: function ( options ) { - - console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); - return new ShapeGeometry( this, options ); - - } - - } ); - - Object.assign( Vector2.prototype, { - - fromAttribute: function ( attribute, index, offset ) { - - console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); - - }, - distanceToManhattan: function ( v ) { - - console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); - return this.manhattanDistanceTo( v ); - - }, - lengthManhattan: function () { - - console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); - return this.manhattanLength(); - - } - - } ); - - Object.assign( Vector3.prototype, { - - setEulerFromRotationMatrix: function () { - - console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); - - }, - setEulerFromQuaternion: function () { - - console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); - - }, - getPositionFromMatrix: function ( m ) { - - console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); - return this.setFromMatrixPosition( m ); - - }, - getScaleFromMatrix: function ( m ) { - - console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); - return this.setFromMatrixScale( m ); - - }, - getColumnFromMatrix: function ( index, matrix ) { - - console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); - return this.setFromMatrixColumn( matrix, index ); - - }, - applyProjection: function ( m ) { - - console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); - return this.applyMatrix4( m ); - - }, - fromAttribute: function ( attribute, index, offset ) { - - console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); - - }, - distanceToManhattan: function ( v ) { - - console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); - return this.manhattanDistanceTo( v ); - - }, - lengthManhattan: function () { - - console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); - return this.manhattanLength(); - - } - - } ); - - Object.assign( Vector4.prototype, { - - fromAttribute: function ( attribute, index, offset ) { - - console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); - return this.fromBufferAttribute( attribute, index, offset ); - - }, - lengthManhattan: function () { - - console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); - return this.manhattanLength(); - - } - - } ); - - // - - Object.assign( Geometry.prototype, { - - computeTangents: function () { - - console.error( 'THREE.Geometry: .computeTangents() has been removed.' ); - - }, - computeLineDistances: function () { - - console.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' ); - - } - - } ); - - Object.assign( Object3D.prototype, { - - getChildByName: function ( name ) { - - console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); - return this.getObjectByName( name ); - - }, - renderDepth: function () { - - console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); - - }, - translate: function ( distance, axis ) { - - console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); - return this.translateOnAxis( axis, distance ); - - }, - getWorldRotation: function () { - - console.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' ); - - } - - } ); - - Object.defineProperties( Object3D.prototype, { - - eulerOrder: { - get: function () { - - console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); - return this.rotation.order; - - }, - set: function ( value ) { - - console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); - this.rotation.order = value; - - } - }, - useQuaternion: { - get: function () { - - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); - - }, - set: function () { - - console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); - - } - } - - } ); - - Object.defineProperties( LOD.prototype, { - - objects: { - get: function () { - - console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); - return this.levels; - - } - } - - } ); - - Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { - - get: function () { - - console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); - - }, - set: function () { - - console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); - - } - - } ); - - SkinnedMesh.prototype.initBones = function () { - - console.error( 'THREE.SkinnedMesh: initBones() has been removed.' ); - - }; - - Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { - - get: function () { - - console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); - return this.arcLengthDivisions; - - }, - set: function ( value ) { - - console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); - this.arcLengthDivisions = value; - - } - - } ); - - // - - PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { - - console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + - "Use .setFocalLength and .filmGauge for a photographic setup." ); - - if ( filmGauge !== undefined ) this.filmGauge = filmGauge; - this.setFocalLength( focalLength ); - - }; - - // - - Object.defineProperties( Light.prototype, { - onlyShadow: { - set: function () { - - console.warn( 'THREE.Light: .onlyShadow has been removed.' ); - - } - }, - shadowCameraFov: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); - this.shadow.camera.fov = value; - - } - }, - shadowCameraLeft: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); - this.shadow.camera.left = value; - - } - }, - shadowCameraRight: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); - this.shadow.camera.right = value; - - } - }, - shadowCameraTop: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); - this.shadow.camera.top = value; - - } - }, - shadowCameraBottom: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); - this.shadow.camera.bottom = value; - - } - }, - shadowCameraNear: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); - this.shadow.camera.near = value; - - } - }, - shadowCameraFar: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); - this.shadow.camera.far = value; - - } - }, - shadowCameraVisible: { - set: function () { - - console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); - - } - }, - shadowBias: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); - this.shadow.bias = value; - - } - }, - shadowDarkness: { - set: function () { - - console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); - - } - }, - shadowMapWidth: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); - this.shadow.mapSize.width = value; - - } - }, - shadowMapHeight: { - set: function ( value ) { - - console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); - this.shadow.mapSize.height = value; - - } - } - } ); - - // - - Object.defineProperties( BufferAttribute.prototype, { - - length: { - get: function () { - - console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); - return this.array.length; - - } - }, - copyIndicesArray: function ( /* indices */ ) { - - console.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' ); - - } - - } ); - - Object.assign( BufferGeometry.prototype, { - - addIndex: function ( index ) { - - console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); - this.setIndex( index ); - - }, - addDrawCall: function ( start, count, indexOffset ) { - - if ( indexOffset !== undefined ) { - - console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); - - } - console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); - this.addGroup( start, count ); - - }, - clearDrawCalls: function () { - - console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); - this.clearGroups(); - - }, - computeTangents: function () { - - console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); - - }, - computeOffsets: function () { - - console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); - - } - - } ); - - Object.defineProperties( BufferGeometry.prototype, { - - drawcalls: { - get: function () { - - console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); - return this.groups; - - } - }, - offsets: { - get: function () { - - console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); - return this.groups; - - } - } - - } ); - - // - - Object.assign( ExtrudeBufferGeometry.prototype, { - - getArrays: function () { - - console.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' ); - - }, - - addShapeList: function () { - - console.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' ); - - }, - - addShape: function () { - - console.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' ); - - } - - } ); - - // - - Object.defineProperties( Uniform.prototype, { - - dynamic: { - set: function () { - - console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); - - } - }, - onUpdate: { - value: function () { - - console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); - return this; - - } - } - - } ); - - // - - Object.defineProperties( Material.prototype, { - - wrapAround: { - get: function () { - - console.warn( 'THREE.Material: .wrapAround has been removed.' ); - - }, - set: function () { - - console.warn( 'THREE.Material: .wrapAround has been removed.' ); - - } - }, - - overdraw: { - get: function () { - - console.warn( 'THREE.Material: .overdraw has been removed.' ); - - }, - set: function () { - - console.warn( 'THREE.Material: .overdraw has been removed.' ); - - } - }, - - wrapRGB: { - get: function () { - - console.warn( 'THREE.Material: .wrapRGB has been removed.' ); - return new Color(); - - } - }, - - shading: { - get: function () { - - console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - - }, - set: function ( value ) { - - console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); - this.flatShading = ( value === FlatShading ); - - } - } - - } ); - - Object.defineProperties( MeshPhongMaterial.prototype, { - - metal: { - get: function () { - - console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); - return false; - - }, - set: function () { - - console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); - - } - } - - } ); - - Object.defineProperties( ShaderMaterial.prototype, { - - derivatives: { - get: function () { - - console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); - return this.extensions.derivatives; - - }, - set: function ( value ) { - - console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); - this.extensions.derivatives = value; - - } - } - - } ); - - // - - Object.assign( WebGLRenderer.prototype, { - - clearTarget: function ( renderTarget, color, depth, stencil ) { - - console.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' ); - this.setRenderTarget( renderTarget ); - this.clear( color, depth, stencil ); - - }, - - animate: function ( callback ) { - - console.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' ); - this.setAnimationLoop( callback ); - - }, - - getCurrentRenderTarget: function () { - - console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); - return this.getRenderTarget(); - - }, - - getMaxAnisotropy: function () { - - console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); - return this.capabilities.getMaxAnisotropy(); - - }, - - getPrecision: function () { - - console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); - return this.capabilities.precision; - - }, - - resetGLState: function () { - - console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); - return this.state.reset(); - - }, - - supportsFloatTextures: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); - return this.extensions.get( 'OES_texture_float' ); - - }, - supportsHalfFloatTextures: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); - return this.extensions.get( 'OES_texture_half_float' ); - - }, - supportsStandardDerivatives: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); - return this.extensions.get( 'OES_standard_derivatives' ); - - }, - supportsCompressedTextureS3TC: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); - return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); - - }, - supportsCompressedTexturePVRTC: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); - return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); - - }, - supportsBlendMinMax: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); - return this.extensions.get( 'EXT_blend_minmax' ); - - }, - supportsVertexTextures: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); - return this.capabilities.vertexTextures; - - }, - supportsInstancedArrays: function () { - - console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); - return this.extensions.get( 'ANGLE_instanced_arrays' ); - - }, - enableScissorTest: function ( boolean ) { - - console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); - this.setScissorTest( boolean ); - - }, - initMaterial: function () { - - console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); - - }, - addPrePlugin: function () { - - console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); - - }, - addPostPlugin: function () { - - console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); - - }, - updateShadowMap: function () { - - console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); - - }, - setFaceCulling: function () { - - console.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' ); - - } - - } ); - - Object.defineProperties( WebGLRenderer.prototype, { - - shadowMapEnabled: { - get: function () { - - return this.shadowMap.enabled; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); - this.shadowMap.enabled = value; - - } - }, - shadowMapType: { - get: function () { - - return this.shadowMap.type; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); - this.shadowMap.type = value; - - } - }, - shadowMapCullFace: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function ( /* value */ ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); - - } - } - } ); - - Object.defineProperties( WebGLShadowMap.prototype, { - - cullFace: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function ( /* cullFace */ ) { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); - - } - }, - renderReverseSided: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); - - } - }, - renderSingleSided: { - get: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); - return undefined; - - }, - set: function () { - - console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); - - } - } - - } ); - - // - - Object.defineProperties( WebGLRenderTarget.prototype, { - - wrapS: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); - return this.texture.wrapS; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); - this.texture.wrapS = value; - - } - }, - wrapT: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); - return this.texture.wrapT; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); - this.texture.wrapT = value; - - } - }, - magFilter: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); - return this.texture.magFilter; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); - this.texture.magFilter = value; - - } - }, - minFilter: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); - return this.texture.minFilter; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); - this.texture.minFilter = value; - - } - }, - anisotropy: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); - return this.texture.anisotropy; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); - this.texture.anisotropy = value; - - } - }, - offset: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); - return this.texture.offset; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); - this.texture.offset = value; - - } - }, - repeat: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); - return this.texture.repeat; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); - this.texture.repeat = value; - - } - }, - format: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); - return this.texture.format; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); - this.texture.format = value; - - } - }, - type: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); - return this.texture.type; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); - this.texture.type = value; - - } - }, - generateMipmaps: { - get: function () { - - console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); - return this.texture.generateMipmaps; - - }, - set: function ( value ) { - - console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); - this.texture.generateMipmaps = value; - - } - } - - } ); - - // - - Object.defineProperties( WebVRManager.prototype, { - - standing: { - set: function ( /* value */ ) { - - console.warn( 'THREE.WebVRManager: .standing has been removed.' ); - - } - }, - userHeight: { - set: function ( /* value */ ) { - - console.warn( 'THREE.WebVRManager: .userHeight has been removed.' ); - - } - } - - } ); - - // - - Audio.prototype.load = function ( file ) { - - console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); - var scope = this; - var audioLoader = new AudioLoader(); - audioLoader.load( file, function ( buffer ) { - - scope.setBuffer( buffer ); - - } ); - return this; - - }; - - AudioAnalyser.prototype.getData = function () { - - console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); - return this.getFrequencyData(); - - }; - - // - - CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { - - console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); - return this.update( renderer, scene ); - - }; - - // - - var GeometryUtils = { - - merge: function ( geometry1, geometry2, materialIndexOffset ) { - - console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); - var matrix; - - if ( geometry2.isMesh ) { - - geometry2.matrixAutoUpdate && geometry2.updateMatrix(); - - matrix = geometry2.matrix; - geometry2 = geometry2.geometry; - - } - - geometry1.merge( geometry2, matrix, materialIndexOffset ); - - }, - - center: function ( geometry ) { - - console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); - return geometry.center(); - - } - - }; - - ImageUtils.crossOrigin = undefined; - - ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) { - - console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); - - var loader = new TextureLoader(); - loader.setCrossOrigin( this.crossOrigin ); - - var texture = loader.load( url, onLoad, undefined, onError ); - - if ( mapping ) texture.mapping = mapping; - - return texture; - - }; - - ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) { - - console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); - - var loader = new CubeTextureLoader(); - loader.setCrossOrigin( this.crossOrigin ); - - var texture = loader.load( urls, onLoad, undefined, onError ); - - if ( mapping ) texture.mapping = mapping; - - return texture; - - }; - - ImageUtils.loadCompressedTexture = function () { - - console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); - - }; - - ImageUtils.loadCompressedTextureCube = function () { - - console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); - - }; - - // - - function Projector() { - - console.error( 'THREE.Projector has been moved to /examples/js/renderers/Projector.js.' ); - - this.projectVector = function ( vector, camera ) { - - console.warn( 'THREE.Projector: .projectVector() is now vector.project().' ); - vector.project( camera ); - - }; - - this.unprojectVector = function ( vector, camera ) { - - console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' ); - vector.unproject( camera ); - - }; - - this.pickingRay = function () { - - console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' ); - - }; - - } - - // - - function CanvasRenderer() { - - console.error( 'THREE.CanvasRenderer has been removed' ); - - } - - // - - function JSONLoader() { - - console.error( 'THREE.JSONLoader has been removed.' ); - - } - - // - - var SceneUtils = { - - createMultiMaterialObject: function ( /* geometry, materials */ ) { - - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); - - }, - - detach: function ( /* child, parent, scene */ ) { - - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); - - }, - - attach: function ( /* child, scene, parent */ ) { - - console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); - - } - - }; - - // - - function LensFlare() { - - console.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' ); - - } - - exports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget; - exports.WebGLRenderTargetCube = WebGLRenderTargetCube; - exports.WebGLRenderTarget = WebGLRenderTarget; - exports.WebGLRenderer = WebGLRenderer; - exports.ShaderLib = ShaderLib; - exports.UniformsLib = UniformsLib; - exports.UniformsUtils = UniformsUtils; - exports.ShaderChunk = ShaderChunk; - exports.FogExp2 = FogExp2; - exports.Fog = Fog; - exports.Scene = Scene; - exports.Sprite = Sprite; - exports.LOD = LOD; - exports.SkinnedMesh = SkinnedMesh; - exports.Skeleton = Skeleton; - exports.Bone = Bone; - exports.Mesh = Mesh; - exports.LineSegments = LineSegments; - exports.LineLoop = LineLoop; - exports.Line = Line; - exports.Points = Points; - exports.Group = Group; - exports.VideoTexture = VideoTexture; - exports.DataTexture = DataTexture; - exports.DataTexture3D = DataTexture3D; - exports.CompressedTexture = CompressedTexture; - exports.CubeTexture = CubeTexture; - exports.CanvasTexture = CanvasTexture; - exports.DepthTexture = DepthTexture; - exports.Texture = Texture; - exports.AnimationLoader = AnimationLoader; - exports.CompressedTextureLoader = CompressedTextureLoader; - exports.DataTextureLoader = DataTextureLoader; - exports.CubeTextureLoader = CubeTextureLoader; - exports.TextureLoader = TextureLoader; - exports.ObjectLoader = ObjectLoader; - exports.MaterialLoader = MaterialLoader; - exports.BufferGeometryLoader = BufferGeometryLoader; - exports.DefaultLoadingManager = DefaultLoadingManager; - exports.LoadingManager = LoadingManager; - exports.ImageLoader = ImageLoader; - exports.ImageBitmapLoader = ImageBitmapLoader; - exports.FontLoader = FontLoader; - exports.FileLoader = FileLoader; - exports.Loader = Loader; - exports.LoaderUtils = LoaderUtils; - exports.Cache = Cache; - exports.AudioLoader = AudioLoader; - exports.SpotLightShadow = SpotLightShadow; - exports.SpotLight = SpotLight; - exports.PointLight = PointLight; - exports.RectAreaLight = RectAreaLight; - exports.HemisphereLight = HemisphereLight; - exports.DirectionalLightShadow = DirectionalLightShadow; - exports.DirectionalLight = DirectionalLight; - exports.AmbientLight = AmbientLight; - exports.LightShadow = LightShadow; - exports.Light = Light; - exports.StereoCamera = StereoCamera; - exports.PerspectiveCamera = PerspectiveCamera; - exports.OrthographicCamera = OrthographicCamera; - exports.CubeCamera = CubeCamera; - exports.ArrayCamera = ArrayCamera; - exports.Camera = Camera; - exports.AudioListener = AudioListener; - exports.PositionalAudio = PositionalAudio; - exports.AudioContext = AudioContext; - exports.AudioAnalyser = AudioAnalyser; - exports.Audio = Audio; - exports.VectorKeyframeTrack = VectorKeyframeTrack; - exports.StringKeyframeTrack = StringKeyframeTrack; - exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; - exports.NumberKeyframeTrack = NumberKeyframeTrack; - exports.ColorKeyframeTrack = ColorKeyframeTrack; - exports.BooleanKeyframeTrack = BooleanKeyframeTrack; - exports.PropertyMixer = PropertyMixer; - exports.PropertyBinding = PropertyBinding; - exports.KeyframeTrack = KeyframeTrack; - exports.AnimationUtils = AnimationUtils; - exports.AnimationObjectGroup = AnimationObjectGroup; - exports.AnimationMixer = AnimationMixer; - exports.AnimationClip = AnimationClip; - exports.Uniform = Uniform; - exports.InstancedBufferGeometry = InstancedBufferGeometry; - exports.BufferGeometry = BufferGeometry; - exports.Geometry = Geometry; - exports.InterleavedBufferAttribute = InterleavedBufferAttribute; - exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; - exports.InterleavedBuffer = InterleavedBuffer; - exports.InstancedBufferAttribute = InstancedBufferAttribute; - exports.Face3 = Face3; - exports.Object3D = Object3D; - exports.Raycaster = Raycaster; - exports.Layers = Layers; - exports.EventDispatcher = EventDispatcher; - exports.Clock = Clock; - exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; - exports.LinearInterpolant = LinearInterpolant; - exports.DiscreteInterpolant = DiscreteInterpolant; - exports.CubicInterpolant = CubicInterpolant; - exports.Interpolant = Interpolant; - exports.Triangle = Triangle; - exports.Math = _Math; - exports.Spherical = Spherical; - exports.Cylindrical = Cylindrical; - exports.Plane = Plane; - exports.Frustum = Frustum; - exports.Sphere = Sphere; - exports.Ray = Ray; - exports.Matrix4 = Matrix4; - exports.Matrix3 = Matrix3; - exports.Box3 = Box3; - exports.Box2 = Box2; - exports.Line3 = Line3; - exports.Euler = Euler; - exports.Vector4 = Vector4; - exports.Vector3 = Vector3; - exports.Vector2 = Vector2; - exports.Quaternion = Quaternion; - exports.Color = Color; - exports.ImmediateRenderObject = ImmediateRenderObject; - exports.VertexNormalsHelper = VertexNormalsHelper; - exports.SpotLightHelper = SpotLightHelper; - exports.SkeletonHelper = SkeletonHelper; - exports.PointLightHelper = PointLightHelper; - exports.RectAreaLightHelper = RectAreaLightHelper; - exports.HemisphereLightHelper = HemisphereLightHelper; - exports.GridHelper = GridHelper; - exports.PolarGridHelper = PolarGridHelper; - exports.FaceNormalsHelper = FaceNormalsHelper; - exports.DirectionalLightHelper = DirectionalLightHelper; - exports.CameraHelper = CameraHelper; - exports.BoxHelper = BoxHelper; - exports.Box3Helper = Box3Helper; - exports.PlaneHelper = PlaneHelper; - exports.ArrowHelper = ArrowHelper; - exports.AxesHelper = AxesHelper; - exports.Shape = Shape; - exports.Path = Path; - exports.ShapePath = ShapePath; - exports.Font = Font; - exports.CurvePath = CurvePath; - exports.Curve = Curve; - exports.ImageUtils = ImageUtils; - exports.ShapeUtils = ShapeUtils; - exports.WebGLUtils = WebGLUtils; - exports.WireframeGeometry = WireframeGeometry; - exports.ParametricGeometry = ParametricGeometry; - exports.ParametricBufferGeometry = ParametricBufferGeometry; - exports.TetrahedronGeometry = TetrahedronGeometry; - exports.TetrahedronBufferGeometry = TetrahedronBufferGeometry; - exports.OctahedronGeometry = OctahedronGeometry; - exports.OctahedronBufferGeometry = OctahedronBufferGeometry; - exports.IcosahedronGeometry = IcosahedronGeometry; - exports.IcosahedronBufferGeometry = IcosahedronBufferGeometry; - exports.DodecahedronGeometry = DodecahedronGeometry; - exports.DodecahedronBufferGeometry = DodecahedronBufferGeometry; - exports.PolyhedronGeometry = PolyhedronGeometry; - exports.PolyhedronBufferGeometry = PolyhedronBufferGeometry; - exports.TubeGeometry = TubeGeometry; - exports.TubeBufferGeometry = TubeBufferGeometry; - exports.TorusKnotGeometry = TorusKnotGeometry; - exports.TorusKnotBufferGeometry = TorusKnotBufferGeometry; - exports.TorusGeometry = TorusGeometry; - exports.TorusBufferGeometry = TorusBufferGeometry; - exports.TextGeometry = TextGeometry; - exports.TextBufferGeometry = TextBufferGeometry; - exports.SphereGeometry = SphereGeometry; - exports.SphereBufferGeometry = SphereBufferGeometry; - exports.RingGeometry = RingGeometry; - exports.RingBufferGeometry = RingBufferGeometry; - exports.PlaneGeometry = PlaneGeometry; - exports.PlaneBufferGeometry = PlaneBufferGeometry; - exports.LatheGeometry = LatheGeometry; - exports.LatheBufferGeometry = LatheBufferGeometry; - exports.ShapeGeometry = ShapeGeometry; - exports.ShapeBufferGeometry = ShapeBufferGeometry; - exports.ExtrudeGeometry = ExtrudeGeometry; - exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry; - exports.EdgesGeometry = EdgesGeometry; - exports.ConeGeometry = ConeGeometry; - exports.ConeBufferGeometry = ConeBufferGeometry; - exports.CylinderGeometry = CylinderGeometry; - exports.CylinderBufferGeometry = CylinderBufferGeometry; - exports.CircleGeometry = CircleGeometry; - exports.CircleBufferGeometry = CircleBufferGeometry; - exports.BoxGeometry = BoxGeometry; - exports.CubeGeometry = BoxGeometry; - exports.BoxBufferGeometry = BoxBufferGeometry; - exports.ShadowMaterial = ShadowMaterial; - exports.SpriteMaterial = SpriteMaterial; - exports.RawShaderMaterial = RawShaderMaterial; - exports.ShaderMaterial = ShaderMaterial; - exports.PointsMaterial = PointsMaterial; - exports.MeshPhysicalMaterial = MeshPhysicalMaterial; - exports.MeshStandardMaterial = MeshStandardMaterial; - exports.MeshPhongMaterial = MeshPhongMaterial; - exports.MeshToonMaterial = MeshToonMaterial; - exports.MeshNormalMaterial = MeshNormalMaterial; - exports.MeshLambertMaterial = MeshLambertMaterial; - exports.MeshDepthMaterial = MeshDepthMaterial; - exports.MeshDistanceMaterial = MeshDistanceMaterial; - exports.MeshBasicMaterial = MeshBasicMaterial; - exports.MeshMatcapMaterial = MeshMatcapMaterial; - exports.LineDashedMaterial = LineDashedMaterial; - exports.LineBasicMaterial = LineBasicMaterial; - exports.Material = Material; - exports.Float64BufferAttribute = Float64BufferAttribute; - exports.Float32BufferAttribute = Float32BufferAttribute; - exports.Uint32BufferAttribute = Uint32BufferAttribute; - exports.Int32BufferAttribute = Int32BufferAttribute; - exports.Uint16BufferAttribute = Uint16BufferAttribute; - exports.Int16BufferAttribute = Int16BufferAttribute; - exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; - exports.Uint8BufferAttribute = Uint8BufferAttribute; - exports.Int8BufferAttribute = Int8BufferAttribute; - exports.BufferAttribute = BufferAttribute; - exports.ArcCurve = ArcCurve; - exports.CatmullRomCurve3 = CatmullRomCurve3; - exports.CubicBezierCurve = CubicBezierCurve; - exports.CubicBezierCurve3 = CubicBezierCurve3; - exports.EllipseCurve = EllipseCurve; - exports.LineCurve = LineCurve; - exports.LineCurve3 = LineCurve3; - exports.QuadraticBezierCurve = QuadraticBezierCurve; - exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; - exports.SplineCurve = SplineCurve; - exports.REVISION = REVISION; - exports.MOUSE = MOUSE; - exports.CullFaceNone = CullFaceNone; - exports.CullFaceBack = CullFaceBack; - exports.CullFaceFront = CullFaceFront; - exports.CullFaceFrontBack = CullFaceFrontBack; - exports.FrontFaceDirectionCW = FrontFaceDirectionCW; - exports.FrontFaceDirectionCCW = FrontFaceDirectionCCW; - exports.BasicShadowMap = BasicShadowMap; - exports.PCFShadowMap = PCFShadowMap; - exports.PCFSoftShadowMap = PCFSoftShadowMap; - exports.FrontSide = FrontSide; - exports.BackSide = BackSide; - exports.DoubleSide = DoubleSide; - exports.FlatShading = FlatShading; - exports.SmoothShading = SmoothShading; - exports.NoColors = NoColors; - exports.FaceColors = FaceColors; - exports.VertexColors = VertexColors; - exports.NoBlending = NoBlending; - exports.NormalBlending = NormalBlending; - exports.AdditiveBlending = AdditiveBlending; - exports.SubtractiveBlending = SubtractiveBlending; - exports.MultiplyBlending = MultiplyBlending; - exports.CustomBlending = CustomBlending; - exports.AddEquation = AddEquation; - exports.SubtractEquation = SubtractEquation; - exports.ReverseSubtractEquation = ReverseSubtractEquation; - exports.MinEquation = MinEquation; - exports.MaxEquation = MaxEquation; - exports.ZeroFactor = ZeroFactor; - exports.OneFactor = OneFactor; - exports.SrcColorFactor = SrcColorFactor; - exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; - exports.SrcAlphaFactor = SrcAlphaFactor; - exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; - exports.DstAlphaFactor = DstAlphaFactor; - exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; - exports.DstColorFactor = DstColorFactor; - exports.OneMinusDstColorFactor = OneMinusDstColorFactor; - exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; - exports.NeverDepth = NeverDepth; - exports.AlwaysDepth = AlwaysDepth; - exports.LessDepth = LessDepth; - exports.LessEqualDepth = LessEqualDepth; - exports.EqualDepth = EqualDepth; - exports.GreaterEqualDepth = GreaterEqualDepth; - exports.GreaterDepth = GreaterDepth; - exports.NotEqualDepth = NotEqualDepth; - exports.MultiplyOperation = MultiplyOperation; - exports.MixOperation = MixOperation; - exports.AddOperation = AddOperation; - exports.NoToneMapping = NoToneMapping; - exports.LinearToneMapping = LinearToneMapping; - exports.ReinhardToneMapping = ReinhardToneMapping; - exports.Uncharted2ToneMapping = Uncharted2ToneMapping; - exports.CineonToneMapping = CineonToneMapping; - exports.ACESFilmicToneMapping = ACESFilmicToneMapping; - exports.UVMapping = UVMapping; - exports.CubeReflectionMapping = CubeReflectionMapping; - exports.CubeRefractionMapping = CubeRefractionMapping; - exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; - exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; - exports.SphericalReflectionMapping = SphericalReflectionMapping; - exports.CubeUVReflectionMapping = CubeUVReflectionMapping; - exports.CubeUVRefractionMapping = CubeUVRefractionMapping; - exports.RepeatWrapping = RepeatWrapping; - exports.ClampToEdgeWrapping = ClampToEdgeWrapping; - exports.MirroredRepeatWrapping = MirroredRepeatWrapping; - exports.NearestFilter = NearestFilter; - exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; - exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; - exports.LinearFilter = LinearFilter; - exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; - exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; - exports.UnsignedByteType = UnsignedByteType; - exports.ByteType = ByteType; - exports.ShortType = ShortType; - exports.UnsignedShortType = UnsignedShortType; - exports.IntType = IntType; - exports.UnsignedIntType = UnsignedIntType; - exports.FloatType = FloatType; - exports.HalfFloatType = HalfFloatType; - exports.UnsignedShort4444Type = UnsignedShort4444Type; - exports.UnsignedShort5551Type = UnsignedShort5551Type; - exports.UnsignedShort565Type = UnsignedShort565Type; - exports.UnsignedInt248Type = UnsignedInt248Type; - exports.AlphaFormat = AlphaFormat; - exports.RGBFormat = RGBFormat; - exports.RGBAFormat = RGBAFormat; - exports.LuminanceFormat = LuminanceFormat; - exports.LuminanceAlphaFormat = LuminanceAlphaFormat; - exports.RGBEFormat = RGBEFormat; - exports.DepthFormat = DepthFormat; - exports.DepthStencilFormat = DepthStencilFormat; - exports.RedFormat = RedFormat; - exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; - exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; - exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; - exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; - exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; - exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; - exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; - exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; - exports.RGB_ETC1_Format = RGB_ETC1_Format; - exports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format; - exports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format; - exports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format; - exports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format; - exports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format; - exports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format; - exports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format; - exports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format; - exports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format; - exports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format; - exports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format; - exports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format; - exports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format; - exports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format; - exports.LoopOnce = LoopOnce; - exports.LoopRepeat = LoopRepeat; - exports.LoopPingPong = LoopPingPong; - exports.InterpolateDiscrete = InterpolateDiscrete; - exports.InterpolateLinear = InterpolateLinear; - exports.InterpolateSmooth = InterpolateSmooth; - exports.ZeroCurvatureEnding = ZeroCurvatureEnding; - exports.ZeroSlopeEnding = ZeroSlopeEnding; - exports.WrapAroundEnding = WrapAroundEnding; - exports.TrianglesDrawMode = TrianglesDrawMode; - exports.TriangleStripDrawMode = TriangleStripDrawMode; - exports.TriangleFanDrawMode = TriangleFanDrawMode; - exports.LinearEncoding = LinearEncoding; - exports.sRGBEncoding = sRGBEncoding; - exports.GammaEncoding = GammaEncoding; - exports.RGBEEncoding = RGBEEncoding; - exports.LogLuvEncoding = LogLuvEncoding; - exports.RGBM7Encoding = RGBM7Encoding; - exports.RGBM16Encoding = RGBM16Encoding; - exports.RGBDEncoding = RGBDEncoding; - exports.BasicDepthPacking = BasicDepthPacking; - exports.RGBADepthPacking = RGBADepthPacking; - exports.TangentSpaceNormalMap = TangentSpaceNormalMap; - exports.ObjectSpaceNormalMap = ObjectSpaceNormalMap; - exports.Face4 = Face4; - exports.LineStrip = LineStrip; - exports.LinePieces = LinePieces; - exports.MeshFaceMaterial = MeshFaceMaterial; - exports.MultiMaterial = MultiMaterial; - exports.PointCloud = PointCloud; - exports.Particle = Particle; - exports.ParticleSystem = ParticleSystem; - exports.PointCloudMaterial = PointCloudMaterial; - exports.ParticleBasicMaterial = ParticleBasicMaterial; - exports.ParticleSystemMaterial = ParticleSystemMaterial; - exports.Vertex = Vertex; - exports.DynamicBufferAttribute = DynamicBufferAttribute; - exports.Int8Attribute = Int8Attribute; - exports.Uint8Attribute = Uint8Attribute; - exports.Uint8ClampedAttribute = Uint8ClampedAttribute; - exports.Int16Attribute = Int16Attribute; - exports.Uint16Attribute = Uint16Attribute; - exports.Int32Attribute = Int32Attribute; - exports.Uint32Attribute = Uint32Attribute; - exports.Float32Attribute = Float32Attribute; - exports.Float64Attribute = Float64Attribute; - exports.ClosedSplineCurve3 = ClosedSplineCurve3; - exports.SplineCurve3 = SplineCurve3; - exports.Spline = Spline; - exports.AxisHelper = AxisHelper; - exports.BoundingBoxHelper = BoundingBoxHelper; - exports.EdgesHelper = EdgesHelper; - exports.WireframeHelper = WireframeHelper; - exports.XHRLoader = XHRLoader; - exports.BinaryTextureLoader = BinaryTextureLoader; - exports.GeometryUtils = GeometryUtils; - exports.Projector = Projector; - exports.CanvasRenderer = CanvasRenderer; - exports.JSONLoader = JSONLoader; - exports.SceneUtils = SceneUtils; - exports.LensFlare = LensFlare; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/src/jsMain/resources/mapper-index.html b/src/jsMain/resources/mapper-index.html new file mode 100644 index 0000000000..6277201c63 --- /dev/null +++ b/src/jsMain/resources/mapper-index.html @@ -0,0 +1,11 @@ + + + + + sparklemotion + + + +Gohere! + + diff --git a/src/jsMain/resources/mapper/index.html b/src/jsMain/resources/mapper/index.html new file mode 100644 index 0000000000..5b83835e49 --- /dev/null +++ b/src/jsMain/resources/mapper/index.html @@ -0,0 +1,20 @@ + + + + + Mapper | sparklemotion + + + + + +
    + + + + + + diff --git a/src/jsMain/resources/newsheep_processed.obj b/src/jsMain/resources/newsheep_processed.obj deleted file mode 100644 index a56ece05c9..0000000000 --- a/src/jsMain/resources/newsheep_processed.obj +++ /dev/null @@ -1,1757 +0,0 @@ -v -143.738 216.361 444.302 -v -143.738 216.361 438.272 -v -150.938 223.561 438.329 -v -122.143 216.361 444.302 -v -122.143 216.361 438.272 -v -115.01 223.494 438.328 -v -100.543 223.561 429.902 -v -114.756 223.561 438.163 -v -114.943 223.561 438.329 -v -95.7301 218.749 429.792 -v -107.421 215.389 436.327 -v -104.453 214.945 434.732 -v -101.67 213.643 433.279 -v -100.47 212.612 432.676 -v -99.312 211.575 431.972 -v -97.5418 208.88 430.894 -v -96.4288 205.74 430.217 -v -96.0491 202.371 429.986 -v -95.7301 188.714 429.792 -v -96.4288 199.001 430.217 -v -97.5418 195.862 430.894 -v -99.312 193.167 431.972 -v -101.618 191.1 433.375 -v -104.303 189.803 435.009 -v -107.182 189.362 436.761 -v -107.743 171.926 437.102 -v -107.743 189.449 437.102 -v -107.743 158.761 450.267 -v -107.743 189.553 438.38 -v -107.743 189.95 440.325 -v -107.743 190.577 442.209 -v -107.743 190.613 442.284 -v -107.743 191.706 443.993 -v -107.743 193.045 445.645 -v -107.743 193.631 446.221 -v -107.743 193.886 446.413 -v -107.743 174.397 465.902 -v -109.409 195.334 447.321 -v -111.179 197.249 447.91 -v -112.004 198.339 447.986 -v -112.898 199.577 448.013 -v -122.143 180.361 480.302 -v -114.266 201.947 447.577 -v -114.493 202.371 447.474 -v -115.435 204.743 446.435 -v -115.721 205.57 446.013 -v -116.032 207.142 444.879 -v -116.25 208.832 443.498 -v -116.223 209.253 443.039 -v -115.977 210.725 441.219 -v -115.423 211.574 440.876 -v -113.099 213.644 439.508 -v -110.37 214.945 437.956 -v -143.738 180.361 480.302 -v -150.989 205.896 444.514 -v -150.75 208.02 442.727 -v -150.719 208.94 441.851 -v -150.889 209.824 440.727 -v -152.14 211.646 440.101 -v -154.552 213.715 438.896 -v -157.36 215.016 437.491 -v -160.375 215.46 435.984 -v -172.538 216.361 429.902 -v -163.389 215.016 434.477 -v -166.197 213.715 433.073 -v -168.609 211.646 431.867 -v -170.46 208.95 430.942 -v -171.623 205.81 430.36 -v -172.02 202.44 430.161 -v -172.538 186.326 429.902 -v -171.623 199.07 430.36 -v -170.46 195.93 430.942 -v -168.609 193.233 431.867 -v -166.197 191.164 433.073 -v -163.389 189.863 434.477 -v -160.375 189.42 435.984 -v -158.138 189.749 437.102 -v -158.138 171.926 437.102 -v -157.121 171.504 436.085 -v -165.353 181.245 428.106 -v -168.766 183.658 424.903 -v -172.538 186.326 422.073 -v -172.538 186.326 422.077 -v -172.538 216.361 422.077 -v -165.338 223.561 425.564 -v -172.538 216.361 422.073 -v -165.338 223.561 429.902 -v -155.04 166.374 438.272 -v -158.138 158.761 450.267 -v -143.738 144.361 444.302 -v -143.738 150.392 438.272 -v -122.143 144.361 444.302 -v -122.143 150.392 438.272 -v -110.841 166.374 438.272 -v -108.76 171.504 436.085 -v -100.528 181.245 428.106 -v -97.1153 183.658 424.903 -v -93.791 186.774 422.41 -v -93.791 216.81 422.41 -v -100.543 223.561 425.564 -v -114.943 223.561 438.272 -v -93.7897 186.773 422.405 -v -122.143 144.361 473.102 -v -107.743 158.761 465.902 -v -122.143 151.561 480.302 -v -129.343 151.561 480.302 -v -143.738 151.561 480.302 -v -158.138 158.761 465.902 -v -158.138 174.397 465.902 -v -153.707 199.516 447.05 -v -153.357 200.137 446.924 -v -152.154 202.44 446.322 -v -151.831 203.281 445.938 -v -151.021 205.719 444.645 -v -155.458 197.045 447.046 -v -157.294 194.972 446.521 -v -158.138 194.223 446.076 -v -158.138 192.572 444.533 -v -158.138 192.457 444.4 -v -158.138 191.432 442.784 -v -158.138 190.545 440.939 -v -158.138 189.897 439.027 -v -143.738 144.361 473.102 -v -122.143 151.508 480.249 -v -143.738 151.508 480.249 -v -143.738 151.481 480.302 -v -143.743 151.561 480.302 -v -122.138 151.508 480.249 -v -122.143 151.481 480.302 -v -122.138 151.481 480.302 -v -143.743 151.508 480.249 -v -143.743 151.481 480.302 -v -146.754 219.377 438.272 -v -150.94 223.765 438.272 -v -119.387 173.341 65.6569 -v -119.406 186.189 39.8734 -v -105.006 205.35 32.9751 -v -141.006 173.927 65.9324 -v -141.006 186.189 39.8734 -v -155.406 183.891 78.5784 -v -155.406 205.35 32.9751 -v -148.178 208.799 42.5555 -v -148.178 188.101 86.5416 -v -115.281 208.799 42.5555 -v -115.281 188.101 86.5416 -v -105.006 186.956 72.0636 -v -110.526 205.35 32.9751 -v -86.4405 216.565 409.472 -v -79.2405 223.765 402.272 -v -79.2405 216.565 416.672 -v -79.2405 223.765 373.499 -v -86.4405 216.565 366.272 -v -79.2405 202.165 380.672 -v -79.2405 201.518 402.29 -v -36.0405 216.565 416.672 -v -50.4405 202.165 402.272 -v -50.4405 202.165 380.672 -v -36.0405 216.565 366.272 -v -43.2405 223.765 373.499 -v -43.2405 223.765 402.272 -v -187.015 223.765 402.272 -v -179.815 216.565 409.472 -v -187.015 216.565 416.672 -v -187.015 223.765 373.499 -v -179.815 216.565 366.272 -v -230.215 216.565 366.272 -v -223.015 223.765 373.499 -v -223.015 223.765 402.272 -v -230.215 216.565 416.672 -v -187.015 201.518 402.29 -v -187.015 202.165 380.672 -v -215.815 202.165 380.672 -v -215.815 202.165 402.272 -v -61.6107 90.5523 428.536 -v -26.8013 118.515 388.601 -v -50.8013 161.32 410.399 -v -26.8013 75.0889 391.143 -v -50.8013 17.9375 394.482 -v -74.8013 190.665 369.53 -v -50.8013 161.32 410.399 -v -62.8013 184.672 341.337 -v -62.8013 184.672 341.337 -v -26.8013 127.29 351.081 -v -26.8013 94.5864 318.377 -v -38.8013 25.9188 371.758 -v -50.8013 22.4486 340.86 -v -38.8013 162.735 318.165 -v -62.8013 176.943 304.972 -v -58.8013 12.6568 281.941 -v -38.8013 137.571 269.522 -v -26.8013 111.006 271.588 -v -26.8013 94.5864 318.377 -v -26.8013 68.3563 237.649 -v -26.8013 111.006 271.588 -v -58.8013 12.6568 281.941 -v -50.8013 144.033 177.472 -v -50.8013 82.7253 135.53 -v -38.8013 118.831 127.194 -v -42.8013 157.617 112.79 -v -50.8013 137.917 62.3318 -v -86.8013 196.403 98.3863 -v -26.8013 119.776 107.328 -v -42.8013 157.617 112.79 -v -50.8013 41.104 144.351 -v -50.8013 29.9389 127.158 -v -26.8013 120.552 86.6767 -v -50.8013 137.917 62.3318 -v -62.8013 15.1633 118.521 -v -50.8013 26.1237 91.3927 -v -50.8013 29.9389 127.158 -v -50.8013 137.917 62.3318 -v -78.8013 155.054 37.9228 -v -68.8013 93.7942 46.7333 -v -68.8013 93.7942 46.7333 -v -62.8013 17.7169 57.6749 -v -50.8013 26.1237 91.3927 -v -86.1405 194.61 347.072 -v -179.801 196.403 98.3863 -v -129.301 175.728 68.1546 -v -104.051 165.391 53.0387 -v -86.4263 129.593 33.3235 -v -100.83 65.1328 46.8829 -v -103.118 136.359 51.2561 -v -165.773 65.1328 46.8829 -v -134.158 109.694 49.6189 -v -78.8013 155.054 37.9228 -v -62.8013 17.7169 57.6749 -v -131.613 165.391 61.0018 -v -138.551 172.459 63.3745 -v -107.74 238.165 366.165 -v -86.1405 194.61 359.072 -v -107.74 202.165 337.472 -v -86.1405 210.834 372.003 -v -86.4405 211.214 371.922 -v -107.74 238.165 423.765 -v -86.1405 216.565 416.672 -v -86.1405 215.565 408.875 -v -86.1405 158.965 416.672 -v -86.1405 215.565 408.875 -v -96.0146 219.033 424.077 -v -86.1405 216.565 416.672 -v -107.919 222.01 433.006 -v -114.94 223.765 438.272 -v -132.94 220.165 351.818 -v -158.14 238.165 366.165 -v -86.1405 158.965 416.672 -v -93.791 186.774 422.41 -v -97.1153 183.658 424.903 -v -93.791 216.81 422.41 -v -96.0146 219.033 424.077 -v -158.14 238.165 423.765 -v -107.74 122.965 438.272 -v -97.1153 183.658 424.903 -v -158.14 122.965 438.272 -v -61.6107 90.5523 428.536 -v -95.9432 96.708 429.324 -v -84.1459 70.4512 420.377 -v -72.1763 17.9375 394.482 -v -71.8013 17.9375 394.482 -v -139.02 109.836 433.798 -v -95.9432 96.708 429.324 -v -111.65 33.2706 402.043 -v -75.6712 33.2706 402.043 -v -84.1459 70.4512 420.377 -v -111.583 90.1438 427.087 -v -204.992 90.5523 428.536 -v -215.801 161.32 410.399 -v -239.801 118.515 388.601 -v -239.801 75.0889 391.143 -v -215.801 17.9375 394.482 -v -191.801 190.665 369.53 -v -203.801 184.672 341.337 -v -239.801 127.29 351.081 -v -239.801 94.5864 318.377 -v -227.801 25.9188 371.758 -v -215.801 22.4486 340.86 -v -227.801 162.735 318.165 -v -203.801 176.943 304.972 -v -207.801 12.6568 281.941 -v -227.801 137.571 269.522 -v -227.801 162.735 318.165 -v -239.801 111.006 271.588 -v -239.801 68.3563 237.649 -v -239.801 111.006 271.588 -v -215.801 144.033 177.472 -v -26.8013 111.006 271.588 -v -43.2525 120.23 196.4 -v -50.8013 144.033 177.472 -v -35.2233 94.9125 216.532 -v -26.8013 68.3563 237.649 -v -50.8013 82.7253 135.53 -v -50.8013 41.104 144.351 -v -62.8013 27.1111 212.03 -v -26.8013 68.3563 237.649 -v -58.8013 12.6568 281.941 -v -223.35 120.23 196.4 -v -239.801 111.006 271.588 -v -231.379 94.9125 216.532 -v -207.801 12.6568 281.941 -v -203.801 27.1111 212.03 -v -215.801 41.104 144.351 -v -215.801 82.7253 135.53 -v -227.801 118.831 127.194 -v -86.8013 196.403 98.3863 -v -62.8013 189.739 169.132 -v -58.8013 168.647 172.981 -v -62.8013 189.739 169.132 -v -38.8013 118.831 127.194 -v -58.8013 168.647 172.981 -v -210.457 191.493 137.404 -v -223.801 157.617 112.79 -v -211.868 189.739 182.007 -v -239.801 119.776 107.328 -v -215.801 29.9389 127.158 -v -223.801 157.617 112.79 -v -239.801 120.552 86.6767 -v -215.801 29.9389 127.158 -v -203.801 15.1633 118.521 -v -239.801 119.776 107.328 -v -215.801 26.1237 91.3927 -v -239.801 120.552 86.6767 -v -239.801 120.552 86.6767 -v -203.801 17.7169 57.6749 -v -197.801 93.7942 46.7333 -v -215.801 137.917 62.3318 -v -179.801 196.403 98.3863 -v -187.801 155.054 37.9228 -v -138.551 172.459 63.3745 -v -163.176 163.757 50.6487 -v -180.176 129.593 33.3235 -v -197.801 93.7942 46.7333 -v -163.966 133.761 49.5033 -v -165.773 65.1328 46.8829 -v -163.743 142.234 49.8269 -v -203.801 17.7169 57.6749 -v -203.801 184.672 341.337 -v -180.462 194.61 347.072 -v -191.801 190.665 369.53 -v -203.801 176.943 304.972 -v -179.74 158.965 416.672 -v -170.299 96.708 429.324 -v -204.992 90.5523 428.536 -v -182.457 70.4512 420.377 -v -190.931 33.2706 402.043 -v -194.426 17.9375 394.482 -v -190.931 33.2706 402.043 -v -158.578 33.2706 402.043 -v -194.801 17.9375 394.482 -v -194.426 17.9375 394.482 -v -179.74 216.565 416.672 -v -169.866 219.033 424.077 -v -157.962 222.01 433.006 -v -164.44 231.865 369.2 -v -179.74 216.565 376.57 -v -179.74 194.61 359.072 -v -158.14 202.165 337.472 -v -207.801 1.18753 385.157 -v -190.801 1.18753 385.157 -v -207.801 1.18753 352.407 -v -199.801 1.18753 111.399 -v -199.801 3.73085 63.8188 -v -58.8013 1.18753 385.157 -v -75.8013 1.18753 385.157 -v -58.8013 1.18753 352.407 -v -66.8013 1.18753 111.399 -v -66.8013 3.73085 63.8188 -v -62.8013 15.1633 118.521 -v -90.6986 61.5929 416.009 -v -138.643 42.9429 406.813 -v -172.606 55.1129 412.814 -v -93.3425 216.361 422.077 -v -93.3425 216.361 422.073 -g Face -f 1 2 3 -f 4 2 1 -f 2 4 5 -f 4 6 5 -f 7 6 4 -f 6 7 8 -f 9 7 8 -f 7 9 4 -f 4 9 6 -f 7 4 10 -f 11 10 4 -f 12 10 11 -f 13 10 12 -f 10 13 14 -f 15 10 14 -f 16 10 15 -f 17 10 16 -f 18 10 17 -f 18 19 10 -f 20 19 18 -f 21 19 20 -f 22 19 21 -f 23 19 22 -f 24 19 23 -f 19 24 25 -f 25 26 19 -f 26 25 27 -f 27 28 26 -f 28 27 29 -f 28 29 30 -f 28 30 31 -f 28 31 32 -f 28 32 33 -f 28 33 34 -f 28 34 35 -f 28 35 36 -f 28 36 37 -f 38 37 36 -f 37 38 39 -f 37 39 40 -f 37 40 41 -f 41 42 37 -f 43 42 41 -f 44 42 43 -f 45 42 44 -f 46 42 45 -f 47 42 46 -f 47 4 42 -f 48 4 47 -f 49 4 48 -f 4 49 50 -f 51 4 50 -f 4 51 52 -f 4 52 53 -f 4 53 11 -f 4 54 42 -f 54 4 1 -f 1 55 54 -f 1 56 55 -f 1 57 56 -f 57 1 58 -f 1 59 58 -f 59 1 60 -f 60 1 61 -f 61 1 62 -f 63 62 1 -f 63 64 62 -f 63 65 64 -f 63 66 65 -f 63 67 66 -f 63 68 67 -f 63 69 68 -f 70 69 63 -f 69 70 71 -f 71 70 72 -f 72 70 73 -f 73 70 74 -f 74 70 75 -f 75 70 76 -f 70 77 76 -f 77 70 78 -f 70 79 78 -f 70 80 79 -f 70 81 80 -f 70 82 81 -f 82 70 83 -f 70 84 83 -f 84 70 63 -f 85 84 63 -f 84 85 86 -f 85 63 87 -f 87 63 1 -f 87 1 3 -f 87 3 85 -f 88 78 79 -f 78 88 89 -f 89 88 90 -f 90 88 91 -f 88 79 91 -f 91 92 90 -f 92 91 93 -f 93 28 92 -f 94 28 93 -f 94 26 28 -f 26 94 95 -f 26 95 19 -f 95 19 96 -f 19 97 96 -f 19 98 97 -f 99 19 98 -f 19 99 10 -f 100 10 99 -f 10 100 7 -f 8 7 100 -f 101 8 100 -f 101 6 8 -f 6 101 5 -f 99 98 102 -f 28 103 92 -f 103 28 104 -f 28 37 104 -f 42 104 37 -f 104 42 105 -f 42 106 105 -f 106 42 107 -f 107 42 54 -f 54 108 107 -f 108 54 109 -f 54 110 109 -f 54 111 110 -f 54 112 111 -f 54 113 112 -f 54 114 113 -f 54 55 114 -f 115 109 110 -f 116 109 115 -f 109 116 117 -f 117 89 109 -f 118 89 117 -f 119 89 118 -f 120 89 119 -f 121 89 120 -f 122 89 121 -f 122 78 89 -f 78 122 77 -f 109 89 108 -f 89 123 108 -f 123 89 90 -f 92 123 90 -f 123 92 103 -f 124 123 103 -f 123 124 106 -f 106 124 105 -f 105 124 104 -f 124 103 104 -f 123 106 107 -f 123 107 125 -f 107 108 125 -f 125 108 123 -l 3 2 -l 3 1 -l 85 3 -l 87 85 -l 87 63 -l 3 87 -l 70 63 -l 78 70 -l 77 78 -l 76 77 -l 75 76 -l 74 75 -l 73 74 -l 72 73 -l 71 72 -l 69 71 -l 68 69 -l 67 68 -l 66 67 -l 65 66 -l 64 65 -l 62 64 -l 61 62 -l 60 61 -l 59 60 -l 58 59 -l 58 1 -l 57 58 -l 56 57 -l 55 56 -l 114 55 -l 113 114 -l 112 113 -l 111 112 -l 110 111 -l 115 110 -l 116 115 -l 117 116 -l 118 117 -l 119 118 -l 120 119 -l 121 120 -l 122 121 -l 77 122 -l 117 109 -l 54 109 -l 1 54 -l 1 2 -l 1 63 -l 1 4 -l 6 4 -l 101 6 -l 100 101 -l 100 99 -l 7 100 -l 8 7 -l 101 8 -l 5 101 -l 6 5 -l 9 6 -l 9 4 -l 8 9 -l 100 8 -l 9 7 -l 7 10 -l 4 10 -l 4 5 -l 4 50 -l 4 42 -l 42 105 -l 54 42 -l 54 107 -l 108 107 -l 125 108 -l 126 125 -l 107 125 -l 107 127 -l 107 106 -l 106 105 -l 106 124 -l 105 124 -l 104 105 -l 124 104 -l 124 128 -l 129 124 -l 124 103 -l 123 103 -l 125 123 -l 108 123 -l 108 89 -l 109 108 -l 89 90 -l 89 78 -l 78 79 -l 80 79 -l 81 80 -l 82 81 -l 83 82 -l 84 83 -l 63 84 -l 84 86 -l 86 85 -l 70 83 -l 79 88 -l 91 79 -l 88 91 -l 91 93 -l 90 91 -l 90 92 -l 123 90 -l 92 93 -l 28 92 -l 104 28 -l 37 104 -l 36 37 -l 38 36 -l 39 38 -l 40 39 -l 41 40 -l 43 41 -l 44 43 -l 45 44 -l 46 45 -l 47 46 -l 48 47 -l 49 48 -l 50 49 -l 51 50 -l 52 51 -l 53 52 -l 11 53 -l 12 11 -l 13 12 -l 14 13 -l 14 10 -l 15 14 -l 16 15 -l 17 16 -l 18 17 -l 20 18 -l 21 20 -l 22 21 -l 23 22 -l 24 23 -l 25 24 -l 27 25 -l 27 26 -l 29 27 -l 30 29 -l 31 30 -l 32 31 -l 33 32 -l 34 33 -l 35 34 -l 36 35 -l 26 19 -l 26 95 -l 28 26 -l 96 95 -l 97 96 -l 97 98 -l 102 98 -l 99 102 -l 10 99 -l 19 10 -l 98 19 -l 98 99 -l 95 94 -l 93 94 -l 42 37 -l 104 103 -l 103 92 -l 130 128 -l 127 131 -l 132 131 -l 2 5 -l 133 134 -g Tail -f 135 136 137 -f 138 136 135 -f 138 139 136 -f 140 139 138 -f 139 140 141 -f 140 142 141 -f 142 140 143 -f 144 143 142 -f 143 144 145 -f 137 145 144 -f 145 137 146 -f 146 135 137 -f 147 144 137 -f 144 147 141 -f 137 141 147 -f 136 141 137 -f 141 136 139 -f 144 141 142 -l 135 136 -l 146 135 -l 146 137 -l 146 145 -l 145 143 -l 144 145 -l 137 144 -l 136 137 -l 139 136 -l 139 138 -l 139 141 -l 140 141 -l 138 140 -l 138 135 -l 143 140 -l 143 142 -l 142 141 -l 144 142 -l 147 141 -l 137 147 -g G_60L -f 148 149 150 -f 148 151 149 -f 151 148 152 -f 148 153 152 -f 148 154 153 -f 150 154 148 -f 155 154 150 -f 154 155 156 -f 155 157 156 -f 157 155 158 -f 155 159 158 -f 159 155 160 -f 150 160 155 -f 160 150 149 -f 149 159 160 -f 159 149 151 -f 152 159 151 -f 159 152 158 -f 153 158 152 -f 158 153 157 -f 153 156 157 -f 153 154 156 -l 150 149 -l 148 150 -l 149 148 -l 149 151 -l 160 149 -l 160 159 -l 155 160 -l 156 155 -l 157 156 -l 157 153 -l 157 158 -l 152 158 -l 148 152 -l 154 148 -l 154 156 -l 150 154 -l 150 155 -l 155 158 -l 159 158 -l 151 159 -l 151 152 -l 153 152 -l 153 154 -g G_60R -f 161 162 163 -f 164 162 161 -f 162 164 165 -f 164 166 165 -f 166 164 167 -f 161 167 164 -f 167 161 168 -f 161 169 168 -f 169 161 163 -f 163 170 169 -f 163 162 170 -f 162 171 170 -f 162 165 171 -f 165 172 171 -f 172 165 166 -f 169 172 166 -f 172 169 173 -f 169 170 173 -f 173 170 171 -f 173 171 172 -f 167 169 166 -f 169 167 168 -l 161 162 -l 163 161 -l 162 163 -l 162 165 -l 170 162 -l 170 173 -l 163 170 -l 163 169 -l 173 169 -l 172 173 -l 172 171 -l 172 166 -l 165 166 -l 164 165 -l 161 164 -l 168 161 -l 168 167 -l 169 168 -l 169 166 -l 167 166 -l 164 167 -l 171 165 -l 171 170 -g G_01L -f 174 175 176 -l 175 174 -l 175 176 -l 174 176 -g G_02L -f 174 177 175 -l 177 174 -l 175 177 -l 175 174 -g G_03L -f 174 178 177 -l 177 178 -l 177 174 -l 174 178 -g G_04L -f 179 180 181 -l 180 181 -l 179 180 -l 179 181 -g G_05L -f 176 175 182 -l 182 175 -l 176 182 -l 175 176 -g G_06L -f 175 183 182 -l 183 182 -l 183 175 -l 182 175 -g G_07L_ -f 183 177 184 -f 177 183 175 -l 177 184 -l 175 177 -l 183 175 -l 184 183 -g G_08L_ -f 178 185 177 -f 177 185 184 -l 184 185 -l 177 184 -l 177 178 -l 185 178 -g G_09L -f 185 186 184 -l 186 184 -l 185 186 -l 184 185 -g G_11L -f 182 187 188 -l 188 187 -l 182 188 -l 182 187 -g G_12L -f 183 187 181 -l 187 183 -l 181 187 -l 183 181 -g G_13L -f 183 184 187 -l 187 184 -l 187 183 -l 184 183 -g G_14L -f 186 189 184 -l 189 184 -l 186 189 -l 186 184 -g G_15L_ -f 187 190 191 -f 188 190 187 -l 190 191 -l 188 190 -l 188 187 -l 191 187 -g G_16L -f 184 191 187 -l 191 187 -l 184 191 -l 187 184 -g G_17L -f 192 193 194 -l 192 193 -l 192 194 -l 193 194 -g G_18L -f 192 195 193 -l 195 193 -l 195 192 -l 192 193 -g G_20L -f 191 196 190 -l 190 191 -l 196 190 -l 191 196 -g G_27L -f 196 197 198 -l 197 198 -l 196 197 -l 198 196 -g G_32L -f 199 200 201 -l 200 201 -l 200 199 -l 201 199 -g G_33L -f 198 202 203 -l 202 203 -l 198 202 -l 203 198 -g G_34L_ -f 204 205 197 -f 197 205 202 -f 197 202 198 -l 202 205 -l 198 202 -l 197 198 -l 197 204 -l 205 204 -g G_35L -f 203 206 207 -l 206 207 -l 203 206 -l 207 203 -g G_36L -f 203 202 206 -l 206 202 -l 203 206 -l 202 203 -g G_37L_ -f 208 209 206 -f 210 208 206 -f 210 206 202 -l 208 209 -l 210 208 -l 202 210 -l 206 202 -l 209 206 -g G_39L -f 201 211 212 -l 201 212 -l 211 201 -l 212 211 -g G_40L -f 212 211 213 -l 211 213 -l 212 211 -l 213 212 -g G_41L -f 200 206 214 -l 214 206 -l 200 214 -l 206 200 -g G_42L -f 206 214 215 -l 206 215 -l 214 206 -l 215 214 -g G_43L -f 216 215 206 -l 215 216 -l 206 215 -l 216 206 -g G_44L -f 217 181 179 -l 179 181 -l 179 217 -l 217 181 -g G_45L -f 217 188 182 -l 217 182 -l 217 188 -l 182 188 -g G_51 -f 218 201 219 -l 219 218 -l 219 201 -l 218 201 -g G_52L -f 220 201 212 -f 201 220 219 -l 201 212 -l 219 201 -l 220 219 -l 212 220 -g G_53L -f 220 212 221 -l 220 221 -l 212 220 -l 221 212 -g G_54L -f 222 220 221 -f 220 222 223 -l 222 223 -l 221 222 -l 220 221 -l 223 220 -g G_55L_ -f 223 224 222 -f 224 223 225 -l 223 225 -l 222 223 -l 224 222 -l 225 224 -g G_56L -f 226 213 221 -l 221 213 -l 221 226 -l 213 226 -g G_57L -f 221 213 222 -l 213 222 -l 221 213 -l 221 222 -g G_58L -f 213 227 222 -l 222 227 -l 213 222 -l 227 213 -g G_59L_ -f 219 228 223 -f 228 219 229 -f 219 223 220 -l 219 229 -l 220 219 -l 223 220 -l 223 228 -l 228 229 -g G_61L -f 230 231 232 -l 230 232 -l 231 230 -l 231 232 -g G_62L -f 230 233 231 -f 233 230 234 -l 233 234 -l 231 233 -l 231 230 -l 234 230 -g G_63L -f 235 236 230 -l 236 230 -l 236 235 -l 235 230 -g G_64L -f 236 234 230 -f 234 236 233 -f 233 236 237 -l 236 230 -l 236 237 -l 237 233 -l 233 234 -l 234 230 -g G_65L_ -f 233 238 231 -f 238 233 239 -f 238 239 236 -l 238 236 -l 231 238 -l 231 233 -l 239 233 -l 236 239 -g G_66L -f 235 240 241 -f 240 235 242 -f 242 235 243 -l 243 235 -l 243 242 -l 242 240 -l 241 240 -l 241 235 -g G_67L -f 244 230 232 -f 230 244 245 -l 245 244 -l 245 230 -l 230 232 -l 244 232 -g G_68L_ -f 246 247 248 -f 247 246 241 -f 247 241 249 -f 249 241 250 -l 246 248 -l 246 241 -l 241 250 -l 249 250 -l 247 249 -l 248 247 -g G_70 -f 134 5 2 -f 5 134 243 -l 134 2 -l 134 243 -l 243 5 -l 2 5 -g G_71 -f 230 251 235 -f 251 230 245 -l 245 230 -l 251 245 -l 251 235 -l 235 230 -g G_72 -f 251 243 235 -f 243 251 134 -l 251 235 -l 134 251 -l 134 243 -l 243 235 -g G_69L -f 238 176 179 -l 238 176 -l 179 238 -l 179 176 -g G_80L_ -f 246 94 252 -f 94 246 253 -f 94 253 95 -f 95 253 96 -l 95 94 -l 96 95 -l 253 96 -l 246 253 -l 246 252 -l 252 94 -g G_83 -f 252 93 254 -f 93 252 94 -f 254 93 91 -f 88 254 91 -l 252 94 -l 254 252 -l 88 254 -l 88 91 -l 91 93 -l 93 94 -g G_84L_ -f 176 252 255 -f 176 238 252 -l 255 252 -l 255 176 -l 238 176 -l 238 252 -g G_85L -f 255 256 257 -f 256 255 252 -l 255 252 -l 257 255 -l 256 257 -l 252 256 -g G_86L -f 255 257 258 -l 257 258 -l 257 255 -l 258 255 -g G_87L -f 255 259 178 -f 259 255 258 -l 178 259 -l 255 178 -l 258 255 -l 259 258 -g G_89L -f 252 260 261 -l 260 261 -l 260 252 -l 252 261 -g G_92L -f 262 263 264 -l 264 263 -l 262 264 -l 262 263 -g G_91L -f 265 261 257 -f 261 265 260 -l 257 265 -l 261 257 -l 260 261 -l 265 260 -g G_01R -f 266 267 268 -l 268 267 -l 268 266 -l 267 266 -g G_02R -f 266 268 269 -l 268 266 -l 268 269 -l 266 269 -g G_03R -f 266 269 270 -l 270 266 -l 269 270 -l 266 269 -g G_04R -f 267 271 272 -l 267 271 -l 267 272 -l 272 271 -g G_05R -f 267 272 268 -l 272 268 -l 267 272 -l 268 267 -g G_06R -f 268 272 273 -l 273 272 -l 273 268 -l 272 268 -g G_07R_ -f 269 273 274 -f 273 269 268 -l 274 273 -l 269 274 -l 268 269 -l 273 268 -g G_08R_ -f 269 274 275 -f 270 269 275 -l 274 275 -l 269 274 -l 269 270 -l 275 270 -g G_09R -f 275 274 276 -l 276 274 -l 275 276 -l 274 275 -g G_11R -f 277 272 278 -l 278 277 -l 272 278 -l 272 277 -g G_12R -f 273 272 277 -l 277 273 -l 272 277 -l 273 272 -g G_13R -f 273 277 274 -l 274 273 -l 277 274 -l 277 273 -g G_14R -f 276 274 279 -l 279 274 -l 276 279 -l 276 274 -g G_15R_ -f 280 281 278 -f 281 280 282 -l 278 280 -l 278 281 -l 282 281 -l 280 282 -g G_16R -f 274 277 282 -l 282 277 -l 274 282 -l 277 274 -g G_17R -f 274 282 283 -l 283 282 -l 274 283 -l 274 282 -g G_18R -f 274 283 279 -l 279 283 -l 279 274 -l 274 283 -g G_20R -f 284 280 285 -l 285 284 -l 280 285 -l 280 284 -g G_21L_ -f 286 287 288 -f 287 286 289 -f 289 286 290 -l 288 286 -l 288 287 -l 287 289 -l 289 290 -l 290 286 -g G_28L -f 287 291 288 -l 288 291 -l 288 287 -l 287 291 -g G_29L -f 289 291 287 -l 287 289 -l 287 291 -l 289 291 -g G_30L -f 289 292 291 -l 292 289 -l 291 292 -l 289 291 -g G_31L -f 289 293 292 -l 292 289 -l 293 292 -l 289 293 -g G_22L -f 294 293 289 -l 289 293 -l 289 294 -l 294 293 -g G_23L -f 295 293 294 -l 294 293 -l 295 294 -l 293 295 -g G_21R_ -f 296 297 285 -f 297 296 298 -f 297 298 283 -l 298 283 -l 296 298 -l 285 296 -l 285 297 -l 283 297 -g G_23R -f 299 283 300 -l 300 299 -l 283 300 -l 299 283 -g G_22R -f 283 298 300 -l 298 283 -l 298 300 -l 283 300 -g G_31R -f 298 301 300 -l 298 300 -l 301 298 -l 300 301 -g G_30R -f 298 302 301 -l 302 301 -l 298 302 -l 301 298 -g G_29R -f 298 296 302 -l 298 302 -l 296 298 -l 296 302 -g G_28R -f 296 285 302 -l 285 302 -l 285 296 -l 296 302 -g G_27R -f 285 303 302 -l 302 303 -l 285 302 -l 303 285 -g G_24L -f 304 305 199 -l 199 305 -l 304 199 -l 305 304 -g G_25L -f 306 199 307 -l 199 306 -l 199 307 -l 306 307 -g G_26L_ -f 196 308 309 -f 309 308 199 -l 196 309 -l 308 196 -l 199 308 -l 199 309 -g G_24R -f 310 218 311 -l 218 311 -l 218 310 -l 311 310 -g G_25R -f 312 310 311 -l 311 310 -l 312 311 -l 310 312 -g G_26R_ -f 285 311 303 -f 312 311 285 -l 311 303 -l 312 311 -l 285 312 -l 303 285 -g G_33R -f 303 311 313 -l 311 313 -l 311 303 -l 303 313 -g G_34R_ -f 301 302 314 -f 302 303 314 -f 303 313 314 -l 302 301 -l 302 303 -l 303 313 -l 313 314 -l 314 301 -g G_36R -f 315 316 313 -l 316 313 -l 315 316 -l 315 313 -g G_37R_ -f 317 318 319 -f 318 320 319 -f 319 320 321 -l 319 317 -l 321 319 -l 320 321 -l 318 320 -l 317 318 -g G_43R -f 320 322 323 -l 322 323 -l 320 322 -l 323 320 -g G_42R -f 322 324 323 -l 324 322 -l 323 324 -l 322 323 -g G_41R -f 325 324 322 -l 324 322 -l 325 324 -l 322 325 -g G_35R -f 315 325 322 -l 325 315 -l 322 325 -l 315 322 -g G_32R -f 315 326 325 -l 326 315 -l 325 326 -l 325 315 -g G_39R -f 218 325 327 -l 327 325 -l 218 327 -l 325 218 -g G_40R -f 327 325 324 -l 325 324 -l 327 325 -l 324 327 -g G_52R -f 328 218 219 -f 218 328 329 -f 218 329 327 -l 219 328 -l 219 218 -l 218 327 -l 329 327 -l 328 329 -g G_53R -f 329 327 330 -l 329 330 -l 329 327 -l 330 327 -g G_56R -f 327 331 330 -l 330 331 -l 330 327 -l 331 327 -g G_54R -f 332 330 333 -f 330 332 329 -f 329 332 334 -l 330 333 -l 329 330 -l 334 329 -l 332 334 -l 333 332 -g G_57R -f 330 331 333 -l 331 333 -l 330 331 -l 330 333 -g G_55R -f 332 333 225 -l 225 333 -l 225 332 -l 333 332 -g G_58R -f 331 335 333 -l 335 331 -l 333 335 -l 331 333 -g G_59R_ -f 328 329 228 -f 228 329 334 -l 228 328 -l 228 334 -l 334 329 -l 328 329 -g G_44R -f 336 337 338 -l 337 336 -l 338 337 -l 336 338 -g G_45R -f 339 337 336 -l 336 339 -l 337 336 -l 337 339 -g G_69R -f 267 338 340 -l 338 340 -l 267 338 -l 340 267 -g G_85R -f 341 342 343 -f 342 341 254 -l 254 341 -l 254 342 -l 343 342 -l 341 343 -g G_90 -f 260 341 265 -l 265 341 -l 265 260 -l 341 260 -g G_91R -f 341 343 265 -l 343 265 -l 341 343 -l 265 341 -g G_89R -f 260 254 341 -f 254 260 252 -l 254 341 -l 254 252 -l 260 252 -l 341 260 -g G_86R -f 344 342 345 -f 342 344 343 -l 343 344 -l 343 342 -l 345 342 -l 344 345 -g G_92R -f 343 346 347 -l 347 346 -l 347 343 -l 343 346 -g G_87R -f 266 348 349 -f 348 266 270 -l 349 266 -l 348 349 -l 270 348 -l 270 266 -g G_80R_ -f 88 340 254 -f 340 88 81 -f 81 88 79 -f 81 79 80 -l 79 88 -l 80 79 -l 81 80 -l 340 81 -l 340 254 -l 88 254 -g G_68R_ -f 340 82 350 -f 82 340 81 -f 350 82 86 -f 350 86 351 -l 82 81 -l 86 82 -l 351 86 -l 350 351 -l 340 350 -l 340 81 -g G_84R_ -f 267 342 254 -f 267 254 340 -l 267 342 -l 340 267 -l 340 254 -l 254 342 -g G_66R -f 351 251 350 -f 251 351 352 -f 251 352 134 -l 350 351 -l 350 251 -l 134 251 -l 352 134 -l 351 352 -g G_63R -f 251 245 350 -l 245 350 -l 251 245 -l 350 251 -g G_64R -f 353 350 245 -f 350 353 354 -l 353 245 -l 354 353 -l 350 354 -l 245 350 -g G_65R_ -f 340 354 355 -f 354 340 350 -l 355 340 -l 354 355 -l 350 354 -l 340 350 -g G_62R -f 355 353 245 -f 353 355 354 -l 245 355 -l 353 245 -l 354 353 -l 354 355 -g G_61R -f 245 356 355 -l 355 356 -l 245 355 -l 245 356 -g G_67R -f 245 244 356 -l 356 244 -l 245 356 -l 245 244 -g G_88R_ -f 349 270 357 -f 270 349 348 -f 349 357 358 -l 357 270 -l 357 358 -l 358 349 -l 348 349 -l 270 348 -g G_10R_ -f 275 276 359 -f 357 275 359 -f 270 275 357 -l 359 276 -l 357 359 -l 357 270 -l 275 270 -l 275 276 -g G_38R_ -f 318 320 360 -f 360 320 361 -f 320 323 361 -l 318 360 -l 318 320 -l 323 320 -l 361 323 -l 360 361 -g G_88L_ -f 178 258 362 -f 258 178 259 -f 258 363 362 -l 363 258 -l 362 363 -l 178 362 -l 178 259 -l 259 258 -g G_10L_ -f 178 362 185 -f 362 364 185 -f 185 364 186 -l 185 186 -l 185 178 -l 178 362 -l 362 364 -l 364 186 -g G_38L_ -f 365 366 216 -f 216 366 227 -f 367 365 216 -l 365 366 -l 367 365 -l 367 216 -l 227 216 -l 366 227 -g G_19aR -f 278 285 312 -l 285 312 -l 278 285 -l 312 278 -g G_19bR -f 278 280 285 -l 278 285 -l 278 280 -l 280 285 -g G_93L -f 368 369 262 -l 368 262 -l 369 368 -l 262 369 -g G_93R -f 369 347 262 -f 347 369 370 -l 370 347 -l 369 370 -l 262 369 -l 347 262 -l 371 372 \ No newline at end of file diff --git a/src/jsMain/resources/package.json b/src/jsMain/resources/package.json deleted file mode 100644 index 165a210459..0000000000 --- a/src/jsMain/resources/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "three": "^0.101.1" - } -} diff --git a/src/jsMain/resources/react-mosaic-component.css b/src/jsMain/resources/react-mosaic-component.css new file mode 100644 index 0000000000..a02c20f3ba --- /dev/null +++ b/src/jsMain/resources/react-mosaic-component.css @@ -0,0 +1,449 @@ +/** + * @license + * Copyright 2019 Kevin Verdieck, originally developed at Palantir Technologies, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +.mosaic { + height: 100%; + width: 100%; +} +.mosaic, +.mosaic > * { + box-sizing: border-box; +} +.mosaic .mosaic-zero-state { + position: absolute; + top: 6px; + right: 6px; + bottom: 6px; + left: 6px; + width: auto; + height: auto; + z-index: 1; +} +.mosaic-root { + position: absolute; + top: 3px; + right: 3px; + bottom: 3px; + left: 3px; +} +.mosaic-split { + position: absolute; + z-index: 1; + touch-action: none; +} +.mosaic-split:hover { + background: black; +} +.mosaic-split .mosaic-split-line { + position: absolute; +} +.mosaic-split.-row { + margin-left: -3px; + width: 6px; + cursor: ew-resize; +} +.mosaic-split.-row .mosaic-split-line { + top: 0; + bottom: 0; + left: 3px; + right: 3px; +} +.mosaic-split.-column { + margin-top: -3px; + height: 6px; + cursor: ns-resize; +} +.mosaic-split.-column .mosaic-split-line { + top: 3px; + bottom: 3px; + left: 0; + right: 0; +} +.mosaic-tile { + position: absolute; + margin: 3px; +} +.mosaic-tile > * { + height: 100%; + width: 100%; +} +.mosaic-drop-target { + position: relative; +} +.mosaic-drop-target.drop-target-hover .drop-target-container { + display: block; +} +.mosaic-drop-target.mosaic > .drop-target-container .drop-target.left { + right: calc(100% - 10px ); +} +.mosaic-drop-target.mosaic > .drop-target-container .drop-target.right { + left: calc(100% - 10px ); +} +.mosaic-drop-target.mosaic > .drop-target-container .drop-target.bottom { + top: calc(100% - 10px ); +} +.mosaic-drop-target.mosaic > .drop-target-container .drop-target.top { + bottom: calc(100% - 10px ); +} +.mosaic-drop-target .drop-target-container { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: none; +} +.mosaic-drop-target .drop-target-container.-dragging { + display: block; +} +.mosaic-drop-target .drop-target-container .drop-target { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: rgba(0, 0, 0, 0.2); + border: 2px solid black; + opacity: 0; + z-index: 5; +} +.mosaic-drop-target .drop-target-container .drop-target.left { + right: calc(100% - 30% ); +} +.mosaic-drop-target .drop-target-container .drop-target.right { + left: calc(100% - 30% ); +} +.mosaic-drop-target .drop-target-container .drop-target.bottom { + top: calc(100% - 30% ); +} +.mosaic-drop-target .drop-target-container .drop-target.top { + bottom: calc(100% - 30% ); +} +.mosaic-drop-target .drop-target-container .drop-target.drop-target-hover { + opacity: 1; +} +.mosaic-drop-target .drop-target-container .drop-target.drop-target-hover.left { + right: calc(100% - 50% ); +} +.mosaic-drop-target .drop-target-container .drop-target.drop-target-hover.right { + left: calc(100% - 50% ); +} +.mosaic-drop-target .drop-target-container .drop-target.drop-target-hover.bottom { + top: calc(100% - 50% ); +} +.mosaic-drop-target .drop-target-container .drop-target.drop-target-hover.top { + bottom: calc(100% - 50% ); +} +.mosaic-window, +.mosaic-preview { + position: relative; + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + overflow: hidden; + box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); +} +.mosaic-window .mosaic-window-toolbar, +.mosaic-preview .mosaic-window-toolbar { + z-index: 4; + display: -webkit-box; + display: flex; + -webkit-box-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + align-items: center; + flex-shrink: 0; + height: 30px; + background: white; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.mosaic-window .mosaic-window-toolbar.draggable, +.mosaic-preview .mosaic-window-toolbar.draggable { + cursor: move; +} +.mosaic-window .mosaic-window-title, +.mosaic-preview .mosaic-window-title { + padding-left: 15px; + -webkit-box-flex: 1; + flex: 1; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + min-height: 18px; +} +.mosaic-window .mosaic-window-controls, +.mosaic-preview .mosaic-window-controls { + display: -webkit-box; + display: flex; + height: 100%; +} +.mosaic-window .mosaic-window-controls .separator, +.mosaic-preview .mosaic-window-controls .separator { + height: 20px; + border-left: 1px solid black; + margin: 5px 4px; +} +.mosaic-window .mosaic-window-body, +.mosaic-preview .mosaic-window-body { + position: relative; + -webkit-box-flex: 1; + flex: 1; + height: 0; + background: white; + z-index: 1; + overflow: hidden; +} +.mosaic-window .mosaic-window-additional-actions-bar, +.mosaic-preview .mosaic-window-additional-actions-bar { + position: absolute; + top: 30px; + right: 0; + bottom: initial; + left: 0; + height: 0; + overflow: hidden; + background: white; + -webkit-box-pack: end; + justify-content: flex-end; + display: -webkit-box; + display: flex; + z-index: 3; +} +.mosaic-window .mosaic-window-additional-actions-bar .bp3-button, +.mosaic-preview .mosaic-window-additional-actions-bar .bp3-button { + margin: 0; +} +.mosaic-window .mosaic-window-additional-actions-bar .bp3-button:after, +.mosaic-preview .mosaic-window-additional-actions-bar .bp3-button:after { + display: none; +} +.mosaic-window .mosaic-window-body-overlay, +.mosaic-preview .mosaic-window-body-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 0; + background: white; + display: none; + z-index: 2; +} +.mosaic-window.additional-controls-open .mosaic-window-additional-actions-bar, +.mosaic-preview.additional-controls-open .mosaic-window-additional-actions-bar { + height: 30px; +} +.mosaic-window.additional-controls-open .mosaic-window-body-overlay, +.mosaic-preview.additional-controls-open .mosaic-window-body-overlay { + display: block; +} +.mosaic-window .mosaic-preview, +.mosaic-preview .mosaic-preview { + height: 100%; + width: 100%; + position: absolute; + z-index: 0; + border: 1px solid black; + max-height: 400px; +} +.mosaic-window .mosaic-preview .mosaic-window-body, +.mosaic-preview .mosaic-preview .mosaic-window-body { + display: -webkit-box; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + flex-direction: column; + -webkit-box-align: center; + align-items: center; + -webkit-box-pack: center; + justify-content: center; +} +.mosaic-window .mosaic-preview h4, +.mosaic-preview .mosaic-preview h4 { + margin-bottom: 10px; +} +.mosaic:not(.mosaic-blueprint-theme) .mosaic-default-control.close-button:before { + content: 'Close'; +} +.mosaic:not(.mosaic-blueprint-theme) .mosaic-default-control.split-button:before { + content: 'Split'; +} +.mosaic:not(.mosaic-blueprint-theme) .mosaic-default-control.replace-button:before { + content: 'Replace'; +} +.mosaic:not(.mosaic-blueprint-theme) .mosaic-default-control.expand-button:before { + content: 'Expand'; +} +.mosaic.mosaic-blueprint-theme { + background: #a7b6c2; +} +.mosaic.mosaic-blueprint-theme .mosaic-zero-state { + background: #e1e8ed; + border-radius: 3px; + box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); +} +.mosaic.mosaic-blueprint-theme .mosaic-split:hover { + background: none; +} +.mosaic.mosaic-blueprint-theme .mosaic-split:hover .mosaic-split-line { + box-shadow: 0 0 0 1px #2b95d6; +} +.mosaic.mosaic-blueprint-theme.mosaic-drop-target .drop-target-container .drop-target, +.mosaic.mosaic-blueprint-theme .mosaic-drop-target .drop-target-container .drop-target { + background: rgba(72, 175, 240, 0.2); + border: 2px solid #2b95d6; + -webkit-transition: opacity 100ms; + transition: opacity 100ms; + border-radius: 3px; +} +.mosaic.mosaic-blueprint-theme .mosaic-window, +.mosaic.mosaic-blueprint-theme .mosaic-preview { + box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + border-radius: 3px; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-toolbar, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-toolbar { + box-shadow: 0 1px 1px rgba(16, 22, 26, 0.15); + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-toolbar.draggable:hover, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-toolbar.draggable:hover { + background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f8fa)); + background: linear-gradient(to bottom, #ffffff, #f5f8fa); +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-toolbar.draggable:hover .mosaic-window-title, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-toolbar.draggable:hover .mosaic-window-title { + color: #10161a; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-title, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-title { + font-weight: 600; + color: #394b59; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-controls .separator, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-controls .separator { + border-left: 1px solid #d8e1e8; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-controls .bp3-button, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-controls .bp3-button, +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-controls .bp3-button:before, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-controls .bp3-button:before { + color: #738694; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-body, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-body { + border-top-width: 0; + background: #f5f8fa; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-additional-actions-bar, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-additional-actions-bar { + -webkit-transition: height 250ms; + transition: height 250ms; + box-shadow: 0 1px 1px rgba(16, 22, 26, 0.15); +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-additional-actions-bar .bp3-button, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-additional-actions-bar .bp3-button, +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-window-additional-actions-bar .bp3-button:before, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-window-additional-actions-bar .bp3-button:before { + color: #738694; +} +.mosaic.mosaic-blueprint-theme .mosaic-window.additional-controls-open .mosaic-window-toolbar, +.mosaic.mosaic-blueprint-theme .mosaic-preview.additional-controls-open .mosaic-window-toolbar { + box-shadow: 0 1px 0 0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-preview, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-preview { + border: 1px solid #8a9ba8; +} +.mosaic.mosaic-blueprint-theme .mosaic-window .mosaic-preview h4, +.mosaic.mosaic-blueprint-theme .mosaic-preview .mosaic-preview h4 { + color: #394b59; +} +.mosaic.mosaic-blueprint-theme.bp3-dark { + background: #202b33; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-zero-state { + background: #30404d; + box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-split:hover .mosaic-split-line { + box-shadow: 0 0 0 1px #137cbd; +} +.mosaic.mosaic-blueprint-theme.bp3-dark.mosaic-drop-target .drop-target-container .drop-target, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-drop-target .drop-target-container .drop-target { + background: rgba(16, 107, 163, 0.2); + border-color: #137cbd; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window-toolbar, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window-additional-actions-bar { + background: #30404d; + box-shadow: 0 1px 1px rgba(16, 22, 26, 0.4); +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview { + box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-toolbar.draggable:hover, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-toolbar.draggable:hover { + background: -webkit-gradient(linear, left top, left bottom, from(#394b59), to(#30404d)); + background: linear-gradient(to bottom, #394b59, #30404d); +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-toolbar.draggable:hover .mosaic-window-title, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-toolbar.draggable:hover .mosaic-window-title { + color: #ffffff; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-title, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-title { + color: #d8e1e8; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-controls .separator, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-controls .separator { + border-color: #5c7080; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-controls .bp3-button, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-controls .bp3-button, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-controls .bp3-button:before, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-controls .bp3-button:before { + color: #a7b6c2; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-body, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-body { + background: #293742; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-additional-actions-bar .bp3-button, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-additional-actions-bar .bp3-button, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-window-additional-actions-bar .bp3-button:before, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-window-additional-actions-bar .bp3-button:before { + color: #bfccd6; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window.additional-controls-open .mosaic-window-toolbar, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview.additional-controls-open .mosaic-window-toolbar { + box-shadow: 0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-preview, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-preview { + border-color: #5c7080; +} +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-window .mosaic-preview h4, +.mosaic.mosaic-blueprint-theme.bp3-dark .mosaic-preview .mosaic-preview h4 { + color: #ebf1f5; +} +/*# sourceMappingURL=react-mosaic-component.css.map */ \ No newline at end of file diff --git a/src/jsMain/resources/styles.css b/src/jsMain/resources/styles.css new file mode 100644 index 0000000000..b9690d55e6 --- /dev/null +++ b/src/jsMain/resources/styles.css @@ -0,0 +1,155 @@ +/* press-start-2p-regular - latin */ +@font-face { + font-family: 'Press Start 2P'; + font-style: normal; + font-weight: 400; + src: url('./fonts/press-start-2p-v8-latin-regular.eot'); /* IE9 Compat Modes */ + src: local('Press Start 2P Regular'), local('PressStart2P-Regular'), + url('./fonts/press-start-2p-v8-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('./fonts/press-start-2p-v8-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('./fonts/press-start-2p-v8-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('./fonts/press-start-2p-v8-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('./fonts/press-start-2p-v8-latin-regular.svg#PressStart2P') format('svg'); /* Legacy iOS */ +} + +body { + color: #ffffff; + background-color: #4F4F4F; + margin: 0; + overflow: hidden; + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; +} + +#content { + display: flex; + flex-direction: column; + align-items: stretch; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%;} + +/* disable the body scroll on mobile devices */ +body.noScroll { + overflow: hidden; +} + +.adminModelVisualizerContainer { + position: absolute; + width: 80%; + height: 80%; +} + +.mapperUi-screen { + width: 100%; + height: 100%; +} + +.mapperUi-controls { + position: absolute; + z-index: 1; +} + +.mapperUi-2d-canvas { + position: absolute; + display: block; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +.mapperUi-3d-div > canvas { + position: absolute; + display: block; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + mix-blend-mode: lighten; +} + +.mapperUi-diff-canvas { + position: absolute; + top: 10px; + right: 10px; + border: 1px groove white; +} + +.mapperUi-before-canvas { + position: absolute; + top: 310px; + right: 10px; + border: 1px groove white; +} + +.mapperUi-after-canvas { + position: absolute; + top: 610px; + right: 10px; + border: 1px groove white; +} + +.mapperUi-stats { + position: absolute; + right: 20px; + padding: 20px; + color: #00ff00; + font-family: 'Press Start 2P', sans-serif; + font-size: 8pt; + text-align: right; + width: 100%; + text-shadow: 1px 1px 3px black, -1px -1px 3px black; +} + +.mapperUi-message { + position: absolute; + bottom: 20px; + padding: 20px; + color: #00ff00; + font-family: 'Press Start 2P', sans-serif; + font-size: 16pt; + text-align: center; + width: 100%; + text-shadow: 1px 1px 3px black, -1px -1px 3px black; +} + +.mapperUi-message2 { + position: absolute; + bottom: 0; + padding: 20px; + color: #00ff00; + font-family: 'Press Start 2P', sans-serif; + font-size: 7pt; + text-align: center; + width: 100%; + text-shadow: 1px 1px 3px black, -1px -1px 3px black; +} + +.mapperUi-table { + position: absolute; + top: 30px; + padding: 20px; + color: #00ff00; + font-family: 'Press Start 2P', sans-serif; + font-size: 7pt; + width: 400px; + text-shadow: 1px 1px 3px black, -1px -1px 3px black; + background: rgba(0, 0, 0, .5); + height: 250px; +} + +video { + display: block; + position: absolute; + top: 0; + left: 0; + z-index: 10000; +} diff --git a/src/jsMain/resources/ui-index.html b/src/jsMain/resources/ui-index.html new file mode 100644 index 0000000000..b6b6aee3bf --- /dev/null +++ b/src/jsMain/resources/ui-index.html @@ -0,0 +1,11 @@ + + + + + sparklemotion + + + +Gohere! + + diff --git a/src/jsMain/resources/ui/index.html b/src/jsMain/resources/ui/index.html new file mode 100644 index 0000000000..859e702796 --- /dev/null +++ b/src/jsMain/resources/ui/index.html @@ -0,0 +1,23 @@ + + + + + sparklemotion + + + + + + + + +
    + + + + + + diff --git a/src/jsMain/resources/yarn.lock b/src/jsMain/resources/yarn.lock deleted file mode 100644 index 41e26dfa35..0000000000 --- a/src/jsMain/resources/yarn.lock +++ /dev/null @@ -1,8 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -three@^0.101.1: - version "0.101.1" - resolved "https://registry.yarnpkg.com/three/-/three-0.101.1.tgz#e7681ef52f4e572cb84f307f16f540c457030ec6" - integrity sha512-8ufimUVmRLtH+BTpEIbDjdGEKQOVWLMLgGynaKin1KbYTE136ZNOepJ8EgByi0tN43dQ7B1YrKLCJgXGy4bLmw== diff --git a/src/jsTest/kotlin/baaahs/assumeTrue.kt b/src/jsTest/kotlin/baaahs/assumeTrue.kt new file mode 100644 index 0000000000..b10e7dfd99 --- /dev/null +++ b/src/jsTest/kotlin/baaahs/assumeTrue.kt @@ -0,0 +1,7 @@ +package baaahs + +import kotlin.test.fail + +actual fun assumeTrue(boolean: Boolean) { + if (!boolean) fail("assumption failed!") +} \ No newline at end of file diff --git a/src/jsTest/kotlin/mockk.kt b/src/jsTest/kotlin/mockk.kt new file mode 100644 index 0000000000..460107e39e --- /dev/null +++ b/src/jsTest/kotlin/mockk.kt @@ -0,0 +1,10 @@ +import kotlin.reflect.KClass + +actual inline fun mockk( + name: String?, + relaxed: Boolean, + vararg moreInterfaces: KClass<*>, + relaxUnitFun: Boolean, + crossinline block: T.() -> Unit +): T = + error("mockk not supported in JS") \ No newline at end of file diff --git a/src/jsTest/kotlin/sample/SampleTestsJS.kt b/src/jsTest/kotlin/sample/SampleTestsJS.kt deleted file mode 100644 index c16985c64c..0000000000 --- a/src/jsTest/kotlin/sample/SampleTestsJS.kt +++ /dev/null @@ -1,11 +0,0 @@ -package sample - -import kotlin.test.Test -import kotlin.test.assertTrue - -class SampleTestsJS { - @Test - fun testHello() { - assertTrue("JS" in hello()) - } -} \ No newline at end of file diff --git a/src/jvmMain/jni/README.md b/src/jvmMain/jni/README.md new file mode 100644 index 0000000000..01e74bed9a --- /dev/null +++ b/src/jvmMain/jni/README.md @@ -0,0 +1,32 @@ +## libftd2xx + +From https://www.ftdichip.com/Drivers/D2XX.htm + +Note proviso for Mac: +>If using a device with standard FTDI vendor and product identifiers, install D2xxHelper to prevent OS X 10.11 (El Capitan) claiming the device as a serial port (locking out D2XX programs). + + +## libftd2xxj + +Java adapter for `libftd2xx`. + +From https://sourceforge.net/projects/ftd2xxj/files/ftd2xxj/2.1/ftd2xxj-native-2.1.zip/download + +Built against `libftd2xx` version 1.4.4 using `CMakeLists.txt`: +``` +cmake_minimum_required (VERSION 2.6) +project (ftd2xxj) +set(CMAKE_BUILD_TYPE Release) +find_package(JNI REQUIRED) +include_directories(${JNI_INCLUDE_DIRS}) +include_directories("/usr/local/include") + +file(GLOB LIBRARIES "/usr/local/lib/libftd2xx.dylib") +message("LIBRARIES = ${LIBRARIES}") + +set(SOURCE_FILES device.c deviceDescriptor.c eeprom.c error.c ftd2xxj.c logger.c port.c service.c) +add_library(ftd2xxj SHARED ${SOURCE_FILES}) + +set_target_properties(ftd2xxj PROPERTIES IMPORTED_LOCATION /usr/local/lib/libftd2xx.dylib ) +target_link_libraries(ftd2xxj ${LIBRARIES}) +``` \ No newline at end of file diff --git a/src/jvmMain/jni/libftd2xx.1.4.4.dylib b/src/jvmMain/jni/libftd2xx.1.4.4.dylib new file mode 100755 index 0000000000..316ec2f823 Binary files /dev/null and b/src/jvmMain/jni/libftd2xx.1.4.4.dylib differ diff --git a/src/jvmMain/jni/libftd2xx.dylib b/src/jvmMain/jni/libftd2xx.dylib new file mode 120000 index 0000000000..71d24d8b15 --- /dev/null +++ b/src/jvmMain/jni/libftd2xx.dylib @@ -0,0 +1 @@ +libftd2xx.1.4.4.dylib \ No newline at end of file diff --git a/src/jvmMain/jni/libftd2xxj-2.1.dylib b/src/jvmMain/jni/libftd2xxj-2.1.dylib new file mode 100755 index 0000000000..935694a825 Binary files /dev/null and b/src/jvmMain/jni/libftd2xxj-2.1.dylib differ diff --git a/src/jvmMain/jni/libftd2xxj.dylib b/src/jvmMain/jni/libftd2xxj.dylib new file mode 120000 index 0000000000..7e8506e842 --- /dev/null +++ b/src/jvmMain/jni/libftd2xxj.dylib @@ -0,0 +1 @@ +libftd2xxj-2.1.dylib \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/BrainMain.kt b/src/jvmMain/kotlin/baaahs/BrainMain.kt new file mode 100644 index 0000000000..872b217f09 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/BrainMain.kt @@ -0,0 +1,125 @@ +package baaahs + +import baaahs.net.JvmNetwork +import baaahs.util.SystemClock +import com.xenomachina.argparser.ArgParser +import com.xenomachina.argparser.default +import com.xenomachina.argparser.mainBody +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import java.awt.Canvas +import java.awt.Dimension +import java.awt.Frame +import java.awt.Graphics +import kotlin.math.ceil +import kotlin.math.min +import kotlin.math.roundToInt +import kotlin.math.sqrt +import kotlin.random.Random + +fun main(args: Array) { + mainBody(BrainMain::class.simpleName) { + BrainMain(ArgParser(args).parseInto(BrainMain::Args)).run() + } +} + +class BrainMain(private val args: Args) { + fun run() { + val model = Pluggables.loadModel(args.model) + + val network = JvmNetwork() + val brainId = args.brainId ?: JvmNetwork.myAddress.toString() + val brain = Brain(brainId, network, JvmPixelsDisplay(2000), SystemClock) + + val mySurface = if (args.anonymous) { + null + } else if (args.surfaceName == null) { + if (Random.nextBoolean()) model.allSurfaces.random() else null + } else { + model.allSurfaces.find { it.name == args.surfaceName } + ?: throw IllegalArgumentException("unknown surface \"${args.surfaceName}") + } + println("I'll be ${mySurface?.name ?: "anonymous"}!") + mySurface?.let { brain.forcedFixtureName(mySurface.name) } + + GlobalScope.launch { brain.run() } + + doRunBlocking { + delay(200000L) + } + } + + class Args(parser: ArgParser) { + val model by parser.storing("model").default(Pluggables.defaultModel) + val brainId by parser.storing("brain ID").default(null) + val surfaceName by parser.storing("surface name").default(null) + val anonymous by parser.flagging("anonymous surface").default(false) + } +} + +class JvmPixelsDisplay(pixelCount: Int) : Pixels { + override val size = pixelCount + private val colors = Array(size) { Color.BLACK } + private val pixelsPerRow = ceil(sqrt(size.toFloat())).roundToInt() + private val pixelsPerCol = pixelsPerRow + + private val frame = Frame("Pixels!") + private val canvas = PanelCanvas() + + inner class PanelCanvas : Canvas() { + override fun paint(g: Graphics?) { + g?.apply { + val doubleBuffer = createImage(width, height) + val bufG: Graphics = doubleBuffer.graphics + bufG.color = java.awt.Color.BLACK + bufG.clearRect(0, 0, width, height) + + for (i in 0 until this@JvmPixelsDisplay.size) { + val row = i % pixelsPerRow + val col = i / pixelsPerRow + + val pixWidth = width / pixelsPerCol + val pixHeight = height / pixelsPerRow + val pixGap = if (pixWidth > 3) 2 else if (pixWidth > 1) 1 else 0 + + val color = colors[i] + bufG.color = java.awt.Color(color.rgb) + + bufG.fillRect( + col * pixWidth, row * pixHeight, + pixWidth - pixGap, pixHeight - pixGap + ) + } + + g.drawImage(doubleBuffer, 0, 0, this@PanelCanvas) + } + } + } + + init { + frame.size = Dimension(300, 300) + frame.isVisible = true + + canvas.preferredSize = frame.size + canvas.background = java.awt.Color.BLACK + frame.add(canvas) + frame.pack() + frame.invalidate() + } + + override fun get(i: Int): Color = colors[i] + + override fun set(i: Int, color: Color) { + colors[i] = color + } + + override fun set(colors: Array) { + val pixCount = min(colors.size, size) + colors.copyInto(this.colors, 0, 0, pixCount) + } + + override fun finishedFrame() { + canvas.repaint() + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/DirectoryDaddy.kt b/src/jvmMain/kotlin/baaahs/DirectoryDaddy.kt new file mode 100644 index 0000000000..189a918539 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/DirectoryDaddy.kt @@ -0,0 +1,65 @@ +package baaahs + +import baaahs.io.Fs +import baaahs.io.RealFs +import baaahs.util.Logger + +class DirectoryDaddy(val fs: RealFs, val urlBase: String) : FirmwareDaddy { + private var preferredVersion: String? = null + + override suspend fun start() { + // TODO: Watch the directory for changes instead of just scanning once at startup + preferredVersion = findPreferredFirmware() + logger.debug { "Full URL is $urlForPreferredVersion" } + } + + private suspend fun findPreferredFirmware(): String? { + try { + val files = fs.listFiles(fs.rootFile) + logger.debug { "Found the following firmware files:" } + + var currentNum = 0 + var currentFile: Fs.File? = null + + for (f in files) { + if (!f.name.endsWith(".bin")) continue + + println(" $f"); + + val tokens = f.name.split("-") + if (tokens.size > 2) { + val num = tokens[1].toInt() + if (num > currentNum) { + currentNum = num + currentFile = f + } + } + } + + if (currentFile == null) { + logger.warn { " ** No .bin file is named with a proper firmware version like '0.0.1-450-gad9451b-dirty'" } + } else { + logger.debug { "Selected firmware ====> $currentFile" } + return currentFile.name.substring(0, currentFile.name.length - 4); + } + } catch (e: Exception) { + // Probably the directory doesn't exist + logger.error(e) { "Exception encountered looking for a firmware to vend. No firmware will be distributed." } + } + return null + } + + override fun doesntLikeThisVersion(firmwareVersion: String?): Boolean { + // If we didn't find a firmware, don't hassle people. Accept anything. + if (preferredVersion == null) return false + + return firmwareVersion != preferredVersion + } + + override val urlForPreferredVersion: String + get() = "$urlBase/$preferredVersion.bin" + + companion object { + private val logger = Logger("DirectoryDaddy") + } +} diff --git a/src/jvmMain/kotlin/baaahs/JvmSoundAnalyzer.kt b/src/jvmMain/kotlin/baaahs/JvmSoundAnalyzer.kt new file mode 100644 index 0000000000..d29cf39c75 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/JvmSoundAnalyzer.kt @@ -0,0 +1,122 @@ +package baaahs + +import baaahs.util.Logger +import be.tarsos.dsp.AudioDispatcher +import be.tarsos.dsp.AudioEvent +import be.tarsos.dsp.AudioProcessor +import be.tarsos.dsp.ConstantQ +import be.tarsos.dsp.io.jvm.JVMAudioInputStream +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import javax.sound.sampled.* +import kotlin.concurrent.thread + +class JvmSoundAnalyzer : SoundAnalyzer { + override val frequencies: FloatArray + get() = cqtAnalyzer.frequencies + + private val sampleRate = 44100f + private var cqtAnalyzer: CqtAnalyzer + private val listeners = mutableListOf() + + init { + cqtAnalyzer = createConstantQAnalyzer(getAudioInput()) + } + + override fun listen(analysisListener: SoundAnalyzer.AnalysisListener) { + listeners.add(analysisListener) + } + + override fun unlisten(analysisListener: SoundAnalyzer.AnalysisListener) { + listeners.remove(analysisListener) + } + + companion object { + private val logger = Logger("JvmMediaDevices") + } + + private fun createConstantQAnalyzer(mixer: Mixer): CqtAnalyzer { + logger.info { "Analyzing sound from ${mixer.mixerInfo.name}" } + return CqtAnalyzer(mixer) + } + + inner class CqtAnalyzer(mixer: Mixer) { + val frequencies: FloatArray + + private val dispatcher: AudioDispatcher + private val thread: Thread + + init { + val format = AudioFormat( + sampleRate, 16, /*channels =*/ 1, + /*signed =*/ true, /*bigEndian =*/ false + ) + + // 40hz/12 bins/spread of 2.3 fits into an 8k buffer with 87 buckets; not quite the piano keys but close. + val constantQ = ConstantQ(sampleRate, 40f, 6000f, 12f, 0.001f, 2.3f) + logger.debug { "FFT length: ${constantQ.ffTlength}; bins: ${constantQ.numberOfOutputBands}" } + val dataLineInfo = DataLine.Info(TargetDataLine::class.java, format) + val line: TargetDataLine + line = mixer.getLine(dataLineInfo) as TargetDataLine + val bufferSize = constantQ.ffTlength + val numberOfSamples = bufferSize + line.open(format, numberOfSamples) + line.start() + val stream = AudioInputStream(line) + + val audioStream = JVMAudioInputStream(stream) + // create a new dispatcher + val bufferOverlap = bufferSize / 2 + dispatcher = AudioDispatcher(audioStream, bufferSize, bufferOverlap) + + frequencies = constantQ.freqencies.copyOf() + dispatcher.addAudioProcessor(object : AudioProcessor { + override fun process(audioEvent: AudioEvent?): Boolean { + constantQ.process(audioEvent) + val analysis = SoundAnalyzer.Analysis(frequencies, constantQ.magnitudes.copyOf()) + + GlobalScope.launch { + listeners.forEach { it.onSample(analysis) } + } + return true + } + + override fun processingFinished() { + } + }) + thread = thread(name = "JvmMediaDevices Audio Processor", isDaemon = true) { + try { + dispatcher.run() + } catch (t: Throwable) { + logger.error(t) { "audio processing failed" } + } + } + } + + fun finalize() { + close() + } + + fun close() { + dispatcher.stop() + thread.join() + } + } + + private fun getAudioInput(): Mixer { + val playbackMixerInfos = getPlaybackMixerInfos() + logger.debug { "${playbackMixerInfos.size} playback mixers available:" } + playbackMixerInfos.forEach { logger.debug { "* ${it.name}" } } + val mixer = AudioSystem.getMixer(playbackMixerInfos.find { it.name == "Default Audio Device" }) + return mixer!! + } + + fun getPlaybackMixerInfos(): List { + return AudioSystem.getMixerInfo().mapNotNull { info -> + val mixer = AudioSystem.getMixer(info) + // Mixer capable of audio play back if source LineWavelet length != 0 + if (mixer.sourceLineInfo.isNotEmpty()) info else null + } + + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/PinkyMain.kt b/src/jvmMain/kotlin/baaahs/PinkyMain.kt new file mode 100644 index 0000000000..d632b945be --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/PinkyMain.kt @@ -0,0 +1,199 @@ +package baaahs + +import baaahs.dmx.Dmx +import baaahs.dmx.DmxDevice +import baaahs.gl.GlBase +import baaahs.gl.render.RenderManager +import baaahs.io.RealFs +import baaahs.net.JvmNetwork +import baaahs.plugin.PluginContext +import baaahs.plugin.Plugins +import baaahs.plugin.beatlink.BeatLinkBeatSource +import baaahs.plugin.beatlink.BeatLinkPlugin +import baaahs.plugin.beatlink.BeatSource +import baaahs.proto.Ports +import baaahs.sim.FakeDmxUniverse +import baaahs.util.Logger +import baaahs.util.SystemClock +import com.xenomachina.argparser.ArgParser +import com.xenomachina.argparser.default +import com.xenomachina.argparser.mainBody +import io.ktor.application.* +import io.ktor.features.* +import io.ktor.http.content.* +import io.ktor.routing.* +import kotlinx.coroutines.ObsoleteCoroutinesApi +import kotlinx.coroutines.newSingleThreadContext +import kotlinx.coroutines.runBlocking +import java.io.File +import java.io.FileNotFoundException +import java.nio.file.FileSystems +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths + +@ObsoleteCoroutinesApi +fun main(args: Array) { + mainBody(PinkyMain::class.simpleName) { + PinkyMain(ArgParser(args).parseInto(PinkyMain::Args)).run() + } +} + +@ObsoleteCoroutinesApi +class PinkyMain(private val args: Args) { + private val logger = Logger("PinkyMain") + private val pinkyMainDispatcher = newSingleThreadContext("Pinky Main") + + fun run() { + logger.info { "Are you pondering what I'm pondering?" } + + GlBase.manager // Need to wake up OpenGL on the main thread. + + val model = Pluggables.loadModel(args.model) + + val network = JvmNetwork() + val dataDir = File(System.getProperty("user.home")).toPath().resolve("sparklemotion/data") +// Files.createDirectories(dataDir) + + val fwDir = File(System.getProperty("user.home")).toPath().resolve("sparklemotion/fw") + + val fs = RealFs("Sparkle Motion Data", dataDir) + + val dmxUniverse = findDmxUniverse() + + val clock = SystemClock + val beatSource = if (args.enableBeatLink) { + BeatLinkBeatSource(clock).also { it.start() } + } else { + BeatSource.None + } + + val fwUrlBase = "http://${network.link("pinky").myAddress.address.hostAddress}:${Ports.PINKY_UI_TCP}/fw" + val daddy = DirectoryDaddy(RealFs("Sparkle Motion Firmware", fwDir), fwUrlBase) + val soundAnalyzer = JvmSoundAnalyzer() +// TODO GlslBase.plugins.add(SoundAnalysisPlugin(soundAnalyzer)) + + val pluginContext = PluginContext(clock) + val plugins = Plugins.safe(pluginContext) + + BeatLinkPlugin.Builder(beatSource) + + val pinky = runBlocking(pinkyMainDispatcher) { + val renderManager = RenderManager(model) { GlBase.manager.createContext() } + Pinky( + model, network, dmxUniverse, clock, fs, + daddy, soundAnalyzer, switchShowAfterIdleSeconds = args.switchShowAfter, + adjustShowAfterIdleSeconds = args.adjustShowAfter, + renderManager = renderManager, + plugins = plugins, + pinkyMainDispatcher = pinkyMainDispatcher + ) + } + + val ktor = (pinky.httpServer as JvmNetwork.RealLink.KtorHttpServer) + val resource = Pinky::class.java.classLoader.getResource("baaahs")!! + if (resource.protocol == "jar") { + val uri = resource.toURI()!! + FileSystems.newFileSystem(uri, mapOf("create" to "true")) + val jsResDir = Paths.get(uri).parent.resolve("htdocs") + testForIndexDotHtml(jsResDir) + + ktor.application.routing { + static { + resources("htdocs") + route("admin") { default("htdocs/admin/index.html") } + route("mapper") { default("htdocs/mapper/index.html") } + route("ui") { default("htdocs/ui/index.html") } + defaultResource("htdocs/ui-index.html") + } + } + } else { + val classPathBaseDir = Paths.get(resource.file).parent + val repoDir = classPathBaseDir.parent.parent.parent.parent.parent + val jsResDir = repoDir.resolve("build/processedResources/js/main") + testForIndexDotHtml(jsResDir) + + ktor.application.routing { + static { + staticRootFolder = jsResDir.toFile() + + file("sparklemotion.js", + repoDir.resolve("build/distributions/sparklemotion.js").toFile()) + + files(jsResDir.toFile()) + route("admin") { default("admin/index.html") } + route("mapper") { default("mapper/index.html") } + route("ui") { default("ui/index.html") } + default("ui-index.html") + } + } + } + + ktor.application.install(CallLogging) + ktor.application.routing { + static("fw") { + files(fwDir.toFile()) + } + } + + val responses = listOf( + "I think so, Brain, but Lederhosen won't stretch that far.", + "Yeah, but I thought Madonna already had a steady bloke!", + "I think so, Brain, but what would goats be doing in red leather turbans?", + "I think so, Brain... but how would we ever determine Sandra Bullock's shoe size?", + "Yes, Brain, I think so. But how do we get Twiggy to pose with an electric goose?" + ) + logger.info { responses.random() } + + runBlocking(pinkyMainDispatcher) { + pinky.startAndRun(simulateBrains = args.simulateBrains) + } + } + + private fun testForIndexDotHtml(jsResDir: Path) { + val indexHtml = jsResDir.resolve("index.html") + if (!Files.exists(indexHtml)) { + throw FileNotFoundException("$indexHtml doesn't exist and it really probably should!") + } + } + + private fun findDmxUniverse(): Dmx.Universe { + val dmxDevices = try { + DmxDevice.listDevices() + } catch (e: UnsatisfiedLinkError) { + logger.warn { "DMX driver not found, DMX will be disabled." } + e.printStackTrace() + return FakeDmxUniverse() + } + + if (dmxDevices.isNotEmpty()) { + if (dmxDevices.size > 1) { + logger.warn { "Multiple DMX USB devices found, using ${dmxDevices.first()}." } + } + + return dmxDevices.first() + } + + logger.warn { "No DMX USB devices found, DMX will be disabled." } + return FakeDmxUniverse() + } + + class Args(parser: ArgParser) { + val model by parser.storing("model").default(Pluggables.defaultModel) + + val showName by parser.storing("show").default(null) + + val switchShowAfter by parser.storing( + "Switch show after no input for x seconds", + transform = { if (isNullOrEmpty()) null else toInt() }) + .default(600) + + val adjustShowAfter by parser.storing( + "Start adjusting show inputs after no input for x seconds", + transform = { if (isNullOrEmpty()) null else toInt() }) + .default(null) + + val enableBeatLink by parser.flagging("Enable beat detection").default(true) + + val simulateBrains by parser.flagging("Simulate connected brains").default(false) + } +} diff --git a/src/jvmMain/kotlin/baaahs/SimulatorBridge.kt b/src/jvmMain/kotlin/baaahs/SimulatorBridge.kt new file mode 100644 index 0000000000..1428ea43b5 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/SimulatorBridge.kt @@ -0,0 +1,108 @@ +package baaahs + +import baaahs.plugin.beatlink.BeatData +import baaahs.plugin.beatlink.BeatLinkBeatSource +import baaahs.proto.Ports +import baaahs.ui.addObserver +import baaahs.util.SystemClock +import io.ktor.application.* +import io.ktor.http.cio.websocket.* +import io.ktor.http.cio.websocket.CloseReason.Codes.* +import io.ktor.http.cio.websocket.Frame.* +import io.ktor.request.* +import io.ktor.routing.* +import io.ktor.server.engine.* +import io.ktor.server.netty.* +import io.ktor.websocket.* +import kotlinx.serialization.builtins.ListSerializer +import kotlinx.serialization.builtins.serializer +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.add +import kotlinx.serialization.json.buildJsonArray +import java.time.Duration + +object SimulatorBridge { + private val json = Json + private val webSocketConnections = mutableListOf() + + private val soundAnalyzer = JvmSoundAnalyzer() + + private val httpServer = embeddedServer(Netty, Ports.SIMULATOR_BRIDGE_TCP) { + install(io.ktor.websocket.WebSockets) { + pingPeriod = Duration.ofSeconds(15) + timeout = Duration.ofSeconds(15) + maxFrameSize = Long.MAX_VALUE + masking = false + } + + routing { + webSocket("/bridge") { + println("Connection from ${this.call.request.host()}…") + webSocketConnections.add(this) + + sendFrequencies(this) + + for (frame in incoming) { + when (frame) { + is Text -> { + val text = frame.readText() + if (text.equals("bye", ignoreCase = true)) { + close(CloseReason(NORMAL, "Client said BYE")) + webSocketConnections.remove(this) + } + } + } + } + + webSocketConnections.remove(this) + } + } + } + + private fun sendFrequencies(connection: WebSocketServerSession) { + connection.outgoing.offer( + Text(toWsMessage( + "soundFrequencies", + json.encodeToJsonElement(ListSerializer(Float.serializer()), soundAnalyzer.frequencies.toList()) + )) + ) + } + + fun run() { + val beatLinkBeatSource = BeatLinkBeatSource(SystemClock) + beatLinkBeatSource.addObserver { + val beatData = beatLinkBeatSource.getBeatData() + sendToClients("beatData", json.encodeToJsonElement(BeatData.serializer(), beatData)) + } + beatLinkBeatSource.start() + + soundAnalyzer.listen(object : SoundAnalyzer.AnalysisListener { + override fun onSample(analysis: SoundAnalyzer.Analysis) { + // todo: don't send more frequently than framerate + sendToClients( + "soundMagnitudes", + json.encodeToJsonElement(ListSerializer(Float.serializer()), analysis.magnitudes.toList()) + ) + } + }) + + httpServer.start(true) + } + + private fun sendToClients(command: String, json: JsonElement) { + val frame = toWsMessage(command, json) + webSocketConnections.forEach { it.outgoing.offer(Text(frame)) } + } + + private fun toWsMessage(command: String, json: JsonElement): String { + return SimulatorBridge.json.encodeToString(JsonElement.serializer(), buildJsonArray { + add(command) + add(json) + }) + } +} + +fun main() { + SimulatorBridge.run() +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/app/ui/PlatformIconsJvm.kt b/src/jvmMain/kotlin/baaahs/app/ui/PlatformIconsJvm.kt new file mode 100644 index 0000000000..ce8010f544 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/app/ui/PlatformIconsJvm.kt @@ -0,0 +1,29 @@ +package baaahs.app.ui + +import baaahs.ui.Icon + +actual fun getCommonIcons(): PlatformIcons = object : PlatformIcons { + override val Add: Icon = FakeIcon + override val Fixture: Icon = FakeIcon + override val Patch: Icon = FakeIcon + override val DataSource: Icon = FakeIcon + override val ShaderChannel: Icon = FakeIcon + override val Settings: Icon = FakeIcon + override val None: Icon = FakeIcon + override val DistortionShader: Icon = FakeIcon + override val FilterShader: Icon = FakeIcon + override val PaintShader: Icon = FakeIcon + override val MoverShader: Icon = FakeIcon + override val UnknownShader: Icon = FakeIcon + override val ProjectionShader: Icon = FakeIcon + override val BeatLinkControl: Icon = FakeIcon + override val Button: Icon = FakeIcon + override val ButtonGroup = FakeIcon + override val ColorPalette: Icon = FakeIcon + override val Visualizer: Icon = FakeIcon + override val Info: Icon = FakeIcon + override val Warning: Icon = FakeIcon + override val Error: Icon = FakeIcon +} + +object FakeIcon : Icon \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/app/ui/editor/EditorPanelsJvm.kt b/src/jvmMain/kotlin/baaahs/app/ui/editor/EditorPanelsJvm.kt new file mode 100644 index 0000000000..1b9d1b5f28 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/app/ui/editor/EditorPanelsJvm.kt @@ -0,0 +1,4 @@ +package baaahs.app.ui.editor + +actual fun getEditorPanelViews(): EditorPanelViews = + error("not implemented on JVM") \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/dmx/DmxDevice.kt b/src/jvmMain/kotlin/baaahs/dmx/DmxDevice.kt new file mode 100644 index 0000000000..a7390d70f0 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/dmx/DmxDevice.kt @@ -0,0 +1,97 @@ +package baaahs.dmx + +import com.ftdichip.ftd2xx.* + +class DmxDevice(usbDevice: Device) : Dmx.Universe() { + private val buf = ByteArray(513) // DMX wants byte 0 to always be 0 + private val dmxTransmitter = DmxTransmitter(usbDevice).apply { start() } + + override fun writer(baseChannel: Int, channelCount: Int): Dmx.Buffer = + Dmx.Buffer(buf, baseChannel, channelCount) + + override fun sendFrame() { + dmxTransmitter.update(buf) + } + + override fun allOff() { + buf.fill(0) + } + + fun close() { + dmxTransmitter.keepRunning = false + dmxTransmitter.join() + } + + fun finalize() { + close() + } + + private class DmxTransmitter(private val device: Device) : Thread("DMXTransmitter") { + val DMX_TRANSMIT_DELAY = 20 + + internal var keepRunning = true + private var updated = false + private val newData: ByteArray = ByteArray(513) + private val currentData: ByteArray = ByteArray(513) + + init { + device.open() + configureDmx() + } + + private fun configureDmx() { + val port = device.getPort() + port.setDivisor(12) + port.setDataCharacteristics(DataBits.DATA_BITS_8, StopBits.STOP_BITS_2, Parity.NONE) + port.setFlowControl(FlowControl.NONE) + port.setRTS(false) + device.latencyTimer = 40 + device.purgeReceiveBuffer() + device.purgeTransmitBuffer() + } + + @Synchronized + fun update(buf: ByteArray) { + buf.copyInto(newData) + updated = true + } + + override fun run() { + while (keepRunning) { + fillNewDataIfUpdated() + transmit(currentData) + } + } + + @Synchronized + private fun fillNewDataIfUpdated() { + if (updated) { + newData.copyInto(currentData) + updated = false + } + } + + @Throws(FTD2xxException::class) + private fun transmit(bytes: ByteArray) { + val port = device.port + port.setBreakOn(true) + port.setBreakOn(false) + device.write(bytes) + + sleep(DMX_TRANSMIT_DELAY) + } + + private fun sleep(millis: Int) { + try { + Thread.sleep(millis.toLong()) + } catch (e: InterruptedException) { + e.printStackTrace() + } + } + } + + companion object { + fun listDevices() = Service.listDevicesByType(DeviceType.FT_DEVICE_232R).map { DmxDevice(it) } + } + +} diff --git a/src/jvmMain/kotlin/baaahs/forJvm.kt b/src/jvmMain/kotlin/baaahs/forJvm.kt deleted file mode 100644 index a98819a89e..0000000000 --- a/src/jvmMain/kotlin/baaahs/forJvm.kt +++ /dev/null @@ -1,15 +0,0 @@ -package baaahs - -import kotlinx.coroutines.runBlocking - -actual fun doRunBlocking(block: suspend () -> Unit) = runBlocking { block() } - -actual fun getResource(name: String): String { - return Main::class.java.getResource(name).readText() -} - -actual fun getDisplay(): Display { - throw UnsupportedOperationException("not implemented") -} - -actual fun getTimeMillis(): Long = System.currentTimeMillis() \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/geom/Vector2.kt b/src/jvmMain/kotlin/baaahs/geom/Vector2.kt new file mode 100644 index 0000000000..a090abcb7a --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/geom/Vector2.kt @@ -0,0 +1,6 @@ +package baaahs.geom + +actual class Vector2 actual constructor(x: Double, y: Double) { + actual var x = x + actual var y = y +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/gl/JoglGlManager.kt b/src/jvmMain/kotlin/baaahs/gl/JoglGlManager.kt new file mode 100644 index 0000000000..337b684efd --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/gl/JoglGlManager.kt @@ -0,0 +1,43 @@ +package baaahs.gl + +import com.danielgergely.kgl.Kgl +import com.danielgergely.kgl.KglJogl +import com.jogamp.newt.opengl.GLWindow +import com.jogamp.opengl.* + +class JoglGlManager : GlManager() { + override val available: Boolean + get() = true + + override fun createContext(trace: Boolean): GlContext { + val gl = createGLContext() + val kgl = maybeTrace(KglJogl(gl as GL3ES3), trace) + return JoglGlContext(kgl, gl) + } + + class JoglGlContext(kgl: Kgl, gl: GL4) : GlContext(kgl, "330 core") { + private val context = gl.context + override fun runInContext(fn: () -> T): T { + context.makeCurrent() + try { + return fn() + } finally { + context.release() + } + } + } + + companion object { + fun createGLContext(): GL4 { + val glProfile = GLProfile.getGL4ES3() + val glCapabilities = GLCapabilities(glProfile) + glCapabilities.isOnscreen = false + val glWindow = GLWindow.create(glCapabilities) + glWindow.isUndecorated = true + val factory = GLDrawableFactory.getFactory(glProfile) + val autoDrawable = factory.createOffscreenAutoDrawable(null, glCapabilities, null, 1, 1) + autoDrawable.display() + return TraceGL4(autoDrawable.gl as GL4?, System.out) + } + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/gl/JvmGlBase.kt b/src/jvmMain/kotlin/baaahs/gl/JvmGlBase.kt new file mode 100644 index 0000000000..6fb7f35a1f --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/gl/JvmGlBase.kt @@ -0,0 +1,5 @@ +package baaahs.gl + +actual object GlBase { + actual val manager: GlManager by lazy { LwjglGlManager() } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/gl/LwjglGlManager.kt b/src/jvmMain/kotlin/baaahs/gl/LwjglGlManager.kt new file mode 100644 index 0000000000..c671ba1935 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/gl/LwjglGlManager.kt @@ -0,0 +1,89 @@ +package baaahs.gl + +import baaahs.util.Logger +import com.danielgergely.kgl.Kgl +import com.danielgergely.kgl.KglLwjgl +import org.lwjgl.glfw.GLFW +import org.lwjgl.opengl.GLCapabilities + +class LwjglGlManager : GlManager() { + private val window: Long + + init { + window = glWindow + } + + override val available: Boolean + get() = window != 0L + + override fun createContext(trace: Boolean): GlContext { + if (!available) throw RuntimeException("GLSL not available") + GLFW.glfwMakeContextCurrent(window) + checkCapabilities() + GLFW.glfwMakeContextCurrent(0) + + return LwjglGlContext(maybeTrace(KglLwjgl(), trace)) + } + + inner class LwjglGlContext(kgl: Kgl) : GlContext(kgl, "330 core") { + var nestLevel = 0 + override fun runInContext(fn: () -> T): T { + if (++nestLevel == 1) { + GLFW.glfwMakeContextCurrent(window) + checkCapabilities() + } + try { + return fn() + } finally { + if (--nestLevel == 0) { + GLFW.glfwMakeContextCurrent(0) + } + } + } + } + + companion object { + private val logger = Logger("LwjglGlslManager") + private val glCapabilities: ThreadLocal = + ThreadLocal.withInitial { org.lwjgl.opengl.GL.createCapabilities() } + + // This is initialization stuff that has to run on the main thread. + private val glWindow: Long by lazy { + println("init LwjglGlslManager") + if (Thread.currentThread().name != "main") { + logger.warn { "GLSL not available. On a Mac, start java with `-XstartOnFirstThread`" } + 0L + } else if (System.getenv("NO_GPU") == "true") { + logger.warn { "NO_GPU=true; GLSL not available." } + 0L + } else { +// GLFW.glfwSetErrorCallback(GLFWErrorCallback.createPrint(System.err)) + check(GLFW.glfwInit()) { "Unable to initialize GLFW" } + + GLFW.glfwDefaultWindowHints() + GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MAJOR, 3) + GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_VERSION_MINOR, 2) + GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE, GLFW.GLFW_OPENGL_CORE_PROFILE) + GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_FORWARD_COMPAT, GLFW.GLFW_TRUE) + GLFW.glfwWindowHint(GLFW.GLFW_VISIBLE, GLFW.GLFW_FALSE) + GLFW.glfwWindowHint(GLFW.GLFW_RESIZABLE, GLFW.GLFW_FALSE) + GLFW.glfwWindowHint(GLFW.GLFW_SAMPLES, 8) + GLFW.glfwWindowHint(GLFW.GLFW_CONTEXT_RELEASE_BEHAVIOR, GLFW.GLFW_RELEASE_BEHAVIOR_NONE) + GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_DEBUG_CONTEXT, GLFW.GLFW_TRUE) + + val glwfWindow = GLFW.glfwCreateWindow(300, 300, "Hello shaders!", 0, 0) + if (glwfWindow == 0L) + throw RuntimeException("Failed to create the GLFW window") + + GLFW.glfwPollEvents() // Get the event loop warmed up. + + glwfWindow + } + } + + // get via ThreadLocal because it's expensive and only has to happen once per thread + private fun checkCapabilities() { + glCapabilities.get() + } + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/gl/preview/ShaderPreviewBootstrapper.kt b/src/jvmMain/kotlin/baaahs/gl/preview/ShaderPreviewBootstrapper.kt new file mode 100644 index 0000000000..6a1dcbda20 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/gl/preview/ShaderPreviewBootstrapper.kt @@ -0,0 +1,9 @@ +package baaahs.gl.preview + +actual interface ShaderPreviewBootstrapper + +actual object MovingHeadPreviewBootstrapper : ShaderPreviewBootstrapper + +actual object ProjectionPreviewBootstrapper : ShaderPreviewBootstrapper + +actual object QuadPreviewBootstrapper : ShaderPreviewBootstrapper diff --git a/src/jvmMain/kotlin/baaahs/imaging/NativeBitmap.kt b/src/jvmMain/kotlin/baaahs/imaging/NativeBitmap.kt new file mode 100644 index 0000000000..44770daf66 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/imaging/NativeBitmap.kt @@ -0,0 +1,60 @@ +package baaahs.imaging + +import baaahs.MediaDevices + +actual class NativeBitmap actual constructor(width: Int, height: Int) : Bitmap { + override fun toDataUrl(): String { + TODO("NativeBitmap.toDataUrl not implemented") + } + + override val width: Int + get() = TODO("NativeBitmap.width not implemented") + + override val height: Int + get() = TODO("NativeBitmap.height not implemented") + + override fun drawImage(image: Image) { + TODO("NativeBitmap.drawImage not implemented") + } + + override fun drawImage( + image: Image, + sX: Int, + sY: Int, + sWidth: Int, + sHeight: Int, + dX: Int, + dY: Int, + dWidth: Int, + dHeight: Int + ) { + TODO("NativeBitmap.drawImage not implemented") + } + override fun copyFrom(other: Bitmap) { + TODO("NativeBitmap.copyFrom not implemented") + } + + override fun lighten(other: Bitmap) { + TODO("NativeBitmap.lighten not implemented") + } + + override fun darken(other: Bitmap) { + TODO("NativeBitmap.darken not implemented") + } + + override fun subtract(other: Bitmap) { + TODO("NativeBitmap.subtract not implemented") + } + + override fun withData(region: MediaDevices.Region, fn: (data: UByteClampedArray) -> Boolean) { + TODO("NativeBitmap.withData not implemented") + } + + override fun asImage(): Image { + TODO("NativeBitmap.asImage not implemented") + } + + override fun clone(): Bitmap { + TODO("NativeBitmap.clone not implemented") + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/io/RealFs.kt b/src/jvmMain/kotlin/baaahs/io/RealFs.kt new file mode 100644 index 0000000000..b59169f26c --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/io/RealFs.kt @@ -0,0 +1,57 @@ +package baaahs.io + +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.StandardOpenOption +import kotlin.streams.toList + +class RealFs( + override val name: String, + private val basePath: Path +) : Fs { + override suspend fun listFiles(directory: Fs.File): List { + val dir = resolve(directory) + return if (Files.isDirectory(dir)) { + Files.list(dir).map { directory.resolve(it.fileName.toString()) }.toList() + } else { + emptyList() + } + } + + override suspend fun loadFile(file: Fs.File): String? { + val destPath = resolve(file) + try { + return Files.readAllBytes(destPath).decodeToString() + } catch (e: java.nio.file.NoSuchFileException) { + return null + } + } + + override suspend fun saveFile(file: Fs.File, content: ByteArray, allowOverwrite: Boolean) { + val destPath = resolve(file) + if (!Files.exists(destPath.parent)) { + Files.createDirectories(destPath.parent) + } + Files.write( + destPath, + content, + if (allowOverwrite) StandardOpenOption.CREATE else StandardOpenOption.CREATE_NEW + ) + } + + override suspend fun saveFile(file: Fs.File, content: String, allowOverwrite: Boolean) { + saveFile(file, content.encodeToByteArray(), allowOverwrite) + } + + override suspend fun exists(file: Fs.File): Boolean { + return Files.exists(resolve(file)) + } + + override suspend fun isDirectory(file: Fs.File): Boolean { + return Files.isDirectory(resolve(file)) + } + + private fun resolve(file: Fs.File): Path { + return basePath.resolve(file.fullPath) + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/io/knownFsClasses.kt b/src/jvmMain/kotlin/baaahs/io/knownFsClasses.kt new file mode 100644 index 0000000000..3b58fa8c40 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/io/knownFsClasses.kt @@ -0,0 +1,6 @@ +package baaahs.io + +import kotlin.reflect.KClass + +actual val platformFsClasses: Set> + get() = setOf(RealFs::class) \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/jvmImpl.kt b/src/jvmMain/kotlin/baaahs/jvmImpl.kt new file mode 100644 index 0000000000..244f8e022a --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/jvmImpl.kt @@ -0,0 +1,16 @@ +package baaahs + +import baaahs.util.Clock +import baaahs.util.SystemClock +import kotlinx.coroutines.runBlocking +import java.util.* + +actual fun doRunBlocking(block: suspend () -> Unit) = runBlocking { block() } + +actual fun getResource(name: String): String { + return Pinky::class.java.classLoader.getResource(name).readText() +} + +actual val internalTimerClock: Clock = SystemClock + +actual fun decodeBase64(s: String): ByteArray = Base64.getDecoder().decode(s) \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/net/JvmNetwork.kt b/src/jvmMain/kotlin/baaahs/net/JvmNetwork.kt new file mode 100644 index 0000000000..5317caf332 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/net/JvmNetwork.kt @@ -0,0 +1,201 @@ +package baaahs.net + +import baaahs.util.Logger +import io.ktor.application.* +import io.ktor.http.cio.websocket.* +import io.ktor.request.* +import io.ktor.routing.* +import io.ktor.server.engine.* +import io.ktor.server.netty.* +import io.ktor.websocket.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import java.io.IOException +import java.net.DatagramPacket +import java.net.DatagramSocket +import java.net.InetAddress +import java.net.InetSocketAddress +import java.nio.ByteBuffer +import java.time.Duration + +class JvmNetwork : Network { + private val link = RealLink() + + companion object { + const val MAX_UDP_SIZE = 1450 + //const val MAX_UDP_SIZE = 4096 + + val logger = Logger("JvmNetwork") +// val myAddress = InetAddress.getLocalHost() + val myAddress = InetAddress.getByName("127.0.0.1") + val broadcastAddress = InetAddress.getByName("255.255.255.255") + + val networkScope = CoroutineScope(Dispatchers.IO) + + fun msgId(data: ByteArray): String { + return "msgId=${((data[0].toInt() and 0xff) * 256) or (data[1].toInt() and 0xff)}" + } + + } + + override fun link(name: String): RealLink = link + + inner class RealLink : Network.Link { + + override val udpMtu = MAX_UDP_SIZE + + override fun listenUdp(port: Int, udpListener: Network.UdpListener): Network.UdpSocket { + val socket = JvmUdpSocket(port) + Thread { + val data = ByteArray(MAX_UDP_SIZE) + while (true) { + val packetIn = DatagramPacket(data, MAX_UDP_SIZE) + socket.udpSocket.receive(packetIn) + networkScope.launch { + try { + udpListener.receive( + IpAddress(packetIn.address), + packetIn.port, + data.copyOfRange(packetIn.offset, packetIn.length) + ) + } catch (e: Exception) { + RuntimeException("Error handling UDP packet", e).printStackTrace() + } + } + } + }.start() + return socket + } + + inner class JvmUdpSocket(override val serverPort: Int) : Network.UdpSocket { + internal var udpSocket = DatagramSocket(serverPort) + + init { +// println("Trying to set send buffer size to ${4*MAX_UDP_SIZE}") +// udpSocket.sendBufferSize = 4*MAX_UDP_SIZE; + logger.info { "UDP socket bound to ${udpSocket.localAddress}" } + logger.debug { "Send buffer size is ${udpSocket.sendBufferSize}" } + } + + override fun sendUdp(toAddress: Network.Address, port: Int, bytes: ByteArray) { + // println("Sending ${bytes.size} bytes to ${toAddress}") + val packetOut = DatagramPacket(bytes, 0, bytes.size, (toAddress as IpAddress).address, port) + try { + udpSocket.send(packetOut) + } catch (e: IOException) { + throw IOException("sending to $toAddress: ${e.message}", e) + } + } + + override fun broadcastUdp(port: Int, bytes: ByteArray) { + val packetOut = DatagramPacket(bytes, 0, bytes.size, InetSocketAddress(broadcastAddress, port)) + udpSocket.send(packetOut) + } + } + + override fun startHttpServer(port: Int): KtorHttpServer = + KtorHttpServer(port).also { it.httpServer.start(false) } + + override fun connectWebSocket( + toAddress: Network.Address, + port: Int, + path: String, + webSocketListener: Network.WebSocketListener + ): Network.TcpConnection { + TODO("JvmNetwork.connectWebSocket not implemented") + } + + inner class KtorHttpServer(val port: Int) : Network.HttpServer { + val httpServer = embeddedServer(Netty, port, configure = { + // Let's give brains lots of time for OTA download: + responseWriteTimeoutSeconds = 3000 + }) { + install(io.ktor.websocket.WebSockets) { + pingPeriod = Duration.ofSeconds(15) + timeout = Duration.ofSeconds(15) + maxFrameSize = Long.MAX_VALUE + masking = false + } + } + + val application: Application get() = httpServer.application + + override fun listenWebSocket( + path: String, + onConnect: (incomingConnection: Network.TcpConnection) -> Network.WebSocketListener + ) { + httpServer.application.routing { + webSocket(path) { + val tcpConnection = object : Network.TcpConnection { + override val fromAddress: Network.Address + get() = myAddress // TODO Fix + override val toAddress: Network.Address + get() = myAddress // TODO fix + override val port: Int + get() = this@KtorHttpServer.port + + override fun send(bytes: ByteArray) { + val frame = Frame.Binary(true, ByteBuffer.wrap(bytes.clone())) + GlobalScope.launch { + this@webSocket.send(frame) + this@webSocket.flush() + } + } + } + + println("Connection from ${this.call.request.host()}…") + val webSocketListener = onConnect(tcpConnection) + webSocketListener.connected(tcpConnection) + + try { + while (true) { + val frame = incoming.receive() + if (frame is Frame.Binary) { + val bytes = frame.readBytes() + webSocketListener.receive(tcpConnection, bytes) + } else { + println("wait huh? received weird data: $frame") + } + } + } catch (e: Exception) { + e.printStackTrace() + close(CloseReason( + CloseReason.Codes.INTERNAL_ERROR, "Internal error: ${e.message}")) + } finally { + webSocketListener.reset(tcpConnection) + } + } + + webSocket("/sm/udpProxy") { + try { + JvmUdpProxy().handle(this) + } catch (e: Exception) { + e.printStackTrace() + } + } + } + } + } + + override val myAddress = IpAddress.mine() + + } + + data class IpAddress(val address: InetAddress) : Network.Address { + companion object { + fun mine(): IpAddress { + val envIp: String? = System.getenv("sparklemotion_ip") + envIp?.let { + return IpAddress(InetAddress.getByName(it)) + } + return IpAddress(InetAddress.getLocalHost()) + } + } + + override fun toString(): String { + return "IpAddress($address)" + } + } +} diff --git a/src/jvmMain/kotlin/baaahs/net/JvmUdpProxy.kt b/src/jvmMain/kotlin/baaahs/net/JvmUdpProxy.kt new file mode 100644 index 0000000000..047bd5d6c7 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/net/JvmUdpProxy.kt @@ -0,0 +1,94 @@ +package baaahs.net + +import baaahs.io.ByteArrayReader +import baaahs.io.ByteArrayWriter +import baaahs.net.JvmNetwork.Companion.networkScope +import baaahs.util.Logger +import io.ktor.http.cio.websocket.* +import io.ktor.websocket.* +import kotlinx.coroutines.launch +import java.net.DatagramPacket +import java.net.DatagramSocket +import java.net.InetAddress +import java.nio.ByteBuffer + +class JvmUdpProxy { + companion object { + val logger = Logger("JvmUdpProxy") + } + + suspend fun handle( + session: DefaultWebSocketServerSession + ) { + var socket : DatagramSocket? = null + val listenThread = Thread { + val data = ByteArray(JvmNetwork.MAX_UDP_SIZE) + val packetIn = DatagramPacket(data, JvmNetwork.MAX_UDP_SIZE) + while (true) { +// logger.debug { "UDP: wait for packet" } + socket!!.receive(packetIn) +// logger.debug { "UDP: received packet!" } + val frame = Frame.Binary(true, ByteBuffer.wrap(ByteArrayWriter().apply { + writeByte(Network.UdpProxy.RECEIVE_OP.toByte()) + writeBytes(packetIn.address.address) + writeInt(packetIn.port) + writeBytes(data, packetIn.offset, packetIn.length) +// logger.debug { "UDP: Receive ${packetIn.length} ${msgId(data)} from ${packetIn.address}:${packetIn.port}" } + }.toBytes())) + networkScope.launch { +// logger.debug { "UDP: Receive: forward ${packetIn.length} ${msgId(data)} from ${packetIn.address}:${packetIn.port}" } + session.send(frame) + session.flush() +// logger.debug { "UDP: Receive: forwarded! ${packetIn.length} ${msgId(data)} from ${packetIn.address}:${packetIn.port}" } + } + } + } + + while (true) { +// logger.debug { "UDP: wait for WebSocket command" } + val frame = session.incoming.receive() +// logger.debug { "UDP: received for WebSocket command!" } + if (frame is Frame.Binary) { + val bytes = frame.readBytes() + ByteArrayReader(bytes).apply { + val op = readByte() + when (op) { + Network.UdpProxy.LISTEN_OP.toByte() -> { + socket = DatagramSocket() // We'll take any port the system gives us. + listenThread.start() + logger.debug { "UDP: Listening on ${socket!!.localPort}" } + } + Network.UdpProxy.SEND_OP.toByte() -> { + val toAddress = readBytes() + val toPort = readInt() + val data = readBytes() + val toInetAddress = InetAddress.getByAddress(toAddress) + val packet = DatagramPacket(data, 0, data.size, toInetAddress, toPort) + networkScope.launch { +// logger.debug { "UDP: Will send ${data.size} ${msgId(data)} to $toInetAddress:$toPort" } + socket!!.send(packet) +// logger.debug { "UDP: Sent ${data.size} ${msgId(data)} to $toInetAddress:$toPort" } + } + } + Network.UdpProxy.BROADCAST_OP.toByte() -> { + val toPort = readInt() + val data = readBytes() + val packet = DatagramPacket(data, 0, data.size, + JvmNetwork.broadcastAddress, toPort) + networkScope.launch { +// logger.debug { "UDP: Will broadcast ${data.size} ${msgId(data)} to *:$toPort" } + socket!!.send(packet) +// logger.debug { "UDP: Broadcast ${data.size} ${msgId(data)} to *:$toPort" } + } + } + else -> { + logger.warn { "UDP: Huh? unknown op $op: $bytes" } + } + } + } + } else { + logger.warn { "wait huh? received weird data: $frame" } + } + } + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/plugin/beatlink/BeatLinkBeatSource.kt b/src/jvmMain/kotlin/baaahs/plugin/beatlink/BeatLinkBeatSource.kt new file mode 100644 index 0000000000..e8f401f1e5 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/plugin/beatlink/BeatLinkBeatSource.kt @@ -0,0 +1,127 @@ +package baaahs.plugin.beatlink + +import baaahs.ui.Observable +import baaahs.util.Clock +import baaahs.util.Logger +import baaahs.util.Time +import org.deepsymmetry.beatlink.* +import kotlin.concurrent.thread +import kotlin.math.abs + +/** + * Listens to all connected CDJs' beat and tempo updates. + * + * We pick the CDJ to sync shows to based on the following priority: + * 1) The CDJ that is currently on-air (has its fader up on the mixer) + * 2) If more than one CDJ is on-air, pick the CDJ that is the Tempo Master + */ +class BeatLinkBeatSource( + private val clock: Clock +) : Observable(), BeatSource, BeatListener, OnAirListener { + + var currentBeat: BeatData = BeatData(0.0, 0, confidence = 0f) + + private val logger = Logger("BeatLinkBeatSource") + private val currentlyAudibleChannels: MutableSet = hashSetOf() + private var lastBeatAt: Time? = null + + fun start() { + logger.info { "Starting Beat Sync" } + val deviceFinder = DeviceFinder.getInstance() + deviceFinder.start() + deviceFinder.addDeviceAnnouncementListener(object : DeviceAnnouncementListener { + override fun deviceLost(announcement: DeviceAnnouncement) { + logger.info { "Lost device: ${announcement.name}" } + } + + override fun deviceFound(announcement: DeviceAnnouncement) { + logger.info { "New device: ${announcement.name}" } + } + }) + + // To find some kinds of information, like which device is the tempo master, how many beats of a track have been + // played, or how many beats there are until the next cue point in a track, and any detailed information about + // the tracks themselves, you need to have beat-link create a virtual player on the network. This causes the + // other players to send detailed status updates directly to beat-link, so it can interpret and keep track of + // this information for you. + val virtualCdj = VirtualCdj.getInstance() + virtualCdj.useStandardPlayerNumber = true + virtualCdj.addLifecycleListener(object : LifecycleListener { + override fun stopped(sender: LifecycleParticipant?) { + logger.info { "VirtualCdj stopped!" } + } + + override fun started(sender: LifecycleParticipant?) { + logger.info { "VirtualCdj started as device ${virtualCdj.deviceNumber}" } + } + }) + virtualCdj.start() + + thread(isDaemon = true, name = "VirtualCdj watchdog") { + while (true) { + Thread.sleep(5000) + + if (!virtualCdj.isRunning) { + logger.info { "Attempting to restart VirtualCdj..." } + virtualCdj.start() + } + } + } + + thread(isDaemon = true, name = "Beat confidence decay") { + while (true) { + Thread.sleep(32) + + lastBeatAt?.let { + if (it < clock.now() - currentBeat.beatIntervalMs * currentBeat.beatsPerMeasure) { + currentBeat = currentBeat.copy(confidence = currentBeat.confidence * .9f) + notifyChanged() + } + } + } + } + + val beatListener = BeatFinder.getInstance() + beatListener.addBeatListener(this) + beatListener.addOnAirListener(this) + beatListener.start() + logger.info { "Started" } + } + + override fun channelsOnAir(audibleChannels: MutableSet?) { + currentlyAudibleChannels.clear() + audibleChannels?.let { currentlyAudibleChannels.addAll(it) } + } + + override fun newBeat(beat: Beat) { + if ( + // if more than one channel is on air, pick the tempo master + currentlyAudibleChannels.size > 1 && beat.isTempoMaster + + // if no channels are on air, pick the master + || currentlyAudibleChannels.isEmpty() && beat.isTempoMaster + + // one channel is on air; pick the cdj that's on it + || currentlyAudibleChannels.size == 1 && beat.deviceNumber == currentlyAudibleChannels.single() + ) { + val beatIntervalSec = 60.0 / beat.effectiveTempo + val beatIntervalMs = (beatIntervalSec * 1000).toInt() + val now = clock.now() + val measureStartTime = now - beatIntervalSec * (beat.beatWithinBar - 1) + if (currentBeat.beatIntervalMs != beatIntervalMs || + abs(currentBeat.measureStartTime - measureStartTime) > 0.003 + ) { + currentBeat = BeatData(measureStartTime, beatIntervalMs, confidence = 1.0f) + logger.debug { "${beat.deviceName} on channel ${beat.deviceNumber}: Setting bpm from beat ${beat.beatWithinBar}" } + notifyChanged() + } + lastBeatAt = now + } else { + logger.debug { "${beat.deviceName} on channel ${beat.deviceNumber}: Ignoring beat ${beat.beatWithinBar}" } + } + } + + override fun getBeatData(): BeatData { + return currentBeat + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/plugin/beatlink/JvmBeatLinkViews.kt b/src/jvmMain/kotlin/baaahs/plugin/beatlink/JvmBeatLinkViews.kt new file mode 100644 index 0000000000..0f5c327eec --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/plugin/beatlink/JvmBeatLinkViews.kt @@ -0,0 +1,3 @@ +package baaahs.plugin.beatlink + +actual fun getBeatLinkViews(): BeatLinkViews = error("Not available on JVM") \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/show/live/ControlViews.kt b/src/jvmMain/kotlin/baaahs/show/live/ControlViews.kt new file mode 100644 index 0000000000..fa72d0ae78 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/show/live/ControlViews.kt @@ -0,0 +1,3 @@ +package baaahs.show.live + +actual fun getControlViews(): ControlViews = error("Not available on JVM") \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/ui/Renderer.kt b/src/jvmMain/kotlin/baaahs/ui/Renderer.kt new file mode 100644 index 0000000000..956f46afb7 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/ui/Renderer.kt @@ -0,0 +1,5 @@ +package baaahs.ui + +actual interface Renderer + +actual interface Icon \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/util/GammaGenerator.kt b/src/jvmMain/kotlin/baaahs/util/GammaGenerator.kt new file mode 100644 index 0000000000..fb73b72466 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/util/GammaGenerator.kt @@ -0,0 +1,48 @@ +@file:Suppress("ConstantConditionIf") + +package baaahs.util + +import kotlin.math.floor +import kotlin.math.pow + +const val comments = false +const val storeFractional = false + +fun main() { + val gamma = 2.2 + for (v in 0..255) { + val adjustedV = (v / 255.0).pow(gamma) * 255 + val vInt = floor(adjustedV).toInt() + val quantError = adjustedV - vInt + + if (storeFractional) { + print("{$vInt,${floor(quantError * 255).toInt()}}") + if (comments) { + println(" // origV=$v") + } + } else { + var dither = 0 + var ditherV = 0 + for (b in arrayOf(0, 4, 2, 6, 1, 6, 3, 7)) { + val bitOn = quantError > b / 8.0 + 1 / 16.0 + dither = dither.shl(1).or(if (bitOn) 1 else 0) + ditherV += if (bitOn) 1 else 0 + } + if (vInt == 255) dither = 0 + + print("{$vInt,0b${dither.toString(2)}}") + if (comments) { + println(" // origV=$v quantError=${quantError.round()} diff=${(ditherV / 8.0 - quantError).round()}") + } + } + + if (!comments) { + if (v != 255) print(",") + if (v % 8 == 7) print("\n") + } + } +} + +fun Double.round(): String { + return ((this * 100).toInt() / 100.0).toString() +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/util/LoggerImplJvm.kt b/src/jvmMain/kotlin/baaahs/util/LoggerImplJvm.kt new file mode 100644 index 0000000000..abed8f744f --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/util/LoggerImplJvm.kt @@ -0,0 +1,25 @@ +package baaahs.util + +import org.slf4j.LoggerFactory + +actual fun log(id: String, level: LogLevel, message: () -> String, exception: Throwable?) { + try { + val logger = LoggerFactory.getLogger(id) + when (level) { + LogLevel.DEBUG -> if (logger.isDebugEnabled) logger.debug(message(), exception) + LogLevel.INFO -> if (logger.isInfoEnabled) logger.info(message(), exception) + LogLevel.WARN -> if (logger.isWarnEnabled) logger.warn(message(), exception) + LogLevel.ERROR -> if (logger.isErrorEnabled) logger.error(message(), exception) + } + } catch (t: Throwable) { + println("!!! Logger bailing, ${t.message}") + } +} + +actual fun logGroupBegin(id: String, message: String) { + log(id, LogLevel.INFO, { ">> $message" }) +} + +actual fun logGroupEnd(id: String, message: String) { + log(id, LogLevel.INFO, { "<< $message" }) +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/util/SystemClock.kt b/src/jvmMain/kotlin/baaahs/util/SystemClock.kt new file mode 100644 index 0000000000..dc23d499cc --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/util/SystemClock.kt @@ -0,0 +1,7 @@ +package baaahs.util + +object SystemClock : Clock { + override fun now(): Time { + return System.currentTimeMillis().toDouble() / 1000.0 + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/visualizer/VizScene.kt b/src/jvmMain/kotlin/baaahs/visualizer/VizScene.kt new file mode 100644 index 0000000000..04fcd8aa75 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/visualizer/VizScene.kt @@ -0,0 +1,8 @@ +package baaahs.visualizer + +actual class VizScene { + actual fun add(obj: VizObj) { + } +} + +actual class VizObj \ No newline at end of file diff --git a/src/jvmMain/kotlin/baaahs/visualizer/movers/Cone.kt b/src/jvmMain/kotlin/baaahs/visualizer/movers/Cone.kt new file mode 100644 index 0000000000..aa9e74e1b0 --- /dev/null +++ b/src/jvmMain/kotlin/baaahs/visualizer/movers/Cone.kt @@ -0,0 +1,12 @@ +package baaahs.visualizer.movers + +import baaahs.model.MovingHead +import baaahs.visualizer.VizScene + +actual class Cone actual constructor(movingHead: MovingHead, colorMode: ColorMode) { + actual fun addTo(scene: VizScene) { + } + + actual fun update(state: State) { + } +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/sample/SampleJvm.kt b/src/jvmMain/kotlin/sample/SampleJvm.kt deleted file mode 100644 index b87230e06e..0000000000 --- a/src/jvmMain/kotlin/sample/SampleJvm.kt +++ /dev/null @@ -1,9 +0,0 @@ -package sample - -actual class Sample { - actual fun checkMe() = 42 -} - -actual object Platform { - actual val name: String = "JVM" -} \ No newline at end of file diff --git a/src/jvmMain/lib/README.md b/src/jvmMain/lib/README.md new file mode 100644 index 0000000000..f2367e2c7a --- /dev/null +++ b/src/jvmMain/lib/README.md @@ -0,0 +1,11 @@ +## ftd2xxj + +From https://sourceforge.net/projects/ftd2xxj/ + +## javax.util.property-2_0.jar + +Used by `ftd2xxj`, from https://sourceforge.net/projects/ftd2xxj/ + +## TarsosDSP-2.4-bin.jar + +Used for digital signal processing. See https://github.com/JorenSix/TarsosDSP/releases/tag/v2.4 / https://0110.be/releases/TarsosDSP/TarsosDSP-2.4/ diff --git a/src/jvmMain/lib/TarsosDSP-2.4-bin.jar b/src/jvmMain/lib/TarsosDSP-2.4-bin.jar new file mode 100644 index 0000000000..ca04cad01a Binary files /dev/null and b/src/jvmMain/lib/TarsosDSP-2.4-bin.jar differ diff --git a/src/jvmMain/lib/TarsosDSP-2.4.jar b/src/jvmMain/lib/TarsosDSP-2.4.jar new file mode 100644 index 0000000000..7471eac9b3 Binary files /dev/null and b/src/jvmMain/lib/TarsosDSP-2.4.jar differ diff --git a/src/jvmMain/lib/ftd2xxj-2.1.jar b/src/jvmMain/lib/ftd2xxj-2.1.jar new file mode 100644 index 0000000000..dd7c9b736c Binary files /dev/null and b/src/jvmMain/lib/ftd2xxj-2.1.jar differ diff --git a/src/jvmMain/lib/javax.util.property-2_0.jar b/src/jvmMain/lib/javax.util.property-2_0.jar new file mode 100644 index 0000000000..9ca3993948 Binary files /dev/null and b/src/jvmMain/lib/javax.util.property-2_0.jar differ diff --git a/src/jvmMain/resources/logback.xml b/src/jvmMain/resources/logback.xml new file mode 100644 index 0000000000..a5bd62a7fc --- /dev/null +++ b/src/jvmMain/resources/logback.xml @@ -0,0 +1,13 @@ + + + + %d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + diff --git a/src/jvmTest/kotlin/baaahs/RunOpenGLTests.kt b/src/jvmTest/kotlin/baaahs/RunOpenGLTests.kt new file mode 100644 index 0000000000..fc2c9e7bf4 --- /dev/null +++ b/src/jvmTest/kotlin/baaahs/RunOpenGLTests.kt @@ -0,0 +1,51 @@ +package baaahs + +import baaahs.gl.LwjglGlManager +import baaahs.gl.render.RenderEngineTest +import org.junit.platform.engine.TestExecutionResult +import org.junit.platform.engine.discovery.DiscoverySelectors.selectClass +import org.junit.platform.launcher.LauncherDiscoveryRequest +import org.junit.platform.launcher.TestExecutionListener +import org.junit.platform.launcher.TestIdentifier +import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder +import org.junit.platform.launcher.core.LauncherFactory +import org.junit.platform.launcher.listeners.SummaryGeneratingListener +import java.io.PrintWriter + +val testsRequiringOpenGL = listOf( + RenderEngineTest::class +) + +fun main() { + LwjglGlManager().available + + val request: LauncherDiscoveryRequest = + LauncherDiscoveryRequestBuilder.request() + .selectors(testsRequiringOpenGL.map { selectClass(it.java) }) + .build() + val launcher = LauncherFactory.create() + val testPlan = launcher.discover(request) + val listener = SummaryGeneratingListener() + launcher.registerTestExecutionListeners(listener, object : TestExecutionListener { + override fun executionStarted(testIdentifier: TestIdentifier) { + System.out.println("${testIdentifier.displayName} started\n") + } + + override fun executionSkipped(testIdentifier: TestIdentifier, reason: String) { + System.out.println("${testIdentifier.displayName} skipped${if (reason.isEmpty()) "" else ": $reason"}\n") + } + + override fun executionFinished(testIdentifier: TestIdentifier, testExecutionResult: TestExecutionResult) { + System.out.println("${testIdentifier.displayName} finished: ${testExecutionResult.status}\n") + } + }) + launcher.execute(testPlan, listener) + + listener.summary.printFailuresTo(PrintWriter(System.out)) + System.out.println("\n\n---\n\n") + listener.summary.printTo(PrintWriter(System.out)) + + if (listener.summary.failures.isNotEmpty()) { + System.exit(1) + } +} diff --git a/src/jvmTest/kotlin/baaahs/assumeTrue.kt b/src/jvmTest/kotlin/baaahs/assumeTrue.kt new file mode 100644 index 0000000000..1cdedb98b5 --- /dev/null +++ b/src/jvmTest/kotlin/baaahs/assumeTrue.kt @@ -0,0 +1,7 @@ +package baaahs + +import org.junit.Assume + +actual fun assumeTrue(boolean: Boolean) { + Assume.assumeTrue(boolean) +} \ No newline at end of file diff --git a/src/jvmTest/kotlin/baaahs/fixtures/FixtureManagerSpec.kt b/src/jvmTest/kotlin/baaahs/fixtures/FixtureManagerSpec.kt new file mode 100644 index 0000000000..d619ff1c14 --- /dev/null +++ b/src/jvmTest/kotlin/baaahs/fixtures/FixtureManagerSpec.kt @@ -0,0 +1,136 @@ +package baaahs.fixtures + +import baaahs.FakeModelEntity +import baaahs.describe +import baaahs.fakeModel +import baaahs.gl.glsl.GlslType +import baaahs.gl.override +import baaahs.gl.patch.ContentType +import baaahs.gl.render.DeviceTypeForTest +import baaahs.gl.render.FixtureRenderTarget +import baaahs.gl.render.RenderManager +import baaahs.gl.shader.OpenShader +import baaahs.gl.shader.OutputPort +import baaahs.gl.testToolchain +import baaahs.model.Model +import baaahs.only +import baaahs.shaders.fakeFixture +import baaahs.show.Shader +import baaahs.show.live.FakeOpenShader +import baaahs.show.live.ShowOpener +import baaahs.show.mutable.MutableShow +import baaahs.shows.FakeGlContext +import baaahs.shows.FakeShowPlayer +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import org.spekframework.spek2.Spek + +object FixtureManagerSpec : Spek({ + describe { + val modelEntities by value { emptyList() } + val model by value { fakeModel(modelEntities) } + val renderManager by value { RenderManager(model) { FakeGlContext() } } + val renderTargets by value { linkedMapOf() } + val fixtureManager by value { FixtureManager(renderManager, renderTargets) } // Maintain stable fixture order for test. + + context("when fixtures of multiple types have been added") { + val fogginess by value { ContentType("fogginess", "Fogginess", GlslType.Float) } + val fogMachineDevice by value { DeviceTypeForTest(id = "fogMachine", resultContentType = fogginess) } + + val deafeningness by value { ContentType("deafeningness", "Deafeningness", GlslType.Float) } + val vuzuvelaDevice by value { DeviceTypeForTest(id = "vuzuvela", resultContentType = deafeningness) } + + val fogMachine1 by value { fakeFixture(1, FakeModelEntity("fog1", fogMachineDevice)) } + val fogMachine2 by value { fakeFixture(1, FakeModelEntity("fog2", fogMachineDevice)) } + val vuzuvela1 by value { fakeFixture(1, FakeModelEntity("vuzuvela1", vuzuvelaDevice)) } + val vuzuvela2 by value { fakeFixture(1, FakeModelEntity("vuzuvela2", vuzuvelaDevice)) } + val fixtures by value { listOf(fogMachine1, fogMachine2, vuzuvela1, vuzuvela2) } + override(modelEntities) { fixtures.map { it.modelEntity } } + val initialFixtures by value { fixtures } + + beforeEachTest { + fixtureManager.fixturesChanged(initialFixtures, emptyList()) + } + + context("generating programs to cover every fixture") { + val show by value { + MutableShow("Test Show") { + addPatch { + addShaderInstance( + Shader( + "Pea Soup", + """ + vec4 main() { return vec4(0.); } + """.trimIndent() + ) + ) + addShaderInstance( + Shader( + "Din", """ + vec4 main() { return vec4(0.); } + """.trimIndent() + ) + ) + } + }.getShow() + } + + val openShow by value { + object : ShowOpener(testToolchain, show, FakeShowPlayer(model)) { + override fun openShader(shader: Shader): OpenShader { + val contentType = when (shader.title) { + "Pea Soup" -> fogginess + "Din" -> deafeningness + else -> error("unknown shader") + } + return FakeOpenShader(emptyList(), OutputPort(contentType), shader.title) + } + }.openShow() + } + + val activePatchSet by value { openShow.activePatchSet() } + + beforeEachTest { + fixtureManager.activePatchSetChanged(activePatchSet) + val updated = fixtureManager.maybeUpdateRenderPlans(openShow) + expect(updated).toBe(true) + } + + val renderPlan by value { fixtureManager.currentRenderPlan!! } + val fogMachinePrograms by value { renderPlan[fogMachineDevice]!!.programs } + val vuzuvelaPrograms by value { renderPlan[vuzuvelaDevice]!!.programs } + + it("creates a RenderPlan to cover all device types") { + val fogMachineProgram = fogMachinePrograms.only("program") + val vuzuvelaProgram = vuzuvelaPrograms.only("program") + + expect(fogMachineProgram.renderTargets.map { it.fixture }) + .containsExactly(fogMachine1,fogMachine2) + expect(vuzuvelaProgram.renderTargets.map { it.fixture }) + .containsExactly(vuzuvela1,vuzuvela2) + + expect(fogMachineProgram.program!!.title).toBe("Pea Soup") + expect(vuzuvelaProgram.program!!.title).toBe("Din") + } + + context("when more fixtures are added") { + override(initialFixtures) { listOf(fogMachine1) } + + beforeEachTest { + expect(renderPlan.keys).toBe(setOf(fogMachineDevice)) + + fixtureManager.fixturesChanged(listOf(vuzuvela1), emptyList()) + val updated = fixtureManager.maybeUpdateRenderPlans(openShow) + expect(updated).toBe(true) + } + + it("updates the RenderPlan to include the new fixture") { + val newRenderPlan = fixtureManager.currentRenderPlan!! + expect(newRenderPlan.keys).toBe(setOf(fogMachineDevice, vuzuvelaDevice)) + } + } + } + } + } +}) diff --git a/src/jvmTest/kotlin/baaahs/plugin/beatlink/BeatLinkBeatSourceTest.kt b/src/jvmTest/kotlin/baaahs/plugin/beatlink/BeatLinkBeatSourceTest.kt new file mode 100644 index 0000000000..234b3d4593 --- /dev/null +++ b/src/jvmTest/kotlin/baaahs/plugin/beatlink/BeatLinkBeatSourceTest.kt @@ -0,0 +1,78 @@ +package baaahs.plugin.beatlink + +import baaahs.FakeClock +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import io.mockk.every +import io.mockk.mockk +import org.deepsymmetry.beatlink.Beat +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import kotlin.test.assertNotEquals + +class BeatLinkBeatSourceTest { + private lateinit var fakeClock: FakeClock + private lateinit var beatSource: BeatLinkBeatSource + + @Before + fun setUp() { + fakeClock = FakeClock(10.0) + beatSource = BeatLinkBeatSource(fakeClock) + } + + @Test + fun beforeAnyBeatsReceived_currentBeatIsZero() { + expect(beatSource.currentBeat).toBe(BeatData(0.0, 0, confidence = 0f)) + } + + @Test + fun whenNewBeatIsReceived_beatDataIsUpdated() { + beatSource.channelsOnAir(hashSetOf(1)) + beatSource.newBeat(mockBeat(123.4, 1)) + expect(beatSource.currentBeat).toBe(BeatData(10.0, 486, confidence = 1f)) + } + + @Test + fun whenMidBarNewBeatIsReceived_beatDataIsUpdated() { + beatSource.channelsOnAir(hashSetOf(1)) + beatSource.newBeat(mockBeat(123.4, 2)) + expect(beatSource.currentBeat).toBe(BeatData(10.0 - 60 / 123.4, 486, confidence = 1f)) + } + + @Test + fun whenMidBarNewBeatIsReceivedWithSmallMeasureStartVariance_beatDataIsNotUpdated() { + beatSource.channelsOnAir(hashSetOf(1)) + beatSource.newBeat(mockBeat(123.4, 1)) + + fakeClock.time += 0.486 + beatSource.newBeat(mockBeat(123.4, 2)) + expect(beatSource.currentBeat).toBe(BeatData(10.0, 486, confidence = 1f)) + + fakeClock.time += 0.490 + beatSource.newBeat(mockBeat(123.4, 3)) + Assert.assertEquals(10.003, beatSource.currentBeat.measureStartTime, 0.0009) + Assert.assertEquals(486, beatSource.currentBeat.beatIntervalMs) + } + + @Test + fun whenMidBarNewBeatIsReceivedWithSmallMeasureStartVarianceAndDifferentTempo_beatDataIsUpdated() { + beatSource.channelsOnAir(hashSetOf(1)) + beatSource.newBeat(mockBeat(123.4, 1)) + + fakeClock.time += 0.486 + beatSource.newBeat(mockBeat(123.5, 2)) + assertNotEquals(10.0, beatSource.currentBeat.measureStartTime) + Assert.assertEquals(10.0, beatSource.currentBeat.measureStartTime, 0.0009) + Assert.assertEquals(485, beatSource.currentBeat.beatIntervalMs) + } + + private fun mockBeat(_effectiveTempo: Double, _beatWithinBar: Int, _deviceNumber: Int = 1): Beat { + return mockk { + every { effectiveTempo } returns _effectiveTempo + every { beatWithinBar } returns _beatWithinBar + every { deviceNumber } returns _deviceNumber + every { deviceName } returns "Fake CDJ" + } + } +} \ No newline at end of file diff --git a/src/jvmTest/kotlin/baaahs/show/mutable/EditingShaderSpec.kt b/src/jvmTest/kotlin/baaahs/show/mutable/EditingShaderSpec.kt new file mode 100644 index 0000000000..88f3a44ad3 --- /dev/null +++ b/src/jvmTest/kotlin/baaahs/show/mutable/EditingShaderSpec.kt @@ -0,0 +1,434 @@ +package baaahs.show.mutable + +import baaahs.* +import baaahs.app.ui.editor.LinkOption +import baaahs.app.ui.editor.PortLinkOption +import baaahs.gl.* +import baaahs.gl.preview.PreviewShaderBuilder +import baaahs.gl.preview.ShaderBuilder +import baaahs.gl.render.PreviewRenderEngine +import baaahs.glsl.Shaders +import baaahs.plugin.CorePlugin +import baaahs.plugin.beatlink.BeatLinkPlugin +import baaahs.show.Shader +import baaahs.show.mutable.EditingShader.State +import baaahs.shows.FakeGlContext +import baaahs.ui.Observer +import baaahs.ui.addObserver +import ch.tutteli.atrium.api.fluent.en_GB.containsExactly +import ch.tutteli.atrium.api.fluent.en_GB.isEmpty +import ch.tutteli.atrium.api.fluent.en_GB.notToBeNull +import ch.tutteli.atrium.api.fluent.en_GB.toBe +import ch.tutteli.atrium.api.verbs.expect +import com.danielgergely.kgl.GL_FRAGMENT_SHADER +import ext.TestCoroutineContext +import io.mockk.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.InternalCoroutinesApi +import org.spekframework.spek2.Spek +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.set + +// Currently in jvmTest so we can use mockk. +// TODO: move back to commonTest when mockk supports multiplatform. +@Suppress("unused") +@InternalCoroutinesApi +object EditingShaderSpec : Spek({ + describe { + val plugins by value { testPlugins() + BeatLinkPlugin.Builder(StubBeatSource()) } + val toolchain by value { RootToolchain(plugins) } + val beatLinkDataSource by value { + (plugins.find(BeatLinkPlugin.id) as BeatLinkPlugin).beatLinkDataSource + } + val scaleUniform by value { "uniform float theScale;" } + val paintShader by value { + Shader( + "Paint", """ + uniform float time; + void main(void) { + gl_FragColor = vec4(gl_FragCoord.x, gl_FragCoord.y, mod(time, 1.), 1.); + } + """.trimIndent() + ) + } + val filterShader by value { + Shader( + "Filter", """ + $scaleUniform + uniform float time; + // @return color + // @param inColor color + vec4 main(vec4 inColor) { + return inColor * theScale + time * 0.; + } + """.trimIndent() + ) + } + val shaderInEdit by value { filterShader } + val otherShaderInPatch by value { paintShader } + val otherShaderInShow by value { Shaders.red } + + val mutableShaderInstance by value { MutableShaderInstance(MutableShader(shaderInEdit)) } + val mutablePatch by value { MutablePatch { addShaderInstance(mutableShaderInstance) } } + val mutableShow by value { MutableShow("show") { addPatch(mutablePatch) } } + val observerSlot by value { slot() } + val mockShaderBuilder by value { mockk() } + val getShaderBuilder by value<(Shader) -> ShaderBuilder> { { mockShaderBuilder } } + val button by value { mutableShow.addButton("panel", "button") {} } + val otherPatchInShow by value { MutablePatch { addShaderInstance(otherShaderInShow) } } + + beforeEachTest { + otherShaderInPatch?.let { mutablePatch.addShaderInstance(it) } + button.addPatch(otherPatchInShow) + every { mockShaderBuilder.addObserver(capture(observerSlot)) } answers { observerSlot.captured } + every { mockShaderBuilder.startBuilding() } just runs + every { mockShaderBuilder.gadgets } returns emptyList() + every { mockShaderBuilder.openShader } returns toolchain.openShader(shaderInEdit) + } + val notifiedStates by value { arrayListOf() } + + val beforeBuildingShader by value { { } } + val editingShader by value { + beforeBuildingShader() + EditingShader(mutableShow, mutablePatch, mutableShaderInstance, toolchain, getShaderBuilder) + .also { it.addObserver { notifiedStates.add(it.state) } } + } + beforeEachTest { + editingShader.let {} // Make sure it's warmed up. + } + + context("at initialization") { + it("is in Building state") { + expect(editingShader.state).toBe(State.Building) + } + + it("starts building the shader") { + verify { mockShaderBuilder.startBuilding() } + } + + it("has no gadgets") { + expect(editingShader.gadgets).isEmpty() + } + + it("should not have notified observers yet") { + expect(notifiedStates).isEmpty() + } + + it("has no incoming links") { + expectEmptyMap { mutableShaderInstance.incomingLinks } + } + + context("if shader builder notifies us") { + val builderState by value { ShaderBuilder.State.Success } + + beforeEachTest { + every { mockShaderBuilder.state } returns builderState + observerSlot.captured.notifyChanged() + } + + context("of a successful build") { + it("should notify our observers") { + expect(notifiedStates).containsExactly(State.Success) + } + } + + context("that it's still building") { + override(builderState) { ShaderBuilder.State.Compiling } + it("should not notify our observers") { + expect(notifiedStates).isEmpty() + } + } + + context("of a failure to build") { + override(builderState) { ShaderBuilder.State.Errors } + it("should not notify our observers again") { + expect(notifiedStates).containsExactly(State.Errors) + } + + it("should still return ShaderInstanceOptions") { + expect(editingShader.getShaderInstanceOptions()).notToBeNull() + } + } + } + } + + context("when a shader has successfully compiled") { + beforeEachTest { + every { mockShaderBuilder.state } returns ShaderBuilder.State.Success + observerSlot.captured.notifyChanged() + } + + context("when the shader instance had no previous incoming links") { + it("should set some reasonable defaults") { + expect(mutableShaderInstance.incomingLinks.mapValues { (_, port) -> port.title }) + .toBe(mapOf( + "inColor" to "Main Channel", + "theScale" to "The Scale Slider", + "time" to "Time" + )) + } + + it("should create an appropriate data source") { + expect(mutableShaderInstance.incomingLinks["theScale"]) + .toBe(MutableDataSourcePort(CorePlugin.SliderDataSource("The Scale", 1f, 0f, 1f))) + } + + context("when hints are provided") { + override(scaleUniform) { "uniform float theScale; // @@Slider min=.25 max=4 default=1" } + + it("should create an appropriate data source") { + expect(mutableShaderInstance.incomingLinks["theScale"]) + .toBe(MutableDataSourcePort(CorePlugin.SliderDataSource("The Scale", 1f, .25f, 4f))) + } + } + + context("when a plugin reference is provided") { + override(scaleUniform) { "uniform float theScale; // @@baaahs.BeatLink:BeatLink" } + + it("should create an appropriate data source") { + expect(mutableShaderInstance.incomingLinks["theScale"]) + .toBe(MutableDataSourcePort(beatLinkDataSource)) + } + } + + context("when a content type is provided") { + override(scaleUniform) { "uniform float theScale; // @type beat-link" } + + it("should create an appropriate data source") { + expect(mutableShaderInstance.incomingLinks["theScale"]) + .toBe(MutableDataSourcePort(beatLinkDataSource)) + } + } + } + + context("when the shader instance had a previous incoming link") { + override(beforeBuildingShader) { + { + mutableShaderInstance.incomingLinks["theScale"] = + MutableDataSourcePort(CorePlugin.SliderDataSource("Custom slider", 1f, 0f, 1f)) + } + } + + it("shouldn't change it") { + expect(mutableShaderInstance.incomingLinks["theScale"]!!.title) + .toBe("Custom slider Slider") + } + + it("should be listed in link options") { + expect(editingShader.linkOptionsFor("theScale").stringify()).toBe(""" + Channel: + - Main Channel + Data Source: + - BeatLink + - Custom slider Slider + * The Scale Slider + - Time + """.trimIndent()) + } + } + + context("when a link has been selected by a human") { + beforeEachTest { + mutableShaderInstance.incomingLinks["theScale"] = + MutableDataSourcePort(CorePlugin.SliderDataSource("custom slider", 1f, 0f, 1f)) + + editingShader.changeInputPortLink( + "theScale", + PortLinkOption( + MutableDataSourcePort(CorePlugin.SliderDataSource("custom slider", 1f, 0f, 1f)) + ) + ) + + // Rebuild. + observerSlot.captured.notifyChanged() + } + + it("shouldn't modify it") { + expect(mutableShaderInstance.incomingLinks["theScale"]!!.title) + .toBe("custom slider Slider") + } + + // TODO: ... unless its type doesn't make any sense now. + } + + context("incoming link suggestions") { + it("suggests link options for each input port") { + expect(editingShader.openShader!!.inputPorts.map { it.id }.toSet()) + .toBe(setOf("theScale", "time", "inColor")) + } + + it("suggests reasonable link options for scale") { + expect(editingShader.linkOptionsFor("theScale").stringify()) + .toBe(""" + Channel: + - Main Channel + Data Source: + - BeatLink + * The Scale Slider + - Time + """.trimIndent()) + } + + it("suggests reasonable link options for time") { + expect(editingShader.linkOptionsFor("time").stringify()) + .toBe(""" + Channel: + - Main Channel + Data Source: + - BeatLink + * Time + - Time Slider + """.trimIndent()) + } + + it("suggests reasonable link options for input color") { + // Should never include ourself. + expect(editingShader.linkOptionsFor("inColor").stringify()) + .toBe(""" + Channel: + * Main Channel + Data Source: + - In Color ColorPicker + """.trimIndent()) + } + + context("when another patch has shader on a different shader channel") { + override(beforeBuildingShader) { + { otherPatchInShow.mutableShaderInstances.only().shaderChannel = MutableShaderChannel("other") } + } + + context("and its result type matches this input's type") { + it("should include that shader channel as an option") { + // Should never include ourself. + expect(editingShader.linkOptionsFor("inColor").stringify()) + .toBe(""" + Channel: + * Main Channel + - Other Channel + Data Source: + - In Color ColorPicker + """.trimIndent()) + } + } + + context("and its result type doesn't match this input's type") { + override(otherShaderInShow) { Shaders.flipY } // distortion + + it("shouldn't include that shader channel as an option") { + expect(editingShader.linkOptionsFor("inColor").stringify()) + .toBe(""" + Channel: + * Main Channel + Data Source: + - In Color ColorPicker + """.trimIndent()) + } + } + } + } + } + + context("preview") { + val context by value { TestCoroutineContext("test") } + override(shaderInEdit) { paintShader } + override(otherShaderInPatch) { null } + override(getShaderBuilder) { + { shader: Shader -> PreviewShaderBuilder(shader, toolchain, TestModel, CoroutineScope(context)) } + } + val gl by value { FakeGlContext() } + val renderEngine by value { PreviewRenderEngine(gl, 1, 1) } + + beforeEachTest { + // Run through the shader building steps. + expect(editingShader.shaderBuilder.state).toBe(ShaderBuilder.State.Analyzing) + expect(editingShader.state).toBe(State.Building) + context.runAll() + + expect(editingShader.shaderBuilder.state).toBe(ShaderBuilder.State.Linked) + expect(editingShader.state).toBe(State.Building) + editingShader.shaderBuilder.startCompile(renderEngine) + + expect(editingShader.state).toBe(State.Building) + context.runAll() + expect(editingShader.state).toBe(State.Success) + } + + it("generates valid GLSL") { + val fakeProgram = gl.programs[0] + val fragShader = fakeProgram.shaders[GL_FRAGMENT_SHADER]?.src + kexpect(fragShader).toBe(""" + #version 1234 + + #ifdef GL_ES + precision mediump float; + #endif + + // SparkleMotion-generated GLSL + + layout(location = 0) out vec4 sm_result; + + // Data source: PreviewResolution + uniform vec2 in_previewResolution; + + // Data source: Time + uniform float in_time; + + // Shader: Screen Coords; namespace: p0 + // Screen Coords + + vec2 p0_screenCoordsi_result = vec2(0.); + + #line 4 + vec2 p0_screenCoords_main( + vec4 fragCoords + ) { + return fragCoords.xy / in_previewResolution; + } + + // Shader: Paint; namespace: p1 + // Paint + + vec4 p1_paint_gl_FragColor = vec4(0., 0., 0., 1.); + + #line 2 + void p1_paint_main(void) { + p1_paint_gl_FragColor = vec4(p0_screenCoordsi_result.x, p0_screenCoordsi_result.y, mod(in_time, 1.), 1.); + } + + + #line 10001 + void main() { + // Invoke Screen Coords + p0_screenCoordsi_result = p0_screenCoords_main(gl_FragCoord); + + // Invoke Paint + p1_paint_main(); + + sm_result = p1_paint_gl_FragColor; + } + + + """.trimIndent()) + } + } + } +}) + +fun List?.stringify(): String { + if (this == null) return "no options!" + + val lines = arrayListOf() + var groupName: String? = null + sortedWith( + compareBy { it.groupName }.thenBy { it.title } + ).forEach { linkOption -> + if (linkOption.groupName != groupName) { + groupName = linkOption.groupName + groupName?.let { lines.add(it) } + } + val selected = if (linkOption == first()) "*" else "-" + lines.add("$selected ${linkOption.title}") + } + return lines.joinToString("\n") +} \ No newline at end of file diff --git a/src/jvmTest/kotlin/mockk.kt b/src/jvmTest/kotlin/mockk.kt new file mode 100644 index 0000000000..6a46d999f3 --- /dev/null +++ b/src/jvmTest/kotlin/mockk.kt @@ -0,0 +1,12 @@ +import kotlin.reflect.KClass + +actual inline fun mockk( + name: String?, + relaxed: Boolean, + vararg moreInterfaces: KClass<*>, + relaxUnitFun: Boolean, + crossinline block: T.() -> Unit +): T = + io.mockk.mockk( + name, relaxed, *moreInterfaces, relaxUnitFun = relaxUnitFun, block = block + ) diff --git a/src/jvmTest/kotlin/sample/SampleTestsJVM.kt b/src/jvmTest/kotlin/sample/SampleTestsJVM.kt deleted file mode 100644 index 65ff5457af..0000000000 --- a/src/jvmTest/kotlin/sample/SampleTestsJVM.kt +++ /dev/null @@ -1,11 +0,0 @@ -package sample - -import kotlin.test.Test -import kotlin.test.assertTrue - -class SampleTestsJVM { - @Test - fun testHello() { - assertTrue("JVM" in hello()) - } -} \ No newline at end of file diff --git a/src/linuxMain/kotlin/sample/SampleLinux.kt b/src/linuxMain/kotlin/sample/SampleLinux.kt deleted file mode 100644 index 3802955c64..0000000000 --- a/src/linuxMain/kotlin/sample/SampleLinux.kt +++ /dev/null @@ -1,9 +0,0 @@ -package sample - -actual class Sample { - actual fun checkMe() = 7 -} - -actual object Platform { - actual val name: String = "Native" -} \ No newline at end of file diff --git a/webpack.config.d/output.js b/webpack.config.d/output.js new file mode 100644 index 0000000000..a8d4738fe0 --- /dev/null +++ b/webpack.config.d/output.js @@ -0,0 +1,101 @@ +const path = require('path'); + +config = config || {}; + +// cwd is build/js/packages/sparklemotion +config.resolve.modules.push(path.resolve(__dirname, "../../node_modules")); + +config.module.rules.push( + { + test: /\.(js|jsx)$/, + include: /src\/jsMain\/js/, + use: { + loader: 'babel-loader', + options: { + // includePaths: ['build/js/node_modules'], + presets: [ + "@babel/preset-env", + "@babel/preset-react", + ], + plugins: [ + // "react-hot-loader/babel", + "@babel/plugin-proposal-object-rest-spread", + "@babel/plugin-proposal-class-properties", + ] + } + } + }, + { + test: /\.(css|sass|scss)$/, + include: /src\/jsMain\/js/, + use: [ + 'style-loader', + { + loader: 'css-loader', + options: { + sourceMap: true, + modules: true, + localIdentName: '[local]___[hash:base64:5]', + }, + }, + 'sass-loader', + ], + } +); + +config.resolve.extensions = ['*', '.js', '.jsx']; +config.resolve.alias = { + js: path.resolve(__dirname, "../../../../src/jsMain/js/"), +}; + +if (config.devServer) { + config.devServer.hot = true; + config.devServer.watchOptions = { + aggregateTimeout: 2000, + poll: 1000 + }; + + // see https://discuss.kotlinlang.org/t/kotlin-js-react-unstable-building/15582/6 + config.entry.main = config.entry.main.map( + s => s.replace(`/kotlin-out/`, "/"), + ); + + config.optimization = { + splitChunks: { + chunks: 'all', + name: true, + + cacheGroups: { + commons: { + test: /[\\/]node_modules[\\/]|[\\/]packages_imported[\\/]/, + name: 'vendors', + chunks: 'all' + }, + default: { + minChunks: 2, + priority: -20, + reuseExistingChunk: true + } + } + } + }; +} else { + // Otherwise we get "unknown module and require" from production build. + config.optimization = { + sideEffects: false, + splitChunks: { + chunks: function(chunk) { + return false; + } + } + }; +} + +// config.devtool = 'eval'; + +// config.plugins = [ +// new webpack.SourceMapDevToolPlugin({ +// test: /\.(js|jsx|css|sass|scss)$/, +// exclude: /node_modules/, +// }), +// ];